Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105
Riassumendo... Un problema è una qualsiasi situazione per la cui soluzione è necessario elaborare una strategia, ovvero una serie di azioni da compiere per raggiungere il risultato Ogni problema è caratterizzato da un insieme (finito o infinito) di istanze Un algoritmo è il processo risolutivo di un problema (applicabile ad ogni sua istanza) Un programma è la formulazione testuale di un algoritmo in un linguaggio di programmazione Un elaboratore è una macchina in grado di eseguire azioni elementari su dati (istanze di problemi) al fine di raggiungere un risultato L esecuzione delle azioni elementari è richiesta all elaboratore tramite comandi chiamati istruzioni Le istruzioni sono espresse attraverso frasi di un opportuno linguaggio di programmazione 25/105
Limiti di un Elaboratore Lemma There are problems that cannot be solved by any model of computation. Such problems are called undecidable (indecidibili). Example Input: 1 Dato un (generico) programma Prog 2 Dati dei valori val (potenziali input per Prog) Output: SÌ oppure NO Vincoli: 1 Prog deve terminare (in tempo finito) sull input val 26/105
Alfabeti e Stringhe Chiameremo alfabeto un insieme finito e non vuoto di simboli: Σ 1 = {a, b, c} è un alfabeto Σ 2 = {0, 1} è un alfabeto Σ 3 = {1, 2, 3,...} non è un alfabeto (poiché infinito) Chiameremo stringa su un alfabeto Σ ogni sequenza finita di simboli presi da Σ: aaa, abbbabc, ccab sono stringhe su Σ 1 001 è una stringa su Σ 2 ma non su Σ 1 aacd non è una stringa né su Σ 1, né su Σ 2 27/105
La stringa vuota Chiameremo stringa vuota la speciale stringa ε che gode delle seguenti proprietà: 1 la sua lunghezza è nulla (uguale a zero) 2 presa una (qualunque) stringa w su un (qualunque) alfabeto Σ, allora wε = εw = w Example abbcε = εabbc = abbc 0100ε = ε0100 = 0100 aaεbb = aaεbb = aabb 28/105
Linguaggio Universale Chiameremo linguaggio universale su un dato alfabeto Σ l unione della stringa vuota con tutte le stringhe (di lunghezza finita) che si possono costruire partendo da Σ. Example Lemma Σ 1 = {ε, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa,...} Σ 2 = {ε, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101,...} La concatenazione di due stringhe da Σ è ancora una stringa in Σ Example concatenando aaa e bbb otteniamo aaabbb e bbbaaa (tutte in Σ 1) concatenando 011 e 10 otteniamo 01110 e 10011 (tutte in Σ 2) 29/105
Linguaggi Definizione Chiameremo linguaggio su un alfabeto Σ qualsiasi insieme di stringhe prese da Σ. Esempi di linguaggi: Sia Σ = {a, b, c,..., z} un alfabeto. Allora, Stagioni = {primavera, estate, autunno, inverno} è un linguaggio (finito) su Σ Sia Σ = {1, 2, 3,..., 9, 0} un alfabeto. Allora, Primi = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,...} è un linguaggio (infinito) su Σ 30/105
Il problema dell Appartenenza Definizione Tutti i problemi decisionali dell informatica possono essere ricondotti al problema dell appartenenza di una stringa ad un linguaggio. Input: 1 Dato un alfabeto Σ 2 Fissato un linguaggio L di stringhe appartenenti a Σ 3 Data una stringa w sull alfabeto Σ Output: SÌ oppure NO Vincoli: 1 la stringa w deve appartenere al linguaggio L 31/105
Come possono essere descritti i linguaggi? Per enumerazione delle stringhe. Es. {aa, aba, bb, bab} Con notazione matematica. Es. {a n b n n > 0} = {ab, aabb, aaabbb, aaaabbbb,...} Tramite Grammatiche Formali... Definizione Una Grammatica è una notazione formale con cui esprimere in modo rigoroso la SINTASSI di un linguaggio. 32/105
Esempio (1) Introduzione Dato l alfabeto Σ = {a, b,..., z} Dato un insieme di elementi aggiuntivi chiamati non-terminali NT = {FRASE, SOGGETTO, PREDICATO, OGGETTO} Example (Grammatica G) FRASE SOGGETTO PREDICATO OGGETTO SOGGETTO marco lucia PREDICATO mangia pulisce OGGETTO la mela il banco La grammatica G definisce il seguente linguaggio: L(G) = {marco mangia la mela, marco mangia il banco, marco pulisce la mela, marco pulisce il banco, lucia mangia la mela, lucia mangia il banco, lucia pulisce la mela, lucia pulisce il banco} 33/105
Esempio (2) Introduzione Example (Grammatica G ab ) P A Q Q B P B A a B b Qual è il linguaggio descritto (o definito) dalla grammatica G ab? P A Q A B a b P A Q A P B A A Q B A A B B a a b b P... a a a b b b... P... a a... a b b... b. n n 34/105
Grammatiche context-free Chiameremo context-free quelle grammatiche dove tutte le regole sono del tipo N α 1... α n In particolare, N è un non-terminale ciascun α può essere un non-terminale oppure un simbolo dell alfabeto 35/105
Equivalenza di Grammatiche context-free Input: 1 Data una Grammatica context-free G 1 2 Data una Grammatica context-free G 2 Output: SÌ oppure NO Vincoli: 1 Il linguaggio descritto da G 1 deve essere equivalente al linguaggio descritto da G 2 Lemma Tale problema è indecidibile. 36/105
Appartenenza ad una Grammatica context-free Input: 1 Data una Grammatica context-free G 2 Data una stringa w Output: SÌ oppure NO Vincoli: 1 La stringa w deve appartenere al linguaggio descritto da G Lemma Tale problema è decidibile... ed è pure semplice! 37/105
Linguaggi di programmazione Un linguaggio di programmazione è un linguaggio formale la cui sintassi è (usualmente) descritta mediante una grammatica context-free Un programma in un dato linguaggio di programmazione è una stringa (sequenza finita di simboli su un certo alfabeto) che appartiene a quel dato linguaggio La verifica di correttezza sintattica di un programma è un problema decidibile e relativamente semplice (vedi slide precedente) Sapere se un programma va in loop su qualche input è un problema indecidibile (vedi prima slide di questa sezione) Un programma, pur essendo semplicemente una sequenza di simboli, dice al computer le azioni da eseguire così come un manuale di istruzione dice a noi come far funzionare una lavatrice! 38/105
Contenuti Introduzione Codifica dell informazione Cenni di aritmetica binaria Rappresentazione di informazione multimediale 1 Introduzione 2 Codifica dell informazione Cenni di aritmetica binaria Rappresentazione di informazione multimediale 3 4 5 39/105
Codifica dell informazione Cenni di aritmetica binaria Rappresentazione di informazione multimediale Cosa? Il calcolatore memorizza ed elabora vari tipi di informazioni Numeri Testi Immagini Suoni... 40/105
Codifica dell informazione Cenni di aritmetica binaria Rappresentazione di informazione multimediale Come? I calcolatori usano la codifica binaria (a due valori) per rappresentare l informazione. Definizione Chiameremo BIT (BInary digit) l unità minimale di rappresentazione: 0 oppure 1. Il computer si basa quindi su un alfabeto binario {0, 1} e le informazioni vengono associate a stringhe su tale alfabeto. Example 0 NO 1 SI Example 00 Inverno 01 Primavera 10 Estate 11 Autunno 41/105
Codifica dell informazione Cenni di aritmetica binaria Rappresentazione di informazione multimediale Perché? I computer non sono in grado di effettuare operazioni (e dunque di immagazzinare informazioni) utilizzando un linguaggio più vicino al nostro modo di pensare e di intendere le cose! A livello fisico i computer lavorano su segnali elettrici, ed i segnali elettrici possono trovarsi solo in due stati (acceso e spento). Definizione Ogni informazione gestita dal computer deve necessariamente essere convertita in formato binario. Quanti bit servono per codificare i nomi dei giorni della settimana? 42/105
Celle di Memoria Introduzione Codifica dell informazione Cenni di aritmetica binaria Rappresentazione di informazione multimediale 43/105
Codifica dell informazione Cenni di aritmetica binaria Rappresentazione di informazione multimediale Il Byte Definizione Con N bit (ognuno dei quali può assumere 2 valori) possiamo rappresentare 2 N informazioni diverse. Definizione Per rappresentare M informazioni dobbiamo usare (almeno) N bit, in modo che 2 N M Definizione Una sequenza di 8 bit viene chiamata Byte. Con un byte possiamo codificare 2 8 = 256 informazioni diverse. 44/105