Matricola Nome Cognome Firma Es.1 Es.2 Es.3 Es.4 Es.5 Tot. Esercizio 1 (6 punti) Data la seguente struttura dati: int elementi[100]; int numeroelementi; Vettore; Fondamenti di Informatica 2 Prova scritta del 6 Luglio 2010 si definisca una struttura dati VettoreCompresso, destinata a memorizzare in formato compresso il vettore, ottenuto escludendo tutti gli elementi del vettore il cui valore è uguale a un valore predefinito. I componenti del vettore compresso saranno nel formato <valore, posizione>. Ad esempio, dato il vettore V = {1, 4, -7, 1, 1, 1, 3, -2, 1, possiamo rappresentarlo in formato compresso escludendo i valori uguali a 1 nel seguente modo Vc = {{4,1,{-7,2,{3,6,{-2,7 Scrivere quindi il codice della funzione che implementa una funzione avente il seguente prototipo VettoreCompresso Comprimi(Vettore V, int costante) che rappresenta in formato compresso il vettore V escludendo tutti I valori di V uguali a costante Soluzione Fondamenti di Informatica 2 Prova Scritta del 6 Luglio 2010 1
Esercizio 2 (5 punti) Date le seguenti variabili: int numeroattivita; int freqsettimanale; Attivita; Attivita A; char nome[20]; char cognome[20]; char cf[16]; Socio; Definite una struttura ElencoSoci contenente un array di elementi di tipo Socio. Successivamente, scrivete la porzione di codice che stampi a video il nome, il cognome e l importo in euro della quota associativa che ogni socio deve versare mensilmente alla palestra. Il costo deve essere calcolato secondo la tabella seguente. (Es. Il Socio "Mario Rossi" frequenta 3 volte la settimana e svolge 2 attività. L importo da versare sarà di 55) Numero Attività Svolte 1 2 >2 Frequenza Settimanale <=2 20 35 40 >2 35 55 70 Fondamenti di Informatica 2 Prova Scritta del 6 Luglio 2010 2
Esercizio 3 (5 punti) Dire quale operazione è implementata dalla funzione mistero motivando adeguatamente la risposta. float elementi[10]; int numeroelementi; Vettore; void mistero(vettore A, Vettore B){ int i, j; B.numeroElementi = 0; for(i=0; i<a.numeroelementi; i++){ B.elementi[i] = 0; for(j=0; j<=i; j++){ B.elementi[i] += A.elementi[j]; B.numeroElementi++; return; Fondamenti di Informatica 2 Prova Scritta del 6 Luglio 2010 3
Esercizio 4 (8 punti) 1. Disegnare uno schema ER che descriva la realtà relativa alla distribuzione e vendita dei libri in Italia. In particolare si vogliono organizzare le informazioni relative agli autori, gli editori, i libri e i negozi che operano nel territorio. Ciascun autore è identificato tramite il codice fiscale. Per ognuno si vogliono memorizzare le informazioni anagrafiche (nome, cognome, data e luogo di nascita, luogo di residenza). Per ciascun negozio operante nel territorio si vogliono memorizzare il codice identificativo, il nome, l indirizzo e la città. Ogni libro ha un codice, un titolo, un anno di edizione e un numero di pagine. Ad ogni libro pubblicato sono associati un solo autore ed un solo editore. Ogni editore è identificato da un codice, un nome ed una città. Per ogni libro si vuol tener traccia del numero di copie vendute in ciascun negozio. Progettare uno schema concettuale e disegnare un diagramma E-R per tale schema. Specificate tutti i vincoli di chiave e di partecipazione e tutte le ipotesi che fate. Se vi sono vincoli che non riuscite a rappresentare nel diagramma E-R, spiegare brevemente perché non avete potuto esprimerli. 2. Tradurre nello schema logico relazionale lo schema ER progettato precedentemente, indicando chiaramente chiavi primarie, vincoli di integrità referenziale e tutti gli altri vincoli espressi dal diagramma ER. Tradurre lo schema logico relazionale creato in precedenza in tabelle SQL. Fondamenti di Informatica 2 Prova Scritta del 6 Luglio 2010 4
Esercizio 5 (8 punti) Considerate lo schema seguente: Aereo (aid: integer, anome: string, autonomia: integer) Abilitazione (pid: integer, aid: integer) foreign key (pid) references Pilota (pid) L attributo pid deve essere NOT NULL foreign key (aid) references Aereo (aid) L attributo aid deve essere NOT NULL Pilota (pid: integer, pnome: string, salario: integer) Scrivete in SQL la seguente interrogazione: Mostrare i nomi dei piloti abilitati a pilotare gli aerei con l autonomia massima. Soluzione Fondamenti di Informatica 2 Prova Scritta del 6 Luglio 2010 5