prof. Nunzio Brugaletta | Programmazione e linguaggio C |
L’istruzione for viene utilizzata tradizionalmente per codificare cicli a contatore: istruzioni cicliche cioè che devono essere ripetute un numero definito di volte. Il formato del costrutto for è il seguente:
for(esp1; esp2; esp3) istruzione
Si faccia attenzione ai punti e virgola posti tra parentesi. Il ciclo inizia con l'esecuzione di esp1 (inizializzazione del ciclo) la quale non verrà più eseguita. Quindi viene esaminata esp2 (condizione di controllo del ciclo). Se esp2 risulta vera, viene eseguita istruzione, altrimenti il ciclo non viene percorso neppure una volta. Successivamente, alla esecuzione delle istruzioni contenute nel ciclo, viene eseguita esp3 (aggiornamento) e di nuovo valutata esp2 che se risulta essere vera dà luogo ad una nuova esecuzione delle istruzioni contenute nel ciclo. Il processo si ripete finché esp2 risulta essere falsa.
Se supponiamo di voler ottenere la somma di tre numeri interi immessi dall'utente, si può scrivere:
... somma = 0; for(i = 1; i <= 3; i++) { scanf("%d", &numero); somma += numero; }
Il programma per prima cosa assegna il valore 1 alla variabile i (la prima espressione del for), si controlla se il valore di i è non superiore a 3 (la seconda espressione) e poiché l’espressione risulta vera verranno eseguite le istruzioni inserite nel ciclo (l’input di numero e l’aggiornamento di somma). Terminate le istruzioni che compongono il ciclo si esegue l’aggiornamento di i così come risulta dalla terza espressione contenuta nel for, si ripete il controllo contenuto nella seconda espressione e si continua come prima finché il valore di i non rende falsa la condizione.
Questo modo di agire del ciclo for è quello comune a tutti i cicli di questo tipo messi a disposizione dai compilatori di diversi linguaggi di programmazione. Il linguaggio C mette a disposizione delle opzioni che espandono abbondantemente le potenzialità del for generalizzandolo in maniera tale da comprendere, per esempio, come caso particolare il ciclo while. Il frammento di programma per la somma di una serie di numeri positivi, scritto in precedenza, potrebbe, per esempio, essere riscritto:
... printf("\n Inserisci un intero positivo:"); scanf("%d", &numero); for(somma=0;numero;) { somma += numero; printf("\n Inserisci un intero positivo:"); scanf("%d", &numero); }
Il ciclo esegue l’azzeramento di somma (che verrà eseguito una sola volta) e subito dopo il controllo se il valore di numero è diverso da zero e, in questo caso, verranno eseguite le istruzioni del ciclo. Terminate le istruzioni, poiché manca la terza espressione del for, viene ripetuto il controllo su numero.
L’inizializzazione di somma avrebbe potuto essere svolta fuori dalla for: in tal caso sarebbe mancata anche la prima espressione.
Poiché, nel linguaggio C, ogni ciclo while può essere codificato utilizzando un ciclo for e viceversa, è bene tenere presente che la scelta del tipo di codifica da effettuare va sempre fatta in modo da ottenere la massima chiarezza e leggibilità del programma.
http://ennebi.solira.org | ennebi@solira.org |