Documente Academic
Documente Profesional
Documente Cultură
ALGORITMI
1 / 13
2 / 13
ALGORITMI
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
Expresiile : 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
Operatori pentru tipuri numerice :
operator
semnificatie
+
adunare
scadere
*
inmultire
/
catul impartirii
%
restul impartirii
Operatori relationali :
operator
semnificatie
=
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 :
expresie
! expresie
A
F
F
A
ALGORITMI
Expresie1
A
A
F
F
Expresie2
A
F
A
F
Expresie1 SI Expresie2
A
F
F
F
Expresie1
A
A
F
F
Expresie2
A
F
A
F
3 / 13
4 / 13
ALGORITMI
Efect: Prin operaia de citire (operaia de intrare) se preiau succesiv valori de la tastatur i se
asociaz, n ordine, variabilelor specificate.
C.Operaia de scriere
scrie expresie1, expresie2,, expresien;
Fie x un numr natural format din 5 cifre(x4x3x2x1x0). S se afieze un triunghi format din
cifrele numrului x astfel:
- prima linie (n vf. triunghiului) se va afla cifra din mijloc x2.
x2
ALGORITMI
Pe linia a doua se vor afla cifrele x3x2x1
a treia linie se vor afla toate cifrele lui x
5 / 13
x3x2x1
x4x3x2x1x0
Probleme propuse
1. Ce va afia urmtorul algoritm pentru valorile citite 7 i 23 :
Date intrare/iesire: a natural,b natural;
nceput
citete a,b;
aa+b;
ba-b;
aa-b;
scrie a= ,a, b=,b;
sfrit
2. Ce va afia urmtorul algoritm dac se citete valoarea:
Date de intrare: a natural;
Date intermediare: b natural;
Date de ieire: c natural;
nceput
citete a;
ba % 100;
a[a/100];
cb*100+a;
scrie c;
sfrit
3. Ce valoare va avea variabila a la sfritul urmtoarei secvene de instruciuni?
a, b ntregi;
a3; b7;
ba+b/2: aa-b/2*a;
4. Fie a, b,c i d patru variabile reale. Care din urmtoarele instruciuni atribuie variabilei d
media aritmetic a valorilor variabilelor a, b i c?
a) d(a+b+c)/3;
c) da+b+c/3;
b) da/3+b/3+c/3;
d) d(a+b+c)/3-1;
3
5. Se consider polinomul P(x)=ax +bx2+cx+d. Se citesc valorile a,b,c,d i x0. S se calculeze
valoarea P(x0).
6 / 13
ALGORITMI
6. Se citete un numr natural cu exact trei cifre. S se afieze suma cifrelor acestui numr.
7. Fie x1,x2,x3,x4, x5 cinci valori reale. Scriei un algoritm care s foloseasc o singur variabil
suplimentar pentru a permuta circular valorile celor cinci variabile (ex: 1,2,3,4,5 s devin
2,3,4,5,1).
8. Se citete un numr ntreg ce reprezint un numr de ore. S se afieze acest numr n
minute, apoi n secunde.
9. S se determine ctul i restul mpririi lui a la b fr a realiza efectiv mprirea.
10. Fie a, b i c trei numere reale, care reprezint lungimile laturilor unui triunghi. S se scrie un
algoritm care s calculeze i s afieze perimetrul i aria triunghiului.
11. O broasc estoas parcurge o distan de D kilometri n H ore. S se scrie un algoritm care
s calculeze i s se afieze viteza cu care se deplaseaz broasca estoas (exprimat n
metri/secund).
12. Doi colegi (Victor i Florin) pleac simultan din oraele n care locuiesc, unul ctre cellalt.
tiind c distana dintre cele 2 orae este D, c Victor merge cu viteza v1, iar Florin merge
cu viteza v2 (D,v1,v2 numere reale), scriei algoritmul care calculeaz dup ct timp se
ntlnesc cei doi colegi i la ce distan de oraul locuiete Victor.
13. Fie A i B dou puncte n plan, specificate prin coordonatele lor carteziene. S se scrie un
algoritm care s calculeze i s afieze lungimea segmentului AB.
14. A fost odat un balaur cu 6 capete. ntr-o zi Ft-Frumos s-a suprat i i-a tiat un cap. Peste
noapte i-au crescut alte 6 capete n loc. Pe acelai gt! A doua zi, Ft-Frumos i-a tiat iar un
cap, dar peste noapte balaurul i-au crescut n loc alte 6 capete...i tot aa timp de n zile. n
cea de-a (n+1)-a zi, Ft-Frumos s-a plictisit i a plecat acas scriei un algoritm care citete
de la tastatur n, numrul de zile i care afieaz pe ecran cte capete avea balaurul dup n
zile. De exemplu: pentru n=3, algoritmul va afia: Dupa 3 zile balaurul are 15 capete.
(Olimpiada 2002 cl a V-a)
15. S se calculeze ma a dou numere a,b reale.
16. Se citesc de la tastatur dou numere naturale nenule. S se calculeze media aritmetic,
media geometric i media armonic a celor 2 numere.
ALGORITMI
7 / 13
2. STRUCTURA ALTERNATIV
dac condiie atunci
instructiune_1
altfel
instruciunea_2
sf.dac
Efect:
Se evalueaz expresia.
Dac valoarea expresiei este Adevrat, atunci se execut instruciune_1.
Dac valoarea expresiei este Fals, se execut instruciune_2.
Observaii
1. Att ramura atunci, ct i pe ramura altfel este permis executarea unei singure instruciuni.
n cazul n care este necesar efectuarea mai multor operaii, acestea se grupeaz ntr-o
singur instruciune compus.
2. Dac pe ramura altfel ne este necesar efectuarea nici unei operaii, aceasta poate lipsi
(structura alternativ cu o ramur vid).
Selectarea instruciunii ce urmeaz s fie executat n funcie de valoarea unei expresii reprezint o
structur alternativ.
Aplicaii
1. Modulul unui numr
Se intoduce de la tastatur un numr ntreg x. Scriei un algoritm care calculeaz i afieaz
modulul numrului x.
Date de intrare: x ntreg;
Date de ieire: rezultatul testului
citete x;
dac x<0 atunci m-x;
altfel mx;
scrie modulul este: ,m;.
sf.dac
2. Paritatea
S se introduc de la tastatur un numr ntreg x. Scriei un algoritm care testeaz dac x este
un numr par.
Date de intrare: x ntreg;
Date de ieire: m ntreg;
citete x;
dac (x%2=0) atunci scrie x, este par;
altfel scrie x, este impar;
sf.dac
3. S se rezolve ecuaia de gradul I pentru coeficienii a,b reali dai .
citeste a,b
daca a0 atunci {
x (-b/a)
scrie x
}
altfel daca b0
ALGORITMI
atunci scrie nu exista solutii
altfel scrie o infinitate de solutii
sf.daca
8 / 13
sf.daca
4. S se calculeze valoarea funciei
f(x)= x2 ,
daca x<0
2x+1 , daca x>=0
pentru un x real dat.
citeste x
daca x<0 atunci f x*x
altfel f 2*x+1
sf.daca scrie f
Structura alternativ generalizat
La acest tip de structur se face selectarea ntre mai multe aciuni, n funcie de o variabil de
memorie numit selector, care poate lua mai multe valori, dintr-o mulime ordonat de
leemente de acelai tip cu selectorul.
Sintaxa:
n cazul c selector
caz1 v1: instruciune1
caz2 v2: instruciune2
// (optional)
Probleme propuse
1. Fie ecuaia de gradul al II-lea ax2+bx+c=0 cu a0. Scriei un algoritm care s rezolve ecuaia n
mulimea numerelor reale.
2. Fie a i b dou nr ntregi. Scriei un algoritm care s verifice dac a i b sunt numere
consecutive.
3. Stabilii relaia de ordine dintre dou numere reale oarecare , citite de la tastatur .
4. Se citesc trei numere a,b,c. S se tipreasc maximul dintre ele .
5. Se citete media unui candidat la examenul de capacitate. Dac media este 9.18, candidatul este
admis n liceul solicitat, altfel este transferat la alt liceu. Dac media este cel puin 9.50, este
admis la profilul informatic-intensiv, altfel la matematic-informatic. Citind media
candidatului, stabilii cum este repartizat.
6. Se citesc de la tastatur dou numere i un caracter. Dac caracterul este +, calculai suma
celor dou numere, dac este -, diferena lor, dac este *, produsul, iar dac este /
calculai, dac este posibil, ctul.
7. Citindu-se o liter mic, s se precizeze dac aceasta este vocal sau consoan.
8. Pe baza datei curente exprimat prin trei valori naturale nenule (zi,lun,an), s se calculeze data
zilei urmtoare.
9 / 13
ALGORITMI
9. Se citesc trei numere naturale nenule a,b,c. S se verifice dac cele trei valori pot fi laturile
unui triunghi i, n caz afirmativ, s se calculeze aria lui cu formula lui Heron. De asemenea s
se specifice i dac este un triunghi particular (isoscel sau echilateral).
10. Se citesc patru numere ntregi oarecare. S se verifice dac ele alctuiesc o mulime n sens
matematic, adic valorile sunt distincte.
11. Se citete de la tastatur un numr natural cu exact patru cifre. S se verifice dac numrul este
palindrom, adic citindu-l de la sfrit spre nceput se obine acelai numr.
12. Se dau dou numere de tip ntreg. S se verifice dac ele sunt numere consecutive.
13. n planul cartezian xOy, se da un dreptunghi prin colurile stanga-jos (xs,ys) i dreapta
sus(xd,yd ). S se detemine dac un punct oarecare (x,y) se afl sau nu n interiorul
dreptunghiului.
14. S se verifice dac o fracie a/b, pentru a i b numere naturale nenule cu maxim 5 cifre, se
simplific prin k. n caz afirmativ se va afia i fracia simplificat. Numerele a,b,k se citesc de
la tastatur n aceast ordine.
15. Se citesc patru numere naturale. S se afieze maximul dintre s14 i s23, unde s14 este suma
dintre primul i ultimul numr, iar s23 dintre al doilea i al treilea numr.
16. Se citesc dou numere ntregi a, b cu a>b. S se testeze dac cele dou numere se divid. n caz
afirmativ s se afieze un mesaj corespunztor, n caz contrar afai ctul i restul mpririi
lui a la b.
17. Fiind date numere ntregi a, b, c, d s se afieze minimul dintre ele.
18. Cunoscnd numrul natural n s se calculeze suma 1+2+3+...+n.
19. Cunoscnd k i n (k<=n) numere naturale, s se calculeze suma k+(k+1)+...+n.
20. S se determine ultima cifr a sumei x+y, unde x i y sunt numere naturale date de la tastatur.
21. Fie a,b i c salariile a trei persoane. S se precizeze cte dintre acestea sunt cel puin egale cu o
valoare dat x reprezentnd salariul mediu pe economie.
22. S se determine ultima cifr a numrului 2x, pentru x numr natural dat.
23. Folosind o singur comparaie, s se verifice dac trei numere naturale cu cel mult trei cifre
fiecare sunt pitagoreice. Se va afia un mesaj corespunztor.
24. Ionel are H1 cm, Gigel are H2 cm, iar Danu are H3 cm. Scriei un algoritm care s afieze
numele celor 3 copii n ordinea cresctoare a nlimii.
25. Un iepura zglobiu iei din pdure i ncepu s alerge pe cmpie cu o vitez constant v 1 m/s.
Dup un timp t0, apare la marginea pdurii un leu. Leul zrii iepurele i ncepu s alerge dup
el cu o vitez constant v2 m/s. Scriei un algoritm care afieaz dup cte secunde prinde leul
iepurele sau valoarea +1 dac leul nu prinde iepurele.
26. Orice sum de bani S (S>7) poate fi pltit numai cu monede de 3 i 5 lei. Dat fiind S>7, scriei
un program care s determine o modalitate de plat a sumei S numai cu monede de 3 i 5 lei.
27. Se citesc trei numere a, b i c. S se verifice dac ele pot fi termenii unei progresii aritmetice.
28. Se citesc 2 numere naturale a i b. S se afieze cte numere pare sunt n intervalul [a,b].
29. Se citesc dou intervale de timp exprimate n ore minute i secunde (h1,m1,s1) i (h2,m2,s2).
S se calculeze suma celor 2 intervale de timp.
30. Se citete un numr ntreg n care reprezint un an calendaristic. S se verifice dac anul este
bisect sau nu (condiia ca un an, s fie bisect este ca, dac anul este divizibil cu 100, s fie
divizibil cu 4; altfel s fie divizibil cu 400).
31. Se d o dreapt n planul cartezian xoy. S se determine dac un punct p de coordonate x,z
aparine sau nu dreptei.
ALGORITMI
10 / 13
3. STRUCTURA REPETITIVA
De multe ori, n construirea algoritmilor de rezolvarea unor prtobleme, este necesar
repetarea unor operaii atta timp ct condiia este adevrat:
- ct timp este culoarea verde, mai trece o main.
- ct timp mai sunt bilete, vindei biletele; sau vindei bilete pn le terminai.
- Ct timp mai avei greeli de corectat, corectai greelile.
- ct timp mai avei numere, le adunai.
- ct timp mai avei cifre ntr-un numar afisai-le.
- ncepnd de la 1 scriei n ordine numerele pn la 100.
Metoda de implementare a unei repetiii este structura repetitiv.
Structura repetitiv cuprinde: un grup de instruciuni, numite corpul ciclului, ce se execut
repetat, i testarea unei condiii care face ca procesul de repetare s continue sau nu.
Ex: Se introduce de la tastatur numere pn cnd ultimul numr este 0, i se calculeaz suma
numerelor. DI: S iniial 0, i a valoarea citit ce se adaug la sum pn cnd a=0.
Spunem pe scurt ct timp a<>0, adun-l pe a la S.
Procesul de control cuprinde trei aciuni:
Iniializarea- stabilete starea iniial, starea dinainte de prima parcurgere a corpului ciclului.
Operaia de atribuire s0, i citirea primului numr (citete a).
Testarea- compar starea curent cu starea final care face ca procesul de repetare s se
sfreasc.
Se compar numrul a cu 0 (a<>0) dac condiia este adevrat se continu citirea lui a. Procesul
de executare repetat se termin cnd valoarea introdus pentru a este 0.
Modificarea- Schimb starea curent astfel nct s se avanseze ctre starea final. Modificarea
face parte din corpul ciclului i n exemplul dat const n citirea unei noi valori a lui a (citete a),
care poate s fie 0.
Structura repetitiv
Executarea repetat a unor aciuni, sub un proces de control, este conceput algoritmic printr-o
structur repetitiv.
Procesul de control presupune trei aciuni:
11 / 13
ALGORITMI
Structura repetitiv cu test initial se numete instruciunea ct_timp si are urmtoarea sintax:
ct_timp (condiie) execut
instrucinune;
sfrit_ct_timp
Efectul instruciunii:
Pas 1: Se evalueaz condiia care este o expresie.
Pas 2: Dac expresia este fals, se iese din instruciunea ct_timp; Dac valoarea este adevrat,
se execut instructiunea, apoi se revine la Pas 1, la evaluarea expresiei.
Observaii:
1. Instruciunea se execut, ct timp valoarea expresiei din condiiei este adevrat. Pentru ca
ciclul s nu fie infinit, este obligatoriu ca instruciunea care se execut s modifice cel puin
una din variabilele care intervin n expresie, astfel nct acesta s poat lua valoarea fals.
2. Dac expresia din condiie are de la nceput valoarea fals, instruciunea nu se execut nici
mcar o dat.
3. Instruciunea din corpul ciclului ct_timp poate s conin o alt instruciune ct_timp. n
acest caz se spune c instruciunile ct_timp sunt imbricate.
Probleme propuse
1) S se calculeze suma S=1+2+3=....+n , respectiv produsul P=1*2*3*....*n , pentru numrul
n natural nenul dat.
2) S se calculeze media aritmetic a n valori reale citite pe rnd de la tastatur.
3) Se citesc pe rnd de la tastatur numere ntregi nenule ntr-o variabil x, pn la
introducerea valorii 0. S se calculeze suma numerelor pozitive introduse i produsul celor
negative.
4) Se citesc pe rnd n numere ntregi i apoi o valoare ntreag a. S se determine numrul de
apariii ale valorii a printre numerele citite.
5) Precizai ce se va afia n urma execuiei secvenei de program de mai jos pentru n=5 (s,n
i k sunt variabile ntregi).
Date de intrare: n intreg.
Date de iesire:S intreg
Citeste n;
S0;
k1;
cat_timp(k<=n)executa
s=s+k;
k=k+2;
Sf_cat_timp
Scrie s=, s;
a) s=4 b) s=16
c) s=9 d) s=15
e)s=0
6) S se afiseze cifrele numarului natural n citit de la tastatura.(Atentie nu se cunosc numarul
cifrelor lui n).
7) Fie secventa cu x=179
Date de intrare: x intreg;
Date de iesire: s intreg;
12 / 13
ALGORITMI
Date intermediare: c,d;
citeste x;
dx;
s0;
cat_timp(d<>0)executa
cd % 10;
ss+c;
d[d / 10];
Sf_cat_timp
scrie s;
Ce se afiseaz?
a) 16
b) 18
c)17 d) 0
e) 971
8) Se citete o succesiune de numere ntregi pn la introducerea valorii 0. S se calculeze
media aritmetic a numerelor pozitive citite i numrul numerelor negative.
9) Se citesc pe rnd numere ntregi pn la introducerea valorii 1. S se calculeze media
aritmetic a valorilor nenule citite.
10) Pentru un numr natural nenul n dat, s se determine p natural cu proprietatea 2p<=n.
11) S se realizeze nmulirea a dou numere naturale nenule a i b date prin adunri repetate.
Structura repetitiv cu test final
Sintaxa:
repet
instructiune
pn cnd condiie
Efect:
- se execut secvena de instructiuni (orice instruciune pseudocod) care formeaz corpul
ciclului, apoi se verific condiia, care este o expresie logic;
- dac condiia este fals, se execut din nou secvena, s.a.m.d.;
- corpul ciclului se execut n mod repetat pn cnd condiia devine adevrat (adic ct
timp este fals).
Observaii:
- este un ciclu cu test final pentru c mai nti se execut secvena i apoi se verific
condiia;
- este un ciclu cu numr necunoscut de pai, numrul minim de execuii asigurat pentru
secven este 1 (cnd din start condiia este adevrat);
- pentru a evita buclarea infinit, corpul ciclului trebuie s conin cel puin o instruciune
care s asigure ieirea din bucl (la un moment dat condiia s devin adevrat).
Probleme propuse
Se citete un ir de numere ntregi pn la ntlnirea valorii 0. S se calculeze media
aritmetic a numerelor din ir.
1. Se considera algoritmul urmator:
citeste n
repeta
cifra n mod 10;
13 / 13
ALGORITMI
scrie c;
n [n / 10]
pana cand n=0
Determinati ce se afiseaza pentru n =1234.
2. Sa se afiseze inversul numarului n.
3. Sa se calculeze cmmdc-ul, respectiv cmmmc-ul a doua numere a, b.
4. Sa se realize algoritmul de determinarea produsului a doua numere a si b prin adunari
repetate.
5. S se calculeze ctul i restul mpririi a dou numere naturale nenule , a i b date , prin
scderi repetate.
6. S se descompun un numr natural nenul dat n factori primi , afisnd pentru fiecare factor
prim i puterea corespunztoare
7. S se verifice dac un numr natural nenul dat este palindrom , adic citit de la dreapta la
stnga i de la stnga la dreapta reprezint acelai numr .
8. S se determine numrul de apariii ale unei valori date, printre elementele unui ir dat cu n
elemente.
Structura repetitiv cu numr cunoscut de pai
Sintaxa:
pentru v = vi , vf , pas execut
instructiune
Sf.pentru
Observaii:
- v = variabila contor (de tip ntreg sau caracter);
- vi = valoarea iniial de la care ncepe numrarea;
- vf = valoarea final la care se oprete numrarea;
- pas = din ct n ct se numr (pasul contorului).
vi , vf i pas sunt constante, variabile sau expresii de acelai tip cu v.
Dac
a). vi <= vf i pas >0 - contor cresctor
b). vi >= vf i pas<0 - contor descresctor
Efect:
- se ncarc variabila contor cu valoarea iniial de la care ncepe numrtoarea (vi);
- ct timp nu s-a depit valoarea final vf la care se oprete numrarea (adic vi <= vf pentru
un contor cresctor, sau vi >= vf pentru un contor descresctor) se execut secvena care
formeaz corpul ciclului i se modific variabila contor v cu valoarea pasului (crete sau scade
cu valoarea pas);
- cnd valoarea final vf este depit, instruciunea se ncheie.
Observaii:
- este un ciclu cu numr cunoscut de pai:
nr pai =
vf - vi
pas
+1