Notiunile cu care opereaza algoritmii
Algoritmii
opereaza cu urmatoarele notiuni:
Un algoritm prelucreaza datele de
intrare in scopul obtinerii unor rezultate (a datelor de iesire) utilizand si
date intermediare.
Datele sunt valori concrete specifice
fiecarei probleme care vor fi retinute de calculator in anumite zone de
memorie.
Dimensiunea zonelor
de memorie depinde de tipul datelor respective.
Intuitiv, memoria poate fi
reprezentata ca locatii succesive (zone de memorie) identificate prin adrese
(numere de ordine).
Programatorul are sarcina de a
gandi algoritmul unei probleme si de a utiliza cat mai eficient memoria.
În program datele apar fie sub
forma unor constante (valori cunoscute anticipat, care nu se modifica pe
parcursul executiei), fie sub forma de variabile. Constantele si variabilele
sunt obiectele informationale de baza manipulate într-un program.
Putem defini o variabila ca fiind
un nume dat unei zone de memorie.
Datele se caracterizeaza
printr-un anumit tip care va determina :
-o anumita multime
din care data poate lua valori
- un anumit
mod de reprezentare în memoria calculatorului
- o multime
de operatori care pot fi aplicati acestor valori.
- tipul
unei date determina lungimea zonei de memorie ocupata de acea data. În
general, lungimea zonei de memorare este dependenta de calculatorul pe care s-a
implementat compilatorul.
Datele se pot clasifica dupa tipul lor in:
¨
Caractere
¨
Intregi
¨
Reale
¨
Logice
¨
Sir de caractere
-variabilele: retin
date de un tip anume. O variabila isi poate schimba valoarea dar tipul nu.
O variabila pentru a fi prelucrata trebuie sa fie declarata
(anuntata). Acest lucru consta de fapt in precizarea tipului variabilei.
Exemplu:
caracter car
intreg a
real b,c
logic x
sir y
- expresii: o expresie
este alcatuita din unul sau mai multi operanzi legati intre ei prin operatori. Operanzii pot fi constante sau variabile.
Exemplu:
4.5+2*a
unde 4.4, 2, a sunt operanzi iar + si * sunt operatori
Expresiile pot interveni cel mai adesea in instructiuni de
atribuire de tipul:
variabila expresie
Exemplu:
c 2*b-1
Operatori
pentru tipuri numerice :
operator |
semnificatie |
+ |
adunare |
- |
scadere |
* |
inmultire |
/ |
catul
impartirii |
% |
restul
impartirii |
Operatori
relationali :
operator |
semnificatie |
= |
De
egalitate |
<> |
diferit |
> |
Mai
mare |
>= |
Mai
mare sau egal |
< |
Mai
mic |
<= |
Mai
mic sau egal |
Operatori
logici :
operator |
semnificatie |
! |
Negatie
logica |
si |
Si
logic |
sau |
Sau
logic |
Datele de tip logic pot avea doua valori : A
(adevarat) si F (fals)
Reguli de compunere a operatorilor logici :
! |
A |
F |
|
F |
A |
si |
A |
F |
A |
A |
F |
F |
F |
F |
sau |
A |
F |
A |
A |
A |
F |
A |
F |
Principiile programarii
structurate
Programarea structurata a inceput la inceputul anilor 70.
Este un concept cu o importanta fundamentala in scrierea algoritmilor.
In general, algoritmii se eleboreaza prin utilizarea
exclusiva a anumitor structuri (liniara, alternativa, repetitiva).
Prin structura se intelege o anumita forma de imbinare a
operatiilor cu care lucreaza algoritmii.
Structura liniara
Vom
defini structura liniara astfel:
Daca
S1, S2, S3,…Sn sunt structuri ( de orice
tip), atunci:
S1
S2
S3
….
Sn
Constituie
o strucura liniara reprezentata in pseudocod. Iar:
S2
….
Sn
Constituie o strucura
liniara reprezentata in schema logica.
Structura alternativa
In pseudocod :
DACĂ condiţie=True
ATUNCI acţiune1
ALTFEL acţiune2
Exemple:
1.
Se citesc 2 valori numerice
reale, care reprezintă dimensiunile (lungimea şi lăţimea
unui dreptunghi). Să se calculeze şi să se afişeze aria
dreptunghiului.
Se citesc 2 valori
reale. Să se afiseze valoarea maximului dintre cele 2 numere.
ÎNCEPUT Real max, a, b CITEŞTE a, b DACA a >=
b ATUNCI
AFISEAZA a ALTFEL AFISEAZA b SFARŞIT
ALGORITM
max_2_nr
Structura repetitiva
Se
evaluează condiţia de test (figura 1.5.). Dacă aceasta este îndeplinită, se execută ACŢIUNE.
Se revine apoi şi se testează iar
condiţia. Dacă este îndeplinită, se execută (se
repetă) ACŢIUNE, ş.a.m.d. Abia în momentul în care condiţia nu mai este
îndeplinită, se trece mai departe la urmatoarea operatie din
algoritm. Astfel, cât timp condiţia este îndeplinită, se repetă ACŢIUNE. În cazul în care,
la prima testare a condiţiei, aceasta nu este îndeplinită
actiunea nu se executa nici macar odata. Figura
1.5. Structură repetitivă
cu test iniţial
Structuri
repetitive cu test initial (fara contor)
Observatie :
actiune2 este de fapt actiunea care urmeaza structurii repetitive motiv pentru care
in pseudocod se poate scrie :
CÂT TIMP condiţie
EXECUTĂ acţiune
Exisă şi situaţii în care se ştie de la început de câte ori
se va repeta o anumită acţiune. În aceste cazuri se foloseşte
tot o structură de control repetitivă cu test iniţial. Se utilizează un contor (numeric) pentru a ţine o
evidenţă a numărului de execuţii ale acţiunii. De câte ori se execută acţiunea, contorul este incrementat.
Se atribuie contorului valoarea
iniţială (figura 1.6.). Cât timp condiţia (valoarea contorului este
mai mică sau egală cu valoarea finală) este
îndeplinită, se repetă: q ACŢIUNE q incrementare contor (se adună 1 la valoarea anterioară a
contorului).
In pseudocod :
PENTRU contor=val_ini LA val_finala [PAS
p]
EXECUTĂ acţiune;
Structură
repetitivă cu test final:
Structură repetitivă cu test final
In
pseudocod :
REPETĂ
acţiune
PÂNĂ CÂND exp_test=TRUE