Sunteți pe pagina 1din 70

Capitolul 1

NOŢIUNI DE BAZĂ PRIVIND INSTRUMENTELE


SOFTWARE

Sumar:

• Istoricul limbajelor de programare


• Etapele elaborării programelor de aplicaţii şi rolul economiştilor
• Instrumente pentru dezvoltarea aplicaţiilor
• Instrumente software pentru economişti
• Tendinţe în instrumentele software
2 Instrumente software pentru afaceri

1.1 ISTORICUL LIMBAJELOR DE PROGRAMARE

Astăzi, aproape orice activitate dintr-o organizaţie se desfăşoară cu ajutorul


calculatorului. Nevoia de programe de aplicaţii s-a diversificat în permanenţă, iar odată cu ele
şi instrumentele software. Prin instrument software se înţelege un program folosit de
informaticieni sau utilizatori pentru dezvoltarea programelor de aplicaţii.
Istoria instrumentelor software a început odată cu primele calculatoare, la începutul
anilor ’50. De atunci şi până în anii ’80 singura modalitate de dezvoltare a programelor de
aplicaţii era reprezentată de limbajele de programare. Astăzi avem la dispoziţie o multitudine
de alte instrumente software. În afara limbajelor de programare pot fi enumerate sistemele de
gestiune a bazelor de date, programe de calcul tabelar, produsele CASE, programele pentru
gestiunea informaţiilor personale şi multe altele. Multe dintre acestea se adresează
nespecialiştilor în programarea calculatoarelor.
Pentru a înţelege principalele evoluţii şi tendinţe ale instrumentelor software, vom
face cu o scurtă prezentare a istoricului limbajelor de programare.
Limbajele de programare constituie rezultatul unei evoluţii, care a fost determinată
atât de performanţele calculatoarelor electronice, cât şi de progresele din teoria şi practica
programării. Se disting cinci categorii de limbaje de programare: limbaje cod maşină, limbaje
de asamblare, limbaje de nivel înalt, limbaje din generaţia a patra, numite şi limbaje de nivel
foarte înalt şi limbaje naturale.
Fiecare procesor are propriul set de instrucţiuni, care formează aşa numitul limbaj
maşină. În primii ani ai dezvoltării programelor, aceste limbaje constituiau singura variantă la
îndemână. Toate instrucţiunile din program trebuiau să fie redactate în cod binar, adică sub
forma unor şiruri formate din 0 şi 1. De exemplu, o instrucţiune avea forma 0110 1010 0110
1011 şi poate semnifica operaţiunea de adunare. Astfel, programele se concretizau în secvenţe
de cifre binare pentru adrese, date şi operaţii, programatorul cunoscând perfect operaţiunile
interne din unitatea centrală a calculatorului. O simplă funcţie de prelucrare necesita lungi
serii de instrucţiuni pentru a fi realizată.
Dezavantajele acestor limbaje de programare sunt astăzi evidente: dificultatea scrierii
şi, mai ales, a înţelegerii programelor; lipsa portabilităţii programelor, adică imposibilitatea
executării lor pe alte tipuri de calculatoare decât cel pentru care au fost elaborate.
Limbajele de asamblare au permis reducerea dificultăţilor specifice programării în
limbaj maşină, prin folosirea unor abrevieri alfabetice (mnemonice) în locul şirurilor de 0 şi 1.
De exemplu, instrucţiunea „ADD R1, R2, R4” semnifică adunarea valorilor conţinute în
registrele de memorie R1 şi R2, iar rezultatul este scris în registrul R4. După cum se poate
observa, codurile de operaţii şi poziţiile din memorie sunt reprezentate prin simboluri, motiv
pentru care aceste limbaje se mai numesc şi simbolice. Ele simplifică mult programarea,
deoarece abrevierile alfabetice sunt mai uşor de memorat decât instrucţiunile scrise în binar,
oferind mai multă comoditate în scrierea sau citirea şi înţelegerea programelor.
Noţiuni de bază privind instrumentele software 3

Odată scrise, programele în limbajele de ansamblare trebuie traduse în limbajul


maşină, pentru a putea fi executate pe calculator. Această operaţiune este realizată prin
intermediul unor programe speciale numite ansambloare. Ele preiau programele sursă (cele
scrise în limbajul de ansamblare) şi le convertesc în programe obiect executabile (scrise în
limbajul maşină). Operaţiunea de ansamblare este necesară deoarece un calculator ştie să
interpreteze şi să execute doar programele scrise în cod maşină.
Principalele limbaje din această categorie sunt: ASSIRIS, ASSEMBLER, MAGIRIS.
Dincolo de avantajele sale, limbajele de asamblare rămân orientate-maşină, deoarece
comenzile sale corespund instrucţiunilor în limbaj maşină, conform tipului de calculator
utilizat. O singură instrucţiune în limbaj de asamblare corespunde unei singure instrucţiuni în
limbaj maşină şi, ca atare, este nevoie de acelaşi număr de instrucţiuni pentru scrierea
programelor în ambele cazuri. Ca şi programele în cod maşină, programele scrise în limbaj de
asamblare nu pot fi portate de pe un tip de calculator pe altul. Totuşi, ele sunt încă utilizate
astăzi, mai ales de către programatorii care dezvoltă software de sistem, pentru că ele permit
utilizarea mai eficientă a resurselor calculatorului şi sunt mai rapide la execuţie.
În practica programării calculatoarelor, limbajele maşină şi cele de asamblare sunt
considerate limbaje de nivel redus.
O dată cu lansarea limbajului FORTRAN (1954) s-a trecut la o altă generaţie de
limbaje, numite de nivel înalt sau evoluate. Alte limbaje din această categorie sunt: COBOL,
BASIC, C şi C++, ADA, PROLOG.
Limbajele de nivel înalt au fost dezvoltate pentru a creşte productivitatea muncii
programatorilor. Ele sunt mai uşor de asimilat şi de înţeles decât un limbaj de asamblare,
deoarece regulile, normele şi sintaxa sunt mai suple, ceea ce reduce riscul erorilor.
Instrucţiunile în limbajele evoluate, numite enunţuri, se aseamănă mult cu limbajul uman sau
cu convenţiile de scriere în matematică. De fapt, fiecare enunţ constituie o macroinstrucţiune,
adică ea realizează operaţiuni specifice mai multor instrucţiuni în limbajul maşină. Iată câteva
exemple de comenzi întâlnite în limbajele de nivel înalt: COMPUTE, DISPLAY,
SUBSTRACT.
Pentru a fi executat, programul sursă, scris într-un limbaj de nivel înalt, trebuie
convertit în program obiect, scris în limbaj maşină. Această operaţiune poate fi realizată prin
intermediul unor programe speciale, numite interpretoare sau compilatoare. Interpretoarele
tratează programul sursă la nivel de linie de instrucţiuni, fiecare linie fiind executată imediat
ce este convertită în cod obiect. În schimb, compilatoarele realizează conversia întregului
program sursă în program obiect şi după aceea el poate fi executat. Datorită manierei diferite
de lucru, programele interpretate au o viteză de execuţie mai mică decât cele compilate. După
compilare mai trebuie urmată o etapă înainte de a fi executat programul. Este vorba despre
editarea de legături, în care programul obiect este completat cu module preluate din
bibliotecile sistemului de operare.
Principalele avantaje ale limbajelor de nivel înalt sunt:
• Creşterea productivităţii muncii de programare. Instrucţiunile din program
sunt orientate pe activitate şi nu pe calculatorul pe care se va executa
programul, ceea ce uşurează munca programatorilor. Se mai spune că aceste
4 Instrumente software pentru afaceri

limbaje sunt orientate pe problemă. De exemplu, limbajul COBOL a fost


conceput pentru dezvoltarea aplicaţiilor economice, iar FORTRAN pentru
scopuri ştiinţifice sau domeniul matematicii.
• Programele scrise în limbajele de nivel înalt sunt portabile. Prin utilizarea
macroinstrucţiunilor în scrierea programelor sursă şi traducerea lor în limbaj
maşină, cu ajutorul interpretoarelor sau a compilatoarelor, programele vor
putea fi executate pe diferite tipuri de calculatoare. Pentru a fi posibil acest
lucru, fiecare tip de calculator va avea propriul interpretor/ compilator pentru
fiecare limbaj de programare.
• Posibilitatea scrierii de programe de către persoane mai puţin calificate
decât în cazul limbajelor de ansamblare. Apropierea macroinstrucţiunilor de
limbajul uman şi orientarea lor pe problema de rezolvat le fac mai uşor de
învăţat.
În schimb, limbajele evoluate sunt mai puţin eficiente decât limbajele de asamblare,
din punctul de vedere al utilizării resurselor calculatorului, şi necesită mai mult timp de
execuţie. Aceste inconveniente n-au putut determina programatorii să nu utilizeze pe scară
largă limbajele de nivel înalt în dezvoltarea aplicaţiilor pentru companii.
Limbajele din generaţia a patra (cunoscute şi sub acronimul 4LG) descriu o mare
varietate de limbaje care sunt mai neprocedurale şi mai conversaţionale decât cele de nivel
înalt. Ele sunt extrem de cunoscute şi utilizate astăzi, dar, în acelaşi timp, dificil de definit,
chiar şi încadrarea lor în categoria „limbaje” fiind discutabilă. Ele pot fi considerate ca
limbaje sofisticate care permit creşterea productivităţii muncii programatorilor, prin
facilităţile de dezvoltare a aplicaţiilor pe care le oferă, sau ca limbaje mai directe şi mai
simple, care permit utilizatorilor să-şi dezvolte propriile aplicaţii informatice.
Totuşi, pot fi identificate câteva caracteristici comune majorităţii limbajelor 4GL1:
• sunt centrate în jurul bazelor de date, în mod deosebit a celor relaţionale,
oferind facilităţi pentru stocarea şi interogarea datelor din bază;
• sunt limbaje declarative, numite şi neprocedurale, ceea ce înseamnă că
accentul este pus pe ceea ce trebuie să facă aplicaţia şi nu cum trebuie să facă.
Acum este posibilă dezvoltarea unor mici aplicaţii informatice fără a mai fi
necesară scrierea de programe. Utilizatorii se rezumă la a indica rezultatele
vizate, de o manieră declarativă, astfel încât calculatorul să poată determina
secvenţa de program necesară pentru obţinerea acestor rezultate. Din acest
motiv, se spune că limbajele din această generaţie au simplificat mult procesul
de programare.
• pun la dispoziţie o interfaţă grafică prietenoasă, bazată pe dialogul interactiv,
cu care utilizatorii pot interacţiona pentru a-şi dezvolta propriile aplicaţii.
Această interfaţă este referită prin acronimul GUI (Graphical User Interface –
Interfaţă grafică utilizator);

1 prelucrare după Curtis, G., Cobham, D. – Business Information Systems. Analysis, Design and Practice, fourth
edition, Prentice Hall, 2002, p. 122
Noţiuni de bază privind instrumentele software 5

• includ limbaje de programare de nivel înalt pentru scrierea de proceduri prin


care să se acopere anumite funcţiuni ale aplicaţiilor care nu pot fi rezolvate prin
instrumentele 4GL;
Apariţia limbajelor 4GL a reprezentat răspunsul la neajunsurile limbajelor de nivel
înalt. Deşi acestea au permis o sporire considerabilă a productivităţii muncii programatorilor,
în comparaţie cu limbajele de ansamblare, ea nu a fost suficientă în condiţiile extinderii rapide
a utilizării microcalculatoarelor din anii ‘80, a creşterii permanente a cerinţelor utilizatorilor şi
a complexităţii aplicaţiilor informatice. De fapt, prin introducerea limbajelor 4GL s-a urmărit
rezolvarea a trei probleme: reducerea costurilor mari cu dezvoltarea programelor, nevoia de
obţinere a programelor în timp cât mai scurt şi creşterea calităţii programelor, mai ales în ce
priveşte includerea cerinţelor funcţionale ale utilizatorilor.
Prin urmare, aceste limbaje prezintă următoarele avantaje:
• posibilitatea dezvoltării de noi aplicaţii mai ieftine şi mai rapid;
• uşurinţa întreţinerii aplicaţiilor;
• posibilitatea utilizatorilor de a-şi dezvolta propriile aplicaţii. Odată cu apariţia
acestor limbaje s-a dezvoltat un nou concept – utilizatorul final
informatizat (end user computing), care face referire la faptul că utilizatorii
cu mai puţine cunoştinţe informatice îşi pot crea şi întreţine singuri propriile
aplicaţii.
În evoluţia limbajelor de programare de până acum, apariţia unei generaţii noi a
determinat renunţarea, în bună măsură, la limbajele din generaţia anterioară, dar nu şi
dispariţia lor. Acum, ne putem întreba dacă apariţia şi dezvoltarea limbajelor 4GL vor avea
acelaşi efect asupra limbajelor de nivel înalt. Răspunsul ferm este nu, atât pentru prezent, cât
şi pentru viitorul imediat. Explicaţiile sunt următoarele:
• aplicaţiile dezvoltate în 4GL sunt mai puţin eficiente decât limbajele de nivel
înalt, din punctul de vedere al utilizării resurselor calculatorului, aspect care
devine mai evident cu cât creşte complexitatea aplicaţiilor sau volumul
datelor de prelucrat. Viteza de execuţie a programelor generate automat de
aceste limbaje, pe baza specificaţiilor utilizatorilor, este mai mică, fapt care se
răsfrânge în timpi de răspuns mai mari, dar şi pretenţii sporite în ce priveşte
puterea de calcul. Unii chiar se întreabă dacă reducerea costurilor şi a
timpului de dezvoltare a aplicaţiilor nu sunt depăşite de costurile suplimentare
cu achiziţia echipamentelor necesare pentru obţinerea de performanţe
echivalente limbajelor din a treia generaţie.
• aplicaţiile complexe solicitate astăzi de firme nu pot fi dezvoltate integral cu
limbajele 4GL. Facilităţile oferite sunt încă limitate, ceea ce impune apelarea
la limbajele de generaţia a treia, mai ales în cazul aplicaţiilor pentru firmele
medii şi mari.
• utilizarea limbajelor 4GL de către utilizatori poate conduce la lipsa
standardizării în dezvoltarea sistemelor informatice la nivelul organizaţiei,
ceea ce poate crea deficienţe în desfăşurarea activităţii angajaţilor.
6 Instrumente software pentru afaceri

Cel mai tipic exemplu de limbaj 4GL este SQL. El îndeplineşte ambele caracteristici
ale acestei generaţii de limbaje: este utilizat de profesionişti, în vederea creşterii
productivităţii muncii lor, dar şi de utilizatorii finali, în scopul dezvoltării propriilor aplicaţii.
SQL este orientat spre dezvoltarea aplicaţiilor cu baze de date relaţionale, fiind inclus de
marea majoritatea a SGBD-urilor, precum ACCESS, Visual FoxPro, Oracle. El oferă facilităţi
pentru crearea, actualizarea şi interogarea bazelor de date
În categoria limbajelor 4GL sunt incluse şi SGBD-ul ACCESS, programele de calcul
tabelar EXCEL şi LOTUS 1-2-3, limbajele de interogare a bazelor de date QBE şi RPG IV,
generatorul de rapoarte Crystal Reports.
Ultimul pas în evoluţia limbajelor de programare îl reprezintă limbajele naturale,
referite uneori şi ca limbaje de programare de generaţia a cincea2. Ele îşi propun utilizarea
limbajului uman în programarea calculatoarelor, cele mai cunoscute exemple fiind
INTELLECT şi ELF. Ele sunt adesea folosite ca interfeţe pentru instrumentele 4GL.
Principalul lor neajuns este legat de translatarea programelor din limbajul natural în
limbaj maşină, o operaţiune extrem de complexă şi costisitoare din punctul de vedere al
resurselor hardware solicitate. Ele sunt integrate cu aplicaţiile de inteligenţă artificială, incluse
şi ele în această generaţie. Un astfel de exemplu îl reprezintă LISP.
Deşi limbajele naturale sunt încă în faza de început a dezvoltării lor, ele reflectă foarte
bine caracteristica principală a evoluţiei limbajelor de programare – apropierea de limbajul
uman. Această caracteristică, precum şi altele sunt evidenţiate figura 1.1.
Generatia
I II III IV V
Caracteristici Limbaj Limbaj de Limbaj de Limbaj Limbaj
masina ansamblare nivel înalt neprocedural natural
Apropierea de
limbajul uman Progres

Productivitate
Progres

Eficienta
utilizarii Diminuare
resurselor
Portabilitate Nu Nu Da Da Da
Utilizarea de Nu Nu Da Da Da
macroinstructiuni
Utilizarea Nu Da Da Da Da
simbolurilor

Figura 1.1 Caracteristicile evoluţiei limbajelor de programare


Sursa: adaptare după Turban, E., McLean, E., Wetherbe, J. – Information Technology for Management, John
Wiley&Sons, 2001, p. 735

2 unii autori includ limbajele naturale tot în categoria 4GL. Vezi O’Brien, J.A. – Introduction ti Information
Systems. Essentials for the Internetworked E-Business Enterprise, McGraw-Hill, 2001, p.158
Noţiuni de bază privind instrumentele software 7

1.2 ETAPELE ELABORĂRII PROGRAMELOR DE APLICAŢII ŞI


ROLUL ECONOMIŞTILOR
Dezvoltarea programelor de aplicaţii (sau a sistemelor informaţionale) nu se limitează
la scrierea programelor, ci presupune parcurgerea unui proces mai amplu, format din mai
multe etape. Ansamblul tuturor acestor etape formează ciclul de viaţă al programelor de
aplicaţii. Astăzi există numeroase metodologii de dezvoltare a programelor, ce diferă între ele
prin numărul etapelor, conţinutul şi organizarea lor. În acest paragraf dorim să descriem
succint etapele comune majorităţii metodologiilor şi să punem în evidenţă rolul economiştilor
de-a lungul procesului de dezvoltare.
Procesul de dezvoltare începe cu etapa de microanaliză. Această etapă are drept ţintă
definirea clară a problemei sau oportunităţii ivite, precum şi a scopului urmărit, în sensul că
trebuie să se înţeleagă ce se întâmplă la nivelul firmei, ce obiective are firma şi cum noua
aplicaţie poate conduce la atingerea lor. Este important să se identifice exact care sunt
avantajele pe care le aduce noua aplicaţie, ce activităţi economice sprijină şi ce probleme pot
fi rezolvate cu ajutorul ei. Printre motivele de iniţiere a dezvoltării unei noi aplicaţii putem
enumera: modernizarea sistemului informaţional în vederea valorificării avantajelor oferite de
noile tehnologii informaţionale; modificarea legislaţiei; ineficienţa unor activităţi derulate în
cadrul firmei, datorată slabei integrări a sistemului informaţional; aplicaţiile existente nu mai
fac faţă cerinţelor, datorită extinderii activităţii firmei; sprijinirea realizării obiectivelor
strategice.
La finalul acestei etape se elaborează un plan de dezvoltare, care este supus spre analiză
conducerii. Dacă se obţine aprobarea, proiectul poate fi iniţiat, în sensul că vor fi alocate
fondurile şi resursele necesare şi se va organiza echipa de dezvoltare.
Cel mai adesea, economiştii sunt cei care iniţiază dezvoltarea de noi aplicaţii. Chiar
dacă iniţiativa aparţine altor categorii de personal, rolul economiştilor rămâne important,
deoarece ei trebuie să elaboreze planul de dezvoltare, în care se face o estimare a cheltuielilor
şi beneficiilor potenţiale ale aplicaţiei propuse.
După iniţierea proiectului de dezvoltare a noului program de aplicaţie, se merge mai
departe cu etapa de analiză, prin care se urmăreşte identificarea şi descrierea cerinţelor
funcţionale şi informaţionale. La sfârşitul ei trebuie să fie foarte clar ce funcţii va realiza noua
aplicaţie. Astfel, în această etapă sunt urmărite trei obiective principale:
• descrierea sistemului informaţional existent, fiind analizate documentele
primare, fluxurile de informaţii din sistem, prelucrările şi rapoartele;
• identificarea şi definirea cerinţelor pentru noua aplicaţie;
• documentarea detaliată a tuturor cerinţelor, funcţionale şi nefuncţionale.
Analiza sistemului este o activitate esenţială în aflarea situaţiei existente şi a ceea ce se
doreşte în viitor. Informaţiile privind sistemul curent şi cerinţele pentru noul sistem se pot
obţine prin intermediul mai multor tehnici, cum ar fi: observarea a ceea ce fac utilizatorii,
intervievarea lor sau sondarea pe bază de chestionare, analiza documentelor şi a procedurilor
de lucru, a regulilor economice şi a responsabilităţilor fiecărui loc de muncă care este
8 Instrumente software pentru afaceri

influenţat sau influenţează funcţionarea sistemului, a documentaţiei sistemul informatic


existent.
Dar nu este suficientă simpla culegere a informaţiilor. Analiştii trebuie să le
revizuiască, să le analizeze şi să le structureze astfel încât cerinţele noii aplicaţii să fie uşor
înţelese de către cei care se vor ocupa de proiectarea şi scrierea programelor. Cerinţele pot
transpuse sub formă grafică, cu ajutorul diferitelor instrumente.
În finalul etapei de analiză, se pregăteşte o documentaţie necesară proiectării, prin care
sunt surprinse toate aspectele privind modul de funcţionare a sistemului curent, căror nevoi şi
cerinţe trebuie să răspundă noua aplicaţie, ce funcţii trebuie să cuprindă şi ce obiective trebuie
să sprijine.
În această etapă, economiştii joacă un rol covârşitor. Ei sunt cei care trebuie să descrie
documentele primare, prelucrările realizate în sistem, procedurile de control, modalităţile de
obţinere a informaţiilor şi prezentare a lor în rapoarte. Informaticienii nu au cum să înţeleagă
mecanismele economice desfăşurate în cadril firmei. Provocarea majoră în rândul
economiştilor constă în structurarea tuturor informaţiilor despre sistem într-o formă care să
faciliteze comunicarea cu informaticienii. De aceea, ei trebuie să stăpânească instrumentele
grafice de reprezentare a sistemului.
În etapa de proiectare logică se urmăreşte dezvoltarea arhitecturii aplicaţiei, pregătirea
specificaţiilor de proiectare a interfeţelor utilizator şi a bazei de date, a controalelor şi
procedurilor de realizare a copiilor de siguranţă, a programelor, independent de platformele pe
care urmează să fie implementată aplicaţia. Aceste activităţi se bazează pe utilizarea
informaţiilor culese şi a modelelor create în timpul analizei.
Proiectarea logică se derulează prin intermediul a trei paşi sau subfaze:
• proiectarea formularelor/ formatelor (pentru culegerea datelor) şi a rapoartelor;
• proiectarea interfeţelor şi a dialogurilor, pentru evidenţierea modului de comunicare
a utilizatorului cu programele şi echipamentele;
• proiectarea logică a bazelor de date, prin care este concepută schema relaţională a
bazei de date, sub forma unui ansamblu de tabele normalizate între care există
legături.
Şi în această etapă economiştii pot juca un rol important. Înţelegerea corectă a modului
de funcţionare a sistemului informaţional este crucială în proiectarea interfeţelor utilizator, a
documentelor şi rapoartelor, chiar şi a bazei de date. Însă, pentru a face faţă acestor sarcini,
economistul trebuie să deţină cunoştinţe suplimentare de informatică, precum: modelul
relaţional şi normalizarea bazelor de date, tipurile de obiecte regăsite în formularele, limbajul
SQL.
După parcurgerea etapei de proiectare logică se trece la o nouă etapă, proiectarea
fizică. Această etapă are un caracter preponderent tehnic, fiind orientată spre platformele pe
Noţiuni de bază privind instrumentele software 9

care va fi implementată aplicaţia. Ca atare, şi specificaţiile acestei etape vor avea un pronunţat
caracter tehnic, economiştii intervenind rareori în derularea acestor activităţi.
Două dintre activităţile importante ale acestei etape privesc proiectarea fizică a bazei de
date şi proiectarea modulelor de program. De exemplu, la proiectarea fizică a bazei de date se
vor lua în considerare facilităţile de stocare şi accesare a datelor din SGBD-ul ales, precum
tipul de organizare a fişierelor şi utilizarea indecşilor.
După finalizarea proiectării, se trece la etapa de implementare, în timpul căreia
sistemul este construit, testat şi instalat. Obiectivul activităţilor specifice nu este numai de
asigurare a funcţionării aplicaţiei, în concordanţă cu nevoile identificate, ci şi a faptului că
utilizatorii sunt instruiţi astfel încât firma să beneficieze de rezultatele prevăzute prin
exploatarea corespunzătoare a acesteia. Principalele activităţi care se desfăşoară în cadrul
etapei sunt:
• scrierea şi testarea programelor;
• construirea bazei de date;
• conversia datelor din vechea aplicaţie în formatul cerut de noua aplicaţie;
• instalarea aplicaţiei pe calculatoare;
• instruirea utilizatorilor pentru oferirea tuturor explicaţiilor şi cunoştinţelor necesare
exploatării aplicaţiei la parametrii la care a fost proiectat;
• elaborarea documentaţiei aplicaţiei şi a manualelor de utilizare, exploatare şi
întreţinere.
La finalul acestei etape, programul de aplicaţie se poate considera a fi funcţional, şi se
trece la etapa de exploatare şi întreţinere. În această etapă el trebuie supus revizuirilor
periodice pentru a se asigura întreţinerea acestuia, fie pentru corectarea eventualelor erori
apărute în exploatarea lui, fie pentru îmbunătăţirea caracteristicilor sau funcţiilor, ca răspuns
la modificarea unor cerinţe organizaţionale. Această etapă este, de obicei, cea mai
costisitoare, având în vedere că timpul pe care şi-l petrec specialiştii din departamentele
informatice reprezintă cam 48-60% din totalul timpului alocat pentru dezvoltarea sistemului.

1.3 INSTRUMENTE PENTRU DEZVOLTAREA APLICAŢIILOR


Enumerarea şi descrierea instrumentelor software poate porni de la cele trei
componente ale programelor de aplicaţii:
• interfaţa utilizator, adică o serie de componente (formulare pentru introducerea
datelor, ferestre de dialog, meniuri, rapoarte) cu ajutorul cărora utilizatorul să
poată iniţia diferite operaţiuni de culegere a datelor, prelucrare şi obţinere a
informaţiilor solicitate;
• modulele de program, care realizează prelucrările din sistem, cum ar fi calculul
salariilor, întocmirea graficelor de rambursare etc.;
• baza de date, în care sunt organizate şi stocate toate datele necesare aplicaţiei.
Pentru dezvoltarea acestor componente se apelează la instrumente diferite, pe care
încercăm să le prezentăm în continuare.
10 Instrumente software pentru afaceri

Mediile de programare sunt seturi de programe care includ următoarele funcţii:


introducerea şi editarea programului sursă, instrumente pentru transformarea programului
sursă în programe executabile sau biblioteci de funcţii şi instrumente pentru depanarea
programelor. Într-un mediu de dezvoltare se pot folosi unul sau mai multe limbaje de
programare. Exemple de medii de programare sunt: MS Visual Studio, Oracle JDeveloper,
Oracle PowerObjects, Java, Borland Jbuilder, Borland Delphi, IBM Visual Age, Sybase
PowerBuilder. În MS Visual Studio pot fi folosite mai multe limbaje de programare, cum ar
fi: Visual Basic, C# sau C++.
Mediile de programare contribuie la realizarea în cadrul unei aplicaţii nu doar a
modulelor de programe pentru prelucrarea datelor, ci şi a interfeţei utilizator şi a legăturii cu
bazele de date.
Pentru stocarea şi gestionarea volumelor mari de date se apelează sistemele de
gestiune a bazelor de date. Astăzi marea majoritate a aplicaţiilor stochează datele în baze de
date. Bazele de date cel mai des întâlnite sunt cele organizate după modelul relaţional: Oracle,
DB2 produs de IBM, Sybase SQL Server, MS SQL Server, MS Access, MS Visual FoxPro.
În condiţiile globalizării afacerilor şi a dezvoltării reţelelor de calculatoare se simte
din ce în ce mai mult nevoia distribuirii resurselor informaţionale ale companiei, respectiv
date şi/ sau programe, pe mai multe calculatoare. Dezvoltarea unei aplicaţii distribuite impune
apelarea la arhitectura client – server, care presupune conceperea aplicaţiei în termenii a două
categorii de componente: componente client, care solicită anumite servicii şi componente
server, care furnizează servicii. Cele două categorii de componente vor fi rezidente pe două
sau mai multe calculatoare.
Comunicarea între două componente aflate pe calculatoare diferite sau mascarea
eterogenităţii platformelor hardware şi software sunt rezolvate prin intermediul soluţiilor
middleware. Ele sunt un set de programe care nu au doar rolul de a ascunde natura eterogenă
a echipamentelor, sistemelor de operare sau a limbajelor de programare folosite în sistem, ci
şi de a oferi un mediu de programare mai comod. Cele mai cunoscute modele midleware sunt
RPC (Remote Procedure Call), RMI (Remote Method Invocation), ODBC (Open Database
Connectivity) şi CORBA (Common Object Request Broker Architecture).
Indiferent de arhitectura software dorită, în cazul în care firma nu dispune de resurse
financiare care să permită achiziţionarea unor produse program necesare, se poate apela la
soluţia soluţii freeware. Aşa cum există aplicaţii financiar-contabile gratuite (de exemplu
SAGA), tot aşa există instrumente de dezvoltare software gratuite. Cel mai răspândit limbaj
de programare folosit în medii de programare gratuite este Java. Un SGBD gratuit, care
reuşeşte să ajungă la un nivel de complexitate a prelucrării datelor comparabil cu cel al celor
mai bine vândute SGBD-uri este PostgreSQL. Spre deosebire de alte SGBD-uri gratuite
(MySQL), PostgreSQL este capabil să rezolve interogări complexe adresate bazelor de date
pe care le gestionează. La capitolul SGBD-uri gratuite începe să concureze şi unul dintre cele
mai performante SGBD-uri relaţionale din lume, Oracle, prin lansarea versiunii Oracle
Database 10g Express Edition.
Dezvoltarea aplicaţiilor Web presupune folosirea unor platforme diferite de mediile
de programare specificate anterior. Pentru realizarea rapidă a unor site-uri Web se poate apela
Noţiuni de bază privind instrumentele software 11

la programul MS FrontPage. Uşurinţa în utilizarea acestui instrument software este dată de


asemănarea interfeţei sale cu interfeţele programelor din cadrul MS Office, de faptul că
utilizatorul nu este nevoit să înveţe limbajul HTML şi de folosirea unor şabloane.
Site-urile Web capătă o scalabilitate şi o dinamică deosebită atunci când folosesc baze
de date în care îşi salvează o parte din conţinut. Trecerea la site-uri mai complexe nu
presupune doar folosirea resurselor unei baze de date, ci şi elemente grafice care să atragă
atenţia utilizatorului. Ca exemple de instrumente pentru construirea site-urilor Web complexe
putem aminti Dreamweaver, ColdFusion, Flash şi RoboDemo. Aplicaţiile Web pot conţine
elemente de limbaj împrumutate din mediile de programare tradiţionale, cum ar fi VB Scripts
sau Java Scripts.

1.4 INSTRUMENTE SOFTWARE PENTRU ECONOMIŞTI


Economiştilor li se oferă astăzi o serie de instrumente software cu ajutorul cărora pot
să-şi dezvolte propriile aplicaţii informatice, e drept, de complexitate mai redusă. În acest
paragraf dorim să trecem în revistă astfel de instrumente, cu referire la cele utilizate în
dezvoltarea aplicaţiilor economice. În acest sens, dorim să reţinem atenţia asupra
instrumentelor CASE, programelor de calcul tabelar, sistemelor de gestiune a bazelor de date
(SGBD), instrumentelor pentru crearea de pagini Web şi a celor pentru organizarea
informaţiilor personale.
CASE (Computer Aidded Software Engineering) reprezintă un instrument pentru
automatizarea procesului de dezvoltare a programelor. El permite realizarea rapidă a unor
programe de calitate, prin sprijinul care-l oferă tuturor activităţilor de dezvoltare, de la
planificarea sistemelor informaţionale până la generarea automată şi testarea programelor.
CASE se bazează pe instrumente grafice şi simple, orientate spre utilizatorii fără prea
multe cunoştinţe tehnice, fapt ce permite implicarea lor activă în procesul de dezvoltare a
programelor. Economiştii au posibilitatea de a realiza variate sarcini, precum:
• planificarea resurselor financiare alocate proiectelor de sisteme informaţionale,
• redactarea cerinţelor funcţionale ale aplicaţiei,
• participarea activă la întocmirea specificaţiilor de proiectare a programelor,
• generarea automată a programelor sau a bazei de date fără a avea cunoştinţe
tehnice privind limbajul de programare sau SGBD-ul folosite,
• testarea programelor,
• generarea automată a documentaţiei pentru aplicaţia dezvoltată.
Implicarea directă a economiştilor în procesul de dezvoltare va determina sporirea
şanselor de reuşită datorită calităţii mai bune a programelor dar şi creşterii probabilităţii de
acceptare de către ei a noilor programe. Cele mai cunoscute instrumente CASE sunt Oracle
Designer şi Visible Analyst.
SGBD-urile sunt, fără îndoială, cele mai populare instrumente software în
dezvoltarea aplicaţiilor economice. Datorită acestui fapt, furnizorii au pus la dispoziţia
utilizatorilor nespecializaţi astfel de produse, cele mai utilizate fiind ACCESS, Visual FoxPro,
12 Instrumente software pentru afaceri

Corel Paradox sau Lotus Approach. Prin instrumentele grafice furnizate, ele se disting de
produsele destinate profesioniştilor, precum Oracle. Apelând la un astfel de produs,
utilizatorii vor fi în măsură să dezvolte aplicaţii de complexitate relativ redusă, fără a avea
cunoştinţe de specialitate.
Principalele facilităţi oferite de aceste SGBD-uri sunt:
• Crearea şi actualizarea bazei de date. Utilizatorii pot defini structura datelor,
sub forma tabelelor şi a relaţiilor dintre acestea, dar şi aspectele de
comportament a datelor, sub forma restricţiilor de integritate. De asemenea, ei
pot adăuga, modifica sau şterge date fie prin intermediul unor ferestre, fie
apelând la comenzile limbajului SQL.
• Interogarea bazei de date. Accesarea datelor din bază se poate face prin
intermediul unor facilităţi grafice de interogare, dar şi prin utilizarea frazei
SELECT SQL.
• Dezvoltarea de aplicaţii. Utilizatorii au la dispoziţie o serie de instrumente prin
care pot crea formulare pentru introducerea datelor în bază, rapoarte pentru
extragerea datelor şi prezentarea informaţiilor într-o formă plăcută, meniuri
pentru exploatarea mai uşoară a aplicaţiei, pagini Web. Prin integrarea lor se pot
obţine aplicaţii destul de complexe.
Programele de calcul tabelar, precum EXCEL, LOTUS 1-2-3, QuatroPro au
reprezentat prima categorie de instrumente software destinate utilizatorilor neinformaticieni.
Ele pot fi utilizate de economişti în activităţile de planificare şi elaborarea bugetelor, în
analize complexe privind activitatea firmei, în procesul decizional etc. Aceste programe sunt
considerate instrumente elementare de asistare a procesului decizional.
Programele de calcul tabelar organizează datele în centralizatoare formate din linii şi
coloane, la intersecţia cărora se găsesc căsuţe în care pot fi introduse date numerice şi de tip
text, precum şi formule complexe de calcul. De asemenea, în centralizatoare pot fi create şi
afişate grafice. În momentul introducerii datelor în centralizatoare, calculele din căsuţele cu
formule sunt efectuate automat, iar rezultatele sunt afişate imediat.
Principalele facilităţi de lucru sunt:
• o gamă largă de funcţii predefinite, cum sunt cele financiare, statistice,
matematice etc., pe care utilizatorii le pot folosi în elaborarea unor modele de
calcul complexe;
• reprezentarea grafică a datelor din centralizatoare;
• regăsirea uşoară a datelor din centralizatoare;
• posibilitatea realizării de operaţii specifice bazelor de date, precum extragerea
datelor în funcţie de anumite criterii, ordonarea datelor, adăugarea,
modificarea şi ştergerea de date etc.
• efectuarea de analize de tip „What-if” („Ce se întâmplă dacă”). De exemplu,
putem găsi răspunsul la întrebarea „Ce se întâmplă cu cota de piaţă dacă vom
creşte cheltuielile de promovare cu 10%?” Pentru a afla răspunsul la această
întrebare, este suficient să introducem într-un centralizator relaţia de calcul şi
Noţiuni de bază privind instrumentele software 13

datele privind factorii de influenţă. Simularea poate continua prin


considerarea a unui procent de 15%.
• automatizarea unor sarcini de lucru repetitive, prin crearea de macro-
programe.
Programele pentru gestiunea informaţiilor personale au rolul de a ajuta utilizatorii
în stocarea, organizarea şi extragerea informaţiilor privind clienţii, diferite activităţi, întâlniri,
şedinţe etc. De exemplu, informaţiile pot fi extrase şi prezentate sub forma unui calendar
electronic, o listă de întâlniri sau o planificare în timp a activităţilor unui proiect. Cele mai
cunoscute astfel de programe sunt Lotus Organizer şi Microsoft Outlook.
Furnizorii de software destinate nespecialiştilor oferă astăzi pachete integrate de
programe sub forma unor suite de programe. Astfel de pachete includ diferite instrumente
software care sprijină utilizatorii în creşterea productivităţii muncii lor. De regulă, într-o suită
se regăsesc un SGBD, un program de calcul tabelar şi un program pentru gestiunea
informaţiilor personale, la care se adaugă un procesor de texte şi unul pentru grafică. În
funcţie de furnizor, suitele pot include şi alte programe. Cele mai cunoscute suite, precum şi
câteva dintre componentele lor sunt prezentate în tabelul 1.1.
Tabelul 1.1 Principalele suite de programe şi componentele lor
Pachete (suite) Microsoft Lotus Corel WordPerfect
Ofice SmartSuite Office
Calcul tabelar Excel Lotus 1-2-3 QuatroPro
SGBD Access Approach Paradox
Gestiunea informaţiilor Outlook Organizer Corel Central
personale
Avantajele principalele ale suitelor de programe constau în costul mai redus faţă de
cumpărarea individuală a fiecărui produs inclus, oferirea unei interfeţe grafice uniforme, adică
aceleaşi ferestre, meniuri, butoane, linii de stare etc., ceea ce le face mai uşor de învăţat şi, nu
în ultimul rând, posibilitatea integrării aplicaţiilor dezvoltate cu instrumente software diferite.
De exemplu, datele din baza de date pot fi uşor exportate într-o aplicaţie dezvoltată în
programul de calcul tabelar. În schimb, ele sunt criticate pentru faptul că sunt prea mari şi
ocupă prea mult spaţiu pe calculator, mai ales că unele componente nu sunt folosite niciodată
de cei mai mulţi utilizatori.

1.5 TENDINŢE ÎN INSTRUMENTELE SOFTWARE


Progresele extrem de rapide înregistrate în ultimii ani în domeniul tehnologiilor
informaţionale şi de comunicaţii îşi pun amprenta şi asupra aplicaţiilor informatice economice
şi a instrumentelor software pentru dezvoltarea acestora. Desprinderea unor tendinţe în
evoluţia instrumentelor software este o încercare dificilă datorită numeroasele evoluţii
înregistrate în prezent, unele contradictorii.
Ca o tendinţă mai generală în ce priveşte dezvoltarea aplicaţiilor informatice, se
observă predilecţia companiilor către achiziţia programelor de aplicaţii de la furnizorii
specializaţi, în detrimentul dezvoltării lor în cadrul campaniei, cu forţe proprii sau prin
14 Instrumente software pentru afaceri

angajarea de specialişti. În acest context, două acronime au devenit extrem de populare: ERP
şi ASP.
La mijlocul anilor ’90, multe organizaţii au conştientizat că nu mai pot rezista pe piaţă
dacă vor continua să utilizeze vechile sisteme informatice neintegrate. Nevoii de integrare i-
au răspuns sistemele ERP (Enterprise Resource Planning). ERP reprezintă o mega-aplicaţie
multi-modulară care integrează procesele economice şi optimizează resursele disponibile ale
organizaţiei, reunind toate funcţiunile sale într-o singură soluţie software. ERP elimină
barierele departamentale, prin integrarea tuturor sistemelor informaţionale tranzacţionale într-
o singură bază de date, accesibilă oricui din organizaţie3. Nu în ultimul rând, se urmăreşte
eliminarea graniţelor organizaţiei cu partenerii săi de afaceri. Două aplicaţii, adesea incluse în
soluţiile ERP, stau drept mărturie: CRM (Customer Relationship Management), centrată pe
gestiunea relaţiilor cu clienţii, şi SCM (Supply Chain Management), orientată spre
gestiunea relaţiilor cu furnizorii.
ERP nu realizează doar integrarea funcţională, ci şi pe cea tehnologică. Sub egida sa
sunt reunite diverse tehnologii, precum: groupware, EDI (Electronic Data Interchange),
Internet, Intranet, data warehouse (depozite de date) etc.
Principalele avantaje obţinute prin apelarea la soluţiile ERP constau în: reducerea
costurilor producţiei şi a stocurilor, planificarea integrală a resurselor întreprinderii,
îmbunătăţirea productivităţii globale, maximizarea profitului prin flexibilitate şi reactivitate
sporită la cerinţele pieţei. Aceste avantaje nu derivă doar din integrarea funcţională şi
tehnologică, ci şi ca urmare a expertizei de care sunt însoţite soluţiile ERP. Furnizorii de
astfel de sisteme desfăşoară ample activităţi de cercetare pentru a găsi cele mai bune practici
în diferite domenii de afaceri.
Dincolo de aceste avantaje, apelarea pe scară largă la soluţiile ERP este deocamdată
limitată, situaţie explicabilă prin trei mari neajunsuri: preţul exorbitant de mare, timpul
îndelungat de implementare şi adaptabilitatea redusă la condiţiile particulare din firmă.
Soluţiile ERP implică riscuri destul de mari pentru firme, legate de volumul mare al
investiţiilor iniţiale, costuri ascunse semnificative, incertitudini privind adaptabilitatea ei şi
responsabilităţile sporite încredinţate personalului.
Cel de-al doilea acronim, ASP, a devenit cunoscut odată cu tendinţa, din ce în ce mai
accentuată, de externalizare a serviciilor informaţionale, în scopul reducerii costurilor şi
îmbunătăţirii performanţelor acestora. Externalizarea serviciilor informaţionale cuprinde o
paletă largă de posibilităţi, de la externalizarea integrală a lor şi până la externalizarea
dezvoltării unei părţi a sistemului informaţional. Externalizarea serviciilor informaţionale este
astăzi posibilă prin apelarea la furnizorii specializaţi, numiţi ASP (Application Service
Providers). ASP reprezintă o companie care dezvoltă şi furnizează servicii informaţionale
folosite în comun de mai mulţi utilizatori, care plătesc un abonament sau taxe de folosire,
serviciile fiind furnizate dintr-o locaţie centrală prin Internet sau printr-o reţea privată. Un
ASP permite clienţilor săi accesul la un mediu de aplicaţii complet, preocupându-se de
investiţiile necesare în licenţe de aplicaţii, servere, angajaţi şi alte resurse.

3 Fotache D., Hurbean, L. – Soluţii informatice integrate pentru gestiunea afacerilor – ERP, Ed.
Economică, Bucureşti, 2004, p. 16
Noţiuni de bază privind instrumentele software 15

Apelarea la serviciile unor astfel de furnizori oferă numeroase beneficii, dintre care
amintim:
• investiţii iniţiale modeste şi predictibilitatea costurilor, deoarece pentru aceste servicii
se plăteşte o taxă fixă pe principiul “plăteşti pe măsură ce utilizezi”;
• posibilitatea de a fi mereu în pas cu progresele tehnologice;
• posibilitatea închirierii aplicaţiilor scumpe, inaccesibile companiilor mici şi mijlocii
sau a celor cu investiţii iniţiale importante;
• acces la suport tehnic şi consultanţă de specialitate pentru servicii cu înalt nivel
tehnologic;
• obţinerea de aplicaţii funcţionale într-un interval de timp foarte scurt.
În ultimul timp se manifestă tendinţa extinderii serviciilor furnizate, conceptul ASP
fiind înlocuit cu XSP. Spre deosebire de ASP, XSP (X semnifică servicii generice) nu oferă
doar aplicaţii, ci şi tehnologii, sisteme şi procese economice. Actorii de pe această piaţă vor fi
marile companii (de exemplu Microsoft, Oracle, Sun), care sunt capabile să realizeze
investiţii foarte mari pentru crearea infrastructurii necesare oferirii de servicii în reţea bazate
pe Internet. Modelul XSP promite numeroase beneficii: firmele vor putea să cumpere doar
funcţionalitatea pe care o doresc şi atunci când o doresc, reducând astfel investiţiile în
tehnologiile informaţionale; transferul responsabilităţii şi riscurilor menţinerii permanente în
pas cu noile tehnologii; firmele pot activa pe piaţă nu doar pe post de consumator de servicii
ci şi cel de furnizor; uşurinţa modificării proceselor şi a relaţiilor de parteneriat în funcţie de
condiţiile de pe piaţă.
Dincolo de aceste beneficii, unele probleme rămân încă nerezolvate sau, cel puţin,
neclare: securitatea serviciilor informaţionale disponibile pe piaţă; protecţia datelor sensibile
ale clienţilor; posibilitatea furnizării de aplicaţii critice pe web în condiţii de siguranţă sporită;
portabilitatea aplicaţiilor şi interoperabilitatea componentelor sale.
În ce priveşte strict limbajele de programare, reţinem două tendinţe: limbajele
orientate-obiect, limbajele orientate-Internet şi limbajele naturale. Ele nu sunt tocmai noi, însă
în prezent se înregistrează o extindere a utilizării lor, în încercările obsedante de apropiere de
limbajul uman şi de îmbunătăţire a productivităţii muncii programatorilor.
Limabjele orientate-obiect modelează sistemul informaţional sub forma unui set de
obiecte care interacţionează între ele prin schimbul de mesaje. Un obiect integrează datele şi
acţiunile (procedurile) care pot fi executate asupra datelor, numite metode. Astfel, spre
deosebire de limbajele anterioare, datele şi programele de prelucrare a acestora nu mai sunt
separate. Într-o bancă, contul de card al unui client reprezintă un obiect. Numele clientului,
adresa sa, numărul contului, numărul cardului, soldul contului, limita de credit reprezintă
datele, referite şi ca proprietăţi, iar retragerea de numerar, depunerea, transferul bancar,
schimbarea cardului reprezintă acţiuni, numite metode, care descriu comportamentul
obiectului.
Una dintre caracteristicile acestor limbaje se referă la faptul că datele unui obiect sunt
ascunse faţă de alte părţi ale programului, proprietate numită încapsulare. Datele pot fi
manipulate numai din interiorul obiectului, prin intermediul metodelor disponibile. Un alt
obiect sau un utilizator care doreşte să modifice anumite date vor trebui să apeleze una dintre
16 Instrumente software pentru afaceri

metodele obiectului. În acest fel, fiecare obiect reprezintă o unitate independentă de program,
ce poate fi utilizată în diferite moduri fără a fi necesară modificarea programului. Această
caracteristică permite reducerea drastică a timpului şi costului de scriere a programelor, prin
reutilizarea programelor în alte aplicaţii asemănătoare.
Reutilizabilitatea programelor este facilitată de alte două concepte specifice
limbajelor orientate-obiect: clasă şi moştenire. Obiectele cu proprietăţi similare sunt reunite
în aceeaşi clasă. Clasele sunt organizate ierarhic în superclase şi subclase. Moştenirea permite
definirea unei clase de obiecte ca un caz particular al altei clase mai generale, numită
superclasă. O clasă va moşteni proprietăţile şi metodele superclasei, însă va putea modifica
definiţiile acestora sau adăuga proprietăţi şi metode noi. De exemplu, STUDENT poate fi
considerat o clasă în sistemul de evidenţă a studenţilor, iar un anumit student va reprezenta o
instanţă a acestei clase, adică un obiect. Clasa STUDENT poate fi considerată o subclasă a
FIINTA_UMANA, aceasta fiind superclasa. La rândul său, STUDENT poate avea ca subclasă
STUDENT_BURSIER. Această clasă va avea, în plus faţă de student, proprietatea TipBursa.
Oricum, proprietăţile şi metodele clasei STUDENT sunt moştenite de STUDENT_BURSIER.
Un alt mare avantaj al limbajelor orientate-obiect, pe lângă reutilizabilitate, se referă
la faptul sunt mai apropiate de modul în care utilizatorii văd lumea. Se consideră că este mult
mai naturală descrierea realităţii înconjurătoare în termenii claselor de obiecte, cu proprietăţi
şi comportament, decât sub forma unor funcţii de prelucrare şi a datelor, aşa cum cereau
limbajele anterioare.
Limbajele orientate-obiect au apărut în anii ’70, odată cu Smalltalk. Astăzi, cele mai
utilizate limbaje sunt Java şi C#.
Dezvoltarea limbajelor orientate-obiect a determinat apariţia unei alte tehnologii,
numită programarea vizuală. Aceste limbaje dispun de un mediu grafic ce permite
programatorilor să dezvolte aplicaţii prin manipularea directă a unor imagini, în loc de
scrierea de programe. Visual Basic este cel mai cunoscut astfel de limbaj, însă tot aici se
înscriu DELPHI, Power Objects şi Visual C++.
Limbajele de programare orientate-obiect au influenţat şi alte domenii ale sistemelor
informaţionale, astfel că astăzi există metode de analiză şi proiectare orientate-obiect, sisteme
de gestiune a bazelor de date orientate obiect (SGBDOO), instrumente CASE orientate-
obiect.
Limbajele orientate-Internet se referă la tehnologiile care stau la baza dezvoltării
aplicaţiilor Web, cele mai importante fiind limbajele HTML şi XML.
HTML (HyperText Markup Language) reprezintă un limbaj de descriere utilizat
pentru crearea paginilor Web sub forma documentelor hypertext sau hypermedia. El este
derivat din SGML (Standard Generalized Markup Language), o metodă de reprezentare a
limbajelor de formatare a documentelor, ceea ce permite ca la crearea documentelor să se
separe informaţia de modul de prezentare a ei. Aceasta înseamnă că documente care conţin
aceeaşi informaţie pot fi diferite prin modul de prezentare, adică tipul şi mărimea fontului,
spaţierea paragrafelor etc., fără ca informaţia să fie modificată. HTML utilizează instrucţiuni
numite tag-uri, pentru a descrie cum vor fi plasate în document informaţiile de tip text,
grafică, video şi sunet şi pentru a crea legături dinamice (numite şi hiper-legături) către alte
Noţiuni de bază privind instrumentele software 17

documente şi obiecte stocate pe acelaşi calculator sau pe altul. Aceste legături permit
utilizatorului să deschidă un alt document printr-un simplu clic pe un text subliniat sau pe o
imagine.
Popularitatea înregistrată de acest limbaj a determinat principalii furnizori de software
să-l includă în produsele lor. Astăzi, majoritatea procesoarelor de text, programelor de calcul
tabelar, programelor de procesare grafică sau sistemelor de gestiune a bazelor de date oferă
facilităţi pentru generarea automată a documentelor în format HTML. De asemenea, după
cum am văszut în paragraful anterior, au fost puse la dispoziţia utilizatorilor instrumente
software speciale pentru dezvoltarea paginilor Web, fără a fi nevoie să se scrie programe
HTML. Cele mai cunoscute sunt Microsoft FrontPage şi Lotus FastSite.
XML (eXtensible Markup Language) nu este un limbaj de descriere a formatului
unei pagini Web, ci un limbaj de descriere a conţinutului paginilor Web. De exemplu,
informaţiile privind zborurile aeriene de pe pagina Web a unei agenţii de turism vor fi
descrise prin intermediul tag-urilor XML. El este derivat tot din standardul SGML.

Exemple de teste grilă


1. Care dintre următoarele instrumente software se adresează economiştilor, ca utilizator
final informatizat?
a) Programe de calcul tabelar
b) Limbajul Java
c) Produsele de tip CASE
d) Limbajele de ansamblare (numite şi simbolice)

2. Evoluţia limbajelor de programare reflectă progresele înregistrate în privinţa:


a) Eficienţei utilizării resurselor calculatoarelor
b) Productivităţii muncii programatorilor
c) Apropierii de limbajul uman
d) Memorarea datelor
Capitolul 1

NOŢIUNI DE BAZĂ PRIVIND INSTRUMENTELE


SOFTWARE

Sumar:

 Istoricul limbajelor de programare


 Etapele elaborării programelor de aplicaţii şi rolul economiştilor
 Instrumente pentru dezvoltarea aplicaţiilor
 Instrumente software pentru economişti
 Tendinţe în instrumentele software
2 Instrumente software pentru afaceri

1.1 ISTORICUL LIMBAJELOR DE PROGRAMARE

Astăzi, aproape orice activitate dintr-o organizaţie se desfăşoară cu ajutorul


calculatorului. Nevoia de programe de aplicaţii s-a diversificat în permanenţă, iar odată cu ele
şi instrumentele software. Prin instrument software se înţelege un program folosit de
informaticieni sau utilizatori pentru dezvoltarea programelor de aplicaţii.
Istoria instrumentelor software a început odată cu primele calculatoare, la începutul
anilor ’50. De atunci şi până în anii ’80 singura modalitate de dezvoltare a programelor de
aplicaţii era reprezentată de limbajele de programare. Astăzi avem la dispoziţie o multitudine
de alte instrumente software. În afara limbajelor de programare pot fi enumerate sistemele de
gestiune a bazelor de date, programe de calcul tabelar, produsele CASE, programele pentru
gestiunea informaţiilor personale şi multe altele. Multe dintre acestea se adresează
nespecialiştilor în programarea calculatoarelor.
Pentru a înţelege principalele evoluţii şi tendinţe ale instrumentelor software, vom
face cu o scurtă prezentare a istoricului limbajelor de programare.
Limbajele de programare constituie rezultatul unei evoluţii, care a fost determinată
atât de performanţele calculatoarelor electronice, cât şi de progresele din teoria şi practica
programării. Se disting cinci categorii de limbaje de programare: limbaje cod maşină, limbaje
de asamblare, limbaje de nivel înalt, limbaje din generaţia a patra, numite şi limbaje de nivel
foarte înalt şi limbaje naturale.
Fiecare procesor are propriul set de instrucţiuni, care formează aşa numitul limbaj
maşină. În primii ani ai dezvoltării programelor, aceste limbaje constituiau singura variantă la
îndemână. Toate instrucţiunile din program trebuiau să fie redactate în cod binar, adică sub
forma unor şiruri formate din 0 şi 1. De exemplu, o instrucţiune avea forma 0110 1010 0110
1011 şi poate semnifica operaţiunea de adunare. Astfel, programele se concretizau în secvenţe
de cifre binare pentru adrese, date şi operaţii, programatorul cunoscând perfect operaţiunile
interne din unitatea centrală a calculatorului. O simplă funcţie de prelucrare necesita lungi
serii de instrucţiuni pentru a fi realizată.
Dezavantajele acestor limbaje de programare sunt astăzi evidente: dificultatea scrierii
şi, mai ales, a înţelegerii programelor; lipsa portabilităţii programelor, adică imposibilitatea
executării lor pe alte tipuri de calculatoare decât cel pentru care au fost elaborate.
Limbajele de asamblare au permis reducerea dificultăţilor specifice programării în
limbaj maşină, prin folosirea unor abrevieri alfabetice (mnemonice) în locul şirurilor de 0 şi 1.
De exemplu, instrucţiunea „ADD R1, R2, R4” semnifică adunarea valorilor conţinute în
registrele de memorie R1 şi R2, iar rezultatul este scris în registrul R4. După cum se poate
observa, codurile de operaţii şi poziţiile din memorie sunt reprezentate prin simboluri, motiv
pentru care aceste limbaje se mai numesc şi simbolice. Ele simplifică mult programarea,
deoarece abrevierile alfabetice sunt mai uşor de memorat decât instrucţiunile scrise în binar,
oferind mai multă comoditate în scrierea sau citirea şi înţelegerea programelor.
Noţiuni de bază privind instrumentele software 3

Odată scrise, programele în limbajele de ansamblare trebuie traduse în limbajul


maşină, pentru a putea fi executate pe calculator. Această operaţiune este realizată prin
intermediul unor programe speciale numite ansambloare. Ele preiau programele sursă (cele
scrise în limbajul de ansamblare) şi le convertesc în programe obiect executabile (scrise în
limbajul maşină). Operaţiunea de ansamblare este necesară deoarece un calculator ştie să
interpreteze şi să execute doar programele scrise în cod maşină.
Principalele limbaje din această categorie sunt: ASSIRIS, ASSEMBLER, MAGIRIS.
Dincolo de avantajele sale, limbajele de asamblare rămân orientate-maşină, deoarece
comenzile sale corespund instrucţiunilor în limbaj maşină, conform tipului de calculator
utilizat. O singură instrucţiune în limbaj de asamblare corespunde unei singure instrucţiuni în
limbaj maşină şi, ca atare, este nevoie de acelaşi număr de instrucţiuni pentru scrierea
programelor în ambele cazuri. Ca şi programele în cod maşină, programele scrise în limbaj de
asamblare nu pot fi portate de pe un tip de calculator pe altul. Totuşi, ele sunt încă utilizate
astăzi, mai ales de către programatorii care dezvoltă software de sistem, pentru că ele permit
utilizarea mai eficientă a resurselor calculatorului şi sunt mai rapide la execuţie.
În practica programării calculatoarelor, limbajele maşină şi cele de asamblare sunt
considerate limbaje de nivel redus.
O dată cu lansarea limbajului FORTRAN (1954) s-a trecut la o altă generaţie de
limbaje, numite de nivel înalt sau evoluate. Alte limbaje din această categorie sunt: COBOL,
BASIC, C şi C++, ADA, PROLOG.
Limbajele de nivel înalt au fost dezvoltate pentru a creşte productivitatea muncii
programatorilor. Ele sunt mai uşor de asimilat şi de înţeles decât un limbaj de asamblare,
deoarece regulile, normele şi sintaxa sunt mai suple, ceea ce reduce riscul erorilor.
Instrucţiunile în limbajele evoluate, numite enunţuri, se aseamănă mult cu limbajul uman sau
cu convenţiile de scriere în matematică. De fapt, fiecare enunţ constituie o macroinstrucţiune,
adică ea realizează operaţiuni specifice mai multor instrucţiuni în limbajul maşină. Iată câteva
exemple de comenzi întâlnite în limbajele de nivel înalt: COMPUTE, DISPLAY,
SUBSTRACT.
Pentru a fi executat, programul sursă, scris într-un limbaj de nivel înalt, trebuie
convertit în program obiect, scris în limbaj maşină. Această operaţiune poate fi realizată prin
intermediul unor programe speciale, numite interpretoare sau compilatoare. Interpretoarele
tratează programul sursă la nivel de linie de instrucţiuni, fiecare linie fiind executată imediat
ce este convertită în cod obiect. În schimb, compilatoarele realizează conversia întregului
program sursă în program obiect şi după aceea el poate fi executat. Datorită manierei diferite
de lucru, programele interpretate au o viteză de execuţie mai mică decât cele compilate. După
compilare mai trebuie urmată o etapă înainte de a fi executat programul. Este vorba despre
editarea de legături, în care programul obiect este completat cu module preluate din
bibliotecile sistemului de operare.
Principalele avantaje ale limbajelor de nivel înalt sunt:
 Creşterea productivităţii muncii de programare. Instrucţiunile din program
sunt orientate pe activitate şi nu pe calculatorul pe care se va executa
programul, ceea ce uşurează munca programatorilor. Se mai spune că aceste
4 Instrumente software pentru afaceri

limbaje sunt orientate pe problemă. De exemplu, limbajul COBOL a fost


conceput pentru dezvoltarea aplicaţiilor economice, iar FORTRAN pentru
scopuri ştiinţifice sau domeniul matematicii.
 Programele scrise în limbajele de nivel înalt sunt portabile. Prin utilizarea
macroinstrucţiunilor în scrierea programelor sursă şi traducerea lor în limbaj
maşină, cu ajutorul interpretoarelor sau a compilatoarelor, programele vor
putea fi executate pe diferite tipuri de calculatoare. Pentru a fi posibil acest
lucru, fiecare tip de calculator va avea propriul interpretor/ compilator pentru
fiecare limbaj de programare.

Posibilitatea scrierii de programe de către persoane mai puţin calificate
decât în cazul limbajelor de ansamblare. Apropierea macroinstrucţiunilor de
limbajul uman şi orientarea lor pe problema de rezolvat le fac mai uşor de
învăţat.
În schimb, limbajele evoluate sunt mai puţin eficiente decât limbajele de asamblare,
din punctul de vedere al utilizării resurselor calculatorului, şi necesită mai mult timp de
execuţie. Aceste inconveniente n-au putut determina programatorii să nu utilizeze pe scară
largă limbajele de nivel înalt în dezvoltarea aplicaţiilor pentru companii.
Limbajele din generaţia a patra (cunoscute şi sub acronimul 4LG) descriu o mare
varietate de limbaje care sunt mai neprocedurale şi mai conversaţionale decât cele de nivel
înalt. Ele sunt extrem de cunoscute şi utilizate astăzi, dar, în acelaşi timp, dificil de definit,
chiar şi încadrarea lor în categoria „limbaje” fiind discutabilă. Ele pot fi considerate ca
limbaje sofisticate care permit creşterea productivităţii muncii programatorilor, prin
facilităţile de dezvoltare a aplicaţiilor pe care le oferă, sau ca limbaje mai directe şi mai
simple, care permit utilizatorilor să-şi dezvolte propriile aplicaţii informatice.
Totuşi, pot fi identificate câteva caracteristici comune majorităţii limbajelor 4GL1:
 sunt centrate în jurul bazelor de date, în mod deosebit a celor relaţionale,
oferind facilităţi pentru stocarea şi interogarea datelor din bază;
 sunt limbaje declarative, numite şi neprocedurale, ceea ce înseamnă că
accentul este pus pe ceea ce trebuie să facă aplicaţia şi nu cum trebuie să facă.
Acum este posibilă dezvoltarea unor mici aplicaţii informatice fără a mai fi
necesară scrierea de programe. Utilizatorii se rezumă la a indica rezultatele
vizate, de o manieră declarativă, astfel încât calculatorul să poată determina
secvenţa de program necesară pentru obţinerea acestor rezultate. Din acest
motiv, se spune că limbajele din această generaţie au simplificat mult procesul
de programare.
 pun la dispoziţie o interfaţă grafică prietenoasă, bazată pe dialogul interactiv,
cu care utilizatorii pot interacţiona pentru a-şi dezvolta propriile aplicaţii.
Această interfaţă este referită prin acronimul GUI (Graphical User Interface –
Interfaţă grafică utilizator);

1 prelucrare după Curtis, G., Cobham, D. – Business Information Systems. Analysis, Design and Practice, fourth
edition, Prentice Hall, 2002, p. 122
Noţiuni de bază privind instrumentele software 5

 includ limbaje de programare de nivel înalt pentru scrierea de proceduri prin


care să se acopere anumite funcţiuni ale aplicaţiilor care nu pot fi rezolvate prin
instrumentele 4GL;
Apariţia limbajelor 4GL a reprezentat răspunsul la neajunsurile limbajelor de nivel
înalt. Deşi acestea au permis o sporire considerabilă a productivităţii muncii programatorilor,
în comparaţie cu limbajele de ansamblare, ea nu a fost suficientă în condiţiile extinderii rapide
a utilizării microcalculatoarelor din anii ‘80, a creşterii permanente a cerinţelor utilizatorilor şi
a complexităţii aplicaţiilor informatice. De fapt, prin introducerea limbajelor 4GL s-a urmărit
rezolvarea a trei probleme: reducerea costurilor mari cu dezvoltarea programelor, nevoia de
obţinere a programelor în timp cât mai scurt şi creşterea calităţii programelor, mai ales în ce
priveşte includerea cerinţelor funcţionale ale utilizatorilor.
Prin urmare, aceste limbaje prezintă următoarele avantaje:
 posibilitatea dezvoltării de noi aplicaţii mai ieftine şi mai rapid;
 uşurinţa întreţinerii aplicaţiilor;
 posibilitatea utilizatorilor de a-şi dezvolta propriile aplicaţii. Odată cu apariţia
acestor limbaje s-a dezvoltat un nou concept – utilizatorul final
informatizat (end user computing), care face referire la faptul că utilizatorii
cu mai puţine cunoştinţe informatice îşi pot crea şi întreţine singuri propriile
aplicaţii.
În evoluţia limbajelor de programare de până acum, apariţia unei generaţii noi a
determinat renunţarea, în bună măsură, la limbajele din generaţia anterioară, dar nu şi
dispariţia lor. Acum, ne putem întreba dacă apariţia şi dezvoltarea limbajelor 4GL vor avea
acelaşi efect asupra limbajelor de nivel înalt. Răspunsul ferm este nu, atât pentru prezent, cât
şi pentru viitorul imediat. Explicaţiile sunt următoarele:
 aplicaţiile dezvoltate în 4GL sunt mai puţin eficiente decât limbajele de nivel
înalt, din punctul de vedere al utilizării resurselor calculatorului, aspect care
devine mai evident cu cât creşte complexitatea aplicaţiilor sau volumul
datelor de prelucrat. Viteza de execuţie a programelor generate automat de
aceste limbaje, pe baza specificaţiilor utilizatorilor, este mai mică, fapt care se
răsfrânge în timpi de răspuns mai mari, dar şi pretenţii sporite în ce priveşte
puterea de calcul. Unii chiar se întreabă dacă reducerea costurilor şi a
timpului de dezvoltare a aplicaţiilor nu sunt depăşite de costurile suplimentare
cu achiziţia echipamentelor necesare pentru obţinerea de performanţe
echivalente limbajelor din a treia generaţie.
 aplicaţiile complexe solicitate astăzi de firme nu pot fi dezvoltate integral cu
limbajele 4GL. Facilităţile oferite sunt încă limitate, ceea ce impune apelarea
la limbajele de generaţia a treia, mai ales în cazul aplicaţiilor pentru firmele
medii şi mari.
 utilizarea limbajelor 4GL de către utilizatori poate conduce la lipsa
standardizării în dezvoltarea sistemelor informatice la nivelul organizaţiei,
ceea ce poate crea deficienţe în desfăşurarea activităţii angajaţilor.
6 Instrumente software pentru afaceri

Cel mai tipic exemplu de limbaj 4GL este SQL. El îndeplineşte ambele caracteristici
ale acestei generaţii de limbaje: este utilizat de profesionişti, în vederea creşterii
productivităţii muncii lor, dar şi de utilizatorii finali, în scopul dezvoltării propriilor aplicaţii.
SQL este orientat spre dezvoltarea aplicaţiilor cu baze de date relaţionale, fiind inclus de
marea majoritatea a SGBD-urilor, precum ACCESS, Visual FoxPro, Oracle. El oferă facilităţi
pentru crearea, actualizarea şi interogarea bazelor de date
În categoria limbajelor 4GL sunt incluse şi SGBD-ul ACCESS, programele de calcul
tabelar EXCEL şi LOTUS 1-2-3, limbajele de interogare a bazelor de date QBE şi RPG IV,
generatorul de rapoarte Crystal Reports.
Ultimul pas în evoluţia limbajelor de programare îl reprezintă limbajele naturale,
referite uneori şi ca limbaje de programare de generaţia a cincea2. Ele îşi propun utilizarea
limbajului uman în programarea calculatoarelor, cele mai cunoscute exemple fiind
INTELLECT şi ELF. Ele sunt adesea folosite ca interfeţe pentru instrumentele 4GL.
Principalul lor neajuns este legat de translatarea programelor din limbajul natural în
limbaj maşină, o operaţiune extrem de complexă şi costisitoare din punctul de vedere al
resurselor hardware solicitate. Ele sunt integrate cu aplicaţiile de inteligenţă artificială, incluse
şi ele în această generaţie. Un astfel de exemplu îl reprezintă LISP.
Deşi limbajele naturale sunt încă în faza de început a dezvoltării lor, ele reflectă foarte
bine caracteristica principală a evoluţiei limbajelor de programare – apropierea de limbajul
uman. Această caracteristică, precum şi altele sunt evidenţiate figura 1.1.
Generatia
I II III IV V
Caracteristici Limbaj Limbaj de Limbaj de Limbaj Limbaj
masina ansamblare nivel înalt neprocedural natural
Apropierea de
limbajul uman Progres

Productivitate
Progres

Eficienta
utilizarii Diminuare
resurselor
Portabilitate Nu Nu Da Da Da
Utilizarea de Nu Nu Da Da Da
macroinstructiuni
Utilizarea Nu Da Da Da Da
simbolurilor

Figura 1.1 Caracteristicile evoluţiei limbajelor de programare


Sursa: adaptare după Turban, E., McLean, E., Wetherbe, J. – Information Technology for Management, John
Wiley&Sons, 2001, p. 735

2 unii autori includ limbajele naturale tot în categoria 4GL. Vezi O’Brien, J.A. – Introduction ti Information
Systems. Essentials for the Internetworked E-Business Enterprise, McGraw-Hill, 2001, p.158
Noţiuni de bază privind instrumentele software 7

1.2 ETAPELE ELABORĂRII PROGRAMELOR DE APLICAŢII ŞI


ROLUL ECONOMIŞTILOR
Dezvoltarea programelor de aplicaţii (sau a sistemelor informaţionale) nu se limitează
la scrierea programelor, ci presupune parcurgerea unui proces mai amplu, format din mai
multe etape. Ansamblul tuturor acestor etape formează ciclul de viaţă al programelor de
aplicaţii. Astăzi există numeroase metodologii de dezvoltare a programelor, ce diferă între ele
prin numărul etapelor, conţinutul şi organizarea lor. În acest paragraf dorim să descriem
succint etapele comune majorităţii metodologiilor şi să punem în evidenţă rolul economiştilor
de-a lungul procesului de dezvoltare.
Procesul de dezvoltare începe cu etapa de microanaliză. Această etapă are drept ţintă
definirea clară a problemei sau oportunităţii ivite, precum şi a scopului urmărit, în sensul că
trebuie să se înţeleagă ce se întâmplă la nivelul firmei, ce obiective are firma şi cum noua
aplicaţie poate conduce la atingerea lor. Este important să se identifice exact care sunt
avantajele pe care le aduce noua aplicaţie, ce activităţi economice sprijină şi ce probleme pot
fi rezolvate cu ajutorul ei. Printre motivele de iniţiere a dezvoltării unei noi aplicaţii putem
enumera: modernizarea sistemului informaţional în vederea valorificării avantajelor oferite de
noile tehnologii informaţionale; modificarea legislaţiei; ineficienţa unor activităţi derulate în
cadrul firmei, datorată slabei integrări a sistemului informaţional; aplicaţiile existente nu mai
fac faţă cerinţelor, datorită extinderii activităţii firmei; sprijinirea realizării obiectivelor
strategice.
La finalul acestei etape se elaborează un plan de dezvoltare, care este supus spre analiză
conducerii. Dacă se obţine aprobarea, proiectul poate fi iniţiat, în sensul că vor fi alocate
fondurile şi resursele necesare şi se va organiza echipa de dezvoltare.
Cel mai adesea, economiştii sunt cei care iniţiază dezvoltarea de noi aplicaţii. Chiar
dacă iniţiativa aparţine altor categorii de personal, rolul economiştilor rămâne important,
deoarece ei trebuie să elaboreze planul de dezvoltare, în care se face o estimare a cheltuielilor
şi beneficiilor potenţiale ale aplicaţiei propuse.
După iniţierea proiectului de dezvoltare a noului program de aplicaţie, se merge mai
departe cu etapa de analiză, prin care se urmăreşte identificarea şi descrierea cerinţelor
funcţionale şi informaţionale. La sfârşitul ei trebuie să fie foarte clar ce funcţii va realiza noua
aplicaţie. Astfel, în această etapă sunt urmărite trei obiective principale:
 descrierea sistemului informaţional existent, fiind analizate documentele
primare, fluxurile de informaţii din sistem, prelucrările şi rapoartele;
 identificarea şi definirea cerinţelor pentru noua aplicaţie;
 documentarea detaliată a tuturor cerinţelor, funcţionale şi nefuncţionale.
Analiza sistemului este o activitate esenţială în aflarea situaţiei existente şi a ceea ce se
doreşte în viitor. Informaţiile privind sistemul curent şi cerinţele pentru noul sistem se pot
obţine prin intermediul mai multor tehnici, cum ar fi: observarea a ceea ce fac utilizatorii,
intervievarea lor sau sondarea pe bază de chestionare, analiza documentelor şi a procedurilor
de lucru, a regulilor economice şi a responsabilităţilor fiecărui loc de muncă care este
8 Instrumente software pentru afaceri

influenţat sau influenţează funcţionarea sistemului, a documentaţiei sistemul informatic


existent.
Dar nu este suficientă simpla culegere a informaţiilor. Analiştii trebuie să le
revizuiască, să le analizeze şi să le structureze astfel încât cerinţele noii aplicaţii să fie uşor
înţelese de către cei care se vor ocupa de proiectarea şi scrierea programelor. Cerinţele pot
transpuse sub formă grafică, cu ajutorul diferitelor instrumente.
În finalul etapei de analiză, se pregăteşte o documentaţie necesară proiectării, prin care
sunt surprinse toate aspectele privind modul de funcţionare a sistemului curent, căror nevoi şi
cerinţe trebuie să răspundă noua aplicaţie, ce funcţii trebuie să cuprindă şi ce obiective trebuie
să sprijine.
În această etapă, economiştii joacă un rol covârşitor. Ei sunt cei care trebuie să descrie
documentele primare, prelucrările realizate în sistem, procedurile de control, modalităţile de
obţinere a informaţiilor şi prezentare a lor în rapoarte. Informaticienii nu au cum să înţeleagă
mecanismele economice desfăşurate în cadril firmei. Provocarea majoră în rândul
economiştilor constă în structurarea tuturor informaţiilor despre sistem într-o formă care să
faciliteze comunicarea cu informaticienii. De aceea, ei trebuie să stăpânească instrumentele
grafice de reprezentare a sistemului.
În etapa de proiectare logică se urmăreşte dezvoltarea arhitecturii aplicaţiei, pregătirea
specificaţiilor de proiectare a interfeţelor utilizator şi a bazei de date, a controalelor şi
procedurilor de realizare a copiilor de siguranţă, a programelor, independent de platformele pe
care urmează să fie implementată aplicaţia. Aceste activităţi se bazează pe utilizarea
informaţiilor culese şi a modelelor create în timpul analizei.
Proiectarea logică se derulează prin intermediul a trei paşi sau subfaze:
 proiectarea formularelor/ formatelor (pentru culegerea datelor) şi a rapoartelor;
 proiectarea interfeţelor şi a dialogurilor, pentru evidenţierea modului de comunicare
a utilizatorului cu programele şi echipamentele;
 proiectarea logică a bazelor de date, prin care este concepută schema relaţională a
bazei de date, sub forma unui ansamblu de tabele normalizate între care există
legături.
Şi în această etapă economiştii pot juca un rol important. Înţelegerea corectă a modului
de funcţionare a sistemului informaţional este crucială în proiectarea interfeţelor utilizator, a
documentelor şi rapoartelor, chiar şi a bazei de date. Însă, pentru a face faţă acestor sarcini,
economistul trebuie să deţină cunoştinţe suplimentare de informatică, precum: modelul
relaţional şi normalizarea bazelor de date, tipurile de obiecte regăsite în formularele, limbajul
SQL.
După parcurgerea etapei de proiectare logică se trece la o nouă etapă, proiectarea
fizică. Această etapă are un caracter preponderent tehnic, fiind orientată spre platformele pe
Noţiuni de bază privind instrumentele software 9

care va fi implementată aplicaţia. Ca atare, şi specificaţiile acestei etape vor avea un pronunţat
caracter tehnic, economiştii intervenind rareori în derularea acestor activităţi.
Două dintre activităţile importante ale acestei etape privesc proiectarea fizică a bazei de
date şi proiectarea modulelor de program. De exemplu, la proiectarea fizică a bazei de date se
vor lua în considerare facilităţile de stocare şi accesare a datelor din SGBD-ul ales, precum
tipul de organizare a fişierelor şi utilizarea indecşilor.
După finalizarea proiectării, se trece la etapa de implementare, în timpul căreia
sistemul este construit, testat şi instalat. Obiectivul activităţilor specifice nu este numai de
asigurare a funcţionării aplicaţiei, în concordanţă cu nevoile identificate, ci şi a faptului că
utilizatorii sunt instruiţi astfel încât firma să beneficieze de rezultatele prevăzute prin
exploatarea corespunzătoare a acesteia. Principalele activităţi care se desfăşoară în cadrul
etapei sunt:
 scrierea şi testarea programelor;
 construirea bazei de date;
 conversia datelor din vechea aplicaţie în formatul cerut de noua aplicaţie;
 instalarea aplicaţiei pe calculatoare;
 instruirea utilizatorilor pentru oferirea tuturor explicaţiilor şi cunoştinţelor necesare
exploatării aplicaţiei la parametrii la care a fost proiectat;
 elaborarea documentaţiei aplicaţiei şi a manualelor de utilizare, exploatare şi
întreţinere.
La finalul acestei etape, programul de aplicaţie se poate considera a fi funcţional, şi se
trece la etapa de exploatare şi întreţinere. În această etapă el trebuie supus revizuirilor
periodice pentru a se asigura întreţinerea acestuia, fie pentru corectarea eventualelor erori
apărute în exploatarea lui, fie pentru îmbunătăţirea caracteristicilor sau funcţiilor, ca răspuns
la modificarea unor cerinţe organizaţionale. Această etapă este, de obicei, cea mai
costisitoare, având în vedere că timpul pe care şi-l petrec specialiştii din departamentele
informatice reprezintă cam 48-60% din totalul timpului alocat pentru dezvoltarea sistemului.

1.3 INSTRUMENTE PENTRU DEZVOLTAREA APLICAŢIILOR


Enumerarea şi descrierea instrumentelor software poate porni de la cele trei
componente ale programelor de aplicaţii:
 interfaţa utilizator, adică o serie de componente (formulare pentru introducerea
datelor, ferestre de dialog, meniuri, rapoarte) cu ajutorul cărora utilizatorul să
poată iniţia diferite operaţiuni de culegere a datelor, prelucrare şi obţinere a
informaţiilor solicitate;
 modulele de program, care realizează prelucrările din sistem, cum ar fi calculul
salariilor, întocmirea graficelor de rambursare etc.;
 baza de date, în care sunt organizate şi stocate toate datele necesare aplicaţiei.
Pentru dezvoltarea acestor componente se apelează la instrumente diferite, pe care
încercăm să le prezentăm în continuare.
10 Instrumente software pentru afaceri

Mediile de programare sunt seturi de programe care includ următoarele funcţii:


introducerea şi editarea programului sursă, instrumente pentru transformarea programului
sursă în programe executabile sau biblioteci de funcţii şi instrumente pentru depanarea
programelor. Într-un mediu de dezvoltare se pot folosi unul sau mai multe limbaje de
programare. Exemple de medii de programare sunt: MS Visual Studio, Oracle JDeveloper,
Oracle PowerObjects, Java, Borland Jbuilder, Borland Delphi, IBM Visual Age, Sybase
PowerBuilder. În MS Visual Studio pot fi folosite mai multe limbaje de programare, cum ar
fi: Visual Basic, C# sau C++.
Mediile de programare contribuie la realizarea în cadrul unei aplicaţii nu doar a
modulelor de programe pentru prelucrarea datelor, ci şi a interfeţei utilizator şi a legăturii cu
bazele de date.
Pentru stocarea şi gestionarea volumelor mari de date se apelează sistemele de
gestiune a bazelor de date. Astăzi marea majoritate a aplicaţiilor stochează datele în baze de
date. Bazele de date cel mai des întâlnite sunt cele organizate după modelul relaţional: Oracle,
DB2 produs de IBM, Sybase SQL Server, MS SQL Server, MS Access, MS Visual FoxPro.
În condiţiile globalizării afacerilor şi a dezvoltării reţelelor de calculatoare se simte
din ce în ce mai mult nevoia distribuirii resurselor informaţionale ale companiei, respectiv
date şi/ sau programe, pe mai multe calculatoare. Dezvoltarea unei aplicaţii distribuite impune
apelarea la arhitectura client – server, care presupune conceperea aplicaţiei în termenii a două
categorii de componente: componente client, care solicită anumite servicii şi componente
server, care furnizează servicii. Cele două categorii de componente vor fi rezidente pe două
sau mai multe calculatoare.
Comunicarea între două componente aflate pe calculatoare diferite sau mascarea
eterogenităţii platformelor hardware şi software sunt rezolvate prin intermediul soluţiilor
middleware. Ele sunt un set de programe care nu au doar rolul de a ascunde natura eterogenă
a echipamentelor, sistemelor de operare sau a limbajelor de programare folosite în sistem, ci
şi de a oferi un mediu de programare mai comod. Cele mai cunoscute modele midleware sunt
RPC (Remote Procedure Call), RMI (Remote Method Invocation), ODBC (Open Database
Connectivity) şi CORBA (Common Object Request Broker Architecture).
Indiferent de arhitectura software dorită, în cazul în care firma nu dispune de resurse
financiare care să permită achiziţionarea unor produse program necesare, se poate apela la
soluţia soluţii freeware. Aşa cum există aplicaţii financiar-contabile gratuite (de exemplu
SAGA), tot aşa există instrumente de dezvoltare software gratuite. Cel mai răspândit limbaj
de programare folosit în medii de programare gratuite este Java. Un SGBD gratuit, care
reuşeşte să ajungă la un nivel de complexitate a prelucrării datelor comparabil cu cel al celor
mai bine vândute SGBD-uri este PostgreSQL. Spre deosebire de alte SGBD-uri gratuite
(MySQL), PostgreSQL este capabil să rezolve interogări complexe adresate bazelor de date
pe care le gestionează. La capitolul SGBD-uri gratuite începe să concureze şi unul dintre cele
mai performante SGBD-uri relaţionale din lume, Oracle, prin lansarea versiunii Oracle
Database 10g Express Edition.
Dezvoltarea aplicaţiilor Web presupune folosirea unor platforme diferite de mediile
de programare specificate anterior. Pentru realizarea rapidă a unor site-uri Web se poate apela
Noţiuni de bază privind instrumentele software 11

la programul MS FrontPage. Uşurinţa în utilizarea acestui instrument software este dată de


asemănarea interfeţei sale cu interfeţele programelor din cadrul MS Office, de faptul că
utilizatorul nu este nevoit să înveţe limbajul HTML şi de folosirea unor şabloane.
Site-urile Web capătă o scalabilitate şi o dinamică deosebită atunci când folosesc baze
de date în care îşi salvează o parte din conţinut. Trecerea la site-uri mai complexe nu
presupune doar folosirea resurselor unei baze de date, ci şi elemente grafice care să atragă
atenţia utilizatorului. Ca exemple de instrumente pentru construirea site-urilor Web complexe
putem aminti Dreamweaver, ColdFusion, Flash şi RoboDemo. Aplicaţiile Web pot conţine
elemente de limbaj împrumutate din mediile de programare tradiţionale, cum ar fi VB Scripts
sau Java Scripts.

1.4 INSTRUMENTE SOFTWARE PENTRU ECONOMIŞTI


Economiştilor li se oferă astăzi o serie de instrumente software cu ajutorul cărora pot
să-şi dezvolte propriile aplicaţii informatice, e drept, de complexitate mai redusă. În acest
paragraf dorim să trecem în revistă astfel de instrumente, cu referire la cele utilizate în
dezvoltarea aplicaţiilor economice. În acest sens, dorim să reţinem atenţia asupra
instrumentelor CASE, programelor de calcul tabelar, sistemelor de gestiune a bazelor de date
(SGBD), instrumentelor pentru crearea de pagini Web şi a celor pentru organizarea
informaţiilor personale.
CASE (Computer Aidded Software Engineering) reprezintă un instrument pentru
automatizarea procesului de dezvoltare a programelor. El permite realizarea rapidă a unor
programe de calitate, prin sprijinul care-l oferă tuturor activităţilor de dezvoltare, de la
planificarea sistemelor informaţionale până la generarea automată şi testarea programelor.
CASE se bazează pe instrumente grafice şi simple, orientate spre utilizatorii fără prea
multe cunoştinţe tehnice, fapt ce permite implicarea lor activă în procesul de dezvoltare a
programelor. Economiştii au posibilitatea de a realiza variate sarcini, precum:
 planificarea resurselor financiare alocate proiectelor de sisteme informaţionale,
 redactarea cerinţelor funcţionale ale aplicaţiei,
 participarea activă la întocmirea specificaţiilor de proiectare a programelor,
 generarea automată a programelor sau a bazei de date fără a avea cunoştinţe
tehnice privind limbajul de programare sau SGBD-ul folosite,
 testarea programelor,
 generarea automată a documentaţiei pentru aplicaţia dezvoltată.
Implicarea directă a economiştilor în procesul de dezvoltare va determina sporirea
şanselor de reuşită datorită calităţii mai bune a programelor dar şi creşterii probabilităţii de
acceptare de către ei a noilor programe. Cele mai cunoscute instrumente CASE sunt Oracle
Designer şi Visible Analyst.
SGBD-urile sunt, fără îndoială, cele mai populare instrumente software în
dezvoltarea aplicaţiilor economice. Datorită acestui fapt, furnizorii au pus la dispoziţia
utilizatorilor nespecializaţi astfel de produse, cele mai utilizate fiind ACCESS, Visual FoxPro,
12 Instrumente software pentru afaceri

Corel Paradox sau Lotus Approach. Prin instrumentele grafice furnizate, ele se disting de
produsele destinate profesioniştilor, precum Oracle. Apelând la un astfel de produs,
utilizatorii vor fi în măsură să dezvolte aplicaţii de complexitate relativ redusă, fără a avea
cunoştinţe de specialitate.
Principalele facilităţi oferite de aceste SGBD-uri sunt:
 Crearea şi actualizarea bazei de date. Utilizatorii pot defini structura datelor,
sub forma tabelelor şi a relaţiilor dintre acestea, dar şi aspectele de
comportament a datelor, sub forma restricţiilor de integritate. De asemenea, ei
pot adăuga, modifica sau şterge date fie prin intermediul unor ferestre, fie
apelând la comenzile limbajului SQL.
 Interogarea bazei de date. Accesarea datelor din bază se poate face prin
intermediul unor facilităţi grafice de interogare, dar şi prin utilizarea frazei
SELECT SQL.
 Dezvoltarea de aplicaţii. Utilizatorii au la dispoziţie o serie de instrumente prin
care pot crea formulare pentru introducerea datelor în bază, rapoarte pentru
extragerea datelor şi prezentarea informaţiilor într-o formă plăcută, meniuri
pentru exploatarea mai uşoară a aplicaţiei, pagini Web. Prin integrarea lor se pot
obţine aplicaţii destul de complexe.
Programele de calcul tabelar, precum EXCEL, LOTUS 1-2-3, QuatroPro au
reprezentat prima categorie de instrumente software destinate utilizatorilor neinformaticieni.
Ele pot fi utilizate de economişti în activităţile de planificare şi elaborarea bugetelor, în
analize complexe privind activitatea firmei, în procesul decizional etc. Aceste programe sunt
considerate instrumente elementare de asistare a procesului decizional.
Programele de calcul tabelar organizează datele în centralizatoare formate din linii şi
coloane, la intersecţia cărora se găsesc căsuţe în care pot fi introduse date numerice şi de tip
text, precum şi formule complexe de calcul. De asemenea, în centralizatoare pot fi create şi
afişate grafice. În momentul introducerii datelor în centralizatoare, calculele din căsuţele cu
formule sunt efectuate automat, iar rezultatele sunt afişate imediat.
Principalele facilităţi de lucru sunt:
 o gamă largă de funcţii predefinite, cum sunt cele financiare, statistice,
matematice etc., pe care utilizatorii le pot folosi în elaborarea unor modele de
calcul complexe;
 reprezentarea grafică a datelor din centralizatoare;
 regăsirea uşoară a datelor din centralizatoare;
 posibilitatea realizării de operaţii specifice bazelor de date, precum extragerea
datelor în funcţie de anumite criterii, ordonarea datelor, adăugarea,
modificarea şi ştergerea de date etc.
 efectuarea de analize de tip „What-if” („Ce se întâmplă dacă”). De exemplu,
putem găsi răspunsul la întrebarea „Ce se întâmplă cu cota de piaţă dacă vom
creşte cheltuielile de promovare cu 10%?” Pentru a afla răspunsul la această
întrebare, este suficient să introducem într-un centralizator relaţia de calcul şi
Noţiuni de bază privind instrumentele software 13

datele privind factorii de influenţă. Simularea poate continua prin


considerarea a unui procent de 15%.
 automatizarea unor sarcini de lucru repetitive, prin crearea de macro-
programe.
Programele pentru gestiunea informaţiilor personale au rolul de a ajuta utilizatorii
în stocarea, organizarea şi extragerea informaţiilor privind clienţii, diferite activităţi, întâlniri,
şedinţe etc. De exemplu, informaţiile pot fi extrase şi prezentate sub forma unui calendar
electronic, o listă de întâlniri sau o planificare în timp a activităţilor unui proiect. Cele mai
cunoscute astfel de programe sunt Lotus Organizer şi Microsoft Outlook.
Furnizorii de software destinate nespecialiştilor oferă astăzi pachete integrate de
programe sub forma unor suite de programe. Astfel de pachete includ diferite instrumente
software care sprijină utilizatorii în creşterea productivităţii muncii lor. De regulă, într-o suită
se regăsesc un SGBD, un program de calcul tabelar şi un program pentru gestiunea
informaţiilor personale, la care se adaugă un procesor de texte şi unul pentru grafică. În
funcţie de furnizor, suitele pot include şi alte programe. Cele mai cunoscute suite, precum şi
câteva dintre componentele lor sunt prezentate în tabelul 1.1.
Tabelul 1.1 Principalele suite de programe şi componentele lor
Pachete (suite) Microsoft Lotus Corel WordPerfect
Ofice SmartSuite Office
Calcul tabelar Excel Lotus 1-2-3 QuatroPro
SGBD Access Approach Paradox
Gestiunea informaţiilor Outlook Organizer Corel Central
personale
Avantajele principalele ale suitelor de programe constau în costul mai redus faţă de
cumpărarea individuală a fiecărui produs inclus, oferirea unei interfeţe grafice uniforme, adică
aceleaşi ferestre, meniuri, butoane, linii de stare etc., ceea ce le face mai uşor de învăţat şi, nu
în ultimul rând, posibilitatea integrării aplicaţiilor dezvoltate cu instrumente software diferite.
De exemplu, datele din baza de date pot fi uşor exportate într-o aplicaţie dezvoltată în
programul de calcul tabelar. În schimb, ele sunt criticate pentru faptul că sunt prea mari şi
ocupă prea mult spaţiu pe calculator, mai ales că unele componente nu sunt folosite niciodată
de cei mai mulţi utilizatori.

1.5 TENDINŢE ÎN INSTRUMENTELE SOFTWARE


Progresele extrem de rapide înregistrate în ultimii ani în domeniul tehnologiilor
informaţionale şi de comunicaţii îşi pun amprenta şi asupra aplicaţiilor informatice economice
şi a instrumentelor software pentru dezvoltarea acestora. Desprinderea unor tendinţe în
evoluţia instrumentelor software este o încercare dificilă datorită numeroasele evoluţii
înregistrate în prezent, unele contradictorii.
Ca o tendinţă mai generală în ce priveşte dezvoltarea aplicaţiilor informatice, se
observă predilecţia companiilor către achiziţia programelor de aplicaţii de la furnizorii
specializaţi, în detrimentul dezvoltării lor în cadrul campaniei, cu forţe proprii sau prin
14 Instrumente software pentru afaceri

angajarea de specialişti. În acest context, două acronime au devenit extrem de populare: ERP
şi ASP.
La mijlocul anilor ’90, multe organizaţii au conştientizat că nu mai pot rezista pe piaţă
dacă vor continua să utilizeze vechile sisteme informatice neintegrate. Nevoii de integrare i-
au răspuns sistemele ERP (Enterprise Resource Planning). ERP reprezintă o mega-aplicaţie
multi-modulară care integrează procesele economice şi optimizează resursele disponibile ale
organizaţiei, reunind toate funcţiunile sale într-o singură soluţie software. ERP elimină
barierele departamentale, prin integrarea tuturor sistemelor informaţionale tranzacţionale într-
o singură bază de date, accesibilă oricui din organizaţie3. Nu în ultimul rând, se urmăreşte
eliminarea graniţelor organizaţiei cu partenerii săi de afaceri. Două aplicaţii, adesea incluse în
soluţiile ERP, stau drept mărturie: CRM (Customer Relationship Management), centrată pe
gestiunea relaţiilor cu clienţii, şi SCM (Supply Chain Management), orientată spre
gestiunea relaţiilor cu furnizorii.
ERP nu realizează doar integrarea funcţională, ci şi pe cea tehnologică. Sub egida sa
sunt reunite diverse tehnologii, precum: groupware, EDI (Electronic Data Interchange),
Internet, Intranet, data warehouse (depozite de date) etc.
Principalele avantaje obţinute prin apelarea la soluţiile ERP constau în: reducerea
costurilor producţiei şi a stocurilor, planificarea integrală a resurselor întreprinderii,
îmbunătăţirea productivităţii globale, maximizarea profitului prin flexibilitate şi reactivitate
sporită la cerinţele pieţei. Aceste avantaje nu derivă doar din integrarea funcţională şi
tehnologică, ci şi ca urmare a expertizei de care sunt însoţite soluţiile ERP. Furnizorii de
astfel de sisteme desfăşoară ample activităţi de cercetare pentru a găsi cele mai bune practici
în diferite domenii de afaceri.
Dincolo de aceste avantaje, apelarea pe scară largă la soluţiile ERP este deocamdată
limitată, situaţie explicabilă prin trei mari neajunsuri: preţul exorbitant de mare, timpul
îndelungat de implementare şi adaptabilitatea redusă la condiţiile particulare din firmă.
Soluţiile ERP implică riscuri destul de mari pentru firme, legate de volumul mare al
investiţiilor iniţiale, costuri ascunse semnificative, incertitudini privind adaptabilitatea ei şi
responsabilităţile sporite încredinţate personalului.
Cel de-al doilea acronim, ASP, a devenit cunoscut odată cu tendinţa, din ce în ce mai
accentuată, de externalizare a serviciilor informaţionale, în scopul reducerii costurilor şi
îmbunătăţirii performanţelor acestora. Externalizarea serviciilor informaţionale cuprinde o
paletă largă de posibilităţi, de la externalizarea integrală a lor şi până la externalizarea
dezvoltării unei părţi a sistemului informaţional. Externalizarea serviciilor informaţionale este
astăzi posibilă prin apelarea la furnizorii specializaţi, numiţi ASP (Application Service
Providers). ASP reprezintă o companie care dezvoltă şi furnizează servicii informaţionale
folosite în comun de mai mulţi utilizatori, care plătesc un abonament sau taxe de folosire,
serviciile fiind furnizate dintr-o locaţie centrală prin Internet sau printr-o reţea privată. Un
ASP permite clienţilor săi accesul la un mediu de aplicaţii complet, preocupându-se de
investiţiile necesare în licenţe de aplicaţii, servere, angajaţi şi alte resurse.

3 Fotache D., Hurbean, L. – Soluţii informatice integrate pentru gestiunea afacerilor – ERP, Ed.
Economică, Bucureşti, 2004, p. 16
Noţiuni de bază privind instrumentele software 15

Apelarea la serviciile unor astfel de furnizori oferă numeroase beneficii, dintre care
amintim:
 investiţii iniţiale modeste şi predictibilitatea costurilor, deoarece pentru aceste servicii
se plăteşte o taxă fixă pe principiul “plăteşti pe măsură ce utilizezi”;
 posibilitatea de a fi mereu în pas cu progresele tehnologice;
 posibilitatea închirierii aplicaţiilor scumpe, inaccesibile companiilor mici şi mijlocii
sau a celor cu investiţii iniţiale importante;
 acces la suport tehnic şi consultanţă de specialitate pentru servicii cu înalt nivel
tehnologic;
 obţinerea de aplicaţii funcţionale într-un interval de timp foarte scurt.
În ultimul timp se manifestă tendinţa extinderii serviciilor furnizate, conceptul ASP
fiind înlocuit cu XSP. Spre deosebire de ASP, XSP (X semnifică servicii generice) nu oferă
doar aplicaţii, ci şi tehnologii, sisteme şi procese economice. Actorii de pe această piaţă vor fi
marile companii (de exemplu Microsoft, Oracle, Sun), care sunt capabile să realizeze
investiţii foarte mari pentru crearea infrastructurii necesare oferirii de servicii în reţea bazate
pe Internet. Modelul XSP promite numeroase beneficii: firmele vor putea să cumpere doar
funcţionalitatea pe care o doresc şi atunci când o doresc, reducând astfel investiţiile în
tehnologiile informaţionale; transferul responsabilităţii şi riscurilor menţinerii permanente în
pas cu noile tehnologii; firmele pot activa pe piaţă nu doar pe post de consumator de servicii
ci şi cel de furnizor; uşurinţa modificării proceselor şi a relaţiilor de parteneriat în funcţie de
condiţiile de pe piaţă.
Dincolo de aceste beneficii, unele probleme rămân încă nerezolvate sau, cel puţin,
neclare: securitatea serviciilor informaţionale disponibile pe piaţă; protecţia datelor sensibile
ale clienţilor; posibilitatea furnizării de aplicaţii critice pe web în condiţii de siguranţă sporită;
portabilitatea aplicaţiilor şi interoperabilitatea componentelor sale.
În ce priveşte strict limbajele de programare, reţinem două tendinţe: limbajele
orientate-obiect, limbajele orientate-Internet şi limbajele naturale. Ele nu sunt tocmai noi, însă
în prezent se înregistrează o extindere a utilizării lor, în încercările obsedante de apropiere de
limbajul uman şi de îmbunătăţire a productivităţii muncii programatorilor.
Limabjele orientate-obiect modelează sistemul informaţional sub forma unui set de
obiecte care interacţionează între ele prin schimbul de mesaje. Un obiect integrează datele şi
acţiunile (procedurile) care pot fi executate asupra datelor, numite metode. Astfel, spre
deosebire de limbajele anterioare, datele şi programele de prelucrare a acestora nu mai sunt
separate. Într-o bancă, contul de card al unui client reprezintă un obiect. Numele clientului,
adresa sa, numărul contului, numărul cardului, soldul contului, limita de credit reprezintă
datele, referite şi ca proprietăţi, iar retragerea de numerar, depunerea, transferul bancar,
schimbarea cardului reprezintă acţiuni, numite metode, care descriu comportamentul
obiectului.
Una dintre caracteristicile acestor limbaje se referă la faptul că datele unui obiect sunt
ascunse faţă de alte părţi ale programului, proprietate numită încapsulare. Datele pot fi
manipulate numai din interiorul obiectului, prin intermediul metodelor disponibile. Un alt
obiect sau un utilizator care doreşte să modifice anumite date vor trebui să apeleze una dintre
16 Instrumente software pentru afaceri

metodele obiectului. În acest fel, fiecare obiect reprezintă o unitate independentă de program,
ce poate fi utilizată în diferite moduri fără a fi necesară modificarea programului. Această
caracteristică permite reducerea drastică a timpului şi costului de scriere a programelor, prin
reutilizarea programelor în alte aplicaţii asemănătoare.
Reutilizabilitatea programelor este facilitată de alte două concepte specifice
limbajelor orientate-obiect: clasă şi moştenire. Obiectele cu proprietăţi similare sunt reunite
în aceeaşi clasă. Clasele sunt organizate ierarhic în superclase şi subclase. Moştenirea permite
definirea unei clase de obiecte ca un caz particular al altei clase mai generale, numită
superclasă. O clasă va moşteni proprietăţile şi metodele superclasei, însă va putea modifica
definiţiile acestora sau adăuga proprietăţi şi metode noi. De exemplu, STUDENT poate fi
considerat o clasă în sistemul de evidenţă a studenţilor, iar un anumit student va reprezenta o
instanţă a acestei clase, adică un obiect. Clasa STUDENT poate fi considerată o subclasă a
FIINTA_UMANA, aceasta fiind superclasa. La rândul său, STUDENT poate avea ca subclasă
STUDENT_BURSIER. Această clasă va avea, în plus faţă de student, proprietatea TipBursa.
Oricum, proprietăţile şi metodele clasei STUDENT sunt moştenite de STUDENT_BURSIER.
Un alt mare avantaj al limbajelor orientate-obiect, pe lângă reutilizabilitate, se referă
la faptul sunt mai apropiate de modul în care utilizatorii văd lumea. Se consideră că este mult
mai naturală descrierea realităţii înconjurătoare în termenii claselor de obiecte, cu proprietăţi
şi comportament, decât sub forma unor funcţii de prelucrare şi a datelor, aşa cum cereau
limbajele anterioare.
Limbajele orientate-obiect au apărut în anii ’70, odată cu Smalltalk. Astăzi, cele mai
utilizate limbaje sunt Java şi C#.
Dezvoltarea limbajelor orientate-obiect a determinat apariţia unei alte tehnologii,
numită programarea vizuală. Aceste limbaje dispun de un mediu grafic ce permite
programatorilor să dezvolte aplicaţii prin manipularea directă a unor imagini, în loc de
scrierea de programe. Visual Basic este cel mai cunoscut astfel de limbaj, însă tot aici se
înscriu DELPHI, Power Objects şi Visual C++.
Limbajele de programare orientate-obiect au influenţat şi alte domenii ale sistemelor
informaţionale, astfel că astăzi există metode de analiză şi proiectare orientate-obiect, sisteme
de gestiune a bazelor de date orientate obiect (SGBDOO), instrumente CASE orientate-
obiect.
Limbajele orientate-Internet se referă la tehnologiile care stau la baza dezvoltării
aplicaţiilor Web, cele mai importante fiind limbajele HTML şi XML.
HTML (HyperText Markup Language) reprezintă un limbaj de descriere utilizat
pentru crearea paginilor Web sub forma documentelor hypertext sau hypermedia. El este
derivat din SGML (Standard Generalized Markup Language), o metodă de reprezentare a
limbajelor de formatare a documentelor, ceea ce permite ca la crearea documentelor să se
separe informaţia de modul de prezentare a ei. Aceasta înseamnă că documente care conţin
aceeaşi informaţie pot fi diferite prin modul de prezentare, adică tipul şi mărimea fontului,
spaţierea paragrafelor etc., fără ca informaţia să fie modificată. HTML utilizează instrucţiuni
numite tag-uri, pentru a descrie cum vor fi plasate în document informaţiile de tip text,
grafică, video şi sunet şi pentru a crea legături dinamice (numite şi hiper-legături) către alte
Noţiuni de bază privind instrumentele software 17

documente şi obiecte stocate pe acelaşi calculator sau pe altul. Aceste legături permit
utilizatorului să deschidă un alt document printr-un simplu clic pe un text subliniat sau pe o
imagine.
Popularitatea înregistrată de acest limbaj a determinat principalii furnizori de software
să-l includă în produsele lor. Astăzi, majoritatea procesoarelor de text, programelor de calcul
tabelar, programelor de procesare grafică sau sistemelor de gestiune a bazelor de date oferă
facilităţi pentru generarea automată a documentelor în format HTML. De asemenea, după
cum am văszut în paragraful anterior, au fost puse la dispoziţia utilizatorilor instrumente
software speciale pentru dezvoltarea paginilor Web, fără a fi nevoie să se scrie programe
HTML. Cele mai cunoscute sunt Microsoft FrontPage şi Lotus FastSite.
XML (eXtensible Markup Language) nu este un limbaj de descriere a formatului
unei pagini Web, ci un limbaj de descriere a conţinutului paginilor Web. De exemplu,
informaţiile privind zborurile aeriene de pe pagina Web a unei agenţii de turism vor fi
descrise prin intermediul tag-urilor XML. El este derivat tot din standardul SGML.

Exemple de teste grilă


1. Care dintre următoarele instrumente software se adresează economiştilor, ca utilizator
final informatizat?
a) Programe de calcul tabelar
b) Limbajul Java
c) Produsele de tip CASE
d) Limbajele de ansamblare (numite şi simbolice)

2. Evoluţia limbajelor de programare reflectă progresele înregistrate în privinţa:


a) Eficienţei utilizării resurselor calculatoarelor
b) Productivităţii muncii programatorilor
c) Apropierii de limbajul uman
d) Memorarea datelor
Capitolul 2

STRUCTURI DE DATE ŞI STRUCTURI DE PRELUCRARE

Sumar:

• Aspecte introductive privind structurile de date şi de prelucrare


• Structuri de date
• Structuri algoritmice de prelucrare
2 Instrumente software pentru afaceri

2.1 ASPECTE INTRODUCTIVE

Literatura de specialitate subliniază importanţa deosebită a înţelegerii corecte a


principalelor structuri de date şi a structurilor de prelucrare folosite în activitatea de
programare, precum şi în formarea specialiştilor în domeniul instrumentelor software.
O structură de date reprezintă o modalitate de organizare a datelor care acoperă data
elementară propriu-zisă şi relaţiile acesteia cu alte date. Selectarea în activitatea de
programare a unei structuri de date adecvate poate conduce la avantaje importante, între care:
utilizarea eficientă a memoriei, eficientizarea prelucrărilor şi chiar reducerea costurilor de
programare.
Prin structuri de prelucrare sau structuri algoritmice de prelucrare ne referim la
acele modalităţi de organizare a controlului în prelucrarea prin program/ proceduri a unor
structuri de date.
Este important de subliniat faptul că structurile de date sunt strâns legate de
structurile algoritmice prin care se eficientizează operaţiile de creare şi actualizare a
structurilor de date, dar şi operaţii de căutare şi sortare a acestora. Toate aceste structuri de
date şi de prelucrare se bazează pe memoria calculatorului. În cel mai simplu mod trebuie
privită memoria ca fiind o structură liniară de celule/locaţii în care se depozitează date cu
valori corespunzătoare (figura 2.1).
Trebuie să facem precizarea că adresele de memorie nu se codifică după o regulă uşor
de înţeles şi de utilizat în activitatea de programare. Iată, spre exemplu, o adresă de memorie:
AF0021E. Acest fapt a condus la necesitatea atribuirii de nume în logica utilizatorilor de
medii de programare şi a problemei de rezolvat.

Produs Pret UM Intrare Data

paine 0.5 buc 100 05/12/05

A1 A2 … An

Figura 2.1 Atribuirea numelor la celulele de memorie

După o asemenea împărţire a memoriei şi atribuirea de adrese şi nume, putem stoca


date în oricare din celule, în funcţie de ce ne-am propus prin numele asociat. Valorile stocate
pot fi restricţionate pe categorii. De exemplu, la Pret nu putem introduce decât valori
numerice iar la UM numai text. Astfel, se realizează o specializare a acestor celule în funcţie
de conţinutul lor pe tipuri de valori. Această caracteristică a datei poartă numele de tip şi
poate fi: numeric, alfabetic, alfanumeric, logic, dată calendaristică ş.a.
Structuri de date şi structuri de prelucrare 3

2.2 STRUCTURI DE DATE


2.2.1 Clasificări ale principalelor structuri de date
Compoziţia internă a unei date impune gruparea acestora în date structurate şi date
elementare. O dată elementară se defineşte ca fiind un atribut care nu poate fi descompus din
punct de vedere logic. La rândul lor, datele structurate sau compuse se definesc ca fiind o
grupare de date elementare şi chiar de alte date compuse.
Trebuie precizat că toate datele în baze de date sau entităţi sunt declarate în
dicţionarul de date pe ultimul nivel ca fiind date elementare.
La rândul lor, datele structurate se grupează în:
• Date structurate de nivel redus, care permit operaţii la nivel de componentă.
Sunt incluse în această categorie tablourile şi articolele;
• Date structurate de nivel înalt, care permit operaţii implementate de algoritmi
utilizator. În această categorie intră: liste liniare, liste liniare ordonate, stiva şi
coada.

2.2.2 Date elementare, tablouri şi pointeri


O dată elementară reprezintă cea mai simplă modalitate de reprezentare logică a unei
informaţii. În categoria datelor elementare sunt incluse:
• Numere întregi: au asociate celule sau locaţii de memorie în care sunt stocate
numere întregi. Asupra acestor date se pot aplica operaţiile aritmetice cunoscute: +, -, ...;
• Numere reale: au asociate celule de memorie în care sunt stocate numere raţionale.
Ca şi în cazul numerelor întregi asupra lor se pot aplica operaţiile aritmetice;
• Valori booleene: au asociate celule sau locaţii de memorie în care sunt stocate
valorile logice true sau false. Aceste date fac obiectul operaţiilor/ operatorilor logici: and, or,
not etc.
• Caractere: au asociate celule sau locaţii de memorie în care sunt stocate şiruri de
caractere alfabetice de genul ‘a’, ‘b’, ‘abc’, ‘Popescu’ … . Pentru aceste date se pot aplica
operaţii speciale de concatenare şi comparaţie.
În tabelul 2.1. prezentăm câteva exemple de date elementare.
Tabel 2.1. Prezentare variabile de lucru
Nr. Nume_dată Valoare Tip
crt.
1 Produs Paine Şir de caractere
2 Preţ 0.5 Numeric
3 UM Buc Şir de caractere
4 Intrare 100 Numeric
5 Data 05/12/05 Dată calendaristică

Particularizăm crearea datelor elementare din tabelul 2.1 în Visual Basic for
Application:
4 Instrumente software pentru afaceri

Sub algoritm()
' creare -initializare
produs = "paine" ' creare variabila produs si intializare cu "paine"
pret = 0.5 ' creare variabila pret si intializare cu 0.5
um = "buc" ' creare variabila UM si intializare cu "buc"
intrare = 100 ' creare variabila intrare si intializare cu 100
data = "12/12/2005" ' creare variabila data si intializare cu "12/12/2005"
' calcul valoare
v = pret * intrare ' creare variabila v si incarcare cu produsul dintre
continutul
' variabilei pret cu cel al variabilei intrare
' afişare rezultate
MsgBox "Variabila v contine: " & Str(v) ' Afisare variabila v
MsgBox "Total intrari " & produs & ": " & Str(v) & " RON" ' Afisare rezultate
finisate
End Sub
Observaţie: semnul ' de pe linia cu instrucţiuni permite ataşarea unui comentariu.
Rezultatul execuţiei acestui Algoritm este cel din figura 2.2.

Figura 2.2 Rezultate la execuţia procedurii Algoritm

Acelaşi algoritm se putea scrie şi astfel:


Public produs As String ' se creaza in mod public variabila produs de tip sir
Public pret ' se creaza in mod public variabila pret de tip variant
Public um As String
Public intrare
Public data As Date ' se creaza in mod public variabila produs te tip data calendaristica
Public v
Sub algoritm()
' creare-initializare
produs = "paine" ' intializare cu "paine"
pret = 0.5 ' intializare cu 0.5
um = "buc" ' intializare cu "buc"
intrare = 100 ' intializare cu 100
data = "12/12/2005" ' intializare cu "12/12/2005"
' calcul valoare
v = pret * intrare ' incarcare cu produsul dintre continutul lui pret si cel al variabilei
intrare
' afişare rezultate
MsgBox "Variabila v contine: " & Str(v) ' Afisare variabila v
MsgBox "Total intrari " & produs & ": " & Str(v) & " RON" ' Afisare rezultate finisate
End Sub

Un tablou se defineşte ca fiind cea mai simplă dată structurată organizată sub formă
tabelară. O caracteristică importantă a unui tablou o reprezintă dimensiunea acestuia. Un
tablou cu o singură dimensiune (o singură coloană) poartă denumirea de vector, iar un tablou
cu două dimensiuni poartă denumirea de matrice. În figura de mai jos reprezentăm schematic
un vector şi o matrice.
Din figura următoare şi din definiţiile date trebuie să se reţină faptul că în fiecare
celulă a unui tablou se regăseşte o dată elementară.
Structuri de date şi structuri de prelucrare 5

1 j M

1 A(1) 1 A(1,1) A(1,2) … A(1,j) … A(1,m)


A(2) A(2,1) A(2,2) … A(2,j) … A(2,m)
… … … … … … …
i A(i) i A(i,1) A(i,2) … A(i,j) … A(i,m)
… … … … … … …
n A(n) n A(n,1) A(n,2) … A(n,j) … A(n,m)
a. Tablou cu o singură dimensiune b. Tablou cu două dimensiuni (matrice)
(vector)

Figura 2.3 Structuri de date de tip tablou

Datele elementare, din exemplul precedent, se pot converti în date grupate sub
următoarea formă, folosind un tablou cu o singură dimensiune.
Sub Alg_tablou_1()
' creare-initializare
Dim aprov(5)
aprov(0) = "paine" ' intializare cu "paine"
aprov(1) = 0.5 ' intializare cu 0.5
aprov(2) = "buc" ' intializare cu "buc"
aprov(3) = 100 ' intializare cu 100
aprov(4) = "12/12/2005" ' intializare cu "12/12/2005"
' calcul valoare
aprov(5) = aprov(1) * aprov(3)
' afisare rezultate
MsgBox "Total intrari " & produs & ": " & Str(aprov(5)) & " RON" ' Afisare rezultate
finisate
End Sub

În Visual Basic se pot crea tablouri cu maximum 60 de dimensiuni. Noi vom


particulariza crearea unui tablou cu două dimensiuni: 5 linii (numerotate de la 0 la 4) şi 3
coloane (numerotate de la 0 la 2). Astfel vom considera intrarile de pâine pe 3 zile.
Sub Alg_tablou_2()
' creare-initializare
Dim aprov(4, 2)
' prima zi
aprov(0, 0) = "paine" ' intializare cu "paine"
aprov(1, 0) = 0.5 ' intializare cu 0.5
aprov(2, 0) = "buc" ' intializare cu "buc"
aprov(3, 0) = 100 ' intializare cu 100
aprov(4, 0) = "12/12/2005" ' intializare cu "12/12/2005"
' a doua zi
aprov(0, 1) = "paine" ' intializare cu "paine"
aprov(1, 1) = 0.5 ' intializare cu 0.5
aprov(2, 1) = "buc" ' intializare cu "buc"
aprov(3, 1) = 100 ' intializare cu 108
aprov(4, 1) = "12/12/2005" ' intializare cu "12/12/2005"
' a treia zi
aprov(0, 2) = "paine" ' intializare cu "paine"
aprov(1, 2) = 0.5 ' intializare cu 0.5
aprov(2, 2) = "buc" ' intializare cu "buc"
aprov(3, 2) = 100 ' intializare cu 116
6 Instrumente software pentru afaceri

aprov(4, 2) = "12/12/2005" ' intializare cu "12/12/2005"


' calcul valoare
aprov(5, 0) = aprov(1, 0) * aprov(3, 0)
aprov(5, 1) = aprov(1, 1) * aprov(3, 1)
aprov(5, 2) = aprov(1, 2) * aprov(3, 2)
' afisare rezultate
MsgBox "Intrari Luni" & produs & ": " & Str(aprov(5, 0)) & " RON"
MsgBox "Intrari Marti" & produs & ": " & Str(aprov(5, 1)) & " RON"
MsgBox "Intrari Miercuri" & produs & ": " & Str(aprov(5, 2)) & " RON"
End Sub

Pointer-ul reprezintă o legătură către o dată elementară. Cu alte cuvinte, o variabilă


care conţine o adresă sau un nume de variabilă pentru o altă dată elementară. Schematic un
pointer se reprezintă ca în figura de mai jos.

V1 Adr2 Nume variabilă: V1


Adr1 Adresă: Adr1
Conţinut/Valoare: Adr2

V2 Iasi Nume variabilă: V2


Adr2
Adresă: Adr2
Conţinut/Valoare: Iaşi

Figura 2.4. Reprezentarea unui pointer V1

Explicaţii referitoare la pointer:


- În limba română pointer înseamnă ac indicator sau simplu indicator, adică un
instrument care ne indică o direcţie;
- Ştiind numele variabilei pointer, în cazul nostru v1, putem ajunge la valoarea
variabilei v2.

2.2.3 Liste
O listă reprezintă o colecţie omogenă şi secvenţială de date. Astfel, aceasta constituie
cea mai comună dată structurată. Schematic cea mai simplă listă se reprezintă ca în figura de
mai jos.

Intrare A B C D Ieşire
listă listă

Figura 2.5. Reprezentare listă simplă

O asemenea listă mai poartă denumirea de listă liniară sau simplă, adică un set de
date elementare stocate în locaţii de memorie consecutive. Într-o asemenea listă vom distinge:
• Nodul, adică acea componentă în care se conţine o dată elementară;
• Lungimea, adică numărul de noduri din listă,
• Definiţia pentru stabilirea ordinii nodurilor, adică pentru fiecare nod există un
predecesor şi un succesor.
Structuri de date şi structuri de prelucrare 7

În situaţia în care definiţia pentru stabilirea ordinii nodurilor conţine o regulă care
conduce la o succesiune între ultimul nod şi primul nod, atunci discutăm de liste circulare.

B
A

D
E

Figura 2.6. Reprezentare listă circulară

Unei liste i se pot aplica operaţii de actualizare (modificare, inserare şi ştergere) nod-
uri din listă, operaţii de concatenare cu altă listă şi de numărare a nodurilor declarate.
Pentru implementarea unei liste se pot folosi două strategii:
a. Implementarea secvenţială sau statică, ceea ce presupune atribuirea de locaţii succesive de
memorie în corespondenţă cu ordinea nodurilor din listă.
b. Implementarea înlănţuită sau dinamică. În acest caz, fiecare nod conţine două părţi:
informaţia propriu-zisă şi adresa nodului succesor.
În practică se întâlnesc două cazuri particulare de liste:
a. Stive. O stivă (stack) este o listă liniară cu proprietatea că operaţiile de inserare/
extragere a nodurilor se fac în/ din coada listei. Dacă nodurile A, B, C, D sunt inserate într-o
stivă în aceasta ordine, atunci primul nod care poate fi extras este D. In mod echivalent,
spunem ca ultimul nod inserat va fi şi primul şters. Din acest motiv, stivele se mai numesc şi
liste LIFO (Last In First Out), sau liste pushdown.
b. Cozi. O coada (queue) este o listă liniară în care inserările se fac doar în capul
listei, iar extragerile doar din coada listei. Cozile se numesc şi liste FIFO (First In First Out).

2.2.4 Arbori
Arborii reprezintă o dată structurată cu două-dimensiuni în care nodurile formează o
ierarhie. Astfel, o asemenea structură de date dispune de un nod rădăcină (plasat fie în vârf,
fie la baza arborelui). La rândul său. un nod rădăcină dispune de unul sau mai multe niveluri
de noduri-copil, care pot să aibă, la rândul lor, proprii lor noduri-copil. Astfel, putem spune că
într-un arbore deosebim: nodul rădăcină, noduri copil şi noduri-părinte. Mai multe noduri
subordonate succesiv unul altuia formează o ramură, iar un nod care nu are subordonat un
nod-copil se numeşte nod frunză. În forma sa cea mai sintetică un arbore se reprezintă ca în
figura 2.7.
8 Instrumente software pentru afaceri

B C D

E F G H I

J K

Figura 2.7 Exemplu de structură ierarhică arborescentă

Pe exemplul din figura precedentă particularizăm următoarele tipuri de noduri:


• nod rădăcină: a;
• noduri copil: b, c, d, e, f, g, h, i, j şi k;
• nod părinte: b faţă de e şi f; c faţă de g; d faţă de h şi i; f faţă de j şi k;
• ramură: a, b şi e;
• noduri frunză: e, j, k, g, h şi i;
În literatura de specialitate sunt prezentaţi: arbori cu rădăcină (figura 2.8.a), arbori
binari (figura 2.8.b), arborii multi-cale (figura 2.8.c).

B C

D E F G

H I

a. Arbore cu rădăcina b. Arbore binar

valoarea vârfului
A valoarea nodului-fiu adresa fiului din stânga
din stânga adresa fiului din dreapta

B C D
B

E F G C D

c. Arbori multi-cale d. Memorarea valorilor şi adreselor în noduri


Figura 2.8 Reprezentări grafice ale arborilor

Reprezentarea unui arbore cu rădăcină se poate face prin adrese cu ajutorul listelor
înlănţuite. În cazul arborelui binar se observă că fiecare nod-părinte are în subordine câte
Structuri de date şi structuri de prelucrare 9

două noduri-copil. După cum se observă şi din figura 2.8.d., fiecare nod va fi memorat în trei
locaţii diferite ale unei listei, după cum urmează: o locaţie va fi folosită pentru valoarea
propriu-zisă a nodului, o a doua locaţie va fi destinată pentru memorarea adresei celui mai
vârstnic fiu, iar a treia locaţie pentru adresa următorului frate. Cu alte cuvinte, legătura între
un nod-părinte şi un nod-copil se realizează prin intermediul pointerilor.
Observaţie: Sesizăm faptul că pentru arbori se face trimitere la liste, pentru a căror
reprezentare se folosesc tablourile bidimensionale. Iată de ce tablourile reprezintă cea mai
simplă dată structurată.

2.2.5 Structuri de date externe: articolul şi fişierul


Fişierul reprezintă o colecţie ordonată de date. Urmare a faptului că stocarea datelor
se face pe suporturi de memorie externă, fişierul este definit şi ca structură de date externă.
Structura ordonată de date din cadrul fişierului poartă denumirea de articol, care la
rândul său este constituit dintr-o mulţime ordonată de valori ale căror caracteristici aparţin
unei entităţi din domeniul unei probleme. Caracteristicile descrise prin intermediul valorilor
din articolele unui fişier le vom regăsi sub denumirea de câmpuri.

Figura 2.9 Reprezentări ale structurilor de date externe de tip articol şi fişier

Capitolele 4, 5 şi 6 prezintă exemple suplimentare de structuri de date de tip fişiere,


articole şi tabele.
Din punct de vedere al activităţilor de programare este interesant să cunoaştem
metoda de organizare şi tipul de acces aferente structurilor de date externe.
a. Metoda de organizare poate fi una din următoarele: secvenţială, relativă şi
indexată;
b. Tipul de acces la date în operaţii de citire şi scriere a valorilor din /în câmpuri. Se
poate folosi accesul secvenţial sau accesul direct.
10 Instrumente software pentru afaceri

2.3 STRUCTURI ALGORITMICE DE PRELUCRARE


Principala sarcină a unui mediu de programare (instrument software) constă în a
permite definirea structurilor de date într-un mod eficient şi de a asigura accesul,
manipularea, actualizarea şi controlul asupra acestora prin intermediul algoritmilor şi
structurilor de prelucrare /control. Structurile de prelucrare /control constituie aportul cel mai
de seamă al metodei de programare structurată, care a impus utilizarea a trei tipuri de structuri
fundamentale, toate cu o singură intrare şi o singură ieşire. Cele trei tipuri de structuri
fundamentale sunt:
- secvenţiale;
- alternative;
- repetitive.
În figura de mai jos punem în evidenţă aceste tipuri şi instrucţiunile corespunzătoare.

Figura 2.10 Structurile de control fundamentale

În Visual Basic for Application (VBA) cele trei structuri de control fundamentale se
codifică în mod direct prin comenzi specifice acestui mediu de programare.
Structuri de date şi structuri de prelucrare 11

A. Structuri secvenţiale
Ca în orice mediu de programare VBA asigură operaţii de atribuire şi operaţii de
intrare/ ieşire, după cum urmează:
• Atribuirea se realizează cu instrucţiune LET sau direct cu folosirea semnului
=, ca în exemplul precedent.
Sub atribuire()
‘ precizare varibilele care se folosesc mai jos trebuie in principiu declarate (create) inainte
LET cont=212 ‘ se atribuie valoarea numerica 212 pentru variabila cont
Den = “Mijloace fixe” ‘ se atribuie şirul „Mijloace fixe” pentru variabila den
Tip_C= True ‘ valoarea True este atribuită conturilor de activ
Data=#12/31/2004# ‘ se atribuie valoarea 31.12.2004 variabilei data
‘ Nota: Trebuie se foloseste semnul #, iar formatul este ll/zz/aaaa
End Sub

• Operaţia de atribuire prin citirea datelor introduse de utilizator este asigurată


de instrucţiunea InputBox. Cu alte cuvinte, această instrucţiune ne permite
introducerea de la tastatură a valorilor pentru o anumită variabilă. Exemplul
de mai sus se transformă în următorul:
Sub citire()
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0) ‘se permite citirea (preluarea) în
‘variabila cont a raspunsului dat de
‘ utilizator
Den = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)
Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)
End Sub

Formatul instrucţiunii InputBox este următorul:


InputBox(mesaj, [titlu, valoare_implicita])
Precizări:
- Mesaj trebuie scris între ghilimele sau se poate prelua dintr-o variabilă de tip
şir. Este textul ce apare ca explicaţie în interiorul ferestrei;
- Titlu şi valoare_implicită sunt facultative;
- Titlu trebuie scris intre ghilimele sau se poate prelua dintr-o variabilă de tip
şir. Este textul ce apare pe linia de titlu a ferestrei;
- Valoare_implicită este valoarea care va apare în rubrica de completat;
- Fereastra rezultată are şi butoanele predefinite OK şi Cancel (vezi figura
2.11)
Spre exemplu, din procedura Citire() rezultatul executării liniei
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0)
este prezentat în figura 2.17.
12 Instrumente software pentru afaceri

Figura 2.11 Rezultatul execuţiei liniei Cont = InputBox(“Simbol cont”,”Introduceti o


valoare”, 0)

• Operaţia de ieşire este uşor de evidenţiat cu ajutorul instrucţiunii MsgBox,


care permite afişarea unui text într-o fereastră de dialog. Cea mai simplă
utilizare este atunci când dorim sa vizualizăm conţinutul unei variabile, ca în
exemplul de mai jos.
Sub citire()
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0)
Den = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)
Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)

MsgBox ("Informatii despre cont") ‘ afiseaza text simplu


MsgBox ("Denumire cont: " & Den) ‘ afiseaza denumire cont cu text in fata
MsgBox ("Simbol cont: " & Str(cont)) ‘ afiseaza textul simbol cont: dupa care simbolul
introdus
MsgBox ("" & data) ‘ afiseaza o data calendaristica

End Sub

Prezentăm în figura 2.12 fereastra afişată pentru instrucţiunea MsgBox ("Denumire


cont: " & Den) şi a instrucţiunii MsgBox ("Denumire cont: " & Den).

Figura 2.12 Rezultate la execuţia instrucţiunilor de tip MsgBox

În chenarul de mai jos oferim spre exemplificare o utilizare mai complicată a


instrucţiunii MsgBox pentru preluarea răspunsului de la utilizator.
Sub MesajBox()
Dim Mesaj, Butoane, Titlu, Help, Raspuns, Rasp ' Definim variabilele de lucru
Mesaj = "Doriti sa continuati ?" ' Definim mesajul
Butoane = vbYesNo + vbCritical + vbDefaultButton2 ' Definim buttoanele
Titlu = "Titlu fereastra" ' Definim titlul ferestrei
Help = "Ajutor.txt" ' Definim fisierul de ajutor
Raspuns = MsgBox(Mesaj, Butoane, Titlu, Help, 1000)
If Raspuns = vbYes Then ' Selectie Yes
Rasp = "Yes" ' Executa o actiune pentru Yes
Else ' Selectie No
Rasp = "No" ' Executa o actiune pentru No
End If
End Sub
Structuri de date şi structuri de prelucrare 13

În figura 2.13. prezentăm rezultatul după lansarea în execuţie a procedurii de mai sus.

Figura 2.13 Preluare răspuns prin MsgBox

B. Structuri de control alternative


Aşa cum rezultă şi din figura 2.10 în cadrul structurilor de control alternative
distingem:
• structuri de control alternative duble;
• structuri de control alternative cu o ramură vidă;
• structuri de control alternative generalizate (multiple).
a. Codificarea structurilor de control alternative duble şi a celor cu ramură vidă se
realizează cu ajutorul comenzii: IF … THEN … ELSE … ENDIF. Formatul acestei comenzi
este:
IF <condiţie> THEN
<set_comenzi1>
[ELSE
<set_comenzi2>]
END IF

Pentru codificarea structurii de control alternative cu o ramură vidă formatul


comenzii IF devine:
IF <condiţie> THEN
<set_comenzi>
END IF

Se observă că în formatul precedent ramura ELSE este opţională fiind inclusă în


paranteze drepte.
Exemplu de utilizare – Vom exemplifica această structură de control pe selecţia
folder-ului (directorului) de lucru pentru o aplicaţie ce poate fi lansată în laboratoarele
facultăţii sau pe un calculator personal (acasă sau la serviciu).

Sub Mod_IF()
' construim fereastra de interogare a dorintei utilizatorului
Dim dir As Object
Set dir = CreateObject("Scripting.FileSystemObject")
Dim cale, cale_nou
Dim Mesaj, Butoane, Titlu, Help, Raspuns 'Definim variabilele de
lucru
Mesaj = "Lucrati in laboratoarele FEAA <Yes-Da; No-Nu>?" 'Definim mesajul
Butoane = vbYesNo + vbCritical + vbDefaultButton2 'Definim buttoanele
14 Instrumente software pentru afaceri

Titlu = "Selectati un raspuns !" 'Definim titlul ferestrei


Help = "Ajutor.txt" 'Definim fisierul de ajutor
Raspuns = MsgBox(Mesaj, Butoane, Titlu, Help, 1000) ‘Stocarea raspunsului in
Raspuns

' **** Selectia unitatii de lucru D sau Z

If Raspuns = vbYes Then


cale = "Z:"
Else
cale = "D:"
End If
ChDir (cale)

' **** Testarea existentei directorului VBA pe unitatea de disc selectata


cale_nou = "" & cale + "\VBA" 'construirea caii de lucru complete

If dir.FolderExists(cale_nou) Then 'testarea existentei directorului VBA


MsgBox "VBA este directorul de lucru de pe " & cale
Else
Raspuns = MsgBox("Nu exista directorul VBA pe " & cale, vbOKOnly, "Informatie")
MkDir (cale_nou) 'crearea noului director VBA in cazul in care
nu exista
Raspuns = MsgBox("VBA a fost creat si va fi directorul de lucru de pe " & cale, vbOKOnly,
"Informatie")
End If
ChDir (cale_nou) 'stabilirea directorului de lucru

End Sub

În procedura de mai sus se observă două instrucţiuni IF una după alta. Există însă
posibilitatea ca pe ramura Else a unei structuri IF să nu fie nici o secvenţă, ceea ce ne conduce
la o structură alternativă cu o ramură vidă de forma IF … THEN … END IF, dar şi la
posibilitatea ca pe oricare din cele două ramuri să apară o altă structură alternativă, ceea ce
ne-ar conduce la un IF imbricat de forma IF … THEN If …Then … Else … End If ELSE
… END IF.

b. Codificarea structurilor de control alternative generalizate se realizează cu


ajutorul comenzii: SELECT CASE … CASE … CASE ELSE … END SELECT. Formatul
general pentru această comandă este următorul:
SELECT CASE <var>
CASE <var_1>
<set_comenzi_1>
[CASE <var_2>
<set_comenzi_2>]
[CASE <var_k>
<set_comenzi_k>]
[…]
[CASE <var_m>
<set_comenzi_m>]
[CASE ELSE
<set_comenzi>]
END SELECT
Structuri de date şi structuri de prelucrare 15

Modul de utilizare a acestei comenzi este simplu şi constă în a identifica cazurile de


descris, care se vor reprezenta sub forma unor condiţii. De fiecare dată se compară conţinutul
variabilei <var> cu conţinutul variabilelor <var_1>, <var_2> … . Dacă se ajunge să fie
indeplinită o condiţie <var>=<var_k> se va executa set_comenzi_k (k poate fi o valoare din
intervalul 1,m). În cazul în care nu se îndeplineşte nici una din condiţii, se transferă contolul
pe ramura lui CASE ELSE spre a se executa setul de comenzi <set_comenzi>.
Exemplu de utilizare – Dorim să aflăm ziua din cadrul săptămânii pornind de la data
naşterii. Se ştie că datele calendaristice sunt reprezentate ca valori numerice, iar restul
împărţirii la 7, la care se adaugă 1, ne asigură obţinerea unui număr în intervalul 1-7.

Function zi(numzi As Byte) As String


Select Case numzi
Case 1
zi = "Luni"
Case 2
zi = "Marti"
Case 3
zi = "Miercuri"
Case 4
zi = "Joi"
Case 5
zi = "Vineri"
Case 6
zi = "Sambata"
Case 7
zi = "Duminica"
End Select
End Function

Sub case_zi()
Dim varzi As Date
varzi = InputBox("Introduceti data Dvs de nastere in format ll/zz/aaaa")
MsgBox ("Sunteti nascut(a) intr-o zi de " + zi((Int(varzi) Mod 7) + 1))
End Sub

Observaţie: (Int(varzi) Mod 7) + 1 asigură obţinerea restului la împărţirea lui varzi la 7 in


intervalul 1 – 7.
Exemplu de utilizare – În funcţie de distanţa în km la care se află localitatea dvs. se
va afişa un mesaj de apreciere a apropierii faţă de Iaşi.

Sub dist()
Dim d
d = InputBox("Introduceti distanta pana la localitatea dvs. in Km.")
Select Case d
Case Is <= 50
MsgBox ("Localitatea este foarte aproape, la distanta de " + Str(d) + " km.")
Case 51 To 100
MsgBox ("Localitatea este aproape, la distanta de " + Str(d) + " km.")
Case 101 To 250
MsgBox ("Localitatea este departe, la distanta de " + Str(d) + " km.")
Case Is > 250
16 Instrumente software pentru afaceri

MsgBox ("Localitatea este foarte departe, la distanta de " + Str(d) + " km.")
Case Else
MsgBox ("Distanta introdusa trebuie sa fie un numar intreg!")
End Select

End Sub

C. Structuri de control repetitive


În VBA structurile de control repetitive sunt realizate astfel:
• WHILE … WEND, pentru structuri repetitive condiţionate anterior. Setul de
comenzi se execută cât timp condiţia este adevărată.
• FOR … NEXT, pentru structuri repetitive cu număr stabilit de paşi.

WHILE … WEND
În VBA această structură repetitivă este considerată cea mai simplă, deoarece nu
oferă posibilitatea părăsirii forţate a setului de comenzi cu o instrucţiune de tipul EXIT.
Formatul său este:
WHILE conditie CÂT TIMP conditie
<set_comenzi> <set_comenzi>
WEND SFÂRŞIT_CÂT_TIMP
Iată un exemplu de utilizare a acestei structuri de prelucrare pe exemplul introducerii
de date în tabloul cu două dimensiuni pentru produsele care au intrat în magazin într-o
perioadă de timp stabilită de utilizator.
Sub Wend_tablou_2()
Dim i As Integer ' definirea variabilei pentru control executie
Dim var As Integer ' definirea variabilei de ciclare
i = InputBox("Numar de intrari in cadrul zilei: ")
Dim aprov(5, 100) ' definirea tabloului
var = 0
While var < i
aprov(0, var) = InputBox("Denumire produs: " & (var + 1))
aprov(1, var) = InputBox("Pret de intrare: " & (var + 1))
aprov(2, var) = InputBox("Unitate de masura: " & (var + 1))
aprov(3, var) = InputBox("Cantitate:" & (var + 1))
aprov(4, var) = InputBox("Data intrarii (ll/zz/aaaa):")
var = var + 1
Wend
End Sub
Observaţie: Pentru a nu se repeta la infinit este necesară introducerea unei clauze de
actualizare a valorii variabilei de ciclare var (vezi linia var = var + 1).

FOR … NEXT
Această structură oferă posibilitatea prestabilirii numărului de execuţii pentru
set_comenzi. Din punct de vedere logic se aseamănă cu WHILE … WEND, cu precizarea că
actualizarea lui i se face cu clauza NEXT . Formatul său este:
Structuri de date şi structuri de prelucrare 17

FOR i =1 to n PENTRU i = 1 la N
<set_comenzi> <set_comenzi>
NEXT i URMĂTORUL i

Vom adapta exemplul precedent în cazul utilizării structurii de prelucrare FOR …


NEXT, dar pe zile ale săptămânii.
Sub For_tablou_2()
Dim i As Integer ' definirea variabilei de ciclare
Dim aprov(5, 100) ' definirea tabloului
Dim zi As String
i=0
For i = 0 To 6
Select Case i
Case 0
zi = "Luni"
Case 1
zi = "Marti"
Case 2
zi = "Miercuri"
Case 3
zi = "Joi"
Case 4
zi = "Vineri"
Case 5
zi = "Sambata"
Case 6
zi = "Duminica"
End Select
aprov(0, i) = InputBox("Denumire produs intrat " & zi & ":")
aprov(1, i) = InputBox("Pret de intrare:")
aprov(2, i) = InputBox("Unitate de masura:")
aprov(3, i) = InputBox("Cantitate:")
aprov(4, i) = InputBox("Data intrarii (ll/zz/aaaa):")
Next i
End Sub

DO … LOOP
Această structură de prelucrare de tip repetitiv permite utilizarea a două clauze
diferite: pentru transferul controlului în cazul îndeplinirii condiţiei (WHILE) şi pentru
transferul controlului în cazul neîndeplinirii condiţiei (UNTIL). În varianta cu WHILE DO
… LOOP corespunde structurii de control repetitive condiţionate anterior, în timp ce în
varianta cu UNTIL, permite codificarea structurilor de control condiţionate posterior (adică
set_comenzi se execută înaintea verificării condiţiei, deci cel puţin o dată).

DO WHILE <conditie>
<set_comenzi_1>
[EXIT DO]
<set_comenzi_2>
LOOP

DO UNTIL <conditie>
<set_comenzi_1>
[EXIT DO]
<set_comenzi_2>
18 Instrumente software pentru afaceri

LOOP

DO <conditie>
<set_comenzi_1>
[EXIT DO]
<set_comenzi_2>
LOOP [UNTIL|WHILE]

Oferim două exemple de utilizare a structurii repetitive DO ... LOOP


Sub citire()
DO UNTIL CONT<900 and CONT>99
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0) ‘se permite citirea (preluarea) în
‘variabila cont a raspunsului dat de
‘ utilizator
LOOP
Den = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)
Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)
End Sub

Sub citire()
DO WHILE CONT>900 and CONT<100
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0) ‘se permite citirea (preluarea) în
‘variabila cont a raspunsului dat de
‘ utilizator
LOOP
Den = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)
Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)
End Sub

Exemple de întrebări teste grilă


1. Care structură de control este denumită incorect:
a. Secvenţială
b. Repetitivă
c. Iterativă
d. Repetitiv-Indexată
2. Tipul de dată Arbore este:
a. Elementar
b. Structurat
c. Stivă
Capitolul 2

STRUCTURI DE DATE ŞI STRUCTURI DE PRELUCRARE

Sumar:

 Aspecte introductive privind structurile de date şi de prelucrare


 Structuri de date
 Structuri algoritmice de prelucrare
2 Instrumente software pentru afaceri

2.1 ASPECTE INTRODUCTIVE

Literatura de specialitate subliniază importanţa deosebită a înţelegerii corecte a


principalelor structuri de date şi a structurilor de prelucrare folosite în activitatea de
programare, precum şi în formarea specialiştilor în domeniul instrumentelor software.
O structură de date reprezintă o modalitate de organizare a datelor care acoperă data
elementară propriu-zisă şi relaţiile acesteia cu alte date. Selectarea în activitatea de
programare a unei structuri de date adecvate poate conduce la avantaje importante, între care:
utilizarea eficientă a memoriei, eficientizarea prelucrărilor şi chiar reducerea costurilor de
programare.
Prin structuri de prelucrare sau structuri algoritmice de prelucrare ne referim la
acele modalităţi de organizare a controlului în prelucrarea prin program/ proceduri a unor
structuri de date.
Este important de subliniat faptul că structurile de date sunt strâns legate de
structurile algoritmice prin care se eficientizează operaţiile de creare şi actualizare a
structurilor de date, dar şi operaţii de căutare şi sortare a acestora. Toate aceste structuri de
date şi de prelucrare se bazează pe memoria calculatorului. În cel mai simplu mod trebuie
privită memoria ca fiind o structură liniară de celule/locaţii în care se depozitează date cu
valori corespunzătoare (figura 2.1).
Trebuie să facem precizarea că adresele de memorie nu se codifică după o regulă uşor
de înţeles şi de utilizat în activitatea de programare. Iată, spre exemplu, o adresă de memorie:
AF0021E. Acest fapt a condus la necesitatea atribuirii de nume în logica utilizatorilor de
medii de programare şi a problemei de rezolvat.

Produs Pret UM Intrare Data

paine 0.5 buc 100 05/12/05

A1 A2 … An

Figura 2.1 Atribuirea numelor la celulele de memorie

După o asemenea împărţire a memoriei şi atribuirea de adrese şi nume, putem stoca


date în oricare din celule, în funcţie de ce ne-am propus prin numele asociat. Valorile stocate
pot fi restricţionate pe categorii. De exemplu, la Pret nu putem introduce decât valori
numerice iar la UM numai text. Astfel, se realizează o specializare a acestor celule în funcţie
de conţinutul lor pe tipuri de valori. Această caracteristică a datei poartă numele de tip şi
poate fi: numeric, alfabetic, alfanumeric, logic, dată calendaristică ş.a.
Structuri de date şi structuri de prelucrare 3

2.2 STRUCTURI DE DATE


2.2.1 Clasificări ale principalelor structuri de date
Compoziţia internă a unei date impune gruparea acestora în date structurate şi date
elementare. O dată elementară se defineşte ca fiind un atribut care nu poate fi descompus din
punct de vedere logic. La rândul lor, datele structurate sau compuse se definesc ca fiind o
grupare de date elementare şi chiar de alte date compuse.
Trebuie precizat că toate datele în baze de date sau entităţi sunt declarate în
dicţionarul de date pe ultimul nivel ca fiind date elementare.
La rândul lor, datele structurate se grupează în:
 Date structurate de nivel redus, care permit operaţii la nivel de componentă.
Sunt incluse în această categorie tablourile şi articolele;
 Date structurate de nivel înalt, care permit operaţii implementate de algoritmi
utilizator. În această categorie intră: liste liniare, liste liniare ordonate, stiva şi
coada.

2.2.2 Date elementare, tablouri şi pointeri


O dată elementară reprezintă cea mai simplă modalitate de reprezentare logică a unei
informaţii. În categoria datelor elementare sunt incluse:
• Numere întregi: au asociate celule sau locaţii de memorie în care sunt stocate
numere întregi. Asupra acestor date se pot aplica operaţiile aritmetice cunoscute: +, -, ...;
• Numere reale: au asociate celule de memorie în care sunt stocate numere raţionale.
Ca şi în cazul numerelor întregi asupra lor se pot aplica operaţiile aritmetice;
• Valori booleene: au asociate celule sau locaţii de memorie în care sunt stocate
valorile logice true sau false. Aceste date fac obiectul operaţiilor/ operatorilor logici: and, or,
not etc.
• Caractere: au asociate celule sau locaţii de memorie în care sunt stocate şiruri de
caractere alfabetice de genul ‘a’, ‘b’, ‘abc’, ‘Popescu’ … . Pentru aceste date se pot aplica
operaţii speciale de concatenare şi comparaţie.
În tabelul 2.1. prezentăm câteva exemple de date elementare.
Tabel 2.1. Prezentare variabile de lucru
Nr. Nume_dată Valoare Tip
crt.
1 Produs Paine Şir de caractere
2 Preţ 0.5 Numeric
3 UM Buc Şir de caractere
4 Intrare 100 Numeric
5 Data 05/12/05 Dată calendaristică

Particularizăm crearea datelor elementare din tabelul 2.1 în Visual Basic for
Application:
4 Instrumente software pentru afaceri

Sub algoritm()
' creare -initializare
produs = "paine" ' creare variabila produs si intializare cu "paine"
pret = 0.5 ' creare variabila pret si intializare cu 0.5
um = "buc" ' creare variabila UM si intializare cu "buc"
intrare = 100 ' creare variabila intrare si intializare cu 100
data = "12/12/2005" ' creare variabila data si intializare cu "12/12/2005"
' calcul valoare
v = pret * intrare ' creare variabila v si incarcare cu produsul dintre
continutul
' variabilei pret cu cel al variabilei intrare
' afişare rezultate
MsgBox "Variabila v contine: " & Str(v) ' Afisare variabila v
MsgBox "Total intrari " & produs & ": " & Str(v) & " RON" ' Afisare rezultate
finisate
End Sub
Observaţie: semnul ' de pe linia cu instrucţiuni permite ataşarea unui comentariu.
Rezultatul execuţiei acestui Algoritm este cel din figura 2.2.

Figura 2.2 Rezultate la execuţia procedurii Algoritm

Acelaşi algoritm se putea scrie şi astfel:


Public produs As String ' se creaza in mod public variabila produs de tip sir
Public pret ' se creaza in mod public variabila pret de tip variant
Public um As String
Public intrare
Public data As Date ' se creaza in mod public variabila produs te tip data calendaristica
Public v
Sub algoritm()
' creare-initializare
produs = "paine" ' intializare cu "paine"
pret = 0.5 ' intializare cu 0.5
um = "buc" ' intializare cu "buc"
intrare = 100 ' intializare cu 100
data = "12/12/2005" ' intializare cu "12/12/2005"
' calcul valoare
v = pret * intrare ' incarcare cu produsul dintre continutul lui pret si cel al variabilei
intrare
' afişare rezultate
MsgBox "Variabila v contine: " & Str(v) ' Afisare variabila v
MsgBox "Total intrari " & produs & ": " & Str(v) & " RON" ' Afisare rezultate finisate
End Sub

Un tablou se defineşte ca fiind cea mai simplă dată structurată organizată sub formă
tabelară. O caracteristică importantă a unui tablou o reprezintă dimensiunea acestuia. Un
tablou cu o singură dimensiune (o singură coloană) poartă denumirea de vector, iar un tablou
cu două dimensiuni poartă denumirea de matrice. În figura de mai jos reprezentăm schematic
un vector şi o matrice.
Din figura următoare şi din definiţiile date trebuie să se reţină faptul că în fiecare
celulă a unui tablou se regăseşte o dată elementară.
Structuri de date şi structuri de prelucrare 5

1 j M

1 A(1) 1 A(1,1) A(1,2) … A(1,j) … A(1,m)


A(2) A(2,1) A(2,2) … A(2,j) … A(2,m)
… … … … … … …
i A(i) i A(i,1) A(i,2) … A(i,j) … A(i,m)
… … … … … … …
n A(n) n A(n,1) A(n,2) … A(n,j) … A(n,m)
a. Tablou cu o singură dimensiune b. Tablou cu două dimensiuni (matrice)
(vector)

Figura 2.3 Structuri de date de tip tablou

Datele elementare, din exemplul precedent, se pot converti în date grupate sub
următoarea formă, folosind un tablou cu o singură dimensiune.
Sub Alg_tablou_1()
' creare-initializare
Dim aprov(5)
aprov(0) = "paine" ' intializare cu "paine"
aprov(1) = 0.5 ' intializare cu 0.5
aprov(2) = "buc" ' intializare cu "buc"
aprov(3) = 100 ' intializare cu 100
aprov(4) = "12/12/2005" ' intializare cu "12/12/2005"
' calcul valoare
aprov(5) = aprov(1) * aprov(3)
' afisare rezultate
MsgBox "Total intrari " & produs & ": " & Str(aprov(5)) & " RON" ' Afisare rezultate
finisate
End Sub

În Visual Basic se pot crea tablouri cu maximum 60 de dimensiuni. Noi vom


particulariza crearea unui tablou cu două dimensiuni: 5 linii (numerotate de la 0 la 4) şi 3
coloane (numerotate de la 0 la 2). Astfel vom considera intrarile de pâine pe 3 zile.
Sub Alg_tablou_2()
' creare-initializare
Dim aprov(4, 2)
' prima zi
aprov(0, 0) = "paine" ' intializare cu "paine"
aprov(1, 0) = 0.5 ' intializare cu 0.5
aprov(2, 0) = "buc" ' intializare cu "buc"
aprov(3, 0) = 100 ' intializare cu 100
aprov(4, 0) = "12/12/2005" ' intializare cu "12/12/2005"
' a doua zi
aprov(0, 1) = "paine" ' intializare cu "paine"
aprov(1, 1) = 0.5 ' intializare cu 0.5
aprov(2, 1) = "buc" ' intializare cu "buc"
aprov(3, 1) = 100 ' intializare cu 108
aprov(4, 1) = "12/12/2005" ' intializare cu "12/12/2005"
' a treia zi
aprov(0, 2) = "paine" ' intializare cu "paine"
aprov(1, 2) = 0.5 ' intializare cu 0.5
aprov(2, 2) = "buc" ' intializare cu "buc"
aprov(3, 2) = 100 ' intializare cu 116
6 Instrumente software pentru afaceri

aprov(4, 2) = "12/12/2005" ' intializare cu "12/12/2005"


' calcul valoare
aprov(5, 0) = aprov(1, 0) * aprov(3, 0)
aprov(5, 1) = aprov(1, 1) * aprov(3, 1)
aprov(5, 2) = aprov(1, 2) * aprov(3, 2)
' afisare rezultate
MsgBox "Intrari Luni" & produs & ": " & Str(aprov(5, 0)) & " RON"
MsgBox "Intrari Marti" & produs & ": " & Str(aprov(5, 1)) & " RON"
MsgBox "Intrari Miercuri" & produs & ": " & Str(aprov(5, 2)) & " RON"
End Sub

Pointer-ul reprezintă o legătură către o dată elementară. Cu alte cuvinte, o variabilă


care conţine o adresă sau un nume de variabilă pentru o altă dată elementară. Schematic un
pointer se reprezintă ca în figura de mai jos.

V1 Adr2 Nume variabilă: V1


Adr1 Adresă: Adr1
Conţinut/Valoare: Adr2

V2 Iasi Nume variabilă: V2


Adr2
Adresă: Adr2
Conţinut/Valoare: Iaşi

Figura 2.4. Reprezentarea unui pointer V1

Explicaţii referitoare la pointer:


- În limba română pointer înseamnă ac indicator sau simplu indicator, adică un
instrument care ne indică o direcţie;
- Ştiind numele variabilei pointer, în cazul nostru v1, putem ajunge la valoarea
variabilei v2.

2.2.3 Liste
O listă reprezintă o colecţie omogenă şi secvenţială de date. Astfel, aceasta constituie
cea mai comună dată structurată. Schematic cea mai simplă listă se reprezintă ca în figura de
mai jos.

Intrare A B C D Ieşire
listă listă

Figura 2.5. Reprezentare listă simplă

O asemenea listă mai poartă denumirea de listă liniară sau simplă, adică un set de
date elementare stocate în locaţii de memorie consecutive. Într-o asemenea listă vom distinge:
 Nodul, adică acea componentă în care se conţine o dată elementară;
 Lungimea, adică numărul de noduri din listă,
 Definiţia pentru stabilirea ordinii nodurilor, adică pentru fiecare nod există un
predecesor şi un succesor.
Structuri de date şi structuri de prelucrare 7

În situaţia în care definiţia pentru stabilirea ordinii nodurilor conţine o regulă care
conduce la o succesiune între ultimul nod şi primul nod, atunci discutăm de liste circulare.

B
A

D
E

Figura 2.6. Reprezentare listă circulară

Unei liste i se pot aplica operaţii de actualizare (modificare, inserare şi ştergere) nod-
uri din listă, operaţii de concatenare cu altă listă şi de numărare a nodurilor declarate.
Pentru implementarea unei liste se pot folosi două strategii:
a. Implementarea secvenţială sau statică, ceea ce presupune atribuirea de locaţii succesive de
memorie în corespondenţă cu ordinea nodurilor din listă.
b. Implementarea înlănţuită sau dinamică. În acest caz, fiecare nod conţine două părţi:
informaţia propriu-zisă şi adresa nodului succesor.
În practică se întâlnesc două cazuri particulare de liste:
a. Stive. O stivă (stack) este o listă liniară cu proprietatea că operaţiile de inserare/
extragere a nodurilor se fac în/ din coada listei. Dacă nodurile A, B, C, D sunt inserate într-o
stivă în aceasta ordine, atunci primul nod care poate fi extras este D. In mod echivalent,
spunem ca ultimul nod inserat va fi şi primul şters. Din acest motiv, stivele se mai numesc şi
liste LIFO (Last In First Out), sau liste pushdown.
b. Cozi. O coada (queue) este o listă liniară în care inserările se fac doar în capul
listei, iar extragerile doar din coada listei. Cozile se numesc şi liste FIFO (First In First Out).

2.2.4 Arbori
Arborii reprezintă o dată structurată cu două-dimensiuni în care nodurile formează o
ierarhie. Astfel, o asemenea structură de date dispune de un nod rădăcină (plasat fie în vârf,
fie la baza arborelui). La rândul său. un nod rădăcină dispune de unul sau mai multe niveluri
de noduri-copil, care pot să aibă, la rândul lor, proprii lor noduri-copil. Astfel, putem spune că
într-un arbore deosebim: nodul rădăcină, noduri copil şi noduri-părinte. Mai multe noduri
subordonate succesiv unul altuia formează o ramură, iar un nod care nu are subordonat un
nod-copil se numeşte nod frunză. În forma sa cea mai sintetică un arbore se reprezintă ca în
figura 2.7.
8 Instrumente software pentru afaceri

B C D

E F G H I

J K

Figura 2.7 Exemplu de structură ierarhică arborescentă

Pe exemplul din figura precedentă particularizăm următoarele tipuri de noduri:


 nod rădăcină: a;
 noduri copil: b, c, d, e, f, g, h, i, j şi k;
 nod părinte: b faţă de e şi f; c faţă de g; d faţă de h şi i; f faţă de j şi k;
 ramură: a, b şi e;
 noduri frunză: e, j, k, g, h şi i;
În literatura de specialitate sunt prezentaţi: arbori cu rădăcină (figura 2.8.a), arbori
binari (figura 2.8.b), arborii multi-cale (figura 2.8.c).

B C

D E F G

H I

a. Arbore cu rădăcina b. Arbore binar

valoarea vârfului
A valoarea nodului-fiu adresa fiului din stânga
din stânga adresa fiului din dreapta

B C D
B

E F G C D

c. Arbori multi-cale d. Memorarea valorilor şi adreselor în noduri


Figura 2.8 Reprezentări grafice ale arborilor

Reprezentarea unui arbore cu rădăcină se poate face prin adrese cu ajutorul listelor
înlănţuite. În cazul arborelui binar se observă că fiecare nod-părinte are în subordine câte
Structuri de date şi structuri de prelucrare 9

două noduri-copil. După cum se observă şi din figura 2.8.d., fiecare nod va fi memorat în trei
locaţii diferite ale unei listei, după cum urmează: o locaţie va fi folosită pentru valoarea
propriu-zisă a nodului, o a doua locaţie va fi destinată pentru memorarea adresei celui mai
vârstnic fiu, iar a treia locaţie pentru adresa următorului frate. Cu alte cuvinte, legătura între
un nod-părinte şi un nod-copil se realizează prin intermediul pointerilor.
Observaţie: Sesizăm faptul că pentru arbori se face trimitere la liste, pentru a căror
reprezentare se folosesc tablourile bidimensionale. Iată de ce tablourile reprezintă cea mai
simplă dată structurată.

2.2.5 Structuri de date externe: articolul şi fişierul


Fişierul reprezintă o colecţie ordonată de date. Urmare a faptului că stocarea datelor
se face pe suporturi de memorie externă, fişierul este definit şi ca structură de date externă.
Structura ordonată de date din cadrul fişierului poartă denumirea de articol, care la
rândul său este constituit dintr-o mulţime ordonată de valori ale căror caracteristici aparţin
unei entităţi din domeniul unei probleme. Caracteristicile descrise prin intermediul valorilor
din articolele unui fişier le vom regăsi sub denumirea de câmpuri.

Figura 2.9 Reprezentări ale structurilor de date externe de tip articol şi fişier

Capitolele 4, 5 şi 6 prezintă exemple suplimentare de structuri de date de tip fişiere,


articole şi tabele.
Din punct de vedere al activităţilor de programare este interesant să cunoaştem
metoda de organizare şi tipul de acces aferente structurilor de date externe.
a. Metoda de organizare poate fi una din următoarele: secvenţială, relativă şi
indexată;
b. Tipul de acces la date în operaţii de citire şi scriere a valorilor din /în câmpuri. Se
poate folosi accesul secvenţial sau accesul direct.
10 Instrumente software pentru afaceri

2.3 STRUCTURI ALGORITMICE DE PRELUCRARE


Principala sarcină a unui mediu de programare (instrument software) constă în a
permite definirea structurilor de date într-un mod eficient şi de a asigura accesul,
manipularea, actualizarea şi controlul asupra acestora prin intermediul algoritmilor şi
structurilor de prelucrare /control. Structurile de prelucrare /control constituie aportul cel mai
de seamă al metodei de programare structurată, care a impus utilizarea a trei tipuri de structuri
fundamentale, toate cu o singură intrare şi o singură ieşire. Cele trei tipuri de structuri
fundamentale sunt:
- secvenţiale;
- alternative;
- repetitive.
În figura de mai jos punem în evidenţă aceste tipuri şi instrucţiunile corespunzătoare.

Figura 2.10 Structurile de control fundamentale

În Visual Basic for Application (VBA) cele trei structuri de control fundamentale se
codifică în mod direct prin comenzi specifice acestui mediu de programare.
Structuri de date şi structuri de prelucrare 11

A. Structuri secvenţiale
Ca în orice mediu de programare VBA asigură operaţii de atribuire şi operaţii de
intrare/ ieşire, după cum urmează:
 Atribuirea se realizează cu instrucţiune LET sau direct cu folosirea semnului
=, ca în exemplul precedent.
Sub atribuire()
‘ precizare varibilele care se folosesc mai jos trebuie in principiu declarate (create) inainte
LET cont=212 ‘ se atribuie valoarea numerica 212 pentru variabila cont
Den = “Mijloace fixe” ‘ se atribuie şirul „Mijloace fixe” pentru variabila den
Tip_C= True ‘ valoarea True este atribuită conturilor de activ
Data=#12/31/2004# ‘ se atribuie valoarea 31.12.2004 variabilei data
‘ Nota: Trebuie se foloseste semnul #, iar formatul este ll/zz/aaaa
End Sub

 Operaţia de atribuire prin citirea datelor introduse de utilizator este asigurată


de instrucţiunea InputBox. Cu alte cuvinte, această instrucţiune ne permite
introducerea de la tastatură a valorilor pentru o anumită variabilă. Exemplul
de mai sus se transformă în următorul:
Sub citire()
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0) ‘se permite citirea (preluarea) în
‘variabila cont a raspunsului dat de
‘ utilizator
Den = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)
Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)
End Sub

Formatul instrucţiunii InputBox este următorul:


InputBox(mesaj, [titlu, valoare_implicita])
Precizări:
- Mesaj trebuie scris între ghilimele sau se poate prelua dintr-o variabilă de tip
şir. Este textul ce apare ca explicaţie în interiorul ferestrei;
- Titlu şi valoare_implicită sunt facultative;
- Titlu trebuie scris intre ghilimele sau se poate prelua dintr-o variabilă de tip
şir. Este textul ce apare pe linia de titlu a ferestrei;
- Valoare_implicită este valoarea care va apare în rubrica de completat;
- Fereastra rezultată are şi butoanele predefinite OK şi Cancel (vezi figura
2.11)
Spre exemplu, din procedura Citire() rezultatul executării liniei
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0)
este prezentat în figura 2.17.
12 Instrumente software pentru afaceri

Figura 2.11 Rezultatul execuţiei liniei Cont = InputBox(“Simbol cont”,”Introduceti o


valoare”, 0)

 Operaţia de ieşire este uşor de evidenţiat cu ajutorul instrucţiunii MsgBox,


care permite afişarea unui text într-o fereastră de dialog. Cea mai simplă
utilizare este atunci când dorim sa vizualizăm conţinutul unei variabile, ca în
exemplul de mai jos.
Sub citire()
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0)
Den = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)
Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)

MsgBox ("Informatii despre cont") ‘ afiseaza text simplu


MsgBox ("Denumire cont: " & Den) ‘ afiseaza denumire cont cu text in fata
MsgBox ("Simbol cont: " & Str(cont)) ‘ afiseaza textul simbol cont: dupa care simbolul
introdus
MsgBox ("" & data) ‘ afiseaza o data calendaristica

End Sub

Prezentăm în figura 2.12 fereastra afişată pentru instrucţiunea MsgBox ("Denumire


cont: " & Den) şi a instrucţiunii MsgBox ("Denumire cont: " & Den).

Figura 2.12 Rezultate la execuţia instrucţiunilor de tip MsgBox

În chenarul de mai jos oferim spre exemplificare o utilizare mai complicată a


instrucţiunii MsgBox pentru preluarea răspunsului de la utilizator.
Sub MesajBox()
Dim Mesaj, Butoane, Titlu, Help, Raspuns, Rasp ' Definim variabilele de lucru
Mesaj = "Doriti sa continuati ?" ' Definim mesajul
Butoane = vbYesNo + vbCritical + vbDefaultButton2 ' Definim buttoanele
Titlu = "Titlu fereastra" ' Definim titlul ferestrei
Help = "Ajutor.txt" ' Definim fisierul de ajutor
Raspuns = MsgBox(Mesaj, Butoane, Titlu, Help, 1000)
If Raspuns = vbYes Then ' Selectie Yes
Rasp = "Yes" ' Executa o actiune pentru Yes
Else ' Selectie No
Rasp = "No" ' Executa o actiune pentru No
End If
End Sub
Structuri de date şi structuri de prelucrare 13

În figura 2.13. prezentăm rezultatul după lansarea în execuţie a procedurii de mai sus.

Figura 2.13 Preluare răspuns prin MsgBox

B. Structuri de control alternative


Aşa cum rezultă şi din figura 2.10 în cadrul structurilor de control alternative
distingem:
 structuri de control alternative duble;
 structuri de control alternative cu o ramură vidă;
 structuri de control alternative generalizate (multiple).
a. Codificarea structurilor de control alternative duble şi a celor cu ramură vidă se
realizează cu ajutorul comenzii: IF … THEN … ELSE … ENDIF. Formatul acestei comenzi
este:
IF <condiţie> THEN
<set_comenzi1>
[ELSE
<set_comenzi2>]
END IF

Pentru codificarea structurii de control alternative cu o ramură vidă formatul


comenzii IF devine:
IF <condiţie> THEN
<set_comenzi>
END IF

Se observă că în formatul precedent ramura ELSE este opţională fiind inclusă în


paranteze drepte.
Exemplu de utilizare – Vom exemplifica această structură de control pe selecţia
folder-ului (directorului) de lucru pentru o aplicaţie ce poate fi lansată în laboratoarele
facultăţii sau pe un calculator personal (acasă sau la serviciu).

Sub Mod_IF()
' construim fereastra de interogare a dorintei utilizatorului
Dim dir As Object
Set dir = CreateObject("Scripting.FileSystemObject")
Dim cale, cale_nou
Dim Mesaj, Butoane, Titlu, Help, Raspuns 'Definim variabilele de
lucru
Mesaj = "Lucrati in laboratoarele FEAA <Yes-Da; No-Nu>?" 'Definim mesajul
Butoane = vbYesNo + vbCritical + vbDefaultButton2 'Definim buttoanele
14 Instrumente software pentru afaceri

Titlu = "Selectati un raspuns !" 'Definim titlul ferestrei


Help = "Ajutor.txt" 'Definim fisierul de ajutor
Raspuns = MsgBox(Mesaj, Butoane, Titlu, Help, 1000) ‘Stocarea raspunsului in
Raspuns

' **** Selectia unitatii de lucru D sau Z

If Raspuns = vbYes Then


cale = "Z:"
Else
cale = "D:"
End If
ChDir (cale)

' **** Testarea existentei directorului VBA pe unitatea de disc selectata


cale_nou = "" & cale + "\VBA" 'construirea caii de lucru complete

If dir.FolderExists(cale_nou) Then 'testarea existentei directorului VBA


MsgBox "VBA este directorul de lucru de pe " & cale
Else
Raspuns = MsgBox("Nu exista directorul VBA pe " & cale, vbOKOnly, "Informatie")
MkDir (cale_nou) 'crearea noului director VBA in cazul in care
nu exista
Raspuns = MsgBox("VBA a fost creat si va fi directorul de lucru de pe " & cale, vbOKOnly,
"Informatie")
End If
ChDir (cale_nou) 'stabilirea directorului de lucru

End Sub

În procedura de mai sus se observă două instrucţiuni IF una după alta. Există însă
posibilitatea ca pe ramura Else a unei structuri IF să nu fie nici o secvenţă, ceea ce ne conduce
la o structură alternativă cu o ramură vidă de forma IF … THEN … END IF, dar şi la
posibilitatea ca pe oricare din cele două ramuri să apară o altă structură alternativă, ceea ce
ne-ar conduce la un IF imbricat de forma IF … THEN If …Then … Else … End If ELSE
… END IF.

b. Codificarea structurilor de control alternative generalizate se realizează cu


ajutorul comenzii: SELECT CASE … CASE … CASE ELSE … END SELECT. Formatul
general pentru această comandă este următorul:
SELECT CASE <var>
CASE <var_1>
<set_comenzi_1>
[CASE <var_2>
<set_comenzi_2>]
[CASE <var_k>
<set_comenzi_k>]
[…]
[CASE <var_m>
<set_comenzi_m>]
[CASE ELSE
<set_comenzi>]
END SELECT
Structuri de date şi structuri de prelucrare 15

Modul de utilizare a acestei comenzi este simplu şi constă în a identifica cazurile de


descris, care se vor reprezenta sub forma unor condiţii. De fiecare dată se compară conţinutul
variabilei <var> cu conţinutul variabilelor <var_1>, <var_2> … . Dacă se ajunge să fie
indeplinită o condiţie <var>=<var_k> se va executa set_comenzi_k (k poate fi o valoare din
intervalul 1,m). În cazul în care nu se îndeplineşte nici una din condiţii, se transferă contolul
pe ramura lui CASE ELSE spre a se executa setul de comenzi <set_comenzi>.
Exemplu de utilizare – Dorim să aflăm ziua din cadrul săptămânii pornind de la data
naşterii. Se ştie că datele calendaristice sunt reprezentate ca valori numerice, iar restul
împărţirii la 7, la care se adaugă 1, ne asigură obţinerea unui număr în intervalul 1-7.

Function zi(numzi As Byte) As String


Select Case numzi
Case 1
zi = "Luni"
Case 2
zi = "Marti"
Case 3
zi = "Miercuri"
Case 4
zi = "Joi"
Case 5
zi = "Vineri"
Case 6
zi = "Sambata"
Case 7
zi = "Duminica"
End Select
End Function

Sub case_zi()
Dim varzi As Date
varzi = InputBox("Introduceti data Dvs de nastere in format ll/zz/aaaa")
MsgBox ("Sunteti nascut(a) intr-o zi de " + zi((Int(varzi) Mod 7) + 1))
End Sub

Observaţie: (Int(varzi) Mod 7) + 1 asigură obţinerea restului la împărţirea lui varzi la 7 in


intervalul 1 – 7.
Exemplu de utilizare – În funcţie de distanţa în km la care se află localitatea dvs. se
va afişa un mesaj de apreciere a apropierii faţă de Iaşi.

Sub dist()
Dim d
d = InputBox("Introduceti distanta pana la localitatea dvs. in Km.")
Select Case d
Case Is <= 50
MsgBox ("Localitatea este foarte aproape, la distanta de " + Str(d) + " km.")
Case 51 To 100
MsgBox ("Localitatea este aproape, la distanta de " + Str(d) + " km.")
Case 101 To 250
MsgBox ("Localitatea este departe, la distanta de " + Str(d) + " km.")
Case Is > 250
16 Instrumente software pentru afaceri

MsgBox ("Localitatea este foarte departe, la distanta de " + Str(d) + " km.")
Case Else
MsgBox ("Distanta introdusa trebuie sa fie un numar intreg!")
End Select

End Sub

C. Structuri de control repetitive


În VBA structurile de control repetitive sunt realizate astfel:
 WHILE … WEND, pentru structuri repetitive condiţionate anterior. Setul de
comenzi se execută cât timp condiţia este adevărată.
 FOR … NEXT, pentru structuri repetitive cu număr stabilit de paşi.

WHILE … WEND
În VBA această structură repetitivă este considerată cea mai simplă, deoarece nu
oferă posibilitatea părăsirii forţate a setului de comenzi cu o instrucţiune de tipul EXIT.
Formatul său este:
WHILE conditie CÂT TIMP conditie
<set_comenzi> <set_comenzi>
WEND SFÂRŞIT_CÂT_TIMP
Iată un exemplu de utilizare a acestei structuri de prelucrare pe exemplul introducerii
de date în tabloul cu două dimensiuni pentru produsele care au intrat în magazin într-o
perioadă de timp stabilită de utilizator.
Sub Wend_tablou_2()
Dim i As Integer ' definirea variabilei pentru control executie
Dim var As Integer ' definirea variabilei de ciclare
i = InputBox("Numar de intrari in cadrul zilei: ")
Dim aprov(5, 100) ' definirea tabloului
var = 0
While var < i
aprov(0, var) = InputBox("Denumire produs: " & (var + 1))
aprov(1, var) = InputBox("Pret de intrare: " & (var + 1))
aprov(2, var) = InputBox("Unitate de masura: " & (var + 1))
aprov(3, var) = InputBox("Cantitate:" & (var + 1))
aprov(4, var) = InputBox("Data intrarii (ll/zz/aaaa):")
var = var + 1
Wend
End Sub
Observaţie: Pentru a nu se repeta la infinit este necesară introducerea unei clauze de
actualizare a valorii variabilei de ciclare var (vezi linia var = var + 1).

FOR … NEXT
Această structură oferă posibilitatea prestabilirii numărului de execuţii pentru
set_comenzi. Din punct de vedere logic se aseamănă cu WHILE … WEND, cu precizarea că
actualizarea lui i se face cu clauza NEXT . Formatul său este:
Structuri de date şi structuri de prelucrare 17

FOR i =1 to n PENTRU i = 1 la N
<set_comenzi> <set_comenzi>
NEXT i URMĂTORUL i

Vom adapta exemplul precedent în cazul utilizării structurii de prelucrare FOR …


NEXT, dar pe zile ale săptămânii.
Sub For_tablou_2()
Dim i As Integer ' definirea variabilei de ciclare
Dim aprov(5, 100) ' definirea tabloului
Dim zi As String
i=0
For i = 0 To 6
Select Case i
Case 0
zi = "Luni"
Case 1
zi = "Marti"
Case 2
zi = "Miercuri"
Case 3
zi = "Joi"
Case 4
zi = "Vineri"
Case 5
zi = "Sambata"
Case 6
zi = "Duminica"
End Select
aprov(0, i) = InputBox("Denumire produs intrat " & zi & ":")
aprov(1, i) = InputBox("Pret de intrare:")
aprov(2, i) = InputBox("Unitate de masura:")
aprov(3, i) = InputBox("Cantitate:")
aprov(4, i) = InputBox("Data intrarii (ll/zz/aaaa):")
Next i
End Sub

DO … LOOP
Această structură de prelucrare de tip repetitiv permite utilizarea a două clauze
diferite: pentru transferul controlului în cazul îndeplinirii condiţiei (WHILE) şi pentru
transferul controlului în cazul neîndeplinirii condiţiei (UNTIL). În varianta cu WHILE DO
… LOOP corespunde structurii de control repetitive condiţionate anterior, în timp ce în
varianta cu UNTIL, permite codificarea structurilor de control condiţionate posterior (adică
set_comenzi se execută înaintea verificării condiţiei, deci cel puţin o dată).

DO WHILE <conditie>
<set_comenzi_1>
[EXIT DO]
<set_comenzi_2>
LOOP

DO UNTIL <conditie>
<set_comenzi_1>
[EXIT DO]
<set_comenzi_2>
18 Instrumente software pentru afaceri

LOOP

DO <conditie>
<set_comenzi_1>
[EXIT DO]
<set_comenzi_2>
LOOP [UNTIL|WHILE]

Oferim două exemple de utilizare a structurii repetitive DO ... LOOP


Sub citire()
DO UNTIL CONT<900 and CONT>99
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0) ‘se permite citirea (preluarea) în
‘variabila cont a raspunsului dat de
‘ utilizator
LOOP
Den = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)
Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)
End Sub

Sub citire()
DO WHILE CONT>900 and CONT<100
Cont = InputBox(“Simbol cont”,”Introduceti o valoare”, 0) ‘se permite citirea (preluarea) în
‘variabila cont a raspunsului dat de
‘ utilizator
LOOP
Den = InputBox(“Denumire cont:”,”Introduceti o valoare”, “”)
Data= InputBox(“Data operatiei:”,”Introduceti o valoare in formatul ll/zz/aaaa”, 0)
End Sub

Exemple de întrebări teste grilă


1. Care structură de control este denumită incorect:
a. Secvenţială
b. Repetitivă
c. Iterativă
d. Repetitiv-Indexată
2. Tipul de dată Arbore este:
a. Elementar
b. Structurat
c. Stivă

S-ar putea să vă placă și