laboratorio di programmazione - unipr.it · qualsiasi manuale (recente) di matlab ... e’...
Post on 30-Jul-2020
8 Views
Preview:
TRANSCRIPT
Laboratorio di Programmazione Corso di Laurea in Ingegneria Civile e Ambientale
Anno accademico 2018/2019
Stefano Cagnoni
Dipartimento di Ingegneria dell’Informazione
Università degli Studi di Parma
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/2018/course/view.php?id=344
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 circa. L’aula è disponibile fino alle 12.30: la presenza dei docenti è garantita fino alle 11.30.
La frequenza non è obbligatoria anche se vivamente consigliata (se si sono fatti gli esercizi, il superamento dell’esame è … inevitabile!)
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 = 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)
Informatica e dati
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…
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.
Codifica dell’informazione
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.
Comunicazione
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
Codifica dell’informazione
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 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)
Rappresentazione dell’informazione
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
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
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)
Rappresentazioni medianti basi diverse
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
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
Rappresentazioni mediante basi diverse
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 )
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 binaria
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
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.
Rappresentazione digitale
Sin(x): rappresentazione continua
fc = 2
fc = 10
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 (es.
“chiavette” USB) non sono basate su supporti
magnetici o ottici.
Sono basate su circuiti (flash memory) strutturati in
modo simile alle RAM. Tuttavia, nel loro uso come
memorie di massa, vengono utilizzati (e gestiti dal
computer) come le altre memorie di massa (hard
disk).
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
Esercizi
top related