6
Dato il seguente codice
1 2 3 4 5 6 7 8 9 10 11 |
1: conta ← 0; 2: alfa ← 0; 3: beta ← 0; 4: finché conta ‹ 29 esegui 5: se (conta mod 3) = 1 allora 6: alfa ← alfa + 2; 7: altrimenti 8: beta ← beta – 1; 9: fine se 10: conta ← conta + 2; 11: fine finché |
calcolare il numero NUMRIP di volte per cui viene eseguito il ciclo finché…esegui.
In altre parole, calcolare il numero di volte che viene eseguito il blocco di codice tra le righe 5 e 10.
Nota: si ricorda che con (a mod b) va inteso il resto ottenuto dividendo a per b.
7
Ti viene data la seguente funzione, dove:
- il parametro a è un array di numeri interi indicizzato a partire da 1,
- il parametro N è un numero intero che rappresenta la dimensione dell’array a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
1: funzione fun(a: array di interi, N: intero): intero 2: palo ← -1; 3: dado ← -1; 4: i ← 1; 5: finché i ≤ N esegui 6: se (a[i] mod 2) = 0 allora 7: se a[i] › palo allora 8: palo ← a[i]; 9: altrimenti 10: se a[i] › dado allora 11: dado ← a[i]; 12: fine se 13: fine se 14: fine se 15: i ← i + 1; 16: fine finché 17: restituisci (palo + dado); 18: fine funzione |
indicare quale tra le seguenti affermazioni è FALSA:
- La funzione fun restituisce 23 se riceve in ingresso: a={1, 2, 6, 10, 22}, ed: N=5
- La funzione fun restituisce la massima somma di due elementi dell’array
- La funzione fun restituisce numeri sia pari sia dispari
- La funzione fun non può restituire valori inferiori a -2
8 (Annullato)
Si vuole scrivere una procedura che visualizzi a video una griglia 5×5 di numeri avente il contenuto seguente:
1 2 3 4 5 |
0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 |
Il codice qui sotto dà per scontato:
- che sia dichiarata una matrice mat di dimensione 5×5 composta da numeri interi, con gli indici che partono da 1 sia per le righe che per le colonne,
- che per mandare a capo la stampa su schermo si possa usare l’istruzione scrivi(“↲”)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
1: mat[5][5] ← 0; 2: i ← 1; 3: finché i ≤ 5 esegui 4: i ← i + 1; 5: j ← 1; 6: finché j ≤ 5 esegui 7: /// QUI MANCA DEL CODICE /// 8: /// QUI MANCA DEL CODICE /// 9: /// QUI MANCA DEL CODICE /// 10: /// QUI MANCA DEL CODICE /// 11: /// QUI MANCA DEL CODICE /// 12: /// QUI MANCA DEL CODICE /// 13: /// QUI MANCA DEL CODICE /// 14: /// QUI MANCA DEL CODICE /// 15: /// QUI MANCA DEL CODICE /// 16: /// QUI MANCA DEL CODICE /// 17: /// QUI MANCA DEL CODICE /// 18: /// QUI MANCA DEL CODICE /// 19: /// QUI MANCA DEL CODICE /// 20: j ← j + 1; 21: fine finché 22: fine finché 23: i ← 1; 24: finché i ≤ 5 esegui 25: j ← 1; 26: finché j ≤ 5 esegui 27: scrivi(mat[i][j]); 28: j ← j + 1; 29: fine finché 30: scrivi(“↲”); 31: i ← i + 1; 32: fine finché |
Nel codice sopra, come si può notare, manca un pezzo. Quale tra i seguenti pezzi è quello da inserire?
-
123456789101112137: se i-1 ≠ 0 allora8: se i-1 = 1 allora9: se (j ≠ 0) e (j ≠ 4) allora10: mat[i-1][j] ← 1;11: fine se12: fine se13: se (i-1 = 2) e (j = 2) allora14: mat[i-1][j] ← 1;15: fine se16: se (i-1 = 2) e (j = 3) allora17: mat[i-1][j] ← 1;18: fine se19: fine se
-
123456789101112137: se i-1 ≠ 0 allora8: se i = 1 allora9: se (j ≠ 0) e (j ≠ 4) allora10: mat[i][j] ← 1;11: fine se12: fine se13: se (i = 2) e (j = 2) allora14: mat[i][j] ← 1;15: fine se16: se (i = 3) e (j = 2) allora17: mat[i][j] ← 1;18: fine se19: fine se
-
123456789101112137: se i-1 ≠ 0 allora8: se i-1 = 1 allora9: se (j ≠ 1) e (j ≠ 5) allora10: mat[i-1][j] ← 1;11: fine se12: fine se13: se (i-1 = 2) e (j = 2) allora14: mat[i-1][j] ← 1;15: fine se16: se (i-1 = 3) e (j = 2) allora17: mat[i-1][j] ← 1;18: fine se19: fine se
-
123456789101112137: se i-1 ≠ 0 allora8: se i-1 = 1 allora9: se (j ≠ 0) e (j ≠ 4) allora10: mat[i-1][j] ← 1;11: fine se12: fine se13: se (i-1 = 2) e (j = 2) allora14: mat[i-1][j] ← 1;15: fine se16: se (i-1 = 3) e (j = 2) allora17: mat[i-1][j] ← 1;18: fine se19: fine se
9
Date le seguenti due funzioni:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
1: funzione mystery(a: intero, b: intero): intero 2: se (2 * a) › b allora 3: restituisci b; 4: altrimenti 5: restituisci a; 6: fine se 7: fine funzione 8: 9: funzione secret(a: intero, b: intero): intero 10: se (a + b) › mystery(a, b) allora 11: restituisci a; 12: altrimenti 13: restituisci mystery(a, b); 14: fine se 15: fine funzione |
indicare quale valore RES viene restituito dalla chiamata secret(24, 3)
10
Dato il seguente pseudocodice:
1 2 3 4 5 6 7 8 9 10 11 |
1: funzione fun(fiore: intero, farfalla: intero): intero 2: se fiore = farfalla allora 3: restituisci farfalla; 4: altrimenti 5: se farfalla › fiore allora 6: restituisci fun(farfalla – fiore, fiore); 7: altrimenti 8: restituisci fun(farfalla, farfalla - fiore); 9: fine se 10: fine se 11: fine funzione |
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
11
Si considerino le seguenti due funzioni, che prendono in ingresso un numero intero maggiore o uguale a zero:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
1: funzione effe(a: intero): intero 2: se a ‹ 2 allora 3: restituisci 2 * a; 4: altrimenti 5: restituisci gi(a – 1) + gi(a – 2); 6: fine se 7: fine funzione 8: 9: funzione gi(a: intero): intero 10: se a ‹ 2 allora 11: restituisci effe(a); 12: altrimenti 13: restituisci effe(a – 1) + effe(a - 2); 14: fine se 15: fine funzione |
Indicare quale valore RES viene restituito dalla chiamata effe(10)
12
Data la seguente funzione:
1 2 3 4 5 6 7 |
1: funzione calc(n: intero): intero 2: se n = 1 allora 3: restituisci 2; 4: altrimenti 5: restituisci 2 * n – 1 + calc(n – 1); 6: fine se 7: fine funzione |
indicare quale tra le seguenti espressioni è il valore che viene restituito se n ≥ 1
- (n+1)²
- n²
- (n-1)²
- n²+1