Un puntatore è una variabile che contiene l indirizzo di una variabile. Una variabile di tipo puntatore è dichiarata tramite il costruttore di tipo *
|
|
- Marina Turco
- 8 anni fa
- Visualizzazioni
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 L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
DettagliAllocazione 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
DettagliGli 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
DettagliFondamenti 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
DettagliStrutture. 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
DettagliINFORMATICA - 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
DettagliFunzioni 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
DettagliProgrammazione. 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:
DettagliAppunti 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
DettagliLe 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
DettagliLa 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/
Dettaglidall 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 È
DettagliUniversità 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
DettagliLaboratorio 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
Dettaglipuntatori 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
DettagliUniversità 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)
DettagliTipi 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
DettagliLezione 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
DettagliIntroduzione 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
DettagliInizializzazione, 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
DettagliRecord 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:. ::= ;
Dettaglicostruttori 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,
DettagliProgrammazione 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
DettagliCorso 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
DettagliIntroduzione 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
DettagliConcetto 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
Dettagli12 - 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,
Dettagli13 - 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/
DettagliAlgebra 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
Dettaglihttp://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
DettagliUna 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
DettagliPer 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
Dettaglivoid 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
Dettagli2. 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
DettagliOrganizzazione 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
Dettagli3. 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
DettagliFondamenti 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
DettagliMATLAB. 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
DettagliPuntatori 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
DettagliFondamenti 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
DettagliFunzioni. 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
DettagliCompito 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
DettagliVettori 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
DettagliCorso 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
DettagliGestione 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
DettagliStruttura 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
DettagliRichiesta 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
DettagliCapitolo 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
DettagliLaboratorio 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
DettagliLe 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
DettagliCOS È 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
DettagliProblem 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
DettagliTipi 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
DettagliPuntatori 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
DettagliStrutturazione 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
DettagliINFORMATICA 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
DettagliProgettazione 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
DettagliLab 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
DettagliRealizzazione 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
DettagliRiferimenti 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
DettagliCalcolare 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
DettagliSistema 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
DettagliLINGUAGGI 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
DettagliDall 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
DettagliAlcune 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
DettagliAppunti 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)
DettagliAppunti 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)
DettagliNascita 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
DettagliLa 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,
DettagliLaboratorio 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
DettagliIntroduzione 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
DettagliEsercizi 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à
DettagliLe 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" è
DettagliRealizzazione 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
DettagliOggetti 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
DettagliEsempio: 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
Dettagli3 - 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
Dettaglihttp://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.
DettagliModulo 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
DettagliVariabili 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
DettagliInformatica 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,
DettagliIntroduzione 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
DettagliDI 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
DettagliIndirizzo 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
DettagliAlgoritmi 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
DettagliSISTEMI 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
DettagliPROCEDURA 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
DettagliEsercizio 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
DettagliJava: 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
DettagliCodifica: 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
DettagliArduino: 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
DettagliLa 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
DettagliAPPUNTI 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
DettagliLaboratorio 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
Dettagli4 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
DettagliDB - 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
DettagliI 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à
DettagliE 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
DettagliProblemi 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