Descrizione di un algoritmo
• Si descrive un algoritmo cercando di sintetizzare il più possibile la sua sequenza di passi;
• Non si utilizza un linguaggio di programmazione specifico, ma è meglio utilizzare qualcosa di più generale;
• Pseudo-codici o Diagrammi di Flusso;
• Per ogni istruzione elementare, esiste un simbolo o una parola chiave
Istruzioni di inizio e di fine
Start
Istruzioni input/output
Leggi Dato
Scrivi “Ciao!”
Esempio di Input
Esempio di Output
Istruzioni imperative
Calcola 20 + 15
Flusso di esecuzione
• I singoli diagrammi devono essere uniti tramite i connettori;
• L’esecuzione delle istruzioni deve essere fatta sequenzialmente, ovvero seguendo i connettori;
• Quando si scrive l’algoritmo bisogna fare molta attenzione alla direzione del flusso di esecuzione
Esempio: Somma di due numeri
Scrivere l’algoritmo di un programma che esegue la somma di due numeri;
Somma: diagramma di flusso
Start
Leggi X
Leggi Y
Z = X+Y
Stampa Z
End
Somma: pseudo-codice
Start Leggi X Leggi Y Calcola Z = X + Y Stampa Z EndVariazioni nel flusso di esecuzione
• Ci sono dei momenti in cui il flusso di esecuzione può scegliere tra diverse direzioni;
• In genere, questi salti sono sottoposti ad una
condizione logica (risposta vero
o falso);Istruzioni condizionali
Falso
Vero
Condizione
logica
Istruzioni condizionali: pseudo-codice
Start
……… ………
If (condizione logica) then
istruzioni caso vero
Else
istruzioni caso falso
End if ………… End
Istruzioni condizionali: pseudo-codice
Start
……… ………
If (condizione logica) then
istruzioni caso vero
End if ………… End
Istruzioni condizionali: esempio
Falso
Vero
Vuoi più
sale?
Espressioni logiche
• Prima di parlare delle istruzioni condizionali, dobbiamo ripassare il linguaggio con cui si formulano le condizioni: la logica.
• Un’espressione logica è una funzione che può avere due valori di verità: vero o falso.
– Una proposizione della quale dobbiamo valutare se è vera o falsa
Negazioni (NOT)
• Se A è un’espressione logica, anche Not A lo è;
Vero Falso
Falso Vero
Congiunzione (AND)
• Se A e B sono espressioni logiche, anche A and B lo è;
A
B
A and B
Falso Falso Falso Falso Vero Falso Falso Falso Vero Vero Vero VeroDisgiunzione (OR)
• Se A e B sono espressioni logiche, anche A or B lo è;
A
B
A or B
Falso Falso Falso Vero Vero Falso Vero Falso Vero Vero Vero VeroRelazioni
• Useremo inoltre le seguenti relazioni:
= (uguaglianza); < (minore);
> (maggiore); <> (diverso);
Esempio Istruzioni Annidate: diagramma di flusso
Aggiungi sale Aggiungi burro Aggiungi sale End vuoipiù salato AND più gustoso ? vuoi più salato ? V V F F
Esempio Istruzioni Annidate: pseudo-codice
I
f vuoi più salato and più gustoso Thenaggiungi sale aggiungi burro
Else
If vuoi più salato Then
aggiungi sale
End if End if
Esempio: massimo tra due numeri
Max: diagramma di flusso
Start
Leggi X
Leggi Y
Falso
Vero
X > Y
Stampa X
Stampa Y
Max: pseudo-codice
Start Leggi X Leggi Y If (X > Y) then Stampa X Else Stampa Y End if EndCicli (while)
Istruzioni
Falso
Vero
Condizione
…
…
Ciclo while: pseudo-codice
Start …… ……
While (condizione logica)
istruzione 1 ……… istruzione n End while …… …… End
Ciclo while: pseudo-codice
Start …… ……
While (condizione logica1)
………
While (condizione logica2)
……… ……… End while ……… End while ……
Esercizio
Scrivere la ricetta del risotto alla zucca utilizzando i diagrammi di flusso
(Nota: dove è richiesta una ripetizione – es. fino a quando
–
utilizzare un’istruzione condizionale del tipo mostrato nella prossima diapo)Esempio Cicli: diagramma di flusso
Aggiungi
brodo
F
V
NOT
(Il riso è cotto?)
…
Esempio: cicli pseudo-codice
Start
…… ……
While (NOT il riso è cotto)
Aggiungi brodo
End while ………
Esercizio
• Si supponga di fornire in input ad un programma un numero indefinito di interi positivi. L’inserimento verrà terminato dall’utente quando questi inserirà uno zero (0). Il programma deve restituire il valore massimo tra quelli introdotti. Disegnare il diagramma di flusso di tale programma.