I parametri delle funzioni/procedure

Abbiamo ormai appreso che le funzioni/procedure eseguono un compito specifico relativo al problema originario e dialogano con esso o fra di loro attraverso i parametri.
Questi sono indicati all'interno delle parentesi che seguono il nome della funzione/procedura.

In generale i parametri possono essere di input, di output, o di input/output, ma in Java l'unica tipologia di parametri ammessa è costituita dai parametri di input.
Per quanto riguarda, invece, le informazioni in output, l'unico strumento disponibile per restituire un risultato è il valore di ritorno delle funzioni.

Chiarito quindi che i parametri, sono lo strumento che le funzioni/procedure hanno per scambiare informazioni con il mondo esterno, vediamo di aggiungere qualche specifica ulteriore in relazione ad essi.

Introduciamo, infatti, la distinzione tra:

  • parametri formali
  • parametri attuali
I parametri formali sono costituiti delle variabili che compaiono nella definizione della funzione, nel momento in cui definiamo la "forma" della funzione. In altri termini sono le variabili presenti nella intestazione della funzione, tra le parentesi tonde che seguono il nome della funzione stessa, utilizzate nella implementazione o corpo della funzione.
Vediamo di chiarire ancora meglio il concetto attraverso il codice:
// il codice che segue definisce/implementa la funzione 
// per il calcolo dell'area di un rettangolo di dimensioni 
// base ed altezza

// i paramentri base ed altezza, elencati tra le parentesi 
// tonde che seguono il nome della funzione
// costituiscono i parametri formali della funzione                    
public static int areaRettangolo(int base, int altezza) {

    // calcolo l'area del rettangolo e memorizzo il risultato
    // nella variabile locale area
    int area = base * altezza;

    // restituisco il valore dell'area 
    // attraverso l'istruzione return
    return area;

}
I parametri attuali, invece, sono le informazioni passate alla funzione, al momento della sua chiamata/invocazione per l'esecuzione di uno specifico calcolo.
Possono essere costituiti da nomi di variabili, valori statici oppure espressioni da calcolare. Anche in questo caso, analizziamo nel dettaglio attraverso un esempio di codice:
public static void main(String[] args) {
    // siamo all'interno del main
    // supponiamo di aver acquisito due valori numerici che 
    // rappresentano le misure della base e dell'altezza di 
    // un rettangolo, rispettivamente nelle variabili b ed h

    // possiamo chiamare la funzione areaRettangolo per far eseguire
    // il calcolo dell'area del rettangpolo di base b ed altezza h

    // l'istruzione per invocare la funzione sarebbe la seguente
    // b ed h sono i valori sui quali chiediamo in questo momento
    // specifico di eseguire il calcolo dell'area
    // essi prendono il nome di parametri attuali
    int area = areaRettangolo(b, h);

    // altre istruzioni del main   

}
Nel caso appena visto, i parametri attuali sono rappresentati da variabili del main, ma potrebbero essere anche dei valori statici oppure risultanti dalla valutazione di espressioni, come mostrato negli esempi che seguono:
// esempio di parametri attuali costituiti da valori statici
// calcolo dell'area del rettangolo di base=20 ed altezza=8
int area = areaRettangolo(20, 8);

// altro esempio di parametri attuali costituiti da espressioni
// calcolo dell'area del rettangolo di base uguale a
// 2 volte il valore contenuto nella variabile x
// e di altezza pari al risultato della somma tra 5 e 3
int area = areaRettangolo(x*2, 5+3);