Operaciones
Clase 11 de 23 • Curso de Dart desde Cero
Contenido del curso
Adolfo Martínez Garza
Melvin Salas
Ivan Ezequiel Mazzalay
Daniel Jussef Zamorano Silva
Vidale C.
Melvin Salas
Tyler Valencia
Pedro Diaz
Emmanuel Rodríguez
Julia Gabriela Nieva Paredes
Brandon Manzo
Melvin Salas
Brandon Manzo
Alberto Aleman Rocha
Albin Anthony Hinostroza Macavilca
Fernando García Guerrero
Juan Fernando López Hernández
Ivan Daniel Oviedo Alvarado
Tulio Junior Rangel Nuñez
Cesar Nunes
Melvin Salas
Alberto Aleman Rocha
Melvin Salas
Ronal Vique Vasquez Inestroza
Melvin Salas
Adolfo Andres Chafardett Silva
Melvin Salas
Christian David Tovar Tirado
Andy Antonio Paz Cambara
Brayan Sanchez
Samuel Márquez
José Darío Argotte Briceño
?: se le conoce como operador ternario Su estructura sería así: condicional ? verdadero : falso
operador ternario es el nombre correcto ;)
Les dejo un resumen de los ejemplos vistos con algunos comentarios de los tipos de datos y lo que hacen algunas operaciones. Espero les sirva:
void main() { //Operaciones Aritméticas int valor1 = 7; int valor2 = 3; // Suma int resultadoSuma = valor1 + valor2; print("El resultado de la suma es: $resultadoSuma"); //Resta int resultadoResta = valor1 - valor2; print("El resultado de la resta es: $resultadoResta"); //Division: El resultado de la división siempre es Double double resultadoDiv = valor1 / valor2; print("El resultado de la division es: $resultadoDiv"); //Producto: El resultado del producto, depende del tipo de dato ingresado: // int * int = int // double * double = double // int * double = double int resultadoProd = valor1 * valor2; print("El resultado del prodcuto es: $resultadoProd"); //Parte entera del Resultado de una División ~/ int resultadoIntDiv = valor1 ~/ valor2; print("La parte entera de la división es: $resultadoIntDiv"); //Operador módulo %: Nos devuelve el resto entero de una división int resultadoModDiv = valor1 % valor2; print("El resto entero de la división es: $resultadoModDiv"); }
void main() { //Operaciones de Asignación int valor1 = 8; int valor2 = 2; //Asignamos a valor1 la suma de valor1 + valor2 valor1 += valor2; print("El resultado de valor1 + valor2: $valor1"); //Esto es válido para el resto de las operaciones }
void main() { //Operaciones de Asignación int valor1 = 8; int valor2 = 2; //Asignamos a valor1 la suma de valor1 + valor2 valor1 += valor2; print("El resultado de valor1 + valor2: $valor1"); //Esto es válido para el resto de las operaciones }
void main() { //Operaciones Lógicas bool llueve = true; bool haceFrio = false; //Operación Or: es falsa solo cuando ambas condiciones son falsas, el resto de los casos es verdadera bool llevoAbrigo = llueve || haceFrio; print("$llueve || $haceFrio == $llevoAbrigo"); //Operador And: Es verdadero solo si ambas variables son verdaderas, el resto de los casos es falsa bool llevoAbrigoAND = llueve && haceFrio; print("$llueve && $haceFrio == $llevoAbrigoAND"); //Operador Ternario ?: Funciona como un if de forma abreviada //Operador Negación !: Nos devuelve el valor opuesto de la variable, si es true nos devuelve false y viceversa. print(!llueve); }
Gracias!
void main() { int n1 = 4; int n2 = 3; print(n2 ~/ n1); //0 print(n2 / n1); //0.75 print(n2 % n1); //3 }
El modulo nos regresa el residuo entero de una división. En este caso es 3 porque el cuatro no cabe en el tres, por lo que el tres original sigue sobrando.
En el caso de la opción que nos regresa cero es porque no hay residuo entero en esa división, es decir. 0.75 no es entero pero si hacemos 5~/4 obtenemos 1.25 que podemos descomponer en 1 + 0.25 por lo tanto tenemos que el residuo entero es 1.
Perfecto ;)
Muchas gracias me quedo mucho mas claro Que es y para que sirve el operador Modulo "%". Gracias.
El operador .... ?: se e conoce como Elvis por que se parece al cantante.
Operadores
✨ Concepto clave Una operación es la definición de una acción que se desee ejecutar dependiendo de su concepto y ámbito.
. De manera general, en Dart tenemos los siguientes operadores según su categoría: .
Test Operators
Si deseamos realizar una inspección sobre un determinado objeto (recordando que los tipos son objetos), tendremos los siguientes operadores: .
(employee as Person).firstName = 'Bob';
O, la siguiente condicional:
employee.firstName = (employee is Person) ? 'Bob' : 'Frank';
Assignment Operators
b ??= value;.
.
o si deseamos asignar y si aquel valor fuese null tendríamos:
String? person = name ?? 'anonymous'; // anonymous
También, si deseamos definir un objeto a partir de otro mediante el cascade operator:
var product = Product() ..size = Size.MEDIUM ..price = Price.LOW ..quantity = 4;
Algunos operadores están mal escritos, tanto en la lámina con en el comentario del código del profe. Por ejemplo, el != aparece =!, y también el >= aparece como =>. Ojalá pudieran corregirlo por favor.
En este caso que dio problemas de tipo de variable, no seria recomendable usar dynamic?
Cual error te dió? Es probable que debas usar double para guardar el resultado.
No es un error, es que me pareció curioso que en este video, al momento de dividir o multiplicar, tuvo que hacer el cambio de tipo de variable (de double a int).
Por ejemplo: si es un entero (int) tiene menos peso que un decimal (double) y usar un double para guardar enteros es un desperdicio de memoria
Por eso mejor replanteo la pregunta: Es recomendable usar Dynamic o habrá alguna forma que sea mucho más eficiente con respecto a la memoria?
Utilice el tipo de dato dynamic en el valor1 para no tener que crear una nueva variable de tipo double al momento de hacer la división. Creí que por ser el resultado un entero no necesitaría ser almacenada en un double pero no es así.
void main() { //Operaciones de Asignación // +=, -=, *=, /=, ~/= y %= dynamic valor1 = 8; int valor2 = 2; //Usando += print('$valor1 += $valor2'); valor1 += valor2; print('Resultado: $valor1'); valor1 = 8; //Usando -= print('$valor1 -= $valor2'); valor1 -= valor2; print('Resultado: $valor1'); valor1 = 8; //Usando *= print('$valor1 *= $valor2'); valor1 *= valor2; print('Resultado: $valor1'); valor1 = 8; //Usando /= print('$valor1 /= $valor2'); valor1 /= valor2; print('Resultado: $valor1'); valor1 = 8; //Usando ~/= print('$valor1 ~/= $valor2'); valor1 ~/= valor2; print('Resultado: $valor1'); valor1 = 8; //Usando %= print('$valor1 %= $valor2'); valor1 %= valor2; print('Resultado: $valor1'); }
gracias
Gente les dejo una tabla de valores por si no la conocen
Para || (OR) true || true = true true || false = true false || true = true false || false = false
Para && (AND) true && true = true true && false = false false && true = false false && false = false
Para ! (NEGACION) !true = false !false = true
?: Seria un operador ternario:
//TipoDeVariable nombreVarialbe = Condicion ? Resultado1 : Resultado2 var valor1; var valo2; var resultado = valor1 == 1 ? valor1 : valor2 println(resultado).
Una consulta, en Dart no existe el concepto de truncar un número double cuando es asignado a una variable int?
Si existe, de hecho, se llama truncate y lo podrías usar así:
int valor1 = 7; int valor2 = 3; int resultado = (valor1 / valor2).truncate(); print(resultado); // 2
También está la opción inversa de truncar un int a double con .truncateToDouble()
No logro encontrar informacion de que es y como utilizar -expr. Alguien puede ayudarme?
Hola Cesar, -expr es cuando tienes una variable de tipo número y la conviertes en su negación.
Por ejemplo:
x = 5, -x sería -5y = -8, -y sería 8¿Por qué al hacer el código de la imagen aparece ese aviso "Dead Code"?
Porque en este punto llueve es true, si cambias el valor de a false verás que no pasa eso.
Esto se debe a que el programa es muy pequeño y el analizador de código de DartPad hace es indicación para optimizar el código ya que la variable llueve nunca cambia de valor.
En este caso te recomendaría ignorarlo ;)
porque al hacer: valor1 % valor2;
el residuo entero de la división es 1, cual es la función matemática es la que utiliza para llegar a ese resultado.
El operador % es el operador módulo, el cual es el residuo entero de la división entera, en el ejemplo es lo siguiente:
7 / 3 = 2,33...
En caso de una división entera sería 2, como quedaron 0.33... en los decimales, se puede modificar por el divisor 3, por lo que 3 x 0.33... es igual a 1.
Esa es una forma de verlo.
En caso de que se trate de diferenciar un string "numero" de un numero, como actuaria el operador "==" o "!="?
Al realizar una comparación de un string con un número el resultado siempre va a dar negativo.
Porque dart compara el valor en términos absolutos, o sea, tanto tipo como valor.
En ese caso:
void main() { print("12" == "12"); // true print("12" == 12); // false print(12 == 12); // true }
Operador ternario, podría decir que es ese
jajaja yo creo que se le dice Elvis operator
dato para no olvidar
Se le llama operador ternario al ?:
void main() { //Ejemplo de operador ternario ? int valor1 = 12; int valor2 = 10;
String resultado = valor1>valor2 ? "mayor":"menor"; print("el $valor1 es $resultado que $valor2"); }