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? 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 (caracterele 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.
a) Scrierea programului presupune editarea unui fiier ce conine textul programului. Acest fiier se cheam fiier-surs i este - dup cum am menionat-un 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. 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. 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. 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-cu-linie. 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 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). Mediile de programare disponibile n prezent sunt deosebit de performante i ofer utilizatorului toat gama de servicii necesare (help, exemple gata-construite 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. 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).
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; - reguli sintactice etc. 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.. 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?! 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 sunt 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. 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. 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 s-i 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 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; 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.
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. 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 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 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 ntr-un 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. 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); - 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 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: 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. 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 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.
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 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 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; - 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. - 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). - 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.
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 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 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, software-ul 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 tiinifico-metodologic, 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 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, 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 ntr-altul); 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.
U8.1. Scopul i obiectivele unitii n aceast tem vei nva urmtoarele concepte fundamentale: Visual Basic (VB);
mediu integrat de dezvoltare, IDE (Integrated Development 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 J et Database Engine.
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 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; 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 J et 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). 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 mouse-ului, 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 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 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.
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 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. 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 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 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. 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:
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.
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 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 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).
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. 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 (icon-ul) 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 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. 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). 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).
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; 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.
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 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. 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 (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.
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 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 mouse-ului 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 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.
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
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; 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, cuvntul-cheie 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) 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.