Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Tipuri de date

foxpro


Tipuri de date

Definitie: Un tip de date reprezinta o caracteristica a datelor prin care se stabileste ce operatii se pot executa asupra lor, modul de codificare a datelor în memoria calculatorului si semnificatia acestor date.



Pentru a putea fi prelucrata, o data trebuie sa aiba stabilit tipul sau, cunoscându-se astfel dimensiunea zonei de memorie care trebuie alocata si modul de interpretare a valorilor din zona de memorie respecitva. Fiecare limbaj de programare are implementat o serie de tipuri de baza si de obicei permite definirea de noi tipuri pe baza celor predefinite.

În Foxpro exista patru tipuri pincipale de date: logic (sau boolean), numeric, sir de caractere si data calendaristica. Alaturi de acestea mai poate fi folosit un tip special de date numit "memo", prin intermediul caruia sunt manipulate sirurile de caractere foarte lungi sau cele cu lungime variabila. De asemenea vectorii, matricile sau tablourile multidimensionale pot fi considerate ca reprezentând un tip de date complex.

Foxpro nu necesita definirea explicita a tipului fiecarei date folosite într-un program ci este folosit ca mecanism elastic de determinare a tipului datelor. Mai exact, la initializarea 949i85j unei zone de memorie (variabile) este studiata valoarea care trebuie înscrisa în zona respectiva pentru determinarea dinamica a tipului sau. Acest mecanism are avantajul posibilitatii de modificare a tipului unei variabile chiar si în timpul rularii programului.

Definitie: Variabilele reprezinta zone de memorie folosite într-un program pentru memorarea temporara a unor date.

Fiecare variabila are asociat un nume prin care ea se identifica si îi este asociat un tip (de date) prin care se stabilesc datele ce po fi memorate si interpretate aceste date.

Încarcarea unei date în zona de memorie a unei variabile se face prin instructiunea de atribuire.

Instructiunea de atribuire are forma:

<nume variabila>=<expresie>

Ca urmare a acestei instructiuni variabila indicata în stânga semnului "=" va lua valoarea rezultata din evaluarea expresiei din dreapta semnului.

Exemplu:

S="Acesta este un sir de caractere"

Daca variabila s nu a fost definita anterior în cadrul programului atunci instructiunea va determina alocarea de memorie pentru variabila s si atribuirea pentru ea a unui sir de caractere.

B=56

A=3.5

Tipul logic

Este caracteristic datelor ce nu pot lua decît doua valori "adevarat" sau "fals". O expresie de tip logic reprezinta o combinatie de operanzi si operatori, construita dupa anumite reguli sintactice, a carei evaluare va avea ca rezultat o valoare logica.

Operanzii ce intra în componenta expresiilor logice sunt de urmatoarele tipuri:

cîmpuri de tip logic ale unei baze de date

functii ce returneaza valori logice

variabile de tip logic

alte expresii logice

Operatorii logici, în ordinea prioritatii de evaluare, sunt sintetizati în urmatorul tabel:

Operator

Semnificatie

Grupeaza expresiile

!,NOT

Negatie logica

AND

si logic

OR

Sau logic

Tipul numeric

Cea mai mare parte a datelor prelucrate de calculator este reprezentata de numere, pentru a caror descriere se foloseste tipul numeric.

Foxpro nefiind un limbaj orientat spre calcule matematice si stiintifice, ci unul orientat spre baze de date, poseda un singur tip pentru manipularea numerelor, cel "numeric". Pentru ca rezultatele obtinute sa fie cele asteptate este foarte important sa cunoastem ordinea de evaluare a operatorilor care se aplica operanzilor numerici.

În acest tabel prioritatea scade de sus în jos, pe acelasi nivel de prioritate evaluarea facându-se de la stânga la dreapta, în ordinea aparitiei operatiilor în expresie.

Exemplu:

se evalueaza astfel:

Între doua expresii numerice se pot aplica operatori relationali obtinându-se, astfel expresii logice

În cadrul expresiilor pot fi incluse ca operanzi, alaturi de variabile si constante, si functii cu ajutorul carora clasa operatiilor executate asupra numerelor se extinde nelimitat.

Cele mai importante functii care opereaza cu numere si returneaza valori numerice sunt:

functii referitoare la semnul datelor numerice

functii de aproximare a datelor numerice

functii matematice elementare

functii trigonometrice

Functii referitoare la semnul datelor numerice

ABS() - returneaza valoarea absoluta a numarului primit ca parametru

SIGN() - este folosita pentru a afla semnul numarului transmis ca parametru astfel:

+1 daca numarul este pozitiv

0 daca numarul este nul

-1 dacpa numarul este negativ

Exemplu:

? ABS(-600)

?SIGN(-14)

Functii de aproximare a datelor numerice

Partea întreaga a unei expresii numerice este returnata de functia INT()

Partea fractionara a unui numar se obtine folosind aceeasi functie prin scaderea din numarul respectiv a partii sale întregi.

Exemplu:

? INT(12.67)

a=12.67

?a-INT(a)

Functii matematice elementare

EXP() - pentru exponentiala

LOG() - pentru logaritmul natural

LOG10() - pentru logaritmul zecimal

SQRT() - pentru radical de ordinul 2

Exemplu:

?EXP(3)

?LOG(2)

?LOG10(10)

?SQRT(2)

?EXP(LOG(5))

Functii trigonometrice

SIN() - pentru sinus

COS() - pentru cosinus

TAN() - pentru tangenta

ASIN() - pentru arcsinus

ACOS() - pentru arccosinus

ATAN() - pentru arctangenta

Primele trei functii (cele directe) primesc ca argument un unghi exprimat în radiani si returneaza valoarea functiei corespunzatoare iar ultimele trei functii (inverse) realizeaza operatia inversa, primind ca parametru o valoare numerica si returnând unghiul corespunzator.

Functia PI() - returneaza valoarea constantei trigonometrice - 3,141592

Exemplu:

? SIN(PI()/2)

?COS(PI())

?TAN(PI()/4)

?ASIN(1)

?ACOS(1)

?ATAN(1)=PI()/4

.T.

Tipul sir de caractere

Definitie: Un sir de caractere reprezinta o multime ordonata de caractere tratata ca un tot unitar.

Într-un sir de caractere, ordinea acestora este esentiala, fiecarui caracter i se poate asocia un numar reprezentând pozitia acestuia în cadrul sirului (primul caracter va avea pozitia 1, al II-lea pozitia 2 etc)

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 lungimea data.

Constantele de tip sir de caractere se specifica prin multimea caracterelor care le compun, încadrate între apostrofuri sau ghilimele (la ambele capete trebuie sa avem acelasi tip).

Exemplu:

"Salut"    'Salut' corect

'Salut" "Salut' incorect

Observatie: pentru a include unul din cele doua delimitatoare într-un sir de caractere, multimea caracterelor ce alcatuiesc sirul va fi încadrata între delimitatorii de celalalt tip decât cel din sir.

Exemplu: "10'(zece minute)"

'10 "(zece secunde)'

Daca lungimea sirului este 0, obtinem sirul nul sau vid, care se specifica prin doua apostrofuri (sau ghilimele) consecutive, fara spatii sau alte caractere înre ele ("" sau '')

Asupra sirurilor de caractere se aplica doua tipuri de operatori:

Operatori de concatenare

Operatori de comparare sau relationali

Operatori de concatenare

Operatorul de concatenare simplu "+"

Operatorul de concatenare special "-"

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 sfârsitul primului

Exemplu:

"cursul"+"nr 2"

dupa evaluare va avea valoarea: cursul nr 2

Operatorul de concatenare special este asemanator cu operatorul de concatenare simplu, cu deosebirea ca blancurile de la sfârsitul primului sir sunt trecute la sfârsitul celui de al doilea

Exemplu:

"Salut "-" prieteni!"

dupa evaluare obtinem:

"Salut prieteni! "

Operatori de comparare sau relationali

Operatorii relationali sunt operatori binari ce testeaza daca doua siruri de caractere se afla sau nu într-o relatie data specifica operatorului.

Operatorii relationali sunt

Operatorul "inclus în" $ - returneaza adevarat daca primul sir de caractere este continut în cel de-al doilea, altfel returneaza fals.

Exemplu: "calcul"$'calculator' (A)

'calcule'$'calculator' (F)

Operatorul "mai mic decât" < returneaza adevarat daca expresia din stânga sa (de tip sir de caractere) este mai mica decât expresia din dreapta.

Compararea a doua siruri se face astfel: se ia primul caracter din fiecare sir si se compara prin codurile ASCII corespunzatoare. În caz de egalitate între cele doua coduri ASCII se trece la compararea codurilor ASCII ale caracterelor de pe pozitia doi a fiecarui sir. Daca lungimile celor doua siruri difera se poate considera ca sirul mai mic este completat cu 0 pâna la egalitatea lungimilor.

Functii pentru prelucrarea sirurilor de caractere

LEN() - returneaza lungimea unui sir de caractere

? LEN('Constanta')

SUBSTR() - extrage un subsir din cadrul unui sir. Aceasta functie primeste ca prim argument sirul din care se extrage subsirul. Al doilea argument trebuie sa fie o valoare numerica indicând pozitia din cadrul sirului de baza de la care începe extragerea subsirului (indica pozitia primului caracter al subsirului), iar cel de-al treilea argument semnifica lungimea sirului care se extrage.

?SUBSTR('ABCDEF',2,3)

BCD

LEFT()

RIGHT() - permit extragerea unui subsir din cadrul unui sir

Spre deosebire de SUBSTR() aceste functii nu primesc decât un singur argument numeric (pe lânga sirul asupra caruia se opereaza), argument care indica numarul de caractere de extras din sir.

Functia LEFT() extrage un subsir din partea stânga a sirului de baza (începând de la primul caracter al sirului de baza)

Functia RIGHT() extrage subsirul din partea dreapta a sirului de baza (începând de la ultimul caracter al sirului spre stânga)

Exemplu: ? LEFT('O noapte furtunoasa',8)

O noapte

?RIGHT('O zi ploioasa',8)

ploioasa

REPLICATE(); SPACE() - permite crearea unui sir de caractere dintr-un alt sir, prin repetarea acestuia de un numar de ori

REPLICATE() - returneaza un sir de caractere obtinut prin repetarea sirului primit ca argument de un numar de ori, numar dat de ori, numar specificat în al doilea argument.

Exemplu: ?REPLICATE('ma',2)

Mama

SPACE() - returneaza un sir de blancuri cu lungimea elaga cu numarul transmis ca parametru

Exemplu: ? " "==SPACE(6)

.T.

ALLTRIM() = elimina blancurile de la începutul si sfârsitul sirului de caractere, deci de la stânga si de la dreapta acestuia

LTRIM() - elimina blancurile de la începutul sirului, de la stânga lui

TRIM() si RTRIM() - elimina blancurile de la sfâsitul sirului transmis, de la dreapta lui

Exemplu: ?ALLTRIM(' TEXT ')

TEXT

?'Ma numesc ' +RTRIM(' Ionescu ')+' Daniel'

Ma numesc Ionescu Daniel

? 'si am '+LTRIM(' 20')+' ani'

si am 20 ani

Adaugarea de blancuri sau alte caractere la un sir, la dreapta sau la stânga    acestuia în scopul de a ajunge la o lungime data a sirului.

PADR() - completeaza sirul initial cu blancuri sau alte caractere la dreapta acestuia.

PADL() - completeaza cu blancuri la stanga sirului initial

PADC() - completeaza cu blancuri la ambele capete ale sirului initial (sirul initial este plasat în centrul sirului final)

Exemplu:?PADL('aliniat la dreapta',5,'-')

-----Aliniat la dreapta

?PADR('aliniat la stânga',5,'-')

Aliniat la stânga-----

? PADC('centrat', 5,'-')

-----centrat-----

LOWER() - transforma toate majusculele în litere mici, restul caracterelor ramânând neschimbate

UPPER() - transforma toate caracterele mici în majuscule corespunzatoare, restul caracterelor ramânând neschimbate

PROPER() - transforma primul caracter dintr-un cuvânt în majuscula iar urmatoarele în litere mici

A='Alfa'

?UPPER(a)

ALFA

B='ALfa'

?LOWER(b)

alfa

?PROPER('ioNeScu dAniel')

Ionescu Daniel

AT() - permite cautarea unui subsir în cadrul unui sir de caractere. Ea primeste ca argumente cele doua siruri (primul este cel cautat si cel de-al doilea cel în care se cauta), returnând pozitia la care s-a gasit subsirul în sir, sau zero în caz de negasire

?AT("Daniel", "Azi am vorbit cu Daniel la telefon")

.T.

OCCURS() - returneaza numarul de aparitii ale subsirului în cadrul sirului respectiv

?OCCURS("el", "Azi am vorbit cu Daniel la telefon")

Tipul data calendaristica

Datele stocate într-o baza de date caracterizeaza obiecte sau procese din lumea înconjuratoare, fie din punct de vedere static, fie din punct de vedere dinamic în evolutia lor în timp. Pentru memorarea si prelicrarea datelor calendaristice se foloseste tipul de date "data calendaristica".

În Foxpro, o constanta de tip data calendaristica se specifica prin luna, ziua si anul corespunzator, separate prin caracterul '/' si încadrate între acolade. Ordinea de specificare a zilei, lunii si anului sunt controlate de comenzi speciale ale limbajului. Implicit, anul se specifica prin doua cifre; ordinea este luna/zi/an, iar separatorul implicit este "/".

Formatul de specificare a datelor calendaristice este controlat de comanda SET DATE care poate primi unul din parametrii

AMERICAN (implicit) ll/zz/aa

ANSI    aa.ll.zz

BRITISH    zz/ll/aa

FRENCH    zz/ll/aa

GERMAN    zz.ll.aa

ITALIAN    zz-ll-aa

USA    ll-zz-aa

În specificarea anului se pot folosi doua cifre sau patru. Alegerea între aceste doua variante se face cu comanda SET CENTURY la care se adauga OFF pentru formatul de patru cifre sau ON pentru cel de doua cifre.

Data curenta a sistemului de operare se obtine prin functia DATE()

? DATE()

SET CENTURY ON

?DATE()

Ziua în cadrul lunii este returnata de functia DAY()

MONTH() - returneaza luna corespunzatoare unei expresii de tip data calendaristica

YEAR() - returneaza anul unei date calendaristice

? DAY()

?MONTH(DATE())

?YEAR(DATE())

?YEAR(DATE()+365)

GOMONTH() - primul parametru transmis functiei reprezinta data de la care se pleaca, iar cel de-al doilea numarul de luni cu care se avanseaza (sau devanseaza, în cadrul unui numar negativ)

? GOMONTH(,3)

?GOMONTH(,1)


Document Info


Accesari: 19810
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )