Sunteți pe pagina 1din 52

Programarea calculatoarelor

CURS 1

Referințe: Curs Adrian Runceanu


Obiectivele disciplinei
Obiectivele generale ale disciplinei:
1. Cunoaşterea noţiunilor privind algoritmii şi proprietăţile lor
2. Reprezentarea algoritmilor prin scheme logice, pseudocod,
programe C++
Obiectivele specifice:
1. Pentru curs:
• Cunoaşterea
limbajului C++
• Elaborarea de
programe în C++
• Analiza şi proiectarea algoritmilor cu ajutorul limbajului de
programare C++
2. Pentru aplicații:
• Implementarea unor algoritmi într-un limbaj de programare 2
Câteva precizări
Bibliografia necesară cursului:

1. Adrian Runceanu, Mihaela Runceanu, Noțiuni de programare în


limbajul C++, Academica Brâncuşi, Târgu-Jiu, 2012, ISBN 978-
973-144-550-2, 483 pagini
2. Adrian Runceanu, Programarea şi utilizarea calculatoarelor,
Editura Academică Brâncuși Targu-Jiu, 2003
3. Octavian Dogaru, C++ - Teorie şi practică, volumul I,
Editura Mirton, Timişoara, 2004
4. O.Catrina, I.Cojocaru, Turbo C+, Editura Teora, Bucureşti, 1993
5. D.Costea, Iniţiere în limbajul C, Editura Teora, Bucureşti, 1996
6. K.Jamsa, C++, Editura Teora,1999
7. K.Jamsa & L.Klander, Totul despre C si C++, Teora, 2004

Curs - Programarea Calculatoarelor 3


Curs - Programarea Calculatoarelor 4
Curs 1
Algoritm
i

Curs - Programarea Calculatoarelor 5


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

Curs - Programarea Calculatoarelor 6


1.1. Noţiunea de
algoritm
În procesul de rezolvare a unei probleme folosind
calculatorul există mai multe etape, din care amintim:
1. Definirea şi analiza problemei
2. Proiectarea şi implementarea unui algoritm
care rezolvă problema
3. Definirea şi analiza problemei poate fi la rândul
ei descompusă în:
 specificarea datelor de intrare
 specificarea datelor de ieşire

Curs - Programarea Calculatoarelor 7


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
Curs - Programarea de intrare
Calculatoarelor 8
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 de intrare, fi
datelor (necesare vor în acest afişate
utilizatorului),clară între datepas
diferenţierea intermediare şi date
se de
ieşire face
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)
Curs - Programarea Calculatoarelor 9
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

Curs - Programarea Calculatoarelor 10


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
Curs - Programarea Calculatoarelor 11
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
Curs - Programarea Calculatoarelor 12
1.1. Noţiunea de
algoritm
• Rezolvarea unei probleme este un proces
complex, care are mai multe etape:

1. Analiza problemei, pentru a stabili datele de intrare şi de ieşire


2. Elaborarea unui algoritm de rezolvare a problemei
3. Implementarea algoritmului într-un limbaj de programare
4. Verificarea corectitudinii algoritmului implementat

5. Analiza complexitatii algoritmului

Curs - Programarea Calculatoarelor 13


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

Curs - Programarea Calculatoarelor 14


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

Curs - Programarea Calculatoarelor 15


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.

Curs - Programarea Calculatoarelor 16


1.2. Reprezentarea unui algoritm
Start
Stop

Bloc citire variabile Bloc scriere variabile

Nu Da
Bloc de atribuire conditie

Figura 1. Reprezentarea algoritmilor prin metoda schemei logice

Curs - Programarea Calculatoarelor 17


1.2. Reprezentarea unui algoritm
Să analizăm Start

algoritm de u
mediei pentru trei noten
calcul Citire nota1, nota2, nota3

obținute de un student
într-o sesiune dea media <-(nota1+nota2+nota3)/3

examene şi să vedem
cum ar apărea descris Scriere media

prin această metodă.


Stop

Curs - Programarea Calculatoarelor 18


1.2. Reprezentarea unui algoritm
2. Metoda pseudocod-ului

Există mai multe variantede 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ă

Curs - Programarea Calculatoarelor 19


1.2. Reprezentarea unui algoritm
 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).

 Comenzilor standard ale pseudocod-ului le


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

Curs - Programarea Calculatoarelor 20


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

Curs - Programarea Calculatoarelor 21


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
Curs - Programarea Calculatoarelor 22
1.2. Reprezentarea unui algoritm

dacă condiţie atunci


4) Structura de decizie instructiune1
- are două forme …
corespunzătoare instructiunen
două celor altfel
forme ale instructiune1
structurii …
instructiunen
alternative (structurii
sfârşit dacă
de decizie):
Curs - Programarea Calculatoarelor 23
1.2. Reprezentarea unui algoritm

dacă condiţie atunci


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

Curs - Programarea Calculatoarelor 24


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

Curs - Programarea Calculatoarelor 25


1.2. Reprezentarea unui algoritm

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

până când condiţie


- corespunde ciclului
repetitiv cu test final
Curs - Programarea Calculatoarelor 26
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 număr cunoscut


de pași
Curs - Programarea Calculatoarelor 27
1.2. Reprezentarea unui algoritm

8) Structura de oprire a algoritmului

- are forma: stop

Curs - Programarea Calculatoarelor 28


copyright@www.adrian.runceanu.ro

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.

Curs - Programarea Calculatoarelor 29


1.2. Reprezentarea unui
algoritm Start

real nota1, nota2, nota3, media


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

Se observă că este mult


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

Curs - Programarea Calculatoarelor 30


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

Curs - Programarea Calculatoarelor 31


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 unalgoritm eficient
trebuie evidenţiate datele de intrare şi datele de
ieşire.

Curs - Programarea Calculatoarelor 32


1.3. Conceptia unui
algoritm

ALGORITM

Date de Date de
intrare ieșire

Curs - Programarea Calculatoarelor 33


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

Curs - Programarea Calculatoarelor 34


1.4. Obiectele cu care lucrează
algoritmii
Obiectele cu care lucrează algoritmii sunt:

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

Curs - Programarea Calculatoarelor 35


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

Curs - Programarea Calculatoarelor 36


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.
Curs - Programarea Calculatoarelor 37
1.4. Obiectele cu care
lucrează
algoritmiiOperator Semnificaţie
c) Operatorii sunt cei + Adunare
Operatori aritmetici
folosiţi uzuali în - Scădere
* Înmulţire
matematică:
/ Împărţire
1. Operatori aritmetici
2. Operatori relaţionali
3. Operatori logici < Mai mic
<= Mai mic sau egal
Operatori relaţionali > Mai mare
>= Mai mare sau egal
= Egal
<> Diferit
not Negaţie
Curs -
Operatori logici si Şi (conjuncţ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
Curs - Programarea Calculatoarelor 39
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.

Curs - Programarea Calculatoarelor 40


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 legate printr-un
operator
nenumerice relaţional (de exemplu:
nume1<>nume2)
 O variabilă şi o constantă nenumerice legate
printr-un operator relaţional (de exemplu:
raspuns=‘da’)
Curs - Programarea Calculatoarelor 41
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.

Curs - Programarea Calculatoarelor 42


1.4. Obiectele cu care lucrează
algoritmii

Condiţiile care apar în algoritmi vor fi


întotdeauna exprimate prin expresii
relaţionale sau logice.

Curs - Programarea Calculatoarelor 43


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

Curs - Programarea Calculatoarelor 44


1.5. Exemple de algoritmi
elementari
E nunţ:
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
Curs - Programarea Calculatoarelor 45
1.5. Exemple de algoritmi
elementari
Pas 2: Analiza problemei
Stabilim condiţiile pe trebuie să le
îndeplinească datele care de pentru a
prelucrate în cadrul algoritmului.
intrare fi
Î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.
Curs - Programarea Calculatoarelor 46
1.5. Exemple de algoritmi
elementari
real a, b, c, p, S
Pas 3: citeşte a, b, c
Scrierea p a+b+
algoritmului în c
pseudocod: scrie
S  p(p a)(p b)(p c)
‘Perimetrul
scrie ‘Aria triunghiului este’, S
triunghiului
este
stop‘, p
p p/2
Curs - Programarea Calculatoarelor 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++.

Curs - Programarea Calculatoarelor 48


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 Curs - Programarea Calculatoarelor 49
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 Curs - Programarea Calculatoarelor 50
1.5. Exemple de algoritmi
elementari
real a, b, x
Pas 3: citeşte a, b
dacă a = 0 atunci
Scrierea scrie ‘Ecuaţia are o infinitate de soluţii’
algoritmului în altfel
dacă b = 0 atunci
pseudocod: scrie ‘Ecuaţia este nedeterminată’
altfel
x
-b/a
scrie x
sfârşit dacă
sfarşit dacă
stop

Curs - Programarea Calculatoarelor 51


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++.

Curs - Programarea Calculatoarelor 52

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