analiza problemei elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/lectie despre...

73
Algoritmi, date si expresii, pseudocod Pentru a rezolva o problemă cu ajutorul calculatorului trebuie să parcurgem următoarele etape: Analiza problemei Elaborarea modului de rezolvare (pasii de rezolvare) Codificarea modului de rezolvare intr-un limbaj de programare (C++) Testarea programului (compilare ) si corectarea erorilor

Upload: others

Post on 24-Jan-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Algoritmi, date si expresii, pseudocod

Pentru a rezolva o problemă cu ajutorul calculatorului trebuie să

parcurgem următoarele etape:

Analiza problemei

Elaborarea modului de rezolvare(pasii de rezolvare)

Codificarea modului de rezolvare intr-un limbaj de programare (C++)

Testarea programului (compilare ) si corectarea erorilor

Page 2: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

• Algoritmul reprezinta o succesiune de pasi care poate îndeplini o anumita sarcina in functie de datele de intrare pt a obtine datele de iesire

INTRARI

D.I.

PRELUCRARILE

DATELOR DE INTRARE

Date intermediare

IESIRI

D.E.

Page 3: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Să presupunem că trebuie să mergem la magazin să cumpărăm un produs. Ce trebuie să facem?

Page 4: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 5: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 6: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

#include <iostream>

using namespace std;

int main()

{

float a,b,c,s,m;

cout<<"a=";cin>>a;

cout<<"b=";cin>>b;

cout<<"c=";cin>>c;

s=a+b+c;

m=s/3;

cout<<"media = "<<m<<endl;

return 0;

}

Directiva de includere a fisierului (antet, de tip HEADER) biblioteca in fata programului principal int main

Implementarea algoritmului in C++

P1: Zona de declarare a variabilelor(se aloca spatiu de memorie in functie de tipul de data declarat)

tipul : DI si DE

P2: Se solicita sa se afiseze un mesaj cu functia

COUT <<“mesaj”; se tasteaza o valoare

Se memoreaza valoarea (DI) cu functia CIN>>var

P3: prelucrarea datelor

P4: Afisarea datelor de iesire (DE)

Page 7: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

1. DATELE:

2. VARIABILELE

3. EXPRESIILE

Obiectele cu care lucreaza algoritmii:

5,6 25 27,5

a b suma

4 octeti 4 octeti 4 octeti

Pasii de rezolvareDI DE

suma = a + b

4. Operatorii : + , *, /, %

( Operanzi )

Page 8: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

1. Determină perimetrul şi aria unui dreptunghi, unde lungimile laturilor sunt citite de la tastatură.

2. Pentru a un număr real, citit de la tastatură, care reprezintă lungimea laturii unui cub, calculează şi afişează volumul şi suprafaţa totală a cubului.

3. algoritmul pentru 2 valori a şi b numere întregi, sa afiseze rezultatele celor 5 operaţii (suma, produsul, diferenţa, câtul şi restul operaţie de împărţire pe mulţimea numerelor întregi)

Tema:

Page 9: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Algoritmul pentru 2 valori a şi b numere întregi, sa afiseze rezultatele celor 5 operaţii (suma, produsul, diferenţa, câtul şi restul operaţie de împărţire pe mulţimea numerelor întregi)

#include <iostream>using namespace std;int main(){double a,b,s,p,i,d;cout<<"a= "; cin>>a;

cout<<"b= "; cin>>b;

s=a+b;p=a*b;i=a/b;d=a-b;cout<<"suma= "<<s<<endl;cout<<"produs= "<<p<<endl;cout<<"impartit= "<<i<<endl;cout<<"diferenta= "<<d<<endl;return 0;

}

https://www.tutorialspoint.com/compile_cpp_online.php

Program scris in limbajul C++, compilat si rulat in CODEBLOKS:

Page 10: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

https://wiki.haskell.org/Rodin/Download

Page 11: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 12: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Tema 1: Se citesc doua valori , sa se afiseze valoare maxima

Page 13: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Clasificarea datelor (variabilelor):

Page 14: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

1. de tip întreg (numere întregi cu

sau fară semn - exemple: 45, -

105),

2. de tip real (numere cu virgulă

zecimală – exemple: 2.56, -

3.123),

3. tip caracter şi şiruri de

caractere(caractere cuprinse

între apostrofuri , exemple:

'A','b',' instructiuni' ,

Page 15: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

E=(a+b)/(a*b)+n 𝑓 𝑥 = 𝑎0 +

𝑛=1

𝑎𝑛 cos𝑛𝜋𝑥

𝐿+ 𝑏𝑛 sin

𝑛𝜋𝑥

𝐿

Page 16: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

3. Operatori logici: si logic( && ) , sau logic ( | | ), negare ( ! )

Page 17: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

• expr1 == expr2 verifica daca valoarea expresiei din

stanga este aceeasi cu valoarea din dreapta

• analog, expr1 != expr2 verifica daca valoarea

expresiei din stanga este diferita de valoarea din

dreapta

• in toate cazurile raspunsul la intrebari (ex: A este mai mic

decat B ) poate fi doar DA sau NU,

adica ADEVARAT sau FALS; aceste raspunsuri se

numesc valori logice (valori de adevar)

•Operatori relationali: <, <=, ==, !=, >=, >

Exemple:

•Cum scriem A apartine intervalului (- infinit, 7) Raspuns: A<7

•Cum scriem A apartine intervalului [3, infinit) Raspuns: A>=3

Page 18: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

• evident raspunsurile la operatorii logici sunt tot valori logice (Adevarat sau Fals)

• Operatorul logic SI ( && )• Exemplul Alinei: Imi plac baietii atletici SI glumeti.

Aceasta propozitie poate fi scrisa ca A && B (A =Imi plac baietii atletici si B = Imi plac baietii glumeti)

• posibilitatile care apar sunt:

• neatletic, posac=> nu imi place ; raspuns NU (FALS)

• neatletic, glumet => nu imi place ; raspuns NU (FALS)

• atletic, posac => nu imi place; raspuns NU (FALS)

• atletic, glumet => imi place; raspuns DA (ADEVARAT)

• observam ca raspunsul este DA (ADEVARAT) numai in cazul cand ambele

proprietati sa indeplinesc ( si atletic si glumet); daca macar o proprietate nu se indeplineste raspunsul este NU (FALS)

•Operatori logici: si logic( && ) , sau logic ( | | ), negare ( ! )

*(si)

0 1

0 0 0

1 0 1

Page 19: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

• Pentru ca Alina nu a gasit ce cauta, a schimbat regula. :

Imi plac baietii atletici SAU glumeti. Aceasta propozitie poate fi scrisa ca A || B

(A =Imi plac baietii atletici sau B = Imi plac baietii glumeti)

• posibilitatile care apar sunt:

• neatletic, posac=> nu imi place ; raspuns NU (FALS)

• neatletic, glumet => imi place; raspuns DA (ADEVARAT)

• atletic, posac => imi place; raspuns DA (ADEVARAT)

• atletic, glumet => imi place; raspuns DA (ADEVARAT)

• observam ca raspunsul este DA (ADEVARAT) daca macar una din proprietati este

adevarata; daca nici una dintre proprietati nu se indeplineste raspunsul este NU

(FALS)

• Operatorul logic SAU ( || )Exemplu:

+ (sau)

0 1

0 0 1

1 1 1

Page 20: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

•Cum scriem A apartine intervalului [3, 7)

• Raspuns: (A>=3) && (A<7)

•Cum scriem ca A nu apartine intervalului [3, 7)

• Raspuns 1: ! ( (A>=3) && (A<7) )

• Raspuns 2: valoarea lui A trebuie sa fie inainte de 3 SAU dupa 7=>

A<3 || A>=7

Din acest ultim exemplu observam ca raspunsurile sunt echivalente (pentru acelasi

A, indiferent de valoarea lui, obtinem acelasi raspuns).

! ( (A>=3) && (A<7) ) echivalent cu A<3 || A>=7

Echivalentele de acest tip au fost studiate de matematicianul De Morgan, care a

spus ca:

• ! (A && B) == !A || !B

• ! (A || B) == !A && !B

operatorul logic de negare ( ! )

!= (≠ ,diferit , not egal) , (ne-egalitate)

Page 21: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

a. (x<8 )&& (x>=5)

b. (x<=8) || (x>5)

c. (x>8) || (x<=5)

d. (x<=8) && (x>5)

Tema din …subiecte BAC:Variabila x este de tip real. Care dintre următoarele expresii C++ are valoarea 1 dacă şi numai dacă numărul real memorat în variabila x aparţine intervalului (5,8]?

R: 1 si 1 1

Page 22: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

•o constanta / variabila

•o combinatie de tipul operator expresie (cazul operatorilor unari: - - a)

•o combinatie de tipul expresie operator expresie (cazul operatorilor

binari: a+b )

Operatorii folositi in C++ sunt:

•operatori aritmetici: +,-,*, /, %

• A/B reprezinta catul impartirii lui A la B

• A%B reprezinta restul impartirii lui A la B

• A%10 reprezinta ultima cifra a lui A

• A%2 va avea valoarea zero daca A este par si 1 daca A

este impar

O expresie poate fi:

Page 23: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

1. *, /, %

2. +, –

3. <, <=, >=, >

4. ==, !=

5. &&

6. ||

prioritatea operatorilor (ordinea operatiilor) intr-o expresie:

Page 24: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Variabilele pot primi valori prin citire sau atribuire.

Sintaxa: variabila=expresie;

Exemple:

•A=0;

•B=5;

•A=B+6;

•A=B+A; (in A se va memora suma dintre A si B)

•un caz deosebit este incrementarea (cresterea cu 1 a valorii unei variabile)

Atribuirea

0 5

A B

6

a=a+1; aceasta operatie se mai scrie a++; (++ este operator unar si se

numeste incrementare)

a=a-1 sau a- - operatia analoga, de scadere cu 1 a valorii unei variabile, se numeste

decrementare:

•citind diverse programe realizate in C/C++ puteti intalni si exprimari de genul:

• a=a+ - -b; cu semnificatia b- - (b=b-1); a=a+b; (analog ++b)

• a+=b; cu semnificatia a=a+b;

11

Page 25: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

1) Operatori aritmetici unari

Operator unar (se opereaza asupra unui operand) + si -

++a a=a+1(de incrementare prefixat),

Sintaxa

incrementare prefixata= este marit cu 1 inainte de a

intra in calcul.

Ex: b=2*(++a) a=a+1; b=2*a

a++ (de incrementare

postfixat)

incrementare postfixata= este marit cu 1 dupa ce a

iesit din calcul.

Ex: b=2*a++ b=2*a; a=a+1;

- - a a=a-1

(de decrementare prefixat),

a decrementa= a scade 1 la continutul unei variabile.

a- -(de decrementare postfixat),

decrementare postfixata= este scazut cu 1 dupa ce a iesit din calcul.

Page 26: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

BINARI:

+ , - , * ( intre doi operanzi)

/ ( div - returneaza catul impartirii),

% ( modulo - returneaza restul impartirii).

Daca n=25783

Cifra unitatilor este 3 u=n%10

Cifra zecilor 8 z=n/10%10

Cifra sutelor 7 s=n/100%10

Cifra miilor 5 m=n/1000%10

Ex.

7/3=2 rest 1

Rezultatuloperatorului DIV

Rezultatuloperatorului MOD

Page 27: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

25%3 = 8 𝑟𝑒𝑠𝑡 1

(2458 DIV 100 ) MOD 10 = 4

2458 MOD 10 = 245 rest 8

Teorema impartirii Dempartit : Împartitor = cât + restex: 25:3=8+1

24 MOD 10

Page 28: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Pentru valoarea intreaga citita de la tastatura Y=12345

x = y/100 + y/10%10 + y%10;

x = y + y/10 + y/100;

x = y%10 + y%10/10 + y/100;

x = y%10 + y%100 + y%1000;

Calculati

Page 29: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

#include <iostream>using namespace std;int main(){int a,b;double d,c;cout <<"a=";cin>>a;cout <<"b=";cin>>b;cout <<"c=";cin>>c;cout <<"d=";cin>>d;cout<<"b="<<(d<=c);return 0;}

#include <iostream>using namespace std;int main(){int x;cout <<"x=";cin>>x;if(x/100==0)cout<<"A" ;else cout<<"F" ;return 0;}

#include <iostream>using namespace std;int main(){

int x;cout <<"x=";cin>>x;

if(x%10+x/10%10==0)cout<<"A" ;else cout<<"F" ;

return 0;}

#include <iostream>using namespace std;int main(){

float x;

cout <<9/2*2-5;return 0;

}

Exemple:

Page 30: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Tema:

Page 31: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Se citesc doua valori a si b, care este valoarea lui a MODULO b:

Page 32: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

#include <iostream>using namespace std;int main(){int x,y;cout<<"x=";cin>>x;cout<<"y=";cin>>y;if((x<=y) || (y<=x))cout<<1;else cout<<0;

return 0;}

Tema (din subiectele de bac):

Page 33: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 34: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 35: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Varianta b: #include <iostream>using namespace std;int main(){

int x,y,z;

cout <<"x=";cin>>x;cout <<"y=";cin>>y;cout <<"z=";cin>>z;

cout<<x+y+z;return 0;

}

Page 36: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

• #include <iostream>• #include<cmath>• using namespace std;

• int main()• {int x,y,e;• cout << "x=";cin>>x;• cout<<"e="<<abs(x);• return 0;• }

Se citeste o variabila, sa se afiseze valoarea absoluta (modul de x):

Page 37: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Sa se calculeze perimetrul si aria unui dreptunghi

Page 38: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

#include <iostream>using namespace std;int main(){double a,b,c,p;cout<<"a= "; cin>>a;cout<<"b= "; cin>>b;cout<<"c= "; cin>>c;p=a+b+c;cout<<"perimetrul tringhiunghiului= "<<p<<endl;return 0;

}

Sa se calculeze perimetrul triunghiului

Page 39: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Aria si volumul unui cub , daca se stie latura

• #include <iostream>• #include<cmath>• using namespace std;• int main()• {int x,a,v;• cout << "latura=";cin>>x;• a=6*(x*x);• v=pow(x,3);• cout<<"aria="<<a<<endl;• cout<<"volumul="<<v<<endl;• return 0;• }

Page 40: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Se citeste un numar x. Sa se transforme in ore, min si secunde

• #include <iostream>• #include<cmath>• using namespace std;• int main()• {int x,h,m,s;• cout << "ce numar";cin>>x;• h=x/3600;• m=x%3600/60;• cout<<"h="<<3600/60<<endl;• cout<<"m="<<x%3600%60<<endl;• cout<<"s="<<<<endl;• return 0;• }

Page 41: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Se citesc coordonatele punctelor A si B, sa se calculeze distanta dintre ele si milocul unde se afla

Page 42: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

#include <iostream> //directiva de includere a fisierului bibliotecausing namespace std;int main(){int a,b,s;

cout << "a= "; cin>>a;cout << "b= "; cin>>b;cout<<"s-a memorat valoarea pt a "<<a<<endl;cout<<"s-a memorat valoarea pt b "<<b<<endl;

s=a+b;cout<<" suma dintre "<<a<<" si "<<b<<" = "<<s;

cin.ignore();cin.get();return 0;

}

Se citesc 2 valori sa se afiseze suma lor

#include <iostream>using namespace std;int main(){int a,b,s;

cout << "a= "; cin>>a;cout << "b= "; cin>>b;s=a+b;cout<<" suma dintre "<<a<<" si "<<b<<" = "<<s;

cin.ignore();cin.get();return 0;

}

Page 43: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Se citesc coordonatele 3 valori reprezentand laturile unui triunghi.Care este conditia pentru a afisa ce triunghi este: isoscel, oarecare, echilateral, dreptunghic?

Page 44: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Câte resturi se pot obține împărțind un număr la 7? Care este cel mai mare rest care se poate obține împărțind A la B?

Care este câtul împărțirii lui A la B dacă A este mai mic decât B? Dați trei exemple.

Care este restul împărțirii lui A la B dacă A este mai mic decât B? Dați trei exemple.

Ce valoare poate avea restul împărțirii unui număr x la 2? Ce puteți spune despre x, dacă x împărțit la 2 dă restul 1?Dar dacă x împărțit la 2 dă restul 0?

Page 45: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

19. Cum puteți scrie o egalitate care să fie adevărată dacă X se divide la Y?20. Câte numere sunt de la 25 la 66?21. Câte numere impare sunt de la 10 la 20?22. Câte numere pare sunt de la 10 la 20?23. Câte numere impare sunt de la 11 la 20?24. Cu câte cifre de zero se termină produsul 1*2*3*…*100 ?25. Care sunt numerele prime mai mici decât 29? Câte numere prime ati gasit?26. Care sunt divizorii lui 12? Care sunt divizorii proprii ai lui 12?

27. Dați exemplu de 3 numere care au un singur divizor propriu.28. Descompuneți în factori primi numerele: 24, 75, 105, 300, 210029. Dați exemplu de 2 numere naturale care au în descompunerea lor în factori primi, toți factorii la aceeași putere.30. Calculați suma 1 + 2 + 3 + …+100

Page 46: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

1.Calculati valorile lui a si b. Comentarii

#include<iostream.h>

void main()

{

int a,b;

a=5;

b= ++a +2;

a=b++ -3

++b;

a- -;

a= --b;

cout<<"a="<<a<<" si "<<"b="<<

b<<endl;

}

// declaram pe a si b

//initializam pe a = 5

// a=5+1=6 b= 6 +2=8 si

// a= ( 8 ) -3 = 5 si b =b+1=9

// b= 1+9=10

// a= a-1=( 5 -1)=4

// b=b-1=9 a= b=9

// afiseaza a=9 si b=9

a=9

si

b=9

A

5

6

5

4

9

B

8

9

10

9

Monitor Memorie

Page 47: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

2.Calculati valorile lui a si b. //COMENTARII

#include<iostream.h>

void main()

{

int a,b;

a=7% 2+15 /2 / 2+ 7 %2;

cout<<"a="<<a<<endl;

b=2*a % 2+5+ 7 % 2;

cout<<"b="<<b<<endl;

a=a+b+3;

cout<<"a="<<a<<" si "<<"b="<<b<<endl;

b=a % 2+b+10 % 2+a+5*a;

cout<<"a="<<a<<" si "<<"b="<<b<<endl;

b=2*a+b;

cout<<"a="<<a<<" si "<<"b="<<b<<endl;

}

//declara variabilele a,b;

// a=1+ 7/2+1=1+3+1=5; deci a=5.

//afiseaza a=5

// b=2*5/2+5+1=0+5+1=6; deci b=6.

//afiseaza b=6

// a=5+6+3

//afiseaza a=14 si b=6

// b= 14%2+6+0+14+5*14=0+6+14+70

//afiseaza a=14 si b=90

//b=2*14+90

//afiseaza a=14 si b=118

Page 48: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

In general, un program este un sir de instructiuni. In C++ programul este o functie numita main.

Efectul instructiunillor din C++ este stabilit intr-un fisier numit stdio.h (h vine de la header). Acest fisier

este incarcat implicit pentru a asigura buna functionare a programului. Daca dorim sa folosim

instructiuni mai complexe (gen cin, cout) trebuie sa specificam si headerul care explica functionarea

acestor instructiuni (iostream.h).

De asemenea, trebuie sa stabilim ce variabile folosim, pentru a le putea aloca spatiu si a le da valori.

Spre deosebire de alte limbaje, in C++ declararea variabilelor folosite poate fi facuta si pe parcursul

executiei programului.

Structura unui program C/C++ este urmatoarea

Page 49: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

1.Declararea datelor DI si DE

2. citirea datelor initiale si

initializarea variabilelor necesare

2. prelucrarea datelor

(programul propriuzis)

3. afisarea rezultatelor

Orice program are trei parti:

Page 50: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Cuvantul pseudocod provine din pseudo, care inseamna fals, si cod care se refera la textul scris intr-un limbaj de programare.

Afiseaza, citeste(memoreaza) atribuie, daca, atunci, altfel, cat timp, executa

Page 51: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 52: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Varianta 1 / I / 2009

Page 53: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 54: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Citirea in C++folosirea instructiunii necesita #include <iostream.h>

Instructiunea CIN• Sintaxa: cin>>variabila1>>variabila2…;

• Efect: se preiau de la tastatura (Console INput) valori pentru fiecare variabila din sir;

Exemplu:

• int A,B; cin>>A>>B;

• Pe rand, se introduc valori de la tastatura pentru variabilele intregi A si B.

Page 55: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Afisarea in C++ : COUT<<“ mesaj ”<<variabila;

• Sintaxa: cout<<expresie1<<expresie2;

• Efect: se afiseaza, pe rand, valorile expresiilor;

• Cerinte: necesita, de asemenea, folosirea #include<iostream.h>

Exemple:

• cout<<“Rezultatul este”<<endl<< A<<“+”<<B<<“=“<<A+B;

• s-au afisat :– constanta sir de caractere (text) “Rezultatul este”

– constantele caracter ‘+’ si ‘=’

– valorile variabilelor A si B

– valoarea expresiei A+B

Page 56: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 57: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Principiile programarii structurate

Page 58: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Structura liniara

În pseudocodoperaţie1operaţie2..........operaţien

Page 59: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 60: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 61: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

if (a%2==0)

cout>>”valoarea este para”;

else cout<<” valoarea este impara”;

•se verifica daca restul impartirii la 2 a variabilei

A este zero

•daca DA se executa cout>>”valoarea este

para”;

•daca NU se executa cout>>”valoarea este

impara”;

Page 62: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

#include <iostream>using namespace std;int main(){ int a,b,c,d,e,s;cout<<"a= "; cin>>a;cout<<"b= "; cin>>b;cout<<"c= "; cin>>c;cout<<"d= "; cin>>d;cout<<"e= "; cin>>e;if(a>b && b>c && c>d && d>e){cout<<"Cele mai mari 3 numere dintre "<<a<<" , "<<b<<" , "<<c<<" , "<<d<<" si "<<e<<" sunt "<<a<<" , "<<b<<" si "<<c<<endl;s=a+b+c;}if(b>c && c>a && a>d && d>e){cout<<"Cele mai mari 3 numere dintre "<<a<<" , "<<b<<" , "<<c<<" , "<<d<<" si "<<e<<" sunt "<<b<<" , "<<c<<" si "<<a<<endl;s=b+c+a;}if(c>a && a>b && b>d && d>e){cout<<"Cele mai mari 3 numere dintre "<<a<<" , "<<b<<" , "<<c<<" , "<<d<<" si "<<e<<" sunt "<<c<<" , "<<a<<" si "<<b<<endl;s=c+a+b;}if(d>a && a>b && b>c && c>e){cout<<"Cele mai mari 3 numere dintre "<<a<<" , "<<b<<" , "<<c<<" , "<<d<<" si "<<e<<" sunt "<<d<<" , "<<a<<" si "<<b<<endl;s=d+a+b;}if(e>a && a>b && b>c && c>d)cout<<"Cele mai mari 3 numere dintre "<<a<<" , "<<b<<" , "<<c<<" , "<<d<<" si "<<e<<" sunt "<<e<<" , "<<a<<" si "<<b<<endl;return 0;

}

Page 63: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Tema1. Fie N un numar natural. Sa se afiseze textul PAR sau IMPAR, in

functie de valoarea lui N.

2. Fie N un numar natural. Sa se afiseze textul POZITIV, NEGATIV sau ZERO dupa caz.

3. Fie A si B capetele unui interval. Sa se stabileasca daca o valoare X apartine intervalului [A,B].

4. Fie A si B doua valori intregi. Sa se afiseze A si B in ordine crescatoare.

5. Fie A si B doua valori intregi. Sa se calculeze X, solutia ecuatiei A*X+B=0.

Page 64: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 65: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 66: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 67: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

ExerciţiuSăsecalculezeşisăseafişezepeecranprodusulprimelornnumerenaturalenenule.Valoarealuin(numărnaturalnenul)seciteştedelatastatură

Se cer:a) algoritmul; b) pseudocodul;

Page 68: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 69: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

Analiza eficienţei unui algoritmPentru rezolvarea unei problem se pot folosi mai mulţi algoritmi. Înacest caz se va allege algoritmul cel mai eficient.Algoritmul cel mai efficient este cel care foloseşte cel mai puţinresursele calculatorului şi anume:•memoria internă;

•procesorul.

A. Memoria internă

Pentru a face economie de memorie internă, trebuie avute în

vedere următoarele:

-alegerea corectă a tipului de data pentru fiecare variabilă de

memorie folosită;

-rezolvarea problemei folosind cât mai puţine variabile de memorie.Analiza datei trebuie să se facă în două moduri la alegerea tipului

de dată:

-logic;-fizic.

Page 70: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

a. Logic (la nivel conceptual)

-analiza se face pornind de la enunţul problemei;

-presupune identificarea domeniului de definiţie extern al datelor.

Exemplu de domeniu de definiţie extern al datelor: pentru a

memora un număr de la extragerea loto “6 din 49” se va folosi o

variabilă care memorează un număr întreg pozitiv din

intervalul[1,49].

Page 71: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

b.Fizic (la nivelul reprezentării ei în memoria internă)

1. Analiza se face pornind de la tipurile de date implementate înlimbajul de programare;

2. Fiecare tip de data are un domeniu de definiţie intern al datelor;

3. Se allege tipul de data care consumă cea mai puţină

memorie,astfel încât domeniul de definiţie extern al datei să fie

inclus în domeniul de definiţie intern al datei.

B.ProcesorulTimpludeexecuţiealunuialgoritmdepindedecâtevalorialedatelordeintrarevorfiprelucrate.Sedefineştedimensiuneadatelordeintrarecafiindn

umăruldevaloripentrudateledeintrarealeunuialgor

itm.Înfuncţiedecomplexitateaalgoritmului,evaluareatimpuluideexecuţiesepoatefaceprin:-

număruldeoperaţiielementarealealgoritmului,sau-timpulmediualprogramului.

a.Număruldeoperaţiielementarealealgoritm

ului

-

ooperaţieelementarăesteooperaţiesauosuc

cesiunedeoperaţiicarenudepinddecaracteri

sticileproblemei(exp:ooperaţiedecitire/scrier

e,ooperaţiearitmetică,ooperaţiedecomparaţ

ie,ooperaţiedeatribuire,ungrupdeastfeldeop

eraţii);

-

înschimb,noperaţiideatribuirenureprezint

ăooperaţieelementară,deoarecedepinde

deocaracteristicăaproblemei,şianumede

valoarealuin;

Page 72: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,
Page 73: Analiza problemei Elaborarea modului de rezolvare (pasii de …informatik.ddbuftea.ro/LECTIE DESPRE ALGORITMI1.pdf · 2019-11-14 · 2. Pentru a un număr real, citit de la tastatură,

b.Timpul mediu al programului-

timpulmediudeexecuţiedepindedetimpulminimdeexecuţi

ecarecorespundecazuluicelmaifavorabil(cândseexecută

celemaipuţineoperaţii)şitimpulmaximdeexecuţiecarecore

spundecazuluicelmaidefavorabil(cândseexecutăcelemai

multeoperaţii);