140 likes | 233 Views
SOTTOPROGRAMMI IN TPASCAL. METODO TOP DOWN.
E N D
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 dichiamata - 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 -
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 esempio M A B C - 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 -
LEFUNZIONI • 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 P.P. A=5 B=2 TEST X=5 Y=2 X=15 Y=20 P.P. A=5 B=20 var A,B:integer; procedure TEST(X:integer; var Y:integer); begin X:=X+10; Y:=Y*10; end; begin A:=5; B:=2; TEST(A,B); end - prof. V. Riboldi -