Un puntatore è una variabile che contiene l indirizzo di una variabile. Una variabile di tipo puntatore è dichiarata tramite il costruttore di tipo *

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Un puntatore è una variabile che contiene l indirizzo di una variabile. Una variabile di tipo puntatore è dichiarata tramite il costruttore di tipo *"

Transcript

1 PUNTATORI Un untatore è una variabile che contiene l indirizzo di una variabile var. di tio "untatore a variabile di tio T" indir. di variab. variabile di tio T valore di tio T Una variabile di tio untatore è dichiarata tramite il costruttore di tio * TioDato * NomeVarPuntatore ; dichiarazione eslicita di un nuovo tio NomeTioPuntatore tyedef TioDato * NomeTioPuntatore ; Oeratore di dereferenziazione * È l oeratore unario che alicato ad un untatore restituisce il valore untato da. ATTENZIONE: distinguere tra l uso dell asterisco nell ambito della fase di definizione delle variabili untatori (l asterisco indica che è un untatore a un certo tio) l uso dell asterisco nelle istruzioni (indica che si vuole far riferimento non al untatore stesso ma a ció che esso unta) IL LINGUAGGIO C - IL TIPO PUNTATORE 1

2 Esemi: int *; /* è un untatore ad int */ int x = 0; situazione iniziale *= 10; x = *; x 0 x 0 x 10 indef Oeratore indirizzo di & È l oeratore unario che alicato ad una variabile o elemento di array X ne restituisce il suo indirizzo. &X è l indirizzo della variabile X, quindi è un untatore a X IL LINGUAGGIO C - IL TIPO PUNTATORE 2

3 Esemi: int *; /* è un untatore ad int */ int x = 0, y; situazione iniziale = &x; x 0 indef y indef y = *; x 0 x 0 y indef y 0 Si introduce un altra variabile untatore int *q; /* q è un untatore ad int */ q = ; q x 0 y 0 IL LINGUAGGIO C - IL TIPO PUNTATORE 3

4 PUNTATORI ED ARRAY In C c e una forte relazione tra untatori ed array derivante dal fatto che gli elementi di un array vengono allocati in memoria in celle consecutive. La dimensione di tali celle diende dal tio degli elementi dell array. Esemi (il simbolo? indica un valore indefinito): int *; /* è un untatore ad int */ int a[5]; /* a è un array di 5 interi */ Situazione iniziale? a:????? a[0] a[1] a[2] a[3] a[4] = &a[0]; a:????? a[0] a[1] a[2] a[3] a[4] ++; a:????? a[0] a[1] a[2] a[3] a[4] *(+2)=7; a:??? 7? a[0] a[1] a[2] a[3] a[4] IL LINGUAGGIO C - IL TIPO PUNTATORE 4

5 PUNTATORI ED ARRAY - 2 Per definizione, data una variabile a di tio array il suo valore è l indirizzo dell elemento zero dell array. Pertanto =&a[0]; equivale a =a; In C, la relazione tra untatori e array è anche sintattica: Se si dichiara un array a: a[i] uò essere scritto come &a[i] uò essere scritto come Se si dichiara un untatore : *(+i) uò essere scritto come *(a+i) a+i [i] In C, l unica differenza tra untatori e array è la seguente: int *; /* è un untatore ad int */ int a[5]; /* a è un array di 5 interi */ è una variabile di tio untatore, quindi è lecito fare ++ e =a; a è una variabile di tio array, quindi non è lecito fare a++ e a=; Le recedenti considerazioni sono valide anche er array multidimensionali. Esemi: int *; /* è un untatore ad int */ int a[5][10]; /* a è un array di 5X10 interi */ =&a[0][0]; =+2; /* ora unta all elemento a[0][2] */ =+9; /* ora unta all elemento a[1][1] */ IL LINGUAGGIO C - IL TIPO PUNTATORE 5

6 OPERAZIONI SULLE VARIABILI DI TIPO PUNTATORE l assegnamento dell indirizzo di una variabile tramite l oeratore & l oerazione di dereferenziazione, tramite l oeratore *; l assegnamento del valore di un altro untatore; oerazioni aritmetiche di somma e di sottrazione, di incremento e decremento È generalmente ossibile sommare e sottrarre variabili untatore che untano allo stesso tio di dato tra di loro o con interi. È imortante osservare che in tali oerazioni si considera il valore logico del untatore e non quello reale: Se ad esemio è un untatore ad un tio che occua due byte di memoria, la situazione uò essere schematizzata come segue: 0000 memoria:??????? ? 1111 allora l istruzione =+2; rovoca l incremento di 2 del valore logico che equivale ad un incremento di 4 del valore reale: 0100 memoria:??????? ? 1111 Per questo motivo, tali oerazioni sono generalmente significative solo nel caso in cui si tratti di untatori ad elementi di un array. IL LINGUAGGIO C - IL TIPO PUNTATORE 6

7 Esemi: OPERAZIONI SULLE VARIABILI DI TIPO PUNTATORE - 2 int *,*q; /* e q sono untatori ad int */ char *y /* y e un untatore a char*/ int a[5]; /* a è un array di 5 interi */ =&a[2]; /* unta all elemento a[2] dell array */ q=&a[4]; /* unta all elemento a[4] dell array */ allora q- ha valore 2, ovvero il numero di elementi esistenti tra l elemento a cui unta q e l elemento a cui unta. =-q; //NO if (>q); // SI if (>y); // NO if (-q==2); // SI if (+q==2); // NO if (-y==2); // NO l assegnamento del valore NULL: se una variabile untatore P ha valore NULL *P è indefinito. In effetti, NULL è una costante intera di valore zero definita in <stdio.h>. Il valore zero è l unico valore intero che uò essere assegnato ad un untatore. il confronto basato sugli oeratori relazionali Generalmente il confronto uò essere fatto tra due generici untatori che untano allo stesso tio di dato; questo confronto è comunque significativo solo nel caso in cui due untatori e q untano agli elementi dello stesso array: in tal caso, ad esemio, <q significa che unta ad un elemento che recede quello untato da q. IL LINGUAGGIO C - IL TIPO PUNTATORE 7

8 STRINGHE E PUNTATORI Costante stringa È una sequenza di caratteri racchiusa tra "..." È considerata un array di caratteri, terminato con il carattere nullo '\0' Ad esemio, la costante "e una rova" equivale al seguente array e ' u n a r o v a \0 Allora, se si definisce char *; /* è un untatore ad un carattere */ è ossibile la seguente istruzione = "e una rova"; che assegna al untatore l indirizzo dell elemento zero dell array di caratteri. e ' u n a r o v a \0 Esemio: coia della stringa untata da nella stringa untata da q. char *,*q; = "e una rova"; q = "stringa da sostituire"; while (*!= \0 ){ } *q = *; ++; q++; *q= \0 ; Si noti che con l istruzione q=; si sarebbero coiati solo i untatori e non i caratteri. IL LINGUAGGIO C - IL TIPO PUNTATORE 8

9 PUNTATORI E FUNZIONI int LunghezzaStringa(char *S) { int lunghezza=0; /* la lunghezza di una stringa vuota e 0 */ while (*S!='\0'){ lunghezza++; S++; } return lunghezza; } /* fine della funzione LunghezzaStringa */ #include <stdio.h> main() { char *; int LunghezzaStringa(char *S); /* rototio */ rintf("%d\n",lunghezzastringa()); /* il risultato è indefinito */ = "e una rova"; rintf("%d\n",lunghezzastringa()); /* il risultato è 12 */ = ""; rintf("%d\n",lunghezzastringa()); /* il risultato è 0 */ } /* fine del main */ IL LINGUAGGIO C - IL TIPO PUNTATORE 9

10 ARRAY E FUNZIONI Quando il nome di un array è assato ad una funzione, viene assata la locazione dell elemento iniziale. main() { char a[10]; int LunghezzaStringa(char *S); \* rototio *\ rintf("%d\n",lunghezzastringa(a)); /* il risultato è indefinito */ rintf("%d\n",lunghezzastringa("e una rova")); /* il risultato è 12 */ rintf("%d\n",lunghezzastringa("")); /* il risultato è 0 */ } /* fine del main */ IL LINGUAGGIO C - IL TIPO PUNTATORE 10

11 PUNTATORI E FUNZIONI: ESEMPI /* restituisce 1 se S==T, 0 se S!=T */ int StringaUgualeA(char *S, char *T) { while (*S==*T) { if (*S== '\0') return 1; S++; T++; } return 0; } /* restituisce 1 se S<T, 0 se S==T oure se S>T */ int StringaMinoreDi(char *S, char *T) { int risult; while (*S==*T) { if (*S== '\0') return 0; S++; T++; } risult = (*S<*T); return risult; } IL LINGUAGGIO C - IL TIPO PUNTATORE 11

12 COMPOSIZIONE DI TIPI PUNTATORI Il costruttore di tio * uò essere innestato con se stesso e con gli altri costruttori di tii strutturati (array e record). tyedef int *PuntInt; tyedef PuntInt *DoioPuntInt; DoioPuntInt ; PuntInt *qq; int **rr; PuntInt, q; int x=0; La variabile di tio DoioPuntInt unta ad una variabile di tio PuntInt che quindi a sua volta unta ad una variabile di tio int. Lo stesso effetto si ottiene con le variabili qq e rr. IL LINGUAGGIO C - IL TIPO PUNTATORE 12

13 COMPOSIZIONE DI TIPI PUNTATORI CON TIPI RECORD tyedef struct { int Giorno, Mese, Anno; } Data; Data *P; Data D; P =&D; (*P).Anno=1997; Le arentesi in (*P).Anno sono necessarie in quanto l oeratore. ha una recedenza iù alta di quella dell oeratore di dereferenziazione *: senza arentesi *P.Anno signidfica *(P.Anno) che è un errore in quanto Anno non è un untatore. Siccome i untatori alle strutture sono molto frequenti, in C c è l oeratore -> in modo da oter scrivere l esressione (*P).Anno=1997 come P->Anno=1997; In generale se P è un untatore ad un record e NomeCamo è il nome di un camo di tale record, allora: P->NomeCamo è il valore del camo NomeCamo. IL LINGUAGGIO C - IL TIPO PUNTATORE 13

14 Allocazione e deallocazione di memoria in C: malloc e free In molti rogrammi non si uó saere a riori quanto sazio di memoria er le variabili si deve utilizzare - si legge da un file una serie di numeri da mettere in un array à quanto va dichiarato grande l array; - si leggono dei dati forniti dall utente in modo interattivo e imrevedibile - 1 Soluzione (ERRATA): Dichiarare tante variabili quante ne otrebbero servire nel caso eggiore. C e sreco di memoria e uó darsi non si saia quale è il caso eggiore - 2 Soluzione (GIUSTA): Si usa un metodo che ermette, dinamicamente durante l esecuzione di un rogramma, di allocare memoria al rogramma e, eventualmente, deallocarla. Esiste uno sazio di memoria aosito nei sistemi di calcolo moderni (chiamato HEAP) che viene messo a disosizione dei rogrammi rorio dal Sis. O. La Libreria Standard mette a disosizione funzioni e costanti er gestire la memoria HEAP. - la funzione di allocazione malloc - la funzione di deallocazione free, entrambe dichiarate nel header file stdlib.h - la costante NULL, con valore 0, che indica il valore nullo er una variabile untatore. IL LINGUAGGIO C - IL TIPO PUNTATORE 14

15 MALLOC La funzione di allocazione malloc, che ha la seguente intestazione: void *malloc(int NumByte) alloca NumByte byte di memoria e restituisce un untatore a tale memoria. restituisce il untatore NULL se non è ossibile allocare la memoria richiesta (ad esemio, erchè non c è memoria sufficiente). Il untatore restituito da malloc è un untatore al tio generico void e er oterlo utilizzare si deve effettuare il casting al tio aroriato. Esemio, er allocare dinamicamente una variabile intera (2 byte) si otrebbe fare int *P; P = (int*)malloc(2); erò la dimensione del tio int diende dal comilatore e inoltre non semre è facile calcolare la dimensione della variabile da allocare (si ensi ad una variabile di tio record). Generalmente si usa come argomento della malloc l'oeratore sizeof: P = (int*)malloc(sizeof(int)); IL LINGUAGGIO C - IL TIPO PUNTATORE 15

16 FREE Doo che la variabile dinamica è stata utilizzata e non è iù necessaria, sarebbe meglio rimuoverla eslicitamente in modo da recuerare la memoria che essa occuava. Funzione di deallocazione free, la cui intestazione è la seguente: void free(void *P) Pertanto l'istruzione free(p) libera l area di memoria indirizzata da P e successive chiamate di malloc otranno, eventualmente, riutilizzare tale area er l allocazione di altre variabili dinamiche. La erdita del valore del untatore P rima che sia effettuata la free(p) rende imossibile il riuso degli sazi. free(p) lascia P con valore indefinito, ertanto doo la sua esecuzione il untatore che ne è argomento non uò essere riutilizzato a meno che non gli si assegni un valore valido. Se P è un untatore ad un area di memoria non ottenuta con malloc è un errore usare free(p) er liberare tale area. Alcuni linguaggi, come Lis e Java, hanno dei meccanismi automatici di recuero della memoria detti sazzini (garbage collector), viceversa in C è meglio gestire con cura allocazioni e deallocazioni di memoria. IL LINGUAGGIO C - IL TIPO PUNTATORE 16

17 Esemio: variabile dinamica di tio integer #include <stdio.h> #include <stdlib.h> main(){ tyedef int TI; /* dichiara tio er la variabile dinamica */ tyedef TI *PTI; /* dichiara il tio untatore */ PTI P; /* dichiara la variabile untatore (statica) */ P=(int *)malloc(sizeof(int)); /* creazione della variabile dinamica*/ *P = 3; /* si accede in assegnamento alla variabile dinamica*/ rintf("%d",*p); /* accesso alla variabile dinamica*/ free(p); /* rimozione della variabile dinamica */ } Prima dell'istruzione P=(int *)malloc(sizeof(int)); la variabile P ha, come tutte le variabili non inizializzate, un valore indefinito; di conseguenza il valore untato, *P, è indefinito e la modifica di tale valore deve essere evitata in quanto uò causare errori durante l'esecuzione del rogramma. Si noti che la variabile dinamica esiste indiendentemente dal blocco all'interno del quale è stata creata; la sua visibilità è legata soltanto alla disonibilità del untatore. IL LINGUAGGIO C - IL TIPO PUNTATORE 17

18 Array dinamici Sfruttando la forte relazione tra untatori ed array, una variabile dinamica di tio array, cioè un array di dimensioni non refissate all'atto della sua dichiarazione ma stabilito durante l'esecuzione del rogramma, uò essere utilizzato in modo molto omogeneo risetto ad un array statico. Esemio: vettore dinamico #include <stdio.h> #include <stdlib.h> main(){ int *VettoreDinamico; /* vettore dinamico */ int I,N; rintf("inserire dimensioni vettore dinamico"); scanf("%d",&n); VettoreDinamico =(int *)malloc(n*sizeof(int)); /* Acquisizione : Notazione come "untatore" */ for (I=0;I<N;I++) scanf("%d",(vettoredinamico+i)); /* Stama : Notazione come "untatore" */ for (I=0;I<N;I++) rintf("%d\n",*(vettoredinamico+i)); /* Acquisizione: Notazione come "array" */ for (I=0;I<N;I++) scanf("%d",&vettoredinamico[i]); /* Stama : Notazione come "array" */ for (I=0;I<N;I++) rintf("%d\n",vettoredinamico[i]); free(vettoredinamico); } /* end main */ IL LINGUAGGIO C - IL TIPO PUNTATORE 18

19 COMPOSIZIONE DI TIPI STRUTTURATI Per array e record non si è osto alcun vincolo sui tii utilizzati nelle comonenti. - È ossibile utilizzare come comonenti dei tii a loro volta strutturati: matrici di record, record di matrici, record di record, etc etc, - E ossibile usare, a qualsiasi livello, anche il costruttore di tio untatore. - Esistono in generale dei limiti al numero di innestamenti ossibili, che diendono dallo secifico comilatore. Esemio: Corso raresentato come un array di ersone #define NumCar 16 #define MaxStud 30 tyedef char Parola[NumCar]; tyedef struct { Parola Nome; Data Nascita; } Persona; Persona Corso[MaxStud]; /* Iniziale dell'ultima ersona del corso /* Corso[MaxStud-1].Nome[0]; /* Anno di nascita della rima ersona del corso /* Corso[0].Nascita.Anno; IL LINGUAGGIO C - IL TIPO PUNTATORE 19

20 Esemio: Gioco del tresette tyedef enum {Sade,Coe,Denari,Bastoni} TioSegno; tyedef enum {Uno,Due,Tre,Quattro, Cinque,Sei,Sette, Fante,Cavallo,Re } TioValore; tyedef struct { TioSegno Segno; TioValore Valore; } TioCarta; /* ad ogni mano giocano 4 giocatori con 10 carte /* TioCarta ManoDiTresette[4][10]; /* se il giocatore 2 ha come terza carta un bastoni /* if (ManoDiTresette[2][3].Segno==Bastoni) IL LINGUAGGIO C - IL TIPO PUNTATORE 20

21 Esemio: Comosizione di tii untatori con tii record tyedef struct{ int Giorno, Mese, Anno; } Data; Data *P; Data D; P =&D; (*P).Anno=2000; Le arentesi in (*P).Anno sono necessarie in quanto l oeratore. di selezione di un camo del record ha una recedenza iù alta di quella dell oeratore di dereferenziazione *: senza arentesi *P.Anno significa *(P.Anno) che è un errore in quanto Anno non è un untatore. Per semlificare esressioni di questo tio, è meglio usare l oeratore unario à in questo modo: (*P).Anno è equivalente a P->Anno IL LINGUAGGIO C - IL TIPO PUNTATORE 21

22 Esemio: Array dinamico di record Dato il tio tyedef struct { int matricola; int eta; } Studente; scrivere la funzione Studente *CreaStudente(int n); che alloca ed acquisisce da inut un array di n studenti e restituisce un untatore al rimo studente. Usare tale funzione in un rogramma. #include <stdio.h> #include <stdlib.h> tyedef struct { int matricola; int eta; } Studente; Studente *CreaStudente(int n){ Studente *V; int I; V=(Studente *)malloc(n * sizeof(studente)); for(i=0;i<n;i++){ scanf("%d",&v[i].matricola); scanf("%d",&v[i].eta); } return V; } IL LINGUAGGIO C - IL TIPO PUNTATORE 22

23 main(){ Studente *P; /* variabile untatore (statica) */ int I; P=CreaStudente(2); /*crea la variabile dinamica*/ /* uso della variabile dinamica */ for(i=0;i<2;i++) rintf("matricola %d, Eta %d \n", P[I].matricola,P[I].eta); free(p); /* rimuove la variabile dinamica */ } /* end main */ Si noti la recedenza degli oeratori nell'esressione &V[I].matricola: rima si alica l'oeratore di accesso al vettore (V[I]) ottenendo un elemento che è un record, al quale si alica l'oeratore di selezione del camo del record (V[I].matricola) ottenendo una variabile di tio int, che viene acquisita nella scanf anteonendo l'oeratore indirizzo. IL LINGUAGGIO C - IL TIPO PUNTATORE 23

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in

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

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

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 scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

INFORMATICA - I puntatori Roberta Gerboni

INFORMATICA - I puntatori Roberta Gerboni 1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Programmazione. Laboratorio. Roberto Cordone DI - Università degli Studi di Milano

Programmazione. Laboratorio. Roberto Cordone DI - Università degli Studi di Milano Gestione della memoria p. 1/11 Programmazione Laboratorio Roberto Cordone DI - Università degli Studi di Milano Tel. 02 503 16235 E-mail: roberto.cordone@unimi.it Ricevimento: su appuntamento Lezioni:

Dettagli

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto

Dettagli

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Le operazioni di allocazione e deallocazione sono a carico del sistema. Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione

Dettagli

La gestione della memoria

La gestione della memoria La gestione della memoria DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

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

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Record in C: il costruttore struct.

Record in C: il costruttore struct. Record in C: il costruttore struct. Le variabili di tipo record e i nuovi tipi record si dichiarano in C tramite il costruttore di tipo struct:. ::= ;

Dettagli

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Dettagli

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Concetto di Funzione e Procedura METODI in Java

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

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

http://esamix.labx Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

http://esamix.labx Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( ) Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

Una proposizione è una affermazione di cui si possa stabilire con certezza il valore di verità

Una proposizione è una affermazione di cui si possa stabilire con certezza il valore di verità Logica 1. Le roosizioni 1.1 Cosa studia la logica? La logica studia le forme del ragionamento. Si occua cioè di stabilire delle regole che ermettano di assare da un'affermazione vera ad un'altra affermazione

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

void funzioneprova() { int x=2; cout<<dentro la funzione x=<<x<<endl; } FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo

Dettagli

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore. 1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30' Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di

Dettagli

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione

Dettagli

Puntatori Passaggio di parametri per indirizzo

Puntatori Passaggio di parametri per indirizzo Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Puntatori Passaggio di parametri per indirizzo Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

Dettagli

Compito di Fondamenti di Informatica

Compito di Fondamenti di Informatica Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette

Dettagli

Vettori Algoritmi elementari di ordinamento

Vettori Algoritmi elementari di ordinamento Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Vettori Algoritmi elementari di ordinamento Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale

Dettagli

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 15: Puntatori e stringhe Vittorio Scarano Corso di Laurea in Informatica Puntatori Relazione con gli arrays Aritmetica dei untatori Allocazione dinamica di memoria Puntatori

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Problem solving elementare su dati vettoriali

Problem solving elementare su dati vettoriali Problem solving elementare su dati vettoriali Introduzione Verifiche su sequenze di dati Selezione o ricerca di dati 2 2006 Politecnico di Torino 1 Introduzione (1/2) I problemi di verifica consistono

Dettagli

Tipi di dato-prima parte

Tipi di dato-prima parte Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) Tipi di dato-prima parte Ing. Agnese Pinto 1 di 15 Tipi di dato Sommario Tipi di dato Classificazione dei tipi di dato Tipi

Dettagli

Puntatori in C. Fondamenti di Informatica. Daniele Loiacono

Puntatori in C. Fondamenti di Informatica. Daniele Loiacono Puntatori in C Fondamenti di Informatica Puntatori Come è fatta la memoria del calcolatore? Un modello concettuale della memoria q La memoria centrale di un calcolatore è una sequenza di celle numerate

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Progettazione di un Database

Progettazione di un Database Progettazione di un Database Per comprendere il processo di progettazione di un Database deve essere chiaro il modo con cui vengono organizzati e quindi memorizzati i dati in un sistema di gestione di

Dettagli

Lab 11 Gestione file di testo"

Lab 11 Gestione file di testo Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 11 Gestione file di testo" Lab15 1 Esercizio 1 n Realizzare un programma che, aperto un file di testo di nome

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Riferimenti ed Oggetti

Riferimenti ed Oggetti Riferimenti e oggetti Riferimenti ed Oggetti In non si possono definire variabili di tipo oggetto ma solo di tipo riferimento a oggetto. I riferimenti sono assimilabili ai tipi base. Allocazione statica

Dettagli

Calcolare il massimo di una lista

Calcolare il massimo di una lista Calcolare il massimo di una lista Ieri abbiamo imparato a calcolare il massimo di una lista predefinita: lista = [4,24,-89,81,3,0,-12,31] max = lista[0] # questo e' un commento: primo elemento di lista

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Alcune regole di base per scrivere un programma in linguaggio C

Alcune regole di base per scrivere un programma in linguaggio C Alcune regole di base per scrivere un programma in linguaggio C Un programma il linguaggio C (listato) viene scritto in formato testo ed archiviato in un file: *.c Per scrivere un listato C si utilizza

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VI Tatiana Zolo tatiana.zolo@libero.it 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Le stringhe. Le stringhe

Le stringhe. Le stringhe Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è

Dettagli

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

http://www.programmiamo.altervista.org/c/oop/o...

http://www.programmiamo.altervista.org/c/oop/o... PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 4: Ereditarietà, interfacce e clonazione Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

Esercizio 1. Esercizio 2

Esercizio 1. Esercizio 2 Esercizio 1 Realizzare un programma che, aperto un file di testo di nome Prova.txt in modalità scrittura, provveda a leggere da input delle parole separate da spazi (stringhe di al più 63 caratteri) e

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth ed é un linguaggio di programmazione strutturata. I linguaggi di programmazione

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

DB - Modello relazionale dei dati. DB - Modello Relazionale 1 DB - Modello relazionale dei dati DB - Modello Relazionale 1 Definizione Un modello dei dati è un insieme di meccanismi di astrazione per definire una base di dati, con associato un insieme predefinito

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools Una breve introduzione operativa a STGraph Luca Mari, versione 5.3.11 STGraph è un sistema software per creare, modificare ed eseguire modelli di sistemi dinamici descritti secondo l approccio agli stati

Dettagli

Problemi legati all'uso dei Puntatori

Problemi legati all'uso dei Puntatori Problemi legati all'uso dei Puntatori 1. Aree inutilizzabili: Possibilità di erdere l'indirizzo di aree di memoria allocate al rogramma che uindi non sono iù accessibili. (v. esemio recedente). 2. Riferimenti

Dettagli