Ing Gestionale
mercoledi’ 11/07/2012
FONDAMENTI -INFO
Esame Finale(9 crediti)
Prof. M. Angelaccio
90 minuti
Istruzioni.
1. Rispondere a tutte le domande scrivendo negli spazi indicati usando eventualmente il retro del foglio
previa indicazione
2. Scrivere chiaramente e in modo sintetico i passaggi intermedi ove necessario, si preferiscono risposte
schematiche ma complete.
3. NON usare penna rossa
4. NON consultare appunti o libri, e NON comunicare
5. la durata è di 90 min. (45 minuti per ciascuna parte)
6. il candidato ha tempo 5 minuti per decidere di non consegnare e ritornare (automaticamente) al
secondo appello di luglio
7. i risultati e le modalità di verbalizzazione verranno pubblicate su internet ai siti di didattica di ateneo
(http://www.uniroma2.it/didattica/FondamentiInfo/deposito/) e del corso (http://dist.info.unir
8. i gravemente insufficienti (< 10/30) devono ripetere l’esame a Settembre.
FondamentiInformatica-11/07/2012 Cognome :
Nome:
Mat:
I [5 min.] Quali sono i ruoli di un Sistema Operativo ? (max 10 parole)
..................................................................................................................................................
II [5 min.] Qual’è il minimo numero intero rappresentabile in modulo e segno con un byte ?
Risposta:
0
-8
-127
-7
-255 E perchè ? ............................................................................................
III [8 min.] Sia a l’array ordinato dei numeri di due cifre diverse e formati combinando le cifre 1,2 e 3.
Definizione a = ............................ Cosa stampa a[a[1]- a[0]]? .......................
IV [12 min.] Visualizzare la settimana in corso nel formato "DDD" n (vedi Test).
weekCalendar.rb (da completare):
Test:
week = ["LUN", "MAR", "MER", "GIO", "VEN", "SAB", "DOM"]
>
>
>
>
>
>
>
>
ruby weekCalendar.rb
LUN 9
MAR 10
MER 11
GIO 12
VEN 13
SAB 14
DOM 15
for .............................................
puts ...........................
end
1. Quale valore di i in week[i] corrisponde al mercoledi’ ?
3
MER
ME
2
4
2. Cosa restituisce week.sort ?
Risposta: ..................................................................................................................................................
V [15 min.] Una persona è composta da nome e cognome, e uno studente è una persona con matricola
(numero intero). Ad ogni studente è associato libretto dato da una lista di voti. Definire le due classi con i
metodi accessori per i dati anagrafici e il libretto ed un metodo insertVoto specifico per studente. Applicare a
due variabili completando l’esempio d’uso.
# uso di Persona e Studente
# Definizione di Persona
class Persona
#creazione di una persona -> Mario, Rossi
p= ...............
#Creazione di studente Mario, Rossi con matricola 1200
end
# Definizione di Studente
class Studente
s= .........................
#inserimento di 30 e 18 nel libretto di Mario Rossi
puts ..............#stampa del libretto di Mario Rossi
end
FondamentiInformatica-11/07/2012 Cognome :
Nome:
Mat:
I [5 min.] Quali sono le 6 fasi del ciclo di esecuzione del Sistema Calcolatore ?
1...................2..........................3..........................4.............................5........................6.................
II [5 min.] Qual’è il minimo numero intero rappresentabile in modulo e segno con 12 bit ?
Risposta:
0
-11
-2047
-12
-4095 E perchè ? ............................................................................................
III [8 min.] Sia pari l’array dei numeri pari formati da una sola cifra decimale.
Definizione pari = ................... Cosa stampa puts (pari.to s).to i ? .......................
IV [12 min.] L’IRPEF viene calcolata con il seguente metodo (basato su 5 aliquote):
da
da
da
da
da
0 a 15.000 euro: 23% di aliquota IRPEF 2012
15.001 a 28.000 euro: 3.450 euro + 27% dell’eccedente della prima aliquota
28.001 a 55.000 euro: 6.960 euro + 38% dell’eccedente della seconda aliquota
55.001 a 75.000 euro: 17.220 euro + 41% dell’eccedente della terza aliquota
75.001 a salire: 25.420 euro + 43% dell’eccedente della quarta aliquota
1. Quale tra le seguenti espressioni verifica se una variabile importo appartiene alla seconda aliquota ?
(15001..28000).include?importo
importo in (15001..28000)
if (importo > 15000)
2. Scrivere un programma calcolaAliquota.rb che calcola l’Aliquota di un importo (vedi Test).
Test:
> ruby calcolaAliquota.rb
calcolaAliquota.rb(da Completare):
aliquote = [.....................................................................]
importo = ........................... #lettura importo
> input: importo: 18500
> ALIQUOTA= 2,
> input: importo: 30000
> ALIQUOTA = 3,
puts "input: importo:.................................."
#calcolo aliquota di importo
con scansione da aliquote
.....................................................
.....................................................
puts "ALIQUOTA = ......................."
V [15 min.] Usare la classe Point con ascissa e ordinata (x e y) per definire come sua sottoclasse oggetti di tipo
Circle in cui x e y sono le coordinate del centro e r il valore del raggio. Scrivere i metodi accessori e il metodo
circonferenza per Circle (usare la costante Math.PI).Applicare a due variabili completando l’esempio d’uso.
# uso di Point e Circle
# Definizione di Point
class
# creazione di un punto di coordinate unitarie
p = ................
# creazione di un cerchio di centro
end
# Definizione di Circle
class
p e raggio 1/2
c = ................
# stampa
lunghezza circonferenza di c
............................
# stampa area di c
end
puts .................
#(perchè non è Math.PI*r**2?..........................)
FondamentiInformatica-11/07/2012 Cognome :
Nome:
Mat:
I [5 min.] Che cosa calcola il seguente programma in linguaggio macchina composto da 7 istruzioni memorizzate
nelle locazioni (0..6)?
LOA 7 ADD 8 STO 10 LOA 9 ADD 10 STO 11 STP 0
Risposta: Calcola la somma dei numeri .........................................................................................................
II [5 min.] Qual’è il minimo numero intero rappresentabile in modulo e segno con 10 bit ?
0
-9
-511
-10
-1023 E perchè ? ............................................................................................
III [8 min.] Sia a l’array ordinato dei numeri di due cifre diverse e formati combinando le cifre 2,3 e 4.
Definizione a = ............................ Cosa stampa a[a[1]- a[0]]? .......................
IV [12 min.] Il coefficiente di correlazione rs di Spearman misura la correlazione tra scale di valori (ranghi). La
formula è espressa a sinistra come funzione della somma delle differenze tra tutte le coppie di ranghi. Completare
a destra la definizione di funzione che calcola rs per una coppia di ranghi.
# definizione di funzione (da completare)
def f(a,b)
coeff=0
for i in (1..n)
temp[i]= (a[i]-b[i])**2/(n*(n**2-1))
end
rs = 1 − 6
n
X
(xi − yi )2
1
n(n2 − 1)
coeff=1-6*sum(temp)
Ad esempio per
x = (1, . . . , 10)
return coeff
end
# test di esempio
(da completare)
y = (6, 2, 3, 4, 5, 7, 9, 8, 1, 10])
→ rs = 0, 4303
x = ......................
y = [6,2,3,4,5,7,9,8,1,10]
puts f(x,y) # ---> 0.4303
V [15 min.] Una persona è composta da nome e cognome, e uno conto nominativo è una persona con nunmero di
conto numconto (numero intero). Ad ogni conto nominativo è associato saldo dato da una variabile di saldo su
cui sono effettuate le operazioni di prelievo e deposito. Definire le due classi con i metodi accessori per i dati
anagrafici e il saldo. Applicare a due variabili completando l’esempio d’uso.
#creazione di una persona -> Mario, Rossi
# Definizione di Persona
class Persona
p= ...............
#Creazione di conto con numero 3333 e anagrafica di p
end
# Definizione di conto nominativo
class Conto
c= .........................
# depositi di 1000 e 500 e prelievo di 200
end
puts .................#stampa saldo di Mario Rossi
FondamentiInformatica-11/07/2012 Cognome :
Nome:
Mat:
VI[5 min.]Quali sono le Applicazioni e i dati scambiati nel protocollo di comunicazione HTTP?
Risposta: Applicazioni ..................................................................................................................
Risposta: Dati scambiati ................................................................................................................
VII [5 min.] A cosa serve il tag FORM in HTML ?
Formattare il paragrafo
Inserire una Formula Comunicare dati a server-script
Comunicare dati al browser
VII [10 min.] Completare la definizione di client e server TCP per l’esempio di comunicazione Client-Server
in localhost della lettura dell’orologio del server, specificando le parti che realizzano le operazioni di apertura e
chiusura sessione e usando l’indirizzo locale e il numero di porta 12345.
require "socket"
require "socket"
server = ................
while session = server.accept
client= ...................
msg = ..................
while msg= client.gets
...............
puts msg
end
..............
client.close
end
IX [20 min.] Completare HTML mancante nella pagina di sistema solare seguente e rispondere alle domande.
Completare
Completare (max 12 parole per ciascuna domanda)
<html>
<body>
<b>Il Sistema Solare</b> <p>
<hr WIDTH="100%">
<br><a NAME="menu"></a><b>Indice</b>
1) Cosa significa
#terra ?
......................................................
<ul>
<li><a href="#terra">La terra</a></li>
<li><a href="#luna">La luna</a></li>
<li><a href="#marte">Marte</a></li>
</ul>
<hr WIDTH="100%">
<br><a NAME="terra"></a><b>La terra</b>
<a href="terra.jpg">
<img SRC="terra.jpg" height=150 width=150 ></a>
(<b>Nota: </b>si puo’ cliccare sull’immagine
per andare alla figura con le dimensioni originali)
<p> <a href=".......">Torna al menu principale</a>
<br><a NAME="......."></a><b>La luna</b>
<br><b>....</b>
<p><a href="lunar.jpg">
<img SRC="lunar.jpg" height=144 width=101></a>
<p><img SRC="top_arrow.gif" height=16 width=16>
<a href=".......">Torna al menu principale</a>
<p><a NAME="......."></a><b>Marte</b> <br>...
<p><a href="marte.jpg">
<img SRC="marte.jpg" height=70 width=99></a> <br>
<p> <a href=".......">Torna al menu principale</a>
<p>
<hr WIDTH="100%">
</body>
</html>
2) Cosa significa
<hr WIDTH="100%"> ?
......................................................
3) Quante e quali voci ha il menu indice ?
......................................................
Qual’è la differenza tra
<a NAME= "terra" > e <a href="terra.jpg"> ?
......................................................
FondamentiInformatica-11/07/2012 Cognome:
SOLUZIONE....
Nome:
Mat:
I [5 min.] Quali sono i ruoli di un Sistema Operativo ? (max 10 parole)
Risposta: ..Interfaccia Utente e Gestore di Risorse.....................................................................................................
II [5 min.] Qual’è il minimo numero intero rappresentabile in modulo e segno con un byte ?
0
-8
-127
-7
-255 E perchè ? ....127 = 27 − 1 ...............
III [8 min.] Sia a l’array ordinato dei numeri di due cifre diverse e formati combinando le cifre 1,2 e 3.
Definizione a = ..[12,13,23,21,31,32].. Cosa stampa a[a[1]- a[0]] ? ...13...
IV [12 min.] Visualizzare la settimana in corso nel formato "DDD" n (vedi Test).
Test:
>
>
>
>
>
>
>
>
ruby weekCalendar.rb
LUN 9
MAR 10
MER 11
GIO 12
VEN 13
SAB 14
DOM 15
weekCalendar.rb (da completare):
week = ["LUN", "MAR", "MER", "GIO", "VEN", "SAB", "DOM"]
g = 9
for i in (0..6)
puts week[i] +" "+ (g+i).to_s
end
Quale valore di i in week[i] corrisponde al mercoledi’ ?
3
MER
ME
Cosa restituisce week.sort ?
2
4
Risposta: .......["DOM", "GIO", "LUN", "MAR", "MER", "SAB", "VEN"].........................................................
V [15 min.] Una persona è composta da nome e cognome e uno studente è una persona con matricola (numero
intero). Ad ogni studente è associato libretto dato da una lista di voti. Definire le due classi con i metodi
accessori per i dati anagrafici e il libretto ed un metodo insertVoto specifico per studente. Applicare a due
variabili completando l’esempio d’uso.
# Definizione di Persona
class Persona
def initialize(nome, cognome)
@nome = nome
@cognome = cognome
end
attr_reader :nome, :cognome
attr_writer :nome, :cognome
# uso di Persona e Studente
end
# Definizione di Studente
class Studente < Persona
def initialize(nome, cognome, matricola)
super(nome, cognome)
@matricola = matricola
@voti = []
end
attr_reader :matricola
attr_writer :matricola
attr_reader :libretto
def insertVoto (v)
@libretto << v
end
end
#creazione di una persona -> Mario, Rossi
p= Persona.new("Mario","Rossi")
#idem per studente
s= Studente.new("Mario","Rossi", 1200)
#inserimento di voto per s
voto1 = 30
voto2 = 18
s.insertVoto(voto1)
s.insertVoto(voto2)
puts s.libretto
FondamentiInformatica-11/07/2012 Cognome :
..SOLUZIONE...
Nome:
Mat:
I [5 min.] Quali sono le 6 fasi del ciclo di esecuzione del Sistema Calcolatore ?
Risposta:
1.leggi PC.2.FETCH istruzione da Memoria..3..PC = PC+1..4.DECODE istruzione..5..EXECUTE istruzione..6.Ripeti da (1) o STOP....
II [5 min.] Qual’è il minimo numero intero rappresentabile in modulo e segno con 12 bit ?
0
-11
-2047
-12
-4095 E perchè ? .........2047 = 21 1 − 1 .....................................
III [8 min.] Sia pari l’array dei numeri pari formati da una sola cifra decimale.
Definizione pari = [2,4,6,8] Cosa stampa puts (pari.to s).to i ? ..2468..
IV [12 min.] L’IRPEF viene calcolata con il seguente metodo (basato su 5 aliquote):
da
da
da
da
da
0 a 15.000 euro: 23% di aliquota IRPEF 2012
15.001 a 28.000 euro: 3.450 euro + 27% dell’eccedente della prima aliquota
28.001 a 55.000 euro: 6.960 euro + 38% dell’eccedente della seconda aliquota
55.001 a 75.000 euro: 17.220 euro + 41% dell’eccedente della terza aliquota
75.001 a salire: 25.420 euro + 43% dell’eccedente della quarta aliquota
1. Quale tra le seguenti espressioni verifica se una variabile importo appartiene alla seconda aliquota ?
(15001..28000).include?importo
importo in (15001..28000)
if (importo > 15000)
2. Scrivere un programma calcolaAliquota.rb che calcola l’Aliquota di un importo (vedi Test).
calcolaAliquota.rb(da Completare):
Test:
> ruby calcolaAliquota.rb
> input: importo: 18500
> ALIQUOTA= 2,
> input: importo: 30000
> ALIQUOTA = 3,
aliquote = [15000,28000,55000,78000]
importo = gets.to_i
aliquota = 0
#lettura importo
puts "input: importo: #{importo}"
# calcolo aliquota di importo con scansione da aliquote
for i in (0..3)
if importo <= aliquote[i]
aliquota = i+1
break
end
aliquota = 5
end
puts "ALIQUOTA = "+ aliquota.to_s
V [15 min.] Usare la classe Point con ascissa e ordinata (x e y) per definire come sua sottoclasse oggetti di tipo
Circle in cui x e y sono le coordinate del centro e r il valore del raggio. Scrivere i metodi accessori e il metodo
circonferenza per Circle (usare la costante Math.PI).Applicare a due variabili completando l’esempio d’uso.
# Definizione di Point
class Point
def initialize(x, y)
@x = x
@y = y
end
attr_reader :x, :y
attr_writer :x, :y
end
# Definizione di Circle
class Circle < Point
def initialize(x, y, r)
super(x, y)
@r = r
end
attr_reader :r
attr_writer :r
def circonferenza ()
return 2*Math::PI*@r
end
end
# creazione di un punto di coordinate unitarie
p= Point.new(1,1)
# creazione di un cerchio di centro
c= Circle.new(p.x,p.y,0.5)
# stampa
p e raggio 1/2
lunghezza circonferenza di c
puts c.circonferenza
# stampa area di c
puts (Math::PI)*c.r**2
#(perchè non è Math::PI*r**2? Occorre @r invece di r)
FondamentiInformatica-11/07/2012 Cognome :
SOLUZIONE
Nome:
Mat:
I [5 min.] Che cosa calcola il seguente programma in linguaggio macchina composto da 7 istruzioni memorizzate
nelle locazioni (0..6)?
LOA 7 ADD 8 STO 10 LOA 9 ADD 10 STO 11 STP 0
Risposta: Calcola la somma dei numeri ..memorizzati nelle locazioni 7, 8 e 9 con risultato in 11...
II [5 min.] Qual’è il minimo numero intero rappresentabile in modulo e segno con 10 bit ?
0
-9
-511
-10
-1023 E perchè ? ....511 = 29 − 1....
III [8 min.] Sia a l’array ordinato dei numeri di due cifre diverse e formati combinando le cifre 2,3 e 4.
Definizione a = .[23,24,32,34,42,43] Cosa stampa a[a[1]- a[0]]? .24..
IV [12 min.] Il coefficiente di correlazione rs di Spearman misura la correlazione tra scale di valori (ranghi). La
formula è espressa a sinistra come funzione della somma delle differenze tra tutte le coppie di ranghi. Completare
a destra la definizione di funzione che calcola rs per una coppia di ranghi.
# definizione di funzione (da completare)
def f(a,b)
coeff=0
rs = 1 − 6
n
X
(xi − yi )2
1
n(n2 − 1)
for i in (1..n)
temp[i]= (a[i]-b[i])**2/(n*(n**2-1))
coeff = coeff + temp[i]
end
coeff=1-6*coeff
Ad esempio per
x = (1, . . . , 10)
return coeff
end
# test di esempio
(da completare)
y = (6, 2, 3, 4, 5, 7, 9, 8, 1, 10])
→ rs = 0, 4303
x = (1..10)
y = [6,2,3,4,5,7,9,8,1,10]
puts f(x,y) # ---> 0.4303
V [15 min.] Una persona è composta da nome e cognome, e uno conto nominativo è una persona con nunmero di
conto numconto (numero intero). Ad ogni conto nominativo è associato saldo dato da una variabile di saldo su
cui sono effettuate le operazioni di prelievo e deposito. Definire le due classi con i metodi accessori per i dati
anagrafici e il saldo. Applicare a due variabili completando l’esempio d’uso.
# Definizione di Persona
class Persona
(vedi sopra)
end
# Definizione di conto nominativo
class Conto < Persona
def initialize(nome, cognome, numconto,saldo)
super(nome, cognome)
@numconto = numconto
@saldo = saldo
end
attr_reader :numconto
attr_reader :saldo
def deposito (v)
@saldo += v
end
def prelievo (v)
if (@saldo > v)
@saldo -= v
end
end
end
#creazione di una persona -> Mario, Rossi
p= ...............
#Creazione di conto con numero 3333 e anagrafica di p
c= .........................
# depositi di 1000 e 500 e prelievo di 200
puts .................#stampa saldo di Mario Rossi
Scarica

mercoledi` 11/07/2012 Esame Finale(9 crediti) 90 minuti