Mostrando entradas con la etiqueta casio. Mostrar todas las entradas
Mostrando entradas con la etiqueta casio. Mostrar todas las entradas

Cómo formular algoritmos con refinamiento descendente paso a paso: Estudio del caso 2 (repetición controlada por centinela)

Generalicemos el problema de promedios de clase: considere el problema siguiente:

Desarrolle un programa de promedios de clase que pueda procesar un número arbitrario de notas, cada vez que se ejecute el programa.

En el primer ejemplo de promedio de clase (Estudio de caso 1), se sabía por anticipado el número de notas (5). En este ejemplo, no se da ninguna indicación de cuantas notas se tomarán. El programa debe ser capaz de procesar un número arbitrario de notas. ¿Cómo podrá el programa determinar cuándo parar la captura de notas? ¿Cuándo sabrá que debe calcular e imprimir el promedio de clase?

Una forma de resolver este problema es utilizar un valor especial llamado un valor centinela (también conocido como valor señal, un valor substituto, o un valor bandera) que indicará "fin de la captura de datos". El usuario escribirá notas hasta que haya capturado todas las notas. Entonces escribirá un valor centinela, a fin de indicar que ha sido introducida la última nota. La repetición controlada por centinela a menudo se llama repetición indefinida, porque antes de que se empiece a ejecutar el ciclo el número de repetición no es conocido.

Claramente, el valor centinela deberá ser seleccionado de tal forma que no se confunda con algún valor de entrada aceptable. Dado que normalmente las notas de un examen son enteros no negativos, para este problema, -1 resulta un valor centinela aceptable. Entonces, una ejecución del programa de promedios de clase pudiera procesar un flujo de entradas como 95, 96, 75, 74, y -1. El programa a continuación calcularía e imprimiría el promedio de clase para las notas 95, 96, 75, y 74 (-1 es el valor centinela y, por lo tanto, no debe entrar en el cálculo de promedio).

La estructura de selección if / else

Recordemos que la estructura de selección if ejecuta una acción indicada sólo cuando la condición es verdadera; de lo contrario la acción es pasada por alto, en cambio la estructura de selección if / else permite que el programador especifique que se ejecuten acciones distintas cuando la condición sea verdadera y cuando la condición sea falsa. Por ejemplo, el enunciado en seudocódigo

If la nota del estudiante es mayor que o igual a 60 
    Print "Aprobo"
else
    Print "Fracaso"

imprime Aprobo, si la calificación del alumno es mayor que o igual a 60 e imprime Fracaso si la calificación del alumno es menor de 60. En cualquiera de los casos, después de haber terminado la impresión, se ejecutará el siguiente enunciado del seudocódigo. Advierta que el cuerpo de else también queda con sangría.

Consejo

Haga sangrías en ambos cuerpos de los enunciados de una estructura if / else.

La estructura de selección if

Una estructura de selección se utiliza para elegir entre cursos alternativos de acción. 

Por ejemplo, suponga que en un examen la nota de 60 es la nota de aprobado. El enunciado en seudocódigo

if la nota del estudiante es mayor que o igual a 60
Print "Aprobó"

determina si la condición "la nota del estudiante es mayor que o igual a 60” es verdadera o falsa. Si la condición es verdadera, entonces se imprime "Aprobó” y el siguiente enunciado en seudocódigo se "ejecuta" (recuerde que el seudocódigo no es un lenguaje de programación verdadero). Si la condición resulta falsa, se ignora la impresión, y se ejecuta el siguiente enunciado del seudocódigo. Note que la segunda línea de esta estructura de selección está con sangría. Esta sangría es opcional, pero es muy recomendada, ya que auxilia a destacar la estructura de los programas estructurados.