You are on page 1of 34

Programação I

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

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

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

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

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

java (será fornecida pelo professor). apenas visualizamos a saída de dados e alteramos os atributos de nossos objetos diretamente no código fonte • Então. 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.Entrada de dados • Até o momento. após isso. vamos criar uma classe chamada TestaPessoa que permiterá entrar com os dados via teclado e. • Teclado t = new Teclado(). .

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

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.Entrada de dados • Exercício. O cálculo do IMC é feito através do peso / (altura2) .

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). . nos exemplos anteriores.Entrada de dados (com mensagem) • Aprendemos que a classe teclado possui três métodos para leitura de tipos de diferentes (int. public String leString(String msg). double e String) • Contudo. public double leDouble(String msg).

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

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 .Entrada de dados (com mensagem) • Exercício.

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

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 .

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. devemos adicionar o sufixo L ou l ao número. pois está na faixa do tipo int. • Ex: • 1147465 é tratado como int. • 1147465L é tratado como long. Para armazenar um inteiro como long. • 3000000000 dá o erro de compilação integer number too large. devido ao sufixo. .

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

3. • Ex: • • • • • 3.1415F é float.141592837646473637F será um float. 3. . 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. • Caso o valor estiver numa faixa viável ao tipo float. 3.Expressões Aritméticas • Números de ponto flutuante • Em Java.0.141524357576575789 é tratado como double.1415 é tratado como double. 4D será um double. que valerá 4. número com ponto decimal é tratado como double.

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

ou podem fazer parte de um string. • Ex: char c = 'C'. '?‘ • Uma variável pode ser do tipo char. . '+'. 'M'. Ex: 'a'.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. • Caracteres de escape • Representam caracteres especiais que podem ser atribuídos às variáveis do tipo char e String.

Expressões Aritméticas • Caracteres de escape .

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

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. short s = y.int <. // i ficará com -2 .0 byte y = -2.float <. // s assumirá valor -2 int i = y.byte • Exemplo: long x = 12678.short <. e sem perda de precisão: • double <.long <. sem qualquer artifício. // dd ficará com 12678. double dd = x.

• Usa-se um conversor (ou cast). //perde-se a parte decimal short s = (short) 50000.789.7. // 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 . pois a conversão descarta a parte decimal short s = (short) ii. que é a colocação do tipo de destino entre parênteses antes do valor a ser convertido • Ex: double dd = 6. //s guardará 6 – não houve perda nenhuma byte b = (byte) 6. // ii guardará o valor 6. int ii = (int) dd.Expressões Aritméticas • Conversão explícita (Coerção ou cast).

) + (adição) . ou resto da divisão inteira) • 2º.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.(subtração) • Ex: x * y •7/n • m % n // resto da divisão inteira de m por n .

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

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

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

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

como já foi visto. de duas maneiras. • Ex: m++. // mesmo que m = m + 1. m--. int m = 10. // podem ser aplicados a campos de ponto flutuante . // mesmo que m = m – 1.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. Por exemplo.realizam a tarefa de incrementar ou decrementar 1. // m irá para 12 • Os operadores ++ e -. d++. m = m + 1. resultando 11 em m m += 1.51. // incrementa 1 a 10. double d = 6.

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

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

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

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

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

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