Subiecte Prog Calc

45
U1.1. Scopul şi obiectivele unităţii În această temă vei învăţa următoarele concepte fundamentale: scrierea programului (într-un anumit limbaj de programe); compilarea programului; editarea de legături (link-editarea); execuţia programului; eventuala depanare a sa, reluând procedeul de la etapa a); îmbunătăţirea performanţelor programului. U1.2. Introducere în programare Fără intenţia de a leza temerarii angajaţi în acest domeniu trebuie să constatăm că varietatea soft-ului pentru PC-uri este imensă, iar performanţele atinse sunt incredibile. Menţinerea în această cursă necesită echipe de specialişti pregătiţi temeinic şi eforturi deosebite - întinse pe perioade de luni sau chiar ani de zile. Deci, nu vă aşteptaţi ca după parcurgerea acestui capitol să puteţi aborda realizarea unui program (pachet de programe) care să rivalizeze cu cele deja prezentate. Posibilităţile unui singur programator sau a unei echipe restrânse sunt mult mai modeste. Dacă aşa stau lucrurile, este oare nevoie să programăm? Sau trebuie să apelăm întotdeauna la firme specializate? În practică intervin frecvent cazuri în care este necesară construirea unui program deoarece oricât de generoasă ar fi familia aplicaţiilor deja disponibile este imposibil a acoperi infinitatea situaţiilor concrete. Aceste situaţii inedite nu se referă la noi tipuri de probleme sau la „revoluţionarea” modului de lucru, ci în general, la modeste adaptări. Iată câteva situaţii în care efortul de programare îşi dovedeşte pe deplin utilitatea; -adaptarea unui program (editor de texte) la specificul naţional (caracterele româneşti: ă, â, î, ş, ţ); -prelucrări sumare ale datelor (conversii, prelucrare efectivă); -extinderea unei aplicaţii cu module proprii; -construirea unei aplicaţii cu înalt grad de particularitate etc. Un programator va putea rezolva o situaţie “neplăcută” de acest gen nefiind restrâns la gama de operaţii oferite într-un pachet. În general, însă, nu pot fi abordate proiecte ample, ci doar operaţii punctuale. Iar pentru ducerea la bun sfârşit a unui astfel de proiect restrâns sunt necesare cunoştinţe tehnice şi studiu mult mei aprofundat decât cel a unui simplu utilizator.

description

s

Transcript of Subiecte Prog Calc

Page 1: Subiecte Prog Calc

U1.1. Scopul şi obiectivele unităţii

În această temă vei învăţa următoarele concepte fundamentale: scrierea programului (într-un anumit limbaj de programe); compilarea programului; editarea de legături (link-editarea); execuţia programului; eventuala depanare a sa, reluând procedeul de la etapa a); îmbunătăţirea performanţelor programului.

U1.2. Introducere în programare

Fără intenţia de a leza temerarii angajaţi în acest domeniu trebuie să constatăm că varietatea soft-ului pentru PC-uri este imensă, iar performanţele atinse sunt incredibile. Menţinerea în această cursă necesită echipe de specialişti pregătiţi temeinic şi eforturi deosebite - întinse pe perioade de luni sau chiar ani de zile. Deci, nu vă aşteptaţi ca după parcurgerea acestui capitol să puteţi aborda realizarea unui program (pachet de programe) care să rivalizeze cu cele deja prezentate. Posibilităţile unui singur programator sau a unei echipe restrânse sunt mult mai modeste.

Dacă aşa stau lucrurile, este oare nevoie să programăm? Sau trebuie să apelăm întotdeauna la firme specializate?

În practică intervin frecvent cazuri în care este necesară construirea unui program deoarece oricât de generoasă ar fi familia aplicaţiilor deja disponibile este imposibil a acoperi infinitatea situaţiilor concrete. Aceste situaţii inedite nu se referă la noi tipuri de probleme sau la „revoluţionarea” modului de lucru, ci în general, la modeste adaptări. Iată câteva situaţii în care efortul de programare îşi dovedeşte pe deplin utilitatea;

-adaptarea unui program (editor de texte) la specificul naţional (caracterele româneşti: ă, â, î, ş, ţ);-prelucrări sumare ale datelor (conversii, prelucrare efectivă);-extinderea unei aplicaţii cu module proprii;-construirea unei aplicaţii cu înalt grad de particularitate etc.Un programator va putea rezolva o situaţie “neplăcută” de acest gen nefiind restrâns la gama de

operaţii oferite într-un pachet. În general, însă, nu pot fi abordate proiecte ample, ci doar operaţii punctuale.

Iar pentru ducerea la bun sfârşit a unui astfel de proiect restrâns sunt necesare cunoştinţe tehnice şi studiu mult mei aprofundat decât cel a unui simplu utilizator.

Dacă totuşi trebuie să programăm, atunci să programăm bine şi eficient. Să nu ne apucăm să reinventăm gramafonul când acum muzica se ascultă pe compact - discuri. Deci mai întâi 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 când abordăm o aplicaţie să alegem cea mai performantă dintre uneltele disponibile.

U1.3. Noţiuni de programare

Prezentarea amănunţită a acestor noţiuni se face pe baza schemei principiale de realizare a unui program. Invariabil, etapele necesare de parcurs sunt următoarele:

scrierea programului (într-un anumit limbaj de programe); compilarea programului; editarea de legături (link-editarea); execuţia programului; eventuala depanare a sa, reluând procedeul de la etapa a); îmbunătăţirea performanţelor programului.

Page 2: Subiecte Prog Calc

a) Scrierea programului presupune editarea unui fişier ce conţine textul programului. Acest fişier se cheamă fişier-sursă şi este - după cum am menţionat-un fişier cu text în format ASCII. În interiorul său el conţine instrucţiuni ale limbajului în care se face programarea.

Un limbaj de programare este foarte asemănător limbajului obişnuit (natural); el reprezintă un sistem de convenţii pe baza căruia se efectuează o comunicare. Deci limbajul de programare este un sistem de cuvinte (cheie), semne, construcţii cu cuvinte şi semne care ne asigură de faptul că transmitem calculatorului ceea ce dorim să realizeze.

b) “Propoziţiile” şi “frazele” unui limbaj de programare nu sunt direct înţelese de calculator. Ele sunt traduse din această formă uşor manevrabilă în instrucţiuni maşină (singurele recunoscute de microprocesor) de către un program ce se cheamă compilator. Acest program recunoaşte noţiunile din fişierul-sursă şi le converteşte în echivalenţele lor în limbaj maşină pe care le depune într-un fişier de ieşire numit fişier-obiect.

c) Fişierul-obiect produs de un compilator nu este, încă, gata de a fi executat necesitând o prelucrare suplimentară a cărei raţiune va fi prezentată în continuare.

Dacă fişierele-sursă ar fi traduse ca atare ele ar putea conţine multă informaţie redundantă. Spre exemplu, să considerăm un program care printre altele scrie mesaje pe monitorul calculatorului.

Dacă fiecare instrucţiune din fişierul-sursă ar produce instrucţiuni care realizează scrierea unui mesaj această porţiune de cod s-ar găsi repetată (cu mici modificări) în mai multe locuri din program. Pentru înlăturarea unui astfel de lucru nedorit, operaţiile cel mai des folosite sunt “izolate” într-o colecţie de rutine de unde pot fi apelate oricând este nevoie.

Deci, după compilare, fişierul-obiect produs nu va conţine întotdeauna instrucţiunile necesare unei operaţii ci eventuale referiri la rutina de bibliotecă ce execută operaţia în cauză.

Editarea de legături (link-editarea) va rezolva aceste referiri stabilind conexiunile dintre referiri şi punctele referite. Ea va conecta referinţele nerezolvate de compilator cu modulele de bibliotecă ce le corespund.

Din colecţia de rutine (denumită bibliotecă) vor fi extrase numai aceste rutine (module) referite care împreună cu instrucţiunile din fişierul-obiect vor constitui un program coerent. adică un fişier-executabil.

d) Execuţia programului este scopul final al etapelor anterioare şi presupune lansarea fişierului-executabil astfel obţinut. Pentru această operaţie sunt eventual necesare:

-îndeplinirea unor cerinţe din partea sistemului;-specificarea de parametri corespunzători pentru program. e) În cazul unui program mai amplu sau în cazul unui debut în programare va fi întotdeauna

necesară depanarea programului obţinut deoarece (fără greş) acesta nu va funcţiona din prima. Pentru depistarea eventualelor erori stau la dispoziţie pachete de programe numite depanatoare.

f) După ce programul a fost convins să funcţioneze corect, abia atunci este cazul a încerca îmbunătăţirea performanţelor sale (viteză de execuţie, resurse sistem mai reduse, protejare la erori). Pentru acest reglaj „fin” stau la dispoziţie programe de tip “profiler” care detectează zonele de programe ce consumă cele mai mari cantităţi de timp, punctele în care trebuie să se concentreze atenţia programatorului.

De regulă se obişnuieşte a se lansa o versiune de test (versiunea „beta”) a aplicaţiei care este exploatată efectiv pentru a se constata eventualele erori de funcţionare.

Etapele de compilare şi link-editare sunt necesare pentru realizarea unui program compilat. Se pot „executa” aplicaţii şi fără producerea fişierelor obiect şi executabil. Metoda folosită este cea a unui interpretor.

Un interpretor, compilează, link-editează şi execută un program „linie-cu-linie”. Pe măsură ce sunt citite linii din fişierul-sursă ele sunt transformate în instrucţiuni maşină şi executate imediat. Pentru un program dat, un interpretor nu mai produce fişierele-obiect şi executabil, operând numai cu fişierul-sursă.

Care din metode este mai bună, cea a unui compilator sau cea a unui interpretor?

Page 3: Subiecte Prog Calc

Pentru interpretor pledează un singur avantaj şi anume reducerea timpului de punere la punct a unei aplicaţii (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 execuţia, astfel încât întârzierile provocate de etapele “suplimentare” sunt neglijabile.

În schimb, avantajele unui program compilat faţă de un program interpretat sunt zdrobitoare:- viteză de execuţie de câteva ori (chiar zeci de ori) mai marc;- posibilitatea de a rula de sine stătător; odată compilat, compilatorul nu este necesar în execuţia

programului, pe când un program interpretat nu se poate “executa” decât dacă interpretorul se află în memoria calculatorului;

- programul compilat dispune de resursele sistemului în întregime, pe când cel interpretat le împarte cu interpretorul (mai ales memoria, care este de multe ori critică);

- flexibilitate sporită în realizarea programelor compilate (adăugarea de noi biblioteci, redefinirea unei rutine deja existente etc).

Toate aceste consideraţii au determinat ca interpretoarele să fie pe cale de dispariţie la ora de faţă sau oricum, să fie dublate de un compilator. Spre exemplu limbajul BASIC ce beneficia iniţial numai de interpretor posedă în prezent şi compilatoare care încearcă să-l menţină în atenţia programatorilor.

Noţiunile de mai sus descriu etapele principale ale realizării unui program, în plus faţă de aceste elemente fundamentale ce asigură o viziune de ansamblu asupra procesului este necesar să amintim şi câteva noţiuni de detaliu ce intervin frecvent în practică.

U1.4. Mediu de programare

Un pachet de programe ce asigură toate operaţiile de mai înainte poartă numele de mediu de programare.

Deci cu ajutorul său:- se editează un program;- se compilează şi eventual link-editează automat;- se lansează în execuţie; - se depanează un program;- se poate “regla” execuţia 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 programareNici un program nu este construit de la zero. Spre exemplu, programele ce lucrează sub MS-DOS

se bazează pe interfaţa DOS, folosind rutinele elementare ale acesteia (scriere caracter la consolă, citire caracter de la tastatură etc). Interfaţa de programare reprezintă suportul pe care se construieşte un program. Desigur, cu cât acest suport este mai elaborat şi programul în cauză va fi mai elaborat şi va fi mai uşor de atins un nivel ridicat al complexităţii operaţiilor realizate. Un program realizat pentru a rula sub Windows (deci bazat pe interfaţa Windows) are la dispoziţie facilităţi de multitasking, nu mai trebuie să gestioneze diversele driver-e (de ecran, imprimantă, tastatură etc), toate acestea fiind deja rezolvate de Windows.

Biblioteci de programareDupă cum aţi constatat din prezentarea anterioară‚ operaţia de link-editare înseamnă conectarea

unui fişier-obiect la rutinele corespunzătoare. Aceste rutine pot exista într-un fişier pe disc şi link-editarea se realizează static, obţinându-se un fişier-executabil.

Există, însă, şi biblioteci ce se încarcă în memorie şi sunt gestionate de un program (de ex. Windows). in momentul lansării în execuţie a unei aplicaţii, aceasta se află pe disc ne-link-editată. Ea va fi încărcată în memorie şi link-editată dinamic cu modulele existente în memorie. Astfel, aplicaţia va fi rulată fără ca să fie produs fişierul-executabil în forma sa completă.

Page 4: Subiecte Prog Calc

Overlay-uri (acoperiri)În momentul în care un program este prea mare pentru a încape în memoria calculatorului se

recurge la fragmentarea sa. Se păstrează din program o parte principală (numită rădăcină) care se va afla în memorie şi de asemenea se rezervă în memorie spaţiul necesar pentru încărcarea pe rând, a celorlalte părţi ale programului în funcţie de necesităţi.

Desigur această tehnică de overlay presupune ca segmentul principal de program să conţină, în plus faţă de modulele propriu-zise, şi module ce vor gestiona încărcarea de pe disc a “acoperirii” (overlay-ului) necesar la un moment dat.

Un mediu de programare “inteligent” nu trebuie decât să fie informat că se doreşte lucrul cu overlay-uri şi va genera automat instrucţiunile 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 funcţionează asemănător 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. Când programul va face un apel la memoria virtuală ce se află mapată pe disc, gestionarul de memorie virtuală va încărca acea informaţie î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 unităţiiÎn această temă vei învăţa următoarele concepte fundamentale: Limbajele de programare; Limbajele de nivel scăzut – de nivel înalt; Limbajele procedurale/neprocedurale; Limbaje orientat; Limbaje concurente.

U2.2. Noţiuni introductiveUn limbaj de programare este un sistem de convenţii adoptate pentru realizarea unei comunicări -

între programator şi calculator. Limbajele folosite pentru programarea unui calculator sunt extrem de asemănătoare limbajelor naturale. Ele sunt compuse din:

- cuvinte (rezervate); - punctuaţie;- propoziţii şi fraze;- reguli sintactice etc.Aşa cum pentru însuşirea unei limbi străine trebuie învăţate cuvintele acesteia şi regulile cu care

pot fi manevrate tot aşa pentru însuşirea 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 comunicării, 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 scăzut - de nivel înalt“Nivelul” unui limbaj este apreciat prin poziţia pe care o ocupă pe scara constituită de limbajul recunoscut de microprocesor (limbaj maşină) şi limbajul natural al programatorului (limba română, limba engleză .

Page 5: Subiecte Prog Calc

Un limbaj de nivel scăzut este foarte apropiat de maşină, el manipulează cu elemente de nivel hardware, fizic, cum ar fi: registru-micro-procesor, locaţie de memorie, port de intrare/ieşire etc.

Un limbaj de nivel înalt sau foarte înalt manipulează cu concepte apropiate de limbajul natural, concepte de nivel logic, cum ar fi: colecţie de date, nume de operaţie (sort = sortare, writeln = scrie linie, open = deschidere fişier etc), variabile, constante (asemănătoare ca înţeles cu cele din matematică) etc..

Cu ajutorul unui limbaj de nivel înalt programatorul se face mai uşor înţeles de către calculator. Uneori o singură linie de program scrisă cu un astfel de limbaj poate echivala cu sute de linii de program scrise în limbaj maşină. Deci, din punct de vedere al reducerii timpului de realizare a unui program şi al siguranţei în funcţionare (absenţa erorilor de programare) este de preferat un limbaj de nivel cât mai ridicat (înalt sau foarte înalt). În schimb, pe măsură ce limbajul are un nivel mai ridicat execuţia programului conceput cu ajutorul său va fi mai lentă, decât a unui program ce realizează aceleaşi operaţii dar este scris în limbaj de asamblare. Motivele acestei diminuări de viteză sunt multe; amintim câteva dintre ele:

- fiind apropiat de maşină, limbajul de asamblare exploatează la maxim posibilităţile acesteia;- limbajul de nivel înalt este un cadru general, deci automat posedă cod (instrucţiuni) ce decide

asupra specificităţii operaţiei cerute şi după identificarea ei pune în execuţie codul propriu-zis care realizează operaţia;

- limbajul de nivel înalt poate conţine cod ineficient sau inutil pentru o anumită operaţie deoarece acest cod trebuie să funcţioneze şi pentru alte operaţii din aceeaşi clasă.

În prezent acest dezavantaj al limbajelor de nivel înalt nu mai este considerat esenţial. 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, când pot cumpăra 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ă instrucţiunile în care se consumă cel mai mult timp sau timp inutil. În aceste puncte se rescriu instrucţiunile respective folosind limbajul de asamblare. Aşadar randament sporit de un mai bun raport efort/performanţe.

În unele cazuri necesitatea folosirii limbajului de asamblare este de neînlăturat. Aceste situaţii apar în cazul unor operaţii nestandard, ce nu sunt puse la dispoziţie 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 soluţie, deoarece este singurul care poate exploata toate posibilităţile sistemului.

O altă diferenţă esenţială între cele două tipuri de limbaje o reprezintă posibilitatea, adică posibilitatea transferării programelor pe un alt tip de maşină decât 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 maşină trebuie rescrise integral pentru noul tip de maşină, folosind un nou set de instrucţiuni - care de obicei diferă foarte mult. De asemenea programul scris în limbaj de asamblare este legat direct de interfaţa de programare pe baza căreia 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 detaşate de maşină. Intre un astfel de program şi calculator se interpune compilatorul (sau interpretorul) care rezolvă corect transformarea fişierului-sursă în fişier-executabil.

În prezent limbajul maşină este extrem de rar folosit de programatori, el este rezervat constructorilor de calculatoare.

U2.4. Limbaje procedurale / neproceduraleCele două tipuri de limbaje, procedurale şi neprocedurale, se diferenţiază prin nivelul de

organizare (structurare) a unui program, limbajele neprocedurale sunt concepute pentru a gândi un

Page 6: Subiecte Prog Calc

program la nivel de instrucţiune, pe când cele procedurale, obligă programatorul să conceapă programe la nivel de bloc.

Desigur, într-un limbaj procedural (numit şi limbaj structurat) programele sunt scrise instrucţiune cu instrucţiune, dar ele sunt organizate logic în blocuri (grupuri de instrucţiuni) ce realizează o acţiune bine determinată. În figura următoare sunt prezentate - vădit exagerat - modurile în care „se desfăşoară” atenţia programatorului pentru a realiza (sau depana) un program.

Avantajul esenţial al programării structurate îl constituie conceptul de bloc de program. Un astfel de bloc reprezintă un set de instrucţiuni ce realizează o operaţie bine determinată. În general un bloc are un punct de intrare şi un punct de ieşire - nu mai multe.

Deci un program structurat este mult mai lizibil decât unul nestructurat.În al doilea rând programarea structurată permite lucrul la un nivel logic mai înalt. Odată definite

blocurile ce realizează operaţii elementare (intrări, ieşiri, prelucrări), programatorul va gândi programul în aceşti termeni, nu la nivel de instrucţiune, deci la un nivel de înţelegere superior.

În al treilea rând, şi nu cel din urmă, programarea structurată disciplinează gândirea unui programator. Această modalitate de lucru obligă programatorul să-şi organizeze aplicaţiile coerent şi limpede, pe când un limbaj nestructurat favorizează improvizaţiile de moment şi deseori labile.

În concluzie, un limbaj procedural oferă posibilitatea utilizării 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 “instrucţiune” ş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 cât decurge învăţarea şi utilizarea lor: câteva zile faţă de câteva săptămâni în cazul limbajelor procedurale - desigur ne referim la elementele principale ale limbajelor în cauză şi la realizarea unei aplicaţii simple. Însă, această “grabă” este de cele mai multe ori nejustificată ducând inevitabil la dificultăţi artificiale datorate alegerii din start a unui drum greşit.

Tendinţa 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 rămâne pentru uzul amatorilor.

U2.5. Limbaje orientateClasificarea operată în secţiunea 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 soluţionarea oricărui 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 către utilizator a conceptelor şi prelucrărilor dorite. Se poate crea şi întreţine o bază de date cu ajutorul unui limbaj neorientat, dar în loc de a efectua, să zicem o sortare printr-o simplă instrucţiune va fi nevoie de zeci (chiar sute) de instrucţiuni care să realizeze acelaşi lucru.

Deci, diferenţa esenţială 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 când cele nespecializate lasă în sarcina programatorului manevrarea nivelelor inferioare ale problemei.

Deci, trebuie analizat cu grijă limbajul ce va fi abordat deoarece facilităţile sale pot duce la diminuarea calităţii programelor obţinute.

Cele mai importante domenii pentru care există disponibile limbaje specializate sunt următoarele: 1. gestiune baze de date; 2. calcul tabelar; 3. inteligenţă artificială;4. calcul matematic.

U2.6. Limbaje concurenteO altă posibilă clasificare a limbajelor se poate face după „fluxul” de execuţie a programelor

realizate.

Page 7: Subiecte Prog Calc

Un limbaj concurent permite definirea de procese (prelucrări) paralele, execuţia sa fiind ramificată la un anumit moment de timp. Prin contrast limbajele neconcurente (cazul majorităţii limbajelor) au o desfăşurare 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ă puţine implementări de limbaje concurente.

Totuşi, e bine de ştiut că specialiştii în domeniu prevăd acestor limbaje un viitor strălucit.

U3.1. Scopul şi obiectivele unităţiiÎn această temă veţi învăţa următoarele concepte fundamentale: Principalele clase de limbaje de programe; Basic; Fortran; Pascal; Limbajul C; ADA.

U3.2. Abordări conceptualeCu aceste noi elemente la dispoziţie putem aborda prezentarea limbajului de programare, în

cunoştinţă de cauză este de menţionat faptul că optarea pentru un limbaj sau altul nu depinde numai de caracteristicile sale conceptuale, ci în mare măsură poate fi influenţată de performanţele mediului de programare disponibil. O implementare performantă a unui limbaj, dublată de “unelte” puternice (editor, compilator, link-editor, depanator, profiler) poate fi un element hotărâtor în alegerea dumneavoastră. Acest aspect nu va fi neglijat în prezentarea care urmează.

Prezentarea va cuprinde principalele clase de limbaje de programe, descrise mai întâi din perspectiva caracteristicilor definitorii, iar apoi detaliate diferenţiat pentru fiecare din limbajele ce o compun o astfel de clasă.

Limbaje de nivel scăzut - această categorie de limbaje are un reprezentant autoritar şi anume: limbajul de asamblare.

Diferenţierile care se pot face pentru limbajele de nivel scăzut sunt următoarele: a) după tipul de maşină;b) după mediul de programare oferit.a) Limbajul de asamblare este strâns 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). Aşadar există tot atâtea limbaje de asamblare - câte unul pentru fiecare procesor în parte.

Regulile respectate de versiunile limbajului de asamblare sunt, evident, uşor de intuit: - o nouă versiune o include complet pe cea anterioară;- versiunea nouă oferă funcţii suplimentare şi le realizează pe cele vechi mai rapid.b) Aspectul unui limbaj (nu conţinutul său) poate fi schimbat radical de mediul de programare

oferit. Pentru limbajul de asamblare există mai multe implementări disponibile, începând cu pachete ce

operează în mod linie (editare, compilare, link-editare realizate cu câte un utilitar specializat) şi culminând cu medii integrate în care toate operaţiile se pot declanşa de la un acelaşi pupitru de comandă (utilitar interactiv pe bază de meniuri).

Nu sunt de luat în considerare decât aceste medii integrate (denumite generic medii Turbo), dintre care se detaşează Turbo Asamblorul firmei Borland TASM. El se livrează la un preţ ridicol de scăzut faţă de totalitatea serviciilor oferite (interactivitate, viteză mare de lucru, implementare evoluată a limbajului - directive de control al compilării, macroinstrucţiuni deja definite sau definibile de utilizator etc).

Cu toate aceste calităţi produsul este foarte rar întrebuinţat datorită dezavantajelor constructive ale unui limbaj de nivel scăzut cum este cel pe care îl implementează. Dacă ţinem seama şi de faptul că

Page 8: Subiecte Prog Calc

limbajele de nivel înalt performante (PASCAL,C) acceptă instrucţiuni în limbaj de asamblare, ne putem explica de ce sunt foarte rar întâlnite situaţiile în care se apelează la TASM.

U3.3. Limbaje de nivel înalt neorientate3.3.1. BasicCreat în anul 1964 la Darmooth College (S.U.A) limbajul BASIC a cunoscut succesul maxim în

anii ‘80.Denumirea sa provine de la iniţialele cuvintelor Beginner’s Allpurpose Symbolic Instruction

Code (Cod de instrucţiuni simbolice, de uz general, destinat începătorilor) şi spune deja multe despre acest limbaj.

Iată caracteristicile sale fundamentale:- simplu de învăţat; instrucţiunile sale sunt cuvinte din limba engleză sau prescurtări ale acestora;- neorientat pe un anumit tip de problemă; permite construirea de aplicaţii, teoretic în orice

domeniu;- este un limbaj nestructurat, ceea ce îi permite să fie uşor învăţat; din acest motiv aplicaţiile

rezultate se citesc şi modifică foarte greu, fiind favorizată proiectarea anarhică, „de moment”.Speculând faptul că limbajul a cunoscut o largă răspândire, au fost implementate noi versiuni de

BASIC, diferite de cel standard, care introduc elemente de structurare în limbaj, încercând (nu cu mare succes) să menţină limbajul în atenţia programatorilor.

Aşadar mediile de programare, cu diversele implementări de BASIC sunt următoarele:- 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 senzaţia de programare.

- Ouick Basic Versiune structurată de Basic produsă de Microsoft. Datorită faptului că este compilator, îmbunătăţeşte cu mult performanţele aplicaţiilor. 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 legături 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 esenţial al acestei implementări îl reprezintă faptul că aplicaţiile create sunt aplicaţii ce rulează sub Windows, deci suportă disciplinarea funcţionării multi-tasking. Între această versiune şi GW-BASIC singura asemănare o reprezintă numele.

În concluzie, constatăm că BASIC-ul a fost popular datorită simplităţii sale şi din cauza faptului că în perioada succesului său cerinţele pentru o aplicaţie erau foarte reduse. Pe măsură ce aceste standarde au crescut, BASIC-ul s-a dovedit depăşit şi ineficient, iar atunci când a încercat să menţină ritmul a încetat să mai fie BASIC ...

3.3.2. FortranLimbajul Fortran este în mod cert decanul de vârstă al limbajelor de largă folosinţă. A apărut în

anul 1956 şi îşi datorează numele prescurtării cuvintelor: FORmula TRANslation (Traducere de formule).După cum arată numele său, iniţial reprezenta un limbaj orientat pe calcule ştiinţifice având

definite concepte precum: matrice, funcţii trigonometrice, numere reale în dublă precizie. Versiunile ulterioare de Fortran (Fortran IV şi Fortran 77) care au cunoscut o mare popularitate au extins posibilităţile limbajului (manipulări de fişiere, conversii de date, programare pseudo-structurată) transformându-l într-un limbaj eficient, de uz general.

În prezent există pentru IBM-PC două implementări mai importante ale limbajului:- Microsoft Fortran Compilator ce defineşte un limbaj cu performanţe acceptabile, chiar foarte

bune în cazul calculelor ştiinţifice. Dezavantaj principal: metoda arhaică de punere la punct a programelor (utilitare în mod linie) şi absenţa uneltelor de depanare şi control al performanţelor.;

Page 9: Subiecte Prog Calc

- Fortran for Windows. Versiune complet structurată de Fortran. Avantajul principal (şi foarte important) este că se pot crea rapid aplicaţii acceptabile ce rulează sub Windows, în comparaţie cu PASCAL for Windows, unde efortul de programare este mult mai mare.

Limbajul Fortran a constituit mulţi ani la rând principala unealtă a programatorilor, de unde şi o oarecare nostalgie a acestora. Deşi nu poate fi considerat “depăşit” din punct de vedere conceptual (este un limbaj algoritmic - structurat) este neindicată folosirea lui datorită absenţei unor medii de programare performante şi pentru că tendinţa actuală îi este defavorabilă.

Singura sa utilizare justificată o poate constitui versiunea Windows a compilatorului.

3.3.3. PascalConceptualizat în anul 1970 de către Niklaus Wirth, limbajul PASCAL poartă numele

matematicianului şi filozofului Blaise Pascal, în semn de recunoaştere a meritelor sale în teoretizarea maşinilor de calcul moderne.

Creat după acumularea de cunoştinţe temeinice în ştiinţa limbajelor formale, din confruntarea cu problemele concrete ale programării, limbajul PASCAL a constituit la vremea respectivă un limbaj modern, menţinându-se ca atare şi în prezent, datorită faptului că posedă o solidă bază conceptuală.

Limbajul PASCAL a introdus în versiunea sa iniţială noţiunea de programare structurată şi ulterior noţiunile de date (structuri) dinamice, date (structuri) definite de utilizator.

În prezent standardul implementărilor PASCAL cuprinde următoarele elemente:- programare structurată de tip algoritmic, deci: - blocuri de instrucţiuni executate liniar;- blocuri de decizie ce permit executarea alternativă a unui set sau altul de instrucţiuni in funcţie

de rezultatul unui test;- blocuri de ciclare pentru executarea repetată (cu număr de paşi cunoscut anterior sau până la

îndeplinirea unei condiţii) a unui set de instrucţiuni;- posibilitatea definirii unei instrucţiuni compuse (formată dintr-un set de instrucţiuni simple) ce

este tratată ca o singură instrucţiune elementară în analiza sintactică;- definirea de noi funcţii sau proceduri; - tipuri de date definibile de către utilizator (structuri de date);- structuri de date dinamice (alocate de program în memorie în momentul execuţiei, nu în etapa

de compilare);- adresări indirecte ale datelor (variabile pointer ce conţin nu valoarea unei variabile, ci adresa de

memorie la care se află aceasta);- recursivitate (posibilitatea unei proceduri de a se apela pe ea însăşi, asigurând astfel transcrierea

extrem de simplă a algoritmilor ce presupun paşi de recursivitate- şiruri convergente, căutări in arbori etc;- rutine complete de intrare/ieşire (deschidere, citire, scriere, modificare, adăugare în fişiere ce

pot conţine text, sau date de orice tip);- funcţii de conversie a datelor din ASCII în format intern şi invers;- set complet de funcţii matematice (radical, sin, cos, exponenţială, logaritm etc);- funcţii elementare de grafică 2D;- posibilitatea inserării direct în sursă a instrucţiunilor în limbaj de asamblare;- posibilitatea definirii de overlay-uri pentru program.Deci, un limbaj puternic, care în ciuda complexităţii sale nu este dificil de învăţat şi stăpânit

datorită clarităţii ireproşabile care îl fundamentează conceptual.Versiunile standard ale implementărilor 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. Combinaţia PASCAL + Turbo a reprezentat un succes imens în rândul programatorilor având ca singur rival cealaltă combinaţie: C + Turbo.

Versiunile recente ale PASCAL-ului constituie o mică revoluţie în programare.

Page 10: Subiecte Prog Calc

Turbo Pascal 6.0 introduce (altfel decât versiunea 5.5) noţiunea de „obiect”. Pentru Pascal 6.0, obiect înseamnă o colecţie 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 moştenirea comportamentului „părintelui” şi eventual adăugarea unor noi comportamente.

Concret, gândiţi-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 conţine rubrici, butoane de tip radio, butoane de acţiune etc, taste obiecte descendente din view. Fiecare obiect se comportă aşa cum a fost definit (implicit ca “părintele” său, ori într-un mod propriu dacă a fost redefinit sau extins comportamentul “părintelui”. Obiectele funcţionează cooperant pentru definirea unui meniu, a liniei de stare a unei căsuţe de dialog etc.

Având la îndemână acest instrumentar se pot crea aplicaţii ireproşabile din punct de vedere al nivelului de prezentare şi al interactivităţii cu utilizatorul.

Acest modul orientat pe obiect implementat în Turbo Pascal 6.0 poartă numele de Turbo Vision. Cu Vision se poate crea o aplicaţie ce se prezintă ca în figura următoare:

Aplicaţia e complet concepută pe bază de meniuri, posedă suport de mouse, help senzitiv la context, linie de stare senzitivă la context, scurtături pentru operaţiile 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 aplicaţiei fără nici un fel de prelucrare efectivă. Operaţiile concrete vor fi realizate în PASCAL-standard, Turbo Vision oferind funcţii numai pentru definirea aspectului pe ecran al aplicaţiei.

Modulul Turbo Vision nu este dificil de înţeles la nivel teoretic, dar presupune ceva studiu din partea programatorului, neputând fi utilizat din mers, fără parcurgerea documentaţiei.

Dezavantajul principal pentru Turbo Vision îl constituie faptul că nu pot fi create aplicaţii grafice, ci numai aplicaţii ce funcţionează în mod caracter.

3.3.4. Pascal for WindowsAceastă implementare de PASCAL, asigură crearea de programe ce vor rula ca aplicaţii

Windows.Programarea este mai laborioasă (faţă de Fortran for Windows), deoarece poate fi gestionată

totalitatea serviciilor Windows (nu numai o gamă restrânsă a acestora).

3.3.5. Limbajul CAcest limbaj de programare, cu cel mai scurt nume posibil, a fost creat în 1971 de către Dennis

Ritchie şi Brian Kernigham pentru dezvoltarea sistemului de operare UNIX. Istoria sa merită menţionată deoarece este relevantă pentru caracterizarea limbajului.

Aşadar se punea problema conceperii unui sistem de operare universal, care să poată funcţiona, teoretic, pe orice tip de maşină -sistemul UNIX. Pentru aceasta era nevoie de un limbaj care să exploateze toate posibilităţile unei maşini, dar care nu putea fi limbajul de asamblare, deoarece el este specific maşinii - o nouă implementare presupunea rescrierea integrală a sistemului. Din această dilemă s-a putut ieşi construind un limbaj de nivel înalt (iniţial limbajul B, ulterior C) care introducea şi concepte de nivel scăzut, hardware (registru, adresă, locaţie de memorie absolută etc).

Mai bine de 90% din sursele primului sistem de operare UNIX (implementat pe o maşină PDP-7) au fost scrise utilizând limbajul C, iar pentru restul modulelor s-a apelat la limbajul de asamblare. sistemul astfel obţinut a rost distribuit cu programele În format sursă şi cu descrierea noului limbaj folosit, cu intenţia vădită 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 incitaţi să dezvolte acest sistem, extinzându-l cu noi module şi să îl implanteze pe alte maşini prin rescrierea acelei minime părţi 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;

Page 11: Subiecte Prog Calc

- posedă concepte de nivel scăzut, ceea ce permite exploatarea portabilă a caracteristicilor intime unei maşini.

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 locaţie din memoria internă, mărind (uneori considerabil) viteza de execuţie;

- rutine de conversie a datelor foarte evoluate (conversii implicite, intrări, ieşiri, conversii în memorie);

- tipuri de date definibile de către utilizator;- gestionarea elaborată a datelor de tip dinamic;- definirea de noi funcţii;- adresări indirecte ale variabilelor (pointer-i);- recursivitate;- set complet de funcţii matematice etc;- funcţii pentru realizarea de grafică elementară 2D;- funcţii de apel servicii DOS;- posibilitatea definirii de overlay-uri pentru un program;- şi nu în ultimul rând: concizie deosebită a limbajului (set de operatori şi instrucţiuni foarte

concise).Aşadar un limbaj care suplimentează PASCAL-ul şi poate pretinde pe drept cuvânt supremaţia în

rândul limbajelor structurate de uz general. Pentru versiunile standard ale implementărilor limbajului C există medii de programare de tip

«turbo» ce aparţin după cum ne-am obişnuit, firmelor: Microsoft -produsul Ouick C - şi firmei Borland -produsele Turbo C.

U4.1. Scopul şi obiectivele unităţiiÎn această temă vei învăţa următoarele 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 dateDatorită implicării tot mai accentuate a calculatoarelor în multe domenii de activitate, sfera

problemelor rezolvate cu ajutorul calculatorului s-a extins foarte mult. A apărut 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 întâlnită în literatura de specialitate) sunt sisteme informatice (soft) specializate în stocarea şi prelucrarea unui volum mare de date, volumul de prelucrări implicat fiind relativ mic (spre deosebire de programele orientate spre rezolvarea problemelor matematice, de exemplu, care necesită un volum mare de prelucrări 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 operaţiilor ce se vor aplica asupra datelor din bazele de date.

Baza de date reprezintă structura logică în care este memorată o cantitate de informaţii pe un suport fizic de memorare pentru a putea avea acces cât mai rapid la toate informaţiile depozitate într-o bază de date, aceasta are o anumită organizare, asemănătoare unui tabel, folosindu-se următoarea terminologie:

- câmp - coloană în tabel- înregistrare - linie în tabel- structura bazei de date - antetul tabeluluiPentru a determina în mod univoc structura bazei de date (antetul tabelului) trebuie specificate

câmpurile care compun tabelul , împreună cu caracteristicile acestora. Fiecărui câmp îi sunt caracteristice:- numele - identifică câmpul printre celelalte elemente

Page 12: Subiecte Prog Calc

- tipul - stabileşte prelucrările ce se pot aplica datelor memorate în câmpul respectiv- lungimea - numărul de octeţi ocupaţi de câmp- zecimale - pentru câmpurile numerice stabileşte poziţia punctului zecimal în cadrul câmpului

respectivUn S.G.B.D. trebuie să asigure următoarele funcţiuni elementare relativ la bazele de date:- definirea, crearea bazei de date;- introducerea datelor în bazele de date (adăugare);- modificarea unor date deja existente în bazele de date;- ştergerea datelor din bazele de date;- consultarea bazelor de date (interogarea, extragerea informaţiilor). Alături de acestea, S.G.B.D-

urile mai pot fumiza şi alte servicii, cum ar fi: - suport pentru limbaj de programare;- interfaţă cât 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 fişierelor, liste şi tabele etc;- help pentru „ajutarea” utilizatorului în lucrul cu bazele de date etc.Necesităţile actuale în practica utilizării calculatoarelor se îndreaptă cu precădere spre gestionarea

bazelor de date de mari dimensiuni. O explicaţie posibilă a acestei orientări e dată de faptul că o bază de date reprezintă informaţie, iar cel care deţine informaţii complete şi rapide într-o anumită problemă este indiscutabil cu un pas înaintea celorlalţi. Concurenţa din. domeniul economic poate fi numită pe bună dreptate o bătălie informaţională.

Desigur, nu este nevoie să detaliem pentru cititor importanţa 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 necesităţi de utilizare a unui S.G.B.D.

Pentru a putea studia diversele opţiuni posibile vom prezenta mai întâi termenii care definesc un S.G.B.D., deci cadrul teoretic ce va constitui baza consideraţiilor ulterioare.

U4.3. Caracteristici definitorii S.G.B.D.-uri clasiceUn sistem de gestionare a bazelor de date de tip clasic operează cu următorii termeni

fundamentali:- câmp = o locaţie în care se poate memora o informaţie bine determinată;- înregistrare = mai multe câmpuri alcătuiesc împreună o înregistrare;- baza de date = colecţie de înregistrări.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 defineşte mai întâi structura ei (câmpurile ce alcătuiesc o

înregistrare). Această structură reprezintă “sertarele” goale în care vor fi depuse date. Se operează cu două tipuri fundamentale de câmpuri:

- câmpuri numerice (informaţie numerică); - câmpuri alfanumerice (orice caracter tipăribil).După operaţia iniţială de definire a bazei de date urmează exploatarea sa efectivă. Se pot

diferenţia două tipuri importante de operaţii:- întreţinere bază de date, ce presupune următoarele: - introducere înregistrare în baza de date (inserare); - regăsire a unei înregistrări deja introduse;- modificare a unei înregistrări existente; - ştergere completă din baza de date a unei înregistrări; - adăugare înregistrare la sfârşitul bazei de date; - prelucrare elementară a bazei de date, ce presupune în principal sortarea (indexarea)

înregistrărilor dintr-o bază de date;- generarea de rapoarte pe baza datelor disponibile într-o bază de date.

Page 13: Subiecte Prog Calc

Datorită importanţei deosebite a operaţiei 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ă esenţială este metode calitativă de organizare a lor.

Operaţia elementară de sortare a unei baze de date presupune ordonarea înregistrărilor acesteia, după o ordine prestabilită (de ex.: ordinea alfabetică pentru valorile alfanumerice sau ordinea crescătoare/descrescătoare pentru valorile numerice).

Ordonarea bazei de date se poate face: - fizic; înregistrările din baza de date schimbă între ele poziţia ocupată astfel încât să fie dispuse

în ordinea corectă.- logic înregistrările 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 operaţie mult mai rapidă pentru bazele de date mari, dar presupune o

scurtă întârziere în regăsirea informaţiilor faţă de metoda sortării lor fizice.Pentru un S.G.B.D. de tip clasic toate cerinţele descrise până în acest punct sunt minimale şi cu

greu se mai poate opta pentru un mediu restrâns la aceste operaţii.Facilităţile suplimentare puse la dispoziţie sunt în general următoarele: - manipulări grupe de înregistrări (copieri dintr-o bază de date într-o alta, ştergeri etc);- import/export date; bazele de date gestionate intern de către S.G.B.D. pot fi puse la dispoziţie şi

în formate ce sunt recunoscute de alte programe.Import = încărcare 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.- posibilităţi avansate de regăsire a înregistrărilor; În mod clasic, regăsirea unei înregistrări se face după numărul ei în baza de date sau după

valoarea unui câmp. 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ţă întâlnim aceleaşi criterii de evaluare ca în cazul oricărei alte aplicaţii:- interactibilitatea cu utilizatorul;- viteză de lucru; - protecţii 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 aplicaţiilor obţinute);- calitatea conceptuală a serviciilor şi funcţiilor oferite de limbaj;- protecţia la erori a programelor obţinute, siguranţa în funcţionare;- uneltele suplimentare de lucru (depanator, profiler).Optarea pentru un anumit produs trebuie făcută după analizarea cu atenţie a acestor caracteristici.

U4.4. Tipuri de SGBD: DBASE, PARADOX, FOXPentru a lansa în execuţie produsul FoxPro se lansează FOX.EXE. După executarea acestei

comenzi va apărea pe ecran o fereastră numită COMMAND şi un meniu bară alcătuit din: SYSTEM, FILE, EDIT, DATABASE, … etc.

Activarea meniului se face prin apăsarea tastei F10.Funcţiile care se pot aplica unei baze de date se împart în două mari categorii, care asigură

funcţionarea tuturor funcţiunilor unui SGBD:

Page 14: Subiecte Prog Calc

- Funcţia de descriere a datelor: - S.G.B.D. trebuie să permită descrierea structurii datelor, a legăturilor dintre entităţi, a condiţiilor de validare şi acces. Pentru aceasta S.G.B.D.-urile dispun de un limbaj specializat: LIMBAJUL DE DESCRIERE A BAZEI DE DATE (LDD).

- Funcţia de manipulare: - permite crearea, actualizarea datelor, căutarea rapidă, sortarea. Pentru acestea se foloseşte 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 folosiţi pentru desemnarea variabilelor, fişierelor, programelor, numelor de

câmp. În funcţie de utilizare, aceştia pot avea maxim 10 caractere, dintre care prima este literă.Cuvinte cheie: desemnează comenzile, funcţiile standard ale limbajului neputând 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 - mulţime ordonată de caractere ASCII, fiind specificate prin litera C.- tipul dată calendaristică - este specificată prin litera D.- tipul logic - mulţimea formată din două valori T sau F (litera L- logical).- tipul memo - folosit numai în baze de date şi este asemănător cu tipul şir, dar are o lungime

variabilă (litera M)Constante - sunt date ale căror 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: +, -, /, *, **- relaţionali: <, >, <=, >=- logici: .not., .or., .and.Expresiile: numerice; relaţionale; logice; şir; dată calendaristică.Limbajul de manipulare al bazei de date (LMD) este alcătuit din comenzi şi clase de comenzi

(funcţii) realizate de SGBD.

U5.1. Scopul şi obiectivele unităţiiÎn această temă vei învăţa următoarele 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. ProgramareRezolvarea problemelor, în general, şi a problemelor economice în particular, cu ajutorul

programelor pe calculator necesită cunoaşterea şi însuşirea noţiunilor fundamentale referitoare la programare. Problemele economice prezintă o serie de particularităţi legate de caracterul proceselor şi fenomenelor economice din care fac parte: existenţa unor modele (inclusiv bazate pe relaţii matematice), volumul mare de date stocate în baze de date şi în depozite de date, operaţii relativ puţine şi de complexitate redusă (în comparaţie, de exemplu, cu calculele tehnico-inginereşti), prelucrări şi reprezentări statistice etc. Toate aceste particularităţi sunt luate în considerare la rezolvarea problemelor economice, în special a celor de gestiune. Informatica de gestiune reprezintă în esenţă informatica aplicată în domeniul prelucrării automate a datelor asupra evidenţei şi controlului activităţilor şi bunurilor

Page 15: Subiecte Prog Calc

unei organizaţii economice.Gestiunea unei organizaţii economice constă în totalitatea activităţilor desfăşurate pentru evidenţa

resurselor acesteia (umane, materiale, financiare şi informaţionale), încredinţate, spre administrare, factorilor de decizie, pentru realizarea scopurilor specifice domeniului său de activitate.

În prezent, dar mai cu seamă în viitor, nu există şi nu va exista nici un loc de muncă fără calculator conectat în reţea, în special în domeniile contabilitate şi financiar-bancar. Viitorul economist trebuie să cunoască principiile şi elementele de bază ale programării şi să câştige deprinderi adecvate, cel puţin din următoarele 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 perfecţionarea aplicaţiilor informatice economice ce pot fi realizate nemijlocit de către economist;

• economistul poartă un dialog permanent cu specialistul informatician în ceea ce priveşte perfecţionarea sistemelor şi instrumentelor informatice complexe dedicate rezolvării problemelor economice.

Este inutil să se insiste mai mult, la capitolul motivaţie, asupra importanţei programării şi bazelor de date pentru viitorul economist cu specializarea contabilitate şi informatică de gestiune, în care sintagma informatică de gestiune reprezintă a doua jumătate a întregului. Acest fapt îi conferă viitorului economist dreptul de a profesa şi în categoria profesioniştilor în informatică, dar, în acelaşi timp, generează şi obligaţia de a-şi însuşi în mod corespunzător fundamentele programării şi ale bazelor de date.

U5.3. Noţiuni de bază specifice procesului de prelucrare automată a datelorOrice sistem de calcul (adică acel sistem tehnic care asigură execuţia 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 condiţiile cerute de societatea informaţională – societatea cunoaşterii ş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 rândul ei, software-ul de bază (sistemul de operare sau sistemul de programe de bază) şi software-ul de aplicaţie (sau sistemul de programe aplicative). În continuare sunt prezentate noţiunile de bază specifice procesului de prelucrare automată a datelor.

Sistem informatic conţine unul sau mai multe sisteme de calcul (hard şi soft), cărora li se adaugă restul bazei tehnico-materiale, baza ştiinţifico-metodologică, baza informaţională, resursele umane şi cadrul organizatoric. Baza tehnico-materială conţine echipamentele de culegere, verificare şi transmitere date, echipamentele de teleprelucrare, suporturile de stocare a datelor şi calculatorul propriu-zis.

Baza ştiinţifico-metodologică cuprinde modelele matematice ale proceselor şi fenomenelor economice şi metodologii de realizare a sistemelor informatice. Baza informaţională se referă la date, fluxuri şi circuite informaţionale, cataloage şi dicţionare de date etc.

Un sistem informatic are funcţia de prelucrare automată a datelor pentru obţinerea informaţiilor necesare procesului de conducere sau de informare.

Din cele arătate mai sus, rezultă că procesul de prelucrare automată a datelor presupune existenţa simultană a următoarelor 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 ieşire sau rezultatele prelucrărilor. Î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 reţinut că datele de intrare sunt introduse printr-o operaţie de citire - read, iar datele ce reprezintă rezultate sunt obţinute printr-o operaţie de scriere –write sau de tipărire- print a rezultatelor.

Sistemul de operare este realizat cu preponderenţă în limbajul de programare C, este livrat cu

Page 16: Subiecte Prog Calc

licenţă, de regulă, de compania producătoare a părţii 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 către 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 aplicaţia informatică şi sunt reprezentate într-o structură accesibilă calculatorului. Datele sunt organizate în colecţii de date în funcţie de condiţiile specifice impuse de sistemul informaţional existent şi de dorinţele utilizatorilor finali din procesul de decizie.

Procesul de prelucrare automată a datelor are loc într-o succesiune controlată de operator, adică, în accepţiunea clasică, de acel utilizator final specializat în operarea pe sistemul de calcul. Etapele procesului de prelucrare a datelor pe calculator sunt materializate în următoarele operaţii:

pregătirea datelor iniţiale, de regulă manual, în vederea introducerii lor în procesul de prelucrare automată (citire), ce presupune verificarea, sortarea şi codificarea acestor date în funcţie de documentele primare existente;

verificarea datelor presupune confirmarea concordanţei între valorile prezente în documentele primare şi valorile care trebuie să existe în conformitate cu aplicaţia 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 precizări ale utilizatorului;

codificarea datelor înseamnă operaţia de atribuire de semne numerice, alfabetice sau alfanumerice unor date cu scopul de a optimiza numărul de semne cu care se scriu şi se prelucrează, de exemplu, elementele specifice sistemului informaţional financiar-contabil;

noţiunea de document primar (de evidenţă primară) este cea definită în contabilitate, ca primă etapă a funcţiei contabile, adică acel document în care se consemnează pentru prima dată o operaţie economico-financiară (facturi, chitanţe, cecuri etc). Fiecare eveniment ce prezintă un efect economic se înscrie într-un document primar în momentul şi în locaţia în care s-a produs;

introducerea datelor iniţiale în calculator, adică în memoria internă sau memoria externă a sistemului de calcul; introducerea datelor iniţiale poate fi făcută direct de la tastatură (în regim conversaţional) sau de pe un suport tehnic accesibil calculatorului;

prelucrarea propriu-zisă a datelor, ceea ce înseamnă execuţia automată de către calculator a tuturor operaţiilor prestabilite prin program (validări de date, sortări, interclasări, comparări şi testări);

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 obţine un şir (vector) de date ce conţine toate elementele unor vectori iniţiali ordonaţi;

compararea datelor este tipul de prelucrare prin care se verifică existenţa unor relaţii de ordine între două date;

relaţia de ordine a fost definită la cursul de matematică şi este o relaţie binară pe o mulţime de date ce stabileşte ordinea de parcurgere a elementelor mulţimii;

testarea datelor este tipul de prelucrare prin care se verifică un ansamblu de date ce sunt pregătite pentru buna funcţionare a unui program;

prezentarea rezultatelor prelucrării, adică afişarea pe ecranul monitorului sau imprimarea pe hârtie; când rezultatele sunt folosite în prelucrări ulterioare, ele sunt stocate pe suporţi magnetici.

Etapele şi operaţiile prezentate mai sus se încadrează în ”triada de aur” specifică oricărui sistem de calcul: stocare – prelucrare– prezentare date.

U8.1. Scopul şi obiectivele unităţiiÎn această temă vei învăţa următoarele concepte fundamentale: Visual Basic (VB); mediu integrat de dezvoltare, IDE (Integrated Development Environment);

Page 17: Subiecte Prog Calc

OLE (Object Linking and Embedding); COM (Component Object Model); ActiveX – tehnologie soft Microsoft ce reuneşte componente OLE şi COM; DDE (Dynamic Data Exchange); ODBC (Open DataBase Connectivity); Crystal Report sau Data Report; Microsoft Jet Database Engine.

U8.2. Caractersticile generale ale mediului integrat de dezvoltare Visual BasicVisual Basic (VB) reprezintă un mediu integrat de dezvoltare, IDE (Integrated Development

Environment), în mod interactiv, pentru aplicaţii 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.

Când acest mediu de programare asistă utilizatorul (programatorul) în toate etapele de realizare a unui program, el se numeşte mediu de dezvoltare. Când toate componentele de asistare a utilizatorului (programatorului) sunt integrate în cadrul aceluiaşi mediu de dezvoltare, el se numeşte mediu integrat de dezvoltare.

Termenul visual din denumirea IDE Visual Basic semnifică faptul că aplicaţiile informatice dezvoltate în VB dispun de interfeţe grafice ce sunt proiectate vizual de către utilizator. Pentru aceasta, utilizatorul are la dispoziţie un set de elemente vizuale standard ce pot fi folosite la proiectarea unei interfeţe grafice, denumite elemente de control, sau, pe scurt, controale (Controls). Aceste controale sunt dispuse în ferestrele aplicaţiei, ferestre denumite formulare (Forms), concomitent cu stabilirea proprietăţilor acestora (în fereastra Properties) la dorinţa utilizatorului şi în conformitate cu necesităţile aplicaţiei

Termenul Basic din compunerea IDE Visual Basic arată tipul limbajului de programare utilizat pentru realizarea programelor (secvenţelor de cod) corespunzătoare evenimentelor generate de acţionarea controalelor dispuse în formularul specific aplicaţiei. Limbajul de programare Basic (acronim provenit din denumirea în limba engleză – Beginner’s All-purpose Symbolic Instruction Code), definit la începutul anilor ’60 ai secolului XX, a cunoscut numeroase versiuni şi dezvoltări 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 programării structurate (programării bazate pe obiecte), programării dirijate de evenimente, orientării spre prelucrarea bazelor de date (manipulare şi interogare).

Aplicaţiile informatice realizate cu VB pot interacţiona cu alte aplicaţii Windows prin intermediul unor interfeţe specializate: OLE (Object Linking and Embedding) – legarea şi încapsularea obiectelor, ce asigură afişarea datelor din alte aplicaţii şi modificarea acestor date din interiorul aplicaţiei care le-a generat; COM (Component Object Model) – model de legare şi comunicare între obiecte distribuite Windows; ActiveX – tehnologie soft Microsoft ce reuneşte componente OLE şi COM; DDE (Dynamic Data Exchange) – schimb dinamic de date (conversaţie) între aplicaţii Windows; ODBC (Open DataBase Connectivity) – conectivitatea bazelor de date deschise, adică posibilitatea conectării aplicaţiilor client la multiple servere de fişiere sau de baze de date; Crystal Report sau Data Report – proiectarea vizuală a rapoartelor unei aplicaţii VB; Microsoft Jet Database Engine – motorul sistemului de gestiune a bazelor de date Microsoft Access ce asigură acelaşi limbaj de manipulare a datelor între VB şi Access.

Visual Basic face parte din clasa de medii de dezvoltare rapidă a aplicaţiilor, RAD (Rapid Application Development), alături de Microsoft Visual C++, Power Builder, Borland Delphi ş.a. ce prezintă următoarele caracteristici: realizare rapidă a aplicaţiilor informatice, necesităţi acceptabile de resurse informatice la execuţie, separarea proiectării prelucrărilor de proiectarea interfeţei, integrează proiectarea interfeţei, scrierea codului, testarea şi depanarea.

Page 18: Subiecte Prog Calc

Î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 BasicLansarea în execuţie 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 apariţia ferestrei de creare a unui nou proiect - New Project, se apasă butonul Open.După aceste acţiuni, 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 proprietăţilor 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 următoarea succesiune de comenzi: bara cu meniuri – View – poziţionare 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 afişează poziţia (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 acţiunile efectuate în mod frecvent. Pentru deschiderea unui meniu contextual se poziţionează vârful 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 stânga mouse-ului.

Cutia cu instrumente, Toolbox asigură instrumentele predefinite folosite în timpul proiectării formularului pentru a introduce controale pe acesta. Utilizatorul poate crea propriile controale, imagini sau grafică prin selecţia opţiunii AddTab din meniul contextual.

Fereastra de proiectare a formularului, Form Design este fereastra pentru realizarea interfeţei dintre utilizator şi secvenţele de program.

Fereastra de editare a codului, Code Editor este folosită ca editor de texte pentru a introduce codul aplicaţiei informatice. Fiecare formular sau modul de cod din cadrul aplicaţiei informatice dispune de propria fereastră de editare a codului.

Fereastra Project Explorer serveşte numai la proiectarea aplicaţiei pentru afişarea colecţiei de fişiere ce conţin formularele şi modulele din cadrul proiectului aflat în lucru (curent). Unele fişiere sunt încărcate în mod automat de către sistem, iar alte fişiere sunt realizate de către utilizator (programator). Fişierele care se găsesc în fereastră (proiect) se pot grupa pe categorii cu ajutorul butonului ToggleFolders. Butonul View Object serveşte pentru vizualizarea obiectului selectat (current), iar butonul View Code este folosit pentru vizualizarea codului.

Fereastra de stabilire a proprietăţilor, Properties asigură afişarea valorilor proprietăţilor pentru formularul sau controlul selectat. O proprietate reprezintă o caracteristică a unui obiect (titlu, dimensiuni, poziţie, culoare etc.).

Fereastra Form Layout este folosită pentru vizualizarea aspectului formularului. Fereastra Immediate este o fereastră suplimentară utilizată în procesul de depanare a aplicaţiilor

informatice rulate din interiorul mediului IDE. Mediul VB 6.0 permite funcţionarea în trei moduri de lucru:

proiectare (design mode), rulare normală (run mode) şi execuţie cu întrerupere (break mode). Execuţia cu întrerupere (pas cu pas) se utilizează la depanarea aplicaţiei pe baza punctelor de

întrerupere (breakpoints) stabilite în prealabil.

Page 19: Subiecte Prog Calc

Fereastra Immediate permite introducerea de secvenţe de cod care se execută imediat sau afişarea valorilor unor expresii.

Fereastra Locals este destinată, la depanarea programelor VB, pentru afişarea 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 acţiunii (curente). Utilizarea ferestrei Watch este posibilă prin intermediul meniului contextual.

Utilitarul Object Browser realizează afişarea obiectelor disponibile în IDE ce pot fi utilizate de proiect.

Utilitarul serveşte, de asemenea, pentru a examina obiecte din VB şi din alte aplicaţii, pentru a constata ce metode şi proprietăţi sunt disponibile în cazul acestor obiecte şi pentru a prelua coduri de program în propria aplicaţie informatică.

Editorul de meniu (Menu Editor) permite proiectarea meniurilor asociate formularelor. Pentru afişarea ferestrei corespunzătoare se apasă butonul cu acelaşi nume de pe bara cu instrumente sau prin opţiunea Menu Editor din meniul Tools.

U9.1. Scopul şi obiectivele unităţii

În această temă vei învăţa următoarele concepte fundamentale: proiectarea aplicaţiilor în limbajul VB; crearea interfeţei; precizarea proprietăţilor; scrierea codului; elementele limbajului VB.

U9.2. Proiectarea aplicaţiilor în limbajul Visual Basic

Pentru a proiecta o aplicaţie informatică în limbajul Visual Basic, este necesară parcurgerea următoarelor trei etape:

1. Crearea interfeţei.2. Precizarea proprietăţilor.3. Scrierea codului.Crearea interfeţei se efectuează cu ajutorul formularelor (Forms). Acestea servesc pentru a

genera ferestre şi casete de dialog, în calitate de containere pentru elemente care se găsesc în partea ascunsă a aplicaţiei. Precizarea proprietăţilor se realizează prin intermediul ferestrei Properties, după selecţia prealabilă a obiectului. Scrierea codului se execută folosind fereastra de editare a codului, CodeEditor. Crearea aplicaţiilor în VB se face în modul de proiectare Design Mode, iar execuţia acestora se efectuează în modul de rulare normală, Run Mode. Înainte de prezentarea în detaliu a celor trei etape de proiectare a unei aplicaţii în VB, se tratează fişierul proiect.

Termenul de proiect în VB este similar cu aplicaţia informatică, astfel că el cuprinde o listă a fişierelor care intră în compunerea aplicaţiei. Fişierul proiect este un fişier 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 (fişierul grup de proiecte are extensia .VBG). În lista de fişiere a unui proiect pot fi incluse următoarele tipuri de fişiere:

fişier pentru formular (.FRM); fişier pentru formular care cuprinde controale cu proprietăţi care prezintă ca valori date binare

(.FRX); fişier pentru clasă de module (.CLS); fişier pentru modul standard (.BAS); fişier pentru control utilizator (.VBX – DDL-uri pentru controale pe 16 biţi şi .OCX - DDL-uri

Page 20: Subiecte Prog Calc

pentru controale pe 32 de biţi).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 defineşte 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 puţin un modul (modul de formular sau modul de cod).

Atunci când au fost definite toate componentele unui proiect, acesta poate fi transformat direct într-un fişier executabil (.EXE), astfel:

1) din meniul File se selectează opţiunea Make … EXE …;2) se introduce numele fişierului executabil în caseta File Name şi se apasă butonul OKCrearea, deschiderea şi salvarea unui proiect se efectuează prin intermediul comenzilor

disponibile în meniul File, astfel: New Project (1) serveşte pentru crearea unui proiect nou, adăugând un nou formular şi,

eventual, module, referinţe şi obiecte utilizator cuprinse în fişierul Auto32ld.VBP; Open Project (2) deschide un proiect existent, cu formularele, modulele şi obiectele utilizator

listate în fişierul 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, fişierul proiect al aplicaţiei existente împreună cu toate formularele, clasele de module şi modulele standard.

Aşa cum se deduce din descrierea opţiunilor de salvare a proiectului de mai sus, realizarea aplicaţiei este terminată atunci când se selectează comanda Save Project As…(5) din meniul File sau când se selectează butonul Save Project din linia de butoane. Mediul Visual Basic solicită salvarea, pe rând, a formularului şi apoi a proiectului prin introducerea numelui, dar şi a unităţii logice de memorie, precum şi a căii unde se doreşte a avea loc salvarea. În mod implicit, mediul Visual Basic asigură salvarea în locaţia C:\Program Files\Microsoft Visual Studio\VB98 (Save In). Pentru salvarea unui proiect, se recomandă particularizarea numelui proiectului şi folosirea unei unităţi logice de memorare şi a unei căi personalizate a utilizatorului pentru fiecare proiect, ca, de exemplu:

Homes(D:)\Student\Facultatea\Grupa\Nume_prenume_student\Numeproiect

Când 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 fişiere. Un fişier, cum este, de exemplu, un formular, poate aparţine mai multor proiecte. Crearea unor formulare, module şi controale noi se efectuează cu comenzile din meniul Project.

9.2.2. Crearea interfeţei aplicaţieiCrearea interfeţei unei aplicaţii se realizează cu ajutorul unui obiect denumit formular (Form). În

multe lucrări destinate VB, echivalentul românesc pentru Form este formă. În lucrarea de faţă s-a preferat denumirea de formular, deşi cea de formă este mai apropiată de termenul în limba engleză (crearea formularului înseamnă de fapt „turnarea” controalelor într-o formă adecvată interfeţei aplicaţiei).

Motivul preferinţei pentru „formular” este asigurarea lizibilităţii apariţiei denumirii acestui obiect în explicaţiile din cuprinsul lucrării, deşi, în dicţionarele limbii române, formularul, în general, este definit ca un imprimat cu mai multe spaţii albe ce se completează în vederea întocmirii unui tabel.

Formularul este un container de controale care facilitează dialogul dintre utilizator şi aplicaţie. Controalele nu pot funcţiona în afara formularului. Ele sunt obiecte care eliberează programul de sarcinile legate de intrările şi ieşirile generate de acţiunile utilizatorului, concentrând eforturile pe operaţiile de

Page 21: Subiecte Prog Calc

prelucrare a datelor. Avantajul controalelor din VB este că ele se aseamănă foarte mult cu controalele standard ce apar în sistemul de operare Windows (meniuri, butoane, casete). Controalele uşurează munca de programare în sensul că sunt eliminate instrucţiunile care să ghideze utilizatorul asupra acţiunilor pe care acesta trebuie să le întreprindă. La proiectarea interfeţei aplicaţiei (Design Mode), fereastra de proiectare a formularului serveşte pentru dispunerea controalelor necesare proiectului.

La rularea programului (Run Mode), formularul îndeplineşte 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 găsesc linii punctate cu rolul de a asigura orientarea utilizatorului, iar la marginea ferestrei sunt dispuse mânerele de redimensionare a formularului. Este bine ca, încă de la crearea formularului, să se opteze pentru o dimensiune potrivită a formularului în raport cu numărul de controale introduse şi de dimensiunile acestora; nu este estetic şi nici practic să rămână zone mari nefolosite pe suprafaţa formularului.

Un formular include descrierea grafică a acestuia, controalele sale, proprietăţile, constantele, variabilele şi procedurile externe, subrutinele de tratare a evenimentelor, procedurile generale. Fiecărui formular îi corespunde un modul de formular (Form Module).

Clasa de module (Class Module) este asemănătoare formularului, dar nu dispune de interfaţă utilizator vizibilă. Clasa de module poate fi folosită pentru crearea obiectelor utilizator, cuprinzând secvenţe de cod pentru metodeleşi proprietăţile obiectelor definite. Obiectele care aparţin aceleaşi clase nu sunt înzestrate cu evenimente proprii.

Mediul VB asigură interfaţă pentru un singur document (SDI) sau interfaţa 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ă părinte) ce poate fi redimensionată. Pentru a obţine comutarea între modurile de lucru SDI şi MDI se realizează următoarea succesiune de acţiuni:

se selectează Options (opţiuni) din meniul Tools; efectul este apariţia 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 opţiuni (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 menţiunea că această casetă cu instrumente (Toolbox) este configurabilă. Adăugarea sau scoaterea de controale din caseta cu instrumente (Toolbox) se obţine din meniul Project, opţiunea Components.

Modul de adăugare a unui control la cutia cu instrumente (Toolbox)

Introducerea unui control din cutia cu instrumente (Toolbox) pe suprafaţa formularului se obţine prin parcurgerea etapelor următoare:

se deplasează cursorul mouse-ului în cutia cu instrumente (Toolbox), pe pictograma care reprezintă controlul ce urmează a fi introdus în formular şi se acţionează butonul din stânga al mouse-lui;

se mută cursorul mouse-ului pe suprafaţa formularului, în poziţia în care va fi colţul stâng al controlului;

se efectuează succesiunea de operaţii de tipul Drug and Drop până se dimensionează după dorinţă controlul selectat;

se eliberează butonul stâng al mouse-ului. O altă modalitate de introducere a controlului selectat pe suprafaţa 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.

Page 22: Subiecte Prog Calc

Dispunerea controalelor pe suprafaţa formularului se face după o anumită logică legată de succesiunea operaţiilor importante de introducere date, prelucrare şi afişare rezultate. Fiecare control este caracterizat de un ansamblu de proprietăţi ce se referă la descrierea comportamentului sau aspectului unui control. Lăţimea sau înălţimea unui control se măsoară în twip (un twip reprezentând cel mai mic punct adresabil de pe ecran, cu dimensiunea de 1/1440 inch). Aşa cum se va arăta în paragraful următor, fereastra Properties permite modificarea între limite prestabilite a valorilor diferitelor proprietăţi ale controalelor.

Focalizarea reprezintă operaţiunea de punere în evidenţă a unui control la un moment dat; mai precis, acel control devine activ prin focalizare. Acel control activ se mai numeşte şi focar (focus). Acest lucru se pune în evidenţă printr-o linie punctată în jurul controlului sau printr-un titlu îngroşat. Mutarea focarului de la un control la altul se efectuează prin intermediul tastelor Tab sau Shift+Tab. Apăsarea tastei Enter va determina acţiunea 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 apăsarea succesivă a tastei Tab. În momentul activării formularului, este stabilit primul control care este focalizat. Proprietăţile comune tuturor controalelor din formular care stabilesc ordinea de parcurgere a controalelor sunt TabIndex (poziţia) ş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 evidenţiată printr-o literă subliniată. Prin acţiunea Alt+litera subliniată, se provoacă acţiunea controlului respectiv. Litera subliniată se introduce cu ajutorul proprietăţii Caption prin precedare de un ampersand (&).

Redimensionarea unui control introdus deja pe suprafaţa formularului se obţine astfel: 1) se selectează controlul de redimensionat prin click executat cu mouse-ul în interiorul suprafeţei

acestui control. Pe marginile controlului apar mânerele de redimensionare; 2) se fixează cursorul mouse-ului în dreptul unui mâner de redimensionare şi se mişcă ţinând

apăsat butonul stâng al mouse-ului, până se obţine dimensiunea dorită. Mânerele situate în colţurile suprafeţei controlului redimensionează controalele atât pe verticală, cât şi pe orizontală, iar mânerele dispunse pe laturi redimensionează controlul numai într-o singură direcţie;

3) se eliberează butonul stâng al mouse-ului. Mutarea unui control pe suprafaţa formularului se realizează cu mouse-ul prin tehnica Drug and

Drop. După finalizarea proiectării formularului, blocarea tuturor controalelor pe suprafaţa formularului

se obţine din meniul Format cu opţiunea 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 execuţiei aplicaţiei.

Pentru exemplificarea etapei de creare a interfeţei aplicaţiei, în continuare se propune să se introducă controalele pentru un formular care să constituie interfaţa pentru următoarea aplicaţie informatică:

Să se realizeze un program în limbajul Visual Basic care să calculeze valoarea totală a unei facturi de materiale. Deocamdată, factura conţine un singur material la o rulare a programului. Datele de intrare sunt: număr factură (Nrf), data facturii (Df), codul materialului (Codmat), denumirea materialului (Denmat), cantitate (Cant) şi preţul 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 rulării programului se vor afişa în casete text separate pentru valoare material fără TVA (Vmftva), valoare material cu TVA (Vmctva), valoare factură fără TVA (Vfftva) şi valoare factură cu TVA (Vfctva).

Se vor prevedea butoane de comandă (Command Button) pentru calculul şi afişarea unui material (fără TVA şi cu TVA) – butonul CALCULEAZA şi pentru calculul valorii facturii (fără TVA şi cu TVA) – butonul AFISEAZA.

Page 23: Subiecte Prog Calc

Pentru afişarea denumirilor pentru datele de intrare (Nrf, Df, Codmat, Denmat, Cant şi Pu), a datelor intermediare (Vmftva şi Vmctva) şi a datelor de ieşire sau rezultatelor (Vfftva şi Vfctva), se folosesc controale de tip etichetă (Label). Aceste controale de tip etichetă se găsesc în caseta cu intrumente (Toolbox) cu simbolul grafic. Controalele se introduc în formular prin tehnica Drug and Drop şi se dimensionează cu ajutorul mânerelor de dimensionare (Label1 … Label10). În mod similar se procedează cu casetele text (Text Box) cu simbolul grafic casete care servesc, în cazul formulat în enunţul aplicaţiei informatice (un singur material pe factură), pentru introducerea datelor de intrare şi afişarea datelor intermediare şi de ieşire (Text1…Text2), precum şi cu butoanele de comandă (Command Button) ce se vor folosi pentru declanşarea procedurilor de calcul (Command1), de afişare a valorii facturii (Command2) şi de ieşire din program (Command3).

9.2.3. Precizarea proprietăţilorPrecizarea proprietăţilor î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 (afişează numele şi tipul

obiectului selectat, adică obiectul curent) şi caseta Settings – setări (afişează alfabetic sau pe categorii lista proprietăţilor – stânga şi lista cu valorile sau setările proprietăţilor – dreapta).

Activarea ferestrei Properties se poate obţine prin succesiunea de comenzi meniu principal – View – Properties Window sau cu ajutorul tastei funcţionale F4.

Precizarea proprietăţilor se obţine prin parcurgerea următoarele etape:1) dacă nu este afişată, se activează fereastra Properties; se selectează obiectul căruia urmează să

i se precizeze proprietăţile; în acest moment, se afişează automat proprietăţile cu valorile implicite pentru obiectul selectat;

2) din lista alfabetică sau lista pe categorii a proprietăţilor se selectează denumirea proprietăţii la care se vor modifica valorile sau setările existente;

3) în coloana valorilor sau setărilor din dreapta se tastează sau se selectează valorile dorite pentru proprietate.

Pentru a asocia o pictogramă unui formular se atribuie o valoare proprietăţii icon pentru acel formular.

Pentru exemplificarea etapei de precizare a proprietăţilor,se continuă aplicaţia cu factura materiale din paragraful 9.2.2, precizându-se proprietăţile 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 obţine prin introducerea în fereastra Properties a numelui (Name) frmMat şi a etichetei (Caption) FACTURA MATERIALE.

Personalizarea numelui pentru controalele de tip etichetă (Label) se obţine 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 obţine prin

introducerea în fereastra Properties a:• txtNrf (Name) pentru Numar factura;• txtDf (Name) pentru Data factura;• txtCodmat (Name) pentru Cod material;

Page 24: Subiecte Prog Calc

• 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

obţine prin introducerea în fereastra Properties a:• cmdCalcul (Name), CALCULEAZA (Caption);• cmdAfisare (Name), AFISARE VALOARE FACTURA (Caption); • cmdExit (Name), IESIRE (Caption).Aspectul formularului obţinut prin precizarea proprietăţilor formularului şi controalelor incluse

este prezentat în figura de mai jos.

9.2.4. Scrierea coduluiDupă proiectarea formularului şi precizarea proprietăţilor, urmează scrierea codului care constă în

asocierea unor secvenţe de cod pentru toate controalele din formular, adică moduri de acţiune la diverse evenimente. Codul conţine constante, declaraţii de variabile şi instrucţiuni scrise în limbajul de programare Visual Basic, în conformitate cu algoritmul de calcul.

Legarea efectivă de control sau fereastră a secvenţelor de cod se obţine de către utilizator (programator) în mod conversaţional.

Pentru scrierea codului se deschide fereastra de editare a codului (Code Editor), prin dublu-click executat cu butonul stâng al mouse-ului poziţionat 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 reacţionează 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 numeşte procedură eveniment.

Procedura-eveniment asociată unui control are numele alcătuit din numele controlului (stabilit în proprietatea Name), o liniuţă de subliniere (_) şi numele evenimentului.

Atunci când 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ă următoarea succesiune de acţiuni: caseta Object → se specifică numele obiectului din formularul curent (adică cel care este focalizat) pentru care se scrie codul → caseta cu listă Procedure → selecţie nume eveniment asociat obiectului selectat (de exemplu, procedura Click implicită pentru controlul buton de comandă, Command Button) → şablon pentru procedura-eveniment → între declaraţiile Private Sub şi End Sub, se introduce de la tastatură codul în conformitate cu algoritmul de calcul.

Se poate opta pentru afişarea tuturor procedurilor în aceeaşi fereastră de cod sau pentru afişarea unei singure proceduri la un moment dat.

Pentru afişarea tuturor procedurilor în cadrul aceleiaşi fereastre de cod, se execută clic pe butonul de vizualizare a întregului modul, Full Module View, în colţul din stânga-jos al ferestrei de editare a codului, Code Editor sau se execută următoarea succesiune de acţiuni: meniul Tools → caseta de dialog Options → secţiunea Editor (1) → grupul de setări pentru fereastră, Window Settings (2), bifă în caseta de validare din stânga lui Default to Full Module View (3). În acelaşi grup de setări pentru fereastră, caseta de validare din stânga lui Procedure Separator (4) serveşte la adăugarea sau eliminarea unei linii de separaţie între proceduri.

Page 25: Subiecte Prog Calc

Pentru afişarea unei singure proceduri la un moment dat, se execută click pe butonul de vizualizare a procedurii, Procedure View, în colţul din stânga-jos al ferestrei de editare a codului, Code Editor sau se execută următoarea succesiune de acţiuni: meniul Tools → caseta de dialog Options →secţiunea Editor (1) → în grupul de setări pentru fereastră, Window Settings (2), se şterge bifa din caseta de validare din stânga lui Default to Full Module View (3).

Pentru exemplificarea etapei de scriere a codului unei aplicaţii informatice în Visual Basic, se continuă aplicaţia 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. Execuţia aplicaţiei informatice în Visual BasicDupă parcurgerea etapelor de creare a interfeţei (proiectarea formularului), de precizare a

proprietăţilor şi de scriere a codului, toate fişierele aplicaţiei sunt salvate şi se trece de la modul de proiectare (Design Mode) la modul de rulare (execuţie) a proiectului (Run Mode).

Pentru a lansa în execuţie aplicaţia, se alege opţiunea Start din meniul Run sau se acţionează tasta funcţională F5 sau se execută cu butonul stâng al mouse-ului click pe butonul Start de pe bara cu instrumente.

Terminarea rulării proiectului se efectuează cu opţiunea End din meniul Run sau prin apăsarea butonului de închidere (Close) a ferestrei aplicaţiei (colţul din dreapta sus al ferestrei) sau prin apăsarea butonului End de la bara cu instrumente.

După terminarea execuţiei aplicaţiei, mediul VB revine în modul de proiectare (Design Mode). Prin rularea proiectului, se obţine fişierul executabil. Aşa cum s-a arătat în paragraful 9.2.1,

fişierul executabil se poate obţine direct din meniul File cu opţiunea Make …EXE.Reluând aplicaţia cu factura de materiale din paragrafele 9.2.2, 9.2.3 şi 9.2.4, această aplicaţie 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 scriereO proprietate esenţială 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 căruia îi aparţine. Ca urmare, s-a adoptat convenţia conform căreia un nume trebuie să fie format dintr-un prefix din trei litere (dat de notaţia ungară) şi numele propriu-zis cu semnificaţie 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 conţine 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 compuşi din şiruri de caractere. Literalii pot fi de tipul literali şiruri de caractere şi sunt scrişi între ghilimele, şi de tipul literali numerici – zecimali (în baza 10), octali (în baza 8), hexazecimali (în baza 16).

Identificatorii pot fi predefiniţi (cuvinte rezervate şi cuvinte-cheie ce desemnează instrucţiuni, funcţii, operatori, metode) sau pot fi definiţi de utilizator (ce desemnează obiecte, variabile, tipuri de date, constante, etichete, proceduri).

Instrucţiunile specifice limbajului Visual Basic se obţin prin combinarea literalilor, identificatorilor şi cuvintelor rezervate. Pentru lizibilitatea codului, fiecare instrucţiune se scrie pe o linie separată. Dacă o instrucţiune nu încape pe o linie, se poate continua pe linia următoare prin caracterul underscore (_). Se pot folosi 20 astfel de linii de continuare a unei instrucţiuni. Numele sunt folosite la setarea proprietăţilor la momentul execuţiei şi în stabilirea numelor procedurilor pentru evenimentele obiectelor. Setarea proprietăţilor la momentul execuţiei se obţine 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).

Page 26: Subiecte Prog Calc

În Visual Basic, numele obiectelor sunt utilizate în setarea unui cadru de lucru (framework) corespunzător procedurilor eveniment, pentru scrierea codului. Formatul fiecărei 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 ataşează un obiect. Visual Basic construieşte automat un cadru de lucru (framework) pentru fiecare dintre procedurile eveniment. Utilizatorul care construieşte aplicaţia trebuie să scrie codul procedurilor eveniment la care corespunde aplicaţia.

9.3.2. Tipuri de dateTipurile 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 obţin prin combinarea mai multor tipuri de date

existente în structuri de date. Declararea tipurilor de date definite de utilizator se efectuează în secţiunea Declaration (din

modulul standard) cu Type…End 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_nEnd TypeTipurile 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 următoarea structură:Type ClientNume_client As String *20 Prenume_client As String *20Adresa_client As AdresaCNP_client As String *13End Type

unde tipul de date definit de utilizator Adresa are structura:Type AdresaLocalitate As String *20Strada As String *20Numar As IntegerJudet As String *20End Type

9.3.3. Variabile şi constanteVariabilele care se folosesc într-un program desemnează locaţii de memorie în care se stochează

valori ce se modifică pe timpul execuţiei 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.

Page 27: Subiecte Prog Calc

Corespunzător variabilei care se doreşte 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 conţine: valori numerice, şiruri de caractere sau dată calendaristică.

Implicit. Declararea implicită este dată prin folosirea sufixului corespunzător. 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 instrucţiunilor care utilizează variabilele respective şi permite identificarea, gestionarea corectă a apariţiei 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 cuvântul cheie

Dim:Dim Denumire_material As StringDim Cantitate As IntegerDim Pret_unitar As Single.Variabilele declarate la nivelul procedurilor îşi vor păstra valorile numai pe timpul rulării

procedurilor respective. Din acest motiv se mai numesc şi variabile locale. Pentru ca variabilele să-şi păstreze valorile şi după terminarea procedurii, se foloseşte domeniul

procedurilor în care variabilele se declară static, cuvântul-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 menţin valorile la nivelul

formularului (modulului), relativ la toate procedurile prin declararea variabilelor cu Dim, dar în partea de declaraţii a obiectului general, în fereastra de cod a formularului.

Pentru domeniul domeniul nivelului global, o variabilă este disponibilă tuturor procedurilor prezentate în aplicaţie, prin declararea în partea de declaraţii a obiectului general din fereastra de cod a unui modul cu ajutorul cuvântului cheie Global. De exemplu:

Global Nr_factura As LongGlobal Data_factura As Date.În cazul mai multor variabile cu acelaşi nume, variabilele locale au valabilitate numai în cadrul

procedurilor. La părăsirea acestor proceduri se folosesc variabilele cu acelaşi nume, dar definite la nivel superior.

Procedura de introducere a acestor variabile globale este următoarea: se execută dublu-click oriunde în fereastra formularului pentru a deschide fereastra de editare a

codului (sau se selectează opţiunea View Code din fereastra Project); se declară variabilele din formular astfel:Option Explicit (forţează declararea variabilelor)

Page 28: Subiecte Prog Calc

Global Nr_factura As LongGlobal Data_factura As Date.

9.3.4. Constante simbolice utilizate în Visual BasicÎn cele mai multe situaţii, funcţiile şi obiectele limbajului Visual Basic necesită argumente pentru

efectuarea operaţiilor 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 = VBBlueUtilizatorul îş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.