You are on page 1of 84

INFORMATICĂ CU APLICAŢII ÎN

PSIHO-PEDAGOGIE

Prof. univ dr. Cornel HAVÂRNEANU


Cristian OPARIUC-DAN
Cuprins
Cuprins.......................................................................................................................................2
În loc de introducere..................................................................................................................4
Scopul şi obiectivele cursului....................................................................................................7
1 Ce este un calculator................................................................................................................8
1.1 Evoluţia sistemelor de calcul. Scurt istoric.......................................................................8
1.2 Întrebări recapitulative şi teme........................................................................................15
2 Hardware................................................................................................................................17
2.1 Funcţia de gândire...........................................................................................................17
2.1.1 Placa de bază............................................................................................................18
2.2 Funcţia de memorare.......................................................................................................20
2.2.1 Unităţile de disc dur (Hard disk)..............................................................................21
2.2.2 Unităţile de dischetă.................................................................................................21
2.2.3 Unităţile de CD şi DVD...........................................................................................22
2.3 Funcţia de ascultare.........................................................................................................22
2.3.1 Tastatura...................................................................................................................22
2.3.2 Mouse-ul..................................................................................................................23
2.4 Funcţia de monitorizare..................................................................................................23
2.4.1 Placa video...............................................................................................................23
2.4.2 Monitorul.................................................................................................................24
2.5 Funcţia de comunicare....................................................................................................24
2.5.1 Imprimantele............................................................................................................24
2.5.2 Modemurile..............................................................................................................25
2.5.3 Plăcile de reţea.........................................................................................................25
2.6 Întrebări recapitulative şi teme........................................................................................25
3 Software.................................................................................................................................26
3.1 Aplicaţiile........................................................................................................................27
3.2 Utilitarele........................................................................................................................29
3.3 Sistemele de operare.......................................................................................................30
3.4 Limbajele de programare................................................................................................32
3.4.1 Limbajul maşină.......................................................................................................33
3.4.2 Limbajul de asamblare.............................................................................................34
3.4.3 Limbaje de nivel înalt..............................................................................................35
3.5 Întrebări recapitulative şi teme........................................................................................36
4 Aplicaţii pentru prelucrat de texte..........................................................................................37
4.1 Editoarele de texte...........................................................................................................37
4.2 Procesoarele de texte.......................................................................................................38
4.3 Caracteristici ale textelor................................................................................................39
4.4 Întrebări recapitulative şi teme........................................................................................40
5 Programe de calcul şi programe statistice..............................................................................41
5.1 Programe de calcul tabelar..............................................................................................41
5.2 Programe de analiză statistică.........................................................................................42
5.3 Întrebări recapitulative şi teme........................................................................................43
6 Baze de date...........................................................................................................................44
6.1 Funcţiile unui sistem SGBD...........................................................................................45
6.1.1 Stocarea, regăsirea şi reactualizarea datelor.............................................................45
6.1.2 Catalog accesibil utilizatorilor.................................................................................46
6.1.3 Asigurarea tranzacţiilor............................................................................................46
6.1.4 Servicii de control concurente..................................................................................46

2
6.1.5 Servicii de reconstituire...........................................................................................46
6.1.6 Servicii de autorizare...............................................................................................46
6.1.7 Suport pentru comunicarea datelor..........................................................................47
6.1.8 Servicii de integritate...............................................................................................47
6.2 Proiectarea bazelor de date.............................................................................................47
6.2.1 Structura unei baze de date relaţionale.....................................................................47
6.2.2 Chei..........................................................................................................................48
6.2.3 Integritatea relaţională..............................................................................................49
6.2.4 Normalizarea bazelor de date...................................................................................49
6.3 Aplicaţie..........................................................................................................................51
6.4 Întrebări recapitulative şi teme........................................................................................54
7 Sisteme de asistenţă psihologică computerizată....................................................................56
7.1 Teste psihologice individuale..........................................................................................56
7.2 Sisteme de asistenţă psihologică integrate......................................................................58
7.3 Particularităţi de interfaţă cu utilizatorul în testele psihologice computerizate..............63
7.4 Întrebări recapitulative şi teme........................................................................................65
8 Elemente de arhitectură a sistemelor software.......................................................................66
8.1 Ciclul de viaţă al unei aplicaţii........................................................................................66
8.1.1 Analiza cerinţelor şi modelarea sistemului..............................................................66
8.1.2 Proiectarea arhitecturii şi a detaliilor.......................................................................67
8.1.3 Implementarea..........................................................................................................67
8.1.4 Testarea....................................................................................................................68
8.1.5 Modele de dezvoltare...............................................................................................68
8.2 Analiza şi proiectarea structurată....................................................................................69
8.3 Analiza şi proiectarea orientată pe obiecte......................................................................70
8.4 Întrebări recapitulative şi teme........................................................................................72
9 Structuri şi elemente de programare......................................................................................73
9.1 Structura generală a unei aplicaţii...................................................................................73
9.2 Variabile, constante şi tipuri de date ..............................................................................74
9.3 Structuri de control..........................................................................................................76
9.3.1 Structuri decizionale................................................................................................76
9.3.2 Structuri repetitive....................................................................................................77
9.4 Întrebări recapitulative şi teme........................................................................................79
10 Inteligenţa artificială şi sisteme expert.................................................................................80
10.1 Domenii ale inteligenţei artificiale................................................................................81
10.2 Structura generală a unui sistem de inteligenţă artificială............................................81
10.3 Limbaje folosite în inteligenţa artificială......................................................................82
10.4 Întrebări recapitulative şi teme......................................................................................83
Referinţe bibliografice.............................................................................................................84

3
În loc de introducere
Despre calculatoare şi utilizarea acestora s-au scris şi se vor mai scrie încă multe cărţi.
Unele pentru începători, altele de nivel mediu sau lucrări avansate, toate încercând o
perspectivă de abordare cât mai sistematică posibil a acestui domeniu, astfel încât este greu de
stabilit care dintre acestea sunt cele mai recomandate unui anumit utilizator. În domeniul
ştiinţelor socio-umane, lucrurile sunt şi mai complexe. Puţini utilizatori sunt familiarizaţi cu
folosirea eficientă a unui sistem de calcul, mai puţini cunosc la un nivel satisfăcător modul de
lucru al computerului şi mult mai puţini sunt aceia care ştiu precis ce aplicaţii sunt potrivite
meseriei lor.
Suntem în plină „epocă a informaţiei” iar termenul nu este deloc deplasat. Perspectiva
XAC – meserie de bază asistată computer – nu mai este în măsură să intimideze pe nimeni.
Analfabeţii de astăzi nu mai sunt doar cei care nu ştiu să scrie şi să citească, ci şi cei care nu
ştiu să utilizeze un sistem de calcul. Este aproape imposibil să ne imaginăm o bună
documentare, o perfecţionare profesională continuă, o tendinţă către performanţă, în absenţa
accesului la informaţie. Din fericire (sau din păcate) în zilele noastre informaţia este mai
perisabilă decât oricând. Cu greu ne mai putem imagina azi personajul davincian, expert în
toate, renascentistul genial, mintea enciclopedică. Specializarea este tot mai strictă, informaţia
se dezactualizează, am putea spune, zilnic în măsura în care accesul la resurse este mai uşor şi
mai rapid ca niciodată, toate acestea având un singur element comun esenţial – tehnologia
informaţiei.
Nu putem rămâne nici noi, specialiştii în ştiinţele socio-umane, refractari la progresul
tehnologic. Vrând nevrând, fie că ne place sau nu, fie că vom accepta sau nu asta, va trebui să
ne adaptăm. Nu mai este practic stilul unui psiholog corectând teste psihologice pe baza grilei
clasice perforate şi irosind astfel timp preţios, într-un moment în care tehnologia permite
descifrarea şi „citirea” scrisului de mână iar computerul poate corecta şi interpreta o foaie de
răspuns la un test psihologic mult mai repede şi mai precis decât o va putea face vreodată un
individ uman. E demodat şi un statistician lucrând analize factoriale cu creionul şi pierzând
astfel zile întregi, în timp ce computerul face acest lucru doar în câteva secunde. Exemplele ar
putea continua la nesfârşit.
Desigur, reacţii precum aceea că utilizarea computerului „dezumanizează” demersul
psihologic există şi vor exista. Nu vom pleda pentru înlocuirea psihologului de către maşină.
Susţinem că utilizarea computerului în sarcini de rutină duce la posibilitatea ca psihologul să
se concentreze pe esenţa muncii sale – analiza psihologică a datelor, evaluare, diagnostic,
consiliere – şi nu pe sarcini mai mult sau mai puţin scriptologice. Sigur, cei care o viaţă
întreagă au rezumat examenul psihologic la o „numărătoare de X-uri”, la trasarea unui profil
şi la interpretări „după manual” se vor simţi dezarmaţi când vor observa că un sistem de
calcul poate face aceste lucruri mult mai repede şi mai bine; vor fi puşi în faţa unei
„abundenţe de timp” cu care probabil nu vor şti ce să facă. Un lucru devine cert: psihologul
trebuie să lase partea de rutină în seama maşinilor şi să abordeze în termeni de maximă
eficienţă rolul de specialist. Cu alte cuvinte, noi să facem psihologie, iar computerele să ne
furnizeze şi să ne prelucreze datele. Credeţi-mă, sunt mai bune decât noi la asta!

4
Prezenta lucrare se doreşte a fi un curs practic. Deşi nu vor lipsi precizările teoretice,
nuanţările conceptuale şi modelele schematice, vor predomina exemplificarea, demonstraţia şi
autotestul. Parcurgerea cu atenţie a exemplelor, lucrul individual cu computerul, rezolvarea
sarcinilor şi a problemelor vor garanta succesul oricărui cititor perseverent. Dacă vom reuşi
îndeplinirea acestor obiective, rămâne la latitudinea dumneavoastră să apreciaţi.
Cursul este structurat în trei parţi:
1. Arhitectura sistemelor de calcul şi modul de funcţionare al calculatoarelor. Vor
fi tratate probleme legate de structura fizică a calculatorului şi modul acestuia de
funcţionare, sisteme de operare, procedura de pornire a computerului, memorii şi
tipuri de memorii, suporturi externe de informaţie, utilizarea în siguranţă a
sistemelor de calcul. Un istoric al evoluţiei computerelor va permite cititorului
formarea unei perspective generale în ceea ce priveşte imensul salt tehnologic la
care am fost martori în ultimele decenii. Vor fi prezentate tendinţe şi perspective
viitoare în evoluţia calculatoarelor, limite preconizate, soluţii de viitor. Această
primă parte va familiariza cititorul cu ceea ce este şi ceea ce nu este o maşină, vor fi
expuse limitele actuale ale tehnologiei informaţiei, vor fi prevăzute anumite tendinţe
de viitor. Abordările practice sunt indispensabile înţelegerii procedurilor corecte de
lucru cu computerul, mai ales că din experienţa avută am constatat că cele mai
multe „defecţiuni” apar de fapt din cauza unei insuficiente cunoaşteri a modalităţii
de lucru. Cititorul va fi învăţat să lucreze în siguranţă cu maşina sa, va fi prevenit în
legătură cu posibilitatea apariţiei unor pierderi de informaţie în urma unor acţiuni
ale sale, va fi instruit în ceea ce priveşte lucrul cu eventualele componente fizice ale
sistemului cu care poate veni în contact pentru a evita deteriorarea calculatorului.
2. Programe-aplicaţie utilizate în domeniul ştiinţelor sociale. Cea de-a doua parte a
lucrării tratează cele mai importante programe cu care urmează a se confrunta un
specialist în domeniul socio-uman. Astfel vor fi abordate elemente legate de
procesoare de texte în care va fi stabilit locul procesoarelor de texte în cadrul
aplicaţiilor de birou, diferenţele dintre procesoarele de texte şi alte programe
dedicate prelucrării de texte, vor fi accentuate noţiunile fundamentale legate de texte
şi paragrafe, standarde în domeniul redactării textelor. Urmează apoi o expunerea a
aplicaţiilor de calcul tabelar cu referire la specificul acestor programe, diferenţele
existente între programele de calcul tabelar şi alte tipuri de programe înrudite, locul
şi rolul acestora în ansamblul aplicaţiilor şi suitelor de aplicaţii de birou. Sistemele
de gestiune de baze de date vin în completarea informaţiilor, prezentându-se tipurile
de produse orientate spre bazele de date, criterii de performanţă ale acestora, teoria
şi practica proiectării bazelor de date. Această secţiune se completează apoi cu
aplicaţii specializate în domeniul ştiinţelor socio-umane şi anume cu programele de
analiză statistică computerizată şi cu sistemele de asistenţă psihologică
computerizată. Vor fi prezentate principii de bază, teorii şi modele care stau la baza
analizei psihologice a datelor şi a asistenţei psihologice computerizate.

5
3. Programarea computerelor în ştiinţele sociale reprezintă ultima parte a acestui
curs destinat specialiştilor în ştiinţele sociale şi nu urmăreşte formarea de
programatori în acest domeniu. Pentru acest scop este necesar un alt tip de educaţie.
Vor fi abordate aici probleme legate de evoluţia sistemelor de programare, ciclul de
viaţă al aplicaţiilor, modele şi modelarea proiectelor informatice, medii de
dezvoltare folosite în prezent, elemente de sisteme expert şi inteligenţă artificială
uzitate în ştiinţele sociale. Exemplificarea şi accentul pe aplicabilitate, dublată de
parcurgerea bibliografiei recomandate poate susţine formarea unor abilităţi în acest
domeniu care să permită unui nespecialist în ştiinţele informatice să-şi scrie singur
programele de care are nevoie.
Înainte de a începe, o singură menţiune ar mai rămâne de făcut. Am accentuat ceva
mai devreme asupra perisabilităţii tehnologice în acest domeniu. Deşi la data scrierii acestui
material informaţiile erau de ultimă oră, este mai mult decât cert că peste foarte scurt timp,
datele prezentate aici vor fi depăşite. În linii mari, principiile rămân valabile, însă informaţiile
care descriu performanţe tehnice vor fi, în mod sigur, depreciate. De câte ori va fi posibil,
vom sublinia în text acest lucru.

6
Scopul şi obiectivele cursului
Scopul unităţii de curs:
(a) să ofere cursanţilor noţiuni teoretice şi aplicative necesare utilizării computerului în
domeniul ştiinţelor sociale;
(b) să familiarizeze cursanţii cu aplicaţiile informatizate din sfera ştiinţelor socio-umane.
(c) să familiarizeze cursanţii cu elementele constructive ale programelor informatice şi să
ofere iniţierea în realizarea de aplicaţii informatizate în domeniul ştiinţelor socio-umane
Obiective operaţionale:
După parcurgerea acestei unităţi de curs, studenţii ar trebui să aibă următoarele abilităţi:
(a) să identifice principalele etape ale evoluţiei computerelor din punct de vedere tehnologic;
(b) să identifice principalele componente hardware ale sistemelor de calcul şi să precizeze
rolul îndeplinit de către acestea în ansamblul arhitecturii generale
(c) să identifice principalele componente software implicate în funcţionarea computerelor şi să
precizeze rolul îndeplinit de fiecare clasă de aplicaţii;
(d) să identifice rolul jucat de aplicaţiile pentru procesat texte şi modul lor de utilizare în
domeniul ştiinţelor socio-umane ;
(e) să identifice rolul jucat de foile de calcul tabelar şi aplicaţiile statistice şi modul lor de
utilizare în domeniul ştiinţelor socio-umane;
(f) să precizeze funcţiile şi rolul îndeplinit de aplicaţiile de baze de date în domeniul ştiinţelor
socio-umane şi să identifice etapele de bază în proiectarea acestora;
(g) să realizeze baze de date eficiente în vederea stocării informaţiilor utilizate în domeniul
propriu de activitate;
(h) să identifice principalele domenii de computerizare a probelor psihologice;
(i) să precizeze funcţiile şi rolul jucat de probele psihologice computerizate în ansamblul
examinărilor psihologice;
(j) să identifice principalele momente ale realizării aplicaţilor computerizate;
(k) să imagineze modele logice ale aplicaţiilor computerizate şi să stăpânească structurile de
programare implicate în dezvoltarea acestora ;
(l) să identifice principalele elemente ale sistemelor inteligente precum şi principiile care
guvernează funcţionarea acestora;
Modalităţile de evaluare vor urmări:
(a) Aprecierea rezultatelor obţinute la examenul scris din conţinutul cursului (pondere 40% din
nota finală – nota minimă de promovare este 5);
(b) Aprecierea rezultatelor obţinute în cadrul lucrărilor practice de laborator (pondere 60% din
nota finală – nota minimă de promovare este 5).
Notă:
Prezenţa la activităţile tutoriale este obligatorie deoarece se vor realiza lucrări practice de
laborator.
Prezenţa la examenul scris este condiţionată de prezenţa la activităţile tutoriale şi de
elaborarea unei teme scrise folosind ca referinţă temele sugerate în suportul de curs.

7
1 Ce este un calculator
Ceea ce îndepărtează oamenii de înţelegerea computerelor este acel element de mister
din jurul acestora. Pentru majoritatea, imaginea unui calculator este aceea a unei maşini
gânditoare, ceva mai „inteligentă” decât dumneavoastră şi pe care nu o puteţi pricepe. Unii
vorbesc chiar de un „creier electronic” şi prin urmare utilizarea unei asemenea maşini (ca să
nu mai vorbim de programare) pare la fel de delicată şi solicitantă ca şi o operaţie pe creier.
Mulţi experţi chiar sugerează acest lucru şi în plus ideea că trebuie cu orice preţ consultat un
„guru” înaintea cumpărării şi instalării unui calculator, altminteri e mare nenorocire. Cu atâta
fragilitate în jur, absenţa sfaturilor unui expert poate provoca un adevărat dezastru. Ceea ce
este însă mai ciudat, e faptul că dimensiunea „sfaturilor” este invers proporţională cu suma
care vă rămâne în buzunar.
Realitatea este că nici un calculator nu se apropie de gândirea umană mai mult decât o
face o maşină de spălat. El nu are emoţii, sentimente, motivaţii şi nici voinţă. Cu alte cuvinte,
nu face nimic de la sine fără a fi instruit în prealabil şi fără a i se specifica fiecare pas ce
trebuie urmat. Impulsurile sale nu sunt altceva decât impulsuri electrice, desigur atent
controlate.
Totuşi calculatoarele sunt utile prin faptul că vă fac viaţa mai uşoară şi mai distractivă.
Această utilitate însă nu vine de la partea sa fizică, de la acea cutie de tablă pe care o aveţi sub
birou şi pe care o vom numi de acum înainte hardware1 ci de la partea logică, de la
programele pe care le rulează şi pe care le vom numi software. Fără nici un ajutor, un
computer nu face nimic. Este ca un om fără minte. Departe de a-şi folosi vasta inteligenţă într-
un complot pentru preluarea controlului asupra lumii sau asupra timpului dumneavoastră
liber, un computer nu este deloc imaginativ. El nu face decât să vă execute ordinele. În loc să
creeze noi idei, computerele vă ajută în schimb să daţi viaţă ideilor, să vă depăşiţi
posibilităţile fizice. Într-un cuvânt, un computer este o unealtă.

1.1 Evoluţia sistemelor de calcul. Scurt istoric


Pentru a ne imagina imensul salt tehnologic la care asistăm, considerăm că este utilă o
prezentare a sistemelor de numeraţie, a evoluţiei calculelor şi implicit a maşinilor de calcul.
Sistemul de numerotare folosit în mod curent de către omenire, după cum ştim, este
sistemul zecimal, bazat pe cifrele de la 0 la 9. Numele „zecimal” provine din latinescul decem
care înseamnă zece. Ştim bine că acest sistem s-a impus în Europa în jurul secolului XIII şi
provine din sistemul de numerotare arab, care la rândul său a fost „importat” de la hinduşi.
Acest sistem se mai numeşte şi sistem în baza 10 sau sistem radix-10, unde termenul „radix”
vine tot din latinescul cu acelaşi nume şi care semnifică rădăcină. În mod cert, sistemul
zecimal a fost universal adoptat datorită faptului că avem zece degete. Dacă am fi avut 8 sau
16 degete, probabil că am fi folosit sistemul în baza 8 sau în baza 16 (şi astfel ne-am fi
apropiat mai mult de sistemul de numerotare al computerelor). Astfel, de ce să nu

1
Prin hardware nu înţelegem doar „cutia de tabla” menţionată. Aceasta se numeşte unitate centrală şi o vom
trata detaliat mai târziu. Hardware reprezintă toate componentele fizice ale computerului. Monitorul, tastatura,
mouse-ul, toate intră în categoria globală de hardware

8
recunoaştem, primul instrument pe care oamenii l-au folosit pentru a calcula – iar unii îl
folosesc chiar şi în zilele noastre – au fost propriile lor degete. Poate nu este o coincidenţă
faptul că englezescul „digit” se referă atât la deget cât şi la o expresie numerică.
Probabil că, între anii 30.000 – 20.000 ÎC, pentru a reprezenta numerele mai mari,
primii oameni foloseau obiectele disponibile în imediata lor vecinătate, cum ar fi mici bucăţi
de piatră. Avantajul acestei metode în comparaţie cu numărarea „pe degete” era acela că
rezultatul reprezentării poate fi astfel stocat şi puteau fi efectuate calcule (sigur, cu condiţia să
nu mişte nimeni pietrele). Din nou, nu este o coincidenţă faptul că termenul de „calcul”
provine din latinescul similar calculum care înseamnă bucată mică de piatră.
Cele mai vechi obiecte folosite pentru a reprezenta numere au
fost oasele care prezentau crestături. Aceste oase, descoperite în Europa
de Vest, datează din perioada Aurignaciană, acum 20.000-30.000 de ani,
şi corespund apariţiei „Omului de Cro-Magnon”. Astfel, în anul 1937 a
fost descoperit în Cehoslovacia un os de lup, vechi de peste 20.000 de
ani şi care prezenta crestături grupate câte 52.
Ca element de curiozitate, o bucată de os descoperită în Africa şi datând din jurul
anului 8.500 ÎC prezenta crestături reprezenând… numerele prime 11, 13 şi 19. Este
surprinzător faptul că în acea perioadă oamenii aveau şi altfel de preocupări în afară de hrană
şi supravieţuire.
Sistemul nostru zecimal este un sistem poziţional, adică semnificaţia unui număr
depinde de poziţia în care se află şi de semnificaţia numărului însuşi. De exemplu, numărul 3
pe prima poziţie înseamnă pur şi simplu 3; pe a doua poziţie înseamnă 30 şi aşa mai departe.
Astfel, un sistem de numerotare care se divide prin multe numere, în special mici, prezintă
numeroase avantaje pentru operaţiile aritmetice. Sistemul zecimal poziţional, provine de la
babilonieni, care foloseau în jurul anului 1900 ÎC un sistem de numerotare poziţional în
baza… 60, considerat ca fiind primul sistem poziţional apărut. Deşi pare a fi o bază foarte
mare, 60 este cel mai mic număr care se divide perfect cu 2, 3, 4, 5 şi 6, permiţând de
asemenea lucrul în sub-bazele 6 şi 10.
Tot legat de babilonieni, în perioada 1000 – 500 ÎC a apărut primul mecanism de
calcul şi anume abacul, deşi unii experţi consideră că acesta ar fi fost inventat de chinezi, în
aceeaşi perioadă. Cuvântul abac provine din latină, care l-a preluat din grecescul abax venit
prin filieră feniciană (abak) şi care semnifică „nisip”. Unii consideră însă cuvântul de
provenienţă ebaică (abhaq) care semnifică „praf”. Aproape sigur primul abac a fost format
din mici pietre plasate pe linii desenate pe nisip. Ulterior acestea au fost înlocuite cu beţe, sau
bucăţi de piele înşirate pe fire de păr împletite. Au existat diferite variante de abac, însă cele
mai populare au fost cele într-un sistem de numerotaţie dublu, în baza 2 şi în baza 5,
simulându-se astfel sistemul zecimal. Abacul nu este considerat un calculator mecanic ci
primul mecanism care ajuta la efectuarea calculelor.
Primele diagrame logice pentru a reprezenta conceptele şi relaţiile dintre ele datează
din jurul anului 350 ÎC, moment în care Aristotel folosea structuri arborescente pentru a
2
Copyright (c) 1997. Maxfield & Montrose Interactive Inc.

9
reprezenta relaţiile şi sub-relaţiile dintre diferite elemente. Asemenea diagrame, întâlnite şi în
operele medievale, sunt cunoscute sub denumirea de „Arborele lui Porphyry”. Acest gen de
reprezentări logice au rămas neschimbate până în anul 1761 când genialul matematician
Leonhard Euler a introdus un sistem geometric care putea genera soluţii la probleme
urmându-se o structură logică.
Conceptul de zero şi conceptul de număr negativ au apărut cu mult după numerele
naturale, deoarece oamenii nu erau capabili să-l înţeleagă. Primii care l-au folosit au fost tot
babilonienii care reprezentau zero printr-un spaţiu liber. Pentru ei, conceptul de zero
semnifica doar absenţa. Zero, aproximativ în accepţiunea de astăzi, apare în India în jurul
anului 600. Numerele negative însă apar mult mai aproape de zilele noastre, nefiind bine
înţelese până prin perioada modernă. Multă vreme numerele negative, deşi apărute în
calculele unor matematicieni renumiţi, au fost considerate ca fiind dincolo de infinit.
Primul om din istoria logicii formale care a folosit un
dispozitiv mecanic pentru a genera concepte logice a fost teologul
spaniol Ramon Lull care în 1274 a construit o serie de dispozitive
numite discurile lui Lull, considerate primele dispozitive logice.
Acestea conţineau un număr diferit de cuvinte, cifre sau simboluri
iar prin rotire se combinau în diferite forme rezultând expresii
logice. Mai târziu aceste idei ale lui Lull au aprins imaginaţia
multor savanţi, cum ar fi Gottfried von Leibnitz.
În jurul anului 1300, filozoful şi teologul englez William din Occam pune bazele unei
logici speciale, care mai târziu, peste aproximativ 500 de ani, va fi numită „transformarea
DeMorgan”, un set de concepte ce stau la baza aritmeticii în baza 2. Dealtfel, limbajul de
programare OCCAM a fost denumit astfel în onoarea sa.
Cele mai multe surse îl citează pe
matematicianul Blaise Pascal ca fiind inventatorul
primei maşini de calculat din lume. Realitatea este
însă aceea că prima maşină de calculat a fost gândită
de Leonardo da Vinci cu aproape 150 de ani înaintea
lui Blaise
Pascal.
Contribuţia sa în acest domeniu a rămas necunoscută
până în 1967 când au fost descoperite două dintre
carnetele sale de notiţe. Acestea conţineau desenul
unui calculator mecanic datat în jurul anului 15003. După această descoperire, IBM a avut
curiozitatea să-l construiască, rezultând un model perfect funcţional4.
În 1600, matematicianul scoţian John Napier, cunoscut pentru că a pus bazele
logaritmilor, a conceput un sistem de calcul numit „Zarurile lui Napier”, fiind astfel iniţiatorul
riglelor de calcul. Acest sistem nu era altceva decât o modalitate tabelară de calcul matematic,

3
Imagine preluată de la IBM
4
Imagine preluată de la IBM

10
semiautomatizată5. William Oughtred a folosit în 1621 logaritmii lui Napier pentru a realiza
riglele sale de calcul, instrumente extrem de performante care au rezistat peste 300 de ani,
până în zilele noastre.
Din nou Blaise Pascal este detronat de pe poziţia de prim inventator la unei maşini de
calculat, cu 50 de ani mai devreme, de către astronomul şi
matematicianul german Wilhem Schickard care într-o scrisoare către
Johanner Kepler afirmă că a început lucrul la maşina sa de calculat.
Acesta scria că a construit o maşină care „… calculează automat
numerele introduse adunându-le, scăzându-le, înmulţindu-le şi
împărţindu-le”. Din păcate, nu există nici un exemplar original al
acestei maşini, însă pe baza documentelor sale s-a construit o maşină funcţională.
În 1640, Blaise Pascal construieşte prima maşină mecanică de calculat, ajutat şi
finanţat de tatăl său6. Modelul devine operaţional în 1642
iar în următorii 10 ani el construieşte 50 de asemenea
maşini. Maşina putea doar adăuga şi scădea numere iar
înmulţirea şi împărţirea se făcea prin serii succesive de
adunări respectiv scăderi. La un nivel mai avansat de
analiză, maşina de fapt ştia doar să adune numerele,
deoarece scăderea era efectuată prin adunarea unui număr cu complementul celuilalt număr7.
Surprinzător, computerele moderne lucrează exact după acelaşi principiu.
În 1670, preluând ideea lui Pascal, Gottfried von Leibnitz a îmbunătăţit maşina de
calculat a lui Pascal integrând operaţii de înmulţire, împărţire şi extragere a rădăcinii pătrate.
Ca element informativ, Leibnitz a fost acceptat la
studii universitare la vârsta de 15 ani pe care le-a şi
absolvit doi ani mai târziu fiind un susţinător al
utilizării sistemului binar de numeraţie8. Maşinile
lui Pascal şi Leibnitz sunt considerate a fi
„strămoşii” calculatoarelor de astăzi, iar variante după asemenea dispozitive s-au produs până
la apariţia echivalentelor lor electronice, în jurul anilor 1970.
Cei care iau pentru prima dată contact cu un computer se aşteaptă probabil ca tastele
să fie dispuse în ordine alfabetică. În realitate acestea sunt dispuse după frecvenţa utilizării
acestora şi este interesant de ştiut că primul patent englezesc al unei maşini de scris şi implicit
al unei tastaturi datează din 1714, obţinut fiind de către inginerul Henry Mill. Din păcate,
maşina sa de scris nu a fost niciodată realizată.
În anul 1800, un ţesător francez numit Joseph-Marie Jaquard a inventat o metodă de a
controla automat procesul tehnologic prin înregistrarea pe o cartelă perforată a unui şablon de
5
Imagine preluată de la IBM
6
De menţionat că toate celelalte maşini au fost construite după schiţe care s-au dovedit a fi funcţionale. Nu a
existat nici un exemplar original construit de către autor. Totuşi, Blaise Pascal rămâne primul care a proiectat şi a
construit o asemenea maşină.
7
Imagine preluată de la IBM
8
Imagine preluată de la IBM

11
proces. Ideea acestuia a stat la baza numeroaselor aplicaţii automate în vremea respectivă
precum redarea melodiilor de către pianele automate iar mai târziu a constituit una dintre
primele forme de stocare a informaţiei pentru computere9.
Primul dispozitiv considerat a fi un computer în înţelesul modern al termenului a fost
conceput în 1822 de către matematicianul englez Charles Babbage. În acea vreme, tabelele
matematice precum logaritmii şi funcţiile trigonometrice erau făcute de echipe de
matematicieni care lucrau în permanenţă. Aceştia se numeau calculatori („computers” în
engleză) şi de aici provine şi termenul, folosit iniţial
pentru a descrie o profesie şi nu o maşină. Babbage a
propus construirea unei maşini, numită motor
diferenţial, care să calculeze automat aceste tabele.
Ideea a stat la baza concepţiei unei maşini mult mai
complexe, numită „motor analitic”. Abia peste 150 de
ani de la concepţie maşina a fost realizată pe baza schiţelor originale. Aceasta avea peste 4000
de componente şi cântărea 3 tone. Din 1830 şi până la moartea sa, Babbage a lucrat la
„motorul analitic”, o extensie mult mai sofisticată a ideii sale de bază. Motorul analitic
folosea cartelele inventate de Jaquard pentru a controla deciziile, fiind prima maşină care
efectua calcule bazate pe rezultatele anterioare. Programul pentru această maşină a fost
realizat de Augusta Ada Lovelace, fiica poetului englez Lord Byron, considerată ca fiind
primul programator din istorie.
În perioada în care Babbage lucra la motorul său analitic, un alt matematician, George
Bool punea bazele unei alte forme de matematică, numită matematica în baza 2 care folosea
doar două cifre, 0 şi 1. Algebra sa, numită şi algebră booleană, a rămas accesibilă doar
filozofilor şi logicienilor din acea perioadă, până în epoca modernă, când un tânăr student,
numit Claude Shannon a descoperit, în 1938, importanţa ei în designul electronic.
În 1857, la 20 de ani după inventarea
telegrafului, Sir Charles Wheatstone realizează prima
formă de stocare şi transmisie a datelor sub forma
benzilor de hârtie care şi-a găsit imediat
aplicabilitate în telegrafie. Banda de hârtie folosea
două rânduri de orificii pentru a reprezenta
punctele şi liniile alfabetului Morse. Astfel,
mesajele puteau fi pregătite, transmise şi stocate.
Bazându-se pe această idee, primii designeri de
computere au sesizat importanţa acestui procedeu
pentru stocarea datelor. Astfel au apărut benzile
pentru computer, cu 5 canale, fiecare linie reprezentând le la 1 la 32 de caractere. Odată cu
necesitatea stocării mai multor caractere, numărul canalelor a crescut la 6 şi apoi la 8.
Modelele ulterioare de cititoare pentru asemenea benzi foloseau un spot luminos şi un senzor

9
Imagine preluată de la IBM

12
de lumină care sesiza prezenţa sau absenţa orificiilor, prin faţa acestuia derulându-se banda de
hârtie. Astfel se făcea citirea datelor.
În 1874, Christopher Latham Sholes
inventează prima tastatură ergonomică, în care
dispunerea tastelor s-a făcut în funcţie de
frecvenţa utilizării acestora. Astfel a apărut
modelul de tastatură folosit şi în prezent, tastatura
QWERTY.
În 1937, George Rober Stibitz de la Bell Laboratories construieşte primul calculator de
numere complexe electromecanic, bazat pe relee, numit „Model K” cu care face în 1940 o
spectaculoasă demonstraţie la New Hampshire. Tot în acelaşi an, Alan Turing, un genial
matematician englez, proiectează conceptual un model teoretic al unui computer, numit
„Maşina Turing”.
Era computerelor moderne începe însă în perioada 1939-1944 când a fost construit
primul computer digital din lume IBM de către
Howard H. Aiken, computer numit Harvard Mark I.
Acesta avea peste 750.000 de componente, în mare
parte electromecanice, cântărea aproximativ 5 tone.
Era capabil să lucreze cu numere de 23 de cifre pe care
le aduna sau le scădea în 13 milisecunde, la înmulţea
în 4 secunde şi le împărţea în 10 secunde10.
În 1943, un inginer german numit Konrad Zuse
a început construcţia unui calculator numit Z4. În realitate, Zuse construise primul calculator,
numit Z3 în 1941, care astfel antedatează Mark I, însă Z3 a fost distrus în timpul
bombardamentelor. Maşinile Z erau bazate tot pe principii electromecanice, fiind capabile să
utilizeze numere binare şi numere în virgulă mobilă şi foloseau pelicula veche de film pentru
a stoca datele tot prin procedee optice.
În acelaşi timp, Turing începe construcţia unei maşini capabile să decodifice codurile
germane („COLOSSUS”), maşină care avea la bază tuburi electronice. Acest dispozitiv,
construit pentru un scop precis, deşi nu a fost considerat un computer, este totuşi prima
maşină de calcul programabilă care foloseşte tuburi electronice.
La mijlocul anilor 1940 (1943-1946), s-au înlocuit releele şi dispozitivele
electromecanice cu tuburi electronice, mult mai rapide şi silenţioase, însă mai fragile,
consumatoare de energie şi scumpe. Astfel, între 1943 şi 1946 a fost construit la Universitatea
din Pennsylvania de către John William Mauchy şi Presper Eckert Jr. ENIAC (Electronic
Numerical Integrator And Computer), un gigant tehnologic cu peste 70.000 de rezistori,
10.000 de condensatori şi 18.000 de tuburi electronice, care cântărea aproximativ 30 de tone
şi consuma cam cât un mic oraş. Principala problemă a acestui computer era fiabilitatea sa.
Peste 90% dintre defecţiuni se datorau cedării tuburilor electronice.

10
Imagine preluată de la IBM

13
ENIAC nu avea însă nici o modalitate prin care să stocheze datele şi programele, astfel
încât în vara anului 1944 Mauchly şi Eckert propun construcţia unei noi maşini numită
EDVAC (Electronic Discrete Variable Automatic Computer) care a devenit operaţional abia în
1952 şi este considerat primul calculator cu memorie internă.
În 1944, John von Neumann pune bazele teoretice ale arhitecturii unui calculator,
descriind memoria, unitatea de calcul şi unitatea de control.
Din punct de vedere istoric, literatura de specialitate clasifică computerele în 5
generaţii de computere în funcţie de tehnologia care a stat la baza fabricării acestora:
Prima generaţie de computere numită generaţia de computere cu tuburi
electronice, a apărut în perioada 1940-
1956 şi folosea tuburi electronice, pentru
circuite şi tambur magnetic pentru
stocarea informaţiei – ca suport de
memorie. Aceste maşini erau enorme
ocupând camere întregi, consumau o
cantitate foarte mare de energie elecrică,
degajau foarte multă căldură, necesitând
condiţii speciale de utilizare, fiind în
acelaşi timp deosebit de sensibile la
defecţiuni şi foarte greu de folosit.
Introducerea datelor se făcea prin cartele
Sala principală a computerului ENIAC
sau benzi de hârtie iar ieşirea era
reprezentată de dispozitive de imprimare pe hârtie.
Ca reprezentanţi ai acestei generaţii, menţionăm computerul UNIVAC şi ENIAC,
UNIVAC fiind şi primul computer comercial în 1951.
A doua generaţie de computere este reprezentată de computerele cu tranzistoare
apărute în perioada 1956-1963. Apariţia tranzistoarelor a determinat construirea de maşini de
calcul mult mai mici, mai fiabile şi mai rapide. Consumau mai puţină energie electrică şi erau
mai rezistente la defecţiuni în comparaţie cu computerele din prima generaţie. Ca modalităţi
de introducere a datelor se foloseau încă benzile de hârtie şi cartelele perforate iar ca ieşire era
utilizată, în continuare, imprimanta pe hârtie. Aceasta este perioada apariţiei inovaţiilor în
domeniul software. S-a trecut de la limbajul în cod maşină la limbajul de asamblare şi de
asemenea au apărut primele limbaje de programare de nivel înalt precum COBOL şi
FORTRAN.

14
A treia generaţie de computere apare în perioada 1964-1971 şi cuprinde computerele
bazate pe tehnologia circuitelor integrate.
Tranzistoarele au fost miniaturizate şi plasate pe
pastile de siliciu denumite circuite integrate care au
determinat o miniaturizare şi o eficientizare fără
precedent a maşinilor de calcul. Acesta este
momentul apariţiei tastaturii şi a monitorului ca
dispozitive de introducere şi de afişare a datelor. La
nivel software apare sistemul de operare ca modalitate
mai eficientă de control a maşinii.
Generaţia a patra de computere începe în
anul 1971 şi include computerele existente în prezent.
Se mai numeşte generaţia computerelor bazate pe Placa principală a unui
microprocesoare şi este formată din sute de mii de computer din generaţia a treia
circuite integrate încapsulate într-o pastilă de siliciu care formează microprocesorul – creierul
calculatorului. Primul microprocesor a fost construit de corporaţia Intel în 1971 şi a fost
denumit Intel 4004. De atunci a început o cursă a miniaturizării şi a creşterii puterii de calcul,
cursă care continuă şi în prezent. IBM introduce pe piaţă în 1981 primul computer personal
iar 3 ani mai târziu, corporaţia Apple lansează computerele Macintosh deschizând astfel
publicului larg accesul la tehnica de calcul.
Generaţia a cincia de calculatoare debutează în prezent şi în mod cert se extinde în
viitor, numindu-se şi generaţia computerelor bazate pe inteligenţa artificială. Cuprinde mai
mult elemente software decât hardware şi se referă la algoritmi de recunoaştere a vocii şi a
figurilor, procesare paralelă a informaţiei, comunicare în limbaje naturale, capacitate de
învăţare şi auto-organizare. Este greu de prezis cum vor evolua computerele din generaţia a
cincia. Cert este faptul că aceastea vor fi miniaturizate la extrem, vor avea preţuri din ce în ce
mai mici şi putere de calcul tot mai mare în tendinţa de a face parte integrantă din viaţa
fiecăruia. Problemele de comunicare vor fi eliminate, oamenii reuşind să comunice unii cu
alţii din orice loc şi în orice condiţii, accesul la informaţie va fi liber.
Analizând acest istoric observăm că de fapt marile realizări în domeniul computerelor
au apărut în ultimii 30 de ani, odată cu generaţia a patra de calculatoare. Ritmul de dezvoltare
al tehnicii de calcul la care asistăm face imposibil de prezis viitorul în acest domeniu. Cu toate
acestea, principiile de bază ale funcţionării maşinilor de calcul au rămas aceleaşi şi probabil
multă vreme nu vor fi schimbate.

1.2 Întrebări recapitulative şi teme


1. Câte generaţii de computere cunoaşteţi şi care sunt caracteristicile fiecăreia?
2. Care este contribuţia lui Leonardo da Vinci la evoluţia computerului?
3. Cine este considerat ca fiind primul programator din istorie?
4. Prezentaţi câteva caracteristici tehnice ale computerului ENIAC.
5. De ce aranjarea tastelor pe tastatura unui computer nu corespunde ordinii alfabetului?

15
TEMĂ: Realizaţi un referat în care prezentaţi tendinţele viitoare în ceea ce priveşte evoluţia
computerelor. Comentaţi opiniile şi exprimaţi părerile dumneavoastră personale.

16
2 Hardware
Prin termenul de hardware se înţelege orice componentă fizică ce intră în
alcătuirea unui sistem de calcul, începând de la unitatea centrală până la mouse. Tot ceea ce
reprezintă componentă fizică a unui sistem de calcul poartă denumirea generică de hardware.
Orice computer este format dintr-o mulţime de componente, fiecare îndeplinind un anumit rol,
care contribuie la funcţionarea generală a calculatorului. Computerele actuale au o structură
modulară, adică sunt formate din mai multe blocuri constructive numite componente
hardware reprezentate de plăci cu circuite integrate care puse laolaltă duc la funcţionalitatea
generală a sistemului de calcul.
Constructiv, un sistem de calcul este format din două mari componente: unitatea
centrală şi perifericele.
Unitatea centrală ia forma acelei cutii mari pe care o aşezaţi fie pe birou, fie sub
birou şi care conţine toate componentele necesare funcţionării sistemului de calcul.
Perifericele reprezintă elemente hardware ataşate unităţii centrale care permit fie
introducerea sau afişarea datelor (periferice de intrare sau periferice de ieşire), fie
extinderea funcţionalităţii sistemului (periferice specifice sau periferice mixte). Tastatura şi
mouse-ul, de exemplu, sunt periferice de intrare în timp ce monitorul şi imprimanta sunt
periferice de ieşire. Placa de sunet este un periferic mixt, deoarece permite atât intrarea cât şi
ieşirea informaţiilor. Un calculator poate funcţiona foarte bine fără nici un fel de elemente
periferice (cazul serverelor), însă elementele periferice pot fi ataşate doar unei unităţi centrale.
Funcţional, un computer îndeplineşte 5 funcţii principale: funcţia de gândire, funcţia
de memorare, funcţia de ascultare, funcţia de monitorizare şi funcţia de comunicare. Funcţia
de gândire este îndeplinită de unitatea de sistem sau unitatea centrală de procesare.
Funcţia de memorare o preia sistemul de stocare masivă, partea de ascultare este atribuită
sistemului de control, în mod obişnuit format din tastatură şi mouse, partea de monitorizare
reprezintă responsabilitatea dispozitivului de afişare, în general monitorul, iar partea de
comunicare este asigurată de porturile şi magistralele de schimb de date, cum ar fi placa de
reţea, modemul etc.

2.1 Funcţia de gândire


Funcţia de gândire este asigurată, după cum spuneam, de unitatea de sistem sau
unitatea centrală de procesare. Mulţi văd în această unitate de sistem doar cutia ce contine
componentele esenţiale ale unui computer, însă lucrurile stau puţin diferit. Calculatorul este o
maşină electrică şi deci are nevoie de electricitate pentru a funcţiona. Cutia de tablă reprezintă
carcasa sistemului şi are rolul de a grupa împreună componentele necesare funcţionării şi de
a furniza energia electrică prin intermediul sursei de alimentare. Mulţi consideră ca fiind lipsit
de importanţă aspectul carcasei şi al sursei de alimentare şi tocmai de aceea pot să apară în
timp probleme majore. Funcţionând, componentele sistemului de calcul degajă o cantitate
considerabilă de căldură care în mod logic trebuie disipată. Acest proces este asigurat de
ventilatoarele sursei şi de cele ale procesorului. O carcasă înghesuită sau aşezată într-un loc
lipsit de ventilaţie duce la imposibilitatea circulaţiei corespunzătoare a curenţilor de aer din

17
interiorul calculatorului, la supraîncălzirea componentelor interne şi inevitabil la defectarea
sistemului de calcul. Sursele de alimentare sunt componente specializate în furnizarea
curentului electric cu diferite caracteristici către celelalte elemente ale computerului. Cea mai
importantă caracteristică a sursei de alimentare este puterea debitată, un alt element mult
ignorat. Necesarul de electricitate furnizat de sursă se calculează ţinând seama nu numai de
cea ce există la un moment dat în sistemul de calcul, ci şi de eventualele îmbunătăţiri aduse în
timp calculatorului. Fiecare componentă din interiorul unui computer consumă o anumită
cantitate de energie electrică. Dacă sursa nu este capabilă de a furniza energia necesară
funcţionării corespunzătoare a tuturor componentelor, calculatorul se va bloca frecvent sau nu
se va comporta normal. De aceea este important ca în momentul îmbunătăţirii unui calculator
sau la adăugarea unor componente suplimentare să se verifice dacă puterea sursei este
capabilă de a suporta noul consum al sistemului. În caz contrar, se recomandă o sursă mai
puternică.

2.1.1 Placa de bază


Placa de bază reprezintă componenta principală
a unităţii de sistem. Toate celelalte componente se
conectează în diferite moduri pe placa de bază. La acest
nivel se execută majoritatea funcţiilor unui calculator:
se rulează programele, se afişează datele pe ecran, se
preiau informaţiile de la tastatură, se fac calculele şi aşa
mai departe. Deşi există un număr impresionant de
modele de plăci de bază, structura lor este relativ
asemănătoare. Funcţionalitatea şi caracteristicile
acestora sunt definite de alte elemente cum ar fi
Placă de bază Intel
miroprocesorul,
cipul BIOS, memoria, posibilităţile de extensie,
porturile11.
2.1.1.1 Microprocesorul12
Este „creierul calculatorului”, partea care gândeşte
dintr-un sistem de calcul. În general microprocesorul se
caracterizează prin două elemente: „limbajul” pe care îl
înţelege şi numărul de operaţii pe care le poate executa
într-un interval de timp. Limbajul înţeles asigură
compatibilitatea cu diferite programe şi sisteme de
operare. Orice procesor are un anumit set de instrucţiuni
pe care le poate executa. În momentul în care programul
trimite acel set de instrucţiuni, procesorul le execută.
Dacă programul trimite un alt set de instrucţiuni,
Microprocesor Intel şi procesorul nu ştie cum să le execute. De aceea, de
sistemul de disipare exemplu, programele create pentru PC-uri (compatibile
11
Imaginea este preluată de la Intel

18
IBM) nu pot fi rulate pe calculatoarele Macintosh care au un alt tip de procesor. Este, dacă
doriţi, la fel cu a-i solicita unui chinez în limba română să aducă o cană cu apă. Dacă ştie
româna, o va aduce. Dacă nu, nu.
Cea de-a doua caracteristică este una de performanţă. Cu cât un computer poate
executa mai multe instrucţiuni într-un interval de timp, cu atât este mai performant. Un
computer care poate face 5 miliarde de operaţii pe secundă este mai rapid decât unul care face
doar 5 milioane şi deci, primul este mai performant. Numărul de operaţii executate într-o
secundă este exprimat de frecvenţa procesorului, în Herţi. La ora actuală procesoarele au
depăşit frecvenţa de 3 GHz. O asemenea componentă care „gândeşte” degajă o imensă
cantitate de căldură. De aceea procesoarele sunt echipate cu un sistem de disipare a căldurii,
format dintr-un radiator din aluminiu şi un ventilator. În absenţa unui asemenea procedeu de
răcire un procesor s-ar defecta la câteva secunde de la pornire.
2.1.1.2 Memoria
Termenul de memorie este un termen foarte larg şi cuprinde atât memoria de lucru cât
şi cea de BIOS iar unele persoane vorbesc de memorie chiar şi atunci când se referă la
sistemul de stocare masivă. În privinţa funcţiei de gândire a sistemului de calcul, ne vom
referi aici la memoria RAM (Random Access Memory) sau
memorie cu acces aleatoriu. Aceasta are rolul de „banc de lucru”
pentru datele cu care lucrează microprocesorul şi reprezintă locul
în care acesta îşi stochează informaţiile. Are forma unor plăcuţe cu
circuite integrate localizate pe placa de bază iar cea mai importantă
Plăcuţe de memorie
caracteristică o reprezintă capacitatea de stocare exprimată în
RAM
octeţi. Cu cât această capacitate de stocare este mai mare cu atât
microprocesorul va putea depozita aici o cantitate mai mare de informaţie şi prin urmare va
putea lucra mai rapid. Memoria RAM reprezintă o memorie electronică, ce poate fi atât citită
cât şi scrisă fiind cel mai rapid tip de memorie. De aici derivă o altă caracteristică a memoriei
RAM şi anume viteza de acces exprimată de obicei în nano-secunde. Cu cât timpul de acces
este mai mic, cu atât memoria RAM este mai rapidă. La ora actuală majoritatea computerelor
au între 512 Mb şi 1Gb memorie RAM. Capacitatea memoriei RAM limitează nu numai
viteza calculatorului dar şi tipurile de programe care pot rula. Singurul dezavantaj al acestei
memorii îl reprezintă volatilitatea, adică întreg conţinutul acesteia dispare în momentul în care
am deconectat computerul de la sursa de energie electrică. Desigur, nu vom putea ţine
computerul pornit până ne terminăm lucrarea de licenţă şi nici nu vom putea scrie lucrarea de
licenţă într-o singură zi. Trebuie deci să existe şi o altă modalitate de stocare nevolatilă a
informaţiei pe care o vom discuta mai târziu.
2.1.1.3 BIOS
Un calculator fără un program nu face
absolut nimic. Nici măcar nu porneşte. Prin
urmare, este necesar să avem un program, oricât
de mic, ce poate să furnizeze computerului
informaţiile necesare pentru a porni şi pentru a
Cip BIOS şi programul său
12
Imaginea este preluată de la Intel

19
încărca alte programe mai complexe. Acest program se numeşte sistemul de intrare/ieşire de
bază sau pe scurt BIOS (Basic Input/Output System) şi este primul care face diferenţa dintre
un calculator şi un ventilator. Are forma unui circuit integrat localizat pe placa de bază, circuit
cu memorie proprie numită memorie ROM (Read Only Memory). În memoria sa se află
înregistrate permanent un set de rutine care asigură calculatorului caracteristicile sale de bază,
inclusiv instrucţiunile de autotestare. Spre deosebire de memoria RAM în care se poate scrie
şi din care se poate citi, memoria ROM nu poate fi scrisă în mod curent şi nici nu este volatilă.
Programul BIOS este scris printr-o tehnologie specială de producătorul cipului BIOS iar
sistemul poate oricând citi informaţiile de acolo însă nu le poate modifica. Bazat pe o
tehnologie de semiconductori cu oxizi metalici (CMOS), cipul BIOS consumă extrem de
puţină energie electrică. O zonă specială a memoriei sale poate fi totuşi scrisă şi este folosită
pentru stocarea datei curente şi pentru reţinerea configurărilor făcute la nivel de bază. Aceste
informaţii nu modifică modul de funcţionare al rutinelor de testare însă pot influenţa
funcţionalitatea de bază a computerului. Logic ar fi să ne gândim că asemenea informaţii ar
trebui să dispară odată cu întreruperea alimentării computerului. Nu este însă aşa deoarece
această zonă de memorie este protejată de o baterie specială asemănătoare unei baterii pentru
ceasurile electronice şi care este situată pe placa de bază. După cum spuneam, tehnologia
CMOS consumă foarte puţin astfel încât această baterie poate asigura păstrarea informaţiilor
ani întregi. Acest lucru ar trebui să vă dea de gândit în momentul în care alegeţi să vă protejaţi
calculatorul la pornire prin stabilirea unei parole în BIOS pe care apoi o veţi uita. Pe scurt,
BIOS-ul se asigură că toate componentele critice ale unui sistem există şi funcţionează
corespunzător, după care încearcă să iniţieze secvenţa de pornire (numită şi secvenţă de boot).
Dacă una dintre componentele vitale nu există sau este defectă (spre exemplu memoria RAM)
BIOS-ul emite un şir se semnale sonore, numit cod de eroare, afişează eroarea întâlnită şi
aşteaptă intervenţia utilizatorului. De cele mai multe ori aceste erori sunt critice şi necesită
intervenţia unui personal specializat.
2.1.1.4 Setul de cipuri
Setul de cipuri (chipset) sau circuitele de suport fac legătura între microprocesor şi
restul calculatorului. Acestea se referă la numeroasele circuite integrate, în general de mari
dimensiuni, care preiau funcţii de ceas, controllere, convertoare de semnal şi multe altele.
Setul de cipuri este definitoriu pentru calitatea unei plăci de bază şi în general se constituie în
criteriu principal de alegerea a unei plăci de bază performante.

2.2 Funcţia de memorare


Discutam în capitolul anterior despre volatilitatea memoriei RAM. În momentul în
care redactaţi o pagină folosind produsul Microsoft Word, o mare parte a acestui program
împreună cu documentul dumneavoastră se află în memoria RAM, bancul de lucru al
microprocesorului. Dacă după ce aţi scris 20 de pagini aveţi „norocul” unei întreruperi de
energie electrică, nu vă rămâne altceva de făcut decât să felicitaţi compania de electricitate şi
să o luaţi de la capăt dacă în prealabil nu aţi avut prudenţa să copiaţi conţinutul documentului
dumneavoastră din memoria RAM într-un sistem de stocare masivă. Sistemele de stocare
masivă reprezintă modalităţi diferite de conservare externă a informaţiei iar caracteristica lor

20
de bază este nevolatilitatea. Cu alte cuvinte, chiar dacă opriţi sistemul de calcul, conţinutul
informaţional de pe aceste dispozitive nu se pierde. Cele mai cunoscute sisteme de stocare
masivă sunt discul dur (Hard Disk), discheta şi CD-ul.

2.2.1 Unităţile de disc dur (Hard disk)


Reprezintă combinaţia ideală de viteză, capacitate de stocare şi preţ scăzut, fiind
practic o componentă standard a oricărui PC. Oricât de mare ar fi capacitatea memoriei RAM,
totuşi nu se pot încărca toate aplicaţiile, documentele şi sistemul de operare. Practic, tot ceea
ce aveţi pe calculator, inclusiv filmele, jocurile, programele de prelucrări statistice sau
scrisorile de recomandare se află în spaţiul de pe discul dur. În
momentul în care lansaţi în execuţie un program, microprocesorul
copie acel program de pe discul dur în memoria RAM şi execută apoi
instrucţiunile necesare. Ori de câte ori sistemul are nevoie de un fişier
pe care nu îl are în memorie, acesta este locul în care îl va căuta.
Accesul la informaţiile de pe discul dur este extrem de rapid (totuşi
mult mai lent în comparaţie cu accesul la memoria RAM) ceea ce
face din acest dispozitiv principalul mijloc de stocare al datelor.
Stocarea datelor pe discul dur se bazează pe principii
magnetice. Acesta este format dintr-unul sau mai multe discuri rigide
dispuse concentric, acoperite cu un strat magnetic, printre care se deplasează un set de capete
de citire-scriere. Aceste capete au o formă aerodinamică specială, astfel încât în timpul
funcţionării ele nu ating discurile ci planează pe o pernă de aer la o distanţă foarte mică faţă
de acestea. De aceea, şocurile mecanice apărute în timpul funcţionării duc la lovirea capetelor
de suprafeţele magnetizate ceea ce determină desprinderea de particule microscopice care mai
apoi se vor „plimba” pe suprafaţa discurilor provocând apariţia altor sectoare defecte. Aceasta
este explicaţia faptului că odată apărute sectoare defecte pe un disc dur, ele au tendinţa de a se
multiplica.
Principalele caracteristici ale unui disc dur sunt capacitatea de stocare şi viteza de
acces. Cu cât capacitatea de stocare, exprimată în octeţi, este mai mare, cu atât vom putea
stoca un număr mai mare de documente, respectiv cu cât viteza de acces este mai mare – sau
timpul de acces este mai mic – cu atât documentele se vor încărca mai repede. La ora actuală
discurile dure au capacităţi de stocare cuprinse între 120 şi 200 Gb.

2.2.2 Unităţile de dischetă


O bună perioadă de timp dischetele au reprezentat singurul mijloc de stocare masivă a
informaţiilor. Ieftine şi interschimbabile, dischetele s-au impus mai ales prin capacitatea lor
de a asigura schimbul de informaţie dintre calculatoare. Se bazează tot pe principii magnetice,
însă discul nu este rigid ci flexibil, fiind construit din celuloid acoperit cu un material cu
proprietăţi magnetice. Principalul dezavantaj al acestui tip de suport este capacitatea mică de
stocare a informaţiilor (1,44 Mb), viteza mică de acces la informaţii şi toleranţa redusă la
defecţiuni. Este suficient să ţineţi discheta lângă un dispozitiv generator de câmpuri magnetice
sau să o îndoiţi şi riscaţi să pierdeţi tot conţinutul acesteia.

21
Există însă şi alte tipuri de dischete (cum ar fi dischetele ZIP) cu o capacitate de
stocare mult mai mare, între 100 şi 250 Mb, mult mai rezistente la defecţiuni, însă preţul
ridicat le fac destul de puţin populare. Discheta continuă să reprezinte încă mijlocul preferat
de stocare a informaţiei pentru multe persoane.

2.2.3 Unităţile de CD şi DVD


Tot mai populare în ultimul timp, compact discurile s-au impus datorită capacităţii
mari de stocare a informaţiei şi a siguranţei păstrării acestora. Denumirea provine de la
Compact Disk – Read Only Memory, multe persoane preferând să numească discul din plastic
CD-ROM pentru a-l diferenţia de compact discurile audio. Putem uşor intui că aceste discuri,
deşi pot stoca foarte multă informaţie (la ora actuală circa 750 Mb), informaţia poate fi doar
citită. Inscripţionarea CD-urilor se face cu ajutorul unui dispozitiv special, iar un CD odată
scris nu mai poate fi şters, informaţia rămânând acolo pentru totdeauna. Excepţie fac, desigur,
o serie de discuri speciale, numite CD-RW (Compact Disk Rewritable) care pot fi şterse, însă
nici pe acele discuri informaţia nu se poate citi şi scrie sincron. Un compact disc reinscriptibil
poate fi şters complet iar apoi se poate iniţia o nouă sesiune de scriere.
Tehnologia de scriere se bazează pe imprimarea de către un fascicul laser a unei
spirale ce conţine „adâncituri” urmate de zone normale, începând din interior spre exterior şi
care corespund şirurilor binare de 0 şi 1. Nu mai este vorba deci despre o stocare magnetică a
informaţiei ci despre una optică, citirea făcându-se tot cu un fascicul laser care depistează
„adânciturile” şi zonele normale, convertindu-le în şiruri binare. Aceste dispozitive nu mai
sunt deci vulnerabile la câmpurile magnetice iar tehnologia de fabricaţie le fac puţin sensibile
la şocuri mecanice.
Derivată din tehnologia CD-ROM, în ultima perioadă a apărut tehnologia DVD
(Digital Versatile Disk) care permite „ştanţarea” unei cantităţi de informaţie de ordinul
gigaocteţilor. Totuşi, datorită probabil preţului ridicat la ora actuală, tehnologia DVD este mai
degrabă folosită la imprimarea filmelor (care au dimensiuni foarte mari) şi mai puţin a
aplicaţiilor software.
Acestea sunt cele mai cunoscute şi mai folosite sisteme de stocare masivă a
informaţiilor. Există desigur şi alte dispozitive de acest gen, cum ar fi unităţile de bandă –
similare unor casete video de mici dimensiuni şi folosite pentru copii de siguranţă ale unor
volume mari de date sau discurile flash – având aspectul unui breloc sau al unui pix şi care
conţin un mediu electronic de stocare, uşor ataşabil oricărui computer cu capacităţi destul de
ridicate.

2.3 Funcţia de ascultare


Permite să-i „spuneţi” calculatorului ce să facă şi este asigurată de cele două
dispozitive de acum tradiţionale şi anume tastatura şi mouse-ul.

2.3.1 Tastatura
Are aspectul unei tastaturi de maşină de scris cu funcţii speciale. Alături de tastele
tradiţionale, dispuse după criterii de ergonomie a dactilografierii, există o serie de taste

22
funcţionale (de la F1 la F12) care execută rapid funcţii specifice, în general predefinite, precum
şi taste rapide speciale cum ar fi tastele de acces rapid la poşta electronică, la Internet sau
tastele de mărire/micşorare a volumului sonor ori de oprire a calculatorului.
Tastatura clasică se conectează printr-un fir la un port special al calculatorului. În
ultimul timp însă sunt din ce în ce mai populare tastaturile multifuncţionale fără fir, bazate pe
unde radio sau pe infraroşii, care vă pot permite să tastaţi stând comod în pat.

2.3.2 Mouse-ul
Termenul de mouse este un termen impropriu şi s-a încetăţenit datorită aspectului său
de „şoricel”. Mai corect ar fi să-l denumim dispozitiv de indicare deoarece acesta citeşte în
permanenţă coordonatele ecranului şi permite anumite acţiuni asupra elementelor grafice,
ceea ce-l face o veritabilă „mână electronică”. Principiul de funcţionare este extrem de
simplu: două rotiţe perforate, una pentru abscisă şi alta pentru ordonată sunt antrenate de o
bilă şi se rotesc în faţa unui dispozitiv emiţător de infraroşii şi în spatele unui receptor de
infraroşii. Fantele perforate trimit „trenuri” de impulsuri luminoase spre receptor care le
converteşte în semnale digitale transmise unui port din computer. Aceste semnale sunt apoi
convertite în deplasări ale cursorului pe ecran.
La ora actuală există o multe asemenea dispozitive de indicare, începând de la cele
clasice, la cele optice şi la cele fără fir.
Alături de aceste echipamente, există o mare varietate de alte modalităţi prin care
datele pot fi introduse în computer. Astfel poate fi folosit un simplu microfon pentru a
comanda calculatorul prin intermediul tehnologiei de recunoaştere a vocii, un scaner pentru a
introduce imagini şi elemente grafice, joystick-ul care permite controlul unui avion într-un
program de simulare a zborului, cititoarele de cod de bare, camerele digitale şi plăcile de
captură video şi lista ar putea continua.

2.4 Funcţia de monitorizare


Se referă la sistemul de afişare, fereastra prin care priviţi „mintea” calculatorului.
Această funcţie este asigurată de două componente majore: placa video, numită şi adaptor
video şi monitorul.

2.4.1 Placa video


Acest dispozitiv, care are în general aspectul unei plăci cu circuite integrate montată
pe unul dintre soclurile de extensie ale plăcii de bază, transformă
codurile numerice trimise de microprocesor într-un model de biţi
pentru fiecare punct ce va fi afişat pe ecran. Astfel, placa video
determină numărul de culori ce pot fi afişate pe ecran precum şi
rezoluţia imaginii. Monitorul, indiferent cât de performant ar fi, nu poate afişa o imagine de o
calitate superioară imaginii binare transmisă de placa video. Tot acest dispozitiv determină
viteza de lucru a sistemului video din calculator. De obicei posedă o memorie RAM specială,
deosebit de rapidă cu care lucrează direct iar unele plăci video au chiar şi un microprocesor
propriu dedicat strict activităţilor de prelucrare de imagini. În mod cert, o placă video rapidă

23
va duce la creşterea calităţii imaginii afişate şi la evitarea sincopelor în momentul în care
jucaţi jocuri cu o grafică tridimensională deosebită.
Unele plăci video oferă suport pentru ieşire pe un televizor obişnuit şi chiar pot
include facilităţi de recepţionare a posturilor TV, transformându-vă computerul într-un
televizor mult mai scump.

2.4.2 Monitorul
Monitorul are aspectul unui televizor şi permite afişarea semnalelor trimise de placa
grafică. Deşi un monitor nu poate afişa o calitate superioară imaginii transmisă de placa
grafică, un monitor slab poate limita rezoluţia şi culorile afişate.
Caracteristicile unui monitor se referă în special la rezoluţie
şi număr de culori. Diagonala monitorului determină practic
suprafaţa de lucru disponibilă. Desigur, un monitor este cu atât mai
performant cu cât are o diagonală mai mare. Din păcate însă, preţul
de cost creşte exponenţial.
La ora actuală există o mare varietate de monitoare, de la cele
clasice, cu tub de sticlă, la cele cu cristale lichide şi cu plasmă. Calitatea unui monitor cu
plasmă este una excepţională, acesta având în plus şi avantajul de a fi perfect plat.

2.5 Funcţia de comunicare


Se referă la posibilitatea unui computer de a trimite date către alte dispozitive şi de a
primi date de la acestea şi se realizează prin intermediul porturilor de intrare/ieşire.
Acestea reprezintă principala cale prin care computerele pot schimba informaţii între
ele sau cu alte dispozitive. În mod clasic, dotarea standard a unui PC conţinea două porturi
seriale şi un port paralel. Pentru mai multă claritate, cei mai mulţi dintre utilizatorii
computerelor vechi foloseau portul serial pentru a conecta dispozitivul de indicare (mouse) iar
portul paralel, mai rapid fiind, era utilizat pentru conectarea unei imprimante.
În prezent, tehnologia a permis transformarea porturilor seriale în porturi USB
(Universal Serial Bus), mult mai fiabile şi mai rapide sau în sisteme IrDA (Infrared Data
Association) ce permit comunicarea fără fir prin infraroşu. În acelaşi timp, porturile paralele
devin magistrale externe de extensie la care se pot conecta zeci de dispozitive folosind doar
un singur conector.

2.5.1 Imprimantele
Sunt dispozitive speciale care asigură tipărirea pe hârtie a conţinutului unui document.
Calitatea documentului tipărit depinde de calitatea imprimantei. În acest moment, există o
mare varietate de imprimante, de la cele cu ace, zgomotoase, puţin fiabile şi care produc o
calitate slabă a documentelor, la cele cu jet de cerneală sau la cele cu laser, în variantele alb
negru sau color şi care tipăresc documente de calitate fotografică.

24
Imprimantele se pot conecta la calculatoare folosindu-se toate porturile existente şi
anume portul paralel, portul infraroşu, unul dintre porturile USB sau se pot conecta direct la o
reţea permiţând a fi utilizate de mai multe calculatoare.

2.5.2 Modemurile
Sunt dispozitive care permit conectarea calculatoarelor între ele folosindu-se sistemul
de linii telefonice. Acestea nu sunt altceva decât convertoare de semnal care adaptează datele
furnizate de un PC la o formă compatibilă cu sistemul telefonic.
De la sistemele de modemuri clasice, la
cele de telefonie digitală (ISDN) sau la
conexiunile prin cablu ori satelit, aceste
dispozitive se diferenţiază prin vitezele de transfer
ale informaţiilor şi prin facilităţile pe care le pun
la dispoziţie. Astfel un modem poate asigura pe
lângă schimbul de date dintre calculatoare (şi aici includem accesul la Internet) funcţii
suplimentare de transmisie/primire de faxuri, robot telefonic, suport pentru audio sau
videoconferinţe.
La rândul lor, modemurile pot fi interne, când au forma unei plăci de extensie
conectată la unul dintre soclurile computerului sau externe când se conectează folosindu-se de
obicei un port serial.

2.5.3 Plăcile de reţea


Sunt dispozitive interne care asigură conectarea a două sau mai multe computere.
Principala caracteristică a unei plăci de reţea o reprezintă viteza de transfer exprimată în biţi
pe secundă. Majoritatea plăcilor de reţea pot trimite şi primi date cu o viteză de 100 Mb pe
secundă, însă la ora actuală au apărut deja plăci ce comunică cu 1000 Mb pe secundă
impunându-se astfel un nou standard în ceea ce priveşte viteza de
transmitere şi recepţionare a datelor.
Calculatoarele legate între ele pot fi situate în apropiere (o clădire,
o întreprindere, în termeni de specialitate un sit) reţeaua numindu-se
LAN (Local Area Network) sau se pot răspândi pe teritoriul unei ţări,
folosind sisteme diferite de conectare (cabluri telefonice, fibră optică etc) această reţea
purtând denumirea de WAN (Wide Area Network). În momentul conectării la Internet (World
Wide Web) computerul încetează să fie o maşină de sine stătătoare şi devine o componentă a
unui sistem internaţional de computere. Teoretic dumneavoastră aveţi acces la toate
computerele din sistem şi toate computerele din sistem au acces la computerul
dumneavoastră.

2.6 Întrebări recapitulative şi teme


1. Prezentaţi şi descrieţi sistemul de stocare masivă
2. Ce rol are placa de bază şi care sunt criteriile de alegere a unei surse de alimentare?

25
3 Software
Cuvântul software desemnează o întreagă tehnologie. Prin software nu înţelegem doar
CD-ul cumpărat sau doar interfaţa de redactare a textelor din programul Microsoft Word ci şi
o multitudine de elemente invizibile ascunse „în spatele scenei”. În realitate un computer
rulează mult mai multe programe decât vedeţi la un moment dat, fiecare operând la diferite
niveluri şi cu priorităţi diferite, îndeplinindu-şi funcţiile şi interconectându-se prin procese
invizibile între ele.
În mod normal, programele pe care le puteţi vedea, programe precum Microsoft Word,
Microsoft Excel sau SPSS sunt denumite generic aplicaţii. Alături de acestea întâlnim
utilitarele, programe speciale folosite pentru menţinerea în stare bună de funcţionare a
întregului sistem, protecţia împotriva eventualelor probleme sau automatizarea unor sarcini.
Spre exemplificare, avem în vedere programele antivirus, programele de optimizare a
sistemului, programatoarele se sarcini şi aşa mai departe. Mai jos, la interferenţa dintre
componentele fizice şi componentele logice se află sistemul de operare care conectează
aplicaţiile între ele şi cu componentele fizice. La acelaşi nivel întâlnim limbajele de
programare prin intermediul cărora putem instrui computerul ce să facă, putem scrie noi
aplicaţii sau chiar alte sisteme
de operare. Schematic, aceste
Aplicaţii elemente pot fi prezentate ca în
figura alăturată:
Termenul de software
se referă la ideile abstracte şi
Utilitare
include nu numai aplicaţiile ci
şi informaţiile şi datele folosite
de aceste aplicaţii. Programele
Sisteme de Limbaje de „spun” calculatorului ce să
operare programare facă, cum să acţioneze, cum să
folosească datele şi comenzile.
Un program, deşi pare extrem
Figura 1 – Relaţia dintre diferitele componente software de complex, în realitate se
rezumă la o listă de comenzi care instruiesc partea fizică a calculatorului. Seamănă, dacă
doriţi, cu o reţetă culinară scrisă într-un anumit cod folosindu-se un limbaj de programare, o
listă de instrucţiuni realizată de către programatori. Lista de instrucţiuni acţionează, de obicei,
asupra unui set de date. Deşi instrucţiunile sunt simple, combinarea acestora duce la programe
complexe. La fel cum un roman bun este alcătuit din simple cuvinte ale vocabularului, şi un
program bun este constituit din instrucţiuni simple. Însă, la fel cum eu n-aş fi capabil poate să
scriu niciodată un roman precum „Shogun”, condiţia scrierii de programe performante este
talentul şi arta programatorului, dublată de o experienţă şi de o bună documentare. În altă
ordine de idei, dacă dumneavoastră în loc de zahăr puneţi în tort sare şi piper, un cod scris
greşit poate provoca multe probleme mergând până la pierderi de date şi chiar blocarea
sistemului.

26
3.1 Aplicaţiile
Aplicaţiile sunt, după cum am mai spus, programele pe care le cumpăraţi sau cele pe
care le veţi realiza, poate, în urma acestui curs. Termenul provine de la software de aplicaţii
iar aceste componente se situează la nivelul cel mai înalt. Ele sunt de fapt consumatoarele
resurselor sistemului dumneavoastră iar fiecare aplicaţie necesită un anumit minim de resurse.
Dacă acest minim nu este satisfăcut, aplicaţiile nu vor rula sau vor rula defectuos. Spre
exemplu, pentru a instala Visual Basic versiunea 6, aveţi nevoie de un sistem de operare
Windows 95, un procesor 486 DX la 66 MHz, o unitate CD-ROM, o placă video VGA, 16
MB memorie RAM, 50 MB spaţiu pe Hard Disk şi un mouse. Să vedem ce se întâmplă dacă
nu avem aceste componente. Remarcăm faptul că cele menţionate mai sus reprezintă
minimum necesar. Cu cât sistemul este mai performant, cu atât este mai bine.
Dacă nu avem Windows 95, programul nu se va instala. Visual Basic 6 rulează pe
maşini Microsoft cu Windows instalat ca sistem de operare. Deci, dacă aveţi un computer cu
Linux, spre exemplu, nu veţi putea folosi acest produs. Dacă aveţi Windows 98 sau Windows
2000, veţi putea beneficia de alte facilităţi de lucru interne ale sistemului de operare (spre
exemplu ferestre mai frumoase în cazul Windows XP).
Procesorul se caracterizează prin frecvenţa sa, sau mai bine zis prin numărul de
operaţii pe care le poate efectua într-un interval de timp. Un procesor 486 DX la 66 MHz
poate face 66 de milioane de operaţii pe secundă. Desigur, acesta diferă de un procesor
Pentium 4 la 1GHz care poate face 1 miliard de operaţii pe secundă. Intuiţi deja faptul că un
procesor mai rapid va duce şi la o viteză mai mare a aplicaţiilor dumneavoastră, deci este mai
bine. Pe de altă parte, un procesor lent duce fie la imposibilitatea rulării programului, fie la o
rulare cu o viteză care vă determină să vă lăsaţi păgubaş.
Rolul unităţii CD-ROM este înţeles de la sine. Dacă cumpăraţi o aplicaţie pe CD şi nu
aveţi CD-ROM, pur şi simplu nu o veţi putea instala. Mouse-ul pe de altă parte este un
dispozitiv de indicare prin intermediul căruia puteţi efectua diverse acţiuni. Deşi veţi putea
lucra şi fără mouse, dificultatea operaţiilor vă va determina să renunţaţi.
Memoria RAM reprezintă un alt element deosebit de important. Ea este memoria de
lucru, memoria electronică a calculatorului. Volumul acesteia determină performanţele
sistemului. Cu cât memoria RAM este mai mare, cu atât procesorul va avea imediat la
dispoziţie mai multă informaţie şi va putea lucra mai repede. Dacă însă memoria RAM este
insuficientă, calculatorul va rula extrem de lent sau se va bloca.
Spaţiul pe discul intern (Hard Disk) determină cantitatea de informaţie care poate fi
stocată pe computer şi se referă la informaţia nevolatilă, adică la informaţia care nu dispare
dacă computerul este scos din priză. Un spaţiu mare face posibilă păstrarea unei cantităţi mai
mari de informaţie în comparaţie cu un spaţiu redus. Lipsa spaţiului minim necesar duce la
imposibilitatea instalării aplicaţiei, deoarece aceasta nu mai are unde să-şi depună fişierele.
Desigur nu mai e cazul să vorbim despre propriile dumneavoastră programe, care bineînţeles
vor lua forma tot a unor fişiere. Şi aici, cu cât mai mult spaţiu, cu atât mai bine.

27
Probabil că intuiţi deja că un element esenţial în livrarea aplicaţiilor dumneavoastră îl
reprezintă specificarea necesarului minim de resurse pentru computerul clientului. Dacă veţi
ajunge să creaţi aplicaţii pe care să le distribuiţi, în mod cert va trebui să faceţi acest lucru.
La ora actuală, majoritatea aplicaţiilor se livrează pe CD şi cuprind sute de megaocteţi
de informaţie pe care programul de instalare le copie sub formă de fişiere pe discul
dumneavoastră. (Hard Disk). În general, programul de instalare, numit şi kit de instalare are
forma unui fişier executabil care stochează comprimat pe CD toate fişierele necesare13 bunei
funcţionări a aplicaţiei. Kitul de instalare, de cele mai multe ori, se prezintă ca o rutină pas cu
pas ce ghidează utilizatorul prin procesul instalării şi se finalizează cu punerea la dispoziţie a
unei aplicaţii complet funcţionale.
Orice aplicaţie lucrează în baza unui aşa numit algoritm, o formulă matematică a
operaţiei convertită în codul programului. Algoritmul poate fi înţeles ca o structură repetitivă
de paşi care face ceva. În general sunt câteva operaţii elementare care se repetă de multe ori.
Schimbarea culorii unei fotografii, de exemplu, este un algoritm simplu care se repetă pentru
fiecare punct al unei imagini.
Partea aplicaţiei ce serveşte ca element de legătură între om şi cerinţele calculatorului
se numeşte interfaţă cu utilizatorul. Prin intermediul acestui concept definim orice, începând
de la o fereastră cu butoane şi casete de text, la mesajele de avertizare pe care vi le dă sistemul
şi chiar la un simplu buton OK. Proiectarea acestor interfeţe reprezintă o problemă de artă şi
talent. O interfaţă cu utilizatorul încărcată şi lipsită de aspect estetic poate duce la un insucces
al programului dumneavoastră, chiar dacă pe ansamblul său aplicaţia este excelentă. În
domeniul psihologiei, proiectarea interfeţelor cu utilizatorul ridică probleme deosebite în
privinţa eliminării oricărei influenţe a interfeţei asupra rezultatelor examenului psihologic.
Despre aceste lucruri însă, voi reveni într-un curs ulterior.
Am discutat deja suficient pentru a vă da seama la ce se referă termenul de aplicaţie.
Ar fi momentul unei încercări de clasificare a acestora. În tabelul 1 v-am prezentat o
clasificare tradiţională a aplicaţiilor bazată pe funcţia pe care acestea o îndeplinesc.
Tabelul 1 – Clasificarea principalelor tipuri de software după funcţionalitatea
acestora
Clasa de aplicaţii Funcţia
Permit accesarea site-urilor Internet în vederea căutării
Browsere Web de informaţii sau chiar pentru a rula OnLine alte
aplicaţii. (Internet Explorer, Mozilla, Netscape etc.)

13
Plecăm de la premisa că cititorul are noţiunile fundamentale de lucru cu calculatorul, ştie ce sunt acelea
directoare, fişiere, ştie ce înseamnă click, dublu click şi stăpâneşte satisfăcător noţiunile de bază. Există o
literatură bogată în domeniul iniţierii în lucrul cu calculatorul, de aceea elementele la acest nivel nu vor fi tratate
aici.

28
Permit trimiterea şi recepţionarea mesajelor
electronice, schimburi de date, faxuri sau
Programe de poştă electronică şi comunicaţii
videoconferinţe. (Outlook Expres, Delrina, Cheyenne
Bitware etc.)
Permit redactarea textelor şi pregătirea acestora pentru
imprimare. Au funcţii de asistenţă în elaborarea
Procesoare de texte
textelor, formatare, generare automată de cuprins etc.
(Microsoft Word, Word Perfect etc.)
Contrar opiniei multora, acestea nu sunt programe de
baze de date ci permit automatizarea fişelor contabile şi
Programe de calcul tabelar a foilor de calcul. Sunt deci aplicaţii speciale destinate
calculului automat a unor mari arii de date. (Microsoft
Excel, Lotus, etc.)
Permit stocarea, actualizarea şi regăsirea informaţiilor.
Se bazează pe un sistem special de tabele cu posibilităţi
Baze de date
avansate de sortare şi căutare foarte rapidă. (Microsoft
Access, FoxPro, DBase)
Permit crearea şi editarea de imagini, modificarea
atributelor fotografiei, conversia şi imprimarea
Programe grafice
fişierelor grafice. (Corel Photopaint, Adobe Photoshop,
etc.)
Permit redarea sau crearea fişierelor audio, muzicale, a
filmelor şi materialelor publicitare, rularea jocurilor sau
Programe multimedia
a animaţiilor (Winamp, Media Player, Macromedia,
Adobe Premiere)

Nu trebuie să consideraţi că aceste aplicaţii sunt exclusive. Există elemente de


întrepătrundere între acestea. De exemplu, deseori se confundă foile de calcul tabelar cu
bazele de date, deoarece producătorii au inclus în unele funcţii similare. Mai mult decât atât,
unele firme pun în vânzare adevărate suite software care conţin mai multe aplicaţii grupate
într-un singur pachet. Astfel spre exemplu avem suita Microsoft Office care grupează
aplicaţiile Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Microsoft Access şi
Microsoft Outlook, o mulţime de programe care pot lucra împreună. Îmbinarea acestor
programe într-unul singur duce la avantaje legate de compatibilitate. Adică, putem, spre
exemplu, introduce o prezentare PowerPoint într-un document Word sau putem insera o foaie
de calcul Excel într-un document Word ori, de ce nu, datele dintr-o foaie Excel pot fi cu
uşurinţă transferate într-o bază de date Access. Dar despre tehnologia care stă în spatele
acestor posibilităţi vom discuta cu altă ocazie.

3.2 Utilitarele
Cu toate că dumneavoastră în general veţi folosi aplicaţii pentru a utiliza computerul
în rezolvarea diverselor sarcini curente, uneori e necesar să faceţi şi curăţenie pentru a păstra
sistemul în condiţii optime de funcţionare şi pentru a-l determina să lucreze eficient.
Programele care au acest scop se numesc software utilitar sau pe scurt utilitare.

29
Utilitarele păstrează discul organizat pentru a rula cu viteză maximă, previn căderile
sistemului prin identificarea problemelor legate de programele instalate incorect sau elimină
reziduurile rămase în urma dezinstalării unui program, identifică şi uneori elimină viruşii,
recuperează fişierele şterse din greşeală şi fac multe asemenea operaţii de întreţinere.
În general anumite utilitare sunt incluse deja în sistemul de operare, cum ar fi Disk
Defragmenter, programul care optimizează viteza discului, Disk Cleanup care elimină
fişierele sau programele inutile, Scandisk, care verifică discul de posibilele erori logice sau
fizice, Backup care face copii de siguranţă după fişierele importante sau după întregul sistem
etc. Multe companii producătoare de software s-au specializat în producţia, aproape exclusivă
a acestor utilitare şi e suficient să remarc produsele firmei Symantec, binecunoscuta suită
Norton Utilities sau Norton SystemWorks care nu cred ca mai au nevoie de nici o prezentare.
Aţi observat probabil că aceste programe sunt foarte asemănătoare cu aplicaţiile.
Diferenţa dintre ele constă în ceea ce fac. Dacă aplicaţiile furnizează anumite răspunsuri sau
afişează informaţii, utilitarele asigură întreţinerea sistemelor.

3.3 Sistemele de operare


Sistemul de operare este software-ul de bază care rulează pe un calculator. După ce
porniţi computerul, înainte de a lansa
în execuţie vreo aplicaţie sau vreun
utilitar, ceea ce vedeţi este tocmai
sistemul de operare. Rolul acestuia
este de a comunica părţii fizice cum
să lucreze, cum să execute funcţii de
bază. Operaţiile de citire şi scriere pe
disc, transformarea apăsărilor pe taste
în caractere alfabetice, afişarea unei
Figura 2 – Sistemul de operare DOS imagini pe ecranul monitorului în
modul similar al unui televizor, toate
acestea şi multe altele sunt controlate
de către sistemul de operare. Un
sistem de operare este deci un
software de bază care defineşte şi
creează, controlează şi gestionează
servicii, întreţine mediul de
dezvoltare şi rulează programele
computerului. Ajunşi aici trebuie să
facem diferenţa dintre un sistem de
operare bazat pe text şi un sistem de
operare grafic.
Figura 3 – Sistemul de operare UNIX Sistemul de operare bazat
pe text pune la dispoziţia
utilizatorului o consolă, de obicei o linie de text însoţită de un cursor clipitor care indică locul

30
unde se va afişa ceea ce tastăm şi ne invită să introducem comenzi. În general aceste sisteme
de operare nu necesită mouse, iar utilizarea lor presupune în primul rând cunoaşterea
limbajului, a comenzilor ce pot fi introduse. Spre exemplu, pentru a afişa conţinutul unui
director, în sistemul de operare DOS (Disk Operating System) se foloseşte comanda dir în
timp ce pentru sistemele bazate pe UNIX, comanda ls. Pentru exemplificare, prezentăm
comparativ în figurile 2 şi 3, rezultatul acestor comenzi în cazul celor două sisteme.
Observaţi desigur că folosirea unor astfel de sisteme de operare este destul de dificilă
pentru un utilizator neavizat. La intersecţia dintre sistemele de operare text şi cele grafice au
apărut interfeţele de tip shell. Acestea nu reprezentau sisteme de operare propriu-zise, se
bazau pe sistemele de operare tip text însă aveau o modalitate grafică care permitea o
interacţiune mai uşoară cu sistemul. Astfel de exemple întâlnim în cazul utilitarului Norton
Commander şi în cazul versiunii Windows 3.1 şi Windows 3.1.1 precum şi sistemul X de
ferestre pentru Linux. În general interfeţele de tip shell au făcut trecerea la sistemele de
operare grafice.
Facem diferenţa între interfaţa cu utilizatorul discutată anterior şi termenul general de
interfaţă care reprezintă punctul de conectare a două lucruri. De exemplu, interfaţa cu
utilizatorul este punctul de conectare a fiinţei umane cu computerul, un subset al interfeţelor.
Interfaţa hardware este punctul în care se conectează componentele fizice de cele logice şi aşa
mai departe. Distincţia este importantă pentru că mai târziu vom discuta despre interfeţele
software ca punctul de legătură între două aplicaţii şi nu dorim să credeţi că prin interfaţă se
înţelege doar sistemul de ferestre al Windows.
Doar interfaţa cu utilizatorul este vizibilă pentru dumneavoastră şi reprezintă
modalitatea prin care dumneavoastră puteţi interacţiona cu sistemul. De aici puteţi lansa în
execuţie aplicaţii şi tot de aici le puteţi închide.
Sistemul de operare grafic este cel mai bine explicat de Microsoft Windows. De
această dată nu mai este necesară însuşirea unor numeroase comenzi, acţiunile asupra
funcţiilor sale de bază făcându-se prin simple click-uri cu mouse-ul sau prin derularea unor
mesaje pe ecran. Popularitatea sistemului de operare Windows se datorează incontestabil
acestui aspect, deşi numeroşi susţinători ai altor sisteme de operare nu încetează să critice
Microsoft şi produsele sale. Realitatea este însă aceea că indiferent de părţile sale slabe,
Microsoft a făcut posibilă utilizarea şi chiar programarea computerelor pe scară largă, a
permis publicului larg accesul la tehnologia informaţiei. Totuşi Microsoft Windows nu este
nici primul şi nici singurul sistem de operare grafic. Numeroase alte companii au pus la
dispoziţie produse asemănătoare. Pentru a că putea face o imagine generală, vom analiza pe
scurt evoluţia în timp a sistemelor de operare.
În 1961 apare sistemul de operare CTSS (Compatible Time-Sharing System),
strămoşul sistemului de operare UNIX, dezvoltat pe un computer IBM 7094. În 1965, devine
disponibil OS/360, un sistem de operare extrem de puternic, dezvoltat de IBM pe noile sale
computere System/360, sistem de operare anunţat încă din 1964. Variante derivate şi
îmbunătăţite ale acestui sistem de operare există şi in prezent. În acelaşi an apare şi TOS
(Tape Operating System), un alt sistem de operare produs de IBM pentru acelaşi calculator,

31
care putea lucra cu benzi magnetice. Se consideră că TOS este strămoşul direct al popularului
sistem de operare DOS. În 1967, apare sistemul de operare WAITS folosit până prin anii 1990
în laboratorul de inteligenţă artificială al Universităţii Standford. Sistemul de operare WAITS
a stat la baza viitoarelor sisteme de operare Xerox, Apple Macintosh şi Sun. Anul 1969 este
anul apariţiei sistemului de operare UNIX, primul sistem de operare multitask (ce putea
executa mai multe sarcini în acelaşi timp) şi multiuser (care accepta mai mulţi utilizatori în
acelaşi timp). Părinţii acestui sistem de operare sunt trei nume de referinţă în istoria
computerelor, Ken Thompson, Dennis Ritchie şi Doglas Mcllroy de şa AT&T Bell Labs. În
1976 apare sistemul de operare CP/M (Control Program/Monitor) destinat microprocesoarelor
Intel 8080/85 şi Z80 sistem de operare popular şi în ţara noastră la acea vreme. Computere
care foloseau acest sistem de operare au fost produse şi în România până prin anii 1994-1995
sub denumiri precum HC85, CIP, HC2000. Pentru mulţi dintre noi, aceste computere care
aveau implementate o versiune a limbajului de programare BASIC au reprezentat „ucenicia”
în domeniul tehnicii de calcul. Primul sistem de operare Apple apare în anul 1978 şi se
numeşte Apple DOS 3.1. Acest sistem de operare a fost deseori referit în literatura de
specialitate ca sistemul de operare DOS 3.x Numele DOS semnifică sistemul de operare cu
discuri (Disk Operating System) fiind primul care înlocuia benzile magnetice cu discuri
flexibile şi folosea structura arborescentă de directoare şi fişiere din UNIX. Anul 1981 este
anul de debut al popularului sistem de operare pentru IBM PC, produs de firma Microsoft şi
anume MS-DOS. Acesta punea la dispoziţie o interfaţă utilizator la nivelul liniei de comandă
şi facilităţi de creare a unor comenzi multiple stocate într-un fişier (batch scripting) interpretat
de un program special denumit interpretor. Totuşi nu Microsoft a inventat sistemul de operare
DOS care i-a adus renumele ci o altă firmă numită Seattle Computer Systems care a realizat o
clonă după CP/M şi a denumit-o QDOS. Microsoft a cumpărat acest produs şi l-a vândut apoi
corporaţiei IBM sub noul nume de PC-DOS şi mai apoi MS-DOS, versiunea îmbunătăţită.
Deoarece în acea perioadă IBM pregătea lansarea pe piaţă a computerelor personale, MS-
DOS a fost implementat ca sistem de operare nativ pe aceste computere şi a dobândit un
succes ameţitor rezistând până în anul 1995 când Microsoft a lansat primul sistem de operare
grafic numit Windows 95. În 1985 Microsoft lansează Windows 1.0, prima interfaţă grafică
pentru PC. Bazându-se pe DOS ca sistem de operare, Windows permitea o interacţiune mai
uşoară a utilizatorului cu computerul folosind elemente grafice. Din acel moment evoluţia
sistemelor de operare este cunoscută. Actualmente Microsoft pregăteşte lansarea ultimului său
sistem de operare grafic numit Windows Longhorn, mai optimizat şi bazat pe o nouă
tehnologie

3.4 Limbajele de programare


Microprocesoarele reacţionează numai la modele de semnale electrice. Un program
pentru calculator nu este altceva decât informaţia care îşi află reprezentarea finală ca un set
dinamic de semnale aplicate pinilor microprocesorului. Realizarea de către om unui asemenea
program, format din impulsuri electrice, este practic imposibilă, astfel încât ideile dintr-un
program pot fi reprezentate într-o formă mai uşor de înţeles pentru fiinţele umane prin
intermediul unui limbaj de programare.

32
Un limbaj de programare se aseamănă destul de mult cu limbajul uman, fiind format
dintr-un set de simboluri împreună cu sintaxa de combinare a acestora. Aceste simboluri
corespund modelelor de biţi care transmit microprocesorului semnale la fel cum literele
alfabetului reprezintă sunetele pe care doriţi să le rostiţi. De exemplu, dacă analizăm un măr la
un nivel suficient de profund, constatăm că în definitiv mărul nu reprezintă altceva decât un
set de componente subatomice de bază, aflat în continuă schimbare. Aceste componente nu
reprezintă nimic prin ele însele. Doar în momentul în care se combină într-un anumit fel,
creează fructul pe care îl cunoaştem sub denumirea de măr. Un alt mod de combinare ar duce
la o piersică sau la o prună. În concluzie, important este modelul general şi nu elementele
componente. Acest lucru este valabil şi la cuvinte şi cu atât mai mult la programe. În acest
caz, comenzile individuale sunt mai puţin importante. Ceea ce contează este modelul format
atunci când se combină, model care capătă sens prin intermediul programului rezultat.
La cel mai scăzut nivel, un program este o listă de comenzi pe care poate să le execute
microprocesorul. Această programare seamănă dacă doriţi cu reţetele culinare în care ordinea
contează. E ca şi cum aţi scrie „mai întâi pun făina, apoi drojdia şi în final oul”. O asemenea
listă poate să conţină mii de instrucţiuni la care ordinea contează, astfel încât fiinţele umane
găsesc acest mod de programare extrem de obositor şi solicitant. Pentru a rezolva această
problemă, oamenii au inventat limbajele de programare de nivel înalt care folosesc un
vocabular mai familiar în comparaţie cu modelele de biţi şi chiar cuvinte care seamănă cu
limbajul obişnuit. Un program special transformă apoi textul scris într-un asemenea limbaj în
modele de biţi pe care le poate executa microprocesorul.

3.4.1 Limbajul maşină


La fel ca un animal bine dresat care înţelege un repertoriu propriu de instrucţiuni, şi
microprocesorul poate să adauge, să scadă, să mute sau să modifice modele de biţi. Fiecare
familie de microprocesoare are implementată în circuitele sale interne un anumit set de
instrucţiuni pe care le poate executa. Aceste seturi de instrucţiuni nu sunt identice decât la
nivelul familiei de microprocesoare şi de aceea un program conceput pentru familia de
microprocesoare Intel cu care sunt echipate majoritatea computerelor de la noi, nu poate rula
pe computere Apple Macintosh bazate pe procesoare IBM/Motorola PowerPC.
Limbajul nativ pe care îl înţelege un microprocesor şi la care poate interacţiona se
numeşte limbaj maşină şi are aspectul unui model de biţi al semnalelor electrice care poate fi
exprimat printr-o serie binară de 0 şi 1. De obicei, instrucţiunile în limbaj maşină sunt
reprezentate în baza 16 numită şi reprezentare hexazecimală. Spre exemplu, instrucţiunea de
scădere are forma 0010110 în binar sau 16 în hexazecimal. Constataţi că aproape fiecare
număr binar are o semnificaţie. În exemplul anterior, numărul 0010110 în binar reprezintă
instrucţiunea de scădere. În momentul în care microprocesorul în întâlneşte el va şti că trebuie
să scandă ceva.
Pentru maşini, acest limbaj ar fi nemaipomenit. Oamenii însă nu gândesc în modele de
biţi, deşi unii după săptămâni, luni sau ani reuşesc să ştie ce face fiecare număr şi încearcă să
„asculte” modul de comunicare al maşinii. Ar fi, aşadar, aproape imposibil pentru majoritatea
oamenilor să scrie programe folosind doar 0 şi 1 sau eventual numere în baza 16. Se impune

33
prin urmare trecerea la o altă modalitate, mai evoluată de scriere a programelor pentru
computer.

3.4.2 Limbajul de asamblare


O reprezentare mai bună a codurilor în limbaj maşină implică folosirea mnemonicelor
în locul codurilor numerice şi a modelelor de biţi. Astfel fiecărui cod în limbaj maşină îi
corespund fragmente de cuvinte astfel încât numărul 16 în hexazecimal din exemplul
precedent devine mnemonicul SUB (de la englezescul subtraction = scădere). În acest fel apar
limbajele de asamblare care permit scrierea de programe folosind simboluri mai uşor de
memorat. Un program scris în limbaj de asamblare nu poate fi totuşi executat direct de către
microprocesor (amintiţi-vă că acesta nu ştie ce înseamnă SUB, el ştie numai de 0010110).
Este necesară o conversie a acestuia într-un model de biţi, adică, de exemplu, o transformare a
instrucţiunii SUB în numărul binar corespunzător. Această conversie se realizează de un
program special numit asamblor. Asambloarele nu fac însă doar o conversie ci pot, spre
exemplu, grupa mai multe instrucţiuni într-un bloc numit subrutină care poate primi un nume

bcd2bin cpi a,00h ;is A empty


jrnz bcd2bina ;NO - carry on and convert
ret ; else don't convert & return

bcd2bina ld SAVEA,a ;Save A reg


andi a,0fh ;Get bottom four bits

jrr 4,SAVEA,bcd2bin1 ;jump if bit 4 = 0


addi a,10 ;add 10

bcd2bin1 jrr 5,SAVEA,bcd2bin2 ;jump if bit 5 = 0


addi a,20 ;add 20
addi a,80 ;add 80

bcd2bin4 ret

Exemplu extras dintr-o subrutină scrisă în limbaj de asamblare


iar apoi poate fi doar apelat. Majoritatea instrucţiunilor din limbajul de asamblare lucrează
direct cu microprocesorul folosind mnemonicele în locul numerelor. Programatorii nu mai
trebuie să gândească în maniera pas cu pas a microprocesorului însă pot manipula, la cel mai
scăzut nivel, acţiunile acestuia. De aceea, limbajul de asamblare este cunoscut ca fiind un
limbaj de nivel scăzut.
Deşi limbajul de asamblare reprezintă un progres net în comparaţie cu limbajul
maşină, totuşi programarea într-un asemenea mediu este extrem de dificilă. E necesară
cunoaşterea setului de instrucţiuni specifice fiecărui microprocesor şi mai mult decât atât,
asamblorul nu are nici o modalitate de verificare a corectitudinii logice a codului scris. Prin

34
urmare, orice erori de programare la acest nivel pot fi critice, depanarea programului fiind
extrem de anevoioasă. Rezultatul unui program scris în limbaj de asamblare este un obiect
direct executabil de către microprocesor. Prin urmare, la acest nivel se pot scrie cele mai
rapide rutine posibile deoarece microprocesorul înţelege direct acel cod. Limbajul de
asamblare este folosit şi astăzi pentru scrierea programelor de BIOS sau a rutinelor critice din
punct de vedere al vitezei de execuţie şi al accesului la resursele hardware.

3.4.3 Limbaje de nivel înalt


Unii ingineri în domeniul tehnologiei computerelor au considerat că dacă se pot
transforma modelele de biţi în mnemonice, s-ar putea face încă un pas convertind
instrucţiunile într-un limbaj mai apropiat de cel uman. Beneficiind de o bibliotecă de
subrutine, s-a trecut la asocierea numelui acestor subrutine cu diferite instrucţiuni şi comenzi
scrise într-un limbaj inteligibil. Astfel, eliminând corespondenţa biunivocă dintre
instrucţiunile limbajului şi codurile în limbaj maşină s-a introdus un nivel suplimentar de
abstractizare între program şi microprocesor. În loc să manipuleze deplasarea octeţilor de
informaţie, limbajele de nivel înalt permit programatorilor să lucreze cu numere zecimale,
şiruri de caractere, elemente grafice. La acest nivel, limbajele de programare se împart în două
mari categorii: limbaje interpretate şi limbaje compilate.
3.4.3.1 Limbaje interpretate
La rularea unui program scris într-un limbaj interpretat, fiecare instrucţiune a
programului este convertită din limbajul înţeles de oameni în limbajul înţeles de
microprocesor de un program special numit interpretor. Deci, în momentul în care rulează un
program interpretat, în memorie se încarcă nu numai programul propriu-zis ci şi interpretorul.
Programele interpretate oferă rezultatele imediat deoarece pot fi rulate fără etape
intermediare. Dacă apare vreo eroare, aceasta poate fi corectată şi programul poate fi din nou
testat. Dezavantajul ar fi acela că maşina trebuie să facă interpretarea programului la fiecare
rulare a acestuia, executând aceleaşi operaţii de fiecare dată ş ducând la irosirea timpilor
microprocesorului. Ca o consecinţă directă, acest lucru duce la programe executate mai lent.
În prezent, cel mai important limbaj interpretat este Java, produs de Sun Microsystem
pentru programarea orientată pe Internet. Înainte de Java, limbajul BASIC (Beginner’s All-
purpose Symbolic Instruction Code) a avut şi încă are o mare răspândire şi a contribuit
semnificativ la dezvoltarea aplicaţiilor software. Extensia acestui limbaj numită Visual
BASIC este încă extrem de populară datorită uşurinţei în programare. Deşi Visual Basic pare
un limbaj compilat deoarece este generat un cod executabil, lucrurile nu stau aşa. În realitate,
Visual Basic asigură suportul de interpretare printr-un modul de execuţie (run-time module)
accesibil sistemului de operare şi invizibil utilizatorului care reprezintă interpretorul propriu-
zis.
3.4.3.2 Limbaje compilate
Există o analogie între limbajele compilate şi limbajele scrise în asamblare deoarece
sunt executate la fel, însă programul este scris într-o formă mai uşor de înţeles pentru oameni.
Programul scris într-un limbaj compilat şi care se numeşte cod sursă este transformat doar o
singură dată în limbaj maşină rezultând un cod direct executabil numit cod obiect. Codul

35
obiect este stocat şi apelat direct la fiecare execuţie a programului, fără a mai fi necesar un
interpretor, deoarece acesta poate fi înţeles de microprocesor. Acest proces de transformare se
numeşte compilare şi este executat de un program special numit compilator. Avantajul
programelor compilate este acela că pot fi executate direct şi foarte repede, aproximativ la fel
ca un program scris în limbaj de asamblare. Erorile sunt mai uşor de detectat şi corectat, însă
este necesară o nouă compilare pentru a actualiza codul obiect. Pentru programele complexe,
la nivel de întreprindere, procesul de compilare poate dura destul de mult, de la câteva minute
la câteva ore.
Cele mai vechi limbaje compilate sunt COBOL, FORTRAN şi Pascal însă poate cel
mai cunoscut este limbajul C şi extensia acestuia, C++. Extensia C++ este un limbaj de
programare orientat pe obiecte ceea ce înseamnă că programatorii pot scrie programe
complexe folosind module separate numite obiecte şi care pot fi mai apoi incluse fără nici o
modificare în alte programe mai complexe. Dacă doriţi, un obiect poate fi asociat cu palca de
sunet din calculator. Nu ne interesează cum funcţionează, tot ceea ce trebuie să ştim este cum
să o montăm. Mai mult, dacă dorim să ne dotăm computerul cu o placă de sunet, nu ne vom
apuca noi să construim una ci o vom cumpăra. Placa de sunet este deci un modul, un obiect pe
care îl putem folosi pentru a construi ceva mai complex cum ar fi computerul. Este acelaşi
lucru cu a reinventa roata. De ce sa ne apucăm să reinventăm ceva când acel ceva există deja.
Acesta este principiul programării orientate obiect care a dus la un salt fără precedent în
domeniul software. În prezent considerăm că toate aplicaţiile sunt construite pe aceste
principii.
Compilatoarele nu fac doar o simplă conversie a codului din cod sursă în cod
executabil sau cod obiect. Majoritatea compilatoarelor moderne sunt compilatoare cu
optimizare care se asigură că instrucţiunile programului sunt aranjate în cea mai eficientă
ordine pentru a folosi la maxim capacităţile microprocesorului. Practic acestea fac o muncă
pentru care ar fi fost nevoie de un programator în limbaj de asamblare

3.5 Întrebări recapitulative şi teme


1. Ce înţelegeţi prin termenul de software?
2. Descrieţi câteva programe utilitare şi prezentaţi rolul acestora.
3. Care sunt funcţiile principale ale unui sistem de operare.
4. Prin ce se caracterizează programarea în limbaj de asamblare. Avantaje şi limite.
5. Diferenţiaţi între limbajele interpretate şi limbajele compilate.

TEMĂ: Realizaţi un referat în care să prezentaţi, din punctul dumneavoastră de vedere,


structura modulelor programului Microsoft Word din perspectiva programării orientate pe
obiecte..

36
4 Aplicaţii pentru prelucrat de texte
Cele mai timpurii dar şi cele mai populare aplicaţii construite pentru a fi utilizate pe
computer au fost programele de redactare a textului. Maşina de scris a fost destul de repede
înlocuită de computer datorită avantajelor evidente pe care le prezenta acesta din urmă.
Revenirea asupra textelor în vederea corectării eventualelor greşeli, posibilitatea de realizare a
unor documente mai aspectuoase, mutarea şi reorganizarea blocurilor de text au reprezentat
doar câteva din avantajele aplicaţiilor computerizate de redactare a textului.
Printre cele mai populare aplicaţii de procesat texte enumerăm WordStar,
WordPerfect, Microsoft Word, Suita OpenOffice sau StarOffice de pe sistemele Unix.
Specialiştii în ştiinţele socio-umane găsesc aceste instrumente extrem de utile în
activitatea lor, deoarece o mare parte a timpului alocat practicării profesiei este destinat
prelucrării documentelor. De la redactarea lucrărilor ştiinţifice (lucrări de licenţă, lucrări de
doctorat referate ştiinţifice etc.) şi până la elaborarea corespondenţei cu beneficiarii, a
protocoalelor de examen, avizelor de specialitate sau recomandărilor şi caracterizărilor,
programele de procesat texte reprezintă singurul instrument cu adevărat performant şi fiabil.
Există o diferenţă subtilă însă esenţială între editoarele de texte şi procesoarele de
texte.

4.1 Editoarele de texte


Editoarele de texte sunt programe simple care permit introducerea brută a unor blocuri
de text. Deşi unele au anumite facilităţi de mutare sau copiere a blocurilor de text sau chiar de
formatare la nivel de bază a textelor, editoarele se caracterizează prin simplitate. Sunt rapide,
funcţionează pe orice sistem indiferent de resursele pe care le are la dispoziţie, permit
încărcarea respectiv salvarea pe disc a modificărilor efectuate în text iar ca rezultate
elaborează un text „curat” aproape standard, fără nici un element de formatare14.
Editoarele de texte nu sunt foarte utile în elaborarea documentelor profesionale
deoarece textul rezultat are aproape acelaşi aspect ca şi textul unei maşini de scris. Pot fi
folosite în redactarea diferitelor notiţe sau mesaje rapide datorită faptului că se încarcă foarte
repede şi consumă foarte puţine resurse. Ele devin însă instrumente puternice în mâna
programatorilor, mulţi dintre aceştia folosindu-le pentru a scrie sau a modifica elementele de
cod sursă. Deoarece elaborează un text standard, fără elemente de formatare care să deruteze
compilatorul sau interpretorul, fişierele generate de editoarele de texte sunt înţelese şi
compilate imediat de către compilatoare.
Exemple de asemenea aplicaţii sunt numeroase. Menţionăm aici „Windows Notepad”,
sau „vi” ori „joe” de sub sistemele Linux.
Unele editoare speciale au funcţii suplimentare de recunoaştere a sintaxei unui
program şi de semnalare a erorilor de sintaxă care le fac extrem de utile programatorilor.

14
Textul standard, numit şi text ANSII, respectă standardul cu acelaşi nume în utilizarea computerelor şi care
implementează un standard de utilizare al caracterelor în computer

37
Astfel este, spre exemplu, „PHP Expert Editor” sau „Zend Studio” destinate limbajului de
programare PHP.

4.2 Procesoarele de texte


Spre deosebire de editoare care au o utilitate aproape universală, procesoarele de text
sunt strict specializate. În cazul acestora, textul rezultat nu mai este standard ci conţine o serie
de coduri ascunse în document numite coduri de formatare. Din acest motiv procesoarele de
texte nu sunt recomandate pentru scrierea programelor ci doar pentru redactarea
documentelor. Un program scris în Microsoft Word de exemplu mai mult ca sigur va genera
multiple erori în momentul compilării datorită acestor elemente ascunse pe care însă
compilatorul le „vede” dar nu ştie să le interpreteze.
Procesoarele de texte au funcţii din ce în ce mai avansate făcând comodă şi plăcută
redactarea textelor iar documentele rezultate prezintă un aspect profesional. Alături de
funcţiile de bază, cum ar fi încărcarea şi salvarea pe disc a documentelor, copierea sau
mutarea blocurilor de text, aceste aplicaţii permit însă şi formatări la nivelul textului sau al
paragrafului, lucrul cu note de subsol şi antete, liste numerotate, indentări, formatări speciale
ale textului, borduri, texte colorate, tabele şi elemente grafice.
Mai mult, procesoarele de texte pun la dispoziţie funcţii speciale de monitorizare a
tastărilor astfel încât acestea sunt capabile să identifice greşelile de ortografie sau de
dactilografie sau chiar greşelile gramaticale pe care le sesizează prompt utilizatorului.
Lucruri cu stiluri şi şabloane de text, numerotarea automată a paginilor, generarea
automată a cuprinsului, dicţionarele de sinonime încorporate sunt alte funcţii avansate care
economisesc extrem de mult din timpul de lucru al utilizatorilor. Practic tot ceea ce înseamnă
aranjare în pagină, cuprins, listă bibliografică sau index de cuvinte poate fi automatizat şi lăsat
în seama calculatorului. Chiar formatul exact al paginii rezultate după tipărire poate fi
previzualizat economisindu-se astfel consumul inutil de hârtie.
Observaţi aşadar că utilizatorului nu-i mai rămâne practic de făcut mai nimic decât să
introducă corect textul de la tastatură. Însă procesoarele de texte moderne pot face chiar mai
mult. De ce să tastăm textul când putem pur şi simplu să-l dictăm. Într-adevăr, tehnologia de
ultimă oră permite antrenarea şi utilizarea unui motor de recunoaştere vocală ce poate „scrie”
în document cuvintele pe care noi i le dictăm. Desigur, scrierea nu este încă perfectă, mai pot
fi întâlnite cuvinte sau litere eronate, însă e mai mult şi mai bine decât tastarea brută. Şi în
definitiv, chiar şi la tastare facem greşeli. Bazându-se pe dicţionare de cuvinte şi inteligenţa
artificială, practic aceste instrumente fac deja trecerea de la computerele de generaţia a IV-a la
cele dintr-a cincia generaţie. În mod cert viitorul va aparţine unor asemenea modalităţi de
comunicare cu maşina. Din păcate aceste motoare de recunoaştere vocală sunt disponibile în
limba engleză şi în limbile unor ţări evoluate. Probabil că mai avem de aşteptat încă până la
apariţia unui asemenea motor pentru limba română, deşi preocupări în acest sens există şi
menţionăm cercetările Acad. Dr. Horia Teodorescu în inteligenţa artificială făcute în
România, dar încă fără un rezultat disponibil publicului.

38
În situaţia în care avem de copiat un text după un material tipărit, nu este tocmai plăcut
să începem prin a-l introduce de la tastatură. Tehnologia OCR (Optical Character
Recognition) ne vine din nou în ajutor. Putem aşeza pagina sau paginile pe un scaner iar
procesorul de texte poate analiza imaginea grafică rezultată şi o poate transforma în text
editabil. Acest lucru ne scuteşte de un efort considerabil, deşi nici în acest caz conversia nu
este perfectă. Oricum, este mai uşor să corectezi erorile decât să scrie ceva de la capăt.
Majoritatea procesoarelor de texte au chiar şi un limbaj de programare încorporat cu
ajutorul căruia puteţi construi formulare pentru introducerea datelor, puteţi automatiza
activităţi complexe, puteţi analiza documentul şi multe alte activităţi. Microsoft Word de
exemplu conţine un limbaj de scriptare derivat din Visual Basic şi numit VBA (Visual Basic
for Applications) care poate face toate aceste lucruri. Învăţarea acestui limbaj vă poate
transforma din utilizatori ai programului Microsoft Word în programatori ai documentelor
Word permiţându-vă dezvoltarea unor adevărate aplicaţii în spatele „foilor de hârtie” virtuale.
Multe aplicaţii de acest tip vin însoţite de un sistem de asistenţă în utilizare (Help) care
transformă redactarea textelor într-o activitate distractivă. Spre exemplu, în Microsoft Word îl
puteţi avea pe Einstein care vă monitorizează activitatea şi vă dă din timp în timp sugestii şi
sfaturi legate de eficientizarea activităţii.

4.3 Caracteristici ale textelor


Nu dorim să încheiem acest capitol înainte de prezentarea unor elemente de bază
legate de caracteristicile unui text. După cum spuneam, procesoarele de texte sunt programe
specializate în redactarea textelor. Rezultatul final este un document care în mod cert va fi
transferat la imprimantă pentru a fi tipărit. Documentele profesionale necesită însă un anumit
tip de prelucrare şi aranjare. După cum ştiţi, pe nici o foaie de hârtie nu veţi găsi textul
începând din colţul din stânga sus. Prima linie de text este decalată atât faţă de marginea de
sus cât şi faţă de marginea din stânga. Aceleaşi principii se aplică şi marginii de jos, respectiv
marginii din dreapta. Spaţiul tipăribil de pe foaia de hârtie se numeşte oglinda paginii în timp
ce marginea de sus poartă denumirea de antet iar cea de jos subsol. Marginile din stânga
respectiv dreapta nu poartă denumiri speciale.
Orice text este format dintr-o înşiruire de caractere. La fel cum oamenii au scriu
diferit, unii mai frumos, mai artistic iar alţii aproape ilizibil, la şi computerele pot scrie în
diferite moduri. Tipul caracterelor folosite în scriere poartă denumirea de font. Există o
mulţime de fonturi cu care se instalează un procesor de texte, putând oricând fi instalate altele
noi. Spre exemplu, prezentul curs este scris folosindu-se fontul Times New Roman, unul
dintre cele mai populare şi mai aspectuoase fonturi. Fonturile au o mulţime de caracteristici
iar descrierea completă a acestora ar depăşi scopul cursului de faţă. Ne vom rezuma doar la
prezentarea celor mai evidente proprietăţi ale unui font. Desigur, cel mai evident element este
dimensiunea şi caracterizează mărimea corpului de text. Putem astfel scrie mai mare sau mai
mic în funcţie de necesităţi. Mărimea unui font este exprimată de obicei în puncte tipografice.
Dacă am fi
Acest curs foloseşte pentru corpul de text valoarea 12 ca mărime a fontului.
scris cursul la mărimea 16, ca în acest exemplu, probabil că v-ar fi fost

39
mai uşor de citit însă ar fi ocupat mult mai multe pagini. Majoritatea
lucrărilor ştiinţifice folosesc 12 ca valoare a fontului Times New Roman. Celelalte proprietăţi
ale unui font ţin de stilul acestuia. Un text poate fi scris îngroşat, scriere numită scriere
aldină sau bold, poate fi scris înclinat, numit şi cursiv sau italic şi de asemenea poate fi
subliniat cu una, sau două linii ori într-un format personalizat. Caracteristicile referitoare la
stilul fontului sunt numeroase şi ne-ar trebui pagini întregi să le explicăm pe toate. De aceea
invităm cititorul să le exploreze singur folosind procesorul de texte Microsoft Word.
Fontul singur nu poate contribui la realizarea unui text profesional deoarece textele
sunt grupate în paragrafe. După cum ştim, orice paragraf începe cu un alineat, adică o
deplasare a primului rând în comparaţie cu celelalte rânduri ale unui paragraf. În mod curent
procesoarele de texte au opţiuni de recunoaştere şi aplicare automată a paragrafelor fără
folosirea unor taste suplimentare (de exemplu tasta Tab).
Un al doilea element important este alinierea adică modul în care liniile unui paragraf
sunt orientate în raport cu marginea din stânga şi/sau din dreapta a oglinzii paginii. Acest
paragraf este aliniat stânga-dreapta, adică procesorul de texte ajustează automat despărţirea în
silabe şi distanţa dintre rânduri pentru o aliniere perfectă atât în raport cu marginea din stânga
cât ş în raport cu marginea din dreapta.
Un paragraf centrat comunică procesorului de texte să înceapă scrierea caracterelor de
la mijlocul paginii, astfel încât distanţa dintre primul cuvânt şi marginea din stânga să fie
egală cu distanţa dintre ultimul cuvânt şi marginea din dreapta.
Alinierea doar la stânga permite o ajustare şi o ordonare a cuvintelor doar în raport cu
marginea din stânga a oglinzii paginii, în timp ce nu se păstrează alinierea şi în raport cu
marginea din dreapta ca în cazul alinierii stânga-dreapta. Acest paragraf este un exemplu
pentru alinierea doar la stânga.
Alinierea doar la dreapta reprezintă inversul alinierii la stânga. Cuvintele încep a fi
scrise de la marginea din dreapta iar rândurile sunt aliniate doar în raport cu aceasta.
Distanţa dintre rânduri reprezintă ceea ce-i spune şi numele: distanţa dintre două
rânduri ale unui text şi se exprimă ca înălţime medie a caracterelor componente. Majoritatea
textelor ştiinţifice folosesc ca stil de redactare o distanţă dintre rânduri la 1,2 sau cel mult 1,5
rânduri. Prezentul document a fost scris la 1,2 ca valoare pentru distanţa dintre rânduri.
În vederea îmbunătăţirii lizibilităţii se preferă ca distanţa dintre două paragrafe să fie
mai mare decât distanţa dintre rândurile aceluiaşi paragraf. Observaţi că acest document
respectă aceste caracteristici care fac obiectul unor opţiuni speciale ale procesorului de texte.

4.4 Întrebări recapitulative şi teme


1. Care sunt funcţiile principale ale unui procesor de texte?
2. Ce diferenţe există între editoarele şi procesoarele de texte?
3. Unde se dovedesc a fi utile editoarele de texte?
4. Enumeraţi şi descrieţi caracteristicile de bază ale fonturilor.

40
5 Programe de calcul şi programe
statistice
Programele de foi ce calcul tabelar au apărut ca o necesitate a transpunerii vechilor foi
de calcul contabile în format electronic, computerizat. Astfel unul dintre produsele firmei
Lotus, aplicaţia Lotus 123 a fost poate cel mai cunoscut produs informatic şi cel mai puternic
prin jurul anilor 1990-1995. În acelaşi timp, Microsoft a lansat Microsoft Excel cunoscut
acum ca fiind poate cel mai bun produs din lume de acest gen datorită multiplelor facilităţi pe
care le oferă. La fel ca şi Microsoft Word, Microsoft Excel se caracterizează prin funcţii
avansate de calcul, grafice profesionale, uşurinţă în utilizare şi un excelent sistem de asistenţă.
Foarte mulţi confundă foile de calcul tabelar cu bazele de date datorită structurii lor
relativ asemănătoare. Nu există însă nici o asociere între aceste două categorii de aplicaţii,
după cum vom vedea în continuare. Programele de calcul tabelar sunt axate, optimizate şi
folosesc funcţii de calcul, în timp ce bazele de date au cu totul altă structură şi cu totul alt
scop fiind dedicate stocării, prelucrării şi regăsirii unor volume mari de informaţii.
Specialiştii în domeniul socio-uman găsesc utile aceste aplicaţii atunci când sunt puşi
în faţa prelucrărilor de date. Rezultatele unor probe psihologice pot fi stocate într-o foaie de
calcul tabelar supusă mai apoi procesării prin intermediul setului de funcţii matematice pe
care aplicaţia le pune la dispoziţie. Calculele sunt realizate aproape instantaneu, pot fi uşor
reprezentate grafic, într-o formă intuitivă, pot fi imprimate sau transmise altora facilitând
astfel schimbul de informaţie. Mai mult, foile de calcul pot fi asociate în diferite moduri
rezultând reprezentări multidimensionale de date care stau la baza unor calcule mult mai
complexe.
Deşi foile de calcul tabelar sunt foarte puternice, utilizarea eficientă a acestora poate
depăşi competenţa unui specialist din acest domeniu. În această situaţie un alt set de aplicaţii
vine să completeze lacuna şi anume programele specializate în analize statistice. Cu o
structură asemănătoare şi care în general acceptă schimbul de date, aceste produse software
prezintă însă un set de funcţii extrem de performante, specializate în analize statistice. Ceea ce
am fi făcut într-o foaie de calcul tabelar utilizând numeroase formule şi de cele mai multe ori
un limbaj propriu de programare, aici putem face prin doar câteva clicuri cu mouse-ul şi
efectuând câteva selecţii de date. În plus, rezultatele sunt prezentate într-o formă intuitivă care
să faciliteze interpretarea. Cele mai cunoscute programe de acest gen sunt SPSS, Statistica,
Minitab.

5.1 Programe de calcul tabelar


Programele de calcul tabelar au structura unui tabel clasic dispus pe linii şi coloane. În
mod obişnuit liniile se identifică prin cifre iar coloanele prin litere sau combinaţii de litere.
Elementul de bază al unui program de calcul tabelar este celula care apare la intersecţia dintre
o linie şi o coloană. Celulele conţin date de diferite tipuri cum ar fi şiruri de caractere, date
numerice, date calendaristice, date în format monetar şi aşa mai departe.

41
Ideea de bază a acestor programe este aceea de referire. Referind o celulă, adică
scriind pur şi simplu numele ei, noi apelăm de fapt valoarea conţinută în acea celulă. Astfel,
dacă scriem o formulă care să calculeze suma a două numere este suficient să adunăm
referinţele la celulele care conţin cele două numere pentru ca programul să afişeze rezultatul
corespunzător. Ulterior, dacă schimbăm numerele, nu mai este necesară rescrierea formulei ci
doar modificarea numerelor din celulele care le conţin.
Spre exemplu, să presupunem că în celula A1 (la intersecţia dintre linia 1 şi coloana
A) avem numărul 3 iar în celula A2 (sub celula A1 deci) avem numărul 5. Rezultatul dorim să
fie afişat în celula A4 (poate fi oricare alta). În acest caz, în această celulă va trebui să scriem
ceva de genul =A1+A2. Nu am adunat direct 3 cu 5 ci am adunat celulele care conţin cele
două numere. Semnul = spune programului că are de a face cu o formulă şi nu cu altceva.
După această operaţie, în celula A4 nu se va afişa ceea ce am scris noi (=A1+A2) ci rezultatul
acestei adunări şi anume 8. Acum dacă dorim să calculăm suma numerelor 5 şi 12, nu avem
decât să înlocuim 3 cu 12 şi instantaneu va fi afişat noul rezultat.
Desigur aceasta este o funcţie de bază a foilor de calcul deoarece puterea lor vine din
alte elemente mult mai complexe. În primul rând o asemenea aplicaţie conţine sute sau chiar
mii de funcţii predefinite ce acoperă marea majoritatea a calculelor ce pot fi executate, fie că e
vorba de calcule comune fie că e vorba de analize ştiinţifice avansate.
În plus, o foaie de calcul tabelar poate fi formatată ca orice document text şi trimisă la
imprimantă iar graficele care pot rezulta în urma calculelor permit elaborarea unor materiale
extrem de utile în cele mai variate situaţii.
Facilitatea de auto-completare este un alt instrument util, caracteristic foilor de calcul
tabelar are permite calculul rapid al unor volume mari de date. Să ne imaginăm că avem două
coloane care stochează notele unei clase de elevi la matematică şi fizică iar în a treia coloană
dorim să calculăm media pentru fiecare elev. Vă imaginaţi probabil că va trebui să scrieţi
aceeaşi formulă de 30 de ori, câţi elevi sunt în clasă. Ei bine, nu este necesar. Veţi scrie
formula doar o singură dată, iar apoi prin „tragere” cu dispozitivul de indicare veţi actualiza
notele tuturor celorlalţi. Programul, este suficient de „inteligent” să depisteze ce tip de date
există, ce operaţie s-a solicitat şi incrementează automat referinţele celulelor astfel încât
rezultatul să fie actual. De fiecare dată când un rezultat nu corespunde aşteptărilor
dumneavoastră, vina vă aparţine.

5.2 Programe de analiză statistică


Programele de analiză statistică reprezintă specializări ale foilor de calcul tabelar
dedicate exclusiv calculului statistic. Deoarece prelucrările statistice presupun în general
calcule repetate pe volume foarte mari de date, aceste aplicaţii sunt optimizate special pentru
acest scop. Coloanele nu mai sunt notate generic cu litere şi poartă denumirea de variabile
care trebuie definite. Astfel într-o coloană poate fi stocat un anumit tip de date şi doar unul.
Nu putem aşadar amesteca şirurile de caractere cu cifrele spre exemplu.
Setul de funcţii disponibil este un set de funcţii statistice. În mod normal acestea sunt
deja implementate în rutine specifice astfel încât este suficient să alegem timpul de prelucrare

42
dintr-o listă şi variabilele asupra cărora se aplică pentru ca programul să efectueze singur
algoritmul de lucru şi să ne afişeze rapid rezultatele. Munca făcută în câteva luni de
statisticienii de la începutul secolului trecut poate fi acum realizată în câteva zecimi de
secundă. De la statistici descriptive şi până la procedurile laborioase de analiză factorială,
regresie sau analiză de varianţă, aceste aplicaţii permit specialiştilor accesul rapid şi elegant la
rezultate. Atenţia nu se mai concentrează pe prelucrarea brută a datelor ci pe analiza şi
interpretarea rezultatelor obţinute. Nu mai există riscul de a greşi la un calcul deoarece
computerele nu greşesc. Toate erorile care pot să apară se datorează exclusiv cauzelor umane.
Alături de funcţii specifice de prelucrare aceste aplicaţii posedă şi instrumente proprii
de management, conversie şi reconversie a datelor, transfer pentru a fi folosite de alte aplicaţii
ţi import din alte aplicaţii, precum şi un limbaj de programare propriu. Folosindu-l, veţi putea
beneficia de adevărata putere a programului. Astfel pot fi automatizate serii de operaţiuni pot
fi construite proceduri de corectare şi analiză preliminară a informaţiilor, de validare a datelor
introduse pentru a limita riscul introducerii accidentale a unor valori improprii şi multe altele.
Facilităţile de reprezentare grafică nu sunt construite atât pentru raportare a
rezultatelor ci mai curând pentru analiza acestora. O imagine a unei distribuţii de rezultate
poate face uneori mai mult decât o serie de cifre, mai ales pentru persoanele aflate la început.
Totuşi nu trebuie să uităm că statistica este o ştiinţă exactă, chiar dacă lucrează intens cu
probabilităţi. Aşadar orice afirmaţie statistică trebuie susţinută cu dovezi, altminteri nu are
absolut nici o valoare. Iar dovezile constau în cifre şi praguri. Nu putem face o afirmaţie pe
baza unei imagini grafice, chiar dacă graficul ne ajută de cele mai multe ori s-o intuim.

5.3 Întrebări recapitulative şi teme


1. Care sunt diferenţele dintre bazele de date şi foile de calcul tabelar?
2. Care este specificul unei foi de calcul tabelar?
3. Ce înţelegeţi prin termenul de referire a unei celule?
4. Ce tip de date credeţi că este reprezentativ pentru a stoca numărul de telefon al unei
persoane?
5. De ce coloanele unui program de analize statistice nu pot conţine decât un singur tip de
date?
6. Ce s-ar întâmpla dacă am încerca să calculăm suma numelui şi al prenumelui unei
persoane folosind o foaie de calcul tabelar?

43
6 Baze de date
Deseori bazele de date se confundă cu foile de calcul tabelar datorită structurii lor
relativ asemănătoare. Există însă o mare diferenţă între aceste două categorii de aplicaţii,
diferenţă pe care vom încerca să o clarificăm în cele ce urmează.
Probabil că aplicaţiile folosite cel mai frecvent de către specialiştii din domeniul
ştiinţelor socio-umane sunt aplicaţiile de baze de date care corespund perfect necesarului de
stocare, reactualizare şi regăsire a informaţiilor referitoare la subiecţi. De aceea vom aborda
detaliat elementele definitorii ale proiectării şi gestionării eficiente a bazelor de date.
La un nivel de maximă generalitate, bazele de date sunt baze de date locale, în care
fişierul ce conţine informaţiile se găseşte pe maşina utilizatorului şi servere de baze de date
care asigură accesul la datele aflate la distanţă de maşina utilizatorului, pe computere speciale
şi în general dedicate acestui scop.
Primele sisteme de baze de date au fost sistemele bazate pe fişiere. Acestea au
reprezentat o colecţie de programe aplicaţie care efectuează servicii pentru utilizatorii finali
cum ar fi producerea de rapoarte. Fiecare program definea şi gestiona propriile sale date.
Acest tip de stocare a datelor a constituit o încercare de a computeriza sistemul de îndosariere
manual. Acest sistem de gestionare avea însă o serie de limitări serioase pentru care s-a şi
renunţat la el destul de repede. În primul rând, datele fiind izolate în fişiere separate, cele care
trebuiau să fie imediat disponibile erau greu de accesat. Era necesară sincronizarea preluării a
cel puţin două fişiere pentru a se asigura corectitudinea datelor. Apoi, abordarea
descentralizată a determinat dublarea necontrolată a datelor care ducea la risipă de spaţiu,
fişiere de mari dimensiuni şi cel mai important la alterarea integrităţii informaţiilor.
Dependenţa de date a programelor şi incompatibilitatea fişierelor de date făcea aproape
imposibilă portabilitatea şi se constituia într-o altă limită majoră a acestui sistem.
Toate aceste limitări se datorau faptului că definiţia datelor este încorporată în
programele aplicaţie în loc să fie stocată independent şi nu exista nici un control asupra
accesului şi manipulării datelor dincolo de cel impus de programele aplicaţie.
Astfel au apărut bazele de date şi sistemul de gestionare al bazelor de date (SGBD).
Bazele de date reprezintă o colecţie partajată de date, între care există relaţii logice şi o
descriere a acestora, proiectată pentru a satisface necesităţile informaţionale ale unei
organizaţii. Prin urmare, datele se constituie într-un depozit unic, definit o singură dată şi
utilizat în comun de mai multe persoane. Relaţiile logice presupun identificarea entităţilor,
atributelor şi a relaţiilor la care se referă necesităţile informaţionale ale unei organizaţii.
O entitate este un obiect distinct (persoană, loc, lucru, eveniment) din organizaţie care
trebuie reprezentat în baza de date. Atributul reprezintă o proprietate care descrie un aspect
oarecare al obiectului pe care dorim să-l reprezentăm (spre exemplu înălţimea unei persoane)
iar relaţia se referă la modul de asociere între două sau mai multe entităţi (spre exemplu
entitatea angajat face parte din entitatea departament. Orice angajat aparţine unui
departament. Între angajat şi departament s-a stabilit relaţia de apartenenţă)

44
Un SGBD reprezintă un sistem de programe care permite utilizatorului definirea,
crearea şi întreţinerea bazei de date precum şi accesul controlat la aceasta.
Se observă separarea clară a bazelor de date de aplicaţiile care le gestionează. Un
SGBD permite utilizatorilor să definească baza de date prin intermediul unui limbaj de
definire a datelor (DDL), să insereze, reactualizeze, şteargă sau să extragă date din baza de
date folosind un limbaj de manipulare al datelor (DML). Accesul controlat la bazele de
date se referă la sistemul de securitate care previne accesarea bazei de date de către
utilizatorii neautorizaţi, la asigurarea concordanţei datelor stocate prin intermediul sistemului
de integritate, la accesul partajat la baza de date prin sistemul de control al concurenţei şi
la refacerea bazei de date în cazul unor defecţiuni hardware sau software prin sistemul de
control al refacerii.
Un mediu SGBD are o serie de componente împărţite în două clase principale: maşina
şi utilizatorul, legătura dintre acestea fiind asigurată de datele propriu-zise.
Maşina se referă atât la elementele hardware cât şi la cele software. Evident că pentru
a putea rula, orice SGBD are nevoie de unul sau mai multe computere. Totalitatea
echipamentelor fizice implicate în funcţionarea unui SGBD formează hardware-ul asociat.
Partea software se referă la programele SGBD şi la programele aplicaţie, împreună cu
sistemul de operare aferent. Cele mai importante sisteme de gestiune a bazelor de date folosite
pe computerele locale sunt aplicaţiile Microsoft Access, FoxPro şi DBase, iar ca servere de
baze de date amintim Oracle, MySQL, Sybase sau Microsoft SQL Server.
Utilizatorul sau mai exact partea de utilizare, cuprinde procedurile, instrucţiunile şi
regulile care guvernează proiectarea şi utilizarea bazei de date împreună cu persoanele
implicate în sistem şi care dobândesc diferite roluri.
Cea mai importantă componentă a unui mediu SGBD o constituie datele care se referă
atât la datele operaţionale cât şi la informaţiile despre date. Structura unei baze de date se
numeşte schemă şi cuprinde entităţile, atributele şi relaţiile existente într-o bază de date. La
rândul lor, schemele bazelor de date se pot constitui într-un catalog al sistemului care conţine
date precum: denumirile, tipurile şi dimensiunile articolelor de date, denumirile relaţiilor,
constrângerile de integritate asupra datelor, utilizatorii autorizaţi care au acces la date, etc.
Observăm că toate elementele prezentate mai sus se referă la informaţiile despre date („meta-
date”) şi nu conţin nici o referire la datele propriu-zise. Toate aceste aspecte sunt tratate în
procesul de proiectare a bazelor de date.

6.1 Funcţiile unui sistem SGBD


În anul 1982, analizând critic diferite SGBD, Codd a enunţat opt servicii pe care
trebuie să le furnizeze un sistem de gestiune a bazelor de date complet:

6.1.1 Stocarea, regăsirea şi reactualizarea datelor


Aceasta este funcţia fundamentală a unui SGBD. Pentru asigurarea acestei
funcţionalităţi, sistemul trebuie să ascundă faţă de utilizatorul final detaliile privind
implementarea fizică internă a bazei de date.

45
6.1.2 Catalog accesibil utilizatorilor
Un asemenea catalog va conţine descrieri ale articolelor de date, precum denumirile,
tipurile şi dimensiunile articolelor de date, denumirile relaţiilor, constrângeri de integritate
asupra datelor, numele utilizatorilor autorizaţi care au acces la date, schemele externe,
conceptuale şi interne, statistici de utilizare.
Beneficiile catalogului de sistem sunt remarcabile şi se referă la faptul că informaţiile
despre date pot fi colectate şi stocate central contribuind la menţinerea controlului asupra
datelor, sensul datelor poate fi definit şi înţeles mai bine de către utilizatori, redundanţa şi
incoerenţele pot fi mai uşor identificare şi corectate, modificările pot fi înregistrare, securitate
şi integritate sporită, pot fi furnizate informaţii de audit.

6.1.3 Asigurarea tranzacţiilor


Un SGBD trebuie să ofere un mecanism prin care să garanteze că sunt efectuate toate
reactualizările corespunzătoare unei tranzacţii sau că nu se efectuează nici una. O tranzacţie
nereuşită poate aduce baza de date într-o stare incoerentă. Spre exemplu, în momentul
extragerii unei sume de bani dintr-un bancomat pot să apară o mulţime de evenimente care să
blocheze tranzacţia şi să determine două situaţii posibile: dumneavoastră să primiţi banii iar
modificarea să nu se înregistreze în cont (cazul fericit pentru dumneavoastră) sau modificarea
să se înregistreze în cont dar dumneavoastră să nu primiţi nimic (cazul fericit pentru bancă).
Un SGBD trebuie să se asigure că nu pot să apară asemenea situaţii. Un eveniment neprevăzut
care ar bloca tranzacţia, determină sistemul să restaureze baza de date la starea de înaintea
începerii tranzacţiei.

6.1.4 Servicii de control concurente


Un SGBD permite mai multor utilizatori accesul concurent la datele partajate şi de
aceea acesta trebuie să furnizeze un mecanism care să garanteze că baza de date este corect
actualizată şi nu apar interferenţe în momentul în care mai mulţi utilizatori efectuează
simultan astfel de operaţii.

6.1.5 Servicii de reconstituire


Din diferite motive software sau hardware un SGBD poate să se blocheze sau să aducă
baza de date într-o stare incoerentă. În ciuda acestui fapt, SGBD trebuie să asigure un
mecanism de reconstituire a bazei de date în cazul în care aceasta este deteriorată într-un fel
oarecare.

6.1.6 Servicii de autorizare


Majoritatea datelor conţinute în bazele de date utilizate de psihologi au un caracter
confidenţial. Termenul de securitate se referă la protecţia bazei de date împotriva accesului
neautorizat, fie intenţionat, fie accidental. Un SGBD trebuie să furnizeze un mecanism care va
garanta că numai utilizatorii autorizaţi pot accesa baza de date sau anumite date din aceasta.

46
6.1.7 Suport pentru comunicarea datelor
Un SGBD trebuie să poată fi integrat unui software de comunicaţie deoarece
majoritatea utilizatorilor accesează baza de date la nivelul terminalelor. Acestea pot fi
conectate direct la calculatorul ce conţine SGBD (cazul bazelor de date locale) sau pot fi
situate la mii de kilometri de acesta (cazul serverelor). Utilizatorii trebuie să poată accesa baza
de date centralizată indiferent de locaţia acesteia. O astfel de topologie se numeşte prelucrare
distribuită.

6.1.8 Servicii de integritate


Cuprind mijloacele care asigură că atât datele din baza de date cât şi modificările
acestora respectă anumite reguli. Practic, integritatea bazei de date se referă la corectitudinea
şi coerenţa datelor stocate şi are în vedere calitatea acestora. Spre exemplu, constrângerea ca
nici un subiect să nu poată fi examinat în acelaşi timp de doi psihologi este o problemă de
integritate a bazelor de date.

6.2 Proiectarea bazelor de date


Proiectarea bazelor de date, adică determinarea structurii acestora poate fi un proces
extrem de complex căruia îi pot fi dedicate, fără exagerare, mii de pagini. Proiectarea unei
baze de date este un proces crucial şi determină o schimbare de paradigmă prin punerea
accentului întâi pe date şi apoi pe aplicaţie. O bază de date prost proiectată va genera erori
care pot duce la decizii greşite cu repercusiuni serioase asupra activităţii şi asupra instituţiei.

6.2.1 Structura unei baze de date relaţionale


O bază de date relaţională stochează datele în tabele, care amintesc de foile de calcul
tabelar, fiecare tabel conţinând informaţii despre un anumit tip de entitate. Aceste tabele se
mai numesc şi relaţii. Elementul definitoriu al unui tabel este coloana, denumită şi atribut al
unei relaţii şi care poartă o anumită denumire. O relaţie este deci reprezentată printr-un tabel
bidimensional în care rândurile acestuia corespund înregistrărilor individuale iar coloanele
corespund atributelor. Domeniul reprezintă mulţimea de valori permise pentru unul sau mai
multe atribute. Domeniile pot fi definite pentru fiecare atribut sau două sau mai multe atribute
pot fi definite pe acelaşi domeniu (spre exemplu, strada „Păcurari” este definită pe domeniul
Denumirile_Străzilor). Rândurile dintr-un tabel care conţin înregistrările individuale poartă
denumirea de tupluri în literatura de specialitate.
O relaţie (tabel) este caracterizată prin două elemente importante: gradul unei relaţii
ce reprezintă numărul de atribute pe care le conţine aceasta (numărul de coloane) iar din acest
punct de vedere putem vorbi despre relaţii unare, binare, ternare şi aşa mai departe şi de
asemenea de cardinalitatea unei relaţii care se referă la numărul de tupluri (rânduri) aflate
într-o relaţie.
Aceste lucruri fiind cunoscute, putem afirma că o bază de date relaţională
reprezintă un set de relaţii normalizate, adică o bază de date ce conţine relaţii structurate
adecvat prin procesul de normalizare pe care ăl vom aborda puţin mai târziu.

47
Din acest punct de vedere, relaţiile au o serie de proprietăţi caracteristice care
fundamentează matematic acest proces. Astfel:
• O relaţie are o denumire diferită de toate celelalte denumiri de relaţii. În acest fel
se asigură unicitatea tabelelor din baza de date. Nu pot exista într-o bază de date
două tabele (relaţii) cu acelaşi nume.
• Fiecare celulă a relaţiei conţine exact o valoare atomică (singulară). Această
valoare este dată de tipul atributului şi de domeniul căruia îi aparţine. Stocarea în
aceeaşi celulă a două numere de telefon ale unui subiect este ilegală.
• Fiecare atribut are o denumire distinctă şi toate valorile unui atribut aparţin
aceluiaşi domeniu. În coloana ce conţine codul numeric personal al unui subiect nu
poate, de exemplu, să existe codul poştal al localităţii.
• Ordinea atributelor nu are nici o importanţă. Practic nu contează în ce ordine
definim coloanele unei relaţii. Acest lucru nu afectează în nici un fel performanţa
şi regulile bazei de date.
• Fiecare tuplu este distinct şi nu există dubluri ale tuplurilor. Acest lucru elimină
problema înregistrărilor multiple din vechile sisteme bazate pe fişiere. Nu există
nici o logică pentru a stoca acelaşi subiect de două ori în relaţia care conţine datele
personale ale subiectului. Această operaţiune este atât ilogică cât şi ilegală.
• Teoretic ordinea tuplurilor nu are nici o importanţă. Aici apare o primă diferenţă
dintre teorie şi practică deoarece unele comenzi din limbajul de manipulare al
datelor sunt afectate de ordinea înregistrărilor iar din acest punct de vedere
eficienţa accesării tuplurilor poate fi diferită.

6.2.2 Chei
După cele afirmate mai sus, putem observa că o înregistrare dintr-un tabel poate fi
identificată în mod unic printr-o coloană sau prin mai multe coloane. Astfel, prin supercheie
înţelegem un atribut sau un set de atribute, care identifică în mod unic un tuplu din
interiorul unei relaţii. Supercheia stă la baza stabilirii cheii primare, dar înainte de a se
realiza acest lucru, proiectanţii de baze de date identifică aşa-numitele chei candidat – o
supercheie pentru care nici o submulţime adecvată nu este o supercheie în cadrul
relaţiei respective. O cheie candidat are deci 2 proprietăţi: este unică – în fiecare înregistrare
(tuplu) din tabel valorile sale identifică unic acel tuplu şi este ireductibilă – nici o submulţime
a cheii candidat nu are proprietatea de unicitate. Într-o relaţie pot exista două sau mai multe
chei candidat iar în momentul în care o cheie este construită din două sau mai multe atribute,
aceasta se numeşte cheie compusă.
Cheia primară reprezintă cheia candidat selectată pentru a identifica în mod unic
tuplurile din cadrul unei relaţii. Toate celelalte chei se numesc chei alternative. De
exemplu o cheie primară ar putea fi reprezentată de codul numeric al subiecţilor, deoarece
există certitudinea că acesta identifică unic fiecare subiect, iar fiecare subiect are un con
numeric personal.

48
În momentul în care în baza de date există mai mult de o relaţie, se stabilesc şi cheile
străine care reprezintă un atribut sau o mulţime de atribute din cadrul unei relaţii cale se
potrivesc cu cele din cheia candidat a unei alte relaţii. Cheile străină asigură practic legătura
dintre tabelele unei baze de date. Înţelegerea acestora are un rol deosebit de important pentru
asimilarea conceptelor de indexare, şi integritate relaţională.

6.2.3 Integritatea relaţională


Orice atribut are un domeniu asociat existând astfel posibilitatea de a implementa
anumite constrângeri asupra mulţimii de valori permise pentru atributele relaţiilor. Aceste
constrângeri se numesc constrângeri de domeniu. Pe lângă acestea există două reguli
importante de integritate care reprezintă restricţii ce se aplică tuturor instanţelor unei baze de
date. Acestea sunt cunoscute sub denumirile de integritate a entităţilor, respectiv integritate
referenţială.
Integritatea entităţilor afirmă că într-o relaţie de bază, nici un atribut al unei chei
primare nu poate fi nul15. Dacă o cheie primară este un identificator minim utilizat pentru
identificarea unică a tuplurilor, este logic să presupunem că în mod obligatoriu atributele care
intră în componenţa cheii primare să conţină valori iar rezultatul combinării acestora să fie
unic. Este ilegală existenţa unei valori nule într-un atribut ce intră în componenţa cheii
primare sau existenţa unor chei primare duplicat. Spre exemplu, nu poate fi introdus în baza
de date un subiect care nu are cod numeric personal, după cum nu pot exista doi subiecţi
diferiţi cu acelaşi cod numeric personal. După cum am stabilit deja, nu are nici un sens
introducerea în baza de date de două ori a aceluiaşi subiect.
Integritatea referenţială afirmă că dacă într-o relaţie există o cheie străină, valoarea
acesteia trebuie ori să coincidă cu valoarea unei chei candidat a unui tuplu din relaţia sa de
bază, ori să fie în întregime nul. Dacă avem două relaţii, una care stochează datele personale
ale subiecţilor şi alta care stochează rezultatele obţinute la testul Raven, atunci integritatea
referenţială spune că nu poate exista un rezultat la testul Raven care să identifice un subiect
inexistent în tabelul cu datele personale ale subiecţilor. Deci orice rezultat stocat trebuie să
aibă un corespondent în tabelul subiecţilor. Nu este însă obligatoriu ca orice subiect să aibă o
examinare făcută cu testul Raven. În definitiv nu suntem obligaţi să examinăm toţi subiecţii
cu testele pe care le avem iar integritatea referenţială nici nu ne solicită acest lucru.
Aceste două reguli reprezintă reguli esenţiale şi obligatorii pentru orice bază de date.
Proiectanţii pot însă pot specifica şi alte reguli adiţionale numite constrângeri de
întreprindere în funcţie de necesităţile punctuale. Spre exemplu se poate limita domeniul de
valori al vârstei subiecţilor între 0 şi 100 de ani care să accepte doar date de timp întreg.

6.2.4 Normalizarea bazelor de date


Orice proiectare a bazelor de date începe în mod firesc cu un inventar al datelor
necesare şi al domeniului de valori pe care acestea le pot lua. Nu trebuie să avem tendinţa de a
pune toate aceste date într-un singur tabel deoarece pot exista cazuri particulare cară să
15
În teoria bazelor de date, prin termenul de nul se înţelege valoarea unui atribut care este în mod curent
necunoscută sau nu este aplicabilă tuplului respectiv.

49
încalce regulile de integritate sau regulile generale ale bazelor de date. Procesul de
normalizare reprezintă o tehnică de realizare a unui set de relaţii cu proprietăţi
dezirabile în funcţie de cerinţele instituţiei. Să nu uităm că bazele de date relaţionale derivă
din teoria mulţimilor iar majoritatea legilor aplicabile mulţimilor se regăsesc şi aici.
Normalizarea este deci o metodă formală care identifică relaţiile bazându-se pe cheile primare
sau pe cheile candidat ale acestora şi pe dependenţele funcţionale ale atributelor lor. Prin
aceasta se asigură evitarea redundanţei datelor şi a anomaliilor de reactualizare.
Normalizarea se prezintă ca o serie de paşi iar fiecare pas corespunde unei anumite
forma normale cu proprietăţi cunoscute. Pe măsura desfăşurării normalizării, relaţiile devin
mai restrictive ca format şi mai puţin vulnerabile faţă de anomaliile de actualizare. Prima
formă normală este obligatorie şi de importanţă critică. Toate celelalte sun opţionale, însă
abordarea lor duce la elaborarea de relaţii mai puternice în cadrul bazei de date.
6.2.4.1 Prima formă normală
Un tabel nenormalizat conţine unul sau mai multe grupuri repetitive. Prima formă
normală afirmă că o relaţie în care intersecţia fiecărui rând cu fiecare coloană conţine o
singură valoare şi numai una se află în prima formă normală.
Tehnic, se procedează prin introducerea datelor inventariate într-un tabel
nenormalizat. Pentru a transforma acest tabel în prima formă normală se identifică şi se
elimină grupurile repetitive din cadrul acestuia, adică a atributelor din cadrul unui tabel care
apar cu valori multiple pentru o singură apariţie a cheii nominalizate al acestui tabel. Astfel se
nominalizează un atribut sau un grup de atribute ca o cheie a tabelului nenormalizat după care
se elimină grupurile repetitive prin plasarea datelor care se repetă, împreună cu cheia iniţială,
într-o relaţie separată. Un set de relaţii se află în prima formă normală dacă nu conţin
grupuri repetitive.
6.2.4.2 A doua formă normală
Se bazează pe conceptul de dependenţă funcţională şi se aplică relaţiilor cu chei
compuse, adică relaţiilor cu o cheie primară compusă din două sau mai multe atribute. A doua
formă normală ilustrează o relaţie care se află în prima formă normală şi în care fiecare
atribut care nu este cheie primară este total dependent funcţional de cheia primară.
Orice dependenţă parţială întâlnită va fi eliminată din relaţia respectivă şi plasată într-o
nouă relaţie.
6.2.4.3 A treia formă normală
Are la bază conceptul de dependenţă tranzitivă., adică, dacă atributul A al unei relaţii
implică atributul B iar atributul B implică atributul C, atunci atributul C este dependent
tranzitiv de A prin intermediul lui B cu condiţia ca A să nu fir dependent funcţional de B sau
C. O relaţie se află în forma a treia normală dacă se află în prima şi a doua formă
normală şi în care nici un atribut care nu este cheie primară nu este dependent tranzitiv
de cheia primară.
Dacă există o dependenţă tranzitivă atributul va fi plasat într-o nouă relaţie împreună
cu o copie a determinanţilor.

50
Alături de aceste trei forme pe cere le considerăm esenţială în proiectarea bazelor de
date, există forma normală Boyce-Codd şi încă două forme normale care contribuie la crearea
bazelor de date puternice. Considerăm însă că prezentarea acestora nu este reprezentativă
pentru scopul cursului iar cititorii interesaţi pot parcurge bibliografia recomandată pentru
detalii suplimentare.

6.3 Aplicaţie
După cum observaţi, proiectarea unei baze de date eficiente nu este un proces nici
simplu şi nici lipsit de importanţă. O bază de date care respectă cel puţin primele trei forme
normale duce la siguranţă în exploatare, evitarea anomaliilor de reactualizare şi economie de
spaţiu. În continuare vom aborda un exemplu de proiectare a unei baze de date specific
domeniului psihologic.
Să presupunem că dorim să construim o bază de date care să stocheze rezultatele
subiecţilor examinaţi cu două probe psihologice: Raven şi 16PF. În acelaşi timp, în instituţia
în care activăm lucrează trei psihologi şi fiecare dintre aceştia poate efectua examinări
psihologice. Ne interesează să ştim şi care psiholog a examinat subiectul. Primul pas constă în
inventarierea necesarului de date. Astfel, avem:
• codul numeric al subiectului, numele şi prenumele, vârsta, sexul, adresa.
• codul psihologului, numele psihologului, adresa, telefonul
• codul testului administrat, data administrării, forma testului, nota brută şi nota
standard.
Mai întâi vom transforma în format de tabel câteva exemple de date extrase din
protocoalele de examinare. Acest tabel poartă denumirea de tabel nenormalizat.

CodS NumeS AniS SexS AdrS CodP NumeP AdrP TelP CodT DataT FormaT NBT NST
Păcurari, 54545 25.08.200
6598 Marin Raven A 56 8
Nr. 1 8 4
Independenţei, Păcurari, 58878 18.05.200
1254 Ionescu 25 M 9875 Vasile 16PF B 154 9
Nr. 8 Nr. 2 4 3
Păcurari, 54545 19.03.200
6598 Marin Raven B 65 8
Nr. 1 8 4
Păcurari, 58878 25.09.200
9875 Vasile Raven A 34 6
Toma Cozma, Nr. 2 4 3
5487 Vasilescu 30 F
Nr. 16 Păcurari, 54545 04.04.200
6598 Marin 16PF B 147 7
Nr. 1 8 4

Atributul cheie al acestui tabel nenormalizat este codul subiectului, cod care identifică
unic fiecare subiect în parte. Grupul repetitiv din acest tabel cuprinde date referitoare la
psihologii examinatori şi la testele administrate. În acest fel, grupul repetitiv este caracterizat
prin:
GR = (CodP, NumeP, AdrP, TelP, CodT, DataT, FormaT, NBT, NST)
La intersecţia anumitor coloane cu anumite rânduri apar deci valori multiple care
încalcă prima formă normală. În conformitate cu metodologia de lucru, eliminăm grupul
repetitiv prin introducerea detaliilor referitoare la subiecţi, rezultând tabelul următor:

51
CodS NumeS AniS SexS AdrS CodP NumeP AdrP TelP CodT DataT FormaT NBT NST
Independenţei, Păcurari, 54545 25.08.200
1254 Ionescu 25 M 6598 Marin Raven A 56 8
Nr. 8 Nr. 1 8 4
Independenţei, Păcurari, 58878 18.05.200
1254 Ionescu 25 M 9875 Vasile 16PF B 154 9
Nr. 8 Nr. 2 4 3
Independenţei, Păcurari, 54545 19.03.200
1254 Ionescu 25 M 6598 Marin Raven B 65 8
Nr. 8 Nr. 1 8 4
Toma Cozma, Păcurari, 58878 25.09.200
5487 Vasilescu 30 F 9875 Vasile Raven A 34 6
Nr. 16 Nr. 2 4 3
Toma Cozma, Păcurari, 54545 04.04.200
5487 Vasilescu 30 F 6598 Marin 16PF B 147 7
Nr. 16 Nr. 1 8 4

În acest tabel, cheia primară o putem identifica drept codul subiectului (CodS). Acum
tabelul nostru se află în prima formă normală deoarece la intersecţia dintre fiecare coloană şi
rând există câte o singură valoare. Relaţia conţine date care descriu subiecţii, psihologii şi
testele administrate, informaţiile fiind repetate de mai multe ori. Dacă această relaţie ar fi
implementată în această formă, ar fi expusă anomaliilor de actualizare. Este necesară deci
transformarea în cea de-a doua formă normală.
Această transformare presupune eliminarea dependenţelor parţiale de cheia primară.
Dar să vedem întâi care sunt aceste dependenţe şi care ar putea fi cheile. O cheie candidat este
CodS, atribut care identifică unic fiecare subiect. Însă fiecare subiect poate fi examinat de
către unul sau mai mulţi psihologi identificaţi printr-un cod propriu. Deci CodP ar fi o cheie
candidat care identifică psihologii. În acelaşi timp, subiecţii sunt examinaţi cu probe
psihologice identificate prin atributul CodT. Totuşi nu putem permite ca un subiect să fie
examinat de două ori în aceeaşi zi cu aceeaşi formă a probei. Noua cheie candidat devine
astfel o cheie compusă formată din atributele CodT, DataT şi FormaT. Avem deci 3 chei
candidat corespunzătoare celor trei domenii din baza de date: subiecţii, testele şi psihologii. În
continuare să analizăm dependenţele funcţionale:
Numele subiectului, vârsta, sexul şi adresa subiectului depind funcţional de codul
acestuia. Adresa totuşi constituie o dependenţă parţială. La o analiză mai atentă putem
constata că un subiect poate avea două sau mai multe adrese, situaţie în care am încălca a
doua formă normală (subiecţii cu vize de flotant spre exemplu).
Numele psihologului, adresa acestuia şi telefonul sunt atribute care depind funcţional
doar de codul psihologului. Vom considera aici AdresaP ca fiind adresa instituţiei pentru a nu
mai include încă o dependenţă parţială.
Un test este identificat unic nu prin codul său, cum s-ar putea crede ci prin cod şi
forma de administrare, deoarece un test cu acelaşi cod poate avea forme diferite de
administrare. Totuşi am spus ceva mai devreme că nu dorim să permitem examinarea de două
ori în decursul aceleaşi zile cu aceeaşi formă a probei. Cheia în acest caz este cheia compusă
din atributele CodT, DataT şi FormaT, cheie care asigură unicitatea fiecărei examinări. De
această cheie depind funcţional atributele NBT şi NST.
Am identificat până acum trei dependenţe funcţionale absolute şi o dependenţă
funcţională parţială. În conformitate cu regula celei de-a doua forme normale, trebuie create
patru relaţii care să reflecte aceste elemente. Desigur, aceste noi relaţii vor fi create incluzând
şi copiile după cheile candidat.

52
Prin urmare, relaţia Subiecţi devine:
În acest fel, tabelul stochează doar atributele strict dependente funcţional de cheia
CodS NumeS AniS SexS primară CodS. Ş-a eliminat astfel redundanţa datelor şi
1254 Ionescu 25 M
5487 Vasilescu 30 F posibilitatea de apariţie a anomaliilor de reactualizare.
Fiecare linie din tabel identifică în mod unic un subiect, împreună cu datele sale personale şi
nu sunt permise înregistrări duplicat. Acest tabel se află acum în cea de-a doua formă
normală. În realitate, prezentând această structură, tabelul se află în toate formele normale.
Dependenţa parţială a adreselor de codul subiecţilor se rezolvă prin crearea unei noi
relaţii denumită Subiecţi_Adrese şi care devine:
Am inclus astfel o nouă adresă pentru subiectul 1254 (Ionescu) pentru a ilustra situaţia
CodS AdrS
în care o persoană are două adrese. S-a evitat din nou
1254 Independenţei, Nr. 8
1254 Copou, Nr. 3 redundanţa, fiecare subiect putând avea un număr nelimitat de
5487 Toma Cozma, Nr. 16
adrese, fără a apărea duplicate iar fiecare adresă corespunde
unui anumit subiect. În acest caz, legătura dintre cele două relaţii poartă numele de relaţie
„unu la mulţi”. Prin implementarea integrităţii referenţiale, dacă ştergem de exemplu subiectul
1254, sistemul va şterge automat şi cele două adrese asociate. Nu există aşadar riscul de
incoerenţă a bazei de date prin posibilitatea de a rămâne o adresă care să nu fie asociată unui
subiect. Mecanismele interne ale SGBD elimină această variantă.
Relaţia care stochează datele psihologilor, în urma aplicării celei de-a doua forme
normale devine:
CodP NumeP AdrP TelP Lucrurile ar fi foarte simple dacă am păstra
6598 Marin Păcurari, Nr. 1 unicitatea relaţiei subiect-examinator. Totuşi în acest
545458
9875 Vasile Păcurari, Nr. 2 588784
exemplu noi am permis ca un subiect să poată fi
examinat de mai mulţi psihologi. Deşi tabelul psihologilor respectă acum cea de-a doua formă
normală, dacă am include atributul CodS pentru a lega psihologii de subiecţi, ar apare
înregistrări duplicat în tabelul psihologilor care determină încălcarea celei de-a doua forme
normale. La fel ar sta lucrurile dacă am introduce atributul CodP în tabelul subiecţilor. Intuim
deja despre ce fel de dependenţă vorbim. Într-adevăr, atributul CodP depinde atât de relaţia
subiecţilor cât şi de cea a testelor. La un moment dat, un subiect este examinat cu o probă
psihologică de către un psiholog. Este o dependenţă tranzitivă pe care o vom rezolva prin cea
de-a treia formă normală. În acest moment, relaţia Psihologi respectă toate formele normale.
Relaţia Teste, folosind cheia primară CodS, CodT, DataT şi FormaT devine:
Observăm că această cheie
CodS TelP CodT DataT FormaT NBT NST
1254
54545
Raven
25.08.200
A 56 8
asigură unicitatea fiecărei înregistrări.
8 4
58878 18.05.200
Un subiect nu poate fi examinat într-o zi
1254 16PF B 154 9
4 3 decât o singură dată cu aceeaşi formă a
54545 19.03.200
1254
8
Raven
4
B 65 8 unei probe psihologice. La fel ca în
5487
58878
Raven
25.09.200
A 34 6 cazul precedent, această relaţie
4 3
54545 04.04.200 identifică doar testele administrate unui
5487 16PF B 147 7
8 4 subiect, nu şi psihologul care le-a

53
administrat. Pentru a putea realiza acest lucru este necesar să abordăm cea de-a treia formă
normală.
Ne amintim că o relaţie se află în a treia formă normală dacă îndeplineşte condiţiile
din prima şi a doua formă normală. Toate relaţiile de mai sus îndeplinesc această condiţie,
însă a rămas o problemă nerezolvată. Cum asociem psihologii unui subiect. Orice am face
folosind primele două forme normale, cel puţin un tabel va încălca regula non-redundanţei şi
va determina apariţia de anomalii la reactualizare. A treia formă normală ne spune însă că
dacă există vreo dependenţă tranzitivă, aceasta va fi plasată într-o nouă relaţie. Prin urmare va
trebui să creăm o nouă relaţie care să rezolve dependenţa tranzitivă apărută. Un subiect poate
fi examinat psihologic de mai mulţi specialişti care pot administra mai multe probe
psihologice. Rămâne să identificăm cheia care caracterizează unic fiecare tuplu din această
nouă relaţie pe care o vom numi Subiecti_Psihologi_Teste. Subiectul este identificat prin
CodS iar psihologul prin CodP. Asigură o cheie compusă din aceste două atribute unicitatea
tuplului? Nu, deoarece ar explica doar faptul că un subiect este asociat unui psiholog, fără a
referi în nici un fel testele. Care este însă cheia ce caracterizează unic un test? Ne amintim că
era vorba despre cheia compusă din CodT şi FormaT. O cheie primară formată din atributele
CodS, CodP, CodT şi FormaT caracterizează un subiect căruia un psiholog îi administrează o
anumită formă a uni test. Este ceea ce ne interesează? De data aceasta răspunsul este pozitiv,
chiar dacă aţi putea sesiza faptul că nu am inclus data examinării. Noua relaţie trebuie să
stabilească o legătură între psiholog, subiect şi teste. Unicitatea examinărilor a fost deja
CodS CodP CodT FormaT
stabilită în relaţia anterioară. Prin urmare, noul nostru tabel
1254 6598 Raven A devine:
1254 9875 16PF B
1254 6598 Raven B Acesta se numeşte tabel de legătură şi rezolvă problema
5487 9875 Raven A asocierii dintre un psiholog, un test şi un subiect. Prin urmare,
5487 6598 16PF B
un subiect este examinat de un anumit psiholog cu o formă a
unui test psihologic. Dacă am fi introdus data examinării în acest tabel am fi asigurat
înregistrări unice. Nu ne interesează însă acest lucru deoarece tabelul nu face decât legătura
dintre cele trei domenii principale. Duplicatele sunt eliminate prin însăşi structura bazei de
date. Ne interesează să ştim de cine a fost aplicat testul şi nu când.
Prin acest procedeu am reuşit să realizăm o bază de date care respectă toate cele trei
forme normale şi să implementăm integritatea acesteia.

6.4 Întrebări recapitulative şi teme


1. Care sunt caracteristicile unei baze de date relaţionale?
2. Ce înţelegeţi printr-un SGBD?
3. Care sunt funcţiile principale ale unui SGBD?
4. Care sunt proprietăţile caracteristice ale unei relaţii?
5. Ce sunt cheile primare?
6. Explicaţi caracteristicile celei de-a treia forme normale?

54
TEMĂ: Imaginaţi o bază de date utilizabilă în domeniul dumneavoastră de activitate şi
normalizaţi-o folosind cele trei forme normale.

55
7 Sisteme de asistenţă psihologică
computerizată
Sistemele de asistenţă psihologică computerizată reprezintă instrumente concepute şi
realizate pentru a prelua sarcinile de rutină ale specialistului şi a-i furniza rapoarte şi
caracterizări brute pe care acesta le va analiza şi interpreta. Oricât de performant ar fi un test
psihologic computerizat, acesta nu poate înlocui psihologul. În schimb îi poate permite
acestuia debarasarea de sarcini de rutină, mari consumatoare de timp şi axarea pe ceea ce este
cu adevărat important şi anume analiza, interpretarea datelor, elaborarea soluţiilor, cercetarea
propriu-zisă.
Constructiv, testele psihologice computerizate se împart în teste psihologice
individuale şi sisteme de asistenţă psihologică integrată. O altă clasificare distinge între teste
psihologice bazate pe teoria clasică a scorării şi teste psihologice bazate pe modele de
răspuns la itemi. Indiferent de tipul lor, valoarea unui test psihologic este dată de valoarea
instrumentului computerizat, adică de funcţiile şi facilităţile pe care le oferă acesta şi de
valoarea psihologică a probei care conţine proprietăţile psihometrice ale testului în sine.
Nu vă lăsaţi induşi în eroare de ideea de test psihologic computerizat. Asistat computer
sau nu, un test fără valoare psihologică rămâne inutil indiferent cât de bine este transpus pe
computer.
Un test psihologic computerizat diferă destul de mult de varianta sa creion-hârtie,
astfel încât este necesară o nouă adaptare a sa. Intervin alţi factori care pot influenţa
rezultatele, factori precum gradul de familiarizare al utilizatorului cu tastatura şi computerul
în general, impactul interfeţei asupra deciziilor, imaginea subiectivă a utilizatorului în ceea ce
priveşte examinarea computerizată etc. Dacă în cazul testelor cu timp nelimitat influenţa
acestor factori nu este atât de importantă, pentru testele limitate în timp cunoaşterea tastaturii
duce la modificări serioase ale rezultatelor. De aceea se recomandă folosirea de dispozitive
speciale pe post de console de răspuns care să elimine pe cât posibil influenţa acestor factori.
Interfaţa cu utilizatorul joacă de asemenea un rol important şi poate influenţa rezultatele.
Tratarea acestui aspect face însă obiectul unui capitol separat care va fi discutat mai târziu.

7.1 Teste psihologice individuale


Sunt instrumente simple din punct de vedere constructiv care tratează un singur test
psihologic fără posibilitatea de comunicare sau relaţionare cu alte tipuri de teste psihologice.
Testele psihologice individuale sunt uşor de utilizat, majoritatea beneficiind de o bază de date
locală în care pot fi stocate datele subiecţilor împreună cu rezultatele la probă. Rutinele de
interpretare oferă posibilitatea afişării statice a rezultatelor la testele psihologice şi uneori a
unei interpretări invariabile.
Principalele funcţii pe care le pune la dispoziţie un test psihologic individual sunt:
• Introducerea datelor personale de bază ale subiectului, cum ar fi datele de
identificare, vârsta, genul biologic, eventual unele date legate de şcolarizare sau

56
date profesionale. Aceste informaţii pot fi salvate apoi într-o bază de date în
vederea stocării lor.
• Rularea testului psihologic asigură administrarea probei printr-o interfaţă
standard şi cu respectarea strictă a consemnului de administrare al testului. Acesta
reprezintă o modificare şi adaptare specifică a consemnului clasic pentru a veni în
întâmpinarea noilor cerinţe de computerizare.
• Posibilitatea de introducere manuală a datelor permite psihologilor
administrarea clasică a instrumentului şi utilizarea aplicaţiei computerizate doar
pentru prelucrarea şi interpretarea rezultatelor. Datele pot fi introduse în computer
fie manual, de către un operator, sub formă de note brute – variantă puţin
recomandată deoarece limitază posibilităţiile ulterioare de analiză – sau item cu
item respectând ordinea itemilor de pe foaia de răspuns, fie prin procedee de
scanare optică şi OCR, variantă modernă şi rapidă dar care necesită însă o
supervizare atentă din partea operatorului deoarece există posibilitatea
recunoaşterii eronate a unor caractere. Un asemenea sistem trebuie să permită
revenirea asupra itemilor sau a datelor personale în vederea corectării erorilor.
• Vizualizarea şi interpretarea rezultatelor este asigurată prin rutine interne
speciale şi reprezintă de fapt procesul de prelucrare a foii de răspuns, compararea
cu un etalon şi raportarea la interpretările din manual. Acesta este momentul critic
în interpretarea tradiţională a testelor, moment rutinant, sensibil la erori şi care nu
are nici o legătură cu munca psihologului. Sistemul trebuie să permită o raportare a
notelor brute, şi a notelor standard sub formă cifrică, o reprezentare grafică a unui
profil şi o descriere textuală a tendinţelor. În funcţie de caracteristicile probei
psihologice, pot să apară şi alte elemente particulare în cadrul acestei funcţii.
Important este ca un asemenea test să respecte specificaţiile interpretative ale
instrumentului original. În legătură cu etaloanele, probele computerizate necesită
etaloane proprii, diferite de cele ale testului tradiţional tocmai datorită influenţelor
care pot să apară în cadrul aplicării computerizate a testelor psihologice.
Oricare ar fi complexitatea unui test psihologic computerizat din această categorie,
caracteristica de bază o reprezintă lipsa comunicării şi interacţiunii cu alte probe psihologice
şi cu alţi specialişti. Simplu de utilizat şi programat, beneficiind de eficienţa corectării şi
interpretării computerizate, aceste tipuri de teste psihologice sunt cele mai populare.
Majoritatea testelor psihologice clasice au şi o formă computerizată pusă la dispoziţie de
producător. Psychological Corporation, cel mai mare producător de teste psihologice din
lume, are aproape pentru fiecare probă şi o versiune computerizată, cel puţin la nivelul
interpretării datelor.
O formă derivată a testelor psihologice individuale o reprezintă asocierea lor în baterii
de teste. Cu toate că acest model pare mai avantajos, totuşi rămâne un model închis.
Rezultatul nu este altceva decât o sumă de protocoale corespunzătoare fiecărui test, uneori
integrate, însă păstrându-şi caracteristicile statice şi invariabile.

57
Dezavantajele sunt însă mai mult decât evidente; psihologul rămâne izolat la nivelul
probei sale, fără posibilitatea de a schimba informaţie, fără posibilitatea de a interacţiona cu
alte probe psihologice, fără să poată dezvolta propriile sale studii asupra testelor psihologice
utilizate. Este, dacă doriţi, o perspectivă statică asupra examinării psihologice în care itemul
este invariabil unul şi acelaşi iar interpretarea urmează cu rigurozitate aceleaşi şabloane. Este
momentul firesc al trecerii de la această structură închisă la o perspectivă dinamică şi anume
la sistemele integrate de asistenţă psihologică computerizată.

7.2 Sisteme de asistenţă psihologică integrate


Cercetări recente (printre care se numără şi studiile efectuate la universitatea ieşeană)
au concluzionat că nu mai este suficientă limitarea examinării psihologice la probe
individuale. Omul nu este format din componente individualizate cu funcţii bine determinate
şi care se execută invariabil. Procesul de examinare psihologică devine aproape la fel de
solicitant utilizându-se teste individuale, deoarece lipseşte relaţionarea cu alte probe
psihologice, interpretarea integrată a datelor, analiza legăturilor ce există între probe
psihologice şi între acestea şi comportamentul manifest. Mai mult, costurile prohibitive ale
adaptării unui instrument psihologic au condus la investigarea de soluţii alternative pentru a
limita aceste cheltuieli. Astfel a apărut ideea de sistem de asistenţă psihologică integrată, idee
urmată rapid de modele teoretice şi constructive.
Un sistem de asistenţă psihologică integrată se caracterizează prin două elemente
definitorii: modularitate şi comunicare.
Modularitatea depăşeşte limita internă a unui test individual. Prin intermediul
acesteia probele psihologice se pot combina în structuri, patternuri interpretative, pot
comunica unele cu altele, pot face schimb de date şi de informaţii, pot contribui la descrieri
dinamice ale personalităţii, depăşindu-se astfel rigiditatea şi invariabilitatea interpretativă a
probelor individuale. Modularitatea este o caracteristică a testelor psihologice computerizate
care asigură o perspectivă dinamică.
Comunicarea este o caracteristică a psihologului. De data acesta psihologul nu mai
este izolat în cabinetul său, prizonierul unor teste psihologice mereu aceleaşi şi a unor
interpretări de rutină ci devine membru al unei comunităţi de specialitate în care dobândeşte
alternativ rolul de furnizor şi beneficiar de informaţii. O interpretare se face la un moment dat
nu numai după caracteristicile unui manual ci beneficiază de suportul şi cunoştinţele unei
întregi comunităţi de specialişti. Astfel, rezultatul aceluiaşi subiect poate dobândi interpretări
diferite la momente diferite de timp deoarece baza de cunoştinţe a comunităţii se
îmbunătăţeşte permanent. Acest lucru ar putea crea confuzii şi la prima vedere ar destabiliza
încrederea specialiştilor în protocoalele rezultate. Lucrurile nu stau însă chiar aşa, deoarece
sistemul este suficient de inteligent încât să reţină informaţiile care se dovedesc a fi utile şi
valoroase eliminându-le pe cele redundante sau care au o valoare îndoielnică. Prin urmare,
protocolul rezultate nu este altceva decât o rafinare interpretativă permanentă derivată din
cunoştinţele unei comunităţi internaţionale de experţi.

58
59
Comunicarea defineşte însă şi proba psihologică computerizată în sensul că modulele
test reuşesc să schimbe date între ele şi să transfere date către alte sisteme inteligente. Astfel
se asigură practic dinamismul interpretativ pe de o parte şi adaptarea permanentă a probelor

Printer

Itemsoft CAT Itemsoft CAT Itemsoft CAT Itemsoft CAT Itemsoft CAT
Client 1 Client 2 Client 3 Client 4 Client n

Local Itemsoft CAT


database Server
Internet Local Area Network
Firewall

Cluster Controller Authentification


Authentification Central database
Server

Authentification central infrastructure

Public database server Public items server Public database server Public items server

Public subjects database Public items database


Public knowledge database Public subjects database Public items database
Public knowledge database

Institution 1 public infrastructure Institution n public infrastructure

psihologice pe de altă parte. Beneficiind de baze de date publice care conţin codificat
rezultatele a milioane de subiecţi, psihologii pot realiza într-un timp extrem de scurt adaptări
şi etaloane specifice ale testelor utilizate fără costuri suplimentare. Participarea comunităţii
este definitorie, însă avantajele sunt mai mult decât evidente. Problema costurilor imense
legate de realizarea unui test psihologic poate fi astfel rezolvată şi redusă doar la costurile de
întreţinere a echipamentelor.
Un asemenea sistem de asistenţă psihologică integrată, din punct de vedere al
infrastructurii, se împarte în câteva blocuri funcţionale majore conform figurii de mai sus16.
Infrastructura locală conţine un calculator server şi opţional mai multe calculatoare
conectate într-o reţea locală (LAN) acest fapt permite administrarea centralizată a probelor
psihologice de la un singur post de lucru. Calculatorul central conţine o bază de date locală
care stochează rezultatele probelor psihologice împreună cu datele personale ale subiecţilor.
16
Model de arhitectură software preluat din documentaţia sistemului de asistenţă psihologică computerizată
Itemsoft CAT. Copyright Itemsoft Project

60
Infrastructura de autentificare conţine un server specializat, întreţinut de o altă
instituţie prin care toţi utilizatorii sistemului se autentifică şi dobândesc drepturi specifice de
acces la bazele de date sau la diferite niveluri de competenţe. Conexiunea este securizată şi se
realizează prin Internet.
Infrastructura de informaţii cuprinde baze de date, baze de itemi şi baze de
cunoştinţe, situate în locaţii diferite şi care permit colectarea şi analiza datelor şi informaţiilor
transmise de către utilizatori.
Structura sistemului este una modulară. Există un modul central care conţine toate
elementele de interacţiune cu utilizatorul precum şi interfeţele software de comunicare cu
modulele de teste psihologice. Principala funcţie a acestui modul central este aceea de a
asigura managementul subiecţilor şi al utilizatorilor, astfel:
• Managementul subiecţilor – permite adăugarea, editarea şi ştergerea subiecţilor,
precum şi previzualizarea şi imprimarea informaţiilor despre subiect, atât datele
personale cât şi rezultatele la testele psihologice.
• Managementul utilizatorilor – permite adăugarea, editarea şi ştergerea utilizatorilor,
configurarea rolurilor şi, asociat acestora, drepturile de acces. De asemenea va fi
inclusă posibilitatea schimbării utilizatorului curent precum şi accesul securizat atât la
baza de date locală cât şi la baza de date centrală.
• Managementul testelor – permite rularea independentă a unui test psihologic,
introducerea manuală a datelor (folosindu-se tastatura şi/sau proceduri de scanare şi
OCR), construcţia şi ştergerea bateriilor de teste psihologice, rularea unei baterii de
teste psihologice. Toate funcţiile vor fi implementate atât pentru administrarea locală
cât şi pentru administrarea într-o reţea locală de calculatoare. În acest caz, sistemul
central va avea un panou de configurare şi control, centralizat, în vederea administrării
în reţea.
• Analiza datelor – permite procesarea statistică a datelor, elaborarea etaloanelor,
interpretarea statistică a datelor, analiza instantanee a datelor unui subiect, filtrarea
bazei de date, atât la nivel local cât şi la nivel central.
• Utilitare ale bazelor de date – permite compactarea, repararea, copii de siguranţă şi
restaurarea bazei de date precum si transferul datelor la serverul central, în mod
automat şi/sau la cerere.
• Panoul de configurare – permite configurarea tuturor funcţiilor sistemului central,
incluzând comunicarea la nivelul reţelei locale şi prin Internet, sarcini ce vor fi
executate automat, interfaţă personalizată.
• Generatorul de rapoarte – generează diferite rapoarte bazate pe baza de date locală
sau centrală, rapoarte de examinare psihologică globală şi raportări individuale ale
rezultatelor sau avize psihologice. Rapoartele pot fi atât pre-formatate cât şi
personalizabile.
După cum se poate constata, sistemul central oferă structura de bază generală şi se
comportă ca un motor principal prin intermediul căruia pot fi executate toate funcţiile

61
programului. Utilitatea acestuia este însă limitată în absenţa elementelor caracteristice
activităţii psihologice şi care pot fi:
• Module test – cuprind teste psihologice propriu-zise. În general, orice probă
psihologică computerizabilă poate fi programată în vederea includerii în sistemul
central în condiţiile respectării standardului de interfeţe funcţionale şi a structurii bazei
de date proprii testului psihologic. Modulele test pot fi instalate şi rulate local
(împreună cu sistemul central) sau în reţeaua LAN prin intermediul unui modul
special client ori pot fi accesate prin Internet folosindu-se tot sistemul central, în
condiţiile dobândirii drepturilor necesare.
• Modulul de management al resurselor umane – reprezintă o extensie a sistemului
central care facilitează procedurile de gestionare, monitorizare, transfer şi informare a
fluxului de personal atât în interiorul instituţiilor cât şi în cadrul schimburilor sau al
noilor angajări ori al eliberărilor din funcţii.
• Modulul de construcţie a testelor psihologice – reprezintă o facilitate nou introdusă
în examinarea psihologică şi se referă la o schemă computerizată orientată pe
perceperea itemului unui test psihologic ca o funcţie dinamică, parametrizată. Se
bazează pe utilizarea bazelor de itemi cu utilizatori multipli şi conţine proceduri de
autocalibrare a itemului. Utilizatorul nu numai că va putea construi probe psihologice
noi bazate pe o anumită teorie sau pornind de la o probă existentă, dar va putea şi
propune itemi pentru probe psihologice, construiţi în baza unei teorii şi calibraţi iniţial.
Sistemul internaţionalizează examinările psihologice, adaptează automat itemii în
funcţie de comportamentul acestora în decursul examinărilor, nefiind practic necesară
o readaptare a testelor psihologice. Conţine, în principal, aplicaţii la nivel de servere,
prezentând însă şi interfeţe vizuale de comunicare cu utilizatorii prin care aceştia pot
propune noi itemi sau pot solicita construcţia de probe psihologice.
• Modulul de monitorizare a parametrilor fiziologici – cuprinde o parte hardware şi o
parte software destinate monitorizării impactului itemului asupra subiectului. În
esenţă, este vorba despre un dispozitiv special de eşantionare şi preluare a rezistenţei
electrice a pielii şi mapare a acesteia peste itemii unui test psihologic prezentaţi audio.
Sistemul poate monitoriza fiecare cuvânt al unei propoziţii sau fraze şi urmări reacţiile
electrice ale pielii. Interpretarea datelor se bazează pe proceduri statistice de
evidenţiere a reacţiilor neobişnuite asociate cu stimulii audio pe de o parte şi cu
răspunsurile subiecţilor pe de altă parte. Folosind apoi sistemul expert de analiză,
modulul face practic extrem de dificilă disimularea în cadrul examenului psihologic.
• Sistemul expert de interpretare – cuprinde baze de cunoştinţe şi baze de reguli publice
precum şi un motor de inferenţă integrat în sistemul central. Prin intermediul acestui
sistem, utilizatorii pot posta cunoştinţe în bazele de cunoştinţe publice, folosind o
interfaţă intuitivă, pentru care pot fi creditaţi şi de asemenea pot opta pentru
interpretarea unor rezultate psihologice folosind acest sistem, situaţie în care pot
beneficia de ultimele posibilităţi interpretative ale unui profil.

62
Întregul sistem computerizat este conceput din perspectiva schimbului universal de
informaţii. În acest sens, funcţie de nivelul şi drepturile utilizatorilor şi independent de
localizarea acestora în lume, folosind un browser sau aplicaţia centrală, pot fi obţinute
informaţii legate de o anumită persoană, evoluţia individuală a acesteia, evoluţia profesională
sau probele psihologice cu care a fost examinat ori profilul psihologic.
Într-un sistem de o asemenea complexitate în care informaţiile sunt partajate între
diferiţi utilizatori, cu competenţe diferite şi reprezentări diferite ale actului psihologic, nu în
mod absolut necesar psihologi de formaţie, elementul central în jurul căruia navighează totul
este securitatea şi confidenţialitatea. Din acest punct de vedere, utilizatorii dobândesc în
cadrul sistemului diferite roluri şi diferite nivele de competenţă. Mai mult decât atât, sistemul
asigură unicitatea relaţiei subiect-psiholog astfel încât la un moment dat un subiect nu poate
avea decât un singur psiholog care să aibă acces la toate informaţiile sale. Toate informaţiile
legate de un subiect respectă principiul confidenţialităţii fiind stocate şi transferate criptat
astfel încât doar psihologul examinator este capabil să le acceseze şi să le vizualizeze în clar.
Pe de altă parte, subiectul este liber să-şi aleagă psihologul pe care îl doreşte. Asta nu
înseamnă însă că schimbarea psihologului determină „ascunderea” unor informaţii personale
mai delicate. Folosind sistemul de comunicare între psihologi sau fişa psihologică electronică
individuală (sub forma unui card magnetic) subiectul poate fi instantaneu transferat altui
psiholog la solicitarea acestuia sau în caz de necesitate.

7.3 Particularităţi de interfaţă cu utilizatorul în testele


psihologice computerizate
Proiectarea interfeţelor de examinare psihologică computerizată a determinat
numeroase controverse în rândul specialiştilor. Facem diferenţa între interfaţa de utilizare,
adică setul de funcţii puse la dispoziţie de către program utilizatorului profesionist şi interfaţa
de examinare care reprezintă setul de elemente vizuale împreună cu dispozitivele hardware
accesibile subiectului examinat.
Dacă referitor la prima interfaţă discuţiile sunt sterile, iar formularele pot fi proiectate
respectând regulile clasice ale design-ului software, nu acelaşi lucru se poate spune despre
interfaţa de examinare.
Contrar opiniei multora, aceasta trebuie să fie cât mai simplă şi cât mai săracă în
elemente vizuale care să distragă subiectul de la sarcina principală. În proiectarea programelor
şi a interfeţelor acestora de examinare trebuie să se ţină seama de câteva reguli obligatorii:
1. Interfaţa vizuală de examinare va ocupa întregul ecran, fără a lăsa vizibile elemente ale
sistemului de operare sau ale altor aplicaţii deschise.
2. Formularul de examinare nu va prezenta elemente grafice sau cromatică inutilă,
limitându-se strict la cerinţele testului în sine. În general, se recomandă fondul alb şi textul
scris cu negru, eventual îngroşat pentru a ieşi în evidenţă. Elementele de text vor avea o
dimensiune adecvată pentru a permite citirea lor şi de către persoanele cu un oarecare
handicap vizual. Dacă proba permite, se poate folosi culoarea roşie pentru a marca
greşelile sau culoarea verde pentru a evidenţia răspunsul corect, dar numai în cadrul

63
formularului care prezintă consemnul de administrare. Elementele cromatice nu vor fi
folosite în timpul testării propriu-zise.
3. Nu se recomandă includerea pe formularele de consemn sau pe formularele de examinare
a elementelor de identificare a producătorului, a siglelor sau a altor elemente grafice,
animate sau nu, care prin natura lor ar putea distrage voluntar sau involuntar atenţia
subiectului.
4. Poziţionarea controalelor pe formular va fi făcută în aşa fel încât sarcina subiectului să
poată fi uşor remarcată. În general, la nivelul consemnului, instrucţiunile vor ocupa locul
central împreună cu butonul de navigare. Pentru testul propriu-zis, locul central va fi
ocupat de itemii probei.
5. Interacţiunea subiectului cu formularul trebuie să fie redusă la minim şi de preferinţă
folosind o consolă specială pentru răspuns. Dacă se foloseşte totuşi tastatura obişnuită,
tastele de răspuns trebuie marcate în mod evident şi se recomandă elaborarea unui
consemn care să includă şi familiarizarea subiectului cu acestea. Folosirea mouse-ului sau
a tastelor alfabetice nu este recomandată, preferându-se cele numerice.
6. Elementele vizuale de control disponibile subiectului trebuie reduse la minim. La nivelul
consemnului se recomandă existenţa unui buton principal, marcat în mod evident, care să
permită trecerea la instrucţiunea următoare şi a butoanelor de lansare a testului propriu-zis
sau de reluare a instructajului. În mod normal utilizatorul nu trebuie să aibă acces la
posibilitatea de a abandona testul sau la alte butoane (cum ar fi butonul Help) care l-ar
putea deruta. Formularul de testare trebuie să conţină în mod clar butoanele sau
elementele prin care subiectul răspunde la itemi şi dacă testul o permite, un buton de
revenire la itemul anterior în vederea corectării erorilor.
7. Este complet nerecomandată procedura de avansare automată la instrucţiunea următoare
după un interval de timp mai ales în cadrul formularului de consemn. Subiecţii au un ritm
propriu de lectură a consemnului care are tendinţa să scadă aproape la jumătate în cazul
citirii instrucţiunilor pe monitor. Există deci riscul ca subiectul să nu înţeleagă complet
sarcina. La nivelul formularului de examinare, saltul automat la itemul următor se poate
face doar dacă testul impune o limitare a timpului de răspuns la nivel de item. Şi aici, prin
studii proprii trebuie ajustat timpul de răspuns deoarece există diferenţe semnificative
între reacţia subiectului în cazul unui test clasic comparativ cu varianta computerizată.
8. În general intervenţia psihologului într-un proces de examinare computerizată nu este nici
necesară şi nici recomandată, acesta rezumându-se la monitorizarea şi controlul fluxului
examinărilor. În cazuri speciale, când subiectul demonstrează o neînţelegere certă a
sarcinii, psihologul poate interveni însă doar pentru clarificarea punctuală a problemei şi
în nici un caz pentru a sugera în vreun fel un posibil răspuns. Interacţiunea sa cu subiectul
trebuie să fie minimă pe durata examinării psihologice.
9. Subiectul nu trebuie să aibă la nivelul formularelor sale nici o modalitate de lansare a unui
test, de abandon a examenului psihologic sau de vizualizare a rezultatelor după finalizarea
probelor. Toate acestea vor fi exclusiv controlate de psiholog.

64
10. În cazul asocierii mai multor baterii de probe cu intervale de pauză între ele, sistemul
trebuie să fie capabil să afişeze în orice moment durata de pauză rămasă şi să avertizeze
sonor şi vizual subiectul în momentul în care pauzele urmează a se finaliza. Subiectul
trebuie să fie informat în permanenţă asupra intervalului de timp pe care îl mai are la
dispoziţie până la reluarea examinării. În acelaşi timp, sistemul trebuie să ajusteze pauzele
în funcţie de ritmul propriu de lucru al fiecărui subiect şi este contraindicată acordarea
unei pauze unice pentru toţi subiecţii.
11. La utilizarea dispozitivelor de monitorizare a parametrilor fiziologici trebuie să se ţină
seama de condiţii speciale cum ar fi lipsa câmpurilor magnetice perturbatoare, aşezarea
senzorilor pe suprafeţe relativ imobile, calibrarea semnalului etc.
Ignorarea acestor reguli poate duce la rezultate neconcludente ale examenului
psihologic efectuat printr-o probă computerizată, la dificultăţi în interpretarea datelor sau la
decizii eronate ale psihologului cu repercusiuni asupra subiectului examinat.

7.4 Întrebări recapitulative şi teme


1. Care sunt avantajele sistemelor de asistenţă psihologică integrată în comparaţie cu testele
individuale?
2. Care credeţi că este suportul tehnologic aflat în spatele adaptării automate a testelor
psihologice?
3. Este corectă afişarea instrucţiunilor unui test într-o casetă de text însoţită de o bară de
derulare verticală pe care subiectul o poate derula cu mouse-ul? Argumentaţi.
4. Ce rol credeţi că are infrastructura de autentificare din cadrul unui sistem de asistenţă
psihologică integrată?
5. De ce credeţi că este importantă criptarea şi transferul securizat al datelor şi asigurarea
unicităţii subiect-psiholog? Imaginaţi situaţii în care s-ar încălca această unicitate.

TEMĂ: Realizaţi un referat în care să imaginaţi un model experimental de asociere a


unui test psihologic cu un modul de monitorizare a parametrilor fiziologici. Argumentaţi cum
ar contribui acest lucru la îmbunătăţirea preciziei rezultatelor obţinute.

65
8 Elemente de arhitectură a sistemelor
software
Majoritatea persoanelor care scriu programe pentru calculator şi care nu sunt
specialiste în ingineria software de obicei stăpânesc satisfăcător un limbaj de programare şi
încep, aşa cum pare şi firesc, să scrie cod. Totul este foarte bine până în momentul în care
programul îşi măreşte dimensiunile, devine complex, greu de întreţinut şi de dezvoltat în
continuare. Acesta este momentul în care dezvoltatorul de aplicaţii realizează că doar a
cunoaşte un limbaj de programare nu înseamnă programare, aplicaţiile presupun şi altceva
decât scrierea de cod, fiecare program are un ciclu de viaţă iar proiectarea acestuia nu este un
moft ci rezolvă multe probleme care apar mai târziu. Pe plan mondial, 8 proiecte din 10
eşuează tocmai datorită lipsei unei perspective generale şi a unei planificări adecvate.
Scopul acestor secţiuni nu este acela de a vă forma ca programatori sau ca arhitecţi de
software. Poate însă veţi ajunge să vă scrieţi propriile programe aplicaţie şi este important să
ştiţi de unde trebuie să începeţi.

8.1 Ciclul de viaţă al unei aplicaţii


Orice aplicaţie software se dezvoltă urmând o procedură pas cu pas. Această înşiruire
sistematizată de metode care asigură în final produsul software se numeşte ciclu de viaţă şi
cuprinde patru mari domenii: analiza, proiectarea, implementarea şi testarea

8.1.1 Analiza cerinţelor şi modelarea sistemului


Condiţiile, sarcinile şi funcţiile pe care trebuie să le îndeplinească un sistem informatic
sunt cunoscute sub denumirea generică de cerinţe ale sistemului. Identificarea lor este
necesară atât pentru delimitarea obiectivelor ce trebuie atinse cât şi în vederea elaborării de
standarde pe baza cărora să se poată controla calitatea produsului.
Metoda de bază folosită în identificarea cerinţelor cuprinde discuţii cu beneficiarii,
analiza documentelor, elaborarea de chestionare şi instrumente care să permită detalierea
necesităţilor de proiectare.
Leffingwell identifică trei categorii de cerinţe: funcţionale, nefuncţionale şi de
proiectare.
Cerinţele funcţionale descriu modul în care funcţionează programul precizând
intrările şi ieşirile sale, modul în care se ajunge de la o intrare la o ieşire.
Cerinţele nefuncţionale se referă la proprietăţile pe care le va avea sistemul, legate de
performanţă, fiabilitate, grad de utilizare etc.
Cerinţele de proiectare nu afectează comportamentul sistemului însă cuprind detalii
legate de implementarea interfeţei cu utilizatorul, portabilitatea pe diferite platforme
hardware, cerinţe contractuale etc.
Identificarea cerinţelor este urmată de modelarea sistemului software prin intermediul
căreia se încearcă separarea diferitelor aspecte creând mai multe modele ale programului.

66
8.1.2 Proiectarea arhitecturii şi a detaliilor
Dacă analiza determină ceea ce trebuie implementat, proiectarea arată cum trebuie
implementat descompunând sistemul treptat până se ajunge la constructe ce pot fi scrise
folosind un limbaj de programare.
Clasic, proiectarea arhitecturii se face pornind de sus în jos, de la stabilirea arhitecturii
generale a sistemului, la identificarea unui set de componente din care este alcătuit sistemul şi
apoi la detalierea fiecărei componente.
Arhitectura unui sistem este deci o colecţie de componente organizate care îndeplinesc
anumite funcţii şi se află la diferite niveluri de abstractizare astfel încât sistemul să poată fi
privit ca un întreg. Componentele sunt în aşa fel alese încât să interacţioneze între ele doar
prin intermediul interfeţelor şi cu respectarea strictă a principiului încapsulării informaţiilor.
La momentul actual există trei tipuri de viziuni arhitecturale:
• Structurală, care se referă la componente şi la relaţiile dintre ele
• Comportamentală sau care vizează modul de interacţiune în vederea
îndeplinirii responsabilităţilor
• De execuţie care permite evaluarea opţiunilor de distribuţie fizică,
documentare şi comunicarea deciziilor.
În proiectarea arhitecturii unei aplicaţii se disting două abordări majore:
Proiectarea funcţională ce pleacă de la ideea că structura datelor este folosită doar
pentru a determina structura de prelucrare a acestora
Proiectarea orientată pe obiecte care foloseşte principii de reutilizare a codului,
încapsulând elemente de cod în clase unde datele sunt asociate funcţiilor care lucrează cu ele.

8.1.3 Implementarea
Din etapa anterioară rezultă o serie de modele detaliate pe care le folosesc membrii
echipei de dezvoltare pentru a începe scrierea codului necesar aplicaţiei. Iată deci că procesul
de dezvoltare concretă a unui program începe abia în cea de-a treia fază.
În această etapă este necesară scrierea de metode care să fie uşor de înţeles şi de către
alte persoane, de aceea blocurile de cod, clasele trebuie să fie mici şi să conţină informaţii
coerente. După Rumbaugh există două criterii importante pentru scrierea programelor,
indiferent de dimensiunea acestora:
Reutilizarea codului este esenţială pentru extinderea uşoară a programelor şi evitarea
redundanţelor. Astfel se descoperă elementele similare încă din etapa de proiectare şi se
folosesc facilităţile limbajului de programare pentru a utiliza implementări comune. De
exemplu, în loc să scriem aceeaşi rutină de calcul a vârstei unui subiect în mai multe
formulare, o putem scrie o singură dată, o înglobăm într-o funcţie şi o apelăm când este
necesar. Ca urmare, programele rezultate sunt mai mici iar depanarea este mai rapidă.
Robusteţea presupune că un program nu se termină anormal şi nu se blochează dacă
primeşte date improprii. Robusteţea unui program presupune atât comportamentul său faţă de

67
erorile de nivel scăzut (cauzate de defecţiuni hardware sau de defecţiuni ale sistemului de
operare) cât şi faţă de erorile utilizatorilor care pot introduce date incorecte.
Implementarea unui program se poate efectua fie într-un limbaj structurat care
acordă o importanţă mai mare funcţiilor ce nu sunt legate implicit de datele pe care le
prelucrează şi care se află într-un plan secundar fie într-un limbaj orientat pe obiecte unde
accentul cade pe date cărora le asociază funcţiile care lucrează cu ele, încapsulându-le în
tipuri de date definite de programator şi care poartă denumirea de clase.

8.1.4 Testarea
Testarea programelor este poate cea mai laborioasă operaţiune din ciclul de viaţă al
unei aplicaţii şi implică descoperirea cât mai devreme posibil a erorilor existente, fără a indica
însă cauza acestora. Procesul de testare debutează încă din faza de proiectare pentru ca erorile
să fie depistate din timp şi să se evite propagarea acestora.
Berard expune două strategii majore de testare a aplicaţiilor:
• Testarea structurală (de timpul cutiei albe) în care se testează codul sursă
fără a face legătura cu specificaţia sa în vederea identificării buclelor infinite,
căilor ce nu pot fi executate sau a codului „mort”, blocuri de cod care nu se
execută niciodată.
• Testarea comportamentală (de tipul cutiei negre) care verifică programul
prin intermediul interfeţei sale, descoperindu-se tipurile de date care cauzează
erori, acţiuni ilegale posibile ale utilizatorului care blochează programul etc.
O testare exhaustivă nu este niciodată posibilă având în vedere numărul mare al
combinaţiilor posibile. Testarea nu permite dezvoltatorilor să demonstreze că produsul
realizat este cu totul demn de încredere, singurul rezultat fiind acela că nivelul de încredere în
funcţionarea corectă a programului să fie cât mai mare.

8.1.5 Modele de dezvoltare


Modelele de dezvoltare reprezintă strategii diferite implicate în planificarea ciclului de
viaţă al unei aplicaţii. Există un număr destul de mare de astfel de modele, fiecare cu
avantajele şi dezavantajele sale.
Modelul cascadă pleacă de la teoria lui Winston Royce din anul 1970 care afirmă că
un software poate fi analizat complet înainte de a se începe proiectarea, proiectat complet
înainte de implementare şi aşa mai departe. Ca urmare, aceste observaţii au fost transformate
în reguli stricte care impun trecerea programului prin fazele ciclului de viaţă fără posibilitatea
vreunei reveniri.
Modelul prototipării rapide presupune construirea unui prototip care să fie încercat
de beneficiar în vederea unei opinii rapide a acestuia asupra cerinţelor pe care trebuie să le
îndeplinească aplicaţia. Un prototip aşadar un program creat pe baza unui model incomplet al
aplicaţiei dar care evidenţiază aspectele considerate cele mai importante. După prototipare,
dezvoltarea continuă de obicei după modelul cascadă.

68
Modelul dezvoltării incrementale împarte un proiect în părţi relativ mici şi cât mai
puţin legate între ele care apoi urmează a fi integrate în modelul global. Este o perspectivă
modulară asupra sistemelor, aplicaţiile rezultate fiind robuste şi multifuncţionale.
Modelul livrării programelor în evoluţie combinat dezvoltarea incrementală face
parte din strategia de dezvoltare a proiectelor pe care o adoptă multe firme prestigioase.
Livrarea programelor în evoluţie este privită ca un proces continuu de îmbunătăţire şi de
adaptare la nevoile beneficiarului. Sistemul dezvoltat iniţial este imediat livrat sub forma unei
versiuni după care dezvoltarea continuă. Astfel atât dezvoltatorii cât şi utilizatorii identifică
din mers modificările necesare şi caută soluţii pentru probleme. Acesta reprezintă unul dintre
cele mai puternice modele de dezvoltare.

8.2 Analiza şi proiectarea structurată


Analiza şi proiectarea structurată se bazează pe conceptele de programare structurată şi
programare modulară şi are la bază diagramele de flux de date. O specificaţie structurată
conţine în general trei componente:
• Specificaţii de control precum organigrame, arbori de decizie sau diagrame de
tranziţie a stărilor ce caracterizează activităţile desfăşurate la anumite momente
de timp
• Proiectarea funcţională reprezentată prin diagrame de flux de date care pot
descrie sisteme complexe ce conţin un număr mare de funcţii şi procese.

69
• Modelarea datelor prin diagrame de tip entitate-relaţie folosite pentru a
proiecta structura datelor, bazele de date şi formatul de fişiere.
START
(command) Cele mai importante Internet
Authentification
Server
Local database

elemente rămân însă diagramele de


Right and role
verification
Encryptor/decryptor
Module flux de date care nu sunt altceva
yes Database level
Valuator
Configuration
retrieval

decât grafuri având ca arce no

Is Intenet
fluxurile de date şi ca noduri
no
Is Administrator?
yes Linguistic analyser Connection
(Language)

procese.
Initialisation
Există un limbaj yes
no

Module Error Trapping


convenţional de reprezentare a
Module no

Deny Access
(return)
acestor elemente. De exemplu,
Data Gathering
Module

dreptunghiurile reprezintă
Username presence
validation Module

elemente externe active precum


Altervative
Password validation
authentification
Picture and signature Digital certificate Supervisor selector Module
Methodes
scanning Module import Module Module

oameni sau dispozitive, cercurile Certificate/signature


validation Module

Scanner
Driver
CA Driver reprezintă noduri ale fluxului de
Local database Role validation
Module

Workflow Engine Routines date etc. Uneori diagramele de flux Supervisor validation
Module
de date folosesc elemente
Form level valuator
caracteristice organigramelor şi a
proiectării procedurale pentru a reprezenta elemente punctuale de proces.
În exemplul de mai sus prezentăm o asemenea abordare extrasă din arhitectura
software a sistemului de asistenţă în psihologie Itemsoft CAT.
Alte elemente de proiectare folosite în proiectarea structurată sunt dicţionarele de
date, cataloage cu toate elementele de date din diagramele de flux, tabelele de decizie sau
schemele structurale Jackson.

8.3 Analiza şi proiectarea orientată pe obiecte


Se bazează pe identificarea obietelor ca entităţi concrete sau abstracte, caracterizate
prin structura datelor care le descriu şi prin comportamentele pe care le pot manifesta.Toate
obiectele cu aceeaşi structură şi cu acelaşi comportament sunt încadrate într-o clasă care
descrie o infinitate de obiecte individuale, iar orice obiect creat poartă denumirea de instanţă
a clasei respective. Într-o clasă, aspectele şi procedurite interne sunt ascunse, clasa punând la
dispoziţie doar un set de proprietăţi, comportamente sau evenimente. Acest principiu de
ascundere a informaţiilor în interiorul unei clase poartă denumirea de încapsulare. O altă
caracteristică a claselor este aceea că una şi
aceeaşi operaţie poate avea comportări
diferite în clase diferite, proprietate
denumită polimorfism. Metoda corectă este
selectată automat în funcţie de numele său şi
de clasa din care face parte obiectul. În
cazul în care mai multe clase au atribute şi
operaţii comune, acestea pot fi declarate o
singură dată grupându-le într-o superclasă

70
care poate fi mai apoi rafinată în diferite moduri. Această caracteristică poartă denumirea de
moştenire şi contribuie la reducerea redundanţei atât la nivelul proiectului arhitectural cât şi
la nivelul codului.
Începând cu anii 1990, au fost dezvoltate o multitudine de metodologii orientate pe
obiecte, însă doar un număr limitat s-au impus în aplicaţii practice. Se utilizează chiar
îmbinarea metodologiilor structurate cu cele orientate obiect rezultând metodologii hibride cu
diferite scheme de aplicare.
Una dintre cele mai răspândite metodologii de modelare orientate obiect este
metodologia Rumbauch care a fost dezvoltată la începutul anilor 90 şi a câştigat o mare
popularitate datorită clarităţii şi simplităţii sale, cea mai mare parte a sa fiind încorporată în
modelul UML. Această metodologie presupune că există trei aspecte ale sistemelor: static,
dinamic şi funcţional. Prin urmare rezulă 3 tipuri de modele ce trebuiesc abordate la analiza
sistemelor:
Modelarea obiectuală descrie structura statică a datelor fiind formată din diagrame de
clase şi diagrame de obiecte. Un exemplu de diagrame de clase extras din modelul UML al
sistemului Itemsoft CAT poate fi urmărit în figura de mai sus. Clasele se reprezintă prin
dreptunghiuri împărţite în 3 compartimente. Primul compartiment conţine numele clasei, al
doilea atributele şi al treilea operaţiile implementate. Între aceste clase pot fi stabilite diferite
tipuri de relaţii: relaţii de asociaţie sau cooperări între clase pentru care obiectele instanţiate
există în mod independent unul de celelalte; de agregare ce identifică o relaţie de tip parte-
întreg, reprezentând o interdependenţă puternică; de generalizare adică relaţia dintre clase
care prezintă similitudini între ele şi o superclasă în care sunt grupate elementele comune ale
acesteia.
Modelarea dinamică necesită trei etape: scrierea scenariilor pentru secvenţele
particulare de evenimente, precizarea diagramei succesiunii de evenimente în care sunt
identificare obiectele care participă la interacţiune şi reprezentarea diagramei de stare pentru
fiecare clasă cu comportament dinamic.
Modelarea funcţională este compusă din diagrame de flux ale datelor prin care se
reprezintă modul în care intrările în sistem sunt transformate pentru a obţine ieşirile acestuia.
Desigur aceasta este o perspectivă simplificată a metodologiei de modelare orientată
obiect. Complexitatea şi diversitatea unor proiecte software de amploare presupun modele
extrem de elaborate, realizate de specialişti cu experienţă şi care controlează procesul de
dezvoltare software, numiţi arhitecţi de software (Software Architect). Programatorii nu
primesc altceva decât modelele UML ale unor părţi din aplicaţie împreună cu specificaţiile de
programare necesare dezvoltării rutinelor specifice. În final, rutinele programatorilor sunt
asamblate în produsul finit care urmează apoi fazele de testare Alfa, Beta în final ajungându-
se la versiunea oficială, numită şi Software Release.
Etapele descrise în decursul acestui capitol sunt aplicabile proiectelor de anvergură. Ar
fi lipsit de sens şi chiar hilar să solicităm unui program care calculează o ecuaţie de ordin doi
să urmeze toţi paşii prezentaţi aici. Probabil că arhitectura ar depăşi cu mult timpul necesar
programării efective. Este bine de ştiut totuşi că o aplicaţie computerizată serioasă nu se poate

71
face „după ureche” şi după sfaturile prietenilor, deoarece oricât de bine ar arăta aceasta şi
oricât de frumoase ar fi interfeţele cu utilizatorul, ceea ce asigură valoarea unui produs
software este funcţionalitatea sa internă. Fără o muncă serioasă de concepţie şi proiectare,
funcţionalitatea sa internă rămâne şubredă, determinând programul să se comporte
surprinzător în timpul rulării şi să genereze erori neaşteptate. Probabil că nu aţi vrea ca noul
sistem achiziţionat de firma la care lucraţi în urma insistenţelor dumneavoastră să se blocheze
tocmai în momentul în care conducerea doreşte să fie examinată.

8.4 Întrebări recapitulative şi teme


1. Care sunt principalele etape ale ciclului de viaţă a unei aplicaţii
computerizate?
2. Care sunt strategiile majore de testare a aplicaţiilor?
3. Descrieţi modelul livrării programelor în evoluţie. Găsiţi exemple
personale.
4. Descrieţi componentele principale ale analizei structurate.
5. Prin ce se caracterizează analiza şi proiectarea orientată pe obiecte?

72
9 Structuri şi elemente de programare
Programarea computerelor reprezintă un proces din cadrul ingineriei software17 prin
care, în baza unei documentaţii riguros elaborate, se scrie, într-un limbaj specific numit limbaj
de programare, funcţionalitatea unui program. Programarea presupune pe de o parte
stăpânirea unui anumit limbaj de programare iar pe de altă parte înţelegerea unui ansamblu de
tehnici de programare deoarece majoritatea sarcinilor implementate într-un program se reduc
la algoritmi şi tehnici de programare foarte bine cunoscute şi studiate. În cadrul acestui capitol
vom aborda detalii ale programării făcând referinţă directă la structura limbajului de
programare Visual Basic. Ne-am decis să abordăm acest limbaj de programare deoarece spre
deosebire de alte medii de dezvoltare a aplicaţiilor, Visual Basic este foarte uşor de învăţat
chiar şi de către nespecilişti, cărora le oferă posibilitatea realizării unor aplicaţii profesionale.
În plus, intenţia noastră este aceea de a dezvolta această latură a programării în ştiinţele
sociale prin lucrări viitoare mult mai detaliate în care să abordăm aplicaţii specifice dezvoltate
prin intermediul acestui limbaj. Totuşi, structurile şi elementele informaţionale de bază vor fi
tratate folosind standardul ANSII C, standard de referinţă în programare.

9.1 Structura generală a unei aplicaţii


Un mediu vizual de programare cum este Visual Basic vă permite să scrieţi aplicaţii la
fel de uşor cum desenaţi sau cum scrieţi un text. Asemena medii, numite şi IDE-uri
(Integrated Development Environment) posedă un set de instrumente foarte puternice cum ar
fi butoane, casete de text, liste derulante, casete de bifare, casete de opţiuni şi aşa mai departe
care pot fi poziţionate pe formular printr-o simplă tragere cu mouse-ul. Un asemenea obiect
dispus pe un formular nu face însă nimic. Acestui obiect trebuie să i se asocieze un bloc de
cod care să descrie comportamentul obiectului respectiv. Ulterior, blocul de cod urmează a fi
testat în vederea sesizării şi tratării erorilor care ar putea să apară. În concluzie, putem
identifica trei etape în procesul de elaborare al programelor:
1. Crearea elementelor vizuale;
2. Scrierea codului care să descrie comportamenul elementelor vizuale:
3. Testarea şi depanarea codului
În Visual Basic, codul este stocat în module de cod. Acest limbaj de programare
permite existenţa a 3 categorii de module de cod: formular, standard şi clasă.
Modulele formular reprezintă baza aplicaţiilor şi conţin proceduri care tratează
evenimentele, proceduri generale, declaraţii de variabile şi constante, tipuri şi proceduri
externe. Practic orice fereastră vizibilă împreună cu toate elementele vizuale pe care le
conţine este cuprinsă într-un modul de tip formular.
Modulele standard se prezintă ca nişte containere pentru proceduri şi declaraţii
apelate în comun de alte module. Pot conţine declaraţii globale, apelabile din orice parte a
aplicaţiei sau la nivel de modul, pentru variabile, constante, tipuri, proceduri externe etc.
17
Inginerie software – disciplină a ingineriei care abordează complexitatea şi autonomia software-ului,
abstracţiile introduse în noile tehnologii, managementul oamenilor, al calităţii şi al evoluţiei programelor, crearea
arhitecturii, analiza şi proiectarea orientată pe obiecte, procesul de dezvoltare etc.

73
Caracteristica acestor module este aceea că blocurile de cod scrise aici pot fi reutilizate de
orice parte a aplicaţiei dumneavoastră. Spre exemplu, putem scrie rutina care calculează
vârsta unui subiect într-un modul standard dacă aceasta va fi folosită în comun de mai multe
formulare.
Modulele clasă reprezintă fundamentul programării orientate pe obiecte. Aici puteţi
scrie cod pentru crearea obiectelor noi în care veţi include propriile proprietăţi şi metode.

9.2 Variabile, constante şi tipuri de date


Pentru a memora temporar anumite valori atunci când programul execută calcule, sunt
folosite variabilele. O variabilă este o locaţie cunoscută de memorie utilizată pentru a stoca o
valoare care poate fi modificată de către program. Variabilele trebuie să aibă un nume şi
trebuie declarate înainte de a fi utilizate18. Declararea variabilelor se face prin stabilirea unui
nume şi a unui tip de date ce poate fi stocat în acea variabilă. Numele unei variabile poate fi
orice combinaţie de litere şi/sau cifre care respectă următoarele reguli: începe cu o literă, nu
conţine caractere speciale, nu depăşeşte 255 de caractere, este unic în cadrul aceluiaşi
domeniu. Spre exemplu, putem defini o variabilă care stochează vârsta unui subiect folosind
sintaxa Dim intVarsta as Integer. Prin această declaraţie am definit o variabilă care
va stoca numere întregi reprezentând vârsta subiecţilor. Majoritatea programatorilor definesc
variabilele folosind notaţia ungară. Aceasta stipulează că o variabilă începe cu caractere mici
şi cuprinde la început identificatorul tipului de date după care numele variabilei respective.
Deşi numărul maxim de caractere este de 255, sunt extrem de rare situaţiile în care
avem nevoie de atâtea caractere. Nu ar avea nici un sens să definim o variabilă de
incrementare cu numele intAceastaEsteOVariabilaDeIncrementare când am
putea spune intIncrement sau mai simplu intI. Totuşi, utilzarea unei singure litere
pentru definirea variabilei poate crea confuzii. Spre exemplu dacă întâlniţi în cod o variabilă
numită strS, ce vă spune? Mai nimic. Este mult mai util să o denumiţi strSex. Acum veţi
şti că este vorba despre un şir de caractere ce stochează sexul subiecţilor.
Domeniul unei variabile sau durata de viaţă a unei variabile defineşte porţiunea de cod
care ştie de existenţa sa. O variabilă poate avea domeniul fixat la nivelul procedurii sau la
nivelul modului. În primul caz aceasta va fi recunoscută doar în cadrul procedurii care o
apelează (variabilă locală) iar în cel de-al doilea caz, poate fi apelată în întregul modul.
Spre exemplu, în procedura următoare variabila intI este declarată local:
Private sub cmdButon_Click()
Dim intI as Integer
End Sub
În această situaţie, variabila poate fi recunoscută doar în blocul de cod cuprins între
Private Sub şi End Sub. Cu totul altfel se comportă structura următoare:
Public intX as Integer
18
Deşi unele limbaje de programare printre care şi Visual Basic acceptă declararea automată a variabilelor în
momentul creării şi utilizării lor, se recomandă totuşi declararea explicită a acestora pentru a se evita problemele
ce pot să apară.

74
Private sub cmdButon_Click()
Dim intI as Integer
End Sub
În acest caz observăm că variabila intX nu mai este declarată în interiorul procedurii
şi mai mult, are atributul Public ce o face disponibilă întregului modul.
În unele cazuri avem nevoie de variabile globale, accesibile întregii aplicaţii (tuturor
modulelor din cadrul programului nostru). Definirea unor asemenea variabile se poate face în
cadrul modulelor generale, folosind atributul Global.
Uneori constatăm că avem nevoie de prezenţa unor valori constante care se repetă
frecvent. Şi ca lucrurile să fie mai dificile, în majoritatea cazurilor aceste valori constante sunt
numere greu de reţinut. Este preferabil să asociem aceste valori unor nume mai uşor de reţinut
şi care pot spori lizibilitarea codului. O astfel de asociere se poate face prin intermediul
constantelor. Definirea constantelor se supune aceloraşi reguli ca şi definirea variabilelor. Se
preferă însă denumirea constantelor cu majuscule pentru a le diferenţia de variabile. Spre
exemplu, dacă dorim să folosim un program distribuit în mai multe limbi, constanta pentru
limba română poate fi 8438. În loc să folosim acest număr, putem să-l asociem unei constante
astfel:
Const LANG_ROM=8438
Din acest moment nu mai este nevoie să specificăm în cod numărul ci constanta
asociată. Astfel blocurile de cod devin mult mai clare.
Am discutat ceva mai devreme despre tipuri de date. În mod general, tipurile de date
derivă din cele 5 tipuri principale de date definite de standardul ANSII C şi anume: char –
care stochează caractere, int – care stochează numere întregi, float şi double – care stochează
numere în virgulă mobilă sau numere zecimale şi void – care declară o funcţie ce nu
returnează nici o valoare sau creează referinţe la memorie numite pointeri.
În Visual Basic tipurile de date diferă ca denumire, deşi toate derivă din cele 5 tipuri
principale. Astfel, folosind acest limbaj de programare, putem defini:
• Tipul de date Byte – care lucrează cu numere întregi cuprinse între 0 şi 255
• Tipul de date Integer sau Double – ce lucrează cu numere întregi sau cu numere
în virgulă mobilă
• Tipul de date String – care conţine şiruri de caractere
• Tipul de date Boolean – care conţine doar valorile de adevăr true/false
• Tipul de date Date – care conţine date calendaristice
• Tipul de date Object – care conţine obiecte diferite şi se foloseşte în general în
programarea orientată obiect
• Tipul de date Variant – care poate memora orice valoare definită de sistem şi
realizează conversia automată între diferitele tipuri de date.

75
9.3 Structuri de control
Permit controlul desfăşurării programului şi a fluxului de execuţie. Acestea se împart
în structuri de decizie şi structuri repetitive sau structuri de tip buclă.

9.3.1 Structuri decizionale


Prin intermediul acestora pot fi testate condiţii şi în funcţie de rezultatul acestor teste
se pot efectua diferite operaţii. Majoritatea limbajelor de programare implementează două
categorii de structuri decizionale: structurile de tip if... then ... else şi structurile de tip case.
O structură If....Then...Else (dacă ... atunci) se foloseşte la execuţia condiţionată a
uneia sau mai multor instrucţiuni. De exemplu, structura de mai jos:
If intVarsta > 100 Then
MsgBox “Subiectul nu poate fi examinat. Este prea bătrân”
ElseIf intVarsta < 0 Then
MsgBox “Subiectul încă nu s-a născut. Doriţi să-l examinaţi?!!”
Else
MsgBox “Vârsta permite examinarea psihologică”
End If
Aceasta conţine mai multe instrucţiuni If...Then....Else care testează vârsta unui
subiect. Dacă vârsta acstuia este mai mare de 100 de ani ori mai mică de 0 ani, programul
afişează un mesaj către utilizator prin care îl informează asupra faptului că subiectul nu poate
fi examinat psihologic. În toate celelalte cazuri (adică vârsta cuprinsă între 0 şi 100 de ani)
programul informază utilizatorul că examinarea psihologică poate fi efectuată.
În structurile de tip if...then...else pot fi încorporate alte structuri decizionale, la
diferite niveluri, vorbind astfel despre structuri decizionale îmbricate.
Ca o alternativă la structura de tip If...Then...Else uneori este mai comod să folosim
structura de tip Case. Aceasta permite execuţia selectivă a unui singur bloc de instrucţiuni
ales dintre mai multe blocuri. Expresia este evaluată o singură dată şi se execută blocul
corespunzător. Avem de exemplu structura:
Select Case strRol
Case Is = „Psiholog”
MsgBox “Subiectul este psiholog”
Case Is = “Psihopedagog”
MsgBox “Subiectul este psihopedagog”
Case Is = „Pedagog”
MsgBox “Subiectul este pedagog”
Case Else
MsgBox “Nu poate fi determinată profesia subietului”
End Select
Observăm că programul evaluează o singură dată variabila strRol care stochează
profesia unui subiect. În funcţie de conţinutul acestei variabile, programul afişează un anumit

76
mesaj. Dacă variabila conţine orice altceva în afară de cuvintele psiholog, psihopedagog sau
pedagog, programul informează utilizatorul că profesia subiectului nu a putut fi determinată.

9.3.2 Structuri repetitive


Structurile repetitive permit execuţia repetată a uneia sau mai multor linii de cod. Cele
mai multe limbaje de programare implementează trei tipuri de structuri repetitive: structura
Do....Loop, structura For.....Next şi structura For Each.....Next
Buclele Do....Loop se folosesc pentru a executa un bloc de instrucţiuni de un număr
necunoscut de ori. Deşi există mai multe variante, toate evaluează o condiţie numerică pentru
a şti dacă va continua execuţia buclei sau nu. Două dintre variantele acestei bucle sunt mai
cunoscute şi mai folosite: bucla cu test iniţial şi bucla cu test final.
În cazul buclei cu test iniţial, programul va testa întâi condiţia. Dacă este adevărată el
va executa bucla atâta timp cât condiţia se păstrează adevărată. În situaţia în care condiţia
iniţială este falsă, bucla nu va fi executată niciodată.
Do While recSubiecti.EOF
txtNume.Text = recSubiecti![Numele]
txtPrenume.Text = recSubiecti![Prenumele]
recSubiecti.MoveNext
Loop
În cazul structurii de mai sus, se evaluează dacă tabelul din baza de date care
stochează datele subiecţilor nu este la ultima înregistrare. Dacă această condiţie este
îndeplinită, programul execută bucla până când se ajunge la sfârşitul tabelului. Astfel, bucla
asigură popularea a două casete de text cu numele şi prenumele subiectului, după care trece la
următorul subiect. În momentul în care tabelul ajunge la ultima înregistrare, bucla este
părăsită. Desigur, dacă tabelul este gol, bucla nu se realizează niciodată. Deşi acest fragment
de cod este funcţional, rularea lui vă va permite să vedeţi doar datele ultimului subiect. De ce?
Răspunsul la această întrebare vă invităm să-l găsiţi singur şi se constutuie într-o modalitate
de evaluare.
Bucla cu test final asigură cel puţin o parcurgere a sa înainte de a putea fi abandonată.
Iată aceeaşi structură scrisă pentru o buclă cu test final.
Do
txtNume.Text = recSubiecti![Numele]
txtPrenume.Text = recSubiecti![Prenumele]
recSubiecti.MoveNext
Loop While recSubiecti.EOF
Se observă că cel puţin o dată se va încerca popularea celor două casete de text cu
datele subiecţilor. O asemenea abordare poate genera la un moment dat o eroare. Ca temă de
evaluare vă invităm să identificaţi situaţia în care programul va returna o eroare la execuţia
acestui bloc de cod.

77
Buclele For...Next se utilizează în momentul în care se ştie precis de câte ori trebuie
executate instrucţiunile cuprinse între declaraţia For şi Next. Spre deosebire de buclele
Do...Loop, aceste structuri repetitive utilizează o variabilă numită contor a cărei valoare creşte
sau descreşte la fiecare trecere prin ciclu. Să considerăm următoarea structură repetitivă:
For intI = 1 To recTeste.RecordCount
lstTeste.AddItem recTeste![Nume]
txtNumarTeste.Text = intI
recTeste.MoveNext
Next intI
Să analizăm cum lucrează această structură. În primul rând, variabila contor intI este
iniţializată cu valoarea 1 după care, dacă tabelul testelor conţine vreo înregistrare, bucla
începe să fie executată până când se ajunge la ultima înregistrare din tabel. Dacă tabelul nu
conţine nici o înregistrare, bucla nu este executată deoarece proprietatea RecordCount a
obiectului de tip tabel returnează 0 şi prin urmare determină încheierea execuţiei buclei
înainte ca aceasta să înceapă. Bucla nu face altceva decât să populeze un control de tip listă cu
testele disponibile într-un tabel şi să afişeze valoarea contorului într-o casetă de tip text, după
care trece la următoarea înregistrare. Puteţi observa că în final structura incrementează
automat contorul.
Buclele For Each ... Next se aseamănă foarte mult cu buclele For... Next însă acestea
repetă o serie de instrucţiuni pentru fiecare element dintr-o colecţie de obiecte sau din cadrul
unei matrici în loc să repete instrucţiunile de un anumit număr de ori. Acest lucru este util mai
ales în situaţia în care nu ştim exact câte elemente conţine o colecţie de obiecte. Dacă luăm
spre exemplu structura:
Dim tdfTabele As TableDef
Dim objDb As Database
Set objDb = OpenDatabase(“C:\Psihologie.mdb”)
For Each tdfTabele In objDb.TableDefs()
lstTabele.AddItem tdfTabele.Name
Next tdfTabele
Iată un exemplu ceva mai complex care include alături de structura repetitivă şi
definiri de variabile precum şi creare de obiecte. Observăm că pentru început am definit două
variabile: una de tip tabel şi alta de tip bază de date. Acestea sunt tipuri de date obiect
caracteristice lucrului cu motoarele de baze de date. În continuare programul a deschis baza
de date „Psihologie.mdb” prin atribuirea obiectului de tip bază de date objDb unui fişier de
pe disc folosind metoda OpenDatabase. Noi nu ştim încă ce tabele conţine baza de date
menţionată. Pentru aceasta vor stabili o structură repetitivă care să populeze o listă cu numele
tabelelor din baza de date. Asfel, pentru fiecare tabel din colecţia de tabele a bazei de date,
programul adaugă în listă numele acelui tabel după care automat trece la următorul tabel.
Simplu şi eficient.

78
Am putea umple volume întregi cu elementele de programare, funcţiile şi facilităţile
pe care le pune la dispoziţie acest mediu de dezvoltare. Scopul nostru este însă acela de a
familiariza cursantul cu elementele de bază ale elaborării programelor şi nu de forma
programatori. Cei interesaţi de acest domeniu pot consulta pentru aprofundare bibliografia
recomandată sau bogata literatură de specialitate existentă pe piaţă.

9.4 Întrebări recapitulative şi teme


1. Care sunt etapele elaborării unei aplicaţii computerizate?
2. Ce categorii de module conţine mediul de dezvoltare Visual Basic şi care sunt
particularităţile acestora.
3. Ce înţelegeţi prin termenul de variabilă şi care sunt tipurile de variabile pe care le
cunoaşteţi?
4. Identificaţi şi descrieţi elementele implicate în declararea unei variabile.
5. Descrieţi structura de tip Case şi exemplificaţi printr-un bloc de cod personal.
6. Prezentaţi bucla de tip Do...Loop şi găsiţi exemple de blocuri de cod funcţionale.

TEMĂ: Se dă blocul de cod:


If strNumeSubiect = “” Then
MsgBox “Numele subiectului nu exista”
Else
Do
lstNB.AddItem recRezultate![NB]
lstNS.AddItem recRezultate![NS]
Loop While recRezultate.EOF

Ignorând definirea variabilelor şi crearea obiectelor, precizaţi dacă acest bloc de cod
va funcţiona sau nu. În cazul în care blocul de cod nu va funcţiona, identificaţi şi
corectaţi erorile.

79
10 Inteligenţa artificială şi sisteme
expert
Conceptul de inteligenţă artificială a determinat şi continuă să alimenteze diverse
speculaţii pe această temă. Ne-am decis să abordăm câteva noţiuni de bază referitoare la acest
domeniu din dorinţa de a oferi cursaţilor repere pentru înţelegerea exactă a semnificaţiei
termenului de inteligenţă artificială, mai ales că sunt foarte bine cunoscute implicaţiile
psihologiei şi ale logicii în acest ansablu.
Inteligenţa artificială este o ştiinţă care s-a constituit încă de la apariţia primelor
computere şi defineşte ansamblul conceptelor şi metodelor folosite pentru a determina
computerele să aibă un comportament inteligent, asemănător cu cel al oamenilor.
Programarea în inteligenţa artificială nu cere să ştim a priori să rezolvăm o problemă
deoarece programul preia sarcina de a alege mijloacele potrivite pentru realizarea obiectivului
propus în funcţie de ipotezele date. Procedura de lucru este deci o procedură euristică iar
programul va trebui să aibă capacităţi de raţionament sub formă logică. Maniera de a
programa în inteligenţa artificială diferă semnificativ de programarea clasică. Programul
primeşte ca intrare o serie de fapte relative la o situaţie, beneficiază de cunoştinţe relative la
un domeniu iar prin intermediul motorului de inferenţă determină la ieşire un program de
rezolvare a situaţiei prezentată la intrare.
Problema cea mai delicată rămâne însă cea a reprezentării cunoştinţelor datorită
interpretării greşite a cunoştinţelor şi a informaţiilor. Spre exemplu, o carte conţine informaţii
însă nu putem spune că o carte cunoaşte acele informaţii deoarece cunoaşterea este o operaţie
activă care presupune atât mecanisme de memorare dar şi un raţionament aplicabil
cunoştinţelor memorate. Abordarea prin cunoştinţe a inteligenţei artificiale a determinat
dezvoltarea unui alt domeniu asociat, cunoscut sub numele de sisteme expert. Acestea se
comportă ca nişte experţi umani în domeniu, putând să pună un diagnostic, să rezolve
probleme dar în acelaşi timp să ofere şi o justificare a modului în care procedează. Într-un
sistem expert, cunoştinţele sunt stocate într-o bază de cunoştinţe în formă brută, în care nu se
fac ipoteze asupra modului de utilizare al acestora. Prin urmare, acestea se exprimă în baza de
cunoştinţe sub o formă declarativă şi sunt exploatate de către sistemul expert prin intermediul
unui interpret numit şi motor de inferenţă. Acesta, în funcţie de obiective şi de ipotezele de
intrare, caută în baza de cunoştinţe informaţiile necesare pe care le asamblează mai apoi într-
un mod logic folosind anumite reguli logice de infrenţă şi în final elaborează un raţionament
original pentru problema pusă.
Un alt element mult prea des confundat este distincţia între formă şi sens care se
operează în informatică. Dacă ne referim la ansambul elementelor supuse procesării (texte,
forme, sunete etc.), informatica le procesează plecând de la forma lor fără nici o referire la
semnificaţia pe care acestea o pot avea. Putem găsi numeroase exemple care să susţină
această afirmaţie, începând de la faptul că un computer procesează numere care nu au nici o
semnificaţie şi finalizând cu logica formală care reprezintă suportul informaticii teoretice.

80
Maşina nu este deci un „creier electronic” – exagerare care a intrat deja în uzul curent – ci
manipulează caractere, cifre, simboluri spre deosebire de om care reflectează asupra unor idei.
La întrebarea dacă totuşi se poate construi o maşină inteligentă, primul răspuns a fost
dat de către Turing, care în 1950 a propus un joc care este cunoscut în prezent sub numele de
testul Turing. La joc participă trei persoane care nu se cunosc între ele, situate în camere
separate: un bărbat, o femeie şi un observator. Observatorul poate comunica cu fiecare
folosind o tastatură şi un ecran iar jocul constă în a ghici dacă interlocutorul observatorului
este bărbat sau femeie. Pentru aceasta, el poate pune orice întrebare, numai că bărbatul
încearcă să-l ajute iar femeia să-l încurce. Observatorul răspunde aşa cum crede că ar
răspunde bărbatul. Ulterior, se înlocuieşte femeia printr-o maşină, ceilalţi doi participanţi
rămânând fiinţe umane. Dacă observatorul nu poate diferenţia bărbatul de femeie, maşina este
considerată inteligentă iar testul Turing pozitiv. Ideea este că până în prezent nici o maşină nu
a trecut testul Turing.

10.1 Domenii ale inteligenţei artificiale


O împărţire a inteligenţei artificiale pe domenii este destul de dificil de realizat. Totuşi
în prezent sunt acceptate unanim patru domenii fundamentale:
Inteligenţa artificială clasică – presupune domenii de cercetare precum rezolvarea
problemelor, planificarea, înţelegerea limbajului natural, vederea artificială, programarea
automată, sistemele expert, robotica. Se foloseşte cu succes în rezolvarea problemelor care fac
apel la gândirea logică sau abstractă, însă întâlneşte dificultăţi majore în sarcini de rutină
pentru fiinţele umane cum ar fi văzul sau auzul deoarece nu este adaptată informaţiilor care
provin din mediul real.
Inteligenţa artificială teoretică – are ca obiectiv fundamental construcţia de modele
informatice ale inteligenţei şi foloseşte două tipuri de abordări: abordarea matematică, ce
constă în extinderea teoriilor matematice în vederea formalizării raţionamentelor sau a
identificării modelelor de reprezentare a cunoştinţelor şi abordarea experimentală ce constă în
a studia un tip de raţionament particular şi apoi în conceperea unui program informatic
capabil să-l reproducă.
Inteligenţa artificială aplicată se preocupă de aplicarea practică a cunoştinţelor
rezultate din cercetările din domeniul inteligenţei artificiale. Este, dacă doriţi, ramura publică
a inteligenţei artificiale, fereastra prin care publicul ia cunoştinţă de aplicaţiile bazate pe IA
Inteligenţa artificială tehnică are în vedere dezvoltarea de noi sisteme care să vină în
sprijinul cercetărilor din domeniul IA. Poate fi asimilată termenului de meta-cercetare
deoarece fundamentează elemente şi concepete de optimizare a cercetării din acest domeniu.

10.2 Structura generală a unui sistem de inteligenţă artificială


Sistemele bazate pe inteligenţă artificială diferă de programele informatice tradiţionale
deoarece sunt constituite pe baza unui sistem de inferenţă, a unor baze de cunoştinţe şi a unui
mecansim de control.

81
Baza de cunoştinţe conţine informaţiile pe care le posedă sistemul fiind alcătuită din
trei componente majore: un limbaj ce permite descrierea obiectelor şi conceptelor cunoscute,
faptele – fraze care utilizează acest limbaj şi care descriu afirmaţii cunoscute ale sistemului şi
în sfârşit relaţiile – legături semantice între fapte care contribuie la rezolvarea unui ansamblu
de probleme.
Un sistem de inteligenţă artificială primeşte la intrare datele problemei. Pe baza
acestora şi plecând de la cunoştinţe, interpretul construieşte noi fapte care decurg din
utilizarea logică a bazei de cunoştinţe. Aceste noi fapte pot deveni la rândul lor noi cunoştinţe
care vor participa la construcţia de noi fapte şi aşa mai departe. În acest fel sistemul „învaţă”
din rezultatul inferenţelor sale, iar această înlănţuire de inferenţe constituie un raţionament.
Sistemul de control sau regulile de inferenţă ghidează interpretul în vederea extragerii
din baza de cunoştinţe doar a elementelor reprezentative care pot duce rapid la o soluţie.

Date A, C

Baza de cunoştinţe
Relaţii: Dacă A, atunci B
Dacă B şi C atunci D Motorul de
Baza de reguli
inferenţă
Fapte: A este adevărat
C este adevărat

Răspuns D

10.3 Limbaje folosite în inteligenţa artificială


Unul dintre primele şi multă vreme singurul limbaj de programare în inteligenţa
artificială a fost LISP (List Processing), inventat de John MacCarthy un nume frecvent
întâlnit în lumea computerelor şi unul dintre părinţii cercetărilor din domeniul inteligenţei

82
artificiale. Elementul de bază în acest limbaj este lista în care fiecare element este reprezentat
printr-un cuplu de două cuvinte, unde primul conţine o informaţie simplă referitoare la
element iar al doilea direcţionează către următorul element al listei. Astfel LISP reuşeşte cu
uşurinţă să manipuleze date organizate în secvenţe, lucru dificil în alte limbaje de programare,
dar esenţial în domeniul inteligenţei artificiale.
În 1972, apare un alt limbaj de programare deosebit de bine adaptat la inteligenţa
artificială şi anume PROLOG (Programmation et Logique) dezvoltat de către profesorul
Colmerauer de la univeristatea din Luminy, Marsilia. Succesul acestui nou limbaj se
datorează faptului că foloseşte principiul programării declarative care constă în reprezentarea
formală a cunoştinţelor privind un subiect dat, pe baza cărora pot fi deduse răspunsurile
utilizatorului. Spre deosebire de limbajele clasice, descrise de algoritmi, PROLOG enunţă un
ansamblu de fapte pertinente dintr-un domeniu sub forma unei serii de reguli, fiind
asemănător cu principiile axiomelor matematice. Aplică apoi un mecanism de inferenţă logică
pentru a căuta răspunsul la problema pusă. Dacă există suficiente cunoştinţe, atunci vor fi
furnizare utilizatorului soluţiile găsite.
După cum puteţi observa, inteligenţa artificială este departe de a fi ceea ce ne
imaginăm. Istoricul cercetărilor în acest domeniu se caracterizează prin perioade alternative
de entuziasm urmate de blocaj. Dificultăţile întâmpinate în încercarea de a simula inteligenţa
umană se datorează nu numai nivelului tehnologic actual dar şi lipsei unei teorii pertinente
care să explice comportamentul şi inteligenţa fiinţei umane.
Sistemele actuale bazate pe inteligenţă artificială sunt copii pale ale funcţiilor pe care
le posedă omul. Nici un program existent nu poate citi cu precizia omului, nu poate
recunoaşte cum o face fiinţa umană, nu poate ascula şi răspunde nici măcar aşa cum o face un
om slab dotat intelectual.

10.4 Întrebări recapitulative şi teme


1. Care sunt elementele componente ale unui sistem de inteligenţă artificială?
2. În ce constă testul Turing?
3. Care sunt principalele domenii ale inteligenţei artificiale?
4. Descrieţi structura generală a unui sistem bazat pe inteligenţa artificială.
5. Ce limbaje de programare în domeniul inteligenţei artificiale cunoaşteţi?

83
Referinţe bibliografice
Parcurgerea acestui material bibliografic nu este obligatorie însă contribuie în mod
decisiv la înţelegerea şi aprofundarea conceptelor prezentate în materialul de curs. Majoritatea
lucrărilor au un pronunţat caracter practico-aplicativ.

1. Anca Daniela Ioniţă Modelarea UML în ingineria Editura ALL, Bucureşti, 2003
sistemelor de programe
2. Aurel Stan Testul Psihologic- Evoluţie, Editura Polirom, Iaşi, 2002
construcţii, aplicaţii
3. Cornel Havârneanu Cunoaşterea psihologică a Editura Polirom, Iaşi, 2000
persoanei
4. Cornel Havârneanu Metodologia cercetării în ştiinţele Editura Erota, Iaşi, 2000
sociale
5. D. Dumitrescu Principiile inteligenţei artificiale Editura Albastră, Cluj Napoca,
2002
6. D. Dumitrescu, Hariton Reţele neuronale – teorie şi Editura Teora, Bucureşti, 1996
Costin aplicaţii
7. Dorin Bocu Iniţiere în ingineria sistemelor soft Editura Albastră, Cluj Napoca,
2001
8. Dorin Ioniţă Cârstoiu Sisteme Expert Editura ALL, Bucureşti, 1994
9. Eric Winemiller, Jason Visual Basic 6 – Baze de date Editura Teora, Bucureşti, 2001
T. Roff, Bill Heyman,
Ryan Groom
10 Herbert Schildt C – Manual complet Editura Teora, Bucureşti, 1995
.
11 Herbert Schildt C++ – Manual complet Editura Teora, Bucureşti, 1995
.
12 Itemsoft Project Itemsoft CAT Server – Software Document de uz intern
. Architecture Project
13 Microsoft Press Visual Basic 6.0 – Ghidul Editura Teora, Bucureşti, 2000
. Programatorului
14 Sabin Buraga Semantic Web. Fundamente şi Editura Matrix Rom Publishing
. aplicaţii House, Iaşi, 2004
15 Sabin Buraga Tehnologii Web Editura Matrix Rom Publishing
. House, Bucureşti, 2001
16 Sabin Buraga (coord.) Aplicaţii Web la cheie Editura Polirom, Iaşi, 2003
.
17 Thomas Connolly, Baze de date – Proiectare, Editura Teora, Bucureşti, 2001
. Carolyn Begg, Anne Implementare, Gestionare
Strachan
18 Titu I. Băjenescu Performanţele inteligenţei Editura Albastră, Cluj Napoca,
. artificiale – de la teorie la aplicaţii 2002
19 Valentin Cristea, Limbajul C Standard Editura Teora, Bucureşti, 1992
. Cristian Giumale,
Eugenia Kalisz,
Alexandru Pănoiu
20 Winn L. Rosch Totul despre hardware – Ediţia II Editura Teora, Bucureşti, 2001
.

84

You might also like