1 Classi di memorizzazione. 2 Definiscono le regole di visibilità delle variabili e delle funzioni quando il programma è diviso su più file Stabiliscono.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Compilazione di Programmi C/C++
Una applicazione complessa non può essere sviluppata in un unico file: sarebbe ingestibile! Deve necessariamente essere strutturata su più file sorgente.
Introduzione al linguaggio C
Puntatori in C e C++.
Code::Blocks Ambiente di sviluppo.
Code::Blocks Ambiente di sviluppo.
Dalla scrittura all’esecuzione
PHP.
I linguaggi di programmazione
Marco Barisione Estendere Python in C.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
File System Cos’è un File System File e Directory
Massa Laura Mela Enrica
1 Semantica Operazionale di un frammento di Java: lo stato.
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Introduzione al linguaggio C
DLL: Dynamic Linking Library
Anno accademico Le classi di memorizzazione.
Algoritmi in C++ (1) da completare
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
File.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Laboratorio di Linguaggi lezione VIII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
eliana minicozzi linguaggi1a.a lezione2
Approfondimento delle classi
memoria gestita staticamente:
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Le funzioni.
Espressioni condizionali
Programmazione modulare nel linguaggio C
Algoritmi e Programmazione Avanzata
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Architettura degli Elaboratori II (canale P-Z) Linguaggi e moduli
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Programmazione di Calcolatori
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
INTERFACCIAMENTO ASSEMBLY - C++
Unità Didattica 3 Linguaggio C
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Lo sviluppo top down Le funzioni
2000 Prentice Hall, Inc. All rights reserved. Capitolo 5 (Deitel) Le funzioni Indice degli argomenti Introduzione Moduli nei programmi C 5.3.
Unità Didattica 1 Linguaggio C
Complessità di un algoritmo
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Polimorfismo.
1 Esempio di ADT e make Operazioni bit a bit su piu’ file.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Scrivere e compilare programmi
1 Compilazione separata. 2 Finora abbiamo trattato solo programmi C contenuti in un unico file define/include variabili globali typedef main def F1 …
Il linguaggio C Notate che ....
Compilazione separata
Il linguaggio C Un primo programma C : un primo programma (2) /* Programma che calcola il massimo fra tre numeri inseriti da tastiera */ #include #define.
1 Strutture dati. 2 Astrazione Non vogliamo sapere l’organizzazione fisica dei dati  indirizzi e celle di memoria Ci interessa solo la loro organizzazione.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
LIP: 15 Marzo 2005 Vettori di interi. Esercizio proposto Definire una classe VectorInt i cui oggetti sono vettori omogenei di interi ordinati in modo.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Librerie… Marco D. Santambrogio – Ver. aggiornata al 20 Luglio 2015.
Transcript della presentazione:

1 Classi di memorizzazione

2 Definiscono le regole di visibilità delle variabili e delle funzioni quando il programma è diviso su più file Stabiliscono dove (in quale parte dello spazio di indirizzamento) vengono allocate le varie variabili Stabiliscono cosa finisce nella tabella dei simboli del modulo oggetto –simboli (esterni, esportati)

3 register auto static extern variabili locali funzioni variabili globali Classi di memorizzazione (2) Tutti i modificatori possono essere applicati alle variabili locali Solo static ed extern a globali e funzioni

4 Variabili locali La classe di memorizzazione di default per le variabili locali è auto (automatica): int x; auto int x; –significano entrambe la stessa cosa : la variabile viene allocata sullo stack allingresso del blocco in cui è dichiarata e rimossa alluscita –non cè alcun legame fra il valore ad una certa attivazione ed il valore alla attivazione successiva –la visibilità di x è solo allinterno del blocco

5 Variabili locali (2) La classe di memorizzazione register è obsoleta int x; register int x; –significa che la variabile x è usata pesantemente e consiglia al compilatore di metterla in un registro generale –viene ignorata, i compilatori di oggi sono dotati di sofisticati algoritmi di allocazione dei registri –la visibilità di x è solo allinterno del blocco

6 Variabili locali (3) La classe di memorizzazione static è utilizzata quando il valore della variabile deve essere mantenuto da una invocazione allaltra del blocco { static int x; … } –significa che la variabile x mantiene il proprio valore da una attivazione del blocco alla successiva –la visibilità di x è solo allinterno del blocco

7 Variabili locali (4) La classe di memorizzazione extern { extern int x; … } –significa che la variabile x è dichiarata globale in questo o in altri file –il nome x finisce nella tabella dei simboli come simbolo esterno –il compilatore segnala la situazione nelloggetto ed il linker cerca x altrove

8 Variabili globali La classe di memorizzazione extern è la condizione di default per le variabili globali int x; extern int x; int funct (…) {...} –queste due dichiarazioni di x sono equivalenti, ed x viene allocata nellarea dati statica –il nome x finisce nella tabella dei simboli come simbolo esportato –la visibilità di x comprende tutte le funzioni dichiarate nel file dopo di essa ed x può essere utilizzata in un altro file

9 Variabili globali (2) La classe di memorizzazione static serve a limitare la portata delle varibili globali static int x; int funct (…) {...} –questa dichiarazioni di x rende la variabile visibile da tutte le funzioni che la seguono nel file –MA, il nome x NON finisce nella tabella dei simboli esportati –la visibilità di x è ristretta al file dove è dichiarata –può servire per realizzare variabili private di una implementazione

10 Funzioni extern è la classe di memorizzazione di default delle funzioni int funct (…) {...} extern int funct (…) {...} –sono equivalenti : funct è chiamabile allinterno di tutte le funzioni che la seguono nel file –il nome funct finisce nella tabella dei simboli come simbolo esportato –funzioni di altri file possono usare funct, chiamate a funzioni definite in altri file finiscono nella tabella dei simboli come esterne e vengono risolte dal linker (es. printf)

11 Funzioni (2) La classe di memorizzazione static serve a limitare la portata delle funzioni static int funct (…) {...} –questa dichiarazioni di funct la rende la visibile solo a tutte le funzioni che la seguono nel file –MA, il nome funct NON finisce nella tabella dei simboli esportati –può servire per implementare delle funzioniprivate di una implementazione, non chiamabili dallesterno del file

12 ADT protetti in C Idea di base : –definire linterfaccia in un file X.h (tipi di dato e prototipi delle funzioni utilizzabili) –utilizzare lo specificatore static per realizzare la protezione nel file X.c che realizza limplementazione –mettere a disposizione loggetto X.o (da solo o allinterno di una libreria) per permettere un linking corretto Esempio : il tipo dmat2

13 ADT protetti in C (2)... Come si usa il tipo dmat2 –includere lheader ( dmat2.h ) –compilare linkando anche dmat2.o Insiemi di file oggetti di uso comune possono essere raccolti in librerie (estensione.a)

14 Albero delle dipendenze complessivo dellesempio dmat2.h dmat2.c dmat2.o percolation Esempio: percolation Albero dipendenze radicato nelleseguibile percolation percolation-sol.o percolation-sol.c

15 Librerie (ar) Il comando : ar r nomelibreria.a file1.o fileN.o –inserisce/aggiorna i file file1.o fileN.o nella libreria nomelibreria.a –es. ar r libutils.a dmat2.o dmat3.o crea una libreria contenente i due oggetti r : operazione da eseguire nm -s libreria.a fornisce informazioni sui simboli definiti nei vari file della libreria (con indicazioni del file dove si trovano)

16 Librerie (ar) (2) Tipicamente le librerie vengono raccolte in una directory –es. ~/lib/ –e recuperate in fase di linking per generare leseguibile finale –es: gcc -L~/lib/ -lutils main.o esegue il linking fra main.o e le funzioni nella libreria libutils.a in ~/lib/