Existe otra alternativa a los condicionales anidados que son los Else if, por ejemplo:
int tieneMascota = 1; if (tieneMascota == 0) { print("No tiene mascota"); } else if (tieneMascota == 1) { print("tiene una mascota"); } else { print("Tiene muchas mascotas"); }
Excelente :D
En realidad, esto no deja de ser condicionales anidadas, lo único que cambia es que se omiten las llaves de los 'else' del medio y se evita la identación.
¿Dónde está la igualdad estricta? ===
Si al igual que yo, venís de programar en JavaScript (sobretodo TypeScript), habrás notado la ausencia de nuestra querida igualdad estricta (===) y te habrá hecho ruido ver la igualdad simple (==). En realidad, en Dart el == funciona igual que el === en JS.
print("1" == 1); // false
Y si esto no te parece suficiente, también existe la función identical():
int a = 2; int b = 1 + 1; print(identical(a, b)); // true // Solo existe un objeto "2"
He aquí la diferencia entre ambos métodos:
== | identical() |
|---|---|
| Compara si dos elementos son iguales. || | Compara si dos elementos son el mismo |
Esto es apenas un resumen/traducción de la página oficial de Dart para aquellos que se mueven de JS a Dart-
Les comparto lo que aprendí con if, else y swtich
**If - else: **
**Switch: **
void main() { // Mascotas int mascotas = 2; if (mascotas == 0) { print('No tienes mascotas'); } else if (mascotas == 1) { print('Tienes una mascota'); } else { print('Tienes muchas mascotas'); } switch (mascotas) { case 0: print('No tienes mascotas'); break; case 1: print('Tienes una mascota'); break; default: print('Tienes muchas mascotas'); } }
void main() { int statusMascota = 0;
if (statusMascota == 0) { print("no hay mascotassss"); } else { print("tenemos $statusMascota Mascotas!!!"); } }
Imagen del ejercicio en DartPad
Usando ambos if and switch statements"
Estas serían las condicionales más utilizadas en Dart
void main() { int mascotas = 5; // If - else if (mascotas == 0) { print("No tienes mascotas"); } else { if (mascotas == 1) { print("Solo tienes una mascota"); } else { print("Tienes muchas mascotas"); } } // If anidado if (mascotas == 0) { print("No tienes mascotas"); } else if (mascotas == 1) { print("Solo tienes una mascota"); } else { print("Tienes muchas mascotas"); } // Operador Ternario (mascotas == 0) ? print("No tienes mascotas") : mascotas == 1 ? print("Solo tienes una mascota") : print("Tienes muchas mascotas"); // Switch switch (mascotas) { case 0: print("No tienes mascotas"); break; case 1: print("Solo tienes una mascota"); break; default: print("Tienes muchas mascotas"); } }
//haciendo uso del operador ternario, nos podemos ahorrar unas cuantas lineas de codigo. void main() { int statusMascota = 0; statusMascota == 0 ? print("no hay mascotas") : print("tenemos $statusMascota Mascotas!!!"); }
void main() { int mascota = 20; if (mascota == 0) { print("No tiene mascotas"); } else { if (mascota == 1) { print("Tiene 1 amscota"); } else { print("Tiene muchas mascotas"); } }
switch(mascota){ case 0: print("No tiene mascotas"); break; case 1: print("Tiene 1 amscota"); break; default: print("Tiene muchas mascotas"); } }
//Detector de deudas //if , else, switch void main() { int deudas = 0; if (deudas == 0) { print("No tienes deudas"); } else{ print("Tienes deudas"); } switch(deudas){ case 0: print("No tienes deudas"); break; case 1: print("Tienes 1 deuda"); break; default: print("Tienes varias deudas"); } }
Me esta gustando mucho el curso.
Pd: Muchos if anidados aumenta la complejidad ciclomática.
Control de flujo
✨ Concepto clave En programación tenemos 3 comportamientos (secuencial, condicional e iterativo), que permiten desarrollar algoritmos con el fin de crear procesos según un sentido.
. Como en todos los lenguajes de programación, tendremos las siguientes declaraciones para el control del flujo:
if if .. else switch .. casefor while do .. whilebreak continue.
ℹ️ Definición Un flujo es considerado secuencial ya que se ejecuta línea a línea, el cual podemos explícitamente detener o saltar según su estado contextual.
.
Condicionales
ℹ️ Definición Un flujo se considera condicional cuando deseamos evaluar casos o contextos según sea su origen.
if (isRaining()) you.bringRainCoat(); else if (isSnowing()) you.wearJacket(); else car.putTopDown();
O cuando deseamos evaluar múltiples casos en un mismo bloque de código:
const state = 'OPEN'; switch (command) { case 'CLOSED': sayGoodBye(); break; case 'OUT': saySeeYouLater(); break; default: sayHello(); }
Te dejo mi trabajo realizado durante la clase:
void main() { // Mascotas int mascotas = 0; switch (mascotas) { case 1: print("Solo tienes una mascota"); break; case 2: print("Tienes $mascotas mascotas"); break; default: print("No tienes mascotas"); } if (mascotas >= 2) { print("Tienes $mascotas mascotas"); } else { if (mascotas == 1) { print("Solo tienes una mascota"); } else { print("No tienes mascotas"); } } }
Con el switch tambien se puede evaluar una condición y como devuelve un true o false podemos devolver un resultado a partir de la respuesta.
void main() { //mascotas int cantidadMascotas = 3; //Evaluando con if if(cantidadMascotas == 0) { print('no tienes mascotas'); } else if (cantidadMascotas > 0) { print('Tienes $cantidadMascotas mascotas'); } //evaluando con switch switch(cantidadMascotas > 0) { case false: print('no tienes mascotas'); break; case true: print('Tienes $cantidadMascotas mascotas'); break; } }
Mi ejemplo con case;
void main() { int cantidad = 0; switch (cantidad) { case 0: print("No tiene mascota"); break; case 1: print("Tiene una mascota"); break; default: print("Tienes muchas mascotas"); } }
Pero es puro c#.
Todos los lenguajes son iguales, los operadores y los condicionales se basan en las unidades ALU. ( Arimetic logic unit )
Si, el al principio de el curso explica que este lenguaje se basa en su mayoria en C y otros lenguajes por eso la similitud, pero esto es muy comun en la programacion.