Università di Modena e Reggio Emilia CORSO INTRODUTTIVO DI INFORMATICA (per gli studenti del primo anno di Ingegneria Informatica ed Elettronica) ARGOMENTI: • Introduzione e presentazione del corso • Parte I: Elementi di Logica o Proposizioni e predicati o Operazioni con le proposizioni o Formule proposizionali o Formule equiveridiche o Proprietà delle operazioni logiche o Tautologie o Predicati o Operazioni logiche con i predicati o Algebra di Boole Assiomi dell’algebra di Boole Teoremi dell’algebra di Boole Espressioni booleane Funzioni booleane • Parte II: L’informatica: dal problema al programma o Definizione di informatica o Il concetto di algoritmo o I diagrammi di flusso (flow chart) o Blocchi fondamentali dei diagrammi di flusso o Scomposizione dei problemi: la strategia top‐down PARTE I: Elementi di Logica 1. Proposizioni e Predicati Consideriamo le seguenti frasi: 1) Giove è un pianeta. 2) 6 è maggiore di 3. 3) Dante ha scritto la “Divina Commedia”. 4) I rettangoli hanno cinque lati. 5) Lisbona è la capitale della Francia. 6) 2 è multiplo di 5. 7) Matteo sarà bocciato all’esame di Fondamenti di Informatica. 8) Questo documentario è molto interessante. 9) Che ore sono? 10) Telefona a Giovanni! 1‐3 Æ possiamo dire che sono Vere. 4‐6 Æ possiamo dire che sono False. 7‐8 Æ non possiamo dire con sicurezza se sono Vere o False. 9‐10 Æ non ha senso chiedersi se sono Vere o False. PROPOSIZIONE o ENUNCIATO: (in matematica) ogni espressione linguistica o frase per la quale si possa stabilire con certezza se è vera o falsa. OVVERO Una PROPOSIZIONE è una frase alla quale ha senso associare uno ed uno solo dei sue valori di verità vero (V) o falso (F). 1‐6 Æ sono eunciati 7‐10 Æ no 2. Operazioni con le proposizioni (Corso introduttivo di) matematica Æ si possono eseguire operazioni con numeri e insiemi. Anche con le proposizioni si può operare: su un solo enunciato o connettendo tra loro due o più enunciati mediante operatori e connettivi in modo da ottenere nuovi enunciati. Esempi: Connettivi: e, o, se…allora, se e solo se, ... Operatore di negazione: non E.g.: a) b) c) d) e) Claudia è bionda e ha gli occhi azzurri. Claudia è bionda o ha gli occhi azzurri. Claudia non è bionda. Se piove allora la strada è bagnata. Il numero naturale n è pari se e solo se n è divisibile per 2. (…quali operatori e connettivi??) Æ CALCOLO DELLE PROPOSIZIONI o CALCOLO DEGLI ENUNCIATI Problema fondamentale: stabilire il valore di verità di una proposizione composta a partire dalla conoscenza dei valori di verità degli operatori componenti. 2.1. Congiunzione di due proposizioni Particella “e” nel linguaggio comune significa “e contemporaneamente” Æ in logica, connettivo congiunzione (Λ) Def: si definisce congiunzione di due proposizioni p e q e si indica con p Λ q (e si legge “p e q” o “p et q”) la proposizione che è vera se p e q sono contemporaneamente vere, mentre è falsa in ogni altro caso. Tavola (o tabella) di verità (mostra i valori di verità della congiunzione dati i possibili valori di verità delle proposizioni p e q): p q p Λ q V V V V F F F V F F F F Esempi: 1) p: Claudia è bionda. q: Claudia ha gli occhi azzurri. p Λ q : … (quando è V e F…) 2) p: 12 è divisibile per 3. (V) q: 12 è divisibile per 2. (V) p Λ q : … (quando è V e F…) 3) p: 24 è multiplo di 6. (V) q: 24 è multiplo di 7. (F) p Λ q : … (quando è V e F…) Æ OPERAZIONE BINARIA di CONGIUNZIONE (binaria: opera su due; interna: il risultato è ancora una proposizione). Detta anche INTERSEZIONE (o PRODOTTO LOGICO) tra due proposizioni. 2.2. Disgiunzione di due proposizioni Particella “o” nel linguaggio comune significa “oppure” (in senso alternativo come il VEL latino)Æ in logica, connettivo disgiunzione (V) Def: si definisce disgiunzione di due proposizioni p e q e si indica con p V q (e si legge “p o q” o “p vel q”) la proposizione che è vera se almeno una delle due proposizioni p o q è vera ed è falsa se entrambe le proposizioni sono false. Tavola di verità: p q p V q V V V V F V F V V F F F Esempi: 1) p: Claudia è bionda. q: Claudia ha gli occhi azzurri. p V q : … (quando è V e F…) 2) p: 21 è divisibile per 7. (V) q: 21 è pari. (F) p V q : … (quando è V e F…) 3) p: 3 è maggiore di 7. (F) q: 3 è divisibile per 2. (F) p V q : … (quando è V e F…) Æ OPERAZIONE BINARIA di DISGIUNZIONE (binaria: opera su due; interna: il risultato è ancora una proposizione). Detta anche UNIONE (o SOMMA LOGICA) tra due proposizioni. 2.3. Negazione di una proposizione Particella “non” nel linguaggio comune Æ in logica, operatore negazione Def: si definisce negazione di una proposizioni p e si indica con il simbolo ¬ p (e si legge “non p” o “p negato”) la proposizione che è falsa se p è vera ed è vera se p è falsa. Tavola di verità: p ¬ p V F F V Esempi: 1) p: il rettangolo ha 4 angoli retti. (V) ¬ p: … Æ (F) 2) p: 10 è divisibile per 3. (F) ¬ p: … Æ (V) Æ OPERAZIONE UNARIA di NEGAZIONE (unaria: opera su una sola proposizione; interna: il risultato è ancora una proposizione). NOTE (Differenze rispetto al Linguaggio Comune): 1) In logica si considera il valore di verità di un enunciato prescindendo dal significato dell’enunciato stesso. Esempio: p: Roma è capitale di Italia. (V) q: 5 è un numero primo. (V) p Λ q è vera anche se non ha alcun significato, nel linguaggio comune, fare una simile affermazione. 2) “e” nel linguaggio comune è usata anche in senso temporale (“e successivamente”) e aggiuntivo (“e anche”) . Esempio: Studio e vado dalla parrucchiera. Studio analisi e inglese. 3) “o” nel linguaggio comune è usata anche con significato di disgiunzione esclusiva (l’OUT dei latini). Esempio: p: Lucia ascolta la radio. q: Lucia guarda la tv. pVq: Lucia ascolta la radio o guarda la tv. Nel linguaggio comune pVq può significare: a) stesso significato che in logica b) Lucia o ascolta solamente la radio o guarda solamente la tv. 4) Errori comuni con la negazione. ESEMPI: 1) p: talvolta al cinema mi addormento. Negazione: ¬ p: non è vero che talvolta al cinema mi addormento. oppure anche: ¬ p: al cinema non mi addormento mai . Mentre è sbagliata (!!): talvolta al cinema non mi addormento. 2) p: tutti gli studenti del corso di geometria sono stati promossi. Negazione: ¬ p: non (è vero che) tutti gli studenti del corso di geometria sono stati promossi. oppure anche: ¬ p: almeno uno studente del corso di geometria non è stato promosso. Sbagliata (!!): tutti gli studenti del corso di geometria non sono stati promossi. o anche: nessuno degli studenti del corso di geometria è stato promosso. 5) Negazione della negazione. Tavola di verità: p ¬ p ¬ ¬ p V F V F V F Per cui: ¬ ¬ p = p (ovvero, due negazioni affermano). Esempio: p: posseggo una calcolatrice. ¬ p: non posseggo una calcolatrice. ¬ ¬ p: non è vero che non posseggo una calcolatrice. (ossia, ¬ ¬ p: posseggo una calcolatrice) Mentre nel linguaggio comune due negazioni non sempre affermano. (Es. “non posseggo nessuna calcolatrice” ha lo stesso significato di ¬ p). ESERCIZIO (dalla Prova di Ammissione al I anno delle Facoltà di Ingegneria 2004): L’affermazione: “Non tutte le ciambelle escono col buco”, a quale delle seguenti affermazioni equivale? A. B. C. D. E. Non tutto ciò che non è col buco è ciambella Alcune ciambelle sono migliori delle altre Tutte le ciambelle non riescono col buco Alcune ciambelle non riescono col buco Non tutto ciò che è col buco è ciambella Soluzione: Risposta D. 2.4. Implicazione materiale Connettivo “se…allora…”. Def: si definisce implicazione materiale di due proposizioni p e q e si indica con p Æq (e si legge “se p allora q” o “p implica q” o “da p segue q”) la proposizione che è falsa nel caso p sia vera e q sia falsa ed è vera negli altri casi. Tavola di verità (p: antecedente, q: conseguente) : p q p Æq V V V V F F F V V F F V Esempi: 1) p: 8 è un numero pari (V) q: 9 è un numero dispari (V) p Æ q : … (V). In pieno accordo con la “logica” del linguaggio comune. 2) p: Parigi è la capitale della Francia. (V) q: 7 è maggiore di 5. (V) p V q : … (V). Lontana dalla “logica” del linguaggio comune, perché le due proposizioni non sono omogenee (geografia e aritmetica) e non c’è alcun nesso logico. Questa si chiama infatti implicazione materiale (Æ), da non confondere con la implicazione logica (⇒) che si affronterà in seguito. 3) a: 25 è un numero pari. (F) b: Milano è una città spagnola. (F) c: il gatto è un felino. (V) a Æ b: … (V) a Æ c: … (V) c Æ a: … (F) Æ OPERAZIONE BINARIA DI IMPLICAZIONE MATERIALE (binaria e interna). OSS: L’operazione di implicazione materiale non è commutativa! OSS: L’operazione di implicazione materiale è transitiva! (per cui se p Æ q Λ qÆr si ha che pÆr) Esempio: 1) a: Boby è un cane b: Boby è un mammifero c: Boby è un vertebrato aÆb Λ bÆc per cui si ha che: aÆc 2) “Se studierò sarò promosso e se sarò promosso riceverò un premio” a: studierò b: sarò promosso c: riceverò un premio ESERCIZIO (dalla Prova di Ammissione al I anno delle Facoltà di Ingegneria 2004): Una norma del Codice Civile stabilisce: “Se si fuma in un ambiente pubblico chiuso, allora si viene multati”. Si esamino i seguenti 4 casi: 1) 2) 3) 4) Silvio ha fumato in un ambiente pubblico chiuso ed è stato multato; Silvio ha fumato in un ambiente pubblico chiuso e non è stato multato; Silvio non ha fumato in un ambiente pubblico chiuso ed è stato multato; Silvio non ha fumato in un ambiente pubblico chiuso e non è stato multato; In quali di questi casi la norma è stata violata? A. B. C. D. E. In tutti i casi Nel solo caso 1) Nel solo caso 2) Nel solo caso 3) Nei casi 2) e 3) Soluzione: Risposta C. ESERCIZIO (dalla Prova di Ammissione al I anno delle Facoltà di Ingegneria 2004): E’ stato commesso un assassinio. Il commissario De Acutis, incaricato delle indagini, sa con certezza che: 1. l’assassino deve essere alto meno di 1,60 m oppure deve pesare meno di 60 kg 2. Se l’assassino è una donna, deve essere bionda. Tra gli indiziati c’è il signor Tapino che è alto 170 cm. Quale delle seguenti affermazioni è necessariamente vera? A. B. C. D. E. Se è biondo, non può essere l’assassino. Tapino non può essere l’assassino perché è alto 170 cm. Se pesa meno di 60 kg è l’assassino. Se Tapino pesa 70 kg, non è l’assassino. Tapino è l’assassino perché è un maschio bruno. Soluzione: Risposta D. 2.5. Coimplicazione materiale Connettivo “se e solo se”. Def: si definisce coimplicazione materiale di due proposizioni p e q e si indica con p q (e si legge “p se e solo se q” o “p coimplica q”) la proposizione che è vera quando p e q hanno lo stesso valore di verità e falsa in caso contrario. Tavola di verità: p q p q V V V V F F F V F F F V Esempio: p: 7 è un numero primo. (V) q: il quadrato è un poligono. (V) r: il Po è una montagna. (F) s: 8 è multiplo di 5. (F) p q: … (V) r s: … (V) p r: … (F) p s: … (F) q r: … (F) q s: … (F) NOTA: L’operazione di coimplicazione materiale è commutativa! Æ OPERAZIONE BINARIA DI COIMPLICAZIONE MATERIALE (binaria e interna). 3. Formule proposizionali. p, q: proposizioni atomiche (non decomponibili in altre più semplici per le quali abbia senso parlare di V o F). p Λ q, p V q, ¬ p, p Æq, p q: proposizioni composte o molecolari. Collegando mediante le operazioni logiche più proposizioni atomiche o composte si ottengono delle nuove proposizioni dette FORMULE PROPOSIZONALI. Esempi: 1) Calcolare il valore di verità della formula: f = [(p Λ q) V p] p q p Λ q f = [ ( pΛq) V p] V V V V V F F V F V F F F F F F NOTA: se la formula contiene n proposizioni atomiche, la relativa tabella avrà 2n righe. 2) Calcolare il valore di verità della formula: f = {[ (aÆb) Λ (cƬa) V (a c) ]} a b c aÆb ¬ a cƬa (aÆb) Λ (cƬa) a c f = {[ (aÆb) Λ (cƬa) V (a c) ]} V V V V F F F V V V V F V F V V F V V F V F F F F V V V F F F F V F F F F V V V V V V F V F V F V V V V V V F F V V V V V F V F F F V V V V V V 4. Formule equiveridiche. Due formule proposizionali f1 e f2 contenenti le stesse proposizioni atomiche si dicono equiveridiche o uguali logicamente se hanno lo stesso valore di verità quali che siano i valori di verità delle proposizioni componenti, e si scrive: f1≡f2 (oppure anche f1=f2). Esempi: 1) Dimostrare che le due formule seguenti sono equiveridiche f1=pΛq f2= ¬ (pÆ(¬q)) p Q f1=pΛq ¬q (pÆ(¬q)) f2= ¬ (pÆ(¬q)) V V V F F V V F F V V F F V F F V F F F F V V F 2) Dimostrare che p q ≡ (pÆq) Λ (qÆp) p Q p q pÆq qÆp (pÆq) Λ (qÆp) V V V V V V V F F F V F F V F V F F F F V V V V 5. Proprietà delle operazioni logiche PROPRIETÀ DI IDEMPOTENZA della congiunzione e delle disgiunzione pΛp = p pVp = p PROPRIETÀ COMMUTATIVA della congiunzione e delle disgiunzione pΛq= qΛp pVq = qVp PROPRIETÀ DELLA COMPLEMENTARIETÀ (legge della doppia negazione) ¬¬p=p PROPRIETÀ ASSOCIATIVA della congiunzione e delle disgiunzione (p Λ q) Λ r = p Λ (q Λ r) (p V q) V r = p V (q V r) PROPRIETÀ DISTRIBUTIVA della congiunzione rispetto alla disgiunzione p Λ (q V r) = (p Λ q) V (p Λ r) PROPRIETÀ DISTRIBUTIVA della disgiunzione rispetto alla congiunzione p V (q Λ r) = (p V q) Λ (p V r) LEGGI DI DE MORGAN ¬ (p Λ q) = ¬ p V ¬q ¬ (p V q) = ¬ p Λ ¬q LEGGI DI ASSORBIMENTO p V (q Λ q) = p p Λ (p V q) = p 6. Tautologie Def: formule che risultano sempre vere quale che sia il valore di verità delle proposizioni atomiche che le compongono. Per indicare che una formula f è una tautologia si scrive: ‐| f 7. Predicati Def: proposizioni dipendenti da una o più variabili appartenenti ad un prefissato dominio. Il loro valore di verità cambia al variare della variabile all’interno del dominio. Esempio: “x è un numero primo”, essendo x ∈ R. Se x=5 diventa una proposizione vera, se x=6 falsa. 8. Operazioni logiche con i predicati Poiché fissando il valore delle variabili i predicati diventano proposizioni, per i predicati si possono definire operazioni analoghe a quelle viste per le proposizioni. Ad esempio, il predicato congiunzione di p(x) e q(x) è: p(x)∧q(x) Il cui valore di verità, fissato x = x0 , è il valore di verità della proposizione p(x0)∧q(x0). Esempio: p(x): x è un numero primo, x ∈ R q(x): x è un divisore di 6, x ∈ R Fissato x=3, si ottiene p(3) ∧ q(3) che è vero. 8.1 Predicati e quantificatori Si possono scrivere concisamente proposizioni usando i predicati, i simboli logici e i quantificatori ∀, ∃ e !∃ visti nella teoria degli insiemi (vedi corso introduttivo di matematica…) Esempi: a) b) c) d) Tutti gli uomini sono mammiferi. Esiste la radice quadrata di 16 ed è un numero reale. Nessun quadrato di un numero intero relativo è minore di zero. Qualche fiore ha 5 petali. Si possono riscrivere nel modo seguente: a) Qualunque sia x appartenente all’insieme U degli uomini, x è un mammifero. b) Esiste almeno un x appartenente all’insieme N dei numeri naturali che è radice quadrata di 16. c) Non esiste un x, appartenente a Z, tale che il suo quadrato sia negativo. d) Esiste almeno un x appartenente all’insieme dei fiori F, che ha 5 petali. Ovvero: a) ∀ x ∈ U, m(x) dove m(x) è il predicato “x è un mammifero” b) ∃ x ∈ N | x2=16 c) ! ∃ x ∈ Z | x2 < 0 d) ∃ x ∈ F | p(x) dove p(x) è il predicato “x ha 5 petali” Esempio con operazioni logiche: “Qualche numero naturale è dispari e divisibile per 3” Poniamo: p(x): x è un numero dispari, x ∈ N q(x): x è divisibile per 3, x ∈ N L’affermazione risulta: ∃ x ∈ N | (p(x) ∧ q(x)) 8.2. Implicazione logica Esempio: “Se un numero è divisibile per 4 allora è divisibile per 2” * p(x)= x è divisibile per 4, x ∈ N q(x)= x è divisibile per 2, x ∈ N Tutti i valori di x che rendono vero p(x) rendono vero anche q(x), si dice che p(x) implica logicamente q(x) (la frase * è una implicazione logica). Def: Dati due predicati p(x) e q(x), con x appartenente ad un opportuno dominio, se ogni valore di x che rende vero p(x) rende vero anche q(x), si dice che p(x) implica logicamente q(x) (o che q(x) è deduzione logica di p(x)) e si scrive: p(x) ⇒ q(x) che si legge: “p(x) implica logicamente q(x)” o “se è vero p(x) allora è vero q(x)” NOTAZIONE: p(x): antecedente; q(x): conseguente Esempi: 1) “Se un numero è minore di 10 allora è minore di 15” è un’implicazione logica, infatti posto: p(x): x è minore di 10 q(x): x è minore di 15 risulta p(x) ⇒ q(x) 2) “Se un triangolo ha due lati uguali allora ha due angoli uguali” è un’implicazione logica p(x): x è un triangolo con due lati uguali q(x): x è un triangolo con due angoli uguali risulta p(x) ⇒ q(x) 3) “Se una persona è cittadino italiano allora è anche cittadino milanese” non è un’implicazione logica. p(x): x è cittadino italiano q(x): x è cittadino milanese ed esistono persone per cui p(x) è vero ma non è vero q(x) OSS: Si osservi che se in una implicazione logica si scambia l’antecedente con il conseguente non è detto che si ottenga ancora una implicazione logica. Esempio: “Se un numero è divisibile per 2 allora è divisibile per 4” * p(x)= x è divisibile per 2, x ∈ N q(x)= x è divisibile per 4, x ∈ N p(x) non implica logicamente q(x) Se due predicati p(x) e q(x) si implicano logicamente a vicenda si scrive: p(x) ⇔q(x) e si legge “p(x) è vero se e solo se q(x) è vero” oppure “p(x) è logicamente equivalente a q(x)”. Si tratta di una coimplicazione logica o doppia implicazione logica. Def: Dati due predicati p(x) e q(x), con x appartenente ad un opportuno dominio, se ogni valore di x che rende vero p(x) rende vero anche q(x) e, contemporaneamente, ogni valore di x che rende vero q(x) rende vero anche p(x) si dice che p(x) e q(x) sono logicamente equivalenti. Esempio: p(x)= x è un numero pari, x ∈ N q(x)= x è multiplo di 2, x ∈ N si ha che : p(x) ⇒ q(x) e q(x) ⇒ p(x) per cui: p(x) ⇔q(x), ovvero: “un numero è pari se e solo se è multiplo di 2” OSS: vale la PROPRIETA’ TRANSITIVA dell’IMPLICAZIONE LOGICA! Esempio: p(x)= x è divisibile per 8, x ∈ N q(x)= x è divisibile per 4, x ∈ N r(x)= x è divisibile per 2, x ∈ N si ha: p(x) ⇒ q(x) ∧ q(x) ⇒ r(x) quindi: p(x) ⇒ r(x), ovvero “se un numero è divisibile per 8 allora è divisibile per 2”. 8.3. Condizione necessaria, condizione sufficiente, condizione necessaria e sufficiente Se p(x) ⇒ q(x), si dice che: ‐ ‐ p(x) è condizione sufficiente per q(x) q(x) è condizione necessaria per p(x) Esempio: ‐ ‐ p(x): x è divisibile per 6, x ∈ N q(x): x è pari, x ∈ N l’essere un numero divisibile per 6 è sufficiente perché il numero sia pari (“basta che…”) l’essere pari è necessario per essere divisibile per 6 (“deve essere…”) Se p(x) ⇔ q(x), si ha che: ‐ ‐ p(x) è condizione sufficiente per q(x), p(x) è condizione necessaria per q(x) si dice quindi che p(x) è condizione necessaria e sufficiente per q(x). (Analogamente q(x) è condizione necessaria e sufficiente per p(x)). Esempio: ‐ ‐ ‐ ‐ p(x): x ha due lati uguali, x ∈ all’insieme dei triangoli q(x): x ha due angoli uguali, x ∈ all’insieme dei triangoli un triangolo ha due lati uguali se e solo se ha due angoli uguali un triangolo ha due angoli uguali se e solo se ha due lati uguali condizione necessaria e sufficiente affinché un triangolo abbia due lati uguali è che abbia due angoli uguali condizione necessaria e sufficiente affinché un triangolo abbia due angoli uguali è che abbia due lati uguali 9. Algebra di Boole L’algebra delle proposizioni è detta anche ALGEBRA BOOLEANA (dal matematico inglese George Boole, 1854). In informatica, l’algebra di Boole trova applicazioni in diversi settori: 1. È la logica di cui si avvalgono i calcolatori per interpretare ed eseguire le istruzioni dei programmi. 2. È la logica usata nella progettazione e per il funzionamento dei circuiti elettronici digitali. 3. È la logica usata nei linguaggi di programmazione per esprimere scelte in base a criteri di selezione (nella sequenza di esecuzione delle istruzioni di un programma). È un’algebra composta da: ‐ ‐ un insieme di due simboli B={0,1} un insieme di operazioni O={+, *, ‘} o + : unione o somma logica o * : intersezione o prodotto logico o ‘ (oppure ‐ ): complemento o negazione Proprietà di chiusura: per ogni a, b ∈B: ‐ ‐ ‐ a+b ∈ B a*b ∈ B a’ ∈ B COSTANTI dell’algebra: le costanti 0 ed 1 VARIABILE: un qualsiasi simbolo che può essere sostituito da una delle due costanti 0 ed 1 Esempi di algebre di Boole: 9.1. Proprietà (assiomi) dell’algebra di Boole Identità (P1) X + 0 = X (P1’) X * 1 = X Elementi nulli (P2) X + 1 = 1 (P2’) X * 0 = 0 Negazione (P3) 1’ = 0 (P3’) 0’ = 1 Involuzione (P4) ( X ’)’ = X Proprietà commutativa (P5) X + Y = Y + X (P5’) X * Y = Y * X Proprietà associativa (P6) (X + Y) + Z = X + (Y + Z) = X + Y + Z (P6’) (X * Y) * Z = X * (Y * Z) = X * Y * Z Proprietà distributiva (P7) X * (Y + Z) = X * Y + X * Z (P7’) X + (Y * Z) = (X+Y) * (X + Z) Leggi di De Morgan (generalizzabili per n variabili) (P7) (X + Y) ‘ = (X’ * Y’) (P7’) (X *Y)’ = (X’ + Y’) 9.2. Teoremi dell’Algebra di Boole Teorema dell’Idempotenza ‐ X + X = X ‐ X * X = X Dimostrazione: Dimostrabile da P1, P1’, P2, P2’ Teorema della Complementarietà ‐ ‐ X + X’ = 1 X * X’ = 0 Dimostrazione: Dimostrabile da P1, P1’, P2, P2’ e teorema della negazione Teorema dell’Assorbimento ‐ X * (X + Y) = X + X * Y = X Dimostrazione: Dimostrabile da P1, P1’, P2, P2’ Teoremi della combinazione ‐ X * Y + X’ * Y = Y Dimostrazione: X * Y + X’ * Y = Y * (X + X’) = Y ‐ (X + Y) *( X’+ Y) = Y Dimostrazione: (X + Y) *( X’+ Y) = (X+Y) * X’+ (X + Y) * Y = X* X’ + Y * X’+X* Y+ Y * Y = 0 + Y + Y =Y Teoremi del consenso ‐ ‐ (X + Y) *( X’ + Z) *(Y + Z) = (X + Y)*(X’+Z) X * Y + X’ * Z + Y * Z = X * Y + X’ * Z 9.3.Funzioni Booleane Una funzione completamente specificata di n variabili f(xn‐1,..., x1,x0) è l’insieme di tutte le possibili coppie formate da un elemento di Bn (dominio) e da un elemento di B (codominio). La tabella di verità è un tipico modo per descrivere una funzione dell’algebra di Boole. Esempio: 9.4. Espressioni Booleane Un’espressione booleana è una stringa di elementi di B che rispetta le seguenti regole: ‐ ‐ ‐ ‐ ‐ una costante è un’espressione; una variabile è un’espressione; se X è un’espressione allora il complemento di X è un’espressione; se X,Y sono espressioni allora la somma logica di X e Y è un’espressione; se X,Y sono espressioni allora il prodotto logico di X e Y è un’espressione. TEOREMA ogni espressione di n variabili descrive una funzione completamente specificata che può essere valutata attribuendo ad ogni variabile un valore assegnato. ESEMPIO: L’espressione logica x1’x2’x3+x1x2’x3’+x1x2x3 corrisponde alla funzione booleana f(x3,x2,x1) e alla tabella di verità precedente ATTENZIONE Se ogni espressione definisce univocamente una funzione non e’ vero il contrario: per ogni funzione esistono più espressioni che la descrivono e si dicono logicamente equivalenti. Per valutare un’espressione booleana se ne costruisce la corrispondente tabella di verità, a tal fine occorre: ‐ ‐ semplificare l’espressione mediante le proprietà e i teoremi dell’algebra calcolare i termini parziali della funzione riducendoli alle operazioni fondamentali Tabelle di verità degli operatori dell’algebra x 0 0 1 1 y 0 1 0 1 x*y 0 0 0 1 x+y 0 1 1 1 x’ 1 1 0 0 ESEMPIO: Calcolare la tabella di verità della funzione ESERCIZI (tratti da testi d’esame di Fondamenti di Informatica A.A.2009/2010) [es. 4 - punti 2] Scrivere la tabella di verità della funzione booleana f(a,b,c)= a + c * (a’) * (c’) + b : a b c f(a,b,c) 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 [es. 4 - punti 2] Scrivere la tabella di verità della funzione booleana f(a,b,c)= a * c + (a’) * (c’) + b : a b c f(a,b,c) 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 [es. 4 – punti 2] Scrivere la tabella di verità della funzione booleana f(a,b,c)= (a’) + c * (a’) + (c’) * b a b c f(a,b,c) 1 1 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 1 [es. 4 – punti 2] Scrivere la tabella di verità della funzione booleana f(x,y,z)= z * (x’) + (z’) * y + (x’) X y z f(a,b,c) 1 1 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 ESERCIZI RIASSUNTIVI ESERCIZIO (dalla Prova di Ammissione al I anno delle Facoltà di Ingegneria 2005): Il commissario Piccione nel corso delle sue indagini per un assassinio ha appurato questi due fatti: • se X ha accoltellato la vittima, allora X è mancino • se Y ha accoltellato la vittima, allora Y è l’assassino Quale di questa deduzione è corretta? a) Il commissario Piccione accerta che il Sig. Bianchi non è mancino e ne deduce che non è l’assassino. b) L’assassino ha accoltellato la vittima. c) Il commissario Piccione accerta che il Sig. Rossi è mancino e ne deduce che è l’assassino. d) Il commissario Piccione accerta che il Sig. Bianchi non è mancino e ne deduce che non ha accoltellato la vittima. e) Il commissario Piccione accerta che il Sig. Bianchi è mancino e ne deduce che ha accoltellato la vittima. Soluzione: risposta (d) ESERCIZIO (dalla Prova di Ammissione al I anno delle Facoltà di Ingegneria 2005): Il Re non rispettò il consiglio del Gran Ciambellano di opporsi al matrimonio della Principessa dal Collo di Cigno con il rospo che amava, qualora i giovani insistettero per celebrare il rito nella Basilica di Superga. Le principesse, almeno quelle delle favole seguono la volontà paterna. Che cosa ne deducete? a) b) c) d) La principessa ed il rospo potranno sposarsi, se lo desiderano, nella Basilica di Superga. La principessa ed il rospo non si sposeranno. La principessa ed il rospo potranno sposarsi , ma non nella Basilica di Superga. I dati del problema non autorizzano a concludere la veridicità di alcuna delle soluzioni proposte. e) La principessa ed il rospo si sposeranno necessariamente nella Basilica di Superga. Soluzione: risposta (a) ESERCIZIO (dalla Prova di Ammissione al I anno delle Facoltà di Ingegneria 2005): La frase “sul tavolo ci sono due bicchieri” implica che sul tavolo a) ci sono due bicchieri e una bottiglia b) non ci sono bottiglia c) ci sono due bicchieri e due tazzina da caffè d) c’è un bicchiere e) non ci sono tre bicchieri Soluzione: risposta (d) ESERCIZIO (dalla Prova di Ammissione al I anno delle Facoltà di Ingegneria 2005): Quale fra le seguenti affermazioni è sicuramente falsa? a) Chi respira è vivo. Piero non respira, quindi Piero è morto. b) Nessun Parigino è italiano; tutti i Parigini parlano Francese; ma non è vero che nessun Italiano parla Francese. c) Un quadrato è sempre un rombo. d) Ciò che è scritto in a) è falso. e) Ogni professore ha un registro. Mario non ha un registro, dunque Mario non è professore. Soluzione: risposta (a) ESERCIZIO (dalla Prova di Ammissione al I anno delle Facoltà di Ingegneria 2005): Di una famiglia si sa che: • almeno un maschio non è celibe • tutti i laureati sono celibi • non è vero che almeno un maschio non è maggiorenne Solo una delle seguenti affermazioni è deducibile dalle premesse. Quale? a) b) c) d) e) Nessun maggiorenne non è coniugato Tutti i celibi sono laureati Almeno un maggiorenne è coniugato Almeno un celibe non è maggiorenne Almeno un maggiorenne non è coniugato Soluzione: risposta (c) Parte II L’INFORMATICA: Dal Problema al Programma 1. Informatica Esistono varie definizioni: ‐ ‐ ‐ “Scienza degli elaboratori elettronici” (Computer science) “Scienza dell’informazione” (Information science) “Informazione automatica” Definizione proposta: ‐ “Scienza della rappresentazione e dell’elaborazione dell’informazione” Elaboratore elettronico (o Computer o Calcolatore) ‐ “è uno strumento per la rappresentazione e l’elaborazione delle informazioni.” ‐ ‐ ‐ è uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti (risultati) l’esecuzione di azioni viene richiesta all’elaboratore attraverso “frasi scritte in un qualche linguaggio formale” Programmazione ‐ È l'attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema. Esempi di problemi da risolvere: 1) Trovare il maggiore fra due numeri 2) Dato un elenco di nomi e numeri di telefono, trovare il numero di una data persona 3) Dati a e b, risolvere l'equazione ax+b=0 4) Stabilire se una parola precede alfabeticamente un’altra 5) Ordinare una lista di elementi 6) Identificare e prenotare aerei, treni, hotel, … 7) Creare, modificare e alterare suoni,... 8) Analizzare e riconoscere immagini, ... 9) Salvare e recuperare delle informazioni, … 10) Trasmettere delle informazioni, … E’ fondamentale capire la differenza tra… ‐ Problema: la descrizione del problema (in genere) non indica direttamente un modo per ottenere il risultato voluto ‐ Risoluzione di un problema; con questo termine si indica il processo che: o dato un problema o individuato un opportuno metodo risolutivo o trasforma i dati iniziali nei corrispondenti risultati finali. NB: specifica di un problema ≠ specifica del processo di risoluzione Risoluzione di un problema 2. Algoritmi Il termine algoritmo deriva dal nome del matematico persiano Muhammad ibn Mūsa 'l‐Khwārizmī, che si ritiene essere uno dei primi autori ad aver fatto riferimento esplicitamente a questo concetto. Def: Sequenza finita di mosse che risolve in un tempo finito una classe di problemi ovvero ‐ ‐ Deve essere applicabile a un qualsiasi insieme di dati del dominio Deve produrre risultati appartenenti al codominio Esempio: ‐ ‐ Non è un algoritmo il procedimento che serve per determinare se 51 è pari È un algoritmo il procedimento che serve per determinare se un numero qualsiasi è pari Esempi di algoritmi nella vita quotidiana ESEMPIO 1: Descrizione del problema Cucinare un piatto di spaghetti all’arrabbiata Individuazione di un algoritmo ‐ ‐ ‐ Far riscaldare l’olio con la cipolla Aggiungere un peperoncino … ESEMPIO 2: Descrizione del problema Riempire la vasca da bagno Individuazione di un algoritmo ‐ ‐ ‐ Regolare la temperatura dell’acqua Mettere il tappo … ESEMPIO 3: Descrizione del problema Fare una telefonata Individuazione di un algoritmo ‐ ‐ ‐ ‐ Attivare il telefono Aspettare il tono … Esempi di algoritmi nell’Informatica ESEMPIO 1: Descrizione del problema Stampare la somma di due numeri reali Individuazione di un algoritmo 1. Leggere due numeri (p.es., da tastiera) 2. Effettuare la somma ESEMPIO 2: Descrizione del problema Verificare se un numero intero è pari Individuazione di un algoritmo 1) Leggere il numero 2) Calcolare il resto della divisione intera del numero per 2 3) Se il resto è 0 il numero è pari altrimenti è dispari ESEMPIO 3: Descrizione del problema Calcolare l’MCD di due numeri Individuazione di un algoritmo Il metodo di Euclide 1) 2) 3) 4) 5) Leggere i due numeri Calcolare il resto della divisione intera del numero più grande per il più piccolo Sostituire il numero più grande con il resto della divisione Finché tale resto è diverso da zero torna al passo 2 Il numero più grande (quello non nullo) è il MCD cercato Alcune osservazioni: ‐ ‐ ‐ ‐ ‐ ogni riga è una istruzione le istruzioni vengono eseguite in sequenza alcune istruzioni sono particolari o l’istruzione “Se il resto è 0 il numero è pari altrimenti è dispari” è una istruzione di controllo decisionale in quanto implica una selezione o l’istruzione “Finché tale resto è diverso da zero torna al passo 2” è una istruzione di controllo iterativo in quanto implica una ripetizione Il flusso di esecuzione di un algoritmo produce un risultato a fronte di valori in ingresso o 51 o 51 : 2 = 25 con resto 1 o il resto è diverso da 0 quindi è dispari Per eseguire un algoritmo abbiamo bisogno o di un esecutoreÆ ad esempio noi stessi o il computer o di una memoria per memorizzare i datiÆ ad es. un foglio di carta o la memoria del computer Dall’Algoritmo al Programma (Æ Corso di Fondamenti di Informatica!) CODIFICA: Fase di scrittura di un algoritmo in un qualche linguaggio di programmazione. Il risultato è un programma. Caratteristiche di un Algoritmo • Eseguibilità: ogni azione deve essere eseguibile da parte dell’esecutore dell’algoritmo in un tempo finito. • Non‐ambiguità: ogni azione deve essere univocamente interpretabile dall’esecutore. • Terminazione: il numero totale di azioni da eseguire, per ogni insieme di dati di ingresso, deve essere finito. • Determinismo: il flusso di esecuzione per lo stesso insieme di dati in input deve sempre essere lo stesso. Rappresentazione di un algoritmo Per rappresentare un algoritmo occorre rappresentare: • Le istruzioni necessarie • La loro corretta sequenza Strumenti: • Linguaggio naturale • Linguaggi (semi)formali • Diagrammi di flusso (flow chart) (!) 3. I Diagrammi di flusso • Sono un formalismo che permette di rappresentare graficamente un algoritmo. • Descrivono le azioni da eseguire e il loro ordine di esecuzione. • Ogni diagramma di flusso è un grafo o Ogni nodo è un’azione elementare e corrisponde ad un simbolo grafico (blocco) o Gli archi ne determinano la sequenza Esempio: 3.1. Blocchi fondamentali Blocco START • È il blocco da cui deve iniziare l’algoritmo. • In un diagramma è presente un solo blocco START. Blocco END • Termina l’esecuzione dell’algoritmo. • In un diagramma è presente un solo blocco END. Blocco READ • Riceve dall’unità in ingresso (per esempio la tastiera) tanti valori quante sono le variabili specificate all’interno del blocco. • Assegna alle variabili i valori inseriti. Blocco WRITE • Trasmette in uscita (per esempio su video) i valori delle variabili. Blocco AZIONE • corrisponde ad un’azione elementare: o Assegnamento (=) o Operazioni aritmetiche (+, ‐, *, /,…) o … Esempi: Esercizio Stampare la somma di due numeri reali dati. Blocco TEST • Al blocco è associato un test il cui risultato è booleano (VERO/FALSO); o Se la condizione è vera si procede sul ramo etichettato con V o Se la condizione è falsa si procede sul ramo etichettato con F Esempi Blocco PROCESSO • Indica una sequenza di azioni per ottenere un particolare risultato. • È utile per rendere più compatto il diagramma di flusso. Strutture condizionali (IF‐THEN(‐ELSE)) • Permette di scegliere tra 2 sequenze di azioni in base ad una selezione logica • Permette scegliere se eseguire una sequenza di azioni in base ad una selezione logica Esercizio Trovare il massimo di due valori dati. Esercizio Calcolare il valore assoluto di un numero dato Struttura iterativa (WHILE) Esegue la stessa sequenza di azioni fintanto che la condizione risulta vera. Esercizio: Calcolare la somma di N numeri forniti in input OSSERVAZIONI: E’ necessario calcolare la somma in modo incrementale perchè i valori vengono inseriti uno alla volta DEFINIZIONE PER INDUZIONE: • Caso base: La somma di 0 numeri è 0 o somma({})=0 • Caso induttivo: La somma di N+1 numeri {X1,..,Xn+1} è la somma della somma di {X1,..,Xn} e Xn+1 o somma({X1,..,Xn+1})=somma({X1,..,Xn})+Xn+1 Struttura iterativa II (DO…WHILE) Esegue la sequenza di azioni fino a quando la condizione risulta vera. NB: l’azione è eseguita almeno una volta! Esercizio Leggere un valore numerico POSITIVO da tastiera. NB: E’ necessario chiedere il valore all’utente fintantoché questo non è positivo Esercizio Scrivere un algoritmo che calcoli le radici di un’equazione di secondo grado Ax2+Bx+C=0. NB: si supponga di disporre della funzione sqr() che dato un valore in ingresso ne calcola la radice quadrata OSSERVAZIONE: Dato il valore ∆=B2‐4AC, si ricorda che se Δ è negativo allora non ci sono soluzioni reali altrimenti ci sono 2 soluzioni reali soluzioni = −B± ∆ 2A Esercizio Scrivere un algoritmo che ricerchi il minimo di K numeri forniti in input. K è fornito in input dall’utente ed è maggiore o uguale a 1. OSSERVAZIONE: è necessario definire il minimo per induzione perché i valori vengono inseriti uno alla volta • Caso base: minimo({X})=X • Caso induttivo: minimo({X1,..,Xn+1})= minore tra minimo({X1,..,Xn}) e Xn+1 Esercizio Scrivere un algoritmo che esegua la moltiplicazione di due numeri interi mediante somma. OSSERVAZIONE: Definizione per induzione • • Caso base: A*0=0 Caso induttivo: A*(B+1) = (A*B)+A START READ A, B PROD = 0 I=0 I<B? NO YES PROD = PROD + A WRITE PROD YES I=I+1 END Esercizio Scrivere un algoritmo per il calcolo del resto della divisione tra due valori interi. 4. Scomposizione dei problemi: la strategia TOP‐DOWN La strategia top‐down, applicata nella risoluzione di un problema, consiste nello scomporre in modo iterativo il problema in sottoproblemi • • Si parte dall’altro Il problema nella sua interezza Si arriva in basso Il problema come insieme di problemi elementari (più facilmente risolvibili o già noti) L’approccio top‐down si presta molto bene per la definizione di algoritmi con diagrammi di flusso: • • • Si parte dall’alto: l’algoritmo è una sequenza di processi che risolvono “macro‐ problemi” I processi vengono via via semplificati come sequenze di processi/azioni che risolvono “sotto‐problemi” Si arriva in basso: la scomposizione termina quando si arriva ad una sequenza di azioni Esercizio Adottando la metodologia top‐down, scrivere un algoritmo che, dati K numeri inseriti dall’utente, restituisca quanti numeri nulli sono stati inseriti. K è definito dall’utente. Esercizi • • • • • • • • • Scrivere un algoritmo che applichi il teorema di Pitagora per calcolare il valore dell’ipotenusa dati due cateti. Scrivere uh algoritmo che calcoli la radice quadrata di numeri che sono quadrati perfetti. Scrivere un algoritmo che calcoli la media di N valori interi dati in input. Scrivere un algoritmo che calcoli il quoziente e il resto di una divisione tra interi. Scrivere un algoritmo che calcoli l’intersezione di due intervalli [I1,S1] e [I2,S2], dati gli estremi degli intervalli stessi. Scrivere un algoritmo che calcoli l’unione di due intervalli intersecanti [I1,S1] e [I2,S2], dati gli estremi degli intervalli stessi. Scrivere un algoritmo che calcoli i divisori di un numero dato. Scrivere un algoritmo che verifichi se il numero dato in ingresso è primo. Scrivere un algoritmo che calcoli il fattoriale di un numero dato.