30-11-2012 – 20
Per descrivere un algoritmo, possiamo utilizzare uno pseudo-linguaggio di programmazione, dove il simbolo ← rappresenta l’istruzione che impone di assegnare al nome simbolico che lo precede il valore calcolato dall’espressione che lo segue.
Per esempio: i ← i+1
significa incrementa di 1 il valore associato al nome simbolico i e associa a i il valore incrementato.
Se a i era associato il valore 5, dopo l’esecuzione dell’istruzione a i sarà associato il valore 6.
In questa ipotesi, scegliere la condizione e la istruzione mancanti nel seguente algoritmo in modo che scriva su video il quadrato s di un numero intero n ≥ 0 letto da tastiera:
leggi da tastiera n
s ← 0
i ← 0
x ← 1
finché condizione è vera esegui ripetutamente
da qui
s ← s+x
istruzione
i ← i+1
a qui
scrivi su video s
- condizione: i < n; istruzione: x ← x+2
- condizione: i ≤ n; istruzione: x ← x*2
- condizione: x < n; istruzione: x ← x+2
- condizione: i ≤ n; istruzione: x ← i*2+1
21-11-2013 – 19
Per descrivere un algoritmo, possiamo utilizzare uno pseudo-linguaggio di programmazione, dove il simbolo ← rappresenta l’istruzione che impone di “assegnare al nome simbolico che lo precede il valore calcolato dall’espressione che lo segue” (per esempio: I ← I+1
significa “incrementa di 1 il valore associato al nome simbolico I e associa a I il valore incrementato”.
Se a I era associato il valore 5, dopo l’esecuzione 12 dell’istruzione a I sarà associato il valore 6).
In questa ipotesi, scegliere la condizione e la istruzione mancanti nel seguente algoritmo in modo che scriva su video il fattoriale s = n!
di un numero intero n ≥ 0
letto da tastiera (si ricordi che n! = 1×2×3…×n
e che 0! = 1
):
leggi da tastiera n
s ← 1
i ← 0
x ← 1
finché condizione è vera esegui ripetutamente
da qui
s ← s×x
istruzione
i ← i+1
a qui
scrivi su video s
- condizione: i < n; istruzione: x ← x+1
- condizione: i ≤ n; istruzione: x ← x+1
- condizione: i < n; istruzione: x ← x+i
- condizione: i ≤ n; istruzione: x ← x+i.
…
13-11-2014 – 14
Per descrivere un algoritmo, possiamo utilizzare uno pseudo-linguaggio di programmazione, dove il simbolo ← rappresenta l’istruzione che impone di “assegnare al nome simbolico che lo precede il valore calcolato dall’espressione che lo segue” (per esempio: x ← x + 1
significa “incrementa di 1 il valore associato al nome simbolico x e associa a x il valore incrementato”.
Se a x era associato il valore 5, dopo l’esecuzione dell’istruzione a x sarà associato il valore 6).
In questa ipotesi, scegliere la “condizione1” e la “condizione2” mancanti nel seguente algoritmo in modo che risolva nel minor tempo possibile la verifica del fatto che un numero intero n >= 0
letto da tastiera sia primo oppure no:
leggi da tastiera n
p ← VERO
i ← 2
finché "condizione1" AND "condizione2" è vera esegui ripetutamente
da qui
r ← resto di n diviso i
se (r = 0) allora p ← FALSO
i ← i + 1
a qui
scrivi su video
se (p è VERO) “Il numero n è primo”
altrimenti “Il numero n non è primo”
- condizione1:
; condizione 2: p FALSO
- condizione1:
; condizione 2: p VERO
- condizione1:
; condizione 2: p FALSO
- condizione1:
; condizione 2: p VERO
…
18-11-2015 – 16
Per descrivere un algoritmo, possiamo utilizzare uno pseudo-linguaggio di programmazione, dove il simbolo ← rappresenta l’istruzione che impone di “assegnare al nome simbolico che lo precede il valore calcolato dall’espressione che lo segue” (per esempio: i ← i + 1
significa “incrementa di 1 il valore associato al nome simbolico i e associa ad i il valore incrementato”.
Se ad i era associato il valore 5, dopo l’esecuzione dell’istruzione ad i sarà associato il valore 6).
Si consideri il seguente algoritmo
testa ← 0
croce ← 1
t_consecutivi ← 0
c_consecutivi ← 0
i ← 0
mentre "condizione" è vera esegui ripetutamente
da qui
x ← esito_lancio_moneta
se x=testa esegui
da qui
t_consecutivi ← t_consecutivi + 1
c_consecutivi ← 0
a qui
altrimenti esegui
da qui
t_consecutivi ← 0
c_consecutivi ← c_consecutivi + 1
a qui
"istruzione"
a qui
scrivi su video i
Scegliere la “condizione” e l’“istruzione” mancanti nell’algoritmo in modo che restituisca il minimo numero di lanci di moneta che sono stati necessari per ottenere una sequenza di almeno cinque esiti consecutivi uguali.
- condizione: t_consecutivi < 5 AND c_consecutivi < 5; istruzione: i ← i + 1
- condizione: t_consecutivi < 5 AND c_consecutivi < 5; istruzione: testa ← testa + 1
- condizione: t_consecutivi ≤ 5 AND c_consecutivi ≤ 5; istruzione: i ← i + 1
- condizione: t_consecutivi < 5 AND c_consecutivi ≤ 5; istruzione: i ← i + 1
…
17-11-2016 – 16
Per descrivere un algoritmo, possiamo utilizzare uno pseudo-linguaggio di programmazione, dove il simbolo ← rappresenta l’istruzione che impone di “assegnare al nome simbolico che lo precede il valore calcolato dall’espressione che lo segue” (per esempio: i ← i + 1 significa “incrementa di 1 il valore associato al nome simbolico i e associa a i il valore incrementato”.
Se a i era associato il valore 5, dopo l’esecuzione dell’istruzione a i sarà associato il valore 6).
Si consideri il seguente algoritmo
a ← 0
b ← 0
finché a ‹ 10 esegui ripetutamente
da qui
a ← intero letto da input
b ← intero letto da input
se a=b esegui a ← 0
scrivi su video a
scrivi su video b
a qui
scrivi su video a + b
Supponiamo che un utente scriva a video i seguenti numeri 1 1 2 2 9 9 10 10 12 13 quale di queste alternative descrive correttamente cosa fa il programma?
- 0 1 0 2 0 9 0 10 12 13 25
- 1 1 2 2 9 9 10 10 12 13
- 0 1 0 2 0 9 0 10 12 13
- 0 1 0 2 0 9 0 10 10
…
16-11-2017 – 6
function FUN(p: integer) → integer
output p, " -› "
if p MOD 2 = 0 then
output "condizione 1"
end if
if p = 7 then
output "condizione 2"
else
if (p-5) MOD 2 = 0 then
output "condizione 3"
end if
end if
return p
end function
Quale delle seguenti affermazioni è errata?
- La funzione, se p è pari, scrive a video il valore di p seguito dalla stringa -> condizione 1 e restituisce p
- La funzione, se p non è dispari, scrive a video il valore di p seguito dalla stringa -> condizione 2 e restituisce p
- La funzione, se p è 7, scrive a video il valore di p seguito dalla stringa -> condizione 2 e restituisce p
- La funzione, se p è dispari, scrive a video p seguito dalla stringa -> condizione 2 o -> condizione 3 e restituisce p
Tradotto nel nuovo pseudocodice
16-11-2017 – 7
variable x: integer
variable y: integer
variable a: integer
variable p: integer
variable l: float
variable d: float
x ← 20
y ← 10
a ← x × y
p ← 2 × x + 2 × y
l ← p/4
d ← RADICEQUADRATA(2) × l
output d, " cm"
if d × 2 - 720 = 0 then
d ← 2
else
d ← 1
end if
Cosa viene visualizzato a video dalla esecuzione del programma qui sopra?
- 2.000000 cm
- 3.000000 cm
- 21.213203 cm
- 36.243204 cm
Tradotto nel nuovo pseudocodice
16-11-2017 – 8
function MYSTER(c: integer, d: integer) → integer
if c = d then
return c
end if
if c › d then
return MYSTER(c-d, d)
end if
return MYSTER(c, d-c)
end function
function MCM(a: integer, b: integer) → integer
return MYSTER(b, a)
end function
Quale delle seguenti modifiche fa sì che la funzione mcm ritorni il minimo comune multiplo tra a e b?
- sostituire MYSTER(b, a) con MYSTER(a, b)
- sostituire MYSTER(b, a) con (a × b)/MYSTER(b, a)
- sostituire MYSTER(b, a) con MYSTER(a-b, b)
- sostituire MYSTER(b, a) con MYSTER(a, b-a)
Tradotto nel nuovo pseudocodice
15-11-2018 – 6
Dato il seguente pseudocodice
variable conta: integer
variable alfa: integer
variable beta: integer
conta ← 0
alfa ← 0
beta ← 0
while conta ‹ 29 do
if conta MOD 3 = 1 then
alfa ← alfa+2
else
beta ← beta–1
end if
conta ← conta+2
end while
calcolare il numero di volte per cui viene eseguito il ciclo while.
15
15-11-2018 – 7
Data la seguente funzione, dove N è la dimensione dell’array a:
function F(a: integer[N], N: integer) → integer
variable palo: integer
variable dado: integer
palo ← -1
dado ← -1
i ← 1
while i ≤ N do
if a[i] MOD 2 = 0 then
if a[i] › palo then
palo ← a[i]
else
if a[i] › dado then
dado ← a[i]
end if
end if
end if
i ← i+1
end while
return palo+dado
end function
indicare quale tra le seguenti affermazioni è FALSA:
- La funzione F restituisce 21 se riceve in ingresso l’array {1, 2, 6, 10, 22}
- La funzione F restituisce la massima somma di due elementi dell’array
- La funzione F restituisce numeri sia pari sia dispari
- La funzione F non può restituire valori inferiori a -2
…
15-11-2018 – 9
Date le seguenti due funzioni:
function MISTERY(a: integer, b: integer) → integer
if 2×a › b then
return b
else
return a
end if
end function
function SECRET(a: integer, b: integer) → integer
if a+b › MISTERY(a, b) then
return a
else
return MISTERY(a, b)
end if
end function
indicare quale valore viene restituito dalla chiamata SECRET(24, 3).
24
15-11-2018 – 10
Dato il seguente pseudocodice:
function FUN(fiore: integer, farfalla: integer) → integer
if fiore = farfalla then
return farfalla
else
if farfalla › fiore then
return FUN(farfalla–fiore, fiore)
else
return FUN(farfalla, farfalla-fiore)
end if
end if
end function
Cosa si può dire della funzione fun?
- Non termina per alcun valore della coppia: (fiore, farfalla)
- Non termina soltanto quando: fiore = farfalla
- Termina sicuramente quando: fiore = farfalla
- Termina per ogni valore in cui: farfalla > fiore
…
15-11-2018 – 11
Si considerino le seguenti due funzioni, che prendono in ingresso un numero intero maggiore o uguale a zero:
fuction EFFE(a: integer) → integer
if a ‹ 2 then
return 2×a
else
return GI(a–1)+GI(a–2)
end if
end function
fuction GI(a: integer): integer
if a ‹ 2 then
return EFFE(a)
else
return EFFE(a–1)+EFFE(a-2)
end if
end function
Indicare quale valore RES viene restituito dalla chiamata EFFE(10).
110
15-11-2018 – 12
Data la seguente funzione:
function CALC(n: integer) → integer
if n = 1 then
return 2
else
return 2×n–1+CALC(n–1)
end if
end function
indicare quale tra le seguenti espressioni è il valore che viene restituito se n ≥ 1
- (n+1)²
- n²
- (n-1)²
- n²+1
…
20-11-2019 – 6
Data la seguente funzione

indicare l’affermazione vera tra le seguenti
- Questa funzione ritorna 1 solo se la coppia (par1,par2) si trova nel cerchio di raggio par3
- Questa funzione ritorna 1 se chiamata sulla terna (1,0,3)
- Questa funzione ritorna 0 per tutte le terne della forma (a,2*a,3*a)
- Questa funzione deve essere chiamata con par3 >= 0
…
20-11-2019 – 7
Dato il seguente programma

Come cambia il vettore v=(3.45, 5.67, 8.92, 2.12, 7.33, 8.21, 4.21, 9.03) quando viene dato in input alla procedura insieme all’intero n=8?
- [3.0, 6.0, 8.0, 3.0, 7.0, 9.0, 4.0, 10.0]
- [3.0, 6.0, 7.0, 3.0, 8.0, 9.0, 5.0, 10.0]
- [3.0, 6.0, 7.0, 3.0, 9.0, 9.0, 6.0, 10.0]
- [3.0, 6.0, 8.0, 3.0, 10.0, 9.0, 7.0, 10.0]
…
20-11-2019 – 8
Cosa scrive a video il seguente programma

- Lo array dopo l’esecuzione di pp vale 0 0 0 0 0 0 0 0 0 0
- Lo array dopo l’esecuzione di pp vale 6.25 6.25 6.25 6.25 6.25 6.25 6.25 0 0 0
- Lo array dopo l’esecuzione di pp vale 6.25 6.25 6.25 6.25 6.25 0 0 0 0 0
- Lo array dopo l’esecuzione di pp vale 0 0 0 0 0 6.25 6.25 6.25 6.25 6.25
…
20-11-2019 – 9
Si consideri la seguente procedura

Quale disposizione di asterischi viene stampata a schermo tra le seguenti?
*
***
*
***
*
*
* *
***
* *
*
*
***
***
***
*
*
* *
*
* *
*
…
20-11-2019 – 10
Dato il seguente programma

Scegliere quella corretta fra le seguenti opzioni:
- Il programma stampa p1 = 40.00, p2 = 35.71
- Il programma stampa il rapporto, in percentuale, degli elementi appartenenti all’intersezione dei due insiemi (v e w) sul totale degli elementi rispettivamente del primo e del secondo insieme
- Il programma stampa il rapporto, in percentuale, degli elementi appartenenti all’unione dei due insiemi sul totale degli elementi rispettivamente del primo (v) e del secondo insieme (w)
- Il programma stampa p1=200.00, p2=120.71
…
20-11-2019 – 11
Date le seguenti funzioni ricorsive

Si supponga di eseguire rec1(4,6).
Quante chiamate rispettivamente di REC1 (NUMREC1) e REC2 (NUMREC2) sono necessarie prima che una delle due funzioni restituisca il valore zero?
Nelle chiamate di rec1 contare anche la chiamata iniziale REC1(4,6).
NUMREC1=2
NUMREC2=2
20-11-2019 – 12
Un file di testo conteneva due diverse funzioni per il calcolo del numero di modi diversi in cui è possibile ordinare n oggetti.
Le linee dello pseudocodice sono state accidentalmente disordinate, come riportato qui sotto.

Per ricostruire l’ordinamento corretto delle linee di codice è necessario produrre una lista di coppie (LETT, NUM), in cui LETT corrisponde alla lettera che identifica una riga, come indicato sopra e NUM corrisponde al numero che tale riga avrebbe nell’ordinamento corretto (nota: i numeri di riga partono da 1), come indicato nella seguente griglia, in cui alcuni numeri sono già stati inseriti:
A B C D E F G H I L M N O P Q R S T U V
2 3 4 6 9 12 11 13 16 18 20
Si chiede quindi di riportare i numeri corretti associati alle lettere A, E, G, H, N, P, R, S e U che completino correttamente la suddetta griglia.
A=10 E=7 G=1 H=5 N=8 P=15 R=14 S=17 U=19
A=10 E=1 G=7 H=5 N=8 P=15 R=14 S=17 U=19
23-02-2021 – 6
Data la seguente funzione
function F(x: integer) → integer
variable i: integer
i ← 0
while x > 0 do
if x MOD 2 = 0 then
x ← x/2
else
x ← x-1
end if
i ← i+1
end while
return i
end function
Qual è il valore minimo da passare ad F perché questa ritorni 5?
…
23-02-2021 – 7
Dato il seguente programma
variable i: integer
variable v: integer
variable w: integer
v ← [4,9,6,0,3,5,8,7,2,1]
w ← [0,0,0,0,0,0,0,0,0,0]
i ← 0
while i < 10 do
w[v[i]] ← i
i ← i+1
end while
i ← 0
while i < 10 do
output w[i]
i ← i+1
end while
Qual è il valore dell’ultimo intero che viene stampato durante l’esecuzione di questo programma?
…
23-02-2021 – 8
Dato il seguente programma
variable i: integer
variable s: integer
variable t: integer
i ← 0
s ← 2
t ← 0
while i < 8 do
i ← i+1
s ← s×2
t ← t+s+i
end while
output t
Cosa viene stampato al termine dell’esecuzione?
…
23-02-2021 – 9
Date le seguenti funzioni:
function F(x: integer) → integer
if x MOD 2 = 0 then
return 0
else
return 1+F((x-1)/2)
end if
end function
function G(x: integer) → integer
if x > 250 or x ≤ 0 then
return 0
else
return MAX(F(x), G(x/2))
end if
end function
Tenendo conto che la divisione restituisce un risultato intero (quindi, ad esempio, sia 4/2 che 5/2 restituiscono 2), qual è il massimo x tale per cui G(x)=2?
…
23-02-2021 – 11
Dato il seguente programma:
function F(h: integer; i: integer) → integer
if i=0 or i=h-1 then
return 1
end if
if i < 0 or i ≥ h then
return 0
end if
return F(h-1, i-1)+F(h-1, i)
end function
variable i: integer
i ← 3
while i > 0 do
output F(4,i)
i ← i-1
end while
Qual è l’ultimo valore che viene stampato dal programma?
Soluzione: 3
23-02-2021 – 7
…
…