Você está na página 1de 58

Apostila de Lgica de Programao

APOSTILA DE LGICA DE PROGRAMA!O


Pro"essor# Ed$ardo Re$s So$%a &
Apostila de Lgica de Programao
S$m'rio
A$la &(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()
Aprese*tao da Discipli*a((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()
&( Co*sidera+es i*iciais((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()
&(&( Lgica e Lgica de Programao(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()
&(,( Pro-lema(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()
&(.( Algoritmo(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()
&(/( Programa(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()
&(0( 1ormas de se represe*tar $m Algoritmo(((((((((((((((((((((((((((((((((((((((((((((((((((((((()
&()( Regras para a Criao de Algoritmos((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((2
&(2( Como proceder *a co*str$o de algoritmos3(((((((((((((((((((((((((((((((((((((((((((((((2
&(2(&( Leia com ate*o o e*$*ciado do pro-lema(((((((((((((((((((((((((((((((((((((((((((((2
&(2(,( O-te*4a os dados de e*trada(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((2
&(2(.( O-te*4a os dados de sa5da(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((6
&(2(/( Determi*ar o 7$e de8e ser "eito para tra*s"ormar as e*tradas
determi*adas *as sa5das especi"icadas((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((6
&(2(0( Testar o algoritmo((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((6
&(6( E9erc5cios propostos((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((6
,( :ari'8eis e Co*sta*tes de memria ;RAM<((((((((((((((((((((((((((((((((((((((((((((((((((((((=
,(&( Memria((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((=
,(,( Como $m programa > tratado *a memria3((((((((((((((((((((((((((((((((((((((((((((((((((=
,(.( :ari'8eis((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((=
,(/( Co*sta*tes((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((=
,(0( Regras para "ormao de Ide*ti"icadores((((((((((((((((((((((((((((((((((((((((((((((((((((((=
,()( Tipos de Dados((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&?
,(2( Pri*cipais tipos de dados $tili%ados *a discipli*a(((((((((((((((((((((((((((((((((((((((&?
,(6( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&?
A$la ,((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&&
Comea*do a programar *a Li*g$agem C((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&&
.( Li*g$age*s de programao((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&&
.(&( Li*g$age*s de @ai9o A58el(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&&
.(,( Li*g$age*s de Alto A58el((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&&
.(.( Compilador((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&&
.(/( Estr$t$ra padro de $m algoritmo ;C<(((((((((((((((((((((((((((((((((((((((((((((((((((((((((&&
.(0( I*de*tao((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&,
.()( Operadores aritm>ticos((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&.
.(2( Regras de precedB*cia de operadores((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&.
.(6( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&.
A$la .((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&/
.(=( Ctili%a*do i*str$+es de IDO((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&/
.(&?( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&0
A$la /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&2
I*trod$o ao DE:ECFF((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&2
/( So-re o so"tGare((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&2
/(&( O 7$e > DE:ECFF3(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&2
/(,( :erso do DE:ECFF((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&2
/(.( I*ter"ace do So"tGare((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&2
/(/( Compila*do $m ProHeto(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&=
/(0( Tipos de Erros((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,&
Pro"essor# Ed$ardo Re$s So$%a ,
Apostila de Lgica de Programao
/()( E9erc5cio Proposto(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,&
A$la 0((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,,
Algoritmos Co*dicio*ais(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,,
0( I*trod$o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,,
0(&( I*str$o I1 ;SE<(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,,
0(,( Operadores Relacio*ais(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,.
0(.( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,/
A$la )((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,0
E9erc5cios((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,0
A$la 2((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,0
Seleo e*cadeada(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,0
0(/( I*str$o SIITCJ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,)
0(0( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,2
0()( Operadores ;Co*ectores< Lgicos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,6
0()(&( Operador KK ;E<(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,6
0()(,( Operador LL ;OC<((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,6
0()(.( Operador M ;Ao<(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,6
0(2( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.?
A$la 6((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.&
A$la =((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.,
A8aliao I(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.,
)( I*trod$o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.,
)(&( Tipo de a8aliao(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.,
)(,( Co*ti*$ao dos e9erc5cios(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.,
A$la &?((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.,
Algoritmos de Repetio ;Laos N Loops<((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.,
2( I*trod$o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.,
2(&( IJILE ;EAOCAATO<((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.,
2(,( DO N IJILE ;1AA EAOCAATO<((((((((((((((((((((((((((((((((((((((((((((((((((((((((((..
2(.( 1OR ;PARA<(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((./
2(/( Tipos de :ari'8eis((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((./
2(/(&( :ari'8eis Co*tadoras(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((./
2(/(,( :ari'8eis Ac$m$ladoras((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.0
2(/(.( Li9o de Memria(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.0
2(0( Modi"ica+es do Si*al de Atri-$io((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.0
2()( Loops I*"i*itos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.0
2(2( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.0
A$la &&((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.)
A$la &,((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.2
A$la &.((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.6
A$la &/((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((.=
A$la &0((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/?
Re8iso Geral Para a Pro8a I(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/?
A$la &)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/?
Pro8a I(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/?
A$la &2((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/?
Co*sidera+es so-re a pro8a(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/?
A$la &6((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/&
:ari'8eis JomogB*eas C*idime*sio*ais ;:etores<(((((((((((((((((((((((((((((((((((((((((((((((((((((/&
6( I*trod$o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/&
Pro"essor# Ed$ardo Re$s So$%a .
Apostila de Lgica de Programao
6(&( O 7$e so 8etores3(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/&
6(,( Represe*tao Gr'"ica(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/&
6(.( Ctilidade para :etores(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/&
6(/( Declara*do :etores((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/&
6(0( E9emplo Pr'tico((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/,
6()( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/.
A$la &=((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((//
A$la ,?((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/0
A$la ,&((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/0
:ari'8eis JomogB*eas M$ltidime*sio*ais ;Matri%es<((((((((((((((((((((((((((((((((((((((((((((((((/0
=( I*trod$o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/0
=(&( O 7$e so Matri%es3((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/0
=(,( Represe*tao Gr'"ica(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/0
=(.( Declara*do Matri%es((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/0
=(/( E9emplo Pr'tico((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/)
=(0( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/2
A$la ,,((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/6
A$la ,.((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/6
A$la ,/((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/=
I*trod$o a Programao Mod$lar((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/=
&?( I*trod$o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/=
&?(&( Por 7$e Ctili%ar Programao Mod$lar3(((((((((((((((((((((((((((((((((((((((((((((((((/=
&?(,( Como Impleme*tar Programao Mod$lar3(((((((((((((((((((((((((((((((((((((((((((/=
&?(,(&( 1$*+es((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/=
&?(,(,( Assi*at$ra((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/=
&?(,(.( Arg$me*to(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/=
&?(,(/( ParPmetro(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/=
&?(.( E9emplo Pr'tico((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((/=
&?(/( Escopo das :ari'8eis N I*sta*ciame*to de :ari'8eis((((((((((((((((((((((((((((((0&
&?(0( E9erc5cios Propostos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((0,
A$la ,0((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((0.
&?()( Passagem de ParPmetros por :alor e Re"erB*cia(((((((((((((((((((((((((((((((((((((0.
Pro"essor# Ed$ardo Re$s So$%a /
Apostila de Lgica de Programao
I*trod$o
A discipli*a i*trod$% o est$do da programaoQ destaca*do a co*str$o de algoritmos(
A-ra*ge os co*ceitos "$*dame*tais da programao at> o $so de estr$t$ras -'sicas de
dados ;8etoresQ matri%es e registros<(
Pro"essor# Ed$ardo Re$s So$%a 0
Apostila de Lgica de Programao
Aula 1
Apresentao da Disciplina
1. Consideraes iniciais
1.1. Lgica e Lgica de Programao
Lgica de programao > a t>c*ica de e*cadear pe*same*tos para ati*gir
determi*ado o-Heti8o( Estes pe*same*tos podem ser descritos como $ma se7RB*cia de
i*str$+es 7$e de8em ser seg$idas para se c$mprir $ma determi*ada tare"a( Gera*do ao
"i*al o 7$e c4amamos de programa(
1.2. Problema
A de"i*io mais simples para pro-lema > $ma sit$ao 7$e precisa ser resol8ida
1.3. Algoritmo
Algoritmo > $ma se7RB*cia orde*ada e "i*ita de passos lgicosQ -em de"i*as e
e"ica%es para a sol$o de $m pro-lema em $m tempo "i*ito(
Reparem 7$e algoritmo *o est' diretame*te relacio*ado S i*"orm'tica( Cma receita de
-oloQ por e9emploQ seria $m algoritmo 7$e iria sol$cio*ar $m pro-lema espec5"ico do
cotidia*o 4$ma*o(
Reparem tam->m 7$e para $m pro-lema podemos ter di8ersos algoritmosQ e 7$e
m$itas 8e%esQ estes s "$*cio*ariam depe*de*do de "atores e9ter*os( Como "a%er $m
-olo de c4ocolate 8isto 7$e "alto$ l$%3 A sol$o pro8a8elme*te ser' di"ere*te da
sol$o co*8e*cio*al(
1.4. Programa
Cm programa *o mais > do 7$e $m algoritmo comp$tacio*alme*te aplic'8el( Isto
>Q ser8e para resol8ermos pro-lemas e9cl$si8os do am-ie*te comp$tacio*al(
Todo programa um algoritmo, porm nem todo algoritmo um programa.
1.5. Formas de se reresentar um Algoritmo
E9istem 8'rias "ormas de se represe*tar $m algoritmo( Cma delas > escre8BElo
atra8>s da li*g$agem *at$ral 7$e $samos *o diaEaEdia( Esta ma*eiraQ por>mQ podem
le8ar a m$itas am-igRidadesQ pass58eis de i*terpreta+es errT*eas(
O$tra "orma de se represe*tar os algoritmos so os "l$9ogramas co*8e*cio*aisQ 7$e
$sam "ormas geom>tricas di"ere*tes para as di8ersas a+es( Este m>todo > -asta*te
pop$lar pela s$a "acilidade de compree*soQ mas > $m po$co limitadoQ preoc$pa*doEse
m$ito com detal4es de *58el "5sico da impleme*tao do algoritmo( O$tros tipos de
"l$9ogramas mais moder*os "oram criadosQ mas *o o-ti8eram a mesma pop$laridade(
Aa medida 7$e os algoritmos tor*aramEse m$ito gra*des e comple9osQ os "l$9ogramas
dei9aram de ser $tili%ados para a represe*tao da impleme*taoQ se*do direcio*ados
para a "ase de proHeto do so"tGare(
A terceira "orma c4amaEse de pseudocdigo o$ metalinguagem( Esta "orma de
represe*tao de $m algoritmo assemel4aEse m$ito S "orma com 7$e os programas so
escritos e co*siste *a descrio dos passos do algoritmo atra8>s de "rases co*str$5das
so- $ma si*ta9e rigorosame*te de"i*ida( AssimQ co*seg$eEse $ma descrio do
Pro"essor# Ed$ardo Re$s So$%a )
Apostila de Lgica de Programao
algoritmo li8re de am-igRidades e com $ma estr$t$ra -asta*te "le958el e completaQ o*de
todos os eleme*tos esto represe*tados(
Ao est$do da lgica de programao da *ossa discipli*aQ ser' $tili%ada a terceira
"orma de represe*taoQ $tili%a*do a si*ta9e da li*g$agem de programao C( Ao
$tili%aremos o padro de port$g$Bs estr$t$rado para e8itar 7$e *ossos algoritmos
precisem ser reescritos ;"aa em port$g$BsQ e depois re"aa *a si*ta9e correta da
li*g$agem<(
1.!. "egras ara a Criao de Algoritmos
A criao de algoritmos comp$tacio*ais o-edece ao pri*c5pio da i*"orm'tica(
Se*do assimQ sempre de8emos pe*sar 7$e *ossas sol$+es de8em passar por trBs
"ases disti*tas#
O*de#
Entrada: So os dados 7$e de8em ser i*"ormados ;pelo $s$'rioQ o$ *o< para 7$e o
programa possa ser e9ec$tado(
Processamento: So os procedime*tos 7$e de8em ser empregados para sol$cio*ar o
pro-lema( Aeste podemos i*cl$ir opera+es matem'ticasQ compara+esQ repeti+esQ etc(
Sada: U o res$ltado "i*al do algoritmo 7$e de8e ser e*treg$e a alg$m l$gar o$ alg$>m(
U importa*te ressaltar 7$e#
A ordem das i*str$+es de8em ser le8adas em co*siderao(
Ao e9iste processame*to sem a e*trada de dados(
A sa5da de dados de8e ser aprese*tada(
O *Vmero de i*str$+es de8e ser sempre "i*ito(
Exemplo
Imagi*e o seg$i*te pro-lema# calc$lar a m>dia "i*al dos al$*os da .W S>rie( Os
al$*os reali%aro 7$atro pro8as# P&Q P,Q P. e P/(
O*de#
M>dia 1i*al X
A e*trada de dados sero as 7$atro *otas(
O processame*to ser' o c'lc$lo da m>dia propriame*te dita(
A sa5da de dados ser' a e9i-io dessa m>dia(
1.#. Como roceder na construo de algoritmos$
1.#.1. Leia com ateno o enunciado do roblema
Aessa primeira etapa de8emos compree*der per"eitame*te o 7$e precisamos
"a%er( A gra*de maioria dos pro-lemas e*co*trados *os programas at$ais ocorre
por "al4as *a i*terpretao i*icial do pro-lema(
Pro"essor# Ed$ardo Re$s So$%a 2
E*trada Sa5da
Processame*t
o
P1 + P2 + P3 + P4
4
Apostila de Lgica de Programao
1.#.2. %bten&a os dados de entrada
D$ra*te a leit$ra do pro-lemaQ podemos desco-rir 7$ais so os dados 7$e
precisamos solicitar para a e9ec$o do algoritmo(
1.#.3. %bten&a os dados de sa'da
Da mesma "orma 7$e *a e*trada de dadosQ os dados de sa5da ;7$al a resposta 7$e
preciso i*"ormar< tam->m pode ser desco-erta le*do ate*tame*te a de"i*io do
pro-lema(
1.#.4. (eterminar o )ue de*e ser +eito ara trans+ormar as
entradas determinadas nas sa'das eseci+icadas
Aesta "ase > 7$e teremos a co*str$o do algoritmo propriame*te ditoQ poisQ a
partir de alg$*s re7$isitos especi"icadosQ de8emos determi*ar 7$al se7RB*cia de
a+es > capa% de tra*s"ormar $m co*H$*to de"i*ido de dados *as i*"orma+es de
res$ltado(
1.#.5. ,estar o algoritmo
Aesta "ase de8emos 8eri"icar se o algoritmo realme*te resol8e o pro-lema
propostoQ mesmo com 8aria+es *os dados de e*trada( Essa > $ma das pri*cipais
"ases do proHetoQ a"i*alQ a premissa 7$e de8emos ter em relao a $m so"tGare
la*ado *o mercado > a de 7$e este "$*cio*a( C4amamos esta etapa de teste de
mesa(
:ale ressaltarQ 7$e por mais e9a$sti8a 7$e seHa a -ateria de testes( Cm programa
*$*ca estar' &??Y im$*e a erros( Aessa etapa te*tamos c4egar o mais pr9imo
poss58el deste 5*dice(
1.-. ./erc'cios roostos
&( Especi"i7$e as a+es *ecess'rias para mo8er trBs disco de $ma Torre de Ja*iQ 7$e
co*siste de trBs 4astes ;a E - E c<Q $ma das 7$ais ser8e de s$porte para trBs discos de
tama*4os di"ere*tes ;& E , E . <Q os me*ores so-re os maiores( PodeEse mo8er um
disco de cada 8e% para 7$al7$er 4asteQ co*ta*to 7$e *$*ca seHa colocado $m disco
maior so-re $m me*or( O o-Heti8o > tra*s"erir os trBs disco para o$tra 4aste(
,( Co*str$a $m algoritmo 7$e i*"orme os passos *ecess'rios para a trocar o p*e$ de
$m carro( Te*do como sit$ao i*icial 7$e o carro esta8a em mo8ime*to *$ma
estradaQ 7$e 4' acostame*to e espao s$"icie*te para a troca(
Pro"essor# Ed$ardo Re$s So$%a 6
c -
,
a
.
&
Apostila de Lgica de Programao
2. 0ari1*eis e Constantes de memria 2"A34
2.1. 3emria
Memria > $m dispositi8o $tili%ado para g$ardar de "orma tempor'ria o$ *o alg$m
tipo de i*"ormao(
O$a*do $m programa > e9ec$tado ;tor*a*doEse o 7$e c4amamos de processo<Q todo o
se$ co*teVdo > posto *a memria RAM ;Ra*dom Access MemorZ< do comp$tador(
Se*do 7$e > somente nela 7$e o mesmo > e9ec$tado(
2.2. Como um rograma 5 tratado na memria$
Todo o programa 7$e > posto da memria RAM do comp$tador > di8idido em trBs 'reas
[rea de Dados
[rea de Cdigo
Pil4a
O*de#
rea de !ados: U o local desti*ado para o arma%e*ame*to dos dados 8i*dos do
$s$'rioQ c'lc$losQ sa5das( E*"imQ > o espao 7$e o algoritmo tem para tra-al4ar(
rea de "#digo: U o local o*de est' o algoritmo propriame*te dito(
Pil$a: U 7$em gara*te a co*ti*$idade do programa( Se o programam e"et$a \saltos]
de*tro do cdigoQ > a pil4a 7$e ma*t>m a i*"ormao de o*de o cdigo esta8a a*tes do
salto co*se7$e*teme*te gara*ti*do $m retor*o correto ao "i*al do salto( Pil4as $tili%am
$ma estr$t$ra de dados ma*ip$lada pelo 7$e c4amamos de 1I1O ;1irst I*p$t 1irst
O$tp$t<(
2.3. 0ari1*eis
:ari'8eis so espaos reser8ados ;alocados< *a memria RAM do comp$tadorQ 7$e
de8em poss$ir $m *ome e $m tipo de dadoQ se*do 7$e se$ co*teVdo pode so"rer
alterao d$ra*te a e9ec$o do programa(
Em o$tras pala8rasQ 8ari'8eis so as i*"orma+es 7$e podemos $tili%ar *a 'rea de dados
de $m programa( Por e9emploQ o Aome de $m clie*teQ as Aotas de $m al$*oQ a
Temperat$ra at$al( Mas *ote 7$e todos estes dados podem m$dar a 7$al7$er mome*to(
2.4. Constantes
Co*sta*tes so espaos reser8ados ;alocados< *a memria RAM do comp$tadorQ 7$e
de8em poss$ir $m *ome e $m tipo de dadoQ se*do 7$e se$ co*teVdo %&' pode so"rer
alterao d$ra*te a e9ec$o do programa(
Repare 7$e a di"ere*a e*tre $ma 8ari'8el e $ma co*sta*te *a s$a de"i*io > s$tilQ
por>m *a pr'tica essa di"ere*a > m$ito rele8a*te( O 8alor 7$e "or de"i*ido *a criao
;declarao< de $ma co*sta*te a acompa*4a d$ra*te todo o ciclo de 8ida do processo(
2.5. "egras ara +ormao de 6denti+icadores
Para a criao de $m ide*ti"icador ;*ome de $ma 8ari'8el o$ co*sta*teQ por e9emplo<
de8emos tomar c$idado com $ma s>rie de "atores( So eles#
O *ome de $m ide*ti"icador *o pode ser i*iciado por *Vmero(
O *ome de $m ide*ti"icador *o pode co*ter espaos o$ 7$al7$er caracter
especialQ e9ceto o $*derli*e \^](
Pro"essor# Ed$ardo Re$s So$%a =
Apostila de Lgica de Programao
O *ome de $m ide*ti"icador *o pode ser ig$al ao de 7$al7$er pala8ra reser8ada
da li*g$agem de programao(
Proc$re $tili%ar *omes c$rtosQ e 7$e poss$am alg$m sig*i"icado associado ao
ide*ti"icador(
2.!. ,ios de (ados
DadosQ so as i*"orma+es em s$a "orma mais -r$ta( Se*do 7$e estas i*"orma+es
podem ser classi"icadas em alg$*s gr$pos disti*tos
A$m>ricos# Co*H$*to "ormado pelos *Vmeros ;i*teirosQ reaisQ etc<(
Al"a*$m>ricos# Co*H$*to "ormado por letras e *Vmeros ;pala8ras<(
Lgicos# Represe*tam ape*as dois 8aloresDestados( :erdadeiro o$ 1also(
:ale ressaltar 7$e a li*g$agem C ;*o CFF< *o poss$i $m tipo de dado 7$e represe*te
8alores lgicos(
2.#. Princiais tios de dados utili7ados na discilina
(nt )inteiro*: AVmeros i*teiros e*tre E.,2)6 e .,2)2
+loat )ponto ,lutuante*: AVmeros reais e*tre .Q/EE.6 e .Q/EF.6
"$ar )caracter*: Tipo al"a*$m>rico 7$e pode 8ariar e*tre & e ,00 caracteresQ
este tipo pode tam->m ser re"erido por string(
-oid: Represe*ta a *o e9istB*cia de $m tipo(
:ale ressaltar 7$e estes *o so os V*icos tipos de dados e9iste*tes *a li*g$agem CQ mas
sim os 7$e $tili%aremos d$ra*te o c$rso de lgica de programao(
2.-. ./erc'cios Proostos
&( O$ais dos ide*ti"icadores a-ai9o so co*siderados IA:[LIDOS3 _$sti"i7$e s$a
resposta(
a< Co*tas^a^pagar
-< Sal'rio^1amilia
c< &@imestre
d< Aota&
e< E*dereo
"< `DDD
g< Tele"o*e Reside*cial
,( De"i*a o mel4or tipo de dado para cada e9presso a-ai9o( Co*sidera*do ape*as i*tQ
"loat e c4ar(
a< ,.(0)
-< \mi*4a casa > a%$l]
c< /0
d< \&,.@0)]
e< E./0
"< /?/0)
g< E./()
Pro"essor# Ed$ardo Re$s So$%a &?
Apostila de Lgica de Programao
Aula 2
Comeando a programar na Linguagem C
3. Linguagens de rogramao
Li*g$agem de programao > $ma classe de so"tGare ;do mesmo Heito 7$e editores de
te9toQ pla*il4as eletrT*icasQ etc(< o*de todos os se$s represe*ta*tes tBm por
caracter5stica pri*cipal a capacidade de dese*8ol8er *o8os so"tGares( Se*do 7$e essa
classe de so"tGare > di8idida em dois gra*des gr$pos( Li*g$age*s de alto e -ai9o *58el(
3.1. Linguagens de 8ai/o 9'*el
So as li*g$age*s 7$e mais se apro9imam do idioma da m'7$i*a( Poss$em $ma maior
comple9idade de compree*soQ por>m se$ desempe*4o > sig*i"icati8ame*te mel4or do
7$e as li*g$age*s de alto *58el(
E9emplos de li*g$age*s de -ai9o *58el# Assem-lZQ 1ortra*Q Algol e C(
3.2. Linguagens de Alto 9'*el
So as li*g$age*s 7$e mais se apro9imam do idioma 4$ma*o( Poss$em $ma
comple9idade de apre*di%ado i*"erior as li*g$age*s de -ai9o *58elQ por>m poss$em
desempe*4o tam->m i*"erior a estas(
Como o \idioma 4$ma*o] > 8astoQ 8ale ressaltar 7$e a gra*de maioria das li*g$age*s de
programao e*co*tramEse *o idioma I*glBs(
E9emplos de li*g$age*s de alto *58el# Co-olQ ClipperQ @asicQ :is$al @asicQ Pascal e
Delp4i(
3.3. Comilador
Compilador > o *ome do so"tGare respo*s'8el pela trad$o de $m cdigo alto *58el
para -ai9o *58el ;para 7$e o processador possa e9ec$tar s$as i*str$+es< gera*do ao
"i*al o 7$e c4amamos de ar7$i8o e9ec$t'8el( Se*do 7$e a 8elocidade de processame*to
de $m programa est' diretame*te relacio*ado a 7$alidade deste compilador(
3.4. .strutura adro de um algoritmo 2C4
Para programarmos *a li*g$agem CQ de8emos *os preoc$par primeiro com a s$a si*ta9e
-'sica( A-ai9o esto e9plicitadas alg$mas das pri*cipais caracter5sticas da li*g$agem(
"ase Sensiti.e: O *ome de $m ide*ti"icadorQ -em como de i*str$+es de8em ser
escritos da mesmo "orma 7$e "oram criadosQ de modo 7$e letras maiVsc$las e
mi*Vsc$las "a%em di"ere*a(
/tili0a12o de 3i3liotecas: Para $tili%armos alg$ma i*str$o H' e9iste*te *a
li*g$agemQ de8emos ide*ti"icar em 7$al -i-lioteca essa i*str$o se e*co*tra
logo *o i*icio do cdigo atra8>s da i*str$o \i*cl$de](
/tili0a12o de um 3loco principal: Todo o programa dese*8ol8ido em CQ de8e
poss$ir $ma "$*o pri*cipal de"i*ida com o *ome \mai*](
!e,ini12o de inicio e ,im de 3loco: Sempre 7$e precisarmos de"i*ir i*icio e "im
de $m -loco de i*str$+esQ $tili%aremos os caracteres ab(
'3s: Como $tili%aremos o compilador DE:ECFF d$ra*te as a$lasQ alg$mas i*cl$des
podem ter *omes di"ere*tes das tradicio*ais i*cl$des do C(
Pro"essor# Ed$ardo Re$s So$%a &&
Apostila de Lgica de Programao
Exemplo de um programa
`i*cl$de cstdio(4d
i*t mai*;<
a
i*t 8alor&Q 8alor,e
"loat somae
8alor& X ,.???e
8alor, X &00??e
soma X 8alor& F 8alor,e
b
Explicando o c#digo acima
4include 5stdio.$6 Esta li*4a de"i*e 7$e poderemos $tili%ar *o *osso cdigo
"o*te i*str$+es de IDO ;E*trada e Sa5da de dados<(
int main)* De"i*e o*de 7$e o *osso programa8a 8ai comear a
e9ec$o
7 I*icio do -loco de i*str$+es
int .alor1, .alor2 Cria *a 'rea de dados ;declara< d$as 8ari'8eis de tipo
inteiro com *omes 8alor& e 8alor,(
,loat soma8 Cria *a 'rea de dados ;declara< $ma 8ari'8el de tipo
ponto ,lutuante com *ome soma
.alor1 9 23:::8 Atri-$i o 8alor ,.??? para a 8ari'8el 8alor&
.alor2 9 1;;::8 Atri-$i o 8alor &00?? para a 8ari'8el 8alor,
soma 9 .alor1 + .alor28 Soma o co*teVdo das d$as 8ari'8eis e Hoga a resposta do
c'lc$lo *a 8ari'8el soma(
< E*cerra o -loco de i*tr$+es
3.5. 6ndentao
Repare 7$e o cdigo acima poss$i alg$*s espaos e*tre os caracteres a e b 7$e ser8em
para "acilitar a 8is$ali%ao do cdigo *a -$sca de poss58eis erros( Esta t>c*ica c4amaE
se i*de*tao de cdigo( Se*do 8ital *o dese*8ol8ime*to de $m programa(
Aa gra*de maioria das li*g$age*s a i*de*tao tem $ma importP*cia merame*te
est>ticaQ por>m e9istem li*g$age*s 7$e de"i*em i*icio e "im de -loco por ela( PZt4o*
seria $m -om e9emplo disso(
Pro"essor# Ed$ardo Re$s So$%a &,
Apostila de Lgica de Programao
3.!. %eradores aritm5ticos
De*tro da li*g$agem CQ $tili%aremos os seg$i*tes operadores aritm>ticos#
Operador Aome E9emplo Resposta
F Adio f X 0 F , 2
E S$-trao f X 0 N , .
g M$ltiplicao f X 0 g , &?
D Di8iso i*teira f X 0D, ,
D Di8iso real f X 0(?D,(? ,(0
Y Resto de $ma di8iso i*teira f X 0 Y , &
poG Pote*ciaog f X poG;0Q,< ,0
s7rt Rai% 7$adradag f X s7rt;,0< 0
g Para 7$e as "$*+es \poG] e \s7rt] possam "$*cio*ar corretame*teQ de8emos
adicio*ar a -i-lioteca \mat4(4] *as i*cl$des de se$ cdigo(
3.#. "egras de reced:ncia de oeradores
As regras de precedB*cia matem'tica e*tre os operadores aritm>ticos > respeitada pelo
compilador C( Se*do assimQ a m$ltiplicao e di8iso so e"et$adas a*tes da adio e
s$-traoQ por e9emplo( Se 8ocB 7$iser 7$e a regra de precedB*cia seHa modi"icadaQ >
permitida a $tili%ao de parB*teses( De modo 7$e t$do o 7$e esti8er de*tro destes
parB*teses sero calc$lados primeiro(
3.-. ./erc'cios Proostos
&( 1aa $m algoritmo 7$e calc$le a m>dia e*tre dois 8alores i*teiros ;0 e ,0<(
,( 1aa $m algoritmo 7$e calc$le a 'rea de $m 7$adrado de lado LX &?(
.( 1aa $m algoritmo 7$e calc$le a 4ipote*$sa de $m triP*g$lo retP*g$lo de catetos
-X. e c X /( ;
, ,
c b h + = <
/( 1aa $m algoritmo 7$e e"et$e as seg$i*tes opera+es#
a< A 8ale &?
-< @ 8ale o do-ro de A
c< C 8ale a rai% 7$adrada do do-ro de A
d< D 8ale a metade da rai% 7$adrada do do-ro de A
e< E 8ale o c$-o da metade da rai% 7$adrada do do-ro de A
"< 1 8ale a tera parte do c$-o da metade da rai% 7$adrada do do-ro de A(
Pro"essor# Ed$ardo Re$s So$%a &.
Apostila de Lgica de Programao
Aula 3
3.;. <tili7ando instrues de 6=%
At> o mome*toQ *ossos algoritmos apesar de "$*cio*aremQ *o esto respeita*do
corretame*te o pri*cipio da i*"orm'tica ;a$la &< 7$e > o da E*tradaQ Processame*to e
Sa5da de dados( _' 7$e#
Aossa e*trada de dados > sempre "i9a
Ao estamos e9i-i*do o res$ltado de *ossos c'lc$los para o $s$'rio do
programa(
Para sol$cio*ar este pro-lemaQ a li*g$agem C poss$i trBs i*str$+es para a
leit$raDescrita de dadosQ scan,Q gets e print,( O*de#
scan,: Ctili%ado para a leit$ra de 8alores *$m>ricosQ se*do 7$e sempre de8emos
$tili%ar o operador \K] a*tes da 8ari'8el de leit$ra(
gets: Ctili%ado para leit$ra de 8alores al"a*$m>ricos
print,: Ctili%ado para a escrita de 8alores ta*to *$m>ricos 7$a*to
al"a*$m>ricos(
Exemplo de utili0a12o
`i*cl$de cstdio(4d
i*t mai*;<
a
i*t 8&Q 8,e
"loat mediae
c4ar *omeh.?ie

gets;*ome<e
sca*";jYdjQ K8&<e
sca*";jYdjQ K8,<e

media X ;8& F 8,<D,(?e

pri*t" ;jA s$a m>dia ># Y"jQ media<e
b
Repare a ma*eira como "oi "eita a leit$ra das 8ari'8eis *omeQ 8& e 8,#
Aome como > $m c4arQ "oi lida $tili%a*do a "$*o gets(
8& e 8, por serem *$m>ricasQ precisaram ser lidas $tili%a*do o sca*"Q se*do 7$e
\Yd] > $m atri-$to da "$*o 7$e a8isa o compilador 7$e ser' lido ;*o caso da
pri*t"Q escrito< $m 8alor de tipo de dado i*teiro(
A leit$ra da li*4a o*de e*co*traEse o pri*t" seria da seg$i*te "orma# Escre8a *a
tela a "rase \A s$a m>dia ># H$*tame*te com $m 8alor de po*to "l$t$a*te]Q se*do
7$e esse 8alor "oi passado para a "$*o logo em seg$ida separado por $ma
85rg$la(
Alg$*s atri-$tos importa*tes 7$e podem ser $tili%ado *as "$*+es sca*" e pri*t"#
Atri-$to Ctili%ao E9emplo
Yd Leit$raDescrita de dados *$m>ricos i*teiros sca*";\Yd]Q Kidade<e
Y" Leit$raDescrita de dados *$m>ricos reais pri*t";\Y"]Qsalario<e
Ys Escrita de dados do tipo c4ar ;stri*gs< pri*t";\Ys]Q *ome<e
Pro"essor# Ed$ardo Re$s So$%a &/
Apostila de Lgica de Programao
De*tro de $ma i*str$o pri*t"Q podemos "a%er a escrita de mais 8aloresQ compo*do $ma
se*te*a completa(
E9emplo#
pri*t" ;\YsQ Os 8alores Yd e Yd "ormam a m>dia# Y"]Q *omeQ 8&Q 8,Q media<e
Podemos tam->m $tili%ar a "$*o pri*t" para e9i-ir me*sage*s para o $s$'rio( Por
e9emploQ *o caso a*teriorQ seria i*teressa*te e9i-ir $ma me*sagem ao $s$'rio pedi*do
para 7$e ele i*"orme o se$ *ome e dois 8alores i*teiros(
O cdigo "icaria da seg$i*te ma*eira#
`i*cl$de cstdio(4d
i*t mai*;<
a
i*t 8&Q 8,e
"loat mediae
c4ar *omeh.?ie

pri*t" ;jDigite o se$ *ome# j<e
gets;*ome<e
pri*t" ;jDigite o primeiro 8alor i*teiro# j<e
sca*";jYdjQ K8&<e
pri*t" ;jDigite o seg$*do 8alor i*teiro# j<e
sca*";jYdjQ K8,<e

media X ;8& F 8,<D,(?e

pri*t" ;jYsQ Os 8alores Yd e Yd "ormam a m>dia# Y"jQ *omeQ 8&Q 8,Q media<e
b
3.1>. ./erc'cios Proostos
&( Re"aa as 7$est+es &Q , e . da lista a*teriorQ $tili%a*do agora os coma*dos para
e*trada e sa5da de dados(
,( 1aa $m algoritmo 7$e leia trBs 8alores reais ;po*to "l$t$a*te< e calc$le a s$a m>dia
po*deradaQ com os respecti8os pesos ,Q . e / para os 8alores(
.( 1aa $m algoritmo 7$e leia $m 8alor i*teiro e $m 8alor real( M$ltipli7$e estes
8alores e e9i-a o res$ltado(
/( 1aa $m algoritmo 7$e leia / 8alores reais ;9&Q Z&Q 9,Q Z,< e7$i8ale*tes a dois pares
orde*ados( Calc$le e e9i-a a distP*cia e*tre estes dois po*tos de acordo com a
"rm$la a-ai9o#
,
& ,
,
& ,
< ; < ; y y x x d + =
0( 1aa $m algoritmo 7$e leia trBs 8alores reais e calc$le 9k e 9] de acordo com a
"rm$la a-ai9o
a
c a b b
x x
g ,
g g /
j Q l
,

=
Pro"essor# Ed$ardo Re$s So$%a &0
Apostila de Lgica de Programao
)( 1aa $m algoritmo 7$e leia $m 8alor i*teiro e7$i8ale*te a $m determi*ado 8alor em
seg$*dos( Retor*e 7$a*tas 4orasQ mi*$tos e seg$*dos so compostos por este 8alor(
Por e9emplo o 8alor .)2? ;seg$*dos< "ormaria & 4oraQ & mi*$to e &? seg$*dos(
2( 1aa $m algoritmo 7$e leia dois 8alores i*teiros( Logo aps tro7$e os 8alores e*tre
estas 8ari'8eis( O$ seHaQ o co*teVdo da 8ari'8el & passar' para a 8ari'8el , e 8ice e
8ersa(
Pro"essor# Ed$ardo Re$s So$%a &)
Apostila de Lgica de Programao
Aula 4
Introduo ao DEV-C++
4. ?obre o so+t@are
4.1. % )ue 5 (.0ACBB$
DE:ECFF > o *ome de $m dos mais "amosos compiladores C para a plata"orma
Ii*doGsQ se*do 7$e este > $m "reeGare 7$e pode ser -ai9ado dos mais di8ersos
l$gares( Alg$*s li*ms sero escritos *o apB*dice deste ma*$al(
4.2. 0erso do (.0ACBB
Ctili%aremos d$ra*te as a$las a 8erso /(=(=(, do DE:ECFF
4.3. 6nter+ace do ?o+t@are
Aps $ma i*stalao simples do programa o am-ie*te de dese*8ol8ime*to de8e ser
como o mostrado a-ai9o#
'nde:
Ao ca*to es7$erdo temos o *a8egador de classesDproHetos 7$e ser' $tili%ado para
podermos alter*ar e*tre ar7$i8os(
Aa 'rea s$perior e*co*tramEse os pri*cipais atal4os do compilador
Aa parte i*"erior temos $ma cai9a de me*sage*s 7$e o compilador ir' e9i-ir
co*"orme a *ecessidade(
Pro"essor# Ed$ardo Re$s So$%a &2
Apostila de Lgica de Programao
"riando um no.o pro=eto
Para criarmos $m *o8o proHeto de8emos acessar o me*$ Ar7$i8oDAo8oDProHeto(((
Escol4a a opo Co*sole Applicatio*Q certi"ica*doEse 7$e a opo \ProHeto C] esteHa
marcada(
:ocB pode de"i*ir $m *ome para se$ proHeto *esta mesma Ha*ela(
Ao clicar em OnQ o compilador ir' solicitar 7$e 8ocB sal8e se$ proHeto( Proc$re sal8ar
$m proHeto por pasta para e8itar $m ac$m$lo de ar7$i8osQ de modo 7$e seHa "'cil a
seleo do doc$me*to certo(
Pro"essor# Ed$ardo Re$s So$%a &6
Apostila de Lgica de Programao
Logo aps a criao do proHeto( :ocB estar' apto para comear a programar(
Repare 7$e a i*ter"ace do cdigo > m$ito similar ao 7$e H' estamos tra-al4a*doQ de
modo 7$e ape*as precisamos modi"icar ;apagar< alg$mas i*str$+es e *ossa aplicao
estar' ig$al ao de *osso cader*o(
Repare 7$e e9istem d$as li*4as o-rigatrias *o "i*al do cdigo "o*te#
sZstem ;\pa$se]<e
ret$r* ;?<e
O*de#
s>stem)?pause@*: 1ar' com 7$e o programa aps s$a co*cl$so seHa "ec4ado some*te
aps o pressio*ame*to de alg$ma tecla( A *o e9istB*cia desta li*4a de i*str$o
"ec4aria o programa sem 7$e o $s$'rio te*4a tempo de 8is$ali%ar as respostas( Podemos
$tili%ar 7$al7$er i*str$o DOS *a "$*o sZstem(
return ):*: Esta i*str$o ser' a-ordada com B*"ase mais adia*te do c$rsoQ por 4ora
de8emos $tili%ar esta li*4a como "i*ali%adora da "$*o \mai*](
4.4. Comilando um ProCeto
Aps a escrita do algoritmoQ "i*alme*te > a 4ora de testar o "$*cio*ame*to do mesmo(
Para issoQ de8emos compilar *osso proHeto(
E9istem trBs atal4os importa*tes 7$e de8emos sa-er *esse mome*to(
Pressionar as teclas "TAB + +C: Compila o cdigoQ por>m *o o e9ec$ta(
Pressionar as teclas "TAB + +1:: E9ec$ta $m cdigo compilado(
Pressionar a tecla +C: Compila e e9ec$ta o cdigo(
Pro"essor# Ed$ardo Re$s So$%a &=
Apostila de Lgica de Programao
U importa*te ressaltar 7$e 7$a*do $m proHeto "or compiladoQ ele de8er' ser sal8o
*o8ame*te(
Pro"essor# Ed$ardo Re$s So$%a ,?
Apostila de Lgica de Programao
A-ai9o temos $ma imagem 7$e represe*ta o res$mo do compilador#
Repare 7$e *este caso o compilador *o e*co*tro$ *e*4$m erro d$ra*te a trad$o do
cdigo "o*te(
:eHamos a-ai9o $ma sit$ao o*de e9istam erros de si*ta9e(
Ao l$gar do res$mo de compilaoQ o cdigo te8e $ma li*4a destacada e *a parte
i*"erior do programa esto se*do e9i-idos alertas do compilador( Aeste caso a
i*"ormao > de 7$e o programa *o co*seg$i$ compilar a li*4a &?Q de8ido a "alta de
$m \e] *a li*4a =(
Pro"essor# Ed$ardo Re$s So$%a ,&
Apostila de Lgica de Programao
4.5. ,ios de .rros
D$ra*te toda o processo de dese*8ol8ime*to de so"tGareQ e*co*traremos ape*as dois
tipos de erros em *ossos programas( So eles#
Erros de Sintaxe: Ocorrem d$ra*te a "ase de proHeto do cdigoQ caracteri%ados
por "al4as *a digitao ;e$ escre8o errado<( So "acilme*te ide*ti"icadosQ pois
so ac$sados pelo compilador( Como por e9emplo escre8er \mai] *o l$gar de
\mai*](
Erros de B#gica: Ocorrem em tempo de e9ec$oQ caracteri%ados por "al4as *a
co*cepo do cdigo ;e$ pe*so errado<( So m$ito mais comple9os de serem
e*co*tradosQ H' 7$e o programa > e9ec$tado *ormalme*teQ se*do 7$e este ape*as
de8ol8e $m 8alor errado de resposta( Este tipo de erro s pode ser e*co*trado
com testes de mesa(
4.!. ./erc'cio Proosto
&( Passe todos os algoritmos "eitos *a listagem a*terior para o DE:ECFFQ a*ota*do
poss58eis erros de si*ta9e e perg$*ta*do para se$ pro"essor o 7$e estes sig*i"icam(
Pro"essor# Ed$ardo Re$s So$%a ,,
Apostila de Lgica de Programao
Aula 5
Algoritmos Condicionais
5. 6ntroduo
At> o mome*toQ todos os algoritmos 7$e estamos "a%e*do podem ser co*siderados
Dlgoritmos SeEFenciaisQ isto >Q e9ec$tam todas as s$as li*4as de i*str$o sem 7$e
4aHam des8ios *em repeti+es *o cdigo "o*te( Em $m am-ie*te pr'ticoQ este tipo de
sit$ao *o ocorreQ H' 7$e d$ra*te $m programa di8ersas sit$a+es de8em ser testadas
para 7$e se$ res$ltado "i*al seHa satis"atrio(
Por e9emploQ se "ormos "a%er $m programa para c'lc$lo de peso ideal para $m
i*di85d$oQ a "rm$la para 4ome*s e m$l4eres > di"ere*te( Se*do assimQ em alg$m
mome*to do programa de8eEse desco-rir o se9o da pessoa e caso seHa alg$>m do se9o
masc$li*oQ "aa a "rm$la fQ caso co*tr'rioQ a "rm$la o ser' e9ec$tada(
Para podermos tra-al4ar com algoritmos co*dicio*ais podemos $tili%ar dois tipos de
i*str$+es I1 ;SE< e SIITCJ ;CASOQ *o > trad$o literal<#
5.1. 6nstruo 6F 2?.4
Esta i*str$o a8alia $ma determi*ada condi12o l#gicaQ e depe*de*do da resposta 7$e
esta co*dio retor*arQ ser' "eito $m -loco de algoritmo o$ *o(
Sintaxe:
i" ;co*dio lgica<
a
c@loco de algoritmo 7$e ser' e9ec$tado caso a co*dio lgica seHa 8erdadeirade
b
c@loco de algoritmo 7$e ser' e9ec$tado i*depe*de*teme*te da resposta da co*dio
lgicade
De*tro da i*str$o i"Q ai*da podemos $tili%ar $ma seg$*da i*str$o ;else E se*o< 7$e
tam->m a8alia a co*dio lgica testadaQ por>m some*te se*do e9ec$tado se esta
co*dio "or "alsa(
Sintaxe:
i" ;co*dio lgica<
a
c@loco de algoritmo 7$e ser' e9ec$tado caso a co*dio lgica seHa 8erdadeirade
b
else
a
c@loco de algoritmo 7$e ser' e9ec$tado caso a co*dio lgica seHa "alsade
b
Para mel4or compree*soQ "aremos agora $m e9emplo pr'tico da $tili%ao deste tipo
de i*str$o( 1aamos $m algoritmo 7$e leia o *ome e as d$as *otas de $m al$*oQ
retor*a*do a s$a m>dia e $ma me*sagem \Apro8ado] o$ \Repro8ado] depe*de*do da
s$a m>dia( A m>dia m5*ima para apro8ao ser' )(
Pro"essor# Ed$ardo Re$s So$%a ,.
Apostila de Lgica de Programao
`i*cl$de cstdio(4d
i*t mai*;<
a
"loat *&Q *,Q mediae
c4ar *omeh,0ie

pri*t";jDigite o se$ *ome# j<e
gets;*ome<e
pri*t";jDigite s$a primeira *ota# j<e
sca*";jY"jQ K*&<e
pri*t";jDigite s$a seg$*da *ota# j<e
sca*";jY"jQ K*,<e

media X ;*& F *,<D ,(?e
pri*t" ;jY" p*jQ media<e
i, )media 69 G*
7
print, )HPara3nsI -ocJ estK DPA'-D!' LnH*8
<
else
7
print, )H(n,eli0mente .ocJ estK AEPA'-D!' LnH*8
<

sZstem;jpa$sej<e
ret$r*;?<e
b
O trec4o em desta7$e *o cdigo > o 7$e di"ere*cia $m algoritmo co*dicio*al de $m
p$rame*te se7Re*cial( Repare 7$e ape*as $ma das d$as me*sage*s ser' e9i-ida *a telaQ
se*do 7$e t$do depe*de do retor*o do teste \media dX )];m>dia ser maior o$ ig$al a )<(
5.2. %eradores "elacionais
Para 7$e possamos "a%er perg$*tas lgicas para o processadorQ de8emos sempre $tili%ar
$m dos operadores a-ai9o demo*strados(
Operador Sig*i"icado
d Maior do 7$e
c Me*or do 7$e
dX Maior o$ ig$al a
cX Me*or o$ ig$al a
XX Ig$al a
MX Di"ere*te de
Pro"essor# Ed$ardo Re$s So$%a ,/
Apostila de Lgica de Programao
5.3. ./erc'cios Proostos
&( 1aa $m algoritmo 7$e leia $m 8alor real 7$al7$er e o classi"i7$e como POSITI:O
o$ AEGATI:O( O-s# Trate o *Vmero qERO como positi8o(
,( 1aa $m algoritmo 7$e leia $m 8alor i*teiro e i*"orme se este 8alor > maior do 7$e
&? o$ *o(
.( 1aa $m algoritmo 7$e leia dois 8alores reais e i*"orme se estes 8alores so ig$ais
o$ di"ere*tes(
/( 1aa $m algoritmo 7$e leia $m 8alor i*teiro e retor*e se este 8alor > PAR o$
rMPAR(
0( 1aa $m algoritmo 7$e leia dois 8alores reais e e9i-a ao "i*al 7$al dos dois > o
maior(
)( 1aa $m programa 7$e leia o AomeQ :alor Jora e Total de Joras Tra-al4adas de $m
"$*cio*'rio( Calc$le e e9i-a#
a< O sal'rio -r$to
-< O 8alor de :ale Tra*sporte ;)Y do Sal'rio @r$to<
c< O desco*to de Imposto de Re*da ;&&Y do Sal'rio @r$to para sal'rios s$periores
a Rs &//?Q??<
d< O sal'rio l57$ido(
2( 1aa $m algoritmo 7$e leia dois 8alores i*teiros e7$i8ale*tes a 4ora i*icial e "i*al de
$m Hogo( Retor*e o tempo de d$rao deste Hogo sa-e*do 7$e o Hogo pode comear
em $m dia e termi*ar em o$troQ e 7$e o tempo m'9imo de Hogo > ,/ 4oras(
Pro"essor# Ed$ardo Re$s So$%a ,0
Apostila de Lgica de Programao
Aula !
Exerccios
A$la desti*ada a co*ti*$ao e impleme*tao dos e9erc5cios so-re algoritmos
co*dicio*ais(
Aula #
Seleo encadeada
U m$ito com$m 7$e de*tro de $m algoritmo te*4amos 8'rios testes 7$e te*4am 7$e ser
"eitos a $ma mesma 8ari'8el o$ sit$ao( Para este tipo de sit$ao podemos $tili%ar o
e*cadeame*to ;a*i*4ame*to< de i*str$+es i"( Por e9emploQ 8amos modi"icar o
e9erc5cio *Vmero $m da lista a*terior para 7$e agora ele co*sidere o 8alor ? ;%ero<
como *$lo(
`i*cl$de cstdio(4d
i*t mai*;<
a
"loat 8alore

pri*t";jDigite $m 8alor# j<e
sca*";jY"jQ K8alor<e

i" ;8alor d ?<
a
pri*t";jO 8alor > positi8oM p*j<e
b
else
a
i" ;8alor c ?<
a
pri*t";jO 8alor > Aegati8oM p*j<e
b
else
a
pri*t";jO 8alor > *$loM p*j<e
b
b
sZstem;jpa$sej<e
ret$r*;?<e
b
Repare 7$e o seg$*do teste s ser' "eito caso o primeiro "al4e( Este tipo de a-ordagem >
i*teressa*te para e8itar 7$e $ma gra*de 7$a*tidade de testes similares seHam "eitas
7$a*do ape*as $m deles pode ser e9ec$tado(
Pro"essor# Ed$ardo Re$s So$%a ,)
Apostila de Lgica de Programao
5.4. 6nstruo ?D6,CE
Ctili%ar $ma se7RB*cia e*cadeada de testes lgicos apesar de i*teressa*teQ em alg$mas
sit$a+es pode tor*ar o cdigo relati8ame*te comple9o( O$a*do poss$5mos $ma lista de
8alores para a8aliarEmosQ por e9emplo(
O$a*do *os deparamos com este tipo de sit$ao e9iste $ma i*str$o 7$e se mostra
mais otimi%ada e orga*i%ada para a ma*ip$lao dos dados( Essa i*str$o c4amaEse
sGitc4(
Exemplo:
`i*cl$de cstdio(4d
i*t mai*;<
a
i*t 8alore
pri*t";jDigite $m 8alor# j<e
sca*";jYdjQ K8alor<e
sGitc4 ;8alor<
a
case &#
pri*t" ;j1oi digitado o 8alor & p*j<e
-reame
case ,#
pri*t" ;j1oi digitado o 8alor , p*j<e
-reame
case .#
pri*t" ;j1oi digitado o 8alor . p*j<e
-reame
de"a$lt#
pri*t";j1oi digitado $m 8alor di"ere*te de &Q , o$ . p*j<e
b
sZstem;jpa$sej<e
ret$r*;?<e
b
A i*str$o sGitc4 atra8>s de i*str$+es case a8alia o co*teVdo da 8ari'8el \8alor]Q de
modo 7$e a i*str$o \de"a$lt] > e9ec$tada se todos os testes "al4arem(
Perce-am 7$e de*tro de cada case "oi $tili%ado $ma i*str$o \-ream] 7$e "ar' com 7$e
o sGitc4 seHa i*terrompido *o mome*to 7$e e*co*trar a associao correta para a
8ari'8el \8alor](
De*tro de cada case *o > *ecess'rio de"i*ir o -loco e*tre c4a8es(
Pro"essor# Ed$ardo Re$s So$%a ,2
Apostila de Lgica de Programao
5.5. ./erc'cios Proostos
&( 1aa $m algoritmo 7$e rece-e $m *Vmero i*teiroQ escre8a o mBs correspo*de*te a
este *Vmero o$ a me*sagem \mBs i*8'lido]
,( 1aa $m algoritmo 7$e rece-e dois 8alores reais H$*tame*te com $ma 8ari'8el
co*troladora de tipo i*teiro(
a< Caso a 8ari'8el co*troladora seHa &Q some os 8alores digitados(
-< Caso a 8ari'8el co*troladora seHa ,Q m$ltipli7$e os 8alores digitados(
c< Caso a 8ari'8el co*troladora seHa .Q e*co*tre o maior 8alor(
d< Caso a 8ari'8el co*troladora seHa 7$al7$er o$tro 8alorQ calc$le a m>dia e*tre os
8alores(
.( 1aa $m algoritmo 7$e sim$le o cai9a de $m 1astE1ood( Sero digitados o cdigo de
$m prod$toQ H$*tame*te com a 7$a*tidade deseHada deste prod$to( Se$ programa
de8e retor*ar o *ome do prod$to H$*tame*te com o 8alor "i*al a ser pago(
Cdigo Prod$to :alor C*it'rio
& Sa*d$5c4e de Pres$*to Rs ,Q.?
, S$co de Tamari*do Rs &Q0?
. Pastel de :e*to Rs &Q.?
/ Po com margari*a Rs ?Q2?
Pro"essor# Ed$ardo Re$s So$%a ,6
Apostila de Lgica de Programao
5.!. %eradores 2Conectores4 Lgicos
Al>m do 7$e H' "oi tra-al4ado d$ra*te o c$rsoQ e9iste a possi-ilidade de 7$e $ma
e9presso lgica "aa mais de $ma perg$*ta ao mesmo tempo( De modo 7$e essas
perg$*tas tem de estar relacio*adas de alg$ma "orma( Imagi*e 7$e e9ista a *ecessidade
de se "a%er $m "iltro em $m programa de modo 7$e seHam tratados de "orma di"ere*te
pessoas do se9o "emi*i*o me*ores de idadeQ maiores de idadeQ pessoas do se9o
masc$li*o maiores de idade e me*ores de idade(
Se "ormos "a%er $m teste para cada possi-ilidadeQ o cdigo seria giga*tesco( Ctili%a*do
os operadores lgicosQ poder5amos "a%er perg$*tas agr$padas ;se "or m$l4er E me*or de
idadeQ se "or 4omem E maior de idadeQ etc(<(
D$ra*te o c$rso iremos tra-al4ar com trBs operadores lgicos( So eles#
5.!.1. %erador FF 2.4
Tam->m co*4ecido como m$ltiplicao lgica
Retor*a como resposta \:erdadeiro] se e some*te se as d$as e9press+es lgicas
por ele co*ectadas "orem 8erdadeiras(
Ta-ela 8erdade
MM - +
- : 1
+ 1 1
5.!.2. %erador GG 2%<4
Tam->m co*4ecido como adio lgica
Retor*a como resposta \1also] se e some*te se as d$as e9press+es lgicas por
ele co*ectadas "orem "alsas(
Ta-ela 8erdade
NN - +
- : :
+ : 1
5.!.3. %erador H 29o4
Tam->m co*4ecido como i*8ersor lgico
Retor*a o 8alor oposto a $ma e9presso lgica
Ta-ela 8erdade
I - +
1 :
Exemplos
a< ;,0 d &? KK ,. Y , XX &<3 Resposta# :ERDADEIRO
-< ;,0 MX 0?D, LL &, d ,?<3 Resposta# 1ALSO
c< ;M;, F , X /<< 3 Resposta# 1ALSO
d< ;/? d .? KK ,0 c &, LL &, Y , XX?<3 Resposta#
e< ;M;;,0 d &? KK ,. Y , XX &<<<3 Resposta#
Pro"essor# Ed$ardo Re$s So$%a ,=
Apostila de Lgica de Programao
Exemplo PrKtico
1a%er $m programa 7$e leia as d$as *otas de $m al$*o H$*tame*te com s$a
"re7RB*cia( I*"orme se o al$*o est' apro8ado o$ repro8ado sa-e*do 7$e a m>dia
m5*ima de apro8ao > ) e 7$e a "re7RB*cia m5*ima de apro8ao > 20(
`i*cl$de cstdio(4d
i*t mai*;<
a
"loat *&Q *,Q "re7Q mediae

pri*t";jDigite s$a primeira *ota# j<e
sca*";jY"jQ K*&<e
pri*t";jDigite s$a seg$*da *ota# j<e
sca*";jY"jQ K*,<e
pri*t";jDigite s$a "re7RB*cia# j<e
sca*";jY"jQ K"re7<e

media X ;*& F *,<D ,(?e
i, )media 69 G MM ,reE 69 O;*
a
pri*t" ;jPara->*sM :ocB est' APRO:ADO p*j<e
b
else
a
pri*t" ;jI*"eli%me*te 8ocB est' REPRO:ADO p*j<e
b

sZstem;jpa$sej<e
ret$r*;?<e
b
Te*te "a%er o cdigo acima $tili%a*do operador lgico OC agora(
Pro"essor# Ed$ardo Re$s So$%a .?
Apostila de Lgica de Programao
5.#. ./erc'cios Proostos
&( 1aa $m algoritmo 7$e lB $m 8alor i*teiro e retor*a se este > $m 8alor Par Positi8oQ
Par Aegati8oQ rmpar Positi8oQ rmpar Aegati8o o$ A$lo(
,( 1aa $m algoritmo 7$e leia trBs 8alores reais e os e9i-a de "orma cresce*te(
.( 1aa $m algoritmo 7$e leia trBs 8alores reais e e9i-a ao "i*al o maior 8alor
/( 1aa $m algoritmo 7$e leia trBs 8alores reais e calc$le 9k e 9] de acordo com a
"rm$la a-ai9o( O-s(# Se$ programa de8e pre8er os erros de rai% *egati8a e di8iso
por %ero(
a
c a b b
x x
g ,
g g /
j Q l
,

=
0( 1aa $m programa 7$e dada a idade de $m *adador classi"icaEo em $ma das
seg$i*tes categorias#
I*"a*til X 6E&? a*os
_$8e*il X &&E&2 a*os
Ad$lto X maiores de &6 a*os
Pro"essor# Ed$ardo Re$s So$%a .&
Apostila de Lgica de Programao
Aula -
A$la desti*ada a co*ti*$ao e impleme*tao dos e9erc5cios propostos *a lista
a*teriorQ -em como *o8os e9erc5cios dispo*i-ili%ados pelo pro"essor(
"ontinua12o dos exerccios:
)( A Secretaria de Meio Am-ie*teQ 7$e co*trola o 5*dice de pol$ioQ ma*t>m . gr$pos
de i*dVstrias 7$e so altame*te pol$e*tes do meio am-ie*te( O 5*dice de pol$io
aceit'8el 8aria de ?Q?0 at> ?Q,=( Se o 5*dice so-e para ?Q. as i*dVstrias do &t gr$po
so i*timadas a s$spe*derem s$as ati8idadesQ se o 5*dice crescer para ?Q/ as
i*d$strias do &t e ,t gr$po so i*timadas a s$spe*derem s$as ati8idadesQ se o 5*dice
ati*gir ?Q0 todos os gr$pos de8em ser *oti"icados a paralisarem s$as ati8idades( 1aa
$m programa 7$e leia o 5*dice de pol$io medido e emita a *oti"icao ade7$ada
aos di"ere*tes gr$pos de empresas(
2( Dese*8ol8a $m algoritmo 7$e e"et$e a leit$ra de trBs 8alores para os lados de $m
triP*g$loQ co*sidera*do lados como# AQ @ e C( O algoritmo de8er' 8eri"icar se os
lados "or*ecidos "orma realme*te $m triP*g$lo ;cada lado > me*or 7$e a soma dos
o$tros dois lados<( Se "or esta co*dio 8erdadeiraQ de8er' ser i*dicado 7$al tipo de
triP*g$lo "oi "ormado# is#sceles ;dois lados ig$ais e $m di"ere*te<Q escaleno ;todos
os lados di"ere*tes< o$ eEFilKtero ;todos os lados so ig$ais<(
1aa $m algoritmo 7$e leia o dia e o mBs de *ascime*to de $ma pessoa( Ao "i*al do
algoritmo retor*e o se$ sig*o de acordo com a ta-ela a-ai9o#
9ascidos entreI ?ignoI
20/03 a 20/04 ries
21/04 a 20/05 Touro
21/05 a 20/06 Gmeos
21/06 a 21/07 Cncer
22/07 a 22/08 Leo
23/08 a 22/09 Virem
23/09 a 22/10 Li!ra
23/10 a 21/11 "scor#io
22/11 a 21/12 $ai%&rio
22/12 a 20/01 Ca#ric'rnio
21/01 a 18/02 ()u&rio
Pro"essor# Ed$ardo Re$s So$%a .,
Apostila de Lgica de Programao
19/02 a 19/03 *ei+es
Pro"essor# Ed$ardo Re$s So$%a ..
Apostila de Lgica de Programao
Aula ;
Avaliao I
!. 6ntroduo
A$la desti*ada a aprese*tao do primeiro tra-al4o a ser dese*8ol8ido *a discipli*a de
lgica de programao(
!.1. ,io de a*aliao
Ca-e ao pro"essor decidir 7$e tipo de a8aliao ser' propostaQ pode*do esta ser $m
testeQ tra-al4o para se e*tregar *o mesmo dia o$ $m tra-al4o para ser e*treg$e
posteriorme*te(
!.2. Continuao dos e/erc'cios
Ao caso da a8aliao ser $m tra-al4o a ser e*treg$e posteriorme*teQ $tili%e essa a$la
para dar co*ti*$idade *os e9erc5cios(
Aula 1>
Algoritmos de epetio !Laos " Loops#
#. 6ntroduo
Como 8isto a*teriorme*teQ de*tro de $m algoritmo e9istem 8'rios tipos de estr$t$ras
7$e podem ser $tili%adas( At> o mome*to est$damos estr$t$ras se7Re*ciais e
co*dicio*ais(
De*tro de *ossos algoritmos 8ai ser com$m e*co*trarmos trec4os de cdigo 7$e
precisam ser e9ec$tados 8'rias 8e%es em se7RB*cia ;para 8alida+esQ por e9emplo<( Para
este tipo de pro-lemaQ ao i*8>s de repetirmos seg$idame*te o cdigo "o*teQ podemos
$tili%ar i*str$+es de repetio 7$e "a%em H$stame*te o papel de reEe9ec$tar $m
determi*ado -loco de algoritmo(
As i*str$+es 7$e permitem repetio de cdigo so trBs#
#.1. DE6L. 2.9J<A9,%4
Lao de repetio 7$e e9ec$ta $m determi*ado -loco de i*str$+es e*7$a*to s$a
co*dio lgica "or 8erdadeira(
Sempre testa s$a co*dio lgica a*tes de e9ec$tar(
Aps a e9ec$o do cdigoQ retor*a para a co*dio e repete o teste(
Sintaxe:
G4ile ;co*dio lgica<
a
ci*str$+es 7$e sero e9ec$tadas e*7$a*to a co*dio "or 8erdadeirade
b
Pro"essor# Ed$ardo Re$s So$%a ./
Apostila de Lgica de Programao
Exemplo:
`i*cl$de cstdio(4d
i*t mai*;<
a
i*t 8alorQ somae
8alor X 0e
soma X ?e
G4ile ;8alor cX 6<
a
soma X soma F 8alore
8alor X 8alor F &e
b
pri*t";jYdp*jQ soma<e
sZstem;jPACSEj<e
ret$r* ?e
b
Este algoritmo ir' e9ec$tar as i*str$+es \soma X soma F 8alore] e \8alor X 8alor F &e]
e*7$a*to o co*teVdo da 8ari'8el 8alor "or me*or o$ ig$al a 6( Se*do 7$e 7$a*do esta
co*dio "or "alsa o programa ir' e9i-ir essa soma *a tela e e*cerrar(
#.2. (% K DE6L. 2FALA .9J<A9,%4
Poss$i comportame*to similar ao G4ile(
Lao de repetio 7$e e9ec$ta $m determi*ado -loco de i*str$+es e*7$a*to s$a
co*dio lgica "or 8erdadeira(
Sempre testa s$a co*dio lgica depois de e9ec$tar o -loco de i*str$+es(
E9ec$ta pelo me*os $ma 8e% as i*str$+es de se$ -loco(
Sintaxe:
do
a
ci*str$+es 7$e sero e9ec$tadasd
b G4ile ;co*dio lgica<e
Exemplo:
`i*cl$de cstdio(4d
i*t mai*;<
a
i*t 8alorQ somae
8alor X 0e
soma X ?e
do
a
soma X soma F 8alore
8alor X 8alor F &e
b G4ile ;8alorcX6<e
pri*t";jYdp*jQ soma<e
sZstem;jPACSEj<e
ret$r* ?e
b
Pro"essor# Ed$ardo Re$s So$%a .0
Apostila de Lgica de Programao
Repare 7$e este cdigo retor*a o mesmo 8alor 7$e o e9emplo a*teriorQ por>m o teste >
"eito ape*as *o "i*al da e9ec$o da primeira 8olta do lao( Este tipo de a-ordagem >
m$ito com$m 7$a*do $tili%amos me*$sQ o*de as op+es de8em ser e9i-idas *a tela
e*7$a*to *o "or "eita $ma escol4a 8'lida(
#.3. F%" 2PA"A4
Lao de repetio co*tado(
E9ec$ta e*7$a*to s$a co*dio "or 8erdadeira(
O co*trole de 8oltas do lao > "eito pelo prprio lao(
Esta i*str$o de repetio > m$ito com$m de ser $tili%ada 7$a*do sa-emos e9atame*te
o *Vmero de 8oltas 7$e *osso -loco de i*str$+es ir' "a%er(
Sintaxe:
"or ;8ari'8el X 8alor i*iciae co*dio de e9ec$oe 8alor de i*creme*to para a 8ari'8el<
a
ci*str$+es 7$e sero repetidasde
b
Exemplo:
`i*cl$de cstdio(4d
i*t mai*;<
a
i*t 8alorQ somae
8alor X 0e
soma X ?e
"or ;8alor X 0e 8alorcX6e 8alor X 8alor F&<
a
soma X soma F 8alore
b
pri*t";jYdp*jQ soma<e
sZstem;jPACSEj<e
ret$r* ?e
b
Ctili%a*do este tipo de a-ordagemQ reparem 7$e *o "oi *ecess'rio i*creme*tar a
8ari'8el 8alor de*tro do -loco do "or(
#.4. ,ios de 0ari1*eis
Impleme*tado laos de repetio em *ossos cdigosQ de8emos reparar 7$e alg$mas
8ari'8eis poss$em $m comportame*to di"ere*te do 7$e estamos acost$madosQ o*de elas
mesmas ser8em de -ase para o se$ pr9imo 8alor(
#.4.1. 0ari1*eis Contadoras
Tipo de 8ari'8el 7$e tem por comportame*to pri*cipal so"rer alterao *os se$s dados
de ma*eira co*sta*te( Aos e9emplos a*teriores a 8ari'8el \8alor] poss$i $m
comportame*to de co*tadora(
Pro"essor# Ed$ardo Re$s So$%a .)
Apostila de Lgica de Programao
#.4.2. 0ari1*eis Acumuladoras
Tipo de 8ari'8el 7$e tem por comportame*to pri*cipal so"rer alterao *os se$s dados
de ma*eira 8ari'8el( Aos e9emplos a*teriores a 8ari'8el \soma] poss$i $m
comportame*to de ac$m$ladora(
#.4.3. Li/o de 3emria
Aa gra*de maioria das li*g$age*s de programaoQ 7$a*do declaramos $ma 8ari'8el
esta poss$i $m 8alor aleatrio i*icial c4amado li9o de memriaQ de modo 7$e se
ma*termos este 8alor *a 8ari'8elQ teremos $m programa 7$e retor*ar' 8alores
i*corretos( Para elimi*ar o pro-lema do li9o de memriaQ de8emos e9plicitame*te dar
$m 8alor i*icial para as 8ari'8eis(
Todas as .ariK.eis consideradas contadoras ou acumuladoras de.em ser
iniciali0adas pelo programador.
#.5. 3odi+icaes do ?inal de Atribuio
O s5m-olo de atri-$io \X] de*tro da li*g$agem C pode so"rer alg$mas
tra*s"orma+es 7$e 8isam dimi*$ir o *Vmero de caracteres digitados de*tro do cdigo(
Se*do amplame*te $tili%ados *a ma*ip$lao de co*tadores e ac$m$ladores(
S5m-olo E9emplo Similar
FX A FX .e A X A F .e
EX A EX .e A X A N .e
gX A gX .e A X A g .e
DX A DX .e A X A D .e
YX A YX .e A X A Y .e
FF A FF A X A F &e
EE A EE A X A E&e
A partir de agoraQ $tili%aremos estes operadores sempre 7$e poss58el(
#.!. Loos 6n+initos
Cm algoritmo e*tra em LoopQ 7$a*do ocorre $ma sit$ao tal 7$e o mesmo e*tra em
$m lao e *o co*seg$e sair deste( Este erro de8e ser e8itado a todo o c$sto de*tro de
*ossos programas( Para $ma 8is$ali%ao pr'tica so-re $m programa em loopQ remo8a a
li*4a \8alor X 8alor F &e] de 7$al7$er $m dos e9emplos acima citados e 8eHa o
res$ltado(
#.#. ./erc'cios Proostos
&( 1aa $m algoritmo 7$e calc$le a soma de todos os 8alores i*teiros e9iste*tes e*tre &
e &??( 1aa esse algoritmo trBs 8e%esQ $ma para cada lao de repetio(
,( 1aa $m algoritmo 7$e leia $m 8alor i*teiro e calc$le a soma de todos os 8alores
i*teiros e*tre & e o 8alor i*"ormado( 1aa esse algoritmo trBs 8e%esQ $ma para cada
lao de repetio(
.( 1aa $m algoritmo 7$e leia $m 8alor i*teiro e calc$le o se$ "atorial( O "atorial de
$m *Vmero > o res$ltado da m$ltiplicao deste prprio *Vmero pelos se$s 8alores
me*ores para*do *o &( E9emplo# 0M X 09/9.9,9& X &,?( 1aa esse algoritmo trBs
8e%esQ $ma para cada lao de repetio(
Pro"essor# Ed$ardo Re$s So$%a .2
Apostila de Lgica de Programao
Aula 11
"ontinua12o dos exerccios
/( 1aa $m programa 7$e leia $m *Vmero 7$al7$er e calc$le a ta-$ada desse *Vmero(
A ta-$ada de8e ser e9i-ida ao $s$'rio *o seg$i*te "ormato ;co*sidera*do a leit$ra
do *Vmero ,<#
, f & X ,
, f , X /
, f . X )
(((
, f &? X ,?
0( 1aa $m algoritmo 7$e leia dois 8alores ;f e o< e calc$le f
o
( O-s(# Ao $tili%e a
"$*o \poG](
)( 1aa $m algoritmo 7$e leia dois 8alores positi8os ;A e @< e calc$le a m$ltiplicao
de A por @( O-s(# Ao $tili%e o operador aritm>tico \g](
2( 1aa $m algoritmo 7$e resol8a a seg$i*te sit$ao(
\A empresa de _oo tem $m 7$adro de .) "$*cio*'riosQ se*do 7$e a cada a*o so
co*tratados 0 *o8os cola-oradores( E*7$a*to 7$e a empresa de _oa7$im poss$i $m
7$adro de 0? "$*cio*'rios e a cada a*o so co*tratados . *o8os "$*cio*'rios(
O$a*tos a*os sero *ecess'rios para 7$e _oo $ltrapasse _oa7$im3]
Pro"essor# Ed$ardo Re$s So$%a .6
Apostila de Lgica de Programao
Aula 12
"ontinua12o dos exerccios )leitura de dados dentro dos la1os*
6( 1aa $m algoritmo 7$e leia $m *Vmero i*determi*ado de 8alores reais e 7$a*do "or
digitado $m 8alor *egati8oQ e9i-a a soma destes 8alores(
=( 1aa $m algoritmo 7$e leia ,0 8alores i*teiros( Logo aps a leit$ra dos 8aloresQ
e9i-a a m>dia e*tre os 8alores(
&?( 1aa $m algoritmo 7$e leia $m *Vmero i*determi*ado de 8alores( E 7$a*do "or
digitado ? ;%ero< e9i-a a 7$a*tidade de *Vmeros pares e 5mpares digitados(
&&( 1aa $m algoritmo 7$e leia &0 8alores reais e ao "i*al da leit$ra e9i-a o maior 8alor
i*"ormado(
&,( 1aa $m algoritmo 7$e leia &? *omes e idades( Ao "i*al da leit$ra e9i-a o *ome da
pessoa mais 8el4a(
&.( 1aa $m algoritmo 7$e leia 0? 8alores i*teiros e logo aps a leit$ra e9i-a o
perce*t$al de 8alores mVltiplos de 0 digitados(
Pro"essor# Ed$ardo Re$s So$%a .=
Apostila de Lgica de Programao
Aula 13
"ontinua12o dos exerccios
&/( 1aa $m algoritmo 7$e leia $m 8alor i*teiro e retor*e se este 8alor > per"eito o$ *o(
O-s(# AVmeros per"eitos so a7$eles c$Ho a soma de se$s di8isores ;e9cl$i*do o
prprio *Vmero< "ormam e9atame*te o 8alor origi*al( E9emplo# ) ;&F,F. X )<
&0( 1aa $m algoritmo 7$e leia $m $s$'rio e se*4a digitados pelo $s$'rio( O programa
de8e e9i-ir a me*sagem \@em :i*do] caso o $s$'rio digitado seHa \al$*o] e a
se*4a digitada seHa \segredo]( O programa de8e a8isar 7$a*do o logi* *o "or
e"et$ado e emitir $m a8iso de -lo7$eio caso o $s$'rio erre se$ logi* trBs 8e%es(
&)( 1aa $m programa 7$e leia o AomeQ :alor JoraQ Total de Joras Tra-al4adas e a
idade de 0? "$*cio*'rios( Aps a leit$ra dos dados e9i-a#
a< A m>dia salarial -r$ta da empresa
-< O *ome e a idade do "$*cio*'rio mais 8el4o
c< O *ome e o sal'rio do "$*cio*'rio 7$e ti8er a maior re*da(
Pro"essor# Ed$ardo Re$s So$%a /?
Apostila de Lgica de Programao
Aula 14
"ontinua12o dos exerccios )desa,ios*
&2( 1aa $m algoritmo 7$e leia $m *Vmero i*teiro 7$al7$er e retor*e se este *Vmero >
primo o$ *o( O-s(# AVmeros primos so a7$eles di8is58eis ape*as por & ;$m< e por
eles mesmos(
&6( 1aa $m algoritmo 7$e leia . 8alores i*teiros e e9i-a o MMC ;M5*imo MVltiplo
Com$m< e*tre estes 8alores(
&=( 1aa $m algoritmo 7$e leia o AomeQ Idade e Se9o de 0? pessoas( Retor*e ao "i*al o
*ome da m$l4er mais 8el4a e do 4omem mais Ho8em(
,?( 1aa $m algoritmo 7$e imprima *a tela os &? primeiros 8alores da se7RB*cia de
1i-o*acci( ;&Q &Q ,Q .Q 0Q 6Q &.Q ,&Q ./ e 00<( O-s(# Ctili%ar laos para gerar a
se7RB*cia(
Pro"essor# Ed$ardo Re$s So$%a /&
Apostila de Lgica de Programao
Aula 15
eviso $eral %ara a %rova I
A$la desti*ada a re8iso de todo o co*teVdo dese*8ol8ido at> o mome*toQ -em como
co*cl$so de e9erc5cios(
Aula 1!
%rova I
@oa pro8a a todos(
Lem-remEse sempre de ler com ate*o todas as 7$est+es da pro8a(
1aa primeiro as 7$est+es 7$e 8ocB co*siderar mais "'ceis(
Ao "i7$e com dV8idas em relao S i*terpretao da pro8a(
Aula 1#
Considera&es so're a prova
A$la desti*ada a correo da pro8a e tirar dV8idas em relao a a8aliao(
Pro"essor# Ed$ardo Re$s So$%a /,
Apostila de Lgica de Programao
Aula 1-
Vari(veis )omog*neas +nidimensionais !Vetores#
-. 6ntroduo
A partir deste po*to do c$rso iremos 7$e-rar o paradigma de 7$e $ma 8ari'8el s pode
arma%e*ar $m 8alor por 8e%(
-.1. % )ue so *etores$
:etores so 8ari'8eis como 7$ais7$er o$tras( De8em poss$ir *omeQ tipo de dado e se$
co*teVdo pode so"rer alterao d$ra*te a e9ec$o do programa( Por>mQ di"ere*te de
$ma 8ari'8el co*8e*cio*alQ 8etores podem arma%e*ar mais de $m 8alor ao mesmo
tempo( Desde 7$e esteHam em posi+es di"ere*tes(
-.2. "eresentao Mr1+ica
Cm 8etor pode ser represe*tado como $ma ta-ela de ape*as $ma li*4a o$ col$*a(
Aa li*g$agem CQ a primeira posio de $m 8etor > sempre a posio ? ;%ero<Q se*do
cresce*te a partir deste po*to(
Se*do assimQ $m 8etor de ) posi+es poss$i 5*dice 8aria*do e*tre ? e 0(
-.3. <tilidade ara 0etores
:etores so de gra*de $tilidade 7$a*do precisamos arma%e*ar dados de "orma a *o
perdermos os dados a*teriorme*te digitados(
-.4. (eclarando 0etores
Declarar 8etores *a li*g$agem C > relati8ame*te simples(
Sintaxe:
cTipo de dadod cAome do 8etord h*Vmero de posi+esie
Exemplos:
i*t 8etor&h&?ie
"loat 8etor,h&0ie
O$a*do o 8etor a ser declarado "or de tipo c4arQ de8emos i*"ormar primeiro o *Vmero
de caracteres 7$e cada posio ir' arma%e*ar e logo aps o *Vmero de posi+es(
Exemplo:
c4ar 8etor.h,?i h&,ie
Pro"essor# Ed$ardo Re$s So$%a /.
Apostila de Lgica de Programao
-.5. ./emlo Pr1tico
Dese*8ol8er $m programa 7$e leia $m 8etor i*teiro de 0 posi+es e e9i-ir a soma deste
8etor(
`i*cl$de cstdio(4d
i*t mai*;<
a
i*t 8etorh0ie
i*t ie
"loat somae

"or ;i X ?e ic0e iFF<
a
pri*t" ;jDigite $m 8alor# j<e
sca*" ;jYdjQ K8etorhii<e
b
soma X ?e
"or ;i X ?e ic0e iFF<
a
soma X soma F 8etorhiie
DDo$ soma FX 8etorhiie
b

pri*t" ;jA soma do 8etor ># Y" p*jQ soma<e
sZstem;jPACSEj<e
ret$r* ?e
b
Explicando o c#digo:
O primeiro lao "a% a leit$ra de dados do 8etor de "orma se7Re*cial ;posio por
posio< o*de a 8ari'8el \i] ser8e de 5*dice para o 8etor(
O seg$*do lao "a% o 7$e c4amamos de 8arred$ra *o 8etor ;passar por todas as
posi+es< de modo 7$e *a 8ari'8el soma seHa ac$m$lado o 8alor de cada posio
do 8etor(
O programa poderia ser dese*8ol8ido em ape*as $m laoQ mas est' disposto
desta ma*eira H$stame*te para demo*strar 7$e os dados co*ti*$am arma%e*ados
*o 8etorQ mesmo 7$a*do a leit$ra de i*"orma+es H' est' posicio*ada em o$tra
li*4a(
Se em alg$m mome*to "or *ecess'rio rec$perar alg$ma i*"ormao digitadaQ
ser' poss58el(
Pro"essor# Ed$ardo Re$s So$%a //
Apostila de Lgica de Programao
-.!. ./erc'cios Proostos
&( 1aa $m algoritmo 7$e leia $m 8etor de && posi+es de tipo real( Logo aps a leit$ra
dos dadosQ e9i-a a m>dia do 8etor(
,( 1aa $m algoritmo 7$e leia $m 8etor i*teiro de &? posi+es( Ao "i*al da leit$raQ
e9i-a a 7$a*tidade de 8alores pares e9iste*tes *o 8etor(
.( 1aa $m algoritmo 7$e leia $m 8etor real de ) posi+es e retor*e a m>dia dos
8alores positi8os do 8etor(
/( 1aa $m algoritmo 7$e leia dois 8etores reais de 0 posi+es( Gere $m terceiro 8etor
de mesmo tama*4o e tipo 7$e o-edea a seg$i*te regra de "ormao#
a< Aa primeira posio do 8etor . ser' arma%e*ada a m$ltiplicao e*tre a primeira
posio do 8etor & e a primeira posio do 8etor ,(
-< Aa seg$*da posio do 8etor . ser' arma%e*ada a m$ltiplicao e*tre a seg$*da
posio do 8etor & e a seg$*da posio do 8etor ,(
c< (((
0( 1aa $m algoritmo 7$e leia $m 8etor stri*g de &? posi+es( Aps a leit$ra de todo o
8etor o $s$'rio de8e i*"ormar mais $ma pala8ra( Se$ programa de8e e9i-ir 7$a*tas
8e%es esta pala8ra e9iste *o 8etor(
Pro"essor# Ed$ardo Re$s So$%a /0
Apostila de Lgica de Programao
Aula 1;
"ontinua12o dos Exerccios
)( 1aa $m algoritmo 7$e leia dois 8etores stri*g de &? posi+es e7$i8ale*tes a grade
de respostas de $m al$*o e o ga-arito da mesma pro8a "eita pelo pro"essor( Se$
programa de8e i*"ormar a *ota do al$*o sa-e*do 7$e cada acerto e7$i8ale a & po*to(
Se$ programa tam->m de8e retor*ar $ma me*sagem para o $s$'rio de acordo com o
se$ *Vmero de acertos
a< At> . acertos# PRECISA MELJORAR
-< At> 0 acertos# REGCLAR
c< At> 2 acertos# @OM
d< Acima de 6 acertos# COATIACE ASSIM(
2( 1aa $m algoritmo 7$e leia $m 8etor i*teiro de &? posi+es( Logo aps a leit$ra de
todo o 8etorQ i*8erta os 8alores de todo o 8etor(
6( 1aa $m algoritmo 7$e leia $m 8etor real de 6 posi+es( Logo aps a leit$ra e9i-a o
maior 8alor digitado *o 8etor(
=( 1aa $m algoritmo 7$e gere $m 8etor de &? posi+es co*te*do os primeiros &?
8alores da se7RB*cia 1i-o*acci(
&?( 1aa $m algoritmo 7$e leia $m 8etor de ) posi+es i*teiro e reorga*i%e os dados
deste 8etor de modo 7$e se$s dados seHam e9i-idos de ma*eira cresce*te(
Pro"essor# Ed$ardo Re$s So$%a /)
Apostila de Lgica de Programao
Aula 2>
A$la desti*ada S correo dos e9erc5cios e remoo de dV8idas(
Aula 21
Vari(veis )omog*neas ,ultidimensionais !,atri-es#
;. 6ntroduo
De*tro da programaoQ 8etores *o so a V*ica "orma de se arma%e*ar mVltiplos
8alores de*tro de $ma 8ari'8el(
;.1. % )ue so 3atri7es$
Matri%es poss$em rigorosame*te a mesma de"i*io de 8etores( Por>m os se$s dados
podem ser arma%e*ados em $ma estr$t$ra de dados 7$e poss$a mais de $ma dime*so(
;.2. "eresentao Mr1+ica
A represe*tao gr'"ica de $ma matri% depe*de do *Vmero de dime*s+es 7$e ela
poss$ir( A "orma mais com$m de e*co*trarmos $ma matri% > *o "ormato de d$as
dime*s+es(
U i*di"ere*te pe*sarmos 7$e cada posio da matri% > i*de9ada pelo *Vmero de s$a
col$*a seg$ido por s$a li*4a o$ o se$ i*8erso( Para $ma maior "acilidade de
compree*soQ iremos tra-al4ar com o sistema de li*4a 9 col$*a(
;.3. (eclarando 3atri7es.
A declarao de matri%es > similar a declarao de 8etores(
Sintaxe:
cTipo de dadod cAome da matri%d h*Vmero de li*4asi h*Vmero de col$*asie
Exemplos:
i*t matri%&h&?ih0ie
"loat matri%,h)ih)ie
O$a*do a matri% a ser declarada "or de tipo c4arQ de8emos i*"ormar primeiro o *Vmero
de caracteres 7$e cada posio ir' arma%e*ar e logo aps o *Vmero de li*4as e col$*as(
Exemplo:
c4ar matri%.h,?ih6ih0ie
Pro"essor# Ed$ardo Re$s So$%a /2
Apostila de Lgica de Programao
;.4. ./emlo Pr1tico
`i*cl$de cstdio(4d
i*t mai*;<
a
i*t matri%h.ih.ie
i*t li*4aQcol$*ae
"loat somae

DDLeitura dos dados
"or ;li*4a X ?e li*4ac.e li*4aFF<
a
"or ;col$*a X ?e col$*ac.e col$*aFF<
a
pri*t" ;jDigite $m 8alor# j<e
sca*" ;jYdjQ Kmatri%hli*4aihcol$*ai<e
b
b
DDSoma e exibio da matriz
soma X ?e
"or ;li*4a X ?e li*4ac.e li*4aFF<
a
"or ;col$*a X ?e col$*ac.e col$*aFF<
a
pri*t" ;jYd jQ matri%hli*4aihcol$*ai<e
soma X soma F matri%hli*4aihcol$*aieDDou soma +=matriz[linha][coluna];
b
pri*t";jp*j<e
b
pri*t";jp* A soma da matri% ># Y"jQsoma<e

sZstem;jPACSEj<e
ret$r* ?e
b
Explicando o c#digo
Agora a e*trada de dados > "eita $tili%a*do dois laos e *o ape*as $m(
Repare 7$e para cada 8olta do lao de li*4aQ o lao de col$*a "a% trBs 8oltas(
Para a 8arred$ra da matri% o processo se repete
Para 8is$ali%armos a matri% > i*teressa*te 7$e a cada li*4a seHa "eita $ma 7$e-ra
de li*4a ;\p*]< e*tre os laos(
Pro"essor# Ed$ardo Re$s So$%a /6
Apostila de Lgica de Programao
;.5. ./erc'cios Proostos
&( 1aa $m algoritmo 7$e leia $ma matri% /9/ de tipo real e e9i-a ao "i*al a s$a m>dia(
,( 1aa $m algoritmo 7$e leia $ma matri% .90 de tipo i*teiro e e9i-a 7$a*tos 8alores
pares e9istem *a matri%(
.( 1aa $m algoritmo 7$e leia $ma matri% 090 de tipo real e e9i-a a soma das li*4as
pares e a m>dia das li*4as 5mpares(
/( 1aa $m algoritmo 7$e leia $ma matri% ,96 e colo7$e se$s 8alores em $ma matri%
69,( Am-as as matri%es de tipo c4ar(
0( 1aa $m algoritmo 7$e leia $ma matri% )9) e e9i-a a soma de s$a diago*al
pri*cipal(
)( 1aa $m algoritmo 7$e leia $ma matri% )9) e e9i-a a soma de s$a diago*al
sec$*d'ria(
2( 1aa $m algoritmo 7$e leia $ma matri% )9) e e9i-a a soma dos seg$i*tes 8alores da
matri%(
6( 1aa $m algoritmo 7$e pree*c4a $ma matri% &?9&? de "orma a$tom'tica com os
8alores de & a &?? de "orma se7Re*cial( O-s(# Ctili%e ape*as os co*tadores dos laos
e a matri% propriame*te dita( Ao $tili%e $ma co*tadora a$9iliar(
Pro"essor# Ed$ardo Re$s So$%a /=
Apostila de Lgica de Programao
Aula 22
A$la desti*ada S co*cl$so e correo dos e9erc5cios(
Aula 23
"ontinua12o e "orre12o de Exerccios
=( 1aa $m algoritmo 7$e leia $ma matri% .9. de tipo real e adicio*e se$s 8alores a $m
8etor real de = posi+es(
&?( 1aa $m algoritmo 7$e orde*e os 8alores de $ma matri% /9/ de "orma decresce*te(
O procedime*to a ser e9ec$tado de8er' ser#
a< Ler a matri%
-< Adicio*ar se$s dados a $m 8etor
c< Orde*ar o 8etor
d< De8ol8er os dados para a matri%(
&&( 1aa $m algoritmo 7$e orde*e de "orma cresce*te ape*as os 8alores pares de $ma
matri% i*teira 090Q se*do 7$e os 8alores 5mpares *o de8em ser deslocados(
Pro"essor# Ed$ardo Re$s So$%a 0?
Apostila de Lgica de Programao
Aula 24
Introduo a %rogramao ,odular
1>. 6ntroduo
O co*ceito de programao mod$lar co*siste *o dese*8ol8ime*to de roti*as de tal
"orma 7$e seHa permitido o se$ reapro8eitame*to(
1>.1. Por )ue <tili7ar Programao 3odular$
Cm algoritmo 7$e impleme*ta programao mod$lar poss$i i*Vmeras 8a*tage*s(
De*tre as 7$ais se destacam#
O cdigo "o*te dimi*$i drasticame*te de tama*4o
A ma*$te*o do cdigo "o*te "ica simpli"icada
Cma poss58el m$da*a de plata"orma pode ser me*os tra$m'tica ;porta-ilidade<
Exemplo
Imagi*e 7$e estamos dese*8ol8e*do $m so"tGare com $ma gama de c'lc$los
assom-rosa( O 7$e aco*teceria se $ma "rm$la m$ito com$m em todo o programa te*4a
sido passada errada para o programador3 A resposta > simplesQ reescre8er a "rm$la em
todos os l$gares em 7$e a mesma se e*co*tra( Esse tra-al4o pode le8ar 4orasQ
depe*de*do do tama*4o do cdigo(
Se $tili%armos o co*ceito de programao mod$larQ a alterao precisar' ser "eita em
ape*as $m l$gar( Se*do 7$e todo o programa ir' se at$ali%ar a$tomaticame*te(
1>.2. Como 6mlementar Programao 3odular$
Programao mod$lar de*tro da li*g$agem C > "eita $tili%a*do o 7$e c4amamos de
,un1Pes(
1>.2.1. Funes
1$*+es so -locos de algoritmo 7$e de8em poss$ir $ma assi*at$ra e 7$e ao "i*al
de s$a e9ec$oQ de8em retor*ar alg$m 8alor de resposta(
1>.2.2. Assinatura
Co*H$*to "ormado pelo *omeQ lista de arg$me*tos ;7$a*do *ecess'rios< e tipo de
dado de sa5da(
1>.2.3. Argumento
So todas as i*"orma+es 7$e de8em ser e*8iadas pelo $s$'rio da "$*oQ para 7$e
esta possa ser e9ec$tada de "orma correta(
1>.2.4. ParNmetro
So as i*"orma+es 7$e sero passadas para os arg$me*tos das "$*+es pelo
programa pri*cipal ;$s$'rio<(
1>.3. ./emlo Pr1tico
Ctili%a*do os co*ceitos de programao mod$lar( 1aremos $m algoritmo 7$e retor*e o
maior 8alor e*tre dois 8alores i*teiros(
Pro"essor# Ed$ardo Re$s So$%a 0&
Apostila de Lgica de Programao
`i*cl$de cstdio(4d
DDriao da !uno
i*t e*co*tra^maior;i*t aQ i*t -<
a
i" ;a d -<
a
ret$r* ae
b
else
a
ret$r* -e
b
b
DD"rograma "rincipal
i*t mai*;<
a
i*t 8&Q 8,Q maiore
pri*t" ;jDigite o primeiro 8alor# j<e
sca*" ;jYdjQ K8&<e
pri*t" ;jDigite o seg$*do 8alor# j<e
sca*" ;jYdjQ K8,<e
maior X e*co*tra^maior;8&Q8,<e
pri*t" ;jO maior 8alor ># Yd p*jQ maior<e
sZstem;jPACSEj<e
ret$r* ?e
b
Explicando o c#digo
int encontraQmaior)int a, int 3* Assi*at$ra da "$*o( Est' se*do i*"ormado 7$e
e9iste $ma "$*o c4amada \e*co*tra^maior]
7$e rece-e dois 8alores i*teiros como arg$me*tos
;a e -< e de8ol8e $m 8alor i*teiro *o "i*al
return U a i*str$o 7$e "ar' com 7$e a de8ol$o do
8alor seHa "eita( Ao caso de \a] ser o maior 8alor
ser' retor*ado \a]Q caso co*tr'rio a "$*o
de8ol8er' \-](
maior 9 encontraQmaior).1, .2* C4amada da "$*o( U "eita a c4amada da "$*o
\e*co*tra^maior] de modo 7$e o co*teVdo dos
parPmetros \8&] e \8,] seHam e*8iados para os
arg$me*tos \a] e \-] e o retor*o da "$*o ser'
depositado *a 8ari'8el \maior]
Repare 7$e em *e*4$m mome*to > "eita a leit$ra dos 8alores dos arg$me*tos de*tro da
"$*o( A leit$ra dos dados de.e ser ,eita nos parRmetrosQ de modo 7$e a "$*o se
tor*e o mais i*depe*de*te poss58el( E9ceto em "$*+es espec5"icas para capt$ra de
dados do $s$'rio(
Apesar de "$*cio*alQ o e9emplo acima poderia ser "acilme*te dese*8ol8ido sem a
$tili%ao de programao mod$lar( Se*do assimQ s$a $tilidade *esta 7$esto > posta em
9e7$e(
Pro"essor# Ed$ardo Re$s So$%a 0,
Apostila de Lgica de Programao
Por>mQ este tipo de a-ordagem mostra se$ 8erdadeiro 8alor com o decorrer do tempo(
SeQ por e9emploQ "osse *ecess'rio agora 7$e a leit$ra a ser "eita seHa de trBs 8alores
i*teiros( O$al seria s$a sol$o3 Reescre8er a "$*o de modo 7$e e*co*tre o maior
8alor e*tre trBs parPmetros3(
Preste ate*o *o e9emplo a-ai9oQ ai*da $tili%a*do a "$*o \e*co*tra^maior]#
i*t mai*;<
a
i*t 8&Q 8,Q 8.Q maiore
pri*t" ;jDigite o primeiro 8alor# j<e
sca*" ;jYdjQ K8&<e
pri*t" ;jDigite o seg$*do 8alor# j<e
sca*" ;jYdjQ K8,<e
pri*t" ;jDigite o terceiro 8alor# j<e
sca*" ;jYdjQ K8.<e
maior 9 encontraQmaior)encontraQmaior).1,.2*,.3*8
pri*t" ;jO maior 8alor ># Yd p*jQ maior<e
sZstem;jPACSEj<e
ret$r* ?e
b
Com este m>todoQ "oi poss58el reapro8eitar o cdigo da "$*o a*terior de modo 7$e
e*co*tramos o maior 8alor e*tre as 8ari'8eis \8&] e \8,] e comparamos este 8alor com
\8.] em $ma seg$*da c4amada da "$*o(
Se*do assimQ a "$*o origi*al *o preciso$ so"rer *e*4$ma alterao *a s$a estr$t$ra(
Podemos ac4ar o maior 8alor e*tre 7$al7$er gr$po de 8alores $tili%a*do a "$*o
\e*co*tra^maior] "a%e*do altera+es ape*as *o programa pri*cipal(
Aada impede tam->mQ 7$e "aamos mais de $ma "$*o de*tro de $m cdigo( I*cl$si8e
de modo 7$e $ma "$*o c4ame o$tra 7$e esteHa dese*8ol8ida acima(
1>.4. .scoo das 0ari1*eis K 6nstanciamento de 0ari1*eis
Tra-al4a*do com mVltiplas "$*+es em $m cdigoQ > m$ito com$m de termos em 8'rios
po*tos do programa 8ari'8eis com $tili%a+es totalme*te di"ere*tes por>m com o
mesmo *ome(
:ari'8eis declaradas de*tro de $ma "$*oQ poss$em 8alidade ape*as de*tro desta
"$*o( Permiti*do assim 7$e se$ *ome seHa repetido em o$tras "$*+es( Estas 8ari'8eis
tam->m so co*4ecidas como 8ari'8eis locais(
E9istem tam->mQ 8ari'8eis 7$e podem ter 8alidade de*tro de todo o *osso proHeto
;se*do 8is$ali%adas por todas as "$*+es<( Estas so de*omi*adas como 8ari'8eis
Slo3ais(
Esta \'rea de 8alidade] > o escopo de $ma 8ari'8el(
Pro"essor# Ed$ardo Re$s So$%a 0.
Apostila de Lgica de Programao
1>.5. ./erc'cios Proostos
&( 1aa $m algoritmo 7$e leia . 8alores reais( Crie $ma "$*o 7$e retor*e a m>dia
e*tre estes 8alores(
,( 1aa $m algoritmo 7$e leia dois 8alores i*teiros e retor*a o triplo do maior 8alor(
.( 1aa $m algoritmo 7$e rece-e o cdigo de $m prod$to e retor*a ;atra8>s de $ma
"$*o< o *ome do mesmo de acordo com a ta-ela a-ai9o#
Cdigo Prod$to
& Sa*d$5c4e de Pres$*to
, S$co de Tamari*do
. Pastel de :e*to
/ Po com margari*a
/( 1aa $m algoritmo 7$e lB diaQ mBs e a*o 8i*dos do $s$'rio( Crie $ma "$*o 7$e
retor*e se estes 8alores "ormam $ma data 8'lida o$ *o(
0( 1aa $m algoritmo 7$e lB $m *Vmero i*teiro e 7$e c4ame $ma "$*o 7$e retor*e o
se$ "atorial(
Pro"essor# Ed$ardo Re$s So$%a 0/
Apostila de Lgica de Programao
Aula 25
"ontinua12o dos Exerccios
)( 1aa $m algoritmo 7$e poss$a 0 "$*+es
a< Cma 7$e calc$le a soma e*tre dois 8alores reais
-< Cma 7$e calc$le a m$ltiplicao e*tre dois 8alores reais
c< Cma 7$e calc$le a s$-trao e*tre dois 8alores reais
d< Cma 7$e calc$le a di8iso e*tre dois 8alores reais
e< Cma 7$e de acordo com $m cdigo "or*ecido pelo $s$'rio c4ama as "$*+es
acima co*"orme a ta-ela a-ai9o#
Cdigo Ao
& Adio
, M$ltiplicao
. S$-trao
/ Di8iso
Crie $m programa pri*cipal 7$e de8e ape*as ler o cdigo da operao e dois 8alores
reais e e9i-a o res$ltado da operao(
1>.!. Passagem de ParNmetros or 0alor e "e+er:ncia
Como dito a*teriorme*teQ 7$a*do c4amamos $ma "$*oQ o co*teVdo e9iste*te *os
parPmetros so e*8iados para os arg$me*tos da "$*o para o se$ tratame*to( Este
processo c4amaEse Passagem de ParRmetrosQ se*do 7$e este tipo de passagem pode
ser "eita de d$as "ormas#
Por .alor ou c#pia: O co*teVdo dos arg$me*tos e parPmetros so
i*depe*de*tes( O$ seHaQ a alterao do co*teVdo do arg$me*to *o i*"l$e*cia *o
co*teVdo do parPmetro(
Por re,erJncia: O co*teVdo dos arg$me*tos e parPmetros so i*terligadosQ o$
seHaQ compartil4am o mesmo e*dereo de memria( Se*do assimQ a alterao de
$m arg$me*to i*"l$e*cia diretame*te *o co*teVdo de se$ parPmetro
correspo*de*te(
Aa li*g$agem CQ a passagem de parPmetros *o est' -em de"i*idaQ se*do "eita atra8>s
da $tili%ao de po*teiros(
%a linguagem ", sempre Eue passamos um .etor ou matri0 como parRmetro, este
passado por ?re,erJncia@.
Pro"essor# Ed$ardo Re$s So$%a 00
Apostila de Lgica de Programao
1>.#. ./emlo Pr1tico
Para mel4or e*te*dermos a passagem por parPmetros por 8alor e re"erB*ciaQ "aamos
como e9emplo $m programa 7$e i*8erte o co*teVdo e*tre d$as 8ari'8eis i*teiras(
A "$*o desta 8e% *o ir' de8ol8er $m 8alor o"icialme*teQ mas como de8emos sempre
i*"ormar $m tipo de dado de sa5daQ $tili%aremos o tipo de dado .oid(
1orma EAAD!D de dese*8ol8ime*to
`i*cl$de cstdio(4d
8oid i*8erte;i*t aQ i*t -<
a
i*t a$9e
a$9 X ae
a X -e
- X a$9e
b
i*t mai*;<
a
i*t aQ-e
pri*t" ;jDigite o primeiro 8alor# j<e
sca*";jYdjQ Ka<e
pri*t" ;jDigite o seg$*do 8alor# j<e
sca*";jYdjQ K-<e
i*8erte ;aQ -<e
pri*t" ;jO *o8o 8alor de A ># Ydp*jQ a<e
pri*t" ;jO *o8o 8alor de @ ># Ydp*jQ -<e
sZstem;jPACSEj<e
ret$r* ?e
b
A "$*o ape*as i*8erte os 8aloresQ *o 4' a *ecessidade de $tili%armos a i*str$o
\ret$r*] H$stame*te por ser de retor*o 8oid(
Ao testarmos o programaQ 8eremos 7$e o cdigo "o*te acima apesar de compilar *o
resol8e *osso pro-lemaQ pois as 8ari'8eis *o m$daram de 8alor(
Isso aco*tece por 7$e a passagem de parPmetros *a li*g$agem C > em s$a gra*de
maioria passada por 8alor(
Para sol$cio*ar o pro-lema acimaQ de8emos "a%er alg$mas modi"ica+es *o cdigoQ
para "orar a passagem de parPmetros por re"erB*cia(
Pro"essor# Ed$ardo Re$s So$%a 0)
Apostila de Lgica de Programao
1orma "'AAETD de dese*8ol8ime*to
`i*cl$de cstdio(4d
8oid i*8erte;i*t gaQ i*t g-<
a
i*t a$9e
a$9 X gae
ga X g-e
g- X a$9e
b
i*t mai*;<
a
i*t aQ-e
pri*t" ;jDigite o primeiro 8alor# j<e
sca*";jYdjQ Ka<e
pri*t" ;jDigite o seg$*do 8alor# j<e
sca*";jYdjQ K-<e
i*8erte ;KaQ K-<e
pri*t" ;jO *o8o 8alor de A ># Ydp*jQ a<e
pri*t" ;jO *o8o 8alor de @ ># Ydp*jQ -<e
sZstem;jPACSEj<e
ret$r* ?e
b
Explicando o c#digo
Aa "$*o a V*ica di"ere*a > 7$e *ossos arg$me*tos de8em ser precedidos pelo
operador \g]Q assim estamos *os re"ere*cia*do diretame*te ao e*dereo do arg$me*to
*a memria(
Ao programa pri*cipalQ os parPmetros de8em ser precedidos pelo operador \K] para
7$e seHa passado para o arg$me*to a posio da 8ari'8el *a memria em 8e% do se$
co*teVdo propriame*te dito(
1>.-. ./erc'cios Proostos
2( 1aa $m algoritmo 7$e leia trBs 8alores reais e 7$e poss$a $ma "$*o 7$e de8ol8a
os 8alores de 9k e 9] de acordo com a "rm$la a-ai9o( Ao caso de erroQ de8ol8er
%ero(
a
c a b b
x x
g ,
g g /
j Q l
,

=
6( 1aa $m algoritmo 7$e leia dois 8alores reais e poss$a uma "$*o 7$e retor*a o
do-ro do maior 8alor e a metade do me*or(
Pro"essor# Ed$ardo Re$s So$%a 02
Apostila de Lgica de Programao
Aula 2!
.ratando Vetores Atrav/s de 0un&es
Para tratarmos 8etores ;o$ 7$al7$er estr$t$ra de dados< de $ma "orma e"icie*te e
orga*i%adaQ > aco*sel4'8el 7$e $tili%emos "$*+es de ma*ip$lao para estes dados(
1aremos agora $m e9emplo pr'tico impleme*ta*do a ma*ip$lao de $m 8etor de modo
7$e seHam "eitas as 7$atro opera+es -'sicas para $m sistema(
I*sero
Alterao
E9cl$so
Pes7$isa
Este proHeto de8e ser -em pla*eHadoQ para 7$e se$ dese*8ol8ime*to seHa de "'cil
compree*so( Se*do assimQ iremos tra-al4ar passo a passo o cdigo "o*te(
Pro"essor# Ed$ardo Re$s So$%a 06

Você também pode gostar