PROGRAMMIAMO
JS - Chiamata di una funzione
Chiamata di una funzione

Quando in un programma si usa una funzione, si parla di chiamare una funzione e chiamata di una funzione è il nome dell'istruzione corrispondente. Vediamo subito un esempio usando la funzione per determinare se un numero è primo vista nella precedente lezione:

<head>

<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">

<title> Numeri primi </title>

<script type="text/JavaScript"> 

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;
  }
}

function verifica()
{
var num = document.getElementById('numero').value ;

if (isPrime(num))
  alert("Numero primo!");
else
  alert("Numero non primo!")
}
</script>
 

</head>

<body> 
 
<form action="">
<p>
    <input type="text" id="numero">
    <input type="button" value="VERIFICA" onClick="verifica()">
</p>
</form>


</body>

Si osservi che ci sono due funzioni nel nostro programma:

La chiamata di isPrime() è evidenziata in colore giallo nel codice precedente. La variabile num, scritta fra le parentesi della funzione nella chiamata, si dice argomento della chiamata.

Al momento della chiamata il parametri n (interno alla funzione), assume il valore dell'argomento num (esterno alla funzione). In questo modo una stessa funzione può essere usata, cambiando l'argomento della chiamata, per verificare se numeri diversi sono primi.

Passaggio per valore

In JS gli argomenti della funzione vengono passati alla funzione stessa per valore. Ciò significa che la funzione riceve una copia dei valori passati e che non può modificare le variabili originali.

Per esempio una funzione come la seguente, che scambia il contenuto di due variabili, non produrrebbe nessun risultato in JS:

function scambia(a,b)
{
var tmp;
tmp = a;
a = b;
b = tmp;
}

Infatti la funzione scambia solo i valori le proprie copie 'a' e 'b', ma questo scambio non ha alcun effetto sulle variabili usate al momento della chiamata alla funzione.

Come ulteriore esempio di chiamata di una funzione con parametri e valore di ritorno, usiamo la funzione per il calcolo del coefficiente binomiale di due numeri, vista brevemente nella precedente lezione:

<head>

<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">

<title> Coefficiente binomiale </title>

<script type="text/JavaScript"> 

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;
}


function calcola()
{
var n1 = document.getElementById('n').value ;
var n2 = document.getElementById('k').value ;

var risultato = binom(n1,n2);


document.getElementById('risultato').value = risultato; 
}
</script>
 

</head>

<body>
 
 
 
<form action="">
<p>
    n: <input type="text" id="n"> k: <input type="text" id="k">
    <input type="button" value="CALCOLA" onClick="calcola()">
    Risultato:  <input type="text" id="risultato">
</p>
</form>


</body>

Anche in questo caso la chiamata è indicata in colore giallo. Si osservi di nuovo che gli argomenti n1 e n2 non sono la stessa cosa dei parametri n e k: solo al momento della chiamata i valori degli argomenti sono copiati nei corrispondenti parametri (secondo l'ordine in cui compaiono nella chiamata: il primo argomento è copiato nel primo parametro, il secondo argomento nel secondo e così via).

Il risultato del calcolo della funzione viene copiato nella variabile di nome risultato.

ATTENZIONE:

JS non verifica che il numero degli argomenti sia uguale a quello dei parametri: se ci sono più argomenti, quelli in eccesso sono ignorati, se ce ne sono di meno, i parametri mancanti assumono il valore undefined.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it