DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
INFORMATICA BIngegneria Elettrica
Introduzione agli algoritmi
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Che cos’è l’Informatica?
• È una scienza, ovvero una conoscenza sistematica di tecniche/metodi per:§ Rappresentare dell’informazione§ Elaborare l’informazione
• L’informazione è costituita da una collezione di dati (osservazioni, fatti, entità fisiche o concettuali) strutturata ed elaborata automaticamente
2
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Che cos’è l’Informatica?
• Scienza: approccio rigoroso e sistematico• Informazione: è parte di ogni attività umana• Rappresentazione: astrarre i concetti importanti da quelli
trascurabili, per modellare opportunamente la realtà di interesse:§ Occorre studiare metodi di rappresentazione appropriati
all’elaborazione da parte di un calcolatore digitale
• Elaborazione e Gestione: uso e trasformazione dell’informazione in modo funzionale agli obiettivi
3
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Che cos’è un calcolatore?
• Nell’epoca moderna il calcolatore è uno strumento elettronico che elabora informazione
• Il calcolatore esegue un algoritmo (o un insieme di algoritmi)ed utilizza elementi di memoria per immagazzinare le informazioni che sta elaborando
4
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Alcuni calcolatori del passato
5
http://en.wikipedia.org/wiki/Enigma_machine
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Alcuni calcolatori del passato
6
30/11/14 11:21Ancient Computer Even More Ancient Than We Thought | IFLScience
Page 1 of 4http://www.iflscience.com/technology/ancient-computer-even-more-ancient
TECHNOLOGY
Ancient Computer Even More Ancient Than WeThoughtNovember 28, 2014 | by Stephen Luntz
photo credit: The ultimate steampunk device may be older than was previously thought. TilemahosEfthimiadis via Wikimedia Commons.
The astonishing Antikythera mechanism is even older than previously suspected, newresearch suggests. Instead of being "1500 years ahead of its time," it may have been closerto 1800.
The mechanism was found in 1901 in the wreck of a ship that sank in the Aegean Seaaround 60 BC. Though its origins are unknown, it could be used to calculate astronomicalmotion, making it a sort of forerunner to computers.
The sheer sophistication of the device makes it mysterious, being more advanced than anyknown instrument of its day – or for centuries thereafter. Even with parts missing afterspending such a long time in the briny deep, it was examined to have at least 30 gears. Thisis perhaps why for many, it represents the pinnacle of technology of the ancient world andwhat was lost during the Dark Ages.
If devices such as this had survived, Kepler might have found the task of explaining theorbits of the planets far easier to achieve. Although the makers likely would not haveunderstood why the moon slowed down and sped up in its orbit, they were sufficientlyaware of the phenomenon. In fact, the mechanism mimics it precisely.
One of the mechanism's functions was to predict eclipses, and a study of these dialsindicates it was operating on a calender starting from 205 BC.
plants and animals
the brain
Choose your poison
Editor's Blog
Environment
Technology
Space
Health and Medicine
The Brain
Plants and Animals
Physics
Chemistry
POPULAR POSTS
Meet The Owl With Eyes LikeThe Night Sky
Watch A NeurosurgeonPerform A SubduralHematoma Operation
Search by keyword find FollowFollow 130K followers Follow 219k19mLikeLike
52.2K 416
http://www.iflscience.com/technology/ancient-computer-even-more-ancient
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Che cos’è un calcolatore?
Ingresso informazione
Uscita informazione
Calcolatore
7
• Il calcolatore è una macchina:§ È veloce§ Ha un’ampia memoria§ È programmabileMA§ Non è intelligente§ Non è in grado di ragionare§ Non è in grado di capire un problema e
capire/dare una soluzione
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Che cos’è un algoritmo?
• Un algoritmo è una sequenza finita di passi (operazioni elementari) tali che§ Permettano di risolvere uno specifico compito o problema§ Siano comprensibili ad uno specifico esecutore (cioè il calcolatore)§ Siano definiti con precisione (cioè possano essere eseguiti senza
ambiguità)
8
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esempi intuitivi di algoritmi
• Libretto delle istruzioni di montaggio di un gioco LEGO
9
• Libretto delle istruzioni di montaggio di un mobile IKEA
L’esecutore di questi algoritmi è una persona e non un calcolatore (sarebbe molto complesso far comprendere tale linguaggio grafico ad un calcolatore)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esempi intuitivi di algoritmi
Ricetta di cucina: cuocere un uovo in padella1. Metti un cucchiaio colmo d’olio in una padella2. Metti la padella sul fuoco3. Aspetta un minuto4. Rompi un uovo5. Versa il tuorlo e l’albume nella padella6. Aggiungi un pizzico di sale7. Togli dal fuoco quando l’albume è cotto
L’esecutore è una persona che conosce la lingua italiana!I passi sono spesso non precisi ed ambigui, richiedendo quindi il buonsenso dell’esecutore. Per esempio:• Il punto 2 assume che il fornello sia acceso• Al passo 6 quant’è un pizzico di sale?• Al passo 7, come faccio a capire che l’albume è cotto?
10
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esempi intuitivi di algoritmi
Prodotto di due numeri interi positivi tramite somme ripetute1. Leggi A2. Leggi B3. Somma A a se stesso B volte4. Scrivi il risultato
L’esecutore è ancora una persona che conosce la lingua italiana!
11
Questa non è un’operazione elementare
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Dal problema alla soluzione automatica
• Ci occuperemo di problemi che riguardano la gestione e l’elaborazione dell’informazione
• Vedremo come passare dalla specifica di un problema alla sua soluzione automatica attraverso l’uso di un calcolatore§ La specifica è una descrizione semi-formale del problema§ È necessario passare dalla specifica ad un algoritmo che risolve il
problema dato§ Infine affinché l’algoritmo trovato sia eseguibile dal calcolatore dovrà
essere definito in un linguaggio comprensibile al calcolatore stesso
12
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Il flusso di sviluppo di un programma
AnalisiDel problema
Definizione dell’algoritmo
Codifica delprogramma
(linguaggio C)
Esecuzione sul calcolatore
Compilazione del programma
(linguaggio macchina)13
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Elementi degli Algoritmi
• Dati: gli oggetti su cui opera l’algoritmo§ Dati iniziali del problema, informazioni ausiliarie, risultati parziali e
finali§ I dati possono essere variabili o costanti
• Operazioni: elaborazioni da effettuare sui dati§ Calcoli, confronti, assegnamenti, acquisizioni, emissioni, ecc.
• Flusso di controllo: specifica delle possibili successioni dei passi dell’algoritmo§ La correttezza dei risultati dipende non solo dalla corretta esecuzione
delle singole operazioni, ma anche dalla corretta sequenza con cui sono eseguite
14
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Flusso di controllo e di esecuzione
• Flusso di controllo: la descrizione a priori di tutte le possibili sequenze nell’esecuzione dei passi dell’algoritmo, in particolare di operazioni in alternativa e di operazioni da ripetere più volte ciclicamente
• Flusso di esecuzione: la sequenza di operazioni effettivamente seguita durante una particolare esecuzione dell’algoritmo e che dipende dagli specifici valori che i dati assumono in quell’esecuzione
15
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Rappresentazione di un algoritmo destinato all’esecuzione automatica
• Rappresentazione di un algoritmo § Descrizione di tutte le possibili sequenze di operazioni da eseguire
per risolvere il problema dato§ Descrizione del flusso di controllo, delle operazioni eseguibili, e degli
oggetti su cui agiscono le singole operazioni§ Deve essere comprensibile in modo univoco sia da parte del
programmatore che dell’esecutore
• Utilizzeremo qui i Diagrammi di flusso§ Elementi grafici per indicare il flusso di controllo e i tipi di operazioni§ Elementi testuali per descrivere le operazioni ed i dati
16
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
L’architettura dell’esecutore
17
Standard Output
Visualizza i risultati
tramite il monitor
CPUStandard Input
BUS
MEM.
Acquisisce i dati
tramite la tastiera
La memoria permette di immagazzinare i dati che si
stanno elaborando
La CPU esegue l’algoritmo
seguendo il flusso di controllo.
La CPU è in grado di eseguire operazioni aritmetiche, logiche
e relazionali
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Le variabili
• La variabile è un “contenitore” di valori§ Ad una variabile è sempre associato un valore alla volta§ La variabile non può essere vuota (al massimo non è inizializzata e quindi
contiene un valore “a caso”) • La variabile è identificata tramite un nome simbolico
§ Le operazioni descritte nell’algoritmo possono essere eseguite di volta in volta sui diversi valori assegnati alle variabili (formulazione generale dell’algoritmo)
x
Nome della variabile
Valore della variabile
La variabile x contiene il valore 5
18
5
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Gli elementi grafici
• Blocco di inizio
• Blocco di terminazione
• Blocco esecutivo
• Blocco condizionale
• Blocco di ingresso dati
• Blocco di uscita dati
Inizio
Fine
Operazione
Leggi(dato)
Scrivi(dato)
Vero FalsoCondizione
19
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esercizio
• Si disegni il diagramma di flusso di un algoritmo che chiede all’utente un valore in virgola mobile che rappresenta una temperatura in gradi celsius, converte il valore in gradi Fahrenheit e visualizza il risultato
• NOTA: la formula per la conversione è gradi F = gradi C × 1.8 + 32
20
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esercizio
• Si disegni il diagramma di flusso di un algoritmo che chiede all’utente un lunghezza del raggio di un cerchio, calcola l’area del cerchio e visualizza il risultato
21
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esercizio
• Si disegni il diagramma di flusso di un algoritmo che calcola quanti soldi ha nel portafogli l’utente. In particolare, l’algoritmo chiede all’utente il numero di banconote da 50, da 20, da 10 e da 5 euro, calcola la somma complessiva e la visualizza
22
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Gli elementi testuali
• Negli schemi a blocchi operazioni e condizioni sono rappresentate in modo testuale e tramite simboli che rappresentano gli operatori aritmetici, di confronto, ecc.
• Assegnamento: =§ Il valore dell’espressione a destra dell’operatore di assegnamento è
copiato nella variabile a sinistra,§ Es: x = 6, y = x, z = x+6, ...
• Operatori aritmetici: +, -, * , /, %§ Eseguono l’operazione sui due operandi specificati§ Gli operandi possono essere variabili o costanti§ Producono un valore numerico§ Es: a + 5, 3 + 6, w + x, …§ Con operandi interi sono definite le operazioni / “divisione intera” e %
“resto della divisione intera”23
Operazione
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Gli elementi testuali
• Operatori di confronto: >, <, ==, >=, …§ Eseguono l’operazione sui due operandi specificati§ Gli operandi possono essere variabili o costanti§ Producono un valore logico (vero o falso)§ Es: x > 5, y <= x, …
• Operatori logici: and, or, not§ Eseguono l’operazione sui due operandi specificati§ Gli operandi possono essere variabili o costanti§ Producono un valore logico (vero o falso)§ Sono utilizzanti principalmente per esprimere condizioni complesse
• Espressioni§ È possibile comporre gli operatori sopra specificati per ottenere
espressione e condizioni complesse che restituiscono un risultato§ Es.: x + y > 10 and y < 3
24
Vero FalsoCondizione
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Gli elementi testuali
• Procedure di input/output: Leggi(X), Scrivi(N)§ Permettono di acquisire dati dall’utente e visualizzare risultati§ Agiscono sul parametro specificato che può essere una variabile o
una costante• Leggi(x) legge un dato da tastiera e lo salva nella variabile x• Scrivi(y) mostra a video il valore contenuto nella variabile y
§ Tali procedure possono essere usate solo negli appositi blocchi
25
Leggi(dato) Scrivi(dato)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Gli elementi testuali
• Funzioni: cos(x), log(x), …§ Nelle espressioni e condizioni si possono specificare anche operazioni
più complesse dette funzioni§ Come le funzioni matematiche
• Ricevono una serie di valori detti parametri specificati tra parentesi (variabili oppure costanti)
• Producono un valore§ Es: cos(pi), log(10), …
26
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
• Il flusso di controllo di un diagramma di flusso viene costruito mediante specifiche regole:§ Un solo blocco di inizio§ Almeno un blocco di terminazione (preferibilmente uno)
• Il flusso di controllo di un algoritmo viene costruito in base a tre strutture di controllo dette: § sequenza, § selezione ed § iterazione
Specifica del flusso di controllo
27
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
La sequenza
• Dal blocco di inizio, esecutivo, di ingresso dati e di uscita dati deve uscire una sola freccia
• Dal blocco di fine non esce alcuna freccia• Il flusso di controllo è sequenziale
Inizio
Operazione
Leggi(dato)
Fine
Scrivi(dato)
28
sequenza
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
La selezione
• Il blocco condizionale modifica il flusso di controllo rendendolo non più sequenziale
• Dal blocco condizionale escono due frecce una etichettata con il valore vero ed una con il valore falso
• Il successivo blocco da eseguire dipende dal valore logico risultate dalla valutazione della condizione§ Ecco la differenza tra flusso di controllo e flusso di esecuzione!
• Durante l’esecuzione, la scelta del blocco da eseguire è sempre univoco
Operazione
Vero FalsoCondizione
Operazione
29
selezione
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esercizio
• Si disegni il diagramma di flusso di un algoritmo che chiede all’utente un valore intero e visualizza il suo valore assoluto
30
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Selezione – un esempio introduttivo
• Si disegni il diagramma di flusso di un algoritmo che chiede all’utente un valore intero e visualizza il suo valore assoluto
31
Inizio
Leggi(valore)
Fine
Scrivi(ass)
ass = - valore
Vero Falsovalore < 0
ass = valore
Selezione
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esercizio
• Si disegni il diagramma di flusso di un algoritmo che acquisisce i punteggi ottenuti da uno studente nei due compitini dell’esame di informatica B e valuta se lo studente è stato promosso o bocciato
32
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
L’iterazione
• Una delle due frecce uscenti da un blocco condizionale può essere diretta verso un precedente blocco nel flusso di controllo
• In questo modo è possibile esprimere l’iterazione di un insieme di istruzioni (corpo del ciclo)
• Il corpo del ciclo è ripetuto un numero finito di volte• La ripetizione è controllata dalla valutazione della condizione
di permanenza del cicloOperazione
Vero FalsoCondizione
Operazione
33
iterazione
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esercizio
• Disegnare il diagramma di flusso di un algoritmo che acquisisce un numero intero positivo o nullo, e calcola e visualizza il suo fattoriale
34
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Iterazione – un esempio introduttivo
• Disegnare il diagramma di flusso di un algoritmo che acquisisce un numero intero positivo o nullo, e calcola e visualizza il suo fattoriale
35
Inizio
Leggi(n)
VeroFalso
n > 0
f = f * nIterazione
f = 1
Scrivi(f)
Finen = n - 1
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
L’iterazione
• Variabile di controllo del ciclo§ Inizializzata prima di entrare nel ciclo
• Condizione di permanenza§ Valutata in funzione della variabile di controllo
• Corpo del ciclo§ Contiene il blocco di codice da ripetere più volte§ Contiene l’istruzione per l’aggiornamento della variabile di controllo
• È possibile specificare anche cicli con condizioni più complesse
36
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
L’iterazione
• Ciclo a condizione finale: § eseguo almeno una volta il
corpo del ciclo
• Ciclo a condizione iniziale§ eseguo zero o più volte il corpo
del ciclo
37
Operazione
Vero FalsoCondizione
Operazione
Vero FalsoCondizione
OperazioneOperazione
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Esercizio
• Disegnare il diagramma di flusso di un algoritmo che acquisisce un numero intero e verifica se questo è positivo; in caso la condizione non sia verificata stampa un messaggio di errore e ripete l’acquisizione. Una volta letto un valore valido, l’algoritmo lo visualizza
38
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Teorema di Jacopini e Böhm
• Qualunque algoritmo può essere implementato utilizzando le tre sole strutture di controllo: § la sequenza, § la selezione, e § l’iterazione
da applicare ricorsivamente alla composizione di istruzioni elementari
• NOTA: Applicare ricorsivamente, nella pratica, vuol dire che istanze delle tre strutture possono essere concatenate o annidate (ma NON intrecciate)
39
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Teorema di Jacopini e Böhm
40
• Sbagliato!I due cicli si «intersecano»
• Corretto
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Un esempio più complesso
• Realizzare un algoritmo che acquisisce due numeri interi, e calcola e visualizza il loro prodotto mediante somme ripetute
• Suggerimento: se vengono acquisiti due numeri Y e W, il prodotto è calcolato sommando W volte Y a se stesso
41
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Acquisizione dei dati in ingresso e attribuzione dei loro valori a W e Y
Inizializzazione delle variabili ausiliarie SP=somme parzialiNS=numero somme da eseguire
Corpo del ciclo
Valutazione della condizione di permanenza nel ciclo
Visualizzazione del risultato
Una prima soluzione
42
Leggi(W)
Leggi(Y)
Scrivi(SP)
Viene utilizzato un ciclo a condizione finale -> L’algoritmo è corretto se Y>0
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
43
W #
Y #
SP #
NS #
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
44
W 5
Y #
SP #
NS #
L’utenteinserisce 5
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
45
W 5
Y 3
SP #
NS #
L’utenteinserisce 3
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
46
W 5
Y 3
SP 0
NS #
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
47
W 5
Y 3
SP 0
NS 3
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
48
W 5
Y 3
SP 5
NS 3
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
49
W 5
Y 3
SP 5
NS 2
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
50
W 5
Y 3
SP 5
NS 2
È vero
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
51
W 5
Y 3
SP 10
NS 2
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
52
W 5
Y 3
SP 10
NS 1
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
53
W 5
Y 3
SP 10
NS 1
È vero
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
54
W 5
Y 3
SP 15
NS 1
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
55
W 5
Y 3
SP 15
NS 0
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
56
W 5
Y 3
SP 15
NS 0
È falso
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tracing
57
W 5
Y 3
SP 15
NS 0
Vienevisualizzato 15
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Leggi(W)
Leggi(Y)
Scrivi(SP)
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Un miglioramento all’algoritmo
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
SP=SP+W
NS=NS-1
NS>0falso
vero
58
Leggi(W)
Leggi(Y)
Scrivi(SP)
Viene utilizzato un ciclo a condizione iniziale -> L’algoritmo è corretto se Y>=0
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Commento sull’esempio precedente
• Nell’esempio la verifica della condizione è stata spostata dalla fine all’inizio del ciclo
• Nell’esempio abbiamo migliorato l’algoritmo; in realtà i due algoritmi NON sono funzionalmente equivalenti:§ Il primo è corretto per y > 0§ Il secondo è corretto per y >= 0
59
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Raffinamenti Successivi
• Nelle prime fasi di progetto si trascurano i dettagli• Man mano che il progetto evolve si conosce meglio il
problema• Uno dei raffinamenti tipici:
VERIFICA DEI DATI IN INGRESSO§ L’utente può commettere errori nell’immissione dei dati § Si verifica che i dati immessi siano accettabili rispetto alle ipotesi di
correttezza dell’algoritmo§ Esempio precedente: l’algoritmo non fornisce valori corretti per valori
negativi di Y (Y >= 0 ?)
60
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Verifica dei dati in ingresso
Inizio
SP=0
Fine
NS=Y
SP=SP+W
NS=NS-1
NS>0falso
vero
Y>=0falsovero
61
Leggi(W)
Leggi(Y)
Scrivi(SP)
Scrivi: “Secondo fattore negativo”
Ipotesi: l’algoritmo non calcola il prodotto nel caso in cui Y è < 0
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Verifica dei dati in ingresso
Inizio
NS=Y
Fine
CS=1
Z=SP
SP=SP+W
NS=NS-1
NS>0?falsovero
falsoveroY>=0 ?
NS=-YCS=-1
CS==1? falsovero
Z=-SP
SP=0
62
Leggi(W)
Leggi(Y)
Scrivi(Z)
Ipotesi: gli operandi possono essere positivi, negativi o nulli
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Proprietà degli algoritmi
• L’algoritmo è un procedimento sequenziale: un passo dopo l’altro secondo un ordine specificato (flusso di esecuzione)
• A ogni passo, il successivo deve essere uno e uno solo, ben determinato (determinismo)
• I passi elementari devono essere eseguiti in modo univocodall’esecutore (non ambiguità)§ Cioè i passi elementari devono essere descritti in una forma eseguibile
e comprensibile dall’esecutore• L’algoritmo deve essere composto da un numero finito di
passi e richiedere una quantità finita di dati in ingresso • L’esecutore deve terminare in tempo finito per ogni insieme
di valori in ingresso (terminazione)
63
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Proprietà degli algoritmi
• Ogni operazione deve:§ Essere elementare cioè non ulteriormente scomponibile (atomicità)§ Terminare entro un intervallo finito di tempo
• Es.: calcolare le cifre decimale di p, NO!§ Produrre un effetto osservabile
• Stato prima dell’esecuzione -> stato dopo l’esecuzione§ Produrre lo stesso effetto ogni volta che viene eseguita a partire
dalle stesse condizioni iniziali Es. la somma di due numeri dati deve restituire sempre lo stesso risultato
• Le operazioni elementari sono definite in base all’esecutore dell’algoritmo § L’esecutore deve essere in grado interpretarle ed eseguirle
64
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Proprietà degli algoritmi
• La descrizione di un algoritmo per un esecutore deve avere una formulazione generale:§ La soluzione individuata non deve dipendere solo da valori predefiniti
dei dati§ Gli algoritmi prevedono particolari passi destinati ad acquisire i valori
dei dati da utilizzare ed elaborare in ogni specifica esecuzione§ In altre parole l’algoritmo risolve una classe di problemi
• Esempio: § Un algoritmo per calcola il prodotto di due numeri per somme
ripetute non eseguirà tale calcolo solo per due valori predefiniti MA sarà in grado di eseguire il calcolo per una qualsivoglia coppia di numeri acquisiti dall’utente
65
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Proprietà degli algoritmi
• Correttezza§ L’algoritmo ottiene la soluzione del compito cui è
preposto§ L’esecutore eseguirà l’algoritmo a prescindere che sia
giusto o sbagliato; è compito del programmatore garantire che l’algoritmo sia corretto
• Efficienza§ L’algoritmo perviene alla soluzione del problema nel
modo più veloce possibile e/o usando la minima quantità di risorse fisiche
66
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Cenni sull’Algebra di Boole
• Facciamo un passo indietro…
• Per imparare a definire in modo corretto condizioni complesse in un algoritmo è necessario introdurre qualche nozione di base sull’algebra di Boole
• Esempi: § “La variabile x contiene un valore compreso nell’intervallo [2;5]?” cioè
“x >= 2 and x <= 5”§ “Entrambe i voti parziali sono maggiori o uguali a 8 e la loro somma
maggiore di 18?” cioè “voto1 >= 8 and voto2 >= 8 and voto1 + voto2 >= 18”
§ “Almeno uno dei due voti è maggiore o uguale a 8?” cioè “voto1 >= 8 or voto2 >= 8”
- 67 -
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Cenni sull’Algebra di Boole
• L’algebra di Boole (inventata da G. Boole, britannico, seconda metà ’800), o algebra della logica, è un’algebra astratta che opera su due soli valori di verità, falso e vero, mediante operatori logici
• In un calcolatore vero è in genere rappresentato con il valore 1 e falso con il valore 0
68
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Letterale
• Il letterale è una variabile logica§ Il letterale può assumere valore 0 o 1§ Il letterale può rappresentare (il risultato di) una condizione semplice
• Esempi:§ A = “5 > 2” cioè “è vero che 5 è maggiore di 2? ” -> quindi A = 1§ A = “x > 2” cioè “è vero che x contiene un valore maggiore di 2? ” ->
quindi A = 1 se il valore contenuto in x è maggiore di 2
69
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Operazioni logiche fondamentali
• È possibile esprimere condizioni più complesse mediante gli operatori logici
• Operatori logici binari (con 2 operandi logici)§ Operatore OR, o somma logica§ Operatore AND, o prodotto logico
• Operatore logico unario (con 1 operando)§ Operatore NOT, o negazione, o inversione
• Esempi:§ “x < 5 AND x > 2” è vera se il valore di x è compreso nell’intervallo (2,5)§ “x > 5 OR x < 2” è vera se il valore di x è fuori dall’intervallo [2,5]
70
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Operatori logici di base e loro tabelle di verità
• Le tabelle delle verità elencano tutte le possibili combinazioni in ingresso e il risultato associato a ciascuna combinazione
• OR, AND e NOT vengono anche chiamati connettivi logici, perché funzionano come le congiunzioni coordinanti “o” ed “e”, e come la negazione “non”, del linguaggio naturale
A B A and B0 0 00 1 01 0 01 1 1
A B A or B0 0 00 1 11 0 11 1 1
A not A0 11 0
71
Somma logica Prodotto logico Negazione
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Espressioni logiche (o Booleane)
• Come le espressioni algebriche, le espressioni logiche sono costruite con:§ Variabili logiche (letterali), che possono assumere valore 0 o 1§ Operatori logici: and, or, not
• Esempi:A or (B and C)(A and (not B)) or (B and C)
• Precedenza: l’operatore “not” precede l’operatore “and”, che a sua volta precede l’operatore “or”
(A and (not B)) or (B and C) = A and not B or B and C
• Per ricordarlo, si pensi OR come “+” (più), AND come “´”(per) e NOT come “-” (cambia segno)
72
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tabelle di verità delle espressioni logiche
• La tabella delle verità di un’espressione generica specifica i valori di verità per tutti i possibili valori delle variabili
• Esempio:
A B NOT ( ( A OR B) AND ( NOT A ) )0 0 10 1 01 0 11 1 1
73
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Tabella di verità di un’espressione logica
• Costruire la tabella delle verità per l’espressionenot((A or B) and (not A))
A B X = A or B Y = not A Z = X and Y not Z
0 0 0 or 0 = 0 not 0 = 1 0 and 1 = 0 not 0 = 1
0 1 0 or 1 = 1 not 0 = 1 1 and 1 = 1 not 1 = 0
1 0 1 or 0 = 1 not 1 = 0 1 and 0 = 0 not 0 = 1
1 1 1 or 1 = 1 not 1 = 0 1 and 0 = 0 not 0 = 1
74
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Due esercizi
• Costruire la tabella delle verità per l’espressionenot((A or B) and (not A))
A B NOT ( ( A OR B) AND ( NOT A ) )0 0 0 1 1 0 1 1
0100
0011
1011
0011
0101
0111
1100
75
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Due esercizi
• Costruire la tabella delle verità per l’espressione(b or not c) and (a or not c)
A B C ( B OR NOT C ) AND ( A OR NOT C )0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
00110011
01010101
01010101
10101011
00001111
10101010
10101010
10111011
10101111
76
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Equivalenza tra espressioni
• Due espressioni logiche si dicono equivalenti (e si indica con Û) se hanno la medesima tabella di verità. La verifica è algoritmica. Per esempio:
• Espressioni logiche equivalenti modellano gli stessi stati di verità a fronte delle medesime variabili
A B not A and not B Û not (A or B)
0 0 1 and 1 = 1 not 0 = 1
0 1 1 and 0 = 0 not 1 = 0
1 0 0 and 1 = 0 not 1 = 0
1 1 0 and 0 = 0 not 1 = 0
77
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Proprietà dell’algebra di Boole
• L’algebra di Boole gode di svariate proprietà, formulabili sotto specie di identitৠ(cioè formulabili come equivalenze tra espressioni logiche, valide per
qualunque combinazione di valori delle variabili)
• Esempio celebre: le “Leggi di De Morgan”not (A and B) = not A or not B (1a legge)not (A or B) = not A and not B (2a legge)
78
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA
Proprietà dell’algebra di Boole
• Alcune proprietà somigliano a quelle dell’algebra numerica tradizionale:§ Proprietà associativa: A or (B or C) = (A or B) or C (idem per AND)§ Proprietà commutativa: A or B = B or A (idem per AND)§ Proprietà distributiva di AND rispetto a OR:
A and (B or C) = A and B or A and C§ … e altre ancora
• Ma parecchie altre sono alquanto insolite…§ Proprietà distributiva di OR rispetto a AND:
A or B and C = (A or B) and (A or C)§ Proprietà di assorbimento (A assorbe B):
A or A and B = A§ Legge dell’elemento 1: not A or A = 1§ … e altre ancora
79