dijous, 14 d’abril del 2011

instruccions estructura iterativa

estructura iterativa

Guia per fer els exercicis: des de | repeteix | mentre

introducció

En aquesta pràctica presenten els diferents tipus de bucles amb que conta Pascal, d'una banda un bucle amb comptador (FOR) i per l'altre dos bucle amb sentinella (REPEAT...UNTIL i WHILE).

La diferència entre les estructures de control iteratives i les selectives és que mentre aquestes fan que unes sentències s'executin i unes altres no, les iteratives fan que cert grup de sentències s'executin diverses vegades, sense haver d'escriure-les més que una vegada en el programa.

exercicis

3.1 Fer un programa que demani nombres a l'usuari fins que la suma dels mateixos sigui major que 1000.

3.2 Fer un programa que demani 10 nombres a l'usuari i a continuació li indiqui quant val la mitjana dels mateixos.

3.2 Fer un programa que demani nombres a l'usuari fins que el producte dels mateixos sigui major que 1000 i menor que 2000.

Bucle For...

El bucle FOR... s'ha d'usar quan les sentències que ho componen es van a repetir un nombre exacte de vegades, és a dir, la condició perquè se surti és que s'hagi executat el bucle un nombre determinat de vegades. La sintaxi per a aquest bucle és:

FOR valor inicial TO valor final i FOR valor inicial DOWNTO valor final

exemple 3.1 calcula el factorial del número 6

writeln('factorial del número 6')
FOR i := 1 TO 6 DO
fact:=fact*i
write(fact) ;

Observeu com que el valor inicial del for és inferior que el valor final s'utilitza el TO


El següent exemple escriu els numeros del 100 al 1, en aquest cas s'utilitza el DOWNTO ja qeu el valor inicial és major que el final.

exemple 3.2

FOR i :=100 DOWNTO 1 DO
write(i', ,)

repeat...until

Aquest segon tipus de bucle es caracteritza perquè les sentències que formen el cos del bucle s'executen almenys una vegada, i se segueixen executant mentre certa condició sigui veritable. Heus aquí la sintaxi:

REPEAT

Sentencias

UNTIL ( condicion )

exemple 3.3

Un exemple característic on s'usa REPEAT ... UNTIL... és el dels filtres per a les entrades. En el següent exemple es demana a l'usuari que digui S o N, i mentre digui altra cosa no se li deixa seguir:

REPEAT

write('entra una S per continuar o una N per finalitzar');
n:=readkey;

UNTIL (n='S') or( n='N') ;

exemple 3.4; un altre filtre per núm. positius

REPEAT

WRITE('Escriu un número positiu' ) ; readln(numero);

UNTIL ( numero > 0 );


Bucle while

Igual que l'anterior, aquest és un bucle dels denominats controlats per sentinella ja que hi ha una condició que és la qual a cada moment determina si es torna a executar el bucle o si se segueix amb les instruccions que hi ha després d'ell. Aquest bucle s'ha d'usar quan no sapiguem el nombre de vegades que es va a iterar el mateix. És a dir, serveix per a un nombre d'iteracions qualsevol.. La seva sintaxi és la qual segueix:

exemple 3.5

{ Llegim dades i les processem fins que s'introdueixi un zero. }
WHILE x<>0 DO
BEGIN

WRITE('Introdueix una dada (0 per acabar) : ');
READLN(x);
sumatori := sumatori + x;

END;


Cap comentari:

Publica un comentari a l'entrada