MSX Turbo Pascal Rubrica a cura di Stefano Roperto (parte 5)
Lezione 5
Cicli e istruzioni di controllo
In turbo Pascal sono presenti le consuete strutture iterative presenti in tutti i linguaggi di alto livello il ciclo FOR DO e le strutture REPEAT UNTIL e WHILE DO. Vediamoli nel dettaglio e commentiamoli.
Ciclo FOR:
Program cicloFor;
var i:integer;
begin
FOR i:=0 to 10 DO
writeln(i);
end;
….
….
End.
Il ciclo FOR non presenta molte differenze, se non nella sintassi, rispetto al basic MSX ed è un ciclo che si utilizza quando è necessario ripetere una serie di istruzioni un numero noto di volte
Ciclo REPEAT
Program cicloRepeat;
var i,j,k:integer;
begin
j:=100;
k:=0
REPEAT
i:=i+k*2;
k:=k+1;
writeln(i);
UNTIL (k=j);
end;
…
…
End;
Il ciclo REPEAT è una struttura iterativa che permette di eseguire una serie di istruzioni fino a che (UNTIL) non si verifica una determinata condizione, quindi non si conosce a priori quante volte le istruzioni saranno eseguite.
Ciclo WHILE
Program cicloWhile;
var i,j,k:integer;
begin
j:=100;
k:=0
WHILE (k=j) DO
Begin
i:=i+k*2;
k:=k+1;
writeln(i);
end;il ciclo
…
…
End.
Il ciclo WHILE è simile al ciclo REPEAT, ma in questo caso le istruzioni del ciclo sono eseguite mentre (WHILE) la condizione è verificata e anche in questo caso non si conosce a priori il numero di iterazioni.
Come si vede apparentemente non vi sono differenze tra la struttura REPEAT e la struttura WHILE, ma in realtà vi è una differenza fondamentale che determina quando utilizzare una o l’altra struttura. Nel ciclo REPEAT le istruzioni nel ciclo sono eseguite almeno una volta, infatti l’istruzione di controllo è alla fine del ciclo, mentre in linea di principio le istruzioni nel ciclo WHILE potrebbero non essere eseguite mai in quanto l’istruzione di controllo è all’inizio del ciclo e, ovviamente questo fa la differenza nella scelta della struttura da utilizzare in accordo col proprio algoritmo.
Per quanto riguarda le istruzioni di controllo turbo pascal mette a disposizione l’istruzione IF – THEN – ELSE e l’istruzione CASE OF. Vediamo anche qui un apio di esempi:
Istruzione IF
program istruzioneIf;
var i: integer;
begin
readln(i);
IF (i=1 )THEN
istruzioni;
ELSE
istruzioni;
end;
…
…
End.
Consideriamo un altro esempio un po’ più complesso :
Istruzione IF (versione 2)
program istruzioneIf;
var i: integer;
begin
readln(i);
IF (i=1) THEN
istruzioni;
IF (i= 2) THEN
istruzioni;
IF (i= 3) THEN
istruzioni;
ELSE
Istruzioni;
end;
…
…
End.
Qui abbiamo un controllo complesso che sebbene sia corretto da un punto di vista sintattico risulta poco pratico da un punto di vista pratico. Per ovviare a problemi come questo turbo pascal fornisce l’istruzione di controllo CASE OF:
istruzione CASE OF
program istruzioneCase;
var i: integer;
begin
readln(i);
CASE i OF
1: istruzioni1;
2: begin
Istruzioni2;
istruzioni2;
istruzioni2;
end;
3:istruzioni3;
ELSE begin
Istruzioni_else;
end;
end;
…
…
End.
L’istruzione CASE quindi fornisce una certa flessibilità alle strutture di controllo e permette di risolvere in maniera elegante situazioni in cui è necessario controllare molti valori diversi della stessa variabile. Come vediamo turbo Pascal, mette a disposizione del programmatore strutture iterative e di controllo complete ed efficienti.



0 commenti