Tipos Básicos de Dados

Propaganda
Tipos Básicos de Dados
Prof. M.Sc. Ronnison Reges Vidal
Roteiro





Introdução
Declarando Variáveis
Tipos de Dados
Conversões entre Tipos
Constantes
Java – Orientação à Objetos
Introdução
Introdução
 Sintaxe da linguagem
 Formato de codificação da linguagem Java
 Como códigos de computador devem ser escritas
 Em um código-fonte Java, alguns símbolos são
utilizados pelo compilador para diferenciar
comandos, blocos de comandos, métodos, classes,
etc.
Introdução
 Tais símbolos, chamados de delimitadores, são
enumerados abaixo:
 Ponto e vírgula
 Blocos
 Espaços em branco
 Em Java, todo comando é terminado por um ponto e
vírgula (;)
 Exemplo: System.out.println("note o ponto e vírgula no
final");
Introdução
 Um bloco é formado por um conjunto de instruções
delimitadas por chaves, como no exemplo abaixo:
/** Exemplo de bloco */
{
// Chamamos essa chave de início de bloco
int ano; // Note o ponto e vírgula
ano = 2002; // sempre ao final de um comando
Java
}
// Chamamos essa chave de final de bloco
Introdução
 Comentários
Fundamentos de Programação: Comentários
É sempre interessante a colocação de comentários em
programas. Os comentários permitem que a
manutenção posterior do código seja mais rápida e
serve para indicar o que o programa faz. Os
comentários em java podem ser de dois tipos. Utiliza-se
de duas barras ( // ) em qualquer posição da linha. Tudo
o que aparecer à direita das duas barras será ignorado
pelo compilador.
Exemplo:
a++; //Incremento de variável
Introdução
 Comentários
Fundamentos de Programação: Comentários
Existem ocasiões onde várias linhas de comentário são
necessárias. Nesse caso utilizamos os sinais de /* e */
para indicar início e fim de bloco de comentários, como
no compilador.
Exemplo:
/* Programa de Exemplo – Esse programa não faz nada
Criado por Ronnison Reges Vidal, para a aula de Linguagem de
Programação
Versão 1.0
*/
Introdução
 O espaço em branco, quebra de linha e caracteres de
tabulação são permitidos em qualquer trecho do
código-fonte
 Devendo ser utilizados para realçar o aspecto visual de
seu código
Apesar do aspecto visual do código-fonte não ter nenhum impacto no
desempenho de um programa Java, o uso de endentação é uma
característica de bons códigos-fonte. Lembre-se que você não será o único
a ler o código-fonte de seus programas, portanto escreva-o da maneira
mais organizada e legível possível.
Introdução
Identação inadequada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (a< b) a++;
......................................
While(true) a+=a;
......................................
do{a+b; b+c; c++;}while (x != null);
......................................
If (y < x){
y+=x;
temp=y;
x=temp;
}
Introdução
Identação adequada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* Testando Comentários
@author Ronnison
*/
public class TestDrive {
public static void main ( String[] args ) {
// Declaração de Variáveis
valor x;
Data aniversário;
String nome;
}
}
Introdução
 Identificadores e Palavras-reservadas
 um identificador é uma sequência de símbolos UNICODE
(64K símbolos) que começa com:
 uma letra
 um símbolo subscrito _
 ou o caractere $
 Os demais símbolos de um identificador podem conter
também números.
 Identificadores são case-sensitive e não tem um
tamanho máximo estabelecido.
Introdução
 Exemplo de identificadores válidos em Java:
? ? data
? ? _data
? ? $data
? ? data_do_mês
? ? data1
? ? uma_variável_pode_SER_bastante_extensa_e_conter_Numeros234876238476
? ? data_public_class_NoteQueEsseIdentificadorContemPalavrasReservadas
Introdução
 Apesar desta "liberdade" de opções para nomes de
identificadores, algumas palavras não são permitidas.
 palavras reservadas
 Representam o conjunto de comandos que forma a
sintaxe da linguagem Java
Introdução
 O conjunto de palavras reservadas em Java é o
seguinte:
Java – Orientação à Objetos
Declarando Variáveis
Declarando Variáveis
 Uma variável é sempre declarada seguindo do
seguinte esquema:
<tipo> + <espaço> + identificador + ;
ou
<tipo> + <espaço> + identificador + = + valor + ;
Declarando Variáveis
 onde:
 <tipo> é um tipo primitivo de dados ou o nome de uma
classe ou interface
 identificador é o nome da variável valor é o valor
atribuído à variável. Caso você declare uma variável e
não atribua nenhum
 valor, ela não poderá ser utilizada em um código Java –
a tentativa de utilizar uma variável não inicializada em
Java gerará um erro de compilação.
Declarando Variáveis
 Exemplo:
/**
Atenção!!!
* FIC - Faculdade Integrada do Ceará
* Sistemas Orientados a Objetos I
Veremos
mais adiante
que
possuiAloMundo.
um mecanismo de inicialização de
* Incluindo
variáveis
noJava
programa
variáveis
de seus tipos primitivos, mas deve-se evitar considerar essa
*/
inicialização
como
prática de
public class
AloMundo
{ programação. De fato, esta inicialização
automática
nãopublic
funciona
variáveis de
tipos
static
voidpara
main(String[]
args)
{ agregados ou abstratos de
dados e também
o escopo
das variáveis – de classe ou de instância - tem
boolean
obrigatorio;
influência na sua
inicialização.
int semestre
= 2; O aluno é fortemente recomendado a pensar
em variáveis como
alocados
memória RAM, inicialmente podendo
Stringespaços
mensagem
= "Alona
mundo.";
conter qualquer valor (conhecido como lixo na memória).
System.out.println(mensagem);
}
}
Java – Orientação à Objetos
Tipos de Dados
Tipos de Dados
 Java é uma linguagem que necessita que todas as
Fortemente Tipado
variáveis tenham um tipo declarado
 Existem 8 tipos primitivos declarados
 6 são numéricos
 1 é o caractere
 1 é o booleano
Tipos de Dados
 Java é uma linguagem que necessita que todas as
variáveis tenham um tipo declarado
 Existem 8 tipos primitivos declarados
 6 são numéricos
 1 é o caractere
 1 é o booleano
Tipos de Dados
 Java é uma linguagem que necessita que todas as
variáveis tenham um tipo declarado
 Existem 8 tipos primitivos declarados
 6 são numéricos Int, short, long, float, double, byte
 1 é o caractere
 1 é o booleano
Java – Orientação à Objetos
Conversões entre Tipos
Conversões entre Tipos
 Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
double
d = número
3.1415;
 Enquanto
um
real costuma ser representado
int i = d; // não compila
em uma
variável do tipo double, tentar atribuir ele a
uma variável int não funciona
 Porque é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
 Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
 Enquanto um número real costuma ser representado
em uma variável do tipo double, tentar atribuir ele a
uma variável int não funciona
 Porque é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
 Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
O mesmo
nessereal
trecho:
 Enquanto
umocorre
número
costuma ser representado
em uma
variável do tipo double, tentar atribuir ele a
int i = 3.14;
uma variável int não funciona
 Porque é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
 Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
 Enquanto um número real costuma ser representado
em uma variável do tipo double, tentar atribuir ele a
uma variável int não funciona
 Porque é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
 Alguns valores são incompatíveis se você tentar fazer
uma atribuição direta
O mais
interessante,
que nem mesmo
o seguinte código
compila:
Enquanto
uménúmero
real costuma
ser representado
em uma variável do tipo double, tentar atribuir ele a
double d = 5; // ok, o double pode conter um número inteiro
uma variável int não funciona
int i= d;
// não compila
Porque
é um código que diz: “i deve valer d”, mas não
se sabe se d realmente é um número inteiro ou não
Conversões entre Tipos
 Apesar de 5 ser um bom valor para um int, o
compilador
tem como saber que valor estará
Já no
caso a seguir,não
é o contrário:
dentro desse double no momento da execução
int i = 5;
 Esse valor pode ter sido digitado pelo usuário, e
ninguém
double
d2 = i; vai garantir que essa conversão ocorra sem
perda de valores
Conversões entre Tipos
 O código acima compila sem problemas, já que um
double pode guardar um número com ou sem ponto
flutuante
 Todos os inteiros representados por uma variável do
tipo int podem ser guardados em uma variável
double, então não existem problemas no código
acima
Conversões entre Tipos
 Às vezes, precisamos que um número quebrado seja
arredondado e armazenado num número inteiro
 Para fazer isso sem que haja o erro de compilação, é
preciso ordenar que o número quebrado seja moldado
(casted) como um número inteiro
 Esse processo recebe o nome de casting
Conversões entre Tipos
 Às vezes, precisamos que um número quebrado seja
arredondado e armazenado num número inteiro
 Para fazer
doubleisso
d3 =sem
3.14; que haja o erro de compilação, é
intordenar
i = (int) d3;que o número quebrado seja moldado
preciso
(casted) como um número inteiro
 Esse processo recebe o nome de casting
Conversões entre Tipos
 O casting foi feito para moldar a variável d3 como um
int
 O valor de i agora é 3
 O mesmo ocorre entre valores int e long
long x = 10000;
int i = x; // não compila, pois pode estar perdendo informação
Conversões entre Tipos
 E, se quisermos realmente fazer isso, fazemos o
casting
long x = 10000;
int i = (int) x;
Conversões entre Tipos
 Casos não tão comuns
 Alguns castings aparecem também:
 Float x = 0.0;
 O código acima não compila pois todos os literais com
ponto flutuante são considerados double pelo Java. E
float não pode receber um double sem perda de
informação, para fazer isso funcionar podemos escrever
o seguinte:
 float x = 0.0f;
Conversões entre Tipos
 Casos não tão comuns
 A letra f, que pode ser maiuscula ou minúscula, indica que
aquele literal deve ser tratado como float
 Outro caso, que é mais comum:
 double d = 5;
 float f = 3;
 float x = f + (float) d;
 Você precisa do casting porque o Java faz as contas e vai
armazenando sempre no maior tipo que apareceu durante as
operações, no caso o double
Conversões entre Tipos
 Casos não tão comuns
 E, uma observação: no mínimo, o Java armazena o
resultado em um int, na hora de fazer as contas
 Até casting com variáveis do tipo char podem ocorrer
 O único tipo primitivo que não pode ser atribuído a
nenhum outro tipo é o boolean
Conversões entre Tipos
Para:
 Castings possíveis
Byte
Short
Char Int
Long Float Double
Byte
---
Impl.
(cha
r)
Impl. Impl. Impl. Impl.
Short
(byt
e)
---
(cha
r)
Impl. Impl. Impl. Impl.
Char
(byt
e)
(short --)
Impl. Impl. Impl. Impl.
Int
(byt
e)
(short (cha
)
r)
---
Impl. Impl. Impl.
Long
(byt
e)
(short (cha
)
r)
(int)
---
Impl. Impl.
Float
(byt
e)
(short (cha
)
r)
(int)
(lon
g)
---
Double
(byt
e)
(short (cha
)
r)
(int)
(lon
g)
(floa --t)
De:
Impl.
Conversões entre Tipos
 Tamanho dos Tipos
Tipo
Tamanho
Boolean
1 bit
Byte
1 byte
Short
2 bytes
Char
2 bytes
Int
4 bytes
Float
4 bytes
Long
8 bytes
Double
8 bytes
Exercícios
 Na empresa onde trabalhamos, há tabelas com o quanto foi
gasto em cada mês. Para fechar o balanço do primeiro trimestre,
precisamos somar o gasto total. Sabendo que, em Janeiro,
foram gastos 15000 reais, em Fevereiro, 23000 reais e em Março,
17000 reais, faça um programa que calcule e imprima o gasto
total no trimestre. Siga esses passos:
 Crie uma classe chamada BalancoTrimestral com um bloco main,
como nos exemplos anteriores;
 Dentro do main (o miolo do programa), declare uma variável inteira
chamada gastosJaneiro e inicialize-a com 15000;
 Crie também as variáveis gastosFevereiro e gastosMarco,
inicializando-as com 23000 e 17000, respectivamente, utilize uma
linha para cada declaração;
 Crie uma variável chamada gastosTrimestre e inicialize-a com a soma
das outras 3 variáveis: int gastosTrimestre = gastosJaneiro +
gastosFevereiro + gastosMarco;
 Imprima a variável gastosTrimestre.
Exercícios
 2) Adicione código (sem alterar as linhas que já
existem) na classe anterior para imprimir a média
mensal de gasto, criando uma variável mediaMensal
junto com uma mensagem. Para isso, concatene a
String com o valor, usando "Valor da média mensal =
"+ mediaMensal.
Download