Documente Academic
Documente Profesional
Documente Cultură
Noiuni
NOIUNI INTRODUCTIVE
1.1. Structura general a unui sistem de calcul 1.2. Algoritmi 1.2.1. Noiuni generale 1.2.2. Definiii i caracteristici 1.2.3. Reprezentarea algorimilor 1.3. Teoria rezolvrii problemelor
Figura 1.1. Calculatorul - sistem automat de prelucrare a datelor Principalele avantaje ale folosirii calculatorului constau n: viteza mare de efectuare a operaiilor; capacitatea extins de prelucrare i memorare a informaiei. 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.). Software-ul are dou componente principale: Sistemul de operare (de exploatare) care coordoneaz ntreaga activitate a echipamentului de calcul. Sistemul de operare intr n funciune la pornirea calculatorului i asigur, n principal, trei funcii: Gestiunea echitabil i eficient a resurselor din cadrul sistemului de calcul; Realizarea interfeei cu utilizatorul; Furnizarea suportului pentru dezvoltarea i execuia aplicaiilor. Exemple de sisteme de operare: RSX11, CP/M, MS-DOS, LINUX, WINDOWS NT, UNIX. Sistemul de aplicaii (de programare): medii de programare, editoare de texte, compilatoare, programe aplicative din diverse domenii (economic, tiinific, financiar, divertisment). 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.
CAPITOLUL 1 introductive
Noiuni
Figura 1.2. Echipamentul de calcul ca un sistem hardware-software 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: Unitate de intrare (flux de Unitate de ieire (flux de intern -Unitatea deC++) execuie (realizeazMemorie operaii logice i matematice); intrare istream n ieire - ostream n C++) 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
10 extern Memorie
CAPITOLUL 1 introductive
Noiuni
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 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.
CAPITOLUL 1 introductive
Noiuni
1.2.3. REPREZENTAREA ALGORITMILOR 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.
Categorii de simboluri:
Simboluri de nceput i sfrit Simbolul START desemneaz nceputul unui program sau al unui subprogram. Simbolul STOP desemneaz sfritul unui program sau al unui subprogram. Prezena lor este obligatorie.
START
STOP
Simbolul paralelogram
CITETE a, b AFIEAZ a, b
Simbolul dreptunghi
a 34 12
CAPITOLUL 1 introductive
Noiuni
Simbolul romb Simbolul romb este utilizat pentru decizii (figura 1.4.). Se testeaz ndeplinirea condiiei din blocul de decizie. Dac aceast condiie este ndeplinit, se execut ACIUNE1. Dac nu, se execut ACIUNE2. La un moment dat, se execut sau ACIUNE1, sau ACIUNE2.
NU
Condiie ndeplinit ?
DA
ACIUNE2
ACIUNE1
Figura 1.4. Structura de decizie Cu ajutorul acestor simboluri grafice se poate reprezenta orice algoritm. Repetarea unei secvene se realizeaz prin combinarea simbolurilor de decizie i de atribuire. Structurile repetitive obinute pot fi: cu test iniial sau cu test final. Structuri repetitive cu test initial Se evalueaz condiia de test (figura 1.5.). Dac aceasta este ndeplinit, se execut ACIUNE1. Se revine apoi i se testeaz iar condiia. Dac este ndeplinit, se execut (se repet) ACIUNE1, .a.m.d. Abia n momentul DA NU Condiie n care condiia nu mai este ndeplinit, se trece ndeplinit la execuia ACIUNE2. ? Astfel, ct timp condiia este ndeplinit, se repet ACIUNE1. n cazul n care, la prima ACIUNE2 ACIUNE1 testare a condiiei, aceasta nu este ndeplinit, se execut ACIUNE2. Astfel, este posibil ca ACIUNE1 s nu fie executat niciodat. Figura 1.5. Structur repetitiv cu test iniial 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.
Se atribuie contorului valoarea iniial (figura 1.6.). Ct timp condiia (valoarea contorului este mai mic sau egal cu valoarea final) este ndeplinit, se repet:
ACIUNE
CAPITOLUL 1 introductive
Noiuni
Structur repetitiv cu test final: Se execut mai nti ACIUNE1. Se testeaz apoi condiia (figura 1.7.). Se repet ACIUNE1 ct timp condiia este ndeplinit. n acest caz, corpul ciclului (ACIUNE1) este executat cel puin o dat.
ACIUNE 1
DA
14
CAPITOLUL 1 introductive
Noiuni
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.
START ALGORITM aflare_arie_drept INCEPUT CITETE L,l aria <- L*l AFIEAZA aria SFARIT
CITETE L, l
aria <- L * l
Implementare:
AFIEAZ aria
STOP
#include <iostream.h> void main( ) { double L, l; cout<<"Lungime="; cin>>L; cout<<"Laime="; cin>>l; double aria = L * l; cout << "Aria="<< aria; }
Sau:
ALGORITM max_2_nr NCEPUT CITETE a, b DACA a >= b ATUNCI AFISEAZA a ALTFEL AFISEAZA b SFARIT
3. S se citeasc cte 2 numere ntregi, pn la ntlnirea perechii de numere 0, 0. Pentru fiecare pereche de numere citite, s se afieze maximul. Algoritm care utilizeaz structur repetitiv cu test iniial:
ALGORITM max_perechi1 INCEPUT CITESTE a,b CAT TIMP(a#0sau b#0)REPETA INCEPUT DACA (a>=b) ATUNCI AFISEAZA a ALTFEL AFISEAZA b CITESTE a,b SFARSIT SFARSIT 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
15
CAPITOLUL 1 introductive
Noiuni
CAPITOLUL 1 introductive
Noiuni
(Preprocesor) Compilator
Linkeditor
Figura 1.9. Etapele necesare obinerii fiierului executabil Observaii: 1. Mediile de programare integrate (BORLANDC, TURBOC) nglobeaz editorul, compilatorul, linkeditorul i depanatorul (utilizat n situaiile n care apar erori la execuie); 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
17
CAPITOLUL 1 introductive
Noiuni
Chestiuni teoretice
1. Enumerai unitile funcionale componente ale unui sistem de calcul. 2. Care sunt diferenele ntre soft-ul de aplicaie i sistemul de operare? 3. Care este deosebirea ntre algoritm i program? 4. Care sunt proprietile fundamentale ale algoritmilor? 5. Care sunt modalitile de reprezentare a algoritmilor?
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