prof. Nunzio Brugaletta | Programmazione e linguaggio C |
Gli algoritmi, a causa della loro generalità, lavorano utilizzando variabili. Non si conoscono, al momento della stesura dell’algoritmo stesso, i valori che possono assumere le variabili. Ciò se permette di scrivere algoritmi generali può comportare problemi per alcune istruzioni: si pensi al problema apparentemente banale del calcolo del quoziente di due numeri:
Ricevi DIVIDENDO Ricevi DIVISORE Assegna a QUOZIENTE valore DIVIDENDO/DIVISORE Comunica QUOZIENTE
Il quoziente può essere calcolato se DIVISORE contiene un valore diverso da 0, evento questo non noto in questo momento dipendendo tale valore dal numero proveniente da input. Inoltre è chiaro che, in questa eventualità, sarebbe priva di senso anche l’istruzione di output del valore di QUOZIENTE non essendoci nella variabile alcun valore.
È necessario introdurre, oltre alle istruzioni, degli strumenti che permettano di controllare l’esecuzione dell’algoritmo: le strutture di controllo. La programmazione strutturata (disciplina nata alla fine degli anni '60 per stabilire le regole per la scrittura di buoni algoritmi) impone l’uso di tre sole regole di composizione degli algoritmi:
la sequenza: È l’unica struttura di composizione che si è utilizzata finora. In poche parole questa struttura permette di specificare l’ordine con cui le istruzioni si susseguono: ogni istruzione produce un risultato perché inserita in un contesto che è quello determinato dalle istruzioni che la precedono. Nell’esempio di prima il calcolo di QUOZIENTE, per poter contenere il valore atteso, deve essere eseguito dopo gli input.
la selezione: Questa struttura permette di scegliere tra due alternative la sequenza di esecuzione. È la struttura che ci permette, per esempio, di risolvere in modo completo il problema del calcolo del quoziente fra due numeri:
Ricevi DIVIDENDO
Ricevi DIVISORE
Se DIVISORE ¹ 0
Assegna a QUOZIENTE valore DIVIDENDO/DIVISORE
Comunica QUOZIENTE
Altrimenti
Comunica ‘Operazione senza senso’
Fine-se
La condizione espressa nella struttura Se permette di scegliere, in relazione al valore di verità o falsità, quale elaborazione svolgere. La sequenza contenuta nella parte Altrimenti potrebbe mancare se si volesse soltanto un risultato laddove possibile: in tale caso se la condizione DIVISORE ¹ 0 risultasse non verificata, non si effettuerebbe alcuna elaborazione.
l'iterazione: La struttura iterativa permette di ripetere più volte la stessa sequenza di istruzioni finché non si verifica una determinata condizione. Si voglia, a titolo di esempio, scrivere un algoritmo che calcoli e visualizzi i quadrati di una serie di numeri positivi. Si tratta in altri termini di effettuare la stessa elaborazione (calcolo e visualizzazione del quadrato di un numero) effettuata su numeri diversi (quelli che arriveranno dall’input):
Ricevi NUMERO
Mentre NUMERO > 0
Assegna a QUADRATO valore NUMERO*NUMERO
Comunica QUADRATO
Ricevi NUMERO
Fine-mentre
Dentro la struttura iterativa (la parte compresa fra le parole Mentre e Fine-mentre) sono specificate le istruzioni per il calcolo del quadrato di un numero: l’iterazione permette di ripetere tale calcolo per tutti i numeri che verranno acquisiti tramite l’istruzione di input inserita nell’iterazione stessa. La condizione NUMERO>0 viene chiamata condizione di controllo del ciclo e specifica quando deve terminare l’elaborazione (il valore introdotto da input è non positivo): si ricorda che l’algoritmo deve essere finito e non si può iterare all’infinito. Il primo input fuori ciclo ha lo scopo di permettere l’impostazione della condizione di controllo sul ciclo stesso e stabilire, quindi, quando terminare le iterazioni.
In generale si può dire che la struttura di una elaborazione ciclica, controllata dal verificarsi di una condizione, assume il seguente aspetto:
Considera primo elemento Mentre elementi non finiti Elabora elemento Considera prossimo elemento Fine mentre
Le strutture di controllo devono essere pensate come schemi di composizione: una sequenza può contenere una iterazione che, a sua volta, contiene una selezione ecc.. Rappresentano in pratica i mattoncini elementari di una scatola di montaggio le cui diverse combinazioni permettono la costruzione di architetture di varia complessità.
http://ennebi.solira.org | ennebi@solira.org |