6 . Metodologia top-down e sottoprogrammi Versione 5.0 – Aprile 2023
2 . a ) Si supponga che inizialmente le variabili siano così valorizzate : x = 2 , y = 2 , z = 3
main ( ) FUNZIONE ChangeMe2 (…)
|
2 3 y � ChangeMe2 ( x , z )
4 RITORNA ( z )
|
|
VAL |
REF |
z |
x |
y |
- |
2 |
3 |
- |
8 |
4 |
4 |
8 |
4 |
|
Ramo ALLORA |
Dopo la prima chiamata
|
4 4 x � ChangeMe2 ( z , y )
-10 RITORNA ( z )
|
VAL REF |
z |
x |
y |
- |
4 |
4 |
- |
2 |
12 |
-10 |
2 |
12 |
|
Ramo ALTRIMENTI |
Dopo la seconda chiamata |
|
|
|
Calcoli : 1 ° Chiamata ( nella funzione ChangeMe2 ) Test SE ( x < y ) ossia ( 2 < 3 ) VERO - RAMO ALLORA x � x + 2 * y ( x = 2 + 2 * 3 = 8 ) y � y + 1 ( y = 3 + 1 = 4 ) z � x – y ( z = 8 – 4 = 4 )
Calcoli : 2 ° Chiamata ( nella funzione ChangeMe2 )
Test SE ( x < y ) ossia ( 4 < 4 ) FALSO - RAMO ALTRIMENTI y � y + 2 * x ( y = 4 + 2 * 4 = 12 ) x � x – 2 ( x = 4 – 2 = 2 ) z � x – y ( z = 2 – 12 = -10 )
2 . b ) Si supponga che inizialmente le variabili siano così valorizzate : x = -1 , y = 3 , z = -2
PROCEDURA main ( ) FUNZIONE ChangeMe2 (…)
|
-1 -2 y � ChangeMe2 ( x , z )
1 RITORNA ( z )
|
|
VAL |
REF |
z |
x |
y |
- |
-1 |
-2 |
- |
-3 |
-4 |
1 |
-3 |
-4 |
|
Ramo ALTRIMENTI |
Dopo la prima chiamata
|
-4 1 x � ChangeMe2 ( z , y )
-4 RITORNA ( z )
|
|
VAL |
REF |
z |
x |
y |
- |
-4 |
1 |
- |
-2 |
2 |
-4 |
-2 |
2 |
|
Ramo ALLORA |
Dopo la seconda chiamata |
|
|
|
Calcoli : 1 ° Chiamata ( nella funzione ChangeMe2 ) Test SE ( x < y ) ossia -1 < -2 FALSO -RAMO ALTRIMENTI y � y + 2 * x ( y = -2 + 2 *( -1 ) = -4 ) x � x – 2 ( x = -1 -2 = -3 ) z � x – y ( z = ( -3 ) – ( -4 ) = 1 )
Calcoli : 2 ° Chiamata ( nella funzione ChangeMe2 )
Test SE ( x < y ) ossia -4 < -1 VERO -RAMO ALLORA x � x + 2 * y ( x = -4 + 2 * 1 = -2 ) y � y + 1 ( y = 1 + 1 = 2 ) z � x – y ( z = -2 – 2 = -4 )
Pag . 17