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 si 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 pe calculator vor fi numite date. Exemple de date: numerice, 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.
În 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 preyentâ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 |
SEMNIFICAŢIE |
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.
Exemplu:
? NOT(1=3)
.T.
<=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
Operatorii aritmetici care se aplica operanzilor numerici cu rezultat numeric:
OPERATOR |
SEMNIFICAŢIE |
grupeaza expresiile |
|
**, ^ |
ridicare la putere |
înmultire, împartire, modulo(restul împartirii) |
|
adunare scadere |
Operatorii relationali:
OPERATOR |
RELAŢIE |
< |
mai mic decât |
> |
mai mare decât |
egal cu |
|
<>, #, != |
diferit de |
<= |
mai mic sau egal cu |
>= |
mai mare sau egal cu |
ABS(<exp N>) = valoarea absoluta a argumentului (respectiv<exp N>)
SIGN(<expN>) = returneza semnul argumentului
+1 daca <exp N> este >0
SIGN(<expN>) = 0 daca <expN> este =0
-1 daca <exp> este <0
CEILING(<expN>)= cel mai apropiat întreg mai mare sau egal cu
FLOOR(<expN>)= cel mai apropiat întreg mai mic sau egal cu
ROUND(<expN1, expN2>)=<expN1>= expresia de rotunjit, (<expN2>) reprezentând numarul de zecimale care se vor pastra în rezultat.
EXP(<expN>)= exponentiala lui (<expN>);
LOG(<expN>)= logaritmul natural din (<expN>);
LOG10(<expN>)= (<expN>)= logaritmul zecimal din (<expN>);
SQRT(<expN>)= (<expN>)= radicalul de ordin 2 din (<expN>).
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 în sir este esentiala si ficarui caracter I se asiciaza un numar reprezentând pozitia caracterului în cadrul sirului (primul caracter va avea pozitia 1, al II-lea caracter 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 caractere ca si “buna ziua!” dar este diferit de sirul “BUNĂ ZIUA!”). Nu sunt permise constructii de forma: ‘salut” sau “salut’. pentru a include un apostrof într-un sir, sirul va fi delinitat 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, blancurile (spatiile) de la sfârsitul primului sir fiind trecute la sfârsitul sirului al doilea.
Exemplu:
“eu învat “+” FoxPro” = “eu învat FoxPro”
“eu învat “-” FoxPro” =”eu învat FoxPro ”
Operatori relationali:
OPERATOR |
RELA IE |
$ |
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 urmatoarea sintaxa:
<expc1> <operator> <expc 2>
Operatorul $ (inclus în) returneaza adevarat daca primul sir de caractere <expc 1> este continut în cel de al doilea <expc 2>, altfel returneaza fals.
FUNCŢII REFERITOARE LA sIRURILE DE CARACTERE
Functia CHR( )- returneaza caracterul ASCII corespunzator codului numeric transmis ca parametru.
Sintaxa: CHR(<expN>)
Exemplu:
?CHR(49) ?CHR(65)= =’A’
1 .T.
Functia ASC( )- returneaza codul ASCII al primului caracter din sirul dat.
Sintaxa: ASC(<expC>)
Exemplu:
?ASC(“A”) ?ASC(“a”)= =ASC(‘alfa’)
65 .T.
Functia LEN( )- returneaza lungimea sirului primit ca parametru.
Sintaxa: LEN(<expC>)
Exemplu:
?LEN(‘Buna ziua !’) ?LEN(‘baze’+’de date’)
11 13
Functia LOWER( )- transforma toate majusculele în litere mici, restul caracterelor ramânând neschimbate.
Sintaxa: LOWER(<expC>)
Exemplu:
?LOWER(‘POpescu AliN’)
popescu alin
Functia UPPER( )- transforma toate literele mici în majuscule, restul caracterelor ramânând neschimbate.
Sintaxa: UPPER(<expC>)
Exemplu:
?UPPER(‘POpescu AliN’)
POPESCU ALIN
Functia PROPER( )- transforma primul caracter în majuscula (daca este litera), restul caracterelor în litere mici.
Sintaxa: PROPER(<expC>)
Exemplu:
?PROPER(‘POPEsCu aliN’)
Popescu Alin
2.4 TIPUL DE DATĂ CALENDARISTICĂ
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 blancuri în pozitia zilei, lunii si anului sau printr-un blanc încadrat între paranteze acolade.
ex.: data_vida sau data vida
FoxPro trateaza toate datele calendaristice 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
12/31/98
Operatorii relationali se pot aplica si datelor de tip data calendaristica. O data calendaristica este 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
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 indica 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/99
FUNCŢII CARE LUCREAZĂ CU DATE CALENDARISTICE
Functia CDOW (<expD>) 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 (<expD>) returneza 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(<expD>) returneaza un sir de caractere reprezentând numele lunii corespunzatoare datei (Ianuary, February, etc.).
Functia MONTH(<expD>) returneaza un numar reprezentând a câta luna din cadrul anului.
Ex.: ?MONTH(date()) ?CMONTH()
1 IANUARY
Functia YEAR() returneaza anul ca valoare numerica
Ex.: ?YEAR(DATE()-30)
1989
FUNCŢII CARE LUCREAZĂ CU ORA SISTEMULUI
Functia TIME([<expN>]) care returneaza ora sistemului.
Ex.: ?TIME()
?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()
?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 cesului în partea din dreapta sus a ecranului (linia 1 coloana 70).
|