TIPURI DE DATE
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 într-un program cât si a regulilor de combinare a acestora în 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 în 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 rând, pentru fiecare prezentându-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 decât 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: - câmpuri de tip logic ;- functii care returneaza valori de tip logic; - variabile de tip logic; - alte expresii logice.
Operatorii logici, în ordinea prioritatii de evaluare, sunt:
operator |
semnificatie |
grupeaza expresiile logice |
|
!, not |
negatie logica |
and |
si logic |
or |
sau logic |
De asemenea rezultatul unei expresii care contine operatori relationali este tot de tip logic.
ex.:
? not
.T.
(1<=4)and(5>3)
.T.
6<3 or 5*7=20
.F.
2.2 Tipul numeric
operanzi numerici :
câmpuri 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
operator |
semnificatie |
grupeaza expresiile |
|
ridicare la putere |
|
înmultire, împartire, modulo(restul împartirii) |
|
adunare, scadere |
Operatori relationali:
operator |
relatie |
< |
mai mic decât |
> |
mai mare decât |
egal cu |
|
<> , # , != |
diferit de |
<= |
mai mic sau egal cu |
>= |
mai mare sau egal cu |
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 întreaga a argumentului
ceiling(<exp N>)= cel mai apropiat întreg mai mare sau egal cu <exp N>
floor(<exp N>)= cel mai apropiat întreg mai mic sau egal cu <exp N>
round(<expN1,expN2>)= <expN1> expresia de rotunjit , <expN2> numarul de zecimale care se vor pastra în 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 sir de caractere
Un sir de caractere reprezinta o multime de caractere ordonata care se trateaza ca un tot unitar. Ordinea caracterelor în sir este esentiala si fiecarui caracter i se asociaza un numar reprezentând pozitia caracterului în 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, începând de la o pozitie specificata si de lungime data.
constantele de tip sir de caractere se specifica prin multimea caracterelor care îl compun încadrata între 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 într-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 sfârsitul primului sir sunt trecute la sfârsitul sirului al doilea .
Ex:
"eu învat "+" FoxPro" = "eu învat FoxPro"
"eu învat "-" FoxPro" = "eu învat FoxPro "
Operatori relationali
Operator |
Relatie |
inclus în |
|
< |
mai mic decât |
> |
mai mare decât |
identic cu |
|
<> , # , != |
diferit de |
<= |
mai mic sau egal cu |
>= |
mai mare sau egal cu |
Operatorii relationali au urmatoare sintaxa:
<expc1> <operator> <expc2>
Operatorul $ (inclus în) returneaza adevarat daca primul sir de caractere, <expc1> este continut în 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')
.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 în litere mici, restul caracterelor ramânând neschimbate.
sintaxa : LOWER(<exp C>)
ex. :
? LOWER('POpescu AliN')
popescu alin
Functia upper( ) - transforma toate literele mici în majuscule, restul caracterelor ramânând neschimbate.
sintaxa : UPPER(<exp C>)
ex. :
? UPPER('POpescu AliN')
POPESCU ALIN
Functia PROper( ) - transforma primul caracter în majuscula(daca este litera), restul caracterelor în 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 încadrate între paranteze acolade.
Data calendaristica vida se specifica prin blank-uri în pozitia zilei, lunii si anului sau printr-un blanc încadrat între 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 în ordine calendaristica.
astfel: +1 va fi egal cu
sau ? -1
Operatorii relationali se pot aplica si datelor de tip data calendaristica. O data calendaristica este mai mare decât alta atunci când 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 :
tipul datei |
formatul |
american |
ll/zz/aa |
ansi |
aa.ll.zz |
british |
zz/ll/aa |
french |
zz/ll/aa |
german |
zz.ll.aa |
italian |
zz-ll-aa |
japan |
aa/ll/zz |
usa |
ll-zz-aa |
mdy |
ll/zz/aa |
dmy |
zz/ll/aa |
ymd |
aa/ll/zz |
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( )
set century on
? date( )
Functii care lucreaza cu date calendaristice
Functia cdow(<exp d>) returneaza ziua din cadrul saptamânii în care cade aceasta data ca sir de caractere reprezentând numele zilei din cadrul saptamânii.
Functia dow(<exp d>) returneaza ziua din cadrul saptamânii în care cade aceasta data ca numar reprezentând a câta zi din saptamâna. (1 pentru luni, 2 pentru marti, etc.)
Ex. : ? cdow(date( )) ? dow()
Saturday 2
Functia cmonth(<exp d>) returneaza un sir de caractere reprezentând numele lunii corespunzatoare datei (January, February, etc.).
Functia month(<exp d>) returneaza un numar reprezentând a câta luna din cadrul anului.
Ex. : ? Month(date( )) ? Cmonth()
1 January
Functia year() returneaza anul ca valoare numerica
Ex. :
? Year(date( )-30)
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 în permanenta pe ecran cu ajutorul comenzilor
Set clock on |off unde on face ca ceasul sa fie afisat în permanenta pe ecran sau
Set clock to [<rând>, <coloana>] folosita pentru a specifica pozitia pe ecran unde se doreste afisarea.
ex.:
set clock on
set clock to 1,70
vor determina afisarea în permanenta a ceasului în partea din dreapta sus a ecranului ( linia 1 coloana 70).
|