Esercitazione 9. Strutture ed Enumerazioni. Allocazione dinamica di memoria

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercitazione 9. Strutture ed Enumerazioni. Allocazione dinamica di memoria"

Transcript

1 Esercitazione 9 Strutture ed Enumerazioni Allocazione dinamica di memoria

2 Typedef La parola chiave typedef viene usata per assegnare un alias a un qualsiasi tipo, fondamentale o derivato. Esempio typedef char * Stringa; Stringa s1, s2; Il tipo char *, cioè il tipo puntatore a carattere, viene ribattezzato Stringa. Quindi si definiscono due variabili, s1 e s2 di tipo Stringa.

3 Typedef typedef int Interi; // Il tipo int viene ribattezzato Interi typedef Stringa Lista_spesa[30]; Lista_spesa tab; tab[0]= pane ; tab[1]= latte ; Lista_spesa è il tipo array di 30 puntatori a carattere. La variabile tab di tipo Lista_spesa è un array di puntatori a carattere, di cui inizializzo i prime due.

4 Tipi derivati A partire dai tipi fondamentali (int, float, double, char) è possibile costruire nuovi tipi, detti tipi derivati. Gli array e i puntatori sono esempi di tipi derivati, nel senso che per essere specificati hanno bisogno di riferirsi a un tipo base. Altri esempi di tipi derivati sono i tipi structure (strutture) i tipi enumerazione

5 Tipi structure Esempio Il seguente tipo struttura rappresenta il concetto di data. struct Data { int giorno; char *mese; int anno; } ; /* dichiarazione del tipo data */ Questa dichiarazione introduce un nuovo tipo, il tipo Data. È ora possibile dichiarare variabili di tipo struct Data nel seguente modo: struct Data ieri, oggi; /* ieri e oggi sono variabili di tipo struct Data */ La variabile oggi è una variabile strutturata composta di tre campi: due di tipo int - giorno e anno - e una di tipo stringa - mese.

6 Tipi structure La sintassi generale per la definizione di un tipo struttura è: struct nome_struttura { tipo_campo1 nome_campo1; tipo_campo2 nome_campo2;... tipo_campon nome_campon; } ; Gli elementi di una struttura sono detti campi; essi sono identificati da un nome e da un tipo che può essere sia fondamentale che derivato. La struttura così definita è un nuovo tipo a tutti gli effetti. Si possono definire variabili di tipo struct nome_struttura come segue: struct nome_struttura nome_variabile;

7 typedef e tipi structure Esempio typedef struct { int giorno; char *mese; int anno; } Data ; /* dichiarazione del tipo Data */ Questa dichiarazione introduce un nuovo nome per il tipo struttura. È ora possibile dichiarare variabili di tipo Data nel seguente modo: Data ieri, oggi; /* ieri e oggi sono variabili di tipo Data */

8 Esempio La seguente definizione introduce la struttura Automobile. Vengono dichiarate quindi due variabili di tipo Automobile, a1 e a2. typedef struct { char *marca; char *modello; int numero_vendute; } Automobile; Automobile a1, a2;

9 Tipi structure Per accedere ai campi di una variabile di tipo struttura si fa uso dell operatore punto (.) ESEMPIO Si consideri la struttura Data e le variabili ieri e oggi di tipo Data. Possiamo inizializzare le variabili ieri e oggi nel seguente modo: oggi.giorno = 2; oggi.mese = Dicembre ; oggi.anno = 2004; ieri.anno = oggi.anno; printf( %d %s %d, oggi.giorno, oggi.mese, oggi.anno);

10 Operazioni su strutture Si possono assegnare variabili di tipo struttura a variabili dello stesso tipo struttura. Data d1, d2;... d1 = d2; Nota: questo permette di assegnare interi vettori. typedef struct { int a[12]; char b; } Prova x, y;... x = y; Non è possibile effettuare il confronto tra due variabili di tipo struttura. Data d1, d2; if (d1 == d2)... Errore!

11 Esempio /* definizione della struttura Automobile */ #define <stdio.h> typedef struct { char *marca; char *modello; int numero_vendute; } Automobile; int main ( ) { Automobile a1, a2; (continua)

12 a1.marca = FERRARI ; a1.modello = F40 ; a1.numero_vendute = 200; a2.marca = OPEL ; a2.modello = ASTRA ; a2.numero_vendute = 2000; printf ( marca auto = %s\n, a1.marca); printf ( modello auto = %s\n, a1.modello); printf ( vendute = %d\n, a1.numero_vendute); printf ( marca auto = %s\n, a2.marca); printf ( modello auto = %s\n, a2.modello); printf ( vendute = %d\n, a2.numero_vendute); }

13 ESERCIZIO Stabilire se il seguente codice e sintatticamente corretto e, in tal caso, cosa produce a video. typedef struct { int a; } S1; typedef struct { int a; } S2; S1 bob, ric; S2 gio; bob.a = 30; ric = bob; gio = bob; printf ( %d, %d, %d \n, bob.a, ric.a, gio.a);

14 SOLUZIONE typedef struct { int a; } S1; typedf struct { int a; } S2; S1 bob, ric; S2 gio; bob.a = 30; ric = bob; gio = bob; /* errore: non si può assegnare una variabile di tipo S1 a una di tipo S2 */ printf ( %d, %d, %d \n, bob.a, ric.a, gio.a);

15 ESERCIZIO Stabilire se il seguente codice e sintatticamente corretto e, in tal caso, cosa produce a video. typedef struct { int giorno; char *mese; int anno; } Data; Data *pd, compleanno; pd = &compleanno; *pd.giorno = 20; *pd.mese = Novembre ; *pd.anno = 2003; printf ( Il mio compleanno e il: %d, %s, %d \n, compleanno.giorno, compleanno.mese, compleanno.anno);

16 SOLUZIONE typedf struct { int giorno; char *mese; int anno; } Data; Data *pd, compleanno; pd = &compleanno; *pd.giorno = 29; /* errore: poiché l operatore. ha priorità *pd.mese = Novembre ; maggiore rispetto all operatore * bisogna *pd.anno = 2002; usare le parentesi: (*pd).giorno..., (*pd).mese..., (*pd).anno... */ printf ( Il mio compleanno e il: %d, %s, %d \n, compleanno.giorno, compleanno.mese, compleanno.anno);

17 ESERCIZIO Stabilire se il seguente codice e sintatticamente corretto e, in tal caso, cosa produce a video. typedef struct { int giorno; char *mese; int anno; } Data; Data compleanno = { 29, Novembre, 2002 }; Data *pd; pd = &compleanno; pd -> giorno = compleanno -> giorno; pd -> mese = compleanno -> mese; pd -> anno = compleanno -> anno; printf ( Il mio compleanno : %d, %s, %d \n, pd.giorno, pd.mese, pd.anno);

18 SOLUZIONE typedef struct { int giorno; char *mese; int anno; } Data; Data compleanno = { 29, Novembre, 2002 }; Data *pd; pd = &compleanno; pd -> giorno = compleanno -> giorno; pd -> mese = compleanno -> mese; pd -> anno = compleanno -> anno; / / errore: compleanno.giorno / / errore: compleanno.mese / / errore: compleanno.anno printf ( Il mio compleanno : %d, %s, %d \n, pd.giorno, pd.mese, pd.anno); / / errore: pd->giorno, pd->mese, pd->anno

19 Esercizio Scrivere una funzione che, dato un puntatore a una variabile di tipo Data, restituisce il numero del mese relativo alla data puntata dal puntatore in caso di errore, restituisce 0.

20 SOLUZIONE int numero_mese (Data *pd) { if (! strcmp(pd -> mese, Gennaio )) /* l operatore -> permette return (1); di accedere direttamente ai campi di una variabile strutturata puntata da un puntatore */ if (! strcmp (pd -> mese, Febbraio )) return (2);... if (! strcmp (pd -> mese, Dicembre )) return (12); return (0); }

21 Strutture di Strutture In C è possibile definire strutture di strutture Regola: le strutture che compaiono nei campi di una struttura devono essere state definite prima della struttura che le contiene.

22 Esempio Definire una struttura utile per la gestione di un autosalone. typedef struct { int giorno; char *mese; int anno; } Data; typedef struct { char *marca; char *modello; int numero_vendute; Data data_prima_produzione; } Automobile; Automobile salone[100];

23 Esempio Definire una struttura utile per la gestione di un conto corrente. typedef struct { int giorno; char *mese; int anno; } Data; typedef struct { int numero_conto; char nome[80]; float bilancio; Data ultimo_movimento; } Conto_corrente;

24 Tipi enumerazione Spesso si ha l esigenza di definire un insieme finito di valori alternativi da associare ad un oggetto. Ad esempio i 4 semi delle carte da poker sono cuori, fiori, quadri, picche. In genere si memorizzano questi valori associando un numero costante univoco a ciascuno. Perciò si potrebbe scrivere const int cuori = 1; const int fiori = 2; const int quadri = 3; const int picche = 4; Questa tecnica ha dei punti deboli. Il principale è che non c e modo di restringere l insieme dei valori assegnabili ad una variabile ai soli cuori, fiori, quadri, picche.

25 Tipi enumerazione I tipi enumerazione forniscono un metodo alternativo non solo per definire ma anche per raggruppare insiemi di costanti. Ad esempio: enum Seme {cuori = 1, fiori, quadri, picche} ; Così ho dichiarato un nuovo tipo enum Seme, che è un tipo enumerazione. I valori che appartengono al tipo enum Seme sono solo quattro: cuori, fiori, quadri, picche, e corrispondono agli interi 1,2,3 e 4. Nota: per default, al primo enumeratore è assegnato il valore 0 e ai successivi i valori 1,2,ecc... Noi abbiamo assegnato a cuori il valore 1. A fiori è assegnato automaticamente il valore 2, a quadri il valore 3 e a picche il valore 4.

26 typedef e tipi enumerazione Esempio: typedef enum Seme {cuori = 1, fiori, quadri, picche} Seme ; Seme p, s; Così ho rinominato il tipo enum Seme con il nuovo nome Seme. p ed s sono due variabili di tipo Seme.

27 Tipi enumerazione Oggetti di tipo enumerazione possono essere definiti, prendere parte a espressioni ed essere passati come argomenti a funzioni. Un oggetto di tipo enumerazione può essere inizializzato con - oppure è possibile assegnargli - solo un oggetto dello stesso tipo enumerazione. Esempio typedef enum Seme {cuori = 1, fiori, quadri, picche} Seme; Seme s = quadri; /* corretto, corrisponde a s = 3 */ Seme p = 4; /* corretto (ma brutto ), equivale a p = picche */ s = p; /* corretto */

28 Tipi enumerazione Non è possibile stampare i nomi effettivi degli enumeratori. Esempio typedef enum Seme {cuori = 1, fiori, quadri, picche} Seme; Seme s = quadri; printf( s = %d, s); /* stampa s = 3 */

29 Esercizio Dire cosa stampa il seguente frammento di codice. typedef enum Seme {cuori = 1, fiori, quadri, picche} Seme; typed struct { Seme seme; int numero; } Carta; Carta carta1, carta2; carta1.seme = cuori; carta1.numero = 1; carta2.seme = quadri; carta2.numero = 10; carta1 = carta2; printf( seme carta 1 = %d\n, carta1.seme); printf( numero carta 1 = %d\n, carta1.numero);

30 Soluzione typedef enum Seme {cuori = 1, fiori, quadri, picche} Seme; typedef struct { Seme seme; int numero; } Carta; stampa Carta carta1, carta2; carta1.seme = cuori; seme carta 1 = 3 carta1.numero = 1; numero carta 1 = 10 carta2.seme = quadri; carta2.numero = 10; carta1 = carta2; printf( seme carta 1 = %d\n, carta1.seme); printf( numero carta 1 = %d\n, carta1.numero);

31 Esercizio Consideriamo il seguente tipo di dato: typedef struct Student{ char cognome[15]; char nome[15] int voto; } Studente; Vogliamo costruire delle procedure che ci permettano di lavorare con tabelle di studenti: riempirle (con dati immessi dall utente), ordinarle in ordine alfabetico, stamparle, ecc.

32 void leggi(studente classe[], int nstudenti){ int i; for ( i = 0 ; i < nstudenti ; i++ ){ } } printf("\ncognome = "); scanf("%s", classe[i].cognome); printf("nome = "); scanf("%s", classe[i].nome); printf("voto = "); scanf("%d", &classe[i].voto) ; Viene passato il riferimento all array (nessuna copia!) void scrivi(studente classe[], int nstudenti){ int i; for ( i = 0 ; i < nstudenti ; i++ ){ printf("\n cognome = %s classe[i].cognome); printf("\n nome = %s", classe[i].nome); printf("\n voto = %d\n", classe[i].voto); } }

33 Ordinamento per inserzione passi successivi 0 1 i-1 i Parte già ordinata Elemento da considerare adesso

34 Ordinamento per inserzione passi successivi 0 1 i-1 i temp 5 Elemento da considerare adesso

35 Ordinamento per inserzione passi successivi 0 1 i-1 i temp 5

36 Ordinamento per inserzione passi successivi 0 1 i-1 i temp 5

37 Ordinamento per inserzione passi successivi 0 1 i-1 i Parte già ordinata temp Prossimo elemento da considerare

38 Torniamo all esercizio... La tecnica di ordinamento per inserzione si applica ad array di qualsiasi tipo. In questo caso particolare, due elementi stud1 e stud2 dell array sono ordinati se stud1.cognome < stud2.cognome oppure stud1.cognome == stud2.cognome e stud1.nome < stud2.nome rispetto all ordine lessicografico (quello dell elenco telefonico!)

39 Ordinamento int maggiore(studente p, Studente q){ return (strcmp(p.cognome, q.cognome)>0 (strcmp(p.cognome, q.cognome)==0 && strcmp(p.nome, q.nome)>0)); } void inserisci( Studente a[], int i ){ int h; Studente temp = a[i] ; for ( h = i ; h > 0 && maggiore(a[h-1],temp); h-- ){ a[h] = a[h-1]; } a[h] = temp ; } void ordina(studente a[], int nstudenti){ int i; for (i=1; i<nstudenti; i++) inserisci(a,i); }

40 Fine esercizio... A questo punto non rimane che scrivere il programma principale... #include<stdio.h> #include <string.h> #define NUM_STUDENTI int main(void){ Studente classe[num_studenti]; int nstud = 120; } leggi(classe, nstud); scrivi(classe, nstud); ordina(classe, nstud); scrivi(classe,nstud);

41 Esercizio Dichiarare un tipo enumerazione Colore che rappresenta i due colori delle pedine degli scacchi (bianco e nero), ed un tipo enumerazione Personaggio che rappresenta i diversi tipi di pedina (re, regina, alfiere, cavallo, torre e pedone). typedef enum Colore { bianco, nero } Colore; typedef enum Personaggio { re, regina, alfiere, cavallo torre, pedone } Personaggio;

42 Esercizio Dichiarare un tipo record Pedina, che rappresenta una pedina degli scacchi, con due campi: colore e personaggio, di tipo Colore e Personaggio, respettivamente. typedef struct { Colore colore; Personaggio personaggio; } Pedina;

43 Esercizio Dichiarare un tipo record Casella, che rappresenta una casella della scacchiera, ed è un record di due campi: colore (il colore della casella, di tipo Colore) e pezzo, un riferimento ad una variabile di tipo Pedina (il riferimento sarà NULL se la casella non contiene nessuna pedina, altrimenti conterrà l indirizzo di una variabile di tipo Pedina). typedef struct { Colore colore; Pedina *pezzo; } Casella;

44 Esercizio Dichiarare il tipo Scacchiera, i cui elementi sono tabelle bidimensionali di dimensione 8 per 8 aventi come tipo base il tipo Casella. Un valore di tipo Scacchiera rappresenta una possibile configurazione della scacchiera. typedef Casella Scacchiera [8][8]; Scacchiera s;

45 Esercizio Utilizzando i tipi definiti precedentemente, inizializzare una variabile s di tipo Scacchiera in modo che rappresenti una scacchiera in cui tutte le caselle sono nere e sia presente solo il re bianco in posizione (0,0). Scacchiera s; int i, j; Pedina *king; for (i=0; i<8; i++) for (j=0; j<8; j++) { s[ i ][ j ].colore = nero; s[ i ][ j ].pezzo = NULL; } king = (Pedina*) malloc(sizeof(pedina)); king ->colore = bianco; king ->personaggio = re; s[0][0].pezzo = king;

46 Esercizio Utilizzando il modello ambiente-memoria, descrivere graficamente la situazione al termine dei comandi necessari a realizzare quanto richiesto dall esercizio precedente. ambiente memoria Scacchiera s Pedina *king stack nero nero NULL nero NULL heap bianco re nero NULL...

47 Esercizio Utilizzando i tipi definiti negli esercizi precedenti, scrivere la definizione di una funzione che, prendendo come parametro attuale un valore s di tipo Scacchiera verifica se la torre nera è presente nella scacchiera s. La funzione restituisce 1 se la torre nera è presente, altrimenti restituisce 0.

48 Soluzione int cercatorrenera (Scacchiera s) { int i, j; for (i=0; i<8; i++) for (j=0; j<8; j++) if ((s[i][j].pezzo!= NULL) && ((s[i][j].pezzo)->colore == nero) && ((s[i][j].pezzo)->personaggio == torre) ) return 1; } return 0;

49 Allocazione dinamica typedef struct { char titolo[30]; char autore[15]; } Libro; Libro titolo Libro *lib; lib = (Libro *) malloc (sizeof(libro)); printf( Inserisci titolo senza spazi: ); scanf( %s, lib -> titolo); printf( Inserisci autore: ); scanf( %s, lib -> autore); autore

50 Allocazione dinamica typedef struct { char titolo[30]; char autore[15]; } Libro; Libro titolo /* altro modo di inizializzare */ Libro *lib; lib = (Libro *) malloc (sizeof(libro)); autore strcpy( lib -> titolo, La divina commedia ); strcpy( lib -> autore, Dante ); NOTA: Se inserisco Harry Potter e l ordine della fenice, si esce dai limiti!!! E se inserisco Iliade spreco spazio

51 Allocazione dinamica typedef struct { char *titolo; char *autore; } Libro; Libro *lib; Libro lib = (Libro *) malloc (sizeof(libro)); /* così ho allocato spazio solo per due puntatori */ titolo /* prima di inserire le stringhe per titolo e autore autore occorre allocare lo spazio necessario a contenerle */

52 Allocazione dinamica typedef struct { char *titolo; char *autore; } Libro; Libro titolo Libro *lib; lib = (Libro *) malloc (sizeof(libro)); lib->titolo =(char *) malloc (sizeof(char)*40); autore lib->autore =(char *) malloc (sizeof(char)*15); strcpy( lib->titolo, Harry Potter e l ordine della fenice ); strcpy( lib->autore, J.K. Rowling );

53 Allocazione dinamica /* così posso usare la memoria in modo efficiente: */ Libro *lib2; lib2 = (Libro *) malloc (sizeof(libro)); lib2->titolo =(char *) malloc (sizeof(char)*7); lib2->autore =(char *) malloc (sizeof(char)*6); strcpy( lib2->titolo, Iliade ); Libro strcpy( lib2->autore, Omero ); titolo I l i a d e \0 O m e r o \0 autore

Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria

Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria Esercitazione 10 Strutture ed Enumerazioni Allocazione dinamica di memoria ESERCIZIO Scrivere una funzione che, dato un array di interi bidimensionale di dimensione n n, calcoli e stampi la somma degli

Dettagli

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

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

Dettagli

Esercitazione 12. Esercizi di Ricapitolazione

Esercitazione 12. Esercizi di Ricapitolazione Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,

Dettagli

Linguaggio C - Strutture

Linguaggio C - Strutture Strutture: Le strutture (talvolta chiamate aggregati), così come gli array, sono tipi di dati derivati. Indicano collezioni di variabili collegate sotto un unico nome. Le strutture possono contenere variabili

Dettagli

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C tipi di dati definiti dall utente Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Tipi di dati in C Predefiniti

Dettagli

Struct, enum, Puntatori e Array dinamici

Struct, enum, Puntatori e Array dinamici Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente

Dettagli

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio soluzione di un problema 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio rappresentazioni disponibili in C++:

Dettagli

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

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

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

Università di Roma Tor Vergata L12-1

Università di Roma Tor Vergata L12-1 Università di Roma Tor Vergata L12-1 soluzione di un problema fl 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

Dettagli

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

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

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.

Unità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture. Unità Didattica 5 Linguaggio C Stringhe. Accesso a file ASCII. Strutture. 1 Stringhe Una stringa è una sequenza di caratteri (es: ciao, sd!n29dnqa ); In C non esiste una variabile di tipo stringa; Una

Dettagli

Dati aggregati. Violetta Lonati

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

Dettagli

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione

Dettagli

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono

Dettagli

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL 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

Puntatori. Fondamenti di Programmazione

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

Dettagli

Il linguaggio C. Notate che...

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

Dettagli

L'allocazione dinamica della memoria

L'allocazione dinamica della memoria L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria

Dettagli

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

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

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione ai puntatori in C Definizione Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il

Dettagli

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

La gestione della memoria dinamica Heap

La gestione della memoria dinamica Heap Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico 2008/2009 Francesco Tortorella

Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico 2008/2009 Francesco Tortorella Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico Francesco Tortorella Le strutture Gli array permettono la sola aggregazione di variabili dello stesso tipo. Quindi

Dettagli

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Esercizi di programmazione in linguaggio C English Dictionary

Esercizi di programmazione in linguaggio C English Dictionary Esercizi di programmazione in linguaggio C English Dictionary Il file di testo wordnet.txt contiene un certo numero di parole (word) e il corrispondente significato (meaning) secondo il seguente formato:

Dettagli

Linguaggio C: puntatori

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

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

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

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

Dettagli

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

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

Dettagli

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

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

Dettagli

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

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

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

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

Dettagli

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

Puntatori. Unità 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Fondamenti di Informatica T. Linguaggio C: i puntatori

Fondamenti di Informatica T. Linguaggio C: i puntatori Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x

Dettagli

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture Concetti chiave Struct Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture Struct Per aggregare elementi di tipo diverso si utilizza una struttura. struct

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Dettagli

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

Puntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Struttura dei programmi C

Struttura dei programmi C Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte

Dettagli

Allocazione dinamica della memoria

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

Dettagli

I puntatori e l allocazione dinamica di memoria. Esercizi risolti

I puntatori e l allocazione dinamica di memoria. Esercizi risolti I puntatori e l allocazione dinamica di memoria Esercizi risolti 1 Esercizio Si vuole realizzare un tipo struct, utilizzato per informazioni su operazioni di vendita, avente i seguenti campi: codice: numero

Dettagli

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

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

Dettagli

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)

Dettagli

Scrittura formattata - printf

Scrittura formattata - printf Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

Il linguaggio C. Puntatori e dintorni

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

Dettagli

Implementazione di Liste puntate

Implementazione di Liste puntate Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Implementazione di Liste puntate 2 1 Indice Liste puntate semplici: Gli elementi sono logicamente

Dettagli

Puntatori in C Lucidi della Pof.ssa Pazienza

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

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

Strutture Dinamiche. Fondamenti di Informatica

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

Dettagli

Consideriamo un vettore allocato dinamicamente

Consideriamo un vettore allocato dinamicamente Libreria per per la la gestione/manipolazione dei dei vettori Consideriamo un vettore allocato dinamicamente int * v; v = (int *) malloc (n * sizeof (int) ); Conversione di tipo da void * a int * Numero

Dettagli

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0 STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

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

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

Dettagli

Caratteri e stringhe

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

Dettagli

Puntatori a Funzioni e Callback. Massimo Benerecetti

Puntatori a Funzioni e Callback. Massimo Benerecetti Puntatori a Funzioni e Callback Massimo Benerecetti Puntatori a Funzione Un «puntatore a funzione» è un puntatore che punta all indirizzo di memoria in cui è contenuto il codice eseguibile di una funzione.

Dettagli

SULL USO DEI CARATTERI. char x; si legge con ( %c,&x) e si stampa con ( %c,x) ma anche con ( %d,x) DUE ESEMPI

SULL USO DEI CARATTERI. char x; si legge con ( %c,&x) e si stampa con ( %c,x) ma anche con ( %d,x) DUE ESEMPI SULL USO DEI CARATTERI Ricordiamo che: int x; si legge con ( %d,&x) e si stampa con ( %d,x) float x; si legge con ( %f,&x) e si stampa con ( %f,x) double x;si legge con ( %lf,&x) e si stampa con ( %f,x)

Dettagli

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

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

Dettagli

LE STRUTTURE DATI PARTE 2: RECORD. Prof. G. Ciaschetti

LE STRUTTURE DATI PARTE 2: RECORD. Prof. G. Ciaschetti 1 ISTITUTO DI ISTRUZIONE SUPERIORE ANGIOJ LE STRUTTURE DATI PARTE 2: RECORD Prof. G. Ciaschetti Abbiamo visto nella prima dispensa sulle strutture dati che una struttura dati è una collezione di dati in

Dettagli

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

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

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

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

Dettagli

Linguaggio C. Esercizio 1

Linguaggio C. Esercizio 1 Linguaggio C Esercizi su puntatori e liste Walter Didimo (e-mail:didimo@dia.uniroma3.it) supplemento al Corso di Calcolatori Elettronici (Riccardo Torlone) 1 Esercizio 1 Siano p e q due puntatori a variabili

Dettagli

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

Programmazione I - Laboratorio

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

Dettagli

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

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

Dettagli

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

Dettagli

Ottenere una modifica del parametro attuale

Ottenere una modifica del parametro attuale Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)

Dettagli

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME 13 novembre 2006 RIGA COLONNA MATRICOLA Il presente plico pinzato, composto di sei fogli, deve

Dettagli

Allocazione Dinamica della Memoria

Allocazione Dinamica della Memoria Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando

Dettagli

Esercizio 1: Puntatori impiegati che sono manager

Esercizio 1: Puntatori impiegati che sono manager Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 10 Esercitazione: 25 gennaio 2006 Esercizi di riepilogo Problema: Esercizio 1: Puntatori impiegati che sono manager Si

Dettagli

Puntatori (in C) Emilio Di Giacomo

Puntatori (in C) Emilio Di Giacomo Puntatori (in C) Emilio Di Giacomo Puntatori In questa lezione parleremo di uno dei costrutti più potenti del C: i puntatori I puntatori vengono utilizzati per realizzare il passaggio di parametri per

Dettagli

Introduzione al C. Unità Gestione Dinamica della Memoria

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

Dettagli

Programmazione I - Laboratorio

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

Dettagli

Allocazione Dinamica della Memoria

Allocazione Dinamica della Memoria Allocazione Dinamica della Memoria Lorenzo Dusty Costa Federico Paolo Kircheis 30 Novembre 2011 1 Introduzione alle memoria dinamica Uno degli inconvenienti che spesso si incontrano nell'uso degli array

Dettagli

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

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

Dettagli

Introduzione al C. Tipi derivati

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

Dettagli

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22 Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)

Dettagli

Array multidimensionali e stringhe

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

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case

Dettagli

Il linguaggio C. Puntatori e Array

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

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

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

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

Dettagli

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

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

Dettagli

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

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5A.zip contenente i file necessari (progetto Visual Studio ed eventuali altri file di esempio). Avvertenze per la consegna:

Dettagli

Tempo di vita e scope delle variabili

Tempo di vita e scope delle variabili Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli