Mostrando entradas con la etiqueta seudocódigo. Mostrar todas las entradas
Mostrando entradas con la etiqueta seudocódigo. 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:

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 repetición while

Una estructura de repetición le permite al programador especificar que se repita una acción, en tanto cierta condición se mantenga verdadera. 

El enunciado en seudocódigo

While queden elementos en mi lista de compras 
    Adquirir elemento siguiente y tacharlo de la lista

describe la repetición que ocurre durante una salida de compras. La condición, "queden elementos en mi lista de compras" puede ser verdadera o falsa. Si es verdadera, entonces la acción, "Adquirir elemento siguiente y tacharlo de la lista" se ejecutará. Esta acción se ejecutará en forma repetida, en tanto la condición sea verdadera. El enunciado o enunciados contenidos en la estructura de repetición while constituyen el cuerpo del while. El cuerpo de la estructura while puede ser un enunciado sencillo o un enunciado compuesto.

Eventualmente, la condición se hará falsa (cuando se haya adquirido el último elemento de la lista de compras y se haya tachado de la misma). Llegado a este punto, la repetición se termina, y se ejecutará el enunciado que sigue después de la estructura de repetición.

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.

Cómo formular algoritmos: Estudio de caso 1 (repetición controlada por contador)

A fin de ilustrar cómo se desarrollan los algoritmos, resolveremos algunas variantes de un programa de promedios de clase. Considere el siguiente enunciado de programa:

Una clase de cinco alumnos hizo un examen. Las notas (enteros en el rango 0 a 100) correspondientes a este examen están a su disposición. Determine el promedio de la clase en este examen.

El promedio de la clase es igual a la suma de las notas dividida por el número de alumnos. El algoritmo para resolver este problema en una calculadora:

Debe introducir cada una de las calificaciones
Ejecutar el cálculo de promedio
Imprimir el resultado.

Utilicemos el seudocódigo, enlistemos las acciones a ejecutarse, y especifiquemos el orden en el cual estas acciones deberán ser ejecutadas. Utilizaremos repetición controlada por contador, para introducir las calificaciones una a la vez. Esta técnica utiliza una variable llamada contador para definir el número de veces que deberá ejecutarse un conjunto de enunciados. En este ejemplo, la repetición terminará cuando el contador exceda de 5.

El algoritmo en seudocódigo será