UNIVERSITA` DI BERGAMO ESAME DI INFORMATICA 12 CFU Modulo di Programmazione (ING. INFORMATICA) Prof. G. PSAILA PROVA IN ITINERE DEL 12/01/2017
|
|
- Mario Di Marco
- 5 anni fa
- Visualizzazioni
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 Per consegnare, si svolgano entrambi gli esercizi. Durata:
DettagliEsercizio 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
DettagliFondamenti 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
DettagliInformatica 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
DettagliEsercizio 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
DettagliLaboratorio 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
DettagliESERCIZIO 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,
DettagliEsercizi. 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)
DettagliFondamenti 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
DettagliSoluzioni 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
DettagliEsercitazioni 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
DettagliPROVA 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.
DettagliEsempio 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
DettagliIntroduzione 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
DettagliLinguaggio 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
DettagliCorso 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
DettagliINFORMATICA 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
DettagliLaboratorio 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
DettagliInformatica 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
DettagliFondamenti 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
DettagliPolitecnico 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
DettagliEsercitazione 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
DettagliPROGRAMMAZIONE 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
DettagliEsercizi 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;
DettagliEsercitazioni 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
DettagliELEMENTI 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
DettagliCALCOLATRICI, 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
DettagliInformatica 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
DettagliEsercitazioni 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.
Dettaglia.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
DettagliTitolo 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
DettagliLaboratorio 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
DettagliLab 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
DettagliStruttura di un programma C++
Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout
DettagliFONDAMENTI 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
DettagliInformatica/ 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
Dettaglistruct 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
DettagliStrutture 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
DettagliInformatica 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
DettagliFondamenti 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
DettagliLab 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
DettagliIntroduzione 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
DettagliLinked 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
DettagliStrutture 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
DettagliEsercizio 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
DettagliEsercizi 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
DettagliLaboratorio 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
DettagliListe 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
DettagliIl 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
DettagliEs. 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
DettagliLaboratorio 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
DettagliTipi 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
DettagliLezione 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
Dettaglicase 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
DettagliEsercizio 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
DettagliTipi 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
DettagliGestione 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
DettagliEsercizio 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
DettagliDati 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
DettagliLinked 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
DettagliStrutture 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 è
Dettaglia.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
DettagliEsercizio 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) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste
DettagliLinguaggio 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
DettagliGestione 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
DettagliLezione 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
DettagliPolitecnico 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
DettagliQualsiasi 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
DettagliLinguaggio 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
DettagliVariabili 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:
DettagliTipi 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
DettagliFondamenti 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
DettagliIl 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;
DettagliCorso 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
DettagliProva 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).
DettagliAppunti 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
DettagliLinguaggio 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
DettagliAmbienti 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
DettagliLa 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
DettagliCorso 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
Dettagligiapresente( ) 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
DettagliIl 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
DettagliELEMENTI 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
DettagliElementi 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
DettagliNB: 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
DettagliDal 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
DettagliComplessità 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)
DettagliOperazioni 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
DettagliListe 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
DettagliLe 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
DettagliALGORITMI 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
DettagliIl 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