INFORMATICA - BASIC: LE FUNZIONI INTRINSECHE O PREDEFINITE

LE FUNZIONI

In matematica una funzione è una legge che associa ad ogni valore di un insieme, detto dominio, un solo valore preso da un altro insieme, detto codominio.
Un esempio di funzione è la legge che associa ad ogni numero intero il numero stesso se il numero è positivo, il numero cambiato di segno se il numero è negativo. Questa funzione viene chiamata valore assoluto.
Il Basic offre un certo numero di funzioni predefinite (chiamate anche funzioni incorporate o intrinseche) che possono essere richiamate per ottenere i valori calcolati dalle funzioni stesse e che semplificano la stesura dei programmi.
Le funzioni predefinite sono di vario tipo; le potremmo suddividere in funzioni aritmetiche e trigonometriche, funzioni di conversione di tipo, funzioni che operano sulle stringhe, più alcune altre, come per esempio la TAB e la SPC di cui abbiamo parlato a proposito della stampa dei dati.

LE FUNZIONI NUMERICHE

ABS(espressioneNumerica)
dà il valore assoluto dell'espressione, cioè il valore stesso se positivo, il valore cambiato di segno se negativo.

SQR(espressioneNumerica)
dà la radice quadrata del valore dell'espressione; la radice quadrata è definita solo per i numeri positivi quindi l'espressione deve avere valore maggiore di 0.

SGN(espressioneNumerica)
dà il segno dell'espressione, restituisce:
1 se il valore è positivo,
0 se è proprio 0,
-1 se è negativo.

LOG (espressioneNumerica)
dà il logaritmo naturale (cioè in base e) del valore dell'espressione; l'espressione deve avere sempre un valore positivo.

EXP (espressioneNumerica) è la funzione esponenziale, reciproca del logaritmo; dà il risultato della potenza che ha come base e, e come esponente il valore dell'espressione; il valore massimo consentito dell'espressione è 88,02969; per valori più grandi si verifica un overflow del risultato.

ESEMPI
Uso di funzioni numeriche.

Le istruzioni:
PRINT ABS(-78)
PRINT SQR(36)
producono i risultati:
78
6

Le istruzioni:
PRINT SGN(42)
PRINT SGN(-15)
producono i risultati:
1
-1

I LOGARITMI

Il logaritmo di un numero in una data base è l'esponente a cui bisogna elevare la base per ottenere il numero stesso; per esempio in base 10:

Y=logdep.10X se 10esp.Y=X

In molte formule per esempio di fisica o chimica compare spesso il logaritmo naturale o in base e.
e è un numero trascendente (non finito) le cui prime cifre sono 2.71827183
In questo caso:

Y=logdep.eX se eesp.Y=X

La funzione logaritmo offerta dal Basic calcola il logaritmo naturale. I logaritmi in base 10 vanno calcolati in base alla relazione:

logdep.10X = logdep.eX / logdep.e10
l'argomento del logaritmo deve essere sempre un valore maggiore di 0.

L'esponenziale è l'operazione inversa del logaritmo; dà il valore di e elevato ad un certo numero.

LE FUNZIONI TRIGONOMETRICHE

Le funzioni trigonometriche disponibili in Basic sono:

SIN(angolo)
COS(angolo)
TAN(angolo)

che danno rispettivamente il seno, il coseno e la tangente di un angolo espresso in radianti.

E' inoltre disponibile la funzione:

ATN(espressioneNumerica)

che dà l'arcotangente, cioè l'angolo, in radianti, di cui il valore dell'espressione è la tangente.

LA TRIGONOMETRIA

Un punto in un piano cartesiano è individuato dai valori dell'ascissa X e dell'ordinata Y, chiamate coordinate cartesiane.
E' possibile invece delle coordinate cartesiane utilizzare le coordinate polari.
Dato un punto P nel piano cartesiano, si tracci un cerchio con centro nell'origine degli assi cartesiani, passante per il punto dato, e una retta passante per l'origine degli assi e per il punto dato. La retta tracciata forma un angolo con l'asse delle X; chiamiamolo a
Il punto P può allora essere individuato dal raggio R del cerchio e dall'angolo a; questi due valori sono detti coordinate polari.
E' possibile passare da un sistema di riferimento all'altro attraverso le funzioni goniometriche.
Si dice seno di a quel numero che moltiplicato per il raggio dà l'ordinata del punto; si dice coseno di a quel numero che moltiplicato per il raggio dà l'ascissa del punto; cioè

X = R cosa
Y = R sena

La tangente è il rapporto fra seno e coseno dello stesso angolo

tga = sena / cosa

Gli angoli si possono misurare in gradi e in radianti.
La misurazione in gradi è quella abituale: l'angolo giro vale 360 gradi, l'angolo retto 90 gradi e così via per le varie frazioni dell'angolo.
In radianti l'angolo giro vale 2 p. L'angolo retto vale quindi p/2.
p è un numero trascendente (cioè con infinite cifre decimali) definito come il rapporto tra la circonferenza di un cerchio e il suo diametro, le cui prime cifre sono 3.14.
Nelle funzioni del Basic l'angolo è sempre espresso in radianti; conoscendo la misura in gradi dell'angolo si può avere il valore in radianti usando la formula di conversione

radianti = gradi * (p/180)

viceversa, conoscendo la misura in radianti dell'angolo si ottiene il valore in gradi con la formula di conversione

gradi = radianti * (180/p)
Esempio di funzione trigonometrica

LE FUNZIONI DI CONVERSIONE

Nei capitoli precedenti si è visto che ogni variabile permette di memorizzare solo valori di un certo tipo; più in generale si può dire che ogni variabile permette di memorizzare solo valori compatibili, che in certi casi vengono convertiti automaticamente al tipo della variabile ricevente.
Si ha sicuramente un errore se si tenta di assegnare una stringa ad una variabile numerica o un numero ad una variabile alfanumerica; ma se una variabile numerica viene assegnata ad un'altra di tipo diverso si ha una conversione da un tipo all'altro; quando un numero viene convertito da un tipo ad un altro con precisione più bassa si ha un arrotondamento del numero.

ESEMPI
Se un numero reale viene assegnato ad una variabile numerica intera, il numero reale viene arrotondato all'intero più vicino.

Dall'assegnazione A%= 76.23 si ottiene in A% il valore 76

Dall'assegnazione A%= 76.52 si ottiene in A% il valore 77

_FIX(espressioneNumerica)
tronca il valore dell'espressione alla parte intera, cioè mantiene le cifre alla sinistra del punto decimale ignorando quelle alla destra.

_INT(espressioneNumerica)
dà il più grande numero intero che sia minore o uguale del valore dell'espressione.

_CINT(espressioneNumerica)
arrotonda il valore dell'espressione ad un numero intero; cioè se la parte frazionaria è minore o uguale a 5 si ottiene il numero alla sinistra del punto decimale, altrimenti se la parte frazionaria è maggiore di 5 si ottiene il numero alla sinistra del punto decimale aumentato di 1; il valore risultante deve essere compreso tra -32768 e 32767 altrimenti si verifica un errore di overflow.

_CLNG(espressioneNumerica) arrotonda il valore dell'espressione ad un numero intero LONG; il valore risultante deve essere compreso tra -2.147.483.648 e 2.147.483.647.

_CDBL(espressioneNumerica)
converte il valore dell'espressione in doppia precisione.

_CSNG(espressioneNumerica)
converte il valore dell'espressione in precisione semplice.

ESEMPI
Funzioni di conversione.

Le istruzioni:
PRINT FIX(85.91)
PRINT FIX(-85.91)
producono i risultati:
85
-85

Le istruzioni:
PRINT INT(12.54)
PRINT INT(-99.4)
producono i risultati:
12
-100

Le istruzioni:
PRINT CINT(43.32)
PRINT CINT(43.74)
producono i risultati:
43
44

_HEX$ (espressioneNumerica)
restituisce una stringa con la rappresentazione esadecimale del valore del'espressione.
L'espressione può avere un valore qualsiasi; prima della conversione in esadecimale il valore viene arrotondato ad un intero LONG.

_OCT$ (espressioneNumerica$)
restituisce una stringa con la rappresentazione ottale del valore dell'espressione.
Come per la conversione in esadecimale il valore dell'espressione viene arrotondato ad un intero LONG.

ESEMPI
Programmino di conversione di un numero da decimale in esadecimale usando la funzione HEX$.

PRINT "Inserire il numero da convertire"
INPUT NUMERO
ESADECIMALE$ = HEX$(NUMERO)
PRINT NUMERO "decimale è " ESADECIMALE$ "esadecimale"
END

Inserire il numero da convertire
?2565
2565 decimale è A05 esadecimale

_STR$(espressioneNumerica)
dà una rappresentazione in forma di stringa del valore dell'espressione. Se il valore è positivo nella stringa viene preceduto da uno spazio.

_VAL(espressioneStringa$)
dà il valore numerico della rappresentazione in forma di stringa di un numero eliminando eventuali spazi presenti nella stringa.

_ASC(espressioneStringa$)
dà il codice ASCII del primo carattere della stringa.

_CHR$(codiceAscii%)
dà il carattere corrispondente al valore del codice ASCII indicato.
La funzione CHR$ viene usata di solito per inviare caratteri speciali al video o alla stampante.

LE FUNZIONI DI MANIPOLAZIONE DI STRINGHE

_LEN (espressioneStringa$)
dà la lunghezza della stringa, cioè il numero di caratteri che la compongono, compresi gli spazi.

_LCASE$ (espressioneStringa$)
converte in minuscolo tutti i caratteri della stringa.

_UCASE$ (espressioneStringa$)
converte in maiuscolo tutti i caratteri della stringa.

_LTRIM$ (espressioneStringa$)
toglie da una stringa gli spazi iniziali.

_RTRIM$ (espressioneStringa$)
toglie da una stringa gli spazi finali.

_INSTR (espressioneStringa$, stringaRicerca$)
cerca nella prima stringa indicata se compare la seconda stringa e ne restituisce la posizione.

_LEFT$ (espressioneStringa$, n%)
restituisce gli n caratteri più a sinistra di una stringa.

_RIGHT$ (espressioneStringa$, n%)
restituisce gli n caratteri più a destra di una stringa.

_MID$ (espressioneStringa$, inizio% [,lunghezza%])
restituisce parte di una stringa (lunghezza% caratteri a partire dal carattere con posizione inizio%).

_SPACE$ (n%) dà una stringa di spazi di lunghezza n.

_STRING$ (lunghezza%, {codiceascii%|espressionestringa$})
dà una stringa che ripete per il numero di volte indicato in lunghezza% il primo carattere della stringa indicata, o il carattere individuato dal codice ASCII.

ESEMPI
Uso di funzioni per la manipolazione di stringhe.

Le istruzioni:
FRASE$ = "ciao a tutti"
PRINT LEN(FRASE$)
PRINT LEFT$(FRASE$, 4)
PRINT MID(FRASE$, 6, 7)
producono:
12
ciao
a tutti

LA GENERAZIONE DI NUMERI CASUALI

RND(n#)
genera un numero casuale (o aleatorio); fornisce un numero in precisione semplice compreso tra 0 e 1.
Se n è maggiore di 0 o si scrive solamente RND, senza argomento, la funzione fornisce il numero casuale successivo.
Se n è minore di 0 la funzione restituisce lo stesso numero per qualsiasi n.
Se n è 0 la funzione restituisce l'ultimo numero generato (quindi ripete il numero già fornito).
In realtà i numeri non sono veramente casuali ma sono il risultato dei calcoli effettuati da un algoritmo.
Si otterrebbe sempre la stessa sequenza di numeri se non fosse possibile inizializzare il generatore di numeri casuali con l'istruzione RANDOMIZE.

RANDOMIZE [N%]

Il numero n è un numero intero (quindi compreso tra -32768 e 32767) utilizzato dall'algoritmo di generazione dei numeri casuali. Ogni volta che si inizializza il generatore con lo stesso valore di n si ottiene la stessa sequenza di numeri "casuali". Per ottenere una nuova serie di numeri bisogna modificare il valore di n.
Il valore di n può essere inserito dall'utente; se il numero n non viene specificato nell'istruzione, al momento dell'esecuzione il programma si interrompe e richiede un valore.

USI DELLA FUNZIONE RND

La funzione RND permette di ottenere dei valori in una successione pseudocasuale; risulta quindi molto utile per una vasta serie di problemi, dalla statistica alla ricerca scientifica, dai giochi (viene presentato un esempio nel prossimo capitolo) alla simulazione.
Nei problemi di simulazione il programma costituisce un modello del sistema di cui si vuole analizzare il comportamento; si suppone che gli eventi che avvengono in modo casuale o con una certa probabilità si verifichino dopo un intervallo di tempo di un certo valore T, risultato della funzione di generazione dei numeri casuali.
E' possibile in questo modo esaminare sistemi complessi ed analizzare situazioni particolari senza che queste si verifichino realmente. Ciò risulta di grande importanza; si pensi per esempio al problema di simulare la partenza di un missile e quanti costi e danni comporterebbe realizzare in pratica la prova.

GENERAZIONE DI NUMERI CASUALI IN UN INTERVALLO

La funzione RND genera numeri compresi tra 0 e 1; per ottenere numeri compresi tra due valori A e B bisogna procedere in questo modo;
T = B - A + 1
K = INT(RND * T) + A

Per esempio per avere numeri compresi tra 1 e 6 si deve scrivere:
K = INT(RND * 6) + 1

INIZIALIZZAZIONE DEL GENERATORE DI NUMERI CASUALI

Può non essere conveniente lasciare all'utente il compito di inserire il valore di inizializzazione del generatore di numeri casuali; questo valore può allora essere derivato dal TIMER, cioè dall'orologio interno del computer.
Il valore dell'orologio viene fornito dalla funzione TIME$ che può essere utilizzata per esempio in questo modo:
n = VAL(RIGHT$(TIME$,2))

LE FUNZIONI DI GESTIONE DELLA MEMORIA E DELL'ESECUZIONE

La funzione FRE restituisce la quantità di memoria disponibile.
Le funzioni PEEK e POKE permettono di agire sulla memoria:
la funzione PEEK restituisce il valore contenuto nel byte all'indirizzo specificato;
la funzione POKE permette di scrivere un byte nella locazione desiderata.
La funzione POKE è molto pericolosa se non usata correttamente perché può danneggiare il funzionamento del sistema, andando a scrivere qualcosa nell'area riservata al sistema operativo (comunque soltanto fino al successivo bootstrap del sistema, non certo in modo permanente).
La funzione SLEEP(secondi&) permette di sospendere l'esecuzione del programma per il tempo indicato; può essere utile per esempio per far comparire una scritta sul video per un certo tempo e poi cancellare il video e proseguire nell'esecuzione del programma.

Chiudi

Outlet Offerte Sconti Promozioni Risparmiare sugli Acquisti di prodotti e Servizi in Internet

Gigacenter Store-Vente privee-Show room prive-La ruota della fortuna-Outlet Pił Style-Offerte Outlet Store-Sconti Outlet Offerte-Spartoo Shoes-Private Outlet-Saldi Privati-Sold Outlet-Offerte del GiornoBuoni sconto-Saldi Sconti-Offerte Viaggio-Acquisti + Guadagni

 

eXTReMe Tracker

Shiny Stat

free counters