6 . Metodologia top-down e sottoprogrammi Versione 5.0 – Aprile 2023
PROCEDURA main ( )
n |
v [ 1 ] |
v [ 2 ] |
v [ 3 ] i |
3 |
2 |
- |
- |
1 |
3 |
2 |
0 |
- |
2 |
3 |
2 |
0 |
3 |
3 |
3 |
2 |
0 |
3 |
4 |
Dopo il caricamento di v ( Risposta 1 )
y v [ 1 ] v [ 2 ] v [ 3 ] 14 2 3 7
3 [ 2 , 0 , 3 ] y � ChangeArray1 ( n , v )
14 RITORNA ( y )
FUNZIONE ChangeArray1 (…)
VAL |
REF |
|
|
n |
v [ 1 ] v [ 2 ] |
v [ 3 ] i |
y |
3 |
2 |
0 |
3 |
- |
2 |
3 |
2 |
3 |
3 |
3 |
6 |
3 |
2 |
3 |
3 |
2 |
14 |
3 |
2 |
3 |
7 |
1 |
14 |
Dopo la visualizzazione di v e la chiamata alla funzione ChangeArray1 ( Risposte 2 e 3 )
Calcoli : Caricamento vettore ( nella procedura main ( ))
i � 1 ( i = 1 ) prima che inizi ciclo PER TEST PER ( i ≤ 3 ) ossia ( 1 ≤ 3 ) VERO
i = 1 v [ i ] � ( 3 * i + 4 ) % 5 i � i + 1
( v [ 1 ] = ( 3 * 1 + 4 ) % 5 = 7 % 5 = 2 ) ( i = 1 + 1 = 2 )
TEST P i = 2
R ( i ≤ 3 ) ossia ( 2 ≤ 3 ) VERO
v [ i ] � ( 3 * i + 4 ) % 5 i � i + 1
( v [ 1 ] = ( 3 * 2 + 4 ) % 5 = 10 % 5 = 0 ) ( i = 2 + 1 = 3 )
TEST
PER ( i ≤ 3 ) ossia ( 3 ≤ 3 )
VERO
|
i = 3 |
v [ i ] � ( 3 * i + 4 ) % 5 i � i + 1 |
( v [ 1 ] = ( 3 * 3 + 4 ) % 5 = 13 % 5 = 3 ) ( i = 1 + 1 = 4 ) |
TEST PER ( i ≤ 3 ) ossia ( 4 ≤ 3 ) FALSO exit ciclo PER di caricamento vettore
Calcoli : Modifica vettore ( nella funzione ChangeArray1 ( )) i � 3 ( i = 3 ) prima che inizi ciclo PER TEST PER ( i ≥ 2 ) ossia ( 3 ≥ 2 ) VERO
i = 3 y � 3 * y – 2 * v [ i-1 ] v [ i-1 ] � ( v [ i ] – 2 ) * i i � i – 1
( y = 3 * 2 – 2 * v [ 3-1 ] = 6 – 2 * v [ 2 ] = 6 – 2 * 0 = 6 ) ( v [ 3-1 ] = ( v [ 3 ] – 2 ) * 3 ossia v [ 2 ] = ( 3 – 2 ) * 3 = 3 ( i = 3 - 1 = 2 )
TEST PER ( i ≥ 2 ) ossia ( 2 ≥ 2 ) VERO i = 2 y � 3 * y – 2 * v [ i-1 ] v [ i-1 ] � ( v [ i ] – 2 ) * i i � i - 1
( y = 3 * 6 – 2 * v [ 2-1 ] = 18 – 2 * v [ 1 ] = 18 – 2 * 2 = 14 ) ( v [ 2-1 ] = ( v [ 2 ] – 2 ) * 2 ossia v [ 2 ] = ( 3 – 2 ) * 2 = 2 ( i = 2 - 1 = 1 )
TEST PER ( i ≥ 2 ) ossia ( 1 ≥ 2 ) FALSO exit ciclo PER all ’ interno della funzione v [ n ] = ( y + 1 ) DIV 2 ( v [ 3 ] = ( 14 + 1 ) DIV 2 = 15 DIV 2 = 7 FUORI ciclo PER
Pag . 19