A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Estruturas de Decisão Programação em Java Prof. Maurício Braga.

Apresentações semelhantes


Apresentação em tema: "Estruturas de Decisão Programação em Java Prof. Maurício Braga."— Transcrição da apresentação:

1 Estruturas de Decisão Programação em Java Prof. Maurício Braga

2 2 Estruturas de decisão Existem situações em que desejamos que nem todos os comandos incluídos em um algoritmo sejam executados. Nestas situações, ensinamos o computador a tomar decisões, optando ou não por executar determinados comandos. Como os computadores não tomam decisões sozinhos, devemos instruí-lo a seguir um determinado caminho no algoritmo. Para isto é necessário o teste do resultado de uma expressão lógica.

3 3 Comando SE Estrutura de decisão básica em algoritmos Sintaxe: se então ; se então senão ; ou Apenas um dos dois comandos é executado ComandoV é executado se expr_lógica avaliar para Verdadeiro

4 4 Comando SE em Java if (condição) // onde condição pode ser uma expressão { Declarações ou blocos Declarações ou blocos} else // caso a condição anterior não seja satisfeita { Declarações ou blocos Declarações ou blocos}

5 5 Exemplo SE em Java if (x >= y) { System.out.println(X é maior ou igual a Y.); System.out.println(X é maior ou igual a Y.);}else{ System.out.println(X é menor que Y.); System.out.println(X é menor que Y.);}

6 6 Comando SE Exemplo: Ler a idade de uma pessoa e imprimir a mensagem Você é maior de idade se ela tiver 18 anos ou mais. Solução Aplicação simples do comando SE. Única entrada é a idade de uma pessoa, que será armazenada numa variável inteira. Não é possível resolver este problema utilizando apenas seqüenciação.

7 7 Comando SE Solução (cont.) O algoritmo fica assim: Variáveis idade : inteiro; Início escrever Forneça a idade: ; ler idade; se idade >= 18 então escrever Você é maior de idade; Fim

8 8 Exemplo SE em Java public static void main(String[] args) { // declaração de variáveis int idade=0; System.out.println(Forneça a idade:"); idade=Leia(idade); if (idade >=18) System.out.println(Você é maior de idade.); }

9 9 Utilizando o exemplo SE A função Leia utilizada até agora não funciona com variáveis inteiras. Podemos converter a variável idade para double ou escrever uma função Leia que aceite variáveis inteiras.

10 10 Função Leia com variáveis inteiras public static int Leia(int param) { // objeto que contém o dado digitado pelo usuário DataInputStream dado_lido; // variável auxiliar cujo objetivo é facilitar a conversão dos dados String stemporario; int resultado = 0; try { dado_lido = new DataInputStream(System.in); stemporario = dado_lido.readLine(); resultado =Integer.parseInt(stemporario); }catch (Exception e) { } return resultado; }

11 11 Comando SE com SENÃO Modifique o programa anterior. Ele agora deverá: Ler a idade de uma pessoa e imprimir a mensagem Você é maior de idade se ela tiver 18 anos ou mais, ou Você é menor de idade caso contrário.

12 12 Comando SE Solução (cont.) O algoritmo fica assim: Variáveis idade : inteiro; Início escrever Forneça a idade: ; ler idade; se idade >= 18 então escrever Você é maior de idade senão escrever Você é menor de idade; Fim

13 13 Exemplo SE com SENÃO em Java public static void main(String[] args) { // declaração de variáveis int idade=0; System.out.println(Forneça a idade:"); idade=Leia(idade); if (idade >=18) System.out.println(Você é maior de idade.); else System.out.println(Você é menor de idade.); }

14 14 Comando SE Exercício: Faça um programa em Java que leia um número inteiro informado pelo usuário e diga se ele é par ou ímpar. Sugestão: Use o % (resto da divisão inteira) para saber se o número é par ou ímpar.

15 15 Comando SE Exemplo 3: Ler um número inteiro e dizer se ele é par ou ímpar. Solução Variáveis numero : inteiro; Início escrever Forneça o número: ; ler numero; se (numero % 2) = 0 então escrever O número é par senão escrever O número é ímpar; Fim

16 16 Solução public static void main(String[] args) { // declaração de variáveis int numero=0; System.out.println(Forneça o número:"); numero=Leia(numero); if (numero %2 == 0) System.out.println(O número é par.); else System.out.println(O número é ímpar.); }

17 17 Comando SE Exercícios Ler um número inteiro e dizer se ele é par e divisível por 3. Ler o preço de dois produtos e imprimir qual é o maior. Desconsidere empates. Imprimir se um número X é divisível por um número Y.

18 18 Testes encadeados Em determinadas situações é necessária a realização de testes dentro de outros testes. Normalmente esta necessidade surge da combinação de decisões a serem tomadas. Este tipo de estrutura é chamado de encadeamento ou aninhamento. Quando ocorre um encadeamento de testes, o algoritmo possui um comando de decisão dentro de outro. Este comando mais interno pode estar localizado junto ao ENTÃO ou junto ao SENÃO.

19 19 Testes encadeados Exemplos de encadeamento se A > B então se K > M então C = K senão C = M;... se X < Y então S = X + Y senão se X < A + B A = C; senão B = C;

20 20 Instruções de seleção Problema do else oscilante if (x > 5) if (y > 5) System.out.println("x e y são > 5"); else System.out.println("x é <= 5"); Não é o que parece

21 21 Instruções de seleção Problema do else oscilante (cont.) { if (x > 5) { if (y > 5) System.out.println("x e y são > 5"); } } else System.out.println("x é <= 5"); Agora sim

22 22 Instruções de seleção Cuidado com blocos if (nota >= 7) System.out.println("Aprovado"); else System.out.println(Prova final necessária"); System.out.println(Verificar data na secretaria"); Não funciona como deveria { } Agora está correto

23 23 Testes encadeados Exemplo 4: Um quiosque de sorvetes vende casquinhas somente nos sabores Chocolate (sabor = 1) e Morango (sabor = 2), não permitindo misturar os sabores num mesmo sorvete. Faça um programa para imprimir uma mensagem nas seguintes situações: Sorvete de chocolate com mais de três bolas: desconto de 10%; Sorvete de chocolate com qualquer quantidade de bolas: desconto de 5%; Sorvete de morango com qualquer quantidade de bolas: sorvete sem desconto.

24 24 Testes encadeados Para imprimir a mensagem correta, o algoritmo precisa saber dois dados: o sabor do sorvete e a quantidade de bolas. Imprimir a mensagem correta requer testar as variáveis de entrada.

25 25 Testes encadeados Solução (cont.) O corpo do algoritmo ficaria assim: Variáveis sabor : caractere; bolas : inteiro; Início escrever Entre com o sabor (1 ou 2): ; ler sabor; escrever Entre com a quantidade de bolas: ; ler bolas; se sabor = 1 então se bolas > 3 então escrever Desconto de 10% senão escrever Desconto de 5%; senão escrever Sorvete sem desconto; Fim

26 26 Testes encadeados Exercícios Fazer um algoritmo para ler as três notas de um aluno em uma disciplina, e depois imprimir a média aritmética das notas e a situação do aluno, a partir das seguintes regras: Média >= 7.0 – Aprovado; 4 <= Média < 7 – Prova Final; Média < 4 – Reprovado. Um casal possui três filhos: Marquinhos, Zezinho e Luluzinha. Faça um algoritmo para ler as idades dos filhos e exibir quem é o caçula da família; suponha que não haja empates. Faça um algoritmo para ler as coordenadas de um ponto (x, y)do plano cartesiano, e exibir uma mensagem dizendo se pertence ao eixo X, ao eixo Y, à origem ou a nenhuma das situações.

27 27 Comando CASO O comando caso é útil em situações onde há necessidade de se testar uma mesma variável (ou expressão) que possa conter diversos valores Cada valor exige a execução de comandos diferentes. Uma expressão é comparada a diversos valores de acordo com a ordem definida. Ao encontrar uma ocorrência do valor correto, o comando relativo é executado e o algoritmo segue para o fim do CASO. Se nenhum dos valores for igual ao conteúdo da variável, poderá ser executado um outro comando através do complemento SENÃO.

28 28 Comando CASO Sintaxe: caso seja : ;. : ; senão ; fimcaso;

29 29 Comando CASO em Java A sintaxe do switch é: switch (expressão) { case constante1: expressões; break; case constante2: expressões; break; default: expressões; }

30 30 Comando CASO Exemplo: Dado o número de matrícula de um sócio do clube Boa Social, fornecido pelo usuário, faça um programa que imprima o mês de pagamento da anuidade, de acordo com as condições abaixo. Final 0 – Pagamento em Janeiro; Final 1 – Pagamento em Fevereiro; Final 2 – Pagamento em Março; Final 3 – Pagamento em Abril; Outro final – Pagamento em Maio.

31 31 Comando CASO Solução: Teremos que receber o número de matrícula do usuário e identificar o último dígito. Para isto podemos utilizar o resto da divisão do número de matrícula por 10. Utilizar uma estrutura de decisão para imprimir corretamente o mês de pagamento da anuidade. Podem ser utilizados o comando SE ou o comando CASO.

32 32 Comando CASO Solução: Variáveis num_matricula, final : inteiro; Início escrever Forneça o número de matrícula: ; ler num_matricula; final = num_matricula % 10; caso final seja 0 : escrever Pagamento em Janeiro; 1 : escrever Pagamento em Fevereiro; 2 : escrever Pagamento em Março; 3 : escrever Pagamento em Abril; senão escrever Pagamento em Maio; fimcaso; Fim

33 33 Exemplo Caso em Java public static void main(String[] args) { // declaração de variáveis int matricula = 0, final_numero =0; System.out.println("Forneça o número da matrícula:"); matricula=Leia(matricula); 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;

34 34 Exemplo switch em Java public static void main(String[] args) { case 2: System.out.println("Pagamento em Março."); break; case 3: System.out.println("Pagamento em Abril."); break; default: System.out.println("Pagamento em Maio."); break; }

35 35 Comando CASO Exemplo: Ler o número referente a um dia da semana e imprimir a mensagem dia útil ou fim-de-semana, considerando que 1 = domingo, 2 = segunda-feira, etc. Solução Para este algoritmo, iremos utilizar algumas facilidades providas pelo comando CASO. Se precisarmos comparar mais de um valor para a execução de um determinado comando, podemos separá-los por vírgulas; Se quisermos comparar um intervalo de valores, podemos indicá- los por dois pontos seguidos.

36 36 Comando CASO Solução: Variáveis cod_dia : inteiro; Início escrever Entre com o código do dia: ; ler cod_dia; caso cod_dia seja 2..6 : escrever Dia Útil; 1,7 : escrever Fim-de-semana; senão escrever Código inválido; fimcaso; Fim Incluído caso o usuário forneça um dia inválido

37 37 Exemplo switch em Java 2 public static void main(String[] args) { // declaração de variáveis int cod_dia = 0; System.out.println("Entre com o código do dia:"); cod_dia=Leia(cod_dia); switch (cod_dia) { case 1: case 7: System.out.println("Fim de semana."); break;

38 38 Exemplo switch em Java 2 case 2: case 3: case 4: case 5: case 6: System.out.println("Dia útil."); break; default: System.out.println("Código inválido."); }

39 39 Comando CASO Limitações do comando CASO Só pode ser usado para comparação de valores diretos e que sejam inteiros. Não é possível comparar com números fracionários. É possível comparar com caracteres, que estarão entre aspas simples (ex.: a, b, etc.). Permite apenas comparações de igualdade, não permitindo as demais comparações relacionais (maior que, menor que, etc.). Compara apenas uma única variável ou expressão.

40 40 Blocos de comando Vimos que nos comandos SE e CASO, um determinado comando pode ser executado a depender do valor de uma variável. Existem situações em que desejaremos executar mais de um comando de acordo com o resultado da expressão. Nestas situações, será necessária a utilização de blocos de comandos.

41 41 Blocos de comando Sintaxe: Os blocos de comandos são pacotes de comandos que podem ser utilizados nos locais em que espera-se um único comando. [[ ;. ; ]]

42 42 Blocos de comando em Java Sintaxe: { ;. ; }

43 43 Blocos de comando Exemplo: Variáveis valor1, valor2, divisao : real; Início escrever Entre com o primeiro número: ; ler valor1; escrever Entre com o segundo número: ; ler valor2; se valor2 = 0 então escrever Não há como dividir por 0 senão divisao = valor1 / valor2; escrever O valor da divisão é, divisao; Fim Existe algum erro neste algoritmo?

44 44 Comando CASO Algoritmo correto: Variáveis valor1, valor2, divisao : real; Início escrever Entre com o primeiro número: ; ler valor1; escrever Entre com o segundo número: ; ler valor2; se valor2 == 0 então escrever Não há como dividir por 0 senão [[ divisao = valor1 / valor2; escrever O valor da divisão é, divisao; ]]; Fim

45 Estruturas de Decisão Programação em Java Prof. Maurício Braga


Carregar ppt "Estruturas de Decisão Programação em Java Prof. Maurício Braga."

Apresentações semelhantes


Anúncios Google