A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.

Apresentações semelhantes


Apresentação em tema: "Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009."— Transcrição da apresentação:

1 Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009

2 Métodos que retornam valor Quando um método termina sua execução, ele devolve o controle da máquina para o método que o chamou. Além disso, um método pode, neste momento, devolver junto um valor Para que um método devolva um valor: na sua declaração, a palavra void deve ser substituída pelo tipo do valor a ser devolvido pelo método no bloco de código do método deve haver pelo menos um comando return expressão; a chamada do método deve ser feita no lugar onde caberia colocar um valor do tipo que ele retorna

3 Métodos que retornam valor Sintaxe return expressão; (está relacionando com o tipo de retorno do método) return; (sair imediatamente do programa, retornando o valor nulo correspondente ao tipo de dado Normalmente, encontramos nos métodos “getters” Pessoa p1 = new Pessoa(); p1.setNome(“João da Silva”); System.out.println(p1.getNome()); // uso do return Implementação do método getNome() Public String getNome() { return nome; }

4 Métodos que retornam valor Podemos alterar o método exibeDados() da nossa classe Pessoa, utilizando os métodos de retorno (getters): public void exibeDados() { System.out.println(“Nome: “ + getNome()); System.out.println(“Peso: “ + getPeso()); System.out.println(“Altura: “ + getAltura()); System.out.println(“Idade: “ + getIdade()); } Podemos utilizar o método de retorno na classe TestaPessoa, conforme exemplo a seguir: public class TestaPessoa{ public static void main(String args[]) { Pessoa p1 = new Pessoa(“João da Silva”, 1.80, 80.0, 30); System.out.println(“Nome da pessoa é: “ + p1.getNome()); }

5 Métodos que retornam valor Exercício. Desenvolva o diagrama de classes (UML) e implemente os métodos “getters”. Após isso, crie a classe teste e instancie objetos, bem como a visualização dos seus dados utilizando o System.out.println + getter. A classe em questão é o usuário do MSN, ou seja, temos um usuário (que é o e-mail) e sua senha. Após isso, identifique alguns atributos desta classe de forma a gerar os métodos “getters”.

6 Entrada de dados Até o momento, apenas visualizamos a saída de dados e alteramos os atributos de nossos objetos diretamente no código fonte Então, vamos criar uma classe chamada TestaPessoa que permiterá entrar com os dados via teclado e, após isso, criar o objeto com os dados digitados pelo teclado Nossa classe de leitura do teclado (Teclado.java) possui três métodos: public int leInt() public double leDouble() public String leString() Os métodos acima são VOID? Porque? Precisaremos instanciar a classe Teclado.java (será fornecida pelo professor). Teclado t = new Teclado();

7 Entrada de dados Exercício. Como ficaria nossa classe TestaPessoa solicitando os dados: nome, altura, peso e idade?

8 Entrada de dados Exercício. Altere a classe Pessoa e inclua dois métodos: private double calculaIMC() public double getIMC() Detalhe: Solicite o nome, peso e altura para o cálculo. O cálculo do IMC é feito através do peso / (altura 2 )

9 Entrada de dados (com mensagem) Aprendemos que a classe teclado possui três métodos para leitura de tipos de diferentes (int, double e String) Contudo, nos exemplos anteriores, foi necessário colocar uma mensagem antes da solicitação do valor do atributo Podemos utilizar os seguintes métodos que possuem a mensagem ao ser solicitada a entrada do valor do atributo: public int leInt(String msg); public double leDouble(String msg); public String leString(String msg);

10 Entrada de dados (com mensagem) Exercício. Como ficaria a nossa classe TestaPessoa ao ser calculado o IMC utilizando os métodos de entrada de dados com mensagem?

11 Entrada de dados (com mensagem) Exercício. Como não utilizar as variáveis locais? Até mesmo o objeto “p1” para o método exibeDados? Explique os problemas futuros na implementação

12 Expressões Aritméticas De forma indireta já estamos utilizando expressões aritméticas, em qual momento?

13 Expressões Aritméticas Tipos de dados Inteiros correspondem aos números NATURAIS Números com casas decimais ou ponto flutuante correspondem aos números REAIS

14 Expressões Aritméticas Números Inteiros: Java interpreta um número escrito sem ponto decimal como int. Se o valor extrapolar os limites do tipo int, será tratado como inteiro muito grande e dará erro de compilação. Para armazenar um inteiro como long, devemos adicionar o sufixo L ou l ao número. Ex: 1147465 é tratado como int, pois está na faixa do tipo int; 1147465L é tratado como long, devido ao sufixo; 3000000000 dá o erro de compilação integer number too large.

15 Expressões Aritméticas Exercício Complete as linhas seguintes: -5 é tratado como _____________ -34567890987 é tratado como _____________________ -5L é do tipo _____________ "50" é do tipo ____________

16 Expressões Aritméticas Números de ponto flutuante Em Java, número com ponto decimal é tratado como double. Caso o valor estiver numa faixa viável ao tipo float, podemos usar o sufixo F ou f para que ele seja tratado O sufixo D ou d também pode ser usado para informar ao compilador que desejamos tratá-lo como double. Ex: 3.1415 é tratado como double; 3.1415F é float; 3.141524357576575789 é tratado como double; 3.141592837646473637F será um float; 4D será um double, que valerá 4.0;

17 Expressões Aritméticas Exercício. Complete as seguintes linhas: -1837469382988983909.7 é do tipo _________ -456.678787997907575796795797F é __________ 5F é __________ “5F” é do tipo _________

18 Expressões Aritméticas O tipo primitivo char O tipo primitivo char corresponde a um único caractere (Unicode) escrito entre apóstrofos, que ocupa espaço de dois bytes no seu armazenamento. Ex: 'a', 'M', '+', '?‘ Uma variável pode ser do tipo char. Ex: char c = 'C'; Caracteres de escape Representam caracteres especiais que podem ser atribuídos às variáveis do tipo char e String, ou podem fazer parte de um string.

19 Expressões Aritméticas Caracteres de escape

20 Expressões Aritméticas Classe que demonstra o limite de cada tipo de dado public class testaTipoDado { public static void main(String[] args) { System.out.println("Tipos de dados em Java: \n" + "\nMenor Byte: " + Byte.MIN_VALUE + "\nMaior Byte: " + Byte.MAX_VALUE + "\nMenor Short Int: " + Short.MIN_VALUE + "\nMaior Short Int: " + Short.MAX_VALUE + "\nMenor Int: " + Integer.MIN_VALUE + "\nMaior Int: " + Integer.MAX_VALUE + "\nMenor Long: " + Long.MIN_VALUE + "\nMaior Long:" + Long.MAX_VALUE + "\nMenor Float: " + Float.MIN_VALUE + "\nMaior Float: " + Float.MAX_VALUE + "\nMenor Double: " + Double.MIN_VALUE + "\nMaior Double: " + Double.MAX_VALUE); }

21 Expressões Aritméticas Conversão entre tipos de dados Conversão implícita É permitido converter qualquer tipo abaixo para um que esteja à sua esquerda, sem qualquer artifício, e sem perda de precisão: double <- float <- long <- int <- short <- byte Exemplo: long x = 12678; double dd = x; // dd ficará com 12678.0 byte y = -2; short s = y; // s assumirá valor -2 int i = y; // i ficará com -2

22 Expressões Aritméticas Conversão explícita (Coerção ou cast). Usa-se um conversor (ou cast), que é a colocação do tipo de destino entre parênteses antes do valor a ser convertido Ex: double dd = 6.789; int ii = (int) dd; // ii guardará o valor 6, pois a conversão descarta a parte decimal short s = (short) ii; //s guardará 6 – não houve perda nenhuma byte b = (byte) 6.7; //perde-se a parte decimal short s = (short) 50000; // CUIDADO – como o tipo short não comporta 50000, será atribuído um valor aleatório a s – erro que não é acusado pelo sistema

23 Expressões Aritméticas Operadores aritméticos básicos Na ordem decrescente de prioridade dentro de uma expressão aritmética: 1º. ) * (multiplicação) / (divisão) % (módulo, ou resto da divisão inteira) 2º. ) + (adição) - (subtração) Ex: x * y 7 / n m % n // resto da divisão inteira de m por n

24 Expressões Aritméticas Regras importantes Geralmente, a operação resulta um tipo que é grande o suficiente para conter o resultado. Por exemplo, multiplicando um float por um int obtém-se um float. Ex: 4F * 2 resulta 8.0F O resultado da divisão de dois inteiros é sempre inteiro. Ex: 7 / 2 resulta 3. A presença de um float ou double na expressão, causa um resultado float ou double. Ex: 7F / 2 resulta 3.5. Quando há mais de um operador, as regras de prioridades serão respeitadas. Ex: 4 + 7 / 2 resultará 7, pois a divisão é feita antes da adição. Subexpressões entre parênteses terão maior prioridade. Ex: (4 + 7) / 2.0 resultará 5.5.

25 Expressões Aritméticas Exercícios Indique o valor e o tipo do resultado de cada expressão abaixo: 5000000000L + 500 5F * 3.0 (3 + 4) / (2 * 2) 2 * (3.5 + (7 + 2) * 3.0) / 2 Indique que valor será gravado nas respectivas variáveis nas atribuições abaixo, ou informe se é operação inválida e porquê. double x = 3 * 5; int i = 5 / 2f; int i = i + 1;

26 Expressões Aritméticas Operadores de atribuição Pode-se combinar uma operação com uma atribuição. Por exemplo, a atribuição n=n+2; pode ser escrita como n+=2; Os diversos operadores de atribuição de Java são mostrados na tabela seguinte:

27 Expressões Aritméticas Operadores de atribuição Exemplo: int k = 6; int s = 2; s += k; // mesmo que s = s + k; s = 8, k = 6 s %= 5; // mesmo que s = s % 5; (resto da divisão de s por 5). s = 3

28 Expressões Aritméticas Operadores de incremento e de decremento É muito comum nos programas incrementar 1 a uma variável, o que se pode fazer, como já foi visto, de duas maneiras. Por exemplo, int m = 10; m = m + 1; // incrementa 1 a 10, resultando 11 em m m += 1; // m irá para 12 Os operadores ++ e -- realizam a tarefa de incrementar ou decrementar 1. Ex: m++; // mesmo que m = m + 1; m--; // mesmo que m = m – 1; double d = 6.51; d++; // podem ser aplicados a campos de ponto flutuante

29 Expressões Aritméticas Operadores de incremento e de decremento Os operadores de incremento e de decremento podem ser pós- fixados, quando vêm colocados após a variável, ou pré-fixados, quando vêm antes. Se pós-fixado, a variável é utilizada e depois é incrementada (ou decrementada). Se pré-fixado, a variável é incrementada (ou decrementada) e depois utilizada. Ex: o trecho int i = 5; System.out.println(++i + “ “ + i++ + “ “ + i); QUAL A SAÍDA DA INSTRUÇÃO ACIMA?

30 Expressões Aritméticas Exercício. Que valores serão exibidos pelo trecho abaixo? int a = 15; int b = 4; int c = a++ + --b; System.out.println(a + “ “ + b + “ “ + c);

31 Expressões Aritméticas A classe Math A classe java.lang.Math possui diversos métodos que implementam operações matemáticas úteis. Seu uso dispensa o comando import (veremos adiante) pois ela é carregada automaticamente. static double random( ) Retorna um double randômico no intervalo [0, 1.0). Ex: double r = Math.random(); // grava em r um randômico Ex: int i = 1 + (int) (Math.random() * 10) // grava em i um randômico obtido no intervalo de 1 a 10. static double sqrt (double a) Retorna um double que é a raiz quadrada positiva de a. Ex: double y = 25; System.out.println (Math.sqrt(y)); //Exibe 5.0 static double pow (double b, double e) Eleva a base b ao expoente e, retornado double. Ex: double p = Math.pow(2, 3); // atribui 8.0 a p

32 Expressões Aritméticas Exercício. Escrever em Java a fórmula de Bhaskara

33 Expressões Aritméticas Exercício. Crie uma classe Circulo e os métodos calculaArea e calculaPerimetro da classe Circulo. Eles devem devolver os valores calculados. Crie uma classe TestaCirculo para criar um objeto círculo e imprimir sua área e seu perímetro. Área do círculo: Pi x r 2 Perímetro: 2 * Pi x r Para o valor do Pi, utilize Math.PI

34 Métodos Referências bibliográficas http://inf.unisinos.br/~anibal http://www.google.com.br


Carregar ppt "Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009."

Apresentações semelhantes


Anúncios Google