Sunteți pe pagina 1din 11

Limbaje de Programare - Curs

I.4 Etapele realizrii unui program:


Realizarea unui program pentru o anumit aplicaie presupune implicarea mai multor etape. Aceste etape sunt independente de limbajul de programare utilizat i implic existen ctorva restricii cu privire la computerul utilizat. Etapele realizrii unui program sunt urmtoarele: 1. Studierea detaliat a cerinelor aplicaiei. Este foarte important ca cerinele impuse de aplicaie s fie foarte bine explicitate. Adic nainte de a trece la realizarea unui program pentru o anumit aplicaie trebuie ca cea aplicaie sa fie foarte bine analizat i cerinele pe care aceasta le impune trebuie s fie complete i consistente. De exemplu o cerina de genul scrie un program care sa rezolve ecuaiile este evident c este incomplet i se impun ntrebri de genul ce tip de ecuaii, cte ecuaii, care este precizia, etc. 2. Analiza problemei i determinarea rezolvrii acesteia. Adic n aceast etap se decide asupra unei metode care poate s rezolve problema. O astfel de metod este des denumit ALGORITM. 3. Traducerea algoritmului realizat la etapa anterioar ntr-un limbaj de programare evoluat corespunztor. Forma scris a acestui program este denumit program surs (source program sau source code). n aceast etap programul trebuie citit i verificat pentru a i se stabili corectitudinea. Aceasta se face prin introducerea unui set de valori i verificarea dac programul furnizeaz valorile corespunztoare corecte. O dat verificat programul este introdus n computer prin intermediul unui Editor. 4. Compilarea programului n limbaj main. Astfel programul obinut n limbaj main se numete object code. n aceast etap compilerul poate determina erori de sintax ale programului. O eroare de sintax este o greeal n gramatica limbajului. de exemplu C++ necesit ca fiecare linie s se termine cu ;. Dac se uit plasarea ; atunci compilerul va semnala eroarea de sintax. Astfel se repet compilarea pn la eliminarea tuturor erorilor de sintax. 5. Programul obinut n urma compilrii, object code, este apoi corelat (linked) cu o serie de biblioteci de funcii (function libraries) care sunt furnizate de sistem. Toate acestea se petrec cu ajutorul unui program numit linker iar apoi programul linked object code este ncrcat n memoria computerului de ctre un program numit loader. 6. Rularea programului compilat, linked i ncrcat cu un set de date pentru testare. Astfel se vor pune n eviden erorile de logic ale programului. Erorile de logic sunt erori care sunt produse de metoda de rezolvare a problemei. Astfel dei programul este scris corect din punct de vedere al sintaxei acesta poate executa ceva ce este incorect n contextul aplicaiei. Poate fi ceva simplu, de exemplu realizarea unei operaii de scdere n loc de adunare. O form particular a erorilor de logic este apariia erorilor de rulare (run-time error). O eroare de rulare va produce o oprire a programului n timpul execuiei pentru c nu anumite instruciuni nu pot fi realizate. De exemplu o mprire la zero sau ncercarea de accesare a datelor dintr-un fiier inexistent. Astfel se impune ca n aceast etap programul s fie reverificat i apoi erorile s fie recorectate prin intermediul Editorului ceea ce impune ca etapele 3,4, i 5 s fie repetate pn la obinerea rezultatelor satisfctoare.

Limbaje de Programare - Curs

7. Programul poate fi pus n execuie pentru rezolvarea problemei pentru care a fost conceput. Este posibil ca pe parcursul execuiei sale s se mai depisteze anumite erori de logic. Astfel se impune reformularea algoritmului i reluarea etapelor de realizarea a programului.

I.5 Algoritmi de calcul I.5.1 Definirea algoritmului:


Prin algoritm se nelege un ansamblu de reguli (instruciuni) de prelucrare, mpreun cu ordinea n care se succed n vederea soluionrii unui tip de probleme.

Algoritmul este o formul sau un set de pai pentru rezolvarea unei probleme particulare. Pentru ca un set de reguli s formeze un algoritm este necesar ca acestea s nu fie ambigue i s aib un punct de oprire bine precizat. Algoritmii pot fi exprimai n orice limb, de la limbajele naturale (englez, romn, etc) la limbajele de programare (C++, etc). Algoritmii sunt folosii peste tot n viaa de zi cu zi. Astfel reeta de realizare a unei prjituri este un algoritm. Majoritatea programelor sunt formate din algoritmi. cea mai important provocare din programare este aceea de a inventa un algoritm elegant care s fie simplu i s necesite un numr minim de pai.

I.5.2 Exemplul 1:
S se precizeze algoritmul de rezolvare a ecuaiei de gradul I AX +B = 0, valorile coeficienilor A i B fiind cunoscute. R0. Declaneaz procesul de rezolvare; urmeaz regula R1 R1 Precizeaz valorile concrete ale coeficienilor A i B; urmeaz regula R2. R2 Dac A 0 atunci urmeaz regula R3 altfel urmeaz regula R6. R3 Calculeaz valoarea expresiei B/A i
2

Limbaje de Programare - Curs

atribuie rezultatul lui X; urmeaz regula R4. R4 Afieaz rezultatul (valoarea lui X); urmeaz regula R5. R5 Oprete procesul de rezolvare. R6 Dac B=0 atunci afieaz mesajul ecuaie nedeterminat urmeaz regula R5 altfel afieaz mesajul ecuaie imposibil urmeaz regula R5. Dup cum se observ regulile (instruciunile) algoritmilor au fost notate cu R0, R6. Fiecare regul precizeaz operaia ce i este proprie precum i regula care i urmeaz.

I.5.3 Exemplul 2:
S se precizeze algoritmul pentru calculul sumei primilor 50 de termeni ai irului: 1, 4, 7, 10, 13, 16, nainte de a trece la rezolvare vom adopta urmtoarele notaii: T pentru valoarea unui termen al irului; I pentru rangul unui termen al irului; S pentru suma primilor 50 de termeni I0 Start I1 Atribuie lui S valoarea 0 I2 Atribuie lui T valoarea 1 I3 Atribuie lui I valoarea 1 I4 Dac I>50 atunci urmeaz instruciunea I8 altfel urmeaz instruciunea I5 I5 Adun T la S I6 Adun 3 la T I7 Adun 1 la I urmeaz instruciunea I4 I8 Afieaz valoarea lui S I9 Stop n cazul exemplului 2 regulile (instruciunile) s-au notat cu I0, I9. n cele dou exemple apar unele elemente ca 0, 1, 3, 50 ale cror valori nu se modific n cursul execuiei i care de regul se numesc constante, iar alte elemente ca A, B, T, S, I ce pot lua diverse valori n cursul execuiei i care de obicei se numesc variabile. Deoarece prelucrarea datelor nu presupune numai lucrul cu cifre, noiunea de constant va fi utilizat ntr-o accepiune mai larg. De exemplu dac se dorete memorarea (n calculator) a numelui unei persoane (POPESCU) se va rezerva n acest scop o zon de memorie n care se va introduce irul de caractere POPESCU. Dac zona de memorie o identificm prin variabila
3

Limbaje de Programare - Curs

NUME atunci POPESCU va constitui valoarea acestei variabile. Evident c n acest caz este vorba de o valoare nenumeric. Pentru a face deosebirea ntre numele de variabile i constantele numerice, acestea din urm se scriu ntre apostrofuri. Constantele i variabilele reprezint datele asupra crora opereaz algoritmii. Variabilele pot fi interpretate ca nume de zone de memorie iar valorile atribuite lor n timpul execuiei algoritmului trebuie interpretate ca fiind coninutul acestor zone. Pentru rezolvarea oricrei probleme, utilizatorul va furniza algoritmului o serie de elemente numite date de intrare sau date iniiale iar algoritmul va furniza utilizatorului soluia problemei sub forma unor rezultate pariale i/ rezultate finale. Se constat c exist posibilitatea ca unele reguli s execute de mai multe ori pn la obinerea rezultatului final. Se spune n acest caz c algoritmul conine un ciclu (ex. regulile I4, I5, I6, I7). Ciclul este caracterizat de dou elemente constitutive: corpul ciclului (grupul de instruciuni care se execut n mod repetat); condiia de ieire din ciclu; Exist dou categorii de cicluri: cicluri cu numr necunoscut de pai (la care numrul de reluri ale corpului ciclului nu poate fi cunoscut din nainte); cicluri cu numr cunoscut de pai (la care numrul de reluri ale corpului ciclului poate fi cunoscut din nainte) Fiind date valoarea iniial VI, valoarea final VF i pasul variabilei de ciclare P, se poate determina numrul de execuii ale corpului ciclului N, utiliznd formula:
VF VI N = +1 P

unde [X] reprezint partea ntreag a numrului X. Instruciunile unui algoritm pot fi clasificate n dou mari categorii: instruciuni de tip prelucrare prin care se realizeaz iniializarea, atribuirea, calculul sau afiarea unei valori i care transmit controlul procesului de rezolvare cel mult unei reguli; instruciuni de tip predicat care presupun efectuarea unui test asupra unei variabile, sau care conin o condiie, n aa fel nct starea momentan a datelor face ca controlul s se transmit ctre una i numai una din instruciunile ce pot primi controlul.

I.5.4 Caracteristicile unui algoritm


Definibilitate: algoritmul este bine definit, fiecare regul este bine precizat i nu conduce la ambiguiti, succesiunea instruciunilor sale este bine stabilit. Realizabilitate: (efectivitate) exist posibilitatea efecturii operaiilor prevzute n instruciunile algoritmului. Finititudine: algoritmul conduce la rezultate dup un numr finit de execuii ale instruciunilor sale. Generalitate: algoritmul se poate utiliza la rezolvarea unei clase ntregi de probleme aplicndu-se datelor iniiale proprii fiecrei probleme n parte (date de intrare) i furniznd rezultatul (soluia) problemei concrete (date de ieire). Automatism: algoritmul poate fi aplicat fr ca instruciunile sale s cear un efort de gndire deosebit, utilizatorul putnd executa n mod mecanic operaiile simple indicate.

I.5.5 Operaii utilizate n algoritmi


ntr-un algoritm fiecare regul trebuie s precizeze foarte clar operaiile ce se execut asupra datelor, lucru nu tocmai simplu de realizat n contextul limbajului natural. De aceea
4

Limbaje de Programare - Curs

pentru operaiile ce pot s apar n descrierea unui algoritm au fost introduse i consacrate notaii simple, care s nu genereze ambiguiti. Aceste notaii se vor prezenta n continuare. Operaii de calcul Prin operaii de calcul se neleg operaiile elementare de adunare, scdere, nmulire, mprire i ridicare la putere. Alte operaii algebrice (extragerea rdcinii, logaritmarea, etc) sunt considerate neelementare i ele pot fi executate numai prin reducere la operaii elementare. Reprezentarea operaiilor n cadrul unui algoritm se poate face fie prin simbolurile consacrate n aritmetic fie prin simbolurile consacrate n limbajele de programare: + adunare - scdere * inmulire / pentru mprire ** pentru ridicare la putere Aceste operaii intervin n cadrul expresiilor. Expresia este o succesiune de variabile i constante legate ntre ele prin semne de operaii i eventual paranteze, dup reguli bine definite. ntr-un algoritm o expresie apare n cadrul unei operaii de atribuire. Operaii de atribuire Printr-o asemenea operaie se atribuie o valoare unei variabile, valoare ce poate fi a unei constante, a unei alte variabile sau a unei expresii. Operaii de test Scopul acestor operaii este de a verifica relaiile existente ntre datele asupra crora opereaz algoritmul pentru a decide transmiterea controlului execuiei. Aceste operaii sunt cunoscute deja din algebr i se reprezint prin semnele: <, >, =, , , . n urma executrii unei operaii de test rezultatul obinut este una din aa numitele valori logice: adevrat sau fals. Operaii de intrare/ieire Aceste operaii au o semnificaie bine definit n cadrul prelucrrii automate a datelor i se refer la introducerea datelor iniiale, respectiv furnizarea rezultatelor. Operaia de intrare se mai numete i operaie de citire i reprezint practic operaia de atribuire a unor valori din afara algoritmului, nregistrate pe diferite suporturi de stocare a datelor, unor variabile utilizate de acesta. Operaia de ieire se mai numete i operaia de scriere sau operaia de afiare i din punct de vedere practic const n furnizarea de la algoritmi ctre utilizator a valorilor unor variabile, valori ce constituie rezultate i care pot fi scrise pe diferite suporturi de stocare a datelor.

Limbaje de Programare - Curs

I.5.6. Scheme logice


Descrierea algoritmilor ntr-un limbaj natural prezint serie de inconveniente care se reflect negativ asupra caracteristicilor acestora. De aceea a fost necesar introducerea unor limbaje pentru descrierea algoritmilor, care s permit o prezentare simpl, ntr-o form apropiat de limbajul natural, dar n acelai timp avnd o structur apropriat de cea a limbajelor de programare. Schemele logice constituie un asemenea limbaj de descriere a algoritmilor, uor de nvat, uor de transpus ntr-un limbaj de programare. n continuare vor fi prezentate simbolurile i structurile elementare care stau la baza elaborrii schemelor logice. I.5.6.1. Simboluri Simbolurile utilizate sunt de fapt figuri geometrice compuse din arce (sgei) i noduri. Un nod se reprezint printr-o figur geometric simpl (dreptunghi, romb, etc). n cele ce urmeaz vor fi prezentate patru tipuri de simboluri. A. Simboluri pentru prelucrare n figura 1 este reprezentat simbolul pentru o instruciune de prelucrare. S-a utilizat simbolul f pentru reprezentarea funciei care opereaz modificarea asupra datelor ce intr n acest nod i care poate fi o operaie elementar sau o operaie complex. Figura 1 Printr-un astfel de simbol se reprezint regulile de tip prelucrare. n practic sunt folosite urmtoarele variante ale acestui simbol:

. Figura 3 Figura 2 n figura 2 este prezentat simbolul utilizat pentru operaiile de intrare/ieire. n figura 3 este prezentat simbolul utilizat pentru reprezentarea unor prelucrri complexe care urmeaz s fie detaliate ulterior.

B. Simboluri pentru predicat

Figura 4

n figura 4 este reprezentat simbolul pentru o instruciune predicat. S-a utilizat simbolul P pentru reprezentarea unei condiii, unui test, sau o expresie boolean. n funcie de valorile datelor, cnd se ajunge la acest nod, p poate lua valoarea adevrat sau fals, alegndu-se o ieire sau cealalt, conform unei convenii fcute anterior. Prin acest simbol se reprezint regulile de tip predicat.

P
Limbaje de Programare - Curs

C. Simboluri de regrupare Acest simbol nu joac nici un rol n prelucrarea efectiv a datelor. El permite regruparea a dou ieiri ntr-o singur intrare n modul urmtor, precum i etichetarea acestui nod prin nscrierea n cercule a unui cod de identificare.

Figura 5 D. Simboluri de tip terminal Aceste dou simboluri nu au nici un rol n prelucrarea efectiv a datelor ele fiind utilizate numai ca semnificaie a nceperii respectiv terminrii unor prelucrri.

Figura 6 I.5.6.2 Reprezentarea algoritmilor prin scheme logice Reprezentarea algoritmilor prin scheme logice reprezint una din cele mai utilizate tehnici pentru exprimarea clar i complet a modului de rezolvare a unei probleme. Prin schem logic se nelege forma grafic de reprezentare a unui algoritm utiliznd simbolurile prezentate anterior. Pentru a obine schema logic a unui algoritm se procedeaz astfel: se nlocuiesc regulile algoritmului prin simboluri adecvate reprezentnd n noduri operaiile ce trebuie executate. se unesc simbolurile n sensul indicat de succesiunea regulilor algoritmului Pentru exemplificare n continuare se vor prezenta schemele logice ale algoritmilor celor dou exemple prezentate la cursul anterior. S se precizeze algoritmul de rezolvare a ecuaiei de gradul I AX +B = 0, valorile coeficienilor A i B fiind cunoscute. (Figura 7); S se precizeze algoritmul pentru calculul sumei primilor 50 de termeni ai irului: 1, 4, 7, 10, 13, 16, (Figura 8) Notaii: T pentru valoarea unui termen al irului; I pentru rangul unui termen al irului; S pentru suma primilor 50 de termeni.

Limbaje de Programare - Curs

START

START 0S 1T

CITESTE A, B DA NU NU X=-B/A SCRIE: X B=0 DA

A0

1I I=I+1 T=T+3 S=S+T I>50 NU

SCRIE: ECUATIE IMPOSIBILA

SCRIE: ECUATIE NEDETERM

DA

STOP

S STOP

Figura 7 A. Scheme logice normalizate

Figura 8

O schem logic se numete normalizat dac ndeplinete urmtoarele reguli: Are un singur arc de intrare (bloc terminal de nceput) i un singur arc de ieire (bloc terminal de sfrit); Exist un traseu de la intrare ctre orice nod i de la orice nod ctre ieire. Schemele logice normalizate prezint interes prin faptul c pot fi nlocuite n ntregime prin noduri de tip prelucrare. Aceasta i pentru c ntr-o accepiune mai larg nodurile de tip prelucrare pot prezenta un anumit stadiu de analiz a problemei, de prelucrri foarte complexe ce pot fi detaliate ulterior. Uneori o asemenea schem logic se mai numete i schem funcional sau program normalizat.

Figura 9 Scheme logice nenormalizate


8

Limbaje de Programare - Curs

Figura 10 Schem logic normalizat B. Structuri de baz Unele structuri ntlnite n schemele logice normalizate se remarc prin generalitatea funcionrii lor. Este vorba de acele structuri care se refer la prelucrri n serie, alternative i repetitive. n continuare se vor prezenta tipurile de structuri de baz pentru fiecare precizndu-se notaia i reprezentarea lor sub form de schem logic normalizat. a. Structuri de tip liniar. Se refer la nlnuirea (tratarea succesiv) a dou prelucrri g i h care pot fi instruciuni simple sau orice prelucrare p admis, conform cu cele prezentate p pn la acest moment, precum i orice parte de schem logic, dac aceast parte are ea nsi o structur se schem normalizat. g h g

g h

Figura 11

b. Structuri de tip alternativ IF-THEN-ELSE

g1 g2

p1

g1

p
p g h g h

g2 p2 n aceast structur p este un predicat iar g i h sunt dou prelucrri. n funcie de variabilele datelor controlul va fi transmis ctre p una din instruciunile g i h. g n convenia Cu c g se execut n cazul n caregpredicatul ia n pn valoarea adevrat, iar h se execut n cazul n care p ia g structur IF-THEN-ELSE (p, g, valoarea fals, aceast h) admite urmtoarea exprimare: g DAC p, ATUNCI execut g, ALTFEL execut h.
p1 g1

g1 p

Figura 12

g2 Structurile de tip alternativ admit doug2 variante: p2 gn

pn g

gn

Limbaje de Programare - Curs

Tipul pseudo-alternativ: este o structur de tip alternativ n care prelucrarea h este vid. Se citete: DAC p, ATUNCI execut g.

p g

g h g h

p g h

p h

g1

p1 p2

g1 g2

Figura 13
g

Tipul multialternativ. Reprezint o generalizarea tipului alternativ propriu zis, n care g2 apare automat a ieirilor. p i o regrupare
g1 p p1 g1 g2

gn

g2

pn
p2

gn

gn

pn g

gn

Figura 14

c. Structuri de tip repetitiv WHILE-DO n aceast structur p reprezint un predicat iar g o prelucrare. Aceast structur se numete ciclu, i admite exprimarea: CT TIMP p este adevrat, EXECUT g

g p

1 0

g
Figura 15
0

0 p Trebuie remarcat c dac p este de la nceput fals g nu se execut nici mcar o dat. 1 Tipul repetitiv admitegla rndul su dou p variante:
Structura DO-UNTIL: unde g se execut cel puin o dat. Admite i=VI exprimarea EXCUT g PN CND p.
i=i+VP g i>VF 1 0

0 g
Figura 16

i=VI

i=i+VP g

10

0
Limbaje de Programare - Curs

Structura DO-FOR: este o variant a structurii WHILE-DO n care predicatul p nu d numai condiia de ieire din ciclu, dar precizeaz i numrul de execuii ale corpului ciclului. Acest control se realizeaz cu variabila de control (aici notat cu I) creia I se precizeaz valoarea iniial VI, valoarea final VF i pasul VP. Variabila de control poate fi utilizat n calculele din prelucrarea g dac prin aceasta nu I se modific valoarea. Prelucrarea g se mai noteaz n aceast variant i prin g(I), pentru a sugera faptul c execuia lui g se face sub controlul variabilei I. Din acelai motiv se obinuiete ca predicatul s se noteze cu p(I).

i=VI

i=i+VP g i>VF 1
Figura 17

11

S-ar putea să vă placă și