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