laboratorio di calcolo i: introduzionewebusers.fis.uniroma3.it/~bussino/lez_prog_calc/lez_02.pdf ·...

38
UNIVERSITA’ DEGLI STUDI ROMA TRE DIPARTIMENTO DI FISICA “E. AMALDI” Anno Accademico 2018-19 a cura di Severino Bussino Laboratorio di Programmazione e Calcolo 6 crediti

Upload: truongkien

Post on 25-Feb-2019

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

UNIVERSITA’

DEGLI STUDI ROMA TRE

DIPARTIMENTO DI FISICA “E. AMALDI”

Anno Accademico 2018-19

a

cura diSeverino Bussino

Laboratorio di Programmazione e Calcolo

6 crediti

Page 2: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

1)

Trattamento dell'informazione

Elementi di Architettura di un Computer

2) Sistemi operativi

0) Struttura del Corso

3) Introduzione alla Programmazione ad oggetti (OO)

Page 3: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

33

Pagina Web del Corso

http://webusers.fis.uniroma3.it/~bussino/Lab_Prog_Calc.html

Alcuni aspetti della Pagina Web devono

ancora essere completati

Page 4: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

4

3) Introduzione alla Programmazione ad oggetti (OO)

Page 5: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

5

1.

ATLAS (LHC al Cern) 1.000.000 canali di lettura

bunch-crossing ogni 25 ns 40 Tbyte/sec 100 Mb/sec

Cluster

di

circa 1000 CPU (PC)

Software specifico per il trigger

di

III livello

Alcuni esempi

Page 6: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

6

2. ARGO-YBJ (Raggi Cosmici –Tibet)

circa 1 Tbyte/mese di dati da memorizzare

dati disponibili per l’analisi

Cluster

di

PC per la gestione dello spazio

disco

Software dedicato per l’accesso ai dati e l’analisi

3. GRID (Calcolo

su

rete

geografica)

Alcuni esempi (segue)

Page 7: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

7

4. Progetto genoma e studi di Biologia molecolare (www.embnet.org)

Alcuni esempi (segue)

Page 8: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

8

Altre applicazioni:

1.

Telefonini cellulari

2.

Bancomat

3.

Reti di

Trasporto (ferrovie, metropolitane, …)

Alcuni esempi (segue)

Page 9: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

9

Quali richieste alle strategie di programmazione? (1)

1.

Robustezza protetto nell’accesso ai dati

2.

Possibilita’

di

ri-utilizzo del codice1.

risorse umane ed economiche

2.

maggiore affidabilita’

Page 10: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

10

Quali richieste alle strategie di programmazione? (2)

3.

Portabilita’1.

sistemi operativi diversi

2.

diverse versioni di uno stesso sistema

A motivo di architetture complesse e di sviluppo nel tempo

4.

Flessibilita'

e

Organizzazione

del

Codice

(Semplicita')gestione

ed evoluzione del codice

Page 11: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

11

1.

IncapsulamentoI dati dell’oggetto sono nascosti ad altri oggetti ed è

possibile accedervi solo attraverso modalita’

ben definite

Robustezza

Flessibilita’

Caratteristiche Fondamentali della Programmazione

ad Oggetti (OO) (1)

1.

Robustezza

2.

Possibilita’

di

ri-utilizzo del codice

3.

Portabilita’

4.

Flessibilita' e Organizzazione del Codice (Semplicita')

Page 12: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

12

2.

Ereditarieta’Gli oggetti complessi possono essere costruiti a partire da oggetti più

semplici. Gli oggetti complessi derivano tutto o parte del loro comportamento dagli oggetti a partire

dai

quali sono stati generati

Ri-utilizzo del codice Organizzazione

del codice

Caratteristiche Fondamentali della Programmazione

ad Oggetti (OO) (2)

Ereditarieta’

piu’

efficiente Flessibilita’

1.

Robustezza

2.

Possibilita’

di

ri-utilizzo del codice

3.

Portabilita’

4.

Flessibilita' e Organizzazione del Codice (Semplicita')

Page 13: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

13

3.

PolimorfismoOggetti simili

possono essere trattati, in alcuni casi, come se fossero dello stesso tipo, senza la necessità

di implementare trattamenti specifici per distinguere tra le varie tipologie

Caratteristiche Fondamentali della Programmazione

ad Oggetti (OO) (3)

Ereditarieta’

piu’

efficiente Flessibilita’

1.

Robustezza

2.

Possibilita’

di

ri-utilizzo del codice

3.

Portabilita’

4.

Flessibilita' e Organizzazione del Codice (Semplicita')

Ereditarieta’

piu’

efficiente Flessibilita’

La Portabilita’ e’ una caratteristica del C++ standard (ANSi-C++)

Page 14: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

14

(Altri) Paradigmi di

Programmazione (1)

1.

Programmazione ProceduraleSi decide quale algoritmo

puo'

risolvere il problema dato

Il linguaggio permette di implementare l'algoritmo scelto

2.

Programmazione ModulareSi decide quali moduli utilizzare.

Si separano i dati in modo da

nasconderli entro ciascun modulo

3. Programmazione definita dall’utenteSi decide quali tipi utilizzare.

Si genera un insieme di operazioni per i vari tipi

Page 15: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

15

4.

Programmazione

Orientata agli Oggetti (Object Oriented Programming)

Si decide quali classi utilizzare.Si genera un insieme di operazioni per le varie classi

Si raggruppano le

proprieta'

comuni tramite il meccanismo

dell'ereditarieta'

5.

Programmazione GenericaSi identificano una serie di algoritmi e si parametrizzanoin

modo che possano

essere

utilizzati

per

piu‘

classi

o

tipi

definiti dall'utente.

(Altri) Paradigmi di Programmazione (2)

Page 16: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

16

Il C++ permette di implementare una Programmazione definita dall'utente con

ereditarieta'

(=

Programmazione Orientata agli Oggetti) e la Programmazione Generica.

N.B.: attenzione al legame tra linguaggio e paradigma di programmazione

(Altri) Paradigmi di Programmazione (3)

Page 17: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

17

1.

Esigenze di una moderna programmazione•

Robustezza

Possibilita’

di

ri-utilizzo del codice•

Portabilita’

Flessibilita'

e

Organizzazione

del

Codice (Semplicita')

In sintesi …

Page 18: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

18

2.

Paradigmi di programmazione•

Programmazione Procedurale

Programmazione Modulare•

Programmazione definita dall’utente

Programmazione

Orientata agli Oggetti (Object Oriented Programming)

Programmazione Generica

3.

Caratteristiche della programmazione ad Oggetti•

Incapsulamento

Ereditarieta’•

Polimorfismo

Page 19: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

19

Incapsulamento Classi

Come si progetta un Programma ?

La scelta degli Oggetti

Le relazioni tra gli oggetti

I casi d’uso (use case)

Le interazioni tra gli oggetti

La responsabilita’ delle classi

1.

Incapsulamento

2.

Ereditarieta’

3.

Polimorfismo

Page 20: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

20

Progettazione

di un Programma (1)

1.

La scelta degli OggettiQuali “Oggetti” entrano nel problema?Quali proprieta’ hanno tali oggetti?

2.

Le relazioni tra gli oggettiQuali sono le relazioni tra gli oggetti?Possono essere raggruppati? Quali proprieta’ sono condivise da oggetti simili?Quali proprieta’ permettono di distinguere oggetti simili

tra loro?

Quali oggetti sono superflui?

Page 21: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

21

Progettazione

di

un

Programma

(2)

3.

I casi d’uso (use case) e

gli scenariIn

quali situazioni

concrete

tali oggetti dovranno essere utilizzati?

Esempio dal BancomatLo scenario come

ulteriore specificazione di

un

caso d’uso

4.

Le

interazioni tra gli oggettiNon e’

sufficiente capire

la

relazione

“geometrica”

tra gli oggetti….

… e’

necessario anche valutare

come

gli oggetti interagiscono “dinamicamente”

tra loro

Page 22: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

22

Progettazione

di un Programma (3)

5.

La responsabilita’ delle classiE’ chiaro di chi e’ la responsabilita’ di un punto chiave del programma?Una classe ha troppe responsabilita’?Una classe e’ irrilevante e puo’ essere

“assorbita” da un’altra?

Una sessione CRC (Classi, Responsabilita’, Collaborazione):

capire come funziona dinamicamente il programma che si vuole realizzare

Page 23: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

1) Trattamento dell'informazione Elementi di Architettura di un Computer

2) Sistemi operativi

0) Struttura del Corso

3) Introduzione alla Programmazione ad oggetti (OO)

4) Simulazione del Sistema Solare

Page 24: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

24

Un esempio guida (1)

Page 25: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

25

Un esempio guida (2)

La Simulazione di

un

Sistema Solare•

Il

problema fisico

Progettazione

del

programma di simulazione

L’interazione tra

le

classi nella simulazione

1.

Incapsulamento

2.

Ereditarieta’

3.

Polimorfismo

Incapsulamento Oggetti

Page 26: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

26

La

Simulazione di

un

Sistema Solare

(1)

1.

Il

problema fisico

amF rr=

rr

mmGF rr

321

12 −=

Page 27: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

27

La

Simulazione di

un

Sistema Solare

(2)

2.

Progettazione

del

programma di simulazione

Gli oggetti:

corpi celesti,

sonde,

pianeti,stelle,

satelliti,…..

Le relazioni tra gli oggetti:un pianeta

e’ un

corpo celeste

una sonda

e’ un satellite…… ed e’

anche

un

corpo celeste

Altri oggetti

mancano nella lista precedente?Sistema Solare?

… e un

Sistema Solare

ha

dei Corpi Celesti!

Page 28: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

28

La

Simulazione di

un

Sistema Solare

(3)

3.

L’interazione tra

le

classi nella simulazioneQuali compiti

ha ciascun

oggetto?

Quando il

sistema

evolve, chi determina

le

nuove coordinate di ciascun corpo celeste?

Chi ha la responsabilita’ di far evolvere il sistema?

Page 29: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

29

La

Simulazione di

un

Sistema Solare

(4)

Possibile scelta:•

Oggetti

CorpoCelesteSistemaSolare Sonda

Responsabilita’ degli OggettiCorpoCeleste

ha la responsabilita’ di calcolare la sua posizione durante

l’evoluzione del sistema

SistemaSolare

ha la responsabilita’ di far evolvere il sistema e di determinare il nuovo stato del sistema dopo un intervallo

di

tempo T

SistemaSolare

si occupera’ di chiedere a ciascun pianeta di calcolare la sua

nuova

posizione

dopo

un intervallo

di

tempo DT.

Page 30: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

30

Le Classi nella Programmazione

ad Oggetti1.

Incapsulamento

2.

Ereditarieta’

3.

Polimorfismo

Incapsulamento Oggetti

Oggetti Classi

Prossima lezione

Classi

in OO Come

scrivere una classe

in C++

Page 31: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

31

Caratteristiche di una Classe

(1)

1.

Attributi•

public

• private•

protected

2.

Metodi• public•

private

protected

Page 32: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

32

Caratteristiche di una Classe

(2)

3.

Accesso agli attributi di una classe (tipo

Set

e tipo Get)

Nome

Classe

Attributi

Metodi

Set Get

Incapsulamento

Page 33: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

33

Esempio: la Classe

CorpoCeleste

CorpoCeleste

Nome (stringa)m

(num. reale)x

(num. reale)y

(num. reale)vx (num. reale)vy (num. reale)

CalcolaPosizione(forza,

dt)StampaVelocita’()StampaPosizione()M()X() Y()Vx()

Vy()

Page 34: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

34

Esempio: la Classe

SistemaSolare

SistemaSolare

Pianeti (lista dei pianeti)N

(num. reale)

aggiungiPianeta(…)evolvi(…)nPianeti()

Page 35: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

35

Struttura

UML del

Programma di Simulazione

Page 36: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

36

Interaction Diagram del Programma di Simulazione

Page 37: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

37

Esercitazioni di Laboratorio

Le Esercitazioni inizieranno

il 9 ottobre per il gr. A e il 10 ottobre per il gr. B

Laboratorio di Calcolo(Laboratori Didattici)

Via della Vasca Navale, 84

Page 38: Laboratorio di Calcolo I: Introduzionewebusers.fis.uniroma3.it/~bussino/Lez_Prog_Calc/lez_02.pdf · Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2 15. 4. Programmazione

Laboratorio di Programmazione e Calcolo - AA 2018-19 lezione 2

38