Você está na página 1de 34

Programao I

Aula 3
(Entrada de Dados)
Prof. Gilberto Iraj Mller
ltima atualizao 11/3/2009

Mtodos que retornam valor


Quando um mtodo termina sua execuo, ele
devolve o controle da mquina para o mtodo
que o chamou. Alm disso, um mtodo pode,
neste momento, devolver junto um valor

Para que um mtodo devolva um valor:


na sua declarao, a palavra void deve ser substituda
pelo tipo do valor a ser devolvido pelo mtodo
no bloco de cdigo do mtodo deve haver pelo menos
um comando return expresso;
a chamada do mtodo deve ser feita no lugar onde
caberia colocar um valor do tipo que ele retorna

Mtodos que retornam valor


Sintaxe
return expresso; (est relacionando com o tipo de retorno do mtodo)
return; (sair imediatamente do programa, retornando o valor nulo
correspondente ao tipo de dado

Normalmente, encontramos nos mtodos getters


Pessoa p1 = new Pessoa();
p1.setNome(Joo da Silva);
System.out.println(p1.getNome()); // uso do return

Implementao do mtodo getNome()


Public String getNome() {
return nome;
}

Mtodos que retornam valor


Podemos alterar o mtodo exibeDados() da nossa classe Pessoa,
utilizando os mtodos 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 mtodo de retorno na classe TestaPessoa,


conforme exemplo a seguir:
public class TestaPessoa{
public static void main(String args[]) {
Pessoa p1 = new Pessoa(Joo da Silva, 1.80, 80.0, 30);
System.out.println(Nome da pessoa : + p1.getNome());
}
}

Mtodos que retornam valor


Exerccio. Desenvolva o diagrama de classes (UML) e implemente
os mtodos getters. Aps isso, crie a classe teste e instancie
objetos, bem como a visualizao dos seus dados utilizando o
System.out.println + getter.

A classe em questo o usurio do MSN, ou seja, temos um


usurio (que o e-mail) e sua senha. Aps isso, identifique alguns
atributos desta classe de forma a gerar os mtodos getters.

Entrada de dados
At o momento, apenas visualizamos a sada de dados e alteramos
os atributos de nossos objetos diretamente no cdigo fonte
Ento, vamos criar uma classe chamada TestaPessoa que
permiter entrar com os dados via teclado e, aps isso, criar o
objeto com os dados digitados pelo teclado

Nossa classe de leitura do teclado (Teclado.java) possui trs


mtodos:
public int leInt()
public double leDouble()
public String leString()
Os mtodos acima so VOID? Porque?

Precisaremos instanciar a classe Teclado.java (ser fornecida pelo


professor).
Teclado t = new Teclado();

Entrada de dados
Exerccio. Como ficaria nossa classe TestaPessoa solicitando os
dados: nome, altura, peso e idade?

Entrada de dados
Exerccio. Altere a classe Pessoa e inclua dois mtodos:
private double calculaIMC()
public double getIMC()
Detalhe: Solicite o nome, peso e altura para o clculo. O clculo do
IMC feito atravs do peso / (altura2)

Entrada de dados (com


mensagem)

Aprendemos que a classe teclado possui trs mtodos para leitura


de tipos de diferentes (int, double e String)

Contudo, nos exemplos anteriores, foi necessrio colocar uma


mensagem antes da solicitao do valor do atributo

Podemos utilizar os seguintes mtodos 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);

Entrada de dados (com


mensagem)

Exerccio. Como ficaria a nossa classe TestaPessoa ao ser


calculado o IMC utilizando os mtodos de entrada de dados com
mensagem?

Entrada de dados (com


mensagem)

Exerccio. Como no utilizar as variveis locais? At mesmo o


objeto p1 para o mtodo exibeDados?

Explique os problemas futuros na implementao

Expresses Aritmticas
De forma indireta j estamos utilizando expresses aritmticas,
em qual momento?

Expresses Aritmticas
Tipos de dados

Inteiros correspondem aos nmeros NATURAIS


Nmeros com casas decimais ou ponto flutuante correspondem aos
nmeros REAIS

Expresses Aritmticas
Nmeros Inteiros:
Java interpreta um nmero 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
compilao. Para armazenar um inteiro como long,
devemos adicionar o sufixo L ou l ao nmero.

Ex:
1147465 tratado como int, pois est na faixa do tipo int;
1147465L tratado como long, devido ao sufixo;
3000000000 d o erro de compilao integer number too
large.

Expresses Aritmticas
Exerccio
Complete as linhas seguintes:

-5 tratado como _____________


-34567890987 tratado como _____________________
-5L do tipo _____________
"50" do tipo ____________

Expresses Aritmticas
Nmeros de ponto flutuante
Em Java, nmero com ponto decimal tratado como
double.
Caso o valor estiver numa faixa vivel ao tipo float,
podemos usar o sufixo F ou f para que ele seja tratado
O sufixo D ou d tambm 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;

Expresses Aritmticas
Exerccio.
Complete as seguintes linhas:

-1837469382988983909.7 do tipo _________


-456.678787997907575796795797F __________
5F __________
5F do tipo _________

Expresses Aritmticas
O tipo primitivo char
O tipo primitivo char corresponde a um nico caractere
(Unicode) escrito entre apstrofos, que ocupa espao de
dois bytes no seu armazenamento.
Ex: 'a', 'M', '+', '?

Uma varivel pode ser do tipo char.


Ex: char c = 'C';

Caracteres de escape
Representam caracteres especiais que podem ser
atribudos s variveis do tipo char e String, ou podem
fazer parte de um string.

Expresses Aritmticas
Caracteres de escape

Expresses Aritmticas
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);
}
}

Expresses Aritmticas
Converso entre tipos de dados
Converso implcita
permitido converter qualquer tipo abaixo para um que
esteja sua esquerda, sem qualquer artifcio, e sem
perda de preciso:
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

Expresses Aritmticas
Converso explcita (Coero ou cast).
Usa-se um conversor (ou cast), que a colocao do tipo
de destino entre parnteses antes do valor a ser
convertido

Ex:
double dd = 6.789;
int ii = (int) dd; // ii guardar o valor 6, pois a converso
descarta a parte decimal
short s = (short) ii; //s guardar 6 no houve perda
nenhuma
byte b = (byte) 6.7; //perde-se a parte decimal
short s = (short) 50000; // CUIDADO como o tipo
short no comporta 50000, ser atribudo um valor
aleatrio a s erro que no acusado pelo sistema

Expresses Aritmticas
Operadores aritmticos bsicos
Na ordem decrescente de prioridade dentro de uma
expresso aritmtica:
1. ) * (multiplicao) / (diviso) % (mdulo, ou resto da
diviso inteira)
2. ) + (adio) - (subtrao)

Ex: x * y
7/n
m % n // resto da diviso inteira de m por n

Expresses Aritmticas
Regras importantes
Geralmente, a operao resulta um tipo que grande o

suficiente para conter o resultado. Por exemplo,


multiplicando um float por um int obtm-se um float.
Ex: 4F * 2 resulta 8.0F
O resultado da diviso de dois inteiros sempre inteiro.
Ex: 7 / 2 resulta 3.
A presena de um float ou double na expresso, causa
um resultado float ou double.
Ex: 7F / 2 resulta 3.5.
Quando h mais de um operador, as regras de prioridades
sero respeitadas.
Ex: 4 + 7 / 2 resultar 7, pois a diviso feita antes da adio.
Subexpresses entre parnteses tero maior prioridade.
Ex: (4 + 7) / 2.0 resultar 5.5.

Expresses Aritmticas
Exerccios
Indique o valor e o tipo do resultado de cada expresso
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


variveis nas atribuies abaixo, ou informe se
operao invlida e porqu.
double x = 3 * 5;
int i = 5 / 2f;
int i = i + 1;

Expresses Aritmticas
Operadores de atribuio
Pode-se combinar uma operao com uma atribuio.
Por exemplo, a atribuio n=n+2; pode ser escrita como
n+=2;
Os diversos operadores de atribuio de Java so
mostrados na tabela seguinte:

Expresses Aritmticas
Operadores de atribuio
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 diviso de s
por 5). s = 3

Expresses Aritmticas
Operadores de incremento e de decremento
muito comum nos programas incrementar 1 a uma
varivel, 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

Expresses Aritmticas
Operadores de incremento e de decremento
Os operadores de incremento e de decremento podem
ser ps-fixados, quando vm colocados aps a varivel,
ou pr-fixados, quando vm antes. Se ps-fixado, a
varivel utilizada e depois incrementada (ou
decrementada). Se pr-fixado, a varivel
incrementada (ou decrementada) e depois utilizada.
Ex: o trecho
int i = 5;
System.out.println(++i + + i++ + + i);
QUAL A SADA DA INSTRUO ACIMA?

Expresses Aritmticas
Exerccio. Que valores sero exibidos pelo
trecho abaixo?
int a = 15;
int b = 4;
int c = a++ + --b;
System.out.println(a + + b + + c);

Expresses Aritmticas
A classe Math
A classe java.lang.Math possui diversos mtodos que implementam
operaes matemticas teis. Seu uso dispensa o comando import
(veremos adiante) pois ela carregada automaticamente.

static double random( )


Retorna um double randmico no intervalo [0, 1.0).
Ex: double r = Math.random(); // grava em r um randmico
Ex: int i = 1 + (int) (Math.random() * 10) // grava em i um randmico
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

Expresses Aritmticas
Exerccio. Escrever em Java a frmula de
Bhaskara

Expresses Aritmticas
Exerccio. Crie uma classe Circulo e os mtodos
calculaArea e calculaPerimetro da classe Circulo.
Eles devem devolver os valores calculados. Crie
uma classe TestaCirculo para criar um objeto
crculo e imprimir sua rea e seu permetro.
rea do crculo: Pi x r2
Permetro: 2 * Pi x r
Para o valor do Pi, utilize Math.PI

Mtodos
Referncias bibliogrficas
http://inf.unisinos.br/~anibal
http://www.google.com.br

Você também pode gostar