Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número...

58
Capítulo 10 Capítulo 10 Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Tratamento de Exceções Tratamento de Exceções

Transcript of Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número...

Page 1: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Capítulo 10Capítulo 10

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Tratamento de ExceçõesTratamento de Exceções

Page 2: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Objetivos do Capítulo

� Apresentar o conceito de exceção e caracterizar as situações sob as quais as exceções se manifestam.

� Indicar os mecanismos que podem ser empregados para a captura e tratamento de exceções.

� Explorar a hierarquia de exceções composta pelas classes da API do Java.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

da API do Java.

� Apontar o que caracteriza as checked exceptions e as unchecked exceptions e o que distingue estes dois grupos de exceções.

Page 3: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Introdução

� Exceção: condição anormal

� Causas:

� Falhas na implementação

� Falhas na operação

� O responsável

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Qualidade de software

� Tolerância à falhas

Page 4: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Introdução

� Código 10.1 – Excecao.java

� O aplicativo deve solicitar um número inteiro e exibir o seu cubo.

� Utilize um diálogo gráfico para solicitar e exibir os dados.

� Execute o aplicativo e informe um dado que não possa ser convertido para o tipo int.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 5: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Estrutura try-catch

� Bloco try

� Delimita instruções que podem gerar exceções.

� Um bloco catch para cada tipo de exceção.

� Tipo = classe.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 6: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Estrutura try-catch

� Sintaxe:

try {

<instruções>

}

catch (<tipo_da_exceção> <nome_da_exceção>) {

<tratamento>

}

catch (<tipo_da_exceção> <nome_da_exceção>) {

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

catch (<tipo_da_exceção> <nome_da_exceção>) {

<tratamento>

}

Page 7: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Estrutura try-catch

� Tratamento genérico:

� Uso de tipo genérico: Exception

� Sintaxe:

try {

<instruções>

}

catch (Exception ex) {

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

catch (Exception ex) {

<tratamento>

}

Page 8: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Estrutura try-catch

� Código 10.2 – Try.java

� Captar dois números e dividir o primeiro pelo segundo.

� Utilizar diálogos gráficos para captar os números e exibir o resultado.

� Se ocorrer uma exceção durante a execução destas instruções, o programa deve exibir uma mensagem de erro e encerrar o aplicativo.

� A mensagem de erro deve conter:

�O nome da classe que representa a exceção.�O nome da classe que representa a exceção.

� A mensagem de erro padrão desta exceção.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 9: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Estrutura try-catch

� Código 10.2 – Try.java

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 10: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Estrutura try-catch

� Código 10.3 – TratamentoMultiplo.java

� Captar dois números e dividir o primeiro pelo segundo.

� Utilizar diálogos gráficos para captar os números e exibir o resultado.

� Se ocorrer uma exceção durante a execução destas instruções, o programa deve exibir uma mensagem de erro específica para cada tipo de exceção que pode ser disparada e deve encerrar o aplicativo.

� Exiba as seguintes mensagens de erro:� Exiba as seguintes mensagens de erro:

� Em caso de NumberFormatException: “Número inválido!”

� Em caso de ArithmeticExceptino: “O divisor não pode ser zero!”

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 11: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Estrutura try-catch

� Código 10.3 – TratamentoMultiplo.java

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 12: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Estrutura try-catch

� Código 10.4 – ValidaInteiro.java

� Solicitar um número inteiro e indicar se ele é válido.

� Utilizar diálogos gráficos.

� Se o diálogo de entrada for cancelado, encerrar o aplicativo.

� Se o número não for válido, exibir mensagem de erro e solicitá-lo novamente.

� Regras para validação do número:

� Deve ser inteiro.

Deve ser maior ou igual a 1.� Deve ser maior ou igual a 1.

� Deve ser menor ou igual a 10.

� Exibir uma mensagem de erro específica para cada uma destas situações.

� Lançar uma IllegalArgumentException nos dois últimos casos.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 13: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Estrutura try-catch

� Código 10.4 – ValidaInteiro.java

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 14: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Bloco Finally

� Objetivo:

� Garantir a execução de determinadas instruções.

� Requisito:

� Vínculo com estrutura try-catch

� Sintaxe:

try {

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

try {

<instruções>

}

catch (<tipo_da_exceção> <nome_da_exceção>) {

<tratamento>

}

finally {

<instruções>

}

Page 15: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Bloco Finally

� Código 10.5 – Finally.java

� Solicitar um número inteiro e indicar se ele é válido.

� Utilizar diálogos gráficos.

� Se o diálogo de entrada for cancelado, encerrar o aplicativo.

� Se o número não for válido, exibir mensagem de erro.

� Regras para validação do número:

� Deve ser inteiro.

� Deve ser igual ou superior a -2.147.483.648.

� Deve ser igual ou inferior a 2.147.483.647.

� Instruções de finalização que devem ser garantidas:

�Mensagem de conclusão: “Operação encerrada!”.

� Liberação imediata da memória utilizada pelo aplicativo.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 16: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Bloco Finally

� Código 10.5 – Finally.java

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 17: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

A Hierarquia das Exceções

� Uma exceção é uma classe

� Cada classe têm uma ancestral direta

� Pai ou mãe?

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 18: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

A Hierarquia das Exceções

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 19: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento Obrigatório e Tratamento Opcional

� Primeiro grupo: checked exceptions

� Tratamento obrigatório

� Classes que não derivam de RuntimeException

� Condições inválidas

� Causas fora do controle do programador

� Exemplos:

� Problemas físicos na rede

�Queda do servidor de BD

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

�Queda do servidor de BD

� Ausência de arquivos

Page 20: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento Obrigatório e Tratamento Opcional

� Segundo grupo: unchecked exceptions

� Tratamento opcional

� Classe RuntimeException e suas descendentes

� Defeitos no código do aplicativo (bugs)

� Podem ser evitadas pelo programador

� Adaptação da lógica de seu algoritmo

� Exemplos:

� Executar método de objeto nulo

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Executar método de objeto nulo

� Acessar posição inexistente de vetor

� Converter dado captado do usuário

� Há casos em que o programador não pode evitá-las

� Tratá-las como se fossem checked exceptions

Page 21: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento de Checked Exceptions

� Código 10.6 – TratamentoObrigatorio.java

� Ler o arquivo Excecao.java e exibir seu conteúdo.

� Editar e compilar sem nenhum tratamento de exceção.

� Analisar as mensagens de erro do compilador.

� Implementar um tratamento para cada checked exception.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 22: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento de Checked Exceptions

� Código 10.6 – TratamentoObrigatorio.java

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 23: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento de Checked ExceptionsCódigo 10.6 – TratamentoObrigatorio.java.1 import java.io.FileReader;2 import java.io.BufferedReader;34 public class TratamentoObrigatorio {5 public static void main(String[] args) {6 String texto = "";7 FileReader fr = new FileReader("Excecao.java");8 BufferedReader br = new BufferedReader(fr);910 while(true) {11 String linha = br.readLine();12 if(linha == null) break;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

12 if(linha == null) break;13 texto += linha + "\n";14 }1516 br.close();17 fr.close();18 System.out.println(texto);19 }20 }

Page 24: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento de Checked ExceptionsCódigo 10.7 – TratamentoObrigatorio.java.1 import java.io.FileReader;2 import java.io.BufferedReader;3 import java.io.FileNotFoundException;4 import java.io.IOException;56 public class TratamentoObrigatorio {7 public static void main(String[] args) {8 String texto = "";9 FileReader fr = null;1011 try {12 fr = new FileReader("Excecao.java");

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

12 fr = new FileReader("Excecao.java");13 }14 catch (FileNotFoundException nfex) {15 System.out.println("Arquivo não encontrado!");16 System.exit(0);17 }18

Page 25: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento de Checked ExceptionsCódigo 10.7 – TratamentoObrigatorio.java.19 try {20 BufferedReader br = new BufferedReader(fr);2122 while(true) {23 String linha = br.readLine();24 if(linha == null) break;25 texto += linha + "\n";26 }2728 br.close();29 fr.close();30 }

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

30 }31 catch (IOException ioex) {32 System.out.println("Erro durante a leitura do arquivo!");33 System.exit(0);34 }3536 System.out.println(texto);37 System.exit(0);38 }39 }

Page 26: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para NullPointerException

� NullPointerException

� Descendente direta de RuntimeException

� Uma unchecked exception

� Causas comuns:

� Acessar ou modificar um atributo de um objeto nulo.

� Executar um método de um objeto nulo.

� Acessar ou modificar um elemento de um vetor nulo.

� Recuperar a quantidade de elementos de um vetor nulo.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 27: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para NullPointerException

� Código 10.8 – TratamentoNull.java

� Solicitar o nome do usário.

� Converter seu nome para maiúsculo e exibi-lo.

� Utilizar diálogos gráficos.

� Experimentar cancelar o diálogo de entrada sem ter previsto isso no algoritmo do aplicativo.

� Corrigir o defeito do programa com uma estrutura de decisão.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 28: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para NullPointerException

� Código 10.8 – TratamentoNull.java

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 29: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para NullPointerExceptionCódigo 10.8 – TratamentoNull.java.1 import javax.swing.JOptionPane;23 public class TratamentoNull {4 public static void main(String[] args) {5 String nome = JOptionPane.showInputDialog("Informe seu nome");6 nome = nome.toUpperCase();7 JOptionPane.showMessageDialog(null,"Seu nome: " + nome);8 System.exit(0);9 }10 }

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 30: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para NullPointerExceptionCódigo 10.9 – TratamentoNull.java.1 import javax.swing.JOptionPane;23 public class TratamentoNull {4 public static void main(String[] args) {5 String nome = JOptionPane.showInputDialog("Informe seu nome");6 if (nome == null) System.exit(0);7 nome = nome.toUpperCase();8 JOptionPane.showMessageDialog(null,"Seu nome: " + nome);9 System.exit(0);10 }11 }

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 31: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para ArrayIndexOutOfBoundsException

� ArrayIndexOutOfBoundsException

� Descendente indireta de RuntimeException

� Uma unchecked exception

� Causas comuns:

� Acesso a elemento de vetor/matriz com índice ilegal.

� Exemplo:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

int[ ] fibonacci = {1,1,2,3,5,8,13,21};

int n = fibonacci[8];

Page 32: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para ArrayIndexOutOfBoundsException

� Código 10.10 – TratamentoArray.java

� Declare, instancie e inicialize um vetor de strings com o nome de quatro amigos.

� Implemente um laço que percorra este vetor e imprima o conteúdo de cada elemento.

� Experiência: contador de 1 ao tamanho do vetor.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 33: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para ArrayIndexOutOfBoundsException

� Código 10.10 – TratamentoArray.java

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 34: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para ArrayIndexOutOfBoundsExceptionCódigo 10.10 – TratamentoArray.java.1 public class TratamentoArray {2 public static void main(String[] args) {3 String[] amigos = {"Cláudia","Vanessa","Raul","Sidnei"};45 for (byte num = 1; num <= amigos.length; num++)6 System.out.println("Amigo " + num + ": " + amigos[num]);7 }8 }

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 35: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para ArrayIndexOutOfBoundsExceptionCódigo 10.11 – TratamentoArray.java.1 public class TratamentoArray {2 public static void main(String[] args) {3 String[] amigos = {"Cláudia","Vanessa","Raul","Sidnei"};45 for (byte num = 0; num < amigos.length; num++)6 System.out.println("Amigo " + (num + 1) + ": " + amigos[num]);7 }8 }

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 36: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para InputMismatchException

� InputMismatchException

� Descendente indireta de RuntimeException

� Uma unchecked exception

� Disparada por métodos da classe Scanner

� Causas comuns:

�O termo recuperado não coincide com o padrão esperado.

� Exemplo:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Exemplo:

�Método nextInt( ) invocado

�Usuário digita: 55,33

Page 37: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para InputMismatchException

� Código 10.12 – TratamentoInput.java

� Captar a idade do usuário.

� Utilizar método nextByte( ).

� Experimente deixar sem tratamento de exceção.

� Implemente um tratamento adequado.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 38: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para InputMismatchExceptionCódigo 10.12 – TratamentoInput.java.1 import java.util.Scanner;23 public class TratamentoInput {4 public static void main(String[] args) {5 Scanner scan = new Scanner(System.in);67 System.out.print("Informe sua idade:\t");8 byte idade = scan.nextByte();910 System.out.println("Sua idade:\t\t" + idade);11 }12 }

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

12 }

Page 39: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para InputMismatchExceptionCódigo 10.13 – TratamentoInput.java.1 import java.util.Scanner;2 import java.util.InputMismatchException;34 public class TratamentoInput {5 public static void main(String[] args) {6 byte idade = -1;78 while (idade < 0) {9 System.out.print("\nInforme sua idade:\t");10 Scanner scan = new Scanner(System.in);1112 try {

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

12 try {13 idade = scan.nextByte();14 }15 catch (InputMismatchException ime) {16 System.out.println("Idade inválida!");17 }18 }1920 System.out.println("Sua idade:\t\t" + idade);21 }22 }

Page 40: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Tratamento para Outras Exceções

� Tipo: checked exceptions

� O compilador avisa

� Tratamento obrigatório com estrutura try-catch

� Tipo: unchecked exceptions

� Causa sob área de domínio do programador

� Alterar algoritmo do programa

�Não utilizar estrutura try-catch

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

�Não utilizar estrutura try-catch

� Exemplos:

o NullPointerException

o ArrayIndexOutOfBoundsException

o ArithmeticException

� Causa fora da área de domínio do programador

� Tratar com estrutura try-catch

� Exemplos:

o InputMismatchException

o NumberFormatException

Page 41: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 1

� Crie um novo aplicativo, chamado Exercicio1001, que solicite o nome e o salário do usuário e calcule o valor que a empresa deve depositar em sua conta do FGTS (Fundo de Garantia por Tempo de Serviço).

� Este aplicativo deve realizar toda interação com o usuário através da janela de comando.

� Procure implementar este aplicativo de modo que sua interação com o usuário se estabeleça exatamente como

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

interação com o usuário se estabeleça exatamente como você pode observar na figura do slide seguinte.

Page 42: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 1

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 43: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 1

� Se o nome informado não for válido, o aplicativo deve imprimir uma mensagem de erro e solicitá-lo novamente.

� O nome deve conter de 5 a 50 caracteres.

� O nome não pode conter números.

� Se o salário informado não for válido, o aplicativo deve imprimir uma mensagem de erro e solicitá-lo novamente.

� O salário deve ser um número fracionário.

� O salário deve ser igual ou superior a R$ 465,00.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� O salário deve ser igual ou superior a R$ 465,00.

� Ao final, o aplicativo deve imprimir os dados que serão registrados no recibo de pagamento do usuário:

� Seu nome.

� Seu salário.

� O FGTS a ser depositado.

� O valor do FGTS deve ser calculado pelo aplicativo e corresponde a 8% do salário.

Page 44: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 2

� Crie um novo aplicativo, chamado Exercicio1002, que solicite um número inteiro e indique se ele é um número primo.

� Os números primos são números inteiros com apenas dois divisores: ele mesmo e o número um.

� O 17 é um exemplo de número primo porque só pode ser dividido por ele mesmo e por um.

� Este aplicativo deve realizar toda interação com o usuário através da janela de comando. A figura do slide seguinte ilustra como isto deve ser realizado.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

ilustra como isto deve ser realizado.

� Procure implementar este aplicativo de modo que sua interação com o usuário se estabeleça exatamente como você pode observar nesta figura.

Page 45: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 2

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 46: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 2

� O número informado deve ser maior que um e deve ser menor ou igual a 2.147.483.647.

� Se o dado informado não for um número, deve-se exibir a seguinte mensagem de erro: “Erro: dado inválido!”.

� Se o número não for maior que um, deve-se exibir a seguinte mensagem de erro: “Erro: o número deve ser maior que 1!”.

� Este aplicativo deve permitir que seja analisada qualquer quantidade de números.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Depois que o usuário indicar um número e for indicado se ele é primo, o aplicativo deve solicitar outro número para repetir a operação.

� Este procedimento deve se repetir indefinidamente e o aplicativo só deve ser encerrado quando o usuário digitar “SAIR”.

Page 47: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 2

� Procure implementar o algoritmo deste aplicativo de modo que ele realize esta tarefa no menor tempo possível.

� Propõe-se, como desafio, que você tente expandir o limite máximo que o usuário pode informar para 9.223.372.036.854.775.807.

� Tente otimizar o algoritmo para que ele seja capaz de analisar números tão grandes como este em um tempo plausível.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 48: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 3

� Crie um novo aplicativo, chamado Exercicio1003, que gere os números que compõe a Seqüência de Fibonacci.

� Esta seqüência é uma função recursiva que objetiva gerar um conjunto de números inteiros.

� Os dois primeiros elementos desta seqüência são: {1,1}.

� O terceiro número e todos os demais números desta seqüência são definidos pela soma dos dois números anteriores.

� O terceiro número, portanto, será o dois (resultado da soma: 1 + 1), o quarto número será o três (resultado da soma: 2 + 1), o

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

1), o quarto número será o três (resultado da soma: 2 + 1), o quinto número será o cinco (resultado da soma: 3 + 2) e assim sucessivamente.

� A lista dos dez primeiros números desta seqüência são os seguintes: f(M=10) = {1,1,2,3,5,8,13,21,34,55}

Page 49: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 3

� Este aplicativo deve realizar toda interação com o usuário através da janela de comando.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 50: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 3

� O aplicativo deverá solicitar ao usuário o a quantidade de números que deverão ser gerados.

� O número informado deve ser maior ou igual a três.

� O número deve ser menor ou igual a 92.

� Armazene a quantidade informada em uma variável do tipo byte.

� Se o dado informado não for um número ou se for um número superior à capacidade do tipo byte, o aplicativo deve produzir a seguinte mensagem de erro: “Erro: dado inválido!”.

Se o número for menor que três ou maior que 92, o aplicativo

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Se o número for menor que três ou maior que 92, o aplicativo deve produzir a seguinte mensagem de erro: “Erro: a quantidade deve estar entre 3 e 92!”.

Page 51: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 4

� Crie um novo aplicativo, chamado Exercicio1004, que solicite um número inteiro e indique se ele é um número perfeito.

� Um número perfeito é um número inteiro para o qual a soma de todos os seus divisores positivos menores que ele é igual ao próprio número.

� O número seis é um exemplo de número perfeito porque a soma de seus divisores é igual a ele próprio: 1 + 2 + 3 = 6.

� Este aplicativo deve realizar toda interação com o usuário através da janela de comando. A do slide seguinte ilustra

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

através da janela de comando. A do slide seguinte ilustra como isto deve ser realizado.

� Procure implementar este aplicativo de modo que sua interação com o usuário se estabeleça exatamente como você pode observar nesta figura.

Page 52: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 4

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 53: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 4

� O número informado deve ser maior que zero e deve ser menor ou igual a 32.767.

� Se o dado informado não for um número ou se for um número superior a 32767, o aplicativo deve produzir a seguinte mensagem de erro: “Erro: dado inválido!”.

� Se o número não for maior que zero, o aplicativo deve produzir a seguinte mensagem de erro: “Erro: o número deve ser maior que zero!”.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 54: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 5

� Crie um novo aplicativo, chamado Exercicio1005, que permita o registro de dados coletados através de pesquisa de campo junto a uma amostra de até 100 pessoas.

� Os dados coletados junto a cada pessoa são apenas três: seu nome, sua idade e seu estado civil.

� Este aplicativo deve realizar toda interação com o usuário através de diálogos gráficos.

� A Figura do slide seguinte ilustra como isto deve ser realizado.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

A Figura do slide seguinte ilustra como isto deve ser realizado.

� Procure implementar este aplicativo de modo que sua interação com o usuário se estabeleça exatamente como você pode observar nesta figura.

Page 55: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 5

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Page 56: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 5

� Armazene os nomes dos entrevistados em um vetor de string

� Utilize uma matriz do tipo byte para armazenar as idades e os estados civis.

� Armazene o estado civil como um byte que represente o código de um dos seguintes caracteres: S, C, V, D, O.

� Eles representarão, respectivamente, os seguintes estados civis: solteiro(a), casado(a), viúvo(a), divorciado(a) e outros.

� Quando o usuário cancelar um dos diálogos de entrada, o

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Quando o usuário cancelar um dos diálogos de entrada, o aplicativo deve considerar que os dados de todos os entrevistados já foram registrados.

� Nesse caso, realizar os cálculos estatísticos sobre estes dados e exibir o relatório final através de um diálogo gráfico de saída.

� No relatório, devem constar as seguintes informações:

� Os dados de todas as pessoas entrevistadas.

� A média de idade dos entrevistados.

� O percentual de pessoas que se enquadra em cada estado civil.

Page 57: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Exercício 5

� Se um dado informado não for válido, o aplicativo deve emitir uma mensagem de erro e solicitá-lo novamente.

� A validade dos dados será quebrada nas situações descritas abaixo e as mensagens de erro que devem ser exibidas são aquelas indicadas:

� Se o nome contém menos de 5 ou mais de 50 caracteres, exiba a mensagem de erro: “O nome deve conter de 5 a 50 caracteres!”.

� Se o nome contiver dígitos numéricos, exiba a mensagem de erro: “O nome não deve conter números!”.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Se o nome contiver dígitos numéricos, exiba a mensagem de erro: “O nome não deve conter números!”.

� Se a idade não for um número inteiro ou se for um número inteiro superior a 127, exiba a mensagem de erro: “Dado inválido!”.

� Se a idade for menor que zero, exiba a mensagem de erro: “Não existe idade negativa!”.

� Se o estado civil informado não for um único caractere, exiba a mensagem de erro: “Informe um caractere!”.

� Se o estado civil informado não for um dos caracteres previstos (S, C, V, D e O), exiba a mensagem de erro: “Opção inválida!”.

Page 58: Capítulo 10 · Introdução Código 10.1 –Excecao.java O aplicativo deve solicitar um número inteiro e exibir o seu cubo. Utilize um diálogo gráfico para solicitar e exibir

Contato

Com o autor:

Rui Rossi dos Santos

E-mail: [email protected]

Web Site: http://www.ruirossi.pro.br

Com a editora:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Com a editora:

Editora NovaTerra

E-mail Geral: [email protected]

E-mail Comercial: [email protected]

Web Site: http://www.editoranovaterra.com.br