TIPURI DE DATE ,
FUNCTII REFERITOARE LA FIECARE TIP IN PARTE
Pentru a transmite calculatorului
programul dupa care acesta urmeaza sa prelucreze
informatiile se foloseste un limbaj de programare. Acesta reprezinta ansamblul
codificarilor operatiilor ce se executa intr-un
program cat si a regulilor de combinare a acestora in scopul transmiterii catre
calculator a programului dupa care acesta va functiona.
Informatiile prelucrate de calculator vor fi numite date.
Exemple de date : numere, litere, siruri de litere,
etc.
Un tip de date reprezinta o caracteristica a datelor
care stabileste ce operatii se pot executa asupra lor, modul de codificare a
datelor in memoria calculatorului, semnificatia acestor date. Exemple de tipuri
de date : numeric, logic, sir de caractere, etc.
In limbajul FoxPro vom avea urmatoarele tipuri de date:
tipul logic;
tipul numeric;
tipul sir de caractere;
tipul data calendaristica;
tipul memo;
Aceste tipuri vor fi tratate pe rand, pentru fiecare prezentandu-se:
modul de specificare a datelor de tipul respectiv;
operatori ce se aplica asupra acestor date;
comenzile si functiile referitoare la datele de tipul respectiv.
2.1 TIPUL LOGIC
Este alcatuit din datele ce nu pot lua decat doua valori: adevarat(TRUE)
sau fals(FALSE). Pentru a specifica valoarea adevarat a unei expresii de tip
logic se foloseste constructia .T. (de la TRUE) iar pentru valoarea fals se
foloseste .F. (de la FALSE
O expresie de tip logic reprezinta o combinatie de operanzi si operatori.
Operanzii pot fi: - campuri de tip logic ;- functii
care returneaza valori de tip logic; - variabile de tip logic; - alte expresii
logice.
Operatorii logici, in ordinea prioritatii de evaluare, sunt:
De asemenea rezultatul unei expresii
care contine operatori relationali este tot de tip
logic.
ex. not(1=3)
.T.
? (1<=4)and(5>3)
.T.
? 6<3 or 5*7=20
.F.
2.2 TIPUL NUMERIC
Operanzi numerici :
campuri numerice ale b.d.
variabile de tip numeric
functii care returneaza valori numerice
constante numerice
Operatori aritmetici care se aplica operanzilor numerici cu rezultat numeric
Operatori
relationali:
Functii
referitoare la semnul datelor numerice:
ABS(<exp N>)= valoarea absoluta a argumentului (respectiv <exp N>)
;
SIGN(<exp N>)=returneaza semnul argumentului
+1 daca <exp N> este >0
SIGN(<exp N>)= 0 daca <exp N> este =0
1 daca <exp N> este <0
Functii de
aproximare
INT(<exp N>)=partea intreaga a argumentului
CEILING(<exp N>)= cel mai apropiat intreg mai mare sau egal cu <exp
N>
FLOOR(<exp N>)= cel mai apropiat intreg mai mic sau egal cu <exp N>
ROUND(<expN1,expN2>)= <expN1> expresia de rotunjit , <expN2>
numarul de zecimale care se vor pastra in rezultat.
Functii matematice elementare
EXP(<exp N>)= exponentiala lui <exp N>;
LOG(<exp N>)= logaritmul natural din <exp N>;
LOG10(<exp N>)=logaritmul zecimal din <exp N>;
SQRT(<exp N>)= radicalul de ordinul 2 din <exp N>;
2.3 TIPUL SIR DE CARACTERE
Un sir de caractere reprezinta o multime de caractere
ordonata care se trateaza ca un tot unitar. Ordinea caracterelor in sir este esentiala si fiecarui caracter i se asociaza un numar
reprezentand pozitia caracterului in cadrul sirului (primul caracter va avea
pozitia 1, al II-lea va avea pozitia 2 s.a.m.d.). Numarul
caracterelor dintr-un sir reprezinta lungimea sirului. Un subsir al sirului dat reprezinta o portiune din sir,
incepand de la o pozitie specificata si de lungime data.
Constantele de tip sir de caractere se specifica prin multimea caracterelor
care il compun incadrata intre apostrofuri simple sau duble ex
'buna ziua!' este acelasi sir de caracter ca si 'buna ziua!' dar este
diferit de sirul 'BUNA ZIUA!'). Nu sunt permise constructii de forma:
'salut' sau 'salut'. Pentru a include un apostrof intr-un sir , sirul va fi delimitat de celalalt tip de apostrof (ex:
'sirul acesta contine ' si este un exemplu').
Daca lungimea sirului de caractere este 0 vorbim despre sirul
vid sau sirul nul reprezentat prin '' sau ''. Daca lungimea
sirului este 1 vorbim despre caractere ex '1' sau
'a'.
Operatorii care se pot aplica sirurilor de caractere sunt
operatori de concatenare;
operatori de comparare sau relationali;
Operatorul de concatenare simplu '+' face ca din doua siruri de
caractere sa se obtina un al treilea prin alipirea celui de al doilea sir la
coada primului.
Operatorul de concatenare special '-' face ca din doua siruri de
caractere sa se obtina un al treilea prin alipirea celui de al doilea sir la
coada primului, blank-urile de la sfarsitul primului sir sunt trecute la
sfarsitul sirului al doilea .
Ex:
'eu invat '+' FoxPro' = 'eu invat FoxPro'
'eu invat '-' FoxPro' = 'eu invat FoxPro '
Operatori relationali
Operatorii
relationali au urmatoare sintaxa
<expc1> <operator> <expc2>
Operatorul $ (inclus in) returneaza adevarat daca primul sir de caractere,
<expc1> este continut in cel de al doilea, <expc2> , altfel returneaza
fals.
Functii referitoare la Sirurile de caractere
Functia CHR( )- returneaza caracterul ASCII
corespunzator codului numeric transmis ca parametru.
Sintaxa: CHR(<exp N>)
Ex.:
? CHR(49) ? CHR(65)= ='A'
.T.
Functia ASC( ) - returneaza codul ASCII al primului caracter din sirul dat.
sintaxa: ASC(<exp C>)
ex. :
? ASC('A') ?ASC('a')==ASC('alfa')
65 .T.
Functia LEN( ) - returneaza lungimea sirului primit ca parametru
sintaxa: LEN(<exp C>)
ex. :
? LEN('Buna ziua !') ? LEN('
baze'+' de date')
13
Functia LOWER( ) - transforma toate majuscule in litere mici, restul
caracterelor ramanand neschimbate.
sintaxa : LOWER(<exp C>)
ex. :
? LOWER('POpescu AliN')
popescu alin
Functia UPPER( ) - transforma toate literele mici in majuscule, restul
caracterelor ramanand neschimbate.
sintaxa : UPPER(<exp C>)
ex. :
? UPPER('POpescu AliN')
popescu alin
Functia PROPER( ) - transforma primul caracter in majuscula(daca este litera),
restul caracterelor in litere mici.
sintaxa : PROPER(<exp C>)
ex. :
? PROPER('POPEsCu aliN')
pOPESCU aLIN
2.4 TIPUL DATA CALENDARISTICA
O constanta
de tip data calendaristica se specifica prin luna, ziua si anul corespunzator,
separate prin caracterul / si incadrate intre paranteze acolade.
Data calendaristica vida se specifica prin blank-uri in pozitia zilei, lunii si
anului sau printr-un blanc incadrat intre paranteze
acolade.
ex data_vida sau data_vida=
FoxPro trateaza toate datele invalide ca date calendaristice vide.
ex. = =
.T.
Adunarea unei zile la o data calendaristica are ca efect avansarea datei cu o
zi in ordine calendaristica.
astfel: +1 va fi egal cu
sau ? -1
12/31/98
Operatorii relationali se pot aplica si datelor de tip data calendaristica. O
data calendaristica este mai mare decat alta atunci
cand prima dintre acestea urmeaza calendaristic celei de a doua.
Formatul de specificare a datelor calendaristice este controlat de comanda SET
DATE
sintaxa
set date [to] american | ansi | british | french | german | italian | japan | usa | mdy
| dmy | ymd.
Formatul datei este dat de urmatorul tabel :
Comanda SET
CENTURY stabileste daca anul va fi descris de doua cifre (respectiv an din
secolul 20 ) sau patru cifre.
sintaxa : SET CENTURY ON | OFF unde ON indica patru cifre pentru an iar OFF
stabileste formatul din doua cifre pentru an.
Data curenta a sistemului se poate obtine folosind functia DATE( )
sintaxa : DATE( )
ex.: ? DATE( )
01/23/99
set century on
? DATE( )
01/23/1999
Functii care
lucreaza cu date calendaristice
Functia CDOW(<exp D>) returneaza ziua din cadrul
saptamanii in care cade aceasta data ca sir de caractere reprezentand numele
zilei din cadrul saptamanii.
Functia DOW(<exp D>) returneaza ziua din cadrul
saptamanii in care cade aceasta data ca numar reprezentand a cata zi din
saptamana. (1 pentru luni, 2 pentru marti, etc.)
Ex ? CDOW(DATE( )) ? DOW()
SATURDAY 2
Functia CMONTH(<exp D>) returneaza un sir de caractere reprezentand
numele lunii corespunzatoare datei (January, February, etc.).
Functia MONTH(<exp D>) returneaza un numar
reprezentand a cata luna din cadrul anului.
Ex ? MONTH(date( )) ? CMONTH()
1 JANUARY
Functia YEAR() returneaza anul ca valoare numerica
Ex. :
? YEAR(DATE( )-30)
1998
Functii care
lucreaza cu ora sistemului
Functia TIME([<exp N>]) care returneaza ora
sistemului.
Ex ? TIME( )
15:12:25
? TIME(0)
15:13:24.75
Functia SYS(2) returneaza numarul de secunde care au trecut de la ora 0.
Ex ? TIME( )
15:16:03
? SYS(2)
55000
Functia SECONDS( ) returneaza numarul de secunde si numarul de milisecunde care
au trecut de la ora 0.
Ex ? TIME( )
15:19:52
? SYS(2)
55191
? SECONDS( )
55191.863
Ceasul sistemului poate fi afisat in permanenta pe ecran cu ajutorul comenzilor
SET CLOCK ON |OFF unde ON face ca ceasul sa fie afisat in permanenta pe ecran
sau
SET CLOCK TO [<rand>, <coloana>] folosita pentru a specifica
pozitia pe ecran unde se doreste afisarea.
ex.:
set clock on
set clock to 1
vor determina afisarea in permanenta a ceasului in partea din dreapta sus a
ecranului ( linia 1 coloana 70).