Sunteți pe pagina 1din 230

LIMBAJUL C TEORIE I APLICAI I 9

1 Algoritmi
1.1 Introducere
n scurta istorie, de aproi!ati" #$ de ani, a ca%cu%atoare%or e%ectronice, o dat&
cu suportu% 'ard(are, au e"o%uat spectacu%os )i %i!*a+e%e de pro,ra!are, nu!&ru%
)i di"ersitatea %or -iind ast&.i -oarte !are/
Reco!and&ri%e cu caracter ,enera%, standardi.&ri%e %i!*a+e%or de pro,ra!are s0
au i!pus a*ia %a !i+%ocu% deceniu%ui opt, adic& dup& aproape 1$ de ani de
eisten2& a ca%cu%atoare%or e%ectronice/ In aceste condi2ii, criterii%e de ca%i-icare a
pro,ra!e%or s0au di"ersi-icat, pe %3n,& cerin2e%e de -unc2ionare corect& )i de
per-or!an2& 4"ite.& de eecu2ie, capacitate5, ap&r3nd ce%e %e,ate de u)urin2a de
uti%i.are, respecti" u)urin2a cu care pro,ra!u% "a putea -i !odi-icat de a%2ii/
Aceste cerin2e de ca%itate au i!pus respectarea unor canoane 4re,u%i5 de
e%a*orare, care -or!ea.& 6n ansa!*%u te'no%o,ia pro,ra!&rii/
Pro,ra!area structurat& 6)i propune s& e%a*ore.e produse so-t(are 6n care s&
se distin,& c%ar structuri%e principa%e a%e pro,ra!u%ui 4si!i%ar structuri%or de
re.isten2& a c%&diri%or5, structuri care "or -i proiectate, pro,ra!ate )i testate 6nainte
de a*ordarea oric&rei pro*%e!e de deta%iu/
7ti%u% acesta de a*ordare a pro*%e!e%or, 6ncep3nd cu ansa!*%u% )i co*or3nd
treptat %a deta%ii 4top0do(n5, caracteri.ea.& -iecare etap& de %ucru pe parcursu%
e%a*or&rii unui pro,ra! structurat/ 8i%%ia!s 7/ sinteti.ea.& 9:; principa%e%e
reco!and&ri de pro,ra!are structura%&/
<o! pre.enta 6n continuare principa%e%e !i+%oace care se "or -o%osi pe parcursu%
e%a*or&rii pro,ra!e%or 6n %i!*a+u% C/
1.2. Algoritmi i organigrame
Pentru a e%a*ora un pro,ra! care s& re.o%"e o pro*%e!& dat&, este necesar&
etra,erea esen2ei pro*%e!ei, 6!p&r2ind so%u2ia 6n pa)i indi"idua%i de e-ectuat/
7ec"en2a pa)i%or a%t-e% o*2inu2i, necesari pentru so%u2ionarea pro*%e!ei, se
nu!e)te a%,orit!/ A%,orit!u% este s3!*ure%e care a dat na)tere %a discip%ina
In-or!atic&/ Cu"3ntu% a%,orit! pro"ine de %a !ate!aticianu% !usu%!an Abu Ja
far Mohammed ibu Musa al-Khowrizm 4=>$?0>#$?5, care 6n %ucrarea @Aita*
'isa* a%0adad a%0'indiBCca%cu%e nu!erice -o%osind o !etod& a%,e*ric&/ Dic2ionaru%
ep%icati" a% %i!*ii ro!3ne d& ur!&toarea de-ini2ie a a%,orit!u%ui B
Ansamblul de simboluri folosite n matematic i logic, permind gsirea n
mod mecanic (prin calcul) a unor reultate !
Ee!p%i-ic&! no2iunea de a%,orit!/
Ee!p%u%/:/ Procedura de rea%i.are )i turnare a unui e%e!ent de *eton/
:/ 7e aduc !ateria%e%e necesare prepar&ri *etonu%ui 4nisip,*a%ast,ci!ent,ap&5/
E/ 7e pune 6n -unc2iune *etoniera/
1/ 7e pun 6n *etonier& pe r3nd, *a%astu%, nisipu%, ci!entu%/
LIMBAJUL C TEORIE I APLICAI I :$
F/ 7e a!estec& co!po.i2ia pentru a o*2ine o!o,eni.area acesteia/
#/ 7e adau,& apa )i se continu& a!estecarea o anu!it& durat& de ti!p/
G/ 7e scoate din *etonier& *etonu% proasp&t )i se transport& %a %ocu% turn&rii//
=/ 7e -ace turnarea *etonu%ui 6n co-ra, pentru rea%i.area e%e!entu%ui dorit/
>/ Dac& cantitatea de *eton preparat )i turnat este !ai !ic& dec3t "o%u!u%
e%e!entu%ui se reia procesu% de %a punctu% :, dac& nu se opre)te procesu% de
preparare0turnare 47TOP5/ Aceast& procedur& cunoscut& de to2i constructorii,
are toate e%e!ente%e unui pro,ra! de ca%cu%ator/ Distin,e!B
o sec"en2& de ini2ia%i.are :,
o ter!inare nor!a%& >/
Ee!p%u% E/ Algoritmul lui Euclid HPentru a o*2ine c/!/!/d/c/ a dou& nu!ere
6ntre,i a )i * , * di-erit de $, 6!p&r2i! pe a %a * , dac& restu% 6!p&r2irii r: este
$, atunci * este c/!/!/d/c/ a ce%or dou& nu!ere, dac& restu% r: este di-erit de $,
se 6!parte * %a r: )i se o*2ine restu% rE, dac& rE este $ se consider& r: c!!dc
a% ce%or dou& nu!ere, dac& rE este di-erit de $ se 6!parte r: %a rE, re.u%t& rest
r1 )/a/!/d/
U%ti!u% rest nenu% este c!!dc a% ce%or dou& nu!ere a, */
Dup& aceste ee!p%e pute! s& de-ini! un a%,orit! I un sistem de reguli prin
care informaia iniial este transformat ntr-o informaie final (rezultat)
folosind un numr finit de calcule sau operaii intermediare (pai).
In-or!a2ia ini2ia%& pentru care un a%,orit! este ap%ica*i% se "a nu!i in-or!a2ia
ad!isi*i%& a a%,orit!u%ui respecti", tota%itatea in-or!a2ii%or ad!isi*i%e -or!3nd
do!eniu% a%,orit!u%ui/
Este a*so%ut necesar ca un a%,orit! s& -ie caracteri.at prin finitudine, claritate,
generalitate )i unicitate/
Finitudinea unui a%,orit! se re-er& %a -aptu% c& pentru trans-or!area date%or
de intrare 6n date%e de ie)ire 4so%u2ie5 se -o%osesc un nu!&r -init de ca%cu%e
4pa)i5/
Unicitatea const& 6n -aptu% c& dup& -iecare pas din procesu% de trans-or!are,
re,u%i%e a%,orit!u%ui deter!in& 6n !od unic pasu% ur!&tor/
Generalitatea a%,orit!u%ui se re-er& %a -aptu% c& pentru orice in-or!a2ie din
do!eniu% a%,orit!u%ui 4pentru orice dat& de intrare "a%id&5 se poate
deter!ina o !&ri!e de ie)ire 4so%u2ie5/ De ee!p%u, 6n ca.u% 6n care dori! s&
scrie! un pro,ra! care re.o%"& ecua2ia de ,radu% IB 1JFI$, nu "o! scrie un
pro,ra! care re.o%"& ecua2ia dat& !ai sus, ci un pro,ra! ,enera% care
re.o%"& orice ecua2ie de ,radu% I/
Prin claritatea a%,orit!u%ui se 6n2e%e,e -or!u%area precis& a re,u%i%or dup&
care au %oc trans-or!&ri%e date%or de intrare p3n& de"in date de ie)ire/
Repre.entarea ,ra-ic& a unui a%,orit! se nu!e)te organigram sau schem
logic/ Or,ani,ra!a este constituit& dintr0o serie de c&su2e denu!ite *%ocuri,
interconectate prin se,!ente direc2ionate, care arat&& c&i%e de deru%are a%e
LIMBAJUL C TEORIE I APLICAI I ::
a%,orit!u%ui/ Or,ani,ra!e%e sunt scrise -o%osind %i!*a+u% natura% )iKsau -o%osind
epresii !ate!atice sau %o,ice/
B%ocuri%e )i si!*o%uri%e care sunt -o%osite 6n sc'e!a %o,ic& suntB
c&su2a dreptun,'iu%ar&, speci-ic& 6ntreprinderea unei ac2iuni 4*%oc de ca%cu%5
c&su2a ro!*oida%&, speci-ic& %uarea unei deci.ii 4*%oc de deci.ie5
c&su2a para%e%o,ra!, speci-ic& citirea sau tip&rirea unor date 4*%oc de
intrareKie)ire5
c&su2a e%iptic&, speci-ic& 6nceputu% sau s-3r)itu% a%,orit!u%ui 4*%oc
de%i!itator5/
c&su2a circu%ar&, speci-ic& continu&rii a%,orit!u%ui ce se des-&)oar& pe !ai
!u%te pa,ini/
s&,e2i%e care unesc aceste *%ocuri/
n para,ra-u% ur!&tor "or -i pre.enta2i principa%ii a%,orit!i 6nt3%ni2i 6n te'nica
curent& de pro,ra!are/
1.2.1. Algoritmi liniari
A%,orit!ii %iniari sau sec"en2ia%i sunt acei a%,orit!i care con2in doar sec"en2e de
citireKscriere )i de ca%cu%/ Or,ani,ra!a unui a%,orit! sec"en2ia% are un parcurs
%iniar de %a de*utu% pro*%e!ei 47TART5 p3n& %a ter!inarea ei 47TOP5/
Eemplul !
7& se descrie a%,orit!u% re.o%"&rii ecua2iei de ,radu% I cu o necunoscut& B
aJ*I$/aL*R a$ )i s& se construiasc& or,ani,ra!a acestuia/
"ezol#are
:/ 7e citesc a )i *,a di-erit de $/
E/ 7e ca%cu%ea.& BI 0*Ka/
1/ 7e tip&re)te L
F/ 7TOP/
Start
a, b
x := -b/a
x
Stop
LIMBAJUL C TEORIE I APLICAI I :E
O*ser"&! c& 6n pasu% E a% a%,orit!u%ui a! -o%osit operatoru% $% , 6n %ocu%
operatoru%ui % /
Operatoru% $% poart& denu!irea de operator de atri*uire )i are
se!ni-ica2ia de atri*uire a "a%orii o*2inute prin e"a%uarea 4ca%cu%area5
epresiei din partea dreapt& a operatoru%ui, "aria*i%ei din st3n,a
operatoru%ui/
Un pro,ra! de ca%cu%ator "a e"a%ua 6ntotdeauna epresia din dreapta
operatoru%ui atri*uire 46n ca.u% nostru 0*Ka5 re.u%tatu% o*2inut -iind atri*uit
"aria*i%ei din st3n,a operatoru%ui4 6n ca.u% nostru 5/
Eemplul &
7& se descrie a%,orit!u% con"ersiei un,'iu%ui a din ,rade sea.eci!a%e 6n radiani
)i s& se rea%i.e.e or,ani,ra!a 4sc'e!a %o,ic& 5 acestuia/
"ezol#are
:/ 7e cite)te a epri!at 6n ,rade sea.eci!a%e/
E/ 7e ca%cu%ea.& noua "a%oare a %ui a epri!at 6n radiani a $% a'()!*+/
1/ 7e tip&re)te aL
F/ 7TOP/
1.2.2. Algoritmi ramificai
A%,orit!ii ra!i-ica2i sunt acei a%,orit!i care con2in pe %3n,& sec"en2e%e de
citireKscriere )i de ca%cu% ,)i sec"en2e de deci.ie/ In ur!a sec"en2ei de deci.ie doar
Start
a
a:= a*/180
a
Stop
LIMBAJUL C TEORIE I APLICAI I :1
o sin,ur& sec"en2& este posi*i%&, din dou& sec"en2e eistente/ Or,ani,ra!a unui
a%,orit! ra!i-icat pre.int& o *i-urcare 4ra!i-icare5 a parcursu%ui 6n ur!a *%ocu%ui
de deci.ie/
Eemplul ,
7& se descrie a%,orit!u% re.o%"&rii ecua2iei de ,radu% I, aJ*I$/aL*R, cu
"eri-icarea coe-icien2i%or introdu)i )i s& se construiasc& or,ani,ra!a acestuia/
"ezol#are
: 7e citesc coe-icien2ii a )i -.
E Dac& a este .ero tip&ri! !esa+ de eroareL 7TOP/
1 7e ca%cu%ea.& $% - -)a.
F 7e tip&re)te .
# 7TOP/
O*ser"&! B
O ie)ire anor!a%& a pro,ra!u%ui E, respecti" o,
O ie)ire nor!a%& 1/
n or,ani,ra!e%e ur!&toare, "o! renun2a %a *%ocu% 7TART pentru econo!ie de
spa2iu/
Eemplul .
7& se construiasc& a%,orit!u% care ca%cu%ea.& !odu%u% unui nu!&r )i s& se
construiasc& or,ani,ra!a acestuia/
"ezol#are
: 7e cite)te nu!&ru% nr.
E Dac& nu!&ru% este !ai !ic dec3t .ero, atunci nr $% -nr.
1 Dac& nu!&ru% este !ai !are sau e,a% cu $, atunci nr $% nr.
a, b
x := -b/a
x
a = 0
Eroare
STOP
DA NU
LIMBAJUL C TEORIE I APLICAI I :F
F 7e tip&re)te nu!&ru% nr.
# 7TOP/
Eemplul /
7& se construiasc& a%,orit!u% care deter!in& "a%oarea !ai!& dintre ce%e trei
"a%ori citite de %a tastatur& )i s& se desene.e sc'e!a %o,ic& a acestui a%,orit!/
"ezol#are !
:/ 7e citesc ce%e trei "aria*i%e a0-0c/
E/ 7e notea.& dI!a 4a,*,c5/
1/ 7e -ac co!para2ii%e B dac& aMI* )i aMIc re.u%t& dI a/
F/ dac& *MIa )i *MIc re.u%t& dI */
#/ dac& cMI* )i cMIa re.u%t& dI c/
G/ se tip&re)te !aId
=/ 7TOP
Aceast& !etod& i!p%ic& e-ectuarea a G co!para2ii/ Ur!&toarea !etod& -o%ose)te
!ai pu2ine co!para2ii/
"ezol#are &
:/ 7e citesc ce%e trei "aria*i%e a0 -0 c.
E/ 7e notea.& dI!a 4a,*,c5/
1/ 7e -ac co!para2ii%e B dac& aMI* )i aMIc re.u%t& dI a/
F/ Dac& aMI* )i aNc re.u%t& dIc/
#/ Dac& aN* )i *MIc re.u%t& dI*/
G/ Dac& aN* )i *NIc re.u%t& dIc/
=/ 7e tip&re)te !aId/
nr
nr := -nr
nr
nr < 0
DA NU
LIMBAJUL C TEORIE I APLICAI I :#
>/ 7TOP/
A%,orit!u% pentru deter!inarea "a%orii !ai!e dintre ce%e trei "a%ori a,*,c
Eemplul 1
7& se rea%i.e.e a%,orit!u% )i sc'e!a %o,ic& pentru ordonarea 6n sens cresc&tor a 1
nu!ere de tip intre,/
Re.o%"are Oie a, *, c ce%e 1 "a%ori 6ntre,i ce tre*uie ordonate, se notea.& cu
a,*,c ce%e 1 "a%ori de tip intre,/ 7e rea%i.& o -unc2ie ordonat care ordonea.& E
"a%ori ,P ast-e%B Dac& MP este necesar ca s& sc'i!*e %ocu% cu P/ Oo%osi! o
"aria*i%& te!porar& t )i e-ectu&! ur!&toare%e opera2ii B tIP, PI,
It, Dac& NP nu este necesar& per!utarea dintre )i P/ Aceast& -unc2ie se ap%ic&
7TART
TIPARETE
ME7AJ
CITETE
a,*,c
a>=b
b>=c
d=a
da
nu
da
d=c
d=c
da
nu
d=b
nu
a>=c
max=d
STOP
LIMBAJUL C TEORIE I APLICAI I :G
de 1 ori "a%ori%or a, *, c ast-e% B Ordonat 4a, *5 aN*/ Ordonat 4*, c5 5 *Nc dar
a?*/ Ordonat 4a, *5 aN*Nc
LIMBAJUL C TEORIE I APLICAI I :=
7TART
CITETE a,*,c
a>b
b>c
da
nu
da
nu
STOP
t=b
b=a
a=t
t=c
c=b
b=c
a>b
t=b
b=a
a=t
da
da
nu
7TART
CITETE
abc
x!1"=a
#!1"=b
$!1"=c
ordonat
x!1"#!1"
ordonat
#!1"$!1"
ordonat
x!1"#!1"
STOP
ti%are&te
abc
O'(O)AT *+
*>+
t=#
#=x
x=t
nu
da
'ET,')
LIMBAJUL C TEORIE I APLICAI I :>
Ordonarea a trei nu!ere 4"arianta :5
Ordonare a trei nu!ere 4"arianta E5
Dup& pri!e%e dou& ape%uri, 6n c a"e! !ai!u% dintre "a%ori%e ini2ia%e, dar despre
ordinea dintre a )i * nu pute! spune cu si,uran2& ni!ic 4e/ Ini2ia% aI#, *IF, cI15,
de aceea este necesar& )i o rearan+are a "a%ori%or a )i */ 4u%ti!u% ape%5/
1.2.3. Algoritmi ciclici
A%,orit!ii cic%ici sunt acei a%,orit!i care con2in *uc%e sau cic%uri 4re%uarea
anu!itor sec"en2e a%e a%,orit!u%ui de un nu!&r -init de ori5, 6n -un2ie de
6ndep%inirea unei condi2ii/ Or,ani,ra!a unui a%,orit! cic%ic con2ine un parcurs
LIMBAJUL C TEORIE I APLICAI I :9
care este re%uat de !ai !u%te ori 6n -unc2ie de o condi2ie i!pus& 6ntr0un *%oc de
deci.ie/
Eemplul 2
7& se descrie a%,orit!u% care ca%cu%ea.& su!a a n nu!ere citite de %a tastatur& )i s&
se construiasc& or,ani,ra!a acestuia/
"ezol#are
:/ 7e cite)te n/
E/ 7e ini2ia%i.ea.& o "aria*i%& contor i cu "a%oarea $/
1/ 7e cite)te un nu!&r de %a tastatur&/
F/ 7e adun& acest nu!&r %a su!& )i se incre!entea.& contoru% 4se !&re)te cu :5/
#/ Dac& "a%oarea contoru% este !ai !ic dec3t nu!&ru% n, se re"ine %a pasu% 1/
G/ 7e tip&re)te su!a/
n acest pro,ra! o*ser"&! c& sec"en2a 1 0 F se repet& de n ori/
n pasu% i BI i J :, se e"a%uea.& epresia din dreapta operatoru%ui 4"a%orii %ui i se
adau,& :5, re.u%tatu% o*2inut -iind atri*ut %ui i/ n ur!a acestei opera2ii i "a -i !ai
!are cu :/
n
s := 0
:= 0
nr
s := s ! nr
:= ! 1
< n
s
LIMBAJUL C TEORIE I APLICAI I E$
n epresia s BI s J nr, se e"a%uea.& epresia din dreapta operatoru%ui atri*uire,
4"a%orii %ui s se adau,& "a%oarea %ui nr5, re.u%tatu% o*2inut -iind atri*uit %ui s/ n
ur!a acestei opera2ii s cre)te cu nr/
Eemplul *
7& se descrie a%,orit!u% care ca%cu%ea.& -actoria%u% unui nu!&r 6ntre, )i s& se
construiasc& sc'e!a %o,ic& a acestuia/
"ezol#are
Oactoria%u% unui nu!&r n este produsu% nu!ere%or de %a : %a nu!&ru% n inc%usi"/
:/ 7e cite)te n/
E/ 7e ini2ia%i.ea.& o "aria*i%& -act cu "a%oarea :/
1/ 7e ini2ia%i.ea.& o "aria*i%& contor i cu "a%oarea :/
F/ 7e 6n!u%2e)te -act cu contoru% i, "a%oarea o*2inut& -iind atri*uit& "aria*i%ei
-act )i se incre!entea.& contoru% cu :/
#/ Dac& contoru% este !ai !ic sau e,a% dec3t nu!&ru% n, se re"ine %a pasu% F/
G/ 7e tip&re)te -act/
n acest pro,ra! o*ser"&! c& sec"en2a F se repet& de n ori/
Dac& o sc'e!& %o,ic& este ,reu de 6n2e%es, pute! parcur,e a%,orit!u% pentru un
anu!it nu!&r de pa)i, pe '3rtie/
7& 6ncerc&! s& parcur,e! a%,orit!u% nostru pentru nI1/
:/ n BI 1L "aria*i%ei n i se atri*uie "a%oarea 1,
E/ -act BI :L "aria*i%ei -act i se atri*uie "a%oarea :,
n
"a#t := 1
:= 1
"a#t := "a#t $
:= ! 1
% n
"a#t
LIMBAJUL C TEORIE I APLICAI I E:
1/ i BI :L "aria*i%ei contor i se atri*uie "a%oarea :,
F/ -act BI : Q : I :L se 6n!u%2e)te -act cu i, "a%oarea o*2inut& -iind atri*uit&
"aria*i%ei -act,
i BI : J : I EL se incre!entea.& contoru% i cu :,
#/ E R 1L da, se re"ine %a pasu% F,
F/ -act BI : Q E I EL
i BI E J : I 1L
#/ 1 R 1L da, se re"ine %a pasu% F,
F/ -act BI E Q 1 I GL
#/ F R 1L nu,
=/ tip&ri! -act, adic& G/
Eemplul 3
7& se deter!ine ce% !ai !are di"i.or co!un a dou& nu!ere intre,i )i po.iti"e,
4a%,orit!u% %ui Euc%id5/
"ezol#are
Pentru a deter!ina c/!/!/d/c/ a dou& nu!ere a )i *, 6ntre,i )i po.iti"e aM*, se "a
ap%ica ur!&toru% procedeuB
7e 6!parte a %a * )i se o*2ine un rest r, dac& rI$ c!!dc a% ce%or dou& nu!ere
este *, dac& nu se "a 6!p&r2ii * %a rest r )i se o*2ine un nou rest r:/
Dac& restu% r: I$ c!!dc este r, dac& nu se "a 6!p&r2ii r %a r: )i se continu& cic%u%
p3n& c3nd restu% de"ine I$/
U%ti!u% rest di-erit de .ero este c/!/!/d/c/ a% ce%or dou& nu!ere a,*/ Pentru a
re%ua procesu% 6!p&r2irii )i deter!inarea restu%ui, se consider& c& ce% !ai indicat
este -o%osirea unui cic%u cu pa)i necunoscu2i, %a care p&r&sirea cic%u%ui se -ace c3nd
restu% 6!p&r2irii de"ine .ero/
Pentru a nu -o%osi o !u%2i!e de "aria*i%e 6n care s& se depo.ite.e "a%ori%e
resturi%or se -o%ose)te o per!utare 6ntre a cu * )i * cu r/
SIaK*
rIa0*QS
Dac& rI$ c/!/!/d/c/ I*/
Dac& rT$ a de"ine * iar r de"ine * )i se reia procesu% /
Dac& aN* nu este necesar& per!utarea %ui a cu *, -iinc& dup& pri!u% cic%u se
rea%i.ea.& aceast& per!utare/
LIMBAJUL C TEORIE I APLICAI I EE
Ce% !ai !are di"i.or co!un a doua nu!ere
7TART
CITETE
a,*
r=-
da
nu
STOP
.=a/b
r=a0b1.
a=b
b=r
cmmd=b
A2ISEA3A
cmmd
LIMBAJUL C TEORIE I APLICAI I E1
2. Mediul de programare turbo c 2.0
Mediu% inte,rat de de."o%tare Tur*o C E/$ 4Inte,rated De"e%op!ent En"iron!ent5
per!ite editarea, depanarea pro,ra!e%or surs& scrise 6n %i!*a+u% C )i con2ine B
Co!pi%ator/
Editor/
Depanator/
Uti%itare/
4ansarea mediului integrat 5ur-o 6&.+
Mediu% inte,rat %ucrea.& su* pro!pteru% 7os )i %ansarea %ui se e-ectuea.& prin
e!iterea co!en.ii B
56 Enter/
Dac& directoru% de %ucru este TC/
Dac& directoru% 6n care se a-%& uti%itaru% TC este di-erit de directoru% TC, este
necesar ca 6n -i)ieru% Autoeec/*at, s& se speci-ice ca%ea spre directoru% ce con2ine
uti%itaru% TC/
Dup& e!iterea co!en.ii este a-i)at ecranu% principa% ,ce con2ine 6n partea
superioar& o %inie de !eniuri deru%ante pe "ertica%&, -ereastra de editare, -ereastra
de !esa+e )i %inia de re-erin2e rapide/
2.1. Mediul de lucru
Pentru a sta*i%i !ediu% de %ucru, tre*uie s& se e-ectue.e %a pri!a %ansare pe
ca%cu%ator con-i,urarea directoare%or/ 7e apas& tasta O:$ pentru a ape%a %inia de
!eniuri )i se tastea.& O, pentru desc'iderea !eniu%ui Options, sau se tastea.&
co!*ina2ia ALT )i O / 7e a%e,e din !eniu% Options, su*!eniu% Directories ce "a
desc'ide o -ereastr& ce con2ine ru*%ici%e B
Inc%ude directories/
Li*rarP directories/
Output directories/
Tur*o C/
La -iecare ru*%ic& sunt a-i)atedirectoare%e con-i,urate %a !o!entu% respecti"/
Pentru a -unc2iona corect, este necesar s& se !odi-ice ru*%ici%e 6n con-or!itate cu
directoare%e eistente pe ca%cu%ator/
7e "a considera c& eist& pe 'ardu% ca%cu%atoru%ui directoare%e B
CBUTC
CBUTCUIVCLUDE
LIMBAJUL C TEORIE I APLICAI I EF
CBUTCULIB
CBUTEMPC
Pentru a indica directoru% ce con2ine -i)iere%e 'eader 4cu etensia '5, se "a a%e,e
op2iunea 8nclude directories )i se apas& Enter/ n -ereastra ce apare se "a tasta
discu%,directoru%, ce con2ine -i)iere%e 'eader, 6n ca.u% de -a2& CBUTCUIVCLUDE
Pentru a indica directoru% ce con2ine -i)iere%e de *i*%iotec&, se "a a%e,e op2iunea
4i-rar9 directories )i se apas& Enter/ n -ereastra ce apare se "a tasta
discu%,directoru%, ce con2ine -i)iere%e 'eader, 6n ca.u% de -a2& CBUTCULIB /
Pentru a indica directoru% ce "a con2ine -i)iere%ede o*+, !ap, ee, se "a a%e,e
op2iunea :utput director9 )i se apas& Enter/ n -ereastra ce apare se "a tasta
discu%,directoru%, ce "a con2ine -i)iere%e de ie)ire, 6n ca.u% de -a2& CBUTEMPC /
Pentru a indica directoru% ce con2ine -i)iere%e necesare %ucru%ui cu !ediu% Tur*o,
%a op2iunea 5ur-o 6 se "a a%e,e CBUTC /
Dup& rea%i.area acestor con-i,ur&ri se "a ap&sa E7C, pentru a re"eni 6n !eniu%
:ptions )i se a%e,e su*!eniu% ;a#e options se apas& Enter, care "a rescrie
-i)ieru% TCCOVOIW/TC , de pe 'ardiscu% ca%cu%atoru%ui, iar %a o nou& %ansare a
!ediu%ui Tur*o C, set&ri%e se p&strea.&, ne-ind necesar o nou& con-i,urare/
O*ser"a2ieB
7e reco!and& s0& -ie rea%i.at directoru% de ie)ire TEMPC, pentru a se ,&i !ai u)or
-i)iere%e EXE, sau pentru a )ter,e -i)iere%e OBJ, MAP, EXE/
&.!.!. <pelarea meniului0 taste uni#ersale
Ape%area unui !eniu de pe *ara de !eniuri, se -ace cu co!*ina2ia de taste
ALTJtasta corespun.&toare pri!u%ui caracter din !eniu% dorit/
Ee!p%uB
ALTJO I!eniu% Oi%e/
ALTJO I!eniu% Options/
ALTJE I!eniu% Edit/
ALTJR I !eniu% Run/
ALTJC I!eniu% Co!pi%e/
Pentru o ape%are !ai rapid& a unui !eniu, sau a unei op2iuni dintr0un !eniu, se
pot -o%osi taste%e uni"ersa%e sau co!*ina2ia de taste/ C3nd se -o%osesc taste%e
uni"ersa%e, opera2ia curent& este 6ntrerupt& )i se eecut& opera2ia ata)at& tastei
ape%ate/ Doar 6n ca.u% c& 6n %ucru este o -ereastr& de dia%o,, se introduce
in-or!a2ia cerut& de -ereastra de dia%o, )i apoi se poate ape%a o tast& uni"ersa%&/
LIMBAJUL C TEORIE I APLICAI I E#
TA7TA Ounc2ia rea%i.at&
O: A-i)ea.& 'e%p pentru opera2ia curent&
OE 7a%"ea.& -i)ieru% curent
O1 ncarc& un -i)ier 6n procesu% de editare
OF Eecut& pro,ra!u% p3n& %a %inia curent& 4%inia pe care este cursoru%5
O# Ooca%i.areaKde-oca%i.area -erestrei curente
OG Bascu%area 6ntre -erestre%e acti"e
O= Ru%ea.& pro,ra!u% 6n !od depanare tras3nd 6n -unc2ii
O> Ru%ea.& pro,ra!u% 6n !od depanare s&rind peste -unc2ii
O9 Co!pi%are )i %e,are
O:$ Bascu%are 6ntre !eniu )i -ereastra acti"&
CTRLKO: A+utor doar 6n editare pentru o*iecte C
CTRLKOE Resetea.& pro,ra!u% HRunKpro,ra! reset
CTRLKO1 A-i)ea.& sti"a cu -unc2ii%e ape%ate
CTRLKOF E"a%uea.& sau !odi-ic& o epresie
CTRLKO= Adau,& o epresie (atc'
CTRLKO> Pune sau )ter,e un punct de 6ntrerupere
CTRLKO9 Eecut& pro,ra!u%
7YIOTKO:$ Indic& nu!&ru% "ersiuni Tur*o
ALTKO: Readuce pe ecran u%ti!u% a+utor
ALTKO1 A%e,e un -i)ier din %ista picZ
ALTKO# Bascu%area 6nte ecranu% uti%i.atoru%ui )i ecranu% Tur*o
ALTKOG Bascu%area 6ntre -ereastra (atc' )i -ereastra de !esa+e
ALTKO= 7a%t %a eroarea precedent&
ALTKO> 7a%t %a ur!&toarea eroare
ALTKO9 Co!pi%are )i rea%i.area -i)ieru%ui OBJ
ALTKB Desc'iderea !eniu%ui BreaZ
ALTKC Desc'iderea !eniu%ui Co!pi%e
ALTKD Desc'iderea !eniu%ui De*u,
ALTKE Intrarea 6n Editor
ALTKO Desc'iderea !eniu%ui Oi%e
ALTKO Desc'iderea !eniu%ui Options
ALTKP Desc'iderea !eniu%ui Pro+ect
ALTKR Desc'iderea !eniu%ui Run
ALTKX Ie)irea din Tur*o )i re"enirea 6n %inia de co!and& DO7
2.1.2.Meniul principal
Meniu% principa% per!ite a%e,erea ur!&toare%or !eniuriB
OILE Westionarea -i)iere%or, directoare%or )i ie)irea din pro,ra!u% Tur*o/
EDIT Per!ite editarea -i)ieru%ui surs&/
LIMBAJUL C TEORIE I APLICAI I EG
RUV Per!ite contro%u% eecu2iei pro,ra!u%ui re.u%tat 6n ur!a co!pi%&rii )i
%inc'edit&rii -i)ieru%ui surs&/
COMPILE Co!pi%ea.& )i crea.&-i)ieru% eecuta*i%/
PROJECT Per!ite contro%u% pro,ra!e%or cu surse !u%tip%e/
OPTIOV7 Per!ite sta*i%irea op2iuni%or de co!pi%are, de-inirea de !acrouri,
!odi-icarea -i)iere%or de con-i,urare/
DEBUW Contro%ea.& sesiunea de depanare a pro,ra!u%ui eecuta*i%/
BREAAK8ATCY Oaci%itea.& depanarea prin %ucru% cu puncte de 6ntrerupere )i
supra"e,'erea epresii%or/
2.1.2.1.4eniul 2I5E
Meniu% Oi%e poate -i ape%at prin ALTKO, sau tast3nd O 6n !eniu% principa%/
Op2iuni%e !eniu%ui B
Load I6ncarc& un -i)ier 6n editor, prin tastarea nu!e%ui -i)ieru%ui, sau se poate %&sa
-or!a ,enera%& '.6, care "a desc'ide o -ereastr&, ce con2ine %ista -i)iere%or cu
etensia C , -o%osind taste%e de na"i,are 4s&,e2i5, se se%ectea.& -i)ieru% dorit )i se
apas& Enter/
PicZ Iper!ite se%ectarea unui -i)ier din %ista u%ti!i%or > -i)iere editate, sau
se%ect3nd u%ti!a op2iune load file0 se poate speci-ica un a%t -i)ier dec3t ce%e
pre.entate/
Ve( IPer!ite crearea de -i)ier nou 6n procesu% de editare, cu nu!e%e ,eneric
VOVAME/C, care %a pri!a sa%"are poate %ua nu!e%e inpus de uti%i.ator/
7a"e I7a%"area -i)ieru%ui 6n procesu% de editare/
8rite To I7a%"area pe disc a -i)ieru%ui curent, su* un nou nu!e i!pus de
uti%i.ator/
DirectorP IA-i)ea.& %ista intr&ri%or 6ntr0un director speci-icat, sau se apas& Enter
pentru directoru% curent, per!i23nd 6nc&rcarea 6n editor a -i)ieru%ui se%ectat/
C'an,e Dir I A-i)ea.& directoru% curent )i per!ite sc'i!*area directoru%ui curent/
Os 7'e%% I Per!ite ie)irea te!porar& din !eniu% Tur*o )i introducerea de co!en.i
pe %inia DO7, iar pentru re"enire din DO7 6n !eniu, se -ace prin tastarea
cu"3ntu%ui Eit/
[uit I Per!ite p&r&sirea !ediu%ui Tur*o )i re"enire su* pro!pteru% DO7/
2.1.2.2. 4eniul Edit
Rea%i.area pro,ra!u%ui surs& se poate -ace cu orice editor A7CII, dar se
reco!and& -o%osirea editoru%ui propriu a% !ediu%ui Tur*o/
Lansarea procesu%ui de editare se -ace prin co!anda E785, din !eniu% EDIT sau
co!*ina2ia de taste <45)E , care are ca e-ect acti"area -erestrei de editare )i
cursoru% de editare se po.i2ionea.& 6n tet/
LIMBAJUL C TEORIE I APLICAI I E=
Introducerea tetu%ui se -ace nor!a% ca )i 6n a%te editoare, trecerea pe r3nd nou se
-ace ap&s3nd tasta E=5E"/
n partea superioar& a -erestrei de editare se a-%& %inia de stare, care o-er&
in-or!a2ii despre -i)ieru% ce se editea.&, starea taste%or specia%e de editare/
In-or!a2ii%e pre.entate pe %inia de stare sunt B
Line, co%, insert, ta*, -i%%, indent, nu!e%e -i)ieru%ui ce se editea.&/
Line I indic& nu!&ru% %iniei din -i)ier pe care este po.i2ionat cursoru% de editare/
Co% I indic& nu!&ru% co%oanei din -i)ier pe care este po.i2ionat cursoru% de
editare/
Insert I indic& !odu% de de editare cu posi*i%itatea de a insera tet %a po.i2ia
cursoru%ui de editare, dac& se apas& tasta Insert, se "a *ascu%a pe !odu% O"er(rite
ce are ca e-ect )ter,erea caracteru%ui de deasupra cursoru%ui de editare )i scrierea
nou%ui caracter editat/
Indent I indic& !odu% de %ucru autoindentare/
Ta* I indic& !odu% de a insera ta*uri 4spa2iu %i*er de > caractere5 6n editare/
Oi%% I dac& !odu% ta*u%are este acti", op2iunea -i%% co!p%ectea.& 6nceputu% %inii%or
cu un nu!&r opti! de ta*uri/
Unindent I per!ite ca tasta BACA7PACE s& e-ectue.e sa%t 6napoi cu un ni"e% de
indentare/
Vu!e -i)ier I indic& discu%, directoru% )i nu!e%e -i)ieru%ui ce se editea.&/
6omenzile de editare
6omenzi pentru deplasarea cursorului de editare
Dep%asarea cursoru%ui 6n cadru% -i)ieru%ui a-%at 6n procesu% de editare se rea%i.ea.&
-o%osind taste%e de na"i,are rapid& sau co!*ina2ii de taste ast-e% B
65"4); sau s&,eat& %a st3n,a I dep%asarea cursoru%ui spre st3n,a cu o po.i2ie/
65"4)7 sau s&,eat& %a dreapta I dep%asarea %a dreapta cu o po.i2ie a cursoru%ui/
65"4)< sau 65"4)sgeat st>nga I dep%asea.& cursoru% %a pri!u% caracter din
cu"3ntu% precedent/
65"4)F sau 65"4)sgeat dreapta I dep%asea.& cursoru% %a pri!u% caracter din
cu"3ntu% ur!&tor/
65"4)E sau sgeat n sus I dep%asea.& cursoru% de editare cu un r3nd 4%inie5 6n
sus/
65"4)? sau sgeat n @os I dep%asea.& cursoru% de editare cu un r3nd 4%inie5 6n
+os/
65"4)" sau AGUA I dep%asea.& cursoru% )i tetu% 6n sus cu un ecran de editare/
65"4)6 sau AG7= I dep%asea.& cursoru% )i tetu% 6n +os cu un ecran de editare/
65"4)B I dep%asea.& tetu% cu o %inie 6n +os dar cursoru% r&!3ne pe po.i2ia
curent&/
LIMBAJUL C TEORIE I APLICAI I E>
65"4)C I dep%asea.& tetu% cu o %inie 6n sus dar cursoru% r&!3ne pe po.i2ia
curent&/
65"4); sau D:EE I dep%asea.& cursoru% pe pri!a co%oan& 4%a inceputu% %iniei5
a %iniei curente/
65"4)F7 sau E=7 I dep%asea.& cursoru% pe u%ti!a co%oan& 4%a s-3r)itu% %iniei5 a
%iniei curente/
65"4)FE I dep%asea.& cursoru% pe pri!a %inie din ecranu% de editare/
65"4)F? I dep%asea.& cursoru% pe u%ti!a %inie din ecranu% de editare/
65"4)AGUA I dep%asea.& cursoru% %a pri!u% caracter din -i)ier/
65"4)AG7= I dep%asea.& cursoru% %a u%ti!u% caracter din -i)ier/
6omenzi de tergere sau inserare.
8=; I acti"ea.& sau de.acti"ea.& !odu% de inserare/
G<6H;A<6E I )ter,e caracteru% din st3n,a cursoru%ui de editare/
7E4 I )ter,e caracteru% din dreptu% cursoru%ui de editare/
65"4)5 I )ter,e cu"3ntu% din dreapta cursoru%ui de editare/
65"4)= I inserea.& o %inie 4r3nd5 ,oa%& 6n po.i2ia cursoru%ui de editare/
65"4)I I )ter,e %inia pe care este situat cursoru% de editare/
65"4)FI I )ter,e tetu% de %a po.i2ia curent& a cursoru%ui p3n& %a s-3r)itu% %iniei/
6omenzi di#erse.
5a- I inserea.& un spa2iu %i*er de > caractere sau cu o "a%oare i!pus& prin
op2iunea 5a- size din !eniu% :ptions)en#ironment/
65"4): )i F I acti"ea.& sau de.acti"ea.& !odu% de editare opti!& ast-e%B
Dac& !odu% de editare opti!& este acti" %a inceputu% -iec&rei %inii se co!p%ectea.&
cu un nu!&r opti! de spa2ii sau ta*uri/
65"4): )i 8 I acti"ea.& sau de.acti"ea.& !odu% de editare autoindentare ast-e% B
Modu% de autoindentare acti"at "a dep%asa cursoru% de editare dup& ap&sarea tastei
EVTER su* co%oana de 6nceput a %iniei %iniei anterioare/
65"4)H )i ; I sa%"ea.& -i)ieru% -&r& a p&r&si editoru%/
65"4)H )i A tip&re)te %a i!pri!ant& *%ocu% !arcat iar 6n %ipsa acestuia tip&re)te
tot -i)ieru%/
F, I 6ncarc& 6n editor un -i)ier eistent 6n procesu% de editare, sau crea.& un -i)ier
nou/
6omenzi de realizare0mutare0copiere0tergere a -locurilor.
Glocul repre.int& o por2iune de tet de%i!itat& de !arZeri/
n cadru% unui -i)ier poate eista un sin,ur *%oc asupra c&ruia se pot e-ectua
ur!&toare%e opera2ii B
LIMBAJUL C TEORIE I APLICAI I E9
Earcarea nceputului unui -loc %a po.i2ia curent& a cursoru%ui de editare prin
co!*ina2ia de taste 65"4)H )i apoi G/
Earcarea sf>ritului de -loc prin dep%asarea cursoru%ui de editare %a po.i2ia
dorit& )i rea%i.area co!*ina2iei de taste 65"4)H )i apoi H0 ce are ca e-ect
punerea 6n e"iden2& a *%ocu%ui, prin sc'i!*area cu%orii de -ond a .onei ocupat& de
*%oc/
6opierea unui -loc %a po.i2ia curent& a cursoru%ui B se dep%asea.& cursoru% de
editare %a po.i2ia dorit& )i se rea%i.ea.& co!*ina2ia de taste 65"4)H )i apoi 60 ce
are ca e-ect, copierea *%ocu%ui 6n prea%a*i% rea%i.at )i de%i!itarea acestei copii cu
!arZeri/
Jtergerea -locului se rea%i.ea.& prin co!*ina2ia de taste 65"4)H )i I0 ce are ca
e-ect )ter,erea *%ocu%ui !arcat/
<cti#area sau dezacti#area afiri -locului marcat se rea%i.ea.& prin
co!*ina2ia de taste 65"4)H )i D , dac& un *%oc este !arcat 4a-i)at cu un -ond
di-erit de restu% docu!entu%ui5, asupra %ui se pot e-ectua opera2ii%e de copiere,
!utare, ster,ere/
Eutarea unui -loc se rea%i.ea.& cu co!*ina2ia de taste 65"4)H )i K , ce are ca
e-ect !utarea *%ocu%ui !arcat %a po.i2ia curent& a cursoru%ui de editare/
8nserarea unui fiier dac& 6n cadru% -i)ieru%ui ce se editea.&, se dore)te inserarea
con2inutu%ui unui -i)ier eistent pe 'ard disc, se rea%i.ea.& co!*ina2ia de taste
65"4)H )i "0 care "a desc'ide o -ereastr& de dia%o,, 6n care se "a scrie ca%ea )i
nu!e%e -i)ieru%ui ce se inserea.&, tetu% inportat "a -i !arcat ca *%oc/
;crierea unui -loc intr-un fiier de pe 'ard disc se rea%i.ea.& prin co!*ina2ia de
taste 65"4)H )i B0 care "a desc'ide o -ereastr& de dia%o,, 6n care se "a speci-ica
ca%ea )i nu!e%e -i)ieru%ui 6n care se "a scrie *%ocu% !arcat/
Eeniul 6ompile.
Meniu% compile per!ite co!pi%area -i)ieru%ui surs& )i crearea pro,ra!u%ui
eecuta*i%/ 7e%ectarea !eniu%ui 6ompile se -ace prin co!*ina2ia de taste <45)6
sau tast3nd 6, c3nd !eniu% principa% este acti"/
Op2iuni%e !eniu%ui Co!pi%e sunt B
6ompile to o-@ I co!pi%ea.& -i)ieru% surs& scris 6n C )i crea.& un -i)ier o*iect cu
ace%a) nu!e ca )i -i)ieru% surs&, dar etensia este o*+/ A%e,erea acestei op2iuni se
poate -ace )i -o%osind co!*ina2ia de taste <45)F3/
EaLe ee file I crea.& -i)ieru% eecuta*i% prin opera2ii%e de co!pi%are )i
%inc'editare 4%e,are5, iar nu!e%e -i)ieru%ui eecuta*i% este indentic cu -i)ieru% surs&
dar "a a"ea etensia ee/
4inL ee file I rea%i.ea.& edi2ia de %e,&turi )i -i)ieru% eecuta*i%/
Guild all I crea.& -i)ieru% eecuta*i% co!pi%3nd )i %inc'edit3nd toate -i)iere%e
proiectu%ui/
Arimar9 6 file I 6ncarc& 6n editor -i)ieru% surs& sau 'eaderu% 6n care s0au detectat
erori %a co!pi%are/
LIMBAJUL C TEORIE I APLICAI I 1$
Get info I a-i)ea.& in-or!a2ii%e despre u%ti!a co!pi%are/
2.1.2.6. 4eniul 'un
Meniu% "un per!ite depanarea pro,ra!u%ui surs&, dup& ce au -ost e%i!inate
erori%e de co!pi%are )i %inc'editare/
Meniu% "un se ape%ea.& co!*ina2ia de taste <45)" sau tasta " c3nd !eniu%
principa% este acti"/
Op2iuni%e !eniu%ui Run sunt B
"un % 65"4)F3 eecut& pro,ra!u% eecuta*i% cu etensia ee, re.u%tat 6n ur!a
co!pi%&ri )i %inc'edit&ri, dac& sursa a -ost !odi-icat& de %a u%ti!a co!pi%are, "a
re-ace opera2ii%e de co!pi%are %inc'editare si apoi ru%ea.& -i)ieru% eecuta*i%/
Arogram reset % 65"4)F& 6nc'ide sesiunea curent& de depanare/
Go to cursor % F. eecu2ia pro,ra!u%ui se -ace p3n& %a po.i2ia curent& a
cursoru%ui de editare/
5race info % F2 eecu2ia pro,ra!u%ui se -ace instruc2iune cu instruc2iune,
inc%usi" 6n interioru% -unc2ii%or ape%ate, -&r& 6ns& a intra 6n -unc2ii%e de *i*%iotec&/
;tep o#er % F* eecut& pro,ra!u% instruc2iune cu instruc2iune , s&rind peste
ape%uri%e de -unc2ii, -&r& a se intra 6n interioru% -unc2iei ape%ate/
User scrin <45)F/ a-i)ea.& ecranu% uti%i.atoru%ui, re"enirea 6n procesu% de
editare se -ace ap&s3nd orice tast&/
2.1.2.7. 4eniul (ebug.
Meniu% 7e-ug se ape%ea.& -o%osind co!*ina2ia de taste <45)7 sau tast3nd 7 6n
!eniu% principa% acti"at/
Op2iuni%e !eniu%ui De*u, sunt B
E#aluate I per!ite e"a%uarea )i !odi-icarea "a%orii unei epresii, pentru
introducere de nu!e, iar e"a%uarea sau !odi-icarea desc'ide c3te o -ereastr&/
Oerestre%e -o%osite sunt B
E"a%uate
Resu%t/
Ve( "a%ue/
Find function I per!ite a-i)area 6n -ereastra de editare a de-ini2iei unei -unc2ii,
aceast& op2iune se poate uti%i.a nu!ai 6ntr0o sesiune De*u,/
6all stacL% per!ite desc'iderea unui !eniu intr0o -ereastr&, 6n care se poate
se%ecta -unc2ia, din %ista de -unc2ii ape%ate p3n& %a punctu% curent de eecu2ie a
pro,ra!u%ui )i per!ite "i.ua%i.area %iniei eecutate curent& dintr0o anu!it&
-unc2ie/
;ource de-ugging I per!ite introducerea a trei "a%ori, care "or deter!ina !odu%
de depanare introdus 6n -i)ieru% eecuta*i%/
LIMBAJUL C TEORIE I APLICAI I 1:
:n depanarea se -ace cu depanatoru% din Tur*o De*u,,er sau depanatoru%
inte,rat, )i aceast& "a%oare este i!p%icit&/
;tandalone depanarea se -ace doar cu Tur*o De*u,,er/
=one pro,ra!u% nu poate -i depanat 6n nici un !od/
7ispla9 sMapping I per!ite trei "a%ori care deter!in& ca.uri%e pentru care Tur*o
C rea%i.ea.& auto!at *ascu%area 6ntre ecranu% uti%i.atoru%ui )i ecranu% de editare 6n
cadru% unei sesiuni de depanare/
;mart trecerea se -ace %a -iecare scriere pe ecran a pro,ra!u%ui/
<lMa9s trecerea se -ace %a eecu2ia -iec&rei instruc2iuni/
=one trecerea dintr0un ecran in a%tu% nu se -ace 6n nici o situa2ie/
"efresh displa9 I re-ace con2inutu% ecranu%ui editoru%ui, dac& acesta a -ost distrus
accidenta%/
2.1.2.8. 4eniul 9rea:/;atc<.
Ape%area !eniu%ui GreaL)Match se -ace prin co!*ina2ia de taste <45)G0 sau
tast3nd G 6n cadru% !eniu%ui principa% acti"at/
Prin !eniu% BreaZK(atc' se poate e-ectua depanarea pro,ra!u%ui prin inter!ediu%
puncte%or de 6ntrerupere )i ur!&rirea epresii%or/
Op2iuni%e !eniu%ui GreaL)Match sunt B
<dd Match I per!ite introducerea unei epresii de supra"e,'ere 6n -ereastra de
ur!&rire/
7elete Match I )ter,e epresia curent& din -ereastra de ur!&rire/
Edit Match I per!ite intr0o -ereastr& separat& editarea epresiei curente din
-ereastra de ur!&rire/
"emo#e all Matches I )ter,e -ereasta de ur!&rire/
5oggle -reaLpoint I sta*i%e)te sau anu%ea.& un punct de 6ntrerupere 6n %inia 6n
care este po.i2ionat cursoru%/
6lear all -reaLpoint I )ter,e toate puncte%e de 6ntrerupere din cadru%
pro,ra!u%ui/
KieM neM -reaLpoint I dep%asea.& cursoru% %a ur!&toru% punct de intrerupere/
Ordinea de parcur,ere a puncte%or, este deter!inat& de ordinea 6n care au -ost
sta*i%ite )i nu de ordinea -i.ic& 6n -i)ier/
2.1.2.=. 4eniul o%tion&
Meniu% :ptions poate -i ape%at prin co!*ina2ia de taste <45): sau tast3nd : 6n
!eniu% principa% acti"at/
Prin inter!ediu% acestui !eniu se ape%ea.& su*!eniuri, prin care se sta*i%esc
op2iuni%e ,enera%e a%e !odu%ui de %ucru a%e co!pi%atoru%ui, !odu%ui de %ucru a%
LIMBAJUL C TEORIE I APLICAI I 1E
editoru%ui de %e,&turi, !odu% de %ucru a% depanatoru%ui, contro%ea.& %oca2ii%e
-i)iere%or, ar,u!ente%e pro,ra!u%ui/
7u*!eniuri%e !eniu%ui Options sunt B
6ompiler. 4inLer. En#ironment.
7irectories. <rguments. ;a#e options. "etrie#e options.
6:EA84E.
7u*!eniu% 6ompile per!ite sta*i%irea op2iuni%or co!pi%atoru%ui prin indicarea
!ode%u%ui de !e!orie,editarea !acrode-ini2ii%or,op2iuni pentru crearea -i)ieru%ui
o*iect, speci-icarea procesoru%ui pentru care se ,enerea.& codu%, a !ode%u%ui 6n
"ir,u%& -%otant&, !odu%ui de a%iniere, etc/
:piunea Eodel/
Per!ite sta*i%irea !ode%u%ui de !e!orie B
58=I/ I GF Ao pentru cod,date )i ta*e%e/
7MALL/ I GFAo pentru cod J GF Ao pentru date/
EE78UE/ I GFAo pentru date statice )i : Mo pentru cod/
6:EA<65/ I G# Ao pentru cod )i : Mo pentru date/
4<"GE. I :Mo pentru date )i : Mo pentru cod/
DUGE. I : Mo pentru date, :Mo pentru cod )i GF Ao pentru date statice/
:piunea 7efines/
Per!ite introducerea de !acrode-ini2ii pentru preprocesor/
MAXI#$L
7i!*o%u% MAX a -ost de-init cu "a%oarea #$/
:piunea 8nstruction set/
Per!ite speci-icarea procesoru%ui pentru care se "a ,enera codu%/
:piunea Floating point/
Per!ite sta*i%irea !odu%ui de %ucru 6n "ir,u%& -%otant&/
Uti%i.are coprocesor !ate!atic >$>=, >$E>=
E!u%are coprocesor !ate!atic
Vone H nu se -o%ose)te "ir,u%& -%otant&/
LIMBAJUL C TEORIE I APLICAI I 11
3. Structura unui program surs n limbajul .
Ce% !ai scurt pro,ra! surs& C este de -or!aB
&o' (an )*
+
,
Acest pro,ra! nu -ace ni!ic, dar este pro,ra!u% !ini!a% pe care co!pi%atoru% C
6% poate co!pi%a/
&o' (an )* este o -unc2ie/ Ounc2ia "oid !ain 45 nu poate %ipsi din nici un
pro,ra! C, -iind -unc2ia de intrare 6n pro,ra!/ Dup& nu!e%e -unc2iei, )i ce%e dou&
parante.e ur!ea.& o parante.& aco%ad& desc'is&, respecti" o parante.& aco%ad&
6nc'is&/ Ce%e dou& parante.e de-inesc corpu% -unc2iei/
Un pro,ra! C care "a a-i)a un !esa+ esteB
-n#./'e <st'o012
&o' (an )*
+
prnt")3A#est pro4ra( a"sea5a /n (esa63*7
prnt")38nA#esta este (esa6/.3*7
,
n acest pro,ra!, 6n corpu% -unc2iei "oid !ain 45 a"e! dou& r3nduri 6n p%us/ Un
r3nd care este ter!inat prinL 4punct )i "ir,u%&5 se nu!e)te o instruciune/ n ca.u%
nostru -unc2ia "oid !ain 45, con2ine dou& instruc2iuni/ Ounc2ia "oid !ain 45 poate
con2ine oric3te instruc2iuni dori!, -iecare instruc2iune tre*uind separat& prinL/
<o! anticipa )i "o! de."&%ui -aptu% c& print-45 4cu"3ntu% c'eie care apare 6n ce%e
dou& instruc2iuni5 este tot o -unc2ie, dar o -unc2ie de *i*%iotec&, adic& inc%us& 6n
%i!*a+/ Ounc2ia print-45 este -o%osit& pentru a-i)area !esa+e%or pe ecran/ Ounc2ia
print-45 este ec'i"a%ent& cu instruc2iunea (rite din Pasca%/
Oa2& de ce%e%a%te %i!*a+e de pro,ra!are, %i!*a+u% C nu are un set de instruc2iuni de
*a.&/ Ast-e%, pentru a -o%osi -unc2ia print-45, "a tre*ui s& indic&! nu!e%e -i)ieru%ui
*i*%iotec& 6n care aceast& -unc2ie este dec%arat&/ Ounc2ia print-45 este dec%arat& 6n
-i)ieru% stdio/', etensia ' pro"ine de %a nu!e%e 'eader, )i este un -i)ier de
*i*%iotec& care con2ine o !u%2i!e de -unc2ii de intrareKie)ire 4standard
inputKoutput5/
Pentru a inc%ude acest -i)ier 'eader 6n pro,ra!u% nostru, "o! ad&u,a un cu"3nt
c'eie %a 6nceputu% -i)ieru%ui, su* -or!aB
-n#./'e <st'o012
Cu"inte%e c'eie care 6ncep cu si!*o%u% \ 4die.5, se nu!esc directi"e procesor, sau
directi"e preprocesor/ In ca.u% nostru a! -o%osit directi"a inc%ude care inc%ude
-i)ieru% stdio/' 6n pro,ra!u% nostru/
7e re!arc& -aptu% c& %i!*a+u% C este un %i!*a+ *a.at pe -unc2ii/ Pe %3n,& -unc2ii%e
de *i*%iotec& )i -unc2ia "oid !ain 45, pute! de-ini )i -unc2ii proprii care ne a+ut& %a
se,!entarea pro,ra!u%ui/ De-inirea -unc2ii%or "a -i descris& !ai pe %ar, 6n
capito%u% Ounc2ii/
LIMBAJUL C TEORIE I APLICAI I 1F
7& "ede! un pro,ra! C !ai co!p%e )i s& 6ncerc&! s& pune! 6n e"iden2&
di-erite%e p&r2i a%e unui pro,ra! C/
-n#./'e <st'o012
-'e"ne P9 :01;1<
&o' tt./)*7
&o' (an )*
+
nt ra5a=<7
".oat ara7
ara=P9*ra5a*ra5a7
tt./)*7
prnt")3Ara #er#/./ 'e ra5a =' este ="3, ra5a, ara*7
,
&o' tt./)*
+
/* >/n#te #are a"sea5a /n (esa6*/
prnt")3Pro4ra( pentr/ #a.#/./. are /n/ #er#3*7
,
Pro,ra!u% nostru C con2ine %a 6nceput .ona directi"e%or preprocesor/ Directi"a
\inc%ude a! "&.ut0o !ai sus/ Directi"a \de-ine per!ite de-inirea unor constante/
In ca.u% nostru a! de-init constanta PI/
Pro,ra!u% con2ine dou& -unc2iiB -unc2ia "oid !ain 45 )i -unc2ia tit%u45/ Toate
-unc2ii%e de-inite de uti%i.ator, 6n ca.u% nostru -unc2ia tit%u45, tre*uiesc dec%arate %a
6nceputu% -i)ieru%ui, dup& .ona directi"e%or preprocesor/
Ounc2ia tit%u45 care este de-init& dup& -unc2ia "oid !ain 45 con2ine o sin,ur&
instruc2iune/ Inainte de instruc2iunea print-45, 6n corpu% -unc2iei tit%u45, a"e! un
tet cuprins 6ntre si!*o%uri%e KQ )i QK/ Acest tet se nu!e)te comentariu )i este
-o%osit pentru a -urni.a %&!uriri pri"ind p&r2i a%e pro,ra!u%ui, pentru pro,ra!ator/
Tete%e cuprinse 6ntre KQ )i QK sunt i,norate de c&tre co!pi%ator/
La 6nceputu% -unc2iei "oid !ain 45 este .ona de dec%arare a "aria*i%e%or/ In
pro,ra!u% nostru a"e! o "aria*i%& 6ntrea,& nu!it& ra.a, ini2ia%i.at& %a "a%oarea #,
)i o "aria*i%& rea%& nu!it& aria/
n continuare, -unc2ia "oid !ain 45 con2ine trei instruc2iuniB o instruc2iune de
ca%cu%, o instruc2iune de ape% a -unc2iei tit%u45 )i o instruc2iune de tip&rire -o%osind
-unc2ia print-45/
Aten2ie, %i!*a+u% C -ace distinc2ie intre %itere%e !ari )i !ici/
3.1. rearea unui program
Pentru a crea un pro,ra! 4un eecuta*i%5, -o%osind %i!*a+u% C, tre*uiesc parcurse
trei etapeB
:/ Crearea -i)ieru%ui surs& C
LIMBAJUL C TEORIE I APLICAI I 1#
E/ Co!pi%area pro,ra!u%ui
1/ LinZeditarea pro,ra!u%ui
Crearea -i)ieru%ui surs& C poate -i -&cut& 6n editoru% pro,ra!u%ui Tur*o C/
Pentru a crea un -i)ier surs&, se %ansea.& pro,ra!u% Tur*o C )i se desc'ide
!eniu% OILE cu co!*ina2ia ALTKO, apoi cu s&,eat& 6n +os se se%ectea.& op2iunea
VE8 care are ca e-ect desc'iderea auto!at& a -erestrei de editare/
7e editea.& %inie cu %unie -i)ieru%/ Tre*uiesc respectate re,u%i%e de sinta&, dup&
cu! au -ost pre.entate !ai sus/
Tetu% pro,ra!u%ui surs& poate -i sa%"at 6ntr0un -i)ier pe disc, se%ect3nd co!anda
7a"e din !eniu% Oi%e 4A%tJO5/ In -ereastra de dia%o, desc'is& %a pri!a sa%"are "a
apare nu!e%e ,eneric VOVAME/C, se tastea.& nu!e%e -i)ieru%ui 4respect3nd
con"en2ia DO75 )i se apas& tasta NEnterM/La o nou& sa%"are a -i)ieru%ui nu !ai
este necesar indicarea nu!e%ui -i)ieru%ui, consider3ndu0se "ec'iu% nu!e/
Dac& se dore)te op2inerea !ai !u%tor -i)iere surs& cu con2inut pu2in di-erit , se
reco!and& -o%osirea op2iunii 8rite to care desc'ide o nou& -ereastr& de dia%o, , 6n
care se "a speci-ica nu!e%e ce se d& -i)ieru%ui dup%icat, care ur!ea.& a -i
!odi-icat/
6ompilarea pro,ra!u%ui surs& se poate -ace se%ect3nd co!anda Co!pi%e to OBJ
din !eniu% Co!pi%e 4A%tJC5/ Co!pi%area crea.& un -i)ier o*iect 4o*+ect -i%e5/
Oi)ieru% o*iect este un -i)ier *inar cu etensia o*+, care con2ine trans-or!area
instruc2iuni%or cuprinse 6n -i)ieru% surs& C 6n instruc2ini care pot -i eecutate de
procesor 4cod !a)in&5/ Oi)ieru% o*+ nu poate -i ru%at direct de c&tre siste!u% de
operare/ E% este un -i)ier inter!ediar/n ur!a procesu%ui de co!pi%are , dac& sunt
erori de sinta& sau de ape%are a -unc2ii%or, acestea "or -i a-i)ate intr0o -ereastr& de
!esa+e, cu speci-icarea erorii )i po.i2ia 6n pro,ra! a erorii/
7e "or ana%i.a erori%e )i cau.e%e ce au produs aceste erori , iar dac& aceste erori
sunt ,reu de e%i!inat se "a ana%i.a cu aten2ie !eniuri%e %ui Tur*o C, respecti"
c&i%e de c&utare pentru -i)iere%e necesare %ucru%ui/
7e "or e%i!ina toate erori%e )i a*ia apoi se poate trece %a pasu% ur!&tor/
4inLeditarea -i)ieru%ui o*iect se poate -ace se%ect3nd co!anda LinZ to EXE din
!eniu% Co!pi%e 4A%tJC5/ LinZeditarea "a ad&u,a -i)ieru%ui o*iect, cod !a)in&
care per!ite accesu% %a dispo.iti"e%e de intrareKie)ire pentru un anu!it siste! de
operare/ In ur!a %inZedit&rii re.u%t& -i)ieru% eecuta*i%, cu etensia ee/ Acest
-i)ier, care se nu!e)te )i -i)ier pro,ra!, sau pro,ra! pe scurt, poate -i ru%at
4eecutat5 de c&tre siste!u% de operare/
6ompilarea)4inLeditarea poate -i -&cut& )i 6ntr0un sin,ur pas dac& se se%ectea.&
co!anda Run din !eniu% Run 4A%tJR5/ Aceast& co!and& co!pi%ea.&,
%inZeditea.& )i %ansea.& 6n eecu2ie pro,ra!u% nostru/
LIMBAJUL C TEORIE I APLICAI I 1G
3.2. !ipuri de date.
Un tip de dat& repre.int& o !u%2i!e de "a%ori pe care %e poate %ua o dat&/ In C
eist& tipuri de date standard )i tipuri de date de-inite de uti%i.ator/ Tipuri%e de
date standard 6n C "or -i pre.entate !ai +os/
6.2.1. Ti%ul >ntreg
Per!ite repre.entarea nu!ere%or 6ntre,i/ Tipuri !ai u.ua%e suntB
Vu!e%e
tipu%ui
Do!eniu% de "a%ori Lun,i
!ea
6n
octe2i
Repre.entare
unsi,ned
c'ar
$ ] E## : 6ntre, -&r& se!n
unsi,ned
int
$ ] G##1# E 6ntre, -&r& se!n
int 01E=G> ] 1E=G= E 6ntre, cu se!n
%on, 0E/:F=/F>1/GF> ]
E/:F=/F>1/GF=
F 6ntre, cu se!n
Dac& se dep&)e)te do!eniu% de "a%ori a% unui tip de dat&, -ie "a -i se!na%at& o
eroare %a eecu2ie, -ie re.u%tatu% a-i)at "a -i eronat/
6.2.2. Ti%ul real
Per!ite repre.entarea nu!ere%or rea%e/ Aten2ie, repre.entarea nu!ere%or rea%e 6n
orice siste! de ca%cu% este aproi!ati"&, pentru c& nu!&ru% de .eci!a%e care poate
-i re2inut este %i!itat de tipu% de dat&/
Vu!e%e tipu%ui Do!eniu% de "a%ori Lun,i!ea
6n octe2i
Repre.entare
-%oat 1/FE01> ] 1/FEJ1> F "ir,u%& !o*i%&
dou*%e :/=E01$> ] :/=EJ1$> > "ir,u%& !o*i%&
%on, dou*%e 1/FE0F91E ] :/:EJF91E :G "ir,u%& !o*i%&
6.2.6. Ti%ul caracter
Este -or!at din caractere%e codu%ui A7CII/ Codu% A7CII per!ite repre.entarea a
E#G de caractere/ Tipu% caracter este re2inut pe un octet/
Vu!e%e tipu%ui Do!eniu% de "a%ori Lun,i!ea
6n octe2i
Repre.entare
unsi,ned c'ar $ ] E## : 6ntre, -&r& se!n
c'ar 0:E> ] :E= : 6ntre, cu se!n
LIMBAJUL C TEORIE I APLICAI I 1=
3.3. onstante "i #ariabile
3.3.1. onstante
In C constante%e tre*uiesc precedate de cu"3ntu% c'eie const/ Dec%ararea unei
constante se -aceB
#onst ?tp/. 'e 'ata@ n/(e.eA#onstante = &a.oarea7
O constant& nu poate -i ini2ia%i.at& dec3t odat& cu dec%ararea ei/ Dac& tipu% de dat&
nu este preci.at, constanta este i!p%icit de tip 6ntre,/ Constante%e tre*uiesc
dec%arate %a 6nceputu% -unc2iei, sau %a inceputu% -i)ieru%ui dup& directi"e%e
preprocesor/
-n#./'e <st'o012
#onst a=B7
&o' (an )*
+
#onst b=:7
#onst ".oat p=:01;1<7
C
,
n pro,ra!u% de !ai sus, constanta a este dec%arat& dup& directi"e%e preprocesor/
Ea este i!p%icit de tip 6ntre, )i are "a%oarea E/ Constante%e * )i pi sunt dec%arate %a
6nceputu% -unc2iei !ain/ Constanta * este de tip 6ntre, )i are "a%oarea 1, pe c3nd
constanta pi este de tip -%oat )i are "a%oarea 1/:F:#L
Vu se per!it opera2ii de !odi-icare a "a%oari%or constante%or prin atri*uire,
co!pi%atoru% se!na%3nd o eroare %a co!pi%are/
-n#./'e <st'o012
#onst a=B7
&o' (an )*
+
#onst b=:7
#onst ".oat p=:01;1<7
C
a=;7 Eroare/ 7e 6ncearc& !odi-icarea "a%orii unei
constante
p=:01;7 Eroare/ 7e 6ncearc& !odi-icarea "a%orii unei
constante
,
3.3.2. $ariabile
Dec%ararea unei "aria*i%e 6n C se -aceB
tp/.A'eA'ata n/(e.eA&arab.e ?=&a.oare@7
<aria*i%e%e tre*uiesc dec%arate %a 6nceputu% -unc2iei, sau %a 6nceputu% -i)ieru%ui
dup& directi"e%e preprocesor/ <a%ori%e "aria*i%e%or pot -i !odi-icate pe parcursu%
pro,ra!u%ui/
LIMBAJUL C TEORIE I APLICAI I 1>
-n#./'e <st'o012
nt a=B7
&o' (an )*
+
nt b=:, #7
".oat '7
#1ar #1=DaD7
C
a=;7 Corect/ 7e !odi-ic& "a%oarea "aria*i%ei a/
#1=D1D7 Corect/ 7e !odi-ic& "a%oarea "aria*i%ei d/
,
<aria*i%e%e a, * )i c sunt de tip 6ntre,/ <aria*i%a a este dec%arat& %a 6nceputu%
-i)ieru%ui dup& directi"e%e preprocesor )i este ini2ia%i.at& cu "a%oarea E/ <aria*i%e%e
* )i c sunt dec%arate %a 6nceputu% -unc2iei !ain, "aria*i%a * este ini2ia%i.at& cu
"a%oarea E, "aria*i%a c este neini2ia%i.at&/ <aria*i%a d este de tip -%oat )i este
neini2ia%i.at&/ <aria*i%a c' este de tip c'ar )i este ini2ia%i.at& cu "a%oarea a/
7& re2ine! c& operatoru% I 6n C este operatoru% de atri*uire/ Re!arc&! c& tipu%ui
de dat& caracter i se poate atri*ui o "a%oare caracter/ O "a%oare caracter 6n C este
repre.entat& prin ^caracter^/ In ca.u% nostru, "aria*i%a caracter c' este ini2ia%i.at& cu
"a%oarea a/
3.3.2.1. $ariabile locale "i globale
A! "&.ut !ai sus c& "aria*i%e%e pot -i dec%arate -ie %a 6nceputu% -i)ieru%ui dup&
directi"e%e preprocesor, -ie 6n interioru% unei -unc2ii/ <aria*i%e%e care sunt
dec%arate 6n interioru% unei -unctii 46ntre aco%ade5 se nu!esc "aria*i%e %oca%e/
<aria*i%e%e %oca%e pot -i -o%osite doar 6n interioru% -unc2iei 6n care au -ost dec%arate/
<aria*i%e%e care au -ost dec%arate %a 6nceputu% -i)ieru%ui, dup& directi"e%e
preprocesor, pot -i -o%osite 6n toate -unc2ii%e pro,ra!u%ui/ Aceste "aria*i%e se
nu!esc "aria*i%e ,%o*a%e/
-n#./'e <st'o012
&o' test)*7
nt a=B7 <aria*i%a a este ,%o*a%&/
&o' (an )*
+
nt b7 <aria*i%a * este %oca%& 6n -unc2ia "oid !ain 45/
".oat p=:01;1<7
test)*7
,
&o' test)*
+
nt #7 <aria*i%a c este %oca%& 6n -unc2ia test45/
#=b*B7 Eroare/ <aria*i%a * este %oca%& 6n -unc2ia "oid !ain 45/
#=a*B7
,
n pro,ra!u% de !ai sus, "aria*i%a a este o "aria*i%& ,%o*a%& de tip 6ntre,,
ini2ia%i.at& cu E/ <aria*i%a * este o "aria*i%& de tip 6ntre, %oca%& 6n -unc2ia "oid
LIMBAJUL C TEORIE I APLICAI I 19
!ain 45, "aria*i%a de tip -%oat pi este %oca%& 6n -unc2ia "oid !ain 45 )i este
ini2ia%i.at& cu "a%oarea 1/:F:#/
<aria*i%a c de tip 6ntre, este %oca%& 6n -unc2ia test45/ Instruc2iunea cI*QEL "a
produce o eroare %a co!pi%are pentru c& "aria*i%a * -iind %oca%& 6n -unc2ia "oid
!ain 45 nu poate -i -o%osit& 6n -unc2ia test45/ Instruc2iunea cIaQEL este corect&
pentru c& "aria*i%a a este ,%o*a%&/
3.3.2.2. on#enia de denumire a #ariabilelor "i constantelor.
De)i nici c'iar p&rin2ii %i!*a+u%ui nu au !en2ionat de o con"en2ie de denu!ire a
"aria*i%e%or sau constante%or, 6n practica !odern& de pro,ra!are se reco!and&
-o%osirea unei con"en2ii de denu!ire a acestora pentru a u)ura !unca
pro,ra!atoru%ui/ In ca.u% pro,ra!e%or !ari, care con2in !ii de instruc2iuni, este
necesar& respectarea unei ordini pri"ind denu!irea "aria*i%e%or/ De ee!p%u, dac&
a! dec%arat o "aria*i%& de tip 6ntre, cu nu!e%e a, )i unde"a 6n pro,ra! 6i "o!
atri*ui "a%oarea 1/F, uit3nd -aptu% c& "aria*i%a este de tip 6ntre,, "aria*i%a a "a
con2ine doar 1, adic& partea 6ntrea,& a "a%orii/ Acest %ucru duce %a re.u%tate
eronate 6n continuare/ Autorii reco!and& -o%osirea a unu 0 trei %itere 6n -a2a
nu!e%ui unei "aria*i%e, pentru a indica tipu% de dat& a "aria*i%ei/
De ee!p%u
ntra5a, nt#ontor se!ni-ic& "aria*i%e de tip int
".are, ".x1 se!ni-ic& "aria*i%e de tip -%oat
.n4a, .n4b se!ni-ic& "aria*i%e de tip %on,
'b.s/(a, 'b."x se!ni-ic& "aria*i%e de tip dou*%e
#1nta.a, #1#o' se!ni-ic& "aria*i%e de tip c'ar
s5n/(e se!ni-ic& "aria*i%e de tip )ir de caractere/
3.%. &uncii. Introducere
Un pro,ra! scris 6n %i!*a+u% C este a%c&tuit din una sau !ai !u%te -unc2ii/ O
-unc2ie are ur!&toarea structur& B
TpA'eA'ata N/(e)Esta 'e#.arat.or para(etr.or "or(a.*
+
De#.arat7
9nstr/#t/n7
,
Pri!u% r3nd repre.int& antetu% -unc2iei, iar .ona dintre parante.e%e aco%ad&
repre.int& corpu% -unc2iei/
n %i!*a+u% C -unc2ii%e returnea.& sau nu o "a%oare )i 6n ca.u% c& returnea.&, tipu%
-unc2iei este indentic cu tipu% "a%oarei returnate 4int, -%oat, dou*%e, c'ar5, iar 6n
ca.u% c& nu returnea.& o "a%oare tipu% -unc2iei este "oid care tre*uie indicat, 6n
ca.u% c& nu este indicat se consider& c& -unc2ia returnea.& o "a%oare de tip 6ntre,,
c'iar dac& 6n cadru% -unc2iei nu este speci-icat ep%icit c& returnea.& o "a%oare/
O -unc2ie poate a"ea .ero sau !ai !u%2i para!etrii -or!a%i, 6n ca.u% c& nu are
para!etrii -or!a%i se "a speci-ica prin cu"3ntu% "oid sau nu se "a scrie ni!ic 6ntre
LIMBAJUL C TEORIE I APLICAI I F$
parante.e, 6n ca.u% c& sunt !ai !u%2i para!etri -or!a%i, ace)tia sunt separa2i prin
"ir,u%& 6ntre ei/
Prin inter!ediu% para!etri%or se trans-er& date%e de %a ape%area -unc2iei 6n
interioru% -unc2iei/ Mai +os, sunt pre.entate c3te"a ee!p%e/
&o' (an)&o'* sau &o' &o' (an )* -unc2ia principa%& cu nu!e%e (an
nu returnea.& "a%oare )i nu are para!etrii -or!a%i/
".oat "a#tora. )nt n* -unc2ia cu nu!e%e "a#tora. returnea.& o "a%oare
de tip ".oat )i are un para!etru -or!a% cu nu!e%e
n de tipu% nt/
p/ts )3Fr 'e #ara#tere3* -unc2ii standard de *i*%iotec& pentru a-i)area pe
!onitor a )iru%ui de caractere inc%use intre _ _/
".oat "xG )nt n, ".oat x* -unc2ia cu nu!e%e "xG returnea.& o "a%oare de tip
".oat )i necesit& %a ape%are para!etri -or!a%i de
tipu% nt, ".oat/
n cadru% unui pro,ra! o -unc2ie are o sin,ur& de-ini2ie, dar poate -i ape%at& de
!ai !u%te ori/ Ape%area unei -unc2ii se e-ectuea.& prin nu!e%e -unc2iei ur!at de
%ista para!etri%or e-ecti"i ast-e% B
N/(e ).sta para(etr.or e"e#t&*7
Para!etrii e-ecti"i pot -i o epresie, un nu!e de "aria*i%&/ Para!etrii e-ecti"i
tre*uie s& corespund& cu para!etrii -or!a%i ai -unc2iei prin ordine )i tip/ Dac&
-unc2ia returnea.& o "a%oare ea se ape%ea.& ca un operand din cadru% unei epresii/
a="a#tora. )6*7 -unc2ia -actoria% "a returna 6n "aria*i%a a "a%oarea
re.u%tat& prin ca%cu%u% -unc2iei cu para!etru% e-ecti" +/
Dac& para!etrii e-ecti"i sunt nu!e de ta*%ouri, o*%i,atoriu 6n antetu% -unc2iei se "a
indica para!etrii -icti"i ca -iind ta*%ouri/
'o/b.e a ?10@7
nt n7
C
#t( )n,n,a*7
C
Ounc2ia cit! "a a"ea antetu% B
&o' #t( )nt n, nt (, 'o/b.e ?@* sau
&o' #t( )nt n, nt (, 'o/b.e ?10@*
3.%.1. &uncii standard de intrare ie"ire
7etu% de opera2ii care per!it trans-eru% de date 6ntre peri-erice )i pro,ra!
-or!ea.& opera2ii%e de intrare ie)ire, opera2ii%e de introducere a date%or de %a un
peri-eric se nu!esc opera2ii de citire, iar opera2ii%e de ie)ire a date%or spre un
peri-eric se nu!esc opera2ii de scriere sau a-i)are 4tip&rire5/
Li!*a+u% C nu dispune de instruc2iuni speci-ice opera2ii%or de intrare ie)ire )i
pentru a rea%i.a aceste opera2ii -o%ose)te -unc2ii standard de intrare ie)ire/
Ounc2ii%e uti%i.ate ce% !ai -rec"ent sunt B
4et#1)*, 4ets)*, s#an")* pentru citirea dare%or de %a tastatar&,
p/t#1)*, p/ts)*, prnt")* pentru tip&rirea date%or pe ecran/
LIMBAJUL C TEORIE I APLICAI I F:
Ounc2ia 4et#1)* cite)te de %a tastatur& caracteru% tastei ap&sate -&r& ecou pe
ecranu% !onitoru%ui, )i returnea.& codu% A7CI I a% caracteru%ui/ Ape%u% -unc2iei se
-ace ast-e% B
4et#1 )*7 c3nd se dore)te s& se apese o tast& pentru
continuarea pro,ra!u%ui )i "i.ua%i.area -erestrei uti%i.atoru%ui/
p/t#1 )4et#1 )**7 c3nd -unc2ia ,etc' returnea.& codu% A7CII pentru
a -i a-i)at de -unc2ia putc'/
La ape%area -unc2iei 4et#1)* dac& se apas& tasta EVTER "a%oarea returnat& este
:1/
Ounc2ia 4ets)* cite)te de %a tastatur& un )ir de caractere ter!inat prin ap&sarea
tastei NEnterM/ Ounc2ia 4ets)* returnea.& adresa de 6nceput a .onei de !e!orie 6n
care se p&strea.& )iru% de caractere citite de %a tastatur&/ Citirea se e-ectuea.& cu
ecou pe ecranu% !onitoru%ui/ Para!etru% -unc2iei ,ets45 este adresa unui ta*%ou
unidi!ensiona% de tip c'ar 4caracter5, ape%u% -unc2iei ,ets45 este precedat de o
dec%ara2ie a unui ta*%ou de tip caracter ast-e% B
#1ar tabe.1 ?B0@7 dec%ararea unui ta*%ou cu nu!e%e ta*e%: de tip
c'ar cu %un,i!ea E$/
]
4ets ) tabe.1*7 cite)te )iru% de caractere )i 6% trans-er& %a adresa
%ui ta*e%:/
Ounc2ia s#an")* per!ite citirea date%or de %a tastatur& respect3nd un -or!at de
citire, iar ape%u% -unc2iei este de -or!a B
s#an" )#ontro., para(etr/1, para(etr/B, C, para(etr/.n*7
unde #ontro. este un )ir de caractere ce de-inesc -or!ate%e de citire a date%or de
intrare, para(etr/.1, para(etr/.B, C, sunt adrese%e %a care se p&strea.& date%e
citite/
7peci-icatorii de -or!at de-inesc con"ersii%e din -or!ate eterne 6n ce%e interne )i
6ncep cu caracteru% procent ` ur!at de : sau E %itere ce de-inesc -or!atu% ast-e% B
=# se -o%ose)te pentru a citi un sin,ur caracter,
#1ar '7
s#an" )H=#I,J' *7 cite)te caracteru% curent )i depo.itea.& codu%
A7CII a% caracteru%ui citit %a adresa "aria*i%ei d de tip caracter/
=s se -o%ose)te pentru a citi un )ir de caractere ter!inat prin caracteru% a%*
4spa2iu5, -ie %a caracteru% prin care se a+un,e %a %un,i!ea !ai!& de caractere
speci-icat& de -or!atu% de citire/ Dup& u%ti!u% caracter citit se p&strea.& auto!at
caractru% VUL/
#1ar text1 ?1<@7
LIMBAJUL C TEORIE I APLICAI I FE
s#an" )H=sI,Jtext1*7 se tastea.& LABORATOR, )iru% de caractere
LABORATOR este citit )i pus %a adresa ta*%ou%ui
tet:/

#1ar text1 ?;@7
#1ar textB ?<@7
s#an" )H=;sI,Jtext1*7
s#an" )H=<sI,JtextB*7 se tastea.& LABORATOR, )iru% de caractere
LABORATOR este citit )i pri!e%e F caractere
LABO sunt puse %a adresa ta*%ou%ui tet: iar
caractere%e RATOR sunt puse %a adresa ta*%ou%ui
tetE/
=' se -o%ose)te pentru a citi "a%ori 6ntre,i din do!eniu% H1E=G> %a J1E=G=, nu!e%e
poate -i precedat de se!nu% !inus )i op2iona% de se!nu% p%us/ Ounc2ia scan-
returnea.& o "a%oare 6ntrea,& I cu nu!&ru% de c3!puri citite corect/ Dac& 6n
speci-icatoru% de -or!at sunt dispuse ci-re, ce indic& %un,i!ea !ai!& a
c3!puri%or ce se citesc, este indicat s& se introduc& cu !are aten2ie )iru% de date
ce ur!ea.& a -i citite/
nt 7
s#an" )H='I,J*7 se cite)te o "a%oare intrea,& )i se stoc'ea.& %a
adresa "aria*i%ei i de tip int 4intre,5/
nt .,(,n 7 dec%ararea a trei "aria*i%e de tip int 4intre,5/
s#an" )H1=' =:' =B'I,J.,J(,Jn5 L dac& se tastea.& G#1E=G "a%oarea G "a -i
p&strat& 6n "aria*i%a %, "a%oarea #1E "a -i p&strat&
6n "aria*i%a ! iar "a%oarea =G "a -i p&strat& 6n
"aria*i%a n, respect3ndu0se %un,i!ea -or!ate%or
de citire/
Dac& data de intrare este a:E1F# -unc2ia scan- nu "a citi consider3nd c& este o
eroare, 6nceputu% datei 6ncepe cu un caracter di-erit de ci-r& )i "a returna "a%oarea
.ero/
=o se -o%ose)te pentru a citi un 6ntre, octa%
=x =K se -o%ose)te pentru a citi un 6ntre, de tip 'ea.eci!a%, ci-re%e 'ea.eci!a%e
!ai !ari de 9 se "or repre.enta prin %itere !ari sau !ici/
=/ se -o%ose)te pentru a citi 6ntre, .eci!a% de tipu% unsi,ned/
=" se -o%ose)te pentru a citi nu!ere%e .eci!a%e cu sau -&r& eponent )i p&strate 6n
-or!at -%otant si!p%& preci.ie, 6n do!eniu% !odu% 1,Fa:$
01>
1,Fa:$
1>
a date%or de
tip -%oat,
".oat a1,b7 dec%ara2ii de tip -%oat pentru a: )i *
LIMBAJUL C TEORIE I APLICAI I F1
s#an" )H=" ="I,Ja1,Jb*7 citirea a dou& "a%ori separate prin caracteru%, de
-or!at -%oat )i depo.itarea "a%ori%or citite %a
adrese%e %ui a: )i */
=." se -o%ose)te pentru a citi nu!ere%e .eci!a%e cu sau -&r& eponent )i p&strate 6n
-or!at -%otant du*%& preci.ie 6n do!eniu% :,=a:$
01$>
:,=a:$
1$>
a date%or de tip
dou*%e,
'o/b.e a 7 dec%ararea "aria*i%ei a de tip dou*%e
s#an" )H=."I,Ja*7 citirea unei date rea%e de tip dou*%e, care se
atri*uie "aria*i%ei a/
=E" se -o%ose)te pentru a citi nu!ere%e .eci!a%e cu sau -&r& eponent )i p&strate 6n
-or!at -%otant %on, dou*%e 6n do!eniu% 1,Fa:$
0F91E
:,:a:$
F91E
/
Ounc2ia p/t#1)* a-i)ea.& un sin,ur caracter pe !onitor )i are ca para!etru o
epresie sau o ape%are a -unc2iei 4et#1)*,
p/t#1 )4et#1 )**7 "a a-i)a caracteru% citit de -unc2ia ,etc'/
Ounc2ia p/ts)* a-i)ea.& pe !onitor )iru% de caractere de%i!itate de du*%u apostro-
sau )iru% de caractere din cadru% unui ta*%ou unidi!ensiona%/
p/ts )H8n Apasa o tasta pentr/ ter(narea pro4ra(/./I*7
are ca e-ect trecerea cursoru%ui de a-i)are pe r3nd nou datorit& caractere%or 8n )i
apoi se "a a-i)a )iru% de caractere Apasa o tasta pentr/ ter(narea
pro4ra(/.//
Ounc2ia prnt")* este -o%osit& pentru a a-i)a su* contro%u% unui -or!at, date%e de
ie)ire, -o%osind ape%area ast-e% B
prnt" )#ontro., para(etr/1, para(etr/B, C*7
unde #ontro. este un )ir de caractere care indic& -or!ate%e de a-i)are )i tetu% ce
se poate a-i)a, para(etr/1, para(etr/B, C, pot -i epresii sau denu!irea
"aria*i%e%or a c&ror "a%oare se "a a-i)a/
=# se -o%ose)te pentru a a-i)a un sin,ur caracter,
#1ar '7
prnt" )H=#I,'*7 a-i)ea.& caracteru% stocat %a adresa "aria*i%ei d,
de tip caracter/
=s se -o%ose)te pentru a a-i)a un )ir de caractere p&strat 6ntr0un ta*%ou,
#1ar text1 ?1<@7
prnt" )H=sI,text1*7 se a-i)ea.& )iru% de caractere pus %a adresa
ta*%ou%ui tet:/
prnt" )H=sI,IertonI*7 se a-i)ea.& )iru% de caractere erton dispuse intre @
@ /
Dac& 6n -or!atu% de tip&rire se -o%osesc "a%ori nu!erice, care s& indice %un,i!ea
.onei de a-i)are , "a a-ecta ast-e% tip&rirea B
prnt" )H*=8s*I,IertonI*7 se a-i)ea.& 6ntre caractere%e Q Q pe un spa2iu de >
caractere cu"3ntu% erton ast-e% B
LIMBAJUL C TEORIE I APLICAI I FF
Q ertonQ, dac& "a%oarea > din -or!atu% de tip&rire este precedat de caracteru% H,
a-i)area se "a -ace tot pe un spa2iu de > caractere, cu"3ntu% erton este ur!at de
spa2iu %i*er de 1 caractere ast-e% B Qerton Q/
=' se -o%ose)te pentru a a-i)a "a%ori intre,i din do!eniu% H1E=G> %a
J1E=G=,
nt 7
prnt" )H='I,J*7 se a-i)ea.& "a%oarea intrea,& depo.itat& %a adresa
"aria*i%ei i de tip int 4intre,5/
nt n,( 7
n=;<7
(=:0:
prnt" )H*8'*I,n*7 se a-i)ea.& Q F#Q %un,i!ea .onei este de >
caractere dispuse cu "a%oarea a%iniat& %a dreapta/
prnt" )H*08'*I,n*7 a-i)ea.& Q$$$$$$F#Q dispun3nd .erouri 6n -a2a
"a%orii .erouri p3n& %a %un,i!ea indicat&/
prnt" )H*-8'*I,n*7 a-i)ea.& QF# Q asi,ur3nd un spa2iu de >
caractere cu a%inierea %a st3n,a "a%orii/
=" se -o%ose)te pentru a a-i)a nu!ere%e .eci!a%e cu sau -&r& eponent )i p&strate
6n -or!at -%otant si!p%& preci.ie, 6n do!eniu% !odu% 1,Fa:$
01>
1,Fa:$
1>
a date%or
de tip -%oat/ Vu!&ru% .eci!a%e%or a-i)ate i!p%icit este G, dac& 6n speci-icatoru% de
-or!at se speci-ic& !&ri!ea c6!pu%ui aceasta de"ine prioritar&/ Dac& nu!&ru% de
.eci!a%e speci-icate 6n -or!at este !ai !ic dec3t nu!&ru% de .eci!a%e ca%cu%ate,
se "a rotun+i "a%oarea/
".oat a1,b7 dec%ara2ii de tip -%oat pentru "aria*i%e%e a: )i *
prnt")H=" ="I,Ja1,Jb*7 a-i)area a dou& "a%ori de -or!at -%oat )i
depo.itate %a adrese%e %ui a: )i */
".oat a1,b7
a1=B:7
b=;:0<L7
#=;:0:;7
prnt")H=" =" ="I,Ja1,Jb,J#*7 se a-i)ea.& ce%e 1 "a%ori cu un nu!&r de G
.eci!a%e 4nu!&r de .eci!a%e i!p%icit5 ast-e% B
E1/$$$$$$ F1/#G$$$$ F1/1F$$$$
prnt")H=<01" =L0B" =L01"I,Ja1,Jb,J#*7
se a-i)ea.& pe un c3!p de # caractere "a%oarea %ui a: cu : .eci!a%& ast-e% B
E1/$
"a%oarea * se "a a-i)a pe un c3!p de G caractere cu spa2iu de E caractere pentru
.eci!a%e ast-e% B F1/#G iar pentru "a%oarea c se "a a-i)a pe un spa2iu de G
caractere o sin,ur& .eci!a%&, prin rotun+irea "a%orii ast-e% B F1/1 a%inierea
"a%ori%or a-i)ate este %a dreapta pentru %un,i!ea c3!pu%ui re.er"at/
=." se -o%ose)te pentru a a-i)a nu!ere%e .eci!a%e cu sau -&r& eponent )i
p&strate 6n -or!at -%otant du*%& preci.ie 6n do!eniu% :,=a:$
01$>
:,=a:$
1$>
a date%or
de tip dou*%e,
'o/b.e a7 dec%ararea "aria*i%ei a de tip dou*%e
LIMBAJUL C TEORIE I APLICAI I F#
prnt" )H=."I,Ja*7 a-i)area "a%ori "aria*i%ei a de tip dou*%e/
=E" se -o%ose)te pentru a a-i)a nu!ere%e .eci!a%e cu sau -&r& eponent )i
p&strate 6n -or!at -%otant %on, dou*%e 6n do!eniu% 1,Fa:$
0F91E
:,:a:$
F91E
/
".oat ar7
C
prnt" )Hara=="8nI,ar*7 "a a-i)a tetu% ara= ur!at& de "a%oarea "aria*i%ei
ar )i apoi trecerea pe r3nd nou datorit& caractere%or specia%e 8n /
Pentru a dispune "a%ori%e pe c3!puri separate printr0un spa2iu de > caractere 4ta*5,
6n speci-icatoru% de -or!at se "or -o%osi caractere%e
".oat a1,b7
a1=B:7
b=;:0<L7
#=;:0:;7 de indicare a %ui ta* ast-e% 8t0
prnt")H="8t="8t="I,Ja1,Jb,J#*7se a-i)ea.& ce%e 1 "a%ori cu un nu!&r de G
.eci!a%e 4nu!&r de .eci!a%e i!p%icit5 ast-e% B
E1/$$$$$$ F1/#G$$$$ F1/1F$$$$
=e sa/ =E se -o%ose)te pentru a a-i)a nu!ere%e .eci!a%e de tip -%oat sau
dou*%e spre -or!atu% cu parte 6ntrea,&/parte -rac2iona%& eponent/ Vu!&ru%
.eci!a%e%or a-i)ate depinde de speci-icatoru% de -or!at, dac& preci.ia nu este
speci-icat&, se "or a-i)a G .eci!a%e 4 a se "edea ee!p%e%e de %a ` -5/
Eponentu% "a a"ea caracteru% e sau E dispus 6n -a2a -unc2ie de caracteru%
speci-icat 6n -or!at B
".oat a =;01B:;<L, b=B:0;<, #=00;<7
prnt" )Ha==e b==e #==E I,a,b,# *7
"a a-i)a B
a=;01B:;<Le!00 b=B0:;<e!01 #=;0<E-010
=4 sa/ =M se -o%ose)te pentru a a-i)a nu!ere%e .eci!a%e cu sau -&r& eponent
-ie ca 6n ca.u% speci-icatoru%ui de -or!at `- -ie ca 6n ca.u% speci-icatoru%ui de
-or!at `e 6n -unc2ie de !&ri!ea "a%ori ast-e% ca a-i)area s& ocupe un nu!&r
!ini! de caractere/ 7peci-icatoru% de -or!at `, sau `W "a a-i)a !ai! G
.eci!a%e dac& acestea sunt se!ni-icati"e/
".oat a=1B:0;<LN8, b=B:0;<7
prnt" )Ha==4 b==4 I,a, b*7
"a a-i)a
a=10B:;<L8e!0: b=B:0;</
Date%e de tip -%oat au o preci.ie de = .eci!a%e iar date%e de tip dou*%e au o preci.ie
de :# .eci!a%e/ Ounc2ii%e de intrare ie)ire au prototipuri%e 6n -i)iere%e st'o01 )i
#ono01 care tre*uie inc%use 6n -iecare -i)ier surs& /
=o date%e de tip intre, 4int5 sau date%e de tip intre, -&r& se!n 4unsi,ned5 sunt
con"ertite 6n octa% )i apoi sunt a-i)ate su* speci-icatoru% de -or!at B
LIMBAJUL C TEORIE I APLICAI I FG
prnt" )H!!=Lo!!I01B:*7 "a a-i)a pe un c3!p de G caractere "a%oarea :E1
con"ertit& 6n octa%I:=1 ast-e% B JJ :=1JJ , caractere%e JJ au -ost puse pentru a
se de%i!ita %un,i!ea c3!pu%ui a-i)at/
=x sa/ =K este -o%osit pentru a con"erti date%e de tip int sau unsi,ned 6n
'ea.eci!a% )i apoi -o%osind speci-icatoru% de -or!at %e "a a-i)a/ 7peci-icatoru%
` "a a-i)a ci-re%e !ai !ari de 9 cu caractere !inuscu%e, iar `X "a a-i)a cu
caractere !a+uscu%e/
prnt" )H=<x8t=xI,1B;,1B;*7 "a a-i)a pe un c3!p de # caractere B =c
ur!at de un spa2iu de : ta* apoi a-i)area cu caractere !a+uscu%e a "a%orii !ai !are
dec3t 9 ast-e% =C
`u este -o%osit& pentru a a-i)a o dat& de tip unsi,ned 6n .eci!a%/
=. poate precede caractere%e d, o, , X, u pentru a con"erti date%e din %on, 6n
%on, unsi,ned ast-e% B
`%d con"erte)te data de tip %on, 6n .eci!a%
`%u con"erte)te din %on, unsi,ned 6n .eci!a%
`%o con"erte)te din %on, sau %on, unsi,ned 6n octa%
`% con"erte)te din %on, sau %on, unsi,ned 6n octa%/
-n#./'e<st'o012
-n#./'e<#ono012
&o' (an )*
+
nt a,'7 dec%arare de "aria*i%& de tip 6ntre, !a 1E=G=
/ns4ne' b7 dec%arare de "aria*i%& de tip -&r& se!n G##1#
.on4 #7 dec%arare de "aria*i%& intrea,& %on, !a
E:F=F>1GF=
'=s#an" )3=/,=',=.'3,Jb,Ja,J#*7 citirea a trei "a%oriB unsi,ned, intre,, intre,
%on,/
prnt" )3/ns4ne' =/ nt =' .on4 =.'8n3,b,a,#*7a-i)area ce%or trei "a%ori
citite/
,
Dac& se introduc "a%ori%e G##1#, 1E=G=, 1F#G=>9, ce se a-%& 6n
Do!eniu% -iec&rei tip de "aria*i%&, aceste date "or -i citite corect )i apoi a-i)ate
corect/ Dac& se introduc "a%ori%e 0E1F, 11$$$, E1F#G=se "a o*ser"a c& data
HE1F nu "a -i citit& -inc& are se!nu% !inus, iar adoua "a%oare 11$$$ nu este
citit&, -inc& "a%oarea dep&)e)te do!eniu% "aria*i%ei de tip intre,/
7e reco!and& ca -unc2ie de do!eniu% "a%ori%or "aria*i%e%or -o%osite, s0& se
a%ea,& tipu% "aria*i%ei/
LIMBAJUL C TEORIE I APLICAI I F=
3.'. Instruciuni. ()presii. *peratori
3.'.1. Instruciuni.
Pre%ucrarea date%or de intrare, de ie)ire, sau din interioru% pro,ra!u%ui se
rea%i.ea.& cu a+utoru% instruc2iuni%or/ Ordinea de e-ectuare a acestor
instruc2iuni depinde de structura de contro% a pro,ra!u%ui/ 7tructura de contro%
a pro,ra!u%ui poate -i B
7tructura sec"en2ia%&/
7tructur& a%ternati"&/
7tructur& cic%ic& condi2ionat& anterior/
7tructur& se%ecti"&/
7tructur& cic%ic& condi2ionat& posterior/
3.'.1.1. Instruciunea #id.
Instruc2iunea "id& se rea%i.ea.& prin caracteru%L )i este -o%osit& unde se cere
pre.en2a unei instruc2iuni -&r& e-ect, 6n cadru% structuri%or cic%ice sau a%ternati"e/
3.'.1.2. Instruciunea e)presie.
Instruc2iunea epresie are -or!a B
exprese7
n -unc2ie de tipu% epresiei instruc2iunea epresie se nu!e)te de atrb/re sau
de ape./
A=<7 este o instruc2iune de atri*uire )i are ca e-ect
atri*uirea "a%orii # "aria*i%ei A/
O?B@=B0<7 este o instruc2iune de atri*uire )i are ca e-ect
atri*uirea "a%orii E,# "aria*i%ei indeate B9E;/
K=K!B7 este o instruc2iune de atri*uire )i are ca e-ect
!&rirea "a%orii %ui X cu E/
p/ts )HDat o &a.oareI*7 este o instruc2iune de ape% a -unc2iei puts/
9!!7 este o instruc2iune epresie )i !&re)te "a%oarea %ui
I cu o unitate/
P--7 este o instruc2iune epresie )i !ic)orea.&
"a%oarea %ui J cu o unitate/
3.'.1.3. Instruciunea compus.
Instruc2iunea co!pus& se rea%i.ea.& prin inc%uderea !ai !u%tor instruc2iuni )i
dec%ara2ii 6ntre dou& aco%ade desc'is inc'is/
LIMBAJUL C TEORIE I APLICAI I F>
+
'e#.arat7
nstr/#t/n7
,
Dec%ara2ii%e din cadru% unei instruc2iuni co!puse au e-ect nu!ai asupra
"aria*i%e%or dec%arate de e%e )i nu!ai in e-ectuarea instruc2iunii co!pus&/
Instruc2iunea co!pus& se -o%ose)te 6n cadru% structuri%or cic%ice sau a%ternati"e/
]
+
p/ts )H 'at &a.oarea e.e(ent/./I*7
s #an" )H='I, Ja?@*7
,
3.'.1.%. Instruciunea de atribuire.
A! a!intit 6n capito%u% @Tipuri de date/ Constante )i "aria*i%eC despre operatoru%
I/ Operatoru% I este operatoru% de atri*uire/ Instruc2iunea 6n care apare operatoru%
de atri*uire se nu!e)te instruc2iune de atri*uire/ 7intaa instruc2iunii de atri*uire
esteB
n/(eA&arab.a = exprese7
Ter!enu% st3n, a% instruc2iunii de atri*uire nu poate -i dec3t o "aria*i%&/ Dac& 6n
partea st3n,& a operatoru%ui nu se ,&se)te o "aria*i%&, co!pi%atoru% "a se!na%a o
eroare %a co!pi%are L"a%ue reSuired/
Ter!enu% drept a% instruc2iunii de atri*uire este o epresie/ O epresie este un
,rup de "aria*i%e )i constante %e,ate 6ntre e%e prin operatori !ate!atici 4adunare,
sc&dere, etc/5/
n !o!entu% ru%&rii pro,ra!u%ui, instruc2iunea de atri*uire este re.o%"at& 6n doi
pa)i/ Pri!u% pas, const& 6n e"a%uarea epresiei din dreapta operatoru%ui atri*uire/
Re.u%tatu% o*2inut este atri*uit "aria*i%ei din st3n,a operatoru%ui/
-n#./'e <st'o012
&o' (an )*
+
nt 7
'o/b.e '7
prnt")3Pro4ra( #are '/b.ea5a &a.or.e a B &arab.e3*7
prnt")38nTastat /n ntre4 s /n rea.:3*7
s#an")3=' =."3, J, J'*7
=*B7
'='*B7
prnt")38nD/b./. n/(ar/./ ntre4 este: ='3, *7
prnt")38nD/b./. n/(ar/./ rea. este: ="3, '*7
,
Dac& ce%e dou& nu!ere au -ost # )i F/=, pro,ra!u% "a produce pe ecran ur!&toru%
re.u%tatB
D/b./. n/(ar/./ ntre4 este: 10
D/b./. n/(ar/./ rea. este: Q0;00000
LIMBAJUL C TEORIE I APLICAI I F9
3.'.2. *peratori.
A! a!intit !ai sus c& o epresie este un ,rup de "aria*i%e )i constante %e,ate 6ntre
e%e prin operatori/ Ter!enii care inter"in 6ntr0o epresie se !ai nu!esc )i
operan.i/ Li!*a+u% C pune %a dispo.i2ia uti%i.atoru%ui un !are nu!&r de operatori/
<o! pre.enta 6n continuare principa%e%e ,rupe de operatori
3.'.2.1. *peratori aritmetici.
In C, a"e! ur!&torii operatori arit!eticiB
0 !inus unar
J p%us unar
Q 6n!u%2ire
K 6!p&r2ire
` restu% 6!p&r2irii 6ntre,i
J adunare
0 sc&dere
Eemplu
7& se scrie pro,ra!u% C care ca%cu%ea.& ecua2ia de ,radu% I 4"e.i or,ani,ra!a de
%a A%,orit!i %iniari5/ Coe-icien2ii a )i * sunt 6ntre,i/
"ezol#are
C'iar dac& coe-icien2ii a )i * sunt 6ntre,i, so%u2ia a ecua2iei poate -i rea%&, ast-e%
"o! dec%ara "aria*i%a de tip -%oat/
-n#./'e <st'o012
&o' (an )*
+
nt a, b7
".oat x7
prnt")3Pro4ra( #are re5o.&a e#/ata 'e 4ra'/. 9 ax!b=03*7
prnt")38nDat #oe"#ent ntre4 a s b 3*7
s#an")3=' ='3, Ja, Jb*7
x=-b/a7
prnt")3So./ta e#/ate ='x!='=0 este: ="3, a, b, x*7
,
Dac& %a !esa+u% Dat #oe"#ent ntre4 a s b, "o! tasta E )i 1,
pro,ra!u% "a produce pe ecran ur!&toru% re.u%tatB
So./ta e#/ate Bx!:=0 este: -10000000
O*ser"&! c& so%u2ia este incorect&/ Pro*%e!a const& 6n instruc2iunea de atri*uire
I0*KaL/ Epresia din partea dreapt& a operatoru%ui de atri*uire, care este e"a%uat&
pri!a, con2ine doi operan.i de tip 6ntre, )i doi operatori !inus unar )i 6!p&r2ire/
Pentru c& to2i operan.ii epresiei sunt de tip 6ntre,, pro,ra!u% "a e"a%ua epresia
)i "a atri*ui un 6ntre, "aria*i%ei din st3n,a, adic& / Re.u%tatu% 6ntre, este o*2inut
prin trunc'iere 4adic& e%i!inarea .eci!a%e%or5/ Pentru ca pro,ra!u% s& atri*uie
"aria*i%ei din st3n,a o "a%oare de tip rea% 4-%oat5, tre*uie ca unu% din ter!enii
LIMBAJUL C TEORIE I APLICAI I #$
epresiei s& -ie de tip -%oat/ Vu pute! s& sc'i!*&! tipu% de dat& a% "aria*i%e%or a
)i *, pentru c& 6n enun2 s0a cerut ca a )i * s& -ie 6ntre,i/
3.'.2.2. !+pecasting.
Din -ericire, %i!*a+u% C per!ite sc'i!*area tipu%ui de dat& a unei "aria*i%e 6ntr0o
epresie cu a+utoru% operatoru%ui tPpecast/ Operatoru% tPpecast este -o%osit su*
-or!aB
)tp 'e 'ata*n/(eA'eA&arab.a
De re2inut -aptu% c& tipu% de dat& a% "ari*i%ei nu este sc'i!*at 6n pro,ra!, ci doar
"a%oarea "aria*i%ei 6n epresia 6n care apare operatoru% tPpecast este !odi-icat& %a
tipu% tip de dat&/ Ast-e% 6nc3t pro*%e!a corect re.o%"at& esteB
-n#./'e <st'o012
&o' (an )*
+
nt a, b7
".oat x7
prnt")3Pro4ra( #are re5o.&a e#/ata 'e 4ra'/. 9 ax!b=03*7
prnt")38nDat #oe"#ent ntre4 a s b 3*7
s#an")3=' ='3, Ja, Jb*7
x=-)".oat*b/a7
prnt")3So./ta e#/ate ='x!='=0 este: ="3, a, b, x*7
,
O*ser"&! c& 6n epresia 0*Ka a! -o%osit operatoru% tPpecast, trans-or!3nd0o su*
-or!a 04-%oat5*Ka/ Pentru c& operatoru% tPpecast 4-%oat5 este 6n -a2a "aria*i%ei *,
pro,ra!u% "a considera "a%oarea %ui * de tip -%oat, ast-e% unu% din operan.ii din
epresie este de tip -%oat )i re.u%tatu% returnat 6n ur!a e"a%u&rii epresiei este
-%oat/ Re!arc&! 6n p%us c& tipu% de dat& a% "aria*i%ei * nu a -ost sc'i!*at, pentru
c& instruc2iunea
prnt")3So./ta e#/ate ='x!='=0 este: ="3, a, b, x*7
-o%ose)te speci-icatoru% de -or!at `d pentru a tip&ri "a%oarea "aria*i%ei *, care produce
re.u%tatu% a)teptat pe ecranB
So./ta e#/ate Bx!:=0 este: -10<00000
3.'.2.3. *peratori relaionali.
In %i!*a+u% C operatorii re%a2iona%i suntB
N !ai !ic
NI !ai !ic sau e,a%
M !ai !are
MI !ai !are sau e,a%
II e,a%
bI di-erit
<o! a!inti aici un operator care nu poate -i c%asi-icat 6n nici o ,rup&, dar care
este -oarte interesant, e% ne-iind pre.ent 6n nici unu% din ce%e%a%te %i!*a+e c%asice
de pro,ra!are, )i anu!e operatoru% deci.ie/ Operatoru% deci.ie ?, este -o%osit
LIMBAJUL C TEORIE I APLICAI I #:
pentru a se%ecta din dou& epresii, doar una, 6n -unc2ie de o condi2ie i!pus& 6n
st3n,a operatoru%ui/ 7intaa -o%osirii operatoru%ui epresie esteB
n/(eA'eA&arab.a = #on'te R exprese1 : expreseB7
Dac& condi2ia este ade"&rat&, "a%oarea epresiei : este atri*uit& "aria*i%ei/ Dac&
condi2ia nu este ade"&rat& 4-a%s&5, "a%oarea epresiei E este atri*uit& "aria*i%ei/
Eemplu
7a se scrie pro,ra!u% C care cite)te un nu!&r 6ntre, de %a tastatur& )i a-i)ea.&
!esa+u% Vu!aru% este p, dac& nu!&ru% este par, sau Vu!aru% este i, dac& nu!&ru%
este i!par, -o%osind doar operatorii arit!etici )i deci.ie/
"ezol#are
-n#./'e <st'o012
&o' (an )*
+
nt a, b7
#1ar p7
prnt")3Tastat /n ntre43*7
s#an")3='3, Ja*7
b=a=B7
p= b==0 R DpD:DD7
prnt")3N/(ar/. este =#3, p*7
,
A! -o%osit doi dintre operatorii pre.enta2i !ai sus/ In instruc2iunea de atri*uire
*Ia`EL, * "a a"ea "a%oarea $ dac& a este par )i : dac& a este i!par, pentru c&
operatoru% ` returnea.& restu% 6!p&r2irii %ui a %a E/
n epresia din ur!&toarea instruc2iune de atri*uire *II$ ? ^p^B^i^L condi2ia este *
e,a% cu .ero/ Dac& * este e,a% cu .ero, "aria*i%ei ip din st3n,a operatoru%ui de
atri*uire i se "a atri*ui epresia ^p^ 4adic& ipI^p^5/ Dac& * nu este e,a% cu .ero
4condi2ia nu este ade"&rat&5, "aria*i%ei ip i se "a atri*ui epresia ^i^ 4adic& ipI^i^5/ n
-ina%, pro,ra!u% "a a-i)a pe ecranB
N/(ar/. este
dac& "a%oarea "aria*i%ei a este i!par&/
Eemplu
7& se scrie pro,ra!u% C care cite)te dou& nu!ere rea%e de %a tastatur& )i co!par&
ce%e dou& nu!ere -o%osind operatoru% deci.ie/ Pro,ra!u% s& a-i)e.e Vu!&ru% a M
*, dac& a este !ai !are dec3t *, sau Vu!aru% a N *, dac& a este !ai !ic dec3t */
"ezol#are
-n#./'e <st'o012
&o' (an )*
+
".oat a, b7
#1ar op7
prnt")3Tastat 'o/a n/(ere rea.e3*7
s#an")3=" ="3, Ja, Jb*7
op= a2b R D2D:D<D7
prnt")3N/(ar/. =" =# ="3, a, op, b*7
,
7& re!arc&! instruc2iunea de atri*uire opI aM* ? ^M^B^N^L/ Condi2ia este aM*/ Dac&
condi2ia este ade"&rat&, "aria*i%a op de tip caracter "a pri!i "a%oarea ^M^/ Dac&
LIMBAJUL C TEORIE I APLICAI I #E
condi2ia este -a%s&, "aria*i%a op "a pri!i "a%oarea ^N^/ Dac& a este 1/# )i * este F/E,
pro,ra!u% "a a-i)a pe ecran !esa+u%B
N/(ar/. :0<00000 < ;0B00000
3.'.2.%. *peratorii logici.
In %i!*a+u% C eist& trei operatori %o,iciB
b ne,are
cc )i %o,ic
dd sau %o,ic
Operatoru% ne,are produce ur!&toru% re.u%tatB
dac& operandu% are o "a%oare di-erit& de $, re.u%tatu% este $, a%t-e% re.u%tatu%
opera2iei este :/
Operatoru% sau %o,ic produce ur!&toru% re.u%tatB
dac& ce% pu2in unu% din operan.i are o "a%oare di-erit& de $, re.u%tatu% este :, a%t-e%
este $/
Operatoru% )i %o,ic produce ur!&toru% re.u%tatB
dac& a!*ii operan.i sunt di-eri2i de $, re.u%tatu% este :, a%t-e% re.u%tatu% opera2iei
este $/
Eemplu
7& se scrie pro,ra!u% C care cite)te dou& nu!ere 6ntre,i de %a tastatur& )i "eri-ic&
dac& a!*e%e nu!ere sunt pare/ Dac& a!*e%e nu!ere sunt pare pro,ra!u% a-i)ea.&
!esa+u%B Vu!ere%e sunt pareB d/ In ce%e%a%te ca.uri pro,ra!u% "a a-i)aB Vu!ere%e
sunt pareB n/ <eri-icarea nu!ere%or se "a -ace -o%osind doar operatori/
-n#./'e <st'o012
&o' (an )*
+
nt a, b7
nt p1, pB7
#1ar pp7
prnt")38nPro4ra( #are &er"#a 'a#a B n/(ere ntre4 s/nt
pare3*7
prnt")38nDat B n/(ere ntre43*7
s#an")3=' ='3, Ja, Jb*7
p1= a=B R 0 : 17
pB= b=B R 0 : 17
pp= p1 JJ pB R D'D : DnD7
prnt")3A(be.e n/(ere s/nt pare: =#3, pp*7
,
3.'.2.'. *peratorii de incrementare "i decrementare.
7unt -o%osi2i pentru a aduna : sau pentru a sc&dea : %a "a%oarea unei "aria*i%e de
tip 6ntre,/ 7intaa operatori%or de incre!entare JJ, sau decre!entare 00 esteB
&arab.a!!
&arab.a--
LIMBAJUL C TEORIE I APLICAI I #1
Dac& operatoru% de incre!entare, decre!entare apare 6n ur!a nu!e%ui "aria*i%ei,
"o! spune c& opera2ia de incre!entareKdecre!entare este post-iat&/ Dac&
operatoru% de incre!entare sau decre!entare apare 6n -a2a "aria*i%ei
!!&arab.a
--&arab.a
"o! spune c& opera2ia de incre!entareKdecre!entare este pre-iat&/ Dac& opera2ia
de incre!entareKdecre!entare pre-iat& este -o%osit& 6ntr0o epresie, 6nt3i se
incre!entea.&Kdecre!entea.& "a%oarea "aria*i%ei, noua "a%oare -iind -o%osit& 6n
epresie/
Dac& opera2ia de incre!entareKdecre!entare post-iat& este -o%osit& 6ntr0o
epresie, 6nt3i se e"a%uea.& epresia cu "a%oarea "aria*i%ei
neincre!entat&Knedecre!entat& )i apoi se incre!entea.&Kdecre!entea.& "a%oarea
"aria*i%ei/
-n#./'e <st'o012
&o' (an )*
+
nt a, b7
a=:7
b=!!a7
prnt")38n9n#re(entare pre"x a==', b=='3, a, b*7
a=:7
b=a!!7
prnt")38n9n#re(entare post"x a==', b=='3, a, b*7
a=:7
b=--a7
prnt")38nDe#re(entare pre"x a==', b=='3, a, b*7
a=:7
b=a--7
prnt")38nDe#re(entare post"x a==', b=='3, a, b*7
,
Pro,ra!u% "a produce ur!&toru% re.u%tat pe ecranB
9n#re(entare pre"x a=;, b=;
9n#re(entare post"x a=;, b=:
De#re(entare pre"x a=B, b=B
De#re(entare post"x a=B, b=:
nainte de -iecare instruc2iune de tip&rire, "aria*i%a 6ntrea,& a are "a%oarea 1/
<aria*i%a a este -o%osit& 6n c3te o instruc2iune de atri*uire, ap%ic3nd asupra
"aria*i%ei operatorii de incre!entare pre-iKpost-i )i de decre!entare
pre-iKpost-i/
n toate ca.uri%e, "a%oarea "aria*i%ei a este incre!entat& sau decre!entat& de c&tre
operatori/ Dup& incre!entare, "aria*i%a a "a a"ea "a%oarea F, respecti" E dup&
decre!entare/
n epresii, -o%osind operatoru% pre-i, "aria*i%a * "a pri!i "a%oarea
incre!entat&Kdecre!entat& a "aria*i%ei a, pe c3nd -o%osind operatoru% post-i,
"aria*i%a * "a pri!i "a%oarea "aria*i%ei a neincre!entat&Knedecre!entat&/
LIMBAJUL C TEORIE I APLICAI I #F
3.'.3. Instruciunea if.
Instruc2iunea i- se -o%ose)te %a rea%i.area structuri%or a%ternati"e )i are ur!&toare%e
-or!e de scriere B
Oor!a :
" )exprese*
nstr/#t/nea 17
e.se
nstr/#t/nea B7
nstr/#t/nea :7
7e e"a%uea.& epresia din parante.e%e de dup& i- )i dac& aceast& epresie este
ade"&rat& 4are "a%oarea di-erit& de .ero5 se "a e-ectua instruc2iunea :, apoi se "a
continua pro,ra!u% cu unstruc2iunea 1 dina-ara instruc&iuni i-/ Dac& "a%oarea
epresiei din parante.e%e de dup& i- este -a%s& 4are "a%oarea .ero5 se "a e-ectua
instruc2iunea E )i se "a continua cu instruc2iunea 1/
Instruc2iuni%e : sau E pot -i instruc2iuni si!p%e sau co!puse sau c'iar o nou&
instruc2iune de tip i-, 6n acest u%ti! ca. se consider& instruc2iuni%e i- i!*ricate/
Oor!a E
se e"a%uea.& epresia )i dac& aceasta este ade"&rat&, se eecut& instruc2iunea :, iar
dac& epresia este -a%s&, se "a eecuta epresia E dina-ara instruc2iunii i-/
" )exprese*
nstr/#t/nea 17
nstr/#t/nea B7
Eemplu
7& se ca%cu%e.e ")x* =;x
B
!N pentru x<0 , ")x*=:x
B
-1 pentru x2=0/
"ezol#are
-n#./'e <#ono012 inc%uderea -i)iere%or ce con2in -unc2ii%or pentru
-n#./'e <st'o012 citirea )i a-i)area date%or/
-n#./'e <(at1012 inc%uderea -i)ieru%ui ce con2ine -unc2ii%e
!ate!atice/
&o' (an )* -unc2ia principa%&
+
".oat x,"x7 dec%ara2ii de "aria*i%e de tip rea% si!p%& preci.ie
p/ts )3Dat (ar(ea ./ x3*7 instruc2iune de ape%are a -unc2iei de a-i)are a
!esa+u%ui Dat (ar(ea ./ x
s#an" )3="3,Jx*7 instruc2iune de ape%are a -unc2iei de citire a %ui
cu -or!atu% de citire de tip intre,
" )x<0* 6nceputu% instruc2iunii " )i x<0 epresia de
condi2ionare 4deci.ie5
LIMBAJUL C TEORIE I APLICAI I ##
"x = ;*x*x!N7 dac& epresia de conditionare 4deci.ie5 este
ade"&rat&, se eecut& instruc2iunea : din cadru% %ui
i-, care este 6n acest ca. o instruc2iune de atri*uire
e.se
etic'eta ce de%i!itea.& instruc2iunea : de
instruc2iunea E a instruc2iunii i-
"x=:*x*x-17 dac& epresia de conditionare 4deci.ie5 este -a%s&,
se eecut& instruc2iunea E din cadru% %ui i-, care
este 6n acest ca. o instruc2iune de atri*uire
prnt" )3")x*=="8n3,"x*7 instruc2iunea 1, de dup& instruc2iunea i- cu ro%u%
de ape%are a -unc2iei de tip&rire cu -or!at de tip
rea% si!p%& preci.ie pentru "a%oarea "aria*i%ei "x,
8n are ro%u% s& indice trecerea %a r3nd nou
p/ts )3Apasa o tasta3*7 instruc2iune de ape%are a -unc2iei de a-i)are a
!esa+u%ui Apasa o tasta
4et#1 )*7 instruc2iune de ape%are a -unc2iei de citire a unui
caracter -&r& ecou, 6n acest ca. -o%osit& pentru
oprirea te!porar& a eecu2iei, p3n& %a ap&sarea
unei taste, co scopu% de a p&stra ecranu%
uti%i.atoru%ui pentru citirea date%or a-i)ate
,
Eemplu
n ee!p%u% de !ai +os este -o%osit& instruc2iunea i- 6n "arianta II, -&r&
-o%osirea ep%icit& a instruc2iunii E din corpu% ei/
7& se deter!ine -45IJF pentru N$, -45I
E
pentru MI$/
"ezol#are
-n#./'e <st'o012 inc%uderea -i)iere%or ce con2in -unc2ii%or pentru
-n#./'e <#ono012 citirea )i a-i)area date%or/
&o' &o' (an )*
+
".oat x,"x7
p/ts )3se #a.#/.ea5a "x =3*7
p/ts ) 3'at &a.oarea ./ x 3*7
s#an" )3="3,Jx*7 citirea "a%orii de tip rea% si!p%& preci.ie a %ui )i
dispunerea "a%orii citite %a adresa %ui
LIMBAJUL C TEORIE I APLICAI I #G
" )x<0* 6nceputu% instruc2iunii " )i x<0 epresia de
condi2ionare, dac& x<0 se "a eecuta instruc2iunea
co!pus& :, dac& nu se "a s&ri peste instruc2iunea
co!pus& : )i se continu& eecu2ia cu instruc2iunea
de dup& instruc2iunea i-
+ 6nceputu% instruc2iunii :co!puse
"x=x!;7
prnt" )3")x*=="8n3,"x*7
4oto sa.t17 sa%t necondi2ionat %a etic'eta sa%t :
, s-3r)itu% instruc2iunii co!puse :

"x=x*x7 instruc2iunea de dup& instruc2iunea i-
prnt" )3")x*==" 8n3,"x*7
sa.t1: etic'eta %a care se sare datorit& instruc2iunii ,oto
p/ts )3apasa o tasta 3*7
4et#1 )*7
,
Eemplu
7& se ca%cu%e.e aria unui cerc dac& ra.a cercu%ui este !ai !are dec3t .ero/
-n#./'e <#ono012
-n#./'e <(at1012
-n#./'e <st'o012
&o' (an )* -unc2ia principa%&
+
".oat r,a,p7 dec%ara2ii de "aria*i%e de tip rea% si!p%& preci.i,
separarea "aria*i%e%or din %ist& prin caracteru% ,

p/ts )3'at ra5a #er#/./3*7 instruc2iune de ape%are a -unc2iei de a-i)are a
)iru%ui de caractere 4!esa+u%5, da2i ra.a cercu%ui
s#an" )3="3 ,Jr*7 instruc2iune de ape%are a -unc2iei de citire cu
-or!at de tip rea% , pentru citirea datei r )i
dispunerea "a%orii citite %a adresa %ui r
" )r20* inceputu% instruc2iunii i- )i r20 epresia de
condi2ionare, dac& epresia r20 este ade"&rat& se
"a eecuta instruc2iunea co!pus& :, 6n ca. contrar
se "a continua eecu2ia cu instruc2iunea E
+ 6nceputu% instruc2iunii co!pus& :
p=:01;1<L7 instruc2iune de atri*uire
a=p*r*r7 instruc2iune de atri*uire
LIMBAJUL C TEORIE I APLICAI I #=
prnt")3ara #er#=="3,a*7instruc2iune de ape%are a -unc2iei de tip&rire
, s-3r)itu% instruc2iunii co!puse :
e.se
p/ts )HSa5a este <=0I*7 instruc2iunea E din cadru% instruc2iunii i-, de
ape%are a -unc2iei puts45, pentru a-i)area )iru%ui de
caractere dispus 6ntre du*%u apostroa-e
p/ts )3apasa o tasta3*7 instruc2iunea 1 din a-ara instruc2iunii i-, de ape%are
a -unc2iei puts45,pentru a-i)area )iru%ui de
caractere dispus 6ntre du*%u apostroa-e
4et#1)*7 instruc2iune de ape%are a -unc2iei de citire a unui
caracter, 6n ca.u% de -a2& cu ro%u% de a p&stra
ecranu% uti%i.atoru%ui p3n& %a ap&sarea unei taste
, 6nc'iderea corpu%ui -unc2iei principa%e "oid !ain
45
Eemplu
7& se ca%cu%e.e ")x*=;x
B
!N pentru x<0, ")x*=; pentru x=0, ")x*=:x
B
-1 pentru
x2=0/
"ezol#are
Pentru a ca%cu%a -45 pe ce%e 1 do!enii se "a -o%osi instruc2iunea i- de dou& ori,
una inc%us& 6n a%ta de tip i- i!*ricat, ast-e% B
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e <(at1012
&o' (an )*
+
".oat x,"x7
p/ts )3'at (ar(ea ./ x3*7
s#an" )3="3,Jx*7
" )x<0*
"x = ;*x*x!N7
e.se
" ) x==0* i- i!*ricat
"x=;7
e.se
"x=:*x*x-17
prnt" )3")x*=="8n3,"x*7
p/ts )3apasa o tasta3*7
4et#1 )*7
,
La eecu2ia pro,ra!u%ui, dup& citirea "a%orii ce este atri*ui& "aria*i%ei ,
instruc2iunea i- "a e"a%ua epresia x<0 / 7& consider&! c& s0a citit pentru o
"a%oare ne,ati"& I0E, dup& e"a%uarea epresiei x<0 0EN$, ade"&rat, se "a
continua eecu2ia cu instruc2iunea : a pri!u%ui i- "x = ;*x*x!N, apoi se "a
LIMBAJUL C TEORIE I APLICAI I #>
continua cu instruc2iunea 1 dina-ara instruc2iunii : i-, care "a a-i)a "a%oarea
%ui -45/ 7& consider&! c& "a%oarea citit& de %a tastatur& pentru este $, 6n
acest ca. instruc2iunea : i-, dup& e"a%uarea epresiei x<0 $N$ -a%s, ce are ca
e-ect continuarea eecu2iei cu instruc2iunea E din cadru% instruc2iunii: i-, dar
instruc2iunea E este tot o instruc2iune i-, care "a e"a%ua epresia din cadru% ei/
E"a%uarea epresiei x==0 4 indentic .ero )i nu I.ero5 re.u%t& ade"&rat )i se
eecut& instruc2iunea : din cadru% instruc2iunii E i-, -IF, se continu& cu
instruc2iunea 1 care este aceea)i cu instruc2iunea 1 de %a instruc2iunea : i-/
7& consider&! c& "a%oarea citit& pentru este 1, 6n acest ca. instruc2iunea : i-,
dup& e"a%uarea epresiei x<0 1N$ -a%s, ce are ca e-ect continuarea eecu2iei
cu instruc2iunea E din cadru% instruc2iunii: i-, dar instruc2iunea E este tot o
instruc2iune i-, care "a e"a%ua epresia din cadru% ei/
E"a%uarea epresiei x==0 :==0 4 indentic .ero )i nu I.ero5 re.u%t& -a%s )i se
eecut& instruc2iunea E din cadru% instruc2iunii E i-, "x=:*x*x-1, se continu&
cu instruc2iunea 1 care este aceea) cu instruc2iunea 1 de %a instruc2iunea : i-/
Aceste dou& instruc2iuni i- dispuse una 6n a%ta, se nu!esc instruc2iuni i-
i!*ricate/
Eemplu
7& se ca%cu%e.e x=-b/a, r&d&cina ecua2iei de -or!a ax!b=0 4dac& a este
di-erit de .ero5/ Dac& a este .ero se "a a-i)a !esa+u% ne'eter(nare dac& *
e,a% .ero se "a a-i)a !esa+u% so%utia este I$, dac& * este di-erit de .ero se "a
ca%cu%a "a%oarea %ui )i se "a a-i)a aceast& "a%oare/
"ezol#are
-n#./'e<st'o0127
-n#./'e<#ono0127
&o' (an )*
+
".oat x,a,b7
p/ts)3se #a.#/.ea5a ra'a#na e#/ate ax!b=03*7
p/ts)3'at pe a, b3*7
s#an")3=",="3,Ja,Jb*7 ape%area -unc2iei de citire de %a tastatur& cu
-or!atu% de tip re% si!p%& preci.ie a dou&
"a%ori separate prin caracteru% "ir,u%&
")a T= 0* instruc2iunea i- e"a%uea.& epresia aT= 0
4 a este di-erit de .ero5 )i dac& aceasta este
ade"&rat& se "a eecuta instruc2iunea : din
cadru% %ui i-
+ 6nceputu% corpu%ui instruc2iunii co!puse :
x=-b/a7
prnt" )3a==" b==" x==" 8n3,a,b,x*7
LIMBAJUL C TEORIE I APLICAI I #9
, ter!inarea corpu%ui instruc2iunii co!puse :
e.se
" )b==0*
p/ts )3e#/ate ne'eter(nata3*7
e.se
p/ts )3e#/ata n/ are so./te3*7
p/ts)3apasat o tasta3*7
4et#1)*7
,
Aro-leme propuse
:/ 7& se deter!ine aria unui triun,'i c3nd se dau ce%e 1 %aturiB a, *, c/ Ca ce%e 1
"a%ori date s& -or!e.e un triun,'i tre*uie s& se respecte condi2ii%eB
ce%e 1 nu!ere M $
6ntre nu!ere%e a, *, c, s& eiste re%a2ii%eB
a M *Jc
* M cJd
c M aJ*
Aria I ( )( )( ) c p b p a p p , unde p I
E
c b a + +
E/ 7& se deter!ine cantitatea de c&%dur& necesar& topirii unei cantit&2i de ,'ea2& cu
!asa m de %a te!peratura t
:
p3n& %a te!peratura t
E
/
Condi2iiB t
:
N $ )i t
E
M $
" I "
:
J "
E
J "
1
"
:
I
( ) m t c
g

:
$
"
E
I
m c
"
1
I
E
t c m
a

c
g
I c&%dura speci-ic& ,'e2ii
c I c&%dura %atent& de topire a ,'e2ii
c
a
I c&%dura speci-ic& a apei
Date de intrare B t
:
, t
E
, m
Date de ie)ire B "
1/ 7& se deter!ine a%un,irea sau scurtarea unui tirant, -o%osind -or!u%a
( ) #A l $ l K
/
unde
A I aria sec2iunii trans"ersa%e 9c!
E
;
l I %un,i!ea tirantu%ui 9c!;
# I !odu%u% de e%asticitate 9daVKc!
E
;
$ I -or2a ce ac2ionea.& 9daV; 4Dac& $ N $ co!presiune, a%t-e% 6ntindere5
Date de intrare B A, %, E, O/
LIMBAJUL C TEORIE I APLICAI I G$
Date de ie)ire B l
F/ 7& se deter!ine "a%oarea %ui O45B
( ) ( )

'

+
>
< +

: F
: :
$ 1
E
1
% %
% % %
% %
% $
Date de intrare B %
Date de ie)ire B $4%5
#/ 7& se citeasc& o "a%oare de %a tastatur& )i s& se "eri-ice dac& "a%oarea citit& este
un nu!&r/ Dac& "a%oarea este un nu!&r s& se a-i)e.e nu!&ru%, 6n ca. contrar s& se
a-i)e.e !esa+u% "a%oarea introdus& nu este un nu!&r/
G/ 7& se deter!ine so%u2ii%e % )i & a%e siste!u%uiB
a% J b& I c
d% J e& I f
7iste!u% este co!pati*i% dac&B $ d b e a
Date de intrare B a, b, c, d, e, f
Date de ie)ire B %, &
=/ 7& se ca%cu%e.e aran+a!ente de % %uate c3te &/
Date de intrare B %, &
Date de ie)ireB
&
%
A
>/ 7& se ca%cu%e.e nu!&ru% de co!*ina2ii a % %uate c3te &/
Date de intrare B %, &
Date de ie)ire B
&
%
'
Condi2ii B % M :, & N %, & M :
3.'.%. Instruciunea for.
Instruc2iunea -or se uti%i.ea.& pentru rea%i.area structuri%or cic%ice condi2ionate
anterior/ 7intaa instruc2iunii -or este B
"or )exprese17 expreseB7 exprese:*
9nstr/#t/ne s(p.a sa/ #o(p/sa7
Epresia : are ro%u% de a ini2ia%i.a "aria*i%a cic%u%ui -or, epresia E are ro%u% de a
condi2iona continuarea cic%u%ui -or, iar epresia 1 are ro%u% de a reini2ia%i.a "aria*i%a de
contor/ Instruc2iunea -or se eecut& ast-e% B
:/ se e"a%uea.& epresia : )i "a%oarea acestei epresi de"ine "a%oarea de 6nceput
a "aria*i%ei de contor din cic%u% -or/
E/ se e"a%uea.& epresia E )i dac& este ade"&rat& se eecut& instruc2iunea care
este 6n corpu% %ui -or, dac& epresia E este -a%s& se p&r&se)te cic%u% -or )i se
trece %a ur!&toarea instruc2iune/
LIMBAJUL C TEORIE I APLICAI I G:
1/ dup& eecutarea pasu%ui E se eecut& epresia 1 de !odi-icare a "a%orii
"aria*i%ei de contoar )i se reia pasu% E/
Instruc2iunea -or nu se eecut& niciodat& dac& epresia E are "a%oarea .ero de %a
6nceput/
Dac& i!ediat dup& antetu% instruc2iunii -or se pune L instruc2iunea -or "a e-ectua
instruc2iunea "id& p3n& c3nd condi2ia din epresia E este ade"&rat& a"3nd ro%u%
doar de 6nt3r.iere a e-ectu&ri pro,ra!u%ui/
Eemplu
Adunarea nu!ere%or natura%e de %a .ero %a nu!aru% n citit de %a tastatur&
s=1!B!:!;!CC0!n-1
"ezol#are
Pentru a rea%i.a aceast& su!& se "a eecuta repetat instruc2iunea co!pus& B
+
s=s!7
=!17
,
Ini2ia% sI$ )i iI$, )i se repet& instruc2iunea
+
s=s!7
=!17
,
p3n& c3nd iNn /
nsu!area se poate eecuta -o%osind instruc2iunea -or ast-e% B
s=07 =07
"or )=07<n7 =!1* Epresia: iI$ ini2ia%i.ea.& "aria*i%a contor i cu
"a%oarea $L epresiaE iNn este condi2ia de eecu2ie a
cic%u%ui -orL epresia1 iIiJ: este epresia de
reini2ia%i.are cu o unitate a "aria*i%ei contor /
s=s!7
-n#./'e <#ono012 inc%uderea -i)iere%or ce con2in -unc2ii%e de intrare
ie)ire
-n#./'e <st'o012
&o' (an )*
+
nt ,n,s7 dec%ararea "aria*i%e%or i, n, s de tip intre,
p/ts )3s =1!B!:!;!C00n-1R3*7 ape%area -unc2iei de a-i)are a )iru%ui de caractere
dispus 6ntre ,'i%i!e%e du*%e
p/ts )3'at pe n (a (ara 'e#Ut 5ero =R3*7
s#an" )3='3,Jn*7 ape%area -unc2iei de citire cu -or!at de tip
intre, a unei date de %a tastatur& )i dispunerea
"a%orii citite %a adresa %ui n
LIMBAJUL C TEORIE I APLICAI I GE
" )n<=0* condi2ionarea datei de intrare prin -o%osirea
instruc2iunii i-
p/ts )3n a "ost 'at 4rest3*7instruc2iunea : din corpu% %ui i-
e.se
+ instruc2iunea co!pus& E din corpu%
instruc2iunii i-
s=07 ini2ia%i.area su!ei cu .ero
"or )=17<n7=!1* antetu% instruc2iunii -or, prin care se
ini2ia%i.ea.& "aria*i%a de contor cu "a%oarea :,
apoi epresia de contro% a cic%u%ui -or iNn )i
epresia de reini2ia%i.are a "aria*i%ei de contor
iIiJ:
s=s!7 instruc2iunea de atri*uire pentru ca%cu%u%
su!ei sI:JEJ1J]]Jn
prnt")3s/(a = ='8n3,s*7 ape%area -unc2iei de tip&rire cu -or!at pentru
a-i)area su!ei )i sa%t %a r3nd nou prin -o%osirea
caractere%or 8n
p/ts )3apasa o tasta3*7 ape%area -unc2iei de a-i)are a )iru%ui de
caractere
4et#1 )*7 ape%area -unc2iei de citire a unui caracter de %a
tastatur&
, 6nc'iderea corpu%ui -unc2iei principa%e !ain
La pornirea pro,ra!u%ui se cite)te de %a tastatur& nu!&ru% de ter!eni n0: ai su!ei,
"a%oarea citit& este dispus& %a adresa %ui n/ 7& consider&! c& "a%oarea citit& a %ui n este
#/ <aria*i%a s este ini2ia%i.at& cu "a%oarea .ero, se ini2ia%i.ea.& "aria*i%a de contor i a
%ui -or cu "a%oarea :,
7u!a s I$J:I:,
dup& e-ectuarea pri!u%ui cic%u -or, se !&re)te "aria*i%a de contor cu o unitate datorit&
epresiei
iIiJ:,
se cuntro%ea.& dac& noua "a%oare a %ui
i IE
"eri-ic& epresia de condi2ionare
iNn/
<a%oarea %ui i este EN# ade"&rat,
se "a continua e-ectuarea instruc2iunii co!puse din interioru% %ui -or/
LIMBAJUL C TEORIE I APLICAI I G1
sIsJi re.u%t&
sI:JE
re.u%t&
sI:JE o*2in3ndu0se pri!i doi ter!eni ai su!ei s/
7e continu& cre)terea "aria*i%ei de contor cu o unitate
iI1,
se "eri-ic& condi2ia de continuare a instruc2iunii -or
iI1N# ade"&rat,
sIsJi re.u%t&
sI:JEJ1 o*2in3ndu0se pri!i trei ter!eni ai su!ei/
7e continu& cre)terea "aria*i%ei de contor cu o unitate
iIF,
se "eri-ic& condi2ia de continuare a instruc2iunii -or
iIFN# ade"&rat,
sIsJtQi re.u%t&
sI:JEJ1JF o*2in3ndu0se pri!i patru ter!eni ai su!ei/
7e continu& cre)terea "aria*i%ei de contor cu o unitate
iI#,
se "eri-ic& condi2ia de continuare a instruc2iunii -or
iI#N# -a%s,
se p&r&se)te instruc2iunea -or )i se continu& eecu2ia cu a-i)area pe !onitor a
su!ei ce%or patru ter!eni/
Eemplu
7& se rea%i.e.e pro,ra!u% ce adun& ter!eni a%ternan2i pentru s=1-B!:-C n/
"ezol#are
-n#./'e <#ono012
-n#./'e <st'o012
&o' (an )*
+
nt ,n,s,t7
p/ts )H se #a.#/.ea5a s/(a s=1-B!:-;!<-C0nI*7
p/ts )3'at pe n 20=3*7
s#an" )3='3,Jn*7
" )n<=0* se e"a%uea.& epresia n<=0 )i dac& este
ade"&rat&, se a-i)ea.& !esa+u% n a "ost 'at
4rest )i se trece %a instruc2iunea de dup&
corpu% instruc)iunii i-/
p/ts )3n a "ost 'at 4rest3*7instruc2iunea : din corpu% %ui i-
e.se
+ 6nceputu% instruc2iunii co!puse E a instruc2iunii i-
s=07 ini2ia%i.area su!ei s cu "a%oarea .ero
LIMBAJUL C TEORIE I APLICAI I GF
t=-17 ini2ia%i.area ter!enu%ui tI:, -o%osit pentru
a%ternarea ter!eni%or din cadru% su!ei s
"or )=17<=n7=!1* antetu% instruc2iuni -or, ini2ia%i.area %ui i cu :,
condi2ionare iNIn, reini2ia%i.area "aria*i%ei i
cu o cre)tere I: %a -iecare cic%u parcurs
+ inceputu% corpu%ui instruc2iunii -or
t=-t7 instruc2iune de atri*uire cu scopu% a%tern&rii
se!nu%ui ter!enu%ui ce se adau,&
s=s!*t7 instruc2iune de atri*uire pentru ca%cu%u% su!ei
ter!eni%or cu se!n a%ternant
, s-3r)itu% corpu%ui instruc2iunii -or
prnt" )3s/(a = ='8n3,s*7
, s-3r)itu% instruc2iunii E a instruc2iuni i-
p/ts )3apasa o tasta3*7
4et#1 )*7
,
La pornirea pro,ra!u%ui se cite)te de %a tastatur& nu!&ru% de ter!eni ai su!ei, "a%oarea
citit& este dispus& %a adresa %ui n/ 7& consider&! c& "a%oarea citit& este #/ <aria*i%a s
este ini2ia%i.at& cu "a%oarea .ero, apoi ter!enu% t ia "a%oarea H:, se ini2ia%i.ea.&
"aria*i%a de contor i a %ui -or cu "a%oarea :, se rea%i.ea.& sc'i!*area de se!n a %ui t,
t de"ine e,a% cu :/
7u!a s I$J:Q:I:,
dup& e-ectuarea pri!u%ui cic%u -or, se !&re)te "aria*i%a de contor cu o unitate datorit&
epresiei
iIiJ:,
se contro%ea.& dac& noua "a%oare a %ui
i IE
"eri-ic& epresia de condi2ionare
iNIn/
<a%oarea %ui i este ENI# ade"&rat,
se "a continua e-ectuarea instruc2iunii co!puse din interioru% %ui -or/
tI0t
re.u%t& tI0:,
sIsJtQi re.u%t&
sI:J40:5QE
re.u%t&
sI:0E o*2in3ndu0se pri!ii doi ter!eni aisu!ei s/
7e continu& cre)terea "aria*i%ei de contor cu o unitate
iI1,
LIMBAJUL C TEORIE I APLICAI I G#
se "eri-ic& condi2ia de continuare a instruc2iunii -or
iI1NI# ade"&rat,
tI040:5I:,
sIsJtQi re.u%t&
sI:0EJ1 o*2in3ndu0se pri!ii trei ter!eni ai su!ei/
7e continu& cre)terea "aria*i%ei de contor cu o unitate
iIF,
se "eri-ic& condi2ia de continuare a instruc2iunii -or
iIFNI# ade"&rat,
tI04:5I0:,
sIsJtQi re.u%t&
sI:0EJ10F o*2in3ndu0se pri!ii patru ter!eni ai su!ei/
7e continu& cre)terea "aria*i%ei de contor cu o unitate
iI#,
se "eri-ic& condi2ia de continuare a instruc2iunii -or
iI#NI# ade"&rat,
tI040:5I:,
sIsJtQi re.u%t&
sI:0EJ10FJ# o*2in3ndu0se pri!ii cinci ter!eni ai su!ei/
7e continu& cre)terea "aria*i%ei de contor cu o unitate
iIG,
se "eri-ic& condi2ia de continuare a instruc2iunii -or
iIGNI# -a%s,
se p&r&se)te instruc2iunea -or )i se continu& eecu2ia cu a-i)area pe !onitor a
su!ei ce%or cinci ter!eni/
Eemplu
7& se a-i)e.e "a%ori%e -unc2iei -45IF
E
J1J# pe inter"a%u% HE %a JE cu pasu%
I$,:/
"ezol#are
-n#./'e <#ono012
-n#./'e <st'o012
&o' (an )*
+
".oat ,x,"x7
p/ts )Hse #a.#/.ea5a ")x*=;xB!:x!< pt0 x=-B .a B #/ pas/. 001I*7
"or )x=-B7x<=B7x=x!001* antetu% instruc2iuni -or, ini2ia%i.area %ui cu
"a%oarea 0E, indentic& cu 6nceputu% inter"a%u%ui
pentru , condi2ionare NIE, %i!ita din dreapta
a inter"a%u%ui pentru , reini2ia%i.area
"aria*i%ei cu o cre)tere I$/: %a -iecare cic%u
parcurs
+ 6nceputu% instruc2iunii co!puse din corpu% %ui -or
"x=-;*x*x!:*x!<7 ca%cu%u% %ui - %a -iecare cic%u pentru
prnt" )3>)x*=="8n3,"x*7
LIMBAJUL C TEORIE I APLICAI I GG
, 6nc'iderea corpu%ui instruc2iunii co!puse )i
inc%usi" 6nc'iderea instruc2iunii -or
p/ts)3apasa o tasta3*7
4et#1 )*7
,
La eecu2ia pro,ra!u%ui se "a ini2ia%i.a "aria*i%a de contor din cic%u% -or cu "a%oarea H
E, se parcur,e instruc2iunea co!pus&, se deter!in& "a%oarea %ui - pentru I0E, se
a-i)ea.& "a%oarea ca%cu%at& pentru -, se reini2ia%i.ea.& "aria*i%a de contoar cu o
cre)tere e,a%& cu pasu% dat de epresia IJ$/: )i se "eri-ic& dac& noua "a%oare pentru
respect& condi2ia NE din epresia E a instruc2iunii -or/
La a% doi0%ea pas
I0EJ$/:I0:/9
0:/9NE ade"&rat
se reia eecu2ia instruc2iunii de atri*uire -, se continu& cic%u% -or p3n& c3nd
"a a"ea "a%oarea E, %i!ita superioar& a inter"a%u%ui de de-inire pentru /
pentru IE se ca%cu%ea.& -, se reini2ia%itea.& cu noua "a%oare
IEJ$/:IE/:
E/:NE -a%s
cic%u% -or se 6nc'ide )i se continu& pro,ra!u% cu instruc2iunea de dup&
instruc2iunea -or/
Eemplu
7& se ca%cu%e.e nb I:aEa1a ] an, unde n se cite)te de %a tastatur&, n M$/
"ezol#are
-n#./'e <#ono012
-n#./'e <st'o012
&o' (an )*
+
nt n,7 dec%ararea a dou& "aria*i%e si!p%e de tip 6tre,
".oat p7 dec%ararea unei sin,ure "aria*i%e si!p%e de tip
rea% si!p%& preci.ie 4 -%oat5
p/ts )3'at n/(ar/. n=R3*7 a-i)area )iru%ui de caractere dintre @'at n/(ar/.
n=R C
s#an" )3='3,Jn*7 citirea unei date de tip 6ntre, de %a tastatur&
" )n<=0* instruc2iunea i- de condi2ionare
p/ts )3n este 4rest3*7 instruc2iunea : a instruc2iunii i-
e.se
+ 6nceputu% instruc2iuni E a instruc2iuni i-
p=17 ini2ia%i.area produsu%ui cu "a%oarea :
"or )=17<=n7=!1*
p=p*7 ca%cu%u% produsu%ui pI:aEa1a ] an
LIMBAJUL C TEORIE I APLICAI I G=
prnt")3NT==48n3,p*7 a-i)area -actoria%u%ui, -o%osind repre.entarea ca
"a%oare si!p%& preci.ie sau su* -or!a "a%oare
repre.entat& cu eponent pentru a uti%i.a opti!
spa2iu% ocupat pentru a-i)are `,

prnt")3NT==01"8n3,p*7 a-i)area -actoria%u%ui cu parte 6ntrea,& )i o sin,ur&
.eci!a%& prin contro%u% -or!atu%ui de a-i)are
=01"
, 6nc'iderea instruc2iunii E a instruc2iunii i-
p/ts)3apasa o tasta3*7
4et#1 )*7
,
Eemplu
7& se citeasc& ter!enii unui "ector )i s& se 6n!u%2easc& "ectoru% cu un sca%ar,
!&ri!ea "ectoru%ui, ter!enii "ectoru%ui c3t )i sca%aru% se citesc de %a tastatur&/
"ezol#are
\inc%ude Nconio/'M
\inc%ude Nstdio/'M
&o' (an )*
+
nt n,,V7 dec%ararea a trei "aria*i%e si!p%e de tip 6ntre,
".oat a?10@,b?10@7 dec%ararea "aria*i%e%or indeate de tip "ector cu
!&ri!ea I:$
p/ts )3'at (ar(ea &e#tor/./ n=R3*7
s#an" )3='3,Jn*7 citirea !&ri!ii "ectoru%ui
"or )=17<=n7=!1* instruc2iunea -or -o%osit& pentru citirea ter!eni%or
"ectoru%ui
+
prnt")3'at a?='@=3,*7 a-i)area nu!&ru%ui ter!enu%ui ce se cite)te
s#an" )3="3,Ja?@*7 citirea ter!enu%ui ?@ a% "ectoru%ui a
, 6nc'eierea opera2iei de citire a ter!eni%or
"ectoru%ui
p/ts)3'at (ar(ea s#a.ar/./ V=3*7
s#an" )3='3,JV*7 citirea sca%aru%ui de tip 6ntre,
"or )=17<=n7=!1* ca%cu%u% produsu%ui "ectoru%ui a cu sca%aru% V
b?@=a?@*V7
"or )=17<=n7=!1* a-i)area ce%or doi "ectori a9; )i *9;
+
prnt" )3a?='@=="8t3,,a?@*7
prnt")3b?='@=="8t3,,b?@*7
LIMBAJUL C TEORIE I APLICAI I G>
,
p/ts)3apasa o tasta3*7
4et#1 )*7
,
Un "ector a9; se caracteri.ea.& prin nu!&ru% de ter!eni )i "a%oarea -iec&rui
ter!en / Pentru a citi "a%oarea ce se atri*uie -iec&rui ter!en, este ne"oie s& se
rea%i.e.e un ,rup de instruc2iuni, care s& per!it& a-i)area nu!&ru%ui ter!enu%ui )i
citirea "a%orii ter!enu%ui/
Acest ,rup de instruc2iuni tre*ui re%uat pentru -iecare ter!en, re%uarea ,rupu%ui se
"a rea%i.a prin inter!ediu% instruc2iunii cic%ice -or/ Pri!a instruc2iune
"or )=17<=n7=!1* "a rea%i.a prin inter!ediu% instruc2iunii co!puse B
a-i)area nu!&ru%ui ter!enu%ui "ectoru%ui
citirea "a%orii ter!enu%ui "ectoru%ui
Pentru orice opera2ie asupra ter!eni%or unui "ector este necesar ape%area
instruc2iunii -or prin care s0& se parcur,& opera2ia dorit& asupra ter!eni%or
"ectoru%ui/ Ast-e% instruc2iunea a doua -or are ca scop 6n!u%2irea ter!eni%or
"ectoru%ui cu un sca%ar/ Instruc2iunea a treia -or are ca scop a-i)area ter!eni%or
"ectoru%ui a c3t )i a "ectoru%ui */
Eemplu
7& se citeasc& ter!enii unui "ector )i s& se caute dac& o "a%oare citit& de %a
tastatur& apar2ine "ectoru%ui, !ari!ea "ectoru%ui, ter!enii "ectoru%ui c3t )i
"a%oarea c&utat&, se citesc de %a tastatur&/
"ezol#are
-n#./'e <st'o012
-n#./'e <#ono012
&o' (an )*
+
".oat t,a?10@7
nt ,n7
p/ts )3se 'eter(na 'a#a o &a.oare #tta apartne &e#tor/./3*7
p/ts ) 3'at (ar(ea &e#tor/./ 3*7
s#an" )3='3,Jn*7
"or )=17<=n7!!* instruc2iunea -or pentru citirea ter!eni%or
"ectoru%ui
+
prnt" )3'at ter(en/. ='= 3,*7
s#an" )3="3,Ja?@*7
,
p/ts )3'at &a.oarea #are se #a/ta 'a#a apartne &e#tor/./3*7
s#an" )3="3,Jt*7
"or )=17<=n7!!* instruc2iunea -or pentru parcur,erea tuturor
ter!eni%or "ectoru%ui )i co!pararea -iec&rui
ter!en cu "a%oarea c&utat&
" )t==a?@* instruc2iunea de deci.ie
p/ts )3&a.oarea #a/tata apartne &e#tor/./3*7
e.se
LIMBAJUL C TEORIE I APLICAI I G9
7
p/ts )3apasa o tasta 3*7
4et#1 )*7
,
Aro-leme propuse
:/ 7& se deter!ine "a%oarea %ui sin 45 dat& de re%a2iaB
sin 45I 0
1
K1bJ
#
K#b0
=
K=b]//J40:5
n
/
EnJ:
K4EnJ:5
Date de intrare B "a%oare nu!eric& rea%& a %ui epri!at& 6n radiani
Date de ie)ire B "a%oarea %ui sin 45
E/ 7& se deter!ine "a%oarea %ui cos 45 dat& de re%a2iaB
cos 45I:0
E
KEbJ
F
KFb0
G
KGb]/J40:
n
5/
En
K4En5
Date de intrare B "a%oare nu!eric& rea%& a %ui epri!at& 6n radiani
Date de ie)ire B "a%oarea %ui cos 45
F/ 7& se a-i)e.e "ite.aI" )i spa2iu% s:I parcurs 6n -iecare secund& a unui corp 6n
c&dere %i*er& de %a 6n&%2i!ea I'/
Date de intrareB in&%2i!ea '/
Date de ie)ire ", s:/
Ti!pu% tota% de c&dere ItI g h K E "I,/t s:I,4t
E
iJ:
0t
E
i
5
Constant& ,I9/>: !Ks
E
/
#/ 7& se deter!ine "a%oarea !ai!& a ter!enu%ui unui "ector /
Date de intrareB !&ri!ea )i ter!enii "ectoru%ui
Date de ie)ireB "a%oarea !ai!& a ter!enu%ui /
G/ 7& se ca%cu%e.e CIA/a:JB/*:
A, B "ectori cu aceea)i !&ri!e
a:, *: doi sca%ari
Date de intrareB nI!&ri!ea "ectori%or
Ter!enii ce%or doi "ectori
<a%oarea ce%or doi sca%ari
Date de ie)ireB "ectoru% C/
=/ 7& se a-i)e.e "a%ori%e -unc2iei -45I,/
E
KE pentru a,* iar pasu% de cre)tere
a %ui este p/
Date de intrare a, *, p/
Date de ie)ire "a%oarea %ui -45 /
>/ 7& se deter!ine su!a sI:0E
E
J1
E
0F
E
]/n
E
Date de intrareB !&ri!ea n/
Date de ie)ireB "a%oarea su!ei s/
LIMBAJUL C TEORIE I APLICAI I =$
9/ 7& se deter!ine "a%oarea %ui e I:J:K:bJ:KE:J:K1:J]:Knb cu preci.ia cerut&
de uti%i.ator prin epsi%on/
Date de intrareB nu!&ru% de ter!eni, epsi%on/
Date de ie)ire "a%oarea %ui e/
:$/ 7& se deter!ine !edia arit!etic& )i ,eo!etric& a n nu!ere po.iti"e citite de
%a tastatur&/
MaI4n:JnEJn1J]nn5Kn
M,I
n
nn n n n /// 1 / E / :
Date de intrare nu!&ru% de nu!ere )i "a%oarea acestora/
Date de ie)ire Ma )i M,/
3.'.'. Instruciunea ,-ile.
Instruc2iunea ('i%e este -o%osit& pentru rea%i.area unei structuri cic%ice
condi2ionate anterior )i are sintaa B
W1.e )exprese 'e #on'tonare*
9nstr/#t/ne s(p.a sa/ #o(p/sa7
7e e"a%uea.& epresia dintre parante.e )i dac& aceasta este ade"&rat& se
e-ectuea.& instruc2iunea din corpu% %ui ('i%e, dup& care se trece
%a instruc2iunea ur!&toare/
Dac& epresia are "a%oare -a%s&, nu se "a eecuta instruc2iunea din corpu% %ui
('i%e )i se trece direct %a instruc2iunea ur!&toare, ast-e% instruc2iunea din
corpu% %ui ('i%e poate s& nu se eecute niciodat&/ n corpu% instruc2iunii ('i%e
poate eista o nou& instruc2iune ('i%e, 6n acest ca., se nu!esc instruc2iuni
('i%e i!*ricate/
Instruc2iunea ('i%e se poate considera ca o instruc2iune cic%ic& condi2ionat&
Anterior, de-inind o structur& repetiti"&/
Eemplu
7& se a-i)e.e "a%ori%e -unc2iei -45IF
E
J1J# HE %a JE cu pasu% I$/: pt/ /
-n#./'e <#ono012
-n#./'e <st'o012
&o' (an )*
+
".oat ,x,"x7
p/ts )Hse #a.#/.ea5a ")x*=;x
B
!:x!< pt0 x=-B .a B #/ pas/. 001I*7
x=-B7 ini2ia%i.area %ui cu "a%oarea de 6nceput a
inter"a%u%ui
W1.e ) x<=B* instruc2iunea ('i%e condi2ionea.& eecu2ia c3t
ti!p x<=B
+ 6nceputu% corpu%ui instruc2iunii ('i%e
"x=-;*x*x!:*x!<7
prnt" )3x==" >)x*=="8n3,x,"x*7
LIMBAJUL C TEORIE I APLICAI I =:
x=x!0017 !odi-icarea "aria*i%ei de condi2ionare, pentru a se
parcur,e do!eniu% %ui
, s-3r)itu% corpu%ui %ui ('i%e
p/ts)3apasa o tasta3*7
4et#1 )*7
,
:-ser#aie
Dac& "aria*i%a ce intr& 6n epresia de condi2ionare a %ui ('i%e nu se !odi-ic&
6n interioru% corpu%ui instruc2iunii ('i%e, "a re.u%ta un cic%u in-init/
n ca.u% de -a2&, 6nainte de eecu2ia instruc2iunii ('i%e, are "a%oarea HE ce
este !ai !ic& dec3t E, ast-e% epresia x<=B este ade"&rat& )i se 6ncepe
eecu2ia instruc2iunii co!puse din corpu% %ui ('i%e ast-e% B
7e ca%cu%ea.& "x=-;*x*x!:*x!<7 pentru x=-B
7e a-i)ea.& "a%oarea %ui )i -45 cu instruc2iunea
prnt" )3x==" >)x*=="8n3,x,"x*7
x=x!0017 se !odi-ic& "a%oarea %ui cu $/:/ de"ine H:/9 )i
se "eri-ic& dac& noua "a%oare a %ui respect&
condi2ionarea din epresia %ui ('i%e )i se continu&
p3n& c3nd "a%oarea %ui de"ine !ai !are dec3t E/
Eemplu
7& se a-i)e.e "a%ori%e -unc2iei tri,ono!etrice sin 45 pentru do!eniu% $ %a 1#9
de ,rade sea,esi!a%e, din ,rad 6n ,rad, cu "i.ua%i.area pa,in& cu pa,in& a
"a%ori%or/
"ezol#are
Pentru ca%cu%u% -unc2iei sin 45 se "a ape%a -unc2ia de *i*%iotec&
sn)para(etr/* din -i)ieru% !at'/' cu o*ser"a2ia c& para!etru% -unc2iei
sin4par5 tre*uie epri!at 6n radiani/ Ast-e%, se "a con"erti un,'iu% din ,rade
sea,esi!a%e 6n radiani parIQPIK:>$
Pentru a a-i)a pa,in& cu pa,in&, se "a condi2iona ca dupa -iecare "a%oare a %ui
I!odu% de E1 s& se citeasc& un caracter de %a tastatur&, cu scopu% de a opri
te!porar eecu2ia pro,ra!u%ui 6n ecranu% uti%i.atoru%ui, pentru citirea "a%ori%or
din pa,ina curent&/
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e <(at1012
-'e"ne P9 :01;1<QBL< de-inirea constantei PI
&o' (an )*
+
nt x7
'o/b.e sx,x17
x1=P9/180007
x=07
LIMBAJUL C TEORIE I APLICAI I =E
W1.e )x<=:<Q* condi2ionarea eecu2iei instruc2iunii ('i%e
+
sx=sn )x*x1*7 ca%cu%u% %ui s ca sin4 5, este trans-or!at 6n
radiani pentru a ape%a corect -unc2ia !ate!atic&
dou*%e sin 4"a%oare dou*%e5
prnt" )3sn ?='@==010."8n3,x,sx*7
x=x!17 !odi-icarea "a%orii %ui pentru a parcur,e
do!eniu% $ ] 1#9 ,rade
" ))x!1*=B:==0* condi2ionarea a-i)&rii !esa+u%ui )i a)teptarea
apas&rii unei taste dup& E1 de %inii a-i)ate 4dac&
restu% 6!p&r2irii %ui %a E1 este .ero, adic&
!odu%o E15
+
p/ts )3Apasat o tasta pentr/ a a"sa pa4na /r(atoare3*7
4et#1 )*7
,
, 6nc'iderea corpu%ui instruc2iunii ('i%e
p/ts)3apasa o tasta pentr/ ter(narea pro4ra(/./ 3*7
4et#1 )*7
,
Eemplu
7& se citeasc& !ai !u%te "a%ori rea%e separate prin spa2iu a%* sau Enter )i s&
se deter!ine su!a acestor "a%ori/ Ter!inarea )iru%ui de "a%ori se re%i.ea.&
prin ap&sarea unei taste %iter& sau caracteru% "ir,u%&/
"ezol#are
Datorit& -aptu%ui c& nu se cunosc nu!&ru% de "a%ori ce se "or citi, nu se poate
ap%ica instruc2iunea cic%ic& -or, se "a pune o condi2ie care s& detecte.e c3nd
"a%oarea ce se cite)te nu !ai este o "a%oare rea%&/
Ounc2ia scan- 4`-//5 returnea.& "a%oarea :, pentru o citire e-ectuat& su*
contro%u% de -or!at )i "a%oarea $ pentru ca.u% c& nu s0a e-ectuat citirea/
Instruc2iunea ('i%e "eri-ic& condi2ia ca citirea s& ai*& %oc 4"a%oarea returnat&
de -unc2ia scan- s0& -ie II:5/
-n#./'e <st'o012
-n#./'e <#ono012
&o' (an )*
+
".oat t,s7
p/ts )3Se #tes# &a.or rea.e separate prn spat/ s se a"sea5a
s/(a .or 3*7
p/ts ) 3n#1'erea sr/./ #/ #ara#ter/. &r4/.a
'at &a.or.e 3*7
s=07
LIMBAJUL C TEORIE I APLICAI I =1
W1.e )s#an" )3="3,Jt*==1* instruc2iunea ('i%e condi2ionea.& eecu2ia
instruc2iunii sIsJt, dac& -unc2ia scan- 45
returnea.& "a%oarea :/ corespun.&toare citiri unei
date rea%e ur!at& de spa2iu %i*er sau Enter/ Dac&
data citit& este un caracter a%-a sau "ir,u%&,
condi2ia %ui ('i%e nu !ai este ade"&rat&, -inc&
-unc2ia scan- "a returna "a%oarea $ 4nu s0a citit
"a%oarea5, se p&r&se)te ('i%e/
s=s!t7 instruc2iunea din corpu% %ui ('i%e , care rea%i.ea.&
su!a "a%ori%or introduse de %a tastatur&/
prnt" )3s/(a &a.or.or ntro'/se ==0:" 8n3,s*7 `/1- per!ite a-i)area
"a%ori%or rea%e cu 1 .eci!a%e
p/ts )3apasa o tasta 3*7
4et#1 )*7
,
Eemplu
7& se citeasc& ter!enii a doi "ectori de tip rea% si!p%& preci.ie, s& se
deter!ine produsu% sca%ar ai ce%or doi "ectori/
"ezol#are
7e consider& c& ter!enii pri!u%ui "ector sunt 6n a, iar ter!enii ce%ui de0a% doi%ea
"ector sunt 6n */ Datorit& -aptu%ui c& nu se cere p&strarea ter!eni%or citi2i )i
doar produsu% sca%ar, nu este necesar dec%ararea de ta*%ouri de tip "ectori/
Dac& "ectoru% a are ter!enii a:, aE, a1, ]an iar "ectoru% * are ter!enii *:, *E,
*1, ]*n , produsu% sca%ar a "ectori%or a )i * este dat de su!a
a:Q*:JaEQ*EJa1Q*1]/anQ*n/
7e "or citi perec'i de "a%ori ce repre.int& ter!enu% ai, *i, iar 6nc'iderea )iru%ui
de perec'i de "a%ori se rea%i.ea.& ca )i 6n ee!p%u% anterior, prin a tasta un
caracter %iter& sau caracteru% "ir,u%&/
-n#./'e <st'o012
-n#./'e <#ono012
&o' (an )*
+
".oat a,b,p7
nt 7 dec%ararea "aria*i%ei i de tip intre, pentru ase a-i)a
nu!&ru% ter!enu%ui care se cite)te,sau se poate
-o%osi %a indicarea nu!&ru%ui -ina% de ter!eni ai
"ectoru%uia sau "ectoru%ui *
p/ts )3Se #tes# &a.or rea.e pere#1 a ter(en.or a 'o &e#tor 3*7
p/ts ) 3 9n#1'erea sr/./ #/ #ara#ter/. &r4/.a sa/ #ara#ter
.tera3*7
LIMBAJUL C TEORIE I APLICAI I =F
p=0007
=17
prnt" )3Dat &a.oar pentr/ a?='@ s b?='@3,,*7
W1.e )s#an" )3=" ="3,Ja,Jb*==B* condi2ia de continuare a
instruc2iunii co!puse din corpu% %ui ('i%e
+
p=p!a*b7
=!17
prnt" )3Dat &a.or pentr/ a?='@ s b?='@3,,*7
,
prnt" )3Pro'/s/. s#a.ar a ter(en.or #e.or B &e#tor ==0:" 8n3,p*7
p/ts )3Apasa o tasta 3*7
4et#1 )*7
,
Aro-leme propuse
:/ 7& se rea%i.e.e un pro,ra! care s& ca%cu%e.e
F 1 O
E

+
, M$
condi2ionat de o paro%& de intrare -or!ate din E01 ci-re/
Dat& de intrareB paro%& )i
Dat& de ie)ire

O
E/ 7& se deter!ine nb pentru nN:$$ nbI:QEQ1Q//Qn
Dat& de intrareB n
Dat& de ie)ire nb
1/ 7& se citeasc& ter!eni unui "ector )i s& se deter!ine "a%oarea !ini!& a
ter!enu%ui "ectoru%ui/
Dat& de intrareB ter!eni "ectoru%ui/
Dat& de ie)ire !ini!u% din ter!eni "ectoru%ui/
3.'... Instruciunea do ,-ile.
Instruc2iunea do ('i%e este uti%i.at& pentru rea%i.area structuri%or cic%ice
condi2ionate posterior )i are sintaa B
'o
9nstr/#t/ne s(p.a sa/ #o(p/sa7
W1.e )exprese*7
Instruc2iunea se eecut& ast-e% B
:/ 7e eecut& instruc2iunea si!p%& sau co!pus& de dupo do,
E/ 7e e"a%uea.& epresia dintre parante.e%e de dup& ('i%e )i dac& aceasta este
ade"&rat&, se reia eecu2ia instruc2iunii de dup& do, dac& "a%oarea epresiei
este -a%s& se 6nc'eie instruc2iunea do0('i%e )i se continu& pro,ra!u% cu
ur!&toarea instruc2iune/
:-ser#aie
Indi-erent de "a%oarea epresiei dintre parante.e%e de dup& ('i%e, instruc2iunea din
corpu% do0('i%e se eecut& ce% pu2in odat&, de unde apare )i denu!irea de
structur& condi2ionat& posterior/
Eemplu
LIMBAJUL C TEORIE I APLICAI I =#
7& se a-i)e.e "a%ori%e -unc2iei -45IF
E
J1J# pentu inter"a%u% de %a Z %a
JE, are pasu% de cre)tere I$/:, dac& Z ME se "a ca%cu%a )i a-i)a pentru acest
Z "a%oarea -unc2iei -45, dac& ZNE se "a deter!ina -45 de %a Z, %a %i!ita
superioar& a inter"a%u%ui 4E5 /
"ezol#are
-n#./'e <#ono012
-n#./'e <st'o012
&o' (an )*
+
".oat ,x,"x7
p/ts )Hse #a.#/.ea5a ")x*=;x
B
!:x!< pt0 x V .a B, 'a#a V <B, #/ pas/.
001I*7
p/ts )HDat &a.oarea 'e n#ep/t a ./ x= VI*7
s#an" )H ="I,Jx*7
'o
+ 6nceputu% corpu%ui instruc2iunii do0('i%e
"x=-;*x*x!:*x!<7
prnt" )3x==" >)x*=="8n3,x,"x*7
x=x!0017 !odi-icarea "aria*i%ei condi2ionat& de ('i%e
pentru a se ter!ina do!eniu% pt/
, s-3r)itu% corpu%ui %ui do0('i%e
W1.e )x<=B* instruc2iunea ('i%e condi2ionea.& continuarea
eecu2iei instruc2iunii co!puse din corpu% %ui do0
('i%e c3t ti!p x<=B
p/ts)3apasa o tasta3*7
4et#1 ) *7
,
Ca.u% I/ Presupune! c& s0a dat pentru IZ "a%oarea 1, 6n acest ca. se "a
ca%cu%a -45 pentru aceast& "a%oare, se "a a-i)a "a%oarea %ui )i -45, dup& care
se !a+orea.& "a%oarea %ui cu $/: )i se e"a%uea.& epresia x<=B , 1/: nu este
!ai !ic dec3t E, epresia este -a%s&, se p&r&se)te cic%u% do ('i%e/
Ca.u% II/ Presupune! c& s0a citit pentru "a%oarea $, 6n acest ca. se "a
ca%cu%a -45 pentru aceast& "a%oare, se "a a-i)a "a%oarea %ui )i -45, dup& care
se !a+orea.& "a%oarea %ui cu $/: I$J$/:I$/: )i se e"a%uea.& epresia
x<=B , este !ai !ic dec3t E, epresia este ade"&rat&, se reia ca%cu%u% %ui -45 )i
ca%cu%u% pentru noua "a%oare a %ui I$/:J$/:I$/E]p3n& c3nd are "a%oarea E,
se e-ectuea.& u%ti!u% ca%cu% )i se p&r&se)te cic%u% do ('i%e/
Eemplu
7& se deter!ine nu!&ru% !ini! de !onede )i *acnote cu care se poate p%&ti o
su!& nu!&r intre, po.iti", !onede%e -o%osite sunt B :$$, #$$, :$$$, iar
*acnote%e sunt B E$$$, :$$$$, #$$$$, :$$$$$/
"ezol#are
LIMBAJUL C TEORIE I APLICAI I =G
Ca%cu%u% 6ncepe prin a deter!ina nu!&ru% 6ntre, de *acnote cu "a%oarea
!ai!& :$$$$$ din care este rea%i.at& su!a "/
Pentru a ape%a "a%ori%e di-erite a%e !onede%or sau *acnote%or s0a -o%osit
"ectoru% !oneda cu = ter!eni, a c&ror "a%oare repre.int& "a%ori%e i!puse 6n
enun2u% pro*%e!ei/
Pentru aceasta se 6!parte su!a " %a "a%oarea *acnotei !ai!e,
9=N
n=&/(one'a ?@7
n I partea 6ntrea,& a 6!p&r2iri %a :$$$$$ care "a indica nu!&ru% de *acnote de
:$$$$$/
Pentru a deter!ina restu% 6!p&r2iri %a :$$$$$ se "a ap%ica epresia B
&=&=(one'a ?@
ast-e% noua "a%oare a %ui " con2ine !u%tip%i ai !onede%or sau *acnote%or cu
"a%ori !ai !ici de :$$$$$/
7e repet& procedeu% de !ai sus, prin !odi-icarea ter!enu%ui %a care se "a
6!p&r2ii noua su!& 4restu% de %a 6!p&r2irea cu :$$$$$5, -ind necesar
decre!entarea %ui i cu : B
=-17 re.u%t& iIG
n=&/(one'a ?L@7 re.u%t& nu!&ru% de *acnote cu "a%oarea de #$$$$
&=&=(one'a ?<@ re.u%t& restu% 6!p&r2iri %a #$$$$
Ace)ti pa)i se repet& p3n& c3nd "a%oarea restu%ui este .ero, "a%oarea su!ei
tre*uie s& -ie !u%tip%u de :$$ 4"a%oarea !ini!& a !onedei i!pus& 6n enun2u%
pro*%e!ei5/
\n#./'e <st'o012
-n#./'e <#ono012
&o' (an )*
+
.on4 &,n7 dec%arara2ii a tipu%ui intre, %on, pentru a se putea
e-ectua opera2ii pe intre,i cu "a%ori !ai !ari de
1EGF=
.on4 7
.on4 (one'a ?8@7
p/ts )3Se #a.#/.ea5a n/(ar/. 'e ba4note s (one'e pt0 o &a.oare 'ata
3*7
p/ts ) 3Dat &a.oarea ntrea4a (/.tp./ 'e 1003*7
s#an")3=.'3,J&*7 citirea unei date de tip intre, %on, `%d
(one'a ?1@=1007 atri*uirea "a%ori%or ter!eni%or "ectoru%ui !oneda
(one'a ?B@=<007
(one'a ?:@=10007
(one'a ?;@=B0007
(one'a ?<@=100007
LIMBAJUL C TEORIE I APLICAI I ==
(one'a ?L@=<00007
(one'a ?N@=1000007
=N7 ini2ia%i.area %ui i cu "a%oarea !a corespun.&toare
nu!&ru%ui ter!enu%ui !ai! a% "ectoru%ui
!oneda
'o 6nceperea cic%u%ui do ('i%e
+
n=&/(one'a ?@7
" )n* dac& "a%oarea su!ei s este !ai !ic& de :$$ sau
nu este !u%tip%u de :$$, "a re.u%ta nI$ )i nu se "a
a-i)a nu!&ru% *acnote%or sau !onede%or, datorit&
-aptu%ui c& su!a nu poate -i repre.entat& de nici o
!anod&
" )<<*
" )n==1*
" )==1*
p/ts )3O (one'a 'e 100 .e3*7
e.se
prnt" )3o (one'a a =.' .e8n3,(one'a ?@*7
e.se
" )==1*
prnt" )3=.' (one'e 'e 100.e8n3,n*7
e.se
prnt" )3=.' (one'e =.' .e8n3,n,(one'a ?@*7
e.se
" )n==1*
prnt" )3O ba#nota a =.' .e 8n3,(one'a ?@*7
e.se
prnt" )3=.' ba#note a =.' .e3,n,(one'a ?@*7
,
W1.e )&=&=(one'a ?--@*7 epresia de condi2ionare a cic%u%ui do ('i%e este
ca restu% 6!p&r2irii s& -ie di-erit de .ero )i
sup%i!entar se -ace decre!entarea cu : a "a%orii
%ui i
p/ts )3Apasa o tasta 3*7
4et#1 )*7
,
Aro-leme propuse
:/ 7& se rea%i.e.e un pro,ra! care s& a-i)e.e 1 F O
E

+ indi-erent de
"a%oarea %ui iar dac& F $ s& a-i)e.e "a%ori%e %ui

O pe acest inter"a%
cu pasu% de cre)tere a %ui
# , $

Dat& de intrareB
Dat& de ie)ireB

O
E/ 7& se citeasc& tasta ap&sat& )i dac& aceasta nu este ci-r& atunci se e-ectuea.&
pro,ra!u% de ca%cu% a %ui

O pentru o "a%oare : iar dac& tasta ap&sat&


este : s& se a-i)e.e

O pe inter"a%u% :$ $ cu pasu% :/
LIMBAJUL C TEORIE I APLICAI I =>
: E F O
E

+ + /
Dat& de intrareB "a%oarea introdus&
Dat& de ie)ireB

O
3.'./. Instruciunea brea0.
Instruc2iunea breaV este -o%osit& 6n cadru% corpu%ui unui cic%u a% instruc2iuni%or
"or, 'o-W1.e, W1.e, sWt#1 )i %a 6nt3%nirea acestei instruc2iuni se ter!in&
eecu2ia cic%u%ui/ Eecu2ia se continu& cu instruc2iunea de dup& cic%u% 6n care s0a
6nt3%nit instruc2iunea breaV/ 7intaa instruc2iunii *reaZ este B
breaV7
Eemplu
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e <(at1012
&o' (an )*
+
nt ,s7
".oat n,6,x,"x7
'o
+
p/ts )3'at &a.oarea ./ x3*7
" )s#an")3="3,Jx* == 1* dac& data citit& este de tip rea%, -unc2ia scan- "a
returna "a%oarea :
breaV7 instruc2iunea breaV -or2ea.& ie)irea din cic%u% do
('i%e
p/ts )3n/ s-a #tt /n n/(ar3*7
p/ts )3se rea #trea 3*7
""./s1 )st'n*7 -unc2ia ""./s1 are ro%u% de a ,o%i re,istru% asociat
tastaturii pentru re%uarea citirii
,
W1.e )1*7
"or )6=x76<=x!<76!!*
+
"x=;*67
prnt" )3"/n#ta "x==4 8n3,"x*7
,
p/ts )3Apasa o tasta3*7
4et#1 )*7
,
3.'.1. Instruciunea continue.
Instruc2iunea continue se uti%i.ea.& 6n corpu% cic%u%ui do ('i%e, ('i%e sau -or )i
per!ite a*andonarea itera2iei/
Instruc2iunea continue 6n cadru% instruc2iuni%or ('i%e )i do ('i%e -or2ea.&
oprirea itera2iei curente, se e"a%uea.& epresia care sta*i%e)te continuarea sau
ter!inarea cic%u%ui/
LIMBAJUL C TEORIE I APLICAI I =9
n cadru% instruc2iunii -or, instruc2iunea continue -or2ea.& a*andonarea itera2iei
curente )i se eecut& pasu% de reini2ia%i.are/
Instruc2iunea continue este -o%osit& 6n cadru% instruc2iuni%or i- i!*ricate din
cadru% unui cic%u -or, do ('i%e, ('i%e/
3.'.2. &uncia e)it.
Ounc2ia eit are prototipu% B
<oid eit 4int cod5
Para!etru% de tip intre, de-ine)te starea pro,ra!u%ui %a !o!entu% ape%&rii -unc2iei eit/
<a%oarea $ a para!etru%ui indic& o ter!inare nor!a%& a eecu2iei pro,ra!u%ui/
<a%oarea di-erit& de $ a para!etru%ui indic& o ter!inare anor!a%& a pro,ra!u%ui/
La ape%u% -unc2iei eit, se "idea.& *u--ere%e -i)iere%or desc'ise 6n citire, se 6nc'id toate
-i)iere%e desc'ise )i se 6ntrerupe pro,ra!u%/
Prototipu% -unc2iei eit este 6n std%i*/' )i process/'/
-n#./'e <st'o012
-n#./'e <#ono012
-n#./'e <st'.b012
-n#./'e <pro#ess012
&o' (an )*
+
".oat a,b,p7
p/ts )3Se #tes# &a.or rea.e pere#1 3*7
prnt" )3Dat &a.oar pentr/ a s b separate prn spat/8t3*7
" )s#an" )3=" ="3,Ja,Jb*T=B*
+
p/ts )3/na sa/ a(be.e &a.or '"erte 'e &a.or rea.e3*7
ext )1*7 ape%area -unc2iei eit cu para!etru% : pentru o
ter!inare anor!a%& 4 eroare de citire a uneia sau
a!*e%e "a%ori5
,
e.se
p=a*b7
prnt" )3Pro'/s/. s#a.ar a*b= =0:" 8n3,p*7
p/ts )3Apasa o tasta 3*7
4et#1 )*7
ext )0*7 ape%area -unc2iei eit cu para!etru% $ pentru o
ter!inare nor!a%&
,
3.'.10. Instruciunea s,itc-.
Instruc2iunea sWt#1 este -o%osit& %a rea%i.area structuri%or se%ecti"e, 6n %ocu%
instruc2iuni%or i- i!*ricate/ Instruc2iunea s(itc' poate -i uti%i.at& %a rea%i.area
!eniuri%or, a%e,erea de op2iuni, )i are -or!a B
sWt#1 )exprese*
+
#ase #1:
LIMBAJUL C TEORIE I APLICAI I >$
nstr/#t/n 1
breaV7
#ase #B:
nstr/#t/n B
breaV7
#ase #::
nstr/#t/n :
breaV7
#ase #n:
nstr/#t/n n
breaV7
C
#ase 'e"a/.t:
nstr/#t/n
breaV7
,
unde #1, #B, #:, C, #n sunt constanteL nstr/#t/n1, nstr/#t/nB, C,
nstr/#t/n n sunt ,rupuri de instruc2iuni/
Eecu2ia instruc2iunii sWt#1 se -ace ast-e% B
7e e"a%uea.& expresa dintre parante.e )i se co!par& "a%oarea epresiei cu
"a%ori%e constante%or #1, #B, C, #n/
7e eecut& 4r/p/. 'e nstr/#t/n de dup& constanta # a c&rei "a%oare este
e,a%& cu "a%oarea exprese, apoi se iese din instruc2iunea sWt#10
Dac& "a%oarea exprese nu este e,a%& cu nici o constant& #1, #B, C, #n se "a
eecuta 4r/p/. 'e nstr/#t/n de dupa etic'eta 'e"a/.t0 Dac& etic'eta
'e"a/.t )i instruc2iuni%e de dup& ea %ipsesc )i "a%oarea epresiei este di-erit& de
oricare dintre constante, se iese din instruc2iunea s(itc'/
:-ser#aie
Din instruc2iunea sWt#1 poate %ipsi etic'eta 'e"a/.t )i instruc2iunea ata)at& %ui
'e"a/.t, dar tre*uie s& eiste !ini! o constant& #0
Instruc2iunea breaV este uti%i.at& dup& -iecare ,rup de instruc2iuni ata)ate
constante%or cu ro%u% de ie)ire din instruc2iunea s(itc'/
Eemplu
7& se cree.e un pro,ra! C care prin a%e,erea unei op2iuni dintr0un !eniu s&
eecute di-erite opera2ii asupra date%or de intrare a, * )i s& tip&reasc& "a%ori%e
ca%cu%e%or e-ectuate/ Op2iuni%e se indic& prin "a%ori nu!erice/
"ezol#are
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e <(at1012
&o' (an )*
+
nt n7
".oat a,b,#,',e,"7
p/ts )3------------ XEN9U--------- 3*7
LIMBAJUL C TEORIE I APLICAI I >:
p/ts )3----ADUNASE====1 ----3*7
p/ts )3----SYADESE====B ----3*7
p/ts )3----9NXUET9SE==: ----3*7
p/ts )3----9XPAST9SE==; ----3*7
p/ts )3----SAD9YAE====< ----3*7
p/ts )3----9ES9SE=====L ----3*7
p/ts )3===='at &a.oarea opt/n===== 3*7
s#an" )3='3,Jn*7 se cite)te op2iunea a%eas& de uti%i.ator
" )nT=L* dac& op2iunea este !ai !ic& de G se eecut&
pro,ra!u%
+
p/ts )3'at 'o/a n/(ere3*7
s#an" )3=" ="3,Ja,Jb*7 se citesc dou& "a%ori de tip rea% 4-%oat5
sWt#1 )n* se e"a%uea.& epresia dintre 4 5 )i "a%oarea acestei
epresii trans-er& eecu2ia %a constanta ce are
"a%oarea e,a%& cu "a%oarea epresiei , de ee!p%u
dac& nIE se trans-er& eecu2ia %a case E
+
#ase 1: dac& "a%oarea %ui nI: trans-eru% eecu2iei se -ace
%a case :
#=a!b7 instruc2iunea : din ,rupu% de instruc2iuni a%e %ui
case :
prnt")3S/(a=="3,#*7 instruc2iunea E din ,rupu% de instruc2iuni a%e %ui
case :
breaV7 -or2ea.& ie)irea din instruc2iunea s(itc'
#ase B: dac& "a%oarea %ui nIE trans-eru% eecu2iei se -ace
%a case E
#=a-b7
prnt" )3D"erenta=="3,#*7
breaV7
#ase :: dac& "a%oarea %ui nI1 trans-eru% eecu2iei se -ace
%a case 1
#=a*b7
prnt" )3Pro'/s=="3,#*7
breaV7
#ase ;: dac& "a%oarea %ui nIF trans-eru% eecu2iei se -ace
%a case F
#=a/b7
prnt" )39(partre=="3,#*7
breaV7
#ase <: dac& "a%oarea %ui nI# trans-eru% eecu2iei se -ace
%a case #
#=sZrt)a*b*7
prnt" )3Sa'#a.=="3,#*7
breaV7
,
,
e.se
p/ts )3pro4ra(/. sa ter(nat3*7
p/ts )3apasat o tasta pentr/ esrea 'n pro4ra(3*7
LIMBAJUL C TEORIE I APLICAI I >E
4et#1 )*7
,
Aro-leme propuse
:/ 7& se a-i)e.e .i%e%e s&pt&!3nii 6n ro!3n& )i en,%e.& 6n -unc2ie de "a%oarea
nu!eric& din do!eniu% : %a =/
Dat& de intrareBo "a%oarea nu!eric&
Dat& de ie)ireB nu!e%e .i%ei
E/ 7& se rea%i.e.e un pro,ra! cu op2iuni nu!erice care per!iteB
:/ citirea unui "ector )i a-i)area acestuia
E/ citirea unui "ector )i 6n!u%2irea cu un sca%ar a acestui "ector
1/ citirea a doi "ectori )i adunarea acestora
F/ citirea a doi "ectori )i sc&derea acestora
#/ ie)ire/
3.'.11. Instruciunea goto.
Instruc2iunea 4oto se uti%i.ea.& pentru a indica ie)irea din !ai !u%te instruc2iuni
" i!*ricate sau din !ai !u%te instruc2iuni "or )i trans-eru% eecu2iei %a
instruc2iunea de dup& et#1eta indicat& de instruc2iunea 4oto/
Et#1eta este un nu!e ur!at de caracteru% : 4dou& puncte5, n/(e.e repre.int&
c'iar denu!irea etic'etei/ Etic'ete%e se -o%osesc 6n interioru% corpu%ui -unc2iei 6n
care este ape%at& instruc2iunea 4oto / 7intaa instruc2iunii 4oto este B
4oto n/(e7
C
n/(e:
C
Instruc2iunea 4oto poate -ace sa%t nu!ai %a o etic'et& ur!at& de o instruc2iune ce
se a-%& 6n corpu% -unc2iei din care -ace parte )i ea/
Eemplu
7& se ca%cu%e.e -unc2ia ")x* =;x/)x-B*, pentru # "a%ori cresc&toare a%e %ui cu
:, "a%oarea %ui este citit& de %a tastatur&, dac& "a%oarea epresiei x-B=0, se "a
ie)i din cic%u% -or )i se "a a-i)a !esa+u% '&5are prn 5ero0
"ezol#are
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e <(at1012
&o' (an )*
+
nt ,s7
".oat n,6,x,"x7
p/ts )3se 'eter(na ")x*=);x*/)x-B* 'a#a x-B n/ este e4a. #/ 5ero3*7
p/ts )3'at &a.oarea 'e n#ep/t a ./ x 3*7
s#an" )3="3,Jx*7
"or )6=x76<=x!<76!!*
+
" )6-B == 0*
4oto eroare7 sa%t %a instruc2iunea de dup& etic'eta eroare
LIMBAJUL C TEORIE I APLICAI I >1
e.se
"x=);*6*/)6-B*7
prnt" )3x= =" "/n#ta "x==4 8n3,x,"x*7
,
4oto s"rst7 sa%t %a instruc2iunea de dup& etic'eta s-irsit
eroare: etic'eta eroare
p/ts )3'&5are prn 5ero3*7
s"rst: etic'eta s-irsit
p/ts )3Apasa o tasta3*7
4et#1 )*7
,
3... Apelul prin #aloare "i apelul prin referin al unei funcii.
O -unc2ie are ur!&toarea structur& B
TpA'eA'ata N/(e)Esta 'e#.arat.or para(etr.or "or(a.*
+
De#.arat7
9nstr/#t/n7
,
La ape%u% unei -unc2ii, -iec&rui para!etru -or!a% i se atri*uie "a%oarea
para!etru%ui e-ecti" corespun.&tor )i 6n acest ca. se consider& c& ape%u% -unc2iei
se -ace prin #aloare/
Ounc2ia 6n acest ca. nu "a !odi-ica "a%oarea para!etru%ui e-ecti"/
Dac& se dore)te ca -unc2ia ape%at& s& !odi-ice "a%oarea para!etru%ui e-ecti" se "a
-o%osi ape%u% prin referin ce se rea%i.ea.& prin -o%osirea ca para!etru e-ecti"
nu!e%e unui ta*%ou iar dac& para!etru% e-ecti" este o "aria*i%& si!p%& se "or -o%osi
pointeri/ De ee!p%uB
nt n, 6, a?10@7
C
>/n#ta1 )n, 6, a*7
C
La ape%area -unc2iei >/n#ta1 para!etri e-ecti"i n )i 6 sunt de tipu% para!etri
ape%a2i prin #aloare, >/n#ta1 nu poate !odi-ica "a%oarea acestora, dar
para!etru% a este de tip ta*%ou )i 6n acest ca. ape%u% para!etru%ui se -ace prin
referin, ce per!ite -unc2iei >/n#ta1 s& !odi-ice "a%oarea ter!eni%or ta*%ou%ui
a?10@/
3./. *peraii asupra #ectorilor.
n !a+oritatea pro*%e!e%or te'nice de pre%ucrare a date%or de intrare, ie)ire
4presiune, te!peratur&, de*it, "ite.e, !ase, caracteristici ,eo!etrice, etc/5 este
necesar dispunerea %or 6n ta*%ouri cu una sau dou& di!ensiuni/
Pentru citirea, pre%ucrarea, a-i)area acestor ta*%ouri se "or rea%i.a -unc2ii speci-ice
opera2iei dorite de tip B
Citirea unui "ector/
Opera2ii asupra unuia sau !ai !u%tor "ectori/
LIMBAJUL C TEORIE I APLICAI I >F
A-i)area unui "ector/
Citirea unui ta*%ou cu dou& di!ensiuni 4!atrice5/
Opera2ii asupra unuia sau !ai !u%tor ta*%ouri cu dou& di!ensiuni/
A-i)area unui ta*%ou cu dou& di!ensiuni/
Pentru 6n2e%e,erea a%,orit!u%ui se "or -o%osi dou& "ariante ast-e% B Pri!a "a -o%osi
toate instruc2iuni%e necesare 6ntr0un sin,ur -i)ier surs&, a doua "a -o%osi -unc2ii
speci-ice scrise 6n -i)iere separate de -i)ieru% surs&/
Eemplu
7& se scrie un pro,ra! care cite)te ter!enii unui "ector, a-i)ea.& ter!enii
"ectoru%ui/ Citirea !&ri!ii "ectoru%ui c3t )i a ter!eni%or "ectoru%ui se e-ectuea.&
de %a tastatur&/
"ezol#are
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e <(at1012
(an) *
+
nt n,7 "aria*i%a n pentru !&ri!ea "ectoru%ui, "aria*i%a
pentru contor
'o/b.e a?10@7 "aria*i%a indeat& a unui ta*%ou cu o di!ensiune
!ai!& de :$ ter!eni 9:$;
p/ts )3'at (ar(ea &e#tor/./ n=R3*7
s#an" )3='3,Jn*7 citirea !&ri!ii "ectoru%ui
Pentru a citi ter!enii unui "ector se "a -o%osi un cic%u -or cu "aria*i%a de contor de %a
: %a n cu pasu% :, %a -iecare pas se "a a-i)a denu!irea ter!enu%ui ce se cite)te )i apoi se
cite)te data de intrare a c&rei "a%oare este depo.itat& %a adresa "aria*i%ei indeate a?@
"or )=17<=n7=!1* cic%u% "or de citire a% "ectoru%ui a?@
+ inceputu% instruc2iunii co!puse
prnt")3'at a?='@=3,*7 !esa+ de indicare a ter!enu%ui ce se cite)te
s#an" )3=."3,Ja?@*7 citirea datei de intrare de tip rea% 4dou*%e 5
care se atri*uie ter!enu%ui ?@
, s-3r)itu% instruc2iunii co!puse )i a cic%u%ui
-or
"or )=17<=n7=!1* cic%u% "or de a-i)are a "ectoru%ui a?@
prnt" )3a?='@==."8t3,,a?@*7 ape%area -unc2iei de a-i)are cu -or!at a
"aria*i%e%or , a?@ )i %a -iecare ape%are a
-unc2iei de a-i)are se dep%asea.& po.i2ia
cursoru%ui cu un ta*u%ator 4spa2iu de >
caractere5 Ut
p/ts)3apasa o tasta3*7
4et#1 )*7
,
Pentru re.o%"area ace%ea)i pro*%e!e se pot -o%osi dou& -unc2ii #t& )i tp&, care
au a"anta+u% c& pot -i uti%i.ate 6n toate -i)iere%e care necesit& opera2ii de citire sau
LIMBAJUL C TEORIE I APLICAI I >#
de a-i)are a unui "ector/ Ounc2ia #t& are doi para!etrii -or!a%i B n de tip
"aria*i%& si!p%& )i a?10@ de tip "aria*i%& indeat&, ast-e%, ape%u% para!etru%ui n se
-ace prin "a%oare iar ape%u% para!etru%ui a?10@ se -ace prin re-erin2&/
>ser: #t&0#
#t& )nt n, 'o/b.e a?:0@* antetu% -unc2iei #t&, ce con2ine tipu% -unc2iei
prin %ips& 6ntre,, denu!irea -unc2iei #t&, para!etrii -or!a%i ai -unc2iei n de tip
6ntre, )i a?10@ )ta*%ou%5 de tip dou*%e
+ 6nceputu% corpu%ui -unc2iei cit"
nt 7 "aria*i%& %oca%& de tip 6ntre, -o%osit& 6n cadru%
-unc2iei cit"
'o/b.e t7 "aria*i%& %oca%& de tip dou*%e -o%osit& 6n cadru%
-unc2iei cit"
"or )=17<=n7!!* cic%u% -or pentru citirea date%or de %a tastatur& )i
trans-erarea acestora 6n ta*%ou% a9:$;
+
prnt" )3Dat e.e(ent/. =' =3,*7
s#an" )3=."3,Jt*7
a?@=t7
, 6nc'iderea cic%u%ui -or
p/ts )3S-a #tt &e#tor/.3*7
, 6nc'iderea corpu%ui -unc2iei cit"
Pentru a-i)area e%e!ente%or unui "ector s0a rea%i.at -unc2ia tip" ast-e%B
>ser tp&0#
tp& )nt n, 'o/b.e a?:0@* antetu% -unc2iei tp&, ce con2ine tipu% de dat& a%
-unc2iei prin %ips& 6ntre,, denu!irea -unc2iei
tp&, para!etri -or!a%i ai -unc2iei B n de tip
6ntre, )i a?10@ ta*%ou de tip dou*%e
+ 6nceputu% corpu%ui -unc2iei tip"
nt 7 "aria*i%& %oca%& de tip 6ntre, -o%osit& 6n cadru% -unc2iei tip"
"or )=17<=n7!!* cic%u% -or pentru a-i)area "ectoru%ui a?@
prnt" )3 =."8t 3,a?@*7
p/ts )38n3*7
, 6nc'iderea corpu%ui -unc2iei tip"
n -i)ieru% de !ai +os se pre.int& -o%osirea -unc2ii%or #t& )i tp& sa%"ate 6n dou& -i)iere
cit"/c )i tip"/c/
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e <(at1012
-n#./'e H#t&0#I inc%uderea -i)ieru%ui #t&0# care con2ine -unc2ia
cit# creat& anterior de c&tre uti%i.ator
-n#./'e Htp&0#I inc%uderea -i)ieru%ui tp&0# care con2ine -unc2ia
tip# creat& anterior de c&tre uti%i.ator
LIMBAJUL C TEORIE I APLICAI I >G
&o' (an )*
+
nt n7
'o/b.e b?10@7 "aria*i%a indeat& a unui ta*%ou cu di!ensiunea
!ai!& de :$ ter!eni 9:$;
p/ts )3'at (ar(ea &e#tor/./ n=R3*7
s#an" )3='3,Jn*7 citirea !&ri!ii "ectoru%ui
#t& )n, b*7 ape%area -unc2iei de citire a unui "ector, para!etrii
e-ecti"i sunt n )i b, ce sunt trans-era2i -unc2iei, %a
re"enirea din -unc2ia cit" 6n para!etru% * de tip
ta*%ou prin re-erin2& se ,&sesc ter!enii citi2i ai
"ectoru%ui a 6n -unc2ia cit"/
tp& )n,b*7 ape%area -unc2iei de a-i)are a unui "ector,
para!etrii e-ecti"i sunt n )i "ectoru% b/
p/ts)3apasa o tasta3*7
4et#1 )*7
,
:-ser#aie
Oi)ieru% surs& este !u%t !ai scurt dec3t -i)ieru% ce e-ectuea.& opera2ii%e de citire,
a-i)are, 6n interioru% -i)ieru%ui/ n p%us, -unc2ii%e ape%ate pot -i uti%i.ate de to2i
uti%i.atorii care inc%ud -i)iere%e ce con2in -unc2ii%e dorite/ n ee!p%e%e ce ur!ea.&
se "or -o%osi -unc2ii speci-ice opera2ii%or dorite, ast-e% pro,ra!e%e "or con2ine c3t
!ai !u%te ape%&ri de -unc2ii/
Eemplu
7& se adune ter!enii unui "ector )i s& se a-i)e.e "ectoru% precu! )i su!a
ter!eni%or/ M&ri!ea "ectoru%ui, ter!enii "ectoru%ui se citesc de %a tastatur&/
"ezol#are
7e "a crea o -unc2ie s/(& care adun& ter!enii unui "ector/ Ounc2ia s/(& "a -i
sa%"at& 6n -i)ieru% s/(&0#/ Pentru citirea ter!eni%or "ectoru%ui )i a-i)area
"ectoru%ui se "or -o%osi -unc2ii%e #t&, tp&/
Oi)ieru% s/(&0# ce con2ine -unc2ia s/(& este
".oat s/(& )nt n, 'o/b.e a?10@* antetu% -unc2iei s/(&, ce con2ine tipu%
-%oat a% -unc2iei, denu!irea -unc2iei
s/(&, para!etrii -or!a%i ai -unc2iei B n
de tip 6ntre, )i a?10@ ta*%ou de tip
dou*%e
+ 6nceputu% corpu%ui -unc2iei su!"
nt 7 "aria*i%& %oca%& de tip 6ntre,
'o/b.e s7 "aria*i%& %oca%& de tip dou*%e -o%osit& 6n
cadru% -unc2iei s/(&
s=07 ini2ia%i.area su!ei cu "a%oarea .ero
"or )=17<=n7!!* cic%u% -or pentru ca%cu%u% su!ei
ter!eni%or "ectoru%ui
s=s!a?@7
LIMBAJUL C TEORIE I APLICAI I >=
ret/rn )s57 instruc2iunea de returnare a "a%orii %ui s
6n -unc2ia din care a -ost ape%at& -unc2ia
s/(&
, 6nc'iderea corpu%ui -unc2iei s/(&
Oi)ieru% surs& a% pro,ra!u%ui principa% "a -i
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e <(at1012
-n#./'e H#t&0#I inc%uderea -i)ieru%ui #t&0# care con2ine -unc2ia
#t&
-n#./'e Htp&0#I inc%uderea -i)ieru%ui tp&0# care con2ine -unc2ia
tp&
-n#./'e Hs/(&0#I inc%uderea -i)ieru%ui s/(&0# care con2ine -unc2ia
s/(&
&o' (an )*
+
nt n7
'o/b.e b?10@, s7 "aria*i%a indeat& a unui ta*%ou cu di!ensiunea
!ai!& de :$ ter!eni 9:$; )i "aria*i%a si!p%& s
6n care se "a depo.ita "a%oarea su!ei ter!eni%or
"ectoru%ui
p/ts )3'at (ar(ea &e#tor/./ n=R3*7
s#an" )3='3,Jn*7
#t& )n,b* 7 ape%area -unc2iei de citire a unui "ector
s= s/(& )n,b*7 ape%area -unc2iei s/(& care returnea.& o "a%oare
de tip -%oat, pe care o atri*uie "aria*i%ei s
tp& )n,b*7 ape%area -unc2iei de a-i)are a unui "ector
prnt" )Hs/(a ter(en.or &e#tor/./ ==." 8nI,s*7
p/ts)3apasa o tasta3*7
4et#1 )*7
,
Eemplu
7& se deter!ine nu!&ru% de .i%e cu te!peraturi%e su* .ero, nu!&ru% de .i%e cu
te!peratura de .ero ,rade )i nu!&ru% de .i%e cu te!peratura peste .ero ,rade/
Te!peraturi%e .i%e%or sunt citite pe un inter"a% de !ai! 1$ .i%e, introducerea
date%or -&c3ndu0se de %a tastatur&/
"ezol#are
Oi)ieru% surs& a% pro,ra!u%ui principa%
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e H#t&0#I inc%uderea -i)ieru%ui #t&0# care con2ine -unc2ia
#t&
&o' (an )*
+
nt n, 7
'o/b.e b?:0@7
LIMBAJUL C TEORIE I APLICAI I >>
nt po5, ne4, n/.7
p/ts )3'at n/(ar/. 'e 5.e pt0 #are s-a #tt te(perat/ra n=R3*7
s#an" )3='3,Jn*7
po5=07
n/.=07
ne4=07
p/ts )3'at te(perat/ra 5.e.or 8n3*7
#t& )n,b* 7 ape%area -unc2iei de citire a unui "ector #t&
"or )=17<=n7!!*
" )b?@?6@<0*
ne4=ne4!17
e.se
")b?@?6@==0*
n/.=n/.!17
e.se
po5=po5!17
prnt" )35.e #/ te(perat/r po5t&e= ='8n3,po5*7
prnt" )35.e #/ te(perat/r ne4at&e= ='8n3,ne4*7
prnt" )35.e #/ te(perat/ra 'e 5ero = ='8n3,n/.*7
p/ts )38n apasa o tasta3*7
4et#1 )*7
,
Pentru pro*%e!a anterioar& se poate e-ectua o -unc2ie ,enera%& care poate
deter!ina nu!&ru% de ter!eni ne,ati"i, nu%i )i po.iti"i dintr0un "ector citit/
A"3nd 6n "edere c& o -unc2ie poate returna o sin,ur& "a%oare iar 6n acest ca. este
necesar& returnarea a 1 "a%ori, se "a -o%osi un ta*%ou #?:@ cu 1 ter!eni/ Ounc2ia care
-ace acest %ucru este n/(ter(& )i "a -i sa%"at& 6n -i)ieru% n/(ter(&0#0
n/(ter(& ) nt n, 'o/b.e a?:0@, 'o/b.e #?:@*
+
nt po5,ne4,n/., 7 dec%arare de "aria*i%e %oca%e uti%i.ate de -unc2ie
po5=07 ini2ia%i.area cu "a%oarea $ a "aria*i%e%or -o%osite ca
)i contor
n/.=07
ne4=07
"or )=17<=n7!!* cic%u% -or de parcur,ere a tuturor ter!eni%or
"ectoru%ui
" )a?@?6@<0* deter!inarea ter!eni%or ne,ati"i
ne4=ne4!17 ad&u,area unei unit&2i %a contoru% ne,
e.se
")a?@?6@==0* deter!inarea ter!eni%or nu%i
n/.=n/.!17 ad&u,area unei unit&2i %a contoru% nu%
e.se
po5=po5!17 ad&u,area unei unit&2i %a contoru% po5
#?0@=po57 trans-eru% "a%ori%or contoare%or 6n "ectoru% #
#?1@=n/.7
#?B@=ne47
, 6nc'iderea corpu%ui -unc2iei
Oi)ieru% surs& ce inc%ude -unc2ia n/(ter(& "a -i/
-n#./'e <#ono012
-n#./'e <st'o012
LIMBAJUL C TEORIE I APLICAI I >9
-n#./'e H#t&0#I inc%uderea -i)ieru%ui #t&0# care con2ine -unc2ia
#t&
-n#./'e Hn/(ter(&0#I inc%uderea -i)ieru%ui n/(ter(&0# care con2ine
-unc2ia n/(ter(& ce deter!in& ter!enii po.iti"i,
nu%i, ne,ati"i dintr0un "ector
&o' (an )*
+
nt n, ,#?:@7
'o/b.e b?:0@7
p/ts )3'at n/(ar/. 'e 5.e pt0 #are s-a #tt te(perat/ra n=R 3*7
s#an" )3='3,Jn*7
p/ts )3'at te(perat/ra 5.e.or 8n3*7
#t& )n,b* 7 ape%area -unc2iei de citire a unui "ector
n/(ter(& )n,b,#*7 ape%area -unc2iei de deter!inare a ter!eni%or po.,
nu%i, ne,/
prnt" )35.e #/ te(perat/r po5t&e= ='8n3,#?0@ *7
prnt" )35.e #/ te(perat/r ne4at&e= ='8n3,#?B@ *7
prnt" )35.e #/ te(perat/ra 'e 5ero = ='8n3,#?1@ *7
p/ts )38n apasa o tasta3*7
4et#1 )*7
,
Eemplu
7& se deter!ine "a%oarea !ini!& a presiunii apei 6n circuitu% de a%i!entare cu ap&
a% ora)u%ui/ <a%oarea presiunii este dat& din or& 6n or& pe durata a EF ore/
Pentru a deter!ina "a%oarea !ini!& a presiunii, se "or citi 6n ce%e EF de ore, EF de
"a%ori 6ntr0un "ector * )i apoi se "a ape%a -unc2ia (n&, care "a returna "a%oarea
!ini!& a presiunii apei din circuitu% ora)u%ui/ Dac& "a%ori%e presiunii sunt
trans-erate auto!at printr0un siste! de ac'i.i2ii de date intr0un -i)ier, date%e "or -i
citite cu o -unc2ie specia%& din -i)ier, apoi se "a ap%ica -unc2ia (n& asupra acestor
date/
"ezol#are
A%,orit!u% -unc2iei (n& cons& 6n a a%e,e o "aria*i%& %oca%& (n, care ini2ia% este
e,a%& cu pri!u% ter!en a "ectoru%ui ce se pre%ucrea.&, apoi se co!par& aceast&
"aria*i%& (n pe r3nd cu ter!enii "ectoru%ui/ Dac& (n este !ai !ic dec3t
ter!enu% ana%i.at, "a%oarea "aria*i%ei (n r&!3ne ne!odi-icat&, dac& "a%oarea
"aria*i%ei (n este !ai !are dec3t ter!enu% ana%i.at, "aria*i%ei (n i se atri*uie
"a%oarea ace%ui ter!en/ Parcur,3nd to2i ter!enii "ectoru%ui, 6n -ina% "aria*i%a (n
"a con2ine "a%oarea ce%ui !ai !ic ter!en a% "ectoru%ui/ Ounc2ia (n& "a -i sa%"at&
6n -i)ieru% !in"/c/
'o/b.e (n&)nt n, 'o/b.e a?:0@* antetu% -unc2iei !in" ce are ca para!etrii
-or!a%iB n Inu!&ru% de ter!eni ai "ectoru%ui
)i a91$; "ectoru% ce preia ter!enii "ectoru%ui
LIMBAJUL C TEORIE I APLICAI I 9$
citit 6n cadru% pro,ra!u%ui principa% 4trans-er
prin re-erin2&5/ Ounc2ia returnea.& spre
-unc2ia ape%ant& o "a%oare de tip dou*%e/
+ 6nceputu% corpu%ui -unc2iei !in",
nt 7 "aria*i%& %oca%& pentru cic%u% -or,
'o/b.e (n7 "aria*i%& %oca%& -o%osit& %a pre%ucrarea ter!eni%or
"ectoru%ui
(n=a?1@7 ini2ia%i.area %ui !in cu "a%oarea pri!u%ui ter!en
a% "ectoru%ui
"or )=17<=n7=!1* cic%u% de co!parare a %ui !in cu toti ter!eni
"ectoru%ui
" )(n<=a?@* condi2ia de contro% a "a%orii %ui !in/
7 dac& !in este !ai !ic sau e,a% cu ter!enu%
curent, "a%oarea %ui !in nu se !odi-ic&
e.se
(n=a?@7 atri*uirea %ui !in a "a%orii ter!enu%ui !ai !ic
dec3t !in
ret/rn )(n*7 returnarea "a%orii %ui !in spre -unc2ia ape%ant&
, 6nc'iderea corpu%ui -unc2iei !in"
Pro,ra!u% principa% ce ape%ea.& -unc2ia !in"/
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e H#t&0#I inc%uderea -i)ieru%ui #t&0# care con2ine -unc2ia
#t&
-n#./'e H(n&0#I inc%uderea -i)ieru%ui (n&0# care con2ine -unc2ia
(n& ce deter!in& "a%oarea !ini!& a ter!eni%or
unui "ector
&o' (an )*
+
nt n, b?:0@7
'o/b.e (n7
p/ts )3'at n/(ar/. 'e ore pt0 #are s-a #tt pres/nea n=R3*7
s#an" )3='3,Jn*7
p/ts )3'at pres/nea .a ora n'#ata prn n/(ar/. e.e(ent/./8n3*7
#t& )n,b* 7 ape%area -unc2iei de citire a unui "ector
(n=(n& )n,b*7 ape%area -unc2iei de deter!inare a "a%orii !ini!e
a ter!eni%or/
prnt" )3pres/nea (n(a [n B; ore= =."8n3, (n*7
p/ts )38n apasa o tasta 3*7
4et#1 )*7
,
Eemplu
7& se deter!ine nu!&ru% de apari2ii a%e unui nu!&r din inter"a%u% : %a F# %a
tra,eri%e %oto din !ini! E etra,eri/ Vu!&ru% de nu!ere asupra c&rora se -ace
studiu% este !ai! :$$ )i aceste nu!ere sunt introduse de %a tastatur&/ Vu!&ru% a
c&rui apari2ie se dore)te, este cerut de -unc2ia stat#1, iar citirea nu!ere%or
LIMBAJUL C TEORIE I APLICAI I 9:
etrase se -ace cu -unc2ia #t&nt pentru nu!ere 6ntre,i/ Ounc2ia stat#1 "a -i
sa%"at& 6n -i)ieru% stat#10#0
nt stat#1)nt n, nt b?100@* -unc2ia de tip intre, cu doi para!etrii de tip int
+ 6nceputu% corpu%ui -unc2iei
nt ,V, sta7
p/ts )3'at n/(ar/. #a/tat pt 'eter(narea apart.or3*7
s#an" )3='3,Jsta*7
V=07
"or )=17<=n7=!1*
" )sta == b?@*
V=V!17
e.se
7
ret/rn )V*7 -unc2ia "a returna "a%oarea 6ntrea,& a nu!&ru%ui
de apari2ii a%e nu!&ru%ui c&utat
,
Ounc2ia #t&nt "a -i sa%"at& 6n -i)ieru% #t&nt0#0
#t&nt )nt n, nt a?100@*
+
nt 7
"or )=17<=n7!!*
+
prnt" )3Dat e.e(ent/. =' =3,*7
s#an" )3='3,Ja?@*7
,
p/ts )3S-a #tt &e#tor/.3*7
,
Ounc2ia s"rst "a -i sa%"at& 6n -i)ieru% s"rst0#0
&o' s"rst )* -unc2ia nu returnea.& "a%oare )i nu are para!etrii/
+
p/ts )38n Apasa o taasta3*7
4et#1 )*7
,
Pro,ra!u% principa% stats#1 "a -i sa%"at 6n -i)ieru% stats#10# care "a ape%a
-unc2ii%e de citire a%e unui "ector cu ter!eni 6ntre,i, apoi "a ape%a -unc2ia de
deter!inare a apari2ii%or unei "a%ori 6n cadru% "ectoru%ui, iar 6nc'iderea
pro,ra!u%ui se -ace prin ape%area -unc2iei s-irsit/
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e 3#t&nt0#3
-n#./'e 3stat#10#3
-n#./'e 3s"rst0#3
&o' (an )*
+
nt n,V, a?100@7
p/ts )3'at (ar(ea &e#tor/./ ) n/(ar/. 'e &a.or * n=R3*7
s#an" )3='3,Jn*7
#t&nt )n,a*7 ape%area -unc2iei de citire a unui "ector cu "a%ori
intre,i
LIMBAJUL C TEORIE I APLICAI I 9E
V=stat#1 )n,a *7 ape%area -unc2iei de c&utare a nu!&ru%ui de
apari2ii a%e unei "a%ori
prnt" )3n/(ar/. 'e apart este =='8n3,V*7
s"rst )*7 ape%area -unc2iei s-irsit
,
Aro-leme propuse
O*ser"a2ieB %a re.o%"area pro*%e!e%or propuse se "or -o%osi -unc2ii%e deduse %a
capito%e%e anterioare sau se "or rea%i.a noi -unc2ii de u. ,enera%/
:/ 7& se citeasc& un "ector cu ter!enii de tip intre, )i se
deter!ine dac& acest "ector con2ine un nu!ar dat )i ce po.i2ie ocup& acest nu!&r/
Date intrareB nI!&ri!ea "ectoru%ui
Ai Iter!enii "ectoru%ui AInu!&ru% c&utat
Date ie)ire B po.i2ia ocupat& de nu!&ru% A
E/ 7& se citeasc& un "ector cu ter!enii de tip intre, )i s& se ordone.e 6n sens
cresc&tor ter!enii "ectoru%ui/
Date de intrare B n, a
i
Date de ie)ire B *
i
"ectoru% cu ter!enii ordona2i/
1/ 7& se citeasc& doi "ectori cu !&ri!ea n cu ter!enii de tip 6ntre, )i s& se
deter!ine "ectoru% c
i
care con2ine ter!eni "ectoru%ui ai )i ter!enii neco!uni
dintre a
i
)i *
i
/
Date de intrareB nI!&ri!ea ce%or doi "ectori a
i
, *
i
Iter!eni "ectori%or ai, *i
Date de ie)ire B "ectoru% c
i
/
F/ 7& se deter!ine ter!enu% cu "a%oare !ai!& dintr0un "ector citit de %a tastatur&/
Date de intrare B n, a
i

Date de ie)ire B !a 4a
i
5/
#/ 7& se ca%cu%e.e CIA
:
aa
:
JA
E
aa
E
J] A
!
aa
!
/
Date de intrare B a
:
, a
E
, a
1
, ], a
!
"a%ori a%e unor sca%ari citi2i de %a tastatur&
A
:
, A
E
, ] , A
n
"ectori de tip dou*%e de !&ri!e n citi2i de %a tastatur&
<a%oarea ! Inu!&ru% de "ectori
Date de ie)ire B C I

m
i
ai Ai
:
G/ 7& se co!pare "a%ori%e te!peraturii de %i"rare a apei ca%de pe o perioad& de EF
ore, 4citiri%e te!peraturii s0au -&cut 6n -iecare or&5 )i s& se co!pare aceste
te!peraturi cu o "a%oare %i!it& in-erioar& dat& de %a tastatur&/ Dac& "a%ori%e
te!peraturi%or citite sunt su* "a%oarea de te!peratur& %i!it&, s& se a-i)e.e aceste
"a%ori )i nu!&ru% %or/
Date de intrare B "a%ori%e te!peraturii 6n EF ore, "a%oarea te!peraturii %i!it&
Date de ie)ire B nu!&ru% de "a%ori su* te!peratura %i!it&, )i aceste "a%ori/
LIMBAJUL C TEORIE I APLICAI I 91
=/ 7& se citeasc& 6ntr0un "ector -rec"en2a curentu%ui tri-a.ic din or& 6n or& )i s& se
deter!ine dac& aceast& -rec"en2& este 6n a-ara do!eniu%ui de -unc2ionare nor!a%&
dat& de inter"a%u% F9/9Y. %a #$/:Y./
Date de intrare B "a%oarea -rec"en2ei )i nu!&ru% de citiri/
Date de ie)ire B nu!&ru% de citiri din a-ara do!eniu%ui de -unc2ionare nor!a%&/
>/ 7& se co!pare doi "ectori de !&ri!ea n, de tip -%oat )i s& se deduc& "ectoru% c
care con2ine ter!enii e,a%i din cei doi "ectori/
Date de intrare B n, a
i
, *
i
Date de ie)ire B c
i
/
3.1. *peraii asupra tablourilor cu dou dimensiuni.
7& se rea%i.e.e -unc2ii pentru citirea unui ta*%ou cu dou& di!ensiuni )i a-i)area
unui ta*%ou cu dou& di!ensiuni/ <a%ori%e din ta*%ou% citit sau a-i)at sunt de tip
dou*%e/ Un ta*%ou cu dou& di!ensiuni are ter!enii indea2i cu doi coe-icien2i i )i
+/
1
1
1
]
1

11 1E 1:
E1 EE E:
:1 :E ::
a a a
a a a
a a a

Pentru a accesa un ter!en a% ta*%ou%ui cu dou& di!ensiuni este necesar& indicarea
%iniei )i co%oanei ter!enu%ui dorit, ceea ce i!p%ic& -o%osirea a dou& cic%uri -or care
s& !odi-ice "a%oarea independent& a ce%or doi indici/
Ounc2ia #t(, care e-ectuea.& citirea unui ta*%ou *idi!ensiona% -o%ose)te dou&
cic%uri i!*ricate, cic%u% eterior a"3nd "aria*i%a contor i, care parcur,e r3nduri%e
ta*%ou%ui *idi!ensiona%, cic%u% interior a"3nd "aria*i%a contor +, parcur,e pentru
-iecare r3nd, toate co%oane%e ta*%ou%ui/ 7& ur!&ri! !odu% de incre!entare a% ce%or
doi contori/ La 6nceput, "aria*i%a contor a cic%u%ui eterior i "a a"ea "a%oarea : )i
se intr& 6n cic%u% interior, adic&
iI:, +I: se "a citi ter!enu% de pe pri!u% r3nd, pri!a co%oan& a
::
n continuare, se continu& cic%u% interior,
iIconst I:, + cre)te cu o unitate +I+J:IE se cite)te a% doi%ea ter!en de pe pri!a
%inie a
:E
]
iI:, +I! se cite)te u%ti!u% ter!en de pe pri!a %inie a
:!
7e 6nc'eie cic%u% interior + )i se cre)te cu o unitate "aria*i%a contor i/ 7e reia cic%u%
interior, "aria*i%a contor + pornind de %a :, pentru a citi ter!enii de pe %inia E/
iIE, +I: se cite)te a
E:
iIE, +IE se cite)te a
EE
]
iIE, +I! se cite)te a
E!
LIMBAJUL C TEORIE I APLICAI I 9F
7e reia cic%u% eterior p3n& c3nd se citesc toate e%e!ente%e ta*%ou%ui/
Pe ace%a)i principiu se e-ectuea.& tip&rirea e%e!ente%or unui ta*%ou cu dou&
di!ensiuni/ Pentru a putea -i reuti%i.at&, -unc2ia #t( "a -i sa%"at& 6n -i)ieru%
#t(0#
#t( )nt n, nt (,'o/b.e a?10@?10@* -unc2ia cit! cu para!etrii n, !, a
+ 6nceputu% corpu%ui -unc2iei
nt ,67 dec%ararea "aria*i%e%or %oca%e contor
'o/b.e t7 "aria*i%& necesar& citiri "a%ori de tip dou*%e
"or )=17<=n7!!* pri!u% -or ce parcur,e %inii%e ta*%ou%ui
"or )6=176<=(76!!* a% doi%ea -or ce parcur,e co%oane%e
+
prnt" )3Dat e.e(ent/. =' ='=3,,6*7
s#an" )3=."3,Jt*7
a?@?6@=t7
,
p/ts )3S-a #tt (atr#ea3*7
,
Ounc2ia tp(, care tip&re)te e%e!ente%e ta*%ou%ui, este sa%"at& 6n -i)ieru% tp(0#0
tp( )nt n, nt (, 'o/b.e a?@?10@*
+
nt ,67
"or )=17<=n7!!*
"or )6=176<=(76!!*
prnt" )3 =."8t 3,a?@?6@*7
p/ts )38n3*7
,
Pro,ra!u% principa%, care ape%ea.& -unc2ii%e de citire )i de tip&rire a ter!eni%or
unui ta*%ou cu dou& di!ensiuni "a -i
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e 3#t(0#3
-n#./'e 3s"rst0#3
-n#./'e 3tp(0#3
&o' (an )*
+
nt n,(
'o/b.e a?10@?10@7
p/ts )3'at nr 'e .n n s nr 'e #o.oane ( n/(ere ntre43*7
s#an" )3=',='3,Jn,J(*7
#t( )n,(,a*7 ape%area -unc2iei pt citirea unui ta*%ou cu dou&
di!ensiuni
tp( )n,(,a*7 ape%area -unc2iei pt a-i)area unui ta*%ou cu dou&
di!ensiuni
s"rst )*7 ape%area -unc2iei pt ter!inarea pro,ra!u%ui
,
Eemplu
7& se rea%i.e.e pro,ra!u% care adun& dou& !atrici )i apoi s& se trans-or!e
pro,ra!u% pentru a aduna !ai !u%te !atrici, -iecare !atrice -iind 6n!u%2it& cu un
sca%ar/ Adic&,
LIMBAJUL C TEORIE I APLICAI I 9#
CIAJB etapa I
CIa
:
aA
:
Ja
E
aA
E
J ] a
n
aA
n
etapa II
unde a
:
, a
E
, a
1
, ]//a
n
sunt sca%ari, respecti" A
:
, A
E
, ]A
n
sunt ta*%ouri cu dou&
di!ensiuni/
Ounc2ia s/(( pentru adunarea a dou& !atrici "a -i sa%"at& 6n -i)ieru% s/((0#0
&o' s/(( )nt ., nt o, 'o/b.e '?10@?10@, 'o/b.e e?10@?10@,'o/b.e "?10@
?10@*
+
nt ,67
/*s/(a a 'o/a (atr# */
"or )=17<=.7!!*
"or )6=176<=o76!!*
"?@?6@='?@?6@!e?@?6@7 ter!enu% curent a% !atricei - este su!a
ter!eni%or ce%or dou& !atrici d )i e
,
Pro,ra!u% principa% pentru adunarea a dou& !atrici CIAJB "a -i
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e 3#t(0#3
-n#./'e 3tp(0#3
-n#./'e 3s/((0#3
&o' (an )*
+
nt ,6,n,(7
'o/b.e a?10@?10@,b?10@?10@,#?10@?10@7
p/ts )3'at (ar(ea ./ n =R s ( = R n/(ere ntre43*7
s#an" )3=' ='3,Jn,J(*7
#t( )n,(,a*7 ape%area -unc2iei de citire a unui ta*%ou cu dou&
di!ensiuni/ n ca.u% ta*%ouri%or, "aria*i%a ta*%ou a
este trans!is& prin re-erin2&
p/ts )3S-a #tt tab.o/. a3*7
#t( )n,(,b*7 ape%area -unc2iei de citire a unui ta*%ou cu dou&
di!ensiuni/ n ca.u% ta*%ouri%or, "aria*i%a ta*%ou *
este trans!is& prin re-erin2&
p/ts )38t S-a #tt tab.o/. b8n3*7
s/(()n,(,a,b,#*7 e-ectuarea adun&rii ce%or dou& ta*%ouri/ Re.u%tatu%
se "a ,&si 6n ta*%ou% c/
tp( )n,(,#*7 a-i)area ta*%ou%ui re.u%tat prin su!a ce%or dou&
ta*%ouri
s"rst ) *7
,
Pentru a re.o%"a etapa a II0a, pro,ra!u% care ca%cu%ea.& epresia !atricea%&
CIa
:
aA
:
Ja
E
aA
E
J ] a
n
aA
n
, "o! de-ini o -unc2ie care 6n!u%2e)te un ta*%ou cu un
sca%ar/
Ounc2ia s#a.ar(, 6n!u%2e)te un ta*%ou cu dou& di!ensiuni cu "a%oarea unui sca%ar
citit dintr0un "ector L n, ! sunt para!etrii trans-era2i prin "a%oare ce indic&
LIMBAJUL C TEORIE I APLICAI I 9G
!&ri!ea ta*%ou%ui, Z para!etru ce indic& nu!&ru% ter!enu%ui "ectoru%ui cu care
se 6n!u%2e)te !atricea/ Ta*%ouri%e &?@, a?@?@, b?@?@ sunt para!etrii trans-era2i
prin re-erin2&/ Ta*%ou% b?@?@ "a con2ine e%e!ente%e ta*%ou%ui a?@?@ 6n!u%2ite cu
sca%ar/
s#a.ar( )nt n, nt (, nt V, 'o/b.e &?10@, 'o/b.e a?10@?10@,'o/b.e
b?10@?10@*
+
"or )=17<=n7!!*
"or )6=176<=(76!!*
b?@?6@=a?@?6@*&?V@7 opera2ia de 6n!u%2ire cu un sca%ar a ter!eni%or
unui ta*%ou
,
Re.o%"area propriu .is& a epresiei !atricea%e este -&cut& 6n pro,ra!u% principa%, sa%"at
6n -i)ieru% (at(/.B0#/
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e 3#t(0#3
-n#./'e 3tp(0#3
-n#./'e 3#t&0#3
-n#./'e 3s/((0#3
-n#./'e 3s#a.ar(0#3
-n#./'e 3s"rst0#3
&o' (an )*
+
nt ,6,n,(, V7
'o/b.e a?10@?10@,b?10@?10@,#?10@?10@, &?10@7
p/ts )3'at (ar(ea ./ n =R s ( = R n/(ere ntre43*7
s#an" )3=' ='3,Jn,J(*7
p/ts )3'at n/(ar/. 'e (atr# #e se a'/na V = R 3*7
s#an" )3='3,JV*7
p/ts )3'at s#a.ar a1, aB000an3*7
#t& )V,&*7 citirea "ectoru%ui ce con2ine sca%arii a
:
, a
E
, a
n
"or )=17<=n7!!*
"or )6=176<=(76!!*
#?@?6@=07 ini2ia%i.area !atricii c cu "a%oarea .ero
"or )=17<=V7!!* %a -iecare cic%u se e-ectuea.& citirea,
6n!u%2irea !atricii A
Z
cu un sca%ar )i su!a
!atrici%or
+
prnt" )3'at ter(en (atr#e =' 8n3,*7
#t( )n,(,a*7 citirea !atricii A
Z
s#a.ar( )n, (, , &, a, b*7 6n!u%2irea !atricii A
Z
cu sca%aru% a
Z
s/(()n,(,#,b,#*7 adunarea !atricii A
Z
aa
Z
%a !atricea su!& C
,
tp( )n,(,#*7 a-i)area !atricii C
s"rst ) *7
,
Eemplu
LIMBAJUL C TEORIE I APLICAI I 9=
7& se scrie pro,ra!u% C, ce 6n!u%2e)te dou& !atrici CIAaB/ n!u%2irea a dou& !atrici
are %oc dac& nu!&ru% de %inii a%e pri!ei !atrici este e,a% cu nu!&ru% de co%oane a%e
ce%ei de0a doua !atrici/
De ee!p%u, CIAaBI
1
]
1

E1 EE E:
:1 :E ::
a a a
a a a
a
1
1
1
]
1

1E 1:
EE E:
:E ::
b b
b b
b b
I
1
]
1

EE E:
:E ::
c c
c c
/
Ter!enu% de pe r3ndu% :, co%oana E a !atricii C se o*2ine, 6nsu!3nd produse%e
e%e!ente%or de pe r3ndu% : a% !atricii A cu
e%e!ente%e din co%oana E a !atricii B/ Adica,
c
:E
I a
::
ab
:E
Ja
:E
ab
EE
J ] Ja
:i
ab
iE
J] Ja
:n
ab
nE
I

n
i
i i
b a
:
E :
/ Un ter!en oarecare a%
!atricii C, se "a o*2ine "o%osind epresia
c
i(
I

n
)
)( i)
b a
:
,
unde n repre.int& nu!&ru% de co%oane a%e !atricii A, sau %inii a%e !atricii B/
Pentru ca%cu%u% propriu .is a% su!ei 6n C, "o! a"ea ne"oie de trei cic%uri L un cic%u
eterior care parcur,e nu!&ru% de r3nduri a%e !atricii C, un cic%u interior care
parcur,e co%oane%e !atricii C, respecti" un cic%u care e-ectuea.& su!a produse%or
-o%osind re%a2ia de !ai sus/
Ounc2ia pro'(at care ca%cu%ea.& produsu% a dou& !atrici este sa%"at& 6n -i)ieru%
pro'(at0#/ Dac& !atricea din st3n,a, A, are di!ensiunea !n, !atricea din
dreapta B, np, !atricea re.u%tat& C, "a a"ea di!ensiunea !p/
pro'(at)nt (, nt n, nt p, nt a?10@?10@, nt b?10@?10@, nt #?10@
?10@*
+
nt ,6,V7
"or )=17 <=(7 !!*
"or )6=17 6<=p7 6!!*
+
#?@?6@=07 ini2ia%i.area ter!eni%or !atricii re.u%tate cu
"a%oarea $
"or )V=17 V<=n7 V!!* cic%u% necesar pentru ca%cu%u% su!ei
produse%or a
iZ
ab
Z+
#?@?6@=#?@?6@!a?@?V@*b?V@?6@7
,
, 6nc'iderea corpu%ui -unc2iei prod!at
Pro,ra!u% principa%, care ape%ea.& -unc2ia pro'(at, este sa%"at& 6n -i)ieru%
pro'(at10#
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e 3#t(0#3
-n#./'e 3tp(0#3
LIMBAJUL C TEORIE I APLICAI I 9>
-n#./'e 3pro'(at0#3
&o' (an )*
+
nt ,6,n,(,p7
'o/b.e a?10@?10@,b?10@?10@,#?10@?10@7
p/ts )3'at (ar(ea ./ (, n s p n/(ere ntre43*7
s#an" )3=' =' ='3, J(, Jn, Jp*7
#t( )(,n,a*7 se cite)te !atricea A de di!ensiune !n
p/ts )3S-a #tt tab.o/. a8n3*7
#t( )n,p,b*7 se cite)te !atricea B de di!ensiune np
p/ts )3S-a #tt tab.o/. b8n3*7
pro'(at)(,n,p,a,b,#*7 se ca%cu%ea.& !atricea CIAaB
tp( )(,p,#*7 se tip&re)te !atricea C de di!ensiune !p
s"rst ) *7
,
Eemplu
7& se rea%i.e.e un pro,ra! care s& adune ter!enii de deasupra dia,ona%ei
principa%e )i de pe dia,ona%a principa%&, a unui ta*%ou cu dou& di!ensiuni/
"ezol#are
Pentru a parcur,e doar ter!enii de deasupra dia,ona%ei principa%e, cic%u% eterior
"a parcur,e toate r3nduri%e !atricii, 6ncep3nd cu r3ndu% :, pe c3nd cic%u% interior
"a parcur,e co%oane%e !atricii 6ncep3nd de %a co%oana +Ii/ Ounc2ia care adun&
ter!enii de deasupra dia,ona%ei principa%e, inc%usi" dia,ona%a principa%& are
nu!e%e s/(s/p )i "a -i sa%"at& 6n -i)ieru% su!sup/c/ Pute! "or*i de dia,ona%&
principa%& doar 6n ca.u% !atrici%or p&tratice, adic& de di!ensiune nn/
'o/b.e s/(s/p )nt n, 'o/b.e a?10@?10@*
+
nt , 67
'o/b.e s7
s=07 ini2ia%i.area su!ei cu $
/*se a'/na ter(en 'e 'eas/pra s 'a4ona.a prn#pa.a*/
"or )=17 <=n7 !!*
"or )6=7 6<=n7 6!!* cic%u% care parcur,e co%oane%e !atricii a
s=s!a?@?6@7 ca%cu%ui su!ei ter!eni%or
ret/rn )s*7 returnarea su!ei spre -unc2ia ape%ant&
,
Pentru a se "eri-ica dac& a%,orit!u% -o%osit este corect, se "or a-i)a ter!enii de pe
dia,ona%a principa%& )i de deasupra dia,ona%ei
principa%e, -o%osind -unc2ia tps/p(/ Ounc2ia
tps/p( "a -i sa%"at& 6n -i)ieru% tipsup!/c/
tps/p( )nt n, 'o/b.e a?10@?10@*
+
nt ,67
/*se a"sea5a ter(en 'e 'eas/pra s 'e pe 'a4ona.a prn#pa.a*/
"or )=17 <=n7 !!*
+
p/ts )38n3*7
"or )6=7 6<=n7 6!!*
LIMBAJUL C TEORIE I APLICAI I 99
prnt" )3=."8t3,a?@?6@*7
,
,
Eemplu
7& se scrie o -unc2ie care a-i)ea.& ter!enii de su* dia,ona%a principa%& a unei
!atrici p&tratice/
"ezol#are
A%,orit!u% -o%osit se *a.ea.& pe o*ser"a2ia pre.entat& 6n ee!p%u% precedent L un
cic%u eterior care parcur,e r3nduri%e !atricii, respecti" un cic%u interior care
parcur,e co%oane%e !atricii 6ncep3nd cu pri!a co%oan&, p3n& %a co%oana de pe
dia,ona%a principa%&, adic& +Ii/ Ounc2ia care a-i)ea.& ter!enii de su* dia,ona%a
principa%& a unei !atrici p&tratice se nu!e)te tpn"( )i "a -i sa%"at& 6n -i)ieru%
tpn"(0#/
tpn"()nt n, 'o/b.e a?10@?10@*
+
nt , 67
/*se a"sea5a ter(en 'e s/b 'a4ona.a prn#pa.a*/
"or )=17 <=n7 !!*
+
p/ts)38n3*7
"or)6=17 6<=7 6!!* cic%u% care parcur,e co%oane%e !atricii a
prnt")3=."8t3,a?@?6@*7
,
,
Eemplu
<o! 6ncerca s& pune! toate -unc2ii%e pre.entate !ai sus 6ntr0un pro,ra!
principa%/ Pro,ra!u% "a ca%cu%a su!a ter!eni%or unei !atrici p&tratice, situa2i
deasupra dia,ona%ei principa%e, inc%usi" e%e!ente%e de pe dia,ona%&, a-i)area
ter!eni%or care se adun&, precu! )i ter!enii de su* dia,ona%a principa%&/ Citirea
!&ri!ii !atricii, "a%oarea ter!eni%or ei se "a -ace de %a tastatur&, pentru citirea
ter!eni%or se "a ape%a -unc2ia cit!/
"ezol#are
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e 3#t(0#3
-n#./'e 3tp(0#3
-n#./'e 3s/(s/p0#3
-n#./'e 3tps/p(0#3
-n#./'e 3tpn"(0#3
-n#./'e 3s"rst0#3
&o' (an )*
+
nt ,6,n7
'o/b.e a?10@?10@, s7
p/ts )3'at (ar(ea (atr# patrat#e n =R n/(ar ntre43*7
s#an")3='3,Jn*7
/*#trea (atr# ?a@*/
#t( )n,n,a*7
p/ts )3S-a #tt (atr#ea ?a@3*7
s=s/(s/p)n,a*7
LIMBAJUL C TEORIE I APLICAI I :$$
tps/p( )n,a*7
prnt" )Hs/(a ter(en.or 'eas/pra 'a4ona.e prn#pa.e ==." I,s*7
tpn"( )n,a*7
tp( )n,n,a*7
s"rst ) *7
,
Aro-leme propuse
:/ 7& se adune ter!enii de pe %inia ) a unei !atrici A de di!ensiune n!/
Date de intrare B di!ensiunea !atricii n, ! , ter!enii !atricii )i nu!&ru% %iniei )/
Date de ie)ire B sI

m
(
)(
a
:
E/ 7& se adune ter!enii de pe co%oana ) a unei !atrici A de di!ensiune n!/
Date de intrare B di!ensiunea !atricii n, ! , ter!enii !atricii )i nu!&ru% co%oanei
)/
Date de ie)ire B sI

n
i
i)
a
:

1/ 7& se co!pare dou& !atrici de di!ensiune n! )i s& se deduc& "ectoru% c care
con2ine ter!enii cu "a%oare e,a%& din ce%e dou& !atrici /
Date de intrare B n, !, a
i(
, b
i(
Date de ie)ire B c
i
F/ 7& se citeasc& o !atrice A de di!ensiune nn )i s& se e"a%ue.e ur!&toarea
epresie !atricea%& BIAJI, unde I este !atricea unitate/
Date de intrare B n, A/
Date de ie)ire B B
#/ 7& se adune ter!enii po.iti"i de su* dia,ona%a secundar& a !atricii A de
di!ensiune nn/
Date de intrare B n, A
Date ie)ire B sIsu!a ter!eni%or de su* dia,ona%a secundar&/
G/ 7& se deter!ine nu!&ru% ter!eni%or po.iti"i, ne,ati"i, nu%i )i s& se ca%cu%e.e
su!e%e acestor ter!eni, din !atricea A citit& de %a tastatur&/
Date de intrare B n, ! di!ensiunea !atriciiL A
Date de ie)ire B nu!&ru% ter!eni%or po.iti"i, ne,ati"i, nu%i, su!a ter!eni%or
po.iti"i, su!a ter!eni%or ne,ati"i/
3.2. &uncii de bibliotec.
Li!*a+u% C a -ost rea%i.at ca un %i!*a+ cu un set re%ati" redus de co!en.i, pentru a
a"ea o "ite.& de eecu2ie )i -%ei*i%itate !are/ Ast-e% %i!*a+u% C nu are 6ncorporat
-aci%it&2i de pre%ocrare )i citire direct& a )iruri%or de caractere, !u%2i!i%or,
ta*%ouri%or/ Pentru pre%ucrarea date%or de tip )ir de caractere se -o%osesc ta*%ouri
LIMBAJUL C TEORIE I APLICAI I :$:
de caractere sau pointeri %a caracter/ Li!*a+u% C nu are instruc2iuni de citire,
tip&rire 4opera2ii de intrare ie)ire5 a date%or, nu are instruc2iuni de acces %a -i)iere/
Pentru aceste opera2ii %i!*a+u% C o-er& o co%ec2ie de -unc2ii standard de *i*%iotec&/
n continuare se "or pre.enta -unc2ii%e de *i*%iotec& ce%e !ai -o%osite 6n cadru%
pro,ra!e%or/
3.2.1. &uncii de intrare ie"ire.
Aceste -unc2ii sunt B
4et#1 , 4ets, s#an" pentru citirea date%or
p/t#1, p/ts, prnt" pentru tip&rirea date%or/
Ounc2ii%e de intrareKie)ire au prototipu% 6n -i)iere%e antet st'o01 )i #ono01/, )i au
-ost deta%iate 6n capito%u% #/#/
3.2.2. &uncii matematice.
Ounc2ii%e !ate!atice au prototipu% 6n -i)ieru% antet (at101/ n ta*e%u% de !ai +os
este pre.entat& o %ist& e'austi"& a -unc2ii%or !ate!atice L prototipu% %or precu! )i
e-ectu% -iec&rei -unc2ii 6n parte/
Prototipu% -unc2iei E-ectu% -unc2iei
'o/b.e a#os )'o/b.e x*
arccosinus de
'o/b.e asn )'o/b.e x*
arcsinus de
'o/b.e atan )'o/b.e x*
arctan,enta de
'o/b.e atanB)'o/b.e G, 'o/b.e x*
arctan,enta de PK
'o/b.e #e. )'o/b.e x*
ce% !ai !ic 6ntre, !ai !are sau e,a% cu
'o/b.e #os )'o/b.e x*
cosinus de 4 epri!at 6n radiani 5
'o/b.e exp )'o/b.e x*
"a%oarea %ui e

'o/b.e "abs )'o/b.e x*


"a%oarea a*so%ut& a %ui
'o/b.e ".oor )'o/b.e x*
ce% !ai !are 6ntre, !ai !ic sau e,a% cu
'o/b.e .o4 )'o/b.e x*
%n de
'o/b.e .o410 )'o/b.e x*
%, de
'o/b.e poW )'o/b.e x, 'o/b.e G*
%a puterea P
'o/b.e sn )'o/b.e x*
sinus de 4 epri!at 6n radiani 5
'o/b.e sZrt )'o/b.e x*
Radica%u% de ordinu% E a %ui
'o/b.e tan )'o/b.e x*
tan,enta %ui 4 epri!at 6n radiani 5
'o/b.e sn1 )'o/b.e x*
s'
'o/b.e #os1n )'o/b.e x*
c'
'o/b.e tan1 )'o/b.e x*
t'
'o/b.e "(o' )'o/b.e x, 'o/b.e G*
Returnea.& restu% opera2iei KP
'o/b.e (o'" )'o/b.e n,'o/b.e **
Desco!pune n 6n parte intrea,& )i
-rac2ionar&, returnea.& partea -rac2iona%&, iar
partea 6ntrea,& 6n i
'o/b.e "rexp )'o/b.e n, nt*exp*
Desco!pune n 6n !antis& $,# %a : )i
eponentu% %ui E, ast-e% nI!antisaQEeep
LIMBAJUL C TEORIE I APLICAI I :$E
'o/b.e .'exp )'o/b.e n, nt exp*
Returnea.& "a%oarea %ui nQEeep
Tot 6n -i)ieru% !at'/' sunt ur!&toare%e -unc2ii B
'o/b.e #abs )str/#t #o(p.ex 5*7 returnea.& !odu%u% nu!&ru%ui co!p%e .
'o/b.e po.G )'o/b.e x, nt n, 'o/b.e #?@*7 returnea.& "a%oarea po%ino!u%ui 6n
de ,rad n, coe-icien2ii sunt situa2i 6n ta*e%u% c 6n ur!&toarea ordine B
#?0@ I coe-icientu% ter!enu%ui %i*er
#?1@ I coe-icientu% %ui
:
#?n@ I coe-icientu% %ui
n

n -i)ieru% st'.b01 sunt dec%arate ur!&toare%e -unc2ii B
nt abs)nt x* returnea.& "a%oarea a*so%ut& a %ui de tip 6ntre,
.on4 .abs).on4 x* returnea.& "a%oarea a*so%ut& a %ui de tip %on,
nt ran')&o'* returnea.& un nu!&r natura% a%eator !ai !ic de 1E=G>
nt ran'o()nt n* returnea.& un nu!&r natura% a%eator !ai !ic dec3t n/
3.2.3. &uncii de u3 general.
&o' #.rs#r)&o'* )ter,e tot ecranu% 4c%ear screen5
nt Vb1t)&o'* returnea.& o "a%oare di-erit& de .ero dac& eist& un
caracter disponi*i% de %a tastatur&, sau returnea.& "a%oarea .ero 6n ca. contrar/
n -i)ieru% 'os01 sunt dec%arate -unc2ii%e pentru oprirea eecu2iei pro,ra!u%ui pe o
durat& sta*i%it&, respecti" -unc2ii de producere de sunete cu -rec"en2a dorit&/
&o' 'e.aG)/ns4ne' * suspend& eecu2ia pro,ra!u%u pentru o durat& de i
!i%isecunde
&o' s.eep)/ns4ne' n* suspend& eecu2ia pro,ra!u%u pentru o durat& de n
secunde
&o' so/n')/ns4ne' 1* tri!ite spre di-u.oru% ca%cu%atoru%ui un sunet cu
-rec"en2a I'
&o' noso/n')&o'* opre)te sunetu% tri!is de sound %a di-u.or/
#1ar *#t(e )#onst t(eAt *t* -unc2ia returnea.& un pointer c&tre )iru% ce
cuprinde .i, %una, data, ora, !inute, secunde, anu%/
t(eAt t(e )t(eAt *t(p* -unc2ia ti!e returnea.& ora curent& a
siste!u%ui, dac& siste!u% nu poate returna ora curent&, -unc2ia "a returna "a%oarea
H:
str/#t t( *.o#a.t(e )#onst t(eAt*t(p* -unc2ia %oca%ti!e
returnea.& un pointer c&tre "aria*i%a ti!p de -or!a unei structuri de tip t!
#1ar *as#t(e )#onst str/#t t( *p* -unc2ia ascti!e con"erte)te in-or!a2ia
din structura indicat& de pointeru% p intr0un )ir de -or!aB .i, %una, data, ora,
!inute, secunde, anu% )i returnea.& un pointer c&tre )iru% con"ertit/
Do/b.e '"t(e )t(eAt tB, t(eAt1* -unc2ia di-ti!e returnea.& di-eren2a de
ti!p dintre tE )i t: epri!at& 6n secunde/
Ounc2ii%e pentru ,estionarea ti!pu%ui sunt disponi*i%e 6n t(e01/
Eemplu.
76 se deter!ine ti!pu% 6n secunde necesar pentru a parcur,e cic%u% -or )i s& se
a-i)e.e ti!pu% %oca )i ti!pu% uni"ersa%/
LIMBAJUL C TEORIE I APLICAI I :$1
-n#./'e <st'o012
-n#./'e <#ono012
-n#./'e <t(e012
&o' (an )*
+
str/#t t( *.o#a.,*47 dec%arare de structuri de tip t! ce !e!orea.& data
)i ora desco!puse 6n e%e!ente%e %or constituti"e B
secunde, !inute, ore, .iua, %una, an/
'o/b.e 't,7
t(eAt t,t1,tB7 dec%ararea de dat& de tip %on, inte,er pentru dat&
ca%endaristic&
t=t(e )NUEE*7 returnarea orei curente ca%endaristice a siste!u%ui
.o#a. =.o#a.t(e )Jt*7 returnea.& c&tre pointeru% %oca% 6n -or!a unei
structuri de tip t! a ti!pu%ui %oca% ,enerat de
ape%u% -unc2iei ti!e
t1=t(e )NUEE*7
"or )=07<=:00007!!*
tB=t(e )NUEE*7
't='""t(e )tB, t1*7 -unc2ia di--ti!e ca%cu%ea.& di-eren2a de ti!p
dintre tE )i t: epri!at 6n secunde
prnt" )3Data s ora este =s8n3,as#t(e ).o#a.**7 con"ertirea datei din
structura %oca% 6ntr0un )ir de caractere de -or!a .i,
%una, data, ora, !inute, secunde,an, pentru a putea
-i a-i)at
4=4(t(e )Jt*7 -unc2ia ,!ti!e returnea.& %a pointeru% , a
ti!pu%ui repre.entat ca ti!p cordonat uni"ersa%
prnt" )3Data s ora /n&ersa. =s8n3,as#t(e )4**7
prnt" )3'/rata ##././ "or n se#/n'e ==."8n3,'t*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
'&At '& )nt n/(arator, nt n/(tor*-unc2ia di" returnea.& c3tu% )i restu%
6!p&r2irii nu!&r&torKnu!itor 6ntr0o structur& de
tipu% di"ft, structura di"ft con2ine dou& "a%ori de
tip 6ntre, cu denu!iri%e B
SoutI c3tu% , re! Irestu%/
.'&At .'& ).on4 n/(arator, .on4 n/(tor* -unc2ia di" returnea.& c3tu%
)i restu% 6!p&r2irii nu!&r&torKnu!itor 6ntr0o
structur& de tipu% %di"ft, structura %di"ft con2ine
dou& "a%ori de tip %on, cu denu!iri%e B
SoutI c3tu% , re! Irestu%/
LIMBAJUL C TEORIE I APLICAI I :$F
&o' sran' )/ns4ne' * -unc2ia srand sta*i%e)te punctu% de 6nceput I i
pentru sec"en2a ,enerat& de rand 45, ca "a%oare a
%ui i se poate -o%osi "a%oarea returnat& de -unc2ia
ti!e 4VULL5, care este continu !odi-icat& de
ceasu% siste!u%ui/
nt sGste( )#onst #1ar *sr* -unc2ia sPste! 45 trans-er& con2inutu% )iru%ui
sir ca instruc2iune de tip co!and& pentru siste!u%
de operare/
-n#./'e <st'.b012
&o' (an )*
+
sGste( )H'r #:8te(p#I*7 are ca e-ect a-i)area con2inutu%ui directoru%ui
TEMPC de pe discu% C/
g
Pentru ape%area -unc2ii%or di" 45, %di" 45, srand 45 )i sPste! 45 se "a inc%ude
-i)ieru% std%i*/'/
Eemplu.
-n#./'e <st'o012
-n#./'e <#ono012
-n#./'e <st'.b012
-n#./'e <t(e012
&o' (an )*
+
'&At n7
'o/b.e 't,7
nt tt,tt17
.on4 t,t1,tB7
t=t(e )NUEE*7
"or )=07<:00007!!*7
t1=t(e )NUEE*7
sGste( )3'r /p #:88te(p#3*7 ape%area co!en.i dir din siste!u% de operare
cu para!etri indica2i de )iru% dintre @C
tt=)/ns4ne'* t/B7 con"ersia datei t de tip %on, in dat& de tip int -&r&
se!n
tt1=B:;007
n='& )tt1,tt*7 detr!inarea c3tu%ui )i restu%ui dintre tt:Ktt
prnt" )3=' =' #t/.==' rest/.==' 8n3,tt1, tt,n0Z/ot, n0re(*7
a-i)area ce%or dou& nu!ere )i apoi c3tu% )i restu%
ca "a%ori a%e structuri n de tip di"ft
LIMBAJUL C TEORIE I APLICAI I :$#
sran' )tt*7 -unc2ia srand "a %i"ra o "a%oare pentru sec"en2a de
nu!ere a%eatoare date de -unc2ia rand 45
prnt" )3p/n#t 'e n#ep/t ==' n/(e.e a.eator re5/.tat=
='8n3,tt,ran' )**7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
3.2.%. &uncii de con#ersie.
Ounc2ia ato con"erte)te intre,u% .eci!a% de-init de )iru% de caractere sr )i
returnea.& "a%oarea acestui 6ntre,/
Prototipu% -unc2iei ato este B
nt ato )#onst #1ar *sr*7
Eemplu.
-n#./'e <st'o012
-n#./'e <#ono012
&o' (an )*
+
#1ar st ?10@ 7
nt 7
4ets )st* 7
= ato )st* 7
prnt" )Hs-a #on&ertt sr/. 'e #ara#tere n/(er#e n &a.oarea 'e
tp ntre4 =' I,*7
,
Dac& se tastea.& )iru% de caractere :E1 6n ur!a con"ersiei se "a a-i)a 6ntre,u% cu
"a%oarea :E1/
Ounc2ia ato. con"erte)te 6n 6ntre, .eci!a% de tip %on, int, )iru% de caractere sr
)i returnea.& "a%oarea acestui 6ntre,/
Prototipu% -unc2iei ato% este B
nt ato. )#onst #1ar *sr*7
Eemplu.
-n#./'e <st'o012
-n#./'e <(at1012
-n#./'e <#ono012
-n#./'e <st'.b012
&o' (an )*
+
#1ar sr1 ?1<@ , srB ?1<@7
LIMBAJUL C TEORIE I APLICAI I :$G
.on4 nt a 7
p/ts )3Se #on&erteste sr/. 'e #ara#tere "or(at 'n #"re n nt
.on43*7
p/ts )3'at pr(/. sr 'e #ara#tere "or(at 'n #"re3*7
s#an" )3=s3,sr1*7
p/ts )3'at a. 'o.ea sr 'e #ara#tere "or(at 'n #"re3*7
s#an" )3=s3,srB*7
a=ato. )sr1*! ato. )srB* 7
prnt" )3s/(a #e.or 'o/a sr/r #on&ertte = =.'3, a*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
Ounc2ia toa con"erte)te "a%oarea *inar& de tip 6ntre, 6n 6ntre, cu *a.a de
nu!era2ie de-init& de *a.a )i p&strea.& re.u%tatu% con"ersiei su* -or!& de )ir de
caractere/
Prototipu% -unc2iei itoa este B
#1ar* toa )nt &a.oare, #1ar *Fr, nt ba5a* 7
&a.oare I este "a%oarea *inar& de tip intre, ce se con"erte)te
Fr I este pointeru% spre .ona 6n care se p&strea.& re.u%tatu%
con"ersiei
ba5a I*a.a de nu!era2ie pentru 6ntre,u% re.u%tat 6n ur!a con"ertiri/
Eemplu.
7& se con"erteasc& o "a%oare 6ntrea,& N EG$$$ 6ntr0un )ir de caractere, -o%osind ca
*a.& de con"ersie siste!u% octa% 4>5 /
<a%oarea 6ntre,u%ui se introduce de %a tastatur&/
-n#./'e <st'o012
-n#./'e <(at1012
-n#./'e <#ono012
-n#./'e <st'.b012
&o' (an )*
+
#1ar sr ?1<@7 )iru% de caractere 6n care se "a p&stra re.u%tatu%
con"ersiei
nt a 7
p/ts )3'at /n n/(ar n ba5a 103*7
s#an" )3='3,Ja*7
p/ts )3se #on&erteste ntre4/. n sr 'e #ara#tere e#1&a.ent n
ba5a 8 3*7
toa )a,sr,8* 7 ape%area -unc2iei de con"ersie toa, care
con"erte)te "a%oarea 6ntrea,& a in "a%oare octa%&
485 )i depo.itea.& "a%oare con"ertit& 6n )iru% de
caractere sr
LIMBAJUL C TEORIE I APLICAI I :$=
prnt" )3sr/. re5/.tat n /r(a #on&erse = =s3, sr*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
Eemplu.
7& se con"erteasc& o "a%oare 6ntrea,& N EG$$$ 6ntr0un )ir de caractere, -o%osind ca
*a.& de con"ersie o "a%oare 6ntrea,& 6ntre E )i :G/
<a%oarea 6ntre,u%ui ce se con"erte)te, c3t )i "a%oarea *a.ei de con"ersie se
introduc de %a tastatur&/
#n#./'e <st'o012
-n#./'e <(at1012
-n#./'e <#ono012
-n#./'e <st'.b012
&o' (an )*
+
#1ar sr ?1<@7
nt a,b 7
p/ts )3'at /n n/(ar n ba5a 103*7
s#an" )3='3,Ja*7
p/ts )3'at &a.oarea ba5e 'e #on&erse B,:,;,<,L,N,8,1L3*7
s#an" )3='3,Jb*7
prnt" )3se #on&erteste ntre4/. n sr 'e #ara#tere e#1&a.ent n ba5a
=' 3,b*7
toa )a,sr,b* 7
prnt" )3sr/. re5/.tat n /r(a #on&erse = =s3, sr*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
Ounc2ia .toa con"erte)te "a%oarea *inar& de tip %on, int 6n 6ntre, cu *a.a de
nu!era2ie de-init& de *a.a )i p&strea.& re.u%tatu% con"ersiei su* -or!& de )ir de
caractere/
Prototipu% -unc2iei %toa este B
#1ar* .toa ).on4 nt &a.oare, #1ar *Fr, nt ba5a* 7
&a.oare I este "a%oarea *inar& de tip %on, 6ntre, ce se con"erte)te
Fr I este pointeru% spre .ona 6n care se p&strea.& re.u%tatu%
con"ersiei
ba5a I*a.a de nu!era2ie pentru 6ntre,u% re.u%tat 6n ur!a con"ertiri/
Eemplu.
7& se con"erteasc& o "a%oare 6ntrea,& de tip %on, 6ntr0un )ir de caractere, -o%osind
ca *a.& de con"ersie o "a%oare 6ntrea,& 6ntre E )i :G/
<a%oarea 6ntre,u%ui ce se con"erte)te c3t )i "a%oarea *a.ei de con"ersie se
introduc de %a tastatur&/
LIMBAJUL C TEORIE I APLICAI I :$>
-n#./'e <st'o012
-n#./'e <(at1012
-n#./'e <#ono012
-n#./'e <st'.b012
&o' (an )*
+
#1ar sr ?1<@7
.on4 nt a 7
nt b 7
p/ts )3'at /n n/(ar n ba5a 10 'e tp .on4 nt3*7
s#an" )3=.'3,Ja*7
p/ts )3'at &a.oarea ba5e 'e #on&erse B,:,;,<,L,N,8,1L3*7
s#an" )3='3,Jb*7
prnt" )3se #on&erteste ntre4/. n sr 'e #ara#tere e#1&a.ent n
ba5a =' 3,b*7
.toa )a,sr,b* 7
prnt" )3sr/. re5/.tat n /r(a #on&erse = =s3, sr*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
3.10. 4ointeri.
Pointerii sunt un tip de "aria*i%e particu%are/ O "aria*i%& de tip pointer poate re2ine
adresa unei "aria*i%e/ Pointerii sunt asocia2i pentru -iecare tip de dat& a %i!*a+u%ui
C/ Dec%ararea unei "aria*i%e pointer se -aceB
tp 'e 'ata *n/(eA&arab.aAponter7
Pentru a dec%ara o "aria*i%& pointer tre*uie -o%osit operatoru% de indirectare Q/
Operatoru% indirectare Q este -o%osit pentru a accesa "a%oarea pe care "aria*i%a
pointer o indic&/
-n#./'e <st'o012
&o' (an )*
+
nt *pa7
prnt")38n\arab.a pa are &a.oarea =p3, pa*7
prnt")38n\a.oarea sto#ata n .o#ata =p este ='3, pa, *pa*7
*pa=:7
prnt")38n\arab.a pa are &a.oarea =p3, pa*7
prnt")38n\a.oarea sto#ata n .o#ata =p este ='3, pa, *pa*7
,
Pro,ra!u% "a a-i)a pe ecranB
\arab.a pa are &a.oarea 0LYO
\a.oarea sto#ata [n .o#ata 0LYO este B8B<L
\arab.a pa are &a.oarea 0LYO
\a.oarea sto#ata [n .o#ata 0LYO este :
7& disec&! pro,ra!u% pre.entat !ai sus/ In .ona de dec%arare a "aria*i%e%or a!
dec%arat o "aria*i%& de tip pointer cu nu!e%e pa 4aten2ie %a operatoru% de
indirectare 6n -a2a nu!e%ui "aria*i%ei5/ Pri!a instruc2iune print-45 tip&re)te
"a%oarea "aria*i%ei pointer pa/ 7peci-icatoru% de -or!at pentru "aria*i%e%e de tip
pointer este `p/ O*ser"&! c& "a%oarea "ari*i%ei pointer este a-i)at& 6n -or!at
LIMBAJUL C TEORIE I APLICAI I :$9
'ea.eci!a%/ 4<a%oarea acestei "aria*i%e este ar*itrar&, 6n ca.u% nostru este $GCB,
dar pe a%te ca%cu%atoare poate a"ea o a%t& "a%oare5/ <a%oarea $GCB repre.int& o
%oca2ie de !e!orie/ Ur!&toarea instruc2iune print-45 tip&re)te "a%oarea de tip
6ntre, care este stocat& %a adresa $GCB/ <a%oarea care este tip&rit& E>E#G este
ar*itar&, pentru c& nu a! in-%uen2at cu ni!ic aceast& %oca2ie de !e!orie/
Ur!&toarea instruc2iune este o instruc2iune de atri*uire QpaI1L/ Aceast&
instruc2iune !odi-ic& "a%oarea care este stocat& 6n %oca2ia de !e!orie $GCB %a 1/
Ve pute! con"in,e de asta prin ur!&toare%e dou& instruc2iuni print-45/ <a%oarea
pointeru%ui nu s0a !odi-icat, dar s0a !odi-icat "a%oarea 6ntrea,& care este stocat&
%a adresa $GCB/
Atunci c3nd a -ost pre.entat& instruc2iunea scan-45, a! a!intit de operatoru%
adres& c/ Operatoru% adres& per!ite deter!inarea adresei unei "aria*i%e 4%oca2ia
de !e!orie 6n care "aria*i%a respecti"& este stocat&5/
-n#./'e <st'o012
&o' (an )*
+
nt a=B7
nt *pa7
prnt")38n\arab.a ponter pa are &a.oarea =p3, pa*7
prnt")38nPonter/. pa este sto#at .a a'resa =p3, Jpa*7
prnt")38n\arab.a a are &a.oarea ='3, a*7
prnt")38n9ntre4/. a este sto#at .a a'resa =p3, Ja*7
pa=Ja7
prnt")38n\arab.a ponter pa are &a.oarea =p3, pa*7
prnt")38nPonter/. pa este sto#at .a a'resa =p3, Jpa*7
prnt")38n\arab.a a are &a.oarea ='3, a*7
prnt")38n9ntre4/. a este sto#at .a a'resa =p3, Ja*7
,
7& disec&! acest pro,ra!/ n partea de dec%arare a "aria*i%e%or, a! dec%aarat o
"aria*i%& de tip 6ntre, )i a! ini2ia%i.at0o cu E, respecti" o "aria*i%& pointer de tip
6ntre, pa/ Pri!e%e patru instruc2iuni print-45 care ur!ea.& "or a-i)a pe ecranB
\arab.a ponter pa are &a.oarea 00LO
Ponter/. pa este sto#at .a a'resa >>D8
\arab.a a are &a.oarea B
9ntre4/. a este sto#at .a a'resa >>DL
Re2ine2i c& pentru a-i)area adresei unei "aria*i%e a! -o%osit tot speci-icatoru% de
-or!at `p/ Instruc2iunea de atri*uire paIcpaL "a atri*ui pointeru%ui "a%oarea
adresei "aria*i%ei a/ Dup& aceast& instruc2iune, pro,ra!u% "a a-i)a din nou patru
r3nduri -o%osind instruc2iunea print-45B
\arab.a ponter pa are &a.oarea >>DL
Ponter/. pa este sto#at .a a'resa >>D8
\arab.a a are &a.oarea B
9ntre4/. a este sto#at .a a'resa >>DL
O*ser"&! c& "aria*i%a pointer este ne!odi-icat&/ Ea con2ine de data aceasta
"a%oarea adresei "aria*i%ei a/ Ce%e%a%te "a%ori sunt ne!odi-icateB adresa
pointeru%ui, "a%oarea "aria*i%ei a )i adresa "aria*i%ei a/
7& 6ncerc&! s& pune! cei doi operatori 6!preun&/ 7& ne i!a,in&! ur!&toru%
pro,ra!B
LIMBAJUL C TEORIE I APLICAI I ::$
-n#./'e <st'o012
&o' (an )*
+
nt a=B7
nt *pa7
pa=Ja7
*pa=:7
prnt")38n\arab.a a are &a.oarea ='3, a*7
,
Dac& ru%&! pro,ra!u% de !ai sus, pe ecran "a -i a-i)at !esa+u%B
\arab.a a are &a.oarea :
C3nd s0a 6nt3!p%at asta? Vu a! !odi-icat de %oc "a%oarea "aria*i%ei a printr0o
atri*uire )i totu)i "a%oarea ei este 1 6n %oc de E/ De -apt, pri!a instruc2iune de
atri*uire paIcaL atri*uie "aria*i%ei pointer pa adresa "aria*i%ei a 4deci "aria*i%a
pointer indic& c&tre %oca2ia de !e!orie 6n care este p&strat& "aria*i%a a/
A doua instruc2iune de atri*uire QpaI1L atri*uie %oca2iei indicate de pointer
"a%oarea 1/ Dar %oca2ia indicat& de pointer este %oca2ia unde este p&strat& "aria*i%a
a, deci de -apt a! !odi-icat "a%oarea "aria*i%ei a//
De -apt, pointerii sunt -o%osi2ii pentru a putea returna !ai !u%te "a%ori din -unc2ii/
A! "&.ut 6n para,ra-u% re-eritor %a -unc2ii, c& trans!iterea para!etri%or se -ace
prin "a%oare/ 7& ne i!a,in&! ur!&toarea pro*%e!&B
Eemplu
7& se scrie un pro,ra! C, care ca%cu%ea.& so%u2ii%e ecua2iei de ,radu% II 6ntr0o
-unc2ie/ Citirea date%or de intrare )i tip&rirea date%or de ie)ire s& -ie -&cut& 6n
-unc2ia "oid !ain 45/
"ezol#are
ti! de %a -unc2ii, c& o -unc2ie 6n C nu poate returna dec3t o sin,ur& "a%oare
-o%osind instruc2iunea return45/ 7& 6ncerc&! s& scrie! pro,ra!u% su* aceast&
-or!&B
-n#./'e <st'o012
-n#./'e <(at1012
nt e#B)".oat, ".oat, ".oat, ".oat, ".oat*7
&o' (an )*
+
nt re57
".oat a, b, #, x1, xB7
prnt")38nPro4ra( #are re5o.&a e#/ata 'e 4ra'/. 99 ax]B!bx!#=03*7
prnt")38n9ntro'/#et #oe"#ent a, b s #3*7
s#an")3=" =" ="3, Ja, Jb, J#*7
re5=e#B)a, b, #, x1, xB*7
" )re5 == 1*
prnt" )3So./t.e e#/ate s/nt x1==" s xB=="3, x1, xB*7
e.se
prnt" )3E#/ata are so./t (a4nare3*7
,
nt e#B)".oat a, ".oat b, ".oat #, ".oat x1, ".oat xB*
+
LIMBAJUL C TEORIE I APLICAI I :::
".oat '7
'=b*b-;*a*#7
" )' < 0*
ret/rn )0*7
e.se
+
x1=)-b-sZrt)'**/B/a7
xB=)-b!sZrt)'**/B/a7
ret/rn )1*7
,
,
Dac& "o! introduce pentru coe-icien2i "a%ori%e :, 01 )i E pentru care so%u2ia
ecua2iei este : )i E, pro,ra!u% "a a-i)aB
So./t.e e#/ate s/nt x1=00000000 s xB=00000000
De ce? Pentru c& %a ape%u% -unc2iei ecE45 din -unc2ia "oid !ain 45, nu se trans!it
"aria*i%e%e : )i E 4sau !ai corect spus adrese%e "aria*i%e%or5 ci "a%ori%e %or/ In
-unc2ia ecE45 "aria*i%e%e : )i E care apar 6n %ista para!etri%or -or!a%i, sunt dou&
"aria*i%e %oca%e care nu sunt ace%ea)i cu "aria*i%e%e : )i E dec%arate 6n -unc2ia
"oid !ain 45/ La re"enirea din -unc2ia ecE45 "aria*i%e%e : )i E 4din -unc2ia "oid
!ain 455 sunt ne!odi-icate/
Re.o%"area pro*%e!ei se -ace ape%3nd -unc2ia ecE45 cu adrese%e "aria*i%e%or : )i
E/ In -unc2ia ecE45 "o! atri*ui noi%e "a%ori direct 6n adresa "aria*i%ei : )i E din
-unc2ia "oid !ain 45/ Oi)ieru% surs& corect este pre.entat 6n continuareB
-n#./'e <st'o012
-n#./'e <(at1012
nt e#B)".oat, ".oat, ".oat, ".oat *, ".oat **7
&o' (an )*
+
nt re57
".oat a, b, #, x1, xB7
prnt")38nPro4ra( #are re5o.&a e#/ata 'e 4ra'/. 99 ax]B!bx!#=03*7
prnt")38n9ntro'/#et #oe"#ent a, b s #3*7
s#an")3=" =" ="3, Ja, Jb, J#*7
re5=e#B)a, b, #, Jx1, JxB*7
" )re5 == 1*
prnt" )3So./t.e e#/ate s/nt x1==" s xB=="3, x1, xB*7
e.se
prnt" )3E#/ata are so./t (a4nare3*7
,
nt e#B)".oat a, ".oat b, ".oat #, ".oat *x1, ".oat *xB*
+
".oat '7
'=b*b-;*a*#7
" )' < 0*
ret/rn )0*7
e.se
+
*x1=)-b-sZrt)'**/B/a7
*xB=)-b!sZrt)'**/B/a7
ret/rn )1*7
LIMBAJUL C TEORIE I APLICAI I ::E
,
,
Lista para!etri%or -or!a%i ai -unc2iei ecE45 este -%oat a, -%oat *, -%oat c, -%oat Q:,
-%oat QE, deci 1 "aria*i%e de tip -%oat )i dou& "aria*i%e de tip pointer %a -%oat/ In
interioru% -unc2iei ecE45 opera2ii%e de atri*uire sunt Q:I] )i QEI], adic& se
depun noi%e "a%ori ca%cu%ate 6n adrese%e indicate de pointeru% : )i pointeru% E/
Ape%u% -unc2iei ecE45 din -unc2ia "oid !ain 45, se -ace su* -or!a ecE4a, *, c, c:,
cE5L adic& se trans!it "a%ori%e "aria*i%e%or a, * )i c, precu! )i adresa "aria*i%ei
:, respecti" a "aria*i%ei E/
3.11. Structuri "i tipuri definite de utili3ator.
Date%e pre%ucrate de pro,ra!e pot -i sin,u%are sau ,rupate, ce%e sin,u%are au -ost
pre.entate 6n capito%e%e anterioare/
Date%e ,rupate sunt !u%2i!i de e%e!ente care pot -i pre%ucrate at3t e%e!ent cu e%e!ent
c3t )i ,%o*a%/ Un tip de date ,rupate sunt ta*%ouri%e, dar e%e i!p%ic& c& toate e%e!ente%e
ta*%ou%ui sunt de ace%ea) tip/
7unt situa2ii c3nd se doresc ,ruparea de date de di-erite tipuri ee!p%u B
Data ca%endaristic& -or!at& din 1 e%e!ente .i, %un&, an, unde B
.i este de tip nu!eric
%un& este de tip )ir de caractere
an este de tip nu!eric
Aceast& ,rupare de date poart& nu!e%e de structur&/
Re-erirea %a e%e!ente%e structuri se -ace prin construc2ii de -e%u% nu!e%ui/
7tructuri%e sunt date care se pot a%oca B
W%o*a%
Auto!atic
7tatic
7tructura se consider& ,%o*a%& dac& a -ost dec%arat& 6n a-ara corpu%ui oric&rei -unc2ii, se
consider& auto!atic&, dac& a -ost dec%arat& 6n corpu% unei -unc2ii, se consider& static&
dac& dec%ara2ia ei are pre-iu% cu"intu% static/
E%e!ente%e care sunt co!ponente a%e structurii pot -i ini2ia%i.ate ast-e%, dup& dec%ararea
structurii se scrie caracteru% I , ur!at de construc2ii%e prin care se ini2ia%i.ea.&
co!ponente%e e%e!entare a%e structurii, "a%ori%e sunt cuprinse 6ntre parante.e aco%ade/
<a%ori%e sunt separate prin "ir,u%& intre e%e ast-e% B
7e consider& o structur& pentru p&strarea nu!ere%or co!p%ee ce au dou&
co!ponente B
Partea rea%&
Partea i!a,inar&
7e consider& structura nu!efco!p%e cu dou& e%e!ente B
str/#t n/(eA#o(p.ex
+
".oat rea. 7
LIMBAJUL C TEORIE I APLICAI I ::1
".oat (a4nar 7
, 7
7e consider& c& "aria*i%a este o structur& de tipu% nu!efco!p%e prin dec%ara2ia de
!ai +os B
str/#t n/(eA#o(p.ex x 7
Dac& se dore)te ini2ia%i.area e%e!ente%or ce co!pun "aria*i%a de tip co!p%e, se
-o%ose)te dec%ara2ia de -or!a B
str/#t n/(eA#o(p.ex x = +B0:, ;00, 7
Ast-e% "aria*i%a de tip nu!e co!p%e "a a"ea ini2ia%i.ate e%e!ente%e, rea% cu "a%oarea
E/1 iar i!a,inar cu "a%oarea F/$/
3.11.1. 5eclaraie de structur.
Dec%ararea unei structuri se poate -ace prin dou& !oduri, cu"3ntu% de 6nceput pentru o
structur& este str/#t /
Modu% :
str/#t n/(e.e str/#t/r
+
.sta 'e 'e#.arat
,
n/(e.e str/#t/r1, n/(e.e str/#t/rBC0n/(e.e str/#t/rn 7
nu!e%e structuri, nu!e%e structurii:, nu!e%e structuriiE// sunt nu!e date
"aria*i%e%or de ace%ea) -e% )i o*%i,atoriu unu% din aceste nu!e tre*uie s& -ie pre.ent/
Dac& nu!e%e structuri este pre.ent , e% de-ine)te o structur& nou&, iar nu!e%e
structurii:, nu!e%e structuriiE de-inesc "aria*i%e de tipu% nu!e structur& /
Eemplu.
str/#t #o(p.ex
+
".oat rea. 7
".oat (a4nar 7
,
x,G,5 7
Ast-e% #o(pex este nu!e%e noi structuri ce are dou& e%e!ente de tip -%oat, iar
x,G,5 sunt "aria*i%e structur& de tip #o(p.ex/
str/#t 'ataA#a.en'ar
+
nt 5 7
#1ar ./na ?1<@L
nt an 7
,
'ataAnaster, 'ataAns#rer 7
LIMBAJUL C TEORIE I APLICAI I ::F
7tructura datafca%endar are trei e%e!ente de tip intre,,caracter )i intre,/
Dataf nasterii )i datafinscrierii sunt "aria*i%e de tip structur& ca structura
datafca%endar/
Dac& se dore)te rea%i.area a dou& "aria*i%e de tip structur& ase!&n&toare cu
structura datafca%endar dar nu se dore)te tipu% datafca%endar se -o%ose)te -or!a B
str/#t
+
nt 5 7
#1ar ./na ?1<@L
nt an 7
,
'ataAnaster, 'ataAns#rer 7
Eodul &
str/#t n/(e n/(e 'e str/#t/ra 7
nu!e este o structur& dec%arat& anterior prin !odu% :, iar nu!e de structura repre.int&
o nou& structur& ase!&n&toare cu structura nu!e/
De-inirea unei structuri noi cu nu!e%e co!p%e/
str/#t #o(p.ex
+
".oat rea. 7
".oat (a4nar 7
g L
De-inirea a 1 "aria*i%e ,.,P, 4structuri5 de tipu% co!p%e/
str/#t #o(p.ex x,G,5 7
de-inirea a dou& ta*%ouri a 9:$;, *9E;9E;, de tipu% co!p%e/
str/#t #o(p.ex a?10@,b ?B@?B@ 7
n cadru% unei structuri %a dec%ararea e%e!ente%or ce -or!ea.& structura se poate -o%osi
)i e%e!ent de tip structur&, cu o*%i,ati"itatea ca structura -o%osit& %a dec%ararea
e%e!entu%ui s& -ie de+a rea%i.at&/
7e dec%ar& structura datefpersona%e care con2ine ca e%e!ent )i structura datafca%endar/
str/#t 'ataApersona.
+
#1ar n/(e 7
#1ar pren/(e 7
str/#t 'ataA#a.en'ar
'ataAnaster 7
#1ar a'resa 7
#1ar .o#a.tatea 7
, 7
Ast-e% e%e!entu% datafnasteri este %a r3ndu% s&u o structur& de-init& anterior cu 1
e%e!ente/
LIMBAJUL C TEORIE I APLICAI I ::#
3.11.2. Accesul la elementele unei structuri.
Re-erirea %a co!ponente%e unei structurise -ace uti%i.3nd dou& in-or!a2ii, una este
nu!e%e structurii )i a dou& este nu!e%e co!ponentei structurii/ Pentru aceasta se
-o%ose)te construc2ia de -or!a B
Vu!e structur&/nu!e%e e%e!entu%ui structurii
7eparatoru% 6ntre nu!e%e structuri )i nu!e%e e%e!entu%ui este caracteru% punct /
Eemplu.
7e consider& structura co!p%e cu E e%e!ente co!ponente )i se dore)te atri*uirea
e%e!entu%ui rea%e a "a%ori E/: iar a e%e!entu%ui i!a,inar "a%oarea 1/::/

str/#t #o(p.ex
+
".oat rea. 7
".oat (a4nar 7
,
x,a?:@ 7
atri*uirea "a%ori%or pentru se -ace ast-e% B
x0rea.=B017
x0(a4nar=:0117
iar pentru e%e!ente%e "aria*i%ei a 9E; se -ace ast-e% B
a?B@0rea.=B017
a?B@0(a4nar=:0117
Dac& 6n cadru% structurii sunt e%e!ente ce %a r3ndu% %or sunt structur&, atri*uirea de
"a%ori %a e%e!ente se rea%i.ea.& prin indicarea succesi"& a e%e!ente%or ast-e% B
str/#t 'ataA#a.en'ar
+
nt 5 7
#1ar ./na ?1<@L
nt an 7
,7
str/#t 'ataApersona.
+
#1ar n/(e 7
#1ar pren/(e 7
str/#t 'ataA#a.en'ar
'ataAnaster 7
#1ar a'resa 7
#1ar .o#a.tatea 7
,an4a6at 7
"aria*i%a an,a+at este o structur& de tip datafpersona% ce inc%ude e%e!entu%
datafnasteri ca ostructur& de tipu% datafca%endar/
Pentru a ape%a e%e!entu% .i din cadru% "aria*i%ei an,a+at se "a scrie B
LIMBAJUL C TEORIE I APLICAI I ::G
an4a6at0'ataAnaster05 =1B 7
Pentru a ape%a e%e!entu% nu!e din "aria*i%a an,a+at se "a scrie B
str#pG )an4a6at0n/(e, HPopes#/I* 7
sau -o%osind -unc2ia ,ets 45 ast-e% B
prnt" )Hntro'/#et n/(e.e I*7
4ets )an4a6at0n/(e* 7
se tastea.& nu!e%e Popescu /
Pentru a ape%a e%e!entu% an din su*structura datafca%endar a "aria*i%ei an,a+at se
"a scrie B
an4a6at0'ataAnaster0an =1Q;Q 7
Dac& se -o%ose)te tastatura pentru a introduce date%e se scrie B
prnt" )Hntro'/#et 'ata naster I*7
4ets )b*7
an4a6at0'ataAnaster0an= ato )b*7 se "a tasta :9F9
Pentru a a-i)a "a%ori%e e%e!ente%or unei structuri, se "a -o%osi adresarea nu!e%ui de
structur& c3t )i nu!e%e e%e!entu%ui ast-e% B
Prnt" )Han/. naster ==' 8nI,an4a6at0'ataAnaster0n/(e*7
Prnt" )H./na ==s 8nI,an4a6at0'ataAnaster0./na*7
Prnt" )H5/a ==' 8nI,an4a6at0'ataAnaster05*7
Pentru a ape%a e%e!entu% %una din sustructura datafca%endar a "aria*i%ei an,a+at se
"a scrie B
str#pG )an4a6at0'ataAnaster0./na, H9ANUAS9EI* 7
Eemplu.
7& se rea%i.e.e o structur& cu denu!irea punct ce con2ine e%e!ente%e B
Inu!&r %inie intre,
PInu!&r co%oan& intre,
cIcu%oarea %iniei caracter
)i "aria*i%e%e a, *9F; de tip structura punct/
7& se citeasc& de %a tastatur& "a%ori pentru e%e!ente%e dorite )i s& se a-i)e.e
"a%ori%e scrise 6n aceste e%e!ente/
-n#./'e <st'o012
-n#./'e <#ono012
LIMBAJUL C TEORIE I APLICAI I ::=
-n#./'e <st'.b012
&o' (an )*
+
str/#t p/n#t dec%ararea structurii punct
+
nt x7 dec%ararea e%e!entu%ui a% structurii punct )i
tipu% e%e!entu%ui intre,
nt G 7 dec%ararea e%e!entu%ui P a% structurii punct )i
tipu% e%e!entu%ui intre,
#1ar # ?10@ 7 dec%ararea e%e!entu%ui c a% structurii punct )i
tipu% e%e!entu%ui )ir de caractere
,a,b?;@ 7 dec%ararea "aria*i%e%or a )i *9F; de tip structur&
punct
p/ts )3'at n/(ar/. .ne s n/(ar/. #o.oane3*7
s#an" )3=',='3,Ja0x,Ja0G*7 citirea a dou& date de tip intre, )i atri*uirea
acestor date e%e!ente%or )i P a%e "aria*i%ei a de
tip structur& punct
p/ts )3'at #/.oarea .ne3*7
s#an" )3=s3, a0#*7 citirea unui )ir de caractere )i atri*uirea acestui )ir
e%e!entu%ui c a% "aria*i%ei a de tip structur&
s#an" )3=s3,b?1@0#*7 citirea unui )ir de caractere )i atri*uirea acestui )ir
e%e!entu%ui c a% "aria*i%ei ta*%ou *9:; de tip
structur&
prnt" )3'ate.e #tte s/nt x==' G==' 8n3,a0x,a0G*7 a-i)area "a%ori%or
e%e!ente%or )i P a%e "aria*i%ei a de tip structura
prnt" )3#/.oarea este ==s 8n3,a0#*7 a-i)area "a%ori%or e%e!entu%ui c a%
"aria*i%ei a de tip structura
prnt" )3#/.oarea ./ b?1@==s3,b?1@0#*7 a-i)area "a%ori%or e%e!entu%ui c
a% "aria*i%ei ta*%ou *9:; de tip structura
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
Trans-erarea unei structuri 6n cadru% unei -unc2iise -ace prin pointeri spre structur&/
Dac& se consider& o -unc2ie -: care pre%ucrea.& structura punct, -unc2ia "a a"ea
antetu% B
Tip -: 4struct punct Qp5
Dec%ara2ia %ui p speci-ic& c& e% are ca "a%oare adresa de 6nceput a .onei de !e!orie
unde este tipu% punct/
Pentru a accesa e%e!ente%e din structur&, se "a -o%osi B
4Qp5/L
LIMBAJUL C TEORIE I APLICAI I ::>
4Qp5/PL
aceast& -or!& se poate si!p%i-ica prin 6n%ocuirea %ui 4Qp5/ cu p0M
p0M L
p0MP L
operatoru% s&,eat& 0M se consider& de prioritate !ai!& prin asociere de %a
st3n,a %a dreapta/
3.11.3. Asignri de nume pentru tipuri de date.
Tipuri%e prede-inite de %i!*a+ 4int, c'ar, -%oat, dou*%e, %on,]5 se indenti-ic& prin
cu"3ntu% c'eie asociat %or/ n ca.u% c& uti%i.atoru% dore)te s& rea%i.e.e tipuri de date
propri, "a -o%osi o construc2ie de structur& ast-e% B
struct nu!e h
dec%ara2iiL
g L
sau se poate -o%osi -or!a B
tPpede- tip nu!e L
tPpede- Icu"3nt c'eie
tip Itipu% datei prede-init sau tipu% creat de uti%i.ator anterior
nu!e I nu!e%e ce se atri*uie tipu%ui de-init de tip/
Dup& dec%ararea nu!e%ui unui tip se poate -o%osi pentru a dec%ara date de tipu% creat de
uti%i.ator ast-e% B
tPpde- -%oat rea% L
ast-e% cu"3ntu% rea% se poate uti%i.a pentru a de-ini date de tip -%oat B
rea% L
indentic cu
-%oat L
tPpede- struct punct h
int L
int PL
g PT L
s0a de-init un tip cu nu!e%e PT care are caracteristici%e unei structuri punct/
Dec%ara2ia de -or!a B
PT puncte, puncte:L
Indic& c& date%e puncte )i puncte: sunt date de tip structur& ase!enea cu structura
punct/
tPpede- struct h
-%oat rea%L
-%oat i!a,inar L
g co!p%e L
Uti%i.area dec%ara2ii%or de !ai +os B
LIMBAJUL C TEORIE I APLICAI I ::9
co!p%e a,*,cL
Are ca e-ect dec%ararea a 1 "aria*i%e 4a, *, c5 ca nu!ere co!p%ee/
Eemplu.
7& se scrie o -unc2ie care deter!in& !odu%u% unui nu!&r co!p%e )i s& se ape%e.e
-unc2ia 6ntr0un pro,ra! ce cite)te o "a%oare de tip nu!&r co!p%e/
Vu!&ru% co!p%e este de -or!a B
JPi
iar !odu%u% este B
sSrt 4/JP/P5
Ounc2ia !odu%fco!p%e este rea%i.at& 6n -i)ieru% erton:1/c/
Oi)ieru% erton:1/c
".oat (o'/.A#o(p.ex )#o(p.ex *#*
+
p/ts )3ret/rnea5a (o'/./. n/(ar/./ #o(p.ex3*7
ret/rn sZrt )#-2x*#-2x!#-2G*#-2G* 7
,
Pro,ra!u% principa%/
-n#./'e <st'o012
-n#./'e <(at1012
-n#./'e <#ono012
-n#./'e <st'.b012
tGpe'e" str/#t +
".oat x7
".oat G7
, #o(p.ex7
-n#./'e 3erton1:0#3
&o' (an )*
+
#o(p.ex a 7
p/ts )3'at partea rea.a a n/(ar/./ #o(p.ex3*7
s#an" )3="3,Ja0x*7
p/ts )3'at partea (a4nara a n/(ar/./ #o(p.ex3*7
s#an" )3="3,Ja0G*7
prnt" )3a!a= =0B"!=0B"*8n3,a0x,a0G*7
prnt" )3(o'/./. =="8n3,(o'/.A#o(p.ex )Ja**7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
}
3.12. 4relucrarea "irurilor de caractere.
n practica de pro,ra!are sunt dese situa2i c3nd este necesar s& se e-ectue.e opera2ii cu
)iruri de caractere ast-e% B
LIMBAJUL C TEORIE I APLICAI I :E$
Citirea unui )ir de caractere/
Co!pararea a dou& )iruri de caractere/
Deter!inarea %un,i!ii )iru%ui de caractere/
Concatenarea a dou& )iruri de caractere/
Copierea unui )ir de caractere/
Opera2ii%e enu!erate !ai sus sunt necesare 6n rea%i.area de -i)iere de co!and&, pentru
rea%i.area de trans-er de date de pe disc'et& pe ca%cu%ator sau in"ers, su* contro%u% unor
para!etri i!pu)i de ce% care %i"rea.& -i)iere%e cu! ar -i B
Indicarea )i a%e,erea discu%ui pe care se "a copia -i)iere%e/
Indicarea c&i de directoare, su*directoare/
Indicarea nu!e%ui -i)ieru%ui ce se copia.& sau !ut&/
Ounc2ii%e pentru pre%ucrarea )iruri%or de caractere au prototipu% 6n -i)ieru% strin,/',
con2inut 6n *i*%ioteca standard/
iruri%e de caractere sunt p&strate 6n !e!orie su* -or!a unui ta*%ou cu o sin,ur&
di!ensiune de tip c'ar, iar -iecare caracter a% )iru%ui este p&strat pe un octet 6n codu%
A7CII/
La ter!inarea )iru%ui de caractere se po.i2ionea.& caracteru% VUL, care nu este
considerat ca )i caracter %a deter!inarea %un,i!ii )iru%ui de caractere/ Pre.en2a acestui
caracter este necesar& pentru a indica ter!inarea )iru%ui de caractere/
Opera2ii%e asupra )iru%ui de caractere se rea%i.ea.& prin uti%i.area nu!e%ui ta*%ou%ui 6n
care se p&strea.& )iru% de caractere, ast-e% pri!u% ter!en a% ta*%ou%ui p&strea.& "a%oarea
codu%ui pri!u%ui caracter, a% doi%e0a ter!en a% ta*%ou%ui p&strea.& "a%oarea codu%ui
ce%ui dea% doi%e0a caracter )i a)a !ai departe/
70& consider&! c& 6n ta*%ou% sir: se "a p&stra )iru% de caractere TE7T PEVTRU
7IRURI /
Y1ar sr1 ?B0@ =I TEST PENTSU S9SUS9 H 7
Ast-e% sir: 9$; "a con2ine adresa caracteru%ui T/
Ast-e% sir: 9:; "a con2ine adresa caracteru%ui E/
Ast-e% sir: 9$; "a con2ine adresa caracteru%ui 7/
Ast-e% sir: 9$; "a con2ine adresa caracteru%ui T/
Ast-e% sir: 9$; "a con2ine adresa caracteru%ui spa2iu/
Etc/
Ast-e% sir: 9:>; "a con2ine adresa u%ti!u%ui caracter a% )iru%ui I/
Pentru a se deose*i !ai u)or -unc2ii%e ce pre%ucrea.& )iruri de caractere, s0a pus %a
-iecare -unc2ie pre-iu% str de %a cu"3ntu% strin, din en,%e.&/
3.12.1. &uncia strlen6lungimea "irului de caractere.
Ounc2ia str%en deter!in& %un,i!ea )iru%ui de caractere, prin nu!&rarea caractere%or care
-or!ea.& )iru%/ La nu!&rarea nu!&ru%ui de caractere a )iru%ui nu se adau,& caracteru%
de s-3r)it VUL a )iru%ui, ro%u% %ui este de a opri nu!&rarea caractere%or p3n& %a e%/
Prototipu% -unc2iei str%en este B
/ns4ne' str.en )#onst #1ar *sr1*7
LIMBAJUL C TEORIE I APLICAI I :E:
Ounc2ia returnea.& o "a%oare po.iti"& 6ntrea,& ce repre.int& nu!&ru% de
caractere din siru% de caractere sir:/
Para!etru% -or!a% a% -unc2iei str%en este un pointer spre o dat& constant&/
#1ar sr1 ?<0@7
nt ./n 7
s#an" )H=sI,sr1*7
./n= str.en )sr1*7
70au dec%arat "aria*i%a sir: de tip caracter 6n care se "a p&stra )iru% de caractere citite )i
"aria*i%a %un %a care se "a atri*ui "a%oarea returnat& de -unc2ia str%en/
Dac& se dore)te deter!inarea %un,i!ii unui )ir de caractere ape%at c'iar de -unc2ia
str%en, sec"en2a de pro,ra! este B
nt ./n 7
./n= str.en )Htest pentr/ sr/rI*7
ast-e% "a%oarea %ui %un este c'iar nu!&ru% de caractere a% )iru%ui test pentr/
sr/r , 6n ca.u% de -a2& "a%oarea %ui %un este :>, )i spa2ii%e %i*ere din )iru% de caractere
este nu!&rat/
prnt" )H./n4(ea sr/./ este =' I, str.en )Htest pentr/ srI**7
La ape%area -unc2iei print- se "a a-i)a "a%oarea :# ce repre.int& nu!&ru% de caractere
din )iru% test pentr/ sr /
3.12.2. &uncia strcp+6 copierea unui "ir de caractere.
Ounc2ia strcpP per!ite copierea unui )ir de caractere de %a o adres& de !e!orie %a a%t&
adres& de !e!orie/
Prototipu% -unc2iei strcpP este B
Y1ar * str#pG )#1ar*.a 'estna^a, #onst #1ar*'e .a s/rsa*7
Ounc2ia strcpP copia.& )iru% de caractere, inc%usi" ter!inatoru% )iru%ui VUL de %a sursa
%a destina2ia indicat& prin para!etri -or!a%i ai -unc2iei/ Mari!ea .onei 6n care se -ace
copierea 4destina2ia5 tre*uie s& -ie e,a%& sau !ai !are dec3t %un,i!ea )iru%ui J:, 6n ca.
contrar caractere%e surp%us pot -i !odi-icate necontro%at de pro,ra!/ 7e reco!and& ca
6naintea ape%&rii -unc2iei strcpP s& se deter!ine %un,i!ea )iru%ui ce se copia.& )i s& se
co!pare aceast& %un,i!e J: cu !&ri!ea .onei destina2ie/
Ounc2ia strcpP returnea.& adresa de 6nceput a .onei 6n care s0 a copiat )iru%, pointer spre
destina2ie c'arQ/
Ounc2ia strcpP !odi-ic& con2inutu% destina2iei dar nu poate !odi-ica con2inutu% sursei
datorit& !odi-icatoru%ui const pentru pointeru% surs&/
Ee!p%e de -o%osire B
#1ar srs/rsa ?:0@ ,sr'estnate ?:0@ 7
LIMBAJUL C TEORIE I APLICAI I :EE
s#an" )H=sI,srs/rsa*7
str#pG )sr'estnata, srs/rsa*7
iru% de caractere citit cu -unc2ia s#an" )H=sI,srs/rsa*7 este a%ocat 6n ta*%ou%
sirsura, iar prin ape%u% -unc2iei str#pG )iru% de caractere din ta*%ou% sirsursa este copiat
6n ta*%ou% sirdestinatie/
#1ar srs/rsa ?:0@ ,sr'estnate ?:0@ 7
str#pG )sr'estnata,In#ep/t 'e 'r/(I*7
Tetu% n#ep/t 'e 'r/( este copiat 6n ta*%ou% sirdestinatie/
#1ar srs/rsa ?:0@ ,sr'estnate ?:0@ 7
#1ar *s/rs = Ho no/a &aranta I7
#1ar *t17
t1=str#pG )sr'estnata,s/rs*7
iru% o no/a &aranta p&strat 6n .ona spe care pointea.& *s/rs se copia.& 6n .ona
spre care pointea.& sr'estnata )i apoi i se atri*uie %ui t: "a%oarea adresei ta*%ou%ui
sr'estnata0
3.12.3. &uncia strncp+6 copierea a cel mult n caractere ale unui "ir de
caractere.
Ounc2ia strncpP per!ite copierea a ce% !u%t n caractere a%e )iru%ui surs& 6n )iru%
destina2ie/
Dac& "a%oarea %ui n este !ai !are dec3t %un,i!ea )iru%ui surs&, atunci toate caractere%e
)iru%ui surs& sunt trans-erate 6n )iru% destina2ie/
Dac& "a%oarea %ui n este !ai !ic dec3t %un,i!ea )iru%ui surs&, atunci se "a trans-era
nu!ai n caractere din )iru% surs& 6n )iru% destina2ie/
Prototipu% -unc2iei este B
#1ar * strn#pG )#1ar * 'estnate, #onst #1ar* s/rsa , /ns4ne' n*7
Ee!p%u de ape%are a -unc2iei strncpP B
#1ar srs/rsa ?:0@ ,sr'estnate ?10@ 7
#1ar *srs/rsa = Ho no/a &aranta I7
strn#pG )sr'estnata,srs/rsa,L*7
Dup& eecutarea %inii%or de cod de !ai sus, din )iru% de caractere o no/a &aranta se
"or copia 6n ta*%ou% sr'estnate nu!ai pri!e%e G caractere
o no/a /
3.12.%. &uncia strcat6 concatenarea "irurilor de caractere.
Ounc2ia strcat per!ite concatenarea 4ad&u,area5 unui )ir de caractere, nu!it surs&, %a
s-3r)itu% a%tui )ir de caractere nu!it destina2ie/
LIMBAJUL C TEORIE I APLICAI I :E1
Lun,i!ea ta*%ou%ui destina2ie tre*uie s& -ie !ai !are sau e,a% cu %un,i!ea )iru%ui de
caractere eistente 6n )iru% destina2ie 6naintea ape%&ri -unc)iei strcat J %un,i!ea )iru%ui
sursa J: pentru caracteru% de ter!inare VUL a nou%ui )ir/
Ounc2ia strcat returnea.& "a%oarea )iru%ui destina2ie/
Ounc2ia strcat are prototipu% B
#1ar * str#at )#1ar * 'estnate, #onst #1ar* s/rsa*7
Ee!p%u de -o%osire B
#1ar srs/rsa ?:0@ ,sr'estnate ?<0@ 7
s#an" )H=sI,srs/rsa*7
#1ar *sr'estnate = Hn#ep/t 'e 'r/( I7
str#at )sr'estnata, srs/rsa*7
Dac& %a ape%area -unc2iei de citire a unui )ir de caractere se tastea.& pentr/
#on#atenare )i dac& se "a a-i)a con2inutu% ta*%ou%ui sirdestinatie, "a re.u%ta )iru% de
caractere n#ep/t 'e 'r/( pentr/ #on#atenare
3.12.'. &uncia strncat6 concatenarea "irurilor de caractere cu
lungimea impus.
Ounc2ia strncat per!ite concatenarea a dou& )iruri de caractere cu o*ser"a2ia c& a%
doi%ea )ir ce se adau,& este %i!itat de n caractere indicate de para!etru% n a% -unc2iei/
O*ser"a2ii%e indicate %a -unc2ia strcat sunt reco!andate )i %a -unc2ia strncat/
Prototipu% -unc2iei strncat este B
#1ar * strn#at )#1ar * 'estnate, #onst #1ar* s/rsa, /ns4ne' n*7
Ee!p%u de -o%osire B
#1ar srs/rsa ?:0@ ,sr'estnate ?<0@ 7
s#an" )H=sI,srs/rsa*7
#1ar *sr'estnate = Hn#ep/t 'e 'r/( I7
strn#at )sr'estnata, srs/rsa,L*7
prnt" )H=sI, sr'estnate*7
Dac& %a ape%area -unc2iei de citire a unui )ir de caractere se tastea.& pentr/
#on#atenare se "a a-i)a con2inutu% ta*%ou%ui sirdestinatie, "a re.u%ta )iru% de caractere
n#ep/t 'e 'r/( pentr/
iru% de caractere #on#atenare nu !ai este ad&u,at %a )iru% sirdestina2ie/
3.12... &uncia strcmp6 compararea a dou "iruri de caractere.
Ounc2ia strc!p co!par& dou& )iruri de caractere care au aceia) %un,i!e, )i returnea.& o
"a%oare intrea,& -unc2ie de re.u%tatu% co!par&ri ast-e% B
Returnea.& "a%oarea 0: dac& siru%: N siru%E/
Returnea.& "a%oarea $ dac& siru%: Isiru%E/
Returnea.& "a%oarea : dac& siru%: M siru%E
LIMBAJUL C TEORIE I APLICAI I :EF
iru% : se consider& !ai !ic dec3t )iru% E dac& eist& !&car un ter!en
sir:9i;NsirE9i; indi-erent de "a%oarea %ui i iar restu%
ter!eni%or sunt e,a%i /
iru% : se consider& e,a% dac& pentru orice "a%oare a %ui i este "a%a*i%& re%a2ia B
sir:9i;IsirE9i; iar restu% ter!eni%or sunt e,a%i/
iru% : se consider& !ai !are dec3t )iru% E dac& eist& !&car un ter!en pentru
care re%a2ia
sir:9i;NsirE9i; este "a%a*i%& indi-erent de "a%oarea %ui i iar restu%
ter!eni%or sunt e,a%i/
Prototipu% -unc2iei strc!p are prototipu% B
nt str#(p )#onst #1ar * sr1, #onst #1ar* srB*7
Ee!p%u de ape%are B
#1ar *sr1 = Hn#ep/t 'e 'r/( I7
#1ar *srB = Hn#ep/t 'e 'r/( I7
nt 7
=str#(p )sr1, srB*7
" )==0*
prnt")Hsr/r e4a.eI*7
" )<0*
prnt" )Hsr/.1 (a (# 'e#t sr/.BI*7
e.se
prnt" )Hsr/.1 (a (are 'e#t sr/.BI*
Dac& se ru%ea.& aceast& sec"en2& de cod, se "a a-i)a siruri e,a%e/
Dac& pentru )iru% doi se introduce n#ep/t 'e 'r/X , se "a a-i)a sr/.1 (a (are
'e#t sr/.B deoarece %itera ! are o "a%oare !ai !are dec3t %itera M/
Dac& pentru )iru%: se introduce n#ep/t De 'r/( iar pentru )iru%E se introduce
n#ep/t 'e 'r/( , se "a a-i)a sr/.1 (a (# 'e#t sr/.B /
3.12./. &uncia stricmp6 compararea a dou "iruri fr a se face
distincia ntre litere mari sau mici.
Ounc2ia stric!p %ucrea.& ca )i -unc2ia strc!p cu deose*irea c& nu -ace distinc2ie 6ntre
caractere%e !a+uscu%e )i !inuscu%e/
Prototipu% -unc2iei este B
nt str#(p )#onst #1ar * sr1, #onst #1ar* srB*7
Dac& ce%e dou& )iruri con2in tetu% B
7ir: !ic
7irE MIC
#1ar *sr1 = H(# I7
#1ar *srB = HX9Y I7
nt 7
=str#(p )sr1, srB*7
LIMBAJUL C TEORIE I APLICAI I :E#
" )==0*
prnt")Hsr/r e4a.eI*7
" )<0*
prnt" )Hsr/.1 (a (# 'e#t sr/.BI*7
e.se
prnt" )Hsr/.1 (a (are 'e#t sr/.BI*
La ape%area -unc2iei stric!p asupra ce%or dou& )iruri "a%oarea returnat& este $, )iruri
e,a%e/
3.12.1. &uncia strincmp.
Ounc2ia strinc!p co!par& dou& )iruri de caractere, de %a pri!u% caracter p3n& %a ce%
!u%t n caractere )i se i,nor& di-eren2a dintre caractere%e !a+uscu%e )i caractere%e
!inuscu%e/
Prototipu% -unc2iei este B
nt strn#(p )#onst #1ar * sr1, #onst #1ar* srB, /s4ne' n*7
Dac& ce%e dou& )iruri con2in tetu% B
7ir: !icut
7irE MIC
#1ar *sr1 = H(#/t I7
#1ar *srB = HX9Y I7
nt 7
=str#n(p )sr1, srB,:*7
" )==0*
prnt")Hsr/r e4a.eI*7
" )<0*
prnt" )Hsr/.1 (a (# 'e#t sr/.BI*7
e.se
prnt" )Hsr/.1 (a (are 'e#t sr/.BI*
La ape%area -unc2iei stric!p asupra ce%or dou& )iruri "a%oarea returnat& este $, )iruri
e,a%e, datorit& -aptu%ui c& s0au co!parat nu!ai pri!e%e 1 caractere a%e )iruri%or/
Eemplu.
7& se citeasc& de %a tastatur& 1 )iruri de caractere, s& se co!pare %un,i!ea pri!e%or
dou& )iruri, s& se rea%i.e.e o -ra.& cu ce%e trei )iruri, s& se copie.e )iru% :6n )iru%E/
7& se a-i)e.e %a -iecare etap& e-ectu% opera2iei/
-n#./'e <st'o012
-n#./'e <#ono012
-n#./'e <strn4012
&o' (an )*
+
#1ar sr1?:0@, srB ?;0@, sr; ?:0@7dec%arare )iruri de tip caracter
#1ar sr: ?@=3 37 dec%ararea )iru%ui 1 ce con2ine sp2iu %i*er
nt ,67
p/ts )3Se #a.#/.ea5a ./n4(ea sr/r.or #tte 3*7
p/ts ) 3Dat sr/.13*7
LIMBAJUL C TEORIE I APLICAI I :EG
s#an")3=s3,sr1*7 citirea unui )ir de caractere -&r& spa2iu %i*er 6nte
caractere
p/ts )3'at sr/.B3*7
s#an" )3=s3,srB*7
p/ts )3'at sr/.;3*7
s#an" )3=s3,sr;*7
=str.en )sr1*7 deter!inarea %un,i!ii siru%ui 4nu!&ru% de
caractere5
6=str.en )srB*7
" )26*
p/ts )3sr/.1 (a ./n4 'e#t sr/.B3*7
e.se
" )==6*
p/ts )3sr/r #/ ./n4( e4a.e3*7
e.se
p/ts )3sr/.B (a ./n4 'e#t sr/.13*7
prnt" )3sr1 ==' #ara#tere 8t sr/.B==' #ara#tere 8n3,,6*7
str#at )sr1,sr:*7 concatenarea %a s-3r)itu% )iru%ui: a )iru%ui 1 pentru
a introduce spa2iu %i*er 6ntre cu"inte
str#at )sr1,srB*7 concatenarea %a s-3r)itu% nou%ui )ir: a )iru%uiE
prnt" )3=s8n3,sr1*7 a-i)area pri!ei -ra.e rea%i.at& din siru%: pau.& de
un caracter )i apoi )iru%E
str#at )sr1,sr:*7 concatenarea )ir1 %a nou% )ir:
str#at )sr1,sr;*7 concatenarea u%ti!u%ui )irF
prnt" )3=s8n3,sr1*7 a-i)area -ra.ei -or!at& din 1 cu"inte )i dou& spa2ii
6ntre cu"inte
str#pG )srB,sr;*7 copierea )iru%uiF 6n )iru%E
prnt" )3=s8n3,srB*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
Dac& %a ru%area pro,ra!u%ui se "a tasta pentru )iru%: ERTOV, pentru )iru%E E7TE, iar
pentru )iru%F 7PORTI<, 6n ur!a ru%&rii "or -i a-i)ate B
7iru%: !ai %un, decit siru%E
ERTOV E7TE
ERTOV E7TE 7PORTI<
7PORTI<
Apasa o tasta
3.13. 4relucrarea fi"ierelor.
Opera2ii%e de intrare, ie)ire asupra unui -i)ier se rea%i.ea.& prin inter!ediu%
-unc2ii%or din *i*%ioteca standard a %i!*a+u%ui C/ Opera2ii%e de intrareKie)ire se
rea%i.ea.& de %a tastatur&, !onitor dar sunt situa2ii !u%tip%e c3nd aceste opera2ii se
LIMBAJUL C TEORIE I APLICAI I :E=
e-ectuea.& dintr0un -i)ier/ Pre%ucrarea -i)iere%or se e-ectuea.& prin opera2ii
speci-ice cu! sunt B
Desc'iderea -i)ieru%ui
Citirea date%or din -i)ieru% desc'is
Actua%i.area -i)ieru%ui
Ad&u,area date%or 6n -i)ier
Po.i2ionarea 6n cadru% -i2ieru%ui, 6nc'iderea -i)ieru%ui
Crearea unui -i)ier
ter,erea unui -i)ier
Ounc2ii%e necesare oper&rii cu -i)iere au prototipu% 6n -i)ieru% st'o01/ Pre%ucrarea
-i)iere%or se poate -ace %a dou& ni"e%e B
Vi"e% in-erior ce ape%ea.& direct siste!u% de operare/
Vi"e%u% superior ce ape%ea.& structuri specia%e de tip OILE
3.13.1.1 7i#elul superior de prelucrare a fi"ierelor.
(e&c<iderea unui ?iier
Desc'iderea unui -i)ier se rea%i.ea.& prin -unc2ia "open ce returnea.& un pointer
spre tipu% >9EE, sau pointer nu% 6n ca.u% c& -i)ieru% indicat nu eist& sau nu poate
-i desc'is/ Prototipu% -unc2iei -open este B
>9EE "open )#onst #1ar #a.ea, #onst #1ar *(o'*7
unde #a.ea este pointeru% spre un )ir de caractere care indic& ca%ea spre -i)ieru% ce
se desc'ide,
(o' este pointeru% spre )iru% de caractere care indic& !odu% de pre%ucrare a
-i)ieru%ui ast-e% B
3r3 = desc'idere 6n citire
3W3 = desc'idere 6n scriere
3a3 = desc'idere pentru ad&u,are de 6nre,istr&ri 6n -i)ier
3r!3 = desc'idere pentru !odi-icare scriere,citire
3rb3 = desc'idere 6n citire *inar&
3Wb3 = scriere *inar&
3r!b3 = citire sau scriere *inar&/
Dac& -i)ieru% ce ur!ea.& a se desc'ide nu este, se "a ape%a op2iunea ( sau a care
"a crea acest -i)ier, dac& se desc'ide un -i)ier eistent prin op2iunea (, se "or
)ter,e toate date%e eistente din -i)ier consider3ndu0se 6n !odu% creare/ Dac& se
desc'ide cu op2iunea a un -i)ier eistent noi%e date "or -i ad&u,ate dup& u%ti!a
dat& din -i)ier/
@nc<iderea unui ?iier
nc'iderea unui -i)ier se rea%i.ea.& cu -unc2ia "#.ose a c&rui prototip este B
nt "#.ose )>9EE*p*:
unde p este pointeru% spre tipu% >9EE de-init prin -unc2ia "open/
Ounc2ia returnea.& o "a%oare de tip 6ntre, ast-e% B
$ %a 6nc'idere nor!a%&
LIMBAJUL C TEORIE I APLICAI I :E>
H: %a eroare
3.13.2. Intrri ie"iri cu format.
Ounc2ii%e -o%osite pentru citire sau scriere cu -or!at din -i)ier sunt B
"s#an" pentru citire din -i)ier/
"prnt" pentru scrierea cu -or!at 6n -i)ier/
Prototipu% -unc2iei "s#an" esteB
nt "s#an" )>9EE*p, #onst #1ar*"or(at00*7
unde p este pointer spre tipu% >9EE a c&rui "a%oare a -ost de-init& de ape%u% -unc2iei
de desc'idere a -i)ieru%ui "open,
#onst #1ar*"or(at00 sunt para!etrii ce indic& -or!ate%e de citire ca )i %a -unc2ia
s#an"/
Ounc2ia "s#an" returnea.& nu!&ru% c3!puri%or citite corect iar %a 6nt3%nirea
s-3r)itu%ui de -i)ier "a returna "a%oarea EO>/
Prototipu% -unc2iei "prnt" esteB
nt "prnt" )>9EE*p, #onst #1ar*"or(at00*7
unde p este pointer spre tipu% >9EE a c&rui "a%oare a -ost de-init& de ape%u% -unc2iei
de desc'idere a -i)ieru%ui "open,
#onst #1ar*"or(at00 sunt para!etrii ce indic& -or!ate%e de citire ca )i %a -unc2ia
prnt"/
Ounc2ia -print- returnea.& nu!&ru% caractere%or scrise 6n -i)ier 6n ca. de succes,
sau returnea.& "a%oarea H: 6n ca. de eroare/
3.13.3. 4o3iionarea n fi"ier.
Opera2ii%e de citire, scriere se e-ectuea.& sec"en2ia%, ast-e% %a -iecare ape% de citire
scriere se cite)te 6nre,istrarea curent&, respecti" se scrie o nou& 6nre,istrare %a
po.i2ia curent&/
n !a+oritatea ca.uri%or se dore)te o po.i2ionare 6n interioru% -i)ieru%ui, ast-e%
opera2ii%e de citire, scriere au %oc a%eator/
Pentru o po.i2ionare 6n -i)ier se -o%ose)te -unc2ia -seeZ cu prototipu%B
nt "seeV )>9EE*p, .on4 'ep.asare, nt or4ne*7
unde p pointer spre tipu% >9EE a c&rui "a%oare a -ost de-init& de ape%u% -unc2iei de
desc'idere a -i)ieru%ui "open,
'ep.asare este nu!&ru% de octe2i peste care se "a dep%asa capu% de citireKscriere,
or4ne indic& de unde se consider& c& este ori,inea dep%as&riiB
0 = dep%asarea se consider& de %a 6nceputu% -i)ieru%ui/
1 = dep%asarea se consider& de %a po.i2ia curent&/
B = 'ep%asarea se consider& de %a s-3r)itu% -i)ieru%ui/
Ounc2ia "seeV returnea.& "a%oarea $ %a o po.i2ionare corect& )i o "a%oare di-erit&
de $ 6n ca. de eroare/
LIMBAJUL C TEORIE I APLICAI I :E9
Eemplu
7& se scrie un pro,ra! C pentru scrierea 6ntr0un -i)ier a date%or citite de %a
tastatur&/ Date%e citite de %a tastatur& sunt scrise 6n -i)ieru% a"3nd nu!e%e costi:/c
sec"en2ia% 46nre,istrare dup& 6nre,istrare5 -o%osind un cic%u -or cu un nu!&r de #
pa)i/
"ezol#are
7tructura de tip >9EE pointea.& %a "., iar -unc2ia "open pointea.& %a ace%a) "./
Vu!e%e -i)ieru%ui c3t )i ca%ea %a -i)ier sunt de%i!itate de du*%u apostro-/ Modu% de
desc'idere a -i)ieru%ui este indicat prin caracteru% 3W3 4!od de scriere sec"en2ia%&5/
-n#./'e<st'o012
-n#./'e<#ono012
-n#./'e<o012
-n#./'e<"#nt.012
&o' (an )*
+
>9EE *"17 ". este pointeru% de tip structur& >9EE 4-i)ier5
nt a,b,#7
#1ar '?10@7
"1="open)3YOST910Y3,3W3*7 ape%area -unc2iei de desc'idere a -i)ieru%ui in
!od scriere
"or )a=17 a<=<7 a=a!1* cic%u% de citire de %a tastatur& )i scriere 6n -i)ier
+
s#an" )3=s3,J'*7 citirea unei date de tip )ir de caractere de %a
tastatur&
"prnt" )"1,3=s 8n3,'*7 scrierea cu -or!at a unei date in -i)ieru%
desc'is spe pointeru% ".
prnt" )3s-a s#rs =s3,'*7 a-i)area pe !onitor a datei citite )i scrise 6n
-i)ier
,
p/ts )3Apasa o tasta3*7
4et#1 )*7
"#.ose )".*7 6nc'iderea -i)ieru%ui desc'is de "open ce
pointea.& %a ".
,
Eemplu
7& se scrie un pro,ra! C care adau,& # )iruri de caractere, citite de %a tastatur& 6n
-i)ieru% creat 6n ee!p%u% precedent/
"ezol#are
n ca.u% 6n care se dore)te ad&u,area de date 6ntr0un -i)ier eistent, %a ape%area
-unc2iei "open se "a a%e,e op2iunea a 4append5/
-n#./'e<st'o012
-n#./'e<#ono012
-n#./'e<o012
-n#./'e<"#nt.012
&o' (an )*
+
>9EE *"17 ". este pointeru% de tip strutur& >9EE 4-i)ier5
LIMBAJUL C TEORIE I APLICAI I :1$
nt a,b,#7
#1ar '?10@7
"1="open)3YOST910Y3,3a3*7 desc'iderea -i)ieru%ui eistent costi:/c in !odu%
ad&u,are
/* se s#re n a'a/4are n "ser/. #ost10# */
"or )a=17 a<=<7 a=a!1*
+
s#an" )3=s3,J'*7 se citesc # )iruri de caractere de %a tastatur&
"prnt" )"1,3=s 8n3,'*7
prnt" )3s-a s#rs =s3,'*7
,
p/ts )3Apasa3*7
4et#1 )*7
"#.ose )".*7 6nc'iderea -i)ieru%ui desc'is de "open ce
pointea.& %a ".
,
Eemplu
7& se scrie pro,ra!u% C care cite)te un nu!&r de n date de tip nu!&r dintr0un
-i)ier eistent/
"ezol#are
Crea2i -i)ieru% #tre10'at 6n editoru% DO7/ Oi)ieru% #tre10'at are or,ani.ate
date%e separate -ie prin spa2iu, -ie dispuse pe c3te
un r3nd -iecare/ Con2inutu% -i)ieru%ui #tre10'at
este
< 1B0; :; <L trei date dispuse pe aceea)i %inie )i separate prin spa2iu
N8 -iecare dat& dispus& pe un r3nd/
B: -iecare dat& dispus& pe un r3nd/
1B -iecare dat& dispus& pe un r3nd/
;<
<L
Pro,ra!u% surs& C este pre.entat 6n continuare
-n#./'e<st'o012
-n#./'e<#ono012
-n#./'e<o012
-n#./'e<"#nt.012
-n#./'e <(at1012
&o' (an )*
+
>9EE * "17
nt ,6,(,n7
".oat a?100@,b?100@,#,x#,G#,nr,beta,xb,Gb7
"1="open)3Y9T9SE10DAT3,3r3*7 -unc2ia "open desc'ide -i)ieru% #tre10'at
6n !od citire
p/ts )3DAT9 NUXASUE DE PUNYTE XASUSATE3*7
s#an")3='3,Jn*7
#=1;10;B1:<7
xb=1007
Gb=07
"or )=17 <=n7 =!1*
+
LIMBAJUL C TEORIE I APLICAI I :1:
"s#an")"1,3="3,Jnr*7 -unc2ia "s#an" -ace pri!a citire din
-i)ieru% desc'is
prnt")3=0B" 3,nr*7
"s#an")"1,3="3,Ja?@*7 se cite)te a doua dat& din -i)ier
"s#an")"1,3="3,Jb?@*7 se cite)te a treia dat& din -i)ier
prnt")3="8t="3,a?@,b?@*7 se a-i)ea.& pe !onitor date%e citite
beta=)a?@*a?@!#*#-b?@*b?@*/)B*a?@*#*7
x#=xb!a?@*00N0N10L87
G#=Gb!a?@*00N0N10L87
prnt" )3nr=="8t3,nr*7 se a-i)ea.& pri!a dat& citit& din -i)ier
prnt" )3x#=="8tG#=="8n3,x#,G#*7 se a-i)ea.& "a%ori%e ca%cu%ate x#, G#
,
p/ts )3Apasa o tasta pentr/ ter(nare3*7
"#.ose )"1*7 se 6nc'ide -i)ieru% desc'is de "open
4et#1 )*7
,
Aro-leme propuse
:/ 7& se citeasc& de %a tastatur& !&ri!ea unui "ector )i ter!enii "ectoru%ui, iar
aceste "a%ori s& -ie scrise 6ntr0un -i)ier de date/ 7& se citeasc& -i)ieru% de date )i
apoi s& se eecute ur!&toare%e opera2ii asupra date%or B
a5 a-i)area !&ri!ii "ectoru%ui
*5 a-i)area ter!eni%or "ectoru%ui
c5 su!a ter!eni%or "ectoru%ui
d5 !odi-icarea ter!enu%ui n a% "ectoru%ui cu o nou& "a%oare citit& de %a tastatur&
e5 a-i)area "ectoru%ui !odi-icat/
E/ 7& se citeasc& de %a tastatur& !&ri!ea unei !atrici p&tratice nn, )i ter!enii
!atricei/
a5 s& se scrie 6n -i)ieru% !at:/dat !&ri!ea !atricei )i ter!enii !atricii
*5 s& se a-i)e.e "a%ori%e scrise 6n -i)ier
c5 s& se adune to2i ter!enii !atricii scrise 6n -i)ier
d5 s& se cree.e un nou -i)ier "ect:/dat, care s& con2in& ter!enii de pe pri!a %inie
a !atricii
e5 s& se adune ter!enii "ectoru%ui din -i)ieru% "ect:/dat/
1/ 7& se scrie 6ntr0un -i)ier presiune/dat "a%ori%e citite a%e presiunii apei )i s& se
a-i)e.e aceste "a%ori cu citirea din -i)ier/
3.1%. 4reprocesorul .
Prerocesoru% C eecut& su*stitu2ii de tete, rea%i.3nd B
Inc%udere de -i)iere surs&
De-ini2ii )i ape%uri de !acrouri
Co!pi%area condi2ionat&/
Preprocesoru% recunoa)te construc2ii care 6ncep cu caracteru% \ nu!ite directi"e/
Directi"e%e recunoscute de preprocesoru% C sunt B
\i-
LIMBAJUL C TEORIE I APLICAI I :1E
\i-de-
\i-nde-
\e%se
\e%i-
\endi-
\inc%ude
\de-ine
\unde-
\%ine
\error
\pra,!a
Oiecare directi"& tre*uie s& ocupe un sin,ur r3nd 6n pro,ra! ast-e% B
\inc%ude N !at'/'M \inc%ude Nconio/'M este ,re)it/
Corect se scriu pe -iecare r3nd
\inc%ude N !at'/'M
\inc%ude Nconio/'M
5irecti#a 8include.
Aceast& directi"& indic& co!pi%atoru%ui c& a-ar& de -i)ieru% surs& tre*uie s& !ai citeasc&
)i -i)iere%e dec%arate dup& aceast& directi"&/
Vu!e%e -i)ieru%ui ce se inc%ude se "a de%i!ita de apostroa-e du*%e @nu!e -i)ier @ sau
parante.e un,'iu%are N nu!e -i)ier M/
De%i!itarea cu du*%u apostroa-e sau parante.e un,'iu%are indic& !odu% de c&utare a
-i)ieru%ui inc%us ast-e% B
Inc%uderea 6ntre N M indic& c&utarea -i)ieru%ui 6n directoru% IVCLUDE din
pac'etu% de directoare )i -i)iere a%e %i!*a+u%ui C/
Inc%uderea 6ntre @ @ indic& c&utarea -i)ieru%ui 6n directoru% de %ucru sau 6n a%t
director %a care se indic& ca%ea de c&utare/
Modu% de 6ncadrare 6ntre @ @ este -o%osit pentru a inc%ude -i)iere%e create de uti%i.ator
ast-e% B
-n#./'e H erton10#I -i)ieru% erton:/c este 6n directoru% de %ucru/
-n#./'e H #:8te(p#8s/rsa18ertonB0# H -i)ieru% ertonE/c este situat 6n
directoru% sursa: de pe ca%ea cBUte!pc /
directi#a 8define .
directi"a \de-ine de-ine)te un indenti-icator prin n/(e )i un Fr 'e #ara#tere care
"or 6n%ocui indenti-icatoru% %a apari2ia acestuia 6n cadru% pro,ra!u%ui/ 7tandardu%
AV7II C nu!e)te indenti-icatoru% n/(e ca (a#ro#o(an'_/
-'e"ne n/(e Fr 'e #ara#tere
LIMBAJUL C TEORIE I APLICAI I :11
-'e"ne p :01;1<L
%a 6nt3%nirea nu!e%ui p 6n cadru% pro,ra!u%uisurs& se "a 6n%ocui acest nu!e cu
"a%oarea 1/:F:#G/
-'e"ne XAK 100
CC
".oat & ?XAK@ 7
CC
Vu!e%e XAK "a -i 6n%ocuit 6n pro,ra! cu )iru% 100 , ast-e% %a dec%ararea !&ri!i
"ectoru%ui " s0a -o%osit indenti-icatoru% MAX, care "a -i 6n%ocuit cu :$$, re.u%t3nd un
"ector cu :$$ de e%e!ente/
-n#./'e <st'o012
-n#./'e <#ono012
-'e"ne /n/ 1 de-inirea !acrou%ui unu ce "a -i 6n%ocuit cu
caracteru% : %a 6nt3%nirea acestui !acrou
-'e"ne 'o /n/!/n/ de-inirea !acrou%ui doi rea%i.at prin i!*ricarea de
dou& ori a !acrou%ui unu
-'e"ne ADE\ASAT 1 de-inirea !acrou%ui ADE<ARAT
-'e"ne >AES 0 de-inirea !acrou%ui OAL7
-'e"ne eroare 3text/. 'e eroare .a #trea "ser/./3
de-inirea !acrou%ui eroare care "a -i 6n%ocuit %a
ape%area %ui cu )iru% de caractere de%i!itat de
du*%u apostroa-e
&o' (an )*
+
prnt" )3 =' =' 3,ADE\ASAT, >AES*7 "a a-i)a : $
prnt" )3pr(/. (a#ro/ =' a. 'o.ea (a#ro/ =' 8n3,/n/,'o*7
"a a-i)a : E
prnt" )eroare*7 "a a-i)a text/. 'e eroare .a #trea
"ser/./
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
Dac& %un,i!ea )iru%ui de caractere ce "a 6n%ocui !acrou% nu!e este !ai %un, de un
r3nd, se "a separa r3ndu% : de r3ndu% E prin caracteru% *acZs%as' U ast-e% B
-'e"ne srA./n4 H a#est sr 'e #ara#tere este 'es"as/rat pe 'o/a
rn'/r 8 pr(/. rn' este a#esta 8 a. 'o.ea rn' este a#estaaaaaaa H
La ape%area acestui !acrou prin -unc2ia print-
prnt" )srA./n4* 7
7e "a a-i)a B
H a#est sr 'e #ara#tere este 'es"as/rat pe 'o/a rn'/r pr(/.
rn' este a#esta a. 'o.ea rn' este a#estaaaaaaa

LIMBAJUL C TEORIE I APLICAI I :1F
n%ocuirea indenti-icatoru%ui cu )iru% de caractere se -ace 6n toate apari2ii%e
acestuia, ecept3nd ca.uri%e 6n care nu!e%e indenti-icatoru%ui este 6n interioru% unui
co!entariu sau intr0un )ir de caractere/
-'e"ne (ax1 B<
prnt" )Ha"sea5a (a#ro/. =='I, (ax1* 7 "a a-i)a "a%oarea E# de-init&
de !acrou% !a:
prnt" )H(ax1I* 7 "a a-i)a )iru% de caractere !a:, !a: este 6n cadru%
unui )ir de caractere )i nu este tratat ca )i !acrou% !a: de-init de directi"a \ de-ine/
Dac& se dore)te ca de %a o anu!it& po.i2ie 6n cadru% -i)ieru%ui surs& s& nu se !ai ap%ice
directi"a -'e"ne se "a scrie B
-/n'e" n/(e
ce ac2ionea.& nu!ai asupra indenti-icatoru%ui ce are de-ini2ia n/(e /
Din acest punct se poate de-iniun a%t indenti-icator cu ace%ea) n/(e dar un a%t )ir de
caractere ce 6% de-inesc -o%osind directi"a -'e"ne /
n cadru% directi"ei \de-ine se poate dec%ara o a%t& directi"& anterior dec%arat&,
nu!indu0se directi"e i!*ricate/
Vu!&ru% !ai! de i!*ricare este de opt 4>5/
Uti%i.area !acrouri%or este indicat& 6n dec%ara2ii de ta*%ouri cu unu% sau dou&
di!ensiuni/Prin -aptu% c& dac& se dore)te !odi-icarea di!ensiuni%or ta*%ouri%or 6n
cadru% pro,ra!u%ui, se "a -ace doar !odi-icarea )iru%ui de caractere, din directi"a
asociat& nu!e%ui !acrou%ui -o%osit %a dec%ararea di!ensiunii ta*%ouri%or, ne-ind
necesar !odi-icarea di!ensiunii ta*%ouri%or 6n -iecare %oc unde apar dec%ara2ii de
ta*%ouri/
-'e"ne XAK B<
CC
".oat a?XAK@, b ?XAK@?XAK@ , # ?XAK@?XAK@ 7
CC
"/n#ta (ata' )".oatp ?XAK@?XAK@ *7
+
C0
,
C00
dac& se dore)te ca di!ensiunea ta*%ouri%or s& -ie !odi-icat& %a "a%oarea de F$ se "a
!odi-ica doar )iru% de dup& !acrou% MAX ast-e% B
-'e"ne XAK ;0
care are ca e-ect !odi-icarea peste tot unde este ,&sit !acrou% MAX cu noua "a%oare
de F$, inc%usi" 6n cadru% -unc2iei !atad/
Macrouri%e de-inite de directi"a \de-ine dup& nu!e poate a"ea )i para!etrii ast-e%B
LIMBAJUL C TEORIE I APLICAI I :1#
-'e"ne n/(e)par1,parB,00parn* text
par1, parB,00parn sunt para!etri -or!a%i ai !acrouri%or )i repre.int& nu!e/
text este tetu% de su*stitu2ie )i con2ine para!etrii -or!a%i par:,parE ]parn,
n ee!p%u% ce ur!ea.& s0a creat un !acrou !in 4,P5 care deter!in& "a%oarea !ini!&
dintre para!etru% )i para!etru% P /
-n#./'e <st'o012
-n#./'e <#ono012
-'e"ne (n)x,G* ))x*<)G*R)x*:)G** de-inirea !acrou%ui !in 4,P5,
para!etru%:-or!a% este iar para!etru%E -or!a%
este P
&o' (an )*
+
nt a,b,(n(7
p/ts )3'at 'o/a n/(ere, se 'eter(na (n(/. 'ntre e.e3*7
s#an" )3=',='3,Ja,Jb*7
(n( =(n)a,b*7 ape%area !acrou%ui !in 4,P5 cu para!etri e-ecti"i
a,*
prnt" )3(n(/. 'ntre #e.e 'o/a n/(ere este =='3,(n(*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
n ee!p%u% ur!&tor !acro rea%i.at a-i)ea.& )iruri de caractere 6n -unc2ie de
"a%oarea para!etri%or e-ecti"i de %a ape%area !acro test/
La ape%area !acro test, tot )iru% de caractere de%i!itat de hg ia %ocu% %ui !acro
test dup& ce para!etri -icti"i au -ost 6n%ocui2i cu para!etri e-ecti"i de %a
ape%are !acro test/
-n#./'e <st'o012
-n#./'e <#ono012
-'e"ne test)x,G* +".oat x,G 7")x==1* p/ts )3pr(/. n/(ar
este=13*7e.se 8
p/ts )3pr(/. n/(ar este '"ert 'e 13*78
")G<0* p/ts )3a. 'o.ea n/(ar este ne4at&3*7e.se 8
p/ts )3a. 'o.ea n/(ar este po5t&3*7 ,
&o' (an )*
+
".oat a,b7
p/ts )3'at 'o/a n/(ere, 3*7
s#an" )3=",="3,Ja,Jb*7
test)a,b*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
7u*stituirea ape%u%ui unui !acro prin tetu% de su*stitu2ie se nu!e)te
epandare/
ntre nu!e%e !acro )i parante.a 4 din -a2a para!etri%or -icti"i nu se %as& spa2iu,
LIMBAJUL C TEORIE I APLICAI I :1G
n ca. contrar at3t parante.e%e 45 de de%i!itare a para!etri%or c3t )i restu% de tet se
consider& un si!p%u )ir de caractere care "a 6n%ocui !acro 6n po.i2ia unde a -ost ape%at/
5irecti#a 8error.
Directi"a \error indic& co!pi%atoru%ui s& siste.e co!pi%area %a 6nt3%nirea acestei
directi"e/ Oor!a directi"ei \error este B
\error !esa+u% ce "a -i a-i)at pe %inia de !esa+e a co!pi%atoru%ui
Mesa+u% ata)at directi"ei \error nu se introduce 6ntre apostroa-e sau du*%u ,'i%i!e%e, %a
6nt3%nirea directi"ei \error se a-i)ea.& !esa+u% -&r& a -i pre%ucrat de co!pi%ator/
-n#./'e <st'o012
-n#./'e <#ono012
&o' (an )*
+
".oat a,b7
p/ts )3'at 'o/a n/(ere, 3*7
" )s#an" )3=",="3,Ja,Jb*==B*
+
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
e.se
-error s-a tastat #ara#ter nen/(er#7directi"a error )i !esa+u% ata)at care
"a -i a-i)at pe %inia de !esa+e %a co!pi%are )i
opre)te %a acest ni"e% co!pi%area
,
ompilarea condiionat.
Directi"e%e din acest pac'et per!it ca %a eecu2ia co!pi%&rii s& se a%ea,& din codu%
surs& por2iuni%e care s& se co!pi%e.e 6!preun& -unc2ie de resurse%e 'ard a%e
ca%cu%atoru%ui sau de "ersiunea co!pi%atoru%ui/
Co!pi%area condi2ionat& -o%ose)te directi"e%e B
\i-
\e%se
\endi-
\e%i-
5irecti#a 8if.
Oor!a ,enera%& a directi"ei \i- este B
Mod:
-" exprese #onstanta
se#&enta 'e nstr/#t/n
-en'"
sau
ModE
-" exprese #onstanta
LIMBAJUL C TEORIE I APLICAI I :1=
se#&enta 'e nstr/#t/n 1
-e.se
se#&enta 'e nstr/#t/nB
-en'"
Dac& epresia constant& are "a%oarea : 4ade"&rat5, se supune preproces&rii sec"en2a de
instruc2iuni de dup& i-, sau 6n !odu%E se "a supune preproces&rii sec"en2a de
instruc2iuni :/ Dup& care se continu& cu sec"en2a de pro,ra! de dup& directi"a \endi-/
Dac& epresia constant& are "a%oarea $ 4-a%s5, se supune preproces&rii sec"en2a de
instruc2iuni de dup& \endi-, sau 6n !odu%E se "a supune preproces&rii sec"en2a de
instruc2iuni E )i apoi se continu& cu sec"en2a de dup& \endi-/
Epresia constant& de dup& \i- tre*uie s& con2in& nu!ai constante )i indenti-icatori
de-ini2i anterior /
Epresia constant& nu poate con2ine "aria*i%e/
n pro,ra!u% ce ur!ea.& s0a condi2ionat preprocesarea -unc2ie de !&ri!ea constantei
si!*o%ice MIV
-n#./'e <st'o012
-n#./'e <#ono012
-'e"ne X9N ;0
&o' (an )*
+
".oat a,b,#?X9N@7
-" X9N <:0 directi"a \i- co!par& MIV cu "a%oarea 1$, dac&
epresia este ade"&rat& se continu& co!pi%area cu
sec"en2a de dup& \i-
+
prnt" )3(ar(ea &e#tor/./ este s/b :03*7
ext )0*7
,
-e.se dac& epresia de %a directi"a \i- este -a%s& de
continu& co!pi%area cu sec"en2a de dup& \e%se
+
p/ts )3'at 'o/a n/(ere, 3*7
" )s#an" )3=",="3,Ja,Jb*==B*
+
prnt" )3=" ="3,a,b*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
e.se
+
p/ts )3/na sa/ a(be.e &a.or n/ s/nt n/(ere 3*7
p/ts )3stop3*7
,
,
-en'" indi-erent c& epresia de dup& \i- este ade"&rat&
sau -a%s& se continu& co!pi%area cu sec"en2a de
dup& \endi-
LIMBAJUL C TEORIE I APLICAI I :1>
,
5irecti#a 8elif.
Directi"a \e%i- deter!in& un %an2 de i- e%se i- pentru !ai !u%te op2iuni de
co!pi%are/Directi"a \e%i- este 6n interioru% directi"ei \i- 0 \e%se, ur!at& de o epresie
constant&/
Dac& epresia este ade"&rat&, *%ocu% de cod ata)at directi"ei \e%i- este co!pi%at )i se
continu& co!pi%area cu *%ocu% de cod de dup& directi"a \endi-/
Oor!a ,enera%& a directi"ei \e%i- este /
-" exprese
b.o#/. 'e nstr/#t/n
-e." expresa1
b.o# 'e nstr/#t/n
-e." expresaB
b.o# 'e nstr/#t/n
C0
-e." expresa n
b.o# 'e nstr/#t/n
-en'"
n ee!p%u% ur!&tor se "a condi2iona co!pi%area 6n -unc2ie de "a%oarea
constantei si!*o%ice TARA/
-n#./'e <st'o012
-n#./'e <#ono012
-'e"ne SOXAN9A 0
-'e"ne UNMAS9A 1
-'e"ne OUEMAS9A B
-'e"ne SUS9A :
-'e"ne TASA SOXAN9A
-" TASA ==SOXAN9A
#1ar (one'a ?@ =3.e/37
-e." TASA==UNMAS9A
#1ar (one'a ?@ =3"ornt37
-e." TASA==OUEMAS9A
-e." (one'a ?@ =3.e&a37
-e.se
#1ar one'a ?@ =3r/b.a37
-en'"
&o' (an )*
+
".oat a,b7
s#an" )3=",="3,Ja,Jb*7
prnt" )3s/(a (one'e.or ==" =s8n3,a!b,(one'a*7
p/ts )3apasa o tasta3*7
4et#1 )*7
,
La ru%area pro,ra!u%ui se "a a-i)a ca unitate !onetar& %ei, dac& se dore)te
LIMBAJUL C TEORIE I APLICAI I :19
!odi-icarea unit&2ii !onetare, se "a !odi-ica doar constanta din directi"a
\de-ine TARA/
5irecti#ele 8ifdef "i ifndef.
Directi"a \i-de- 4dac& este de-init5 contro%ea.& dac& nu!e%e indenti-icatoru%ui a -ost
de-init anterior prin directi"a \de-ine )i *%ocu% de cod ata)at %ui \i-de- "a -i co!pi%at,
dac& nu se "a continua co!pi%area cu *%ocu% de cod de dup& \e%se dac& este pre.ent&,
sau cu *%ocu% de cod de dup& \endi-/
Oor!a directi"ei \i-de- este B
-"'e" n/(e (a#ro )n'ent"#ator*
se#&enta nstr/#t/n )b.o#*
-e.se
se#&enta nstr/#t/n
-en'"
se#&enta nstr/#t/n )b.o#*
sau
-"'e" n/(e (a#ro )n'ent"#ator*
se#&enta nstr/#t/n )b.o#*
-en'"
se#&enta nstr/#t/n )b.o#*
Directi"a \i-nde- 4dac& nu este de-init5 contro%ea.& dac& nu!e%e indenti-icatoru%ui nu a
-ost de-init anterior prin directi"a \de-ine )i *%ocu% de cod ata)at %ui \i-nde- "a -i
co!pi%at, dac& nu se "a continua co!pi%area cu *%ocu% de cod de dup& \e%se dac& este
pre.ent&, sau cu *%ocu% de cod de dup& \endi-/
Oor!a directi"ei \i-nde- este B
-"n'e" n/(e (a#ro )n'ent"#ator*
se#&enta nstr/#t/n )b.o#*
-e.se
se#&enta nstr/#t/n
-en'"
se#&enta nstr/#t/n )b.o#*
sau
-"n'e" n/(e (a#ro )n'ent"#ator*
se#&enta nstr/#t/n )b.o#*
-en'"
se#&enta nstr/#t/n )b.o#*
n pro,ra!u% ur!&tor se contro%ea.& co!pi%area prin directi"e%e \i-de- )i \i-nde-/
-n#./'e <st'o012
-'e"ne XAK B0
LIMBAJUL C TEORIE I APLICAI I :F$
-n#./'e <#ono012
&o' (an )*
+
".oat a, b?XAK@7
-"'e" XAK
p/ts )3(ar(ea (ax(a a &e#tor/./ este 'e"nta3*7
-e.se
p/ts )3(ar(ea (ax(a a &e#tor/./ n/ este 'e"nta3*7
-en'"
-"n'e" X9N
p/ts )3#onstanta s(bo.#a X9N n/ este 'e"nta3*7
-en'"
p/ts )3'at 'o/a &a.or3*7
s#an" )3=",="3,Ja,Jb?1@*7
prnt" )3s/(a ==" 8n3,a!b?1@*7
p/ts )3apasa o tasta3*7
4et#1 )*7
,
5iecti#a 8line.
Directi"a \%ine !odi-ic& con2inutu% indenti-icatori%or prede-ini2i fLIVEf )i fOILEf ai
co!pi%atoru%ui/
Indenti-icatoru% fLIVEf con2ine nu!&ru% %iniei co!pi%ate, iar indenti-icatoru% fOILEf
con2ine nu!e%e -i)ieru%uisurs& co!pi%at su* -or!a unui )ir de caractere/
Oor!a ,enera%& a directi"ei \%ine este B
\%ine nu!ar @ nu!e-isierC
nu!ar I este orice 6ntre, po.iti" care de"ine noua "a%oare a %ui fLIVEf /
@nu!e-isierC I este un )ir de caractere care poate de"eni un nu!e "a%id de
-i)ier ce "a 6n%ocui pe fOILEf
-n#./'e <st'o012
-.ne B0
&o' (an )*
+
prnt" )Hn/(ar/. a#este .n #o(p.ate este =='I,AE9NEA* 7
p/ts )Hapasat o tasta I* 7
4et#1 ) * 7
,
Dup& ru%area pro,ra!u%ui se "a a-i)a "a%oarea E1 , nu!&rarea %inii%or
co!pi%ate "a 6ncepe cu "a%oarea E$ %a co!pi%area %iniei "oid !ain 45/
*peratori de preprocesare 8 "i 88.
Ace)ti operatori se -o%osesc cu directi"a \de-ine )i rea%i.ea.& ur!&toare%e opera2ii/
\ nu!it operator de 6n)iruire , trans-or!& ar,u!entu% pe care 6% precede 6ntr0un
)ir de caractere de%i!itat de du*%u apostroa-e @ )ir @/
-n#./'e <st'o012
-'e"ne text)a* - a
LIMBAJUL C TEORIE I APLICAI I :F:
&o' (an )*
+
p/ts )H"/n#ta prnt" &a a"sa text/. n#ep/t 'e 'r/( n Y 8nI* 7
prnt" )text)n#ep/t 'e 'r/( n Y** 7
,
Dup& ru%area pro,ra!u%ui se "a a-i)a pe ecran inceput de drum in ' ca )i cu! acesta ar
-i -ost 6ncadrat 6ntre @ @ %a co!pi%are/
\\ nu!it operator de %ipire "a concatena ce%e dou& ar,u!ente a%e directi"ei
\de-ine, ast-e% %a ape%area !acro "a re.u%ta ca )i cu! ar a"ea un sin,ur ar,u!ent/
-n#./'e <st'o012
-'e"ne text)a,b* a --b
&o' (an )*
+
".oat ab=< 7
p/ts )H"/n#ta prnt" &a a"sa &a.oarea ./ ab=< 8nI* 7
prnt" )H =' Htext)a,b** 7
,
%. 9rafic n .
Co!pi%atoru% C de su* Dos are dou& !oduri de %ucru pentru pre.entarea
in-or!a2iei pe ecranu% !onitoru%ui B
Modu% tet/
Modu% ,ra-ic/
Pentru -iecare !od de %ucru uti%i.atoru% poate a%e,e di-erite re.o%u2ii/
Di-eren2a esen2ia%& 6ntre ce%e dou& !oduri const& 6n -e%u% 6n care se adresea.& cea !ai
!ic& unitate adresa*i%& pe ecran/
Modu% tet %ucrea.& cu ce%u%a caracter, ce este o !atrice de pie%i, aceasta
repre.int& unitatea adresa*i%& pe ecran/ n !odu% tet ecranu% este 6!p&r2it 6n %inii )i
co%oane/
Modu% ,ra-ic %ucrea.& cu pie%, ce este ce% !ai !ic punct a-i)a*i% pe ecran/
Di!ensiuni%e pie%u%ui depind de ca%it&2ii%e !onitoru%ui -o%osit c3t )i de p%aca ,ra-ic&
ce pre,&te)te date%e a-i)a*i%e/
Oor!a unui pie% este dreptun,'i%ar&, care in-%uen2ea.& aspectu% in-or!a2iei a-i)ate pe
ecran/ Pentru !onitoare%e de tip <WA sau 7<WA nu !ai este ne"oie s& se corecte.e
aspectu% pie%u%ui, prin indicarea raportu%ui aspectua%, care poate -i considerat e,a% :/
Bi*%ioteca ,ra-ic& este porta*i%& su* siste!u% de operare DO7 )i con2ine B
Constante/
7tructuri de date prede-inite/
Prototipu% -unc2ii%or ,ra-ice/
Coduri%e -unc2ii%or/
Dri"ere%e pentru !onitor )i p%aca ,ra-ic&/
7eturi de caractere/
Pentru a se putea %ucra 6n !od ,ra-ic, -i)ieru% surs& tre*uie s& ai*e inc%use -i)iere%e B
,rap'ics/' ,rap'ics/%i* Q/*,i
LIMBAJUL C TEORIE I APLICAI I :FE
%.1. Moduri grafice.
Ca%cu%atoare%e persona%e -o%osesc pentru pre.entarea in-or!a2ii%or ,ra-ice sau tet o
p%ac& ,ra-ic& )i un !onitor/ Ounc2ie de co!*ina2ia !onitor )i p%aca ,ra-ic& se de-ine)te,
nu!&ru% de cu%ori )i re.o%u2ia de a-i)are/ Adaptoru% ,ra-ic )i drai"&ru% ,ra-ic suportat de
*i*%ioteca ,ra-ic& se pre.int& 6n ta*e%u% ur!&tor/
Adaptor Dri"er
Co%or ,rap'ics adapter CWA
Mu%ti co%or ,rap'ics adapter MCWA
En'anced ,rap'ics adapter EWA, EWAMOVO
<ideo ,rap'ics arraP <WA
Yercu%es ,rap'ics adapter YERCMOVO
ATcT F$$%ine ,rap'ics adapter ATTF$$
1E=$ PC ,rap'ics adapter PC1E=$
IBM >#:F ,rap'ics adapter IBM>#F:
Oiecare adaptor poate opera 6n !ai !u%te !oduri, uti%i.atoru% este ce% care "a speci-ica
!odu% de %ucru/ Dri"eru% )i adaptoru% ,ra-ic tre*uie s& -ie 6n concordan2& cu siste!u%
"ideo eistent pe ca%cu%ator
Pentru a deter!ina corect resursa "ideo a ca%cu%atoru%ui, se "a -o%osi -unc2ia init,rap'/
n ta*e%u% ur!&tor se pre.int& dri"ere, !oduri%e ,ra-ice suportate de co!pi%atoru%
Bor%and/
DRI<ER MOD <ALOARE DE7CRIERE
CWA CWAC$ $ 1E$XE$$XFCOLOR
CWAC: : 1E$XE$$XFCOLOR
CWACE E 1E$XE$$XFCOLOR
CWAC1 1 1E$XE$$XFCOLOR
CWAYI F GF$XE$$XECOLOR
MCWA MCWAC$ $ 1E$XE$$XFCOLOR
MCWAC: : 1E$XE$$XFCOLOR
MCWACE E 1E$XE$$XFCOLOR
MCWAC1 1 1E$XE$$XFCOLOR
MCWAMED F GF$XE$$XECOLOR
MCWAYI # GF$XF>$XECOLOR
EWA EWAL$ $ GF$XE$$X:GCOLOR
EWAYI : GF$X1#$X:GCOLOR
EWAGF EWAGFL$ $ GF$XE$$X:GCOLOR
EWAGFYI : GF$X1#$X:GCOLOR
EWAMOVO EWAMOVOYI 1 GF$XE$$XECOLOR
<WA <WAL$ $ GF$XE$$X:GCOLOR
<WAMED : GF$X1#$X:GCOLOR
<WAYI E GF$XF>$X:GCOLOR
ATTF$$C$ MCWAC$ $ 1E$XE$$XFCOLOR
LIMBAJUL C TEORIE I APLICAI I :F1
ATTF$$C: : 1E$XE$$XFCOLOR
ATTF$$CE E 1E$XE$$XFCOLOR
ATTF$$C1 1 1E$XE$$XFCOLOR
ATTF$$MED F GF$XE$$XECOLOR
ATTF$$YI # GF$XF$$XECOLOR
YERC YERCMOVO $ =E$X1F>XECOLOR
PC1E=$ PC1E=$YI $ GF$X1#$XECOLOR
IBM>#:F IBM>#:FL$ $ GF$X>$XE#GCOLOR
IBM>#:FYI : :$EFX=G>XE#GCOLOR
%.2. Sisteme de cordonate.
n !odu% de %ucru ,ra-ic ecranu% !onitoru%ui este considerat o 'art& de pie%i,
po.i2ionarea pe aceast& 'art& se e-ectuea.& prin indicarea cordonate%or )i P/
Vu!&ru% de pie%i pe ori.onta%& )i "ertica%& este deter!inat de !odu% "ideo o*2inut prin
-unc2ia init,rap'/
Bi*%ioteca ,ra-ic& -o%ose)te dou& siste!e de cordonate ast-e% B
;istemul de cordonate glo-al 4-i.ic 5, cu ori,inea siste!u%ui 6n co%2u% din
st3n,a sus aecranu%ui/
;istemul de cordonate al ferestrei de afiare 4%oca%5, cu ori,inea siste!u%ui
6n co%2u% din st3n,a sus a% -erestrei/
Aa po.iti"& se des-&)oar& de %a st3n,a %a dreapta, iar aa po.iti"& P de sus 6n +os, at3t
pentru siste!u% ,%o*a% c3t )i siste!u% %oca%/
7iste!u% ,%o*a% este -o%osit pentru po.i2ionarea -erestre%or, i!p%icit a siste!e%or de
cordonate %oca%e/ iona de a-i)are ,ra-ic& i!p%icit& este tot ecranu% )i ce%e dou& siste!e
de cordonate sunt identice/Po.i2ia de %ucru este dat& de cursoru% ,ra-ic, ce repre.int&
punctu% curent a% pie%u%ui, asupra c&ruia se "a ap%ica noua co!and&/
Cursoru% ,ra-ic este -o%osit ca punct de start 6n -unc2ii%e ,ra-ice, iar po.i2ia acestuia este
p&strat& 6n cordonate%e %oca%e a%e -erestrei acti"e/
Po.i2ia cursoru%ui ,ra-ic poate -i !odi-icat& prin -unc2ii%e mo#eto )i mo#ere%, sau
i!p%icit prin ac2iunea -unc2ii%or lineto )i outtet.
%.3. ulori "i palete de culori.
n !odu% ,ra-ic -iecare pie% de pe ecran este caracteri.at prin cordonate%e , P,
cu%oare/ Cu%oarea pie%u%ui este p&strat& ca o "a%oare 6n pa%eta de cu%ori curent&/
Pa%eta de cu%ori poate a"ea de %a E %a E#G de cu%ori, 6n -unc2ie de !oduri%e suportate de
siste!u% "ideo a% ca%cu%atoru%ui/ Adaptoare%e EWA )i <WA -o%osesc o pa%et& de :G
cu%ori pre.entat& 6n ta*e%u% ur!&tor B
COV7TAVTA DE CULOARE <ALOARE IVDEX DE PALETj
EWAfBLACA $ $
LIMBAJUL C TEORIE I APLICAI I :FF
EWAfBLUE : :
EWAfWREEV E E
EWAfCkAV 1 1
EWAfRED F F
EWAfMAWEVTA # #
EWAfLIWYTWRAk = G
EWAfBRO8V E$ =
EWAfDARAWRAk #G >
EWAfLIWYTBLUE #= 9
EWAfLIWYTWREEV #> :$
EWAfLIWYCkAV #9 ::
EWAfLIWYTRED G$ :E
EWAfLIWYTMAWEVTA G: :1
EWAfkELLO8 GE :F
EWAf8YITE G1 :#
%.%. Moduri de umplere.
Ounc2ii%e -ar0 -ar,d0 fillpol9 )i floodfill sunt -o%osite pentru a crea desene p%ine/
Pentru a crea aceste desene p%ine, este necesar s& se -o%oseasc& di-erite !ode%e de
u!p%ere, c3t )i cu%ori de u!p%ere/ Cu%oarea )i !ode%u% de u!p%ere sunt contro%ate prin
-unc2ii%e setfillpattern )i setfillst9le.
Mode%e%e de u!p%ere sunt pre.entate 6n ta*e%u% ur!&tor/
COV7TAVTj <ALOARE 7EMVIOICAIE
EMPTkfOILL $ O&r& u!p%ere
7OLIDfOILL : U!p%ere cu cu%oare curent&
LIVEfOILL E U!p%ere cu %inii ori.onta%e
LIT7LA7YfOILL 1 U!p%ere cu s%as'0uri su*2iri
7LA7YfOILL F U!p%ere cu s%as'0uri ,roase
BA7LA7YfOILL # U!p%ere cu *acZs%as'0uri ,roase
LTBA7LA7YfOILL G U!p%ere cu *acZs%as'0uri su*2iri
YATCYfOILL = U!p%ere cu desc'i.&turi !ici
XYATCYfOILL > U!p%ere cu desc'i.&turi !ari
IVTERLEA<EfOILL 9 U!p%ere cu !ode% 6ntre2esut
8IDEfDOTfOILL :$ U!p%ere cu !ode% punctat rar
CLO7EfDOTfOILL :: U!p%ere cu !ode% punctat des
U7ERfOILL :E U!p%ere cu !ode% de-init de
uti%i.ator
%.'. Stiluri de linii.
Ma+oritatea -unc2ii%or de desenare -o%osesc di-erite !ode%e de %inii/
LIMBAJUL C TEORIE I APLICAI I :F#
7ti%u% de %inie descrie !ode%u% de %inie, ,rosi!ea de %inie/
Mode%u% de %inie poate -i a%es dintre !ode%e din *i*%ioteca sau poate -i de-init de
uti%i.ator/ n ta*e%u% ce ur!ea.& se pre.int& !ode%e%e prede-inite/
COV7TAVTj <ALOARE 7EMVIOICAIE
7OLIDfLIVE $ Linie continu&
DOTTEDfLIVE : Linie punctat&
CEVTERfLIVE E Linie punctat& centrat&
DA7YEDfLIVE 1 Linie intrerupt& din %inii
U7ERBITfLIVE F Linie de-init& de uti%i.ator
Wrosi!ea %iniei poate a"ea dou& "a%ori de : pie% sau de 1 pie%i/
n ta*e%u% ce ur!ea.& sunt pre.entate "a%ori%e pentru ,rosi!ea %iniei/
COV7TAVTA <ALOAREA 7EMVIOICAIA
VORMf8IDTY : Wrosi!ea de : pie%
TYICAf8IDTY 1 Wrosi!ea de 1 pie%i
%... Afi"area te)tului n mod grafic.
Ounc2ii%e de a-i)are print-, sprint- )i cprint- -o%osite 6n !od tet, nu pot -i -o%osite 6n
!odu% ,ra-ic/ Pentru pre.entarea 6n !odu% ,ra-ic a tetu%ui se -o%osesc -unc2ii
speci-icecu! ar -i B
Wettetsetin,/
Outtet/
OuttetP/
7ettet+usti-P/
7ettetstP%e/
Tet'ei,'t/
Pentru a %ucra cu aceste co!en.i, s0a pre"&.ut o 'art& de >> *i2i )i F -onturi "ectoria%e
-o%osite %a a-i)area tetu%ui/
n ta*e%u% se pre.int& -onturi%e -o%osite B
COV7TAVTj <ALOARE 7EMVIOICAIE
DEOAULTfOOVT $ Yart&de >> *i2i
TRIPLEXfOOVT : Oont "ectoria% trip%e
7MALLfOOVT E Oont "ectoria% !ic
7AV7f7ERIOfOOVT 1 Oont "ectoria% sanfseri-
WOTYICfOOVT F Oont "ectoria% ,otic
Dac& co!pi%atoru% -o%osit accept& "ersiunea Bor%and 1/:, %a %ista de -onturi pre.entat&
6n ta*e%u% se !ai adau,& un nu!&r de G -onturi/
COV7TAVTj 7EMVIOICAIE
BOLDfOOVT -ont "ectoria% a%din
LIMBAJUL C TEORIE I APLICAI I :FG
COMPLEXfOOVT -ont "ectoria% co!p%e
EUROPEAVfOOVT -ont "ectoria% european
7CRIPTfOOVT -ont "ectoria% de !3n&
7IMPLEXfOOVT -ont "ectoria% si!p%e
TRIPLEXf7CRIPTfOOVT -ont "ectoria% trip%e de !3n&
7crierea tetu%ui se poate e-ectua de %a st3n,a %a dreapta sau de +os 6n sus, ape%3nd dou&
constante D:"8CN78" )i KE"5N78"/
<a%ori%e acestor constante sunt + )i respecti" !/
A)e.area tetu%ui 6n raport cu po.i2ia cursoru%ui ,ra-ic se rea%i.ea.& cu -unc2ia
settet+usti-P ce -o%ose)te ur!&toare%e constante B
Pentru a%iniere ori.onta%& se pre.int& 6n ta*e%u% constante%e )i se!ni-ica2ia %or/
COV7TAVTj <ALOARE 7EMVIOICAIE
LEOTfTEXT $ A%iniat %a stin,a
CEVTERfTEXT : A%iniat centrat
RIWYTfTEXT E A%iniat %a dreapta
Pentru a%iniere "ertica%& se pre.int& 6n ta*e%u% constante%e )i se!ni-ica2ia %or/
COV7TAVTj <ALOARE 7EMVIOICAIE
BOTTOMfTEXT $ A%iniat +os
CEVTERfTEXT : A%iniat centrat
TOPfTEXT E A%iniat sus
%./. !ipuri de date folosite n funciile grafice.
Pentru uti%i.area -unc2ii%or ,ra-ice sunt necesare un anu!it tip de date, care pot
-i B structuri, constante, 6ntre,i/
arccoordst9pe
Trans!iterea ar,u!ente%or -unc2iei ,etarccoords se e-ectuea.& printr0o dat& de tip
structur& nu!it& arccoordst9pe ast-e% B
struct
h
int ,P L
int star,Pstar L
int end, Pend L
g L
Unde 09 sunt coordoate%e centru%ui cercu%ui din care -ace parte arcu%/
?star0 9star sunt coordonate%e punctu%ui de unde 6ncepe arcu% /
LIMBAJUL C TEORIE I APLICAI I :F=
?end 0 9end sunt coordonate%e punctu%ui de s-3r)it a arcu%ui/
Date%e din structur& pot -i -o%osite pentru a creea a%te entit&2i %e,ate de puncte%e
speci-ice a%e arcu%ui/
fillsettingst9pe
Tip de dat& structur& -o%osit %a trans!iterea ar,u!entu%ui -unc2iei getfillsetting ce
con2ine set&ri%e pentru u!p%erea supra-e2e%or/
7tructura %ui fillsettingst9pe este B
struct -i%%settin,stPpe
h
int pattern L
int co%or B
gL
Unde pattern este o "a%oare 6ntrea,& ce indic& !ode%u% de u!p%ere con-or!
ta*e%u%ui /
6olor este o "a%oare de tip 6ntre, ce indic& cu%oarea de u!p%ere
con-or! ta*e%u%ui /
GraphicsNerrors
Este o constant& de tip enu!erare ce con2ine coduri%e de eroare re.u%tate %a
ape%area -unc2iei ,rap'resu%t, -o%osit& pentru depanarea pro,ra!e%or de ,ra-ic& cu erori/
n ta*e%u% sepre.int& codu% de eroare, constanta )i !esa+u% de eroare/
COD DE
EROARE
COV7TAVTj ME7AJ DE EROARE
$ ,rOA Vici o eroare
0: ,rVoInitWrap' Dri"eru% ,ra-ic BWI neinsta%at
0E WrVotDetectd P%aca ,ra-ic& ne,&sit&
01 WrOi%eVotOound Oi)ieru% pentru dri"eru% ,ra-ic ne,&sit
0F WrIn"a%idDri"er Oi)ieru% in"a%id pentru dri"er ,ra-ic
0# WrVoLoadMe! Me!orie insu-icient& pentru dri"er ,ra-ic
0G WrVo7ca!Me! Me!orie insu-icient& pentru -i%%po%P
0= WrVoO%oodMe! Me!oria insu-icient& pentru -%ood-i%%
0> WrOontVotOound Oi)ier de -ont ne,&sit
09 WrVoOontMe! Me!orie insu-icient& pentru -onturi
0:$ WrIn"a%idMode Mod ,ra-ic neper!is pentru dri"er ,ra-ic
0:: WrError Eroare ,ra-ic&
0:E WrIError Eroare ,ra-ic& de intrare0ie)ire
0:1 WrIn"a%idOont Oi)ier de -ont in"a%id
0:F WrIn"a%idOontVu! Vu!&r de -ont in"a%id
0:# WrIn"a%idDe"iceVu! Vu!&r de dri"er in"a%id
0:> ,rIn"a%id<ersion Vu!&r de "ersiune in"a%id
LIMBAJUL C TEORIE I APLICAI I :F>
4inesettingst9pe
Dat& de tip structur& -o%osit& pentru trans!iterea ar,u!ente%or -unc2ii%or
getlinesetting )i setlinest9le prin care se sta*i%e)te !ode%u% )i ,rosi!ea %ini%or/
7truct %inesettin,stPpe
h
int %inestP%e L
unsi,ned upattern
int t'icZnes
g
linest9le deter!in& cu ce !ode% de %inie "or -i desenate %inii%e de %a acest
!o!ent p3n& %a o nou& !odi-icare a !ode%u%ui/
Upattern deter!in& !ode%u% de u!p%ere ce a -ost 6n prea%a*i% de-init de
uti%i.ator, aceast& dat& se -o%ose)te dac& %inestP%e are "a%oarea U77ERBITfLIVE/
5hicLnes deter!in& ,rosi!ea %inii%or/
Aalettet9pe

Dat& de tip structur& prede-init& prin care se trans!it ar,u!ente%e -unc2iei
getpalette0 setpalette0 setallpalette, prin indicarea nu!&ru%ui de cu%ori din pa%et& )i
cu%oarea/
7truct pa%ettetPpe
h
unsi,ned c'ar si.e L
si,ned c'ar co%ors 9MAXCOLOR7 J:; L
g
size con2ine nu!&ru% de cu%ori a%e pa%etei curente,
colors este un ta*%ou de tip "ector, a c&rui !&ri!e este e,a%& cu si.e octe2i )i
con2ine "a%oarea nu!eric& pentru -iecare cu%oare din pa%et&/
MAXCOLOR7
E<?6:4:"; este o constant& ce con2ine nu!&ru% !ai! de intr&ri 6n
pa%eta de cu%ori a structurii pa%ettetPpe/ <a%oarea acestei constante depinde de dri"eru%
)i !odu% ,ra-ic setat 6n cadru% siste!u%ui/
PointttPpe
Aointt9pe este o dat& de tip structur& care este -o%osit& pentru repre.entarea unui punct/
7tructura con2ine ce%e dou& cordonate ,P a%e punctu%ui/
struct pointtPpe
h
int L
LIMBAJUL C TEORIE I APLICAI I :F9
int PL
g
tetsettingst9pe
Dat& de tip structur& -o%osit& de -unc2ia ,ettetsettin,s pentru trans!iterea
para!etri%or/ Ounc2ia gettetsettings cite)te set&ri%e curente pentru tetu% 6n !od
,ra-ic/
7truct tetsettin,stPpe
h
int -ont L
int direction L
int c'arsi.e L
int 'ori. L
int "ert L
g
font repre.int& -ontu% -o%osit %a a-i)area tetu%ui,
direction o "a%oare nu!eric& $ sau : ce indic& direc2ia de scriere a tetu%ui,
charsize indic& !&ri!ea caractere%or -o%osite %a scrierea )i a-i)area tetu%ui,
horiz repre.int& o "a%oare nu!eric& $,:,E ce indic& !odu% de a%iniere pe
direc2ia ori.onta%& a tetu%ui,
#ert repre.int& o "a%oare nu!eric& $,:,E ce indic& !odu% de a%iniere pe direc2ia
"ertica%& a tetu%ui/
<ie(porttPpe
Dat& de tip structur& -o%osit& pentru trans!iterea ar,u!ente%or -unc2iei get#ieMsetting,
ce con2ine set&ri%e curente a%e -erestrei de a-i)are/
7truct "ie(porttPpe
h
int %e-t L
int top L
int ri,'t L
int *otto! L
int c%ip L
g
left repre.int& coordonata -i.ic& a !ar,inii din st3n,a a -erestrei curente,
top repre.int& coordonata -i.ic& a !ar,inii superioare a -erestrei curente,
right repre.int& coordonata -i.ic& a !ar,inii din dreapta a -erestrei curente,
-ottom repre.int& coordonata -i.ic& a !ar,inii in-erioare a -erestrei curente,
clip repre.int& atri*utu% de decupare, care indic& dac& e%e!ente%e desenate pot
-i repre.entate )i 6n a-ara -erestrei curente, 6n ca. contrar entit&2ii%e sunt t&iate 6n a-ara
-erestrei curente/
LIMBAJUL C TEORIE I APLICAI I :#$
%.1. &:7;II 5( 5(S(7A<(.
%.1.1. A<.
Ounc2ia arc per!ite desenarea unui arc de cerc, %a care uti%i.atoru% "a indica pe r3ndB
Centru% cercu%ui din care -ace parte arcu% prin coordonate%e )i P/
Un,'iu% de unde 6ncepe desenarea arcu%ui/
Un,'iu% unde se ter!in& desenarea arcu%ui/
Ra.a cercu%ui din care -ace parte arcu%/
Desenarea arcu%ui se -ace de %a un,'iu% de 6nceput )i se continu& 6n sens tri,ono!etric
p3n& %a un,'iu% de ter!inare/
<a%oarea $ a un,'iu%ui este considerat Suadrantu% din dreapta centru%ui cercu%ui/
Trasarea arcu%ui se eecut& 2in3nd cont de ,rosi!ea %iniei de desenare, dar nu per!ite
trasarea dec3t cu %inie continu&/
Prototipu% -unc2iei arc este B
<oid -ar arc 4int ,int P, int startan,%e, int endan,%e, int radius5L
Ounc2ia nu returnea.& nici o "a%oare/
<a%ori%e pentru )i P tre*uie s& -ie po.iti"e )i !ai !ici dec3t "a%ori%e !ai!e a%e
ecranu%ui de desenare, !&ri!ea un,'iuri%or de start )i de s-3r)it se indic& 6n ,rade
sea.eci!a%e, iar ra.a 6n unit&2i -o%osite %a di!ensionarea ecranu%ui/
Eemplu.
- n#./'e <st'o012
- n#./'e <#ono012
- n#./'e <4rap1#s012
- n#./'e <st'.b012
&o' (an )*
+ Acest pac'et de instruc2iuni )i de-inirea
"aria*i%e%or p3n& %a ape%area -unc2iei set-i%%stP%e
este co!un !a+orit&2ii pro,ra!e%or ce -o%osesc
-unc2ii%e ,ra-ice, care "or -i descrise 6n capito%e%e
ur!&toare/
nt 4'r&er = DETEYT,4(o'e,error#o'e7
/ns4ne' .on4 s7
nt x(ax,G(ax7
p/ts )3'esenarea ar#/./ 'e #er#3*7
4et#1 )*7
#.rs#r )*7
x(ax=4et(axx)*7G(ax=4et(axG)*7
nt4rap1)J4'r&er,J4(o'e,3 3*7 ini2ia%i.area !odu%ui ,ra-ic
set&eWport)0,0,4et(axx)*,4et(axG)*,0*7 de-inirea .onei curente de
desenare,
error#o'e=4rap1res/.t)*7
")error#o'eT=4rOV*
LIMBAJUL C TEORIE I APLICAI I :#:
prnt")3Eroare 4ra"#a: =s8n3,4rap1error(s4)error#o'e**7
#.ear'e&#e)*7 )ter,erea con2inutu%ui ecranu%ui ,ra-ic,
set#o.or )SED*7 setarea cu%orii de desenare pe cu%oarea ro)u
set"..stG.e )SOE9DA>9EE,SED*7setarea tipu%ui de u!p%ere )i cu%oarea

ar# )<0,<0,0,180,B<*7 desenarea arcu%ui cu centru cercu%ui %a
coordonate%e I#$, PI#$, un,'iu% de start I$,
un,'iu% de s-3r)it I:>$ ,rade )i ra.a IE# unit&2i
cu%oarea de desenare este ro)u/
ar# )100,<0,Q0,BN0,B<*7 desenarea arcu%ui cu centru cercu%ui %a
coordonate%e I:$$, PI#$, un,'iu% de start I9$,
un,'iu% de s-3r)it IE=$ ,rade )i ra.a IE# unit&2i
cu%oarea de desenare este ro)u/
ar# )1<0,<0,0,-Q0,B<*7 desenarea arcu%ui cu centru cercu%ui %a
coordonate%e I:#$, PI#$, un,'iu% de start I$,
un,'iu% de s-3r)it I09$ ,rade )i ra.a IE# unit&2i
cu%oarea de desenare este ro)u/
set#o.or )OEUE*7 setarea cu%orii de desenare pe cu%oarea a%*astru
4BLUE5
ar# )1<0,100,0,BN0,<0*7 desenarea arcu%ui cu centru cercu%ui %a coordonate%e
I:#$, PI:$$, un,'iu% de start I$, un,'iu% de
s-3r)it IE=$ ,rade )i ra.a I#$ unit&2i cu%oarea de
desenare este a%*astru/
4et#1 )*7
,
%.1.2. =ar
Ounc2ia *ar desenea.& o *ar& dreptun,'iu%ar& p%in&, cu%oarea de u!p%ere este inpus& de
-unc2ia set-i%%stP%e/ Conturu% *arei nu este scos 6n e"iden2&, de aceia se reco!and&
cu%oarea de u!p%ere s& -ie di-erit& de cu%oarea de -ond a -erestrei curente pentru
desenare/ Prototipu% -unc2iei *ar este 0/
"oid -ar *ar 4int %e-t, int top, int ri,'t, int *otto!5L
int %e-t co%2u% din st3n,a,
int top co%2u% de sus,
int ri,'t co%2u% din dreapta,
int *otto! co%2u% de +os,
Eemplu.
- n#./'e <st'o012
LIMBAJUL C TEORIE I APLICAI I :#E
- n#./'e <#ono012
- n#./'e <4rap1#s012
&o' (an )*
+
nt 4'r&er = DETEYT,4(o'e,error#o'e7
nt x(ax,G(ax7
#.rs#r )*7 )ter,erea ecranu%ui 6n !od tet,
nt4rap1)J4'r&er,J4(o'e,3 3*7ini2ia%i.area !odu%ui ,ra-ic
x(ax=4et(axx)*7G(ax=4et(axG)*7detectarea "a%ori%or coordonate%or , P a%e
co%2u%ui dreapta +os pentru dri"eru% detectat,
set&eWport)0,0,x(ax,G(ax,0*7de-inirea .onei curente de desenare,
prnt" )3x (ax==' G (ax=='3,x(ax,G(ax*7 !aIG19, P!aIF=9 )i
repre.int& coordonate%e !ai!e a%e co%2u%ui din
dreapta +os, pentru dri"eru% )i !odu% ,ra-ic
detectat auto!at de ,dri"er, -unc2ie de resurse%e
'ard a%e ca%cu%atoru%ui,
error#o'e=4rap1res/.t)*7
")error#o'eT=4rOV*
prnt")3Eroare 4ra"#a: =s8n3,4rap1error(s4)error#o'e**7
4et#1 )*7
#.ear'e&#e)*7 )ter,erea con2inutu%ui ecranu%ui ,ra-ic,
set"..stG.e )SOE9DA>9EE,SED*7se setea.& cu%oarea de u!p%ere ro)u )i
!ode%u% de u!p%ere %inie so%id& p%in&
bar )100,100,:00,;NQ*7 se desenea.& o *ar& p%in& cu cu%oarea ro)ie , co%2u%
din st3n,a sus de coordonate :$$, :$$ )i co%2u% din
dreapta +os de coordonate 1$$,F=9,
set"..stG.e )SOE9DA>9EE,OEUE*7 se setea.& cu%oarea de u!p%ere a%*astru )i
!ode%u% de u!p%ere %inie so%id& p%in&
bar ):00,B;0,L:8,;<0*7 se desenea.& o *ar& p%in& cu cu%oarea a%*astr&,
co%2u% din st3n,a sus de coordonate 1$$, EF$ )i
co%2u% din dreapta +os de coordonate G1>,F#$/
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1.3. =ar3d
Ounc2ia *ar1d desenea.& o pris!& dreapt& cu *a.a un dreptun,'i, %a care uti%i.atoru% "a
indica puncte%e caracteristice/ 7pre deose*ire de -unc2ia *ar, -unc2ia *ar1d desenea.&
!uc'ii%e pris!ei cu cu%oarea de desenare setat&, iar -a2a : 4-ronta%&5 este u!p%ut& cu
cu%oarea )i !ode%u% date de -unc2ia set-i%%stP%e / Prin para!etru% top-%a, -unc2ia *ar1d
"a contura sau nu -a2a superioar& a pris!ei/
Prototipu% -unc2iei *ar1d este B
<oid -ar *ar1d 4int %e-t, int top, int ri,'t, int *otto!, int dept', int top-%a,5L
LIMBAJUL C TEORIE I APLICAI I :#1
int %e-t co%2u% din st3n,a,
int top co%2u% de sus,
int ri,'t co%2u% din dreapta,
int *otto! co%2u% de +os,
int drept' ad3nci!ea pri.!ei dreptun,'iu%are, repre.entat& prin unit&2i de
pie%i
int top-%a, are "a%oarea $ sau po.iti"&, dac& "a%oarea este $ nu se desenea.&
-a2a superioar&, dac& "a%oarea este po.iti"& se "a desena -a2a superioar& a
pris!ei/
Eemplu.
n cadru% acestui ee!p%u se indic& doar %inii%e de cod speci-ice uti%i.&rii -unc2iei
*ar1d, pentru a rea%i.a 6ntre,u% -i)ier se "a ad&u,a pac'etu% de %inii de cod de 6nceput
pre.entat 6n -i)ieru% anterior/
#.ear'e&#e)*7
set"..stG.e )SOE9DA>9EE,SED*7 se setea.& cu%oarea de u!p%ere ro)u )i
!ode%u% de u!p%ere %inie so%id& p%in&
bar:' )100,100,:00,;NQ,:0,1*7 se desenea.& o *ar& 1d p%in& cu cu%oarea
ro)ie , co%2u% din st3n,a sus de coordonate :$$,
:$$ )i co%2u% din dreapta +os de coordonate
1$$,F=9, ad3nci!ea de 1$ pie%i, -a2a superioar& a
*arei este repre.entat&/
Muc'ii%e pri.!ei sunt desenate cu cu%oarea
i!p%icit&, 6n ca.u% de -a2& a%*&/
set"..stG.e )SOE9DA>9EE,OEUE*7 se setea.& cu%oarea de u!p%ere a%*astru )i
!ode%u% de u!p%ere %inie so%id& p%in&
set#o.or )SED*7 se setea.& cu%oarea de desenare ro)u care "a -i
cu%oarea de desenare a !uc'ii%or *arei1d,
bar:' ):00,B;0,<:8,;00,10,0*7 se desenea.& o *ar& p%in& cu cu%oarea
a%*astr&, co%2u% din st3n,a sus de coordonate 1$$,
EF$ )i co%2u% din dreapta +os de coordonate
#1>,F$$, ad3nci!ea de :$ pie%i, -a2a superioar& a
*arei este nerepre.entat& 4top-%a,I$5/
Muc'ii%e pris!ei sunt desenate cu cu%oarea setat&,
6n ca.u% de -a2& ro)u/
/
p/ts )3apasa o tasta3*7
4et#1 )*7
,
LIMBAJUL C TEORIE I APLICAI I :#F
%.1.%. ircle
Ounc2ia circ%e desenea.& un cerc %a care uti%i.atoru% indic& cordonate%e ,P a%e centru%ui
cercu%ui )i ra.a/ Cu%oarea de desenare este cu%oarea curent&, setat& prin setco%or/ Linia
de desenare a cercu%ui poate a"ea ,rosi!e, dar tipu% de %inie este continu& indi-erent de
!ode%u% de %inie setat/
Prototipu% -unc2iei circ%e este L
<oid -ar circ%e 4int , int P, int radius5L
int coordonata a centru%ui cercu%ui,
int P coordonata P a centru%ui cercu%ui,
int radius ra.a cercu%ui epri!at& 6n pie%i/
Eemplu.
#.ear'e&#e)*7
set"..stG.e )SOE9DA>9EE,SED*7
#r#.e )<0,<0,B<*7 desenea.& un cerc cu centru de coordonate I#$,
PI#$ )i ra.a IE#, cu%oarea de desenare a%*&,
cu%oare setat& i!p%icit/
set"..stG.e )SOE9DA>9EE,OEUE*7
set#o.or )SED*7
#r#.e )100,B00,<0*7 desenea.& un cerc cu centru de coordonate I:$$,
PIE$$ )i ra.a I#$, cu%oarea de desenare ro)ie,
cu%oare setat& prin -unc2ia setco%or/
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1.'. <ectangle
Ounc2ia rectan,%e desenea.& un dreptun,'i, %a care uti%i.atoru% "a preci.a co%2u%
dinst3n,a sus )i co%2u% din dreapta +os/ Cu%oarea de desenare a dreptun,'iu%ui c3t )i
!ode%u% , sti%u% %iniei de desenare sunt ce%e curente/ 7pre deose*ire de -unc2ia *ar
conturu% dreptun,'iu%ui este desenat cu cu%oarea curent& )i poate -i u!p%ut cu o
anu!it& cu%oare sau !ode% prin -unc2ia -%ood-i%%/
Prototipu% -unc2iei rectan,%e este B
<oid -ar rectan,%e 4int %e-t, int top, int ri,'t, int *otto!5 L
int %e-t co%2u% din st3n,a,
int top co%2u% de sus,
int ri,'t co%2u% din dreapta,
LIMBAJUL C TEORIE I APLICAI I :##
int *otto! co%2u% de +os,
Eemplu
#.ear'e&#e)*7
set"..stG.e )SOE9DA>9EE,SED*7
re#tan4.e )<0,<0,;<0,L0*7 desenea.& un dreptun,'i cu co%2u% st3n,a sus de
coordonate I#$, PI#$, iar co%2u% dreapta +os de
coordonate IF#$, PIG$, dreptun,'i de."o%tat pe
ori.onta%& de cu%oare a%*&/
set"..stG.e )SOE9DA>9EE,OEUE*7
set#o.or )SED*7
re#tan4.e )1<0,B00,1L0,;00*7 desenea.& un dreptun,'i cu co%2u% st3n,a sus
de coordonate I:#$, PIE$$, iar co%2u% dreapta +os
de coordonate I:G$, PIF$$, dreptun,'i
de."o%tat pe "ertica%& de cu%oare ro)u,
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1... >ine
Ounc2ia %ine desenea.& o %inie 4un se,!ent de dreapt&5 6ntre dou& puncte speci-icate de
uti%i.ator, cu cu%oarea, tipu% de %inie setat anterior ape%&ri -unc2iei %ine/ Po.i2ia
cursoru%ui ,ra-ic nu este !odi-icat& de -unc2ia %ine/
Prototipu% -unc2iei %ine este B
<oid -ar %ine 4int :, int P:, int E, int PE5 L
int : coordonata a pri!u%ui punct ce de%i!itea.& %inia,
int P:coordonata P a pri!u%ui punct ce de%i!itea.& %inia ,
int E coordonata a ce%ui de0a% doi%ea punct ce de%i!itea.& %inia,
int PE coordonata P a ce%ui de0a% doi%ea punct ce de%i!itea.& %inia,
Eemplu.
#.ear'e&#e)*7
set"..stG.e )SOE9DA>9EE,SED*7
.ne )<0,<0,;<0,<0*7 desenea.& o %inie ori.onta%& 6ntre puncte%e de
coordonate I#$, PI#$ )i IF#$, PI#$, cu%oarea
)i sti%u% %iniei setat anterior,
.ne )L0,N0,L0,B00*7 desenea.& o %inie "ertica%& 6ntre puncte%e de
coordonate IG$, PI=$ )i IG$, PIE$$, cu%oarea
)i sti%u% %iniei setat anterior,
set"..stG.e )SOE9DA>9EE,OEUE*7
set#o.or )SED*7
LIMBAJUL C TEORIE I APLICAI I :#G
.ne )1<0,B00,:L0,:00*7 desenea.& o %inie 6nc%inat& 6ntre puncte%e de
coordonate I:#$, PIE$$ )i I1G$, PI1$$,
cu%oarea ro)ie )i sti%u% %iniei setat anterior,
p/ts )3apasa o tasta3*7
4et#1 45L
O
%.1./. Mo#eto
Ounc2ia !o"eto p%asea.& cursoru% ,ra-ic 6n punctu% de coordonate , P
speci-icate de uti%i.ator prin ar,u!ente%e -unc2iei/
Dep%asarea cursoru%ui ,ra-ic 6ntr0un punct este necesar 6naintea ape%&rii -unc2ii%or
%inere%, %ineto, outtet, !o"ere%/
Prototipu% -unc2iei !o"e este B
<oid -ar !o"e 4int ,int P5 L
int coordonata a punctu%ui de po.i2ionare pentru cursoru% ,ra-ic,
int P coordonata P a punctu%ui de po.i2ionare pentru cursoru% ,ra-ic,
%.1.1. linerel
-unc2ia %inere% desenea.& un se,!ent de dreapt& din po.i2ia curent& a
cursoru%ui ,ra-ic, %a punctu% situat re%ati" -a2& de po.i2ia cursoru%ui ,ra-ic prin
dep%as&ri%e d, dP / Dep%as&ri%e re%ati"e d )i dP pot a"ea "a%ori po.iti"e, nu%e sau
ne,ati"e/ Linia desenat& respect& cu%oarea, sti%u% )i !ode%u% setate anterior ape%&rii
-unc2iei %inere%/ 7e reco!and& ca anterior ape%&rii -unc2iei %inere% s& se ape%e.e -unc2ia
!o"e pentru po.i2ionarea cursoru%ui ,ra-ic 6n po.i2ia dorit&/
Prototipu% -unc2iei %inere% este B
<oid -ar %inere% 4int d, int dP5 L
int d dep%asarea re%ati"& a cap&tu%ui se,!entu%ui de dreapt& pe direc2ia aei
6n raport cu po.i2ia cursoru%ui ,ra-ic,
int dP dep%asarea re%ati"& a cap&tu%ui se,!entu%ui de dreapt& pe direc2ia aei P
6n raport cu po.i2ia cursoru%ui ,ra-ic/
Eemplu
#.ear'e&#e)*7
set"..stG.e )SOE9DA>9EE,SED*7
LIMBAJUL C TEORIE I APLICAI I :#=
(o&eto )<0,<0*7 po.i2ionarea cursoru%ui ,ra-ic 6n punctu% de
coordonate I#$, PI#$, necesar pentru trasarea
se,!entu%ui de dreapt& din acest punct,
.nere. );00,0*7 desenarea se,!entu%ui de dreapt& din po.i2ia
cursoru%ui ,ra-ic, ape%at prin -unc2iia anterioar&
!o"eto, %a nou% punct dec%arat prin coordonate%e
re%ati"e dIF$$, dPI$, re.u%t& o dreapt&
ori.onta%& indentic& cu dreapta o*2inut& prin
ape%area -unc2iei .ne )<0,<0,;<0,<0*7din
ee!p%u% anterior/Oo%osirea acestui !od de trasare
a unei %inii per!ite si!p%i-icarea ar,u!ente%or de
ape%are a -unc2ii%or de desenare/
(o&eto )L0,N0*7 po.i2ionarea cursoru%ui ,ra-ic 6n punctu% de
coordonate IG$, PI=$, necesar pentru trasarea
se,!entu%ui de dreapt& din acest punct,
.nere. )0,1:0*7 desenarea se,!entu%ui de dreapt& din po.i2ia
cursoru%ui ,ra-ic, ape%at prin -unc2iia anterioar&
!o"eto, %a nou% punct dec%arat prin coordonate%e
re%ati"e dI$, dPI:1$, re.u%t& o dreapt& "ertica%&
identic& cu dreapta o*2inut& prin ape%area -unc2iei
.ne )L0,N0,L0,B00*7
set"..stG.e )SOE9DA>9EE,OEUE*7
set#o.or )SED*7
(o&eto )1<0,B00*7 po.i2ionarea cursoru%ui ,ra-ic 6n punctu% de
coordonate I:#$, PIE$$, necesar pentru trasarea
se,!entu%ui de dreapt& din acest punct,
.nere. )B10,100*7 desenarea se,!entu%ui de dreapt& din po.i2ia
cursoru%ui ,ra-ic, ape%at prin -unc2iia anterioar&
!o"eto, %a nou% punct dec%arat prin coordonate%e
re%ati"e dIE:$, dPI:$$, re.u%t& o dreapt&
6nc%inat& identic& cu dreapta o*2inut& prin ape%area
-unc2iei .ne )1<0,B00,:L0,:00*7
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1.2. lineto
-unc2ia %ineto desenea.& un se,!ent de dreapt& din po.i2ia curent& a cursoru%ui ,ra-ic %a
punctu% de coordonate, , P speci-icate 6n ar,u!ente%e -unc2iei/
LIMBAJUL C TEORIE I APLICAI I :#>
Linia desenat& respect& cu%oarea, sti%u% )i !ode%u% setate anterior ape%&rii -unc2iei
%ineto/ 7e reco!and& ca anterior ape%&rii -unc2iei %ineto s& se ape%e.e -unc2ia !o"e
pentru po.i2ionarea cursoru%ui ,ra-ic 6n po.i2ia dorit&/
Prototipu% -unc2iei %ineto este B
"oid -ar %ineto 4int , int P5 L
int coordonata a punctu%ui de ter!inare pentru %inia desenat&,
int P coordonata P a punctu%ui de ter!inare pentru %inia desenat&,
Eemplu.
#.ear'e&#e)*7
set"..stG.e )SOE9DA>9EE,SED*7
(o&eto )<0,<0*7
.neto );<0,<0*7 desenea.& un se,!ent de dreapt& din po.i2ia
curent& a cursoru%ui ,ra-ic indicat& de -unc2ia
!o"eto, %a punctu% de coordonate IF#$, PI#$,
re.u%t& o dreapt& ori.onta%& identic& cu dreapta
trasat& prin -unc2ii%e .ne )<0,<0,;<0,<0*7 )i
.nere. );00,0*7din ee!p%e%e anterioare,
(o&eto )L0,N0*7
.neto )L0,B00*7 desenea.& un se,!ent de dreapt& din po.i2ia
curent& a cursoru%ui ,ra-ic indicat& de -unc2ia
!o"eto, %a punctu% de coordonate IG$, PIE$$,
re.u%t& o dreapt& "ertica%& identic& cu dreapta
trasat& prin -unc2ii%e .ne )L0,N0,L0,B00*7 )i
.nere. )0,1:0*7 din ee!p%e%e anterioare,
set"..stG.e )SOE9DA>9EE,OEUE*7
set#o.or )SED*7
(o&eto )1<0,B00*7
.neto ):L0,:00*7 desenarea se,!entu%ui de dreapt& din po.i2ia
cursoru%ui ,ra-ic, ape%at prin -unc2iia anterioar&
!o"eto, %a nou% punct dec%arat prin coordonate%e
I1G$, PI1$$, re.u%t& o dreapt& 6nc%inat& identic&
cu dreapta o*2inut& prin ape%area -unc2ii%or .ne
)1<0,B00,:L0,:00*7 )i .nere. )B10,100*7
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1.10. mo#erel
Ounc2ia !o"ere% po.i2ionea.& cursoru% ,ra-ic re%ati" -a2& de "ec'ea po.i2ie cu
dep%asari%e d )i dP indicate prin ar,u!ente%e -unc2iei/
<a%ori%e dep%as&ri%or d )i dP pot a"ea "a%ori ne,ati"e, nu%e sau po.iti"e/
LIMBAJUL C TEORIE I APLICAI I :#9
Prototipu% -unc2iei !o"ere% este B
<oid -ar !o"ere% 4int d, int dP5 L
int d Idep%asarea pe direc2ia aei ,
int dP I dep%asarea pe direc2ia aei P/
Ounc2ia !o"ere% este -o%osit& dup& ape%area -unc2iei set"ie(port, datorit& -aptu%ui
c& po.i2ia curent& a cursoru%ui ,ra-ic de"ine $,$ raportat %a co%2u% st3n,a sus a -erestrei
curente de desenare/
Eemplu.
#.ear'e&#e)*7
set&eWport)1<0,1<0,x(ax,G(ax,0*7de-inirea .onei curente de a-i)are
,ra-ic&, cu co%2u% st3n,a sus dat de coordonate%e
I:#$, PI:#$, ce are ca e-ect )i po.i2ionarea
cursoru%ui ,ra-ic 6n co%2u% st3n,a sus a -erestrei
curente/
set"..stG.e )SOE9DA>9EE,SED*7
(o&ere. )<0,<0*7 dep%asarea re%ati"& a cursoru%ui ,ra-ic cu dI#$,
dPI#$ -a2& de "ec'ea po.i2ie a acestuia,
.neto );<0,<0*7 desenarea noi%or entit&2i raportate %a noua po.i2ie
a cursoru%ui ,ra-ic 6n noua -ereastr&,
(o&eto )L0,N0*7
.neto )L0,B00*7
set"..stG.e )SOE9DA>9EE,OEUE*7
set#o.or )SED*7
(o&eto )1<0,B00*7
.neto ):L0,:00*7
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1.11. dra,pol+
Ounc2ia dra(po%P per!ite desenarea unei po%i%inii cu un nu!&r de "3r-uri speci-icat de
uti%i.ator c3t )i coordonate%e , P a%e -iec&rui "3r-/
Dac& se dore)te rea%i.area unei po%i%inii 6nc'ise 4po%i,on5 este necesar ca nu!&ru% de
"3r-uri s& -ie cu : !ai !are dec3t nu!&ru% de "3r-uri a%e po%i,onu%ui )i coordonate%e
u%ti!u%ui "3r- s& -ie indentice cu coordonate%e pri!u%ui "3r-/
Desenarea po%i%iniei se -ace cu cu%oarea, tipu% de %inie )i !ode%u% curent/
Prototipu% -unc2iei dra(po%P este B
<oid -ar dra(po%P 4int nu!&r "3r-uri, int -arQpuncte5 L
Int nu!&r "3r-uri I nu!&ru% de "3r-uri a%e po%i%iniei sau po%i,onu%ui,
Qpuncte coordonate%e , P a%e puncte%or ce indic& "3r-uri%e, este un ta*%ou de
tip "ector cu !&ri!ea e,a%& cu nu!&ru% de "3r-uri E/
LIMBAJUL C TEORIE I APLICAI I :G$
Ast-e% B
puncte 9$; I coordonata a "3r-u%ui :,
puncte 9:; I coordonata P a "3r-u%ui :,
puncte 9E; I coordonata a "3r-u%ui E,
puncte 91; I coordonata P a "3r-u%ui E,
]//
puncte 9En0E; I coordonata P a "3r-u%ui n/
Eemplu.
nt x(ax,G(ax, p/n#te ?10@,p/n#te1 ?10@7 dec%ararea ta*%ouri%or puncte )i
puncte: care con2in coordonate%e ,P a%e
"3r-uri%or po%i%iniei,
C
#.ear'e&#e)*7
set&eWport)100,100,x(ax,G(ax,0*7
set"..stG.e )SOE9DA>9EE,SED*7
set#o.or )SED*7
p/n#te ?0@=B07 atri*uirea coordonatei a pri!u%ui "3r-,
p/n#te ?1@=107 atri*uirea coordonatei P a pri!u%ui "3r-,
p/n#te ?B@=;07 atri*uirea coordonatei a "3r-u%ui E,
p/n#te ?:@=107 atri*uirea coordonatei P a "3r-u%ui E,
p/n#te ?;@=;07
p/n#te ?<@=B078Q
p/n#te ?L@=B07
p/n#te ?N@=B07
p/n#te ?8@=B07 atri*uirea coordonatei a u%ti!u%ui "3r- identic&
cu coordonata pri!u%ui "3r-,
p/n#te ?Q@=107 atri*uirea coordonatei P a u%ti!u%ui "3r- identic&
cu coordonata pri!u%ui "3r-,
'raWpo.G )<,p/n#te*7 desenarea unei po%i%inii cu # "3r-uri %a care "3r-u%
: este identic cu "3r-u% #, re.u%t& un patru%ater
4po%i,on 6nc'is5,
p/n#te1 ?0@=B007 atri*uirea coordonatei a pri!u%ui "3r-, pentru o
nou& po%i%inie,
p/n#te1 ?1@=1007
p/n#te1 ?B@=;007
p/n#te1 ?:@=1007
p/n#te1 ?;@=:007
p/n#te1 ?<@=B007
p/n#te1 ?L@=B07
p/n#te1 ?N@=<07
p/n#te1 ?8@=1B07
p/n#te1 ?Q@=1:07
'raWpo.G )<,p/n#te1*7 desenarea unei po%i%inii desc'ise cu # "3r-uri,
coordonate%e "3r-uri%or -ind 6n ta*%ou% puncte:,
p/ts )3apasa o tasta3*7
4et#1 )*7
LIMBAJUL C TEORIE I APLICAI I :G:
,
%.1.12. ellipse
Ounc2ia e%%ipse desenea.& un arc de e%ips& %a care uti%i.atoru% preci.ea.& prin
ar,u!ente%e -unc2iei B
centru e%ipsei, un,'iu% de 6nceput, un,'iu% de s-3r)it )i ce%e dou& ra.e pe
direc2ii%e ,P/
Desenarea arcu%ui de e%ips& 6ncepe de %a un,'iu% de 6nceput 6n sens tri,ono!etric spre
un,'iu% de s-3r)it/ <a%oarea $ a un,'iu%ui este considerat Suadrantu% din dreapta a
e%ipsei din care -ace parte arcu% de e%ips&/ Trasarea arcu%ui este 6n concordan2& cu
cu%oarea , ,rosi!ea %iniei dar pentru !ode%u% de %inie -o%ose)te tipu% continu&/
Prototipu% -unciei e%%ipse este B
<oid -ar e%%ipse 4int , int P, int un,'ifinceput, int un,'ifs-3r)it, int ra.a, int
Pra.a5 L
int I coordonata a centru%ui e%ipsei din care -ace parte arcu%,
int PI coordonata a centru%ui e%ipsei din care -ace parte arcu%,
int un,'ifinceput I!&ri!ea un,'iu%ui de inceput a arcu%ui de e%ips&,
int un,'ifs-3r)itI!&ri!ea un,'iu%ui de s-3r)it a arcu%ui de e%ips&,
int ra.aIra.a e%ipsei pe direc2ia ,
int Pra.a5 Ira.a e%ipsei pe direc2ia P L
Eemplu
#.ear'e&#e)*7
set"..stG.e )SOE9DA>9EE,SED*7
e..pse )100,B00,0,Q0,;0,80*7desenea.& un arc de e%ips& cu centru% 6n
punctu% de coordonate I:$$, PIE$$, cu un,'iu%
de 6nceput $ iar un,'iu% de s-3r)it I9$, ra.a pe
IF$, ra.a pe P I>$/
Dac& ce%e dou& ra.e sunt e,a%e re.u%t& un arc de
cerc/
e..pse )B00,B00,0,-;<,;0,100*7 desenea.& un arc de e%ips& cu centru% 6n
punctu% de coordonate IE$$, PIE$$, cu un,'iu%
de 6nceput $ iar un,'iu% de s-3r)it I0F#, ra.a pe
IF$, ra.a pe P I:$$ care are ca e-ect desenarea
unui arc de e%ips& ce se des-&)oar& pe = p&r2i din
ce%e > p&r2i a%e e%ipsei/
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1.13. fillellipse
Ounc2ia -i%%e%%ipse desenea.& o e%ips& co!p%et&/ Cu%oarea de desenare )i !odu% de
u!p%ere sunt a%ese -unc2ie de set&ri%e curente/ Para!etrii -unc2iei -i%%e%ipse sunt centru%
LIMBAJUL C TEORIE I APLICAI I :GE
e%ipsei )i ce%e dou& ra.e pe direc2ii%e )i P/ Dac& ce%e dou& ra.e sunt e,a%e e%ipsa
desenat& este un cerc p%in/
Prototipu% -unc2iei -i%%e%%ipse este B
<oid -ar -i%%e%%ipse 4int , int P, int ra.a, int ra.aP5 L
int I coordonata a centru%ui e%ipsei,
int P I coordonata P a centru%ui e%ipsei,
int ra.a I!&ri!ea ra.ei e%ipsei pe direc2ia ,
int ra.aP I!&ri!ea ra.ei e%ipsei pe direc2ia P,
Eemplu
#.ear'e&#e)*7
set"..stG.e )SOE9DA>9EE,OEAY`*7setarea cu%orii de u!p%ere indentic cu
cu%oarea de -ond -erestrei de desenare, care "a
crea i%u.ia c& e%ipsa este trasat& nu!ai prin
conturu% ei,
"..e..pse )100,B00,;0,80*7desenarea e%ipsei cu centru% 6n punctu% de
coordonate I:$$, PIE$$ )i ra.e%e rIF$, rPI>$,
set"..stG.e )SOE9DA>9EE,SED*7setarea cu%oriide u!p%ere pe ro)u,
"..e..pse )B00,B00,100,<0*7 desenarea e%ipsei care "a a"ea cu%oarea de
contur a%* )i cu%oarea de u!p%ere ro)u,
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1.1%. fillpol+
Ounc2ia -i%%po%P desenea.& o po%i%inie 6nc'is& 4po%i,on 5 %a care se "a speci-ica
nu!&ru% de "3r-uri )i coordonate%e ,P a%e acestor "3r-uri/ 7pre deose*ire de -unc2ia
dra(po%P, -unc2ia -i%%po%P nu cere s& se speci-ice ca u%ti!u% "3r- s& -ie indentic cu
pri!u% "3r- )i 6nc'ide auto!at %inia po%i,ona%& de %a u%ti!u% "3r- indicat %a pri!u% "3r-
a% acesteia/Ta*%ou% ce con2ine coordonate%e "3r-uri%or are !&ri!ea du*%& -a2& de
nu!&ru% de "3r-uri/Pri!u% ter!en a% ta*%ou%ui ce con2ine coordonate%e ,P repre.int&
coordonata a pri!u%ui "3r-/
Prototipu% -unc2iei -i%%po%P este B
<oid -ar -i%%po%P 4int nu!&rf"3r-uri, int -arQpuncte5 L
int nu!&rf"3r-uri I nu!&ru% de "3r-uri a%e po%i%iniei sau po%i,onu%ui,
QpuncteI coordonate%e , P a%e puncte%or ce indic& "3r-uri%e, este un ta*%ou de
tip "ector cu !&ri!ea e,a%& cu nu!&ru% de "3r-uri E/

Eemplu
LIMBAJUL C TEORIE I APLICAI I :G1
#.ear'e&#e)*7
set&eWport)100,100,x(ax,G(ax,0*7
set"..stG.e )SOE9DA>9EE,SED*7
set#o.or )SED*7
p/n#te ?0@=B07 atri*uirea coordonatei a pri!u%ui "3r-,
p/n#te ?1@=107 atri*uirea coordonatei P a pri!u%ui "3r-,
p/n#te ?B@=;07 atri*uirea coordonatei a "3r-u%ui E,
p/n#te ?:@=107 atri*uirea coordonatei P a "3r-u%ui E,
p/n#te ?;@=;07
p/n#te ?<@=B07
p/n#te ?L@=B07
p/n#te ?N@=B07 atri*uirea coordonatei P a u%ti!u%ui "3r-
"..po.G );,p/n#te*7 desenarea po%i,onu%ui cu F "3r-uri, cu%oarea de
u!p%ere ro)u )i cu%oarea de desenare a%*
p/n#te1 ?0@=B007
p/n#te1 ?1@=1007
p/n#te1 ?B@=;007
p/n#te1 ?:@=1007
p/n#te1 ?;@=:007
p/n#te1 ?<@=B007
"..po.G ):,p/n#te1*7 desenarea po%i,onu%ui cu 1 "3r-uri 4triun,'i5
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1.1'. floodfill
Ounc2ia -%ood-i%% u!p%e .ona 6nc'is& care con2ine punctu% speci-icat de
uti%i.ator prin coordonate%e ,P/ Mode%u% )i cu%oarea de u!p%ere sunt ce%e setate curent
prin -unc2ia set-i%%stP%e/ Punctu% care deter!in& entitatea ce se u!p%e tre*uie s& -ie 6n
interioru% entit&2ii )i nu pe conturu% ei/ Entit&2ii%e asupra c&rora -unc2ia -%ood-i%% sunt B
circ%e 4cercu%5, rectan,%e 4dreptun,'iu%5/
Prototipu% -unc2iei -%ood-i%% este B
<oid -ar -%ood-i%% 4int , int P, int !ar,ine5 L
int I coordonata a punctu%ui interior a entit&2ii ce se u!p%e cu cu%oare )i
!ode% ,
int PI coordonata P a punctu%ui interior a entit&2ii ce se u!p%e cu cu%oare )i
!ode% ,
int !ar,ine Icu%oarea entit&2ii care con2ine punctu% speci-icat/
Eemplu
#.ear'e&#e)*7
set"..stG.e )SOE9DA>9EE,OEUE*7
set#o.or )SED*7
LIMBAJUL C TEORIE I APLICAI I :GF
re#tan4.e )<0,<0,B00,:00*7
set#o.or )MSEEN*7
#r#.e ):00,B00,<0*7
".oo'".. )100,1<0,SED*7 u!p%erea entit&2ii ce con2ine punctu% de
coordonate :$$,:#$ 6n ca.u% de -a2& dreptun,'iu%
care are ca )i cu%oare de ,rani2& cu%oarea ro)u ,
u!p%erea se -ace cu cu%oarea a%*astru,
".oo'".. ):00,B00,MSEEN*7 u!p%erea entit&2ii ce con2ine punctu% de
coordonate 1$$,E$$ 6n ca.u% de -a2& cercu% care
are ca )i cu%oare de ,rani2& cu%oarea "erde ,
u!p%erea se -ace cu cu%oarea a%*astru,
p/ts )3apasa o tasta3*7
4et#1 )*7
,
%.1.1.. outte)t
Ounc2ia outtet per!ite a-i)area unui )ir de caractere, %a po.i2ia curent& a
cursoru%ui ,ra-ic/7e reco!and& ca anterior ape%&rii -unc2iei outtet s& se ape%e.e -unc2ia
!o"eto pentru po.i2ionarea cursoru%ui ,ra-ic 6n po.i2ia de unde s& -ie a-i)at tetu%/ iru%
de caractere a-i)at de -unc2ia outtet poate -i direct speci-icat 6n ape%area -unc2iei c3t )i
prin ape%area unui ta*%ou de caractere ce con2ine tetu%/
A%inierea , cu%oarea, -ontu%, !&ri!ea )i direc2ia tetu%ui sunt ce%e curente/
Po.i2ia cursoru%ui ,ra-ic este in-%uen2at& de -unc2ia tet nu!ai 6n ca.u% a%inierii %a
st3n,a )i direc2ia ori.onta%&, 6n acest ca. cursoru% ,ra-ic se po.i2ionea.& %a ter!inarea
tetu%ui a-i)at/ Dac& )iru% de caractere a-i)at de -unc2ia outtet dep&)e)te !ar,ini%e
.onei curente de a-i)are se trunc'ia.&/
Prototipu% -unc2iei outtet este B
<oid -ar outtet 4c'ar Q-ar )ir de caractere5 L
c'ar Q-ar )ir de caractereI )iru% de caractere ce se a-i)ea.& sau denu!irea
ta*%ou%ui ce con2ine )iru% de caractere/
Eemplu
P
#1ar text1 ?:0@7 dec%ararea unui ta*%ou ce "a con2ine un )ir de
caractere
nt x(ax,G(ax7
#.rs#r )*7
p/ts )3'at text/.3*7
s#an" )3=s3,text1*7 citirea )iru%ui de caractere ce "a -i !e!orat 6n
ta*%ou% tet:
C0
#.ear'e&#e)*7
set#o.or )SED*7
LIMBAJUL C TEORIE I APLICAI I :G#
o/ttext )3s#rere pe pr(a .ne stn4a 3*7 ape%area -unc2iei de
a-i)are a tetu%ui s#rere pe pr(a .ne
stn4a , care "a -i po.i2ionat pe pri!a %inie )i
pri!a co%oan& a -erestrei de a-i)are 4%a po.i2ia
curent& a cursoru%ui ,ra-ic,5
set#o.or )MSEEN*7
o/ttext )3text B n #ontn/area pr(/./ text3*7 -unc2ia outtet "a
a-i)a nou% )ir de caractere %a noua po.i2ie a
cursuru%ui ,ra-ic, care se a-%& %a s-3r)itu% )iru%ui de
caractere de %a ape%area anterioar& a
-unc2ieiouttet,
#r#.e ):00,B00,<0*7
(o&eto ):00,B00*7 dep%asarea cursoru%ui ,ra-ic 6n centru% cercu%ui,
o/ttext )3s#rerea 'n #entr/. #er#/./3*7 a-i)area tetu%ui din centru%
cercu%ui, datorit& -unc2iei !o"eto care a po.i2ionat
cursoru% ,ra-ic/
(o&eto )B00,100*7
o/ttext )text1*7 pre%uarea tetu%ui de a-i)at din ta*%ou% tet:/
4et#1 )*7
,
%.1.1/. outte)t)+
Ounc2ia outtetP ca )i -unc2ia outtet a-i)ea.& )iru% de caractere speci-icat prin
para!etri -unc2iei, dar a-i)area se 6ncepe din punctu% de coordonate ,P/ Toate
in-or!a2ii%e de %a -unc2iaouttet r6!3n "a%a*i%e )i %a -unc2ia outtetP/
Prototipu% -unc2iei outtetP este B
<oid -ar outtetP 4int , int P, c'ar -arQ)ir de caractere5 L
int Icoordonata a punctu%ui de unde 6ncepe a-i)area tetu%ui,
int PIcoordonata P a punctu%ui de unde 6ncepe a-i)area tetu%ui,
c'ar Q-ar )ir de caractereI )iru% de caractere ce se a-i)ea.& sau denu!irea
ta*%ou%ui ce con2ine )iru% de caractere/
Eemplu
C
#1ar text1 ?:0@7
nt x(ax,G(ax7
#.rs#r )*7
p/ts )3'at text/.3*7
s#an" )3=s3,text1*7
C
#.ear'e&#e)*7
set#o.or )SED*7
LIMBAJUL C TEORIE I APLICAI I :GG
o/ttextxG )100,B00,3s#rere 'n p/n#t/. x=100,G=B00 3*7 ape%area
-unc2iei outtetP care "a a-i)a )iru% de caractere
s#rere 'n p/n#t/. x=100,G=B00 6ncep3nd
din punctu% de coordonate I:$$, PIE$$,
set#o.or )MSEEN*7
o/ttextxG )B00,:00,text1*7 -unc2ia outtetP "a pre%ua )iru% de caractere
din ta*%ou% tet: )i 6% "a a-i)a de %a punctu% de
coordonate IE$$, PI1$$,
4et#1 )*7
,
%.1.11. pieslice
Ounc2ia pies%ice per!ite desenarea unui sector de cerc )i u!p%e acest sector de
cerc cu !ode%u%, cu%oarea )i tipu% de %inie curent/
Uti%o.atoru% "a preci.a coordonte%e ,P a%e centru%ui cercu%ui, "a%oarea
un,'iu%ui de 6nceput, a un,'iu%ui de ter!inare )i ra.a cercu%ui/
Desenarea sectoru%ui de cerc are %oc de %a "a%oarea cea !ai !ic& a un,'iu%ui
spre "a%oarea cea !ai !are a un,'iu%ui indi-erent de ordinea de introducere a "a%ori%or/
Eist& o sin,ur& situa2ie c3nd sectoru% de cerc se desenea.& 6n sens tri,ono!etric de %a
un,'iu% po.iti" %a un,'iu% ne,ati" dac& una sau a!*e%e "a%ori sunt ne,ati"e/
Prototipu% -unc2iei pies%ice este B
<oid -ar pies%ice 4int , int P, int un,'i start, int un,'i ter!inare, int ra.a5L
int I coordonata a centru%ui cercu%ui din care -ace parte sectoru% de cerc,
int PI coordonata P a centru%ui cercu%ui din care -ace parte sectoru% de cerc,
int un,'i startI"a%oarea un,'iu%ui de start,
int un,'i ter!inareI"a%oarea un,'iu%ui de ter!inare,
int ra.aI!&ri!ea ra.ei cercu%ui din care -ace parte sectoru% de cerc/
Eemplu
#.ear'e&#e)*7
set#o.or )SED*7
pes.#e )B00,B00,;<,B0,B<*7 desenarea sectoru%ui de cerc de %a un,'iu% cu
"a%oare !ini!& %a un,'iu% cu "a%oare !ai!& 4de
%a E$ %a F# ,rade,5
pes.#e ):00,B00,B0,;<,B<*7sectoru% de cerc desenat este de aceea)
!&ri!e un,'iu%ara ca )i 6n ca.u% precedent
set#o.or )MSEEN*7
pes.#e )100,:00,0,Q0,B<*7desenarea sectoru%ui de cerc de %a $ %a 9$ ,rade
cu aceea) desc'idere un,'iu%ar& ca 6n ca.u% ce
ur!ea.&,
pes.#e )B00,:00,Q0,0,B<*7
LIMBAJUL C TEORIE I APLICAI I :G=
pes.#e ):00,:00,;<,-Q0,B<*7desenarea sectoru%ui de cerc de %a un,'iu% de
F# ,rade 6n sens tri,ono!etric %a un,'iu% de
ter!inare H9$ ,rade,
pes.#e ):<0,:00,-Q0,;<,B<*7desenarea unui sector de cerc cu aceea)
desc'idere un,'iu%ar& ca )i 6n ca.u% precedent,
una din "a%ori este ne,ati"&,
pes.#e );00,:00,-;<,-Q0,B<*7desenarea sectoru%ui de cerc de %a HF# %a H9$
de ,rade, a!*e%e "a%ori un,'iu%are sunt ne,ati"e,
pes.#e ):<0,;00,0,-Q0,B<*7desenarea sectoru%ui de cerc de %a $ %a H9$
,rade 6n sens tri,ono!etric, "a%oarea $ este
considerat& po.iti"&,
4et#1 )*7
,
%.1.12. putpi)el
Ounc2ia putpie% desenea.& pe ecranu% ,ra-ic %a coordonate%e ,P un pie% de
cu%oarea speci-icat& prin para!etrii -unc2iei/
Prototipu% -unc2iei putpie% este B
<oid -ar putpie% 4int , int P, int cu%oare5 L
int Icoordonata a punctu%ui de po.o2ionare a pie%u%ui,
int PIcoordonata P a punctu%ui de po.o2ionare a pie%u%ui,
int cu%oareIcu%oarea de a-i)are a pie%u%ui/
Eemplu
#.ear'e&#e)*7
setbV#o.or )OEAY`*7 setarea cu%ori de -ond pe ne,ru
"or )=17<=107!!*
+
p/tpxe. )B00!,B10,SED*7 trasarea unei %inii ori.onta%edin :$ pie%i de
cu%oare ro)u,
p/tpxe. )B00,B00!,MSEEN*7trasarea unei %inii "ertica%e de :$ pie%i de
cu%oare "erde,
,
4et#1 )*7
,
%.1.20. sector
Ounc2ia sector desenea.& un sector de e%ips& 6ntre un,'iuri%e speci-icate/
7ectoru% de e%ips& este desenat de %a un,'iu% cu "a%oare !ini!& %a un,'iu% cu "a%oare
!ai!& dac& a!*e%e "a%ori a%e un,'iuri%or au ace%a) se!n/ Dac& una din "a%uri%e
LIMBAJUL C TEORIE I APLICAI I :G>
un,'iu%are este ne,ati"&, desenarea sectoru%ui de e%ips& se e-ectuea.& 6n sens
tri,ono!etric de %a un,'iu% de start %a un,'iu% de ter!inare/
U!p%erea sectoru%ui de e%ips& se -ace cu !ode%u% )i tipu% de %inie setat, iar conturu%
sectoru%ui se rea%i.ea.& cu cu%oarea setat& de -unc2ia setco%or/
Prototipu% -unc2iei sector este B
<oid -ar sector 4int , int P, int un,'iu% de start, int un,'iu% de ter!inare, int
ra.a, int ra.aP5L
int I coordonata a centru%ui e%ipsei,
int P I coordonata P a centru%ui e%ipsei,
int un,'iu% de startI"a%oarea un,'iu%ui de start,
int un,'iu% de ter!inareI"a%oarea un,'iu%ui de ter!inare 6nceput,
int ra.a I!&ri!ea ra.ei e%ipsei pe direc2ia ,
int ra.aP I!&ri!ea ra.ei e%ipsei pe direc2ia P/
Eemplu
#.ear'e&#e)*7
setbV#o.or )OEAY`*7
set#o.or )SED*7
se#tor )100, B00, 0, Q0,B0, ;0*7desenarea unui sector de e%ips& 6ntre
un,'iuri%e $, 9$, sectoru% -ace parte din e%ipsa cu
centru% 6n punctu% de coordonate I:$$, PIE$$ )i
ce%e dou& se!iae de E$ pe , F$ pe P,
se#tor )100,:00,Q0,0,B0,;0*7desenarea unui sector de e%ips& cu aceea)
desc'idere un,'iu%ar& ca 6n ca.u% anteriuor, dac&
un,'iuri%e sunt de ace%a) se!n, trasarea se -ace de
%a un,'iu% !ic %a un,'iu% !are,
se#tor )B00,:00,0,-Q0,B0,;0*7trasarea sectoru%ui de e%ips& se -ace de %a
un,'iu% po.iti" %a un,'iu% ne,ati" 6n sens
tri,ono!etric 4de %a dreapta %a st3n,a,5
se#tor ):00,:00,-Q0,0,B0,;0*7
se#tor ):00,;00,-80,-B0,B0,;0*7dac& a!*e%e un,'iuri sunt ne,ati"e,
desenarea sectoru%ui de e%ips& se -ace de %a
un,'iu% !ai ne,ati" %a un,'iu% !ai pu2in ne,ati"
6n sens tri,ono!etric,
se#tor );00,;00,-B0,-80,B0,;0*7
4et#1 )*7
,
LIMBAJUL C TEORIE I APLICAI I :G9
%.2. &uncii pentru setarea #ariabilelor in mod grafic
%.2.1. Setallpalette
Ounc2ia seta%%pa%ette per!ite !odi-icarea tuturor cu%ori%or din pa%eta curent& cu cu%ori%e
con2inute 6n noua pa%et& de cu%ori speci-icat& ca para!etru/
Prototipu% -unc2iei seta%%pa%ette este B
<oid -ar seta%%pa%ette 4struct pa%ettetPpe -arQpa%eta5L
struct pa%ettetPpe -arQpa%etaInoua pa%et& /
%.2.2. setb0color
Ounc2ia set*Zco%or per!ite sc'i!*area cu%ori -ondu%ui /
Prototipu% -unc2iei set*Zco%or este B
<oid -ar set*Zco%or 4int cu%oare5 L
int cu%oareI "a%oarea nu!eric& sau nu!e%e constantei de cu%oare scris& cu
!a+uscu%e BLACA/
%.2.3. Setcolor
Ounc2ia setco%or deter!i& cu%oarea curent& de desenare pentru tet,%inii, arce/
Prototipu% -unc2iei setco%or este B
<oid -ar setco%or 4int cu%oare5 L
int cu%oareI "a%oarea nu!eric& sau nu!e%e constantei de cu%oare
scris& cu !a+uscu%e BLUE/
%.2.%. setpalette
Ounc2ia setpa%ette !odi-ic& 6n pa%eta curent& o sin,ur& cu%oare cu o a%t&
cu%oare/
ndicarea cu%ori%or se -ace prin "a%oarea nu!eric& sau prin nu!e%e constantei de
cu%oare scris& cu !a+uscu%e/
Prototipu% -unc2iei setpa%ette este B
<oid -ar setpa%ette 4int nu!&ru% cu%ori din pa%et&, int noua cu%oare5 L
int nu!&ru% cu%ori din pa%et&I "a%oare 6ntrea,& $ %a :#,
int noua cu%oare I "a%oarea nu!eric& sau nu!e%e constantei de cu%oare scris&
cu !a+uscu%e WREEV/
LIMBAJUL C TEORIE I APLICAI I :=$
Eemplu
#.ear'e&#e)*7
setbV#o.or )B*7 setarea cu%ori pentru -unda% %a "a%oarea E
4WREEV5,
setpa.ette )1,LB*7 sc'i!*area cu%ori :4BLUE5 6n pa%eta de cu%ori cu
cu%oarea GE 4kELLO85,
set#o.or )1*7 setarea cu%ori de desenare pe cu%oarea :
se#tor )100, B00, 0, Q0,B0, ;0*7 se desenea.& un sector de e%ips& pe -ond
"erde, cu%oarea de desenare ,a%*en&, cu%oarea de
u!p%ere a%*& 4cu%oare ne!odi-icat& de -unc2ii%e
ape%ate,5
4et#1 )*7
,
%.2.'. setfillst+le
Ounc2ia set-i%%stP%e deter!in& cu%oarea )i !odu% de u!p%ere curent, para!etrii
-unc2iei "or indica !ode%u% de u!p%ere )i cu%oarea/
Mode%u% creat de uti%o.ator nu poate -i -o%osit prin inter!ediu% acestei -unc2ii, acest
!ode% se "a 6nc&rca prin -unc2ia set-i%%patern/
Prototipu% -unc2ie set-i%%stP%e este B
<oid -ar set-i%%stP%e 4int patern, int cu%oare5 L
int paternI "a%oarea nu!eric& sau denu!irea constantei ce indic& !ode%u% de
u!p%ere con-or! ta*e%u%ui ,
int cu%oareI "a%oarea nu!eric& sau nu!e%e constantei de cu%oare scris& cu
!a+uscu%e WREEV/
%.2... setfillpattern
Ounc2ia set-i%%pattern per!ite setarea unui !ode% de u!p%ere creeat de
uti%i.ator )i setarea cu%orii de u!p%ere/
Prototipu% -unc2iei este B
<oid -ar set-i%%pattern 4c'ar -arQpatern:, int cu%oare5 L
c'ar -arQpatern:I !ode%u% de u!p%ere creeat de uti%i.ator prin inter!ediu%
unui ta*%ou de > caractere ce con2ine > "a%ori care indic& dac& pie%u% corespun.&tor "a
a"ea "a%oarea curent& sau "a a"ea "a%oarea nesc'i!*at&,
int cu%oareI cu%oarea de u!p%ere/
Eemplu
LIMBAJUL C TEORIE I APLICAI I :=:
#1ar text1 ?:0@, patern1 ?8@=
+0x00,0x10,0x18,0x11,0x11,0xB8,0x00,0x10,7 creearea unui!ode% de
u!p%ere de c&tre uti%i.ator prin scrierea "a%ori%or
6n ta*%ou% patern: care "a -i a%es ca para!etru %a
ape%area -unc2iei set-i%%pattern,
nt x(ax,G(ax,7
C
#.ear'e&#e)*7
set#o.or )1*7
set"..pattern )patern1,1<*7 setarea !ode%u%ui de u!p%ere pentru un
!ode% creat de uti%i.ator prin indicarea "a%ori%or
din ta*%ou% patern:, cu%oarea de u!p%ere este :#,
se#tor )100, B00, 0, BN0,L0, 1;0*7desenarea sectoru%ui de e%ips& cu
!ode%u% de u!p%ere creat de uti%i.ator, setat
anterior ca !ode% curent,
4et#1 )*7
,
Eemplu
C0
#.ear'e&#e)*7
set#o.or )1*7
set"..stG.e )N,1<*7 a%e,erea !ode%u%ui de u!p%ere corespun.&tor
"a%orii = )i a%e,erea cu%orii de u!p%ere
corespun.&toare "a%orii :# Ia%*,
se#tor )100, B00, 0, BN0,L0, 1;0*7desenarea unui sector de e%ips& cu
!ode%u% de u!p%ere setat anterior )i cu%oarea de
u!p%ere a%*,
4et#1 )*7
,
%.2./. setlinest+le
Ounc2ia set%inestP%e per!ite a%e,erea sti%u%ui, !ode%u%ui )i a% ,rosi!ii %iniei de
desenare/
Prototipu% -unc2iei set%inestP%e este B
<oid -ar set%inestP%e 4int sti%u% %iniei, unsi,ned !ode%, int ,rosi!e5 L
int sti%u% %inieiI o "a%oare nu!eric& sau o constant& ce de-ine)te sti%u% %iniei
$II7OLIDfLIVE sau :IIDOTTEDfLIVE//,
unsi,ned !ode% Iun !ode% de :G *i2i care indic& cu! "a ar&ta %inia ,
"a%oarea $OOOO indic& o %inie continu&
LIMBAJUL C TEORIE I APLICAI I :=E
"a%oarea ::$::$::$::$::$: indic& o %inie punctat& cu E pie%i aprin)i, un
pie% stins ,
int ,rosi!eI o "a%oare I: pentru ,rosi!ea de un pie%, "a%oare I1 pentru
,rosi!ea %iniei de 1 pie%i/
Eemplu
#.ear'e&#e)*7
set#o.or )1*7
set.nestG.e )0,0xAAAA,:*7setarea sti%u%ui de %inie pe tipu% continu& I$ cu
,rosi!ea de 1 pie%i, !ode%u% uti%i.atoru%ui nu
in-%uen&ea.& aspectu% %iniei,
.ne )100,80,;00,80*7 desenarea unei %ini continue
set.nestG.e );,1111100001111101,:*7 sti%u% %iniei este de-init de uti%i.ator
prin "a%oarea F, iar !ode%u% de %inie de-init de
uti%i.ator este de # pie%i aprin)i, F pie%i stin)i, #
pie%i aprin)i, : pie% stins, : pie% aprins,
.ne )100,100,;00,100*7 %inia ce se desenea.& "a respecta !ode%u% de %inie
creeat de uti%i.ator )i setat prin -unc2ia
set%inestP%e,
set.nestG.e );,0xAAAA,:*7 setarea unui nou sti% de %inie cu un nou
!ode% creeat de uti%i.ator prin $AAAA,
.ne )100,1B0,;00,1B0*7
4et#1 )*7
,
%.2.1. sette)tjustif+
Ounc2ia settet+usti-P setea.& !odu% de a%iniere ori.onta% )i "ertica% a% tetu%ui
6n raport cu po.i2ia curent& a cursoru%ui ,ra-ic/ Para!etrii -unc2iei settet+usti-P tre*uie
s& -ie 6n concordan2& cu "a%ori%e nu!erice sau a constante%or ,ra-ice din ta*e%u% ]/
Prototipu% -unc2iei settet+usti-P este B
<oid -ar settet+usti-P 4int ori.onta%, int "ertica%5 L
int ori.onta% I "a%oare nu!eric& $, :, E sau constante%e LEOTfTEXT,
CEVTERfTEXT sau RIWYTfTEXT ce indic& a%inierea tetu%ui pe ori.onta%&,
int "ertica% I"a%oare nu!eric& $, :, E, sau constante%e BOTTOMfTEXT,
CEVTERfTEXT, TOPfTEXT/
A%inierea i!p%icit& ori.onta%& este %a st3n,a iar a%inierea "ertica%& este
TOPfTEXT/
Eemplu
n acest ee!p%u s0au -o%osit drepte ca reper pentru co!pararea a%inierii tetu%ui
6n raport cu aceste drepte/ Prin -unc2ia !o"eto s0a po.i2ionat cursoru% ,ra-ic %a
inceputu% dreptei din .ona unde se "a a-i)a tetu%/
#.ear'e&#e)*7
LIMBAJUL C TEORIE I APLICAI I :=1
settext6/st"G )0,0*7 a%inierea ori.onta%& %a st3n,a iar "ertica% +os,
set#o.or );*7
(o&eto )B00,;0*7 po.i2ionarea cursoru%ui ,ra-ic %a cap&tu%
se,!entu%ui de dreapt&,
o/ttext )3a.nat stn4a 6os3*7 a-i)area tetu%ui cu set&ri%e de a%iniere
date de -unc2ia settet+usti-P )i po.i2ionarea
acestuia %a cursoru% ,ra-ic,
.ne )B00,;0,B00,L0*7 a-i)area %iniei -o%osit& ca reper,
settext6/st"G )1,0*7 !odi-icarea a%inierii ori.onta%e %a "arianta centrat
%a po.i2ia cursoru%ui ,ra-ic,
(o&eto )B<0,80*7
o/ttext )3a.nat #entrat 6os3*7
.ne )B<0,80,B<0,100*7
settext6/st"G )B,0*7 !odi-icarea a%inierii ori.onta%e %a "arianta dreapta
%a po.i2ia cursoru%ui ,ra-ic,
(o&eto )BN0,100*7
o/ttext )3a.nat 'reapta 6os3*7
.ne )BN0,100,BN0,1B0*7
settext6/st"G )0,1*7 !odi-icarea a%inierii "ertica%e %a "arianta centrat %a
po.i2ia cursoru%ui ,ra-ic,
(o&eto )BQ0,1B0*7
o/ttext )3a.nat stn4a #entrat3*7
.ne )BQ0,1B0,BQ0,1;0*7
4et#1 )*7
,
%.2.2. sette)tst+le
Ounc2ia settetstP%e setea.& caracteristici%e -ontu%ui cu care se "a a-i)a tetu%/
Caracteristici%e ce se !odi-ic& sunt B
Oontu%/
Direc2ia de scriere a -ontu%ui/
Di!ensiunea -ontu%ui/
Para!etrii -unc2iei settetstP%e pot %ua "a%ori nu!erice sau constante ,ra-ice con-or!
ta*e%e%or]
Pentru direc2ie "a%oarea i!p%icit& este $I YORIifDIR, iar pentru !&ri!ea -ontu%ui se
-o%osesc "a%ori 6nte : )i :$/
Prototipu% -unc2iei settetstP%e este B
<oid -ar settetstP%e 4int -ont, int direc2ie, int !&ri!ea caracteru%ui5 L
int -ont I"a%oare nu!eric& $ %aF sau constante ,ra-ice DEOAULTfOOVT,
TRIPLEXfOOVT, 7MALLfOOVT, 7AVf7ERIOfOOVT, WOTYICfOOVT care indic&
nou% -ont pentru a-i)area tetu%ui,
int direc2ieI "a%oare nu!eric& $, : sau constanta ,ra-ic& YORIifDIR,
<ERTfDIR care indic& sensu% de scriere a tetu%ui, "ertica% Iscriere pe direc2ia
"ertica%& %a 9$ ,rade de +os 6n sus,
LIMBAJUL C TEORIE I APLICAI I :=F
int !&ri!ea caracteru%uiI "a%oare nu!eric& $ %a :$/
Eemplu
#.ear'e&#e)*7
settext6/st"G )0,0*7
set#o.or );*7
(o&eto )B00,;0*7
settextstG.e )TS9PEEKA>ONT,0,0*7a%e,erea -ontu%ui trip%e cu direc2ia de
scriere ori.onta%&,
o/ttext )3"ont trp.ex or5onta.3*7
settextstG.e )MOTa9YA>ONT,0,0*7 a%e,erea -ontu%ui ,otic cu direc2ia de
scriere ori.onta%&,
(o&eto )B<0,80*7
o/ttext )3MOT9Y >ONT OS9bONTAE 3*7
settextstG.e )DE>AUETA>ONT,0,B*7 a%e,erea -ontu%ui 'art& de *i2i cu direc2ia
de scriere ori.onta%& )i !&ri!ea E,
(o&eto )BN0,100*7
o/ttext )3>ONT aASTA DE O9T9 B3*7
settextstG.e )0,1,B*7 a%e,erea -ontu%ui 'art& de *i2icu direc2ia de scriere
"ertica%& )i !&ri!ea :,
(o&eto )1<0,:B0*7
o/ttext )3text pe &ert#a.a3*7
4et#1 )*7
,
%.2.10. set#ie,port
Ounc2ia set"ie(port setea.& !&ri!ea .onei curente de a-i)are, prin indicarea
co%2u%ui st3n,a sus )i a co%2u%ui dreapta +os/ Dup& setarea -erestrei de a-i)are 4.onei5
cursoru% ,ra-ic se po.i2ionea.& %a coordonate%e $,$ 4co%2u% st3n,a sus a% -erestrei de
a-i)are5/
Ounc2ii%e care -o%osesc coordonate se "or raporta %a un siste! ce are ori,inea 6n co%2u%
st3n,a sus a% -erestrei curente/
La intrarea 6n !odu% ,ra-ic .ona curent& de a-i)are este tot ecranu% cu coordonate%e $, $
6n co%2u% st3n,a sus/
Pentru a !odi-ica !&ri!ea -erestre este necesar s& se ape%e.& din nou -unc2ia
set"ie(port cu noi para!etri/ Coordonate%e co%2uri%or -erestrei sunt raportate %a
siste!u% ,enera% , P, cu ori,inea siste!u%ui 6n co%2u% st3n,a sus a% ecranu%ui
!onitoru%ui/ Pentru a )ter,e con2inutu% -erestrei acti"e se "a -o%osi -unc2ia
c%ear"ie(port 45 L , iar pentru a )ter,e tot con2inutu% ecranu%ui ,ra-ic se "a -o%osi -unc2ia
c%earde"ice 45L/
Prototipu% -unc2iei set"ie(port este B
<oid -ar set"ie(port 4int st3n,a, int sus, int dreapta, int +os, int c%ip5 L
int st3n,aIcoordonata a co%2u%ui : a% -erestrei,
LIMBAJUL C TEORIE I APLICAI I :=#
int susI coordonata P a co%2u%ui : a% -erestrei,
int dreaptaI coordonata a co%2u%ui E a% -erestrei,
int +osI coordonata P a co%2u%ui E a% -erestrei,
int c%ipI"a%oare $ sau di-erit& care indic& dac& e%e!ente%e ce dep&)esc
-ereastra se desenea.& sau se trunc'ea.&/
Eemplu
#.ear'e&#e)*7 -unc2ia c%earde"ice 45 )ter,e con2inutu% ecranu%ui
,ra-ic,
setbV#o.or )1*7 setarea cu%ori de -ond pe a%*astru,
set&eWport )100,100,;00,;00,0*7 setarea -erestrei de desenare, a-i)are cu
coordonate%e co%2u%ui st3n,a sus I:$$, PI:$$, iar
co%2u% dreapta +os IF$$, PIF$$, entit&2ii%e ce se
desenea.& pot dep&)i -ereastra 4nu sunt
trunc'iate,5
re#tan4.e )0,0,:00,:00*7desenarea dreptun,'iu%ui %a %i!ite%e -erestre curente
(o&eto )B00,;0*7 dep%asarea cursoru%ui ,ra-ic 6n raport cu
coordonate%e re%ati"e a%e -erestrei curente,
.ne )0,0,:00,:00*7 %inia desenat& are coordonate%e raportate %a
siste!u% -erestrei curente, c3t )i tetu% a-i)at cu
-unc2ia ce ur!ea.&,
o/ttext )3n "ereastra3*7
(o&eto ):0<,80*7
o/ttext )3na"ara "erestre3*7acest tet apare pe ecran nu!ai dac&
para!etru% de trunc'iere a% -erestrei curenteare
"a%oarea $, cu! este ca.u% de -a2&, dac& acest
para!etru este trecut pe : , acest tet nu este
a-i)at,
4et#1 )*7 continuarea eecu2iei pro,ra!u%ui condi2ionat de
ap&sarea unei taste
set#o.or );*7
set&eWport )0,0,<00,;NQ,1*7setarea unei noi -erestre de a-i)are, care "a
contro%a entit&2i%e ce se "or desena, aceast&
-ereastr& are para!etru% de trunc'iere pe "a%oarea
:, nu "a a-i)a .ona de entit&2i ce dep&)esc conturu%
-erestrei, con2inutu% pri!ei -erestre nu este )ters
datorit& -aptu%ui c& nu s0a ape%at -unc2ii%e
c%earde"ice sau c%ear"ie(port,
re#tan4.e )<,<,<00,;N0*7acest dreptun,'i se 6ncadrea.& 6n noua -ereastr& )i
"a apare 6n tota%itate pe ecran,
(o&eto )B00,;0*7 po.i2ionarea cursoru%ui ,ra-ic se raportea.& %a
noua -ereastr&,
o/ttext )3a.nat .a "ereastraB3*7
LIMBAJUL C TEORIE I APLICAI I :=G
.ne )10,B0,80,N0*7
4et#1 )*7
,
%.2.11. cleard,#ice
Ounc2ia c%earde"ice tot con2inutu% ecranu%ui ,ra-ic, u!p%e tot ecranu% cu
cu%oarea de -ond curent&/
Po.i2ia cursoru%ui ,ra-ic este 6n co%2u% st3n,a sus a% -erestre curente de a-i)are desenare/
Prototipu% -unc2iei este B
<oid -ar c%earde"ice 45L
%.2.12. clear#ie,port
Ounc2ia c%ear"ie(port )ter,e con2inutu% -erestrei curente de a-i)are desenare )i
po.i2ionea.& cursoru% ,ra-ic 6n co%2u% st3n,a sus a% -erestre curente/
Prototipu% -unc2iei c%ear"ie(port este B
<oid -ar c%ear"ie(port 45L
Eemplu
#.ear'e&#e)*7
setbV#o.or )1*7
set&eWport )100,100,;00,;00,0*7
re#tan4.e )0,0,:00,:00*7
(o&eto )B00,;0*7
.ne )0,0,:00,:00*7
o/ttext )3n "ereastra3*7
(o&eto ):0<,80*7
o/ttext )3na"ara "erestre3*7
4et#1 )*7
#.ear&eWport )*7 aceast& %inie de cod este introdus& 6n p%us -a2& de
ee!p%u% anterior cu scopu% de a )ter,e con2inutu%
-erestrei curente de a-i)are desenare, care are ca
e-ect c& tetu% in -ereastr&, dreptun,'iu% ce
de%i!ita -ereastra curent& c3t )i dia,ona%a nu "or
!ai -i a-i)ate dup& eecutarea acestei %inii de cod,
tetu% ina-ara -erestrei nu este a-ectat datorit&
po.i2ion&ri %ui 6na-ara -erestrei curente,
set#o.or );*7
set&eWport )0,0,<00,;NQ,1*7
re#tan4.e )<,<,<00,;N0*7
(o&eto )B00,;0*7
o/ttext )3a.nat .a "ereastraB3*7
.ne )10,B0,80,N0*7
4et#1 )*7
,
LIMBAJUL C TEORIE I APLICAI I :==
%.10. &uncii de interogare a sistemului.
%.10.1. getarccoords
-unc2ia ,etarccoords returnea.& intr0o structur& de date coordonate%e ,P a%e centru%ui
cercu%ui din care -ace parte u%ti!u% arc desenat, coordonate%e ,P a%e puncte%or de
6nceput )i s-3r)it a%e arcu%ui/ 7tructura de date spre care pointea.& -unc2ia ,etarccoords
este de tipu% arccoordstPpe /
Prototipu% -unc2iei ,etarccoords este B
<oid -ar arccoords 4struct arccoordtPpe -arQarccoords5 L
struct arccoordtPpe -arQarccoordsIstructura de tip arccoordtPpe 6n care se re2in
coordonate%e puncte%or caracteristice a%e u%ti!u%ui arc desenat/
Eemplu .
str/#t ar##oor'stGpe ar7 dec%ararea structurii ar de tipu% arccoordstPpe 6n
care se "or returna e%e!ente%e caracteristice a%e
u%ti!u%uiarc, deter!inate de -unc2ia ,etarccoords,
C
#.ear'e&#e)*7
setbV#o.or )B*7
set&eWport )0,0,<00,;N0,0*7
re#tan4.e )0,0,:00,:00*7
ar# )100,1<0,0,Q0,<0*7 desenarea arcu%ui cu e%e!ente%e centruI:$$,
PcentruI:#$, un,'iu% de start $, un,'iu% de s-3r)it
9$ )i ra.aI#$,
4etar##oor's )Jar*7 intero,area u%ti!u%ui arc desenat, returnarea
coordonate%or puncte%or caracteristice 6n structura
ar,
prnt" )3x #entr/==' G #entr/ ==' 8n3,ar0x, ar0G*7 a-i)area
coordonate%or centru%ui arcu%ui desenat anterior
prin ape%area date%or ,P din structura ar,
prnt" )3x start==' G start==' 8n3,ar0xstart,ar0Gstart*7 a-i)area
coordonate%or ,P a%e punctu%ui de start a%e arcu%ui
, prin ape%area date%or start, Pstart din structura
ar,
prnt" )3x s"rst= =' G s"rst = =' 3,ar0xen' , ar0Gen'*7 a-i)area
coordonate%or ,P a%e punctu%ui de s-3r)it a%e
arcu%ui , prin ape%area date%or end, Pend din
structura ar,
set#o.or );*7
.ne )ar0x,ar0G,ar0xen',ar0Gen'*7 desenarea %iniei din centru% arcu%ui %a
punctu% de s-3r)it a% arcu%ui,
LIMBAJUL C TEORIE I APLICAI I :=>
.ne )ar0x, ar0G, ar0xstart, ar0Gstart*7desenarea %iniei din centru
arcu%ui %a punctu% de start a%e arcu%ui,
4et#1 )*7
,
%.10.2. getb0color
Ounc2ia ,et*Zco%or returnea.& "a%oarea nu!eric& a cu%orii de -ond %a !o!entu%
e!iterii -unc2ii/ Ounc2ia ,et*Zco%or returnea.& o "a%oare de tip intre, 4int5 )i are
prototipu% B
Int -ar ,et*Zco%or 4"oid5 L
%.10.3. getcolor
Ounc2ia ,etco%or returnea.& "a%oarea nu!eric& de tip 6ntre, a cu%orii curente
de desenare )i are prototipu% B
<a%oarea nu!eric& corespun.&toare cu%orii este 6n concordan2& cu tipu%
!ode%u%ui ,ra-ic detectat de -unc2ia detect,rap'/
Int -ar ,etco%or 4"oid5L
Eemplu
C
nt x(ax,G(ax,, "on', #/.oare7 dec%ararea "aria*i%e%or -ond, cu%oare
pentru re2inerea "a%ori%or returnate de -unc2ii%e
,et*Zco%or )i ,etco%or,
C
#.ear'e&#e)*7
setbV#o.or )B*7 setarea cu%ori de -ond pe "a%oarea E,
set#o.or );*7 setarea cu%ori de desenare pe "a%oarea F,
set&eWport )0,0,<00,;N0,0*7
"on' =4etbV#o.or )*7 ape%area -unc2iei ,et*Zco%or pentru deter!inarea
cu%oriide -ond )i returnarea acesteia 6n "aria*i%a
-ond,
#/.oare =4et#o.or )*7 ape%area -unc2iei ,etco%or pentru deter!inarea
cu%oriide de desenare )i returnarea acesteia 6n
"aria*i%a cu%oare,
prnt" )3#/.oarea 'e "on' ==' 8n3,"on'*7 a-i)area "a%ori%or detectate
pentru -ond )i cu%oare de desenare 6n dou&
"ariante B
: prin "aria*i%e%e -ond, cu%oare
E prin ape%area direct& a -unc2ii%or de intero,are a
cu%orii
prnt" )3#/.oarea 'e 'esenare==' 8n3,#/.oare*7
prnt" )3#/.oarea 'e 'esenare =='3,4et#o.or )**7
4et#1 )*7
LIMBAJUL C TEORIE I APLICAI I :=9
,
%.10.%. getgrap-mode
Ounc2ia ,et,rap'!ode returnea.& "a%oarea !odu%ui ,ra-ic curent/ Ape%area
-unc2ieise -ace dup& ini2ia%i.area !odu%ui ,ra-ic/ <a%oarea returnat& este de tip intre,
4int,5 )i are prototipu% B
Int -ar ,et,rap'!ode 4"oid5 L
%.10.'. getma)mode
Ounc2ia ,et!a!ode returnea.& cea !ai !are "a%oare pentru !od a dri"eru%ui
curent, "a%oarea returnat& este de tip intre, 4int5 )i are prototipu% B
Int -ar ,et!a!ode 4"oid5 L
%.10... getma))
Ounc2ia ,et!a returnea.& coordonata !ai!& acceptat& de ecranu% ,ra-ic, -unc2ie
de dri"eru% )i !odu% ,ra-ic detectate %a ini2ia%i.area !odu%ui ,ra-ic/
<a%oarea returnat& este de tip intre, )i este cu o unitate !ai !ic& dec3t re.o%u2ia pe
ori.onta%& a ecranu%ui, datorit& nu!erot&rii cu "a%oarea $ a pri!ei co%oane/
Prototipu% -unc2iei ,et!a este B
int -ar ,et!a 4"oid5 L
%.10./. getma)+
Ounc2ia ,et!aP returnea.& coordonata P !ai!& acceptat& de ecranu% ,ra-ic, -unc2ie
de dri"eru% )i !odu% ,ra-ic detectate %a ini2ia%i.area !odu%ui ,ra-ic/
<a%oarea returnat& este de tip intre, )i este cu o unitate !ai !ic& dec3t re.o%u2ia pe
"ertica%& a ecranu%ui, datorit& nu!erot&rii cu "a%oarea $ a pri!ei %inii/
Prototipu% -unc2iei ,et!aP este B
int -ar ,et!aP 4"oid5 L
Eemplu
- n#./'e <st'o012
- n#./'e <#ono012
- n#./'e <4rap1#s012
&o' (an )*
+
nt 4'r&er = DETEYT,4(o'e,error#o'e7
nt x(ax,G(ax,, "on', #/.oare7
#.rs#r )*7
nt4rap1)J4'r&er,J4(o'e,3 3*7
LIMBAJUL C TEORIE I APLICAI I :>$
x(ax=4et(axx)*7G(ax=4et(axG)*7ape%area -unc2ii%or pentru detectarea
re.o%u2iei ecranu%ui pe ori.onta%& )i "ertica%&,
#.ear'e&#e)*7
set&eWport )0,0,<00,;N0,0*7
p/ts )3 3*7
prnt" )3 re5o./ta pe or5onta.a ==' 8n3,x(ax!1*7
prnt" )3 re5o./ta pe &ert#a.a==' 8n3,G(ax!1*7
prnt" )3 (o'e./. 4ra"# ==' 8n3,4et4rap1(o'e )**7a-i)area "a%orii
!ode%u%ui ,ra-ic curent,
prnt" )3 (o'e./. (ax(==' 8n3,4et(ax(o'e )**7a-i)area "a%orii
!ode%u%ui ,ra-ic !ai! acceptat,
4et#1 )*7
,
%.10.1. imagesi3e
Ounc2ia i!a,esi.e di!ensiunea spa2iu%ui de !e!orie necesar pentru a se putea
sa%"a i!a,inea de pe ecran preci.at& printr0o .on& dreptun,'iu%ar&/
Uti%i.atoru% "a speci-ica coordonate%e , P a%e co%2u%ui st3n,a sus respecti" a%e co%2u%ui
dreapta +os ce de%i!itea.& .ona de i!a,ine/
<a%oarea !ai!& returnat& este GF Ao, dac& .ona se%ectat& necesit& o "a%oare !ai !are
de GFAo, -unc2ia "a returna "a%oarea 0:/
Prototipu% -unc2iei i!a,esi.e este B
Int -ar i!a,esi.e 4int %e-t, int top, int ri,'t, int *otto!, 5L
int %e-tI coordonata a co%2u%ui din st3n,a,
int topI coordonata P a co%2u%ui din st3n,a,
int ri,'tI coordonata a co%2u%ui din dreapta,
int *otto!I coordonata P a co%2u%ui din dreapta,
Ounc2ia returnea.& o "a%oare de tip intre, -&r& se!n ce repre.int& !&ri!ea in octe2i a
.onei de i!a,ine indicat& prin para!etrii -unc2iei/
%.10.2. getimage
-unc2ia ,eti!a,e sa%"ea.& 6n spa2iu% de !e!orie a%ocat o por2iune
dreptun,'iu%ar& din i!a,inea eistent& pe ecran %a !o!entu% ape%&rii -unc2iei/
Por2iunea de i!a,ine sa%"at& poate -i restaurat& 6n -ereastra dorit& )i %a !o!entu% dorit/
Datorit& spa2iu%ui de !e!orie a%ocat pentru sa%"area de i!a,ini se reco!and&
capor2iunea de i!a,ine se%ectat& s& nu dep&)easc& o .ona de 1$$1$$pie%i ce
corespunde unui spa2iu de GFAo de !e!orie/ Pentru deter!inarea spa2iu%ui de
!e!orie necesar sa%"&rii i!a,ini se "a ape%a anterior a%oc&rii de !e!orie -unc2ia
i!a,esi.e /
Prototipu% -unc2iei ,eti!a,e este B
<oid -ar ,eti!a,e 4int %e-t, int top, int ri,'t, int *otto!, "oid -ar Qi!a,ine5L
LIMBAJUL C TEORIE I APLICAI I :>:
int %e-tI coordonata a co%2u%ui din st3n,a,
int topI coordonata P a co%2u%ui din st3n,a,
int ri,'tI coordonata a co%2u%ui din dreapta,
int *otto!I coordonata P a co%2u%ui din dreapta,
"oid -ar Qi!a,ineI pointeru% spre .ona de !e!orie a%ocat& sa%"&rii/
Eemplu
C
&o' *7 dec%ararea pointeru%ui ii,
/ns4ne' nt (a47 dec%ararea de "aria*i%& pentru "a%oarea returnat&
de -unc2ia i!a,esi.e,
C
#.ear'e&#e)*7
setbV#o.or )1*7
re#tan4.e )10,10,:00,:00*7 desenarea de entit&2i care s& -or!e.e o
i!a,ine ce se "a sa%"a 6n !e!orie,
(o&eto )B00,;0*7
ar# )100,100,0,Q0,<0*7
pes.#e )100,100,0,180,;<*7
pes.#e )B00,B00,180,0,;<*7
pes.#e ):00,:00,0,180,;<*7
#r#.e )100,100,N0*7
#r#.e )B00,B00,N0*7
.ne )10,10,:00,:00*7
o/ttext )3n "ereastra3*7
(a4=(a4es5e )0,0,:<0,:<0*7deter!inarea !&ri!ii i!a,ini de%i!itat& de
dtreptun,'iu% i!a,inar a%e c&rui co%2uri sunt
para!etrii -unc2iei i!a,esi.e,
prnt" )3(a4ne==/3,(a4*7 a-i)area !&ri!ii i!a,inii, pentru ase
contro%a dac& nu s0a dep&)t GF Ao,
=(a..o# )(a4*7 a%ocarea de spa2iu pentru !e!orarea i!a,inii,
4et(a4e )0,0,:<0,:<0,*7 sa%"area i!a,inii de%i!itat& de dreptun,'iu%
ce are coordonate%e co%2u%ui st3n,a I$, PI$ )i
co%2u%ui dreapta +os I1#$, PI1#$, i!a,inea este
sa%"at& 6n .ona de !e!orie a%ocat& prin -unc2ia
!a%%oc,
4et#1 )*7
#.ear&eWport )*7
p/t(a4e )100,100,,YOPcAPUT*7dispunerea pe ecran a i!a,inii sa%"ate
anterior,
4et#1 )*7
,
LIMBAJUL C TEORIE I APLICAI I :>E
%.10.10. get)
Ounc2ia ,et deter!in& )i returnea.& "a%oarea coordonatei a po.i2iei curente
pentru cursoru% ,ra-ic/ <a%oarea coordonatei este raportat& %a po.i2ia re%ati"& a
-erestrei ,ra-ice curente/
Prototipu% -unc2iei ,et este B
Int -ar ,et 4 "oid5 L
<a%oarea returnat& este de tip 6ntre, 4int5/
%.10.11. get+
Ounc2ia ,etP deter!in& )i returnea.& "a%oarea coordonatei P a po.i2iei curente
pentru cursoru% ,ra-ic/ <a%oarea coordonatei P este raportat& %a po.i2ia re%ati"& a
-erestrei ,ra-ice curente/
Prototipu% -unc2iei ,etP este B
Int -ar ,etP 4 "oid5 L
<a%oarea returnat& este de tip 6ntre, 4int5/
%.10.12. getpi)el
Ounc2ia ,etpie% deter!in& )i returnea.& cu%oarea pie%u%ui de coordonate ,P
preci.a2i prin para!etrii -unc2iei/ <a%oarea returnat& este de tip 6ntre, 4unsi,ned5 )i este
in concordan2& cu "a%ori%e pentru cu%oare -unc2ie de dri"eru% )i !odu% ,ra-ic curent/
Prototipu% -unc2iei ,etpie% este B
unsi,ned -ar ,etpie% 4int , int P5 L
int I coordonata a pie%u%ui ,
int PI coordonata P a pie%u%ui/
Eemplu
P
nt x(ax,G(ax,,x,G7
/ns4ne' nt #/.oare7
C
#.ear'e&#e)*7
setbV#o.or )1*7
re#tan4.e )10,10,:00,:00*7
(o&eto )B00,;0*7
ar# )100,100,0,Q0,<0*7
x=4etx )*7 detectarea coordonatei a po.i2iei cursoru%ui
,ra-ic,
LIMBAJUL C TEORIE I APLICAI I :>1
G= 4etG )*7 detectarea coordonatei P a po.i2iei cursoru%ui
,ra-ic,
#/.oare =4etpxe. )10,10*7detectarea cu%orii pie%u%ui de coordonate I:$,
PI:$,
prnt" )3#oor'onate.e #/rsor/./ 4ra"# x==' G==' 8n3,x,G*7
prnt" )3#/.oarea pxe././ 'e #oor'onate 10,10 ==' 3,#/.oare*7
4et#1 )*7
,
%.11. &uncii de iniiali3are "i nc-idere a sistemului grafic.
%.11.1. initgrap-
Ounc2ia init,rap' 6ncarc& sau "a%idea.& un dri"er ,ra-ic )i trece siste!u% 6n
!odu% ,ra-ic/ Aceast& -unc2ie este pri!a ape%at& pentru a detecta prin inter!ediu%
-unc2iei detect,rap' dri"eru% )i !odu% ,ra-ic aceptat de 'ardu% ca%cu%atoru%ui/
La po%u% opus acestei -unc2ii se a-%& -unc2ia c%ose,rap' care 6nc'ide !odu% ,ra-ic )i
trece siste!u% 6n !odu% tet/
Prototipu% -unc2iei init,rap' este B
<oid -ar init,rap' 4int -ar dri"er, int -ar !ode, c'ar -arQca%e pentru dri"er5L
int -ar dri"erI"a%oarea dri"eru%ui ,ra-ic ,
int -ar !odeI"a%oarea !odu%ui ,ra-ic,
c'ar -arQca%e pentru dri"er ca%ea spre directoru% ce con2ine dri"eru% ,ra-ic/
%.11.2. closegrap-
Ounc2ia c%ose,rap' 6nc'ide siste!u% ,ra-ic desc'is de -unc2ia init,rap' )i trece
!ode%u% "ideo %a !ode%u% tet/ Prototipu% -unc2iei c%ose,rap' este B
<oid -ar c%ose,rap' 4 "oid5L
Eemplu
- n#./'e <st'o012
- n#./'e <#ono012
- n#./'e <4rap1#s012
- n#./'e <st'.b012
&o' (an )*
+
nt 4'r&er = DETEYT,4(o'e,error#o'e7autodetec2ia adaptoru%ui )i !odu%ui
,ra-ic %a re.o%u2ia !ai!& suportat de site!u% de
ca%cu% prin ape%area prin DETECT,
nt x(ax,G(ax7
nt4rap1)J4'r&er,J4(o'e,3 3*7ini2ia%i.area !odu%ui ,ra-ic,
LIMBAJUL C TEORIE I APLICAI I :>F
x(ax=4et(axx)*7G(ax=4et(axG)*7 detectarea di!ensiunii !ai!e a ecranu%ui
6n !od ,ra-ic,
set&eWport)0,0,4et(axx)*,4et(axG)*,0*7setarea -erestrei cu di!ensiuni%e
!ai!e detectate de -unc2ii%e ,et!a, ,et!aP,
#.ear'e&#e)*7
set#o.or )SED*7
set"..stG.e )SOE9DA>9EE,SED*7
ar# )<0,<0,0,180,B<*7
#.ose4rap1 )*7 6nc'iderea siste!u%ui ,ra-ic,
p/ts )3apasa o tasta3*7
4et#1 )*7
,
'. 4rograme aplicati#e
'.1. 4rograme "i algoritmi pentru sortare "i cutare.
Pro,ra!u% #a/tare10# per!ite c&utarea unui nu!&r natura% introdus de %a
tastatur& sau prin ape%area -unc2ii%or de citire dintr0un -i)ier sau "a%oare de tip
6ntre, %i"rat& de o p%ac& de ac'i.i2ii de date/ Pentru a deter!ina nu!&ru% %i"rat se
"or parcur,e etape%e ast-e% B
:/ 7e ape%ea.& un cic%u -or de
%a $ %a :$$$$ cu pasu% :$$ pentru a se deter!ina inter"a%u% de c3te :$$ unit&2i/
E/ 7e ape%ea.& un nou cic%u -or cu %i!ita in-erioar& !ai
!ic& dec3t nu!&ru% n )i %i!ita superioar& !ai !are dec3t n iar pasu% este de :$/
Li!ita superioar& )i in-erioar& a cic%u%ui este %i"rat& de pri!u% cic%u -or iar
%un,i!ea inter"a%u%ui este :$$/ n cadru% acestei etape do!eniu% 6n care se a-%&
nu!&ru% n are %un,i!ea de :$/
1/ 7e ape%ea.& u%ti!u% cic%u ce are %i!ite%e inter"a%u%ui
6n st3n,a )i dreapta nu!&ru%ui n deduse de %a etapa E )i pasu% de cic%are e,a% :/
Oo%osirea acestui a%,orit! reduce ti!pu% de c&utare ne-iind necesar& parcur,erea
tuturor nu!ere%or de %a $ %a nu!&ru% c&utat n/
-n#./'e <st'o012
-n#./'e <#ono012
-n#./'e <(at1012
&o' (an )*
+
nt 6,V,x,,n,p7
p/ts )3A.4ort( 'e #a/tare a /n/ n/(ar nat/ra.3*7
p/ts )3Dat n/(ar/. n 3*7
s#an" )3='3,Jn*7
"or )=07 <=100007 =!100*
" )n<*
+
breaV7
p/ts )3pas13*7
4oto t17
,
LIMBAJUL C TEORIE I APLICAI I :>#
e.se
" )n==*
+
p=7
4oto tp7
,
e.se
4oto s"rst7
t1 :
"or )V=-1007 V<7 V=V!10*
" )n<V*
+
breaV7
p/ts )3pas/.B3*7
4oto tB7
,
e.se
")n==V*
+
p=V7
breaV7
4oto tp7
,
e.se
4oto s"rst7
tB :
"or )6=V-107 6<V7 6=6!1*
" )n==6*
+
p=67
4oto tp7
,
e.se
7
tp :
prnt" )3n==' 3,p*7
s"rst :
p/ts )3APASA O TASTA3*7
4et#1 )*7
,
Pro,ra!u% 5e#(a.n0# per!ite deter!inarea nu!&ru%ui de .eci!a%e a%e unui
nu!&r !ai !are dec3t $/ A%,orit!u% -o%ose)te -unc2ia ".oor care rotun+e)te prin
%ips& "a%oarea para!etru%ui ape%at/
Vu!&ru% n citit de %a tastatur& se 6!u%2e)te cu :$, :$$, :$$$, ] )i noua "a%oare
o*2inut& se rotun+e)te prin %ips& apoi se co!par& cu "a%oarea nerotun+it&, c3nd se
o*2ine e,a%itatea 6ntre nou% nu!ar )i "a%oarea rotun+it& a acestuia se opre)te
procesu% de a!p%i-icare cu :$ %a puterea +, "a%oarea %ui + indic3nd nu!&ru% de
.eci!a%e/
-n#./'e <st'o012
-n#./'e <#ono012
-n#./'e <(at1012
&o' (an )*
+
LIMBAJUL C TEORIE I APLICAI I :>G
nt 67
".oat V,x,,n,p7
p/ts )3Se 'eter(na n/(ar/. 'e 5e#(a.e a.e /n/ n/(ar3*7
p/ts )3Dat n/(ar/. n (a (# 'e#t 1 s po5t& 3*7
s#an" )3="3,Jn*7
V=17
6=07
n#ep/t : etic'eta de sa%t a %ui ,oto
x=n*V7 a!p%i-icarea nu!&ru%ui cu :$ %a puterea Z )i
atri*uirea acestei "a%ori "aria*i%ei
p=".oor )x*7 ape%area -unc2iei de rotun+ire prin %ips& asupra nou%ui
nu!&r
" )x==p*
+
prnt" )3N/(ar/. ntro'/s are =' 5e#(a.e 8n3,6*7
4oto s"rst7
,
e.se
+
V=V*107
6=6!17
4oto n#ep/t7
,
s"rst :
p/ts )3APASA O TASTA3*7
4et#1 )*7
,
Pro,ra!u% sortareB0# pentru ordonarea ter!eni%or unui "ector prin !etoda
shell0 7ortarea ter!eni%or unui "ector prin !etoda s'e%% const& 6n co!pararea
ter!eni%or a9i; )i a9+; pentru iI+0:, +0E, ], : iar + IE, 1, ], n )i dac& a9i; este !ai
!are dec3t a9+; se e-ectuea.& opera2ia de intersc'i!*are 6ntre a9i; )i a9+;/
sortare1 )".oat a ?100@,nt 6*7 prototipu% -unc2iei sortare:
-n#./'e <st'o012
-n#./'e <#ono012
-n#./'e <(at1012
&o' (an )*
+
nt n,,67
".oat a?100@,x7
p/ts )3Se or'onea5a /n &e#tor (eto'a s1e.. 3*7
p/ts )3Dat n (ar(ea &e#tor/./ 3*7
s#an" )3='3,Jn*7
"or )=17 <=n7 !!* cic%u% -or pentru citirea ter!eni%or
"ectoru%ui
+
prnt" )3Dat &e# ?='@= 3,*7
s#an" )3="3,Ja?@*7
,
"or )6=B7 6<=n7 6!!*
LIMBAJUL C TEORIE I APLICAI I :>=
sortare1)a,6*7 ape%area -unc2iei sortare: de n0: ori care
co!par& pe a9i; cu a9+;
"or )=17 <=n7 !!* cic%u% de a-i)are a "ectoru%ui cu ter!enii
ordona2i
prnt" )3a?='@==0B" 8t3,, a?@*7
p/ts )3 8n APASA O TASTA3*7
4et#1 )*7
,
sortare1 )".oat a ?100@, nt 6* antetu% -un2iei
+
nt 7
".oat x7
n#ep/t :
=6-17
" )a?@2a?6@* dac& a9i; Ma9+; are %oc intersc'i!*area ce%or
doi ter!eni
+
x=a?@7
a?@=a?6@7
a?6@=x7
,
e.se
7
7
" )==1*
4oto esre7
e.se
+
6=6-17
4oto n#ep/t7
,
esre :
7
,
Pro,ra!u% pentru sortarea ter!eni%or unui "ector prin !etoda -ulelor 4*u**%e
sort50Metoda *u%e%or const& 6n opera2ia de intersc'i!*are intre a9i; )i a9+; dac& )i
nu!ai dac& a9i; M a9+;/ n ca. contrar e%e!ente%e r&!3n nesc'i!*ate/ Metoda
*u%e%or consu!& n0: etape ast-e% B 6n pri!a etap& se e-ectuea.& co!para2ia
a9i; M a9+; a%e perec'i%or de ter!eni a9:; M a9E;, a9E; M a91;, ], a9n0:; M a9n;, ce
are ca e-ect c& ter!enu% a9:; se dep%asea.& %a dreapta peste toate e%e!ente%e !ai
!ici dec3t e%, apoi se reia procesu% cu e%e!entu% a9E; )i a)a !ai departe, p3n& c3nd
se a+un,e %a e%e!entu% a9n0:;/ Dup& e-ectuarea acestei etape ter!enu% ce% !ai
!are a% "ectoru%ui "a ocupa %ocu% ce% !ai din dreapta n/ 7e reia procesu% de
dep%asare spre dreapta a ter!eni%or : %a n0:, re.u%t3nd ter!enu% ce "a ocupa %ocu%
n0:, se continu& p3n& c3nd se ordonea.& to2i ter!enii "ectoru%ui/
Pro,ra!u% care sortea.& un "ector cu !etoda *u%e%or este pre.entat 6n -unc2ia
sortare<0
sortare< )".oat a?100@, nt (*7 prototipu% -unc2iei sortare<
-n#./'e <st'o012
LIMBAJUL C TEORIE I APLICAI I :>>
-n#./'e <#ono012
-n#./'e <(at1012
&o' (an )*
+
nt n,,(,V7
".oat a?100@,x7
p/ts )3Se or'onea5a /n &e#tor prn (eto'a b/.e.or 3*7
p/ts )3Dat n (ar(ea &e#tor/./ 3*7
s#an" )3='3,Jn*7
"or )=17 <=n7 !!*
+
prnt" )3Dat ter(en/. ?='@ a. &e#tor/./= 3,*7
s#an" )3="3,Ja?@*7
,
"or )(=n-17 (2=17 (=(-1*
sortare< )a,(*7
a ?V!1@=x7
"or )=17<=n7!!*
prnt" )3a?='@==0B" 8t3,, a?@*7
p/ts )3 8n APASA O TASTA3*7
4et#1 )*7
,
Ounc2ia sortare< pentru ordonarea ter!eni%or unui "ector prin !etoda *u%e%or/
sortare< )".oat a?100@, nt (*
+
nt 7
".oat x7
=17
n#ep/t :
" )a?@2a?!1@*
+
x=a?@7
a?@=a?!1@7
a?!1@=x7
,
e.se
7
" )==(*
4oto esre7
e.se
=!17
4oto n#ep/t7
esre :
7
,
Pro,ra!u% sortareL0# pentru ordonarea ter!eni%or unui "ector prin !etoda seleciei
directe/ 7ortarea prin se%ec2ie direct& const& 6n -aptu% c& %a pasu% Z, 4Z apar2ine
inter"a%u%ui :, ], n0:5 se ca%cu%ea.& a9i; I!a 4a9:;, a9E;, a91;, ], a9n0ZJ:;5 )i apoi se
-ace intersc'i!*area a9i; cu a9n0ZJ:;/
sortareL )".oat a?100@, nt (, nt V*7
sortL1 )nt V, nt (, ".oat a?100@*7
-n#./'e <st'o012
LIMBAJUL C TEORIE I APLICAI I :>9
-n#./'e <#ono012
-n#./'e <(at1012
&o' (an )*
+
nt n,,(,V7
".oat a?100@,x7
p/ts )3Se or'onea5a /n &e#tor prn (eto'a se.e#te 're#ta3*7
p/ts )3Dat n (ar(ea &e#tor/./3*7
s#an" )3='3,Jn*7
"or )=17<=n7!!*
+
prnt" )3Dat &e# ?='@= 3,*7
s#an" )3="3,Ja?@*7
,
"or )(=n7 (2B7 (=(-1*
+
sortareL )a,(,V*7
sortL1 )V,(,a*7
,
"or )=17<=n7!!*
prnt" )3a?='@==0B" 8t3,, a?@*7
p/ts )3 8n APASA O TASTA3*7
4et#1 )*7
,
sortareL )".oat a?100@, nt (, nt V* -unc2ia deter!in& pe Z ast-e% ca a9Z; I
!a4a9:;, a9E;, a91;, ], a9n;5
+
nt 7
V=B7
"or )=B7 <(7!!*
+
" )a?V@<a?@*
V=7
e.se
7
,
,
sortL1 )nt V, nt (, ".oat a?100@* -unc2ia de intersc'i!*are a %ui a9!; cu
a9Z;
+
".oat x7
x=a?V@7
a?V@=a?(@7
a?(@=x7
,
'.2. 4rogram pentru re3ol#area sistemelor de ecuaii liniare
Pentru re.o%"area siste!e%or de ecua2ii %iniare, "o! -o%osi !etoda %ui Wauss/
Metoda %ui Wauss este 6n -apt !etoda e%i!in&rii pentru so%u2ionarea siste!e%or
%iniare 6n"&2at& 6n siste!u% ,i!na.ia%/ Pentru a -or!a%i.a aceast& !etod& "o! nota
e%e!ente%e !atricei ini2ia%e prin
( )
n ( i a
i(
, , : , ,
:

, iar !e!*ru% a% doi%ea a%
LIMBAJUL C TEORIE I APLICAI I :9$
siste!u%ui prin
( )
n i b
i
, , : ,
:
/ Pri!u% pas const& 6n e%i!inarea necunoscutei
%
:
din ecua2ii%e corespun.&toare %ui i I E, ], n/ Presupun3nd c& a
::
este di-erit de
.ero, "o! de-ini
( ) ( )
n i a a m
i i
, , E ,
:
::
:
: :
/
Aceste cantit&2i sunt uti%i.ate pentru e%i!inarea %ui %
:
din ecua2ii%e ce 6i ur!ea.&
pri!eia/ Voii coe-icien2i "or -i
( ) ( ) ( )
( ) ( ) ( )
n ( i
b m b b
a m a a
i i i
( i i( i(
, , E , ,
:
: :
: E
:
: :
: E



Pri!a %inie a !atricei A )i e%e!entu% b
:
r&!3n nesc'i!*a2i/ 7iste!u% dup& aceast&
etap& are -or!a
( ) ( ) ( )
( ) ( )
( ) ( )
( )
( )
( )
1
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
1
]
1

E
E
E
:
:
E
:
E E
E
E
E
E
EE
:
:
:
:E
:
::
$
$
n n nn n
r
r
b
b
b
%
%
%
a a
a a
a a a

Continu&! e%i!inarea cu co%oane%e ur!&toare/ Presupune! c& dup& r*: pa)i


siste!u% are -or!a
( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( )
( ) ( )
( )
( )
( )
( )
1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
1
1
1
]
1

1
1
1
1
1
1
1
1
]
1

r
n
r
r
n
r
r
nn
r
nr
r
rn
r
rr
n r
n r
b
b
b
b
%
%
%
%
a a
a a
a a a
a a a a







E
E
:
:
E
:
E
E
E
E
E
EE
:
:
:
:
:
:E
:
::
$ $
$ $
$
Presupun3nd
( ) r
rr
a di-erit de .ero, "o! de-ini coe-icien2ii
( ) ( )
n r i a a m
r
rr
r
ir ir
, , : , +
cu a+utoru% c&rora "o! e%i!ina necunoscuta %
r
din ecua2ii%e ce ur!ea.& %ui i+r/
<o! a"ea
( ) ( ) ( )
( ) ( ) ( )
n r ( i
b m b b
a m a a
r
r ir
r
i
r
i
r
r( ir
r
i(
r
i(
, , : , ,
:
:
+


+
+
LIMBAJUL C TEORIE I APLICAI I :9:
Prin aceste trans-or!&ri %inii%e anterioare %iniei i+r,- din !atricea A sunt %&sate
nesc'i!*ate iar 6n co%oana r su* dia,ona%a principa%& se introduc .erouri/ Dup& n*
: pa)i o*2ine! siste!u% su* -or!a
( ) ( ) ( )
( ) ( )
( )
( )
( )
( )
1
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
1
]
1

n
n n
n
nn
r
r
b
b
b
%
%
%
a
a a
a a a

E
E
:
:
E
:
E
E
E
EE
:
:
:
:E
:
::
$ $
$
Acest procedeu de trans-or!are a !atricei A 6ntr0o !atrice superior triun,'iu%ar&
se nu!e)te -actori.are a !atricii A prin procedura %ui Wauss/
7o%u2ia siste!u%ui de ecua2ii cu !atricea A -actori.at& )i "ectoru% * trans-or!at
poate -i scris& i!ediat B
( ) ( ) n
nn
n
n n
a b %
( ) ( ) ( )
: , , : ,
:

,
_



+
n r a % a b %
r
rr
n
r (
(
r
r(
r
r r
Aceast& etap& poart& nu!e%e de su*stitu2ie in"ers& 4*acZ su*stitution5/
Pro,ra!u% care i!p%e!entea.& a%,orit!u% %ui Wauss este pre.entat 6n continuare/
-n#./'e <st'o012
-n#./'e 3#t(0#3
-n#./'e 3tp(0#3
-n#./'e 3e.(.10#3
-n#./'e 3#t&0#3
-n#./'e 3tr/10#3
-n#./'e 3a'a/4a.0#3
-n#./'e 3tp&10#3
-n#./'e 3s#re&0#3
-n#./'e 3a'a/4a#0#3
-n#./'e 3n.o##0#3
-n#./'e 3e4a.(0#3
-n#./'e 3e.(#10#3
-n#./'e <#ono012
&o' (an )*
+
nt ,6,V,Z,n,(,n17
'o/b.e a?10@?10@,b?10@?10@,#?10@?10@,e?10@?10@,x?10@,s7
'o/b.e 'et,'et1?10@,#o.t ?10@,p,e1?10@,'?10@?10@7
p/ts )3Se5o.&area sste(e.or .nare #a.#/. 'eter(nant3*7
p/ts )3Dat (ar(ea sste(/./ 3*7
s#an" )3='3,Jn*7
#t( )n,n,a*7
p/ts )3Dat #o.oana ter(n.or .ber3*7
#t& )n,#o.t*7
e4a.( )n,n,a,b*7
a'a/4a# )n,n,b,#o.t,#*7
a'a/4a. )n,n,#*7
LIMBAJUL C TEORIE I APLICAI I :9E
n1=n!17
tr/1 )n1,n1,#*7
e.(. )n1,n1,n1,#,e*7
p/ts )3 3*7
s#re& )n,n1, e, e1*7
tp& )n,e1*7
e.(# )n,n1,n1,e,'*7
x?n@=e1?n@/'?n@?n@7
"or )V=n-17V2=17V--* 7u*stitu2ia in"ers&
+
s=07
"or )6=V!176<=n76!!*
s=s!'?V@?6@*x?6@7
x?V@=)e1?V@-s*/'?V@?V@7
,
"or)=17<=n7!! *
prnt" )3x?='@===." 8n3,,x?@*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
Ounc2ia e4a.( e,a%ea.& !atricea B cu !atricea A, ast-e% 6nc3t !atricea care se
pre%ucrea.& s& -ie !atricea B, iar !atricea ori,ina%& A s& r&!3n& ne!odi-icat&/
Ounc2ia este sa%"at& 6n -i)ieru% e4a.(0#
e4a.( )nt n, nt (, 'o/b.e a?10@?10@, 'o/b.e b?10@?10@*
+
nt ,67
"or )=17<=n7!!*
"or )6=176<=(76!!*
b?@?6@=a?@?6@7
,
Ounc2ia a'a/4. per!ite ad&u,area unei %inii cu ter!enii e,a%i cu : %a o !atrice cu
n %inii )i ! co%oane/ Ounc2ia este sa%"at& 6n -i)ieru% a'a/4a.0#
a'a/4a. )nt n, nt (, 'o/b.e #?10@?10@*
+
nt ,67
"or )=17<=n!17!!*
"or )6=176<=(!176!!*
" )2n*
#?@?6@=17
e.se
#?@?6@=#?@?6@7
,
Ounc2ia a'a/4# per!ite ad&u,area unei co%oane %a o !atrice, 6n ca.u% de -a2&
co%oana ce se adau,& este co%oana ter!eni%or %i*eri/ Ounc2ia este sa%"at& 6n -i)ieru%
a'a/4a#0#
a'a/4a# )nt n, nt (, 'o/b.e b?10@?10@, 'o/b.e '?10@,'o/b.e e?10@?10@*
+
nt ,67
"or )=17<=n7!!*
"or )6=176<=(!176!!*
" )62(*
e?@?6@='?@7
e.se
LIMBAJUL C TEORIE I APLICAI I :91
e?@?6@=b?@?6@7
,
Ounc2ia tr/1 e-ectuea.& trian,u%ari.area unei !atrici p&tratice de !&ri!e nn/
Ounc2ia este sa%"at& 6n -i)ieru% tr/10#
tr/1 )nt n, nt (, 'o/b.e a?10@?10@*
+
nt ,6,V7
'o/b.e p7
"or )=17<n7!!*
"or )6=!176<=n76!!*
+
p=a?6@?@/a?@?@7
"or )V=7V<=n7V!!*
a?6@?V@=a?6@?V@-p*a?@?V@7
,
,
Ounc2ia e.(. e%i!in& dintr0o !atrice u%ti!a %inie/ Ounc2ia este sa%"at& 6n -i)ieru%
e.(.10#
e.(. )nt n, nt (, nt V, 'o/b.e a?10@?10@, 'o/b.e b?10@?10@*
+
nt ,67
"or )=17<=n7!!*
"or )6=176<=(76!!*
" )T=V*
")<V*
b?@?6@=a?@?6@7
e.se
b?-1@?6@=a?@?6@7
,
Ounc2ia e.(# e%i!in& co%oana Z dintr0o !atrice/ Ounc2ia este sa%"at& 6n -i)ieru%
e.(#0#
e.(# )nt n, nt (, nt V, ".oat a?10@?10@, ".oat b?10@?10@*
+
nt ,67
"or )=17<=n7!!*
"or )6=176<=(76!!*
" )6T=V*
")6<V*
b?@?6@=a?@?6@7
e.se
b?@?6-1@=a?@?6@7
e.se
7
,
Ounc2ia s#re& trans-er& dintr0o !atrice, u%ti!a co%oan& 6ntr0un "ector/ Ounc2ia este
sa%"at& 6n -i)ieru% s#re&0#
s#re& )nt n, nt (, 'o/b.e a?10@?10@, 'o/b.e b?10@*
+
nt ,67
"or )=17<=n7!!*
"or )6=176<=(76!!*
" )6==(*
b?@=a?@?6@7
e.se
LIMBAJUL C TEORIE I APLICAI I :9F
7
,
'.3. Metoda ramer pentru determinarea #alorii determinantului
Oi)ieru% cu pro,ra!u% surs& este pre.entat 6n continuare/
-n#./'e <st'o012
-n#./'e 3#t(0#3
-n#./'e 3tp(0#3
-n#./'e 3tr(at0#3
-n#./'e 3n.o##0#3
-n#./'e 3e4a.(0#3
-n#./'e <#ono012
&o' (an )*
+
nt ,6,V,Z,n,(7
'o/b.e a?10@?10@,b?10@?10@,#?10@?10@,'et,'et1?10@,#o.t ?10@?10@,p7
p/ts )3Se5o.&area sste(e.or .nare #a.#/. 'eter(nant3*7
p/ts )3Dat (ar(ea sste(/./ 3*7
s#an" )3='3,Jn*7
#t( )n,n,a*7
p/ts )3Dat #o.oana ter(en.or .ber3*7
#t( )n,1,#o.t*7
"or )Z=17Z<=n7Z!!*
+
e4a.( )n,n,a,b*7
n.o## )n,n,Z,b,#o.t*7
'et1?Z@=tr(at )n,n,b*7
,
e4a.( )n,n,a,b*7
tp( )n,1,#o.t*7
tp( )n,n,b*7
'et=tr(at )n,n,b*7
prnt" )3 'eter(nant/.===0B<."8n3,'et*7
" )'etT=0*
+
"or )=17<=n7!!*
+
prnt" )3 'et1 ?='@==0B<."8n3,,'et1?@*7
prnt" )3 x?='@ ==."8n3,,'et1?@/'et*7
,
,
e.se
p/ts )3sste( n#o(patb.3*7
p/ts )38n Apasa o tasta 3*7
4et#1 )*7
,
Ounc2ia tr(at e-ectuea.& trian,u%ari.area unei !atrici p&tratice de !&ri!ea nn
)i deter!in& "a%oarea deter!inantu%ui noii !atrici trian,u%ari.ate/ Ounc2ia este
sa%"at& 6n -i)ieru% tr(at0#
'o/b.e tr(at )nt n,nt (, 'o/b.e a?10@?10@*
+
nt ,6,V7
'o/b.e 'et,p7
"or )=17<n7!!*
LIMBAJUL C TEORIE I APLICAI I :9#
"or )6=!176<=n76!!*
+
p=a?6@?@/a?@?@7
"or )V=7V<=n7V!!*
a?6@?V@=a?6@?V@-p*a?@?V@7
,
'et=17
"or )=17<=n7!!*
'et='et*a?@?@7
ret/rn )'et*7
,
Ounc2ia n.o## e-ectuea.& 6n%ocuirea co%oanei i a !atricii coe-icien2i%or
necunoscute%or cu co%oana ter!eni%or %i*eri/ Ounc2ia este sa%"at& 6n -i)ieru%
n.o##0#
n.o## )nt n, nt (,nt V, 'o/b.e b?10@?10@, 'o/b.e #o.t?10@?10@*
+
nt ,67
"or )=17<=n7!!*
"or )6=176<=(76!!*
" )6==V*
b?@?6@=#o.t?@?1@7
e.se
b?@?6@=b?@?6@7
,
'.%. aracteristicile geometrice ale seciunilor trans#ersale
-n#./'e <#ono012
-n#./'e <st'o012
-n#./'e 3s"rst0#3
-n#./'e 3"5040#3
-n#./'e 3"G040#3
-n#./'e 3"9G0#3
-n#./'e 3"950#3
-n#./'e 3"9G50#3
&o' (an )*
+
".oat a?10@,G0?10@,50?10@,G04,504,9G,95,9G57
nt n,7
".oat 9G?10@,95?10@,9G5?10@7
p/ts )3'at nr 'e e.e(ente3*7
s#an" )3='3,Jn*7
"or )=17<=n7!!*
+
prnt" )3'at ara?='@ G0=' 50=' 3,,,*7
s#an")3=" =" ="3,Ja?@,JG0?@,J50?@*7
,
G04="G04)n,G0,a*7
504="504)n,50,a*7
"or )=17<=n7!!*
+
prnt" )3'at 9G?='@= 95='= 9G5='= 3,,,*7
s#an" )3=" =" ="3,J9G?@,J95?@,J9G5?@*7
,
prnt" )3G04==" 504=="8n3,G04,504*7
prnt" )39G=="8n3,"9G)n,504,a,9G,50**7
LIMBAJUL C TEORIE I APLICAI I :9G
prnt" )395=="8n3,"95)n,G04,a,95,G0**7
prnt" )39G5=="8n3,"9G5)n,504,G04,a,9G5,50,G0**7
s"rst )*7
,
".oat "504 )nt n,".oat 50?10@,".oat a?10@*
+
nt 7
".oat 504,a7
504=07a=07
"or )=17<=n7!!*
a=a?@!a7
"or)=17<=n7!!*
504=504!50?@*a?@7
504=504/a7
ret/rn 5047
,
".oat "G04 )nt n,".oat G0?10@,".oat a?10@*
+
nt 7
".oat G04,a7
G04=07a=07
"or )=17<=n7!!*
a=a?@!a7
"or)=17<=n7!!*
G04=G04!G0?@*a?@7
G04=G04/a7
ret/rn G047
,
".oat "9G )nt n,".oat 504,".oat a?10@,".oat 9G?10@,".oat 50?10@*
+
nt 7
".oat 9G=07
"or )=17<=n7!!*
9G=9G!9G?@!)50?@-504**)50?@-504**a?@7
ret/rn 9G7
,
".oat "95 )nt n,".oat G04,".oat a?10@,".oat 95?10@,".oat G0?10@*
+
nt 7
".oat 95=07
"or )=17<=n7!!*
95=95!95?@!)G0?@-G04**)G0?@-G04**a?@7
ret/rn 957
,
".oat "9G5 )nt n,".oat 504,".oat G04, ".oat a?10@,".oat 9G5?10@,".oat
50?10@,".oat G0?10@*
+
nt 7
".oat 9G5=07
"or )=17<=n7!!*
9G5=9G5!9G5?@!)50?@-504**)G0?@-G04**a?@7
LIMBAJUL C TEORIE I APLICAI I :9=
ret/rn 9G57
,
'.'. alculul analitic al eforturilor M6 76 !
Pro,ra!u% care este pre.entat 6n acest para,ra- per!ite deter!inarea !o!ente%or
de 6ncastrare per-ect& a%e unei *are du*%u 6ncastrat& 6nc&rcat& cu -or2e concentrate
sau -or2e distri*uite sau cu !o!ente concentrate/ Cu acest pro,ra! se deter!in&
-oarte u)or "a%oarea !o!ente%or de 6ncastrare per-ect& 6n cadru% !etodei
dep%as&ri%or -o%osit& %a studiu% structuri%or nedeter!inate static 4%a discip%ina
7tatica construc2ii%or, !etoda dep%as&ri%or ce se studia.& 6n anu% III5/
-n#./'e <st'o012
-n#./'e <#ono012
-n#./'e <(at1012
-n#./'e <'os012
-n#./'e 3"orta10#3
-n#./'e 3'strb10#3
-n#./'e 3(o(en10#3
&o' 9ES9SE1 )&o'*7
&o' (an )*
+
nt ,6,n,(,o7
".oat X1,XB,\1,\B,N1,NB,p,Z,.7
p/ts )3SE DETESX9NA >OSTEEE S9 XOXENTEEE NODAEE 3*7
p/ts )3OASA DUOEU 9NYASTSATA 3*7
9NYEPUT1 :
p/ts )3AEEMET9 OPT9UNEA DOS9TA3*7
p/ts )3>OSTA YONYENTSATA NOSXAEA =13*7
p/ts )3>OSTA D9STS9OU9TA NOSXAEA =B3*7
p/ts )3XOXENT YONYENTSAT =:3*7
p/ts )3>OSTA YONYENTSATA AK9AEA =;3*7
p/ts )39ES9SEA D9N PSOMSAX =<3*7
""./s1 )st'n*7
" )s#an" )3='3,Jo*==1*
sWt#1 )o*
+
#ase 1:
>OSTAYONYENTSATA1 )*7
breaV7
#ase B :
>OSTAD9STS9OU9TA )*7
breaV7
#ase : :
XOXENTYONYENTSAT )*7
breaV7
#ase ; :
p/ts )3>OSTAAK9AEA )*73*7
breaV7
'e"a/.t :
9ES9SE1 )*7
,
e.se
+
LIMBAJUL C TEORIE I APLICAI I :9>
p/ts )3AT9 9NTSODUS OPT9UNEA MSES9TA 3*7
4oto 9NYEPUT17
,
,
&o' 9ES9SE1 )&o'*
+
p/ts )3APASA O TASTA3*7
4et#1 )*7
,
Ounc2ia >OSTAYONYENTSATA1 per!ite deter!inarea "a%orii !o!ente%or de cap&t
c3nd pe *ar& ac2ionea.& -or2e concentrate/
&o' >OSTAYONYENTSATA1 )&o'*
+
nt ,6,n,(7
".oat X1,XB,\1,\B,N1,NB,a?10@,.,p?10@,b?10@7
p/ts )3DAT9 EUNM9XEA OASE9 3*7
s#an" )3="3,J.*7
p/ts )3DAT9 NUXASUE DE >OSTE YONYENTSATE PE OASA3*7
s#an" )3='3,Jn*7
"or )=17<=n7!!*
+
prnt")3DAT9 D9STANTA EA >OSTA ?='@= S9 XAS9XEA >OSTE9 = 3,*7
s#an" )3=",="3,Ja?@,Jp?@*7
b?@=.-a?@7
,
X1=07 XB=07 \1=07 \B=07
"or )=17<=n7!!*
+
X1=X1-p?@*)a?@*b?@*b?@*/).*.*7
XB=XB-p?@*)a?@*a?@*b?@*/).*.*7
,
prnt" )3Xo(ent/. 1 s B are &a.oarea ==" ==" 8n 3,X1,XB*7
'e.aG )1000*7
p/ts )3APASAT9 O TASTA PENTSU SE\EN9SEA 9N PSOMSAX 3*7
4et#1 )*7
,
Ounc2ia OORTADI7TRIBUITA per!ite deter!inarea "a%orii !o!ente%or de cap&t
c3nd pe *ar& ac2ionea.& -or2e distri*uite
&o' >OSTAD9STS9OU9TA )&o'*
+
nt ,6,n7
".oat X1,XB,\1,\B,N1,NB,a?10@,.,Z?10@,#?10@,b?10@7
p/ts )3DAT9 EUNM9XEA OASE9 3*7
s#an" )3="3,J.*7
p/ts )3DAT9 NUXASUE DE >OSTE D9STS9OU9TE3*7
s#an" )3='3,Jn*7
"or )=17<=n7!!*
+
prnt" )3DAT9 D9STANTA P9NA EA X9PEOYUE >OSTE9 ?='@ 3,*7
s#an" )3="3,Ja?@*7
prnt" )3DAT9 EUNM9XEA DE D9STS9OUT9E A >OSTE9 ?='@ S9 XAS9XEA
>OSTE9=3,*7
LIMBAJUL C TEORIE I APLICAI I :99
s#an" )3=" ="3,J#?@,JZ?@*7
b?@=.-a?@7
,
X1=07 XB=07 \1=07 \B=07
"or )=17<=n7!!*
+
X1=X1!))Z?@*#?@*/)B;*.***)B;*b?@*b?@*b?@/.-)L*#?@*#?@*)a?@
!#?@/B**/.!:*#?@*#?@*#?@/.!;*#?@*#?@-B;*b?@*b?@*7
XB=XB-))Z?@*#?@*/)B;*.***)B;*b?@*b?@*b?@/.-L*#?@*#?@*)a?@
!#?@/B*/.!:*#?@*#?@*#?@/.!B*#?@*#?@-;8*b?@*b?@!B;*b?@*.*7
,
prnt" )3XOXENTEEE X1==" XB= =" 3,X1,XB*7
p/ts )3APASAT9 O TASTA 3*7
4et#1 )*7
,
Ounc2ia MOMEVTCOVCEVTRAT per!ite deter!inarea "a%ori !o!ente%or de
cap&t c3nd pe structur& ac2ionea.& !o!ente concentrate/
&o' XOXENTYONYENTSAT )&o'*
+
nt ,6,n7
".oat X1,XB,\1,\B,N1,NB,a?10@,.,(?10@,b?10@7
p/ts )3DAT9 EUNM9XEA OASE9 3*7
s#an" )3="3,J.*7
p/ts )3DAT9 NUXASUE DE XOXENTE YONYENTSATE PE OASA3*7
s#an" )3='3,Jn*7
"or )=17<=n7!!*
+
prnt" )3DAT9 D9STANTA P9NA EA XOXENTUE ?='@= S9 XAS9XEA XOXENTUEU9
= 3,*7
s#an" )3=",="3,Ja?@,J(?@*7
b?@=.-a?@7
,
X1=07 XB=07 \1=07 \B=07
"or )=17<=n7!!*
+
X1=X1!(?@*);*a?@*.-:*a?@*a?@-.*.*/).*.*7
XB=XB-(?@*)B*.*a?@-:*a?@*a?@*/).*.*7
,
prnt" )3Xo(ent/. 1 s B are &a.oarea ==" ==" 8n 3,X1,XB*7
'e.aG )1000*7
p/ts )3APASAT9 O TASTA PENTSU SE\EN9SEA 9N PSOMSAX 3*7
4et#1 )*7
,
'... alculul ariilor contururilor poligonale nc-ise
7& consider&! un po%i,on 6nc'is, co!pus din se,!ente de dreapt& 6ntre n "3r-uri
4
:
, P
:
5, i I$, ], n0:/ U%ti!u% "3r- este identic cu pri!u% 4adic& po%i,onu% este
6nc'is5/
LIMBAJUL C TEORIE I APLICAI I E$$
Aria po%i,onu%ui "a -i dat& de -or!u%a
( )

+ +

:
$
: :
E
:
n
i
i i i i
% % & % A /
Pentru ca aceast& -or!u%& s& poat& -i ap%icat&, tre*uie respectat un sens de
parcur,ere a% po%i,onu%ui, coordonate%e "3r-uri%or introduc3ndu0se -ie 6n sens orar,
-ie 6n sens anti orar/ Aria o*2inut& "a -i po.iti"&, dac& po%i,onu% a -ost parcurs 6n
sens anti orar, sau ne,ati"&, dac& po%i,onu% a -ost parcurs 6n sens orar/
Deducerea -or!u%ei de !ai sus este e"ident& din -i,ura de !ai +os/ Dac& se
respect& un sens de parcurs orar, aria conturu%ui po%i,ona% 6nc'is se poate o*2ine
ca su!a trape.e%or -or!ate de %aturi%e conturu%ui po%i,ona% )i "ertica%e%e co*or3te
din "3r-uri/ Trape.e%e :, E )i 1 "or a"ea arii%e po.iti"e, pe c3nd trape.e%e F, # )i G
"or a"ea arii%e ne,ati"e, 6nsu!3nd toate aceste arii cu se!ne%e %or, re.u%t3nd aria
po%i,onu%ui/
4
:
, P
:
5
4
E
, P
E
5
4
1
, P
1
5
4
F
, P
F
5
n I G
4
$
, P
$
5
LIMBAJUL C TEORIE I APLICAI I E$:
Pro,ra!u% surs& C, care re.o%"& aceast& pro*%e!& este pre.entat 6n continuare/
-n#./'e<st'o012
&o' (an )*
+
nt , 6, n7
".oat x?10@, G?10@, ara = 07
prnt")3Yate &ar"/r:3*7
s#an")3='3,Jn*7
"or )=07 <n7 !!*
+
prnt")3x)='* G)='*3, , *7
s#an")3=" ="3, Jx?@, G?@*7
,
"or )=07 <n7 !!*
+
6 = )!1* = n7
ara != x?@ * G?6@7
ara -= G?@ * x?6@7
,
ara = ara / B7
ara < 0 R -ara: ara7
,
<o! atra,e aten2ia asupra instruc2iunii de atri*uire 6 = )!1* = n7/ De %a i I $,
p3n& %a i I n0E, + "a %ua "a%ori%e : p3n& %a n0:/ C3nd i este n0:, + "a %ua "a%oarea $,
asi,ur3nd 6nc'iderea conturu%ui po%i,ona%/
'./. alculul integralelor prin metoda dreptung-iului
<a%oarea inte,ra%ei de-inite 6n inter"a%u% 9a, *;, a unei -unc2ii continue -45,
repre.int& aria supra-e2ei !&r,init& de -unc2ia -45, aa a*scise%or, )i ce%e dou&
se,!ente de dreapt& ce trec prin capete%e inter"a%u%ui/
Ast-e%, ca%cu%u% nu!eric a% inte,ra%ei poate -i -&cut 6!p&r2ind supra-a2a respecti"&
6n supra-e2e e%e!entare, a c&ror arie poate -i e"a%uat& u)or/ 7e pot -o%osi
:
E
1
F #
%
&
LIMBAJUL C TEORIE I APLICAI I E$E
dreptun,'iuri sau trape.e pentru -or!a supra-e2e%or e%e!entare/ Metoda
aproi!&rii cu dreptun,'iuri este !ai u)oar&, necesit3nd !ai pu2ine ca%cu%e/
Ast-e%, pro,ra!u% surs& C, "a -iB
-n#./'e <st'o012
&o' (an )*
+
nt n, 7
'o/b.e a, b, x, "x, 1, nte47
prnt")38nPro4ra(/. #a.#/.ea5a nte4ra.a "/n#te x]B n nter&a./. ?a,
b@3*7
prnt")38nDat #apate.e nter&a././3*7
s#an")3=." =."3, Ja, Jb*7
prnt")38nYate '&5/n a.e nter&a././3*7
s#an")3='3, Jn*7
1=)b-a*/n7
nte4=07
"or )=07 <n7 !!*
+
x=a!*17
"x=x*x7
nte4=nte4!"x*17
,
prnt")38n9nte4ra.a 'n x]B n nter&a./. ?=.", =."@ este =."3, a, b,
nte4*7
,
Aro-lem propus
7& se scrie pro,ra!u% surs& C care ca%cu%ea.& inte,ra%a de-init& 6n inter"a%u% 9a, *;
a -unc2iei continue -45, -o%osind re,u%a trape.u%ui/
'.1. Soluionarea numeric a ecuaiilor neliniare prin metoda biseciei
Pro*%e!a deter!in&rii r&d&cini%or unei ecua2ii de -or!a
f4%5
b
%
a
% h
f4%5
LIMBAJUL C TEORIE I APLICAI I E$1
f4%5I$,
unde f4%5 este o -unc2ie continu&, apare -rec"ent 6n ap%ica2ii/ Metode ana%itice de
so%u2ionare a unor ast-e% de ecua2ii eist& nu!ai pentru ca.uri particu%are/
In !u%te situa2ii pro*%e!a -i.ic& ce a condus %a ecua2ia f4%5I$ -urni.ea.&
in-or!a2ii asupra distri*u2iei r&d&cini%or/ In continuare presupune! dep&)it&
aceast& etap&, cu a%te cu"inte, ad!ite! c& ecua2ia f4%5I$ are o r&d&cin& si!p%& %
:
6n inter"a%u% 9a, *;/ Ceea ce ne propune! este deter!inarea acestei r&d&cini cu
preci.ia l, adic& "a%oarea -unc2iei 6n punctu% %
:
s& -ie !ai !ic& dec3t preci.ia l/
Cea !ai si!p%& !etod& de so%u2ionare nu!eric& a ecua2iei este !etoda
6n+u!&t&2irii inter"a%u%ui 4a *isec2iei5/ Iat& a%,orit!u% !etodeiB
:/ 7e de-ine)te c BI 4aJ*5KE
E/ Dac& -4*5 a -4c5 R $, atunci a BI c, a%t-e% * BI c
1/ Dac& m-4c5m R l, r&d&cina ecua2iei este cL 7TOP
F/ Treci %a pasu% :
Ideea !etodei este si!p%& B inter"a%u% 9a, *; este 6n+u!&t&2it %a -iecare trecere, iar
condi2ia pus& %a pasu% E ne asi,ur& c& r&d&cina este inc%us& 6n inter"a%u% 9a, *;/
Pro,ra!u% surs& a% pro*%e!ei esteB
-n#./'e <st'o012
-n#./'e <(at1012
".oat ")".oat x*
+
ret/rn )x*x-:*x!B*7
,
&o' (an )*
+
nt #ont=0, err=07
".oat a, b, #, eps=0000017
prnt")38Pro4ra( #are #a.#/.ea5a o ra'a#na a e#/ate ")x*=0 n
nter&a./. ?a, b@3*7
prnt")38nDat .(te.e nter&a././3*7
s#an")3=" ="3, Ja, Jb*7
'o
+
#=)a!b*/B7
" )")b**")#* <= 0*
a=#7
e.se
b=#7
#ont!!7
" )#ont 2 1000*
+
err=17
breaV7
,
, W1.e)"abs)")#**2eps*7
" )err*
prnt")38nN/ exsta so./te n nter&a./. a.es3*7
e.se
LIMBAJUL C TEORIE I APLICAI I E$F
prnt")3O so./te a e#/ate este ="3, #*7
,
n pro*%e!a noastr& a! a%es ecua2ia E01JE care are so%u2ii%e : )i E/ Condi2ia de
ie)ire din cic%u este ca !odu%u% -unc2iei - 6n punctu% c s& -ie !ai !ic dec3t preci.ia
eps/
Pentru a -i si,uri c& pro,ra!u% nu intr& 6ntr0un cic%u in-init, a! ad&u,at o "aria*i%&
contor denu!it& cont, care este incre!entat& 6n -iecare cic%u/ Dac& contoru% este
!ai !are dec3t :$$$, "aria*i%a 6ntrea,& err pri!e)te "a%oarea : )i se 6ntrerupe
cic%u% do ('i%e cu a+utoru% instruc2iunii *reaZ/ <aria*i%a err este -o%osit& dup&
ter!inarea cic%u%ui/ Dac& err este $, 6nsea!n& c& cic%u% a -ost ter!inat nor!a%
4-&r& eroare5/ Dac& err este :, 6nse!n& c& a! dep&)it nu!&ru% !ai! de cic%uri )i
se "a tip&ri !esa+u% de eroareB N/ exsta so./t n nter&a./. a.es/
Aro-lem propus
7& se scrie pro,ra!u% surs& C care ca%cu%ea.& o r&d&cin& a ecua2iei -45I$, 6n
inter"a%u% 9a, *; -o%osind !etoda coardei/ Ounc2ia -45 a%e c&rei r&d&cini sunt
c&utate este 10GEJ::0G/
=ot
Metoda coardei este o !odi-icare a !etodei *isec2iei/ Wra-icu% -unc2iei -45 este
aproi!at prin dreapta care une)te puncte%e 4a, -4a55 )i 4*, -4*55, iar punctu% c se
,&se)te %a intersec2ia acestei drepte cu aa OB
c BI *0-4*54*0a5K9-4*50-4a5;/
A%,orit!u% !etodei coincide cu ce% a% *isectoarei cu deose*irea c& %a pri!u% pas c
se ca%cu%ea.& dup& re,u%a de !ai sus/
'.2 alculul coordonatelor unei retrointersecie
7& se deter!ine coordonate%e unui nu!ar n de puncte, %a care s0au !&surat
un,'iu% )i distan2a de %a sta2ia de %ucru %a -iecare punct, -o%osind !etoda
retrointersec2iei /
Pentru sta2ia de %ucru se cunosc ce%e dou& coordonate )i P/
O*s/ Aa X este orientat& pe "ertica%& de +os 6n sus con-or! siste!u%ui topo,ra-ic/
Date%e de intrare sunt B
Coordonate%e sta2iei de %ucru/
Vu!&ru% de puncte !&surate din sta2ia de %ucru/
Distan2a )i un,'iu% !&surat %a -iecare punct/
Date%e de ie)ireB
Coordonate%e X, k a%e -iec&rui punct !&surat a-i)ate pe !onitor )i scrise intr0
un -i)ier, -i)ieru% de %ucru este topoNcalc.c/
Pentru deter!inarea coordonate%or , P se ap%ic& re%a2ii%e de ca%cu% B
9i; IsJdist 9i;Qcos 4MfPIQun,'i 9i;KE$$5L
P 9i; IPsJdist 9i;Q sin 4MfPIQun,'i 9i;KE$$5L
sIcoordonata a sta2iei de %ucru/
LIMBAJUL C TEORIE I APLICAI I E$#
ksIcoordonata P a sta2iei de %ucru/
MfPI I"a%oarea constantei n/
Un,'iu% citit este 6n ,rade centi.i!a%e 4siste! topo,ra-ic5 )i este con"ertit &n
radiani, pentru a se uti%i.a -unc)ii%e !ate!atice din cadru% %i!*a+u%ui C/
-n#./'e<st'o012
-n#./'e<#ono012
-n#./'e<o012
-n#./'e<(at1012
&o' (an )*
+
>9EE * "17
nt ,n7
".oat /n41 ?B0@, 'st ?B0@,x?B0@,G?B0@,xs,Gs7
"1="open)3topoA#a.#0#3,3W3*7
p/ts )3 Ya.#/. #oor'onate x, G, axa x este pe &ert#a.a 3*7
p/ts )3 Dat n/(ar/. 'e p/n#te #tte3*7
s#an" )3='3,Jn*7
p/ts )3 Dat #oor'onate.e x s G a.e state3*7
s#an" )3=",="3,Jxs,JGs*7
"or )=17<=n7!!*
+
prnt" )3 Dat /n41/. s 'stanta pentr/ p/n#t/. =' 3,*7
s#an" )3=",="3,J/n41 ?@,J'st ?@*7
x ?@ =xs!'st ?@*#os )XAP9*/n41 ?@/B00*7
G ?@ =Gs!'st ?@* sn )XAP9*/n41 ?@/B00*7
"prnt" )"1,3p/n#t/. =' /==0;" '==0B" x==0:" G=
=0:"8n3,,/n41?@,'st?@,x?@,G?@*7
prnt" )3 p/n#t/. =' /==0;" '==0B" x==0:" G=
=0:"8n3,,/n41?@,'st?@,x?@,G?@*7
,
p/ts )3 \a.or.e #tte s #a.#/.ate s/nt s#rse n "ser/.
topoA#a.#0#3*7
p/ts )3 Apasa o tasta pentr/ ter(narea pro4ra(/./3*7
4et#1 )*7
,
'.10 alculul distanelor dintre puncte consecuti#e "i calculul
distanei totale dintre primul "i ultimul punct.
7e "a deter!ina distan2e%e par2ia%e )i distan2a tota%&dintre un nu!&r de
puncte %a care se cunosc coordonate%e )i P/
7ate de intrare$
Vu!&ru% puncte%or/
Coordonate%e , P a%e -iec&rui punct/
7ate de ieire $
Distan2e%e dintre puncte/
Distan2a tota%&/
LIMBAJUL C TEORIE I APLICAI I E$G

Distan2e%e par2ia%e dintre dou& puncte consecuti"e se deter!in& cu re%a2ia B
d9i;IsSrt449i;09iJ:;5Q49i;09iJ:;5J4P9i;0P9iJ:;5Q4P9i;0P9iJ:;55L
distan2a tota%& Io d9i;/
-n#./'e<st'o012
-n#./'e<#ono012
-n#./'e<o012
-n#./'e<(at1012
&o' (an )*
+
>9EE * "17
nt ,n7
".oat x?B0@,G?B0@,.,'?B0@7
"1="open)3topoA#a10#3,3W3*7
p/ts )3 Ya.#/. 'stante.or 'ntre p/n#te s ./n4(ea tota.a 3*7
p/ts )3 Dat n/(ar/. 'e p/n#te 3*7
s#an" )3 ='3,Jn*7
"or )=17<=n7!!*
+
prnt" )3 Dat #oor'onate.e x,G a.e p/n#t/./ =' 3,*7
s#an" )3 =",="3,Jx ?@,JG ?@*7
,
.=07
"or )=17<n7!!*
+
'?@=sZrt))x?@-x?!1@**)x?@-x?!1@*!)G?@-G?!1@**)G?@-
G?!1@**7
.=.!'?@7
"prnt" )"1,3Dstanta =' ==0;" 8n3,,'?@*7
prnt" )3 Dstanta =' ==0;" 8n3,,'?@*7
,
prnt" )3 E/n4(ea tota.a ==0;"8n3,.*7
"prnt" )"1,3E/n4(ea tota.a==0;"3,.*7
p/ts )3 \a.or.e 'stante.or s ./n4(ea tota.a s/nt s#rse n
"ser/. topoA#a10#3*7
p/ts )3 Apasa o tasta pentr/ ter(narea pro4ra(/./3*7
P:
PE
P1
X
k
X:
k:
XE
LIMBAJUL C TEORIE I APLICAI I E$=
4et#1 )*7
,
'.11. alculul momentelor de inerie "i po3iia centrului de
greutate folosind o ba3 de date pentru profile standard
n cadru% acestui ee!p%u s0a creat o *a.& de date, pentru o cate,orie de pro-i%e )i
s0a rea%i.at o inter-a2& ,ra-ic&, pentru a se 6n2e%e,e !ai *ine -or!a sec2iunii
trans"ersa%e/
Pentru ee!p%u% a%es nu!&ru% sec2iunii este :, iar pro-o%e%e disponi*i%e 6n *a.a de
date sunt UG, >, :$, :E/
Dup& indicarea pro-i%u%ui a%es din %ista de pro-i%e disponi*i%e, pro,ra!u% a-i)ea.&
caracteristici%e principa%e a%e pro-i%u%ui/
n etapa ur!&toare se cere distan2a dintre ce%e dou& pro-i%e U epri!at& 6n c!/
Pro,ra!u% deter!in& %&2i!ea !ini!& a p%at*ande%or )i indic& aceast& !&ri!e, dup&
care uti%i.atoru% "a introduce %&2i!ea )i ,rosi!ea ce%or dou& p%at*ande/
Pro,ra!u% %i"rea.& aria,!o!ente%e de iner2ie -a2& de ce%e dou& ae , P/
Pro,ra!u% se poate de."o%ta prin co!p%ectarea *a.ei de date cu noi "a%ori, pentru
pro-i%u% U c3t )i prin ad&u,area de noi tipuri de sec2iuni/
Pro,ra!u% a -ost e-ectuat cu scopu% de a 6!*ina no2iuni%e de ,ra-ic&, cu no2iuni%e
de ca%cu% )i rea%i.area unei *a.e de date a caracteristici%or ,eo!etrice a%e pro-i%e%or/
# include <stdio.h>
# include <conio.h>
# include <graphics.h>
void void main ()
{
int gdriver = DETECT,gmode,errorcode
int !ma!,"ma!,s,i,#,n,m
$loat a,%,c,d,t,&og,"og
$loat i"%, i&%, i"&%, i", i&, %eta, '", '&,i"",i&&
$loat h(, %(, a(, i"(, i&(, e"(,iu, iv, i"(&(,e&(
$loat u)*+,
u)(,=-.. u)/,=0./ u)1,=2.+1 u)0,=.3.. u).,=(0.(
u)-,=(.0/
u)3,=* u)*,=0.. u)2,=(( u)(+,=(+- u)((,=(2.0
u)(/,=(.0.
u)(1,=(+ u)(0,=. u)(.,=(1.. u)(-,=/+- u)(3,=/2.1
u)(*,=(...
u)(2,=(/ u)/+,=... u)/(,=(3 u)//,=1-0 u)/1,=01./
u)/0,=(.-
clrscr ()
initgraph(4gdriver,4gmode,5 5)
LIMBAJUL C TEORIE I APLICAI I E$>
!ma!=getma!!()"ma!=getma!"()
print$ (5! ma!=6d " ma!=6d5,!ma!,"ma!)
errorcode=graphresult()
i$(errorcode7=gr89) print$(5Eroare gra$ica:
6s;n5,grapherrormsg(errorcode))
cleardevice()
setvie'port(+,+,!ma!,"ma!,+)
set$illst"le (<8=>D?@>==,AED)
rectangle (.+,.+,(/+,.0)
rectangle (.+,(/2,(/+,(11)
moveto (*+,.0)
linerel (+,3.)
linerel (B/.,+)
linerel (+,B0)
linerel (/(,+)
linerel (+,B-3)
linerel (B/(,+)
linerel (+,B0)
linerel (/.,+)
moveto (2+,.0)
linerel (/.,+)
linerel (+,0)
linerel (B/(,+)
linerel (+,-3)
linerel (/(,+)
linerel (+,0)
linerel (B/.,+)
linerel (+,B3.)
moveto (33,(-+)
outte!t (5(5)
goto!" ((+,(.)
print$ (5Clegeti numarul sectiunii=5)
scan$ (56d5,4s)
goto!" ((+,(-)
print$ (5Dentru sectiunea aleasa se vor introduce elementele
caracteristice5)
goto!" (/+,(3)
print$ (5CDC<CT> 8 TC<TC DEETAF C8ET>EFCAE5)
getch ()
cleardevice ()
s'itch (s)
{
case (:
{
rectangle (.+,.+,(/+,.0)
LIMBAJUL C TEORIE I APLICAI I E$9
rectangle (.+,(/2,(/+,(11)
moveto (*+,.0)
linerel (+,3.)
linerel (B/.,+)
linerel (+,B0)
linerel (/(,+)
linerel (+,B-3)
linerel (B/(,+)
linerel (+,B0)
linerel (/.,+)
moveto (2+,.0)
linerel (/.,+)
linerel (+,0)
linerel (B/(,+)
linerel (+,-3)
linerel (/(,+)
linerel (+,0)
linerel (B/.,+)
linerel (+,B3.)
goto!" ((+,(+)
print$ (5Dati marimea pro$ilului F -,*,(+,(/=5)
scan$ (56d5,4n)
print$ (5 BBBB F6d are caracteristicileBBB;n5,n)
s'itch (n)
{
case -:
i=(
%rea9
case *:
i=3
case (+:
i=(1
%rea9
case (/:
i=(2
G
print$ (5h=6./$ %=6./$ a=6./$ i"=6./$ i&=6./$ e=6./$
5,u)i,,u)iH(,,u)iH/,,u)iH1,,u)iH0,,u)iH.,)
print$ (5;n Dati distanta dintre pro$ile in cm d=5)
scan$ (56$5,4d)
print$ (5Dati latimea mai mare sau = 6.+$ si grosimea
plat%andei in cm=5,/Iu)iH(,Hd)
scan$ (56$,6$5,4%,4t)
i"%=u)iH1,I/HtItItI%J-H%ItI/I(u)i,J/HtJ/)I(u)i,J/HtJ/)
i&%=u)iH0,I/H%I%I%ItJ-H/Iu)iH/,I(dJ/Hu)iH.,)I(dJ/Hu)iH.,)
a=/Iu)iH/,H%ItI/
LIMBAJUL C TEORIE I APLICAI I E:$
print$ (5;n aria =6./$ >"=6./$ >&=6./$;n5,a,i"%,i&%)
G
G
puts (5apasa o tasta5)
getch ()
g
'.12 4rogram pentru re3ol#area ecuaiei de gradul II
Pentru ca e%e"u% s& poat& %ucra sin,ur )i s& -ie testat -&r& a i!p%ica -actoru% u!an, s0
a rea%i.at un pro,ra! ce per!ite a%e,erea unui set de 9 ecua2ii de ,radu% II ,
a-i)area acestei ecua2ii 6ntr0un !od indentic cu scrierea pe ta*%&, apoi a-i)area
casetei de dia%o,, 6n care e%e"u% "a indica ce%e dou& so%u2ii/
n ur!&toarea etap& se e"a%uea.& de ca%cu%ator so%u2ii%e date cu so%u2ii%e corecte )i
atri*uie sau nu : punct /
7e continu& e"a%uarea ur!&toare%or > ecua2ii, 6n -ina% ca%cu%atoru% a-i)ea.&
puncta+u% o*2inut )i nota/
Pro,ra!u% co!*in& !odu% ,ra-ic cu !odu% tet )i prin de."o%tarea *a.ei de date
a-erente ce%or 1 coe-icien2i a, *, c a%e ecua2iei de ,radu% II, se poate rea%i.a
e"a%uarea a unui nu!&r c3t !ai !are de e%e"i/
La !odi-icarea *a.ei de date se "a 2ine cont ca so%u2ii%e siste!u%ui s& -ie "a%ori
rea%e/Pro,ra!u% surs& a -ost rea%i.at pentru nu!&ru% ca%cu%atoru%ui IG/
- n#./'e <st'o012
- n#./'e <#ono012
- n#./'e <'os012
- n#./'e <4rap1#s012
- n#./'e <(at1012
- n#./'e <st'.b012
&o' 4rest )&o'*7
&o' #ore#t )&o'*7
nt e#/B )".oat,".oat,".oat,".oat,".oat*7
#aseta1 )nt ,nt,nt ,nt, nt,nt *7
nt #asetaB )nt /( ,nt #/. , nt stn4a, nt s/s , nt #/.1,
nt #/.B*7
&o' (an )*
+
nt 4'r&er = DETEYT,4(o'e,error#o'e7
/ns4ne' .on4 s7
nt x(ax,G(ax,,,6,.,n,x,G,a,b,#,t,r,',",4,W1,WB7
nt e,e17
nt /(,#/.,stn4a,6os,'reapta,s/s,#/.1,#/.B7
".oat W,5?1N0@,xx1,xxB7
""./s1 )st'n*7
W1=07 WB=07
5?1:L@=17 5?1:N@=:7 5?1:8@=-;7
5?1:Q@=-L7 5?1;0@=0 7 5?1;1@=L7
LIMBAJUL C TEORIE I APLICAI I E::
5?1;B@=17 5?1;:@=L 7 5?1;;@=-N7
5?1;<@=17 5?1;L@=07 5?1;N@=-L;7
5?1;8@=N7 5?1;Q@=0 7 5?1<0@=07
5?1<1@=17 5?1<B@=-< 7 5?1<:@=07
5?1<;@=17 5?1<<@=-1B7 5?1<L@=:L7
5?1<N@=;7 5?1<8@=-N 7 5?1<Q@=:7
5?1L0@=<7 5?1L1@=1< 7 5?1LB@=107
#.rs#r )*7
x(ax=4et(axx)*7G(ax=4et(axG)*7
nt4rap1)J4'r&er,J4(o'e,3 3*7
set&eWport)0,0,4et(axx)*,4et(axG)*,0*7
error#o'e=4rap1res/.t)*7
")error#o'eT=4rOV* prnt")3Eroare 4ra"#a:
=s8n3,4rap1error(s4)error#o'e**7
#.ear'e&#e)*7
XEN9U:
#.rs#r )*7
set"..stG.e )SOE9DA>9EE,SED*7
bar )100,100,:00,B;0*7
set#o.or )da9TE*7
(o&eto )1B0,1L0*7
.neto )1B0,1B0*7
.neto )BNQ,1B0*7
set#o.or )OEAY`*7
o/ttextxG )1B<,1:0,3 AEMEOSA 3*7
o/ttextxG )1B<,1;0,3 Y.s0a \999-a 3*7
(o&eto )1B0,1L0*7
.neto )BNQ,1L0*7
.neto )BNQ,1B0*7
(o&eto )1B0,BB0*7
.neto )1B0,180*7
.neto )BNQ,180*7
set#o.or )da9TE*7
(o&eto )1B0,BB0*7
.neto )BNQ,BB0*7
.neto )BNQ,180*7
(o&eto )10<,B8<*7
.neto )BQ<,B8<*7
.neto )BQ<,B8<*7
set"..stG.e )SOE9DA>9EE,E9MaTMSAc*7
bar )100,B80,:00,;;0*7
set#o.or )da9TE*7
(o&eto )10<,;:<*7
.neto )10<,B8<*7
.neto )BQ<,B8<*7
set#o.or )OEAY`*7
.neto )BQ<,;:<*7
.neto )10<,;:<*7
o/ttextxG )1:<,1Q0,3TEST DE E\AEUASE3*7
o/ttextxG )1:<,B00,3YU YAEYUEATOSUE 3*7
set#o.or )SED*7
o/ttextxG )1B<,:1<,3EYUAT9A DE MSADUE 3*7
o/ttextxG )1B<,::0,3 a. 'o.ea 3*7
LIMBAJUL C TEORIE I APLICAI I E:E
o/ttextxG )1B<,:;<,33*7
4otoxG )1L,B;*7
prnt" )3 9NTSODUYET9 NS 3*7
4otoxG )1L,B<*7
prnt" )3 YAEYUEATOSUEU9 =3*7
s#an" )3='3,J"*7
set#o.or )OEUE*7
"or )W=107W<=<07W=W!B*
+
'e.aG ):0*7
#r#.e );<0,:00,L0!W*7
,
'e.aG ):000*7
#.ear'e&#e)*7
"or )=-BL!BN*"7<=BN*"7=!:*
+
a=5?@7
b=5?!1@7
#=5?!B@7
set"..stG.e )SOE9DA>9EE,SED*7
bar )100,100,:10,1Q0*7
set#o.or )da9TE*7
(o&eto )1B0,1N0*7
.neto )1B0,1B0*7
.neto )BQ0,1B0*7
set#o.or )OEAY`*7
.neto )BQ0,1N0*7
.neto )1B0,1N0*7
4otoxG )18,Q*7
prnt" )3SEbOE\AT9 EYUAT9A3*7
4otoxG )B0,10*7
" )a==1*
+
" )b<0*
" )b==-1*
+
" )#<0*
prnt" )3x]B-x='=03,#*7
e.se
" )#==0*
prnt" )3x]B-x=03*7
e.se
prnt" )3x]B-x!='=03,#*7
,
e.se
+
" )#<0*
prnt" )3x]B='x='=03,b,#*7
e.se
" )#==0*
prnt" )3x]B='x=03,b*7
e.se
prnt" )3x]B='x!='=03,b,#*7
LIMBAJUL C TEORIE I APLICAI I E:1
,
e.se
" )b==0*
+
" )#<0*
prnt" )3x]B='=03,#*7
e.se
" )#==0*
prnt" )3x]B=03*7
e.se
prnt" )3x]B!='=03,#*7
,
e.se
" )b==1*
+
" )#<0*
prnt" )3x]B!x='=03,#*7
e.se
" )#==0*
prnt" )3x]B!x=03*7
e.se
prnt" )3x]B!x!='=03,#*7
7
,
e.se
" )#<0*
prnt" )3x]B!='x='=03,b,#*7
e.se
" )#==0*
prnt" )3x]B!='x=03,b*7
e.se
prnt" )3x]B!='x!='=03,b,#*7
7
,
e.se
+
" )b<0*
")b==-1*
+
" )#<0*
prnt" )3='x]B-x='=03,a,#*7
e.se
" )#==0*
prnt" )3='x]B-x=03,a*7
e.se
prnt" )3='x]B-x!='=03,a,#*7
,
e.se
+
" )#<0*
prnt" )3='x]B='x='=03,a,b,#*7
e.se
LIMBAJUL C TEORIE I APLICAI I E:F
" )#==0*
prnt" )3='x]B='x=03,a,b*7
e.se
prnt" )3='x]B='x!='=03,a,b,#*7
,
e.se
" )b==0*
+
" )#<0*
prnt" )3='x]B='=03,a,#*7
e.se
" )#==0*
prnt" )3='x]B=03,a*7
e.se
prnt" )3='x]B!='=03,a,#*7
,
e.se
" )b==1*
+
" )#<0*
prnt" )3='x]B!x='=03,a,#*7
e.se
" )#==0*
prnt" )3='x]B!x=03,a*7
e.se
prnt" )3='x]B!x!='=03,a,#*7
7
,
e.se
" )#<0*
prnt" )3='x]B!='x='=03,a,b,#*7
e.se
" )#==0*
prnt" )3='x]B!='x=03,a,b*7
e.se
prnt" )3='x]B!='x!='=03,a,b,#*7
7
,
set"..stG.e )SOE9DA>9EE,YcAN*7
bar )100,B<0,:10,:;B*7
set#o.or )da9TE*7
(o&eto )1B0,::0*7
.neto )1B0,BL<*7
.neto )BQ0,BL<*7
set#o.or )OEAY`*7
.neto )BQ0,::0*7
.neto )1B0,::0*7
4otoxG )18,18*7
prnt" )3SYS9ET9 SOEUT99EE3*7
4otoxG )B0,1Q*7
prnt" )3K1=3*7
s#an" )3="3,Jxx1*7
4otoxG )B0,B0*7
LIMBAJUL C TEORIE I APLICAI I E:#
prnt" )3KB=3*7
s#an" )3="3,JxxB*7
W1= e#/B )a,b,#,xx1,xxB*7
set"..stG.e )SOE9DA>9EE,cEEEOd*7
bar ):B0,100,<L0,1Q0*7
set#o.or )da9TE*7
(o&eto ):;0,180*7
.neto ):;0,110*7
.neto )<<0,110*7
set#o.or )OEAY`*7
.neto )<<0,180*7
.neto ):;0,180*7
4otoxG );<,Q*7
prnt" )3PUNYTAPUE OOT9NUT3*7
4otoxG );<,10*7
prnt" )3PAST9AE=='3,W1*7
WB=W1!WB7
4otoxG );<,11*7
prnt" )3TOTAE=='3,WB*7
set"..stG.e )SOE9DA>9EE,OEUE*7
bar )B00,:;8,:80,:N0*7
'e.aG )100*7
"or )=17<=<7=!1*
+
4otoxG )B8,B:*7
p/ts )3 3*7
'e.aG )100*7
4otoxG )B8,B:*7
p/ts )3 Apasat o tasta 3*7
'e.aG )B00*7
,
4et#1 )*7
#.rs#r )*7
,
'':
set"..stG.e )SOE9DA>9EE,XAMENTA*7
set#o.or )OEUE*7
bar )100,B00,;00,:L0*7
4otoxG )1<,1<*7
prnt" )3 PUNYTAPUE TOTAE OOT9NUT ESTE= =' 8n3,WB *7
4otoxG )1<,1N*7
prnt" )3 AT9 OOT9NUT NOTA : =' 3,WB!1*7
4otoxG )1N,B1*7
p/ts )3 APASAT9 O TASTA 3*7
4et#1 )*7
#.ose4rap1 )*7
,
nt e#/B)".oat a, ".oat b, ".oat #,
".oat xx1 , ".oat xxB*
+
".oat x1,xB,x1r,x1,xB,' 7
LIMBAJUL C TEORIE I APLICAI I E:G
nt p/n#ta61 ,p/n#t6t ,7
#1ar e7
n#ep/t:
#.rs#r )*7
so/n' )1B00*7
'e.aG )B00*7
noso/n' )*7
p/ts )33*7
/* p/ts )3 EYUAT9A
DE MSADUE AE DO9EEA YU YOE>9Y9ENT9
SEAE9 3*7 */
""./s1 )st'n*7
'=b*b-;*a*#7
")'20*
+
'=sZrt )'*7
'='/)B*a*7
x1=-b/)B*a*!'7
xB=-b/)B*a*-'7
/* prnt" )3 So./t.e e#/ate
s/nt rea.e s '"erte 8n3*7 */
/* prnt" )3 x1==" xB=
="8n3,x1,xB*7 */
,
e.se
" )'==0*
+
" )b==0*
+
x1=07
xB=07
,
e.se
+
x1=-b/)B*a*7
xB=x17
,
/* prnt" )3 So./t.e e#/ate
s/nt rea.e s e4a.e 8n 3*7 */
/* prnt" )3 x1=xB=="
8n3,x1,xB*7 */
,
e.se
+
'=-'7
'=sZrt )'*7
x1r=-b/)B*a*7
x1='/)B*a*7
/* prnt" )3 So./t.e e#/ate
n/ s/nt n/(ere rea.e 8n3*7 */
/* prnt" )3 x1=="!*=" xB=
="-*="8n3,x1r,x1,x1r,x1*7 */
LIMBAJUL C TEORIE I APLICAI I E:=
,
""./s1 )st'n*7
" )"abs )xx1-x1*<=000B*
+
" )"abs)xxB-xB*<=000B*
+
p/n#ta61=17
#ore#t )*7
,
e.se
+
p/n#ta61=07
4rest )*7
,
,
e.se
+
" )"abs )xxB-x1*<=000B*
+
" )"abs )xx1-xB*<=000B*
+
p/n#ta61=17
#ore#t )*7
,
e.se
+
p/n#ta61=07
4rest )*7
,
,
e.se
+
p/n#ta61=07
4rest )*7
,
,
set"..stG.e )SOE9DA>9EE,MSEEN*7
bar ):B0,B<0,<L0,:;B*7
set#o.or )da9TE*7
(o&eto ):;0,::0*7
.neto ):;0,BL<*7
.neto )<<0,BL<*7
set#o.or )OEAY`*7
.neto )<<0,::0*7
.neto ):;0,::0*7
4otoxG );<,18*7
prnt" )3SOEUT99EE YOSEYTE SUNT3*7
4otoxG );<,1Q*7
prnt" )3K1==0B"3,x1*7
4otoxG );<,B0*7
prnt" )3KB==0B"3,xB*7
ret/rn )p/n#ta61*7
LIMBAJUL C TEORIE I APLICAI I E:>
,
&o' #ore#t )&o'*
+
bar )B00,B00,:80,B;0*7
4otoxG )BQ,1;*7
prnt" )3 YOSEYT 3*7
,
&o' 4rest )&o'*
+
bar )B00,B00,:80,B;0*7
4otoxG )BQ,1;*7
prnt" )3 MSES9T 3* 7
,
#aseta1 )nt /( ,nt #/. , nt stn4a, nt s/s , nt #/.1, nt
#/.B*
+
nt 'reapta,6os 7
'reapta=stn4a!B007
6os=s/s!1Q07
set"..stG.e )/(,#/.*7
bar )stn4a,s/s,'reapta,6os*7
set#o.or )#/.1*7
(o&eto )stn4a!B0,s/s!Q0*7
.neto )stn4a!B0,s/s!B0*7
.neto )'reapta-:0,s/s!B0*7
set#o.or )#/.B*7
o/ttextxG )stn4a!B<,s/s!;0,3 test1 3*7
o/ttextxG )stn4a!B<,s/s!L0,3 rn' B 3*7
(o&eto )stn4a!B0,s/s!Q0*7
.neto )'reapta-:0,s/s!Q0*7
.neto )'reapta-:0,s/s!B0*7
(o&eto )stn4a!B0,s/s!1N0*7
.neto )stn4a!B0,s/s!100*7
.neto )'reapta-:0,s/s!100*7
set#o.or )#/.1*7
(o&eto )stn4a!B0,s/s!1N0*7
.neto )'reapta-:0,s/s!1N0*7
.neto )'reapta-:0,s/s!100*7
,
nt #asetaB )nt /( ,nt #/. , nt stn4a, nt s/s , nt #/.1,
nt #/.B*
+
nt 'reapta,6os,p/n#ta61 7
'reapta=stn4a!B<07
6os=s/s!1Q07
set"..stG.e )/(,#/.*7
bar )stn4a,s/s,'reapta,6os*7
set#o.or )#/.1*7
(o&eto )stn4a!B0,s/s!Q0*7
LIMBAJUL C TEORIE I APLICAI I E:9
.neto )stn4a!B0,s/s!B0*7
.neto )'reapta-:0,s/s!B0*7
set#o.or )#/.B*7
o/ttextxG )stn4a!B<,s/s!;0,33*7
o/ttextxG )stn4a!B<,s/s!L0,33*7
(o&eto )stn4a!B0,s/s!Q0*7
.neto )'reapta-:0,s/s!Q0*7
.neto )'reapta-:0,s/s!B0*7
(o&eto )stn4a!B0,s/s!1N0*7
.neto )stn4a!B0,s/s!100*7
.neto )'reapta-:0,s/s!100*7
set#o.or )#/.1*7
(o&eto )stn4a!B0,s/s!1N0*7
.neto )'reapta-:0,s/s!1N0*7
.neto )'reapta-:0,s/s!100*7
o/ttextxG )stn4a!:8,s/s!:0,3SOEUT99EE YOSEYTE SUNT3*7
4otoxG )stn4a/L!:,s/s/1B!:*7
prnt" )3K1==0B" 8n3*7
4otoxG )stn4a/L!:,s/s/1B!<*7
prnt" )3KB==0B"3*7
ret/rn )p/n#ta61*7
,
#aseta: )nt /( ,nt #/. , nt stn4a, nt s/s , nt #/.1, nt
#/.B*
+
nt 'reapta,6os 7
'reapta=stn4a!B<07
6os=s/s!1Q07
set"..stG.e )/(,#/.*7
bar )stn4a,s/s,'reapta,6os*7
set#o.or )#/.1*7
(o&eto )stn4a!B0,s/s!Q0*7
.neto )stn4a!B0,s/s!B0*7
.neto )'reapta-:0,s/s!B0*7
set#o.or )#/.B*7
o/ttextxG )stn4a!B<,s/s!;0,3 test1 3*7
o/ttextxG )stn4a!B<,s/s!L0,3 rn' B 3*7
(o&eto )stn4a!B0,s/s!Q0*7
.neto )'reapta-:0,s/s!Q0*7
.neto )'reapta-:0,s/s!B0*7
(o&eto )stn4a!B0,s/s!1N0*7
.neto )stn4a!B0,s/s!100*7
.neto )'reapta-:0,s/s!100*7
set#o.or )#/.1*7
(o&eto )stn4a!B0,s/s!1N0*7
.neto )'reapta-:0,s/s!1N0*7
.neto )'reapta-:0,s/s!100*7
4otoxG );<,18*7
prnt" )3SOEUT99EE YOSEYTE SUNT3*7
4otoxG );<,1Q*7
LIMBAJUL C TEORIE I APLICAI I EE$
prnt" )3K1==0B"3*7
4otoxG );<,B0*7
prnt" )3KB==0B"3*7
,
'.13 4rogram de re3ol#are a sistemului liniar cu 2 necunoscute.
Pentru ca e%e"u% s& poat& %ucra sin,ur )i s& -ie testat -&r& a i!p%ica -actoru% u!an, s0
a rea%i.at un pro,ra! ce per!ite a%e,erea unui set de 9 siste!e %iniare , a-i)area
acestor siste!e 6ntr0un !od indentic cu scrierea pe ta*%&, apoi a-i)area casetei de
dia%o,, 6n care e%e"u% "a indica ce%e dou& so%u2ii/
n ur!&toarea etap& se e"a%uea.& de ca%cu%ator so%u2ii%e date cu so%u2ii%e corecte )i
atri*uie sau nu a unui punct pentru -iecare siste! pre%ucrat /
7e continu& e"a%uarea ur!&toare%or > siste!e, 6n -ina% ca%cu%atoru% a-i)ea.&
puncta+u% o*2inut )i nota/
Pro,ra!u% co!*in& !odu% ,ra-ic cu !odu% tet )i prin de."o%tarea *a.ei de date
a-erente ce%or G coe-icien2i a, *, c, d,e, -, a%e siste!u%ui %iniar, se poate rea%i.a
e"a%uarea a unui nu!&r c3t !ai !are de e%e"i/
La !odi-icarea *a.ei de date se "a 2ine cont ca so%u2ii%e siste!u%ui s& -ie "a%ori
rea%e/ Pentru a contro%a accesu% 6n pro,ra! c3t )i 6nc'iderea pro,ra!u%ui, s0a
pre"&.ut un cod de intrare :9$$ )i un cod de ter!inare :>$$, aceste coduri se pot
!odi-ica prin sc'i!*area "a%ori%or a-erente 6n pro,ra!u% surs&/
Pro,ra!u% surs& este e-ectuat pentru nu!&ru% ca%cu%atoru%ui I:/
- n#./'e <st'o012
- n#./'e <#ono012
- n#./'e <'os012
- n#./'e <4rap1#s012
- n#./'e <(at1012
- n#./'e <st'.b012
- n#./'e <st'ar4012
&o' 4rest )&o'*7
&o' #ore#t )&o'*7
nt e#/B )".oat,".oat,".oat,".oat,".oat,".oat,".oat,".oat*7
&o' (an )*
+
nt 4'r&er = DETEYT,4(o'e,error#o'e7
/ns4ne' .on4 s7
nt x(ax,G(ax,,,6,.,n,x,G,a,b,#,a1,b1,#1,t,r,',",4,W1,WB7
nt e7
nt /(,#/.,stn4a,6os,'reapta,s/s,#/.1,#/.B7
".oat W,5?1N0@,xx1,xxB,e17
""./s1 )st'n*7
W1=07 WB=07
p/ts )3DAT9 YODUE3*7
s#an" )3='3,Jr*7
" )r==1Q00*
+
LIMBAJUL C TEORIE I APLICAI I EE:
#.rs#r )*7
x(ax=4et(axx)*7G(ax=4et(axG)*7
nt4rap1)J4'r&er,J4(o'e,3 3*7
set&eWport)0,0,4et(axx)*,4et(axG)*,0*7
error#o'e=4rap1res/.t)*7
")error#o'eT=4rOV* prnt")3Eroare 4ra"#a:
=s8n3,4rap1error(s4)error#o'e**7
#.ear'e&#e)*7
XEN9U:
/* settextstG.e )SANSASES9>A>ONT,aOS9bAD9S,0*7 */
/* set/ser#1ars5e )L,B,L,B*7 */
set"..stG.e )SOE9DA>9EE,SED*7
bar )100,100,:00,B;0*7
set#o.or )da9TE*7
(o&eto )1B0,1L0*7
.neto )1B0,1B0*7
.neto )BNQ,1B0*7
set#o.or )OEAY`*7
o/ttextxG )1B<,1:0,3 AEMEOSA 3*7
o/ttextxG )1B<,1;0,3 Y.s0a \999-a 3*7
(o&eto )1B0,1L0*7
.neto )BNQ,1L0*7
.neto )BNQ,1B0*7
(o&eto )1B0,BB0*7
.neto )1B0,180*7
.neto )BNQ,180*7
set#o.or )da9TE*7
(o&eto )1B0,BB0*7
.neto )BNQ,BB0*7
.neto )BNQ,180*7
(o&eto )10<,B8<*7
.neto )BQ<,B8<*7
.neto )BQ<,B8<*7
set"..stG.e )SOE9DA>9EE,E9MaTMSAc*7
bar )100,B80,:00,;;0*7
set#o.or )da9TE*7
(o&eto )10<,;:<*7
.neto )10<,B8<*7
.neto )BQ<,B8<*7
set#o.or )OEAY`*7
.neto )BQ<,;:<*7
.neto )10<,;:<*7
o/ttextxG )1:<,1Q0,3TEST DE E\AEUASE3*7
o/ttextxG )1:<,B00,3YU YAEYUEATOSUE 3*7
set#o.or )SED*7
o/ttextxG )1B<,:1<,3S9STEXE DE EYUAT99 3*7
o/ttextxG )1B<,::0,3 3*7
o/ttextxG )1B<,:;<,33*7
4otoxG )1L,B;*7
prnt" )3 9NTSODUYET9 NS 3*7
4otoxG )1L,B<*7
prnt" )3 YAEYUEATOSUEU9 =3*7
LIMBAJUL C TEORIE I APLICAI I EEE
s#an" )3='3,J"*7
set#o.or )OEUE*7
"or )W=107W<=<07W=W!B*
+
'e.aG ):0*7
#r#.e );<0,:00,L0!W*7
,
'e.aG ):000*7
#.ear'e&#e)*7
5?1@=17 5?B@=07 5?:@=<7
5?;@=B7 5?<@=:7 5?L@=;7
5?N@=<75?8@=-175?Q@=:7
5?10@=075?11@=175?1B@=B7
5?1:@=17 5?1;@=-:7 5?1<@=07
5?1L@=<7 5?1N@=-N7 5?18@=87
5?1Q@=-;75?B0@=175?B1@=-:7
5?BB@=175?B:@=175?B;@=N7
5?B<@=17 5?BL@=-17 5?BN@=;7
5?B8@=17 5?BQ@=17 5?:0@=117
5?:1@=175?:B@=B75?::@=:7
5?:;@=B75?:<@=175?:L@=:7
5?:N@=17 5?:8@=17 5?:Q@=17
5?;0@=17 5?;1@=-17 5?;B@=-:7
5?;:@=-175?;;@=;75?;<@=<7
5?;L@=175?;N@=:75?;8@=B7
5?;Q@=:7 5?<0@=B7 5?<1@=107
5?<B@=N7 5?<:@=-87 5?<;@=-B7
"or )=-<:!<;*"7<=<;*"7=!L*
+
set"..stG.e )SOE9DA>9EE,SED*7
bar )100,100,:10,1Q0*7
set#o.or )da9TE*7
(o&eto )1B0,180*7
.neto )1B0,110*7
.neto )BQ0,110*7
set#o.or )OEAY`*7
.neto )BQ0,180*7
.neto )1B0,180*7
4otoxG )18,8*7
prnt" )3SEbOE\AT9 S9STEXUE3*7
4otoxG )B0,10*7
a=5?@7
b=5?!1@7
#=5?!B@7
a1=5?!:@7
b1=5?!;@7
#1=5?!<@7
" )a==1*
+
" )b<0*
" )b==-1*
LIMBAJUL C TEORIE I APLICAI I EE1
+
" )#<0*
prnt" )3x-G=='3,#*7
e.se
" )#==0*
prnt" )3x-G=03*7
e.se
prnt" )3x-G=='3,#*7
,
e.se
+
" )#<0*
prnt" )3x='G=='3,b,#*7
e.se
" )#==0*
prnt" )3x='G=03,b*7
e.se
prnt" )3x='G=='3,b,#*7
,
e.se
" )b==0*
+
" )#<0*
prnt" )3x=='3,#*7
e.se
" )#==0*
prnt" )3x=03*7
e.se
prnt" )3x=='3,#*7
,
e.se
" )b==1*
+
" )#<0*
prnt" )3x!G=='3,#*7
e.se
" )#==0*
prnt" )3x!G=03*7
e.se
prnt" )3x!G=='3,#*7
7
,
e.se
" )#<0*
prnt" )3x!='G=='3,b,#*7
e.se
" )#==0*
prnt" )3x!='G=03,b*7
e.se
prnt" )3x!='G=='3,b,#*7
7
,
e.se
LIMBAJUL C TEORIE I APLICAI I EEF
" )aT=0*
+
" )b<0*
")b==-1*
+
" )#<0*
prnt" )3='x-G=='3,a,#*7
e.se
" )#==0*
prnt" )3='x-G=03,a*7
e.se
prnt" )3='x-G=='3,a,#*7
,
e.se
+
" )#<0*
prnt" )3='x='G =='3,a,b,#*7
e.se
" )#==0*
prnt" )3='x='G=03,a,b*7
e.se
prnt" )3='x='G=='3,a,b,#*7
,
e.se
" )b==0*
+
" )#<0*
prnt" )3='x=='3,a,#*7
e.se
" )#==0*
prnt" )3='x=03,a*7
e.se
prnt" )3='x=='3,a,#*7
,
e.se
" )b==1*
+
" )#<0*
prnt" )3='x!G=='3,a,#*7
e.se
" )#==0*
prnt" )3='x!G=03,a*7
e.se
prnt" )3='x!G=='3,a,#*7
7
,
e.se
" )#<0*
prnt" )3='x!='G=='3,a,b,#*7
e.se
" )#==0*
prnt" )3='x!='G=03,a,b*7
e.se
LIMBAJUL C TEORIE I APLICAI I EE#
prnt" )3='x!='G=='3,a,b,#*7
7
,
e.se
+
" )b<0*
" )b==-1*
+
" )#<0*
prnt" )3-G=='3,#*7
e.se
" )#==0*
prnt" )3-G=03*7
e.se
prnt" )3-G=='3,#*7
,
e.se
+
" )#<0*
prnt" )3='G=='3,b,#*7
e.se
" )#==0*
prnt" )3='G=03,b*7
e.se
prnt" )3='G=='3,b,#*7
,
e.se
" )b==0*
+
" )#<0*
prnt" )3=='3,#*7
e.se
" )#==0*
prnt" )3=03*7
e.se
prnt" )3=='3,#*7
,
e.se
" )b==1*
+
" )#<0*
prnt" )3G=='3,#*7
e.se
" )#==0*
prnt" )3G=03*7
e.se
prnt" )3G=='3,#*7
,
e.se
" )#<0*
LIMBAJUL C TEORIE I APLICAI I EEG
prnt" )3='G=='3,b,#*7
e.se
" )#==0*
prnt" )3='G=03,b*7
e.se
prnt" )3='G=='3,b,#*7
7
,
4otoxG )B0,11*7
" )a1==1*
+
" )b1<0*
" )b1==-1*
+
" )#1<0*
prnt" )3x-G=='3,#1*7
e.se
" )#1==0*
prnt" )3x-G=03*7
e.se
prnt" )3x-G=='3,#1*7
,
e.se
+
" )#1<0*
prnt" )3x='G=='3,b1,#1*7
e.se
" )#1==0*
prnt" )3x='G=03,b1*7
e.se
prnt" )3x='G=='3,b1,#1*7
,
e.se
" )b1==0*
+
" )#1<0*
prnt" )3x=='3,#1*7
e.se
" )#1==0*
prnt" )3x=03*7
e.se
prnt" )3x=='3,#1*7
,
e.se
" )b1==1*
+
" )#1<0*
prnt" )3x!G=='3,#1*7
e.se
" )#1==0*
prnt" )3x!G=03*7
LIMBAJUL C TEORIE I APLICAI I EE=
e.se
prnt" )3x!G=='3,#1*7
7
,
e.se
" )#1<0*
prnt" )3x!='G=='3,b1,#1*7
e.se
" )#1==0*
prnt" )3x!='G=03,b1*7
e.se
prnt" )3x!='G=='3,b1,#1*7
7
,
e.se
" )a1T=0*
+
" )b1<0*
")b1==-1*
+
" )#1<0*
prnt" )3='x-G=='3,a1,#1*7
e.se
" )#1==0*
prnt" )3='x-G=03,a1*7
e.se
prnt" )3='x-G=='3,a1,#1*7
,
e.se
+
" )#1<0*
prnt" )3='x='G =='3,a1,b1,#1*7
e.se
" )#1==0*
prnt" )3='x='G=03,a1,b1*7
e.se
prnt" )3='x='G=='3,a1,b1,#1*7
,
e.se
" )b1==0*
+
" )#1<0*
prnt" )3='x=='3,a1,#1*7
e.se
" )#1==0*
prnt" )3='x=03,a1*7
e.se
prnt" )3='x=='3,a1,#1*7
,
e.se
" )b1==1*
LIMBAJUL C TEORIE I APLICAI I EE>
+
" )#1<0*
prnt" )3='x!G=='3,a1,#1*7
e.se
" )#1==0*
prnt" )3='x!G=03,a1*7
e.se
prnt" )3='x!G=='3,a1,#1*7
7
,
e.se
" )#1<0*
prnt" )3='x!='G=='3,a1,b1,#1*7
e.se
" )#1==0*
prnt" )3='x!='G=03,a1,b1*7
e.se
prnt" )3='x!='G=='3,a1,b1,#1*7
7
,
e.se
+
" )b1<0*
" )b1==-1*
+
" )#1<0*
prnt" )3-G=='3,#1*7
e.se
" )#1==0*
prnt" )3-G=03*7
e.se
prnt" )3-G=='3,#1*7
,
e.se
+
" )#1<0*
prnt" )3='G=='3,b1,#1*7
e.se
" )#1==0*
prnt" )3='G=03,b1*7
e.se
prnt" )3='G=='3,b1,#1*7
,
e.se
" )b1==0*
+
" )#1<0*
prnt" )3=='3,#1*7
e.se
" )#1==0*
prnt" )3=03*7
LIMBAJUL C TEORIE I APLICAI I EE9
e.se
prnt" )3=='3,#1*7
,
e.se
" )b1==1*
+
" )#1<0*
prnt" )3G=='3,#1*7
e.se
" )#1==0*
prnt" )3G=03*7
e.se
prnt" )3G=='3,#1*7
,
e.se
" )#1<0*
prnt" )3='G=='3,b1,#1*7
e.se
" )#1==0*
prnt" )3='G=03,b1*7
e.se
prnt" )3='G=='3,b1,#1*7
7
,
set"..stG.e )SOE9DA>9EE,YcAN*7
bar )100,B<0,:10,:;B*7
set#o.or )da9TE*7
(o&eto )1B0,::0*7
.neto )1B0,BL<*7
.neto )BQ0,BL<*7
set#o.or )OEAY`*7
.neto )BQ0,::0*7
.neto )1B0,::0*7
4otoxG )18,18*7
prnt" )3SYS9ET9 SOEUT9A3*7
4otoxG )B0,1Q*7
prnt" )3K=3*7
s#an" )3="3,Jxx1*7
4otoxG )B0,B0*7
prnt" )3c=3*7
s#an" )3="3,JxxB*7
W1= e#/B )a,b,#,a1,b1,#1,xx1,xxB*7
set"..stG.e )SOE9DA>9EE,cEEEOd*7
bar ):B0,100,<L0,1Q0*7
set#o.or )da9TE*7
(o&eto ):;0,180*7
.neto ):;0,110*7
.neto )<<0,110*7
set#o.or )OEAY`*7
.neto )<<0,180*7
.neto ):;0,180*7
LIMBAJUL C TEORIE I APLICAI I E1$
4otoxG );<,Q*7
prnt" )3PUNYTAPUE OOT9NUT3*7
4otoxG );<,10*7
prnt" )3PAST9AE=='3,W1*7
WB=W1!WB7
4otoxG );<,11*7
prnt" )3TOTAE=='3,WB*7
set"..stG.e )SOE9DA>9EE,OEUE*7
bar )B00,:;8,:80,:N0*7
'e.aG )100*7
"or )=17<=<7=!1*
+
4otoxG )B8,B:*7
p/ts )3 3*7
'e.aG )100*7
4otoxG )B8,B:*7
p/ts )3 Apasat o tasta 3*7
'e.aG )B00*7
,
4et#1 )*7
#.rs#r )*7
,
'':
set"..stG.e )SOE9DA>9EE,XAMENTA*7
set#o.or )OEUE*7
bar )100,B00,;00,:L0*7
4otoxG )1<,1<*7
prnt" )3 PUNYTAPUE TOTAE OOT9NUT ESTE= =' 8n3,WB *7
4otoxG )1<,1N*7
prnt" )3 AT9 OOT9NUT NOTA : =' 3,WB!1*7
4otoxG )1N,B1*7
p/ts )3YODUE DE TESX9NASE3*7
4otoxG )1N,BB*7
""./s1 )st'n*7
s#an" )3="3,Je1*7
" )e1==1800*
+
4otoxG )1N,BB*7
p/ts )3 3*7
4otoxG )1N,B1*7
p/ts )3YOSEYT APASAT9 O TASTA3*7
,
e.se
+
4otoxG )1N,BB*7
p/ts )3 3*7
4oto ''7
,
,
e.se
p/ts )38n ESOASE3*7
4et#1 )*7
LIMBAJUL C TEORIE I APLICAI I E1:
#.ose4rap1 )*7
,
nt e#/B)".oat a, ".oat b, ".oat #,".oat a1, ".oat b1,
".oat #1, ".oat xx1 , ".oat xxB*
+
".oat x1,xB,' 7
nt p/n#ta61 ,p/n#t6t ,7
#1ar e7
n#ep/t:
#.rs#r )*7
so/n' )1B00*7
'e.aG )B00*7
noso/n' )*7
p/ts )33*7
""./s1 )st'n*7
'=a*b1-a1*b7
")'==0*
+
prnt" )3 Sste(/. n/ are so./t /n#e 8n3*7
,
e.se
+
x1=)#1*b-#*b1*/)a1*b-a*b1*7
xB=)#1*a-#*a1*/)a*b1-a1*b*7
,
""./s1 )st'n*7
" )"abs )xx1-x1*<=000B*
+
" )"abs)xxB-xB*<=000B*
+
p/n#ta61=17
#ore#t )*7
,
e.se
+
p/n#ta61=07
4rest )*7
,
,
e.se
+
p/n#ta61=07
4rest )*7
,
set"..stG.e )SOE9DA>9EE,MSEEN*7
bar ):B0,B<0,<L0,:;B*7
set#o.or )da9TE*7
(o&eto ):;0,::0*7
.neto ):;0,BL<*7
.neto )<<0,BL<*7
LIMBAJUL C TEORIE I APLICAI I E1E
set#o.or )OEAY`*7
.neto )<<0,::0*7
.neto ):;0,::0*7
4otoxG );<,18*7
prnt" )3SOEUT99EE YOSEYTE SUNT3*7
4otoxG );<,1Q*7
prnt" )3K==0B"3,x1*7
4otoxG );<,B0*7
prnt" )3c==0B"3,xB*7
ret/rn )p/n#ta61*7
,
&o' #ore#t )&o'*
+
bar )B00,B00,:80,B;0*7
4otoxG )BQ,1;*7
prnt" )3 YOSEYT 3*7
,
&o' 4rest )&o'*
+
bar )B00,B00,:80,B;0*7
4otoxG )BQ,1;*7
prnt" )3 MSES9T 3* 7
,
LIMBAJUL C TEORIE I APLICAI I E11
Gi-liografie
:/ 8i%%ia!s 7/, Pro,ra!!in, t'e G>$$$, 7P*e Inc/, BerZe%eP, :9>E
E/ Patru*anP M/, Totu% despre !icroprocesoru% i>$, Editura te'nic&, Bucure)ti, :9>9
1/ Caius I/, )/a/, Mate!atici c%asice )i !oderne, Editura te'nic&, Bucure)ti, :9>1
F/ Bo*ancu </, )/a/, Dic2ionar de !ate!atici ,enera%e, Editura encic%opedic&
ro!3n&, Bucure)ti, :9=F
#/ Ionic& A/, Iordan </, A%,orit!i )i pro,ra!e, Editura Mirton, Ti!i)oara, :99F
G/ I%in A/, Munteanu C/, Pro,ra!area ca%cu%aoare%or H Li!*a+u% C, Editura
ori.onturi uni"ersitare, Ti!i)oara, E$$$
=/ Ve,rescu L/, Li!*a+u% C )i CJJ pentru 6ncep&tori, "o%u!e%e :, E )i 1, Editura
!icroin-or!atica, C%u+, :99F
>/ C&prariu </, W'id de uti%i.are Tur*o C E/$, Editura !icroin-or!atica, C%u+, :99:
9/ C'ioreanu C/, Uti%i.are co!en.i inter-e2e M70DO7 G/$, Editura !icroin-or!atica,
C%u+, :99F
:$/ Lucanu D/, Proiectarea a%,orit!i%or H Te'nici e%e!entare, Editura uni"erit&2ii A%/
I/ Cu.a, Ia)i, :991
::/ Cucuru. L/ R/, Radu B/, Li!*a+e de pro,ra!are )i uti%i.area ca%cu%atoare%or,
Editura Mirton, Ti!i)oara, :99>
:E/ Boian O/, )/a/, In-or!atica pentru e%e"i, Editura !icroin-or!atica, C%u+, :99E
:1/ 7(an T/, n"&2&! CJJ pas cu pas, Editura te'nic&, Bucure)ti, :99G
:F/ Catrina O/, Co+ocaru I/, Tur*o CJJ, Editura Teora, :991
:#/ Doande) P/ Pintea D/ Uti%i.area ca%cu%atoare%or, Editura de <est, Ti!i)oara, E$$E/
LIMBAJUL C TEORIE I APLICAI I E1F
CUPRINS
1 Algoritmi.....................................................................................................9
!.! 8ntroducere...................................................................................................3
:/E/ A%,orit!i )i or,ani,ra!e////////////////////////////////////////////////////////////////////////////////////////9
!.&.!. <lgoritmi liniari.....................................................................................!!
!.&.&. <lgoritmi ramificai................................................................................!&
!.&.,. <lgoritmi ciclici......................................................................................!*
. !"diul d" #rogramar" tur$o c .%..........................................................&
&.!. Eediul de lucru..........................................................................................&,
E/:/E/Meniu% principa%//////////////////////////////////////////////////////////////////////////////////////////////////E#
E/:/E/:/Meniu% OILE/////////////////////////////////////////////////////////////////////////////////////////////////////EG
E/:/E/E/ Meniu% Edit//////////////////////////////////////////////////////////////////////////////////////////////////////EG
E/:/E/1/ Meniu% Run /////////////////////////////////////////////////////////////////////////////////////////////////////1$
E/:/E/F/ Meniu% De*u,//////////////////////////////////////////////////////////////////////////////////////////////////1$
E/:/E/#/ Meniu% BreaZK(atc'////////////////////////////////////////////////////////////////////////////////////////1:
E/:/E/G/ Meniu% options/////////////////////////////////////////////////////////////////////////////////////////////////1:
&. Structura u'ui #rogram (ur() ' lim$a*ul C.........................................&&
,.!. 6rearea unui program..............................................................................,.
,.&. 5ipuri de date. ..........................................................................................,1
1/E/:/ Tipu% 6ntre,/////////////////////////////////////////////////////////////////////////////////////////////////////////1G
1/E/E/ Tipu% rea%////////////////////////////////////////////////////////////////////////////////////////////////////////////1G
1/E/1/ Tipu% caracter//////////////////////////////////////////////////////////////////////////////////////////////////////1G
,.,. 6onstante i #aria-ile................................................................................,2
1/1/:/ Constante///////////////////////////////////////////////////////////////////////////////////////////////////////////1=
1/1/E/ <aria*i%e/////////////////////////////////////////////////////////////////////////////////////////////////////////////1=
1/1/E/:/ <aria*i%e %oca%e )i ,%o*a%e///////////////////////////////////////////////////////////////////////////////1>
1/1/E/E/ Con"en2ia de denu!ire a "aria*i%e%or )i constante%or/////////////////////////////////////19
,... Funcii. 8ntroducere..................................................................................,3
,...!. Funcii standard de intrare ieire..........................................................+
,./. 8nstruciuni. Epresii. :peratori...............................................................2
1/#/:/ Instruc2iuni//////////////////////////////////////////////////////////////////////////////////////////////////////////F=
1/#/:/:/ Instruc2iunea "id&////////////////////////////////////////////////////////////////////////////////////////////F=
1/#/:/E/ Instruc2iunea epresie//////////////////////////////////////////////////////////////////////////////////////F=
1/#/:/1/ Instruc2iunea co!pus&/////////////////////////////////////////////////////////////////////////////////////F=
1/#/:/F/ Instruc2iunea de atri*uire/////////////////////////////////////////////////////////////////////////////////F>
1/#/E/ Operatori/////////////////////////////////////////////////////////////////////////////////////////////////////////////F9
1/#/E/:/ Operatori arit!etici/////////////////////////////////////////////////////////////////////////////////////////F9
LIMBAJUL C TEORIE I APLICAI I E1#
1/#/E/E/ TPpecastin,//////////////////////////////////////////////////////////////////////////////////////////////////////#$
1/#/E/1/ Operatori re%a2iona%i/////////////////////////////////////////////////////////////////////////////////////////#$
1/#/E/F/ Operatorii %o,ici///////////////////////////////////////////////////////////////////////////////////////////////#E
1/#/E/#/ Operatorii de incre!entare )i decre!entare////////////////////////////////////////////////////#E
,./.,. 8nstruciunea if....................................................................................../.
,./... 8nstruciunea for....................................................................................1+
,././. 8nstruciunea Mhile. ...............................................................................2+
,./.1. 8nstruciunea do Mhile...........................................................................2.
,./.2. 8nstruciunea -reaL. .............................................................................2*
,./.*. 8nstruciunea continue...........................................................................2*
,./.3. Funcia eit.............................................................................................23
,./.!+. 8nstruciunea sMitch............................................................................23
,./.!!. 8nstruciunea goto.................................................................................*&
,.1. <pelul prin #aloare i apelul prin referin al unei funcii. ..................*,
,.2. :peraii asupra #ectorilor. .....................................................................*,
,.*. :peraii asupra ta-lourilor cu dou dimensiuni.....................................3,
,.3. Funcii de -i-liotec...............................................................................!++
1/9/:/ Ounc2ii de intrare ie)ire/ ///////////////////////////////////////////////////////////////////////////////////:$:
1/9/E/ Ounc2ii !ate!atice/ /////////////////////////////////////////////////////////////////////////////////////////:$:
1/9/1/ Ounc2ii de u. ,enera%/ //////////////////////////////////////////////////////////////////////////////////////:$E
1/9/F/ Ounc2ii de con"ersie//////////////////////////////////////////////////////////////////////////////////////////:$#
,.!+. Aointeri...................................................................................................!+*
,.!!. ;tructuri i tipuri definite de utilizator................................................!!&
,.!!.!. 7eclaraie de structur.......................................................................!!,
,.!!.&. <ccesul la elementele unei structuri..................................................!!/
,.!!.,. <signri de nume pentru tipuri de date............................................!!*
,.!&. Arelucrarea irurilor de caractere........................................................!!3
,.!&.!. Funcia strlen0lungimea irului de caractere....................................!&+
,.!&.&. Funcia strcp90 copierea unui ir de caractere.................................!&!
,.!&.,. Funcia strncp90 copierea a cel mult n caractere ale unui ir de
caractere..........................................................................................................!&&
,.!&... Funcia strcat0 concatenarea irurilor de caractere.........................!&&
LIMBAJUL C TEORIE I APLICAI I E1G
,.!&./. Funcia strncat0 concatenarea irurilor de caractere cu lungimea
impus.............................................................................................................!&,
,.!&.1. Funcia strcmp0 compararea a dou iruri de caractere.................!&,
,.!&.2. Funcia stricmp0 compararea a dou iruri fr a se face distincia
ntre litere mari sau mici................................................................................!&.
,.!&.*. Funcia strincmp. ...............................................................................!&/
,.!,. Arelucrarea fiierelor............................................................................!&1
1/:1/:/: Vi"e%u% superior de pre%ucrare a -i)iere%or/ //////////////////////////////////////////////////:E=
1/:1/E/ Intr&ri ie)iri cu -or!at/////////////////////////////////////////////////////////////////////////////////////:E>
,.!,.,. Aoziionarea n fiier...........................................................................!&*
,.!.. Areprocesorul 6.....................................................................................!,!
Directi"a \inc%ude//////////////////////////////////////////////////////////////////////////////////////////////////////:1E
directi"a \de-ine ////////////////////////////////////////////////////////////////////////////////////////////////////////:1E
Directi"a \error//////////////////////////////////////////////////////////////////////////////////////////////////////////:1G
Co!pi%area condi2ionat&/////////////////////////////////////////////////////////////////////////////////////////////:1G
Directi"a \i-////////////////////////////////////////////////////////////////////////////////////////////////////////////////:1G
Directi"a \e%i-/////////////////////////////////////////////////////////////////////////////////////////////////////////////:1>
Directi"e%e \i-de- )i i-nde-//////////////////////////////////////////////////////////////////////////////////////////:19
Diecti"a \%ine/////////////////////////////////////////////////////////////////////////////////////////////////////////////:F$
Operatori de preprocesare \ )i \\///////////////////////////////////////////////////////////////////////////////:F$
+. ,ra-ic) ' C...........................................................................................1+1
..!. Eoduri grafice.........................................................................................!.&
..&. ;isteme de cordonate...............................................................................!.,
..,. 6ulori i palete de culori.........................................................................!.,
.... Eoduri de umplere..................................................................................!..
../. ;tiluri de linii...........................................................................................!..
..1. <fiarea tetului n mod grafic..............................................................!./
..2. 5ipuri de date folosite n funciile grafice..............................................!.1
..*. FU=6Q88 7E 7E;E=<"E.....................................................................!/+
F/>/:/ ARC/////////////////////////////////////////////////////////////////////////////////////////////////////////////////:#$
F/>/E/ Bar////////////////////////////////////////////////////////////////////////////////////////////////////////////////////:#:
F/>/1/ Bar1d////////////////////////////////////////////////////////////////////////////////////////////////////////////////:#E
F/>/F/ Circ%e////////////////////////////////////////////////////////////////////////////////////////////////////////////////:#F
F/>/#/ Rectan,%e//////////////////////////////////////////////////////////////////////////////////////////////////////////:#F
F/>/G/ Line///////////////////////////////////////////////////////////////////////////////////////////////////////////////////:##
F/>/=/ Mo"eto//////////////////////////////////////////////////////////////////////////////////////////////////////////////:#G
F/>/>/ %inere%////////////////////////////////////////////////////////////////////////////////////////////////////////////////:#G
LIMBAJUL C TEORIE I APLICAI I E1=
F/>/9/ %ineto/////////////////////////////////////////////////////////////////////////////////////////////////////////////////:#=
F/>/:$/ !o"ere%///////////////////////////////////////////////////////////////////////////////////////////////////////////:#>
F/>/::/ dra(po%P/////////////////////////////////////////////////////////////////////////////////////////////////////////:#9
F/>/:E/ e%%ipse//////////////////////////////////////////////////////////////////////////////////////////////////////////////:G:
F/>/:1/ -i%%e%%ipse/////////////////////////////////////////////////////////////////////////////////////////////////////////:G:
F/>/:F/ -i%%po%P////////////////////////////////////////////////////////////////////////////////////////////////////////////:GE
F/>/:#/ -%ood-i%%///////////////////////////////////////////////////////////////////////////////////////////////////////////:G1
F/>/:G/ outtet/////////////////////////////////////////////////////////////////////////////////////////////////////////////:GF
F/>/:=/ outtetP/////////////////////////////////////////////////////////////////////////////////////////////////////////:G#
F/>/:>/ pies%ice////////////////////////////////////////////////////////////////////////////////////////////////////////////:GG
F/>/:9/ putpie%///////////////////////////////////////////////////////////////////////////////////////////////////////////:G=
F/>/E$/ sector///////////////////////////////////////////////////////////////////////////////////////////////////////////////:G=
..3. Funcii pentru setarea #aria-ilelor in mod grafic.................................!13
F/9/:/ 7eta%%pa%ette//////////////////////////////////////////////////////////////////////////////////////////////////////:G9
F/9/E/ set*Zco%or ////////////////////////////////////////////////////////////////////////////////////////////////////////:G9
F/9/1/ 7etco%or/////////////////////////////////////////////////////////////////////////////////////////////////////////////:G9
F/9/F/ setpa%ette///////////////////////////////////////////////////////////////////////////////////////////////////////////:G9
F/9/#/ set-i%%stP%e/////////////////////////////////////////////////////////////////////////////////////////////////////////:=$
F/9/G/ set-i%%pattern//////////////////////////////////////////////////////////////////////////////////////////////////////:=$
F/9/=/ set%inestP%e////////////////////////////////////////////////////////////////////////////////////////////////////////:=:
F/9/>/ settet+usti-P/////////////////////////////////////////////////////////////////////////////////////////////////////:=E
F/9/9/ settetstP%e////////////////////////////////////////////////////////////////////////////////////////////////////////:=1
F/9/:$/ set"ie(port/////////////////////////////////////////////////////////////////////////////////////////////////////:=F
F/9/::/ c%eard("ice/////////////////////////////////////////////////////////////////////////////////////////////////////:=G
F/9/:E/ c%ear"ie(port//////////////////////////////////////////////////////////////////////////////////////////////////:=G
..!+. Funcii de interogare a sistemului........................................................!22
F/:$/:/ ,etarccoords///////////////////////////////////////////////////////////////////////////////////////////////////:==
F/:$/E/ ,et*Zco%or///////////////////////////////////////////////////////////////////////////////////////////////////////:=>
F/:$/1/ ,etco%or///////////////////////////////////////////////////////////////////////////////////////////////////////////:=>
F/:$/F/ ,et,rap'!ode/////////////////////////////////////////////////////////////////////////////////////////////////:=9
F/:$/#/ ,et!a!ode///////////////////////////////////////////////////////////////////////////////////////////////////:=9
F/:$/G/ ,et!a//////////////////////////////////////////////////////////////////////////////////////////////////////////:=9
F/:$/=/ ,et!aP//////////////////////////////////////////////////////////////////////////////////////////////////////////:=9
F/:$/>/ i!a,esi.e////////////////////////////////////////////////////////////////////////////////////////////////////////:>$
F/:$/9/ ,eti!a,e/////////////////////////////////////////////////////////////////////////////////////////////////////////:>$
F/:$/:$/ ,et///////////////////////////////////////////////////////////////////////////////////////////////////////////////:>E
F/:$/::/ ,etP///////////////////////////////////////////////////////////////////////////////////////////////////////////////:>E
F/:$/:E/ ,etpie%/////////////////////////////////////////////////////////////////////////////////////////////////////////:>E
..!!. Funcii de iniializare i nchidere a sistemului grafic........................!*,
F/::/:/ init,rap'//////////////////////////////////////////////////////////////////////////////////////////////////////////:>1
F/::/E/ c%ose,rap'///////////////////////////////////////////////////////////////////////////////////////////////////////:>1
.. Program" a#licati/"..............................................................................10+
/.!. Arograme i algoritmi pentru sortare i cutare..................................!*.
LIMBAJUL C TEORIE I APLICAI I E1>
/.&. Arogram pentru rezol#area sistemelor de ecuaii liniare....................!*3
/.,. Eetoda 6ramer pentru determinarea #alorii determinantului..........!3.
/... 6aracteristicile geometrice ale seciunilor trans#ersale.......................!3/
/./. 6alculul analitic al eforturilor E0 =0 5..................................................!32
/.1. 6alculul ariilor contururilor poligonale nchise...................................!33
/.2. 6alculul integralelor prin metoda dreptunghiului...............................&+!
/.*. ;oluionarea numeric a ecuaiilor neliniare prin metoda -iseciei.. . .&+&
/.3 6alculul coordonatelor unei retrointersecie..........................................&+.
/.!+ 6alculul distanelor dintre puncte consecuti#e i calculul distanei
totale dintre primul i ultimul punct.............................................................&+/
/.!!. 6alculul momentelor de inerie i poziia centrului de greutate folosind
o -az de date pentru profile standard.........................................................&+2
/.!& Arogram pentru rezol#area ecuaiei de gradul 88................................&!+
/.!, Arogram de rezol#are a sistemului liniar cu & necunoscute................&&+

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