OII 2012-11-30 – 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:

  1. condizione: i < n
    istruzione: x ← x+2
  2. condizione: i ≤ n
    istruzione: x ← x*2
  3. condizione: x < n
    istruzione: x ← x+2
  4. condizione: i ≤ n
    istruzione: x ← i*2+1

Soluzione: a.


Prova…

n i < n
x ← x+2
i ≤ n
x ← x*2
x < n
x ← x+2
i ≤ n
x ← i*2+1
0 0<0? no!
0
0≤0? sì
s ← 1
x ← 2
i ← 1
1≤0? no!
1
1<0? no!
0
0≤0? sì
s ← 1
x ← 1
i ← 1
1≤0? no!
1
1 0<1 sì
s ← 1
x ← 3
i ← 1
1<1? no!
1
1<1? no!
1
2 0<2 sì
s ← 1
x ← 3
i ← 1
1<2? sì
s ← 4
x ← 5
i ← 2
2<2? no!
4
1<2? sì
s ← 1
x ← 3
i ← 1
3<2? no!
1

Per n=0 falliscono b. e d.
Per n=2 fallisce c.