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

Upload: others

Post on 04-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

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