laboratorio di programmazione - computer engineering group · introdurre i concetti di dato e di...
TRANSCRIPT
Laboratorio di Programmazione Corso di Laurea in Ingegneria Civile e Ambientale
Anno accademico 2014/2015
Stefano Cagnoni
Dipartimento di Ingegneria dell’Informazione
Università degli Studi di Parma
Riferimenti del corso
Docente:
Stefano Cagnoni
Tel.: 0521/905731
Palazzina 1 – Sede Scientifica Ingegneria
Viale Usberti 181/A
E-mail: [email protected]
Sito del corso: http://www.ce.unipr.it/people/cagnoni/didattica/liciv
Ricevimento: - in aula dopo la lezione - su appuntamento - occasionalmente in laboratorio fuori orario di lezione
Lab. di Programmazione - A.A. 2014-2015
Obiettivi
Introdurre gli elaboratori elettronici come strumenti per
risolvere problemi e gestire informazioni
Introdurre i concetti di dato e di elaborazione dati
Vederli utilizzati in un applicativo (EXCEL)
Fornire le metodologie per esprimere la soluzione ad un
problema (definizione di un algoritmo) e codificarla in un
linguaggio di programmazione (MATLAB)
Lab. di Programmazione - A.A. 2014-2015
Contenuti
Cenni su:
Rappresentazione dell’informazione
Hardware: architettura di un calcolatore
Software: sistemi operativi e applicazioni
Algoritmi e linguaggi di programmazione
L’applicativo EXCEL (foglio elettronico)
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à
Ogni settimana verrà assegnato un set di esercizi
(tempo previsto per lo svolgimento circa 1.5 ore):
la programmazione si impara programmando!!!!
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 5 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. 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 teoriche si svolgono il mercoledì in aula H dalle 15 alle 17.30 circa.
Le esercitazioni in laboratorio si svolgono negli stessi orari.
La frequenza non è obbligatoria anche se vivamente consigliata.
Prepararsi a seguire il corso Per partecipare alle esercitazioni è necessario ottenere un
account nei laboratori didattici
E’ possibile farlo direttamente in laboratorio, accedendo ad un qualunque computer con Login: laboratorio
Password: laboratorio
E’ anche possibile farlo da casa collegandosi al sito
http://laboratori.cedi.unipr.it (ignorare il messaggio di errore per certificato non valido)
Installare OCTAVE (clone gratuito di MATLAB) e QTOctave o GUIOctave (interfaccia grafica) sul proprio computer per svolgere gli esercizi settimanali. Il software (per Windows) è scaricabile dal sito del corso. Per Linux esistono i corrispondenti pacchetti da installare.
Installare EXCEL o OpenOffice Calc (gratuito)
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
Lab. di Programmazione - A.A. 2014-2015
Il termine Informatica deriva da Informazione +
Automatica (gestione automatica dell’informazione)
I sistemi informatici gestiscono l’informazione
elaborando le entità elementari da 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)
Strumento per la rappresentazione, la
memorizzazione e l’elaborazione delle
informazioni
uno strumento in grado di eseguire sequenze di
operazioni elementari
le azioni vengono eseguite su oggetti (dati) per
produrre altri oggetti (i risultati, cioè i dati elaborati)
l’esecuzione di azioni viene “richiesta”
all’elaboratore attraverso “frasi” (istruzioni) scritte
in un qualche linguaggio di programmazione
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
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.
Gli esseri viventi ricevono informazione direttamente
dal mondo circostante e dai propri simili attraverso i
sensi (percezione).
La percezione, tuttavia, è un fatto immediato.
L’informazione percepita deve poter anche essere
memorizzata e trasmessa agli altri.
La memorizzazione e la trasmissione dell’informazione
richiedono che questa sia codificata.
Se si deve descrivere un fenomeno che non può
essere riprodotto direttamente o un oggetto che non è
a portata di mano o un concetto astratto ho bisogno di
simboli che mi aiutino a rappresentarlo.
Codifica dell’informazione
Lab. di Programmazione - A.A. 2014-2015
Problema
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
Lab. di Programmazione - A.A. 2014-2015
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
Lab. di Programmazione - A.A. 2014-2015
Alcuni codici usati quotidianamente:
i gesti
le lingue
la scrittura
la 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
Lab. di Programmazione - A.A. 2014-2015
Rappresentazione dell’informazione
L’informazione può essere rappresentata in due
forme:
Analogica
Digitale (o Numerica; in inglese digit = cifra )
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
Lab. di Programmazione - A.A. 2014-2015
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 nella approssimazione
dipende dalla quantità di dati utilizzati e dalla
precisione (numero di cifre/simboli a
disposizione) della rappresentazione digitale.
Rappresentazione dell’informazione
Lab. di Programmazione - A.A. 2014-2015
Tipi di dati
Dati numerici (interi e reali)
Dati simbolici (codifica di concetti o simboli: es.
vero e falso, caratteri alfanumerici, ecc.)
Dati multimediali
- testi
- suoni
- immagini (fisse o in movimento)
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
La rappresentazione digitale della realtà è una
rappresentazione basata su numeri (digit = cifra,
quindi digitale = numerico) che necessita di un
CODICE per poterli rappresentare.
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
Lab. di Programmazione - A.A. 2014-2015
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
Lab. di Programmazione - A.A. 2014-2015
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
Lab. di Programmazione - A.A. 2014-2015
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
Lab. di Programmazione - A.A. 2014-2015
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
Lab. di Programmazione - A.A. 2014-2015
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
Lab. di Programmazione - A.A. 2014-2015
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
Qualunque sia la notazione, il valore della base B è
codificato con la sequenza 10
Infatti: 10 = 1 * B1 (+ 0 * B 0) = B
Rappresentazioni mediante basi diverse
Lab. di Programmazione - A.A. 2014-2015
Per rappresentare un dato si ha a disposizione un
numero finito di bit.
Con N bit si possono formare 2N combinazioni
diverse (con N cifre in base 10 se ne formano 10N )
Se si vogliono rappresentare valori in un certo
intervallo [min,max] posso rappresentare 2N valori
compresi fra min e max (inclusi) ed equispaziati e
approssimare tutti gli altri possibili valori
nell’intervallo mediante il valore più vicino fra quelli
rappresentabili
Rappresentazione digitale
Lab. di Programmazione - A.A. 2014-2015
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
Lab. di Programmazione - A.A. 2014-2015
Non necessariamente i valori rappresentati devono essere
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
Lab. di Programmazione - A.A. 2014-2015
Osservazioni
La sequenza di combinazioni di bit utilizzata per la
rappresentazione corrisponde alla codifica binaria dei primi
2N numeri interi positivi (naturali).
Fissato l’intervallo di valori che vogliamo 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 (distanza fra due numeri
rappresentabili)
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
Lab. di Programmazione - A.A. 2014-2015
Si vogliono rappresentare i numeri nell’intervallo [0,223]
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
Lab. di Programmazione - A.A. 2014-2015