Documente Academic
Documente Profesional
Documente Cultură
Facultatea de Informatic
Bazele informaticii
Bucureti 2013
Cuprins
INTRODUCERE ........................................................................................................................... 5
UNITATEA DE NVARE 1 ................................................................................................. 11
1. Stocarea datelor .................................................................................................................. 11
1.1. Stocarea biilor ................................................................................................................ 11
1.1.1. Pori logice i circuite basculante bistabile ..................................................................... 11
1.1.2. Tehnici de stocare ........................................................................................................... 12
1.1.3. Sistemul de notaie hexazecimal ..................................................................................... 13
1.2. Memoria principal ......................................................................................................... 13
1.2.1. Organizarea memoriei principale.................................................................................... 14
1.2.2. Organizarea unei celule de memorie .............................................................................. 15
1.3. Dispozitive de stocare de mas ....................................................................................... 19
1.3.1. Discuri magnetice ........................................................................................................... 21
1.3.2. Discuri compacte ............................................................................................................ 25
1.3.3. Benzi magnetice .............................................................................................................. 26
1.3.4. nregistrri logice i fizice .............................................................................................. 26
1.4. Codificarea utilizat pentru stocarea informaiilor ......................................................... 27
1.4.1. Reprezentarea simbolurilor ............................................................................................. 27
1.4.2. Reprezentarea valorilor numerice ................................................................................... 28
1.4.3. Reprezentarea altor tipuri de date ................................................................................... 30
1.5. Sistemul binar de numeraie ........................................................................................... 31
1.5.1. Adunarea n binar............................................................................................................ 31
1.5.2. Reprezentarea fraciilor n sistemul binar ....................................................................... 32
1.6. Stocarea numerelor ntregi .............................................................................................. 34
1.6.1. Notaia n exces ............................................................................................................... 34
1.6.2. Notaia n complement fa de doi .................................................................................. 35
1.6.3. Adunarea numerelor reprezentate n complement fa de doi ........................................ 38
1.6.4. Problema depirii superioare ......................................................................................... 39
1.7. Stocarea numerelor fracionare ....................................................................................... 40
1.7.1. Notaia n virgul mobil ................................................................................................ 40
1.7.2. Erori de rotunjire ............................................................................................................. 42
1.8. Erori de comunicaie ....................................................................................................... 43
1.8.1. Bii de paritate ................................................................................................................. 43
1.8.2. Coduri corectoare de erori .............................................................................................. 45
TEST AUTOEVALUARE 1 (Stocarea datelor) ....................................................................... 47
UNITATEA DE NVARE 2 .................................................................................................. 52
2. Manipularea datelor ............................................................................................................ 52
2.1. Unitatea central de prelucrare ....................................................................................... 52
2.2. Execuia instruciunilor ................................................................................................... 55
2.3. Execuia programelor ...................................................................................................... 60
2.4.
2.5.
2.6.
2.7.
2.8.
2.9.
6.2.
6.3.
INTRODUCERE
Informatica este o disciplin care construiete baza tiinific pentru mai multe domenii,
ca:
prelucrarea informaiilor;
a) Studiul algoritmilor
Algoritm = set de pai prin care se definete modul n care poate fi dus la ndeplinire o
anumit sarcin.
n domeniul calculatoarelor
algoritmii
Pasul 3 : Dac R 0, se atribuie lui M valoarea N i lui N valoare R, apoi se revine la pasul 2:
cel mai mare divizor comun al celor 2 numere este valoarea notat cu N.
Dup descoperirea algoritmului (n cazul nostru al lui Euclid), ntr-un fel, putem spune
c toate informaiile necesare pentru efectuarea [activitii] operaiei respective sunt incluse ntro form codificat n algoritm.
Dezvoltarea algoritmilor este o preocupare major n domeniul efecturii calculelor i
principalele probleme legate de aceast aciune sunt :
reprezentarea algoritmului ntr-o form n care poate fi comunicat unei maini sau altor
oameni. Adic scrierea unui algoritm trebuie transcris din forma conceptual ntr-un set
clar de instruciuni lipsit de ambiguitate. Exist o mulime de variante de scheme de
reprezentare a algoritmilor numite limbaje de programare.
n prezent, n acest domeniu s-au realizat sisteme automate de organizare i planificare
care permit i nespecialitilor s dezvolte, fr ajutor din afar, sistemele de care au nevoie.
Exprimarea curent a acestei activiti este ingineria software.
Scopul acestor prelegeri nu este prezentarea n detaliu a modului n care arhitectura
calculatoarelor este implementat prin intermediul circuitelor electronice (este vorba de un alt
domeniu electronic). Ar fi de dorit ca arhitectura calculatoarelor s reflecte numai cunotinele
legate de procesele algoritmice i s nu fie limitat de tehnic.
Arhitectura calculatoarelor poate fi studiat i n alt context dect acela al stocrii i
regsirii datelor. n acest domeniu, caracteristicile interne ale calculatorului se reflect adesea n
caracteristicile externe. Proiectarea sistemele de calcul este strns legat de interfaa lor cu
lumea exterioar. De exemplu, se pune problema modului n care algoritmul poate fi furnizat
calculatorului i a modului de precizare n care algoritm s fie executat.
n contextul n care calculatorul ndeplinete diferite sarcini, trebuie rezolvate multe
probleme legate de coordonarea activitilor i alocarea resurselor .
maina lui Leibniz avea algoritmii (operaiile aritmetice) nglobai, dar operatorul
trebuia s-l selecteze pe cel dorit;
maina lui Babbage era astfel proiectat nct secvena de pai trebuia executat s poat
fi comunicat acesteia prin perforarea ntr-un anumit mod a unor cartele de hrtie.
Mai trziu, Herman Hollerith (18601929) a folosit ideea reprezentrii informaiilor sub
(Electronic Delay Storage Automatic Computer), primul calculator care dispunea de sistem de
operare.
c) Evoluia informaticii
Capacitatea-limit de stocare a datelor, ca i procedurile de programare consumatoare de
timp au reprezentat restricii care au redus complexitatea algoritmilor executai de primele
generaii de calculatoare.
Pe msur ce aceste limite au nceput s fie depite, sistemele de calcul au nceput s fie
folosite pentru sarcini de mai mare anvergur, din ce n ce mai complexe. Eforturile s-au
ndreptat din ce n ce mai mult ctre studiul algoritmilor i al procesului de programare. Aceste
eforturi se pot aduna, fr a exagera, n tiina algoritmilor. Aria de cuprindere a acestei tiine
este foarte larg, incluznd subiecte de matematic, inginerie, psihologie, management,
lingvistic etc.
Ceea ce ne propunem s prezentm n cadrul acestor prelegeri (lecii) sunt :
algoritmice mbunttite) ?
d) Rolul abstractizrii
Pentru sistemele de o complexitate care depete capacitatea noastr de nelegere se
poate privi sistemul respectiv ca un ansamblu de componente ale cror caracteristici interne pot
fi ignorate, ceea ce ne permite s ne concentrm asupra modului n care componentele respective
interacioneaz unele cu altele i asupra modului cum sunt utilizate pentru construirea unor
componente de nivel mai nalt.
Aceast distincie care se face ntre proprietile externe ale unei componente i detaliile
interne care in de construcia componentei respective poart numele de abstractizare. n orice
progres obinut, o mic parte a societii noastre se specializeaz n implementarea lui, ceilali
folosesc rezultatul ca pe un instrument abstract, deci o unealt a crei implementare intern nu
suntem obligai s o nelegem.
10
UNITATEA DE NVARE 1
1.
Stocarea datelor
1.1.
Stocarea biilor
Calculatoarele utilizate n prezent reprezint informaiile sub forma iruri de bii. Un bit
(biniary digit = cifr binar) simbolizeaz una din cifrele 0 sau 1.
Stocarea unui bit ntr-un calculator necesit un dispozitiv care s poat s se afle ntr-una
din cele dou stri. De exemplu:
un ntreruptor (pornit/oprit);
un releu (deschis/nchis);
reprezentarea simbolului 1.
Aceste operaii lucreaz cu valorile adevr (true)/fals (false) i sunt denumite operaii
booleene.
Intrrile operaiei AND sunt reprezentate de adevrul sau falsitatea componentelor
expresiei; ieirea reprezint adevrul sau falsitatea expresiei compuse.
Expresia P AND Q este adevrat numai cnd ambele sale componente sunt adevrate.
Toate variantele operaiei AND se pot vedea n prima linie a figurii 1.1. Similar, operaia OR se
bazeaz pe o expresie compus sub forma P
OR
adevrat cnd cel puin una dintre componente este adevrat, ceea ce coincide cu
reprezentarea OR din linia a doua a figurii 1.1.
n limbajul curent nu exist o conjuncie care s poat exprima semnificaia operaiei
XOR. XOR produce ca rezultat o ieire cu valoarea 1 atunci cnd una dintre intrrile sale este 1
i cealalt 0 (vezi linia a treia din fig. 1.1.). Operaia NOT este o alt operaie boolean de
AND, OR i XOR, prin faptul c are o singur intrare i o singur ieire. Ieirea reprezint opusul
intrrii; dac intrarea operaiei NOT este adevrat, ieirea este fals, i invers.
12
Circuite basculante bistabile electronice care pot fi acionate electronic sunt mai rapide
dect cele magnetice i, de aceea, sunt utilizate pentru stocarea datelor n circuitele interne ale
calculatorului. ns un circuit basculant bistabil electronic pierde informaia stocat n el atunci
cnd sursa de alimentare este oprit.
n schimb, dispozitivele de stocare magnetice sau cu laser pstreaz datele, ceea ce le
recomand pentru realizarea de sisteme de stocare cu longevitate mare.
1.2.
Memoria principal
n scopul stocrii datelor, un calculator conine un mare numr de circuite, fiecare dintre
ele fiind capabile s stocheze bii. Acest "rezervor" de bii este cunoscut sub numele de
memorie principal (main memory).
13
14
Acest acces aleator la mici uniti de date (celula) se deosebete radical de sistemele de
stocare de mas (care manipuleaz iruri lungi de bii sub forma de blocuri).
Memoria primara
Memoria (Memory) pstreaz programele i datele. Fr o memorie, din care
procesoarele s poat citi i n care s poat scrie informaii, nu poate exista nici un calculator
numeric cu program memorat.
Bii
Unitatea elementar a memoriei este cifra binar, numit bit. Un bit poate conine un 0
sau un 1. Sistemul de numerotare binar necesit numai dou valori distincte, reprezentnd cea
mai sigur metod pentru codificarea informaiei numerice.
Ordinea octeilor
Octeii dintr-un cuvnt pot fi numerotai de la stnga la dreapta, sau de la dreapta la
stnga. Vom reprezenta n figur o parte a memoriei unui calculator pe 32 bii.
15
16
S precizm cum vom reprezenta valoarea numeric: 6 este reprezentat de biii 110 n
partea cea mai din dreapta a unui cuvnt i de zerouri pe ceilali 29 de bii din stnga.
Majoritatea aplicaiilor au nevoie de un amestec de numere intregi, iruri de caractere i
alte tipuri de date. S considerm o fi simpl de personal: nume angajat, vrsta i codul
departamentului (Paul Sandu, 21 ani, Departament = 260 = 1 x 256 + 4) i s o reprezentm n
cele dou moduri precizate mai sus.
Reprezentrile sunt bune i consistente intern, problema apare la transmiterea fiei, prin
reea de la maina cea mai semnificativ ctre cealalt main. Rezultatul transferului propus
arat astfel:
conduce la :
17
Problema este poziia caracterului "U poziionat prost. Soluii de ndreptare nu exist la
transferul ntre maini diferite ca organizare a memoriei. Apare evident necesitatea unui standard
pentru stabilirea ordinii octeilor n cadrul organizrii memoriei.
Memoria intermediar
ntotdeauna CPU-urile au fost mai rapide dect memoriile. Proiectanii CPU-ului sunt
preocupai de sporirea vitezei acestora, pe cnd proiectanii memoriilor sunt preocupai de
sporirea capacitii, i nu de sporirea vitezei. Datorit acestor abordri, situaia CPU-urilor i a
memoriilor, vis--vis de vitez, continu s se nruteasc n timp. Practic, acest dezechilibru
are urmtoarea metamorfozare: dup ce CPU-ul a lansat o cerere ctre memorie, nu va primi
cuvntul ateptat timp de mai multe cicluri CPU; cu ct memoria este mai lent, cu att CPU-ul
are mai mult de ateptat.
n acest moment, inginerii tiu cum s construiasc memorii la fel de rapide ca i CPUurile, dar ar trebui ncorporate n cip-ul CPU, crescndu-i dimensiunile i costul. Cip-ul CPU
este limitat la anumite dimensiuni. n acest sens, se cunosc tehnici de combinare a unei cantiti
mici de memorie rapid cu o cantitate mare de memorie lent, la un pre moderat.
Memoria mic, rapid, se numete memorie intermediar (cache). Ideea de baz a unei
memorii intermediare : cuvintele de memorie cele mai frecvent utilizate sunt pstrate n
memoria intermediar.
18
1.3.
Limitele tehnologice precum i necesitatea stocrii unor copii de siguran ale datelor
vitale, au fcut ca memoria principal a unui calculator s nu satisfac cerinele impuse de
diversele aplicaii. Din aceste motive, calculatoarele sunt echipate, pe lng memoria principal,
cu sisteme de stocare de mas (mass storage system), denumite i memorie secundar. Stocarea
datelor pe aceste sisteme se face n uniti de mari dimensiuni denumite fiiere (files).
Unul din principalele dezavantaje ale sistemelor de stocare de mas este acela c, n
general, ele necesit o micare suplimentara mecanic, astfel fiind mai lente la stocarea i
recuperarea datelor n comparaie cu memoria principal a calculatorului.
Principalul avantaj al dispozitivelor de stocare de mas este acela c, n multe situaii,
sunt mai ieftine dect memoria principal, iar suportul pe care se nregistreaz datele poate fi
extras din calculator i depozitat ntr-un loc sigur n scopul recuperrii ulterioare a datelor.
Cu privire la dispozitivele care pot fi cuplate sau decuplate de la calculator, se folosesc
termenii on-line i off-line.
Termenul On-line indica c dispozitivul sau informaiile sunt conectate i pot fi folosite
de calculator fr intervenie uman. Termenul Off-line indica c este necesar intervenia
uman nainte ca dispozitivul sau informaiile s poat fi utilizate de calculator; dispozitivul
trebuie pornit sau informaiile trebuie introduse ntr-un anumit mecanism.
19
Memoria secundar
Orict de mare ar fi memoria principal. ntotdeauna ea va fi prea mic pentru cerinele
utilizatorilor.
Timpii de acces la banda magnetic i discul optic sunt de mrimea secundelor (inclusiv
timpul de extragere i inserare n dispozitivul de intrare/ieire).
Benzile magnetice i discurile optice nu sunt tot timpul utilizate, astfel nct capacitatea
lor este limitat de bugetul proprietarului.
21
Figura 1.10 - O poriune a unei piste a discului (sunt precizate dou sectoare)
Secvena circular de bii scris la rotaia complet a discuie se numete pist (track).
Fiecare pist este mprit n sectoare de lungime fix, de obicei de cte 512 octei de date,
precedai de un preambul care permite capului s se sincronizeze nainte de citire sau scriere.
Dup zona de date urmeaz un cod corector de erori (ECC Error Correcting Code), fie un cod
Hamming, fie un cod care poate corecta erori multiple numit Cod Reed Solomon.
Sectoarele consecutive sunt separate de un spaiu ntre sectoare (Intersector gap).
Capacitatea discului formatat este cu cca. 15% mai mic dect cea a discului neformatat. La
fiecare distan radial poate fi scris o alt pist. Pistele (coroane circulare) sunt cercuri
concentrice fa de axul discului.
Cu tehnologia actual, discurile au ntre 800 i 2000 de piste pe centimetru, lrgimea
pistei fiind ntre 5-10 microni. Discurile actuale ajung de la densiti de 50000 pn la 100000
bii/cm. Astfel de discuri se numesc discuri Wincester. Majoritatea discurilor sunt constituite
din mai multe platane suprapuse pe vertical.
Fiecare platan dispune de propriul bra i cap. Braele sunt sudate ntre ele; la o
deplasare ntr-o nou poziie radial sunt mutate toate odat. Setul de piste dintr-o poziie radial
se numete cilindru.
Factorii care influeneaz performanele discurilor sunt:
22
timpii medii de cutare (ntre piste alese aleatoriu) se situeaz n intervalul 5-15 msec.;
latena de rotaie (rotational latency) necesar rotirii platanului astfel nct sectorul dorit s
ajung sub capul de citire; ntrzierea medie: 4 8 msec. Majoritatea discurilor se rotesc la
5400, 7200, 10800 rotaii/minut;
disc i este asociat un controlor de date (disk controller), un cip care controleaz dispozitivul.
Printre sarcinile controlerului sunt :
cnd controlorul descoper un sector defect, l nlocuiete cu unul din sectoarele libere
rezervate n acest scop n cadrul fiecrui cilindru.
Cea mai obinuit form de stocare de mas utilizat n prezent o reprezint stocarea pe
disc. n aceast structur, stocarea datelor se face pe un disc subire care se nvrtete i care este
acoperit cu o pelicul subire de material magnetic.
Deasupra i/sau dedesubtul discului sunt plasate capete de citire/scriere, astfel nct, pe
msur ce discul se rotete, fiecare cap parcurge un cerc denumit pist (track) care se afl pe
suprafaa de sus sau jos a discului. Deoarece fiecare pist conine mai multe informaii dect
vom dori s prelucrm la un moment dat, pistele sunt mprite n arce de cerc denumite
sectoare, unde informaiile sunt nregistrate ca un ir continuu de bii.
Prin repoziionarea capetelor de citire/scriere se obine acces la sectoare situate pe
diferite piste concentrice. Pistele sunt compuse din mai multe sectoare individuale, fiecare dintre
ele putnd fi tratate ca un ir de bii independent. Numrul de piste de pe suprafaa discului,
precum i numrul de sectoare de pe o pist, difer de la un sistem la altul. Dimensiunile
sectoarelor sunt n general fie de 512 octei, fie de 1024 octei.
23
timpul de ntrziere (rotation delay/latency time) = jumtate din timpul necesar pentru ca
discul s efectueze o rotaie complet, respectiv timpul mediu n care datele respective
ajung n poziia capului de citire/scriere dup ce acesta a fost adus la pista dorit;
timpul de acces (access time) = suma dintre timpul de cutare i timpul de ntrziere;
rotaie de cca. 50007000 rotaii/minut, n timp ce n cazul discurilor flexibile aceste viteze nu
depesc 300 rotaii/minut. Rata de transfer a discurilor fixe se msoar n megabytes/secund,
fa de cea a dischetelor care se msoar n kilobytes/ secund.
Dac timpul de ntrziere se msoar, n cazul circuitelor electronice n nanosecunde
(miliardimi de secund) i chiar mai mici, timpii de cutare, ntrziere i acces n cazul
discurilor se msoar n milisecunde (miimi de secund).
informaiilor, topind suprafaa reflexiv de pe CD cu ajutorul unei raze laser i apoi rearanjnd-o
prin intermediul unor cmpuri magnetice nainte ca aceasta s se rceasc.
26
1.4.
27
Pentru a afla valoarea unei reprezentri n binar, vom nmuli valoarea fiecrei cifre cu
ponderea asociat poziiei sale i vom aduna rezultatele.
28
Pasul 2.
Pasul 3.
29
"populare" de
G I F (Graphic
Interchange Format). Fotografiile sunt prezentate ca hri de bii prin fiiere n format JPEG
(Joint Photographic Experts Group).
n cadrul acestor reprezentri acestor fiier imaginea nu poate fi scalat la o dimensiune
arbitrar. Exist posibilitatea scalrii imaginii prin memorare ca un set de directive care
precizeaz modul de desenare. Acest mod de precizare a modului de desenare furnizeaz o
30
1.5.
Exemplu :
00111010
+ 00011011
Se adun cifrele cele mai din dreapta 0 i 1 i obinem cifra 1, pe care o scriem sub
coloana respectiv.
00111010
+00011011
1
Se adun apoi 1 i 1 din coloana urmtoare, obinnd rezultatul 10. Vom scrie 0 sub
coloan i vom transfera cifra 1 deasupra coloanei urmtoare.
31
1
00111010
+00011011
101
Se adun cifrele 1, 0 i 0 din coloana urmtoare, obinnd rezultatul 1, i vom scrie 1 sub
coloan.
Cifrele din coloana urmtoare 1 i 1 dau ca rezultat al adunrii 10; se va scrie cifra 0 sub
coloana respectiv i vom transfera cifra 1 deasupra coloanei urmtoare.
1
00111010
+00011011
0101
Adunm cifrele 1, 1 i 1 din aceast coloan i obinem 11; se va scrie cifra 1 sub
coloana respectiv i vom transfera cifra 1 deasupra coloanei urmtoare.
1
00111010
+00011011
10101
00111010
+ 00011011
01010101
32
binar, iar cifrele din dreapta punctului reprezint partea fracionar a valorii i sunt interpretate
ntr-o manier similar, poziiile lor avnd asociate ponderi fracionare.
Astfel prima poziie din dreapta punctului are atribuit ponderea 1/2, urmtoarea 1/4,
apoi 1/8 i aa mai departe. Rezult c regula aplicat anterior rmne valabil, fiecare poziie
are o pondere alocat de dou ori mai mare dect cea a poziiei din dreapta sa.
Exemplu :
Pentru a aduna dou reprezentri binare n virgul fix, se vor alinia unul sub altul
punctele de separare ntre partea ntreag i cea fracionar i se va aplica acelai proces de
adunare ca i cel prezentat anterior.
Exemplu :
1 0 0 1 1
+1 0 0 1 1
1
2
33
1 1 0 0 1
1.6.
Adesea avem nevoie s memorm att valori pozitive ct i valori negative, deci este
nevoie de un sistem de notare care s reprezinte ambele categorii de numere (pozitive i
negative).
Sistemele de notaie pentru reprezentarea ambelor categorii de numere pot folosi circuite
electronice realizate i utilizate pe scar larg n cadrul echipamentelor de calcul. Vom prezenta
n continuare dou astfel de sisteme de notaie: notaia n exces (excess notation) i notaia n
complement fa de doi (two's complement notation).
cuvintele binare care-l preced sunt utilizate pentru codificarea valorilor negative -1,
2, -3,...
34
Figura 1.18 - Sistemul de notaie n exces care utilizeaza cuvinte cu lungimea de trei bii
36
Modulul
cutat se va
determina copiind cuvntul original de la dreapta la stnga, pn la primul bit egal cu 1 (inclusiv
acesta), apoi vom complementa biii rmai i i vom scrie n continuare tot de la dreapta la
stnga (lng biii deja copiai), iar n final vom decodifica cuvntul obinut ca i cnd ar fi o
reprezentare binar normal (ex. decodificm 1010; bitul de semn este 1, deci valoarea
numrului este negativ; convertim cuvntul i obinem 0110, ceea ce corespunde valorii 6, deci
ablonul original reprezint valoarea -6).
De exemplu:
0 1 0 1
0 1 1 1
0 0 1 0
1 0 1 1
0 1 1 1
0 0 1 0
1
+ (-2) + 1
0 0 1 1
(-3)
+2 +0 0 1 0
0 1 0 1
1 0 1
1 1 0
1 0 1 1 -5
38
0111
+(-5) +1 0 1 1
7
0 0 1 0
n fiecare caz n parte, vom codifica valorile utiliznd notaia n complement fa de doi
(pe patru bii), vom efectua adunarea procednd aa cum s-a descris anterior i vom decodifica
rezultatul napoi la notaia zecimal.
Se observ c, prin trecerea la notaia n complement fa de doi, putem calcula rspunsul
corect aplicnd n toate cazurile acelai algoritm de adunare. Dac am folosi tehnicile uzuale, a
treia problem ar fi de fapt un proces complet diferit de primele dou; este vorba de operaia de
scdere. Deci, n calculatorul care utilizeaz notaia n complement fa de doi se realizeaz
numai adunare i negarea biilor.
n consecint, dac n calculator se dorete scderea lui 5 (0101) din 7 (0111), mai nti
va fi schimbat n -5 (1011) i apoi se va efectua adunarea 0111 + 1011 = 0010, ceea ce
reprezint valoarea 2.
n ceea ce privete nmulirea, ea este o adunare repetat, iar mprirea o scdere
repetat (ex. 6:2 reprezint de fapt de cte ori poate fi sczut 2 din 6 fr s se obin un rezultat
negativ).
Astfel putem efectua toate cele patru operaii aritmetice standard (adunarea, scderea,
nmulirea i mprirea) utiliznd un circuit pentru adunare combinat cu un circuit pentru
negarea unei valori.
39
1.7.
40
41
exponent
n final vom nscrie 0 n bitul de semn, deoarece valoarea stocat este pozitiv; la sfrit
octetul arat astfel :
0
semn
bit de
semn
1.8.
Erori de comunicaie
bii de 1 semnaleaz o eroare. Pentru a folosi aceast regul, avem nevoie de un sistem n care
fiecare cuvnt binar s conin un numr impar de bii 1, ceea ce se obine uor prin adugarea
unui bit suplimentar, bitul de paritate (parity bit).
Bitul de paritate se plaseaz pe poziia bitului cel mai semnificativ, deci codul de opt bii
devine un cod de nou bii.
Bitul de paritate va lua valoare 0 sau 1, astfel nct cuvntul rezultat s aibe un numr
impar de 1.
44
O alt tehnic utilizeaz paritatea par (even parity). n aceast tehnic, fiecare cuvnt
trebuie s conin un numr par de bii 1, iar prezena unei erori este semnalat de apariia unui
cuvnt cu un numr impar de bii 1. irurile lungi de bii sunt nsoite adesea de un grup de bii
de paritate dispui ntr-un octet de control (checkbyte).
Printre variantele principiului de verificare cu octet de control, se numr schemele de
detecie a erorilor numite semne de control (checksums) i control de coduri ciclice (cyclic
redundancy check CRC).
Bitul de paritate permite detectarea unei erori singulare, dar nu furnizeaz informaia
necesar pentru corectarea erorii. Pot fi, ns, concepute coduri corectoare de erori (error
corecting codes) care nu numai c detecteaz erorile, dar le i corecteaz.
Intuitiv, se poate crede c nu poate fi corectat informaia dintr-un mesaj, dect dac se
cunoate informaia coninut de mesaj.Contrarul acestei afirmatii se va demonstra in
continuare. Pentru a nelege modul de funcionare a codului corector de erori, vom defini
distana Hemming dintre dou numere binare. Distana Hemming ntre dou numere binare este
numrul de bii prin care difer cele dou cuvinte.
45
Figura 1.27 - Decodificarea cuvntului 010100 utiliznd codul din figura 1.26
46
7 5/32
2.
7 9/32
3.
7 7/16
2. Care din urmatoarele reprezentari zecimale este egala cu valoarea octala : 71.15
1. 58 11/64
2. 57 13/64
3. 59 17/64
3. Care dintre urmatoarele afirmatii despre memoria interna (RAM) este falsa :
1. poate fi doar citita
2. de regula are componente electromecanice in miscare
3. informatia dispare la scoaterea de sub tensiune
4. Care din urmatoarele
reprezentari
zecimale
41A.0CA:
1. 1050 202/4096
2. 1060 198/4096
3. 1030 214/4096
5. Convertiti urmatoarea fractie ordinara : - 1
folosind notatia in virgula mobila.
Se va utiliza notatia in exces pe trei biti.
111.3
110.2
101.1
100.0
011-1
010-2
001... -3
000.. -4
47
(10)
6714. 1062
2.
314281. 217
1 010 1 0 0 1
48
11. Care din urmatoarele reprezentari zecimale este egala cu valoarea binara : 1010.0111
1.
10 3/4
2.
10 7/16
3.
10 11/64
12. Care dintre urmatoarele afirmatii despre memoria interna (RAM) este adevarata :
1. poate fi doar citita
2. de regula are componente electromecanice in miscare
3. informatia dispare la scoaterea de sub tensiune
13. Convertiti urmatoarea fractie ordinara : - 2
(10)
octet, folosind notatia in virgula mobila. Se va utiliza notatia in exces pe trei biti.
111.3
110.2
101.1
100.0
011-1
010-2
001... -3
000.. -4
14.
11111001
101.1
100.0
011-1
010-2
001... -3
000.. -4
17.
si scaderea 6 - 2.
50
19. Care din sirurile de mai jos ar putea reprezenta un numar scris in baza hexa (16) :
20.
1.
10010
2.
101011
3.
10111
Care dintre urmatoarele afirmatii despre memoria externa (CD-W, HDD, DVD-W,
Care dintre urmatoarele afirmatii despre memoria externa (CD-W, HDD, DVD-W,
51
UNITATEA DE NVARE 2
2.
Manipularea datelor
2.1.
Circuitele care realizeaz diferite operaii asupra datelor nu sunt conectate direct la
celulele memoriei principale. Aceste circuite sunt grupate n unitatea central de prelucrare
(central processing unit CPU). Unitatea central de prelucrare (CPU) se compune din:
registri (registrele)
n figura de mai jos este prezentat organizarea unui calculator [simplu] construit n jurul
52
53
54
Dup ce UAL execut cu datele de intrare, adunri, scderi i alte operaii simple,
transmite rezultatul n registrul de ieire. Majoritatea instruciunilor executate de UAP sunt de
tip: registru-memorie, registru-registru. Instruciunile registru-memorie permit cuvintelor din
memorie s fie ncrcate n registre, de unde sunt folosite ca date de intrare pentru UAL n
instruciunile urmtoare.
Instruciunile registru-registru extrag doi operanzi din registre, i aduc n registrele de
intrare UAL, execut o operaie oarecare asupra lor (adunare, SI logic, ) i depun rezultatul
napoi ntr-unul din registre. Acest ultim proces se numete ciclul cii de date (Data path cycle)
i reprezint inima celor mai multe UCP-uri. Cu ct acest ciclu este mai rapid, cu att maina
merge mai repede.
2.2.
Execuia instruciunilor
UCP execut fiecare instruciune printr-o serie de pai mici, dup cum urmeaz :
a. transformarea instruciunii urmtoare din memorie n registrul de instruciuni;
b. schimbarea contorului de program, pentru a indica instruciunea urmtoare;
c. determinarea tipului instruciunii proaspt extrase;
d. dac instruciunea are nevoie de un cuvnt din [spaiul] de memorie, determinarea
locului unde se gsete acesta;
e. extragerea cuvntului ntr-unul din registrele UCP, dac este cazul;
f. executarea instruciunii;
g. reluarea pasului a pentru a ncepe execuia instruciunii urmtoare.
Aceast secven [de pai] se mai numete ciclul extrageredecodificareexecuie
(fetchdecodeexecute). n fig. 2.4 este prezentat n detaliu procesul adunrii a dou valori
stocate n memorie.
Instruciuni n cod main
Instruciunile prezentate n fig. 2.4 reprezint instruciuni executabile de ctre unitatea
central de prelucrare i poart denumirea instruciunii n cod main (machine instructions).
Cnd ne referim la instruciunile cunoscute de un calculator, observm c ele pot fi
clasificate n trei categorii (grupe): instruciuni de transfer de date, instruciuni aritmeticologice, instruciuni de control.
55
56
Instruciuni de control
Instruciuni care nu manipuleaz date, ci dirijeaz modul de execuie al programelor.
Pasul 5 din fig. 2.4 face parte din aceast categorie ca un caz elementar.
Aceast familie de instruciuni conine i instruciunile de salt (JUMP, BRANCH) care
realizeaz aciune ca unitatea de comand s execute alt instruciune dect cea care urmeaz.
Exist dou variante de instruciuni de salt: salt necondiionat
salt condiionat. Ca
57
Coduri de operaie
Fiecare instruciune este codificat pe un numr de 16 bii, reprezentai cu ajutorul a
patru cifre hexazecimale (vezi figura urmatoare).
Codul de operaie al fiecrei instruciuni este reprezentat de primii patru bii sau de prima
cifr hexazecimal.
Calculatorul dispune de dou instruciuni de adunare ADD: una pentru
adunarea
59
2.3.
Execuia programelor
60
Programe i date
Mai multe programe pot fi stocate simultan n memoria principal a unui calculator, att
timp ct ocup zone de memorie diferite, iar prin setarea adecvat a contorului programului se
poate determina care program se va executa la pornirea calculatorului.
Deoarece datele sunt stocate de asemenea n memorie i sunt codificate tot cu cifre
binare (0 i 1), calculatorul nu poate face distincia ntre date i programe.
Existena unui aspect comun pentru programe i date permite unui program s
manipuleze alte programe (sau chiar pe el nsui) ca pe nite date.
2.4.
Alte instruciuni
61
procesoarele Intel au ncorporat instruciuni RISC (un nucleu RISC) ntr-o arhitectur
CISC. Chiar dac aceast abordare hibrid nu este la fel de rapid ca i cea RISC pura,
le permite obinerea unei performane globale competitive i rularea vechiului software
nemodificat.
2.5.
ce
conduce
la
mbuntirea
performanelor.
3) Instruciunile trebuie s fie uor de decodificat
Decodificarea instruciunilor individuale, pentru a determina resursele de care au nevoie,
este un factor critic care limiteaz rata de lansare a instruciunilor. Cu ct se folosesc mai puine
formate diferite pentru instruciuni, acestea sunt mai eficiente. de asemenea, numrul mic de
cmpuri cu dimensiune prestabilit este o alt component care poate eficientiza execuia
instruciunii.
63
2.6.
Prelucrare simultan
64
Calculatoare -multiprocesor
Alte soluii pentru creterea capacitii de transfer face parte din categoria prelucrrii
paralele (parallel processing), n care se utilizeaz mai multe procesoare pentru executarea
operaiei curente. Argumentul n favoarea acestei abordri l reprezint creierul uman.
Susintorii prelucrrii paralele se pronun n favoarea calculatoarelor-multiprocesor,
care conin, n opinia lor, configuraii cu un factor de utilizare mult mai ridicat.
2.7.
Operaii logice
Operaiile logice AND (I), OR (SAU), XOR (SAU echivalent) se pot extinde la operaii
care combin dou iruri de bii pentru a produce o ieire de forma unui ir de bii, aplicnd
operaia elementar bit cu bit.
Exemplu :
10011010
AND
11001001
10001000
OR
10011010
10011010
11001001
XOR 1 1 0 0 1 0 0 1
11011011
01010011
Exemplu :
00001111
AND
10101010
n acest caz operandul denumit masc (mask) determin care parte a celuilalt operand va
afecta rezultatul. Deci operaia AND permite copierea unei pri a unui ir de bii, plasndu-se 0
n partea neduplicat.
65
11111111
XOR
10101010
01010101
dac valorile care trebuie adunate sunt stocate utilizndu-se notaia n complement fa
de doi, operaia de adunare trebuie realizat ca o operaie de adunare n binar;
66
dac operanzii sunt stocai utilizndu-se notaia n virgul mobil pentru adunare, trebuie
mai nti efectuat extragerea mantiselor operanzilor, deplasarea acestora la stnga sau la
dreapta n funcie de valoarea cmpurilor exponenilor, verificarea biilor de semn,
adunarea propriu-zis i apoi convertirea rezultatului n virgul mobil.
n cazul celor 2 operaii de adunare, din punctul de vedere al calculatorului ntre ele nu
2.8.
Blocul de adrese asociate unui controler este denumit port, el reprezint "poarta" prin
care informaiile intr sau ies din calculator.
67
Controlere
Comunicaia dintre unitatea central de prelucrare a unui calculator i un dispozitiv
periferic este controlat de un dispozitiv intermediar, denumit controler (controller). Fiecare
controler gestioneaz comunicaia cu un anumit tip de dispozitiv periferic. Un controler
corespunde fizic unei plci cu circuite electrice.
Controler-ul convertete mesajele i datele la forme compatibile cu caracteristicile
interne ale calculatorului respectiv la cele ale dispozitivelor periferice ataate controlerului.
Controlerele sunt ataate la aceeai magistral care conecteaz unitatea central la
memoria principal (fig. 2.10).
care s-i cear s citeasc un anumit sector de pe disc i s plaseze aceste date ntr-o anumit
zon de memorie precizat.
Apoi CPU poate continua execuia altor operaii n timp ce controlerul efectueaz cererea
solicitat. Dup terminarea sarcinii atribuite, controlerul transmite prin magistrala calculatorului
un anumit semnal ctre CPU (astfel de semnale iau forma de ntreruperi i vor fi studiate n cap.
Sistemul de operare).
Un bloc de memorie utilizat pentru transferul datelor spre i dinspre dispozitivele
periferice poart numele de zon-tampon (buffer). Ataarea controlerelor n magistrala unui
calculator mrete semnificativ complexitatea operaiilor de control al comunicaiei de-a lungul
acestei ci principale de comunicaie.
Chiar n cazul unei proiectri foarte bune, magistrala principal poate deveni un punct
critic, cunoscut sub numele de gtuirea von Neumann (von Neumann bottleneck), se datoreaz
concurenei pentru accesul la magistral ntre unitatea central de prelucrare i controlere.
2.9.
Comunicaia dintre diferite pri ale unui sistem de calcul se efectueaz ntr-una dintre
cele dou forme elementare paralel sau perial. Este vorba de modul de transfer al irurilor de
bii. n cazul comunicaiei paralele (parallel communication), toi biii dintr-un ir sunt
transferai simultan, fiecare pe o linie separat. n acest mod se realizeaz transferul rapid al
datelor, dar este necesar o linie de comunicaie cu un numr mare de cabluri electrice.
Comunicaia serial (serial communication) se bazeaz pe transmiterea irului bit cu
bit. Aceast metod este mai lent, dar linia de comunicaie este mai simpl.
Un exemplu obinuit l reprezint liniile telefonice, informaiile digitale fiind convertite
n semnale audio cu ajutorul unui dispozitiv numit modem (modulator-demulator). Datorit
limitrilor impuse de caracteristicile sistemului telefonic existent, o astfel de comunicaie nu se
poate realiza prin tehnicile de comunicaie paralel.
Viteza comunicaiei seriale se msoar n bii pe secund (bps), iar domeniul de variaie
se situeaz ntre cteva sute de bii pe secund i milioane de bii pe secund. O alt unitate
69
uzitat este rata band (band rate); ea se refer la viteza cu care se schimb starea liniei pe care
are loc comunicaia.
O alt metod de cretere a eficienei transferurilor de date (inclusiv stocarea datelor)
este compresia de date (data compression), adic reducerea numrului de bii necesar pentru
reprezentarea informaiilor.
n cazul reprezentrii unor iruri de caractere se poate recurge la un cod Huffman (cod
dependent de frecven). n cadrul acestui cod, lungimea unui ir de bii care reprezint un
caracter s fie invers proporional cu frecvena de utilizare a caracterului.
n acest fel se obine o reprezentare mai scurt a textului dect dac am utiliza un cod de
lungime uniform (codul ASCII). Eforturile de standardizare a tehnicilor de compresie a datelor
au dus la includerea acestora n multe din modemurile existente n prezent pe pia. Atunci cnd
2 modemuri care utilizeaz scheme de compresie compatibile comunic ntre ele, modemul
emitor comprim datele nainte de a efectua transmisia, iar modemul receptor decomprim
datele dup recepionarea lor.
Folosind asemenea soluii, modemurile pot obine rate de transfer echivalente cu 56700
bps, chiar dac de fapt sunt transmii numai 14400 bii pe secund, la o rat band de 1200.
Limbajul - main
Fiecare instruciune/main are o lungime de doi octei. Primii patru bii alctuiesc
cmpul codului de operaie, iar urmtorii doisprezece bii formeaz cmpul operandului.
n tabelul urmtor sunt prezentate instruciunile/main, n notaie hexazecimal, nsoite
de o scurt descriere. Literele R, S i T sunt utilizate n locul cifrelor hexazecimale pentru a
reprezenta identificatorul de registri. Literele X i Y sunt utilizate n locul cifrelor hexazecimale
n diferite cmpuri care nu reprezint registrii.
70
Cod
operaie
Operand
D e s c r i e r e
ncarc (LOAD) registrul R cu valoarea gsit n celula de
RXY
RXY
X Y.
Ex. 2 0 A 3 va avea ca rezultat nscrierea valorii A 3 n registrul
0.
Stocheaz (STORE) valoarea registrului R n celula de memorie a
RXY
ORS
RST
registrul R.
Ex. 5 7 2 6 are ca rezultat adunarea valorilor din registrii 2 i 6 i
plasarea rezultatului n registrul 7.
Adun (ADD) irurile de bii din registrii S i T ca i cum ar fi
reprezentai n virgul mobil i depune rezultatul n registrul R.
RST
71
Cod
operaie
Operand
D e s c r i e r e
Execut un sau logic (OR) ntre irurile de bii din registrii S i T i
depune rezultatul n registrul R.
RST
Ex. 7
C B 4 are ca rezultat executarea unui sau logic ntre coninutul
registrilor B i 4 i plasarea rezultatului n registrul C.
Execut un i logic (AND) ntre irurile de bii din registrii S i T i
RST
8 0 4 5
RST
ROX
A 4 0 3
RXY
000
72
1. Precizati care este ordinea corecta a celor trei pasi in care se executa o instructiune :
1. extragere, decodificare, executie
2. decodificare, extragere, executie
3. extragere, executie, recodificare
2. Care din afirmatiile despre instructiunile de transfer de date este adevarata :
1. manipuleaza date
2. dirijeaza modul de executie a programelor
3.
Se incarca un registru cu o
valoare din memorie.
Pasul 2
Pasul 3
Pasul 4
Pasul 5
Pasul 6
Stop.
73
74
UNITATEA DE NVARE 3
3.
Sistemele de operare
3.1.
Coada reprezint o structur de stocare n care obiectele (lucr-rile) sunt organizate dup
principiul primul intrat, primul ieit (FIFO First Input First Output).
75
Aceste sisteme permit executarea unui program care poart un dialog cu utilizatorul prin
intermediul terminalelor de control la distan sau al staiilor de lucru. Sistemele interactive au
dat natere conceptului de prelucrare n timp real (real time processing).
Dac sistemele interactive ar fi putut s se adreseze unui singur utilizator la un moment
dat, prelucrarea n timp real n-ar fi pus nici o problem. Datorit preului ridicat al
calculatoarelor este necesar ca fiecare main s deserveasc mai muli utilizatori.
O soluie la aceast problem este proiectarea si realizarea sistemului de operare n aa
fel nct s parcurg pe rnd diferitele activiti ce trebuie executate printr-un proces numit
partajarea timpului.
Mai exact, partajarea timpului (time sharing) se refer la tehnica de mprire a
timpului n intervale, denumite felii de timp (time slices), cu restricia executrii unei activiti
numai ntr-o felie timp la un moment dat. La sfritul fiecrei felii de timp, activitatea curent
este trecut n repaus i o alt activitate primea dreptul de execuie n urmtoarea felie de timp.
Prin baleierea rapid a activitatilor n acest mod se crea iluzia executrii simultane a mai multor
76
procese. n prezent partajarea timpului este utilizat att n sistemele cu un singur procesor, ct
i n sistemele multiprocesor, dar n cazul primelor este denumit de obicei multitasking (iluzia
c mai multe activiti sunt desfurate simultan).
Sisteme multiprocesor
Nevoia de a partaja informaiile i resursele ntre diferite calculatoare a condus la ideea
conectrii calculatoarelor pentru schimbul de informaii.
A aprut conceptul de structur de mai multe calculatoare mici, conectate ntr-o reea
(net work), prin care utilizatorii partajeaz resursele. Software-ul pentru controlul unei reele de
calculatoare poate fi privit ca un sistem de operare n reea.
3.2.
77
Interfaa
Partea dintr-un sistem de operare care definete modul de interaciune dintre sistemul de
operare i utilizatorii si poart numele de interfa (shell). Sarcina interfeei este aceea de a
permite comunicarea cu utilizatorul (sau utilizatorii) calculatorului.
Interfeele moderne realizeaz acest lucru folosind o interfea grafica cu utilizatorul
(graphical user interface - G U I), n care obiectele manipulate (fiiere i programe) sunt
reprezentate grafic pe ecran prin pictograme (incons). Astfel de sisteme permit utilizatorului s
execute comenzi prin selectarea i deplasarea pictogramelor pe ecran cu un dispozitiv denumit
"mouse". Vechile interfee comunicau cu utilizatorul numai prin mesaje de tip text (utiliznd
tastatura i ecranul). Interfaa realizeaz legtura ntre un utilizator i "inima" sistemului de
operare (vezi fig. 3.4).
78
Nucleul
Partea din interiorul unui sistem de operare este adesea denumit nucleu (kernel).
Nucleul conine acele componente software care efectueaz operaiile primare necesare pentru
funcionarea calculatorului.
Una din aceste componente este administratorul de fiiere (file manager), avnd
sarcina s coordoneze utilizarea facilitilor oferite de memoria mas a calculatorului.
Pentru simplificarea utilizrii calculatorului, sistemele de administrare a fiierului permit
gruparea lor n uniti denumite directoare (directory) sau dosare (folder). Astfel este posibil ca
utilizatorul s-i organizeze fiierele conform scopului propus, permind ca directoarele s
conin alte directoare, denumite subdirectoare, realizndu-se astfel o organizare ierarhizat a
informaiilor. Secvena de directoare care indic drumul pn la un anumit subdirector sau fiier
se numete cale (path).
Orice acces la un fiier se obine prin intermediul administratorului de fiiere, care
solicit deschiderea fiierului. Dac administratorul de fiiere accept cererea de acces, el
furnizeaz informaiile necesare pentru gsirea i manipularea fiierului. Informaiile sunt
stocate ntr-o zon din memoria principal care poart numele de descriptor de fiier (file
descriptor).
O alt component a nucleului const dintr-o colecie de "drivere" de dispozitiv (device
drivers) - module software care comunic cu controlerele (sau uneori direct cu dispozitivele
periferice) pentru efectuarea operaiilor de ctre periferice.
Fiecare "driver" de dispozitiv este proiectat n mod individual pentru un anumit tip de
controler sau dispozitiv (imprimant, disc, monitor...) i traduce cererile formulate n termeni
generali ntr-o secven de instruciuni specifice controler-ului sau dispozitivului ataat acelui
driver.
Alt component a nucleului sistemului de operare este administratorul de memorie
(memory manager), nsrcinat cu activitatea de coordonare a utilizrii memoriei principale a
calculatorului. Aceast component este foarte utilizat n mediile multiutilizator sau
multitasking.
Sarcina administratorului de memorie se complic atunci cnd cantitatea total de
memorie solicitat depete dimensiunea memoriei disponibile. n acest caz, administratorul de
memorie poate crea iluzia unui spaiu suplimentar de memorie rotind programele i datele ntre
79
memoria principal i disc. Aceast memorie iluzorie este denumit memorie virtual (virtual
memory).
Pornirea calculatorului
Lansarea n execuie a sistemului de operare se realizeaz prin intermediul unei proceduri
cunoscute sub numele de ncrcarea sistemului de operare (boot straping) ; ncrcare
(booting).
Zona de memorie n care se ateapt s se gseasc programul pentru execuie se
numete memorie permanent (read-only memory
memoria intern a unui calculator de uz general este memoria volatil, coninutul memoriei
pierzndu-se la oprirea calculatorului.
n scopul ncrcrii sistemului de operare al unui calculator de uz general, memoria
ROM conine un program de mici dimensiuni, denumit bootstrap. La pornirea calculatorului
acest program se execut automat i n multe cazuri obiectul transferului (de pe suportul de
stocare de mas n memoria principal a calculatorului - vezi fig. 3.5) este chiar sistemul de
operare. Dup plasarea n memorie a sistemului de operare, programul bootstrap instruiete VC
s sar la zona de memorie care-l conine.
Din acest moment sistemul de operare devine activ i preia controlul calculatorului.
80
3.3.
Conceptul de proces
Unul din cele mai importante concepte, n cadrul sistemelor de operare, este deosebirea
dintre un program i aciunea de execuie a acestuia.
Programul reprezint un set static de directive, iar execuia lui este o activitate dinamic,
ale crei proprieti se modific n timp. Aceast activitate poart numele de proces. Procesul
este caracterizat de starea procesului. Starea procesului reprezint un instantaneu al functionarii
calculatorului la un moment dat. Un singur program poate fi asociat n acelai timp mai multor
procese. (Ex.: Doi utilizatori pot edita simultan documente diferite, ntr-un sistem multiutilizator
cu partajarea timpului, sistemul de operare utiliznd o singur copie a programului de editare).
81
Sarcina sistemului de operare este s coordoneze mai multe procese care concureaz
pentru utilizarea feliilor de timp.
Coordonarea implic alocarea resurselor necesare fiecrui proces (dispozitive periferice,
spaiu n memoria principal, acces la date i acces la unitatea central de prelucrare),
mpiedicarea interferenei proceselor independente i asigurarea schimbului de informaii intre
procese care trebuie s realizeze acest lucru. Pentru aceast tip de comunicaie se folosete
numele de comunicaie ntre procese (interprocess communication).
Administrarea proceselor
Operaiile asociate coordonrii proceselor sunt efectuate de ctre secveniator
(scheduler) i executor (dispatcher), din nucleul sistemului de operare.
Secveniatorul memoreaz o nregistrare a proceselor prezente n sistemul de calcul,
introduce noi procese i le elimin pe cele care s-au terminat. Pentru a putea urmri toate
procesele, secveniatorul le nregistreaz intr-un bloc de informaii denumit tabel de procese
(process table), n memoria principal. n acest tabel sunt memorate informaii, ca: zona de
memorie alocat procesului, prioritatea procesului, dac procesul este n ateptare etc.
Executorul este componenta nucleului care asigur execuia proceselor active,
programate de secveniator.
ntr-un sistem cu partajarea timpului, execuia programelor se realizeaz prin mpartirea
timpului n intervale scurte, fiecare purtnd numele de felie de timp (time slice) i avnd o
durat de cca 50 de milisecunde. Procedura de trecere de la un proces la altul poart numele de
comutare ntre procese (process switch).
La primirea unui semnal de ntrerupere, unitatea central de prelucrare completeaz
ciclul curent de extragere-decodificare- execuie salveaz poziia din procesul curent i ncepe
execuia unui program de tratare a ntreruperilor (interrupt handler), care este stocat la o
locaie predeterminat din memoria principal. Programul de tratare a ntreruperilor este o
component a executorului. Efectul semnalului de ntrerupere este de suspendare a procesului
curent i de transfer a controlului ctre executor.
82
Modelul client/server
Modulele sistemului de operare (ntr-un sistem cu partajarea timpului) concureaz ntre
ele sub controlul executorului pentru feliile (cuantele) de timp.
Pentru a dobndi accesul la un fiier aflat pe un dispozitiv de stocare de mas, orice
proces trebuie s obin mai nti informaiile necesare de la administratorul de fiiere.
Pentru simplificarea comunicaiei ntre procese, componentele unui sistem de operare
sunt adesea proiectate n conformitate cu modelul client/server:
83
Figura 3.8 - Structuri de comunicaie ntre clieni i servere, care opereaz pe un calculator sau
sunt distribuite pe mai multe calculatoare
Acest model definete cele dou roluri fundamentale pe care le pot juca diferitele
componente: client (emite cereri ctre uniti, respectiv server (satisface cererile emise de clieni).
Aplicarea modelului client/server n proiectarea software-ului conduce la uniformizarea tipurilor
de comunicaii care au loc n sistem.
Dac componentele unui sistem de operare sunt proiectat ca servere i clieni, comunicaia
ntre componentele din cadrul aceluiai calculator sau ntre componente ale unor calculatoare
aflate la mare distan unele de altele - figura 3.8., are aceeasi forma.
Att timp ct o reea de calculatoare permite trimiterea de cereri i rspunsuri ntre
calculatoare, mai muli clieni i mai multe servere se pot distribui n orice configuraie
convenabil, pentru reeaua respectiv.
84
3.4.
Semafoare
S lum n discuie un sistem de operare cu partajarea timpului i la care este conectat o
singur imprimant. Dac un proces este n situaia de a-i tipri rezultatele, el trebuie s solicite
sistemului de operare accesul la programul driver al imprimantei. n acest moment, sistemul de
operare trebuie s decid dac satisface aceast cerere, verificnd dac imprimanta nu este
cumva utilizat de alt proces. Dac imprimanta este liber, sistemul de operare trebuie s acorde
permisiunea utilizrii ei i s permit procesului s continue.
Dac dou procese ar cpta simultan acces la imprimant, rezultatul n-ar prezenta nici o
utilitate pentru nici unul dintre ele. Soluia ar reprezenta-o utilizarea unui indicator (flag) un bit
n memoria ale crui stri sunt: 1 (setat) i 0 (ters).
Indicatorul ters arat c imprimanta este liber, iar setat indic faptul c imprimanta este
deja alocat. Dei aceast soluie pare bun la prima vedere, exist totui o problem. Operaia de
testare i eventual de setare a indicatorului necesit mai muli pai-main. Nu este exclus ca
operaia s fie ntrerupt dup detectarea unui indicator nul, dar nainte ca indicatorul s fie setat,
ceea ce face posibil apariia situaiei urmtoare:
Presupunem c imprimanta este disponibil i un proces cere utilizarea sa. Indicatorul care
corespunde imprimantei este verificat i gsit ca fiind ters, ceea ce indic c imprimanta este
disponibil. Dar n acel moment procesul este ntrerupt i alt proces i ncepe felia de timp, i
acest nou proces solicit utilizarea imprimantei. Indicatorul imprimantei este verificat din nou i
gsit tot ters, deoarece procesul precedent a fost ntrerupt nainte de a-l putea seta. n consecin,
85
sistemul de operare permite celui de al doilea proces s nceap utilizarea imprimantei. Se ajunge
deci la o situaie n care dou procese utilizeaz simultan aceeai imprimant.
Problema este c operaia de testare i (eventual) de setare a indicatorului trebuie s fie
terminat fr a fi ntrerupt prin utilizarea instruciunilor de invalidare i validare a ntreruperilor,
disponibile n limbajele-main.
O alt metod o reprezint utilizarea instruciunii de testare i setare (test-and-set), care
este disponibil n multe limbaje-main. Unitii centrale de prelucrare i se cere s citeasc
valoarea unui indicator, s o memoreze i apoi s seteze indicatorul, toate acestea printr-o singur
instruciune-main. Avantajul acestei metode este c, de vreme ce unitatea central termin
ntotdeauna de executat o instruciune nainte de a sesiza o ntrerupere, operaia de testare i setare
a indicatorului, implementat cu o singur instruciune, nu poate fi ntrerupt.
Un indicator implementat corect, ca mai sus, poart numele de semafor (semaphore). Prin
similitudine o secven de instruciuni care trebuie executat fr ntreruperi corespunde unei
poriuni de cale ferat pe care poate trece, la un moment dat, un singur tren. O asemenea secven
de instruciuni poart numele de zon critic (critical region). nainte de a intra ntr-o zon
critic, un proces trebuie s gseasc nul semaforul asociat ei i s-l seteze, apoi trebuie s tearg
semaforul dup ieirea din zona critic.
Interblocarea
O alt problem care poate aprea n timpul alocrii resurselor este interblocarea
(deadlock) situaia n care desfurarea a dou sau mai multe procese este blocat, deoarece
fiecare dintre ele ateapt acces la resursele alocate celuilalt.
Un alt exemplu apare n situaia n care procesele creeaz noi procese pentru efectuarea
unor operaii mai simple. Dac secveniatorul nu are destul spaiu n tabelul de procese i
fiecare proces din sistem trebuie s creeze un proces suplimentar nainte de a-i termina treaba,
atunci nici un proces nu va putea continua.
La o analiz mai atent, constatm c poate s apar o interblocare numai dac sunt
satisfcute simultan urmtoarele trei condiii:
1. Exist o competiie pentru resurse care nu pot fi partajate;
2.
de
anumite
sortare.
87
88
89
91
UNITATEA DE NVARE 4
4.
Algoritmii
4.1.
Conceptul de algoritm
4.2.
Reprezentarea algoritmilor
Primitive
Reprezentarea unui algoritm nu se poate face n absena unui limbaj. n cazul oamenilor
acest limbaj poate fi limbajul natural uzual sau limbajul imaginilor. Aceste canale naturale de
comunicare duc la nenelegeri, termenii folosii pot avea mai multe sensuri.
Informatica abordeaz aceste probleme stabilind o mulime bine definit de blocuri
elementare care stau la baza reprezentrii algoritmilor. Aceste blocuri elementare poart numele
de primitive. Definirea precis a primitivelor elimin ambiguitatea i permite un grad uniform de
detaliere.
O mulime de reguli care guverneaz modul n care aceste primitive pot fi combinate
pentru reprezentarea ideilor mai complexe constituie un
primitiv const din dou elemente: sintaxa i semantica. Sintaxa se refer la reprezentarea
simbolic a primitivei, n timp ce semantica se refer la conceptul reprezentat (semnificaia
primitivei respective).
Pentru a reprezenta algoritmi destinai calculatorului utiliznd un ansamblu de primitive,
se poate porni de la instruciunile pe care calculatorul tie s le execute. Detalierea algoritmilor la
acest nivel este incomod, n mod normal se utilizeaz primitive de nivel mai nalt, construite pe
baza primitivelor de nivel sczut oferite de limbajul-main. Rezult astfel un limbaj de
programare formal, n care algoritmi pot fi exprimai ntr-o form conceptual mai nalt dect n
limbajul-main.
93
Pseudocodul
Vom prezenta n continuare un sistem de notare mai intuitiv, cunoscut sub numele de
pseudocod. O metod de obinere a pseudocodului este de a relaxa pur i simplu regulile
limbajului formal n care va fi exprimat varianta final a algoritmului.
Ceea ce ne propunem este s discutm despre dezvoltarea i prezentarea algoritmilor fr
s ne oprim asupra unui limbaj de programare. Ne propunem s reprezentm anumite structuri
care pot deveni primitive. Printre structurile mai des ntlnite remarcm:
1. Selectarea ntre dou activiti n funcie de ndeplinirea unei condiii. Fiecare dintre
aceste instruciuni poate fi rescris astfel nct s respecte structura:
if (condiie) then (activitate)
else (activitate)
, unde am folosit cuvintele-cheie if (dac), then (atunci) elese (astfel) pentru a introduce
substructurile din cadrul structurii principale i paranteze pentru delimitarea granielor dintre
aceste substructuri.
Adoptnd pentru pseudocod aceast structur sintactic, am obinut o metod uniform de
exprimare a unei structuri semantice des ntlnite. n cazurile n care activitatea alternativ (else)
lipsete, vom utiliza sintaxa mai scurt:
if (condiie) then (activitate).
2. alt structur algoritmic [ntlnit] este executarea repetat a unei instruciuni sau a unei
secvene de instruciuni atta timp ct o anumit condiie este adevrat. Modelul
pseudocodului este:
while (condiie) do (activitate).
O astfel de instruciune nseamn verificarea condiiei, executarea activitii i revenirea
la verificarea condiiei. Cnd condiia nu mai este ndeplinit, se trece la executarea instruciunii
care urmeaz. Uneori ne referim la anumite valori prin intermediul unor nume sugestive. Pentru
astfel de asocieri se utilizeaz:
assign (nume) the value (expresie)
, unde nume este un nume descriptiv, iar expresie indic valoarea care este asociat numelui
respectiv.
Lizibilitatea programului poate fi mbuntit prin identare (adic scriere poziionat pe
condiii logice).
94
procedure Salutri
assign Count the value 3
while Counct 0 do
(tiprete mesajul Hello i
assign Count the value Count 1).
Atunci cnd avem nevoie de serviciile procedurii Sort, va fi identificat lista are se substituie listei
List. (Ex.):
4.3.
Dezvoltarea algoritmilor
dezvoltarea algoritmului;
i ca potenial
96
97
4.4.
Structuri iterative
98
Acest algoritm este folosit pentru listele de mici dimensiuni sau cnd utilizarea lui este
dictat de alte considerente.
Controlul ciclurilor
Utilizarea repetat a unei instruciuni sau a unei secvene de instruciuni este unul din
conceptele algoritmice cele mai importante. O metod de implementare a acestui concept este
structura iterativ denumit ciclu/bucl (loop).
n cadrul buclei o serie de instruciuni, numit corpul buclei, este executat n mod repetat
sub supravegherea unui proces de control.
Instruciunea while de mai sus reprezint o structur ciclic deoarece execuia ei conduce
la parcurgerea ciclic a secvenei: testeaz condiia; execut corpul ciclului; testeaz condiia;
99
execut corpul ciclului, ... , testeaz condiia, pn cnd condiia este ndeplinit. S analizm mai
ndeaproape i instruciunea de control. Controlul unui ciclu (bucle) const n trei activiti:
iniializare, testare, modificare, aa cum se prezint i n fig. 4.3:
iniializare =
do
(activitate) care se reprezint prin schema logic (flowchart) din fig. 4.4. n cazul structurii while
testarea condiiei de ncheiere se face naintea executrii corpului ciclului.
100
A doua structur tip bucl, reprezentat n fig 4.5., solicit s se execute mai nti corpul
ciclului i dup aceea s se testeze condiia de ncheiere. Pentru reprezentarea schemei din fig. 4.5.
n pseudocod se utilizeaz urmtoarea formulare :
repeat (activitate) until (condiie).
Ca exemplu suplimentar de utilizare a structurilor iteractive vom prezenta algoritmul de
sortare prin inserare. Algoritmul de sortare prin inserare sorteaz o list extrgnd n mod repetat
cte un articol i inserndu-l n poziia corespunztoare ordinii dorite.
procedure Sort (lista)
if (lista conine dou sau mai multe articole) then
[(umbrete poriunea din lista de la al doilea pn la ultimul articol;
repeat (elimin umbra din primul articol al poriunii umbrite din
list i identific acest articol drept pivot; mut pivotul
ntr-o locaie temporar lsnd n list un spaiu gol);
while (exist un nume deasupra spaiului i acest nume este mai
mare dect pivotul)
do (mut numele de deasupra spaiului n spaiul gol,
lsnd un spaiu deasupra numelui respectiv;
mut pivotul n spaiul gol din list)
until (orice umbr din list a fost eliminat).
4.5.
Structuri recursive
Se observ c procedura permite i rezolvarea cazului cutrii ntr-o list goal dac va fi
completat, obinndu-se pentru cautarea binara programul n pseudocod prezentat n fig. 4.8.
procedure search (lista, Target Value
if (lista este goal)
then (declar cutarea ncheiat cu eec)
else [selecteaz mijlocul listei cu articol de test; execut una dintre urmtoarele
blocuri de instruciuni, n funcie de situarea valorii-int Target Value fa de
articolul de test
Target Value = articolul de test;
(declar cutarea ncheiat cu succes)
Target Value < articolul de test
(aplic procedura search pentru a vedea dac Target
4.6.
Eficien i corectitudine
103
Eficiena algoritmilor
Dei calculatoarele actuale execut milioane de instruciuni pe secund, eficiena
proiectrii algoritmilor rmne o preocupare important, deoarece adesea diferena dintre un
algoritm eficient i unul ineficient constituie diferena ntre o soluie practic i una inaplicabil.
S analizm o problem practic pentru a nelege mai bine eficiena algoritmilor.
Problema const n regsirea nregistrrii unui student din mulimea nregistrrilor studenilor
(cca 30.000 studeni) din cadrul unei universiti. Pentru nceput vom analiza modul de regsire
folosind algoritmul de regsire secvenial.
Acest algoritm parcurge lista de la nceput, comparnd fiecare articol cu numrul cutat.
Necunoscnd valoarea-int, nu putem spune ct de departe va merge n list aceast cutare.
Statistic ne ateptm ca media s fie pe la jumtatea listei. Prin urmare, n medie algoritmul
secvenial va investiga cca 15.000 de nregistrri pentru fiecare cutare. Dac regsirea i
verificarea unei nregistrri dureaz o milisecund, o astfel de cutare dureaz cca 15 secunde. O
zi de lucru are 28.800 secunde; dac s-ar lucra continuu, algoritmul de cutare secvenial va
permite s se efectueze cca 1.9002.000 de cutri pe zi. Deci regsirea celor 30.000 de studeni
va dura cca. 15 zile.
Acum a venit rndul s analizm cutarea binar. Aceast cutare ncepe prin a compara
valoarea-int cu articolul situat n mijlocul listei. Este posibil s nu gseasc articolul cutat, dar
se reduce aria cutrii la jumtate din lista iniial. Deci dup prima interogare, cutarea binar
mai are de luat n calcul cel mult 15.000 de nregistrri. Dup a doua interogare rmn cel mult
7.500 i aa mai departe, pn la cea de a 15-a interogare cand se gsete articolul cutat. Dac
o interogare dureaz o milisecund, atunci regsirea unei anumite nregistrri se va face n
maximum 0,015 secunde. Aceasta nseamn c pentru a gsi nregistrrile corespunztoare ale
celor 30.000 de studeni, este nevoie de cel mult 7,5 minute.
Cele dou rezultate arat clar o mbuntire substanial a timpului de cutare folosind
algoritmul de cutare binar.
104
demonstra corectitudinea
programelor prin aplicarea tehnicilor logicii formale. Deci, ideea de baz este reducerea
verificrii la o procedur de logic formal care s nu fie afectat de concluziile care pot rezulta
din aplicarea unor argumente intuitive. Pentru demonstrarea corectitudinii unui program vom
porni de la presupunerea c la nceputul execuiei acestuia sunt ndeplinite un numr de condiii,
numite precondiii.
Pasul urmtor const n evaluarea modului n care consecinele acestor precondiii se
propag prin program. Cercettorii au analizat diverse structuri de programe pentru a vedea
cum este afectat execuia lor de o anumit afirmaie despre care se tie c este adevrat nainte
de execuia structurii respective. Dac, de exemplu, se tie c afirmaia este adevrat nainte de
execuia structurii if (condiie)
then (instruciunea 1)
else (instruciunea 2)
, atunci imediat nainte de execuia instruciunii 1 putem spune c att afirmaia respectiv, ct i
condiia de test sunt adevrate, n timp ce dac se execut instruciunea 2 tim c sunt adevrate
afirmaia respectiv i negarea condiiei de test. S lum ca exemplu ciclul repeat din fig 4.9:
106
107
b. if(condiie) then(activitate)
c. if(condiie) do(activitate)
18. Selectarea ntre dou activiti n funcie de ndeplinirea unei condiii, poate fi
reprezentat prin:
a. Funcia If
b. Funcia While
c. Funcia Assign
19. Funcia While const n:
a. Executarea repetat a unei instruciuni sau a unei secvene de instruciuni atta
timp ct o anumit condiie este adevrat.
b. Executarea unei instruciuni folosind un numr exact de pai
c. Executarea unei instruciuni la infinit
20. Modelul pseudocod al instruciunii while este:
a. while(condiie) do(actvitate)
b. if(condiie) while(activitate)
c. do(activitate) if(condiie)
21. Definii funcia while i ilustrai folosirea acesteia printr-un exemplu n pseudocod.
22. Definii pe scurt funcia assign i folosirea acesteia printr-un exemplu n pseudocod.
23. Modelul pseudocod pentru funcia assign este:
a. assign(nume) the value(expresie)
b. assign(instruciune) do(activitate)
c. do(activitate) while(assign(instruciune))
24. Definii noiunea de procedur i ilustrai folosirea acesteia printr-un exemplu
25. Identificai numele procedurii din urmtorul cod:
procedure Salutri
assign Count the value 3
while Counct 0 do
(tiprete mesajul Hello i
assign Count the value Count 1)
109
110
UNITATEA DE NVARE 5
5.
Limbaje de programare
5.1.
Perspective istorice
Primele generaii
La nceput, programarea presupune o metod foarte laborioas, anume transpunerea
algoritmilor respectivi n limbaj-main, suplimentar fa de proiectarea algoritmului. Dup
localizarea i corectarea erorilor, se poate spune c programul este utilizabil.
Prima simplificare a procesului de programare a fost s se renune la reprezentarea
operaiilor i operatorilor sub form de cifre hexazecimale, atribuindu-se memoria pentru
instruciunile limbajului-main. n cazul operanzilor s-au stabilit reguli pentru atribuirea unor
nume descriptive (identificatori) pentru locaiile de mnemonice i utilizarea acestor nume n
instruciuni.
Iniial programatorii foloseau aceste notaii pentru dezvoltarea programului pe hrtie,
ulterior translatndu-l ntr-o form utilizabil de calculator. Procesul de translatare este un tip de
activitate care poate fi realizat direct de calculator. Utilizarea mnemonicelor s-a oficializat ca
limbaj de asamblare, s-a creat asamblorul, care translateaz programele scrise n limbaj de
asamblare ntr-o form compatibil cu calculatorul.
Limbajele de asamblare au aprut ca un pas uria pe drumul ctre medii de programare
mai eficiente. Limbajele de asamblare, ca limbaje de generaia a doua, prezentau multe
avantaje fa de limbajele-main (prima generaie), dar nu constituiau un mediu de
programare foarte propice.
Orice limbaj de asamblare este dependent de main, deoarece instruciunile folosite se
refer la caracteristicile unui anumit calculator.
Alt dezavantaj al limbajelor de asamblare este acela c programul trebuie gndit la un
nivel foarte cobort (instruciunile urmresc pas cu pas limbajul-main), n loc s se
concentreze asupra unei soluii globale a problemei de rezolvat.
111
Pe baza acestor concepte s-au dezvoltat limbaje de programare, din a treia generaie, la
care primitivele erau de nivel nalt i independente fa de main (calculator). Principala
preocupare n dezvoltarea limbajelor de programare din generaia a treia a fost identificarea unui
ansamblu de primitive de nivel nalt, similare pseudocodului despre care am discutat, care s
permit dezvoltarea produselor software. Dup identificarea setului de primitive la nivel nalt, a
fost scris un program, numit translator, care translateaz programele exprimate n primitive de
nivel nalt n programe n limbaj-main. Aceste programe
Independena fa de main
Un program scris ntr-un limbaj din generaia a treia poate fi utilizat la orice calculator,
utiliznd pur i simplu asupra lui compilatorul corespunztor.
O component a problemei portabilitii este faptul c n unele cazuri nu s-a ajuns la un
acord cu privire la definiia corect (exact) a unui anumit limbaj. Pentru a elimina probleme de
acest tip, American National Standards Institute (ANSI) i International Standars Organization (I
S O) au adoptat i publicat standarde pentru multe din limbajele cele mai rspndite.
Faptul c mainile pot acum s rspund la instruciuni de nivel nalt a permis
specialitilor s vizeze medii de programare n care oamenii s poat s comunice cu maina
direct prin intermediul unor concepte abstracte specifice gndirii umane, fr s mai fie necesar
transpunerea ntr-o form compatibil mainii.
De asemenea, exist preocupri pentru realizarea unor maini (calculatoare) care s
participe nu numai la execuia algoritmilor, ci i la dezvoltarea algoritmilor. Rezultatul acestor
preocupri a condus la apariia unei game de limbaje de programare n continu diversificare,
care cu greutate pot fi clasificate n generaii.
Ca regul general, termenul de limbaje de programare din generaia a patra se refer
la pachetele software care permit utilizatorilor fr o pregtire de specialitate s poat adapta
produsele propriilor lor necesiti. n aceast categorie se ncadreaz sistemele de calcul tabelar,
sistemele de baze de date, pachete pentru grafic, procesoare de text, aceste pachete sunt adesea
grupate ntr-un singur sistem integrat.
Termenul de limbaje din generaia a cincea este folosit adesea cu referire la
programarea declarativ i n special pentru ceea ce se numete programarea logic.
112
Paradigme de programare
Dezvoltarea istoric a limbajelor de programare se poate reprezenta printr-o diagram cu
mai multe piste, n care cile de dezvoltare (conform diferitelor paradigme) sunt reprezentate
separat (fig. 5.1). Apar astfel patru piste care ilustreaz patru paradigme diferite: funcional,
orientat spre obiecte, imperativ, declarativ, limbajele asociate fiecruia fiind nfiate
ntr-un mod care s arate evoluia lor n timp, ceea ce nu nseamn c aceste limbaje au evoluat
neaprat unele din altele.
Programming). n aceast abordare datele sunt considerate a fi obiecte active, spre deosebire
de rolul pasiv care le este atribuit n paradigma imperativ.
n abordarea orientat pe obiecte lista e considerat a fi un obiect care se compune din
lista propriu-zis, la care se adaug un ansamblu de rutine pentru gestionarea ei. Programul
care lucreaz cu lista nu are nevoie de algoritmi pentru efectuarea acestor operaii, ci folosete
rutinele oferite de obiect. Limbajele de programare orientate spre obiecte sunt Visual Basic
(Microsoft Corporation), Delphi (Borland International) i Java.
5.2.
114
, unde: Effective Alt, Altimeter sunt variabile, 392 este o valoare literal.
ntr-o linie de program ce utilizeaz constante acelai lucru se scrie astfel:
assign Effective Alt the value (Altimeter Airpor Alt)
const Aieport Alt = 392
, (instruciunea declarativ const asociaz constanta AirporAlt cu valoarea 392, iar numele
Airpot Alt poate fi folosit oriunde n program n locul valorii 392).
Categorii de date
Instruciunile declarative identific i tipul datelor. Tipul datelor determin modul n
care este interpretat irul respectiv de bii, ct i operaiile care pot fi efectuate cu data
respectiv. Cele mai utilizate tipuri de date sunt: ntreg (integer),
real (real),
caracter
(character) i boolean.
Tipul integer se refer la date numerice ntregi, reprezentate n complement fa de doi.
Se pot efectua cu aceste numere operaii aritmetice clasice i comparaiile.
Tipul real se refer la numere reale, stocate n general n virgul mobil. Activitile
care trebuie executate pentru adunarea a dou numere reale sunt diferite de cele pentru adunarea
doi ntregi.
Tipul character se refer la date care constau din simboluri, codificate de obicei n
ASCII. Asupra acestui tip de date se pot efectua: comparaii asupra poziionrii alfabetice a unui
115
simbol fa de altul; testarea apariiei unui ir de simboluri n cadrul altui ir, concatenarea unui
ir de simboluri la sfritul altuia pentru a forma un ir de mai lung.
Tipul boolean se refer la acele date cu valori doar de adevrat sau fals, ce apar ca
urmare a efecturii unor comparaii. Operaiile compatibile cu acest tip de date sunt verificrile
dac o valoare este adevrat sau fals.
n figura 5.2 sunt prezentate exemple de astfel de instruciuni declarative n Pascal,
C, C++, Java i FORTRAN. n aceste exemple variabilele Length i Width sunt declarate de
tip real, iar Price, Tax, Total de tip ntreg.
Structuri de date
Un concept asociat instruciunilor declarative este acela de structur de date care se
refer la forma conceptual a datelor. Datele pe lng tip, deja explicat n capitolul anterior, au i
o lungime (mrime).
Un ir de caractere este un caz particular al unei structuri generice de date care poart
numele de vector omogen (homogeneous array). Pentru a declara un astfel de vector, majoritatea
116
Vectori declarai a C
char Name [8];
int Scores [2] . [9].
Scores:
Exist i vectori neomogeni, din punct de vedere al tipului de date incluse, numii vectori
heterogeni (heterogenous array). n fig. 5.4 se prezint modul de declarare a unui asemenea
vector.
Dup declararea vectorului se poate face referire la el n ntregime, prin nume, iar la
fiecare component a sa prin poziia acesteia. n cazul vectorilor omogeni componentele sunt
identificabile prin indici care specific linia, coloana etc.
117
Vectori declarai n C
Struct
(char Name [8];
int Age ;
float Still Rating;
Employe.
Instruciuni de atribuire
Instruciunea de atribuire solicit ca unei variabile s i se atribuie o valoare. O astfel de
instruciune are urmtoarea sintax: variabila urmat de un simbol care reprezint operaia de
atribuire i d e o expresie care indic valoarea ce se atribuie.
n limbajele C, C++ instruciunea Total = Price + Tax cere ca variabilei Total s-i fie
atribuit valoarea sumei dintre Price i Tax.
118
Instruciuni de control
Instruciunile de control sunt instruciuni imperative care modific ordinea de execuie a
programului. Aceste instruciuni au strnit cele mai multe controverse, iar principalul vinovat
este cea mai simpl dintre ele, go to. Aceast instruciune furnizeaz o metod de a continua
programul din alt punct, care a fost identificat printr-o etichet (nume, numr). Includerea unei
astfel de instruciuni ntr-un limbaj de nivel nalt conduce la scrierea unor secvene foarte
nclcite. Pentru evitarea unor asemenea situaii, limbajele moderne de programare dispun de
instruciuni de control mai elaborate (ex. if then else) care permit ramificarea programului
prin intermediul unei singure structuri sintactice.
n figura 5.5 sunt prezentate cteva din cele mai utilizate structuri de ramificare i
instruciuni de control, precum i modul lor de reprezentare n diverse limbaje.
Figura 5.5 a - Structuri de control i reprezentarea lor n Pascal, C, C++, Java i Ada
119
Fig 5.5. b. Structuri de control i reprezentarea lor n Pascal, C, C++, Java i Ada
O alt structur larg folosit este cea numit for. Ea este similar cu structura while
utilizat n pseudocod, dar iniializarea, modificarea i ncheierea ciclului sunt ncorporate ntr-o
singur instruciune.
Comentarii
Experiena arat c orict de bine ar fi proiectat un limbaj de programare i orict de
bine ar fi folosit, informaiile suplimentare sunt utile ntotdeauna pentru orice doritor care
ncearc s neleag un program de oarecare complexitate. n acest scop limbajele de
programare furnizeaz o sintax pentru inserarea n program a unor instruciuni explicative
numite comentarii. Documentarea constituit din aceste comentarii se numete documentaie
intern
Documentaia intern este ignorat de ctre translator. pentru a include comentariile n
program, limbajele de programare furnizeaz dou metode de delimitare a acestora de restul
programului. Fie se include comentariul ntre nite marcaje speciale, fie se marcheaz doar
nceputul comentariului, acesta urmnd s ocupe tot rndul sau chiar mai multe rnduri (n acest
caz se adaug i la nceputul rndurilor suplimentare semnul specific comentariului. Este
recomandabil ca toate comentariile care se refer la un anumit modul de program s fie grupate
ntr-un singur loc.
5.3.
Module de program
Proceduri
Procedura este un modul de program scris indepndent de programul principal, dar legat
de acesta printr-un proces de transfer/revenire conform fig.5.7.
Cnd este nevoie de serviciile procedurii, controlul se transmite acesteia (instruciunea
JUMP, limbajul-main), iar dup execuie controlul revine modulului principal.
Ca regul general, variabilele declarate n interiorul procedurii sunt variabile locale (se
utilizeaz numai n interiorul procedurii). Sunt totui cazuri n care unele date trebuie utilizate n
comun de mai multe module. Variabilele utilizate ntr-o asemenea situaie se numesc variabile
globale.
121
Parametrii
Folosirea n comun a unor informaii prin utilizarea unor variabile globale nu este
recomandat, deoarece acest mod de lucru mascheaz activitile modulelor de program care
partajeaz datele respective.
Se recomand identificarea datelor partajate de mai multe module de program, ceea ce se
poate face prin includerea explicit a listei acestora n instruciunea prin care se solicit execuia
procedurii. Astfel i antetul procedurii trebuie s conin o list a variabilelor crora li se
atrib7uie valori la apelarea procedurii. Elementele care compun aceste dou liste se numesc
parametri.
La apelarea procedurii, lista de parametri din modulul apelant este asociat, element cu
element, listei de parametri din antetul procedurii. Valorile parametrilor din modulul apelant
sunt transferate efectiv parametrilor corespondeni din procedur.
Dup aceea, procedura este executat, iar valorile (eventual modificate) sunt transferate
napoi ctre modulul apelant. n alte situaii transferul poate avea loc ntr-un singur sens, fie
ctre procedur, fie ctre modulul apelant.
Un avantaj major al acestui sistem de substituire este acela c aceeai procedur poate fi
apelat de mai multe ori, cu diferite seturi de date.
122
Funcii
Termenul de funcie se refer la un modul de program asemntor unei proceduri, cu
deosebirea c o valoare se transfer napoi ctre programul principal nu prin intermediul listei de
parametri, ci ca valoare a funciei. Altfel spus, valoarea respectiv este asociat numelui
funciei, aa cum se asociaz o valoare unei variabile. n cazul funciei, valoarea se obine prin
executarea instruciunilor din cadrul funcie.
Instruciuni de intrare/ieire
Procedurile i funciile sunt metode foarte bune de a extinde caracteristicile unui limbaj
de programare.
Dac limbajul nu furnizeaz o anumit operaie ca primitiv, se poate scrie o procedur
sau o funcie care s efectueze acea operaie, iar apoi se va apela la modulul respectiv ori de cte
ori este nevoie. n majoritatea limbajelor, operaiile de intrare/ieire sunt implementate n acest
mod, cu diferena c procedurile i funciile apelate sunt de fapt rutine ale sistemului de operare.
Pentru a citi o valoare de la tastatur i a o atribui variabilei Value, n Pascal se scrie:
readln (Value),
, iar pentru a afia valoarea respectiv pe ecran:
writeln (Value).
Limbajul C++, fiind un limbaj orientat pe obiecte, furnizeaz dou obiecte prefabricate,
cin i cout, care reprezint dispozitivul standard de intrare i, respectiv, dispozitivul standard de
ieire. Aceeai aciune de mai sus n limbajul C++ se va scrie astfel:
cin >>Value; [citirea valorii de la tastatur]
cout << Value; [afiarea variabilei Value pe ecran].
5.4.
Implementarea limbajelor
n continuare vom analiza procesul de convertire a unui program scris ntr-un limbaj de
nivel nalt ntr-o form executabil de main.
123
Procesul de translatare
Procesul de convertire a unui program dintr-un limbaj n altul se numete translatare.
Programul n forma iniial este programul surs, iar versiunea translatat este programul
obiect.
Procesul de translatare const din trei activiti: analiza lexical, analiza sintactic
(parsing) i generarea codului.
Analiza lexical este procesul prin care se identific irurile de simboluri din programul
surs are reprezint entitile distincte. Pe msur ce analizorul lexical identific grupuri de
simboluri care constituie entiti distincte, le clasific n funcie de ceea ce reprezint o valoare
numeric, un cuvnt, un operator aritmetic, ... i genereaz un model de bii cunoscut sub
numele de simbol (token), care arat clasa entitii respective.
Analiza sintactic este un proces de identificare a structurii gramaticale a programului i
de recunoatere a rolului fiecrei componente. Majoritatea limbajelor de programarea sunt
limbaje cu format liber, ceea ce nseamn c locul instruciunilor n program nu are important.
Pentru ca un calculator s poat analiza sintactic un program scris ntr-un limbaj cu format liber
trebuie ca analizorul s-l identifice indiferent de spaiile utilizate n programul surs.
n acest scop majoritatea limbajelor folosesc semnele de punctuaie, cum ar fi punct i
virgul, pentru a marca sfritul unei instruciuni, precum i de cuvinte-cheie (cuvinte
rezervate), cum ar fi if, then sau else pentru a marca nceputul unor propoziii distincte.
124
if B1
then (if B2 then S1)
else S2
if B1
then (if B2 then S1
else S2)
125
126
127
5.5.
Programarea declarativ
Deducia logic
S presupunem c urmtoarea afirmaie este adevrat: Kermit fie este bolnav, fie se afl
pe scen. n aceste condiii, dac ni se spune despre Kermit c nu este pe scen, tragem
concluzia c este bolnav.
Acesta este un exemplu de aplicare a principiului deductiv numit rezoluie. Ca s
nelegem mai bine acest principiu, s ncepem prin a reprezenta propoziiile logice prin litere,
iar negarea negaiile lor prin simbolul nsoit de o liter.
n form general principiul rezoluiei precizeaz faptul c dac propoziiile:
P OR Q i
R OR Q
128
Procesul prin care, pentru a face posibil aplicarea principiului rezoluiei variabilelor, li
se atribuie valori se numete unificare. Acest proces, de unificare, permite ca ntr-un sistem
deductiv propoziiile generale s fie aplicate n cazuri particulare.
129
Limbajul PROLOG
Limbajul Prolog (PROgramming in LOGic) este un limbaj de programare declarativ al
crui algoritm de rezolvare a programelor are la baz rezoluia repetat.
Un program Prolog const dintr-o serie de propoziii iniiale, pe care algoritmul i
bazeaz toate deduciile.
Componentele din care sunt construite aceste propoziii se numesc predicate. Un astfel
de predicat se compune dintr-un identificator, urmat de o parantez cu lista argumentelor
predicatului.
Argumentele predicatului ncep ntotdeauna cu liter mic. Limbajul Prolog face
distincia ntre constante (liter mic) i variabile (majuscule). Instruciunile ntr-un limbaj
Prolog sunt fie afirmaii, fie reguli; ele se termin cu punct.
O afirmaie const dintr-un singur predicat. Nu trebuie s v nchipuii c sistemul
Prolog nelege semnificaia predicatelor din program; el le manipuleaz ntr-o manier absolut
simbolic, aplicnd regulile de inferen ale rezoluiei.
Programatorului i revine responsabilitatea de a descrie toate caracteristicile i
predicatele sub forma unor afirmaii i reguli. Majoritatea implementrilor de Prolog sunt
proiectate pentru utilizare interactiv.
Atunci cnd sistemul Prolog
131
d. Declarativ
11. Limbajul Pascal este un limbaj bazat pe o paradigm de tip:
a. Funcional
b. Procedurale
c. Declarativ
12. Limbajul Prolog este un limbaj bazat pe o paradigm de tip:
a. Declarativ
b. Orientat pe obiecte
c. Funcional
13. Definii paradigma imperativ (procedural) i dai exemple de limbaje de
programare care se bazeaz pe aceast paradigm.
16. Definii paradigma orientat spre obiecte i dai exemple de limbaje de programare
care se bazeaz pe aceast paradigm.
133
21. Caracterizai pe scurt principalele categorii de date, furniznd cte un exemplu pentru
fiecare.
134
137
a. Particulare
b. Generale
c. Specifice
62. Limbajul PROLOG (Programming in Logic) este un limbaj de:
a. Programare declarativ
b. Programare orientat pe obiect
c. Programare procedural
63. ntr-un program PROLOG propoziiile din care este construit, se numesc:
a. Verbe
b. Adjective
c. Predicate
64. Caracterizai limbajul PROLOG (Programming in Logic) dnd i exemple.
138
UNITATEA DE NVARE 6
6.
Structuri de date
6.1.
Vectori
Vectorii permit exprimarea unui algoritm ca i cum datele manipulate ar fi stocate ntr-un
aranjament rectangular. n acest fel, ne putem referi la cel de al cincelea element al unui vector
rectangular sau la elementul situate pe a treia linie i a asea coloan al unui vector
bidimensional.
139
Acest sistem de stocare se numete n ordinea liniilor (row major order); existnd i
posibilitatea stocrii n ordinea coloanelor (column major order).
Cum putem localiza elementele vectorului atunci cnd este nevoie de ele? Notm cu C
numrul de coloane ale vectorului (numarul elementelor de pe o linie). Pentru a gsi elementul
140
6.2.
Liste
Pointeri
Locaiile din memoria calculatorului sunt identificate prin adrese numerice. Prin adresa
unei anumite date vom gsi elementul respectiv far nici o dificultate. Aa cum elementul
propriu-zis poate fi nregistrat ntr-o celul de memorie i adresa lui poate fi stocat n alta
celul. Ulterior dac accesm adresa gsim elementul respectiv prin intermediul respectivei
adrese. Putem considera c celula de memorie care conine adresa indic (point) ctre
elementul respective, de unde apare i numele de pointeri dat celulelor de memorie care conin
adrese.
Multe limbaje de programare permit declararea, alocarea i manipularea pointerilor. S
exemplificm prin situaia unei biblioteci care ine evidena crtilor n ordine alfabetic, dup
titlu. n respectiva organizare este dificil de gsit toate crile scrise de un anumit autor. Pentru a
rezolva problema se rezerv n blocul care conine informaii referitoare la carte o celul
supliment de tip pointer. n fiecare celul pointer se stochez adresa altui bloc care corespunde
unei cri scrise de acelai autor. n acest fel, crile care au acelai autor vor fi legate ntr-un fel
de bucl (fig.6.3).
141
Figura 6.3 Lista de cri dintr-o biliotec stocat dup titlu i nlanuit dup autor
Liste contigue
Una din tehnicile de stocare a unei liste de nume n memoria calculatorului este plasarea
listei ntr-un bloc de celule cu adrese consecutive. Presupunem c numele respective nu depesc
opt caractere. Vom mprii blocul n sub-blocuri de cte opt celule. n fiecare sub-bloc se va
putea stoca un nume (nregistrnd n fiecare celul codul ASCII pentru o litera - fig.6.4). Dac
142
numele nu ocup toate celulele din blocul alocat, vom complete celulele libere cu codul ASCII
pentru spaiu.
Acest mod de organizare se numete list contigu, n cadrul sistemului pentru stocarea
listei. Exemplu. Instructiune Pascal
Var
List packed array (1 .. 8,1..10) of char
, declar un vector bidimensional de 8 linii i 10 coloane. Problemele acestei structuri de stocare
(structura contigua) apar la :
a. tergerea unui nume din list - Dac numele ters nu este ultimul pentru a pstra ordinea
de stocare (eventual alfabetic) trebuie s fie mutate toate numele care se afl n lista
dupa numele ters.
b. Adaugarea unui nume nou n list - O problem posibil, s nu mai fie loc n memorie
pentru acest nou nume, deoarece folosim un bloc contiguu. O alt problem este
poziionarea noului nume ntr-o list alfabetic, acolo unde-i este locul.
Liste nlnuite
Fiecare nume se nregistreaza ntr-un ir de nou celule, primele opt vor fi utilizate
pentru stocarea numelui propriu-zis, iar ultima va fi folosit ca pointer ctre urmatorul nume din
list. Astfel, lista poate fi fragmentat n mici blocuri, de cte nou celule, blocuri legate ntre ele
prin pointeri. Acest mod de organizare se numeste list inlantuit (linked list).
Pentru a ti de unde ncepe lista trebuie rezervat o celula de memorie n care se salveaz
adresa primului articol din list pointer cap de list (head pointer). Citirea listei va ncepe de la
locaia indicat de pointer-ul cap de list, unde se gsete primul nume din list i un pointer
143
ctre articolul urmator. n acelai fel se poate parcurge ntreaga list. Problema detectrii
sfritului de list se rezolv prin utilizarea pointer-lui NIL (o combinaie special de bii
nscris n celula de tip pointer a ultimului element din list). n figura 6.5 este prezentat
structura unei liste nlnuite.
Revenind la problemele care apar la structura contigu, tergerea unui nume i adaugarea
unui nume n list, ele au o soluionare mult simplificat n cadrul listei nlnuite.
a. tergerea unui nume implic doar schimbarea unui pointer. Pointer-ul care arat iniial
ctre numele pe care-l tergem va arta ctre urmatorul nume din list fig.6.6.
b. Pentru inserarea unui nou nume trebuie gsit mai inti un loc liber de nou celule n
memorie, apoi se stocheaz noul nume n primele opt celule i se completeaz cea de a
noua celul cu adresa numelui din lista care trebuie precedat n lista numelui inserat fig.6.7.
La tergerea i inserarea unui nume ntr-o list trebuie s se ina seama i de evidena
blocurilor de celule eliminate din list (aceste blocuri pot fi refolosite pentru stocarea noilor
articole inserate). Evidena blocurilor terse se poate ine prin construirea unei noi liste
nlnuite.
Stive
Stiva reprezint o list n care inserrile i tergerile se fac la un singur capt al structurii.
Captul listei la care se efectuea aceste operaii se numete vrful stivei (top), iar cellalt capt
se numete baza stivei. Pentru inserarea unui element n stiv se va folosi denumirea de operaie
push, iar pentru tergerea unui element din stiv se folosete denumirea de operaie pop.
Una dintre cele mai comune aplicaii prin care se poate explica modul de lucru ntr-o
stiv este execuia unor module de program din categoria procedurilor din pseudocod.
145
Figura 6.8 - Procedurile i ncheie execuia n ordinea invers celei n care au fost apelate
Implementarea stivei
n mod obinuit se rezerv pentru stiv un bloc de memorie suficient de mare pentru a
permite creterea dimensiunii ei. Dup rezervarea blocului de memorie, trebuie s stabilim
captul care va servi ca baz stivei. Acesta este punctul n care vom include n stiv primul
146
element, articolele urmtoare fiind stocate n continuare, spre cealalt extremitate a blocului
rezervat.
Este nevoie de un instrument suplimentar: posibilitatea identificrii n orice moment a
vrfului stivei. Aceast celul suplimentar poart numele de pointer al stivei (stack pointer).
Sistemul astfel completat este prezentat n figura 6.9.
pentru adugarea unui element n stiv, se modific (mai nti) pointerul de stiv astfel
nct s indice ctre primul loc gol de deasupra vrfului, apoi plasm respectivul element
n locaia respectiv;
pentru a terge (scoate) un element din stiv citim datele din locaia indicat de pointerul
de stiv, apoi ajustm pointerul astfel nct s arate ctre urmtorul articol situat spre
baza stivei.
Dac nu putem rezerva un bloc fix de memorie suficient de mare pentru a se putea terge
Cozi
Organizarea de tip coad este o form de list n care adugarea (inserarea) se face pe la
un capt al listei, iar tergerea la cellalt capt. Astfel spus coada este un obiect de stocare de tip
FIFO (primul venit, primul plecat).
Capetele de la care sunt eliminate articolele se numesc cap (head), iar captul la care se
adaug articole se numete coad (tail); pentru evitarea confuziilor vom folosi n acest scop
termenii de nceput i sfrit.
Implementarea cozilor
O metod este folosirea unui bloc continuu de celule de memorie. n cazul cozilor se
efectueaz operaii la ambele extremiti ale structurii, deci se vor folosi doi pointeri: un pointer
de nceput i un pointer de sfrit.
Presupunem la nceput, coada goal deci ambii pointeri indic aceeai locaie de
memorie, figura 6.10.
La inserarea unui articol, acesta va fi stocat la locaia indicat de pointerul de sfrit dup
care se va modifica pointerul de sfrit (va arta urmtoarea locaie neutilizat) - figura 6.11.
148
La eliminarea unui articol din coad, se va extrage obiectul care indic locaia indicat de
pointerul de nceput, dup care se va ajusta acest pointer aa nct s arate ctre articolul care
urmeaz dup cel eliminat - figura 6.13.
149
n cadrul acestui sistem de stocare, coada tinde s se deplaseze lent prin memorie,
distrugnd n drumul ei alte date. Aceast sete de memorie este un efect colateral al procedurii
de acces.
O soluie la aceast problem este ca articolele rmase n coad vor nainta pe msur ce
articolele de la nceputul cozii sunt eliminate. n aceast situaie, ar trebui gsit o metod de a
ncadra coada ntr-o anumit zon de memorie, fr s fie nevoie de rearanjarea datelor.
Faptic rezervm un bloc de memorie i plasm coada, pentru nceput, la una dintre
marginile blocului i i permitem s migreze ctre cealalt margine.
Cnd sfritul cozii atinge marginea blocului, vom ncepe s inserm elemente la cellalt
capt al blocului, unde au aprut noi articole, care ateapt. Astfel coada se va nvrti n cadrul
blocului rezervat (coad circular).
6.3.
Arbori
Spre exemplificarea acestei structuri ne vom inspira din diagrama de organizare a unei
companii - figura 6.14.
150
Fiecare poziie din cadrul arborelui poart denumirea de nod. Nodul din vrful ierarhiei
se numete nodul rdcin, nodurile de la cealalt extremitate a arborelui sunt denumite noduri
terminale (sau frunze). Linia care unete dou noduri se numete are. Oricare componente a
unui arbore poart numele de sub-arbore. Se vorbete de n cadrul acestei structuri de strmoi i
de descendeni unui nod.
Descendenii de la nivelul imediat inferior se numesc fii. Nodul superior este denumit
nod printe; nodurile generate de acelai nod printe se numesc frai.
Adncimea arborelui, reprezint numrul de noduri care formeaz cea mai lung cale de
la nodul rdcin la un nod terminal; adncimea arborelui este egal cu numrul de straturi
orizontale din componenta acestuia.
Implementarea arborilor
Ne vom rezuma la cazul particular al arborilor binari arbori n care fiecare nod are cel
mult doi descendeni.
n cazul arborilor binari, fiecare artiol (nod) al arborelui conine trei componente:
datele;
151
152
Aceast metod de stocare ofer un mod convenabil de regsire a prinilor sau frailor
oricrui nod. Pentru a regsi prinii i fraii n cadrul structurii nlnuite, trebuie folosii
pointeri suplimentari.
153
154
155
25. Notm cu VARF poziia pe care se afl elementul din vrful stivei , i cu BAZA poziia
celui de la
a. VARF = BAZA
b. VARF = 0
c. VARF < BAZA
26. La o coad adugarea unui nou element se poate face:
a. dup ultimul element
b. n faa primului element
c. ntr-o poziie intermediar
27. In contextul structurilor de date ,cnd o list este vid?
28. In contextul structurilor de date ,ce este o list circular?
29. Coada poate fi descris astfel:
a. primul element introdus n coad este ultimul care poate fi extras
b. primul element introdus n coad este primul care poate fi extras
c. ultimul element introdus n coad este primul care poate fi extras
156
UNITATATEA DE NVARE 7
7.
Structuri de fiiere
7.1.
Fiierele secveniale
Noiuni de baz
Organizarea secvenial este, desigur, una conceptual. Funcie de caracteristicile fizice
ale dispozitivului periferic utilizat se poate stoca fiierul respectiv n alt format i s fie prezentat
utilizatorului ca un fiier secvenial. Noiunea de organizare secvenial aici a nregistrrilor
ntr-un fiier este legat de dispozitivul periferic i de suportul fizic utilizat (ex. banda
magnetic este, prin natura sa, secvenial). Desigur, fiiere secveniale se pot stoca i pe
suportul disc magnetic dispersnd nregistrrile n diferite locaii disponibile (care nu sunt una
dup alta ca adresare). Sistemele de operare pstreaz evidena locaiilor (sectoarelor) ocupate
de nregistrri i fiiere i a ordinii n care trebuie citite.
Sfritul fiecrui fiier secvenial este indicat de un marcaj de sfrit de fiier EDF (end
of file). n figura 7.1 este prezentat organizarea secvenial a fiierului.
Utilizatorul unui fiier secvenial poate s vad nregistrrile numai n ordine secvenial.
Singurul mod de a gsi o nregistrare este acela de a ncepe cutarea de la nceputul fiierului i
de a le gsi i extrage n ordinea n care se afl n fiier.
Structura secvenial a unui fiier este convenabil pentru generarea unor rapoarte (ex.
statele de salarii), dar aceeai structur secvenial este total nefavorabil la actualizarea
nregistrrilor. (De exemplu, pentru actualizarea orelor lucrate de un angajat se citete cartela sa
de pontaj i apoi se caut n tot fiierul nregistrarea angajatului respectiv pentru actualizare, iar
pentru urmtorul angajat trebuie reluat procesul de la nceput. Procesul poate fi simplificat dac
ordinea cartelelor de pontaj corespunde cu ordinea nregistrrilor din fiierul angajailor).
157
Din aceste motive fiierele secveniale sunt de regul stocate n ordine alfabetic sau
numeric, n funcie de coninutul unui cmp, numit cmp-cheie (key field). Avnd n vedere
avantajele oferite de o ordine bine stabilit n prelucrarea fiierelor secveniale, sortarea ocup
un loc important.
Pentru actualizarea unui fiier secvenial, noile informaii (n cazul nostru colecia de
cartele de pontaj) sunt nregistrate sub forma unui fiier secvenial independent, cunoscut sub
numele de fiier tranzacional. Acest fiier tranzacional este sortat n ordinea n care este sortat
fiierul care trebuie actualizat i nregistrrile fiierului iniial sunt actualizate n ordinea lor de
apariie.
158
7.2.
Fiiere de text
Dac nregistrarea logic dintr-un fiier secvenial se rastrange la, un singur octet, se
consider c avem un fiier de text (text file). Denumirea fiierului reflect faptul c aceste
fiiere sunt utilizate de obicei pentru stocarea unor documente care conin text.
Altfel spus, un fiier de text poate fi considerat compus din secvene de rnduri separate
prin marcaje de sfrit de rnd.
159
Instruciunea de mai sus citete un octet din fiierul de text identificat ca Vechiul
manuscris i atribuie acea valoare variabilei Symbol.
Similar, instruciunea:
write (Noul manuscris, Symbol)
, plaseaz octetul atribuit variabilei Symbol la poziia curent n fiierul Noul manuscris.
7.3.
Fiiere indexate
Ideea de indexare este preluat din modul de lucru cu o carte, unde se utilizeaz un index
care permite localizarea unui subiect mult mai repede dect prin parcurgerea secvenial a crii.
Noiuni de baz
Indexul fiierului const dintr-o list a valorilor care apar n cmpurile-cheie ale
fiierului, la care se adaug poziia nregistrrii respective n cadrul dispozitivului de stocare
masiv a informaiilor. Acest mod de organizare presupune s cunoatem valoarea cmpuluicheie corespunztor nregistrrii cutate.
Organizarea indexului
Pentru a cuta ceva n nregistrarea identificat prin index este necesar ca indexul s fie
transferat n memoria principal i n acest sens dimensiunea lui trebuie s se ncadreze n limite
rezonabile. O metod de rezolvare a problemei indecilor de mari dimensiuni este utilizarea unui
index al indexului iniial. Astfel indexul general va lua o form stratificat sau arborescent.
160
De exemplu: ntr-un program scris n limbajul C se poate utiliza funcia fsetpos pentru a
stabili poziia curent n cadrul unui fiier.
Astfel, instruciunea:
fsetpos (Personal, & Poziie)
solicit ca poziia curent n cadrul fiierului Personal s fie stabilit la locaia identificat prin
valoarea variabilei Poziie.
Dac imediat dup aceast instruciune se scrie:
fscanf (Personal, %s, Nume)
, vom obine numele situat la respectiva poziie din fiier.
7.4.
Sistemul de stocare reprezentat prin fiiere dispersate permite doar accesul direct, fr a
utiliza un mod de indexare. Ideea de baz este calcularea poziiei fiecrei nregistrri n memorie
prin aplicarea unui algoritm (algoritmul de dispersie) asupra valorii cmpului-cheie.
Altfel spus, fiind dat cmpul-cheie cutat, se poate determina rapid poziia nregistrrii
respective, fr a utiliza o tabel special (cazul fiierelor indexate).
161
Utiliznd acest sistem se poate converti orice valoare din cmpul cheie ntr-un ntreg care
identific unul dintre containerele din memoria de mas, unde vom stoca nregistrarea
respectiv.
Rezolvarea situaiilor de depire superioar
Un fiier dispersat trebuie implementat n ideea c se va ajunge la depirea capacitii
containerelor. n acest sens trebuie gsit o metod de soluionare a situaiei.
Metoda tipic de rezolvare a problemei este rezervarea unei zone suplimentare de
memorie de mas, unde s fie nmagazinate nregistrrile care depesc capacitatea
containerelor. Aceast zon suplimentar a memoriei de mas se numete zona de depire.
n concluzie, dac numrul depirilor este foarte mare, eficiena acestui tip de fiier
scade considerabil. Din acest motiv, proiectarea unui fiier dispersat presupune o atent alegere
a algoritmului de dispersie, a numrului i a dimensiunilor containerelor, precum i a mrimii i
structurii zonei de depire.
7.5.
Mediul de lucru, n cazul limbajelor de nivel nalt, ofer rutine predefinite pentru
manipularea fiierelor componente, care nu intr n sarcina programatorului.
Pentru utilizarea operaiilor de regsire i inserare a nregistrrilor, rutinele comunic cu
sistemul de operare, deci acestuia i revine sarcina manipulrii fiierelor. Sistemul de operare
trebuie s cunoasc structura fiierului, cmpul-cheie i dac fiierul trebuie salvat.
162
Funcie de tipul fiierului se pot prelua: poziia curent n cadrul fiierului, nregistrarea
fizic care se afl n buffer-ul din memoria principal.
Pentru gestionarea acestor informaii, sistemul de operare folosete cte o tabel
numit descriptor de fiier sau bloc de control pentru fiecare fiier utilizat.
Dac un program lucreaz cu trei fiiere, sistemul de operare va trebui s construiasc
trei descriptori de fiier care s permit gestionarea acestora. n limbajele de nivel nalt,
construirea descriptorului de fiier se iniializeaz printr-o rutin numit Open.
n FORTRAN, instruciunea tipic are urmtoarea form:
OPEN (UNIT = 10, FILE = Test File, STATUS = OLD,
ACCESS = SEQUENTIAL)
i solicit sistemului de operare s construiasc un descriptor de fiier pentru fiierul cu numele
Test File.
Parametrii precizai specific c:
alt nume dect numele lui propriu-zis. Aceast distincie care se face ntre numele extern al
fiierului i identificatorul utilizat n program reflect diferena ntre regulile sintactice ale
sistemului de operare i cele ale limbajului de programare. Aceast distincie ntre identificatorii
externi i interni de fiier permite, de altfel, un grad mai mare de flexibilitate n sensul c o
procedur proiectat s manipuleze fiierul prin intermediul identificatorului intern poate fi
utilizat ca rutin generic pentru prelucrarea a diferite fiiere.
Dup prelucrarea fiierului, multe limbaje de programare cer s fie apelat o rutin
numit Close. Aceast rutin informeaz sistemul de operare c spaiul de memorie rezervat
pentru descriptorul de fiier poate fi folosit n alte scopuri. Pentru anumite fiiere (ex. fiierele
txt), rutina Close are i rolul de a comunica sistemului de operare necesitatea transferrii ultimei
nregistrri fizice pe dispozitivul de stocare.
163
164
11. Unde sunt memorate mai nti nregistrrile nregistrrile fizice, nainte de transferarea
efectiv a acestora pe dispozitivul de stocare:
a) ntr-un buffer;
b) Pe un hard-disk extern;
c) Pe o partiie separat.
12. Descriei aspectele legate de programarea fiierelor de text.
13. Ce este indexul fiierului?
14. Care este condiia necesar pentru ca un index s devin viabil:
a) Dimensiunea lui trebuie s se ncadreze n limite rezonabile;
b) Trebuie s rmn n memoria secundar a calculatorului;
c) Trebuie s se regseasc pe ambele partiii.
15. Descriei etapele de aplicare a funciei fsetpos i rolul acesteia (limbajul C).
16. Calcularea poziiei fiierelor dispersate n memorie se realizaz prin aplicarea unui
algoritm numit ......................................... asupra valorii .................................
17. Descriei o tehnic de dispersie cunoscut.
18. Ce este o zon de depire?
19. Care este rolul sistemului de operare?
20. Cum se numete tableta folosit de sistemul de operare pentru gestionarea informaiilor?
165
UNITATEA DE INVATARE 8
8.
8.1.
Consideraii generale
n general, nelegem prin baz de date orice ansamblu de date, dar termenul semnific
de obicei un ansamblu de date stocate pe un dispozitiv magnetic de stocare de mas, avnd
diferite forme de prezentare (organizare), n funcie de necesiti i disponibil ca surs de date
pentru o gam larg de aplicaii.
Din alt punct de vedere, o baz de date este rezultatul combinrii mai multor serii de
date (proiectate i culese iniial pentru aplicaii diferite) ntr-un singur ansamblu unificat.
Aceast abordare integrat a conceptului de baz de date i are originea n evoluia istoric a
sistemelor automate de stocare i ntreinere a datelor.
De exemplu, nevoia calculrii salariilor a condus la apariia unor fiiere secveniale, iar
necesitatea regsirii interactive a datelor a avut ca rezultat realizarea unor fiiere cu acces direct.
Dei fiecare din aceste sisteme de fiiere a reprezentat o mbuntire fa de procedurile
manuale, datorit lipsei de comunicare ntre ele, totui permiteau numai o utilizare limitat i
neeficient a resurselor. n aceste condiii, bazele de date au reprezentat soluia adecvat a
organizrii informaiilor stocate i gestionate de instituii i organizaii.
Dac se implementeaz o baz central de date referitoare la datele solicitate de mai
multe compartimente, administrarea acesteia se poate executa dintr-o unic poziie cunoscut
sub numele de administrator al bazei de date (DBA database administrator).
Administratorul tie att ce date sunt disponibile n cadrul organizaiei, ct i care sunt
datele necesare diferitelor compartimente, putnd lua hotrri referitoare la organizarea i
accesul la date. Exist i dezavantaje care apar la organizarea datelor sub forma unor baze de
date. Una din problemele delicate este controlul accesului la datele importante. Controlul
asupra accesului la informaiile din baza de date este la fel de important ca i capacitatea lor de
partajare.
166
ultima
vreme,
8.2.
Cel care utilizeaz o baz de date este numit utilizator (user), iar uneori utilizator final
(end-user). Acest utilizator final poate fi n egal msur un funcionar al unei companii aviatice
care efectueaz rezervri de locuri sau un director executiv al unei mari societi constructoare
de automobile.
n ambele cazuri, probabil c utilizatorul nu este specialist n calculatoare i nici nu
trebuie s cunoasc n detaliu tehnologia i tehnicile utilizate n domeniu. Utilizatorul trebuie s
se poat concentra asupra problemei pe care o are de rezolvat, iar sistemul de gestionare a bazei
de date trebuie s i prezinte informaiile necesare ntr-o form specific aplicaiei respective, i
nu ntr-un limbaj tehnic greu de neles.
Pentru a rspunde la aceste cerine bazele de date sunt construite pe mai multe niveluri
de abstractizare (fig. 8.1).
Imaginea datelor oferit utilizatorului final este produs de un software de aplicaie, a
crui comunicare cu utilizatorul se desfoar n mod interactiv i n termeni specifici
programului.
Proiectarea acestui software de aplicaie imprim personalitate sistemului de uz general.
De exemplu, comunicarea cu utilizatorul se poate face printr-un sistem de ntrebri i rspunsuri
sau prin formulare care trebuie completate.
167
168
8.3.
Modelul relaional
Figura 8.2 - Relaia care conine informaii despre angajaii unei firme
O linie din cadrul relaiei (tabelului) poart numele de tuplu. Coloanele relaiei se
numesc atribute.
169
Proiectarea relaional
Proiectarea unei baze de date utiliznd modelul relaional se concentreaz pe proiectarea
relaiilor din componena sa. S presupunem c pe lng informaiile coninute n relaia din fig.
8.2, dorim s includem i alte informaii legate de un istoric al poziiilor deinute de un salariat
n cadrul firmei cu urmtoarele atribute: denumirea postului (secretar, ef birou, ef
compartiment), codul de identificare a postului (unic pentru fiecare post), codul referitor la
pregtirea profesional necesar fiecrui post, compartimentul n cadrul cruia a fost deinut
postul i perioada de ocupare a postului (data/nceput i data/sfrit activitate; n cazul unui post
deinut n prezent se va nota acest atribut cu un asterisc).
Un mod de rezolvare a noi probleme este extinderea relaiei din fig. 8.2, prin adugarea
de noi coloane care s cuprind noile atribute conform fig. 8.3. La o examinare mai atent
aceast relaie ridic o serie de probleme. Una dintre ele este ineficiena relaiei: nu mai conine
cte un tuplu pentru fiecare salariat, fiind posibil ca un salariat s fi fost avansat n decursul
timpului.
Descriind legturile dintre atribute, ca mai sus, informaiile iniiale se vor repeta, fie:
marca, numele, adresa, codul numeric, fie: departamentul, codul pregtire profesional. O alt
problem apare la tergerea unor informaii nregistrate o singur dat n baza de date, cum ar fi
codul funciei pentru poziia a treia din tabel (S8 director compartiment).
Aceast situaie a aprut deoarece am combinat n aceeai relaie informaii care se
refer la lucruri diferite. Modul de rezolvare a problemei este reproiectarea bazei de date
folosind attea relaii cte subiecte am ales. n cazul nostru este vorba de trei subiecte
identificare salariat, locul su de munc i perioada angajrii salariatului pentru fiecare loc de
munc.
170
Utiliznd aceast baz de date informaiile suplimentare sunt disponibile implicit prin
combinarea informaiilor coninute n aceste relaii. Cte odat mprirea atributelor n relaii
foarte simple duce la pierderea de informaii. Pornind de la proprietile relaiilor s-au putut
construi ierarhii de clase de relaii numite prima form normal, a doua form normal, a
171
treia form normal, ..., fiecare din aceste forme normale (clase de relaii) fiind mai puin
predispuse apariiei unor anomalii de funcionare dect cele din clasa precedent.
Operaii relaionale
Analizam in continuare operaiile efectuate asupra relaiilor.
Pentru a regsi informaiile referitoare la un angajat se va selecta din relaia
identificarea salariatului tuplul cu atributul de identificare dorit, iar pentru a obine lista
posturilor dintr-un compartiment se vor selecta tuplurile din relaia identificarea locului de
munc care pentru atributul compartiment au valoarea codului departamentului precizat.
Realizarea seleciei tuplului i plasarea sa ntr-o nou relaie se poate exprima sintactic
astfel:
NEW
(unde)
Astfel se creeaz o nou relaie numit NEW care conine tuplurile din relaia salariat,
al cror atribut Marca este egal cu 34A70 (fig. 8.4.).
Operaia PROJECT extrage anumite coloane. Dac dorim s aflm titulaturile posturilor
dintr-un compartiment, dup ce am efectuat o operaie SELECT pentru a extrage din relaia
LOCURI de MUNC tuplurile care conin departamentul-int plasndu-le ntr-o relaie NEW,
lista pe care o cutm este cea a valorilor din coloana Denumire compartiment a acestei noi
relaii.
Pentru a extrage aceast nou coloan i a plasa rezultatul ntr-o nou relaie, utilizm
operaia PROJECT, care se va exprima sintactic astfel:
MAIL
PROJECT
Nume,
Adres
from
SALARIAT
i va realiza obinerea unei liste cu numele i adresele tuturor salariailor firmei. Lista se va gsi
n noua relaie MAIL care are dou coloane (vezi fig. 8.5).
173
Relaia JOIN aplicat asupra a dou relaii are ca rezultat obinerea unei noi relaii ale crei
atribute sunt atributele relaiilor iniiale (fig. 8.6).
Modul n care sunt concatenate tuplurile este determinat de condiia specificat pentru
operaia JOIN.
n acest exemplu un tuplu din relaia A va fi concatenat cu unul din relaia B dac i numai dac
atributele W i X ale celor dou tupluri sunt egale.
174
Se va exemplifica mai jos operaia JOIN asupra bazei de date din fig 8.3 pentru a obine
o list a codurilor de identificare ale tuturor angajailor, mpreun cu departamentul n care
lucreaz fiecare.
Instruciunea necesar este :
PLACE 1
Cod funcie, rezultatul este prezentat n fig. 8.7. Pentru a rezolva problema se selecteaz
mai nti acele tupluri din relaia ANGAJARE SALARIAT Data sfrit, unde Data sfrit =
* , iar dup aceea se proiecteaz atributele:
ANGAJARE SALARIAT Marca salariatului
i
LOC DE MUNC Denumire departament.
n concluzie, obinerea informaiilor se realizeaz prin executarea instruciunilor :
PLACE 1
PLACE 2
LIST
175
Sistemul de gestiune a bazei de date are rolul de a accepta comenzi exprimate n termenii
modelului relaional i de a le transforma n aciuni ce in cont de structura efectiv de stocare.
Un sistem de gestiune a bazei de date care utilizeaz un model relaional va include rutine pentru
efectuarea operaiilor SELECT, PROJECT i JOIN, rutine care vor fi apelate din aplicaie
printr-o structur sintactic compatibil cu limbajul-gazd.
n realitate sistemele de gestiune a bazelor de date conin operaii care pot fi combinaii
ale unor pai elementari ntr-o form prietenoas pentru utilizatori. Un astfel de limbaj este
limbajul S Q L (Structured Query Language).
SQL
Limbajul SQL este destinat interogrii bazelor de date. Acest limbaj permite ca printr-o
singur instruciune SQL se poate exprima o interogare care presupune o secven de operaii
SELECT, PROJECT i JOIN.
De exemplu interogarea din ultimul exemplu (fig. 7.7) poate fi exprimat n SQL printr-o
instruciune:
select Marca salariat, Denumire departament
from ANGAJARE SALARIAT, LOC DE MUNC
unde ANGAJARE SALARIAT . Cod funcie = COD LOC DE MUNC .
Cod funcie i ANGAJARE SALARIAT . Dat sfrit = * .
Iat cteva exemple n SQL.
Instruciunea:
select Nume, Adres
from IDENTIFICAREA SALARIATULUI
genereaz o list care conine numele i adresele tuturor angajailor din relaia
IDENTIFICAREA SALARIATULUI. (Aceast operaie este identic cu operaia PROJECT).
Instruciunea :
select IDENTIFICAREA SALARIATULUI Nume, ANGAJAREA
SALARIATULUI . Dat debut
from IDENTIFICAREA SALARIATULUI, ANGAJAREA SALARIATULUI
where IDENTIFICAREA SALARIATULUI . Cod funcie = ANGAJAREA
SALARIATULUI .
177
Cod funcie furnizeaz o list a tuturor angajailor cu informaii privind data angajrii.
Pe lng interogri, limbajul SQL permite i definirea structurii unei relaii, crearea de
noi relaii, ca i modificarea coninutului unor relaii existente.
Baze date orientate spre [pe] obiecte
Una dintre cele mai noi direcii de cercetare n domeniul bazelor de date o constituie
aplicarea paradigmei orientate spre obiecte. Direcia este ncurajat de urmtoarele motive:
baze de date constituite din obiecte inteligente care pot rspunde direct la
ntrebrile ce li se pun, fr s utilizeze un program supervizor de interogare;
Protocolul Commit/Rollback
Transferarea unei sume de bani dintr-un cont n altul presupune retragerea sumei din
contul-surs i adugarea ei la contul-destinaie. n faza intermediar ntre dou etape de
actualizare a bazei de date, informaiile din baza de date pot fi contradictorii. Astfel n scurta
178
perioad dintre retragerea (scoaterea) banilor dintr-un cont i depunerea lor n cellalt cont, suma
respectiv dispare din evidene.
n cazul bazelor de date de mari dimensiuni n care sunt n curs de execuie foarte multe
tranzacii, probabilitatea ca la un moment ales aleator s fie n curs o tranzacie este foarte mare.
n cazul unei defeciuni, SGBD nu las baza de date n stare de contradicie intern.
Acest deziderat este dus la ndeplinire prin meninerea unui jurnal n care se nregistreaz toate
activitile efectuate asupra unei tranzacii.
Punctul n care s-au nregistrat toate etapele tranzaciei se numete punct de angajare
(commit point).
n acest fel SGBD-ul dispune de toate informaiile necesare pentru reconstruirea pe cont
propriu a tranzaciei dac acest lucru este necesar. n cazul defectrii unui dispozitiv, SGBD-ul
utilizeaz informaiile din jurnal pentru a reconstitui tranzaciile ncheiate de la efectuarea
ultimei salvri. Dac apare o problem nainte ca o tranzacie s ating punctul de angajare,
SGBD-ul se va gsi n situaia de a fi executat parial o tranzacie pe care nu o poate finaliza.
n aceast situaie jurnalul poate fi utilizat pentru anularea (derulare napoi roll back)
activitilor deja efectuate de tranzacia respectiv.
poate afecta elementele bazei de date care au fost utilizate ntre timp la alte tranzacii.
Este posibil ca tranzacia anulat s fi actualizat un cont bancar, iar alt tranzacie
efectuat ntre timp s fi utilizat noua valoare. Aceast situaie necesit anularea i a altor
tranzacii, ceea ce va avea influen i asupra altora .a.m.d. Fenomenul se numete anulare n
cascad (cascading rollback).
Blocarea
Dac studiem problema unei tranzacii care se execut n timp ce baze de date se
modific ca urmare a altei tranzacii uneori observm apariia unor interaciuni dorite ntre
tranzacii care pot conduce la rezultate eronate. Atunci cnd o tranzacie efectueaz un transfer
de fonduri dintr-un cont n altul, n timp ce alte tranzacii calculeaz valoarea total a
depozitelor, poate apare problema cunoscut sub numele de nsumare incorect (incorrect
summary problem).
179
Pentru nlturarea unei astfel de situaii, SGBD-ul poate obliga tranzaciile s se execute
integral, una dup alta (serial), noile tranzacii plasndu-se ntr-o coad de ateptare pn la
finalizarea celor precedente.
Majoritatea sistemelor mari de gestiune a bazelor de date utilizeaz un modul de
coordonare a partajrii timpului de calcul ntre tranzacii.
Pentru evitarea unor anomalii din categoria precizat, modulele de coordonare recurg la
un protocol de blocare (locking protocol), n care elementele bazei de date care sunt utilizate n
mod curent ntr-o tranzacie sunt marcate ca fiind blocate.
Se utilizeaz dou tipuri de blocare blocarea partajabil i blocarea exclusiv,
corespunznd celor dou tipuri de acces partajabil i exclusiv. Dac o tranzacie nu modific
datele, atunci are nevoie de acces partajabil (permite altor tranzacii s citeasc datele
respective).
Dac tranzacia are ca obiectiv modificarea datelor, atunci are nevoie de acces exclusiv
(nu permite accesul altor tranzacii la articolul respectiv.
Pentru tratarea cazurilor n care accesul solicitat de o tranzacie la un articol de date este
refuzat, se pot utiliza mai muli algoritmi. Unul dintre acetia foreaz tranzacia respectiv s
atepte pn cnd cererea poate fi aprobat, dar acest lucru poate conduce la apariia
interblocrii.
Pentru evitarea interblocrii SGBD-urile acord prioritate primei tranzacii.
Acest protocol este cunoscut sub numele de protocol de ateptare (wound wait
protocol) i asigur efectuarea tuturor tranzaciilor.
180
182
UNITATEA DE NVARE 9
9.
9.1
Conceptul de informaie
Activitatea uman, n cele mai diverse forme ale sale, trebuie s respecte un anumit
numr de legi i reguli i este caracterizat prin entiti faptice exprimate fie sub form de valori
numerice, fie ca percepii sau observaii nenumerice. Aceste entiti faptice independente i
neevaluate, exist n general n numr nelimitat i se numesc informaii. Obinerea materialului
informaional presupune operaii de cutare, iar valorificarea lui, n scopul obinerii unor
cunotine necesit un proces de prelucrare (evaluare, selectare, ordonare, transformare, stocare,
transmitere).
Este necesar a se face distincie ntre noiunea de informaie (reprezentnd cunotine
despre o situaie, un individ sau un obiect) i noiunea de dat. Deosebirea dintre informaie i
dat este echivalent cu deosebirea dintre obiect i modelul su. Informaia i data se pot utiliza
ca sinonime numai n msura n care convenim s identificm un obiect prin modelul su. n
general se identific urmtoarele niveluri la care poate fi considerat informaia:
informaii previzionale, sunt cele cuprinse n scenarii i fenomene care vor avea loc n
viitor oferind modele cantitative i calitative ale activitilor care se vor desfura.
3. dup coninut:
Utilitatea unei informaii poate face obiectul unui studiu de oportunitate. O informaie
nu este prin ea nsi util sau inutil, ea este raportat la necesitile deciziei. n tehnica
184
de calcul multe informaii pot fi nregistrate n fiiere provizorii care vor putea deveni
utile prin perfecionarea posibilitilor de prelucrare existente.
9.2
Noiunea de sistem
Definiie
Prin sistem se nelege orice seciune a realitii n care se identific un ansamblu de
fenomene, obiecte, procese, concepte, fiine sau grupuri, interconectate printr-o mulime de
relaii reciproce, precum i cu mediul nconjurtor i care acioneaz n comun n vederea
realizrii unor obiective bine definite. La un sistem se disting:
185
Sistem deschis
Un sistem deschis este caracterizat de ieiri care rspund intrrilor din sistem, dar ieirile
sunt izolate de intrri i nu au nici o influen asupra acestora. Rezultatele aciunilor trecute nu
influeneaz aciunile viitoare.
Sistem nchis
Un sistem nchis denumit i sistem cu conexiune invers, (cu reacie sau cu feed-back)
este influenat de propriul comportament:
186
intrri i ieiri, astfel nct ieirile unei pri s constituie intrri pentru cealalt parte, aceste pri
se numesc subsisteme. De exemplu, un sistem de producie, ntr-o reprezentare simplificat
poate fi descompus n dou subsisteme :
producie i comercial.
Definiie
Sistemul informaional al unui organism economic reprezint ansamblul informaiilor,
surselor i nivelurilor consumatoare, canalelor de circulaie, procedurilor i mijloacelor de
tratare a informaiilor din cadrul respectivului organism.
Sistemul informaional are rolul de sesizare i colectare a informaiei de intrare i de
difuzare a informaiei rezultante. Sistemele informaionale, n afar de informaiile de origine
extern sunt alimentate i de informaii interne (directivele sistemului de decizie, rezultatele
aciunilor sistemului operant). Observaiile (de origine intern sau origine extern) sunt captate
printr-un anumit numr de observatori:
sistemul condus (de execuie, operaional) n care deciziile sunt transpuse n aciuni;
188
189
9.3
Sistem informatic
Definiie
Sistemul informatic este un ansamblu coerent structurat, format din echipamente
electronice de calcul i comunicaie, procese, proceduri automate i manuale, inclusiv
structurile organizatorice i salariaii, care folosesc calculatorul ca instrument de prelucrare
automat a datelor n domeniul concret de activitate al agentului economic, cu
scopulmaximizrii profitului realizat din activitatea economic.
Un sistem informatic este componenta sistemului informaional n care operaiile de
culegere, stocare, prelucrare i transmitere a datelor se realizeaz cu calculatorul electronic.
Sistemul informatic este conceput s funcioneze la nivelul unui singur agent economic
sau grup de societi comerciale, n vederea asigurrii informaiilor complexe, necesare aciunii
manageriale i desfurrii eficiente a ntregii activiti, cu respectarea cadrului legislativ
normativ n vigoare.
Un sistem informatic cuprinde:
190
Cantitatea de date prin care se ncearc realizarea unor sisteme integrate, care s poat
rspunde la cele mai variate cerine ale conducerii.
Numrul de utilizatori.
191
O alt posibilitate de structurare a sistemului informatic deriv din corelaia stabilit ntre
sistemul informaional i sistemul de conducere, situaie n care se poate face i mprirea n
raport cu nivelele de decizie existente n unitatea economic:
192
Subsistemul tactic avnd ca scop rezolvarea problemelor pe o perioad mai scurt (sub
un an) pe anumite domenii de activitate sau subactiviti.
distincte care deservesc anumite activiti, fr a evidenia legturile dintre ele (acestea nu sunt
recomandabile, deoarece nu asigur cunoaterea relaiilor de cauzalitate dintre subsisteme i nu
permit utilizarea mai eficient a capacitii de prelucrare a calculatorului).
Sisteme informatice integrate care abordeaz procesul de prelucrare a datelor din cadrul
sistemului informaional al unitii economice, reliefnd legturile de cauzalitate dintre
subsistemele acestuia. Ele se bazeaz pe principiul prelucrrii, n toate modurile utile, a
datelor primare introduse o singur dat n sistem.
193
baz
de
cunotine,
inteligen
artificial,
hypertext,
hypermedia,
ce mai mari, reelele de calculatoare se pot interconecta putnd conine i componente eterogene
- calculatoare din familii diferite, platforme diferite i productori diferii.
Introducerea standardelor internaionale, prin elaborarea de ctre ISO (International
Standard Organization) a unor modele de referin pe baza conceptului de sistem deschis,
care s permit asigurarea unei baze comune pentru coordonarea elaborrii de noi standarde
(cum ar fi interconectarea sistemelor eterogene). Termenul de sistem deschis se refer doar la
recunoaterea reciproc i aplicabilitatea acelorai standarde. Standardizarea asigur o cretere a
gradului de portabilitate, de pe o platform de sistem la alta, att a datelor ct i a produselor
software, astfel nct productorii se simt ncurajai s le implementeze, avnd n vedere larga
circulaie a acestor standarde. Standardizarea n domeniul sistemelor de gestiune a bazelor de
date sau n domeniul limbajelor de programare conform unor standarde precum CODASYL i
ANSI au impus folosirea unor limbaje cum ar fi SQL i C datorit performanelor i facilitilor
pe care le ofer.
Extinderea bazelor de date clasice bazate pe text i valori numerice spre baze de date
orientate obiect. Bazele de date clasice sau relaionale ofer prea puin suport teoretic i practic
pentru tipurile neconvenionale de date. Bazele de date orientate obiect permit crearea de obiecte
complexe din componente mai simple, fiecare avnd propriile atribute i propriul comportament,
reuind s ofere noi soluii pentru rezolvarea problemelor i crearea unor aplicaii moderne.
Orientarea spre multimedia. Transpunerea unei pri a informaiei pe un suport
multimedia conjug interactivitatea cu atracia vizual, ofer un nou potenial n materie de
informare i este de un interes evident n toate domeniile. n raport cu utilitile tradiionale de
utilizare a informaiei, multimedia ofer urmtoarele avantaje: facilitatea de utilizare (interfaa
utilizator, grafica, audio, video), independena de utilizator (parcurs personalizat, independena
n raport cu un grup), interactivitatea (atractivitate, convivialitate).
195
2.
3.
4.
5.
6.
7.
197
BIBLIOGRAFIE
198