Sunteți pe pagina 1din 56

Universitatea “Constatin Brâncuşi” Târgu-Jiu

Facultatea de Inginerie
Departamentul de Automatică, Energie şi Mediu

Programarea
calculatoarelor

Lect.dr. Adrian Runceanu


Câteva precizări

Structura cursului

3 ore curs – titular curs: Lector dr. Adrian Runceanu

3 ore laborator – titular aplicaţii practice:


Asist.ing. Alina Dinca: Ingineria Sistemelor &
Ingineria si Protectia Mediului in Industrie

21.10.2011 Curs - Programarea Calculatoarelor 2


Câteva precizări
Bibliografia necesară cursului:

1. A.Runceanu, Programarea şi utilizarea calculatoarelor, Editura


Academică Brâncuși Targu-Jiu, 2003
2. O.Dogaru, C++ - teorie şi practică, volumul I, Editura Mirton,
Timişoara, 2004
3. O.Catrina, I.Cojocaru, Turbo C+, Editura Teora, Bucureşti, 1993
4. D.Costea, Iniţiere în limbajul C, Editura Teora, Bucureşti, 1996
5. K.Jamsa, C++, Editura Teora,1999
6. K.Jamsa & L.Klander, Totul despre C si C++, Teora, 2004
7. B.Kernighan, D.Ritchie, The C programming language, AT&T Bell
Laboratories, Murray Hill, New Jersey
8. H.Schildt, C++ manual complet, Editura Teora, 2000
21.10.2011 Curs - Programarea Calculatoarelor 3
Câteva precizări
Referinţele bibliografice nr. 1 şi 2 se pot împrumuta
de la Biblioteca Facultăţii de Inginerie, Str. Geneva nr.3,
Etaj I – lângă Decanat.

1. Suport curs - varianta electronică disponibilă pe site-ul


Facultăţii de Inginerie:
www.utgjiu.ro/ing
2. Îndrumar de laborator - varianta electronică disponibilă
pe site pentru fiecare lucrare de laborator.

Notă: Actualizarea site-ului se face săptămânal.


21.10.2011 Curs - Programarea Calculatoarelor 4
Câteva precizări

Forme de examinare:

Examen final – 60%


Lucrările practice de laborator susţinute pe
parcursul semestrului – 10%
Verificare finală lucrări de laborator – 30%

21.10.2011 Curs - Programarea Calculatoarelor 5


Mod de lucru
Curs:
Se prezintă noţiuni teoretice şi exemple de
aplicare practică a acestora
Nu ezitaţi să puneţi întrebări
Laborator:
Se elaborează şi se depanează programe relativ
simple sau se dezvoltă programe preexistente
Se aplică ceea ce s-a predat la curs

21.10.2011 Curs - Programarea Calculatoarelor 6


Câteva recomandări
 Citiţi cu maximă atenţie enunţurile temelor şi
respectaţi-le în totalitate.
 Analizaţi în detaliu problema de rezolvat.
Identificaţi şi trataţi adecvat toate cazurile
speciale care pot să apară.
 Notaţi-vă toate întrebările la care nu aţi găsit
singuri răspunsul şi adresaţi-le cadrelor didactice,
la curs sau laborator.

21.10.2011 Curs - Programarea Calculatoarelor 7


Curs 1
Algoritmi

21.10.2011 Curs - Programarea Calculatoarelor 8


1. ALGORITMI

1.1. Noţiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari

21.10.2011 Curs - Programarea Calculatoarelor 9


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
Definirea şi analiza problemei poate fi la rândul ei
descompusă în:
 specificarea datelor de intrare
 specificarea datelor de ieşire

21.10.2011 Curs - Programarea Calculatoarelor 10


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) a
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

21.10.2011 Curs - Programarea Calculatoarelor 11


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)
21.10.2011 Curs - Programarea Calculatoarelor 12
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

21.10.2011 Curs - Programarea Calculatoarelor 13


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.
21.10.2011 Curs - Programarea Calculatoarelor 14
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.
21.10.2011 Curs - Programarea Calculatoarelor 15
1. ALGORITMI

1.1. Noţiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari

21.10.2011 Curs - Programarea Calculatoarelor 16


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

21.10.2011 Curs - Programarea Calculatoarelor 17


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.

21.10.2011 Curs - Programarea Calculatoarelor 18


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

21.10.2011 Curs - Programarea Calculatoarelor 19


1.2. Reprezentarea unui algoritm

Start

Să analizăm un
algoritm de calcul a Citire nota1, nota2,
nota3

mediei pentru trei note


Media <-(nota1+nota2+nota3)/3
şi să vedem cum ar
apărea descris prin Scriere media

această metodă.
Stop

21.10.2011 Curs - Programarea Calculatoarelor 20


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).
21.10.2011 Curs - Programarea Calculatoarelor 21
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.

21.10.2011 Curs - Programarea Calculatoarelor 22


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 atribuire

21.10.2011 Curs - Programarea Calculatoarelor 23


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

21.10.2011 Curs - Programarea Calculatoarelor 24


1.2. Reprezentarea unui algoritm

dacă condiţie atunci


4) Structura de decizie instructiune1
….
- are două forme instructiunen
corespunzătoare celor
altfel
două forme ale
instructiune1
structurii alternative: ….
instructiunen
sfârşit dacă

21.10.2011 Curs - Programarea Calculatoarelor 25


1.2. Reprezentarea unui algoritm

dacă condiţie atunci


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

21.10.2011 Curs - Programarea Calculatoarelor 26


1.2. Reprezentarea unui algoritm

5) Structura cât timp


cât timp condiţie execută
- are forma: instructiune1
….
instructiune n

sfârşit cât timp


- corespunde ciclului
repetitiv cu test iniţial

21.10.2011 Curs - Programarea Calculatoarelor 27


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

7) Structura pentru pentru variabila<-valoare


initiala, valoare finala executa
- are forma:
instructiune1

- corespunde ciclului
repetitiv cu numar instructiunen
cunoscut de pasi
sfârşit pentru

21.10.2011 Curs - Programarea Calculatoarelor 29


1.2. Reprezentarea unui algoritm

8) Structura de oprire a algoritmului

stop
- are forma:

21.10.2011 Curs - Programarea Calculatoarelor 30


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.

21.10.2011 Curs - Programarea Calculatoarelor 31


1.2. Reprezentarea unui algoritm
Start

real nota1, nota2, nota3, media


citeşte nota1, nota2, nota3
Citire nota1, nota2,
media  (nota1+nota2+nota3)/3 nota3
scrie 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

21.10.2011 Curs - Programarea Calculatoarelor 32


1. ALGORITMI

1.1. Noţiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari

21.10.2011 Curs - Programarea Calculatoarelor 33


1.3. Conceptia unui algoritm

Pentru a crea un algoritm, mai întâi trebuie


citită cu atenţie problema care va fi rezolvată.
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.

21.10.2011 Curs - Programarea Calculatoarelor 34


1.3. Conceptia unui algoritm

ALGORITM

Date de intrare Date de ieşire

21.10.2011 Curs - Programarea Calculatoarelor 35


1. ALGORITMI

1.1. Noţiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari

21.10.2011 Curs - Programarea Calculatoarelor 36


1.4. Obiectele cu care lucrează algoritmii

Obiectele cu care lucrează algoritmii sunt:

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

21.10.2011 Curs - Programarea Calculatoarelor 37


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

21.10.2011 Curs - Programarea Calculatoarelor 38


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.

21.10.2011 Curs - Programarea Calculatoarelor 39


1.4. Obiectele cu care lucrează
algoritmii
Operator Semnificaţie
c) Operatorii sunt cei + Adunare
folosiţi uzuali în Operatori aritmetici - Scădere

matematică: * Înmulţire
/ Împărţire

1. Operatori aritmetici < Mai mic


<= Mai mic sau egal
2. Operatori relaţionali Operatori relaţionali > Mai mare
>= Mai mare sau egal
3. Operatori logici = Egal
<> Diferit
not Negaţie
Operatori logici si Şi (conjuncţie)
sau Sau (disjuncţie)

21.10.2011 Curs - Programarea Calculatoarelor 40


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

21.10.2011 Curs - Programarea Calculatoarelor 41


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.

21.10.2011 Curs - Programarea Calculatoarelor 42


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’).
21.10.2011 Curs - Programarea Calculatoarelor 43
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.

21.10.2011 Curs - Programarea Calculatoarelor 44


1.4. Obiectele cu care lucrează algoritmii

Condiţiile care apar în algoritmi vor


fi întotdeauna exprimate prin expresii
relaţionale sau logice.

21.10.2011 Curs - Programarea Calculatoarelor 45


1. ALGORITMI

1.1. Noţiunea de algoritm


1.2. Reprezentarea unui algoritm
1.3. Concepţia unui algoritm
1.4. Obiectele cu care lucrează algoritmii
1.5. Exemple de algoritmi elementari

21.10.2011 Curs - Programarea Calculatoarelor 46


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, adică cele
care vor fi prelucrate cu ajutorul algoritmului.
În cazul problemei date, avem:
Date de intrare: a, b numere reale

21.10.2011 Curs - Programarea Calculatoarelor 47


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:

21.10.2011
x = -b/a
Curs - Programarea Calculatoarelor 48
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’
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

21.10.2011 Curs - Programarea Calculatoarelor 49


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

21.10.2011 Curs - Programarea Calculatoarelor 50


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

21.10.2011 Curs - Programarea Calculatoarelor 51


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.
21.10.2011 Curs - Programarea Calculatoarelor 52
1.5. Exemple de algoritmi elementari

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

21.10.2011 Curs - Programarea Calculatoarelor 53


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 iniţial?

21.10.2011 Curs - Programarea Calculatoarelor 54


Enunţuri de probleme ce pot fi rezolvate

1. Să se calculeze perimetrul şi aria unui


dreptunghi, ştiind laturile sale.
2. Să se calculeze soluţiile reale ale ecuaţiei de
gradul II: ax2 + bx + c = 0, ştiind valorile
coeficienţilor săi a, b, c.

21.10.2011 Curs - Programarea Calculatoarelor 55


Întrebări?

21.10.2011 Curs - Programarea Calculatoarelor 56

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