Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hacer mientras
Diagrama de flujo Pseudocdigo en espaol
Hacer
Acciones S1 Sn
S1 . Sn mientras (<condicin>)
cierto
condicin falso
Cdigo en C++
do { S1 . Sn } while (<condicin>);
Departamento de Computacin. Ctedra de Programacin. Programacin 1.
Marzo 2004
Hacer mientras
La estructura Hacer-Mientras es una sentencia Repita mientras con la diferencia que evala la condicin al final del lazo y no al principio. Las sentencias (una o ms) del cuerpo del lazo se ejecutan mientras que la condicin (expresin lgica) es cierta. Como se pregunta al final por la condicin, el lazo se ejecuta una o ms veces. Si la condicin nunca se hace falsa, el programa entra en un lazo infinito, es decir, las sentencias del cuerpo del lazo se ejecutarn indefinidamente.
Marzo 2004 Departamento de Computacin. Ctedra de Programacin. Programacin 1.
Ejemplo 1
1 2 3 4 {pre: numEst } contEst = 1 Escribir Introduzca el numero total de estudiantes Leer numEst repita mientras (contEst numEst) hacer Escribir Dame las dos notas del estudiante Leer nota1, nota2 mientras(0 nota1 20 0 nota2 20) prom = (nota1 + nota2) / 2 Escribir Promedio del estudiante= , prom contEst = contEst + 1 frm numEst = 1, nota1 = 10.0, nota2 = 11.0 -> contEst = 1, prom = 10.5 numEst = 0 -> contEst = 1 promedioDeNotas {pos: numEst } contEst: Natural. Contador del nmero actual de estudiantes. numEst: Natural. Nmero total de estudiantes introducido por el usuario nota1, nota2: Real. Notas del estudiante para calcular el promedio del mismo. prom: Real. Promedio de las dos notas suministradas por el usuario para el estudiante. Caso exitoso Caso exitoso
1 2
Marzo 2004
Hacer mientras
Las variables que intervienen en la condicin pueden INICIARSE antes de la primera ejecucin del lazo o durante sta, ya que la evaluacin de la condicin se hace al final de la estructura. Hay que estar pendiente de MODIFICAR dentro del cuerpo del lazo los valores de las variables que intervienen en la condicin, para garantizar que en algn momento sta se haga falsa y el lazo pueda terminar su ejecucin y as garantizar que el lazo no es infinito.
Marzo 2004
Ejemplo 2
Pseudocdigo en Espaol hacer Escribir a es mayor mientras( a b)
conta=0 hacer conta=conta+1 leer nota Escribir conta, nota mientras(conta 15)
Ejemplo 3
Pseudocdigo en Espaol suma=0.0 Leer x hacer suma = suma + x leer x mientras( x > 0.0) Cdigo en C/C++ suma = 0.0; cin >> x; do { suma += x; cin >> x; } while(x > 0.0)
Marzo 2004
Ejemplo 4
#include <iostream.h> void main () { int i = 1; do { cout << i << \n; i++; } while ( i <= 3 ); cout << Escribe los nmeros 1, 2 y 3 << endl; }
Marzo 2004 Departamento de Computacin. Ctedra de Programacin. Programacin 1.
Corrida en fro
i 1 2 3 4
Ejemplo 5
Imprimir los nmeros del 1 al 10 #include <iostream.h> void main () { int num = 0; do { num ++; cout << num << endl; } while (num < 10); }
Departamento de Computacin. Ctedra de Programacin. Programacin 1.
Marzo 2004
Ejercicio 1
Dados n nmeros enteros que se introducirn por teclado, calcular la suma de los nmeros pares, cuntos nmeros pares fueron introducidos y la media aritmtica de los nmeros impares dados. Anlisis E-P-S
Entrada: n nmeros enteros, n . Proceso: Para
- determinar si es par (nmero mod 2 = 0) - Si es par, se incrementa un contador de pares (CP) y se acumula su valor en el acumulador de pares (AP). - Si es impar, se incrementa un contador de impares (CI) y se acumula su valor en el acumulador de impares (AI).
Marzo 2004
Marzo 2004
Marzo 2004
Marzo 2004
else }
} while ( cn <= n); if(ci > 0 ) { mi = float(ci) / float(ai); cout << Total de pares= << cp << suma de pares= << ap << media de impares= << mi << endl; else cout << Total de pares= << cp << suma de pares= << ap << No hubo impares\n; cout << No hay valores\n;
Marzo 2004
Ejercicio 2
Calcular independientemente la suma de los nmeros pares e impares comprendidos entre 1 y n Anlisis E-P-S
Entrada: Valor de n . Proceso: Para todos los nmeros comprendidos entre 1 y n: Si nmero es par sp = sp + nmero Si nmero es impar si = si + nmero Salida: Suma de los nmeros pares (sp ) y suma de los nmeros impares (si ).
Marzo 2004 Departamento de Computacin. Ctedra de Programacin. Programacin 1.
2 3
4 5 1 2
hacer Escribir Introduzca el valor de n 1 Leer n mientras ( n < 1) num = 0, sp = 0, si = 0 hacer num = num + 1 si (num mod 2 = 0 ) entonces sp = sp + num sino si = si + num fsi mientras( num n ) Escribir Suma de pares entre 1 y , n, es , sp Escribir Suma de impares es , si n = 1 -> n = 1, sp = 0, si = 1 n = 6 -> n = 6, sp = 12, si = 9
Departamento de Computacin. Ctedra de Programacin. Programacin 1.
Marzo 2004
Repita hasta
Diagrama de flujo
Acciones S1 Sn
Pseudocdigo en espaol
Repita S1 . Sn Hasta (<condicin>)
Cdigo en C++
falso condicin cierto
Departamento de Computacin. Ctedra de Programacin. Programacin 1.
no existe
Marzo 2004
Repita hasta
La estructura Repita Hasta es una sentencia de repeticion que evala la condicin al final del lazo. Las sentencias (una o ms) del cuerpo del lazo se ejecutan hasta que la condicin (expresin lgica) es cierta. Las sentencias se ejecutan repetidas veces mientras que la condicin es falsa... la repeticin se termina cuando la condicin se hace verdadera. Como se pregunta al final por la condicin, el lazo se ejecuta una o ms veces. Si la condicin nunca se hace cierta, el programa entra en un lazo infinito, es decir, las sentencias del cuerpo del lazo se ejecutarn indefinidamente.
Marzo 2004 Departamento de Computacin. Ctedra de Programacin. Programacin 1.
Repita hasta
Las variables que intervienen en la condicin pueden INICIARSE antes de la primera ejecucin del lazo o durante sta, ya que la evaluacin de la condicin se hace al final de la estructura.
Marzo 2004
Hay que estar pendientes de MODIFICAR dentro del cuerpo del lazo los valores de las variables que intervienen en la condicin, para garantizar que en algn momento sta se haga falsa y el lazo pueda terminar su ejecucin y as garantizar que el lazo no es infinito.
Repita hasta
Pseudocdigo en Espaol suma=0.0 Leer x repita suma = suma + x leer x hasta( x 0.0) Cdigo en C/C++
Resaltar la equivalencia con el hacer mientras de C/C++
Marzo 2004
C/C++
promedioDeNotas
Marzo 2004
Marzo 2004
Ejercicios propuestos
Para cada uno de los siguientes problemas realizar el anlisis EP-S, algoritmo y codificacin. 1. Calcular la suma 1+2+3+ ... + n, donde n es un valor dado. Validar que n > 1. 2. Para el siguiente par de funciones, encontrar el valor de N tal que f(N) < g(N) y N 0.
f(N) = 20 N2 + 100, g(N) = N3 + 2N + 17
3. Dado el balance de su cuenta bancaria del mes anterior y todas las transacciones (retiro/depsito, monto) realizadas durante el presente mes, calcular el balance actual.
Marzo 2004 Departamento de Computacin. Ctedra de Programacin. Programacin 1.
Ejercicios propuestos
4. El 1 de Enero de 1999, el tanque de agua Tulio Febres Cordero contena 10.000 litros de agua. La zona a la cual suministra agua este tanque us 183 litros de agua semanalmente y el tanque no recibi agua en ningn momento. Calcular la cantidad de agua que qued en el tanque al final de cada semana hasta que no haba en el tanque suficiente agua para suplir la zona. 5. Calcular la suma de los cuadrados de los cien primeros nmeros naturales.
Marzo 2004 Departamento de Computacin. Ctedra de Programacin. Programacin 1.
Ejercicios propuestos
6. Determinar en un conjunto de n nmeros naturales: Cuntos son menores que 15 ? Cuntos son mayores que 50 ? Cuntos estn en el rango entre 25 y 45 ?
Marzo 2004
Ejercicios propuestos
7. Determinar qu funcin realiza el siguiente programa:
bool accept; float x; float bajo, alto; do { cout << Introduzca un valor entre ( << bajo << y << alto << ) << endl; cin >> x; if (bajo <= x && x <= alto) accept = cierto; else accept = falso; } while (!accept);
Marzo 2004