Documente Academic
Documente Profesional
Documente Cultură
Cap 01
Cap 01
Noiuni introductive
NOIUNI INTRODUCTIVE
1.1. Structura general a unui sistem de calcul
1.2. Algoritmi
1.2.1. Noiuni generale
SOFTWARE DE
APLICAIE
9
SOFTWARE
CAPITOLUL 1
Noiuni introductive
Vom utiliza n continuare termenii de citire pentru operaia de introducere (de intrare) de la tastatur a datelor
iniiale ale unei probleme, i scriere pentru operaia de afiare (de ieire) a rezultatelor obinute. n cazul n
care utilizatorul dorete s rezolve o problem cu ajutorul calculatorului, informaia de intrare (furnizat
calculatorului de ctre utilizator) va consta din datele iniiale ale problemei de rezolvat i dintr-un program
(numit program surs). n programul surs utilizatorul implementeaz (traduce) ntr-un limbaj de programare
un algoritm (aciunile executate asupra datelor de intrare pentru a obine rezultatele). Aceast informaie de
intrare este prezentat ntr-o forma extern, accesibil omului (numere, text, grafic) i va fi transformat de
ctre calculator ntr-o forma intern, binar.
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.
Informaia este nregistrat n memorie.
Memoria intern (memoria RAM - Random Acces Memory) se prezint ca o succesiune de octei (octet sau
byte sau locaie de memorie). Un octet are 8 bii. Bit-ul reprezint unitatea elementar de informaie i poate
avea una din valorile: 0 sau 1.
Capacitatea unei memorii este dat de numrul de locaii pe care aceasta le conine i se msoar n
multiplii de 1024 (2 10 ). 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 memorie se nregistreaz dou categorii de informaii:
Date - informaii de prelucrat;
Programe - conin descrierea (implementarea ntr-un limbaj de programare) a aciunilor care vor fi
executate asupra datelor, n vederea prelucrrii acestora.
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:
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).
10
CAPITOLUL 1
Noiuni introductive
Memorie intern
Unitate central
Memorie extern
Figura 1.3. Unitile funcionale ale unui sistem de calcul
n funcie de numrul de bii transferai simultan pe magistrala de date, microprocesoarele pot fi clasificate
astfel: microprocesoare pe 8 bii (Z80, 8080); microprocesoare pe 16 bii (8086, 8088, 80286) cu
coprocesoarele corespunztoare (8087, 80287); familii de procesoare pe 32 bii (80386DX, 80486,
PENTIUM) cu coprocesoarele corespunztoare (ncepnd de la 486, coprocesoare sunt ncorporate
microprocesoarelor).
Memoria extern este reprezentat, fizic, prin unitile de discuri (discuri dure-hard disk, discuri flexibilefloppy 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
1.2.1. NOIUNI GENERALE
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 la sarcinii respective.
Exemplu:
Algoritmul lui Euclid pentru determinarea celui mai 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.
Probleme legate de algoritmi
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
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).
11
CAPITOLUL 1
Noiuni introductive
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?
START
Simbolul paralelogram
CITETE a, b
STOP
AFIEAZ a, b
12
CAPITOLUL 1
Noiuni introductive
Simbolul dreptunghi
Semnific o atribuire (modificarea
valorii unei date).
a 34
Simbolul romb
Condiie
ndeplinit
?
NU
ACIUNE2
DA
ACIUNE1
valoare_contor
valoare_final
DA
ACIUNE
ACIUNE
valoare_contor valoare_contor + 1
CAPITOLUL 1
Noiuni introductive
ACIUNE 1
Condiie
ndeplinit
?
DA
NU
ACIUNE 2
CITETE L, l
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++).
#include <iostream.h>
Implementare:
<- L
*l
1. Se citesc 2aria
valori
numerice
reale, care
reprezint dimensiunile
(lungimea i limea unui dreptunghi). S se
void main( )
calculeze i s se afieze aria dreptunghiului.
{ double L, l;
AFIEAZ aria
14
STOP
cout<<"Lungime="; cin>>L;
cout<<"Laime="; cin>>l;
double aria = L * l;
cout << "Aria="<< aria;
}
CAPITOLUL 1
Noiuni introductive
ALGORITM max_2_nr
NCEPUT
CITETE a, b
DACA a >= b
ATUNCI AFISEAZA a
ALTFEL AFISEAZA b
SFARIT
Sau:
#include <iostream.h>
void main( )
{ float a, b;
cout<<"a=";cin>>a;
cout<<"b="; cin>>b;
if (a >= b)
cout<<"Maximul este:"<<a;
else
cout<<"Maximul
} pereche de
3. S se citeasc cte 2 numere ntregi, pn la ntlnirea perechii
de numere 0, este:"<<b;
0. Pentru fiecare
#include <iostream.h>
void main( )
{ float a, b, max;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
if (a >= b)
max = a;
else max = b;
cout<<"Maximul este:"<<max;}
ALGORITM max_perechi2
INCEPUT
a 3
CAT TIMP (a#0 sau b#0) REPETA
INCEPUT
CITESTE
a, b
DACA (a>=b)
ATUNCI AFISEAZA
a
ALTFEL AFISEAZA
b
SFARSIT
SFARSIT
CAPITOLUL 1
Noiuni introductive
P2
CAPITOLUL 1
Noiuni introductive
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.
(Preprocesor)
Compilator
Cod
Codsurs
surs
Cod
Codobiect
obiect
Linkeditor
Cod
Cod
executabil
executabil
NTREBRI I EXERCIII
Chestiuni teoretice
17
CAPITOLUL 1
Noiuni introductive
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 gradul II (de forma ax 2 + 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