unità didattica 4
Le funzioni del Pascal
1. Le funzioni predefinite
Il Pascal contiene una ricca biblioteca di funzioni predefinite, ovvero di calcoli effettuati su dati numeri- ci o alfanumerici idonei a determinare un certo valore in uscita.
Si tratta di funzioni predefinite in quanto il programmatore non deve scrivere alcuna linea di programma per dichiarare o descrivere la funzione: deve semplicemente chiedere l’esecuzione della funzione stessa tramite un’istruzione detta «richiamo di funzione».
seguimi
Per chiamare una funzione, in generale si deve citare il nome della funzione, citando tra parentesi la lista di pa- rametri, cioè i valori di ingresso o, eventualmente, i valori in uscita.
Le funzioni si dividono in matematiche (operanti cioè su valori numerici e consistenti in calcoli matema- tici), funzioni di manipolazione di stringhe alfanumeriche ed altre funzioni che definiremo “diverse”in quanto non appartengono propriamente né alla prima né alla seconda classe.
2. Le funzioni matematiche
Tra le funzioni matematiche più importanti, segnaliamo:
VALORE ASSOLUTO
ABS(variabile numerica) Restituisce il valore assoluto di una certa variabile numerica Esempio:
a := ABS(b) Il valore assoluto di b viene posto in a.
INTERO
INT(variabile numerica)
Restituisce la parte intera di una certa variabile numerica. Il risultato è una variabile reale.
Esempio:
a := INT(b) La parte intera di b viene posta in a.
FRAZIONATURA
FRAC(variabile numerica)
Elimina la parte intera di una certa variabile numerica. Il risultato è una variabile reale.
Esempio:
a := FRAC(b) La parte frazionaria di b viene posta in a.
UD4 • Le funzioni del Pascal
26
UD4 • Le funzioni del Pascal
27
TRONCATURA
TRUNC(variabile numerica)
Elimina la parte decimale di una certa variabile numerica. Il risultato è una variabile intera.
Esempio:
a := TRUNC(b) La parte decimale di b viene posta in a.
ARROTONDAMENTO
ROUND(variabile numerica)
Restituisce il numero intero più vicino (per eccesso o per difetto a seconda che la parte frazionaria ecce- da o meno 0,5) alla variabile numerica indicata.
Esempio:
a := ROUND(b)
Se b = 1,6 allora a = 2; Se b = 1,4 allora a = 1; Se b = 1,5 allora a = 2 QUADRATO
SQR(variabile numerica) Restituisce il quadrato di una certa variabile numerica.
Esempio:
a := SQR(b) Il quadrato di b viene posto in a.
RADICE QUADRATA
SQRT(variabile numerica) Restituisce la radice quadrata di una certa variabile numerica.
Esempio:
a := SQRT(b) La radice quadrata di b viene posta in a.
ESPONENZIALE
EXP(variabile numerica) Restituisce l’esponenziale di una certa variabile numerica.
Esempio:
a := EXP(b) L’esponenziale di b (ovvero eb) viene posto in a.
LOGARITMO NEPERIANO
LN(variabile numerica)
Restituisce il logaritmo neperiano (lne) di una certa variabile numerica.
Esempio:
a := LN(b) Il logaritmo neperiano di b (lne b)viene posto in a.
SENO TRIGONOMETRICO
SIN(variabile numerica)
Restituisce il seno di una certa variabile numerica che esprime i radianti di un certo angolo.
Esempio:
a := SIN(b) Il seno di b viene posto in a.
COSENO TRIGONIOMETRICO
COS(variabile numerica)
Restituisce il coseno di una certa variabile numerica che esprime i radianti di un certo angolo.
Esempio:
a := COS(b) Il coseno di b viene posto in a.
DISPARITÀ
ODD(variabile numerica)
Restituisce il valore booleano TRUE (VERO) o FALSE (FALSO), a seconda che la variabile numerica sia rispettivamente dispari o pari
Esempio:
a := ODD(b) Se b è dispari, a = TRUE, altrimenti a = FALSE.
NUMERO CASUALE INTERO
RANDOM(variabile numerica) Restituisce un intero compreso tra 0 e la variabile numerica indicata.
Esempio:
a := RANDOM(b)
In a viene posto un numero intero estratto dalla tabella dei numeri casuali, compreso tra 0 e b.
NUMERO CASUALE REALE
RANDOM Restituisce un reale compreso tra 0 e 1.
Esempio:
a := RANDOM
In a viene posto un numero reale estratto dalla tabella dei numeri casuali, compreso tra 0 e 1.
3. Le funzioni su stringhe
Tra le funzioni più importanti operanti su stringhe alfanumeriche, ricordiamo:
LUNGHEZZA
LENGTH(variabile stringa)
Restituisce il valore intero relativo alla lunghezza della variabile stringa indicata, cioè il numero di carat- teri che la costituiscono.
Esempio:
a := LENGTH(b) La lunghezza della stringa b viene posta in a.
ESTRAZIONE DI UNA PARTE DI STRINGA
COPY(variabile stringa , posizione , numero)
Restituisce i caratteri pari a numero, a partire da posizione presenti in una certa variabile stringa.
Esempio:
a := COPY(b, 5, 7)
Dalla stringa b viene estratto l’insieme dei 7 caratteri a partire dal quinto carattere presente nella stringa e posto in a. Se ad esempio b contenesse «TERGICRISTALLI» in a verrebbe memorizzata la parola «ICRI- STA».
CONCATENAZIONE
CONCAT(variabile stringa , variabile stringa, … , variabile stringa)
Restituisce una variabile stringa formata dalla concatenazione, ovvero dall’unione sequenziale accodata, delle stringhe indicate.
Esempio:
a := CONCAT(b, c, d)
UD4 • Le funzioni del Pascal
28
UD4 • Le funzioni del Pascal
29
Nella stringa a verrà posta l’unione delle stringhe b, c e d. Ad esempio se b contenesse «ROSSI», c «VER- DI» e d «BIANCHI», in a verrebbe memorizzata la stringa «VERDIROSSIBIANCHI».
POSIZIONE
POS(variabile stringa1 , variabile stringa2)
Restituisce la posizione a partire dalla quale variabile stringa1 si trova in variabile stringa2 . Il risultato è 0 se la stringa non è stata trovata.
Esempio:
a := POS(‘ROSSI’, b)
Nella variabile stringa b viene eseguita la ricerca della stringa «ROSSI»: se la ricerca ha successo, in a sarà memorizzata la posizione a partire dalla quale «ROSSI» si trova in b, altrimenti in a viene restituito il valore 0.
Se b contiene «BIANCOROSSI» in a sarà memorizzato 7.
4. Le altre funzioni
Tra le altre funzioni segnaliamo:
CARATTERE CODICE ASCII
CHR(variabile numerica)
Restituisce il carattere corrispondente nel codice ASCII al numero indicato come argomento della fun- zione.
Ricordiamo che tutti i 256 caratteri corrispondenti al codice ASCII sono codificati ciascuno mediante una sequenza di 8 bit.
Esempio:
a := CHR(60)
Nella variabile di tipo carattere a viene posto «<» corrispondente al decimale 60.
KEYPRESSED
Restituisce il valore booleano TRUE (VERO) se è stato battuto un tasto sulla tastiera, altrimenti il valore FALSE (FALSO). Risulta molto utile nel costrutto REPEAT UNTIL.
Esempio:
REPEAT UNTIL KEYPRESSED
Dato che KEYPRESSED è falso sino a che l’utente non digita qualcosa sulla tastiera, il programma si arre- sta sino a che non si batte un qualsiasi tasto.
OCCUPAZIONE IN BYTE
SIZEOF(variabile)
Restituisce il numero di byte occupati in memoria centrale dalla variabile indicata.
Esempio:
a := SIZEOF(b)
Nella variabile a viene posto un valore intero pari al numero di byte di memoria centrale occupati da b.
PRECEDENTE NUMERO O CARATTERE CODICE ASCII PRED(valore)
Restituisce il numero intero precedente (se valore è un numero intero) o il carattere precedente nel codi- ce ASCII (se valore è di tipo char).
Esempio:
a := PRED(50) Nella variabile a viene posto 49 che precede l’intero 50 indicato.
a := PRED(‘F’)
Nella variabile a viene posto il carattere «E» che precede nel codice ASCII «F».
SUCCESSIVO NUMERO O CARATTERE CODICE ASCII SUCC(valore)
Restituisce il numero intero successivo (se valore è un numero intero) o il carattere successivo nel codice ASCII (se valore è di tipo char).
Esempio:
a := SUCC(50)
Nella variabile a viene posto 51 che segue immediatamente l’intero 50 indicato.
a := SUCC(‘F’)
Nella variabile a viene posto il carattere «G» che segue nel codice ASCII il carattere «F».
MAIUSCOLA DI UN CARATTERE
UPCASE(carattere) Restituisce la lettera maiuscola corrispondente al carattere indicato.
Esempio:
a := UPCASE(‘h’) Nella variabile a viene posto «H».
a := UPCASE(‘?’)
Nella variabile a viene posto il carattere «?» dato che non esiste maiuscolo del carattere indicato.