Laboratorio di Programmazione - Corso di Laurea in Ingegneria Civile e Ambientale - Università degli Studi di Parma
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Laboratorio di Programmazione Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2019/2020 Stefano Cagnoni
Riferimenti del corso Docenti del corso: Stefano Cagnoni Tel.: 0521/905731 Palazzina 1 – Sede Scientifica Ingegneria Parco Area delle Scienze 181/A E-mail: stefano.cagnoni@unipr.it Laura Sani Palazzina 1 – Sede Scientifica Ingegneria Parco Area delle Scienze 181/A Email: laura.sani@unipr.it
Riferimenti del corso Sito del corso: http://www.ce.unipr.it/people/cagnoni/didattica/liciv Anche su Elly https://elly.dia.unipr.it/2019/course/view.php?id=68 Ricevimento: - in aula/laboratorio dopo la lezione - su appuntamento - occasionalmente in laboratorio fuori orario di lezione
Obiettivi Introdurre gli elaboratori elettronici come strumenti per risolvere problemi e gestire informazioni Introdurre i concetti di dato e di elaborazione dati Fornire le metodologie per esprimere la soluzione ad un problema (definizione di un algoritmo) e codificarla in un linguaggio di programmazione (MATLAB)
Contenuti Cenni su: Rappresentazione dell’informazione Hardware: architettura di un calcolatore Software: sistemi operativi e applicazioni Algoritmi e linguaggi di programmazione Il linguaggio/ambiente di programmazione MATLAB
Testi di riferimento/consultazione L. Snyder, A. Amoroso “Fluency: Conoscere e usare l'informatica”, IV ed., Pearson Education D. Sciuto, G. Buonanno, L. Mari “Introduzione ai sistemi informatici», IV ed, McGraw-Hill Qualsiasi manuale (recente) di MATLAB In biblioteca: W.J. Palm “MATLAB 7 per l’ingegneria e le scienze”, McGraw-Hill Più recente H. Moore “MATLAB per l’Ingegneria”, Pearson/Prentice-Hall
Esame: modalità Durante il corso: in ogni lezione, preceduto da una introduzione teorica, verrà assegnato un set di esercizi (tempo previsto circa 1.5 ore): la programmazione si impara programmando!!!! Esame: Breve prova scritta (circa 30 minuti) di ammissione alla prova pratica Prova pratica in laboratorio: realizzazione ed esecuzione su calcolatore (e salvataggio su disco) di un esercizio analogo a quelli realizzati durante l’anno
Esame: modalità L’iscrizione ad ogni appello chiude 3 giorni prima dello svolgimento della prova scritta. Se possibile, prova scritta la mattina, prova pratica il pomeriggio. Intorno al 15/12 si svolgerà una prova scritta preliminare sul programma svolto fino a quel punto (quasi tutto). Chi ottiene un voto sufficiente sarà direttamente ammesso alla prova pratica. Se possibile (disponibilità laboratori), prova pratica preliminare a fine dicembre o inizio gennaio. Appelli I sessione: fine gennaio e metà febbraio.
Lezioni Le lezioni e le esercitazioni si svolgono nell’aula informatica E del nuovo plesso didattico (Aule delle Scienze) dalle 8.45 alle 11.30. La frequenza non è obbligatoria anche se vivamente consigliata: se si sono fatti gli esercizi, il superamento dell’esame è … inevitabile! Tuttavia, è anche inevitabile la necessità di fare esercizio per superare la prova!
Prepararsi a seguire il corso Per partecipare alle esercitazioni è necessario ottenere un account nei laboratori didattici se non lo avete già dallo scorso anno E’ possibile farlo direttamente in uno dei laboratorio didattici di Informatica (sede didattica di Ingegneria), accedendo ad un qualunque computer con Login: laboratori Password: laboratori E’ anche possibile farlo da casa collegandosi al sito http://www.cedi.unipr.it/gestioneaccounts (ignorare l’eventuale messaggio di errore per certificato non valido) In lab. E, accedere a ‘Registrazione Intranet’ inserendo ‘cancella’ al login e passando alla schermata successiva. Installare MATLAB sul proprio computer per svolgere gli esercizi settimanali. Le istruzioni per ottenere la licenza didattica sono sul sito del corso.
Rappresentazione digitale delle informazioni
Informazione Informazione: elemento che consente di acquisire conoscenza, più o meno esatta, di fatti, situazioni, modi di essere. Perché sia utile deve essere: Mirata ad uno scopo Non sovrabbondante Rispettosa dei principi di etica e riservatezza
Informatica e dati Informatica = Informazione + Automatica (gestione automatica dell’informazione) I sistemi informatici gestiscono l’informazione elaborando entità elementari di cui è costituita (dati) Dato: ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione; (in informatica) elemento di informazione costituito da simboli che devono essere elaborati. (dal Vocabolario della Lingua Italiana, Istituto dell’Enciclopedia Italiana)
Elaboratore elettronico (computer o calcolatore) Dispositivo in grado di rappresentare memorizzare elaborare i dati eseguendo sequenze di operazioni elementari (istruzioni) le azioni eseguite sui dati generano altri dati (i risultati, cioè i dati elaborati)
Programmazione La risoluzione di un problema è quel processo che dato un problema e un insieme di dati che lo descrivono individuato un opportuno metodo risolutivo, detto algoritmo trasforma i dati iniziali nei corrispondenti risultati finali che descrivono la soluzione.
Programmazione L’attività con cui si predispone l’elaboratore a eseguire un particolare insieme di azioni su un particolare insieme di dati allo scopo di risolvere un problema Le azioni da compiere sui dati sono “richieste” al computer attraverso “frasi” di un linguaggio di programmazione (istruzioni) Vediamo perché si parla di linguaggio…
Codifica dell’informazione Gli esseri viventi ricevono informazione direttamente dal mondo circostante e dai propri simili attraverso i sensi (percezione). L’informazione percepita deve poter anche essere memorizzata e trasmessa agli altri. La memorizzazione e la trasmissione dell’informazione richiedono che questa sia codificata. Per descrivere un fenomeno che non è direttamente percepibile o un oggetto che non è a portata di mano o un concetto astratto ho bisogno di simboli (es. parole, testi) che mi aiutino a rappresentarlo.
Comunicazione Problema (non risolubile) Un uomo atterra su un pianeta sconosciuto e incontra una diversa forma di vita. Come può far capire che non ha cattive intenzioni se non esiste alcun codice riconosciuto da entrambi ? Per comunicare è necessario condividere gli stessi codici! Due persone di provenienza diversa hanno lingue e gestualità diverse. Però trasmettono le proprie emozioni attraverso espressioni spontanee simili. I codici possono collocarsi a livelli diversi.
Codifica dell’informazione Un insieme di simboli e di regole che determinano come interpretarli costituiscono un codice. Es. la scrittura SIMBOLI = a b c d e f g h … x y z , . +’ ( ) … ARCO (potremmo anche leggerlo ocra, cane ecc.) Esistono regole che creano una corrispondenza fra ogni simbolo e un suono, che determinano come interpretare gruppi di più simboli ecc.
Codifica dell’informazione Alcuni codici usati quotidianamente: gesti parole e, quindi, lingue scrittura rappresentazione dei numeri Utilizzare gli stessi codici permette la COMUNICAZIONE (dell’informazione) COMUNICARE permette di: descrivere/condividere oggetti, idee, percezioni, emozioni trasmettere conoscenza, esperienza, comandi
Rappresentazione dell’informazione L’informazione può essere rappresentata in due forme: Analogica Digitale (o Numerica; in inglese digit = cifra/numero ) In forma analogica una grandezza è rappresentata mediante un’altra grandezza in modo continuo (ad esempio mediante un livello variabile di tensione). In forma digitale una grandezza è rappresentata in modo discreto, mediante sequenze finite di simboli tratti da un insieme finito associabile con i numeri naturali.
Rappresentazione dell’informazione Rappresentazione analogica dell’informazione Esempio suono -> microfono -> tensione codifica tensione -> registratore -> polarizzazione magnetica memorizzazione p.magn. -> altoparlante -> suono decodifica Rappresentazione analogica qui significa che: La tensione prodotta dal microfono è tanto più alta quanto più elevato è il livello del suono. La vibrazione dell’altoparlante è tanto più ampia quanto più elevata è la tensione
Rappresentazione dell’informazione La rappresentazione digitale (numerica) usata all’interno di un calcolatore: è una approssimazione discreta della realtà (che è continua): ogni fenomeno/quantità è approssimato da una sequenza finita di dati (numeri), ciascuno dei quali può assumere solo un numero finito di valori. l’errore che si commette in questa approssimazione dipende dalla quantità di dati utilizzati e dalla precisione (numero di cifre/simboli a disposizione) della rappresentazione digitale.
Rappresentazione dell’informazione La rappresentazione digitale della realtà è una rappresentazione basata su numeri (digit = cifra, quindi digitale = numerico) che necessita di un CODICE per rappresentarli. I circuiti di un calcolatore lavorano a due diversi livelli di tensione (di solito 0 e 5 Volt, ma anche 0 e 3.3 Volt)
Codifica binaria I 2 livelli rappresentano, in generale, due SIMBOLI diversi, a cui associare due diversi significati Es. Vero/Falso Positivo/Negativo Presenza/Assenza …ma anche le quantità (cifre) 0/1
Codifica binaria Rappresentazione di numeri Notazione di tipo posizionale (esattamente come la notazione decimale, di cui segue le stesse regole). Ogni numero è rappresentato da una sequenza (stringa) di simboli Il valore del numero dipende non solo dalla quantità rappresentata da ciascun simbolo, ma anche dalla posizione in cui si trovano i simboli. 3456 è diverso da 6543 1001 è diverso da 1100 Utilizza solo 2 simboli (0 e 1)
Notazione posizionale Scelta una base di rappresentazione B ogni numero è rappresentato da una sequenza di simboli (cifre) appartenente a un alfabeto di B simboli distinti ogni cifra rappresenta un valore compreso fra 0 e B-1 a ogni posizione corrisponde un peso, uguale ad una potenza della base crescente da destra verso sinistra. Valore del numero = somma dei prodotti di ciascuna cifra per il peso associato alla sua posizione Esempio di rappresentazione su N cifre: dN-1 dN-2 …d1 d0 = dN-1* BN-1 + dN-2 * BN-2 +…+ d1* B1 + d0 * B0 Cifra più significativa Cifra meno significativa
Esempi (109)10 = 1*102 + 0*101 + 9*100 = 100 + 0 + 9 (1101101)2 = 1* 26+1* 25+0* 24+1* 23+1* 22+0* 21+ 1* 20 = 64 + 32 + 0 + 8 + 4 + 0 + 1 = (109)10 (155)8 = 1*82 + 5*81 + 5*80 = 64 + 40 + 5 = (109)10 (6D)16 = 6*161 + 13 *160 = 96 + 13 = (109)10
Rappresentazioni medianti basi diverse Decimale (B=10) (usa le cifre da 0 a 9) Binaria (B=2) (usa le cifre 0 e 1) Un calcolatore rappresenta l’informazione attraverso la codifica binaria. Ogni elemento di una sequenza binaria viene detto bit (Binary digIT). Una sequenza di 8 bit si dice byte. Ottale (B=8) (usa le cifre da 0 a 7) Esadecimale (B=16) (cifre da 0-9 + lettere A-F)
Multipli del byte 1 Byte = 8 bit 1 KiloByte (kB) = 1024 byte (210 = 1024) 1 MegaByte (MB) = 1024 KB = 220 Byte 1 GigaByte (GB) = 1024 MB = 230 Byte 1 TeraByte (TB) = 1024 GB = 240 Byte
Rappresentazioni mediante basi diverse Con sequenze di N simboli in base B posso rappresentare BN numeri diversi 3 cifre decimali (B=10) 1000 (103) valori diversi 3 cifre binarie (B=2) 8 (23) valori diversi Quanto più piccola è la base tanto più lunga sarà la rappresentazione di una stessa quantità. Es. (109)10 = (1101101)2 = (6D)16
Rappresentazione digitale binaria Per rappresentare un dato si ha a disposizione un numero finito N di bit. Con N bit si possono formare 2N combinazioni diverse (con N cifre in base 10 se ne formano 10N ) Quindi, se voglio rappresentare valori in un certo intervallo [min,max] posso rappresentare in modo esatto 2N valori compresi fra min e max (inclusi) ed equispaziati e approssimare tutti gli altri possibili valori nell’intervallo con il valore rappresentabile più vicino
Rappresentazione digitale binaria Rappresentare i numeri nell’intervallo [min,max]=[0,7] con N=3 bit Con 3 bit posso ottenere 23=8 combinazioni diverse 000 001 010 011 100 101 110 111 Le faccio convenzionalmente corrispondere a 8 valori equispaziati nell’intervallo [0,7] 23 -1 intervalli 000=0 001=1 010=2 011=3 100=4 101=5 110=6 111=7 000 001 010 011 100 101 110 111 0 1 2 3 4 5 6 7 23 valori Tutti i valori intermedi sono approssimati con il valore rappresentabile più vicino Es. 3.456 viene approssimato come 011=3
Rappresentazione digitale binaria Non necessariamente i valori rappresentati saranno interi Es. [min,max] = [0, 4.2] con N=3 bit Con 3 bit posso ottenere 23=8 combinazioni diverse 000 001 010 011 100 101 110 111 Le faccio convenzionalmente corrispondere a 8 valori equispaziati nell’intervallo [0,4.2] 23 -1 intervalli 000=0 001=0.6 010=1.2 011=1.8 100=2.4 101=3.0 110=3.6 111=4.2 000 001 010 011 100 101 110 111 0 0.6 1.2 1.8 2.4 3.0 3.6 4.2 23 valori In questo caso 3.456 viene approssimato come 110=3.6
Rappresentazione digitale binaria Osservazioni L’insieme di sequenze di bit utilizzato per la rappresentazione corrisponde alla codifica binaria della sequenza dei primi 2N (0..2N-1) numeri interi positivi (naturali). Fissato il range di valori da rappresentare e il numero di bit con cui rappresentarli, il massimo errore di approssimazione che si può commettere è pari alla metà dell’ampiezza di un intervallo (a=(Nmax-Nmin)/(2N-1)), cioè la differenza fra due numeri consecutivi rappresentabili in modo esatto. Più grande è N, minore è l’ampiezza degli intervalli. Più grande è N, minore è l’errore (errore di quantizzazione) che si commette approssimando un numero qualunque all’interno dell’intervallo con uno dei valori rappresentabili
Rappresentazione digitale dei dati
Cosa possiamo rappresentare ? Numeri (interi e reali) Simboli (codifica di concetti o simboli: es. vero e falso, caratteri alfanumerici, ecc.) Dati multimediali - testi sequenze di simboli (lettere dell’alfabeto) - suoni sequenze di campioni (misure nel tempo) - immagini sequenze di campioni (misure nello spazio)
Tipi di dati Tutti questi tipi di dati possono essere rappresentati in forma binaria all’interno di un calcolatore La potenza e la versatilità del calcolatore derivano dalla possibilità di utilizzare una codifica comune per diversi tipi di dati. Eseguendo operazioni dello stesso tipo a livello fisico si possono ottenere risultati interpretabili in modo molto diverso a livello logico
Rappresentazione digitale E’ una rappresentazione di tipo DISCRETO (il numero di elementi con cui si descrive un fenomeno anche continuo è finito; inoltre ogni elemento può assumere un numero finito di valori) Per rappresentare in modo digitale grandezze continue variabili nel tempo (es. intensità sonora, temperatura, velocità, posizione, ecc.) o nello spazio (es. luminosità/colore delle immagini, altitudine in una carta geografica, ecc.) devo CAMPIONARLE (rappresentarle come sequenze discrete di valori, equidistanti nel tempo o nello spazio) e QUANTIZZARLE (approssimare ogni valore col valore più simile che il computer può rappresentare in modo esatto)
Rappresentazione digitale Campionare una grandezza significa approssimarla attraverso una sequenza ordinata nel tempo (o nello spazio) di dati, detti campioni, che descrivono i valori di tale grandezza in un numero limitato di istanti di tempo (punti nello spazio) sufficientemente vicini. La distanza fra due campioni consecutivi è detta tempo (intervallo, se nello spazio) di campionamento; il suo inverso frequenza di campionamento (risoluzione spaziale, se nello spazio): indica quanti campioni ho a disposizione per la descrizione nell’unità di tempo (spazio)
Rappresentazione digitale La frequenza di campionamento si misura in campioni/secondo La risoluzione spaziale in campioni (pixel)/millimetro (pixel = PICTure ELement) Quanto più sono elevate, tanto più precisa è l’approssimazione (discreta) della realtà (che è continua) che si può ottenere. L’approssimazione che si fa campionando una misura consiste nel considerarla costante nel periodo che trascorre fra l’acquisizione di due campioni
Sin(x): rappresentazione continua fc = 10 fc = 2 fc = 1
1 1/5 1/10 1/100
In conclusione La rappresentazione digitale, essendo discreta, introduce due tipi di approssimazioni: 1. Errore di campionamento: dovuto all’approssimazione del valore effettivo della grandezza che sto rappresentando con il valore dell’ultimo campione acquisito, fino all’acquisizione di un nuovo campione (cioè alla rappresentazione discreta delle ascisse).
In conclusione 2. Errore di quantizzazione: dovuto all’approssimazione del valore effettivo della grandezza che sto rappresentando con il valore rappresentabile più vicino (rappresentazione discreta delle ordinate) Dipende dal numero di bit disponibili per la rappresentazione e quindi dalla precisione con cui posso rappresentare l’effettivo valore di un campione.
Rappresentazione di simboli Con N bit posso rappresentare qualunque insieme numerabile (cioè che può essere messo in corrispondenza con gli interi) di simboli. Con due bit è possibile generare 4 configurazioni distinte (00, 01, 10, 11) che possono essere associate a 4 informazioni distinte Esempi di insiemi diversi di informazioni rappresentabili: 00 -> a 1 verde 01 -> b 2 rosso 10 -> c 3 giallo 11 -> d 4 blu
Codifica dei caratteri alfanumerici 26 lettere minuscole e 26 lettere maiuscole, 10 cifre, 10 segni aritmetici, 20 segni di interpunzione (spazi inclusi) e 3 caratteri non stampabili (a capo, tabulazione, backspace) = 95 caratteri, che rappresentano la lingua Inglese Per 95 simboli sono necessari 7 bit: log2M =7 Una consolidata rappresentazione a 7-bit è il codice ASCII (American Standard Code for Information Interchange)
Codifica dei caratteri alfanumerici A metà degli anni ‘60 divenne chiaro che il codice a 7 bit non bastava per rappresentare anche i caratteri dei linguaggi diversi dall’inglese IBM estese il codice ASCII a 8 bit e 256 simboli Chiamato "Extended ASCII", la prima metà (codici da 0 a 127) è costituita dall’originale codice ASCII (con uno 0 aggiunto all’inizio di ogni gruppo di bit) Permette di esprimere la maggior parte dei caratteri degli alfabeti occidentali e include molti altri simboli utili
Codifica dei caratteri alfanumerici
Colori nelle immagini digitali Codifica RGB per le immagini a colori Ogni colore è diviso in 3 componenti fondamentali: Rosso (R), Verde (G), Blu (B). L’intensità di ogni componente è di solito rappresentata su 8 bit => ogni colore è rappresentato su 24 bit. Posso quindi rappresentare (quantizzazione) 224 colori diversi (circa 16 milioni). Se almeno una delle componenti è diversa dalle altre ho percezione del colore, altrimenti vedo una tonalità grigia più o meno intensa (0,0,0 è il nero; 255,255,255 il bianco)
Memoria
Memoria Centrale Spazio di lavoro del calcolatore: contiene i dati da elaborare, le istruzioni da eseguire e i risultati delle elaborazioni durante il funzionamento del calcolatore. Insieme di celle di dimensione pari a 1 byte, ciascuna delle quali è individuata da un indirizzo, che indica la posizione della cella all’interno della memoria Se ogni indirizzo è lungo 32 bit posso distinguere e accedere singolarmente a 232 celle diverse. 232 celle = 4 Gcelle -> 4 Gbyte (circa 4 x 109 celle) Si usano normalmente indirizzi a 32 o 64 bit (16x1018 celle) Poiché è possibile accedere direttamente a ogni cella, una memoria di questo tipo si chiama Random Access Memory (RAM), cioè, alla lettera, memoria ad accesso casuale.
Memoria Centrale La memoria centrale contiene codici binari interpretabili come dati o istruzioni (che costituiscono i programmi) durante il funzionamento del calcolatore. I dati possono essere modificati durante l’esecuzione dei programmi (elaborazione dati) come risultato delle istruzioni eseguite. Sulla memoria centrale deve quindi essere possibile fare operazioni di lettura (ad es. delle istruzioni da eseguire o dei dati da elaborare) e scrittura (ad es. dei dati elaborati). E’ tipicamente volatile (utilizzabile solo se alimentata).
Memoria Centrale Caratteristiche fondamentali: Dimensione o capacità (n. di celle, quindi di byte) Tempo di accesso (il ritardo dopo l’invio del comando di lettura con cui il dato diviene effettivamente disponibile per l’elaborazione) Tipicamente la dimensione della memoria centrale è dell’ordine del GByte. Il tempo di accesso è dell’ordine delle decine di nanosecondi. (1 ns = 10-9 s = un miliardesimo di secondo)
Memorie di massa Memorie permanenti: mantengono il loro contenuto anche dopo lo spegnimento del calcolatore. Diverse rispetto alla memoria centrale: il loro funzionamento è basato perlopiù su fenomeni di tipo ottico o magnetico, non su fenomeni elettrici. Tipicamente organizzate in dischi, fissi o asportabili. Più economiche rispetto alle memorie RAM. Il loro tempo di accesso è tuttavia molto maggiore, cioè, a parità di dati da leggere, il processo di lettura avviene in modo più lento.
Memorie di massa Le memorie di massa allo stato solido, come le “chiavette” USB (Universal Serial Bus) o i dischi SSD (solid-state drive) non sono basate su supporti magnetici o ottici. Sono basate su circuiti (flash memory) strutturati in modo simile alle RAM, che consentono quindi accesso diretto a qualsiasi locazione. Tuttavia, nel loro uso come memorie di massa, vengono utilizzati (e gestiti dal computer) come le altre memorie di massa (hard disk).
Esercizi Si vogliono rappresentare i numeri nell’intervallo [0,150] con 4 bit • In quanti intervalli viene suddiviso l’insieme ? • Quanto è ampio ciascun intervallo ? • Quali sono i valori che risultano rappresentabili (gli estremi degli intervalli) ? • A quanto ammonta l’errore che si commette approssimando 127.8 con il numero rappresentabile più vicino ? In generale, dato un intervallo [min,max] e N bit, quanto è ampio ciascun sottointervallo? Quale è il massimo errore che posso commettere? Giustificare le risposte
Puoi anche leggere