Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

Esercizio 3

Query 1

DELETE FROM Coperture

WHERE costoOrario < 0

Query 2

SELECT IDTutor

FROM Coperture

GROUP BY IDTutor

HAVING SUM(Ore) = (SELECT MAX(Somma)

FROM (SELECT SUM(Ore) AS Somma

FROM Coperture

GROUP BY IDTutor) A

) B

Query 3

SELECT IDTutor

FROM Coperture

GROUP BY IDTutor

HAVING COUNT(*)=1

Query 4

SELECT IDTutor

FROM Coperture

GROUP BY data, IDTutor

HAVING COUNT(*) =1

Query 5

SELECT * 23

FROM (SELECT *

FROM Coperture

WHERE data=’2017-01-20’ ) A,

(SELECT *

FROM Coperture

WHERE Laboratorio LIKE ‘LAB7%’ ) B 24

Esame Informatica Generale

03/02/2017 Tema C

Quesito 1 (punteggio 2)

Nel contesto dei Sistemi Operativi dire il motivo per cui avviene un’interruzione interna di un

processo e spiegare cosa accade al processo.

Quesito 2 (punteggio 2)

Definire formalmente il concetto di chiave di una relazione.

Quesito 3 (punteggio 2)

Scegliere uno dei seguenti algoritmi codificati in linguaggio C/C++ e scrivere la tabella di

esecuzione (trace table)

Puntatori Riferimenti

int G(int* y, int x) { int G(int& y, int x) {

int c; int c;

c = x; c = x;

while (*y < c) { while (y < c) {

c = c / 2; c = c / 2;

} }

*y = c; y = c;

return c + x; return c + x;

} }

int main() { int main() {

int x, y; int x, y; 25

x = 3; x = 3;

y = 10; y = 10;

y = G(&x, y); y = G(x, y);

return 0; return 0;

} }

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 22-11-2009 1000

222 CCCCCC 30-12-2007 2000

scrivere il risultato della seguente query scrivendo tutte le tabelle intermedie:

SELECT COUNT(*), SUM(X), SUM(Y)

FROM ( SELECT COUNT(*) AS X, SUM(K) AS Y

FROM ( 26

SELECT COUNT(*) AS H, SUM(Ret) AS K

FROM Consulenti

GROUP BY PIVA, dataAss

) B

GROUP BY B.H

) A

Esercizio 1 (9 punti)

Scrivere un algoritmo codificato in linguaggio C/C++ che:

SonoPiuGrande

5. definisce la funzione con parametri:

 a int;

di tipo vettore di 500

 b int;

di tipo vettore di 100

 c int;

di tipo vettore di 500

 d int.

di tipo c a

La funzione deve copiare nel vettore i valori del vettore aumentati del valore

d b.

contenuto nel parametro che sono maggiori di almeno un valore presente nel vettore

main

6. nella funzione x int, y int z int;

V. dichiara tre vettori di 500 di 100 e di 500

x y standard input;

VI. riempire i vettori e con valori letti da

standard input

VII. leggere una sequenza di valori da e per ogni numero della

SonoPiuGrande() x y

sequenza eseguire la funzione con i vettori e ed il

z.

numero della sequenza scrivendo il risultato nel vettore L’operazione termina

standard input

quando viene inserito da un numero negativo

Esercizio 2 (4 punti)

Scrivere un algoritmo codificato in linguaggio C/C++ che:

gradiT.

4. definisce una variabile intera di nome

5. legge da standard input una sequenza di numeri interi positivi che rappresentano dei gradi

sessagesimali (misure di angoli). Per ogni numero della sequenza, se il valore del numero

90 270

letto è compreso tra e (estremi inclusi), tale valore deve essere accumulato in una

gradiT.

variabile di nome gradiT

L'operazione termina quando il valore accumulato nella variabile corrisponde ad un

180 360).

angolo piatto (multiplo di ma non di 27

Esercizio 3 (9 punti)

Il sistema informatico dei una azienda di telefonia mobile utilizza un base di dati per gestire i dati

delle SIM. Nella base di dati sono presenti le seguenti tabelle:

Clienti (IDSIM, CF)

Telefonate (IDSIM, NumeroChiamato, data, ora, tempo,

CostoAlSecondo)

Clienti IDSIM

dove nella relazione l’attributo è una chiave della relazione. Nella relazione

Telefonate IDSIM, data ora IDSIM

gli attributi e formano una chiave e l’attributo è una

Clienti. Telefonate tempo

chiave esterna per la relazione Nella relazione l’attributo

NumeroChiamato

memorizza la durata della telefonata in secondi, l’attributo memorizza il

IDSIM

numero di telefono chiamato e l’attributo memorizza il codice della sim.

Scrivere l'istruzione SQL che: tempo Telefonate

11. pone a zero il valore dell’attributo delle tuple di in cui il valore di

CostoAlSecondo è negativo.

IDSIM

12. visualizza il valore dell'attributo per tutte le sim che in qualche giorno sono state le

uniche ad effettuare delle telefonate;

NumeroChiamato

13. visualizza il valore dell’attributo dei numeri telefonici chiamati il

maggior numero di volte; NumeroChiamato

14. visualizza il valore dell’attributo di tutti i numeri telefonici che hanno

ricevuto almeno due telefonate dalla stessa sim;

15. traduce la seguente espressione in algebra relazionale: operazione di prodotto cartesiano

fra: Clienti

a. la relazione ottenuta da attraverso un'operazione di proiezione

CF

dell’attributo e Telefonate

b. la relazione ottenuta da attraverso un'operazione di proiezione

IDSIM CostoAlSecondo.

degli attributi e 28

Soluzione tema C 03-02-2017

Quesito 3

Main

X Y

- -

3 -

3 10

3 10 G(&x,10)

3 10 Y X C

3 10 &x 10

3 10 &x 10 -

3 10 &x 10 10

3 10 &x 10 10

3 10 &x 10 5

3 10 &x 10 5

3 10 &x 10 2

3 10 &x 10 2

2 10 &x 10 2

-->12

2 12 29

Quesito 4

TABELLA B

H K

2 2000

3 9000

TABELLA A

X Y

1 2000

1 9000

TABELLA FINALE

COUNT(*) SUM(X) SUM(Y)

2 2 11000 30

Esercizio 1

#include <stdlib.h>

#include <stdio.h>

void SonoPiuGrande (int a[500], int b[100], int c[500], int d){

int i,j;

int vero;

int k=0;

for(i=0;i<500;i++){

vero=0;

for(j=0;j<100;j++){

if(a[i]>b[j]) vero=1;

}

if(vero=1){

c[k]=a[i]+d;

k++;

}

}

}

int main() {

int x[500], y[100], z[500];

int i;

int n; 31

for(i=0;i<500;i++) scanf("%d", &x[i]);

for(i=0;i<100;i++) scanf("%d", &y[i]);

do{ scanf("%d",&n);

SonoPiuGrande(x,y,z,n);

}while(n>=0);

system("PAUSE");

return 0;

} 32

Esercizio 2

#include<stdlib.h>

#include<stdio.h>

int main() {

int gradiT=0;

int n;

do{ scanf("%d", &n);

if(n>=90 && n<=270){

gradiT= gradiT+n;

}

}while(gradiT%180!=0 && gradiT%360!=0);

system("PAUSE");

return 0;

} 33

Esercizio 3

Query 1

UPDATE Telefonate

SET tempo=0

WHERE CostoAlSecondo <0

Query 2

SELECT IDSIM

FROM Telefonate

GROUP BY data, IDSIM

HAVING COUNT(*)=1

Query 3

SELECT NumeroChiamato

FROM Telefonate

GROUP BY NumeroChiamato

HAVING COUNT(*) = (SELECT MAX(Conta)

FROM ( SELECT COUNT(*) AS Conta

FROM Telefonate

GROUP BY NumeroChiamato) A

) B

Query 4

SELECT NumeroChiamato

FROM Telefonate

GROUP BY NumeroChiamato, IDSIM

HAVING COUNT(*) >= 2 34

Query 5

SELECT *

FROM ( SELECT CF

FROM Clienti ) A,

( SELECT IDSIM, CostoAlSecondo

FROM Telefonate) B 35

Esame Informatica Generale

03/02/2017 Tema D

Quesito 1 (punteggio 2)

Nel contesto dei Sistemi Operativi descrivere il salvataggio del contesto di un processo.

Quesito 2 (punteggio 2)

Definire formalmente il grado di una relazione.

Quesito 3 (punteggio 2)

Scegliere uno dei seguenti algoritmi codificati in linguaggio C/C++ e scrivere la tabella di

esecuzione (trace table)

Puntatori Riferimenti

int G(int* y, int x) { int G(int& y, int x) {

int c; int c;

c = x; c = x;

while (*y < c) { while (y < c) {

c = c / 3; c = c / 3;

} }

*y = c; y = c;

return c + x; return c + x;

} }

int main() { int main() {

int x, y; int x, y;

x = 2; x = 2; 36

y = 10; y = 10;

y = G(&x, y); y = G(x, y);

return 0; return 0;

} }

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 1000

222 BBBBBB 22-11-2009 5000

111 CCCCCC 22-11-2009 1000

222 CCCCCC 30-12-2007 2000

scrivere il risultato della seguente query scrivendo tutte le tabelle intermedie:

SELECT COUNT(*), SUM(X), SUM(Y)

FROM ( SELECT COUNT(*) AS X, SUM(K) AS Y

FROM (

SELECT COUNT(*) AS H, SUM(Ret) AS K

FROM Consulenti 37

GROUP BY PIVA, dataAss

) B

GROUP BY B.K

) A

Esercizio 1 (9 punti)

Scrivere un algoritmo codificato in linguaggio C/C++ che:

Meta

7. definisce la funzione con parametri:

 a int;

di tipo vettore di 500

 b int;

di tipo vettore di 100

 c int;

di tipo vettore di 500

 d int.

di tipo b

Si suppone che i valori del vettore siano in ordine crescente. La funzione deve copiare nel

c a d

vettore i valori del vettore che aumentati del valore del parametro sono maggiori di

b.

almeno la metà dei valori contenuti nel vettore

main

8. nella funzione x int, y int z int;

VIII. dichiara tre vettori di 500 di 100 e di 500

x standard input;

IX. riempire il vettore con valori letti da

y standard input

X. riempire il vettore con valori letti da inserendo valori in

ordine crescente; standard input

XI. leggere una sequenza di valori da e per ogni numero della

Meta() x y

sequenza eseguire la funzione con i vettori e ed il numero della

z.

sequenza scrivendo il risultato nel vettore L’operazione termina quando viene

standard input

inserito da un numero positivo.

Esercizio 2 (4 punti)

Scrivere un algoritmo codificato in linguaggio C/C++ che:

gradiT.

6. definisce una variabile intera di nome

7. legge da standard input un numero intero e lo memorizza nella variabile di nome

numeroG.

8. legge da standard input una sequenza di numeri interi positivi che rappresentano dei gradi

sessagesimali (misure di angoli). Per ogni numero della sequenza, se il valore del numero

170,

letto è minore di tale valore deve essere accumulato in una variabile di nome

gradiT. gradiT

L'operazione termina quando il valore accumulato nella variabile corrisponde a

numeroG angoli giro (360). 38

Esercizio 3 (9 punti)

Il sistema informatico dei una azienda della Banca d’Italia utilizza un base di dati per memorizzare i

dati relativi agli assegni compilati in maniera errata. Nella base di dati sono presenti le seguenti

tabelle:

Anagrafe (CF, Nome, Cognome)

Operazioni (NAssegno, CF, Importo, CodiceErrore)

Anagrafe CF Operazioni

dove nella relazione l’attributo è una chiave. Nella relazione

NAssegno CF

l’attributo è una chiave e l’attributo è una chiave esterna per la relazione

Anagrafe. Operazioni Importo

Nella relazione l’attributo memorizza l’importo

CF

dell’assegno e l’attributo è il codice fiscale della persona che ha commesso l’errore. I valori

CodiceErrore

dell’attributo sono lettere alfabetiche che identificano il tipo di errore.

Scrivere l'istruzione SQL che: Operazioni

16. elimina le tuple della relazione in cui il valore dell’attributo

CodiceErrore ‘A’, ‘B’, ‘C’ ‘D’.

è diverso da una delle seguenti lettere: e

CF

17. visualizza il valore dell'attributo per tutte le persone che per qualche errore sono state

le uniche ad avere commesso dell’errore;

CodiceErrore

18. visualizza il valore dell’attributo di tutti i codici di errore fatti almeno due

volte dalla stessa persona; CodiceErrore

19. visualizza il valore dell’attributo dei codici degli errori fatti il maggior

numero di volte;

20. traduce la seguente espressione in algebra relazionale: operazione di prodotto cartesiano

fra: Anagrafe

a. la relazione ottenuta da attraverso un'operazione di proiezione

Nome

dell’attributo e Operazioni

b. la relazione ottenuta da attraverso un'operazione di proiezione

Importo CodiceErrore.

degli attributi e 39

Soluzione tema D 03-02-2017

Quesito 3

Main

X Y

- -

2 -

2 10

2 10 G(&x,10)

2 10 Y X C

2 10 &x 10

2 10 &x 10 -

2 10 &x 10 10

2 10 &x 10 10

2 10 &x 10 3

2 10 &x 10 3

2 10 &x 10 1

1 10 &x 10 1

-->11

1 11 40

Quesito 4

TABELLA B

H K

2 2000

3 9000

TABELLA A

X Y

1 2000

1 9000

TABELLA FINALE

COUNT(*) SUM(X) SUM(Y)

1 2 11000 41

Esercizio 1

#include <stdlib.h>

#include <stdio.h>

void Meta(int a[500], int b[100], int c[500], int d){

int i,j,k;

int conta;

for(i=0;i<500;i++){

conta=0;

for(j=0;j<100;j++){

if(a[i]>b[j]) conta++;

}

if(conta>=50){

c[k]=a[i]+d;

k++;

}

}

}

int main() {

int x[500], y[100], z[500];

int i;

int n; 42

for(i=0;i<500;i++) scanf("%d",&x[i]);

for(i=0;i<100;i++) scanf("%d",&x[i]);

do{ scanf("%d",&n);

Meta(x,y,z,n);

}while(n<0);

system("PAUSE");

return 0;

} 43

Esercizio 2

#include <stdlib.h>

#include <stdio.h>

int main() {

int gradiT=0;

int numeroG;

int n;

scanf("%d", &numeroG);

do{ scanf("%d", &n);

if(n<170){

gradiT=gradiT+n;

}

}while(gradiT!=numeroG);

system("PAUSE");

return 0;

} 44

Esercizio 3

Query 1

DELETE FROM Operazioni ‘A’, ‘B’, ‘C’ ‘D’)

WHERE CodiceErrore NOT IN ( ,

Query 2

SELECT CF

FROM Operazioni

GROUP BY CodiceErrore

HAVING COUNT(*)=1

Query 3

SELECT CodiceErrore

FROM Operazioni

GROUP BY CodiceErrore,CF

HAVING COUNT(*)>=2

Query 4

SELECT CodiceErrore

FROM Operazioni

GROUP BY CodiceErrore

HAVING COUNT(*) = (SELECT MAX(Conta)

FROM ( SELECT COUNT(*) AS Conta

FROM Operazioni

GROUP BY CodiceErrore) A

) B

Query 5

SELECT * 45

FROM ( SELECT Nome

FROM Anagrafe ) A,

(SELECT Importo, CodiceErrore

FROM Operazioni) B 46

Esame Informatica Generale

17/02/2017 Tema A

Quesito 1 (punteggio 2)

Definire formalmente l’istruzione SQL per modificare il valore degli attributi di una relazione.

Quesito 2 (punteggio 2)

Descrivere la funzione del modem.

Quesito 3 (punteggio 2)

Scegliere uno dei seguenti algoritmi codificati in linguaggio C/C++ e scrivere la tabella di

esecuzione (trace table)

Puntatori Riferimenti

int F(int* a, int* b) { int F(int& a, int& b) {

*b = *a - 1; b = a - 1;

*a = *a + *b; a = a + b;

return *a; return a;

} }

int G(int* x, int y) { int G(int& x, int y) {

int c; int c;

c = F(x, x) + y; c = F(x, x) + y;

return *x + c; return x + c;

} }

int main() { int main() { 47

int x, y; int x, y;

x = 1; x = 1;

y = G(&x, 1); y = G(x, 1);

return 0; return 0;

} }

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 2500

222 BBBBBB 22-11-2009 5000

111 CCCCCC 30-12-2007 1000

222 CCCCCC 30-12-2007 2500

scrivere il risultato della seguente query scrivendo tutte le tabelle intermedie:

SELECT PIVA, COUNT(*), SUM(K), SUM(H)

FROM ( SELECT PIVA, COUNT(*) AS K, SUM(Ret) AS H 48

FROM Consulenti

GROUP BY PIVA, Ret

) A

WHERE A.H >= 5000

GROUP BY PIVA

Esercizio 1 (9 punti)

Scrivere un algoritmo codificato in linguaggio C/C++ che:

EsisteCoppia

9. definisce la funzione con parametri:

 a int;

di tipo vettore di 500

 b int;

di tipo vettore di 100

 c int;

di tipo vettore di 500

 d int.

di tipo puntatore/riferimento ad un

x a, x c

Per ogni valore del vettore la funzione deve copiare nel vettore solo se esistono

y z b y>x z<x.

almeno due i valori e del vettore tali che e La funzione deve inoltre

c

scrivere nell’area di memoria puntata/riferita da il numero di valori copiati.

main

10. nella funzione x y int z int.

XII. dichiara tre vettori e di 500 e di 100

n int;

XIII. dichiara una variabile di tipo

x standard input;

XIV. riempie il vettore con valori letti da

XV. ripete le seguenti istruzioni fino a quando l’esecuzione della funzione

EsisteCoppia() y

inserisce in ogni posto del vettore un valore:

z standard input;

a. riempire il vettore con valori letti da

EsisteCoppia() x

b. eseguire la funzione applicata al vettore e al

z y n;

vettore inserendo i risultati nel vettore e nella variabile

Esercizio 2 (4 punti)

Gli anni bisestili sono:

 gli anni non secolari (non divisibili per cento) divisibili per 4;

 gli anni secolari divisibili per 400.

Scrivere un algoritmo codificato in linguaggio C/C++ che leggendo da standard input una sequenza

di numeri interi positivi che rappresentano anni (ad es. 1990, 1834, 2015, …) conta quanti di essi

sono bisestili. L'operazione termina quando vengono letti quattro anni bisestili. 49

Esercizio 3 (9 punti)

Il sistema informatico del Centro Sportivo Italiano (CSI) utilizza un base di dati per gestire i risultati

della gare di pallacanestro regionali. Nella base di dati sono presenti le seguenti tabelle:

Squadre (IDSQ, Denominazione)

Gare (IDGara, Casa, Ospite, PuntiCasa, PuntiOspiti)

Squadre IDSQ Gare

dove nella relazione l’attributo è una chiave. Nella relazione l’attributo

IDGara Casa Ospite

è una chiave e gli attributi e sono chiavi esterna per la relazione

Squadre. Gare PuntiCasa PuntiOspiti

In ogni tupla della relazione gli attributi e

memorizzano rispettivamente i punti fatti dalla squadra di casa e i punti fatti dalla squadra ospite

Casa Ospite

e gli attributi e memorizzano rispettivamente il codice della squadra di casa e della

squadra ospite. Ovviamente la squadra vincente è la squadra che ha totalizzato più punti.

Ricordiamo inoltre che le gare di pallacanestro non possono terminare con un punteggio di parità.

Scrivere l'istruzione SQL che: Gare PuntiCasa

21. elimina tutte le tuple della relazione in cui gli attributi e

PuntiOspiti hanno lo stesso valore.

22. visualizza i codici delle squadre e il numero totale di punti fatti da ogni squadra;

23. visualizza i codici delle squadre e il numero totale di gare disputate in “casa”;

24. visualizza per ogni gara la denominazione della squadra che ha totalizzato più punti (la

squadra che ha vinto l’incontro);

25. traduce la seguente espressione dell’algebra relazionale: operazione di selezione della

Gara PuntiCasa > PuntiOspiti.

relazione con predicato di selezione 50

Soluzione tema A 17-02-2017

Quesito 3

Main

X Y

- -

1 -

1 - G(&x,1)

1 - X Y C

1 - &x 1

1 - &x 1 -

1 - &x 1 - F(&x,&x)

1 - &x 1 - A B

1 - &x 1 - &x &x

0 - &x 1 - &x &x

0 - &x 1 - &x &x

-- >0

0 - &x 1 1

-->1

0 1 51

Quesito 4

TABELLA A

PIVA K H

111 2 2000

222 3 10000

TABELLA FINALE

PIVA COUNT(*) SUM(K) SUM(H)

222 2 3 10000

Esercizio 1

#include <stdlib.h>

#include <stdio.h>

void EsisteCoppia(int a[500], int b[100], int c[500], int *d){

int i,j,k;

int x,y,z;

int vero1, vero2;

int conta=0;

k=0;

for(i=0;i<500;i++){

x=a[i];

vero1=0;

vero2=0; 52

for(j=0;j<100;j++){

y=b[j];

z=b[j];

if(y>x) vero1=1;

if(z<x) vero2=1;

}

if(vero1==1 && vero2==1){

c[k]=x;

k++;

conta++;

}

}

*d=conta;

}

int main() {

int x[500], y[500], z[100];

int n;

int i;

for(i=0;i<500;i++) scanf("%d", &x[i]);

do{ for(i=0;i<100;i++) scanf("%d", &z[i]);

EsisteCoppia(x,z,y,&n); 53

}while(n!=500);

system("PAUSE");

return 0;

}

Esercizio 2

#include <stdlib.h>

#include <stdio.h>

int main() {

int conta=0;

int n;

do{ scanf("%d",&n);

if((n%100 !=0) && (n%4==0)) conta++;

}while(conta!=4);

system("PAUSE");

return 0;

} 54

Esercizio 3

Query 1

DELETE FROM Gare

WHERE PuntiCasa = PuntiOspiti

Query 2

SELECT IDSQ, SUM(PuntiCasa), SUM(PuntiOspiti)

FROM Squadre, Gare

WHERE Casa=IDSQ OR Ospite = IDSQ

GROUP BY IDSQ

Query 3

SELECT IDSQ, COUNT(Casa)

FROM Gare, Squadre

WHERE Casa=IDSQ

GROUP BY IDSQ

Query 4

SELECT IDGara,

IIF([PuntiCasa]>[PuntiOspiti],[Casa],[Ospite])

FROM Gare

Query 5

SELECT *

FROM Gara

WHERE PuntiCasa>PuntiOspiti 55

Esame Informatica Generale

17/02/2017 Tema B

Quesito 1 (punteggio 2)

Definire la fase di fetch (reperimento di un’istruzione) di una CPU.

Quesito 2 (punteggio 2)

Descrivere la differenza per quanto riguarda l’accesso ai dati tra le memorie di massa a nastri e le

memorie di massa a disco.

Quesito 3 (punteggio 2)

Scegliere uno dei seguenti algoritmi codificati in linguaggio C/C++ e scrivere la tabella di

esecuzione (trace table)

Puntatori Riferimenti

int F(int* a, int* b) { int F(int& a, int& b) {

*b = *a + 1; b = a + 1;

*a = *a - *b; a = a - b;

return *a; return a;

} }

int G(int* x, int y) { int G(int& x, int y) {

int c; int c;

c = F(x, x) + y; c = F(x, x) + y;

return *x + c; return x + c;

} } 56

int main() { int main() {

int x, y; int x, y;

x = 2; x = 2;

y = G(&x, 1); y = G(x, 1);

return 0; return 0;

} }

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 8500

222 BBBBBB 22-11-2009 5000

111 CCCCCC 30-12-2007 1000

222 CCCCCC 30-12-2007 7500

scrivere il risultato della seguente query scrivendo tutte le tabelle intermedie:

SELECT PIVA, COUNT(*), SUM(K), SUM(H)

FROM ( SELECT PIVA, COUNT(*) AS K, SUM(Ret) AS H 57

FROM Consulenti

GROUP BY PIVA, Ret

) A

WHERE A.H >= 5000

GROUP BY PIVA

Esercizio 1 (9 punti)

Scrivere un algoritmo codificato in linguaggio C/C++ che:

InParte

11. definisce la funzione con parametri:

 a int;

di tipo vettore di 500

 b int;

di tipo vettore di 500

 c int.

di tipo puntatore/riferimento ad un a b

La funzione deve copiare il primo valore del vettore nel primo posto del vettore e per

x a x b

ogni valore del vettore successivo al primo, la funzione deve copiare nel vettore

x a b.

solo se minore di tutti gli elementi del vettore già copiati nel vettore La funzione

c

deve inoltre scrivere nell’area di memoria puntata/riferita da la posizione del più piccolo

b.

valore copiato nel vettore

main

12. nella funzione x y int.

XVI. dichiara due vettori e di 500

n int;

XVII. dichiara una variabile di tipo InParte()

XVIII. ripete le seguenti istruzioni fino a quando l’esecuzione della funzione

n

inserisce nella variabile il valore 0:

x standard input;

a. riempire il vettore con valori letti da

InParte () x

b. eseguire la funzione applicata al vettore inserendo i

y n;

risultati nel vettore e nella variabile

Esercizio 2 (4 punti)

Una condizione sufficiente affinché tre segmenti possano formare un triangolo è che ciascuno di

essi sia minore della somma degli altri due e maggiore della loro differenza.

Scrivere un algoritmo, codificato in linguaggio C/C++, che ripete le seguenti operazioni:

1. legge tre valori da standard input che rappresentano le lunghezze di tre segmenti;

2. visualizzi su standard output il messaggio “Triangolo” se i tre valori soddisfano il criterio

sopra descritto.

L’operazione deve terminare appena uno dei tre valori letti è negativo 58

Esercizio 3 (9 punti)

Il sistema informatico di una azienda dolciaria utilizza un base di dati per gestire la quantità di

essenze utilizzate nei dolci. Si suppone che in ogni dolce siano utilizzate due essenze. Nella base di

dati sono presenti le seguenti tabelle:

Essenze (IDS, Nome)

Produzione (IDDolce, data, IDEssenzaP, IDEssenzaS, PesoP, PesoS)

Essenze IDS Produzione

dove nella relazione l’attributo è una chiave. Nella relazione gli

IDDolce data IDEssenzaP IDEssenzaS

attributi e formano una chiave e gli attributi sono

Essenze. Produzione

chiavi esterne per la relazione In ogni tupla della relazione gli attributi

PesoP PesoS

e memorizzano rispettivamente il peso in grammi della quantità delle due essenze

IDEssenzaP IDEssenzaS

utilizzate per la produzione e gli attributi e memorizzano

IDEssenzaP

rispettivamente il codici delle due essenze, l’attributo memorizza il codice

dell’essenza principale.

Scrivere l'istruzione SQL che: Peso1

26. cambia il segno al valore dell’attributo di tutte le tuple della relazione

Produzione Peso1

in cui il valore dell’attributo è negativo.

27. Visualizza, per le essenze utilizzate almeno una volta, i codici delle essenze e il peso totale

di essenza utilizzata complessivamente in tutte le produzioni;

28. visualizza i codici delle essenze e il numero totale di volte in cui è stata utilizzata come

essenza principale;

29. visualizza per ogni produzione il nome dell’essenza che è stata utilizzata con maggior peso;

30. traduce la seguente espressione dell’algebra relazionale: operazione di proiezione degli

IDEssenzaP PesoP Produzione.

attributi e sulla relazione 59


ACQUISTATO

14 volte

PAGINE

84

PESO

883.10 KB

AUTORE

cassy14

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in marketing, comunicazione aziendale e mercati globali
SSD:
A.A.: 2017-2018

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cassy14 di informazioni apprese con la frequenza delle lezioni di Informatica generale e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Milano Bicocca - Unimib o del prof Avellone Alessandro.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Informatica generale

Soluzione temi d'esame 2017 Aprile Luglio
Appunto
Riassunto Completo C++ e SQL - Informatica Generale
Appunto
Formulario completo Matematica Generale
Appunto