4° Anno TEORIA 2. Allocazione dinamica della memoria | Page 8

10 : Allocazione dinamica della memoria Vers . 8.3 – Ottobre 2023
USO “ DISEGNI ” DI TRACCIA CON PUNTATORI USATI IN ALLOCAZIONE STATICA
ALGORITMO Puntatori _ 1 PROCEDURA main ( )
p1 , p2 , p3 : PUNTATORE A INT a , b , c : INT
INIZIO
Leggi ( a ) Leggi ( b ) Leggi ( c )
p2 � & c p1 � & b p3 � p1
a � ((* p2 ) + (* p1 )) DIV 3 * p1 � a * (* p2 ) – 2 *(* p3 ) * p2 � a + (* p1 ) – (* p2 )
p3 � p2 p2 � &(* p1 ) p1 � & a
* p1 � ((* p2 ) * 4 ) % (* p3 ) * p2 � (* p1 ) + (* p2 ) – 3 *(* p3 ) * p3 � ((* p1 ) – (* p2 )) DIV 5
Scrivi ( a ) Scrivi ( b ) Scrivi ( c ) Scrivi (* p1 ) Scrivi (* p2 ) Scrivi (* p3 ) Scrivi ( p1 ) Scrivi ( p2 ) Scrivi ( p3 )
RITORNA FINE
Esercizio ) Dire quale sarà il valore di a , b , c , * p1 , * p2 , * p3 , p1 , p2 , p3 dopo avere eseguito lo pseudocodice dell ’ algoritmo “ Puntatori _ 1 ” seguente , illustrando il ragionamento eseguito per ottenere il risultato attraverso uno o più disegni esplicativi , nel caso l ’ utente immetta i seguenti valori iniziali :
a = 5 , b = 7 , c = -2
Segmento Dati
5 1 -12
7 -16
11
-2 -13
-4
a b c
& b & a
& c & b
& b & c
p1 p2 p3
Soluzione
a
b
c
* p1
* p2
* p3
p1
p2
p3
-12
11
-4
-12
11
-4
& a
& b
& c
Calcoli da eseguire per costruzione dello schema grafico ( escluse le istruzioni di I / O )
p2 � & c
( p2 = & c )
( ossia p2 punterà alla variabile c : occorre disegnare la relativa freccia )
p1 � & b
( p1 = & b )
( ossia punterà alla variabile b : occorre disegnare la relativa freccia )
p3 � p
( p3 = p2 = & b ) ( ossia punterà alla medesima variabile puntata da p1 occorre disegnare la relativa freccia )
a � ((* p2 ) + (* p1 )) DIV 3
( a = (( -2) + 7 ) DIV 3 = 5 DIV 3 = 1 )
* p1 � a * (* p2 ) – 2 *(* p3 )
(* p1 = b = 1 * ( -2) – 2 * 7 = -2 -14 = - 16 )
* p3 � a + (* p1 ) – (* p2 )
(* p2 = c = 1 + ( -16) – ( -2) = 1 – 16 + 2 = -13)
p3 � p2
( p3 = p2 )
( ossia p3 punterà alla medesima variabile puntata da p2 : disegnare la nuova freccia e
cancellare precedente freccia ) ( ossia punterà p2 alla medesima variabile puntata da p1 : disegnare la nuova freccia e
p2 � &(* p1 ) ( p2 = p1 )
cancellare precedente freccia )
p1 � & a
( p1 = & a )
( ossia p1 punterà alla variabile a : disegnare la nuova freccia e cancellare precedente
freccia )
* p1 � ((* p2 ) * 4 ) % (* p3 )
(* p1 = a = (( -16) * 4 ) % ( -13) = ( -64) % ( -13) = -12)
* p2 � (* p1 ) + (* p2 ) – 3 *(* p3 )
(* p2 = b = -12 + 8-16 ) - 3 *( -13) = -28 + 39 = 11 )
* p3 � ((* p1 ) – (* p2 )) DIV 5
(* p3 = c = ( -12 -11) DIV 5 = ( -23) DIV 5 = -4)
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 8