Documente Academic
Documente Profesional
Documente Cultură
Bazele informaticii
economice
SUPORT DE CURS
PENTRU
ÎNVĂȚĂMÂNT LA DISTANȚĂ
Brașov
2011
2 Curs pentru învăţământ la distanţă
Introducere
Obiectivele cursului
Principalul obiectiv al cursului este de a înţelege locul şi rolul informaticii într-o
organizaţie. Prezentarea principalelor elemente definitorii ale conceptelor sistem
informaţional / sistem informatic va permite înţelegerea importanţei activităţilor de
culegere, prelucrare, transmitere şi stocare a informaţiei economice în procesul
decizional.
Un alt obiectiv îl reprezintă înţelegerea arhitecturii calculatoarelor din punct de
vedere hardware şi software. După o descriere succintă a evoluţiei sistemelor de
calcul, se prezintă structura generală a unui calculator tip von Neumann, iar apoi se
regăsesc elementele structurale în analiza unui calculator personal (PC). După
structura hardware, se prezintă conceptele de sistem de operare şi reţea de
calculatoare.
Alte obiective sunt: prezentarea și explicarea algoritmilor, a tabelelor de decizie
percum și opreațiile care se pot efectua la nivelul structurilor de articol și fișier.
Competenţe conferite
După parcurgerea acestui curs studenții vor înțelege următoarele concepte: de
informaţie şi entropie, noţiunea de sistem. sistem cibernetic, sistemul
informaţional, sistemul informatic, calculatoare personale, sisteme de operare,
reţele de calculatoare, limbajul algoritmic, analiza algoritmilor, tabele de decizie
structuri elementare de date, algoritmi fundamentali, structura de articol şi fişier,
operaţii de prelucrare (gestiune) a fişierelor
Structura cursului
numărul de Unităţi de învăţare (UI) ce compun cursul: 4
numărul temelor de control 8
locul, în cadrul materialului, în care se găsesc formulate temele de control – la
sfarșitul unităților de învățare
modul de transmitere al temelor de control către cadrul didactic şi, respectiv, a
rezultatelor către studenţ -(prin încărcarea pe platforma eLearning, material
tipărit, etc.
Discipline deservite
Analiza și Proiectarea Sistemelor Informatice
Baze de Date
Pachete de Programe de Contabilitate
Tehnologia Informatiei
Programarea Calculatoarelor
Evaluarea
Se va specifica componenţa notei finale: – ponderea evaluării finale (examen)
– 50%
– ponderea proiectelor de laborator – 50%
CUPRINS
Introducere
Prin organizaţie înţelegem două sau mai multe persoane asociate în vederea
realizării unui scop productiv sau de servicii. Orice organizaţie pentru a funcţiona
are nevoie de resurse: materiale, financiare, umane (resurse vizibile) şi
informaţionale (resurse invizibile).
Secolul XX marchează trecerea de la societatea industrială, în care producţia de
bază este producţia industrială, iar resursa strategică este capitalul, la societatea
informaţională, în care producţia de bază este cea intelectuală, iar resursa cea mai
importantă este informaţia.
„Avantajul competitiv real se obţine de surse invizibile, adică din informaţii sau
circuite informaţionale, resursele vizibile pot fi cumpărate sau copiate rapid, cele
invizibile se acumulează însă în ani” (Hiroyouki Itami).
Nivelul pragmatic este cel mai concret nivel de considerare a informaţiei, singurul
care raportează informaţia la scopurile receptorului. În raport cu necesităţile
receptorului se definesc caracteristici, ca importanţa sau utilitatea informaţiei.
Abordarea pragmatică include problemele de management, de necesar de
informaţii şi de eficienţă a sistemelor informaţionale, care constituie baza luării
deciziilor. Actul managerial de utilizare a informaţiilor în procesul decizional este
considerat o artă. De aceea, aspectul pragmatic al informaţiei este în acest moment
neformalizabil.
B) Activitatea umană, în cele mai diverse forme ale sale a fost întotdeauna
caracterizată prin entităţi faptice exprimate fie sub formă de valori numerice, fie ca
percepţii sau observaţii nenumerice. Aceste entităţi faptice independente şi
neevaluate existente în general în număr nelimitat se numesc date.
Figura 1.1
Cunoştinţa este conform lui Peter Drucker “informaţia care schimbă ceva sau pe
cineva – fie devenind baza unor acţiuni, fie permiţând unei persoane sau
organizaţii să acţioneze diferit sau mai eficace”.
Cunoştinţa include capacitatea de a evalua informaţia într-un sens sau scop. A
avea cunoştinţe sau abilitatea de a efectua sarcini complexe, presupune mai mult
decât a avea o listă de instrucţiuni sau informaţii necesare; se cere abilitatea
manipulării informaţiilor sau a sarcinilor.
Comentariu. Nu orice informaţie este cunoştinţă, aşa cum nu orice cunoştinţă este
de valoare pentru o organizaţie. Tocmai acesta este şi obiectivul principal al noului
domeniu legat de gestiunea conoştinţelor, Knowledge Management (KM), de a
găsi cunoştinţele de valoare în masa de informaţii.
KM poate fi considerat ca fiind o formă de implementare a schimbării
organizaţionale, care constă în a înregistra cunoştinţele (atât la nivel individual cât
şi la cel instituţional) şi apoi a le pune în comun în scopul de a ameliora capitalul
intelectual al unei organizaţii.
Cel mai frecvent tip de definiţie descrie KM ca un set de procese dirijate către
“crearea – captura – stocarea – punerea în comun – aplicarea – reutilizarea”
cunoştinţelor (ex: Sydanmaanlakka, 2000).
Această definiţie prezintă KM ca implicând un set oarecum mecanic şi secvenţial
de etape şi se focalizează asupra cunoştinţelor explicite în detrimentul conoştinţelor
tacite. O altă definiţie care prezintă mai bine caracterul complex al KM este:
“identificarea, optimizarea şi gestiunea activă a bunurilor intelectuale, fie sub
forma cunoştinţelor explicite conţinute în artefacte, fie a cunoştinţelor tacite
aparţinând indivizilor sau comunităţilor” (Snowden, 2000).
(Notă. Artefact, conform Dicţionarului enciclopedic, vol.I, 1993, pag. 117, este un
produs artificial sau accidental întâlnit în observarea şi experimentarea unui
fenomen natural.)
Optimizarea cunoştinţelor explicite presupune consolidarea şi punerea la dispoziţia
indivizilor de diverse artefacte. Optimizarea cunoştinţelor tacite se realizează prin
crearea de comunităţi care deţin, pun în comun şi dezvoltă acest tip de cunoştinţe.
Gestiunea activă a bunurilor intelectuale constă în crearea de infrastructuri şi de
procese de management, pentru a reuni artefactele şi comunităţile într-o dinamică
comună, care va susţine crearea, utilizarea şi menţinerea capitalului intelectual.
Această definiţie are meritul de a recunoaşte că demersul KM se adresează atât
cunoştinţelor explicite cât şi celor tacite, precum şi interacţiunii între cele două şi
de a lua în considerare mecanismele care permit acest lucru.
n
pi 0, i 2,,n; pi 1 (1.1) i1
În acest mod, experimentul X pune în evidenţă un câmp finit de probabilitate
X,e, pe, care se mai poate nota prin repartiţia variabilei aleatoare discrete:
Bazele informaticii economice 9
e
informaţia adusă prin producerea evenimentului i este cu atât mai mare cu cât
probabilitatea acestuia este mai mică.
p
i
Termenul de entropie vine din limba greacă (en - „în”, tropo – „conversiune”,
„involuţie”, „transformare”, „schimbare”) şi a fost introdus în termodinamică de
fizicianul german Rudolf Clausius în 1850, pentru a indica gradul de
ireversibilitate a transformărilor energiei într-un sistem închis.
Observaţie. H X este cantitatea medie de informaţie obţinută prin efectuarea
experimentului cu n rezultate posibile, descris de variabila aleatoare X.
HX se mai numeşte entropie informaţională.
Ca unitate de măsură a cantităţii medii de informaţie a fost acceptat „bit”-ul
(BInary digiT – cifră binară). Un BIT reprezintă cantitatea de informaţie obţinută
prin apariţia unui eveniment din două egal probabile.
Entropia informaţională care se obţine prin precizarea uneia din cele două cifre
echiprobabile 0 şi 1 ale sistemului binar, cu repartiţia:
0 1
X : 1/ 2 1/ 2
2 2 i1 2 2 2 2
Ca multipli se utilizează:
1 byte (octet) = 23 bits = 8 bits
1 KB (kilo byte) = 210 bytes = 1024 bytes
1 MB (mega byte) = 1024 KB = 220 bytes
1 GB (giga byte) = 1024 MB = 230 bytes
p p
Dacă i 1şi k 0pentru k i şi 1 k n, atunci:
Hnp1,p2,,pn0
În situaţia în care un eveniment este sigur, celelalte sunt imposibile; deci nu există
nici o incertitudine şi informaţia medie este nulă.
Conform lui L. von Bertalanffy „sistemul este format dintr-o mulţime de elemente
aflate într-o interdependenţă neîntâmplătoare”.
Definiţia 1.2. Prin sistem se înţelege orice secţiune a realităţii în care se identifică
un ansamblu de fenomene, obiecte, procese, concepte, fiinţe sau grupuri,
interconectate printr-o mulţime de relaţii reciproce, precum şi cu mediul
înconjurător şi care acţionează în comun în vederea realizării unor obiective bine
definite.
Figura 1.2
Transformarea vectorului de intrare X în vectorul de ieşire Y se realizează cu
ajutorul funcţiei de transformare :
Y X
Figura 1.3
În cazul în care apar diferenţe între vectorul ieşirilor (Y) şi vectorul obiectivelor
propuse (Z), mecanismul de reglare va genera mărimea de reglare x în scopul
de a aduce ieşirile (Y) la nivelul obiectivelor stabilite. Din relaţia Z xx se
poate determina vectorul de reglare x .
Ideea de bază de la care a pornit Norbert Wiener a fost aceea că toate sistemele de
comandă şi control (sistemele de conducere), indiferent de natura lor, au o structură
principială unică, constând din existenţa a două legături între sistemul de conducere
şi sistemul condus: o legătură directă prin care se transmit comenzile şi deciziile de
la sistemul de conducere către sistemul condus şi o legătură inversă (feedback) prin
care se transmit informaţiile de urmărire şi control de la sistemul condus spre
sistemul de conducere (figura 1.4).
Notă. Unele dintre ideile ciberneticii au fost enunţate încă din anul 1938 de
legătură
medicul român Ştefan Odobleja, directăsa publicată la Paris „Psychologie
în lucrarea
consonnantiste”.
legătură inversă
Figura 1.4
A3. Sistemul cibernetic este un SISTEM DE DIMENSIUNI MARI. Un sistem mare este
caracterizat de numărul mare al elementelor componente şi de varietatea legăturilor
dintre acestea.
14 Curs pentru învăţământ la distanţă
n
ESS Wsi s1,s2,,sn (1.6)
Bazele informaticii economice 15
i1
unde:
ESS - efectul sinergic integral al sistemului S ;
s
Ws - efectul sinergic al subsistemului i determinat prin funcţionarea
sa izolată;
Δ(s1, s2,..., sn) - efectul sinergic determinat de funcţionarea interdependentă a
subsistemelor sale componente. Δ(s1, s2,..., sn) poate fi o valoare
pozitivă sau negativă, adică efectul sinergic poate avea un efect
complementar pozitiv determinând o amplificare a efectului
integral sau negativ, micşorând efectul integral.
Bunuri pentru Piaţa bunurilor şi Cererea de bunuri şi consum serviciilor servicii pt.
consum guvernamental Preţurile produselor guvernamental
Impozite şi taxe Sistemul Plăţi transferabile guvernamental
Împrumuturi Cererea de bani
guvernamentale Rata dobânzii pentru acoperirea deficitului
Piaţa financiară
Figura 1.6 Sistemul guvernamental ([SCA97a])
În structura oricărei organizaţii (firme) se pot identifica trei sisteme corelate între
ele (figura 1.7):
S
i
s
t
e
m
u
l
d
e
c
i
z
i
o
n
a
l
Sistemul Sistemul
informaţional operaţional
Figura 1.7 Sistemele organizaţiei
clienţi
comenzi comenzi
subsistemulsubsistemul de control logistic
furnizori
studii pro
subsistemul de subsistemul de
personal moţionale
marketing
(resurse umane)
HX
Hr X HmaxX (1.7)
Definiţia 1.4. Sistemul informatic este un ansamblu coerent structurat, format din
echipamente electronice de calcul şi comunicaţie, procese, proceduri automate şi
manuale, inclusiv structurile organizatorice şi personalul care utilizează
calculatorul ca instrument în procesul de prelucrare a datelor.
În cadrul oricărei firme se pot pune în evidenţă mai multe nivele de decizie (fig.
1.10).
Exemple:
Lansarea unui nou produs –sistemul informatic de gestiune furnizează studii de
piaţă, rapoarte asupra costurilor etc.
Recrutarea personalului cu calificare superioară – sistemul informatic furnizează
CV-urile candidaţilor, rapoarte grafologice, scrisori de recomandare etc.
La nivel tactic deciziile sunt mult mai frecvente; ele corespund adesea la
adaptarea sistemului la mediul înconjurător sau la încercarea de ameliorare a
funcţionării sistemului.
Exemple:
Alegerea unei noi politici de preţ – sistemul informatic de gestiune furnizează
elementele de contabilitate analitică ale fiecărui produs, rapoartele asupra
sondajelor făcute cu clienţi etc.
Modificarea politicii de aprovizionare – sistemul informatic evidenţiază stările de
lipsă de stoc, o scrisoare a unui furnizor care refuză sau amână livrarea unei
comenzi etc.
Fig. 1.10
Concluzii:
În general se constată la nivelul organizaţiei o lipsă de informaţii utile şi o mare
cantitate de informaţii inutile. Rolul sistemului informatic este de a filtra din
volumul de informaţii, numai pe acelea utile.
Sistemul informatic dă posibilitatea îmbunătăţirii procesului decizional prin
punerea la dispoziţie a informaţiei necesare la momentul oportun.
Fluiditatea informaţiei şi accesibilitatea contribuie, de asemenea, la îmbunătăţirea
gestiunii organizaţiei. În viziunea bazelor de date informaţia trebuie să fie
accesibilă tuturor celor care o solicită. Acest lucru se realizează prin utilizarea
limbajelor de interogare a bazelor de date.
Să ne reamintim...
„Avantajul competitiv real se obţine de surse invizibile, adică din informaţii sau
circuite informaţionale, resursele vizibile pot fi cumpărate sau copiate rapid, cele
invizibile se acumulează însă în ani” (Hiroyouki Itami).
Cunoştinţa este conform lui Peter Drucker “informaţia care schimbă ceva sau pe
cineva – fie devenind baza unor acţiuni, fie permiţând unei persoane sau
organizaţii
să acţioneze diferit sau mai eficace”.
Rezumat
Cunoştinţa include capacitatea de a evalua informaţia într-un sens sau scop. A
avea cunoştinţe sau abilitatea de a efectua sarcini complexe, presupune mai mult
decât a
avea o listă de instrucţiuni sau informaţii necesare; se cere abilitatea manipulării
informaţiilor sau a sarcinilor.
crearea de comunităţi care deţin, pun în comun şi dezvoltă acest tip de cunoştinţe.
Gestiunea activă a bunurilor intelectuale constă în crearea de infrastructuri şi de
procese de management, pentru a reuni artefactele şi comunităţile într-o dinamică
comună, care va susţine crearea, utilizarea şi menţinerea capitalului intelectual.
Această definiţie are meritul de a recunoaşte că demersul KM se adresează atât
cunoştinţelor explicite cât şi celor tacite, precum şi interacţiunii între cele două şi
de a lua în considerare mecanismele care permit acest lucru.
sunt folosite de un număr mare de utilizatori – situaţi de cele mai multe ori la
distanţă, lucrul posibil prin utilizarea reţelelor de calculatoare şi a noilor tehnologii
de comunicare;
utilizează intens aparatul matematic- cercetarea operaţională, analiza factorială,
teoria stocurilor, teoria aşteptării, teoria reînnoirii etc.
îmbină utilizarea procedurilor automate cu procedurile manuale;
datorită schimbărilor frecvente ale cerinţelor utilizatorilor, sistemul informatic
trebuie să fie prevăzut încă din faza de proiectare cu posibilităţi rapide şi simple de
modificare;
sunt costisitoare – datorită resurselor materiale pe care le solicită atât în faza de
proiectare cât şi în exploatare. Se apreciază că ponderea componentei software în
cadrul preţului unui sistem electronic de calcul este în creştere continuă, ajungând
la 80-90%.
Introducere
Bazele informaticii economice 27
În anul 1617 John Neper (matematician scoţian, care a introdus în 1614 noţiunea
de logaritm), crează un dispozitiv de calcul care permite înlocuirea operaţiilor de
înmulţire şi împărţire prin adunare şi scădere.
fost numită aritmometru şi a cunoscut de-a lungul timpului mai multe perfecţionări
( de la acţionarea manuală la cea electrică), sub următoarele forme:
maşini de casă pentru magazine;
maşini de calcul mecanice, acţionate manual, realizând afişarea rezultatelor prin
intermediul unor tamburi (principiul odhner utilizat şi la realizarea contoarelor de
energie, apă, kilometrajul mecanic al autovehiculelor etc.);
maşini de calcul electromecanice bazate tot pe principiul mecanic al roţilor odhner,
dar alimentate electric.
Memoria internă este realizată din inele de ferită, ceea ce-i conferă rapiditate,
fiabilitate mai bună, capacitate de stocare a datelor până la 32 KB. Viteza de calcul
ajunge la 2 x 105 instrucţiuni pe secundă.
Apar echipamentele periferice (cititorul de cartele, imprimanta, banda
magnetică), sunt programate proceduri de interfaţă (drivere) care asigură legătura
dintre dispozitivul de intrare/ieşire, memorie şi unitatea de control şi de calcul
(CPU). Se realizează primele produse software de bază, care vor revoluţiona
programarea: asambloare, linkeditoare, compilatoare etc.
Program Rezultate
Calculatorul
Date electronic
Figura 5.1.
Unitatea de
comandă
Date
Unitatea aritmetică şi Memoria
logică Rezultate Centrală
Ansamblul de periferice
32 Curs pentru învăţământ la distanţă
Figura 5.2.
Figura 5.3.
Organizarea
Memoria centrală poate fi considerată o succesiune de elemente fizice (celule
elementare) care pot memora o informaţie binară. Un grup ordonat de 8 celule
binare formează un octet (byte). Octeţii sunt numerotaţi crescător începând cu 0.
Numărul asociat fizic fiecărui octet din memoria internă se numeşte adresa
absolută. Cea mai mică unitate adresabilă în memoria centrală este octetul. Prin
specificarea adresei, un octet este precis localizat în memorie. Unui octet i se poate
schimba conţinutul, dar adresa îi rămâne întotdeauna aceeaşi.
Un grup de octeţi consecutivi formează o zonă de memorie. Identificarea unei zone
de memorie se face prin adresa şi lungimea ei. De regulă, adresa unei zone de
memorie este adresa celui mai din stânga octet, iar lungimea este dată de numărul
octeţilor din zona respectivă.
Selecţie memorie RM
Figura 5.4
Registrul de memorie (RM) conţine informaţia detectată după citire, sau informaţia
care urmează să fie stocată în memorie la adresa indicată de (RA).
Registrul de memorie este o zonă de tranzit obligatorie; are aceeaşi dimensiune cu
cuvântul memorie.
Noţiunea de instrucţiune
Instrucţiunea, ca orice informaţie este în prealabil înregistrată în MC. Ne vom
referi la instrucţiunile în limbaj de asamblare care descriu în general o singură
operaţie în cod maşină (de exemplu încarcă un registru cu conţinutul unei locaţii de
memorie, adună la valoarea memorată într-un registru o valoare dispusă în alt
registru sau într-o locaţie de memorie etc.). Acţiunea descrisă de o instrucţiune a
unui limbaj de nivel înalt presupune, de obicei, execuţia unei secvenţe de operaţii
în cod de maşină.
Se numeşte format al instrucţiunii, descrierea conţinutului ordinului elementar dat
calculatorului. Formatul unei instrucţiuni conţine:
codul operaţiei (COP), care indică natura ordinului de executat; - adresa
operanzilor (AOP).
Observaţie. Datele sunt indicate prin adresa lor în MC; aceasta păstrează caracterul
general, independent al programului de valorile concrete ale datelor de prelucrat.
C omanda
operaţiei
Opera Opera
nd 1 nd 2
Figura 5.5
Bazele informaticii economice 35
Operand 2 Operand 1
Figura 5.6.
B. Ansamblul de periferice
tipul aplicaţiilor), utilizatorul poate opta pentru o configuraţie adecvată, care să-i
permită rezolvarea problemelor.
(FD/HD/CD
/DVD)
Figura 5.8
1. Microprocesorul
Microprocesorul
Bazele informaticii economice 39
Figura 5.9.
Ceasul intern este un oscilator ce emite pulsaţii la intervale de timp egale. Toate
activităţile sunt coordonate de aceste pulsaţii periodice emise de ceasul intern.
Ceasul intern nu are nici o legătură cu ceasul sistem care dă timpul curent (ora şi
data), contorizat de memoria CMOS şi care poate fi modificat prin comenzi ale
sistemului de operare.
Frecvenţa cu care sunt generate pulsaţiile se numeşte frecvenţa ceasului intern.
Unitatea de măsură este hertz-ul care are ca multipli kilohertz-ul (1kHZ = 103 Hz),
megahertz-ul (1 MHz = 106 Hz), gigahertz-ul (1 GHz = 109).
Fiecare microprocesor se caracterizează printr-o valoare maximă a frecvenţei de
ceas la care funcţionează. De exemplu, un procesor Intel Celeron poate funcţiona la
2.80 GHz. Dimensiunea registrelor interne şi capacitatea magistralei de date sunt
importante pentru viteza de lucru a microprocesorului. Procesoarele actuale
folosesc registre interne de 32 bits. Cu cât dimensiunea registrelor este mai mare,
cu atât numărul operaţiilor de transfer cu memoria internă este mai mic şi deci
timpul de lucru se micşorează.
De asemenea, cu cât dimensiunea magistralei de date este mai mare, cu atât
volumul de date care circulă pe această magistrală este mai mare, iar viteza
calculatorului creşte.
Dimensiunea magistralei de adrese dă posibilitatea de adresare. Procesoarele
recente dispun de o magistrală de adrese pe 32 bits, ceea ce extinde posibilităţile de
Bazele informaticii economice 41
Memoria internă
Memoria ROM
Memorie RAM
În afara sistemului principal, diverse tipuri de RAM se găsesc şi în alte zone ale
calculatorului avînd diferite utilizări:
memoria cache (prezentată anterior la microprocesor);
memoria – tampon pentru imprimantă (printer buffer) – păstrează datele ce
urmează a fi tipărite până ce imprimanta le poate prelua. În acest mod,
calculatorului i se permite să transmită datele respective şi apoi să continue lucrul
în timp ce imprimanta tipăreşte;
memoria video (video buffer) – permite afişarea rapidă pe monitor a unor imagini
video complexe;
memoria fantomă (shadow RAM) sporeşte viteza de lucru a calculatorului copiind
informaţiile din ROM în RAM. În acest mod informaţiile elementare de intrare /
ieşire sunt citite din RAM, operaţie mult mai rapidă decât citirea din ROM BIOS.
Bazele informaticii economice 43
Hard-disk
3.4. Unitatea CD
Discul CD – ROM (Compact Disk Read Only Memory) reprezintă un mediu
performant de stocare a datelor prin mijloace optice. Înregistrarea datelor pe CD se
Bazele informaticii economice 45
Unitate de CD-ROM
Dispozitive periferice
Asigură interfaţa dintre utilizător şi calculator – introducerea comenzilor,
programelor şi a datelor precum şi extragerea rezultatelor.
Tastatura (keyboard)
Reprezintă dispozitivul principal de intrare pentru comenzi şi date în sistem. Se
permite astfel, intervenţia în desfăşurarea unui proces. Tastatura standard
dezvoltată de IBM conţine 101 taste. Ordonarea literelor pe tastatură este dată de
frecvenţa apariţiei lor în diferite limbi, de exemplu prima linie este AZERTY în
cazul tastaturii franţuzeşti şi QWERTY la tastatura englezească.
definiţia – orice imagine afişată pe ecran este realizată dintr-o mulţime de puncte
numite pixeli. Dimensiunea (diametrul) unui pixel dă definiţia monitorului: cu cât
această valoare este mai mică, cu atât imaginea este mai clară;
rezoluţia – este dată de dimensiunea matricei de pixeli;
dimensiunea monitorului – este reprezentată de lungimea diagonalei
ecranului şi este dată în inches;
rata de împrospătare a imaginii reprezintă numărul de imagini afişate pe secundă
şi deci viteza cu care se realizează reîmprospătarea imaginii. Pixelii monitorului
sunt puşi în corespondenţă bijectivă cu celulele binare din memoria video, aflată în
blocurile memoriei interne. Transformarea informaţiilor din formă binară în forma
semnalelor video care se transmit monitorului se realizează cu ajutorul unui
adaptor video.
Imprimanta
Este un periferic suplimentar destinat tipăririi informaţiilor.
Principalele caracteristici:
rezoluţia – se măsoară în dpi (dots per inch), adică numărul de puncte tipărite pe un
inch.
viteza de tipărire – se măsoară în caractere pe secundă (cps) sau pagini pe minut
(ppm).
dimensiunea hârtiei utilizate – depinde de mărimea carului (în general poate fi A3
sau A4).
Există în prezent mai multe tipuri:
imprimante matriceale (imprimante cu ace (pins)): capul de tipărire având 9, 18
sau 24 de ace acţionează asupra benzii tuşate; rezoluţia este mică (180 – 360 dpi) la
o viteză între 120 şi 800 cps; sunt zgomotoase şi sunt pe cale de dispariţie;
imprimante cu jet de cerneală (imprimante color) au o rezoluţie înaltă (600 dpi) şi
o viteză de aproximativ 8 – 9 ppm. Cerneala este pulverizată printro serie de mici
capilare (duze speciale) la nivelul hârtiei, realizând caractere sau imagini într-o
mare varietate de culori.
imprimante laser – utilizează tehnologia copiatoarelor: o rază laser polarizează
electrostatic un cilindru care va atrage cantităţi variabile dintrun praf de cărbune
(toner) care se va fixa astfel pe hârtie. Au o rezoluţie foarte bună (600 dpi) iar
viteza poate ajunge la 200 ppm.
Alte periferice
Touch Screen – ecranul tactil – selecţia este realizată direct de utilizator pe ecranul
sensibil la atingere; se foloseşte similar mouse-ul.
[ALB 96], [BVB 97], [LIX 94], [NIR 96], [SPB 99]
Sistemul de operare MS-DOS (Micro Soft – Disc Operating System) este un sistem
monoutilizator şi monotasking, implementat pe calculatoarele cu o arhitectură de
tip IBM-PC.
Sistemul de operare MS-DOS oferă o serie de avantaje:
interfaţă utilizator simplă, accesibilă, uşor de utilizat, de tip linie de comandă;
mecanism evoluat de detectare şi tratare a erorilor;
posibilitatea conectării unui număr mare de dispozitive periferice;
gestionarea unei structuri de fişiere eficientă cu o organizare ierarhic-arborescentă;
contabilitatea datei şi orei curente, sistemul inserându-le în informaţiile legate de
fişiere la crearea şi modificarea acestora.
Fişiere şi directoare
Gestionarea datelor pe disc este una din funcţiile cele mai importante ale sistemului
de operare. Fişierul reprezintă elementul fundamental al organizării informaţiei pe
discuri. Fiecare sistem de operare îşi are propriile reguli de organizare a fişierelor
pe disc, reguli care formează sistemul de gestiune a fişierelor.
Sistemul de operare MS-DOS grupează fişierele pe disc într-o structură
arborescentă formată dintr-un director rădăcină (root) şi mai multe subdirectoare.
Un disc în format MS-DOS este divizat în patru părţi:
zona BOOT – este destinată programului de încărcare al sistemului de operare;
zona FAT (File Allocation Table) conţine informaţii de gestiune a sectoarelor; se
marchează sectoarele defecte pentru a fi izolate şi precizează pentru fiecare sector
utilizabil dacă a fost ocupat sau este încă liber;
zona ROOT Directory păstrează informaţiile de gestiune asupra tuturor fişierelor şi
directoarelor: denumirea, lungimea, data creării, atributele;
zona FILE este cea mai mare şi cuprinde fişierele grupate în directoare.
Modelul unui singur calculator care rezolvă problemele mai multor utilizatori
este rapid înlocuit cu modelul unui număr de calculatoare interconectate într-un
sistem numit reţea de calculatoare. Ideea formarii de reţele pentru a face
posibilă partajarea diferitelor resurse şi schimbul de informaţii apare în anii‟70.
Legătura între calculatoare se face instalându-le ca noduri într-o reţea;
interconectările se pot face prin cabluri electrice, fibre optice, laser, satelit,
semnale radio de frecvenţă înaltă (microwave).
avantajul că poate fi uşor extinsă, iar în cazul defectării unei staţii funcţionarea
reţelei nu este influenţată.
Standardul specific acestei topologii este ARCNET.
Topologia de tip inel (ring) se caracterizează prin conectarea calculatoarelor
din reţea printr-o cale de comunicaţie ce formează un inel complet. Pentru
această topologie standardul specific este TOKEN RING.
Topologia de tip magistrală (bus) presupune existenţa unui canal unic de
comunicaţie duală (mesajele pot circula în două sensuri) împărţit între staţii.
Mesajele transmise sunt recepţionate de toate staţiile, acestea selectându-şi
informaţiile care le sunt adresate. Defectarea unei staţii nu afectează
funcţionarea reţelei, dar disfuncţionalităţile la nivelul magistralei (ca şi în cazul
topologiei inel), afectează întreaga reţea. Se utilizează standardul ETHERNET.
Să ne reamintim...
Un sistem electronic de calcul este alcătuit din două componente:
sistemul de echipamente (hardware), care reuneşte toate componentele fizice
folosite în culegerea, memorarea, prelucrarea datelor şi transmiterea
rezultatelor prelucrării;
sistemul de programe (software), reprezintă componenta logică şi cuprinde
totalitatea programelor care asigură conducerea, supravegherea, controlul şi
realizarea procesului de prelucrare; dintre elementele software un rol deosebit
revine
sist
em
ulu
i de
ope
rar
e.
Rezumat
Indiferent de structura constructivă, de sistemul de operare şi de domeniul de
utilizare, arhitectura calculatoarelor se dezvoltă în jurul următoarelor concepte
funcţionale:
funcţia de memorare;
funcţia aritmetică – logică;
funcţia de comandă şi control;
funcţia de intrare – ieşire.
56 Curs pentru învăţământ la distanţă
Modelul unui singur calculator care rezolvă problemele mai multor utilizatori
este rapid înlocuit cu modelul unui număr de calculatoare interconectate într-un
sistem numit reţea de calculatoare. Ideea formarii de reţele pentru a face
posibilă partajarea diferitelor resurse şi schimbul de informaţii apare în anii‟70.
Bazele informaticii economice 57
periferice costisitoare;
partajarea resurselor software – informaţiile existente în reţea pot fi accesibile utilizatorilor,
evitându-se astfel existenţa unor copii multiple pentru date sau programe; accesul este controlat prin
parole, atribute ale fişierelor şi directoarelor şi drepturi de acces specifice fiecărui utilizator, aceste
probleme fiind rezolvate de administratorul de reţea;
flexibilitatea – posibilitatea extinderii simple şi integrării de noi echipamente într-o reţea deja
existentă;
funcţionalitate crescută – prin distribuirea şi multiplicarea unor aplicaţii pe mai multe calculatoare,
astfel încât, dacă din motive tehnice se defectează o parte a reţelei, partea intactă poate continua să
funcţioneze, fără a altera prea mult performanţele sale;
diversificarea serviciilor oferite utilizatorilor, posibilitatea de comunicare între utilizatorii aceleiaşi
reţele, ceea ce permite o mai bună coordonare şi eficientizarea activităţii;
realizarea unor sisteme adaptabile la noile cerinţe, fiabile şi robuste;
costul scăzut al unei reţele faţă de un calculator mare, în condiţiile unei productivităţi apropiate.
Introducere
Acest capitol familiarizează studenții cu noțiunile de algoritm, limbaj
algoritmic, tabelă de decizie, oferă exemple ample penrtu o înțelegere
în detaliu și crează un
fundament logic ce poate fi utilizat în proiectări viitoare de sisteme informatice.
(1)
În cadrul matematicii şi logicii, algoritmii apar ca metode generale pentru rezolvarea tuturor problemelor dintr-o
clasă dată.
În perioada 1931-1947 s-au dezvoltat în cadrul logicii matematice un număr de concepte de
„algoritm” bine delimitate care precizează noţiunea intuitivă. Cele mai importante sunt rezolvarea
ecuaţiilor (J. HERBRAND, K. GÖDEL, S.C., KLEENE, aproximativ în perioada 1931-1936), maşina lui
Turing (A.M. TURING, 1936), λ - calcul (A. CHURCH, 1936) şi conceptele algoritmice ale lui E.L.
POST (1936) şi A.A. MARKOV (1947).
Semnificativ este faptul că toate aceste noţiuni sunt echivalente în sensul că aceleaşi funcţii definite
pe domeniul numerelor naturale, aşa numitele funcţii recursive pot fi calculate prin fiecare din ele. Pe baza
acestei echivalenţe se poate adopta punctul de vedere prin care conceptul intuitiv de algoritm câştigă astfel
precizie. Acest punct de vedere a fost formulat în 1936 de către Church şi este cunoscut în literatura
matematică ca ipoteza lui Church.
mulţime de valori numită domeniul de definiţie, produce în timp finit un alt set de valori (ieşirea).
Algoritmul constituie baza programării calculatoarelor electronice. În activitatea de
rezolvare a problemelor cu calculatorul elaborarea algoritmilor reprezintă cea mai
importantă etapă, obligatorie şi de multe ori dificilă. De calitatea algoritmului proiectat
depinde calitatea şi fiabilitatea programului şi succesul execuţiei acestuia.
Studiul unei probleme compatibile din punctul de vedere al calculatorului
(principial rezolvabilă şi cu soluţie practică realizabilă) conduce la formalizarea şi
abstractizarea ei, în scopul înţelegerii de către calculator. Rezolvarea cu calculatorul a
unei probleme concrete constă din parcurgerea următoarelor etape: a) Formularea
60 Curs pentru învăţământ la distanţă
a1
P
62 Curs pentru învăţământ la distanţă
a b
F
b
P
Bazele informaticii economice 63
a T
Această diagramă se va nota DO-UNTIL (p, a); între structurile DO –WHILE şi DO-UNTIL se
stabilesc următoarele echivalenţe:
an
n
3) Structura L – este o structură oarecare „bine formată”, adică pe orice cale avem un drum de la
intrare la ieşire; poate conţine instrucţiuni de salt necondiţionat; nu există restricţii asupra
predicatelor.
Definiţia 3.1. Dacă o schemă logică are numai structuri D sau D’, atunci ea se numeşte schemă
logică structurată.
S S
Definiţia 3.2. O structură 1 este convertibilă funcţional într-o structură 2 , dacă şi numai
S S
dac pentru orice intrare, 2 calculează aceeaşi funcţie ca şi 1.
C A B x/ x A şi xB
P DO WHILEp,a
P DO UNTILp,a
unde p este un predicat, iar a şi b sunt structurile privilegiate D sau D’; dacă se porneşte
de la un program nestructurat şi se realizează echivalentul său structurat, p poate fi şi o
variabilă booleană.
Corolarul „top-down” este aplicat la analiza problemelor după principiul de „sus în jos”,
realizându-se descompuneri succesive până la ultimul nivel.
Exemplu:
Programul:
s1 s2 s5
T
T
P= p4 s6
p1 F
s3
T
F
p2
F
F T
s4 p3
P = SEQ(f1,f2,s6) f1 = IF-
THEN-ELSE(p1,f4,f5) f4 =
SEQ(s1,s2) f5 = IF-
THEN-ELSE(p2,s3,f6)
f6 = DO-UNTIL (p3,s4)
f2 = DO-WHILE(p4,s5)
Schema logică (organigrama) este o reprezentare grafică a unui algoritm, care foloseşte
diferite figuri geometrice având o anumită semnificaţie; figurile sunt unite prin săgeţi
care arată modul în care acestea se înlănţuiesc. Pentru sporirea clarităţii se admit
următoarele simboluri grafice pentru reprezentarea schemelor logice:
66 Curs pentru învăţământ la distanţă
bloc terminal
bloc de calcul
bloc de intrare
bloc de ieşire
bloc de decizie
bloc conector
săgeata
reprezintă o prescurtare a
ceea ce urmează să se
bloc de procedură dezvolte sau exiată şi doar
se utilizează.
sau
marchează începutul
START sau sfârşitul STOP
al unei scheme logice; sunt
evidenţiate calculele şi
atribuirile ce se efectuează;
indică citirea / scrierea
valorilor unor variabile;
marchează ramificaţiile în
funcţie de o anumită
condiţie; leagă diferitele
puncte ale unei scheme
logice; arată înlănţuirea
blocurilor într-o schemă
logică;
Exemplu de structura L
Exemplu de structura D’
Limbajul algoritmic realizează o scriere mai apropiată de cea liniară. Permite folosirea
unor instrucţiuni care conţin condensat câteva subscheme utilizate frecvent şi câteva
reguli simple de aliniere a textului scris.
Având un algoritm descris într-un astfel de limbaj, translatarea în limbaj de programare nu
presupune decât o concentrare asupra aspectelor sintactice.
Limbajul algoritmic (pseudocodul) realizează specificarea algoritmilor prin două
tipuri de enunţuri: nestandard şi standard:
- enunţurile nestandard sunt fraze în limbaj natural, care pot fi utilizate de
programator în schiţarea formelor iniţiale ale algoritmilor; ele pot fi înlocuite treptat cu
enunţuri standard; sunt marcate cu simbolul „*”;
- enunţurile standard exprimă operaţii cu corespondenţe directe în limbajele de
programare.
1. Instrucţiuni de citire/scriere:
read lista – variabile
write lista – variabile
Citirea constă din transferul de valori de pe mediul de intrare în locaţiile de memorie ale
calculatorului. Scrierea constă din transferul conţinutului (valorii) unor variabile de memorie pe
mediul de ieşire. Pentru citirea/scrierea unor variabile de tip tablou vom utiliza forma:
Bazele informaticii economice 71
variabilă: = expresie
3. Instrucţiunea de oprire:
stop
Observaţie. Prin secvenţă înţelegem un grup de instrucţiuni scrise una după alta.
while condiţie
do secvenţa
Se execută secvenţa atât timp cât condiţia este adevărată; dacă rezultatul evaluării este fals
execuţia se termină.
repeat
secvenţa
until condiţie
Se execută secvenţa (cel puţin o dată) până condiţia devine adevărată.
Cn : secvenţa n
else secvenţa n + 1
Se evaluează expresia; dacă valoarea expresiei este egală cu C1, C2, . . . , Cn se execută
secvenţa corespunzătoare: secvenţa 1, secvenţa 2, . . ., secvenţa n. În caz contrar se
execută secvenţa n + 1.
Determină trecerea la execuţia primei instrucţiuni care urmează celui mai interior ciclu while,
repeat, for care o conţine, ieşindu-se deci din acel ciclu.
Comentariul poate apărea oriunde în program, având rolul de a mări claritatea algoritmului, oferind
explicaţii suplimentare.
Exemple.
1. Algoritmul de calcul al factorialului N!123N se poate prezenta în limbaj algoritmic
astfel:
write F
stop stop stop
2. Diferenţa a două mulţimi date sub formă de vectori (trecerea în limbaj algoritmic a schemei
logice structurate prezentate în paragraful 3.2).
/* diferenţa a două mulţimi */
i: i 1 until
i n
if l 0
then write „diferenţa este vidă”
PROCEDURI ŞI FUNCŢII
Un program poate face apel la unul sau mai multe subprograme.
Structura programului complet conţine:
- un program principal, care nu poate fi apelat ca subprogram; -
o structură de subprograme.
Dacă programul P face apel la un alt program P 1, atunci P se numeşte program apelant, iar
P1 se numeşte program apelat (subprogram).
Subprogramele reprezintă secvenţe de operaţii executate în scopul rezolvării unei
probleme. Aceeaşi secţiune din algoritm în mai multe puncte ale acestuia, poate fi scrisă
o singură dată şi apelată ori de câte ori este nevoie.
Utilizarea procedurilor şi funcţiilor conduce la creşterea eficienţei activităţii de
programare: părţi ale algoritmului pot fi proiectate, codificate şi testate independent una
74 Curs pentru învăţământ la distanţă
faţă de alta. Se pot construi mult mai uşor algoritmi cu complexitate mare, utilizând
module deja proiectate şi verificate. Aceasta sporeşte fiabilitatea programelor şi reduce
efortul de programare.
1. Utilizarea procedurilor:
procedure nume (parametrii
formali) secvenţa
end
apelul procedurii
call nume (parametrii efectivi)
2. Utilizarea funcţiilor:
function nume (parametrii formali)
secvenţa end apelul
funcţiei: nume (parametrii efectivi)
k!
calculul factorialului.
function FACT(M)
FACT: =1 for
i=1,M,1
do FACT: = FACT i
end
Programul principal este:
read n, k
c: FACTn/FACTk/FACTnk
write c
stop
Comentarii.
O procedură poate avea un număr oarecare de parametrii, eventual zero; de exemplu, o
procedură care realizează tipărirea unui mesaj fix nu are parametrii.
Între parametrii formali şi cei efectivi se realizează o corespondenţă biunivocă;
corespondenţa este poziţională. Parametrii actuali şi cei efectivi trebuie să
corespundă cu număr şi tip.
Pentru funcţii, lista de parametrii formali conţine doar parametrii de intrare; singurul
parametru de ieşire este chiar numele funcţiei, care este utilizat în secvenţa de
operaţii a funcţiei ca orice parametru; apelul unei funcţii este considerat ca un
operand al expresiilor.
ITERATIVITATE ŞI RECURSIVITATE
Bazele informaticii economice 75
Iterativitatea este procesul prin care rezultatul este obţinut ca urmare a execuţiei
repetate a unui set de operaţii, de fiecare dată cu alte valori de intrare. Numărul de
iteraţii poate fi cunoscut, dar determinabil pe parcursul execuţiei. Indiferent de situaţie,
numărul de iteraţii trebuie să fie finit.
Recursivitatea este procesul iterativ prin care valoarea unei funcţii se determină pe
baza uneia sau mai multora dintre propriile ei valori anterioare, prin autoapelarea
funcţiei.
Valorile unei funcţii recursive se calculează din aproape în aproape, pe baza valorilor cunoscute
ale funcţiei pentru anumite argumente iniţiale.
Puterea de exprimare a recursivităţii constă în posibilitatea definirii unui număr
infinit de calcule printr-un program recursiv, chiar dacă acesta nu conţine repetări
explicite.
Instrumentul necesar şi suficient folosit la exprimarea calculelor recursive este
subprogramul (procedură sau funcţie) deoarece acest mecanism permite identificarea
printr-un nume a mai multor instrucţiuni.
Subprogramul P este direct recursiv dacă se autoapelează, adică P conţine o referire explicită
la el însuşi.
Subprogramul P este indirect recursiv dacă P conţine un apel la subprogramul
Q, care conţine o referire directă sau indirectă la P.
Pentru a nu conduce la calcule infinite, un subprogram recursiv trebuie să conţină o
condiţie C care la un moment dat devine falsă, caz în care se încheie apelarea recursivă.
Schema unei proceduri recursive poate fi descrisă astfel:
procedure P
if C then . . .
call P
………..
end
Tehnica cea mai des utilizată pentru a termina apelul recursiv constă în definirea unei
funcţii f x, astfel încât f x 0 determină terminarea apelului recursiv.
Dacă se poate demonstra că la fiecare apel valoarea funcţiei scade, atunci rezultă caracterul finit
al calculului descris de procedura respectivă.
Pentru a exemplifica procedeul considerăm funcţia factorial descrisă de:
Aplicaţie.
x
ai , i 0,n. Să se calculeze valoarea polinomului pentru 0 dat.
Polinomul se poate scrie:
Px 0x 1x n1x
a a a a
n şi rezultă relaţiile de recurenţă:
P a0
P Px0 ai, pentru i 1, 2,n
Algoritmul iterativ de calcul a valorii polinomului este:
În variantă pentru determinarea valorii polinomului Px de grad n trebuie calculată funcţia
poln definită recursiv astfel:
poln1 x a0 , dacă n 1
Algoritmul recursiv de calcul a valorii polinomului este:
function POL n if n 0 then POL : a0
end
Pentru rezolvarea unei probleme se pot construi mai mulţi algoritmi, care pot
avea o comportare diferită, chiar dacă setul de date de intrare este acelaşi. Comportarea
se referă la timpul de execuţie şi la memoria necesară.
Analiza unui algoritm înseamnă determinarea resurselor necesare pentru funcţionare
(timp de execuţie şi necesare de memorie). Datorită evoluţiei sistemelor de calcul,
problema memoriei a devenit secundară. Timpul necesar execuţiei unui algoritm este în
general dependent de numărul datelor de intrare.
Pentru fiecare algoritm se poate estima în funcţie de diverse date de intrare
(numărul de parametrii, mărimea tablourilor folosite etc.) un ordin de mărime al timpului
în care se realizează comparările cuprinse în acel algoritm (se consideră) că fiecare
operaţie de comparare se execută într-un segment de timp care se ia ca unitate).
Fie f : N R* o funcţie arbitrară
Definiţia 3.3. Ordinul lui f n este mulţimea funcţiilor gn mărginite superior de
un multiplu pozitiv al lui f n, adică:
În această idee, dacă o implementare a unui algoritm, nu ia mai mult de gn secunde
pentru a rezolva o problemă cu n comparaţii (sau operaţii aritmetice), atunci orice altă
implementare a aceluiaşi algoritm ia un timp de ordinul lui gn secunde. Spunem că
un astfel de algoritm ia un timp de ordinul lui f n pentru orice funcţie f : N R*
astfel ca gnOf n.
În general însă se încearcă exprimarea ordinului unui algoritm ca timpul de rulare al celei mai
simple funcţii f astfel ca gnOf n.
Să presupunem că printr-o analiză riguroasă s-a ajuns pentru timpul de execuţie al unui
algoritm la expresia:
T n an bnc
2
an2
De la un n suficient de mare termenul preponderent devine , ceilalţi având o
contribuţie nesemnificativă la valoarea exactă pentru T n şi deci vor fi neglijaţi. De
asemenea, factorul constant din expresia termenului principal va fi ignorat, pentru că şi
el devine nesemnificativ în caracterizarea ordinului de mărime. Pentru rezultatul obţinut
prin aceste simplificări vom nota:
T n O n 2
Practica a impus ca acceptabili numai algoritmii cu comportare în timp polinomială, adică pentru care
k 0 cu T n
O
n .
k
n 0.00001 0.00002 0.00003 0.00004 0.00005 0.00006
sec sec sec sec sec sec
n2 0.0001 0.0004 0.0009 0.0016 0.0025 0.0036
sec sec sec sec sec sec
n3 0.001 0.008 0.027 0.064 0.125 0.216
sec sec sec sec sec sec
n5 0.1 3.2 24.3 1.7 5.2 13.0
sec sec sec sec sec sec
2n 0.001 1.0 17.9 12.7 35,7 366
Bazele informaticii economice 79
În general se consideră că un algoritm este mai eficient decât altul dacă are un ordin de
mărime pentru timpul de execuţie mai mic.
maxa1,a2,,an.
Metoda 1.
O metodă evidentă este de a determina în paralel cele două valori. Algoritmul este:
/* algoritmul MINIMAX1*/
if ai M
then M : ai
write m, M
stop
Numărul de comparaţii efectuate între elementele vectorului A şi valorile m şi M este
2n1
Metoda 2.
a
Algoritmul prezentat anterior poate fi îmbunătăţi dacă se efectuează comparaţia i M
a
numai în cazul în care condiţia i m este falsă.
Algoritmul este următorul: /*
algoritmul MINMAX2 */
80 Curs pentru învăţământ la distanţă
write m, M stop
Cazul cel mai defavorabil apare atunci când elementele vectorului sunt în ordine
crescătoare, numărul de comparaţii fiind 2n1. Se poate arăta că numărul mediu de
comparaţii în acest caz este 3n/21.
Metoda 3.
În funcţie de paritatea lui n, se începe cu una din următoarele iniţializări:
m: min a1,a2 M : max 1, 2
a a
- dacă n par
a a
- dacă n impar m: 1 M : 1
Se consideră perechi succesive de elemente de forma:
ak ,ak1 cu k =3, 5, …, n-1 pentru n par;
şi k = 2, 4, …, n-1 pentru n impar.
Se compară m cu min k , k1 şi M cu max k , k1 actualizându-se eventual valorile
a a a a
variabilelor m şi M.
Algoritmul pentru această metodă este:
/* algoritmul MINMAX3 */
Bazele informaticii economice 81
read n,
ai,i
1,n if
n mod 2 = 0
a a
then if 1 2
while kn-1
do
if ak,ak1
then if ak <m
then m: ak
a
ifthen Mk:1akM1
82 Curs pentru învăţământ la distanţă
k :k2
write m,M
stop
3s 2 3 2n 2comparaţii, unde x nn1 ,,dacdacăă x nnx n1
comparaţii în rest, deci 3s 3 3 2 n 2 comparaţii.
Propoziţia 3.1. Orice algoritm care determină cel mai mic şi cel mai mare element al unei
mulţimi neordonate cu n elemente necesită cel puţin
3 2 n 2 comparaţii.
Concluzie. Algoritmul prezentat în metoda 3 este optim.
Exemple.
1. Generarea unei variabile aleatoare simplă (variabilă discretă) de forma:
X : px 11px22 xp3n , in1 p1 1
se poate realiza prin metoda inversă după următorul algoritm:
Pasul 0. Iniţializează RND (algoritmul de generare pentru numere aleatoare uniforme pe (0,1)).
x p
Pasul 1. Intrare: i,i 1,n ; i, i 1,n.
i
F
Pasul 5. Dacă U j transfer la pasul 4.
x
Pasul 6. Ieşire X j. Stop.
S P
Pasul 0. Intrare: 0 (stocul iniţial), 0 (preţul unitar)
S P
Se calculează: soldul_ iniţial 0 0
Pasul 1. Intrări în cursul perioadei (stoc, preţ unitar):
Si,Pi , i 1,n.
n
Se calculează:
valoare_intrăr
i i i
S P
i1
Pasul 2. sold_maxim_disponibil = sold_iniţial +valoare_intrări
Pasul 3. Se determină stocul inventariat Q (prin evaluare directă)
S
sold_inventar 0 Pasul 4. Dacă Q n
atunci sold_inventar = sold_inventar +Sn Pn
Q QSn; n n1 şi transfer la pasul 4. altfel
sold_inventar = sold_inventar +QPn
Pasul 5. Se determină:
Valoare_vânzări = sold_maxim disponibil – sold_inventar
Pasul 6. Ieşire: valoare_vânzări, sold_inventar.
Stop.
Definiţia 3.4. O tabelă de decizie ( TD ) asociată unui proces de prelucrare P este un tablou
bidimensional (cu dublă intrare) având forma prezentată în figura 3.2, unde:
C
i,i 1,nsunt condiţiile (situaţiile semnificative) ale procesului P; aceste condiţii sunt variabile logice, fiecare
condiţie i putând să ia i i 2 valori logice alternative;
C v v
A
j, j 1,m sunt acţiunile posibile (programele de acţiuni) ale procesului P, care se iau când condiţiile
îndeplinesc anumite sisteme de valori;
R
k, k 1,M sunt regulile ce precizează acţiunile ce se execută pentru sistemul de valori asociat condiţiilor.
R
Există două tipuri de reguli de decizie: AND şi OR. Regula k se numeşte regulă de tip
ND dacă legătura dintre valorile condiţiilor este: C1k AND C2k AND … AND Cnk şi se
numeşte de tip OR dacă C1k OR C2k OR . . . OR Cnk.
Definiţia 3.5. O tabelă de decizie care conţine toate regulile posibile (M=N) se numeşte tabelă
de decizie cu intrări complete.
În descrierea proceselor de prelucrare a informaţiilor tabelele de decizie nu sunt întotdeauna
complete.
De exemplu, dacă tabela are M reguli, M N , tabela nu are intrări complete şi deci nu
este completă; pentru a o transforma într-o tabelă completă mulţimea regulilor care
lipsesc se identifică cu o nouă regulă (regula M 1) denumită regula ELSE, care se
ataşează tabelei. Dacă pentru regula ELSE nu este asociată o acţiune atunci la această
regulă se asociază acţiunea E= eroare.
Deci, când se construiesc tabele de decizie, acestea trebuie să fie complete; numai astfel
se pot descrie procesele complete de prelucrare, cerinţă ce se impune oricărui algoritm
de calcul.
dacă i1,n, i 2. În acest caz se iau intrări ale condiţiilor valorile: D i TRUE şi
v C
N i FALSE.
C
v
Dacă există i1,n, încât i 2 tabela se numeşte cu intrări extinse.
R
Definiţia 3.7. Regula k din tabela cu intrări limitate se numeşte elementară
Bazele informaticii economice 87
C
dacă ik "~”, i1,n şi se numeşte compusă dacă i1,n, încât Cik = ”~”.
Observaţie. Dacă regula compusă Rk are r intrări ”~” atunci aceasta conţine 2 reguli elementare.
Definiţia 3.8. O tabelă de decizie este ambiguă dacă există regulile compuse
R R R
Rk şi l cu k l încât k l , adică regulile compuse au cel puţin o regulă elementară
comună.
R R A A R R
• Dacă k l , şi k l , atunci k şi l sunt contradictorii (cele
două reguli compuse conţin reguli elementare contradictorii);
R R A A R R
• Dacă k l , şi k l , atunci k şi l sunt redundante (cele două reguli
compuse conţin reguli elementare redundante).
Exemplu.
Să analiză tabela de decizie redusă:
R
Observăm că 1 este independentă de toate celelalte reguli deoarece pe linia condiţiei
C
1 avem (D), iar toate celelalte reguli au (N). Există 6 perechi de reguli dependente:
N v
Pasul 1. Se calculează 1 N / 1, cu N dat de (3.4). Se scrie pe linie în dreptul
C N v
condiţiei 1de 1 ori fiecare din cele 1 valori logice ale condiţiei:
C
rezultă N valori logice ale condiţiei 1, fiecare din valori repetându-se în
N
grupe de 1.
N N v C
Pasul 2. Pentru i 2, 3,, n se calculează i i1 / i , pe linia lui i se
N
vor scrie sub fiecare din grupele de valori constante ale condiţiei Ci1de i
v C
ori, fiecare din cele i valori ale condiţiei i . Se observă că
N
n 1, adică ultima condiţie va avea repetate de un număr de ori valorile sale în
aceeaşi ordine.
Acţiunile sunt:
A1 – studentul este declarat promovat şi este înscris în anul II; A2 –
studentul este înscris în anul II;
A3 – studentul rămâne în anul I (prelungire de şcolaritate); A4 –
studentul este exmatriculat.
Tabela de decizie cu intrări complete va avea 16 reguli. Aplicând algoritmul de construire a
tabelei de decizie cu intrări complete, se obţine:
A2 * * * * * *
A3 * *
* A4 * *
*
Observaţie. S-a notat două valori ale condiţiei C1 astfel: 30,40 cu ”30” şi
40,60 cu ”40”.
Acţiunile sunt:
A1 – scrierea înregistrării SA în FD;
A2 – citirea fişierului FA;
A3 – scrierea înregistrării SB în FD;
A4 – citirea fişierului FB;
A5 – scrierea înregistrării SC în FD;
A6 – citirea fişierului FC; A7 –
reluarea examinării tabelei; A8 –
încheierea procedurii.
Structura de date reprezintă o colecţie de date pe care s-a definit o structură şi pentru care s-au
stabilit procedee de înregistrare şi identificare a componentelor.
92 Curs pentru învăţământ la distanţă
Componentele unei structuri de date pot fi date elementare sau alte structuri de date.
Acestea sunt identificate şi selectate prin nume (identificatori) sau prin poziţia pe care o
ocupă în structură..
Tabloul este o structură de date constituită dintr-o mulţime de elemente de acelaşi tip.
Specificarea unui tablou se face precizând numele, dimensiunea, tipul componentelor,
limitele valorilor indicilor pentru fiecare dimensiune. Tabloul cu o dimensiune se
numeşte vector iar cel cu două dimensiuni matrice. Referirea elementelor se realizează
specificând numele tabloului şi poziţia elementului sub forma unei expresii indiciale
pentru fiecare dimensiune în parte. Memoria internă a unui calculator poate fi
considerată ca fiind structurată liniar. Variabilele simple ocupă câte o locaţie de
memorie, iar elementele unui vector ocupă în ordine locaţii succesive de memorie.
Fie A o matrice de m linii şi n coloane; pentru memorarea ei se pot folosi două metode:
a) sunt memorate succesiv coloanele matricei;
b) sunt memorate succesiv liniile matricei.
1
Calculul funcţiei inverse f ;
k 1
j 1, i k j 1m (3.6)
m
Fie 1, 2,, n mulţimi total ordonate; se notează cu , cele n relaţii de ordine.
A A A
A A A
Atunci pe mulţimea 1 2 n se pot introduce următoarele relaţii de ordine:
1) relaţia de ordine lexicografică: pentru a 1, 2,, n avem a a' dacă:
a a a
Lista liniară este o structură de date omogenă, secvenţială formată din elemente aparţinând unei
mulţimi date. Cele două capete ale listei se numesc bază, respectiv vârf.
Fiecare element al listei informaţia specifică şi eventual informaţia de legătură.
Poziţia elementelor din listă defineşte ordinea elementelor.
Asupra listelor se pot efectua operaţii de tipul:
- accesul la un anumit element, identificat prin numărul de ordine din listă sau prin
valoare;
- ştergerea (eliminarea) unui element dintr-o listă; - concatenarea listelor;
- inserarea unui element într-un anumit loc din listă; - reordonarea elementelor conform
unui anumit criteriu; - descompunerea unei liste în mai multe liste.
Memorarea listelor liniare se poate face în mai multe moduri:
e e e
1 2 n
adresa de bază
94 Curs pentru învăţământ la distanţă
Figura 3.3
Figura 3.4.
Alocarea înlănţuită cere mai multă memorie decât alocarea secvenţială. Ştergerea şi
inserarea de elemente se fac prin modificarea unor adrese de legătură (figurile 3.5 şi 3.6).
Căutarea unui element se face, ca şi în cazul alocării statice, prin parcurgerea secvenţială
a listei, de la începutul către sfârşitul listei.
şters inserat
Pentru a putea referi cu uşurinţă elementul dinaintea elementului curent se poate utiliza lista
dublu înlănţuită (figura 3.7). Fiecare element conţine trei părţi:
- o parte de informaţie;
- adresa elementului predecesor din listă;
- adresa elementului următor din listă.
Figura 3.7.
Bazele informaticii economice 95
elementul
vizibil
(vârful stivei )
baza stivei
Figura 3.8.
Stiva mai poartă numele, după disciplina de lucru, de lista LIFO (Last Input First Output),
adică, ultimul intrat este primul ieşit.
Stiva se poate implementa folosind alocarea secvenţială sau alocarea înlănţuită; implementarea
presupune un spaţiu limitat de memorie.
În cazul alocării secvenţiale, elementele stivei vor fi memorate într-un vector; dimensiunea vectorului
reprezintă capacitatea maximă a stivei.
În cazul alocării înlănţuite, adresa de bază este adresa vârfului stivei, legăturile mergând de la
ultimul spre primul element (de la vârf spre bază).
Încercarea de a scoate un element dintr-o stivă vidă sau de a adăuga un element unei stive
pline conduce la eroare (underflow / overflow).
Întreaga teorie a recursivităţii se bazează pe structura de tip stivă.
Elementul vizibil
…
Baza Vârful
Figura 3.9.
Definiţia 3.9. Un graf neorientat este o pereche G X, , unde X este o mulţime
finită, nevidă de elemente numite noduri, iar X X este o mulţime de perechi
(neordonate) ale lui X, numite muchii.
elementar.
Definiţia 3.11. dacă orice două noduri ale grafului sunt unite prin cel puţin un lanţ graful se
numeşte graf conex.
Definiţia 3.14. Un arbore în care fiecare nod are cel mult doi descendenţi se numeşte arbore
binar.
. . . nivel = 2; adâncime = 1
. . . nivel = 3; adâncime = 2
Figura 3.10
Nodurile fără descendenţi ,,, sunt denumite noduri terminale sau frunze. Nodul
se numeşte rădăcina arborelui.
Adâncimea unui nod este dată de lungimea drumului de la rădăcină la acel nod.
Nivelul unui nod este egal cu (1 + adâncimea nodului). Rădăcina are nivelul 1.
Înălţimea unui arbore este egală cu maximul dintre nivelurile nodurilor
terminale, sau poate fi definită recursiv: înălţimea unui arbore = 1 + maximul dintre
înălţimile subarborilor săi.
Înălţimea arborelui din figura 3.10 este 3.
FIU i j , dacă j este primul descendent al nodului i (se presupune existenţa unei ordini
între descendenţii aceluiaşi vârf – primul este cel din stânga);
FRATE i j , dacă j este descendent al tatălui lui i (adică i şi j au acelaşi părinte) şi j
urmează imediat lui i.
Lipsa fiului, respectiv a fratelui este marcată prin valoarea 0.
98 Curs pentru învăţământ la distanţă
Exemplu .
1
2 3 4
5 6 7 8
9 10 11 12
Figura 3.11
Pentru arborele din figura 3.11 cei doi vectori FIU şi FRATE vor fi:
1 2 3 4 5 6 7 8 9 10 11 12 FIU
2 5 7 0 0 9 0 11 0 0 0 0
FRATE
0 3 4 0 6 0 8 0 10 0 12 0
Celor doi vectori li
se adaugă un vector INF i, i 1,2, n, în care se memorează informaţia din fiecare nod.
O altă modalitate de reprezentare a unui arbore oarecare este de a forma pentru
fiecare nod o listă a descendenţilor săi. Se va utiliza vectorul INF i, i 1,2, n cu
aceeaşi semnificaţie ca mai sus, vectorul CAP cu n componente cu semnificaţia:
MAT 1, i - reprezintă un descendent al nodului pentru care lista ataşată conţine coloana i
din MAT;
MAT 2,i - reprezintă numărul coloanei (adresa) corespunzătoare următorului descendent sau 0,
dacă nu există vreun alt descendent.
Bazele informaticii economice 99
1 2 3 4 5 6 7 8 9 10 11 12
CAP 1 4 6 0 0 8 0 10 0 0 0 0
1 2 3 4 5 6 7 8 9 10 11 12
MAT 2 2 3 0 5 0 7 0 9 0 11 0
De exemplu:
CAP (3) = 6, deci lista descendenţilor nodului 3 începe la adresa (coloana) 6 din MAT.
Rezultă că MAT (1, 6) = 7, adică primul descendent este 7, iar MAT (2, 6) = 7, adică la
adresa (coloana) 7 din MAT vom găsi următorul descendent, care este MAT (1,7) = 8.
Deoarece (2, 7) =0, rezultă că lista descendenţilor nodului 3 s-a încheiat.
ST i j , dacă nodul j este primul descendent (descendent stâng) al nodului i; ST (i)=0, dacă nu
există descendent stâng;
DR i j , dacă nodul j este al doilea descendent (descendentul drept) al nodului i; DR
(i) = 0, dacă nodul i nu are descendent drept.
Pentru arborele binar din figura 3.12, cei doi vectori ST şi DR vor fi:
1 2 3 4 5 6 7
ST 2 5 6 0 0 0 0
DR 0 3 4 0 0 7 0
Exemplu
1
1 3
11
2 3 4 2 6 4
5 6 7 5 7
Figura 3.12
100 Curs pentru învăţământ la distanţă
PARCURGEREA ARBORILOR
Un algoritm de parcurgere a unui arbore trebuie să precizeze ordinea în care se vizitează
(prelucrează) nodurile arborelui, fiecare nod fiind considerat o singură dată.
Corespondenţa descrisă reduce parcurgerea arborilor oarecare la parcurgerea arborilor
binari ataşaţi. La un arbore binar distingem:
• rădăcina ( R)
• subarborele stâng (Ss)
• subarborele drept (Sd)
Parcurgerea arborilor binari se poate realiza în trei moduri:
1. parcurgere în preordine (R, Ş, Sd);
2. parcurgere în inordine (Ss, R, Sd) 3.
parcurgere în postordine (Ss, Sd, R).
2 7
5 11
1
3 8
6 10
4 9
Figura 3.13
A 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 0 1 0
0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0
Observaţie.
În cazul unui graf oarecare, matricea adiacentă este simetrică.
elementele vectorului A.
Rezolvare.
a) Dacă A este un vector oarecare, atunci trebuie parcurse secvenţial elementele
vectorului; sunt necesare cel mult n comparaţii în cazul unei căutări cu succes şi exact
n comparaţii în cazul unei căutări fără succes.
Numărul mediu de comparaţii în cazul unei căutări cu succes este:
1 2 n n 1
n 2
a a a
1 2 n se aplică algoritmul
de căutare binară.
Algoritmul se bazează pe metoda „divide et impera”: se compară x cu elementul
102 Curs pentru învăţământ la distanţă
a
din mijloc, adică cu i , unde i
n2 1
.
a
- dacă i x căutarea se încheie cu succes;
a
- dacă i x se caută în secvenţa:
a1,a2,,ai1 a
dacă x i, sau în secvenţa
ai1,,an a
dacă x i .
a a
unde: 0
, n1
2 j1 2 j
Propoziţia 3.2. Pentru n în cazul unei căutări cu succes se fac cel mult j
comparaţii, iar în cazul unei căutări fără succes se fac j 1 sau j comparaţii.
Observaţie. Algoritmul de căutare binară prezentat este optim în privinţa numărului mediu de
comparaţii.
do i: p2u
Bazele informaticii economice 103
if a i x
then cod: = 1
p: = i
else if a i x
then p:i1
else u : i 1
Exemplu.
Dat vectorul A = (3, 5, 7, 8, 11, 15)
- pentru x =7 cod = 1, p = 3
- pentru x = 10 cod = 0, p = 5
- pentru x = 2 cod = 0, p = 1
Problema sortării constă în a aranja elementele unei mulţimi date astfel încât acestea să
se găsească în relaţie de ordine lexicografică.
Dat vectorul A 1, 2,, n problema sortării constă în a ordona crescător elementele acestui
a a a
vector. Se prezintă în continuare mai multe metode de sortare.
a a
Metoda constă din modificări succesive de forma i i1 până când elementele
vectorului apar în ordine crescătoare; sortarea se termină când pornind cu perechea
a1,a2 şi terminând cu perechea an1,an nu s-a efectuat nici o schimbare.
Algoritmul de sortare prin interschimbare
repeat
logic: = T
for i =1, n-1, 1
a i 1 : w ai ai1
logic: F
until logic
constantă.
for j 2,n,1
Bazele informaticii economice 105
for i 1,n,1
do bki1: ai
Observaţie. Sunt necesari 2 vectori de lucru de diemnsioune n, iar timpul de execuţie este
de ordinul O(n2)
if ai x
Constă în a plasa la fiecare pas un element al vectorului pe poziţia sa finală. La primul pas este
determinat
ak min a1,a2,,an
a a
şi este efectuată interschimbarea 1 k , deci cel mai mic element este plasat pe poziţia sa
finală.
În general la pasul i i 1,2,,n1 se determină ak
min ai,ai1,,an şi se efectuează interschimbarea i
a
a
k.
Algoritmul de sortare prin selecţie.
Bazele informaticii economice 107
repeat
repeat
while ai x
do i:i 1
while x aj
do j : j 1
if i j
i j
while ai x
do i:i 1
while x aj do j : j 1
if i j then ai aj i:i 1
j : j 1
until i j
then quicksort s, j
Se dau 2 vectori:
A a1,a2,,am şi B b1,b2,,bn
având elementele ordonate crescător. Se cere să se interclaseze cele două şiruri, adică să se
construiască un vector:
C c1,c2,,cmn
care să conţină atât elementele lui A cât şi ale lui B în ordine crescătoare.
a b
Dacă se compară i cu j sunt posibile două situaţii:
a b a
- dacă i j se introduc în vectorul C elementul i şi toate elementele care îi
a b
succed lui i în vectorul A şi sunt mai mici decât j ;
b a b
- dacă j i atunci se introduc în C atât elementul j cât şi elementele care îi
b a
succed lui j în vectorul B şi sunt mai mici decât i ;
- în momentul în care un vector este epuizat, elementele neparcurse ale celuilalt
vector sunt introduse în C şi algoritmul se termină.
Algoritmul de interclasare.
ck: bs
3.9. APLICAŢII
[BVB97], [LIG86], [LIX94]
A n A
i i . Elementele fiecărei mulţimi i se consideră în corespondenţă bijectivă cu m
mulţimea 1,2,, i. Se pune problema generării tuturor celor i elemente ale n1
n n
vi,,vi1,vi 1,1,,1
- dacă un astfel de indice i nu există înseamnă că vectorul V curent este
n1,n2,,nm care este cel mai mare în ordine lexicografică şi deci procesul de
generare s-a încheiat.
De exemplu, dacă 1 1, 2, 3, 2 1, 2 şi 3 1, 2, produsul cartezian
A A A
A A A
1 2 3 va avea 322 12 elemente care vor fi generate conform algoritmului în
ordinea: (1, 1, 1), (1, 2, 1), (1, 2, 2), (2, 1, 1), (2, 1, 2), (2, 2, 1), (3, 1, 1), (3, 1, 2), (3, 2,
1), (3, 2, 2).
do vi :1
write v j, j 1,m
logic: F
repeat
i: m repeat
v v
if vi ni then i : i 1 logic:T else vi :1
114 Curs pentru învăţământ la distanţă
stop
Fie mulţimea A cu n elemente. O submulţime B a lui A este orice mulţime ale cărei
elemente aparţin toate lui A. Submulţimile B ale lui A care sunt distincte de A se numesc
submulţimi proprii ale lui A.
2n
Numărul de submulţimi ale unei mulţimi este . De
exemplu, dacă A a,b atunci
PA,a,b,a,b.
2n
Fiind dată o mulţime A cu n elemente, se pune problema determinării celor submulţimi ale
mulţimii A.
Dacă A 1, 2,, n se defineşte vectorul caracteristic al unei submulţimi B
a a a
e e
Relaţia R este reflexivă dacă iR i pentru orice i = 1, 2, . . . , n, adică matricea
A are toate elementele de pe diagonala principală egale cu 1.
e e e e
Relaţia R este simetrică: dacă iR j atunci jR i pentru orice i, j = 1, 2, . . . , n, adică
matricea A este simetrică.
e e e e e e
Relaţia R este tranzitivă: dacă iR j şi jR k atunci iR k pentru orice i, j, k = 1, 2, . . . ,
a a a
n, adică tranzitivitatea este satisfăcută dacă avem ij jk 1 ik 1 pentru orice i, j, k
diferiţi între ei.
Se vor utiliza 3 subprograme de tip function care vor fi apelate din programul principal şi care
vor verifica dacă relaţia este reflexivă, simetrică şi tranzitivă.
stop
end
function simet a,n
do for j j 1,n
end
tranz : = true
for i 1,n
do for j 1,n
do for k 1,n
end
Să ne reamintim...
Algoritmul este un concept folosit în mod intuitiv pentru a desemna
o mulţime finită de operaţii cunoscute, care, executate într-o ordine
bine stabilită, pornind de la o mulţime de valori numită domeniul de
definiţie, produce în timp finit un alt set de valori (ieşirea).
Rezumat
Algoritmul constituie baza programării calculatoarelor electronice. În activitatea de rezolvare a
problemelor cu calculatorul elaborarea algoritmilor reprezintă cea mai importantă etapă,
obligatorie şi de multe ori dificilă. De calitatea algoritmului proiectat depinde calitatea şi
fiabilitatea programului şi succesul execuţiei acestuia.
Studiul unei probleme compatibile din punctul de vedere al calculatorului
(principial rezolvabilă şi cu soluţie practică realizabilă) conduce la formalizarea şi
abstractizarea ei, în scopul înţelegerii de către calculator. Rezolvarea cu calculatorul a
unei probleme concrete constă din parcurgerea următoarelor etape: a) Formularea exactă
a problemei de rezolvat: definirea datelor problemei (intrările) caracterizându-le prin
tip, proprietăţi, domeniul valorilor;
definirea rezultatelor problemei (ieşirile);
precizarea relaţiilor dintre date şi rezultate.
b) Descrierea modului de rezolvare a problemei (algoritmul).
c) Scrierea într-un limbaj de programare convenabil a unui program pe baza
algoritmului definit anterior şi a datelor de prelucrat.
Introducere
În această parte se va
discuta despre: structura de
articol şi fişier
operaţii de prelucrare (gestiune) a fişierelor interclasarea
şi sortarea fişierelor
Bazele informaticii economice 119
Definiţia 4.1. Fişierul – este o colecţie organizată de date omogene din punctul de
vedere al semnificaţiei şi al cerinţelor de prelucrare
Exemplu. Fişierul stocurilor de materiale, fişierul studenţilor, fişierul de contracte.
Pentru a da o formalizare noţiunii de fişier se consideră:
C - o mulţime finită de obiecte care trebuie descrise din punct de vedere
informaţional;
C ci i 1,2,,n; nN
c
Elementele i sunt caracterizate printr-o mulţime finită Ade atribute (proprietăţi):
A nume,datanaşterii,adresa,facultatea
Se notează:
120 Curs pentru învăţământ la distanţă
v a c
ik - valoarea atributului k pentru componenta i .
Fie
k ik i1,2,, işi i n mulţimea valorilor pe care atributul k le
V v n n a
a
poate lua; - reprezintă o valoare specială asociată atributului k , atunci când
c
nu este cunoscută pe moment valoarea acestuia pentru elementul i .
Orice unitate semantică din cadrul unui articol formează o dată. În descrierea operaţiilor
de prelucrare se foloseşte noţiunea generică de câmp, unde da reprezintă conţinutul
câmpului.
Lungimea unui articol este dată de suma lungimilor câmpurilor care îl compun. În
general, înregistrările logice ale unui fişier pot fi de lungime fixă sau de lungime
variabilă.
Un fişier omogen constă din înregistrări logice de lungime fixă.
Pe suport înregistrările logice pot fi grupate în unităţi distincte numite blocuri sau
înregistrări fizice.
Înregistrarea fizică constituie unitatea de informaţie transferată în cursul unei operaţii de
intrare / ieşire.
Memorarea blocată are ca avantaje: creşterea capacităţii de memorare şi creşterea
vitezei de prelucrare prin introducerea unui volum mai mare de date în memoria centrală
la o operaţie I/O.
Legătura dintre bloc şi articol este realizată automat de către sistemul de gestiunea al fişierelor –
componentă a sistemului de operare.
Structura de tip articol este un arbore ale cărui câmpuri (structuri de nivel 1) sunt
descendenţii rădăcinii, subcâmpurile (structuri de nivel 2) fiind descendenţii acestora etc.
De exemplu:
Bazele informaticii economice 121
persoana
Din punct de vedere al structurii datelor dintr-un articol, distingem: date elementare
(nume, localitatea …) şi date grupate (adresa) ce se compun din alte date elementare sau
grupate.
Principiile după care se memorează articolele unui fişier pe purtătorul extern, cu asigurarea
protecţiei şi regăsirii acestora, constituie metoda de organizare.
Tipul de acces reprezintă modalitatea de regăsire (localizare) a articolelor din fişier.
Noţiunea de acces se referă atât la operaţia de scriere cât şi de citire a datelor. Unei organizări
a datelor îi este caracteristică una sau mai multe metode de acces la articole.
Accesul poate fi:
a) Secvenţial – prelucrarea se fac în ordinea fixă a poziţiei fizice în cadrul fişierului;
accesul la articolul n este permis numai după ce s-a citit/scris articolul n1.
pointer
Figura 4.1
Pointerul de fişier avansează la citire şi scriere de la un articol la altul. După citirea ultimului
articol pointerul indică marcatorul de sfârşit de fişier - EOF (End of File).
În limbajele de programare se regăsesc două modalităţi de sesizare a sfârşitului de fişier:
- sesizarea sfârşitului de fişier în cadrul operaţiei de citire a marcatorului EOF (Cobol);
- sesizarea sfârşitului de fişier independent de operaţia e citire )Pascal, C); dacă a fost
citit ultimul articol, pointerul se află înaintea marcatorului EOF; următoarea citire
produce eroare de intrare/ieşire; în limbajul Pascal există funcţia EOF ( ) care
returnează valoarea TRUE dacă pointerul se află după ultimul articol (art n) şi FALSE
în caz contrar.
122 Curs pentru învăţământ la distanţă
Organizarea secvenţială – un fişier F este organizat secvenţial dacă între articolele sale
este definită o relaţie de ordine, astfel încât: art1 < art2 < . . . < art n
Fişierele organizate secvenţial cu articole de lungime variabilă admit numai accesul
secvenţial, cele organizate secvenţial cu articole de lungime fixă admit atât accesul
secvenţial cât şi pe cel relativ.
Accesul relativ este realizat de sistem printr-o deplasare secvenţială faţă de începutul
acestuia, deplasare care este egală cu valoarea expresiei: număr relativ x lungime
articol.
unde: i este un pointer spre articolul i . O pereche i, i este numită index. Mulţimea I este
p r k p
identică cu valoarea dată (se poate folosi o metodă de căutare rapidă, mulţimea I fiind
ordonată); accesul direct la articol se obţine folosind cea de-a doua componentă –
p
pointerul i.
Mulţimea I este memorată sub forma unui tabel, numit tabel de indecşi. În cazul în
care este posibil şi accesul secvenţial la articole, se spune că fişierul are organizare
secvenţial – indexată, modul de acces fiind numit acces mixt.
- copierea unui fişier este operaţia prin care se obţine o copie identică a
acestuia pe un alt suport;
- ştergerea fişierului;
- validarea şi interzicerea accesului la fişier. B. Operaţii la nivel de articol:
- crearea fişierului constă în memorarea articolelor pe un suport tehnic;
- consultarea fişierului este operaţia prin care articolele unui fişier sunt
selectate în vederea efectuării unui proces de prelucrare definit asupra
întregului fişier sau numai asupra unei părţi a acestuia;
- actualizarea este operaţia prin care se pot adăuga noi articole, se pot şterge
acele articole care nu mai conţin date actuale, se pot modifica în unele
articole datele care nu mai sunt actuale.
Interclasarea fişierelor
Două fişiere F1 şi F2 având aceeaşi structură sunt ordonate crescător după
câmpul cheie „cod”; se pune problema interclasării celor două fişiere pentru a alcătui un
al treilea fişier F3, de asemenea ordonat crescător şic are va conţine toate articolele din
cele două fişiere.
Notă. Se va considera în algoritmii care se vor prezenta că sesizarea sfârşitului de filier
se face idnependent de operaţia de citire – aceasta presupune existenţa funcţiei EOF
(nume fişier).
until k1 or k2
if k1
F 12 23 2 3 9 54 34 4 67 11 32 69
Manevra 2 : 2 3 9 54 4 67
F 2 3 9 12 23 34 54 4 11 32 67 69
* procesul de distribuire – interclasare se repetă până când monotonia obţinută arată că fişierul
original este complet sortat;
* rezultă după distribuire:
Manevra 1: 2 3 9 12 23 34 54
Manevra 2: 4 11 32 67 69
F 2 3 4 9 11 12 23 32 34 54 67 69
repeat
• distribuie monotoniile fişierului F succesiv în fişierele temporare Man_1 şi Man_2;
• interclasează Man_1 şi man_2 în F (interclasarea se face considerând perechi succesive
de monotonii); until * F este sortat (conţine o singură monotonie);
* închide fişierele;
stop
De exemplu:
Nr.crt. Cod beneficiar Valoare contract Valoare livrată
1. 2105 1.589.000 458.000
2. 2953 5.750.000 5.750.000
3. 3417 2.000.000 0
Rezolvare:
* iniţializare fişierul CONTRACT
* se sortează fişierul crescător după cheia „CODB”
val_tot: =0; liv_tot: =0; nrcrt: =1
read ONTRACT {NRC, CODP, CODB, QCANT, QLIV, PU, DATAF}
benef : = CODB ; val : = QCANT x PU ; liv : = QLIV x PU
while not EOF (CONTRACT)
do read CONTRACT {NRC, CODP, CODB}
if benef = CODB then val:=
val+QCANT x PU
liv: = liv+QLIV x PU
else write nrcrt, benef, val, liv
val_tot: = val_tot+val
liv_tot: = liv_tot+liv
benef: = CODB; nrcrt: = nrcrt+1
val: = QCANT x PU; PU; liv:=QLIV x PU
write nrcrt, benef, val, liv
val_tot: = val_tot + val;
liv_tot:=liv_tot + liv write „TOTAL” =”,
val_tot,val_liv close CONTRACT
stop
Observaţii.
Fişierul CONTURI este indexul după câmpul cheie CONT.
Citirea în acces direct a unui fişier va fi indicată prin:
Read cheie nume fişier
Analog pentru scrierea în acces direct fişier:
Write cheie nume fişier
Pentru a testa existenţa articolului cu valoarea cheie se va utiliza funcţia logică FOUND ( ).
Rezolvare:
* închide fişierele
TRANZACŢII şi CONTURI stop
Rezolvare:
write kod,cantitate,valoare
* închide fişierele TRANZACŢII şi STOCURI
stop
Să ne reamintim...
Organizarea datelor este un proces complex care include
identificarea, clasificarea şi descrierea proprietăţilor acestora,
gruparea lor în colecţii, reprezentarea pe purtători tehnici, definirea
şi realizarea procedurilor de prelucrare. Procesul de organizare
externă a datelor cuprinde două niveluri de abordare:
logic şi fizic.
Rezumat
Orice unitate semantică din cadrul unui articol formează o dată. În
descrierea operaţiilor de prelucrare se foloseşte noţiunea generică de
câmp, unde da reprezintă
conţinutul câmpului.
Lungimea unui articol este dată de suma lungimilor câmpurilor care îl compun. În
general, înregistrările logice ale unui fişier pot fi de lungime fixă sau de lungime
variabilă.
Un fişier omogen constă din înregistrări logice de lungime fixă. Pe suport
înregistrările logice pot fi grupate în unităţi distincte numite blocuri sau înregistrări
fizice.
Bazele informaticii economice 129
Structura de tip articol este un arbore ale cărui câmpuri (structuri de nivel 1) sunt
descendenţii rădăcinii, subcâmpurile (structuri de nivel 2) fiind descendenţii acestora
etc.
- copierea unui fişier este operaţia prin care se obţine o copie identică a
acestuia pe un alt suport;
- ştergerea fişierului;
- validarea şi interzicerea accesului la fişier. B. Operaţii la nivel de
articol:
- crearea fişierului constă în memorarea articolelor pe un suport tehnic; -
consultarea fişierului este operaţia prin care articolele unui fişier sunt
selectate în vederea efectuării unui proces de prelucrare definit asupra
întregului fişier sau numai asupra unei părţi a acestuia;
- actualizarea este operaţia prin care se pot adăuga noi articole, se pot şterge
acele articole care nu mai conţin date actuale, se pot modifica în unele
articole datele care nu mai sunt actuale.
Temă de control
PROBLEME PROPUSE
130 Curs pentru învăţământ la distanţă
B
1. Arătaţi că operatorul nici (NOR) formează o bază pe mulţimea operatorilor ce se pot defini pe 2 .
1 n 1 n
M n i 1xi D n i1xi M 2 A xmax xmin
r
C3 min min ai,k,aj,k
1i, j rk 1
Se cere schema logică structurată şi limbajul algoritmic.
11. O matrice nenegativă se numeşte stochastică, dacă suma elementelor din fiecare linie a sa
este egală cu 1. Să se scrie programul în limbaj algoritmic care să determine dacă o matrice
de tip mn este stochastică.
d
12. Se dă matricea distanţelor pe cale ferată şi şosea dintre n localităţi, definită astfel: ij cu i
d
j reprezintă distanţa pe cale ferată dintre localităţile i şi j; ij cu i j reprezintă distanţă pe
şosea dintre localităţile i şi j.
Dată o localitate k, să se determine cea mai apropiată şi cea mai îndepărtată localitate pe şosea,
respectiv pe cale ferată.
Se cere rezolvarea în limbaj algoritmic.
13. Matricea Amn defineşte repartiţia comună a două variabile aleatoare. Să se determine
repartiţiile marginale (definite de suma elementelor de pe fiecare linie şi de pe fiecare
coloană).
Se cere schema logică structurată şi limbajul algoritmic.
14. Într-un sondaj de opinie referitor la U.E., pentru un eşantion de N persoane se înregistrează
informaţiile: (vârstă, cod-răspuns), unde;
Să se determine procentul răspunsurilor DA, pentru grupele de vârstă [21,30], [31,40], [41,50].
Se cere rezolvarea în limbaj algoritmic.
15. Se dă o listă cu structura {cont, suma}, ordonată crescător câmpul cont, în care pot exista
două sau mai multe conturi egale. Să se genereze situaţia conturilor care au valori mai mari
decât o valoare W dată. Se cere rezolvarea în limbaj algoritmic.
Indicaţie. Lista poate fi dată sub forma a doi vectori, sau a unui vector având elementele
articole cu structura {cont, suma}, sau a unui fişier cu un număr necunoscut de articole,
având structura {cont, suma}.
16. Se dă matricea A nn. Să se afişeze coloanele care reprezintă şiruri ordonate crescător
şi liniile care reprezintă şiruri ordonate descrescător. (Limbaj algoritmic).
17. Se dă matricea A nn. Să se afişeze toate perechile de linii identice şi toate perechile
de coloane identice.
18. Se consideră două fişiere identice ca structură F1 şi F2, sortate după valorile unei chei de
identificare K. Construiţi tabela de decizie asociată procesului de prelucrare ce realizează
interclasarea celor două fişiere.
19. La un magazin se vând două produse A şi B. Un cumpărător poate solicita unul din produse
sau pe amândouă. Dacă nu există unul din produse vânzătorul face o comandă de
aprovizionare (comanda are aceeaşi formă pentru ambele produse). Dacă produsul solicitat
există se eliberează însoţit de factură fiscală şi chitanţă şi se actualizează stocul. În cazul în
care cumpărătorul nu doreşte nici un produs, i se dau informaţii suplimentare privind
caracteristicile tehnice şi calitative ale produselor. Să se construiască tabela de decizie
privind gestiunea stocului. Să se reducă tabela de decizie obţinută.
22. Se dă un polinom cu coeficienţi reali de două variabile Px,y, având gradul m în raport cu x
şi n în raport cu y, reprezentat sub forma unei matrice aij, 0 i m,
24. Se dă un şir de numere reale având n 3 componente. Se spune că acest şir are o variaţie de
monotonie în poziţia i,2 i n1, dacă
x x x x x
xi1 i i1 sau i1 i i1.
Să se scrie un program în limbaj algoritmic care determină numărul variaţiilor de monotonie ale
şirului.
a) Situaţia produselor pentru care STOC < STCM, în vederea lansării unei comenzi urgente
de reaprovizionare.
b) Indicând data curentă (DATAC), să se obţină situaţia produselor pentru care nu sa mai
realizat o aprovizionare de un număr (NRZ) de zile.
a) Lista studenţilor din grupa G, care au promovat cele trei examene, sub forma:
| Număr curent | Nume | Media |
Indicaţie. Se va calcula media ponderată astfel notai crediti/crediti
program sort_insertie_directa;
uses crt;
const
dimmax = 100;
type
vector = array [1 . . dimmax] of real;
var
136 Curs pentru învăţământ la distanţă
a : vectory;
n, i, j, k :
integer;
logic : boolean;
x : real;
begin clrscr;
write (‟Dimensiunea vectorului : ‟);
readln (n) for i : = 1 to n do
begin
write (‟a [‟,i : 2, ‟ ]
= ‟ ); readln
(a[i] ); end;
for j : =2 to n do
begin
x : =a [j]; k : = 0;
logic : = false; i : = j-1;
repeat
if a [i] <= x
then
begin
k : = i;
logic : = true
end
else begin
a [i+1] : = a [i];
i : = i-1
end
until ( i < 1 ) or
logic; a [k+1] : =
x
writeln (‟Vectorul sortat : ‟);
for i : = 1 to n do
write (a [i] : 8 : 2);
writeln; repeat until
keypressed end.
program sort_interschimbare;
uses crt;
const
dinmax = 100;
type
vector = array [1 . . dimax] of real;
var
v : vector;
aux : real; n, i : integer;
k : boolean;
Bazele informaticii economice 137
begin
clrscr;
write („Dimensiunea vectorului : „) ;
readln (n) for i : = 1 to n do
begin
write („v [ „, i:2, „ ] = „];
readln (v [i]);
end;
repeat
k : = true;
for I : = 1 to n-1 do
if v [i] > v [i+1]
then begin
aux : = v [i];
v [i] : = v [i+1];
v [i+1] : = aux
k : = false
end;
until k;
writeln („Vectorul sortat : „);
for i : = 1 to n do
write (v [i]:8:2;
writeln; repeat until
keypressed end.
Program quicksort_nerecursiv ;
uses crt;
const
dinmax = 100;
type vector = array [1 . . dinmax] of integer;
stack = array [1 . . 10] of record s, d:integer end;
var
v : vector;
stiva : stack;
n, i, j, st, dr, ind, w, x : integer; begin
clrscr; write („Dimensiunea
vectorului : „) ;
readln (n)
for i :=1 to n do
begin
write („v [„, i:2, „] = „);
readln (v [ i ]);
end;
ind:=1 { initializarea stivei}
stiva [1].s :=1; stiva [1].d
:=n;
repeat
st:=stiva [ind].s; dr:=stiva [ind].d;
ind:= ind-1; {extragere din stiva }
i:=st; j:=dr; x:=v[ (i+1) div 2];
repeat
while v[i] < x do
i:=i+1; while x < v
[j] do j:=j-1; if I <=
j then
Bazele informaticii economice 139
begin
w:=v[j];
v [i]:=v [j];
v [j]:= w;
i:=i+1;
j:=j-1;
end
until i > j; if
i < dr then
begin
ind:=ind+1; {creare stiva partitia dreapta}
stiva [ind].s:= i;
stiva [ind].dr:=dr
end;
if st < then
begin
ind:ind+1; {creare stiva partitia stanga}
stiva
[ind].s:=st; stiva
[ind].d:=j end;
until ind=0; writeln („Vectorul
sortat : „);
for i:=1 to n do write
(v[ i ]:8); writeln;
repeat until keypressed
end.
Program quicksort_recursiv;
uses crt; const
dinmax = 100;
type
vector = array [1 . . dinmax] of real;
var
v : vector;
n, i : integer;
if i <= j then
begin w:=a [i];
a [i]:=a [j];
a [j]:= w;
i:=i+1
j:=j-
1 end
until i >j;
if st > j then quicksort (a, st, j);
if i < dr then quicksort (a, i, dr)
end; begin clrscr;
write („Dimensiunea vectorului : „);
readln (n) ;
for i:=1 to n do
begin
write („v [„, i:2, „]
= „]; readln
(v[i]); end;
quicksort (v, 1, n);
writeln („Vectorul sortat : „);
for i:=1 to n do
write (v
[i]:8:2); writeln;
repeat until kezpressed
end.
Crearea unei liste înlănţuite şi tipărirea ei conform disciplinei FIFO şi LIFO program
lista_exemplu;
uses crt; type
sir = string [10];
lista =^pers;
pers = record
nume
:sir;
sal : real;
adr :lista;
end;
var prim, prec, p:lista;
wn: sir; ws : real;
function cautare (n:sir) : boolean; forward;
procedure citeste; begin
write („numele (sf = press return) : „); readln (wn);
if wn <> „„ then begin
write („salariu : „); readln (ws)
end end;
procedure generare; begin
citeste;
new (prin);
prim^.nume :=wn;
Bazele informaticii economice 141
mx, my : matricea;
begin clrscr;
program coeficientul_lui_Spearman;
uses crt; type dim ‚ 1 . . 30; vector
‚ array [dim] of real; var x, y :
vector;
i, j, k, n : dim;
r : real;
procedure spearman (x, y : vector; var r : real);
Bazele informaticii economice 145
Bibliografie
[ALB96] Albeanu G., Sisteme de operare, Editura Petrion, Bucureşti, 1996.
[BVB97] Barbu Ghe., Văduva I., Boloşteanu M., Bazele informaticii, Ed. Tehnică,
Bucureşti, 1997.
[DOD87] Dodescu Ghe. şi alţii, Informatica, Editura Ştiinţifică şi Enciclopedică,
Bucureşti, 1987.
[FLY94] Flynn J., Gestionarea memoriei, Editura Teora, Bucureşti, 1994.
[GER79] Georgescu-Roegen N., Legea entropiei şi procesul economic, Editura Politică,
Bucureşti, 1979.
[IVA92] Ivan I., Adam R., Structuri de date, A.S.E. Bucureşti, 1992.
[JOR95] Jolivet F., Reboul G., Informatique appliquée à la gestion, Ed. Dunod,
Paris, 1995.
[KOH90] Kolb F., Herman A., Informatique et organisation, Les Editions
d‟Organisation, Paris, 1990.
[LIX91] Lixăndroiu D., Vântu M., Programarea în Turbo Pascal cu aplicaţii,
Universitatea Transilvania din Braşov, 1991.
[LIX94] Lixăndroiu D., Bazele informaticii, Universitatea Transilvania din Braşov,
1994.
[LPG81] Livovschi L., Popovici C., Georgescu H., Ţăndăreanu N., Bazele informaticii,
Ed. Didactică şi Pedagogică, Bucureşti, 1981.
[MAR96] Mârşanu R., Informatică generală, Ed. Tehnică, Bucureşti, 1996.
[NAS98] Năstase P., Năstase F., Internet Word Wide Web JavaScript – HTML – Java,
Editura Economică, 1998.
[NIR96] Niţchi Ş., Racoviţan D. şi alţii, Bazele prelucrării informaţiilor şi tehnologie
informaţională, Ed. Intercredo, Deva, 1996.
[OPR99] Oprea D., Analiza şi proiectarea sistemelor informaţionale economice,
Editura Polirom, Iaşi, 1999.
Bazele informaticii economice 147