Documente Academic
Documente Profesional
Documente Cultură
NOIUNI INTRODUCTIVE 1
1.1. Structura general a unui sistem de calcul 1.2.2. Definiii i caracteristici
1.2. Algoritmi 1.2.3. Reprezentarea algorimilor
1.2.1. Noiuni generale 1.3. Teoria rezolvrii problemelor
Calculatorul reprezint un sistem electronic (ansamblu de dispozitive i circuite diverse) complex care
prelucreaz datele introduse ntr-o form prestabilit, efectueaz diverse operaii asupra acestora i furnizeaz
rezultatele obinute (figura 1.1.).
Dei construcia unui calculator - determinat de tehnologia existent la un moment dat, de domeniul de
aplicaie, de costul echipamentului i de performanele cerute - a evoluat rapid n ultimii ani, sistemele de
calcul, indiferent de model, serie sau generaie, au o serie de caracteristici comune. Cunoaterea acestor
caracteristici uureaz procesul de nelegere i nvare a modului de funcionare i de utilizare a
calculatorului.
n orice sistem de calcul vom gsi dou pri distincte i la fel de importante: hardware-ul i software-ul.
Hardware-ul este reprezentat de totalitatea echipamentelor i dispozitivelor fizice;
Software-ul este reprezentat prin totalitatea programelor care ajut utilizatorul n rezolvarea problemelor sale
(figura 1.2.).
Componentele unui sistem de calcul pot fi grupate n uniti cu funcii complexe, dar bine precizate, numite
uniti funcionale. Modelul din figura 1.3. face o prezentare simplificat a structurii unui calculator,
facilitnd nelegerea unor noiuni i concepte de baz privind funcionarea i utilizarea acestuia. Denumirea
fiecrei uniti indic funcia ei, iar sgeile - modul de transfer al informaiei.
9
CAPITOLUL 1 Noiuni introductive
SISTEM OPERARE
HARDWARE UTILIZATOR
SOFTWARE DE
APLICAIE
SOFTWARE
Unitatea de intrare (cu funcia de citire) realizeaz aceast conversie a informaiei din format extern n cel
intern. Din punct de vedere logic, fluxul (informaia) de intrare este un ir de caractere, din exterior ctre
memoria calculatorului. Din punct de vedere fizic, unitatea de intrare standard este tastatura calculatorului.
Tot ca uniti de intrare, pot fi enumerate: mouse-ul, joystick-ul, scanner-ul (pentru introducerea informaiilor
grafice).
Unitatea de ieire (cu funcia de scriere, afiare) realizeaz conversia invers, din formatul intern n cel
extern, accesibil omului. Din punct de vedere fizic, unitatea de ieire standard este monitorul calculatorului.
Ca uniti de ieire ntr-un sistem de calcul, mai putem enumera: imprimanta, plotter-ul, etc.
Capacitatea unei memorii este dat de 10 numrul de locaii pe care aceasta le conine i se
msoar n multiplii de 1024 (2). De exemplu, 1 Mbyte=1024Kbytes; 1Kbyte=1024bytes.
Numrul de ordine al unui octet n memorie se poate specifica printr-un cod, numit adres. Ordinea n
care sunt adresate locaiile de memorie nu este impus, memoria fiind un dispozitiv cu acces aleator la
informaie.
n memoria intern este pstrat doar informaia prelucrat la un moment dat. Memoria intern are capacitate
redus; accesul la informaia pastrat n aceasta este extrem de rapid, iar datele nu sunt pstrate dup
terminarea prelucrrii (au un caracter temporar).
Unitatea central prelucreaz datele din memoria intern i coordoneaz activitatea tuturor componentelor
fizice ale unui sistem de calcul. Ea nglobeaz:
10
CAPITOLUL 1 Noiuni introductive
Microprocesorul- circuit integrat complex cu urmtoarele componente de baz:
Unitatea de execuie (realizeaz operaii logice i matematice);
Unitatea de interfa a magistralei (transfer datele la/de la microprocesor).
Coprocesorul matematic circuit integrat destinat realizrii cu vitez sporit a operaiilor cu
numere reale.
Unitate central
Memorie extern
Memoria extern este reprezentat, fizic, prin unitile de discuri (discuri dure-hard disk, discuri flexibile-
floppy disk, discuri de pe care informaia poate fi doar citit-CDROM, DVDROM, etc). Spre deosebire de
memoria intern, memoria extern are capacitate mult mai mare, datele nregistrate au caracter permanent, n
dezavantajul timpului de acces la informaie.
1.2. ALGORITMI
Algoritmul este conceptul fundamental al informaticii. Orice echipament de calcul poate fi considerat o
main algoritmic. ntr-o definiie aproximativ algoritmul este un set de pai care definete modul n care poate
fi dus la ndeplinire o anumit sarcin. Exemplu de algoritm: algoritmul de interpretare a unei buci muzicale
(descris n partitur). Pentru ca o main de calcul s poat rezolva o anumit problem, programatorul
trebuie mai nti s stabileasc un algoritm care s conduc la efectuarea a sarcinii respective.
Exemplu:
Algoritmul lui Euclid pentru determinarea celui ma
i mare divizor comun (cmmdc) a 2 numere ntregi pozitive.
Date de intrare: cele 2 numere ntregi
Date de iesire: cmmdc
1. Se noteaz cu A i B- cea mai mare, respectiv cea mai mic, dintre
datele de intrare
2. Se mparte A la B i se noteaz cu R restul mpririi
3. a. Dac R diferit de 0, se atribuie lui A valoarea lui B i lui B
valoarea lui R. Se revine la pasul 2.
b. Dac R este 0, atunci cmmdc este B.
Descoperirea unui algoritm care s rezolve o problem echivaleaz n esen cu descoperirea unei soluii a
problemei. Dup descoperirea algoritmului, pasul urmtor este ca algoritmul respectiv s fie reprezentat ntr-o
11
CAPITOLUL 1 Noiuni introductive
form n care s poat fi comunicat unei maini de calcul. Algoritmul trebuie transcris din forma conceptual
ntr-un set clar de instruciuni. Aceste instruciuni trebuie reprezentate ntr-un mod lipsit de ambiguitate. n
acest domeniu, studiile se bazeaz pe cunotinele privitoare la gramatic i limbaj i au dus la o mare
varietate de scheme de reprezentare a algoritmilor (numite limbaje de programare), bazate pe diverse abordri
ale procesului de programare (numite paradigme de programare).
Cutarea unor algoritmi pentru rezolvarea unor probleme din ce n ce mai complexe a avut ca urmare apariia
unor ntrebri legate de limitele proceselor algoritmice, cum ar fi:
Ce probleme pot fi rezolvate prin intermediul proceselor algoritmice?
Cum trebuie procedat pentru descoperirea algoritmilor?
Cum pot fi mbuntite tehnicile de reprezentare i comunicare a algoritmilor?
Cum pot fi aplicate cunotinele dobndite n vederea obinerii unor maini algoritmice mai performante?
Cum pot fi analizate i comparate caracteristicile diverilor algoritmi?
Definiii:
Algoritmul unei prelucrri const ntr-o secven de primitive care descrie prelucrarea.
Algoritmul este un set ordonat de pai executabili, descrii fr echivoc, care definesc un proces finit.
Reprezentarea (descrierea) unui algoritm nu se poate face n absena unui limbaj comun celor care vor s l
neleag. De aceea s-a stabilit o mulime bine definit de primitive (blocuri elementare care stau la baza
reprezentrii algoritmilor). Fiecare primitiv se caracterizeaz prin sintax i semantic. Sintaxa se refer la
reprezentarea simbolic a primitivei; semantica se refer la semnificaia primitivei. Exemplu de primitiv: aer-
din punct de vedere sintactic este un cuvnt format din trei simboluri (litere); din punct de vedere semantic este
o substan gazoas care nconjoar globul pmntesc.
Primitivele utilizate n schemele logice sunt simboluri grafice, cu funciuni (reprezentnd procese de calcul)
bine precizate. Aceste simboluri sunt unite prin arce orientate care indic ordinea de execuie a proceselor de
calcul.
Categorii de simboluri:
Simbolul paralelogram
Simbolul dreptunghi
Semnific o atribuire (modificarea
a 34
valorii unei date).
Simbolul romb
Simbolul romb este utilizat pentru decizii
(figura 1.4.). Se testeaz ndeplinirea
condiiei din blocul de decizie. Dac
NU Condiie DA
ndeplinit aceast condiie este ndeplinit, se
? execut ACIUNE1. Dac nu, se execut
ACIUNE2. La un moment dat, se execut
ACIUNE2 ACIUNE1 sau ACIUNE1, sau ACIUNE2.
Exis i situaii n care se tie de la nceput de cte ori se va repeta o anumit aciune. n aceste cazuri se
folosete tot o structur de control repetitiv cu test iniial. Se utilizeaz un contor (numeric) pentru a ine o
eviden a numrului de execuii ale aciunii. De cte ori se execut aciunea, contorul este incrementat.
contorvaloare_iniial
Se atribuie contorului valoarea iniial
(figura 1.6.). Ct timp condiia (valoarea
NU DA contorului este mai mic sau egal cu
valoare_contor
valoare_final valoarea final) este ndeplinit, se repet:
ACIUNE
incrementare contor (se adun 1 la valoarea
ACIUNE anterioar a contorului).
valoare_contor valoare_contor + 1
13
NU
ACIUNE 2
Pseudocodul este inspirat din limbajele de programare, nefiind ns att de formalizat ca acestea. Pseudocodul
reprezint o punte de legtur ntre limbajul natural i limbajele de programare. Nu exist un standard pentru
regulile lexicale. Limbajul pseudocod permite comunicarea ntre oameni, i nu comunicarea om-maina
(precum limbajele de programare). Pseudocodul utilizeaz cuvinte cheie (scrise cu majuscule subliniate) cu
urmtoarele semnificaii:
Pe lng cuvintele cheie, n reprezentarea algoritmilor n pseudocod pot apare i propoziii nestandard a caror
detaliere va fi realizat ulterior.
n cazul n care se realizeaz un algoritm modularizat, pot apare cuvintele cheie:
SUBALGORITM nume (lista_intrri)
CHEAM nume (lista_valori_efective_de_intrare)
14
CAPITOLUL 1 Noiuni introductive
Exemple:
Se vor reprezinta n continuare algoritmii de rezolvare pentru cteva probleme simple (pentru primele 2
probleme se va exemplifica i modul de implementare a acestor algoritmi n limbajul C++).
1. Se citesc 2 valori numerice reale, care reprezint dimensiunile (lungimea i limea unui dreptunghi). S se
calculeze i s se afieze aria dreptunghiului.
ALGORITM aflare_arie_drept
INCEPUT
START CITETE L,l
aria <- L*l
AFIEAZA aria
SFARIT
CITETE L, l
Creterea complexitii problemelor supuse rezolvrii automate (cu ajutorul calculatorului) a determinat ca
activitatea de programare s devin, de fapt, un complex de activiti.
n acest context, activitatea de programare a devenit o activitate organizat, definindu-se metode formale de
dezvoltare a fiecrei etape. Etapele descrise anterior alctuiesc ciclul de via al unui produs software i
constituie obiectul de studiu al disciplinei numite ingineria sistemulor de programe (software engineering).
Teoreticienii ingineriei programrii consider c rezolvarea unei probleme se poate face pe 3 direcii:
Rezolvarea orientat pe algoritm (pe aciune), n care organizarea datelor este neesenial;
Rezolvarea orientat pe date, aciunile fiind determinate doar de organizarea datelor;
Rezolvarea orientat obiect, care combin tendinele primelor dou abordri.
P P
16
S detaliem n continuare etapa de implementare. Dup analiza problemei i stabilirea algoritmului, acesta
trebuie tradus (implementat) ntr-un limbaj de programare.
Compilarea
Procesul de compilare este realizat cu ajutorul compilatorului, care translateaz codul surs n cod obiect
(cod main), pentru ca programul s poat fi neles de calculator. n cazul limbajului C, n prima faz a
compilrii este invocat preprocesorul. Acesta recunoate i analizeaz mai nti o serie de instruciuni
speciale, numite directive procesor. Verific apoi codul surs pentru a constata dac acesta respect
sintaxa i semantica limbajului. Dac exist erori, acestea sunt semnalate utilizatorului. Utilizatorul
trebuie s corecteze erorile (modificnd programul surs). Abia apoi codul surs este translatat n cod de
asamblare, iar n final, n cod main, binar, propriu calculatorului. Acest cod binar este numit cod obiect
i de obicei este memorat ntr-un alt fiier, numit fiier obiect. Fiierul obiect va avea, de obicei, acelai
nume cu fiierul surs i extensia .obj.
Linkeditarea
Dupa ce programul surs a fost translatat n program obiect, el este va fi supus operaiei de linkeditare.
Scopul fazei de linkeditare este acela de a obine o form final a programului, n vederea execuiei
acestuia. Linkeditorul leag modulele obiect, rezolv referinele ctre funciile externe i rutinele din
biblioteci i produce cod executabil, memorat ntr-un alt fisier, numit fiier executabil (acelai nume,
extensia .exe)
Execuia
Lansarea n execuie const n ncrcarea programului executabil n memorie i startarea execuiei sale.
Observaii:
1. Mediile de programare integrate (BORLANDC, TURBOC) nglobeaz editorul, compilatorul, linkeditorul
i depanatorul (utilizat n situaiile n care apar erori la execuie);
17
CAPITOLUL 1 Noiuni introductive
2. Dac nu se utilizeaz un mediu integrat, programatorul va apela n mod explicit (n linie de comand) un
editor de texte, compilatorul, linkeditorul. Lansarea n execuie se va face tot din linie de comand.
3. Extensiile specificate pentru fiierele surs, obiect i executabile sunt
NTREBRI I EXERCIII
Chestiuni teoretice
1. Enumerai unitile funcionale componente ale 4. Care sunt proprietile fundamentale ale
unui sistem de calcul. algoritmilor?
2. Care sunt diferenele ntre soft-ul de aplicaie 5. Care sunt modalitile de reprezentare a
i sistemul de operare? algoritmilor?
3. Care este deosebirea ntre algoritm i
program?
Chestiuni practice
1. Reprezentai algoritmul lui Euclid (pentru calculul celui mai mare divizor comun a 2 numere ntregi) prin
schema logic.
2. Proiectai un algoritm care s rezolve o ecuaie de gradul I (de forma ax + b = 0), unde a,b sunt numere
reale. Discuie dup coeficieni.
3. Proiectai un algoritm care s rezolve o ecuaie de 2 gradul II (de forma ax + bx + c = 0), unde a,b,c sunt
numere reale. Discuie dup coeficieni.
4. Proiectai un algoritm care s testeze dac un numr ntreg dat este numr prim.
5. Proiectai un algoritm care s afieze toi divizorii unui numr ntreg introdus de la tastatur.
6. Proiectai un algoritm care s afieze toi divizorii primi ai unui numr ntreg introdus de la tastatur.
7. Proiectai un algoritm care calculeaz factorialul unui numr natural dat. (Prin definiie 0!=1)
18