Esame Informatica Generale 13/04/2016 Tema A



Documenti analoghi
Classe Squadra. #include <iostream> using namespace std;

Esame di Informatica Generale 25 giugno 2010 Professori: Carulli, Fiorino, Mazzei

Compito Basi di Dati. Tempo concesso: 2 ore 18 Febbraio 2013 Nome: Cognome: Matricola:

Esame di Informatica Generale 9 CFU 21 Giugno 2011 Professori: Carulli, Fiorino, Mazzei

Informatica! Appunti dal laboratorio 1!

PROGRAMMAZIONE: La selezione

SQL - Structured Query Language

Manuale SQL. Manuale SQL - 1 -

Esercizi. Filtraggio

Pr1: determinare il maggiore di n numeri interi n. Fondamenti di Informatica Prof. Vittoria de Nitto Personè

Basi di Dati: Corso di laboratorio

Gestione di files Motivazioni

Structured Query Language

A.A. 2018/2019. Simulazione. Simulazione Terza Prova Intracorso FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

PROGRAMMAZIONE: Le strutture di controllo

Esercizi C su array e matrici

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009

Esercitazione 6. Array

σ data 15/12/2013 data 20/12/2014

<Nome Tabella>.<attributo>

Strutture di controllo in C++

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Corso di. Basi di Dati I. 11. Esercitazioni in SQL: Altri esercizi

Basi di dati Appello del Soluzione del compito B

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

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

Scrittura formattata - printf

STRUCT - ESERCIZIO 1

Esercitazione 4. Comandi iterativi for, while, do-while

SQL: le funzioni di aggregazione

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

INTRODUZIONE ALLA PROGRAMMAZIONE

Laboratorio di Informatica

Transcript:

Esame Informatica Generale 13/04/2016 Tema A! 1/! Quesito 1 (punteggio 2) Si considerino le seguenti istruzioni del linguaggio c/c++. int x[100]; void fz(int[], double[], double*); // puntatori void fz(int[], double[], double&); // riferimenti Indicare gli errori della seguente espressione: fz(x[20], x, &x[4]); // puntatori fz(x[20], x, x[4]); // riferimenti Come primo parametro è richiesto un vettore di interi, mentre viene passato un tipo semplice, ovvero una cella intera del vettore x. Come secondo parametro è richiesto un vettore di double, mentre viene passato un vettore di interi. Per quanto riguarda il terzo parametro, è richiesto un reference a una variabile double mentre viene passata una variabile intera (una cella del vettore x). Quesito 2 (punteggio 2) Descrivere dettagliatamente il compito del gestore della memoria centrale in un sistema operativo.

! 2/! Quesito 3 (punteggio 2) Scegliere uno dei seguenti algoritmi codificati in linguaggio C/C++ e scrivere la tabella di esecuzione (trace table): Puntatori int F(int* x) { *x = *x + 1; return *x + 1; Riferimenti int F(int& x) { x = x + 1; return x + 1; int G(int* y, int x) { *y = x + F(y); return *y + x; int x, y; x = 2; y = 2; y = G(&x, y) - 1; int G(int& y, int x) { y = x + F(y); return y + x; int x, y; x = 2; y = 2; y = G(x, y) - 1; Main x y 2-2 2 G 2 2 *y x F 2 2 x di main 2 *x 2 2 x di main 2 y di G 3 2 x di main 2 y di G 6 2 x di main 2 6

! 3/! Quesito 4 (punteggio 2) Dati i seguenti schemi di relazione con le rispettive istanze: Aziende(PIVA, Denominazione) PIVA Denominazione 111 Pirelli 222 Zucchetti Consulenti(PIVA,CF, dataass, Ret) PIVA CF dataass Ret 111 AAAAAA 22-11-2009 1000 222 AAAAAA 28-10-2009 2000 222 BBBBBB 22-11-2009 5000 111 CCCCCC 30-12-200 1000 222 CCCCCC 30-12-200 2000 stabilire il risultato della seguente query scrivendo le tabelle intermedie: SELECT SUM(B.F), COUNT(*) FROM ( SELECT T.H, COUNT(*) AS F FROM Aziende A, ( SELECT COUNT(*) AS H FROM Consulenti GROUP BY dataass ) T GROUP BY T.H ) B

! 4/! Tabella T H 2 1 2 Tabella A x T PIVA Denominazione H 111 Pirelli 2 111 Pirelli 1 111 Pirelli 2 T.H Tabella B F 222 Zucchetti 2 222 Zucchetti 1 222 Zucchetti 2 2 4 1 2 Tabella finale SUM(B.F) COUNT(*) 6 2 Esercizio 1 (8 punti) Descrivere un algoritmo codificato in linguaggio C/C++ che: 1. definisce la funzione PrimaDelMassimo con parametri: a di tipo vettore di 100 int; b di tipo puntatore/riferimento ad un int. Si suppone che i valori contenuti nel vettore a siano tutti maggiori di zero. La funzione deve scrivere nell'area di memoria puntata/riferita da b il più grande valore contenuto nel vettore a che è minore del valore massimo contenuto nel vettore a. Se tale valore non esiste (i valori del vettore a possono essere tutti uguali), la funzione deve scrivere nell area di memoria puntata/riferita da b il numero -1. 2. nella funzione main I. dichiarare due vettori x e y contenenti 100 numeri interi; II. modificare il vettore y inserendo in ogni sua posizione il valore -1; III. ripetere le seguenti istruzioni fino a quando il vettore y contiene tutti numeri positivi: a. inserire 100 valori letti da standard input nel vettore x (i valori inseriti saranno tutti positivi); b. eseguire la funzione PrimaDelMassimo applicata al vettore x e scrivere il suo risultato nel vettore y.

#include <iostream> using namespace std;! 5/! void PrimaDelMassimo (int a[100], int &b) { int i = 0, max = 0, secondomax = 0; while (i < 100) { if (a[i] > max) { secondomax = max; max = a[i]; else if (a[i] > secondomax && a[i]!= max) { secondomax = a[i]; i = i + 1; if (max == secondomax) { b = -1; else { b = secondomax; int x[100], y[100]; int i = 0; while (i < 100) { y[i] = -1; i = i + 1; int j = 0; int risultato; while (j < 100) { i = 0; while (i < 100) { cin >> x[i]; i = i + 1; PrimaDelMassimo (x, risultato); if (risultato > 0) { y[j] = risultato; j = j + 1;

Esercizio 2 (5 punti) Descrivere un algoritmo codificato in linguaggio C/C++ che: 1. definisce due vettori: il primo di nome a contenente 500 numeri interi ed il secondo di nome b contenente 500 numeri interi; 2. legge una sequenza di valori da standard input ed inserisce i numeri maggiori di zero nel vettore a e i numeri minori di zero nel vettore b. Al termine dell operazione tutti i posti dei vettori devono contenere valori letti da standard input. #include <iostream> using namespace std; int a[500], b[500]; int p = 0, n = 0, t; while (p < 500 n < 500) { cin >> t; if (t > 0 && p < 100) { a[p] = t; p = p + 1;! 6/! if (t < 0 && n < 500) { a[n] = t; n = n + 1;

Esercizio 3 (9 punti) Il sistema informatico del Centro Sportivo Italiano (CSI) utilizza un database per il premio Fair Play. Nel database sono presenti le seguenti relazioni: Societa (ID, Denominazione) Partite(IDS, Categoria, NumeroGara, Punti) dove nella relazione Societa l'attributo ID è la chiave primaria. Nella relazione Partite gli attributi IDS, Categoria e NumeroGara formano la chiave primaria e l'attributo IDS è chiave esterna per la relazione Societa. Ogni tupla della relazione Partite serve a memorizzare i punti disciplina persi delle squadre in ogni partita. In ogni tupla gli attributi IDS e Categoria servono ad identificare la squadra, gli attributi Categoria e NumeroGara servono ad identificare la partita giocata e l attributo Punti serve a memorizzare i punti persi (0 vuole dire che nella partita la squadra non ha perso punti). Scrivere l'istruzione SQL che: 1. modifica le tuple della tabella Partite eliminando tutte le tuple con valore dell attributo Punti uguale a 0. 2. visualizza senza ripetizioni le squadre (IDS e Categoria) che in almeno una partita hanno perso esattamente 10 punti; 3. visualizza per ogni squadra: la squadra (IDS e Categoria), il numero di partite giocate e il numero di punti persi; 4. visualizza le squadre (IDS e Categoria) che hanno un numero di punti persi maggiori della media dei punti persi nella categoria; 5. traduce la seguente espressione in algebra relazionale: operazione di selezione sulla relazione Partite con predicato di selezione Punti IN (10, 0, 12). 1. DELETE WHERE Punti = 0 2. SELECT DISTINCT IDS, Categoria WHERE Punti = 10 3. SELECT IDS, Categoria, COUNT(*) AS Partite, SUM(Punti) as Persi GROUP BY IDS, Categoria 4. SELECT IDS, Categoria P, WHERE P.Categoria = T.Categoria GROUP BY IDS, Categoria HAVING SUM(Punti) > Media 5. SELECT * WHERE Punti IN (10, 0, 12) (SELECT Categoria, AVG(Punti) AS Media) GROUP BY Categoria) T! /!