Sunteți pe pagina 1din 5

I.

4 Etapele realizării unui program:


Realizarea unui program pentru o anumită aplicaţie presupune implicarea mai multor
etape. Aceste etape sunt independente de limbajul de programare utilizat şi implică existenţă
câtorva restricţii cu privire la computerul utilizat.
Etapele realizării unui program sunt următoarele:

1. Studierea detaliată a cerinţelor aplicaţiei. Este foarte important ca cerinţele impuse de


aplicaţie să fie foarte bine explicitate. Adică înainte de a trece la realizarea unui program
pentru o anumită aplicaţie trebuie ca cea aplicaţie sa fie foarte bine analizată şi cerinţele
pe care aceasta le impune trebuie să fie complete şi consistente. De exemplu o cerinţa de
genul “scrie un program care sa rezolve ecuaţiile” este evident că este incompletă şi se
impun întrebări de genul “ce tip de ecuaţii”, “câte ecuaţii”, “care este precizia”, etc.

2. Analiza problemei şi determinarea rezolvării 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


corespunzător. 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 corespunzătoare corecte. O dată verificat programul
este introdus în computer prin intermediul unui Editor.

4. Compilarea programului în limbaj maşină. Astfel programul obţinut în limbaj maşină se


numeşte object code. În această etapă compilerul poate determina erori de sintaxă ale
programului. O eroare de sintaxă este o greşeală î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 până la eliminarea tuturor erorilor
de sintaxă.

5. Programul obţinut în urma compilării, object code, este apoi corelat (linked) cu o serie de
biblioteci de funcţii (function libraries) care sunt furnizate de sistem. Toate acestea se
petrec cu ajutorul unui program numit linker iar apoi programul linked object code este
încărcat în memoria computerului de către un program numit loader.

6. Rularea programului compilat, linked şi încărcat 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 deşi programul este scris corect
din punct de vedere al sintaxei acesta poate executa ceva ce este incorect în contextul
aplicaţiei. Poate fi ceva simplu, de exemplu realizarea unei operaţii de scădere în loc de
adunare. O formă particulară a erorilor de logică este apariţia erorilor de rulare (run-time
error). O eroare de rulare va produce o oprire a programului în timpul execuţiei pentru că
nu anumite instrucţiuni nu pot fi realizate. De exemplu o împărţire la zero sau încercarea
de accesare a datelor dintr-un fişier 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 până
la obţinerea rezultatelor satisfăcătoare.

7. Programul poate fi pus în execuţie pentru rezolvarea problemei pentru care a fost
conceput. Este posibil ca pe parcursul execuţiei sale să se mai depisteze anumite erori de
1
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 înţelege un ansamblu de reguli (instrucţiuni) de prelucrare, împreună cu
ordinea în care se succed în vederea soluţionării unui tip de probleme.

Algoritmul este o formulă sau un set de paşi 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 exprimaţi în orice limbă, de la
limbajele naturale (engleză, română, etc) la limbajele de programare (C++, etc).
Algoritmii sunt folosiţi peste tot în viaţa de zi cu zi. Astfel reţeta de realizare a unei
prăjituri 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 număr minim de paşi.

I.5.2 Exemplul 1:
Să se precizeze algoritmul de rezolvare a ecuaţiei de gradul I AX +B = 0, valorile
coeficienţilor A şi B fiind cunoscute.

R0. Declanşează procesul de rezolvare;


urmează regula R1

R1 Precizează valorile concrete ale coeficienţilor 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
atribuie rezultatul lui X;
urmează regula R4.
2
R4 Afişează rezultatul (valoarea lui X);
urmează regula R5.

R5 Opreşte procesul de rezolvare.

R6 Dacă B=0

atunci
afişează mesajul “ecuaţie nedeterminată”
urmează regula R5
altfel
afişează mesajul “ecuaţie imposibilă”
urmează regula R5.

După cum se observă regulile (instrucţiunile) algoritmilor au fost notate cu R0, …R6.
Fiecare regulă precizează operaţia 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 următoarele notaţii:


 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ă instrucţiunea I8
altfel
urmează instrucţiunea I5
I5 Adună T la S
I6 Adună 3 la T
I7 Adună 1 la I
urmează instrucţiunea I4
I8 Afişează valoarea lui S
I9 Stop

În cazul exemplului 2 regulile (instrucţiunile) s-au notat cu I0, …I9.


În cele două exemple apar unele elemente ca 0, 1, 3, 50 ale căror valori nu se modifică în
cursul execuţiei şi care de regulă se numesc constante, iar alte elemente ca A, B, T, S, I ce pot
lua diverse valori în cursul execuţiei şi care de obicei se numesc variabile. Deoarece
prelucrarea datelor nu presupune numai lucrul cu cifre, noţiunea de constantă va fi utilizată
într-o accepţiune mai largă. De exemplu dacă se doreşte 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 identificăm prin variabila
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.
3
Constantele şi variabilele reprezintă datele asupra cărora operează algoritmii. Variabilele
pot fi interpretate ca nume de zone de memorie iar valorile atribuite lor în timpul execuţiei
algoritmului trebuie interpretate ca fiind conţinutul acestor zone.
Pentru rezolvarea oricărei probleme, utilizatorul va furniza algoritmului o serie de
elemente numite date de intrare sau date iniţiale iar algoritmul va furniza utilizatorului soluţia
problemei sub forma unor rezultate parţiale şi/ rezultate finale.
Se constată că există posibilitatea ca unele reguli să execute de mai multe ori până la
obţinerea rezultatului final. Se spune în acest caz că algoritmul conţine un ciclu (ex. regulile
I4, I5, I6, I7).
Ciclul este caracterizat de două elemente constitutive:
 corpul ciclului (grupul de instrucţiuni care se execută în mod repetat);
 condiţia de ieşire din ciclu;
Există două categorii de cicluri:
 cicluri cu număr necunoscut de paşi (la care numărul de reluări ale corpului ciclului nu
poate fi cunoscut din înainte);
 cicluri cu număr cunoscut de paşi (la care numărul de reluări ale corpului ciclului poate fi
cunoscut din înainte)

Fiind date valoarea iniţială VI, valoarea finală VF şi pasul variabilei de ciclare P, se poate
determina numărul de execuţii ale corpului ciclului N, utilizând formula:
VF − VI 
N = +1
 P 
unde [X] reprezintă partea întreagă a numărului X.

Instrucţiunile unui algoritm pot fi clasificate în două mari categorii:


 instrucţiuni de tip prelucrare prin care se realizează iniţializarea, atribuirea, calculul sau
afişarea unei valori şi care transmit controlul procesului de rezolvare cel mult unei reguli;
 instrucţiuni de tip predicat care presupun efectuarea unui test asupra unei variabile, sau
care conţin o condiţie, în aşa fel încât starea momentană a datelor face ca controlul să se
transmită către una şi numai una din instrucţiunile ce pot primi controlul.

I.5.4 Caracteristicile unui algoritm


Definibilitate: algoritmul este bine definit, fiecare regulă este bine precizată şi nu conduce
la ambiguităţi, succesiunea instrucţiunilor sale este bine stabilită.
Realizabilitate: (efectivitate) există posibilitatea efectuării operaţiilor prevăzute în
instrucţiunile algoritmului.
Finititudine: algoritmul conduce la rezultate după un număr finit de execuţii ale
instrucţiunilor sale.
Generalitate: algoritmul se poate utiliza la rezolvarea unei clase întregi de probleme
aplicându-se datelor iniţiale proprii fiecărei probleme în parte (date de intrare) şi furnizând
rezultatul (soluţia) problemei concrete (date de ieşire).
Automatism: algoritmul poate fi aplicat fără ca instrucţiunile sale să ceară un efort de
gândire deosebit, utilizatorul putând executa în mod mecanic operaţiile simple indicate.

I.5.5 Operaţii utilizate în algoritmi


Într-un algoritm fiecare regulă trebuie să precizeze foarte clar operaţiile ce se execută
asupra datelor, lucru nu tocmai simplu de realizat în contextul limbajului natural. De aceea
pentru operaţiile ce pot să apară în descrierea unui algoritm au fost introduse şi consacrate
notaţii simple, care să nu genereze ambiguităţi. Aceste notaţii se vor prezenta în continuare.

4
Operaţii de calcul

Prin operaţii de calcul se înţeleg operaţiile elementare de adunare, scădere, înmulţire,


împărţire şi ridicare la putere.
Alte operaţii algebrice (extragerea rădăcinii, logaritmarea, etc) sunt considerate
neelementare şi ele pot fi executate numai prin reducere la operaţii elementare.
Reprezentarea operaţiilor în cadrul unui algoritm se poate face fie prin simbolurile consacrate
în aritmetică fie prin simbolurile consacrate în limbajele de programare:
+ adunare
- scădere
* inmulţire
/ pentru împărţire
** pentru ridicare la putere
Aceste operaţii intervin în cadrul expresiilor. Expresia este o succesiune de variabile şi
constante legate între ele prin semne de operaţii şi eventual paranteze, după reguli bine
definite.
Într-un algoritm o expresie apare în cadrul unei operaţii de atribuire.

Operaţii de atribuire
Printr-o asemenea operaţie se atribuie o valoare unei variabile, valoare ce poate fi a unei
constante, a unei alte variabile sau a unei expresii.

Operaţii de test
Scopul acestor operaţii este de a verifica relaţiile existente între datele asupra cărora
operează algoritmul pentru a decide transmiterea controlului execuţiei. Aceste operaţii sunt
cunoscute deja din algebră şi se reprezintă prin semnele: <, >, =, ≠, ≤, ≥.
În urma executării unei operaţii de test rezultatul obţinut este una din aşa numitele valori
logice: adevărat sau fals.

Operaţii de intrare/ieşire
Aceste operaţii au o semnificaţie bine definită în cadrul prelucrării automate a datelor şi se
referă la introducerea datelor iniţiale, respectiv furnizarea rezultatelor.
Operaţia de intrare se mai numeşte şi operaţie de citire şi reprezintă practic operaţia de
atribuire a unor valori din afara algoritmului, înregistrate pe diferite suporturi de stocare a
datelor, unor variabile utilizate de acesta.
Operaţia de ieşire se mai numeşte şi operaţia de scriere sau operaţia de afişare şi din punct
de vedere practic constă în furnizarea de la algoritmi către utilizator a valorilor unor variabile,
valori ce constituie rezultate şi care pot fi scrise pe diferite suporturi de stocare a datelor.

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 acelaşi timp având o structură apropriată de cea a
limbajelor de programare.
Schemele logice constituie un asemenea limbaj de descriere a algoritmilor, uşor de
învăţat, uşor de transpus într-un limbaj de programare.
În continuare vor fi prezentate simbolurile şi structurile elementare care stau la baza
elaborării schemelor logice.

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