Sei sulla pagina 1di 22

Rappresentazione di un

Algoritmo
INFORMATICA
Corsi di Educazione, Ed. Comunità, Comunicazione e
Psicologia
a.a. 2010/2011
ing. Orazio Gambino
Rappresentazione di un algoritmo
• Linguaggio naturale
• Pseudocodice
• Diagrammi di flusso
• Linguaggio di programmazione formale

DICGIM ing. Orazio Gambino


Rappresentazione di un algoritmo

Esempio di un algoritmo espresso con linguaggio naturale.

DICGIM ing. Orazio Gambino


Linguaggio naturale
• Impreciso (“inizia l’algoritmo da capo...” ma da dove?)
• Dipendente dal contesto (“quando il ciclo ha completato la
sua esecuzione”…staccata questa frase dal resto della
descrizione diventa priva di senso)
• Ambiguo (se hai piu’ di un ciclo a quale ti riferisci?).
• In definitiva, il linguaggio naturale è inadatto alla
rappresentazione degli algoritmi.

DICGIM ing. Orazio Gambino


Pseudocodice
• Una variante del linguaggio naturale che “imita” i
linguaggi di programmazione.
• Formato da frasi lapidarie, meglio se inserite in una lista
ordinata con punti e sottopunti.
• E’ possibile inserire simboli matematici.
• Non necessita di regole grammaticali rigorose
• Puo’ richiamare costrutti di linguaggi di
programmazione conosciuti
• Al contrario dei linguaggi di programmazione, non è
necessario specificare le strutture dati complesse, ma
solo variabili.

DICGIM ing. Orazio Gambino


Rappresentazione di un algoritmo
• Pseudocodice

DICGIM ing. Orazio Gambino


Somma di due numeri rivista
• Pseudocodice Questo finchè è diverso da
1. Poni il valore della variabile riporto a 0 quello della slide 16.
2. Poni il valore della variabile i a 0
3. Ripeti i passi da 4 a 6 finchè il valore di i è maggiore di m-1
4. Somma ai e bi al valore corrente del riporto per ottenere ci
5. Se il valore ottenuto per ci è maggiore di 10
allora calcola il nuovo ci , sottraendo 10 dal valore corrente di ci
poni riporto=1
altrimenti poni riporto uguale a 0
6. Aggiungi 1 ad i, e ripeti passando alla colonna a sinistra.
7. Poni la cifra più a sinistra del risultato, ci, uguale a riporto
8. Stampa il risultato finale, cm cm-1 cm-2 … c1 c0
9. Fermati.

DICGIM ing. Orazio Gambino


Variabile
• Un contenitore di valore.
• E’ formata da un nome ed un valore.
• Che tipi di valori puo’ contenere? Un
numero intero, un numero reale, un dato
alfanumerico, un valore booleano,….
• Come si realizza una variabile? In due fasi:
-Dichiarazione (istanziazione) di una variabile.
-Assegnazione di un valore alla variabile.
-In alcuni linguaggi devo specificare il tipo.

DICGIM ing. Orazio Gambino


Variabile
Istanziazione di una variabile: var a;
….
a=5;
____________________________________________
Istanziazione e assegnazione var a=5;
di un valore ad una variabile
contemporanei.

DICGIM ing. Orazio Gambino


Rappresentazione di un algoritmo
• Linguaggio di programmazione formale (C++)
1. int a[3], b[3], c[3];
2. int m, i, riporto;
3. riporto=0;
4. i=0;
5. while(i<m) {
6. c[i]=a[i]+b[i]+riporto;
7. if(c[i]>10)
8. {c[i]-=10;
9. r=1;}
10. else r=0;
11. i++;
12. }
13. c[m]=r;
14. printf(“%d %d %d\n”, c[2],c[1],c[0]);
DICGIM ing. Orazio Gambino
Rappresentazione di un algoritmo
• Linguaggio naturale
• Pseudocodice
• Diagrammi di flusso
• Linguaggio di programmazione formale

DICGIM ing. Orazio Gambino


Algoritmi e diagrammi di flusso 1/2
Diagrammi di flusso
• I diagrammi di flusso consentono di
rappresentare graficamente un Inizio
algoritmo Fine
• Alle classi di operazioni viste per lo
pseudocodice vengono associati dei
simboli grafici Operazioni
• Il testo all’interno dei simboli illustra Stampa
sequenziali
l’operazione da svolgere Risultati
• Il flusso di esecuzione è stabilito dalle
frecce, che da un oggetto vanno al
successivo NO
• Le scelte condizionate, nelle condiz?
operazioni condizionali e iterative SI
consentono più percorsi
Passi da ripetere
– Tuttavia, durante l’esecuzione, un solo condiz?
percorso alla volta può essere esercitato
Incremento SI NO
i = i+1
DICGIM ing. Orazio Gambino
Algoritmi e diagrammi di flusso
Diagrammi di flusso
• Pseudocodice
• Operazioni sequenziali Inizio
Fine
– Realizza un solo compito ben
definito
– Il controllo passa all’operazione
successiva quando il compito è Operazioni
Stampa
finito sequenziali
Risultati
– Frase dichiarativa

DICGIM ing. Orazio Gambino


Algoritmi e diagrammi di flusso
Diagrammi di flusso
• Pseudocodice
• Operazioni sequenziali Inizio
Fine
– Realizza un solo compito ben
definito
– Il controllo passa all’operazione
successiva quando il compito è Operazioni
Stampa
finito sequenziali
Risultati
– Frase dichiarativa
• Operazioni condizionali
– Selezionano l’operazione
successiva sulla base di una
domanda

condiz?
SI NO

DICGIM ing. Orazio Gambino


Due tipi di ciclo differenti
La differenza consiste
Falso Passi da ripetere
Test di
continuità
nella posizione della
Vero Incremento condizione di continua-
i = i+1 zione (o di stop). Nel
Passi da ripetere

Test di
c.v.a. il corpo del ciclo
Incremento
continuità
i = i+1 Vero
Falso
potrebbe non essere
mai eseguito. Nel c.v.p.
Ciclo a valutazione Ciclo a valutazione
anticipata (c.v.a.) posticipata (c.v.p.) è eseguito almeno una
volta.
In entrambi i casi il codice che precede il ciclo deve essere tale
effettuare il ciclo (se necessario). Il ciclo è la fase piu’ delicata di
un algoritmo perché si rischia il loop infinito.
DICGIM ing. Orazio Gambino
Il finchè ha significato di mentre…

DICGIM ing. Orazio Gambino


Rappresentazione di un algoritmo
Inizio

• Diagramma di flusso Poni i=0


Poni riporto r=0

SI
i > m-1?
NO
ci = ai + bi + r Poni cm=r

SI NO
ci > 10? Stampa
cm cm-1 … c0
ci = ci –10
r=1 r=0

i = i+1 Fine

DICGIM ing. Orazio Gambino


Algoritmi e diagrammi di flusso
• Pseudocodice • Diagrammi di flusso
• Operazioni sequenziali
– Realizza un solo compito ben Inizio
definito Fine
– Il controllo passa
all’operazione successiva
quando il compito è finito
– Frase dichiarativa Operazioni
Stampa
• Operazioni condizionali sequenziali
Risultati
– Selezionano l’operazione
successiva sulla base di una
domanda
• Operazioni iterative SI
Test uscita
– Eseguono un ciclo di istruzioni
fino a quando la condizione di NO
uscita è verificata. In maniera
duale, il test di continuità non è Passi da ripetere
verificato. condiz?
Incremento SI NO
i = i+1
DICGIM ing. Orazio Gambino
Somma di due numeri rivista
• Pseudocodice
1. Poni il valore della variabile riporto a 0
2. Poni il valore della variabile i a 0
3. Ripeti i passi da 4 a 6 fino a che il valore di i è maggiore di m-1
4. Somma ai e bi al valore corrente del riporto per ottenere ci
5. Se il valore ottenuto per ci è maggiore di 10
allora calcola il nuovo ci , sottraendo 10 dal valore corrente di ci
poni riporto=1
altrimenti poni riporto uguale a 0
6. Aggiungi 1 ad i, e ripeti passando alla colonna a sinistra.
7. Poni la cifra più a sinistra del risultato, cm, uguale a riporto
8. Stampa il risultato finale, cm cm-1 cm-2 … c1 c0
9. Fermati.

DICGIM ing. Orazio Gambino


Somma di due numeri
Inizio
La somma di due numeri:
1
47 + Poni i=0
25 = Poni riporto r=0
------
72 SI
Due numeri con m>1 cifre: i > m-1?
A = am-1 am-2 … a0 + NO
B = bm-1 bm-2 … b0 =
-------------------------------------------------
ci = ai + bi + r Poni cm=r
C = cm cm-1 cm-2 … c0
SI NO
ci > 10? Stampa
cm cm-1 … c0
ci = ci –10
r=1 r=0

i = i+1 Fine

DICGIM ing. Orazio Gambino


Somma di Due Numeri (modificato)
• Se cm =0 allora
C = cm-1 cm-2 … c0
Poni i=0
Inizio altrimenti
Poni riporto r=0
C = cm cm-1 cm-2 … c0
SI
i > m-1?
NO Poni cm=r
ci = ai + bi + r
SI NO
cm =0?
SI NO
ci > 10?

ci = ci –10 Stampa Stampa


r=1 r=0 cm-1 … c0 cm cm-1 … c0

i = i+1 Fine
DICGIM ing. Orazio Gambino
Diagrammi di flusso

OK
TEST Operazione

Operazione
TEST

DICGIM ing. Orazio Gambino