Sunteți pe pagina 1din 12

Clasa a IX-a

Algoritmi

ALGORITMI REPREZENTAI N LIMBAJ PSEUDOCOD


n aplicaii complexe, cnd este necesar modularizarea, schemele logice devin stufoase i sunt greu de urmrit. Din
acest motiv, mult mai eficient este reprezentarea algoritmilor prin limbaj pseudocod.
Un limbaj pseudocod este un ansamblu de convenii, respectate n mod sistematic, care definesc operaiile permise
(instruciuni) pentru reprezentarea algoritmilor.
Limbajul pseudocod folosete cuvinte cheie preluate din limbajul natural care descriu instruciunile din algoritm. (dac,
atunci, altfel, ct timp, altfel, execut). Acestea formeaz vocabularul (lexicul) limbajului.
Regulile de folosire a cuvintelor cheie pentru formarea instruciunilor mpeun cu alte cuvinte sau simboluri determin
sintaxa limbajului.
1.

Structura secvenial
Declararea datelor
variabila tip;

La nceputul oricrui algoritm, vom preciza datele de intrare, datele de ieire, datele intermediare, precum i tipul lor.
nainte de a utiliza orice variabil, se va declara, preciznd numele i tipul ei. O variabil nu poate fi declarat de mai multe ori
n acelai algoritm.
Exemple:
x real;
c character;
i ntreg;
Operaia de citire
citete variabila1, variabila2,, variabilan;
Efect: Prin operaia de citire (operaia de intrare) se preiau succesiv valori de la tastatur i se asociaz, n ordine, variabilelor
specificate.
Operaia de scriere
scrie expresie1, expresie2,, expresien;
Efect: Operaia de scriere (operaia de ieire) presupune evaluarea n ordine a expresiilor specificate i afiarea pe ecran a
valorilor lor pe aceeai linie.
Operaia de atribuire
variabila expresie;
Efect: se evalueaz expresia, apoi se atribuie valoarea expresiei variabilei din membrul stng.
Parcurgerea instruciunilor n secven, n ordinea lor, reprezint o structur liniar (secvenial).
Aplicaii
1.

Fie a un numr real, citit de la tastatur, care reprezint lungimea laturii unui cub. S se scrie un algoritm care s calculeze
i s se afieze volumul i aria total a cubului.
Date de intrare a real;
Date de ieire: V real;
A real;
nceput
citete a;
Va*a*a;
scrie volumul cubului este: , V;
A6*a*a;
scrie aria cubului este: , A;
sfrit

Clasa a IX-a

Algoritmi

2.

n urma analizelor efectuate, asupra unui compus chimic descoperit pe planeta Marte s-a dedus c o molecul din acest
compus este format din m C atomi de carbon, mO atomi de oxigen i mH atomi de hidrogen. tiind masele moleculare petru
mC=12, mO=16, iar mH=1, s se scrie un algoritm care calculeaz i s afieze masa molecular a acestui compus.
Date de intrare: mC natural
mO natural
mH natural
Date de ieire: m natural
nceput
citete mC, mO, mH
m mC*12+ mO*16+ mH*1
scrie Masa molecular a compusului este: ,m
sfrit

3.

De ziua lui, Ionel a primit S lei i ar vrea s-i invite colegii la o ngheat. tiind c o ngheat cost P lei, s se scrie un
algoritm care s calculeze i s afieze numrul maxim de colegi pe care Ionel i poate invita i suma de bani care i mai
rmne lui Ionel.
Date de intrare: S natural
nceput
P natural
citete S,P
nr natural
nr S/(P+1) /*P+1 pt c I Ionel mnnc ngheat*/
Date de ieire: rest natural
rest S%(P+1)
scrie numrul maxim de invitai este: ,nr
scrie Suma rmas este: , rest
sfrit

4.

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 x 2.
x2
- Pe linia a doua se vor afla cifrele x3x2x1
x 3x2x1
a treia linie se vor afla toate cifrele lui x
x 4x3x2x1x0

Date de intrare: x natural


Date de ieire: x4,x3,x2,x1,x0 natural
nceput
citete x
x0x%10 /*rein cifra unitilor*/
xx/10 /*elimin cifra unitilor*/
x1x%10 /*rein cifra zecilor*/
xx/10 /*elimin cifra zecilor*/
x2x%10 /*rein cifra sutelor*/
xx/10 /*elimin cifra sutelor*/
x3x%10 /*rein cifra miilor*/
xx/10 /* elimin cifra miilor, n x rmne cifra zecilor de mii*/
scrie , x2
scrie ,x3,x2, x1
scrie x,x3,x2,x1,x0
sfrit
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

Clasa a IX-a

Algoritmi

sfrit
2.

3.

4.

5.
6.
7.
8.
9.
10.
11.
12.
13.
14.

15.
16.

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 mod 100
aa/100
cb*100+a
scrie c
sfrit
Ce valoare va avea variabila a la sfritul urmtoarei secvene de instruciuni?
a, b ntregi
a3 b7
ba+b/2: aa-b/2*a
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
Se consider polinomul P(x)=ax3+bx2+cx+d. Se citesc valorile a,b,c,d i x0. S se calculeze valoarea P(x0).
Se citete un numr natural cu exact trei cifre. S se afieze suma cifrelor acestui numr.
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).
Se citete un numr ntreg ce reprezint un numr de ore. S se afieze acest numr n minute, apoi n secunde.
S se determine ctul i restul mpririi lui a la b fr a realiza efectiv mprirea.
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.
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).
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.
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.
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)
S se calculeze ma a dou numere a,b reale.
Se citesc de la tastatur dou numere naturale nenule. S se calculeze media aritmetic, media geometric i media
armonic a celor 2 numere.

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 in ramura atunci, ct i in 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 nu 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.

3.

4.

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
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
atunci scrie nu exista solutii
altfel scrie o infinitate de solutii
sf.daca
sf.daca
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 cest 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:

Selector este o variabil sau o expresie de tip ntreg sau


caracter (nu este permis tipul real).
caz1,cazn se numesc etichete i sunt valori pe care la poate
lua selectorul.
Dac selector=v1 se execut instruciune1. Dac
selector=v2 se execut instruciune2
Dac selectorv k(k=1,n) i exist ramura altfel atunci se
execut instruciune n+1;
Dac nu exist ramuar else (altfel) atunci nu se execut nimic
i se trece la urmtoarea instruciune de dup case(cazuri).

n cazul c selector
caz1 v1: instruciune1
caz2 v2: instruciune2

cazn vn: instruciunen


altfel instruciune n+1
sf.cazuri

// (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 .
S se calculeze valoarea expresiei de mai jos pentru A,B,C numere ntregi date .
5.
E= A+B+C , C<=-1
C/(A+B) , -1<C<1
(A+B)/C , C>=1
6. S se evalueze expresia E=A2/(A2+B)1/2 , unde puterea nseamn radical de ordin doi , pentru A, B numere reale
date .
7. 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.
8. 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.
9. Citindu-se o liter mic, s se precizeze dac aceasta este vocal sau consoan.
10. Pe baza datei curente exprimat prin trei valori naturale nenule (zi,lun,an), s se calculeze data zilei urmtoare.
11. 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).
12. Se citesc patru numere ntregi oarecare. S se verifice dac ele alctuiesc o mulime n sens matematic, adic valorile
sunt distincte.
13. 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.
14. Se dau dou numere de tip ntreg. S se verifice dac ele sunt numere consecutive.
15.
n planul cartezian xOy, se da un dreptunghi prin colurile stanga-jos (x s,ys) i dreaptasus(xd,yd ). S se detemine dac
un punct oarecare (x,y) se afl sau nu n interiorul dreptunghiului.
16.
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.
17. Fie funcia f:RR, definit astfel: f (x)=
x-7,
dac x<2
7x2+1, dac x=2
3
Calculai f(x) pentru un x citit.
x +5, altfel

18. 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.
19. Fie ecuaia cu coeficieni reali ax2+bx+c=0 cu a0. Scriei un algoritm care, fr a calcula rdcinile ecuaiei, s se
determine natura i semnul acestora. (relaiile lui Viete x1+x2= S=-b/a, x1*x2=P= a/c).
20. 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.
21. Fiind date numere ntregi a, b, c, d s se afieze minimul dintre ele.
22. Cunoscnd numrul natural n s se calculeze suma 1+2+3+...+n.
23. Cunoscnd k i n (k<=n) numere naturale, s se calculeze suma k+(k+1)+...+n.
24. S se determine ultima cifr a sumei x+y, unde x i y sunt numere naturale date de la tastatur.
25. 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.
26. S se determine ultima cifr a numrului 2x, pentru x numr natural dat.
27. 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.
28. 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.
29. S se rezolve sistemul de ecuaii cu coeficieni reali
ax+by=c
dx+ey=f
pentru a,b,c,d,e,f numere reale oarecare date.
30. Scriei un algoritm care citete de la tastatur trei numere ntregi strict pozitive a, b, c cu cel mult trei cifre fiecare.
Valoarea variabilei a reprezint distana dintre oraul A i oraul B, b distana n km dintre oraul B i oraul C, iar c
reprezint distana n Km dintre oraul C i oraul A. tiind c un cltor i planific o vizit a celor trei orae pornind
din oricare dintre oraele A sau b i ajungnd n final n oricare dintre oraele B sau C cu trecere prin cel de-al treilea
ora, s se determine un traseu de lungime minim care respect aceste condiii. Algoritmul va afia cele trei litere
corespunztoare celor trei orae, n ordinea n care sunt vizitate. Se va alege o metod ct mai eficient din punctul de
vedere al gestionrii memoriei. De exemplu: a=58, b=140, c=125, se va afia BAC.
31. 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 v 2 m/s. Scriei un algoritm
care afieaz dup cte secunde prinde leul iepurele sau valoarea +1 dac leul nu prinde iepurele.
32. Un bazin se umple cu ap cu ajutorul a dou robinete. Dac lsm primul robinet deschis timp de h1 ore i al doilea
timp de h2 ore, n bazin vor fi x litri de ap. Dac lsm primul robinet deschis timp de h1+1 ore i al doilea timp de h2-1
ore, n bazin vor fi y litri de ap. Scriei un program care s determine ci litri de ap curg prin fiecare robinet ntr-o or.
33. 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.
34. Calculai intersecia a dou intervale [a,b] i [b,c] date prin valori reale a,b,c,d unde a<=b i c<=d.
(Fie e=max{a,b} i f=min{b,d}. Se observ c dac e>f atunci [a,b][c,d]= iar daca e<=f atunci [a,b][c,d]=[e,f])
35. Se citesc trei numere a, b i c. S se numere cte sunt apre.
36. Se citesc trei numere a, b i c. S se verifice dac ele pot fi termenii unei progresii aritmetice.
37. Se citesc 2 numere naturale a i b. S se afieze cte numere pare sunt n intervalul [a,b].
38. 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.
39. 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).
40. Se d o dreapt n planul cartezian xoy. S se determine dac un punct p de coordonate x,z aparine sau nu dreptei.

Structura repetitiv
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:

Iniializare- Stabilete, starea dinainte de prima parcurgere a corpului ciclului. (ex.s0, i1)
Testare - compar starea curent cu starea care termin procesul de repetare i are rolul de a termina procesul de
ciclare.(i<=n)
Modificare-Schimb starea curent astfel nct s se avanseze ctre starea final, care ncheie procesul de repetare.
(ii+1)
Clasificarea structurilor repetitive
Structura repetitiv poate fi:
cu numr necunoscut cunoscut de pai
cu numr cunoscut de pasi
Structura repetitiv cu numr necunoscut de pai poate fi:
- cu test iniial
- cu test final
Schema logic echivalent:
Sintaxa instruciunii repetitive cu numr necunoscut de pai cu test iniial ct_timp
Structura repetitiv cu test initial se numete instruciunea ct_timp si are urmtoarea sintax:
ct_timp (expresie) execut
instrucinune;
DA

sfrit_ct_timp
Efectul instruciunii:
Pas 1: Se evalueaz condiia care este o expresie.

condii
e

instruciune
NU

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;

6)
7)

Sf_cat_timp
Scrie s=, s;
a) s=4 b) s=16 c) s=9 d) s=15
e)s=0
S se afiseze cifrele numarului natural n citit de la tastatura.(Atentie nu se cunosc numarul cifrelor lui n).
Fie secventa cu x=179
Date de intrare: x intreg;
Date de iesire: s intreg;
Date intermediare: c,d;
citeste x;
dx;
s0;
cat_timp(d<>0)executa
cd mod 10;
ss+c;
dd div 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.
12) Fie funcia f:N->N , f(x)= n+1 , pentru n par
n-1 , pentru n impar
13) S se calculeze i s se afieze valorile funciei pentru n =1,2,....,10

Structura repetitiv cu test final


Sintaxa:

Schema logic echivalent:

repet
instructiune

Instructiune
corpul ciclului
F

pn cnd condiie

Cond
.

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;
scrie c;
n n div 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. Se citesc pe rnd n numere ntregi . S se verifice dac apar sau nu n ordine cresctoare.
8. 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 .
9. S se determine numrul de apariii ale unei valori date, printre elementele unui ir dat cu n elemente.
10. Se consider urmtoarea secven:
x2; ind0;
repeata
zx+4; yx+2;
n1x^3+x^2+x+1;
n23*(y^3+y^2+y+1);
n3z^3+3*z^2+2*z+4;
daca n1+n2=n3 atunci
ind1;
scrie x, ,y, ,z;
altfel
xx+1;
sf.daca

pana cand ind=1


12.1. Ce valori se vor afisa dupa executarea secventei de instructiuni descries anterior:
a) 3 5 7
b) 1 6 7
c) 7 3 5
d) 5 3 7
12.2. Ce valori au variabilele n1,n2, n3 la terminarea executiei secventei?
a) 3 5 7 b) 40 468 508 c) 15 288 403 d) 0 0 0
13. Se consider algoritmul urmtor:
citeste n
repeta
cn mod 10
nn div 10
pana cand (n mod 10 >c) or (n=0)
daca n=0 atunci
scrie ordonat
altfel
scrie neordonat
Ce rezultat va afisa algoritmul pentru n=1223?
a) neordonat
b) ordonat
c) eroare
d) ordonat

neordonat

Structura repetitiv cu numr cunoscut de pai


Sintaxa:
Schema logic echivalent:
pentru i vi , vf , pas execut
Sf.pentru

vvi
V<=
Vf
>=

Secvena

>

corpul ciclului

Observaii:
vv+pas

- i = 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).

modificare contor

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 i 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

nu se recomand modificarea variabilei contor v n corpul ciclului deoarece ea este modificat


implicit de ctre instruciune cu valoarea pasului pas; modificarea explicit a lui v duce la
comportri imprevizibile ale instruciunii.

Exemplu:

pentru i= 1, 10 execut

S= 1+1+1...
SS+1
i i-1

(de o infinitate de ori)

- dac pas lipsete din sintax se consider c pas = 1 (vezi mai sus).

Probleme propuse
1. S se calculeze suma S=1+2+....+n, respectiv produsul P=1*2*...*n pentru n numr natural
nenul citit de la tastatur.
2. S se calculeze media aritmetic a n valori ntregi citite pe rnd de la tastatur, unde n este un
numr natural nenul dat.
3. S se determine i s se afieze divizorii proprii ai unui numr natural nenul n dat de la
tastatur.
4. Se citesc pe rnd n numere ntregi (n natural nenul dat). S se verifice dac numerele apar sau
nu n ordine cresctoare.
5. S se verifice dac un numr natural nenul dat este perfect, adic este egal cu suma divizorilor
si proprii, inclusiv 1. Exemplu, 6=1+2+3 este numr perfect.
6. Se citesc pe rnd n numere reale, n numr natural nenul dat. S se determine numrul valorilor
pozitive, numrul valorilor negative i, respectiv, numrul valorilor nule introduse.
7. Se citesc pe rnd n numere reale. S se determine minimul (maximul) dintre ele.
8. Se citesc pe rnd n numere reale. S se determine media aritmetic a valorilor strict pozitive
citite.
9. Fiind dat un numr n natural nenul s se verifice dac este prim sau nu.
10. S se calculeze:
a) S=1+3+5++nr, unde nr este un numr impar mai mic sau cel mult egal cu n, n numr
natural nenul dat
b) P=1*3*5*.*nr, unde nr este un numr impar mai mic sau cel mult egal cu n, n numr
natural nenul dat
c) S=1+1/2+1/3+...+1/n, n numr natural nenul dat
d) S=1+1*2+1*2*3+.+1*2*..*n, n numr natural nenul dat
e) S=1+22+32+....+n2, n numr natural nenul dat
f) S=1+1/22+1/32+...+1/n2, n numr natural nenul dat
g) S=1+1/(1*2)+1/(1*2*3)+....+1/(1*2*...*n), n numr natural nenul dat
h) R=(1*2*...*n)/(1+2+...+n), n numr natural nenul dat
i) P=2*4*6*.....*nr, unde nr este un numr par mai mic sau cel mult egal cu n, n numr
natural nenul dat
11. Se consider irul 1,4,7,10,13,....S se calculeze suma primilor n termeni, n numr natural nenul
dat.
12. S se genereze toate numerele de patru cifre de forma 3a2b care se divid cu numrul 9.
13. Se citesc pe rnd n numere ntregi. S se determine cte numere pare i, respectiv, cte
numere impare au fost citite.
14. Se citesc pe rnd n numere naturale nenule. S se afieze i s se numere acele numere pentru
care suma cifrelor este divizibil cu 5.
15. Se citesc pe rnd n numere naturale mai mari ca 1. S se determine c.m.m.d.c. al celor n
numere.
16. S se afieze numerele prime mai mici dect 100 fcnd un numr ct mai mic de verificri.

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