Laboratorio di Informatica di Base Riccardo Distasi ricdis@unisa.it Si ringrazia il dott. Ferdinando Cicalese per il materiale didattico.
Organizzazione del Corso 72 Ore: 36 ore di teoria, 36 ore di Laboratorio (L19) Orario: Lunedì 14 - 16 (C31) Giovedì 13 - 14 (C38) Venerdì 9 - 12 (L19) Modalità d’Esame 2 Prove in itinere: Novembre [12—23] (Prova Scritta/Laboratorio) Gennaio/Febbraio [21—01] (Prova in laboratorio) Febbraio [02—28] Orale Prova Ordinaria Febbraio [02—28] (Prova Scritta/Laboratorio + Orale] Orario di Ricevimento: Lunedì 16-18 (Studio A8)
Testi Consigliati Teoria Informatica Istituzioni S. Ceri D. Mandrioli L. Sbattella Editore: McGraw-Hill
Testi Consigliati Laboratorio Concetti di Base/Gestione File S. Rubini, M. De Marchi Ed. Apogeo Elaborazione Testi S. Rubini Strumenti di Presentazione
Argomenti del Corso Concetti di Base della Tecnologia dell’Informazione Uso del Computer e Gestione dei File Elaborazione Testi Strumenti di Presentazione Introduzione all’uso di Internet ECDL ---- European Computer Driving License
Che cos’è l’INFORMATICA? 1. La Scienza e la Tecnica dei computer Computer Science ?!? 2. Una delle applicazioni dei calcolatori Elaborazione Numerica, Gestionale, Grafica 3. La Scienza dell’Informazione Information Theory ?!? Giornalismo?
Che cos è l’INFORMATICA? Numeriche Pubblica Amministrazione Medicina telecomunicazioni L’Informatica pervade la maggior parte delle attività umane ..essa nasce ben prima dell’invenzione del computer
Che cos è l’INFORMATICA? L’Informatica è la Scienza della Rappresentazione e dell’Elaborazione dell’Informazione Secondo la ACM (Association for Computing Machinery)… L’Informatica è lo Studio sistematico degli algoritmi che descrivono e trasformano l’Informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione.
Le Aree Disciplinari dell’INFORMATICA? Algoritmi e Strutture Dati Linguaggi di Programmazione Architettura degli Elaboratori Sistemi Operativi Elaborazione di Immagini e Sistemi Multimediali
Definizione di Algoritmo Informalmente: Un algoritmo è una sequenza di passi che portano alla realizzazione di un compito Un Algoritmo per fare il Caffè 1. Prendi la moka dalla credenza 2. Svita il serbatoio 3. Riempi il serbatoio di acqua 4. Riempi il filtro con il caffè 5. Riavvita la moka e mettila sul fornello acceso
Definizione di Algoritmo Un algoritmo per la preparazione della Zuppa Inglese 1. Prepara 500 gr. di Crema Inglese 2. Prepara un disco alto 6 cm. di Pan di Spagna 3. Monta 500 gr. di Panna 4. Disponi la crema sul disco di Pan di Spagna Questo è un algoritmo utile solo ad un cuoco!! … … …
Definizione di Algoritmo L’algoritmo deve terminare Un programma può andare in loop Definizione di Algoritmo Una definizione più precisa: Ogni istruzione deve essere sufficientemente elementare; eseguibile Un algoritmo è una sequenza finita di istruzioni che, quando eseguite, svolgono un ben determinato compito. Gli elementi fondamentali di ogni algoritmo sono: Le istruzioni devono essere chiare e comprensibili a chi dovrà eseguire l’algoritmo 1. Input 4. Finitezza della sequanza 2. Output 5. Efficacia 3. Istruzioni Definite
Il risultato è il numero di palline a sinistra sulla terza riga Somma di due Numeri con un Pallottoliere L’Algoritmo della Somma 1. Sposta una pallina da sinistra a destra della prima riga e una da destra a sinistra nella terza riga 2. Ripeti 1. fino ad esaurire la prima riga 3. Sposta una pallina da sinistra a destra della seconda riga e una da destra a sinistra nella terza riga 4. Ripeti 3. fino ad esaurire la seconda riga. Il risultato è il numero di palline a sinistra sulla terza riga
Somma di due Numeri con un Pallottoliere 3. Sposta una pallina da sinistra a destra della seconda riga e una da destra a sinistra nella terza riga fino ad esaurire la seconda riga 2. Ripeti 1. fino ad esaurire la prima riga 1. Sposta una pallina da sinistra a destra della prima riga e una da destra a sinistra nella terza riga Somma di due Numeri con un Pallottoliere
Consultazione di una Carta Topografica Berlino Praga Parigi Vienna Budapest Bordeaux Marsiglia Milano Roma Barcellona
Consultazione di una Carta Topografica Berlino 1. Costruire tutte le sequenze di città tra Barcellona e Praga Praga 2. Per ogni sequenza si calcoli la somma delle distanze tra città adiacenti. Parigi Zurigo Vienna Budapest 3. Si scelga la sequenza la cui somma delle distanze sia minima Bordeaux Milano Marsiglia Roma Barcellona
1. Costruire tutte le sequenze di città tra Barcellona e Praga Sequenze di Lunghezza 1 : {Barcellona} Berlino Sequenze di Lunghezza 2 : {Barc, Bord} {Barc, Mars} Sequenze di Lunghezza 2 : {Barc, Bord} {Barc, Mars} Sequenze di Lunghezza 2 : {Barc, Bord} {Barc, Mars} Praga Sequenze di Lunghezza 3 : Parigi {Barc, Mars,Pari} {Barc, Bord,Pari} {Barc, Bord,Pari} {Barc, Bord,Mars} {Barc, Bord,Mars} Zurigo Vienna Budapest {Barc, Mars,Zuri} Bordeaux {Barc, Mars,Bord} Milano Marsiglia Roma Barcellona
... Sottoproblema Induzione 1. Costruire tutte le sequenze di città tra Barcellona e Praga Sottoproblema Berlino Praga Sequenze di Lunghezza 1 Induzione Sequenze di Lunghezza 2 Parigi ... Zurigo Vienna Budapest Bordeaux Milano Marsiglia Sequenze di Lunghezza n Roma Barcellona
Linguaggi di Programmazione (Linguaggi per la Codifica degli algoritmi) Linguaggio Macchina (fino agli anni ’50) Assembler FORTRAN e COBOL ALGOL 60 Pascal, C, Ada,… LISP e PROLOG Linguaggi a oggetti e Linguaggi Visuali
Architettura di un Sistema Informatico Hardware: i componenti fisici del sistema informatico Microprogrammi (Firmware): software memorizzato nell’hardware dal costruttore stesso Software: i programmi eseguiti dal sistema informatico
Architettura di un Calcolatore (Hardware - Architettura di Von Neumann) Unità di Elaborazione (CPU) Memoria Centrale (RAM e ROM) Memoria Secondaria o Memoria di Massa (DISCHI) Unità Periferiche (Video, Tastiera, etc.) Il Bus di Sistema CPU Memoria Periferiche BUS
Architettura di Von Neumann Il Personal Computer Architettura di Von Neumann IL CASE CPU (Central Processing Unit) Unità Centrale di Elaborazione RAM (Random Access Memory) Memoria Centrale ROM (Read Only Memory) HD (Hard Didk) Memoria di Massa (Disco Rigido)
Altri Sistemi Informatici Workstations, mini-computer, mainframe Reti di calcolatori Reti locali (LAN) Reti Geografiche
Un sistema Informatico Complesso Rete Geografica Rete Locale
Il Software Software di Base (Sistema Operativo) Software Applicativo (Office Automation) Software di Sviluppo (Ambiente di Programmazione)
Software di Base Il Sistema Operativo Interpretare ed eseguire comandi elementari e tradurre i comandi degli applicativi in operazioni della macchina Organizzare la struttura della memoria di massa Ripartire le risorse del sistema tra gli utenti. (Multiuser – Multitasking)
Ambiente di Programmazione Traduce i programmi in codice oggetto, eseguibile dal calcolatore Per Scrivere fisicamente il programma Collega diversi moduli di un programma, e le cosiddette librerie, producendo il vero e proprio eseguibile Permette di interrompere l’esecuzione del programma dopo ogni istruzione per correggere eventuali errori (bug) Editor Compilatore Linker Debugger
Applicativi Sistemi di Videoscrittura Fogli Elettronici Sistemi per la gestione di DataBase Ipertesti Browser
CODIFICA DELL’INFORMAZIONE (Codifica Binaria) 01101010 Bit 0/1 (si/no) Byte 00010010 (8 bit) Kilobyte 210 = 1024 byte Megabyte 220 ~ 1.000.000 byte Gigabyte 230 ~ 1.000.000.000 byte
Rappresentazione dei Naturali La Notazione Posizionale (in base p) Np an an-1 an-2 … a1 a0 Np = an x pn + an-1 x pn-1 + … + a1 x p + a0 Esempio (base 10) 543 = 5 x 102 + 4 x 101 + 3 x 100 = 500 + 40 + 3
Rappresentazione dei Naturali La Notazione Additiva (numeri romani) Np an an-1 an-2 … a1 a0 Np = an + an-1 + … + a1 + a0 I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000 Esempio DCCCII = D + C + C + C + I + I = 500 + 100 + 100 + 100 + 1 + 1 = 532
Le Notazioni Usate in Informatica Binaria (base 2) ai = 0,1 Ottale (base 8) ai = 0,1,2,3,4,5,6,7 Esadecimale (base 16) ai = 0,1,2,…,9,A,B,C,D,E,F Decimale Binaria Ottale Esadec. 10 1010 12 A 124 1111100 174 7C
(Da binario a decimale e viceversa) Codifica e decodifica (Da binario a decimale e viceversa) N2 = 101010 N10 = 1 x 25 + 0 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 0 x 20 = 32 + 8 + 2 = 42 N2 = 11011 N10 = 20 + 21 + 23 + 24 = 1 + 2 + 8 + 16 = 27
(Da decimale a binario) Codifica e decodifica (Da decimale a binario) N10 = 51 N2 = ??? 51 2 1 25 2 12 1 2 6 2 3 2 1 2 1 N2 = 110011 51 = 2x25+1 = 2x(2x12+1)+1 = 2x(2x(2x6+0)+1)+1 = = 2x(2x(2x(2x3+0)+0)+1)+1 = = 2x(2x(2x(2x(2x1+1)+0)+0)+1)+1 = 25+24+21+20
Da Binario a Ottale/Decimale N16 = 4 D E Per trasformare un numero binario in ottale, operiamo la trasformazione considerando gruppi di 3 bit Per trasformare un numero binario in esadecimale, operiamo la trasformazione considerando gruppi di 4 bit
Rappresentazione degli Interi Come possiamo rappresentare il segno di un numero? Con k bit si possono codificare tutti gli interi -2k-1+1 N 2k-1-1 Esistono due codifiche dello 0 0000…0 1000…0 Aggiungiamo un ulteriore bit che poniamo a 1 se il numero è negativo! Esempio N10 = +14 N2 = 01110 N10 = -14 N2 = 11110
Rappresentazione degli Interi (Rappresentazione in complemento a 2) Supponiamo di avere a disposizione k bit La rappresentazione di –N si ottiene facendo la conversione in binario del numero 2k-N Con k bit si possono codificare tutti gli interi -2k-1 N 2k-1-1 0000…02 010 1 000…02 -2k10 Esempio (con 5 bit) N10 = +14 N2 = 01110 N10 = -14 2k-14 =18 N2 = 10010
Aritmetica Binaria 1 Somma e differenza di due numeri di k bit Overflow 1 Riporto:
Aritmetica Binaria +6 1 +4 +10 +7 1 -10 -3 -2 1 +13 +11 -12 1 -7 +11 Somma e differenza in complemento a 2 di due numeri di k bit +6 1 +4 +10 +7 1 -10 -3 Overflow Non è Overflow -2 1 +13 +11 -12 1 -7 +11
Operazioni Logiche OR 1 AND 1 NOT 1
Circuiti Logici (Semiaddizionatore) 1 x1 S x2 R 1 1 x1 AND OR S x2 NOT R AND NOT AND S = (x1 AND NOT(x2)) OR (x2 AND NOT(x1)) R = x1 AND x2
Codifica dei Caratteri I caratteri di un testo sono codificati come sequenze di bit I codici storici sono ASCII 7 bit (American Standard Code for Inform. Interchange) EBCDIC 8 bit ISO (ISO-Latin 1) Oggi: UNICODE BCD 4 bit