Sunteți pe pagina 1din 174

UNIVERSITATEA CONSTANTIN BRANCUI DIN TRGU JIU FACULTATEA DE TIINE ECONOMICE I GESTIUNEA AFACERILOR DEPARTAMENTUL PENTRU NVMNT LA DISTAN

Lector univ. dr. CARINA-ELENA STEGROIU

PROGRAMAREA CALCULATOARELOR

pentru uzul studenilor ID

Editura Academica Brncui Trgu Jiu, 2011


1

Refereni tiinifici:
Prof. univ. dr. BABUCEA GABRIELA Prof. univ. dr. BONCEA AMELIA

Cuprins
INTRODUCERE....................................................................................................................... 6 MODULUL 1 .............................................................................................................................. 8
UNITATEA 1 INTRODUCERE N PROGRAMARE ............................................................. 9 U1.1. Scopul i obiectivele unitii .............................................................................................. 9 U1.2. Introducere n programare .................................................................................................. 9 U1.3. Noiuni de programare ...................................................................................................... 10 U1.4. Mediu de programare ....................................................................................................... 14 U1.5. Test de autoevaluare nr. 1 ................................................................................................. 17 U1.6. Rezumat ............................................................................................................................ 17 Bibliografie minimal ................................................................................................................ 17 Rspunsuri i comentarii la testul de autoevaluare nr. 1 ............................................................ 17 UNITATEA 2 TIPURI DE LIMBAJE DE PROGRAMARE ................................................ 18 U2.1. Scopul i obiectivele unitii ............................................................................................ 18 U2.2. Noiuni introductive ......................................................................................................... 18 U2.3. Limbajele de nivel sczut - de nivel nalt ......................................................................... 19 U2.4. Limbaje procedurale / neprocedurale ............................................................................... 21 U2.5. Limbaje orientat ............................................................................................................... 23 U2.6. Limbaje concurente .......................................................................................................... 24 U2.7. Test de autoevaluare nr. 2 ................................................................................................. 24 U2.8. Rezumat ............................................................................................................................ 24 Bibliografie minimal ................................................................................................................ 25 Rspunsuri i comentarii la testul de autoevaluare nr. 2 ............................................................ 25 UNITATEA 3 LIMBAJE DE PROGRAMARE...................................................................... 26 U3.1. Scopul i obiectivele unitii ............................................................................................ 26 U3.2. Abordri conceptuale ....................................................................................................... 26 U3.3. Limbaje de nivel nalt neorientate .................................................................................... 28 3.3.1. Basic ............................................................................................................................ 28 3.3.2. Fortran ......................................................................................................................... 29 3.3.3. Pascal ........................................................................................................................... 30 3.3.4. Pascal for Windows ..................................................................................................... 32 3.3.5. Limbajul C ................................................................................................................... 33 3.3.6. ADA ............................................................................................................................ 34 U3.4. Test de autoevaluare nr. 3 ................................................................................................. 36 U3.5. Rezumat ............................................................................................................................ 36 Bibliografie minimal ................................................................................................................ 36 Rspunsuri i comentarii la testul de autoevaluare nr. 3 ............................................................ 36 UNITATEA 4 LIMBAJE ORIENTATE PE GESTIUNEA BAZELOR DE DATE ............ 37 U4.1. Scopul i obiectivele unitii ............................................................................................ 37 U4.2. Limbaje orientate de gestiunea bazelor de date ................................................................ 37 U4.3. Caracteristici definitorii S.G.B.D.-uri clasice ................................................................... 39 U4.4. Tipuri de SGBD: DBASE, PARADOX, FOX ................................................................. 41 U4.5. Test de autoevaluare nr. 4 ................................................................................................. 43 U4.6. Rezumat ............................................................................................................................ 43 Bibliografie minimal ................................................................................................................ 43 Rspunsuri i comentarii la testul de autoevaluare nr. 4 ............................................................ 43

MODULUL 2 ............................................................................................................................ 44
UNITATEA 5 REZOLVAREA PROBLEMELOR ECONOMICE CU AJUTORUL PROGRAMELOR PE CALCULATOR ......................................................... 45 U5.1. Scopul i obiectivele unitii ............................................................................................ 45 3

U5.2. Programare ....................................................................................................................... 45 U5.3. Noiuni de baz specifice procesului de prelucrare automat a datelor ............................ 46 U5.4. Test de autoevaluare nr. 5 ................................................................................................. 49 U5.5. Rezumat ............................................................................................................................ 49 Bibliografie minimal ................................................................................................................ 50 Rspunsuri i comentarii la testul de autoevaluare nr. 5 ............................................................ 50 UNITATEA 6 NOIUNI DE BAZ REFERITOARE LA PROGRAMARE...................... 51 U6.1. Scopul i obiectivele unitii ............................................................................................ 51 U6.2. Noiuni de baz referitoare la programare ........................................................................ 51 U6.3. Problematica general a limbajelor de programare .......................................................... 57 U6.3. Test de autoevaluare nr. 6 ................................................................................................. 59 U6.4. Rezumat ............................................................................................................................ 60 Bibliografie minimal ................................................................................................................ 60 Rspunsuri i comentarii la testul de autoevaluare nr. 6 ............................................................ 60 UNITATEA 7 ELEMENTELE DE BAZ ALE PROGRAMRII ORIENTATE PE OBIECTE .......................................................................................................... 61 U7.1. Scopul i obiectivele unitii ............................................................................................ 61 U7.2. Abordare conceptual ....................................................................................................... 61 U7.3. Test de autoevaluare nr. 7 ................................................................................................. 65 U7.4. Rezumat ............................................................................................................................ 65 Bibliografie minimal ................................................................................................................ 66 Rspunsuri i comentarii la testul de autoevaluare nr. 7 ............................................................ 66

MODULUL 3 ............................................................................................................................ 67
UNITATEA 8 LIMBAJUL DE PROGRAMARE VISUAL BASIC ..................................... 68 U8.1. Scopul i obiectivele unitii ............................................................................................ 68 U8.2. Caractersticile generale ale mediului integrat de dezvoltare Visual Basic ...................... 68 U8.3. Componentele de baz ale mediului integrat de dezvoltare Visual Basic ........................ 70 U8.4. Test de autoevaluare nr. 8 ................................................................................................. 73 U8.5. Rezumat ............................................................................................................................ 73 Bibliografie minimal ................................................................................................................ 74 Rspunsuri i comentarii la testul de autoevaluare nr. 8 ............................................................ 74 UNITATEA 9 PROIECTAREA APLICAIILOR N LIMBAJUL VISUAL BASIC ........ 75 U9.1. Scopul i obiectivele unitii ............................................................................................ 75 U9.2. Proiectarea aplicaiilor n limbajul Visual Basic .............................................................. 75 9.2.1. Fiierul proiect ............................................................................................................. 76 9.2.2. Crearea interfeei aplicaiei .......................................................................................... 78 9.2.3. Precizarea proprietilor .............................................................................................. 84 9.2.4. Scrierea codului ........................................................................................................... 86 9.2.5. Execuia aplicaiei informatice n Visual Basic ........................................................... 89 U9.3. Elementele limbajului de programare Visual Basic ......................................................... 89 9.3.1. Unele reguli de scriere ................................................................................................. 89 9.3.2. Tipuri de date............................................................................................................... 91 9.3.3. Variabile i constante .................................................................................................. 92 9.3.4. Constante simbolice utilizate n Visual Basic.............................................................. 94 U9.4. Test de autoevaluare nr. 9 ................................................................................................. 94 U9.5. Rezumat ............................................................................................................................ 94 Bibliografie minimal ................................................................................................................ 95 Rspunsuri i comentarii la testul de autoevaluare nr. 9 ............................................................ 95

MODULUL 4 ............................................................................................................................ 96
UNITATEA 10 FOXPRO .......................................................................................................... 97 U10.1. Scopul i obiectivele unitii .......................................................................................... 97 U10.2. Prezentare general FOXPRO ........................................................................................ 98 U10.3. Intrarea i ieirea din FoxProW. Mediul FoxProW. Elemente de interfa .................. 103 4

U10.4. Tipul logic .................................................................................................................... 104 U10.5. Tipul numeric ............................................................................................................... 105 U10.6. Tipul ir de caractere .................................................................................................... 109 U10.7. Tipul memo .................................................................................................................. 112 U10.8. Tipul dat calendaristic ............................................................................................... 112 U10.9. Baze de date ................................................................................................................. 116 10.9.1. Crearea unei baze de date. Structura unei baze de date ........................................... 117 10.9.2. Deschiderea i nchiderea unei baze de date ............................................................ 118 10.9.3. Manipularea structurii unei baze de date ................................................................. 118 10.9.4. Manipularea cmpurilor unei baze de date .............................................................. 118 10.9.5. Vizualizarea coninutului unei baze de date ............................................................ 119 U10.10. Cmpurile memo ........................................................................................................ 121 U10.11. Meniuri ....................................................................................................................... 122 10.11.1. Comenzi pentru lucrul cu meniuri ......................................................................... 123 10.11.2. Funcii referitoare la meniuri ................................................................................. 137 U10.12. Programe. Execuia programelor ................................................................................ 138 10.12.1. Proceduri i funcii definite de utilizator ............................................................... 140 10.12.2. Variabile globale i variabile locale ...................................................................... 142 10.12.3. Transferul de parametri la i de la module de program ......................................... 143 10.12.4. Compilarea ............................................................................................................ 145 10.12.5. Depanarea programelor i tratarea erorilor ............................................................ 146 U10.13. Programarea structurat .............................................................................................. 149 U10.14. Lucrul cu fiiere.......................................................................................................... 154 U10.15. Test de autoevaluare nr. 10 ......................................................................................... 157 U10.16. Rezumat ...................................................................................................................... 157 Bibliografie minimal .............................................................................................................. 157 Rspunsuri i comentarii la testul de autoevaluare nr. 10 ........................................................ 158 UNITATEA 11 TURBO PASCAL ......................................................................................... 159 U11.1. Scopul i obiectivele unitii ........................................................................................ 159 U11.2. Noiuni introductive ..................................................................................................... 159 U11.3. Elemente de baz ale limbajului Turbo Pascal ............................................................. 161 U11.4. Mediul de programare Turbo Pascal ............................................................................ 162 11.4.1. nceperea sesiunii de lucru Turbo Pascal ................................................................. 163 11.4.2. Principalele elemente ale ferestrei de editare .......................................................... 164 11.4.3. Salvarea pe disc a programului surs ....................................................................... 164 11.4.4. Editarea unui program surs Pascal ......................................................................... 164 11.4.5. Compilarea programului editat ................................................................................ 166 11.4.6. Corectarea erorilor sintactice ................................................................................... 167 11.4.7. Execuia programului .............................................................................................. 167 11.4.8. Trecerea la editarea unui alt program ...................................................................... 168 11.4.9. Crearea unei variante a unui program existent ........................................................ 169 11.4.10. Obinerea informaiilor ajuttoare ......................................................................... 169 11.4.11. ncheierea sesiunii de lucru ................................................................................... 170 11.4.12. Unitile lexicale ale limbajului PASCAL............................................................. 170 U11.5. Test de autoevaluare nr. 11 ........................................................................................... 173 U11.6. Rezumat ........................................................................................................................ 173 Bibliografie minimal .............................................................................................................. 174 Rspunsuri i comentarii la testul de autoevaluare nr. 11 ........................................................ 174

INTRODUCERE
Scopul cursului:
n mai puin de o generaie, revoluia informaiei i introducerea calculatoarelor n fiecare dimensiune a societii, a schimbat lumea. Prediciile unor futuriti ca Marshall McLuhan i Alvin Toffler se adeveresc i lumea se transform ntr-un sat global, unde nu mai exist granie pentru afaceri, comunicaii sau comer. Putem considera c un nou tip de economie i-a marcat prezena la nivel planetar. Ea poate fi catalogat, att ca o economie informaional, o economie bazat ns pe cunotine, ct i ca una global. Este informaional deoarece productivitatea i competitivitatea agenilor economici depind n mod esenial de capacitatea lor de generare, tratare i aplicare a unei informaii eficace bazate pe cunoatere. Este i global deoarece activitile cheie, de producie, consum i distribuie, precum i componentele lor (capitalul, fora de munc, materiile prime, informaiile, tehnologiile, pieele) sunt organizate la scar planetar. Informaional i global, n acelai timp, ntruct n noile condiii istorice, productivitatea ea natere i concurena se exprim ntr-o reea global de fenomene ce interacioneaz. Emergena unei noi paradigme tehnologice organizate n jurul noilor tehnologii ale informaiei, mult mai puternice i mai suple, permit chiar informaiei s devin produs al procesului de producie. Astfel a aprut aa numita economie n reea, profund independent, care devine din ce n ce mai capabil de a aplica progresele tehnologiei sale, cunoaterii i gestiunii sale. Peter Drucker descrie curentul actual, pe care-l consider aprut n anii 60 i continuat pn n 2020: Intrm ntr-o societate a cunoaterii, n care resursa economic principal nu mai este capitalul sau munca, ci cunoaterea i n care lucrtorii inteligeni vor juca un rol central. Dac n ultimii ani se vorbea despre tipul de societate postindustrial, n care se remarca trecerea n special de la industrie ctre servicii, pentru secolul XXI lucrurile sunt relativ simple: se va trece de la activiti bazate pe informaii, la activiti baz ate pe cunotine i putem aprecia c dac secolul XX a fost unul al tehnicii, secolul XXI va fi cu siguran al cunoaterii. Volumul de fa se adreseaz cu precdere studenilor de la forma de nvmnt la distan ai Facultii de tiine Economice i Gestiunea Afacerilor din cadrul Universitii Constantin Brncui Trgu Jiu, dar poate fi deosebit de util oricrui student indiferent de forma de nvmnt pe care o urmeaz avnd n vedere c n aceast lucrare sunt tratate noiunile de baz ale biroticii cu cea mai larg aplicabilitate n aa manier nct studentul parcurgnd materialul s-i poat nsui obiectul i metoda acestei discipline cu o deosebit aplicabilitate n viaa economic i social. Modul n care a fost gndit i pus n practic f ace din acest volum un suport metodologic pentru disciplina Programarea Calculatoarelor, dar i un instrument de lucru necesar att n nelegerea i nsuirea acestei discipline prin prezentarea concis a noiunilor urmat de exemple practice, dar i pentru consolidarea acestora prin testele de autocontrol propuse. Coninutul lucrrii a fost structurat pe 4 module divizate n 14 uniti de studiu care cuprind obiectivele nvrii, sinteze de noiuni teoretice i exemple ilustrative, rezumate, concluzii i teste de autoevaluare.
6

O unitate de nvare, acoperind n medie 2-3 ore de studiu individual, se constituie practic ca o succesiune de sarcini de nvare, n care un rol determinat revine autoevalurii dorind astfel s dezvoltm capacitatea de studiu individual i s dm posibilitatea studentului ID ca, dei lipsit de explicaiile profesorului, s dobndeasc cunotine i competene de aceeai calitate i n aceeai cantitate cu cele ale studenilor de la forma de nvmnt zi. Parcurgnd prezentul material ne dorim s dobndii capaciti privind explicarea i interpretarea la un nivel elementar a tehnicilor, conceptelor i sistemelor pentru prelucrarea automat a informaiei sub forma unor sisteme raional argumentate, interpretarea contextual, la un nivel elementar, a rezultatelor obinute n urma unui proces de analiz informatic a fenomenelor economice. Testele de autoevaluare care sunt incluse pe parcursul fiecrei uniti de studiu au rolul de a v testa atingerea obiectivele propuse. Aceste exerciii de autotestare mpreun cu rspunsurile/rezolvrile/indicaiile incluse la sfritul unitii respective ncearc s v ajute n activitatea de autotestare, activitate prin care v putei da seama dac ai atins obiectivele propuse la nceputul unitii de studiu, sau nu. n sperana c vom parcurge mpreun un drum plcut, interesant, dar mai ales util, autorul acestui curs v dorete succes n acumularea corect i rapid a cunotinelor necesare utilizrii unui calculator personal.

Obiectivele cursului:
Cursul intitulat Programarea Calculatoarelor are ca obiectiv principal familiarizarea studentului cu noiunile de baz ale programrii, precum i studiul componentelor sistemelor de calcul automat i prelucrarea automat a datelor care preia treptat toate sarcinile tehnologiei informaiei dintr-un sistem economicosocial privind elaborarea de metode, tehnici, concepte i sisteme pentru prelucrarea automat a informaiei. n acest sens, la sfritul acestui curs, vei fi capabili s: explicai i s interpretai la un nivel elementar conceptele, abordrile limbajelor de programare aplicate n economie; realizai la nivel acceptabil anumite programe care s redea o parte din activitatea economic a unui agent economic; utilizai concepte, teorii, modele i metode elementare specifice programrii calculatoarelor, pentru rezolvarea de probleme practice ale domeniului de studiu; modelai fenomene economice cu un grad de complexitate sczut; interpretai contextual, la un nivel elementar, rezultatele obinute n urma unui proces de prelucrare a datelor economice.

Timpul alocat:
Durata medie de studiu individual a coninutul cursului - 22 ore(I) Activiti de laborator 11 ore (AA)

Evaluarea:
Temele de control vor avea o pondere de 30% n nota final, restul reprezint 60% nota la testul de verificare a cunotinelor de la examenul programat n sesiunea de examene i 10% accesarea platformei e-learning.

MODULUL 1
UNITATEA 1: UNITATEA 2: UNITATEA 3: UNITATEA 4: Introducere n programare Tipuri de limbaje de programare Limbaje de programare Limbaje orientate pe gestiunea bazelor de date

UNITATEA 1 INTRODUCERE N PROGRAMARE

Durata medie de studiu individual - 2 ore

Cuprins:
U1.1. Scopul i obiectivele unitii ............................................................. U1.2. Introducere n programare .............................................................. U1.3. Noiuni de programare ..................................................................... U1.4. Mediu de programare ....................................................................... U1.5. Test de autoevaluare ......................................................................... U1.6. Rezumat ............................................................................................. Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag.
9 9 10 14 17 17 17 17

U1.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: scrierea programului (ntr-un anumit limbaj de programe); compilarea programului; editarea de legturi (link-editarea); execuia programului; eventuala depanare a sa, relund procedeul de la etapa a); mbuntirea performanelor programului.

U1.2. Introducere n programare


Fr intenia de a leza temerarii angajai n acest domeniu trebuie s constatm c varietatea soft-ului pentru PC-uri este imens, iar performanele atinse sunt incredibile. Meninerea n aceast curs necesit echipe de specialiti pregtii temeinic i eforturi deosebite - ntinse pe perioade de luni sau chiar ani de zile. Deci, nu v ateptai ca dup parcurgerea acestui capitol s putei aborda realizarea unui program (pachet de programe) care s rivalizeze cu cele deja prezentate. Posibilitile unui singur programator sau a unei echipe restrnse sunt mult mai modeste. Dac aa stau lucrurile, este oare nevoie s programm? Sau trebuie s apelm ntotdeauna la firme specializate?
9

n practic intervin frecvent cazuri n care este necesar construirea unui program deoarece orict de generoas ar fi familia aplicaiilor deja disponibile este imposibil a acoperi infinitatea situaiilor concrete. Aceste situaii inedite nu se refer la noi tipuri de probleme sau la revoluionarea modului de lucru, ci n general, la modeste adaptri. Iat cteva situaii n care efortul de programare i dovedete pe deplin utilitatea; -adaptarea unui program (editor de texte) la specificul naional (caracter ele romneti: , , , , ); -prelucrri sumare ale datelor (conversii, prelucrare efectiv); -extinderea unei aplicaii cu module proprii; -construirea unei aplicaii cu nalt grad de particularitate etc. Un programator va putea rezolva o situaie neplcut de acest gen nefiind restrns la gama de operaii oferite ntr-un pachet. n general, ns, nu pot fi abordate proiecte ample, ci doar operaii punctuale. Iar pentru ducerea la bun sfrit a unui astfel de proiect restrns sunt necesare cunotine tehnice i studiu mult mei aprofundat dect cel a unui simplu utilizator. Dac totui trebuie s programm, atunci s programm bine i eficient. S nu ne apucm s reinventm gramafonul cnd acum muzica se ascult pe compact - discuri. Deci mai nti trebuie trecut n revist soft-ul deja existent i doar n cazul n care acesta nu este suficient s ne construim propriile programe. Iar atunci cnd abordm o aplicaie s alegem cea mai performant dintre uneltele disponibile.

U1.3. Noiuni de programare


Prezentarea amnunit a acestor noiuni se face pe baza schemei principiale de realizare a unui program. Invariabil, etapele necesare de parcurs sunt urmtoarele: scrierea programului (ntr-un anumit limbaj de programe); compilarea programului; editarea de legturi (link-editarea); execuia programului; eventuala depanare a sa, relund procedeul de la etapa a); mbuntirea performanelor programului.
10

a) Scrierea programului presupune editarea unui fiier ce conine textul programului. Acest fiier se cheam fiier-surs i este - dup cum am menionatun fiier cu text n format ASCII. n interiorul su el conine instruciuni ale limbajului n care se face programarea. Un limbaj de programare este foarte asemntor limbajului obinuit (natural); el reprezint un sistem de convenii pe baza cruia se efectueaz o comunicare. Deci limbajul de programare este un sistem de cuvinte (cheie), semne, construcii cu cuvinte i semne care ne asigur de faptul c transmitem calculatorului ceea ce dorim s realizeze. b) Propoziiile i frazele unui limbaj de programare nu sunt direct nelese de calculator. Ele sunt traduse din aceast form uor manevrabil n instruciuni main (singurele recunoscute de microprocesor) de ctre un program ce se cheam compilator. Acest program recunoate noiunile din fiierul-surs i le convertete n echivalenele lor n limbaj main pe care le depune ntr-un fiier de ieire numit fiier-obiect. c) Fiierul-obiect produs de un compilator nu este, nc, gata de a fi executat necesitnd o prelucrare suplimentar a crei raiune va fi prezentat n continuare. Dac fiierele-surs ar fi traduse ca atare ele ar putea conine mult informaie redundant. Spre exemplu, s considerm un program care printre altele scrie mesaje pe monitorul calculatorului. Dac fiecare instruciune din fiierul-surs ar produce instruciuni care realizeaz scrierea unui mesaj aceast poriune de cod s-ar gsi repetat (cu mici modificri) n mai multe locuri din program. Pentru nlturarea unui astfel de lucru nedorit, operaiile cel mai des folosite sunt izolate ntr-o colecie de rutine de unde pot fi apelate oricnd este nevoie. Deci, dup compilare, fiierul-obiect produs nu va conine ntotdeauna instruciunile necesare unei operaii ci eventuale referiri la rutina de bibliotec ce execut operaia n cauz.

11

Figura 1. Compilarea unui program

Figura 2. Compilarea i link-editarea corect Editarea de legturi (link-editarea) va rezolva aceste referiri stabilind conexiunile dintre referiri i punctele referite. Ea va conecta referinele nerezolvate de compilator cu modulele de bibliotec ce le corespund. Din colecia de rutine (denumit bibliotec) vor fi extrase numai aceste rutine (module) referite care mpreun cu instruciunile din fiierul-obiect vor constitui un program coerent. adic un fiier-executabil. d) Execuia programului este scopul final al etapelor anterioare i presupune lansarea fiierului-executabil astfel obinut. Pentru aceast operaie sunt eventual necesare: -ndeplinirea unor cerine din partea sistemului; -specificarea de parametri corespunztori pentru program. e) n cazul unui program mai amplu sau n cazul unui debut n programare va fi ntotdeauna necesar depanarea programului obinut deoarece (fr gre) acesta nu va funciona din prima. Pentru depistarea eventualelor erori stau la dispoziie pachete de programe numite depanatoare.

12

f) Dup ce programul a fost convins s funcioneze corect, abia atunci este cazul a ncerca mbuntirea performanelor sale (vitez de execuie, resurse sistem mai reduse, protejare la erori). Pentru acest reglaj fin stau la dispoziie programe de tip profiler care detecteaz zonele de programe ce consum cele mai mari cantiti de timp, punctele n care trebuie s se concentreze atenia programatorului. De regul se obinuiete a se lansa o versiune de test (versiunea beta) a aplicaiei care este exploatat efectiv pentru a se constata eventualele erori de funcionare. n concluzie schema de dezvoltare a unei aplicaii este urmtoarea:

Figura 3. Etapele realizrii unui program Etapele de compilare i link-editare sunt necesare pentru realizarea unui program compilat. Se pot executa aplicaii i fr producerea fiierelor obiect i executabil. Metoda folosit este cea a unui interpretor. Un interpretor, compileaz, link-editeaz i execut un program linie-culinie. Pe msur ce sunt citite linii din fiierul-surs ele sunt transformate n instruciuni main i executate imediat. Pentru un program dat, un interpretor nu mai produce fiierele-obiect i executabil, opernd numai cu fiierul-surs. Care din metode este mai bun, cea a unui compilator sau cea a unui interpretor? Pentru interpretor pledeaz un singur avantaj i anume reducerea timpului de punere la punct a unei aplicaii (prin eliminarea etapelor intermediare), dar acest avantaj este infim, deoarece n momentul de fa, mediile de programare de tip compilator, sunt extrem de rapide (sute de linii de text-surs pe secund) i

13

realizeaz automat link-editarea i execuia, astfel nct ntrzierile provocate de etapele suplimentare sunt neglijabile. n schimb, avantajele unui program compilat fa de un program interpretat sunt zdrobitoare: - vitez de execuie de cteva ori (chiar zeci de ori) mai marc; - posibilitatea de a rula de sine stttor; odat compilat, compilatorul nu este necesar n execuia programului, pe cnd un program interpretat nu se poate executa dect dac interpretorul se afl n memoria calculatorului; - programul compilat dispune de resursele sistemului n ntregime, pe cnd cel interpretat le mparte cu interpretorul (mai ales memoria, care este de multe ori critic); - flexibilitate sporit n realizarea programelor compilate (adugarea de noi biblioteci, redefinirea unei rutine deja existente etc). Toate aceste consideraii au determinat ca interpretoarele s fie pe cale de dispariie la ora de fa sau oricum, s fie dublate de un compilator. Spre exemplu limbajul BASIC ce beneficia iniial numai de interpretor posed n prezent i compilatoare care ncearc s-l menin n atenia programatorilor. Noiunile de mai sus descriu etapele principale ale realizrii unui program, n plus fa de aceste elemente fundamentale ce asigur o viziune de ansamblu asupra procesului este necesar s amintim i cteva noiuni de detaliu ce intervin frecvent n practic.

U1.4. Mediu de programare

Un pachet de programe ce asigur toate operaiile de mai nainte poart numele de mediu de programare. Deci cu ajutorul su: - se editeaz un program; - se compileaz i eventual link-editeaz automat; - se lanseaz n execuie; - se depaneaz un program; - se poate regla execuia unui program (cu un profiler).

14

Mediile de programare disponibile n prezent sunt deosebit de performante i ofer utilizatorului toat gama de servicii necesare (help, exemple gataconstruite etc.), prin intermediul unor programe puternic interactive. Ele transform munca laborioas a programatorului ntr-un succes aproape sigur. Interfa de programare Nici un program nu este construit de la zero. Spre exemplu, programele ce lucreaz sub MS-DOS se bazeaz pe interfaa DOS, folosind rutinele elementare ale acesteia (scriere caracter la consol, citire caracter de la tastatur etc). Interfaa de programare reprezint suportul pe care se construiete un program. Desigur, cu ct acest suport este mai elaborat i programul n cauz va fi mai elaborat i va fi mai uor de atins un nivel ridicat al complexitii operaiilor realizate. Un program realizat pentru a rula sub Windows (deci bazat pe interfaa Windows) are la dispoziie faciliti de multitasking, nu mai trebuie s gestioneze diversele driver-e (de ecran, imprimant, tastatur etc), toate acestea fiind deja rezolvate de Windows. Biblioteci de programare Dup cum ai constatat din prezentarea anterioar operaia de link-editare nseamn conectarea unui fiier-obiect la rutinele corespunztoare. Aceste rutine pot exista ntr-un fiier pe disc i link-editarea se realizeaz static, obinndu-se un fiier-executabil. Exist, ns, i biblioteci ce se ncarc n memorie i sunt gestionate de un program (de ex. Windows). in momentul lansrii n execuie a unei aplicaii, aceasta se afl pe disc ne-link-editat. Ea va fi ncrcat n memorie i link-editat dinamic cu modulele existente n memorie. Astfel, aplicaia va fi rulat fr ca s fie produs fiierul-executabil n forma sa complet. Overlay-uri (acoperiri) n momentul n care un program este prea mare pentru a ncape n memoria calculatorului se recurge la fragmentarea sa. Se pstreaz din program o parte principal (numit rdcin) care se va afla n memorie i de asemenea se rezerv n memorie spaiul necesar pentru ncrcarea pe rnd, a celorlalte pri ale programului n funcie de necesiti.

15

Figura 4. Program cu acoperiri Desigur aceast tehnic de overlay presupune ca segmentul principal de program s conin, n plus fa de modulele propriu-zise, i module ce vor gestiona ncrcarea de pe disc a acoperirii (overlay-ului) necesar la un moment dat. Un mediu de programare inteligent nu trebuie dect s fie informat c se dorete lucrul cu overlay-uri i va genera automat instruciunile necesare acestei tehnici. Memorie virtual Deoarece memoria intern pune de multe ori probleme realizatorilor de programe, a fost introdus un concept ce ajut imens programatorii, i anume: memoria virtual. Aceast memorie este privit de program ca memorie intern, dar ea se poate afla fizic n orice tip de memorie (expandat, extins, pe disc). Pentru implementarea memoriei virtuale exist concepute module (rutine) speciale ce funcioneaz asemntor tehnicii de overlay. Spre exemplu un program necesit 20 Mb de memorie intern dar sistemul dispune de 1 Mb memorie RAM i 40 Mb memorie pe disc. Atunci se poate declara o memorie virtual de 20 Mb / l Mb RAM+19 Mb pe disc. Cnd programul va face un apel la memoria virtual ce se afl mapat pe disc, gestionarul de memorie virtual va ncrca acea informaie n memoria intern i va permite programului s lucreze cu ea (modalitate de lucru facilitat de modul de adresare virtual a procesorului 80386).

16

U1.5. Test de autoevaluare nr. 1


1. Care este scopul i obiectivele unitii? (1,5 pct.) 2. Care sunt etapele necesare realizrii unui program? (1,5 pct.)
Timp de lucru : 40 min Punctaj 6p

3. Ce este mediul de programare? (1,5 pct.) 4. n ce situaii efortul de programare i dovedete pe deplin utilitatea? (1,5 pct.) Puncte obinute

Total puncte: 6

U1.6. Rezumat
Dac totui trebuie s programm, atunci s programm bine i eficient. S nu ne apucm s reinventm gramafonul cnd acum muzica se ascult pe compact - discuri. Deci mai nti trebuie trecut n revist soft-ul deja existent i doar n cazul n care acesta nu este suficient s ne construim propriile programe. Iar atunci cnd abordm o aplicaie s alegem cea mai performant dintre uneltele disponibile.

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 1

17

UNITATEA 2 TIPURI DE LIMBAJE DE PROGRAMARE

Durata medie de studiu individual - 2 ore Cuprins:


U2.1. Scopul i obiectivele unitii ............................................................. U2.2. Noiuni introdictive .......................................................................... U2.3. Limbajele de nivel sczut de nivel nalt ....................................... U2.4. Limbaje procedurale / neprocedurale ............................................. U2.5. Limbaje orientat ................................................................................ U2.6. Limbaje concurente .......................................................................... U2.7. Test de autoevaluare ......................................................................... U2.8. Rezumat ............................................................................................. Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag.
18 18 19 21 23 24 24 24 25 25

U2.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: Limbajele de programare; Limbajele de nivel sczut de nivel nalt; Limbajele procedurale/neprocedurale; Limbaje orientat; Limbaje concurente.

U2.2. Noiuni introductive


Un limbaj de programare este un sistem de convenii adoptate pentru realizarea unei comunicri - ntre programator i calculator. Limbajele folosite pentru programarea unui calculator sunt extrem de asemntoare limbajelor naturale. Ele sunt compuse din: - cuvinte (rezervate); - punctuaie; - propoziii i fraze;
18

- reguli sintactice etc. Iat spre exemplu, cum arat un program scris n limbaj PASCAL, afieaz pe ecran mesajul: Ce mai faci?

Figura 5. Program n limbaj PASCAL Aa cum pentru nsuirea unei limbi strine trebuie nvate cuvintele acesteia i regulile cu care pot fi manevrate tot aa pentru nsuirea unui limbaj de programare trebuie studiate cuvintele i semnele care l compun mpreun ca reguli de manevrare a lor. Dup metoda cu care este conceput ansamblu comunicrii, limbajele pot fi clasificate n mai multe moduri. n continuare vom enumera cele mai importante clase de limbaje, descriere ce acoper totalitatea limbajelor existente.

U2.3. Limbajele de nivel sczut - de nivel nalt


Nivelul unui limbaj este apreciat prin poziia pe care o ocup pe scara constituit de limbajul recunoscut de microprocesor (limbaj main) i limbajul natural al programatorului (limba romn, limba englez ...). Un limbaj de nivel sczut este foarte apropiat de main, el manipuleaz cu elemente de nivel hardware, fizic, cum ar fi: registru-micro-procesor, locaie de memorie, port de intrare/ieire etc. Un limbaj de nivel nalt sau foarte nalt manipuleaz cu concepte apropiate de limbajul natural, concepte de nivel logic, cum ar fi: colecie de date, nume de operaie (sort = sortare, writeln = scrie linie, open = deschidere fiier etc), variabile, constante (asemntoare ca neles cu cele din matematic) etc..
19

Figura 6. Tipuri de limbaje de programare Cu ajutorul unui limbaj de nivel nalt programatorul se face mai uor neles de ctre calculator. Uneori o singur linie de program scris cu un astfel de limbaj poate echivala cu sute de linii de program scrise n limbaj main. Deci, din punct de vedere al reducerii timpului de realizare a unui program i al siguranei n funcionare (absena erorilor de programare) este de preferat un limbaj de nivel ct mai ridicat (nalt sau foarte nalt). n schimb, pe msur ce limbajul are un nivel mai ridicat execuia programului conceput cu ajutorul su va fi mai lent, dect a unui program ce realizeaz aceleai operaii dar este scris n limbaj de asamblare. Motivele acestei diminuri de vitez sunt multe; amintim cteva dintre ele: - fiind apropiat de main, limbajul de asamblare exploateaz la maxim posibilitile acesteia; - limbajul de nivel nalt este un cadru general, deci automat posed cod (instruciuni) ce decide asupra specificitii operaiei cerute i dup identificarea ei pune n execuie codul propriu-zis care realizeaz operaia; - limbajul de nivel nalt poate conine cod ineficient sau inutil pentru o anumit operaie deoarece acest cod trebuie s funcioneze i pentru alte operaii din aceeai clas. n prezent acest dezavantaj al limbajelor de nivel nalt nu mai este considerat esenial. El este compensat de sporirea resurselor hard. Modalitatea modern de abordare a problemelor poate fi sintetizat astfel: De ce s programez luni de zile sau ani de zile n plus, cnd pot cumpra un calculator mai rapid?!
20

Ideal ar fi ca cele dou tipuri de limbaje s fie folosite combinat. Programul se realizeaz cu un limbaj de nivel nalt, apoi se lanseaz un profiler i se detecteaz instruciunile n care se consum cel mai mult timp sau timp inutil. n aceste puncte se rescriu instruciunile respective folosind limbajul de asamblare. Aadar randament sporit de un mai bun raport efort/performane. n unele cazuri necesitatea folosirii limbajului de asamblare este de nenlturat. Aceste situaii apar n cazul unor operaii nestandard, ce nu su nt puse la dispoziie de limbaje de nivel nalt (de ex: manipularea unui modem, a unui cititor de cod de bare etc.) Pentru aceste cazuri limbajul de asamblare este singura soluie, deoarece este singurul care poate exploata toate posibilitile sistemului. O alt diferen esenial ntre cele dou tipuri de limbaje o reprezint posibilitatea, adic posibilitatea transferrii programelor pe un alt tip de main dect cea pe care au fost construite. Din acest punct de vedere limbajul de asamblare este neportabil deoarece el este specific microprocesorului. Programele realizate pe un tip de main trebuie rescrise integral pentru noul tip de main, folosind un nou set de instruciuni - care de obicei difer foarte mult. De asemenea programul scris n limbaj de asamblare este legat direct de interfaa de programare pe baza creia a fost construit. Schimbarea acesteia va impune rescrierea programului. Deci, un program scris pentru un IBM-PC dotat cu sistem de operare MS-DOS nu va putea fi utilizat pe un IBM-PC dotat cu sistem de operare UNIX. Lucrurile stau altfel cu programele concepute cu ajutorul unui limbaj de nivel nalt, deoarece acestea sunt detaate de main. Intre un astfel de program i calculator se interpune compilatorul (sau interpretorul) care rezolv corect transformarea fiierului-surs n fiier-executabil. n prezent limbajul main este extrem de rar folosit de programatori, el este rezervat constructorilor de calculatoare.

U2.4. Limbaje procedurale / neprocedurale


Cele dou tipuri de limbaje, procedurale i neprocedurale, se difereniaz prin nivelul de organizare (structurare) a unui program, limbajele neprocedurale sunt concepute pentru a gndi un program la nivel de instruciune, pe cnd cele procedurale, oblig programatorul s conceap programe la nivel de bloc.

21

Desigur, ntr-un limbaj procedural (numit i limbaj structurat) programele sunt scrise instruciune cu instruciune, dar ele sunt organizate logic n blocuri (grupuri de instruciuni) ce realizeaz o aciune bine determinat. n figura urmtoare sunt prezentate - vdit exagerat - modurile n care se desfoar atenia programatorului pentru a realiza (sau depana) un program.

Figura 7. Limbaje procedurale / neprocedurale Avantajul esenial al programrii structurate l constituie conceptul de bloc de program. Un astfel de bloc reprezint un set de instruciuni ce realizeaz o operaie bine determinat. n general un bloc are un punct de intrare i un punct de ieire - nu mai multe. Deci un program structurat este mult mai lizibil dect unul nestructurat. n al doilea rnd programarea structurat permite lucrul la un nivel logic mai nalt. Odat definite blocurile ce realizeaz operaii elementare (intrri, ieiri, prelucrri), programatorul va gndi programul n aceti termeni, nu la nivel de instruciune, deci la un nivel de nelegere superior. n al treilea rnd, i nu cel din urm, programarea structurat disciplineaz gndirea unui programator. Aceast modalitate de lucru oblig programatorul si organizeze aplicaiile coerent i limpede, pe cnd un limbaj nestructurat favorizeaz improvizaiile de moment i deseori labile. n concluzie, un limbaj procedural ofer posibilitatea utilizrii unui nivel ridicat de concepere a unui program i duce la realizarea de programe coerente i protejate la erori. Prin contrast, limbajele neprocedurale nu favorizeaz programatorul n a se desprinde de nivelul instruciune i duc deseori la programe greu de controlat -mai ales n cazul programelor de dimensiuni mari. Limbajele neprocedurale (BASIC, dBASE) sunt nc preferate de unii utilizatori datorit timpului foarte scurt ct decurge nvarea i utilizarea lor: cteva zile fa de cteva sptmni n cazul limbajelor procedurale - desigur ne
22

referim la elementele principale ale limbajelor n cauz i la realizarea unei aplicaii simple. ns, aceast grab este de cele mai multe ori nejustificat ducnd inevitabil la dificulti artificiale datorate alegerii din start a unui drum greit. Tendina actual este de a transforma limbajele neprocedurale n limbaje procedurale (versiunea- Turbo Basic implementeaz un Basic structurat, iar dBASE IV permite definirea de proceduri). Modalitatea de lucru neprocedural a unui limbaj de tip algoritmic rmne pentru uzul amatorilor.

U2.5. Limbaje orientate

Clasificarea operat n seciunea de fa se refer la domeniul de aplicabilitate al unui limbaj. Din acest punct de vedere limbajele pot fi orientate pe o anumit problem sau concepute pentru soluionarea oricrui tip de problem - limbaje de uz general sau altfel spus, neorientate pe o problem. Limbajele orientate prezint un grad nalt de specificitate. Limbajele neorientate reprezint un cadru general ce permite introducerea de ctre utilizator a conceptelor i prelucrrilor dorite. Se poate crea i ntreine o baz de date cu ajutorul unui limbaj neorientat, dar n loc de a efectua, s zicem o sortare printr-o simpl instruciune va fi nevoie de zeci (chiar sute) de instruciuni care s realizeze acelai lucru. Deci, diferena esenial dintre cele dou tipuri de limbaje o constituie nivelul conceptual definit. Cele specializate posed deja integral suportul necesar i permit programatorului s se concentreze la ansamblul problemei, pe cnd cele nespecializate las n sarcina programatorului manevrarea nivelelor inferioare ale problemei. Deci, trebuie analizat cu grij limbajul ce va fi abordat deoarece facilitile sale pot duce la diminuarea calitii programelor obinute. Cele mai importante domenii pentru care exist disponibile limbaje specializate sunt urmtoarele: 1. gestiune baze de date; 2. calcul tabelar; 3. inteligen artificial;
23

4. calcul matematic.

U2.6. Limbaje concurente

O alt posibil clasificare a limbajelor se poate face dup fluxul de execuie a programelor realizate. Un limbaj concurent permite definirea de procese (prelucrri) paralele, execuia sa fiind ramificat la un anumit moment de timp. Prin contrast limbajele neconcurente (cazul majoritii limbajelor) au o desfurare liniar, fiind activ un singur proces la un moment dat. Procesele concurente presupun n mod obligatoriu un sistem multi-tasking ce poate gestiona mai multe sarcini la un moment dat. Din acest motiv pentru IBM-PC exist puine implementri de limbaje concurente. Totui, e bine de tiut c specialitii n domeniu prevd acestor limbaje un viitor strlucit.

U2.7. Test de autoevaluare nr. 2


1. Care este scopul i obiectivele unitii? (1,5 pct.) 2. Care sunt limbajele de nivel sczut i care sunt cele de nivel nalt?
Timp de lucru : 40 min Punctaj 7,5p

(1,5 pct.) 3. Ce este limbajul orientat i ce este cel concurent? (2 pct.) 4. Care este diferena dintre limbajul concurent i cel orientat? (2,5 pct.) Puncte obinute

Total puncte: 7,5

U2.8. Rezumat
Clasificarea operat n seciunea de fa se refer la domeniul de aplicabilitate al unui limbaj. Din acest punct de vedere limbajele pot fi orientate pe o anumit problem sau concepute pentru soluionarea oricrui tip de problem - limbaje de uz general sau altfel spus, neorientate pe o problem. Limbajele orientate prezint un grad nalt de specificitate. Limbajele neorientate reprezint un cadru general ce permite introducerea de ctre utilizator
24

a conceptelor i prelucrrilor dorite. Se poate crea i ntreine o baz de date cu ajutorul unui limbaj neorientat, dar n loc de a efectua, s zicem o sortare printr-o simpl instruciune va fi nevoie de zeci (chiar sute) de instruciuni care s realizeze acelai lucru. Deci, diferena esenial dintre cele dou tipuri de limbaje o constituie nivelul conceptual definit. Cele specializate posed deja integral suportul necesar i permit programatorului s se concentreze la ansamblul problemei, pe cnd cele nespecializate las n sarcina programatorului manevrarea nivelelor inferioare ale problemei. Deci, trebuie analizat cu grij limbajul ce va fi abordat deoarece facilitile sale pot duce la diminuarea calitii programelor obinute.

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 2

25

UNITATEA 3
LIMBAJE DE PROGRAMARE

Durata medie de studiu individual - 2 ore

Cuprins:
U3.1. Scopul i obiectivele unitii ............................................................. U3.2. Abordri conceptuale ........................................................................ U3.3. Limbaje de nivel nalt neorientate ................................................... U3.4. Test de autoevaluare ......................................................................... U3.5. Rezumat ............................................................................................. Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag. 26 26 28 36 36 36 36

U3.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: Principalele clase de limbaje de programe; Basic; Fortran; Pascal; Limbajul C; ADA.

U3.2. Abordri conceptuale


Cu aceste noi elemente la dispoziie putem aborda prezentarea limbajului de programare, n cunotin de cauz este de menionat faptul c optarea pentru un limbaj sau altul nu depinde numai de caracteristicile sale conceptuale, ci n mare msur poate fi influenat de performanele mediului de programare disponibil. O implementare performant a unui limbaj, dublat de unelte puternice (editor, compilator, link-editor, depanator, profiler) poate fi un element hotrtor n alegerea dumneavoastr. Acest aspect nu va fi neglijat n prezentarea care urmeaz.
26

Prezentarea va cuprinde principalele clase de limbaje de programe, descrise mai nti din perspectiva caracteristicilor definitorii, iar apoi detaliate difereniat pentru fiecare din limbajele ce o compun o astfel de clas. Limbaje de nivel sczut - aceast categorie de limbaje are un reprezentant autoritar i anume: limbajul de asamblare. Diferenierile care se pot face pentru limbajele de nivel sczut sunt urmtoarele: a) dup tipul de main; b) dup mediul de programare oferit. a) Limbajul de asamblare este strns legat de tipul de hardware disponibil, iar un IBM-PC poate fi realizat cu diverse procesoare, din familia Intel 80x86 (8086, 80286, 80386, 80486, 80586, 80686, etc). Aadar exist tot attea limbaje de asamblare - cte unul pentru fiecare procesor n parte. Regulile respectate de versiunile limbajului de asamblare sunt, evident, uor de intuit: - o nou versiune o include complet pe cea anterioar; - versiunea nou ofer funcii suplimentare i le realizeaz pe cele vechi mai rapid. b) Aspectul unui limbaj (nu coninutul su) poate fi schimbat radical de mediul de programare oferit. Pentru limbajul de asamblare exist mai multe implementri disponibile, ncepnd cu pachete ce opereaz n mod linie (editare, compilare, link-editare realizate cu cte un utilitar specializat) i culminnd cu medii integrate n care toate operaiile se pot declana de la un acelai pupitru de comand (utilitar interactiv pe baz de meniuri). Nu sunt de luat n considerare dect aceste medii integrate (denumite generic medii Turbo), dintre care se detaeaz Turbo Asamblorul firmei Borland TASM. El se livreaz la un pre ridicol de sczut fa de totalitatea serviciilor oferite (interactivitate, vitez mare de lucru, implementare evoluat a limbajului directive de control al compilrii, macroinstruciuni deja definite sau definibile de utilizator etc). Cu toate aceste caliti produsul este foarte rar ntrebuinat datorit dezavantajelor constructive ale unui limbaj de nivel sczut cum este cel pe care l implementeaz. Dac inem seama i de faptul c limbajele de nivel nalt

27

performante (PASCAL,C) accept instruciuni n limbaj de asamblare, ne putem explica de ce sunt foarte rar ntlnite situaiile n care se apeleaz la TASM.

U3.3. Limbaje de nivel nalt neorientate


3.3.1. Basic

Creat n anul 1964 la Darmooth College (S.U.A) limbajul BASIC a cunoscut succesul maxim n anii 80. Denumirea sa provine de la iniialele cuvintelor Beginners Allpurpose Symbolic Instruction Code (Cod de instruciuni simbolice, de uz general, destinat nceptorilor) i spune deja multe despre acest limbaj. Iat caracteristicile sale fundamentale: - simplu de nvat; instruciunile sale sunt cuvinte din limba englez sau prescurtri ale acestora; - neorientat pe un anumit tip de problem; permite construirea de aplicaii, teoretic n orice domeniu; - este un limbaj nestructurat, ceea ce i permite s fie uor nvat; din acest motiv aplicaiile rezultate se citesc i modific foarte greu, fiind favorizat proiectarea anarhic, de moment. Speculnd faptul c limbajul a cunoscut o larg rspndire, au fost implementate noi versiuni de BASIC, diferite de cel standard, care introduc elemente de structurare n limbaj, ncercnd (nu cu mare succes) s menin limbajul n atenia programatorilor. Aadar mediile de programare, cu diversele implementri de BASIC sunt urmtoarele: - GW-BASIC Versiune nestructurat a limbajului. Mediu de programare primitiv i neperformant n principal din cauza faptului c sunt interpretoare i nu compilatoare. Poate fi folosit de amatori pentru a simula senzaia de programare. - Ouick Basic Versiune structurat de Basic produs de Microsoft. Datorit faptului c este compilator, mbuntete cu mult performanele aplicaiilor. De asemenea un plus calitativ este dat de interactivitatea sporit a acestui mediu. - Turbo Basic Versiune puternic structurat de BASIC produs de firma Borland. Compilatorul este performant i limbajul implementat nu mai are prea
28

multe legturi cu Basic-ul standard fiind mai degrab o specie de PASCAL. Mediul de programare este tipic turbo deci interactiv, performant, dublat de toate accesoriile necesare (editor, compilator, link-editor, depanator). - Basic for Windows (Visual Basic) Versiune structurat de Basic. Avantajul esenial al acestei implementri l reprezint faptul c aplicaiile create sunt aplicaii ce ruleaz sub Windows, deci suport disciplinarea funcionrii multi-tasking. ntre aceast versiune i GW-BASIC singura asemnare o reprezint numele. n concluzie, constatm c BASIC-ul a fost popular datorit simplitii sale i din cauza faptului c n perioada succesului su cerinele pentru o aplicaie erau foarte reduse. Pe msur ce aceste standarde au crescut, BASIC-ul s-a dovedit depit i ineficient, iar atunci cnd a ncercat s menin ritmul a ncetat s mai fie BASIC ...

3.3.2. Fortran Limbajul Fortran este n mod cert decanul de vrst al limbajelor de larg folosin. A aprut n anul 1956 i i datoreaz numele prescurtrii cuvintelor: FORmula TRANslation (Traducere de formule). Dup cum arat numele su, iniial reprezenta un limbaj orientat pe calcule tiinifice avnd definite concepte precum: matrice, funcii trigonometrice, numere reale n dubl precizie. Versiunile ulterioare de Fortran (Fortran IV i Fortran 77) care au cunoscut o mare popularitate au extins posibilitile limbajului (manipulri de fiiere, conversii de date, programare pseudo-structurat) transformndu-l ntrun limbaj eficient, de uz general. n prezent exist pentru IBM-PC dou implementri mai importante ale limbajului: - Microsoft Fortran Compilator ce definete un limbaj cu performane acceptabile, chiar foarte bune n cazul calculelor tiinifice. Dezavantaj principal: metoda arhaic de punere la punct a programelor (utilitare n mod linie) i absena uneltelor de depanare i control al performanelor.; - Fortran for Windows. Versiune complet structurat de Fortran. Avantajul principal (i foarte important) este c se pot crea rapid aplicaii acceptabile ce ruleaz sub Windows, n comparaie cu PASCAL for Windows, unde efortul de programare este mult mai mare.
29

Limbajul Fortran a constituit muli ani la rnd principala unealt a programatorilor, de unde i o oarecare nostalgie a acestora. Dei nu poate fi considerat depit din punct de vedere conceptual (este un limbaj algoritmic structurat) este neindicat folosirea lui datorit absenei unor medii de programare performante i pentru c tendina actual i este defavorabil. Singura sa utilizare justificat o poate constitui versiunea Windows a compilatorului.

3.3.3. Pascal Conceptualizat n anul 1970 de ctre Niklaus Wirth, limbajul PASCAL poart numele matematicianului i filozofului Blaise Pascal, n semn de recunoatere a meritelor sale n teoretizarea mainilor de calcul moderne. Creat dup acumularea de cunotine temeinice n tiina limbajelor formale, din confruntarea cu problemele concrete ale programrii, limbajul PASCAL a constituit la vremea respectiv un limbaj modern, meninndu-se ca atare i n prezent, datorit faptului c posed o solid baz conceptual. Limbajul PASCAL a introdus n versiunea sa iniial noiunea de programare structurat i ulterior noiunile de date (structuri) dinamice, date (structuri) definite de utilizator. n prezent standardul implementrilor PASCAL cuprinde urmtoarele elemente: - programare structurat de tip algoritmic, deci: - blocuri de instruciuni executate liniar; - blocuri de decizie ce permit executarea alternativ a unui set sau altul de instruciuni in funcie de rezultatul unui test; - blocuri de ciclare pentru executarea repetat (cu numr de pai cunoscut anterior sau pn la ndeplinirea unei condiii) a unui set de instruciuni; - posibilitatea definirii unei instruciuni compuse (format dintr-un set de instruciuni simple) ce este tratat ca o singur instruciune elementar n analiza sintactic; - definirea de noi funcii sau proceduri; - tipuri de date definibile de ctre utilizator (structuri de date); - structuri de date dinamice (alocate de program n memorie n momentul execuiei, nu n etapa de compilare);
30

- adresri indirecte ale datelor (variabile pointer ce conin nu valoarea unei variabile, ci adresa de memorie la care se afl aceasta); - recursivitate (posibilitatea unei proceduri de a se apela pe ea nsi, asigurnd astfel transcrierea extrem de simpl a algoritmilor ce presupun pai de recursivitate - iruri convergente, cutri in arbori etc; - rutine complete de intrare/ieire (deschidere, citire, scriere, modificare, adugare n fiiere ce pot conine text, sau date de orice tip); - funcii de conversie a datelor din ASCII n format intern i invers; - set complet de funcii matematice (radical, sin, cos, exponenial, logaritm etc); - funcii elementare de grafic 2D; - posibilitatea inserrii direct n surs a instruciunilor n limbaj de asamblare; - posibilitatea definirii de overlay-uri pentru program. Deci, un limbaj puternic, care n ciuda complexitii sale nu este dificil de nvat i stpnit datorit claritii ireproabile care l fundamenteaz conceptual. Versiunile standard ale implementrilor PASCAL sunt cele oferite de Microsoft i Borland, cu avantaj pentru cele din urm (Turbo Pascal 5.0, Turbo Pascal 5.5) datorit mediului de lucru performant. Combinaia PASCAL + Turbo a reprezentat un succes imens n rndul programatorilor avnd ca singur rival cealalt combinaie: C + Turbo. Versiunile recente ale PASCAL-ului constituie o mic revoluie n programare. Turbo Pascal 6.0 introduce (altfel dect versiunea 5.5) noiunea de obiect. Pentru Pascal 6.0, obiect nseamn o colecie de date i metode (procedee de prelucrare, manevrare a datelor) ce se comport unitar. Exist mai multe tipuri de obiecte, organizate ntr-o ierarhie bine definit. Definirea unui obiect nou n acest arbore permite motenirea comportamentului printelui i eventual adugarea unor noi comportamente. Concret, gndii-v la un meniu pe ecran. Acest meniu este un obiect descendent din obiectul predefinit de tip view. El este un grup de obiecte i conine rubrici, butoane de tip radio, butoane de aciune etc, taste obiecte descendente din view. Fiecare obiect se comport aa cum a fost definit (implicit ca printele su, ori ntr-un mod propriu dac a fost redefinit sau extins
31

comportamentul printelui. Obiectele funcioneaz cooperant pentru definirea unui meniu, a liniei de stare a unei csue de dialog etc. Avnd la ndemn acest instrumentar se pot crea aplicaii ireproabile din punct de vedere al nivelului de prezentare i al interactivitii cu utilizatorul. Acest modul orientat pe obiect implementat n Turbo Pascal 6.0 poart numele de Turbo Vision. Cu Vision se poate crea o aplicaie ce se prezint ca n figura urmtoare:

Figura 8. Aplicaie creat cu Turbo Vision Aplicaia e complet conceput pe baz de meniuri, posed suport de mouse, help senzitiv la context, linie de stare senzitiv la context, scurtturi pentru operaiile considerate mai importante .a.m.d. Toate acestea cu numai 300 de linii de program (deci 5 pagini). De acord, aceste 300 de linii presupun numai partea de prezentare a aplicaiei fr nici un fel de prelucrare efectiv. Operaiile concrete vor fi realizate n PASCAL-standard, Turbo Vision oferind funcii numai pentru definirea aspectului pe ecran al aplicaiei. Modulul Turbo Vision nu este dificil de neles la nivel teoretic, dar presupune ceva studiu din partea programatorului, neputnd fi utilizat din mers, fr parcurgerea documentaiei. Dezavantajul principal pentru Turbo Vision l constituie faptul c nu pot fi create aplicaii grafice, ci numai aplicaii ce funcioneaz n mod caracter.

3.3.4. Pascal for Windows Aceast implementare de PASCAL, asigur crearea de programe ce vor rula ca aplicaii Windows.

32

Programarea este mai laborioas (fa de Fortran for Windows), deoarece poate fi gestionat totalitatea serviciilor Windows (nu numai o gam restrns a acestora).

3.3.5. Limbajul C

Acest limbaj de programare, cu cel mai scurt nume posibil, a fost creat n 1971 de ctre Dennis Ritchie i Brian Kernigham pentru dezvoltarea sistemului de operare UNIX. Istoria sa merit menionat deoarece este relevant pentru caracterizarea limbajului. Aadar se punea problema conceperii unui sistem de operare universal, care s poat funciona, teoretic, pe orice tip de main -sistemul UNIX. Pentru aceasta era nevoie de un limbaj care s exploateze toate posibilitile unei maini, dar care nu putea fi limbajul de asamblare, deoarece el este specific mainii - o nou implementare presupunea rescrierea integral a sistemului. Din aceast dilem s-a putut iei construind un limbaj de nivel nalt (iniial limbajul B, ulterior C) care introducea i concepte de nivel sczut, hardware (registru, adres, locaie de memorie absolut etc). Mai bine de 90% din sursele primului sistem de operare UNIX (implementat pe o main PDP-7) au fost scrise utiliznd limbajul C, iar pentru restul modulelor s-a apelat la limbajul de asamblare. sistemul astfel obinut a rost distribuit cu programele n format surs i cu descrierea noului limbaj folosit, cu intenia vdit de a-l transforma ntr-un sistem de operare universal. Succesul nu a sosit imediat, dar era asigurat de noua metod de lucru. Programatorii au fost incitai s dezvolte acest sistem, extinzndu-l cu noi module i s l implanteze pe alte maini prin rescrierea acelei minime pri sub 10% n limbaj de asamblare... C devenea un limbaj de referin. Dup acest scurt preambul iat care sunt principalele caracteristici ale limbajului: - limbaj structurat de nivel nalt; - posed concepte de nivel sczut, ceea ce permite exploatarea portabil a caracteristicilor intime unei maini. Spre exemplu, o variabil foarte des utilizat, poate fi declarat register (registru) i atunci ea va fi memorat ntr-un registru al microprocesorului, nu

33

ntr-o locaie din memoria intern, mrind (uneori considerabil) viteza de execuie; - rutine de conversie a datelor foarte evoluate (conversii implicite, intrri, ieiri, conversii n memorie); - tipuri de date definibile de ctre utilizator; - gestionarea elaborat a datelor de tip dinamic; - definirea de noi funcii; - adresri indirecte ale variabilelor (pointer-i); - recursivitate; - set complet de funcii matematice etc; - funcii pentru realizarea de grafic elementar 2D; - funcii de apel servicii DOS; - posibilitatea definirii de overlay-uri pentru un program; - i nu n ultimul rnd: concizie deosebit a limbajului (set de operatori i instruciuni foarte concise). Aadar un limbaj care suplimenteaz PASCAL-ul i poate pretinde pe drept cuvnt supremaia n rndul limbajelor structurate de uz general. Pentru versiunile standard ale implementrilor limbajului C exist medii de programare de tip turbo ce aparin dup cum ne-am obinuit, firmelor: Microsoft -produsul Ouick C - i firmei Borland -produsele Turbo C.

3.3.6. ADA Limbajul ADA a fost creat special pentru a gestiona totalitatea aplicaiilor dezvoltate i utilizate de N.A.S.A. Conceptualizarea limbajului a fost rodul unui concurs internaional n care au fost angajai mii de cercettori. Rezultatul nu putea fi dect remarcabil. Noutatea limbajului (de tip structurat, algoritmic etc) o constituie concurena, deci posibilitatea lansrii de procese paralele (sincronizate interactiv n finalul execuiei lor etc). Saltul calitativ este evident i deschide un nou domeniu n programare dar, nu pentru IBM-PC. Versiunile implementrilor limbajului ADA pe IBM-PC nu posed tocmai aceast parte de concuren deci reduc limbajul la un banal limbaj structurat de uz general, iar n lupta pentru supremaie primeaz tocmai facilitile suplimentare oferite peste acest minim necesar.
34

Aadar, ADA este un limbaj ultramodern din punct de vedere teoretic dar ineficient din punct de vedere practic pentru IBM-PC-uri. n finalul acestei prezentri a limbajelor de uz general este deosebit de util o recapitulare comparativ a celor doi candidai rmai n cursa pentru supremaie: PASCAL i C. Avantaje Pascal: - regulile sintactice ale limbajului sunt mai stricte, de unde rezult programe mai sigure i mai uor de depanat; n limbajul C se acord o mai mare libertate programatorului, dar inevitabil i o responsabilitate sporit (pentru a ine sub control un program C de mare ntindere trebuie studiu i mai ales experien); - la noi n ar - literatur de specialitate mai bogat (nu e de neglijat acest factor). Avantaje C: - cod mai eficient pentru. operaiile de intrare/ieire pe disc; - modulul Vision conine mai puine erori de fabricaie dect cel al PASCAL-ului; - este de menionat c n general 99% din presupusele erori. se datoreaz programatorului i numai 1% sunt erori reale. O metod sigur de a depista cine se neal este de a intra cu un depanator n - executabilul produs i de a analiza codul la nivel de limbaj de asamblare; - libertatea de exprimare sporit, siguran de funcionare diminuat; - concizie seductoare a exprimrii; - conversii de date i gestionare a memoriei uor mai performante (modulul Vision al lui Pascal 6.0 nltur aceast diferen); - programele surs circul de regul n limbaj C. Informaiile de mai sus nu pot nclina decisiv balana n favoarea unuia dintre candidaii la supremaie. Dar se poate constata o evoluie a limbajului PASCAL ctre C i putem presupune c disputa se va ncheia n momentul n care cele dou limbaje vor fi complet similare. Oricum exist un translator (PAS2C) ce asigur traducerea fiierelor-surs PASCAL n C i un alt program (C2PAS) ce efectueaz operaia n sens invers. Deci, problema deciziei PASCAL sau C? poate fi considerat mai mult de domeniul livrescului.

35

U3.4. Test de autoevaluare nr. 3


1. Care sunt principalele clase de limbaje de programare (1,5 pct.) 2. Care sunt diferenierile ce se pot face pentru limbajele de nivel sczut
Timp de lucru : 40 min Punctaj 7p

(1,5 pct.) 3. Care sunt caracteristicile fundamentale ale limbajului BASIC (1 pct.) 4. Ce elemente cuprinde n prezent standardul implementrilor PASCAL (0,5 pct.) 5. Care sunt principalele caracteristici ale limbajului C(0,5 pct.) 6. Care este noutatea limbajului ADA? (1,5 pct.) 7. Care sunt avantajele C i care sunt cele PASCAL? (0,5 pct.) Puncte obinute

Total puncte: 7

U3.5. Rezumat
Deci, se poate constata o evoluie a limbajului PASCAL ctre C i putem presupune c disputa se va ncheia n momentul n care cele dou limbaje vor fi complet similare. Oricum exist un translator (PAS2C) ce asigur traducerea fiierelor-surs PASCAL n C i un alt program (C2PAS) ce efectueaz operaia n sens invers.

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 3

36

UNITATEA 4 LIMBAJE ORIENTATE PE GESTIUNEA BAZELOR DE DATE

Durata medie de studiu individual - 2 ore

Cuprins:
U4.1. Scopul i obiectivele unitii ............................................................. U4.2. Limbaje orientate pe gestiunea bazelor de date ............................. U4.3. Caracteristici definitorii S.G.B.D.-uri clasice ................................. U4.4. Tipuri de SGBD: DBASE, PARADOX, FOX ................................. U4.5. Test de autoevaluare ......................................................................... U4.6. Rezumat ............................................................................................. Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag. 37 37 39 41 43 43 43 43

U4.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: Limbaje orientate pe gestiunea bazelor de date; Caracteristicile definitorii ale S.G.B.D.-uri clasice; Tipuri de SGBD: DBASE, PARADOX, FOX.

U4.2. Limbaje orientate de gestiunea bazelor de date


Datorit implicrii tot mai accentuate a calculatoarelor n multe domenii de activitate, sfera problemelor rezolvate cu ajutorul calculatorului s-a extins foarte mult. A aprut astfel a specializare a programelor (pachetelor de programe), orientate spre rezolvarea diverselor tipuri de probleme: matematice, tehnice, economice, de proiectare etc. Sistemele de Gestiune a Bazelor de Date (pe scurt S.G.B.D. - prescurtare foarte des ntlnit n literatura de specialitate) sunt sisteme informatice (soft) specializate n stocarea i prelucrarea unui volum mare de date, volumul de prelucrri implicat fiind relativ mic (spre deosebire de programele orientate spre rezolvarea problemelor matematice, de exemplu, care necesit un volum mare de prelucrri asupra unui volum relativ mic de date). Termenul de baz de date se va refer la datele de prelucrat, la modul de organizare a acestora
37

pe suportul fizic de memorare, iar termenul de gestiune va semnifica totalitatea operaiilor ce se vor aplica asupra datelor din bazele de date. Baza de date reprezint structura logic n care este memorat o cantitate de informaii pe un suport fizic de memorare pentru a putea avea acces ct mai rapid la toate informaiile depozitate ntr-o baz de date, aceasta are o anumit organizare, asemntoare unui tabel, folosindu-se urmtoarea terminologie: - cmp - coloan n tabel - nregistrare - linie n tabel - structura bazei de date - antetul tabelului Pentru a determina n mod univoc structura bazei de date (antetul tabelului) trebuie specificate cmpurile care compun tabelul , mpreun cu caracteristicile acestora. Fiecrui cmp i sunt caracteristice: - numele - identific cmpul printre celelalte elemente - tipul - stabilete prelucrrile ce se pot aplica datelor memorate n cmpul respectiv - lungimea - numrul de octei ocupai de cmp - zecimale - pentru cmpurile numerice stabilete poziia punctului zecimal n cadrul cmpului respectiv Un S.G.B.D. trebuie s asigure urmtoarele funciuni elementare relativ la bazele de date: - definirea, crearea bazei de date; - introducerea datelor n bazele de date (adugare); - modificarea unor date deja existente n bazele de date; - tergerea datelor din bazele de date; - consultarea bazelor de date (interogarea, extragerea informaiilor). Alturi de acestea, S.G.B.D-urile mai pot fumiza i alte servicii, cum ar fi: - suport pentru limbaj de programare; - interfa ct mai atractiv i performant, pentru comunicarea cu utilizatorul; - diferite tehnici avansate de memorare, organizare, accesare a datelor din bazele de date; - utilitare ncorporate: sistem de gestiune a fiierelor, liste i tabele etc; - help pentru ajutarea utilizatorului n lucrul cu bazele de date etc. Necesitile actuale n practica utilizrii calculatoarelor se ndreapt cu precdere spre gestionarea bazelor de date de mari dimensiuni. O explicaie
38

posibil a acestei orientri e dat de faptul c o baz de date reprezint informaie, iar cel care deine informaii complete i rapide ntr-o anumit problem este indiscutabil cu un pas naintea celorlali. Concurena din. domeniul economic poate fi numit pe bun dreptate o btlie informaional. Desigur, nu este nevoie s detaliem pentru cititor importana sistemelor de gestiune a bazelor de date (S.G.B.D.). O experien minim n domeniul informatic este suficient pentru a constata c la tot pasul apar necesiti de utilizare a unui S.G.B.D. Pentru a putea studia diversele opiuni posibile vom prezenta mai nti termenii care definesc un S.G.B.D., deci cadrul teoretic ce va constitui baza consideraiilor ulterioare.

U4.3. Caracteristici definitorii S.G.B.D.-uri clasice


Un sistem de gestionare a bazelor de date de tip clasic opereaz cu urmtorii termeni fundamentali: - cmp = o locaie n care se poate memora o informaie bine determinat; - nregistrare = mai multe cmpuri alctuiesc mpreun o nregistrare; - baza de date = colecie de nregistrri. Dup cum se observ, datele sunt gestionate prin intermediul unei structuri, organizat ierarhic, deci la un nivel de organizare logic. Pentru a exploata o baz de date se definete mai nti structura ei (cmpurile ce alctuiesc o nregistrare). Aceast structur reprezint sertarele goale n care vor fi depuse date. Se opereaz cu dou tipuri fundamentale de cmpuri: - cmpuri numerice (informaie numeric); - cmpuri alfanumerice (orice caracter tipribil). Dup operaia iniial de definire a bazei de date urmeaz exploatarea sa efectiv. Se pot diferenia dou tipuri importante de operaii: - ntreinere baz de date, ce presupune urmtoarele: - introducere nregistrare n baza de date (inserare); - regsire a unei nregistrri deja introduse; - modificare a unei nregistrri existente; - tergere complet din baza de date a unei nregistrri; - adugare nregistrare la sfritul bazei de date;
39

- prelucrare elementar a bazei de date, ce presupune n principal sortarea (indexarea) nregistrrilor dintr-o baz de date; - generarea de rapoarte pe baza datelor disponibile ntr-o baz de date. Datorit importanei deosebite a operaiei de sortare, vom detalia acest subiect. Este evident pentru oricine c o carte de telefon n care numele persoanelor nu sunt ordonate alfabetic este, din punct de vedere practic, ca i inexistent. Datele exist n forma complet, din punct de vedere cantitativ, ns esenial este metode calitativ de organizare a lor. Operaia elementar de sortare a unei baze de date presupune ordonarea nregistrrilor acesteia, dup o ordine prestabilit (de ex.: ordinea alfabetic pentru valorile alfanumerice sau ordinea cresctoare/descresctoare pentru valorile numerice). Ordonarea bazei de date se poate face: - fizic; nregistrrile din baza de date schimb ntre ele poziia ocupat astfel nct s fie dispuse n ordinea corect. - logic nregistrrile nu i schimb ordinea n baza de date, dar sunt privite altfel prin intermediul unui index ce specific ordinea lor logic.. Desigur, indexarea este o operaie mult mai rapid pentru bazele de date mari, dar presupune o scurt ntrziere n regsirea informaiilor fa de metoda sortrii lor fizice. Pentru un S.G.B.D. de tip clasic toate cerinele descrise pn n acest punct sunt minimale i cu greu se mai poate opta pentru un mediu restrns la aceste operaii. Facilitile suplimentare puse la dispoziie sunt n general urmtoarele: - manipulri grupe de nregistrri (copieri dintr-o baz de date ntr-o alta, tergeri etc); - import/export date; bazele de date gestionate intern de ctre S.G.B.D. pot fi puse la dispoziie i n formate ce sunt recunoscute de alte programe. Import = ncrcare date dintr-un format diferi de cel intern al S.G.B.D.ului. Export = furnizare date convertite de la formatul intern la un alt format extern S.G.B.D.-ului n cauz. Formatul extern recunoscut de majoritatea S.G.B.D.-urilor clasice este formatul ASCII.
40

- posibiliti avansate de regsire a nregistrrilor; n mod clasic, regsirea unei nregistrri se face dup numrul ei n baza de date sau dup valoarea unui cmp. Aceste metode presupun un lucru greu acceptabil: trebuie tiut dinainte ceea ce trebuie aflat. Caracteristicile principale ale unui mediu de tip S.G.B.D. sunt calitatea serviciilor de exploatare oferite i gradul de elaborare al limbajului de programare definit. Pentru prima cerin ntlnim aceleai criterii de evaluare ca n cazul oricrei alte aplicaii: - interactibilitatea cu utilizatorul; - vitez de lucru; - protecii la erori (accidente). Cea de-a doua component (mediul de programare) reprezint

implementarea unui limbaj orientat pe gestiunea bazelor de date. Pentru caracterizarea sa vom ine seama de criteriile uzuale: - interactivitate mediu de programare; - compilator / interpretor (viteza de lucru a aplicaiilor obinute); - calitatea conceptual a serviciilor i funciilor oferite de limbaj; - protecia la erori a programelor obinute, sigurana n funcionare; - uneltele suplimentare de lucru (depanator, profiler). Optarea pentru un anumit produs trebuie fcut dup analizarea cu atenie a acestor caracteristici.

U4.4. Tipuri de SGBD: DBASE, PARADOX, FOX


Pentru a lansa n execuie produsul FoxPro se lanseaz FOX.EXE. Dup executarea acestei comenzi va aprea pe ecran o fereastr numit COMMAND i un meniu bar alctuit din: SYSTEM, FILE, EDIT, DATABASE, etc. Activarea meniului se face prin apsarea tastei F10. Funciile care se pot aplica unei baze de date se mpart n dou mari categorii, care asigur funcionarea tuturor funciunilor unui SGBD: - Funcia de descriere a datelor: - S.G.B.D. trebuie s permit descrierea structurii datelor, a legturilor dintre entiti, a condiiilor de validare i acces. Pentru aceasta S.G.B.D.-urile dispun de un limbaj specializat: LIMBAJUL DE DESCRIERE A BAZEI DE DATE (LDD).
41

- Funcia de manipulare: - permite crearea, actualizarea datelor, cutarea rapid, sortarea. Pentru acestea se folosete LIMBAJUL DE MODIFICARE A BAZEI DE DATE (LMD). Limbajul de descriere a bazei de date (LDD). Setul de caractere: - este format din literele mari si mici ale alfabetului, cifrele sistemului zecimal si caracterele: ., #, @, &,etc. Identificatorii:- sunt folosii pentru desemnarea variabilelor, fiierelor, programelor, numelor de cmp. n funcie de utilizare, acetia pot avea maxim 10 caractere, dintre care prima este liter. Cuvinte cheie: desemneaz comenzile, funciile standard ale limbajului neputnd fi folosite n alt context i pot fi prescurtate la primele patru caractere. Tipuri de date: - tipul numeric - este specificat prin litera N sau F. - tipul ir - mulime ordonat de caractere ASCII, fiind specificate prin litera C. - tipul dat calendaristic - este specificat prin litera D. - tipul logic - mulimea format din dou valori T sau F (litera L- logical). - tipul memo - folosit numai n baze de date i este asemntor cu tipul ir, dar are o lungime variabil (litera M) Constante - sunt date ale cror valori constituite chiar din caracterele utilizate n scrierea lor: - numerice - caracter - logic - dat calendaristic Variabile - zone de memorie identificate printr-un nume-utilizator ce primesc la un moment dat o valoare i un tip. Operatorii limbajului: - aritmetici: +, -, /, *, ** - relaionali: <, >, <=, >= - logici: .not., .or., .and. Expresiile: numerice; relaionale; logice; ir; dat calendaristic. Limbajul de manipulare al bazei de date (LMD) este alctuit din comenzi i clase de comenzi (funcii) realizate de SGBD.

42

U4.5. Test de autoevaluare nr. 4


1. Care sunt limbajele orientate pe gestiunea bazelor de date? (3,5 pct.) 2. Care sunt caracteristicile definitorii S.G.B.D.-urilor clasice? (1,5 pct.)
Timp de lucru : 40 min Punctaj 6,5p

3. Ce tipuri de S.G.B.D.-uri cunoatei? ? (1,5 pct.) Puncte obinute

Total puncte: 6,5

U4.6. Rezumat
Datorit implicrii tot mai accentuate a calculatoarelor n multe domenii de activitate, sfera problemelor rezolvate cu ajutorul calculatorului s-a extins foarte mult. A aprut astfel a specializare a programelor (pachetelor de programe), orientate spre rezolvarea diverselor tipuri de probleme: matematice, tehnice, economice, de proiectare etc. Sistemele de Gestiune a Bazelor de Date (pe scurt S.G.B.D. - prescurtare foarte des ntlnit n literatura de specialitate) sunt sisteme informatice (soft) specializate n stocarea i prelucrarea unui volum mare de date, volumul de prelucrri implicat fiind relativ mic (spre deosebire de programele orientate spre rezolvarea problemelor matematice, de exemplu, care necesit un volum mare de prelucrri asupra unui volum relativ mic de date). Termenul de baz de date se va refer la datele de prelucrat, la modul de organizare a acestora pe suportul fizic de memorare, iar termenul de gestiune va semnifica totalitatea operaiilor ce se vor aplica asupra datelor din bazele de date.

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 4

43

MODULUL 2
UNITATEA 5: Rezolvarea problemelor economice cu ajutorul programelor pe calculator Noiuni de baz referitoare la programare Elementele de baz ale programrii orientate pe obiecte

UNITATEA 6: UNITATEA 7:

44

UNITATEA 5 REZOLVAREA PROBLEMELOR ECONOMICE CU AJUTORUL PROGRAMELOR PE CALCULATOR

Durata medie de studiu individual - 2 ore

Cuprins:
U5.1. Scopul i obiectivele unitii ............................................................. U5.2. Programare ........................................................................................ U5.3. Noiuni de baz specifice procesului de prelucrare automat a datelor ................................................................................................. U5.4. Test de autoevaluare ......................................................................... U5.5. Rezumat ............................................................................................. Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag. 45 45 46 49 49 50 50

U5.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: Rezolvarea problemelor economice cu ajutorul programelor pe calculator; Informatica de gestiune; Gestiunea; Datele ce sunt prelucrate pe un sistem de calcul;

U5.2. Programare
Rezolvarea problemelor, n general, i a problemelor economice n particular, cu ajutorul programelor pe calculator necesit cunoaterea i nsuirea noiunilor fundamentale referitoare la programare. Problemele economice prezint o serie de particulariti legate de caracterul proceselor i fenomenelor economice din care fac parte: existena unor modele (inclusiv bazate pe relaii matematice), volumul mare de date stocate n baze de date i n depozite de date, operaii relativ puine i de complexitate redus (n comparaie, de exemplu, cu calculele tehnico-inginereti), prelucrri i reprezentri statistice etc. Toate aceste
45

particulariti sunt luate n considerare la rezolvarea problemelor economice, n special a celor de gestiune. Informatica de gestiune reprezint n esen informatica aplicat n domeniul prelucrrii automate a datelor asupra evidenei i controlului activitilor i bunurilor unei organizaii economice. Gestiunea unei organizaii economice const n totalitatea activitilor desfurate pentru evidena resurselor acesteia (umane, materiale, financiare i informaionale), ncredinate, spre administrare, factorilor de decizie, pentru realizarea scopurilor specifice domeniului su de activitate. n prezent, dar mai cu seam n viitor, nu exist i nu va exista nici un loc de munc fr calculator conectat n reea, n special n domeniile contabilitate i financiar-bancar. Viitorul economist trebuie s cunoasc principiile i elementele de baz ale programrii i s ctige deprinderi adecvate, cel puin din urmtoarele dou motive: economistul este un creator, i nu un simplu operator pe calculator; complexitatea i diversitatea proceselor i fenomenelor economice presupun o permanent deschidere spre schimbarea i perfecionarea aplicaiilor informatice economice ce pot fi realizate nemijlocit de ctre economist; economistul poart un dialog permanent cu specialistul informatician n ceea ce privete perfecionarea sistemelor i instrumentelor informatice complexe dedicate rezolvrii problemelor economice. Este inutil s se insiste mai mult, la capitolul motivaie, asupra importanei programrii i bazelor de date pentru viitorul economist cu specializarea contabilitate i informatic de gestiune, n care sintagma informatic de gestiune reprezint a doua jumtate a ntregului. Acest fapt i confer viitorului economist dreptul de a profesa i n categoria profesionitilor n informatic, dar, n acelai timp, genereaz i obligaia de a-i nsui n mod corespunztor fundamentele programrii i ale bazelor de date.

U5.3. Noiuni de baz specifice procesului de prelucrare automat a datelor


Orice sistem de calcul (adic acel sistem tehnic care asigur execuia procesului de prelucrare automat a datelor) are n compunere, n esen, partea de hardware i partea de software. Bill Gates, patronul Microsoft, spunea n anul 2002 c, din totalul costurilor unui sistem de calcul, partea de hardware reprezint
46

5%, n timp ce partea de software reprezint 95%. Problema costurilor unui sistem de calcul devine din ce n ce mai important n condiiile cerute de societatea informaional societatea cunoaterii i n conformitate cu prevederile legale referitoare la respectarea legii drepturilor de autor n domeniul software. Partea de software a unui sistem de calcul cuprinde, la rndul ei, softwareul de baz (sistemul de operare sau sistemul de programe de baz) i software-ul de aplicaie (sau sistemul de programe aplicative). n continuare sunt prezentate noiunile de baz specifice procesului de prelucrare automat a datelor. Sistem informatic conine unul sau mai multe sisteme de calcul (hard i soft), crora li se adaug restul bazei tehnico-materiale, baza tiinificometodologic, baza informaional, resursele umane i cadrul organizatoric. Baza tehnico-material conine echipamentele de culegere, verificare i transmitere date, echipamentele de teleprelucrare, suporturile de stocare a datelor i calculatorul propriu-zis. Baza tiinifico-metodologic cuprinde modelele matematice ale proceselor i fenomenelor economice i metodologii de realizare a sistemelor informatice. Baza informaional se refer la date, fluxuri i circuite informaionale, cataloage i dicionare de date etc. Un sistem informatic are funcia de prelucrare automat a datelor pentru obinerea informaiilor necesare procesului de conducere sau de informare. Din cele artate mai sus, rezult c procesul de prelucrare automat a datelor presupune existena simultan a urmtoarelor elemente: sistemul de echipamente (hardware), sistemul de programe de baz, sistemul de programe aplicative, datele de intrare ce sunt supuse proceselor de prelucrare automat i datele de ieire sau rezultatele prelucrrilor. n esen, acest proces de prelucrare automat a datelor este format din trei etape: introducerea (citirea) datelor de intrare, prelucrarea datelor (efectuarea calculelor) i extragerea (scrierea) rezultatelor. Este de reinut c datele de intrare sunt introduse printr-o operaie de citire - read, iar datele ce reprezint rezultate sunt obinute printr-o operaie de scriere write sau de tiprire- print a rezultatelor. Sistemul de operare este realizat cu preponderen n limbajul de programare C, este livrat cu licen, de regul, de compania productoare a prii hardware a calculatorului i este specific unui anumit tip de platform de

calcul (Windows, Unix, OS/2 etc). Programele aplicative sunt realizate prin utilizarea limbajelor de programare acceptate de ctre sistemul de calcul i de
47

sistemul de operare al acestuia. Datele ce sunt prelucrate pe un sistem de calcul sunt organizate ntr-o form avantajoas pentru aplicaia informatic i sunt reprezentate ntr-o structur accesibil calculatorului. Datele sunt organizate n colecii de date n funcie de condiiile specifice impuse de sistemul informaional existent i de dorinele utilizatorilor finali din procesul de decizie. Procesul de prelucrare automat a datelor are loc ntr-o succesiune controlat de operator, adic, n accepiunea clasic, de acel utilizator final specializat n operarea pe sistemul de calcul. Etapele procesului de prelucrare a datelor pe calculator sunt materializate n urmtoarele operaii: pregtirea datelor iniiale, de regul manual, n vederea introducerii lor n procesul de prelucrare automat (citire), ce presupune verificarea, sortarea i codificarea acestor date n funcie de documentele primare existente; verificarea datelor presupune confirmarea concordanei ntre valorile prezente n documentele primare i valorile care trebuie s existe n conformitate cu aplicaia informatic concret sau problema economic cu urmeaz a fi rezolvat; sortarea datelor semnific acel tip de prelucrare prin care datele sunt dispuse ntr-o anumit ordine, n conformitate cu un anumit sistem sau cu anumite precizri ale utilizatorului; codificarea datelor nseamn operaia de atribuire de semne numerice, alfabetice sau alfanumerice unor date cu scopul de a optimiza numrul de semne cu care se scriu i se prelucreaz, de exemplu, elementele specifice sistemului informaional financiar-contabil; noiunea de document primar (de eviden primar) este cea definit n contabilitate, ca prim etap a funciei contabile, adic acel document n care se consemneaz pentru prima dat o operaie economico-financiar (facturi, chitane, cecuri etc). Fiecare eveniment ce prezint un efect economic se nscrie ntr-un document primar n momentul i n locaia n care s-a produs; introducerea datelor iniiale n calculator, adic n memoria intern sau memoria extern a sistemului de calcul; introducerea datelor iniiale poate fi fcut direct de la tastatur (n regim conversaional) sau de pe un suport tehnic accesibil calculatorului; prelucrarea propriu-zis a datelor, ceea ce nseamn execuia automat de ctre calculator a tuturor operaiilor prestabilite prin program (validri de date,
48

sortri, interclasri, comparri i testri); validarea de date este tipul de prelucrare ce const n verificarea datelor de intrare dac sunt corecte n raport cu un set de reguli prestabilite (dac sunt reale, coerente, corelate, corect testate, corect transferate dintr-un mediu ntraltul); interclasarea datelor reprezint tipul de prelucrare prin care se obine un ir (vector) de date ce conine toate elementele unor vectori iniiali ordonai; compararea datelor este tipul de prelucrare prin care se verific existena unor relaii de ordine ntre dou date; relaia de ordine a fost definit la cursul de matematic i este o relaie binar pe o mulime de date ce stabilete ordinea de parcurgere a elementelor mulimii; testarea datelor este tipul de prelucrare prin care se verific un ansamblu de date ce sunt pregtite pentru buna funcionare a unui program; prezentarea rezultatelor prelucrrii, adic afiarea pe ecranul monitorului sau imprimarea pe hrtie; cnd rezultatele sunt folosite n prelucrri ulterioare, ele sunt stocate pe supori magnetici. Etapele i operaiile prezentate mai sus se ncadreaz n triada de aur specific oricrui sistem de calcul: stocare prelucrare prezentare date.

U5.4. Test de autoevaluare nr. 5


1. Cum rezolvm problemele economice cu ajutorul programelor pe calculator (2,5 pct.)
Timp de lucru : 40 min Punctaj 5p

2. Care sunt noiunile de baz specifice procesului de prelucrare automat a datelor? (2,5 pct.) Puncte obinute: .....

Total puncte: 5

U5.5. Rezumat
Procesul de prelucrare automat a datelor are loc ntr-o succesiune controlat de operator, adic, n accepiunea clasic, de acel utilizator final specializat n operarea pe sistemul de calcul i se ncadreaz n triada de aur specific oricrui sistem de calcul: stocare prelucrare prezentare date.
49

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 5

50

UNITATEA 6 NOIUNI DE BAZ REFERITOARE LA PROGRAMARE


Durata medie de studiu individual - 2 ore

Cuprins:
U6.1. Scopul i obiectivele unitii ............................................................. U6.2. Noiuni de baz referitoare la programare ..................................... U6.3. Problematica general a limbajelor de programare ...................... U6.4. Test de autoevaluare ......................................................................... U6.4. Rezumat ............................................................................................. Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag. 51 51 57 59 60 60 60

U6.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: noiuni de baz referitoare la programare; problematica general a limbajelor de programare.

U6.2. Noiuni de baz referitoare la programare


Rezolvarea unei probleme reprezint procesul de concepere i de implementare a unei strategii de gsire a unei soluii sau de conversie la normalitate a unor stri generate de condiii nedorite sau neateptate. n activitatea de concepere a programelor destinate calculatoarelor electronice, problema de rezolvat este definit, detaliat i transformat ntr-un proiect pe baza cruia se poate realiza un program ce poate fi rulat pe un sistem de calcul. nainte de a se scrie efectiv programul, se efectueaz analiza problemei de rezolvat i se realizeaz algoritmul de calcul. Programul pe calculator este un set de instruciuni (comenzi) ce se execut de sistemul de calcul cu scopul de a efectua o succesiune de aciuni sau un tip prestabilit de activitate.
51

Instruciunea sau comanda semnific un enun ce specific o aciune ntrun limbaj de programare. Programul pe calculator (sau, mai simplu, programul) are n compunere, de regul, dou tipuri de enunuri: declaraii i instruciuni. Declaraia este asocierea dintre un identificator i anumite informaii. Aceast asociere este formal la realizarea programului i devine efectiv n timpul compilrii sau n timpul execuiei programului. Declaraia privete modul de organizare a datelor de intrare, pe timpul prelucrrii, precum i a datelor de ieire (rezultatelor). Identificatorul reprezint orice ir de caractere alfanumerice ce se folosete n calitate de: nume de variabil sau constant ntr-un program; etichet de regsire a unui punct din program; nume de procedur sau de funcie; nume ataat unei uniti logice de memorie extern (hard disc, dischet, compact disc, memorie flash etc.). Dintr-o alt perspectiv, orice program pe calculator reprezint un ansamblu format din date (structuri de date) i algoritmi prezentate ntr-un limbaj de programare. Noiunea de algoritm nu are o definiie riguroas. Algoritmul este o metod, un procedeu, o reet, o soluionare a unei probleme, fr ns a realiza echivalena cu aceti termeni. Dicionarele de informatic definesc algoritmul ca: descriere a schemei de realizare a unui eveniment cu ajutorul unei mulimi finite de aciuni elementare predenumite, realizabile a priori i avnd o durat limitat n timp; un concept folosit pentru a desemna o mulime finit de operaii cunoscute care, executate ntr-o ordine bine stabilit, pornind de la o mulime de valori (date) de intrare conduc la obinerea n timp finit a unei alte mulimi de valori, valori (date) de ieire; secven finit de pai prin care se rezolv o problem logic sau matematic. n realizarea unui algoritm este necesar satisfacerea urmtoarelor patru condiii (proprieti): claritatea, ceea ce nseamn ca algoritmul s fie bine definit (cu specificaii riguroase i fr ambiguiti); exactitatea (determinismul), adic n fiecare moment al execuiei
52

algoritmului, se cunosc cu exactitate urmtoarea operaie, precum i modul de execuie a fiecrei operaii; descrierea cu exactitate asigur execuia algoritmului pe un sistem de calcul; universalitatea, ceea ce semnific faptul c orice algoritm, fiind ct mai universal cu putin, asigur rezolvarea unei clase largi de probleme; finitudinea, ce const n faptul c algoritmul este finit n spaiu (ca descriere) i asigur obinerea rezultatului ntr-un timp determinat de execuie, adic dup un anumit numr finit de pai. Dup gndirea algoritmului, acesta se poate reprezenta sub mai multe forme; dintre aceste forme, cele mai uzuale sunt reprezentarea n limbaj pseudocod i schema logic. Limbajul pseudocod asigur descrierea algoritmilor prin intermediul a dou enunuri: standard i nestandard; enunurile nestandard sunt fraze n limbajul natural ce se folosesc, de regul, n programare pentru reprezentarea formei iniiale a algoritmilor; enunurile standard exprim operaii ce dispun de corespondene directe n instruciunile limbajului de programare. Schema logic asigur reprezentarea sub form grafic a algoritmilor. Schema logic de program se deosebete de schema logic de sistem. Schema logic de sistem descrie operaiile de prelucrare a datelor pe sistemul de calcul, cu focalizare pe sursele de date, documentele primare ce le conin, activitile ce se execut asupra lor, modul de stocare i de prezentare a rezultatelor prelucrrii. Schema logic de sistem este utilizat pentru a oferi o imagine de ansamblu a fluxurilor de date din sistemul de calcul, n timp ce schemele logice de program sunt folosite pentru detalierea anumitor procese reprezentate n schema logic de sistem. Schemele logice de program sunt independente de limbajul de programare utilizat. Pentru realizarea unui program sunt necesare trei tipuri de structuri de control, caracterizate prin aceea c au o singur intrare i o singur ieire. Aceast posibilitate se bazeaz pe teorema lui Boehm i Jacopini care arat c orice algoritm poate fi reprezentat ca o combinaie a celor trei structuri de control fundamentale: secvenial, alternative i repetitive. Structura de control secvenial (liniar) cuprinde o succesiune de blocuri care se execut unul dup altul;
53

Structurile de control alternative (cu ramificaii) corespund unui bloc de prelucrare care se execut n functie de satisfacerea unei condiii. Aceste structuri de control prezint urmtoarele forme: structura de control alternativ cu dou ramificaii (IfThenElse); structura de control alternativ cu mai multe ramificaii (imbricat); structura de control alternativ generalizat (Case-Of). Structurile de control repetitive (de ciclare) asigur repetarea prelucrrii unor secvene de program. Formele structurilor de control repetitive sunt: structura repetitiv fr contor condiionat anterior (While Do); structura repetitiv fr contor condiionat posterior (Repeat Until); structura repetitiv cu contor condiionat anterior (DoFor); structura repetitiv cu contor condiionat posterior (DoFor). Din punct de vedere structural, un program poate avea n compunere mai multe subprograme sau module. Pot constitui subprograme, componentele programului de tipul procedurilor i/sau al funciilor. Mai multe programe alctuiesc mpreun o aplicaie informatic. Clasic, aplicaia informatic are o structur static arborescent, adic este format dintr-un program principal care apeleaz subprograme. Subprogramele sunt independente n conformitate cu principiile programrii structurate (programe constituite din subprograme sau module i folosirea structurilor de control fundamentale). Aplicaia informatic este dedicat unui anumit domeniu de activitate economic (de exemplu, aplicaie informatic de contabilitate, aplicaie informatic pentru managementul resurselor umane, aplicaie informatic pentru gestiunea creditelor bancare etc.). Noiunea de aplicaie informatic nu este similar cu aceea de sistem informatic. Limbajul de programare este un limbaj artificial ce se folosete pentru definirea unui ir de instruciuni care pot fi prelucrate i executate pe un calculator. Problematica general a limbajelor de programare este tratat n finalul acestui paragraf. Procedura (procedure) este o parte component, cu nume, a unui program, creia i sunt associate constante, tipuri de date i variabile i care execut, de regul, un task unic. Task-ul este un subprogram sau aplicaie autonom rulat ca o entitate independent.

54

Funcia (function) este un subprogram sau rutin care returneaz o singur valoare prin nsi numele funciei. Spre deosebire de funcie, procedura poate returna mai multe valori atunci cnd este rulat. Variabila este, n programare, o locaie de memorie n care se stocheaz date de un anumit tip i care pot fi modificate pe timpul execuiei programului. Constanta desemneaz o entitate cu nume ce reprezint o valoare care nu se modific pe timpul execuiei unui program. Structura de date este o schem de organizare a datelor cu scopul de a simplifica operaiile de prelucrare sau de a uura interpretarea lor. Exist mai multe tipuri de structuri de date: vector, nregistrare, mulime etc. Instruciunea este format din dou elemente distincte: codul operatorului i operanzii (datele supuse operaiei elementare reprezentate prin cod). n funcie de tipul prelucrrii pe care o execut, instruciunile se clasific n: instruciuni de prelucrare propriu-zis; instruciuni de organizare (structurare), care realizeaz concordana logic ntre algoritm i succesiunea intern a secvenelor de program. Instruciunile de prelucrare propriu-zis se grupeaz n: instruciuni de intrare-ieire, care stabilesc sensul fluxului de date n sistemul de calcul, fiierul de date asupra cruia se efectueaz operaia i echipamentul periferic pe care se gsete acest fiier de date; fiierul de date este o colecie de date stocat pe un suport tehnic ntr-o succesiune de nregistrri; instruciunile de calcul, ce precizeaz natura operaiei, adresele operanzilor care particip la calcul i a operaiei aritmetice; instruciunile de transfer (atribuire), ce realizeaz transferul datelor, preciznd sensul transferului i adresele operanzilor. Instruciunile de organizare sunt urmtoarele: instruciunile de comparare (decizie logic), care asigur compararea a doi sau mai muli operanzi, rezultatul fiind categorisit ca adevrat (True) sau fals (False); instruciunile de salt, ce realizeaz trecerea de la secvena de instruciuni curent din program la o secven de instruciuni situat n alt punct al programului. Indiferent de limbajul de programare folosit pentru rezolvarea problemei, realizarea unui program presupune parcurgerea urmtoarelor etape:

55

1. Analiza problemei de rezolvat i realizarea algoritmului, etap ce presupune elaborarea unui enun complet al problemei, stabilirea modalitilor de organizare i de reprezentare a datelor de intrare i de ieire, elaborarea schemei logice de sistem care definete echipamentele din configuraia calculatorului ce particip la procesul de prelucrare a datelor, realizarea algoritmului ce presupune elaborarea i reprezentarea acestuia n limbaj pseudocod sau sub forma schemei logice de program. 2. Scrierea (introducerea) programului, ce are drept scop codificarea algoritmului, adic conversia acestuia n conformitate cu instruciunile unui limbaj de programare; pentru aceast codificare, se folosete un editor de texte; acest editor poate fi independent sau poate face parte din mediul integrat de dezvoltare (IDE); se obine astfel programul-surs (codul-surs al programului), care este scris ntr-un limbaj similar cu limbajul natural, dar nc inaccesibil sistemului de calcul; 3. Compilarea programului, ce realizeaz traducerea programului-surs scris ntr-un limbaj de programare de nivel nalt n program-obiect, exprimat n instruciuni cod-main. Aceast operaie de traducere se obine, n mod automat, prin folosirea unei componente a sistemului de operare, numit compilator. Dup compilare, eventualele erori de codificare existente n program (numite erori de sintax ce apar datorit nerespectrii sintaxei generale a unei instruciuni) sunt depistate i afiate. Erorile de sintax sunt eliminate prin corecii aduse programului-surs, dup care operaia de compilare este reluat. Este important de menionat faptul c n etapa de compilare nu se depisteaz erorile logice din program; erorile logice sunt greeli produse la realizarea algoritmului de calcul. 4. Editarea de legturi (linkeditarea), ce asigur includerea codului obiect al programului (programul-obiect) ntr-un ansamblu bibliotec etc. cu ajutorul componentei denumit executabil (programul executabil), care cuprinde i module specifice sistemului de operare, funcii de editor de legturi (linkeditor). Eventualele erori ce apar conduc la corecii n programul-surs. 5. Testarea logic a programului, care realizeaz verificarea final a programului pe baza unui set de date de test ce acoper domeniul real de valori ale datelor de intrare ce se vor folosi n timpul exploatrii programului.

56

U6.3. Problematica general a limbajelor de programare


Limbajul de programare reprezint un limbaj artificial ce se folosete pentru definirea unui ir de instruciuni care pot fi prelucrate i executate pe un sistem de calcul. Spre deosebire de limbajele naturale (umane), limbajele artificiale au fost create cu scopuri precise: limbaje de programare, limbaje de specificare a programelor, limbaje de descriere a documentelor structurate, limbaje de schimb de date electronice, EDI (Electronic Data Interchange) etc. Limbajele de programare se definesc formal prin alfabet, vocabular i gramatici (fapt ce permite compilarea sau interpretarea lor). Alfabetul reprezint mulimea simbolurilor utilizate pentru scriere n limbajul de programare respectiv. Vocabularul este compus din mulimea cuvintelor ntrebuinate n limbaj. Gramatica limbajului de programare este reprezentat de ansamblul regulilor de scriere, cu preponderen sub aspect sintactic (mulimea regulilor de formare a instruciunilor), cu luarea n consideraie a regulilor de punctuaie i a semanticii (semnificaiilor conferite cuvintelor) i extrem de puin sub aspect morfologic (ansamblul regulilor de modificare a formei cuvintelor, n contextul utilizrii lor). Operaia de interpretare asigur execuia instruciune cu instruciune (la comanda pas cu pas a operatorului) a unui program. Limbajele de programare au evoluat istoric n concordan cu dezvoltarea i progresele prii de hard a sistemelor de calcul. n anul 1944, cnd firma IBM i Universitatea Harvard au realizat primul calculator electronic denumit MARK 1, programarea s-a efectuat n limbaj cod-main (generaia zero, 0 GL), sub forma unei succesiuni de instruciuni n cod binar. Primul limbaj de programare (generaia 1, 1 GL) este definit dup anul 1950, pentru calculatorul electronic UNIVAC 1, sub denumirea de program asamblor, care automatizeaz programarea calculatoarelor prin simbolizarea instruciunilor, operanzilor i adreselor de memorie sub form de mnemonice i prin translatarea programelor din forma scris cu mnemonice n limbaj cod-main. Dup anul 1960, sunt puse la punct primele limbaje de nivel nalt sau evoluate (Cobol, ALGOL, FORTRAN). Limbajele de nivel nalt sau evoluate sunt concepute n funcie de domeniul de aplicaii informatice cruia i este destinat (limbaje specializate,
57

pentru aplicaii economice limbajul Cobol, pentru aplicaii tehnico-inginereti, limbajul FORTRAN, pentru aplicaii de inteligen artificial, limbajele Lisp i Prolog) sau sunt universale (de exemplu, limbajele de programare PL/1 i Ada). Tendina de ieire a limbajelor de programare din laboratoarele firmelor de calculatoare i de facilitare a nsuirii acestora de cercuri diverse de utilizatori s -a materializat n dezvoltarea unor limbaje de programare didactice, cum sunt Pascal i Basic. Dintre limbajele de programare de nivel nalt utilizate n prezent pentru realizarea de software profesional de ctre firmele specializate se menioneaz limbajele C (cu variantele sale ulterioare C++, C#), Java, Ada. Dintre limbajele de nivel jos (apropiate de cod-main) se menioneaz limbajele de macroasamblare (MASM, TASM), ce aparin generaiei 2 (2 GL), la care se realizeaz gruparea unor secvene de instruciuni realizatoare ale unor operaii repetitive, de rutin, ntr-o macroinstruciune (instruciune a limbajului de macroasamblare). Macroinstruciunile sunt standard (specifice limbajului de programare) sau sunt definite de utilizator. Fiecare tip de microprocesor, ce definete sistemul de calcul, dispune de propriile su limbaj cod-main i limbaj de asamblare. Limbajele de programare pot fi procedurale i neprocedurale. Limbajul procedural sau imperativ,ce definete generaia 3 (3 GL), este limbajul de programare n care elementul esenial al programrii este procedura (exemple: Basic, C, Pascal, Cobol, Fortran, Ada etc.). Limbajul procedural necesit o detaliere atent a ansamblului de instruciuni ce urmeaz a fi executate n scopul realizrii unei sarcini (task) precizate i este independent de sistemul de calcul. Limbajele neprocedurale sunt limbaje de nivel foarte nalt, din generaia 4 (4 GL), situate deasupra limbajelor de nivel nalt, specializate pe tipuri de aplicaii informatice. Aceste limbaje se caracterizeaz prin faptul c necesit precizarea problemei de rezolvat, a metodei de rezolvare (i nu a algoritmului de rezolvare), a referirilor asociative de date (i nu a adreselor specifice datelor) i a operatorilor generali necesari operaiilor cu structuri de date. Limbajele neprocedurale sunt foarte apropiate de limbajele naturale (umane). O ierarhie a limbajelor de programare este prezentat n figura de mai jos.

58

LIMBAJE DE NIVEL FOARTE NALT (4 GL) LIMBAJE DE NIVEL NALT (3 GL) LIMBAJE DE MACROASAMBLARE (2 GL) LIMBAJ DE ASAMBLARE (1 GL) LIMBAJ COD-MAIN (0 GL) HARDWARE Un mare grad de utilizare l prezint sistemele de gestiune a bazelor de date (SGBD) ce sunt fundamentate pe limbaje de descriere a structurii bazei de date i pe limbaje de manipulare i interogare a bazei de date. SGBD-urile lucreaz cu date organizate n baze de date i programele sunt independente n raport cu descrierea datelor. Se dau ca exemple SGBD-urile FoxPro (cu o larg rspndire n Romnia n deceniul 9 al secolului trecut), Informix, Oracle, Sybase, Microsoft Access. Din categoria limbajelor de programare specializate fac parte limbajele inteligenei artificiale. Se dau ca exemple limbajele Lisp i Prolog. Limbajele de programare orientate pe obiecte sunt dezvoltate n conformitate cu conceptul de programare orientat pe obiecte, OOP (ObjectOriented Programming). Programarea orientat pe obiecte semnific programarea bazat pe obiecte la care se adaug motenirea i polimorfismul. Programarea bazat pe obiecte, OBP (Object-Based Programming) utilizeaz conceptele de clas i obiect. Dintre limbajele de programare OOP se menioneaz Pascal, C++, C#, SmallTalk, Simula, Java etc.

U6.3. Test de autoevaluare nr. 6


1. Definii care sunt noiunile de baz referitoare la programare (3,5 pct.) 2. Care este problematica general a limbajelor de programare (4 pct.)
Timp de lucru: 40 min Punctaj 7,5p

Total puncte: 7,5

Puncte obinute ....

59

U6.4. Rezumat
Rezolvarea unei probleme reprezint procesul de concepere i de implementare a unei strategii de gsire a unei soluii sau de conversie la normalitate a unor stri generate de condiii nedorite sau neateptate. n activitatea de concepere a programelor destinate calculatoarelor electronice, problema de rezolvat este definit, detaliat i transformat ntr-un proiect pe baza cruia se poate realiza un program ce poate fi rulat pe un sistem de calcul.

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 6

60

UNITATEA 7 ELEMENTELE DE BAZ ALE PROGRAMRII ORIENTATE PE OBIECTE


Durata medie de studiu individual - 2 ore

Cuprins:
U7.1. Scopul i obiectivele unitii ............................................................. U7.2. Abordare conceptual ....................................................................... U7.3. Test de autoevaluare ......................................................................... U7.4. Rezumat ............................................................................................. Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag. 61 61 65 65 66 66

U7.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: Programarea Programming); Programarea bazat pe obiecte, OBP (Object-Based Programming). orientat pe obiecte, OOP (Object-Oriented

U7.2. Abordare conceptual


Programarea orientat pe obiecte, OOP (Object-Oriented Programming). Specific limbajelor de programare orientate pe obiecte, nseamn programarea bazat pe obiecte, la care se adaug motenirea i polimorfismul. Programarea bazat pe obiecte, OBP (Object-Based Programming) utilizeaz conceptele de obiect i clas. Obiectul este o entitate dinamic (este creat, utilizat i apoi distrus) constituit din oricare unitate programabil i caracterizat prin identitate, metode de comportament i stare. Identitatea individualizeaz un obiect n comparaie cu alte obiecte. Metodele de comportament ale obiectului reprezint elementele comportamentale ale acestuia n momentul accesrii. Prin comportament, obiectul i pune n eviden apartenena la clas, precum i individualitatea sa.
61

Starea obiectului este caracterizat cu ajutorul atributelor lui. Orice atribut dispune de nume i valoare sau realizare ce este asociat ca variabil de instan (ce definete proprietile obiectului la un anumit moment). Elementele ce aparin coleciei de obiecte descrise ntr-o clas reprezint instane de clas. Obiectul este definit de un identificator intern unic, independent de valoarea sau adresa de memorie a obiectului. Acest identificator nu este controlat de utilizator i nu se confund cu diferitele nume utilizate de utilizator cu scopul de a-l numi. Ca entiti complexe, obiectele sunt constituite din alte obiecte i din valori. Distincia ntre obiecte i valori se realizeaz prin intermediul strii obiectului: obiectele dispun de o stare intern care se poate schimba; valoarea nu se schimb niciodat. Obiectele sunt create de utilizatori, prin derivare din tipuri de obiecte create anterior sau printr-o operaie de creare (new). Clasa reprezint o implementare a unui tip abstract de date ce ncapsuleaz dou tipuri de atribute: cmpuri sau proprieti i metode sau operaii ale tipului respectiv. Cmpurile sunt private adic sunt ascunse n reprezentarea obiectului. Metodele sunt publice adic accesibile utilizatorului. Altfel exprimat, clasa definete o categorie de obiecte cu proprieti i metode ce se motenesc ntr-o subclas. Subclasa sau clasa derivat definete comportamentul obiectului derivat dintr-o clas considerat de baz. Clasa este un model de realizare a obiectelor de acelai tip i se definete cu ajutorul unui limbaj declarativ sau pe cale grafic. Clasa are un nume, prezint operaii externe sau metode, are o reprezentare intern (ca expresie a valorilor diverselor stri ale instanelor de clas) i folosete cod ce implementeaz att operaiile externe, ct i descrierile reprezentrii interne a obiectelor. Clasa exist conceptual chiar i atunci cnd nu conine obiecte i este un ablon pentru generarea i manipularea obiectelor i este accesat de utilizator cu ajutorul interfeei specifice clasei. Specificarea metodei se numete semntur, iar modul de implementare constituie corpul metodei. Noiunea de clas este asociat n special cu faza de execuie i presupune: generarea de obiecte (new) i memorarea mulimii de obiectecare reprezint instanele claselor. O clas descrie obiectele, crearea unui obiect realizndu-se prin luarea n consideraie a unei expresii de tip. Tipul reprezint o descriere abstract a unui grup de entiti asemntoare.

62

Obiectul prezint valorile lui proprii, lista atributelor i metodelor fiind gestionate de clas. Pentru majoritatea limbajelor OOP, ansamblul instanelor unei clase reprezint o colecie care are acelai nume cu clasa i care se numete extensie a clasei. Obiectele reprezint instane (manifestri) ale claselor din care fac parte. Tipul de dat este folosit pentru descrierea unei mulimi de obiecte care au aceeai reprezentare. Fiecrui tip de dat i se asociaz anumite operaii cum ar fi de exemplu: operaii aritmetice pentru date numerice, concatenri pentru irurile de caractere, modificri pentru anumite articole. Tipul abstract de dat este un tip de dat care este definit prin accentuarea elementelor de precizare a comportamentului i de specificare a metodelor ce se pot efectua asupra variabilelor de tipul de dat respectiv (se specific att structura obiectului, ct i mesajele aplicabile lui). Tipul abstract de dat ascunde modul n care sunt implementate metodele asociate obiectului, reprezentarea intern a obiectelor i protejeaz algoritmii interni care implementeaz cererile din exterior. Acest tip abstract de dat are dou componente: interfaa (list de metode) i implementarea (descrierea structurii interne a datelor obiectului i realizarea procedurilor de implementare a metodelor interfeei). Structura aleas pentru memorarea tipului abstract de dat este ascuns pentru utilizator; ca urmare, algoritmul de reprezentare este ncapsulat. Exist o interfa public, la care au acces utilizatorii, i o interfa privat, ce ascunde reprezentarea i implementarea. Diferena dintre tipul de dat i clas este urmtoarea: tipul de dat este destinat pentru definirea de declaraii utilizate pentru controlul static al expresiilor de limbaj, n timp ce clasele sunt abloane destinate generrii i manipulrii obiectelor care prezint proprieti i comportament comun. ntre clase i obiecte se stabilesc relaii astfel: asociaii binare ntre dou clase, asociaii n-are ntre mai multe clase, relaii ntre obiect i clasa din care face parte, relaii ntre obiectele aceleiai clase. Exist mai multe paradigme ale modelului folosit de OOP: motenirea, ncapsularea, polimorfismul, abstractizarea datelor, persistena, evenimentul. Paradigma este un ansamblu ce detaliaz conceptele specifice unui anumit termen utilizat ca model. Paradigma se refer la forme de manifestare ale termenului respectiv.
63

Motenirea asigur transferarea de proprieti i metode de la clasaprinte ctre un obiect nou. Prin motenire sunt generate tipuri noi de obiecte i clase ntr-o ierarhie. Prin motenire, n OOP se elimin rescrierea i recodificarea programelor, asigurndu-se reutilizarea codului. Un obiect nou motenete operaii sau metode, variabile de instan, atribute. n cazul metodelor, este

vorba de partajarea codului, iar n cazul variabilelor, de partajarea structurii ntre datele obiectelor. Proiectarea unei aplicaii prin intermediul OOP const n gruparea informaiilor generale n clase care sunt apoi specializate pas cu pas n subclase cu comportament particular. Aa cum s-a artat deja, metodele reprezint operaii ce pot regsi sau actualiza starea unui obiect. Aceast stare a obiectului este memorat n variabilele instanelor sale. ntr-o ierarhie de moteniri, o metod definit pentru o clas este motenit de subclasele sale. Motenirea este implementat static sau dinamic. Motenirea static nseamn adugarea cmpurilor motenite, situaie n care redefinirea unei clase oblig la actualizarea tuturor subclaselor. Motenirea dinamic se realizeaz fr a se copia cmpurile motenite i oblig la parcurgerea legturilor de motenire. n cazul motenirii dinamice, actualizarea se efectueaz mai rapid, n timp ce execuia este mai puin eficient. Motenirea poate fi simpl sau multipl. Motenirea simpl se produce atunci cnd o subclas motenete proprieti i metode ale unei singure clase-printe. Motenirea multipl se realizeaz cnd o subclas posed mai multe clase-printe. ncapsularea reprezint proprietatea ce definete posibilitatea de a ascunde prin mascare atributele proprii unui obiect i modul n care se execut metodele. Astfel, sunt protejate obiectele n situaia efecturii greite a unor manipulri exterioare. Un obiect poate fi accesat numai prin metodele asociate la crearea sa. Polimorfismul definete caracteristica unei metode de a se comporta n mod diferit n funcie de clasa de obiecte creia i aparine. Polimorfismul asigur invocarea pentru obiectele de diferite tipuri a metodelor cu acelai nume, dar semantic i implementare diferit. O metod se comport diferit n funcie de clasa de obiecte creia i aparine.
64

Abstractizarea datelor se realizeaz prin faptul c nsei clasele sunt expresia unei abstracii. Obiectele dintr-o clas prelucreaz datele modelului clasei creia i aparin. Utilizatorul obine comunicarea cu obiectele prin mesaje ce se transmit prin interfaa ce specific metodele posibile. Persistena este o proprietate a obiectelor care implic existena acestora i dup ncetarea procesului ce le-a creat. Starea obiectului i codul corespunztor metodelor sunt memorate n baza de date. Tipurile obiectelor pot fi declarate persistente prin folosirea cuvntului cheie persistent la momentul declarrii, variabila fiind i ea constrns la un tip persistent. Evenimentul reprezint o aciune efectuat de sistemul de calcul n cazul n care utilizatorul solicit executarea unei comenzi, este aplicat un mesaj al sistemului sau exist o solicitare din partea altei aplicaii informatice. Ca urmare, evenimentele se pot produce n mod interactiv sau programat. ntr-o aplicaie informatic dirijat prin evenimente, codul nu urmrete o cale prestabilit, ci secvene de program executate ca rspuns la apariia evenimentelor. Succesiunea n care se produc aceste evenimente determin secvena dup care se execut codul, ceea ce nseamn c, la fiecare rulare a programului, el va parcurge o cale diferit.

U7.3. Test de autoevaluare nr. 7


1. Prin ce se caracterizeaz abordarea conceptual? (5,5 pct.)
Timp de lucru: 30 min Punctaj 5,5p

Total puncte: 5,5

Puncte obinute..

U7.4. Rezumat
Proiectarea unei aplicaii prin intermediul OOP const n gruparea informaiilor generale n clase care sunt apoi specializate pas cu pas n subclase cu comportament particular. Aa cum s-a artat deja, metodele reprezint operaii ce pot regsi sau actualiza starea unui obiect. Aceast stare a obiectului este memorat n variabilele instanelor sale. ntr-o ierarhie de moteniri, o metod definit pentru o clas este motenit de subclasele sale. Motenirea este implementat static sau dinamic.
65

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 7

66

MODULUL 3
UNITATEA 8: UNITATEA 9: Limbajul de programare Visual Basic Proiectarea aplicaiilor n limbajul Visual Basic

67

UNITATEA 8 LIMBAJUL DE PROGRAMARE VISUAL BASIC


Durata medie de studiu individual - 2 ore

Cuprins:
U8.1. Scopul i obiectivele unitii ............................................................. U8.2. Caractersticile generale ale mediului integrat de dezvoltare Visual Basic .................................................................................................... U8.3. Componentele de baz ale mediului integrat de dezvoltare Visual Basic ........................................................................................ U8.4. Test de autoevaluare ......................................................................... U8.5. Rezumat ............................................................................................. Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag. 68 68 70 73 73 74 74

U8.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: Visual Basic (VB); mediu Environment); OLE (Object Linking and Embedding); COM (Component Object Model); ActiveX tehnologie soft Microsoft ce reunete componente OLE i COM; DDE (Dynamic Data Exchange); ODBC (Open DataBase Connectivity); Crystal Report sau Data Report; Microsoft Jet Database Engine. integrat de dezvoltare, IDE (Integrated Development

U8.2. Caractersticile generale ale mediului integrat de dezvoltare Visual Basic


Visual Basic (VB) reprezint un mediu integrat de dezvoltare, IDE (Integrated Development Environment), n mod interactiv, pentru aplicaii
68

informatice sub sistemul de operare Microsoft Windows. n general, un mediu de programare este un sistem de programare care asist utilizatorul n proiectarea i codificarea algoritmilor i a datelor, respectiv n editarea i depanarea programelor. Cnd acest mediu de programare asist utilizatorul (programatorul) n toate etapele de realizare a unui program, el se numete mediu de dezvoltare. Cnd toate componentele de asistare a utilizatorului (programatorului) sunt integrate n cadrul aceluiai mediu de dezvoltare, el se numete mediu integrat de dezvoltare. Termenul visual din denumirea IDE Visual Basic semnific faptul c aplicaiile informatice dezvoltate n VB dispun de interfee grafice ce sunt proiectate vizual de ctre utilizator. Pentru aceasta, utilizatorul are la dispoziie un set de elemente vizuale standard ce pot fi folosite la proiectarea unei interfee grafice, denumite elemente de control, sau, pe scurt, controale (Controls). Aceste controale sunt dispuse n ferestrele aplicaiei, ferestre denumite formulare (Forms), concomitent cu stabilirea proprietilor acestora (n fereastra Properties) la dorina utilizatorului i n conformitate cu necesitile aplicaiei Termenul Basic din compunerea IDE Visual Basic arat tipul limbajului de programare utilizat pentru realizarea programelor (secvenelor de cod) corespunztoare evenimentelor generate de acionarea controalelor dispuse n formularul specific aplicaiei. Limbajul de programare Basic (acronim provenit din denumirea n limba englez Beginners All-purpose Symbolic Instruction Code), definit la nceputul anilor 60 ai secolului XX, a cunoscut numeroase versiuni i dezvoltri ulterioare. n anul 1991, firma Microsoft a realizat produsul Visual Basic, care, ulterior, a cunoscut mai multe versiuni, n concordan cu dezvoltarea sistemului de operare Windows. Versiunea Visual Basic 6.0 face parte din pachetul Microsoft Visual Studio 6.0, iar versiunea Visual Basic.NET este parte component a pachetului Microsoft Visual Studio.NET. Visual Basic prezint caracteristici specifice programrii structurate (programrii bazate pe obiecte), programrii dirijate de evenimente, orientrii spre prelucrarea bazelor de date (manipulare i interogare). Aplicaiile informatice realizate cu VB pot interaciona cu alte aplicaii Windows prin intermediul unor interfee specializate: OLE (Object Linking and Embedding) legarea i ncapsularea obiectelor, ce asigur afiarea datelor din alte aplicaii i modificarea acestor date din interiorul aplicaiei care le-a generat;
69

COM (Component Object Model) model de legare i comunicare ntre obiecte distribuite Windows; ActiveX tehnologie soft Microsoft ce reunete componente OLE i COM; DDE (Dynamic Data Exchange) schimb dinamic de date (conversaie) ntre aplicaii Windows; ODBC (Open DataBase Connectivity) conectivitatea bazelor de date deschise, adic posibilitatea conectrii aplicaiilor client la multiple servere de fiiere sau de baze de date; Crystal Report sau Data Report proiectarea vizual a rapoartelor unei aplicaii VB; Microsoft Jet Database Engine motorul sistemului de gestiune a bazelor de date Microsoft Access ce asigur acelai limbaj de manipulare a datelor ntre VB i Access. Visual Basic face parte din clasa de medii de dezvoltare rapid a aplicaiilor, RAD (Rapid Application Development), alturi de Microsoft Visual C++, Power Builder, Borland Delphi .a. ce prezint urmtoarele caracteristici: realizare rapid a aplicaiilor informatice, necesiti acceptabile de resurse informatice la execuie, separarea proiectrii prelucrrilor de proiectarea interfeei, integreaz proiectarea interfeei, scrierea codului, testarea i depanarea. n cadrul pachetului de birotic Microsoft Office, a fost inclus ca limbaj de dezvoltare un subset al Visual Basic, denumit Visual Basic for Application VBA.

U8.3. Componentele de baz ale mediului integrat de dezvoltare Visual Basic


Lansarea n execuie a VB 6.0 din mediul Windows se execut astfel: a) Se apas butonul Start de pe bara de task-uri; b) Se parcurge succesiunea Programs (All Programs n sistemul de operare Windows XP) - Microsoft Visual Studio 6.0 - Microsoft Visual Basic 6.0; c) La apariia ferestrei de creare a unui nou proiect - New Project, se apas butonul Open. Dup aceste aciuni, apar simultan fereastra principal a mediului integrat de dezvoltare VB (1), cutia cu instrumente Toolbox (2), fereastra de proiectare a formularului Form Design (3), fereastra de editare a codului Code Editor (4), fereastra Project Explorer (5), fereastra de stabilire a proprietilor Properties (6), fereastra Form Layout (7), fereastra Immediate (8), fereastra Locals (9), fereastra Watch (10), utilitarul Object Browser (11).

70

Ferestrele care nu apar la pornirea VB i sunt necesare pentru lucru pot fi activate prin urmtoarea succesiune de comenzi: bara cu meniuri View poziionare pe denumirea ferestrei click. Fereastra principal a mediului

integrat de dezvoltare VB are patru componente: bara de meniuri (1), bara cu instrumente (2) i dou zone care afieaz poziia (3) i dimensiunea (4) obiectului ce a fost selectat (obiectul curent). Butoanele de pe bara cu instrumente (Toolbar) dubleaz cele mai utilizate comenzi din bara de meniuri. Meniurile contextuale cuprind comenzi rapide pentru aciunile efectuate n mod frecvent. Pentru deschiderea unui meniu contextual se poziioneaz vrful mouse-ului pe obiectul care trebuie folosit, se apas butonul din dreapta mouseului, se selecteaz comanda dorit concomitent cu click executat cu butonul din stnga mouse-ului. Cutia cu instrumente, Toolbox asigur instrumentele predefinite folosite n timpul proiectrii formularului pentru a introduce controale pe acesta. Utilizatorul poate crea propriile controale, imagini sau grafic prin selecia opiunii AddTab din meniul contextual. Fereastra de proiectare a formularului, Form Design este fereastra pentru realizarea interfeei dintre utilizator i secvenele de program. Fereastra de editare a codului, Code Editor este folosit ca editor de texte pentru a introduce codul aplicaiei informatice. Fiecare formular sau modul de cod
71

din cadrul aplicaiei informatice dispune de propria fereastr de editare a codului. Fereastra Project Explorer servete numai la proiectarea aplicaiei pentru afiarea coleciei de fiiere ce conin formularele i modulele din cadrul proiectului aflat n lucru (curent). Unele fiiere sunt ncrcate n mod automat de ctre sistem, iar alte fiiere sunt realizate de ctre utilizator (programator). Fiierele care se gsesc n fereastr (proiect) se pot grupa pe categorii cu ajutorul butonului ToggleFolders. Butonul View Object servete pentru vizualizarea obiectului selectat (current), iar butonul View Code este folosit pentru vizualizarea codului. Fereastra de stabilire a proprietilor, Properties asigur afiarea valorilor proprietilor pentru formularul sau controlul selectat. O proprietate reprezint o caracteristic a unui obiect (titlu, dimensiuni, poziie, culoare etc.). Fereastra Form Layout este folosit pentru vizualizarea aspectului formularului. Fereastra Immediate este o fereastr suplimentar utilizat n procesul de depanare a aplicaiilor informatice rulate din interiorul mediului IDE. Mediul VB 6.0 permite funcionarea n trei moduri de lucru: proiectare (design mode), rulare normal (run mode) i execuie cu ntrerupere (break mode). Execuia cu ntrerupere (pas cu pas) se utilizeaz la depanarea aplicaiei pe baza punctelor de ntrerupere (breakpoints) stabilite n prealabil. Fereastra Immediate permite introducerea de secvene de cod care se execut imediat sau afiarea valorilor unor expresii. Fereastra Locals este destinat, la depanarea programelor VB, pentru afiarea valorilor unor expresii din program. Fereastra Watch de asemenea, o fereastr suplimentar utilizat n procesul de depanare a programelor VB, pentru gestiunea variabilelor i expresiilor watch,adic a valorilor unor variabile i expresii din program existente n momentul aciunii (curente). Utilizarea ferestrei Watch este posibil prin intermediul meniului contextual. Utilitarul Object Browser realizeaz afiarea obiectelor disponibile n IDE ce pot fi utilizate de proiect. Utilitarul servete, de asemenea, pentru a examina obiecte din VB i din alte aplicaii, pentru a constata ce metode i proprieti sunt disponibile n cazul
72

acestor obiecte i pentru a prelua coduri de program n propria aplicaie informatic. Editorul de meniu (Menu Editor) permite proiectarea meniurilor asociate formularelor. Pentru afiarea ferestrei corespunztoare se apas butonul cu acelai nume de pe bara cu instrumente sau prin opiunea Menu Editor din meniul Tools.

Fiecare meniu are nume, proprieti i mod de accesare asociat

U8.4. Test de autoevaluare nr. 8


1. Care sunt caracteristicile generale ale mediului integrat de dezvoltare VB? (2,5 pct.)
Timp de lucru: 30 min Punctaj 4,5p

2. Care sunt componentele de baz ale mediului integrat VB? (2 pct.) Puncte obinute..

Total puncte: 4,5

U8.5. Rezumat
Aplicaiile informatice realizate cu VB pot interaciona cu alte aplicaii Windows prin intermediul unor interfee specializate: OLE (Object Linking and Embedding) legarea i ncapsularea obiectelor, ce asigur afiarea datelor din alte aplicaii i modificarea acestor date din interiorul aplicaiei care le-a generat.

73

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 8

74

UNITATEA 9 PROIECTAREA APLICAIILOR N LIMBAJUL VISUAL BASIC

Durata medie de studiu individual - 2 ore

Cuprins:
U9.1. Scopul i obiectivele unitii ............................................................. U9.2. Proiectarea aplicaiilor n limbajul Visual Basic ........................... U9.3. Elementele limbajului de programare Visual Basic ...................... U9.4. Test de autoevaluare ......................................................................... U9.5. Rezumat ............................................................................................. Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag. 75 75 89 94 94 95 95

U9.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: proiectarea aplicaiilor n limbajul VB; crearea interfeei; precizarea proprietilor; scrierea codului; elementele limbajului VB.

U9.2. Proiectarea aplicaiilor n limbajul Visual Basic


Pentru a proiecta o aplicaie informatic n limbajul Visual Basic, este necesar parcurgerea urmtoarelor trei etape: 1. Crearea interfeei. 2. Precizarea proprietilor. 3. Scrierea codului. Crearea interfeei se efectueaz cu ajutorul formularelor (Forms). Acestea servesc pentru a genera ferestre i casete de dialog, n calitate de containere pentru elemente care se gsesc n partea ascuns a aplicaiei. Precizarea proprietilor se
75

realizeaz prin intermediul ferestrei Properties, dup selecia prealabil a obiectului. Scrierea codului se execut folosind fereastra de editare a codului, CodeEditor. Crearea aplicaiilor n VB se face n modul de proiectare Design Mode, iar execuia acestora se efectueaz n modul de rulare normal, Run Mode. nainte de prezentarea n detaliu a celor trei etape de proiectare a unei aplicaii n VB, se trateaz fiierul proiect. 9.2.1. Fiierul proiect

Termenul de proiect n VB este similar cu aplicaia informatic, astfel c el cuprinde o list a fiierelor care intr n compunerea aplicaiei. Fiierul proiect este un fiier text cu extensia .VBP. Mediul de dezvoltare VB 6.0 asigur posibilitatea lucrului cu mai multe proiecte concomitent, proiecte ce sunt reunite ntr-un grup deproiecte (fiierul grup de proiecte are extensia .VBG). n lista de fiiere a unui proiect pot fi incluse urmtoarele tipuri de fiiere: fiier pentru formular (.FRM); fiier pentru formular care cuprinde controale cu proprieti care prezint ca valori date binare (.FRX); fiier pentru clas de module (.CLS); fiier pentru modul standard (.BAS);
fiier pentru control utilizator (.VBX DDL-uri pentru controale pe 16

bii i .OCX - DDL-uri pentru controale pe 32 de bii). Din punctul de vedere al utilizatorului, proiectul are n compunere module existente n mediul integrat de dezvoltare (IDE) Visual Basic, n format binar, i module realizate de utilizator (formular, cod, clas). Modulul reprezint un

76

termen generic care desemneaz entitatea de structurare a unui program. Modulele sunt reutilizabile, ceea ce nseamn c un modul folosit ntr-un program, poate fi utilizat ulterior i n alte programe. Modulul definete reguli de vizibilitate adic elementele declarate n interiorul lui pot fi sau nu pot fi vizibile n exteriorul acestui modul. Orice proiect trebuie s includ cel puin un modul (modul de formular sau modul de cod). Atunci cnd au fost definite toate componentele unui proiect, acesta poate fi transformat direct ntr-un fiier executabil (.EXE), astfel: 1) din meniul File se selecteaz opiunea Make EXE ; 2) se introduce numele fiierului executabil n caseta File Name i se apas butonul OK

Meniul File Crearea, deschiderea i salvarea unui proiect se efectueaz prin intermediul comenzilor disponibile n meniul File, astfel: New Project (1) servete pentru crearea unui proiect nou, adugnd un nou formular i, eventual, module, referine i obiecte utilizator cuprinse n fiierul Auto32ld.VBP; Open Project (2) deschide un proiect existent, cu formularele, modulele i obiectele utilizator listate n fiierul proiect; Save Project As(5) asigur prima salvare a proiectului n lucru sau schimbarea numelui unui proiect existent pentru conservarea stadiului la care s-a ajuns i continuarea lucrului cu un alt nume de proiect; Save Project actualizeaz, prin salvare pe disc, fiierul proiect al aplicaiei existente mpreun cu toate formularele, clasele de module i modulele standard.
77

Aa cum se deduce din descrierea opiunilor de salvare a proiectului de mai sus, realizarea aplicaiei este terminat atunci cnd se selecteaz comanda Save Project As(5) din meniul File sau cnd se selecteaz butonul Save Project din linia de butoane. Mediul Visual Basic solicit salvarea, pe rnd, a formularului i apoi a proiectului prin introducerea numelui, dar i a unitii logice de memorie, precum i a cii unde se dorete a avea loc salvarea. n mod implicit, mediul Visual Basic asigur salvarea n locaia C:\Program Files\Microsoft Visual Studio\VB98 (Save In). Pentru salvarea unui proiect, se recomand particularizarea numelui proiectului i folosirea unei uniti logice de memorare i a unei ci personalizate a utilizatorului pentru fiecare proiect, ca, de exemplu:

Homes(D:)\Student\Facultatea\Grupa\Nume_prenume_student\Numeproiect Cnd se lucreaz cu mai multe proiecte, la un anume moment un singur proiect este activ. ntre aceste proiecte cu care se lucreaz simultan, se pot partaja fiiere. Un fiier, cum este, de exemplu, un formular, poate aparine mai multor proiecte. Crearea unor formulare, module i controale noi se efectueaz cu comenzile din meniul Project.

Meniul Project

9.2.2. Crearea interfeei aplicaiei Crearea interfeei unei aplicaii se realizeaz cu ajutorul unui obiect denumit formular (Form). n multe lucrri destinate VB, echivalentul romnesc
78

pentru Form este form. n lucrarea de fa s-a preferat denumirea de formular, dei cea de form este mai apropiat de termenul n limba englez (crearea formularului nseamn de fapt turnarea controalelor ntr-o form adecvat interfeei aplicaiei). Motivul preferinei pentru formular este asigurarea lizibilitii apariiei denumirii acestui obiect n explicaiile din cuprinsul lucrrii, dei, n dicionarele limbii romne, formularul, n general, este definit ca un imprimat cu mai multe spaii albe ce se completeaz n vederea ntocmirii unui tabel. Formularul este un container de controale care faciliteaz dialogul dintre utilizator i aplicaie. Controalele nu pot funciona n afara formularului. Ele sunt obiecte care elibereaz programul de sarcinile legate de intrrile i ieirile generate de aciunile utilizatorului, concentrnd eforturile pe operaiile de prelucrare a datelor. Avantajul controalelor din VB este c ele se aseamn foarte mult cu controalele standard ce apar n sistemul de operare Windows (meniuri, butoane, casete). Controalele uureaz munca de programare n sensul c sunt eliminate instruciunile care s ghideze utilizatorul asupra aciunilor pe care acesta trebuie s le ntreprind. La proiectarea interfeei aplicaiei (Design Mode), fereastra de proiectare a formularului servete pentru dispunerea controalelor necesare proiectului. La rularea programului (Run Mode), formularul ndeplinete rolul de fereastr principal a proiectului sau de fereastr de dialog. La pornirea mediului VB, fereastra de proiectare a formularului cu numele implicit (default) Form1 este dispus n centrul ecranului. n interiorul acestei ferestre se gsesc linii punctate cu rolul de a asigura orientarea utilizatorului, iar la marginea ferestrei sunt dispuse mnerele de redimensionare a formularului. Este bine ca, nc de la crearea formularului, s se opteze pentru o dimensiune potrivit a formularului n raport cu numrul de controale introduse i de dimensiunile acestora; nu este estetic i nici practic s rmn zone mari nefolosite pe suprafaa formularului. Un formular include descrierea grafic a acestuia, controalele sale, proprietile, constantele, variabilele i procedurile externe, subrutinele de tratare a evenimentelor, procedurile generale. Fiecrui formular i corespunde un modul de formular (Form Module). Clasa de module (Class Module) este asemntoare formularului, dar nu dispune de interfa utilizator vizibil. Clasa de module poate fi folosit pentru
79

crearea obiectelor utilizator, cuprinznd secvene de cod pentru metodele i proprietile obiectelor definite. Obiectele care aparin aceleai clase nu sunt nzestrate cu evenimente proprii. Mediul VB asigur interfa pentru un singur document (SDI) sau interfaa multidocument (MDI). n cazul SDI, toate ferestrele mediului VB pot fi deplasate pe ecran, iar n cazul MDI, toate ferestrele mediului integrat de dezvoltare VB (numite fii) sunt incluse ntr-o fereastr unic (numit printe) ce poate fi redimensionat. Pentru a obine comutarea ntre modurile de lucru SDI i MDI se realizeaz urmtoarea succesiune de aciuni: se selecteaz Options (opiuni) din meniul Tools; efectul este apariia casetei de dialog Options; se selecteaz Advanced; se valideaz sau se invalideaz caseta SDI Developement Environement. n figura de mai jos sunt prezentate controalele implicite incluse n caseta cu instrumente (Toolbox). Controalele standard sunt butoanele de comand

(nr.14, Command Button), casetele cu text (nr.13, TextBox), etichetele (nr.2, Label), casetele de validare (nr.4, Check Box), butoanele de opiuni (nr.15, Option Button), casetele cu list (nr.16, ListBox), casetele cu imagine (nr.12, PictureBox), barele de defilare (nr.6 i nr.17, ScrollBar) orizontale i verticale, casetele combinate (ComboBox).

Caseta cu instrumente (ToolBox) Se face meniunea c aceast caset cu instrumente (Toolbox) este configurabil. Adugarea sau scoaterea de controale din caseta cu instrumente (Toolbox) se obine din meniul Project, opiunea Components.
80

Modul de adugare a unui control la cutia cu instrumente (Toolbox) Introducerea unui control din cutia cu instrumente (Toolbox) pe suprafaa formularului se obine prin parcurgerea etapelor urmtoare: se deplaseaz cursorul mouse-ului n cutia cu instrumente (Toolbox), pe pictograma care reprezint controlul ce urmeaz a fi introdus n formular i se acioneaz butonul din stnga al mouse-lui; se mut cursorul mouse-ului pe suprafaa formularului, n poziia n care va fi colul stng al controlului; se efectueaz succesiunea de operaii de tipul Drug and Drop pn se dimensioneaz dup dorin controlul selectat; se elibereaz butonul stng al mouse-ului. O alt modalitate de introducere a controlului selectat pe suprafaa formularului este reprezentat de dublu-click-ul mouse-ului pe pictograma (iconul) controlului din cutia cu instrumente (Toolbox). Se genereaz astfel un control cu dimensiunile implicite, dispus n centrul formularului. Dispunerea controalelor pe suprafaa formularului se face dup o anumit logic legat de succesiunea operaiilor importante de introducere date, prelucrare i afiare rezultate. Fiecare control este caracterizat de un ansamblu de proprieti ce se refer la descrierea comportamentului sau aspectului unui control. Limea sau nlimea unui control se msoar n twip (un twip reprezentnd cel mai mic punct adresabil de pe ecran, cu dimensiunea de 1/1440 inch). Aa cum se va arta
81

n paragraful urmtor, fereastra Properties permite modificarea ntre limite prestabilite a valorilor diferitelor proprieti ale controalelor. Focalizarea reprezint operaiunea de punere n eviden a unui control la un moment dat; mai precis, acel control devine activ prin focalizare. Acel control activ se mai numete i focar (focus). Acest lucru se pune n eviden printr-o linie punctat n jurul controlului sau printr-un titlu ngroat. Mutarea focarului de la un control la altul se efectueaz prin intermediul tastelor Tab sau Shift+Tab. Apsarea tastei Enter va determina aciunea controlului focar sau focalizat. Ordinea de parcurgere a controalelor n formular reprezint ordinea n care controalele sunt puse n eviden prin focalizare, o dat cu apsarea succesiv a tastei Tab. n momentul activrii formularului, este stabilit primul control care este focalizat. Proprietile comune tuturor controalelor din formular care stabilesc ordinea de parcurgere a controalelor sunt TabIndex (poziia) i TabStop (oprirea). Ordinea de parcurgere a controalelor este circular i n ambele sensuri nainte (Tab) i napoi (Shift+Tab). Un control poate include o tast fierbinte (Hot Key) ce este evideniat printr-o liter subliniat. Prin aciunea Alt+litera subliniat, se provoac aciunea controlului respectiv. Litera subliniat se introduce cu ajutorul proprietii Caption prin precedare de un ampersand (&). Redimensionarea unui control introdus deja pe suprafaa formularului se obine astfel: 1) se selecteaz controlul de redimensionat prin click executat cu mouse-ul n interiorul suprafeei acestui control. Pe marginile controlului apar mnerele de redimensionare; 2) se fixeaz cursorul mouse-ului n dreptul unui mner de redimensionare i se mic innd apsat butonul stng al mouse-ului, pn se obine dimensiunea dorit. Mnerele situate n colurile suprafeei controlului redimensioneaz controalele att pe vertical, ct i pe orizontal, iar mnerele dispunse pe laturi redimensioneaz controlul numai ntr-o singur direcie; 3) se elibereaz butonul stng al mouse-ului. Mutarea unui control pe suprafaa formularului se realizeaz cu mouse-ul prin tehnica Drug and Drop. Dup finalizarea proiectrii formularului, blocarea tuturor controalelor pe suprafaa formularului se obine din meniul Format cu opiunea Lock Controls sau cu butonul Lock Controls Toggle de pe bara cu instrumente Form Editor.
82

Formularele sau controalele VB au asociate, n cadrul proiectului, proceduri eveniment vide care sunt personalizate n momentul execuiei aplicaiei. Pentru exemplificarea etapei de creare a interfeei aplicaiei, n continuare se propune s se introduc controalele pentru un formular care s constituie interfaa pentru urmtoarea aplicaie informatic: S se realizeze un program n limbajul Visual Basic care s calculeze valoarea total a unei facturi de materiale. Deocamdat, factura conine un singur material la o rulare a programului. Datele de intrare sunt: numr factur (Nrf), data facturii (Df), codul materialului (Codmat), denumirea materialului (Denmat), cantitate (Cant) i preul unitar al materialului (Pu). TVA este de 19%. Datele de intrare vor fi introduse cu ajutorul casetelor text (Text Box) cu etichete pentru fiecare dintre ele. Rezultatele rulrii programului se vor afia n casete text separate pentru valoare material fr TVA (Vmftva), valoare material cu TVA (Vmctva), valoare factur fr TVA (Vfftva) i valoare factur cu TVA (Vfctva). Se vor prevedea butoane de comand (Command Button) pentru calculul i afiarea unui material (fr TVA i cu TVA) butonul CALCULEAZA i pentru calculul valorii facturii (fr TVA i cu TVA) butonul AFISEAZA. Pentru afiarea denumirilor pentru datele de intrare (Nrf, Df, Codmat, Denmat, Cant i Pu), a datelor intermediare (Vmftva i Vmctva) i a datelor de ieire sau rezultatelor (Vfftva i Vfctva), se folosesc controale de tip etichet (Label). Aceste controale de tip etichet se gsesc n caseta cu intrumente (Toolbox) cu simbolul grafic. Controalele se introduc n formular prin tehnica Drug and Drop i se dimensioneaz cu ajutorul mnerelor de dimensionare (Label1 Label10). n mod similar se procedeaz cu casetele text (Text Box) cu simbolul grafic casete care servesc, n cazul formulat n enunul aplicaiei informatice (un singur material pe factur), pentru introducerea datelor de intrare i afiarea datelor intermediare i de ieire (Text1Text2), precum i cu butoanele de comand (Command Button) ce se vor folosi pentru declanarea procedurilor de calcul (Command1), de afiare a valorii facturii (Command2) i de ieire din program (Command3).

83

Crearea formularului pentru aplicaia informatic cu factura de materiale

9.2.3. Precizarea proprietilor Precizarea proprietilor n etapa de proiectare (Design Mode) a formularului sau a altui obiect vizual se realizeaz cu ajutorul ferestrei Properties. Fereastra Properties este format din caseta cu obiecte, Objects (afieaz numele i tipul obiectului selectat, adic obiectul curent) i caseta Settings setri (afieaz alfabetic sau pe categorii lista proprietilor stnga i lista cu valorile sau setrile proprietilor dreapta).

Fereastra Properties
84

Activarea ferestrei Properties se poate obine prin succesiunea de comenzi meniu principal View Properties Window sau cu ajutorul tastei funcionale F4. Precizarea proprietilor se obine prin parcurgerea urmtoarele etape: 1) dac nu este afiat, se activeaz fereastra Properties; se selecteaz obiectul cruia urmeaz s i se precizeze proprietile; n acest moment, se afieaz automat proprietile cu valorile implicite pentru obiectul selectat; 2) din lista alfabetic sau lista pe categorii a proprietilor se selecteaz denumirea proprietii la care se vor modifica valorile sau setrile existente; 3) n coloana valorilor sau setrilor din dreapta se tasteaz sau se selecteaz valorile dorite pentru proprietate. Pentru a asocia o pictogram unui formular se atribuie o valoare proprietii icon pentru acel formular. Pentru exemplificarea etapei de precizare a proprietilor,se continu aplicaia cu factura materiale din paragraful 9.2.2, precizndu-se proprietile de baz Name i Caption pentru formular i controalele introduse de tipul Label, TextBox (numai Name) i Command Button prin selectarea succesiv a acestora. Personalizarea numelui pentru formular se obine prin introducerea n fereastra Properties a numelui (Name) frmMat i a etichetei (Caption) FACTURA MATERIALE. Personalizarea numelui pentru controalele de tip etichet (Label) se obine prin introducerea n fereastra Properties a numelui (Name) lblNrf i a etichetei (Caption) Numar factura, respectiv: lblDf (Name), Data factura (Caption); lblCodmat (Name), Cod material (Caption); lblDenmat (Name), Denumire material (Caption); lblCant (Name), Cantitate (Caption); lblPu (Name), Pret unitar (Caption); lblVmftva (Name), Valoare material fara TVA (Caption); lblVmctva (Name), Valoare material cu TVA (Caption); lblVfftva (Name), Valoare factura fara TVA (Caption); lblVfctva (Name), Valoare factura cu TVA (Caption). Personalizarea numelui pentru controalele de tip caseta cu text (TextBoxl) se obine prin introducerea n fereastra Properties a: txtNrf (Name) pentru Numar factura; txtDf (Name) pentru Data factura;
85

txtCodmat (Name) pentru Cod material; txtDenmat (Name) pentru Denumire material; txtCant (Name) pentru Cantitate; txtPu (Name) pentru Pret unitar; txtVmftva (Name) pentru Valoare material fara TVA; txtVmctva (Name) pentru Valoare material cu TVA; txtVfftva (Name) pentru Valoare factura fara TVA; txtVfctva (Name) pentru Valoare factura cu TV. Personalizarea numelui pentru controalele de tip butoane de comand (Command Button) se obine prin introducerea n fereastra Properties a: cmdCalcul (Name), CALCULEAZA (Caption); cmdAfisare (Name), AFISARE VALOARE FACTURA (Caption); cmdExit (Name), IESIRE (Caption). Aspectul formularului obinut prin precizarea proprietilor formularului i controalelor incluse este prezentat n figura de mai jos.

Introducerea proprietilor formularului i controalelor incluse pentru aplicaia informatic cu factura de materiale

9.2.4. Scrierea codului Dup proiectarea formularului i precizarea proprietilor, urmeaz scrierea codului care const n asocierea unor secvene de cod pentru toate controalele din formular, adic moduri de aciune la diverse evenimente. Codul
86

conine constante, declaraii de variabile i instruciuni scrise n limbajul de programare Visual Basic, n conformitate cu algoritmul de calcul. Legarea efectiv de control sau fereastr a secvenelor de cod se obine de ctre utilizator (programator) n mod conversaional. Pentru scrierea codului se deschide fereastra de editare a codului (Code Editor), prin dublu-click executat cu butonul stng al mouse-ului poziionat pe obiectul selectat. Fereastra de editare a codului (Code Editor) este format din fereastra principal ce reprezint zona pentru scrierea codului i dou casete de tip list din care se selecteaz controlul pentru care se scrie codul (Object) i, respectiv, din care se alege evenimentul la care se reacioneaz prin codul scris pentru procedur n fereastra principal (Procedure). Codul din proiectele realizate n VB se divide n blocuri de dimensiuni mai mici numite proceduri. Codul care corespunde unui eveniment se numete procedur eveniment. Procedura-eveniment asociat unui control are numele alctuit din numele controlului (stabilit n proprietatea Name), o liniu de subliniere (_) i numele evenimentului.

Fereastra editare a codului, Code Editor Atunci cnd se deschide fereastra de cod i se selecteaz evenimentul pentru care se scrie codul, se genereaz automat prima i ultima linie a procedurii (Private Sub Form_Load () i End Sub) ce constituie un ablon de lucru. Pentru crearea unei proceduri-eveniment se execut urmtoarea succesiune de aciuni: caseta Object se specific numele obiectului din formularul curent
87

(adic cel care este focalizat) pentru care se scrie codul caseta cu list Procedure selecie nume eveniment asociat obiectului selectat (de exemplu, procedura Click implicit pentru controlul buton de comand, Command Button) ablon pentru procedura-eveniment ntre declaraiile Private Sub i End Sub, se introduce de la tastatur codul n conformitate cu algoritmul de calcul. Se poate opta pentru afiarea tuturor procedurilor n aceeai fereastr de cod sau pentru afiarea unei singure proceduri la un moment dat. Pentru afiarea tuturor procedurilor n cadrul aceleiai fereastre de cod, se execut clic pe butonul de vizualizare a ntregului modul, Full Module View, n colul din stnga-jos al ferestrei de editare a codului, Code Editor sau se execut urmtoarea succesiune de aciuni: meniul Tools caseta de dialog Options seciunea Editor (1) grupul de setri pentru fereastr, Window Settings (2), bif n caseta de validare din stnga lui Default to Full Module View (3). n acelai grup de setri pentru fereastr, caseta de validare din stnga lui Procedure Separator (4) servete la adugarea sau eliminarea unei linii de separaie ntre proceduri.

Fereastra de opiuni, Options a meniului de instrumente, Tools Pentru afiarea unei singure proceduri la un moment dat, se execut click pe butonul de vizualizare a procedurii, Procedure View, n colul din stnga-jos al ferestrei de editare a codului, Code Editor sau se execut urmtoarea succesiune de aciuni: meniul Tools caseta de dialog Options seciunea Editor (1) n grupul de setri pentru fereastr, Window Settings (2), se terge bifa din caseta de
88

validare din stnga lui Default to Full Module View (3). Pentru exemplificarea etapei de scriere a codului unei aplicaii informatice n Visual Basic, se continu aplicaia cu factura de materiale din paragrafele 9.2.2 i 9.2.3. Codul aferent se introduce n fereastra de editare a codului (Code Editor). 9.2.5. Execuia aplicaiei informatice n Visual Basic Dup parcurgerea etapelor de creare a interfeei (proiectarea formularului), de precizare a proprietilor i de scriere a codului, toate fiierele aplicaiei sunt salvate i se trece de la modul de proiectare (Design Mode) la modul de rulare (execuie) a proiectului (Run Mode). Pentru a lansa n execuie aplicaia, se alege opiunea Start din meniul Run sau se acioneaz tasta funcional F5 sau se execut cu butonul stng al mouseului click pe butonul Start de pe bara cu instrumente. Terminarea rulrii proiectului se efectueaz cu opiunea End din meniul Run sau prin apsarea butonului de nchidere (Close) a ferestrei aplicaiei (colul din dreapta sus al ferestrei) sau prin apsarea butonului End de la bara cu instrumente. Dup terminarea execuiei aplicaiei, mediul VB revine n modul de proiectare (Design Mode). Prin rularea proiectului, se obine fiierul executabil. Aa cum s-a artat n paragraful 9.2.1, fiierul executabil se poate obine direct din meniul File cu opiunea Make EXE. Relund aplicaia cu factura de materiale din paragrafele 9.2.2, 9.2.3 i 9.2.4, aceast aplicaie se ruleaz cu seturile de date de intrare (se consider materiale consumabile pentru tehnica de calcul).

U9.3. Elementele limbajului de programare Visual Basic


9.3.1. Unele reguli de scriere O proprietate esenial a unui obiect n Visual Basic este numele (Name). Numele este folosit pentru a referi un obiect particular n cadrul codului. Numele obiectului trebuie s fie sugestiv i s arate, n cazul controalelor, grupul de controale cruia i aparine. Ca urmare, s-a adoptat convenia conform creia
89

un nume trebuie s fie format dintr-un prefix din trei litere (dat de notaia ungar) i numele propriu-zis cu semnificaie pentru utilizarea obiectului. Prefixul numelui indic, n mod unic, grupul de controale din care face parte. Numele obiectelor pot avea maxim 40 de caractere, trebuie s nceap cu o liter i pot conine numai litere, numere i underscore ( _ ). n cadrul mai larg al ntregului limbaj Visual Basic, cu setul de caractere ASCII extins ce formeaz alfabetul acestui limbaj, se construiesc literalii i identificatorii. Literalii sunt compui din iruri de caractere. Literalii pot fi de tipul literali iruri de caractere i sunt scrii ntre ghilimele, i de tipul literali numerici zecimali (n baza 10), octali (n baza 8), hexazecimali (n baza 16). Identificatorii pot fi predefinii (cuvinte rezervate i cuvinte-cheie ce desemneaz instruciuni, funcii, operatori, metode) sau pot fi definii de utilizator (ce desemneaz obiecte, variabile, tipuri de date, constante, etichete, proceduri). Instruciunile specifice limbajului Visual Basic se obin prin combinarea literalilor, identificatorilor i cuvintelor rezervate. Pentru lizibilitatea codului, fiecare instruciune se scrie pe o linie separat. Dac o instruciune nu ncape pe o linie, se poate continua pe linia urmtoare prin caracterul underscore (_). Se pot folosi 20 astfel de linii de continuare a unei instruciuni. Numele sunt folosite la setarea proprietilor la momentul execuiei i n stabilirea numelor procedurilor pentru evenimentele obiectelor. Setarea proprietilor la momentul execuiei se obine prin scrierea unui cod. Formatul acestui cod se scrie prin notarea cu punct i este: Nume obiect. proprietate = noua valoare (Object Name. Property = New value). n Visual Basic, numele obiectelor sunt utilizate n setarea unui cadru de lucru (framework) corespunztor procedurilor eveniment, pentru scrierea codului. Formatul fiecrei subrutine (n Visual Basic nu exist program principal; toate procedurile obiectelor sunt subrutine) este: Private Sub Object Name_Event (Optional Arguments) End Sub. Formularului i se ataeaz un obiect. Visual Basic construiete automat un cadru de lucru (framework) pentru fiecare dintre procedurile eveniment. Utilizatorul care construiete aplicaia trebuie s scrie codul procedurilor eveniment la care corespunde aplicaia.

90

9.3.2. Tipuri de date Tipurile de date reprezint natura datelor n cadrul unui limbaj de programare. n limbajul Visual Basic, tipurile de date sunt predefinite (standard) sau definite de utilizator. Tipurile de date definte de utilizator se obin prin combinarea mai multor tipuri de date existente n structuri de date. Declararea tipurilor de date definite de utilizator se efectueaz n seciunea Declaration (din modulul standard) cu TypeEnd Type care are sintaxa general: [Private/Public] Type nume_tip_data_utilizator Nume_1 As tip_data_1 Nume_2 As tip_data_2 Nume_n As tip_data_n End Type Tipurile de date definite de utilizator se declar la nivelul modulelor standard, de clas sau formular (numai Private). Aceste tipuri de date nu pot fi declarate la nivelul unei proceduri. De exemplu, tipul de date definite de utilizator Client are urmtoarea structur: Type Client Nume_client As String *20 Prenume_client As String *20 Adresa_client As Adresa CNP_client As String *13 End Type unde tipul de date definit de utilizator Adresa are structura: Type Adresa Localitate As String *20 Strada As String *20 Numar As Integer Judet As String *20 End Type

91

9.3.3. Variabile i constante Variabilele care se folosesc ntr-un program desemneaz locaii de memorie n care se stocheaz valori ce se modific pe timpul execuiei programului. O variabil n limbajul Visual Basic are un nume (identificator) format astfel: maxim 40 de caractere; numele include: litere, numere, underscore (): primul caracter trebuie s fie o liter; nu se pot folosi ca nume de variabile, cuvintele rezervate, care fac parte din setul de cuvinte cheie al limbajului. Corespunztor variabilei care se dorete a fi creat i utilizat, utilizatorul poate s stabileasc tipul de dat asociat prin folosirea unui sufix de natura tip de dat care va putea fi stocat sau prelucrat prin intermediul respectivei variabile. Exist trei moduri de declarare a unei variabile: Prin lips (din oficiu). Dac variabila nu este definit n nici un mod, ea este presupus Variant, adic un tip de dat Visual Basic care poate conine: valori numerice, iruri de caractere sau dat calendaristic. Implicit. Declararea implicit este dat prin folosirea sufixului corespunztor. De exemplu, o variabil de tip String (ir de caractere) poate fi declarat implicit astfel: Material$ = Cherestea iar o variabil de tip Integer se poate declara implicit astfel: Cantitatea% = 273 Explicit. Acest mod de declarare a unei variabile prezint mai multe avantaje: asigur efectuarea unui calcul corect prin intermediul instruciunilor care utilizeaz variabilele respective i permite identificarea, gestionarea corect a apariiei literelor mari sau a literelor mici n numele variabilelor. Datorit acestor avantaje, se prefer lucrul cu tipurile de variabile explicite. Pentru a putea lucra cu variabile declarate explicit trebuie s fie cunoscut domeniul de valabilitate i anume: 1) domeniul procedurilor; 2) domeniul procedurilor n care variabilele se declar static; 3) domeniul formularelor i modulelor;
92

4) domeniul nivelului global. De exemplu, pentru domeniul procedurilor, variabilele sunt declarate folosind cuvntul cheie Dim: Dim Denumire_material As String Dim Cantitate As Integer Dim Pret_unitar As Single. Variabilele declarate la nivelul procedurilor i vor pstra valorile numai pe timpul rulrii procedurilor respective. Din acest motiv se mai numesc i variabile locale. Pentru ca variabilele s-i pstreze valorile i dup terminarea procedurii, se folosete domeniul procedurilor n care variabilele se declar static, cuvntulcheie Dim fiind nlocuit cu Static. De exemplu: Static Denumire_material As String. Static Cantitate As Integer. Static Pret_unitar As Single. Pentru domeniul domeniul formularelor i modulelor, variabilele i menin valorile la nivelul formularului (modulului), relativ la toate procedurile prin declararea variabilelor cu Dim, dar n partea de declaraii a obiectului general, n fereastra de cod a formularului. Pentru domeniul domeniul nivelului global, o variabil este disponibil tuturor procedurilor prezentate n aplicaie, prin declararea n partea de declaraii a obiectului general din fereastra de cod a unui modul cu ajutorul cuvntului cheie Global. De exemplu: Global Nr_factura As Long Global Data_factura As Date. n cazul mai multor variabile cu acelai nume, variabilele locale au valabilitate numai n cadrul procedurilor. La prsirea acestor proceduri se folosesc variabilele cu acelai nume, dar definite la nivel superior. Procedura de introducere a acestor variabile globale este urmtoarea: se execut dublu-click oriunde n fereastra formularului pentru a deschide fereastra de editare a codului (sau se selecteaz opiunea View Code din fereastra Project); se declar variabilele din formular astfel: Option Explicit (foreaz declararea variabilelor)
93

Global Nr_factura As Long Global Data_factura As Date.

9.3.4. Constante simbolice utilizate n Visual Basic n cele mai multe situaii, funciile i obiectele limbajului Visual Basic necesit argumente pentru efectuarea operaiilor specifice, argumente care reprezint constante numerice. Acestea sunt greu de interpretat din punct de vedere al utilizatorului. Pentru a le face inteligibile, limbajul Visual Basic asigur nume celor mai utilizate valori i acestea se numesc constante simbolice. De exemplu, pentru setarea fondului formularului frmMat pe culoarea albastr se poate scrie: frmMat. Back Color = 0XFF0000 sau, folosind constanta simbolic pentru albastru: frmMat. Back Color = VBBlue Utilizatorul i poate defini propriile constante ca de exemplu: const TVA = 0.24. Constantele de utilizator se scriu cu litere mari, pentru a le distinge de variabile. Domeniul de valabilitate al unei constante este similar cu cel al variabilelor.

U9.4. Test de autoevaluare nr. 9


1. Ce este fiierul proiect? (1,5 pct.) 2. Cum se creeaz o interfa a aplicaiei? (1,5 pct.)
Timp de lucru: 40 min Punctaj 4,5p

3. Enumerai elementele limbajului de programare VB (1,5 pct.) Puncte obinute..

Total puncte: 4,5

U9.5. Rezumat
n cele mai multe situaii, funciile i obiectele limbajului Visual Basic necesit argumente pentru efectuarea operaiilor specifice, argumente care reprezint constante numerice. Acestea sunt greu de interpretat din punct de vedere al utilizatorului. Pentru a le face inteligibile, limbajul Visual Basic asigur
94

nume celor mai utilizate valori i acestea se numesc constante simbolice.

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 9

95

MODULUL 4
UNITATEA 10: FOXPRO I UNITATEA 11: FOXPRO II

96

UNITATEA 10 FOXPRO
Durata medie de studiu individual - 2 ore

Cuprins:
U10.1. Scopul i obiectivele unitii ........................................................... U10.2. Prezentare general FOXPRO ...................................................... U10.3. Intrarea i ieirea din FoxProW. Mediul FoxProW. Elemente de interfa ...................................................................................... U10.4. Tipul logic ........................................................................................ U10.5. Tipul numeric .................................................................................. U10.6. Tipul ir de caractere ..................................................................... U10.7. Tipul memo ..................................................................................... U10.8. Tipul dat calendaristic ................................................................ U10.9. Baze de date ..................................................................................... U10.10. Cmpurile memo .......................................................................... U10.11. Meniuri .......................................................................................... U10.12. Programe. Execuia programelor ............................................... U10.13. Programarea structurat ............................................................. U10.14. Lucrul cu fiiere ............................................................................ U10.15. Test de autoevaluare ..................................................................... U10.16. Rezumat ......................................................................................... Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag. 97 98 103 104 105 109 112 112 116 121 122 138 149 154 157 157 157 158

U10.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: FoxPro prezentare general; mediul FoxPro; elemente de interfa ale FoxPro; Tipuri; baze de date FoxPro; cmpurile memo i meniuri; execuia programelor; programarea structurat; lucrul cu fiiere.
97

U10.2. Prezentare general FOXPRO


Fereastra COMMAND - orice comand scris n aceast fereastr se execut imediat. Meniul bar FILE Opiunea NEW - permite crearea unei noi baze de date, program, fiier, raport, etichet, ecran, meniu, querry, proiect. Opiunea OPEN - deschide o fereastr de navigare, de unde ne putem alege aplicaia, baza, etc., pe care dorim s le deschidem. Opiunea CLOSE - nchide aplicaia la care lucrm fr a iei din mediul Fox. Opiunea SAVE i SAVE AS - execut salvarea bazei, a aplicaiei, etc. Opiunea PRINTER SETUP - permite setarea imprimantei. Opiunea PRINT - tiprirea unui document. Opiunea QUIT - prsirea mediului Fox. Crearea unei baze de date Forma general a comenzii: CREATE [<fiier>] Dac pentru acest fiier nu se specific nici o extensie, atunci Fox-ul asociaz implicit: .dbf. Va apare pe ecran o fereastr n care va fi creat structura bazei de date. Avem opiunile: name - pentru numele unui cmp. type - tipul cmpului (ce fel de date se memoreaz n acesta). width - numrul de octei asociat cmpului. dec - numrul de zecimale (pentru cmpuri numerice). INSERT si DELETE se folosesc pentru inserarea sau tergerea unui cmp n i respectiv din structura creat. Comanda LIST este utilizat pentru listarea coninutului unei baze de date. Meniul EDIT - conine cteva comenzi obinuite n lucrul cu fiierele. Opiunea CUT - duce textul selectat ntr-o zon special de memorie numit clipboard. Opiunea COPY - face o copie dup textul selectat n zona de clipboard.
98

Opiune PASTE - se folosete pentru a aduce din zona clipboard poriunea ce a fost copiat. Obs. Opiunea PASTE se folosete dup opiunea COPY. Opiunea CLEAR - terge textul selectat. Opiunea SELECT ALL - selecteaz ntreaga fereastr activ. Opiunea GOTO LINE - se folosete pentru a ne poziiona pe o anumit linie din fereastra activ. Opiunea FIND - se folosete pentru a cuta o anumit informaie (de tip numeric, sir de caractere, etc.). Opiunea FIND AGAIN - gsete urmtoarea informaie, ce se aseamn cu cea cutat de utilizator. Opiunea REPLACE AND FIND AGAIN - se folosete atunci cnd dorim nlocuirea unei anumite informaii cu o alta, aleas de noi. Opiunea REPLACE ALL - se folosete atunci cnd dorim nlocuirea unei anumite informaii din textul nostru, ori de cte ori apare, cu o alt informaie aleas de noi. Meniul WINDOW Acest meniu permite manipularea ferestrelor active de pe ecran. Toate ferestrele ce se folosesc n FoxPro, au cteva elemente comune. Vom exemplifica aceste elemente folosindu-ne de cea mai important fereastr din FoxPro i anume fereastra de comenzi: Opiunea HIDE - ascunde sau nchide fereastra activ. Reapariia ferestrei de comenzi pe ecran se face folosind opiunea COMMAND din acest meniu, sau combinaia de taste CTRL+F2. Opiunea CLEAR - se folosete pentru a terge de pe ecran toate informaiile afiate la un moment dat. Obs.: Acelai lucru se poate face dac se scrie n fereastra de comenzi comanda CLEAR. Opiunile MOVE, SIZE, ZOOM , ZOOM se folosesc pentru mutarea ferestrei active dintr-o zon n alta a ecranului (MOVE); pentru redimensionarea ferestrei (SIZE); pentru mrirea pe tot ecranul (ZOOM ) sau pentru micorarea ferestrei la nivel de bar de stare (ZOOM ). Comenzi pentru descrierea structurii unei baze de date Comanda CREATE (prezentat anterior).

99

Comanda MODIFY STRUCTURE - realizeaz modificarea structurii unei baze de date existente. Baza de date, nainte de modificarea structurii, trebuie activat. Forma comenzii este: MODIFY STRUCTURE <Enter> Efectul acestei comenzi este apariia pe ecran a unei ferestre asemntoare ca structur, cu cea de la comanda CREATE, n care se afieaz date despre structura bazei de date respective i anume: - numele cmpurilor bazei de date (NAME) - tipul de informaie din cmpul respectiv (TYPE) - dimensiunea cmpului (WIDTH) - partea fracional a dimensiunii (DEC) Modificrile cmpurilor deja existente n baza de date se pot face prin trei operaii: - inserare; - tergere; - adugare. Pentru inserare, se plaseaz cursorul pe cmpul urmtor i se acioneaz tastele INSERT din submeniul FIELD. Pentru tergere, se plaseaz cursorul pe cmpul respectiv i se acioneaz tasta DELETE din acelai submeniu. Pentru adugare, se plaseaz cursorul dup ultimul cmp. Dup ce am efectuat toate modificrile n structura bazei de date respective, apsm butonul OK i programul ne va ntreba dac dorim s pstrm aceste modificri sau nu. Comanda DISPLAY STRUCTURE - afieaz structura bazei de date active. Forma comenzii este: DISPLAY STRUCTURE <Enter> n plus mai furnizeaz: numele bazei de date, numrul nregistrrilor, data ultimei actualizri. Comanda LIST STRUCTURE - are acelai efect ca i comanda anterioar, cu deosebirea c afieaz toat structura bazei de date, chiar dac numrul de cmpuri este mai mare de 16. Comenzi de utilizare a bazei de date i de introducere de date (informaii) ntr-o baz de date.

100

Comanda USE - deschide o baz de date n vederea utilizrii sale. Forma comenzii este: USE <nume baz de date> Efectul acestei comenzi nu este de ordin vizual adic, pe ecran nu va aprea nici o informaie sau fereastr nou, fa de cele existente anterior execuiei acestei comenzi. Dar aceast baz de date devine activ i astfel utilizatorul o poate folosi pentru prelucrrile dorite. Comanda de nchidere a unei baze de date este: USE <Enter> Comanda LIST - afieaz pe ecran toate nregistrrile din baza de date activ. Comanda BROWSE - este una din cele mai folosite comenzi FoxPro i se utilizeaz la introducerea de noi informaii n baza de date activ i la modificarea informaiilor existente. Forma comenzii este: BROWSE [<clauze>] <clauzele> sunt opionale i se folosesc numai de utilizatorii avansai. Obs.: Comanda BROWSE mai poate fi activat i din meniul DATABASE. Efectul acestei comenzi este apariia pe ecran a unei ferestre cu numele bazei de date active, fereastr n care se pot face modificri asupra nregistrrilor existente i n plus se pot aduga noi nregistrri folosind combinaia de taste CTRL+N. Comanda APPEND - este asemntoare cu BROWSE, doar c utilizeaz modul de lucru ecran pentru introducerea datelor. Forma comenzii este: APPEND <Enter> Obs.: Comanda APPEND poate fi activat i din meniul RECORD. Adugarea unei nregistrri noi se poate face utiliznd combinaia de taste CTRL+Y. Se recomand folosirea comenzii BROWSE atunci cnd dorim modificarea nregistrrilor dintr-o baz de date dat, deoarece fereastra BROWSE ofer accesul mai rapid la orice cmp i orice nregistrare din baza de date respectiv. Crearea structurii unei baze de date CREATE O dat creat structura bazei de date, ea nu se mai creeaz niciodat; se poate doar modifica cu MODIFY STRUCTURE - prin crearea bazei de date se distruge coninutul ei de pn atunci. Comanda SET STATUS ON face s apar linia stare n care avem: - numele bazei curente
101

- poziia cursorului - starea tastelor INSERT , NUMCAPS. Pentru a lucra cu o baz de date, ea trebuie mai nti deschis. Comanda: USE <nume> Comenzi care afieaz nregistrri. DISPLAY - afieaz nregistrri din baza de date (se oprete dup umplerea unui ecran) LIST - afieaz nregistrri din baza de date DISPLAY [FIELDS] list cmpuri [scope] FOR [expL1] WHILE [expL2] OFF. Sistemele software prin intermediul crora se creeaz, se actualizeaz i se consult bazele de date se numete Sistem de Gestiune a Bazelor de Date (S.G.B.D.-uri). Fox Pro este un astfel de sistem. Pentru manipularea unei baze de date Fox Pro folosete o zon de memorie n care memoreaz unele informaii referitoare la starea bazei de date numit zon de lucru. Acest SGBD poate lucra simultan cu mai multe baze de date, deci va avea mai multe zone de lucru (25 la numr). Modul de lucru cu o baz de date este urmtorul: - se deschide baza de date ( acesteia i se atribuie o zon de lucru) - se execut operaiile dorite asupra bazei de date respective (adugri, tergeri etc) - la terminarea lucrului cu baza de date aceasta se nchide. Aliasul unei baze de date este numele atribuit acesteia pentru a fi identificat.. Aliasul poate fi furnizat de utilizator sau poate fi atribuit automat de ctre Fox Pro. Un concept mai nou n domeniul bazelor de date este relaia. O baz de date relaional nu mai este vzut ca un simplu tabel, ci ca o mulime de tabele, aflate n relaie unul cu altul. Se stabilete o relaie de subordonare ntre cele dou sau mai multe tabele, primul numit printe iar cel de-al doilea copil.

102

U10.3. Intrarea i ieirea din FoxProW. Mediul FoxProW. Elemente de interfa


Pentru a porni FoxPro-ul sub Windows este necesar ca anterior se fi fost instalat att sistemul Windows ct i FoxProW-ul sub acest sistem. Presupunnd c aceste operai s-au executat, pornirea FoxProW-ul se realizeaz prin urmtoarele etape: - se pornete Windows-ul prin introducerea la prompt-ul sistemului do operare a comenzii: C: \>win - dat pornit aceast platform grafic, urmeaz deschiderea ferestrei grupului care conine icoana corespunztoare FoxPro-ului sub Windows (grup implicit numit FoxPro for Windows), printr-un clic dublu pe icoana acestui grup; - din fereastra deschise se alege icoana corespunztoare FoxProW-ului, implicit numite Microsoft FoxPro, printr-un clic dublu pe aceasta; sistemul FoxProW este acum pornit. Iniial, fereastra asociat FoxPro-ului arat ca n figura de mai jos:

La partea superioar a acesteia, imediat sub titlu, se afl meniul sistem al FoxProW-ului, prin care utilizatorul poate introduce comenzile sale n mod interactiv. Comenzile pentru lucrul cu acest meniu pot fi de dou feluri: fie cele specifice platformei grafice Windows, fie cele specifice variantei sub DOS a FoxPro-ului. La instalare, utilizatorul este ntrebat asupra setului de taste i combinaii de taste folosit pentru comunicarea cu FoxProW-ul. Un alt element al mediului FoxProW este fereastra de comenzi (aflat n colul din dreapta-jos n figura de mai sus). Aceasta permite utilizatorului s introduce comenzi FoxProW n vederea execuiei imediate. Alturi de meniul sistem, fereastra de comenzi pune la dispoziia utilizatorului un alt mod de a transmite comenzile sale FoxProW-ului. Fereastra de comenzi poate fi manipulat ca orice alte fereastr Windows.
103

Ecranul FoxProW, care este de fapt zona utilizator a ferestrei Microsoft FoxPro, reprezint zona de afiare a informaiilor de ctre sistemul FoxProW, ca rezultat al comenzilor transmise de utilizator. Spre deosebire de varianta sub DOS, care folosea ca ecran de lucru tot ecranul fizic al monitorului, FoxProW folosete doar interiorul ferestrei Microsoft FoxPro ca ecran de lucru, dimensiunile lui depinznd de dimensiunile acestei ferestre. Iniial, pe ecran este afiat sigla FoxPro-ului sub Windows (vulpea). Pentru a putea vedea ntregul coninut al ecranului FoxProW, inclusiv poriunea de sub fereastra de comenzi, se poate ascunde aceast fereastr, se poate transforma ntr-o icoan sau se poate nchide, reafiarea sa realizndu-se prin alegerea opiunii Command de pe submeniul Window. Alturi de aceste trei elemente ale interfeei FoxProW-ului, care sunt vizibile pe ecran imediat dup pornirea acestui S.G.B.D., comunicarea dintre utilizator i sistem mai implic i alte elemente cum ar fi ferestrele sistem i obiectele de control. Ferestrele sistem sunt deschise de FoxProW ca urmare a unor comenzi ale utilizatorului, n vederea realizrii comunicrii dintre cei doi, utilizator i S.G.B.D.. ferestrele sistem pot conine mesaje, obiecte de control i chiar meniuri asociate i sunt manipulate ca oricare alt fereastr Windows n limbajul FoxPro vom avea urmtoarele tipuri de date : - tipul logic - tipul numeric - tipul ir de caractere - tipul dat calendaristic - tipul memo

U10.4. Tipul logic


Acest tip este caracteristic datelor ce nu pot lua dect dou valori, adevrat (true) sau fals (false). Pentru a specifica valoarea adevrat a unei expresii de tip logic se folosete construcia T (de la True), iar pentru valoarea fals se folosete F (de la False). Operatorii logici n ordinea prioritii de evaluare sunt sintetizai n tabelul urmtor:

104

Operator Semnificaie () grupeaz expresii logice !,NOT negaie logic AND i logic OR sau logic De asemenea rezultatul unei expresii care conine operatori relaionali (<,>,=) este tot de tip logic.

U10.5. Tipul numeric


O mare parte a datelor prelucrate de calculator o reprezint numerele, pentru a cror descriere se folosete tipul numeric. Cu toate c limbajul FoxPro este orientat pe lucrul cu baze de date i nu unul orientat pe calcule matematice, tiinifice (cum este Fortran-ul, Pascal-ul etc.) tipul numeric este implementat astfel nct s realizeze majoritatea operaiilor matematice ntlnite n practic. Operatorii care se aplic unor operanzi numerici sunt sintetizai n tabelul urmtor n ordinea prioritii de evaluare: Operator Semnificaie () paranteze ptr. gruparea expresiilor **,^ ridicare la putere *,/,% nmulire ,mprire, modulo (restul mpririi) +,adunarea i scderea ntre dou expresii numerice se pot aplica operatori relaionali, obinnduse astfel expresii logice. Aceti operatori sunt prezentai n tabelul urmtor: <operator> relaie < mai mic dect > mai mare dect = egal cu <>,#,!= diferit de <= mai mic sau egal cu >= mai mare sau egal cu Afiarea numerelor este controlat de comanda SET DECIMALS care are sintaxa: SET DECIMALS TO [<expN] Aceast comand determin numrul minim de cifre zecimale ce sunt afiate dac nu se specific un format explicit de afiare. Implicit acest numr este de 2 zecimale. Ex. ?2?3 0.67 SET DECIMALS TO 4 ?2/3
105

0.6667 Funcii referitoare la semnul datelor numerice Pentru aflarea valorii absolut a unui numr se folosete funcia ABS() cu sintaxa ABS(<expN>) Ex. ?ABS(-400) 400 Funcia SIGN() este folosit pentru a afla semnul numrului transmis ca argument astfel: SIGN(<expN>) returneaz: +1 dac <expN> este pozitiv 1 -1 Ex. ?SIGN(-33) -1 Funcii de aproximare a datelor numerice Partea ntreag a unei expresii numerice este returnat de funcia INT() cu sintaxa: INT(<expN>) Ex. ?int(14.34) 14 ?INT(-2.42) -2 Partea fracionar a unui numr se obine folosind tot funcia INT(), astfel: a = 14.34 ?a-INT(a) 0.34 Alte moduri de a obine o aproximaie ntreag a unui numr sunt date de funciile CEILING() i FLOOR() cu sintaxele: CEILING(<expN>) FLOOR(<expN>) Funcia CEILING() returneaz cel mai apropiat ntreg mai mare sau egal cu <expN>, iar FLOOR() se folosete pentru a afla cel mai apropiat ntreg mai mic sau egal cu <expN> Ex. ?CEILING(8.32) 9 nul negativ

106

?ceiling(-4.23) -4 ?FLOOR(8.32) 8 ?FLOOR(-4.32) -5 Funcia ROUND() realizeaz de asemenea o aproximare. a unui numr dar nu neaprat la un ntreg, ci la un numr real cu un numr dat de zecimale Sintaxa comenzii: ROUND (<expN1>,<expN2>) unde: <expN1> reprezint expresia de rotunjit iar <expN2> este numrul de zecimale ce se vor pstra n valoarea returnat de funcie. Numrul de zecimale exprimat prin SET DECI va fi ignorat. Funcii matematice elementare Din categoria acestor funcii fac parte exponeniala(ex), logaritmul natural (ln x), logaritmul zecimal (log x), radicalul ( ) Aceste funcii au formatul general: EXP(<expN>) LOG(<expN>) LOG 10(<expN>) SQRT(<expN>) Funcii trigonometrice Conversia din grade n radiani este implementat prin funcia DTOR() iar conversia invers prin RTOD(). Aceste dou funcii au sintaxele : DTOR(<expN>) RTOD(<expN>) Pentru funcia DTOR() (<expN>) reprezint unghiul exprimat n grade a crui conversie o dorim iar pentru. RTOD() reprezint unghiul exprimat n radiani ce se va transforma n grade. Ex. ?DTOR(90) =PI()/2 .T. ?RTOD(PI()/4) 45.00 Funciile trigonometrice sinus, cosinus, tangent au urmtoarele sintaxe : SIN(<expN>) COS(<expN>)
107

TAN(<expN>) unde < expN> este argumentul funciei reprezentnd unghiul a crei funcie se calculeaz, exprimat n radiani. Rezultatele sunt de tip numeric. Ex.? SIN(PI()/2) 1.00 ? COS(PI()) -1 Funciile trigonometrice inverse ASIN() ;ACOS();ATAN() cu sintaxele: ASIN(<expN>),ACOS(<expN>),ATAN(<expN>) expN - numrul a crui funcie se calculeaz Funcii referitoare la calcule financiare n aceast categorie intr trei funcii i anume: PAYMENT(),PV(),FV() i au sintaxele: PAYMENT(<EXPn1,EXPn2,EXPn3>) PV(<EXPn1,EXPn2,EXPn3>) FV(<EXPn1,EXPn2,EXPn3>) unde cele trei expresii numerice au semnificaii diferite pentru fiecare funcie n parte. Pentru o mai bun nelegere vom explicita cele trei funcii prin exemple. S presupunem c avem de returnat un mprumut de 500.000 u.m., suma pe care o avem depus ntr-o banc ce practic o dobnd de 1% lunar adic la sfritul fiecrei luni la suma de bani pe care o avem momentan n banc se adaug 1% din aceast sum ca dobnd. S presupunem c mprumutul trebuie returnat n rate lunare n 24 luni. Ne intereseaz ce sum trebuie s achitm lunar pentru a returna mprumutul n perioada precizat. Aceast problem se rezolv cu funcia PAYMENT() avnd urmtoarele corespondene: <expN1> reprezint valoarea mprumutului (500.000) <expN2> rata dobnzii (0.01) <expN3> numr de rate pentru achitarea mprumutului (24) Valoarea returnat de funcie reprezint valoarea ce trebuie achitat lunar pentru a acoperi mprumutul. N1=500.000 N2=0.01 N3=24 ?PAYM(N1,N2,N3)
108

23536.74 Folosirea funciei FV() n calcule financiare. Presupunem c am deschis un cont la o banc ce practic o dobnd de 1% lunar , iniial contul este gol , dar ne propunem s depunem lunar o sum de 3.000 u.m. . Ne intereseaz ce sum vom avea n cont dup 36 luni de la deschiderea contului . Valoarea aceasta este returnat de funcia FV() folosind ca parametrii: <expN1> suma ce se va depune lunar n cont <expN2> rata dobnzii practicate de banc <expN3> numr de depuneri dup care se calculeaz suma din cont(egal cu numr de luni n cazul cnd se face o singur depunere pe lun) Ex. N1=3000 N2=0.01 N3=36 ? FV (N1,N2,N3) Presupunem c avem un cont la o banc ce practic o rat a dobnzii de 1% lunar. Propunndu-se ca n curs de 48 luni pltind lunar din cont cte 4.000 u.m. ne intereseaz ce sum am putea acoperi din acest cont presupunnd c dup achitarea sumei contul este gol. Aceast valoare este returnat de funcia PV() care necesit parametrii: <expN1> suma ce se scoate lunar din cont <expN2> rata dobnzii practicate de banc <expN3> nr. de luni n care se scot banii din banc Ex. N1=4.000 N2=0.01 N3=48 ? PV(N1,N2,N3) 151895.84

U10.6. Tipul ir de caractere


Un ir de caractere reprezint o mulime ordonat de caractere care se trateaz ca un tot unitar. ntr-un ir de caractere ,ordinea acestora fiind esenial , fiecruia i se va putea asocia un numr reprezentnd poziia caracterului n cadrul irului (primul caracter va avea poz.1 al doilea poz.2 .a.m.d.

109

Numrul caracterelor dintr-un ir reprezint lungimea irului. Un subir al irului dat reprezint o poriune din ir ncepnd de la o poziie specificat i de lungime dat. Constantele de tip ir de caractere specific prin mulimea caracterelor care l compun ncadrat de apostrofuri simple sau duble (la ambele capete avnd acelai tip de apostrof). Dac lungimea irului de caractere este 1 acesta se . Dac lungimea irului este 0 obinem irul nul sau vid, care se specific prin dou apostrofuri consecutive fr spaii sau alte caractere ntre ele, adic sau Funcii referitoare la subirurile de caractere Extragerea unui subir dintr-un ir de caractere se realizeaz cu funcia SUBSTR() care are urmtoarea sintax: SUBSTR (<expC,expN1[,<expN2>]) unde <expC> reprezint expresia din care se extrage subirul. Specificarea subirului se face prin intermediul celor dou expresii numerice transmise ca parametrii funciei. <expN1> precizeaz poziia de unde ncepe subirul de extras (se extrage inclusiv caracterul de pe aceast poziie) <expN2> reprezint nr. de caractere ce se extrag, adic lungimea subirului. Dac <expN2> lipsete subirul se ntinde pn la sfritul irului de baz. n anumite situaii se pot folosi alte dou variante ale acestei funcii, acestea sunt LEFT() i RIGHT() care returneaz un subir al unui ir poziionat la stnga, respectiv la dreapta. Sintaxele celor dou funcii sunt: LEFT(<expC>,<expN>) RIGHT(<expC>,<expN>) unde <expC> reprezint irul de caractere din care se extrage subirul, iar <expN> reprezint lungimea subirului extras. Ambele funcii au ca rezultat un ir de caractere. Ex. ?LEFT(LA MULTI ANI!, 2) LA ? RIGHT(POFT BUN !,6) BUN !
110

reduce la un caracter ex. A,1,

Funcia REPLICATE() cu sintaxa: REPLICATE (<expC>,<expN>), returneaz un ir de caractere obinut prin repetarea irului <expC> de <expN> ori. Ex. ?REPLICATE (a,5) aaaaa Funciile PADC() , PADL() , PADR() cu sintaxa de forma: PADC (<expr>,,expN>[,<expC>]) PADL (<expr>,,expN>[,<expC>]) PADR (<expr>,,expN>[,<expC>]) Aceste funcii adaug la expresia <expr> irul de caractere <expC>, la dreapta pentru PADR(), la stnga pentru PADL() i la ambele capete pentru PADC() pn se obine o lungime a irului de <expN> caractere. Se observ c <expr> poate fi de tip ir de caractere, de tip numeric sau de tip dat calendaristic, n cazul ultimelor dou realizndu-se mai nti conversia la tipul ir de caractere. Ex.?PADL (Pagina1,40.-) Funcii privind transformri ale irurilor de caractere Diferenierea dintre caracterele alfabetice mici i mari a dus la necesitatea transformrii caracterelor mici n majuscule i invers. Aceste operaii sunt realizate de funciile LOWER(), UPPER(() i PROPER(), care au ca efect prelucrarea unui ir de caractere primit ca parametru, astfel: LOWER() transform toate majusculele n litere mici, restul caracterelor rmnnd neschimbate. UPPER() transform toate caracterele mici n majuscule corespunztoare , restul caracterelor din ir rmnnd neschimbate. PROPER() transform primul caracter dintr-un cuvnt n majuscul (dac este alfabetic), iar urmtoarele n litere mici. Sintaxele celor trei funcii sunt: LOWER(<expC>) UPPER(<expC>) PROPER(<expC>) Ex. a=ALFA b=alfa ?UPPER(a)==UPPER(b) .T
111

U10.7. Tipul memo


Acest tip de date reprezint o facilitate puternic a FoxPro dnd programatorului posibilitatea controlului, la nivel inferior, a diverselor date (drivere de imprimant, de ecran, diverse texte cu lungime variabil etc.). Tipul memo este asemntor tipului ir de caractere.

U10.8. Tipul dat calendaristic


Expresiile de tip dat calendaristic pot conine: - cmpuri de acest tip ale unei baze de date - funcii ce returneaz valori de tip dat calendaristic - variabile de tip dat calendaristic - constante de tip dat calendaristic O constant de tip dat calendaristic se specific prin luna, ziua i anul corespunztor, separate prin caracterul /i ncadrate ntre caracterul acolade. Ordinea de specificare a zilei, lunii i anului, modul de scriere a anului (cu dou sau patru cifre) ct i separatorul dintre cele trei componente ale datei sunt controlate de comenzi ce urmeaz s fie prezentate mai jos. Implicit anul se specific prin dou cifre, ordinea implicit este lun/zi/an, iar separatorul implicit este /, adic format american. Ex. STORE {11/24/91} TO data c ?data c 11/24/91- rspuns pe ecran Data calendaristic vid se specific prin blancuri n poziia zilei, lunii i anului sau printr-un blanc ncadrat ntre paranteze acolade. Ex. data_v ={ / / } data_v={ } Observaie: FoxPro trateaz datele invalide (care nu exist) ca date calendaristice vide. Ex. ? {02/330/92} ={ } .T. Constantele de acest tip sunt reprezentate n calculator prin numere reprezentnd zile, deci se poate scdea sau aduna o valoare numeric la o dat fixat.
112

Ex. ? {02/29/92} +1 03/01/92 Observm c adunarea unei zile la o dat calendaristic nu are ca efect creterea cu 1 (unu ) a numrului de zile ci avansarea datei cu o zi n ordine calendaristic. Operatorii raionali se pot aplica i asupra datelor calendaristice. O dat calendaristic este mai mare dect o alta atunci cnd prima dintre acestea urmeaz calendaristic celei de-a doua. Formatul de specificare a datelor calendaristice este controlat de comanda SET DATE care are urmtoarea sintax: SET DATE TO |AMERICAN | BRITISH | FRENCH | GERMAN | ... Urmtoarea tabel sintetizeaz aciunea comenzii SET DATE Tipul datei American British German Italian Japan FORMATUL LL/ZZ/AA ZZ/LL/AA ZZ.LL.AA ZZ-LL-AA AA/LL/ZZ

Formatul implicit pentru data calendaristic este cel AMERICAN. n specificarea anului se pot folosi dou cifre, sau prin 4 cifre cnd anul este specificat complet. Alegerea ntre aceste dou variante se face cu comanda SET CENTURY care are sintaxa: SET CENTURY ON | OFF unde cazul ON indic 4 cifre pentru an iar OFF stabilete formatul de 2 cifre pentru an. De asemenea delimitatorii care separ ziua, luna i anul din expresia unei constante de tip dat calendaristic se pot modifica prin comanda SET MARK TO cu sintaxa: SET MARK TO [<expC>] Expresia <expC> trebuie s reprezinte un singur caracter care va deveni delimitatorul n reprezentarea extern a datelor calendaristice. Separatorul implicit folosit pn la execuia unei comenzi SET MARK TO este caracterul / . Data curent a sistemului se obine folosind funcia DATE() care are sintaxa :ss DATE () Rezultatul funciei este de tip dat calendaristic.
113

Ex. ?DATE ( ) 11/03/99 SET CENTURY ON SET MARK TO . ? DATE ( ) 11.03.1999 Avnd o expresie de tip dat calendaristic putem afla n ce zi din cadrul cade aceast dat. Acest lucru se realizeaz cu funciile DOW ( ) i CDOW ( ) care au sintaxele: DOW(<expD>) CDOW (<expD>) Ambele funcii primesc ca parametru expresia de tip dat calendaristic returnnd ziua din cadrul sptmnii n care cade aceast dat, astfel: - ca ir de caractere reprezentnd numele zilei din cadrul sptmnii (Sunday, Monday, etc.) pentru CDOW( ) - ca numr reprezentnd a cta zi din sptmn (1 pentru Luni, 2 pentru Mari, etc.) pentru DOW( ) Ex. ? CDOW(DATE()) Wednesday ?DOW(DATE()) 3 Ziua n cadrul lunii este returnat de funcia DAY () cu urmtoarea sintax: DAY (<expD>) Ex. ? DAY({03/14/90}) 14 Luna corespunztoare unei expresii de tip dat calendaristic este returnat de funciile MONTH () i CMONTH (), cu sintaxele: MONTH (<expD>) CMONTH (<expD>) Ca i n cazul celor dou funcii anterioare i la acestea deosebirea provine de la valoarea returnat de ele i anume : - un ir de caractere reprezentnd denumirea lunii corespunztoare date (Ianuary, February,etc.) pentru funcia CMONTH() - un numr reprezentnd a cta lun n cadrul anului (1 ptr. ianuarie, 2 ptr. februarie, etc.) pentru funcia MONTH(). Ex. ? MONTH (DATE()) 11
114

?CMONTH(DATE()) NOVEMBER CONTROLUL TIMPULUI N FOXPRO Ora exact a sistemului se obine cu funcia TIME () care are sintaxa: TIME ([<expN>]) Valoarea returnat de aceast funcie este un ir de caractere de lungime 8, formatul HH:MM:SS, unde: - HH reprezint dou cifre ptr. or (de la 0 la 23) - MM reprezint dou cifre pentru minute (de la 0 la 59) - SS reprezint dou cifre pentru secunde ( de la 0 la 59) Dac n apelul funciei se specific i <expN>, valoarea returnat va include i sutimi de secund; irul returnat va avea lungimea de 11 caractere, ultimile dou poziii reprezentnd sutimile de secund. Ex. ? TIME () 04 :30:40 ? TIME(0) 04:30:40. 80 Exist dou funcii care msoar intervalul de timp ce s-a scurs de la miezul nopii, adic de la ora 0 (zero), pn n prezent. Funcia SYS (2) returneaz numrul de secunde ce a trecut de la ora zero, rezultatul fiind de tip numeric. Ex. ? TIME () 02:40:34 ? SYS (2) 9648 Acelai efect cu al funciei SYS (2) l obinem cu funcia SECONDS (), diferena dintre cele dou funcii fiind rezoluia. Sintaxa funciei este: SECONDS(), iar rezultatul este numeric cu trei cifre dup virgul, reprezentnd numrul de milisecunde. Ex. ? TIME() ----------? SYS (2) 9672 ? SECONDS () 9683.482

115

Ora exact dat de sistem, poate fi meninut tot timpul pe ecran, folosind comanda SET CLOCK, cu sintaxa: (1) SET CLOCK ON | OFF (2) SET CLOCK TO [<rnd>, <coloan>] ON face ca ceasul s rmn tot timpul vizibil pe ecran OFF face ca ceasul s dispar de pe ecran Formula a doua (2) se folosete pentru a specifica poziia pe ecran unde va aprea ceasul. Aceast poziie se specific prin <rnd> reprezentnd rndul pe ecran i <coloana> reprezentnd coloana primei cifre a orei. Poziia implicit a orei este (0,60), n colul din dreapta sus.

U10.9. Baze de date


Datorit asemnrii dintre modul de organizare a unei baze de date i cel al unui tabel vom folosi analogia dintre aceste dou elemente n descrierea bazelor de date. Corespunztor acestui tabel vom avea o baz de date, n care: - capului de tabel i va corespunde structura - coloanele vor fi numite cmpuri - liniile se vor numi nregistrri La crearea unei baze de date trebuie specificat structura acesteia. Pentru a specifica n mod univoc structura unei baze de date, trebuie indicate cmpurile care o compun printr-un nume asociat fiecrui cmp ct i caracteristicile acestora (tipul de date ce se memoreaz n acel cmp, lungimea). Pentru a specifica o anumit nregistrare din baza de date se folosete indicatorul de nregistrri, care reprezint o zon de memorie ce conine numrul nregistrrii curente. Indicatorul de nregistrri poate fi modificat prin comenzi FoxPro, acest lucru fiind realizat cu ajutorul tastelor direcionale n sus i n jos a indicatorului de nregistrri de-a lungul bazei de date. Pentru a folosi o baz de date aceasta trebuie mai nti deschis. Deschiderea bazei de date se face ntr-o zon din memoria calculatorului care poart numele de zon de lucru ( n englez work area) i sunt 25 la numr n varianta FoxPro 2.0 i 225 n varianta 2.6. Pentru identificarea zonelor de lucru se folosesc dou metode : - primele 10 zone de lucru se identific prin litere de la A la J adic primele 10 litere din alfabet
116

- pentru toate cele 25 baze de date putem folosi pentru identificare numerele de la 1 la 25. La deschiderea unei baze de date ntr-o zon de lucru acesteia i se atribuie un nume pe care l vom numi alias. Deci baza de date deschis va putea fi identificat i prin aliasul respectiv. La un moment dat, din cele 25 de zone de lucru una singur va fi curent. La pornirea FoxPro zona de lucru curent va fi zona A, sau 1. Aceasta se poate schimba folosind comanda SELECT, cu sintaxa: SELECT<expN> <expC>, unde: <expN> reprezint numrul zonei de lucru ce va fi activat, adic va deveni zon de lucru curent <expC> reprezint aliasul bazei de date deschis n acea zon de lucru. Pentru a afla care este zona de lucru curent se folosete funcia SELECT().

10.9.1. Crearea unei baze de date. Structura unei baze de date Pentru crearea unei baze de date se folosete comanda CREATE cu sintaxa: CREATE [<fiier>] unde <fiier> reprezint numele fiierului de baz de date ce va fi creat. Dac pentru acest fiier nu se specific nici o extensie, FoxPro asociaz automat extensia .DBF. Dac nu se specific numele fiierului pe ecran va apare o fereastr, unde se va introduce numele bazei de date ce se va crea, n cmpul de editare din partea de jos n locul cuvntului untitled. Dup specificarea numelui bazei de date se activeaz declanatorul implicit <<Create>> dup care se va intra n fereastra de specificare a structurii. Dup introducerea structurii bazei de date se selecteaz declanatorul <OK> semnaliznd terminarea editrii structurii bazei de date. Dup terminarea editrii structurii FoxPro afieaz un mesaj ntrebnd daca dorim s introducem date i n funcie de opiunea aleas se va trece fie ntr-o fereastr de introducere a datelor fie se revine n fereastra de comenzi. Cea de-a doua metod de creare a unei baze de date este reprezentat de comanda CREATE TABLE, care are sintaxa: CREATE TABLE DBF<nume.dbf> (<nume_cmp 1> <tip>[(<precizie> [,<scala>) [,<nume_cmp 2...]]) n care: - <nume.dbf> reprezint numele bazei de date de creat
117

- <nume_cmp 1> , <nume_cmp 2>,... reprezint numele cmpurilor structurii bazei de date - <tip> reprezint tipul cmpului aceasta fiind o liter, astfel: C (caracter), N(numeric) D(data calendaristic), L(logic) , M(memo) - limea cmpului este specificat prin <precizie> - <scala> reprezint numrul de zecimale n cazul cmpurilor numeric sau float 10.9.2. Deschiderea i nchiderea unei baze de date Pentru deschiderea unei baze de date se folosete comanda USE cu sintaxa: USE [<fiier>?], unde: - <fiier> reprezint numele bazei de date sau aliasul acesteia - dac n locul acestui fiier se specific ? fiierul bazei de date ce va fi deschis va fi selectat interactiv printr-o fereastr de dialog. nchiderea bazelor de date se realizeaz cu comanda CLOSE ALL , care nchide toate fiierele din toate zonele de lucru i selecteaz zona de lucru 1.

10.9.3. Manipularea structurii unei baze de date Modificarea structurii unei baze de date se realizeaz cu comanda MODIFY STRUCTURE cu aceeai sintax i realizeaz modificarea structurii bazei de date prin deschiderea unei ferestre de dialog aceeai ca la crearea bazei de date, unde se vor realiza modificrile. Dac n zona de lucru curent este deschis o baz de date atunci comanda se refer la aceasta. n caz contrar, apare o fereastr de dialog, de unde se va selecta baza de date a crei structur se va modifica. Vizualizarea structurii unei baze de date se face cu comenzile DISPLAY STRUCTURE sau LIST STRUCTURE.

10.9.4. Manipularea cmpurilor unei baze de date

Accesul la cmpurile unei baze de date este controlat de comanda SET FIELDS, care are urmtoarea sintax:
118

SET FIELDS ON

OFF

SET FIELDS TO [[<cmp1>[<cmp 2>...]] ALL] unde: - <cmp 1>,<cmp 2>,... reprezint lista cmpurilor ce pot fi accesate n cazul SET FIELDS ON. SET FIELDS TO ALL permite accesul la toate cmpurile, chiar dac starea lui SET FIELDS este ON. Comanda se refer la baza de date curent. Funcia FIELDS() returneaz numele unui cmp dintr-o baz de date identificat prin numrul cmpului n cadrul structurii bazei i are sintaxa: FIELDS (<expN1>[,<expN2> <expC>]) n care <expN1> specific numrul de ordine al cmpului (primul cmp are nr. de ordine 1 .a.m.d.) iar <expN 2> sau <expC> identific baza de date la care se refer funcia prin zona de lucru n cazul lui <expN> i prin <expC> aliasul acesteia. Numrul cmpurilor dintr-o baz de date este returnat de funcia FCOUNT() ce are sintaxa: FCOUNT ([<expN> <expC>]) <expN> reprezint zona de lucru n care este deschis baza la care se refer funcia <expC> reprezint aliasul bazei respective. 10.9.5. Vizualizarea coninutului unei baze de date Dup crearea unei baze de date i ncrcarea acesteia cu informaii, apare necesitatea vizualizrii datelor stocate, adic a coninutului bazei de date. Afiarea acestor informaii se poate face pe ecran, la imprimant sau ntrun fiier de pe disc folosind comenzile LIST i DISPLAY. Comanda DISPLAY afieaz coninutul bazei de date din zona de lucru curent, avnd sintaxa : DISPLAY [FIELDS] <lista cmpuri> [<domeniu>] [FOR <expL 1> ][WHILE <expL2 >] [OFF] [TO PRINTER [NOCONSOLE] Ex. Afiai doar la imprimant coninutul bazei de date Personal.dbf fr numrul nregistrrii. USE PERSONAL
119

TO FILE<fiier>]

DISP ALL OFF NOCONSOLE TO PRINTER Pentru a obine coninutul bazei de date Personal att n fiierul Listare .txt ct i pe ecran se folosete: DISP ALL TO FILE Listare.txt Indicatorul de nregistrri conine numrul nregistrrii curente ntr-o baz de date, avnd la un moment dat o singur nregistrare curent. Exist o mulime de comenzi i funcii care se refer la anumite nregistrri din baza de date. Astfel comanda: DISPLAY NEXT 2, afieaz urmtoarele dou nregistrri din baza de date curent ncepnd de la nregistrarea curent inclusiv. Domeniul nregistrrilor se specific prin patru clauze: ALL, RECORD, NEXT, REST dintre care ultimele dou au ca punct de referin nregistrarea curent. Aflarea nregistrrii curente dintr-o baz de date se face cu funcia RECNO() cu sintaxa: RECNO([<expN> <expC>]) unde: <expN> -zona de lucru n care este deschis b.d. <expC>-aliasul bazei de date Dac ambele lipsesc funcia se refer la baza de date activ. Urmtoarele dou comenzi sunt echivalente: DISP NEXT 1 i DISP RECORD RECNO() Schimbarea nregistrrii curente se realizeaz prin intermediul unor comenzi Fox Pro cum ar fi GOTO, SKIP etc. Comanda GO sau GOTO poziioneaz indicatorul de nregistrri pe o anumit nregistrare dintr-o baz de date cele dou comenzi fiind echivalente i au sintaxa: GO GOTO [RECORD]<expN1>[IN <expN2> <expC>] GO GOTO TOP BOTTOM [<expN1>[IN <expN2> <expC>] Prima form are ca efect poziionarea indicatorului de nregistrri din baza de date. <expC> sau din zona de lucru <expN2> pe nregistrarea cu nr.<expN1>. Absena clauzei IN determin referirea la baza de date curent. Forma a doua este folosit pentru poziionarea indicatorului de nregistrri pe nregistrrile extreme ale baz de date. Un alt tip de deplasare cu indic. de nregistrri de-a lungul baz de date este realizat cu comanda SKIP. Aceasta mut indicatorul peste un numr de nregistrri relativ la nregistrarea curent.
120

Sintaxa comenzii: SKIP [expN1> // <expN2> // <expC>] unde: <expN 1> nr. nregistrrilor peste care se sare <expN2>- zona de lucru n care este baza de date <expC> - aliasul bazei de date Comanda SKIP este echivalent cu SKIP 1.

U10.10. Cmpurile memo


n memorarea informaiilor ntr-o baz de date apar situaii cnd, cantitatea de informaii ce trebuie stocat ntr-un anumit cmp difer foarte mult de la o informaie la alta. Pentru a elimina acest neajuns s-a introdus cmpul de tip memo care permite memorarea informaiilor de acest fel mult mai eficient. O baz de date care conine cel puin un cmp memo are asociat un fiier suplimentar n care sunt depuse informaiile coninute n acel cmp. ncrcarea unor date ntr-un cmp memo se poate face fie de ctre utilizator introducndu-se caracter cu caracter ntr-o fereastr de editare, fie prin citirea acestora dintr-un fiier sau din memoria calculatorului. Prima metod se realizeaz n felul urmtor: - se deschide o fereastr de editare pentru modificarea coninutului bazei de date. sau pentru adugarea de noi nregistrri folosind comenzile CHANGE, EDIT, BROWSE, APPEND etc.; - se poziioneaz cursorul n cmpul memo respectiv al nregistrrii dorite dup care se apas combinaia de taste CTRL + PgDn. Dac se folosete mouse-ul se poziioneaz cursorul deasupra cmpului respectiv i se apas butonul stng de dou ori la intervale scurte de timp; - ca efect al acestei aciuni pe ecran apare o fereastr de editare n care se introduce coninutul cmpului respectiv; - dup terminarea editrii se iese din fereastr cu CTRL+W, combinaie care salveaz modificrile efectuate, sau cu ESC care nu salveaz modificrile aduse cmpului memo. Pentru a edita un cmp memo fr a mai trece prin fereastra de editare CHANGE se folosete comanda MODIFY MEMO care deschide direct o fereastr de editare pentru cmpul memo specificat al nregistrrii curente din baza de date activ.
121

Sintaxa: MODI MEMO <cmp memo 1> [<cmp memo 2>...] O alt modalitate de a ncrca un cmp memo dintr-o baz de date este dat de APPEND MEMO. Aceast comand ncarc coninutul unui fiier ntr-un cmp memo specificat. Comanda are urmtoarea sintax: APPEND MEMO <cmp memo> FROM <fiier>[OVERWRITE] Coninutul ntregului fiier, cu numele fiier se adaug la sfritul cmpului memo <cmp memo>. Dac se include opiunea OVERWRITE coninutul fiierului va fi copiat peste acesta vechiul coninut al cmpului pierzndu-se. Operaia invers de copiere a coninutului unui cmp memo dintr-o baz de date ntr-un fiier se face cu comanda COPY MEMO <cmp memo> TO <fiier> [ADDITIVE].

U10.11. Meniuri
Meniul reprezint un element FoxPro prin care se ofer utilizatorului posibilitatea selectrii unei opiuni, dintr-o mulime finit de opiuni posibile, afiat pe ecran total sau parial, urmnd ca n funcie de selectarea fcut s se declaneze anumite aciuni corespunztoare opiunii alese. Un meniu este format dintr-o bar a meniului i mai multe submeniuri. Bara meniului conine la rndul ei mai multe opiuni numite opiuni bar fiecreia dintre acestea putndu-i-se ataa un submeniu. Fiecare submeniu este format la rndul lui din opiuni. Modul de lucru cu submeniurile definite de utilizator este urmtorul: Se definete meniul respectiv astfel: - Definirea barei meniului; - Definirea opiunilor bar; - Definirea submeniurilor; - Definirea opiunilor; - Definirea aciunilor ce se execut la alegerea unei opiuni sau a unei opiuni bar a meniului; - Se activeaz meniul urmnd a se selecta opiunea dorit; - Se efectueaz diferite operaii specifice meniului (afiare, ascundere etc.);
122

- Se elimin meniul din memorie nsemnnd sfritul lucrului cu acest element.

10.11.1. Comenzi pentru lucrul cu meniuri

Definirea barei unui meniu se face prin intermediul comenzii DEFINE MENU, cu sintaxa: DEFINE MENU <nume meniu> [BAR[AT LINE<expN 1>]] [KEY<eticheta tasta>] [MARK <expC 1>] [MESSAGE <expC 2] [NOMARGIN] [COLOR <lista culori>] Barei meniului i se atribuie un nume, <nume meniu> urmnd ca acest element s fie identificat prin numele atribuit. Clauza BAR se folosete cu scopul de a prelua caracteristicile noii bare de meniu de la cea a meniului sistem FoxPro. Urmtoarele aspecte sunt caracteristice meniului sistem: - Dup alegerea unei opiuni bar de meniu se dezactiveaz; - Bara de meniu va acoperi o singura linie a ecranului sau a ferestrei in care este plasata de la un capt la altul; - Poziia submeniurilor va fi stabilit de FoxPro in mod automat; - Dac bara va avea dimensiuni mai mari dect ecranul sau fereastra n care s-a introdus se va folosi metoda defilrii pentru accesarea opiunilor bar. Clauza AT LINE determin afiarea barei meniului pe linia cu nr.<expN 1> a ecranului sau a ferestrei respective. Clauzele IN WINDOW si IN SCREEN sunt folosite pentru a specifica locul unde bara meniu va fi plasat: - n fereastr <nume fereastra>, dac n comand se include clauza IN WINDOW; - n ecran dac se precizeaz clauza IN SCREEN sau nu se specific nici una din cele dou clauze, iar ieirea curent este direcionat spre ecran.

123

Activarea meniului se poate face prin activarea unei taste sau a unei combinaii de taste, care va fi determinat de etichet <eticheta tasta> a clauzei KEY. Unele dintre opiunile bar ale meniului pot fi nsemnate, marcate, indicnd c acestea respect o anumit condiie. Caracterul folosit pentru marcarea opiunilor bar este , dar acesta poate fi schimbat prin clauza MARK, urmat de un ir de caractere. Primul caracter din ir se va folosi pentru marcarea opiunilor bar ale meniului respectiv. Clauza este influenat de comanda SET MARK OF. Clauza MESSAGE determin afiarea irului de caractere <expC 2> pe ultima linie a ecranului n centrul acesteia. Clauza este influenat de SET MESSAGE. Opiunile bar ale meniului vor fi afiate una dup alta, pe bara meniului, fiind separate prin blancuri. Eliminarea acestora se face introducnd clauza NO MARGIN n comanda DEFI MENU respectiv. Clauza COLOR controleaz culorile folosite pentru afiarea meniului. Dup definirea unei bare a meniului se vor defini opiunile bar care vor aparine barei respective, aceasta realizndu-se cu comanda DEFINE PAD, cu sintaxa: DEFINE PAD <opiune bara 1> OF <nume meniu> PROMPT <expC 1> [AT <linie>,<coloana>] [BEFORE<opiune bara 2>/AFTER <opiune bara2>] [KEY <eticheta tasta>[,expC 2>]] [MARK <expC 3>] [SKIP[FOR <expL>]] [MESSAGE<expC 4>] [COLOR <pereche culori>] Numele opiunii bar va fi <opiune bara>, iar bara de meniu de care aceasta va aparine va fi <nume meniu>. Textul care va fi afiat pe bara meniului va fi cel dat de clauza PROMPT, adic irul de caractere <expC 1>. Stabilirea unei taste directe de selectare a opiunii bar respective se realizeaz prin plasarea combinaiei |<naintea caracterului ce va desemna tasta direct n textul clauzei PROMPT. ExPROMPT |<tergereva defini un text al opiunii bara numit tergere n care tasta direct de selectare va fi S. Dac n textul clauzei
124

PROMPT caracterul selectat ce va prezenta tasta direct nu este primul de acest tip, atunci ca tast direct de selectare va fi aleas prima apariie a caracterului respectiv. Ex. PROMPT Alb|<astrun acest caz va avea textul Albastru n care A va reprezint tasta direct de selectare (de fapt selectarea se poate face att cua ct i cuA). Clauza AT nu se poate folosi pentru o bar a meniului definit cu clauza BAR (acestea sunt totdeauna orizontale , iar poziia opiunilor bar este controlat automat de FoxPro). Ordinea de apariie, selectarea opiunilor bar ale unui meniu este dat de ordinea definirii acestora prin comanda DEFI PAD corespunztoare. Dac dup definirea unui numr de opiuni se dorete inserarea uneia noi ntre cele definite anterior se folosete una din clauzele BEFORE sau AFTER. Clauza BEFORE determin inserarea lui <opiune bar1> imediat nainte de <opiune bar 2>, iar clauza AFTER determin inserarea lui <opiune bar 1> imediat dup <opiune bar 2>. Ex. DEFI MENU test DEFI PAD opt 1 OF test PROMPT opt\<1 DEFI PAD opt 2 OF test PROMPT opt\< 2 DEFI PAD opt 3 OF test PROMPT opt\<3 Acelai lucru realizndu-se cu secvena urmtoare: DEFI MENU test DEFI PAD opt 1 OF test PROMPTopt\<1 DEFI PAD opt 3 OF test PROMPTopt\<3 DEFI PAD opt 2 OF test PROMPTopt\<2 BEFORE opt 3 Clauza KEY se folosete pentru definirea unei ci directe de selectarea unei opiuni bar. Calea de selectare direct reprezint o combinaie de taste care, acionate la un moment dat, determin selectarea opiunii respective. Combinaia de taste va fi desemnat de o etichet <eticheta tasta>. O opiune bar care se prevede cu o cale direct de selectare va fi afiat avnd la dreapta ei eticheta respectiva. Dac se dorete inhibarea acestei afiri , sau afiarea unui alt text n locul etichetei, se va folosi irul de caractere <expC> care poate conine: - Textul de afiat n dreapta opiunii bar
125

- Fiierul vid cnd nu se dorete afiarea cii directe alturi de opiunea bar. Ex. DEFI PAD opt 1 OF test PROMPTopt\< 1 KEY CTRL+H,^ H Clauza MARK se folosete pentru a specifica caracterul folosit la marcarea opiunii barei respective, acesta fiind primul caracter al irului <expC3>. Marcatorul implicit este , iar condiia de marcare este dat de SET MARK OF. Dac se specific cte un marcator i prin comanda DEFI MENU i prin DEFI PAD (la ambele folosind clauza MARK) pentru marcarea opiunii bar se va folosi cel dat de clauza DEFI PAD. Clauza MESSAGE determin afiarea textului din irul <expC 4> ct timp opiunea bar respectiv este selectat. Afiarea mesajului este controlat de comanda SET MESSAGE . Pentru stabilirea condiiilor de accesare a unei opiuni bar se folosete clauza SKIP. Dac aceast clauz se folosete fr FOR opiunea bar respectiv nu va putea fi accesat, ea este dezactivat. De asemenea dezactivarea unei opiuni bar se poate face prin plasarea caracterului \ naintea textului din comanda PROMPT. Ex. Comenzile urmtoare sunt echivalente: DEFI PAD opt OF test PROMPT\Ales DEFI PAD opt OF test PROMPTAles SKIP Clauza COLOR specific culorile folosite pentru afiarea opiunii bar. Ex. S se defineasc bara meniu ACIUNE din figura urmtoare: Modificare tergere * Adugare ^N Listare Vizualizare Ieire ^X Literele subliniate reprezint taste directe de selectare, iar ^N,^X reprezint ci directe de selectare, iar * reprezint marcajul. DEFI MENU ACTIUNE DEFI PAD STERGERE OF ACTIUNE PROMPT \<tergere DEFI PAD MODIFICARE OF ACTIUNE PROMPT \<Modificare BEFORE; tergere DEFI PAD ADAUGARE OF ACTIUNE PROMPT \<Adugare MARK *; KEY CTRL+N ,^ N
126

DEFI PAD LISTARE OF ACTIUNE PROMPT \<Listare AFTER Adugare DEFI PAD VIZUALIZARE OF ACTIUNE PROMPT \<Vizualizare DEFI PAD IESIRE OF ACTIUNE PROMPT \<Ieire KEY CTRL+X, ^ X Submeniurile se definesc prin comanda DEFINE POPUP care are sintaxa: DEFI POPUP <nume submeniu> [FROM <linie 1>,<coloana 1>][TO <linie 2>, coloana 2>] [IN [WINDOW] <nume fereastr>|IN SCREEN] [FOOTER <expC 1>][TITLE ,expC 2>] [KEY <eticheta tasta>] [MARGIN] [MARK <expC 3>] [MESSAGE <expC 4>] [MOVER] [MULTI] [PROMPT FIELD <expr>| PROMPT FILES[LIKE <masca>|PROMPT STRUCTURE] [RELATIVE] [SCROLL] [SHADOW] [COLOR <lista perechi culori>] Un submeniu reprezint o list de opiuni care pot fi de urmtoarele tipuri: - opiuni definite de utilizator(prin comenzi DEFI BAR) - nregistrri dintr-o baz de date ( PROMPT STRUCTURE) - o list de fiiere de pe disc (PROMPT FILES) Numele submeniului va fi <nume submeniu>. Poziia acestuia pe ecran sau ntr-o fereastr va fi dat de clauza FROM n care <linia 1>, <coloana 1> indic poziia colului stnga sus al submeniului. Dac aceast clauz lipsete, submeniul va fi plasat n colul din stnga sus al ecranului la poziia 0,0. Clauza TO este folosit pentru a indica poziia colului din dreapta jos a submeniului prin coordonatele <linie 2>,<coloana 2> aceasta determinnd si dimensiunile submeniului.

127

Pentru ca submeniul s fie ntr-o fereastr, numele acesteia, <nume fereastra>, va fi inclus n clauza IN WINDOW. Dac aceast clauz lipsete submeniul va putea fi introdus ntr-o fereastr n cazul n care ieirea este direcionat ctre o fereastra (fereastra curent) i n comanda DEFINE POPUP nu s-a inclus clauza IN SCREEN. Submeniul va fi plasat pe ecran dac este prezent clauza IN SCREEN i ieirea este direcionat spre ecran. Clauza TITLE se folosete pentru afiarea textului dat de irul <expC2> n centrul laturii superioare a chenarului submeniului, iar clauza FOOTER permite afiarea textului din irul <expC1> la mijlocul laturii inferioare a chenarului submeniului. Clauza KEY se folosete n scopul de a specifica o cale direct pentru activarea submeniului, cale dat de <eticheta tast>a. Stabilirea caracterului folosit pentru marcarea opiunilor unui submeniu se face cu clauza MARK urmat de caracterul respectiv<expC3>. Clauza este influenat de comanda SET MARK OFF. Ct timp submeniul este activat se poate afia un text explicativ, un mesaj, pe ultima linie a ecranului sau a ferestrei respective. Mesajul este dat prin <expC4>, expresie de tip ir de caractere inclus n clauza MESSAGE. Aceast clauz este controlat de comanda SET MESSAGE. Clauza MARGIN se include n comanda pentru ca opiunile s fie separate de chenar printr-un spaiu suplimentar, la dreapta i la stnga acestora. n acest spaiu n stnga vor fi afiate marcajele, iar la dreapta acestora se va afia, cnd este cazul, o sgeat indicnd ieirea n alt submeniu. MOVER este o clauz care permite rearanjarea opiunilor ntr-un submeniu, cnd acesta este activat. Pentru mutarea unei opiuni n alt poziie a submeniului se procedeaz astfel: - se selecteaz opiunea prin deplasarea cursorului deasupra acesteia i cu ajutorul tastelor Ctrl+| sau Ctrl+| se deplaseaz opiunea respectiv n noua poziie. - cu ajutorul mouse-ului, se poziioneaz cursorul acestuia deasupra caracterului | corespunztor opiunii de mutat, dup care se apas butonul stng i cu acesta apsat se mut opiunea odat cu cursorul n noua poziie. Pentru aflarea opiunii dintr-o anumit poziie a submeniului se va folosi funcia GETBAR().
128

O alt facilitate a submeniului este cea a seleciilor multiple. Selectarea mai multor opiuni se face n modul urmtor: - folosind tastatura se acioneaz tasta Shift i mpreun tastele Enter sau Space cnd cursorul se afla pe o opiune ce se va selecta. inerea tastei Shift apsat i deplasarea cursorului deasupra mai multor opiuni determin selectarea opiunilor peste care cursorul trece; - folosind mouse-ul, se apas butonul stng al acestuia n timp ce cursorul sau se afla deasupra unei opiuni de selectat i n timp ce tasta Shift este apsat. De asemenea deplasarea cursorului mouse-ului deasupra mai multor opiuni cnd tasta Shift este apsat, determin selectarea opiunilor respective. Clauza MULTI nu poate fi folosit n acelai timp cu clauza PROMPT. Funcia MRKBAR() se va folosi pentru detectarea opiunilor selectate prin metodele de mai sus. Tipul de submeniu este determinat de clauza PROMPT. Dac aceast clauz lipsete, opiunile submeniului urmeaz a fi definite cu comenzi BAR. n cazul clauzei PROMPT FIELD opiunile submeniului vor fi preluate dintr-o baz de date deschis ntr-o zon de lucru, pentru fiecare nregistrare corespunznd cte o opiune. La activarea submeniului se va selecta automat zona de lucru respectiv. Expresia <expr> va determina modul de obinere a unei opiuni din nregistrarea corespunztoare. Aceast expresie poate conine cmpuri ale bazei de date curente sau ale unei baze de date din alt zon de lucru ntre care se poate aplica operatorul de concatenare. Numrul maxim de opiuni ale unui submeniu creat dintr-o baz de date este de 32767 n versiunea standard a FoxPro, numrul de opiuni fiind nelimitat n versiunea extins a Fox Pro. Pentru ca opiunile submeniului s reprezinte fiiere de pe un disc, dintr-un anumit director, se folosete clauza PROMPT FILES. Aceast clauz, folosit fr LIKE determin afiarea unor opiuni ale submeniului, a tuturor fiierelor de pe discul curent, din directorul curent. n cazul n care se dorete s reprezinte numai anumite opiuni ale submeniului se va folosi <masca> din clauza LIKE. <Masca> respect regulile DOS de specificare a mai multor fiiere, folosind simbolurile * i ? (exemplu: .DBF, A.PRG,*.?11). O ultim variant a clauzei PROMPT este cea care se refer la structura unei baze de date, adic PROMPT STRUCTURE. n acest caz opiunile
129

submeniului vor fi cmpurile bazei de date active. i n acest caz activarea submeniului va determina selectarea zonei de lucru coninnd baza de date respectiv. n cazul submeniurilor ale cror opiuni sunt definite prin comenzi DEFINE BAR ordinea acestor opiuni este controlat de clauza RELATIVE. n prezena acestei clauze opiunile vor apare n submeniu n ordinea definirii lor, deci nu vor mai apare spaii ntre opiunile submeniului. De asemenea, aceast clauz permite folosirea clauzelor BEFORE i AFTER n comanda DEFINE BAR. Clauza SCROLL are ca efect afiarea unei bare de defilare verticale, pe latura dreapta a chenarului submeniului, cnd nu toate opiunile pot fi afiate simultan pe ecran, n interiorul submeniului. SHADOW este clauza referitoare la efectul de umbr, prezena acestuia permind afiarea umbrei submeniului. Starea umbrei este controlat de comanda SET SHADOW. Pentru definirea opiunilor unui submeniu, ce a fost definit anterior cu o comanda DEFINE POUP, vom folosi comanda DEFINE BAR, cu sintaxa : DEFINE BAR <expN1>/<nume opiune sistem. OF <nume submeniu>PROMPT<expC1> BEFORE<expN2>/AFTER<expN2> KEY<eticheta tasta> , <expC2> MARK<expC3> MESSAGE<expC4> SKIP FOR<expL> COLOR<LISTA PERECHI CULORI>/ COLOR SCHEME<expN> Comenzile DEFINE BAR i DEFINE PAD sunt asemntoare ntruct definirea opiunilor ntr-un submeniu se face asemntor cu definirea opiunilor bar ntr-o bar a unui meniu. Afiarea i activarea unei bare de meniu se face cu comanda ACIVATE MENU, cu sintaxa: ACTIVATE MENU<nume meniu> NOWAIT PAD<nume opiune bar> Clauza NOWAIT determin continuarea execuiei programului dup afiarea i activarea barei de meniu. Bara de meniu va rmne activat,
130

utilizatorului dndu-i-se posibilitatea selectrii unei opiuni bara ori de cte ori programul ateapt introducerea unor date de la tastatur. Analog afirii i activrii barei de meniu se face i afiarea i activarea submeniului, n acest caz folosindu-se comanda ACTIVATE POPUP, cu sintaxa : ACTIVATE POPUP<nume submeniu> AT<LINIE>, <coloana> BAR<expN> NOWAIT REST Aceast comand - REST- va afia i activa submeniul <nume submeniu> la coordonatele specificate n clauza AT <linie> i <coloan> n ecran sau fereastra curent, selectnd iniial opiunea <expN>. Afiarea pe ecran sau n fereastra curent a barelor de meniu i a submeniurilor, fr activarea acestora se realizeaz cu comenzile SHOW MENU i SHOW POPUP. Comanda SHOW MENU realizeaz afiarea barelor de meniu enumerate n lista ce urmeaz comenzii, sau a tuturor barelor de meniu, dac se folosete ALL n locul listei. Pentru afiarea unei opiuni bara ca fiind selectat, aceasta se specific prin clauza PAD. Pentru reinerea imaginii pe ecran fr activarea acestora, se va folosi clauza SAVE n comanda SHOW MENU. Aceast imagine va putea fi tears prin comanda CLEAR. Eliminarea de pe ecran sau din fereastra curent a barelor de meniu i a submeniurilor fr nlturarea acestora din memorie, se realizeaz cu comenzile HIDE MENU i HIDE POPUP. Comanda HIDE MENU ascunde barele de meniu specificate n list sau toate barele de meniu definite, dac se folosete clauza ALL, dar nu le elimin pe acestea din memorie. Clauza SAVE se folosete pentru a pstra o imagine a barei de meniu, pe ecran sau n fereastra curent, i dup ascunderea acesteia, tergerea fcndu-se cu CLEAR. Comanda HIDE POPUP ascunde submeniurile specificate n lista sau toate submeniurile definite (ALL) adic le elimin de pe ecran fr a le nltura i din memorie.
131

Legtura dintre barele de meniu i submeniuri este de o importan deosebit pentru realizarea de meniuri complexe. O prim modalitate de a lega o bar de meniu de un submeniu sau o alt bar de meniu este dat de comanda ON PAD. Pentru activarea unui submeniu se folosete clauza ACTIVATE POPUP urmat de numele submeniului, iar pentru activarea unei alte bare de meniu se folosete clauza ACTIVATE MENU, dup care se include numele barei respective. Pentru ca la alegerea unei opiuni bar sau a unei opiuni a unui submeniu, s se execute operaii mai complexe ( nu numai activarea unui submeniu sau a unei bare de meniu) vom folosi grupul de comenzi ON SELECTION format din urmtoarele patru comenzi: 1. ON SELECTION MENU 2. ON SELECTION PAD 3. ON SELECTION POPUP 4. ON SELECTION BAR Aceste comenzi determin executarea unei singure comenzi la alegerea unei opiuni bar sau a unei opiuni. Comanda ON SELECTION MENU are sintaxa : ON SELECTION MENU<nume meniu>/ ALL <instruciune> Instruciunea <instruciune> va fi executat la alegerea oricrei opiuni bar a barei de meniu <nume meniu> sau a oricrei bare de meniu definit cnd se folosete clauza ALL. Comanda ON SELECION MENU trebuie plasat ntre DEFINE MENU i ACTIVATE MENU. Dac instruciunea lipsete, opiunile bara respective sunt eliberate, adic nu se va mai executa nici o instruciune la alegerea lor. O utilizare asemntoare o are comanda ON SELECTION PAD cu sintaxa: ON SELECTION PAD <nume opiune bara>OF<nume meniu> <instruciune> cu deosebirea c <instruciune> se va executa numai la alegerea opiunii bara <nume opiune bara> a barei de meniu, ca la comanda anterioar. Comanda ON SELECTION POPUP determin executarea instruciunii <instruciune> la fiecare alegere a unei opiune din submeniul definit, cnd folosete clauza ALL.
132

n lipsa lui <instruciune>, opiunile respective sunt eliberate de acesta, deci nu se va mai executa nici o instruciune la alegerea unei opiuni a submeniului. Aceasta comand trebuie plasat ntre DEFINE POPUP i ACTIVATE POPUP. Comanda MOVE POPUP mut submeniul n poziia specificat de clauza TO sau peste linii i coloane, relativ la poziia curent, dac se folosete clauza BY. Modificarea dimensiunilor unui submeniu, dup definirea acestuia se realizeaz cu comanda SIZE POPUP dat de sintaxa: SIZE POPUP<nume submeniu>TO<expN1>,<expN2>/ BY<expN3>, <exp.N4>. Un alt grup de comenzi referitoare la lucrul cu bare de meniu i cu submeniuri sunt cele referitoare la depozitarea acestora n memorie ntr-o anumit zon organizat sub forma de stiv (ultimul intrat, primul ieit). Salvarea unei bare de meniu n stiva meniurilor se face cu comanda PUSH MENU iar refacerea acestuia, adic aducerea sa din stiv, se realizeaz prin comanda POP MENU. Comanda PUSH MENU depune n stiv bara de meniu<nume meniu> iar comanda POP MENU scoate din stiva bara <nume meniu>, depus anterior printro comand PUSH MENU. Clauza TO MASTER folosit n comanda POP MENU determin extragerea din stiva primei bare de meniu depus n aceasta (cea de la baz), dup care stiva se golete. Comanda PUSH POPUP depune n stiva submeniul <nume submeniu> care va fi scos cu comanda POP POPUP. Dezactivarea unei bare de meniu sau a unui submeniu se realizeaz prin comenzile DEACTIVATE MENU i DEACTIVATE POPUP, cu sintaxele DEACTIVATE MENU DEACTIVATE POPUP Aceste comenzi nu nltur meniul din memorie pentru reactivarea sa, folosind ACTIVATE MENU sau ACTIVATE POPUP, nu este necesar redefinirea acestuia. Comanda DEACTIVATE MENU dezactiveaz bara de meniu curent iar comanda DEAFTIVATE POPUP realizeaz aceeai sarcin pentru submeniul curent.
133

Eliminarea din memorie a barelor de meniuri i a submeniurilor (deci eliminarea definitiv a acestora) se realizeaz cu grupul de comenzi RELEASE care cuprinde RELEASE MENUS, RELEASE PAD, RELEASE POPUS i RELEASE BAR. Comanda RELEASE MENUS elimina barele de meniuri din <lista meniuri> din memorie i de pe ecran sau fereastra curent. Bara de meniu activ trebuie dezactivat nainte de eliminarea sa din memorie. Clauza EXTENDED se folosete pentru nlturarea, pe lng bara de meniu respectiv, i a elementelor subordonate : opiuni bara, submeniuri, opiuni, comenzi introduse cu ON. RELEASE PAD va nltura opiunea bara <nume opiune bar> sau toate opiunile bara, cnd se folosete clauza ALL din bara de meniu <nume meniu>. RELEASE POPUS nltur din memorie i de pe ecran sau fereastra curent submeniurile din lista asociat comenzii, sau toate submeniurile definite dac aceast list este vid. Submeniul activ trebuie mai nti dezactivat pentru a fi eliminat cu comanda RELEASE POPUPS. RELEASE BAR se folosete pentru eliminarea opiunilor dintr-un submeniu. Comanda va elimina opiunea <expN> sau toate opiunile n cazul prezentei clauzei ALL, submeniul <nume submeniu>. Toate barele de meniu vor fi eliminate din memorie i de pe ecran sau ferestre prin comanda CLEAR MENUS iar ndeprtarea se va face prin comanda CLEAR POPUS. De asemenea, barele de meniu i submeniurile vor fi mai ndeprtate din memorie i ecran i la execuia comenzii CLEAR ALL. Pentru schimbarea modelului ecranului, adic a caracterelor folosite pentru afiarea acestuia, vom folosi comanda SET BORDER. Controlul accesului la meniul sistem al FoxPro este realizat de comanda SET SYSMENU avnd sintaxa: SET SYSMENU ON / OFF / AUTOMATIC /TO <list submeniuri sistem/list opiuni bar> /TO DEFAULT Pentru ca meniul sistem s fie accesibil n timpul rulrii programului, la executarea unor comenzi de citire de la tastatur (READ, BROWSE etc) se include comanda SET SYSMENU clauza ON, aceasta fiind i opiunea implicit. Opus clauzei ON este clauza OFF care nu permite accesul la meniul sistem n timpul executrii unui program.
134

Clauza AUTOMATIC determin afiarea pe ecran a meniului sistem n timpul rulrii unui program. Clauza TO se folosete pentru a elimina unele submeniuri ale meniului sistem. Vor putea fi accesate numai acele submeniuri prezente n lista <lista submeniuri> sistem sau care corespund opiunilor bar din lista <lista opiuni bar>. Elementele listei sunt separate prin virgul. Folosirea clauzei DEFAULT n comanda SET SYSMENU determin revenirea la configuraia implicit a meniului sistem Funcia SYS(2013) cu sintaxa: SYS (2013) returneaz un ir de caractere coninnd denumirile elementelor meniului sistem al FoxPro adic a barei meniului, a opiunilor bara, a submeniurilor i a opiunilor submeniurilor. O opiune bar a unei bare de meniu sau o opiune a unui submeniu poate fi marcat, n funcie de condiie, stabilit de utilizator. Caracterul folosit pentru marcare ct i condiia de marcare, adic dac o opiune este marcat sau nu, se stabilete prin grupul de comenzi SET MARK OF compus din patru comenzi SET MARK OF MENU, SET MARK OF PAD, SET MARK OF POPUP i SET MARK OF BAR. Comanda SET MARK OF MENU determin folosirea caracterului <expC> pentru marcarea opiunilor bara ale barei de meniu <nume de meniu> n cazul cnd se introduce n comanda un caracter. Dac aceast comand va fi urmat de o expresie logic, SET MARK OF MENU va determina marcarea tuturor opiunilor bara ale barei de meniu n cazul valorii T, a expresiei logice i demarcarea acestora cnd expresia este evaluat la valoarea F. Comanda SET MARK OF PAD se refer la o opiune bar <nume opiune bar> a barei <nume meniu>, aceast comand avnd ntietate fa de comanda SET MARK OF MENU. Comanda SET MARK OF POPUP se refer la toate opiunile submeniului <nume submeniu>. Comanda SET MARK OF BAR se refer doar la opiunea <expN> a submeniului <nume submeniu>, aceast comand avnd ntietate fa de comanda SET MARK OF POPUP pentru submeniul ce conine opiunea respectiv.
135

Dou funcii, referitoare la marcarea opiunilor, se pot folosi mpreun cu aceast comand MRKPAD() care determin dac o opiune bar a unei bare de meniu este marcat sau nu, i la funcia MRKBAR() ce testeaz marcarea unei opiuni a unui submeniu. Funcia MRKPAD()are sintaxa: MRKPAD(<expC1>,< expC2>) iar funcia MRKBAR() are sintaxa: MRKBAR(<expC>, <expN>) Alegerea opiunii Marcare determin marcarea tuturor opiunilor bar ale barei de meniu, iar alegerea opiunii bar Demarcare are ca efect demarcarea acestora. La alegerea opiunii bar inversare se va inversa starea de marcare a opiunilor bar ale barei de meniu. Grupul de comenzi SET SKIP OF se refer la posibilitatea de accesare a barelor de meniuri, opiunilor bar, submeniurilor sau opiunilor i conine comenzile: SET SKIP OF MENU, SET SKIP OF PAD, SET SKIP OF POPUP i SET SKIP OF BAR. Diferena dintre comenzi este dat de elementul la care se refer fiecare, dar modul de funcionare este asemntor. Comanda SET SKIP OF MENU se refer la accesarea barei de meniu <nume meniu> iar comanda SET SKIP OF PAD acioneaz numai asupra opiunii bar <nume opiune bar> a barei de meniu <nume meniu>. n mod analog, comanda SET SKIP OF POPUP acioneaz asupra submeniului <nume submeniu> iar comanda SET SKIP OF BAR se refer numai la opiunea <expN> sau opiunea sistem <nume opiune sistem> a submeniului <nume submeniu>. n combinaia cu aceast comand se pot folosi dou funcii referitoare, de asemenea, la posibilitatea de accesare a unei opiuni sau a unei opiuni bar. Acestea sunt SKPPAD() i SKPBAR() i au sintaxele: SKPPAD(<expC1>, <expC2>) SKPBAR(<expC>, <expN>) Funcia SKPPAD() testeaz opiunea bar dat de irul de caractere <expC2> a barei de meniu specificat prin irul <expC1>. Funcia SKPBAR va testa opiunea <expN> a submeniului specificat prin irul de caractere <expC>

136

10.11.2. Funcii referitoare la meniuri Cu ajutorul funciilor pentru lucru cu meniuri se pot obine informaii despre: - opiunea bar aleas dintr-o bar de meniu sau opiunea aleas dintr-un submeniu; - submeniul activ; - numrul de opiuni bar a unei bare de meniu sau numrul de opiuni dintr-un submeniu; - textul asociat unei opiuni bar sau unei opiuni. Ultima opiune bar aleas dintr-o bar de meniu activ va fi dat, ntr-un ir de caractere, de funcia PAD(). Numele opiunii respective va fi trecut cu majuscule, n irul returnat de funcie. n cazul cnd nu exist o bar de meniu activ, funcia va returna irul nul. Pentru submeniuri, funcia cu care vom afla ultima opiune aleas este funcia BAR(). Valoarea returnat de funcie va fi de tip numeric, reprez entnd numrul ultimei opiuni alese din submeniul activ. n cazul n care nu exist nici un submeniu activ sau s-a ieit din submeniu cu tasta Escape, funcia va returna valoarea 0. Evaluarea funciei MENU() are ca rezultat un ir de caractere coninnd numerele barei de meniu active, trecut cu majuscule. irul vid va fi returnat de funcie dac nu exist o bar de meniu activ. Funcia POPUP() returneaz un ir de caractere reprezentnd numele submeniului activ. Acest ir va fi vid dac nu este activat nici un submeniu. Fiecare opiune bar i fiecare opiune are asociat cte un text care este afiat pe ecran n locul opiunii respective i este definit prin clauza PROMPT a comenzilor DEFINE PAD i DEFINE BAR. Funcia PROMPT() returneaz un ir de caractere coninnd textul ultimei opiuni bar aleas dintr-o bar de meniu sau ultimei opiuni aleas dintr-un submeniu. Funcia va returna irul vid dac nu exist nici o bar de meniu i nici un submeniu activ sau dac s-a folosit tasta Escape. Funciile PRMPAD() i PRMBAR() sunt folosite cu scopul de a afla textul unei opiuni bar de meniu, i respectiv, a unei opiuni de meniu. Funcia PRMPAD() returneaz o valoare de tip ir de caractere reprezentnd textul asociat opiunii bar <expC2> a barei de meniu <expC1>.
137

Funcia PIMBAR() va avea ca rezultat tot o valoare de tip ir de caractere, reprezentnd textul asociat opiunii cu numrul <expN> a submeniului dat, prin <expC>. Numrul de opiuni bar asociate unei bare de meniu este returnat de funcia CNTPAD(), funcie ce returneaz o valoare numeric reprezentnd numrul de opiuni bar a barei de meniu. Funcia CNTBAR() returneaz, de asemenea, o valoare numeric reprezentnd numrul de opiuni ale submeniului <expC>. Funcia MENU() returneaz numele meniului. La evaluarea construciei CNTPAD(MENU() ) vom obine numrul de opiuni bar ale meniului, iar evaluarea lui CNTBAR(POPUP() )va duce la returnarea numrului de opiuni ale submeniului. Construcia GETPAD (MENU (), i) va da numele celei de -a i-a opiune a meniului, iar prin GETBAR(POPUP(), i) vom obine numele opiunii i-a a submeniului. Funciile PRMPAD() i PRMBAR() sunt folosite pentru a trece de la unele opiuni (bar i respectiv simpl) la textul asociat acesteia prin construciile : PRMPAD(MENU(), GETPAD(MENU(), i) PRMBAR(POPUP), GETBAR(POPUP) i).

U10.12. Programe. Execuia programelor


Un program reprezint o succesiune de instruciuni, realizat n conformitate cu regulile limbajului de programare folosit, care rezolv o anumit problem, ndeplinete o anumit sarcin, printr-un anumit algoritm. Un program FoxPro este depus pe disc ntr-un fiier. Cnd se dorete execuia instruciunilor programului, fiierul este transformat ntr-o form intermediar (compilare) care interpretat de FoxPro. Execuia unui program se realizeaz prin comanda DO, avnd sintaxa: DO<fiier> [WITH<list parametri>] [IN<fiier>] Aceast comand execut programul coninut n fiierul <fiier>. Dac fiierul nu are prevzut extensia, atunci se vor cuta pe disc urmtoarele fiiere, n aceast ordine:
138

<fiier>EXE - program executabil <fiier>APP - aplicaie <fiier>FXP forma compilat a programului <fiier >PRG- programul surs. <Fiier>PRG reprezint fiierul surs n care a fost depus programul, coninutul acestuia fiind transmis de utilizator la scrierea programului. Execuia unui program surs presupune mai nti compilarea sa, dup aceast faz obinndu-se forma compilat a programului, care va fi interpretat de FoxPro. Aceast form compilat reprezint tot un fiier pe disc, obinut automat ca rezultat al compilrii i care poart numele <fiier>FXP. Un program poate conine mai multe comenzi DO, obinndu-se astfel Douri mbrcate, pe mai multe nivele, limita maxim pentru aceste nivele fiind 32. Execuia programului se va opri n una din urmtoarele situaii: - la execuia unei comenzi RETURN, CANCEL, QUIT; - cnd se ntlnete sfritul fiierului; - cnd se ntlnete o alt comand DO. Comanda RETURN avnd sintaxa: RETURN[<EXPR>/TO MASTER/TO<nume rogram>] termin execuia programului returnnd controlul la programul apelant de cel mai nalt nivel sau la un alt program (specificat prin clauza TO). <expr> reprezint valoarea transmis de programul a crui execuie se ncheie ctre programul cruia i se pred controlul. Dac <expr>lipsete se va returna valoarea logic T. <nume program> reprezint numele unui program care va prelua controlul de la cel care se ncheie cu comanda RETURN. Comanda CANCEL determin terminarea execuiei programului curent i predarea controlului n fereastra de comenzi. Suspendarea execuiei unui program (cu posibilitatea de reluare) se realizeaz prin comanda SUSPEND cu sintaxa SUSPEND continuarea rulrii unui program suspendat fcndu-se prin comanda RESUME, cu sintaxa RESUME. De asemenea execuia unui program se va ncheia la ntlnirea comenzii QUIT, cu sintaxa QUIT care determin i ieirea din mediul FoxPro. Numele unui program este obinut prin funcia PROGRAM() avnd urmtoarea sintax: PROGRAM ([<expN>]).

139

Dac apelul funciei se face fr nici un parametru, aceasta va returna un ir de caractere coninnd numele programului n execuie sau numele ultimului program executat cnd a aprut o eroare. O funcie asemntoare este SYS(16) aceasta returnnd ntr-un ir de caractere numele programului, cu tot cu calea complet unde acesta se afl. Dac n cele dou funcii se include <expN>, aceasta va desemna nivelul programului curent executat ce fa fi returnat de funcii. 10.12.1. Proceduri i funcii definite de utilizator Execuia unu program din interiorul altui program, folosind comanda DO, reprezint un pas important n structurarea aplicaiilor de dimensiuni mari. Pe msur ce crete dimensiunea unei aplicaii (crete numrul liniilor de program ale aplicaiei), testarea i depanarea acestuia devine din ce n ce mai dificil datorit numrului mare de variabile. Astfel, s-a trecut la gruparea unor instruciuni n module separate, aceste module fiind independente ntre ele. Modulele de acest tip pot fi create i n interiorul fiierului ce conine programul formnd aa-numitele proceduri i funcii definite de utilizator (UDF User Defined Functions). Datorit independenei unui modul fa de celelalte module, acesta poate fi executat de mai multe ori n cadrul unui program prin cte o instruciune de apelare a modulului n fiecare poziie dorit. Se introduce astfel o modalitate de execuie a unui grup de instruciuni n mai multe zone ale unui program, fr a rescrie aceste instruciuni la fiecare folosire. O funcie reprezint un grup independent de instruciuni care primete un set de parametrii de la programul apelant i returneaz acestuia o valoare ca rezultat al prelucrrilor asupra parametrilor transmii. O funcie definit de utilizator poate intra n componena unei ex presii ca operand, analog funciilor standard din FoxPro. O procedur reprezint de asemenea un grup de instruciuni ce primete de la programul apelant un grup de parametrii, realizeaz anumite prelucrri, dup care se revine la programul apelant.

140

O procedur definit de utilizator nu poate intra n alctuirea unei expresii ca operand, fiind analoag comenzilor standard din FoxPro. La definirea unei funcii sau proceduri se stabilesc prelucrrilor ce au loc n interiorul ei, parametrii care se primesc spre prelucrare i rezultatele ce se vor transmite dup prelucrare. La apelul unei funcii sau proceduri apare doar numele care identific respectiva funcie sau procedur nsoit eventual de lista parametrilor ce se vor transmite. Termenul de independent din definiiile funciilor i procedurilor are o importan deosebit: variabilele definite n interiorul funciilor i procedurilor sunt cunoscute doar n acest domeniu, n sensul c pentru programul ce apeleaz funcia sau procedura, aceste variabile nu exist. Definirea unei funcii se face prin intermediul comenzii FUNCTION care are sintaxa FUNCTION <nume funcie> unde <nume funcie> reprezint numele care se atribuie funciei nou definite i care va fi folosit la fiecare apel al acesteia pentru identificarea printre celelalte funcii a celei dorite. Definirea procedurilor se realizeaz prin comanda PROCEDURE cu sintaxa: PROCEDURE <nume procedur>. Instruciunile unei rutine vor ncepe imediat dup comanda FUNCTION sau PROCEDURE i se vor ntinde pn la ntlnirea unei noi comenzi FUNCTION sau PROCEDURE, sau pn la ntlnirea sfritului de fiier. Apelul unei funcii se face prin numele acesteia, urmat, ntre paranteze rotunde, de lista parametrilor prin care se comunic funcia. La executare, n locul acestei construcii se va introduce valoarea returnat de funcie, ca rezultat al prelucrrilor din interiorul acesteia. O procedur se execut prin comanda DO urmat de numele procedurii (pe poziia lui <fiier>, iar parametrii prin care programul comunic cu aceasta se introduc n lista clauzei WITH a acestei comenzi. Terminarea execuiei unei rutine se face fie dup execuia ultimei instruciuni a acesteia, fie la ntlnirea unei dintre comenzile RETURN, CANCEL, SUSPEND, QUIT. Procedurile i funciile unui program se introduc de regul, dup ultima instruciune a programului, n acelai fiier cu acesta. Dar acestea se pot introduce n fiiere separate care vor fi asociate programului apelant prin comanda SET PROCEDURE.
141

Aceast comand asociaz programului, n execuie, fiierul <fiier> (cu extensia implicit PRG), unde se vor cuta procedurile care nu se gsesc n fiierul programului apelant. Comanda SET PROCEDUTE TO, fr ali parametrii, determin nchiderea fiierului de proceduri curent asociat programului n execuie. Comanda CLOSE PROCEDURE, de asemenea nchide fiierul de proceduri curent. La execuia unei proceduri, folosind comanda DO, cutarea acestuia se face n urmtoarea ordine: - mai nti se caut n fiierul care conine comanda DO de apelare a procedurii; - dac nu se gsete, se caut apoi n fiierul de proceduri deschis cu comanda SET PROCEDURE, - i n ultima instan se caut pe rnd n programele n curs de execuie pe diferite nivele, pn la programul de nivel 1. Abia dup aceste etape s-au ncheiat fr succes, se va cuta fiierul cu numele identic cu al procedurii, considernd comanda ca determinnd execuia unui program. Pentru ca o cutare a unei proceduri s se fac numai ntr-un anumit fiier, acesta se va include n clauza IN a comenzii DO:IN <fiier>. 10.12.2. Variabile globale i variabile locale

Variabilele folosite ntr-un program sunt prin diferite comenzi FoxPro (STORE, GET, DEFAULT...) i ele exist n memorie atta timp ct programul este n curs de rulare la terminarea acestuia fiind eliminate automat. Dou tipuri de variabile pot fi referite ntr-un modul : variabile globale i variabile locale. Variabilele globale (publice) pot fi accesate i modificate n orice modul n curs de execuie de pe un nivel inferior, egal sau superior nivelului modulului curent. Variabilele locale (private) nu pot fi accesate dect n modulul curent i n cele subordonate acestuia, deci n modulele de pe nivelele mai mari sau egale cal modulului curent.

142

Pentru ca ntr-un modul s se declare un set de variabile private, acestea se includ n comanda PRIVATE, cu sintaxele: PRIVATE<lista variabile> PRIVATE ALL[LIKE<masca>/EXCEPT<masca>] Prin aceast comand se declar ca fiind private (dar nu se creeaz) variabilele din< list variabile>, toate variabilele care se potrivesc cu <masca> (cnd se folosete clauza LIKE) sau toate variabilele cu excepia celor care se potrivesc cu <masca> ( la folosirea clauzei EXCEPT). Variabilele globale se definesc prin comanda PUBLIC, cu sintaxele: PUBLIC<list variabile> PUBLIC [ARRAY]<masiv1>(expN1>[, <expN2>]) [,<masiv2>(<expN3>[, (<expN4>])]... Spre deosebire de PRIVATE care nu creeaz variabilele la care se refer, comanda PUBLIC, odat cu declararea variabilelor respective le i creeaz pe acestea. Un tip special de variabile este tipul regional, asemntor cu cel privat. Acest tip se folosete pentru a folosi variabile cu acelai nume n regiuni diferite ale programului. Acest tip se declar prin comanda REGIONAL cu dou forme ale sintaxei: # REGION<numr> REGIONAL<list variabile> Pentru a folosi dou variabile n acelai program, acestea trebuie definite n listele de variabile ale comenzilor REGIONAL, n dou regiuni separate ale programului. Regiunile se definesc prin prima form a comenzii # REGION, identificarea fiecrei regiuni fcndu-se printr-un numr de la 0 la 31. O regiune se ntinde de la comanda # REGION care desemneaz nceputul unei regiuni pn la prima comand #REGION care urmeaz acesteia, sau pn la sfritul fiierului. 10.12.3. Transferul de parametri la i de la module de program n FoxPro sunt implementate dou metode de transmitere a parametrilor la rutine, programe:

143

- prin referin, n care variabila transmis este afectat de eventualele modificri aduse n subprogram; - prin valoare, cnd o eventual modificare a variabilei n subprogram nu afecteaz valoarea acesteia n programul apelant. Transmisia parametrilor la un subprogram se desfoar astfel: - se stabilesc variabilele care se vor transmite ca parametrii, ntr-o ordine stabilit de programator la conceperea programului; - se stabilete un set de variabile locale subprogramului care vor prelua valorile variabilelor transmise ca parametrii de la programul apelant; - corespondena ntre variabilele transmise din programul apelant i cele locale ale subprogramului se face prin poziia n dou liste i anume: list cu parametrii de apel a subprogramului, i respectiv lista variabilelor locale, specificat prin comanda PARAMETERS; - n modulul apelant se lucreaz cu variabilele locale respective; - dac tipul transmisiei este de referin, la sfritul executrii subprogramului, coninutul variabilelor este trecut n variabilele corespunztoare transmise ca parametrii; - dac avem o transmise prin valoare, aceast ultim copiere nu mai are loc, deci variabilele de apelare nu vor mai fi actualizate cu noile valori ale variabilelor locale corespunztoare. Lista variabilelor transmise ca parametrii este stabilit fie prin clauza WITH a comenzii DO, n cazul apelului unui subprogram sau a unei proceduri, fie prin lista dintre parantezele rotunde ce urmeaz numelui funciei, cnd avem un apel n funcie. Pentru a stabili n ce variabile locale se ncarc parametrii transmii se folosete comanda PARAMETERS, cu sintaxa: PARAMETERS <list variabile locale> Aceast comand, care trebuie s fie prima comand a uni modul (n cazul cnd acesta exist) definete lista de variabile locale care vor prelua parametrii transmii de la programul apelant. Lista variabilelor locale trebuie s aib totdeauna mai multe elemente (sau cel mult egal) dect lista parametrilor transmii, pentru ca fiecare parametru s aib un corespondent n subprogram. Numrul de parametrii transmii programului, procedurii sau funciei curente este returnat de funcia PARAMETERS ().
144

n ceea ce privete metoda folosit la transmisia parametrilor exist urmtoarele reguli: - la programe parametrii se transmit implicit prin referin; - la proceduri i funcii se folosete metoda transmiterii parametrilor prin valoare. Pentru a schimba metoda implicit de transmitere a parametrilor la proceduri i funcii se poate folosi comanda SET SDFPARMS (User Defined Parameters), cu sintaxa: SET UDFPARMS TO VALUE | REFERENCE SET UDFPARMS TO VALUE determin transmiterea prin valoare a parametrilor, ca metod implicit, iar SET UDFPARMS TO REFERENCE face ca transmisia parametrilor s se fac implicit prin referin. Pentru a fora transmiterea unui parametru prin valoare la apelul unei funcii, acesta se include ntre paranteze rotunde, iar pentru forarea transmiterii unui parametru prin referin, acesta va fi precedat de caracterul .

10.12.4. Compilarea Un fiier surs pentru a fi executat, mai nti trebuie transformat ntr-o form intermediar, compilat. Aceast operaie se face automat de FoxPro la execuia unei comenzi DO cnd programul de executat nu a fost compilat anterior i poate fi realizat explicit de utilizator prin intermediul comenzii COMPILE: COMPILE <fiier> |<masca>[ENCRYPT][NODEBUG] Se va compila fie prin fiierul <fiier>, fie mai multe fiiere, a cror denumire se potrivete cu <masca>. n funcie de tipul caracterului surs, fiierul obiect (forma compilat a programului) va avea o extensie specific, avnd urmtoarele corespondene: EXTENSIE TIP FIIER EXTENSIE SURS DESTINAIE COMPILAT Program .PRG .FXP Cod de ecran .SPR .SPX Cod de meniu .MPR .MPX Fiier de filtru .QPR .QPX Fiier format .FMT .PRX Orice alt fiier .FXP Clauza ENCRYPT determin blocarea posibilitii de refacere a fiierului surs original din forma compilat (fiierul obiect).
145

Clauza NODEBUG determin compilarea programului fr informaiile de depanare reducnd astfel mrimea fiierului obiect, dar eliminnd posibilitatea depanrii respectivului program. Comanda CLEAR PROGRAM golete bufferul de compilare al FoxPro i este folosit doar pentru compatibilitatea cu versiunile anterioare. SET LOGERRORS cu sintaxa: SET LOGERRORS ON | OFF determin (ON) sau inhib (OFF) crearea, la compilare, a unui fiier n care se scriu toate mesajele de eroare aprute n timpul acestui proces. Fiierul creat va purta acelai nume cu al programului surs i va avea extensia .ERR. 10.12.5. Depanarea programelor i tratarea erorilor n scrierea unui program deseori apar erori datorate fie neateniei, fie unei cunoateri insuficiente a limbajului de programare, fie nelurii n seam a unor cazuri particulare ale evoluiei programului. Dou mari clase de erori pot apare la execuia unui program: - erori de sintax, cnd programul este incorect scris, ducnd fie la ntreruperea rulrii, fie la executarea unor rutine pentru tratarea erorilor; - erori de rulare, cnd programul este corect scris, dar el nu funcioneaz cum dorim, rezultatele obinute nefiind cele ateptate. Primul tip de erori sunt mai uor de detectat i de corectat, pe cnd cele din cea de-a doua categorie necesit mai mult timp. La rularea unui program, apariia unei erori de sintax determin de obicei, ntreruperea procesului de execuie i afiarea unei mesaj de eroare, indicnd tipul erorii aprute i cernd utilizatorului luarea unei decizii astfel: - ntreruperea programului, acionnd declanatorul <Cancel>; suspendarea execuiei programului, obinut prin acionarea declanatorului <Suspended>; - continuarea execuiei, ignornd eroarea aprut, prin alegerea declanatorului <Ignore>. Detectarea erorilor de rulare presupune tehnici de lucru mai avansate, cum ar fi rularea pas cu pas, folosirea punctelor de ntrerupere, vizualizarea coninutului unor variabile n paralel cu executarea programelor etc.

146

Rularea pas cu pas a unui program reprezint o tehnic special constnd n executarea unei singure instruciuni a programului la o comand a utilizatorului (acionarea unei taste). n intervalul de timp dintre execuia a dou instruciuni consecutive, programatorul poate observa eventualele funcionri incorecte ale programului, detectnd astfel cauzele ce au dus la erorile de rulare respective. Punctele de ntrerupere reprezint poziii fixe n cadrul programului de depanat, la care execuia programului respectiv se oprete, utilizatorul avnd astfel posibilitatea de a verifica starea de moment a variabilelor din program, modul cum decurge execuia programului, n vederea detectrii eventualelor surse de eroare. Aceste dou tehnici prezentate mai sus sunt disponibile prin intermediul ferestrei Trace, care se deschide prin selectarea opiunii Trace din cadrul submeniului Window. Fereastra Trace, are la partea superioar propriul su meniu care va fi explicitat odat cu prezentarea modului de depanare a unui program. Pentru ca un program s fie depanat prin fereastra Trace, acesta trebuie mai nti deschis n aceast fereastr, acest lucru realizndu-se prin opiunea Open, de pe submeniul Program. Ca urmare a alegerii acestei opiuni, pe ecran va apare o fereastr de dialog, n care utilizatorul va specifica programul de depanat. Dup deschiderea programului se poate trece la execuia acestuia, aceasta putndu-se realiza n mai multe rnduri: - pas cu pas, cte o instruciune la fiecare comand a utilizatorului; - pn la un punct de ntrerupere care va determina suspendarea programului; - executare continu, al viteza maxim; - executarea continu, cu viteza controlat, cnd dup executarea fiecrei instruciuni se face o pauz, dup care se continu rularea. Rularea pas cu pas a unui program deschis cu fereastra Trace decurge astfel: pentru execuia fiecrei instruciuni a programului utilizatorul va alege opiunea Over sau Step din meniul ferestrei Trace, acestea determinnd execuia instruciunii curente dup care se ateapt o nou comand de executare de la utilizator. Diferena dintre cele dou opiuni este dat de modul de tratare a comenzilor de apel al unei rutine:

147

- Step determin executarea unei instruciuni a programului, iar n cazul cnd aceasta este un apel al unei rutine, se va trece n interiorul rutinei, pentru executarea instruciunilor acesteia; - Over execut tot o instruciune, dar cnd aceasta este un apel al unei rutine (program, procedur, funcie) aceasta este executat n ntregime, ntr-un singur pas, fr a trece la executarea pas cu pas a instruciunilor respectivei rutine. Instruciunea curent care va fi executat prin intermediul opiunilor Step sau Over va apare pe ecran supraluminat, indicnd aceast stare a liniei respective. n combinaie cu operaiunea Step se folosete i opiunea bar Out, care determin executarea continu a restului de instruciuni din programul curent, urmnd ca dup revenirea n programul, rutina apelant, execuia s fie suspendat pe prima instruciune care urmeaz instruciunii de apel a rutinei. La modalitatea de rulare a unui program prin puncte de ntrerupere, pentru stabilirea acestora, n care execuia programului va fi suspendat, se va deplasa cursorul pe linia respectiv, dup care se va tasta Space sau Enter. Linia va fi marcat astfel ca reprezentnd un punct de ntrerupere a programului. O nou acionare a tastei Space sau Enter, cnd cursorul se afl pe o linie care conine un punct de ntrerupere, va determina anularea punctului de ntrerupere respectiv, linia revenind la starea iniial. tergerea, anularea tuturor punctelor de ntrerupere se poate face prin alegerea opiunii Clear Breakpointes de pe submeniul Program. Un punct de ntrerupere nu determin terminarea execuiei programului, ci numai suspendarea acesteia, pn la o nou comand a utilizatorului cu privire la continuarea rulrii. Opiunea bar Resume a meniului ferestrei Trace determin continuarea execuiei continue pn la un nou punct de ntrerupere, pn la sfritul programului sau pn la acionarea tastei Escape. O modalitate special de rulare a programului este obinut prin alegerea opiunii Throttle de pe submeniul Program, constnd n executarea continu a programului, instruciune cu instruciune, dup executarea fiecrei instruciuni fcndu-se o pauz, stabilit de utilizator. Oprirea execuiei programului se poate face n orice moment, selectnd opiunea Cancel a submeniului Program.

148

n paralel cu executarea unui program n fereastra Trace se poate vizualiza coninutul unor variabile folosite n program, sau chiar rezultatul evalurii unor expresii folosind aceste variabile, pin intermediul ferestrei Debug. Se recomand ca ferestrele Trace i Debug s fie deschise i vizibile simultan pe ecran, urmrindu-se astfel efectul fiecrei instruciuni executate n fereastra Trace asupra variabilelor in fereastra Debug. Fereastra Debug este format din dou pri, astfel : n partea dreapt se introduc variabilele i expresiile care se doresc vizualizate n timpul executrii programului, n partea stng aprnd valorile de moment al variabilelor sau expresiilor respective. De asemenea n fereastra Debug se pot specifica puncte de ntrerupere a programului dependente de valorile variabilelor sau expresiilor din fereastra respectiv, spre deosebire de punctele de ntrerupere stabilite n fereastra Trace, care reprezint puncte fixe ale programului, independente de valorile variabilelor. Pentru a poziiona un astfel de punct de ntrerupere, n dreptul variabilei sau expresiei dorite, pe bara se separ cele dou pri ale ferestrei se va poziiona un marcaj. Acest lucru se va realiza fie cu mouse-ul, poziionnd cursorul acestuia n poziia dorit i acionnd butonul stng, fie prin intermediul tastaturii, deplasndu-ne pe bara separatoare folosind tasta Tab, poziionndu-ne n dreptul variabilei sau expresiei dorite, cu ajutorul sgeilor direcionate i acionnd tasta Space, pentru marcare. Execuia programului se va suspenda ori de cte ori valoarea variabilei sau expresiei corespunztoare unui astfel de punct de ntrerupere se va modifica.

U10.13. Programarea structurat


n FoxPro au fost implementate principalele comenzi i funcii ale programrii structurate, care permit: - executarea unui grup de instruciuni de mai multe ori; - executarea condiionat a unor instruciuni, n funcie de rezultatul evalurii unei expresii logice. Primul tip de comenzi care determin executarea repetat a uneia sau a mai multor instruciuni, alctuiesc aa numitele bucle i este reprezentat de comenzile FOR, ENDFOR, DO WHILE..., ENDDO i SCAN.....ENDSCAN.

149

Al doilea tip, condiionnd executarea unor instruciuni de rezultatele evalurii unor expresii logice, este reprezentat de instruciunile condiionate de decizie, avnd n componen: IF..., ENDIF, IIF (), DO CASE.....ENDCASE. Comanda IF .... ENDIF are dou forme care vor permite executarea unor instruciuni numai dac este respectat o condiie dat i executarea fie a unui grup de instruciuni, fie a altui grup de instruciuni, n funcie de rezultatul evalurii unei expresii logice. Comanda are sintaxa: IF <expL> <instruciuni1> [ELSE] <instruciuni2> ENDIF La nceputul execuiei comenzii se va evalua expresia logic <expL> i , n funcie de rezultatul evalurii, vom avea: - dac <expL> este .T se va executa grupul de instruciuni <instruciuni1>, dup care execuia se va termina; - n cazul valorii .F a expresiei logice apar dou cazuri: a) dac exist clauza ELSE n comand, se vor executa instruciunile din grupul <instruciuni2>, dup care execuia se termin; b) n absena clauzei ELSE nu se execut nici o instruciune terminndu-se imediat. Un efect asemntor de selecie se face prin comanda IIF(), avnd sintaxa: IIF(<expL>, <expr1>, <expr2>) Aceast funcie evalueaz expresia logic <expL> i n funcie de rezultatul obinut, returneaz valoarea uneia din expresiile <expr1> i <expr2>: - returneaz valoarea obinut prin evaluarea expresiei <expr1> dac <expL> este evaluat la .T; - returneaz rezultatul evalurii expresiei <expr2> cnd <expL> se evalueaz la .F. Cele dou expresii nu trebuie s aib neaprat acelai tip, acestea putnd fi de tip ir de caractere, dat calendaristic, logic sau numeric. Mai multe comenzi IF....ENDIF pot fi imbricate, incluse una n alta, obinndu-se condiionarea unui grup de instruciuni prin mai multe expresii logice, sau obinndu-se selecii diverse ntre mai multe grupuri de instruciuni.
150

Un tip de selecie ntre mai multe grupuri de instruciuni este dat de comanda DO CASE...ENDCASE, avnd sintaxa: DO CASE CASE <expL1> <instruciuni> [CASE<expL2> <instruciuni2> ...................... CASE <expLN> <instruciuniN>] [ORHERWISE <instruciuni> ENDCASE Comanda va determina execuia grupului de instruciuni pentru care expresia logic corespunztoare are valoarea .T. Execuia comenzii va decurge n modul urmtor: se evalueaz prin expresie logic <expL1> i, dac valoarea obinut este .T, se execut grupul de instruciuni <instruciuni1>. Dac expresia logic <expl1> are valoare .F, se trece evaluarea urmtoarei expresii logice. Dup gsirea primei expresii logice cu valoarea .T i executarea grupului de instruciuni corespunztor, execuia comenzii se ncheie continund cu prima comand de dup ENDCASE. Dac nici una din expresiile, expL1>, <expL2>, ...<expLN> nu are valoarea .T, apar dou cazuri: - cnd nu exist clauza OTHER WISE, execuia comenzii se ncheie; - n prezena clauzei OTHERWISE, se va executa grupul de instruciuni <instruciuni>, dup care se trece se trece la prima comand de dup ENDCASE. Executarea repetat a unui grup de instruciuni reprezint unul din principalele avantaje ale elaborrii de programe, fr de care multe din probleme nu ar putea fi rezolvate, sau s-ar rezolva foarte greu. Comenzile FoxPro care realizeaz buclele din teoria programrii sunt FOR....ENDFOR, DO WHILE.....ENDDO, i SCAN.....ENDSCAN, acestea mprindu-se la rndul lor n dou grupe: - comenzi pentru bucle cu un numr dat de pai, n care un grup de instruciuni se execut de un numr dat de ori: FOR, SCAN;

151

- comenzi folosite pentru bucle cu un numr nedefinit de pai, n care numrul de executri a grupului de instruciuni este variabil, fiind dependent de o condiie asociat comenzii: DO WHILE. Comanda FOR.....ENDFOR determin executarea repetat a grupului de instruciuni <instruciuni>, contorizarea acestor pai fiind fcut printr-o variabil <var>. Valoarea iniial a variabilei contor va fi dat de evaluarea expresiei <expN1>. Dup fiecare execuie a grupului de instruciuni <instruciuni>, variabila va fi incrementat sau decrementat, cu o valoare constant, dat de evaluarea expresiei <expN3>, dac este prezent clauza STEP sau 1 cnd STEP lipsete (absena clauzei STEP este echivalent cu construcia STEP1). Deci la prima execuie a grupului de instruciuni, <var> va avea valoarea <expN1>, la a doua execuie <expN1>+<expN3>, la a treia execuie <expN1>+ <expN3>+<expM3> i aa mai departe. Cnd valoarea variabilei <var> crete peste valoarea expresiei <expN2> (strict mai mare), n cazul unei valori pozitive a lui <expN3>, sau scade valoarea <expN2> (strict mai mic), pentru o valoare negativ a expresiei <expN3>, se va iei din bucl, programul continund urmtoarea comand dup ENDFOR. EXIT determin ieirea forat din bucl i continuarea execuiei programului cu prima comand care urmeaz dup ENDFOR, indiferent de valoarea variabilei contor. LOOP care determin saltul peste urmtoarele instruciuni ale buclei (dintre LOOP i ENDFOR), incrementarea sau decrementarea contorului de instruciuni, dac se respect condiia de rmnere n bucl. Exemplu: sum = 0 FORi =TO 10 sum = sum +1 IF i = 5 EXIT ENDIF ENDFOR Programul funcioneaz astfel: se execut comanda sum= sum +1 de cinci ori, pentru i = 1,2,3,4 i 5. La i =5 este respectat condiia IF i deci va fi

152

executat comanda EXIT care determin saltul la ultima instruciune a programului (care afieaz rezultatul). Un tip special de bucl, foarte asemntoare cu FOR ...ENDFOR, dar specializat n lucrul pe o baz de date, este reprezentat de comanda SCAN... ENDSCAN, cu sintaxa de forma: SCAN[NOOPTIMIZE] [<domeniu> ][FOR<expL1>][WHILE<expL2>] [<instruciuni> [LOOP] [EXIT] ENDSCAN Aceast comand realizeaz parcurgerea bazei de date curente i executarea grupului de instruciuni <instruciuni>, pentru fiecare nregistrare care aparine domeniului specificat prin <domeniu>, FOR sau WHILE. Clauzele LOOP i EXIT au acelai efect n cazul comenzii FOR.... ENDFOR, iar clauza NOOPTIMIZE inhib optimizarea RUSHMORE. Exemplu: SCAN <instruciuni> ENDSCAN are acelai efect cu FOR i = to RECCOUNT () GOTO i <instruciuni> ENDFOR iar comanda SCAN; NEXT 10 FOR MOD(RECNO(),2) =0 <instruciuni> ENDSCAN va fi echivalent cu FOR i=RECNO() TO RECNO () + 9 IF MOD (RECNO(), 2) =0 <instruciuni> ENDIF
153

ENDFOR Expresia MOD (RECNO(),2)=0 are valoarea .T dac nregistrarea curent are un numr par i valoarea .F, n caz contrar. Cel de-al doilea tip de bucl, cu un numr nedefinit de pai, este implementat n FoxPro prin comanda DO WHILW....ENDDO, avnd sintaxa: DO WHILW <expL> <instruciuni> [LOOP] [EXIT] ENDDO Aceast comand determin execuia repetat a grupului de instruciuni <instruciuni>, atta timp ct valoarea expresiei logice este .T. Execuia comenzii se va desfura astfel se evalueaz expresia <expL> i, dac aceasta are valoarea .F, execuia comenzii se ncheie. Dac valoarea acesteia este .T, se vor executa instruciunile din <instruciuni>. La ntlnirea lui ENDDO se ncheie, programul continund cu prima instruciune de dup ENDDO. Comenzile LOOP i EXIT au aceeai semnificaie ca i la comanda FOR, prima determinnd ignorarea restului de comenzi i reevaluarea lui <expL>, iar cea de-a doua determinnd ieirea forat din bucl, indiferent de valoarea expresiei logice <expL>.

U10.14. Lucrul cu fiiere


Exist dou moduri de lucru cu fiierele: - lucrul la nivel nalt, cnd operaiile elementare sunt executate de FoxPro n mod automat, elibernd astfel programatorul de grija evidenei tuturor aciunilor de rutin, de amnunt; - lucrul la nivel cobort, cnd programatorului i se ofer posibilitatea de a controla toate operaiile referitoare la lucrul cu fiiere. Copierea unui fiier se realizeaz prin comanda COPY FILE, cu sintaxa: COPY FILE <fiier1>TO<fiier2> n care <fiier1> este fiierul de copiat, iar <fiier2> reprezint copia nou creat prin execuia comenzii. Redenumirea unui fiier, este de asemenea o operaie important n lucrul cu fiiere, care se realizeaz prin intermediul comenzii RENAME:
154

RENAME <fiier1>TO<fiier2> <fiier 1>reprezint fiierul care se va redenumi, noul nume fiind <fiier2>. Comanda TYPE, cu sintaxa: TYPE <fiier1> [AUTO] [WRAP] [TOPRINTER|TO FILE <fiier2>] [NUMBER] afieaz coninutul fiierului <fiier1> pe ecran sau n fereastra activ i la imprimant (dac se specific clauza TO PRINTER) sau ntr-un alt fiier <fiier2> (desemnat de clauza TO FILE). Clauza NUMBER determin plasarea numrului liniei la nceputul fiecrei linii a fiierului. Clauza AUTO i WRAP controleaz modul de afiarea a textului din fiier, AUTO referindu-se la alinierea liniilor, paragrafelor n formatul de afiare, iar WRAP determinnd afiarea pe rndul urmtor a unui cuvnt care nu mai ncape n rndul curent. Modificarea coninutului unui fiier se face prin intermediul comenzilor MODIFY COMMAND sau MODIFY FILE care deschide ferestre de editare n care ncarc fiierul de modificat (coninutul acestuia). MODIFY COMMAND <fiier> | MODIFY FILE [<fiier>] [NOEDIT] [NOWAIT] [RANGE <expN1>,<expN2>] [[WINDOW<nume fereastr> ] [IN [WINDOW] <nume fereastr2> | SCREEN]] [SAVE] ERASE <fiieri>| ? Fiierul modificat este <fiieri> la comanda MODIFY COMMAND acesta avnd extensia implicit .PRG. Clauza NOEDIT se folosete pentru a mpiedica utilizatorul a modifica coninutul fiierului, iar clauza NOWAIT determin continuarea execuiei programului dup deschiderea ferestrei de editare, fr a mai atepta modificrile utilizatorului. RANGE permite editarea caracterelor dintre poziiile <expN1> inclusiv i <expN2> exclusiv din cadrul fiierului respectiv. Clauza SAVE pstreaz fereastra de editare pe ecran i dup terminarea comenzii respective.
155

tergerea fiierelor se face prin dou comenzi: DELETE FILE i ERASE. Ambele comenzi terg fiierul <fiier> de pe disc, din directorul curent sau din alt director, care se specific mpreun cu <fiier>. Selectarea fiierului de ters se poate face ntr-o fereastr de dialog, dac n comand se specific ? n funcie de starea lui SET SAFETY ON|OFF vom fi (ON) sau nu (OFF) avertizai nainte de tergerea fiierului sau de o eventual scriere peste coninutul unui fiier existent pe disc. Afiarea unei liste dintr-un director de pe un anumit disc se poate face prin comanda DIR sau DIRECTORY, cu sintaxa: DIR | DIRECTORY [[ON]<disc:>] [[LIKE][<cale>][<masca>]] [TO PRINTER | TO FILE <fiier>] Vor fi afiate fiierele de pe discul <disc:> din directorul dat de <cale>, care se potrivesc cu <masca>. Afiarea se va face pe ecran imprimant (TO PRINTER) sau n fiierul <fiier> (TO FILE). O comand asemntoare este DISPLAY FILES. DISPLAY FILES [ON <disc |director>] [LIKE <masca>] [TO PRINTER |TO FILE <fiier>] clauzele i utilizarea lor fiind aceleai cu cele ale comenzii anterioare. Exist, n FoxPro, posibilitatea ca, n paralel cu afiarea pe ecran a unor informaii, acestea s fie scrise i ntr-un fiier. Aceast operaie este controlat de comanda SET ALTERNATE care are dou forme: SET ALTERNATE ON |OFF SET ALTERNATE TO [<fiier> [ADDITIVE]]. Fiierul n care se va scrie este desemnat prin <fiier> n forma a doua a comenzii. Aceast comand va determina fie iniializarea fiierului nainte de scriere, cnd clauza ADDITIVE lipsete, fie adugarea la fiierul existent anterior, n prezena acestei clauze. Validarea ieirii n fiierul ALTERNATE este dat prin comanda SET ALTERNATE ON, iar oprirea ieirii la acest fiier se realizeaz prin SET ALTERNATE OFF.

156

nchiderea fiierului ALTERNATE se face prin comanda CLOSE ALTERNATE, cu sintaxa simpl CLOSE ALTERNATE.

U10.15. Test de autoevaluare nr. 10


1. Care sunt comenzile pentru descrierea structurii unei baze de date (1 pct.).
Timp de lucru: 30 min Punctaj 5,5p

2. Cum se creaz structura unei baze de date CREATE? (1,5 pct.) 3. Ce este tipul logic i ce ceste tipul numeric? (1,5 pct.) 4. Care este structura unei baze de date? (1,5 pct.) Puncte obinute..

Total puncte: 5,5

U10.16. Rezumat
La crearea unei baze de date trebuie specificat structura acesteia. Pentru a specifica n mod univoc structura unei baze de date, trebuie indicate cmpurile care o compun printr-un nume asociat fiecrui cmp ct i caracteristicile acestora (tipul de date ce se memoreaz n acel cmp, lungimea). Pentru a specifica o anumit nregistrare din baza de date se folosete indicatorul de nregistrri, care reprezint o zon de memorie ce conine numrul nregistrrii curente. Indicatorul de nregistrri poate fi modificat prin comenzi FoxPro, acest lucru fiind realizat cu ajutorul tastelor direcionale n sus i n jos a indicatorului de nregistrri de-a lungul bazei de date. Pentru a folosi o baz de date aceasta trebuie mai nti deschis. Deschiderea bazei de date se face ntr-o zon din memoria calculatorului care poart numele de zon de lucru ( n englez work area) i sunt 25 la numr n varianta FoxPro 2.0 i 225 n varianta 2.6.

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004;
157

4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 10

158

UNITATEA 11 TURBO PASCAL

Durata medie de studiu individual - 2 ore

Cuprins:
U11.1. Scopul i obiectivele unitii ........................................................... U11.2. Noiuni introductive ....................................................................... U11.3. Elemente de baz ale limbajului Turbo Pascal ............................ U11.4. Mediul de programare Turbo Pascal ............................................ U11.5. Test de autoevaluare ....................................................................... U11.6. Rezumat ........................................................................................... Bibliografie minimal ................................................................................. Rspunsuri i comentarii la testul de autoevaluare .................................

pag. 159 159 161 162 173 173 174 174

U11.1. Scopul i obiectivele unitii


n aceast tem vei nva urmtoarele concepte fundamentale: noiuni introductive despre Turbo Pascal; elementele de baz ale limbajului Turbo Pascal; mediul de programare Turbo Pascal.

U11.2. Noiuni introductive


Un sistem de calcul este o main capabil s execute operaii relativ simple, dar cu vitez extrem de mare. Sistemul de calcul nu are iniiative, ci ateapt ca dup pornire utilizatorul s i dea toate instruciunile referitoare la operaiile pe care trebuie s le execute. Instruciunile pentru rezolvarea unei anumite probleme sunt grupate ntr un program, scris de un programator sau de o echip de programatori. Cea de-a doua situaie se ntlnete n special n cazul programelor ,,de firm de complexitate ridicat, care sunt livrate odat cu sistemul de calcul (sistemul de operare i diverse programe utilitare) sau se achiziioneaz ulterior (jocuri,

159

compilatoare, programe pentru realizarea aplicaiilor specifice unui anumit domeniu etc.). Pentru scrierea unui program se utilizeaz un limbaj de programare, cu sintax i semantic riguros definite. n cazul de fa programele sunt scrise n limbajul Pascal. Forma n care programatorul i scrie programul este numit program surs. Pentru a fi prelucrat de sistemul de calcul programul surs trebuie nregistrat ntr-un fiier surs. Acesta este creat cu ajutorul unui program utilitar numit editor de texte. Editorul permite att dactilografierea i modificarea textului programelor surs, ct i salvarea acestora n fiiere pe suport magnetic (de obicei disc fix sau disc flexibil). Programul surs nu poate fi ,,neles i executat direct de ctre sistemul de calcul, dar poate fi ,,tradus ntr-o form direct executabil, numit program executabil. Generarea programului executabil are sens numai dac programul surs respect sintaxa limbajului de programare n care este scris. Analiza sintactic a programului surs este realizat de ctre un program specializat, numit compilator, specific limbajului n care este scris programul surs i sistemului de calcul pe care va fi executat programul. Dac programul surs are erori sintactice, compilatorul le semnaleaz prin mesaje care arat cauza probabil a fiecrei erori. Corectarea programului surs se realizeaz cu ajutorul editorului de texte. Dup corectare programul surs trebuie compilat din nou. Acest proces se repet pn la eliminarea tuturor erorilor sintactice. n cazul unui program surs fr erori, compilatorul genereaz fie programul executabil corespunztor, fie o form intermediar, pe care un alt program specializat o va transforma n program executabil. n cele ce urmeaz vom considera numai cazul compilatoarelor care genereaz programe direct executabile. Corectitudinea sintactic nu d certitudinea rezolvrii corecte a problemei, deoarece programul surs poate s aib erori de concepie. Pentru a verifica dac programul executabil funcioneaz corespunztor acesta trebuie testat pentru mai multe seturi de date. Seturile de date trebuie alese astfel nct s se poat valida rezultatele furnizate de program (prin confruntarea cu rezultatele ateptate, care trebuie s fie cunoscute apriori sau s fie uor de determinat). De asemenea, trebuie testate nu numai situaiile tipice de utilizare a programului, ci i cazurile limit.

160

Dac la execuie apar erori sau se constat c rezultatele obinute nu sunt cele ateptate, atunci trebuie determinat cauza erorilor i efectuate coreciile necesare. Dup corectare programul surs trebuie recompilat i testat, pn la obinerea unui program executabil care funcioneaz conform ateptrilor. Pentru a reduce posibilitatea apariiei erorilor de concepie este important s se formuleze ct mai clar enunul problemei propuse spre rezolvare, cu specificarea datelor iniiale i a rezultatelor dorite (inclusiv a formei de prezentare a acestora). De asemenea, dac problema propus spre rezolvare este ceva mai complicat, scrierea programului surs trebuie precedat de elaborarea unei schie a rezolvrii problemei. Programele folosite pentru obinerea unui program executabil (cel puin un editor de texte i un compilator specific limbajului de programare utilizat) pot fi independente sau pot fi integrate ntr-un ansamblu de programe utilitare, numit mediu de programare. De obicei un mediu de programare este destinat dezvoltrii programelor scrise ntr-un anumit limbaj de programare. De aceea se folosete i termenul de mediu integrat de dezvoltare a programelor (Integrated Development Environment)]. ntr-o sesiune de lucru (reprezentat de totalitatea prelucrrilor efectuate de la nceperea i pn la terminarea lucrului cu mediul de programare) pot fi realizate mai multe programe. Acestea pot rezolva probleme complet diferite sau pot reprezenta variante de rezolvare a aceleiai probleme.

U11.3. Elemente de baz ale limbajului Turbo Pascal


Limbajul de programare PASCAL i compilatorul asociat au fost elaborate n 1970 de ctre elveianul Niklaus Wirth. Autorul a intenionat s pun la dispoziia utilizatorilor un limbaj de nivel nalt, eficient i performant, care s permit nvarea programrii ca disciplin sistematic, bazat pe anumite concepte fundamentale, evideniate de ctre limbaj n mod logic i clar. Elementele de baz ale limbajului PASCAL au fost preluate din ALGOL 60, la acestea adugndu-se importante extensii referitoare n primul rnd la structuri de date i mai recent la programarea orientat pe obiect, care au lrgit considerabil domeniul de aplicabilitate al limbajului PASCAL. Datorit calitilor sale, limbajul PASCAL s-a rspndit foarte repede fiind astzi unul din cele mai
161

utilizate limbaje de programare de nivel nalt. Este un limbaj structurat, neorientat, fiind studiat ca prim limbaj de programare n toate universitile din lume. Majoritatea implementrilor PASCAL au la baz standardul ISO (International Standards Organization) cunoscut sub numele de PASCAL STANDARD, prezentnd n general diferite extensii fa de acesta. Printre cel e mai rspndite versiuni ale limbajului PASCAL se numr Microsoft PASCAL (MS-PASCAL) versiune elaborat de firma american BORLAND. n cele ce urmeaz va fi prezentat implementarea TURBO PASCAL, care prin cuplarea editorului de texte, compilatorului i depanatorului ntr-un singur sistem gestionat prin meniuri sugestive, reprezint un mediu de programare deosebit de performant cu multiple faciliti n ceea ce privete crearea, depanarea i exploatarea programelor. n definiiile sintactice se vor face referiri la PASCAL STANDARD, care st la baza tuturor versiunilor PASCAL, n particular vor fi prezentate elemente din versiunea TURBO PASCAL 6.0 aprut n 1990, fr a prezenta o descriere exhaustiv a ei, care ar depi cu mult volumul limitat al acestui manual.

U11.4. Mediul de programare Turbo Pascal


Mediul de programare Turbo Pascal este dedicat dezvoltrii programelor scrise n limbajul Pascal. Dintre componentele sale menionm: editorul de programe - acesta este un editor de texte specializat, conceput astfel nct s uureze dactilografierea i modificarea programelor surs Pascal; componenta de gestiune a fiierelor, care asigur, n principal, salvarea n fiiere pe disc a programelor editate i ncrcarea programelor surs de pe disc; compilatorul, care analizeaz corectitudinea sintactic a programului editat i genereaz forma sa executabil; componenta ce controleaz execuia programului, cu revenire a editorul de programe n momentul terminrii normale a programului sau la producerea unei erori, sistemul de informaii ajuttoare (HELP), care asigur obinerea de informaii referitoare la utilizarea mediului de programare Turbo Pascal i, respectiv, la elementele limbajului Pascal.

162

11.4.1. nceperea sesiunii de lucru Turbo Pascal O sesiune de lucru Turbo Pascal este declanat de comanda turbo. Aceasta se introduce ca rspuns la cererea sistemului de operare MS-DOS de a specifica ce operaie trebuie executat. Aceast cerere (denumit n englez prompt) are forma: mesaj > De cele mai multe ori mesaj-ul precizeaz catalogul curent, din care se citesc i n care se scriu, implicit, diferite fiiere (n cazul de fa fiierele surs Pascal, care au extensia implicit pas). Ca efect al comenzii turbo (care, ca orice alt comand, trebuie ncheiat prin apsarea tastei ENTER), pe ecran se afieaz fereastra principal, peste care se suprapune o fereastr de editare. n partea superioar a ferestrei principale se afl meniul principal, care permite accesul la sistemul de meniuri al mediului de programare Turbo Pascal. Deoarece comenzile i opiunile Turbo Pascal sunt foarte numeroase, ele sunt grupate n funcie de semnificaie. Comenzile dintr-un grup sunt prezentate n cadrul unui meniu specific i pot fi selectate atunci cnd meniul corespunztor este afiat pe ecran i comanda respectiv are sens (de exemplu nu se poate solicita execuia operaiei salvare fiier atunci cnd nu exist un fiier n curs de prelucrare). Anumite comenzi pot fi ns transmise direct, prin acionarea unei taste sau a unei combinaii de taste de activare (hot keys). Din aceast categorie fac parte i cele cteva menionate n ultima linie din fereastra principal (numit linie de informare), care au urmtoarele semnificaii: F1 Help - acces la sistemul de informaii ajuttoare; F2 Save - salvarea programului din fereastra de editare ntr-un fiier pe disc; F3 Open - deschiderea unei ferestre de editare n care se ncarc coninutul unui fiier surs; Alt+F9 Compile - compilarea programului din fereastra de editare; F9 Make - generarea formei executabile a programului; F10 Local Meniu - acces la meniul principal, pentru a opera cu sistemul de meniuri Turbo Pascal.

163

11.4.2. Principalele elemente ale ferestrei de editare

Principalele elemente ale ferestrei de editare sunt: numele fiierului surs n care se salveaz textul programului editat; dac nu a fost ales nc un nume pentru fiierul surs, atunci numele afiat este NONAME00.PAS; numrul de ordine al ferestrei de editare curente (mediul Turbo Pascal poate opera cu mai multe ferestre de editare dar, pentru simplitate, n cele ce urmeaz vom trata numai cazul utilizrii unei singure ferestre de editare); poziia curent n cadrul textului surs, specificat n partea de jos a ferestrei, sub forma indice-linie: indice-coloan; zona rezervat afirii coninutului fiierului surs, situat n interiorul cadrului ferestrei. 11.4.3. Salvarea pe disc a programului surs Dei nu este obligatoriu, recomandm ca n cazul editrii unui nou program s se fixeze numele fiierului surs corespunztor chiar de a nceputul editrii. Aceasta se realizeaz prin intermediul comenzii de salvare (Save), transmis direct mediului Turbo Pascal prin apsarea tastei F2. n acest caz se afieaz fereastra care permite programatorului s specifice numele fiierului surs. Dac se introduce numele test, mediul de programare i adaug automat extensia .pas, deci identificatorul complet al fiierului surs va fi test.pas. Dup introducerea numelui fiierului, la apsarea tastei ENTER, se revine la fereastra de editare i se poate trece la editarea textului programului. Recomandm ca, pe parcursul editrii textului programului, acesta s fie salvat din cnd n cnd, pentru a evita situaiile neplcute, de genul ,,cdere de tensiune sau ,,blocare sistem, n urma crora textul editat se pierde i este necesar reintroducerea sa. 11.4.4. Editarea unui program surs Pascal Introducerea textului unui program se face caracter cu caracter. Poziia urmtorului caracter introdus este pus n eviden printr-un marcaj clipitor, numit cursor.
164

Pentru a termina o linie i a trece la linia urmtoare se apas tasta ENTER. Editorul Turbo Pascal indenteaz automat liniile introduse, plasnd cursorul sub primul caracter diferit de blanc din linia terminat (spre deosebire de alte editoare, care l plaseaz la marginea din stnga a ecranului). Indentarea textului unui program este foarte important, deoarece uureaz urmrirea structurii sale i, deci, corectarea sau modificarea ulterioar. S considerm urmtorul program surs: program test; begin writeln (salut prieteni!) end. La introducerea primelor dou linii nu apar probleme deosebite. Deoarece a treia linie ncepe cu 3 spaii, trebuie apsat de trei ori tasta BLANC (tasta cea mai lung de pe tastatur), continund apoi cu introducerea textului propriu-zis. Dup apsarea tastei ENTER cursorul se poziioneaz sub caracterul w. Pentru poziionarea la captul din stnga al liniei trebuie apsat tasta HOME. Aceasta face parte din grupul tastelor care comand deplasarea rapid n cadrul textului editat, dup cum urmeaz: CTRL+A - salt la nceputul cuvntului anterior; CTRL+F- salt la nceputul cuvntului urmtor; CTRL+ Q,E- salt la prima linie de pe ecran; CTRL+Q,X- salt la ultima linie de pe ecran; HOME- salt la nceputul liniei curente; END - salt la sfritul liniei curente; PAGE UP- salt la pagina urmtoare; PAGE DOWN -salt la pagina urmtoare. Deplasrile pas cu pas se realizeaz apsnd tastele direcionale, marcate cu sgei. Pe parcursul editrii programului surs este posibil s se greeasc i s fie necesar tergerea unuia sau a mai multor caractere. n acest scop pot fi utilizate urmtoarele comenzi: DELETE- terge caracterul pe care este poziionat cursorul; BACKSP - aceast tast, situat de obicei deasupra tastei ENTER i marcat cu o sgeat orientat spre stnga, se utilizeaz n mod obinuit pentru tergerea caracterului din stnga cursorului; efectul este diferit dac la stnga
165

cursorului exist numai blancuri, caz n care tergerea se efectueaz pn la nivelul de indentare anterior; CTRL+T - terge un cuvnt sau finalul acestuia, ncepnd de la caracterul pe care este poziionat cursorul; CTRL+Q,Y- terge toate caracterele de la dreapta cursorului; CTRL+Y - terge linia pe care este poziionat cursorul. De exemplu, pentru a nlocui cuvntul salut cu SALUT, se poate proceda astfel: se poziioneaz cursorul la nceputul cuvntului; se terge cuvntul utiliznd CTRL+T; se introduce noua form a cuvntului. Modul obinuit de lucru al editorului de programe este modul ,,inserare. Aceasta nseamn c n cazurile n care cursorul se afl n interiorul unei linii, apsarea unei taste determin inserarea caracterului corespunztor (caracterele de la dreapta cursorului deplasndu-se corespunztor). Modul de lucru al editorului poate fi comutat de la ,,inserare la ,,substituie, apsnd tasta INSERT. n modul ,,substituie, la apsarea unei taste, caracterul indicat de cursor este nlocuit de cel introdus. Schimbarea modului de lucru al editorului este semnalat prin schimbarea formei cursorului. De exemplu, o alt variant pentru a nlocui cuvntul salut prin SALUT este urmtoarea: se poziioneaz cursorul la nceputul cuvntului; se apas tasta INSERT, trecnd astfel n modul ,,substituie; se introduce cuvntul SALUT, caracterele introduse nlocuindu-le pe cele existente anterior; se apas din nou tasta INSERT, pentru a reveni la modul inserare.

11.4.5. Compilarea programului editat Comanda prin care se solicit compilarea programului surs i generarea celui executabil este F9 (Make). n cazul programelor surs fr erori sintactice se afieaz o fereastr care furnizeaz informaii despre rezultatul compilrii. Dac programul are erori, atunci compilatorul se oprete la prima eroare ntlnit, rednd controlul editorului. n acest caz cursorul este poziionat n locul

166

n care a fost detectat eroarea i se afieaz un mesaj referitor la cauza probabil a erorii. n cazul programelor de dimensiuni mai mari se pot face compilri chiar nainte de editarea complet a textului programului surs, pentru a verifica dac poriunea introdus a fost corect dactilografiat.

11.4.6. Corectarea erorilor sintactice Chiar dac revenirea n etapa de editare se face cu poziionarea cursorului n locul detectrii erorii, cauza acesteia trebuie cutat cu atenie, deoarece elementul greit se poate afla ntr-o linie anterioar celei pe care este poziionat cursorul. Printre erorile cel mai des ntlnite sunt cele de tipul Unknown identifier (identificator necunoscut, adic nedefinit). De cele mai multe ori ele apar datorit dactilografierii incorecte a textului programului, dar pot fi determinate i de absena unei declaraii corespunztoare pentru identificatorul (numele) semnalat ca necunoscut. Dup gsirea cauzei erorii i modificarea programului este necesar o nou compilare, procesul repetndu-se pn n momentul obinerii unei program fr erori sintactice. 11.4.7. Execuia programului Cea mai simpl comand de lansare n execuie a programului editat este CTRL+F9. Ca rezultat, este afiat fereastra utilizator (n care se afieaz mesajele scrise prin program i ecoul datelor introduse de utilizator), iar apoi se d controlul programului respectiv. La ncheierea execuiei programului controlul este redat mediului Turbo Pascal, care reafieaz fereastra de editare. Astfel, n cazul execuiei programului test, deoarece aceasta este practic instantanee, se remarc numai o scurt clipire a ecranului. Pentru a vedea ce anume s-a ntmplat, este necesar afiarea ferestrei utilizator. n acest scop se utilizeaz comanda ALT+F5. Pentru a reveni la fereastra TP se poate apsa orice tast.

167

n cazul exemplului considerat, o singur execuie a programului este suficient pentru a constata dac acesta funcioneaz corect. De cele mai multe ori sunt ns necesare mai multe execuii succesive, pentru diferite seturi de date. n procesul de testare a programului este posibil s fie detectate erori. n cazul unei erori detectate de mediul de programare, execuia se termin cu afiarea unui mesaj de eroare corespunztor. Alte erori sunt cele observate de utilizator, atunci cnd compar rezultatele afiate de program cu cele pe care le atepta. Corectarea erorilor impune modificri ale textului programului surs, urmate de compilare i execuie.

11.4.8. Trecerea la editarea unui alt program Dup obinerea unui program care funcioneaz conform ateptrilor, se poate trece la editarea unui alt program. n acest scop se nchide fereastra de editare curent, prin comanda ALT+F3. Dac varianta curent a programului editat nu a fost deja salvat, atunci se afieaz fereastra din figura 13. Aceasta conine trei butoane de comand, dintre care poate fi selectat doar unul. Un buton de comand poate fi selectat n dou moduri: prin poziionarea pe buton folosind tasta TAB, urmat de apsarea tastei ENTER; apsnd tasta corespunztoare, dac n textul nscris pe butonul respectiv este pus n eviden o anumit liter. Efectul selectrii fiecrui buton este descris n cele ce urmeaz: Yes - se memoreaz (salveaz) versiunea curent (cea mai recent) a programului editat; No - se pstreaz versiunea salvat anterior, iar versiunea curent se pierde; Cancel - se revine la etapa de editare a programului. Dac este selectat butonul Yes sau butonul No, atunci fereastra de editare este nchis i pe ecran rmne numai fereastra principal. Pentru a trece efectiv la editarea unui alt program, se utilizeaz comanda F3 (Open). n acest moment se poate introduce un nume de fiier nou (care nu apare n lista afiat) sau se poate alege unul dintre fiierele existente, pentru a modifica sau reexecuta programul surs pe care l conine. Alegerea unui fiier existent se poate face n dou moduri:
168

prin introducerea numelui fiierului; apsnd mai nti tasta TAB, dup care banda luminoas de selecie trebuie poziionat, folosind tastele direcionale, pe numele fiierului dorit. Selecia devine efectiv n momentul apsrii tastei ENTER, moment n care se deschide o fereastr de editare n care apare coninutul fiierului selectat.

11.4.9. Crearea unei variante a unui program existent Dac se dorete crearea unei variante a unui program, cu pstrarea versiunii existente, se poate proceda n mai multe feluri. n cele ce urmeaz prezentm o singur soluie, destul de simpl: se trece a editarea unui nou fiier, n care se va pstra noua variant a programului; se copiaz varianta curent a programului, folosind comanda CTRL+K,R; ca efect al acestei comenzi se permite selectarea fiierului din care se copiaz, la fel ca n cazul ncrcrii unui fiier surs existent; textul copiat din fiierul selectat este pus n eviden prin modul de afiare; pentru a trece la afiarea normal se utilizeaz comanda CTRL+K,H; se modific programul surs copiat i se salveaz n noul fiier. 11.4.10. Obinerea informaiilor ajuttoare Informaiile ajuttoare sunt grupate n ecrane de informare cu coninut fix. Coninutul ecranului de informare corespunztor contextului curent se afieaz ntr-o fereastr-help. n funcie de dimensiunile ecranului i ale ferestrei, afiarea este integral sau parial. Pentru a aduce n cadrul ferestrei acele poriuni din ecranul de informare care nu sunt vizibile, utilizatorul poate folosi tastele direcionale (cele marcate cu sgei, precum i PAGE UP i PAGE DOWN). n majoritatea ecranelor de informare apar casete care conin titlurile altor ecrane. Aceste casete pot fi selectate n mai multe moduri: utiliznd tastele direcionale, respectiv TAB i SHIFT+TAB, sau introducnd litera (literele) cu care ncepe textul din caset. Odat selectat caseta dorit, apsarea tastei ENTER determin afiarea ferestrei de informare corespunztoare. O sesiune de informare este lansat printr-una din urmtoarele comenzi:

169

- ALT+H sau F10,H -determin afiarea meniului Help, din care pot fi selectate diferite ecrane de informare; - F1 - are ca efect afiarea ecranului corespunztor contextului curent; - CTRL+F1 - se utilizeaz n cazul n care pe parcursul editrii este necesar obinerea de informaii ajuttoare cu privire la un element al limbajului. n astfel de cazuri este suficient s se deplaseze cursorul pn la elementul respectiv (de exemplu un cuvnt cheie sau un operator) i s se dea c omanda CTRL+F1; - SHIFT+Fl - determin afiarea ecranului de informare Index; - ALT+F1 - n urma acestei comenzi se revine la fereastra de informare activat anterior, sau se afieaz o prim fereastr. Sesiunea de informare se ncheie la apsarea tastei ESC.

11.4.11. ncheierea sesiunii de lucru Pentru a ncheia sesiunea de lucru Turbo Pascal se utilizeaz comanda ALT+X. n cazul n care programul surs nu a fost salvat sau a suferit modificri dup ultima salvare, se afieaz fereastra din figura 5. Utilizatorul este cel care decide dac forma curent a programului surs trebuie salvat sau nu. 11.4.12. Unitile lexicale ale limbajului PASCAL Un program PASCAL fiind un text ce specific aciunile ce vor fi executate de calculator, este format din caractere grupate n uniti lexicale. Acestea sunt: - caracterele; - cuvintele rezervate; - identificatorii (inclusiv identificatorii Standard); - numerele; - irurile de caractere; - delimitatorii; - comentariile. Setul de caractere Este un subset al setului de caractere utilizat de sistemele de calcul (ASCII sau EBCDIC). El conine urmtoarele grupe de caractere:
170

a) literele alfabetului latin: a, b, c, , z. A, B, C, , Z. b) cifrele arabe: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; c) caractere speciale: +,-,/,*, ^, < >; ( ), [ ], { }, ., :, ;, , #, $, @, .. =; la care se adaug simbolurile formate din dou caractere: - operatorul de atribuire: = - operatorii relaionali <=, >=, = i < > (diferit) - delimitatorii de comentarii (* *) echivaleni cu { }. Cuvintele rezervate Sunt cuvinte cu semnificaie prestabilit de compilator i nu pot fi folosite de utilizator ntr-un alt context dect cel specificat n definirea limbajului PASCAL. n particular cuvintele rezervate nu pot fi folosite ca identificatori. n TURBO PASCAL 6.0. exist urmtoarele cuvinte rezervate: ABSOLUTE AND ARRY BEGIN CASE CONST CONSTRUCTOR DESTRUCTOR DIV DO DOWNTO ELSE END EXTERNAL FILE FOR FORWARD FUNCTION GOTO IF IMPLEMENTATION IN INLINE INTERFACE INTERRUPT LABEL MOD NIL NOT OBJECT OF OR PACKED SHR STRING THEN TO TYPE UNIT UNTIL

PROCEDURE USES PROGRAM RECORD REPEAT SET SHL VAR VIRTUAL WHILE WITH XOR

Identificatorii Sunt nume care desemneaz constante, variabile, proceduri, funcii i alte elemente ale unui program PASCAL. Un identificator este o combinaie de caractere alfanumerice (litere i cifre), primul caracter fiind obligatoriu alfabetic. Singurul caracter special permis la constituirea identificatorilor este liniua de subliniere __ (underscore). Compilatorul TURBO PASCAL nu face distincie ntre majuscule i minuscule. Pot fi definii identificatori din mai multe cuvinte legate prin liniua de subliniere (__). Exemplu: Matrice __ de __ numere.
171

n principiu, lungimea identificatorilor nu este limitat dar compilatorul TURBO PASCAL 6.0 ia n consideraie numai primele 63 de caractere. Exemple de identificatori ilegali: 2XY, Var, nivel. 4x-y. (2XY ncepe cu cifr, VAR este cuvnt rezervat iar ultimul identificator conine caractere nepermise n identificatori: punct, minus). Anumii identificatori, numii identificatori standard sunt predefinii i se recomand folosirea lor sub forma stabilit: sin, cos, arctan, ln, exp, ord, pred, sqrt, sqr, aud, not, or etc. Se recomand deci utilizarea identificatorilor standard drept cuvinte rezervate. Identificatorii definii de utilizator pentru constante, tipuri de date, variabile, funcii, proceduri, se numesc identificatori utilizator. Se utilizeaz denumiri sugestive care s faciliteze urmrirea programului, dar nu se recomand folosirea de identificatori foarte lungi care sunt greu de manevrat n expresii. Numere Se reprezint n notaia zecimal (baza 10). Un numr ntreg se reprezint ca un ir de cifre precedat sau nu de un semn (+, -). Numerele reale se reprezint n dou moduri: a) fr exponent, caz n care numrul se reprezint prin parte ntreag, punct zecimal, parte fracionar: parte ntreag poate fi precedat de un semn. Exemple: 1.59 +92.51 477.89911 -0.225 b) (cu exponent sau factor de scar), caz n care numrul se reprezint prin: parte ntreag cu sau fr semn, punct zecimal, partea fracionar, litera E i un ntreg cu semn de dou cifre, aceasta din urm reprezentnd exponentul lui 10. Exemple: 0.15E + 03 = 0.15 x 1000 = 150 8.007E - 02 = 8.007 x 0.01 = 0.08007 dac un numr conine punct zecimal, aceasta din urm trebuie precedat i urmat de cel puin o cifr. n interiorul unui numr nu poate apare virgula (,). iruri de caractere Un ir de caractere este o succesiune de caractere ncadrate ntre semnele apostrof. Un ir de caractere trebuie s apar pe o singur linie a textului programului. Spre deosebire de cuvintele rezervate i de identificatori, n interiorul irurilor de caractere se face deosebire ntre literele majuscule i minuscule.
172

Comentarii Pentru creterea claritii programelor este recomandabil ca n textul lor s fie incluse anumite explicaii sau comentarii. n PASCAL un comentariu este o succesiune de caractere incluse ntre delimitatorii {i} sau (* i *). Exemplu: {Programul calculeaz dobnzile n procente} La compilare, comentariile nu sunt luate n consideraie, i nu modific efectul programului. Comentariile pot fi inserate oriunde n textul programului. Delimitatori i separatori Delimitatorii sunt semne de punctuaie sau operatori. De asemenea cuvintele rezervate pot fi incluse n categoria delimitatorilor. Ei se utilizeaz pentru a delimita spaiul ocupat de unitile lexicale: + - / . : ; = > < < => = < >,: ( ) [] {} ^. Separatorii n PASCAL sunt: spaiul (blank), sfritul de linie i comentariul. ntre dou cuvinte rezervate, identificatorii sau numere trebuie intercalat cel puin un separator ns nu este permis intercalarea de separatori n interiorul cuvintelor rezervate, identificatorilor, numerelor i simbolurilor speciale. n rest poate s apar un numr arbitrar de separatori ntre oricare dou simboluri consecutive. Pentru separarea instruciunilor se utilizeaz ;

U11.5. Test de autoevaluare nr. 11


1. Specificai elementele de baz ale limbajului Turbo Pascal (1,5 pct.). 2. Care sunt principalele elemente ale ferestrei de editare? (1,5 pct.)
Timp de lucru: 30 min Punctaj 5,5p

3. Ce presupune corectarea erorilor sintactice? (2,5 pct.) Puncte obinute..

Total puncte: 5,5

U11.6. Rezumat
Instruciunile pentru rezolvarea unei anumite probleme sunt grupate ntr un program, scris de un programator sau de o echip de programatori. Cea de-a doua situaie se ntlnete n special n cazul programelor ,,de firm de complexitate ridicat, care sunt livrate odat cu sistemul de calcul (sistemul de operare i diverse programe utilitare) sau se achiziioneaz ulterior (jocuri,
173

compilatoare, programe pentru realizarea aplicaiilor specifice unui anumit domeniu etc.).

Bibliografie minimal
1. Tama i alii Bazele tehnologiei informaiei i comunicaiilor, Editura InfoMega, Bucureti, 2004; 2. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002 3. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom, Iai, 2004; 4. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus, Bucureti, 2004. 5. Kris Jamsa, Visual Basic. Net: Sfaturi i tehnici, Ed. All, Bucureti, 2003; 6. John Conell, Microsoft Visual Basic.Net. Ed. Teora, Bucureti, 2003; 7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.

Rspunsuri i comentarii la testul de autoevaluare nr. 11

174