Está en la página 1de 21

Fundamentos de Programación

Sesión 06

Pedro Pablo Rosales López, Mg. Ing.


¿Qué observas?
Contenido 6/14
 Estructuras Lógicas de Control Repetitiva mientras.
 Estructura While.
 Estructura Do While.

 Práctica Dirigida.

Unidad 2 - Resultado Específico


Diseña algoritmos para resolver problemas utilizando estructuras lógicas, la
estructura de datos variable y funciones predefinidas en el lenguaje de
programación, con base en los estándares de programación modular.
Fundamentos de Programación

ESTRUCTURA WHILE
Estructura Repetitiva: While
 La sentencia while es otro ciclo o
bucle disponible en C.
 Su formato es:
while ( expresion)
sentencia;
 Donde sentencia puede ser una
sentencia vacía, una sentencia única No
o un bloque de sentencias que se ¿Expresión?
repetirán.
 Cuando el flujo del programa llega a
esta instrucción, primero se revisa si Sí
la condición es verdad para ejecutar
la(s) sentencia(s), y después el ciclo
while se repetirá mientras la
condición sea verdadera.
 Cuando llega a ser falsa, el control
del programa pasa a la línea que
sigue al ciclo.
Representación : While

Diagrama de Flujo Diagrama N-S

Pseudocódigo
mientras <expresión lógica> hacer
acción
fin_mientras
Ejemplo 1 : While
 En el siguiente ejemplo se muestra  Antes de entrar al ciclo se inicializa
una rutina de entrada desde el la variable carac igualando a X.
teclado, la cual se repite en forma  Después pasa a la sentencia while
ciclica mientras no se pulse la letra donde se comprueba si carac no es
A igual a 'A', como sea verdad
entonces se ejecuta la sentencia del
#include <iostream> ciclo (carac = getchar();).
 La función getchar() lee el siguiente
using namespace std; carácter del flujo estándar (teclado)
y lo devuelve, que en nuestro
main() ejemplo es el caracter que haya
sido tecleado.
{  Una vez que se ha pulsado una
char carac; tecla, se asigna a carac
 Se comprueba la condición
carac = 'X'; nuevamente.
while ( carac != 'A' )  Después de pulsar A, la condición
llega a ser falsa porque carac es
carac = getchar(); igual a A, con lo que el ciclo
termina.
}  Nota: El ciclo while comprueba la
condición al principio del ciclo,
por lo que el código dentro del
ciclo no se ejecuta siempre, sólo
cuando la condición se cumple.
Ejemplo 2 : While
 A continuación mostramos  Que genera la siguiente
otro ejemplo: salida en pantalla:
 x=3
#include <iostream>  x=2
using namespace std;  x=1
 Como se observa, dentro
main() del ciclo tenemos más de
{ una sentencia.
int x;  Por lo que se requiere usar
x = 5; la llave abierta y la llave
cerrada { ... }
while ( x>0 )  Para que el grupo de
{ sentencias sean tratadas
cout<<x<<endl; como una unidad.
x--;
}
cout<<endl;
system("PAUSE");
}
Ejemplo 3 : While
 Como el ciclo while pueda aceptar  Por ejemplo:
también expresiones, y no
solamente condiciones lo siguiente #include <iostream>
es válido: using namespace std;
main()
 while ( x-- ); {
 while ( x = x + 1 ); char carac;
 while ( x += 5 ); carac = 'X';
while ( carac = getchar() != 'A' )
 Si se usan este tipo de expresiones, cout<<“Letra "<<carac<<endl;
solamente cuando el resultado de x- system("PAUSE");
-, x=x+1 o x+=5 sea cero, la }
condición fallará y se podrá salir del
ciclo.
 En este ejemplo se usan las
funciones de la biblioteca estándar
 De acuerdo a lo anterior, podemos getchar(), que lee un caracter del
realizar una operación completa teclado
dentro de la expresión.
 Luego se escribe un caracter dado
en pantalla.
 El ciclo while procederá a leer del
teclado y lo mostrará hasta que el
caracter A sea leído.
Fundamentos de Programación

ESTRUCTURAS DO WHILE
Estructura Repetitiva: Do …While
 Al contrario del ciclo while que
comprueba la condición al inicio del
bucle, el bucle do ... while la examina
en la parte baja del mismo.

 Esta característica provoca que un


ciclo do ... while siempre se ejecute
al menos una vez.

 La forma general del ciclo es:


do {
sentencia;
} while (condición); Si No
¿Expresión?

 Aunque no son necesarias las llaves


cuando sólo está presente una
sentencia, se usan normalmente por
legibilidad y para evitar confusión
(respecto al lector, y no del
compilador) con la sentencia while.
Representación : Do … While

Diagrama de Flujo Diagrama N-S

No

Si

Pseudocódigo
Hacer
acción
Mientras <expresión lógica>
Ejemplo 4 : Do …While

 En el siguiente programa se usa un ciclo do ... while


para leer números desde el teclado hasta que uno
de ellos sea menor que o igual a 10.

#include <iostream>
using namespace std;
main()
{
int num;
do {
cin>>num;
} while (num>10);
}
Ejemplo 5 : Do …While
 Otro uso común de la estructura #include <iostream>
do ... while es una rutina de using namespace std;
selección en un menú, ya que main()
siempre se requiere que se
ejecute al menos una vez. {
int opc;
cout<<"1. Derivadas"<<endl;
cout<<"2. Limites"<<endl;
cout<<"3. Integrales"<<endl;
do {
cout<<"Selecciona una opcion: ";
cin>>opc;
cout<<endl;
switch(opc)
{ case 1 : cout<< "Opcion 1 seleccionada"<<endl;
break;
case 2 : cout<< "Opcion 2 seleccionada"<<endl;
break;
case 3 : cout<< "Opcion 3 seleccionada"<<endl;
break;
default: cout<<"Opcion no disponible"<<endl;
break;
}
} while( opc!=1 && opc!=2 && opc!=3);
system("PAUSE");
}
Ejemplo 6 : Do …While
 Se muestra un ejemplo ya visto, pero ahora utilizando do ...
While.
 Escribir la secuencia de 1 a 5.

#include <iostream>
using namespace std;
main()
{
int x;
x = 1;
do {
cout<<x<<endl;
x++;
} while ( x<=5 );
cout<<endl;
system("PAUSE");
}
Seguimiento de un programa en seudo-código 1
Int i, j, pot, suma, n n i j pot suma
Imprimir “Ingrese N”
Leer n
Repetir (i=1; i<=n; i=i+1)
Pot=1
Repetir (j=1; j<=i && !(i%2); j=j+1)
Pot=pot*i
Fin_Repetir
Si (i%2==0)
Suma=suma+pot
Fin_si
Fin_repetir

 Ingrese el valor 5.
 Cuál es el resultado.
 Utilices while
Seguimiento de un programa en seudo-código 2
Int i, j, stop, suma, n n i j pot suma
Imprimir “Ingrese N”
Leer n
Repetir (i=1; i<=n && stop!=0; i=i+1)
Repetir (j=1; j<=i && stop!=0 ; j=j*2)
Si (j==(n/2))
Stop=0
Si_no
suma=suma+i+j*2
Fin_Si
Fin_repetir
Fin_repetir
Imprimir “El resultado es:”, suma

 Ingrese el valor 5.
 Cuál es el resultado.
 Utilice Do…while.
Transformar este diagrama de flujo a seudo-código
Inicio

 Transformar este N, i, suma=0, valor

diagrama de flujo Ingrese

a seudo-código. un
número
N
 Utilice Do - While
V
N<1

“ERRO
F R”

i=1

i<=N V

valor=i*i
F
suma=suma+valor

i=i+1

suma

Fin
Ejercicio

 Crear un algoritmo que lea números y se detenga


cuando el usuario ingresa el valor 10.
 Se pide:
 Contar los números pares.
 Obtener el número mayor.
 Obtener el número menor.
Para terminar
 ¿Qué hemos aprendido?
 ¿Cuál es la diferencia entre While y Do While?
 ¿Por qué es útil lo aprendido?

 Resolver los ejercicios de la Hoja de Problemas….


La soberbia no es grandeza sino
hinchazón ; y lo que está hinchado
parece grande pero no está sano.

San Agustín

También podría gustarte