Dominar los diferentes tipos de datos es vital para poder manejarlos. A continuación te explicamos cada uno de ellos y cómo utilizarlos.
Tipos de datos básicos Los tipos de datos básicos son aquellos que representan un solo valor, sin estructuras internas. Estos tipos son:
- num: representa valores numéricos, ya sea enteros o de punto flotante. Dart admite tres subtipos de
num
:int
,double
ynum
en sí mismo. - String: representa cadenas de texto.
- bool: representa valores booleanos, es decir,
true
ofalse
.
Tipos de datos compuestos Los tipos de datos compuestos son aquellos que representan una estructura de datos más compleja, que puede contener múltiples valores y/o tener una estructura interna. Estos tipos son:
- List: representa una lista ordenada de valores. Los valores pueden ser de cualquier tipo.
- Map: representa una colección de pares clave-valor, donde las claves y los valores pueden ser de cualquier tipo.
- Set: representa una colección de valores únicos, donde los valores pueden ser de cualquier tipo.
Variables En programación, las variables se utilizan para almacenar y manipular valores en la memoria. En Dart, se pueden declarar variables de dos formas:
- Variables tipadas: se declaran especificando su tipo de datos. Ejemplo:
int edad = 25;
- Variables dinámicas: se declaran sin especificar un tipo de datos, lo que permite que cambie el tipo de datos que se almacena en la variable en tiempo de ejecución. Ejemplo:
dynamic dato = 10;
Además, se puede declarar una variable constante, que no puede cambiar su valor después de ser asignado:
- Variables constantes: se declaran usando la palabra clave
final
oconst
. Ejemplo:final PI = 3.14;
Es importante mencionar que las variables en Dart son sensibles a mayúsculas y minúsculas, lo que significa que edad
y Edad
son variables diferentes.
En resumen, los tipos de datos y variables son elementos fundamentales en la programación en Dart. Los tipos de datos representan los distintos tipos de valores que se pueden manipular, mientras que las variables se utilizan para almacenar y manipular esos valores en la memoria.
num: El tipo de datos num
representa valores numéricos, ya sea enteros o de punto flotante. Dart admite tres subtipos de num
: int
, double
y num
en sí mismo.
int
: representa valores enteros, como 1
, 2
, 100
, -5
, etc.
int edad = 25;
int saldo = -100;
double
: representa valores de punto flotante, como 3.14
, 2.5
, 1.0
, -0.5
, etc.
double pi = 3.14159;
double temperatura = 25.5;
num
: representa valores numéricos en general, ya sea enteros o de punto flotante. Este tipo se usa a menudo cuando se quiere manejar valores numéricos sin importar su tipo específico.
numero = 3.14;
num entero = 100;
String: El tipo de datos String
representa cadenas de texto. Las cadenas de texto se encierran entre comillas simples o dobles. Ejemplo:
String nombre = 'Juan';
String mensaje = "Hola, ¿cómo estás?";
bool: El tipo de datos bool
representa valores booleanos, es decir, true
o false
. Ejemplo:
bool activo = true;
bool encontrado = false;
List: El tipo de datos List
representa una lista ordenada de valores. Los valores pueden ser de cualquier tipo. Los elementos de una lista se pueden acceder mediante un índice, empezando por el índice cero. Ejemplo:
List<String> nombres = ['Juan', 'Pedro', 'María'];
List<int> numeros = [1, 2, 3, 4, 5];
List<dynamic> elementos = [1, 'hola', true];
List<int> vacia = []; //Una lista vacía
Map: El tipo de datos Map
representa una colección de pares clave-valor, donde las claves y los valores pueden ser de cualquier tipo. Los elementos de un mapa se pueden acceder mediante su clave. Ejemplo:
Map<String, int> edades = {'Juan': 25, 'Pedro': 30, 'María': 28};
Map<dynamic, dynamic> informacion = {'nombre': 'Juan', 'edad': 25, 'activo': true};
Set: El tipo de datos Set
representa una colección de valores únicos, donde los valores pueden ser de cualquier tipo. Ejemplo:
Set<String> colores = {'rojo', 'verde', 'azul'};
Set<int> numeros = {1, 2, 3, 4, 5};
En Dart, el tipo de datos dynamic se utiliza para indicar que el tipo de una variable puede cambiar en tiempo de ejecución. Es decir, una variable de tipo dynamic puede contener cualquier tipo de valor en cualquier momento, sin necesidad de especificar previamente el tipo de datos.
Un ejemplo de uso de dynamic podría ser el siguiente:
dynamic valor;
// En algún lugar del código
valor = 10;
print(valor); // Imprime 10
valor = "Hola, mundo!";
print(valor); // Imprime "Hola, mundo!"
valor = true;
print(valor); // Imprime true
En este ejemplo, la variable «valor» se declara como dynamic, lo que significa que puede contener cualquier tipo de valor. En el código se asignan valores numéricos, cadenas y booleanos a «valor», y la salida de la función «print» refleja el tipo de valor actual de la variable.
Es importante tener en cuenta que el uso excesivo de dynamic puede hacer que el código sea más difícil de entender y depurar, ya que el tipo de datos de la variable no se conoce de antemano. Por lo tanto, se recomienda utilizar dynamic con precaución y solo cuando sea necesario.
Operadores aritméticos:
+
: suma dos valores.
int a = 5;
int b = 3;
int resultado = a + b; // resultado es 8
-
: resta dos valores.
int a = 5;
int b = 3;
int resultado = a - b; // resultado es 2
*
: multiplica dos valores.
int a = 5;
int b = 3;
int resultado = a * b; // resultado es 15
/
: divide dos valores y devuelve el resultado como un número de punto flotante.
double a = 5;
double b = 3;
double resultado = a / b; // resultado es 1.6666666666666667
%
: devuelve el resto de la división entre dos valores.
int a = 5;
int b = 3;
int resultado = a % b; // resultado es 2
++
: incrementa en 1 el valor de una variable.
int a = 5;
a++; // ahora a es 6
--
: decrementa en 1 el valor de una variable.
int a = 5;
a--; // ahora a es 4
En Dart, los operadores — y ++ son operadores de incremento y decremento, que se utilizan para aumentar o disminuir el valor de una variable en una unidad. Ambos operadores se aplican a variables numéricas y funcionan de manera similar, aunque tienen algunas diferencias.
El operador ++ aumenta el valor de una variable en 1, mientras que el operador — disminuye el valor de una variable en 1. Por ejemplo:
int a = 5;
a++; // Incrementa a en 1, a ahora tiene el valor de 6
a--; // Decrementa a en 1, a ahora tiene el valor de 5 de nuevo
También se pueden usar los operadores ++ y — de forma prefija y sufija, lo que significa que se pueden colocar antes o después de la variable. La diferencia es que en la forma prefija, el valor de la variable se incrementa o decrementa antes de que se evalúe la expresión, mientras que en la forma sufija, el valor de la variable se incrementa o decrementa después de que se evalúa la expresión. Por ejemplo:
int b = 10;
int c = ++b; // c es igual a 11, porque primero se incrementa b y luego se asigna a c
int d = b--; // d es igual a 11, porque primero se asigna b a d y luego se decrementa b
Es importante tener en cuenta que los operadores ++ y — también se pueden usar con variables que no son numéricas, como cadenas. En este caso, el operador ++ concatena una cadena vacía al final de la cadena existente, mientras que el operador — no tiene ningún efecto en la cadena. Por ejemplo:
String cadena = "Hola";
cadena++; // La cadena ahora es "Hola "
cadena--; // No hay ningún efecto en la cadena
En resumen, los operadores ++ y — son útiles para incrementar o decrementar el valor de una variable numérica en una unidad, y también se pueden usar con cadenas para concatenar texto. Se pueden usar de forma prefija o sufija para producir diferentes resultados.
Operadores lógicos:
&&
: devuelve true
si ambas expresiones son verdaderas.
bool a = true;
bool b = false;
bool resultado = a && b; // resultado es false
||
: devuelve true
si al menos una de las expresiones es verdadera.
bool a = true;
bool b = false;
bool resultado = a || b; // resultado es true
!
: niega el valor de una expresión, es decir, si la expresión es verdadera, devuelve false
, y si la expresión es falsa, devuelve true
.
bool a = true;
bool resultado = !a; // resultado es false
Operadores de asignación:
=
: asigna un valor a una variable.
int a = 5;
+=
: suma un valor a una variable y asigna el resultado a la misma variable.
int a = 5;
a += 3; // ahora a es 8
-=
: resta un valor a una variable y asigna el resultado a la misma variable.
int a = 5;
a -= 3; // ahora a es 2
*=
: multiplica una variable por un valor y asigna el resultado a la misma variable.
int a = 5;
a *= 3; // ahora a es 15
/=
: divide una variable por un valor y asigna el resultado a la misma variable.
double a = 5;
a /= 3; // ahora a es
%=
: calcula el resto de la división entre una variable y un valor y asigna el resultado a la misma variable.
int a = 5;
a %= 3; // ahora a es 2
??=
: asigna un valor a una variable si la variable es nula (null).
int? a = null;
a ??= 5; // ahora a es 5
~/=
: realiza una división entera entre una variable y un valor y asigna el resultado a la misma variable.
int a = 5;
a ~/= 3; // ahora a es 1
<<=
: realiza un desplazamiento de bits hacia la izquierda en una variable y asigna el resultado a la misma variable.
int a = 5;
a <<= 2; // ahora a es 20
>>=
: realiza un desplazamiento de bits hacia la derecha en una variable y asigna el resultado a la misma variable.
int a = 5;
a >>= 2; // ahora a es 1
Espero que esto te haya ayudado a comprender mejor los operadores aritméticos, lógicos y de asignación en Dart.