Algoritmi prof Ancuta Lung 1 ALGORITMI o o

  • Slides: 71
Download presentation
Algoritmi prof. Ancuta Lung 1

Algoritmi prof. Ancuta Lung 1

ALGORITMI o o NOŢIUNI INTRODUCTIVE DEFINIRE EXEMPLE DIN MATEMATICĂ METODE DE REPREZENTARE ü LIMBAJ

ALGORITMI o o NOŢIUNI INTRODUCTIVE DEFINIRE EXEMPLE DIN MATEMATICĂ METODE DE REPREZENTARE ü LIMBAJ PSEUDOCOD ü SCHEME LOGICE o STRUCTURI FUNDAMENTALE DE CONTROL ü STRUCTURA LINIARĂ ü STRUCTURA DECIZIONALĂ ü STRUCTURA REPETITIVĂ o APLICAŢII 2

Noţiuni introductive Pentru a înţelege noţiunea de algoritm vom porni de la un exemplu.

Noţiuni introductive Pentru a înţelege noţiunea de algoritm vom porni de la un exemplu. Să presupunem că mama ne roagă să cumpărăm pâine. Ce trebuie să facem? 3

Când am decis să plecăm la magazin vom proceda astfel: - luăm banii necesari;

Când am decis să plecăm la magazin vom proceda astfel: - luăm banii necesari; - ne îndreptăm către magazin; - solicităm o pâine; - o plătim; - venim cu ea către casă; - o dăm mamei. 4

Am obţinut astfel un algoritm: * care conţine 6 etape (deci un număr finit

Am obţinut astfel un algoritm: * care conţine 6 etape (deci un număr finit de operaţii); * care au fost scrise în ordinea în care trebuie executate (deci sunt ordonate); * fiecare etapă este explicată în cuvinte (deci este complet definită); * şi care pornind de la ceva (în cazul nostru bani) obţinem ceea ce dorim (pâinea). Putem defini acum noţiunea de algoritm sintetizând cele spuse astfel: 5

Definire Se numeşte algoritm o secvenţă finită de operaţii ordonată şi complet definită care

Definire Se numeşte algoritm o secvenţă finită de operaţii ordonată şi complet definită care pornind de la datele de intrare produce rezultatele. Pe scurt: Un algoritm este un plan de rezolvare a unei probleme. 6

7

7

In lectia de azi ne vom ocupa de pasul 2, si anume “Elaborarea modului

In lectia de azi ne vom ocupa de pasul 2, si anume “Elaborarea modului de rezolvare al problemei”. 8

Să luăm un alt exemplu: Presupunem că vrem să citim un număr întreg (pe

Să luăm un alt exemplu: Presupunem că vrem să citim un număr întreg (pe care noi îl introducem de la tastatură) şi îl tipărim (pe ecranul monitorului). Şirul acţiunilor ce trebuie executate este următorul: - citeşte numărul - tipăreşte numărul Şi în acest caz am obţinut un algoritm. Acţiunile trebuie executate în ordinea în care au fost puse. Astfel, nu putem tipări numărul înainte ca acesta să fie cunoscut (citit). 9

Temă: Scrieţi un algoritm care calculează suma a două numere întregi a şi b.

Temă: Scrieţi un algoritm care calculează suma a două numere întregi a şi b. Modificaţi apoi algoritmul astfel încât să calculeze şi produsul celor două numere. 10

Rezolvare: Algoritmul problemei: 1. Solicită valori pentru a şi b 2. Calculează S=a+b 3.

Rezolvare: Algoritmul problemei: 1. Solicită valori pentru a şi b 2. Calculează S=a+b 3. Furnizează rezultatul pentru S 11

Algoritmul modificat are forma: 1. Solicită valori pentru a şi b 2. Calculează S=a+b

Algoritmul modificat are forma: 1. Solicită valori pentru a şi b 2. Calculează S=a+b 3. Calculează P=a*b 4. Furnizează rezultatul pentru S şi pentru P 12

Metode de reprezentare a algoritmilor Limbajul natural nu permite o descriere suficient de exactă

Metode de reprezentare a algoritmilor Limbajul natural nu permite o descriere suficient de exactă a algoritmilor. Din acest motiv pentru reprezentarea algoritmilor se folosesc diferite forme de descriere caracteristice. 13

Două din cele mai folosite forme de descriere a algoritmilor sunt: q limbajul pseudocod;

Două din cele mai folosite forme de descriere a algoritmilor sunt: q limbajul pseudocod; q Scheme logice. 14

Reprezentarea algoritmilor în limbaj pseudocod Limbajul pseudocod foloseşte cuvinte cheie, adică nişte cuvinte cu

Reprezentarea algoritmilor în limbaj pseudocod Limbajul pseudocod foloseşte cuvinte cheie, adică nişte cuvinte cu înţeles prestabilit ce indică operaţia care se execută. 15

Exemplu: Să se calculeze suma a două numere naturale a şi b. Rezolvare: a)

Exemplu: Să se calculeze suma a două numere naturale a şi b. Rezolvare: a) Algoritmul: 1. Solicită valori pentru a şi b 2. Calculează S=a+b 3. Furnizează rezultatul pentru S 16

b) Pseudocodul: Inceput program citeşte a, b S=a+b scrie S stop 17

b) Pseudocodul: Inceput program citeşte a, b S=a+b scrie S stop 17

Temă: Să se calculeze media aritmetică a 3 numere întregi x, y şi z.

Temă: Să se calculeze media aritmetică a 3 numere întregi x, y şi z. Se cer: a) algoritmul; b) pseudocodul. 18

Reprezentarea algoritmilor prin scheme logice Schemele logice utilizează săgeţi de legătură între diferite forme

Reprezentarea algoritmilor prin scheme logice Schemele logice utilizează săgeţi de legătură între diferite forme geometrice care simbolizează acţiunile ce urmează a fi executate. În continuare sunt prezentate blocurile care intră în componenţa unei scheme logice: 19

1. Bloc pentru introducerea datelor (bloc de citire) Listă variabile unde “Listă variabile” cuprinde

1. Bloc pentru introducerea datelor (bloc de citire) Listă variabile unde “Listă variabile” cuprinde numele simbolice ale variabilelor cărora li se asociază valori numerice (citite). 20

2. Bloc de extragere a rezultatelor (bloc de scriere) Listă variabile unde variabilele menţionate

2. Bloc de extragere a rezultatelor (bloc de scriere) Listă variabile unde variabilele menţionate în listă constituie rezultate ale problemei. 21

3. Bloc de calcul (bloc de atribuire) V = expresie Un astfel de bloc

3. Bloc de calcul (bloc de atribuire) V = expresie Un astfel de bloc indică următoarea succesiune de operaţii: - se calculează expresia din membrul drept; - se atribuie variabilei din membrul stâng valoarea calculată anterior (V reprezintă numele variabilei). 22

4. Bloc de decizie (bloc decizional) Adevarat condiţie FALS Condiţia logică înscrisă poate să

4. Bloc de decizie (bloc decizional) Adevarat condiţie FALS Condiţia logică înscrisă poate să aibă valoarea “adevărat” sau “fals”; în funcţie de valoarea logică obţinută, blocul următor care va fi parcurs va fi legat de ramura “true”(adevărat) sau ramura “false”(fals). 23

5. Bloc de început (bloc de start) START Indică începutul algoritmului. 24

5. Bloc de început (bloc de start) START Indică începutul algoritmului. 24

6. Bloc de sfârşit (bloc de stop) STOP Indică sfârşitul algoritmului. 25

6. Bloc de sfârşit (bloc de stop) STOP Indică sfârşitul algoritmului. 25

Exemplu: Să se calculeze suma a două numere naturale a şi b. Rezolvare: a)

Exemplu: Să se calculeze suma a două numere naturale a şi b. Rezolvare: a) Algoritmul: 1. Solicită valori pentru a şi b 2. Calculează S=a+b 3. Furnizează rezultatul pentru S 26

b) Pseudocodul: Inceput program citeşte a, b S=a+b scrie S stop 27

b) Pseudocodul: Inceput program citeşte a, b S=a+b scrie S stop 27

a c) Schema logică: START a, b S=a+b S STOP 28

a c) Schema logică: START a, b S=a+b S STOP 28

Temă: Să se calculeze produsul a trei numere întregi x, y şi z. Se

Temă: Să se calculeze produsul a trei numere întregi x, y şi z. Se cer: a) algoritmul; b) pseudocodul; c) schema logică. 29

Structuri de control O structură înseamnă o combinaţie de operaţii utilizată în scrierea algoritmilor.

Structuri de control O structură înseamnă o combinaţie de operaţii utilizată în scrierea algoritmilor. Orice algoritm care un punct de început şi un punct de sfârşit poate fi reprezentat ca o combinaţie a trei structuri de control: ü Secvenţa; ü Decizia; ü Repetiţia. 30

Structura secvenţială Secvenţa reprezintă o succesiune de două sau mai multe operaţii care conţine

Structura secvenţială Secvenţa reprezintă o succesiune de două sau mai multe operaţii care conţine o transformare de date: Secvenţa A în care “Secvenţa A” reprezintă o transformare de date. 31

Exemplu: Să se calculeze suma, produsul şi diferenţa a trei nume întregi x, y

Exemplu: Să se calculeze suma, produsul şi diferenţa a trei nume întregi x, y şi z. a) algoritmul: 1. Se dau valori pentru x, y şi z 2. Calculează S=x+y+z 3. Calculează P=x*y*z 4. Calculează diferenţa D=x-y-z 5. Afişează rezultatele pentru S, P şi D. 32

b) pseudocodul: Inceput program citeşte x, y, z S=x+y+z P=x*y*z D=x-y-z scrie S, P,

b) pseudocodul: Inceput program citeşte x, y, z S=x+y+z P=x*y*z D=x-y-z scrie S, P, D stop 33

c) Schema logică: START x, y, z S=x+y+z P=x*y*z D=x-y-z S, P, D STOP

c) Schema logică: START x, y, z S=x+y+z P=x*y*z D=x-y-z S, P, D STOP 34

Temă: Se dau trei numere naturale a, b şi c. Să se calculeze valorile

Temă: Se dau trei numere naturale a, b şi c. Să se calculeze valorile expresiilor: S 1=(a+b)*(a-b) S 2=a*b+a*c+b*c P=S 1*S 2 Se cer: a) algoritmul; b) pseudocodul; c) schema logică. 35

Structura decizională Decizia reprezintă alegerea unei operaţii sau a unei secvenţe de operaţii dintre

Structura decizională Decizia reprezintă alegerea unei operaţii sau a unei secvenţe de operaţii dintre două alternative posibile. Forma structurii decizionale este următoarea: true Secvenţa A condiţie false Secvenţa B 36

În limbaj natural, execuţia poate fi descrisă astfel: - se evalueză condiţia; - dacă

În limbaj natural, execuţia poate fi descrisă astfel: - se evalueză condiţia; - dacă condiţia este adevărat, se execută “Secvenţa A”; - în caz contrar (dacă condiţia este falsă) se execută “Secvenţa B”. În pseudocod, execuţia se descrie astfel: dacă condiţie atunci Secvenţa A altfel Secvenţa B 37

Exemplu: Se dau două numere naturale a şi b. Să se determine care dintre

Exemplu: Se dau două numere naturale a şi b. Să se determine care dintre ele are valoarea mai mare. Rezolvare: a) Algoritmul: 1. Se dau valori lui a şi b 2. Se determină maximul dintre a şi b: dacă a este mai mare ca b atunci maximul este a altfel maximul este b 3. Se afişează maximul 38

b) Pseudocodul: Inceput program citeşte a dacă a>b atunci max=a altfel max=b scrie max

b) Pseudocodul: Inceput program citeşte a dacă a>b atunci max=a altfel max=b scrie max stop 39

c) Schema logică: start a, b true a>b max=a false max=b max stop 40

c) Schema logică: start a, b true a>b max=a false max=b max stop 40

Temă: Să se determine dacă un număr x este pozitiv sau nu. Se cer:

Temă: Să se determine dacă un număr x este pozitiv sau nu. Se cer: - algoritmul; - pseudocodul; - schema logică. 41

Decizia cu varianta unei căi nule Mai există o formă a structurii decizionale şi

Decizia cu varianta unei căi nule Mai există o formă a structurii decizionale şi anume cea cu varianta unei căi nume. Forma acestei structuri este următoarea: true condiţie false Secvenţa A 42

În limbaj natural, execuţia poate fi descrisă astfel: - se evalueză condiţia; - dacă

În limbaj natural, execuţia poate fi descrisă astfel: - se evalueză condiţia; - dacă condiţia este adevărat, se execută “Secvenţa A” apoi execuţia structurii decizionale se încheie; - în caz contrar (dacă condiţia este falsă) execuţia structurii decizionale se încheie. În pseudocod, execuţia se descrie astfel: dacă condiţie atunci Secvenţa A 43

Exemplu: Se citeşte o valoare întreagă a. În cazul în care aceasta este nulă

Exemplu: Se citeşte o valoare întreagă a. În cazul în care aceasta este nulă (egală cu 0) se va tipări mesajul “am citit zero”. Altfel, nu se va da mesaj. Rezolvare: a) Algoritmul: 1. Se dă valoare lui a 2. Se determină dacă a este nul: dacă a este egal cu zero atunci se va tipări “am citit zero” 44

b) Pseudocodul: citeşte a dacă a=0 atunci scrie ‘am citit zero’ stop 45

b) Pseudocodul: citeşte a dacă a=0 atunci scrie ‘am citit zero’ stop 45

c) Schema logică: start a true a=0 false ‘am citit zero’ stop 46

c) Schema logică: start a true a=0 false ‘am citit zero’ stop 46

Temă: Se citeşte de la tastatură un număr întreg x. În cazul în care

Temă: Se citeşte de la tastatură un număr întreg x. În cazul în care acesta este cuprins în intervalul [1, 100] se va afişa mesajul “număr cuprins în interval”, altfel nu se va afişa nici un mesaj. Se cer: algoritmul; pseudocodul; schima logică. 47

Structura repetitivă Repetiţia (bucla sau iteraţia) asigură execuţia unei secvenţe în mod repetat în

Structura repetitivă Repetiţia (bucla sau iteraţia) asigură execuţia unei secvenţe în mod repetat în funcţie de o anumită condiţie. Există trei tipuri de structuri repetitive: - bucla cu test iniţial; - bucla cu test final; - bucla cu contor. 48

1. Structura repetitivă cu test iniţial are forma: condiţie false true Secvenţa A 49

1. Structura repetitivă cu test iniţial are forma: condiţie false true Secvenţa A 49

a Execuţia structurii repetitive cu test iniţial presupune parcurgerea următoarelor etape: 1. Se evaluează

a Execuţia structurii repetitive cu test iniţial presupune parcurgerea următoarelor etape: 1. Se evaluează condiţia; dacă rezultatul este adevărat se trece la pasul 2, altfel execuţia se încheie; 2. Se execută secvenţa A, apoi se trece la pasul 1). 50

Exprimarea în pseudocod: cât timp condiţie execută Secvenţa A 51

Exprimarea în pseudocod: cât timp condiţie execută Secvenţa A 51

Exemplu: Să se calculeze suma primelor n numere naturale. Rezolvare: a) Algoritmul: 1. Se

Exemplu: Să se calculeze suma primelor n numere naturale. Rezolvare: a) Algoritmul: 1. Se dă valoare lui n; 2. Se dă lui S valoarea 0 şi lui I valoarea 1 3. Cât timp I este mai mic sau egal cu n se calculează suma după formula S=S+I şi I ia valoarea următorului termen al sumei, după formula I=I+1 4. Se afişează valoarea sumei S. 52

b) Pseudocodul: citeşte n S=0 I=1 cât timp I<=n execută S=S+I I=I+1 scrie S

b) Pseudocodul: citeşte n S=0 I=1 cât timp I<=n execută S=S+I I=I+1 scrie S stop 53

c) Schema logică: a start n s=0 i=1 i<=n true s=s+i false s stop

c) Schema logică: a start n s=0 i=1 i<=n true s=s+i false s stop i=i+1 54

Temă Să se calculeze produsul primelor n numere naturale. Se cer: a) algoritmul; b)

Temă Să se calculeze produsul primelor n numere naturale. Se cer: a) algoritmul; b) pseudocodul; c) schema logică. 55

2. Structura repetitivă cu test final: Structura repetitivă cu test final are forma: Secvenţa

2. Structura repetitivă cu test final: Structura repetitivă cu test final are forma: Secvenţa A condiţie false true 56

a Execuţia buclei cu test final presupune parcurgerea următoarelor etape: 1. Se execută secvenţa

a Execuţia buclei cu test final presupune parcurgerea următoarelor etape: 1. Se execută secvenţa A 2. Se evaluează condiţia; dacă rezultatul este fals, se continuă cu pasul 1), în caz contrar, se încheie execuţia buclei. 57

Exprimarea în pseudocod: repetă Secvenţa A până când condiţie 58

Exprimarea în pseudocod: repetă Secvenţa A până când condiţie 58

Exemplu: Să se calculeze suma primelor n numere naturale. Rezolvare: a) Algoritmul: 1. Se

Exemplu: Să se calculeze suma primelor n numere naturale. Rezolvare: a) Algoritmul: 1. Se dă valoare lui n; 2. Se dă lui S valoarea 0 şi lui I valoarea 1 3. Se calculează suma după formula S=S+I şi I ia valoarea I=I+1, până când I>n. 4. Se afişează valoarea sumei. 59

b) Pseudocodul: a citeşte n S=0 I=1 repetă S=S+I I=I+1 până când I>n scrie

b) Pseudocodul: a citeşte n S=0 I=1 repetă S=S+I I=I+1 până când I>n scrie S stop 60

c) Schema logică: a start n s=0 i=1 s=s+i i=i+1 i>n true false s

c) Schema logică: a start n s=0 i=1 s=s+i i=i+1 i>n true false s stop 61

Temă: Să se calculeze produsul primelor n numere naturale. Se cer: - algoritmul; -

Temă: Să se calculeze produsul primelor n numere naturale. Se cer: - algoritmul; - pseudocodul; - schema logică. 62

3. Structura repetitivă cu contor: Structura repetitivă cu contor are forma: contor=vi false contor<=vf

3. Structura repetitivă cu contor: Structura repetitivă cu contor are forma: contor=vi false contor<=vf true secvenţa A contor=contor +pas unde cu “vi” s-a notat valoarea iniţială, iar cu “vf” s-a 63 notat valoarea finală.

Această structură are un număr cunoscut de repetiţii a “Secvenţei A”, motiv pentru care

Această structură are un număr cunoscut de repetiţii a “Secvenţei A”, motiv pentru care se numeşte structură repetitivă cu contor. Execuţia structurii repetitive cu contor presupune parcurgerea următoarelor etape: 1). Variabila de ciclare “contor” ia valoarea iniţială “vi”. 2). Dacă “contor” este mai mic sau egal cu valoarea finală “vf”, se execută “Secvenţa A”, se adună 1 la “contor” şi se reia cu pasul 2). . Altfel, execuţia este încheiată. 64

Exprimarea în pseudocod: pentru contor=vi, vf execută secvenţa A 65

Exprimarea în pseudocod: pentru contor=vi, vf execută secvenţa A 65

Exemplu: Să se calculeze suma primelor n numere naturale. Rezolvare: a) Algoritmul: 1. Se

Exemplu: Să se calculeze suma primelor n numere naturale. Rezolvare: a) Algoritmul: 1. Se dă valoare lui n; 2. Se dă lui S valoarea 0 şi lui I valoarea 1 3. Pentru I luând valori de la 1 până la n se calculează suma după formula S=S+I 4. Se afişează valoarea sumei. 66

b) Pseudocodul: citeşte n S=0 petntru I=1, n execută S=S+I scrie S stop 67

b) Pseudocodul: citeşte n S=0 petntru I=1, n execută S=S+I scrie S stop 67

c) Schema logică: start n s=0 i=1 false s stop i<=n true i=i+1 s=s+i

c) Schema logică: start n s=0 i=1 false s stop i<=n true i=i+1 s=s+i 68

Temă: Să se calculeze produsul primelor n numere naturale. Se cer: - algoritmul; -

Temă: Să se calculeze produsul primelor n numere naturale. Se cer: - algoritmul; - pseudocodul; - schema logică. 69

Aplicaţii 1. Se citesc două valori întregi a şi b. Se cere să se

Aplicaţii 1. Se citesc două valori întregi a şi b. Se cere să se tipărească media lor aritmetică. 2. Se citesc 3 numere naturale. Se cere să se tipărească primul număr, suma dintre primul şi al doilea, suma celor trei numere. 3. Se citeşte x număr natural. Să se evalueze expresia de mai jos: 70

4. Se citesc trei numere întregi. Să se tipărească (dacă există) numărul care este

4. Se citesc trei numere întregi. Să se tipărească (dacă există) numărul care este egal cu suma celorlalte două. 5. Se citeşte n (număr întreg). Se cere să se calculeze suma: S=1+3+5+…+n. 6. Să se calculeze suma: S=0, 1+0, 2+0, 3+…+0, 9. 7. Să se calculeze media aritmetică a primelor n numere naturale. 71