algoritmi dr. francesco fabozzi corso di informatica
TRANSCRIPT
![Page 1: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/1.jpg)
Algoritmi
Dr. Francesco FabozziCorso di Informatica
![Page 2: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/2.jpg)
2
Programma• Un elaboratore è una macchina universale
in quanto può risolvere problemi di svariata natura– Gestione prestiti di una biblioteca, sistema di
prenotazione dei voli, risoluzione equazioni, …
• Ma non è una macchina intelligente– Occorre impartire dall’esterno la sequenza
delle istruzioni da eseguire per risolvere il problema (programma)
• Deve essere in un linguaggio comprensibile alla macchina (linguaggio di programmazione)
![Page 3: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/3.jpg)
3
Analisi e programmazione• La risoluzione di un problema mediante un
elaboratore avviene in due fasi successive:– Analisi del problema
• Ha come obiettivo la definizione di una procedura che permetta di risolvere il problema (algoritmo)
– Programmazione• Ha come obiettivo la traduzione dell’algoritmo in un
programma
![Page 4: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/4.jpg)
4
Algoritmo• L’algoritmo è una procedura che lavora su
dati d’ingresso e fornisce dati in uscita con le seguenti caratteristiche:– Generale– Finita– Completa– Non ambigua– Eseguibile
![Page 5: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/5.jpg)
5
Caratteristiche di un algoritmo• Generale
– Deve risolvere una intera classe di problemi al variare dei dati che li caratterizzano
• Finito– Le istruzioni che lo compongono e il numero di
volte che ogni istruzione viene eseguita devono essere finiti
• Completo– Deve contemplare tutti i casi possibili
![Page 6: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/6.jpg)
6
Caratteristiche di un algoritmo• Non ambiguo
– Ogni istruzione deve essere definita in modo univoco, senza paradossi, contraddizioni o ambiguità
• Eseguibile– Deve esistere un agente di calcolo in grado di
eseguire ogni istruzione in un tempo finito
![Page 7: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/7.jpg)
7
Efficienza di un algoritmo• Uno stessa classe di problemi può essere
risolta da diversi algoritmi, tutti corretti
• Un algoritmo efficiente deve pervenire alla soluzione del problema impiegando poco tempo e poca memoria– Diversi algoritmi, anche se tutti corretti,
possono avere diversi gradi di efficienza
• In genere algoritmi molto efficienti rispetto al tempo tendono ad occupare più memoria e viceversa
![Page 8: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/8.jpg)
8
Efficienza rispetto al tempo• Un algoritmo è veloce se arriva alla soluzione del
problema eseguendo un numero piccolo di passi• L’efficienza rispetto al tempo si esprime
indicando il numero di operazioni da compiere in funzione del numero n di dati in input
• Esempi: – Numero operazioni ~ n2
• algoritmo di complessità O(n2) (=complessità quadratica)
– Numero operazioni ~ 2n • algoritmo di complessità O(2n) (=complessità esponenziale)
![Page 9: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/9.jpg)
9
Efficienza rispetto al tempo• Esempio:
– Tempo impiegato da una CPU di 100 MIPS per il calcolo di un algoritmo di complessità lineare, quadratica ed esponenziale per diverse quantità di dati in input
dati
compl.
10 20 50 60
n 10-7 s 2 10-7 s 5 10-7 s 6 10-7 s
n2 10-6 s 4 10-6 s 25 10-6 s 36 10-6 s
2n 10-5 s 6 10-2 s 1.6 107 s 1.6 1010 s
![Page 10: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/10.jpg)
10
Efficienza rispetto al tempo• Un algoritmo di complessità polinomiale
O(nk) fornisce una soluzione al problema implementabile col calcolatore– Ancora migliori sono gli algoritmi di
complessità logaritmica O(logkn)
• Algoritmi di complessità esponenziale sono inutilizzabili
![Page 11: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/11.jpg)
11
Efficienza rispetto alla memoria• Un algoritmo è efficiente rispetto alla memoria se
arriva alla soluzione del problema occupando un numero piccolo di locazioni
• L’efficienza rispetto alla memoria si esprime indicando il numero di locazioni occupate in funzione del numero n di dati in input
• Esempio: – Numero locazioni ~ n
• algoritmo O(n) nel numero di celle di memoria impiegate
![Page 12: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/12.jpg)
12
Analisi del problema• La fase di analisi del problema ha come
scopo la definizione dell’algoritmo. Viene effettuata in tre passi:– Definizione del problema
• In questa fase non bisogna riferirsi al problema particolare (istanza) ma al caso generale cioè all’intera classe di problemi
– Scelta del metodo di soluzione più appropriato– Sviluppo e descrizione dell’algoritmo
![Page 13: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/13.jpg)
13
Analisi del problema• Per problemi complessi è utile effettuare
l’analisi seguendo l’approccio top-down– Tale approccio si basa sulla scomposizione del
problema in sottoproblemi più elementari– Per ciascun sottoproblema viene definito un
algoritmo
• Il vantaggio di questo approccio è che esso porta a definire algoritmi per problemi elementari che possono ritrovarsi in molti problemi complessi
![Page 14: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/14.jpg)
14
Un semplice algoritmo• Problema: confrontare le aree di due
rettangoli (A e B) dati i rispettivi lati
• AlgoritmoAcquisire lati di A in input
Calcolare l’area di A
Acquisire i lati di B in input
Calcolare l’area di B
Se l’area di A è maggiore dell’area di B:Comunica in output che Area(A) > Area(B)
Se l’area di B è maggiore dell’area di A:Comunica in output che Area(B) > Area(A)
![Page 15: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/15.jpg)
15
Applicazione dell’algoritmo• Un algoritmo deve fornire la soluzione per
un’intera classe di problemi
• Per risolvere un singolo problema di una certa classe si applica l’algoritmo sui dati che lo caratterizzano– Nell’esempio precedente i dati sono i lati di
due particolari rettangoli da confrontare– L’insieme costituito da tutti i possibili dati
prende il nome di insieme di definizione dell’algoritmo
![Page 16: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/16.jpg)
16
Algoritmo e dati• Un algoritmo interagisce con l’esterno in
due fasi:– Quando acquisisce i dati del particolare
problema da risolvere (fase di input)– Quando comunica messaggi o risultati (fase di
output)
Ambiente esterno
Dati del problema
Algoritmo
Messaggi / risultati
![Page 17: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/17.jpg)
17
Costanti e variabili• I dati su cui opera un algoritmo possono
essere:– Costanti: il valore non può essere cambiato
durante l’esecuzione dell’algoritmo– Variabili: il valore può essere cambiato
![Page 18: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/18.jpg)
18
Variabili scalari• Una variabile scalare è una coppia (nome,
valore)– Il valore della variabile è indeterminato in fase
di definizione dell’algoritmo– Il valore viene definito durante l’esecuzione
dell’algoritmo (valore attuale) mediante un’istruzione di assegnazione
Nome
Valore
Variabile scalare
![Page 19: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/19.jpg)
19
Variabili vettore• Una variabile vettore (o array) è una coppia
(nome, insieme ordinato di valori)– I valori (elementi o componenti del vettore)
sono numerati a partire da 1 (o da 0)
• Si possono avere anche vettori di vettori– Vettori multidimensionali
![Page 20: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/20.jpg)
20
Variabili vettore• Se nome_v è il nome di un vettore si indica
con nome_v( i ) la componente del vettore che è associata al numero intero i (indice del vettore)
V(4)V(4)V(1)V(1) V(2)V(2) V(3)V(3)
V(1), V(2), V(3), V(4) sono i 4 elementi del vettore
Vettore V
![Page 21: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/21.jpg)
21
Assegnazione di una variabile• L’istruzione di assegnazione permette di
definire il valore attuale di una variabile
nome variabile ← espressione
• A destra della freccia: espressione costituita da variabili, costanti e operatori– Si valuta l’espressione sostituendo ai nomi di
variabile i rispettivi valori attuali e il valore calcolato sarà il valore attuale della variabile a sinistra della freccia
![Page 22: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/22.jpg)
22
Assegnazione di una variabile• In un’assegnazione occorre rispettare la
regola dell’ordinamento– Una variabile che compare nell’espressione
deve essere già stata istanziata (cioè deve avere un valore attuale definito)
![Page 23: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/23.jpg)
23
Assegnazione di una variabile• Esempio: area ← lunghezza * larghezza
Prima dell’assegnazione
• Esempio: x ← x + 2
larghezza
2
lunghezza
3
area6
larghezza
2
lunghezza
3
Dopo l’assegnazione
x5
x7
prima dopo
![Page 24: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/24.jpg)
24
Istruzioni• La procedura di un algoritmo è descritta
per messo di una sequenza di istruzioni
• Esistono vari tipi di istruzioni:– Operative– Di controllo– Di salto– Di ingresso/uscita– Di inizio esecuzione– Di fine esecuzione
![Page 25: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/25.jpg)
25
Tipi di istruzioni• Istruzioni operative
– La loro esecuzione provoca un risultato
• Istruzioni di controllo– Controllano il verificarsi di una certa
condizione– Il risultato del controllo determina il flusso di
istruzioni da eseguire successivamente
![Page 26: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/26.jpg)
26
Tipi di istruzioni• Istruzioni di salto
– Alterano il normale ordine di esecuzione delle istruzioni specificando esplicitamente un salto a una specifica istruzione
– Istruzioni di salto condizionato• Il salto viene eseguito al verificarsi di una
condizione
– Istruzioni di salto incondizionato• Il salto viene eseguito sempre
– Nella programmazione strutturata il loro uso viene scoraggiato
![Page 27: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/27.jpg)
27
Tipi di istruzioni• Istruzioni di ingresso/uscita
– Indicano la modalità di trasmissione dati o messaggi tra algoritmo e ambiente esterno
• Istruzione di inizio esecuzione– Indica inizio algoritmo
• Istruzione di fine esecuzione– Indica fine algoritmo
![Page 28: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/28.jpg)
28
Descrizione di un algoritmo• L’algoritmo dell’esempio iniziale è stato
descritto usando il linguaggio naturale
• I linguaggi naturali sono:– Ambigui (una parola può avere più significati)– Ridondanti (una stessa operazione può essere
descritta in modi diversi)
![Page 29: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/29.jpg)
29
Descrizione di un algoritmo• Per illustrare un algoritmo in maniera
precisa e sintetica sono introdotti dei formalismi (formalismi di codifica) che non hanno i difetti del linguaggio naturale
• Nel seguito mostreremo due esempi di formalismi: – diagrammi di flusso (flow-chart)– pseudocodifica
![Page 30: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/30.jpg)
30
Diagrammi di flusso• Rappresentazione grafica degli algoritmi
• Indicano il flusso (o sequenza) delle istruzioni
• Ogni istruzione è rappresentata da un simbolo grafico (blocco elementare)– Simboli diversi per diversi tipi di istruzioni
• I blocchi sono collegati da linee di flusso– Frecce che indicano l’ordine con cui si
susseguono le istruzioni
![Page 31: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/31.jpg)
31
Blocchi elementariinizio fine
istruzione
ingresso/uscita
Blocchi di inizio e fine algoritmo
Blocco di azione
Blocco contenente una istruzione di I/O
Linea di flusso
condizione Blocco di controllo
![Page 32: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/32.jpg)
32
Caratteristiche di una flow-chart• Un diagramma di flusso possiede:
– 1 blocco di inizio algoritmo– 1 blocco di fine algoritmo– n ≥ 1 blocchi di azione o di I/O, n finito
• Ciascuno di questi blocchi ha una sola linea di flusso entrante e una sola linea di flusso uscente
– m ≥ 0 blocchi di controllo, m finito• Ciascuno di questi blocchi ha una sola linea di
flusso entrante e due linee di flusso uscenti
![Page 33: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/33.jpg)
33
Caratteristiche di una flow-chart• In un diagramma di flusso:
– Una linea di flusso entra in un blocco o si inserisce in un’altra linea di flusso
– Ciascun blocco è raggiungibile dal blocco di inizio algoritmo
– Il blocco di fine algoritmo è raggiungibile da qualsiasi altro blocco
Blocco B raggiungibile dal blocco A
Esiste una sequenza di blocchi X1, …,Xn tali che A=X1, B=Xn e per ogni i=1, …, n-1 Xi è connesso con una freccia al blocco Xi+1
![Page 34: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/34.jpg)
34
Schemi di flusso• In un algoritmo le sequenze di istruzioni si
possono raggruppare secondo schemi caratteristici detti schemi di flusso:– Schema di sequenza– Schema di selezione– Schema di iterazione
• La giustificazione è fornita dal Teorema di Böhm-Jacopini– Qualunque algoritmo è rappresentabile
utilizzando solo questi tre schemi di flusso
![Page 35: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/35.jpg)
35
Schema di sequenza• Una semplice sequenza di istruzioni (o
anche di schemi di flusso)
istruzione 1
istruzione 2
istruzione n
S1
S2
Sn
Si = schemi di flusso
![Page 36: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/36.jpg)
36
Schema di selezione• Due istruzioni (o anche schemi di flusso)
alternative da eseguirsi in base al verificarsi o meno di una certa condizione
istruzione 1 istruzione 2
condizioneF V
![Page 37: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/37.jpg)
37
Schema di selezione• Altra possibilità
istruzione
condizioneF V
![Page 38: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/38.jpg)
38
Condizione• Nello schema di selezione compare una
condizione – Il flusso delle istruzioni viene determinato in
base al verificarsi o meno della condizione
• Per esprimere in maniera formale una condizione dobbiamo introdurre alcuni elementi di logica
![Page 39: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/39.jpg)
39
Proposizioni• Proposizione: costrutto linguistico di cui si
può asserire o meno la veridicità
• Esempi:– “8 è un numero pari” vera– “Potenza si affaccia sul mare” falsa
• Valore di verità di una proposizione: l’essere vera o falsa– Vero / Falso : valori logici o booleani
![Page 40: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/40.jpg)
40
Predicati• Predicato: proposizione il cui valore di
verità dipende dal valore attuale di alcune variabili
• Esempi:– “la variabile x è un numero pari”– “l’angolo theta è minore di 90 gradi”
• Valutazione di un predicato: determinazione del suo valore di verità
![Page 41: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/41.jpg)
41
Operatori relazionali• Si chiamano operatori relazionali degli
operatori che permettono di esprimere concisamente proposizioni e predicati
• Predicato semplice: predicato che contiene un solo operatore relazionale
uguale
> maggiore
≥ maggiore o uguale
≠ diverso
< minore
≤ minore o uguale
![Page 42: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/42.jpg)
42
Negazione logicap = predicato
not p = negazione logica di p
Predicato con valore di verità opposto a quello di p
Esempio: not( x > 2) vero solo quando x ≤ 2
p not p
vero falso
falso vero
Tabella di verità per il not
![Page 43: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/43.jpg)
43
Congiunzione logicap, q = predicati
p and q = congiunzione logica di p e q
Predicato con valore di verità vero quando p e q sono entrambi veri
Esempio: ( x > 2) and (x < 5)
p q p and q
falso falso falso
falso vero falso
vero falso falso
vero vero vero
Tabella di verità per l’and
![Page 44: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/44.jpg)
44
Disgiunzione logicap, q = predicati
p or q = disgiunzione logica di p
Predicato con valore di verità vero quando almeno p o q è vero
Esempio: ( x < 2) or (x > 5)
p q p or q
falso falso falso
falso vero vero
vero falso vero
vero vero vero
Tabella di verità per l’or
![Page 45: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/45.jpg)
45
La flow-chart dell’esempio iniziale
S(A)>S(B)F V
inizio
Leggi in input lato 1A di A S(B) 1B*2B
Leggi in input lato 2A di A
Leggi in input lato 1B di B
S(A) 1A*2A
Leggi in input lato 2B di B
Scrivi in output “Area di B maggiore di area di A”
Scrivi in output “Area di A maggiore di area di B”
fine
![Page 46: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/46.jpg)
46
Schema di iterazione• Ripetizione di un’istruzione (o schema di flusso)
per un numero finito di volte– Lo schema da ripetersi si dice corpo dell’iterazione
• Deve essere in grado di modificare la condizione altimenti si entra in un “loop” infinito
Corpo dell’iterazione
condizioneF
V
Iterazione per falso
Controllo in coda(il corpo è eseguito almeno una volta)
![Page 47: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/47.jpg)
47
Schema di iterazione• Altra possibilità
Corpo dell’iterazione
condizioneF
V
Iterazione per vero
Controllo in testa(il corpo può anche non essere mai eseguito)
![Page 48: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/48.jpg)
48
Esempio di algoritmo con iterazione• Problema: calcolo di a4
Scrivi b inoutput
fineF V
inizio
Leggi a in input
b 1
b b*am m+1
m = 4
m 0
Variabile b che immagazzinail risultato del calcolo
Variabile m che conta il numero divolte che si effettua l’operazione(“contatore”)
![Page 49: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/49.jpg)
49
Esempio di algoritmo con iterazione• Vediamo che l’algoritmo è OK in un caso
particolare– Input = 2 Output = 24 = 16
Iniziali # 1 # 2 # 3 # 4 Finali
a 2 2 2 2 2 2
b 1 2 4 8 16 16
m 0 1 2 3 4 4
Passi dell’iterazione
![Page 50: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/50.jpg)
50
Esempio di algoritmo con iterazione• Verificare che il seguente algoritmo è
sbagliato per il calcolo di a4
F V
inizio
Leggi a in input
m 1
a a*am m+1
m = 4 Scrivi a inoutput
fine
![Page 51: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/51.jpg)
51
Esempio di algoritmo con iterazione• Verifichiamo che l’algoritmo non è OK
usando un caso particolare– Input = 2 Output = 256 = 28
Iniziali # 1 # 2 # 3 Finali
a 2 4 16 256 256
m 1 2 3 4 4
Passi dell’iterazione
![Page 52: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/52.jpg)
52
Pseudocodifica• L’algoritmo viene descritto mediante un
linguaggio formale e rigoroso– Vicino a un linguaggio di programmazione
• La descrizione mediante pseudocodifica si compone di due parti– Dichiarazione delle variabili usate
nell’algoritmo– Descrizione delle azioni
![Page 53: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/53.jpg)
53
Pseudocodifica• Nella pseudocodifica:
– Si utilizzano parole chiave (in maiuscolo)• BEGIN, END, IF, …
– Si utilizzano operatori• +, *, -, >, …
– Si indentano le istruzioni• Rientro di tabulazione per gruppi di azioni che
appartengono a un certo schema di flusso
![Page 54: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/54.jpg)
54
Tipo delle variabili• Indica l’insieme di definizione di una variabile (o
di una costante)– Cioè l’insieme dei valori che può assumere
• INTEGER– Una variabile a cui possono essere assegnati numeri
interi relativi– Una costante numero intero relativo
• Ex.: 2, -139
• REAL– Una variabile a cui possono essere assegnati numeri
razionali– Una costante numero razionale
• Ex.: 5.17, -0.345, 23.476 E-3
![Page 55: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/55.jpg)
55
Tipo delle variabili• BOOLEAN
– Una variabile a cui possono essere assegnati valori logici
– Una costante true oppure false
• STRING-q– Una variabile a cui possono essere assegnate stringhe
(parole) di q caratteri– Una costante stringa di q caratteri
• Sono racchiuse tra apici• Ex.: ‘PIPPO’ è una costante STRING-5• Ex.: ‘?’ è una costante STRING-1• Ex.: ‘278’ è una costante STRING-3
![Page 56: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/56.jpg)
56
Dichiarazione delle variabili• Elenco delle variabili su cui opera
l’algoritmo– Preceduto dalla parola chiave VAR
VAR i, j, k(10): INTEGER;p, q: REAL;cognome: STRING-20:ishigh: BOOLEAN.
I due punti separano l’elenco delle variabili dal loro tipo
Il punto e virgola termina la dichiarazione di variabili dello stesso tipo
Il punto termina la dichiarazione
La virgola separa variabili dello stesso tipo
![Page 57: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/57.jpg)
57
Descrizione delle azioni• Regole
– La prima azione dell’algoritmo deve essere preceduta da BEGIN
– L’ultima azione dell’algoritmo deve essere seguita da END
– Un’azione di lettura si indica con READ– Un’azione di scrittura si indica con WRITE
• Si usano parole chiave per identificare gli schemi di flusso
![Page 58: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/58.jpg)
58
Schema di sequenza
Istruzione 1Istruzione 2……Istruzione n
S1
S2
……Sn
![Page 59: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/59.jpg)
59
Schema di selezione
IF condizioneTHEN istruzione 1ELSE istruzione 2
ENDIF
IF condizioneTHEN istruzione
ENDIF
![Page 60: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/60.jpg)
60
Schema di iterazione
REPEAT corpo dell’iterazioneUNTIL condizione
ENDREPEAT
WHILE condizionecorpo dell’iterazione
ENDWHILE
Controllo in coda
Controllo in testa
![Page 61: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/61.jpg)
61
Esempi di pseudocodificaVAR a1, a2, b1, b2, sa, sb: REAL.BEGIN
READ a1READ a2sa a1 * a2READ b1READ b2sb b1 * b2IF sa > sb
THEN WRITE“Area A maggiore area B”ELSE WRITE“Area B maggiore area A”
ENDIFEND
![Page 62: Algoritmi Dr. Francesco Fabozzi Corso di Informatica](https://reader036.vdocuments.pub/reader036/viewer/2022062307/5542eb4c497959361e8b9fc7/html5/thumbnails/62.jpg)
62
Esempi di pseudocodifica
VAR a, b: REAL;m: INTEGER.
BEGINREAD ab 1m 0REPEAT
b b * am m + 1UNTIL m = 4
ENDREPEATWRITE b
END