Corso di Fondamenti di Informatica

Slides:



Advertisements
Presentazioni simili
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Advertisements

Corso di Informatica (Programmazione)
La macchina di von Neumann
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
STRUTTURA GENERALE DI UN ELABORATORE
Architettura del calcolatore
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Informatica Generale Marzia Buscemi
Informatica e Informatica di Base
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Agile Group – DIEE, Università degli studi di Cagliari Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica ELEMENTI DI INFORMATICA.
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
1 Sistemi di numerazione. 2 Sistemi di numerazione posizionali posizionali Sistemi di numerazione posizionali: base La base del sistema di numerazione.
Elementi fondamentali dell’ Architettura di di un elaboratore elettronico.
NUMERI ed ERRORI MANOLO VENTURIN UNIVERSITÀ DEGLI STUDI DI PADOVA DIP. DI MATEMATICA PURA ED APPLICATA A. A. 2007/2008.
I linguaggi di programmazione Gruppo iOS 47: Colombini Christian Flora Jonathan Rossi Francesco.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
Rappresentazione dell’ Informazione Digitale e Binario
NUMERI E E CARATTERI IN BINARIO
Unità di apprendimento 1
© 2007 SEI-Società Editrice Internazionale, Apogeo
I Numeri.
Sistemi e Applicazioni per l’Amministrazione Digitale
Sistemi e Applicazioni per l’Amministrazione Digitale
Lavoro di gruppo 3^E sia Peroni Jessica Mascheroni Beatrice
Prova d’Esame: selezione di domande
Rappresentazione dell’ Informazione Informazione e Comunicazione
Unità di apprendimento 1
VISUAL BASIC.
La rappresentazione delle informazioni
Introduzione al linguaggio C
Comandi assembly Il termine assembly deriva dal programma traduttore in linguaggio macchina assembler, l’assemblatore non fa altro che assemblare il.
Dal problema al processo risolutivo
INFORMATICA DI BASE I FONDAMENTI.
Programmazione per la Musica | Adriano Baratè
LE ARCHITETTURE NON VON NEUMANN
Microcontrollori e microprocessori
Logica binaria Moreno Marzolla
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
Cammino dei Dati (Datapath)
TIPI PRIMITIVI TIPI STRUTTURATI
JAVA usa una rappresentazione in VIRGOLA MOBILE
STRUTTURA GENERALE DI UN ELABORATORE
Introduzione I microcontrollori.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Domanda 1 A cosa corrisponde in notazione decimale il numero binario positivo senza segno ) 32 2) 48 3) 46 4) 3 5) 36 September 18.
Che cos’e’ l’Informatica
Rappresentazione dei Numeri
Controllo e microprogrammazione
Classe III A A.s – 2012 Programma di Informatica
Informatica - Prof. Gregorio Cosentino
Programmare.
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Corso di Informatica Applicata Introduzione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Concetti base 1.1.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Definizione di linguaggio di programmazione
Sistemi Digitali.
Come viene misurata la Memoria di un Computer?
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
Relazioni tra CPU e Memoria e Dispositivi I/O
Algoritmi.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Corso di Fondamenti di Informatica
Corso di Fondamenti di Informatica
Transcript della presentazione:

Corso di Fondamenti di Informatica Macroarea di Ingegneria 2018/19 Tutor: prof. Francesco De Vincenzi

MatLab MATLAB: Una definizione… Permette 2/25 MATLAB: Una definizione… MatLab MATLAB (matrix laboratory) è un linguaggio di programmazione di alto livello di quarta generazione ed insieme un ambiente interattivo per il calcolo numerico, la visualizzazione e l’elaborazione di dati. Permette la manipolazione di matrici, la visualizzazione di grafici di funzioni e di dati; l’implementazione di algoritmi e la creazione di interfacce utente; l’interfacciamento con programmi scritti in altri linguaggi inclusi C, C++, Java e FORTRAN. L’analisi di dati Lo sviluppo di algoritmi La creazione di modelli ed applicazioni Possiede numerosi comandi predefiniti e funzioni matematiche che aiutano nel calcolo e nella generazione di grafici.

3/25 MATLAB: Interfaccia

1. Concetti fondamentali Dati, Codifica, Algoritmi, Linguaggi 4/25 1. Concetti fondamentali Dati, Codifica, Algoritmi, Linguaggi

Dati e strutture dati Un dato è un elemento caratterizzato da: un nome 5/25 Dati e strutture dati Un dato è un elemento caratterizzato da: un nome un formato un «alfabeto» un valore Esempio: Nome: Targa Formato: 2 lettere,3numeri,2 lettere Alfabeto: {A…Z,0…9} Valore: AG185NG Una struttura dati consiste di un insieme di dati organizzati secondo una struttura ben definita Esempio: Libretto di circolazione (targa, telaio, data immatricolazione…) Un dato non ha significato per l’essere umano. Esso acquista significato (diventando informazione) solo se correlata ad altri dati e perciò intrepretato.

Rappresentazione dei dati 6/25 Rappresentazione dei dati L’utilità di un calcolatore sta nella capacità di memorizzare i dati, elaborarli e trasmetterli. Per farlo, sfruttiamo le proprietà dei segnali. Un segnale è una grandezza fisica di varia natura variabile nel tempo Un segnale può essere elettrico, magnetico, acustico, ottico o un’onda. Un segnale «digitalizzato» viene utilizzato per rappresentare uno «stato».

Rappresentazione dei dati 7/25 Rappresentazione dei dati Un computer al suo interno gestisce segnali digitali a due stati, chiamati convenzionalmente «bit» zero e uno. BIT=Binary Digit (cifra binaria) Il segnale può essere elettrico (BUS interni del computer, processore), elettromagnetico (memorie), luminoso (fibre ottiche), radio (WI-FI). Quasiasi sia la sua natura fisica, viene sfruttato per rappresentare e trasmettere sequenze di bit. Combinando opportunamente sequenze di BIT possiamo rappresentare qualsiasi dato.

Misura dei dati 8/25 Nome Quantità BIT Misura unitaria (0/1) BYTE KILOBYTE 1024 BYTE MEGABYTE 1024 KILOBYTE GIGABYTE 1024 MEGABYTE TERABYTE 1024 GIGABYTE PETABYTE 1024 TERABYTE EXABYTE 1024 PETABYTE ZETTABYTE 1024 EXABYTE YOTTABYTE 1024 ZETTABYTE

9/25 Codifica dei dati A seconda del tipo di dato da rappresentare, esiste un meccanismo di codifica universale che fa sì che su qualsiasi calcolatore una stessa sequenza di BIT abbia lo stesso significato. Una CODIFICA è una funzione di trasformazione reversibile (iniettiva) applicabile su un dominio di valori e che associa ad un valore un nuovo valore appartenente ad un altro insieme. 101 5 1010 10 13 1101

10/25 Spazio dei dati Quanti dati dello stesso tipo si possono codificare in binario? Dipende dal numero di bit che utilizziamo per la codifica. Con un BIT, possiamo creare due codifiche: 0 e 1 Con 2 BIT, possiamo creare quattro codifiche: 00, 01, 10 e 11 Con 3 BIT, possiamo creare 8 codifiche: 000, 001, 010, 011, 100, 101, 110, 111 Con 4 BIT, possiamo creare 16 codifiche: 0000 … 1111 Con 8 BIT, possiamo creare 256 codifiche: 00000000 … 11111111 In generale, con n BIT si possono creare 2n sequenze binarie differenti.

Codifica dei dati numerici (interi non negativi) 11/25 Codifica dei dati numerici (interi non negativi) 1 27 24 23 22 20 128+16+8+4+1=157 La codifica binaria(con 0/1) di 157 è 100111012 Con 1 byte(8 BIT) posso codificare tutti i numeri da 0 a 255. Con 2 byte tutti i numeri da 0 a 65535, e così via.

Decodifica dei dati numerici (interi non negativi) 12/25 Decodifica dei dati numerici (interi non negativi) Divido ripetutamente il numero per 2 finchè diventa zero 157 78 39 19 9 4 2 1 1 Segno il resto della divisione per 2. A fine divisione leggo il risultato dal basso verso l’alto. La codifica binaria di 157 è 101111012.

Decodifica dei dati numerici (interi con segno) 13/25 Decodifica dei dati numerici (interi con segno) Esempio su 8 BIT: Bit del segno: 0  positivo 1  negativo 7 Bit per il valore Esempi: 1 1 Corrisponde a 6 1 1 1 Corrisponde a -6 La presenza del BIT del segno dimezza il valore massimo codificabile. Con 7 bit per il valore infatti il range dei valori va da -127 a +127

. . . . . . Decodifica dei dati numerici (numeri reali) 14/25 Decodifica dei dati numerici (numeri reali) Esempio su 32 BIT: . . . . . . Bit del segno: 0  positivo 1  negativo 8 Bit per l’esponente 23 Bit per la mantissa La formula per la decodifica è: (+/-) 1,m2 * 2(e-127) La mantissa è la codifica in binario della parte decimale di un numero che per convenzione ha la parte intera uguale a 1; L’esponente è un numero intero senza segno ad 8 bit. Sottraendo 127 si ottengono esponenti da -127 a + 128

Decodifica dei dati numerici (numeri reali) 15/25 Decodifica dei dati numerici (numeri reali) La formula per la decodifica è: (+/-) 1,m2 * 2(e-127) Esempio: 1 m = 0001012  Si intende 1,0001012 (altre cifre a zero non si considerano) e = 10000100  2132-127 =25 quindi l'esponente è 5 Quindi il numero è +1,0001012 * 25 = +100010,12 = +34,510

Codifica di caratteri di testo 16/25 Codifica di caratteri di testo Ogni carattere ha, secondo un sistema di codifica internazionale, una sua codiifca binaria. Per esempio, il carattere C viene rappresentato come 01000011.

Il processore e la codifica delle istruzioni 17/25 Il processore e la codifica delle istruzioni Come i dati, anche le istruzioni che un calcolatore può effettuare sono codificate in binario. Ogni processore ha un proprio SET di istruzioni, le quali compiono operazioni di basso livello (somme, prodotti, spostamenti in memoria,etc). L’attività continua di un calcolatore è quella di prelevare un flusso di dati e istruzioni dalla memoria e applicare le istruzioni ai dati. RAM PROCESSORE DATI …10011001… NUOVI DATI …10011001… ISTRUZIONI …001100101… In un processore moderno ogni secondo avvengono dagli 1 ai 4 miliardi di operazioni al secondo.

Il modello di elaboratore «Architettura di Von Neumann» - 1945 18/25 Il modello di elaboratore «Architettura di Von Neumann» - 1945 Il processore (CPU) nel dettaglio… 3tipi di «oggetti» trattati: - dati - istruzioni - indirizzi

Esempio di programma in linguaggio macchina e assembler 19/25 Esempio di programma in linguaggio macchina e assembler LINGUAGGIO MACCHINA LINGUAGGIO ASSEMBLER SPIEGAZIONE Etichetta Operazione Operandi Op.ne Tipo di operazione Significato 00110010 10010010 0000000100000010 START: MOV A,B Spostamento dati Copia il contenuto di B in A 11100110 0000000100001100 CMP A,12 Confronto Confronta A con 12 10000110 10010110 JZ PARTE2 Salto Se sono uguali salta a PARTE2 0000001100000000 C,0 Metti 0 in C 01100010 END Fine Fine programma 0000001100000001 PARTE2: C,1 Metti 1 in C indirizzi dati istruzioni

Linguaggi di programmazione: basso vs alto livello 20/25 Linguaggi di programmazione: basso vs alto livello Per rendere più semplice e più veloce lo sviluppo di applicazioni sono stati sviluppati linguaggi di livello più alto. Più vicino all’uomo Linguaggi Visuali Linguaggio Java s=new Studente(); s.setNome(«Mario»); Linguaggio C X=1; printf(«%d%»,x); Linguaggio Assembler SUM CX,DX Più vicino alla macchina Linguaggio macchina 10011011

Linguaggi di programmazione: compilatori vs interpreti 21/25 Alcuni linguaggi di programmazione prevedono che il codice «sorgente» venga compilato prima di essere eseguito. Altri linguaggi non hanno la compilazione: il codice sorgente viene «interpretato» istruzione per istruzione. Codice sorgente Compilazione Codice eseguibile Linguaggio macchina Linguaggio macchina generato «al volo» una istruzione lla volta Esecuzione Programma in esecuzione PRO: Maggior controllo sulla correttezza del programma. PRO: Maggiore velocità di esecuzione.

Linguaggi di programmazione: paradigmi 22/25 Linguaggi di programmazione: paradigmi Per «paradigma» si intende l’insieme di costrutti messi a disposizione da un linguaggio, i quali determinano un approccio alla programmazione che mette in risalto un modo (rispetto ad altri) di organizzare un programma. PARADIGMA Approccio ESEMPI DI LINGUAGGI Procedurale o imperativo Il programma è un insieme di comandi (istruzioni). L’esito del programma è dato dall’esecuzione della sequenza di istruzioni Pascal, C Funzionale Il programma è inteso come composizione di funzioni matematiche. L’esito del programma è dato dall’esecuzione del calcolo della funzione composta. ML, Lisp Logico Il programma consiste in un insieme di asserzioni di fatti logici. L’esito del programma è dato dal calcolo delle conseguenze logiche delle asserzioni. Prolog Ad oggetti Il programma è un insieme di oggetti, ovvero dati dotati di comportamenti. L’esito del programma è dato dall’interazione di questi oggetti. Java, C++

Problemi, Modelli, Algoritmi e Implementazione 23/25 Problemi, Modelli, Algoritmi e Implementazione Algoritmo Codice sorgente Modello Algoritmo: Chiedi b Chiedi h Calcola p=b*h Calcola area=p/2 Risultato: area int b,h; double p,a; scanf(«%d»,b); scanf(«%d»,h); p=b*h; a=p/2; printf(a); Implementazione Astrazione Definizione h b Area? b=3, h=4 INPUT b=5, h=3 Programma In esecuzione b=6, h=1 area=6 OUTPUT Esecuzione area=7,5 area=3

RAM Concetti base della programmazione: variabili (tipi) 24/25 Concetti base della programmazione: variabili (tipi) Per poter manipolare i dati in un programma si usano le variabili. Una variabile è uno spazio della memoria RAM caratterizzato da: Una dimensione (in byte) Una posizione nella RAM (indirizzo) Un nome Un tipo (insieme dei valori possibili) Un valore RAM prezzo 0000000011010101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 byte 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 Nell’esempio: la variabile prezzo è una variabile di tipo numerico (intero) che occupa 4 byte di memoria. Il suo indirizzo di memoria è 0000000011010101 e il suo valore è 101 (cioè 5).

5 8 5 5 Operazioni sulle variabili (lettura/scrittura) 25/25 Operazioni sulle variabili (lettura/scrittura) Una variabile può essere vista come un contenitore che può contenere un solo dato per volta. LETTURA SCRITTURA La lettura consiste nella crezione di una copia del valore della variabile. Il valore presente non viene modificato. La scrittura consiste nella sostituzione del valore presente con un nuovo valore. 5 8 5 5 prezzo prezzo