Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Esami Programmazione avanzata, Prove d'esame di Programmazione Avanzata

Tutte prove vecchie di programmazione avanzata.

Tipologia: Prove d'esame

2020/2021
In offerta
30 Punti
Discount

Offerta a tempo limitato


Caricato il 16/06/2021

matteotoma_98
matteotoma_98 🇮🇹

5

(2)

4 documenti

1 / 35

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Programmazione Avanzata
12 Giugno 2018
Rispondere alle domande nello spazio disponibile. Se questo non fosse
suciente continuare nel retro della pagina.
Nome e Cognome:
Matricola:
Parola Chiave:
1.1 Consideriamo la seguente porzione di codice F#:
let x = 1
let y = 1.0
let z = x+y
Selezionare la risposta corretta:
©Il codice `e sintatticamente errato
©Il codice `e sintatticamente corretto ma produce un errore di tipo
©Il codice `e sintatticamente corretto e non produce alcun errore di tipo
(a) Quale tipo verr`a assegnato alla variabile x?
(b) Quale tipo verr`a assegnato alla variabile y?
(c) Quale tipo verr`a assegnato alla variabile z?
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
Discount

In offerta

Anteprima parziale del testo

Scarica Esami Programmazione avanzata e più Prove d'esame in PDF di Programmazione Avanzata solo su Docsity!

Programmazione Avanzata

12 Giugno 2018

Rispondere alle domande nello spazio disponibile. Se questo non fosse sufficiente continuare nel retro della pagina.

Nome e Cognome:

Matricola:

Parola Chiave:

1 1. Consideriamo la seguente porzione di codice F#:

let x = 1 let y = 1. let z = x+y

Selezionare la risposta corretta: © Il codice e sintatticamente errato © Il codicee sintatticamente corretto ma produce un errore di tipo © Il codice e sintatticamente corretto e non produce alcun errore di tipo (a) Quale tipo verra assegnato alla variabile x?

(b) Quale tipo verr`a assegnato alla variabile y?

(c) Quale tipo verr`a assegnato alla variabile z?

Programmazione Avanzata 12 Giugno 2018 (Pag. 2/8)

2 2. Consideriamo la dichiarazione delle seguenti classi Java:

c l a s s ClasseA {

p u b l i c v o i d m1( ) { System. out. p r i n t l n ( ” ClasseA−>m1 ( ) ” ) ; m2 ( ) ; }

p u b l i c v o i d m2( ) { System. out. p r i n t l n ( ” ClasseA−>m2 ( ) ” ) ; }

}

c l a s s ClasseB e x t e n d s ClasseA {

p u b l i c v o i d m2( ) { System. out. p r i n t l n ( ” ClasseB−>m2 ( ) ” ) ; }

}

Consideriamo, inoltre, la seguente porzione di codice: ClasseA c = new ClasseB ( ) ; c. m1 ( ) ;

Quale `e il risultato della sua esecuzione? © Viene stampato a video: ClasseA−>m1( ) ClasseB−>m2( )

© Viene stampato a video: ClasseA−>m1( ) ClasseA−>m1( )

© Il codice non viene eseguito a seguito di un errore di tipo. Motivare la risposta:

Programmazione Avanzata 12 Giugno 2018 (Pag. 7/8)

3 5. Consideriamo la seguente porzione di codice:

p r i v a t e s t a t i c b o o l e a n done = f a l s e ;

...

Runnable h e l l o s = ( ) −> { f o r ( i n t i =0 ; i < 1000 ; i++ ) { System. out. p r i n t l n ( ” H e l l o ”+ i ) ; } done = t r u e ; } ; Runnable goodbyes = ( ) −> { i n t i =0; w h i l e (! done ) { i ++; } System. out. p r i n t l n ( ” Goodbye ”+ i ) ; } ;

E x e c u t o r S e r v i c e e x e c u t o r = E x e c u t o r s. newCachedThreadPool ( ) ; e x e c u t o r. e x e c u t e ( h e l l o s ) ; e x e c u t o r. e x e c u t e ( goodbyes ) ;

Quale comportamento osserveremo eseguendola su una architettura multicore?

Come possiamo modificare il codice per garantire il corretto funzionamento?

Programmazione Avanzata

26 Giugno 2018

Rispondere alle domande nello spazio disponibile. Se questo non fosse sufficiente continuare nel retro della pagina.

Nome e Cognome:

Matricola:

Parola Chiave:

1 1. Consideriamo la seguente porzione di codice F#:

let f x y z = if (x=y) then

else z

Quale tipo verra assegnato dal compilatore alla funzione f? © Nessun tipo perch´e il programmae sintatticamente errato. © Nessun tipo perch´e c`e un errore di tipo. © Viene associato il tipo: val f: x:float -> y:float -> z:float -Z float © Viene associato il tipo: val f : x:’a -> y:’a -> z:float -> float when ’a : equality

Motivare la risposta:

Programmazione Avanzata

10 Luglio 2018

Rispondere alle domande nello spazio disponibile. Se questo non fosse sufficiente continuare nel retro della pagina.

Nome e Cognome:

Matricola:

Parola Chiave:

2 1. Consideriamo la seguente porzione di codice F#:

type DataStructure = EMPTY | Data of int*DataStructure

let rec myFunction f d = match d with EMPTY -> 0 | Data(v,next) -> f v (myFunction f next)

Quale tipo verr`a assegnato dal compilatore alla funzione myFunction? (Motivare la risposta)

Consideriamo ora la seguente espressione:

myFunction (fun x y -> x+y) (Data(1,Data(2,Data(3,Data(4,EMPTY)))))

Quale sar`a il risultato della sua valutazione? (Motivare la risposta)

Programmazione Avanzata 10 Luglio 2018 (Pag. 3/8)

2 2. Consideriamo la dichiarazione delle seguenti classi Java:

c l a s s ClasseA {

p r i v a t e f i n a l a F i e l d ;

p u b l i c ClasseA ( i n t aValue ) { t h i s. a F i e l d = aValue ; }

p u b l i c i n t g e t F i e l d ( ) { r e t u r n a F i e l d ; }

}

c l a s s ClasseB e x t e n d s ClasseA {

p u b l i c i n t g e t F i e l d ( ) { r e t u r n 1+s u p e r. g e t F i e l d ( ) ; }

}

La compilazione di questo codice generer`a degli errori per la mancanza di un costruttore nella classe ClasseB. Descrivere il tipo di errore e la modifica da apportare alla classe ClasseB per rimuoverlo.

2 3. Descrivere il ruolo dei metodi equals, toString e hashcode definiti nella classe Object ed il loro contratto d’uso.

3 4. In Java i generics consentono di parametrizzare una classe rispetto ad un dato tipo T. (a) Che differenza c’`e tra un parametro di tipo List ed uno di tipo List<?>?

(b) Quale garanzie abbiamo su una variabile dichiarata List<? extends ClassA>? (Dove ClassA `e una classe definita nell nostra applicazione)

(c) Come possiamo usare, invece, un oggetto del tipo Function<? super ClassA,Integer>?

2 5. Descrivere il funzionamento della classi Callable e Future ed il loro uso nella programmazione concorrente in Java.

Programmazione Avanzata 24 Luglio 2018 (Pag. 4/8)

1 3. Consideriamo la dichiarazione delle seguenti classi Java:

c l a s s ClasseA {

p r i v a t e v o i d m1( i n t x ) { System. out. p r i n t l n ( ” ClasseA−>m1( i n t ) ” ) ; }

p u b l i c v o i d m1( f l o a t x ) { System. out. p r i n t l n ( ” ClasseA−>m1( f l o a t ) ” ) ; }

}

c l a s s ClasseB e x t e n d s ClasseA {

p u b l i c v o i d m1( i n t x ) { System. out. p r i n t l n ( ” ClasseB−>m1( i n t ) ” ) ; }

p u b l i c v o i d m1( double x ) { System. out. p r i n t l n ( ” ClasseB−>m1( double ) ” ) ; }

}

Quali dei metodi sono sovraccaricati e quali sono sovrascritti nelle classi ClasseA e ClasseB:

1 4. Definire il concetto di signature di un metodo:

1 5. Consideriamo la seguente class Java: c l a s s ClasseA {

p u b l i c v o i d m1( L i s t l i s t ) { System. out. p r i n t l n ( ”A l i s t o f I n t e g e r s! ” ) ; }

p u b l i c v o i d m1( L i s t l i s t ) { System. out. p r i n t l n ( ”A l i s t o f Booleans! ” ) ; }

Identificare eventuali problemi riscontrati a tempo di compilazione:

  1. Descrivere le principali differenze tra i metodi notify () e nofifyAll () illustrando quando `e pi conveniente utilizzare uno o l’altro.
  2. Descrivere il ruolo del modificatore volatile :

Programmazione Avanzata

12 Settembre 2018

Rispondere alle domande nello spazio disponibile. Se questo non fosse sufficiente continuare nel retro della pagina.

Nome e Cognome:

Matricola:

Parola Chiave:

2 1. Consideriamo la seguente porzione di codice F#:

let x = 1. let y = 2 let z = x+y

Selezionare la risposta corretta: © Il codice e sintatticamente errato © Il codicee sintatticamente corretto ma produce un errore di tipo © Il codice e sintatticamente corretto e non produce alcun errore di tipo (a) Quale tipo verra assegnato alla variabile x?

(b) Quale tipo verr`a assegnato alla variabile y?

(c) Quale tipo verr`a assegnato alla variabile z?

Programmazione Avanzata

27 Settembre 2018

Rispondere alle domande nello spazio disponibile. Se questo non fosse sufficiente continuare nel retro della pagina.

Nome e Cognome:

Matricola:

Parola Chiave:

1 1. Quale tipo verr`a assegnato alla seguente espressione F#:

let myFunction f g a = if (f a) then 0 else (g a)

© val myFunction : f:bool -> g:int -> a:’a -> int © val myFunction : f:(’a -> bool) -> g:(’a -> int) -> a:’a -> int © Nessun tipo perch´e viene generato un errore. Motivare la risposta:

Programmazione Avanzata 27 Settembre 2018 (Pag. 2/10)

2 2. Consideriamo la seguenti definizioni in Java:

p u b l i c i n t e r f a c e I n t e r f a c e 1 {

d e f a u l t v o i d m1( ) { System. out. p r i n t l n ( ” I am a method o f I n t e r f a c e 1! ” ) ; } }

p u b l i c i n t e r f a c e I n t e r f a c e 2 { d e f a u l t v o i d m1( ) { System. out. p r i n t l n ( ” I am a method o f I n t e r f a c e 2! ” ) ; } } p u b l i c ClassA implements I n t e r f a c e 1 , I n t e r f a c e 2 {

}

Descrivere il ruolo del modificatore default nella definizione di Interface1 e Interface2. Identificare, inoltre, eventuali problemi riscontrati a tempo di compilazione e come questi possono essere risolti : 1 3. Descrivere le interfacce funzionali e come queste possano essere usate con le lambda expression fornendo un semplice esempio d’uso.

2 4. Descrivere le differenze tra i costrutti notify e notifyAll evidenziando quando e piu conveniente usare uno o l’altro. 3 5. Consideriamo le seguenti dichiarazioni parametriche: L i s t l i s t O n e L i s t <?> l i s t T w o

L i s t <? e x t e n d s Number> l i s t T h r e e

L i s t <? s u p e r I n t e g e r > l i s t F o u r

Quale tipologia di oggetto pu`o essere salvato/recuperato in ognuna di queste liste? Considerando le dichiarazioni alla pagina precedente. Descrivere, per ognuno dei seguenti casi, la correttezza di tipo dei seguenti comandi:

(a) l i s t O n e. add ( 1 0 ) ;

(b) l i s t T w o. add ( 1 0 ) ; (c) Object o = l i s t T w o. g e t ( 0 ) ; (d) l i s t T h r e e. add ( 0 ) ; (e) Number n = l i s t T h r e e. g e t ( 0 ) ; (f) l i s t F o u r. add ( 1 0 ) ; (g) Number n = l i s t F o u r. g e t ( 0 ) ;

Programmazione Avanzata

5 Febbraio 2019

1 1. Quale tipo verr`a assegnato alla seguente espressione F#:

let myFunction f a = if (a==0) then 0 else (f (a+1) (a-1))

© val myFunction : f:int -> -> a:int -> int © val myFunction : f:(int -> int -> int) -> a:int -> int © Nessun tipo perch´e viene generato un errore. Motivare la risposta:

Consideriamo la dichiarazione delle seguenti classi Java: c l a s s ClasseA {

p u b l i c v o i d m1( i n t x ) { System. out. p r i n t l n (” ClasseA−>m1( i n t ) ” ) ; }

p u b l i c v o i d m1( f l o a t x ) { System. out. p r i n t l n (” ClasseA−>m1( f l o a t ) ” ) ; } } c l a s s ClasseB e x t e n d s ClasseA {

p u b l i c v o i d m1( i n t x ) { System. out. p r i n t l n (” ClasseB−>m1( i n t ) ” ) ; }

p u b l i c v o i d m1( double x ) { System. out. p r i n t l n (” ClasseB−>m1( doub le ) ” ) ; } }

Quali dei metodi sono sovraccaricati e quali sono sovrascritti nelle classi ClasseA e ClasseB? 2 2. Definire il concetto di signature di un metodo ed il ruolo giocato nel overloading e nel overriding:

1 3. Descrivere le interfacce funzionali e come queste possano essere usate con le lambda expression fornendo un semplice esempio d’uso.

2 4. I costrutti notify e notifyAll consentono di risvegliare thread in attesa. Descrivere mediante un semplice esempio di codice quando i due costrutti possono essere considerati equivalenti e quando, invece, portano a risultati diversi.

Programmazione Avanzata 5 Febbraio 2019 (Pag. 6/9)

2 5. Consideriamo le seguenti dichiarazioni parametriche:

L i s t l i s t O n e

L i s t <?> l i s t T w o

L i s t <? e x t e n d s Number> l i s t T h r e e

L i s t <? s u p e r I n t e g e r > l i s t F o u r

Quale tipologia di oggetto pu`o essere salvato/recuperato in ognuna di queste liste?

Considerando le dichiarazioni alla pagina precedente. Descrivere, per ognuno dei seguenti casi, la correttezza di tipo dei seguenti comandi:

(a) l i s t O n e. add ( 1 0 ) ; (b) l i s t T w o. add ( 1 0 ) ; (c) Object o = l i s t T w o. g e t ( 0 ) ;

(d) l i s t T h r e e. add ( 0 ) ;

(e) Number n = l i s t T h r e e. g e t ( 0 ) ; (f) l i s t F o u r. add ( 1 0 ) ;

(g) Number n = l i s t F o u r. g e t ( 0 ) ; 2 6. Descrivere il ruolo del modificatore volatile e mostrare un semplice esempio di uso per il coordinamento delle attivit`a dei thread.

Programmazione Avanzata 26 Febbraio 2019 (Pag. 4/8)

2 3. Date le definizioni di ClasseA e ClasseB dell’esercizio precedente. Consideriamo ora le seguenti definizioni: c l a s s ClasseC { p u b l i c v o i d m( ClasseA a ) { System. out. p r i n t l n ( ” ClasseC−>m( ) ” ) ; } }

c l a s s ClasseD e x t e n d s ClasseC { p u b l i c v o i d m( ClasseB a ) { System. out. p r i n t l n ( ” ClasseD−>m( ) ” ) ; } }

Consideriamo inoltre la seguente porzione di codice: ClasseA c = new ClasseB ( ) ; ClasseC d = new ClasseD ( ) ; d .m( c ) ;

Quale `e il risultato della sua esecuzione? © Viene stampato a video: ClasseC−>m( )

© Viene stampato a video: ClasseD−>m( )

© Il codice non viene eseguito a seguito di un errore di tipo. Eseguendo, invece, la seguente porzione di codice: ClasseB c = new ClasseB ( ) ; ClasseD d = new ClasseD ( ) ; d .m( c ) ;

Quale risultato si otterr`a? © Viene stampato a video: ClasseC−>m( )

© Viene stampato a video: ClasseD−>m( )

© Il codice non viene eseguito a seguito di un errore di tipo. Motivare la risposta:

Descrivere il ruolo dei metodi equals, toString e hashcode definiti nella classe Object ed il loro contratto d’uso.

1 4. Descrivere il ruolo dei metodi equals, toString e hashcode definiti nella classe Object ed il loro contratto d’uso.

Programmazione Avanzata 26 Febbraio 2019 (Pag. 7/8)

2 5. In Java i generics consentono di parametrizzare una classe rispetto ad un dato tipo T.

(a) Che differenza c’`e tra un parametro di tipo List ed uno di tipo List<?>?

(b) Quale garanzie abbiamo su una variabile dichiarata List<? extends ClassA>? (Dove ClassA `e una classe definita nell nostra applicazione)

(c) Come possiamo usare, invece, un oggetto del tipo Function<? super ClassA,Integer>?

2 6. Consideriamo la seguente classe Java che implementa le primitive test-and-set di una variabile condivisa: p u b l i c c l a s s S h a r e d V a r i a b l e {

p r i v a t e T v a l u e ;

p u b l i c S h a r e d V a r i a b l e ( T i n i t ) { t h i s. v a l u e = i n i t ; }

p u b l i c s y n c h r o n i z e d v o i d testAndSet ( P r e d i c a t e <? s u p e r T> p , T v a l u e ) throws I n t e r r u p t e d E x c e p t i o n { w h i l e (! p. t e s t ( t h i s. v a l u e ) ) { t h i s. wait ( ) ; } t h i s. v a l u e = v a l u e ; t h i s. n o t i f y A l l ( ) ; //<−−− ( 1 ) }

}

Sarebbe possibile sostituire l’istruzione (1) this. notifyAll (); con this. notify ();? Potreb- bero insorgere problemi?