AlgoBuild - Procedure, funzioni, chiamate

Procedure

La Procedure è una parte di codice separato dal programma principale che rappresenta un "sottoproblema" del problema principale.
Quando alcune istruzioni si devono ripetere più volte in un programma si ricorre a una procedura.
La procedura solitamente riceve dei valori dal programma principale che vengono inviati all'interno di variabili di ingresso dette parametri.

Per inserire una nuova procedura si deve cliccare la targhetta con il segno + sotto la toolbar.

Questo aggiunge una nuova targhetta dal nome newCode e apre una finestra di dialogo per l'inserimento della caratteristiche della procedura o funzione.

Le caratteristiche che definiscono la procedura sono:
Nome che inizialmente è impostato a newCode,
Parametri formali: devono essere degli identificatori inseriti uno per riga;
Espressione di ritorno: per una procdeura deve essere lasciato vuoto.
Il Tipo che può essere Procedure o Function viene definito, in modo automatico, dalla presenza o meno dell'espressione di ritorno; se l'espressione di ritorno è vuota il tipo viene impostato a Procedure, altrimenti diventa Function.

Esempio di inserimento di una procedura che visualizza la somma dei due numeri passati.

E il risultato della definizione della nuova procedura.

La semplice procedura che dobbiamo definire deve visualizzare la somma dei parametri passati; per questo inseriamo una istruzione di output per visualizzare il risultato: x + y.
Di seguito la procedura terminata.


Funzioni

La Function è una parte di codice, separato dal programma principale, che calcola un valore che, solitamente è un "sottoproblema" del problema principale.
Quando un calcolo si deve ripetere in un programma si ricorre a una function.
La function solitamente riceve dei valori dal programma principale che vengono inviati all'interno di variabili di ingresso dette parametri e, al termine della sua esecuzione, restituisce il risultato del calcolo con il valore di ritorno.

Per inserire una nuova funzione si deve cliccare la targhetta con il segno + sotto la toolbar.

Questo aggiunge una nuova targhetta dal nome newCode e apre una finestra di dialogo per l'inserimento della caratteristiche della procedura o funzione.

Le caratteristiche che definiscono la procedura sono:
Nome che inizialmente è impostato a newCode,
Parametri formali: devono essere degli identificatori inseriti uno per riga;
Espressione di ritorno: può essere una qualsiasi espressione contenente costanti, variabili, operatori, funzioni.
Il Tipo che può essere Procedure o Function viene definito, in modo automatico, dalla presenza o meno dell'espressione di ritorno; se l'espressione di ritorno è vuota il tipo viene impostato a Procedure, altrimenti diventa Function.

Esempio di inserimento di una funzione che calcola la somma dei due numeri passati.
E il risultato della definizione della nuova procedura.

Siccome la procedura deve restituire la somma dei parametri passati si inserisce una istruzione di assegnamento per calcolare il valore di ritorno c appunto: c = x + y.


Chiamate

La Chiamata è l'istruzione nel programma principale che invoca la procedura (o funzione)passando i parametri necessari.

Per inserire una nuova chiamata premere su una freccia di connessione e scegliere il comando "Nuova chiamata" dal menu.
NOTA: Il comando "Nuova chiamata" normalmente non è abilitato finché non vene definita almeno una procedura o funzione.

Chiamata della procedura

Riprendendo l'esempio di procedura inserito sopra, impostiamo il programma principale per leggere due valori, m e n e passare poi i valori inseriti alla procedura.
Nell'inserimento della chiamata si deve scegliere quale procedura / funzione invocare, scegliendo tra quelle definite, e quali valori passare ai parametri della procedura.
Scegliamo la procedura pSum.
Parametri: inseriamo n a destra di x e poi m a destra di y.
Normalmente x e y sono detti parametri formali della funzione mentre n e m sono detti parametri attuali.

Durante l'esecuzione del programma principale la traccia della chiamata alla procedura viene evidenziata con un colore diverso e un rientro maggiore dal margine sinistro.
Al ritorno della procedura il controllo ritorna al programma principale.
Notare che le variabili del programma principale e della procedura sono separate. Main ha "visibilità" solo di n e m, pSum invece ha visibilità solo su x e y. Il passaggio dei "numeri" avviene per valore: al momento della chiamata il valore di n viene copiato nel parametro x, mentre il valore di m viene copiato nel parametro y.

Chiamata della funzione

Modifichiamo ora l'esempio per chiamare la funzione anziché la procedura. Nell'inserimento della chiamata si deve scegliere quale procedura / funzione invocare, scegliendo tra quelle definite, e quali valori passare ai parametri della funzione.
Scegliamo la funzione fSum.
Parametri: inseriamo n a destra di a e poi m a destra di b.
Normalmente a e a sono detti parametri formali della funzione mentre n e m sono detti parametri attuali.
Siccome la funzione ritorna un valore, risultato del calcolo, questo deve essere inserito in una variabile.
Scegliamo di inserire il valore di ritorno in r.

Durante l'esecuzione del programma principale la traccia della chiamata alla funzione viene evidenziata con un colore diverso e un rientro maggiore dal margine sinistro.
Al ritorno della funzione il controllo ritorna al programma principale e il valore di ritorno inserito in r.
Siccome la funzione non esegue nessun output, la visualizzazione spetta al programma principale.


Ricorsione

Con il programma AlgoBuild è possibile definire procedure e funzioni ricorsive.
A titolo di esempio riportiamo il codice di una funzione ricorsiva che calcola il prodotto di due numeri interi positivi coma somme succesive.
Dati due numeri interi (supponiamo positivi) h e k il prodotto lo definiamo:
h*k = 0 se h == 0;
h*k = (h-1)*k+k se h>0
.

Vai al Sommario