Questo ciclo chiamato ripetizione-finchè, iterazione precondizionale o più semplicemente while permette di ripetere un gruppo di istruzioni in base al valore che assume una certa condizione. La sua sintassi è la seguente:
while condizione do begin istruzione 1; istruzione 2; istruzione n end;
Mentre la condizione si mantiene vera viene eseguito il gruppo di istruzioni compreso tra begin e end indicato dopo il do.
Tra begin ed end vanno inserite delle istruzioni che modifichino in un qualche modo il valore di verità della condizione. Questo è molto importante perché altrimenti il ciclo si ripeterebbe all'infinito e il programma non riuscirebbe mai ad eseguire le istruzioni successive ad end.
Esempio. Programma che esegue la divisione fra due numeri interi attraverso le sottrazioni successive.
Il programma deve:
- chiedere all'utente due numeri interi;
- sottrarre al primo numero il secondo numero e controllare quando il primo numero diventa minore del secondo numero;
- registrare il numero di volte che si ripete il ciclo, tale numero sarà uguale al quoziente della divisione tra i due numeri
- comunicare il quoziente e il resto, dato dalla parte rimanente del primo numero a fine ciclo, all'utente
program Divisione; uses crt; var a, b, quo, res : integer; begin write('Inserisci il primo numero = '); readln(a); write('Inserisci il secondo numero = '); readln(b); while a >= b do begin a:=a-b; quo:=quo + 1 end; writeln; writeln('quoziente = ', quo); writeln('resto = ', res); readln; end.
Analizziamo ora il codice:
- dichiarazione del nome del programma;
- importazione della libreria crt all'interno del programma;
- dichiarazione delle variabili a, b, quo, res tutte di tipo di dato integer;
- inizio del programma;
- stampa sullo schermo della stringa Inserisci il primo numero;
- lettura del numero corrispondente al primo numero ed inserimento di tale valore nella variabile a;
- stampa sullo schermo della stringa Inserisci il secondo numero;
- lettura del numero corrispondente al secondo numero ed inserimento di tale valore nella variabile b;
- ciclo do: esegui mentre a >= b;
- inizio del ciclo;
- assegnazione alla variabile a del valore pari alla differenza fra le variabili a e b;
- incremento del valore della variabile quo di un'unità (contatore del ciclo);
- fine del ciclo;
- linea vuota;
- stampa sullo schermo della stringa quoziente = seguita dal valore della variabile quo;
- stampa sullo schermo della stinga resto = seguita dal valore della variabile res;
- lettura dell'output da parte dell'utente;
- fine del programma;