Laboratorio di Programmazione - ce.unipr.it · Laboratorio di Programmazione Corso di Laurea in...

36
Laboratorio di Programmazione Corso di Laurea in Ingegneria Civile e Ambientale Anno accademico 2016/2017 Stefano Cagnoni Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma

Transcript of Laboratorio di Programmazione - ce.unipr.it · Laboratorio di Programmazione Corso di Laurea in...

Laboratorio di Programmazione Corso di Laurea in Ingegneria Civile e Ambientale

Anno accademico 2016/2017

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

Parco Area delle Scienze 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

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)

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à

Durante il corso: ogni settimana (da fine ottobre in

poi) verrà assegnato un set di esercizi (tempo

previsto per lo svolgimento 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 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

(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 teoriche si svolgono in aula O dalle 8.45 alle 11 circa.

Le esercitazioni in laboratorio si svolgono negli stessi orari ma nell’aula informatica E del nuovo plesso didattico (Aule delle Scienze).

La frequenza non è obbligatoria anche se vivamente consigliata.

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)

Installare MATLAB sul proprio computer per svolgere gli esercizi settimanali. Le istruzioni per ottenere la licenza didattica sono sul sito del corso.

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

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)

espresse in un 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

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

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:

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

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

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

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

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

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 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

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 della

sequenza dei primi 2N numeri interi positivi (naturali).

Fissato il range 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 (Nmax-Nmin)/2N, cioè la

distanza fra due numeri 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

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

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