UNIVERSITA` DI BERGAMO ESAME DI INFORMATICA 12 CFU Modulo di Programmazione (ING. INFORMATICA) Prof. G. PSAILA PROVA IN ITINERE DEL 12/01/2017

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "UNIVERSITA` DI BERGAMO ESAME DI INFORMATICA 12 CFU Modulo di Programmazione (ING. INFORMATICA) Prof. G. PSAILA PROVA IN ITINERE DEL 12/01/2017"

Transcript

1 UNIVERSITA` DI BERGAMO ESAME DI INFORMATICA 12 CFU Modulo di Programmazione (ING. INFORMATICA) Prof. G. PSAILA PROVA IN ITINERE DEL 12/01/2017 Per consegnare, si svolgano entrambi gli esercizi. Durata: 90 minuti. Punteggio complessivo: 16 punti. Sufficienza: 9 punti Esercizio (10 punti) Si consideri un programma per gestire la raccolta delle informazioni relative ad un listino prezzi di prodotti da vendere, organizzato in una lista dinamica. Un prodotto è definito da un tipo strutturato denominato PRODOTTO, i cui campi sono il codice (stringa di 12 caratteri) la data di inserimento nel listino (stringa nel formato internazionale aaaa-mm-gg ), il prezzo (numero in virgola mobile), la percentuale IVA (numero intero) e una tipologia di prodotto (un numero intero positivo). Si definisca quindi la struttura dati per una lista dinamica dove il campo informativo del nodo è a sua volta basato sul tipo PRODOTTO. Si scriva la funzione denominata ProdottiTipologiaRedditizia che riceve come parametri la lista dei prodotti, un vettore di numeri interi denominato Tipologie e un numero intero denominato size che indica quanti elementi sono presenti nel vettore Tipologie. Per ogni tipologia nel vettore, la funziona calcola la media dei prezzi dei prodotti di quella tipologia e calcola la tipologia con la media più alta. Quindi, la funzione genera una nuova lista dinamica (basata sugli stessi tipi di quella ricevuta come parametro) che contiene solo e soltanto i prodotti della tipologia con la media più alta e restituisce l indirizzo della testa di questa nuova lista. Nel caso in cui non vi siano prodotti di nessuna delle tipologia riportate, la funzione restituisce il valore NULL. N.B. Si eviti la duplicazione del codice.

2 Soluzione: struct PRODOTTO { char codice[12+1]; // stringa char datainserimento[10+1]; // stringa float prezzo; int percentualeiva; unsigned int tipo; ; struct nodo { PRODOTTO info; nodo * next; ; nodo *ProdottiTipologiaRedditizia(nodo *L, unsigned int Tipologie[], int size);

3 nodo *ProdottiTipologiaRedditizia(nodo *L, unsigned int Tipologie[], int size) { if (size <= 0) return NULL; node *ptr, *aux, *Lrisultato; int i, count, indextipomax; float accmedia, maxprezzo; float *prezzomedio = (float*) new float[size]; for (i = 0; i < size; ++i) { accmedia = 0.0; count = 0; for (ptr = L; ptr!= NULL; ptr = ptr->next) { if ( (ptr->info).tipo == Tipologie[i] ) { accmedia += (ptr->info).prezzo; count += 1; if ( count!= 0 ) prezzomedio[i] = accmedia / count; else prezzomedio[i] = 0.0; maxprezzo = prezzomedio[0]; indextipomax = 0; for (i = 1; i < size; ++i) { if ( prezzomedio[i] > maxprezzo ) { maxprezzo = prezzomedio[i]; indextipomax = i; delete[] prezzomedio;

4 Lrisultato = NULL; // Scelta: inserimento in testa if (maxprezzo!= 0.0) { // se maxprezzo == 0 i valori nel // vettore Tipologie[] non sono // presenti tra i tipi nella lista for (ptr = L; ptr!= NULL; ptr = ptr->next) { if ( (ptr->info).tipo == Tipologie[indexTipoMax] ) { aux = (node*) new node; aux->info = ptr->info; aux->next = Lrisultato; Lrisultato = aux; // end if // end for // end if return Lrisultato; // end ProdottiTipologiaRedditizia

5 Domanda Teoria (6 punti) Si consideri un sistema dove per gli indirizzi di memoria vengono usati 24 bit e la memoria viene gestita con il sistema della paginazione con pagine da 1Kbyte e indirizzi logici. Si consideri il seguente indirizzo logico l= Se nella tabella delle pagine abbiamo le corrispondenze pl pf (in base 10) 17 1, 18 3, 19 5, 20 6, qual è l indirizzo fisico f su 24 bit corrispondente all indirizzo logico l? Soluzione Considerando un organizzazione della memoria del calcolatore con indirizzamento al Byte (quindi ogni byte in memoria centrale ha un indirizzo); in un sistema operativo che gestisce la memoria del calcolatore con il meccanismo della paginazione (dove le pagine logiche e le pagine fisiche hanno la stessa capacità misurata in byte): le stringhe binarie corrispondenti alla codifica in binario naturale dell indirizzo logico e dell indirizzo fisico di un byte, sono da considerarsi partizionate, rispettivamente, in: [numero di pagina logica] e [spiazzamento]; [numero di pagina fisica] e [spiazzamento]. Poiché la traccia dell esercizio fissa la capacità di ogni pagina uguale a 1KByte, se ne deduce che sono necessari 10-bit per indirizzare ciascun byte all interno di una pagina. Per quanto detto sopra saranno i 10-bit meno significativi di un indirizzo (logico o fisico); restano dunque 14-bit per codificare i numeri di pagina (logica oppure fisica) all interno della tabella delle pagine mantenuta dal sistema operativo (e dalla MMU). Considerando l indirizzo logico assegnato nella traccia dell esercizio, si deduce: numero di pagina logica = 19 dec spiazzamento = 14 dec quindi il numero di pagina fisica richiesto dall esercizio, vista la tabella delle pagine riportata nella traccia, vale: numero di pagina fisica = 5 dec L indirizzo fisico sarà ottenuto come la concatenazione delle codifiche binarie di: numero di pagina fisica = 5 dec, spiazzamento = 14 dec f =

6

7 Soluzione: struct BUONO { char codice[10+1]; char dataemissione[10+1]; char cliente[250+1]; float valorebuono; char datascadenza[10+1]; // stringa // stringa // stringa // stringa ; unsigned int stato; // 1 non ancora utilizzato // 2 è stato utilizzato // 3 - scaduto struct nodo { BUONO info; nodo * next; ; nodo* BuoniNonUtilizzati(nodo* L, char* datescadenza[], int size); Crea una nuova lista con buoni non scaduti e con datascadenza ds uguale a una di quelle nel vettore. Detta dsv una data di scandeza nel vettore, il titolare di un buono ( ) con dsv non deve aver usato nessun altro buono presente nella lista. // Restituisce +1 se l utente con passata come // secondo parametro ha utilizzato almeno un altro // buono oltre quello con codice passato come terzo parametro. // Restituisce 0, altrimenti. int altribuoniusati(nodo* L, char* , char* codice){ nodo* ptr; for (ptr = L; ptr!= NULL; ptr = ptr->next) { if ( strcmp(ptr->info. cliente, ) == 0 && strcmp(ptr->info.codice, codice)!= 0 ptr->info.stato == 2 ) return +1; // end for return 0; // end altribuoniusati &&

8 // Ritorna +1 nel caso in cui l inserimento fallisca, 0 altrimenti int inserimentointesta(nodo* &L, BUONO b) { nodo *aux = new nodo; if (aux == NULL) return +1; aux->info = b; aux->next = L; L = aux; return 0; // end inserimentointesta nodo* BuoniNonUtilizzati(nodo *L, char* datescadenza[], int size) { nodo *ptr = NULL, *nuovalista = NULL; int flag; for (ptr = L; ptr!= NULL; ptr = ptr->next) { if (ptr->info.stato!= 3) { for (int i = 0; i < size; i++) { if (strcmp(ptr->info.datascadenza, datescadenza[i]) == 0 && altribuoniusati(l, ptr->info. cliente, ptr->info.codice) == 0) { flag = inserimentointesta(nuovalista, ptr->info); if (flag == 1) return NULL; // end if // end for // end if // end for return nuovalista; // end BuoniNonUtilizzati

9 La dichiarazione nel main di un vettore di stringhe da utilizzare come secondo parametro del sottoprogramma richiesto dall esercizio, puo essere fatta in almeno due modi distinti: (1) con un vettore di stringhe come variabile automatica (2) con un vettore di stringhe dinamico (1) ipotizzando di utilizzare un vettore di 3 stringhe (ciascuna con massimo 60 caratteri)... typedef char mystring[60+1]; typedef mystring vett[3]; int main(){ vett W; strcpy(w[0], " "); strcpy(w[1], " "); strcpy(w[2], " "); nodo *L = NULL; L = BuoniNonUtilizzati(L, W, 3) (2) ipotizzando di utilizzare un vettore di 3 stringhe (ciascuna con massimo 60 caratteri)... int main(){ char* *W = new char*[3]; W[0] = new char[60+1]; W[1] = new char[60+1]; W[1] = new char[60+1]; strcpy(w[0], " "); strcpy(w[1], " "); strcpy(w[2], " "); nodo *L = NULL; L = BuoniNonUtilizzati(L, W, 3)

10 TEMA ESAME-1 Si consideri un programma che gestisce percorsi stradali. Un percorso stradale è composto da una sequenza di segmenti; un segmento è costituito da una coordinata iniziale (stringa di 20 caratteri), una coordinata finale (stringa di 20 caratteri) e la lunghezza del segmento stesso (numero con virgola, indicante i Km del segmento). Un percorso è quindi una lista dinamica di segmenti. Il nodo in testa alla lista contiene sempre il segmento iniziale del percorso, mentre i nodi della lista successivi al primo non sono in ordine di percorrenza. (Per esempio, il terzo nodo potrebbe contenere il 2do segmento del percorso, il quinto nodo il potrebbe contenere il 3zo segmento del percorso etc..) Dopo aver definito la struttura dati, si scriva la funzione...lunghsegmento(...) che riceve come parametri un percorso (quindi, l'indirizzo del nodo in testa alla lista che descrive il percorso) e un numero di segmenti percorribili lungo il percorso stesso. Se il numero di segmenti percorribili passato come parametro non esiste nella lista, allora il sottoprogramma restituisce 0, altrimenti restituisce la lunghezza totale del numero di segmenti percorribili ricevuto come parametro.

11 struct node { char begin[20+1]; char end[20+1]; double len; ; node *next; unsigned int lenpath(node *head) { if (head == NULL) return 0; return 1+lenPath(head->next); // end lenpath; double LungSegmento(node *head, unsigned int progressive) { node *lastvisited, *cur; unsigned int prog; bool found = false; if (head == NULL progressive == 0 progressive > lenpath(head)) return 0.0; lastvisited = head; prog = 1; lentot = head->len; while (prog < progressive) { cur = head->next; found = false; while (cur!= NULL && found == false) { if (strcmp(lastvisited->end, cur->begin) == 0) { lastvisited = cur; lentot += cur->len; found = true; else cur = cur->next; // end while if (found == false) return 0.0; prog += 1; // end while return lentot; // LungSegmento

12 TEMA ESAME-2 Il comando di polizia locale vi commissiona la realizzazione della funzione...aggiungimulta(...) con la quale si aggiunge un nuovo nodo alla lista passata come parametro. Il nodo deve contenere le informazioni dell'intestatario della targa automobilistica, anch'essa passata come parametro, disponibili nel file Motorizzazione.dat, il cui nome viene passato come terzo parametro alla funzione...aggiungimulta(...). Dopo aver definito una possibile struttura dati della lista e un esempio di tracciato record del file, implementare la funzione (in C/C++) in modo che: 1. riceva i tre parametri descritti, 2. estragga dal file i dati necessari alla creazione di un nuovo nodo da inserire nella lista in base alla targa dell'automobile che ha effettuato l'infrazione e 3. aggiunga un nuovo nodo con tali dati alla lista.

13 struct node { char fiscalcode[16+1]; char platenumber[7+1]; node* next; ; // Il file Motorizzazione.dat contiene su ogni linea: // fiscalcode<spazio>platenumber<\n> bool checkstring(char line[], char plate[]); char *getfiscalcode(char line[]); // ritorno false, se non riesco ad aprire il file // oppure se la targa non è contenuta nel file bool AggiungiMulta(node* &head, char targa[], char filename[]) { ifstream fin; bool flag = false; char line[24+1]; fin.open(filename); if (fin.is_open() == false) { cerr << File not opened ; return false; while (feof(fin) == false && flag == false) { fin.getline(line, 25, '\n'); flag = checkstring(line, targa); fin.close(); if (flag == true) { node* aux = new node; strcpy(aux->fiscalcode, getfiscalcode(line)); strcpy(aux->numberplate, targa); if (head == NULL) head = aux; else { aux->next = head; head = aux; return true; return false; // end AggiungiMulta // aggiungo nodo in testa

14 bool checkstring(char line[], char plate[]) { unsigned int i = 0, j = 0; while (line[i]!= '\0' && line[i]!= ' ') i++; if (line[i] == '\0') return false; else i = i + 1; while (line[i]!= '\0' && plate[j]!= '\0' && line[i] == plate[j]) { i++; j++; return line[i] == '\0' && plate[j] == '\0'; // end checkstring char *getfiscalcode(char line[]) { char *fc = new char[16+1]; unsigned int i = 0; while (line[i]!= ' ') { fc[i] = line[i]; i++; fc[i] = '\0'; return fc; // end getfiscalcode

15 TEMA ESAME-3.1 Si consideri un programma che gestisce i biglietti di un teatro. Ogni biglietto è caratterizzato da un numero progressivo (intero), la data di emissione (stringa di 10 caratteri), dal prezzo del biglietto e dal titolo dello spettacolo (stringa di 50 caratteri). I biglietti sono raccolti in una lista dinamica. Dopo aver definito la struttura dati, si scriva la funzione...importomassimo(...), che riceve come parametri la lista di biglietti, una data (stringa di 10 caratteri) e un numero in virgola mobile denominato soglia; la funzione restituisce l'importo massimo dei prezzi dei biglietti venduti nella data specificata, il cui prezzo è maggiore o uguale della soglia indicata dal terzo parametro. Se in quella data non vi sono biglietti con queste caratteristiche, la funzione restituisce il valore -1.

16 struct node { unsigned int progressive; char issuedate[10+1]; double price; char performance[50+1]; node* next; ; double ImportoMassimo(node* head, char date[], double soglia) { double maxprice = -1.0; while (head!= NULL) { if (strcmp(head->issuedate, date) == 0 && head->price >= soglia) { if (maxprice < head->price) maxprice = head->price; head = head->next; return maxprice; // end ImportoMassimo

17 TEMA ESAME-3.2 Si consideri un programma che gestisce i biglietti di un teatro. Ogni biglietto è caratterizzato da un numero progressivo (intero), la data di emissione (stringa di 10 caratteri), dal prezzo del biglietto e dal titolo dello spettacolo (stringa di 50 caratteri). I biglietti sono raccolti in una lista dinamica. Dopo aver definito la struttura dati, si scriva la funzione...importomedio(...), che riceve come parametri la lista di biglietti e una data (stringa di 10 caratteri), e restituisce l'importo medio dei prezzi dei biglietti venduti nella data specificata. Se in quella data non vi sono biglietti, la funzione restituisce il valore -1.

18 struct node { unsigned int progressive; char issuedate[10+1]; double price; char performance[50+1]; node* next; ; double ImportoMedio(node* head, char date[]) { double avg = 0.0; unsigned int count = 0; while (head!= NULL) { if (strcmp(head->issuedate, date) == 0) { avg = avg + head->price; count++; head = head->next; if (count!= 0) avg = avg / count; else avg = -1.0; return avg; // end ImportoMedio

19 TEMA ESAME-4.1 Il nuovo navigatore satellitare VM.GP necessita della funzione...remainingroute(...) che, dato un percorso e la lunghezza percorsa, genera il percorso rimanente. Vediamo nel dettaglio. Un percorso è descritto da una lista dinamica, dove ogni elemento della lista descrive un segmento di strada da percorrere, con le coordinate iniziali (stringa di 10 caratteri), le coordinate finali (stringa di 10 caratteri), la lunghezza del segmento di strada (numero in virgola mobile indicante i chilometri). La funzione...remainingroute(...) riceve due parametri: uno è l'indirizzo della testa della lista che descrive il percorso calcolato, l'altro è la lunghezza già percorsa (numero in virgola mobile indicante i chilometri) di quel percorso. La funzione produce un'altra lista, definita sulla stessa struttura dati e l'indirizzo della cui testa viene restituito dalla funzione, che contiene solo i segmenti del percorso iniziale successivi al segmento raggiunto con i chilometri percorsi (secondo parametro della funzione). Per esempio, se il percorso calcolato è composto da tre segmenti, il primo di 5 Km, il secondo di 10 Km e il terzo di 2 Km, e la lunghezza percorsa è 7 Km, la funzione produrrà una lista che descrive un percorso costituito solo dal terzo segmento (perché successivo al segmento raggiunto percorrendo 7 Km). Definire la struttura dati della lista e implementare in C/C++ la funzione richiesta.

20 // Si assume che nodi consecutivi della lista contengano segmenti // consecutivi lungo il percorso. struct node { char begin[10+1]; char end[10+1]; double km; node* next; ; node* copynode(node* p); node* RemainingRoute(node* head, double len) { node *headret = NULL, *curr = NULL; double count = 0.0; while (count <= len && head!= NULL) { count += head->km; head = head -> next; if (head!= NULL) { headret = copynode(head); curr = headret; head = head->next; while (head!= NULL) { curr->next = copynode(head); curr = curr->next; head = head->next; return headret; // end RemainingRoute node* copynode(node* p) { node * c = NULL; if (p!= NULL) { c = new node; strcpy(c->begin, p->begin); strcpy(c->end, p->end); c->km = p->km; c->next = NULL; return c;

21 TEMA ESAME-4.2 Il nuovo navigatore satellitare VM.GP necessita della funzione...backroute(...) che, dato un percorso e la lunghezza percorsa, genera il percorso rimanente. Vediamo nel dettaglio. Un percorso è descritto da una lista dinamica, dove ogni elemento della lista descrive un segmento di strada da percorrere, con le coordinate iniziali (stringa di 10 caratteri), le coordinate finali (stringa di 10 caratteri), la lunghezza del segmento di strada (numero in virgola mobile indicante i chilometri). La funzione...backroute(...) riceve due parametri: uno è l'indirizzo della testa della lista che descrive il percorso calcolato, l altro è la lunghezza già percorsa (numero in virgola mobile indicante i chilometri) di quel percorso. La funzione produce un'altra lista, definita sulla stessa struttura dati e l'indirizzo della cui testa viene restituito dalla funzione, che contiene solo i segmenti del percorso fino a quel momento attraversati, quindi dal primo fino al segmento raggiunto con i chilometri percorsi (secondo parametro della funzione). Per esempio, se il percorso calcolato è composto da tre segmenti, il primo di 5 Km, il secondo di 10 Km e il terzo di 2 Km, e la lunghezza percorsa è 7 Km, la funzione produrrà una lista che descrive un percorso costituito dal primo e dal secondo segmento. Definire la struttura dati della lista e implementare in C/C++ la funzione richiesta.

22 // Si assume che nodi consecutivi della lista contengano segmenti // consecutivi lungo il percorso. struct node { char begin[10+1]; char end[10+1]; double km; ; node* next; node* copynode(node* p); node* BackRoute(node* head, double len) { node *headret = NULL, *curr = NULL; double count = 0.0; headret = copynode(head); if (headret!= NULL) { curr = headret; count = headret->km; head = head->next; while (count <= len && head!= NULL) { curr->next = copynode(head); count += head->km; curr = curr->next; head = head->next; return headret; // end BackRoute node* copynode(node* p) { node * c = NULL; if (p!= NULL) { c = new node; strcpy(c->begin, p->begin); strcpy(c->end, p->end); c->km = p->km; c->next = NULL; return c;

UNIVERSITA` DI BERGAMO ESAME DI INFORMATICA 12 CFU Modulo di Programmazione (ING. INFORMATICA) Prof. G. PSAILA PROVA IN ITINERE DEL 12/01/2017

UNIVERSITA` DI BERGAMO ESAME DI INFORMATICA 12 CFU Modulo di Programmazione (ING. INFORMATICA) Prof. G. PSAILA PROVA IN ITINERE DEL 12/01/2017 UNIVERSITA` DI BERGAMO ESAME DI INFORMATICA 12 CFU Modulo di Programmazione (ING. INFORMATICA) Prof. G. PSAILA PROVA IN ITINERE DEL 12/01/2017 Per consegnare, si svolgano entrambi gli esercizi. Durata:

Dettagli

Esercizio 1 Scambio lettere Scrivere la funzione

Esercizio 1 Scambio lettere Scrivere la funzione Esercizio 1 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

Dettagli

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009 Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009 Esercizio 1 (punti 3) Sia data la funzione ricorsiva seguente: void elabora (unsigned

Dettagli

Informatica 1. Prova di recupero 15 Febbraio 2005

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

Dettagli

Esercizio 1 - Memoria Dinamica e strutture dati Si consideri la seguente definizione di una lista di liste (catene) di parole:

Esercizio 1 - Memoria Dinamica e strutture dati Si consideri la seguente definizione di una lista di liste (catene) di parole: Esercizio 1 - Memoria Dinamica e strutture dati Si consideri la seguente definizione di una lista di liste (catene) di parole: struct Node { char *word; Node *next; ; typedef Node* List; struct HeadNode

Dettagli

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011 Gruppo Cognome Riontino Nome Raffaele Cognome Nome TRACCIA 2 ARGOMENTO: LISTE TEMPO: 4h 1. Utilizzando Typedef definire un nuovo tipo di dato

Dettagli

ESERCIZIO 1. AZ111 milano 12:34 23 AZ222 buenos-aires 12: BA333 toronto 4:15 20 KM444 madrid 10:12 100

ESERCIZIO 1. AZ111 milano 12:34 23 AZ222 buenos-aires 12: BA333 toronto 4:15 20 KM444 madrid 10:12 100 ESERCIZIO 1 Scrivete un programma per la gestione delle informazioni relative ai voli giornalieri in partenza da un certo aeroporto. Il programma deve leggere da file le informazioni relative ai voli,

Dettagli

Esercizi. Filtraggio

Esercizi. Filtraggio Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Strutture dati complesse Esempi di strutture dati complesse analizzate in questa lezione: Fondamenti di Informatica 21. Strutture di dati complesse in C++ Array di puntatori Pila (Stack) Coda (queue) Liste

Dettagli

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C:

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C: Fondamenti Informatica B Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2 Esercizio 1 tema 1 Siano date le seguenti definizioni di costanti e tipi in linguaggio C: #define MAX_LENGTH 40

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercizi sull allocazione dinamica della memoria in C Il codice di questi esercizi é contenuto nella cartella parte1 1. Implementare una lista

Dettagli

PROVA SCRITTA DEL MODULO DI

PROVA SCRITTA DEL MODULO DI PROVA SCRITTA DEL MODULO DI MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (4 punti) (1) (2 punti) Scrivere la tabella di verità degli operatori OR e AND.

Dettagli

Esempio di prova scritta di Fondamenti di Informatica

Esempio di prova scritta di Fondamenti di Informatica Università degli Studi di Firenze - Scuola di Ingegneria Corso di laurea in Ingegneria Elettronica e delle Telecomunicazioni - Docente: Ing. Laura Carnevali Esempio di prova scritta di Fondamenti di Informatica

Dettagli

Introduzione al C++ (continua)

Introduzione al C++ (continua) Introduzione al C++ (continua) I puntatori Un puntatore è una variabile che contiene un indirizzo di memoria pi_greco 3.141592 pi_greco_ptr indirizzo di 3.141592 & DEREFERENZIAZIONE RIFERIMENTO * se x

Dettagli

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica

Dettagli

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

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

Dettagli

INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE

INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE Scrivere in stampatello COGNOME, NOME e MATRICOLA su ogni foglio consegnato N.B.: In tutti gli esercizi viene valutata anche

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

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

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri Fondamenti di Informatica II prova in itinere 25 gennaio 2011 Matricola Cognome Nome Durata prova: 2 ore Istruzioni

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE PROGRAMMAZIONE II canale A-D 2007-2008 14 luglio 2008 TRACCIA DI SOLUZIONE 1. Si vogliono realizzare mediante puntatori delle liste circolari, cioè delle liste tali che l ultimo elemento della lista punta

Dettagli

Esercizi Liste. Prof. Alessandro Campi

Esercizi Liste. Prof. Alessandro Campi Esercizi Liste Prof. Alessandro Campi Esercizio Si consideri una lista dinamica di interi, i cui elementi sono del tipo definito come di seguito riportato: typedef struct El { int dato; struct El *next;

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018 Esercitazioni di Fondamenti di Informatica - Lez. 9 /1/018 Esercizi sulla gestione dei file in C Il codice degli esercizi e contenuto nella cartella parte1 1. Creare una funzione C che legga tutto cio

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

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

Dettagli

CALCOLATRICI, APPUNTI, LIBRI E QUADERNI,

CALCOLATRICI, APPUNTI, LIBRI E QUADERNI, Non è consentito l'utilizzo di CALCOLATRICI, APPUNTI, LIBRI E QUADERNI, ad eccezione dei manuali disponibili sulla cattedra. Rispondere alle domande scrivendo le risposte negli spazi disponibili. NON CONSEGNARE

Dettagli

Informatica 7. appunti dalle lezioni del 20 e 22/10/2010

Informatica 7. appunti dalle lezioni del 20 e 22/10/2010 Informatica 7 appunti dalle lezioni del 20 e 22/10/2010 Tipi di dato Nelle celle di memoria di un calcolatore ci sono solo 0 e 1, fisicamente realizzati tramite due diversi livelli di tensione elettrica

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018 Esercitazioni di Fondamenti di Informatica - Lez. 30/10/018 Esercizi sulle funzioni in C I codici e le soluzioni degli esercizi sono nella cartella parte1 1. Scrivere i prototipi delle seguenti funzioni.

Dettagli

a.a Codice corso: 21012

a.a Codice corso: 21012 Riepilogo sulla ricorsione Un algoritmo o una funzione matematica sono definiti ricorsivamente quando possono essere definiti facendo riferimento a se stessi. Si tratta cioè di un applicazione del principio

Dettagli

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento

Dettagli

Lab 17 Allocazione dinamica della memoria

Lab 17 Allocazione dinamica della memoria Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2009/2010 Lab 17 Allocazione dinamica della memoria Lab17 1 Esercizio 1 È dato

Dettagli

Struttura di un programma C++

Struttura di un programma C++ Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA Politecnico di Milano COGNOME E NOME Facoltà di Ingegneria Industriale FONDAMENTI DI INFORMATICA Seconda prova in itinere 13 Febbraio 2017 Primo Appello (Laureandi) 13 Febbraio 2017 RIGA COLONNA MATRICOLA

Dettagli

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome 1) Il termine informatica viene dalla fusione delle seguenti parole a) informazione

Dettagli

struct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; };

struct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; }; /* Programma 12cppEse1.cpp Autore : Riontino Raffaele 4 informatici ITIS Molinari - Milano corso serale 2/11/2010 Testo : Si vuole realizzare un tipo struct, utilizzato per informazioni su biglietti per

Dettagli

Strutture Dati. Nicu Sebe. Informatica Nicu Sebe 1 / 27

Strutture Dati. Nicu Sebe. Informatica Nicu Sebe 1 / 27 Strutture Dati Nicu Sebe Informatica Nicu Sebe 1 / 27 Dati e Tipi di Dati e Spazi Una variabile è caratterizzata dal suo Tipo Specifica i valori che può assumere (Insieme di Definizione) Specifica a quanti

Dettagli

Informatica B Prof. Di Nitto e Morzenti Appello del 17 febbraio 2005 Cognome e Nome... Numero Matricola... (in stampatello)

Informatica B Prof. Di Nitto e Morzenti Appello del 17 febbraio 2005 Cognome e Nome... Numero Matricola... (in stampatello) Informatica B Prof. Di Nitto e Morzenti Appello del 17 febbraio 2005 Cognome e Nome... Numero Matricola... (in stampatello) Risolvere i seguenti esercizi, scrivendo le risposte ed eventuali tracce di soluzione

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 12 Dicembre 2008 Compito A

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 12 Dicembre 2008 Compito A Prima di cominciare: si scarichi il file StartKit1A.zip contenente i file di esempio. Avvertenze per la consegna: nominare i file sorgenti come richiesto nel testo del compito, apporre all inizio di ogni

Dettagli

Lab 12 Allocazione dinamica della memoria

Lab 12 Allocazione dinamica della memoria Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 12 Allocazione dinamica della memoria Lab17 1 Esercizio 0 Un file di testo di nome bambini.txt, contiene informazioni

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2)

Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2) Liste linkate () Linked Lists La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct

Dettagli

Strutture dati dinamiche in C (II)

Strutture dati dinamiche in C (II) Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Le liste concatenate (ancora ma in modo più formale) L

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

Esercizi Strutture dati di tipo astratto

Esercizi Strutture dati di tipo astratto Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 21 Strutture dinamiche Gli array ci permettono di memorizzare un insieme di dati dello stesso tipo Deve essere noto staticamente il

Dettagli

Liste concatenate. Violetta Lonati

Liste concatenate. Violetta Lonati Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi

Dettagli

Es. 1. interi, li stampi a video ponendo prima i numeri pari e poi i numeri dispari. Es. 1. int readlength(file *f, int *even, int *odd)

Es. 1. interi, li stampi a video ponendo prima i numeri pari e poi i numeri dispari. Es. 1. int readlength(file *f, int *even, int *odd) Es. 1 È dato un file binario, di nome valori.dat, contenente una sequenza di int; non è noto a priori quanti interi siano presenti nel file. I valori sono disposti in ordine casuale. Si realizzi un programma

Dettagli

Laboratorio di algoritmi e strutture dati

Laboratorio di algoritmi e strutture dati Laboratorio di algoritmi e strutture dati G. Melideo CdL in Informatica A.A. 2009/2010 G. Melideo (CdL in Informatica) Laboratorio di algoritmi e strutture dati A.A. 2009/2010 1 / 23 Indice 1 Richiami

Dettagli

Tipi definiti dall'utente

Tipi definiti dall'utente Tipi definiti dall'utente Tipi definiti Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per denire nuovi tipi (tipi user-defined) Possiamo: Ridenominare

Dettagli

Lezione X Definizione di vettori a run-time

Lezione X Definizione di vettori a run-time Programmazione e Laboratorio di Programmazione Lezione X Definizione di vettori a run-time Programmazione e Laboratorio di Programmazione: Definizione di vettori a run-time 1 Definizione statica di vettori

Dettagli

case 0: /* child 1 - writing end */ close(fd[0]); // close read end write(fd[1], string, (strlen(string)+1));/* +1 is termination \0 */ return (0);

case 0: /* child 1 - writing end */ close(fd[0]); // close read end write(fd[1], string, (strlen(string)+1));/* +1 is termination \0 */ return (0); ESERCIZIO RELATIVO ALLA PARTE DI UNIX (3 punti) Si scriva un programma per realizzare la comunicazione unidirezionale via pipe fra due processi fratelli, in cui un fratello invia all altro la stringa "Good

Dettagli

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

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

Dettagli

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

Gestione dinamica di una coda

Gestione dinamica di una coda Gestione dinamica di una coda Una coda o queue è una lista lineare a lunghezza variabile in cui l'inserimento di nuovi elementi (push) viene effettuato ad un estremo (fondo o rear) e l'estrazione degli

Dettagli

Esercizio 1: media di numeri reali (uso funzioni e struct)

Esercizio 1: media di numeri reali (uso funzioni e struct) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture Linked Lists Liste linkate () La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct

Dettagli

Strutture Dati. Luca Abeni

Strutture Dati. Luca Abeni Strutture Dati Luca Abeni Dati e Tipi di Dati Una variabile è caratterizzata dal suo Tipo Specifica i valori che può assumere (Insieme di Definizione) Specifica a quanti byte di memoria la variabile è

Dettagli

a.a Codice corso: 21012, La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere:

a.a Codice corso: 21012, La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: LISTE DINAMICHE Liste semplicemente concatenate: La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: la lista vuota; oppure contiene un valore (di

Dettagli

Esercizio 1. Liste di interi

Esercizio 1. Liste di interi Esercizio 1. Liste di interi Si legga una sequenza di numeri interi da tastiera, dopo ogni inserimento chiedere all'utente se vuole continuare, quindi: Creare due liste L1 e L2 con inserimento ordinato;

Dettagli

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

(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

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

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

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

Lezione 13: Strutture dati dinamiche

Lezione 13: Strutture dati dinamiche Lezione 13: Strutture dati dinamiche Laboratorio di Elementi di Architettura e Sistemi Operativi 7 Maggio 2013 Riepilogo lezioni Data Argomento Compitino mar 07/05 Programmazione C: strutture mer 08/05

Dettagli

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 8 Febbraio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 8 Febbraio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 8 Febbraio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Il presente plico contiene 4 esercizi, deve essere debitamente compilato

Dettagli

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

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

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Tipi strutturati - struct

Tipi strutturati - struct Fondamenti di Programmazione A Appunti per le lezioni Gianfranco Rossi Tipi strutturati - struct Struttura dati (concreta) struct: sequenza di n elementi (n 0), rispettivamente di tipo t1,,tn (non necessariamente

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Esercizio 1. (3 punti) Fondamenti di Informatica PROVA SCRITTA 25 gennaio 2016 Data l istruzione assembler MIPS add $1,$2,$3, memorizzata all interno della memoria istruzioni della CPU, descrive la sua

Dettagli

Il linguaggio C. Puntatori e dintorni

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

Dettagli

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche Avvertenze Usare ESCLUSIVAMENTE penne ad inchiostro nero o blu (NO MATITE). Consegnare solo fogli formato A4 scritti da ambo le parti. In testa a ciascun foglio scrivere: cognome, nome, numero progressivo

Dettagli

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).

Dettagli

Appunti sul C: le liste

Appunti sul C: le liste Università degli Studi di L Aquila Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Appunti sul C: le liste Giovanna Melideo melideo@di.univaq.it

Dettagli

Linguaggio C Struct e union

Linguaggio C Struct e union FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Struct e union 2001 Pier Luca Montessoro - Davide Pierattoni

Dettagli

Ambienti di Programmazione per il Software di Base

Ambienti di Programmazione per il Software di Base Ambienti di Programmazione per il Software di Base Le Funzioni in C Esercizi sulle Funzioni svolti Esercizi sulle Funzioni da svolgere A.A. 2011/2012 Ambienti di Programmazione per il Software di Base

Dettagli

La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere:

La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: LISTE DINAMICHE Liste semplicemente concatenate: La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: la lista vuota; oppure contiene un valore (di

Dettagli

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

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

Dettagli

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

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

Il linguaggio C. Istruzioni, funzioni, dati strutturati

Il linguaggio C. Istruzioni, funzioni, dati strutturati Il linguaggio C Istruzioni, funzioni, dati strutturati Istruzioni Servono a dirigere il flusso di esecuzione di un programma controllano l ordine di esecuzione delle espressioni, quindi dei loro side effects

Dettagli

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste ESERCIZIO n.1 È dato un file di testo che contiene l'elenco dei vestiti presenti in un negozio. Il file contiene al massimo

Dettagli

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

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

Dettagli

NB: sono richieste almeno 4 risposte esatte per la correzione delle domande aperte

NB: sono richieste almeno 4 risposte esatte per la correzione delle domande aperte 7 Lug 17 MATRICOLA COGNOME NOME PUNTEGGI PER LE VARIE DOMANDE: Domande aperte: A: 6, B: 9, C: 9 Scelta multipla: 1.5 punti per ogni risposta esatta DURANTE IL COMPITO E AMMESSO SOLO L USO DI STRUMENTI

Dettagli

Dal linguaggio macchina al linguaggio C

Dal linguaggio macchina al linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Dal linguaggio macchina al linguaggio C Programma sorgente, compilatore, file oggetto, file eseguibile programma sorgente

Dettagli

Complessità algoritmi su strutture dati

Complessità algoritmi su strutture dati Complessità algoritmi su strutture dati Struttura di dato Ricerca Complessità (caso peggiore) Tavola non ordinata (N Ricerca O(N) elementi) sequenziale Tavola ordinata (N Ricerca binaria O(log2N) elementi)

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli

Liste concatenate e allocazione dinamica

Liste concatenate e allocazione dinamica Liste concatenate e allocazione dinamica Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide, e seguita

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright Mirko Viroli Copyright 2017, 2018 Moreno

Dettagli