Prof. Alberto Postiglione
1.2.
Concetti di Base su Algoritmi, Strutture Dati e Programmazione
Costrutti di base di un algoritmo
La necessità di descrivere in modo chiaro e preciso “su foglio” le istruzioni e la sequenza operativa di un
algoritmo ha portato alla formulazione di vari metodi per la rappresentazione degli algoritmi. Allo scopo di
individuare un formalismo per la rappresentazione degli algoritmi è anzitutto necessario sapere che un qualsiasi
algoritmo può essere rappresentato utilizzando, come mattoni costituenti, solo i seguenti 3 costrutti6:



Sequenza (realizzata tramite l’istruzione di assegnazione)
Decisione binaria (realizzata tramite l’istruzione condizionale)
Ciclo (realizzata tramite l’istruzione ciclica)
Perché un algoritmo possa essere effettivamente rappresentato è opportuno aggiungere ai costrutti sopra
descritti un’altra tipologia di istruzione, che permette di scambiare dati tra l’algoritmo e l’esterno (lettura
dati, scrittura risultati, visualizzazione dati intermedi). Ovviamente tale tipologia di istruzione non aggiunge
potere computazionale ai costrutti di base, ma rende l’algoritmo più leggibile e lo rappresenta già con uno
sguardo rivolto verso il successivo passo della programmazione. Tutte le altre istruzioni non aggiungono potere
computazionale, ma servono per semplificare la scrittura della soluzione
Istruzione di Assegnazione (7).
E’ un’istruzione che assegna il valore di un’espressione ad una variabile. Le espressioni corrispondono ad
operazioni sui dati. Un’espressione può coinvolgere nomi di variabili, costanti, operatori aritmetico-logici, ecc
La sintassi di un’istruzione di assegnazione è la seguente:
<Nome della Variabile>  <Espressione>
Esempi di assegnazioni:
x
 3+4;
y
 x+y-1; (dove x è una variabile)
somma  somma + 5;
 L’espressione somma+5 viene valutata nello stato corrente.
 Il risultato dell’espressione viene assegnato nuovamente alla variabile di nome “somma”.
 Se somma valeva 2 prima dell’esecuzione, essa varrà 7 dopo l’esecuzione
Istruzione Condizionale (Decisione Binaria) (if…then…else)
E’ un’istruzione che
1. valuta una condizione (espressione booleana)
2. esegue, in alternativa, in base all’esito del confronto
 (la condizione è VERA) un primo insieme di istruzioni (racchiuse tra la coppia begin … end)
 (la condizione è FALSA) un secondo insieme di istruzioni (racchiuse la una coppia begin … end)
La sintassi di un’istruzione condizionale è la seguente:
if <Condizione>
then begin <Istruzioni1> end
else begin <Istruzioni2> end
La Condizione è un’espressione Booleana (con valore vero o falso). Se essa è soddisfatta si esegue il ramo
then, altrimenti si esegue il ramo else.
Se <Istruzioni1> o <Istruzioni2> sono composte da una sola istruzione, la coppia begin … end può essere
omessa.
il risultato è dovuto a due ricercatori informatici italiani (Jacopini-Bohm)
mn si legge “si assegni ad m il valore contenuto in n”, ed equivale ad inserire nella variabile a sinistra il valore attualmente
contenuto nella variabile che è a destra (più spesso si tratta di un’espressione), sostituendo con questo nuovo valore quello che era
prima il contenuto della variabile a sinistra. Ad esempio, se prima dell’istruzione m=5 ed n=3, dopo l’istruzione mn m varrà 3 (ed n
continua a valere 3, se non viene a sua volta riassegnato)
6
7
Pagina:9 – Bozza del 19/04/2010
Prof. Alberto Postiglione
Concetti di Base su Algoritmi, Strutture Dati e Programmazione
Istruzione Ciclica (while … do)
E’ un’istruzione che
1. valuta una condizione (espressione booleana)
2. finchè la condizione si mantiene VERA:
 esegue un insieme di istruzioni (racchiuse tra la coppia begin … end) e torna al passo 1
3. Quando la condizione diventa FALSA: esce dal ciclo, cioè si passa all’istruzione immediatamente
successiva l’end del ciclo
La sintassi di un’istruzione ciclica è la seguente:
while <Condizione> do
begin
<Lista Istruzioni>
end;
La condizione può risultare falsa alla prima esecuzione: in questo caso l'algoritmo esce dal ciclo senza aver mai
eseguito le istruzioni interne.
Se <Lista istruzioni> è composta da una sola istruzione, la coppia begin … end può essere omessa
Pagina:10 – Bozza del 19/04/2010