qui

Transcript

qui
Le funzioni in JavaScript
Funzioni
Funzioni, definizione informale
Vediamo l’esempio della definizione della funzione succ in JavaScript:
function succ(x)
{ return x+1; }
Confrontiamola con la definizione che daremmo in matematica,
ovvero: succ(x) = x + 1
I
I
I
I
E. Occhiuto
abbiamo di diverso, 2 parole chiave (key word) function e return e 2
parentesi, manca l’uguale, tutto serve per semplificare la sintassi del
linguaggio. In particolare:
function individua le definizione della funzione
return x+1; è un’istruzione che serve per specificare il valore
calcolato dalla funzione. In particolare return è una parola chiave e
ciò che segue è l’espressione il cui valore è il risultato della funzione.
Le parentesi racchiudono ciò che nella definizione matematica sta tra
l’uguale e la fine della funzione
–
Fondamenti Teorici e Programmazione- 437AA –
pag. 1
Le funzioni in JavaScript
Funzioni
Argomenti
I
In entrambe le definizioni, nell’espressione compaiono gli argomenti
della funzione, (nell’esempio x)
I
in informatica gli argomenti vengono chiamati parametri formali.
I
In matematica l’argomento indica un elemento del dominio, in
generale dominio e codominio vengono indicati esplicitamente.
I
Nei linguaggi di programmazione con controlllo forte dei tipi (Java,
C,C++, e altri) dominio e codominio della funzione vengono indicati
esplicitamente. In questo caso in fase di compilazione del programma,
i tipi vengono controllati e se è il caso vengono generati errori.
I
In JavaScript invece i tipi non vengono indicati esplicitamente e gli
eventuali errori che vengono generati, in esecuzione, sono molto
spesso difficili da comprendere.
Esercizio
Definire dominio e codominio di succ
E. Occhiuto
–
Fondamenti Teorici e Programmazione- 437AA –
pag. 2
Le funzioni in JavaScript
Funzioni
Invocazione della funzione succ
I
La funzione può essere usata ad esempio per calcolare il successore di
0, nel modo seguente.
writeln(succ(0));
0 viene sostituito ad x nell’espressione che compare nella definizione
della funzione e il valore calcolato è 1.
I
oppure si può calcolare il successore di un numero letto dall’input, nel
seguente modo:
writeln(succ(readnum()));
In questo caso il numero letto dall’input viene sostituito ad x
nell’espressione che compare nella definizione della funzione e
utilizzato per calcolare il risultato.
E. Occhiuto
–
Fondamenti Teorici e Programmazione- 437AA –
pag. 3
Le funzioni in JavaScript
Funzioni
Un programma JavaScript
I
Cosa è un programma JavaScript?
I
Il programma deve includere la definizione di tutte le funzioni
invocate.
I
Le librerie sono incluse di default
I
Le funzioni definte dall’utente devono essere incluse.
I
pertanto programmi corretti sono:
function succ(x)
{ return x+1; }
writeln(succ(readnum()));
function succ(x)
{ return x+1; }
writeln(succ(0));
E. Occhiuto
–
Fondamenti Teorici e Programmazione- 437AA –
pag. 4
Le funzioni in JavaScript
Funzioni
Invocazioni multiple
Ma anche il seguente.
function succ(x)
{ return x+1; }
writeln(succ(0));
writeln(succ(readnum()));
I
Questo programma stampa prima 1 (successore di 0) e poi il
successore del numero letto in input.
I
Notare che in questo caso la definizione della funzione compare e deve
comparire UNA sola volta, anche se la funzione è invocata più volte.
I
I testi degli esercizi hanno di solito una prima parte in cui viene
chiesto di definire una funzione e una seconda parte in cui viene
chiesto di scrivere il resto del programma o frammento di codice con
l‘invocazione della funzione definita precedentemente.
E. Occhiuto
–
Fondamenti Teorici e Programmazione- 437AA –
pag. 5
Le funzioni in JavaScript
Funzioni
Definizione di Funzione
Consideriamo un altro esempio: la funzione multiplo che calcola
true se il primo parametro è un multiplo del secondo, false
altrimenti:
function multiplo(m,n)
{
return (m%n)==0;
}
I
I parametri formali sono m ed n
Esercizio
Definire dominio e codominio della funzione multiplo
E. Occhiuto
–
Fondamenti Teorici e Programmazione- 437AA –
pag. 6
Le funzioni in JavaScript
Funzioni
Invocazione di Funzione
I
Al momento della chiamata, alla funzione vengono forniti i valori degli
argomenti, o parametri attuali, rispetto ai quali effettuare il calcolo
writeln(multiplo(34,17));
I
Prima chiamata multiplo(34,17)
I
I
I
I
34 è sostituito a m nell’espressione che definisce la funzione
17 è sostituito a n nell’espressione che definisce la funzione
viene calcolato il valore dell’espressione e restituito il risultato
Seconda chiamata multiplo(readnum(),readnum())
I
I
I
E. Occhiuto
il primo numero letto dall’nput è sostituito a m
il primo numero letto dall’nput è sostituito a n
come prima, viene calcolato il valore dell’espressione e restituito il
risultato
–
Fondamenti Teorici e Programmazione- 437AA –
pag. 7