Sunteți pe pagina 1din 60

Programarea calculatoarelor

#1

C++
Algoritmi

Adrian Runceanu
www.runceanu.ro/adrian
2016

copyright@www.adrian.runceanu.ro

Obiectivele disciplinei
Obiectivele generale ale disciplinei:
1. Cunoaterea noiunilor privind algoritmii i proprietile lor
2. Reprezentarea algoritmilor prin scheme logice, pseudocod,
programe C++
Obiectivele specifice:
1. Pentru curs:
Cunoaterea limbajului C++
Elaborarea de programe n C++
Analiza i proiectarea algoritmilor cu ajutorul limbajului de
programare C++
2. Pentru aplicaii:
Implementarea unor algoritmi ntr-un limbaj de programare
utilizat pe scar larg C++
02.11.2016

Programarea Calculatoarelor - curs

copyright@www.adrian.runceanu.ro

Cteva precizri
Structura cursului
3 ore curs titular curs: Lector dr. Adrian Runceanu
2 ore laborator titular aplicaii practice: Asist.dr.ing.
Alina Cotoi

02.11.2016

Programarea Calculatoarelor - curs

copyright@www.adrian.runceanu.ro

Cteva precizri
Bibliografia necesar cursului:
1. Adrian Runceanu, Mihaela Runceanu, Noiuni de programare n
limbajul C++, Academica Brncui, Trgu-Jiu, 2012, ISBN 978973-144-550-2, 483 pagini
2. Adrian Runceanu, Programarea i utilizarea calculatoarelor,
Editura Academic Brncui Targu-Jiu, 2003
3. Octavian Dogaru, C++ - Teorie i practic, volumul I, Editura
Mirton, Timioara, 2004
4. O.Catrina, I.Cojocaru, Turbo C+, Editura Teora, Bucureti, 1993
5. D.Costea, Iniiere n limbajul C, Editura Teora, Bucureti, 1996
6. K.Jamsa, C++, Editura Teora,1999
7. K.Jamsa & L.Klander, Totul despre C si C++, Teora, 2004
02.11.2016

Programarea Calculatoarelor - curs

copyright@www.adrian.runceanu.ro

02.11.2016

Programarea Calculatoarelor - curs

copyright@www.adrian.runceanu.ro

Cteva precizri
Referinele bibliografice nr. 1, 2 i 3 se pot
mprumuta de la Biblioteca Facultii de Inginerie, Str.
Geneva nr.3, Etaj I lng Decanat.
1. Suport curs - varianta electronic disponibil pe site-ul:

www.runceanu.ro/adrian
2. ndrumar de laborator - varianta electronic disponibil
pe site pentru fiecare lucrare de laborator.
Not: Actualizarea site-ului se face sptmnal.
02.11.2016

Programarea Calculatoarelor - curs

copyright@www.adrian.runceanu.ro

Cteva precizri
Forme de examinare:
Examen final = 60%
Evaluare pe parcursul
semestrului a activitii de
laborator = 30%
Verificare final lucrri de
laborator = 10%

02.11.2016

Procentaje evaluare

30

60

10

Evaluare pe parcursul semestrului


Prezenta curs si laborator
Examen final

Programarea Calculatoarelor - curs

copyright@www.adrian.runceanu.ro

Mod de lucru
Curs:
Se prezint noiuni teoretice i exemple de
aplicare practic a acestora
Nu ezitai s punei ntrebri

Laborator:
Se elaboreaz i se depaneaz programe relativ
simple sau se dezvolt programe preexistente
Se aplic ceea ce s-a predat la curs
02.11.2016

Programarea Calculatoarelor - curs

copyright@www.adrian.runceanu.ro

Cteva recomandri
Citii cu maxim atenie enunurile temelor i
respectai-le n totalitate.
Analizai n detaliu problema de rezolvat.
Identificai i tratai adecvat toate cazurile
speciale care pot s apar.
Notai-v toate ntrebrile la care nu ai gsit
singuri rspunsul i adresai-le cadrelor didactice,
la curs sau laborator.

02.11.2016

Programarea Calculatoarelor - curs

copyright@www.adrian.runceanu.ro

Curs 1
Algoritmi

02.11.2016

Programarea Calculatoarelor - curs

10

copyright@www.adrian.runceanu.ro

1. ALGORITMI

1.1. Noiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepia unui algoritm
1.4. Obiectele cu care lucreaz algoritmii
1.5. Exemple de algoritmi elementari

02.11.2016

Programarea Calculatoarelor - curs

11

copyright@www.adrian.runceanu.ro

1.1. Noiunea de algoritm


n procesul de rezolvare a unei probleme folosind
calculatorul exist doua etape:
1. Definirea i analiza problemei
2. Proiectarea i implementarea unui algoritm care
rezolv problema
1. Definirea i analiza problemei poate fi la rndul ei
descompus n:
specificarea datelor de intrare
specificarea datelor de ieire
02.11.2016

Programarea Calculatoarelor - curs

12

copyright@www.adrian.runceanu.ro

1.1. Noiunea de algoritm


1.
2.
3.
4.
5.

Specificarea datelor de intrare const n:


Ce date vor fi primite la intrare
Care este formatul (forma lor de reprezentare) datelor
de intrare
Care sunt valorile permise sau nepermise pentru
datele de intrare
Exist unele restricii (altele dect la 3) privind valorile
de intrare
Cte valori vor fi la intrare, sau dac nu se poate
specifica un numr fix de valori, cum se va ti cnd sau terminat de introdus datele de intrare

02.11.2016

Programarea Calculatoarelor - curs

13

copyright@www.adrian.runceanu.ro

1.1. Noiunea de algoritm


Specificarea datelor de ieire trebuie s in cont de
urmtoarele aspecte:
1. Care din valorile rezultate n cursul aplicrii algoritmului
de calcul, asupra datelor de intrare, vor fi afiate
(necesare utilizatorului), n acest pas se face
diferenierea clar ntre date intermediare i date de
ieire
2. Care va fi formatul datelor de ieire (de exemplu un
numr real poate fi afiat cu trei sau cu cinci zecimale,
sau un text poate fi afiat integral sau parial)
02.11.2016

Programarea Calculatoarelor - curs

14

copyright@www.adrian.runceanu.ro

1.1. Noiunea de algoritm


3. Sunt sau nu necesare explicaii suplimentare
pentru utilizator n afara datelor de ieire
4. Care este numrul de date de ieire care trebuie
transmise ctre ieire

02.11.2016

Programarea Calculatoarelor - curs

15

copyright@www.adrian.runceanu.ro

1.1. Noiunea de algoritm


O definiie a noiunii de algoritm poate fi:
nlnuirea de pai simpli, operaii distincte care
descriu modul de prelucrare a unor date de intrare
n scopul rezolvrii unei probleme.
Un exemplu simplu de algoritm ar fi suita de
operaii matematice fcut n rezolvarea unei ecuaii
matematice de gradul II:

aX2+bX+c=0,
coeficienii a, b, c se schimb dar
modul de procesare a valorilor lor, nu
02.11.2016

Programarea Calculatoarelor - curs

16

copyright@www.adrian.runceanu.ro

1.1. Noiunea de algoritm


Proprietile unui algoritm sunt:
1. Este compus din instruciuni simple i clare
2. Operaiunile specificate de instruciuni se

execut ntr-o anumit secven


3. Soluia trebuie obinut ntr-un numr finit de

pai
02.11.2016

Programarea Calculatoarelor - curs

17

copyright@www.adrian.runceanu.ro

1.1. Noiunea de algoritm


Rezolvarea unei probleme este un proces complex, care
are mai multe etape:
1.

2.
3.
4.
5.

Analiza problemei, pentru a stabili datele de intrare i


de ieire
Elaborarea unui algoritm de rezolvare a problemei
Implementarea algoritmului ntr-un limbaj de
programare
Verificarea corectitudinii algoritmului implementat
Analiza complexitatii algoritmului

02.11.2016

Programarea Calculatoarelor - curs

18

copyright@www.adrian.runceanu.ro

1. ALGORITMI

1.1. Noiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepia unui algoritm
1.4. Obiectele cu care lucreaz algoritmii
1.5. Exemple de algoritmi elementari

02.11.2016

Programarea Calculatoarelor - curs

19

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm


n general, un algoritm poate fi considerat ca o
descriere a prelucrrilor efectuate asupra unui flux de
date, prelucrri care au loc cu un scop bine
determinat.
Modul de descriere a unui algoritm, este
independent de un limbaj de programare, existnd
dou metode clasice:

1. metoda schemei logice


2. metoda pseudocod-ului

02.11.2016

Programarea Calculatoarelor - curs

20

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm


1. Metoda schemei logice
n cadrul acestei metode se folosete un set de
simboluri, prezentat n figura 1, pentru descrierea
pailor ce trebuie executai pentru ca algoritmul
rezultat s ne rezolve o anumit problem.
Dei a fost extrem de folosit, pn nu de mult,
aceast metod a pierdut teren n faa reprezentrii
de tip pseudocod, poate i datorit timpului
suplimentar pierdut de utilizator cu executarea
simbolurilor grafice.
02.11.2016

Programarea Calculatoarelor - curs

21

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm


Start
Stop

Bloc citire variabile

Bloc de atribuire

Bloc scriere variabile

Nu

conditie

Da

Figura 1. Reprezentarea algoritmilor prin metoda schemei logice


02.11.2016

Programarea Calculatoarelor - curs

22

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm


S analizm un
algoritm de calcul a
mediei pentru trei note
obinute de un student
ntr-o
sesiune
de
examene i s vedem
cum ar aprea descris
prin aceast metod.

Start

Citire nota1, nota2, nota3

media <-(nota1+nota2+nota3)/3

Scriere media

Stop

02.11.2016

Programarea Calculatoarelor - curs

23

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm


2. Metoda pseudocod-ului

Exist mai multe variante de limbaje


algoritmice, care ns nu difer esenial.
Am ales forma n care:
cuvintele cheie sunt n limba romn
i operatorii sunt cei uzuali din matematic
02.11.2016

Programarea Calculatoarelor - curs

24

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm


Pseudocod-ul are n componen mai multe
comenzi standard care ncep, n general cu un
cuvnt cheie care definete operaia de baz din
algoritm i care va fi evideniat prin utilizarea
aldinelor (cuvintelor ngroate).
Comenzilor standard ale pseudocod-ului le
corespund instruciuni din limbajele de
programare, fapt care uureaz implementarea
algoritmului n limbaj.
02.11.2016

Programarea Calculatoarelor - curs

25

1.2. Reprezentarea unui algoritm


Comenzile standard de baz ale pseudocodului sunt:
1) Comanda de atribuire
variabil expresie
- are forma:
- este comanda care nu conine cuvinte cheie i
corespunde unei operaii de atribuire

02.11.2016

Programarea Calculatoarelor - curs

26

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm


2) Comanda de citire
- are forma:
citete list de variabile
- este comanda care corespunde unei operaii de
citire
3) Comanda de scriere
scrie list de expresii
- are forma:
- este comanda care corespunde unei operaii de
scriere
02.11.2016

Programarea Calculatoarelor - curs

27

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm

4) Structura de decizie
- are dou forme
corespunztoare celor
dou
forme
ale
structurii alternative
(structurii de decizie):

dac condiie atunci


instructiune1

instructiunen

altfel
instructiune1

instructiunen

sfrit dac
02.11.2016

Programarea Calculatoarelor - curs

28

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm

dac condiie atunci

A doua form a
structurii
de
decizie:

02.11.2016

instructiune1

instructiunen

sfrit dac

Programarea Calculatoarelor - curs

29

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm

5) Structura ct timp
- are forma:

ct timp condiie execut


instructiune1

instructiunen

- corespunde ciclului
sfrit ct timp
repetitiv cu test iniial

02.11.2016

Programarea Calculatoarelor - curs

30

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm


6) Structura
repet pn cnd
- are forma:

- corespunde ciclului
repetitiv cu test final
02.11.2016

repet
instructiune1

instructiunen

pn cnd condiie

Programarea Calculatoarelor - curs

31

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm


7) Structura pentru
- are forma:
pentru variabila<-valoare initiala, valoare finala executa
instructiune1

instructiunen

sfrit pentru

- corespunde ciclului repetitiv cu numr cunoscut


de pai
02.11.2016

Programarea Calculatoarelor - curs

32

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm

8) Structura de oprire a algoritmului

- are forma:

02.11.2016

stop

Programarea Calculatoarelor - curs

33

copyright@www.adrian.runceanu.ro

1.2. Reprezentarea unui algoritm

Relum exemplul cu media a trei note pe


care l vom scrie att cu ajutorul schemelor
logice, ct i cu ajutorul pseudocod-ului.

02.11.2016

Programarea Calculatoarelor - curs

34

1.2. Reprezentarea unui algoritm


Start

real nota1, nota2, nota3, media


citete nota1, nota2, nota3
media (nota1+nota2+nota3)/3
scrie media
stop

Citire nota1, nota2, nota3

media <-(nota1+nota2+nota3)/3

Se observ c este mult


mai uor s se redacteze un
algoritm cu ajutorul
pseudocod-ului, dect cu
ajutorul schemelor logice.

Scriere media

Stop
02.11.2016

Programarea Calculatoarelor - curs

35

copyright@www.adrian.runceanu.ro

1. ALGORITMI

1.1. Noiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepia unui algoritm
1.4. Obiectele cu care lucreaz algoritmii
1.5. Exemple de algoritmi elementari

02.11.2016

Programarea Calculatoarelor - curs

36

copyright@www.adrian.runceanu.ro

1.3. Conceptia unui algoritm


Pai necesari:
1. Problema care va fi rezolvat, trebuie citit cu
atenie.
2. Apoi se stabilesc prelucrrile care sunt necesare
obinerii rezultatelor dorite.
Pentru a crea un algoritm eficient trebuie
evideniate datele de intrare i datele de ieire.

02.11.2016

Programarea Calculatoarelor - curs

37

copyright@www.adrian.runceanu.ro

1.3. Conceptia unui algoritm

ALGORITM
Date de
ieire

Date de
intrare

02.11.2016

Programarea Calculatoarelor - curs

38

copyright@www.adrian.runceanu.ro

1. ALGORITMI

1.1. Noiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepia unui algoritm
1.4. Obiectele cu care lucreaz algoritmii
1.5. Exemple de algoritmi elementari

02.11.2016

Programarea Calculatoarelor - curs

39

copyright@www.adrian.runceanu.ro

1.4. Obiectele cu care lucreaz algoritmii


Obiectele cu care lucreaz algoritmii sunt:
a)
b)
c)
d)

Constante
Variabile
Operaii
Expresii

02.11.2016

Programarea Calculatoarelor - curs

40

copyright@www.adrian.runceanu.ro

1.4. Obiectele cu care lucreaz algoritmii


a) Constantele sunt date de un anumit tip care nu
se modific pe parcursul execuiei 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, adevrat i fals
02.11.2016

Programarea Calculatoarelor - curs

41

copyright@www.adrian.runceanu.ro

1.4. Obiectele cu care lucreaz algoritmii


b) Variabilele sunt date ale cror valori se modific
pe parcursul execuiei unui algoritm.
Ele se utilizeaz pentru a pstra datele
iniiale, sau pentru a pstra rezultatele pariale
sau finale ale algoritmului.
Fiecare variabil va avea o locaie de
memorie asociat ei, unde i se pstreaz
valoarea.
Variabilele pot: naturale, ntregi, reale, logice
sau iruri de caractere.
02.11.2016

Programarea Calculatoarelor - curs

42

1.4. Obiectele cu care lucreaz


algoritmii
c) Operatorii sunt cei
folosii
uzuali
n
matematic:
1. Operatori aritmetici
2. Operatori relaionali
3. Operatori logici

Operatori aritmetici

Operatori relaionali

Operatori logici
02.11.2016

Programarea Calculatoarelor - curs

Operator

Semnificaie

Adunare

Scdere

nmulire

mprire

<

Mai mic

<=

Mai mic sau egal

>

Mai mare

>=

Mai mare sau egal

Egal

<>

Diferit

not

Negaie

si

i (conjuncie)

sau

Sau (disjuncie)
43

copyright@www.adrian.runceanu.ro

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 funcie de tipul
operatorilor si a operanzilor:
1. Expresii aritmetice
2. Expresii relaionale
3. Expresii logice

02.11.2016

Programarea Calculatoarelor - curs

44

copyright@www.adrian.runceanu.ro

1.4. Obiectele cu care lucreaz algoritmii

O expresie aritmetic este o expresie care


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

02.11.2016

Programarea Calculatoarelor - curs

45

copyright@www.adrian.runceanu.ro

1.4. Obiectele cu care lucreaz algoritmii


O expresie relaional poate fi format din:
Dou expresii aritmetice legate printr-un singur
operator relaional (de exemplu: b2 > 4*a*c)
Dou variabile nenumerice legate printr-un
operator
relaional
(de
exemplu:
nume1<>nume2)
O variabil i o constant nenumerice legate
printr-un operator relaional (de exemplu:
raspuns=da)
02.11.2016

Programarea Calculatoarelor - curs

46

copyright@www.adrian.runceanu.ro

1.4. Obiectele cu care lucreaz algoritmii

O expresie logic cuprinde:


1. constante
2. variabile
3. sau expresii relaionale legate prin operatori
logici a crei valoare este fie adevrat, fie fals.

02.11.2016

Programarea Calculatoarelor - curs

47

copyright@www.adrian.runceanu.ro

1.4. Obiectele cu care lucreaz algoritmii

Condiiile care apar n algoritmi vor fi


ntotdeauna exprimate prin expresii
relaionale sau logice.

02.11.2016

Programarea Calculatoarelor - curs

48

copyright@www.adrian.runceanu.ro

1. ALGORITMI

1.1. Noiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepia unui algoritm
1.4. Obiectele cu care lucreaz algoritmii
1.5. Exemple de algoritmi elementari

02.11.2016

Programarea Calculatoarelor - curs

49

copyright@www.adrian.runceanu.ro

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
02.11.2016

Programarea Calculatoarelor - curs

50

1.5. Exemple de algoritmi elementari


Pas 2: Analiza problemei
Stabilim condiiile 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,
cunoatem formula lui Heron pentru calculul ariei
unui triunghi dac se cunosc laturile sale:

p( p a)( p b)( p c)

unde p reprezint semiperimetrul triunghiului.


02.11.2016

Programarea Calculatoarelor - curs

51

1.5. Exemple de algoritmi elementari

Pas 3:
Scrierea
algoritmului n
pseudocod:

real a, b, c, p, S
citete a, b, c
p a+b+c
scrie Perimetrul triunghiului este , p
p p/2
S p(p a)(p b)(p c)

scrie Aria triunghiului este, S


stop
02.11.2016

Programarea Calculatoarelor - curs

52

copyright@www.adrian.runceanu.ro

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 pai i vom scrie dup
prezentarea limbajului C++.
02.11.2016

Programarea Calculatoarelor - curs

53

copyright@www.adrian.runceanu.ro

1.5. Exemple de algoritmi elementari


Enun:
Considerm ecuaia de gradul I de forma:
ax + b = 0, unde a i b sunt numere reale.
S se scrie un algoritm care s rezolve ecuaia 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
02.11.2016

Programarea Calculatoarelor - curs

54

copyright@www.adrian.runceanu.ro

1.5. Exemple de algoritmi elementari


Pas 2: Analiza problemei
Stabilim condiiile pe care trebuie s le ndeplineasc
datele de intrare pentru a fi prelucrate n cadrul algoritmului.
Cutm cazurile particulare.
n cadrul problemei pe care o avem de rezolvat,
cunoatem urmtoarele:
Ecuaia 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:
02.11.2016

x = -b/a

Programarea Calculatoarelor - curs

55

1.5. Exemple de algoritmi elementari


Pas 3:
Scrierea
algoritmului n
pseudocod:

02.11.2016

real a, b, x
citete a, b
dac a = 0 atunci
scrie Ecuaia are o infinitate de soluii
altfel
dac b = 0 atunci
scrie Ecuaia este nedeterminat
altfel
x - b / a
scrie x
sfrit dac
sfarit dac
stop

Programarea Calculatoarelor - curs

56

copyright@www.adrian.runceanu.ro

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 pai i vom scrie dup
prezentarea limbajului C++.
02.11.2016

Programarea Calculatoarelor - curs

57

copyright@www.adrian.runceanu.ro

Recapitulare
1. Ce este un algoritm?
2. Cum se pot reprezenta algoritmii?
3. Folosind metoda pseudocod-ului de reprezentare a
algoritmilor, cum se reprezint structura de decizie?
4. Folosind metoda pseudocod-ului de reprezentare a
algoritmilor, cum se reprezint structura repetitiv cu
test iniial?

02.11.2016

Programarea Calculatoarelor - curs

58

copyright@www.adrian.runceanu.ro

Enunuri de probleme ce pot fi rezolvate

1. S se calculeze perimetrul i aria unui


dreptunghi, tiind laturile sale.
2. S se calculeze unghiurile(in radiani) unui
triunghi, tiind laturile sale.

02.11.2016

Programarea Calculatoarelor - curs

59

copyright@www.adrian.runceanu.ro

ntrebri?

02.11.2016

Programarea Calculatoarelor - curs

60