Programmazione II. Lezione 6. Daniele Sgandurra 5/11/2010.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Programmazione II. Lezione 6. Daniele Sgandurra 5/11/2010."

Transcript

1 Programmazione II Lezione 6 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 5/11/2010 1/54 Programmazione II Lezione 6 5/11/2010

2 Sommario 1 Nomi e Ambiente Ambiente 2 Esercizi 3 Esercitazione: Eclipse Eclipse 4 Java 2/54 Programmazione II Lezione 6 5/11/2010

3 Nomi e Ambiente Parte I Nomi e Ambiente 3/54 Programmazione II Lezione 6 5/11/2010

4 Nomi e Ambiente Ambiente Blocco: Annidamento e Sovrapposizione Spesso i blocchi sono 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 a essere chiuso; vale pressoché per tutti i linguaggi che prevedono i blocchi. 4/54 Programmazione II Lezione 6 5/11/2010

5 Blocchi: Visibilità Nomi e Ambiente Ambiente Una dichiarazione locale a un blocco è visibile in un altro blocco se il binding creato dalla dichiarazione vale anche per l ambiente del secondo blocco. Dichiarazione locale a un blocco visibile nel blocco e in tutti i blocchi annidati tranne ove compaia una nuova dichiarazione per quel nome: in tal caso la nuova dichiarazione oscura la prima (buco di visibilità); osservazione: non c è visibilità dall esterno verso l interno (binding interni non attivi). Due blocchi allo stesso livello hanno visibilità separate. 5/54 Programmazione II Lezione 6 5/11/2010

6 Tipi d Ambiente Nomi e Ambiente Ambiente Tipi d Ambiente L ambiente associato a un blocco è composto da: ambiente locale: costituito dal binding per nomi locali; per i blocchi di procedure, l ambiente locale contiene anche i binding per i parametri formali (come se fossero variabili dichiarate localmente); ambiente non-locale: costituito dai binding per nomi visibili nel blocco ma non dichiarati localmente; ambiente globale: costituito dai binding creati all inizio dell esecuzione del programma; nomi usabili in tutti i blocchi. 6/54 Programmazione II Lezione 6 5/11/2010

7 Nomi e Ambiente Tipi d Ambiente: Esempio Ambiente 1 A : { i n t a = 1 ; 2 3 B : { i n t b = 2 ; 4 i n t c = 2 ; 5 6 C : { i n t c = 3 ; 7 i n t d ; 8 d = a+b+c ; 9 write ( d ) ; 10 } D : { i n t e ; 13 e = a+b+c ; 14 write ( e ) ; 15 } 16 } 17 } 7/54 Programmazione II Lezione 6 5/11/2010

8 Nomi e Ambiente Tipi d Ambiente: Esempio Ambiente A: blocco che introduce l ambiente globale: contiene il binding per a; B: ambiente locale: contiene due variabili locali b e c; eredita il binding per a dall ambiente globale; C: ambiente locale annidato in quello di B: contiene due variabili locali c (che nasconde l altra) e d; eredita il binding per b dall ambiente non-locale e a dall ambiente globale di A. D: ambiente locale annidato in quello di B: contiene la variabile locale e; eredita il binding per b, c dall ambiente non-locale di B e a dall ambiente globale di A. 8/54 Programmazione II Lezione 6 5/11/2010

9 Nomi e Ambiente Operazioni sull Ambiente Ambiente Entrata in un blocco: create associazioni per i nomi locali; disattivate le associazioni per nomi con binding non locali preesistenti. Uscita da un blocco: distruzione delle associazioni per nomi locali; riattivate le associazioni per nomi oscurati. 9/54 Programmazione II Lezione 6 5/11/2010

10 Nomi e Ambiente Operazioni su Nomi e Ambiente Ambiente Creazione binding nome-oggetto (naming). Distruzione binding nome-oggetto (unnaming) Riferimento a oggetto mediante il nome (referencing). Disattivazione binding nome-oggetto. Riattivazione binding nome-oggetto 10/54 Programmazione II Lezione 6 5/11/2010

11 Nomi e Ambiente Ambiente Operazioni su Oggetti Denotabili Creazione: allocazione di memoria necessaria. Accesso: nome binding locazione valore: le regole rendono l associazione univoca. Modifica: nome binding locazione: e modifica del valore nella locazione. Distruzione: deallocazione delle risorse. 11/54 Programmazione II Lezione 6 5/11/2010

12 Nomi e Ambiente Ambiente Operazioni su Oggetti Denotabili Creazione e binding spesso contemporanee: es.: dichiarazioni di variabili (int x;). Non vale sempre: lifetime(oggetto) <> lifetime(binding): >: variabile passata per riferimento (parametro formale); <: riferimento dangling. 12/54 Programmazione II Lezione 6 5/11/2010

13 Scope (Visibilità) Nomi e Ambiente Ambiente La visibilità di un associazione è il segmento di istruzioni per il quale essa è visibile. Gli ambienti possono cambiare in base alle operazioni definite sugli ambienti: ambienti non locali più difficili da trattare. 13/54 Programmazione II Lezione 6 5/11/2010

14 Scope: Esempio Nomi e Ambiente Ambiente Quale valore viene stampato? 1 A : { i n t x = 0 ; 2 3 v o i d foo ( ) 4 { 5 x = 1 ; 6 } 7 8 B : { i n t x ; 9 foo ( ) ; 10 } write ( x ) ; 13 } 14/54 Programmazione II Lezione 6 5/11/2010

15 Regole di visibilità Nomi e Ambiente Ambiente Determinano la validità dei binding nel passaggio da un ambiente all altro. es.: una dichiarazione locale a un blocco è visibile in esso e in tutti i blocchi annidati. Si possono intendere: staticamente: sorgente; dinamicamente: esecuzione. 15/54 Programmazione II Lezione 6 5/11/2010

16 Scope Statico Nomi e Ambiente Ambiente Basato sulla struttura sintattica del sorgente: l associazione è stabilita dal compilatore. Regola dello scope statico (dello scope annidato più vicino): 1 le dichiarazioni locali di un blocco definiscono l ambiente locale (escluse quelle in blocchi annidati); 2 l uso di un nome in un blocco comporta l utilizzo del binding dell ambiente locale, se esiste; altrimenti risalire all ambiente dei blocchi contenitori (un livello alla volta) fino a trovare un binding valido (ambito più esterno: parole predefinite del linguaggio); altrimenti, errore; 3 il nome di un blocco fa parte dell ambiente locale del blocco contenitore immediatamente esterno al blocco (es., blocchi associati a procedure). 16/54 Programmazione II Lezione 6 5/11/2010

17 Nomi e Ambiente Scope Statico: Esempio Ambiente Quale valore viene stampato? 1 { i n t x = 0 ; 2 3 v o i d incr ( i n t n ) 4 { 5 x = n+1; 6 } 7 8 incr ( 3 ) ; 9 write ( x ) ; 10 { i n t x = 0 ; 11 incr ( 3 ) ; 12 write ( x ) ; 13 } 14 write ( x ) ; 15 } 17/54 Programmazione II Lezione 6 5/11/2010

18 Scope Statico Nomi e Ambiente Ambiente Vantaggi: leggibilità e comprensibilità: basta scorrere le dichiarazioni nel sorgente. ottimizzazione: il compilatore può decidere (quasi) tutto. usata dalla maggior parte dei linguaggi: Algol, Pascal, C, C++, Ada, Java, Scheme,... Svantaggi: relativamente complicata gestione a run-time; gerarchia degli ambienti non locali evolve diversamente dalla gerarchia di attivazione dei blocchi. 18/54 Programmazione II Lezione 6 5/11/2010

19 Scope Dinamico Nomi e Ambiente Ambiente Basato sulle sequenze di chiamata delle unità di programma e non su come appaiono nel sorgente. Criterio temporale anziché spaziale. Usata in alcuni dialetti di Lisp, APL, Snobol, Perl. 19/54 Programmazione II Lezione 6 5/11/2010

20 Nomi e Ambiente Scope Dinamico: Esempio Ambiente Quale valore viene stampato? 1 { c o n s t x = 0 ; 2 3 v o i d stampa1 ( ) 4 { 5 write ( x ) ; 6 } 7 8 v o i d stampa2 ( ) 9 { 10 c o n s t x = 1 ; 11 stampa1 ( ) ; 12 } stampa2 ( ) ; 15 } 20/54 Programmazione II Lezione 6 5/11/2010

21 Nomi e Ambiente Ambiente Scope Dinamico: Regole di Visibilità L associazione per un nome non locale X in un punto P del programma è la più recente tra quelle create per X a essere attiva quando il flusso di controllo raggiunge P: implementata con ricerca nella pila dei blocchi di attivazione dei blocchi/sottoprogrammi che hanno fatto raggiungere P; per l ambiente locale la regola è identica al caso dello scope statico. 21/54 Programmazione II Lezione 6 5/11/2010

22 Nomi e Ambiente Scope Dinamico: Esempio Ambiente Quale valore viene stampato? 1 { c o n s t x = 0 ; 2 3 v o i d stampa1 ( ) 4 { 5 write ( x ) ; 6 } 7 8 v o i d stampa2 ( ) 9 { 10 c o n s t x = 1 ; 11 { c o n s t x = 2 ; } 12 stampa1 ( ) ; 13 } stampa2 ( ) ; } 22/54 Programmazione II Lezione 6 5/11/2010

23 Scope Dinamico Nomi e Ambiente Ambiente Vantaggi: Svantaggi: flessibilità: stesso sottoprogramma si comporta diversamente a seconda del momento in cui viene invocato. minor leggibilità e comprensibilità; difficile ricostruire le dichiarazioni dal sorgente. gestione a run-time inefficiente; poco usata nei linguaggi general-purpose. 23/54 Programmazione II Lezione 6 5/11/2010

24 Problemi di Scope Nomi e Ambiente Ambiente Dove possono essere introdotte le dichiarazioni? Qual è l esatta visibilità delle variabili locali: regole restrittive in Pascal: (i) dichiarazioni a inizio blocco e prima dell uso; (ii) binding valevoli da inizio a fine blocco (possibili buchi ); (iii) dichiarazioni prima dell uso. più rilassate in C e Ada: valevoli dalla dichiarazione a fine blocco; eccezioni (alla iii) per i tipi ricorsivi (es. liste); sottoprogrammi forward Pascal e nomi funzioni C. Java: disciplina mista: dichiarazioni ovunque e valide fino a fine blocco; dichiarazione membro valide per tutta la classe. 24/54 Programmazione II Lezione 6 5/11/2010

25 Esercizi Parte II Esercizi 25/54 Programmazione II Lezione 6 5/11/2010

26 Esercizio 1 Esercizi Si calcoli la computazione del comando c: nello stato σ = [(X, 3)]. X := 1; while (X == 1) do X := 2; 26/54 Programmazione II Lezione 6 5/11/2010

27 Esercizio 2 Esercizi Si consideri il seguente frammento di programma, scritto con un linguaggio a scope statico. Si dica quali valori sono stampati dalla primitiva write(). 1 i n t x = 0, y = 0 ; 2 3 v o i d foo ( ) { 4 x++; 5 } 6 v o i d bar ( ) { 7 foo ( ) ; 8 x=x 2 ; 9 } read ( y ) ; i f ( y > 0) { 14 i n t x = 3 ; 15 bar ( ) ; 16 write ( x ) ; 17 } 18 e l s e bar ( ) ; write ( x ) ; 27/54 Programmazione II Lezione 6 5/11/2010

28 Esercizio 3 Esercizi Si consideri il seguente frammento di programma, scritto con un linguaggio a scope dinamico. Si dica quali valori sono stampati dalla primitiva write(). 1 i n t x = 2, y = 0 ; 2 3 v o i d foo ( ) { 4 i n t x = 1 ; 5 } 6 v o i d bar ( ) { 7 foo ( ) ; 8 x=x 2 ; 9 } read ( y ) ; i f ( y > 0) { 14 i n t x = 3 ; 15 bar ( ) ; 16 write ( x ) ; 17 } 18 e l s e bar ( ) ; write ( x ) ; 28/54 Programmazione II Lezione 6 5/11/2010

29 Esercizio 4 Esercizi Si consideri il seguente frammento di programma: inserire del codice al posto di /*...*/, tale che usando un linguaggio a scope statico la variabile x nei due cicli assuma lo stesso valore, mentre usando un linguaggio a scope dinamico la variabile x assuma valori diversi. (Il codice deve compilare sempre.) 1 i n t i ; 2 3 i n t foo ( ) { /... / } 4 5 f o r ( i = 0 ; i <= 1 ; i++){ 6 i n t x ; 7 /... / 8 x = foo ( ) ; 9 } **È possibile usare un solo comando nel ciclo for? 29/54 Programmazione II Lezione 6 5/11/2010

30 Esercitazione: Eclipse Parte III Esercitazione: Eclipse 30/54 Programmazione II Lezione 6 5/11/2010

31 Installare Eclipse Esercitazione: Eclipse Eclipse In selezionare Eclipse Classic. 31/54 Programmazione II Lezione 6 5/11/2010

32 Installare Eclipse Esercitazione: Eclipse Eclipse Scompattare l archivio: $ tar zxvf eclipse-sdk linux-gtk.tar.gz Spostarsi nella directory di installazione: $ cd eclipse/ Eseguire Eclipse: $./eclipse (In alternativa, muovere la directory in una directory di sistema e aggiornare il path per puntare ad essa). 32/54 Programmazione II Lezione 6 5/11/2010

33 Installare Eclipse Esercitazione: Eclipse Eclipse Scegliere il workspace: 33/54 Programmazione II Lezione 6 5/11/2010

34 Esercitazione: Eclipse Eclipse Creare un Progetto Java con Eclipse Creare un progetto Java: 34/54 Programmazione II Lezione 6 5/11/2010

35 Esercitazione: Eclipse Eclipse Creare un Progetto Java con Eclipse 35/54 Programmazione II Lezione 6 5/11/2010

36 Aggiungere una classe Esercitazione: Eclipse Eclipse Aggiungere una classe: 36/54 Programmazione II Lezione 6 5/11/2010

37 Aggiungere una classe Esercitazione: Eclipse Eclipse 37/54 Programmazione II Lezione 6 5/11/2010

38 Aggiungere una classe Esercitazione: Eclipse Eclipse 38/54 Programmazione II Lezione 6 5/11/2010

39 Scrivere il Programma Esercitazione: Eclipse Eclipse Scrivere il programma: 39/54 Programmazione II Lezione 6 5/11/2010

40 Esercitazione: Eclipse Eseguire il Programma Eclipse Eseguire il programma (eseguire la build se non è automatica): 40/54 Programmazione II Lezione 6 5/11/2010

41 Esercitazione: Eclipse Eseguire il Programma Eclipse 41/54 Programmazione II Lezione 6 5/11/2010

42 Esercitazione: Eclipse Eseguire il Programma Eclipse 42/54 Programmazione II Lezione 6 5/11/2010

43 Esercitazione: Eclipse Eseguire il Programma Eclipse 43/54 Programmazione II Lezione 6 5/11/2010

44 Esercitazione: Eclipse Eseguire il Programma Eclipse 44/54 Programmazione II Lezione 6 5/11/2010

45 Esercitazione: Eclipse Eseguire il Programma Eclipse In alternativa, per compilare ed eseguire il programma da shell: ~$ cd workspace/hello/src/ ~/workspace/hello/src$ javac Hello.java ~/workspace/hello/src$ java Hello Hello World! In alternativa, dopo aver fatto la build da Eclipse, se si è scelto di avere directory separate per gli eseguibili (bin) e sorgenti (src), si può eseguire il programma dalla directory bin: ~$ cd workspace/hello/ ~/workspace/hello$ ls ~/workspace/hello$ bin src ~/workspace/hello$ cd bin/ ~/workspace/hello/bin$ java Hello Hello World! 45/54 Programmazione II Lezione 6 5/11/2010

46 Java Parte IV Java 46/54 Programmazione II Lezione 6 5/11/2010

47 Java Java Java è un linguaggio object-oriented, con le seguenti caratteristiche: fortemente tipato (strongly typed): ogni espressione ha un tipo, che il compilatore usa per controllare la correttezza delle operazioni eseguite; tutti gli errori sono rilevati al momento in cui avvengono, non sono possibili errori non catturati (unchecked error): es., non è consentito l accesso diretto alla memoria (puntatori void*); gestione automatica della memoria a heap, con garbage collection: la deallocazione non è gestita dal programmatore: la JVM si occupa di liberare la memoria non più usata. 47/54 Programmazione II Lezione 6 5/11/2010

48 Sintassi di Base Java La sintassi del frammento imperativo di Java è simile a quella del C/C++: comandi (if, while,...); le dichiarazioni di metodi (analoghi alle funzioni) e variabili; si usano le graffe ({...}) per indicare l apertura e la chiusura dei blocchi; i caratteri di spazio/tabulazione/a capo non sono importanti; come in C, un metodo main è utilizzato come punto di partenza del programma: invocato dalla JVM all inizio dell esecuzione. 48/54 Programmazione II Lezione 6 5/11/2010

49 Hello World! Java 1 p u b l i c c l a s s Hello { 2 // e n t r y p o i n t d e l programma 3 p u b l i c s t a t i c v o i d main ( String [ ] args ) { 4 System. out. println ( H e l l o World! ) ; 5 } 6 } Dichiarazione della classe Hello: è necessario che il file relativo al codice sorgente abbia lo stesso nome della classe pubblica corrispondente, seguito dall estensione java. Un solo metodo, main: il punto di ingresso nel programma, invocato all inizio dell esecuzione; stampa sulla console la stringa Hello World! 49/54 Programmazione II Lezione 6 5/11/2010

50 Analisi di Hello World Java Riga 1: dichiarazione della classe Hello; Riga 2: commento, ignorato dal compilatore. Un altra sintassi per i commenti é: / commento / Riga 3: dichiarazione del metodo main: un parametro, args, di tipo String[] (array di stringhe); args contiene gli argomenti (es., passati dalla riga di comando). Riga 4: stampa la stringa Hello World! sulla console: System: classe standard di Java; out: variabile associata alla classe System (contiene un riferimento ad un oggetto che rappresenta lo standard output); println: metodo di out per stampare una stringa (sullo standard output). 50/54 Programmazione II Lezione 6 5/11/2010

51 Java Dichiarazione di Variabili e Assegnamento Ogni variabile locale utilizzata in un programma deve essere dichiarata prima del suo uso: deve esserne indicato il tipo, cioè l insieme dei valori che potrà memorizzare e le operazioni possibili; <tipo> <ide >; // d i c h i a r a z i o n e <ide> = <espressione >; // assegnamento <tipo> <ide> = <espr >; // d i c h i a r a z i o n e e assegnamento Ad esempio: 1 i n t x ; 2 f l o a t phi = ; 3 String msg = c i a o La dichiarazione crea una associazione nell ambiente locale tra il nome della variabile e il valore: se non è inizializzata, viene associata ad un valore di default. 51/54 Programmazione II Lezione 6 5/11/2010

52 Tipi di Dato: Esempio Java Esempio: il tipo int: contiene i valori {..., 2, 1, 0, 1, 2, 3,... } fornisce le operazioni: + somma, * moltiplicazione, - sottrazione, / divisione intera, e ognuna di queste operazioni può essere applicata ad una coppia di valori int e ritorna un singolo valore int. 52/54 Programmazione II Lezione 6 5/11/2010

53 Java Dichiarazione di Variabili e Assegnamento: Esempio 1 i n t x = 1 0 ; 2 i n t y = 2 0 ; 3 x = y ; 4 x = x 3 ; Riga 1: dichiarazione della variable x di tipo int: a cui è assegnato il valore 10. Riga 2: dichiarazione della variable y di tipo int: a cui è assegnato il valore 20. Riga 3: assegnamento alla variabile x del valore associato alla variabile y: x assume il valore 20. Riga 4: assegnamento alla variabile x del valore di x * 3: x assume il valore /54 Programmazione II Lezione 6 5/11/2010

54 Riferimenti Java [1] Linguaggi di programmazione: principi e paradigmi (Cap. 4). Maurizio Gabbrielli, Simone Martini. [2] Core Java 2. Vol. 1: Fondamenti (Cap. 3). Horstmann Cay S., Cornell Gary. 54/54 Programmazione II Lezione 6 5/11/2010

Linguaggi di Programmazione

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

Dettagli

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

Dettagli

Nomi e Ambiente. Nicola Fanizzi. Linguaggi di Programmazione [010194] 20 apr, 2016. Dipartimento di Informatica Università degli Studi di Bari

Nomi e Ambiente. Nicola Fanizzi. Linguaggi di Programmazione [010194] 20 apr, 2016. Dipartimento di Informatica Università degli Studi di Bari Nomi e Ambiente Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 20 apr, 2016 Sommario 1 Nomi Definizione Astrazione Elementare Progettazione

Dettagli

Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010.

Programmazione 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

Dettagli

PROGRAMMAZIONE Nomi, binding, regole di visibilità (scope)

PROGRAMMAZIONE 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

Dettagli

Programmazione II. Lezione 12. Daniele Sgandurra 26/11/2010.

Programmazione II. Lezione 12. Daniele Sgandurra 26/11/2010. Programmazione II Lezione 12 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 26/11/2010 1/17 Programmazione II Lezione 12 26/11/2010 Sommario 1 2/17 Programmazione II Lezione 12 26/11/2010 Parte I 3/17

Dettagli

Strutture dati nel supporto a run time

Strutture 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

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

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

Dettagli

Programmazione II. Lezione 9. Daniele Sgandurra 16/11/2010.

Programmazione 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

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

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

Dettagli

Nomi. Nomi e ambiente. Nomi e oggetti denotabili. Sintassi

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

Dettagli

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

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Programma Introduzione al calcolatore e Java Linguaggio Java, basi e

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE 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

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE 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

Dettagli

Introduzione a Java. 1 Java: Introduzione. Sommario. Concetti di base. Classi e oggetti. Compilazione ed esecuzione. Sommario

Introduzione a Java. 1 Java: Introduzione. Sommario. Concetti di base. Classi e oggetti. Compilazione ed esecuzione. Sommario a Java Java è un linguaggio object-oriented, con alcune caratteristiche fortemente tipato (strongly typed): ogni espressione ha un tipo, che il compilatore usa per controllare la correttezza delle operazioni

Dettagli

Introduzione a Java. Giovanni Pardini Dipartimento di Informatica Università di Pisa.

Introduzione a Java. Giovanni Pardini Dipartimento di Informatica Università di Pisa. a Java 1 Giovanni Pardini pardinig@di.unipi.it www.di.unipi.it/~pardinig Dipartimento di Informatica Università di Pisa 30 novembre 2009 1 2 3 1 Sintassi di base Hello World! Blocchi e variabili 2 Sintassi

Dettagli

Nomi. Nomi e ambiente. Nomi e oggetti denotabili. Esempio

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

Dettagli

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

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

Informatica 3. LEZIONE 2: Sintassi e semantica

Informatica 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

Dettagli

Nomi, binding e regole di scope

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

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo 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

Dettagli

Informatica 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. 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:

Dettagli

Programmazione II. Lezione 10. Daniele Sgandurra 19/11/2010.

Programmazione II. Lezione 10. Daniele Sgandurra 19/11/2010. Programmazione II Lezione 10 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 19/11/2010 1/37 Programmazione II Lezione 10 19/11/2010 Sommario 1 Esercitazione: i File JAR 2 Java 2/37 Programmazione II Lezione

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Introduzione a Java Creare, compilare, eseguire e distribuire un programma scritto in Java Outline Applicazione di esempio: Hello World! Ciclo di sviluppo Netbeans Compilare

Dettagli

Capitolo 1. Introduzione. Cay S. Horstmann Concetti di informatica e fondamenti di Java

Capitolo 1. Introduzione. Cay S. Horstmann Concetti di informatica e fondamenti di Java Capitolo 1 Introduzione Cay S. Horstmann Concetti di informatica e fondamenti di Java Obiettivi del capitolo Capire il significato dell attività di programmazione Imparare a riconoscere le componenti più

Dettagli

Nomi, binding e regole di scope

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

Dettagli

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

Dettagli

Gestione della Memoria

Gestione 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

Dettagli

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto Usare e costruire oggetti Variabili e Oggetti Lo spazio di memoria di Java Le API di Java Gli oggetti sono entità di un programma che si possono manipolare invocando i metodi System.out oggetto della classe

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

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

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

C funzioni à scope di variabili

C funzioni à scope di variabili C funzioni à scope di variabili Per questo motivo il parametro di una function può avere lo stesso nome del parametro effettivo del processo chiamante. Possiamo definire anche delle variabili globali e

Dettagli

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr.

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr. Programmazione A.A. 2002-03 I Costrutti di base ( Lezione XII, parte I ) Gestione dell input Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

Fondamenti di Informatica. Ingegneria elettronica

Fondamenti di Informatica. Ingegneria elettronica Fondamenti di Informatica Ingegneria elettronica Prima esercitazione Cecilia Catalano Sistema Operativo Il S.O. è costituito da un insieme di programmi che permettono di utilizzare e gestire tutte le risorse

Dettagli

Programmazione II. Lezione 13. Daniele Sgandurra 3/12/2010.

Programmazione II. Lezione 13. Daniele Sgandurra 3/12/2010. Programmazione II Lezione 13 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 3/12/2010 1/29 Programmazione II Lezione 13 3/12/2010 Sommario 1 Strutturare il Controllo 2 Java Oggetti e Classi 2/29 Programmazione

Dettagli

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini Primi concetti di Java Lorenzo Bettini OO puro Java è object-oriented puro Non come il C+ + (OO ibrido) Per compatibilità col C Ogni cosa è un oggetto Gli oggetti si manipolano tramite riferimenti String

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura

Dettagli

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile

Dettagli

Corso di Linguaggi di Programmazione

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

Dettagli

I Metodi. Fondamenti di Informatica A-K

I Metodi. Fondamenti di Informatica A-K I Metodi Fondamenti di Informatica A-K Esercitazione 3 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso I metodi: concetti di base Stringhe ed array Classi e oggetti, costruttori,

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse

Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse Fondamenti di informatica T-1 (A K) Esercitazione 6: Eclipse AA 2018/2019 Tutor lorenzo.rosa@unibo.it 2 Esercitazione 6 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso Eclipse

Dettagli

Unità A1 Funzioni MODULO Java 2

Unità A1 Funzioni MODULO Java 2 Dare una breve descrizione dei termini introdotti: (A) CONOSCENZA TERMINOLOGICA Passaggio parametri per valore Passaggio parametri per indirizzo Parametri formali e attuali Regole di visibilità Ambiente

Dettagli

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011.

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011. Programmazione II Lezione 18 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 11/1/2011 1/26 Programmazione II Lezione 18 11/1/2011 Sommario 1 2/26 Programmazione II Lezione 18 11/1/2011 Parte I 3/26 Programmazione

Dettagli

Debug di un programma

Debug di un programma Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal

Dettagli

Spazio di indirizzamento virtuale

Spazio di indirizzamento virtuale Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti 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

Dettagli

Cosa fare prima di iniziare. Laboratorio Primo Impatto. Hello World. L editor. Compilazione da riga di comando. Compilazione da riga di comando

Cosa fare prima di iniziare. Laboratorio Primo Impatto. Hello World. L editor. Compilazione da riga di comando. Compilazione da riga di comando Cosa fare prima di iniziare Laboratorio Primo Impatto Scrivere un semplice programma I primi concetti Effettuare il login scegliendo il sistema operativo preferito Localizzare la directory (cartella) in

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica Componenti versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Usare e costruire oggetti. Concetti Fondamentali. Interfaccia Pubblica di una. Application Program Interface

Usare e costruire oggetti. Concetti Fondamentali. Interfaccia Pubblica di una. Application Program Interface Concetti Fondamentali Interfaccia pubblica di una classe Le API di Java Lo spazio di memoria della macchina astratta Java Blocchi e sottoblocchi Variabili di frame e loro visibilità Importazioni di classi

Dettagli

Gestione della memoria

Gestione della memoria Gestione della memoria Stack di attivazione, Heap Stack di attivazione, Heap Gestione della memoria 1 / 52 La gestione della memoria Come il compilatore-interprete, organizza i dati necessari all esecuzione

Dettagli

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine 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

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Variabili di tipo Array Array bidimensionali Metodi statici Metodi statici della classe Math Esercizi 13/04/2011 Corso di Fondamenti

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Lezione 1 e 2 Fabio Scotti Laboratorio di programmazione per la sicurezza 1 Lezione 1 e 2 Fabio Scotti Laboratorio di programmazione per la sicurezza Introduzione al linguaggio C e significato della compilazione

Dettagli

Linguaggi di alto livello, compilatori e interpreti

Linguaggi 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

Dettagli

Lezione 6. Visibilità degli identificatori e tempo di vita degli oggetti

Lezione 6. Visibilità degli identificatori e tempo di vita degli oggetti Lezione 6 Visibilità degli identificatori e tempo di vita degli oggetti Programmazione I Paolo Valente - 2009/2010 Ripasso dichiarazioni oggetti Finora abbiamo scritto le dichiarazioni di variabili e costanti

Dettagli

Corso di Linguaggi di Programmazione. Organizzazione di un processo in memoria (1)

Corso 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

Dettagli

La Gestione della Memoria. Carla Binucci e Walter Didimo

La Gestione della Memoria. Carla Binucci e Walter Didimo La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Array Array monodimensionali Array bidimensionali Esercizi 16/01/2013 2 ARRAY Gli array sono oggetti utilizzati in Java per memorizzare

Dettagli

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando Eclipse: Cos è? Utilizzare Eclipse: Creare un progetto Creare file sorgenti nel progetto Compilare Lanciare il programma Strumenti alternativi agli IDE La linea di comando su Linux Esplorare e modificare

Dettagli

Linguaggi di Programmazione I Lezione 10

Linguaggi di Programmazione I Lezione 10 Linguaggi di Programmazione I Lezione 10 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 8 maggio 2008 Array 3 Dichiarazione...........................................................

Dettagli

Programmazione II. Lezione 5. Daniele Sgandurra 2/11/2010.

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

Dettagli

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

Gestione della memoria in Java. Emilio Di Giacomo e Walter Didimo

Gestione della memoria in Java. Emilio Di Giacomo e Walter Didimo Gestione della memoria in Java Emilio Di Giacomo e Walter Didimo Gestione della memoria In questa lezione descriveremo un modello runtime (cioè a tempo di esecuzione) di gestione della memoria in Java

Dettagli

Programmazione in rete e laboratorio a.a. 2002/03

Programmazione in rete e laboratorio a.a. 2002/03 Programmazione in rete e laboratorio a.a. 2002/03 Scopo del corso: Presentare gli aspetti principali della programmazione ad oggetti Introduzione a JAVA Alberto Martelli Introdurre il linguaggio Java Realizzare

Dettagli

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in

passaggio 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

Dettagli

Visibilità 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) 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

Dettagli

ASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1

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

Dettagli

Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java

Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java Prof.Angela Bonifati 1 Istruzione while int vet1[] = new int[20]; int vet2[] = new int[20]; for(int

Dettagli

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami. Consideriamo l esercizio assegnato la scorsa lezione per rappresentare il libretto di uno studente. Per memorizzare i dati si sono utilizzati tre array: char* nomiesami[max ESAMI] Array dei nomi degli

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Strutture di Controllo Parte 4 Conclusioni G. Mecca M. Samela Università della Basilicata Strutture di Controllo >> Sommario Sommario Ricapitolazione Alcune

Dettagli

Marco Faella Introduzione al corso

Marco 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

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI 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

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori

Dettagli

Modulo 2: Strutture fondamentali della programmazione Java

Modulo 2: Strutture fondamentali della programmazione Java Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T4 A1 Allocazione dinamica 1 Prerequisiti Programmazione elementare Programmazione ad oggetti Dati semplici e strutturati 2 1 Introduzione In molti problemi capita di non conoscere

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: C# versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca

Dettagli

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi

Dettagli

Sviluppare un programma in FORTRAN

Sviluppare un programma in FORTRAN Sviluppare un programma in FORTRAN Scrivere il file sorgente Editor di testo (emacs, vi, notepad, etc) Compilare Compilatore (ifort, gfortran, etc) Eseguire il programma Riga di comando, doppio click,

Dettagli

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22 Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)

Dettagli

Esonero di Informatica I. Ingegneria Medica

Esonero di Informatica I. Ingegneria Medica Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

Cosa fare prima di iniziare. Laboratorio Primo Impatto. Hello World. L editor

Cosa fare prima di iniziare. Laboratorio Primo Impatto. Hello World. L editor Laboratorio Primo Impatto Scrivere un semplice programma Compilare Avviare la JVM Convenzioni sul codice Classi, oggetti, metodi Errori di compilazione Cosa fare prima di iniziare Effettuare il login scegliendo

Dettagli