Está en la página 1de 92

Curso de

Dart desde
Cero
Melvin Salas
Tu profesor: Melvin Salas

● Software Engineer.

● Profesor de Introducción a las Tecnologías de


Información y Programación Orientada a
Objetos.

@melvinsalas
/melvinsalasdev
¿Qué vas a aprender?

● ¿Qué es y cómo funciona Dart?


● Bases de programación orientada a objetos.
● Cómo crear aplicaciones con flujos en Dart.
● Colecciones en Dart.
Introducción
a Dart
Historia de Dart

● Desarrollado por Google


Presentado en 2011 como una alternativa más
moderna a Javascript.
● Influencia
Toma las bases modernas de lenguajes como
Java, C#, Ruby y hasta TypeScript.
¿Cómo funciona Dart?

● Dart VM
Es la máquina virtual donde se ejecuta el
código necesario para el desarrollo.
● Multiplataforma
Web gracias al convertidor dart2js.
Nativo gracias a Flutter y dart2native.
¿Cómo funciona Dart?

● Just-in-Time 🔥
Agregar recursos de desarrollo que facilitan la
ejecución y debugueo (hot reload).
● Ahead-of-Time 🚄
Optimiza las aplicaciones y remueve recursos
innecesarios, creando compilaciones más
rápidas.
¿Por qué usar Dart?

● Respaldo
Es de código abierto y Google está invirtiendo
muchos recursos en su uso.
● Comunidad
Crece día a día gracias a Flutter y su curva de
aprendizaje es muy corta.
Dónde encontrar
más información
● Web oficial
La documentación, ejemplos y actualizaciones
están disponible en www.dart.dev.
● Paquetes
El repositorio oficial de paquetes es
www.pub.dev para aplicaciones Dart y Flutter.
¡Haz el quiz de
este módulo!
Introducción
a DartPad
¿Qué es DartPad?

● DartPad
Es una herramienta que permite programar en
Dart desde el navegador web.
● Ayuda
Tiene opciones que ayudan durante el
aprendizaje y permiten conocer el lenguaje.
Las bases de
programación en Dart
Variables
¿Qué es una variable?

● Concepto
El espacio de memoria
donde se puede guardar
un valor.
● Identificador
Es el nombre simbólico
que puede tener cada
variable y debe ser una
sola palabra.
¿Qué es un tipo de dato?

● Concepto
Son las restricciones que puede tener un valor,
para definir su dominio y comportamiento.
● Modernidad
Algunos lenguajes actuales infieren o deducen
el tipo de dato si el programador no lo define.
Cómo se almacena un valor

● Proceso
Sucede cuando un valor de un tipo
determinado es introducido en la variable.
● Ejemplo
Cuando en matemáticas se utilizan variables
para almacenar un número en específico.
tipo variable = valor
Tipos de
datos básicos
Booleanos

● Concepto
El tipo más primitivo, puede almacenar valores
de verdadero o falso.
● Características
Tipo: bool
Cuando es verdadero se coloca true y cuando
es falso se coloca false.
Números

● Concepto
Se utiliza para almacenar solo valores
numéricos, con o sin decimales.
● Características
Tipo: int o double
El double ocupa más memoria, pero puede
almacenar los dos tipos.
Strings

● Concepto
Permite almacenar texto, todo tipo de
contenido alfanumérico.
● Características
Tipo: String
Se colocar entre "comillas dobles".
Colecciones

● Concepto
Permite almacenar muchos valores de un
mismo tipo a la vez en una misma variable.
● Características
tipo: List
Se coloca el tipo entre <> y los valores entre []
Tipos de
datos avanzados
Uso de var

● Inferencia
Son cambiados en tiempo de compilación por
la computadora.
● Comodín
Es una forma de usar un comodín que permite
despreocuparse por la declaración.
final vs. const

● Inmutabilidad
Son variables de solo lectura, una vez que se le
asigna un valor, no puede ser cambiado.
● Diferencias
const debe ser conocido en tiempo de
compilación, y final no.
Tipo dynamic y su uso

● Inferencia
Es igual que el var, Dart infiere el tipo de dato.
● Mutabilidad
Puede cambiar su tipo en cualquier momento,
debe usarse solo en casos específico, porque
es mucha responsabilidad.
Diferencias

Puede cambiar El tipo El valor


final/const ❌ ❌
var ❌ ✅
dynamic ✅ ✅
Manipulación
de variables
Declaración de variables

● Se declara
Es el lugar donde la variable adquiere el
nombre que la identifica y el tipo.
● Ejemplo
String nombre
int edad
Inicialización de variables

● Inicio
Es cuando la variable adquiere su valor inicial.
Puede estar junto a la declaración.
● Ejemplo
String nombre = "Amanda";
int edad;
edad = 12;
Asignación de variables

● Reemplazo
Es cuando se reemplaza el valor anterior de
una variable por uno nuevo.
● Ejemplo
String nombre = "Amanda";
nombre = "Beto";
int edad = 12;
edad = 23;
Incrementar o decrementar

● Operador
Los números pueden ser incrementados de 1
en 1 con unos operadores ++ o
decrementados con --
● Ejemplo
int x = 5;
x++;
++x;
String con Dart
Cómo comentar el código

Los comentarios son importantes porque nos


permiten escribir descripciones en el código.

// para las líneas


/* para los bloques */
Concatenación e
Interpolación
● Definición
Es la forma de unir dos String para formar uno
más grande.
● Ejemplo
Concatenación se usa el símbolo +
Interpolación se usa el símbolo $
Caracteres especiales

● Definición
Es cuando en un String es necesario poner un
símbolo que rompe la forma del código.
● Solución
Colocar un símbolo \ antes de ese carácter
especial.
Multilínea

● Definición
Permite escribir varias líneas en la consola con
el caracter especial n.
● Ejemplo
Se usa dentro de un String con \n
Funciones

● Definición
Es una acción que aplicamos sobre una
variable y nos da un resultado.
● Ejemplos
toUpperCase: Cambiar todo por mayúsculas.
toLowerCase: Cambiar todo por minúsculas.
replaceAll: Reemplaza palabras enteras.
Conversión
de tipos
String to number

● Caso
Cuando tenemos un número como texto y
necesitamos aplicar operaciones sobre él.
● Código
Se utiliza el método int.parse()
Se utiliza el método double.parse()
number to String

● Caso
Cuando un número debe ser convertido a un
String.
● Código
Casi todas las variables tiene un método
toString() que convierte en texto el valor.
Casos especiales

● Caso
Cuando las conversiones no son posible se
determina un error en tiempo de ejecución.
● Ejemplo
La aplicación puede terminar abruptamente
con un Script error
Ejercicio
Flujo de Datos
Operaciones
Aritméticas

● ¿Qué son?
Son expresiones matemáticas que requieren 2
números y retornan un valor numérico.
● Expresiones
+, -, -expr, *, /, ~/ y %
Asignación

● Qué son
Son operaciones aritméticas abreviadas.
● Ejemplo
+=, -=, *=, /=, ~/= y =%
Relacionales

● Qué son
Son expresiones de comparación que
requieren 2 números que retorna un resultado
booleano.
● Ejemplo
==, =!, =>, >, < y <=
Lógicas

● Qué son
Son expresiones lógicas que requieren 1 o 2
booleanos y retorna un resultado booleano.
● Ejemplo
||, &&, ! y ?:
valor1 valor2 && ||
true true true true
true false false true
false true false true
false false false false
Condicionales
If

Es el primer condicionante lógico, es el más


básico, se cumple cuando la expresión es
verdadera.

if(expresion) {
// código del if
}
Else

Es el complemento del if y se cumple cuando la


expresión dentro del if es falso.

if(expresion) {
//
} else {
// código del else
}
Switch

Es un condicional que acepta múltiples


alternativas, se cumple cuando alguna expresión
es verdadera mediante casos.

switch(expresion) {
case: break;
case: break;
default:
}
Ciclos
While

Es el ciclo más básico, ejecuta el código interno


mientras la expresión sea verdadera.

while(expr) {
// código while
}
Do While

Es similar al while, sin embargo la expresión es


evaluada en la segunda iteración.

do{
// código do while
}while(expr)
For

Permite crear un ciclo de repetición en base a un


índice que puede ser incremental.

for(int i = 0; i < x; i++){


// código for
}
Enumeraciones
Enumeraciones

Son un tipo de dato más complejo, definido por el


programador que permite dar contexto al código.

enum Nombre {
valor1, valor2, valor3
}
Ejercicio
Colecciones
Introducción a
las colecciones
Qué es una colección

Es una estructura, que representa un grupo de


valores mediante una única variable.

Por lo general solo contiene un único tipo de dato


y cada valor puede ser localizado por un índice.
Beneficios de usar
una colección
● Esfuerzo
Reduce los esfuerzos de programación.
● Manipulación
Permiten manipular las estructuras.
● Reutilización
Fomenta la reutilización de software.
Tipos de Colecciones
Colección
de tipo Lista
Qué es una lista

● Definición
Es un tipo de dato que consiste en una
secuencia ordenada de valores de un tipo en
específico y de tamaño variable.
● Creación
List <int> = [1, 2, 3]
List <String> = []
Posiciones en la Lista

“Colombia” “Brasil” “México”


0 1 2
Propiedades de List

● first: Devuelve el primer elemento de la lista.


● isEmpty: Devuelve true si la colección no tiene
elementos.
● isNotEmpty: Devuelve true si la colección tiene
al menos un elemento.
Propiedades de List

● length: Devuelve el tamaño de la lista.


● last: Devuelve el último elemento de la lista.
● reversed: Devuelve un objeto iterable que
contiene los valores de la lista en orden
inverso.
Funciones de List

● add: Agrega un nuevo elemento a la lista.


● insert: Agrega un elemento en una posición
específica.
● removeAt: Elimina un elemento de una
posición específica.
● clear: Limpia la lista.
Colección de
tipo Sets
Qué es un Set

● Definición
Es parecido a una lista, con la diferencia de
que NO puede tener valores duplicados.
● Creación
List <int> = {1, 2, 3}
List <String> = {}
Propiedades de Set

● first: Devuelve el primer elemento de la lista.


● isEmpty: Devuelve true si la colección no tiene
elementos.
● isNotEmpty: Devuelve true si la colección tiene
al menos un elemento.
Propiedades de Set

● length: Devuelve el tamaño de la lista.


● last: Devuelve el último elemento de la lista.
● reversed: Devuelve un objeto iterable que
contiene los valores de la lista en orden
inverso.
Funciones de Set

● .add: Agrega un nuevo elemento al conjunto.


● .remove: Elimina un elemento del conjunto.
● .clear: Limpia el conjunto.
Colección de
tipo Mapa
Qué es un Map

● Definición
Es una colección de pares de llave - valor,
también se les conoce como diccionarios,
donde la llave no se puede repetir.
● Inicialización
var persona = {
nombre: "Ana",
edad: 12,
}
Propiedades de Map

● keys: Devuelve una lista con las llaves.


● values: Devuelve una lista con los valores.
● isEmpty: Devuelve true si la colección no tiene
elementos.
● isNotEmpty: Devuelve true si la colección tiene
al menos un elemento.
● length: Devuelve el tamaño de la lista.
Funciones de Map

● addAll: Agrega elementos a la colección.


● remove: Elimina un elemento del conjunto.
● clear: Limpia el conjunto.
Valores nulos

● Cuando aparecen
Cuando el conjunto no tiene una llave
asociada, retorna null.
● Cómo lidiar con ellos
null es un tipo de valor que representa nada,
por lo que puede ser comparado mediante un
if.
Aprende más sobre
colecciones
Colecciones anidadas

● Cuando sucede
Es cuando una colección contiene una
colección dentro de sus valores, común en
Maps.
● Ejemplo
Map restaurantes = {
"nombre": "Pollos del monte",
"estrellas": [5, 4, 3, 4, 2]
}
Unión de colecciones

● Caso
Cuando se requiere unir el contenido de 2 o
más colecciones.
● Soluciones
Usando la función .addAll()
Durante el constructor con ...
Hacer una nueva colección
Flujos dentro de
colecciones
if entre colecciones

● Qué es
Dentro de la declaración de colecciones se
puede tener un condicionador de tipo if.
● Ejemplo
var colores = [
"verde",
if(agregarAmarillo) "amarillo",
"azul"
]
for entre colecciones

● Qué es
Dentro de la declaración de colecciones se
puede tener un condicionador de tipo for.
● Ejemplo
var colores1 = [
"verde",
for(var color in colores2) color,
"azul"
];
Ejercicio
Curso de Dart
desde Cero
Qué aprendiste en este curso

● Qué es y cómo funciona Dart.


● Las bases de programación en Dart.
● Flujo de datos en Dart.
● Colecciones en Dart.
Sigue aprendiendo Dart

● Haz los ejercicios propuestos.


● Toma el examen.

También podría gustarte