36
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

Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 2: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 3: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 4: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 5: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 6: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 7: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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.

Page 8: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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.

Page 9: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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)

Page 10: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

Rappresentazione digitale

delle informazioni

Page 11: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 12: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 13: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 14: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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.

Page 15: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 16: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 17: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 18: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 19: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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.

Page 20: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 21: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 22: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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)

Page 23: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 24: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 25: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 26: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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)

Page 27: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 28: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 29: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 30: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 31: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 32: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 33: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 34: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 35: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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

Page 36: Laboratorio di Programmazione - Computer Engineering Group · Introdurre i concetti di dato e di elaborazione dati Vederli utilizzati in un applicativo (EXCEL) Fornire le metodologie

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