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.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
X Y
- -
2 -
2 - G(&x,1)
2 - X Y C
2 - &x 1
2 - &x 1 -
2 - &x 1 - F(&x,&x)
2 - &x 1 - A B
2 - &x 1 - &x &x
3 - &x 1 - &x &x
6 - &x 1 - &x &x
-->6
6 - &x 1 13
-->19
6 19 18
Quesito 4
TABELLA A
K H
2 2000
3 9000
TABELLA B
H
2
3
TABELLA A X B
A.K A.H B.H
2 2000 2
3 9000 2
2 2000 3
3 9000 3
TABELLA FINALE
COUNT(*) SUM(A.H) SUM(B.H)
4 22000 10 19
Esercizio 1
#include <stdlib.h>
#include <stdio.h>
void SonoSuperato(int a[500], int b[499], int *c){
int i,j,k;
int vero;
int conta=0;
k=0;
for(i=0;i<500;i++){
vero=0;
for(j=i;j<500;j++){
if(a[i]<a[j]) vero=1;
}
if(vero==1){
b[k]=a[i];
k++;
conta++;
}
}
*c=conta;
} 20
int main(){
int m[500], n[499];
int p;
int i;
do{ for(i=0;i<500;i++) scanf("%d",&m[i]);
SonoSuperato(m,n,&p);
}while(p!=499);
system("PAUSE");
return 0;
} 21
Esercizio 2
#include <stdlib.h>
#include <stdio.h>
int main(){
int kmF;
int kmT=0;
int m;
scanf("%d",&kmF);
do{ scanf("%d",&m);
if(m>=0){
if((m/1000)>kmF) kmT=kmT+(m/1000);
}
}while(m!=0);
system("PAUSE");
return 0;
} 22
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