Pattern di programmazione

Un pattern è un modo standard per risolvere un problema comuni. I principali pattern di programmazione con i cicli sono i seguenti:

    • Ciclo determinato (Si ripete qualcosa un numero conosciuto di volte)

    • Cicolo indeterminato (Si ripete qualcosa un numero di volte non conosciuto a priori)

    • Inserimento finché (ripeto qualcosa finché non si verifica una condizione)

    • Contatore (conto quante volte ripeto una cosa)

    • Sommatore (sommo una serie di valori)

Ciclo determinato (Si ripete qualcosa un numero conosciuto di volte)

Quando si deve ripetere qualcosa e si conosce il numero delle volte che questa cosa deve essere ripetuta in genere si utilizza il for.

// i è una variabile intera

for i:=1 to n do begin // da 1 a n significa ripeti n volte

// fai qualcosa

end;

Ciclo indeterminato (Non si conosce il numero delle volte che sarà eseguito)

Quando non si conosce il numero delle volte che qualcosa viene ripetuto si usa il ciclo while o il ciclo repeat until.

Se la condizione deve essere verificata prima di entrare nel ciclo uso while, altrimenti uso repeat until.

while (condizione) do begin

// qualcosa da ripetere

// modifica la condizione all'interno altrimenti va avanti all'infinito

end;

Esempio: Dividi un numero per 5 e stampalo finché è maggiore di 5

readln(num); // l'utente inserisce un num intero

while (num>5) do begin

num := num div 5;

end;

Inserimento finché

Il problema che questo pattern risolve è "Inserisci un valore finché non succede qualcosa" e si scrive così:

repeat

// quello che vuoi ripetere

until (condizione) // repeat resta nel ciclo finché la condizione è falsa

Esempio. Ripeti l'inserimento finché il numero non è positivo

repeat

readln(num); // num è una variabile di tipo intero

until (num>=0)

Contatore

Il pattern contatore viene utilizzato tutte le volte che si deve contare quante volte viene effettuata una certa operazione ed è del tipo:

contatore:=0; // uso una variabile intera come contatore e la inizializzo a zero

repeat

// fai qualcosa

until (condizione);

Esempio: L'utente deve inserire numeri finché non inserisce lo zero. Conta quante volte inserisce i numeri.

contatore:=0; // uso una variabile intera come contatore e la inizializzo a zero

repeat

readln(num);

contatore := contatore + 1; // Incremento il contatore di uno d ogni ciclo

until (num=0);

writeln('Hai inserto ', contatore, ' numeri');

Sommatore

Il pattern sommatore viene utilizzato per tutti i problemi del tipo "fare la somma di N numeri, somma i primi numeri naturali, ecc..."

somma := 0; // Serve sempre una variabile per la somma che viene messa a zero

while (condizione) do begin // un ciclo

// qualcosa da fare

somma := somma + (un valore);

end;

Esempio: L'utente inserisce 10 numeri e calcolane la somma

somma:=0; // Imposto la somma a zero

for i:=1 to 10 do begin

writeln('Inserisci il numero ', i);

readln(num); // L'utente inserisce un numero

somma := somma + num; // Aggiungo alla somma il numero inserito

end;