18
1 Laboratorio di Programmazione Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 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 Lab. Programmazione - aa 2013/14

Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

  • Upload
    dinhdan

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

1

Laboratorio di Programmazione Corso di Laurea in Ingegneria Civile e Ambientale

Anno accademico 2013/2014

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

Lab. Programmazione - aa 2013/14

Page 2: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

2

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. Programmazione - aa 2013/14

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

Lab. Programmazione - aa 2013/14

Page 3: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

3

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

Lab. Programmazione - aa 2013/14

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 (realizzazione di un foglio Excel ed

importazione/esportazione dei dati da/a un

programma MATLAB)

Lab. Programmazione - aa 2013/14

Page 4: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

4

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: 22 gennaio e 19 febbraio.

Lab. Programmazione - aa 2013/14

Lezioni

Le lezioni teoriche si svolgono il mercoledì in aula H dalle 14.30 alle 17.30 circa.

Le esercitazioni in laboratorio si svolgono nelle stesse ore, eventualmente secondo una suddivisione in gruppi se la capienza dei laboratori non è sufficiente.

La frequenza non è obbligatoria anche se vivamente consigliata.

Lab. Programmazione - aa 2013/14

Page 5: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

5

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)

Lab. Programmazione - aa 2013/14

Rappresentazione digitale

delle informazioni

Page 6: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

6

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. Programmazione - aa 2013/14

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

Lab. Programmazione - aa 2013/14

Page 7: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

7

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

Lab. Programmazione - aa 2013/14

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.

Lab. Programmazione - aa 2013/14

Page 8: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

8

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. Programmazione - aa 2013/14

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. Programmazione - aa 2013/14

Page 9: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

9

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. Programmazione - aa 2013/14

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. Programmazione - aa 2013/14

Page 10: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

10

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.

Lab. Programmazione - aa 2013/14

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. Programmazione - aa 2013/14

Page 11: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

11

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. Programmazione - aa 2013/14

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)

Lab. Programmazione - aa 2013/14

Page 12: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

12

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

Lab. Programmazione - aa 2013/14

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. Programmazione - aa 2013/14

Page 13: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

13

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. Programmazione - aa 2013/14

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)

Lab. Programmazione - aa 2013/14

Page 14: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

14

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. Programmazione - aa 2013/14

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. Programmazione - aa 2013/14

Page 15: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

15

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. Programmazione - aa 2013/14

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. Programmazione - aa 2013/14

Page 16: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

16

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. Programmazione - aa 2013/14

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. Programmazione - aa 2013/14

Page 17: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

17

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. Programmazione - aa 2013/14

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. Programmazione - aa 2013/14

Page 18: Laboratorio di Programmazione - ce.unipr.it · Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2013/2014 Stefano Cagnoni ... Qualsiasi manuale (recente) di MATLAB

18

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. Programmazione - aa 2013/14

Si vogliono rappresentare i numeri nell’intervallo [0,225]

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

37.2 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. Programmazione - aa 2013/14