JS, Node.js, Frontend, Backend, Firebase, Express, Patrones, HTML5_APIs, Asincronía, Websockets, Testing
var administrador = 'Yo mismo';
var esAdministrador = (administrador === 'Yo mismo');
-
Estructura:
/* IF ...ELSE if (-algo verdadero-) { -ejecutaremos este código- } else { -Si lo anterior no era verdadero, se ejecutara este código- }; */
-
Documentación:
-
Ejemplo:
if (true) { console.log("true, por eso me ejecuto"); } else { console.log("false, por eso me ejecuto"); }
function testCondiccion (condicion){
if (condicion == 1) {
console.log("1, por eso me ejecuto");
} else if (condicion == 2){
console.log("2, por eso me ejecuto");
} else {
console.log("no es 1 o 2, por eso me ejecuto");
}
}
- Puede ser muy util pero no es recomendado
if(true) console.log("Funciona!")
- Genera problemas de legibilidad serios
-
Estructura:
/* Switch switch(expresión) { case n: //Código break; case n: //Código break; default: //Código } */
-
Documentación:
-
Casos únicos:
var nombre = ""; switch (nombre) { case "Pepe": console.log("Hola Pepe"); break; case "Luis": console.log("Hola Luis"); break; case "Antonio": console.log("Hola Antonio"); break; default: console.log('Ninguno de los nombres que pensamos... es '+nombre); }
-
Multiples coincidencias:
var nombre = ""; switch (nombre) { case "Pepe": case "Luis": case "Antonio": alert('Hola '+nombre); break; default: console.log('Ninguno de los nombres que pensamos... es '+nombre); }
-
Estructura:
/* -- Una operación por caso -- condicion ? expresion1 : expresion2 -- Multiples Operaciones por caso -- condicion ? ( operacion1, operacion2, otraoperacion ) : ( operacion1, operacion2, otraoperacion ); -- Evaluaciones multiples -- condicion ? expresion1 : condicion2 ? expresion1 : expresion2; */
-
Una operación por caso:
var esMiembro = true;
console.info("El pago son " + (esMiembro ? "20.00€" : "50.00€"));
- Evalución múltiple:
var esMiembro = true;
var esAdulto = true;
console.info(esMiembro ? "El pago son 20.00€" : esAdulto ? "Puedes enviar la solicitud cuando quieras" : "Tines que esperar aún. Lo siento.");
- Múltiples Operaciones:
var mensaje,
esMiembro = true;
esMiembro ? (
mensaje = "El pago son 20.00€",
console.info(mensaje)
) : (
mensaje = "El pago son 50.00€",
console.info(mensaje)
);
Realiza los siguientes ejercicios usando en cada uno los tres tipos de condicionales (If...else, Switch, operador ternario )
1 - Diseña un algoritmo que lea dos números y los compare. Como resultado esperamos que nos diga cual es mayor... o si son iguales.
- Usando if...else
function compararNumeros (valor1, valor2) {
if (valor1 > valor2) {
console.info(valor1, "es mayor.")
} else if (valor1 < valor2){
console.info(valor2, "es mayor.")
} else {
console.info("Son iguales")
};
}
- Usando Operador Ternario (?:)
function compararNumeros (valor1, valor2) {
(valor1 > valor2) ? console.info(valor1, "es mayor.")
: (valor1 < valor2) ? console.info(valor2, "es mayor.")
: console.info("Son iguales");
}
- Usando Switch
function compararNumeros (valor1, valor2) {
switch (true){
case (valor1 > valor2):
console.info(valor1, "es mayor.");
break;
case (valor1 < valor2):
console.info(valor2, "es mayor.");
break;
default:
console.info("Son iguales");
}
}
2 - Diseña un script que lea tres números distintos y nos diga cual de ellos es el mayor.
- Usando if...else
function comparaNumeros (valor1, valor2, valor3) {
if (valor1 > valor2 && valor1 > valor3) {
console.info(valor1, "es mayor.")
} else if(valor2 > valor3){
console.info(valor2, "es mayor.")
} else {
console.info(valor3, "es mayor.")
}
}
- Usando Operador Ternario (?:)
function comparaNumeros2(valor1, valor2, valor3) {
(valor1 > valor2 && valor1 > valor3)?console.info(valor1, "es mayor."):(valor2 > valor3)?console.info(valor2, "es mayor."):console.info(valor3, "es mayor.");
}
- Usando Switch
function compararNumeros3(valor1, valor2, valor3) {
switch (true){
case (valor1 > valor2 && valor1 > valor3):
console.info(valor1, "es mayor.");
break;
case (valor2 > valor3):
console.info(valor2, "es mayor.");
break;
default:
console.info(valor3, "es mayor.")
}
}
3 - Diseña un script que siga el siguiente proceso:
-
Si el primero es negativo, debe sumar los otros dos
-
Sino multiplicará los tres numeros
-
Mostrar el resultado final incluyendo una referencia a la operación realizada.
-
Usando if...else
function jugandoConNumeros (valor1, valor2, valor3) {
if (valor1 < 0) {
console.log("El resultado de la suma es", valor2+valor3)
} else {
console.log("El resutlado de la multiplicacion es", valor1 * valor2 * valor3)
};
}
- Usando Operador Ternario (?:)
function jugandoConNumeros (valor1, valor2, valor3) {
(valor1 < 0) ? console.log("El resultado de la suma es", valor2+valor3)
: console.log("El resutlado de la multiplicacion es", valor1 * valor2 * valor3);
}
- Usando Switch
function jugandoConNumeros (valor1, valor2, valor3) {
switch(true){
case (valor1 < 0):
console.log("El resultado de la suma es", valor2+valor3)
break;
default:
console.log("El resutlado de la multiplicacion es", valor1 * valor2 * valor3);
}
}
4 - Nivel Medio
-
Se aplica un 25% cuando:
- Estamos en los meses de invierno
- Y no es viernes o fin de semana.
-
Usando if...else
function calcularDescuento1 (mes, diaSemana, precio) {
var descuento = 25*precio/100;
var precioConDescuento = precio - descuento;
if (mes === "Diciembre" || mes === "Enero" || mes === "Febrero") {
if(diaSemana === "Viernes" || diaSemana === "Sabado" || diaSemana === "Domingo"){
console.warn("No se aplica descuento aunque sea invierno.. ven durante la semana mejor!. Debes pagar", precio);
} else {
console.info("BINGO! Has acertado de mes y días. Debes pagar solamente", precioConDescuento);
}
} else {
console.warn("No se aplica descuento.. ven en invierno mejor!. Debes pagar", precio);
};
}
- Usando Operador Ternario (?:)
function calcularDescuento2 (mes, diaSemana, precio) {
var descuento = 25*precio/100;
var precioConDescuento = precio - descuento;
(mes === "Diciembre" || mes === "Enero" || mes === "Febrero") ?
(diaSemana === "Viernes" || diaSemana === "Sabado" || diaSemana === "Domingo") ?
console.warn("No se aplica descuento aunque sea invierno.. ven durante la semana mejor!. Debes pagar", precio)
: console.info("BINGO! Has acertado de mes y días. Debes pagar solamente", precioConDescuento)
: console.warn("No se aplica descuento.. ven en invierno mejor!. Debes pagar", precio);
}
- Usando Switch
function calcularDescuento3 (mes, diaSemana, precio) {
var descuento = 25*precio/100;
var precioConDescuento = precio - descuento;
switch (true) {
case ((mes === "Diciembre" || mes === "Enero" || mes === "Febrero") && (diaSemana !== "Viernes" && diaSemana !== "Sabado" && diaSemana !== "Domingo")):
console.info("BINGO! Has acertado de mes y días. Debes pagar solamente", precioConDescuento);
break;
case (mes !== "Diciembre" && mes !== "Enero" && mes !== "Febrero"):
console.warn("No se aplica descuento.. ven en invierno mejor!. Debes pagar", precio);
break;
default:
console.warn("No se aplica descuento aunque sea invierno.. ven durante la semana mejor!. Debes pagar", precio);
}
}
5 - Diseña un algoritmo que al introducir un numero nos diga si es positivo o negativo.
- Usando if...else
function esPositivo (numero) {
if(numero < 0){
console.info(numero, " es negativo");
} else {
console.info(numero, " es positivo");
}
}
- Usando Operador Ternario (?:)
function esPositivo (numero) {
(numero < 0) ? console.info(numero, " es negativo")
: console.info(numero, " es positivo");
}
- Usando Switch
function esPositivo (numero) {
switch(true){
case (numero < 0):
console.info(numero, " es negativo");
break;
default:
console.info(numero, " es positivo");
}
}
6 - Diseña un algoritmo que al introducir un número nos diga si es par o impar.
- Usando if...else
function esPar (numero) {
if(numero %2 === 0 ){
console.info(numero, " es par");
} else {
console.info(numero, " es impar");
}
}
- Usando Operador Ternario (?:)
function esPar (numero) {
(numero %2 === 0) ? console.info(numero, " es par")
: console.info(numero, " es impar");
}
- Usando Switch
function esPar (numero) {
switch(true){
case (numero %2 === 0):
console.info(numero, " es par");
break;
default:
console.info(numero, " es impar");
}
}