Documente Academic
Documente Profesional
Documente Cultură
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.
1
Limbaje de Programare - Curs
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
logică. Astfel se impune reformularea algoritmului şi reluarea etapelor de realizarea a
programului.
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.
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.
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, …
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
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.
4
Limbaje de Programare - Curs
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.
Operaţii de calcul
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.
5
Limbaje de Programare - Curs
I.5.6. Scheme logice
I.5.6.1. Simboluri
Simbolurile utilizate sunt de fapt figuri geometrice compuse din arce (săgeţi) ş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.
.
Figura 2 Figura 3
În figura 2 este prezentat simbolul utilizat pentru operaţiile de intrare/ieşire. În figura 3
este prezentat simbolul utilizat pentru reprezentarea unor prelucrări complexe care urmează să
fie detaliate ulterior.
P
B. Simboluri pentru predicat
În figura 4 este reprezentat simbolul pentru o
P P
instrucţiune predicat. S-a utilizat simbolul P pentru
reprezentarea unei condiţii, unui test, sau o expresie
P booleană. În funcţie de valorile datelor, când se ajunge la
acest nod, p poate lua valoarea adevărat sau fals,
alegându-se o ieşire sau cealaltă, conform unei convenţii
făcute anterior. Prin acest simbol se reprezintă regulile de
Figura 4 tip predicat.
6
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ă ieşiri într-o
singură intrare în modul următor, precum şi etichetarea
acestui nod prin înscrierea în cerculeţ a unui cod de
identificare.
Figura 5
Figura 6
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 înţelege forma grafică de reprezentare a unui algoritm utilizând
simbolurile prezentate anterior.
P Pentru a obţine schema logică a unui algoritm se procedează astfel:
se înlocuiesc regulile algoritmului prin simboluri adecvate reprezentând în noduri
operaţiile ce trebuie executate.
se unesc simbolurile în sensul indicat de succesiunea regulilor algoritmului
7
Limbaje de Programare - Curs
START START
0S
CITESTE
A, B 1T
DA NU 1I
A≠0
NU DA
B=0 I=I+1
X=-B/A
T=T+3
SCRIE: SCRIE: SCRIE:
X ECUATIE ECUATIE
IMPOSIBILA NEDETERM S=S+T
NU
I>50
DA
S
STOP
STOP
Figura 7 Figura 8
Schemele logice normalizate prezintă interes prin faptul că pot fi înlocuite în întregime
prin noduri de tip prelucrare. Aceasta şi pentru că într-o accepţiune mai largă nodurile de tip
prelucrare pot prezenta un anumit stadiu de analiză a problemei, de prelucrări foarte complexe
ce pot fi detaliate ulterior. Uneori o asemenea schemă logică se mai numeşte şi schemă
funcţională sau program normalizat.
Figura 9
Scheme logice nenormalizate
S
Limbaje de Programare - Curs
Figura 10
Schemă logică normalizată
B. Structuri de bază
Figura 11
g1 p1 g1
b. Structuri de tip alternativ IF-THEN-ELSE
p g2
p2
În această structură p este un predicat iar g şig2h sunt două
prelucrări. În funcţie de variabilele datelor controlul va fi
p transmis către
p una din instrucţiunile g şi h.
gn
Cu convenţia că g se execută în cazul în caregn predicatul ia
g pn
valoarea “adevărat”, iar h se execută în cazul în care p ia
g h g structură IF-THEN-ELSE (p, g,
valoarea “fals”, această
h h) admite următoarea exprimare: g “DACĂ p, ATUNCI
execută g, ALTFEL execută h”.
Figura 12
g1 p1 g1
p g2
Structurile de tip alternativp2admit douăg2
variante:
gn
pn gn 9
g
Limbaje de Programare - Curs
Tipul pseudo-alternativ: este o structură de tip alternativ
în care prelucrarea h este vidă. Se citeşte: “DACĂ p,
ATUNCI execută g”.
p p
g
g h g
h
p p
g
Figura 13
g1 g h p1 g1 g
h
Tipul multialternativ. Reprezintă o generalizarea tipului alternativ propriu zis, în care
p şi o regrupare
apare g2automată a ieşirilor.
p2 g2
g1 p1 g1
gn
p g2 pn gn
p2 g2
gn g
pn gn
g
Figura 14
g i=VI
i>VF
0
i=i+VP
1 10
g
0
1
g p
Limbaje de Programare - Curs
Figura 17
11