Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
8
respuestas

[Duda] No me quedo claro el uso del if y el + en el ejercicio

No entiendo por que quedo asi de compleja la solucion. primeramente no se por que en la linea 4 se repite el porcentajeDescuento==porcentajeDescuento + 20

Mejor dicho no entendi casi nada de la solucion, para mi el ejercicio estaba bien como se planteo al principio.

8 respuestas

Hola, podrias proporcionarme mas codigo? es que asi no comprendo muy bien cual es tu duda... Para asi ayudarte.

Saludos :)

let porcentajeDescuento = 0;

let cantidadMillas = prompt("Ingrese la cantidad de millas");

if (cantidadMillas > 30000) {
    porcentajeDescuento = 20;	
} else if (cantidadMillas > 5000) {
    porcentajeDescuento = 10;	
} else {
    porcentajeDescuento = 0;
}

para mi no habia error en el plantamiento inicial del ejercicio, es mas yo lo corri y en ningun momento me dio error o algo asi, se supone que el codigo corre de arriba hacia abajo, primero pregunta, si cantidad de millas es mayor a 30000, si es verdadero entra y le descuenta 20%, sino sigue su camino, ahora pregunta si es mayor a 5000, si es verdadero le da un descuento del 10%, y sino va al else que dice que el descuento es 0, porque no aplica a ninguno de los dos descuentos, para mi la logica esta bien, no entiendo el porque eliminar el ultimo else, o es que indiferentemente del condicional siempre va entra en el else? no entiendo.

solución!

Fíjate que en el resultado se usa = (asignación), esta actualizando el valor de la variable porcentajeDescuento. porcentajeDescuento = porcentajeDescuento + 20, para actualizarla (cambiarle el valor) usa el valor que ya tiene la variable porcentajeDescuento (que vale 0) y le suma 20. También es necesario actualizar la variable porcentajeDescuento para aplicar el descuento, de no cumplirse ninguna condición la variable no se actualiza y se queda en 0, por eso también me parece que en el resultado del problema no tiene el else {porcentajeDescuento = 0;} como del código original, ya que es redundante actualizar algo que vale 0, con el valor 0. Espero haber echo entender.

ok entiendo, eso quiere decir que si coloco el else solo estaria redundando, pero no seria un error, yo inicializo la variable porcentajeDescuento en 0, y en el else vualavo a darle el valor de cero, y luego lo de porcentajeDescuento = porcentajeDescuento + 20 es lo mismo que decir porcentajeDescuento = 20, es una cuetion de gusto? o es por algo mas?

No, no sería un error asignarle otra ves el valor 0, pero en mi opinion es innecesario, hasta tal ves una "una mala práctica". Defino una variable porcentajeDescuento con un valor inicial 0, y solo se reasigna o actualiza su valor si se cumple alguna condición, de lo contrario que no se actualice y que se quede en 0 para no aplicar ningún descuento, con esto nos ahorramos una línea de código, ahora imagínate en un código más grande. Con respecto a porcentajeDescuento = porcentajeDescuento + 20, ahí entran los conceptos de "acumulador" y "contador", en este caso, sí, es lo mismo porcentajeDescuento = porcentajeDescuento + 20 a porcentajeDescuento = 20, por que no hace mucho el código, pero cuando se trabaja con bucles (loops) se usa mucho el contador y el acumulador.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

ok, ahora lo que entiendo es que, mas que errores en el codigo original eran mas bien faltas de buenas practicas de programacion, porque he ejecutado varias veces el codigo original y ninguna vez me ha dado error, nunca le ha dado mas descuento a los que tengan mas de 30000 millas, siempre le ha dado 10% de descuento a los de mas de 5000 millas, y cero a los que tengan 5000 millas o menos, que es redundante el else, si, que en el caso de que tengas 35000 millas por ejemplo estas cumpliendo dos condiciones, tambien es cierto, pero por lo mismo se usa un else if, que el codigo modificado es mas eficiente y mas limpio, si, pero que el codigo original tenga errores, no, no se si estoy equivocado, pero no veo la falla en el codigo original mas alla de lo que dije, que el codigo modificado sea mas limpio.

Coincido con tu conclusión :)