Conversii între tipurile de date de baza
Sunt impuse din considerente practice, cum ar fi, de exemplu, includerea într-o expresie a doua date de tipuri diferite, care, pentru a fi adunate, trebuie sa aiba acelasi tip.
De exemplu, daca avem o baza de date în care s-au memorat date referitoare la persoane si se doreste ordonarea acestor persoane dupa vârsta, la vârste egale criteriul de ordonare fiind numele (ordine alfabetica), atunci este nevoie a se converti vârsta (valoare numerica) în sir de caractere, care apoi este concatenat cu numele persoanei. Expresia astfel obtinuta este folosita pentru indexarea bazei de date respective, obtinându-se ordinea dorita.
În astfel de situatii si în multe altele este nevoie de conversia unei anumite date de la un tip la altul.
Trecerea de la tipul de data calendaristica la tipul sir de ca 151i85b ractere si invers.
DTOC()
DTOS() - ambele functii primesc ca argument o data calendaristica în care se furnizeaza data respectiva:
conform comenzii SET DATE, în cazul functiei DTOC()
în formatul AAAALLZZ, pentru functia DTOS() (varianta des folosita la indexarea tabelelor)
Exemplu
?DTOC()=='10/02/04'
.T.
?DTOS(DATE())
Compararea a doua expresii de tip data calendaristica se va reduce la compararea a doua siruri de caractere în formatul dat de functia DTOS().
Exemplu:
DATA1=
DATA2=
?DTOS(DATA1)
Numar - sir de caractere
Trecerea de la valori numerice la siruri de caractere se face cu functia STR() care primeste trei argumente numerice:
primul reprezinta expresia numerica de transformat
al doilea indica lungimea totala a sirului obtinut, incluzându-se punctul zecimal si partea fractionara
al treilea parametru semnifica numarul de cifre ce se vor folosi pentru partea fractionara a numarului
?STR(1432.456,12,4)
1432.456 '
?STR(1432.456,7,2)
Trecerea de la un sir de caractere la o valoare numerica, se obtine folosind functia VAL(). Aceasta functie primeste un sir de caractere si returneaza o valoare numerica. sirul respectiv trebuie sa reprezinte un numar (sa contina cifre, punctul zecimal, eventual semnul) altfel transformarea va fi eronata.
?VAL(' 1433.44 ')
?VAL('1A')
EVALUATE() - evalueaza expresia de tip sir de caractere primita ca parametru, returnând rezultatul obtinut. În functie de continutul sirului de caractere transmis ca parametru, rezultatul returnat de functie va fi de tip sir de caractere, numeric, data calendaristica sau logic.
?EVALUATE('6*3/2')
?EVALUATE(REPLICATE('1',4)+'/11')
?DATE()
?EVALUATE('DATE()+1')
EMPTY()= testeaza o expresie referitor la valoarea vida, nula a acesteia, semnificatia termenului "vida" diferind de la un tip de date la altul logic - F; numeric - 0; memo - fara continut; data calendaristica -
Functia primeste ca argument expresia a carei testare se realizeaza. Rezultatul este de tip logic (adevarat daca expresia este vida si fals în caz contrar)
MIN() ; MAX() - compara între ele mai multe expresii returnând informatii referitoare la aceasta comparatie. MIN() returneaza valoarea minima obtinuta dupa evaluarea expresiilor din lista. MAX() returneaza valoarea maxima.
?MIN(64,7*8,7*9)
?DATE()
?MAX(, DATE())==DATE()
(testeaza daca am depasit data de 2.03.04)
.T.
INLIST() - testeaza aparteneta la o multime. Aceasta returneaza adevarat daca prima expresie primita ca argument se încadreaza valoric între expresiile a doua si a treia, altfel returneaza fals. Toate expresiile din lista trebuie sa fie de acelasi tip (sir de caractere, numeric, logic sau data calendaristica)
Zi='luni'
?INLIST(zi,'luni','marti','miecuri')
.T.
?INLIST(7,0,2,4,6,8,10)
.F.
Def. Un tablou reprezinta o structura de date ce permite memorarea mai multor valori într-o zona de memorie continua, careia I se atribuie un nume si care poseda un mecanism specific de identificare a elementelor componente.
Un tablou poate fi referit ca un tot unitar cât si prin elementele sale componente, tratate ca variabile simple. El poate avea una sau mai multe dimensiuni, în functie de aceasta elementele componente fiind identificate prin unul sau mai multi indici. Când tabloul este unidimensional, el se numeste vector, iar când este bidimensional el devine matrice.
Declararea unui masiv presupune:
stabilirea tipului masivului (tabloului) - daca este vector, matrice sau tablou multidimensional
rezervarea zonei de memorie necesara depozitarii valorilor ce vor fi memorate în masiv, în functie de numarul de elemente ale acestuia si de tipul elementelor
atribuirea unui nume, prin care masivul va fi identificat
DIMENSION
DECLARE - permit declararea tablourilor
Aceste comenzi sunt urmate de o lista de declaratii de tablouri (separate prin vigula), fiecare dintre ele constând din numele masivului respectiv urmate de una sau doua valori incluse între paranteze patrate. În cazul prezentei între paranteze a unei singure valori tabloul va fi vector si reprezinta numarul total de elemente, iar în cazul a doua valori, tabloul va fi o matrice reprezentând numarul de linii si respectiv numarul de coloane ale matricei.
DIMENSION a[10] - defineste vectorul a cu 10 elemente numerotate de la 1 la 10
DIMENSION b[2,4] - declara matricea b cu 2 linii si 4 coloane
DECLARE vector [3], mat[5,10] - se definesc vectorul vector cu 3 elemente si matricea mat cu 5 linii si 10 coloane
Elementele masivului sunt identificate prin pozitia acestora în cadrul tabloului astfel:
printr-un singur numar, indicând pozitia elementului în cadrul vectorului
prin doua numere care vor desemna linia si coloana la care se afla elementul respectiv
a(5) - indica al 5-lea element al vectorului a
b(2,3) - indica elementele de pe linia 2 si coloana 3 a matricei b
Spre deosebire de alte limbaje FoxPro permite ca elementele masivului sa aiba tipuri diferite. Dupa declararea unui masiv, toate elementele acestuia vor fi de tip logic, având initial valoarea .F. Arât tipul, cât si valoarea unui element al tabloului pot fi schimbate printr-o instructiune de atribuire.
DIMENSION a [10]
a=0
Toate elementele masivului vor fi de tip numeric având initial valoarea 0.
Marimea si dimensiunea unui tablou creat anterior se pot schimba printr-o noua comanda DIMENSION sau DECLARE pentru redefinirea acestuia.
Se pot realiza astfel:
Marirea sau micsorarea dimensiunii unui tablou unidimensional
Transformarea unui tablou unidimensional într-unul bidimensional si invers
Redimensionarea unui tablou bidimensional
La marirea numarului de elemente ale acestora vechile elemente vor ramîâne neschimbate iar noile elemente vor fi de tip logic având initial valoarea F.
La micsorarea dimensiunii masivului elemetele care sunt în plus vor fi eliminate din memorie, iar celelalte vor ramâne neschimbate.
Numarul elementelor unui masiv, numarul liniilor sau numarul coloanelor acestuia se obtine prin functia ALEN() care primeste ca prim argument numele tabloului respectiv, iar ca al doilea argument o valoare numerica.
0 - pentru cazul în care dorim ca functia sa returneze numarul de elemente ale masivului
1 - când se cauta numarul de linii ale tabloului (sau numarul de elemente pentru vectori)
2 - când se doreste numarul de coloane ale masivului
DIMENSION a [3,5]
? ALEN(a,0)
?ALEN(a,2)
Inserarea unui element, a unei linii sau a unei coloane într-un masiv se realizeaza cu functia AINS(). Primul argument primit de functie este numele tabloului în care se doreste inserarea, iar cel de-al doilea reprezinta o valoare numerica a carei semnificatie depinde de tipul tabloului.
pentru vectori, functia va insera un nou element în pozitia data de valoarea numerica respectiva
pentru matrice, functia va insera o linie pe pozitia data de expresia numerica
daca dorim sa inseram o coloana, pe lânga cei doi parametrii se mai transmite si un al treilea, valoarea numerica 2.
Inserarea unui element,a unei linii sau a unei coloane într-un masiv nu va determina modificarea dimensiunii acestuia, ci pierderea elementelor care nu mai încap în masiv dupa ce inserarea a vut loc
a=(1,2,3,4,5)
AINS(a,3)
a=(1,2,F,3,4) valoarea 5 se pierde
ADEL() - sterge un element, o linie sau o coloana a unui masiv. Apelul functiei este asemanator. Valoarea parametruluidoi va indica elementul, linia sau coloana care se va sterge. Dupa stergere, celelalte elemente ale masivului sunt translatate, în vederea umplerii golului format, iar pe ultima pozitie (element, linie, coloana) se va introduce valoarea logica fals.
a=(1,2,3,4,5)
ADEL(a,3)
a=(1,2,4,5,F)
|