PROGRAMMIAMO
JS - Parametri e valori di ritorno
Usare una funzione già scritta

Abbiamo detto che le funzioni mostrano tutta la loro utilità quando si vuole riusare il codice scritto da altri. In rete esistono molti siti che offrono intere librerie di funzioni da scaricare. Un buon punto di partenza è il sito Rosetta Code, dove si trovano funzioni e programmi già scritti in tutti i principali linguaggi di programmazione. Il sito è diviso in base al compito da risolvere (task) e per ogni task viene offerto il codice nei vari linguaggi (da qui il nome Rosetta Code che richiama la famosa Stele di Rosetta, originariamente usata per tradurre i geroglifici dell'antico egizio).

Consideriamo un compito abbastanza semplice e frequente: determinare se un numero è primo oppure no. Questo task in inglese si chiama Primality by trial division e spostandosi alla pagina corrispondente nella sezione dedicata al JavaScript troviamo:

function isPrime(n) {
  if (n == 2) {
    return true;
  } else if ((n < 2) || (n % 2 == 0)) {
    return false;
  } else {
    for (var i = 3; i <= Math.sqrt(n); i += 2) {
      if (n % i == 0)
        return false;
    }
    return true;
  }
}

Si tratta di una funzione di nome isPrime, il cui scopo è appunto determinare se un dato numero è primo oppure no. Come si può osservare, il codice della function è già scritto e si suppone funzionante. Tutto ciò che dobbiamo imparare a fare noi è usare tale funzione all'interno della nostra pagina html.

Parametri

La prima cosa da osservare nella nostra funzione sono i suoi parametri. I parametri sono quelle variabili che sono scritte fra parentesi nella definizione della funzione stessa. Nel nostro caso l'unico parametro si chiama n ed è, ragionevolmente, il numero di cui vogliamo sapere se è primo oppure no.

I parametri sono, in un certo senso, i valori di ingresso (input) sui quali la funzione effettua i propri calcoli. In questo caso c'è un solo parametro, ma ce ne possono essere molti. Il lettore può trovare un esempio di funzione con più parametri visitando la pagina di Rosetta Code dedicata al calcolo del coefficiente binomiale di una coppia di numeri (Evaluate Binomial Coefficient). Qui troviamo la seguente funzione:

function binom(n, k) {
    var coeff = 1;
    for (var i = n-k+1; i <= n; i++) coeff *= i;
    for (var i = 1;     i <= k; i++) coeff /= i;
    return coeff;
}

Il coefficiente binomiale è un'operazione che si usa in statistica per il calcolo delle combinazioni e permutazioni:

\binom{n}{k} = \frac{n!}{(n-k)!k!} = \frac{n(n-1)(n-2)\ldots(n-k+1)}{k(k-1)(k-2)\ldots 1}

In questo contesto non ci interessa particolarmente il calcolo o il significato del risultato. Ci interessa invece notare come questa funzione ha due parametri, indicati con n e k.

Valore di ritorno

Se i parametri di una funzione possono essere molti (in linea di principio quanti si vuole), il valore di ritorno è sempre uno solo (oppure, in alcuni casi, nessuno). Il valore di ritorno è il risultato fornito dalla funzione, cioè la sua uscita (output). Per esempio, nella funzione per il calcolo della radice digitalRootBase, il risultato è il valore della radice del numero.

Per capire come si usa il valore di ritorno di una funzione, bisogna andare a cercare, all'interno della funzione, l'istruzione return. Per esempio, tornando alla nostra funzione per determinare se un numero è primo oppure no, troviamo:

function isPrime(n) {
  if (n == 2) {
    return true;
  } else if ((n < 2) || (n % 2 == 0)) {
    return false;
  } else {
    for (var i = 3; i <= Math.sqrt(n); i += 2) {
      if (n % i == 0)
        return false;
    }
    return true;
  }
}

Notiamo che ci sono più return nella nostra function. Questo non contraddice la nostra affermazione precedente che il valore di ritorno è sempre uno solo. Infatti ad ogni calcolo della funzione, uno solo fra i return viene eseguito e dunque il valore di ritorno è unico.

Qui ci interessa piuttosto vedere che, in questo caso, il valore di ritorno può essere true oppure false. Si tratta di un valore booleano, cioè di un valore di tipo logico. Il suo significato è abbastanza semplice da capire: se il numero fornito è primo, il valore di ritorno è true; se non è primo, il valore di ritorno è false.

Adesso non ci resta altro da fare che imparare a usare la nostra funzione.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it