Sunteți pe pagina 1din 6

Modul de lucru program

SGBD-ul FoxPro reprezint un mediu integrat de dezvoltare a programelor utilizator, oferind un editor de texte pentru scrierea textelor surs, depanator, compilator i linkeditor. Se pot folosi ambele tehnici de programare: att programarea clasic, structurat i modular, ct i programarea orientat spre obiecte. Programele sunt vzute ca fiiere de comenzi (*.PRG). Apelul editorului se face prin comanda MODIFY COMMAND <fis.prg> Comanda deschide o fereastr de editare, folosit att pentru crearea ct i pentru modificarea programului surs recunoscut prin numele <fis.prg>. Fiierul rezultat are extensia implicit .prg. Salvarea se face cu CTRL+W. Lansarea programului n execuie (automat se face i compilarea) se face prin comanda DO <fis.prg> Programul este executat pn la terminarea fiierului sau pn la ntlnirea comenzii RETURN, care determin revenirea n fereastra de comenzi. Dac un fiier de comenzi este apelat din alt fiier de comenzi, spunem c este subprogram. Nu sunt diferene ntre construirea unui program i a unui subprogram. Prin comanda DO se caut fiierul de comenzi indicat, se deschide, se execut liniile acestuia, se nchide i se revine n programul apelant sau n fereastra de comenzi. n programe i numai n acest context se pot folosi i comenzile multilinie cum ar fi comanda IF din exemplul urmtor. USE ELEVI IF nume="albu" ? prenume ENDIF - deschide o tabel - test asupra numelui primei persoane - comanda de afiare a prenumelui - nchide structura

Dac este necesar fragmentarea comenzii, se va folosi semnul ; (punct i virgul). Nu exist separatori ntre comenzi. Lungimea maxim a unei linii de comand este de 1024 de caractere. Comentariile sunt introduse ntr-un program fie prin caracterul asterisc (*) la nceputul liniei, fie prin dublu ampersand (&&) n continuarea comenzii propriu-zise. FoxPro poate s apeleze comenzi DOS prin comanda ! / RUN Exemplu MODIFY COMMAND Salarii - deschide ecranul de proiectare Salarii.prg DO SALARII - compileaz i execut Salarii.prg ! DIR - afieaz lista fiierelor din directorul curent run erase salarii.prg - apeleaz comanda de tergere DOS 1. Variabile i masive Gestiunea variabilelor O variabil de memorie reprezint o modalitate prin care FoxPro depoziteaz i utilizeaz temporar date ntr-un program. Variabila de memorie reprezint o zon de memorie intern n care se memoreaz o dat (de tip character, numeric, logic etc.); atunci cnd se folosesc ntr-un program, variabilele trebuie create, deci li se atribuie un nume, un tip i o valoare. Numele variabilei este un ir de caractere alfanumerice. Tipul variabilei este atribuit acesteia odat cu valoarea. Atribuirea unei valori ntr-o variabil de memorie, se realizeaz cu operatorul = sau prin comanda STORE. STORE expr TO var sau var =expr Exemple: 1. x = 0 sau STORE 0 to x 2. STORE popescu TO alfa sau alfa = popescu

3.

a=0 b=0 sau STORE 0 to a,b Tablourile sau masivele de date sunt structuri statice neomogene. Pot avea maxim 2 dimensiuni. Masivele pot fi unidimensionale (se numesc vectori), respective bidimensionale (se numesc matrici). Crearea unui masiv se face prin atribuirea unui nume i prin precizarea nr. de elemente din vector, respective a nr. de linii i coloane din matrice. Declararea tablourilor: DIMENSION / DECLARE < tablou(dim1[,dim2])>,. > Iniializarea unui tablou se face odat cu declararea dimensiunii la valoarea .F. Alt iniializare global a tuturor elementelor unui tablou se poate face prin comanda STORE. O matrice se poate redimensiona fr ca prin aceast schimbare s i se reiniializeze componentele. Exemplu: 1. dimension a[2, 2] store 5 to a 2. dimension a[3, 3]

- o matrice ptrat 2x2 este iniializat pe valoarea 5 - redimensionare

Comenzi de lucru cu variabile <var>=<expresie> /STORE <exp> TO <lista-var> INPUT [<mesaj>] TO <var> ACCEPT [<mesaj>] TO <var> @ <r,c> GET<var> [PICTURE <sablon>] [DEFAULT<exp>][VALID <cond>] READ.

? <lista-expresii> AT <col> @ <r,c> SAY <exp> RELEASE <lista_var> / ALL [LIKE/EXCEPT <sablon>] SAVE TO <fis.mem> [ALL LIKE/EXCEPT <sablon> RESTORE FROM <fis.mem> [ADDITIVE] WAIT [<mesaj>] [TO <var>] [WINDOWS] [NOWAIT] =MESSAGEBOX(<mesaj>)

Se atribuie variabilei valoarea expresiei. Comanda Store permite atribuiri multiple. Comand de citire. Variabila primete valoarea i tipul expresiei introduse de la tastatur. Comanda de citire a unei variabile de tip caracter (definete variabila, in mod automat, ca fiind de tip caracter, indifernt de natura datelor introduse). Comanda de editare a unei variabile sau cmp al unei tabele la execuia comenzii READ. <r,c> specific poziia pe ecran a variabilei. PICTURE specific un ablon de editare. DEFAULT este valoarea iniial. VALID este condiia de validare. Permite afiarea expresiilor pe linia curent, ncepnd din coloana specificat. Afieaz valoarea expresiei <exp> ncepnd din punctul <r, c>. tergerea unei liste de variabile sau a tuturor sau a celor ce verific un ablon. Salvarea pe disc n fiierul .mem a variabilelor. Restaurarea prin suprascriere sau adugare a variabilelor din fiierul .mem n zona de lucru. Pauz n program cu afiarea unui mesaj (eventual ntr-o fereastr); tasta apsat este transmis variabilei <var>. Funcie pentru afiarea unui mesaj.

Lucrul cu imprimanta Sunt disponibile dou comenzi care direcioneaz efectul comenzilor de afiare ctre imprimant. Comanda SET PRINTER ON/OFF permite activarea/dezactivarea imprimantei.

Comanda SET DEVICE TO PRINTER/ TO SCREEN direcioneaz comanda ctre imprimant sau ecran. 2. Comenzi pentru introducerea formatat a datelor i pentru afiarea datelor pe ecran n Visual FoxPro, ecranul este mprit logic n 25 de linii i 80 de coloane; astfel, pot afiate maxim 2000 caractere pe ecran. Funcia ROW() returneaz un numr ce reprezint linia pe care se afl cursorul (practic, o valoare ntre 0 i 24). Funcia COL () returneaz un numr ce reprezint coloana pe care se afl cursorul (practic, o valoare ntre 0 i 79). Comanda SET DISPLAY TO CGA/COLOR/EGA25/EGA43/MONO/VGA25/VGA50 controleaz modul de lucru al monitorului. Grupul de comenzi SAY GET READ sunt folosite pentru operaiile de intrare i ieire. Exemplu: nume = .. CLEAR @10, 10 SAY introduceti numele dumneavoastra GET nume READ CLEAR ? salut, nume, ! Comanda SAY are ca efect afiarea datelor pe ecran, la coordonatele precizate prin linie, coloan. @<linie, coloan> SAY<variabil> [PICTURE <expC>] [FUNCTION <expC>] Observaie: Comanda SAY se folosete i pentru alte operaii: Comanda SET DEVICE TO SCREEN controleaz afiarea datelor pe ecran. Comanda SET DEVICE TO PRINTER controleaz afiarea datelor la imprimant. Comanda SET DEVICE TO FILE <fisier> controleaz afiarea datelor ntr-un fiier. FoxPro ofer posibilitatea introducerii datelor sub forma unor machete sau formate prin asocierea la clauza GET a clauzelor PICTURE i FUNCTION: @<linie, coloan> GET<variabil> [PICTURE <expC>] [FUNCTION <expC>] [RANGE expN1, expN2] [DEFAULT exp] [SIZE expN1, expN2] [VALID expL/expN[ERROR expC]] Comanda GET stabilete poriunea de pe ecran unde vor fi introduce, de la tastatur, valorile ce vor fi atribuite variabilei <variabil>; citirea propru-zis a datelor se face prin comanda READ. @ plaseaz cursorul pe poziia specificat a ecranului. PICTURE i FUNCTION permit formatarea afirii datelor, fiind folosite pentru formatul de citire/scriere. Ambele clauze sunt urmate de un ir de caractere care conine coduri referitoare la modul de afiare. Codurile PICTURE se refer doar la un anumit caracter din formatul de afiare i anume la cel de pe aceeai poziie cu cea a codului. Lungimea cmpului de afiare sau de citire este dat de lungimea irului din clauza PICTURE. Codurile FUNCTION acioneaz asupra tuturor caracterelor din formatul de afiare. Codurile clasei FUNCTION pot fi incluse n irul de coduri ale clasei PICTURE, cu condiia ca acestea s fie scrise primele i precedate de simbolul @. Clauzele PICTURE i FUNCTION pot aciona mpreun, dar FUNCTION este prioritar. Clauza SIZE determin dimensiunile regiunii de editare create pe ecran de ctre comanda GET. Efectul clauzei SIZE este influenat de prezena clauzei PICTURE n comanda GET, care, de asemenea, influeneaz dimensiunea cmpului de editare. Clauza VALID realizeaz testarea complet a corectitudinii noii valori la ieire. Aceast clauz accept ca parametru o expresie ce poate fi de tip logic sau numeric. Clauza RANGE permite verificarea domeniului admis pentru valoarea nou introdus, mai precis, se folosete pentru a alege ca elemente ale unei liste doar elementele dintr-o anumit poriune de masiv;

astfel, expN1 desemneaz elementul din masiv care se va ncrca primul, iar expN2 desemneaz numrul de elemente ale listei ce vor fi preluate din masiv. READ determin citirea coninutelor zonelor de editare pentru introducerea valorilor de la tastatur, create prin GET. Observaii: - GET i READ se folosesc obligatoriu mpreun, ns READ se scrie pe o singur linie. Comanda READ se poate flosi o singur dat pentru mai multe comenzi de tip GET. - Comenzile SAY i GET se pot scrie att pe linii diferite, ct si n cadrul aceleiai linii de comand. Codurile de formatare PICTURE X Permite orice caracter 9 Cifre i semnele + - . E (date numerice) # Cifre, spatii i semnele + - . E A Numai litere W Numai date logice N Numai litere i cifre Y Permite doar caracterele logice Y, y, N i n ! Literele sunt convertite n majuscule * Afieaz asterix-uri n locul zerourilor iniiale . Specific poziia punctului zecimal. Codurile de formatare FUNCTION A Permit numai caractere alfabetice (litere) B Aliniere la stnga I Centrare J Aliniere la dreapta C Dup un numr pozitiv se afieaz CR (credit) D Format dat calendaristic stabilit de SET DATE E Format dat calendaristic european (britanic) T Elimin spatiile de nceput i sfrit X Dup un numr negativ se afieaz DB (debit) Z Afieaz spatii dac valoarea cmpului este 0 ( Numerele negative sunt incluse ntre paranteze ! Literele sunt convertite n majuscule. Exemple: 1. citirea unui numr cu dou zecimale pe cmp de 7 caractere: a=0 @10,10 GET a PICTURE '9999.99' READ 2. citirea oricror caractere pe cmp de lungime 10: b=space(10) @10,10 GET b PICTURE REPLICATE ('X',10) READ 3. introducere cu majuscule: b=space(10) @10,10 GET b PICTURE REPLICATE ('!',10) READ 4. introducerea unei majuscule i a dou cifre cu centrare: .....PICTURE 'A99' FUNCTION 'I!'

5. urmtoarele machete de editare sunt echivalente: ..... PICTURE 'AAAAA' FUNCTION '!' ..... PICTURE 'XXXXX' FUNCTION 'A!' Activitatea de depanare a programelor Testarea sau depanarea dezvluie deficienele de proiectare i erorile de scriere, ceea ce pentru programator nseamn revenirea la faza de codificare, corectarea erorilor, recompilare, apoi relansarea n execuie pentru testare. Primul caz de depanare a avut loc cu muli ani n urm, cnd o insect a provocat defectarea ctorva componente din calculator. A aprut termenul de debugging=depanare, adic operaia de scoatere a hibelor (bugs=insecte) dintr-un program. Aplicaia informatic trebuie privit ca un ansamblu de componente care, chiar dac au fost proiectate vizual i suntem siguri c sunt corecte, trebuie asamblate i verificate n interdependenele dintre ele. Activitatea de testare este foarte important i este vzut ca o activitate distinct a procesului de dezvoltare. Se poate desfura conform unui plan. Unii programatori testeaz aplicaia doar la final. Alii prefer ca pe parcursul proiectrii s pun i problema testrii. Sunt dou abordri ale procesului de testare: a) orientat spre date: nu cunoatem modul de funcionare a programului, dar selectm o gam larg de date de test i rulm programul cu aceste date, observnd dac sunt obinute rezultatele, ieirile dorite. b) orientat spre funcia programului: cunoatem bine funcia realizat de program i urmrim trecerea controlului pe toate cile pe care poate evolua execuia programului. Etapele activitii de testare a. Pregtirea programului pentru testare: verificarea manual a modului de codificare a programului, urmrind respectarea restriciilor metodologice, alegerea notaiilor standardizate sau semnificative, adoptarea unor formulri clare, precise, utilizarea comentariilor; rularea pe calculator a programelor pentru depistarea i corectarea erorilor de compilare; adugarea unor secvene temporare, care permit controlul derulrii programului (mesaje suplimentare, stocarea rezultatelor intermediare ntr-un fiier de control etc); simularea modulelor lips din cadrul structurii programului, fie prin folosirea modulelor vide (nu execut niciun fel de prelucrare, prednd controlul programului apelant imediat ce au fost apelate), fie prin module de substituie (module simple cu caracter provizoriu care simuleaz funcia modulului respectiv). b. Pregtirea datelor de test are o deosebit importan, de aceast operaie depinznd n bun parte reuita testrii. Trebuie testate toate ramificaiile din program i toate combinaiile posibile ale acestora. Exist o serie de tehnici care permit generarea fiierelor de test sau programatorul trebuie s compun fiiere cu datele dorite. c. Testarea propriu-zis, adic rularea programului cu datele pregtite pentru test i verificarea rezultatelor obinute prin analiza fiierelor obinute dup prelucrare. Pentru analiza rezultatelor se pleac de la aceleai date i se efectueaz manual calculele, simulnd funcia programului, pentru a fi comparate cu ieirile din program. d. Testarea de ansamblu vizeaz asamblarea componentelor i constituirea datelor de test pentru toate funciunile modulelor programului, testarea propriu-zis a programului principal i comunicarea ctre eful de proiect a momentului de terminare a etapei. Tipuri de erori a) Erori de sintax. Sunt depistate la compilarea programului. Sistemul afieaz ntr-o fereastr de mesaje eroarea ntlnit. b) Erori logice. Sunt mai greu de depistat sau de remediat. Nu sunt detectate la compilare, ci la execuie. De exemplu: operaia de restaurare Restore chiar dac folosim clauza Additive poate determina tergerea vechilor variabile, dac au acelai nume;

deirea capacitii unui cmp numeric conduce la pierderea valorilor; expresii complicate, unde au fost inversate valorile etc.; alt eroare greu de detectat survine cnd lucrm cu mai multe zone i pointerul de fiier nu este bine gestionat. c) Erori de tip excepie. Sunt acele situaii care nu pot fi anticipate la testarea programului. De exemplu, mutarea unui fiier n alt director sau tergerea unui index care se face n afara aplicaiei pot conduce la prsirea pe caz de eroare a programului. Strategii de depanare Cnd survine o eroare n timpul execuiei programului, sistemul afieaz o caset de dialog coninnd mesajul i trei butoane: Ignore, Suspend, Cancel. Ignore ignor eroarea i continu programul (este cazul unor erori minore, cum ar fi inexistena unui set de culori). Suspend suspend execuia, las fereastra de editare deschis i cursorul plasat pe linia greit. Mediul este lsat intact. Operatorul ncearc corectarea i se revine cu comanda RESUME din fereastra de comenzi. Aceasta reexecut linia de la care a aprut eroarea. Este cazul unei erori mai grave, cum ar fi lipsa fiierului care trebuie deschis, dar care poate fi corectat manual, direct. Poate fi executat o comand de creare a unei tabele i apoi se poate reveni. Se pot deschide ferestrele de depanare Trace, Debug. Cancel anuleaz execuia programului, v plaseaz n fereastra de editare pe linia greit. Utilizarea instrumentului Debugger Utilitarul Debugger se apeleaz selectnd Tools, Debugger sau prin comanda SET STEP ON din fereastra de comenzi. Se deschide o fereastr cu un meniu principal, o bar cu butoane pentru selectarea direct a unor opiuni, cinci ferestre de lucru, fiecare cu meniuri contextuale. Principalele ferestre sunt: Fereastra Trace permite vizualizarea liniilor pe parcursul execuiei programului. Deschiderea unui program pentru vizualizare se face prin File, Open sau prin clic pe butonul cu acelai nume. Programul deschis trebuie s fie rulat n regim de depanare. Fereastra Watch permite urmrirea valorilor variabilelor, expresiilor. Adugarea rapid a unei variabile se face prin poziionarea pe variabil n fereastra Trace i tragere i plasare spre fereastra Watch. Fereastra Call stack permite vizualizarea stivei de apeluri a funciilor i procedurilor folosite n program. Fereastra Output este o fereastr special n care sunt afiate ieirile special destinate depanrii, prin intermediul comenzii DebugOut. Fereastra Local permite urmrirea variabilelor locale unui modul. Urmrirea execuiei unui program se poate face prin rularea acestuia linie cu linie i observarea efectelor asupra variabilelor, cmpurilor, tabelelor . Compararea valorilor expresiilor cu cele ateptate poate s conduc la depistarea erorii. Dac depistm o eroare i nchidem fereastra depanatorului, intrm n editarea sursei i facem modificarea.