I puntatori (richiamo)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "I puntatori (richiamo)"

Transcript

1 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 ad altre variabili) definire strutture dati dinamiche realizzare il passaggio di parametri per riferimento 1

2 Puntatori La sintassi per dichiarare un puntatore è la seguente: <tipo base> *<identificatore>; Esempio: int *pi; pi è un puntatore esclusivamente a variabili di tipo intero Altri esempi: int *pi1, *pi2, i, j; float f, *pf; double *pd, d; Notare che le seguenti scritture sono tutte lecite ed equivalenti: int* pi; int * pi; int *pi; Assegnamento Posso allora scrivere: int v = 5; //definisco la variabile v inizializzata al valore 5 5 v int *pi; //dichiaro il puntatore pi, il cui valore non è inizializzato pi pi = &v; //assegno a pi l indirizzo di v pi 5 v 2

3 Assegnamento int b = *pi; //(dereferenziamento) assegno a b il valore della variabile puntata da pi (cioè il valore di v, 5) 5 b pi 5 v *pi = 9;//assegno 9 alla variabile puntata da pi, cioè a v 9 Lab. Programmazione I - a.a pi v L espressione *pi è di tipo intero e può quindi ricorrere all interno di altre espressioni esattamente come l espressione v Rappresentazione in memoria A voler essere più precisi, la situazione in memoria è la seguente: 0xbacd7000 0xbacd7a1c pi. pi è una variabile che come valori può assumere indirizzi di variabili intere 0xbacd7a1c 0xbacd7a v b 3

4 Differenza tra dichiarazione e dereferenziamento Attenzione a non confondere la dichiarazione di un tipo puntatore con l operatore di dereferenziamento. Entrambi usano il carattere * ma il significato è differente int *pi; //dichiarazione del puntatore a interi pi *pi = 5; //dereferenziamento, cioè attraversamento del puntatore e assegnamento del valore 5 alla cella di memoria puntata da pi Inizializzazione di puntatori I puntatori (come tutte le altre variabili) devono venire inizializzati prima di essere usati È un errore dereferenziare una variabile puntatore non inizializzata Esempio: int a; int *pi; a = *pi; //primo errore: assegniamo un valore indeterminato ad a (infatti non sappiamo dove stia puntando pi) *pi = 10;//secondo errore: assegniamo il valore 10 a una cella di memoria che potrebbe non appartenere al nostro programma; a runtime il nostro programma termina bruscamente con il peggior messaggio possibile: segmentation fault 4

5 Passaggio dei parametri per valore e per riferimento Record di attivazione (cenni) All atto dell invocazione di una funzione: 1. Si alloca sullo una zona di memoria (record di attivazione) che, tra le altre cose, contiene i parametri e le eventuali variabili locali della funzione 2. Si copiano i parametri nel record di attivazione 3. Si esegue il codice della funzione Quando la funzione termina, si ritorna ad eseguire il codice della funzione chiamante, restituendo ad essa l eventuale valore di ritorno e il record di attivazione viene distrutto Il record di attivazione verrà trattato con dovizia di particolari in corsi successivi 5

6 Passaggio per valore Passaggio per valore (by value) si trasferisce una copia del parametro effettivo tale copia è strettamente privata e locale alla funzione chiamata la funzione può quindi alterare il valore ricevuto senza alcun impatto sul chiamante Conseguenza: è impossibile usare un parametro per trasferire informazioni verso il chiamante per trasferire un informazione al chiamante si deve sfruttare il valore di ritorno della funzione Il C fornisce esclusivamente il passaggio per valore Esempio int incr(int i) { i = i+1; return i; int (void) { int m = 5; int val = incr(m); return 0; Quanto vale val? Quanto invece m? 6

7 Prima dell invocazione della funzione incr, sullo si trova il record di attivazione (RdA) del m = 5 val =? incr i = 5 All invocazione della funzione incr, viene aggiunto sullo il RdA di incr. Poiché il passaggio dei parametri è per valore, nel parametro n di incr viene copiato il valore del parametro m m = 5 val =? 7

8 Viene eseguito il corpo della funzione incr incr i = 6 m = 5 val =? Al termine della funzione incr, il controllo torna al e il RdA di incr viene rimosso dallo Il valore di ritorno viene assegnato alla variabile val del m = 5 val = 6 Il valore di m non è cambiato 8

9 Passaggio per riferimento in C Il passaggio per valore non è sufficiente: ci possono essere casi in cui risulta utile che una funzione alteri il valore di un parametro Dato che il C offre supporto esclusivamente al passaggio per valore (il C++, invece, anche al passaggio per riferimento), utilizziamo i puntatori per simulare il passaggio per riferimento in questo modo: non trasferiamo per valore come parametro la variabile, ma l indirizzo della variabile La funzione chiamata, avendone l indirizzo, può accedere direttamente alla variabile in possesso del chiamante e può modificarla Esempio void incr(int *pi) { *pi = *pi + 1; int (void) { int m = 5; incr(&m); return 0; Con &m passiamo a incr l indirizzo di m. In questo modo incr, usando il puntatore *pi, può modificare direttamente il valore della variabile nella funzione 9

10 Come già visto, prima dell invocazione della funzione incr, sullo si trova il RdA del m = 5 incr pi All invocazione della funzione incr, viene aggiunto sullo il RdA di incr. Nel parametro pi di incr viene copiato l indirizzo della variabile m, quindi pi punta alla variabile m nel m = 5 10

11 Viene eseguito il corpo della funzione incr, che modifica *pi, cioè direttamente la variabile m del incr pi m = 6 Al termine della funzione incr, il controllo torna al e il RdA di incr viene rimosso dallo m = 6 11

12 Relazione tra array e puntatori Aritmetica dei puntatori Array e Puntatori In generale, quando in C definiamo una struttura dati, non sappiamo cosa contengono celle di memoria adiacenti. L unico caso in cui sappiamo quali sono le locazioni di memoria successive e cosa contengono è quando utilizziamo gli array Infatti, in C gli elementi di un array sono allocati in memoria in modo contiguo In C array e puntatori sono intimamente correlati: la variabile usata come array è in realtà un puntatore che punta alla base dell array, cioè all elemento con indice 0 a int a[5]; 12

13 Array e Puntatori Quindi, quando definiamo un array, implicitamente definiamo un puntatore al primo elemento dell array Esempio: dichiarando int a[5]; è come se stessimo dichiarando non solo un array ma anche un puntatore a interi int *a; il cui valore corrisponde all indirizzo base dell array Infatti, provate con: a == &a[0]; printf("%p %p", a, &a[0]): stampa due volte lo stesso indirizzo Array e Puntatori Attenzione: in generale int a[5] e int* a non sono equivalenti per due motivi Primo motivo: quando si dichiara il puntatore la memoria non viene allocata automaticamente: int a[5]; //riserva una quantità di memoria sufficiente a memorizzare 5 interi (su molte macchine 20 byte) a int *a; //riserva una quantità di memoria sufficiente a memorizzare un indirizzo a 13

14 Array e Puntatori Secondo motivo: non è possibile modificare l indirizzo di base di un array, quindi, definendo int a[5], a è un puntatore costante e non è possibile modificare il suo valore In altre parole, essendo a un puntatore costante, non può comparire a sinistra in un assegnamento int a[5]; int *pa; a = pa; ß ILLEGALE Però si può fare il viceversa: pa = a; //è del tutto analogo a pa=&a[0] Infatti pa è una variabile. Dunque espressioni come pa++ e pa = a sono legali Array e Puntatori Il C sfrutta i puntatori e l allocazione contigua di un array per offrire l aritmetica dei puntatori, che permette di eseguire alcune operazioni aritmetiche sui puntatori, per esempio sommare un intero a un puntatore Sfruttando l aritmetica dei puntatori è possibile accedere agli elementi di un array in un modo alternativo a quello di indicare l indice tra parentesi quadre, cioè attraverso un puntatore all indirizzo base dell array stesso 14

15 Array e Puntatori int a[5]; int *pi = a; *(pi + 3) = 28; // pi+3 punta all elemento di indice 3 dell array; uguale a a[3]=28 Il 3 viene detto offset (o scostamento) del puntatore Servono le parentesi perché * ha priorità maggiore di + a[5] pi pi+3 Array e Puntatori Se a è memorizzato a partire dall indirizzo 2000, a (e pi) valgono 2000 Però pi + 3 non vale 2003 perché il C tiene conto dello spazio occupato da ogni singolo elemento puntato. In questo caso, supponendo che un int occupi 4 byte, quindi, pi + 3 varrà 2012 e *(pi + 3) equivale ad a[3] 15

16 Array e Puntatori Che cosa denota *pi + 3? Avrebbe senso scrivere *pi + 3 = 28? Osservazione: &a[3] equivale a &(a[3]), a pi+3 e a a+3 *&a[3] equivale a *(pi+3) e a *(a+3) Inoltre, *&a[3] equivale a a[3] Array e Puntatori Dato un array int b[4] scrivere almeno tre diversi modi per stampare con un ciclo for gli elementi dell array usando array, indici, puntatori, aritmetica dei puntatori 16

17 Array e Puntatori 1. Con array e indice: int i; for (i=0; i<4; i++) printf("b[%d] = %d\n", i, b[i]); 2. Con puntatore e aritmetica dei puntatori: int i, *pi = b; for (i=0; i<4; i++) printf("*(pi+%d) = %d\n", i, *(pi + i)); 3. Con puntatore e indici: int i, *pi = b; for (i=0; i<4; i++) printf("pi[%d] = %d\n", i, pi[i]); Array e Puntatori 4. Con array e aritmetica dei puntatori: int i; for (i=0; i<4; i++) printf("*(b+%d) = %d\n", i, *(b + i)); 5. Con puntatore, aritmetica dei puntatori e incrementando direttamente il puntatore int i, *pi; for (pi=b, i=0; i<4; i++, pi++) printf("*pi = %d\n", *pi); A cosa punta pi al termine del ciclo? 17

18 Esempio Stabiliamo la lunghezza di una stringa usando i puntatori int string_length(char s[]) { int n; for (n = 0; *s!= '\0'; s++, n++); return n; Il punto e virgola al termine dell istruzione for significa che il corpo del for non contiene istruzioni (ma n (e s) vengono comunque incrementati!) Utilizzare i puntatori rende il codice generalmente meno leggibile, ma il compilatore potrebbe riuscire a trarne vantaggio e a produrre un modulo oggetto più efficiente Passaggio di array come parametri Cosa succede quando si passa un array come parametro? Bisogna ricordare che il nome dell array corrisponde all indirizzo del primo elemento dell array Quindi abbiamo un passaggio per riferimento dell array 18

19 Passaggio di array come parametri Sia int a[] che int* a si riferiscono a puntatori a interi La definizione di funzione void myfunction(int a[]) { è equivalente a void myfunction(int *a) { In entrambi i casi myfunction riceve un puntatore al primo elemento dell array Si noti che la funzione non ha modo di sapere quanto è lungo l array: o la lunghezza è nota in qualche modo (ad es. per una #define o perché è una stringa correttamente terminata da '\0') o la lunghezza deve essere un parametro Esempio #include <stdio.h> #include <ctype.h> //per il prototipo di toupper void inmaiuscolo(char s[]) { int i; for (i=0; s[i]!= '\0'; i++) s[i] = toupper(s[i]); //rende un carattere maiuscolo int (void) { char str[] = "PiPpO"; inmaiuscolo(str); printf("%s\n", str); return 0; 19

20 Ingresso nella funzione inmaiuscolo: inmaiuscolo s str "PiPpO" void inmaiuscolo(char s[]) { int i; for(i=0; s[i]!='\0'; i++) s[i] = toupper(s[i]); Uscita dalla funzione inmaiuscolo: inmaiuscolo s void inmaiuscolo(char s[]) { int i; for(i=0; s[i]!='\0'; i++) s[i] = toupper(s[i]); str "PIPPO" 20

21 Passaggio di array come parametri La funzione inmaiuscolo modifica la stringa str passata come parametro perché il nome di un array corrisponde a un puntatore al primo elemento dell array Quindi alla funzione inmaiuscolo viene passato per valore un puntatore al primo elemento dell array La funzione non può modificare il puntatore ma può modificare gli elementi dell array Passaggio di array come parametri Cosa succede in questo caso errato? #include <stdio.h> #include <ctype.h> #define MAXSTRING 10 void inmaiuscolono1(char s[]) { char s1[maxstring]; int i; for(i=0; s[i]!= '\0'; i++) s1[i] = toupper(s[i]); s1[i] = '\0'; s = s1; int (void) { char str[] = "PiPpO"; inmaiuscolono1(str); printf("%s\n", str); return 0; 21

22 inmaiuscolono1 s s1 "@$GSf%^" i str "PiPpO" Ingresso nella funzione inmaiuscolono1: void inmaiuscolono1(char s[]) { char s1[maxstring]; int i; for(i=0;s[i]!='\0';i++) s1[i] = toupper(s[i]); s1[i] = '\0'; s = s1; inmaiuscolono1 s s1 "PIPPO" i=5 str void inmaiuscolono1(char s[]) { char s1[maxstring]; int i; for(i=0;s[i]!='\0';i++) s1[i] = toupper(s[i]); s1[i] = '\0'; s = s1; "PiPpO" 22

23 inmaiuscolono1 s s1 "PIPPO" i=5 str "PiPpO" void inmaiuscolono1(char s[]) { char s1[maxstring]; int i; for(i=0;s[i]!='\0';i++) s1[i] = toupper(s[i]); s1[i] = '\0'; s = s1; Dato che il parametro s era un puntatore passato per valore, l ultimo assegnamento (s=s1) è inutile dato che il RdA di inmaiuscolono1 viene rimosso dallo str "PiPpO" 23

24 Passaggio di array come parametri Cosa succede in questo altro caso (errato)? #include <stdio.h> #include <ctype.h> #define MAXSTRING 10 char* inmaiuscolono2(char s[]) { char s1[maxstring]; int i; for(i=0;s[i]!='\0';i++) s1[i] = toupper(s[i]); s1[i] = '\0'; return s1; int (void) { char str[] = "PiPpO"; char *str2 = inmaiuscolono2(str); printf("%s\n", str2); return 0; Passaggio di array come parametri Il compilatore genera un avvertimento: warning: address of memory associated with local variable 's1' returned Infatti s1 è un array locale alla funzione (viene allocato nel RdA della funzione): la funzione restituisce un puntatore s1 ma, quando si esce dalla funzione, l array (insieme al resto del RdA) viene deallocato e il non può accedervi 24

25 inmaiuscolono2 s s1 "@$GSf%^" i str "PiPpO" str2 Ingresso nella funzione inmaiuscolono2: char* inmaiuscolono2(char s[]) { char s1[maxstring]; int i; for(i=0;s[i]!='\0';i++) s1[i] = toupper(s[i]); s1[i] = '\0'; return s1; inmaiuscolono2 s s1 "PIPPO" i=5 str "PiPpO" str2 char* inmaiuscolono2(char s[]) { char s1[maxstring]; int i; for(i=0;s[i]!='\0';i++) s1[i] = toupper(s[i]); s1[i] = '\0'; return s1; 25

26 str "PiPpO" str2 All uscita dalla funzione, il suo RdA viene rimosso dallo compresa la stringa convertita. str2 punta a una zona di memoria che è non più allocata e la printf successiva ha un comportamento imprevedibile int (void) { char str[]="pippo"; char *str2=inmaiuscolono2(str); printf("%s\n", str2); return 0; 26

Verso i puntatori: Cosa è una variabile?

Verso i puntatori: Cosa è una variabile? Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per

Dettagli

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime

Dettagli

Puntatori. Fondamenti di Programmazione

Puntatori. Fondamenti di Programmazione Puntatori Fondamenti di Programmazione Funzioni utili stdio.h c = getchar(); restituisce un carattere letto da tastiera. Equivale a: scanf( %c, &c); putchar(c); scrive un carattere sullo schermo. Equivale

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

Aritmetica dei puntatori

Aritmetica dei puntatori Aritmetica dei puntatori Sui puntatori si possono anche effettuare operazioni aritmetiche, con opportune limitazioni somma o sottrazione di un intero sottrazione di un puntatore da un altro Somma e sottrazione

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali

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

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

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

Inside C : Puntatori. Indirizzo: operatore & p = &v; x = a; Puntatori Referenziazione e Dereferenziazione Arrays

Inside C : Puntatori. Indirizzo: operatore & p = &v; x = a; Puntatori Referenziazione e Dereferenziazione Arrays Pointers: Puntatori (I) Le variabili finora incontrate sono caratterizzate da un nome (o identificativo), un tipo, ed occupano un area di memoria di dimensione dipendente dal tipo. Per accedere ad una

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

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

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

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

Puntatori in C Lucidi della Pof.ssa Pazienza

Puntatori in C Lucidi della Pof.ssa Pazienza Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

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

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

POINTERS. Una variabile pointer è una variabile che ha come valore un indirizzo di memoria.

POINTERS. Una variabile pointer è una variabile che ha come valore un indirizzo di memoria. POINTERS Una variabile pointer è una variabile che ha come valore un indirizzo di memoria. Es. Sia y una variabile intera di valore e sia yptr una variabile pointer avente come valore l indirizzo di y.

Dettagli

Array k-dimensionali

Array k-dimensionali Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per

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

18/01/16. Soluzione degli esercizi svolti in aula alla lavagna. Seconda lezione. Cast

18/01/16. Soluzione degli esercizi svolti in aula alla lavagna. Seconda lezione. Cast Soluzione degli esercizi svolti in aula alla lavagna Seconda lezione Cast 1 Esempio Scriviamo un programma che converte temperature Fahrenheit in temperature Celsius La formula è cels = (fahr 32) * 5 *

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

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

Linguaggio C I puntatori

Linguaggio C I puntatori FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C I puntatori 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi).

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi). Operatori di incremento e decremento: ++ e -- ++ e -- sono operatori unari con la stessa priorità del meno unario e associatività da destra a sinistra. Si possono applicare solo a variabili (di tipi interi,

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

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

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

Applicando lo stesso meccanismo al tipo puntatore, possiamo dichiarare un array di puntatori:

Applicando lo stesso meccanismo al tipo puntatore, possiamo dichiarare un array di puntatori: Le tabelle In C, dato un tipo di variabile, è possibile costruire un array di variabili di tale tipo usando la dichiarazione (facendo l esempio per il tipo float): float vettore[100]; Applicando lo stesso

Dettagli

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

Dettagli

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare

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

Il linguaggio C. Puntatori e Array

Il linguaggio C. Puntatori e Array Il linguaggio C Puntatori e Array Puntatori I puntatori sono variabili i cui valori sono indirizzi di locazioni in cui sono memorizzate altre variabili architettura a 32 bit: 232-1 indirizzi, ma non si

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

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

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

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

Funzioni in C. Architetture multi-componente

Funzioni in C. Architetture multi-componente Funzioni in C Architetture multi-componente In generale, una applicazione informatica complessa è organizzata come insieme di componenti software che cooperano per raggiungere un fine comune. Ogni componente

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Puntatori a funzioni 1 Funzioni che restituiscono puntatori Il valore di ritorno restituito da una funzione può essere di qualsiasi tipo, compreso il tipo puntatore.

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

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

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

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

Una procedura permette di#! dare un nome a una istruzione#! rendendola parametrica!! non denota un valore, quindi " non c#è tipo di ritorno!

Una procedura permette di#! dare un nome a una istruzione#! rendendola parametrica!! non denota un valore, quindi  non c#è tipo di ritorno! Una procedura permette di#! dare un nome a una istruzione#! rendendola parametrica!! non denota un valore, quindi non c#è tipo di ritorno! void void p(int ) { = * 2; printf( %d, ); Una procedura è un componente

Dettagli

Alla variabile pi verrà assegnato come valore l'indirizzo di una variabile di tipo int:

Alla variabile pi verrà assegnato come valore l'indirizzo di una variabile di tipo int: I puntatori Le variabili di tipo puntatore sono variabili che hanno come valore l'indirizzo di altre variabili. Consideriamo le seguenti dichiarazioni di variabili di tipo puntatore: char* pc; double*

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

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

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti

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

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

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Il linguaggio C Puntatori

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

Dettagli

ESERCIZIO: Lettura/Scrittura Array

ESERCIZIO: Lettura/Scrittura Array ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti

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

Strutture Dati. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Strutture Dati 1 / 16

Strutture Dati. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Strutture Dati 1 / 16 Strutture Dati Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Strutture Dati 1 / 16 Introduzione Fino ad ora nei nostri programmi abbiamo usato Variabili;

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

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

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

Array multidimensionali e stringhe

Array multidimensionali e stringhe Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

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

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative

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

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

Gli array, le stringhe e le strutture

Gli array, le stringhe e le strutture INFORMATICA B Ingegneria Elettrica Gli array, le stringhe e le strutture Limiti dei tipi di dato semplici Utilizzare solo i tipi di dato semplici può essere limitante e rendere il programma poco flessibile

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

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

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

Dettagli

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore.

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore. I vettori in C Sintassi della definizione Definizione di costanti Operazioni di accesso Vettori Definizione di vettori in C I vettori in C Definizione di vettori in C Definizione di vettori in C Stesse

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 sono tipi di variabili il cui valore rappresenta un indirizzo della memoria.

I puntatori sono tipi di variabili il cui valore rappresenta un indirizzo della memoria. Puntatori I puntatori sono tipi di variabili il cui valore rappresenta un indirizzo della memoria. NOTA: quando un programma viene mandato in esecuzione, ad esso viene assegnata un area di memoria di lavoro

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

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

Corso di Programmazione a oggetti

Corso di Programmazione a oggetti Corso di Programmazione a oggetti Overloading delle funzioni e parametri di default a.a. 2014/2015 Francesco Fontanella Overloading delle funzioni In C++, è possibile dare a funzioni diverse lo stesso

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

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

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

Il puntatore. Il puntatore

Il puntatore. Il puntatore Il puntatore È un tipo scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Il dominio di una variabile di tipo puntatore è un insieme di indirizzi: Il valore di una

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

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

Capitolo 7 I puntatori in C

Capitolo 7 I puntatori in C 1 Capitolo 7 I puntatori in C 7.2 Dichiarazione e inizializzazione di puntatori Variabili puntatore Contengono gli indirizzi di memoria come valore Le normali variabili contengono uno specifico valore

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Cosa sono i puntatori? I puntatori sono fondamentalmente delle variabili che non contengono un valore numerico o alfanumerico, ma un puntatore (ossia un indirizzo) alla locazione di memoria dove è memorizzato

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

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

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

Definizione di classi. Walter Didimo

Definizione di classi. Walter Didimo Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti

Dettagli

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07

Funzioni, puntatori, strutture. Lab. Calc. AA 2006/07 Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri

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

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

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione

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

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Cicli e array Laboratorio di Programmazione I 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 Lez. 8 - Introduzione all ambiente

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

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

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono

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