Algoritmi Ing Daniele Corti FONDAMENTI DI...
Transcript of Algoritmi Ing Daniele Corti FONDAMENTI DI...
Algoritmi – Ing Daniele Corti
1
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à.
Algoritmi – Ing Daniele Corti
2
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 Supporto Direzione da prendere Cartelli stradali Possibilità di attraversare la strada Semaforo Fatto di cronaca Pagina di un quotidiano Regola grammaticale inglese Manuale d’inglese Determinazione di un’area 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à.
Algoritmi – Ing Daniele Corti
3
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.
Algoritmi – Ing Daniele Corti
4
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.
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.
ELABORAZIONE
DATI INFORMAZIONI
Algoritmi – Ing Daniele Corti
5
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.
Algoritmi – Ing Daniele Corti
6
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.
Algoritmi – Ing Daniele Corti
7
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.
Algoritmi – Ing Daniele Corti
8
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. Cella 0 1 …….. n ……..
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.
Algoritmi – Ing Daniele Corti
9
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.
Algoritmi – Ing Daniele Corti
10
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.
Algoritmi – Ing Daniele Corti
11
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
Blocco INPUT Blocco OUTUP
Blocco di controllo Frecce di connessione
Blocco Operazione Insieme di operazioni
Una combinazione di blocchi elementari descrive un algoritmo se:
Viene usato un numero finito di blocchi.
INPUT DATO
FINE
OUTPUT DATO
INIZIO
Test
binario
Vero Falso
OPERAZIONE
INSIEME DI
OPERAZIONE
Algoritmi – Ing Daniele Corti
12
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:
Algoritmi – Ing Daniele Corti
13
1. Ciascun blocco di AZIONE ha una freccia entrante ed una uscente (fig.1); 2. Ciascun blocco di CONTROLLO ha una freccia entrante e due uscenti (fig.2); 3. Ciascuna FRECCIA entra in un blocco oppure si inserisce in un’altra freccia (fig. 3a e 3b); 4. Ciascun blocco è raggiungibile dal blocco INIZIALE; 5. 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: 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
SottoProgramma
Algoritmi – Ing Daniele Corti
14
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.
Algoritmi – Ing Daniele Corti
15
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
Algoritmi – Ing Daniele Corti
16
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.
Algoritmi – Ing Daniele Corti
17
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).
Algoritmi – Ing Daniele Corti
18
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.
Algoritmi – Ing Daniele Corti
19
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 Linguaggio naturale S = A + B Alla variabile S assegno la
somma della variabile A e della variabile B
Es: Pascal, C, C++, C#, Visual Basic, Java
Algoritmi – Ing Daniele Corti
20
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
Algoritmi – Ing Daniele Corti
21
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.
Algoritmi – Ing Daniele Corti
22
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 non-invertitore 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
Algoritmi – Ing Daniele Corti
23
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
Algoritmi – Ing Daniele Corti
24
CONNETTIVO LOGICO AND
Se
“il NomeUtente è corretto”
e
“la Password è corretta”
allora
“puoi accedere al sistema”.
Proposizione1 Proposizione2 Espressione
NomeUtente
è corretto
Password è
corretta
…… puoi
accedere al
sistema
FALSO FALSO FALSO
FALSO VERO FALSO
Algoritmi – Ing Daniele Corti
25
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
Algoritmi – Ing Daniele Corti
26
0 0 0
0 1 0
1 0 0
1 1 1
Algoritmi – Ing Daniele Corti
27
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
Algoritmi – Ing Daniele Corti
28
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
Algoritmi – Ing Daniele Corti
29
VERO FALSO
FALSO VERO
Y = not A
ES:
SE A=0 ALLORA Y=1
SE A=1 ALLORA Y=0
Algoritmi – Ing Daniele Corti
30
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 S
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Algoritmi – Ing Daniele Corti
31