79
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA INFORMATICA B Ingegneria Elettrica Introduzione agli algoritmi

INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

Embed Size (px)

Citation preview

Page 1: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

INFORMATICA BIngegneria Elettrica

Introduzione agli algoritmi

Page 2: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 3: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 4: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 5: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Alcuni calcolatori del passato

5

http://en.wikipedia.org/wiki/Enigma_machine

Page 6: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 7: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 8: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 9: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 10: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 11: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 12: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 13: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 14: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 15: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 16: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 17: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 18: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 19: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 20: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 21: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 22: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 23: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 24: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 25: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 26: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 27: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 28: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 29: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 30: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 31: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 32: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 33: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 34: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 35: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 36: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 37: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 38: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 39: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 40: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA

Teorema di Jacopini e Böhm

40

• Sbagliato!I due cicli si «intersecano»

• Corretto

Page 41: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 42: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 43: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 44: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 45: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 46: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 47: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 48: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 49: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 50: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 51: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 52: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 53: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 54: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 55: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 56: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 57: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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)

Page 58: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 59: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 60: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 61: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 62: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 63: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 64: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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 π, 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

Page 65: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 66: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 67: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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 -

Page 68: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 69: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 70: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 71: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 72: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 73: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 74: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 75: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 76: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 77: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 78: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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

Page 79: INFORMATICA B Ingegneria Elettrica - WordPress.com · 02/02/2013 · Introduzione agli algoritmi. ... § Permettono di acquisire dati dall’utente e visualizzare risultati ... tre

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