Estructuras Repetitivas
Requisitos de finalización
6. Ciclo "while"
6.2. Ejemplos de usos de "while" controlado por evento
Consigna 1:
Calcular el promedio de notas que se ingresa, el proceso finaliza al ingresar -1 (uno negativo).
Para simplificar el código, se asume que no se van a ingresar valores que puedan producir un error de excepción (ingreso de carácter)
- ¿Qué evento debe pasar para que el bucle se termine?.
- ¿Qué sucede si el primer valor que se ingresa es -1?.
- Se dice que el ingreso de notas termina por un EVENTO, porque la condición que aborta el ciclo, es un ingreso no válido (no una excepción)
Consigna 2:
Se quiere calcular el promedio de notas que se van ingresado, el proceso finaliza al ingresar un string que no sean números.
- En línea 10 se establece calculando = True para que en la línea 11 la condición del "while" sea verdadera e ingrese al bucle de nuestro programa.
- En línea 12 se ingresa por teclado la nota como "string".
- Defino un bloque try, para que intente convertir la nota tipo "string" ingresada a un valor "float", si lo consigue NO hay excepción, y puede acumular y contar.
- Si se genera una excepción, en la linea 14, nota = float(nota) , esta sería por "ValueError", no puede convertir el string a float, por lo que ejecuta el bloque de excepción.
- En el bloque de excepción se cambia el valor de calculando = False para que se aborte el bucle "while".
- Fuera del "while", línea 21 cálculo el promedio y en la 23 muestro.
- ¿Qué diferencias observa en los scripts mostrados para garantizar el ingreso al bucle?.
- ¿Qué tipo de dato es "calculando" en el segundo script?.
- ¿Cree que el código es correcto?.
- ¿Qué sucede si se ingresan valores negativos para las notas? ¿Funciona?.
- ¿Qué sucede si las notas ingresadas no pertenecen a [0,10]? ¿Funciona?.
- ¿Qué pasa si el primer valor ingresado es una letra?.
A continuación, se deja otra posible solución a la Consigna 2 para que lo analice.
- Vemos que a medida que avanzamos en el materia, los programas se vuelven mas largos y complejos.
- Ver que si tuviéramos que incorporar consideraciones para que no se ingresen notas negativas o fuera de [0,10] el programa adquiere mayor dificultad y se vuelve mas largo (más código).
- Vemos que considerar TODAS las alternativas y prevenirse de ingresos no válidos hace mas complejo el código.
- Respecto del punto anterior, algunas veces las consignas que se plantean, limitan los ingresos (ejemplo: a números reales), para buscar que el alumno SOLO use algún concepto a ser evaluado (ejemplo: "while") y no se disperse con otros temas (ejemplo "try/except").
- Vemos que hay muchas soluciones, para una consigna tan sencilla, no necesariamente infinitas pero probablemente más de 350 soluciones distintas pueden surgir.
- En la materia no tenemos 350 alumnos, por lo que es SUGESTIVO que dos alumnos tengan la misma solución (copiar --> 😡).
- Notar que cambiar el nombre de las variables sería un cambio cosmético y no un programa distinto, esto suelen hacer algunos alumnos que copian para DISFRAZAR el código que hizo otro y hacerlo pasar como propio.
- En este caso es tan culpable el que copia como el que facilita el código para que otro lo copie, en los casos que se detectaron ambos alumnos han sido REPROBADOS 😳.