Top Banner

of 31

Estrutura de decisão

Feb 22, 2018

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 7/24/2019 Estrutura de deciso

    1/31

    Estruturas de Deciso

    Programao em Java

    Prof. Maurcio Braga

  • 7/24/2019 Estrutura de deciso

    2/31

    2/31

    Estruturas de deciso

    Existem situaes em que desejamos que nem todos oscomandos includos em um programa sejamexecutados.

    Nestas situaes, ensinamos o computador a tomardecises, optando ou no por executar determinadoscomandos.

    Como os computadores no tomam decises sozinhos,devemos instru-lo a seguir um determinado caminho noprograma. Para isto necessrio o teste do resultado de uma expresso

    lgica.

  • 7/24/2019 Estrutura de deciso

    3/31

    3/31

    Comando SE

    Estrutura de deciso bsica em algoritmos

    Sintaxe:

    se ento ;

    se ento seno;

    ou

    Apenas um dos dois

    comandos executado

    ComandoV executado

    se expr_lgica avaliar

    para Verdadeiro

  • 7/24/2019 Estrutura de deciso

    4/31

    4/31

    Comando SE em Java

    if(condio) // onde condio pode ser uma expresso

    {

    Declaraes ou blocos}

    else// caso a condio anterior no seja satisfeita

    {

    Declaraes ou blocos}

  • 7/24/2019 Estrutura de deciso

    5/31

    5/31

    Exemplo SE em Java

    int x = 5, y = 10;

    if(x >= y) {System.out.println(X maior ou igual a Y.);

    }else {System.out.println(X menor que Y.);}

  • 7/24/2019 Estrutura de deciso

    6/31

    6/31

    Exemplo Comando SE com SENO

    Fazer um programa que solicite ao usurio a sua idadee imprimir a mensagem Voc maior de idade se ela

    tiver 18 anos ou mais, ou Voc menor de idade caso

    contrrio.

  • 7/24/2019 Estrutura de deciso

    7/31

    7/31

    Exemplo SE com SENO em Javapublic static void main(String[] args) {

    // declarao de variveisint idade=0;

    System.out.println(Digite a sua idade:");Scanner s = new Scanner (System.in);idade=s.nextInt();

    if (idade >=18) {System.out.println(Voc maior de idade.);

    }else {System.out.println(Voc menor de idade.);

    }}

  • 7/24/2019 Estrutura de deciso

    8/31

    8/31

    Comando SE

    Exerccio: Faa um programa em Java que leia um nmero inteiro

    informado pelo usurio e diga se ele par ou mpar.

    Sugesto: Use o % (resto da diviso inteira) para saber se onmero par ou mpar.

  • 7/24/2019 Estrutura de deciso

    9/31

    9/31

    Soluopublic static void main(String[] args) {

    // declarao de variveisint numero=0;

    System.out.println(Fornea o nmero:");

    Scanner s = new Scanner (System.in);numero=s.nextInt();

    if (numero %2 == 0) {System.out.println(O nmero par.);

    }else {System.out.println(O nmero mpar.);

    }}

  • 7/24/2019 Estrutura de deciso

    10/31

    10/31

    Testes encadeados

    Em determinadas situaes necessria a realizaode testes dentro de outros testes.

    Normalmente esta necessidade surge da combinaode decises a serem tomadas.

    Este tipo de estrutura chamado de encadeamento ouaninhamento.

    Quando ocorre um encadeamento de testes, o programapossui um comando de deciso dentro de outro. Este comando mais interno pode estar localizado junto ao

    ENTO ou junto ao SENO.

  • 7/24/2019 Estrutura de deciso

    11/31

    11/31

    Testes encadeados

    Exemplos de encadeamento

    seA > B ento

    se K > M entoC = K

    seno

    C = M;...

    se X < Y ento

    S = X + Ysenose X < A + B

    A = C;seno

    B = C;

  • 7/24/2019 Estrutura de deciso

    12/31

    12/31

    Instrues de seleo

    Problema do elseoscilante

    int x = 8;

    int y = 4;

    if(x > 5)

    if (y > 5)

    System.out.println("x e y so > 5");

    else

    System.out.println("x

  • 7/24/2019 Estrutura de deciso

    13/31

    13/31

    Instrues de seleo

    Problema do elseoscilante (cont.)

    int x = 8;

    int y = 4;

    if(x > 5) {

    if (y > 5)

    System.out.println("x e y so > 5");

    }else

    System.out.println("x

  • 7/24/2019 Estrutura de deciso

    14/31

    14/31

    Instrues de seleo

    Cuidado com blocos

    if(media >= 7)

    System.out.println("Aprovado");

    else

    System.out.println(Prova final necessria");

    System.out.println(Verificar data na secretaria");

    No funciona

    como deveria

    {

    }Agora

    est

    correto

  • 7/24/2019 Estrutura de deciso

    15/31

    15/31

    Testes encadeados

    Exemplo 4: Um quiosque de sorvetes vende casquinhas somente nos

    sabores Chocolate (sabor = 1) e Morango (sabor = 2), no

    permitindo misturar os sabores num mesmo sorvete. Faa umprograma para imprimir uma mensagem nas seguintessituaes: Sorvete de chocolate com mais de trs bolas: desconto de 10%;

    Sorvete de chocolate com 3 ou menos bolas: desconto de 5%;

    Sorvete de morango com qualquer quantidade de bolas: sorvetesem desconto.

  • 7/24/2019 Estrutura de deciso

    16/31

    16/31

    Testes encadeados

    Para imprimir a mensagem correta, o programa precisasaber dois dados: o sabor do sorvete e a quantidade debolas.

    Imprimir a mensagem correta requer testar as variveisde entrada.

  • 7/24/2019 Estrutura de deciso

    17/31

    17/31

    Testes encadeados Soluo (cont.)

    O corpo do algoritmo ficaria assim:

    Variveis

    sabor : inteiro;

    bolas : inteiro;Incio

    escrever Entre com o sabor (1 ou 2): ;

    lersabor;escrever Entre com a quantidade de bolas: ;ler bolas;se sabor = 1 ento

    se bolas > 3 entoescrever Desconto de 10%seno

    escrever Desconto de 5%;seno

    escreverSorvete sem desconto;Fim

  • 7/24/2019 Estrutura de deciso

    18/31

    18/31

    Soluopublic static void main(String[] args) {

    // declarao de variveisint sabor=0, qtd_bolas = 0;

    System.out.println(Digite o sabor:");Scanner s = new Scanner (System.in);sabor=s.nextInt();System.out.println(Digite a quantidade:");qtd_bolas=s.nextInt();if (sabor == 1) {

    if (qtd_bolas > 3)System.out.println(Desconto 10%.);

    elseSystem.out.println(Desconto 5%.);

    }else

    System.out.println(Sorvete sem desconto.);

    }

  • 7/24/2019 Estrutura de deciso

    19/31

    19/31

    Comando CASO

    O comando caso til em situaes onde h necessidade de setestar uma mesma varivel (ou expresso) que possa conterdiversos valores

    Cada valor exige a execuo de comandos diferentes. Uma expresso comparada a diversos valores de acordo com a

    ordem definida.

    Ao encontrar uma ocorrncia do valor correto, o comando relativo executado e o algoritmo segue para o fim do CASO.

    Se nenhum dos valores for igual ao contedo da varivel, poderser executado um outro comando atravs do complemento SENO.

  • 7/24/2019 Estrutura de deciso

    20/31

    20/31

    Comando CASO

    Sintaxe:

    caso seja

    : ; : ; : ;... : ;seno;

    fimcaso;

  • 7/24/2019 Estrutura de deciso

    21/31

    21/31

    Comando CASO em Java

    A sintaxe do switch:

    switch(expresso)

    { caseconstante1:expresses;break;

    caseconstante2:expresses;

    break;default:expresses;

    }

  • 7/24/2019 Estrutura de deciso

    22/31

    22/31

    Comando CASO

    Exemplo: Dado o nmero de matrcula de um scio do clube Boa Social,

    fornecido pelo usurio, faa um programa que imprima o ms de

    pagamento da anuidade, de acordo com as condies abaixo. Final 0Pagamento em Janeiro;

    Final 1Pagamento em Fevereiro;

    Final 2Pagamento em Maro;

    Final 3Pagamento em Abril;

    Outro finalPagamento em Maio.

  • 7/24/2019 Estrutura de deciso

    23/31

    23/31

    Comando CASO

    Soluo: Teremos que receber o nmero de matrcula do usurio e

    identificar o ltimo dgito. Para isto podemos utilizar o resto da

    diviso do nmero de matrcula por 10. Utilizar uma estrutura de deciso para imprimir corretamente o

    ms de pagamento da anuidade. Podem ser utilizados o comando SE ou o comando CASO.

  • 7/24/2019 Estrutura de deciso

    24/31

    24/31

    Exemplo Caso em Javapublic static void main(String[] args) {

    // declarao de variveisint matricula = 0, final_numero =0;

    System.out.println("Fornea o nmero da matrcula:");Scanner s = new Scanner (System.in);matricula=s.nextInt();

    final_numero = matricula % 10;

    switch (final_numero) {

    case 0:

    System.out.println("Pagamento em Janeiro.");break;

    case 1:

    System.out.println("Pagamento em Fevereiro.");

    break;

  • 7/24/2019 Estrutura de deciso

    25/31

    25/31

    Exemplo Caso em Java

    case 2:System.out.println("Pagamento em Maro.");

    break;

    case 3:

    System.out.println("Pagamento em Abril.");break;

    default:

    System.out.println("Pagamento em Maio.");

    break;

    }

    }

  • 7/24/2019 Estrutura de deciso

    26/31

    26/31

    Comando CASO

    Exerccio: Ler o nmero referente a um dia da semana e

    imprimir a mensagem dia til ou fim-de-semana,considerando que 1 = domingo, 2 = segunda-feira,etc.

  • 7/24/2019 Estrutura de deciso

    27/31

    27/31

    Comando CASO

    Soluo Para este programa, iremos utilizar algumas

    facilidades providas pelo comando CASO. Usaremos o mesmo cdigo para dois ou mais valores da

    varivel de controle do comando Caso.

  • 7/24/2019 Estrutura de deciso

    28/31

    28/31

    Exerccio Caso em Javapublic static void main(String[] args) {

    // declarao de variveisint cod_dia = 0;

    System.out.println("Entre com o cdigo do dia:");

    Scanner s = new Scanner (System.in);cod_dia=s.nextInt();

    switch (cod_dia) {

    case 1:

    case 7:

    System.out.println("Fim de semana.");break;

  • 7/24/2019 Estrutura de deciso

    29/31

    29/31

    Exerccio Caso em Java

    case 2:

    case 3:case 4:

    case 5:

    case 6:

    System.out.println("Dia til.");break;

    default:

    System.out.println("Cdigo invlido.");

    }

    }

  • 7/24/2019 Estrutura de deciso

    30/31

    30/31

    Comando CASO

    Limitaes do comando CASO S pode ser usado para comparao de valores diretos e que

    sejam inteiros.

    No possvel comparar com nmeros fracionrios. possvel comparar com caracteres, que estaro entre aspas

    simples (ex.: a, b, etc.).

    Permite apenas comparaes de igualdade, no permitindo asdemais comparaes relacionais (maior que, menor que, etc.).

    Compara apenas uma nica varivel ou expresso.

  • 7/24/2019 Estrutura de deciso

    31/31

    Estruturas de Deciso

    Programao em Java

    Prof. Maurcio Braga