eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 linguaggi di programmazione 1 corso di laurea in...

70
eliana minicozzi linguaggi1 0 5-06 lezione1 1

Upload: giuliano-paoletti

Post on 01-May-2015

231 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

1

Page 2: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

2

Page 3: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

3

Linguaggi di programmazione 1corso di Laurea in InformaticaFacoltà di Scienze M.F.N.Università Federico IIaa. 2005-2006

Page 4: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

4

Note per gli studenti sulle slides Parte di questi appunti sono una personalizzazioni

degli appunti scritti dal prof. Marcello Sette lo scorso anno in cui ero in sabatico, parte è presa dai miei appunti sul corso del 2003-2004, Parte è presa da corsi della sun e tutto risente dei libri citati in bibliografia.

.Programma e contenuto del corso sono concertati insieme quindi,a parte personalizzazioni di stile, non ci sono differenze fra i due corsi ne sui compiti che farete ne sugli obiettivi che ci proponiamo.

Page 5: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

5

bibliografia

• Libri di testo: a. Dershem - Jipping. Programming

languages: structures and models. b. Wampler. The essence on object oriented

programming with Java and UML. c. Fowler. UML distilled. d. Eckel. Thinking in Java.

Page 6: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

6

Note per gli studenti sul corso Sarete seguiti anche da altri due docenti: Il

dott. Luca Lazzaro e la dott.ssa Silvia Rossi. Tutti e quattro abbiamo discusso e concertato

contenuti e obbiettivi in modo che i corsi non risentissero, a parte questioni caratteriali, dei professori.

Page 7: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

7

Chi sono come trovarmi

Mi chiamo Eliana Minicozzi. Il mio studio è 2M14 nel dipartimento di fisica. Il telefono è 081 676814. Gli orari di ricevimento sono: mercoledì dalle

12 alle 14 nel mio studio , dalle 16 alle 16 e 30 e Venerdì dalle13 alle 14, nell’ aula dove si farà lezione.

Page 8: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

8

Programma di L1 aa. 05-06

• Parte prima (concetti generali) – 8 lezioni 1. Paradigmi dei linguaggi di programmazione. 2. Il modello imperativo. 3. Il modello ad oggetti. 4. Progettazione orientata ad oggetti e UML. 5. Prima prova scritta intercorso. • Parte seconda (Java) – 16 lezioni 1. Studio dei costrutti fondamentali: identificatori, parole chiavi, tipi; espressioni e controllo di flusso; ereditarietà; overloading e overriding;classi

astratte , polimorfismo, arrays 2. Seconda prova scritta intercorso. 3. Studio dei costrutti più avanzati: qualificatori di classi, metodi, attributi; ; interfacce; classi interne; gestione degli errori: eccezioni; programmi text-based; (threads; networking: molto improbabile). 4. Prova scritta finale.

Page 9: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

9

Obbiettivi del corso

Capacità di riflessione sulle differenze tra i vari paradigmi di programmazione in particolare dei paradigmi imperativo e ad oggetti e sul loro essere modi di pensare i problemi.

• Capacità media di progettare ad oggetti. • Capacità media di programmare in Java.

Page 10: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

10

Obiettivi del corso a lungo termine

Migliorare l’abilità nel risolvere i problemi. Imparare a usare meglio i linguaggi di

programmazione. Imparare a scegliere più intelligentemente, in

dipendenza del problema, il linguaggio di programmazione.

Aumentare la capacità di imparare linguaggi di programmazione.

.

Page 11: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

11

Come si svolgeranno gli esami _ _

L’esame consisterà in :una prova scritta, strutturata, a discrezione della commissione, in forma di test

chiusi a risposta multipla o in forma di test a risposta aperta o in forma mista; una prova orale, consistente prevalentemente nella discussione della prova

scritta e in eventuali integrazioni a discrezione delle commissione; gli studenti che alla prova scritta avranno riportato valutazioni insufficienti saranno sconsigliati dal sostenere la prova orale.

Sono previste due prove scritte intermedie, con la stessa strutturazione dell’esame finale, il cui superamento consentirà di optare, in tutti e soli gli appelli del corrente anno accademico, per sostenere un esame scritto ridotto, riguardante la sola parte finale del programma. In questo caso la valutazione finale terrà conto delle valutazioni delle prove intermedie.

Page 12: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

12

Sommario Terminologia Breve storia Paradigmi Macchina astratta Meccanismi di traduzione Processo di compilazione Caratteristiche dei linguaggi Criteri di scelta di linguaggi Modello imperativo Legami e data object Modifiche di un legame

Tipi Esempio: il puntatore Ambito di validità dei legami Legame di nome Ereditarietà dei legami Ereditarietà statica Legame di locazione Esempio di allocazione

dinamica Bibliografia esempi

Page 13: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

13

Terminologia

Linguaggio di programmazione: un linguaggio che è usato per esprimere (mediante un programma) un processo con il quale un processore può risolvere un problema.

• Processore: è la macchina che eseguirà il processo descritto dal programma;

non si deve intendere come un singolo oggetto, ma come un’ architettura di elaborazione.

Programma: è l’espressione codificata di un processo.

Page 14: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

14

Correlare paradigmi a linguaggi Uno specifico linguaggio di programmazione

implementa un modo di pensare il processo di computazione (paradigma di computazione)’.

Un paradigma di computazione definisce strutture e fattori che accomunano linguaggi di programmazione apparentemente diversi e che differiscono sostanzialmente dai linguaggi che appartengono ad altri paradigmi.

Page 15: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

15

Paradigmi in pillole

• Imperativo: Esecuzione sequenziale che essenzialmente realizza, tramite lo statement di assegnazione, modifiche della memoria: Si pensa il programma come sequenza di comandi.

• Logico:il Programma è una teoria logica L’esecuzione è la prova nella teoria-programma del teorema il cui enunciato è il problema.

Funzionale: Programma e ogni sua componente sono funzioni.”I dati” sono gli argomenti su cui si valutano le funzioni Le funzioni corrispondono alla definizione del problema. L’ esecuzione è appunto una valutazione di funzioni.

Orientato ad oggetti: Il programma è un insieme di classi ognuna della quali definisce il tipo (cioè operazioni e dominio dei valori possibili per lo “stato” degli oggetti sue istanze. L’ esecuzione è uno scambio di messaggi fra oggetti a cui corrisponde un esecuzione di “operazioni” da parte degli oggetti riceventi e possibilmente un cambiamento del loro stato stato

Parallelo: Programmi che descrivono entità distribuite che sono eseguite contemporaneamente ed in modo asincrono.

Page 16: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

16

Breve storia

1954 FORTRAN (FORmula TRANslation) LISP (LISt Processing) 1960 COBOL (Common Business Oriented Language) ALGOL 60 (Algorithmic Oriented Language) PL/1 (Programming Language 1) Simula 67 ALGOL 68 PASCAL APL BASIC 1970/80 PROLOG SMALLTALK C MODULA/2 ADA Etc…….

Page 17: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

17

Breve storia dei concetti principali introdotti dai progenitori dell’oggi Fortran: nato per manipolazione algebrica,introduce :variabili,

statment di assegnazione,concetto di tipo , subroutine,iterazione e statment condizionali,go to, formati di input e output.

Cobol: indipendenza dalla macchina,e statment “English like”Algol60: indipendenza dalla macchina e definizione mediante

grammatica(bakus-naur form),strutture a blocco e ricorsione.

Lisp: primo vero linguaggio di manipolazione simbolica,paradigma funzionale, non c’è lo statment di assegnazione,si introduce la struttura: linked –list, sia i programmi che i dati sono linked-lists

Page 18: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

18

storia dei concetti principali introdotti dai progenitori dell’oggi Simula 67: classe come incapsulamento di dati e

procedure, istanze delle classi( oggetti):anticipatorio del concetto di dato astratto implementati in Ada e Modula2, e dl concetto di classe di Smalltalk e C++.

PL/1: abilità ad eseguire procedure specificate quando si verifica una condizione eccezionale;”mutitasking”,cioè specificazione di tasks che possono essere eseguiti in concorrenza.

Pascal: programmazione strutturata, tipi di dato definiti da utente,ricchezza di strutture dati…

Page 19: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

19

Macchina astratta

Si intende quella architettura di elaborazione il cui linguaggio di programmazione:

ha la stessa potenza del linguaggio F della macchina fisica;

è costituito da un sottoinsieme minimale di costrutti di F.

a) Essa è la rappresentazione comune a più macchine fisiche.

b). I suoi programmi sono in genere più “prolissi” degli equivalenti di ogni macchina fisica rappresentata.

Page 20: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

20

Meccanismi di traduzione

• Interpreti: traducono ed eseguono un costrutto alla volta. PRO: debug

È adeguato alla fase di sviluppo. Compilatori: prima traducono l’intero

programma; poi la traduzione

può essere eseguita ,anche più volte. PRO: velocità di esecuzione finale

Adeguato alla fase di rilascio.

Page 21: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

21

Nomenclatura

Input Tempo di compilazione Tempo di esecuzione Compilatore Macchina Sorgente Oggetto Output

Page 22: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

22

Processo di compilazione

Page 23: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

23

Analisi sintattica

Analisi lessicale

Analisi semantica

Generazione codice

Programma sorgente

Programma oggetto

Programma astratto

Parse tree

Stringa di token

Queste due fasi possono avvenireIn una macchina diversa in cui puòAvvenire un processo di compilazione o di interpretazione

Page 24: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

24

Caratteristiche dei linguaggi

• Semplicità – (concisione) VS (leggibilità) − Semantica: minimo numero di concetti e strutture. − Sintattica: unica rappresentabilità di ogni concetto. Astrazione – (rappresentare solo attributi essenziali) − Dati: nascondere i dettagli di oggetti. − Procedure: facilitare la modularità del progetto. • Espressività – (cosa si può di rappresentare ) VS (semplicità) • Ortogonalità – (meno eccezioni alle regole del linguaggio) • Portabilità (grado di indipendenza dalla particolare macchina fisica )

Page 25: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

25

Criteri di scelta di linguaggi

• Disponibilità dei traduttori • Conoscenza del programmatore • Esistenza di standard di portabilità • Sintassi aderente al problema • Semantica aderente alla architettura fisica • Comodità dell’ambiente di programmazione

Page 26: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

26

Paradigma Imperativo

RICORDIAMO CHE DEL PARADIGMA IMPERATIVO FARO’ QUELLE PARTI CHE RITENGO UN’ IMPORTANTE PREISTORIA CONCETTUALE PER IL PARADIGMA AD OGGETTI

Page 27: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

27

Programma nel paradigma (modello) imperativo Il paradigma imperativo sottolinea la componente

calcolatore visto come singola CPU (programma come "sequenza di comandi") + memoria (programma come modificazione, manipolazione di dati nella memoria).

I programmi scritti nei linguaggi appartenenti a questo modello consistono di sequenze di descrizioni di modifiche della "memoria" del calcolatore.

Nella esecuzione del programma la sequenzialità seguita è decisa dalle cosiddette strutture di controllo (Es. Condizionali).

Page 28: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

28

Manipolazione della memoria nel paradigna imperativo:Statement di assegnazione

Definizione grammaticale < statement-di-assegnazione> :: = <name> <assignment-operator> <expression><name> rappresenta l'indirizzo del risultato mentre in

<expression> vi è specificata la computazione e gli indirizzi dove sono memorizzati i valori necessari all'esecuzione di <expression>.

Page 29: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

29

La semantica dell'assegnazione dice anche che il valore di <expression> va memorizzato nell'indirizzo rappresentato da <name>.

Il valore di <expression> dipenderà dai valori contenuti negli indirizzi degli argomenti di <expression> rappresentati dai nomi di questi:

Page 30: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

30

Esempio assegnazione

Esempio in Pascal

a:=b+c “expression”

Nome che sta perL’ indirizzo del risultato

Nomi che stanno per gli indirizzi degli argomenti del +

Page 31: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

31

Relazioni linguaggio macchina Lo statement di assegnazione, a parte l'astrazione

che sostituisce agli indirizzi i nomi, ricalca la tipica unità di esecuzione in un linguaggio macchina:

1. ottenere indirizzi delle locazioni di operandi e risultato;

2. ottenere dati di operandi da locazioni di operandi; 3. valutare risultato; 4. memorizzare risultato in locazione risultato.

Page 32: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

32

Quindi il paradigma imperativo si caratterizza per l’uso dei nomi come astrazione di indirizzi di locazioni di memoria.

Page 33: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

33

Legami e data object

Il data object è l’ astrazione mediante la quale noi esploreremo vari concetti del paradigma imperativo.

- Un data object è la quadrupla (L,N, V, T), ove: − L: locazione. − N: nome. − V : valore. − T: tipo. • Un legame è la determinazione di una delle

componenti.

Page 34: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

34

dataObject immagine

legami

Page 35: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

35

Modifiche di un legame

Variazioni di legami possono avvenire: 1. Durante la compilazione (compile time). 2. Durante il caricamento in memoria (load time). 3. Durante l’esecuzione (run time). Possiamo notare che: il location binding avviene durante il caricamento in memoria; il name binding avviene durante la compilazione, nell’istante in cui il

compilatore incontra una dichiarazione; • il type binding avviene durante la compilazione, nell’istante in cui il

compilatore incontra una dichiarazione di tipo; un tipo è definito dal sottospazio dei valori che un data object può assumere e dai relativi operatori.

Page 36: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

36

Considerazioni sul legame di tipo ed esempi

Page 37: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

37

Legame di tipo

• Legame solitamente instaurato e fisso durante la compilazione (esempi con “data object:A,B,C), tranne per linguaggi che realizzano dynamic binding. In essi il legame di tipo dipende dal valore del dato: se il valore muta durante l’esecuzione, il dato assume anche il tipo del nuovo valore.

Page 38: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

38

Type checking (controllo di consistenza)Type checking `e il meccanismo di controllo di

consistenza della coppia valore-tipo.

Può avvenire: a) durante la compilazione, b) durante

l’esecuzione, c)per nulla.

Page 39: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

39

Domanda

Se un linguaggio realizza il “dynamic binding per il tipo” quale controllo di consistenza è più adeguato?

Page 40: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

40

Nomenclatura linguaggi a seconda del type checking Un linguaggio si dice fortemente tipizzato se il

controllo di tipo avviene il più possibile durante la compilazione e, negli altri casi, durante l’esecuzione (PASCAL è quasi fortemente tipizzato – si vedano i record con varianti).

Un linguaggio è dinamicamente tipizzato se il legame e di conseguenza anche il controllo di consistenza avvengono durante l’esecuzione.

− Un linguaggio è staticamente tipizzato se il legame avviene durante la compilazione; in questo caso il controllo di consistenza può avvenire in entrambe le fasi.

Page 41: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

41

Esempi

Page 42: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

42

Dataobject A:integer

Page 43: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

43

Dataobject

Page 44: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

44

Dataobject c

Page 45: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

45

Esempio di un tipo particolare: il puntatore

Osservazioni: 2 data object coinvolti:Il secondo può non avere un

legame di nome o di valore. La deallocazione è necessaria, perchè la modifica

del legame di valore del puntatore genera di solito dati non più accessibili per nome o riferimento.

Alcuni linguaggi possiedono meccanismi di recupero automatico di memoria (garbage collector).

Page 46: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

46

Tipo Puntatore

Page 47: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

47

Tipo puntatore

Memorizzate per quando faremo il linguaggio Java che il “tipo puntatore è caratterizzato non solo dai valori : indirizzi di memoria, ma anche dalle operazioni che potete fare sui “dataobject” puntatori.

Poiché in Java non sono definite queste operazioni (in slang : non c’è l’aritmetica del puntatore) in Java non è definito il tipo puntatore.

Page 48: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

48

Programma dal punto di vista dell’ esecuzione Nel paradigma imperativo: il programma è

una “unità di esecuzione”, la più estesa. Frequentemente un programma è articolato

in unità più piccole dette blocchi. La più piccola unità di esecuzione indivisibile

è lo statement . L’ assegnazione è lo statement mediante il

quale si modifica la memoria

Page 49: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

49

Cos’è un blocco

Un blocco è sempre una collezione di unità di esecuzione raggruppati per svariate ragioni* fra cui,quella di cui ci occuperemo, è la definizione dell’ambito di validità dei legami.

* Fra queste ragioni: Nelle strutture condizionali, nelle unità di compilazioni, i blocchi sono compilati separatamente e poi uniti per l’esecuzione: sono un utile mezzo nel processo di sviluppo di un programma (funzioni, procedure e riutilizzabilità) per permettere l’astrazione procedurale.

Page 50: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

50

Riassumendo

Istruzioni raggruppate in blocchi per meglio definire:

• ambito delle strutture di controllo; • ambito di una procedura; • unità di compilazione separata; • ambito dei legami.

Page 51: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

51

Blocchi dal punto di vista dell’ ambito di validità del legame di nome

sono in genere formati da due parti: Una sezione nella quale possono essere

dichiarati i legami di nome che valgono dentro il blocco, legami detti locali.

Una sezione eseguibile nel quale il legame vale.

Page 52: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

52

Definiamo un piccolo pseudo-linguaggio per rappresentare un blocco:

BLOCK A;“eventuali dichiarazioni di nomi:nome1, nome2…”; BEGIN A “unità di esecuzione” ……… …. {nome1 da A,….} END A;

Page 53: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

53

Legami ereditati o non locali

Dentro un blocco valgono anche binding ereditati da altri blocchi .

quali sono i blocchi da cui si eredita varia da linguaggio a linguaggio.

Alcuni linguaggi richiedono una dichiarazione esplicita e separata dalle dichiarazioni dei legami locali, altri invece seguono implicitamente politiche per la determinazione dell’ ereditarietà

Page 54: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

54

Politiche per ereditare

Ambito di validità detto statico o lessicale: un blocco eredita dai blocchi che lo contengono .

Ambito di validità dinamico (ha senso per le procedure) ne parleremo in seguito.

Page 55: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

55

Esempio eredità statica Esempio 1: Program P; DECLARE X; BEGIN P …… {X from P} BLOCK A; DECLARE Y; BEGIN A …… {X from P, Y from A} BLOCK B; DECLARE Z; BEGIN B …… {X from P, Y from A, Z from B} END B; …… {X from P, Y from A}

END A; …… {X from P} BLOCK C; DECLARE Z; BEGIN C ……. {X from P, Z from C} END C; END P;

Page 56: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

56

Ambito statico o lessicale

Per determinare l’ ambito di validità in modo statico o lessicale si applica la seguente regola definita ricorsivamente:

Se un nome, usato in un bloccoX, è dichiarato nel blocco X, esso è legato all’oggetto specificato nella dichiarazione del nome.

Se un nome non ha dichiarazioni dentro il blocco X , quel nome è legato allo stesso oggetto al quale è legato nel blocco immediatamente contenente X.

.

Page 57: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

57

Esempio detto “hole in the scope”

Esempio 2: Program P; DELARE X, Y; BEGIN P …… {X from P, Y form P} …… BLOCK A; DECLARE X, Z; BEGIN A …… {X from A, Y from P, Z from A} END A; …… {X from P, Y from P} END P

L’ X definito in P dovrebbe essere visibile Nel blocco A ,ma poiché è dichiarato in A un X Quest’ ultimo maschera il primo, consistentemente conLa regola del Lexical scoping.

Page 58: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

58

AMBITO DI VALIDITÀ DEL LEGAME ALLA LOCAZIONE

program P; DECLARE I; BEGINE P; FOR I := 1 TO 10 DO BLOCK A; {I from P} DECLARE J; BEGIN A IF I := 1 then {I from P, J from A} J := 1; ELSE J := J * I; END IF END A; END P;

Cosa succede di J quando si esce e poi si rientra nel bloccoA? Non cambia se l’ allocazione dellaMemoria è statica, cambia se l’ allocazione È dinamica . Notare che qui non stiamo parlando diStatico e dinamico nel senso precedente. Avere allocazione Statica o dinamica della memoria è una proprietà dei linguaggi

Page 59: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

59

Allocazione statica della memoria

Un oggetto ‘dato’ è legato alla sua locazione al tempo di caricamento (load-time) e questo legame dura per l’intera esecuzione del programma: quindi J dell’ esempio precedente può mantenere il suo valore quando si rientra in A semplicemente perché le dichiarazioni non vengono riprocessate e il legame ai nomi viene fatto a compile time e al valore (inizializzazione) a load time.

Page 60: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

60

Allocazione statica di memoria

Quando serve che le variabili conservino il loro valore ogni volta che si rientra in un blocco si richiede l’ allocazione statica di memoria (compile-time).

Page 61: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

61

Allocazione Dinamica della memoria

Si dice allocazione dinamica di memoria (run-time) quando il legame di locazione,

è creato all’inizio dell’esecuzione di un blocco e viene rilasciato a fine esecuzione.

Il record di attivazione associato ad un blocco può maneggiare anche questo problema .

Page 62: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

62

Record di attivazione

In generale il record di attivazione serve a contenere tutta l’informazione circa una unità di esecuzione che è necessaria per rendere nuovamente attiva una sua esecuzione che è stata sospesa.

In questo momento noi ci focalizzeremo solo sull’informazione relativa ai legami dei nomi con le locazioni .

Page 63: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

63

Record di attivazione e allocazione dinamica di memoria Le informazioni che devono essere presenti nel record di

attivazione, relativo ad un blocco generico Y, sono: le locazioni per i dati locali al blocco, un puntatore al record di

attivazione del blocco contenente Y (immediatamente contenente Y).

Inoltre, per gestire correttamente l’entrare e l’uscire da un blocco, è necessario uno stack tale che:

quando a run-time, si entra in un blocco Y , il record di attivazione di Y viene messo nel ‘top’ dello stack, quando si esce da Y, Y è tolto dal ‘top’ dello stack

Page 64: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

64

Esempio gestione alloc.dinamica

Program P; DECLARE I, J; {I from P, J from P} BEGINE P BLOCK A; DECLARE I, K; {I from A, J from P, K from A} BEGIN A BLOCK B; DECLARE I, L: Integer; BEGIN B BLOCCO "B" {I from B, J from P, K from A, L from B B} …… END B; …… END A; BLOCK C; DECLARE I, N; {I from C, N from C} BEGINE C …… END C; END

Page 65: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

65

Stack di attivazione

Page 66: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

66

Stack di attivazione

Page 67: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

67

Stack di attivazione

Page 68: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

68

Stack di attivazione

Page 69: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

69

Guardare figure pag 41

Appunti-1.doc

Page 70: Eliana minicozzi linguaggi1 05-06 lezione1 1. 2 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico

eliana minicozzi linguaggi1 05-06 lezione1

70

Bibliografia