domenica 4 dicembre 2011

Quarta Lezione

Il secondo modo di realizzare un ciclo è la While, do.
Questo metodo è leggermente più elaborato del primo, ed è decisamente poco usato, ma vi potrà essere molto utile. Iniziamo subito con la stesura del programma:


Program Somma_tre;
Var
k : integer;
a,tot : integer;
Begin
k:=1;
a:=0;
tot:=0;
While k <=3 do
Begin
Write ('Digita un numero: ');
Readln (a);
tot:=(tot+a);
k:= (k+1);
End;
Writeln ('La somma dei numeri corrisponde a: ',tot,'');
Readln;
End.


Analizziamo subito il programma. Per molti aspetti non si discosta molto dal primo. Le uniche sostanziali variazioni sono la sostituzione del for,to,do al While, do e abbiamo anche specificato che all'inizio la variabile "k" assume il valore di 1. Oltre a questo, nell'algoritmo che sarà ripetuto ciclicamente (quello tra il secondo Begin e il primo End;) ogni volta che abbiamo una ripetizione, "k" incrementa il suo valore di 1 (ed è proprio per questo che quando k diventa uguale a 4 il ciclo si interrompe, perché non rispetta più il valore k<=3).
Il valore nella While, do sta a dire proprio "Finché k è minore o uguale a 3 allora ripeti l'operazione".
Al terzo inserimento, "k" raggiungerà il valore 4, chiudendo così il ciclo.
Ecco come funziona:




Il procedimento è uguale a quello della terza lezione, solo che questa volta imponiamo che finché k è minore o uguale a 3 il ciclo si ripeterà. Ebbene, a ogni fine istruzione "k" diventa "k"+1, cioè incrementa il suo valore di 1. Basteranno 3 ripetizioni per raggiungere il valore 4 e uscire dal ciclo.

Detto questo, ora sei in grado di risolvere un'esercizio con un ciclo a tua scelta tra il For,to,do e il While,do:
Esercizio n° 2.
>Crea un programma che moltiplichi 9 numeri. (Prova a farlo con tutti e due i metodi).

L'operazione While,do non si limita soltanto a eseguire delle ripetizioni numerate, ma permette anche di creare un programma in grado di scrivere quanti numeri si vuole per poi eseguire con questi una determinata operazione. Vediamo l'esempio:


Program Somma_n;
Var
a,tot : integer;
Begin
a:=1;
tot:=0;
While a<>0 do
Begin
Write ('Digita numero [0 per terminare]: ');
Readln (a);
tot:=(tot+a);
End;
Writeln ('Il totale corrisponde a: ',tot,'');
Readln;
End.


La While recita proprio <Finché "a" è diversa da 0, allora ripeti il ciclo>
Quando si inserisce 0 nella variabile "a" il ciclo termina e il programma da il risultato dei numeri inseriti:

Sono stati inseriti dei numeri nel programma, e se il valore non è zero, il ciclo continua all'infinito. Quando si vuole terminare il calcolo, non si fa altro che digitare 0 come valore.

Un' altra variante di questo esercizio, ovvero di creare un programma in grado di fare operazioni similari con un certo numero di numeri (scusate il gioco di parole) è questo:


Program Somma_numeri;
Var
k : integer;
x,tot : integer;
n : integer;
Begin
Writeln ('Benvenuto nel programma di somma, premi INVIO per continuare');
Readln;
Write ('Quanti numeri vuoi sommare?: ');
Readln (n);
k :=1;
x :=0;
while k <=n do
Begin
Write ('Digitare il valore ',k,': ');
Readln (x);
tot := tot+x;
k := k+1;
End;
Writeln ('La somma corrisponde a ',tot,'');
Write ('Premi INVIO per continuare');
Readln;
End.


Non sarà il programma che rivoluzionerà il mondo, ma ha la sua dose di buona interfaccia per una corretta comprensione dell'utente che lo usa. 
E' la stessa cosa del ciclo di While, solo che in questo caso è l'utente a decidere quanti numeri vuole sommare, grazie alla variante "n" che sostituisce il numero predefinito di ripetizioni.
Una volta superato il numero "n" il ciclo terminerà lasciando il risultato. 
Per una migliore comprensione sono stati aggiunti anche dettagli sullo starter del programma, che si da con un semplice comando di INVIO e una fine correlata con il risultato che indica all'utente che per terminare la sessione deve premere INVIO.
Ecco come funziona il programma, ad esempio voglio sommare 5 numeri:
Bene, come avete notato, dopo "Digitare il valore" vi è il numero progressivo della variante "k" che incrementa di un numero ogni volta che si ripete l'operazione, ed è per questo che è ottima per farne derivare il numero dell'operazione. La ripetizione perpetua di "Digitare il valore" diventa "Digitare il valore 1", "Digitare il valore 2" e così via.
Fine della Quarta Lezione.

Nessun commento:

Posta un commento

Per inserire un commento devi essere registrato. I commenti sono messi a disposizione degli utenti per realizzare domande sull'argomento. Una volta inoltrato il commento l'amministratore provvederà a rispondere il prima possibile.