Cos è un Calcolatore?



Похожие документы
Informazione analogica e digitale

Fasi di creazione di un programma

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Le Macchine di Turing

Algoritmi e strutture dati. Codici di Huffman

Capitolo 7: Teoria generale della calcolabilitá

la scienza della rappresentazione e della elaborazione dell informazione

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

La macchina universale

Università degli Studi di Cassino Corso di Fondamenti di Informatica Codifica di dati e istruzioni. Anno Accademico 2010/2011 Francesco Tortorella

BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario?

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

4 3 4 = 4 x x x 10 0 aaa

Dispense di Informatica per l ITG Valadier

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l Ambiente e il Territorio

Laurea Specialistica in Informatica

Linguaggi e Paradigmi di Programmazione

Rappresentazione delle informazioni

la scienza della rappresentazione e della elaborazione dell informazione

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Linguaggi di programmazione

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Come ragiona il computer. Problemi e algoritmi

Sistemi di Elaborazione delle Informazioni. Corso di Laurea per "Tecnico Ortopedico" 03

La codifica delle informazioni

Introduzione alla programmazione in C

Lez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2

Origini e caratteristiche dei calcolatori elettronici

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Elementi di Informatica. ( Lezione II, parte I ) Sistemi di numerazione: binario, ottale ed esadecimale

LINGUAGGI DI PROGRAMMAZIONE

Esempi di algoritmi. Lezione III

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Informatica. Rappresentazione dei numeri Numerazione binaria

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Conversione tra le basi binarie

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

Rappresentazione dei numeri in un calcolatore

Lezione 8. La macchina universale

L interesse nella macchina di Turing

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

I sistemi di numerazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

2. Codifica dell informazione

Sommario. Linguaggi formali: motivazioni, definizione ed esempi operazioni su parole e linguaggi

IL LINGUAGGIO Visual Basic

RELAZIONI BINARIE. Proprietà delle relazioni Data una relazione R, definita in un insieme non vuoto U, si hanno le seguenti proprietà :

Introduzione al MATLAB c Parte 2

Elementi di informatica

La selezione binaria

Scheda di approfondimento gioco I pixel

Algebra di Boole ed Elementi di Logica

Logica e codifica binaria dell informazione

Descrizione di un algoritmo

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Contatti 2. Testo. Contatti. Maria Chiara Laghi, Ph.D Dip. Ingegneria dell Informazione. tel

Introduzione alla Programmazione

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

Quanto può essere veloce un upload e un download?

Codifica binaria e algebra di Boole

Linguaggi di programmazione

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

Semantica operazionale dei linguaggi di Programmazione

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Algoritmi e Complessità

Codifica: dal diagramma a blocchi al linguaggio C++

Corso di Informatica

Variabili e tipi di dato

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Codifica delle Informazioni

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Appunti sulla Macchina di Turing. Macchina di Turing

ESEMPIO 1: eseguire il complemento a 10 di 765

La codifica dell informazione

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Algebra Booleana ed Espressioni Booleane

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Транскрипт:

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