Vero - Daniele Corti

annuncio pubblicitario
Algoritmi – Ing Daniele Corti FONDAMENTI DI
PROGRAMMAZIONE
 Dato e informazione
 Definizione di “algoritmo” e procedure risolutive
di semplici problemi.
 Rappresentazione di semplici algoritmi mediante
diagrammi di flusso o pseudocodifica.
 Differenza tra linguaggio naturale e linguaggio di
programmazione.
 L’algebra di Boole : funzioni di base (connettivi
logici) AND, OR, NOT e tavole di verità.
1
Algoritmi – Ing Daniele Corti Informazione
L’informazione è tutto ciò che possiede un significato per l’uomo,
e che può essere utilizzato o comunicato immediatamente o
conservato per usi futuri.
NB Ottenere o possedere informazioni, infatti, consente di
aumentare le nostre conoscenze su un fenomeno/attività da
svolgere oppure consente di prendere opportune decisioni in
riferimento ad una azione da svolgere.
Il concetto stesso di informazione presuppone che vi sia un
soggetto che trasmette l’informazione, l’emittente e uno che la
riceve e la utilizza, il ricevente.
Per trasmettere informazioni da un emittente a un ricevente serve
un oggetto o supporto (mezzo di trasmissione) con il quale
rappresentare l’informazione.
Informazione
Direzione da prendere
Possibilità di attraversare la strada
Fatto di cronaca
Regola grammaticale inglese
Determinazione di un’area
Supporto
Cartelli stradali
Semaforo
Pagina di un quotidiano
Manuale d’inglese
Formula matematica
Affinché le informazioni, trasmesse dall’emittente, siano ricevute
e comprese correttamente dal destinatario occorre che
quest’ultimo sia in grado di interpretare il linguaggio
dell’emittente.
Esempio1
Quando si deve decidere la strada da prendere a un bivio occorre
guardare i cartelli stradali che indicano i nomi delle varie città; il
linguaggio in questo caso è unico ed è quello che indica i nomi
delle città.
2
Algoritmi – Ing Daniele Corti Esempio2
Se un utente telefona ad un altro utente, il linguaggio usato dagli
utenti è quello della lingua italiana. Ma, affinché la comunicazione
possa avvenire attraverso il cavo telefonico, i suoni emessi dalla
nostra voce devono essere convertiti dall’apparecchio telefonico in
segnali elettrici e riconvertiti di nuovo in segnali acustici
dall’apparecchio telefonico di destinazione. Allora, in questo caso
l’informazione deve essere convertita in un codice di trasmissione
compatibile con il mezzo di trasmissione (in questo esempio il
cavo telefonico) che si è scelto per la trasmissione delle
informazioni.
Spesso, però, il linguaggio in cui è espressa l’informazione deve
essere convertito in un codice di trasmissione compatibile con il
mezzo che si è scelto per la trasmissione stessa.
I messaggi (le informazioni che il trasmittente vuole trasmettere al
destinatario) da trasmettere, costituiti da caratteri e simboli,
devono essere convertiti dal trasmettitore in una serie di segnali, e
in seguito devono essere riconvertiti dal ricevitore in messaggi
affinché il destinatario possa comprenderli.
Il mezzo di trasmissione è detto canale.
Dati
Per caratterizzare i fenomeni o per risolvere problemi del mondo
reale possiamo produrre dei dati. I dati possono così essere
memorizzati in un calcolatore per un trattamento futuro al fine di
produrre l’informazione. L’informazione potrà in questo modo
fornire una maggiore conoscenza della realtà, sulla quale si
intendono attivare operazioni di controllo, modifica o direzione.
3
Algoritmi – Ing Daniele Corti Dal Dato all’Informazione
Si evince, quindi, che esiste una differenza fra dato e
informazione. Il dato è l’elemento grezzo, elementare che
rappresenta un’entità o un fenomeno reale, mentre l’informazione
è un insieme di dati elaborati al fine di fornire all’utente un certo
grado di interesse.
Il trattamento dei dati per ottenere le informazioni è indicato con il
termine elaborazione.
DATI INFORMAZIONI ELABORAZIONE Comunicazione
Processo che consente lo scambio d’informazioni fra due entità
(uomo o macchina) nel rispetto di regole comuni (protocolli).
Linguaggi informatici
Linguaggio umano  linguaggio di programmazione 
linguaggio macchina
Vedi il file linguaggi.pdf per dettagli.
4
Algoritmi – Ing Daniele Corti Risoluzione di un problema
Per risolvere un problema in uno specifico ambito reale occorre
seguire le seguenti procedure:
 Analizzare il problema: individuazione le caratteristiche
fondamentali e gli elementi che entrano in gioco.
 Formalizzazione
del
problema:
rappresentazione
semplificata della realtà, che ne evidenzia solo gli aspetti più
importanti per la risoluzione del problema. Si costruisce
quindi un modello.
 Individuazione dei dati disponibili (input).
 Individuazione del processo risolutivo: dai dati d’ingresso
devo applicare una certa procedura che consenta di ottenere
dei risultati (output).
 Costruzione
del
processo
risolutivo:
stesura
dell’algoritmo.
 Esecuzione dell’algoritmo.
 Comunicazione dei risultati.
5
Algoritmi – Ing Daniele Corti DEF. DI ALGORITMO
L’algoritmo è la sequenza di passi, definiti con precisione e
chiaramente comprensibili per l’esecutore, che portano alla
realizzazione di un compito.
È la sequenza ordinata e finita di operazioni, definite con
precisione e chiaramente comprensibili per l’esecutore, che
l’esecutore deve compiere per raggiungere il risultato richiesto da
un problema.
L’esecutore è una “macchina astratta” capace di eseguire le
operazioni specificate dall’algoritmo.
L’esecutore può essere, quindi, l’uomo o un computer.
Il risolutore è colui che progetta il percorso di risoluzione di un
problema e successivamente l’algoritmo. Il risolutore,
nell’indicare la successione delle operazioni da eseguire, deve
sapere quale sarà l’esecutore.
6
Algoritmi – Ing Daniele Corti Proprietà algoritmo:
 Ogni operazione deve essere eseguita dall’esecutore in un
tempo finito.
 Ogni operazione non deve essere ambigua da parte
dell’esecutore.
 Il numero totale di operazioni dell’algoritmo deve essere
finito.
NB Non tutti i problemi sono risolvibili.
Esempi di algoritmi (risolutore = uomo)
 Le istruzioni di montaggio di un modellino.
 Le istruzioni di installazione di un software.
 La procedura per il calcolo del massimo comune divisore di
un insieme di numeri interi.
 Una ricetta di cucina.
VARIABILI
Sono nomi simbolici usati negli algoritmi per denotare i dati.
Possiamo immaginare di avere un contenitore nel calcolatore
utilizzabile per salvarci un dato.
Scrivendo l’operazione
X3
significa che nel contenitore X salverò il valore intero 3.
Operatore di assegnazione 
Consente l’assegnazione ad una variabile di un valore ottenuto dal
risultato di una qualsiasi espressione.
Esempio:
YX*2
Assegno alla variabile Y il risultato dell’espressione X * 2.
Se X vale 3 allora Y assumerà il valore 6.
7
Algoritmi – Ing Daniele Corti RAM
La RAM, la memoria di lavoro, può essere immaginata come una
sequenza di celle. Ogni cella può contenere un dato grande 1 Byte
(8 bit). La cella è individuata da un indirizzo numerico.
Ind.
0
1
n
Cella
……..
……..
Ad una cella possiamo dare un nome simbolico (Variabile); in
questo modo, l’istruzione di assegnazione x  3 indica che nella
memoria RAM esiste una cella a cui è stato attribuito il nome x e
al cui interno viene salvato il valore numerico 3.
STESURA DI UN ALGORITMO
RIGA DI INTESTAZIONE: nome dell’algoritmo
SEZIONE DICHIARATIVA: elenco dei dati (variabili in/out e
costanti/variabili di lavoro) che utilizza l’algoritmo.
SEZIONE ESECUTIVA: compresa fra le parole INIZIO e FINE
ed elenca le operazioni/istruzioni (dichiarazione, immissione,
assegnazione, controllo, scrittura) che l’esecutore deve compiere.
ESEMPIO 1
Si scriva un algoritmo per cercare il numero di telefono di una
persona noto il nome, il cognome e l’indirizzo usando l’elenco
telefonico.
Suggerimenti:
 Usare una scomposizione per passi.
 Considerare anche il caso in cui la persona non sia in elenco.
8
Algoritmi – Ing Daniele Corti  Provare a descrivere diverse procedure di ricerca.
ESEMPIO 2
Costruire un algoritmo per calcolare il prezzo di un prodotto sul
quale è praticato uno sconto.
DATI INPUT: il prezzo del prodotto (Prezzo), la percentuale di
sconto (Percentuale). La percentuale di sconto può essere
considerata una costante (es 20%).
DATI OUTPUT: lo sconto (Sconto), e il prezzo scontato
(PrezzoScontato).
RISOLUZIONE:
la formula per il calcolo dello sconto: Sconto = Prezzo *
Percentuale /100
la formula per il calcolo del prezzo scontato: PrezzoScontato =
Prezzo – Sconto
nell’algoritmo si deve prevedere:
 L’acquisizione del prezzo del prodotto
 Il calcolo dello sconto
 Il calcolo del prezzo scontato
 La comunicazione del valore calcolato
PSEUDOCODIFICA
Algoritmo ProdottoScontato
Dati costanti:
dichiara Percentuale come numero intero di valore 20
Dati variabili:
dichiara Prezzo, Sconto, PrezzoScontato come numeri reali
Inizio:
immetti Prezzo
assegna a Sconto: Prezzo * Percentuale /100
assegna a PrezzoScontato: Prezzo – Sconto
scrivi a video PrezzoScontato
Fine.
9
Algoritmi – Ing Daniele Corti ESEMPIO 3
Problema
Un automobilista si appresta ad attraversare un incrocio
semaforico. Formalizzare il problema mettendo in evidenza i dati,
le informazioni, le decisioni da intraprendere e quindi la procedura
risolutiva del problema.
Dati
Colore del semaforo, limiti di velocità
Informazione
Attraversare l’incrocio/fermarsi allo stop
Decisioni
Se Verde posso attraversare l’incrocio rispettando i limiti di
Velocità
Se Giallo devo rallentare e fermarmi allo stop
Se Rosso devo fermarmi allo stop
Processo risolutivo
Controllo il colore del semaforo
Se è verde accelero ed attraverso l’incrocio rispettando i
limiti di velocità.
Se invece è giallo decelero e mi fermo allo stop.
Se invece è rosso mi fermo allo stop.
10
Algoritmi – Ing Daniele Corti DIAGRAMMI DI FLUSSO - FLOWCHART
I diagrammi a blocchi (detti anche diagrammi di flusso, flow chart
in inglese) sono un linguaggio di modellazione grafico per
rappresentare gli algoritmi.
Blocchi elementari
Blocco iniziale
Blocco finale
INIZIO FINE Blocco INPUT
Blocco OUTUP
OUTPUT DATO INPUT DATO Blocco di controllo
Falso Frecce di connessione
Vero Test binario Blocco Operazione
Insieme di operazioni
INSIEME DI OPERAZIONE OPERAZIONE Una combinazione di blocchi elementari descrive un algoritmo se:
 Viene usato un numero finito di blocchi.
11
Algoritmi – Ing Daniele Corti 

Lo schema inizia con un blocco iniziale e termina con un
blocco finale.
Ogni blocco soddisfa delle condizioni di validità.
Condizioni di validità
 condizioni sui blocchi:
o blocco azione e blocco lettura/scrittura: ogni blocco di
questi due tipi ha una sola freccia entrante e una sola
freccia uscente
o blocco di controllo: ogni blocco di questo genere ha una
sola freccia entrante e due frecce uscenti
 condizioni sulle frecce:
o ogni freccia deve entrare in un blocco
 condizioni sui percorsi:
o dal via deve essere possibile raggiungere ogni blocco
o da ogni blocco deve essere possibile raggiungere il
blocco finale
GRAFO DI FLUSSO - approfondimento
Dalla matematica, il grafo è un ente matematico costituito da due insiemi: un insieme di nodi (o vertici) e un insieme di
archi (o rami).
Nel campo informatico il flow chart lo possiamo rappresentare mediante un grafo (orientato) in cui:
 i nodi sono blocchi di istruzioni o le istruzioni condizionali
 gli archi rappresentano i possibili flussi di esecuzione
Un grafo informatico contiene:
 un blocco iniziale
 un blocco finale
 un numero finito di blocchi di azione
 un numero finito di blocchi di controllo
per il quale valgono le seguenti condizioni:
12
Algoritmi – Ing Daniele Corti 1.
2.
3.
4.
5.
Ciascun blocco di AZIONE ha una freccia entrante ed una uscente (fig.1);
Ciascun blocco di CONTROLLO ha una freccia entrante e due uscenti (fig.2);
Ciascuna FRECCIA entra in un blocco oppure si inserisce in un’altra freccia (fig. 3a e 3b);
Ciascun blocco è raggiungibile dal blocco INIZIALE;
Il blocco FINALE è raggiungibile dal blocco iniziale
Strutture di controllo
All’interno di un algoritmo le istruzioni sono organizzate nei soli
seguenti possibili modi:
 Sequenza
 Selezione (binaria)
 Iterazione.
Sequenza
istruzioneA
istruzioneB
………….
istruzioneN
L’algoritmo è costituito da 1 o più istruzioni eseguite in sequenza
una dopo l’altra.
Equivalente, una sequenza di istruzioni può essere sostituita da un
unico blocco, come indicato nella seguente figura:
SottoProgramma
Questa sostituzione è lecita se si pensa di scomporre il programma
in sottoprogrammi e ogni sottoprogramma in un certo numero
istruzioni; ogni sottoprogramma svolge una determinata
13
Algoritmi – Ing Daniele Corti operazione. Un sottoprogramma può anche essere costituito da
una sola istruzione.
Selezione binaria (o alternativa)
Consente di fare la scelta tra due possibili alternative.
……………………….
SE condizione
ALLORA
sottoprogramma1
ALTRIMENTI
Sottoprogramma2
FINE SE
………………………..
Iterazione
……………….
ESEGUI
sottoprogramma1
RIPETI FINCHE’ condizione
……………..
Viene eseguito il sottoprogramma1 finché non diventa vera la
condizione.
14
Algoritmi – Ing Daniele Corti Esempio 1: l’esecutore è il calcolatore.
Si vuole acquisire da tastiera due numeri (base e altezza di un
rettangolo) e calcolarne l’area e successivamente comunicare
all’utente (sul suo monitor) il risultato del calcolo:
INIZIO INPUT BASE
INPUT ALTEZZA
AREA  BASE * ALTEZZA OUTPUT AREA
FINE 15
Algoritmi – Ing Daniele Corti Esempio 2: l’esecutore è l’essere umano.
che molto semplicemente descrive la situazione in cui alla mattina suona la sveglia e bisogna capire se alzarsi dal letto oppure no. 16
Algoritmi – Ing Daniele Corti LINGUAGGI
1) LINGUAGGI ARTIFICIALI (DI PROGRAMMAZIONE)
a) LINGUAGGI A BASSO LIVELLO
b) LINGUAGGIO MACCHINA
c) LINGUAGGIO ASSEMBLY
2) LINGUAGGI AD ALTO LIVELLO
a) LINGUAGGI NATURALI
LINGUAGGI NATURALI
I linguaggi naturali sono i linguaggi che gli esseri umani
apprendono spontaneamente da bambini quando imparano a
parlare, di cui si servono nella vita quotidiana, che si tramandano
da generazioni in generazioni, e che consentono di comunicare e
capirsi e scambiarsi informazioni.
LINGUAGGI DI PROGRAMMAZIONE
I linguaggi di programmazione sono analoghi ai linguaggi
naturali, con la differenza che vengono usati per comunicare con
una macchina.
I linguaggi di programmazione consentono di scrivere programmi,
visti come sequenze di istruzioni/operazioni.
Come i linguaggi naturali sono caratterizzati dalle seguenti
componenti:
 Insieme di simboli (alfabeto) e di parole (dizionario) che
possono essere usati per formare le frasi del linguaggio.
 Insieme di regole grammaticali (sintassi) per definire le frasi
corrette composte dalle parole del linguaggio.
 Significato (semantica) delle frasi del linguaggio.
 Per utilizzare correttamente un linguaggio è necessario
conoscerne la pragmatica (ad es: quali frasi è opportuno
usare a seconda del contesto).
17
Algoritmi – Ing Daniele Corti I linguaggi di programmazione, a differenza dei linguaggi naturali,
non devono essere ambigui e devono essere formalizzati (definiti
in maniera non equivocabile).
I linguaggi di programmazione sono strumenti per comunicare ad
una macchina come risolvere un problema.
Sono, quindi, strumenti per la comunicazione uomo-macchina.
Permettono di esprimere e rappresentare i programmi:
programmi = algoritmi + strutture dati
comprensibili ed eseguibili da una macchina.
LINGUAGGIO MACCHINA
Il linguaggio macchina è il linguaggio immediatamente
comprensibile da una macchina (calcolatore, elaboratore, sistema
di elaborazione).
 Istruzioni e dati sono sequenze di numeri binari.
 Le istruzioni operano direttamente sull’hardware (registri,
locazioni di memoria, unità fisiche di I/O del calcolatore).
 Sono specifici per un determinato processore o famiglia di
processori.
 Assumono il modello computazionale di Von Neumann.
LINGUAGGIO ASSEMBLY
Non potendo il programmatore ricordarsi a quale sequenza binaria
corrisponde una determinata operazione può utilizzare il
linguaggio assembly che è la forma simbolica del linguaggio
macchina. In questo linguaggio si usano nomi simbolici (esempio:
ADD A, LOAD A, ecc) al posto dei codici binari (sequenze di zeri
e uni) per le operazioni e le locazioni di memoria delle macchine.
LINGUAGGIO AD ALTO LIVELLO
Il linguaggio ad alto livello permette di scrivere programmi con un
linguaggio più vicino a quello naturale.
 Sono definiti astraendo rispetto alla macchina fisica.
18
Algoritmi – Ing Daniele Corti  Realizzano una macchina virtuale sovrastante alla macchina
fisica e visibile al programmatore.
 Richiedono di essere implementati su un particolare sistema
di calcolo tramite strumenti opportuni (compilatori o
interpreti).
LIVELLI DI RAPPRESENTAZIONE E MACCHINE
ASTRATTE
ESEMPIO
Calcolo della somma S di due numeri A e B
Linguaggio macchina Linguaggio Assembly 00000010101111001010 LOAD A (A  UN DATO IN)
00000010111111001000 ADD B (A  A + B) Linguaggio ad alto livello S = A + B Linguaggio naturale Alla variabile S assegno la somma della variabile A e della variabile B Es: Pascal, C, C++, C#, Visual Basic, Java
19
Algoritmi – Ing Daniele Corti ALGEBRA BOOLEANA
 L’algebra booleana deve il suo nome a
Boole che ne formalizzò le regole.
 L’algebra di Boole opera solo su variabili,
cioè che possono assumere solo due
valori (0,1).
 Tali variabili vengono dette logiche o
booleane; i valori che possono assumere
sono solo due:
o (1, 0)
o (Vero, Falso)
o (On, Off)
o (Close, Open)
 Le variabili si possono indicare con le
lettere A, B, C, X, Y, W, Z.
 Il valore 1 è solitamente associato alla
condizione logica Vero, mentre lo 0 è
associato alla condizione logica Falso.
 L’algebra booleana è adatta per
rappresentare “eventi binari”, cioè
condizioni che possono assumere solo
due valori. Esempio: una lampadina può
essere accesa (a questa condizione si
20
Algoritmi – Ing Daniele Corti associa il valore 1 o Vero) oppure spenta
(valore 0 o Falso).
 Le operazioni di base nell’algebra booleana
sono:
o AND ( • )
o OR
(+)
o NOT ( ¯ )
 Possiamo definire questi operatori
tramite le tabella di verità.
 Tramite questa algebra si possono
comporre espressioni logiche che
possono essere Vere o False. Esempio:
(x AND y) OR z.
PROPOSIZIONI DICHIARATIVE
PROPOSIZIONE = SOGGETTO + VERBO
PROPOSIZIONE DICHIARATIVA
È una proposizione nei confronti della quale è possibile stabilire se
è vera o se è falsa.
Vero e Falso sono gli unici valori che può assumere una
proposizione dichiarativa.
La proposizione che non può sussistere in altre proposizioni, si
dice elementare.
21
Algoritmi – Ing Daniele Corti Il valore di una proposizione dichiarativa (Vero o Falso) può
essere espresso in vari modi, a seconda del contesto.
Generalmente, si attribuisce alla cifra numerica uno il significato
di Vero, mentre a zero si attribuisce il valore Falso.
La variabile che può assumere solo il valore risultante da una
proposizione dichiarativa, è una variabile logica.
Un'espressione logica è quella che produce un risultato Vero o
Falso. L'espressione logica può essere costituita da proposizioni
dichiarative, da valori costanti (espressi secondo la forma prevista
per rappresentare Vero o Falso) e da variabili logiche. Per
connettere o comunque per intervenire nei valori delle varie
componenti dell'espressione, si utilizzano degli operatori.
CONNETTIVI LOGICI
Si distinguono generalmente gli operatori logici in «unari» e in
«connettivi logici», per distinguere se intervengono in un solo
valore logico, oppure su due o più valori logici. Gli operatori
logici si possono vedere come delle scatoline, che hanno uno o più
ingressi, con una sola uscita.
Gli operatori logici unari ottengono in ingresso un solo valore
logico; sono disponibili l'invertitore logico (NOT) e il noninvertitore logico.
L'invertitore logico è l'operatore unario che inverte il valore logico
ricevuto in ingresso: se in ingresso riceve il valore Vero (1), in
uscita genera il valore Falso (0); se in ingresso riceve il valore
Falso (0), in uscita genera il valore Vero (1).
A titolo di esempio, se la variabile logica «A» contiene il risultato
della proposizione dichiarativa «Antonio mangia», l'espressione
22
Algoritmi – Ing Daniele Corti logica «NOT A» è equivalente alla proposizione dichiarativa
«Antonio non mangia».
I connettivi logici sono gli operatori che utilizzano due ingressi. Il
connettivo AND restituisce il valore Vero solo se entrambi i valori
in ingresso sono pari a Vero. Per esempio, se la variabile logica
«A» contiene il risultato della proposizione dichiarativa «Antonio
mangia» e la variabile «B» contiene il risultato di «Piero legge»,
l'espressione «A AND B» equivale alla proposizione «Antonio
mangia e Piero legge».
Il connettivo OR restituisce il valore Vero se almeno uno dei due
ingressi dispone di un valore pari a Vero. Per esempio, se la
variabile logica «A» contiene il risultato della proposizione
dichiarativa «Antonio mangia» e la variabile «B» contiene il
risultato di «Piero legge», l'espressione «A OR B» equivale alla
proposizione «Antonio mangia e/o Piero legge».
Tabella: Tavola di verità dei connettivi and, or e not
X Y not X not Y X and Y X or Y not(X or Y)
(not X) and
(not Y)
0 0
1
1
0
0
1
1
0 1
1
0
0
1
0
0
1 0
0
1
0
1
0
0
1 1
0
0
1
1
0
0
23
Algoritmi – Ing Daniele Corti CONNETTIVO LOGICO AND Se “il NomeUtente è corretto” e “la Password è corretta” allora “puoi accedere al sistema”. Proposizione1 Proposizione2 Espressione NomeUtente Password è è corretto corretta …… puoi accedere al sistema FALSO FALSO FALSO FALSO VERO FALSO 24
Algoritmi – Ing Daniele Corti VERO FALSO FALSO VERO VERO VERO Se quindi indico con A la variabile logica associata alla proposizione dichiarativa “il nome Utente è corretto” (e A può assumere solo lo stato VERO o FALSO) e con B indico la variabile logica associata alla proposizione dichiarativa “la Password è corretta” allora l’espressione Y = A and B equivale alla proposizione “Il nome Utente è corretto e la Password è corretta”. Y = A and B A B Y
25
Algoritmi – Ing Daniele Corti 0 0 0
0 1 0
1 0 0
1 1 1
26
Algoritmi – Ing Daniele Corti CONNETTIVO LOGICO OR Se “supero l’esame di Fisica” oppure “supero l’esame di Elettrotecnica” allora “posso accedere all’esame di Elettronica” Fisica Elettrotecnica Espressione FALSO FALSO FALSO FALSO VERO VERO VERO FALSO VERO VERO VERO VERO 27
Algoritmi – Ing Daniele Corti Y = A or B A B Y 0 0 0 0 1 1 1 0 1 1 1 1 CONNETTIVO LOGICO NOT il monitor è funzionante Espressione1 Negazione(Espressione1)
monitor funzionante monitor non funzionante
28
Algoritmi – Ing Daniele Corti VERO FALSO FALSO VERO Y = not A ES: SE A=0 ALLORA Y=1 SE A=1 ALLORA Y=0 29
Algoritmi – Ing Daniele Corti Esempio (da completare):
un alunno supera l’anno se si verifica almeno una delle seguenti
condizioni:
 Supera sia il primo quadrimestre sia il secondo quadrimestre.
 Non supera il primo quadrimestre, ma supera sia la prova
comune sia il secondo quadrimestre.
Assegniamo ad ogni evento una variabile booleana:
x primo quadrimestre
y  prova comune
z  secondo quadrimestre
Con tre variabili ci sono 23 = 8 possibili combinazioni.
La tabella della verità della funzione booleana “superamento
dell’anno” S(x, y, z) = (x AND z) OR (NOT x AND y AND z)
sarà:
x
y
Z
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
S
30
Algoritmi – Ing Daniele Corti 31
Scarica