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

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

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

Apresentações semelhantes


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

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

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 se expr_lógica avaliar
Comando SE ComandoV é executado se expr_lógica avaliar para Verdadeiro Estrutura de decisão básica em algoritmos Sintaxe: se <expr_lógica> então <comandoV>; ou se <expr_lógica> então <comandoV> senão <comandoF>; Apenas um dos dois comandos é executado

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

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

6 Comando SE Exemplo: Solução
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 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 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 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 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 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 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 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 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 Comando SE Exemplo 3: Solução
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 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 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 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 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; B = C;

20 Instruções de seleção Problema do else oscilante if (x > 5)
Não é o que parece 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");

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

22 Instruções de seleção Cuidado com blocos if (nota >= 7)
Não funciona como deveria 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"); { Agora está correto }

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 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 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%”; escrever “Sorvete sem desconto”; Fim

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 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 Comando CASO Sintaxe: caso <var ou expr> seja
<valor1> : <comando1>; <valor2> : <comando2>; <valor3> : <comando3>; . <valorN> : <comandoN>; senão <comandoF>; fimcaso;

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

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 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 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 Solução:

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.");

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."); default: System.out.println("Pagamento em Maio."); }

35 Comando CASO Exemplo: Solução
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 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 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 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 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 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 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. [[ <comando1>; <comando2>; . <comandoN>; ]]

42 Blocos de comando em Java
Sintaxe: { <comando1>; <comando2>; . <comandoN>; }

43 Blocos de comando Exemplo: Variáveis valor1, valor2, divisao : real;
Existe algum erro neste algoritmo? 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

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 Programação em Java Prof. Maurício Braga
Estruturas de Decisão Programação em Java Prof. Maurício Braga


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

Apresentações semelhantes


Anúncios Google