Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria
|
|
- Angelica Lamberti
- 8 anni fa
- Visualizzazioni
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 Typedef La parola chiave typedef viene usata per assegnare un alias a un qualsiasi tipo, fondamentale o derivato. Esempio typedef
DettagliStrutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso
DettagliI 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
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliRecord in C: il costruttore struct.
Record in C: il costruttore struct. Le variabili di tipo record e i nuovi tipi record si dichiarano in C tramite il costruttore di tipo struct:. ::= ;
DettagliRICERCA 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
DettagliConcetti 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
DettagliIntroduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
Dettaglihttp://esamix.labx Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )
Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie
DettagliBreve 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
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore
DettagliFondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'
Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di
DettagliFondamenti 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
DettagliAppello 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
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
DettagliINFORMATICA - I puntatori Roberta Gerboni
1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VI Tatiana Zolo tatiana.zolo@libero.it 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di
DettagliLezione 9: Strutture e allocazione dinamica della memoria
Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare
DettagliAppunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto
DettagliEsame 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];
DettagliGrammatica 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
DettagliLab 11 Gestione file di testo"
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 11 Gestione file di testo" Lab15 1 Esercizio 1 n Realizzare un programma che, aperto un file di testo di nome
DettagliEsempio: 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
Dettaglipuntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
DettagliMatematica - 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...
DettagliESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 9 Settembre 2015
COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Non si possono consultare manuali, appunti e calcolatrici. Esercizio 1: Rappresentare i numeri 43 e 81 (in base 10) in notazione binaria in complemento
DettagliLe variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
DettagliLe operazioni di allocazione e deallocazione sono a carico del sistema.
Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione
DettagliLe funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.
Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni
DettagliFondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli
DettagliLinguaggio 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
DettagliESAME 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
DettagliVisibilità dei Membri di una Classe
Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce
DettagliLe stringhe. Le stringhe
Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è
DettagliIndirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili
Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria
DettagliGestione 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
Dettaglicostruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)
DettagliEsercizio 1. Esercizio 2
Esercizio 1 Realizzare un programma che, aperto un file di testo di nome Prova.txt in modalità scrittura, provveda a leggere da input delle parole separate da spazi (stringhe di al più 63 caratteri) e
DettagliCREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS
CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu
DettagliLaboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
DettagliDefinizione 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
DettagliCompito di Fondamenti di Informatica
Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette
DettagliProgrammazione I / Informatica generale Prova scritta 11 Giugno 2008
Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere
DettagliEsercizio 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
DettagliProgrammazione 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
DettagliMatematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
DettagliDall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
DettagliTipi di dato-prima parte
Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Meccanica (A-K) Tipi di dato-prima parte Ing. Agnese Pinto 1 di 15 Tipi di dato Sommario Tipi di dato Classificazione dei tipi di dato Tipi
DettagliGestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
DettagliEXCEL FUNZIONI PRINCIPALI
EXCEL FUNZIONI PRINCIPALI Funzione SE() Sintassi: SE(VERIFICA, VALORE SE VERO, VALORE SE FALSO): verifica un valore e ritorna una risposta in base al risultato vero/falso Esempio: =SE(A2=15; "OK"; "NO")
DettagliCaratteri 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.
DettagliEsercizi 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
Dettaglihttp://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
Dettagli13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliRaggruppamenti Conti Movimenti
ESERCITAZIONE PIANO DEI CONTI Vogliamo creare un programma che ci permetta di gestire, in un DB, il Piano dei conti di un azienda. Nel corso della gestione d esercizio, si potranno registrare gli articoli
Dettagli(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)
(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste
DettagliStrutture 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
DettagliIl 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:
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliEsercizio: 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:
DettagliUna 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
DettagliProblem solving elementare su dati vettoriali
Problem solving elementare su dati vettoriali Introduzione Verifiche su sequenze di dati Selezione o ricerca di dati 2 2006 Politecnico di Torino 1 Introduzione (1/2) I problemi di verifica consistono
Dettagli12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
DettagliAlgoritmi e Strutture Dati
schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o
Dettagli3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di
DettagliLaboratorio 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
DettagliEsempi di algoritmi. Lezione III
Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni
DettagliInformatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
DettagliLaboratorio 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
DettagliARRAY 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)
DettagliStrutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
DettagliLinguaggio 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
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliProgrammazione. Laboratorio. Roberto Cordone DI - Università degli Studi di Milano
Gestione della memoria p. 1/11 Programmazione Laboratorio Roberto Cordone DI - Università degli Studi di Milano Tel. 02 503 16235 E-mail: roberto.cordone@unimi.it Ricevimento: su appuntamento Lezioni:
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il
DettagliPuntatori Passaggio di parametri per indirizzo
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Puntatori Passaggio di parametri per indirizzo Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica
DettagliGian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
DettagliLABORATORIO 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
DettagliMANUALE EDICOLA 04.05
MANUALE EDICOLA 04.05 Questo è il video che si presenta avviando il programma di Gestione Edicola. Questo primo video è relativo alle operazioni di carico. CARICO Nello schermo di carico, in alto a sinistra
DettagliOggetti Lezione 3. aspetti generali e definizione di classi I
Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione
DettagliEsercitazione 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,
DettagliCorso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
DettagliI file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
DettagliINTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI
INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.
DettagliLaboratorio 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
DettagliEsercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni
Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizio 1 Nella classe definita di seguito indicare quali sono le variabili di istanza, quali sono le variabili
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
Dettagli