Mostrando entradas con la etiqueta if / else. Mostrar todas las entradas
Mostrando entradas con la etiqueta if / else. Mostrar todas las entradas

Cómo formular algoritmos con refinamiento descendente paso a paso: Estudio de caso 3 (estructuras de control anidadas)

Trabajemos otro problema completo. Volveremos a formular el algoritmo utilizando seudocódigo y refinamiento descendente paso a paso, y escribiremos el programa en C para calculadoras CASIO fx-9860G Series. Hemos visto que las estructuras de control pueden ser apiladas una encima de otra (en secuencia), de la misma forma que un niño apila bloques. En este estudio de caso veremos la única otra forma estructurada que en C pueden conectarse estructuras de control, es decir mediante el anidar una estructura de control dentro de otra.

Considere el siguiente enunciado de problema:

Una universidad ofrece un curso que prepara alumnos para el examen estatal de licenciatura para corredores de bienes raíces. El año pasado, varios de los alumnos que terminaron este curso hicieron el examen de licenciatura. Naturalmente, la universidad desea saber qué tan bien salieron sus alumnos en el examen. Se le ha pedido a usted que escriba un programa para resumir los resultados. Se le ha dado una lista de estos cinco alumnos. A continuación de cada nombre se ha escrito un 1 si el alumno pasó el examen y un 2 si no lo pasó.

Su programa deberá analizar los resultados del examen, como sigue:

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.

Estructuras de control

Por lo regular, en un programa los enunciados son ejecutados uno después del otro, en el orden en que aparecen escritos. Esto se conoce como ejecución secuencial. Varios enunciados de C, que pronto analizaremos, le permiten al programador especificar que el enunciado siguiente a ejecutar pueda ser otro diferente del que sigue en secuencia. Esto se conoce como transferencia de control.

Durante los años 60, se hizo claro que el uso indiscriminado de transferencias de control era la causa de gran cantidad de dificultades experimentadas por los grupos de desarrollo de software. El problema era causada por el enunciado goto, que le permite al programador especificar una transferencia de control a uno de una amplia gama de destinos posibles, dentro de un programa. Lo que se conoce como programación estructurada se convirtió prácticamente en sinónimo de "eliminación  de goto”.

Las investigaciones de Bohm y de Jacopini hablan demostrado que los programas podían ser escritos sin ningún enunciado goto. Para los programadores el reto se convirtió en modificar sus estilos a "programación sin goto". Y no fue sino hasta entrados los años 70 que la profesión de la programación en general empezó a tomar en serio la programación estructurada. Los resultados han sido impresionantes, ya que los grupos de desarrollo de software han informado reducciones en tiempos de desarrollo, entrega a tiempo más frecuente de sistemas y terminación dentro del presupuesto del software. La clave de estos éxitos es simplemente que los programas producidos con las técnicas estructuradas, son más claros, más fáciles de depurar y de modificar, y tal vez más libres de fallas desde el primer momento.

El trabajo de Bohm y Jacopini demostró que todos los programas podrían ser escritos en términos de sólo tres estructuras de control

  1. La estructura de secuencia
  2. La estructura de selección 
  3. La estructura de repetición