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