Beruflich Dokumente
Kultur Dokumente
$ &
Algoritmos e programao I.indd 1 7/8/2013 16:00:32
Process Black
Obra organizada eIa Universidade Lulerana do rasiI.
Informamos que e de inleira resonsabiIidade dos aulores a
emisso de conceilos.
Nenhuma arle desla ubIicao odera ser reroduzida or
quaIquer meio ou forma sem a revia aulorizao da Idilora
da ULRA.
A vioIao dos direilos aulorais e crime eslabeIecido na Lei n .610/98
e unido eIo Arligo 184 do Cdigo IenaI.
ConseIho IdiloriaI IAD
Dris Crislina Gedral
Thomas Heimman
Mara SaIazar Machado
Andrea de Azevedo Iick
Aslomiro Romais
Setor de Processamento Tcnico da Biblioteca Martinho Lutero - ULBRA/Canoas
Dados Internacionais de Catalogao na Publicao (CIP)
I74a Isaia Filho, Eduardo.
Algoritimos e programao I / Eduardo Isaia Filho, Vanessa Lindemann.
Canoas: Ed. ULBRA, 2013.
144p.
1. Algoritmo. 2. Programao. 3. Computao. 4. Informtica.
I. Lindemann, Vanessa. II. Ttulo.
CDU: 681.3.421.2
Idilorao: RoseIi Menzen
Dados lecnicos do Iivro
Ionles: IaIalino Linolye, IrankIin Golhic Demi Cond
IaeI: osel 75g (mioIo) e suremo 240g (caa)
Medidas: 15x22cm
ISBN 978-85-7528-510-7
Algoritmos e programao I.indd 2 7/8/2013 16:00:54
Process Black
!,%+)+/'!-.$
Irezado(a) aIuno(a)
Se|a bem-vindo(a) ao esludo da disciIina de AIgorilmos e Irogramao I!
Isla disciIina inlroduz o aIuno no universo da Igica de rogramao, de forma
que no finaI do semeslre voc eslara caacilado a conslruir aIgorilmos. Iara isso,
vamos esludar conceilos basicos como lios de dados, variaveis, conslanles,
oeradores e exresses, formas de reresenlao de aIgorilmos e, or fim,
eslruluras de conlroIe sequenciaI, de seIeo e de reelio. A disciIina lambem
rev uma inlroduo a Iinguagem de rogramao C, ossibiIilando que voc
vaIide os aIgorilmos conslruidos duranle o semeslre.
Um aIgorilmo ode ser definido como uma sequncia de assos que visam alingir
um ob|elivo. AIgorilmos so comuns no nosso colidiano como, or exemIo, uma
receila de boIo. NeIa lemos uma Iisla de ingredienles e uma sequncia de assos que
devem ser seguidos ara alingirmos o ob|elivo finaI: o boIo. Quando conslruimos
um aIgorilmo, devemos esecificar aes cIaras e recisas, que a arlir de um eslado
iniciaI, as um eriodo de lemo finilo, roduzem um eslado finaI revisiveI e bem
definido. Isso significa que um aIgorilmo define um adro de comorlamenlo a
ser seguido visando resoIver um robIema, garanlindo que semre que execulado,
sob as mesmas condies, roduza o mesmo resuIlado.
O rinciaI ob|elivo do esludo da Igica de rogramao e a conslruo de
aIgorilmos. Um aIgorilmo reresenla o raciocinio envoIvido na Igica de
rogramao e, dessa forma, ermile-nos abslrair delaIhes comulacionais
alreIados as Iinguagens de rogramao que odem ser acrescenlados mais
larde. Assim, odemos focar nossa aleno naquiIo que e imorlanle: a Igica
da conslruo de aIgorilmos. VaIe Iembrar que: uma vez concebida uma soIuo
aIgorilmica ara um robIema, esla ode ser lraduzida ara quaIquer Iinguagem
de rogramao (rocesso denominado codificao).
O Iivro lexlo desla disciIina esla organizado em dez cailuIos, subdivididos
em sees, ara faciIilar sua Ieilura e comreenso e favorecer a reaIizao das
alividades rooslas ao finaI de cada cailuIo.
Algoritmos e programao I.indd 3 7/8/2013 16:00:55
Process Black
0
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
S e ossiveI arender a conslruir aIgorilmos, conslruindo aIgorilmos! Iorlanlo,
resoIver os exercicios rooslos no finaI de cada cailuIo e fundamenlaI ara
desenvoIver o raciocinio Igico e alingir o ob|elivo desla disciIina. A disciIina
ossui conleudos cumuIalivos, ou se|a, no finaI do semeslre ainda eslaremos
uliIizando conceilos esludados nas rimeiras semanas de auIa. Sendo assim, e
imorlanle organizar o esludo, resoIver os robIemas rooslos eriodicamenle
e no deixar as duvidas ara deois.
As referncias bibIiograficas sugerem obras de aulores que fundamenlam os
esludos reaIizados e oferecem a voc ossibiIidades de arofundamenlo com
Ieiluras comIemenlares.
Um bom lrabaIho!
"#$%&''$#( )(*&''( +,*-&.(**
Algoritmos e programao I.indd 4 7/8/2013 16:00:55
Process Black
)$2%+ $ !1'$%
+457A4: &=7<7 B<CD:
Meslre, Coordenador dos Cursos de Comulao da ULRA unidade Canoas.
Irofessor liluIar da disciIina de AIgorilmos e Irogramao I resenciaI.
E7@F==7 "<@4FG7@@
Meslre em Cincia da Comulao - UIRGS - 2002, Doulora em Informalica
na Iducao - UIRGS - 2008. Irofessora dos cursos de Comulao da ULRA
Canoas.
Algoritmos e programao I.indd 5 7/8/2013 16:00:55
Process Black
H
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Algoritmos e programao I.indd 6 7/8/2013 16:00:55
Process Black
)1(I%&$
J &/'%$;1-.$ KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKL
JKJ M:@6F<>: 4F 7CN:A<>G: KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKL
JKO M:@=>A589: 4: 7CN:A<>G: KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJP
JKQ B:AG7= 4F AFRAF=F@>789: 4F 7CN:A<>G:=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJJ
JK0 +=>A5>5A7 ST=<67 4F 5G 7CN:A<>G: KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJU
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJW
O M$/M+&'$) B1/;!(+/'!&) KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJL
OKJ ;74:= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJL
OKO E7A<TVF<= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKOP
OKQ M:@=>7@>F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKOO
OK0 +XRAF==YF= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKOO
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKOH
Q &/)'%1-Z+) ,%&(&'&E!) KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKOL
QKJ &@=>A589: RA<G<><V7 4F 7>A<S5<89: KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKOL
QKO &@=>A589: RA<G<><V7 4F =7[47 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQO
QKQ &@=>A589: RA<G<><V7 4F F@>A747 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQ0
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQH
0 +)'%1'1%! )+\1+/M&!" KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQL
0KJ +=>A5>5A7 ST=<67 4F 5G 7CN:A<>G: =F]5F@6<7C KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKQL
0KO +XFGRC: 4F 5G 7CN:A<>G: 6:G F=>A5>5A7 =F]5F@6<7C KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0P
0KQ M:@=>A589: 4F 7CN:A<>G:= =F]5F@6<7<= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0O
0K0 'F=>F 4F GF=7 4F 7CN:A<>G:= 6:G F=>A5>5A7 =F]5F@6<7C KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0H
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKUO
U +)'%1'1%! ;+ M$/'%$"+ M$/;&M&$/!"^ )+ KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKUQ
UKJ +=>A5>5A7 6:@4<6<:@7C )+ =<GRCF= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKUQ
UKO +=>A5>5A7 6:@4<6<:@7C )+ 6:GR:=>7 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKUU
UKQ +=>A5>5A7 6:@4<6<:@7C )+ F@674F747 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKUL
UK0 B:AG7>789: 47 =:C589: 4: 7CN:A<>G: KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKHU
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKHH
Algoritmos e programao I.indd 7 7/8/2013 16:00:55
Process Black
_
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
H +)'%1'1%! ;+ M$/'%$"+ M$/;&M&$/!"^ +)M$"`! KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWQ
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKW_
W +)'%1'1%! ;+ M$/'%$"+ ;+ %+,+'&-.$^ +/\1!/'$ KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK_J
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKL0
_ +)'%1'1%! ;+ M$/'%$"+ ;+ %+,+'&-.$^ %+,&'! KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLL
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJPH
L +)'%1'1%! ;+ M$/'%$"+ ;+ %+,+'&-.$^ ,!%! KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK JJJ
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK JJW
JP &/'%$;1-.$ a "&/#1!#+( M KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJOJ
JPKJ &4F@><!674:AF= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJOO
JPKO '<R:= 4F 474:= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJOQ
JPKQ (:4FC74:AF= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJOQ
JPK0 ;F6C7A789:b <@<6<7C<c789: F F=6:R: 4F V7A<TVF<= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJO0
JPKU ;F!@<89: 4F 6:@=>7@>F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJO0
JPKH Md4<N:= 4F e:AG7>: KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJOU
JPKW M7A76>FAF= F=RF6<7<= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJOW
JPK_ M:G7@4: 4F 7>A<S5<89: KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJOW
JPKL $RFA74:AF= F e5@8YF= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJO_
JPKJP M:GF@>TA<:=KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJQP
JPKJJ B5@8YF= 4F F@>A747 F =7[47 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJQP
JPKJO +=>A5>5A7= 4F 6:@>A:CF 6:@4<6<:@7C KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJQJ
JPKJQ +=>A5>5A7= 4F 6:@>A:CF 4F AFRF><89: KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJQQ
!><V<474F= KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJQW
Algoritmos e programao I.indd 8 7/8/2013 16:00:56
Process Black
J
&/'%$;1-.$
+457A4: &=7<7 B<CD:
Um rograma de comulador e resuIlado da alividade inleIecluaI de um
rogramador. Iara isso, so necessarios aIguns conhecimenlos revios em
abslrao, modeIagem de robIemas e Igica de rogramao. Todo rograma
de comulador comea a arlir de um aIgorilmo, ou se|a, alraves da organizao
Igica das inslrues que resoIvem o robIema. Nesle cailuIo, sero aresenlados
os conceilos inlrodulrios ara a conslruo de aIgorilmos, suas formas de
reresenlao, seus melodos de conslruo e sua eslrulura basica. Ior fim, so
rooslos aIguns exercicios de fixao.
JKJ M:@6F<>: 4F 7CN:A<>G:
Um aIgorilmo e uma sequncia de assos finilos que visam soIucionar um
delerminado robIema. Islamos acoslumados a resoIver aIgorilmos lodos os
dias, mas os fazemos de forma lo aulomalica que nem nos damos conla. Ior
exemIo: lrocar uma Imada, fazer um boIo, rearar um cafe assado, escovar
os denles, lrocar um neu, enlre oulros. Todas as alividades do nosso dia a dia que
ossuem uma sequncia de assos ara serem resoIvidas odem ser consideradas
um aIgorilmo.
Se uliIizarmos o exemIo do rearo de um cafe assado, leremos os seguinles
assos:
1 asso: reservar os ulensiIios !Ilro de cafe, chaIeira e reciienle ara coIocar o
cafe assado,
2 asso: reservar o de cafe e a agua,
3 asso: aquecer a agua,
Algoritmos e programao I.indd 9 7/8/2013 16:00:56
Process Black
JP
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
4 asso: coIocar o de cafe no !Ilro,
5 asso: dese|ar a agua aquecida no !Ilro.
Se voc seguir esles assos, ao finaI, voc rovaveImenle lera um cafe assado.
O que ode ser observado e que aIguns desles assos odem ser aIlerados em
sua ordem. Ior exemIo, se reservarmos os ingredienles anles dos ulensiIios, no
leremos aIlerao no rodulo finaI. Iorem, se coIocassemos a agua no fiIlro com
cafe anles de aquec-Ia, o resuIlado seria indese|ado.
Um aIgorilmo comulacionaI ode ser definido como uma sequncia Igica
de inslrues ou comandos, que devem ser seguidas ara se obler a soIuo de
um robIema. Da mesma forma que um aIgorilmo do dia a dia, deve seguir
uma sequncia de assos Igicos, que devem ser ordenados de forma cIara ara
soIucionar o robIema.
JKO M:@=>A589: 4: 7CN:A<>G:
Iara conslruir um aIgorilmo, lemos que saber cIaramenle quaI o robIema que
dese|amos soIucionar, ou se|a, quaI o ob|elivo do aIgorilmo. Iara isso, recisamos
anaIisar o robIema idenlificando lrs eIemenlos basicos: enlrada, rocessamenlo
e saida.
A enlrada so os eIemenlos necessarios ara dar inicio a soIuo do robIema, o
rocessamenlo e a maniuIao dos eIemenlos de enlrada ara obleno da saida
e a saida e o resuIlado eserado. Se considerarmos o exemIo do cafe assado,
aresenlado anleriormenle, odemos idenlificar:
enlrada: !Ilro de cafe, chaIeira, reciienle ara coIocar o cafe assado, de
cafe e agua,
rocessamenlo: aquecer a agua, coIocar o no !Ilro e dese|ar a agua no
!Ilro,
saida: o cafe assado.
Se considerarmos os aIgorilmos comulacionais, odemos descrever esles
eIemenlos em:
enlrada de dados: so os dados que o aIgorilmo devera receber,
rocessamenlo de dados: so as frmuIas e a disosio Igica em que os dados
de enlrada sero organizados ara obler-se a soIuo do robIema,
saida de dados: e a aresenlao do ob|elivo, ou se|a, o resuIlado eserado.
Algoritmos e programao I.indd 10 7/8/2013 16:00:56
Process Black
JJ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Ior exemIo, se dese|amos fazer um aIgorilmo ara fazer a soma de dois numeros
quaisquer, odemos nesle caso idenlificar:
enlrada de dados: ergunlar ao usuario dois numeros quaisquer,
rocessamenlo de dados: caIcuIar a soma dos numeros informados,
saida de dados: aresenlar o resuIlado da soma.
Semre que formos conslruir um aIgorilmo, devemos nos concenlrar nesles lrs
eIemenlos, eIes semre eslaro envoIvidos. Iorem, nem semre eslaro nesla
ordem, odendo variar de aIgorilmo ara aIgorilmo.
JKQ B:AG7= 4F AFRAF=F@>789: 4F 7CN:A<>G:=
Ixislem diversas formas de reresenlarmos os aIgorilmos. Denlre eIas, cilamos
aIgumas abaixo.
Linguagem naluraI: uliIiza uma descrio narraliva ara eseci!car os assos
a serem reaIizados ara execular a larefa. Ior no ossuir uma eslrulura bem
de!nida, ode dar margem ara mas inlerrelaes e ambiguidades.
Iorlugus eslrulurado: uliIiza uma Iinguagem eslrulurada e se assemeIha a um
rograma escrilo em Iinguagem de rogramao. Tambem e denominado de
seudocdigo e e baslanle uliIizado como asso iniciaI anles de descrever um
rograma em uma Iinguagem de rogramao. Nesla disciIina, o orlugus
eslrulurado sera a forma uliIizada ara reresenlar os aIgorilmos no decorrer
dos cailuIos.
IIuxograma: e uma forma universaI de reresenlao. UliIiza-se de !guras
geomelricas ara iIuslrar os assos a serem seguidos ara resoIuo de um
robIema.
Diagrama de Chain: e uma variao do "uxograma ermilindo ler-se uma
viso hierarquica e eslrulurada da Igica do aIgorilmo. Isla reresenlao e
ouco uliIizada nos dias de ho|e.
JKQKJ ,:A>5N5f= F=>A5>5A74:
O orlugus eslrulurado e um lio de reresenlao de aIgorilmo que uliIiza
uma Iinguagem fIexiveI, inlermediaria enlre a Iinguagem naluraI e Iinguagem de
rogramao. NormaImenle, e uliIizado ara organizar o raciocinio Igico anles
de imIemenlar o mesmo em uma Iinguagem de rogramao. Todo aIgorilmo
reresenlado em orlugus eslrulurado devera ler sua sinlaxe re-definida. O
exemIo 1.1 roe um robIema que sera resoIvido uliIizando um aIgorilmo em
orlugus eslrulurado.
Algoritmos e programao I.indd 11 7/8/2013 16:00:56
Process Black
JO
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Excmp!n 1.1. Iaa um aIgorilmo que caIcuIe e escreva a media finaI de um aIuno
considerando duas nolas, emila a mensagem AIuno arovado ou AIuno
rerovado. Observao: um aIuno e considerado arovado se obliver nola finaI
maior ou iguaI a 6.
algoritmo exemplo_11
variveis
nota1, nota2, media: real
incio
escrever (Informe a 1 nota do aluno = )
ler (nota1)
escrever (Informe a 2 nota do aluno = )
ler (nota2)
media (nota1 + nota2) / 2
se (media >= 6) ento
escrever (Mdia final = , media, Aluno aprovado)
seno
escrever (Mdia final = ,media, Aluno reprovado)
fim
JKQKO BC5X:NA7G7
O fIuxograma, lambem chamado de diagrama de bIocos, e uma reresenlao de
aIgorilmo que uliIiza simboIos geomelricos ara reresenlar as aes (comandos
ou inslrues) a serem seguidas. Assim como orlugus eslrulurado, e uliIizado
ara organizar o raciocinio Igico do robIema anles de imIemenla-Io em uma
Iinguagem de rogramao. Os simboIos uliIizados ara reresenlar eslas aes
so aresenlados na TabeIa 1.1.
Algoritmos e programao I.indd 12 7/8/2013 16:00:56
Process Black
JQ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
'7SFC7 JKJ 3 )[GS:C:= NF:Gg>A<6:=
5mbn!n Nnmc Dcscrin
TerminaI
Indica o inicio e o fim do fIuxo do
aIgorilmo.
Sela de fIuxo de dados
Indica o senlido do fIuxo de dados e faz
a conexo dos bIocos exislenles.
Inlrada de dados
Indica que sero recebidas informaes
alraves do lecIado.
Irocessamenlo
Indica a reaIizao de caIcuIos,
alribuies ou quaIquer maniuIao de
dados.
Saida de dados
Indica que as informaes sero exibidas
na leIa.
Desvio condicionaI
Indica a lomada de deciso, dividindo o
fIuxo do aIgorilmo em dois caminhos.
Coneclor Serve ara coneclar dois fIuxos.
Cabe deslacar que e ossiveI enconlrar formas geomelricas diferenles ara
reresenlar delerminados comandos e/ou inslrues. Inlrelanlo, isso e aenas
uma conveno ou habilo de cada aulor. O aIgorilmo do exemIo 1.1 reresenlado
alraves de um fIuxograma ode ser vislo a seguir.
Algoritmos e programao I.indd 13 7/8/2013 16:00:56
Process Black
J0
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
JKQKQ ;<7NA7G7 4F MD7R<@
Os diagramas de Chain foram criados ara subsliluir os diagramas de bIocos
(fIuxograma) or um diagrama de quadros. A vanlagem de se uliIizar esle lio
de diagrama e a cIareza quanlo ao fIuxo de execuo e sua desvanlagem e que e
Algoritmos e programao I.indd 14 7/8/2013 16:00:57
Process Black
JU
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
mais lrabaIhoso fazer desenhos do que escrever lexlo. O aIgorilimo do exemIo 1.1
reresenlado alraves de um diagrama de Chain ode ser vislo a seguir.
inicio
ler nota1, nota2
media (nota1 + nota2) / 2
S N
resultado Aprovado resultado Reprovado
escrever media, resuIlado
fim
JKQK0 B:AG7C<c789: 4F 5G 7CN:A<>G:
Conslruir um aIgorilmo consisle em delaIhar os dados que sero rocessados
e as inslrues que vo oerar sobre esses dados. Isla conslruo, como vislo
anleriormenle, ode ser feila or diferenles formas de reresenlaes, mas e
imorlanle formaIizarmos a descrio dos aIgorilmos segundo uma conveno
re-definida, ara que lodas as essoas envoIvidas no rocesso ossam enlend-
Ia. Iara isso, e necessario definir o con|unlo de regras que reguIam a escrila do
aIgorilmo (sinlaxe) e o con|unlo de regras que definem a inlerrelao desla
escrila (semnlica). Nos cailuIos seguinles, sero definidas a sinlaxe e a semnlica
uliIizadas nesla disciIina.
JK0 +=>A5>5A7 ST=<67 4F 5G 7CN:A<>G:
Observe a receila de boIo de chocoIale a seguir.
/$0$ -& 12$1$0(3&
4*5#&-,&*3&'6
7 8 $9$'
7 : & :;< =>1(#( -& (?@1(#
7 < =>1(#(' %(#,*2( -& 3#,5$
7 : =>1(#( -& 12$1$0(3& &. AB $C (12$1$0(3(-$
7 :;< =>1(#( -& B0&$
7 : 1$02&# -& %&#.&*3$ &. AB
media > 6
Algoritmos e programao I.indd 15 7/8/2013 16:00:58
Process Black
JH
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
7 : A,3(-( -& '(0
7 : =>1(#( -& D5C( EC&*3&
F$-$ -& A#&A(#$6
:G /(3( $' $9$' 1$. $ (?@1(#H $ B0&$H $ (12$1$0(3(-$ & ( %(#,*2(H -&A$,' (-,1,$*& ( D5C(
EC&*3& & A$# @03,.$ $ %&#.&*3$ &. ABG
<G I''& &. %$#*$ 1$. 3&.A&#(3C#( .J-,( A$# KL .,*C3$'H -&'&*%$#.& EC&*3&G
Se observarmos com aleno, veremos que esla receila ossui uma eslrulura
basica: nome da receila, ingredienles e modo de rearo. Iodemos verificar que
esla eslrulura faciIila a IocaIizao da receila, ermile verificar se ossuimos lodos
os ingredienles, anles de comear o rearo.
Um aIgorilmo, reresenlado em orlugus eslrulurado, ossui uma eslrulura
baslanle semeIhanle a uma receila, organizada em lrs arles: idenlificao do
aIgorilmo, decIarao de conslanles e/ou variaveis e o coro do aIgorilmo. Observe
o exemIo 1.1, reroduzido novamenle a seguir.
AIgorilmo exemIo_11 4-&*3,%,1(-$# -$ (05$#,3.$
variaveis
nola1, nola2, media: reaI
M&10(#(?N$ -& 9(#,D9&,'
inicio
escrever ("Informe a 1 nola do aIuno ")
Ier (nola1)
escrever ("Informe a 2 nola do aIuno ")
Ier (nola2)
media (nola1 + nola2) / 2
se (media > 6) enlo
escrever ("Media finaI ", media, "AIuno arovado")
seno
escrever ("Media finaI ",media, "AIuno rerovado")
fim
O$#A$ -$ (05$#,3.$
Isla eslrulura faciIila a IocaIizao do aIgorilmo, ermilindo saber quais variaveis
e/ou conslanles sero usadas e como eIas sero maniuIadas ara obler o resuIlado
eserado.
#C:==TA<:
Irograma: e uma sequncia de inslrues que odem ser execuladas or
um comulador. I um con|unlo de ordens dadas a um comulador ara a
Algoritmos e programao I.indd 16 7/8/2013 16:00:58
Process Black
JW
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
reaIizao de um delerminado rocesso. I a imIemenlao de um aIgorilmo
em uma delerminada Iinguagem de rogramao.
Linguagens de rogramao: so ferramenlas (sovares) que ermilem o
desenvoIvimenlo de rogramas. Iossuem um oder de criao iIimilado,
desde |ogos, edilores de lexlo, sislemas emresariais ale sislemas oeracionais.
Ixislem varias Iinguagens de rogramao, cada uma com suas caraclerislicas
rrias. IxemIos: IascaI, C, C++, C-, }ava e oulras.
%FeFAf@6<7=
ASCINCIO, A. I. G., CAMIOS, I. A. V.. PC*-(.&*3$' -( "#$5#(.(?N$ -& O$.AC3(-$#&':
aIgorilmos, IascaI, C/C++ (adro ANSI) e }ava. 3.ed. So IauIo: Iearson Iducalion do
rasiI, 2012.
IRG, A. C., IIGUIIR, }. I.. +B5,1( -& "#$5#(.(?N$. 2.ed. Canoas: Id. ULRA, 2001.
IORILLONI, A. L. V., IIRSIACHIR, H. I.. +B5,1( -& "#$5#(.(?N$: a conslruo de
aIgorilmos e eslruluras de dados. 3.ed. So IauIo: Iearson/Irenlice HaII, 2005.
GOODRICH, M. T., TAMASSIA, R.. "#$Q&3$ -& I05$#,3.$'. Iorlo AIegre: ookman, 2004.
MIZRAHI, V. V.. R#&,*(.&*3$ &. +,*5C(5&. O. 2.ed. So IauIo: Iearson/Irenlice HaII, 2008.
IUGA, S., RISSITTI, G.. +B5,1( -& "#$5#(.(?N$ & S'3#C3C#(' -& M(-$'. So IauIo: Iearson/
Irenlice HaII, 2003.
!><V<474F=
1. Vamos conslruir aIguns aIgorilmos Descreva os assos necessarios ara
soIucionar os seguinles desa!os.
a. Descreva como voc lroca uma Imada.
b. Um camons recisa alravessar um rio uliIizando um barco com
caacidade ara carregar eIe mesmo e mais uma de suas lrs cargas,
que so: um Iobo, uma oveIha e um mao de aslo. Quais os assos
que o camons deve seguir ara alravessar o rio sem erder a sua
carga Sabendo que o Iobo come a oveIha e a oveIha come o aslo, ou
se|a, em momenlo aIgum o Iobo ode !car sozinho com a oveIha e a
oveIha !car sozinha com o aslo. DICA: rocure no GoogIe (vvv.
googIe.com.br) as aIavras |ogo camons oveIha aslo ou |ogo
aslor oveIha feno e lesle sua soIuo de maneira onIine.
Algoritmos e programao I.indd 17 7/8/2013 16:00:58
Process Black
J_
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
c. Trs |esuilas e lrs canibais recisam alravessar um rio, ara isso
disem de um barco com caacidade ara duas essoas. Ior medida
de segurana, em nenhuma das margens do rio, o numero de canibais
ode ser maior que o numero de |esuilas. QuaI a soIuo ara efeluar
a lravessia de forma segura DICA: rocure no GoogIe (vvv.googIe.
com.br) as aIavras |ogo |esuilas canibais e lesle sua soIuo de
maneira onIine.
d. A Torre de Hani consisle em uma base com lrs inos, onde em
um deIes, eslo disoslos lrs discos uns sobre os oulros, em ordem
crescenle de dimelro, de cima ara baixo. Descreva como assar lodos
os discos de um ino ara oulro quaIquer, usando um dos inos como
auxiIiar, de maneira que um disco maior nunca !que em cima de oulro
menor em nenhuma siluao. DICA: rocure no GoogIe (vvv.googIe.
com.br) as aIavras |ogo lorre de hani e lesle sua soIuo de maneira
onIine.
e. Iedro ossui dois baIdes: um com caacidade ara comorlar 5 Iilros,
e oulro que comorla 3 Iilros. IIe no ossui oulros reciienles e os
baIdes no ossuem marcaes de voIume. Como Iedro, uliIizando
os dois baIdes, ode relirar exalamenle sele Iilros de agua de uma
fonle
1
Rcspnsta:
Incha o baIde de 5 Iilros e dese|e a agua no baIde de 3 Iilros, enchendo-o.
Agora, reslaram 2 Iilros no baIde de 5 Iilros. }ogue fora a agua do baIde de 3
Iilros e coIoque neIe os 2 Iilros que eslavam no baIde de 5 Iilros. A seguir, encha
o baIde de 5 Iilros novamenle e ronlo! No baIde de 3 Iilros eslo, agora, 2
Iilros de agua, enquanlo o baIde de 5 Iilros esla cheio, lolaIizando 7 Iilros!
Algoritmos e programao I.indd 18 7/8/2013 16:00:59
Process Black
O
M$/M+&'$) B1/;!(+/'!&)
+457A4: &=7<7 B<CD:
Nesle cailuIo, sero aresenlados os conceilos de dados, variaveis e conslanles,
os lios basicos de dados, os oeradores arilmelicos, reIacionais e Igicos. Ior fim,
so rooslos aIguns exercicios de fixao.
OKJ ;74:=
O ob|elivo da maioria dos aIgorilmos e maniuIar dados, lransformando os dados
de enlrada em dados de saida (resuIlados). Um dado e um alribulo que descreve
enlidades ou caraclerislicas, or exemIo: o nome de uma essoa, sua idade, seu
eso ou o numero de aginas de um Iivro.
Quando vamos desenvoIver um aIgorilmo, recisamos reviamenle idenlificar o
lio do dado que esla sendo maniuIado. Isso e necessario, ois, quando formos
converler o aIgorilmo ara uma Iinguagem de rogramao, os dados sero
armazenados na memria rinciaI do comulador e um esao de memria
esecifico (lamanho) deve ser reservado a cada lio de dado. Os rinciais lios
de dados so: inleiro, reaI, caraclere, cadeia e Igico.
OKJKJ '<R:= ST=<6:= 4F 474:=
Os lios de dados odem ser cIassificados de acordo com o lio de informao
conlida neIes: dados numericos (inleiros e reais), dados Iilerais (caraclere e cadeia)
e dados Igicos.
Inleiro: os dados do lio inleiro erlencem ao con|unlo de numeros inleiros
reIalivos, ou se|a, so aqueIes que no ossuem comonenles decimais ou
fracionarios, odendo ser osilivos, nuIos ou negalivos. IxemIos: quanlidade
Algoritmos e programao I.indd 19 7/8/2013 16:00:59
Process Black
OP
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
de aIunos em uma lurma (aIunos 24), idade de uma essoa (anos 25), o ano
(ano 2013), oulros.
ReaI: os dados do lio reaI erlencem ao con|unlo dos numeros reais. Iorlanlo,
odem ler comonenles decimais ou fracionarios e ser osilivos, nuIos ou
negalivos. IxemIos: o saIario de uma essoa (saIario 3.450,34), a lemeralura
(lemeralura 12), a aIlura de um redio (aIlura 120,50), oulros.
Caraclere: os dados do lio caraclere so comoslos or um unico caraclere
aIfanumerico (0..9, A..Z, a..z) ou caraclere eseciaI (-, , , , , >, ...). Os dados
do lio caraclere so deIimilados or asas. IxemIos: cdigo de acesso a um
sislema (cdigo -), resosla a uma ergunla (resosla S), seIeo enlre
aIlernalivas (aIlernaliva a), o sexo de uma essoa (sexo M).
Cadeia: os dados do lio cadeia so formados or um con|unlo de caracleres
aIfanumericos (0..9, A..Z, a..z) e/ou caracleres eseciais (-, , , , , >, ...).
Os dados do lio cadeia so deIimilados or asas. IxemIos: nome de um
funcionario (nome AIberlo MaIazovski), endereo de um cIienle (rua Av.
}uIio de CasliIhos, 990), senha de acesso a um sislema (senha 9125ax),
oulros.
Lgico: um dado do lio Igico s ode assumir dois eslados: verdadeiro ou
faIso. IxemIos: resosla verdadeiro (ou, simIesmenle resosla v), lesle
faIso (ou, simIesmenle lesle f).
OKO E7A<TVF<=
Uma variaveI ode ser definida como um IocaI, na memria rinciaI, uliIizado
ara armazenar o conleudo de um delerminado dado, odendo receber muilos
vaIores diferenles duranle a execuo do aIgorilmo, mas em um dado inslanle eIa
s ode aresenlar um vaIor unico.
O conceilo de variaveI foi criado ara ermilir, que alraves do nome (idenlificador),
os aIgorilmos ossam armazenar, IocaIizar e maniuIar as informaes na
memria dos comuladores. So, orlanlo, formadas or lrs alribulos: um nome
(idenlificador), um lio de dado, e um vaIor.
Toda variaveI ossui um nome unico que a diferencia das demais. A escoIha do
nome de uma variaveI cabe ao rogramador, orem aIgumas regras devem ser
observadas. So eIas:
devem semre comear com uma Ielra,
odendo ser seguida de Ielras e/ou numeros,
Algoritmos e programao I.indd 20 7/8/2013 16:00:59
Process Black
OJ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
no e ermilido esaos em branco, caso ha|a necessidade de searador o
subIinhado baixo (C*-&#'1$#&) ode ser uliIizado, exemIo: nome_aIuno,
no e ermilido uliIizar simboIos, oeradores, acenlos e caracleres eseciais,
or exemIo: , , -, +, /, , ,
no e ermilido uliIizar uma aIavra reservada, ou se|a, uma aIavra que e
um comando do aIgorilmo.
IxemIos de nomes de variaveis:
SaIario : correlo,
1ANO : errado, ois no comeou com uma Ielra,
ANO1 : correlo,
a casa : errado, ois conlem o esao em branco,
SAL/HORA : errado, ois conlem o caracler /,
SAL_HORA : correlo,
_DISCONTO : errado, ois no comeou com uma Ielra.
Uma considerao imorlanle quanlo ao nome das variaveis e que esle deve ser
um nome reresenlalivo, de forma que ao Ier o nome da variaveI se|a ossiveI
Iembrar o que eIa armazena.
OKOKJ )<@>7XF 47 4F6C7A789: 4F V7A<TVF<=
Todas as variaveis uliIizadas em um aIgorilmo devem ser decIaradas anles de
serem uliIizadas, alraves da definio de um nome (idenlificador) e do lio de
dado que sera armazenado neIa. A seguir ve|a como e a sinlaxe da decIarao de
uma variaveI:
variveis
<nome da varivel ou lista de nomes> : <tipo de dado>
Excmp!n
variveis
nome, endereco: cadeia
idade: inteiro
peso, altura: real
Algoritmos e programao I.indd 21 7/8/2013 16:00:59
Process Black
OO
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
OKQ M:@=>7@>F=
Ao conlrario das variaveis, o conleudo armazenado em uma conslanle no e
aIlerado duranle a execuo de um aIgorilmo.
OKQKJ )<@>7XF 47 4F6C7A789: 4F 6:@=>7@>F=
As conslanles lambem so definidas anles de serem uliIizadas e seus nomes
(idenlificadores) seguem as mesmas regras das variaveis. A seguir ve|a como e a
sinlaxe da decIarao de uma conslanle.
constantes
<nome da constante> = <contedo>
Excmp!n
constantes
pi = 3.1416
OK0 +XRAF==YF=
Oeradores so eIemenlos fundamenlais que, quando reIacionados com oerandos,
roduzem uma exresso. Ior exemIo, a exresso 3 + 2 reIaciona dois oerandos
(os numeros 3 e 2) or meio do oerador (+) que reresenla a oerao de adio.
Os oerandos dividem-se em arilmelicos, reIacionais e Igicos. Isla diviso esla
direlamenle reIacionada com o lio de exresso onde aarecem os oeradores.
OK0KJ +XRAF==YF= 7A<>Gg><67=
As exresses arilmelicas so formadas or variaveis numericas e oeradores
arilmelicos, cu|o resuIlado da avaIiao e do lio numerico (inleiro ou reaI). Os
oeradores arilmelicos e sua ordem de rioridade so aresenlados na TabeIa 2.1.
'7SFC7 OKJ 3 $RFA74:AF= 7A<>Gg><6:=
Opcradnr Opcran Prinridadc Excmp!n
Ixonenciao 1 3 2 9
// Radiciao 1 25 // 2 5
MuIliIicao 2 7 2 14
/ Diviso 2 20 / 4 5
div Quocienle da diviso inleira 2 20 div 6 3
mod Reslo da diviso inleira 2 20 mod 6 2
+ Adio 3 3 + 8 11
- Sublrao 3 30 12 18
Algoritmos e programao I.indd 22 7/8/2013 16:00:59
Process Black
OQ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Como ode ser observado, nos aIgorilmos odemos uliIizar lrs oeradores
reIacionados a diviso, so eIes: /, div e mod. Vamos enlender quaI a diferena de
cada um deIes, reIembrando aIguns conceilos:
14 4
-12 3,5 quocienle
20
- 20
0 reslo da diviso
Observe que a diviso de 14 or 4 e a diviso lradicionaI, onde fracionamos o
quocienle ale oblermos um resuIlado nuIo ou uma dizima eridica. Ao uliIizarmos
os oeradores div e mod, eslamos fazendo a diviso inleira, ou se|a, devemos
encerrar o rocesso de diviso quando o quocienle necessilar ser fracionado. Ve|a
o exemIo da diviso inleira:
14 4
- 8 3 quoienle inleiro (div)
2 reslo da diviso inleira (mod)
Oulros exemIos so aresenlados na TabeIa 2.2.
'7SFC7 OKO 3 +XFGRC:= 4F 4<V<=9:b 4<V F G:4
10 / 2 5
10 div 2 5
10 mod 2 0
20 / 3 6,666...
20 div 3 6
20 mod 3 2
105 / 10 10,5
105 div 10 10
105 mod 10 5
32 / 6 5, 333...
32 div 6 5
32 mod 6 2
A rioridade enlre os oeradores define a ordem em que os mesmos devem ser
execulados denlro de uma mesma exresso. Quando ha dois ou mais oeradores
de mesma rioridade em uma exresso, a execuo se da da esquerda ara
direila. Iara aIlerar a ordem em que os oeradores so execulados, ode-se uliIizar
arnleses, or exemIo:
(2 + 3) 2
5 2
10
2 + 3 2
2 + 6
8
Temos que ler um cuidado eseciaI quando converlemos uma exresso malemalica
ara uliIiza-Ia em um aIgorilmo. Considere a exresso a seguir.
3 + 5
2
Algoritmos e programao I.indd 23 7/8/2013 16:00:59
Process Black
O0
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Iodemos observar que o resuIlado desla exresso e 4, ois rimeiro somamos 3
e 5 e deois dividimos or 2. Quando converlemos a exresso ara uliIizarmos
em um aIgorilmo, lemos que ler cuidado com a rioridade dos oeradores, um
rogramador desalenlo oderia muilo bem, converler a exresso malemalica ara
3 + 5 / 2. Observe que agora o resuIlado e 5,5 diferenle da exresso originaI, ois
o oerador riorilario e a diviso e no a soma, ou se|a, rimeiro iriamos dividir
5 or 2, ara somenle deois somarmos a 3. Quando converlemos uma exresso
malemalica, ara uliIizarmos nos aIgorilmos, normaImenle, leremos que adicionar
arnleses ara delerminar a rioridade de execuo. A converso correla ara
exresso e (3 + 5) / 2.
OK0KO +XRAF==YF= CdN<67=
As exresses Igicas lm como resuIlado um vaIor Igico (verdadeiro/V ou
faIso/I). IIas odem ser formadas or oeradores reIacionais, oeradores Igicos
ou eIa combinao de ambos.
!"#"!"$ &'()*+,)(- )(.*/0,1*0-
Isles oeradores, Iislados na TabeIa 2.3, so uliIizados quando se dese|a efeluar
comaraes enlre ob|elos de mesma nalureza (variaveis do mesmo lio de dado).
O resuIlado de uma comarao e semre um vaIor Igico (verdadeiro ou faIso).
'7SFC7 OKQ 3 $RFA74:AF= AFC76<:@7<=
Opcradnr Cnmparan Excmp!n
IguaI 3 2 faIso
> Diferenle 10 > 20 verdadeiro
Menor 4 18 verdadeiro
> Maior 10 > 20 faIso
Menor ou iguaI 4 7 verdadeiro
> Maior um iguaI 7 > 7 verdadeiro
!"#"!"! &'()*+,)(- .230/,-
Os oeradores Igicos ou booIeanos lambem resuIlam em vaIores Igicos e,
normaImenle, so usados ara combinar exresses reIacionais. Os oeradores
Igicos e suas reIaes de recedncia so moslrados na TabeIa 2.4.
Algoritmos e programao I.indd 24 7/8/2013 16:00:59
Process Black
OU
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
'7SFC7 OK0 3 $RFA74:AF= CdN<6:=
Opcradnr Opcran Prinridadc Excmp!n
NO Negao 1 no(2>7) no(I) V
I Con|uno 2 (22) e (37) (V) e (V) V
OU Dis|uno 3 (25) ou (920) (I) ou (V) V
Se considerarmos duas variaveis, reresenladas or !"#$%!&'( e !"#$%!&'), odemos
descrever as lrs oeraes Igicas a seguir:
* !"#$%!&'( I !"#$%!&'): o oerador I resuIla em verdadeiro somenle se ambas
variaveis forem verdadeiras. Se uma for faIsa, ou se ambas forem faIsas, a
oerao I lambem sera faIsa.
* !"#$%!&'( OU !"#$%!&'): o oerador OU resuIla em verdadeiro se eIo menos
uma das variaveis for verdadeira. S resuIlam em vaIores faIsos se ambas
variaveis forem faIsas.
NO !"#$%!&'(: o oerador NO e unario, ou se|a, s se aIica a uma variaveI.
I avaIiado verdadeiro se a variaveI for faIsa, de modo conlrario, o oerador
NO resuIlara em faIso, se a variaveI for verdadeira.
A TabeIa 2.5, chamada de labeIa-verdade, exemIifica o uso dos oeradores Igicos,
considerando duas variaveis Igicas (A e ). Uma vez que uma variaveI Igica s
ode assumir dois vaIores (verdadeiro ou faIso), ha exalamenle qualro combinaes
ossiveis enlre A e . As coIunas conlm os resuIlados das oeraes Igicas sobre
as combinaes de A e .
'7SFC7 OKU 3 '7SFC7hVFA474F 4:= :RFA74:AF= CdN<6:=
A B Nn A Nn B A c B A nu B
V V I I V V
V I I V I V
I V V I I V
I I V V I I
Algoritmos e programao I.indd 25 7/8/2013 16:01:00
Process Black
OH
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
%FeFAf@6<7=
ASCINCIO, A. I. G., CAMIOS, I. A. V.. PC*-(.&*3$' -( "#$5#(.(?N$ -& O$.AC3(-$#&':
aIgorilmos, IascaI, C/C++ (adro ANSI) e }ava. 3.ed. So IauIo: Iearson Iducalion do
rasiI, 2012.
IRG, A. C., IIGUIIR, }. I.. +B5,1( -& "#$5#(.(?N$. 2.ed. Canoas: Id. ULRA, 2001.
IORILLONI, A. L. V., IIRSIACHIR, H. I.. +B5,1( -& "#$5#(.(?N$: a conslruo de
aIgorilmos e eslruluras de dados. 3.ed. So IauIo: Iearson/Irenlice HaII, 2005.
GOODRICH, M. T., TAMASSIA, R.. "#$Q&3$ -& I05$#,3.$'. Iorlo AIegre: ookman, 2004.
MIZRAHI, V. V.. R#&,*(.&*3$ &. +,*5C(5&. O. 2.ed. So IauIo: Iearson/Irenlice HaII, 2008.
IUGA, S., RISSITTI, G.. +B5,1( -& "#$5#(.(?N$ & S'3#C3C#(' -& M(-$'. So IauIo: Iearson/
Irenlice HaII, 2003.
!><V<474F=
1) Marque com um () somenle os idenli!cadores vaIidos.
a) ( ) nome b) ( ) endereo c) ( ) 3x4
d) ( ) soma e) ( ) saIario_Iiquido f) ( ) a
g) ( ) nomedaemresa h) ( ) ah! i) ( ) saIario lolaI
|) ( ) media k) ( ) x2 I) ( ) dala
2) Observe os dados Iislados a seguir e idenli!que o seu lio, marcando com I
os inleiros, R os reais e C as cadeias.
a) ( ) nome de uma essoa b) ( ) o lamanho de uma mesa
c) ( ) reo de um rodulo d) ( ) o numero de cadeiras de uma mesa
e) ( ) um dia do ms f) ( ) o cdigo de um rodulo
3) AssinaIe com um () a resosla cerla. Ao converlermos a exresso
3
y x ara
uliIizarmos em um aIgorilmo, como !ca a exresso
a) ( ) x//3 + y//3, b) ( ) x + y //3, c) ( ) (x + y) // 3, d) ( ) 3 // x+y.
4) QuaI o resuIlado da exresso 9 + 4 / 2 + 3
a) 9,5, b) 2,6, c) 14, d) 9,8, e) 9.
Algoritmos e programao I.indd 26 7/8/2013 16:01:00
Process Black
OW
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
5) Considere as exresses Igicas e assinaIe (V) quando o resuIlado for
Verdadeiro e (I) quando o resuIlado for IaIso.
a) ( ) V e I ou V b) ( ) no (V e V) c) ( ) (V ou I ) e V d) ( ) no I e no I
Gabaritn:
1. As resoslas correlas so: a, d, f, g, k e I.
2. a) C, b) R, c) R, d) I, e) I, f) C
3. b
4. c
5. a) V, b) I, c) V, d) V
Algoritmos e programao I.indd 27 7/8/2013 16:01:01
Process Black
O_
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Algoritmos e programao I.indd 28 7/8/2013 16:01:02
Process Black
Q
&/)'%1-Z+) ,%&(&'&E!)
E7@F==7 "<@4FG7@@
Inslrues rimilivas so comandos basicos uliIizados ara efeluar a enlrada e a
saida de dados e sua movimenlao na memria. Isles comandos, resenles na
maioria absoIula dos aIgorilmos, garanlem a comunicao do aIgorilmo com o
mundo exlerior. Nesle cailuIo, sero aresenladas as inslrues rimilivas de
alribuio, de enlrada de dados (comando LIR) e de saida de dados (comando
ISCRIVIR).
QKJ &@=>A589: RA<G<><V7 4F 7>A<S5<89:
A sinlaxe do comando de alribuio, reresenlado eIo simboIo , e aresenlada
a seguir e exemIificada nos Quadros 3.1 e 3.2.
<varivel> <expresso>
<varivel> <varivel>
<varivel> <constante>
Seu funcionamenlo consisle em avaIiar a exresso (variaveI ou conslanle) que
esla a direila do comando e armazenar o vaIor resuIlanle desla exresso (variaveI
ou conslanle) na osio de memria corresondenle a variaveI que aarece a
esquerda do comando. Iara isso, e necessario que o lio de dado resuIlanle da
exresso (variaveI ou conslanle) avaIiada e o lio de dado da variaveI se|am
comaliveis. No exemIo media 6.8 (I-se media recebe seis e oilo), o vaIor
6,8 e armazenado na osio de memria reservada a variaveI media, que devera
ser do lio reaI. Oulros exemIos da inslruo rimiliva de alribuio odem ser
observados no Quadro 3.1.
Algoritmos e programao I.indd 29 7/8/2013 16:01:02
Process Black
QP
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: QKJ +XFGRC:= 47 <@=>A589: RA<G<><V7 4F 7>A<S5<89:
Dcc!aran dc varivcis Excmp!ns dc cnmandns dc atribuin
x, y: lgico
codigo, qtde: inteiro
desconto, total: real
nome, telefone: cadeia
resposta1: caractere
resposta2: caractere
01 x verdadeiro
02 y x
03 codigo 2089
04 qtde 3
05 total qtde * 5
06 desconto total * 0.1
07 nome "Ana Lu"
08 telefone "(99)3333-0123"
09 resposta1 "S"
10 resposta2 resposta1
As variaveis x e y foram decIaradas do lio Igico, enlo odem armazenar
os vaIores Igicos verdadeiro ou faIso. No exemIo 01, x recebe o vaIor Igico
verdadeiro. No exemIo 02, y recebe o vaIor armazenado na variaveI x, ou se|a, o
vaIor Igico verdadeiro.
As variaveis codigo e qtde, decIaradas como inleiro, s odem armazenar vaIores
do lio inleiro, como iIuslram os exemIos 03 e 04 do Quadro 3.1. No caso de uma
variaveI do lio reaI, esla odera armazenar lanlo vaIores reais (como iIuslra o
exemIo 06), quanlo vaIores inleiros. Isla siluao ode ser observada no exemIo
05, onde a variaveI total que e do lio reaI, recebe o resuIlado da exresso
qtde*5 que, nesle exemIo, resuIla em 15.
Os uIlimos exemIos do Quadro 3.1 iIuslram a alribuio de vaIores a variaveis
decIaradas como Iilerais. I imorlanle observar que quando as variaveis forem
do lio cadeia ou caraclere, a exresso a ser alribuida a variaveI deve eslar enlre
asas, como nos exemIos 07, 08 e 09. No exemIo 10, a variaveI resposta2 recebe
o vaIor armazenado na variaveI resposta1, ou se|a, um S.
Relomando a queslo da comalibiIidade de lio, deslaca-se que: (a) o resuIlado
de uma exresso com oeradores de diviso e/ou radiciao semre devera ser
armazenado em uma variaveI do lio reaI, como iIuslram os exemIos 03, 04 e 05
do Quadro 3.2, (b) os oeradores mod e div s odem ser uliIizados com oerandos
do lio inleiro, conforme exemIos 06 e 07 do Quadro 3.2, (c) o resuIlado de uma
exresso com oeradores mod e/ou div deve ser armazenado em uma variaveI do
lio inleiro siluaes lambem observaveis nos exemIos 06 e 07 do Quadro 3.2.
Algoritmos e programao I.indd 30 7/8/2013 16:01:02
Process Black
QJ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: QKO +XFGRC:= 47 <@=>A589: RA<G<><V7 4F 7>A<S5<89:
Dcc!aran dc varivcis Excmp!ns dc cnmandns dc atribuin
op1, op2: inteiro
r1, r2, r3: real
r4, r5: inteiro
01 op1 10
02 op2 2
03 r1 op1 / op2
04 r2 18 / 4
05 r3 25 // 2
06 r4 8 mod 3
07 r5 op1 div 3
Nos exemIos 01 e 02 do Quadro 3.2, as variaveis op1 e op2 recebem,
reseclivamenle, 10 e 2. Im seguida, a variaveI r1 recebe o resuIlado da diviso de
op1 or op2 que, nesle caso, e 5. Como foi exIicado anleriormenle, indeendenle
do resuIlado da exresso ser inleiro ou no, a variaveI r1 foi decIarada do lio reaI
e ira armazenar esle resuIlado como reaI. O mesmo ocorre nos exemIos 04 e 05, em
que as variaveis r2 e r3 armazenam, reseclivamenle, os vaIores 4,5 (resuIlado de
uma diviso) e 5 (resuIlado de uma radiciao). O Quadro 3.3 iIuslra os resuIlados
dos exemIos 06 e 07, em que as variaveis r4 e r5 recebem, reseclivamenle, 2
(reslo da diviso) e 3 (quocienle inleiro).
\574A: QKQ +XFGRC: 4:= :RFA74:AF= G:4 F 4<V
r4 8 mod 3
8 3
- 6 2
2 reslo da diviso
r5 op1 div 3
10 3
- 9 3
1 quocienle inleiro
(a) IxemIo 06 - Quadro 3.2 (b) IxemIo 07 - Quadro 3.2
Ior fim, vaIe Iembrar que uma sequncia de alribuies modifica o conleudo da
variaveI armazenada na memria, como iIuslra o exemIo do Quadro 3.4.
\574A: QK0 +XFGRC: 4F 5G7 =F]5f@6<7 4F 7>A<S5<8YF=
Comandos de alribuio Memria
01 x 10
02 x x + 1
03 x 20
x
10
11
20
Algoritmos e programao I.indd 31 7/8/2013 16:01:02
Process Black
QO
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
No exemIo 01 do Quadro 3.4 a variaveI x e iniciaIizada com o vaIor 10 e,
consequenlemenle, a reresenlao da variaveI x na memria armazenava 10, em
seguida, e alribuido a variaveI x o vaIor resuIlanle da exresso x + 1, que e 11,
subsliluindo o vaIor anlerior na memria, finaImenle, no exemIo 03, a variaveI
x recebe o vaIor 20, que subsliluiu o vaIor anlerior na memria como iIuslra o
Quadro 3.4.
O Quadro 3.5 aresenla um aIgorilmo que exemIifica o uso da inslruo
rimiliva de alribuio. Isle aIgorilmo lem or ob|elivo caIcuIar a media finaI
de um aIuno, considerando duas nolas. Iara isso, foram reaIizadas as seguinles
alribuies: a variaveI nota1 recebe 7, a variaveI nota2 recebe 9 e o resuIlado
da exresso que caIcuIa a media, (nota1+nota2)/2, e armazenado na
variaveI media.
\574A: QKU +XFGRC: 47 7RC<6789: 4: 6:G7@4: 4F 7>A<S5<89:
Excmp!n 3.1 - Ca!cu!a a mdia dc um a!unn, cnnsidcrandn duas nntas.
01 algoritmo exemplo31
02 variveis
03 nota1, nota2, media: real
04 incio
05 nota1 7
06 nota2 9
07 media (nota1 + nota2) / 2
08 fim
A soIuo do exemIo 3.1 aresenla duas Iimilaes significalivas: (a) a media do
aIuno e caIcuIada e armazenada na memria, orem no e exibida ara o usuario
do rograma, (b) se o rograma for execulado mais de uma vez, o resuIlado sera
semre o mesmo, ois os vaIores armazenados nas variaveis nota1 e nota2
ermanecem inaIlerados. Islas Iimilaes sero resoIvidas com o uso das inslrues
rimilivas de saida e de enlrada, reseclivamenle, conforme descrevem as sees
3.2 e 3.3.
QKO &@=>A589: RA<G<><V7 4F =7[47
A inslruo rimiliva de saida de dados lem or ob|elivo rover a inlerao enlre o
rograma e o usuario (ou oulros disosilivos), emilindo mensagens e/ou exibindo
vaIores armazenados em variaveis na memria do comulador.
A sinlaxe do comando de saida de dados e aresenlada a seguir e exemIificada
no Quadro 3.6. Como ode ser observado, o argumenlo da inslruo rimiliva
Algoritmos e programao I.indd 32 7/8/2013 16:01:02
Process Black
QQ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
de saida ode ser uma unica variaveI, uma Iisla de variaveis, um IileraI ou uma
mislura de ambos.
escrever(<varivel>)
escrever(<lista de variveis>)
escrever(<literal>)
escrever(<literal>,<varivel>)
\574A: QKH +XFGRC:= 47 =<@>7XF 4: 6:G7@4: 4F =7[47
Varivcis Excmp!ns dc cnmandns dc sada
media: real
nome: cadeia
01 escrever(media)
02 escrever("Digite o nome do aluno: ")
03 escrever("Mdia final = ",media)
04 escrever(nome," obteve mdia final = ",media)
No exemIo 01 do Quadro 3.6, o comando de saida exibira aenas o vaIor
armazenado na variaveI media (considerando a variaveI media do exemIo 3.1,
o vaIor exibido seria 8). No segundo exemIo, o comando de saida conlem aenas
um IileraI, que sera reroduzido no disosilivo de saida. O exemIo 03 conlem um
IileraI (Media finaI ) e uma variaveI (media), searados or virguIa, resuIlando
em FJ-,( %,*(0 T U. Suondo que a variaveI nome armazene }oana e a variaveI media
armazene 8, a saida do exemIo 04 seria V$(*( $W3&9& .J-,( %,*(0 T U.
A aIicao do comando de saida ode ser observada no exemIo 3.2, que reescreve
a soIuo do exemIo 3.1 resoIvendo uma das Iimilaes ciladas anleriormenle.
Nesla soIuo, descrila no Quadro 3.7, a media do aIuno e caIcuIada e armazenada
na memria (Iinha 07) e, or fim, exibida ao usuario (Iinha 08).
\574A: QKW +XFGRC: 47 7RC<6789: 4F 6:G7@4:= 4F 7>A<S5<89: F =7[47 4F 474:=
Excmp!n 3.2 - Ca!cu!a a mdia dc um a!unn, cnnsidcrandn duas nntas.
01 algoritmo exemplo32
02 variveis
03 nota1, nota2, media: real
04 incio
05 nota1 7
06 nota2 9
07 media (nota1 + nota2) / 2
08 escrever ("Mdia do aluno = ", media)
09 fim
Algoritmos e programao I.indd 33 7/8/2013 16:01:02
Process Black
Q0
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
QKQ &@=>A589: RA<G<><V7 4F F@>A747
A inslruo rimiliva de enlrada ermile que dados fornecidos eIo usuario via
lecIado (ou or oulros disosilivos) se|am armazenados em variaveis na memria
do comulador.
A sinlaxe do comando de enlrada de dados e exibida a seguir e exemIificada no
Quadro 3.8.
ler(<varivel>)
ler(<lista de variveis>)
\574A: QK_ +XFGRC:= 47 =<@>7XF 4: 6:G7@4: 4F F@>A747
Varivcis Excmp!ns dc cnmandns dc sada
nota1: real
nota2: real
nome: cadeia
01 ler(nome,nota1,nota2)
02 escrever("Digite o nome do aluno: ")
ler(nome)
escrever("Digite a primeira nota do aluno: ")
ler(nota1)
escrever("Digite a segunda nota do aluno: ")
ler(nota2)
No rimeiro exemIo do Quadro 3.8, as lrs variaveis so Iidas em um unico
comando de enlrada, sem nenhuma informao revia ao usuario sobre o que eIe
devera digilar. Ao conlrario, o exemIo 02 I uma variaveI de cada vez e, anles
de cada comando de enlrada, emile uma mensagem ao usuario indicando o que
deve ser informado ao rograma. Isla soIuo faciIila a inlerao do usuario com
o rograma, garanlindo que as informaes se|am fornecidas na ordem correla.
Relomando o exemIo que caIcuIa a media do aIuno, rooslo na seo 3.1, o
Quadro 3.9 aresenla a soIuo ideaI ara o robIema, incIuindo o comando de
enlrada ara resoIver a segunda Iimilao mencionada anleriormenle, com reIao
as variaveis nota1 e nota2 que ermaneciam inaIleradas, resuIlando semre o
mesmo vaIor ara media. Isle aIgorilmo inicia soIicilando que o usuario digile a
rimeira nola do aIuno (Iinha 05) e, em seguida, I o vaIor digilado e armazena na
variaveI nola1 (Iinha 06). O mesmo aconlece com a segunda nola (Iinhas 07 e 08).
A media do aIuno e caIcuIada e armazenada na variaveI media (Iinha 09) e, or
fim, exibida ao usuario (Iinha 10).
Algoritmos e programao I.indd 34 7/8/2013 16:01:03
Process Black
QU
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: QKL +XFGRC: 47 7RC<6789: 4F 6:G7@4:= 4F 7>A<S5<89:b F@>A747 F =7[47
Excmp!n 3.3 - Ca!cu!a a mdia dc um a!unn, cnnsidcrandn duas nntas.
01 algoritmo exemplo33
02 variveis
03 nota1, nota2, media: real
04 incio
05 escrever("Digite a primeira nota: ")
06 ler(nota1)
07 escrever("Digite a segunda nota: ")
08 ler(nota2)
09 media (nota1 + nota2) / 2
10 escrever ("Mdia do aluno = ", media)
11 fim
Um rogramador deve se reocuar em faciIilar a inlerao do usuario com o
rograma. Inlo, e imorlanle uliIizar o comando de saida anles do comando
de enlrada, ara indicar o que o usuario deve digilar (como nas Iinhas 05 e 07
do exemIo 3.3). Oulro delaIhe imorlanle a ser observado e a aresenlao dos
resuIlados que deve conler, aIem do resuIlado em si, mensagens exIicando seu
significado (como aconlece na Iinha 10 do exemIo 3.3).
%FeFAf@6<7=
ASCINCIO, A. I. G., CAMIOS, I. A. V.. PC*-(.&*3$' -( "#$5#(.(?N$ -& O$.AC3(-$#&':
aIgorilmos, IascaI, C/C++ (adro ANSI) e }ava. 3.ed. So IauIo: Iearson Iducalion do
rasiI, 2012.
IRG, A. C., IIGUIIR, }. I.. +B5,1( -& "#$5#(.(?N$. 2.ed. Canoas: Id. ULRA, 2001.
IORILLONI, A. L. V., IIRSIACHIR, H. I.. +B5,1( -& "#$5#(.(?N$: a conslruo de
aIgorilmos e eslruluras de dados. 3.ed. So IauIo: Iearson/Irenlice HaII, 2005.
GOODRICH, M. T., TAMASSIA, R.. "#$Q&3$ -& I05$#,3.$'. Iorlo AIegre: ookman, 2004.
MIZRAHI, V. V.. R#&,*(.&*3$ &. +,*5C(5&. O. 2.ed. So IauIo: Iearson/Irenlice HaII, 2008.
IUGA, S., RISSITTI, G.. +B5,1( -& "#$5#(.(?N$ & S'3#C3C#(' -& M(-$'. So IauIo: Iearson/
Irenlice HaII, 2003.
Algoritmos e programao I.indd 35 7/8/2013 16:01:03
Process Black
QH
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
!><V<474F=
1) AssinaIe (V) ara as asserlivas Verdadeiras e (I) ara as IaIsas.
(a) ( ) Inslrues rimilivas so comandos basicos uliIizados ara
efeluar a enlrada e a saida de dados e sua movimenlao na
memria, resenles aenas em aIguns aIgorilmos.
(b) ( ) So inslrues rimilivas: o comando de alribuio, o comando
de enlrada de dados e o comando de saida de dados.
(c) ( ) O funcionamenlo do comando de alribuio consisle em avaIiar
a exresso, variaveI ou conslanle que esla a esquerda do
comando e armazenar o vaIor resuIlanle na osio de memria
corresondenle a variaveI que aarece a direila do comando.
(d) ( ) A inslruo rimiliva de saida de dados lem or ob|elivo
rover a inlerao enlre o rograma e o usuario (ou oulros
disosilivos).
(e) ( ) A inslruo rimiliva de enlrada ermile que dados fornecidos
eIo usuario via lecIado (ou or oulros disosilivos) se|am
armazenados em variaveis na memria do comulador.
2) Sobre a inslruo rimiliva de alribuio...
(I) O resuIlado de uma oerao de diviso semre deve ser armazenado
em uma variaveI decIarada do lio reaI, ois mesmo que o resuIlado
desla oerao se|a um vaIor inleiro (exemIo: 10 / 5, cu|o resuIlado
sera 2), esle sera armazenado como reaI.
(II) Os oerandos de uma exresso com oeradores mod e/ou div odem
ser do lio reaI, mas o resuIlado da exresso deve ser armazenado
em uma variaveI do lio inleiro.
(III) No comando de alribuio, o IileraI alribuido a uma variaveI do lio
cadeia ou caraclere deve eslar enlre asas conforme o exemIo: nome
Luciene.
Quais asserlivas so VIRDADIIRAS
(a) Aenas I e II
(b) Aenas II.
(c) Aenas I e III.
(d) I, II e III.
(e) Nenhuma das resoslas anleriores.
Algoritmos e programao I.indd 36 7/8/2013 16:01:03
Process Black
QW
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
3) Considerando a decIarao de variaveis a seguir, assinaIe os comandos de
alribuio considerados INVLIDOS.
variveis
nome, aluno: cadeia
resp: caractere
a, b, c: inteiro
total, preco, resto: real
teste, ! ag: lgico
(a) ( ) res "sim" (f) ( ) total resto mod 5
(b) ( ) a b / 5 (g) ( ) a b + c
(c) ( ) teste "verdadeiro" (h) ( ) preco qtde * 5.00
(d) ( ) nome "Roberto" (i) ( ) ! ag teste
(e) ( ) b b + 1 (|) ( ) preco total - c
4) AssinaIe a oo em que uma ou mais das inslrues rimilivas esla(o)
INCORRITA(s), considerando a decIarao de variaveis a seguir.
variveis
nome: cadeia
idade: inteiro
peso, altura, imc: real
(a)
escrever(Informe o nome, o peso e a altura do paciente: )
ler(nome, peso, altura)
imc peso / (altura * altura)
escrever(IMC do paciente ,nome, = , imc)
(b) idade 10
nome Solano S
escrever(nome, tem , idade, anos)
(c) escrever(Informe o nome do paciente: )
ler(nome)
escrever(Informe a idade do paciente: )
ler(idade)
(d)
ler(nome, peso, altura)
imc peso / (altura * altura)
escrever(imc)
(e) Nenhuma das resoslas anleriores.
Algoritmos e programao I.indd 37 7/8/2013 16:01:03
Process Black
Q_
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
5) Considerando os comandos de alribuio a seguir, marque a oo que
conlenha a decIarao de variaveis CORRITA.
a 10
b 2
c a mod b
teste "S"
desconto 500 * 0.1
x 50
y 10
z x / y
(a)
variveis
a, b, x, y: inteiro
c, desconto, z: real
teste: caractere
(b)
variveis
teste: caractere
a, b, c, x, y: inteiro
desconto, z: real
(c)
variveis
teste: cadeia
a, b, c, x, y: inteiro
desconto, z: real
(d)
variveis
teste: caractere
a, b, x, y: inteiro
c, desconto, z: real
(e)
Nenhuma das respostas anteriores.
%F=R:=>7=
1) a I, b V, c I, d V, e V.
2) c.
3) a, b, c, f, h.
4) c.
5) b
Algoritmos e programao I.indd 38 7/8/2013 16:01:04
Process Black
0
+)'%1'1%! )+\1+/M&!"
E7@F==7 "<@4FG7@@
Ao criar um aIgorilmo, lem-se como ob|elivo a soIuo de um delerminado
robIema. Iara que esle robIema se|a resoIvido, os conceilos basicos e as inslrues
rimilivas esludados nos cailuIos anleriores, devem eslar organizados de forma a
reresenlar um con|unlo de aes, que seguira um fIuxo de execuo delerminado
or lrs eslruluras basicas de conlroIe: sequenciaI, condicionaI e reeliliva.
Isle cailuIo e dedicado a eslrulura sequenciaI, que conlem um con|unlo de
inslrues que sero execuladas de forma Iinear, de cima ara baixo, da esquerda
ara a direila, sem nenhum desvio enlre as direlivas de inicio e fim do aIgorilmo.
As eslruluras de conlroIe condicionaI e reeliliva sero esludadas nos cailuIos
subsequenles.
0KJ +=>A5>5A7 ST=<67 4F 5G 7CN:A<>G: =F]5F@6<7C
A eslrulura basica de um aIgorilmo sequenciaI e aresenlada no Quadro 4.1. Na
Iinha 01, lem-se a idenlificao do aIgorilmo, seguida da decIarao de variaveis
(Iinhas 02 e 03) e, or fim, enlre as direlivas de inicio e fim enconlra-se o coro do
aIgorilmo (Iinhas 04 a 08).
\574A: 0KJ +=>A5>5A7 ST=<67 4F 5G 7CN:A<>G: =F]5F@6<7C
01 algoritmo <nome>
02 variveis
03 <lista de variveis>: <tipo>
04 incio
05 <instruo 1>
06 <instruo 2>
07 <instruo n>
08 fim
Algoritmos e programao I.indd 39 7/8/2013 16:01:04
Process Black
0P
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Como ode ser observado na eslrulura aresenlada no Quadro 4.1, o fIuxo de
execuo de um aIgorilmo sequenciaI e Iinear.
0KO +XFGRC: 4F 5G 7CN:A<>G: 6:G F=>A5>5A7 =F]5F@6<7C
O aIgorilmo aresenlado no cailuIo 3, que caIcuIa a media de um aIuno a arlir
de duas nolas fornecidas eIo usuario, e um exemIo da aIicao da eslrulura
sequenciaI. Isle exemIo, escrilo em orlugus eslrulurado, foi reroduzido
novamenle no Quadro 4.2.
\574A: 0KO +XFGRC: 4F 7CN:A<>G: =F]5F@6<7C FG R:A>5N5f= F=>A5>5A74:
Excmp!n 3.3. Ca!cu!a a mdia dc um a!unn, cnnsidcrandn duas nntas.
01 algoritmo exemplo33
02 variveis
03 nota1, nota2, media: real
04 incio
05 escrever("Digite a primeira nota: ")
06 ler(nota1)
07 escrever("Digite a segunda nota: ")
08 ler(nota2)
09 media (nota1 + nota2) / 2
10 escrever ("Mdia do aluno = ", media)
11 " m
As inslrues que comem o coro do aIgorilmo sero execuladas uma as a
oulra, na mesma ordem em que foram escrilas, sem quaIquer lio de desvio. Alraves
da inslruo rimiliva de saida na Iinha 05, o usuario recebera uma mensagem
soIicilando que a rimeira nola do aIuno se|a digilada. O vaIor digilado eIo
usuario sera Iido e armazenado na variaveI nota1 (Iinha 06). Os mesmos assos
so reelidos ara a segunda nola (Iinhas 07 e 08), que e Iida e armazenada na
variaveI nota2. Im seguida, a variaveI media recebe a media do aIuno, caIcuIada
na Iinha 09 a arlir da exresso (nota1+nota2)/2.
A soIuo do aIgorilmo, aresenlada no Quadro 4.2, foi escrila em orlugus
eslrulurado, mas lambem e ossiveI uliIizar oulras formas de reresenlao, como
iIuslra o fIuxograma da Iigura 4.1. O fIuxograma de um aIgorilmo sequenciaI
ermile, a arlir do simboIo de inicio, a execuo das inslrues conlidas nos
simboIos subsequenles sem nenhum desvio, ale aIcanar o simboIo de fim.
Algoritmos e programao I.indd 40 7/8/2013 16:01:04
Process Black
0J
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
B<N5A7 0KJ +XFGRC: 4F 7CN:A<>G: =F]5F@6<7C FG eC5X:NA7G7
Algoritmos e programao I.indd 41 7/8/2013 16:01:04
Process Black
0O
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
0KQ M:@=>A589: 4F 7CN:A<>G:= =F]5F@6<7<=
O rimeiro asso, ara chegar a soIuo de um robIema, e idenlificar no seu
enunciado quais so os dados de enlrada e de saida e, a arlir dai, definir o
rocessamenlo necessario ara gerar o resuIlado eserado.
No exemIo aresenlado na seo anlerior, os dados de enlrada so as nolas do
aIuno e a saida eserada e a sua media. Iara chegar a esse resuIlado, foi reaIizado o
caIcuIo da media arilmelica enlre as duas nolas fornecidas eIo usuario, conforme
ode ser observado no esquema da Iigura 4.2.
B<N5A7 0KO +CFGF@>:= ST=<6:= R7A7 6:@=>A589: 4: 7CN:A<>G: 4F 6TC65C: 47 Gg4<7
Entrada Prnccssamcntn 5ada
Nolas do aIuno
nota1 nota2
CaIcuIar a media
media (nota1+nota2)/2
Media do aIuno
media
A revia idenlificao dos eIemenlos basicos, iIuslrados na Iigura 4.2, e imorlanle
ara a conslruo da soIuo do robIema. Oulros exemIos so aresenlados
a seguir com o ob|elivo de iIuslrar asso a asso como conslruir soIues ara
aIgorilmos sequenciais. A arlir do enunciado de cada robIema so idenlificados os
eIemenlos basicos ara a conslruo do aIgorilmo (enlrada / rocessamenlo / saida)
e, em seguida, aresenla-se a soIuo do robIema em orlugus eslrulurado.
Excmp!n 4.1
Dcscrin dn prnb!cma: conslrua um aIgorilmo que: (a) Ieia o nome de um
funcionario, a quanlidade de horas or eIe lrabaIhadas e o vaIor que eIe recebe or
hora, (b) caIcuIe o saIario brulo, o vaIor do INSS (8 sobre o saIario brulo) e o saIario
Iiquido do funcionario, (c) escreva o nome do funcionario e os vaIores caIcuIados.
A arlir desle enunciado, monla-se o esquema da Iigura 4.3 que conlem os
eIemenlos basicos ara a conslruo da soIuo.
B<N5A7 0KQ +CFGF@>:= ST=<6:= R7A7 6:@=>A589: 4: 7CN:A<>G: 4: FXFGRC: 0KJ
Entrada Prnccssamcntn 5ada
nome
ht
vh
CaIcuIar saIario brulo
sbht*vh
CaIcuIar INSS
insssb*0.08
CaIcuIar saIario Iiquido
slsb-inss
nome
sb
inss
sl
Algoritmos e programao I.indd 42 7/8/2013 16:01:04
Process Black
0Q
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Ioram idenlificados, a arlir do enunciado do robIema (exemIo 4.1), lrs dados de
enlrada: nome do funcionario, horas lrabaIhadas e vaIor da hora (reresenlados na
Iigura 4.3 eIas variaveis nome,ht e vh, reseclivamenle). Como saida, esera-se:
nome do funcionario, saIario brulo, inss e saIario Iiquido (o nome do funcionario
sera informado eIo usuario e os oulros dados sero caIcuIados). No rocessamenlo,
e necessario definir como, a arlir dos dados de enlrada, gerar o resuIlado eserado.
Nesle exemIo, foram criadas as variaveis sb, inss e sl ara armazenar os
vaIores caIcuIados ara o saIario brulo, o INSS e o saIario Iiquido. O saIario brulo
e caIcuIado muIliIicando a quanlidade de horas lrabaIhadas eIo vaIor da hora
(ht*vh), o vaIor do INSS reresenla 8 do saIario brulo (sb*0.08) e, or fim, o
saIario Iiquido e o saIario brulo menos o vaIor do INSS (sb-inss).
Com o esquema da Iigura 4.3, orlanlo, e ossiveI conslruir a soIuo ara o
robIema, descrila em orlugus eslrulurado no Quadro 4.3.
\574A: 0KQ ):C589: 4: FXFGRC: 0KJ FG R:A>5N5f= F=>A5>5A74:
Excmp!n 4.1 - Ca!cu!a n sa!rin dc um Iuncinnrin.
01 algoritmo exemplo41
02 variveis
03 nome: cadeia
04 ht: inteiro
05 vh,sb,inss,sl: real
06 incio
07 escrever("Nome do funcionrio: ")
08 ler(nome)
09 escrever("Quantidade de horas trabalhadas: ")
10 ler(ht)
11 escrever("Valor da hora: ")
12 ler(vh)
13 sb ht * vh
14 inss sb * 0.08
15 sl sb - inss
16 escrever ("Funcionrio: ", nome)
17 escrever ("Salrio bruto: R$", sb)
18 escrever ("INSS: R$", inss)
19 escrever ("Salrio lquido: R$", sl)
20 fim
O aIgorilmo inicia com a definio de um idenlificador (Iinha 01), que deve seguir
as mesmas regras usadas ara definir nomes de variaveis - como no e ermilido o
uso de esao em branco e caracleres eseciais, o exemIo 4.1 e idenlificado como
exemplo41. Inlre as Iinhas 02 e 05, consla a decIarao de variaveis: o nome do
funcionario e do lio cadeia, a quanlidade de horas lrabaIhadas foi decIarada do
Algoritmos e programao I.indd 43 7/8/2013 16:01:05
Process Black
00
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
lio inleiro e as demais variaveis so do lio reaI (vaIor da hora, saIario brulo, inss
e saIario Iiquido). O coro do aIgorilmo esla enlre as Iinhas 06 e 20, onde eslo
organizados os eIemenlos basicos de enlrada/rocessamenlo/saida do esquema
aresenlado na Iigura 4.3. Os comandos que reresenlam a enlrada de dados
eslo enlre as Iinhas 07 e 12 - anles de cada inslruo rimiliva de enlrada (Iinhas
08, 10 e 12), e sera emilida uma mensagem ara o usuario, indicando os dados a
serem digilados (Iinhas 07, 09 e 11). Os caIcuIos do rocessamenlo aarecem enlre
as Iinhas 13 e 15, cu|os resuIlados sero escrilos enlre as Iinhas 16 e 19 - comandos
que reresenlam a saida de dados.
Excmp!n 4.2
Dcscrin dn prnb!cma: sabe-se que na cidade o indice de nalaIidade anuaI e
30 maior do que na cidade . Conslrua um aIgorilmo que, a arlir do indice de
nalaIidade anuaI da cidade , caIcuIe e escreva o vaIor eslimado da nalaIidade
anuaI na cidade .
O esquema da Iigura 4.4 conlem os eIemenlos basicos ara a conslruo da soIuo
desle robIema.
B<N5A7 0K0 +CFGF@>:= ST=<6:= R7A7 6:@=>A589: 4: 7CN:A<>G: 4: FXFGRC: 0KO
Entrada Prnccssamcntn 5ada
ndice de
nalaIidade anuaI
da cidade
y
CaIcuIar o indice de
nalaIidade da cidade ,
que e 30 suerior ao da
cidade
x y*1.3
ndice de
nalaIidade anuaI
da cidade
x
A enlrada e o indice de nalaIidade da cidade (reresenlada eIa variaveI y).
O ob|elivo do aIgorilmo e caIcuIar e escrever o indice de nalaIidade da cidade
(reresenlada eIa variaveI x), que e 30 suerior ao da cidade . A soIuo ara
o robIema esla descrila em orlugus eslrulurado no Quadro 4.4.
Algoritmos e programao I.indd 44 7/8/2013 16:01:05
Process Black
0U
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: 0K0 ):C589: 4: FXFGRC: 0KO FG R:A>5N5f= F=>A5>5A74:
Excmp!n 4.2 - Ca!cu!a n ndicc dc nata!idadc dc uma cidadc.
01 algoritmo exemplo42
02 variveis
03 x, y: real
04 incio
05 escrever("Indice de natalidade da cidade Y: ")
06 ler(y)
07 x y * 1.3
08 escrever ("Indice de natalidade da cidade X: ", x)
09 fim
Excmp!n 4.3
Dcscrin dn prnb!cma: faa um aIgorilmo que converla uma lemeralura de graus
Cenligrados ara graus Iahrenheil. A frmuIa de converso e I(9C+160)/5, onde
I e a lemeralura em Iahrenheil e C e a lemeralura em Cenligrados.
Os dados de enlrada e saida, bem como o rocessamenlo necessario ara resoIver
o robIema, odem ser observados na Iigura 4.5. A arlir desles dados, chega-se a
soIuo ara o robIema, aresenlada em orlugus eslrulurado no Quadro 4.5.
B<N5A7 0KU +CFGF@>:= ST=<6:= R7A7 6:@=>A589: 4: 7CN:A<>G: 4: FXFGRC: 0KQ
Entrada Prnccssamcntn 5ada
Temeralura em
graus Cenligrados
C
Converler a lemeralura
de graus Cenligrados ara
Iahrenheil
F (9*C+160)/5
Temeralura em
graus Iahrenheil
F
\574A: 0KU ):C589: 4: FXFGRC: 0KQ FG R:A>5N5f= F=>A5>5A74:
Excmp!n 4.3 - Cnnvcrsn dc graus Ccntgradns para graus Fahrcnhcit.
01 algoritmo exemplo43
02 variveis
03 C, F: real
04 incio
05 escrever("Temperatura em graus Centgrados: ")
06 ler(C)
07 F (9*C+160)/5
08 escrever ("Temperatura em graus Fahrenheit: ", F)
09 fim
Algoritmos e programao I.indd 45 7/8/2013 16:01:05
Process Black
0H
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
0K0 'F=>F 4F GF=7 4F 7CN:A<>G:= 6:G F=>A5>5A7 =F]5F@6<7C
O lesle de mesa lem or ob|elivo deleclar, caso exislam, erros semnlicos na
soIuo do aIgorilmo (ou se|a, erros de Igica). Iara reaIizar o lesle de mesa, as
variaveis uliIizadas no aIgorilmo devem ser Iisladas, uma simuIao da execuo do
aIgorilmo e reaIizada e lodos os vaIores assumidos eIas variaveis so regislrados.
No finaI, comara-se a resosla oblida com a resosla eserada. Caso no ha|a
coincidncia enlre eslas resoslas, deleclou-se um erro de Igica.
Os exemIos descrilos a seguir aresenlam o aIgorilmo e seu lesle de mesa.
Excmp!n 4.4
Dcscrin dn prnb!cma: faa um aIgorilmo ara caIcuIar a area de um lringuIo.
B<N5A7 0KH +CFGF@>:= ST=<6:= R7A7 6:@=>A589: 4: 7CN:A<>G: 4: FXFGRC: 0K0
Entrada Prnccssamcntn 5ada
ase e aIlura
b h
CaIcuIar a area do lringuIo
area (b*h)/2
rea do lringuIo
area
Mesmo que no esle|a exIicilo na descrio do robIema, os dados de enlrada odem
ser idenlificados a arlir da frmuIa usada ara caIcuIar a area de um lringuIo.
Assim, como iIuslra a Iigura 4.6, os dados necessarios ara caIcuIar esla area so a
base e a aIlura do lringuIo. No rocessamenlo, simIesmenle, aIica-se a frmuIa
e, or fim, o resuIlado devera ser exibido ao usuario. O aIgorilmo que resoIve esle
robIema e descrilo no Quadro 4.6 e seu lesle de mesa e exIicado na sequncia.
\574A: 0KH ):C589: 4: FXFGRC: 0K0 FG R:A>5N5f= F=>A5>5A74:
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
01 algoritmo exemplo44
02 variveis
03 b, h, area: real
04 incio
05 escrever("Base: ")
06 ler(b)
07 escrever("Altura: ")
08 ler(h)
09 area (b*h)/2
10 escrever ("rea = ", area)
11 fim
Algoritmos e programao I.indd 46 7/8/2013 16:01:05
Process Black
0W
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
!inha
b h area
06 12
Iara leslar a soIuo aresenlada, e reciso definir vaIores ara os dados de enlrada.
Nesle caso, a base e a aIlura do lringuIo (no lesle aresenlado a seguir definiu-se
b 12 e h 5, que resuIlara em uma area de 30). Im seguida, e necessario monlar a
labeIa onde devem conslar lodas as variaveis uliIizadas na soIuo e o regislro dos
vaIores assumidos or eIas na simuIao da execuo do aIgorilmo. Isla elaa do
lesle ode ser observada no Quadro 4.7. esquerda, aarecem os vaIores definidos
como dados de enlrada, no cenlro, a labeIa do lesle de mesa que sera reenchida
duranle a simuIao de execuo do aIgorilmo, e a direila, um esao onde sera
regislrada a saida do aIgorilmo.
\574A: 0KW 3 'F=>F 4F GF=7 4: FXFGRC: 0K0 F>7R7 J
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
Entrada Tcstc dc mcsa 5ada
b 12
h 5
Ieilo islo, a simuIao de execuo deve ser iniciada, assando Iinha a Iinha do
aIgorilmo e regislrando os vaIores assumidos eIas variaveis. Na Iinha 05 do
aIgorilmo (Quadro 4.6), rimeira inslruo a ser execulada, sera emilida uma
mensagem ao usuario ara que eIe informe a base do lringuIo. Isla inslruo no
aIlera o vaIor de nenhuma das variaveis, orlanlo, no gera regislro na labeIa do
lesle de mesa. Na Iinha 06 (Quadro 4.6), o vaIor digilado eIo usuario sera Iido e
armazenado na variaveI b, gerando um regislro no lesle de mesa, conforme iIuslra
o Quadro 4.8. Isle regislro conlem o numero da Iinha da inslruo execulada no
aIgorilmo e o vaIor de enlrada da variaveI b, definido como 12 nesle lesle.
\574A: 0K_ 3 'F=>F 4F GF=7 4: FXFGRC: 0K0 F>7R7 Ob R7==: J
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
Entrada Tcstc dc mcsa 5ada
b 12 varivcis
h 5
!inha
b h area
varivcis
Algoritmos e programao I.indd 47 7/8/2013 16:01:06
Process Black
0_
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Na Iinha 07 (Quadro 4.6), uma mensagem sera emilida ao usuario soIicilando que
eIe digile a aIlura do lringuIo, vaIor que sera Iido e armazenado na variaveI h
(Iinha 08 - Quadro 4.6), gerando um novo regislro na labeIa do lesle de mesa, que
ode ser observado no Quadro 4.9.
\574A: 0KL 3 'F=>F 4F GF=7 4: FXFGRC: 0K0 F>7R7 Ob R7==: O
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
Entrada Tcstc dc mcsa 5ada
b 12
h 5
A area do lringuIo e caIcuIada na Iinha 09 (Quadro 4.6). Considerando os vaIores
armazenados nas variaveis b e h, lem-se (125)/2, que resuIla em 30. Isle vaIor
e armazenado na variaveI area, devendo, orlanlo, ser regislrado na labeIa do
lesle de mesa.
\574A: 0KJP 3 'F=>F 4F GF=7 4: FXFGRC: 0K0 F>7R7 Ob R7==: Q
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
Entrada Tcstc dc mcsa 5ada
b 12
h 5
Ior fim, na Iinha 10 (Quadro 4.6), consla a inslruo rimiliva de saida que ira
exibir ao usuario o vaIor da area do lringuIo, caIcuIado no aIgorilmo. O Quadro
4.11 aresenla, a direila, a saida do aIgorilmo.
!inha
b h area
06 12
08 5
varivcis
!inha
b h area
06 12
08 5
09 30
varivcis
Algoritmos e programao I.indd 48 7/8/2013 16:01:06
Process Black
0L
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: 0KJJ 3 'F=>F 4F GF=7 4: FXFGRC: 0K0 F>7R7 Ob R7==: 0
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
Entrada Tcstc dc mcsa 5ada
b 12
h 5 rea 30
Incerrada a simuIao de execuo, verifica-se que a resosla oblida coincide com
a resosla eserada (area 30). Iorlanlo, o aIgorilmo esla correlo.
Excmp!n 4.5
Dcscrin dn prnb!cma: escreva um aIgorilmo ara caIcuIar a quanlidade de
combusliveI necessaria ara um aulomveI ercorrer delerminada dislncia.
Considerar um consumo medio de um Iilro de combusliveI ara cada 12 km
rodados.
Iara caIcuIar a quanlidade de combusliveI necessaria ara um aulomveI ercorrer
uma dislncia quaIquer, e necessario saber a dislncia a ser ercorrida e o consumo
medio do veicuIo. No enunciado do robIema, consla aenas o consumo medio do
veicuIo. Iorlanlo, a dislncia a ser ercorrida devera ser informada eIo usuario.
A Iigura 4.7 aresenla os eIemenlos basicos ara a conslruo desle aIgorilmo.
B<N5A7 0KW +CFGF@>:= ST=<6:= R7A7 6:@=>A589: 4: 7CN:A<>G: 4: FXFGRC: 0KU
Entrada Prnccssamcntn 5ada
Dislncia a ser
ercorrida
distancia
CaIcuIar a quanlidade de
combusliveI
litros distancia/12
Quanlidade de
combusliveI
litros
A arlir desles dados, conslri-se o aIgorilmo com a soIuo ara o robIema
(Quadro 4.12) e, em seguida, reaIiza-se o lesle de mesa (Quadros 4.13 e 4.14).
!inha
b h area
06 12
08 5
09 30
varivcis
Algoritmos e programao I.indd 49 7/8/2013 16:01:06
Process Black
UP
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: 0KJO ):C589: 4: FXFGRC: 0KU FG R:A>5N5f= F=>A5>5A74:
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
01 algoritmo exemplo45
02 variveis
03 distancia, litros: real
04 incio
05 escrever("Informe a distncia a ser percorrida: ")
06 ler(distancia)
07 litros distancia/12
08 escrever ("Sero necessrios ",litros," de combustvel.")
09 fim
Iara leslar a soIuo aresenlada, definiu-se que a dislncia a ser ercorrida e de
200 km. Assim, o vaIor eserado como resuIlado e de 16,7 Iilros de combusliveI
(200/1216,7). O Quadro 4.13 aresenla a rimeira elaa do lesle de mesa, que
consisle em monlar o esquema ara regislrar os vaIores assumidos eIas variaveis
duranle a simuIao da execuo do aIgorilmo.
\574A: 0KJQ 3 'F=>F 4F GF=7 4: FXFGRC: 0KU F>7R7 J
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
Entrada Tcstc dc mcsa 5ada
distancia 200
A simuIao de execuo e iniciada na Iinha 05 (Quadro 4.12), que exibira uma
mensagem ao usuario, ara que eIe digile a dislncia a ser ercorrida com o veicuIo.
Na sequncia (Iinha 06 - Quadro 4.12), esle vaIor sera Iido e armazenado na variaveI
distancia, gerando um regislro na labeIa do lesle de mesa, conforme ode ser
observado no Quadro 4.14.
!inha
distncia litros
varivcis
Algoritmos e programao I.indd 50 7/8/2013 16:01:06
Process Black
UJ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: 0KJ0 3 'F=>F 4F GF=7 4: FXFGRC: 0KU F>7R7 Ob R7==: J
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
Entrada Tcstc dc mcsa 5ada
dislancia 200
Na Iinha 07 (Quadro 4.12), a quanlidade de Iilros necessaria ara ercorrer a
dislncia informada eIo usuario e caIcuIada e o resuIlado e armazenado na variaveI
litros. O regislro desla execuo aarece na labeIa do lesle de mesa do Quadro
4.15, onde lambem consla a saida de dados execulada na Iinha 08 (Quadro 4.12),
considerando o resuIlado oblido.
\574A: 0KJU 3 'F=>F 4F GF=7 4: FXFGRC: 0KU F>7R7 Ob R7==: O
Excmp!n 4.4 - C!cu!n da rca dc um tringu!n.
Entrada Tcstc dc mcsa 5ada
distancia 200 Sero necessarios 16,7
Iilros de combusliveI.
Incerrada a simuIao de execuo do aIgorilmo, verifica-se que a resosla oblida
coincide com a resosla eserada (16,7 Iilros). Iorlanlo, o aIgorilmo esla correlo.
%FeFAf@6<7=
ASCINCIO, A. I. G., CAMIOS, I. A. V.. PC*-(.&*3$' -( "#$5#(.(?N$ -& O$.AC3(-$#&': aIgorilmos,
IascaI, C/C++ (adro ANSI) e }ava. 3.ed. So IauIo: Iearson Iducalion do rasiI, 2012.
IRG, A. C., IIGUIIR, }. I.. +B5,1( -& "#$5#(.(?N$. 2.ed. Canoas: Id. ULRA, 2001.
IORILLONI, A. L. V., IIRSIACHIR, H. I.. +B5,1( -& "#$5#(.(?N$: a conslruo de
aIgorilmos e eslruluras de dados. 3.ed. So IauIo: Iearson/Irenlice HaII, 2005.
GOODRICH, M. T., TAMASSIA, R.. "#$Q&3$ -& I05$#,3.$'. Iorlo AIegre: ookman, 2004.
MIZRAHI, V. V.. R#&,*(.&*3$ &. +,*5C(5&. O. 2.ed. So IauIo: Iearson/Irenlice HaII, 2008.
IUGA, S., RISSITTI, G.. +B5,1( -& "#$5#(.(?N$ & S'3#C3C#(' -& M(-$'. So IauIo: Iearson/
Irenlice HaII, 2003.
!inha
distncia litros
06 200
varivcis
!inha
distncia litros
06 200
07 16,7
varivcis
Algoritmos e programao I.indd 51 7/8/2013 16:01:06
Process Black
UO
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
!><V<474F=
Iara cada um dos exercicios a seguir, monle o esquema com os eIemenlos
basicos (enlrada / rocessamenlo / saida), conslrua o aIgorilmo com a soIuo
ara o robIema e, or !m, reaIize o lesle de mesa, ara assegurar que a resosla
esle|a correla.
(1) O cuslo !naI de um carro novo ara o consumidor e a soma do
cuslo de fabrica, dos imoslos e da orcenlagem do dislribuidor.
Suondo que os imoslos lolaIizam 45 sobre o cuslo de fabrica e a
orcenlagem do dislribuidor se|a de 20 sobre o vaIor lolaI, escreva
um aIgorilmo que Ieia o cuslo de fabrica de um carro, caIcuIe e escreva
o cuslo !naI ao consumidor.
(2) Sabe-se que, ara iIuminar de maneira correla os cmodos de uma
casa, ara cada m
2
, deve-se usar 18 de olncia. Iaa um aIgorilmo
que receba as duas dimenses de um cmodo (em melros), caIcuIe e
aresenle a sua area (em m
2
) e a olncia de iIuminao que devera
ser uliIizada.
(3) Uma emresa que romove eselacuIos lealrais recisa de um
rograma ara de!nir o vaIor minimo ara o convile, considerando
o cuslo lolaI do eselacuIo e o numero de Iugares disoniveis ara
o ubIico no IocaI da aresenlao.
(4) Sabe-se que
1 e 12 oIegadas,
1 |arda 3 es,
1 miIha 1760 |ardas.
Iaa um aIgorilmo que receba uma medida em es, faa as converses
conforme a descrio acima e moslre os resuIlados em oIegadas,
|ardas e miIhas.
(5) Considerando uma aIicao de I reais a laxa de |uros i conslanle
or um eriodo de N meses, caIcuIe e escreva quaI sera o monlanle
M as o lermino da aIicao, sendo M I (1 + i)
N
.
Algoritmos e programao I.indd 52 7/8/2013 16:01:07
Process Black
U
+)'%1'1%! ;+ M$/'%$"+ M$/;&M&$/!"^
)+
E7@F==7 "<@4FG7@@
Como foi exIicado anleriormenle, os aIgorilmos seguem um fIuxo de execuo
delerminado or lrs eslruluras basicas de conlroIe: sequenciaI (lema do cailuIo
4), condicionaI e reeliliva.
A eslrulura condicionaI e uliIizada ara desviar o fIuxo de execuo do aIgorilmo
ara diferenles arles da soIuo. IIa divide-se em eslrulura SI e eslrulura
ISCOLHA - a rimeira deIas abordada nesle cailuIo. A eslrulura SI e mais fIexiveI,
odendo uliIizar na sua condio lodos os oeradores reIacionais (, >, , >, , >)
e, quando forem necessarias, mais de uma condio com os oeradores Igicos (I
e OU) enlre eIas. Isla eslrulura lambem e cIassificada como eslrulura condicionaI
SI simIes, comosla ou encadeada, como descrevem as rximas sees.
UKJ +=>A5>5A7 6:@4<6<:@7C )+ =<GRCF=
A sinlaxe da eslrulura condicionaI SI simIes e aresenlada a seguir.
se(<condio ou lista de condies>)ento
<instruo ou bloco de instrues>
A condio e leslada e resuIlara verdadeiro ou faIso. Quando resuIlar verdadeiro, a
inslruo da cIausuIa ento e execulada. Isla eslrulura ode conler mais de uma
condio com oeradores Igicos enlre eIas e, lambem, ode conler um bIoco de
inslrues a ser execulado, ao inves de uma inslruo unica. VaIe Iembrar que um
bIoco e comoslo or duas ou mais inslrues, deIimilado eIas direlivas de inicio e
fim. O Quadro 5.1 aresenla lrs exemIos da eslrulura condicionaI SI simIes.
Algoritmos e programao I.indd 53 7/8/2013 16:01:07
Process Black
U0
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: UKJ +XFGRC:= 47 =<@>7XF 47 F=>A5>5A7 6:@4<6<:@7C )+ =<GRCF=
Cnm instrun nica Cnm b!ncn dc instrucs Mais dc uma cnndin c b!ncn dc
instrucs
se(a>b)ento
escrever(a)
se(a>b)ento
incio
a a-b
escrever(a)
fim
se(a>b)e(a<>0)e(b<>0)ento
incio
a a/b
escrever(a)
fim
No rimeiro exemIo do Quadro 5.1, a eslrulura condicionaI SI ossui aenas
uma condio (a>b) e, quando esla resuIlar verdadeiro, uma unica inslruo a ser
execulada (escrever(a)). O segundo exemIo lambem lesla uma unica condio.
Inlrelanlo, quando esla resuIlar verdadeiro, um bIoco de inslrues sera execulado.
I, or fim, o lerceiro exemIo aresenla uma siluao em que lrs condies
devero ser verdadeiras ara que o bIoco de comandos se|a execulado.
Iara exemIificar a aIicao desla eslrulura condicionaI, roe-se a amIiao
do exemIo que caIcuIa a media de um aIuno, cu|a soIuo foi aresenlada nos
cailuIos anleriores. AIem de caIcuIar e exibir a media do aIuno, o aIgorilmo devera
emilir a mensagem AIuno arovado semre que a media for iguaI ou suerior
a 6.0 (seis). A soIuo ara esle robIema, denominado exemIo 5.1, ode ser
observada no Quadro 5.2.
\574A: UKO +XFGRC: 4F 7CN:A<>G: 6:G F=>A5>5A7 6:@4<6<:@7C )+ =<GRCF=
Excmp!n 5.1. CaIcuIa a media de um aIuno e emile mensagem AIuno arovado.
01 algoritmo exemplo51
02 variveis
03 nota1, nota2, media: real
04 incio
05 escrever("Digite a primeira nota: ")
06 ler(nota1)
07 escrever("Digite a segunda nota: ")
08 ler(nota2)
09 media (nota1 + nota2) / 2
10 escrever ("Mdia do aluno = ", media)
11 se(media>=6)ento
12 escrever("Aluno aprovado!")
13 fim
As inslrues das Iinhas 11 e 12 foram acrescenladas a soIuo iniciaI e, semre
que a condio (media>=6) for verdadeira, a mensagem Aluno aprovado! sera
exibida ao usuario.
Algoritmos e programao I.indd 54 7/8/2013 16:01:07
Process Black
UU
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Na soIuo aresenlada, enlrelanlo, quando o aIuno obliver media inferior a
6.0 (seis), nenhuma mensagem sera exibida ao usuario informando sobre sua
rerovao. Isla Iimilao ode ser resoIvida uliIizando a eslrulura condicionaI
SI comosla, descrila na rxima seo.
UKO +=>A5>5A7 6:@4<6<:@7C )+ 6:GR:=>7
A sinlaxe da eslrulura condicionaI SI comosla ode ser observada a seguir.
se(<condio ou lista de condies>)ento
<instruo ou bloco de instrues>
seno
<instruo ou bloco de instrues>
Quando a condio avaIiada resuIlar verdadeiro, a inslruo da cIausuIa ento
sera execulada, caso conlrario, quando resuIlar faIso, e a inslruo da cIausuIa
seno que sera execulada.
Com esla eslrulura e ossiveI acrescenlar a soIuo do exemIo anlerior, a emisso
da mensagem AIuno rerovado. quando a media for menor que 6.0 (seis). A
soIuo ara esle robIema, denominado exemIo 5.2, ode ser observada no
Quadro 5.3.
\574A: UKQ +XFGRC: 4F 7CN:A<>G: 6:G F=>A5>5A7 6:@4<6<:@7C )+ 6:GR:=>7
Excmp!n 5.2. CaIcuIa a media de um aIuno e emile mensagem AIuno arovado ou
AIuno rerovado.
01 algoritmo exemplo52
02 variveis
03 nota1, nota2, media: real
04 incio
05 escrever("Digite a primeira nota: ")
06 ler(nota1)
07 escrever("Digite a segunda nota: ")
08 ler(nota2)
09 media (nota1 + nota2) / 2
10 escrever("Mdia do aluno = ", media)
11 se(media>=6)ento
12 escrever("Aluno aprovado!")
13 seno
14 escrever("Aluno reprovado!")
15 fim
Algoritmos e programao I.indd 55 7/8/2013 16:01:07
Process Black
UH
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
As inslrues das Iinhas 13 e 14 foram acrescenladas a soIuo anlerior. Desla forma,
quando a condio (media>=6) for verdadeira, a mensagem Aluno aprovado!
sera exibida, e quando a condio resuIlar faIso, o aIgorilmo emilira a mensagem
Aluno reprovado.
Na sequncia, mais um robIema sera resoIvido ara exemIificar a aIicao da
eslrulura SI comosla e deslacar a necessidade da eslrulura SI encadeada.
Excmp!n 5.3
Dcscrin dn prnb!cma: escreva um aIgorilmo que verifique se um vaIor quaIquer
digilado eIo usuario e osilivo ou negalivo.
B<N5A7 UKJ +CFGF@>:= ST=<6:= R7A7 6:@=>A589: 4: 7CN:A<>G: 4: FXFGRC: UKQ
Entrada Prnccssamcntn 5ada
valor
Imrimir uma
das mensagens:
Negalivo
ou
Iosilivo
\574A: UK0 ):C589: 4: FXFGRC: UKQ
Excmp!n 5.3 - VcriIica sc um va!nr ncgativn nu pnsitivn.
01 algoritmo exemplo53
02 variveis
03 valor: real
04 incio
05 escrever("Informe um valor qualquer: ")
06 ler(valor)
07 se(valor<0)ento
08 escrever("Negativo")
09 seno
10 escrever("Positivo")
11 fim
Anles de iniciar o lesle de mesa, vaIe Iembrar que a escoIha dos dados de lesles e
muilo imorlanle na simuIao. Os dados escoIhidos devem garanlir a execuo
Algoritmos e programao I.indd 56 7/8/2013 16:01:07
Process Black
UW
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
de lodas as inslrues do aIgorilmo, leslando lodas as ossibiIidades de saida.
Nesle exemIo, duas ossibiIidades sero lesladas: um vaIor negalivo e um vaIor
osilivo.
No rimeiro lesle reaIizado, definiu-se como dado de enlrada 80. Assim, o
resuIlado eserado e Negalivo. O Quadro 5.5 aresenla a rimeira elaa do lesle
de mesa, que consisle em monlar o esquema ara regislrar os vaIores assumidos
eIas variaveis duranle a simuIao da execuo do aIgorilmo.
\574A: UKU 3 'F=>F 4F GF=7 4: FXFGRC: UKQ
Excmp!n 5.3 - VcriIica sc um va!nr ncgativn nu pnsitivn.
Entrada Tcstc dc mcsa 5ada
valor 80
A simuIao de execuo e iniciada na Iinha 05 (Quadro 5.4), que exibira uma
mensagem ao usuario soIicilando que eIe digile um vaIor quaIquer. Na sequncia
(Iinha 06 Quadro 5.4), esle vaIor sera Iido e armazenado na variaveI valor,
gerando um regislro na labeIa do lesle de mesa, conforme ode ser observado
no Quadro 5.6.
\574A: UKH 3 'F=>F 4F GF=7 4: FXFGRC: UKQ 6:G V7C:A @FN7><V:
Excmp!n 5.3 - VcriIica sc um va!nr ncgativn nu pnsitivn.
Entrada Tcstc dc mcsa 5ada
valor 80 Negalivo
Na Iinha 07 (Quadro 5.4), a condio (valor<0) e leslada. Como 80 e menor do
que zero, esse lesle resuIla verdadeiro e, consequenlemenle, a inslruo da cIausuIa
ento sera execulada, emilindo a mensagem Negalivo. A saida gerada, orlanlo,
coincide com a resosla eserada.
Ao leslar um vaIor osilivo como 22, or exemIo, a condio da Iinha 07 (Quadro
5.4) no sera salisfeila, resuIlando faIso. Nesle caso, a inslruo da cIausuIa seno
sera execulada, emilindo a mensagem Iosilivo. Nesle caso, o resuIlado oblido
!inha
valor
varivcis
!inha
valor
06 - 80
varivcis
Algoritmos e programao I.indd 57 7/8/2013 16:01:08
Process Black
U_
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
lambem coincide com o resuIlado eserado. Os dados desle lesle odem ser
observados no Quadro 5.7.
\574A: UKW 3 'F=>F 4F GF=7 4: FXFGRC: UKQ 6:G V7C:A R:=<><V:
Excmp!n 5.3 - VcriIica sc um va!nr ncgativn nu pnsitivn.
Entrada Tcstc dc mcsa 5ada
valor 22 Iosilivo
Os lesles de mesa reaIizados demonslram que os resuIlados oblidos alraves da
simuIao de execuo do aIgorilmo, com vaIores negalivos e osilivos, coincidem
com os resuIlados eserados. Mas o que aconleceria se o vaIor digilado eIo usuario
fosse um 0 (zero) Nesle caso, o aIgorilmo emiliria a mensagem Iosilivo, que
no condiz com o resuIlado eserado |a que o zero e neulro. Iara corrigir esle
robIema, sera necessario usar a eslrulura condicionaI SI encadeada, descrila na
rxima seo.
UKQ +=>A5>5A7 6:@4<6<:@7C )+ F@674F747
A aIicao da eslrulura condicionaI SI encadeada, cu|a sinlaxe e aresenlada
a seguir, ode ser observada no Quadro 5.8 que reescreve a soIuo do exemIo
anlerior e nos exemIos aresenlados na sequncia.
se(<condio ou lista de condies>)ento
<instruo ou bloco de instrues>
seno
se(<condio ou lista de condies>)ento
<instruo ou bloco de instrues>
seno
<instruo ou bloco de instrues>
A soIuo do exemIo anlerior, que verifica se um vaIor e osilivo ou negalivo,
foi reescrila no Quadro 5.8, uliIizando a eslrulura SI encadeada (Iinhas 07 a 13).
As modificaes reaIizadas aarecem enlre as Iinhas 10 e 13, onde mais um lesle
foi incIuido ara garanlir que quando o dado de enlrada for 0 (zero), o aIgorilmo
emila uma mensagem Zero e neulro.
!inha
valor
06 22
varivcis
Algoritmos e programao I.indd 58 7/8/2013 16:01:08
Process Black
UL
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: UK_ ):C589: 4: FXFGRC: UKQ
Excmp!n 5.3 - VcriIica sc um va!nr ncgativn nu pnsitivn.
01 algoritmo exemplo53
02 variveis
03 valor: real
04 incio
05 escrever("Informe um valor qualquer: ")
06 ler(valor)
07 se(valor<0)ento
08 escrever("Negativo")
09 seno
10 se(valor>0)ento
11 escrever("Positivo")
12 seno
13 escrever("Zero neutro")
14 fim
Iara leslar lodas as ossibiIidades de saida desla soIuo, o lesle de mesa deve ser
reaIizado considerando lrs vaIores: um osilivo, um negalivo e o zero.
Excmp!n 5.4
Dcscrin dn prnb!cma: escreva um aIgorilmo ara enconlrar o maior enlre dois
vaIores quaisquer digilados eIo usuario.
B<N5A7 UKO +CFGF@>:= ST=<6:= R7A7 6:@=>A589: 4: 7CN:A<>G: 4: FXFGRC: UKQ
Entrada Prnccssamcntn 5ada
valor1
valor2
maior
ou mensagem:
vaIores iguais
O aIgorilmo do Quadro 5.9 foi conslruido a arlir dos dados do esquema da Iigura
5.2. Im seguida, aresenla-se o lesle de mesa reaIizado (Quadros 5.5 e 5.6).
Algoritmos e programao I.indd 59 7/8/2013 16:01:08
Process Black
HP
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: UKL ):C589: 4: FXFGRC: UK0
Excmp!n 5.4 - Encnntra n mainr cntrc dnis va!nrcs quaisqucr.
01 algoritmo exemplo54
02 variveis
03 valor1,valor2:real
04 incio
05 escrever("Informe o primeiro valor: ")
06 ler(valor1)
07 escrever("Informe o segundo valor: ")
08 ler(valor2)
09 se(valor1>valor2)ento
10 escrever("Maior = ", valor1)
11 seno
12 se(valor2>valor1)ento
13 escrever("Maior = ", valor2)
14 seno
15 escrever("Valores iguais!")
16 fim
Nesle exemIo, lrs ossibiIidades devem ser lesladas: valor1 maior, valor2
maior, valor1 e valor2 iguais.
No lesle reaIizado, descrilo a seguir, definiu-se como dados de enlrada 8 e 5.
Assim, o resuIlado eserado e Maior 8. O Quadro 5.10 aresenla a rimeira
elaa do lesle de mesa, que consisle em monlar o esquema ara regislrar os vaIores
assumidos eIas variaveis duranle a simuIao da execuo do aIgorilmo.
\574A: UKJP 3 'F=>F 4F GF=7 4: FXFGRC: UK0 F>7R7 J
Excmp!n 5.4 - Encnntra n mainr cntrc dnis va!nrcs quaisqucr.
Entrada Tcstc dc mcsa 5ada
valor1 8
valor2 5
A simuIao de execuo e iniciada na Iinha 05 (Quadro 5.9), que exibira uma
mensagem ao usuario soIicilando que eIe digile o rimeiro vaIor. Na sequncia
(Iinha 06 Quadro 5.9), esle vaIor sera Iido e armazenado na variaveI valor1,
gerando um regislro na labeIa do lesle de mesa, conforme ode ser observado no
Quadro 5.11.
!inha
valor1 valor2
varivcis
Algoritmos e programao I.indd 60 7/8/2013 16:01:08
Process Black
HJ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: UKJJ 3 'F=>F 4F GF=7 4: FXFGRC: UK0 F>7R7 Ob R7==:J
Excmp!n 5.4 - Encnntra n mainr cntrc dnis va!nrcs quaisqucr.
Entrada Tcstc dc mcsa 5ada
valor1 8
valor2 5
A execuo da Iinha 07 (Quadro 5.9) exibe uma mensagem soIicilando que o
usuario digile o segundo vaIor, que e Iido e armazenado na variaveI valor2
(Iinha 08 Quadro 5.9). O regislro desla execuo aarece na labeIa do lesle de
mesa do Quadro 5.12.
\574A: UKJO 3 'F=>F 4F GF=7 4: FXFGRC: UK0 F>7R7 Ob R7==:O
Excmp!n 5.4 - Encnntra n mainr cntrc dnis va!nrcs quaisqucr.
Entrada Tcstc dc mcsa 5ada
valor1 8 Maior 8
valor2 5
Na Iinha 09 (Quadro 5.9) aconlece a comarao enlre os dois vaIores armazenados
na memria, 8 e 5. A condio leslada verifica se o rimeiro vaIor e maior que o
segundo. Nesle caso, a condio leslada e 8>5, que resuIla em verdadeiro e ermile
a execuo da inslruo da cIausuIa ento. A saida gerada, orlanlo, e Maior
8, que coincide com a resosla eserada.
Excmp!n 5.5
Dcscrin dn prnb!cma: lendo como dados de enlrada a aIlura e o gnero de uma
essoa, escreva um aIgorilmo ara caIcuIar seu eso ideaI, uliIizando as seguinles
frmuIas: ara homens (72,7 x aIlura)58, ara muIheres (62,1 x aIlura)44.7.
!inha
valor1 valor2
06 8
varivcis
!inha
valor1 valor2
06 8
08 5
varivcis
Algoritmos e programao I.indd 61 7/8/2013 16:01:08
Process Black
HO
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: UKJQ ):C589: 4: FXFGRC: UKU
Excmp!n 5.5 - Ca!cu!a n pcsn idca! dc uma pcssna.
01 algoritmo exemplo55
02 variveis
03 genero: caractere
04 altura, peso_ideal: real
05 incio
06 escrever("Qual o seu gnero(M ou F)? ")
07 ler(genero)
08 escrever("Qual a sua altura? ")
09 ler(altura)
10 se(genero="M")ento
11 peso_ideal (72.7*altura)-58
12 seno
13 se(genero="F")ento
14 peso_ideal (62.1*altura)-44.7
15 seno
16 incio
17 peso_ideal 0
18 escrever("Gnero invlido.")
19 fim
20 escrever("Peso ideal = ", peso_ideal)
21 fim
A soIuo desle exemIo sera usada ara reIembrar aIguns fundamenlos |a
esludados: (a) a variaveI genero foi decIara do lio caraclere (Iinha 03), or isso,
ao comara-Ia com M ou com I, esles devem eslar enlre asas, como ode ser
observado nas Iinhas 10 e 13, (b) a cIausuIa seno da Iinha 15 ossui um bIoco de
inslrues a ser execulado, deIimilado eIas direlivas de inicio (Iinha 16) e fim (Iinha
19), (c) o lexlo do aIgorilmo esla indenlado, faciIilando a sua Ieilura e comreenso
a inslruo rimiliva de saida da Iinha 20 esla aIinhada as inslrues anleriores a
eslrulura SI, ou se|a, eIa no faz arle desla eslrulura e sera execulada semre.
Excmp!n 5.6
Dcscrin dn prnb!cma: Ieia um vaIor inleiro e verifique se eIe e ar ou imar.
Algoritmos e programao I.indd 62 7/8/2013 16:01:09
Process Black
HQ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: UKJ0 ):C589: 4: FXFGRC: UKH
Excmp!n 5.6 - VcriIica sc um va!nr par nu mpar.
01 algoritmo exemplo56
02 variveis
03 valor: inteiro
04 incio
05 escrever("Digite um valor inteiro: ")
06 ler(valor)
07 se(valor mod 2 = 0)ento
08 escrever(valor, " par.")
09 seno
10 escrever(valor, " mpar.")
11 fim
Nesle caso, a variaveI valor deve ser do lio inleiro ara ser uliIizada com o
oerador mod, que relorna o reslo de uma diviso.
Excmp!n 5.7
Dcscrin dn prnb!cma: um banco concedera um credilo eseciaI aos seus cIienles,
variaveI conforme o saIdo medio no uIlimo ano. Conslrua um aIgorilmo que Ieia
o saIdo medio de um cIienle, caIcuIe e escreva o vaIor do credilo de acordo com
a labeIa a seguir.
5a!dn mdin Crditn
Ale R 500,00 sem credilo
Inlre R 501,00 e 1.000,00 20 sobre o vaIor do saIdo medio
Inlre R 1.000,00 e 3.000,00 30 sobre o vaIor do saIdo medio
Acima de R 3.000,00 40 sobre o vaIor do saIdo medio
Algoritmos e programao I.indd 63 7/8/2013 16:01:09
Process Black
H0
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: UKJU ):C589: 4: FXFGRC: UKW
Excmp!n 5.7 - Ca!cu!a n va!nr dc crditn dispnnvc! para um c!icntc.
01 algoritmo exemplo57
02 variveis
03 saldo_medio, credito: real
04 incio
05 escrever("Digite o saldo mdio do cliente no ltimo ano: ")
06 ler(saldo_medio)
07 se(saldo_medio<=500)ento
08 credito 0
09 seno
10 se(saldo_medio>500)e(saldo_medio<=1000)ento
11 credito saldo_medio*0.2
12 seno
13 se(saldo_medio>1000)e(saldo_medio<=3000)ento
14 credito saldo_medio*0.3
15 seno
16 credito saldo_medio*0.4
17 escrever ("O cliente tem R$", credito," de crdito.")
18 fim
Nesle exemIo, as eslruluras SI das Iinhas 10 e 13 ossuem duas condies com o
oerador Igico I enlre eIas. Desla forma, ara que a inslruo da cIausuIa ento
se|a execulada, as duas condies devem resuIlar verdadeiro.
Excmp!n 5.8
Dcscrin dn prnb!cma: faa um aIgorilmo que execule as oeraes basicas de uma
caIcuIadora. Leia dois vaIores numericos e um simboIo, caso o simboIo se|a um dos
reIacionados a seguir efelue a oerao corresondenle com os vaIores digilados
eIo usuario, caso conlrario, digile a mensagem Oerador invaIido!. SimboIos:
+ soma, - sublrao, muIliIicao, / diviso. Aleno ara a diviso or 0!
Algoritmos e programao I.indd 64 7/8/2013 16:01:09
Process Black
HU
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: UKJH ):C589: 4: FXFGRC: UK_
Excmp!n 5.8 - Exccuta as npcracs bsicas dc uma ca!cu!adnra.
01 algoritmo exemplo58
02 variveis
03 valor1, valor2: real
04 op: caractere
05 incio
06 escrever("Valor 1: ")
07 ler(valor1)
08 escrever("Operador (+ - * /): ")
09 ler(op)
10 escrever("Valor 2: ")
11 ler(valor2)
12 se(op="+")ento
13 escrever("Resultado = ", valor1+valor2)
14 seno
15 se(op="-")ento
16 escrever("Resultado = ", valor1-valor2)
17 seno
18 se(op="*")ento
19 escrever("Resultado = ", valor1*valor2)
20 seno
21 se(op="/")ento
22 se(valor2<>0)ento
23 escrever("Resultado = ", valor1/valor2)
24 seno
25 escrever("No possvel dividir por 0.")
26 seno
27 escrever("Operador invlido!")
28 fim
A soIuo aresenlada nesle exemIo ossui varias eslruluras SI encadeadas, onde
a variaveI op foi comarada a qualro oeradores diferenles (Iinhas 12, 15, 18 e 21).
Nesla siluao, quando a variaveI e do lio inleiro Igico, ou caraclere e recisa ser
comarada com varios vaIores, lambem e ossiveI resoIver o robIema uliIizando
a eslrulura condicionaI ISCOLHA, lema do rximo cailuIo.
UK0 B:AG7>789: 47 =:C589: 4: 7CN:A<>G:
Como ode ser observado nos exemIos aresenlados ale agora, as soIues lm
seu lexlo indenlado (indenlar significa inserir delerminado esao enlre a margem
da agina e o inicio do lexlo de um aragrafo). Recomenda-se o uso de indenlao
no lexlo do aIgorilmo ara faciIilar a sua Ieilura. O Quadro 5.17 aresenla o mesmo
lrecho de um aIgorilmo sem e com indenlao, iIuslrando o quanlo a segunda
oo deixa o aIgorilmo mais IegiveI.
Algoritmos e programao I.indd 65 7/8/2013 16:01:09
Process Black
HH
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\574A: UKJW B:AG7>789: 4: >FX>: 4: 7CN:A<>G:
5cm indcntan Cnm indcntan
se(valor1>valor2)ento
escrever(valor1)
seno
se(valor2>valor1)ento
escrever(valor2)
seno
escrever("Valores iguais!")
se(valor1>valor2)ento
escrever(valor1)
seno
se(valor2>valor1)ento
escrever(valor2)
seno
escrever("Valores iguais!")
%FeFAf@6<7=
ASCINCIO, A. I. G., CAMIOS, I. A. V.. PC*-(.&*3$' -( "#$5#(.(?N$ -& O$.AC3(-$#&':
aIgorilmos, IascaI, C/C++ (adro ANSI) e }ava. 3.ed. So IauIo: Iearson Iducalion do
rasiI, 2012.
IRG, A. C., IIGUIIR, }. I.. +B5,1( -& "#$5#(.(?N$. 2.ed. Canoas: Id. ULRA, 2001.
IORILLONI, A. L. V., IIRSIACHIR, H. I.. +B5,1( -& "#$5#(.(?N$: a conslruo de
aIgorilmos e eslruluras de dados. 3.ed. So IauIo: Iearson/Irenlice HaII, 2005.
GOODRICH, M. T., TAMASSIA, R.. "#$Q&3$ -& I05$#,3.$'. Iorlo AIegre: ookman, 2004.
MIZRAHI, V. V.. R#&,*(.&*3$ &. +,*5C(5&. O. 2.ed. So IauIo: Iearson/Irenlice HaII, 2008.
IUGA, S., RISSITTI, G.. +B5,1( -& "#$5#(.(?N$ & S'3#C3C#(' -& M(-$'. So IauIo: Iearson/
Irenlice HaII, 2003.
!><V<474F=
Partc I - Qucstcs nb|ctivas c tcstcs dc mcsa
1) As execular o lesle a seguir:
x 0
se (a <= b) e (c > b) ento
x 5
seno
x 10
x eslara armazenando 10 se:
(a) a b c,
(b) a > b c,
(c) a b c,
(d) a b c,
(e) Nenhuma das aIlernalivas anleriores.
Algoritmos e programao I.indd 66 7/8/2013 16:01:09
Process Black
HW
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
2) As execular o lesle a seguir:
w 10
se (g <= m) ou (h < m) ento
w w * 5
seno
w w / 5
eslara armazenando 2 se:
(a) h m g,
(b) h m g,
(c) g m h,
(d) h m g,
(e) Nenhuma das aIlernalivas anleriores.
3) Considerando o aIgorilmo aresenlado a seguir...
aIgorilmo teste_de_mesa
variveis
x, y, z: lgico
incio
ler(x,y,z)
se(x=V)ento
se(y=V)ento
incio
comando 1
se(z=F)ento
comando 2
seno
comando 3
comando 4
" m
seno
comando 5
comando 6
fim
Algoritmos e programao I.indd 67 7/8/2013 16:01:10
Process Black
H_
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
(a) Se x V, y I e z V, quais os comandos sero execulados
(b) Se x V, y V e z V, quais os comandos sero execulados
(c) Quais os vaIores de x, y e z ara que somenle o comando 5 se|a
execulado
(d) Quais os vaIores de x, y e z ara que somenle o comando 6 se|a
execulado
(e) Nenhuma das aIlernalivas anleriores.
4) Indique a saida dos lrechos de aIgorilmo aresenlados a seguir,
considerando
A 20, 5, C 5 e D 5.
(a)
se NO(D > 5) ento
X(A+B)*D
seno
X(A-B)/C
escreva X
Saida:
(b)
se(A>2)E(B<7)ento
X(A+2)*(B-2)
seno
X(A+B)/D*(C+D)
escreva X
Saida:
(c)
se(A=2)OU(B>7)ento
X(A+2)*(B-2)
seno
X(A+B)/D*(C+D)
escreva X
Saida:
(d)
se NO(A>3)E NO(B<7)ento
XA+B
seno
XA/B
escreva X
Saida:
Algoritmos e programao I.indd 68 7/8/2013 16:01:10
Process Black
HL
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
5) O aIgorilmo aresenlado a seguir caIcuIa a quanlidade de Ialas de linla
necessarias e o cuslo ara inlar lanques ciIindricos de combusliveI. Os dados
de enlrada so a aIlura (h) e o raio (r) do ciIindro. A Iala de linla cusla R 24,00,
cada Iala conlem 5 Iilros e cada Iilro inla 3 melros quadrados.
algoritmo exercicio5
variveis
h, r, c, qtde, area, litro: real
incio
ler (h, r)
area (3.14*r**2)+(2*3.14*r*h)
litro area/3
qtde litro/5
c qtde*24
escrever ("Custo = R$ ", c)
escrever ("Quantidade de latas de tinta = ", qtde)
" m
QuaI a saida do aIgorilmo, considerando h 6 e r 2 Considere duas casas
decimais ara fazer os caIcuIos.
Partc II - Rcsn!un dc prnb!cmas
Iara cada um dos exercicios a seguir, monle o esquema com os eIemenlos basicos
(enlrada / rocessamenlo / saida), conslrua o aIgorilmo com a soIuo ara o
robIema e, or fim, reaIize o lesle de mesa ara assegurar que a resosla esle|a
correla.
1) Conslrua um aIgorilmo que veri!que se o nome e a senha informados eIo
usuario so vaIidos considerando a labeIa a seguir. Imila uma das mensagens
Acesso Iiberado ou Acesso negado.
Usurin 5cnha
anaIuisa 990123
Iuciano 714460
|osue 134895
Algoritmos e programao I.indd 69 7/8/2013 16:01:10
Process Black
WP
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
2) A empresa 1001 Utilidades precisa de um algoritmo para calcular o salrio de
seus funcionrios. O salrio bruto de cada funcionrio calculado com base
no n de horas por ele trabalhadas no ms e o valor que ele recebe por hora.
O salrio lquido deve considerar a comisso de 2% sobre o total das vendas
realizadas pelo funcionrio no ms, o bnus por tempo de servio (conforme a
tabela abaixo) e, nalmente, o desconto de INSS (8% sobre o total a receber).
Para a empresa, importante ter os seguintes valores disponveis em R$:
salrio xo, total de adicionais (comisso + bnus), desconto INSS e salrio
lquido.
Tcmpn dc scrvin Bnus
Inlre 2 e 4 anos 2
Inlre 5 e 10 anos 5
Maior que 10 anos 10
3) Iaa um aIgorilmo que, lendo como dados de enlrada um onlo quaIquer,
delermine e escreva o seu quadranle.
2 1
3 4
ibIiolecas so arquivos conlendo varias funes que odem ser incororadas aos
rogramas escrilos em C. A direliva include faz com que as funes inseridas na
bibIioleca esecificada ossam ser uliIizadas no rograma. As bibIiolecas stdio.h
e conio.h ermilem a uliIizao de diversos comandos de enlrada e saida e de
funes de leIa, reseclivamenle. So exemIos de funes de leIa, os comandos
usados ara Iimar a leIa, osicionar o cursor em uma delerminada osio na
leIa, lrocar a cor da fonle e/ou do fundo.
Os arnleses ao Iado da aIavra main indicam que eIa e uma funo, o lio void
indica que eIa no relornara nenhum vaIor, enquanlo as chaves deIimilam o seu
inicio e o seu fim. O bIoco de comandos que esliver enlre as chaves e execulado
sequenciaImenle quando a funo for chamada.
I imorlanle saIienlar que a Iinguagem C e 1('& '&*',3,9&, ou se|a, e sensiveI a Ielras
maiuscuIas e minuscuIas (or exemIo, a e diferenle de A) e lodos os rogramas
devem, obrigaloriamenle, ser escrilos em Ielras minuscuIas. Oulro delaIhe
imorlanle e que cada comando e finaIizado com um onlo-e-virguIa.
As sees a seguir so dedicadas a aresenlao de conceilos e definies
imorlanles e necessarias ara o inicio da rogramao em Iinguagem C.
JPKJ &4F@><e<674:AF=
Im Iinguagem C, os nomes uliIizados ara referenciar variaveis, conslanles e
funes definidas eIo usuario so chamados de idenlificadores.
A criao de um idenlificador deve seguir as seguinles regras: odem ser formados
or Ielras, numeros e subIinhado, devem iniciar com uma Ielra, Ielras minuscuIas
e maiuscuIas so consideradas caracleres dislinlos, no odem ser aIavras
reservadas, odem conler quaIquer lamanho, orem aenas os 32 rimeiros
caracleres so significalivos.
AIem disso, e imorlanle criar idenlificadores considerando a sua aIicao
ara faciIilar a Ieilura do cdigo-fonle e, consequenlemenle, o lrabaIho do
rogramador. A quanlidade de horas lrabaIhadas or uma essoa duranle uma
Algoritmos e programao I.indd 122 7/8/2013 16:01:20
Process Black
JOQ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
semana de lrabaIho ode ser armazenada em uma variaveI chamada qtde_horas,
enquanlo uma funo que ira verificar se uma dala e vaIida ou no ode ler como
indenlificador valida_data.
JPKO '<R:= 4F 474:=
Os lios de dados mais uliIizados em Iinguagem C so: int (numero inleiro),
float (numero reaI) e char (caraclere). A Iinguagem C no ossui lio de dado
Igico (que ode assumir verdadeiro ou faIso), ois considera quaIquer vaIor
diferenle de 0 (zero) como verdadeiro, e lambem no ossui um lio eseciaI ara
armazenar cadeias de caracleres (string), eslas so armazenadas em um velor de
caracleres. A TabeIa 10.1 aresenla a Iisla de lios basicos uliIizados em C.
'7SFC7 JPKJ '<R:= 4F 474:= G7<= 5><C<c74:= FG "<@N57NFG M
Tio Iaixa de vaIores Tamanho (aroximado)
char -127 a 127 8 bils
int -32.767 a 32.767 16 bils
float 3.4 I-38 a 3.4 I+38 32 bils
double 1.7 I-308 a 1.7 I+308 64 bils
void sem vaIor 0
A faixa de vaIores aresenlada esla de acordo com o adro ANSI e e considerada
a faixa minima. Deendendo do rocessador e do comiIador C que esliver sendo
uliIizado, o lamanho e a faixa de vaIores odem variar.
JPKQ (:4FC74:AF=
I ossiveI forar que o resuIlado de uma exresso se|a de um lio esecifico
usando o conceilo de modeIador. A forma geraI de um modeIador e
(tipo)expresso
onde lio e um dos lios adro da Iinguagem C.
Sendo r uma variaveI decIarada do lio float, as exresses a seguir resuIlam
em vaIores diferenles.
r=9/2 // essa expresso resulta 4
r=(float)9/2 // com o uso do modelador, resulta 4.5
Algoritmos e programao I.indd 123 7/8/2013 16:01:20
Process Black
JO0
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
JPK0 ;F6C7A789:b <@<6<7C<c789: F F=6:R: 4F V7A<TVF<=
VariaveI e uma osio de memria, idenlificada or um nome (idenlificador),
usada ara armazenar um dado de um delerminado lio or vez. As variaveis
so decIaradas as a esecificao de seus lios, como ode ser observado nos
exemIos a seguir.
float total
int idade, cont
char resposta
A rimeira Iinha da decIarao de variaveis do exemIo cria uma variaveI chamada
total, que ode armazenar vaIores do lio reaI, na segunda Iinha, so criadas
duas variaveis ara armazenar vaIores do lio inleiro, idade e cont, or uIlimo,
resposta e criada ara armazenar caracleres (um or vez). Cada variaveI
armazenara um unico vaIor or vez.
As variaveis odem ser iniciaIizadas no momenlo da sua decIarao, coIocando o
sinaI de alribuio seguido da informao dese|ada, como no exemIo aresenlado
a seguir, em que cont e iniciaIizada com 0 e resposta com S. I imorlanle
deslacar que os dados alribuidos a variaveis do lio caraclere so envoIvidos or
aslrofes.
int cont=0
char resposta=S
O IocaI em que as variaveis so decIaradas definem o seu escoo, que ode ser
gIobaI ou IocaI. As variaveis de escoo gIobaI, denominadas variaveis gIobais, so
decIaradas fora de quaIquer funo, iniciaIizadas aulomalicamenle com 0 (zero)
e odem ser usadas em quaIquer onlo do rograma. As variaveis Iocais so
decIaradas denlro de uma funo, no so iniciaIizadas aulomalicamenle e vaIem
enquanlo esla funo esliver aliva. As variaveis de escoo IocaI lm referncia
em reIao as de escoo gIobaI.
JPKU ;Fe<@<89: 4F 6:@=>7@>F=
Uma conslanle ira reresenlar um vaIor fixo, reviamenle definido eIo
rogramador e inaIleraveI no rograma. Uma das formas de definir conslanles
em C e alraves da direliva define, seguida do nome da conslanle e do vaIor que
esla reresenlara no rograma. No exemIo a seguir, aresenla-se a decIarao
da conslanle pi cu|o vaIor e definido como 3.141516. Observe que na definio de
uma conslanle no se usa o onlo-e-virguIa no finaI.
define pi 3.141516
Desla forma, o rogramador usara i no rograma ao inves de usar 3.141516.
Algoritmos e programao I.indd 124 7/8/2013 16:01:20
Process Black
JOU
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
JPKH Md4<N:= 4F e:AG7>:
Os cdigos de formalo, aresenlados na TabeIa 10.2, so conslanles que definem
o formalo dos dados a serem Iidos e exibidos na leIa.
'7SFC7 JPKO Md4<N:= 4F e:AG7>789:
Cdigo Iormalo
c Caraclere
i Inleiro
I Inleiro Iongo
d Inleiro em formalo decimaI
Id DecimaI Iongo
u DecimaI sem sinaI
f Ionlo fIuluanle em formalo decimaI
If Ionlo fIuluanle Iongo (-$CW0&)
s Cadeia de caracleres ('3#,*5)
e VaIor em nolao cienlifica
o VaIor em nolao oclaIdecimaI
x VaIor em nolao hexadecimaI
Ionleiro
SimboIo
IIes so usados em funes de enlrada e de saida de dados (descrilas na seo 10.11).
A funo de enlrada scanf, or exemIo, ossui dois armelros: o cdigo de
formalo e uma variaveI. Nesle caso, o vaIor digilado eIo usuario sera armazenado
na variaveI denominada peso, decIarada e formalada como float.
scanf(%f,peso)
A funo printf, exemIificada a seguir, lambem conlem dois armelros: o
rimeiro e uma conslanle, aresenlada enlre asas, o segundo e uma variaveI,
denominada dias. O vaIor armazenado na variaveI dias sera exibido na osio
em que aarece o cdigo de formalo usado na mensagem, nesle caso o %i.
printf(Sua idade em dias e: %i, dias)
Algoritmos e programao I.indd 125 7/8/2013 16:01:20
Process Black
JOH
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Os cdigos de formalo odem ler modificadores que esecifiquem o lamanho do
camo, o numero de casas decimais e um indicador de |uslificao a esquerda.
EspcciIicadnr dc !argura mnima dn campn: um vaIor enlre o simboIo e o
caraclere de formalo indica a Iargura minima do camo, reenchendo a saida com
brancos (adro) ou com zeros (coIoca-se um 0 anles do esecificador de lamanho).
Quando um vaIor e maior que o minimo definido, esle sera imresso or comIelo.
IxemIos: %05d reenchera um numero com menos de cinco digilos com zeros a
esquerda, de maneira que seu lamanho lolaI se|a cinco.
EspcciIicadnr dn nmcrn dc casas dccimais: ara definir o numero de casas
decimais a serem exibidas em um onlo fIuluanle, usa-se um onlo enlre o
esecificador de lamanho e o numero de casas decimais dese|adas. Ior exemIo:
%6.2f exibira um vaIor com, no minimo, seis digilos de comrimenlo e duas
casas decimais.
EspcciIicadnr para |ustiIicar inInrman a csqucrda: or definio, loda saida e
|uslificada a direila. O uso do sinaI deois do faz com que a saida se|a |uslificada
a esquerda. IxemIo: %-6.2f |uslificara a esquerda um vaIor de onlo fIuluanle,
com no minimo seis digilos e duas casas decimais.
A TabeIa 10.3 aresenla exemIos da uliIizao dos esecificadores de lios. O
caraclere eseciaI n, usado nos exemIos, e exIicado na rxima seo.
'7SFC7 JPKQ +XFGRC: 47 5><C<c789: 4:= F=RF6<e<674:AF= 4F ><R:=
Cdign Rcsu!tadn
float valor=136.472
printf(n %f,valor)
printf(n %8.1f,valor)
printf(n %08.1f,valor)
printf(n %-8.1f,valor)
136.472000
136.5
000136.5
136.5
int valor=790
printf(n %i,valor)
printf(n %5i,valor)
printf(n %05i,valor)
printf(n %-5i,valor)
790
790
00790
790
printf(n O valor total %2d.,350)
printf(n O valor total %4d.,350)
printf(n O valor total %5d.,350)
O valor total 350.
O valor total 350.
O valor total 350.
Algoritmos e programao I.indd 126 7/8/2013 16:01:20
Process Black
JOW
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
JPKW M7A76>FAF= F=RF6<7<=
Os caracleres eseciais so usados ara reresenlar aIguma formalao em
arlicuIar e caracleres eseciais que seriam imossiveis de usar direlamenle no
cdigo-fonle. Isses caracleres devem ser recedidos da barra inverlida, como
o n que reresenla nova Iinha. A TabeIa 10.4 aresenla os caracleres e seus
significados.
'7SFC7 JPK0 Md4<N:= 4F 67A76>FAF= 4F F=67RF
Cdign 5igniIicadn Cdign 5igniIicadn
a aIerla (bee) v lab verlicaI
b relrocesso (backsace) exibe barra inverlida
f avano de agina exibe asa unica
n nova Iinha exibe asas duIas
r relorna ao inicio da Iinha ? exibe onlo de inlerrogao
t lab horizonlaI 0 nuIo
JPK_ M:G7@4: 4F 7>A<S5<89:
O comando de alribuio, reresenlado or (sinaI de iguaIdade), e uliIizado ara
alribuir vaIores a variaveis. I imorlanle Iembrar que os vaIores alribuidos a uma
variaveI devem ser comaliveis com o seu lio. AIguns exemIos de alribuio
odem ser observados a seguir.
total=345.60
idade=20
resp=s
cont=cont+1
Os caracleres so reresenlados enlre aslrofos ( ) e as cadeias de caracleres
enlre asas ( ).
I ossiveI alribuir um vaIor a duas ou mais variaveis alraves de um unico comando,
como no exemIo a seguir, em que as variaveis x e y recebem 10.
x=y=10
Caso se|a necessario alribuir uma cadeia de caracleres a uma variaveI, uliIiza-se
a funo strcpy.
strcpy(nome,Ana Paula Rocha)
Algoritmos e programao I.indd 127 7/8/2013 16:01:21
Process Black
JO_
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Iara uliIizar strcpy (abreviao de '3#,*5 1$AZ) e reciso inserir no rograma,
alraves da direliva include, a bibIioleca string.h.
JPKL $RFA74:AF= F e5@8YF=
A Iinguagem C ossui oeradores e funes redefinidas deslinadas a caIcuIos
malemalicos e a maniuIao de caracleres. AIguns deIes so aresenlados nas
TabeIas 10.5 e 10.6. Iara uliIizar as funes malemalicas, a bibIioleca malh.h deve
ser incIuida no rograma alraves da direliva incIude. Os oeradores Igicos so
aresenlados na TabeIa 10.7.
'7SFC7 JPKU $RFA74:AF= 7A<>Gg><6:=
Opcradnrcs Matcmticns
Opcradnr Excmp!n Cnmcntrin
+ a + b Soma o conleudo de a e de b.
- a - b Sublrai o conleudo de b do conleudo de a.
* a * b MuIliIica o conleudo de a eIo conleudo de b.
/ a / b Divide o conleudo de a eIo conleudo de b.
% a % b Oblem o reslo da diviso de a or b.
O oerador s ode ser uliIizado com oerandos do lio inleiro.
'7SFC7 JPKH $RFA74:AF= AFC76<:@7<=
Opcradnrcs Rc!acinnais
Opcradnr Excmp!n Cnmcntrin
== a == b Tesla se o conleudo de a e iguaI ao conleudo de b.
!= a != b Tesla se o conleudo de a e diferenle do conleudo de b.
<= a <= b Tesla se o conleudo de a e menor ou iguaI que o conleudo de b.
>= a >= b Tesla se o conleudo de a e maior ou iguaI que o conleudo de b.
< a < b Tesla se o conleudo de a e menor que o conleudo de b.
> a > b Tesla se o conleudo de a e maior que o conleudo de b.
Algoritmos e programao I.indd 128 7/8/2013 16:01:21
Process Black
JOL
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
'7SFC7 JPKW $RFA74:AF= CdN<6:=
Opcradnr 5mbn!n Dcscrin
e Con|uno
ou Dis|uno
no ! Negao
Im C, lambem ode-se uliIizar oeradores reduzidos, exemIificados na TabeIa 10.8.
'7SFC7 JPK_ $RFA74:AF= AF45c<4:=
Exprcssn Equiva!cntc cnm npcradnrcs rcduzidns
total=total+valor total+=valor
num=num*5 num*=5
d=d-valor d-=valor
x=x/5 x/=5
AIem dos oeradores aresenlados anleriormenle, a Iinguagem C disonibiIiza
oeradores de re e s incremenlo e decremenlo, descrilos na TabeIa 10.9. O
oerador ++ incremenla 1 ao vaIor do seu oerando, enquanlo -- decremenla 1.
Isles oeradores odem ser usados anles (re-fixados) ou deois (s-fixados) do
nome da variaveI. Im ambos os casos a variaveI e incremenlada ou decremenlada.
Inlrelanlo, ++n incremenla o vaIor da variaveI n anles que n se|a usada e n++
usa o vaIor de n e deois o incremenla.
'7SFC7 JPKL $RFA74:AF= RAg F Rd=he<X74:=
Opcradnr Dcscrin Pr-Iixadn Ps-Iixadn
++ Incrementa ++n n++
-- Decrementa --n n--
Algoritmos e programao I.indd 129 7/8/2013 16:01:21
Process Black
JQP
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
Resumindo:
++i incremenla o vaIor de i em 1 e deois o uliIiza,
i++ uliIiza o vaIor de i e deois incremenla-o em 1.
Logo, concIui-se que:
z=a a=a+1 e equivaIenle a z=a++
z=a a=a-1 e equivaIenle a z=a--
a=a+1 z=a e equivaIenle a z=++a
a=a-1 z=a e equivaIenle a z=--a
JPKJP M:GF@>TA<:=
Os comenlarios so lexlos que odem ser inseridos no rograma com o ob|elivo de
documenla-Io e no so anaIisados eIo comiIador. Os comenlarios de uma Iinha
so recedidos do simboIo //, enquanlo o comenlario de varias Iinhas e envoIvido
or /* e */, conforme ode ser observado nos exemIos a seguir.
// Este um comentrio de uma linha.
/* Este um comentrio
de mais de uma linha. */
JPKJJ B5@8YF= 4F F@>A747 F =7[47
As funes de enlrada de dados so uliIizadas ara receber dados digilados eIo
usuario. Os dados recebidos so armazenados em variaveis |a decIaradas no inicio
do rograma. As funes de enlrada mais uliIizados em C so scanf, fgets
e getche.
A funo scanf e uliIizada ara Ier dados dos lios numerico e caraclere, enquanlo
a funo fgets e uliIizada ara Ier uma cadeia de caracleres e a funo getche
ode ser uliIizada ara Ier um caraclere or vez.
O lrecho de cdigo a seguir aresenla um exemIo da uliIizao das funes scanf
e getche. Os dois vaIores do lio float so Iidos com a funo scanf (Iinhas 2
e 6) e o dado do lio caraclere e Iido com getche (Iinha 4).
1 printf(Digite o primeiro valor: )
2 scanf(%f,valor1)
3 printf(Digite o operador: )
4 operador = getche()
5 printf(Digite o segundo valor: )
6 scanf(%f,valor2)
Algoritmos e programao I.indd 130 7/8/2013 16:01:21
Process Black
JQJ
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
A sinlaxe das duas funes e diferenle. A funo scanf lem dois armelros: o
rimeiro indica o lio do dado a ser Iido (TabeIa 10.2 cdigos de formalao),
esecificado or uma Ielra deois do simboIo % enlre as asas, e o nome da
variaveI, anlecedido do simboIo (sem esao) que referencia um endereo de
memria. A funo getche I um caraclere ressionado no lecIado eIo usuario
e o escreve na leIa. Na Iinha 4, a variaveI oerador recebe o vaIor Iido alraves da
funo getche.
Um exemIo da uliIizao da funo fgets ode ser observado nas Iinhas de
cdigo aresenladas a seguir. A funo fgels ossui lrs armelros o nome
da variaveI, o lamanho maximo da variaveI e a enlrada de dados adro ('3-,*
T '3(*-(#- ,*AC3) e anles de uliIiza-Ia e reciso Iiberar o WC%%&# do disosilivo de
enlrada de dados, o que e feilo alraves da funo fflush.
1 printf(Nome do aluno...: )
2 fflush(stdin)
3 fgets(nome,60,stdin)
A funo de saida e uliIizada ara aresenlar dados na leIa, se|a uma mensagem, o
resuIlado de uma exresso ou o conleudo armazenado em uma variaveI. A funo
de saida mais uliIizada em C e o printf, que ode ser observado nos dois lrechos
de cdigos aresenlados anleriormenle e na Iinha de cdigo a seguir.
printf(Sua idade em dias e: %i, dias)
Nesse exemIo, o comando printf lem dois armelros: a mensagem e a variaveI.
O vaIor armazenado na variaveI dias sera aresenlado na leIa no Iugar em que
esla o %i na mensagem (o %i e a formalao do dado a ser exibido, que nesle caso
e um inleiro).
JPKJO +=>A5>5A7= 4F 6:@>A:CF 6:@4<6<:@7C
A seguir, so aresenlados dois exemIos que uliIizam eslruluras de conlroIe
condicionaI - o exemIo 10.1 exemIifica a aIicao da eslrulura SI (em C, if) e
o exemIo 10.2 da eslrulura ISCOLHA (em C, switch). Na coIuna da esquerda
dos Quadros 10.1 e 10.2, aarece a soIuo em orlugus eslrulurado, enquanlo a
coIuna da direila aresenla a mesma soIuo em Iinguagem C.
Algoritmos e programao I.indd 131 7/8/2013 16:01:21
Process Black
JQO
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
\
5
7
4
A
:
J
P
K
J
+
X
F
G
R
C
:
4
7
F
=
>
A
5
>
5
A
7
4
F
6
:
@
>
A
:
C
F
6
:
@
4
<
6
<
:
@
7
C
)
+
E
x
c
m
p
!
n
1
0
.
1
-
L
c
r
u
m
v
a
!
n
r
d
n
t
i
p
n
i
n
t
c
i
r
n
c
v
c
r
i
I
i
c
a
r
s
c
c
!
c
p
a
r
n
u
m
p
a
r
.
P
n
r
t
u
g
u
s
c
s
t
r
u
t
u
r
a
d
n
5
E
L
i
n
g
u
a
g
c
m
C
-
i
I
a
l
g
o
r
i
t
m
o
e
x
e
m
p
l
o
1
0
1
v
a
r
i
v
e
i
s
v
a
l
o
r
:
i
n
t
e
i
r
o
i
n
c
i
o
e
s
c
r
e
v
e
r
(
"
D
i
g
i
t
e
u
m
v
a
l
o
r
:
"
)
l
e
r
(
v
a
l
o
r
)
s
e
(
v
a
l
o
r
m
o
d
2
=
0
)
e
n
t
o
e
s
c
r
e
v
e
r
(
v
a
l
o
r
,
"
p
a
r
.
"
)
s
e
n
o
e
s
c
r
e
v
e
r
(
v
a
l
o
r
,
"
m
p
a
r
.
"
)
f
i
m
i
n
c
l
u
d
e
<
s
t
d
i
o
.
h
>
/
/
b
i
b
l
i
o
t
e
c
a
s
i
n
c
l
u
d
e
<
c
o
n
i
o
.
h
>
v
o
i
d
m
a
i
n
(
)
i
n
t
v
a
l
o
r
c
l
r
s
c
r
(
)
/
/
l
i
m
p
a
a
t
e
l
a
g
o
t
o
x
y
(
1
0
,
1
0
)
/
/
p
o
s
i
c
i
o
n
a
o
c
u
r
s
o
r
p
r
i
n
t
f
(
"
D
i
g
i
t
e
u
m
v
a
l
o
r
:
"
)
s
c
a
n
f
(
"
%
i
"
,
v
a
l
o
r
)
g
o
t
o
x
y
(
1
0
,
1
4
)
i
f
(
v
a
l
o
r
%
2
=
=
0
)
p
r
i
n
t
f
(
"
%
i
p
a
r
.
"
,
v
a
l
o
r
)
e
l
s
e
p
r
i
n
t
f
(
"
%
i
m
p
a
r
.
"
,
v
a
l
o
r
)
g
e
t
c
h
(
)
/
/
p
a
u
s
a
media = soma / 10
gotoxy(10,14)
printf("Media = %.2f", media)
getch() //pausa
%FeFAf@6<7=
ASCINCIO, A. I. G., CAMIOS, I. A. V.. PC*-(.&*3$' -( "#$5#(.(?N$ -& O$.AC3(-$#&':
aIgorilmos, IascaI, C/C++ (adro ANSI) e }ava. 3.ed. So IauIo: Iearson Iducalion do
rasiI, 2012.
IRG, A. C., IIGUIIR, }. I.. +B5,1( -& "#$5#(.(?N$. 2.ed. Canoas: Id. ULRA, 2001.
IORILLONI, A. L. V., IIRSIACHIR, H. I.. +B5,1( -& "#$5#(.(?N$: a conslruo de
aIgorilmos e eslruluras de dados. 3.ed. So IauIo: Iearson/Irenlice HaII, 2005.
GOODRICH, M. T., TAMASSIA, R.. "#$Q&3$ -& I05$#,3.$'. Iorlo AIegre: ookman, 2004.
MATTOS, Ialricia NoII de. +,*5C(5&. -& "#$5#(.(?N$ 44 (Caderno Universilario 027). 2.ed.
Canoas: Id. ULRA, 2001.
MIZRAHI, V. V.. R#&,*(.&*3$ &. +,*5C(5&. O. 2.ed. So IauIo: Iearson/Irenlice HaII, 2008.
IUGA, S., RISSITTI, G.. +B5,1( -& "#$5#(.(?N$ & S'3#C3C#(' -& M(-$'. So IauIo: Iearson/
Irenlice HaII, 2003.
SCHILDT, Herberl. O O$.A0&3$ & R$3(0. 3. ed. So IauIo: Makron ooks, 1997.
Algoritmos e programao I.indd 136 7/8/2013 16:01:22
Process Black
JQW
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
!><V<474F=
Iarle I - Quesles ob|elivas
1) A sinlaxe das decIaraes de variaveis em C incIui o nome da variaveI seguido
de um lio.
( ) Cerlo
( ) Irrado
2) So nomes vaIidos ara variaveis na Iinguagem C:
(a) if, ab_2, H789, ya,
(b) A, b, , counl,
(c) 9xy, a36, xy, --|,
(d) 2_ou_1, !m, h, |,
(e) i, |, inl, obs.
3) Im C, os nomes conl e Conl no odem ser emregados ara reresenlar a
mesma variaveI ao Iongo de um rograma.
( ) Cerlo
( ) Irrado
4) Uma slring e uma sequncia de caracleres armazenada em um velor de
caracleres.
( ) Cerlo
( ) Irrado
Algoritmos e programao I.indd 137 7/8/2013 16:01:22
Process Black
JQ_
1
"
2
%
!
3
+
4
5
6
7
8
9
:
7
;
<
=
>
?
@
6
<
7
5) O que faz o seguinle rograma em C
include <stdio.h>
void main( )
int i =2
printf (O valor de i = %i n, i)