Scrivere per moduli non ha solo il vantaggio di poter "impacchettare" parti del programma
che si vuole utilizzate più volte richiamandole brevemente- riassumendo cioè più istruzioni sotto un unico nome -
ma soprattutto quello di far ricorso a una metodologia, del "divide et impera" detta in gergo
"top-down", che consiste nello scomporre le azioni complesse in parti più facilmente dominabili.
Per di più, quando i moduli sono costruiti per essere riutilizzabili anche in altri contesti
si può pensare di partire da questi nelle future realizzazioni (metodologia "bottom-up").
Le function di utilità possono essere definite in un file con estensione .js a parte e richiamate
semplicemente mediante <script src="nomefile"></script> inserito prima del programma
posto tra <script>...</script>
Distinguiamo function, con qualche analogia con le funzioni in matematica, cioè variabili dipendenti, della forma generale:
function <identificatore> (<lista argomenti>){
blocco istruzioni;
return <espressione>;
}
che restituiscono un valore, quello dell'espressione inserita nell'istruzione
contraddistinta dalla parola chiave 'return'.
Per utilizzare una tale function occorre semplicemente indicare il nome, all'interno di una espressione,
seguito dalla lista delle variabili, tra parentesi, da utilizzare come argomenti.
Possiamo distinguere anche function che, più simili a istruzioni, non restituiscono alcun valore,
dette più propriamente procedure, che hanno la forma:
function <identificatore> (<lista argomenti>){
blocco istruzioni;
}
Queste procedure possono essere considerate 'macroistruzioni'.
Per utilizzare tali function occorre semplicemente indicare il nome quale riga di programma
seguito dalla lista delle variabili, tra parentesi, da utilizzare come argomenti.
Quando una function è utilizzata, il contenuto delle variabili indicate come argomenti
è utilizzato per effettuare i calcoli descritti dalla function ma non viene modificato (passaggio per valore).
In un programma occorre distinguere tra l'ambiente globale da quello di ogni singola function.
Le variabili definite all'interno di una function con 'var' si dicono 'locali' e in effetti esistono
solo nel corso della sua esecuzione, inesistenti per i moduli esterni alla function.
Le variabili non definite esplicitamente con 'var' o definite fuori da qualunque function, cioè
nell'ambiente globale, si dicono 'globali' e possono essere utilizzate all'interno di qualunque
function, ma non possono ovviamente essere restituite mediante 'return'.
E' consigliabile fare uso di variabili locali per evitare sovrapposizioni non volute.
function MCD(numero intero non negativo, numero intero non negativo) massimo comune divisore (Soluz.)
realizzare un programma per calcolare mcm(a,b)=a*b/MCD(a,b) (Soluz.)
realizzare un programma per trasformare un numero i.d nella forma con virgola i,d' approssimando a piacere (Soluz.)
realizzare un programma per la risoluzione di triangoli rettangoli che faccia uso di procedure
ipotenusaAngolo(), catetoAngoloAdiacente(),catetoAngoloOpposto(), ipotenusaCateto(), dueCateti() in grado di gestire i diversi casi
(soluz.)
realizzare un programma per la risoluzione di triangoli qualunque (soluz.)
function bin(numero intero non negativo, numero intero non negativo), binomiale di un numero, per
il calcolo del numero di combinazioni(Soluz.)
realizzare un programma per la determinazione del limite presumibili di una funzione in un punto(soluz.)
realizzare una function per la determinazione del limite presumibili di una funzione in un punto(soluz.)
realizzare una function binAppr(...) per il calcolo approssimato del binomiale (Soluz.)
una function inTabella(f espressione in x, x minimo, x massimo, numero di punti) che crei una tabella di coppie (x,f(x)) (Soluz.)
una function derivata(espressione in x,x,intorno di x), per determinare la derivata presumibile di una funzione in un punto (Soluz.)
una function bisez(f espressione in x, x minimo, x massimo, approssimazione) che determini uno zero di una funzione continua con il metodo di bisezione (Soluz.)
una function bisez(f espressione in x, x minimo, x massimo, approssimazione) che determini uno zero di una funzione continua con il metodo delle secanti (Soluz.)
Costruire una v.a. a distribuzione uniforme con media μ e scarto quadratico medio σ e poi utilizzare Excel per verificare (Soluz.)
Costruire una v.a. a distribuzione esponenziale con media μ e poi utilizzare Excel per verificare (Soluz1.Soluz2.)
Una function può avere un argomento di tipo non prefissato e perfino un numero di argomenti variabile.
Infatti una function è un oggetto che ha in particolare la proprietà
.arguments
un array di lunghezza .arguments.length che contiene i suoi argomenti
function MCD() massimo comune divisore con un numero variabile di argomenti (Soluz.)
function mcm() massimo comune divisore con un numero variabile di argomenti (Soluz.)
un file funzMat.js di function di utilità matematica tra le quali le precedenti (Soluz.)
un programma che richiami funzMat.js e calcoli il binomiale con un controllo sui valori in input (Soluz.)
Si possono anche dichiarare
function anonime: function (parametri) {corpo }
o anche
oggetti function: new Function (parametri,corpo )
da assegnare a una variabile o a una proprietà di un oggetto.
Le funzioni sono in realtà variabili di tipo Function.
Il passaggio dei parametri avviene
per valore per i tipi boolean, string, number e null: cambiamenti locali del valore di un argomento
non influenzano il valore dell'argomento usato nella chiamata alla funzione
per riferimento per il tipo object: la manipolazione del contenuto dell'oggetto si ripercuote sull'oggetto usato come argomento.
pagine di Roberto Ricci
L.S. "A. Righi", Bologna.
Ultima revisione