Nomi e Ambiente. Nicola Fanizzi. Linguaggi di Programmazione [010194] 20 apr, Dipartimento di Informatica Università degli Studi di Bari
|
|
- Paola Lupi
- 7 anni fa
- Visualizzazioni
Transcript
1 Nomi e Ambiente Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 20 apr, 2016
2 Sommario 1 Nomi Definizione Astrazione Elementare Progettazione dei nomi Binding 2 Ambiente Introduzione Blocco Operazioni 3 Scope Regole di scope Scope statico Scope dinamico 4 Esercizi Nomi e Ambiente 20 apr, / 58
3 Agenda 1 Nomi Definizione Astrazione Elementare Progettazione dei nomi Binding 2 Ambiente 3 Scope 4 Esercizi Nomi e Ambiente 20 apr, / 58
4 Nomi Nome: sequenza di caratteri usata per denotare una componente del programma oggetti (in senso generale) identificatori: token alfanumerici simboli di operatori (primitivi): +, -,... Esempi var area: real; float area; dichiarazioni di nomi di variabili (PASCAL, C) calcolaarea(b,h: real): real; float calcolaarea(float b, float h); dichiarazioni nomi di funzione (PASCAL, C) Nomi e Ambiente 20 apr, / 58
5 Nomi [... cont.] Osservazione nome oggetto denotato stesso oggetto con molti nomi stesso nome per più oggetti è possibile riutilizzare gli stessi nomi in parti diverse del programma per componenti diverse gli alias Nomi e Ambiente 20 apr, / 58
6 Astrazione Elementare Astrazione sui dati es. usare il nome di una variabile permette di astrarre dalla locazione di memoria, indirizzo, ecc. area := (b * h) / 2 ambiente: implementazione del meccanismo che determina l associazione nome locazione Astrazione sul controllo un nome associato ad un insieme di comandi regole per determinare visibilità e utilizzo del sottoprogramma (interfaccia) Nomi e Ambiente 20 apr, / 58
7 Oggetti denotabili Oggetto denotabile con un nome definito dall utente variabili, parametri formali, sottoprogrammi, tipi, etichette, moduli, costanti, eccezioni,... definito dal linguaggio tipi primitivi, operazioni primitive, costanti predefinite, parole riservate,... Nomi e Ambiente 20 apr, / 58
8 Progettazione dei nomi domande tipiche: Lunghezza massima? Sono permessi caratteri di connessione (es. "_")? Differenza maiuscole/minuscole (case-sensitivity)? Le parole speciali sono considerate parole riservate o parole-chiave?. Nomi e Ambiente 20 apr, / 58
9 Progettazione dei nomi [... cont.] Lunghezza dei nomi Se la lunghezza massima consentita è troppo corta, i nomi difficilmente possono essere significativi (ossia possono suggerire un significato) Esempi in vari linguaggi FORTRAN I: max 6 COBOL: max 30 FORTRAN 90 e ANSI C: max 31 ADA e JAVA: nessun limite, e tutti sono significativi C++: nessun limite dai progettisti, ma gli implementatori possono imporre un limite Nomi e Ambiente 20 apr, / 58
10 Progettazione dei nomi [... cont.] Connettori Esempi in vari linguaggi PASCAL, MODULA-2, e FORTRAN 77 non li permettono Altri lo fanno (quali?) Case sensitivity Svantaggio per la leggibilità: nomi che appaiono simili sono diversi Peggio ancora in C++ e JAVA poiché i nomi predefiniti mescolano maiuscole o minuscole (es. IndexOutOfBoundsException) In C, C++ e JAVA i nomi sono case-sensitive Non succede in altri linguaggi Nomi e Ambiente 20 apr, / 58
11 Progettazione dei nomi [... cont.] Parole speciali Aiuto alla leggibilità Usate per delimitare o separare l espressione delle istruzioni Una parola chiave è una parola che è speciale solo in certi contesti, es., in FORTRAN Real VarName Real è un tipo di dato seguito da un nome pertanto si tratta dell uso come parola chiave Real = 3.4 Real è una variabile in questo caso Una parola riservata è una parola speciale che non può essere usata per un nome definito dall utente Nomi e Ambiente 20 apr, / 58
12 Binding Un binding 1 è un associazione, come quella tra un attributo ed un entità o tra un operazione ed un simbolo (operatore) binding-time: momento in cui avviene il binding 1 IPA: / baindin/ Nomi e Ambiente 20 apr, / 58
13 Binding-time Language design time: progettazione del linguaggio collega i nomi primitivi (costanti ed operatori) Language implementation time*: implementazione associare un tipo floating point ad una rappresentazione Programming-time: scrittura del programma definisce le associazioni che saranno portate a termine nella fase successiva Compile-time: Compilazione del programma associare una variabile ad un tipo es. variabili globali in C o PASCAL Nomi e Ambiente 20 apr, / 58
14 Binding-time [... cont.] Linking-time: Collegamento del programma associare un nome ad una variabile esterna Loading-time*: Caricamento del programma associare una variabile ad una cella di memoria es. in FORTRAN 77 o ad una variabile static (in C) Run-time: Esecuzione del programma associare una variabile locale non statica ad una cella di memoria puntatori/riferimenti a variabili in memoria dinamica Nomi e Ambiente 20 apr, / 58
15 Binding statico / dinamico Un associazione è statica se si salda prima dell esecuzione (run time) e resta immutata per tutta l esecuzione del programma Un associazione è dinamica se è introdotta per la prima volta durante l esecuzione e può essere cambiata nel corso della stessa Nomi e Ambiente 20 apr, / 58
16 Agenda 1 Nomi 2 Ambiente Introduzione 3 Scope Blocco Operazioni 4 Esercizi Nomi e Ambiente 20 apr, / 58
17 Ambiente Ambiente (referencing environment) insieme delle associazioni nomi-oggetti denotabili in un dato punto del programma ed in un dato momento della sua esecuzione usualmente si escludono quelle definite dal linguaggio nella macchina astratta: per ogni nome e per ogni sezione del codice si determina l associazione corretta Nomi e Ambiente 20 apr, / 58
18 Dichiarazioni dichiarazione: costrutto che permette di introdurre una nuova associazione nell ambiente corrente esplicita ad es. 1 int x; 2 int f() { 3 return 0; 4 } 5 type T = int; implicita inferenza del tipo dall uso dell oggetto associato al nome talvolta dallo stesso nome Nomi e Ambiente 20 apr, / 58
19 Associazioni molteplici stesso nome oggetti diversi 1 { 2 int pippo; 3 pippo = 2; 4 { 5 char pippo; 6 pippo = a; 7 } 8 } il nome pippo denota due variabili diverse la molteplicità può dipendere anche dal momento in cui si giunge in una sezione di codice caso dei parametri o nomi locali nei sottoprogrammi ricorsivi Nomi e Ambiente 20 apr, / 58
20 Associazioni molteplici [... cont.] aliasing: nomi diversi (alias) per lo stesso oggetto Esempi passaggio parametri per riferimento: visibile sia la variabile passata sia il parametro che ne ha preso l indirizzo union (C), record con varianti (PASCAL) molteplici espressioni riferite ad un oggetto Esempio a una stessa var. dinamica. Cosa stampa (C)? 1 int * X, * Y; 2 X = (int * ) malloc(sizeof (int)); 3 4 * X = 1; Y = X; 5 6 * Y = 5; printf("%d", * X); Nomi e Ambiente 20 apr, / 58
21 Blocco Blocco: regione di codice identificata da segnalatori di inizio e fine che possa contenere dichiarazioni locali a tale regione begin... end ALGOL e derivati {... } C e derivati let... in... LISP blocco inline (o anonimo) può comparire dovunque possa comparire un comando semplice blocco di sottoprogramma l ambiente del corpo del sottoprogramma viene esteso con le dichiarazioni dei parametri Nomi e Ambiente 20 apr, / 58
22 Ambiti statici Un blocco serve a creare ambiti statici in unità di programma Esempi C e C++: 1 for (...) { 2 int index; } ADA: 1 declare LCL : FLOAT; 2 begin end Nomi e Ambiente 20 apr, / 58
23 Ambienti e Blocchi L ambiente cambia con l entrata e l uscita dai blocchi Un blocco è il costrutto di granularità minima cui è associabile un ambiente costante Ambiente di un blocco: ambiente corrente quando il blocco viene eseguito costituito soprattutto dai binding per i nomi dichiarati localmente nel blocco Nomi e Ambiente 20 apr, / 58
24 Annidamento e Sovrapposizione blocchi Spesso annidabili la definizione di un blocco inclusa in quella di un altro in C, i blocchi associati a sottoprogrammi non possono essere annidati in PASCAL e ADA è possibile avere blocchi di sottoprogrammi all interno di altri sottoprogrammi Mai sovrapponibili l ultimo blocco aperto deve essere il primo ad essere chiuso vale pressoché per tutti i linguaggi che prevedono i blocchi Nomi e Ambiente 20 apr, / 58
25 Blocchi e visibilità Una dichiarazione locale ad un blocco è visibile in un altro blocco se il binding creato dalla stessa è presente anche nell ambiente del secondo Regola di visibilità canonica: dichiarazione locale visibile anche in tutti i blocchi annidati eccezione: blocco annidato nel quale compaia una nuova dichiarazione per quel nome; la nuova associazione oscura la precedente (buco di visibilità, shadowing) Osservazioni non c è visibilità dall esterno verso l interno binding interni non attivi nell ambiente del blocco esterno blocchi allo stesso livello hanno visibilità separate Nomi e Ambiente 20 apr, / 58
26 Tipi d ambiente Ambiente associato ad un blocco è costituito da: locale binding per nomi introdotti da dichiarazioni nel blocco compresi i binding dei parametri formali come per le var. locali non-locale binding per nomi visibili nel blocco ma non dichiarati localmente si considerano i binding esterni globale binding creati all inizio dell esecuzione del programma nomi usabili in tutti i blocchi fa parte dell ambiente non-locale Nomi e Ambiente 20 apr, / 58
27 Tipi d ambiente [... cont.] Osservazioni regole di visibilità: determinano come i nomi dichiarati in blocchi esterni sono visibili nei blocchi interni importando codice da moduli esterni i relativi binding fanno parte dell ambiente globale Nomi e Ambiente 20 apr, / 58
28 Tipi d ambiente [... cont.] 1 A: { 2 int a = 1; 3 B: { 4 int b = 2; 5 int c = 2; 6 C: { 7 int c = 3; 8 int d; 9 d = a+b+c; 10 printf("%d",d); 11 } // C 12 D: { 13 int e; 14 e = a+b+c; 15 printf("%d",e); 16 } // D 17 } // B 18 } // A A: blocco dell ambiente globale contiene il binding per a B: ambiente locale contiene b e c locali ed eredita il binding per a dall ambiente globale C: ambiente locale annidato in quello di B contiene c (nuova) e d locali eredita il binding per b dall ambiente non-locale ed a dall ambiente di A D: ambiente locale annidato in quello di B contiene e locale eredita i binding per b e c dall ambiente di B ed a dall ambiente di A Nomi e Ambiente 20 apr, / 58
29 Operazioni sull ambiente entrata in un blocco 1 creazione delle associazioni per i nomi locali 2 disattivazione delle associazioni per nomi con binding non-locali preesistenti uscita da un blocco 1 distruzione delle associazioni per nomi locali 2 riattivazione delle associazioni per nomi oscurati Nomi e Ambiente 20 apr, / 58
30 Operazioni su nomi ed ambiente Più in generale: creazione binding nome-oggetto (naming) distruzione binding nome-oggetto (unnaming) riferimento ad oggetto mediante il nome (referencing) disattivazione binding nome-oggetto riattivazione binding nome-oggetto Osservazione per effetto delle regole di visibilità un ambiente contiene binding attivi e binding disattivati Nomi e Ambiente 20 apr, / 58
31 Operazioni su su oggetti denotabili creazione accesso modifica distruzione allocazione di memoria necessaria nome = binding = locazione = valore le regole rendono l associazione univoca nome = binding = locazione e modifica del valore nella locazione deallocazione delle risorse Nomi e Ambiente 20 apr, / 58
32 Operazioni su su oggetti denotabili [... cont.] Osservazioni creazione e binding spesso contemporanee es. dichiarazioni di variabili int x; ciò non vale sempre! lifetime(oggetto) < > lifetime(binding) > parametri formali e variabili < riferimento sospeso (dangling) Nomi e Ambiente 20 apr, / 58
33 Agenda 1 Nomi 2 Ambiente 3 Scope Regole di scope Scope statico Scope dinamico 4 Esercizi Nomi e Ambiente 20 apr, / 58
34 Scope Lo scope di un associazione è il segmento di istruzioni per il quale essa è visibile gli ambienti possono cambiare in base alle operazioni definite su di essi ambienti non locali più difficili da trattare Nomi e Ambiente 20 apr, / 58
35 Scope [... cont.] Esempio Quale valore viene stampato? 1 A:{ 2 int x = 0; 3 4 void procedura() { 5 x = 1; 6 } 7 8 B: { 9 int x; 10 procedura(); 11 } printf("%d",x); 14 } Nomi e Ambiente 20 apr, / 58
36 Regole di scope Determinano la validità dei binding nel passaggio da un ambiente all altro: una dichiarazione locale ad un blocco è visibile in esso ed in tutti i blocchi annidati annidamento si può intendere in senso statico flusso del testo sorgente del programma in senso dinamico flusso d esecuzione del programma differiscono solo rispetto ad ambienti non locali e non globali - negli altri casi coincidono Nomi e Ambiente 20 apr, / 58
37 Scope statico Basato sulla struttura sintattica del sorgente: ambiente in ogni punto stabilito dal compilatore i. dichiarazioni locali definiscono l ambiente locale non quelle in blocchi annidati ii. l uso di un nome in un blocco comporta: l utilizzo del binding dell ambiente locale, se esiste; altrimenti, si risale la gerarchia dei blocchi alla ricerca di un ambiente non locale contenente un binding valido ambito più esterno: parole predefinite del linguaggio iii. il nome di un blocco fa parte dell ambiente esterno immediatamente precedente al blocco vale anche per i nomi dei sottoprogrammi: i binding del nome sono nell ambiente esterno, sono quindi visibili anche in quello interno ciò rende possibili le chiamate ricorsive Nomi e Ambiente 20 apr, / 58
38 Scope statico [... cont.] Le variabili possono essere occultate da una sezione di programma avente una variabile più vicina con lo stesso nome In C++ e ADA è ammesso l accesso a queste variabili "nascoste" In C++: class_name::name In ADA: unit.name Nomi e Ambiente 20 apr, / 58
39 Scope statico [... cont.] Esempio Quali valori vengono stampati? 1 { 2 int x = 0; 3 void proc(int n) 4 { 5 x = n+1; 6 } 7 proc(3); 8 printf("%d",x); 9 { 10 int x = 0; 11 proc(3); 12 printf("%d",x); 13 } 14 printf("%d",x); 15 } Nomi e Ambiente 20 apr, / 58
40 Scope statico [... cont.] vantaggi: leggibilità e comprensibilità basta scorrere le dichiarazioni nel sorgente ottimizzazione e controllo di correttezza il compilatore può decidere (quasi) tutto modalità usata dalla maggior parte dei linguaggi ALGOL, PASCAL, C, C++, ADA, JAVA, SCHEME,... svantaggi: relativamente complicata gestione a run-time gerarchia degli ambienti locali e non gerarchia delle attivazione dei blocchi Nomi e Ambiente 20 apr, / 58
41 Problemi di scope (statico) Problemi: DOVE possono essere introdotte dichiarazioni QUAL è l esatta visibilità delle variabili locali PASCAL regole restrittive i. dichiarazioni ad inizio blocco e PRIMA dell uso ii. binding valevoli da inizio a fine blocco (possibili buchi) iii. dichiarazioni PRIMA dell uso C e ADA più flessibili valevoli dalla dichiarazione a fine blocco eccezioni (alla iii.) tipi ricorsivi sottoprogrammi forward PASCAL e nomi funzioni C JAVA disciplina mista dichiarazioni ovunque e valide fino a fine blocco dichiarazione membro vale per tutta la classe Nomi e Ambiente 20 apr, / 58
42 Scope dinamico Con lo scope statico l avvicendarsi degli ambienti non locali non segue il flusso di attivazione/disattivazione dei blocchi questo rende la gestione degli ambienti a run-time più complessa Per semplificare... Nomi e Ambiente 20 apr, / 58
43 Scope dinamico [... cont.] Regola basata sulla sequenza di chiamata delle unità di programma e non su come appaiono nel sorgente criterio temporale anziché spaziale modalità usata in alcuni dialetti di LISP, APL, SNOBOL, PERL,. Nomi e Ambiente 20 apr, / 58
44 Scope dinamico [... cont.] Esempio binding per la x nel blocco di prima()? 1 { 2 const x = 0; 3 4 void prima() { 5 printf("%d",x); 6 } 7 8 void seconda() { 9 const x = 1; 10 prima(); 11 } seconda(); 14 } Nomi e Ambiente 20 apr, / 58
45 Scope dinamico [... cont.] Regola di scope dinamico L associazione per un nome non locale X in un punto P del programma è la più recente tra quelle create per X ad essere attiva quando il flusso di controllo raggiunge P implementata con ricerca nella pila dei record di attivazione dei blocchi/sottoprogrammi che hanno fatto raggiungere P per l ambiente locale (e quello globale) non c è differenza con la regola dello scope statico Nomi e Ambiente 20 apr, / 58
46 Scope dinamico [... cont.] Esempio binding per la x nel blocco di prima()? 1 { 2 const x = 0; 3 4 void prima() { 5 printf("%d",x); 6 } 7 8 void seconda() { 9 const x = 1; 10 { const x = 2; } 11 prima(); 12 } seconda(); 15 } Nomi e Ambiente 20 apr, / 58
47 Scope dinamico [... cont.] vantaggi: flessibilità stesso sottoprogramma si comporta diversamente a seconda del momento in cui viene invocato può dipende dal valore di var. non locali anziché da parametri: Esempio stampa( ) usa il colore indicato dalla var. colore 1 { colore = FF000; 2 stampa(testo); 3 } svantaggi: minore leggibilità e comprensibilità difficile ricostruire le dichiarazioni dal sorgente gestione differita al run-time poco usata nei linguaggi general-purpose Nomi e Ambiente 20 apr, / 58
48 Visibilità e Durata Visibilità e Durata sono a volte strettamente correlate, ma sono concetti differenti si consideri il caso di una variabile static in una funzione C/C++ vive tra una chiamata e l altra visibile solo quando si chiama la funzione Nomi e Ambiente 20 apr, / 58
49 Costanti con nome variabile vincolata ad avere un dato valore assegnatole durante la sua memorizzazione usate per parametrizzare i programmi il legame con i valori può essere statico (costanti manifeste) o dinamico Esempi: FORTRAN 90: espressioni a valori costanti ADA, C++ e JAVA: espressioni di ogni tipo vantaggi leggibilità e modificabilità dei programmi Nomi e Ambiente 20 apr, / 58
50 Agenda 1 Nomi 2 Ambiente 3 Scope 4 Esercizi Nomi e Ambiente 20 apr, / 58
51 Esercizi Es. 1: Cosa stampa sotto scope statico? 1 int X = 0; 12 2 int Y; 3 4 void incr() { 5 X++; 6 } 7 8 void incr2() { 9 X++; 10 incr(); 11 } 13 read(y); 14 if Y > 0 { 15 int X; 16 incr2(); 17 } 18 else 19 incr2(); write(x); Nomi e Ambiente 20 apr, / 58
52 Esercizi [... cont.] Es. 2: Quali e quanti valori sono stampati (scope dinamico)? 1 int X = 1; 13 2 int Y; 14 read(y); 3 4 void fie() { 5 foo(); 6 X = 0; 7 } 8 9 void foo() { 10 int X; 11 X = 5; 12 } if Y > 0 { 17 int X = 4; 18 fie(); 19 } 20 else 21 fie(); write(x); Nomi e Ambiente 20 apr, / 58
53 Esercizi [... cont.] Es. 3: Nello schema seguente inserire nelle zone indicate con // 1 e // 2 codice utile a far sì che le due chiamate a foo(), da dichiarare in // 1, assegnino a x con scope statico, lo stesso valore con scope dinamico, valori diversi 1 { 2 int i; 3 // 1 4 for (i=0; i<=1; i++) { 5 int x; 6 // 2 7 x = foo(); 8 } 9 } Nomi e Ambiente 20 apr, / 58
54 Esercizi [... cont.] Es. 4: Sotto scope statico cosa stampa? (passaggio y per valore) 1 { 2 int x = 2; 3 int fie(int y) { 4 x = x + y; 5 } 6 7 { 8 int x = 5; 9 fie(x); 10 write(x); 11 } 12 write(x); 13 } Es. 5: E se lo scope è dinamico e il passaggio per riferimento? Nomi e Ambiente 20 apr, / 58
55 Esercizi [... cont.] Es. 6: Scope statico e passaggio per riferimento: cosa stampa? 1 { 2 int x = 2; 3 4 void fie(reference int y) { 5 x = x + y; 6 y = y + 1; 7 } 8 9 { 10 int x = 5; 11 int y = 5; 12 fie(x); 13 write(x); 14 } 15 write(x); 16 } Nomi e Ambiente 20 apr, / 58
56 Esercizi [... cont.] Es. 7: Scope statico: cosa stampa? 1 { 2 int x = 2; 3 4 void fie(value int y) { 5 x = x + y; 6 } 7 8 { 9 int x = 5; 10 fie(x++); / * Nota: post-incremento * / 11 write(x); 12 } write(x); 15 } Nomi e Ambiente 20 apr, / 58
57 Esercizi [... cont.] Es. 8: Scope dinamico: cosa stampa? 1 { 2 int x = 1; 3 int y = 1; 4 5 void fie(reference int z){ 6 z = x + y + z; 7 } 8 9 { 10 int y = 3; 11 { int x = 3 } 12 fie(y); 13 write(y); 14 } 15 write(y); 16 } Nomi e Ambiente 20 apr, / 58
58 Riferimenti Gabbrielli & Martini: Linguaggi di Programmazione, McGraw-Hill 2a edizione Nomi e Ambiente 20 apr, / 58
Linguaggi di Programmazione
Linguaggi di Programmazione Corso di Laurea in ITPS I nomi e l ambiente Valeria Carofiglio (Questo materiale è una rivisitazione del materiale prodotto da Nicola Fanizzi) 1 Argomenti Introduzione Nomi
DettagliProgrammazione II. Lezione 5. Daniele Sgandurra 2/11/2010.
Programmazione II Lezione 5 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 2/11/2010 1/35 Programmazione II Lezione 5 2/11/2010 Sommario 1 Fondamenti Problema della Fermata Macchina di Turing Indecidibilità
DettagliProgrammazione II. Lezione 6. Daniele Sgandurra 5/11/2010.
Programmazione II Lezione 6 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 5/11/2010 1/54 Programmazione II Lezione 6 5/11/2010 Sommario 1 Nomi e Ambiente Ambiente 2 Esercizi 3 Esercitazione: Eclipse Eclipse
DettagliPROGRAMMAZIONE Nomi, binding, regole di visibilità (scope)
PROGRAMMAZIONE 2 19. Nomi, binding, regole di visibilità (scope) PR2 2017-2018 1 Nomi Un nome in un linguaggio di programmazione è esattamente quello che immaginate o la maggior parte dei nomi sono definiti
DettagliNomi e ambiente. Blocchi e regole di scoping. Blocchi e regole di scoping Nomi e ambiente 1 / 39
Nomi e ambiente Blocchi e regole di scoping Blocchi e regole di scoping Nomi e ambiente 1 / 39 Nomi Meccanismi di astrazione fondamentale per gestire la complessità del software. Uso dei nomi: un meccanismo
DettagliNomi. Nomi e ambiente. Nomi e oggetti denotabili. Sintassi
Nomi Nomi e ambiente Blocchi e regole di scoping Meccanismi di astrazione fondamentale per gestire la complessità del software. Uso dei nomi: un meccanismo di astrazione. Nome: sequenza di caratteri usata
DettagliNomi. Nomi e ambiente. Nomi e oggetti denotabili. Esempio
Nomi e ambiente Blocchi e regole di scoping Nomi Meccanismi di astrazione fondamentale per gestire la complessità del software. Uso dei nomi: un meccanismo di astrazione. Nome: sequenza di caratteri usata
DettagliNomi, binding e regole di scope
Nomi, binding e regole di scope 1 Nomi Un nome in un linguaggio di programmazione è esattamente quello che immaginate o la maggior parte dei nomi sono definiti dal programma (gli identificatori) o ma anche
DettagliInformatica 3. LEZIONE 2: Sintassi e semantica
Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica
DettagliInformatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione
Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4:
DettagliCorso di Linguaggi di Programmazione. Organizzazione di un processo in memoria (1)
Corso di Linguaggi di Programmazione Lezione 14 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 04 Maggio 2009 Organizzazione di un
DettagliNomi, binding e regole di scope
Nomi, binding e regole di scope 1 Nomi Un nome in un linguaggio di programmazione è esa5amente quello che immaginate o la maggior parte dei nomi sono defini; dal programma (gli iden;ficatori) o ma anche
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 15 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Informatica Università degli Studi di Milano 30 Aprile 2013 Classificazione di un Type System Riassumendo:
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliStrutture dati nel supporto a run time
Strutture dati nel supporto a run time 1 Entità presenti quando un programma va in esecuzione programmi d utente (compilati) routines del supporto interprete I/O, librerie, routines per la gestione delle
DettagliCorso di Laurea in Informatica Applicata Prima Prova di Verifica Intermedia di Programmazione II 1 Dicembre 2010
Corso di Laurea in Informatica Applicata Prima Prova di Verifica Intermedia di Programmazione II 1 Dicembre 2010 Istruzioni: scrivere le risposte alle domande negli spazi presenti nel testo e riconsegnare
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,
DettagliPaolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09
Introduzione ai sottoprogrammi Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Introduzione al corso, Paolo Bison, FI08, 2008-12-09 p.1 Struttura programma
DettagliPaolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova
Introduzione ai sottoprogrammi Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Introduzione al corso, Paolo Bison, FI06, 2007-02-06 p.1 Struttura programma formato da vari elementi
DettagliProgrammazione II. Lezione 9. Daniele Sgandurra 16/11/2010.
Programmazione II Lezione 9 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 16/11/2010 1/31 Programmazione II Lezione 9 16/11/2010 Sommario 1 Gestione della Memoria 2/31 Programmazione II Lezione 9 16/11/2010
DettagliGestione della Memoria
Gestione della Memoria Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 27 apr, 2016 Sommario 1 Tecniche di gestione Progetto della gestione
DettagliProgrammazione II. Lezione 7. Daniele Sgandurra 9/11/2010.
Programmazione II Lezione 7 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 9/11/2010 1/24 Programmazione II Lezione 7 9/11/2010 Sommario 1 Gestione della Memoria 2/24 Programmazione II Lezione 7 9/11/2010
DettagliSommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo
Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi Istruzioni variabili e tipi Sottoprogrammi Strutture di controllo Ricorsione 1 2 Obiettivo Ciclo di sviluppo di programmi Risoluzione
DettagliIl linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali
DettagliInformatica 3. LEZIONE 4: Semantica operazionale. Modulo 1: Strutture a blocchi Modulo 2: Comportamenti dinamici
Informatica 3 LEZIONE 4: Semantica operazionale Modulo 1: Strutture a blocchi Modulo 2: Comportamenti dinamici Informatica 3 Lezione 4 - Modulo 1 Strutture a blocchi C4: Blocchi annidati int f( ); { int
DettagliLINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliMacchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016
Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliLinguaggi di programmazione
Linguaggi di programmazione Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliLinguaggi, Traduttori e le Basi della Programmazione
Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 14 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Informatica Università degli Studi di Milano 23 Aprile 2013 Cosa servono i tipi durante l analisi
DettagliASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1
ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliPROGRAMMAZIONE Nomi, binding
PROGRAMMAZIONE 2 19. Nomi, binding PR2 2017-2018 1 Nomi Un nome in un linguaggio di programmazione è esa6amente quello che immaginate o la maggior parte dei nomi sono defini< dal programma (gli iden
DettagliIntroduzione all OOP!
Introduzione all OOP! Introdurre l evoluzione dei linguaggi di programmazione e la loro classificazione Introdurre l OOP (astrazione, incapsulamento, ereditarietà) Dal C a Java un primo esempio 1 LINGUAGGI
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliAA 2014-2015. 20. Nomi, binding
AA 2014-2015 20. Nomi, binding 1 Nomi Un nome in un linguaggio di programmazione è esa;amente quello che immaginate o la maggior parte dei nomi sono definia dal programma (gli idenaficatori) o ma anche
DettagliASTRAZIONE ASTRAZIONE
ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione!paradigmi linguistici, costrutti!semantica!implementazione, strutture a tempo di esecuzione 1 Linguaggi di programmazione e astrazione! i linguaggi di programmazione ad alto
DettagliFondamenti di Informatica II 3. Funzioni in C++ (parte 1)
Introduzione alle funzioni in C++ Fondamenti di Informatica II 3. Funzioni in C++ (parte 1) Corso di Laurea in Ingegneria Informatica A.A. 2008-2009 2 Semestre Corso (A-M) int main() int n, fattoriale=1;
DettagliIngegneria del Software
Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi
DettagliFUNZIONI. Esempi (pseudo-c): dare un nome a una espressione rendere tale espressione parametrica. float f(){ * sin(0.75); } float f1(int x) {
Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliVisibilità e tempo di vita delle variabili. (più sintesi di alcuni concetti della prima parte del corso)
Visibilità e tempo di vita delle variabili (più sintesi di alcuni concetti della prima parte del corso) Struttura dei programmi C/C++ Un programma C/C++ deve essere contenuto in uno o più file (per ora
DettagliLinguaggi di programmazione e astrazione
Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo
DettagliFasi di un Compilatore
Dipartimento di Matematica e Informatica Università di Camerino Un implementazione compilativa di un linguaggio di programmazione viene realizzata tramite un programma che prende il nome di compilatore
DettagliIntroduzione alla programmazione A. Ferrari
Introduzione alla programmazione A. Ferrari Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi ad
DettagliIntroduzione alla programmazione. Alice Pavarani
Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello
DettagliFUNZIONI FUNZIONI COME COMPONENTI SW
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliEsercitazioni di Informatica 3
Esercitazioni di Informatica 3 Part I: Programming Languages Syntax and semantics Laurea in Ingegneria Informatica Politecnico di Milano Polo di Milano Leonardo Esercizio 1: EBNF Utilizzando il linguaggio
Dettaglipassaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in
I Parametri di tipo vettore I Il meccanismo del passaggio per valore di un indirizzo consente il passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad
DettagliLe istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici i (parole chiave)
ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler: implica
DettagliLinguaggi di Programmazione Corso C. Parte n.10 Gestione della Memoria. Nicola Fanizzi
Linguaggi di Programmazione Corso C Parte n.10 Gestione della Memoria Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Gestione della Memoria I moderni linguaggi
DettagliFUNZIONI FUNZIONI COME COMPONENTI SW
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema. Una funzione permette di dare un nome a una espressione rendendola parametrica
Dettaglistampa 1 su un architettura little-endian, 0 su una big-endian. Dunque, alla domanda qual è il significato di un programma?
1 Introduzione Su un argomento il dibattito politico era il più acceso nel paese di Lilliput: se le uova alla coque andassero mangiate aprendone il guscio dal lato piccolo o dal grande. I sostenitori del
DettagliFondamenti di Informatica
Programmazione modulare (top-down) Fondamenti di Informatica 15. Funzioni in C++ (parte 1) Problemi complessi Conviene suddividere il programma in sottoprogrammi piu semplici mediante la metodologia di
DettagliLinguaggi di Programmazione I Lezione 1
Linguaggi di Programmazione I Lezione 1 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 4 marzo 2008 Introduzione al corso 3 Obbiettivi..............................................................
DettagliNomi. ! Un nome in un linguaggio di programmazione è. esa9amente quello che immaginate
NOMI, BINDING, AMBIENTI Nomi! Un nome in un linguaggio di programmazione è. esa9amente quello che immaginate o La maggior parte dei nomi sono defini@ dal programma (gli iden@ficatori) o Ma anche i simboli
DettagliCorso di Laurea in Informatica Applicata Prima Prova di Verifica Intermedia di Programmazione II 1 Dicembre 2010
Corso di Laurea in Informatica Applicata Prima Prova di Verifica Intermedia di Programmazione II 1 Dicembre 2010 Istruzioni: scrivere le risposte alle domande negli spazi presenti nel testo e riconsegnare
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliLinguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
DettagliFUNZIONI. Esempi (pseudo-c): dare un nome a una espressione rendere tale espressione parametrica. float f(){ * sin(0.75); } float f1(int x) {
Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere
DettagliScope, Memoria e Tabella dei Simboli
Scope, Memoria e Tabella dei Simboli La tabella dei simboli è uno strumento fondamentale attraverso il quale interpreti e compilatori implementano la traduzione da un programma scritto in un linguaggio
DettagliVariabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free
Variabili dinamiche Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free 1 Tipi di variabili in C In C è possibile classificare le variabili in
DettagliOggetti. Oggetti e occultamento delle informazioni. Definire oggetti. Oggetti. Definire oggetti la sintassi. Convenzione sugli identificatori
Oggetti Oggetti e occultamento delle informazioni Paolo Coppola Dipartimento di Matematica e Informatica Università degli Studi di Udine http://www.dimi.uniud.it/coppola/ coppola@dimi.uniud.it I metodi
DettagliI Linguaggi di Programmazione
I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliFUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliLinguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI
DettagliDISPENSE DI PROGRAMMAZIONE LINGUAGGI A TIPIZZAZIONE FORTE: IL COSTRUTTO DI TIPO. TIPI SEMPLICI: TIPI PRE-DEFINITI E TIPI DEFINITI DAL PROGRAMMATORE.
DISPENSE DI PROGRAMMAZIONE Modulo 3 Linguaggi di programmazione: dati e controllo (Parte I) LINGUAGGI A TIPIZZAZIONE FORTE: IL COSTRUTTO DI TIPO. TIPI SEMPLICI: TIPI PRE-DEFINITI E TIPI DEFINITI DAL PROGRAMMATORE.
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliDichiarazione di una classe. Dichiarazione ereditarietà
Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante
DettagliIl linguaggio C. Istruzioni, funzioni, dati strutturati
Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects
DettagliElementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2008/09 Elementi di programmazione Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliTraduzione ed Interpretazione. Queste sconosciute
Traduzione ed Interpretazione Queste sconosciute Siano L Linguaggio ad alto livello M L M 0 Macchina astratta di L Macchina ospite Implementazione interpretativa di L Simulazione software di M L su M 0
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliEsempi (pseudo-c):! float f(){ * sin(0.75); } float f1(int x) { 2 + x * sin(0.75); } Esempio
Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema! Una funzione permette di"! dare un nome a una espressione!! rendere tale espressione
DettagliElementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università
DettagliMarco Faella Introduzione al corso
Marco Faella Introduzione al corso 1 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com A.A. 2009-2010 Linguaggi
DettagliUna funzione riceve dati di ingresso in corrispondenza ai parametri
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliVariabili. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Laboratorio di Informatica Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
DettagliPr ogramming Languages. Sottoprogrammi
Pr ogramming Languages Sottoprogrammi 1 ISottoprogrammi Qualche nozione introduttiva DVAL:dominiodeivaloridenotabili,ovverooggettiai quali èpossibiledareunnome:dataobject(variabili), indirizzi, sottoprogrammi,
DettagliLe classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:
Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata
DettagliASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1
ASTRAZIONE Esistono linguaggi a vari livelli di astrazione Linguaggio Macchina: implica la conoscenza dei metodi utilizzati per la rappresentazione delle informazioni Linguaggio Macchina e Assembler (Assembly):
DettagliLinguaggi e Ambienti di Programmazione
Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
DettagliFUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
Dettagli