Indice
- Esame Informatica Generale 06/07/2017 – Fila A
- Esame Informatica Generale 06/07/2017 – Fila B
- Esame Informatica Generale 15/06/2017 – Fila A
- Esame Informatica Generale 15/06/2017 – Fila B
- Esame Informatica Generale 10/04/2017 – Fila A
- Esame Informatica Generale 10/04/2017 – Fila B
Esame Informatica Generale 06/07/2017 – Fila A
Quesito 1 (punteggio 2)
Si considerino le seguenti dichiarazioni di variabili e la seguente istruzione di assegnamento:
double x[10]; int y; y = calcola(x[9], x, &x[0]); /* versione puntatori */ y = calcola(x[9], x, x[0]) /* versione riferimenti */
Calcola. Riferimenti definite il prototipo (intestazione) della funzione. Nella versione la funzione x[0] dovrà modificare la variabile:
Int calcola(double, double []. Double);
Quesito 2 (punteggio 2)
Descrivere le differenze tra i protocolli TCP e UDP.
Quesito 3 (punteggio 2)
Scegliere uno dei seguenti algoritmi codificati in linguaggio C/C++ e scrivere la tabella di esecuzione (tracetable):
- Puntatori
int G(int* y, int* x) {
while (*y < 3) {
*x = *y + *x;
*y = *y + 1;
}
return *y + *x;
}
int main() {
int x, y;
x = 2;
y = 2;
y = G(&x, &x) + 1;
return 0;
}
int G(int& y, int& x) {
while (y < 3) {
x = y + x;
y = y + 1;
}
return y + x;
}
int main() {
int x, y;
x = 2;
y = 2;
y = G(x, x) + 1;
return 0;
}
Quesito 4 (punteggio 2)
Dati i seguenti schemi di relazione con le rispettive istanze:
- Aziende(PIVA, Denominazione)
- PIVA: 111, Denominazione: Pirelli
- PIVA: 222, Denominazione: Zucchetti
- Consulenti(PIVA, CF, dataAss, Ret)
- PIVA: 111, CF: AAAAAA, dataAss: 22-11-2009, Ret: 1000
- PIVA: 222, CF: AAAAAA, dataAss: 22-11-2009, Ret: 2000
- PIVA: 222, CF: BBBBBB, dataAss: 28-10-2009, Ret: 5000
- PIVA: 111, CF: CCCCCC, dataAss: 30-12-2007, Ret: 1000
- PIVA: 222, CF: CCCCCC, dataAss: 30-12-2007, Ret: 2000
Stabilire il risultato della seguente query scrivendo le tabelle intermedie:
SELECT C.CF, COUNT(*) FROM Consulenti C, (SELECT AVG(Ret) AS M FROM Consulenti GROUP BY PIVA) T WHERE C.Ret > T.M GROUP BY C.CF
- Tabella T
- M: 1000
- M: 4500
- Tabella C X T
- Tabella Finale
| PIVA | CF | dataAss | Ret | M |
|---|---|---|---|---|
| 111 | AAAAAA | 22-11-2009 | 1000 | 1000 |
| 222 | AAAAAA | 22-11-2009 | 2000 | 1000 |
| 222 | BBBBBB | 28-10-2009 | 5000 | 1000 |
| 111 | CCCCCC | 30-12-2007 | 1000 | 1000 |
| 222 | CCCCCC | 30-12-2007 | 2000 | 1000 |
| 111 | AAAAAA | 22-11-2009 | 1000 | 4500 |
| 222 | AAAAAA | 22-11-2009 | 2000 | 4500 |
| 222 | BBBBBB | 28-10-2009 | 5000 | 4500 |
| 111 | CCCCCC | 30-12-2007 | 1000 | 4500 |
| 222 | CCCCCC | 30-12-2007 | 2000 | 4500 |
| C.CF | COUNT(*) |
|---|---|
| AAAAAA | 1 |
| BBBBBB | 2 |
| CCCCCC | 1 |
Esercizio 1 (9 punti)
Descrivere un algoritmo codificato in linguaggio C/C++ che:
- Definisce la funzione con parametri:
- int; a di tipo vettore di 100
- La funzione deve restituire con un’istruzione return il valore 1 se nel vettore a sono presenti tre valori x, y e z tali che x < y < z; in caso contrario la funzione deve restituire con un’istruzione return il valore -1.
- Main
- Dichiarare un vettore di nome contenente 100 numeri interi;
- Dichiarare un vettore di nome contenente 20 numeri interi;
- Ripetere le seguenti operazioni fino a quando viene scritto un valore negativo in ogni posizione del vettore y:
- Inserire 100 valori letti da standard input nel vettore verifica x.
- Eseguire la funzione applicata al vettore e se il risultato della funzione è un numero negativo inserirlo nel vettore y.
#include <stdio.h>
#include <stdlib.h>
int verifica(int a[100]){
int i;
int primomin, secondomin, terzomin;
primomin = a[1];
secondomin = a[1];
terzomin = a[1];
for(i=0; i<100; i++){
if(a[i]<primomin) primomin=a[i];
}
for(i=0; i<100; i++){
if(a[i]<secondomin && a[i] != primomin) secondomin=a[i];
}
for(i=0; i<100; i++){
if(a[i]<terzomin && a[i] != primomin && a[i] != secondomin) terzomin=a[i];
}
if (primomin != secondomin && primomin != terzomin && secondomin != terzomin) return 1;
else return -1;
}
int main(){
int x[100];
int y[20];
int i;
int j=0;
int risultato;
do {
for(i=0;i<100;i++) scanf("%d", &x[i]);
risultato = verifica(x);
if (risultato <0){
y[j]=risultato;
j=j+1;
}
} while(j<20);
system("PAUSE");
return 0;
}
Esercizio 2 (4 punti)
Descrivere un algoritmo codificato in linguaggio C/C++ che:
- Definisce due vettori: il primo di nome a contenente 1000 numeri interi ed il secondo di nome b contenente 1000 numeri interi;
- Modifica il vettore a inserendo in ogni sua posizione un valore letto da standard input;
- Successivamente al punto due, modifica il vettore b inserendo i valori presenti nel vettore a aumentati del valore minimo presente nel vettore a.
#include <stdio.h>
#include <stdlib.h>
int main(){
int a[1000];
int b[1000];
int i;
int min;
for(i=0; i<1000; i++) scanf("%d", &a[i]);
min=a[1];
for(i=0; i<1000; i++){
if(a[i]<min) min=a[i];
}
for(i=0; i<1000; i++){
b[i]=a[i]+min;
}
system("PAUSE");
return 0;
}
Esercizio 3 (9 punti)
Il sistema informatico di una nota azienda elettrica utilizza un database per gestire le fatture emesse. Nel database sono presenti le seguenti relazioni:
- Forniture (ID, CF, Indirizzo)
- Fatture(NumeroFornitura, Data, Importo, Periodo)
- dove nella relazione l'attributo NumeroFornitura è la chiave primaria. Nella relazione gli attributi NumeroFornitura e Periodo formano la chiave primaria e l'attributo NumeroFornitura è chiave esterna per la relazione Forniture.
- Ogni tupla della relazione Fatture elenca le fatture emesse, in ogni tupla l'attributo Data rappresenta la data di pagamento della fattura e l'attributo Periodo rappresenta il periodo di riferimento della fattura ad esempio 'I 2015' indica il primo trimestre del 2015 mentre 'IV 2013' indica il quarto trimestre del 2013.
Errore Logico nella Query
Data la seguente interrogazione SQL spiegare l’errore logico in essa contenuto (la query ha sicuramente un errore):
SELECT NumeroFornitura, SUM(Importo) FROM Fatture;
Nella seguente query manca un raggruppamento in base al quale effettuare la sommatoria. La versione corretta sarebbe:
SELECT NumeroFornitura, SUM(Importo) FROM Fatture GROUP BY NumeroFornitura
Query 2
SELECT CF FROM Fatture, Forniture WHERE NumeroFornitura=ID GROUP BY CF HAVING COUNT(*)=2
Query 3
SELECT SUM(Importo) FROM Fatture WHERE Data BETWEEN '01/01/2016' AND '31/12/2016'
Query 4
SELECT CF
FROM Forniture, Fatture
WHERE NumeroFornitura = ID AND Data BETWEEN '01/01/2016' AND '31/12/2016'
GROUP BY CF
HAVING SUM(Importo) > (
SELECT AVG(Importo)
FROM Forniture, Fatture
WHERE NumeroFornitura = ID AND Data BETWEEN '01/01/2016' AND '31/12/2016'
GROUP BY CF
)
Query 5
SELECT *
FROM Forniture, (
SELECT COUNT(*)
FROM Fatture
) X
Esame Informatica Generale 06/07/2017 – Fila B
Quesito 1 (punteggio 2)
Si considerino le seguenti dichiarazioni di variabili e la seguente istruzione di assegnamento:
double x[10]; int y; y = compra(&x[1], x[9], x); /* versione puntatori */ y = compra (x[1], x[9], x) /* versione riferimenti */
Elabora. Riferimenti definite il prototipo (intestazione) della funzione. Nella versione la funzione x[1] dovrà modificare la variabile:
Int compra (double *, double, double []);
Quesito 2 (punteggio 2)
Descrivere la funzione del gestore dei file di un sistema operativo.
Quesito 3 (punteggio 2)
Scegliere uno dei seguenti algoritmi codificati in linguaggio C/C++ e scrivere la tabella di esecuzione (tracetable):
- Puntatori
int g(int x, double* y) {
x = x + 1;
*y = *y + x;
return x - 2;
}
int main() {
double x;
int y;
y = 1;
x = 2.4;
while (x > 0) {
y = g(y, &x);
x = x - 3;
}
return 0;
}
int g(int x, double& y) {
x = x + 1;
y = y + x;
return x - 2;
}
int main() {
double x;
int y;
y = 1;
x = 2.4;
while (x > 0) {
y = g(y, x);
x = x - 3;
}
return 0;
}
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Oscillazioni e Onde - Soluzione Temi Esame
-
Soluzione temi desame Informatica Generale Settembre 2017/Aprile 2018
-
Soluzione Esami Informatica Generale Febbraio 2017
-
Soluzione Temi Esame Informatica generale - Aprile Settembre 2018