Sunteți pe pagina 1din 9

ALGORITMI.

NOTIUNI GENERALE

    Algoritmul este conceptul fundamental al informaticii. Orice echipament de calcul poate fi
considerat o masina algoritmica.
Într-o definitie aproximativa algoritmul este un set de pasi care defineste modul în care poate fi dusa
la îndeplinire o anumita sarcina. Exemplu de algoritm: algoritmul de interpretare a unei bucti muzicale
(descris în partitura).

  DEFINITII SI CARACTERISTICI

Definitie:
Algoritmul este un set finit de pasi executabili, descrisi fara echivoc, care solutioneaza o clasa de
probleme.

Proprietatile fundamentale ale algoritmilor:

 Caracterul finit: orice algoritm bine proiectat se termina într-un numar finit de pasi;
 Claritatea : algoritmul trebuie descris clar, fara ambiguitati
 Generalitatea: orice algoritm trebuie sa rezolve toate problemele dintr-o clasa de probleme;
 Completitudinea-presupune tratarea cazurilor speciale (a exceptiilor) unei probleme.
 Realizabilitatea: orice algoritm trebuie sa poata fi codificat într-un limbaj de programare;
 Eficienta- se refera la timpul de executie (in care sunt folosite resursele calculatorului:
memorie, procesor) si la spatiul de memorie utilizat. Un algoritm este cu atat mai eficient cu
cat spatiul de memorie utilizat este mai mic si numarul de operatii mai putine.

Nerespectarea acestor caracteristici generale conduce la obtinerea de algoritmi neperformanti, posibil


infiniti sau nerealizabili.

Observatia1. Nu orice problema admite un algoritm de rezolvare.


Observatia2. Doi agoritmi sunt echivalenti cand pentru aceleasi date de intrare se obtin aceleasi date
de iesire.

Etapele rezolvarii unei probleme:

-stabilirea cerintelor problemei


-stabilirea datelor de intrare si a datelor de iesire
-stabilirea unui rationament general de rezolvare a problemei
-reprezentarea algoritmului problemei intr-o forma simpla si clara
-verificarea rationamentului pentru valori concrete
-implementarea algoritmului intr-un limbaj de programare

 Notiunile cu care opereaza algoritmii

Algoritmii opereaza cu urmatoarele notiuni:

Un algoritm prelucreaza datele de intrare in scopul obtinerii unor rezultate (a datelor de iesire)
utilizand si date intermediare.
Datele sunt valori concrete specifice fiecarei probleme care vor fi retinute de calculator in
anumite zone de memorie.
Dimensiunea zonelor de memorie depinde de tipul datelor respective.
Intuitiv, memoria poate fi reprezentata ca locatii succesive (zone de memorie) identificate prin
adrese (numere de ordine).
Programatorul are sarcina de a gandi algoritmul unei probleme si de a utiliza cat mai eficient
memoria.
În program datele apar fie sub forma unor constante (valori cunoscute anticipat, care nu se
modifica pe parcursul executiei), fie sub forma de variabile. Constantele si variabilele sunt
obiectele informationale de baza manipulate într-un program.
Putem defini o variabila ca fiind un nume dat unei zone de memorie.
Datele se caracterizeaza printr-un anumit tip care va determina :
-o anumita multime din care data poate lua valori
- un anumit mod de reprezentare în memoria calculatorului
- o multime de operatori care pot fi aplicati acestor valori.
- tipul unei date determina lungimea zonei de memorie ocupata de acea data. În
general, lungimea zonei de memorare este dependenta de calculatorul pe care s-a implementat
compilatorul.

Datele se pot clasifica dupa tipul lor in:


 Caractere
 Intregi
 Reale
 Logice
 Sir de caractere

-variabilele: retin date de un tip anume. O variabila isi poate schimba valoarea dar tipul nu.
O variabila pentru a fi prelucrata trebuie sa fie declarata (anuntata). Acest lucru consta de fapt in
precizarea tipului variabilei.
Exemplu:
caracter car
intreg a
real b,c
logic x
sir y

- expresii: o expresie este alcatuita din unul sau mai multi operanzi legati intre ei prin operatori.
Operanzii pot fi constante sau variabile.
Exemplu:
4.5+2*a
unde 4.4, 2, a sunt operanzi iar + si * sunt operatori

Expresiile pot interveni cel mai adesea in instructiuni de atribuire de tipul:


variabila expresie
Exemplu:
c 2*b-1
Operatori pentru tipuri numerice :

operator semnificatie
+ adunare
- scadere
* inmultire
/ catul impartirii
% restul impartirii

Operatori relationali :

operator semnificatie
= De egalitate
<> diferit
> Mai mare
>= Mai mare sau egal
< Mai mic
<= Mai mic sau egal

Operatori logici :

operator semnificatie
! Negatie logica
si Si logic
sau Sau logic

Datele de tip logic pot avea doua valori : A (adevarat) si F (fals)


Reguli de compunere a operatorilor logici :

! A F
F A

si A F
A A F
F F F

sau A F
A A A
F A F

Principiile programarii structurate

Programarea structurata a inceput la inceputul anilor 70. Este un concept cu o importanta


fundamentala in scrierea algoritmilor.
In general, algoritmii se eleboreaza prin utilizarea exclusiva a anumitor structuri (liniara,
alternativa, repetitiva).
Prin structura se intelege o anumita forma de imbinare a operatiilor cu care lucreaza algoritmii.

Structura liniara

Atribuirea

var<- expresie ; // Pasul 1. se evalueaza expresia ; Pasul 2 variabila var primeste valoarea expresie

Citirea datelor ( introducerea datelor de la tastatura)

Citeste var1, var2,..., varn; //se introduc datele pt variabilele var1, var2,.....in ordine

Afisarea datelor ( cu afisarea pe monitor)

Scrie expresie; // se evalueaza expresie si se afiseaza valoarea

Exemplu 1:

1.Se citesc 2 valori intregi. Să se afiseze ultima cifra a fiecarui numar.


Date de intrare: a, b intregi
Date de iesire : cif1, cif2 naturale

citeste a, b
cif1<- a%10
cif2<- b%10;
scrie cif1, cif2

Parcurgerea algoritmului cu un exemplu


a=456, b= 123
cif1=6
cif2=3
6,3

Vom defini structura liniara astfel:

Daca S1, S2, S3,…Sn sunt structuri ( de orice tip), atunci:


S1
S2
S3
….
Sn

Constituie o strucura liniara reprezentata in pseudocod.

Structura alternativa (decizionala)

In pseudocod :
I. DACĂ condiţie
ATUNCI instructiune1;
ALTFEL instructiune2;

Se testează îndeplinirea condiţiei. Dacă această condiţie este îndeplinită, se execută


instructiune1
Dacă nu, se execută instructiune2 La un moment dat, se execută sau instructiune1, sau
instructiune2

II. DACĂ condiţie


ATUNCI instructiune;
Se testează îndeplinirea condiţiei. Dacă această condiţie este îndeplinită, se execută
instructiune , in caz contrar se trece la executarea urmatoarei
instructiuni din algoritm

Exemplu:

1.Se citesc 2 valori reale. Să se afiseze valoarea maximului dintre cele 2 numere.

ALGORITM max_2_nr

max, a, b real;

CITESTE a, b; // a=20, b=12

DACA a >= b

ATUNCI max<-a; // max=20

ALTFEL max<-b;

SCRIE max; // 20

Structuri de control – Aplicatii propuse

Structura liniara

1. a si b retin valorile pentru doua numere intregi citite de la tastatura. Sa se interschimbe


valorile celor doua numere.

a=234 b= 456 <-> a=456 si b=234

aux= a; // aux=234
a=b; // a=456
b=aux // b=234

date de intrare: a, b reale


date de ajutatoare: aux real
date de iesire a, b reale
citeste a, b
aux= a
a=b
b=aux
scrie a, b

Tema – aplicatiile 2 si 3

2. Cunoscand cele 4 note obtinute de un elev la informatica pe parcursul unui semestru si nota de la
teza scrieti un algoritm care sa afiseze media lui.

3. Fie un numar format din trei cifre. Sa se afiseze cifrele sale incepand cu cifra unitatilor.

4. Se citeste un numar natural format din 4 cifre. Afisati numerele obtinute in urmatoarele moduri:
–schimband prima cifra cu ultima
-schimband intre ele cifrele din mijloc
n=1234
nr1=4231
nr2=1324
Date de intrare: n natural;
Date de iesire: nr1, nr2 naturale;
Date ajutatoare: u,z,s,m natural;
Citeste n; n=1234
u<-n%10; u=4
n<-n/10; n=123
z=n%10; z=3
n<-n/10; n=12
s=n%10; s=2
n<-n/10; n=1
m<-n%10; m=1
nr1<-u*1000+s*100+z*10+m; nr1=4*1000+2*100+3*10+1=4231
nr2<-m*1000+z*100+s*10+u; nr2=1324
scrie “nr1=”, nr1;
scrie “nr2=”, nr2;

5. Fie a un numar natural format din 5 cifre. Scrieti un algoritm care sa determine si sa afiseze
numarul format din prima, a treia si a cincea cifra din a.
a=34256 nr=326

date de intrare: a natural;


date de iesire: nr natural;
date de manevra: zm,s,u natural;
citeste a; a=34256
zm<-a/10000; zm=3
s<-a/100%10; s=342%10=2
u<-a%10; a=6
nr<-zm*100+s*10+u ; nr=326
scrie nr;

6. Un melc a cazut intr-o fantana adanca de x metri. Ziua, melcul urca a cm iar noaptea aluneca b cm.
In cate zile va iesi melcul din fantana?
date de intrare: x natural;
date de iesire: nrz natural;
citeste x,a,b; x=2 m, a=30cm, b=10cm;
x<-x*100; x=200 cm
nrz<- x/(a-b); nrz= 200/20=10 zile
scrie nrz;

7. In fiecare zi lucratoare din saptamana, Pinocchio spune o minciuna in urma careia ii creste nasul
cu x cm pe zi. Sambata si duminica, cand vine Gepetto acasa, pentru a nu-l supara, nu spune nici o
minciuna, ba chiar ii scade nasul cu y cm/zi. In fiecare saptamana, singur acasa, Pinocchio continua
sirul minciunilor. Care este lungimea nasului dupa z zile, stiind ca initial nasul are p cm? (Zilele incep
cu luni)

8. Ana a ramas singura acasa si vrea sa faca placinte. Pentru aceasta are nevoie de x grame faina, y
grame zahar, z ml lapte, p oua, m kg mere. Stiind ca pretul unui kg de faina este px, al unui kg de
zahar este py, litrul de lapte costa pz, kilogramul de mere costa pm si ouale sunt pp lei/buc, sa se afle
pretul placintei Anei.

Date intrare x,y,z p,m, px, py, pz,pm,pp reale


Date de iesire p real;
Citeste x,y,z,p,m, px, py, pz,pm,pp;
P<-x/1000*px+y/1000*py+z/1000*pz+p*pp+m*pm;
Scrie p;

9. Sa se calculeze suma 1+2+3+…+n

10. Sa se calculeze suma k+(k+1)+…+ (k+n)

11. Sa se determine ultima cifra a sumei x+y, unde x si y sunt date de la tastatura.

12. Fiind dat un numar de 4 cifre, sa se construiasca inversul acestuia si sa se faca media
aritmetica a cifrelor sale.

13. Sa se determine ultimele doua cifre ale produsululi a*b.

14. O persoana are initial la banca o suma de bani S. In primele 6 luni ale anului, dobanda a fost
p%, iar in urmatoarele 6 luni a fost q% din suma la care s-a adaugat si dobanda pe lunile anterioare, sa
se determine suma pe care o va avea persoana la sfarsitul anului.

15. Sa se calculeze aria si perimetrul unui:

 patrat, cunoscand lungimea laturii


 dreptunghi, cunoscand lungimile celor doua laturi
 triunghi, cunoscand cele 3 laturi
 trapez, cunoscand lungimile bazelor si inaltimea
 cerc, cunoscand raza

Structura alternativa

16. Sa se verifice daca un numar este par sau impar.

a intreg;

CITESTE a; // a=20

DACA a%2=0

ATUNCI scrie a,”este par”; // 20 este par

ALTFEL scrie a, “este impar”;

17. Scrieti un algoritm care sa determine cel mai mare dintre doua numere intregi citite.
18. Scrieti un algorim care sa determine cel mai mare dintre 3 numere intregi citite.

Date de intrere: a,b,c intregi;


Date ajutatoare:
Date de iesire: max intreg;
citeste a,b,c; // a=23, b=-6; c= 78
max<-a; // max=23
daca b>max atunci max<-b;
daca c>max atunci max<-c; // max=78
scrie max; // 78

19. Scrieti un program care citeste de la tastatura trei valori numerice a, b, c si apoi afiseaza pe
ecran cea mai mare diferenta dintre oricare doua valori date.

Ex. a=100, b=15, c=105. Se va afisa 90.

Daca a>b atunci dif1<=a-b;


altfel dif1=b-a;
Daca a>c atunci dif2<=a-c;
altfel dif2=c-a;
Daca c>b atunci dif3<=c-b;
altfel dif3=b-c;
determinati maximul dintre dif1, dif2 si dif3

20. Se da un numar din 3 cifre.Sa se genereze cel mai mare numar care are aceleasi cifre ca el.

21. Intr-un parc se joaca 3 copii care au greutatile a,b,c. Sa se stabileasca daca se pot aseza pe un
balansoar astfel incat acesta sa stea in echilibru.

22. Sa se rezolve ecuatia de gradul I cu o necunoscuta: ax+b=0 unde a si b sunt coeficienti reali
cititi. Discutie.

23. Sa se rezolve ecuatia de gradul al II-lea cu 2 necunoscute: ax2+bx+c=0 unde a,b,c sunt
coeficienti reali cititi. Discutie (solutie unica reala, solutii distincte reale, solutii complexe)

24. Sa se verifice daca 3 numere a,b,c sunt pitagorice patratul unuia poate fi scris ca suma
patratelor celorlalte doua)

25. Fie 2 numere cu 4 cifre. Sa se afiseze acela care are suma cifrelor mai mare.

26. Se citesc de la tastatura 3 numere reale. Sa se scrie un algoritm care verifica daca acestea
pot constitui lungimile laturilor unui triunghi. In caz afirmativ se va afisa tipul triunghiului
(oarecare, isoscel sau echilateral).
27. Se citesc de la tastatura coordonatele extremitatilor a doua segmente. Sa se afiseze
lungimea segmentului mai mare.

28. Sa se verifica daca o fractie a/b se poate simplifica prin k. Sa va afisa DA sau NU.

29. Sa se determine ultima cifra a lui 7x, x citit de la tastatura.

30. Sa se determine ultima cifra a lui 3x, x citit de la tastatura.


31. Sa se determine daca un numar este sau nu par.
32. Sa se determine ultima cifra a lui 2x, x citit de la tastatura.

33. Se citesc de la tastatura 2 numere naturale a si b si un operator op. Sa se calculeze expresia a


op b, unde op poate fi: ‘+’, ‘-‘, ‘/’, ‘%’

34. Sa se calculeze ultima cifra a lui a*b.

35. Sa se calculeze ultima cifra a lui 1+2+3+…+n

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