Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas
Asignatura: Fundamentos de Programación
Estructura Repetitiva Hacer - Mientras Existen muchas situaciones en las que se desea que un bucle se ejecute al menos una vez antes de comprobar la condición de repetición, para ello se puede utilizar la estructura repetitiva Hacer - Mientras. Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una vez se ejecutará el bloque repetitivo. Cuando una instrucción Hacer-Mientras se ejecuta, lo primero que sucede es la ejecución del bucle (todas las instrucciones) y a continuación se evalúa la expresión booleana de la condición. Si se evalúa como verdadera, el cuerpo del bucle se repite y se vuelve a evaluar la condición, si sigue siendo verdadera se seguirá repitiendo el bucle hasta que la condición sea falsa. Dentro del bucle existirá una instrucción que en un cierto momento hará que la condición sea falsa. La representación gráfica de la estructura repetitiva Hacer-Mientras es la siguiente:
Figura 46. Diagrama de flujo de la estructura repetitiva Hacer-Mientras
estructura repetitiva hacer/mientras
Figura 47. Diagrama estructurado de la estructura repetitiva Hacer-Mientras
hacer instrucción 1 instrucción 2 . . instrucción n mientras (condición) Figura 48. Pseudocódigo de la estructura repetitiva Hacer-Mientras
1
Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas
Asignatura: Fundamentos de Programación
A continuación se presenta el siguiente ejemplo para comprender el funcionamiento de la estructura repetitiva Hacer-Mientras. Ejemplo 5: En el curso de Algoritmos y Diagramación existen 40 alumnos, de los cuales se tiene el promedio de la Primera Unidad. Se pide realizar un algoritmo que permita hallar el promedio general de estos alumnos. Solución
Cuerpo del bucle
Figura 49. Diagrama de flujo del ejemplo 5
Desarrollamos el ejemplo 5 en 5 pasos: 1. Se asignan valores a las variables c = 0 y suma = 0 2. Se ingresa al cuerpo del bucle (no existe ninguna instrucción que nos impida), se tiene tres instrucciones: 2.1. En la primera instrucción que se ejecuta tenemos un contador, este contador incrementa en una unidad siendo su resultado c = 1. 2.2. En la segunda instrucción se lee la nota del primer alumno (esta nota se ingresa por teclado). 2
Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas
Asignatura: Fundamentos de Programación
2.3. La tercera instrucción es un acumulador; cuya función es acumular la suma de todas las notas (40 notas). 3. A continuación, se evalúa la condición; se pregunta: ¿c es menor que 40? Si la respuesta es verdadera se regresa al paso 2 y se ejecutan las tres instrucciones del cuerpo del bucle nuevamente, de lo contrario se continúa con el paso 4. 4. Se llega a este paso después de finalizarse las 40 iteraciones que da el bucle. En la variable suma se tiene la suma total de las notas y ahora se ejecuta la instrucción que permite hallar el promedio. 5. Muestra en pantalla el resultado del promedio de notas. La solución del ejemplo 5 en el diagrama estructurado y pseudocódigo es el siguiente:
Cuerpo del bucle
Figura 50. Diagrama estructurado del ejemplo 5
algoritmo Ejemplo5 var entero: nota, c, suma real: prom inicio c=0 suma = 0 hacer c=c+1 leer(nota) suma = suma + nota mientras (c < 40) prom = suma/c escribir(‘El promedio general es : ’,prom) fin
Cuerpo del bucle
Figura 51. Pseudocódigo del ejemplo 5
3
Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas
Asignatura: Fundamentos de Programación
Ejemplo 6: Se desea contabilizar cuántos números son positivos, negativos y neutros del ingreso continuo de números enteros. Este proceso re repite hasta que el usuario pulse la tecla N al mensaje en pantalla ‘Desea Continuar[s/n]:’. Solución Para la solución del problema se va a necesitar de tres contadores, que realizarán la acción de contar cuántos números son positivos, negativos y neutros se ingresarán por teclado, de una serie de números. Para ello, utilizaremos tres variables, a las que llamaremos:
cc cp cn
: contador de ceros : contador de positivos : contador de negativos
Además, utilizaremos estructuras selectivas anidadas, con las que haremos la comprobación de cuáles números son iguales a cero, positivos y negativos. Y de acuerdo al resultado de la condición, los contadores (cc, cp y cn) incrementarán su valor. Terminadas de realizar todas las condiciones, se preguntará al usuario si ‘Desea continuar [s/n]’ ingresando más números, para ello utilizaremos una variable de tipo carácter, llamado opc. El cuál almacenará el carácter de ‘s’ de “sí continuo”, o ‘n’ de “no continuo” ingresando valores. De acuerdo a la respuesta seguiremos o terminamos el bucle. Al responder en 'n' de “no continuo” el algoritmo debe reportar lo siguiente:
Cantidad de números ceros. Cantidad de números positivos. Cantidad de números negativos.
4
Universidad los テ]geles de Chimbote Facultad de Ingenierテュa Escuela Profesional de Ingenierテュa de Sistemas
Asignatura: Fundamentos de Programaciテウn
Figura 52. Diagrama de flujo del ejemplo 6
5
Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas
Asignatura: Fundamentos de Programación
Figura 53. Diagrama estructurado del ejemplo 6
algoritmo Ejemplo6 var entero: n, cc, cp, cn caracter: opc inicio cc = 0 cp = 0 cn = 0 hacer leer (n) si (n=0) entonces cc = cc + 1 sino si (n>0) entonces cp = cp + 1 sino cn = cn + 1 fin_si fin_si escribir(‘Desea continuar : [s/n] :’) escribir(opc) mientras (opc = ’s’) escribir(‘Cantidad de ceros : ’,cc) escribir(‘Cantidad de positivos : ’,cp) escribir(‘Cantidad de ceros : ’,cn) fin Figura 54. Pseudocódigo del ejemplo 6
6
Universidad los Ángeles de Chimbote Facultad de Ingeniería Escuela Profesional de Ingeniería de Sistemas
Asignatura: Fundamentos de Programación
Ejemplo de autoaprendizaje: Resuelva en diagrama de flujo, diagrama estructurado y pseudocódigo. Ejemplo 7: En una campaña médica de medición de presión, se pide que se ingresen todas las edades de los pacientes que serán atendidos. Se solicita que se calcule la mayor y menor edad ingresada. El ingreso acaba cuando se ingrese un valor 0.
7