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

Slides:



Advertisements
Apresentações semelhantes
Funções em C Prof. Fabiano Utiyama.
Advertisements

Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
INTRODUÇÃO A COMPUTAÇÃO ENG. CIVIL
Soluções Iterativas com Laços
Introdução à Programação Engenharia da Computação
Construção de Algoritmos 2
Estruturas de Repetição
Introdução à Programação usando Processing Programação Gráfica 2D Estrutura de Seleção Exercícios de Revisão Estrutura de Seleção 14/10/09 Bruno C. de.
Tratamento de Exceções
Estrutura Condicional
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
Aula Teste INFNET terça-feira, 11 de janeiro de 2011
Introdução à Computação - Jorge Macêdo
Estruturas de repetição
Introdução à Programação
Recursividade Inhaúma Neves Ferraz
INTRODUÇÃO À PROGRAMAÇÃO
Introdução à Lógica de Programação (cont.)
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Membros estáticos.
Universidade Federal do Espírito Santo
Comandos condicionais
Lógica de Programação Módulo II
Introdução ao JavaScript
Linguagem C Estruturas de Seleção.
Estrutura de decisão e repetição em JAVA
Introdução a Programação JAVA
Estrutura de Dados em Java
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Algoritmos e Programação
Listas e algoritmos (em Scratch)
JAVA: Conceitos Iniciais
Professor: Juliano Lucas Gonçalves
Introdução a Computação e Cálculo Numérico
Unidade I: “Dê um mergulho rápido”
Linguagem de Programação I Parte II
FTIN Formação Técnica em Informática
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
Linguagem técnica de programação I Java
Entendendo as definições de classe
Estrutura de Decisão e Repetição
Aula 6 - Estruturas de Controle
Programação e Sistemas de Informação
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Estrutura de decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições.
BC-0505 Processamento da Informação
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Listas Simplesmente Encadeadas
Wagner Santos C. de Jesus
BC-0505 Processamento da Informação
Tratamento de Exceções
Introdução à Linguagem C
Programação Orientada a Objetos - Java
Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.
Comandos de Condição Aula 1 1. Introdução Até agora, todos os algoritmos que fizemos têm um fluxo de execução único. As instruções executadas são sempre.
Estrutura de Controle em JAVA
Algoritmo.
Implementação Orientada a Objetos – Aula 06 Conversão de tipos e métodos estáticos Prof. Danielle Martin Universidade de Mogi das Cruzes
Algoritmos e Estruturas de Dados I – Estrutura Condicional
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Exercícios Laboratório. Inicio Escreva (“Olá Mundo!”) Fim static void main (string[] args) { Console.WriteLine (“Olá Mundo!”); }
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Aula 4 Estrutura de Decisão.
Linguagem de Programação 11 Estruturas de Decisão e Repetição. Prof. Luiz José Hoffmann Filho
Fundamentos de Programação
1Unidade – Estrutura Condicional SE Algoritmos e Linguagens de Programação Estrutura Condicional SE Faculdade INED – Abril 2007 Prof. Edwar Saliba.
IFRN Técnico em Informática para Internet Estruturas Condicionais Prof. Gilbert Azevedo.
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Transcrição da apresentação:

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

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.

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

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

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

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.

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

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.”); }

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.

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

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.

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

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.”); }

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.

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

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.”); }

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.

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.

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;

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

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

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 }

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

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.

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

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.

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.

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

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

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.

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.

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:

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

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

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.

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

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;

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

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.

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.

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

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

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

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

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