Le funzioni restituiscono un valore a chi ha fatto la chiamata
Quadrato di un numero
function QUADRATO(X: Real): Real; begin QUADRATO:=X*X; end;
Adesso, per calcolare lo spostamento in un moto uniformemente accelerato, possiamo scrivere
s:=1/2*a*t*t;
oppure
s:=1/2*a*Sqr(t);
oppure
s:=1/2*a*QUADRATO(t);
Realizzare una funzione che restituisce la misura dell’ipotenusa, date quelle dei cateti, di un triangolo rettangolo
function IPOTENUSA(X, Y: Real): Real; begin IPOTENUSA:=Sqrt(Sqr(X)+Sqr(Y)); end;
Il perimetro di un triangolo rettangolo, dati i cateti, diventa
p:=c1+c2+IPOTENUSA(c1, c2);
Analogamente, realizzando la funzione CATETO(),
p:=ipo+c1+CATETO(ipo, c1);
Dati 2 valori reali, calcolare la media
function MEDIA2(X, Y: Real): Real; begin Media2:=(X+Y)/2; end;
Dati 3 valori reali…
function MEDIA3(X, Y, Z: Real): Real; ...
Valore assoluto
function VALORE_ASSOLUTO(X: Real): Real; begin if(X < 0) then X:=-X; VALORE_ASSOLUTO:=X; end;
La radice quarta è la radice quadrata della radice quadrata…
Function RADICE_QUARTA(X: Real): Real; Begin RADICE_QUARTA:=Sqrt(Sqrt(X)); End;
Realizzare una funzione che restituisce un intero casuale con una sola cifra
Function CIFRA_CASUALE: Integer; Begin Randomize; CIFRA_CASUALE:=Random(10); End;
Possiamo definire funzioni senza argomenti (operazioni senza operandi…).
Lanciare un dado
Function LANCIO_DADO: Integer; begin Randomize; LANCIO_DADO:=Random(6)+1; end;
Lanciare due dadi
Function LANCIO2DADI: Integer; begin LANCIO2DADI:=LANCIO_DADO+LANCIO_DADO; end;
Realizzare una funzione che restituisce una lettera alfabetica maiuscola casuale
function MAIUSCOLA_CASUALE: Char; Var DISTANZA: Integer; begin Randomize; DISTANZA:=Random(26); MAIUSCOLA_CASUALE:=Char(Ord(‘A’)+DISTANZA); end;
Maiuscola o minuscola
Function LETTERA_CASUALE: Char; Var DISTANZA: Integer; Begin Randomize; DISTANZA:=Random(26); Case Random(2) Of 0: LETTERA_CASUALE:=Char(Ord(‘A’)+DISTANZA); 1: LETTERA_CASUALE:=Char(Ord(‘a’)+DISTANZA); End; End;
Se utilizziamo delle funzioni analoghe per le coordinate sullo schermo, per sporcare lo schermo con lettere casuali possiamo scrivere
GotoXY(COLONNA_CASUALE, RIGA_CASUALE); Write(LETTERA_CASUALE);
Realizzare una funzione che restituisce il massimo tra 2 real
Function MAX2(X, Y: Real): Real; ...
… 3 real
Function MAX3(X, Y, Z: Real): Real; ...
… 4 real
Function MAX4(X1, X2, X3, X4: Real): Real; ...
Tangente
function TANGENTE(X: Real): Real; Var C: Real; begin TANGENTE:=sin(X)/cos(X); end;
Se il coseno è nullo si avra una divisione per zero!
function TANGENTE(X: Real): Real; Var C: Real; begin C:=cos(X); if(C = 0) then Halt(1); TANGENTE:=sin(X)/C; end;
Compare la trappola
if(C = 0) then Halt(1);
per l’operazione di divisione per zero.
Decidere se un ANNO è bisestile
Function BISESTILE(ANNO: Integer): Boolean; Begin BISESTILE:=(ANNO Mod 4 = 0) And (ANNO Mod 100 <> 0) Or (ANNO Mod 400 = 0); End;
Quando una funzione è di tipo logico si può utilizzare l’espressione risolutiva direttamente nell’assegnazione della risposta…