Sunteți pe pagina 1din 65

Curs

PCLP1
Algoritmi

2
1. ALGORITMI

1. Noţiunea de algoritm
2. Reprezentarea unui algoritm
3. Concepţia unui algoritm
4. Obiectele cu care lucrează algoritmii
5. Exemple de algoritmi elementari

3
Introducere
o Comportamentul uman şi gândirea sunt
caracterizate de secvenţe logice
o Atunci când ordonăm un proces, îl programăm
o Acest curs se referă la programarea unui aparat:
calculatorul
o Calculatorul este un dispoztiv programabil care
poate păstra, regăsi şi procesa date
Introducere

o Un program de calculator descrie paşii pe care


trebuie să îi execute calculatorul pentru a rezolva
o problemă
o Un program de calculator este o listă de
instrucţiuni care trebuie urmate de calculator
o Un calculator ne permite să realizăm o serie de
acţiuni într-un mod mult mai rapid şi mai precis
decât o putem face fără ajutorul său
Cum scriem un program?

Pentru a scrie un program trebuie să parcurgem

două faze:

o rezolvarea problemei

o implementarea problemei
Cum scriem un program?
Rezolvarea problemei

 Analiza înseamnă înţelegerea, definirea


problemei şi a soluţiei ce trebuie dată
 Algoritmul presupune dezvoltarea unei secvenţe
logice de paşi care trebuie urmaţi pentru
rezolvarea problemei
 Verificarea este parcurgerea paşilor algoritmului
pe mai multe exemple pentru a fi siguri că
rezolvă problema pentru toate cazurile
Cum scriem un program?
Implementarea problemei

 Programul reprezintă translatarea algoritmului


într-un limbaj de programare

 Testarea este etapa în care ne asigurăm că


instrucţiunile din program sunt urmate corect de
calculator
Cum scriem un program?
Cum scriem un program?
Algoritmul

o Programatorul trebuie să analizeze problema, să


dea soluţia şi apoi să o comunice calculatorului
o Programatorul începe operaţia de programare
prin analiza problemei şi dezvoltarea unei soluţii
generale numită algoritm
o Algoritmul este o procedură care descrie paşii ce
trebuie parcurşi pentru rezolvarea unei
probleme într-un timp finit
Cum scriem un program?
Algoritmul

o Programul este de fapt un algoritm scris pentru


calculator
o Un algoritm este o secvenţă logică de acţiuni
Cum scriem un program?
Algoritmul
 Calculul sumei care trebuie plătită unui salariat într-o
săptămână
1. Verificarea sumei plătite pe oră
2. Determinarea numărului de ore lucrate în timpul
săptămânii
3. Dacă numărul de ore este mai mic sau egal cu 40, se
înmulţeşte numărul de ore cu suma plătită pe oră
4. Dacă numărul de ore depăşeşte 40, atunci se scade
40 din numărul de ore lucrate, iar diferenţa de ore
se înmulţeşte cu 1,5 ori suma plătită pe oră
5. Adună sumele de la punctele 3 şi 4 şi stabileşte suma
finală.
Ce este un limbaj de programare?
Când programatorul este satisfăcut de algoritm,
poate să îl translateze într-un program scris într-un
limbaj de programare
Limbajul de programare este un set de reguli,
simboluri şi cuvinte speciale folosite pentru a
construi un program
Limbajul C++ este o variantă simplificată a limbii
engleze şi care are un set strict de reguli
gramaticale. Datorită numărului mic de cuvinte
disponibile, sunteţi obligaţi să scrieţi instrucţiuni
simple şi exacte
Ce este un limbaj de programare?
Ce este un limbaj de programare?

o Programatorii scriu instrucţiuni în diverse


limbaje de programare, unele care sunt înţelese
în mod direct de calculator, altele care necesită
mai mulţi paşi de translatare
o În prezent există sute de limbaje de programare
care pot fi împărţite în trei tipuri generale:
1. Limbaje maşină
2. Limbaje de asamblare
3. Limbaje de nivel înalt
Ce este un limbaj de programare?
Limbajele maşină
o Singurul limbaj de programare pe care
calculatorul îl poate executa în mod direct este
un set primitiv de instrucţiuni numit limbaj
maşină sau cod maşină
o Acesta este “limbajul natural” al unui calculator
şi este definit de alcătuirea hardware a fiecărui
calculator în parte
o Limbajele maşină sunt greu de folosit de
programatori
Ce este un limbaj de programare?
Limbajele maşină

 Următoarea secţiune de program scris în


limbaj maşină adună o sumă suplimentară de
bani la suma de bază pe care o primeşte un
angajat, rezultând suma finală
+1300042774
+1400593419
+1200274027
Ce este un limbaj de programare?
Limbajele de asamblare

 Foloseşte abrevieri ale unor cuvinte din limba


engleză care reprezintă operaţii elementare
pentru calculator

LOAD BASEPAY
ADD OVERPAY
STORE GROSSPAY
Ce este un limbaj de programare?
Limbajele de nivel înalt

o În prezent se folosesc limbaje de nivel înalt, mult


mai uşor de folosit decât codul maşină şi care
accelerează procesul de dezvoltare software
o Un program numit compilator translatează un
program scris într-un limbaj de nivel înalt în
limbaj maşină

grossPay = basePay + overTimePay


Ce este un limbaj de programare?
Limbajele de nivel înalt

 Programul sursă este un program scris într-un


limbaj de nivel înalt
 Programul obiect este versiunea în limbaj maşină
a programului sursă şi se obţine în urma
compilării
Ce este un limbaj de programare?
Limbajele de nivel înalt
1.1. Noţiunea de algoritm

În procesul de rezolvare a unei probleme folosind


calculatorul există două etape:
1. Definirea şi analiza problemei
2. Proiectarea şi implementarea unui algoritm care
rezolvă problema
1. Definirea şi analiza problemei poate fi la rândul ei
descompusă în:
 specificarea datelor de intrare
 specificarea datelor de ieşire

22
1.1. Noţiunea de algoritm

Specificarea datelor de intrare constă în:


1. Ce date vor fi primite la intrare
2. Care este formatul (forma lor de reprezentare) datelor
de intrare
3. Care sunt valorile permise sau nepermise pentru
datele de intrare
4. Există unele restricţii (altele decât la 3) privind valorile
de intrare
5. Câte valori vor fi la intrare, sau dacă nu se poate
specifica un număr fix de valori, cum se va şti când s-
au terminat de introdus datele de intrare
23
1.1. Noţiunea de algoritm

Specificarea datelor de ieşire trebuie să ţină cont de


următoarele aspecte:
1. Care din valorile rezultate în cursul aplicării algoritmului
de calcul, asupra datelor de intrare, vor fi afişate
(necesare utilizatorului), în acest pas se face
diferenţierea clară între date intermediare şi date de
ieşire
2. Care va fi formatul datelor de ieşire (de exemplu un
număr real poate fi afişat cu trei sau cu cinci zecimale,
sau un text poate fi afişat integral sau parţialͿ)
24
1.1. Noţiunea de algoritm

3. Sunt sau nu necesare explicaţii suplimentare


pentru utilizator în afara datelor de ieşire

4. Care este numărul de date de ieşire care


trebuie transmise către ieşire

25
1.1. Noţiunea de algoritm

O definiţie a noţiunii de algoritm poate fi:


înlănţuirea de paşi simpli, operaţii distincte care
descriu modul de prelucrare a unor date de intrare
în scopul rezolvării unei probleme.
Un exemplu simplu de algoritm ar fi suita de
operaţii matematice făcută în rezolvarea unei ecuaţii
matematice de gradul II:
aX2+bX+c=0, coeficienţii a, b, c se schimbădar
modul de procesare a valorilor lor, nu.

26
1.1. Noţiunea de algoritm
Proprietăţile unui algoritm sunt:
1. Este compus din instrucţiuni simple şi clare.
2. Operaţiunile specificate de instrucţiuni se execută
într-o anumită secvenţă.
3. Soluţia trebuie obținută într-un număr finit de paşi.
Concluzia care rezultă este că:
UN ALGORITM ESTE INDEPENDENT DE
TIPUL DE LIMBAJ ÎN CARE ESTE TRANSPUS
SAU DE TIPUL DE CALCULATOR PE CARE ESTE
EXECUTAT.
27
1. ALGORITMI

1. Noţiunea de algoritm
2. Reprezentarea unui algoritm
3. Concepţia unui algoritm
4. Obiectele cu care lucrează algoritmii
5. Exemple de algoritmi elementari

28
1.2. Reprezentarea unui algoritm
În general, un algoritm poate fi considerat ca o
descriere a prelucrărilor efectuate asupra unui flux de
date, prelucrări care au loc cu un scop bine
determinat.
Modul de descriere a unui algoritm, este
independent de un limbaj de programare, existând
două metode clasice:
1. metoda schemei logice
2. metoda pseudocod-ului

29
1.2. Reprezentarea unui algoritm

1. Metoda schemei logice


În cadrul acestei metode se foloseşte un set de
simboluri, prezentat în figura 1, pentru descrierea
paşilor ce trebuie executaţi pentru ca algoritmul
rezultat să ne rezolve o anumită problemă.
Deşi a fost extrem de folosită, până nu de mult,
această metodă a pierdut teren în faţa reprezentării
de tip pseudocod, poate şi datorită timpului
suplimentar pierdut de utilizator cu executarea
simbolurilor grafice.

30
1.2. Reprezentarea unui algoritm

Start
Stop

Bloc citire variabile Bloc scriere variabile

Bloc de atribuire Nu Da
conditie

Figura 1. Reprezentarea algoritmilor prin metoda schemei logice

31
1.2. Reprezentarea unui algoritm

Să analizăm un Start

algoritm de calcul a
Citire nota1, nota2, nota3
mediei pentru trei note
şi să vedem cum ar media <-(nota1+nota2+nota3)/3
apărea descris prin
această metodă. Scriere media

Stop

32
1.2. Reprezentarea unui algoritm
2. Metoda pseudocod-ului
Există mai multe variante de limbaje
algoritmice, care însă nu diferă esenţial.
Am ales forma în care cuvintele cheie sunt în
limba română şi operatorii sunt cei uzuali
din matematică.
Pseudocod-ul are în componenţă mai multe
comenzi standard care încep, în general cu un
cuvânt cheie care defineşte operaţia de bază din
algoritm şi care va fi evidenţiat prin utilizarea
aldinelor (cuvintelor îngroşateͿ) 33
1.2. Reprezentarea unui algoritm

Comenzilor standard ale pseudocod-ului le


corespund instrucţiuni din limbajele de
programare, fapt care uşurează implementarea
algoritmului în limbaj.

34
1.2. Reprezentarea unui algoritm

Comenzile standard de bază ale pseudocod-ului


sunt:
1) Comanda de atribuire

- are forma: variabilă  expresie


- este comanda care nu conţine cuvinte cheie şi
corespunde unei operaţii de atribuire

35
1.2. Reprezentarea unui algoritm

2) Comanda de citire
- are forma: citeşte listă de variabile
- este comanda care corespunde unei operaţii de citire

3) Comanda de scriere
- are forma: scrie listă de expresii
- este comanda care corespunde unei operaţii de scriere

36
1.2. Reprezentarea unui algoritm

dacă condiţie atunci


4) Structura de decizie instructiune1
- are două forme …
corespunzătoare celor instructiunen

două forme ale altfel


structurii alternative instructiune1

(structurii de decizie): instructiunen
sfârşit dacă

37
1.2. Reprezentarea unui algoritm

dacă condiţie atunci


A doua formă instructiune1
a structurii …
instructiunen
de decizie:
sfârşit dacă

38
1.2. Reprezentarea unui algoritm

5) Structura cât timp


cât timp condiţie execută
- are forma: instructiune1

instructiunen
- corespunde ciclului sfârşit cât timp
repetitiv cu test iniţial

39
1.2. Reprezentarea unui algoritm

6) Structura
repetă până când repetă
- are forma: instructiune1

instructiunen

- corespunde ciclului până când condiţie


repetitiv cu test final

40
1.2. Reprezentarea unui algoritm
7) Structura pentru
- are forma:
pentru variabilavaloare initiala, valoare finala executa
instructiune1

instructiunen

sfârşit pentru

- corespunde ciclului repetitiv cu numar cunoscut


de pasi
41
1.2. Reprezentarea unui algoritm

8) Structura de oprire a algoritmului

- are forma: stop

42
1.2. Reprezentarea unui algoritm

Reluăm exemplul cu media a trei note pe


care îl vom scrie atât cu ajutorul schemelor
logice, cât şi cu ajutorul pseudocod-ului.

43
1.2. Reprezentarea unui algoritm
Start

real nota1, nota2, nota3, media


citeşte nota1, nota2, nota3 media
 (nota1+nota2+nota3)/3 scrie Citire nota1, nota2, nota3
media
stop media  (nota1+nota2+nota3)/3

Se observă că este mult


mai uşor să se redacteze un
Scriere media
algoritm cu ajutorul
pseudocod-ului, decât cu
ajutorul schemelor logice.
Stop

44
1. ALGORITMI

1. Noţiunea de algoritm
2. Reprezentarea unui algoritm
3. Concepţia unui algoritm
4. Obiectele cu care lucrează algoritmii
5. Exemple de algoritmi elementari

45
1.3. Conceptia unui algoritm

Pași necesari:
1. Problema care va fi rezolvată, trebuie citită cu
atenţie.
2. Apoi se stabilesc prelucrările care sunt necesare
obţinerii rezultatelor dorite.
Pentru a crea un algoritm eficient trebuie
evidenţiate datele de intrare şi datele de ieşire.

46
1.3. Conceptia unui algoritm

ALGORITM

Date de Date de
intrare ieșire

47
1. ALGORITMI

1. Noţiunea de algoritm
2. Reprezentarea unui algoritm
3. Concepţia unui algoritm
4. Obiectele cu care lucrează algoritmii
5. Exemple de algoritmi elementari

48
1.4. Obiectele cu care lucrează algoritmii

Obiectele cu care lucrează algoritmii sunt:

a) Constante
b) Variabile
c) Operaţii
d) Expresii

49
1.4. Obiectele cu care lucrează algoritmii

a) Constantele sunt date de un anumit tip care nu


se modifică pe parcursul execuţiei unui algoritm.
Pot fi:
1. Constante numerice, adică numere întregi sau
reale
2. Constante nenumerice, adică şiruri de
caractere cuprinse între apostrofuri
3. Constante logice, adevărat şi fals

50
1.4. Obiectele cu care lucrează algoritmii
b) Variabilele sunt date ale căror valori se modifică
pe parcursul execuţiei unui algoritm.
Ele se utilizează pentru a păstra datele
iniţiale, sau pentru a păstra rezultatele parţiale
sau finale ale algoritmului.
Fiecare variabilă va avea o locaţie de
memorie asociată ei, unde i se păstrează
valoarea.
Variabilele pot: naturale, întregi, reale, logice
sau şiruri de caractere.
51
1.4. Obiectele cu care lucrează
algoritmii
Operatori aritmetici Operator Semnificaţie
c) Operatorii sunt cei + Adunare
- Scădere
folosiţi uzuali în
* Înmulţire
matematică: / Împărţire
1. Operatori aritmetici Operatori relaţioŶali < Mai mic
2. Operatori relaţionali <= Mai mic sau egal
3. Operatori logici > Mai mare
>= Mai mare sau egal
= Egal
<> Diferit
Operatori logici not Negaţie
si Şi ; conjuncție
sau Sau ;disjuncție
1.4. Obiectele cu care lucrează algoritmii

d) Expresiile sunt formate din constante şi variabile


legate între ele cu ajutorul operatorilor.
Pot fi de mai multe tipuri, în funcţie de tipul
operatorilor si a operanzilor:
1. Expresii aritmetice
2. Expresii relaţionale
3. Expresii logice

53
1.4. Obiectele cu care lucrează algoritmii

O expresie aritmetică este o expresie care


cuprinde:
1. constante
2. variabile
3. sau funcţii aritmetice elementare legate,
eventual, prin operatori aritmetici.

54
1.4. Obiectele cu care lucrează algoritmii

O expresie relaţională poate fi formată din:


Două expresii aritmetice legate printr-un singur
operator relaţional (de exemplu: b2 > 4*a*c)
Două variabile nenumerice legate printr-un
operator relaţional (de exemplu:
nume1<>nume2)
O variabilă şi o constantă nenumerice
legate printr-un operator relaţional (de
exemplu: raspuns=͚da͛)
55
1.4. Obiectele cu care lucrează algoritmii

O expresie logică cuprinde:


1. constante
2. variabile
3. sau expresii relaţionale legate prin operatori
logici a cărei valoare este fie adevărat, fie fals.

56
1.4. Obiectele cu care lucrează algoritmii

Condiţiile care apar în algoritmi vor fi


întotdeauna exprimate prin expresii
relaţionale sau logice.

57
1. ALGORITMI

1. Noţiunea de algoritm
2. Reprezentarea unui algoritm
3. Concepţia unui algoritm
4. Obiectele cu care lucrează algoritmii
5. Exemple de algoritmi elementari

58
1.5. Exemple de algoritmi elementari

Enunţ:
Să se calculeze perimetrul şi aria unui triunghi oarecare
dacă se cunosc laturile triunghiului.
Pas 1: Stabilim care sunt datele de intrare si datele de
iesire, adică cele care vor fi prelucrate cu ajutorul
algoritmului.
În cazul problemei date, avem:
Date de intrare: a, b, şi c numere reale ce reprezintă
laturile triunghiului.
Date de iesire: p = perimetrul si s = aria triunghiului
59
1.5. Exemple de algoritmi elementari

Pas 2: Analiza problemei


Stabilim condiţiile pe care trebuie să le
îndeplinească datele de intrare pentru a fi
prelucrate în cadrul algoritmului.
În cadrul problemei pe care o avem de rezolvat,
cunoaştem formula lui Heron pentru calculul ariei
unui triunghi dacă se cunosc laturile sale:
S  p ( p  a )( p  b )( p  c )
unde p reprezintă semiperimetrul triunghiului.
60
1.5. Exemple de algoritmi elementari

real a, b, c, p, S
Pas 3: citeşte a, b, c
p  a+b+c
Scrierea
Scrie ‘Perimetrul triunghiului este ‘, p
algoritmului în p  p/2
pseudocod:
S  p(p a)(p b)(p c)
scrie ‘Aria triunghiului este’, S
stop

61
1.5. Exemple de algoritmi elementari

Pas 4: Implementarea algoritmului în limbajul de


programare dorit - în cazul nostru vom utiliza
limbajul C++.
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Ultimii doi paşi îi vom scrie după
prezentarea limbajului C++.

62
1.5. Exemple de algoritmi elementari
Enunţ:
Considerăm ecuaţia de gradul I de forma:
ax + b = 0, unde a şi b sunt numere reale.
Să se scrie un algoritm care să rezolve ecuaţia dată pentru
orice două valori a şi b date.
Pas 1: Stabilim care sunt datele de intrare si de iesire, adică
cele care vor fi prelucrate cu ajutorul algoritmului.
În cazul problemei date, avem:
Date de intrare: a, b - numere reale
Date de iesire: x - solutia ecuatiei

45
1.5. Exemple de algoritmi elementari
Pas 2: Analiza problemei
Stabilim condiţiile pe care trebuie să le îndeplinească
datele de intrare pentru a fi prelucrate în cadrul algoritmului.
Căutăm cazurile particulare.
În cadrul problemei pe care o avem de rezolvat,
cunoaştem următoarele:
Ecuaţia ax+b=0, are solutii reale daca a si b sunt diferite de 0.
Cazurile particulare sunt:
1) Daca a = 0, atunci ecuatia data are o infinitate de solutii.
2) Daca a = 0 si b = 0, atunci ecuatia este nedeterminata
3) Daca a ≠ 0 si b ≠ 0, atunci ecuatia are o singura solutie si
anume:
x = -b/a 46
1.5. Exemple de algoritmi elementari

real a, b, x
citeşte a, b
Pas 3: dacă a = 0 atunci
Scrierea scrie ‘Ecuaţia are o infinitate de soluţii’
altfel
algoritmului în dacă b = 0 atunci
pseudocod: scrie ‘Ecuaţia este nedeterminată’
altfel
x - b / a
scrie x
sfârşit dacă
sfarşit dacă
stop

47
1.5. Exemple de algoritmi
elementari
Pas 4: Implementarea algoritmului în limbajul de
programare dorit - în cazul nostru vom utiliza
limbajul C++.
Pas 5: Testarea algoritmului pe date de intrare
diferite şi verificarea rezultatelor.
Ultimii doi paşi îi vom scrie după
prezentarea limbajului C++.

48

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