Você está na página 1de 27

BC0501 Linguagens de Programao - 2008t2 Aula 10

Algoritmos Desvio Condicional

Prof. Alysson Ferrari alysson.ferrari @ ufabc.edu.br http://fma.if.usp.br/~alysson

baseadoemmaterialelaboradopor: MarceloZanchettadoNascimento, RodrigoP.Ramos,AlineNeves

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS: CONCEITOS

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS
Muitojseimaginousobrea possibilidadedecomputadores inteligentes....

HAL9000,computadorinteligentedo clssico2001,UmaOdissianoEspao

Athoje,contudo,todososcomputadores criadosso,narealidade...burros! Computadores(porenquanto)notm criatividade,notmidiasprprias...notm aquiloquerealmentechamaramosde inteligncia.

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS
MAS... computadoressoburros muitoprestativos! Soincrivelmenterpidos,com umapacinciainfinitaeumamemriainfalvel... Umcomputadorfazexatamenteoquevocpedir,quantasvezesvoc ordenar,semnuncaesquecerdenemumdetalhe!Etudoissomuito rapidamente. Aartedaprogramaoestemcombinaraintelignciahumana(do programador)comaburriceincrivelmenterpidaeeficientedo computador...

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS
Paraocomputadorresolverumproblema,vocprecisadeum ALGORITMO.

ALGORITMOumaseqnciafinitadeinstrues que,executadasumaauma,levasoluode umdeterminadoproblema. Umalgoritmomuitasvezescomparadocom umaRECEITA,passoapasso,parafazeralgo...

BC0501 Linguagens de Programao - 2008/01

UMARECEITA...

Ingredientes: DADOSDEENTRADA... 5ovos 250gramasdemargarinacremosa 2xcaras(ch)deacar 1xcara(ch)defarinhadetrigo 1xcara(ch)dechocolate 200gramasdeccoralado 1copodeleite 1colher(sopa)defermento

BC0501 Linguagens de Programao - 2008/01

UMARECEITA...

MododePreparo:

Bataamargarina,asgemaseoacaratficar cremoso Junteoleite,occoeafarinhaecontinue batendo Acrescenteofermentoe,porltimo,asclarasem neve Unteumaformacommanteigaeleveaoforno paraassar

PROCESSAMENTO

BC0501 Linguagens de Programao - 2008/01

UMARECEITA...
SADA

BC0501 Linguagens de Programao - 2008/01

UMARECEITA...

MAS...

bataonde? comoqu?

Bataamargarina,asgemaseoacaratficar juntarcomoqu? cremoso Junteoleite,occoeafarinhaecontinue acrescentaraoqu? batendo Acrescenteofermentoe,porltimo,asclarasem neve Unteumaformacommanteigaeleveaoforno paraassar

BC0501 Linguagens de Programao - 2008/01

UMARECEITA...

MAS...

bataonde? comoqu?

Bataamargarina,asgemaseoacaratficar juntarcomoqu? cremoso Junteoleite,occoeafarinhaecontinue acrescentaraoqu? batendo

Comoocomputadorumamquina,ele precisadeumareceitamuitobem Acrescenteofermentoe,por ltimo,asclarasem explicada,nosseusmnimosdetalhes.jnoacabou? neve Elenotemintelignciaparalidarcom nenhumasituaoimprevista,etambm Unteumaformacommanteigaeleveaoforno paraassar novaisubentendernenhumdetalheque nosejaexplicitamentedeclarado.

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS

Umalgoritmopararealizaratrocadeuma lmpada Pegar uma escada Posicionar a escada embaixo da lmpada Buscar uma lmpada nova Subir na escada Retirar a lmpada velha Colocar a lmpada nova

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS

Esealmpadanoestiverqueimada?
1. Acionar o interruptor 2. Se a lmpada no acender, ento Pegar uma escada Posicionar a escada embaixo da lmpada Buscar uma lmpada nova Subir na escada Umalgoritmodeveprevertodootipo Retirar a lmpada queimada desituaoimprevista... Colocar a lmpada nova
esenohouver lmpadano estoque?

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS
Algoritmosdevemsercompostosporaessimpleseprecisas. Somardoisnmerosumpossvelpassodeumalgoritmo, guardarumarquivonolugarondeeuvmelembrardepoisno nemsimples,nempreciso.... Umalgoritmodevelevaremcontatodospossveisimprevistos. Umasituaoinesperadageralmentelevaafalhasnaexecuodo programaou,piorainda,emresultadoserradossemalerta...

BC0501 Linguagens de Programao - 2008/01

SOLUODEPROBLEMAS
Porisso,antesquemaisnada,umcientistadacomputao deveterbemdesenvolvidaahabilidadedesoluode problemas; Ouseja,precisotreinarahabilidadedeformular corretamentequestes,pensarcriativamentesobresolues possveiseexpressarumasoluodeformaclaraeprecisa; Aprender a programar uma excelente oportunidade de praticarashabilidadesdasoluodeproblemas.

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS Emresumo:

Sevocnosaberesolverumproblema, noocomputadorquevaiensinarparavoc!
Vocgeralmenteprecisaestudaremprofundidadeoproblema quequerresolver,paraentenderasoluoetraduzilanaforma deumalgoritmoquepossaserexecutadopelocomputador... Nesteprocesso,amodelagemeaprogramaoorientadaa objetosajudamaorganizaroproblemaequebrloempartes maissimples...

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS
EXEMPLO GERENTE
+investe(doublevalor) ....

public class Gerente { // ... public void investe(double valor) { // aqui vai o algoritmo // para a execuo da ao! } } se (valor > saldoCC) retira valor da CC aplica valor no fundo seno avisa investidor fim

Considereumaclasse Gerentedeumbanco,que contmummtodopara investirumcertovalorque estnumacontacorrente emumfundode investimento...

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS
Podehavervriosalgoritmospararesolver ummesmoproblemasimplesmenteporque podehavervriassoluesdiferentesparao mesmoproblema. Nemtodososalgoritmosso igualmentebons. Umalgoritmotomelhor(maiseficiente) quantomaissimples, maisrpido,menospropensoafalhase situaesimprevistaselefor... Aproduodeumalgoritmoeficienteexige,almdecriatividade ecapacidadederesoluodeproblemas,muitoconhecimentoe experincia.

BC0501 Linguagens de Programao - 2008/01

ALGORITMOPASSOSPARACONSTRUO

Identificaroproblema(objetivo) medianteleituraatentadeseu enunciado(entendimento) Identificarnoenunciadoosdadosa seremfornecidosparaoalgoritmo(entradade dados) Identificarosresultadosquedevemser geradosnasoluo(sadadedados) Determinaroquedeveserfeitopara transformarasentradasnassadasdesejadas (processamento)

BC0501 Linguagens de Programao - 2008/01

ALGORITMOSExerccio
Escrevaumalgoritmoparasomardoisnmerosquaisquer

1. 2. 3. 4.

Leia o Leia o Some X Mostre

nmero X nmero Y e Y o resultado da soma

Entrada

Processamento

Sada

Nmero X Nmero Y

Somar X e Y

Resultado da soma

BC0501 Linguagens de Programao - 2008/01

ALGORITMOS
Aconstruesdealgoritmosbaseadaem: Instrues ou Comandos: frases que indicam as aes a seremexecutadas.Porexemplo: Some(Somar)doisnmeros
Imprima(Imprimir)resultadodasoma

Tomadas de deciso: compara dois valores, ou testa uma condio, e toma uma ao dependendo do resultado do teste/comparao... Estruturas de Repetio: repete certos comandos um determinadonmerodevezes.

BC0501 Linguagens de Programao - 2008/01

TOMADAS DE DECISO: O DESVIO CONDICIONAL

BC0501 Linguagens de Programao - 2008/01

ODESVIOCONDICIONAL Umdesviocondicional usadoparadecidirseumconjunto deinstruesdeve,ouno,serrealizado.... Ouseja,permitequeocomputadortomedecises!

verdadeiro media>=7 falso ImprimirAprovado

BC0501 Linguagens de Programao - 2008/01

ODESVIOCONDICIONAL No desvio condicional simples uma condio avaliada e, se o resultado for verdadeiro, um conjunto de instrues executado
Java if (<condio>) { <instrues>; } Java if (<condio>) <instruo>;

BC0501 Linguagens de Programao - 2008/01

ODESVIOCONDICIONAL

Exemplo:Seamdiadasnotasdoalunoformaiorou iguala7,imprimirAprovado
if ( media >= 7.0 ) System.out.println(Aprovado );
verdadeiro media>=7 Imprimir Aprovado

falso

BC0501 Linguagens de Programao - 2008/01

ODESVIOCONDICIONAL

Um desvio condicional tambm usado para executar uma ao ou outra, dependendo de uma condioaseravaliada...

verdadeiro Media>=7 ImprimirAprovado

falso ImprimirReprovado

BC0501 Linguagens de Programao - 2008/01

ODESVIOCONDICIONAL

Java if (<condio>) { <instrues>; } else { <instrues>; } Java if (<condio>) <instruo>; else <instruo>;

BC0501 Linguagens de Programao - 2008/01

ODESVIOCONDICIONAL

Exemplo:Seamdiadasnotasdoalunoformaiorou igual a 7, imprimir Aprovado, seno, imprimir Reprovado


if ( media >= 7.0 ) System.out.println(Aprovado ); else System.out.println(Reprovado ); Paracriarcondies, precisamosusar operadores