Gestione della Memoria

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Gestione della Memoria"

Transcript

1 Gestione della Memoria Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 27 apr, 2016

2 Sommario 1 Tecniche di gestione Progetto della gestione della memoria Tipologie 2 Gestione statica 3 Gestione dinamica Blocchi Record di attivazione Gestione della pila Gestione dinamica con heap 4 Implementazione delle regole di scope Scope statico Puntatore di catena statica Display Scope dinamico Lista di associazioni CRT Gestione della Memoria 27 apr, / 54

3 Agenda 1 Tecniche di gestione Progetto della gestione della memoria Tipologie 2 Gestione statica 3 Gestione dinamica 4 Implementazione delle regole di scope Gestione della Memoria 27 apr, / 54

4 Progetto della gestione della memoria Programmi e dati Allocazione Durata Strutture dati ausiliarie per la gestione Gestione della Memoria 27 apr, / 54

5 Tipologie Macchina astratta di basso livello Gestione statica: dati e programmi in memoria prima dell esecuzione e fino alla fine Macchina astratta di alto livello Gestione dinamica: allocazione e deallocazione decisa durante l esecuzione Ricorsione: il compilatore non può stabilire un numero massimo di sottoprogrammi attivi Uso di una Pila (politica LIFO) Allocazione dinamica esplicita Uso dell Heap Gestione della Memoria 27 apr, / 54

6 Agenda 1 Tecniche di gestione 2 Gestione statica 3 Gestione dinamica 4 Implementazione delle regole di scope Gestione della Memoria 27 apr, / 54

7 Gestione statica Gestione ad opera del compilatore Tutti gli oggetti in una zona fissata Variabili globali Istruzioni del codice oggetto Costanti Tabelle interne prodotte dal compilatore: Gestione nomi Controllo sui tipi Garbage collection Linguaggio senza ricorsione Zona di memoria fissata per ogni sottoprogramma Variabili locali Parametri Indirizzo di ritorno Info di bookkepping Gestione della Memoria 27 apr, / 54

8 Gestione statica [... cont.] sottoprogramma p 2 sottoprogramma p 1 Informazioni di sistema Indirizzo di ritorno Parametri Informazioni di sistema Indirizzo di ritorno Parametri sottoprogramma p n Informazioni di sistema Indirizzo di ritorno Parametri Variabili Locali Variabili Locali Variabili Locali Risultati Intermedi Risultati Intermedi... Risultati Intermedi Gestione della Memoria 27 apr, / 54

9 Gestione statica Problema Osservazioni chiamate successive dello stesso sottoprogramma condividono la stessa area di memoria ricorsione: 1 int fib (int n) { 2 if (n == 0) return 1; 3 else if (n == 1) return 1; 4 else return fib(n-1) + fib(n-2); 5 } il numero di chiamate ricorsive dipende dall argomento n: servono più copie dell area di memoria dedicata ad ogni sottoprogramma (una per chiamata) Gestione della Memoria 27 apr, / 54

10 Agenda 1 Tecniche di gestione 2 Gestione statica 3 Gestione dinamica Blocchi Record di attivazione Gestione della pila Gestione dinamica con heap 4 Implementazione delle regole di scope Gestione della Memoria 27 apr, / 54

11 Gestione dinamica Rinviene dall uso della strutturazione a blocchi dei programmi In-line Corpi di sottoprogrammi Apertura e chiusura politica LIFO Gestione della Memoria 27 apr, / 54

12 Blocchi 1 A: { 2 int a = 1; 3 int b = 0; 4 B: { 5 int c = 3; 6 int b = 3; 7 } 8 b = a+1; 9 } Gestione della Memoria 27 apr, / 54

13 Blocchi [... cont.] b 0 a 1 A b 0 a 1 A b 2 a 1 A b 3 c 3 B Gestione della Memoria 27 apr, / 54

14 Record di attivazione Spazio di memoria allocato su pila (noto anche come frame) per i blocchi in-line per il corpo di sottoprogramma Associato ad ogni attivazione (dinamicamente) e non alla dichiarazione (staticamente) Pila di run-time (o di sistema) Utilizzato anche per linguaggi senza ricorsione per ottimizzare l occupazione della memoria rispetto ad una politica interamente di tipo statico Gestione della Memoria 27 apr, / 54

15 Record di attivazione [... cont.] Un RdA in-line contiene: Risultati intermedi calcoli complessi semplificati dal compilatore Variabili locali dichiarate nel blocco dimensioni note a compile-time Eccezione: dim. array dinamici gestite con (parte fissa, parte variabile) Puntatore catena dinamica ovvero link dinamico o di controllo punta al precedente RdA sulla pila necessario date le diverse dim. dei RdA RdA Blocco Inline Puntatore di catena statica / dinamica Variabili locali Variabili temporanee Gestione della Memoria 27 apr, / 54

16 Record di attivazione [... cont.] Nel RdA di sottoprogramma: Risultati intermedi Variabili locali Punt. di catena dinamica Punt. di catena statica se si adotta tale scope Indirizzo di ritorno prima istruzione da eseguire dopo l uscita Indirizzo del risultato nel RdA del CHIAMANTE per funzioni Parametri Valori dei parametri effettivi usati dal sottoprogramma RdA di Sottoprogramma Puntatore di catena dinamica Puntatore di catena statica Indirizzo di ritorno Indirizzo dei risultati Parametri Variabili locali Risultati intermedi Gestione della Memoria 27 apr, / 54

17 Record di attivazione [... cont.] Osservazioni La disposizione dei campi effettiva dipende dalle implementazioni Si usano offset per individuare i vari campi di norma, non compaiono identificatori di variabili (locali e non): il compilatore calcola gli offset Ottimizzazione Es.: salvataggio di informazioni nei registri anziché nel RdA Gestione della Memoria 27 apr, / 54

18 Gestione della pila Puntatore di RdA (o frame pointer): si riferisce all ambiente corrente Stack pointer dell inizio della memoria libera Operazioni su RdA Inserimento entrata in un blocco chiamata di sottoprogramma eliminazione uscita dal blocco uscita da sottoprogramma Gestione della Memoria 27 apr, / 54

19 Gestione della pila [... cont.] fondo della pila RdA RdA. puntatore RdA RdA cima della pila zona libera Gestione della Memoria 27 apr, / 54

20 Gestione della pila [... cont.] Codice aggiunto dal compilatore nel CHIAMANTE (o blocco esterno): sequenza di chiamata eseguita, in parte, prima della chiamata (entrata) eseguita, in parte, al ritorno dalla chiamata (uscita) nel CHIAMATO (o blocco interno): prologo eseguito subito dopo la chiamata (entrata) epilogo eseguito subito prima del ritorno dalla chiamata (uscita) Gestione della Memoria 27 apr, / 54

21 Azioni chiamata / entrata (seq. di chiamata + prologo): modifica del PC allocazione spazio su pila modifica puntatore RdA passaggio parametri salvataggio registri esecuzione codice inizializzazione Gestione della Memoria 27 apr, / 54

22 Azioni [... cont.] ritorno / uscita (ritorno controllo di chiamata + epilogo): ripristino del PC restituzione dei valori (funzioni) ripristino registri (+modifica puntatore RdA) esecuzione codice finalizzazione deallocazione spazio su pila Gestione della Memoria 27 apr, / 54

23 Gestione dinamica con heap Per linguaggi con allocazione esplicita della memoria C, C++, PASCAL,... non si può seguire una politica LIFO Si utilizza una zona di memoria diversa dallo stack: gestito con blocchi di dim. fissa di dim. variabile HEAP Gestione della Memoria 27 apr, / 54

24 Gestione dinamica con heap [... cont.] 1 int * p, * q; / * p,q puntatori a var. intere; val. NULL * / 2 p = malloc (sizeof (int)); / * alloca var. puntata da p * / 3 q = malloc (sizeof (int)); / * alloca var. puntata da q * / 4 * p = 0; / * dereferenzia ed assegna * / 5 * q = 1; / * dereferenzia ed assegna * / 6 free(p); / * dealloca la var. puntata * / 7 free(q); / * dealloca la var. puntata * / Gestione della Memoria 27 apr, / 54

25 Blocchi di dim. fissa Heap suddiviso in blocchi di dimensioni fisse e limitate collegati in una struttura di lista detta lista libera allocazione deallocazione il primo elemento della lista libera viene rimosso il puntatore a tale elemento viene restituito si aggiorna il puntatore al primo elemento della lista libera all elemento successivo il blocco liberato viene collegato in testa alla lista libera si aggiorna il puntatore all elemento successivo a quello aggiunto Gestione della Memoria 27 apr, / 54

26 Blocchi di dim. fissa [... cont.] inizio lista inizio lista.. Gestione della Memoria 27 apr, / 54

27 Blocchi di dim. variabile Dim. fissa: inadeguata per strutture grandi Esempio grande vettore di dim. variabili Blocchi di dim. variabile: gestione tesa ad ottimizzare (con opportuni compromessi) 1 l occupazione della memoria frammentazione interna porzione di blocco allocato inutilizzato esterna memoria libera sufficiente nel complesso, ma non in un unico blocco necessità di ricompattamento 2 l efficienza dell esecuzione basso numero di operazioni aggiuntive richieste (overhead) Gestione della Memoria 27 apr, / 54

28 Blocchi di dim. variabile [... cont.] LL x fabbisogno y x+y. frammentazione esterna Gestione della Memoria 27 apr, / 54

29 Unica lista libera Inizialmente un blocco pari a tutta la mem. disponibile (heap) richiesta di allocazione soddisfatta usando le prime n parole avanza il puntatore LL analogamente per le successive richieste i blocchi deallocati (non contigui) formano una catena Gestione della Memoria 27 apr, / 54

30 Unica lista libera [... cont.] Quando non c è più spazio sull heap: 1 utilizzo diretto della lista libera si mantiene una lista di blocchi liberi di dim. variabile allocazione: si cerca nella lista un blocco di dim. k n utile al fabbisogno criterio first-fit (migliore efficienza) criterio best fit (migliore occupazione) la porzione di blocco k n non usata resta nella lista libera deallocazione: si ricompatta il blocco eventualmente assieme ai blocchi liberi adiacenti 2 compattazione della mem. libera in caso di esaurimento dello spazio direttamente allocabile: spostamento dei blocchi attivi (solo se rilocabili) compattamento dei blocchi liberi in un estremità della memoria Gestione della Memoria 27 apr, / 54

31 Multiple liste libere Molteplici liste ognuna contenente di blocchi di diverse grandezze per un fabbisogno pari ad n allocazione: selezione della lista con blocchi di dim. k con k n allocazione usando tale lista come nel caso di singola lista libera deallocazione: idem Osservazione frammentazione interna se le dim. sono statiche Gestione della Memoria 27 apr, / 54

32 Multiple liste libere [... cont.] buddy system: dim. dei blocchi potenze di 2 allocazione: sia k tale che blocco di dim. 2 k > n se libero viene allocato altrimenti si considera un blocco della lista 2 k+1 e lo si divide in due parti 1 una viene allocata 2 l altra diventa un blocco libero tra i blocchi 2 k deallocazione: ricerca del compagno (buddy) se libero fusione in un blocco di dim. 2 k+1 heap di Fibonacci: come il precedente la successione di Fibonacci cresce più lentamente Gestione della Memoria 27 apr, / 54

33 Agenda 1 Tecniche di gestione 2 Gestione statica 3 Gestione dinamica 4 Implementazione delle regole di scope Scope statico Scope dinamico Gestione della Memoria 27 apr, / 54

34 Implementazione delle regole di scope Riferimenti nel RdA: nomi locali Nomi non locali? ricerca nei RdA attivi sulla pila ordine dipende dal tipo di scope adottato: statico dinamico Gestione della Memoria 27 apr, / 54

35 Scope statico Ordine di ricerca di riferimenti non-locali diverso da quello dei blocchi sulla pila 1 A:{ int y=0; 2 B:{ int x = 0; 3 void P (int n) { 4 x = n+1; 5 y = n+2; 6 } 7 C:{ int x = 1; 8 P(2); 9 write(x); 10 } 11 } 12 write(y); 13 } dopo la chiamata di P, sulla pila: Gestione della Memoria 27 apr, / 54

36 Scope statico [... cont.] y int 0... A P A B x int 0 P fun... B codice C x int 1... C p. RdA attivo n int 1... P Gestione della Memoria 27 apr, / 54

37 Scope statico [... cont.] RdA di un blocco B collegato mediante puntatore di catena statica al blocco immediatamente esterno che lo contiene nel sorgente B blocco di sottoprogramma: il blocco esterno a B ne contiene la dichiarazione B attivo: anche i blocchi esterni che lo contengono devono essere attivi (RdA sulla pila) vengono mantenute quindi 2 catene (cfr. fig. seguente) gestione tramite codice: sequenza di chiamata, prologo ed epilogo Gestione della Memoria 27 apr, / 54

38 Scope statico [... cont.] Esempio catena statica (e dinamica) per la struttura a destra A B C B D E C A C D E. Gestione della Memoria 27 apr, / 54

39 Calcolo puntatore di catena statica In genere, all ingresso in un blocco: il CHIAMANTE calcola del punt. di catena statica del CHIAMATO e glielo passa 2 casi: 1 CHIAMATO all esterno del CHIAMANTE perché sia visibile, il CHIAMATO deve trovarsi in un blocco esterno che includa anche il CHIAMANTE (quindi il RdA di questo blocco esterno è già sulla pila) numero di livelli di distanza determinabile dal compilatore: k = livello(chiamato) livello(chiamante) si seguono k livelli di catena statica 2 CHIAMATO all interno del CHIAMANTE per la visibilità, il CHIAMATO è dichiarato nel blocco della chiamata per il CHIAMANTE, basta risalire al blocco esterno k = 1 il CHIAMATO (prologo) memorizza il puntatore di catena statica ricevuto nel suo RdA Gestione della Memoria 27 apr, / 54

40 Calcolo puntatore di catena statica [... cont.] il compilatore tiene traccia del liv. di annidamento delle chiamate usando la tavola dei simboli: nome + numero di scope nell es. precedente, per risolvere y in P calcola distanza 2 da A dov è la sua dichiarazione tuttavia non può risolvere tutti i riferimenti; alcuni sono legati al numero di RdA presenti sulla pila a run-time Osservazione svantaggio: per una distanza pari a k, si devono scorrere k livelli di catena statica Gestione della Memoria 27 apr, / 54

41 Scope statico / Display Obiettivo: ridurre ad un numero costante gli accessi display: vettore di dim. pari a numero di livelli di annidamento display[k]: puntatore al RdA di livello k attivo Per ogni riferimento ad un nome non locale: dichiarato in blocco esterno a livello k il puntatore al RdA è nel display nella posizione k Gestione della Memoria 27 apr, / 54

42 Scope statico / Display [... cont.] Gestione semplice ma più costosa: all entrata in nuovo ambiente di livello k, si salva (nel CHIAMATO) il valore precedente di display[k], se presente condivisione del display in toto o in parte col CHIAMANTE si aggiorna display[k] con il puntatore del RdA del CHIAMATO Gestione della Memoria 27 apr, / 54

43 Scope statico / Display [... cont.] Siano n liv. del CHIAMANTE e m liv. del CHIAMATO 1 CHIAMATO all esterno del CHIAMANTE m < n condivisione della str. statica fino al liv. m 1 si aggiorna display[m] per puntare al RdA del CHIAMATO, salvando il contenuto precedente il display è attivo fino alla pos. m; all uscita verrà ripristinato 2 CHIAMATO all interno del CHIAMANTE m > n condivisione del display fino al livello n si incrementa il liv. di profondità del display e inserisci il puntatore al RdA del CHIAMATO in display[n + 1] se si era già arrivati a liv. n + 1, si salva il vecchio contenuto presente Gestione della Memoria 27 apr, / 54

44 Scope statico / Display [... cont.] vantaggio: semplicità ambienti non locali considerati secondo l ordine di chiamata svantaggi: necessità di memorizzare esplicitamente i nomi per la ricerca può essere inefficiente far tutto il lavoro a run-time Gestione della Memoria 27 apr, / 54

45 Scope statico / Display [... cont.] chiamate nell ordine A B C D E C a sinistra della pila puntatori relativi ai vecchi valori nei display nella pos. del CHIAMATO linea tratteggiata p. non attivo A: [ B: [ ], C: [ D: [ ], E: [ ] ] ] Gestione della Memoria 27 apr, / 54

46 Scope dinamico / Lista di associazioni memorizzazione associazioni nome/oggetto nel RdA, oppure in una lista di associazioni (A-list) gestita come una pila entrata/uscita in/da un nuovo ambiente: info: nuove associazioni vengono inserite/eliminate nella/dalla lista locazione tipo altre info necessarie a controlli semantici Gestione della Memoria 27 apr, / 54

47 Scope dinamico / Lista di associazioni [... cont.]... A x y... x y B x v... B C x v w x A C w x D w... D w... p. RdA attivo Gestione della Memoria 27 apr, / 54

48 Scope dinamico / Lista di associazioni [... cont.] / x tipo, locazione,... y x y x x B v v w x A C w D w p. A-List w x Gestione della Memoria 27 apr, / 54

49 Scope dinamico / CRT Si ovvia agli svantaggi di altri metodi a scapito dell efficienza tutti i blocchi in un unica tabella: CRT Central Referencing environment Table tutti i nomi presenti; per ogni nome: flag (associazione attiva sì/no) puntatore alle informazioni associate (locazione, tipo,... ) se tutti i nomi sono noti a compile-time ricerca in tempo costante (ind.tabella + offset) altrimenti: ricerca hash Gestione della Memoria 27 apr, / 54

50 Scope dinamico / CRT [... cont.] Ingresso da A in B: modifica della CRT per un nuovo ambiente locale di A non necessariamente in entry contigue nella tabella salvataggio associazioni disattivate (in una pila) per successivo ripristino all uscita da B Pila esplicita top: associazione attiva altre: associazioni disattivate nascosta (separata dalla CRT) (nome, flag, rif. ad oggetto) non è richiesta ricerca accesso (diretto o hash) alla tabella, che contiene l info Gestione della Memoria 27 apr, / 54

51 Scope dinamico / CRT [... cont.] in C in B in A x info info info / y info / v info / w info info / in D in C chiamate di A, B, C, D Gestione della Memoria 27 apr, / 54

52 Scope dinamico / CRT [... cont.] A AB ABC ABCD x 1 α 1 x 1 β 1 x 1 γ 1 x 1 γ 1 y 1 α 2 y 1 α 2 y 1 α 2 y 1 α 2 v 0 v 1 β 2 v 0 β 2 v 0 β 2 w 0 w 0 w 1 γ 2 w 1 δ 1 stack nascosto x α 1 x α 1 x β 1 x α 1 x β 1 w γ 1 Gestione della Memoria 27 apr, / 54

53 Esercizi Dal libro di testo (2a ed.) Es.1 scrivere in pseudolinguaggio un frammento di codice tale che il n.ro max di RdA sulla pila non sia determinabile staticamente Es.2 scrivere in pseudolinguaggio una funzione ricorsiva tale che il n.ro max di suoi RdA sulla pila sia determinabile staticamente Es.3 Es.4 Es.5 Es.6 è più facile implementare la regola di scope statico o dinamico? Motivare Es.7 Gestione della Memoria 27 apr, / 54

54 Riferimenti Gabbrielli & Martini: Linguaggi di Programmazione, McGraw-Hill 2a edizione. [cap. 7] Gestione della Memoria 27 apr, / 54

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

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

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

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

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

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili

Dettagli

Strutture Dinamiche. Fondamenti di Informatica

Strutture Dinamiche. Fondamenti di Informatica Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));

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

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

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

Allocazione dinamica della memoria

Allocazione dinamica della memoria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare

Dettagli

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono

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

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

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

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

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

Allocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()

Allocazione Dinamica. Allocazione Statica. malloc() La funzione malloc() Allocazione Statica Finora abbiamo visto che le variabili sono sempre definite staticamente. Questo è un limite perché la loro esistenza deve essere prevista e dichiarata a priori. In particolare per variabili

Dettagli

Introduzione al C. Unità Gestione Dinamica della Memoria

Introduzione al C. Unità Gestione Dinamica della Memoria Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità Gestione Dinamica della Memoria D. Bloisi, A. Pennisi, S. Peluso, S. Salza Gestione

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

Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive

Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di

Dettagli

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016 Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione

Dettagli

Architettura dei calcolatori e sistemi operativi. Sottoprogrammi e MIPS. Espressioni algebriche. Capitolo 2 P&H

Architettura dei calcolatori e sistemi operativi. Sottoprogrammi e MIPS. Espressioni algebriche. Capitolo 2 P&H Architettura dei calcolatori e sistemi operativi Sottoprogrammi e MIPS Espressioni algebriche Capitolo 2 P&H Sottoprogrammi Modello di chiamata Area di attivazione Calcolare un espressione algebrica 2

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

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di

Dettagli

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

Linguaggio C: PUNTATORI

Linguaggio C: PUNTATORI Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori

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

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Parametri Formali di una Funzione e Record di Attivazione

Parametri Formali di una Funzione e Record di Attivazione Parametri Formali di una Funzione e Attivazione Un record di attivazione rappresenta il mondo di una funzione, e contiene tutto ciò che ne caratterizza l esistenza, tra cui ad esempio: le variabili locali

Dettagli

Scope, Memoria e Tabella dei Simboli

Scope, Memoria e Tabella dei Simboli Scope, Memoria e Tabella dei Simboli La tabella dei simboli è uno strumento fondamentale attraverso il quale interpreti e compilatori implementano la traduzione da un programma scritto in un linguaggio

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

Allocazione della memoria. Allocazione dinamica della memoria. Allocazione della memoria. Allocazione automatica

Allocazione della memoria. Allocazione dinamica della memoria. Allocazione della memoria. Allocazione automatica Allocazione dinamica della memoria Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Allocazione della memoria Il termine allocazione viene utilizzato per indicare l assegnazione di un blocco

Dettagli

FUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi:

FUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi: FUNZIONI RICORSIVE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento (chiamata) a se stessa. Esempio: Esempi di problemi ricorsivi: 1) Somma dei primi

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

! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente

! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente ! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili

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

Allocazione statica della memoria

Allocazione statica della memoria 2015 - Roberta Gerboni 1 2 Allocazione statica della memoria Cosa succede nella memoria del computer quando il un programma vengono dichiarate delle variabili? memoria Ad esempio: int main() 57 { int x=

Dettagli

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Calcolatori Elettronici Parte VIII: linguaggi assemblativi Anno Accademico 2013/2014 Calcolatori Elettronici Parte VIII: linguaggi assemblativi Prof. Riccardo Torlone Universita di Roma Tre Linguaggi di Programmazione Linguaggi ad alto livello Maggiore espressività

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016

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

Fondamenti di Informatica II

Fondamenti di Informatica II Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura

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

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

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 5 Martedì 25-10-2016 Definizione di processo Esiste una distinzione concettuale

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 6 - Liste Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi

Dettagli

Astrazione Dati. Nicola Fanizzi. Linguaggi di Programmazione [010194] 10 mag, Dipartimento di Informatica Università degli Studi di Bari

Astrazione Dati. Nicola Fanizzi. Linguaggi di Programmazione [010194] 10 mag, Dipartimento di Informatica Università degli Studi di Bari Astrazione Dati Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 10 mag, 2016 Sommario 1 Astrazione dati Incapsulamento Esempio / ADT pila

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

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe

cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe 1 tipi statici e tipi dinamici in generale i LP hanno tipi statici, cioè ogni variabile ha un tipo dichiarato

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

Programma di Paradigmi e possibili domande. Capitolo 1

Programma di Paradigmi e possibili domande. Capitolo 1 Definizione di macchina astratta Programma di Paradigmi e possibili domande Capitolo 1 Una macchina astratta per il linguaggio L detta ML, è un qualsiasi insieme di algoritmi e strutture dati che permettono

Dettagli

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Dettagli

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Operazioni sulle liste Definiamo una serie di procedure e funzioni per operare sulle liste. Usiamo liste di interi per semplicità, ma tutte le operazioni sono realizzabili in modo del tutto analogo su

Dettagli

I Linguaggi di Programmazione

I Linguaggi di Programmazione I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

Puntatori. Unità 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Puntatori. Unità 6. 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

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

Capitolo 19. Ricorsione

Capitolo 19. Ricorsione Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!

Dettagli

La struttura dati CODA

La struttura dati CODA Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta

Dettagli

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

Dettagli

FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc

FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc 44 FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc MODELLO VERILOG DEL PROCESSORE 45 MODELLO VERILOG DEL SISTEMA COMPLETO

Dettagli

Gestione della memoria

Gestione della memoria Gestione della memoria centrale Gestione della memoria Concetti generali. Swapping. Allocazione contigua di memoria. Paginazione. Segmentazione. Segmentazione con paginazione. Esempio: Pentium Intel Background

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 La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

Puntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Puntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi 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

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

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

Strutture dati: tavole o tabelle TABELLA DEI SIMBOLI

Strutture dati: tavole o tabelle TABELLA DEI SIMBOLI TABELLA DEI SIMBOLI Le tabelle dei simboli servono a due scopi: controllano la correttezza semantica (la parte dipendente dal contesto della grammatica) ed aiutano nella generazione del codice. Tutte queste

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

PILE E CODE. Pile (stack):

PILE E CODE. Pile (stack): PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):

Dettagli

Prof.Ing.S.Cavalieri Puntatori e Heap in Linguaggio C. Puntatori e Heap

Prof.Ing.S.Cavalieri Puntatori e Heap in Linguaggio C. Puntatori e Heap Puntatori e Heap 1.Cosa Sono i Puntatori? I puntatori sono fondamentalmente delle variabili, come quelle intere, reali e carattere. Tuttavia, l unica differenza consiste nel fatto che essi non contengono

Dettagli

Allocazione dinamica

Allocazione dinamica Allocazione dinamica Quando non si sa a priori quanto un array debba essere grande allocazione dinamica di array Quando si deve restituire un array come risultato di una funzione (a meno di non barare

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

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

Strutturare il codice: sottoprogrammi

Strutturare il codice: sottoprogrammi Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Motivazioni Alcuni problemi si presentano frequentemente durante lo sviluppo di un programma

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili

Università degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili Anno Accademico Francesco Tortorella Il concetto di visibilità Un programma C++ può assumere una struttura complessa grazie

Dettagli

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato. Il File System Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i concetti

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: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

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

Linguaggio C: puntatori

Linguaggio C: puntatori Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Introduzione al C. Tipi derivati

Introduzione al C. Tipi derivati Introduzione al C Tipi derivati 1 Strutture semplici Una struttura è una collezione di una o più variabili, anche di tipi diversi, raggruppate da un nome struct tag{ struttura_elementi } istanza; struct

Dettagli

Una breve introduzione all implementazione in C di algoritmi su grafo

Una breve introduzione all implementazione in C di algoritmi su grafo Una breve introduzione all implementazione in C di algoritmi su grafo A cura di Gianmaria Leo Introduzione La lezione è un introduzione a concetti e strumenti che permettono l implementazione di algoritmi

Dettagli

Il file È un insieme di informazioni: programmi. Il File System. Il file system

Il file È un insieme di informazioni: programmi. Il File System. Il file system Il File System Il file È un insieme di informazioni: programmi d a t i testi rappresentati come insieme di record logici (bit, byte, linee, record, etc.) Ogni file è individuato da (almeno) un nome simbolico

Dettagli

Uso avanzato dei puntatori Allocazione dinamica della memoria

Uso avanzato dei puntatori Allocazione dinamica della memoria Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori 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

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

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C... Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...

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

Algoritmi di ordinamento: Array e ricorsione

Algoritmi di ordinamento: Array e ricorsione Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion

Dettagli

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di

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

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Il linguaggio assemblativo MIPS (4) Le function (2) Gestione dei sottoprogrammi $a0 - $a3 - $v1 $ra : 4 registri argomento per il passaggio dei parametri : due registri per la restituzione

Dettagli