ruirossi@ruirossi.pro.br



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

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Capítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

Capítulo 9. Vetores e Matrizes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções

UNIVERSIDADE FEDERAL DO PARANÁ

Java. Marcio de Carvalho Victorino

O que é uma Exceção? Call Stack. Java Tratamento de Exceção. de métodos que foram usados até chegar na presente instrução.

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Capítulo 7. Estruturas de Decisão. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Capítulo 5. Tratamento de excepções

BC0501 Linguagens de Programação

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Introdução a Algoritmos Parte 04

Curso Superior de Tecnologia emtelemática Programação Orientada a Objetos Streams em Java. Copyright 2010 Prof. César Rocha

2 Orientação a objetos na prática

Exercícios de Revisão Java Básico

Erros, exceçõ. ções e asserçõ

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Bacharelado em Ciência e Tecnologia BC Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

CURSO DE PROGRAMAÇÃO EM JAVA

Aula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4.

Simulado de Linguagem de Programação Java

Programação online em Java

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br

Desenvolvimento OO com Java Orientação a objetos básica

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Utilizem a classe Aula.java da aula passada:

Projeto de Software Orientado a Objeto

Faculdade de Ciências Universidade Agostinho Neto Departamento de Matemática e Engenharia Geográfica Ciências da Computação

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

Java : Comunicação Cliente-Servidor.

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Roteiro 1: Dados, variáveis, operadores e precedência

Caso 1 NetScanner Main

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

JSP - ORIENTADO A OBJETOS

JAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo

Programação II Java Streams. Christopher Burrows

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Sintaxe Básica de Java Parte 1

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

insfcanceof new public switch transient while byte continue extends for int null

FBV - Linguagem de Programação II. Um pouco sobre Java

Tratamento de Exceções

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Implementando uma Classe e Criando Objetos a partir dela

Programação Estruturada e Orientada a Objetos. Tratamento de Exceções

DEFINIÇÃO DE MÉTODOS

SUMÁRIO CAPÍTULO 1 INTRODUÇÃO AO JAVA... 1

Unidade IV: Ponteiros, Referências e Arrays

Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento

Programação de Computadores II TCC /Turma A 1

Vetores. Professor Dr Francisco Isidro Massettto

A Linguagem Java. Alberto Costa Neto DComp - UFS

RUI ROSSI DOS SANTOS PROGRAMAÇÃO DE COMPUTADORES EM. Java

Noções sobre Objetos e Classes

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Java 2 Standard Edition Como criar classes e objetos

Algoritmos e Programação Estruturada

Introdução a Java. Hélder Nunes

1.6. Tratamento de Exceções

Aula 30 - Sockets em Java

Capítulo 16. Pacotes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Ler e escrever bytes, caracteres e Strings de/para a entrada e saída padrão. Ler e escrever bytes, caracteres e Strings de/para arquivos

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Resumo da Matéria de Linguagem de Programação. Linguagem C

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Guia de Fatores de Qualidade de OO e Java

//Leitura de Variáveis System.out.print("Digite a temperatura atual: "); temp = leia.nextfloat();

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Programação de Computadores - I. Profª Beatriz Profº Israel

JDBC Java Database Connectivity

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

Estrutura Condicional em Java

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Mobile

Tratamento de Exceções. Alberto Costa Neto DComp - UFS

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Desktop

3 Classes e instanciação de objectos (em Java)

Conversão de Tipos e Arrays

Curso Java Starter. 1

Tipos agregados. Tipos estruturados

Objetivo do programa: Implementação de um analisador de Logs do Servidor Web com base nos requisitos da unidade curricular de Estatística.

Algoritmos e Programação

TÉCNICO DE TECNOLOGIA DA INFORMAÇÃO

Linguagem de Programação III

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Transcrição:

Tratamento de Exceções Rui Rossi dos Santos ruirossi@ruirossi.pro.br Mediador: Rui Rossi dos Santos Slide 1

o Exceção: condição anormal Introdução o Causas: Falhas na implementação Falhas na operação o O responsável o Qualidade de software Tolerância à falhas Mediador: Rui Rossi dos Santos Slide 2

o Código 10.1 Excecao.java Introdução 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. Mediador: Rui Rossi dos Santos Slide 3

o Bloco try Estrutura try-catch Delimita instruções que podem gerar exceções. Um bloco catch para cada tipo de exceção. Tipo = classe. o Sintaxe: try { <instruções> } catch (<tipo_da_exceção> <nome_da_exceção>) { <tratamento> } catch (<tipo_da_exceção> <nome_da_exceção>) { <tratamento> } Mediador: Rui Rossi dos Santos Slide 4

o Tratamento genérico: Estrutura try-catch Uso de tipo genérico: Exception o Sintaxe: try { <instruções> } catch (Exception ex) { <tratamento> } Mediador: Rui Rossi dos Santos Slide 5

o Código 10.2 Try.java Estrutura try-catch 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. A mensagem de erro padrão desta exceção. Mediador: Rui Rossi dos Santos Slide 6

o Código 10.2 Try.java Estrutura try-catch Mediador: Rui Rossi dos Santos Slide 7

Estrutura try-catch o 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: Em caso de NumberFormatException: Número inválido! Em caso de ArithmeticExceptino: O divisor não pode ser zero! Mediador: Rui Rossi dos Santos Slide 8

Estrutura try-catch o Código 10.3 TratamentoMultiplo.java Mediador: Rui Rossi dos Santos Slide 9

Estrutura try-catch o 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 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. Mediador: Rui Rossi dos Santos Slide 10

Estrutura try-catch o Código 10.4 ValidaInteiro.java Mediador: Rui Rossi dos Santos Slide 11

o Objetivo: Bloco Finally Garantir a execução de determinadas instruções. o Requisito: Vínculo com estrutura try-catch o Sintaxe: try { <instruções> } catch (<tipo_da_exceção> <nome_da_exceção>) { <tratamento> } finally { <instruções> } Mediador: Rui Rossi dos Santos Slide 12

o Código 10.5 Finally.java Bloco Finally 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. Mediador: Rui Rossi dos Santos Slide 13

o Código 10.5 Finally.java Bloco Finally Mediador: Rui Rossi dos Santos Slide 14

o Uma exceção é uma classe A Hierarquia das Exceções o Cada classe têm uma ancestral direta Pai ou mãe? Mediador: Rui Rossi dos Santos Slide 15

A Hierarquia das Exceções Mediador: Rui Rossi dos Santos Slide 16

Tratamento Obrigatório e Tratamento Opcional o 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 - Ausência de arquivos Mediador: Rui Rossi dos Santos Slide 17

Tratamento Obrigatório e Tratamento Opcional o 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 - 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 Mediador: Rui Rossi dos Santos Slide 18

Tratamento de Checked Exceptions o 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. Mediador: Rui Rossi dos Santos Slide 19

Tratamento de Checked Exceptions o Código 10.6 TratamentoObrigatorio.java Mediador: Rui Rossi dos Santos Slide 20

Tratamento de Checked Exceptions Código 10.6 TratamentoObrigatorio.java. 1 import java.io.filereader; 2 import java.io.bufferedreader; 3 4 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); 9 10 while(true) { 11 String linha = br.readline(); 12 if(linha == null) break; 13 texto += linha + "\n"; 14 } 15 16 br.close(); 17 fr.close(); 18 System.out.println(texto); 19 } 20 } Mediador: Rui Rossi dos Santos Slide 21

Tratamento de Checked Exceptions Có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; 5 6 public class TratamentoObrigatorio { 7 public static void main(string[] args) { 8 String texto = ""; 9 FileReader fr = null; 10 11 try { 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 Mediador: Rui Rossi dos Santos Slide 22

Tratamento de Checked Exceptions Código 10.7 TratamentoObrigatorio.java. 19 try { 20 BufferedReader br = new BufferedReader(fr); 21 22 while(true) { 23 String linha = br.readline(); 24 if(linha == null) break; 25 texto += linha + "\n"; 26 } 27 28 br.close(); 29 fr.close(); 30 } 31 catch (IOException ioex) { 32 System.out.println("Erro durante a leitura do arquivo!"); 33 System.exit(0); 34 } 35 36 System.out.println(texto); 37 System.exit(0); 38 } 39 } Mediador: Rui Rossi dos Santos Slide 23

o NullPointerException Tratamento para 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. Mediador: Rui Rossi dos Santos Slide 24

Tratamento para NullPointerException o 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. Mediador: Rui Rossi dos Santos Slide 25

Tratamento para NullPointerException o Código 10.8 TratamentoNull.java Mediador: Rui Rossi dos Santos Slide 26

Tratamento para NullPointerException Código 10.8 TratamentoNull.java. 1 import javax.swing.joptionpane; 2 3 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 } Mediador: Rui Rossi dos Santos Slide 27

Tratamento para NullPointerException Código 10.9 TratamentoNull.java. 1 import javax.swing.joptionpane; 2 3 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 } Mediador: Rui Rossi dos Santos Slide 28

Tratamento para ArrayIndexOutOfBoundsException o ArrayIndexOutOfBoundsException Descendente indireta de RuntimeException Uma unchecked exception Causas comuns: - Acesso a elemento de vetor/matriz com índice ilegal. Exemplo: int[ ] fibonacci = {1,1,2,3,5,8,13,21}; int n = fibonacci[8]; Mediador: Rui Rossi dos Santos Slide 29

Tratamento para ArrayIndexOutOfBoundsException o 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. Mediador: Rui Rossi dos Santos Slide 30

Tratamento para ArrayIndexOutOfBoundsException o Código 10.10 TratamentoArray.java Mediador: Rui Rossi dos Santos Slide 31

Tratamento para ArrayIndexOutOfBoundsException Código 10.10 TratamentoArray.java. 1 public class TratamentoArray { 2 public static void main(string[] args) { 3 String[] amigos = {"Cláudia","Vanessa","Raul","Sidnei"}; 4 5 for (byte num = 1; num <= amigos.length; num++) 6 System.out.println("Amigo " + num + ": " + amigos[num]); 7 } 8 } Mediador: Rui Rossi dos Santos Slide 32

Tratamento para ArrayIndexOutOfBoundsException Código 10.11 TratamentoArray.java. 1 public class TratamentoArray { 2 public static void main(string[] args) { 3 String[] amigos = {"Cláudia","Vanessa","Raul","Sidnei"}; 4 5 for (byte num = 0; num < amigos.length; num++) 6 System.out.println("Amigo " + (num + 1) + ": " + amigos[num]); 7 } 8 } Mediador: Rui Rossi dos Santos Slide 33

Tratamento para InputMismatchException o 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: - Método nextint( ) invocado - Usuário digita: 55,33 Mediador: Rui Rossi dos Santos Slide 34

Tratamento para InputMismatchException o 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. Mediador: Rui Rossi dos Santos Slide 35

Tratamento para InputMismatchException Código 10.12 TratamentoInput.java. 1 import java.util.scanner; 2 3 public class TratamentoInput { 4 public static void main(string[] args) { 5 Scanner scan = new Scanner(System.in); 6 7 System.out.print("Informe sua idade:\t"); 8 byte idade = scan.nextbyte(); 9 10 System.out.println("Sua idade:\t\t" + idade); 11 } 12 } Mediador: Rui Rossi dos Santos Slide 36

Tratamento para InputMismatchException Código 10.13 TratamentoInput.java. 1 import java.util.scanner; 2 import java.util.inputmismatchexception; 3 4 public class TratamentoInput { 5 public static void main(string[] args) { 6 byte idade = -1; 7 8 while (idade < 0) { 9 System.out.print("\nInforme sua idade:\t"); 10 Scanner scan = new Scanner(System.in); 11 12 try { 13 idade = scan.nextbyte(); 14 } 15 catch (InputMismatchException ime) { 16 System.out.println("Idade inválida!"); 17 } 18 } 19 20 System.out.println("Sua idade:\t\t" + idade); 21 } 22 } Mediador: Rui Rossi dos Santos Slide 37

o Tipo: checked exceptions Tratamento para Outras Exceções O compilador avisa Tratamento obrigatório com estrutura try-catch o Tipo: unchecked exceptions Causa sob área de domínio do programador - Alterar algoritmo do programa - Não utilizar estrutura try-catch - Exemplos: NullPointerException ArrayIndexOutOfBoundsException ArithmeticException Causa fora da área de domínio do programador - Tratar com estrutura try-catch - Exemplos: InputMismatchException NumberFormatException Mediador: Rui Rossi dos Santos Slide 38

Exercício 1 o 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). o Este aplicativo deve realizar toda interação com o usuário através da janela de comando. o Procure implementar este aplicativo de modo que sua interação com o usuário se estabeleça exatamente como você pode observar na figura do slide seguinte. Mediador: Rui Rossi dos Santos Slide 39

Exercício 1 Mediador: Rui Rossi dos Santos Slide 40

Exercício 1 o 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. o 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. o 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 O valor do FGTS deve ser calculado pelo aplicativo e corresponde a 8% do salário. Mediador: Rui Rossi dos Santos Slide 41

Exercício 2 o 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. o 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. Procure implementar este aplicativo de modo que sua interação com o usuário se estabeleça exatamente como você pode observar nesta figura. Mediador: Rui Rossi dos Santos Slide 42

Exercício 2 Mediador: Rui Rossi dos Santos Slide 43

Exercício 2 o 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!. o Este aplicativo deve permitir que seja analisada qualquer quantidade de números. 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. Mediador: Rui Rossi dos Santos Slide 44

Exercício 2 o 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. Mediador: Rui Rossi dos Santos Slide 45

Exercício 3 o 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 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} Mediador: Rui Rossi dos Santos Slide 46

Exercício 3 o Este aplicativo deve realizar toda interação com o usuário através da janela de comando. Mediador: Rui Rossi dos Santos Slide 47

Exercício 3 o 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 deve produzir a seguinte mensagem de erro: Erro: a quantidade deve estar entre 3 e 92!. Mediador: Rui Rossi dos Santos Slide 48

Exercício 4 o 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. o Este aplicativo deve realizar toda interação com o usuário 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. Mediador: Rui Rossi dos Santos Slide 49

Exercício 4 Mediador: Rui Rossi dos Santos Slide 50

Exercício 4 o 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!. Mediador: Rui Rossi dos Santos Slide 51

Exercício 5 o 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. o 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. Procure implementar este aplicativo de modo que sua interação com o usuário se estabeleça exatamente como você pode observar nesta figura. Mediador: Rui Rossi dos Santos Slide 52

Exercício 5 Mediador: Rui Rossi dos Santos Slide 53

Exercício 5 o Armazene os nomes dos entrevistados em um vetor de string o 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. o 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. o 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. Mediador: Rui Rossi dos Santos Slide 54

Exercício 5 o Se um dado informado não for válido, o aplicativo deve emitir uma mensagem de erro e solicitá-lo novamente. o 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!. 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!. Mediador: Rui Rossi dos Santos Slide 55