Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Esistono diversi modi per scrivere e rappresentare un algoritmo, un metodo molto diffuso, è quello
che utilizza i diagrammi a blocchi anche chiamati flow chart o diagrammi di flusso.
La diagrammazione a blocchi è una rappresentazione grafica, di facile interpretazione per chiunque
ed è molto efficace perché permette di definire in maniera visuale la struttura di un algoritmo e i suoi
costrutti di programmazione.
Vengono utilizzati simboli grafici (chiamati blocchi) che contengono le istruzioni: esistono quattro tipi
di blocchi aventi forme geometriche diverse per distinguere le quattro tipologie possibili di operazioni.
Un diagramma di flusso che descrive un algoritmo viene disegnato usando esclusivamente questi solo
quattro simboli
. Le quattro tipologie di blocchi sono:
blocco di inizio/fine: è un blocco di forma ovale, cioè senza spigoli, che viene utilizzato solo
come primo e ultimo blocco del diagramma; al suo interno viene scritto "start" oppure "stop"; serve
per indicare il punto iniziale e finale dell'algoritmo.
blocco di elaborazione: è un blocco di forma rettangolare che viene usato per contenere istruzioni
che effettuano trasformazione di dati; operazioni aritmetiche, assegnazioni etc..
serve dunque all'esecuzione di calcoli e all'elaborazione.
blocco di decisionale (condizionale): è un blocco di forma romboidale, al suo interno vengono
effettuate operazioni di confronto (test) che si riassumono in domande che possono avere come
risultato esclusivamente due valori: true (T) oppure false (F) cioè vero oppure falso.
I blocchi vengono collegati tra di loro nei flow chart con delle linee terminanti con frecce (arco
orientato), in modo da indicarne il verso di percorrenza:
In ogni diagramma deve essere presente un solo blocco di inizio e, soprattutto, un solo blocco di
terminazione: anche se nel diagramma saranno presenti percorsi alternativi proprio in base ai risultati
della istruzione di decisione, tutti i percorsi alternativi devono ricongiungersi prima della fine del
diagramma.
COSTRUTTO IF
if(condizione){
istruzioni-a;
} else{
istruzioni-b;
}
Se la condizione assume valore logico vero sarà eseguito il blocco di istruzioni-a (o il blocco
di istruzioni corrispondenti all'if);
nel caso la condizione assume valore logico falso, se è presente il ramo else verrà eseguito il
blocco di istruzioni corrispondente (istruzioni-b).
Si deve osservare che l'esecuzione di una delle due parti esclude l'altra.
La clausola else è opzionale, in tal caso non esiste un eventuale ramo else da eseguire.
if(condizione){
istruzioni-a;
}
COSTRUTTO IF-ELSE-IF
E' un'istruzione comune nella programmazione ed è costituito da una serie di if-else-if riuniti a
formare una struttura a scala:
if(condizione-a){istruzioni-a;}
else if(condizione-b){istruzioni-b;}
else if(condizione-c){istruzioni-c;}
...
else {istruzioni-n;}
il calcolatore inizia la valutazione delle espressioni condizionali dall'alto verso il basso,
esegue la prima istruzione corrispondente al verificarsi di una condizione e abbandona la catena di if.
Se non si verifica nessuna condizione viene eseguito l'else finale che ha il significato concettuale di
condizione di default. Se non è presente l'else finale, qualora non si sia verificata nessuna delle
condizioni non viene intrapresa alcuna azione.
ESPRESSIONI CONDIZION ALI
Le espressioni condizionali possono essere facilmente formulate più genericamente con la sintassi
Nonostante if-else-if consenta di realizzare dei test multipli è da considerare una struttura poco
elegante e di difficile lettura.
L'istruzione ufficiale per eseguire un test multiplo è lo switch. In tal caso il valore di una variabile
viene confrontato con una lista di costanti che possono essere di di tipo intero o char, quando si
verifica l'uguaglianza si esegue il blocco di istruzioni corrispondenti. Sintassi:
switch(variabile){
case costante1:istruzioni-1;break;
case costante2:istruzioni-2; break;
...
case costante-n:istruzioni-n; break;
default:istruzioni;
}
Il ciclo for è un costrutto presente in tutti i linguaggi di programmazione procedurale. La sua forma
generale è la seguente:
Le considerazioni precedenti non implicano che un dato ciclo debba eseguire necessariamente le sue n
iterazioni previste, questo perchè l'istruzione break ne provoca la terminazione forzata
char ch;
for(int i=0;i<10;i++) {
cout<<"inserisci una lettera:";
cin>>ch;
if(ch=='Z') break;
}
il programma accetterà l'inserimento di 10 lettere da tastiera, ma non ci saranno necessariamente 10
iterazioni, infatti, se venisse inserita la lettera 'Z' il ciclo terminerebbe istantaneamente senza
necessariamente eseguire 10 acquisizioni.
CICLO WHILE
Un ciclo con ripetizione precondizionale prevede il controllo iniziale della condizione; esso si
rappresenta con l'istruzione while
while(condizione){
istruzioni;
}
do{
istruzioni;
}while(condizione);
la sequenza di istruzioni compresa tra il do e il while viene ripetuta tante volte mentre la condizione
scritta dopo il while si mantiene vera; in altre parole la ripetizione termina quando la condizione
diventa falsa.
A differenza dei cicli for e while che verificano la condizione all'inizio del ciclo, il do-while la verifica
alla fine, con la conseguenza che il do-while viene eseguito almeno sempre una volta.
Il listato seguente, stampa la serie di numeri da 10 a 20.
int x=9;
do{
x++;
cout<<" "<<x;
}while(x<20);
Il listato seguente stampa 51 a dimostrazione del fatto che il ciclo do-while viene eseguito, comunque,
almeno una volta
int x=50;
do{
x++;
cout<<" "<<x;
}while(x<20);