CATEGORII DOCUMENTE |
Datele cu care lucreaza FoxPro sunt de tip numeric, caracter, data calendaristica, logic. Asupra acestor tipuri de date s-au definit operatii specifice si au fost realizate functii standard dintre care cele mai des folosite vor fi explicate in continuare.
Functii uzuale asupra tuturor tipurilor de date:
MAX (<e1>,<e2>) |
calculeaza maximul dintre doua valori <e1> si <e2> |
MIN (<e1>,<e2>) |
calculeaza minimul dintre doua valori <e1> si <e2> |
TYPE(<eC>) |
intoarce litera corespunzatoare tipului de data. |
IIF(<eL>,<e1>,<e2>) |
intoarce <e1> daca <eL> este adevarat si <e2>in caz contrar |
O mare parte a datelor prelucrate de calculator este reprezentata de numere, pentru a caror descriere se foloseste tipul numeric. Cu toate ca limbajul FoxPro este un limbaj orientat pe lucrul cu baze de date si nu unul orientat pe calcule matematice, stiintifice, tipul numeric este imlementat astfel acat sa permita realizarea majoritatii operatiilor matematice antalnite in practica.
De asemenea, sunt prevazute o serie de functii matematice prin care se pot calcula functiile matematice elementare.
Operanzii numerici care intervin in expresii pot fi:
campuri numerice ale unei baze de date;
functii care returneaza valori numerice;
variabile de tip numeric;
constante numerice.
Operatori care se aplica unor operanzi numerici, avand ca rezultate tot valori numerice sunt : **, ^ (ridicarea la putere), * ( inmultire), / (impartire), % (modulo, restul impartirii), + (adunare), - scadere. Intre doua expresii numerice se pot aplica, de asemenea, operatori relationali, obtinandu-se expresii logice.
Functiile standard uzuale:
ABS (<eN>) |
calculeaza valoarea absoluta din <eN> |
SQRT (<eN>) |
calculeaza radical din <eN> (strict pozitiv) |
ROUND (<eN1>,<eN2>) |
<eN1> este rotunjita la zecimala data de <eN2> |
MOD (<eN1>,<eN2>) |
calculeaza restul impartirii intregi a lui <eN1> la <eN2> |
INT (<eN>) |
intoarce un intreg rezultat prin trunchierea zecimalelor |
CEILING (<eN>) |
intoarce cel mai mic intreg mai mare sau egal cu argumentul <eN> |
FLOOR (<eN>) |
intoarce cel mai mare intreg mai mic sau egal cu argumentul <eN> |
SIGN (<eN>) |
intoarce valoarea -1 pentru argument negativ, 1 pentru argument pozitiv si 0 pentru argument nul. |
RAND () |
returneaza un numar aleator in intervalul (0, 1) |
STR (<eN1>[,<eN2> [,<eN3>]]) |
conversia intre tipul numeric si tipul sir: <eN1> este numarul, <eN2> este lungimea, <eN3> numarul de pozitii pe care se va face reprezentarea partii zecimale. |
Exemplu:
? MOD ( 38, 6 )
? MOD ( 44,44 , 11,11 )
Observatie: Lista functiilor standard cuprinde si functii trigonometrice, logaritmi, radical, functia exponentiala, pe care le vom prezenta in anexa.
Fixarea numarului de zecimale pentru afisarea numerelor se poate face cu comanda SET DECIMALS:
SET DECIMAL TO <nr> |
Exemplu:
0, 67
SET DECIMAL TO 4
Exemple cu functii:
? ABS ( a )
? SIGN ( - 32 )
a = - 2 / 3
? a = SIGN ( a ) * ABS ( a )
. T .
? INT ( 14 . 46 )
? INT ( - 2 . 25 )
a = 14 . 46
? a - INT ( a )
a = - 2 . 25
? a - INT ( a )
? CEILING ( 8 . 32 )
? CEILING ( -4 . 23 )
? FLOOR ( 8 . 32 )
? FLOOR ( - 4 . 23 )
? EXP ( 2 )
? LOG ( 2 )
? LOG 10 ( 2 )
? EXP ( LOG ( 3 ) )
? SQRT ( 2 )
Functiile financiare
Intre functiile matematice, o categorie aparte o formeaza functiile FV(.,.,.), PV(.,.,.) si PAYMENT(.,.,.) numite functii financiare. In termeni economici functia FV(.,.,.) calculeaza valoarea de viitor a unei investitii ("Future Value") iar functia PV(.,.,.) calculeaza valoarea prezentata a unei investitii ("Prezent Value"). Detaliind:
1) FV(<expN1>, <expN2>, <expN3>) calculeaza valoarea viitoare a unei depuneri regulate cu o crestere constanta in cadrul unei investitii, cu o dobanda fixa pe o perioada data. Parametrii: <expN1> este depunerea, <expN2> este dobanda, <expN3> este perioada sau numarul de depuneri.
2) PV (<expN1>,<expN2>,<expN3>) calculeaza valoarea la zi a unei investitii constituite printr-un varsamant regulat cu o suma constanta, de-a lungul unui numar de perioade date si cand se practica o dobanda fixata. Parametrii functiei: <expN1> este suma platita, <expN2> este dobanda, <expN3> este durata.
3) PAYMENT (<expN1>,<expN2>,<expN3>) calculeaza marimea rambursarilor constante efectuate la intervale regulate care permit amortizarea unei sume, cu dobanda constanta, pe un numar dat de perioade. Parametrii: <expN1> este marimea sumei cheltuite, <expN2> este taxa sau dobanda, <expN3> este numarul de rambursari.
Un sir de caractere reprezinta o multime ordonata de caractere care se trateaza ca un tot unitar. Intr-un sir de caractere ordinea acestora fiind esentiala, fiecarui caracter I se poate asocia un numar reprezentand pozitia aceastuia in cadrul sirului.
Numarul caracterelor dintr-un sir reprezinta lungimea sirului. Un subsir al sirului dat repreuinta o portiune din sir, incepand de la o pozitie specificata si de lungimea data
Constantele de tip sir de caractere se specifica prin multimea caracterelor care le compun, incadrate intre apostrofuri simple sau duble ( la ambele capete trebuie sa fie acelasi tip de apostrof ).
Pentru a include unul dintre cele doua delimitatoare intr-un sir de caractere, multimea caracterelor ce alcatuiesc sirul va fi incadrata intre delimitatorul de celalalt tip decat cel din sir. Daca lungimea sirului este 0 obtinem sirul vid sau nul, care se specifica prin doua apostrofuri consecutive fara spatii sau alte caractere intre ele.
Datele de tip sir de caractere pot avea lungimea maxim 255 caractere ASCII si se reprezinta intern cate un caracter pe octet in binar.
Operatii asupra datelor de tip sir
- concatenarea a doua siruri se realizeaza prin operatorii de concatenare (+, -); (+) realizeaza concatenarea a doua siruri;
Exemplu: " strada _ " + " George _ Cosbuc "
Dupa evaluare, va avea valoarea:
" strada _ George _ Cosbuc "
Operatorul (-) realizeaza concatenarea termenilor cu mutarea spatiilor de la sfarsitul primului sir la sfarsitul sirului rezultat.
Exemplu: " Salut " - " prieteni !"
Dupa evaluare, vom obtine sirul de caractere
" Salut prieteni ! "
se observa ca blancurile de la inceputul sirului al doilea isi pastreaza pozitia in sir.
- testarea apartenentei unui sir la un alt sir este realizata prin operatorul ($); poate fi folosit in expresii logice.
De exemplu, expresia:
" calcul " $ " calculator "
este adevarata, pe cand expresia:
" calcule " $ " calculator "
va fi evaluata la valoarea logica fals.
Compararea sirurilor de caractere de lungimi diferite este controlata de comanda :
SET EXACT ON / OFF
In starea ON sirurile se compara de pe toata lungimea lor (cu exceptia spatiilor de la sfarsitul sirului). In starea OFF se ia lungimea cea mai scurta si, daca pe aceeasi lungime sirurile sunt egale, rezultatul este .T..
Functii uzuale asupra sirurilor
SUBSTR (<eC>, <eN1>,<eN2>) |
extrage un subsir din sirul <eC> incepand cu caracterul de pe pozitia <eN1> pe lungime <eN2> |
LEFT (<eC>, <eN>) |
extrage primele <eN> caractere din sirul <eC> |
RIGHT (<eC>, <eN>) |
extrage ultimele <eN> caractere din sirul <eC> |
LEN (<eC>) |
intoarce lungimea sirului <eC> |
REPLICATE (<eC>, <eN>) |
intoarce un sir avand <eC> multiplicat de <eN> ori |
SPACE (<eN>) |
Intoarce un sir de <eN> spatii |
LTRIM (<eC>) |
elimina spatiile de la stanga sirului <eC> ex.: LTRIM('MIA')="MIA" |
RTRIM (<eC>)/ TRIM (<eC>) |
elimina spatiile de la dreapta sirului <eC> ex.: RTRIM("MAI"')="MAI" |
AT (<eC1>, <eC2>) |
intoarce pozitiile sirului <eC1> in <eC2> |
ISALPHA (<eC>) |
testeaza daca sirul incepe cu o litera |
ISLOWER (<eC>) |
testeaza daca sirul incepe cu minuscula |
ISUPPER (<eC>) |
testeaza daca sirul incepe cu majuscula |
LOWER (<eC>) |
transforma sirul in minuscule |
UPPER (expC) |
transforma sirul in majuscule |
STUFF (<eC1>, <eN1>, <eN2>, <eC2>) |
inlocuieste in <eC1> incepand cu pozitia <eN1> un subsir de lungime <eN2> prin sirul <eC2> |
CTOD (<eC>) |
realizeaza conversia unui sir la data calendaristica |
VAL (<eC>) |
realizeaza conversia unui sir la numar |
Exemple:
? CHR ( 49 )
? CHR ( 65 ) == " A "
. T .
? ASC ( " A " )
? ASC ( " a " ) = ASC ( alfa )
. T .
? " A " == CHR ( ASC ( " A " ) )
. T .
? 65 == ASC ( CHR ) 65 ) )
. T .
? SUBSTR ( " ABCDEF " , 2, 3 )
BCD
? SUBSTR ( " Ziua Buna " , 6 )
Buna
? LEFT ( " La multi ani ! " , 2 )
La
? RIGHT ( " Noapte buna ! " , 6 )
buna !
? REPLICATE ( " a " , 5 )
a a a a a
? REPLICATE ( " " , 6 ) == SPACE ( 6 )
. T .
? ALLTRIM ( " GAMA " ) == " GAMA "
. T .
? " Ma numesc " + RTRIM ( " Ionescu " ) + " Daniel "
Ma numesc Ionescu Daniel
? " si am " + LTRIM ( " 24 " ) + " ani. "
si am 24 ani
? AT ( " nr. " , " Strada George Cosbuc, nr. 63 - 64 " )
? LEN ( " Salutari ! " )
? LEN ( " Strada George Cosbuc " + " nr. 150 " )
a = " ALFA "
b = " alfa "
? UPPER ( a ) == UPPER ( b )
. T .
? LOWER ( a ) == LOWER ( b )
. T .
STORE " pala " TO sir
sir = STUFF ( sir , 3 , 0 , " rale " )
? sir
paralela
sir = STUFF ( sir , 3 , 3 , " sar " )
? sir
pasarela
sir = STUFF ( sir , 7 , 2 , " " )
? sir
pasare
Datele calendaristice pot fi reprezentate in mai multe formate avand ca delimitator acolada. Forma de prezentare a unei date calendaristice depinde de comanda SET DATE:
SET DATE [TO] <format> |
unde <format> poate fi: AMERICAN / GERMAN / ANSI / ITALIAN / DMY
/BRITISH /
Formatul AMERICAN prezinta data calendaristica sub forma: ll/zz/aa.; formatul GERMAN sub forma zz.ll.aa., etc.
Includerea secolului in formatul de data este determinata de starea comutatorului SET CENTURY ON/OFF. Implicit este OFF.
Indicarea semnului folosit ca separator al informatiilor de tip data calendaristica este dat de comanda SET MARK. Implicit separatorul este dat de formatul de reprezentare. De exemplu formatul AMERICAN foloseste ca separator "/".
SET DATE TO <car> |
unde <car> reprezinta un singur caracter ce va fi folosit ca separator al informatiilor din data calendaristica.
Operatii care se pot face cu datele calendaristice sunt:
- compararea a doua date se realizeaza prin operatorii relationali:
- diferenta dintre doua date calendaristice da un numar de zile:
adunarea unui numar de zile la o data calendaristica da o alta data:
scaderea unui numar dintr-o data calendaristica da tot o data;
Functiile referitoare la date calendaristice sunt :
DATE() |
intoarce data curenta de la sistem |
DAY (<eD>) |
extrage nr. zilei din data |
MONTH(<eD>) |
extrage nr. lunii din data |
CMONTH(<eD>) |
intoarce numele lunii |
YEAR(<eD>) |
extrage anul din data calendaristica |
TIME() |
extrage ora sistem sub forma sirului 'HH:MM:SS' |
DTOS(<eD>) |
intoarce data sub forma 'secol - an luna zi' |
DMY(<eD>) |
intoarce data sub forma 'zi nume-luna an' |
MDY(<eD>) |
intoarce data sub forma 'nume - luna zi an' |
DTOC(<eD>) |
conversie data la sir |
Exemple:
? DATE ( )
11 / 12 / 2000
? CDOW ( DATE ( ) )
Saturday
? DOW ( )
? DAY ( )
? MONTH ( DATE ( ) )
? CMONTH ( )
March
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1440
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved