Ciclo for

Da Wikipedia, l'enciclopedia libera.

Nei linguaggi di programmazione o di scripting, il ciclo for è una struttura di controllo iterativa che determina l'esecuzione di una porzione di programma ripetuta per un certo numero di volte. Si distingue in questo modo da determinata condizione. La scelta fra questi due tipi di ciclo è legata a considerazioni di leggibilità e chiarezza del codice; in linea di principio, infatti, qualunque algoritmo che impieghi un ciclo for può essere trascritto in una forma che usa solo il ciclo while, e viceversa.

Quasi tutti i linguaggi di programmazione hanno un ciclo for; un ciclo di questo genere è presente in praticamente tutti i linguaggi procedurali e a oggetti, e anche in linguaggi basati su altri paradigmi, come il linguaggio concorrente Occam. Pur con sintassi specifiche che variano da linguaggio a linguaggio, il ciclo for è in genere riconoscibile per un certo insieme di elementi tipici:

  • il ciclo è basato su una variabile contatore, in genere una variabile numerica intera, che viene incrementata a ogni iterazione;
  • il numero di iterazioni previsto per il ciclo è espresso indirettamente, specificando il valore iniziale della variabile contatore e il valore finale (cioè il valore raggiunto il quale il ciclo termina);
  • solitamente il contatore viene incrementato di 1 a ogni iterazione, ma è in genere possibile specificare un incremento diverso (detto step), eventualmente anche come numero negativo (nel qual caso è possibile impostare un ciclo in cui il valore iniziale del contatore è maggiore di quello finale, e il contatore conta dunque "a ritroso").

Un esempio in pseudocodice che rappresenta le caratteristiche generali del ciclo for (mutuato dalla sintassi del Basic) può essere il seguente, che stampa a video i numeri da 1 a 10. Può essere parafrasato in italiano come: per I che varia da 1 a 10, stampa I.

FOR I=1 TO 10
PRINT I

Indice

Esempi [modifica]

Python [modifica]

In Python la sintassi è la seguente:

for n in range(1, 100):
  print n

Con questo semplice esempio visualizzerete una lista di numeri da 1 a 99.

Pascal [modifica]

In Pascal sono previste due sintassi diverse per i cicli col contatore che viene incrementato o decrementato:

var i : integer;
for i := 1 to 10 do
  writeln(i);


var i : integer;
for i := 10 downto 1 do
  writeln(i);

Linguaggio C [modifica]

Il linguaggio C e i suoi derivati (inclusi per esempio C++ e Java) forniscono una versione generalizzata del ciclo for, che si può impiegare per descrivere cicli la cui terminazione non è basata semplicemente sul conteggio delle iterazioni eseguite attraverso un contatore. La sintassi generale del ciclo for in C è la seguente:

for(<inizializzazione>; <test>; <incremento>)
  <istruzione>;

dove <inizializzazione> è una qualsiasi espressione C (nella forma più semplice, l'assegnamento di un valore iniziale a un contatore); <test> è una condizione che dev'essere vera affinché il ciclo continui (nella forma più semplice, la condizione che il contatore non abbia raggiunto il suo valore finale); <incremento> è una istruzione che viene eseguita al termine di ogni iterazione (nella forma più semplice, l'incremento del contatore). Un esempio in cui il ciclo for viene impiegato in modo convenzionale è per esempio il seguente, che stampa a video i valori da 1 a 10:[1]

int i;
for(i = 1; i <= 10; i++)
  printf("%d", i);

Questo tipo di ciclo può essere usato per realizzare iterazioni di natura completamente diversa, poiché tutti e tre gli elementi descrittivi dell'iterazione (inizializzazione, test e incremento) possono essere espressi da frammenti di codice C qualsiasi; non è neanche obbligatorio che essi manipolino una variabile contatore.

Java [modifica]

In Java, la variabile contatore (o qualsiasi altra variabile impiegata nel ciclo) può essere dichiarata nella sezione di inizializzazione. L'equivalente Java dell'esempio C precedente potrebbe assumere la seguente forma:

for (int i = 1; i <= 10; i++)
    System.out.println(i);

A partire dalla versione 5 di Java è inoltre disponibile la versione detta "generalizzata" del costrutto:

int V[] = {1, 2, 3, 4, 5};
for (int i : V)
    System.out.println(i);

tale forma del costrutto è inoltre disponibile per qualunque classe implementi l'interfaccia Iterable:

ArrayList<Double> lista = new ArrayList<Double>();
for (Double a : lista)
    System.out.println(a);

in questo frammento di codice il ciclo assegna di volta in volta all'oggetto a il riferimento ad uno degli oggetti (della classe-contenitore Double) contenuti in lista istanza della classe ArrayList che implementa l'interfaccia Iterable.

Visual Basic/Visual Basic .NET [modifica]

For i = 1 To 10
  Console.WriteLine("La variabile di controllo vale " & i)
Next

Batch/DOS [modifica]

Dal DOS (o tramite script in batch) può essere spesso utile dover creare un ciclo come questo:

for %%v in (a,e,i,o,u) do (
echo %%v
)

Risultato: saranno visualizzate le vocali a,e,i,o,u.

for /f %%r in (File.txt) do (
echo %%r
)

Risultato: visualizzeremo ogni riga dal file indicato tra parentesi.


Note [modifica]

  1. ^ La variabile i indicata dev'essere stata dichiarata di un tipo intero, come riportato sulla prima riga; i++ è una sintassi tipica del C che incrementa la variabile indicata (equivalente a i=i+1).