Вы находитесь на странице: 1из 14

CICLO WHILE

CICLO WHILE: Si se desea que las sentencias o instrucciones se ejecuten hasta que ocurra una determinada situacin y no se conoce de antemano el nmero de repeticiones (no se lee del teclado), entonces debemos utilizar la instruccin WHILE O REPEAT.

Clase 23 Abril 2012

El computador examina primero la condicin:


Si sta se cumple: realiza todas las instrucciones que estn dentro del ciclo: Instruccin1 y instruccin2; stas se repetirn hasta que la condicin sea falsa. Entonces se sale del ciclo y contina ejecutando las instrucciones que hay fuera de l, instruccin3. Si No se cumple: no entrar en el ciclo y ejecutar las instrucciones que estn fuera de l, instruccin 3.

Clase 23 Abril 2012

Sintaxis de uso
WHILE (condicin) do begin Instruccin 1; Instruccin 2; End; Instruccin 3; EJEMPLO: Readln(n); While (n>0 and p) do Begin s:=s+n/2 if ( n mod 2=0) then p:=false End;

La condicin del ciclo no tiene por qu ser nica; puede haber ms de una, siempre y cuando estn unidas por los operadores lgicas OR, AND y NOT
Clase 23 Abril 2012 3

Ejemplo
1. Crea un programa que lea un nmero y decida si el nmero ingresado es positivo, negativo o cero. Repita este proceso consultando al usuario cuando desea finalizar.

Clase 23 Abril 2012

program leer_numeros; (* estr programa lee un nmeros y decide si este este positivo.negativo o cero repite el proceso hasta que el usuario decida finalizar*) uses crt; // type var x:integer; op:string; oop:boolean; begin oop:=true; while( oop) do begin write(' Ingrese un nmero '); readln(x); if ( x>0)then writeln(x, ' es positivo ') else if(x=0) then writeln(x , ' es cero ') else writeln( x ,' es negativo '); write( 'Desea continuar si/no ') ; readln(op); if( upcase(op)='SI') then oop:=true else oop:=false end; end.

Programa hecho en DEVPASCAL

Clase 23 Abril 2012

CICLO FOR- WHILE


Todo ciclo FOR puede implementarse con un ciclo WHILE n:=random(15)+1; FOR i:=1 to n do begin write(i); s:=s+i; End; n:=random(15)+1; i:=1; WHILE (i<=n) do begin write(i); s:=s+i; i:=i+1; End;
Clase 23 Abril 2012 6

NO todo ciclo WHILE puede implementarse con ciclo FOR


EJEMPLO t:=true; while t do begin write(Ingrese un valor); readln(x); if x <0 then t:=false end;

Clase 23 Abril 2012

Ciclo REPEAT
A diferencia del ciclo while, el ciclo repeat-until ejecuta al menos una vez las sentencias definidas en el cuerpo del ciclo, pues la verificacin para continuar o no en el ciclo se realiza al final, como puede apreciarse en la sintaxis: Ejemplo: Qu realiza este S:=1; cdigo en repeat Repeat DEVPascal sentencias... Read(x) Cundo finaliza until ( condicion_de_fin ) S:=s*x este ciclo repeat? Until (s=0) El ciclo repeat finaliza cuando la condicin es VERDADERA
Clase 23 Abril 2012

Cree un programa que:


Sume n-trminos de estas series, el programa debe imprimir cada trmino de la serie y la suma total de los trminos.

3 5 7 9 Sn 5 1 ... 2 4 6 8 3 5 7 9 Sn6 1 ........ 2 4 6 8


Modifique el programa de modo de utilizar un ciclo while y repeat.
Clase 23 Abril 2012 9

Cambiemos el problema
Cuntos trminos son necesarios para que la sumatoria no sobrepase.

3 5 7 9 Sn 5 1 ... 2 4 6 8 3 5 7 9 Sn6 1 ........ 2 4 6 8


No es posible implementarse con ciclo FOR
Clase 23 Abril 2012 10

Ciclo while y for anidado


WHILE (condicin) begin while (condicin) begin Instruccin 1; Instruccin 2; end; End; Instruccin 3; For i:=1 to n do begin for j:=1 t m do begin Instruccin 1; Instruccin 2; end; End; Instruccin 3;

Cunta veces se repiten las instruciones1 y 2?

Clase 23 Abril 2012

11

Ejemplo
Cree un programa que encuentre todos los nmeros primos entre 3 y un n n generado por random Ejemplo: N=6 El programa debera probar para i=3 si es primo i=4 si es primo i=5 si es primo i=6 si es primo Recordar que el algoritmo para verificar si un nmero es primo, es obtener los divisores ,contarlos y finalmente verificar (comparacin) si son 2 los divisores
Clase 23 Abril 2012 12

Para ello se debe: 1. Generar un nmero mayor que 3 2. Implementar dos ciclos for anidados: I. El primero debe indicar los n desde el 3 hasta el n generado. II. El segundo debe probar los divisores desde el 3 hasta el nmero-1.

Clase 23 Abril 2012

13

program n_primo; // Este programa verifica todos los primos desde el 3 hasta un numero generadopor random //utiliza variable lgica uses crt; // const //type var i,j, X:integer; primo:boolean; begin (*principal*) randomize; x:=random(10)+3; write(' El nmero gerenado es :=',x); writeln; for i:=3 to x do begin primo:=false; for j:=2 to i-1 do if( i mod j = 0) then primo:= true; //variable lgica cambia de valor a verdadero // Pregunta si la variable lgica es true o false if primo then writeln(i , ' No es primo') else writeln(i , ' Es primo '); end; // cierra for i readkey; end.

Programa hecho en DEV_pascal

Clase 23 Abril 2012

14

Вам также может понравиться