PROCEDURE E FUNZIONI (SOTTOPROGRAMMI)

Esistono due tipologie di sottoprogrammi:
PROCEDURA
una sottoparte di programma che corrisponde ad uno statement (istruzione);
FUNZIONE
una sottoparte di programma che corrisponde ad una espressione di un certo tipo.
Ogni sottoprogramma è caratterizzato da:
NOME
per identificare e usare, anche più volte, tale sottoparte;
PARAMETRI (anche nessuno)
i sottoprogrammi possono essere parametrizzati su valori, variabili, file, altri sottoprogrammi, ...;
BODY (CORPO)
il testo che definisce la sottoparte vera e propria.
La struttura di un programma diventa ora
SUBPROGRAM DECLARATIONS
MAIN

Parametri

I parametri di un sottoprogramma vengono elencati nella dichiarazione del sottoprogramma stesso (i cosidetti parametri formali) e possono essere di diversa natura.
Le tipologie dei parametri più comuni sono:
VALORI (di un qualche tipo di dato del linguaggio)
la dichiarazione del parametro (parametro formale) ha la forma generica
value IDENTIFIER : TYPE
mentre il corrispondente parametro attuale è semplicemente un'espressione EXP di tipo TYPE.

Ogni linguaggio può poi precisare come avviene il passaggio del parametro più dettagliatamente; per esempio

per nome
ogni occorrenza di IDENTIFIER nel corpo del sottoprogramma viene rimpiazzata dal testo di EXP
per copia
IDENTIFIER è una variabile dichiarata implicitamente all'inizio del corpo del sottoprogramma che viene inizializzata con il valore di EXP al momento della chiamata; in certi linguaggi non è più possibile assegnare un nuovo valore a tale variabile.
VARIABILI (di un qualche tipo del linguaggio)
la dichiarazione del parametro (parametro formale) ha la forma generica
variable IDENTIFIER : TYPE
mentre il corrispondente parametro attuale è semplicemente una variabile VAR di tipo TYPE;
più precisamente o una variabile di un tipo semplice o una componente di una variabile di un tipo strutturato, cioè ogni cosa che può essere trovata a sinistra di un'assegnazione.
Seguendo la metafora variabile=scatola, in questo caso il parametro formale è un nome generico di scatola, mentre quello attuale è il nome di una scatola particolare, cioè il sottoprogramma è parametrizzato su una scatola.
SOTTOPROGRAMMI
Ogni linguaggio di programmazione precisa se e quali forme di sottoprogrammi possono essere usate per parametrizzare altri sottoprogrammi
FILE
Ogni linguaggio di programmazione permette di parametrizzare i sottoprogrammi con dei file; in questi casi il parametro formale è un nome generico di un file di un certo tipo, mentre quello attuale deve essere il nome di un file dello stesso tipo esistente.
Chiaramente all'interno dei sottoprogrammi possiamo utilizzare tutti i costrutti del linguaggio, quindi per esempio chiamare altri sottoprogrammi ed anche dichiarare sottoprogrammi che saranno utilizzati solamente al loro interno.

ESERCIZIO

  1. Definire una forma di sottoprogrammi per il calcolatore antropomorfo, precisando quali siano i parametri ed il modo in cui sono passati.