lecture1 pc

117
[email protected] Programarea calculatoarelor #1 Adrian Runceanu www.runceanu.ro/adrian 2016 C++ Algoritmi

Upload: adrian-runceanu

Post on 15-Jan-2017

89 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Lecture1 pc

[email protected]

Programarea calculatoarelor

#1

Adrian Runceanuwww.runceanu.ro/adrian

2016

C++Algoritmi

Page 2: Lecture1 pc

[email protected]

Curs 1Algoritmi

02.12.2016 Programarea Calculatoarelor - curs 2

Page 3: Lecture1 pc

[email protected]

1. ALGORITMI

1.1. Noţiunea de algoritm1.2. Reprezentarea unui algoritm1.3. Concepţia unui algoritm1.4. Obiectele cu care lucrează algoritmii1.5. Exemple de algoritmi elementari

02.12.2016 Programarea Calculatoarelor - curs 3

Page 4: Lecture1 pc

[email protected]

1.1. Noţiunea de algoritm

În procesul de rezolvare a unei probleme folosindcalculatorul există doua etape:

1. Definirea şi analiza problemei2. Proiectarea şi implementarea unui algoritm care

rezolvă problema1. Definirea şi analiza problemei poate fi la rândul ei

descompusă în: specificarea datelor de intrare specificarea datelor de ieşire

02.12.2016 Programarea Calculatoarelor - curs 4

Page 5: Lecture1 pc

[email protected]

1.1. Noţiunea de algoritm

Specificarea datelor de intrare constă în:1. Ce date vor fi primite la intrare2. Care este formatul (forma lor de reprezentare) datelor

de intrare3. Care sunt valorile permise sau nepermise pentru

datele de intrare4. Există unele restricţii (altele decât la 3) privind valorile

de intrare5. 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

02.12.2016 Programarea Calculatoarelor - curs 5

Page 6: Lecture1 pc

[email protected]

1.1. Noţiunea de algoritm

Specificarea datelor de ieşire trebuie să ţină cont deurmătoarele aspecte:

1. Care din valorile rezultate în cursul aplicării algoritmuluide calcul, asupra datelor de intrare, vor fi afişate(necesare utilizatorului), în acest pas se facediferenţierea clară între date intermediare şi date deieşire

2. Care va fi formatul datelor de ieşire (de exemplu unnumăr real poate fi afişat cu trei sau cu cinci zecimale,sau un text poate fi afişat integral sau parţial)

02.12.2016 Programarea Calculatoarelor - curs 6

Page 7: Lecture1 pc

[email protected]

1.1. Noţiunea de algoritm

3. Sunt sau nu necesare explicaţii suplimentarepentru utilizator în afara datelor de ieşire

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

02.12.2016 Programarea Calculatoarelor - curs 7

Page 8: Lecture1 pc

[email protected]

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 caredescriu modul de prelucrare a unor date de intrareîn scopul rezolvării unei probleme.

Un exemplu simplu de algoritm ar fi suita deoperaţii matematice făcută în rezolvarea unei ecuaţiimatematice de gradul II:

02.12.2016 Programarea Calculatoarelor - curs 8

aX2+bX+c=0, coeficienţii a, b, c se schimbă dar

modul de procesare a valorilor lor, nu

Page 9: Lecture1 pc

[email protected]

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

02.12.2016 Programarea Calculatoarelor - curs 9

Page 10: Lecture1 pc

[email protected]

1.1. Noţiunea de algoritm

Rezolvarea unei probleme este un proces complex, careare mai multe etape:

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

2. Elaborarea unui algoritm de rezolvare a problemei3. Implementarea algoritmului într-un limbaj de

programare4. Verificarea corectitudinii algoritmului implementat5. Analiza complexitatii algoritmului

02.12.2016 Programarea Calculatoarelor - curs 10

Page 11: Lecture1 pc

[email protected]

1. ALGORITMI

1.1. Noţiunea de algoritm1.2. Reprezentarea unui algoritm1.3. Concepţia unui algoritm1.4. Obiectele cu care lucrează algoritmii1.5. Exemple de algoritmi elementari

02.12.2016 Programarea Calculatoarelor - curs 11

Page 12: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

În general, un algoritm poate fi considerat ca odescriere a prelucrărilor efectuate asupra unui flux dedate, prelucrări care au loc cu un scop binedeterminat.

Modul de descriere a unui algoritm, esteindependent de un limbaj de programare, existânddouă metode clasice:

1. metoda schemei logice2. metoda pseudocod-ului

02.12.2016 Programarea Calculatoarelor - curs 12

Page 13: Lecture1 pc

[email protected]

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 descriereapaşilor ce trebuie executaţi pentru ca algoritmulrezultat 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ăriide tip pseudocod, poate şi datorită timpuluisuplimentar pierdut de utilizator cu executareasimbolurilor grafice.

02.12.2016 Programarea Calculatoarelor - curs 13

Page 14: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

02.12.2016 Programarea Calculatoarelor - curs 14

Start

Bloc de atribuire

Bloc citire variabile

conditie

Stop

Bloc scriere variabile

Nu Da

Figura 1. Reprezentarea algoritmilor prin metoda schemei logice

Page 15: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

Să analizăm unalgoritm de calcul amediei pentru trei noteobținute de un studentîntr-o sesiune deexamene şi să vedemcum ar apărea descrisprin această metodă.

02.12.2016 Programarea Calculatoarelor - curs 15

Start

Citire nota1, nota2, nota3

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

Scriere media

Stop

Page 16: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

2. Metoda pseudocod-ului

Există mai multe variante de limbajealgoritmice, care însă nu diferă esenţial.

Am ales forma în care:cuvintele cheie sunt în limba românăşi operatorii sunt cei uzuali dinmatematică

02.12.2016 Programarea Calculatoarelor - curs 16

Page 17: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

Pseudocod-ul are în componenţă mai multecomenzi standard care încep, în general cu uncuvânt cheie care defineşte operaţia de bază dinalgoritm şi care va fi evidenţiat prin utilizareaaldinelor (cuvintelor îngroşate).

Comenzilor standard ale pseudocod-ului lecorespund instrucţiuni din limbajele deprogramare, fapt care uşurează implementareaalgoritmului în limbaj.

02.12.2016 Programarea Calculatoarelor - curs 17

Page 18: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

Comenzile standard de bază ale pseudocod-ului sunt:

1) Comanda de atribuire

- are forma:- este comanda care nu conţine cuvinte cheie şi

corespunde unei operaţii de atribuire

02.12.2016 Programarea Calculatoarelor - curs 18

variabilă expresie

Page 19: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

2) Comanda de citire- are forma:- este comanda care corespunde unei operaţii de

citire

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

scriere

02.12.2016 Programarea Calculatoarelor - curs 19

citeşte listă de variabile

scrie listă de expresii

Page 20: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

4) Structura de decizie- are două forme

corespunzătoare celordouă forme alestructurii alternative(structurii de decizie):

02.12.2016 Programarea Calculatoarelor - curs 20

dacă condiţie atunciinstructiune1

…instructiunen

altfelinstructiune1

…instructiunen

sfârşit dacă

Page 21: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

A doua formă astructurii dedecizie:

02.12.2016 Programarea Calculatoarelor - curs 21

dacă condiţie atunciinstructiune1

…instructiunen

sfârşit dacă

Page 22: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

5) Structura cât timp- are forma:

- corespunde ciclului repetitiv cu test iniţial

02.12.2016 Programarea Calculatoarelor - curs 22

cât timp condiţie executăinstructiune1

…instructiunen

sfârşit cât timp

Page 23: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

6) Structura repetă până când

- are forma:

- corespunde ciclului repetitiv cu test final

02.12.2016 Programarea Calculatoarelor - curs 23

repetăinstructiune1

…instructiunen

până când condiţie

Page 24: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

7) Structura pentru- are forma:

- corespunde ciclului repetitiv cu număr cunoscut de pași

02.12.2016 Programarea Calculatoarelor - curs 24

pentru variabila<-valoare initiala, valoare finala executa

instructiune1

…instructiunen

sfârşit pentru

Page 25: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

8) Structura de oprire a algoritmului

- are forma:

02.12.2016 Programarea Calculatoarelor - curs 25

stop

Page 26: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

Reluăm exemplul cu media a trei note pecare îl vom scrie atât cu ajutorul schemelorlogice, cât şi cu ajutorul pseudocod-ului.

02.12.2016 Programarea Calculatoarelor - curs 26

Page 27: Lecture1 pc

[email protected]

1.2. Reprezentarea unui algoritm

real nota1, nota2, nota3, mediaciteşte nota1, nota2, nota3media (nota1+nota2+nota3)/3scrie mediastop

02.12.2016 Programarea Calculatoarelor - curs 27

Start

Citire nota1, nota2, nota3

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

Scriere media

Stop

Se observă că este mult mai uşor să se redacteze un algoritm cu ajutorul pseudocod-ului, decât cu ajutorul schemelor logice.

Page 28: Lecture1 pc

[email protected]

1. ALGORITMI

1.1. Noţiunea de algoritm1.2. Reprezentarea unui algoritm1.3. Concepţia unui algoritm1.4. Obiectele cu care lucrează algoritmii1.5. Exemple de algoritmi elementari

02.12.2016 Programarea Calculatoarelor - curs 28

Page 29: Lecture1 pc

[email protected]

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.

02.12.2016 Programarea Calculatoarelor - curs 29

Page 30: Lecture1 pc

[email protected]

1.3. Conceptia unui algoritm

02.12.2016 Programarea Calculatoarelor - curs 30

Date de intrare

Date de ieșire

ALGORITM

Page 31: Lecture1 pc

[email protected]

1. ALGORITMI

1.1. Noţiunea de algoritm1.2. Reprezentarea unui algoritm1.3. Concepţia unui algoritm1.4. Obiectele cu care lucrează algoritmii1.5. Exemple de algoritmi elementari

02.12.2016 Programarea Calculatoarelor - curs 31

Page 32: Lecture1 pc

[email protected]

1.4. Obiectele cu care lucrează algoritmii

Obiectele cu care lucrează algoritmii sunt:

a) Constanteb) Variabilec) Operaţiid) Expresii

02.12.2016 Programarea Calculatoarelor - curs 32

Page 33: Lecture1 pc

[email protected]

1.4. Obiectele cu care lucrează algoritmii

a) Constantele sunt date de un anumit tip care nuse modifică pe parcursul execuţiei unui algoritm.

Pot fi:1. Constante numerice, adică numere întregi sau

reale2. Constante nenumerice, adică şiruri de

caractere cuprinse între apostrofuri3. Constante logice, adevărat şi fals

02.12.2016 Programarea Calculatoarelor - curs 33

Page 34: Lecture1 pc

[email protected]

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 dateleiniţiale, sau pentru a păstra rezultatele parţialesau finale ale algoritmului.

Fiecare variabilă va avea o locaţie dememorie asociată ei, unde i se păstreazăvaloarea.

Variabilele pot: naturale, întregi, reale, logicesau şiruri de caractere.

02.12.2016 Programarea Calculatoarelor - curs 34

Page 35: Lecture1 pc

[email protected]

1.4. Obiectele cu care lucreazăalgoritmii

c) Operatorii sunt ceifolosiţi uzuali înmatematică:

1. Operatori aritmetici2. Operatori relaţionali3. Operatori logici

Operatori aritmetici

Operator Semnificaţie

+ Adunare

- Scădere

* Înmulţire

/ Împărţire

Operatori relaţionali

< Mai mic

<= Mai mic sau egal

> Mai mare

>= Mai mare sau egal

= Egal

<> Diferit

Operatori logici

not Negaţie

si Şi (conjuncţie)

sau Sau (disjuncţie)02.12.2016 Programarea Calculatoarelor - curs 35

Page 36: Lecture1 pc

[email protected]

1.4. Obiectele cu care lucrează algoritmii

d) Expresiile sunt formate din constante şi variabilelegate între ele cu ajutorul operatorilor.

Pot fi de mai multe tipuri, în funcţie de tipuloperatorilor si a operanzilor:

1. Expresii aritmetice2. Expresii relaţionale3. Expresii logice

02.12.2016 Programarea Calculatoarelor - curs 36

Page 37: Lecture1 pc

[email protected]

1.4. Obiectele cu care lucrează algoritmii

O expresie aritmetică este o expresie carecuprinde:

1. constante2. variabile3. sau funcţii aritmetice elementare legate,

eventual, prin operatori aritmetici.

02.12.2016 Programarea Calculatoarelor - curs 37

Page 38: Lecture1 pc

[email protected]

1.4. Obiectele cu care lucrează algoritmii

O expresie relaţională poate fi formată din:Două expresii aritmetice legate printr-un singuroperator relaţional (de exemplu: b2 > 4*a*c)

Două variabile nenumerice legate printr-unoperator relaţional (de exemplu:nume1<>nume2)

O variabilă şi o constantă nenumerice legateprintr-un operator relaţional (de exemplu:raspuns=‘da’)

02.12.2016 Programarea Calculatoarelor - curs 38

Page 39: Lecture1 pc

[email protected]

1.4. Obiectele cu care lucrează algoritmii

O expresie logică cuprinde:1. constante2. variabile3. sau expresii relaţionale legate prin operatori

logici a cărei valoare este fie adevărat, fie fals.

02.12.2016 Programarea Calculatoarelor - curs 39

Page 40: Lecture1 pc

[email protected]

1.4. Obiectele cu care lucrează algoritmii

Condiţiile care apar în algoritmi vor fiîntotdeauna exprimate prin expresiirelaţionale sau logice.

02.12.2016 Programarea Calculatoarelor - curs 40

Page 41: Lecture1 pc

[email protected]

1. ALGORITMI

1.1. Noţiunea de algoritm1.2. Reprezentarea unui algoritm1.3. Concepţia unui algoritm1.4. Obiectele cu care lucrează algoritmii1.5. Exemple de algoritmi elementari

02.12.2016 Programarea Calculatoarelor - curs 41

Page 42: Lecture1 pc

[email protected]

1.5. Exemple de algoritmi elementari

Enunţ:Să se calculeze perimetrul şi aria unui triunghi oarecaredacă se cunosc laturile triunghiului.

Pas 1: Stabilim care sunt datele de intrare si datele deiesire, adică cele care vor fi prelucrate cu ajutorulalgoritmului.

Î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.12.2016 Programarea Calculatoarelor - curs 42

Page 43: Lecture1 pc

[email protected]

1.5. Exemple de algoritmi elementari

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le

îndeplinească datele de intrare pentru a fiprelucrate în cadrul algoritmului.

În cadrul problemei pe care o avem de rezolvat,cunoaştem formula lui Heron pentru calculul arieiunui triunghi dacă se cunosc laturile sale:

unde p reprezintă semiperimetrul triunghiului.02.12.2016 Programarea Calculatoarelor - curs 43

))()(( cpbpappS

Page 44: Lecture1 pc

1.5. Exemple de algoritmi elementari

Pas 3: Scrierea algoritmului în pseudocod:

02.12.2016 Programarea Calculatoarelor - curs 44

real a, b, c, p, S

citeşte a, b, c

p a + b + c

scrie ‘Perimetrul triunghiului este ‘, p

p p / 2

scrie ‘Aria triunghiului este’, S

stop

c)b)(pa)(pp(pS

Page 45: Lecture1 pc

[email protected]

1.5. Exemple de algoritmi elementari

Pas 4: Implementarea algoritmului în limbajul deprogramare dorit - în cazul nostru vom utilizalimbajul C++.

Pas 5: Testarea algoritmului pe date de intrarediferite şi verificarea rezultatelor.

Ultimii doi paşi îi vom scrie dupăprezentarea limbajului C++.

02.12.2016 Programarea Calculatoarelor - curs 45

Page 46: Lecture1 pc

[email protected]

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

02.12.2016 Programarea Calculatoarelor - curs 46

Page 47: Lecture1 pc

[email protected]

1.5. Exemple de algoritmi elementariPas 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 nedeterminata3) Daca a ≠ 0 si b ≠ 0, atunci ecuatia are o singura solutie si

anume:

x = -b/a

02.12.2016 Programarea Calculatoarelor - curs 47

Page 48: Lecture1 pc

[email protected]

1.5. Exemple de algoritmi elementari

Pas 3: Scrierea algoritmului în pseudocod:

02.12.2016 Programarea Calculatoarelor - curs 48

real a, b, x

citeşte a, b

dacă a = 0 atunci

scrie ‘Ecuaţia are o infinitate de soluţii’

altfel

dacă b = 0 atunci

scrie ‘Ecuaţia este nedeterminată’

altfel

x - b / a

scrie x

sfârşit dacă

sfarşit dacă

stop

Page 49: Lecture1 pc

[email protected]

1.5. Exemple de algoritmi elementari

Pas 4: Implementarea algoritmului în limbajul deprogramare dorit - în cazul nostru vom utilizalimbajul C++.

Pas 5: Testarea algoritmului pe date de intrarediferite şi verificarea rezultatelor.

Ultimii doi paşi îi vom scrie dupăprezentarea limbajului C++.

02.12.2016 Programarea Calculatoarelor - curs 49

Page 50: Lecture1 pc

[email protected]

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

02.12.2016 Programarea Calculatoarelor - curs 50

Page 51: Lecture1 pc

[email protected]

Enunţuri de probleme ce pot fi rezolvate

1. Să se calculeze perimetrul şi aria unuidreptunghi, ştiind laturile sale.

2. Să se calculeze unghiurile(in radiani) unuitriunghi, ştiind laturile sale.

02.12.2016 Programarea Calculatoarelor - curs 51

Page 52: Lecture1 pc

[email protected]

Curs 2

Algoritmi(continuare)

02.12.2016 Curs - Programarea calculatoarelor 52

Page 53: Lecture1 pc

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari (numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

02.12.2016 Curs - Programarea calculatoarelor 53

Page 54: Lecture1 pc

[email protected]

2.1. Algoritmi elementari

PROBLEMA 1 Să se calculeze perimetrul şi aria unui dreptunghi,

ştiind laturile sale.

Pas 1: Stabilim care sunt datele de intrare, adică cele carevor fi prelucrate cu ajutorul algoritmului, împreună cudatele de ieşire.

În cazul problemei date, avem:Date de intrare: l şi L numere reale ce reprezintă laturile

dreptunghiului.Date de ieşire: p şi A numere reale ce reprezintă

perimetrul, respectiv aria dreptunghiului.02.12.2016 Curs - Programarea calculatoarelor 54

Page 55: Lecture1 pc

[email protected]

2.1. Algoritmi elementari

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le

îndeplinească datele de intrare pentru a fi prelucrate încadrul algoritmului.

În cadrul problemei pe care o avem de rezolvat,cunoaştem formulele pentru calculul perimetrului,respectiv ariei unui dreptunghi dacă se stiu laturilesale:

Perimetru = 2*( latime + Lungime )Aria = latime * Lungime

02.12.2016 Curs - Programarea calculatoarelor 55

Page 56: Lecture1 pc

2.1. Algoritmi elementari

Pas 3:Scriereaalgoritmului în pseudocod:

02.12.2016 Curs - Programarea calculatoarelor 56

real l, L, p, A

citeşte l, L

p <- 2 * ( l + L )

scrie ‘Perimetrul dreptunghiului este ‘, p

A <- l * L

scrie ‘Aria dreptunghiului este’, A

stop

Page 57: Lecture1 pc

[email protected]

2.1. Algoritmi elementariPROBLEMA 2

Sa se calculeze si sa se afiseze valoarea distanteiintre doua puncte, dandu-se coordonatele acestora:A(x1, y1) si B(x2, y2).

Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:Date de intrare: x1, x2, y1 şi y2 numere reale ce reprezintă

coordonatele celor doua puncte.Date de ieşire: d = distanta intre cele doua puncte02.12.2016 Curs - Programarea calculatoarelor 57

Page 58: Lecture1 pc

[email protected]

2.1. Algoritmi elementari

Pas 2: Analiza problemeiStabilim 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 de calcul pentru aflareadistantei dintre doua puncte in plan:

02.12.2016 Curs - Programarea calculatoarelor 58

)()()()( 21212121 yyyyxxxxd

Page 59: Lecture1 pc

2.1. Algoritmi elementari

Pas 3:Scriereaalgoritmului în pseudocod:

02.12.2016 Curs - Programarea calculatoarelor 59

real x1, x2, y1, y2, d

citeşte x1, y1, x2, y2

scrie ‘Distanta dintre cele doua puncteeste ’, d

stop

)21

()21

()21

()21

( yyyyxxxxd

Page 60: Lecture1 pc

[email protected]

2.1. Algoritmi elementari

PROBLEMA 3 Se dau două numere reale x şi y. Să se calculeze

următoarele expresii:A = 2 + x - yB = x * A + yC = A - 2 * B + x

Pas 1: Stabilim care sunt datele de intrare, şi ce tip de datereprezintă, împreună cu datele de ieşire.

În cazul problemei date, avem:Date de intrare: x şi y numere realeDate de ieşire: A, B şi C numere reale

02.12.2016 Curs - Programarea calculatoarelor 60

Page 61: Lecture1 pc

[email protected]

2.1. Algoritmi elementari

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le

îndeplinească datele de intrare pentru a fiprelucrate în cadrul algoritmului.

În cadrul problemei pe care o avem de rezolvat,cunoaştem formulele pentru fiecare expresie:

A = 2 + x - y B = x * A + yC = A - 2 * B + x

02.12.2016 Curs - Programarea calculatoarelor 61

Page 62: Lecture1 pc

2.1. Algoritmi elementari

Pas 3:Scriereaalgoritmului în pseudocod:

02.12.2016 Curs - Programarea calculatoarelor 62

real x, y, A, B, C

citeşte x, y

A <- 2 + x - y

B <- x * A + y

C <- A - 2 * B + x

scrie ‘Valoarea expresiei A este ‘, A

scrie ‘Valoarea expresiei B este ‘, B

scrie ‘Valoarea expresiei C este ‘, C

stop

Page 63: Lecture1 pc

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

02.12.2016 Curs - Programarea calculatoarelor 63

Page 64: Lecture1 pc

[email protected]

2.2. Algoritmi cu structura de decizie

PROBLEMA 4 Se dau trei numere întregi a, b si c. Să se scrie unalgoritm care să se determine maximul și minimulacestor valori.

Pas 1: Stabilim care sunt datele de intrare, adică cele carevor fi prelucrate cu ajutorul algoritmului, împreună cudatele de ieşire.

În cazul problemei date, avem:Date de intrare: a, b și c numere întregiDate de ieșire: min, respectiv max02.12.2016 Curs - Programarea calculatoarelor 64

Page 65: Lecture1 pc

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le

îndeplinească datele de intrare pentru a fi prelucrate încadrul algoritmului.

i) Comparăm primele două numere (a și b). În funcție decare este mai mic sau mai mare am determinat minimulși maximul celor două valori.

ii) Comparăm valorile de minim, respectiv de maxim cu celde-al treilea număr si astfel vom determina cea maimică, respectiv cea mai mare valoare dintre cele treidate.

02.12.2016 Curs - Programarea calculatoarelor 65

Page 66: Lecture1 pc

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 3:Scriereaalgoritmuluiîn pseudocod:

02.12.2016 Curs - Programarea calculatoarelor 66

intreg a, b, c, min, max

citeşte a, b, c

dacă a < b atunci

min <- a

max <- b

altfel

min <- b

max <- a

sfârşit dacă

dacă c < min atunci

min <- c

sfarşit dacă

dacă c > max atunci

max <- c

sfarşit dacă

scrie min, max

stop

Page 67: Lecture1 pc

2.2. Algoritmi cu structura de decizie

PROBLEMA 5Să se calculeze valoarea funcţiei f(x), ştiind că x este un număr real

introdus de la tastatură:

Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucratecu ajutorul algoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:Date de intrare: x număr realDate de iesire: f număr real, reprezentând valoarea funcţiei date

02.12.2016 Curs - Programarea calculatoarelor 67

0,2

]0,7(,30

]7,(,206

)(

xdacax

xdacax

xdacax

xf

Page 68: Lecture1 pc

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le

îndeplinească datele de intrare pentru a fiprelucrate în cadrul algoritmului. Căutăm cazurileparticulare.

În cadrul problemei pe care o avem de rezolvat,verificăm condiţiile date în expresia funcţiei:

1) Dacă x <= -7, atunci funcţia are valoarea: -6x + 202) Daca x > -7 si x <= 0, atunci funcţia are valoarea:

x+303) Daca x > 0, atunci funcţia are valoarea: sqrt(x) + 2

02.12.2016 Curs - Programarea calculatoarelor 68

Page 69: Lecture1 pc

2.2. Algoritmi cu structura de decizie

Pas 3:Scriereaalgoritmului în pseudocod:

02.12.2016 Curs - Programarea calculatoarelor 69

real x, f

citeşte x

dacă x <= -7 atunci

f <- -6 * x + 20

altfel

dacă x > -7 şi x <= 0 atunci

f <- x + 30

altfel

f <- sqrt(x) + 2

sfârşit dacă

sfarşit dacă

scrie f

stop

Page 70: Lecture1 pc

[email protected]

2.2. Algoritmi cu structura de decizie

PROBLEMA 6Să se citească trei valori naturale a, b și c. Să se scrie

un algoritm care să verifice dacă cele trei numere sunt sau nu numere pitagorice.

Precizare: Numim numere pitagorice, trei valori care îndeplinesc Teorema lui Pitagora, adică verifică una din condițiile:

02.12.2016 Curs - Programarea calculatoarelor 70

222

222

222

bac

cab

cba

Page 71: Lecture1 pc

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: a, b și c numere naturale

Date de ieşire: mesaj corespunzător

02.12.2016 Curs - Programarea calculatoarelor 71

Page 72: Lecture1 pc

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 2: Analiza problemeiStabilim condiţiile pe care trebuie să le îndeplinească

datele de intrare pentru a fi prelucrate în cadrulalgoritmului.

În cadrul problemei pe care o avem de rezolvat,verificăm condiţiile care trebuie îndeplinite de cele treivalori:

1) Dacă 𝒂𝟐 = 𝒃𝟐 + 𝒄𝟐, atunci sunt numere pitagorice.Sau2) Daca 𝒃𝟐 = 𝒂𝟐 + 𝒄𝟐, atunci sunt numere pitagorice.Sau3) Daca 𝒄𝟐 = 𝒂𝟐 + 𝒃𝟐, atunci sunt numere pitagorice.02.12.2016 Curs - Programarea calculatoarelor 72

Page 73: Lecture1 pc

[email protected]

2.2. Algoritmi cu structura de decizie

Pas 3:Scriereaalgoritmuluiîn pseudocod:

02.12.2016 Curs - Programarea calculatoarelor 73

natural a,b,cciteşte a,b,cdacă 𝑎2 = 𝑏2 + 𝑐2 atunci

scrie ‘Numere pitagorice’altfel

dacă 𝑏2 = 𝑎2 + 𝑐2 atunciscrie ‘Numere pitagorice’

altfeldacă 𝑐2 = 𝑎2 + 𝑏2 atunci

scrie ‘Numere pitagorice’altfel

scrie ‘NU SUNT nr. pitagorice’sfârşit dacă

sfarşit dacăsfarşit dacăstop

Page 74: Lecture1 pc

[email protected]

2.2. Algoritmi cu structura de decizie

Varianta II-aPas 3:

Scriereaalgoritmuluiîn pseudocod:

02.12.2016 Curs - Programarea calculatoarelor 74

natural a,b,cciteşte a,b,cdacă 𝑎2 = 𝑏2 + 𝑐2 sau 𝑏2 = 𝑎2 + 𝑐2 sau 𝑐2 = 𝑎2 + 𝑏2 atunci

scrie ‘Numere pitagorice’altfel

scrie ‘NU SUNT nr. pitagorice’sfarşit dacăstop

Page 75: Lecture1 pc

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari (numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

02.12.2016 Curs - Programarea calculatoarelor 75

Page 76: Lecture1 pc

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

PROBLEMA 7

Să se citească un număr natural n. Să se scrie un algoritm care afişează toţi divizorii numărului dat.

Exemplu:

02.12.2016 Curs - Programarea calculatoarelor 76

Pentru n = 12, mulţimea divizorilor este formată din valorile 1, 2, 3, 4, 6, 12.

Page 77: Lecture1 pc

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n număr natural

Date de ieşire: divizorii numărului n

02.12.2016 Curs - Programarea calculatoarelor 77

Page 78: Lecture1 pc

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

Pas 2: Analiza problemeiÎn cadrul problemei pe care o avem de rezolvat,

verificăm condiţia ca un număr să fie divizor al altui număr şi anume:

i este divizor al numărului n dacă se împarte exact la el, adică dacă este adevărată expresia n % i = 0.

Pentru a găsi toţi divizorii numărului n dat, vom da valori lui i, pornind de la valoarea 1 până la valoarea n.

Deci vom utiliza o structură repetitivă.

02.12.2016 Curs - Programarea calculatoarelor 78

Page 79: Lecture1 pc

2.3. Algoritmi cu structura repetitivă cu test iniţial

02.12.2016 Curs - Programarea calculatoarelor 79

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, iciteşte ni <- 1cât timp i <= n execută

dacă n % i = 0 atunciscrie i

sfârşit dacăi <- i + 1

sfârşit cât timpstop

Page 80: Lecture1 pc

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

PROBLEMA 8Să se citească un număr natural n. Să se scrie unalgoritm care verifică dacă numărul dat este sau nunumăr prim.Un număr n este prim dacă are ca divizori doarvalorile 1 şi n.

Exemplu:

02.12.2016 Curs - Programarea calculatoarelor 80

Pentru n = 7, se va afişa mesajul ‘numărul este prim’,

iar pentru n = 22, se va afişa mesajul ‘numărul NU

este prim’.

Page 81: Lecture1 pc

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

Pas 1: Stabilim care sunt datele de intrare, adică

cele care vor fi prelucrate cu ajutorul

algoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n număr natural

Date de ieşire: număr prim sau nu

02.12.2016 Curs - Programarea calculatoarelor 81

Page 82: Lecture1 pc

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

Pas 2: Analiza problemei:1) Vom presupune, la începutul problemei, că numărul n dateste prim, şi vom specifica acest lucru cu ajutorul uneivariabile de tip logic, căreia îi vom da valoarea ‘adevărat’.2) Apoi vom evalua, pe rând, toate valorile începând cuvaloarea 2 şi până la n-1, ca să determinăm dacă sunt divizoriai numărului n dat.3) Dacă găsim un singur divizor printre aceste numere, atuncivom acorda valoarea ‘fals’ variabilei de tip logic de laînceputul algoritmului.4) La sfârşit vom verifica care este valoarea variabilei de tiplogic şi vom afişa un mesaj corespunzător.

02.12.2016 Curs - Programarea calculatoarelor 82

Page 83: Lecture1 pc

2.3. Algoritmi cu structura repetitivă cu test iniţial

02.12.2016 Curs - Programarea calculatoarelor 83

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, ilogic pciteşte np <- adevărati <- 2cât timp i <= n-1 execută

dacă n % i = 0 atuncip <- fals

sfârşit dacăi <- i + 1

sfârşit cât timpdacă p = adevărat atunci

scrie ‘Numarul este prim’altfel

scrie ‘Numarul NU este prim’sfârşit dacăstop

Page 84: Lecture1 pc

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

PROBLEMA 9Să se calculeze suma şi produsul primelor nnumere naturale, n fiind introdus de latastatură.

Exemplu:

02.12.2016 Curs - Programarea calculatoarelor 84

Pentru n = 5, se vor afişa valoriles = 1 + 2 + 3 + 4 + 5 = 15p = 1 * 2 * 3 * 4 * 5 = 120

Page 85: Lecture1 pc

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

Pas 1: Stabilim care sunt datele de intrare, adicăcele care vor fi prelucrate cu ajutorulalgoritmului, împreună cu datele de ieşire. Încazul problemei date, avem:

Date de intrare: n număr natural

Date de ieşire: s şi p

02.12.2016 Curs - Programarea calculatoarelor 85

Page 86: Lecture1 pc

[email protected]

2.3. Algoritmi cu structura repetitivă cu test iniţial

Pas 2: Analiza problemeiLa începutul problemei, vom iniţializa două

valori, s pentru sumă cu 0 şi p pentru produs cu1.

Apoi vom verifica, pe rând, toate valorilenaturale de la 1 la n şi le vom însuma, respectivînmulţi.

Soluţiile obţinute le vom afişa.

02.12.2016 Curs - Programarea calculatoarelor 86

Page 87: Lecture1 pc

2.3. Algoritmi cu structura repetitivă cu test iniţial

02.12.2016 Curs - Programarea calculatoarelor 87

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, i, s, pciteşte ns <- 0p <- 1i <- 1cât timp i <= n execută

s <- s + ip <- p * ii <- i + 1

sfârşit cât timpscrie ‘Suma numerelor este’, sscrie ‘Produsul numerelor este’, pstop

Page 88: Lecture1 pc

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari (numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

02.12.2016 Curs - Programarea calculatoarelor 88

Page 89: Lecture1 pc

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

PROBLEMA 10

Să se scrie un program care verifică dacă unnumăr n este perfect sau nu.Un număr perfect este egal cu suma divizorilor lui,inclusiv 1 (exemplu: 6 = 1 + 2 + 3), mai putin el însuși.

Exemplu:

02.12.2016 Curs - Programarea calculatoarelor 89

Pentru n = 28, se va afişa mesajulNumar perfect (divizorii lui 28 sunt

1,2,4,7,14)

Page 90: Lecture1 pc

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 1: Stabilim care sunt datele de intrare, adicăcele care vor fi prelucrate cu ajutorulalgoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n număr naturalDate de ieşire: mesaj corespunzător

02.12.2016 Curs - Programarea calculatoarelor 90

Page 91: Lecture1 pc

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 2: Analiza problemei1) La începutul problemei, vom verifica initializa o

variabila de tip suma cu valoarea 0.2) Pentru fiecare valoare i de la 1 la n-1 o vom

verifica dacă i este divizor al numarului n. Dacaeste divizor atunci il insumam la valoarea s.

3) Verificam daca suma obtinuta este egala cunumarul n. Daca da atunci scriem mesajul‘Numarul este perfect’.

02.12.2016 Curs - Programarea calculatoarelor 91

Page 92: Lecture1 pc

2.4. Algoritmi cu structura repetitivă cu test final

02.12.2016 Curs - Programarea calculatoarelor 92

Pas 3:

Scriereaalgoritmuluiîn pseudocod:

natural n, i, sciteşte ni <- 1s<- 0repetă

dacă n % i = 0 atuncis <- s + i

sfârşit dacăi <- i + 1

până când i > n-1dacă s = n atunci

scrie ‘Numarul este perfect’altfel

scrie ‘Numarul NU este perfect’sfârşit dacăstop

Page 93: Lecture1 pc

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

PROBLEMA 11Fie şirul lui Fibonacci, definit astfel:f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) în cazul în care

n>1.Să se scrie un algoritm care implementează

valorile şirului lui Fibonacci.

Exemplu:

02.12.2016 Curs - Programarea calculatoarelor 93

Pentru n = 7, se vor afişa valorile 1, 1, 2, 3, 5, 8, 13.

Page 94: Lecture1 pc

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 1: Stabilim care sunt datele de intrare, adică cele care vor fi prelucrate cu ajutorul algoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:Date de intrare: n număr natural

Date de ieşire: numerele din şirul lui Fibonacci

02.12.2016 Curs - Programarea calculatoarelor 94

Page 95: Lecture1 pc

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 2: Analiza problemeiLa începutul problemei, vom iniţializa două

valori (a şi b) cu primele două elemente aleşirului lui Fibonacci, adică cu valori de 1.

Apoi, într-un ciclu repetitiv vom calcula cuajutorul unei a treia valori (variabila c) suma lorşi vom da următoarele valori variabilelor a şi b.

02.12.2016 Curs - Programarea calculatoarelor 95

Page 96: Lecture1 pc

2.4. Algoritmi cu structura repetitivă cu test final

02.12.2016 Curs - Programarea calculatoarelor 96

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, i, a, b, cciteşte ni <- 1a <- 1b <- 1repetă

c <- a + bscrie ca <- bb <- ci <- i + 1

până când i > n-2stop

Page 97: Lecture1 pc

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

PROBLEMA 12Fie un număr natural n de cinci cifre. Să se

scrie un algoritm care să calculeze suma cifrelornumărului dat.

Exemplu:

02.12.2016 Curs - Programarea calculatoarelor 97

Pentru n = 2178, se va afişa valoareas = 2+1+7+8=18.

Page 98: Lecture1 pc

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 1: Stabilim care sunt datele de intrare, adicăcele care vor fi prelucrate cu ajutorulalgoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n număr naturalDate de ieşire: s = suma cifrelor

02.12.2016 Curs - Programarea calculatoarelor 98

Page 99: Lecture1 pc

[email protected]

2.4. Algoritmi cu structura repetitivă cu test final

Pas 2: Analiza problemeiLa începutul problemei, vom iniţializa

valoarea sumei cifrelor numărului n dat cu 0.Apoi, într-un ciclu repetitiv vom calcula

suma cifrelor numărului, ştiind că o cifră a unuinumăr scris în baza 10 este dată de n%10, iarcâtul este dat de n/10.

02.12.2016 Curs - Programarea calculatoarelor 99

Page 100: Lecture1 pc

2.4. Algoritmi cu structura repetitivă cu test final

02.12.2016 Curs - Programarea calculatoarelor 100

Pas 3:

Scriereaalgoritmului în pseudocod:

natural n, sciteşte ns <- 0repetă

s <- s + n%10n <- n/10

până când n = 0scrie sstop

Numarulfara ultima

cifra

Ultimacifra a lui n

Page 101: Lecture1 pc

[email protected]

2. ALGORITMI

2.1. Algoritmi elementari (numai cu operatia de atribuire)

2.2. Algoritmi cu structura de decizie2.3. Algoritmi cu structura repetitivă cu test iniţial2.4. Algoritmi cu structura repetitivă cu test final2.5. Algoritmi cu structura repetitivă cu număr

cunoscut de pași

02.12.2016 Curs - Programarea calculatoarelor 101

Page 102: Lecture1 pc

[email protected]

2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași

PROBLEMA 13Se citesc două numere întregi a şi b. Să se realizeze

in pseudocod un algoritm care să verifice dacă cele douanumere sunt prietene.

Spunem ca două numere sunt prietene dacă sumadivizorilor proprii ai unui număr este egală cu celalalt şiinvers.

Exemplu:

02.12.2016 Curs - Programarea calculatoarelor 102

Pentru n = 220, si m = 284 se vor afişa valorileDivizorii lui 220, sunt 1, 2, 4, 5, 10, 11, 20, 22,44, 55 și 110Divizorii lui 284, sunt 1, 2, 4, 71 și 142

Page 103: Lecture1 pc

[email protected]

2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași

Pas 1: Stabilim care sunt datele de intrare, adicăcele care vor fi prelucrate cu ajutorulalgoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n si m numere naturaleDate de ieşire: numerele sunt sau nu prietene

02.12.2016 Curs - Programarea calculatoarelor 103

Page 104: Lecture1 pc

[email protected]

2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași

Pas 2: Analiza problemeiLa începutul problemei, vom iniţializa valoarea unei

variabile pentru suma divizorilor lui n cu 0, iar apoivaloarea unei variabile pentru suma divizorilor lui m cu 0.

Apoi, într-un ciclu repetitiv avand n/2 pasi vom calculasuma divizorilor lui n.

Apoi, într-un ciclu repetitiv avand m/2 pasi vom calculasuma divizorilor lui m.

La sfarsit vom verifica daca cele suma divizorilorprimului numar este egala cu cel de-al doilea numar, iarsuma divizorilor celui de-al doilea numar este egala cuprimul numar.

02.12.2016 Curs - Programarea calculatoarelor 104

Page 105: Lecture1 pc

2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași

02.12.2016 Curs - Programarea calculatoarelor 105

Pas 3:

Scriereaalgoritmuluiîn pseudocod:

natural n, m, i, j, suma_n, suma_mciteşte nsuma_n <- 0pentru i=1,n/2 execută

daca n%i=0 atuncisuma_n <- suma_n + i

sfârșit dacasfârșit pentru

Page 106: Lecture1 pc

2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași

02.12.2016 Curs - Programarea calculatoarelor 106

Pas 3:

Scriereaalgoritmuluiîn pseudocod:

suma_m <- 0pentru j=1,m/2 execută

dacă m%j=0 atuncisuma_m <- suma_m + j

sfârșit dacăsfârșit pentrudacă suma_n = m AND suma_m=natunci

scrie “Numere prietene”altfel

scrie “Numere neprietene”sfârșit dacăstop

Page 107: Lecture1 pc

[email protected]

2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași

PROBLEMA 14Se citesc pe rând, n numere naturale. Să se

realizeze, în pseudocod, un algoritm care sădetermine cel mai mare număr dintre cele ndate.

Exemplu:

02.12.2016 Curs - Programarea calculatoarelor 107

Pentru n = 10, si valorile următoare:-2, 12, 56, -123, 34, 7, -45, 90, 23, 6 Valoarea maximă este 90

Page 108: Lecture1 pc

[email protected]

2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași

Pas 1: Stabilim care sunt datele de intrare, adicăcele care vor fi prelucrate cu ajutorulalgoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: n număr natural, n numerenaturale

Date de ieşire: valoarea maximă

02.12.2016 Curs - Programarea calculatoarelor 108

Page 109: Lecture1 pc

[email protected]

2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași

Pas 2: Analiza problemeiLa începutul problemei, vom iniţializa o variabilă, în

care vom reține valoarea maximă, cu o valoare foartemica, arbitrar aleasă.

Apoi, într-un ciclu repetitiv având n pași vomcompara, pe rând cele n valori citite de la tastatură și vomreține de fiecare valoare mai mare decât cea din variabilamax.

La sfârșit vom avea valoarea cea mai mare în variabilamax.

02.12.2016 Curs - Programarea calculatoarelor 109

Page 110: Lecture1 pc

2.5. Algoritmi cu structura repetitivă cu număr cunoscut de pași

02.12.2016 Curs - Programarea calculatoarelor 110

Pas 3:

Scriereaalgoritmuluiîn pseudocod:

natural n, i, max, xciteşte nmax <- -10000pentru i=1,n execută

citește xdaca x>max atunci

max <- xsfârșit daca

sfârșit pentruscrie maxstop

Page 111: Lecture1 pc

[email protected]

Alte probleme propuse spre rezolvare

EnuntCe citesc trei numere naturale nenule. Sa se

verifice daca ele coincid chiar cu valorile 1, 2, si 3.Exemplu:

02.12.2016 Curs - Programarea calculatoarelor 111

Pentru n = 10, si valorile următoare:-2, 12, 56, -123, 34, 7, -45, 90, 23, 6 Valoarea maximă este 90

Page 112: Lecture1 pc

[email protected]

Alte probleme propuse spre rezolvare

Pas 1: Stabilim care sunt datele de intrare, adicăcele care vor fi prelucrate cu ajutorulalgoritmului, împreună cu datele de ieşire.

În cazul problemei date, avem:

Date de intrare: a,b,c numere natural nenuleDate de ieşire: mesaj corespunzator

02.12.2016 Curs - Programarea calculatoarelor 112

Page 113: Lecture1 pc

[email protected]

Alte probleme propuse spre rezolvare

Pas 2: Analiza problemei

Pentru a identifica daca cele trei numere citite sunt

chiar egale cu valorile 1, 2 si 3, putem verifica acest

lucru intr-un mod simplu.

Calculam suma si produsul lor si daca obtinem

pentru fiecare din cele doua valori astfel calculate,

valoarea 6, atunci am gasit rezultatul dorit.

02.12.2016 Curs - Programarea calculatoarelor 113

Page 114: Lecture1 pc

Alte probleme propuse spre rezolvare

02.12.2016 Curs - Programarea calculatoarelor 114

Pas 3:

Scriereaalgoritmuluiîn pseudocod:

natural a, b, c, s, pciteste a, b, cs <- a + b + cp <- a * b * cdaca s = 6 si p = 6 atunci

scrie ‘Numerele citite sunt chiar 1, 2 si3’altfel

scrie ‘Numerele citite un sunt egale cu 1,2 si 3’sfarsit dacastop

Page 115: Lecture1 pc

[email protected]

Alte probleme propuse spre rezolvare

Problema 2:Se citesc trei numere a,b,c. Sa se verifice daca aceste numere (puse in orice odine) sunt in progresie aritmetica si sa se afiseze ratia progresiei in caz afirmativ.

Problema 3:Se dau trei numere a,b,c. Sa se verifice daca pot reprezenta laturile unui triunghi. In caz afirmativ sa se precizeze ce tip de triunghi este: echilateral, isoscel, dreptunghic sau oarecare.02.12.2016 Curs - Programarea calculatoarelor 115

Page 116: Lecture1 pc

[email protected]

Referinte bibliograficeBibliografia necesară cursului:

1. Adrian Runceanu, Mihaela Runceanu, Noțiuni de programare înlimbajul 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, EdituraMirton, Timişoara, 2004

4. O.Catrina, I.Cojocaru, Turbo C+, Editura Teora, Bucureşti, 19935. D.Costea, Iniţiere în limbajul C, Editura Teora, Bucureşti, 19966. K.Jamsa, C++, Editura Teora,19997. K.Jamsa & L.Klander, Totul despre C si C++, Teora, 2004

02.12.2016 Programarea Calculatoarelor - curs 116

Page 117: Lecture1 pc

[email protected]

“First, solve the problem. Then, write the code.”

- John Johnson

02.12.2016 Programarea Calculatoarelor - curs 117