estruturas de decisão programação em java prof. maurício braga

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

Upload: internet

Post on 16-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

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

Estruturas de DecisãoEstruturas de Decisão

Programação em Java

Prof. Maurício Braga

Page 2: 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.

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

3

Comando SE

Estrutura de decisão básica em algoritmos Sintaxe:

se <expr_lógica> então <comandoV>;

se <expr_lógica> então <comandoV> senão <comandoF>;

ou

Apenas um dos doiscomandos é executado

ComandoV é executado se expr_lógica avaliar

para Verdadeiro

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

4

Comando SE em Java

ifif (condição) // onde condição pode ser uma expressão (condição) // onde condição pode ser uma expressão

{{

Declarações ou blocos Declarações ou blocos

}}

elseelse // caso a condição anterior não seja satisfeita// caso a condição anterior não seja satisfeita

{ {

Declarações ou blocos Declarações ou blocos

}}

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

5

Exemplo SE em Java

ifif (x >= y) (x >= y) {{ System.out.println(“X é maior ou igual a Y.”); System.out.println(“X é maior ou igual a Y.”); }}elseelse{ { System.out.println(“X é menor que Y.”);System.out.println(“X é menor que Y.”);}}

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

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.

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

7

Comando SE

Solução (cont.) O algoritmo fica assim:

Variáveisidade : inteiro;

Inícioescrever “Forneça a idade: “;ler idade;se idade >= 18 então

escrever “Você é maior de idade”;Fim

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

8

Exemplo SE em Javapublic 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.”);

}

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

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.

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

10

Função Leia com variáveis inteiraspublic 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;

}

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

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.

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

12

Comando SE

Solução (cont.) O algoritmo fica assim:

Variáveisidade : inteiro;

Inícioescrever “Forneça a idade: “;ler idade;se idade >= 18 então

escrever “Você é maior de idade”senão

escrever “Você é menor de idade”;Fim

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

13

Exemplo SE com SENÃO em Javapublic 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.”);

}

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

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.

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

15

Comando SE

Exemplo 3: Ler um número inteiro e dizer se ele é par ou ímpar.

Solução

Variáveisnumero : inteiro;

Inícioescrever “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

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

16

Soluçãopublic 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.”);

}

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

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.

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

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.

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

19

Testes encadeados

Exemplos de encadeamento

se A > B entãose K > M então

C = Ksenão

C = M;...

se X < Y entãoS = X + Y

senãose X < A + B

A = C;senão

B = C;

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

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 queparece

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

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

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

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 funcionacomo deveria

{

}

Agoraestá

correto

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

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”.

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

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.

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

25

Testes encadeados Solução (cont.)

O corpo do algoritmo ficaria assim:

Variáveissabor : caractere;bolas : inteiro;

Inícioescrever “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ãoescrever “Desconto de 10%”

senãoescrever “Desconto de 5%”;

senãoescrever “Sorvete sem desconto”;

Fim

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

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.

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

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.

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

28

Comando CASO

Sintaxe:

caso <var ou expr> seja<valor1> : <comando1>;<valor2> : <comando2>;<valor3> : <comando3>;...<valorN> : <comandoN>;senão <comandoF>;

fimcaso;

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

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; }

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

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.

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

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.

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

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 seja0 : 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

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

33

Exemplo Caso em Javapublic 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;

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

34

Exemplo switch em Javapublic 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;

}

}

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

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.

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

36

Comando CASO

Solução:

Variáveiscod_dia : inteiro;

Inícioescrever “Entre com o código do dia: ”;ler cod_dia;

caso cod_dia seja2..6 : escrever “Dia Útil”;1,7 : escrever “Fim-de-semana”;senão

escrever “Código inválido”;fimcaso;

Fim

Incluído caso ousuário forneça um

dia inválido

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

37

Exemplo switch em Java 2public 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;

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

38

Exemplo switch em Java 2case 2:

case 3:

case 4:

case 5:

case 6:

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

break;

default:

System.out.println("Código inválido.");

}

}

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

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.

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

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.

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

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>;]]

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

42

Blocos de comando em Java

Sintaxe:

{<comando1>;<comando2>;...<comandoN>;}

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

43

Blocos de comando

Exemplo:

Variáveisvalor1, valor2, divisao : real;

Inícioescrever “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 erroneste algoritmo?

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

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

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

Estruturas de DecisãoEstruturas de Decisão

Programação em Java

Prof. Maurício Braga