La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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.

Presentazioni simili


Presentazione sul tema: "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."— Transcript della presentazione:

1 eliana minicozzi linguaggi lezione1 1

2 2

3 3 Linguaggi di programmazione 1 corso di Laurea in Informatica Facoltà di Scienze M.F.N. Università Federico II aa

4 eliana minicozzi linguaggi 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 , 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.

5 eliana minicozzi linguaggi 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.

6 eliana minicozzi linguaggi 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.

7 eliana minicozzi linguaggi lezione1 7 Chi sono come trovarmi Mi chiamo Eliana Minicozzi. Il mio studio è 2M14 nel dipartimento di fisica. Il telefono è 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.

8 eliana minicozzi linguaggi lezione1 8 Programma di L1 aa 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.

9 eliana minicozzi linguaggi 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.

10 eliana minicozzi linguaggi lezione1 10 Obiettivi del corso a lungo termine Migliorare labilità 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..

11 eliana minicozzi linguaggi lezione1 11 Come si svolgeranno gli esami _ _ Lesame 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 dellesame 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.

12 eliana minicozzi linguaggi 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

13 eliana minicozzi linguaggi 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: è lespressione codificata di un processo.

14 eliana minicozzi linguaggi 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.

15 eliana minicozzi linguaggi 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 Lesecuzione è 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.

16 eliana minicozzi linguaggi 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…….

17 eliana minicozzi linguaggi lezione1 17 Breve storia dei concetti principali introdotti dai progenitori delloggi 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

18 eliana minicozzi linguaggi lezione1 18 storia dei concetti principali introdotti dai progenitori delloggi 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…

19 eliana minicozzi linguaggi 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.

20 eliana minicozzi linguaggi lezione1 20 Meccanismi di traduzione Interpreti: traducono ed eseguono un costrutto alla volta. PRO: debug È adeguato alla fase di sviluppo. Compilatori: prima traducono lintero programma; poi la traduzione può essere eseguita,anche più volte. PRO: velocità di esecuzione finale Adeguato alla fase di rilascio.

21 eliana minicozzi linguaggi lezione1 21 Nomenclatura Input Tempo di compilazione Tempo di esecuzione Compilatore Macchina Sorgente Oggetto Output

22 eliana minicozzi linguaggi lezione1 22 Processo di compilazione

23 eliana minicozzi linguaggi 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 avvenire In una macchina diversa in cui può Avvenire un processo di compilazione o di interpretazione

24 eliana minicozzi linguaggi 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 )

25 eliana minicozzi linguaggi 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à dellambiente di programmazione

26 eliana minicozzi linguaggi lezione1 26 Paradigma Imperativo RICORDIAMO CHE DEL PARADIGMA IMPERATIVO FARO QUELLE PARTI CHE RITENGO UN IMPORTANTE PREISTORIA CONCETTUALE PER IL PARADIGMA AD OGGETTI

27 eliana minicozzi linguaggi 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).

28 eliana minicozzi linguaggi lezione1 28 Manipolazione della memoria nel paradigna imperativo: Statement di assegnazione Definizione grammaticale :: = rappresenta l'indirizzo del risultato mentre in vi è specificata la computazione e gli indirizzi dove sono memorizzati i valori necessari all'esecuzione di.

29 eliana minicozzi linguaggi lezione1 29 La semantica dell'assegnazione dice anche che il valore di va memorizzato nell'indirizzo rappresentato da. Il valore di dipenderà dai valori contenuti negli indirizzi degli argomenti di rappresentati dai nomi di questi:

30 eliana minicozzi linguaggi lezione1 30 Esempio assegnazione Esempio in Pascal a:=b+c expression Nome che sta per L indirizzo del risultato Nomi che stanno per gli indirizzi degli argomenti del +

31 eliana minicozzi linguaggi 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.

32 eliana minicozzi linguaggi lezione1 32 Quindi il paradigma imperativo si caratterizza per luso dei nomi come astrazione di indirizzi di locazioni di memoria.

33 eliana minicozzi linguaggi 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.

34 eliana minicozzi linguaggi lezione1 34 dataObject immagine legami

35 eliana minicozzi linguaggi 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 lesecuzione (run time). Possiamo notare che: il location binding avviene durante il caricamento in memoria; il name binding avviene durante la compilazione, nellistante in cui il compilatore incontra una dichiarazione; il type binding avviene durante la compilazione, nellistante 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.

36 eliana minicozzi linguaggi lezione1 36 Considerazioni sul legame di tipo ed esempi

37 eliana minicozzi linguaggi 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 lesecuzione, il dato assume anche il tipo del nuovo valore.

38 eliana minicozzi linguaggi 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 lesecuzione, c)per nulla.

39 eliana minicozzi linguaggi lezione1 39 Domanda Se un linguaggio realizza il dynamic binding per il tipo quale controllo di consistenza è più adeguato?

40 eliana minicozzi linguaggi 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 lesecuzione (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 lesecuzione. Un linguaggio è staticamente tipizzato se il legame avviene durante la compilazione; in questo caso il controllo di consistenza può avvenire in entrambe le fasi.

41 eliana minicozzi linguaggi lezione1 41 Esempi

42 eliana minicozzi linguaggi lezione1 42 Dataobject A:integer

43 eliana minicozzi linguaggi lezione1 43 Dataobject

44 eliana minicozzi linguaggi lezione1 44 Dataobject c

45 eliana minicozzi linguaggi 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).

46 eliana minicozzi linguaggi lezione1 46 Tipo Puntatore

47 eliana minicozzi linguaggi 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è laritmetica del puntatore) in Java non è definito il tipo puntatore.

48 eliana minicozzi linguaggi 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

49 eliana minicozzi linguaggi 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 dellambito di validità dei legami. * Fra queste ragioni: Nelle strutture condizionali, nelle unità di compilazioni, i blocchi sono compilati separatamente e poi uniti per lesecuzione: sono un utile mezzo nel processo di sviluppo di un programma (funzioni, procedure e riutilizzabilità) per permettere lastrazione procedurale.

50 eliana minicozzi linguaggi 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.

51 eliana minicozzi linguaggi 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.

52 eliana minicozzi linguaggi 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;

53 eliana minicozzi linguaggi 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à

54 eliana minicozzi linguaggi 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.

55 eliana minicozzi linguaggi 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;

56 eliana minicozzi linguaggi 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 alloggetto 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..

57 eliana minicozzi linguaggi 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 con La regola del Lexical scoping.

58 eliana minicozzi linguaggi 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 della Memoria è statica, cambia se l allocazione È dinamica. Notare che qui non stiamo parlando di Statico e dinamico nel senso precedente. Avere allocazione Statica o dinamica della memoria è una proprietà dei linguaggi

59 eliana minicozzi linguaggi lezione1 59 Allocazione statica della memoria Un oggetto dato è legato alla sua locazione al tempo di caricamento (load-time) e questo legame dura per lintera 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.

60 eliana minicozzi linguaggi 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).

61 eliana minicozzi linguaggi lezione1 61 Allocazione Dinamica della memoria Si dice allocazione dinamica di memoria (run- time) quando il legame di locazione, è creato allinizio dellesecuzione di un blocco e viene rilasciato a fine esecuzione. Il record di attivazione associato ad un blocco può maneggiare anche questo problema.

62 eliana minicozzi linguaggi lezione1 62 Record di attivazione In generale il record di attivazione serve a contenere tutta linformazione circa una unità di esecuzione che è necessaria per rendere nuovamente attiva una sua esecuzione che è stata sospesa. In questo momento noi ci focalizzeremo solo sullinformazione relativa ai legami dei nomi con le locazioni.

63 eliana minicozzi linguaggi 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 lentrare e luscire 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

64 eliana minicozzi linguaggi 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 BBLOCCO "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

65 eliana minicozzi linguaggi lezione1 65 Stack di attivazione

66 eliana minicozzi linguaggi lezione1 66 Stack di attivazione

67 eliana minicozzi linguaggi lezione1 67 Stack di attivazione

68 eliana minicozzi linguaggi lezione1 68 Stack di attivazione

69 eliana minicozzi linguaggi lezione1 69 Guardare figure pag 41 Appunti-1.doc

70 eliana minicozzi linguaggi lezione1 70 Bibliografia


Scaricare ppt "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."

Presentazioni simili


Annunci Google