Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 Esercitazione 10 Strutture ed Enumerazioni Allocazione dinamica di memoria

2 ESERCIZIO Scrivere una funzione che, dato un array di interi bidimensionale di dimensione n n, calcoli e stampi la somma degli elementi che stanno sotto, sopra e sulla diagonale principale somma degli elementi sotto la diagonale: somma degli elementi sopra la diagonale: somma degli elementi sulla diagonale:

3 Funzione somma */ la funzione somma utilizza i puntatori per restituire i tre valori richiesti. */ void somma (int a [ MAX_N][MAX_N], int n, int *somma_sotto, int *somma_sopra, int *somma_diag) { int i, j; */ inizializzazione delle variabili per le somme */ *somma_sotto = 0; *somma_sopra = 0; *somma_diag = 0;

4 */ somma degli elementi sotto la diagonale principale */ for (i=1; i<n; i++) for (j =0; j<i ; j++) *somma_sotto +=a[i][j]; */ somma degli elementi sopra la diagonale principale */ for (i=0; i<n-1; i++) for (j =i+1; j<n ; j++) *somma_sopra +=a[i][j]; */ somma degli elementi sulla diagonale principale */ for (i=0; i < n; i++) *somma_diag +=a[i][i]; return ; }

5 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.

6 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.

7 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

8 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.

9 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;

10 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 */

11 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;

12 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 = 30; oggi.mese = Novembre ; oggi.anno = 2007; ieri.anno = oggi.anno; printf( %d %s %d, oggi.giorno, oggi.mese, oggi.anno);

13 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!

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

15 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); }

16 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);

17 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);

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

19 SOLUZIONE typedf struct { int giorno; char *mese; int anno; } Data; Data *pd, compleanno; pd = &compleanno; *pd.giorno = 30; /* errore: poiché l operatore. ha priorità *pd.mese = Novembre ; maggiore rispetto all operatore * bisogna *pd.anno = 2007; 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);

20 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 = { 30, Novembre, 2007 }; 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);

21 SOLUZIONE typedef struct { int giorno; char *mese; int anno; } Data; Data compleanno = { 30, Novembre, 2007 }; 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

22 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.

23 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); }

24 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.

25 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];

26 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;

27 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.

28 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.

29 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.

30 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 */

31 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 */

32 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);

33 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);

34 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.

35 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); } }

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

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

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

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

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

41 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!)

42 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); }

43 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);

44 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;

45 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;

46 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;

47 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;

48 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;

49 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...

50 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.

51 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;

52 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

53 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

54 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 */

55 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 );

56 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 9. Strutture ed Enumerazioni. Allocazione dinamica di memoria

Esercitazione 9. Strutture ed Enumerazioni. Allocazione dinamica di memoria Esercitazione 9 Strutture ed Enumerazioni Allocazione dinamica di memoria Typedef La parola chiave typedef viene usata per assegnare un alias a un qualsiasi tipo, fondamentale o derivato. Esempio typedef

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

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

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

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

Dettagli

RICERCA DI UN ELEMENTO

RICERCA DI UN ELEMENTO RICERCA DI UN ELEMENTO Si legga da tastiera un array di N elementi (N stabilito dall utente) Si richieda un elemento x il programma deve cercare l elemento x nell array Se l elemento è presente, deve visualizzare

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

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

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

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

Dettagli

Introduzione alla programmazione in C

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

Dettagli

Record in C: il costruttore struct.

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

Dettagli

Introduzione al linguaggio C Gli array

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

Dettagli

Corso di Fondamenti di Informatica

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

Dettagli

Laboratorio di programmazione

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

Dettagli

Gestione delle stringhe in C

Gestione delle stringhe in C Gestione delle stringhe in C 1 Generalità Una stringa è un vettore di caratteri il cui ultimo elemento è un carattere terminatore (o di fine stringa), codificato dal carattere di codice 0 e rappresentato

Dettagli

Esame del 3 febbraio 2010

Esame del 3 febbraio 2010 Fondamenti di Informatica CdL in Ingegneria Gestionale a.a. 2009/2010 Docente: Andrea Prati Esame del 3 febbraio 2010 Esercizio 1 Vettori Sia data un vettore (array monodimensionale) di interi: int VETT[N];

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

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

Dettagli

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

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

Dettagli

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

Fondamenti di Informatica T. Linguaggio C: i puntatori

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

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice

Dettagli

puntatori Lab. Calc. AA 2007/08 1

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

Dettagli

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

Esempio: Array di struct

Esempio: Array di struct Esempio: Array di struct Scrivere un programma C che definisca la struttura esame, composta dal nome dell esame (stringa) e dal voto (intero). Si leggano poi da terminale n esami, con n definito dall utente

Dettagli

Introduzione al Linguaggio C

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

Dettagli

Funzioni in C. Violetta Lonati

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

Dettagli

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

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

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Lab 11 Gestione file di testo"

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

Dettagli

Esercizi. Stringhe. Stringhe Ricerca binaria

Esercizi. Stringhe. Stringhe Ricerca binaria Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)

Dettagli

Problem solving elementare su dati vettoriali

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

Dettagli

Caratteri e stringhe Esercizi risolti

Caratteri e stringhe Esercizi risolti Esercizi risolti 1 Esercizio: Conta vocali e consonanti Scrivere un programma in linguaggio C che legga una frase introdotta da tastiera. La frase è terminata dall introduzione del carattere di invio.

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Algoritmi e Strutture Dati

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

Dettagli

INFORMATICA - I puntatori Roberta Gerboni

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

Dettagli

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

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

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

Dettagli

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. Esercizio 2

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

Dettagli

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...

Dettagli

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

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

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

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

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

Dettagli

Appello di Informatica B

Appello di Informatica B Politecnico di Milano Facoltà di Ingegneria Industriale 19 febbraio 2004 Appello di Informatica B Prof. Angelo Morzenti - Prof. Vincenzo Martena Cognome e nome: Matricola: Tipo di prova: recupero I prova

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

Dettagli

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

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

Dettagli

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile Corso di Laurea in Ingegneria Biomedica Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa Prof. Fabio Solari: fabio.solari@unige.it (010-3532059) Prof. Manuela Chessa: manuela.chessa@unige.it

Dettagli

Esercizio 1. Esercizio 1

Esercizio 1. Esercizio 1 Esercizio 1 Un registratore di cassa registra su di un file binario alcuni dati relativi agli scontrini emessi. In particolare, tramite una struttura dati di nome scontrino, il registratore di cassa tiene

Dettagli

Gestione dei File. dischi nastri cd

Gestione dei File. dischi nastri cd Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

La gestione della memoria

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

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

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

Dettagli

Linguaggio C - Stringhe

Linguaggio C - Stringhe Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - Stringhe La presente dispensa e da utilizzarsi ai

Dettagli

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

Appunti di Informatica 1. Gianluca Rossi

Appunti di Informatica 1. Gianluca Rossi Appunti di Informatica 1 Gianluca Rossi Versione maggio 2011 Indice 1 Algoritmi, macchine e linguaggi di programmazione 3 1.1 La macchina di Von Neumann........................ 5 1.2 Dal linguaggio macchina

Dettagli

Strutture dati in C e loro traduzione in assembler MIPS 1 Direttive assembler per l'allocazione dei dati Prima di iniziare a trattare il problema dell'allocazione delle varie strutture dati, introduciamo

Dettagli

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

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

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

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

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 18 dicembre 2007 Esercizio 1: rappresentazione di una tabella di occorrenze L obiettivo è quello di rappresentare in modo efficiente

Dettagli

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

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

Dettagli

PROGRAMMI LINGUAGGIO C

PROGRAMMI LINGUAGGIO C PROGRAMMI IN LINGUAGGIO C Corso di Programmazione Modulo B Prof. GIULIANO LACCETTI Studentessa Bellino Virginia Matr. 408466 Corso di Diploma in Informatica http://www.dicecca.net Indice 1. Package per

Dettagli

Puntatori Passaggio di parametri per indirizzo

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

Dettagli

Grammatica di base: Pointers

Grammatica di base: Pointers Grammatica di base: Pointers Esistono I puntatori a funzioni. Bisogna esplicitare esattamente il tipo di ritorno e il tipo di argomento. Per evitare ambiguità con il prefisso * nel declarator, il nome

Dettagli

Definizione di nuovi tipi in C

Definizione di nuovi tipi in C Definizione di nuovi tipi in C typedef Ancora sui tipi di dato Ogni elaboratore è intrinsecamente capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe

Dettagli

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4]; ARRAY BIDIMENSIONALI Si possono definire array di qualunque tipo di dato, quindi anche di altre array float [][] mx = new float[3][4]; ovvero.. (float []) [] mx = new float[3][4]; La loro motivazione (storica)

Dettagli

Il tipo di dato astratto Pila

Il tipo di dato astratto Pila Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:

Dettagli

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

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

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

Dettagli

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

Laboratorio di Fondamenti di Informatica anno accademico 2015-2016. Esercizi proposti il 09-12-2015

Laboratorio di Fondamenti di Informatica anno accademico 2015-2016. Esercizi proposti il 09-12-2015 Laboratorio di Fondamenti di Informatica anno accademico 2015-2016 Esercizi proposti il 09-12-2015 ESERCIZI GUIDATI Gli esercizi saranno svolti in aula dal docente di laboratorio per illustrare alcuni

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

Trattamento delle STRINGHE in C(++)

Trattamento delle STRINGHE in C(++) Trattamento delle STRINGHE in C(++) Le cose che qui vengono dette valgono sia per il linguaggio C che per il C++. Nel linguaggio C non esiste, a differenza di quel che avviene per altri linguaggi di programmazione

Dettagli

I tipi di dato astratti

I tipi di dato astratti I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015 COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Non si possono consultare manuali, appunti e calcolatrici. Esercizio 1: [3 punto] Rappresentare i numeri 36 e 91 (in base 10) in notazione binaria

Dettagli

Corso di Esercitazioni di Programmazione

Corso di Esercitazioni di Programmazione Corso di Esercitazioni di Programmazione Introduzione Dott.ssa Sabina Rossi Informazioni Pagina web del corso: News Orari Mailing list Lezioni Esercitazioni Date esami Risultati esami.. http://www.dsi.unive.it/~prog1

Dettagli

Laboratorio di Algoritmi e Strutture Dati

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

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

VARIABILI LOCALI E GLOBALI (ESTERNE)

VARIABILI LOCALI E GLOBALI (ESTERNE) VARIABILI LOCALI E GLOBALI (ESTERNE) Le variabili locali sono definite (ed il loro uso dichiarato) nella funzione (o nel blocco) che le usa; nascono quando la funzione entra in esecuzione e muoiono al

Dettagli

Le stringhe. Le stringhe

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

Dettagli

Compito di Fondamenti di Informatica

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

Dettagli

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015. Indice LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.V.2015 VINCENZO MARRA Indice Parte 1. Input/Output standard dalla console 2 Esercizio 1 2 Eco

Dettagli

Esercizio: gestione di un conto corrente

Esercizio: gestione di un conto corrente Esercizio: gestione di un conto corrente Si realizzi un conto corrente bancario mediante: - una ASTRAZIONE DI DATO - un TIPO DI DATO ASTRATTO Il conto corrente è caratterizzato dalle seguenti informazioni:

Dettagli

Corso di Informatica Medica Esercitazione 1I 2013-2014.! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com

Corso di Informatica Medica Esercitazione 1I 2013-2014.! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com Corso di Informatica Medica Esercitazione 1I 2013-2014! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com 1 2 Esercizio 1 Scrivere un programma che legga due array di interi da tastiera dica

Dettagli

Utilizzo e scrittura di classi

Utilizzo e scrittura di classi Utilizzo e scrittura di classi Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 14 novembre, 2001 Gino Perna Implementazione di classi in C++ UN ESEMPIO DI CLASSE: RISULTATI

Dettagli

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

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

Dettagli

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

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa Ricerche, ordinamenti e fusioni 5.1 Introduzione Questo capitolo ci permette di fare pratica di programmazione utilizzando gli strumenti del linguaggio introdotti finora. A una prima lettura possono essere

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

Alfabeto ed elementi lessicali del linguaggio C

Alfabeto ed elementi lessicali del linguaggio C Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2015-2016 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - pietro.dilena@unibo.it s t a t i c s h o r t l e g s ; i n

Dettagli

dall argomento argomento della malloc()

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

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

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

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/2002-5 febbraio 2003 -A

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/2002-5 febbraio 2003 -A Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/2002-5 febbraio 2003 -A COGNOME: NOME: MATRICOLA: Istruzioni: Scrivere solo sui

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

MAGAZZINO.CPP January 2, 2008 Page 1

MAGAZZINO.CPP January 2, 2008 Page 1 MAGAZZINO.CPP January 2, 2008 Page 1 1 #include 2 #include 3 #include 4 // ==================================================================== 5 // Versione 1.1 1/1/2008

Dettagli

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Ricorsione Funzioni ricorsive Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Un esempio di funzione ricorsiva

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. www.dia.unisa.it/dottorandi/murano. Il linguaggio C II

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. www.dia.unisa.it/dottorandi/murano. Il linguaggio C II Laboratorio di Algoritmi e Strutture Dati Aniello Murano www.dia.unisa.it/dottorandi/murano 1 Il linguaggio C II 2 1 Indice (seconda parte) Funzioni Array Puntatori Preprocessore Storage Class Ricorsione

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide

Dettagli

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale didattico,

Dettagli