14 Funzioni

Oggi vediamo un concetto chiave della programmazione, ovvero le funzioni.
Partiamo col darne una generica definizione.

Cos’è una funzione?
Una funzione (chiamata anche con alti nomi come metodo, sopratutto nei linguaggi orientati agli oggetti come java, o sottoprogramma) è un costrutto sintattico che permette di racchiundere al proprio interno una serie di istruzioni. Essa riceverà in ingresso dei dati, li elaborerà attraverso l’insieme di istruzioni che racchiude e restituirà un nuovo dato in output.
Giusto per chiarirlo il main nel quale abbiamo lavorato fino ad ora rappresenta una funzione, nel suo specifico caso è la funzione che viene chiamata, o invocata, per prima all’esecuzione di un programma Java.

VANTAGGI
1) Possibilità di suddividere un programma complesso in un insieme di funzioni in modo da renderlo più semplice e leggibile (filosofia del divide et impera).
2) Una funzione, come vedremo, potrà essere chiamata diverse volte e in più punti del programma. Questo ci eviterà di riscrivere una serie di istruzioni uguali tante volte. Ogni volta che avremo bisogno di eseguire certe istruzioni sempre uguali basterà chiamare la funzione.

SINTASSI

public static tipo_valore_output nome_funzione (variabili in input)
{
istruzioni che appartengono alla funzione
return valore_output;
}

Osservazioni:
public e static: per ora memorizzateli come parte della sintassi, vedremo in futuro a cosa serviranno.
tipo_valore_output: indica il tipo della variabile che la funzione ritornerà a chi l’ha chiamata, esempio: int, String, boolean ecc.. Un metodo può tornare indietro 1 solo valore. Nel caso di più valori dello stesso tipo potete usare un vettore e quindi il valore di ritorno sarà: int[], String[], boolean[] ecc..
nome_funzione: il nome che dovrà essere invocato per chiamare la funzione, deve iniziare con una lettera (è solito usare una lettera minuscola). Non ricordo di preciso le altre regole con cui può essere scritto il nome di una funzione, vi basti sapere che può contenere caratteri alfanumerici e non può contenere lo spazio.
variabili in input: i valori che passeremo alla funzione dovranno essere scritti in questo modo: tipo_variabile nome_variabile. Ad esempio: (int n, String s, boolean b).
valore_output: il valore che la nostra funzione restituirà a chi l’ha invocata. Più avanti nell’articolo vedremo che non per forza una funzione dovrà passare indietro un valore.

INVOCARE UNA FUNZIONE
Potete invocare una funzione in qualsiasi punto del vostro programma (per ora costituito da una sola classe! Vedremo nei prossimi articoli cosa è una classe) nel seguente modo:
tipo_variabile_output nome_variabile=nome_funzione(variabili in input);

ESEMPIO PRATICO
Vediamo un esempio molto banale di come utilizzare un metodo.

public static void main(String[] args) {
        int n1,n2;
        Scanner s=new Scanner(System.in);
        n1=s.nextInt();
        n2=s.nextInt();
        int so=somma(n1,n2);
        System.out.println(so);
    }
    public static int somma(int a, int b)
    {
        int somma=a+b;
        return somma;//avrei potuto fare "return a+b";
    }

FUNZIONE DI TIPO VOID
Se la vostra funzione non dà indietro nessun valore al posto di scrivere il tipo_variabile_output, scrivete la parolina void.
All’interno della funzione potrete comunque usare il comando return ovunque per farla terminare.

ESEMPIO PRATICO COMPLESSO
Vediamo un esempio leggermente più complicato per capire quando e perché usare una funzione di tipo void.

public class PrimaApplicazione {
    
    static double risultato=0;//variabile globale
    public static void main(String[] args) {
        Double n1,n2;
        Scanner s=new Scanner(System.in);
        //prendo i due valori in ingresso
        n1=s.nextDouble();
        n2=s.nextDouble();
        divisione(n1,n2);
        System.out.println(risultato);
    }
    public static void divisione(double a, double b)
    {
        if(b==0)
            return;//se b=0 il metodo termina qui con il comando "return" e la riga successiva non viene eseguita
        risultato=a/b;
    }
}

Credo che il codice si commenti da solo. Copiatelo e incollatelo sul vostro NetBeans per provarlo e magari provate voi a farne uno per vedere se avete capito bene.
Per qualsiasi dubbio, o se avete provato a fare un programma ma non siete riusciti, scrivetemi qui sotto nei commenti e vi risponderò il prima possibile.
Alla prossima!

Please follow and like us: