sexta-feira, 16 de maio de 2014

Tomada de decisão e Repetição

Introdução

Neste artigo iremos abordar o uso das estruturas de seleção e repetição, suas propriedades e aplicações em exemplos de código em Java.
As estruturas de seleção são essenciais para criar tomadas de decisão em nossos algoritmos, com essa ferramenta em mãos podemos verificar se uma afirmação é verdadeira ou falsa e agir de acordo.
As estruturas de repetição são responsáveis pela repetição de blocos de comando. Elas repetem os blocos por quantas vezes desejarmos e cada um dos tipos de estrutura possui um modo próprio de parar a repetição.

Acompanhe mais detalhes nos tópicos abaixo:

Blocos de comando

  • São grupos de comandos que devem ser tratados como uma unidade lógica.
  • O início de um bloco em Java é marcado por um “{“e o término por um”}”.
  • Serve para criar um grupo de comandos que devem ser executados juntos.
  • Usa-se quando comandos de teste devem escolher entre executar dois blocos de comandos.
  • Pode ser utilizado em qualquer trecho de programa que usará um comando Java.
  • Os comandos de controle especificam a ordem em que a computação é feita no programa.

 

Tomada de Decisão

  • A tomada de decisão é extremamente importante na execução dos programas. São elas que dão a “inteligência” ao sistema.
  • Em Java, temos dois blocos de tomadas de decisão: o IF / ELSE e o SWITCH / CASE .

 

IF/ELSE

  • O bloco IF/ELSE é o mais utilizado pois aceita qualquer condição e assim sendo mais utilizado que o SWITCH.
  •  
  • Sua sintaxe é a seguinte:

if(<condição>) {

}

  • Onde na condição colocaremos uma equação lógica ou um valor booleano (variável, método com retorno lógico). Se a condição for verdadeira, o que estiver dentro do bloco será executado.
  • Esse é um bloco simples, onde só se executa uma ação onde tal condição for verdadeira. Mas podemos forçar outra ação se a condição for falsa. Veja como: 

if(<condição>) {

}else{                  

}  
                      
  • Nesse caso, o bloco else (se não) será executado se a condição do if(se) for falsa. Podemos ainda alinhar mais blocos, permitindo mais condições a serem avaliadas. Veja o exemplo:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoD0ZoxPoHDU7Dt2Zsslgbw6r2Gf3OFtipyTFRBMePCmGGCRZ-ETeHHKRCEin0w5x1SorssRPuNSPAReC3Ly7JlgprbNMrtv-kgHwnJkB7N6J_HMpctllTUuI3F9mERzfzQLjrW5yQ3g/s320/ifelse.png
(Podem ser utilizados quantos if/else for preciso).
  “A forma if. . .else permite expressar duas alternativas de execução, uma para o caso da condição” - UNICAMP, Apostila Java, Orientação a Objeto.

Exemplo do uso de “IF/ELSE”:
Desenvolver programa que peça ao usuário para cadastrar uma senha; na sequência, deve pedir ao usuário que digite duas variáveis reais e irá calcular a divisão da primeira pela segunda. O programa irá pedir ao usuário que digite sua senha, se estiver correta ela mostra o resultado da divisão. Se não, dá mensagem de erro e encerra o aplicativo.
  • Vídeos sobre o comando IF/ELSE:





SWITCH/CASE

  • O comando SWITCH é um comando mais simples e organizado, porém muito limitado.
  • Não podemos utilizar condições lógicas, apenas tipos primitivos (inteiros, reais e caracteres isolados) são aceitos.
  • Sua estrutura é a seguinte:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL5mcvsu_R84okYGxjGdKtreJFHeRtY78UhkEuKiyv2wuufAp3ClryORDMQT3seLRjf1I6mRWdipuQD_4NhTgN9RCb75wSC4vtYhWqHvatNlIKOQ73sAVLJynxvSKFvCL-_jKKCkfftA/s320/switch.png
Switch (<equação ou variável>) {
 case <variável primitiva>:
 break;
case <variável primitiva>:
break;
}
“O comando switch...case também expressa alternativas de execução, mas nesse caso as condições estão restritas à comparação de uma variável inteira com valores constantes” - UNICAMP, Apostila Java, Orientação a Objeto.

Exemplo do uso de “switch/case”:
Utilizando a estrutura switch, faça um programa Java que receba um número do
usuário de 1 a 12 e retorne o valor do mês correspondente. Ex: Para a entrada 5
gerar a saída MAIO. Para a entrada 11 gerar a saída NOVEMBRO. Se o valor
de entrada for diferente do intervalo 1-12, gerar a saída INVÁLIDO.

  • Vídeo sobre o comando SWITCH/CASE

Laços de repetição

  • Na linguagem Java, possuímos três blocos de repetição. É a recursividade que já passa a ser uma estrutura de algoritmo em vez de uma estrutura da linguagem.
  • Os três comandos são: WHILE, DO/WHILE e FOR

WHILE(enquanto)

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFoFiNV3beuf09Pk7TpnBQFXZ5-4_ddZ8JVcg6Xr4Smc24gbhh0VqGfHRudBOyHognx6qIsGAKbj6fr9vGcyG86gAAEYB4EeQhwRWqSJZY41onjFWeBVQnClwMmTNPOOaU_9cTDf97Dg/s1600/while.png
  • O comando while verifica uma condição lógica primeiro e depois executa as ações que estão contidas em seu bloco.
  • Sua sintaxe é a seguinte: 

    while(<condição lógica>){
...comandos...
 }

 
  • Tudo se repetirá até a condição se tornar falsa. No while não está garantido que seus comandos serão executados pelo menos uma vez porque antes da execução existe uma condição que verifica se o bloco pode ser executado. 
  • A utilização do while se torna mais útil quando precisamos repetir algo que não seja fixo, algo irregular. Por exemplo, um comando que controla um menu de usuário, onde não sabemos quando o usuário vai fechar o menu.

“O while é um comando usado para fazer um laço (loop), isto é, repetir um trecho de código algumas vezes. A ideia é que esse trecho de código seja repetido enquanto uma determinada condição permanecer verdadeira.” - CAELUM, Apostila Java, Orientação a Objeto.

Exemplo de exercício no uso de “while”:

Programa que calcule a média de salários de uma empresa, pedindo ao usuário a grade de funcionários e os salários em JOptionPane e devolvendo a média.

safsdgfdf.jpg


  • Veja mais no vídeo: 


DO/WHILE (repita)


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRyYYPJDQGys2kt5ZYvhFOoj1A3IjaYJBmH-NW6Xxekw6NQsmvQYK-OUofTGtXFHY0y-f29ZCArS7DMaZwToPehcazur0NYdQDETDVp2ptqoNW2dDE0-PMEIqKGvC1pfcSCiPRM_bL8A/s320/dowhile.png

  • O comando do/while executa primeiro o bloco e depois verifica a condição lógica. A sintaxe é a seguinte:

    do {
     ...comandos...
    }while (<condição lógica>);

  • Todo o bloco se repetirá até a condição se tornar falsa. No do/while, pelo menos uma vez o bloco será executado. Ele executará todo o bloco e depois verificará a condição. Diferente do while, que verificava antes de executar. 

Exemplo do uso de “DO/WHILE”:


Desenvolva um algoritmo que  peça um input em formato String do usuário e que continue repetindo enquanto o input for igual a “churros”.


  • Assista ao vídeo: 

FOR (para)


  • O comando for é uma estrutura onde possui todo o controle na sua assinatura. Nela podemos declarar variáveis, verificar condições e incrementar valores à variável de controle.
  • A sintaxe é a seguinte:

    for (<declara variável>; <condição de controle>; <incrementa a variável>){
...comandos... 
}
 
  • A aplicação do comando for seria ideal quando possuímos um controle exato da repetição, como por exemplo, quando sabemos que iremos percorrer um vetor ou um número certo de repetições. Caso contrário, o ideal seria o while.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEive1ukZ_PhL_7dsMINSmLNcyIWgb_LJ3K7Vvz7jqsA9Gi5pfXC2FU_vQLDAjcF85eXCZPSaM_1WM-_tdGyDnI-xEM4RLbZ8Wm6JcCd0dJf3dwBsSedhrmXUIHz5AR-9lr-ZhGG2Y7lkg/s320/for.png

Exemplo do uso de “FOR”:

Faça um programa em java que armazene um conjunto de  múltiplos de 10 até 50 e que ao processar o valor “30”, o programa encerre.

             
    Saída:

  • Veja mais no vídeo: 


Em posse do conteúdo, desenvolva os exercícios propostos abaixo:
Exercício Prático:
Desenvolva um algoritmo que exiba a tabuada do número X ao número Y, sendo X e Y variáveis definidas através de input.
Exercício Teórico:
Por que devemos utilizar a estrutura IF{}ELSE IF{} ao invés de simplesmente usar vários “IF”s em sequência?

Referências:
Apostila Caelum, Java e Orientação a Objeto.
Apostila Unicamp, Java e Orientação a Objeto.

Conclusão

Com mostrado no artigo, a tomada de decisão é  fundamental para a entrada em diversas opções que estão inclusas no programa, não fixando-o em uma única ideia e podendo assim utilizar a estrutura de repetição para entrar em “loops” e reprisar as ações realizadas até que se leia uma condição para saída de tal estrutura. Sendo assim, a tomada de decisão e repetição é imprescindível para a lógica de um programa.

Nenhum comentário:

Postar um comentário