Top Banner
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à.
31

Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

Feb 16, 2019

Download

Documents

phamtuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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à.

Page 2: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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à.

Page 3: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 4: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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 

Page 5: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 6: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 7: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 8: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 9: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 10: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 11: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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 

Page 12: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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:

Page 13: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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

Page 14: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 15: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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 

Page 16: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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. 

Page 17: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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).

Page 18: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 19: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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

Page 20: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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

Page 21: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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.

Page 22: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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

Page 23: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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

Page 24: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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 

Page 25: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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

Page 26: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

Algoritmi – Ing Daniele Corti 

  26

0 0 0

0 1 0

1 0 0

1 1 1

 

 

 

 

 

 

 

 

 

 

 

Page 27: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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 

 

Page 28: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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

Page 29: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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 

 

 

 

Page 30: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

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

Page 31: Algoritmi Ing Daniele Corti FONDAMENTI DI PROGRAMMAZIONEwin.ingdanielecorti.it/dispense/computerscience/level2/Teoria/01...1 FONDAMENTI DI PROGRAMMAZIONE Dato e informazione Definizione

Algoritmi – Ing Daniele Corti 

  31