Sunteți pe pagina 1din 82

::::::

., :
E
=e'

::===

:===
1-'.::-=

, 6;_t=
niffi:.
=.i.::::

ffi
'

:. :::.
- '
,,

,=:i.==::= :

rf)

co
?
CY)

'=

9
6
-N!.<-

?
.la

o c=

=ld
Q)Av
#6)
i:
<cd

-{H

l-{

Fi

,;v

ts i\ I o".9,ts"
c.=
;Ctr :=6S5d
*=E.F=
ULqSE
3 !.1'.8-gs
.='= '=I
I
=* EsEP

=xoLdo6-ai rj c.l E
d
,E
a o C o)o

;i P
ia.

sN

<=

i''):QE:t-^u
Q

xl
t{

zl-l
l-{
z14

3"

x(c

.Eil'
a=
)'-'\
L

.d..

>:o

:Y

d-)

%N

'i

o>

F!

trboq-

9E
(6 u

()x

ao
'5
0*

ts-

H-'sE3
:,ji Nf;
P

o
x-.i
!v.i

=o
'uo
5o

LFh'/t
/pL

aE

=
EFt'N

.t

a-l PP

_ a;:
ESE

E.ij
dr=

Fv.-!l

i!".(s'd_,
;.5-o
o
*UH

EF

o:

.i -o
f,6
=o

9c
ao
'E(J

So

6= O F
E
a F c. di(E.
.E s, ? E3'
-\HLV

n)

rv

-i.i^.>

b R
=';
AE-SE"
r.EY
=
';
n -+ ,H.3.=
S E*

'S

qo
9\

!()
t-I
().-o

s,

A4A-Y

CX"i;'cst
o=tr()o'
ts.= E H %..

c)=

ct P.F
--!+-!

i4

s5
?a

a.*)GV
--9

u!5

F{ J ts
04 .=
H o.o
ol
L
L
ar S d
o.
o.6
4.=

,.s

'Fi

E
;.E
VCOKN

lri

d'o
\0)

^5
)c34.-u

E $+:S:EE
tsI a-:HE.E
E iE s:$s;
:E .=EE
E
Pp tEi
.= UE
b
S i.: f;,E$EE
H HY Ei8-=o
3?s I
v,q U =
-:=

li

f,
Z

"F

\,1!
oE.-.-.E.I

()()

LC)iIO

E.= E g'!

\J

2e

!UIJA.4

*U*R

l-)

()

:Y-do
oh),-!
(Jcj-yp

JJJUL

c)

--

Llo)ta;

=ENg,E
l9s*=
s o-e 6J:=
!:>

FrI

()

.t c

($

3,I-bBO;

tj i1,J
o- cd

O tr i
F=s!
(.)

'd

i:

O,

rS
.<)

t\

E?
5X

6lH

Ectc
cr-H

6t

a sz
'4
ke)ss

$3
P;
.i;

:L,rYEd()o)
o
-=
U- .i

.-

-6

i
!

=
'- :
()

E<EE ES
L-rLUd

. 'rLr-.Y-u
Jrese-Ha)

:gu5
}

_r

E, a ;P

J-q
'\

f,o=
=h
- .+: a)

(54

o'=
o o
L-r
c-J r:.iiJ

r
io

E
6

SEg
.E=9

R
dr
n,s s

C
-o s
a-' r :!
E N EO
-F

E*E
vs{

=
!F=.,

=+g

-_-=-D

tSqI

9rtJ
;ae

d.:

xd,
I

.,

T :j
e

'i- i 9d
F=

tiQ
L
U.;

e5

=5

'r'1

G)

E6-

6t;^

E,

'AZ

-HA-lU.r-

-Hl

*3.E

*fi

*9

r'

*J

=fiqtr

6
.E

s.;
aA
E
e
E
fl E
fXc'iE,$5*'s
.=r\
J'l=
!; triEH
Eg
S8 EsE 3E

,{fr
.3E13;:
reo
U.;
i:j c9l coi-i
iiF .
3P'slr-6
5a
EeElEde
I
LESl^1s
95 ;
gE:]NgU
AE
E3
g
vtrI'J
hi: t:9co
=
r.:+la;ia
aE EIor !=+l::Er
'9;.-s;l
Hl

to!,(d-

-cS.X
oi
': 1
U
E

tg
^E
S.El sE

I =T

'6 =tr8
Z i:F b
:= = Irr:.X^
gSEEEi*
.=[El

:r n;glHrgg

,-l .. N c{ !l=[
oo #.== G)l i:l
<

6 -dI Rli :..i ^


J
Xl ..1 c.l o- co
C..r

3uil:HElil
a-E;E E SlEl EIEle=ciI
B?- xSL'i =

;'dE Y.s:
{ r ^v H #i l
g=5x-:=l EH;*ipES
,.=vlJ-

ii"'':\
o {7j?i

'=

't

EH
i6

tav

tr.F.=.F.F--:
5 a6-6.6-i
-

!2

.!t .-

e)tr

tE
a
oo
o) Fr ':':

uz x
o-q,
goa!
U EE

tr)aa

,.:.6

AVE
5ps
uo!
ii.t
*
U i,r

^ '- - :
= = =-7:'J.1=
= _
= =;

t.
=

:=

,-

'r
=
-

- -.=
z -

\
-_-: =.-.-/.-

:=
=.J

= ==1===+./ :i==77-=l-;
==!==:-=7,=
-j.--z-===
_4a-a=-it:2
==l=1j=--,
=
?==i1'<:=
;.
-==.'j.l,A
i.1.=.=i='IU
=

=?.-::

l'=
=!,="ZE:S?i;
=c.7=:,.'!9.-sd

=
==. =., 1i.*
=
=--4.-=.___
-===)=!=>=5.,=cE--'{=*a
=E='S=I>=cj
'

=l-'E=J=.oc';5=H.==i

.re
=a
=c_
I.=

c*_

-;
o jj
{8

.-': !1:Ii:41
rdlt
-.-, ==i=,.,
==EE*,5;ijE E;
7=zi3;:
5cE'aE.-?a=

1 ?=";E:;:: E;s$gu:fH* :;E.


.Ee,

o )cj
oa

o.
tr
a=
i:

l: ::

6
o

..tr.

s+ilirgEX;,A EE
=_ =-3,=,=iEE
1 li"o=;:EI a;E=Es,:_;a EE HESH*EE'gE:E.sE
i,E'E;E:gHE.;E
i; =Sii_i=;;
E=
ioa
Ir=Epf
i=
iEE=.EeoEb,q
c'=o
a:i"'Eo=
i :I
.E-e
[;
i>i=i"E=
s [g E :;
o
= ;iEzsEE
H?=:g's.EaEF
IE
; 'J o=!
dr;
x. \.==
C)

i;;

a
i

Zt;t5E;3s r;sEIeiE

C)

gE E* o gEE:
i
3EE *E tEE I

'gi= e e I lE :t EEiE

= =Eie
i?,tg:

IE

EE

i;

()

!.-

bo

!=

=.

Il#EEfiE:8.=l:E;;;
niEI ;EE s tl

t-2:

i E ; i if,rEiil Eg $ E B
j*
g *;t +i lE; E r
,i-=
'=
j.-r==
E
==:
r.:=;=='gp.r.?
r!E,i
s$E
:EEi
E;
=
=i=Z=i=;E
-=
".S- ;
1
\
_.=
tl
6
i.
=_=_=,=_i==:1
;;.=;=;=1===
=
,
;:-l
:
_ <'--'-== -

--

aA

()

QL-.
/!

tr

rd

=
==
-=
=

I ..
t--

..,

-'lZ-t

1;

=e
:=;
:.E
E,=
;'i

+i
=tr
-=

=i
=:
i=
i;c
fi
,+;
;:
=+
2.=
7---

-=._'-

_=

t;

i=1=j==i==i=Ei==,
'-=====i.===a:i-=

:l=i
a;

;'=

:,

i;E: CE;=f ='gEai,=,d-8. e


!E:EEEE:E
E[AE
1EI:E ]3E+a=:;5E
e3.;g. [!+:
.;

si';ig;
EEP== s=uiri::i';;
Ei
e
E+E;::==HsE+,;:tE.;FE;
g
q
E=,1 E':: E:Ee
e;: i+ 3g;,; = s

i,!

;iJ
'==

__=

::<:1.-=i-

f(B

v-z

'J=

====-

=
:1;.=;=:

e i{E=s

E EfEIs
E
EE=,=
; E;:SS

E*==E::
! v ;t< E-i

I
;:'ilscr
;E 5i-s.s
aiE,5 i s': a:

"slg:sE;;EEgiE;isefi Ei I
:{;i;
'EE gi
E':
=g==iF,IE.,.'l.o"t*E::
Ri;:E $ :i.i!i;

5.=

fi

+;

=
i;=;Er;;sEEgfEi$5!55Ei,:=gEEiE!:
'=
'.qiE Ei;g: i:;g:gEggE6EE f EE:
o F
tE eE=EE
i;:EE;:3:r;E*i;=,1:E
z r=
o=="HE
E
g*gEif 5 q;!;
o,,Ee3;
;#S'=i
:gi;'si,cE
E r e i=i::
gE,g;
5=:= oi:E
gE:
,j!
'5
;Str
;;;gE:
F?
=F
E'"
c
l[.iE:;fr,EEi-E$'EE
=*
ja=He
=
i ==,!EEt
Z;zi=a gE#E
=.;,s;F !r::=E;:="iE,E'i;.8
iE:g==e=EE= Es;;1 t'i"=
?;qi3Z
g9;EIE EEEEEEE.+;Eg EE E;
E ;i;E;E
i;
-?i=: =
d

o:

9H

=;

-s.

-i-=:.iE8 EXgeEg..3EE,*S;9 g ==.i


X-a==

H;;;
i=
if;;E,i
=-.E;:;;sE:l;:il;ii;!':
=
;z j =-;1: ;; ;i\i i: i:lE::
:ii:iii., E iEii;

==

=i,i='==

icj

NOTIUNI INTRODUCTIVE

periculoase pentru s5nAtatea oamenilor, in zone toxice, in addncul oceanelor sau in


spa{iul cosmic. Robo{ii preiau prin inlermediul unor senzori informa{ii din mediul
inconjurdtor gi sunt programali pentru a fi capabili sd ?gi adapteze activitarea in
funclie de variabilele de mediu.

Activitatea de proiectare, fie c6 se refer[ la guruburi, case, rochii, maqini sau


nave spafiale, se realizeazd de asemenea cu ajutorul calculatorului, Exist[ pachete
de programe speciaiizate pentru acsasta, care constituie un domeniu al infoimaticii
denumit cAD (Computer Aided Design - proiectare Asistatd de Calculator).
Acestea sunt insd exemple mult prea indepdrtate, pentru unii dintre noi, de viala
de zi cu zi. calculatoarele sunt implicate in orice activitate a noastrd.

Lirmdrim un film? Cu maximE probabilitate scenele cele mai spectaculoase din


film sunt realizate pe calculator. De exemplu, scena cea mai dramatic[ a filmutui

,,Titanic", scufundarea vaporului, cand sute de oameni sar cu disperare de la mare


indl{ime, a fost realizatr pe calculator, fdrd. ca nimeni sd igi rigte viafa. Regizorul
filmului a pus actorii sd aciioneze in diverse situalii, preluAnd migcdrile 1or prin
intermediul unor senzori. Migclrile au fost transferate asupra unor creaturi artiiiciale, fiecare reprezentare digital6 fiind coordonatd in mod individual pe calculator.
Ascultdm o reclam6? Mixajul

fost cu siguranlr realizatpe calculator.

Vrem s5 $tim cum va fi vremea? Pledicfla vremii este posibild numai cu ajutorul
caiculatorului. o parte din informaliile necesare pentru prevederea vremii, de
exemplu cele preluate din straturile superioare ale atmosferei, sunt inregistrate
direct de c[tre calculatoare specializate. Modelarea datelor inregistrate presupune
efectuarea rapid6 a unor calcule complexe, bazate pe ecua{ii matematice. Inteipretarea cu cdt mai multS acuratele a datelor se realizeazd,, de asemenea, cu programe
specializate, deci tot cu ajutorul calculatorului.
Vrem s[ plltim impoziteie? La Administra{ia Financiard se lucreazd,pe calculator, existand haze de date de evidenfa a locuinlelor, automobilelor etc.

Vrem sI ne schimbim buletinul? incepAnd cu fotografia care va fi preluat6 cu


ajutorul unei camere digitale, pdnd la ?nregistrarea in eviden{ele computeri zate ale

Polifiei, totul se realizeazdpe calculator.

Ar fi mai greu sd dim un exemplu unde nu se utilizeazd calculatorul sau, mal


exact, iinde nu trebuie sE se utilizeze calculatorul.

In domeniul educafiei, calcuiatorul

'este

o adev[rat5 provocare pentru invlf5-

mAntul tradifional. Informatica nu reprezinti doar o noud disciplin[ de inv5l6m6nt,


ci produce un puternic impact asupra metodelor de inv6lare de la orice disciplinl,

din orice arie curricularS. De exemplu, accesul la Internet sau o enciclopedie


multimedia reprezint[ o importantd resursE educa]ionali, oferind un spa]iu
informafional vast pentru toate domeniile de studiu. Calculatorul este privit ca un
instrument indispensabil oricdrei cliscipline, noile tehnologii multimedia

INFORMATICA

reprezentand calea de a comunica idei, de a sistematiza informa{ii, de a dezvolta


proiecte. Pentru orice disciplinS gcolard existd programe educafionale, care permit
individualizarea inv[fdrii. CAI (Computer Assisted Instruction - invSlarea Asistatl
de Calculator) reprezintl o noud metodi de inv5fare, prin care profesorul pune la
dispozilia elevului, pe calculator, materiale de curs, programe de invS{are, teme de
lucru, teste. Elevii studiaz6 individual, in ritmul propriu, materialele respective.
Acum calculatorul reprezintd sursa principal[ de informafii, nu profesorul, rolul
acestuia fiind de a coordona activitatea elevilor. Studiile realizate ?n legiturd cu
invilarea asistatl de calculator au demonstrat cd productivitatea invdldrii cre$te,
elevii dobAndesc o cantitate mai mare de informalii intr-un timp mai scurt, se
dezvoltd curiozitatea Etiin{ificd, se structureaz[ mult mai bine motivaliile qi aspiraliile individuale qi, nu in ultimul r0nd, elevilor le place sd utilizeze calculatorul.

Noi probleme tn era informalionald


Utilizarea calculatorului in orice domeniu de activitate a produs o adevdratd
revolulie informalionald. Aqa cum era de a$teptat, apar alte ,,puncte de fugi" in
relaliile sociale, apar noi probleme, de o importante deosebitd. O astfel de
problemS ar fi posibilele atentate la dreptul fiecdruia la intimitate, prin accesarea
neautorizatd a unor informalii personale sau prin monitorizarea permanentd a
spafiilor publice.

O altd problem[, de maximd importanld, este reprezentatd de asigurarea


drepturilor de autor asupra programelor sau asupra informa{iilor de pe Intemet.
Copyright-ul (drepturile de autor) este un sistem prin care sunt protejate valorile
intelectuale. Copyright-ul reprezintd drepturile de proprietate care derivS automat
la crearea unei opere, in orice domeniu - literar, muzical, plastic, sofh,uare etc.
Durata de valabilitate a drepturilor de autor variazd de la un sistem legislativ la
altul, dar in general este egal6 cu durata vielii + 50 ani. in RomAnia, conform legii
nr. 8/26.03.1996 privind dreptul de autor Ei drepturile conexe, drepturile de autor
sunt valabile pe intreaga duratl a vielii autorului, iar dupd moartea acestuia se
transmit prin moqtenire, pe o durat[ de 70 de ani (art.25). Capitolul IX (art. 72-81)
din legea nr. 8/26.03.1996 stipuleazi dispozilii speciale referitoare la programele
pe calculator. Conform prevederilor din acest capitol, autorul unui program
(indiferent dacd e'ste program de aplicalie sau sistem de operare, cod sursl sau cod
obiect) are dreptul exclusiv de a realiza sau autoriza reproducerea integrald sau
parfial6 a programului, traducerea, adaptarea, precum qi difuzarea originalului sau a
copiilor acestuia, sub orice form6, inclusiv tnchiriere. Utilizatorii autorizali ai
programului nu au dreptul de a transmite altor persoane dreptul de utilizare a
programului2. Toate informaliile pe care un utilizator le dobAndeqte prin studierea
2.

Pentru o prezentare detaliatl a tuturor aspectelor legate de drepturile de autor asupra programelor
pe calculator, studiafi Legea copyright-ului penrru ro1l, Editura ,,Solu1ii Informafionale",
Bucureqti, 1996.

F
NOTIUNI INTRODUCTIVE

pot fi utilizate.peltru producerea sau


$i testarea funclionalitalii unui program nu
principii
fundamental similare.
pe
comercializarea unui alt program,

Din picate, legea copyrighf-ului nu este intotdeauna respectat[, pirateria fiind


un fenomen frecvent, in tp".iut in !6ri1e slab dezvoltate. in multe 1dri, chiar dacd
de
acestea au semnat convenlii internalionale referitoare la respectarea drepturilor
autor, sunt dTfuzate, fie in forme tiperitd, fie in format digital (inregistrate pe
CD-uri), copii neautorizate ale unor opere de referinl[ $iterare, qtiinlifice, muzici
sau fiim). Copierea programelor sau a unor lucr6ri in format digital este facil[,
rapida qi praciic imposibil de detectat. Degi creatorii de programe folosesc sisteme
acestor
Oe protecJie din ce in ce mai sofisticate, exist[ specialigti in ,,spargerea"
o
fiind
licenll
firl
sistlme de proteclie, denumili cracker-i, utilizarea safi-ului
adevdratl epidemie.

La ora actuale, legislalia qi contractele coniin prevederi clare referitoare la

modul de utilizare a solt-ului, dar nu existd un sistem perfeclionat de control al


respectlrii acestor prevederi. Atet in Europa, cdt 9i in S.U-A. se deruleazf, diverse
proi""t" de dezvoltare a unor sisteme electronice care sI permitd controlul utilizdrii
autorizate a programelor qi informaliilor in format digital'

Evolulii viitoare
Impactul utiliz[rii calculatoarelor asupra societ[lii s-a dovedit a fi deosebit de
profuna. |n mod evident, informatica joacd un rol esenlial in imbunlti,Lrea situaliei
economice qi a calit[1ii viefii oric[rei naliuni 9i din acest motiv pentru multe
guverne aceasta reprezint6 o prioritate nalional5. Includerea informaticii ca
disciplin[ de studiu in inv6!6m0nt asigurl preg[tirea specialigtilor de care este
n"uoi" pentru a aplica ceea ce ne inva!5 istoria ultimelor decenii: solulia supraviemoderne 9i
luirii gi a succesului constd in dezvoltarea tehnologiilor informalionale
aplicarea lor in toate domeniile activitalii umane.

int r eb dri

re

apitulativ

Da{i exemple de domenii in care este utilizat calculatorul qi descriefi modul lui
de utilizare!
2. Ce este un robot? Care sunt avantajele utilizdrii robolilor? Scrie{i un scurt eseu
despre evolulia robofilor! Analizali modul in care calculatorul a influenfat
specificul muncii umane, precum gi dinamica structurii ofertelor de pe piala
1.

locurilor de munc6!
3. Ce inlelegeji prin copyright? Este legald utilizarea unui program fdrd licenld?
Ce sisteme de proteclie a produselor soft aliintAlnit?
4. Descrieli modul in care calculatorul influenfeaz[ via]a voastrd personall!
5. Descriefi intr-un eseu modul in care calculatorul influenleaz[ comunicarea
interumanS!

r
INtr'ORMATICA

.@

2. NOTIUNEA DE

ALGORITM

2.1. Ce este un algoritm?


Despre algoritmi auzim astlzi din ce in ce mai des, in contexte diferite.
Conceptul de algoritm nu este nou. Termewil algoritnu derivd din numele unui
matematician persan, Abu Jafar Mohammed ibn Musa al Khowarizmit (cca. g25
e.n.),
care a scris o carte cunoscutd sub denumirea latind de
,,Liber algorithmi,,?.
Matematicienii Evului Mediu in{elegeau prin algoritm o regull pe baza careia se
efectuau calcule aritmetice. Ulterior, termenul dehgoritm a=circulat intr-un sens
restr6ns. exclusiv in domeniul matematicii. O datd cu dezvoltarea calculatoarelor
cuv6.ntul algoritm a dobdndit o semnifica{ie aparte, astfel inc6t astdzi gdndirea

algoritmicd s-a transformat, dintr-un instrument specific matematicii intr-o

modalitate fundamentald de abordare a problemelor in diverse domenii.

un algoritm reprezintr o metodr de rezolvare

A rezolva o problemd inseamnd


rezultatul problemei (date de iesire):

problemelor de un anumit tip.

a obfine, pentru anumite date de intrare,

Date de intrare

ALGORITM
Algoritmul este constituit dintr-o succesiune de operalii care descriu, pas cu pas,
modul de oblinere a datelor de iegire, plecdnd de la ditele de intrare.

pot descrie algoritmi pentru rezolvarea problemelor din orice domeniu de


.Se
activitate. De exemplu, orice refeti de bucdtSG poate fi considerati un
algoritm
prin care, plecdnd de la materiile prime, oblinern printr-o succesiune finitr
de
opera{ii produsul finit.
Exemplul

Presupundnd

pregdtim ochiuri.

,,Date" de
,,Date" de

dispunem de un aragaz, o tigaie,

oud, sare gi 200 rnr ulei, sd

intrare: ou[, ulei, sare.


ieSire: ochiuri.

f. in traducere
2'

ci

exact[, ,,al Khowariznrj" inseamnf, ,din orasul Khowarizn,.Astazi


acest oraf se

numegte Khiva qi se gasegte in Uzbekistan.

Abu Jafar Moltammed ibn Musa al Khowarizmi este cunoscut gi


datorita cdr\ti ,,Kitab al-jabr wa,l
nruqabala" , o carte de exercitrii matematice, din denumirea
cdreia provine termenul algebrd.

NOTIUNEA DE.{LGORITM

10

sePune:tsili.fj::;

r' -rau 1,
P*

iHl
4:
Pas

Pas
Pas

i"iou'na uleiul in tigaie'

ffru;;1;il*"';jt--"i'Jli"
SPargem

"'i'"d:lT:
f,li"itat'pana clllouate

5:

se rumenesc'

pu"e n" $nem regim' adluglm sare'


de
paqi' prin care' pentru orice "date"
de
succesiune
o
o'
Observali c6 am descris
"
;",
s are,
::""",U Jl:
i ntrare (u r ei.
ll
care se executa
op"rafii'"ufinare specifice'

6:

JiHil

*":::::"z^m
J;;;;a[ie

;:::*1

l;;;i*1;:*;

::"

familiarizafi:
suntefi de asemenea
un alt exempru, cu care
cu a' bR'
de forma ax+b=o'

si

se

bR
Darc cle intrare: a'
adecvat
ecualiei' sau un mesaj
t"'-tta
lt"'
iesire:
de
Date
r

pasl:
Pas 2:

Citegtedateledeintrareaqib.
-^r.r^i este x= -b/a
Soluqia ecuaprer
Dac6 alO atunci Scrie
altfel

Daci b=0 atuncl


Scrie

altfel
Scrie

Ecualia este nedeterminat'i


Ecua;ia este imposibili

once
forma specificati' pentru
paqi rezolvl ellafia de
de
succesiune
Aceasti
ur*u." este un algoritm'
valori ale datelor d.;;:;iin

Lamatematic6,aliinv[latnumerogia[ialgoritmi,chiardac6nui-a$denumit

*,,i;4;;i*,,*#t#;?"xl,HJ**'fi?;#ixl'm:ff
numar re4r' atSwtt'

JT'TXI

oAtrate dintr-un
:;;, a doud numere naturale etc'

Exercilii
1.

succeslun Lea pa$ilor'


Descrieli, punAnd in eviden![

gripeil
algoritmul de tratare a

date'
2.Descrieli,punindinevidenllsuccesiuneapaqilor'algoritmulderezolvarea
cu a' b' c nurnere reale
ax2+bx+c=0'
forma
de
unei ecualii

3.Descriefi,punlndineviden{6succesiuneapaqilor''afe'oriyufdecalculalmediei
la care se susline tez6'
semestriale

" 'i;;;l;;obiect
t word'
4.Descriefi,punAndineviden!6succesiuneapagilor,unalgoritmdecopiereaunel
wo'a i*-inalt documen
de,"^t
zone

oi#u";;;;;*

5'Descriefi,pundndineviden!6succesiuneapagilor,algoritmulpecarel-a!
in laboratorul de chimie'
aplicat ta uttima'ip*r"'iu "i;;tuat6

1t

INFORMATICA

2.2. Propriet5{i caracteristice ale

algoritmilor

Exemplele precedente genereazdin mod firesc doui intreblri:

Pentru orice problemd existd un algoritm de rezolvare?

Rdspunsul este NU! ExistI problerne pentru care se poate demonstra (lucru
dificil!) cd nu existd algoritrni de rezolvare, dar gi probleme pentru care nici nu s-a
demonstrat cd nu adrnit o metodd de rezolvare algoritmic[, dar nici nu s-a descoperit
(inci! ) solulia algoritmicd.

Orice succesiune

de

pagi reprezintd un algoritrn?

Din nou, rispunsul este NU!

Pentru

a fi un algoritm,

secvenla trebuie sI

indeplineascd trei condilii:

1. Claritate

determinatS,

la fiecare moment, operafia care urmeazi a fi executatd este unic


definiti qi realizabild (adicd poate fi efectuat[ la momentul respectiv,

cu mijloacele disponibile).

De exemplu, secvenla ,,Dacd ploud stau acasd sau merg la cinema" nu este clar6,
deoarece, in cazul in care ploud, operalia care se executd nu este unic determinatS.

si presupunem ci dorim

sd oblinem un numlr natural, care se poate scrie ca


pdtrate.
sumi de
Secvenla de mai jos ,,scrie *'*y"'nu este clar[, deoarece nu putem
calcula valoarea
deoarece nu cunoa$tem valorile lui x gi y.

Sau

*'*y',

- o secven!6 de pagi reprezinti un algoritm de


rezolvare a unei probleme dacd obline date de iegire (rezultate) pentru orice date de
intrare specifice problemei.

2. Generalitate

(universalitate)

Secvenla de paqi prezentatd in exemplul 2 este generald, deoarece ionduce la


ax+b=0 pentru orice valori reale ale coeficienlilor a qi b.

rezolvarea ecua{iei

Dar, dacd am
aceasta nu ar

fi

descris o secvenld de pagi care

si rezolve numai ecualia x+2=0,

fi fost un algoritm!

3. Finitudine -

rezultatele problemei se ob{in dupd un numdr finit de paqi.

De exempiu, problema ,,Sd se determine toate zecimalele numdrului ti' nu are o


solplie algoritmicS, deoarece n este un num6r iralional, care are o infinitate de
zecimale. Dar dacd am enunla problema astfel: ,,Fie n un numdr natural dat. Sd se
determine primele n zecimale ale numdrului d', aceastd problem[ admite o solu]ie
algoritmici, deoarece primeie n zecimale se pot obline dupd un numdr finit de paqi.

in concluzie, degi nu putem defini cu rigurozitate no{iunea de algoritm,


descrie mai detaliat aceast[ notiune astfel:

putem

NOTIUNEA DE ALGORITM

12

2.3. Etapele rezolvlrii unei probleme


Rezolvareauneiproblemeconstituieunprocescomplex,carecompoftamai
multe etape.
datelor de intrare, precum
l.- Analiza problemeiin scopul stabilirii
problemei'
;";" irebuie si le obf;nem prin rezolvarea

2. Elaborarea

unui algoritmde rezolvare

qi a rezultatelor

problemei'

3.

limbaj de programare'
Impl ement area algoritmului intr-un

4.

V e rifi c ar e a c o r e c t itudinii

algorilmului propus'

Unprimpasconstlintestareaprogramuluipediverseseturidedatedetest.
inc6t s[ acopere, pe
test trebuie Jluborut" cu atenfie, astfel

seturile de date de
algoritmului,-inclusiv situalii de excepc6t posibil, toate variantele de execufie a
subproble;a a probleme] date este rezolvata
tie, $i si verifice daci fiecare
corect(dac[esteposibil,sevatestaSeparatfiecaremoduldeprogram).

Testareapoatepuneineviden![,gventual,omisiunisauerorideconcepliea
argorit-ilo,,darnugarunteazdcorectitudineaalgoritmului.Pentruaceastaar
de intrare, ceea ce

posibile de date
trebui sa testam algorrtmul pe toate seturile
i*pun" utilizarea unor metode
,"
este practic impoiiuit. Din acest motiv,
etapS de obicei deosebit
formale o" a"*on.irare a corectitudinii algoritm;lui,
complex'
de laborioas[, necesitdnd un aparat matematic

5. Analiza conrylexitdlii algoriunului'


probleme date' Pentru
mai mulli algoritmi de rezolvare a unei
in general, exist[-Uun
trebuie si analizdm acesti algoritmi in scopul
*ui
l".itrrl
a alege
""f eficienfei "flo-r 9i, pe cdt posibil' a optimalitalii lor'
deteririn6rii

puncte de vedere:
Eficienfa unui algoritm se evalueaz6 din doud

l.dinpunctuldevederealspaliuluidememorienecesarpentrumemorarea
valorilorvariabilelorcareintervininalgoritm(complexitatespa!iu);
2.dinpunctuldevederealtimpuluideexeculie(complexitatetimp).
ComplexitateaspaliuovomanalizacuprecIdereatuncic6ndvomtranspune
algoritmul intr-un limbaj de programare'
cd se lucreazi pe un
Pentru a estima complexitatea timp vom presupune
este executata la un moment
calculator ,,clasic", in sensul c6 o singura instructiune
depinde de numlrul de operafii
dat. Astfel, timpul necesar execu[iei programului
elementare efectuate de algoritm'
Observalie

adeseori este necesar sa


Elaborarea algoritmilor nu este un proces liniar,
dupd ce am demonstrat
revenim la o anumit6 etaPd 9i sE o repetSm. De exemplu,

13

INFORMATICA

coiectitudinea algoritmului 9i am analizat eficienfa sa, ne putem pune problema de


a optimiza algoritmul sau numai implementarea sa, caz in care trebuie s[ revenim
Ia cea de a doua etap6, de proiectare a algoritmilor 9i de scriere a codului, etapi
urmatl in mod necesar de teste de corectitudine, eliminare a erorilor (bug-urilor),
demonstra{ii de corectitudine, teste de determinare a complexitilii, analiza teoreticd
a

complexitdlii etc.

2.4.Date
Orice algoritm lucreazl cu date: date de intrare (datele pe care trebuie s5 le
primeascl un algoritrn din exterior), date de ieSire (datele pe care trebuie s5 le
iurntzeze algoritmul in exterior), precum Si date de manevrd (date temporare,
necesare algoritmului pentru a obline datele de ieqire pe baza datelor de intrare)'
Datele cu care lucreazd algoritmii pot fi clasificate din mai multe puncte de vedere.
O primd clasificare a datelor, in func{ie de posibilitatea de a-gi modifica valoarea, este:

i;i modificfl valoarea; de exemplu: 10, 3.1-4, "sir


de caractere", 'A', fals.

1. Constante

2. Variabile -

date care nu

date care iqi modificd valoarea.

O variabill poate fi referiti printr-un nume (o succesiune de litere qi cifre, primul


caracter fiind obligatoriu litera) qi are asociatd o valoare. Numele unei variabile nu se
schimbd pe parcursul algoritmului, dar valoarea acesteia se poate modifica.

De exemplu, pentru rezolvarea ecualiei de forma ax+b=0' am utilizat douA


variabile a gi b. Prin operafia ,,CiteSte clatele de intrare a Si H' , acestora li se asocia
cdte o valoare real5, introdus[ de la tastaturd. Utilizarea acestor dou[ variabile era
strict necesara, pentru a respecta generalitatea algoritmului. Dac6 am fi utilizat dou[
valori constante (de exemplu, 2 9i 3 .5), secvenla de operalii ar fi rezolvat numai
ecua{ia

2x+3 .5=0, deci nu ar fi avut utilitate.

la inceputul algoritmului am specificat (arn declarat) faptul cd a gi b


sunt numere reale. Aceastl declaralie este necesar6, pentru a cunoa$te natura valorilor
care pot fi asociate celor doul variabile gi, ca urmare, operaf;ile permise cu acestea.
Spunem cE am declarat tipul variabilei respective. O variabild poate reline numai
valori de tipul declarat.
Observali

ci

in funclie de valoarea lor, datele pot fi clasificate astfel:


l. Date numerice - au ca valori numere (naturale, intregi sau reale);
2. Date alfabetice - au ca valori caractere sau giruri de caractere;

3.

Date logice

au valoarea

adev5raL

sau f

als.

NOTIUNEA DE ALGORITM

t4

2.5. ExPresii
Oexpresieesteconstituit[dintr.osuccesiunedeoperanzi,conecta,tiprin
operatori.|Jnoperandpoatefioconstant[,ovariabil[,sauoexpresieincadrata
intreparantezerotunde.operatoriidesemneazSoperaliilecareseexecutEasupra
intr-o expresie depind de tipul operanzioperanzilor. operatorii.ur" po, fi utilizali
lor(numericiintregi,numericireali,caractere,qiruridecaracteresaulogici).
valorii expresiei, prin inlocuirea
Evaluarea unei expresii presupune calculul
in expresie qi efectuarea operafiilor
valorilor variabilelor care intervin ca operanzi
specificate de oPeratori.

Vom prezenta trei categorii de operatori'

Operatori aritmetici
operatoriiaritmeticidefinescooperaliearitmeticigipotficlasificaliastfel:
* (inmullire), /(imp[4ire), 7o (restul
1. operatori aritmetici multiplicativi:
impnrfirii intregi).

operatoruldeimpir,tire(/)areunefectdiferit,infuncliedetipuloperanzilor.un
intreagi (se obtine ca rezultat
Dac6 ambii op".anzi'iunt intregi, se face imp6(ip
primului operand la cel de-al doilea). Mai
num6r intreg, care este catu impa4irii
a/b arc ca valoare catul impa(irii
exact, fie a gi b doul variabile intregi. Expresia

intregialuialab.Dac6,deexemplu,aarevaloareaTgibarevaloarea2,
expresia a/b arc valoarea 3'
se face imp[rfire real6 (se obline
DacS cel pu[in unul dintre operanzi este real,
a b sunt doui variabile reale' iar a
ca rezultat un num6r real). De exemplu, dac6 9i
ate valoarea 3 ' 5'
are valoarea 7 qi b are valoarea 2, expresia a/b

Operatorul

7o se poate aplica numai asupra operanzilor

2. operatori aritmetici aditivi:

intregi'

+ (adunare) qi - (sc[dere)'

(acfioneazd asupra a doi


operatorii aritmetici aditivi gi multiplicativi sunt binari

operanzi).operatoriiaritmeticiSepotaplicanumaioperanzilornumerici.
funcfie
(intreg sau real' in
Rezultatul evaludrii unei expresii aritmetice este numeric
de operanzi 9i oPeratori).

Operatori relalionali
egalitate dintre cei doi
Operatorii rela{ionali descriu relalia de ordine sau de
<
egal),2 (mai mare sau egal)'
operanzi: < (mai mic)' > (mai mare), (mai mic sau
* (egal), # (diferiO.

15

INFORMATICA

Operatorii relationali sunt operatori binari 9i se pot aplica numai operanzilor


fiind
nurn"ri.i, logici (fa1s < adevirat) qi caractere (ordinea caracterelor
determinati de codurile lor ASCII3)(deci poate fi
Valoarea unei expresii relalionale este intotdeauna de tip logic

adevdrat

sau

fals).

Operatori logict
operatorii logici definesc o operalie logic[: negalie logicit - t; coniunclie
qi, sau sunt
togicd - qi: ctisjunclie logicd - sau. operatorul ! este unar, operatorii
la logicd
inv[lat
op-eratori binari. Efectul acestor operatori este cel uzual,
matematic5. il reamintim in tabelul urm[tor:

fals
fals
adevirat
adevirat

fals
adevdrat

!x
adevirat
adev6rat

fals

adeviraL

fals
4-1^
rdaS

:lsauy
fals
adev6rat
adevdraL

adevirat

xsiy

fals
fals

fals
adevdraL

operatorii logici se pot aplica operanzilor logici. valoarea unei expresii logice
este de tip logic.

1.

GreSeli frecvente tn scrierea expresiilor


O greqeald frecventi in utilizarea operatoriior relalionali este utilizarea
inldnfuitd a acestora.
De exemplu, sd presupunem c5 este necesarS o expresie care sd aibl valoarea
adevdrat daca valorile a trei variabile intregi a, b, c sunt egale. Este greqit sd
scriem a=b=c. Corect ar fi, de exemplu, a=b Si b=c'

a
2. Frecvent Sunt ,,uitate" patanteze, de exemplu pentru a calcula media aritmeticd
(a+b)
2
loc
de
/
'
variabilelor a qi b, este scris a+b / 2 in

3. O greqeall des intdlnit[


este scris

este omiterea operatorul de inmullire ,,n". De exempiu,

a+2b in loc de a+2 *b.

Evaluarea unei expresii


tn procesul de evaluare a unei expresii se respectd regulile debazd, invilate la
matematicd (in primul rdnd se evalueazdexpresiile dintre parantezele rotunde; apoi
se execut6 operaliile in ordinea prioritdlii 1or; dac[ existd mai multe operalii cu
aceeaqi priorilate, se executl in ordine, in funclie de asociativitatea lor)' Prioritatea
operatorilor este (1 fiind consideratl prioritatea maximA):

rl

li
Ii

li
il

3.

Yezi anexa

1.

j
I1

NOTIUNEA DEALGORITM

T6

Oneratori
Nesatia losicl
Aritmetici multiplicativr
Aritmetici aditivi

Relafionali

5
6

Coniunctie logicd
Disiunctie loeici

Prioritate
1

Simbol

*, /,

9r-

sau

Asociativitate
de a dreaota la stAnea
%

de a st0nsa la dreapta
de a stdnga la dreapta
de la stdnga la dreapta
de la stdnsa la dreapta
de la stdnsa la dreapta

Exemple

Fie

x un numlr

natural, Expresia x%l-0 are ca valoare restul imp6(irii


numirului x la l-0 (care este de fapt ultima cifr6 a lui x).
2. Fie n un num[r natural. Expresia n* (n+]-\ /2 reprezinti suma numerelor
naturale mai mici sau egale cu n.
J. Sd presupunem cd in variabila R memorlm raza unui cerc, iar constanta fi o
1.

aproximlma Ia valoarea 3 . 14.


Expresia aritmeticd 2*3 .LA*R are ca valoare lungimea cercului de razS R (cu
aproximagie).

Expresia aritmeticl 3.14*R*R are ca valoare aproximativ6 aria cercului de


razdR.
4. Fie x un numlr natural. Expresia x<3 are valoarea adevdrat dacl x este 0, 1
sau 2 gi f aIs, daci x)3.
5. Sd scriem o expresie logici a cdrei valoare sE fie adevSraL dacd qi numai
dacl numirul intreg memorat intr-o variabil[ x este un numdr par.
Un numlr intreg este par dac[ el este divizibil cu 2, adic[ restul impl(irii
numdrului la 2 este 0. Prin urmare, expresia x%2=0 are valoarea adevdrat
dac[ gi numai dac[ x este par.
6. SI scriem o expresie logicl a cirei valoare s[ fie adev5rat. daci qi numai
dacd valorile intregi ale variabilelor x gi y sunt strict pozitive: x>0 qi y>0.

2.6. Probleme propuse


1.

considerim a, b gi c trei variabile intregi, avAnd valorile 4, 6 gi respectiv 2.


Evaluafi expresia (1,+2* a/b+a+2*b / 3* c) / 2+a.

2.

Fie n o variabili intreagi cu

Sd

n810+n/

4.

10% L

0+n/

10

0I

l-

valoarea 32735. Evalua(i expresia

0.

Numerele irafionale, care au o infinitate de zecimale, nu p<lt fi reprezentate in memoria unui


calculator decit cu aproximafie (re]inAnd un num6r convenabil de zecimale exacte).

INFORMATICA

3.

I7

Si considerdm a, b qi c trei variabile intregi, av6nd valorile 5, T gi ,"rf*iu

B. Evaluafi expresia

4-

a<=b

gi b<c sau c%2=J-.

Fie a o variabilI intreagl cu valoarea 5 gi b o variabild intreagd cu valoarea


10.
valoare are expresia a%2=o qi b%2=o sau azz=t gi b%2,=t?
Ce semnifica{ie are aceastd expresie?

ce

5.

considerdm cd a,

b, c sunt variabile intregi, iar x gi y sunt variabile

Care sunt gregelile din urmdtoarele expresii


, xi-'
x^2-y^21
c. a<b $i
" .,,1f,rt
t*41*

a.

b*b-4ac

a(b<c {=.
e. 1+xBy \a
d.

b.

6-

tv

reale.

-, .*, ff*zz={

!-i,*"'
./
t*.t
#b }aloarea adevSrat

Scrie{i o expresie care


memorat[ in variabila reaid x

este

dacd gi numai dacd valoarea


in intervalul ta , b ] (a gi b variabile reale).

7-

Scrie{i o expresie care are valoarea adevirat dacd gi numai dacd valoarea
memoratd in variabila reald x este in intervalul Ia, b] u
Ic, d]

8.

scrie{i o expresie care are varoarea adev5rat daci gi numai dacd numrrul
natural memorat in variabila x este par gi are doui cifre.

9.

Scriefi o expresie logici care sd aibl valoarea adev5raL dacd gi numai


daci
valorile variabilelor a, b qi c sunt in ordine strict crescdtoare.

10. scrieli o expresie a cdrei valoare s6 fie adevirat daci qi numai daci
num6rul natural memorat in variabila an reprezintl un an bisect.
Un an este
bisect dacd este divizibil cu 4, dar nu este divizibil cu 100 sau
este divizibil
cu 400. De exemplu 1600$i 1968; sunt ani blqecfi, dar 1700 qi
1970 nu
11.

Scriefl o expresie a cdrei valoare sa rie aoevdrat daci gi numai


daci
numerele intregi memorate in variabilele x gi y sunt numere
consecutive.

12. Scrie.ti o expresie a crrei valoare sd fie adevdraL


daci gi numai dacl
numerele naturale memorate in variabilele x gi y sunt ambele
nenule.
13.

care dintre urmdtoarele expresii are valoarea ad.ev5rat daci gi


numai dacd
variabila intreag6 x are ca valoare un numrr impar strict pozitiv?

a.x%2*O gi
b. t (x%2=0

- Informatic6

x>0 ;f l ',
/
=., *ao 1 t:

C. lxB2=0
d.

x>0 sau

si tx(0
x%2=1

.'.

'

-;

REPREZENTAREA ALGORITMILOR

18

q@

3. REPREZENTAREA

3.1. Principiite

ALGORITMILOR

programlrii structurate

'70 aparilia unei


Creqterea complexitalii aplicaliilor a impus la inceputul anilor

era de a dezvolta
noi paradigme in programare: proSramctrea stltcturatd. scopul
fiabile, uqor
programe
unor
s[ permitd dezvoltarea
noi tehnici de prograriar",
"ur"
gi
reutilizat.
de
de elaborat in ecfrila, ugor de depanat, de intre{inut
Un prim principiu al programarii structurate este modularizarea. Pentru
problemei care
proiectarea untr aplicalii complexe, este necesari descompunerea
dintre aceste
irebuie rezolvat[ in subprobleme relativ independente, pentru fiecare
Fiecare modull
subprobleme scriindu-se module de p'ogtu* mai simple'
de celelalte
independent
qi
relativ
este
efectueazd un set de prelucrSri specifice
constituie
care
parametri,
prin intermediul unui set de
module, cu care
"o*rni"e
echipS'
in
interfa{a. Avantajele sunt multiple. Cum la orice firma se lucreazd
Modificarea
modulele de program pot fi impiementate de mai mulli programatori'
implementat,
fi
poate
modul
Fiecare
unui modul nu afect"ard celelalte module.
testat, depanat, modificat, independent de celelalte'
Un alt principiu fundamental este structurarea datelor Si a prelucrdrilor'
dupd
Programatorul are posibilitatea de a-qi"grupa datele in colec[ii, organizate
anumite reguli, denumite structuri de date'.
de
Prelucrdrile asupra datelor sunt structurate separat. Conform teoremei
a
trei
prin
compunerea
fi
descrisd
poate
structurA Bohm-Jacopini, orice prelucrare
qi
structuri fundamentalei structura liniard (secven{ia16), structura alternativd
struclura rePetitivd.

,\B 3.2. Reprezentarea

algoritmilor in pseudocod

Pentru ca o secven!6 de operalii sd constituie un algoritm, ea trebuie s[ fie clar[,


adicd la orice moment opera{ia care urmeazd a fi executatd trebuie sd fie unic
cu
determinata, deflnita gi realizabilS (sI poatd fi efectuatd la momentul rcspectiv,
ajutorul
cu
definite,
mijloacele disponibile). Apare intrebarea: care sunt operafiile
cdrora sd putem descrje algoritmi?

1.

z-

proiectarea modular6 a

apliialiilor va fi studiati in detaliu in clasa a X-a.

cdieva srructuri de date fundamentale. in clasele a X-a 9i a XI-a vom


studia gi alte structuri de date (de exemplu, stiva, coada, lista)'

i;6i;ili

i0 ,o* *uoiu

l9

INTORMATICA

Un rispuns posibil ar

fi: operaliile definite

sunt instrucliunile limbajului de

programare X! Este un rdspuns acceptabil pentru to$ cei care cunosc acest limbaj de
programare. Dar pentru ceilalf? Nu putem impune nimdnui s[ invele un anumit
limbaj de programare, numai pentru a inlelege algoritmii pe care ii scriem noi. In plus,
experienla celor 5 decenii care s-au scurs de la aparilia limbajelor de programare, ne
inva!6 cI nici un limbaj nu este veqnic, nici unul nu a avut supremafia, nici in timp,

nici ca numdr de utilizatori.

Prin urmare, este nevoie de o metod6 universali de reprezentare a algoritmilor,


ulterior fiecare programator avdnd posibilitatea de a implementa algoritmii in limbajul
pe care il prefer6. De-a lungul timpului s-au impus dou[ modalitd{i de reprezentare a
algoritmilor: schemele logice qi limbaiele de tip pseudocod.
Schemele logice constituie o metodd de reprezentare graficI, foarte sugestivd, dar
cu o serie de dezavantaje: se dI o egal6 importan![ componentelor principale ca qi
detaliului, prin urmare schemele logice devin deosebit de stufoase gi greu de urmdrit;
pentru aplicaliile mai complexe, c0nd este necesard modularizarea, este practic
imposibil de pus in evidenp legiturile dintre module in cadrul schemei logice.

Din acest.motiv, treptat s-a impus o altl metodi de reprezentare a algoritmilor:


pseudocodulipn limbaj de tip pseudocod este un ansamblu de convenlii, respectate in
mod sistematic, care definesc operafiile permise (denumite gi instruc{iuni) pentru
reprezentarea algoritmilor.fi

Vom prezenta in continuare un limbaj pseudocod, cu ajutorul clruia vom


reprezenra algoritmii.

3.3.Struct@Declararea datelor

I variabila tip;

La inceputul oricirui algoritm, vom preciza datele de intrare, datele de ieqire,


eventualele date de manevr6, precum gi tipul acestora. inainte de a utiliza orice
variabil6, o vom declara, precizAnd numele qi tipul ei. O variabilI nu poate fi
declaratd de mai multe ori in acelaqi algoritm.
Exemple

x real;
c caracter;
i int.reg;
Operalia de citire

Citegte variabilal, variabila2,

variabila,;

A.

REPREZENTAREAALGORITMILOR

Efect:Prnop"*riudecitire(denumitdqioperaliedeintrare)sepreiausuccesiv
specificate'
valori de la tastatur[ gi se asociazS, in ordine, variabilelor

Operalia de scriere
$

Scrie expresiel, expresie2'

expresie';

Efect:operafiadescriere(denumitdqioperaliedeieqire)presupuneevaluarea
lor pe aceeagi
in ordine a expresiilor specificate 9i afiqarea pe ecfan a valorilor
linie.

Operalia de atribuire

II variabila (- expresie;

expresiei variabilei din


Efect: se evalueazd exPresia, apol se atribuie valoarea

membrul st1ng.

Instrucliune comPusd

instruc!iune _1
instruc!iune 2
lnst rucfiune-n
Efe ct

: se efectueazi in ordine instrucliunile specifi cate'

Instrucliuneacompusdesteutil6atuncic6ndsintaxapermiteexecutarea

unel

multor operalii'
singure instrucliuni, dar este necesari efectuarea mai
Observaqii

1. Orice instrucliune se tennind cu caracterul ' ; ' '


mici texte
2. Pentru claritate, putem insera intr.un algoritm comentarii,
succesiunea de calactere
explicative. inceputul unui comentariu este marcat de
*
/ * , iar sfhrgitul comentariului este marcat de / '

INFORMATICA

21

3.4.

Aplicafii

Cub
Fie a un numir real, citit de la tastaturd,
care rcprezintd
lungimea laturii unui cub. Si se scrie

calculeze
cubului.

gi sI

afiqeze volumul

gi

un algoritm care si
suprafafa totall a

SoluSie

Date de intrare:
Date de ieSire:

Citegte a;

rea1,.

V real;
S real;

/*volumu1 cubului *,/

/*suprafala Lotala

V+-a*a*a,.

Scrie,,Volumul_ cubului este ,,, V,.


se-6*a*a;
ScrLe ',suprafafa tot.al5 a cubului

este ,,,

S;

Compus chimic

un grup de cercetetori
,In urma
analizelor

studiazd un compus chimic descoperit


pe praneta Marte.
efectuate, au dedus ci o molecula
din acest compus este formati

din nc atomi de carbon, no atomi de


oxigen

nH atomi de

$i
hidrogen. $tiind cI
masa atomurui de carbon este 12,
masa atomurui de oxigen este 16,
iar masa
atomului de hidrogen este 1, sr se
scrie un'argoritm .*. ,a".ui*reze
sr
afigeze
Ei
masa moleculari a acestui compus.
Solulie

intrare: nC natural; ,/*numirul


de at.omi de carbon *,/
nO natural; /*numdrul de at,omi
de oxigren *7
nH natural
/*numlrul de at.omi de hidrogen */
Date de ieSire: m natural_,.
/*masa moleculari a compusului *,/
Citegte nC, nO, nH;
Date de

,.

m+-nc*12+nO*16+nH;
,'Masa moleculari.

Scrie

a compusului este ,,,

m;

fngheyatd
De ziua lui' Ionel a primit de la
bunica s rei gi ar vrea sr invite ta
inghelat, c6t
mai mulli colegi. gtiind c[ o inghe]atr
cost6 p lei, sd se scrie un atgoritm
care si
calculeze gi sE afigeze numrrul
maxim de coregi pe care Ionel ii poate
invita gi
suma de bani care ii mai rimdne
lui Ionel.

REPREZENTAREA ALGORITMILOR

22

Solulie
Date de

intrare: S natural;

,/

suma *,/

P natural;
/* prelul unei lnghelate */
Date de ieSire: nrc naEural;
/* numarul maxim de inviEa|i
rest naEural; /* suma rimasd */

Citegte S,

P;

nrc+-Sl (P+1); /* P+L pentru c5 si ronel minAnci


rest+-St (P+1) ;
Scrie "Numarul maxim de invitati este tt , nfC;
Scrie "Suma rimasd esEe ", rest;

inghelati */

Triunghi

x un num6r natural format

din 5 cifre (xax3x2x1xo). S[ se atiqeze un


x
astfel:
numdrului
format
din
cifrele
triunghi
pe prima linie (in vdrful triunghiului) se va afla cifra din mijloc (x2)
pe linia a doua se vor afla cifrele X3X2x1
pe a treia linie se vor afla toate cifrele lui x.
Fie

De exemplu, dacd
z

x=15289, triunghiul va arita astfel:

528
Lsz89
Solu{ie

Problema consti in ,,spargerea" numdrului x in cifre. in acest scop am


numerotat cifrele numirului x de la dreapta la stinga incep6nd cu 0, astfel incAt
num[rul cifrei sd corespund[ puterii corespunz[toare a bazei (in cazul nostru baza
10): xo este cifra unitdlilor (deci corespunde lui 100), x1 este cifra zecilor (deci
corespunde puterii l-01), x2 este cifra sutelor (corespunde lui 102) g.a.m.d.

Devine astfel evident cA pentru a extrage cifrele numdrului x trebuie sd


efectuim impe4iri la 10. Pentru a obline ultima cifrd din x vom implrli pe x la 10
qi vom re{ine restul in xo. Elimindm apoi ultima cifrd din x (implrfind pe x la 10,
x devine xax3x2x1) &cutrr X1 a devenit cifra unitdlilor qi continu6m extragerea
cifrelor numdrului x in acelagi mod.
Date de intrare:
x natural;
Date de manevrd: x0 , x1 , x2

Citegte x;

, x3 naturale;

x0<-x810; /* relin cifra uniLeli1or */

xe-x/10; /*efimi-n cifra


x1<--x?10; /* relin cifra
x<-x/L0; /*elimin cifra
x2<-.x810; /x relin cifra

unitSlilor */
zecilor */
zecil-or x/
sutelor */

IIYTORMATTCA

23

x+-x/1"0; /*elimin cifra sutelor */


x3e-x%10; /* relin cifra miilor */
x<-x,/10; /*elimin cifra miilor, in x rimane cifra zeciror
de mii */
Scrie " ,,, x2; Scrie ,, ,,, x3,x2,x1 ; Scrie x,x3,xZ,xL,xO;
Exerci[iu

Modifica{i algoritmul precedent astfel incdt sd afiqeze un triunghi format


,
din
cifrele unui numdr de 6 cifre. De exemplu pentru 1,23456 algoritmul
va afiga:
34

2345
1,234s6

Schimb
Se introduc de la tastatur{ numerele reale
variabilelor a gi b, apoi sI se afiqeze.

a qi b.

Sn se interschimbe valorile

Soluyie

S[ ne imagin6m cI variabila a este un pahar


cu vin alb, iar variabila b un pahar cu vin rogu.
Trebuie s[ schimbim confinuturile celor doul
pahare. Singura solulie fdri ,,pier.deri,, este de a
utiliza un pahar auxiliar (variabila aux). Vom a
turna vinul alb in paharul auxiliar (atribuim
variabilei aux valoarea variabilei a). Acum
paharul de vin alb este gol, turnlm in el vinul
rogu (atribuim variabilei a valoarea variabilei b).
Paharul de vin rogu (variabila b) a devenit disponibil,
turndm in el vinul alb din
paharul auxiliar (atribuim variabilei b valoarea variabilei
aux).
Aceastd metodi este denumiti sugestiv ,,regura ceror trei pahare,,,deqi
analogia

nu este absolut perfecti (cdnd atribuim unei variabile ,dour"u


altei variabile,
aceastd valoare se va gisi dupi atribuire in ambele,
in timp ce atunci c0nd turndm

conlinutul unui pahar de vin in alt pahar de vin ...


).
Date de intrare/ieSire.. a real
b real;

,.

Date de manevrd:

Citegte a, b;

aux real;

aux+--a,.

a+-b,-

b+-aux,.

Scrie "a= ,,, a, ,b- ,r, b;

/* L */
/* 2 */
/* 3 */
/*

l, */

/* 5 *l

({

I'

%.

:.

24

REPREZENTAREA ALGORITMILOR

Pentru a infelege mai bine acest algoritm s[ urmdrim execulia lui pentru un set
pafticular de date de intrare. In acest scop, am numerotat instrucliunile de la I la 5.
be exemplu, sI presupunem cI de la tastaturi se introduc valorile 3 qi 7.

Linia

aux

Explicatie
Se citesc de la tastaturl valorile 3 gi 7 qi se atribuie

ordine variabilelor

a gi b.

Variabila

aux

deocamdati o valoare necunoscutE.


Se coniazi valoarea variabilei a in variabila aux.
Variabilei a i se atribuie valoarea variabilei b.

Variabilei

in

are

bi

se atribuie valoarea variabilei aux (in


care am ,,salvat" valoarea initiald a variabilei a).
Scriem valorile variabilelor a qi b insofite de mesaje
explicative (pe ecran va apirea a= 7 b= 3).

3.5. Probleme propuse


algoritm, dacl se citesc valorile 7 qi 2 3 ?

1. Ce va afiqa urmStorul

a nat.ural,. b naLural;

Date de int:rare/ieSire.'

Citegte a, b;
a<-a+b,.

b<-a-b;

a<-i-u;

Scfig "a= ,,, d, " b= ,', bi

2. Ce va afiqa urmltorul algoritm, daci se citegte valoarea 1234?


Date de intrare: a natural;
Date de manevrd:
Date de ieSire:

Citegte a;
b<-a81

00

b natural;
c natural
,.

a+=a/100;
c+-b*1

Scrie c;

3. Ce valoare

va aved\KLriabila a la sfhrgitul urmdtoarei secvenle de instrucliuni?

b intregi,
II a,
2. 1^ t
1.
*= z J'

li

LO*a+b/2;a(-a-b/2*a;
@r* a, b, c Ai d patru variabile reale. Care dintre urmitoarele

instrucliuni
atribuie variabilei d media aritmeticd a valorilor variabilelor a, b gi c?
a.

d <-

(a+b+c)

/2;

c.d +- a+b+c/3;
d.

<- (a+b+c ) / 4-L

{25
INFORMATICA

algoritm care

un
5. Fie xL, x2, x3,14, x5 cinci valori reale' Scrieli
foloseasc[osingurivariabil[suplimentaripentruapelmYtlcircularvalorile
iniliald a variabilei x2'
celor cinci variabile (adicl in Rnat x1 s[ aibd valoarea
variabilei x4' x4
x2 valoarea iniliala a variabilei x3, x3 valoarea iniliala a
iniliala a variabilei x1-)'
valoarea iniliala a variabilei x5, iar x5 valoarea
b c trei numere reale, care reprezint[ lungimile laturilor unui

/6)fi"
a.
\yil;iri]sl

si
r"

sE

perimetrul 9i
scrie un algoritm care sd calculeze qi sd afiEeze

aria triunghiului.
un

in H ore' S[ se scrie
broasci testoas[ parcurge o distan!6 de D kilometri
fih
\-/ algontm
se deplaseaz6ilxo?sca
care
cu
care sa .ui"ul.rJ gi sd afiEeze viteza
*.S
leltoas6 (exprimat[ in metri/secundl)'
-

g. Doi colegi (vasilic[ qi Ionic6) pleaca simultan din oraqele in care"locuiesc'


ora$e este D, cd Vasilici
unul c6tre ..faruii. $tiind ca distan{a dintre cele dou[
(D' vL' v2 numere reale)'
cu viteza v1-, iar Ionic6 merge cu viteza v2
merge

se intdlnesc cei doi colegi qi


scrieli un algoritm care calculeazd dup6 cat timp
la ce distanli de oraqul in care locuieqte Vasilicd'
lor carteziene' Sd
9. Fie A qi B dou6 puncte in plan, specificate prin coordonatelesegmentului AB.
.a calculeze Ei s[ afigeze lungimea
se scrie un atgoritm
"*"
supdrat qi i-a tliat
10. A fost odatS un balaur cu 6 capete. tntr-o zi Fdt-Frumos s-a

uncap.Pestenoaptei-aucrescutalte6capeteinloc.Peacelagigdt!Adouazi,
Fdt-Frumosi.ataiatiaruncap,darpestenoaptebalauruluii-aucrescutinloc
(n+1-)-a zi, Fdt-Frumos s-a
alte 6 capete ... gi tot a$a timp de n zile. in cea de-a
tastatura n' numarul
qi plecat acas6! scrieli un algoritm care citeqte de la
plictisit

dezile,qicareafigeazdpeecranc0tecapeteaveabalauruldupdnzile'
zile
De exemplu, pentru n=3, algoritmul va afiqa: Dupa 3

are 15 capete

L{. Structura

(olimpiada Judeleana pentru Gimnaziu, ctasa

balaurul
a

v-a, 2002)

aJternativ6,

Daci exPresie
atunci
instruc!iune-1
a1tfe1
instruc!iune-2
Efect:
Se evalueazd exPresia.

instruc!iune-1'
instruc!iune-2'

Dacd valoarea expresiei este ad.evSraL, atunci se execut[


Dac6 valoarea expresiei este f a1s, se executl

REPRiZENTAREA

ALGORlrYl"9*

26
ObservaYii

l.AtAtperamuraaLunci'c6tqiperamuraalt'felestepem.'isdexecutarea
l"rri in care este necesari efectuarea mai multor
unei singur" i,ru*i*ii'i,
singurl instrucliune compus6'
operafii, acestea se grupeazi intr-o

2.Dacdperamuraaltfelnuestenecesar5efectuareaniciuneioperafii,aceastd
ramurd Poate liPsi'

3.InstrucliuneaDacdpenniteexecutareauneisingureinstrucliuni,infunctiede
a unei alternative'
permite selectarea Jondilionata
valoarea unei expresii, deci
Aceastainstrucliuneimplerrrenteaziinpseudocodulnostrustructuraaltemativd.

4'Instrucliune-lgiInstrucliune_2suntsuborrlonateinstrucliuniide
eG subordonatd unei alte instrucfiuni'
decizie. in cazul io.ur. o instrucliune
o subordoneazS'
aceasta se scrie

B
i
,.-.

i. "ii."i

care
indentai fa!6 de instrucliunea

Moduldespaliere-suua.,..i",.peliniinuestepredefinit,daresteirnportantca
de intre{inut'
futa programele uqor de urmdrit 9i
modul d. ,.Au.tut"
'a
Selectareainstruc}iuniiceurmeazIs6fieexecutatSinfuncliedevaloarea
alternativd' '' ':' '' "
uoJ .*pr"rii reprezint[ o wlicturd

3.7. APlica{ii

Modtil

care
numSr intreg x" Scrieli un algoritm
Se introduce de la tastaturd un
num[rului x'
calculeazd qi afigeazI modulul

.:
;a=

#
g

tra
:

:
:
a

Solu{ie

t-

Funclia modul este definitd astfel: Itl =

t-1,

Date rJe intrare:


Date de ieSire:

x intreg;
m intreg;

Citegte x;
Daci x<0 atunci m(--x;
altsfel m<-x;
Scrie "Modulul este " '

dacdx2o
dacd x<a

*modu1ul " /

fit;

Obsentatie

i
ii

::=

>::

ObservalicsnuamtestatdecAtcondiliax<0'Evident'estesuficient'Dacdam
pusintrebarea,Jv[onedaacitztttcusten,lafttst,ts?,,qinis.ar[spuns,oN&/'',este
fa!6 in sus'
inutil si mai intreb[rn dac[ a cdzttt cu cealalti

27

INFORMATICA

Paritate
f

Se introduce de la tastatur[ un num[r intreg

x. Scriefi un algoritm

care testeazA

dacl x este un numir Par.

Solulie

lui x la
Numirul x este par dacl este divizibil cu 2 (adic[ restul implr{irii

este 0).

It-oor" de intare: x intreg;


RezultaEul testulur
I Oot, de iesire:
I citegte x;
I

atunci Scrie x, ' este Pdr" i


Scrie x, ' nu esLe Pdr";
"Itfel
Ecualia de gradul al ll-lea

I oac5
|

xZ2=O

Fie o ecualie de gradul al Il-lea cu coeficienfi reali axz+bx+c=O


un algoritm care s[ rezolve ecuatia in mullimea numerelor reale.

(a*0)'

Scrie{i

Solulie

intdi discriminantul ecua]iei. Daci acesta este negativ, ecua{ia


riddcini reale
nu are rldlcini reale. Daci acesta este egal cu 0, ecualia are dou[
ecualia are dou6
egale (confundate). Dac[ discriminantul este mai mare decit 0,
Se calculeazl mai

rldlcini

reale distincte.

*
intrare: d, b, c reale; / * coef icienlii ecualiei /
/* discriminanlul */
Datedemanevrd: d real;
SoIu!ia
Date d,e ieSire:
c;
b,
a,
Citegte
/* calculam discriminantul */
d<-b*b-4*a*c;
oaci d<0 atunci
Scrie "Ecuatia nu are ridicini rea1e";
altfeI
Da.ci d=0 atunci
SCfie ,'y-L=X2=" , -b/ l2*al;
/*d este >0 * /
aItsfe1
scrie ,xf-=,,, (-b+ Jal t (2*a) , ux2=" , (-b-Ja 11e*a)

Date de

Exerciliu
(caz in
Modificali algoritmul pentru cazul in care ecualia are gradul cel mult II
careapoatefi0).

\-d",

REPREZENTAREA ALGORITMILOR

28

Fttnc{ie
Fie

-j

un numdr real. Sd se calculeze valoarea funcliei:

l,l

F(x)=rna1 {

:':

Solu{ie

E-

l2x-11, 9-x2}

intare: x real;
Dcte de ieSire: f reaL ;

Darc de

/* F(x) */

Citsegte x;
f

O-v*v.

/* lZx-fl=2x-t */
2*x-1>=0 atunci
{Daci 2*x-L > f atunci f <- 2*x-1; )
/* l7x-Ll=t-2x * /
a1tfe1
j
{Daei L-2*x > f atunci f <- 1-- 2*x;
Scrie f;

DacZ

Suntd
de 3 lei qi de
orice sum6 de bani s (s>7) poate fi platiu numai cu monede
de plat[ a
5lei. Dat fiind s>7, scrie(i un algoritm care sa determine o modalitate
sumei S numai cu monede de 3 lei 9i de 5 lei'
Solutie

ProblemaceredefaptsSgdsimdou6numerenaturalex$iyastfelincatSsa
fi scris sub fbrma S=3 *x+5*y'

poata

Vom analiza urmdtoarele trei cazuri:


1. s%3 (restul ?rnp[rlirii lui s la 3) este 0. in acest cazx=s/3, iary=9.
y=2' pentrll ce
2. S%3 este 1. Deoarece S>7. vom considera x=S/3-3' li

:.

(S/3-3 ) +5*2'
S=3*S l3+L=3* (S/3-3 ) +3*3+1=3n (S/3-3 ) +10=3*
sZ: este 2. in acest caz vom considera x=S/3-1 $i 1"=1' deoarece
S=3*S /3+2=3* (S/3-1) +3 +2=3* (S/3-1) +5'

Date de intrare:
Date cle iesire:
Date cle ntartevrii:

natural;
S
x, y natural-e;
r:atural- ;
r

CiteSte S;
r <- S%3;
Daci r=0 atsunci {x e- S/3; y <- u;i
a1t,f e1

Daci r=1 atunci i x (- s/3-3 ; y <- 2; j


altfel { x <- S/3-1,; Y <- L;\
Scrie S, "=3*",X, "+5*",Yi
\&

INFORMATICA

29

3.8. Probleme propuse


1. Care este

efectul urmitoarei secvenle de instrucfiuni?

a, b, c, x intregi;
a(-3 ,. be-5; c<-7 i

Daci a-bl2<0 atunci x+-l_,. aItfel DacE a+b-c/2<b atunci x<-2;


altfel Daci aBb+c>b atunci x+_3,. aItfel x1-4;
Scrie x;
2.

ce valoare ini{ial6 ar putea avea variabila x, astfel incat la sfarqitul execuliei


urmrtoarei secven,te de instructiuni variabila y s[ aib[ valoarea
2?

,:.i x>3 atunci Daci x<7 atunci Daci xts2=0 qtunci


I altfel
ye2; a1tfel yF3; altfel y<_4 .
I
3. Fie a

gi b dou[ numere intregi. Scrieli un algoritm care


sunt numere consecutive.

4. Fie ecua{ia cu coeficienfi reali

V<_1;

si verifice dacr a gi b

ax2+bx+c=0 (atO). scrieli un algodtm

fdrd a calcula r6ddcinile ecualiei, s6 determine natura qi semnul


acestora.

care,

Fie x un numdr natural de trei cifre. scrie(i un algoritm care


s[ elimine una
dintre cifrele numirului astfel inc6t numirul de doud cifre r6mas
sr fie maxim.
6.
un
algoritm
care
sd
iiteascb
3 caractere qi si determine c6te caractere
!9rie{i
distincte s-au citit.
5.

7.

Fie a gi b dour unghiuri, ale clror mIsuri sunt exprimate


in grade, minute qi
secunde. Si se scrie un algoritm care sd calculeze
,a
ung.rl"
misura sumei
li
celor doul unghiuri.
se citesc de la tastaturd a, b gi c trei numere reale pozitive.
Scrieli un algoritm

care

si

verifice dacr numerele citite pot constitui laturile unui


triunghi

dreptunghic
9.

Fie

qi

.in

caz afirmativ, calcurali qi afigali aria triunghiului.

y doui numere reale, citite de Ia tastaturd.

calculeazd gi afigeazd valoarea func{iei:

x+y

/,r, r, =

zxy
max(x, y),

{ [+.1(+ -]*rr+x2

+r'),

scriefi un algoritm care

dacd

x,y>0

dacd

x=0sau y=0

utr"r

10. scriefi un algoritm care cite$te de la trei numere intregi strict


pozitive a, b qi c,
numere cu cel mult trei cifre fiecare. valoarea
variabilei u. ,"p..rint5

**db"*p

\t-r''+*"-"

REPREZENTAREA ALGORITMILOR

30

c, iar c ,tp"al'lJli;;t"

oraqul

l'k*

stanta in km dintre oraqul


A' $tiind
dintre oraEul c qi oraqul

qi

c[

o;,11:::*'li
celor
xi:,:HT,$::::
sau c cu trecere
dintre oraqere B
oricare
r" nra in
lungime minima care
-t
dercrmine-un traseu de
t"
;:;;
treilea
de-al
cel
orin
cere trei ritere corespunzitoare
,;
cit mai
-Y.,i:*
viziiate. Se va alege o metod[
in care sunt
celor trei oraqe, in ordinea
exemplu' pentru
aI gestion[rii memoriei. De
punctul;-;"d"r"
din
eficient[
2002' sesiune speciali)
afiqa BAC' (Bacalaureat
a=58, b=L40, c=L25'se va

un cllator iqi

praninii';;-t'ttt

::;Jf:?l, ff;i;ro
[:;*; ffi ;;;d;t'iFil'11

56sescrieunalgoritmcares[rezolvesistemuldedou6ecua,tiidegradull,cu
reali:
Oooe n""unor.ui" qi coeficien'ti

11.

d1X+b1!=C1
O'2Yr+b2!=C2

l2.Unelevestedeclaratpromovatlabacalaureatdac6lafiecaredintrecele5
este cel pulin 6'
not" 5'l;;"Jiu
r*u'n"n'ilJ"t"'"ip"f'
'u-g""ral6
probe de
Datefiindcele5notepecareelevulre-aobtinutlabacalaureat,scrieliun
nu examenul de
dacr elevul a promovat sau
algoritm care si

"tiin""

bacalaureat'

13.

H2
Ionel are H1 cm, Gigel arc
care

s[ afiqeze

"'*"i"

3.9. Structura

I
I

""f"r

un algoritm
DEnu! are H3 cm' Scrie{i

a inll{imii'
"T'^iu'
3 copii in ordinea crescltoare

rePetitivl

Instrucliunea rep etitiv d condilionatd


cat-tinP exPresie executi

anterior

it =trucfiune

Efect:

Pas 1: se evalueazi

expresia;

.- ^ r:.^ i-o+srnri

Pas2:dac[valoareaexpresieiestefals,seiesedininstrucliuneac6t--t1l.,:^
dac[valoareaexpresieiesteadevErat'se.execut[instructiunea'aporse
revine la Pas 1'

Observalii

,i este adev6rats.
. _^r r!
repetat' cit timp valoarea' "ip::l-:
executi
se
Instruc,tiunea
1.
cafe se executa
outigutoriu ca instrucliunea
pentru ca ciclul rA;;; innnit,
inc6t
"rt"
r*riuuffi"ur" intervin in expresie' astfel
s[ modifice cel pufin una dintre

, ;T$'ffi3:t:'LTiJil"tlT:,,:i1;;'""
mlcar o dat6'

raIs'

instrucliunea nu se execute nici

31

INFORMATICA

Instrucliune a rep etitivd condilionatd

p o st e rior

Executi

instruc!iune
cAt-timp expresie;
Efect:
Pas 1: se executd instructiunea;
Pas 2: se evalueaz[ exPresia;

pas 3: daci valoarea expresiei este f aIs se iese din instrucliunea repetitivE;
dacd valoarea expresiei este adevSraL, se reving la Pas 1'

Observalii

1. Instrucliunea se execut[ repetat, cdt timp valoarea expresiei este adevirat'


pentru ca ciclul sd nu fie infinit, este obligatoriu ca instructiunea care se executd
incat
sd modifice cel pulin una dintre variabilele care intervin in expresie, astfel
aceasta sI poatl lua valoarea fals. Deoarece evaluarea expresiei se face dupd
execulia instrucliunii, instrucliunea se executl cel pulin o datd'

posterior (Execut5 cdt-timp) poate fi


simulat6 cu ajutorul instrucliunii repetitive condilionate anterior (C6t-timp)

2. Instrucfiunea repetitivi condifionatS


qi reciproc.

Simularea instrucliunii

CAt-t.imp cu ajutorul instruc{iunii Execut5 cAt-

timp:
DacE expresie atunci
Executd

instruc!iune
cAt-timp expresie;
Observali ci a fost necesar[ testarea ini$al6 a expresiei deoarece, spre deosebire
de instrucliunea CAt-timp, instrucliunea ExecuLE cdt-timp efectueazd o
datd instruc!iune inainte de a testa expresia.
Simularea instrucfiunii

ExecuEi cAt-timp cu ajutorul instrucfiunii Cat-

t.imp:

instruc!iune;
Cit-timp expresie executi
instrucPiune
Observali c[ in acest caz a fost necesar

se executdm o

dat[ instrucliunea in afara

ciclului.
Deducem cd nu este necesard existenla ambelor instruc,tiuni, dar in funclie de
problemS, vom alege instrucliunea repetitivd adecvat6, pentru care descrierea
algoritmului este mai concis[.

RT,PREZENTAREA ALGORITMILOR

32

Instrucliunea repetitivd cu numdr cunoscut

de

pasi

I pentru contor(-expresie_1, expresie-2 executi


instrucli-une
I
Efect:
Pas 1: Se evalueaii

exPresie-1'

Pas2:SeatribuieuariabileiContorvaloareaexpresieiexpresie-]..
Pas 3. Se evalueazl

exPresie-2'

Pas4:Dac[valoareavariabileicontorestemaimaredecltvaloareaexpresrel
expresie_2,atunciseiesedininstrucliunearepetitivS.Dac6valoareavariabilei
atunci se
contor este mai rnicr sau egald cu valoarea expresiei expresie-2.

executainstrucliunegiapoiseincrementeaz[(sem[regtecu1)valoarea
Pas 3'
variabilei contor, dupd care se revine la
ObservaYii

1. Daci inilial valoarea expresiei

expresie-l

este mai mare decAt valoarea

expresiei_2,instrucliunenuSeexecutdniciodatS.incazcontrar,qi
variabilelor care intervin in
dac6 instrucliune nu modifica valorile
(expresie-2expresie-2, instrucliune se executd de
exPresie-1-+1-) ori'
2.Instrucliunearepetitiv[cunum6rcunoscutdepagipoatefisimulaticuajutorul
celorlaite doud instrucliuni repetitive'
cu ajutorul instrucliunii repetitive condilionata anterior

(cat-timp)'

instrucli-

fi simulatd astfel:
contor e- exPresie-1
;;;-;i*, .or]tot ( exPresie-2 executa

unea

t
[
Ir
F
|

Pentru

poate

instrucfiune;
<- contor+1;
"ontor

Ir
Cuajutorulinstrucliuniirepetitivecondilionatiposterior(ExecutSc6t-timp),
instrucliunea PenLru poate fi simulatd astfel:

contor <- exPresie-l

oace contor ( expresie-2 atunci


Executi
t

instruc!iune;
contor e- conLor+1;

cit-timP conLor 3 exPresie-2;

INFORMATICA

3.10.

33

Aplicafii

cn

Secvenld

urmltorul algoritm descris


Datedeintrare: n, a, b narurale;

pseudQco

ieSire: nr naturaI,.
i nagural ,
Citegte n;
Citegte a;
i<-1 ; nre-0,. _
ceE:ffimp i<n executi
{ .citegte b;
i+-i+1;
.D*,1"_1 b!q:O. arunci

'1

Date de

Datedemanevrd:

l
I

k: L Cnf

n W_ry
"g"X
in
* X-"
'

Se consideri

I
I

o._

'8 W '^' ,X-

1'

r-\
l/*
/*
/*
/*
/*
/*

1rrtlrl-];
)
-"[t".;
Scrie nr,.
a. Ce se va afiga dac[ se citesc valorile 6* {.}, X
$

u> [\I .1i


! */
2 */
3 */
4 */
5 */
6 */

/* -l r,/
/* B */

ae-b,.

/* g */

S, et
incAt algoritmul sd afigeze

b. Introduceli o succesiune de cel pufin-3-vffiflastfel


valoarea 0.

c.

Care este efectul acestui algoritm

Solusie

a.

Se cere sI verific[m efectul algoritmului pentru un set particular de date


de
intrare. in acest caz vom executa instrucliunile algoritmului pas cu pas,
urmlrind valorile variabilelor care intervin in algoritm. Pentru simplitate,^am
numerotat liniile de la 1 la 9.

Linia

II

nr

:-

Explicafie

Se citeqte valoarea 6 Ei se atribuie variabilei n.


Celelalte variabile au valori necunoscute.

Se citeqte valoarea 4 gi se atribuie variabilei a.

Se

inilializeazl variabilele

respectiv
4

l_

nr

gi

cu valoirea 0,

1.
i

i (9 este r\
dec6t valoarea variabilei n (6).

Se testeazd dacl valoarea variabilei

mai micd

Deoarece expresia

i<n

are valoarea

adev5rat,

se continu6 execu{ia algoritmului

cu

instrucfiunea 5.
5
3

InformaticE

Se citegte valoarea 8 gi se atribuie

variaUitelbl

REPREZENTAREA ALGORITMILOR

Se m6reqte valoarea

1_

t_

variabilei

cu

dacd restul imp[(irii variabilei b la


variabila a este 0 (adicd dac[ a divide b)'
Deoarece 4 divide 8, valoarea variabilei nr se
m[reqte cu 1.

) t"riam

se atribuie valoarea variabilei b,


apoi se revine la instrucliunea de pe linia 4'

V*iuUit"i a

Se testeazd dacd valoarea variabilei i (2) este


mai mic6 decAt valoarea variabilei n (6)'

i<n are valoarea adev6rat


se continue execulia algoritmului cu

Deoarece expresia

instruc{iunea de Pe linia 5.

b'

Se citeEte valoarea 7 qi se atribuie variabilei

l-

Se mdregte valoarea

t_

f"rtutn dac[ restul imp6(irii variabilei b

cu

la

este 0 (adic6 dac6 a divide b)'


Deoarece 8 nu divide 7, valoarea variabilei nr
nu se mlreqte cu 1.

variabila

variabilei

se atribuie valoarea variabilei b,


apoi se revine la instrucliunea de pe linia 4'

t-

Vu.i^Uit"i a

Se testeazi daci valoarea variabilei

(3) qte

mai mic6 decAt valoarea variabilei n (6).


Deoarece expresia i<n are valoarea adevdrat
se continuA execulia algoritmului cu
instrucliunea de Pe linia 5.

21.

Se citeqte valoarea 21 9i se atribuie variabilei

21,

Se miregte valoarea

2L

variabilei

cu

b'

l.

testlm dacd restul impdrlirii variabilei b

la

variabila a este 0 (adicd dacd a divide b).


Deoarece 7 divide 21, valoarea variabilei nr se
mdregte cu 1.

2L

2L

2L

21,

se atribuie valoarea variabilei b,


apoi se revine la instrucliunea de pe linia 4,

Variabilei a

dacl valoarea variabilei i (4) este


micd decdt valoarea variabilei n (6).

Se testeazS

mai

INFORMATICA

35

i<n are valoarea adevlrat


se continui execulia algoritmului cu
Deoarece expresia

instrucliunea de pe linia 5.
5

2L

Se citeqte valoarea 3 gi se atribuie variabilei b,

21

Se mlregte valoarea

Test[m dacl restul impir]irii variabilei b la


variabila a este 0 (adicd dacd a divide b).

2L

.)

variabilei

cu

Deoarece 21 nu divide 3, valoarea variabilei


nu se mdreqte cu 1.
8

nr

i se atribuie valoarea variabilei b,


apoi se revine la instrucliunea de pe linia 4.
Variabilei a

Se testeazd dacd valoarea variabilei

(5)

este

mai mic[ dec6t valoarea variabilei n (6).


Deoarece expresia i<n are valoarea adevdrat
se continua execulia algoritmului cu
instrucliunea de pe linia 5.
5

Se citeqte valoarea 6 qi se atribuie variabilei b.

Se m[regte valoarea

Testdm dac6 restul impirlirii variabilei b la


variabila a este 0 (adic6 dac6 a divide b).
Deoarece 3 divide 6, valoarea variabilei nr se
m[regte cu 1.

Variabilei a

variabilei

cu

se atribuie valoarea variabilei b,

apoi se revine la instrucfiunea de pe linia 4.


4

Se testeazd dacd valoarea variabilei

(6)

mai mici decdt valoarea variabilei n

este

(6).

i<n are valoarea fals se


iese din ciclu gi se continu[ execu]ia
Deoarece expresia

algoritmului cu instrucliunea de pe linia 9.


9

Se afigeazl valoarea variabilei

b. Vom alege o secvenli de exact

nr

(3).

secvenfl este egale cu numdrul de valori care urmeazd deci va trebui


sd fie 2.
Pentru ca valoarea variabilei nr s6 r[mdnd 0 (aga cum este inilial) va
trebui si
alegem doui valori astfel incdt condilia din instruc{iunea 7 sd nu fie
indeplinitd

(adici prima valoare s[ nu dividr pe cea de-a doua valoare). prin


urmare
solulieposibilleste 2 5 7.

36

REPREZENTAREA ALGORITMILOR

c. Urmirind algoritmul

pas cu pas, deducem cd se citegte mai intdi o valoare n,


apoi se citesc succesiv n numere naturale. Permanent avem memorate in
variabilele a qi b doui numere consecutiv citite dintre cele n. La fiecare pas se
testeazi dacl primul numir (cel memorat in variabila a) divide pe cel de al
doilea (cel memorat in variabila b) qi dacl da, valoarea variabilei nr este
incrementati (miritd cu 1). Prin urmare, algoritmul numdri in variabila nr cAte
perechi de elemente consecutive din secven{a citit6 au proprietatea cI primul
element din pereche il divide pe cel de-al doilea element din pereche.

Calcul
Se considerd urm6toarea secvenf[ de

Date de intrare:
n
Date de intrare/ieSire.' x
Date de manevrd:. i

insrucliuni in pseudocod:

natural;
natural;
naEural;

Citegte n, x';
Pentru i+-1,n executE
x +- x*x;
Scrie x;

/* 2 */
/* 3 */
/* a */

a. Ce se va afiga pe ecran pentru n=3 $i x=2?


b. Scriefi o secvenfd echivalentI, care sd utilizeze

c.

structura repetitiv[

cdt timp.

Care este efectul acestui algoritm?

Solulie

a. Pentru a determina efectul algoritrnului pentru n=3 gi x=2 vom urmdri pas cu
pas execulia algoritmului, ilustrAnd in tabelul urmitor valorile variabilelor care
intervin

?n acest

algoritm.

Linia

Exolicatie
cite$te valoarea 2 gi se atribuie variabilei

variabilei i este deocamdati nedefiniti.


Se inilializeazdvariabila i cu 1. Deoarece valoarea
variabilei i < valoarea variabilei n se continud cu
instructiunea de pe linia 3.
Se modificd valoarea variabilei x, se revine lalinia2.

16

i cu 1. Deoarece valoarea
< valoarea variabilei n se continul cu

Se mlregte valoarea variabilei

variabilei
J

n, apoi se
x. Valoarea

Se citeqte valoarea 3 gi se atribuie variabilei

instructiunea de pe linia 3.
Se modific6 valoarea variabilei

x,

se

revine

lalinia2.

5t

INFORMATICA

16

256

256

b.

256

instructiunea de oe linia 3.
Se modificd valoarea variabilei x, se revine

Se mdregte valoarea variabilei

variabilei
4

i cu 1. Deoarece valoarea
< valoarea variabilei n se continu[ cu

Se mdreqte valoarea variabilei

variabilei

lalinia2.

i cu 1. Deoarece valoarea
> valoarea variabilei n se iese din ciclu qi se

continud cu instructiunea de oe linia 4.


Se afigeaz[ valoarea 256.

Trebuie sd transform[m structura repetitive

Pentru intr-o structurd repetitivl

CAt-uimp:
Date de intrare:
Date de intrare/ieSire.'
Date de manevrd:

Citegte n, x;
iu1

n natural;
x nat.ural,.
i nat.ural;

Cit-timp i(n executi


{ x e- x*x;
i +- i+1;
Scrie x;

Observali cd inainte de a intra in ciclu am inilializat valoarea variabilei i cu 1,


iar in ciclu am inclus o instruc{iune care sI incrementeze la fiecare pas valoarea

variabilei

c.

i.

Pentru a determina efectul general al acestui algoritm vom aplica un rafionament inductiv. Deoarece valoarea variabilei x se modificl la fiecare pas, pentru
a fi ugor de urmdrit evolulia acestei variabile, vom nota cu x0 valoarea initiald a
variabilei x.

Explicafie

x0

x0'

Daci pentru n se citegte valoarea 0 instructiunea Pent.ru nu va fi


executata nici o data, deci x rdmane cu valoarea sa citit[ initial (x0).

se citegte valoarea 1 instruc{iunea pent,ru va fi


x va avea valoarea sa xO2.
Dacd pentru n se citeqte valoarea 2 instruc{iunea pent.ru va fi
^)
executatd de doud ori; dupd prima execulie x va avea valoarea sa xU-.
iar dupi cea de a doua x0a.
Daci pentru n se citeqte valoarea 3 instrucfiunea pentru va fi
executatd de trei ori; dupd prima execulie x va avea valoarea sa x02,
dupd cea de a doua x0a, iar dupd cea de a treia x08.

Daci pentru

executatA o singurd dat6, deci

x0*

x0

Urmdrind execulia algoritmului pentru cdteva valori ale


propozilia inductivd:

lui n, putem formula

38
REPREZENTAREA ALGORITMILOR

,,Dupd n pagi, variabila

va avea valoarea

*0r',,.

j"iro"*onstrem propozilia: ,,Dupr n+1 pagi, variabila


xO' "
-

observdm

c[

x va avea varoarea

la pasul n+1 variabilei

x i se_ atribuie valoarea variabilei x


pasul n inmullit6 cu ea inslgi,
adici x02 *x02 = *oro* ,'= *0r'*r.

de la

se considerr urmitoarea secvenld


de instrucliuni in pseudocod:

Darc de intrare:
Date de ieSire:

a, b naturale,.
nr naE,ural;
DTte de manevrd: i nat,ural;
Citegte a, b;

L */
2 */
3 */
4 */
5 */

nr-O;

Pentru i+-a, b executi


Daci i?2=0 atuncL nr (_ nr+l,.
Scrie nr,.
:. 9" seva afi$a pe ecran pentru a=5 $i b=g?
b. Scrieli o secvenfd echivalentl,
c6t timp.

.*.'ra

utilizeze structura repetitivl

ExecutE

c. Care este efectul acestui algoritm?


d. .Scrieli un algoritm echivalJnt
mai eficient.
Solulie

a. Vom urm[ri

pas cu pas execufia acestui


algoritm:

Se citesc uutori
variabilelor a gi b. Variabilele
o valoare nedefiniti.

nr

Se testeazd Ou"U

0 (adicd dac6 i

r.

este

au Oeocamaata

.oil.

Se inilializeaza u*irUif u
Se inilializeure
(5). Deoarece valoarea variabilei
varidbilei b se continud cu i

gi

<

valoarea

nea de pe linia 4.

este numlr par). Deoarece


ri wDLE
este
-vv
lmpar, valoarea variabilei nr
rIm6ne nemodificatd.

revine Ia linia 3.

Se

39

INFORMATICA
3

1,

t-

.)

Se mdreqte valoarea variabilei i cu 1' Deoarece


valoarea variabilei i este < valoarea variabilei b se

continud cu instruc{iunea de pe liqiq 4,Se testeazf, dacd restul impdrlirii variabilei i la 2 este
0 (adicd dacd i este numdr par). Deoarece i este par'
valoarea variabilei nr se mdregte cu 1. Se revine la

linia 3.
Se mdreqte valoarea variabilei i cu 1. Deoarece
valoarea variabilei i este < valoarea variabilei b se
continuS cu instrucliunea de pe linia 4'
Se testeazl dacS restul impdr[irii variabilei i la 2 este
0 (adicd dacd i este numlr par). Deoarece i este
impar, valoarea variabilei nr rdmAne nemodificatd. Se
revine la Iinia 3.
Se mlreqte valoarea variabilei i cu 1. Deoarece
valoarea variabilei i- este < valoarea variabilei b se
continud cu instrucliunea de pe linia 4.
Se testeazd dacd restul impa(irii variabilei i la 2 este

0 (adicd dacl i este num6r par). Deoarece i este par,


valoarea variabilei nr se mdreqte cu 1' Se revine la
linia 3.
- 1. Deoarece
Se miregte valoarea variabilei i cu
valoarea variabilei i este > valoarea variabilei b se
iese din instructiunea repetitivl 9i se continud cu
instructiunea de pe linia 5.
Se afiqeazd valoarea variabilei nr (2).

trebui s[ simuldm instruc{iunea PenLru cu ajutorul instruc{iunii

Executd

'cAt-timp:
a, b nat.urale;
Date de intrare:
natural;
nr
Date de ieSire:
Date de manevrd: i natural;
citegte a, b;
nr e- 0; i <- a;
Daciijbatunci
Executi
t Daci i82=0 atunsi nr <- nr+1;
)
i <- i+1;
cat-timp (i(b);
Scrie nr;
Observali c[ a fost necesar sd testdm separat, inainte de a intra in instrucliunea
repetitivd Executi cAt-timp, dacd i(b. Dac[ nu am fi pus acest test Ei dacd
inilial am fi citit o valoare par[ pentru variabila a strict mai mare decAt valoarea

Q_:
t

40

REPREZENTAREA ALGORITI\{ILOR

b, atunci acest algoritm ar fi afigat (incorect) valoarea 1, in loc


de 0. Acest lucru se datoreazl faptului c[ instrucliunea compusd subordonatl
instrucliunii ExecutE cdt-timp s-ar fi executat o datl gi s-ar fi m6rit valoarea

pentru variabila

variabilei

c.

nr

cu 1.

Observdm cd variabila i primegte in ordine toate valorile naturale din intervalul


Ia, b] (spunem c[,,variabila i parcurge intervalul Ia, b] "). Pentru fiecare
numdr natural din intervalul I a , b ] se testeazl, dacd el este par qi dacd da se
mdregte valoarea variabilei nr cu 1. Prin urmare, in variabila nr num[r6m

valorile pare din intervalul

d. Doi algoritmi

Ia,

b]

).

sunt echivalen{i daci, pentru orice set de date de intrare, produc

aceleagi date de iegire.

Un algoritm echivalent, dar mai eficient de a numdra valorile pare dintr-un interval
dat Ia, b] nu necesitd parcurgerea tuturor numerelor din interval. in primul rAnd
observdm cd in intervalul [a, b] sunt exact L=b-a+1 numere naturale. in al
doilea rdnd observdm cd aproximativ jum5tate din valorile din intervalul Ia, b]
sunt pare gi restul sunt impare. Am spus aproximativ jumdtate deoarece trebuie sd
fim atenli la paritatea capetelor intervalului. Mai exact va trebui sd analizlm
4 cantri posibile:

nr

par

impar

L/2

Explicatie
Se formeazd exact L / 2 perechi de numere naturale
consecutive (par, impar).

lmpar

par

L/2

Se formeaz[ exact

L/2

perechi de numere naturale

consecutive (impar, par).


par

par

I+L/2

lmpar

L/2

Se formeaz6 exact L/2 perechi de numere naturale


consecutive (par, impar) la care se mai adaugd b care
este de asemenea Dar.

impar

Se formeazd exact L/2 perechi de numere natutale


consecutive (impar, par), b fiind impar nu va fi
numerat.

I
t

:1

=:

.J

Algoritmul eficient de a numdra valorile pare din intervalul I a

intrare:
ieSire:

a, b naturale;
nr natural ;
rnanevrd: i natural;
Citegte a, b;
nr <-- 0;
DacEa(batunci
{nr <- b-a+1;
Daci a82=0 gi b82=0 atunci nr (- nr+1;)
Scrie nr;
Date de

Date de
Date de

este:

Q_:
t

40

REPREZENTAREA ALGORITI\{ILOR

b, atunci acest algoritm ar fi afigat (incorect) valoarea 1, in loc


de 0. Acest lucru se datoreazl faptului c[ instrucliunea compusd subordonatl
instrucliunii ExecutE cdt-timp s-ar fi executat o datl gi s-ar fi m6rit valoarea

pentru variabila

variabilei

c.

nr

cu 1.

Observdm cd variabila i primegte in ordine toate valorile naturale din intervalul


Ia, b] (spunem c[,,variabila i parcurge intervalul Ia, b] "). Pentru fiecare
numdr natural din intervalul I a , b ] se testeazl, dacd el este par qi dacd da se
mdregte valoarea variabilei nr cu 1. Prin urmare, in variabila nr num[r6m

valorile pare din intervalul

d. Doi algoritmi

Ia,

b]

).

sunt echivalen{i daci, pentru orice set de date de intrare, produc

aceleagi date de iegire.

Un algoritm echivalent, dar mai eficient de a numdra valorile pare dintr-un interval
dat Ia, b] nu necesitd parcurgerea tuturor numerelor din interval. in primul rAnd
observdm cd in intervalul [a, b] sunt exact L=b-a+1 numere naturale. in al
doilea rdnd observdm cd aproximativ jum5tate din valorile din intervalul Ia, b]
sunt pare gi restul sunt impare. Am spus aproximativ jumdtate deoarece trebuie sd
fim atenli la paritatea capetelor intervalului. Mai exact va trebui sd analizlm
4 cantri posibile:

nr

par

impar

L/2

Explicatie
Se formeazd exact L / 2 perechi de numere naturale
consecutive (par, impar).

lmpar

par

L/2

Se formeaz[ exact

L/2

perechi de numere naturale

consecutive (impar, par).


par

par

I+L/2

lmpar

L/2

Se formeaz6 exact L/2 perechi de numere naturale


consecutive (par, impar) la care se mai adaugd b care
este de asemenea Dar.

impar

Se formeazd exact L/2 perechi de numere natutale


consecutive (impar, par), b fiind impar nu va fi
numerat.

I
t

:1

=:

.J

Algoritmul eficient de a numdra valorile pare din intervalul I a

intrare:
ieSire:

a, b naturale;
nr natural ;
rnanevrd: i natural;
Citegte a, b;
nr <-- 0;
DacEa(batunci
{nr <- b-a+1;
Daci a82=0 gi b82=0 atunci nr (- nr+1;)
Scrie nr;
Date de

Date de
Date de

este:

INFORMATICA

41

Factorial
Fie n un numdr natural. Sd

se calcul eze

nt

(se citeqte ,,n factorial',).

Soluyie

Prin defini$e, n !=r- *2* . .. *n, pentru orice n>0, iar 0 !=r-. observrm cd n !
se obfine ?nmullind succesiv toate numerele naturale mai mici sau egale
cu n.
Pentru a calcula acest produs, vom utiliza o variabild f. Inilial variabila
f va fi 1
(pentru cd 1 este elementul neutru la inmullire), apoi vom parcurge
numerele naturale de la 2 la n, inmullind succesiv variabila f cu fiecare dintre aceste
numere.
Date de intrctre:
Date de ieSire:
Date cle manevrd:

n natural;
f natural;
i nat.ural;

Citegte n;
f +* 1;
Pentru i <-- 1, nexecutif+-.f*i;
Scrie f;
Exercilii

l.

Urmdrifi pas cu pas execu{ia acestui algoritm pentru n=6.

2. scrie{i un algoritm

echivalent care sd utilizeze instrucfiunea

cat-E.imp.

Putere
Fie
pe

n un numlr natural gi x

x".

un numdr real. Scriefi un algoritm care calculeazd

Soluyie

)qn=;*;*. . . *4=(x*x*.
de n ori
-,--_]--

de

.,*x),k11 = 1n-1*,.

n-1 ori

Evident, xo=1.

Vorn utiliza o variabild p in care vom carcula puterea. La fiecare pas


n) vom inmul{i valoarea variabilei p cu x.
Date de intrare:

n natural ,. x real
real;
i nat,ural;

Date de ieSire: p
Date de manevrd:

,.

Citegte n, x;
Pe1;
Pentru i <- 1, n executi p <- p * x;
Scrie p;

i (i=1, ...,

,1
a.

d
-{

42

REPREZENTAREA ALGORITMILOR

Observalie
Acest algoritm efectueazd exact n inmultiri.

DobAndd
S[ presupunem cd dorim sI depunem la banc[ o sumi S, cu o dobdndd anuald
de d8. Presupundnd cI timp de n ani nu intenfiondm sd scoatem bani din bancd qi

,-j

*!
r{

gtiind cd dobinda se calculeazd qi se cumuleazd in cont anual, elaborali un algoritm


care sd determine ce sumi vom avea in cont dupl n ani.
De exemplu, sI presupunem cI am depus 100 de lei, cu o dobAndd de 5?. Dupd
3 ani vom avea 1l- 5 .1 625 lei. Mai exact:

Initial

.{i

DupX

.1

Dupd 2 ani
Duo[ 3 ani

g
.:
I

:1
;
i

1 an

Suma

Dobinda

100
100
105
1l_0.25

Total
100

105

5.25
5 .5L25

110.25
1,1,5

.7 625

Solu{ie

Vom simula,,trecerea anilor", calculdnd dupd fiecare an dobAnda gi cumulAnd-o


la suma existentd.
Date de intrare:
Date de intrare/ieSire:
Date de ntanevrd:

n natural; d real;
C

ra:]

i natural;
Citegte S, n, d;
Pentru i e- 1, n executS. S (Scrie S;

S+S*d/1,00;

ExerciSiu

Urm6rili pas cu pas execulia acestui algoritm pentru S=1000, d=1-0%, n=5.

Maxim
I. Fie a qi b doud numere

reale, citite de la tastaturd. Scriefi un algoritm care


determind gi afigeazd pe ecran cea mai mare valoare cititd.

Solulie
Compar valorile celor dou[ variabile citite qi o afigez pe cea mai mare:
Date de
Date de

intrare: a real; b real;


ieSire: maximul dintre a

Citegte a, b;
Daci a < b atunci Scrie
altfeI Scrie

gi

,,max= ,,,
,'max=

b
1^.

INFORMATICA

43

o alt[ solufie, care al'e avantajul cd o vom putea generaliza pentru oricdte
elemente, este de a reline maximul intr-o variabiln (s6 o numim max). Inilializdm
variabila max cu a (inilial pot considera cd a este ,,cel mai buu"). Apoi compar
maximul cu valoarea variabilei b gi, clac6 max este mai mic, il schimb.
intrare: a real; b real;
DatedeieSire: max real; /* maximul_ dintre a $i b *,i
Citegte a, b;
Date de

max(-a;
Daci max < b atunci

Scrie "max=

/*inilializare*/
maxe-b;

max;

II' Fie a, b 9i c trei numere reale, citite de la tastaturl. Scrie[i un algoritm care
determind gi afiqeazd cea mai mare valoare citit[.
Soluyie

Ideea, utilizatl in cea de a doua variantd a algoritmului precedent, o putem


utiliza gi pentru trei variabile:
Date de intrare:
Date de ieSire:

a reaL; b real; c real


max real; /* maximul_ dintre a, b gi c */
,.

Citegte a, b,
max(-a,.

Daci max <


Daci max <

atunci max+-b,.
c atunci max(-c;
Scrie "max= ' , max;
b

/* ini;.ializare * /
/* compar cu b */
/ * compar cu c *,/

IIL Se citeqte de la tastaturd un numir natural nenul n, apoi se citesc succesiv n


valori reale. Scrieli un algoritm care determin[ gi afigeazd, cea mai mare valoare

real5 citit6.
SoluSie

O primd problemd este declararea datelor de intrare: ni se dau n valori reale,


numai cd de data aceasta n nu este constant, ci variabil (citit de la tastatur6). Cum
sd declardm un numdr variabil de variabile? Nu putem gi nici nu este necesar,
pentru cd nu este nevoie sd citim fiecare numdr intr-o variabild separatd! Vorn
citi
numerele succesiv in aceeagi variabild (s6 o numim a) qi irnecliat ce le-am citit
le
vom compara cu elementul maxim.
Pentnt a intui tnai bine algoritntul de calcul al nruximtiltti, sii ne iruagittdnt wt
Sir tle
elevi, care intrd tn clasd urutl cArc unul. Am clori ca pe niisurd ce intrd sd relinem
care este
cel mai
Evident, primul care intrd poate fi ionsiclerat cel mai inalt (de altfel, este
_fnalt.
singurul pe cclre l-am vdzut pdnd acurn). Cdncl intrit pe uSd Lu.t rtou elev,
contpar tndtlimea
lui cu indllimea celui pe care eu il consider cel ,nai inait de pand acum. Dacd nottl
elev
este mai tnalt, reyirt tttdllimea lui ca etalon pentru viitoctrele conrpara;ii (eL
este cel mai
inalt de pAnii acunt). Prin unnrtre, noi relinent pernlotlent maximul clintre cei intrali
cleja.

44

REPRBZENTAREA ALGORITMILOR

Aceastl idee o vom utiliza in continuare: in variabila max vom re{ine la fiecare
moment cea mai mare valoare citit[ p6ni la momentul respectiv.
Date de intrare: n natural; a real;
DatedeieSire: max real; /* maximul dintre valorile citite */
Date de manevrd: i natural
/*in i relinem c6.t,e valori am ciLit pani 1a un moment d.at*/
Citegte n;
Citegte max,. /* inilializim max cu primul element citit */
i<-1-;
,/* i indici num5rul d.e valori cit,ite */
,.

Cit-timp i<n executi


{
/* cAt. timp nu am citit t.oate cele n valori */
Citegte a;
/* citesc o nou5 valoare *./
ie-i+1;
*/
/ * numlr valoarea cititi
Daci max < a atunci max+-a;
/* compar cu max */
)
Scrig "max= ',, max;
Observayii
f

. in

2'

instruc,tiunea Cat-t.imp a fost necesarr efectuarea mai multor operalii


(citirea unei valori, numdrarea valorii citite gi compararea acesteia cu valoarea
maximi de p6nd acum). Prin urmare, am grupat instrucfiunile corespunzitoare
intr-o singuri instrucliune compus[.
Pentru a calcula maximul a n numere a fost necesari executarea instructiunii
compuse subordonate instrucliunii C6t-timp de n-1 ori.

Exercigii

1' Rescriefi algoritmul

precedent utilizAnd

instruc{iune repetitiv[ cu numdr

cunoscut de pagi.

2. Modificati algoritmul precedent astfel incat sI calculeze cel mai mic dintre
elementele citite.

3' Modificafi algoritmul

precedent astfel incdt

s[

calculeze cele mai mari doui

elemente dintre cele citite.

Medie aritmeticd
Se citegte de

la tastaturl un numdr natural nenul n, apoi se citesc

n valori reale. Scriefi un algoritm


a

valorilor strict pozitive.

succesiv

care determinl gi afiqeazd media aritmetici

Solulie

Media aritmetici se calculeazi impdrfind suma valorilor strict pozitive la

numirul lor.

45
INFORMATICA

'

cele n valori
mod asem6ner- .u problema precedentS, vom citi succesiv
dacd valoarea cititd
intregi in aceeagi variabila a. Oupa fiecare citire vom verifica
la sum6'
adduga
qi
vom
o
este Jtrict pozitiv[ 9i, in caz afirmativ, o vom numlra

i"

n natural; a real;
numerelot */
DatedeieSire: medie real; /* media aritmetici a
Datedemanevrd: i natural; nr natural; s real;
citit pAni Ia un momenE dat"
1;-i" t."t.in"* cALe valori ampozitive
in s
arn citit;
valori
cAte
in nr catculEm
calculdmsumavalorilorstrictpozitivecitite*/
Citegte n;
*/
i<-0; /* inilial nu am citit nici o valoare
nr<-O; /* inilial nu am citit nici o valoare Pozitivi*/
*/
s(-0; /*inifial suma valorilor strict pozitive citite e 0
Cats-tirq, i<n executi
valori */
/* cAt timP nu am citit toaEe cele nvaloare
{
*/
/* ciEesc o noui
Citegte a;
*/
/* numir valoarea cititi
i+-i+L;
esEe stricL poziLivd */
valoarea
/*
Dacia>0atunci
{
/* o adun ]a sum5 */
s<-s+a;
/* o numir */
nr(-nr+1;

Date de intrare:

)
)

"
atunci Scrie "Media aritmeticl =poaLe
' s/nri
calcula";
se
nu
aritmeEici
altfel scrie "Media

Dacd nr*O

Sumd cifre
se citeqte de

1a

lui
tastaturd un num6r natural n. s6 se calculeze suma ciftelor

n'

Solulie

(restul
cel mai usor se obline ultima cifr6 din numlr (cifra unit[,tilor): n%1-0
sum6), nu mai
impar,tirii lui n la 1-0). Dup6 ce utilizem ultima cifr[ (o adiugam la
zecilor a devenit
avem nevoie de ea qi o elimin[m din num[r (n+-nl10). Cifra
cifre.
are
mai
acum ultima cifrl. Repetam procedeul, cdt timp numirul
Date de intrare:
Date de ieSire:

Citegte n;

n natural;
s naLural; /*

suma

cifrelor lui n *'/

/* inilial suma cifrelor este 0 */* /


Cat-tilrtl) n*0 execute /* cdt timP mai exisLd cifre in n */
/* adun Ia s ultima cifrd a 1ui n
{ s+-s+n810;
ulLima cifr5 a 1ui n*/
/* elimin
n=n/ 10 ,' )
tr
Gr
Scrie "Suma cifrelor s+-0;

REPREZENTAREA ALGORITMILOR

44

mdx votm re'tine la fiecare


""" in variabilarespectiv'
Aceasti idee o vom utiliza in continuare:
cititi p6n6 la momentul
moment cea mai ,n*t'uiout"

intrare: n natural; a real i


dintre
DatedeieSire: ma- r"a1 ; /* maximul

Darc de

H::'i}i.,,
?1';:'{'::;1k
n;

am

valorile citite */

citit pani 1a un moment daL*/

citit */
a1
eme
element
^.. primul
^-inrr'l
cu
max
iniiializim
Citegte max; /*
*/
/* i indicl numdrul de valori citite
L<-L;
car-rirua t."
cele n valori */
Loare
cirir
,,,
;T"::la.r*,
?T
cite9te",-*-__---"-/*citesconouSvaloare*/
*/
/* numir valoarea cititi
i+-i+l- i
*/
/* compar cu max
Daci max < a atunci max<-a;

Citegte

Scrig "max= ",

max;

Observasii

1.

operatr
necesara efectuarea mai multor
instrucliunea cats-timp a fost
(citireauneivalori,*,,,a,u,"uvaloriicititegicomparareaacesteiacuvaloarea
maximidepin6acum).Prinurmare,amgrupatinstrucliunilecorespunzdtoare
inu-o singur6 instructiune compus6'

in

2.Pentruacalculamaximulannumereafostnecesaraexecutareainstrucliunii
instrucliunii CAt-timp de n-1 ori'
compuse subordonate

Exercilii

l.RescrielialgoritmulprecedentutilizAndoinstrucliunerepetitivacunum[r
cunoscut de Paqi'

2.Modificalialgoritmulprecedentastfelincflts6calculezecelmaimicdintre
elementele citite.

3.Modifica,tialgoritmulprecedentastfelincatsicalculezecelemaimaridou6
elemente dintre cele citite'

Medie aritmeticd
se citesc succesrv
la tastaturd un numir natural nenul n, apoi
gi afiqeazd media aritmetic[
n valori rlale. Scrieli un algoritm care determini
Se citeqte de

valorilor strict Pozitive'


SoluYie

Media aritmeticd se calculeazl implrfind


num6rul lor.

suma

valorilor strict Pozitive la

45

INFORMATICA

precedentI, vom citi succesiv cele n valori


intregi in aceeaqi variabil6 a. DupE fiecare citire vom verifica dac[ valoarea cititl
este strict pozitivl qi, in caz afirmativ, o vom numlra 9i o vom adiuga la sum[.

in mod asem6n[tor cu problema

n natural; a real;
real; /* media aritmetici a numerelor */
Datedemanevrd: i naEural; nr naEural; s real;
/*in i reqinen cAte valori am citit pAnd Ia un momenE dat;
in nr ca1cu15m cAte valori pozitive am citit; ln s
calculdm suma valorilor strict pozitive citite */
Cite$te n;
i+-0; /* iniliaI nu am ciEit nici o valoare */
nr+-O; /* inig,ial nu am citit nici o valoare pozitivd*/
s<-0; /*ini!ia} suma valorilor sEricL pozitive citiEe e 0 */
Cit-tirnp i<n executi
/* cAt ti-mp nu am citiL Eoate cele n valori */
t
/* citesc o noud valoare */
Cite$te a;
*/
/ * numir valoarea cititd
i<-i+l-;
*/
poziLivd
stricL
>
valoarea
esLe
Daci a 0 atunci /*
Date de intrare:

DatedeieSire: medie

/* o adun la sumi */
/* o numdr */

s(-s+a;
nre-nr+1;
]

Daci nr*0 atunci Scrie "Media aritmeticd = ", s/nt;


a1tfel Scrie "Media aritmeEici nu se poate calcuIa"

Sumd cifre
Se citeqte de la tastaturi un numdr natural

n. SI

se calculeze suma

cifrelor lui n.

Solulie

'f
I
i

{
I
i

Cel mai ugor se obline ultima cifrd din numlr (cifra unitdlilor): n%1-0 (restul
impdr,tirii lui n la 1-0). DupE cp utiliz[m ultima cifrl (o adiugim la sumd), nu mai
avem nevoie de ea qi o eliminlm din numer (n<-nll-O). Cifra zecilor a devenit
acum ultima cifr[. Repetim procedeul, c6t timp numlrul mai are cifre.
Date de inffare:
DatedeieSire:

Citegte n;

n natural;
s naLural; /*

suma

cifrelor lui n */

/* inig.ial suma cifrelor esLe 0 */


Cat-tim1) n*0 execute /* c6t timp mai existi cifre in n *,/
/* adun 1a s ultima cifrd a 1ui n */
{ se-s+n810;
n=n/10; )
/* elimin ultima cifrd a 1ui n*/
Scrig "Suma cifrelor = ", s;
s+-0;

REPREZENTAREA ALGORITMILOR

46

Observalie
Ini,tializareauneivariabileincaretrebuies6calculSmosum6seface

unei
adunare). in mod similar' inilializarea
intotdeauna cu 0 (elementul neutru la
(elementul
I
produs se faCe intotdeauna cu
variabile in care trebuie s[ calculam un

neutru la inmulfire).

i
I

tl

Irl

It
li
lr

Exercisii
pentru o=5672'
1. Urm6rili pas cu pas execufia acestui algoritm
2.Modificalialgoritmulastfelincdts6determinenumirulnresurnat(scrisdela
dreaptalastdnga).Deexemplu,pentrun=3201-algoritmulvaafiEaL023'
lui n'

3 M#ftai

de cifre pare ale


algJritmul astfel incflt sI determine num[rul

Perechi

toate perechile (a, b),


Fie n un num6r naturar nenul. Si se genercze
proprietateac[aIb,undeagibsuntnumerenaturalenenulemaimicidec6tn.

cu

Solu1ie

b trebuie ca a(b' O priml


in primul rdnd observdm cE pentru ca a sI divid[
naturale nenule mai mici decdt n, apoi
idee ar fi ca a s6 parcurga toatg numerele
pentrufiecarevaloare.,u,eparcurgitoatenumerelemaimarisauegalecuaqi
maimicidec6tn'formdndastfeltoateperechiledenumere(a,b)cua(b<n.
Pentru fiecare pereche vom testa dac6 a I b'
intrare: n natural;
Date de manevrd: a, b naturale;
ceruLX;
DatedeieSire: perechile (a, b) cu proprietatea
Cite$te n;
Perrtnr a <- 1, [-1 executi
Pentru b (- a, n-1 executi
b' ')'i
DacE bta=0 atunci Scrie '('' a' ' '
"
|n acest algoritm instrucfiunea Dace este executat6 de ,r* 1n-1)

Date de

deoarece:

cdnd a=1, a doua instrucliune


cdnd a=Z,a doua instrucliune
cdnd a=3' a doua instrucliune

Pentru
Pentru
Pentru

/2 oi,

n-l- on;
se executd de n-2 ori;
se executd de n-3 ori;

se

ctnd a=n-1, a doua instrucliune PenLru

executi de

se executii o date'

ale instruc,tiunii pac5'


in total: L+2+3+. . . +n-L=n* 1n-1) /2 executlri

INFORMATICA

47

O idee mai buni ar fi ca, avAnd a fixat, sd nu mai parcurgem cu variabila


toate numerele naturale de la a la n-1, ci doar multiplii lui a:
Date de

intrare: n natural
a, b naturale,.
,.

Datedemanevrd:

Citegte n;
Pentr-u a <- 1, rr-1 executi
{me-1-;
Cat-timp a*m(n-1 executi
{Scrie ' (', a, ' ,' , a'*In, ,) ,;
m <- m+1; )

In acest mod algoritmul a devenit mai eficient, ob{indndu-se direct perechile


corecte.

Divizori
Dat fiind n un numlr natural, sI se determine toti divizorii naturali ai lui n.
Solulie

ln primul rand observdm cd orice numdr natural n are ca divizori pe 1 qi pe ri


(aceqtia se numesc divizori improprii). in afard de divizorii improprii. cel mai mic
divizor ar putea fr 2, iar cel mai mare n/2. Prin urmare, pentru a afla divizorii
proprii ai lui n, vom baleia toate numerele naturale din intervalul [2, n/ 2 ] qi vom
testa pentru fiecare numdr natural x din acest interval dac6 divide sau nu pe n
(adic6 dacd restul impi(irii lui n la x este 0).
Date de intrare: n natural;
Date de manevrd: x natural;
Date de ieSire:
Divizorii 1ui n

Citegte n;
Scrie l-;

Pentru x<-2, n/2 executi

Daci nBx=0 atunci

Scrie n;

Scrie x;

/* parcurg intervalul 12,n/2) */


/* x divide n? *,/
/* x est,e divizor, il scriu *,/

Primalitate
Fie n un numdr natural, n>1, citit de la tastatur[. scrieti un program care
verific[ dacd numirul n este prim.
Solulie
Pentru a testa dacl num[rul n este prim, vom verifica dac[ are sau nu divizori
proprii (divizori diferili de 1 gi de n). Pentru aceasta vom parcurge intervalul

REPREZENTAREA ALGORITMILO]I

48

numerelor naturale

:Iffi :fi

'- ^ ld pentru fiecare numir daci


dela2la r/n ' ventlcar
--,- --;!ri-a ^ .,o,iohilx ,enumitd
; ;ine rezurtatur testului' " Ylri :":
^:*:t :.*i]H:i
este sau nu

il[5ff

IJ'ff 'JIilil:#;;il;JJ".u1,.::"^:T,:'^::313ilf,1rer'i'o"
de nevinov6!ie")'
irtil ;Hii:il|?* ii uuiuuim vatoarea (,prezum.tia
prim ii atribuim
1-

variabilei
Pe parcursut verificdrii, dac[ S]im ]]1.1t'1?l'
g6sitl)'
este prim
uu woLv
rr nu
cI n
v^r^'^a fost
(,dovada" ua
r qi avem de
valoarea
)area 0 (rroovaua
)
c-[uta (nu
unde
avem
timp
cdt
i*
Verificarea continu6
1:,':,]1Jn
n)'
lui
al
un divizor
,, c6uru(nu am g[sit inc[ "dovada vinov[fiei" -

intrare: n natural;
naEurale;
Date de rnanevrd:'d, Prim
tesEului
Date de ieSire: RezulLaLul

Date de

Citegte n;
prim <- l-; d <- 2i
*/
cit-timP d<"6 9i Prim=1 executS
am gasiL un d'ivizor
/*
atunci
Prim=0;
ntd=0
Daci
*
/* ciutam mai deParte /
altfel d <- d+1;
il
este Prim";
Daci Prim=L atu:rci Scrie n'
altfel Scrie n' nu este Prim";
tr

Am putea imbunrtaf i performanfe"

:,"::,1*t*::Y-"I:":#,;;

singurul
t#t;3:

numerele impare.
"";#rd#;;-;.'v;Ftainp'im'1,I11u-::'::,:'::"iJ*f
:ffi|^l#:l,$2,"ii "rr" prirnl, apoi vom verifica numai

n natural;
d, Prim naLurale;
Eestului;
Date de ieSire: Rezultatul
citegte n;
prim +- 1;
Daci n>2 atunci
Daci nB2 =0 atunci Prim e- 0;

Daft de intrare:
Datedemsnevrd:

aItf,el

{d +- 3;
car-timp d<{n $i prim=1 executi
Daci nBd=O atunci Prim=O;
altfel de-d+2;
)
', este pfim";
Daci prim=1 atunci Scrie n'
n'
" nu este Prim";
altfel Scrie

3.LamatematicEaiidernonstratoteoremaconformcsreiadac5unnum6rnuareniciundivizorpdni
prim'
la radicalul sdu, atunci el este

INFORMATICA

49

Exercisii

'

urmarif, pas cu pas execulia acestui argoritm pentru


n= 13 n= g $i n=49 .
2. Modificali argoritmur astfel inc6t sd afiJeze tout. nu*"r.," ,
,uru.uru i.iir"
]

".

compunere tn facto ri p rimi


Fie n un numir natural (n>1), citit de la tastaturd.
Scrieli un program care sr
afiqeze descompunerea numdrului natural
n in factori primi.
De exemplu, pentru n=720 programur va afiga
2^4*3n2*5nr, cegzl ,co
^
inseamnr cd divizorii primi sunt 2,1 gi 5,
av6nd respectiv ,nurtiprrcitll,,.'nl,
D

r:

es

u,

i.

Solugie

vom aplica

I
I
I

invifat

la matematicd: considerdm toate numerele


naturale inceplnd cu 2. pentru fiecare numir,
verificrm daci este divizor ar lui n.
ln caz afirmativ, carculam multiplicitatea acestui divizor
in n, impirgind succesiv
pe n la divizor qi calculAnd numrrul de impirfiri
efectuate, dup6 care afigim at6t
divizorul gisit, cat gi murtiplicitatea sa. procedeur
se repeti c6t timp n mai are
argoritmuL

divizori (n>1).
Date de

intrare: n nat.ural
d, m naturale;
,.

Datedemanevrd:

rr, IIl, d natural_e,.


citegte n;
d e- 2;
Cit-timp n>L executi
Daci

n%d=0 atunci.

/* d
n *,/
/* cal_culez multiplicitatea luidivide
d
in
n *./
m +_ 0,.
Cat-timp ngd=0 execuEi
{ m <- m+1; n <- n/d; }
Scrie "divizorul ,,, d, ' 'mu.l.tiplicitated
,,, rt,.

d <- d+1;

Exercilii

l. observa.ti
Yr-arip pas cu pas execulia acestui algoritm penrru n=2500.
2.
cd nu am testat nicrieri dacn a este prirn.
Nu
r"""rur, deoarece,
datoriti faptului cr atunci c6nd grsim un divizor
ar rui "riJ
n, il impd(im pe n ra
divizor ori de cdte ori este posibil, orice divizor
nou g6sit este prim.
Demonstrafi aceaste afirma]ie prin reducere
la absurd.
programul astfel incdt sr afiqeze numai
cel mai mare divizor prim.
programul astfel incat si calculeze numrrul
total de divizori,ai lui n.

3' Modificafi
4' Modifica{i
4-Informatici

:l

50

REPREZENTAREA ALGORITMILOR

Cel mai mare divizor comun


Fie n gi m dou[ numere natura]e, citite de la tastaturd. Scriefi un program care
calculeze gi si afigeze c.m.m.d.c. (n, m).

sl

Solulie

Vom aplica algoritmul lui Euclid, inv6{at la matematicd. CAt timp m*0,
imp6rfim n la m gi calcul6m restul; la pasul urmitor impirlitorul devine deimplrfit,
iar restul devine imp6rfitor. Ultimul rest

* 0 este c.m.m.d.c.

De exemplu, pentru a=495 gi b=720, cel mai mare divizor comun prin
algoritmul lui Euclid se obfine astfel:

impd4itor Rest
= 724 0+495
= 495 L+225
= 225.2+ 45
0=c.m.m.d.c.
= 45'5+
Date de intrare/ieSire.' o, rl naturale;
Date de manevrd: resE natural;
Cl,tegte n, ltli
DeimpErtit

495
720
4g5
225

1495,72A)=45

CtE-etnp m*0 exacutil

( restentm;
n(-m;
m+-rest; )
Scrle "cmmdc=" , n;

/*
/*
/*
/*

*/
calculez resEul
impirg,itorul devine deimpirlit */
*/
restul devine impdrfitor
*/
ultimul resE diferiE de 0

Exercilii

i,
2.

cu pas execu]ia acestui algoritm pentru n=L21 gi m=4950.


Observafi cd nu am testat niclieri dacl ini{ial n>m. Nu este necesar, deoarece,

Urmirifi
dactr

puts

inifial

ar

fi

mai mic decdt m, dup6 prima executare a instrucfiunii


Cat-timp valorile variabilelor n gi m vor fi

compuse subordonate instrucfiunii


interschimbate.

3. Scrieli un algoritm echivalent care se ufilizeze instrucliunea repetidvA


Executi caL-timp.
4. Modificafi acest algoritm astfel incdt sI simplifice frac{ia n/m gi sI afi;eze
5.
6.

fracfia ireductibili obtinut[.


Modificafi acest algoritm astfel inc6t s[ verifice daci numerele
prime intre ele.
Modificafi acest algoritm astfel incdt sE calculeze c.m.m.m. c.
mai mic multiplu comun al numerelor n qi m).

n gi m sunt

(n,

m)

(cel

INFORMATIC,{

51

7. Modificafi acest algoritm astfel inc6t sE determine

(D(n) (indicatorgl lui Eulera).


Prin definilie, @(n) este num[rul de numere naturale mai mici dec6t n, relativ
prime cu n. Doui numere sunt relativ prime dacl cel mai mare
divizor comun al
lor este 1.

Termen Fibonacci
Fie qirul Fibonaccis

Observafi

1,1-,2,3, 5, B, L3,2L,34,

ci primii doi termeni

egal cu suma celor doi termeni care

...

sunt egali cu ]., fiecare termen urmitor flind

il

preced.

Fie n un numir natural citit de la tastatur6. Scrieli un program care


afiqeaz6 cel
de-al n-lea termen din qirul Fibonacci.
Solulie
Observdm cI pentru a calcula un termen al qirului Fibonacci avem
nevoie de doi
termeni precedenli. vom utiliza trei variabile f 0, f1, gi f2. in
f0 gi f1 vom
retine doi termeni Fibonacci consecutivi, iar in f2 vom calcula
termenul urm[tor.
Variabilele f 0 9i f 1 vor fi inilializate cu 1 (primii doi termeni din qirul
Fibonacci).
urmdtorii termeni (de la al doilea pdni la al n-lea) ii vom calcula
succesiv. La
fiecare pas i, in f 2 vom calcula al i-lea termen din girul Fibonacci
(f 2+-f 1+f 0),

apoi ne pregitim pentru pasul urmltor


Date de

(f 0<-f l_ , fL<_f}):

intrare: n natural;

i, fO, fL, f2 nat.ural_e;


f0 e- 1; f1 +- 1,; f2 <- 1_;
citeFte n,.
Pentru i+-2, n executi
{ f2 <- fL+f0;
/* calculez termenul curent */
f0 + f1;
*/
/* ma deplasez in sir
fL *- f2; )
Scrie "Ce1 de-a1 ,,, n, ',-lea t.ermen Fibonacci est.e: ,,, f2;
Datedemanevrd:

Exercilii

l.

Urmlrifi

pas cu pas execulia acestui program pentru

n=10.

Leonhard Euler (1707-1783) a fost unul dintre cei


mai prolifici matematicieni din istorie. A scris
866 de lucr6ri gi a cigtigat premiul Academiei Franceze
de l2 ori.
5. Acest gir a fost introdus in l2O2 de citre
Leonardus filius Bonaccii pisanus (Leonardo, fiul lui
Bonacci Pisanul), pentru rezolvarea urm6toarei probleme:
sd se determine cati perechi de iepuri
se vor na$te intr-un an, dintr-o singurd pereche
de iepuri, yiincr ,a qr"ori p"rrche de iepuri dd
nastere lunar la o noud pereche d1
lepuii, o pereche devine'fetild ri d"currj" o fund, iar iepurii
nu mor pe parcursul anului.
$irul Fibonacci are multe aplicalii, in variate domenii. De exemplu,
numerele Fibonacci sunt utilizate in probleme de sortare
ii .autur.,uu in ,rru*gii a.;o".
4.

REPREZENTAREA ALGORITMILOR

52

afigeze cel de-al n-lea termen din girul


Lucas6. Primii termeni din girul Lucas sunt 1-, 3,4,'7,11-, 18, 29,4'7, "'
Modificali algoritmul astfel inc1t s6 calculeze suma primilor n termeni din qirul

2. Modificati algoritmul astfel incdt s[


3.

Fibonacci.

astfel incdt
Fibonacci, mai mic sau egal cu n.

4. Modificali algoritmul

si

calculeze cel mai mare termen din 9iru1

Existenld

la tastaturi doud numere naturale nenul n 9i p, apoi se citesc


n valori intregi. Scrieli un algoritm care si verifice dacl printre cele n

Se citesc de
succesiv

valori citite existd multipli ai lui p.


Solulie

Vom citi succesiv cele n valori intregi in aceeaqi variabil[ a. DupS fiecare citire
vom verifica daci valoarea cidt[ este divizibil[ cu p qi, in caz afirmativ, vom re]ine
faptul c[ exista un multiplu al lui p. Rezultatul verific[rii il vom reline in variabila
exista. Inilial valoarea acestei variabile este 0 (deoarece incd nu am descoperit
nici un multiplu al lui p). Dacd pe parcursul citirii vom descoperi un multiplu al lui p,
variabila exista va primi valoarea l-'
Date de

intrare: r1, P, a naturale;

r, exista naEuraf e;
Date de ieSire: Rezultatul testului;
Citegte n, p;
exista <- 0;
Pentru i+-l-, n executi
,/* ciLesc un nou Lermen
{ Cite?te a;
Dacd a8p=0 atunci /* am descoperiL un multiplu
exista e 1; )
Daci exisEa=1 atunci Scrie "Exista un multiplu a1 1ui "
p;
altfel Scrie "Nu exista un mulLiplu a1 1ui
Date de manevrd:

tr

Exerciliu

1. Urmflrili pas cu pas execulia

acestui algoritm pentru qirul de valori 6, 3,7 ,

4, L,

12,4,5.
2. Modificali algoritmul astfel incdt sI

calculeze numirul de multipli ai

existenli in gir.

6.

Frangois-Edouard-Anatole Lucas (1842-1891), matematician francez cu importante contribu{ii in


teoria numerelor.

INFORMATICA

53

Numdr divizori primi


Se citegte de la tastaturd un numlr natural nenul n, apoi se citesc succesiv
n valori intregi. Scriefi un algoritm care sd verifice dacl oricare numlr dintre cele
n citite are un numlr impar de divizori primi.
Solulie

Vom citi succesiv cele n valori in aceeagi variabil[ x. Pentru fiecare valoare
cititd vom determina numlrul de divizori primi (folosind un algoritm asemdndtor
cu descompunerea in factori primi, numai cd in loc sd afigdm divizorii primi gi
multiplicitdlile acestora, vom numdra divizorii).
Rezultatul verificdrii il vom retine in variabila oricare. Ini(ial, aceasu
variabild are valoarea 1 (deoarece incd nu am gdsit un numdr care sd nu aibr un
numdr impar de divizori primi). Dacd, pe parcursul citirii. vom intalni un numdr cu
numdr par de divizori primi, variabilei oricare ii vom atribui valoarea 0.
Date de intrare: n, x nat.urale;
Date de manevrd: i, d, nr, oricare naturale;
Date de ieSire: Rezult.atu1 Lest.ului;

Citegte n;
oricare e- 1,.
Pentru i+-1, n executE
{Citegte x;
*/
/* citesc o noua valoare
nr +- 0;
,/*numirul de diwizori primi ai lui x este inilial 0
d <- 2;
/ *det.ermin divizorii primi ai l_ui x
Cdt-timp x>L executi
{Daci x?d=0 atunci /* am descoperit un divizor */
inr +- nr+1;
/* numir acest divizor prim, apoi
i1 elimin din x, prin impartiri repetat.e * /
CAt-timp xBd=O executi x=x/di )
d e d+l-; ]
/* caut. divizori mai d.eparLe */
Dac6. nr * 2 = 0 atunci ori_care (_ 0;
,/* pentru cd am gasit o valoare cu numdr par
de divizori primi */
)

Daci oricare=1 atunci Scrie


altfel Scrie

,,DA,,;
,,NU,,;

Vocale
se citeqte de la tastaturd o propozi{ie scrisr cu litere mici, terminata cu ,
scrieli un algoritm care calculeaz[ gi afigeazi numirul de vocale din propozilie.

REPREZENTAREA ALGORITMILOR

54
Solupie

Citim succesiv caracterele din care.este constituitd propozilia, pAnI la sfdrgit, in


aceeaqi variabild (sd o numim c). Pentru fiecare caracter citit, verific[m dacS este
vocalS (' a',' ',' i' o' o' sau' u' ) $i dacd da, il numdrim.

c caracter i
in c vom cit.i succesiv caracLerele din care este
constituiEi propozilia */
/* numiruf de vocale */
Date de iesire: nr natural;
*
nr(-O;
/ ini!ia1 numdrul de vocale citiLe este 0 *,/

Date de intrare:

Executi
{

/*citim un caracter
Cite$te c;
Daci c='a' 8au c='e' sau c='i' sau c=ror sau c='u'
atunci nr<-nr+1;
/* c este vocaI5, o numir

cAt-timpc+'.'i
Scrie "Numirul de vocale este ', r:r;

3.LL. Probleme propuse


1.

Se consider6 urmdtoarea secven{5 de instrucliuni, scris[ in pseudocod:

n, m natural-e;
/*ngimsunt
Cat-tiry) n*m executi
Daci n>m atunci n<-n-m,'
altfel m+-m-n;
Scrie n;
Date de intare/ieSire.'
CiteFte rr, rni

diferit,e de 0

*./

a. Ce rezultat se scrie pentru n=72 $i m=180? Dar pentru n=3 0 $i m=3 0?


b. Dali exemple de valori ce ar putea fi introduse pentru n gi m astfel inc6t

c.

algoritmul sd afiqeze valoarea 13.


Care este efectul acestui algoritm?

2. Se considerl urm5torul algoritm descris in pseudocod:


Date de intrare: a, b naturale,'
Date de ieSire: c natural;

Citelte a, b;

ceO;
C6.t_tinp a*0 Fi b*0 executi
{Dac5. at10>b810 atunci c<-c*10+a%10;

altfel
a+-al10; be-b/10;
a. Ce valoare va

avea variabila

c<-c*10+b810;
)

dupd execulia acestui algoritm dacl valorile

citite pentru variabilele a gi b sunt 14624 qi, respectiv , 8632?

INFORMATICA

55

b. Daci se cite$te

c.

valoarea

7382 pentru variabila a, ce valoare am putea

introduce pentru variabila b astfel incdt valoarea calculatd de algoritm in


variabila c sd fie 2938?
Dali exemplu de doud numere naturale de cel putin doud cifre, care ar putea

fi

introduse pentru variabilele a gi b astfel inc6t valoarea calculatE de


algoritm in variabila c si fie 1?
3. Se consideri urmitorul algoritm descris in pseudocod:
Date de intrare: n
Date de ieSire: d.

Citegte n;

natural;

natural i

d<-2;

CiE-timp n>1 executi


Daci ntd=O atuncL ne-n/d,.
altfel d+-d+1;
Scrie d;
a. ce valoare va fi afigat[ dacr valoarea cititi pentru variabila n este 72 0?
b. Dafl exemplu de valori (cel pufin dou6) care ar putea fi introduse pentru

variabila n, astfel incdt valoarea afigatd de algoritmii fie


Care este efectul acestui algoritm ?
Se considerl urmitorul algoritm descris in pseudocod:

c.

4.
I natede intrare: !!., b naturale;
Date de ieSire: x naEural;
Date de manevrd: p natural;
Citegte n, b;
x+-0,. tr<-1 ;
CAt-tinp n>0 executi
t x+-x + tr* (n tj-0)
P(-p*b; n+-n/L0i

/*

1r_.

2S}r39 */z

Scrie x;

a. Ce valoare va fi afigati dac[ se citesc valorile L032 gi 4?


b. ce valoare trebuie sd introducem pentru variabila b astfel
n=407

incdt pentru

sd se afigeze valoarea 3 3 1?

c. Care este efectul acestui algoritm ?


5. Se considerd urmdtorul algoritm descris in pseudocod:
Date de intrare:
b naturale,.
Date de iegire: x natural i
Date de manevrd: i nat.ural ;

at

Citegte a, b;
i<-a; x+-o;
Ctt-tinp i<=b executi
{ x+-x+i;
i+-i+1; )
Scrie x,.
a. ce valoare

va

fi

afigatE pe ecran dac6 se introduc varorile 1


si i.0?

56

REPREZENTAREA ALGORITMILOR

b. Ce valori ar putea fi inffoduse

pentru a qi b astfel incat programul s6 afigeze


valoarea222
c. Dali exemplu de valori distincte care ar putea fi introduse astfel inc6t.
algoritmul si afigeze valoarea 0.
d. Scrieli un algoritm echivalent mai eficient. Doi algoritmi sunt considerafi
echivalenti daci pentru orice date de intrare ei produc aceleaqi rezultate.
6. Care dintre urmitoarele secvenre de instrucliuni atribuie variabilei intregi u
valoarea primei cifre a numIrului natural reprezentat de variabila x ?
a.

ue-x/10;

b. ue-x,.

Cat-tiq) 'u)L0 execut5 ue-u810,.


c. ue-x810; d. cat-tirE x)10 executi x+_x,/LO;
7.

u(-x;
Care dintre urmltoarele secvente afigeazi cel mai mare divizor propriu al
num[rului natural neprim memorat in variabila x?
a.

c.

d<-2;

C6t-tinp xtd=O executi

de-2;

CAt-tiryr xBd*O executi

de-d+1;

de-d+1;

Scrie x/d;

Scrie x/d;

b.

d.

a<-z;
I Executi
I ctt-tirp ded+1;
xtd*O;
l;
scrie
x/d;
I

d<*x/2;

Cit-timrr xBd*O exequti


d(-d-1,-

8. Ce valoare iniliall ar trebui sI aibl variabila

,.

x astfel incat dup6 executia


urmitoarei secven,te de instrucfiuni sI se afryeze valoarea 640?

Ia*zi
l,
t1

[
I

cat-tirp

d<50 executi
{ x(-x*d,. d+-d*d;

scr5.e x;
9. Fie n un numit natural nenul

gi p un num5r prim. Algoritmul urm[tor trebuie s6


determine multiplicitatea lui p in n. ce gregeli conline algoritmul?

rr, p, m naturale;
Citegte n, p;
C&t-timp nBp=Q executi me-m+l; n(-nlp;
Scrie m;
I0. Numdr perfect

Un numlr este perfect dacd el este egal cu suma divizorilor s6i (exclusiv el
insuqi). Scriefi un algoritm care sd testeze dac[ un numir natural dat este perfect.

.,,

1l
,l

56

REPREZENTAREA ALGORITMILOR

b.

Ce valori ar putea

fi introduse pentru a

gi

astf'el incdt programul

si

afigeze

va\oarea 22?

c. Dafi exemplu de valori distincte care ar putea fi introduse astfel

6.

(
I

incat
algoritmul sd afiqeze valoarea 0.
d. Scriefi un algoritm echivalent mai eficient. Doi algoritmi sunt considerafi
echivalenli dacd pentru orice date de intrare ei produc aceleaqi rezultate.
Care dintre urm[toarele secvente de instruc{iuni atribuie variabilei intregi u
valoarea primei cifre a numdrului natural reprezentat de variabila x ?
a.

ue-x,/10;

b. u<-x;

CAt-tirnp u)10 executi u<-u?10;


d. Cat,-timp x)l-o executi xe-x/10;
u(-x;

c. u<--x*10;
7.

Care dintre urmdtoarele secvenle afiqeazd cel mai mare divizor propriu al
numdrului natural neprim memorat in variabila x?
a.

C,

d+-2;

Cat-tiq) xtd=O executi

d<-2;

C6t-timp x?d*O executi

d<-d+1;

d<-d+1;

Scrie x/d;

Scrie x/d;

b.

d.

d+-2;

d<-x/2;

Executi de-d+1;
CAt-timp x%d*O executi
cAt-timp xtd*O;
d+-d-1;
Scrie x/d;
Scrie d;
8. Ce valoare initial[ ar trebui si aibl variabila x astfel incat dupd executia

urmltoarei secvente de instrucliuni


d<-2;
CAt-tinp d<50 executi
{ x<-x*d,' de--d*d; )

s6 se afigeze valoarea 6 4 0 ?

Scrie x;

n un numlr natural nenul qi p un num6r prim. Algoritmul urmf,tor trebuie sd


determine multiplicitatea lui p in n. ce gregeli confine algoritmul?

9. Fie

n, p, m naturaLe,.
Citegte n, p;
Cit-timp n*p=Q executi
Scrie m;

m<-m+1; ne-n/p;

10. Numdr perfect

Un numlr este perfect daci eI este egal cu suma divizorilor sdi (exclusiv el
insuqi)' Scrie{i un algoritm care sI testeze dacl un numdr natural dat este perfect.

INFORMATICA

57

lL. Numere prietene


Doud numere naturale a gi b se numesc prietene dacd a este egal cu
suma
divizorilor lui b (exclusiv b), iar b este egal cu suma divizorilor lui a (exclusiv
a).
De exemplu a=220 9i b=284 sunt prietene. Scrieli un program care
s6 determine
primele trei perechi de numere prietene, cu acb.

filz.

e,i*,
Fie

n_umdr

un numtrr natural, x>2. Scriefi un algoritm care

prim, mai mic dec6t

si determine cel mai mare


x.

gi cer mai mic numrr prim, mai mare decat

&pot,naro*
Fie n un num5r natural, citit de la tastaturd. Scriefi un algoritm care
testeazl
daci n este palindrom (citit de la stdnga la dreapta gi de la dieapta la
st6nga esre
acelagi). De exemplu 13 31, L4541sunt palindroame.

14: Maxim Si minim

r'"-'$e

citeqte de la tastaturd un numdr naturale nenul n, apoi se citesc


succesiv n
valori naturale. Scriefi un algoritm care sd determine gi cel mai mare gi
cel mai mic
element din cele citite.
15. Sumd Si produs

Se citegte de la tastaturd un numlr natural nenul n, apoi


se citesc succesiv n
valori intregi. Scrieli un algoritm care determind gi afigeazd
suma valorilor pare
citite gi produsul valorilor nenule.
16. Palindrom print

Se citeqte de la tastaturl un numir naturale nenul n, apoi


se citesc succesiv n
valori naturale' Sr se verifice dacd printre valorile citite exiita
un palindrom prim.
17. Cifre nenule
Se citeqte un

numir natural nenul n, apoi se citesc succesiv n valori intregi.


n valori citite are exact 3 cifre nenule.

se verifice dacd oricare dintre cele

Sd

18. Cifra 0

Scriefi un algoritm care sd citeasci de la tastaturi o succesiune


de valori
-1 gi care si determine cle cdte ori apare cifra 0 in

naturale, panr la citirea valorii


scrierea numerelor citite.

\W

Cifra de control

Fie n un numlr natural' citit de la tastatur5. Scriefi


un algoritm care calculeaz6
gi afigeazd cifra de control a lui n. Cifra
de control a unui num6r natural se obfine

calculdnd suma cifrelor^ numrrului, apoi suma cifrelor


sumei q.a.m.d. pana ta

ob{inerea unei singure cifre.

58

REPREZENTAREA ALGORITMILOR

De exemplu, pentru

rv293

calculEm suma cifrelor 2+9+3=1-4. Cum suma nu

este formatd dintr-o singurd cifr6, repet6m procedeul:

l-+4=5. Deci 5 este cifra de

control a lui 293.

j20.

'

Ndtrate perfecte

Se citegte de la tastatur[ un numdr natural n. Scriefi un algoritm eficient care sd


afiqeze toate p[tratele perfecte mai mici decdt n.

2I. Numere piramidale


Numerele piramidale se definesc ca fiind sumele parliale ale qirului pitratelor
perfecte L, 4, 9, L6, 25.... De exemplu, primele 5 numere piramidale sunt l-, 5,
14, 3 0, 55. Scrieli un algoritm care sd afigeze primele n numere piramidale.
22.

Fraclii

Fie n un numdr natural nenul. Scrieli un algoritm care sd determine numirul de


fractii ireductibile care au numitorul qi numdrltorul din mullimea 11,2,..., n). De
exemplu, pentru n=3, se pot forma fracliile ireductibile
L/2, L/3,2/L,
2 / 3, 3 / t, 3 / 2 ), deci algoritmul va afiqa valoarea 7.

lt/L,

23.

$ir

S[ consider[m urmltorul gir definit prin recurenld astfel se=f, sr=!, s2=1-, iar
s,=s.-1+l*sn-2-sn-3 (pentru n)3). Scrieli un algoritm care s[ afiqeze al n-lea
termen din acest qir.
24. Medie semestriald

n, numdrul de note la oblinute de un elev la informatic[ pe parcursul


semestrului, apoi se citesc cele n note. Se citegte apoi nota oblinut6 de elev la tezd.
Se citesc

Scrieli un algoritm care

sd calculeze media

semestrial[ a elevului.

25. C.m.m.d.c.

n, un num[r natural n nenul, apoi se citesc n valori naturale. Scrieti


un algoritm care sI calculeze cel mai mare divizor comun al celor n numere citite.
Se citegte

26. Numdr
Se citeqte de la tastaturi o succesiune de caractere, terminatl cu spaliu ( , ').
Scrieli un algoritm care sI verifice dac6 succesiunea de caractere cititi poate fi
considerati un numdr natural scris in baza 10. Modificali algoritmul astfel incAt si
testeze dacd succesiunea de caractere citit6 poate fi considerati un numlr real.

27. Cuvinte
Se citegte de la tastatur6 o propozilie constituitd din cuvinte separate prin unul
sau mai multe spalii. Sffirgitul propoziliei este marcat de intfllnirea caracterului '.'.
Scrieli un algoritm care determin[ qi afigeaz[ numErul de cuvinte din propozifie.

INFORMATICA

(@

59

4. EXEMPLE DE IMPLEMENTARE

in capitolul precedent, am descris algoritmii in pseudocod, un ansamblu de


convenfii uqor de inleles gi de utilizat de cdtre oameni. Din picate, calculatoarele
nu ,,in[eleg" (deocamdatd) un astfel de limbaj. Pentru a rezolva o problemd cu
ajutorul calculatorului trebuie sd transpunem (sd implementdm) algoritmul de
rezolvare a problemei intr-un limbaj de programare.
Descrierea unui algoritm intr-un limbaj de prograinare se nume$tep rogrant.

Pentru exemplificare, vom implementa in limbajul de programare pascal qi in


limbajul de programare c++ trei algoritmi fundamentali, invdla{i in capitolul
precedent.

Algoritmul lui Euclid


Algoritmul lui Euclid determini cel mai mare divizor comun al doud numere
naturale.

Limbajul Pascal

Euclid;
var n, m, t, integer;
progrLm

begin

writ.el'n= ') ; readln(n) ;


write('m=' ) ; readln(m) ;
whilem<>0do
begin

r:=n

mod m;

Limbajul C++

#incl-ude <iostream.

int maino
{

int n, m, r;
cout<< (rf- , ,. cin>>n,.
cout,<<"m- "; cin>>m;
while (m)
{;=nBm;

n: =m;
m:

n=m;

=r;

end;

writeln('cmmds=', n);
end.

h>

m=r.

cout<< " cmmdc=,'<<n1<end1


return 0;

,.

$irul Fibonacci
in capitolul precedent am elaborat algoritmul de determinare

a celui de-al n-lea


termen din girul Fibonacci. Amintim cd girul Fibonacci este generat dupd regulile:

ft=f z-L;
f1=f.-1+fr-2,

pentru orice n>2.

60

EXEMPLE DE IMPLEMENTARtr

Limbajul Pascal

Limbajul C++
#include <iostream.h>
int maino

Drogram Fibonaccj-;
vatr n, i, fl , f2, f3: int.eger;
begin

writ.e('n=' ) ; readln(n)
f2:=L; f3 : =1;
for i:=2 to n do

int n, i, f]-, f2, f3;


cout<< un- u ,. cin>>n;
f2=f3=t;
for (i=2; i<=n; i++)
{f1=f2;

begin

f!:=f2;
F1 .. -$')
-LJ

LA

Fa-4't.LJ

f3:=f!+f2

endi

LL-

f3=fL+f2; l

cout.<<f 3<<endl

wriEeln(f3);

return

end..

0,.

Putere
Si implementdm in limbajul de programare Pascal gi C++ algoritmul
x" (unde n este un numer natural, iar x un numAr real pozitiv).

de calcul

al lui

Limbajul Pascal
Drogram Fibonacci;

var n, i: integer;
x, p: real;

begin

writ.e('n='
wriEe('x='

p:=L;

) ; readln(n)
) ; read.Ln(x)

for i: =1 to n

do
p: =p*x,.
writeln (p: 10 :2 ) ;
end.

Limbajul C++
#.i-nclude <iost,ream.

int

main

h>

()

int n, i;
f loats x,

p=1,.

couE<<'n- "; cin>>n;


cout<<'x- '; cin>>xi

for (i=1; i<=n,.i++;


P*=x;
cout<<p<<end1;

return
)

0,.

6t

INFORMATICA

ANEXA 1. SISTEMB DE NUMERATIE


' :,:.'gn.storii ae iiAreiri,lte.;si'aicanit dintr-o mir4ime finitd de simboluri
qi un set de reguti de reprezentare a numerelor cu ajutorul simbolurilor
respective:,Numaru!.d. simbo.luri,Constittliie,bazg Sistemului de numera[ie..

fi

Sistemele de numerafie pot

clasificate din punctul de vedere al semnificafiei

poziliei simbolurilor in reprezentarea numerelor astfel:


. sisteme de numerafie pozi;ionale - in reprezentarea numerelor, pozilia
sirnbolurilor este determinant[; de exemplu, sistemul de numera{ie zecimal.
sistemul de numera[ie binar, sistemul de numera{ie Fibonacci etc.
. sisteme de numerali e nepozipionale - pozilia sirnbolurilor nu este detenninantd
in ce priveqte valoarea acestora in cadrul reprezentirii numerelor; de exemplu,
sistemul de numerafie roman.

Sistemul de numeralie roman


Sisternul

de

numerafie roman folosegte pentru reprezentarea numerelor

simbolurile: r, v, x, L, c, D, M.
Valoarea simbolurilor in sistemul de numeratie zecimal este:

Simbol

Valoare

l_0

50

100

s00

1000

Reguli de calcul al ualorii numerelor reprezentate in sistemul de numeralie rotnan:

l.

Un numdr format din unul sau mai multe simboluri identice are valoarea egal6 cu
suma valorilor simbolurilor componente.
De

exemplu: II=I+I-=L+I=2;XXX=X+X+X=10+10+10=30

2.Dacd un simbol cu o valoare rnai miciprecedd un simbol cu o valoare mai mare,


atunci din valoarea mai mare se scade valoarea mai mic6.
De eremplu:

IV=V-

1= 5 - L=4;

VL=L-V=5 0 - 5=4 5 ; CM=M-C=

1000

l- 0 0 = 9 0 0

3.Dacdun simbol cu o valoare mai mic[ succedd un simbol cu o valoare mai mare,
atunci cele doud valori se aduni.
Deexemplu:

VI=V+f=5+1=61 6a=g+11=1-00+10=110;
MLX=M+L+X=10

0+5 0+1 0=10

60

Se.o. servi cd sunt folosite puline simboluri (7) 9i ci regulile de calcul al valorilor
nu sunt nioi multe (3) gi nici cornplicate. Cu toate acestea apare o probleml care face
ca acest sistem de numerafie sd nu fie folosit; problema constd in faptul cd din cele
3 reguli de mai sus NU TezuIILLINICITATEA reprezentdrii unui numdr.

ANEXI,

52

Altfel spus, num6ru1 47 poate fi (corect) reprezentat pri,r: XLVII. XXXXVIi,


XLVXII. Acest fapt constifuie una din deficien{ele esentiale ale sisternului de
numeralie roman.

Observali, de asemenea, cI sistemul de numeratie roman nu este pozilional'


De exemplu, in reprezentdrile nurnerele IV qi vI valoarea sitntrolurilor r 9i V este
aceeaqi (1, respectiv 5) independent de pozilia lor in cadrul numdrului.

Sisteme de rutmeralie Pozilionale

PAni acum, 1a matematicS, am utilizat in speciai sisteme cie numcralie


pozilionale pentru care poziliile simbolurilor corespund puterilor bazci sisternului
d. nr,r.rufi*. Iv{ul1imea simbolurilor utilizate pentru reprezerltarea nltlrereior
depinde de baza sistemului de numerafie. De exemplu. in sistetrr.il c1e nuinera{ie
zliimal se utilizeaz6 10 simboluri: 0, 1, 2. 3, 4,5, 6, ?, B' 9: in si-stemul de
numeralie ltinar seutilizeazl doud sirn'ooluri: 0, i: in sistemril de nutrlcraiie ocral se
utilizeazd 8 simboluri: 0, l-, 2, 3. 4. 5, 5, ?: irl sistemul de numeraiie ite:to:ecirtutl se
ulilizeazd 16 simboiuri: 0. 1. 2,3,4,5.6,1,8. 9. A, B, C, D. E' r' Semnificalia
zecimald a siinbolurilor A, B, C. D' E' F este, in ordine, 10, 1l-, 12. t3 ' i4, 15'
SI notdrn cu b baza sistemului de numeralie (b N' b>1)'
Regula de reprezentare a nunrcrelor ?n baza b
Fiecare cifrd dintr-un numdr valoreazd de b ori mai mult decAt cifra din
dreapta sa, deci cifrele numdrului, <ie Ia dreapta spre st6nga, corespund

pozilional puterilor bazei sistemului de numera{ie:


'
i*-r..^..*1tis7y1!2;..yo151oxo'bn+no-r'bo-1+. " '+xr'b+xo+yrtb-1+' ' '+yr'b-'

Operalii de conversie
Conversia numerelor din baza L0 tn baza b
Regula de conversie a nunterelor nuturale

Pentru a converti un numir natural din baza 10 intr-o bazdb (be N,


b>1-), vom face irnpS4iri succesive la b p6n6 c6nd ob{inem cirul 0. La
care se converte$te; in continuare, la
primul pas
- deimp[rfitul este numirul
fi..ur. pus, catrl 9: tl impd(irea precedentS devine deimparlit.
Reprezentarea numsruluiinbazaU se obline considerAnd resturiie in ordinea
invers6 oblinerii lor.
Exentpltt
Pentru a converti n= l,2 6 3

deirnpdrlit

cdt

1263 =16*?8

78 =L6*
4 =l-6*

rro

rest
4
0

1tr
f J

+L4
+4

I in baza 15 vom face irnp5rliri succesive la l- 5:

INFORMATICA

63

ConsiderAnd resturile in ordine inversd oblinem l-263

1.191=4EF 116y.

Regula de conversie a numerelor reale din intervalul ( O, 1)


Conversia numerelor subunitare din baza 10 intr-o bazdb (bN. b>1),
se realizeazd prin inmulliri succesive cu b, pdnd c6nd se obtine o perioadi

sau pind cind partea frac[ionarl a rezultatului este 0. La primul pas


deinmullirul este numirul care se converte$te; in continuare, la fiecare pas,
partea fracfionard a rezultatului precedent devine deinmullit. Reprezentarea
numSrului in baza b se obline consider6nd cifrele de la partea intreagd a
rezultatelor in ordinea obginerii lor.
Exentplu
Sd convertim

n=0 , 312

5 11e1

inbaza 2:

0,3125 x2=0,625

0,625 x2=L,25
4,25 x 2 = 0,5
0,5
x 2 = L,0
Am oblinut partea frac{ionarl 0, deci

,33-25 rror=0, 0101121

Regula de corwersie a nunrcrelor reale

Pentru a converti un numdr real din bazatO in baza b (beN, b>1), se


convertesc separat partea intreagl gi partea fraclionarS, conform regulilor
anterioare.
De exemplu, L2 63, 3125rror =1 0 01110111 1, 01

0 1 121.

Conversia numerelor din bazab tn baza ]-0.


Pentru a converti un numdr din baza

b (beN, b>1) in baza 1-0 utilizdm

dezvoltarea dupi puterilebazei sisternului de numerafie gi efectulm calculele.


Exentple
1.
).

1AFa15y

=1.162+A.16+F=431 rrcr

11-001-, L07 p1=24+23 +1+2-t+2-3=25, 625

11e1 .

Conversia numerelor din bazab fn bazab'


Conversia numerelor din baza b in baza b' (b, b, N, b, b, >1) se realizeazd
prin intermediul bazei 10: realizim conversia din baza b in baza 10, apoi din baza

10inb'.

Conversii tntre baze puteri ale lui 2

Datoriti faptului cI, deocamdati, calculatoarele utilizeazd infonnalii


in formi binar6, sistemul de numerafie binar prezintl pentru

reprezentate

informaticieni o importanli deosebiti. Calculatoarele par a se descurca fcrarte uqor


obignuiesc mai greu. Frecvent,

cu giruri de cifre binare, dar oamenii se

64

informaticienii apeleazl

la

conversia girurilor binare

in

valori octale

sau

hexazecimalel.

Din fericire, operatiile de conversie intre bazele 2 qi B, respectiv 2 qi 16

se

rcalizeazdmult mai simplu conversiile intre dou6 baze oarecare, datoritl faptului cd
atat B, cat gi 1-6 sunt puteri ale bazei 2.
Regula de conversie a numerelor din baza B

(1-

6) tn baza 2

pentru a converti un numlr octal (hexazecimal) in binar vom inlocui fiecare


cifr[ numlrului cu reprezentarea sa binarE pe 3, respectiv 4 pozi]ii'
Exemple

1. L68AF(16r = 101-10 l-000 1010 L111 (2)


2. 752L0,23LG1 = 111 LoL 010 00L 000' 0l-0 011-01L

Qt

Regula de conversie a numerelor din baza 2 tn baza B ( L 6 )

Pentru a converti un numir binar in baza 8 (16) vom asocia cifrele binare in
grupe de cflte 3, respectiv 4 incepdnd de la dreapta spre s6nga pentru partea
intreagl qi de la stinga spre dreapta pentru partea zecimalI, completdnd, eventual'
ultimele grupe cu zerouri nesemnificative.
Exemple

1. LLo L0L0 1110 1_010 L000 0010, 1l-LL 0000 0001 l-1rzr=6A882,F01C1161
2. L 1'tl 001 010 000 110, 110 101 1-ot=!71206'654$t'
pentru aceste conversii este util tabelul urmltor, care confine reprezentarea
binar6 a valorilor {0, 1, ..., 15}:
Sistem
zecimal
0
1
2
3

Sistem

binar

Sistem
zecimal

t_

10
L1

6
7

Sistem

Sistem
zecimal

Sistem

l-00
101

binar
1000

l_001

L1_0

10
11

101_0
101_L

binar

1L1

Sistem
zecimal
L2
13
L4
L5

Sistem

binar
110 0

1l-01
l-1L0
1111

Sistemul de numeralie Fibonacci


Cu ajutorul termenilor qirului Fibonacci putem defini un sistem de numeralie
pozilional foarte interesant. Mulfimea simbolurilor care reprezin6 cifrele acestui
sistem de numeralie este {0, 1}, decibaza sistemului de numerafie este 2. Regula
de reprezentare a numerelor naturale in sistemul de numeralie Fibonacci este de a
asocia pozilional cifrelor numlrului termeni ai girului Fibonacci, incepdnd cufi, 9i
nu puteri ale bazei.
AnAn-l.,.Al

l.

= an 'fn

* an-t 'fu

+ ... + at

'ft

De exemplu, informaticienii exprim6 uzual adresele de memorie in hexazecimal, nu ca un gir de


32 de cifre binare.

65

INFORMATICA

Pentru ca reprezentarea numerelor naturale in sistemul Fibonacci sE fie unicl


impunem condilia ca oricare dou5 cifre consecutive sI nu fie egale cu L. Condilia
este naturalI, deoarece o succesiune de forma ...011... poate
inlocuit6 cu

fi

...100...

Exercilii
l. S[ se efectueze urmdtoarele

conversii din baza ]-0 in baza specificati:

a.54L2,65536, 256,65535 in baza l-6


,)

3.

b. 327 68, 327 67, 3L2, O . 317 5in baza 2


c. 49,720, L53 inbaza-|.
urmltoarele conversii din baza specificatd in baza l-0:
a. A0l-5, FFFF, l-00 din bazaL6
b: l-0001-01, 1000000, LLl-111, 0.101-L dinbaza2
c. 3002, L00, 333 dinbaza 4.
Si se efectueze urmltoarele conversii intre bazele specificate:
a. L10l-01-0101-0L din baza 2 inbaza 16 qi in baza 8
SE se efectueze

b.75620L din baza B in baza 2


c. a09ce3 din baza ]-6inbaza2
d. 562 din baza 8 in baza 2,7 , L0, L6.
aTScrieli un algoritm care si citeascd un numir natural b (2SbS9) qi un
\-_-_-,/
numir natural x scris inbaza b. Algoritmul va afiga valoarea numdrului x
scrisdin baza 10.
un algoritm care sd citeascl un numdr narural b (2Sb<9) Ei un
num[r natural x scris in baza i-0. Algoritmul va afiga in ordine inversl
cifrele numirului x scris ?n baza L0.
6. Scrieli un algoritm de conversie a numerelor naturale din sistemul de
numera{ie zecimal in sistemul de numera}ie Fibonacci.
7. Scriefi un algoritm de conversie a numerelor naturale din sistemul de
numeratie Fibonacci in sistemul de numeralie zecimal.

(\"ri"1i
-

Informatic6

66

ANEXA 2. SOLUTII $I INDICATII


4.1. Nofiunea de algoritm
Expresii
; 2. t5:3.adev5rat; 4.fats; expresia testeazd dacl valorile memorate
in variabilele a qi b Au aceeaqi paritate.
5. a. 4ac nu poate fi numele unei variabile (numele unei variabile nu incepe cu o
cifri); aparent a fost omis operatorul de inmullire;
b. nu exist6 operatorul ^;
c. operatorul qi se aplici operanzilor logici;
d. operatorul relafional nu poate fi utilizat inl6n{uit;
e. operatorul t se aplic[ numai operanzilor intregi;
f. operatorul t se aplic[ operanzilor logici.

1.

1-1-

a(x gi x(b
a(x gi xSb sau c(x qi x(d
8. x82=0 qi x>9 9i x<1-00
9. a<b gi b<c
10. an84=0 9i ant100*0 sau anB400=0
6.
7.

11.

x-y-1- sau y-x=l-

12.

x*y*O

13. a, b.

4.2. Reprezentarea

algoritmilor

Structura secvenliald

l.

a=23

b=7; 2.341-2: 3. -6;

4.b

5.
Date de intrare/iegire: xl , x2 , x3
Date de manevrd: aux real;

x4

, x5 reale,.

Citegte xL, x2, x3, x4, x5;


aux(-x1 ; x1"+x2; x2e-x3; x3+-x4; x4ex5i xS+-aux;
Scrie x1 , t ',x2, , ,, X3, , ,, x4, , ,, x5;

6.

intiare: a, b, c reale;
ieSire: aria, p, sp reale,.
CiteSte a, b, c,.
p<-a+b+c i sp+-p/2; ariae-' sp* (sp-a) * (sp-b) * (sp-c)
Scrie p, ' ',aria;
Dqte de
Date de

INFORMATICA

7.
Date de
Date de

intrare: D, H reale;

real;
ieSire: v
Citegte D, H;
/* Lransform distanla in metri 9i timpul ln secunde */
DeD*1000; HeH*3600;
v+-D/H;

Scrie v;

8. Utiliz[m formula vitezeiv=s/ t = t=s /v.Cei doi colegi se intdlnesc dupl


acela$i interval de timp, in care primul a parcurs distanla d1, iar cel de al doilea
distanla D-di-. Obfinem un sistem de ecualii prin rezolvarea clruia determindm d1

v2 real; D real;
d1 real; /*disEanl.a parcursi de primuL*/
t reaf; /* timpul dupi care se intdlnesc */
Cite$te D, v1, v2;
d1<-v1 *D,/ (vl"+v2 ) ; t<-d1 /v1 ;
t;
Scrie "d1= d1, "t=
v1 real-,'

9.

xA, yA, xB, yB reale,'/*coordonaEele punctelor*/


/ *lungimea segmentului AB*/
L rea] ;
xB,
Citegte xA, YA,
YB;
Date cle intrare:
Date de ieSire:

t e-{ (xa-xB) * (xA-xB) + (yA-yB) * (yA-yB)

Scrie "L- ", L;

10. SA urmdrim,,evolufia" capetelor balaurului:

Nr. capete

Moment

Explicafie

Inilial
Ziua 1

Avea 6 capete, Fdt-Frumos i-a tdiat un cap, deci au


rdmas 5

Noaptea I

1-1

Ziua2

10

Noaptea 2

1,6

Ziua3

15

capului tdiat au crescut 6, deci in total 6+5,


iar in locul capului t[iat au crescut 6, deci in total 16
Avea 11 capete, Fdt-Frumos i-a t[iat unul, deci au

in locul

rdmas 10

in locul capului tliat au crescut 6, deci in total 6+10


Avea 16 capete, F6t-Frumos i-a tdiat unul, deci au
rdmas 15

Observdm cd in ziua n balaurul are


Date de
Date de

5*n capete.

intare: n naEural;

iesire: nr natural,' / * numirul de capeLe x /


Citegte n;

nrt-5 *n,'
Scrie "Dupa ", n, " zile bafaurul va avea ", Dr, " capete";

ANEXE

68

Structura alternativd
3.

a, b lntregi ;
I Oa" de iegire: rezultatul testului
I ctte$te d, b;
I oace a-b=1 sau b-a=l- atunci Scrie
altfel Scrie
I

l' Oor, d,e intrare:

4.

Datedeintrare:

NDA";

'li\tru";

,a, b, c reare;

Date de manevrd: s , P, d reale;


Date d.e ieSire: rezultatul tesLului

Citegte a, b, ci
s+--bla,' p+c/a; de-b*b-4*a*c;
Daci d<0 atunci Scrie "Ecuafia nu are rEdicini reale";
a1tfe1

{Scrie "Ecualia are rddicini rea1e.";


Daci d=0 atunci Scrie "RidEcinile sunL egale';
a1tfel Scrie "RSddcinile sunE distincte",'
Daci p<0 atunci Scrie "R5d5cinile au semne corttrare"
a.ltfe1
{Scrie "Rid5cinile sunt " i
Daci s>0 atunci scrie "Pozitive";

aItfe1

DacE s<0

atuqci ScrLe "neglative";


altfel scrie "nule",'

)
Date de inffare:
Date de manevrd:

x natural;
c1, c2, c3 naturale;

Citegte x;
,/* extrag cefe 3 cifre ale numdrului *,/
c3+-x810 ; c2<-x/LOZ10; c3<-xlL00 i
Daci c1<c2 Scri,e c2, c3;
a].tfeI Daci c2<c3 atsunci Scrie c1, c3;
altfeI Ssrie c2; c3;

6.

c2 , c3 caracter,'
nr /*numdrul de cifre disLincte */
citeste c1, c2, c3;
Dacd. cl=cZ qi c2=c3 atunci nr<-L;
altfel
" Daci c1=c3 sau cL=c2 sau c2=c3 atunci nrl-2;
altfel nrF3;
Scrie nr,'

Date de intrare:

DatedeieSire:

cl ,

69

INFORMATICA

7.

Datedeintrare:ag, arn, as, bg, bm, bs reale;


Date de ieSire: cg , cfil, cs reaLe;
citegte ag, am, as, b9, bm, bsi
:
cs(-as+bs; cm+-o; cg(-0 ;
Daci cs>60 atunci {cs<-cs-60, cmel;}

cm+-cm+am+bm;
Daci cm>60 atunci {cm+-cm-60, cgi<*1 ;}

'

,'

'

cg+-cg+ag+bg;

o""a
atunci ca+-cg-360 i
Scrie"gr36i
cg, ' grade ',cfi, ' minute ',.cs,.',

secllnde:i

8.

a, b, c reale;
Datedeiesire:rezu1tat,u1testu1ui+iari,a.',.,.
Datedeintrare:

Daci a*a=b*b+c*c atunci


Scrie "Triunghi dreptunghic cu aria ", b*c/2;
altfetr
DacE b*b=c*c+a*a atunci
Scrie 'Triunghi dreptunghic cu aria tr, a*c/2;
aItfe1
Daei c*c=b*b+a*a atunci
Scrie "Triunghi drepEunghic cu aria ", b*a/Z;
altfe1
Scrie trNU formeaza un triunghi dreptunghic",'
9.

x, y rea1e,'
Citegte x, yi
Daci x>0 ei y>0 atunci
Scrie (x+y) / (2*x*y) ;
' altfe1
DacE x=0 sau y=Q atunci
Daci x>y atunci Scrie x;
altfel Scrie y;
aItfel
Scrie lt/x+L/yl * (L/x-1-/y+2*x*y+x*x+y*y)
Datedeintrere:

fi vizitate cele
3 orage (ABC,.ACB, BAC). Vom calcula lungimea fiec[rui traseu posibil gi vom
10. Conform restric{iilor problemei exist6 doar 3 variante in care pot

afiqa traseul cel mai scurt.


Date de intrare: a, b, c nat.ura1e,.

Citegte a, b, ci
Dac5' a+bcc+b gi a+b<a+c atunci Scrie 'ABC";
altfel
Dace b+c<a+b gi b+e<a+c atunci Scrie UACBtr altEel Scrie trBACtr;

Observali c[ nu am utilizat'nici o variabil6 suplimentar[.

70

ANEXE

11.

, b1 , cL , d2 , b2 , c2 reale;
x, y reale,
eitegte a1, b1, cL, d2, b2, c2;
Daci a1=0 atuaci
DacE b1=0 atuaci
Daci c1=0 atuncL
Scrie "x gi y pot avea orice valoare rea15";
aItfel
Scrls "Sistemul nu are solufii " ;
altfel
/* aL=O, bt*O */
Daci a2=0 atunci
Dac5, c1*b2=cZ*bL atunci
Scrie "y=",c!/b1-," x poaEe avea orice valoare rea15";
a].tfel- Scrie "Sistemul nu are solufii";
altfel /* a2*0 * /
Scrie "x=", (c2*b1-c1*b2) / la2*b1 ) , " y=" ,ct/b]-i
altfel /* a1*0 * /
Dacd a1*b2=a2*bL atunci
Daci a1*cZ=c]-* a2 atunci
Scrie "x $i y pot, avea orice valoare reaIi";
aItfel
Scrie rrSistemul nu are solutii";
altfeI
{ye (c2*a1:a2*cll / (b2*aL-a2*bL) ;
x+(c1-b1*yl /aL;
Serig "x=. ", X, "y=t', y; )

Date de intrare: a1

DatedeieSire:

12.
Date de intrare: m1,,
Date de ieSire: mg

m2,

rl3

real;

rn4, m5 reale,.

Citegte m1, m2, m3, m4, m5;


DacE m1<5 sau m2<5 sau m3<5 sau m4<5 sau m5<5
Scrie "Nepromovat";

aItfel
{mge

(m1+m2+m3+m4+m5 ) / 5 ;

Dac5, mg<6

atunci Scrie "Nepromovat";


altfel Scrie "Promovat";

13.

h2, h3 naturale;
citsegte h1, h2, h3;
Daci hL(h2 atsunci
Daci h2(h3 atunci
ScrLe "fonef Gigel Danut."
Datedeinffare:hL,

altfel

*/
atunci
Scrie " Ionel Danut Gj-gie1 "
altfel / r, h3<h]. * /
Scrle "Danut Ionel Gigel"
/*

Dac5. h1<h3

kr3<h2

atunci

7t

INFORMATICA

altfel /* }]2<hl */
Daci h1(h3 atunci
Scrie "Gigrel Ionel Danut";
altfel / *]r2<h1,, h3<h1 * /
Daci h2(h3 atunci
Scrie "Gigrel Danut Ionel"
altfeI /* h3<h2<h:.* /
Scrie "Danut. Gj-gel lonel";
Structura repetitivd

l.
2.

a. 36, 30; b. 169, 26 (sau oricare dou[ numere care au cel mai mare divizor
comun 1-3); c. se calculeazi c.m.m.d.c.(n, m) prin algoritmul lui Euclid,
simulAnd imp6rfirea prin sc6deri repetate.
a.4368; b. Algoritmul extrage succesiv cifrele din numerele a gi b, pAnd cdnd
unul dintre numere se termin6. La fiecare pas compard ultima cifr[ din a cu
ultima cifr[ din b, o alege pe cea mai mare qi o adaugd la sfArgitul numdrului
construit in variabila c, prin urmare o solulie posibil[ ar fi 8291-; c. o solulie

posibili ar fi a=10, b=10 (sau orice putere a lui 10).


3. a. 5; b. orice num6r pentru care cel mai mare divizor prim este 11,

4.

de exemplu

11 sau 3 3 ; c. calculeaz[ cel mai mare divizor prim al lui n.


a. 7 B; b. 9; c. Num6rul n, considerat a fi scris in baza b, este convertit in baza
1-0.

5.

a. 55; b. a=4 qi b=7; c. orice pereche de valori, pentru care a>b;


d. in variabila x se calculeazi suma numerelor din intervalul [a, b]; calculul
acestei valori se poate rcaliza direct, astfel:
Oaca a(b atunci xe-b* (b+1,) /2-a" (a-L) /2;

x(-0;

6.4;1. c, d; 8."Itfel
5.
9. Variabila m nu a fost inilializat[ cu 0. Ciclul este infinit deoarece se executd
numai instruc.tiunea mem+l-; (daci am fi dorit sd se execute gi instrucliunea
n+-nlp; ar fi trebuit sI scriem {m+-m+1; nen/p; }, formAnd astfel o
instrucfiune compus6).
10.

Date de intrare: n natural;


Date de manevrd: d, s naturale;

Citegte n;
se-L,' /*inifializim
suma divizorilor cu 1, pentru c5 1 este
lnt,otdeauna divizor */
Pentru d+-2, nr2 executS,
Daci ntd=0 atunci /* d est.e divizor al 1ui n *,/
se-s+d;
/* i\ adunim 1a sumd */
Daci s=n atunci Scrie ,,perfect',;
altfel Scrie "Nu est,e perfect,,';

72

AI\{EXE

11.

a, b naturale;
nt, sEr, sb, d naturale;

Date de ieSire:
Date de manevrd:

nre-O; /*num5rul de perechi de numere prieEene deEerminate


este inilial 0*/
a+-2;

oblinut incS 3 perechi *,/


/* caTcu}ez suma divizorilor lui a x/
{sa+-1;
'Pgatru de-Z,, .a/2. executi
Dacd aBd=O atunci /" d este divizor aL Iui a */

Cat-ti& nr<3 executi

/* nu

saesa+d,' /* iL

am

adundm

la

sumd

*/

besa;
/* b trebuie si fie egal cu suma divizoril-or 1ui a */
Dac5, b>a atunqi
/* calculez suma divizorilor 1ui b */
tsb<-t;
Pentlrr, de-z, b/2 executi
Daci bBd=0 atunei /*d divizor al Iui b*/
sb+-sb+d; /* iL adundm la sum5 *,/
Daci a=sb atunci
/*am obtinut o pereche de numere prietene*/
{Scrie a, ' ', b; /* o afigez */
nr(-nr+1i)
/* si o numXr *,/
)

a+-a+L; /* cauL ln continuare */


)
)

t2.
Date de intrare: x natural;
Date de ieSire: mare, mic naturale;
Date de manevrd: d, prim naturale;

Citegte x;

mare +- x-L;
ExecutE

{prim <- 1;

DacE mare>2

atunci

=0 atunci prim e- 0,'


altfel
{d <- 3;
Cit-timp d({mare Ei prim=1 executi
Daci mareBd=O atunci prim=0,'
altfel de-d+2;
)
prim*1 atunqi /*caut mai departe */
mare mare-L;

Daci mare*2

DacE
)

,/*testez daci mare este prim .*/

eat-tiry) priin=O;

INFORMATICA

mic + x+1,.
Executi
{prim <- 1;
/*Eest,ez dacd mic este prim */
Daci mic>2 atunci
Daci mict2 =0 atuncL prim <_ 0;
altfe1
{d +- 3;
Cat-tiq) d({mic Ai i:rim=L executi
DacE micgd=0 atunci prim=0;
al'tfel d+-d+2;
)
Daci prim*l atunci /*caut mai deparEe */
mic <- mic+1,.

73

cit-timp prim=0;
Scrie mare, , ', mic;

13. vom inversa numarul citit de ra tastaturd


gi vom testa dacr este egal cu numdrur
inilial:
Date de intrare:
n natural;
DatedeieSirez mesajul uDAu sau ,NUu (dup5
caz) ;
Datedemanevrd: in natuial; ,/*numirul
n inversat.*,/

,/*in sn salvdm i,irlSlll"'i"r n,

parcursul inversdrii */
Citegte n;

deoarece

n se disrruse pe

sn+-n,. ine-0,.

Cat-tiq) n>0 executi


{in+-in*10+nt10;
}
Daci sn=in atunci Scrie uDAun<_n/L0;
altfe1 Scrie ',NU";

14.

late.de

intrare: n natural; a real

Date de manevrd: i natural;


Dpte de ieSire: max, min reale,.

,.

Citegte n; ,/*citesc numirul


*,/
Clte$te a; /* cit.esc pri*"de valori
valoare
separat, penLru
inifializa maximul qi min-imu1 */

mine-a;

max<-a,.

Pentru i<-2,n executi


{Citegte a; ,/*citesc succesiv celelalte n_1
valori */
/*compar valoarea ciLitd cu maximul gi
*,/
minimul
Daci max<a alunci max6_a;
a1tfe1
Dacd min>a .atunci min+_a;
)

Scrie min, ' ,,

max,.

74

ANEXE

Observa{i

cI, dac[

valoarea

citit[ a a fost mai

mare decAt maximul, nu este

necesar s[ o mai comparlm cu minimul.


15.

natural; a intreg;
natural;
p inLregi;
CiteSte n; /*citesc numlrul de valori */
s<-0; /*initr.ializez suma cu 0, elementul neutru 1a adunare */
p<-1 ; ,/*ini1.ializez produsul cu 1, .elementul neutru Ia inmul!ire
Date de intrare: n
Date de manevrd: i
Date de ieqire: s,

Pentnr i<-1 ,n executi


{Citegte a;
Daci a82=0 atunci
s(-s+4,'

Daci a*0 atunci


p<--p*a;
)

Scrie srr

rr

s, "

/*citesc succesiv valorile


/*valoarea este pari *,/
,/*o adaug 1a suml *,/
/*valoarea este nenul5 */
/*o inmulLesc cu produsul

*,/

*,/

p= " , pr'

t6.

n, a naturale;
naturale,'
i, exista, prim, r , sa
Rezultatul Eestului
Citegte n;
/*citesc numirul de valori */
g5sit
nici un palindrom prim */
existae-0; /*inifial nu am
Pentru i<-1,n executi
/*citesc succesiv valori-1e */
iCitegte a;
prim +- 1;
/*testez dacl a este prim */
Daci a>2 atunci
Daci a82 =0 atunci prim <- 0;
aItfe1
{ d +- 3;
Cat-titp d<G $i prim=1 executi
Daci a8d=O atunci prim=0 i
aItfeI d+-d+2;

Date de intrare:
Date de manevrd:
Date de-ieqire.'

Daci prim=L atunci /* testez daci a este palindrom*,/


{

sa<-a,' /*salvez valoarea iniEiale a 1ui a */


r<-0,'
/ * in r voi calcula inversul lui a * /
Cat-tiry a*0 executi
{re-r*L0+a810;

/*lipesc 1a sfArgitul 1ui r ultima cifrd a lui a*,1


a+-al10;) /*elimin ultima cifrl a lui a */
DasE sa=r atunci
/* a este gi palindrom */
exista+-1;

IIYFORMATICA

75

oaca exista=1 atunci Scrie

altfe]. Scrie

,'DA.;
',NUl,i

17.
Date de intrare:
Date de manevrd:
Date de iegire:

CLtegte n;
oricaree-L;

n, a natural_e;
i, oricare, nr
naturale;
RezultaEul testului
/*citesc num5rul de valorl */

/*inilial

consider cd toate valorile au propriet.atea


/
Pentru ie1 ,n executl
{Citegte a;
/*citesc succesiv valorile */
/*extrag cifrele numdrului a gi 1e numrr pe cele nenure */
ceruts5*

nre-O;

Cat-tirp a>0 executi


{DacE at10>0 atunci /*ult,ima cifrd d.in a e nenul5*/
nr<-nr+Li
/*onumdr*/
ae-a/10; )
/*elimin uttima cifri a lui a *,/
Dacl nr*3 atuncL
,/*am gasit, un numlr care nu are 3 cifre nenule */
oricare +-0;
)

Dacd oricare=L atuaci ScrLe ',DAn;

aLtfel Scrj.e

',N(f

";

l8.Voi citi succesiv valorile date gi pentru fiecare valoare cititi voi extrage cifrele
numirend in variabila nrO cdte cifre egale cu 0 am obfinut.
Date de
Date.de

intrare:

a natural;

ieSire: nrO natural;

nr0+-0;

/*inifiaI

Executi

num5rul d.e zerouri existente este 0*/

CLtegte a;
/* citesc o valoare */
Daci a*-1 atunci
/*extrag cifrele numdrului a gi Ie num5r pe cele nule */
ExdcutE
{Daci aB10=0 atunci

*ul tima cifrEaluiaeste0*,/


,rr0<-nrO+1;
/* o num5r *,/
a+_a/10; ) /*elimin uLt,ima cifri a lui a */
c6t-timp a>0;
/

ctt-tirp
Scrie

a*-:..;

nrO,.
9.vom aplica repetat algoritmul de carcur .pl sumei cifrelor unui numdr:
r.
Date de

intrare: n naEural;

76

ieSire: s natural
Citegte n,.

/*cifra de control*/

Date de

se-n;

cat-tinp s>9 execute


{s+-0;
/*caIculez
Ctt-timp n>0 execute

suma

cifrelor

1ui n*/

{s+-s+n810; n<-nl10; }
)
/*suma calculat.d devine n*/
Scrie "cifra de control este ,,, s;
20. Nu vom parcurge toate numerele naturale mai mici dec0t n testand la fiecare

n(-s;

pas dace numlrul curent este sau nu petrat perfect, ci vom genera direct p6tratele
Date de intrare:
Date de manevrd:

Citegte n;

n naturale;
i natural;

i<-l_;

Cat-tinD i*i<n executi


{Scrie i*i; i<-i+1;
2t.
Date de intrare: n natural

,1
lr

,.

l.

rr
:i
il
l

i natural;
Date de ieSire: s natural;

Date de manevrd:

Citegt,e n;
s<-0; /*in s calculez suma primelor i p5t.rate perefecxe */
Pentrrr i+-L, n executi
{se-s+i*i,. Scrie s; }
22-Yom construi toate frac{iile care au numitorul qi numdritorul in mul{imea {1, 2,
;.., n) $i le vom numdra numai pe cele ireductibile.

I
I
I

rl
rl

i:l
II
i

il
i
I

n natural
a, b, sd, sb, r nat.urale,.
nr natural ;
a, b, sd, sb, r naturale,.
Citegte n,.
nr(-1 ;
/* num5rim fracf,.ia t/l */
Pentnu a-1, n-1 executi
Pentru b<-a+i-, n executi
/*verific dacS fracfia a/b este ireductibila */
Date de inlrare:
Date de manevrd:
Date de ieSire:

,.

{sae--a; sbe-b;

Cat-tir@ sb*0 executi

i,
I
I
I
I

Scrie nr;

i
I
I

lir,

l,l
J:,
L.i
I

q_
i:t-

{r+-saBsb,. sae-sb; sbe-ri }


Daci sa=1 atunci
,/* cmmdc (a,b\=t */
nr+-nr+2; /*numir fracliile a/b Si b/a */

INTORMATICA

77

z5' rn mod slmilar genererii celui de-al n-lea termen al qirului


Fibonacci vom
utiliza 4 variabile: s0, s1, s2 re,tin 3 termeni consecutivi din gir,
iar in s3 vom

calcula termenul urmitor; dupr care ne pregitim pentru pasul


urmitor, deplas6ndu_ne

in gir.

Date de intrare:
Date de manevrd:
Date de ieSire:
Citegte n,.

Dac5,

n natural
i, s0, s1, s2 intregi;
s3 intreg ;
,.

n=0 sau n=2 atunci Scrie

altfel

L,.

atunci Scrie 2,.


aItfeI
{ s0<-1 ; s1e-2 ; s2<_1,;
pentru i+-3, n executii

DaqE n=1

scrie i;::='.'.s1-so;

soe-s1; s1e-s2,. s2+-s3 ; )

24. Calculdm mai int6i uO media la oral, apoi media semestriall


se obline dup6
formula ( 3 *MO+Tez a) / 4.
Date de intrare: n, ootq, Teza natural
Date de manevrd:
Date de ieSire:
Cite$te n,.

i natuial;
mg real;

MO

real;

,.

MO(-o,'

Pentru ie-l-,n executi


{Citegte nota;
MO+-MO,/n;

MO<_MO+nota,. }

Citegte Teza;
(* (MO*3+Tez a) / 4;
Scrie mg,.

mg

. Pentru a calcula c.m.m.d.c. al

n valori ne bazEm pe faptur c6 operalia c.m.m.d.c. este

asociativE,adicdcmmdc(dr,...rdn_1 , dr)
= cmmdc(cmmd.c(a1 , ...,
dn-r), a") ). vom utiliza o variabil[ d in care
vom memora ra fiecare pas
c.m.m.d.c. al valorilor citite p6ni la momentul
respectiv. variabila d va fi
initjalizatd. cu prima valoare citit[. La fiecare pas
citimt noua varoare gi calcur6m
dintre valoarea citita qi d prin algoritmul lui Eucrid.
,r.T.*.1..:
Date de intrare: n, a naturale,.

i, r naLura1,.
ieSire: d natural
Citegte n;
Citegte a; ,/*citesc prima
inilializa cmmdc *,/
Datedemanevrd:

Date de

,.

valoare separat pent,ru

de-a;

Pentru i<-2,n execuLi


{Citegte a; /*cit,esc o noui
/*caIculez cmmdc intre noua

T:i:::".1,.,.,u,

78

ANEXE

crunrndc aI val-orilor citit.e pAni acum */

CAt-tirry a#0 executl


{r+-dta; de-a,. a+-r;
Scrie d;

26.Citim succesiv caracterele in aceeaqi variabild c, pan[ la intdlnirea caracterului


spatiu. vom utiliza o variabilI logic6 (Este) care va avea valoarea adev5rat,
dacd secvenfa de caractere poate fi un numir natural gi fa1s, altfel. La intdlnirea
unui caracter diferit de cifr6, variabila Este va primi valoarea f a1s.
Date de intrare:
Date de ieSire
Date de manevrd:
z

c caracter;
mesajul 'DA' sau uNU, (dupi cazl;

Est.e Iogric,.
Est,e e- adevSrat;
Executd

{Citegte c,.
Dac5, c*' tatunci
DacA ! (c>,0, gi cS'9,) atunci Este <-fals;
)
cat-tilnp c*' ,;
Daci Este=adevirat atunci Scrie ',DA,,i t
altfel Scrie ,NLru.
Singura rnodificare pe care trebuie sE o facem pentru ca algoritmul sI verifice dacl
secvenla este un numlr intreg se referl la primul caracter din secvenld (care ar
putea fi $i ' + sau ' - '). Pentru ca numtrrul s6 fie real acceptrm gi un singur
caracter punct.
27. Citesc propozifia caracter cu caracter, memor6nd succesiv caracterele citite in

'

aceeagi variabili c.
Date de intrare:
Date de ieSire:

nr<-

c caracter;
nr natural ;

/*numirul de cuvinte*/

0;

Executd

{Executi

Citegte c,.
CAt-tim6l c=' ' ;
Daci c*'.' atunei

/*sar peste spalii */

/*incepe un cuvAnt *,/


/*i1 numir *,/
/*sar peste cuv6nt*,/
Cit-tLmp c*, , 9i c*,., executi Citegte c,.

{nre-nr+1",-

)
)

Cat-timp c*' -, i
Scrig "rlr= ,' , rlr i

INFORMATICA

79

BIBLIOGRAFIE
1' Andonie, *u?r.?rr., G6rbacea, IIie

2'

C++. Editura Libris, Cluj, 1995.


Afa'nasiu, a. - cum se scrie un

- Argoritmi fundamentali. o perspectivd

argortm? simpru.Editura Agni, Bucuregti,

3' Atanasiu, A.;.pintea, R. curegere


de probreme pascar. Editura
Bucureqti, 1996.
4. Atanasiu, A.

5'

Bostan, Gh.

6' cerchez,

probreme distractive
de rogicd. Editura perion, Bucuregti,

- curegere

Em.i.

petrion,

de profileme de informatrcd.
Editura Lumina,

$."ru}, r{.

chipin'u,

Infor-matica. varianta pascar.


Manuar pentru

clasa a X-a. Editura polirom,


taqi, i0OO.

7' cerchez, Em.

--

Informailca. curegere de probreme


pentru ticeu. Edituta

Polirom, Iagi, Z0A2.

8' cormen, Thom-ay; Leiserson, charres;


Rivest, Ronard _ Introduction to
Algorithms. The Massachusetts inJiu,.
oi r".r,roio;r,'.6o.
9' Livovschi, Leon; Georgescu, Horia
gtiinlificl pi EnciclopeO[a, nr.ur"yi, - llnteza si anariza argoritm,or. Editura
19g6.

l0'

Lucanu, Dorer - Bazere proiectdrii


programeror si argoritmilor.
Editura
Universit[1ii,,Al. I. Cuza,,,rili, rqi;.
11' Mitrana, victor provocarea argoritmitor.
Editura Agni, Bucuregti, 1994.
12' Niculescu, st'; cergh31,-Em.; gerban,
M. $.a. - Bacalaureat $i atestat tn
info rmat icd. Editura L&S
Infomai iOOo.
13. S.N.E.E. - Subiecte bacalaureat,
2A0f-i2A0Z.

80

ANEXE

2.2. PnopzurrA'Jt caRacrERIsrlcE ALE ALCoRrr\{rLC,F.

.......1I

3. REPREZENTAREA ALGORITMILOR.............

......18

3.

l.

PntNcrprrt-E pRoGRAMARIT srnuctuRATE .......,.... ....

3.2. RepnezeNTAREA
3.3. SrnucruRA
3.4.

ALCoRrrMrLon iu pseuoocoi

18

t8

."

sECVENlrruA............... ..

..

t9

.:i

Arlrcel'rr .................

1{
_..:+

3.5. PnosLrN4E PRoPUSE


3.6. SrnucruRA ALTERNATIvA ..........,....

.15
.JA

3.7. Aplrca1rr ..................


3.8. PRosLeNrE pRopusE

l9

3.9. SrnucruRA r{EpgrrrrvA ..................

30

3. I

0. Apr-rcal'rr ................

i3

l. PnoeLsME pllopusE
4. EXEMPLE DB IMPLEMENTARE.....
ALCoRTTM uL r-ur Euclro..
3.

$rnul FmoNaccr ...............

59

..60

ANEXA 1. SISTEME DE NUMERATIE......"


aNEXA 2. SOLUTIT $r rNDrCATrr............
4. l. NoTruNeA DE ALGonrrM ...,..........,......
.

BIBLIOGRAFIE............

i0
"59

PureRe........

4.2. RepnrzeNTAREA ALGoRrrMrLoR .......,.

<i
.Jn

61

.66
.66
.66

79

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