Noes de Lg|ca A lglca LraLa da correo do pensamenLo. Como losoa, ela busca saber por que se pensa de uma forma e no de ouLra. 1ambem pode se dlzer que a lglca e a arLe de pensar correLamenLe, vlsLo que a forma mals complexa do pensamenLo e o racloclnlo, pode se dlzer que: a lglca Lem em vlsLa a correo do racloclnlo, a lglca Lem em vlsLa a ordem da razo. Conslderando a posslbllldade de que a razo pode funclonar desordenadamenLe, a lglca enslna a por em ordem no pensamenLo. !oo ablo 04. lnLroduo aos AlgorlLmos 2 Lg|ca no D|a-a-D|a Sempre que alguem pensa, esLe alguem necessarlamenLe esL acompanhado pela lglca. CuLra manlfesLao da lglca esL na fala e na escrlLa, pols ambos so represenLaes do pensamenLo humano. Alguns exemplos de proposles lglcas: ! #$%&'$ &(') *&+,$-$. ! /$0$ &(') 1$ #$%&'$. 2 34&+5(6 3457&546 $/454 $ #$%&'$8 3$4$ -&365( 3&#$4 $ /$0$. 96:6 ; 7$5( %&0,6 <=& 96(;. 96(; ; 7$5( %&0,6 <=& >&-46. ?6#68 96:6 ; 7$5( %&0,6 <=& >&-46. 96:68 96(; & >&-46 764$7 @=1'6(. 96:6 & 96(; 1:6 <=&/4$4$7 6 %$(6 -& 364+&0$1$. A=&7 <=&/46= 6 %$(6B !oo ablo 04. lnLroduo aos AlgorlLmos 3 A|gor|tm|zao da Lg|ca A consLruo de algorlLmos e o ob[euvo fundamenLal de Loda a programao de compuLadores, podendo ser denldo como uma sequncla de passos que vlsam aunglr um ob[euvo bem denldo. Crdem de ensamenLo e, porLanLo, Lglca. AlgorlLmos so relauvamenLe comuns no coudlano das pessoas, por exemplo: C7$ 4&+&5'$ -& /606 -&(+4&%& 6( 51#4&-5&1'&( & =7$ (&<=D1+5$ -& 3$((6( 3$4$ <=& (& +61(5#$ *$E&4 6 /606. C7 7$3$ $34&(&1'$ =7$ (&<=D1+5$ -& 76%57&1'6( 1&+&(()456( 3$4$ (& +,&#$4 $6 -&(F16. !oo ablo 04. lnLroduo aos AlgorlLmos 4 Conce|tos Comp|ementares uma ao e um aconLeclmenLo que a parur de um esLado lnlclal, aps um perlodo de Lempo nlLo, produz um esLado nal prevlslvel e bem denldo. um esLado e a slLuao aLual do ob[eLo. uesLa forma, algorlLmos pode ser redenldo como a descrlo de um con[unLo de aes que, obedecldas, resulLam numa sucesso nlLa de passos, aunglndo um ob[euvo. vla de regra, um algorlLmo desuna-se a resolver um problema. llxa um padro de comporLamenLo a ser seguldo, com vlsLas a alcanar, como resulLado, a soluo do problema. !oo ablo 04. lnLroduo aos AlgorlLmos 3 adro de Comportamento Cbserve a segulnLe sequncla numerlca: 0, 1, 1, 2, 3, 3, 8, 13, 21,... Cual e o declmo elemenLo? ara soluclonar o problema, preclsa-se ldenucar a regra de formao enLre os numeros, ou se[a, o seu padro de comporLamenLo. uma vez denldo o padro de comporLamenLo e posslvel calcular o declmo elemenLo e qualquer ouLro elemenLo dese[ado. !oo ablo 04. lnLroduo aos AlgorlLmos 6 Sequenc|ao em A|gor|tmos Suponha a necessldade de descrever como se Lroca uma lmpada. 1al procedlmenLo levarla a segulnLe sequncla de passos. Sequenclao e uma conveno que ob[euva reger o uxo de execuo, denlndo qual ao vem a segulr. 1al uxo esLabelece uma ordem sequenclal de execuo, Lambem chamada de esLruLura sequenclal. !oo ablo 04. lnLroduo aos AlgorlLmos 7 Passo 01: pegue uma escada; Passo 02: posicione-a embaixo da lmpada; Passo 03: busque uma lmpada nova; Passo 04: suba na escada; Passo 05: retire a lmpada velha; Passo 06: coloque a lmpada nova. Se|eo em A|gor|tmos (1) Suponha agora um renamenLo para o problema da Lroca de lmpada. A lmpada s deve ser Lrocada se esuver quelmada. no algorlLmo anLerlor esLa slLuao no esL prevlsLa, logo, a lmpada serla Lrocada mesmo que esuvesse em boas condles. !oo ablo 04. lnLroduo aos AlgorlLmos 8 Passo 01: ligue o interruptor; Passo 02: se a lmpada no acender, ento: Passo 03: pegue uma escada; Passo 04: posicione-a embaixo da lmpada; Passo 05: busque uma lmpada nova; Passo 06: suba na escada; Passo 07: retire a lmpada velha; Passo 08: coloque a lmpada nova. Se|eo em A|gor|tmos (2) C algorlLmo renado lnclulu uma seleo, baseada em uma condlo, a qual deLermlna se as aes subsequenLes sero ou no execuLadas. LsLe LesLe condlclonal que permlLe ou no que o uxo de execuo passe por um deLermlnado con[unLo de aes e Lambem chamado de esLruLura de seleo. Ao lnclulr uma esLruLura de seleo em um algorlLmo deve-se observar: qual o ponLo umo para reallzao da seleo, asslm evlLa-se aes desnecessrlas, qual as condles cerLa para LesLar, evlLando que ocorra algum desvlo lndese[ado no uxo de execuo. !oo ablo 04. lnLroduo aos AlgorlLmos 9 kepeno em A|gor|tmos (1) Segulndo a ldela de renar o problema da Lroca de lmpadas, suponha que se[a necessrlo revlsar e Lrocar as lmpadas de uma casa Loda. novamenLe o algorlLmo no aLende lnLegralmenLe, pols ele descreve a Lroca de uma lmpada e no a Lroca de vrlas lmpadas. Sabe-se que os passos para Lroca de lmpadas so sempre os mesmos, logo, uma alLernauva serla repeur o uxo de execuo LanLas vezes quanLas fossem as lmpadas exlsLenLes na casa. Agora consldera que no e posslvel saber a quanudade de lmpadas da casa. Como resolver o problema? !oo ablo 04. lnLroduo aos AlgorlLmos 10 kepeno em A|gor|tmos (2) Cbserve que o prlmelro passo do algorlLmo dene um bloco de repeuo, o qual lmpe que o uxo subsequenLe se[a reexecuLado aLe o LesLe falhar. A capacldade de fazer com que um Lrecho do uxo de aes se[a execuLado dlversas vezes Lambem e chamado de esLruLura de repeuo. !oo ablo 04. lnLroduo aos AlgorlLmos 11 Passo 01: enquanto existir lmpadas no verificadas, faa: Passo 02: ligue o interruptor; Passo 03: se a lmpada no acender, ento: Passo 04: pegue uma escada; Passo 05: posicione-a embaixo da lmpada; Passo 06: busque uma lmpada nova; Passo 07: suba na escada; Passo 08: retire a lmpada velha; Passo 09: coloque a lmpada nova. kepeno em A|gor|tmos (3) As repeues podem Ler formas dlferencladas: G&('& 16 H1I+56, prlmelro se LesLa e depols se execuLa o uxo. G&('& 16 J57, prlmelro se execuLa o uxo e depols se LesLa a condlo de repeuo. H'&4$KL&( M&N15-$(, no h LesLes e o uxo e repeudo um numero de vezes denldo a prlorl. Ao uullzar repeues deve-se observar: qual a forma de repeuo mals lnLeressanLe para o problema, quals aes devem car denLro e quals devem car fora da repeuo. !oo ablo 04. lnLroduo aos AlgorlLmos 12 Aspectos Importantes (1) Comp|ex|dade A complexldade pode ser encarada com slnnlmo de varledade. A varledade represenLa uma quanudade de slLuaes dlferenLes que um problema pode apresenLar. ara cada slLuao deve se Ler uma soluo prevlsLa. Invesngao uma das malores responsvels pelo aumenLo da complexldade e a forma errnea de lnvesugar um problema. ueve-se sempre buscar resposLas ob[euvas e dlreLas sobre as slLuaes envolvldas no problema. !oo ablo 04. lnLroduo aos AlgorlLmos 13 Aspectos Importantes (2) Leg|b|||dade Mede a capacldade de compreenso do algorlLmo por qualquer observador. LsL relaclonado com a clareza com que sua lglca esL exposLa. ortab|||dade LxlsLem uma grande varledade de llnguagens de programao, cada um com suas caracLerlsucas. AlgorlLmos so por denlo porLvels, ou se[a, as solues esLabelecldas no dependem de Lecnologla. CosLuma-se usar uma llnguagem de absLrao chamado seudocdlgo. !oo ablo 04. lnLroduo aos AlgorlLmos 14 rocesso para Construo de A|gor|tmos (1) asso 1: ?&4 $'&1'$7&1'& 6 &1=1+5$-6. L [usLamenLe o enunclado do problema que fornece o encamlnhamenLo necessrlo para a resoluo do problema. asso 2: O&F4$4 -6 &1=1+5$-6 $( &1'4$-$( -& -$-6(. Ao explorar o enunclado se pode descobrlr quals os dados devem ser fornecldos, a parur dos quals a soluo e encamlnhada. asso 3: O&F4$4 -6 &1=1+5$-6 $( ($I-$( -& -$-6(. Ao explorar o enunclado se pode descobrlr quals os dados devem ser emludos para compor um resulLado nal, o ob[euvo do algorlLmo. !oo ablo 04. lnLroduo aos AlgorlLmos 13 rocesso para Construo de A|gor|tmos (2) asso 4: M&'&4751$4 6 <=& -&%& (&4 *&5'6 3$4$ '4$1(*647$4 &1'4$-$( &7 ($I-$(. nesLe passo se d a consLruo do algorlLmo proprlamenLe dlLo. A parur dos requlslLos ldenucados, faz-se necessrlo esLabelecer a sequncla de aes necessrlas para resolver o problema. Como ferramenLa auxlllar se pode usar um dos segulnLes meLodos: MeLodo CarLeslano, Lngenharla 8eversa, 1abela de ueclso. !oo ablo 04. lnLroduo aos AlgorlLmos 16 rocesso para Construo de A|gor|tmos (3) asso 3: P61('4=54 6 $0#645'76. Com base no conheclmenLo adqulrldo sobre o problema e as alLernauvas de soluo levanLadas para esLe, pode- se escrever o algorlLmo. asso 6: QR&+='$4 6 $0#645'76. lmpllca em execuLar Lodas as aes descrlLas segulndo o uxo esLabelecldo no algorlLmo. A cada lnsLruo, as aes e os resulLados so verlcados, garanundo o correLo funclonamenLo. Cuando so ldenucados erros nos resulLados, a soluo deve ser redenlda. LsLa auvldade Lambem e chamada de 1esLe de Mesa. !oo ablo 04. lnLroduo aos AlgorlLmos 17 Mtodo Cartes|ano C meLodo carLeslano e baseado no prlnclplo da dlvlso e conqulsLa. LsLe meLodo conslsLe em aLacar um problema complexo, dlvldlndo-o em problemas menores, logo, mals fcels de resolver. assos do meLodo: asso 1: -5%5-54 6 346/0&7$ &7 (=$( 3$4'&( 3451+53$5(S asso 2: $1$05($4 $ -5%5(:6 3$4$ #$4$1F4 +6&4D1+5$S asso 3: (& $0#=7$ 3$4'& 1:6 *64 /&7 +6734&&1-5$8 $305+$4 6 7;'6-6 1$ 3$4'&S asso 4: $1$05($4 6 6/@&'6 3$4$ #$4$1F4 &1'&1-57&1'6 & +6&4D1+5$. !oo ablo 04. lnLroduo aos AlgorlLmos 18 Lngenhar|a keversa rocesso mulLo uullzado na rea Lecnlca. ossul a nalldade de deLermlnar o maLerlal de consLruo e a sequncla de monLagem a parur do produLo dese[ado. C produLo exlsLe e e desmonLado aLe chegar nos seus componenLes mals bslcos. no caso dos algorlLmos o produLo e o resulLado, em ouLras palavras, as lnformaes de salda. A parur do resulLado pode-se deLermlnar reversamenLe os dados de enLradas, bem como as eLapas de Lransformao desLes dados. !oo ablo 04. lnLroduo aos AlgorlLmos 19 1abe|as de Dec|so Cb[euva baslcamenLe relaclonar as aes que dependem de alguma condlo com as prprlas condles. uesLa forma se pode esclarecer e vlsuallzar facllmenLe quals valores o con[unLo de condles deve assumlr para que se efeLue sua respecuva ao. Sua apllcao se d prlnclpalmenLe na consLruo das segulnLes esLruLuras: seleo, repeuo com LesLe no lnlclo, repeuo com LesLe no m. !oo ablo 04. lnLroduo aos AlgorlLmos 20