SOTTOPROGRAMMI IN
TPASCAL
METODO TOP DOWN
- prof. V. Riboldi -
L’intero programma viene suddiviso in un blocco
principale, detto
programma principale o main program,
e in ulteriori blocchi,
i sottoprogrammi,
sviluppati separatamente e richiamabili, mediante
il nome ad essi assegnato, dal programma
principale o da un altro sottoprogramma
- prof. V. Riboldi -
Una buona organizzazione del programma in
sottoprogrammi
 consente una struttura gerarchica e modulare
 facilita
 la comprensione
 la verifica
 la documentazione
pertanto
agevola la questione della complessità
- prof. V. Riboldi -
Ogni sottoprogramma è identificato da un nome a cui un’istruzione del
programma principale, detta chiamata, fa riferimento in ogni punto del
programma in cui è richiesta l’esecuzione del sottoprogramma stesso.
M
D
A
B
E
F
C
Il programma principale M può chiamare un sottoprogramma A, che a sua
volta chiama un sottoprogramma B, che a sua volta utilizza un
sottoprogramma C ……
Il calcolatore ogni volta che, durante l’elaborazione del programma
principale, incontra una chiamata, sospende l’elaborazione del main program
ed esegue le istruzioni del sottoprogramma stesso: al termine dell’esecuzione,
il controllo torna all’istruzione del main program successiva a quella di
chiamata
- prof.
V. Riboldi -
In generale viene attuato uno scambio di dati tra
sottoprogramma e programma chiamante e ciò avviene per
mezzo dei parametri:
 Parametri formali
appaiono nella dichiarazione di un sottoprogramma
 Parametri attuali
appaiono nelle chiamate del sottoprogramma
I parametri formali, al momento dell’esecuzione del
sottoprogramma sono sostituiti dai corrispondenti parametri
attuali indicati nell’istruzione di chiamata
I parametri formali e attuali devono essere congrui tra loro in
numero, tipo, ordine
- prof. V. Riboldi -
In un sottoprogramma possono essere presenti
variabili di tre classi diverse:
 Parametri formali
 Variabili locali
• dichiarate nel sottoprogramma
• usate solo all’interno del sottoprogramma
• accessibili solo al sottoprogramma in cui sono
dichiarate (visibilità locale)
 Variabili globali
• dichiarate nel programma principale (P.P.)
• usate sia dal P.P. che dal sottoprogramma
• accessibili da qualsiasi parte del programma
(visibilità globale)
- prof. V. Riboldi -
esempio
M
A
B
C
 Ogni oggetto dichiarato
nel programma
principale M è visibile
anche nei
sottoprogrammi A, B, C
 Ogni oggetto definito in
B è visibile anche in C
 Gli oggetti definiti in A
e C sono visibili solo nei
rispettivi moduli
- prof. V. Riboldi -
I sottoprogrammi in TP possono essere di due tipi:
 FUNZIONI
• restituiscono al programma chiamante un risultato
individuato tramite una notazione funzionale
• non modificano il valore dei parametri passati
 PROCEDURE
• restituiscono, solo attraverso parametri, anche più
di un risultato al programma chiamante
• possono modificare il valore dei parametri passati
Sia le procedure che le funzioni devono essere
dichiarate dopo le variabili, prima della sezione delle
istruzioni
- prof. V. Riboldi -
LE FUNZIONI
 DICHIARAZIONE


intestazione
FUNCTION nome_funz(x:tipo_parametro):tipo risultato
parte dichiarativa
contiene la definizione delle variabili locali

istruzioni
deve contenere almeno una istruzione di assegnazione
nome_funz:=<<espressione>>
 CHIAMATA
la funzione viene invocata dal programma attraverso il suo nome,
assegnato ad una variabile, seguito dai parametri attuali racchiusi
in parentesi
- prof. V. Riboldi -
esempio
Program……
var X,Y,Z:integer;
function MASSIMO (I,J:integer):integer;
begin
if I > J then MASSIMO:=I
else MASSIMO:=J
end;
begin ……
X:=Y+MASSIMO(Y,Z) …..
end.
- prof. V. Riboldi -
LE PROCEDURE
 DICHIARAZIONE
intestazione
PROCEDURE nome_proc (elenco parametri formali con
esplicitazione del tipo)
 parte dichiarativa

contiene la definizione delle variabili locali

istruzioni
 CHIAMATA
la procedure viene invocata dal programma attraverso il suo nome,
seguito dai parametri attuali racchiusi in parentesi
- prof. V. Riboldi -
MODALITA’ TRASFERIMENTO DATI
 PASSAGGIO PER VALORE
il parametro formale e quello attuale occupano due aree di
memoria diverse
PROCEDURE nome_proc (PARAMETRO_VALORE: tipo)
 PASSAGGIO PER INDIRIZZO
il parametro formale e quello attuale occupano la stessa
area di memoria
PROCEDURE nome_proc (var PARAMETRO_VARIABILE:
tipo)
- prof. V. Riboldi -
 Quando si vuole conservare nel P.P. il valore di una
variabile, questa deve essere passata alla procedura
mediante un parametro valore
 Quando si vuole che la procedura passi al P.P. il
risultato dell’elaborazione, la variabile deve essere
passata alla procedura mediante un parametro
variabile
 Tra la lista dei parametri formali di una procedura e
quella dei parametri attuali dell’istruzione di chiamata
esiste una corrispondenza biunivoca: al primo, al
secondo, …. parametro formale corrisponde il primo, il
secondo, …. parametro attuale e viceversa
 I parametri corrispondenti devono essere dichiarati
dello stesso tipo
- prof. V. Riboldi -
valore indirizzo
var A,B:integer;
P.P.
procedure TEST(X:integer; var Y:integer);
begin
X:=X+10;
Y:=Y*10;
end;
A=5
B=2
TEST X=5
Y=2
X=15
Y=20
A=5
B=20
begin
A:=5;
B:=2;
TEST(A,B);
P.P.
end
- prof. V. Riboldi -
Scarica

metodologia top-down - Liceo Scientifico Vittorio Veneto