Documente Academic
Documente Profesional
Documente Cultură
Manipularea datelor
a6 !peratori 5peratorii utili$ati pentru a crea expresii n Visual FoxPro sunt operatori aritmeticiA operatori relationali( operatori logiciA operatori speci,ici =irurilor de caractere : concatenare (9(") apartenenta :( etc( operatori speci,ici datelor calendaristice: adunare sau scadere numar de $ile dintr"o data calendaristica( compararea a doua date. 9xemplu< 1. Fie urmatoarele valori de tip caracter stocate n varia*ilele v# si v%: v#2 ,;niv. , .i v%2,+tefan Cel are, Expresia: - v#9v% va avea ca efect afi.area pe ecran a valorii , ;niv. +tefan Cel are, 8. Daca varia*ilele v# si v% au valorile urm0toare: v#2 , +tr. ;niv. , .i v%2%# Expresia: - v#9v% va avea ca efect afisarea pe ecran a unui mesa8 de eroare. b6 Comen2i Fiecare comand0 determin0 executarea unei ac/iuni. +intaxa generala a unei comen$i este: Verb <clau$a(=< clau$a =.. ;nde: ver* indica ac/iunea ce tre*uie executat0 iar clau$ele sunt op/ionale si furni$ea$0 informa/ii suplimentare legate de modul cum se va executa actiunea "aca o comanda este scrisa pe mai mult de o linieA atunci la s,arsitul ,iecarei linii intermedare se +a plasa simbolul B;C. %
+unt instructiuni de afisare si instructiuni pentru citirea de la tastatura. a) #nstructiuni de a,isare. Aceasta categorie de comen$i cuprinde urmatoarele instructiuni: 516 ( Expr1 &P#C.D/9 %od&format) ' &FDNC.#!N %od&format) '&%. n%olumn) &F!N. Nume&font &A'imens&Font) 9,ect< Afisea$a( pe ecran( valorile uneia sau mai multor expresii Visual FoxPro valide sau le tipareste la imprimanta( daca +1> P!?@>1! este pe 5@ ( conform valorilor clau$elor P?C>;!1( F;@C>?5@(etc. 5*s.: " clau$a A> <exp@#= defineste coloana unde se afisea$a <expr#=; b6 #nstructiuni de citire de la tastatura. 516 %CC9P. ()cExpr* ) .! )memvar* +e afisea$a pe ecran valoarea <c1xpr= dupa care se asteapta introducerea unui sir de caractere( de la tastatura( ce se atri*uie varia*ilei de memorie <memvar=. 586 #NPD. &?cExpr* ) .! )memvar* +e afisea$a pe ecran valoarea <c1xpr= dupa care se asteapta introducerea unei expresii de la tastatura( a carei valoare se atri*uie varia*ilei de memorie <memvar=. !bs.< " comanda cere o*ligatoriu introducerea unei expresii; " pentru introducerea constantelor de tip sir sau data calendaristica se vor folosi delimitatorii specifici (,(A(B C( resp. DE). 5E6 0%#. (()cExpr* + ,- )memvar*+ +e afisea$a pe ecran valoarea <c1xpr= dupa care se asteapta apasarea unei taste (fara <C!= a carei valoare se atri*uie varia*ilei de memorie <memvar=. +e utili$ea$a pentru oprirea temporara a executiei unui program pana la apasarea unei taste. 5F6 /9%" 9,ect< Activea$a mecanismul de cititre pentru toate instructiunile F... G1> active. 5*s.: " dupa executarea instructiunii !1AD( toate instructiunile F...G1> sunt de$activate( iar noile valori introduse se atri*uie varia*ilelor sau c4mpurilor specificate;
Exemplu: CLEAR Zi=SPACE(8) @ 3,1 SAY "Ce zi este astazi ? " ; GET zi FU CT!" "# L$%i,#a&ti,#ie&'$&i,()i,*i%e&i,Sa+,ata,-$+i%i'a"; #ESSAGE "S.ati$ .e%t&$ se/e'ta&e si a.)i E%te&" REA@ 0,1 SAY "Astazi este 1 " 2 zi 2 "? 3 a.asati ) tasta444" 5A!T "" '4
!nstructiuni de cautare a inregistrarilor intr$un tabel Cautarea secventiala intr"un ta*el pentru a gasi prima inregistrare care specificata se reali$ea$a cu comanda: L!C%.9 F!/ Expr &.cope) &01#L9 cond)
respecta conditia
?n ca$ de reu.it0( indicatorul de nregistrare se va po$i/iona pe nregistrarea respectiv0( func/ia F5;@D () va returna valoarea .>. iar functia 15F() va returna valoarea .F. &
?n ca$ contrar( indicatorul de inregistrari va fi po$itionat dupa ultima inregistrare( F5;@D () va returna valoarea .F. ( iar 15F() va returna valoarea .>.. ;rmatoarele inregistrari care verifica conditia data vor fi gasite folosind comanda C5@>?@;1. >estarea reusitei sau nereusitei cautarii se face cu functiile !1C@5()( F5;@D() si 15F(). Functia: F!DN"5&n/or01rea ' c,able1lias)6 !eturnea$a valoarea adevarat in ca$ul unei cautari reusite si valoarea fals in ca$ul unei cautari nereusite.
1xemplu: Cu a8utorul urmatarei secvente de cod sunt gasiti toti clientii din +uceava si se afisea$a numarul lor: "PE -ATA6ASE Pa&te%e&i USE C/ie%ti ST"RE 7 T" t)ta/ L"CATE F"R UPPER(/)'a/itate) = 8SUCEA*A8 -" 59!LE F"U -( ) t)ta/ = t)ta/ 2 1 C" T! UE E --" 5A!T 5! -"5 8T)ta/ '/ie%ti :i% S$'ea;a1 8 ; 2 LTR!#(STR(t)ta/)) "5A!T
d Extragerea informatiilor statistice din tabele +copul principal pentru care sunt create *a$ele de date il repre$inta o*tinerea in timp cat mai scurt a unor informatii cu privire la datele continute. Aceste informatii pot fi de natura diferita( mai detaliate sau mai sinteti$ate su* forma de liste( ta*ele sau simple valori( informatii statistice sau totali$atoare. ?n acest scop sunt folosite urmatoarele comen$i: (#) C!DN. &.cope) &F!/ lExpr1) &01#L9 lExpr2) .! Variabila " comanda numara inregistrarile care respecta conditia data intr"un anumit ta*el (cel activ). 1xemplu: ;+1 Clienti CH1A! C!DN. F!/ ;PP1!(localitate) 2 A+;C1AVAA to nrcl - nrcl 586 *DM &Expr) &.cope) &F!/ 9xpr1) &01#L9 Expr2) .! variab ' .! %//%$ nume&arr " face o insumare a campurilor numerice dintr"un ta*el. 9xemplu: SET -EFA T" -1<$%i;e&sitate<=e+a
"PE -ATA6ASE st)'$&i ST"RE 7 t) t)t>i%t& USE &$/a? SU# 'a%t @)& ti.)="!" T" t)t>i%t& CLEAR ? 8T)ta/ i%t&a&i1 8, t)t>i%t& CL"SE -ATA
(&6 %V9/%G9 &Expr)&.cope)&F!/ Expr1)&01#L9 Expr2).! Var ' .! %//%$ nume&arr " calculea$a media aritmetica a valorilor expresiilor din lista de expresii. 9xemplu< CL"SE -ATA6ASES
"PE -ATA6ASE T&a%za'tii USE ')+e%zi CLEAR %V9/%G9 'a%t>')+ TO +e:ia
? +e:ia
(I6 .!.%L .! Nume,abel !N Nume%amp &F#9L"* lista_campuri) &.cope) &F!/ lExpr1) &01#L9 lExpr2) " se va crea un nou ta*el( cu aceeasi structura cu ta*elul activ( in care se vor incarca inregistrari totali$atoare o*tinute din ta*elul curent. 9xemplu< USE C)+e%zi
! -EB " '):>@$&% TAG @$&%iz .!.%L .! @$&%>t)t " @$&%iz USE @$&%>t)t
H?+>
9N"C%*9 9,ect< +e executa %omenzii pentru prima lExpr cu valoarea .>. sau %omenzin21 daca toate lExpr au valoarea .F. si clau$a !.19/0#*9 exista. !bs.< " instructiunea nu se poate folosi de la prompter; " la prima evaluare adevarata a lExpr se executa %omenzii si apoi executia comen$ii se inc'eie; ;n efect asemanator se o*tine prin functia: ##F5lExprA eExpr1A eExpr26 9,ect< !eturnea$a valoarea o*tinuta prin evaluarea expresiei Expr1 daca lExpr este .>. sau returnea$a Expr2 daca lExpr este .F.. Cele % expresii nu tre*uie sa fie (o*ligatoriu) de acelasi tip. #nstructiuni de ciclare Ciclarea permite executarea uneia sau mai multor linii de cod de c4te ori este nevoie. +unt: " comen$i pentru *ucle cu un numar dat de pasi; " comen$i pentru *ucle cu un numar nedefinit de pasi. 516 "! 01#L9 lExpr %omenzi &L!!P) &9H#.) 9N""! 9,ect: 1xecuta %omenzi atita timp c4t lExpr este .>. 5*s.: " dupa fiecare executie a <grup instr.= se reevaluea$a < lExpr =; " daca lExpr este .F.( se executa comanda urmatoare lui 9N""!; " daca apare L!!P are loc o revenire fortata la inceputul ciclului; " daca apare 9H#. are loc o iesire fortata din *ucla. 586 *C%N &.cope) &F!/ lExpr1) &01#L9 lExpr2) %omenzi &L!!P) &9H#.) 9N"*C%N 9,ect< Permite parcurgerea ta*elului curent in ordinea indexului curent (daca este activat)( tinind cont si de conditiile din filtru. !bs.: " se refera doar la parcurgerea unui ta*el; " pointerul de inregistrari inaintea$a automat in ta*elul care era activ in momentul intrarii in *ucla; " optiunea H55P permite reluarea fortata a interatiei; " optiunea 1P?> permite terminarea fortata a instructiunii. 9xemplu< USE C/ie%ti AA -es'Ci:e ta,e/$/ '/ie%ti
CLEAR AA Ste&=e e'&a%$/ *C%N F!/ UPPER(/)'a/itate) = 8SUCEA*A8 ? '):>'/i,%$+e, +a%a=e&
9N"*C%N !bs.< 1xemplul determina afisarea tuturor codurilor( denumirilor si managerilor pentru toti clientii din +uceava. @u este o*ligatoriu sa pun o expresie logica in +CA@( ca$ in care ,scanarea, ta*elului se face pana la intilnirea 15F().
#ntrebari si exerci4ii
+e va crea( salva .i rula un program n Fox prin care : a) +e setea$0 drept director de lucru( directorul n care s"a salvat proiectul ( Anexa %); O
*) +e setea$0 componentele mediului astfel: (ve$i Anexa%) - pentru dat0( anul va fi afi.at pe I caractere( n format D Q; (ve$i Anexa%) - se activea$0 ceasul ; - se in'i*0 afi.area re$ultatelor comen$ilor pe ecran ( +1> >AHJ 5FF); c) se vor citi de la tastatur0 dou0 valori ce se vor atri*ui unor varia*ile (un .ir de caractere .i o valoare numeric0); d) se vor afi.a valorile citite la punctul anterior; e) se desc'ide *a$a de date; f) se desc'ide un ta*el; g) se folose.te mecanismul ad0ug0rii datelor prin program ( succesiunea de comen$i APP1 RHA@J .i !1PHAC1S.) pentru a ad0uga minim & nregistr0ri n ta*elul desc'is ') se sterge prima inregistrare din ta*el i) prin intermediul unei varia*ile de memorie numit0 3opt3 introdus0 de la tastatur0( care poate lua valori n mul/imea :',d,N,n ( se va folosi oricare din variantele ACC1P>( FS +AQ S G1> .i !1AD pentru citirea acesteia)( se va crea o structur0 de ramificare condi/ional0. ( ?F) a) pe una din ramuri (de ex( pentru D respectiv d) se desc'ide nc0 un ta*el ntr"o alt0 $on0 .i se sta*ilesc leg0turi temporare ntre cele dou0 ta*ele desc'ise dup0 care se va verifica func/ionalitatea leg0turilor prin afi.are (ex. intre Materiale .i Intrri cum ati facut la*oratorul trecut)) *) pe cealalt0 ramur0 folosindu"se una din structurile de ciclare ( D5 LM?H1 sau +CA@ ) se vor se modific0 valorile unuia dintre c4mpuri (!1PHAC1) 8) se vor num0ra nregistr0rile dintr"unul din ta*elele desc'ise; T) se afi.a$0 re$ultatul ; l) se nc'ide *a$a de date.
CM!(nExpr) U ntoarce caracterul asociat codului A@+? (numeric) specificat A+C (cExpr) U ntoarce codul A@+? al primului caracter (cel mai din st4nga) din expresia tip .ir de caractere furni$at0 ca parametru.
Functii re,eritoare la subsirurile de caractere
+;R+>!(cExpr( nPosStart B( NrCharIntoarseC) U ntoarce un su*.ir al .irului cExpr( care ncepe cu caracterul aflat n po$i/ia nPosStart .i care con/ine un num0r de caractere dat de NrCharIntoarse. Variante: H1F>(cExpr nExpr)Untoarce primele nExpr caractere din .irul cExpr (cele mai din st4nga) !?GM>(cExpr nExpr) " ntoarce ultimele nExpr caractere din .irul cExpr (cele mi din dreapta) %lte ,unctii: !1PH?CA>1(cExpr nExpr) U multiplic0 .irul de caractere cExpr de nExpr ori +PAC1(nExpr) U ntoarce un .ir de caractere compus din num0rul specificat de spa/ii Functii de eliminare a blancurilor: AHH>!? (cExpr) U elimin0 at4t spa/iile din st4nga .irului specificat( c4t .i pe cele din dreapta acestuia H>!? (cExpr) U elimin0 spa/iile din st4nga .irului specificat !>!? (cExpr) U elimin0 spa/iile din dreapta .irului specificat Functii re,eritoare la in,ormatii despre un sir de caractere H1@(cExpr) " ntoarcre lungimea .irului specificat ca parametru ?+D?G?>(cExpr) U ntoarce valoarea logic0 .>. dac0 cel mai din st4nga caracter din .irul specificat ca parametru este o cifr0 (3"X) ?+HAHPMA(cExpr) " ntoarce valoarea logic0 .>. dac0 cel mai din st4nga caracter din .irul specificat ca parametru este o liter0 ?+H5L1!(cExpr) " ntoarce valoarea logic0 .>. dac0 cel mai din st4nga caracter din .irul specificat ca parametru este o liter0 mic0 ?+;PP1!(cExpr) ntoarce valoarea logic0 .>. dac0 cel mai din st4nga caracter din .irul specificat ca parametru este o liter0 mare Functii re,eritoare la trans,ormarea sirurilor de caractere H5L1!(cExpr) " ntoarce .irul cExpr scris n ntregime cu litere mici ;PP1!(cExpr) " ntoarce .irul cExpr scris n ntregime cu litere mari P!5P1!(cExpr)3 ntoarce .irul cExpr scris su* forma unui nume propriu
Functii re,eritoare la date calendaristice
DA>1() " furni$ea$0 data curent0 a sistemului; D5L(dExpr) " returnea$0 num0rul $ilei din cadrul s0pt0m4nii pentru data specificat0; CD5L(dExpr) " returnea$0 numele $ilei din saptamana pentru data specificata; DAQ(dExpr) " returnea$0 num0rul $ilei din cadrul lunii pentru data specificata; 5@>M(dExpr) C 5@>M(dExpr) " returnea$0 num0rulYnumele lunii pentru data specificat0; Q1A!(dExpr) " returnea$0 anul pentru data specificata; Func4ii pentru controlul timpului< >? 1(!nExpr") " returnea$0 un sir de caractere de lungime Z( in formatul MM: :++ ce repre$inta ora exacta a sistemului; Functie care +eri,ica daca o expresie e+aluata este +ida sau nu 1 P>Q(eExpression) Functii de con+ersie " din grade n radiani si invers D>5!(nExpr) !>5D(nExpr) Z
" transformarea unei date calendaristice intr"un sir de caractere D>5C (dExpr) D>5+ (dExpr) DQ (dExpr); D Q (dExpr) " transformarea unui sir de caractere in data calendaristica C>5D (c1xpr) "transformarea valorilor numerice in .iruri de caractere +>!(nExpr B( n#en$th B( nDecimalPlacesCC) "transformarea .irurilor de caractere in valori numerice VAH(cExpr)