Documente Academic
Documente Profesional
Documente Cultură
I.4 Etapele Realizării Unui Program:: Limbaje de Programare - Curs
I.4 Etapele Realizării Unui Program:: 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.
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
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
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.
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.
. 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.
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.
START
START 0S 1T
A0
DA
STOP
S STOP
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 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
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
pn g
gn
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