Scope, Memoria e Tabella dei Simboli

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Scope, Memoria e Tabella dei Simboli"

Transcript

1 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 evoluto all equivalente scritto in linguaggio macchina. Attraverso l uso della tabella dei simboli è possibile, infatti, risolvere correttamente tutti i riferimenti ai nomi introdotti dal programmatore, risalendo così all opportuno oggetto denotato. Nel nostro linguaggio di riferimento che supporta scope statico e dinamico, l uso di funzioni e procedure, nonché diverse tipologie di passaggio dei parametri, la tabella dei simboli dovrà contenere il seguente insieme di informazioni fondamentali: per ogni nome, la natura dell oggetto denotato, ovvero, variabile, parametro, funzione o procedura; per ogni variabile, il suo tipo e l offset 1 nell RdA del blocco in cui è definita; per ogni parametro, il suo tipo, la modalità di passaggio e l offset; per ogni funzione o procedura, l indirizzo della locazione di memoria nella zona codice alla quale inizia la sua traduzione. Per comodità d uso, implementeremo la tabella dei simboli dividendo l insieme dei nomi nei vari ambienti locali che li definiscono. In presenza di riferimenti a nomi non appartenenti all ambiente locale di un blocco, sarà necessario cercare in nome nell ambiente locale dei blocchi in cui il blocco attivo in un determinato momento risulta annidato. Al fine di implementare correttamente lo scope statico e dinamico è necessario, quindi, conoscere quanti livelli di annodamento ci sono tra il blocco attivo e quello che definisce il nome utilizzato. Mentre questa informazione può essere calcolata staticamente (e quindi opportunamente memorizzata nella tabella dei simboli) in regime di scope statico, essa andrà calcolata dinamicamente in regime di scope dinamico tenendo traccia del flusso di esecuzione del programma. Illustriamo la nostra idea di tabella di simboli e l uso che ne fa l interprete attraverso il seguente esempio di programma C con scope statico. int x = 0; void pippo(reference int a) { int b; a = x + 3; b = pluto(a); 1 L offset di una variabile definita all interno di un certo blocco è il numero di locazioni di memoria che bisogna aggiungere alla locazione di inizio dell RdA associato al blocco per trovare la locazione in cui è memorizzata la variabile in questione.

2 write(b); } int pluto(int a) { a = a + 3; write(a); return (a * a); } int main() { int x = 2; pippo(x); write(x); return 0; } La memoria codice associate al programma in esame sarà la seguente: Loc. 0: x = 0 Loc. 1: main() Loc. 2: fine_programma Loc. 3: x = 2 Loc. 4: pippo(x) Loc. 5: write(x) Loc. 6: return 0 Loc. 7: fine_main Loc. 8: a = x + 3 Loc. 9: b = pluto(a) Loc. 10: write(b) Loc. 11: fine_pippo Loc. 12: a = a + 3 Loc. 13: write(a) Loc. 14: return(a * a) Loc. 15: fine_pluto Possiamo adesso calcolare gli offset delle variabili all interno dei rispettivi RdA. Per i blocchi anonimi, le variabili locali vengono memorizzate a partire dall offset 1, dato che l offset 0 è utilizzato per il puntatore di catena dinamica. Per i blocchi con nome, i parametri vengono memorizzati a partire dall offset 3 o 4 a seconda che si tratti di blocco associato a procedura o funzione. Le variabili locali vengono memorizzate a seguire. Abbiamo così la seguente tabella dei simboli organizzata per ambienti locali.

3 Tabella dei simboli Ambiente Globale (Livello 0): x intero 1 main funzione 3 pippo procedura 8 pluto funzione 12 Ambiente Locale di Main (Livello 1): x intero 4 Ambiente Locale di Pippo (Livello 1): a intero 3 parametro per riferimento b intero 4 Ambiente Locale di Pluto (Livello 1): a intero 4 parametro per valore Consideriamo, ora, la gestione della memoria relativa all esecuzione del programma. All inizio la pila è vuota: sia il puntatore al top della pila che quello all RdA attivo valgono 0. Si attiva il blocco relativo al programma principale che richiede 3 locazioni di memoria (PCD + variabile x + valore ritornato da main). La situazione in memoria è dunque la seguente: Loc. 1:? (x) Il puntatore al top della pila passa da 0 a 3. Si esegue adesso l istruzione in locazione 0 che fa x = 0. Siamo nell ambiente globale, la tabella dei simboli ci dice che a x è associata la locazione a offset 1. Quindi devo porre a 0 il valore contenuto nella locazione ottenuta sommando il valore 1 al valore del puntatore all RdA attivo. Quest ultimo è 0, quindi pongo a 0 il valore della locazione 1, ottenendo Passiamo all esecuzione dell istruzione alla locazione 1 che chiama main(). Dobbiamo attivare quindi un nuovo RdA. Servono 5 locazioni (PCD + PCS + Indirizzo di ritorno + Indirizzo del risultato + variabile x). Il valore di PCD viene ottenuto copiando il valore del puntatore all RdA attivo che vale 0. Poiché il blocco che chiama main è anche il blocco che definisce main anche il valore di PCS viene determinato alla stessa maniera. Siccome stiamo processando l istruzione alla locazione 1, l indirizzo di ritorno sarà quello dell istruzione successiva, quindi 2. Infine, l indirizzo del risultato è quello predisposto a offset 2 nell RdA attualmente

4 attivo. Il puntatore all RdA attivo vale sempre 0 e sommando 2 otteniamo 2 che sarà l indirizzo del risultato. Otteniamo: Loc. 7:? (x) A questo punto si può passare il controllo alla funzione main. La tabella dei simboli ci dice che ciò equivale a saltare all istruzione contenuta nella locazione 3. Prima, però, attiviamo il blocco appena creato: il puntatore all RdA attivo viene posto uguale al valore del puntatore al top della pila, cioè 3, mentre quest ultimo viene incrementato di 5 assumendo il valore 8. L esecuzione dell istruzione alla locazione 3 prevede x = 2. Siamo in main, la tabella dei simboli ci dice che esiste una x definita localmente che troviamo a offset 4. Sommando 4 al valore del puntatore all Rda attivo otteniamo 7 e quindi memorizziamo 2 nella locazione 7, ottenendo Loc. 7: 2 (x) Passiamo a eseguire l istruzione alla locazione 4 che chiama pippo(x), il ché comporta la creazione di un nuovo blocco. Occorrono 5 locazioni (PCD + PCS + Indirizzo di ritorno + parametro a + variabile b). Il PCD è uguale al valore del puntatore all RdA attivo, ovvero 3. Per il PCS, siccome chi chiama pippo non è il blocco che lo definisce, dobbiamo calcolare quanti livelli ci sono tra chi chiama pippo, cioè main, e chi lo definisce, cioè il programma principale. Attraverso la tabella dei simboli otteniamo 1, quindi otteniamo PCS risalendo una volta la catena statica. Il PCS del blocco attualmente attivo vale 0, quindi poniamo a 0 il PCS del blocco che stiamo creando. L indirizzo di ritorno è chiaramente 5. Infine dobbiamo passare x per riferimento: x si trova a offset 4 dell RdA attivo, ovvero alla locazione 7. Poniamo quindi il valore del parametro a di pippo uguale alla locazione di memoria di x, cioè 7. La situazione in memoria diventa la seguente:

5 Loc. 7: 2 (x) Loc. 12:? (b) Il controllo passa all istruzione in locazione 8 e si attiva il blocco ponendo il puntatore all RdA attivo a 8 e incrementando quello al top della pila da 8 a 13. L istruzione in questione fa a = x +3. La variabile x non è presente nell ambiente locale di pippo, ma lo è nell ambiente globale in cui pippo è annidata di un livello. Dobbiamo quindi risalire di una volta la catena statica e prendere il valore a offset 1, ovvero prendere il valore alla locazione 1 che è 0. Dobbiamo quindi fare a = 3 e siccome a è passata per riferimento, questo significa porre a 3 il valore della locazione contenuta alla locazione 11 (puntatore RdA attivo = 8 + offset di a = 3). Otteniamo Loc. 12:? (b) Si esegue ora l istruzione alla locazione 9 che comporta la chiamata di pluto(a). L RdA di pluto necessita di 5 locazioni (PCD + PCS + Indirizzo di ritorno + Indirizzo del risultato + parametro a). Il PCD è uguale al valore del puntatore all RdA attivo, ovvero 8. Per il PCS, siccome chi chiama pluto non è il blocco che lo definisce, dobbiamo calcolare quanti livelli ci sono tra chi chiama pluto, cioè pippo, e chi lo definisce, cioè il programma principale. Attraverso la tabella dei simboli otteniamo 1, quindi otteniamo PCS risalendo una volta la catena statica. Il PCS del

6 blocco attualmente attivo vale 0, quindi poniamo a 0 il PCS del blocco che stiamo creando. L indirizzo di ritorno è chiaramente 10. L indirizzo del risultato è 12, ottenuto aggiungendo l offset di b al valore del puntatore all RdA attivo. Infine dobbiamo passare a per valore: a si trova a offset 3 dell RdA attivo, ma siccome è, a sua volta, un parametro a cui si accede per riferimento, dobbiamo passare il contenuto della locazione 7, cioè 3. La situazione in memoria diventa la seguente: Loc. 12:? (b) Loc. 13: 8 (PCD) Loc. 14: 0 (PCS) Loc. 15: 10 (Ind. di ritorno) Loc. 16: 12 (Ind. del risultato) Loc. 17: 3 (a) Il puntatore all RdA attivo diventa 13, mentre quello al top della pila passa a 18 e il controllo passa all istruzione alla locazione 12. L esecuzione delle istruzioni dalla locazione 12 alla 14 pone a 6 il valore della locazione 17, ne stampa il valore e poi restituisce 36 che viene memorizzato nella locazione 12. Si ha così Loc. 12: 36 (b)

7 Loc. 13: 8 (PCD) Loc. 14: 0 (PCS) Loc. 15: 10 (Ind. di ritorno) Loc. 16: 12 (Ind. del risultato) Loc. 17: 6 (a) Con l istruzione alla locazione 15 si termina pluto, ovvero si pone il puntatore al top della pila uguale al valore di quello dell RdA attivo, cioè 13, mentre quest ultimo viene aggiornato con il valore del PCD, ovvero 8 e si passa il controllo all indirizzo di ritorno 10. Loc. 12: 36 (b) Con le istruzioni alle locazioni 10 e 11 si stampa b che vale 36 e quindi termina anche pippo. Si pone il puntatore al top della pila uguale al valore di quello dell RdA attivo, cioè 8, mentre quest ultimo viene aggiornato con il valore del PCD, ovvero 3 e si passa il controllo all indirizzo di ritorno 5. Si stampa 3, si restituisce 0 che viene memorizzato in locazione 2 e termina anche main. Si pone il puntatore al top della pila uguale al valore di quello dell RdA attivo, cioè 3, mentre quest ultimo viene aggiornato con il valore del PCD, ovvero 0 e si passa il controllo all indirizzo di ritorno 2.

8 Loc. 2: 0 (main()) Con l istruzione di fine programma anche l ultimo RdA viene cancellato e la pila si svuota.

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

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

Dettagli

Esercitazioni di Informatica 3

Esercitazioni 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

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

Gestione della memoria

Gestione della memoria Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto

Dettagli

Puntatori (in C) Emilio Di Giacomo

Puntatori (in C) Emilio Di Giacomo Puntatori (in C) Emilio Di Giacomo Puntatori In questa lezione parleremo di uno dei costrutti più potenti del C: i puntatori I puntatori vengono utilizzati per realizzare il passaggio di parametri per

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione ai puntatori in C Definizione Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

L'allocazione dinamica della memoria

L'allocazione dinamica della memoria L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria

Dettagli

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Dettagli

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Array. Parte 7. 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

Dettagli

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

I puntatori (richiamo)

I puntatori (richiamo) I puntatori (richiamo) Puntatori Un puntatore è una variabile che assume come valore un indirizzo in memoria L uso dei puntatori permette di: mantenere riferimenti ad altre variabili (è un punto di accesso

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

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

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

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

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

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

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

ACSO Programmazione di Sistema e Concorrente

ACSO Programmazione di Sistema e Concorrente ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività

Dettagli

Analisi ammortizzata (Tarjan in 1985)

Analisi ammortizzata (Tarjan in 1985) In questa lezione Analisi della complessità di una sequenza di operazioni di estrazione e inserimento in una tabella memorizzata su un array, usando l analisi ammortizzata. Analisi ammortizzata (Tarjan

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

Esercizi sui sistemi di equazioni lineari.

Esercizi sui sistemi di equazioni lineari. Esercizi sui sistemi di equazioni lineari Risolvere il sistema di equazioni lineari x y + z 6 x + y z x y z Si tratta di un sistema di tre equazioni lineari nelle tre incognite x, y e z Poichè m n, la

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

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

Dettagli

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013 Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità

Dettagli

Funzioni implicite - Esercizi svolti

Funzioni implicite - Esercizi svolti Funzioni implicite - Esercizi svolti Esercizio. È data la funzione di due variabili F (x, y) = y(e y + x) log x. Verificare che esiste un intorno I in R del punto di ascissa x 0 = sul quale è definita

Dettagli

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=

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

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

Mini-dispensa sui puntatori in C

Mini-dispensa sui puntatori in C Mini-dispensa sui puntatori in C P. Zavarise Versione 1 ottobre 013 1 Valore e indirizzo di una variabile Ripassiamo il significato di dal punto di vista del programmatore. int a=; Viene creata una variabile

Dettagli

I punti di inizio e di fine della spezzata prendono il nome di estremi della spezzata. lati

I punti di inizio e di fine della spezzata prendono il nome di estremi della spezzata. lati I Poligoni Spezzata C A cosa vi fa pensare una spezzata? Qualcosa che si rompe in tanti pezzi A me dà l idea di un spaghetto che si rompe Se noi rompiamo uno spaghetto e manteniamo uniti i vari pezzi per

Dettagli

Le equazioni di I grado

Le equazioni di I grado Le equazioni di I grado ITIS Feltrinelli anno scolastico 007-008 R. Folgieri 007-008 1 Le equazioni abbiamo una uguaglianza tra due quantità (espressioni algebriche, perché nei due termini ci possono essere

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

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

Lezione 8. Visibilità degli identifcatori e tempo di vita degli oggetti

Lezione 8. Visibilità degli identifcatori e tempo di vita degli oggetti Lezione 8 Visibilità degli identifcatori e tempo di vita degli oggetti Programmazione I Paolo Valente - 2014/2015 Ripasso dichiarazioni oggetti Finora abbiamo scritto le dichiarazioni di variabili e costanti

Dettagli

Passare argomenti al programma

Passare argomenti al programma Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di

Dettagli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo

Dettagli

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi Fondamenti di Informatica T-1 modulo 2 Laboratorio 10: preparazione alla prova d esame 1 Esercizio 1 - Gestione degli impegni Gli impegni giornalieri dei dipendenti di un azienda devono essere aggiornati

Dettagli

Allocazione Dinamica della Memoria

Allocazione Dinamica della Memoria Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando

Dettagli

Esercizi per la preparazione. Alessandra Giordani Lunedì 13 maggio 2013

Esercizi per la preparazione. Alessandra Giordani Lunedì 13 maggio 2013 Esercizi per la preparazione all esame pratico Alessandra Giordani agiordani@disi.unitn.it Lunedì 13 maggio 2013 http://disi.unitn.it/~agiordani/ Date Appelli 18 giugno 2013 Pratica: 9.00-13.00 Aula pc

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che restituiscono anche codici di errore

Dettagli

FUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE

FUNZIONI 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

3. Terza esercitazione autoguidata: progetto gestione voli

3. Terza esercitazione autoguidata: progetto gestione voli 9 3. Terza esercitazione autoguidata: progetto gestione voli Qui ci occupiamo di scrivere un programma abbastanza lungo, dedicato alla gestione di una tabella di dati. Una tabella e una struttura dati

Dettagli

Il concetto di Package

Il concetto di Package Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2008-2009 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 19 - Package in Java 1 Il concetto

Dettagli

Obiettivi di questa esercitazione

Obiettivi di questa esercitazione Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che restituiscono anche codici di errore

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modelli di interazione Modello a memoria comune (ambiente globale) Modello a scambio di messaggi (ambiente locale, message passing) Modello a memoria comune Il sistema

Dettagli

Fondamenti di Informatica T. Linguaggio C: i puntatori

Fondamenti di Informatica T. Linguaggio C: i puntatori Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme

Dettagli

Aritmetica dei Calcolatori 3

Aritmetica dei Calcolatori 3 Laboratorio di Architettura 31 maggio 2013 1 Numeri Floating Point 2 Standard IEEE754 3 Esercitazione Numeri Floating Point (FP) Il termine Floating Point (virgola mobile) indica la codifica usata per

Dettagli

Ottenere una modifica del parametro attuale

Ottenere una modifica del parametro attuale Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)

Dettagli

La gestione della memoria dinamica Heap

La gestione della memoria dinamica Heap Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti

Dettagli

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come ragiona il computer. Problemi e algoritmi Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema

Dettagli

Sotto programmi - Funzioni in C

Sotto programmi - Funzioni in C Sotto programmi - Funzioni in C R. Gallo Settembre 2009 Sommario Le funzioni C/C++ sono l'implementazione in codice C/C++ di uno strumento presente in tutti i linguaggi di programmazione: i sottoprogrammi

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

ESERCIZI SUI NUMERI COMPLESSI

ESERCIZI SUI NUMERI COMPLESSI ESERCIZI SUI NUMERI COMPLESSI Esercizio Calcolare il modulo e l argomento principale del seguente numero complesso: z = ) 5 + i i) 7 Per risolvere l esercizio proposto applichiamo le formule per il calcolo

Dettagli

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Linguaggio 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

Dettagli

Architettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente

Architettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente Architettura dei calcolatori e sistemi operativi M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente 18.01.2015 Architettura Intel x64 Lo spazio di indirizzamento virtuale

Dettagli

static dynamic random access memory

static dynamic random access memory LA MEMORIA SRAM e D R A M static dynamic random access memory SRAM: unità che memorizza un gran numero di parole in un insieme di flip-flop, opportunamente connessi, mediante un sistema di indirizzamento

Dettagli

Precorso di Matematica

Precorso di Matematica UNIVERSITÀ DEGLI STUDI ROMA TRE FACOLTA DI ARCHITETTURA Precorso di Matematica Anna Scaramuzza Anno Accademico 2005-2006 4-10 Ottobre 2005 INDICE 1. ALGEBRA................................. 3 1.1 Equazioni

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

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

R. Capone Analisi Matematica Limiti di una funzione reale di variabile reale ESERCIZI SUI LIMITI DI FUNZIONE ( )

R. Capone Analisi Matematica Limiti di una funzione reale di variabile reale ESERCIZI SUI LIMITI DI FUNZIONE ( ) Esercizio proposto N 1 Verificare che ESERCIZI SUI LIMITI DI FUNZIONE Si ricordi la definizione di ite finito in un punto: Pertanto, applicando la definizione al caso concreto, si ha: o, ciò che è lo stesso:

Dettagli

Programmazione (imperativa)

Programmazione (imperativa) Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00

Dettagli

Automi a Pila e Grammatiche Libere dal Contesto. Automi a Pila e Grammatiche Libere dal Contesto

Automi a Pila e Grammatiche Libere dal Contesto. Automi a Pila e Grammatiche Libere dal Contesto utomi a Pila Un automa a pila (PDA) e una estensione degli automi a stati finiti, che ha una memoria (una pila) Vedremo due modi equivalenti per definire il linguaggio accettato da un PDA Vedremo che la

Dettagli

Lezione 8. Sottoprogrammi

Lezione 8. Sottoprogrammi Lezione 8 Il linguaggio C: Sottoprogrammi e Funzioni I puntatori Input/Output su file Sottoprogrammi Per risolvere un problema si può scomporlo in problemi più semplici e comporre le loro soluzioni in

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

AUTOMA A STATI FINITI

AUTOMA A STATI FINITI Gli Automi Un Automa è un dispositivo, o un suo modello in forma di macchina sequenziale, creato per eseguire un particolare compito, che può trovarsi in diverse configurazioni più o meno complesse caratterizzate

Dettagli

Secondo parziale di Matematica per l Economia (esempio)

Secondo parziale di Matematica per l Economia (esempio) Corso di Laurea in Economia e Management Secondo parziale di Matematica per l Economia (esempio) lettere E-Z, a.a. 206 207 prof. Gianluca Amato Regole generali Si svolga il primo esercizio e, a scelta

Dettagli

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina

Dettagli

Array e puntatori in C

Array e puntatori in C Array e puntatori in C Diapositive adattate dalle omonime create dalla Dottoressa di Ricerca Giovanna Melideo per il corso di Laboratorio di Algoritmi e Strutture Dati 10/05/2005 LP2-04/05 - Appunti di

Dettagli

1 Definizione di sistema lineare omogeneo.

1 Definizione di sistema lineare omogeneo. Geometria Lingotto. LeLing1: Sistemi lineari omogenei. Ārgomenti svolti: Definizione di sistema lineare omogeneo. La matrice associata. Concetto di soluzione. Sistemi equivalenti. Operazioni elementari

Dettagli

1 Il Paradigma ad Oggetti

1 Il Paradigma ad Oggetti 1 Il Paradigma ad Oggetti 1.1 Mini-Java In questa sezione introduciamo un sottoinsieme molto elementare del linguaggio ad oggetti Java, che chiamiamo Mini-Java. Nel linguaggio Mini-Java abbiamo incluso

Dettagli

Informatica! Appunti dal laboratorio 1!

Informatica! Appunti dal laboratorio 1! Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti

Dettagli

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi Linguaggi Regolari e Linguaggi Liberi Linguaggi regolari Potere espressivo degli automi Costruzione di una grammatica equivalente a un automa Grammatiche regolari Potere espressivo delle grammatiche 1

Dettagli

Esercizi Capitolo 7 - Hash

Esercizi Capitolo 7 - Hash Esercizi Capitolo 7 - Hash Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive

Dettagli

Subtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo

Subtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo Subtype Polymorphism Interfacce e subtype polimorfismo Tipi, sottotipi e conversioni di tipo Polimorfismo e dinamic dispatch Conversioni di tipo Variabile: locazione con un tipo associato Tipo della variabile

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

Anno 4 Matrice inversa

Anno 4 Matrice inversa Anno 4 Matrice inversa 1 Introduzione In questa lezione parleremo della matrice inversa di una matrice quadrata: definizione metodo per individuarla Al termine della lezione sarai in grado di: descrivere

Dettagli

Tempo di vita e scope delle variabili

Tempo di vita e scope delle variabili Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):

Dettagli

Equazione esponenziale a x = b con 0<a<1 oppure a>1; x R; b>0

Equazione esponenziale a x = b con 0<a<1 oppure a>1; x R; b>0 Equazione esponenziale a x = b con 00 Proprietà delle potenze: a n. b n = ( a. b ) n a n : b n = ( a : b ) n a n. a m = a n+m a n : a m = a n-m ( a n ) m = a n a n/m n a = a -n/m

Dettagli

Esercitazioni di Geometria A: curve algebriche

Esercitazioni di Geometria A: curve algebriche Esercitazioni di Geometria A: curve algebriche 24-25 maggio 2016 Esercizio 1 Sia P 2 il piano proiettivo complesso munito delle coordinate proiettive (x 0 : x 1 : x 2 ). Sia r la retta proiettiva di equazione

Dettagli

Il C nel C++: Funzioni

Il C nel C++: Funzioni Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita

Dettagli

1 Equazioni parametriche e cartesiane di sottospazi affini di R n

1 Equazioni parametriche e cartesiane di sottospazi affini di R n 2 Trapani Dispensa di Geometria, Equazioni parametriche e cartesiane di sottospazi affini di R n Un sottospazio affine Σ di R n e il traslato di un sottospazio vettoriale. Cioe esiste un sottospazio vettoriale

Dettagli

Esercizi Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi Array. Parte 7. 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

Dettagli

Funzioni reali di variabile reale

Funzioni reali di variabile reale Funzioni reali di variabile reale Lezione per Studenti di Agraria Università di Bologna (Università di Bologna) Funzioni reali di variabile reale 1 / 50 Funzioni Definizione Sia A un sottoinsieme di R.

Dettagli

I termini dell operazione sono: la base, l esponente e il valore della potenza: DOVE 4 è la base 3 è l esponente 64 è il valore della potenza

I termini dell operazione sono: la base, l esponente e il valore della potenza: DOVE 4 è la base 3 è l esponente 64 è il valore della potenza LA RADICE QUADRATA I termini dell operazione sono: la base, l esponente e il valore della potenza: DOVE 4 è la base 3 è l esponente 64 è il valore della potenza L estrazione di radice, l operazione che

Dettagli

Esercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

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

Dettagli

Mutue posizioni della parabola con gli assi cartesiani

Mutue posizioni della parabola con gli assi cartesiani Mutue posizioni della parabola con gli assi cartesiani L equazione di una parabola generica è data da: Consideriamo l equazione che definisce i punti di intersezione della parabola con l asse delle ascisse

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

Esercizi di programmazione in linguaggio C English Dictionary

Esercizi di programmazione in linguaggio C English Dictionary Esercizi di programmazione in linguaggio C English Dictionary Il file di testo wordnet.txt contiene un certo numero di parole (word) e il corrispondente significato (meaning) secondo il seguente formato:

Dettagli

Equazioni di Primo grado

Equazioni di Primo grado Equazioni di Primo grado Definizioni Si dice equazione di primo grado un uguaglianza tra due espressioni algebriche verificata solo per un determinato valore della variabile x, detta incognita. Si chiama

Dettagli