Sie sind auf Seite 1von 30

Algoritmo

É uma sequência finita de passos para execução de uma tarefa.
Podemos descrever um algoritmo para qualquer tarefa, como chupar uma 
bala:

1.Pegar a bala
2.Abrir o papel
3.Colocar a bala na boca
4.Chupar a bala
5.Jogar o papel fora

Ou somar dois números quaisquer:

1.Inserir o primeiro número
2.Inserir o segundo número
3.Realizar a soma do primeiro com o segundo número
4.Exibir o resultado

1­A) Descreva um algoritmo para Escovar os Dentes.
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
1­B) Descreva um algoritmo para subtrair um número x de um número y e 
multiplicar o resultado por 2.
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________

1­C) Descreva um algoritmo para ir de casa ao trabalho.
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________

Programas
Programas   são   algoritmos   escritos   numa   linguagem   de   programação 
(Pascal,   Java,   C,   C#,   etc.)   e   interpretados   e   executados   pelo 
computador.
Desenvolvimento de Algoritmos
Vimos que algoritmo é uma sequência lógica e finita de passos e que 
qualquer tarefa pode ser descrita por um algoritmo:

1.Fazer um pudim de leite.
2.Realizar uma transação bancária pela Internet.

Para que desenvolvamos algoritmos, devemos dividí­lo em três partes:

ENTRADA → PROCESSAMENTO → SAÍDA

Entrada: Os dados de entrada do algoritmo.
Processamento:   Procedimentos   utilizados   para   atingir   o   objetivo 
final.
Saída: Os dados processados.

Exemplo
Algoritmo para realizar média final de alunos de uma determinada 
escola. Os alunos realizam quatro provas no ano (P1, P2, P3 e P4).
A média final é a média aritmética dessas quatro provas.
Quais são os dados de entrada desse algoritmo?
Resposta: O valor das quatro provas. 
P1, P2, P3 e P4. 

Qual o processamento desse algoritmo?
Resposta: Somar as quatro notas e dividir por quatro. 

(P1 + P2 + P3 + P4)
____________________
4

Quais os dados de saída desse algoritmo?
Resposta: O dado de saída é o resultado da média aritmética.

2­A)   Descreva   os  dados   de   entrada,   o  processamento  e   os  dados   de 


saída  para  o Algoritmo  1­B  (subtrair um  número x  de um  número   y   e 
multiplicar o resultado por 2).
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________

2­B) Crie um algoritmo para calcular o valor do dólar, dado um valor 
em   real   (1   real   equivale   a   1,8   dólares).   Descreva   o(s)   dado(s)   de 
entrada, o processamento e o(s) dado(s) de saída para esse algoritmo.
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
Java
Hoje   em   dia,   com   a   tecnologia   tão   presente   em   nossas   vidas,   não 
valorizamos o fato de que podemos acessar e nos conectar a aplicações 
e   conteúdo   de   qualquer   lugar,   a   qualquer   hora.   Graças   ao  Java, 
espera­se   que   dispositivos   digitais   sejam   mais   inteligentes,   mais 
funcionais e mais divertidos.
No   início   dos   anos   90,   extender   o   poder   da   computação   em   rede   nas 
nossas atividades diárias, era um sonho radical. Em 1991, um pequeno 
grupo de engenheiros da  Sun, chamados de “Green Team” (time verde), 
acreditavam que a próxima grande coisa em computação seria a união de 
eletrodomésticos digitais de largo consumo e computadores. Liderados 
por   James Gosling, esse grupo criou a linguagem de programação  que 
revolucionaria o mundo: Java.
Eles   fizeram   uma   demonstração   dessa   nova   linguagem   com   um   controle 
interativo (originalmente desenhado para a indústria de tv a cabo), 
mas infelizmente, o conceito da linguagem era muito avançado para o 
propósito   desejado   naquela   época.   Porém,   eles   perceberam   que   essa 
linguagem   seria   perfeita   para   a   Internet,   que   dava   seus   primeiros 
passos   nessa   mesma   época.   Em   1995,   o   grupo   de   desenvolvedores   da 
linguagem anunciou que o navegador Netscape incorporaria a tecnologia 
Java.
Atualmente, Java não somente permeia a Internet como também é a força 
invisível por trás de muitas aplicações e dispositivos que utilizamos 
em   nosso   dia­a­dia.   De   telefones   celulares,   jogos   e   sistemas   de 
navegação a soluções e­business, Java está em toda parte.

Primeiro Programa em Java


Apresentamos aqui um simples programa em Java que imprime na tela a 
mensagem “Alô, pessoal!”.

1. public class AloPessoal


2. {
3. public static void main(String args[])
4. {
5.
6. System.out.println(“Alô, pessoal!”);
7.
8. }
9.
10.}
Linha 1:  Declaração da classe AloPessoal (class AloPessoal), com 
visibilidade pública (public).
Linha 2:  Início do bloco que abrange a classe AloPessoal.
Linha 3:  O método executável. Todo método executável em Java deve 
ter essa assinatura – público, estático, sem retorno recebendo como 
parâmetro um vetor de Strings.
Linha 4:  Início do bloco que abrange o método main.
Linha 5:  Impressão da mensagem Alô Pessoal! Na tela.
Linha 8:  Fim do bloco que abrange o método main.
Linha 10: Fim do bloco  que abrange a classe AloPessoal.

Não se preocupe caso não consiga entender alguns desses termos. Eles 
serão descritos posteriormente.

Para que possamos ver o resultado desse programa na prática, devemos 
colocar   esse   código   em   um   arquivo   de   texto.   Salve   o   arquivo   com   o 
nome AloPessoal.java (o nome do arquivo deve ser o mesmo da classe 
com a extensão .java).
Abra   o   terminal   (ALT   +   F2   e   em   seguida   digite   xterm).   Vá   até   o 
diretório   onde   foi   salvo   o   arquivo   AloPessoal.java   e   digite   o 
comando:

>javac AloPessoal.java

Esse comando irá compilar o arquivo .java para um arquivo .class.
Agora para executar o programa, digite:

>java AloPessoal

Deve ser exibida a mensagem “Alô Pessoal!” no terminal.

3­A) Altere o programa para exibir seu nome completo ao invés de “Alô 
Pessoal!”.

3­B) Altere o programa para exibir seu nome completo em duas linhas.
Netbeans
O   Netbeans   é   um   IDE   (Integrated   Development   Environment   –   Ambiente 
Integrado   de   Desenvolvimento)   para   programarmos   em   diversas 
linguagens, principalmente Java. Ele facilita muitas das tarefas  do 
dia­a­dia:   exibe   erros   e   sugestões   para   solucionar   problemas, 
armazena  tarefas repetitivas em macros para facilitar a utilização, 
permite que acompanhemos o processamento de nossos aplicativos linha­
a­linha para análise de erros, etc. 
O   Netbeans   é   open­source   e   pode   ser   “baixado”   gratuitamente   em 
http://netbeans.org/.

Criando Projetos no Netbeans
1) Abra o Netbeans.
2) Escolha a opção Arquivo → Novo Projeto.

3) No   assistente   de   Novo   Projeto,   expanda   a   categoria  Java, 


selecione a opção Aplicativo Java e clique no botão Próximo.
4) Na página Nome e Localização, adote o seguinte procedimento:
● No campo Nome do Projeto, digite HelloWorldApp.
● No   campo  Criar   Classe   Principal,   digite 
helloworldapp.HelloWorldApp.
● Deixe marcada a caixa Definir Como Projeto Principal

5) Clique em Terminar.

Agora os seguintes componentes são exibidos:

● A   janela  Projetos,   contendo   uma   exibição   em   árvore   dos 


componentes do projeto. 
● A   janela  Editor  de   Código­fonte  com   o   arquivo  HelloWorldApp 
aberto.
● A   janela  Navegador,   usada   para   navegação   rápida   entre   os 
elementos da classe selecionada.
● A   janela  Tarefas,   que   lista   os   erros   de   compilação   e   outras 
tarefas.
Como   marcamos   a   caixa   de   verificação  Criar   Classe   Principal  no 
assistente, o Netbeans criou um esqueleto de classe para você. Vamos 
inserir, dentro do método main, o trecho:

System.out.println(“Hello World!”);

Salve as alterações em Arquivo → Salvar (ou pressione CRTL + S).

Como o Netbeans tem a opção de  Compilar ao Salvar, não é necessário 
compilarmos manualmente o projeto para que ele seja executado. Para 
executar o programa  HelloWorldApp, vá em  Executar  →  Executar Projeto  
Principal (ou pressione F6).
A seguinte mensagem deve ser exibida:

É   muitas   vezes   necessário   que   reconstruamos   o   projeto   todo   (ao 


inserirmos   uma   figura   no   projeto,   ou   um   relatório).   Para   executar 
essa ação, vá em Executar  →  Limpar e Construir Projeto Principal (ou 
pressione SHIFT + F11).
Para   mais   informações   acerca   do   IDE   Netbeans,   você   pode   acessar   o 
link http://netbeans.org/kb/docs/java/javase­intro_pt_BR.html.

Orientação a Objetos
Pudemos   perceber   que   um   programa   é   uma   série   de   instruções   que 
mandamos para o computador e ele as executa sequencialmente. O grande 
desafio   para   nós   programadores   é   estabelecer   a   associação   entre   o 
modelo que o computador usa e o que nós usamos.

Como   somos   dependentes   dessa   associação,   somos   levados   a   modelar 


problemas   computacionais   para   o   padrão   utilizado   na   linguagem   de 
programação usada. Se programamos em LISP, devemos modelar o problema 
com   Listas   Encadeadas.   Se   a   linguagem   for   Prolog,   o   problema   será 
modelado   como   uma   cadeia   de   decisões.   Assim,   a   modelagem   para   a 
solução do problema é característica da linguagem de programação que 
utilizamos.

Java   utiliza   o   modelo   de   orientação   a   objetos.   Tudo   é   representado 


como um objeto e os objetos se comunicam trocando mensagens entre si.

Objeto
É   um   conjunto  de   estados  e   comportamentos.  Objetos   de  software   são 
comumente utilizados para modelar objetos do mundo real, com o qual 
temos contato no nosso dia­a­dia. 
Olhe em volta e você verá dezenas de objetos do mundo real: sua mesa, 
caneta,   lâmpada,   computador,   etc.   Cada   objeto   tem   um   estado   (o 
computador   pode   estar   ligado,   desligado,   em   espera...)   e   um 
comportamento (ligar, desligar, processar, armazenar...). 

“Objetos são conjuntos de variáveis e métodos que representam seus 
estados e comportamentos”

Objetos armazenam seus estados em campos, ou variáveis, e expõem seus 
comportamentos através de métodos (ou em algumas linguagens funções).
Tomemos como exemplo o objeto bicicleta. Alguns de seus estados, ou 
variáveis,   são   a   marcha,   velocidade,   altura   do   selim.   Seus   métodos 
são mudar marcha, brecar, etc. A utilização desses métodos alteram as 
variáveis   do   objeto:   não   manipulamos   diretamente   as   variáveis,   mas 
métodos   que   alteram   essas   variáveis.   Essa   estratégia   de   manipular 
estados através de comportamentos é conhecida como encapsulamento. 

4­A)   Descreva   os   estados   (variáveis)   e   comportamentos   (métodos) 


possíveis para um objeto Automóvel.

Classes
No mundo real você encontrará diversos objetos do mesmo tipo. Podem 
existir centenas de bicicletas, mas todas tem características que as 
definem   como  bicicletas   e  não   como  carroças,  por   exemplo.   Todas   as 
bicicletas, portanto, foram criadas utilizando um mesmo padrão  (uma 
mesma   “fôrma”),   logo   contém   os   mesmos   componentes.   Em   termos   de 
orientação a objetos, dizemos que bicicleta é uma instância da classe 
de objetos conhecida como bicicletas. 

“Classe é o padrão (a fôrma) no qual objetos individuais são criados”

Segue   (na   próxima   página)   exemplo   de   classe   representando   o   padrão 


para bicicleta.
class Bicicleta {

//Estados
int cadencia = 0;
int velocidade = 0;
int marcha = 1;

//Comportamentos
void mudarCadencia(int novoValor) {
cadencia = novoValor;
}

void mudarMarcha(int novoValor) {
marcha = novoValor;
}

void aumentarVelocidade(int valor) {
velocidade = velocidade + valor;
}

void acionarFreios(int valor) {
velocidade = velocidade – valor;
}

void imprimeEstados() {
System.out.println(“Cadencia: ” + cadencia);
System.out.println(“Velocidade: ” + velocidade);
System.out.println(“Marcha: ” + marcha);
}
}
A sintaxe da linguagem Java pode ser nova para você, mas o design da 
classe   é   baseado   em   nossa   discussão   anterior.   Os   campos  cadencia, 
velocidade  e  marcha  representam   os   estados   do   objeto.   Os   métodos 
mudarCadencia,  mudarMarcha,  aumentarVelocidade,   etc.   definem   o 
comportamento   do   objeto   e   a   forma   como   ele   interage   com   o   mundo 
exterior. 
O símbolo “//” representa um comentário de linha. Esses comentários 
são   ignorados   pelo   compilador.   Servem   apenas   para   que   possamos 
descrever uma operação, variável ou explicar um trecho do aplicativo.
Você   deve   ter   percebido   que,   diferentemente   de   nosso   programa 
AloPessoal, a  classe  Bicicleta  não tem um  método  main. Isso  porque 
Bicicleta  não   é   um   aplicativo   completo;   é   apenas   um   padrão   para 
bicicletas   que   pode   ser   utilizado   em   um   aplicativo.   A 
responsabilidade   de   criar   e   usar   novos   objetos   do   tipo  Bicicleta 
pertence a outras classes numa aplicação.
Exemplo de classe utilizando um objeto Bicicleta:
class DemonstracaoBicicleta {

public static void main(String args[]) {
//Criamos duas bicicletas...
Bicicleta bike1 = new Bicicleta();
Bicicleta bike2 = new Bicicleta();

//Invocamos métodos desses objetos:
bike1.mudarCadencia(5);
bike1.mudarMarcha(10);
bike1.aumentarVelocidade(20);

bike2.mudarCadencia(1);
bike2.mudarMarcha(2);
bike2.aumentarVelocidade(7);

//Imprimimos os estados dos objetos...
bike1.imprimeEstados();
bike2.imprimeEstados();
}
}
Ao executarmos DemostracaoBicicleta, nos serão exibidas as mensagens:

>java DemonstracaoBicicleta
>Cadencia: 5
>Velocidade: 20
>Marcha: 10
>Cadencia: 1
>Velocidade: 7
>Marcha: 2
>

Podemos perceber claramente que, ao passarmos valores para os métodos 
de Bicicleta, seus campos são modificados.

5­A) Crie uma classe para representar um objeto Automovel. Deve haver 
um método para exibição dos campos na tela (como o imprimeEstados da 
classe Bicicleta).

5­B)   Construa   uma   classe   que   cria   três   objetos   do   tipo  Automovel. 
Atribua   valores a esses objetos e então exiba seus estados na   tela 
(de forma similar à DemonstracaoBicicleta).

Herança
Diferentes   objetos   algumas   vezes   tem   certas   similaridades.   Mountain 
Bikes,   Estradeiras   e   Bicicletas   Ergométricas,   por   exemplo,   dividem 
características   de   bicicletas   (velocidade,   cadência   atual   de 
pedaladas,   marcha   atual).   Porém,   cada   um   dos   tipos   de   bicicleta 
define   características   adicionais   que   as   fazem   ser   diferentes   umas 
das outras: Mountain Bikes podem ter uma coroa adicional, atribuindo 
uma   faixa   de   marchas   mais   pesadas,   ou   uma   estradeira   pode   ter   o 
guidom   rebaixado.   Uma   bicicleta   ergométrica   é   estacionária,   quer 
dizer, não vai a lugar algum, etc.
A programação orientada a objetos permite que classes herdem estados 
e comportamentos de outras classes. Em nosso exemplo, Bicicleta agora 
torna­se uma  superclasse  de  MountainBike,  Estradeira  ou  Ergometrica. 
Em Java, é permitido que cada classe tenha uma superclasse direta. E 
cada superclasse tem o potencial de ter ilimitadas subclasses.
Bicicleta

MountainBike Estradeira Ergometrica

Diagrama   de   classes   identificando   que  MountainBike,  Estradeira  e 


Ergometrica são subclasses de Bicicleta.

A sintaxe para criar uma subclasse é simples. No início da declaração 
da classe, utilize a palavra reservada (palavras que não servem como 
identificadores   de   métodos   e   variáveis   por   ter   um   significado 
especial na linguagem) extends, seguida do nome da classe do qual se 
herdará:

class MountainBike extends Bicicleta {

//novos campos e métodos que definem uma Mountain Bike vão aqui.

A   classe  MountainBike  terá   os   mesmo   campos   e   métodos   de   sua 


superclasse  Bicicleta.   Porém,   podemos   focar   o   desenvolvimento   nos 
atributos   que   fazem   uma   Mountain   Bike   ser   única.   Você   deve   ter   o 
cuidado   de   documentar   os   estados   e   comportamentos   da   superclasse, 
pois o código da superclasse não aparece nas subclasses.
Interfaces
Como  foi  visto anteriormente, objetos definem suas interações com  o 
mundo exterior através de métodos que eles expõem. Métodos formam a 
interface do objeto com o mundo exterior. Os botões na frente de sua 
TV,  por exemplo, são a interface entre você e a fiação elétrica do 
outro lado do plástico. Você pressiona o botão “power” para alterar o 
estado da TV de ligada para desligada e vice­versa.
Em   sua   forma   mais   comum,   uma  interface  é   um   grupo   de   métodos   sem 
corpo   (sem   implementação).   O   comportamento   de   Bicicleta,   se 
especificado como uma interface, seria da seguinte forma:

interface Bicicleta {

void mudarCadencia(int novoValor);

void mudarMarcha(int novoValor);

void aumentarVelocidade(int valor);

void acionarFreios(int valor);

Note   como   a   interface   apenas   descreve   a   assinatura   do   método   (sua 


saída, seu nome e suas entradas). Para implementarmos essa interface 
a   palavra   reservada  implements  deve   ser   utilizada   na   declaração   da 
classe:

class MountainBike implements Bicicleta {

//Implementação dos métodos descritos na interface
//Bicicleta.

Implementar   uma   interface   permite   que   a   classe   seja   mais   formal 


acerca do comportamento que ela promete prover. Interfaces firmam um 
contrato entre a classe e o mundo exterior. Esse contrato é reforçado 
em   tempo   de   compilação   (quando   o  javac  traduz   o   arquivo  java  que 
criamos   num   arquivo  class).   Se   sua   classe   afirma   implementar   uma 
interface (há na declaração da mesma o trecho  ... implements <Nome­
de­uma­classe>), todos os métodos definidos por essa interface devem 
ser implementados no código fonte antes de sua classe ser compilada 
(caso contrário o compilador acusará um erro).

Nota:   caso você queira compilar e testar a interface Bicicleta  e   a 
classe   MountainBike,   as   declarações   dos   métodos   de   Bicicleta   devem 
ser precedidas da palavra reservada public:

public void mudarMarcha(int valor);

As razões para utilização de public serão descritas posteriormente.

6­A) Crie uma interface Veiculo. Construa em seguida três classes que 
implementam   essa   interface:  Caminhao,  CarroPasseio  e  Motocicleta. 
Cada   uma   dessas   classes   deve   ter   estados   e   comportamentos   que   as 
diferenciem.

6­B)   Crie   a   classe  Barco  implementando  a   interface  Veiculo.  Crie 


então   a   classe  Bote  extendendo  Barco.  Seja   criativo   quanto   as 
diferenças entre Barco e Bote.

Pacotes
Pacote é um domínio que organiza um conjunto de classes relacionadas 
e   interfaces.   Conceitualmente,   você   pode   pensar   em   pacotes   como 
diferentes   pastas   num   computador,   por   exemplo.   Como   softwares 
escritos   em   Java   podem   ser   compostos   de   centenas   ou   milhares   de 
classes   individuais,   faz   sentido   manter   tudo   organizado   colocando 
classes relacionadas e interfaces em pacotes.
A plataforma Java provê uma enorme biblioteca de classes (um conjunto 
de pacotes) disponível para uso em nossas próprias aplicações. Esta 
biblioteca   é   conhecida   como   “Application   Programming   Interface” 
(API).   Estes   pacotes   representam   as   tarefas   mais   comuns   associadas 
com propósitos gerais de programação. Por exemplo: Um objeto  String 
contém   estados e comportamentos para textos (cadeia de caracteres). 
Objetos  File  permitem   ao   programador   facilmente   criar,   remover, 
inspecionar, comparar ou modificar um arquivo no sistema de arquivos. 
Um objeto Socket permite a criação e uso de sockets de rede. Diversos 
objetos   GUI   (Graphical   User   Interface)   controlam   botões,   caixas   de 
seleção e várias opções relacionadas à interface gráfica com usuário.
Há,   literalmente,   milhares   de   classes   que   podemos   utilizar.   Isso 
permite   a   você,   programador,   focar   seus   esforços   no   design   de   sua 
aplicação   particular   ao   invés   de   perder   tempo   com   a   infraestrutura 
necessária para fazer sua aplicação funcionar.
Java Básico

Aqui aprenderemos a sintaxe básica para criarmos aplicativos em java.

Variáveis
Como aprendemos, objetos armazenam seus estados em campos.

int cadencia = 0;
int velocidade = 0;
int marcha = 1;

Mas quais são as regras e convenções para nomear um campo? Além de 
int  (número   inteiro),   quais   os   outros   tipos   de   dados   disponíveis? 
Campos   devem   ser   inicializados   no   momento   da   declaração?   Campos 
recebem um valor padrão caso não sejam inicializados? Exploraremos as 
respostas   para   essas   e   outras   perguntas   aqui.   Mas   antes   que 
comecemos, há algumas distinções técnicas que devemos conhecer. 

Na linguagem de programação Java, os dois termos, campo e variável, 
podem ser utilizados para descrever estados. 

Java define os seguintes tipos de variáveis:

Variáveis   de   Instância   (campos   não­estáticos)  Técnicamente,   objetos 


armazenam   seus   estados   em   campos   não­estáticos.   Quer   dizer,   campos 
declarados   sem   a   palavra   reservada  static.   Campos   não­estáticos 
também são conhecidos como variáveis de instância pois seus valores 
são   únicos para cada  instância  da classe  (em outras  palavras,   para 
cada   objeto).   Exemplo:   a  velocidade  de   uma   determinada  Bicicleta 
independe da velocidade de uma outra.

Variáveis  de  Classe (campos  estáticos)  Uma  variável  de classe   é  um 


campo declarado com o modificador static. Isso diz ao compilador que 
há   apenas   uma   cópia   dessa   variável   existindo   (independentemente   de 
quantas vezes a classe foi instanciada). Um campo definindo o número 
de   marchas   para   um   tipo   particular   de   bicicletas   pode   ser   marcado 
como estático visto que conceitualmente o mesmo número de marchas se 
aplica   a   todas   as   instâncias.   O   código  static   int   marchas   =   6; 
criaria   o   campo   como   estático.   Adicionalmente,   a   palavra   reservada 
final poderia ser adicionada para indicar que o número de marchas não 
seria   alterado  (final  indica   que   o   valor,   uma   vez   determinado,   não 
pode ser modificado).
Variáveis   Locais  De   modo   similar   a   como   um   objeto   armazena   seus 
estados   em   campos,   um   método   normalmente   armazenará   seus   estados 
tempórários   em  variáveis   locais.   A   sintaxe   para   declaração   de 
variáveis  locais é  similar  à da declaração de campos (por exemplo, 
int count = 0;). Não há palavra reservada que designe uma variável 
como   local.   A   determinação   de   uma   variável   como   local   baseia­se 
inteiramente no local onde a variável é declarada – entre as chaves 
que definem o início e fim do método. Assim sendo, variáveis locais 
existem   apenas   para   os   métodos   nos   quais   elas   são   declaradas;   não 
podem ser acessadas no resto da classe.

class Radio {
//Variáveis de estância.
int volume = 10;
float estacao = 107.3;

public void trocarEstacao(float novaEstacao) {

//Variável local. Só existe dentro do método
//trocarEstacao.
float diferenca = estacao – novaEstacao;
...
}
}
Parâmetros  Você já viu exemplos de parâmetros neste tutorial.  Tanto 
na   classe  Bicicleta  quanto   no   método  main  da   classe  AloPessoal.   A 
assinatura do método main é public static void main(String args[]). A 
variável  args  é   o   parâmetro   do   método  main.   Lembre­se   de   que 
parâmetros são sempre classificados como variáveis e não como campos! 
Isso   se   aplica   a   outras   construções   que   aceitam   parâmetros   também 
(como construtores e manipuladores de exceções) que iremos discutir 
ao longo deste tutorial.
7­A) Dado o trecho de código abaixo:

class Cachorro {

static final int BULDOGUE = 0;
static final int PODDLE = 1;
static final int PITBULL = 2;

int raca;
String nome;
int idade;
boolean vacinado;

public void comer(int comidaEmKilos) {
float peso = 5.0;

if(comidaEmKilos <= peso) {
System.out.println(“Au, au! Slept!”);
}
else {
System.out.println(“GRRRRRR!!!!!!!”);
}
}

public void correr(float velocidade) {
System.out.println(nome + “ correndo a ” + velocidade 
+ “km/h!”);
}

public void vacinar() {
vacinado = true;
}
}
Identifique   as  variáveis   de   instância,  variáveis   de   classe,   as 
variáveis locais e os parâmetros da classe Cachorro.

Nomenclatura
Cada linguagem de programação tem seu conjunto de regras e convenções 
para os tipos de nomes que podem ser usados. Java não é diferente. As 
regras e convenções para nomear variáveis em Java são:

● Nomes   de   variáveis,   em   Java   levam   em   consideração   letras 


maiúsculas   e   minúsculas.   A   variável  roedor  não   pode   ser 
referenciada   por  roEDOR,  Roedor  ou  rOEDOR.   Variáveis   podem 
iniciar   por   qualquer   letra,   o   símbolo   “$”   ou   o   caracter   “_” 
seguido   de   uma   sequência   de   letras   ou   números.   A   convenção, 
porém, é sempre iniciar o nome de variáveis com letras. Espaços 
em branco não são permitidos em nomes de variáveis.
● Caracteres   subsequentes   (após   o   primeiro)   no   nome   da   variável 
podem ser letras, dígitos, cifrões ou sublinhados (underscore). 
Ao   nomear   variáveis,   utilize   palavras   inteiras   ao   invés   de 
abreviações indecifráveis. Irá deixar o código mais fácil de ler 
e   entender.   Em   muitos   casos   irá   também   deixar   seu   código 
autodocumentado:   campos   nomeados  cadencia,  velocidade  e  marcha 
são muito mais intuitivos que suas versões abreviadas, como s, c 
e  g.   Tenha   em   mente   que   o   nome   escolhido   para   a   variável   não 
pode   ser   uma  palavra   reservada  (palavras   reservadas   em   Java: 
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html).
● Se   o   nome   escolhido   consiste   de   apenas   uma   palavra,   use   a 
palavra utilizando apenas letras minúsculas. Se consiste de mais 
de uma palavra, deixe maiúscula a primeira letra de cada palavra 
subsequente. Os nomes  marchaCorrente  e  aumentaVolume  são ótimos 
exemplos   dessa   convenção.   Se   sua   variável   armazena   um   valor 
constante   (que   uma   vez   definido   não   se   altera),   como  static 
final  int   QTDE_MARCHAS  =   6,  a   convenção  é   um  pouco   diferente. 
Todas as letras devem ser maiúsculas e, caso o nome consista de 
mais   de   uma   letra,   elas   devem   ser   separadas   por   sublinhado 
(underscore). O sublinhado, por convenção, só deve ser utilizado 
nesse caso.

Java é uma linguagem estaticamente tipada. Isso significa que todas 
as   variáveis   devem   ser   declaradas   antes   que   possam   ser   utilizadas. 
Isso   envolve   definirmos   o   tipo   e   o   nome   da   variável,   como   já   foi 
visto:

int marcha = 1;
Variável do tipo int, de nome marcha recebendo valor 1.
Ao declararmos a variável, dizemos ao programa que o campo chamado de 
marcha  existe,   armazena   dados   numéricos   do   tipo   inteiro   e   tem   um 
valor inicial de 1. O tipo da variável determina os valores que ela 
pode conter mais as operações que podem ser realizadas nela. Além do 
tipo int, Java suporta sete outros tipos primitivos de dados. Um tipo 
primitivo é pré­definido pela linguagem (a linguagem se encarrega de 
disponibilizá­lo)   e   seu   nome   é   uma   palavra   reservada   (não   podemos 
nomear   nossa   variável   de  int,   por   exemplo).   Valores   primitivos   não 
compartilham   estado   com   outros   valores   primitivos.   Os   oito   tipos 
primitivos disponíveis em Java são:
1. byte  Esse tipo de dados é um inteiro de 8 bits com sinal. Seu 
valor   mínimo   é   ­128   e   seu   valor   máximo   é   127.   O   byte   é   muito 
usado para representar informação binária em largos vetores.
byte memoria = 30;
2. short  O tipo de dados  short  é um inteiro de 16 bits com sinal. 
Seu valor mínimo é ­32768 e seu máximo é 32767.
short notaProva = ­6657;
3. int Esse tipo de dados é um inteiro de 32 bits com sinal. Tem um 
valor   mínimo   de   ­2147483648   e   um   máximo   de   2147483647.   Para 
valores   integrais,   esse   tipo   de   dados   é   geralmente   a   escolha 
padrão.   Um  int  provavelmente   será   grande   o   suficiente   para 
armazenar   a   maioria   dos   números   inteiros   que   seu   programa   irá 
utilizar. Caso o tipo int não seja suficiente para armazenar os 
números inteiros de sua aplicação, utilize o tipo de dados long.
int idadeMatusalem = 564412;
4. long O tipo de dados long é um inteiro de 64 bits com sinal. Seu 
valor   mínimo   é   ­9223372036854775808   e   seu   máximo   é 
9223372036854775807. Use esse tipo se precisar de um valor maior 
do que o int pode prover.
long valorEnorme = 546885454588746008;
5. float  Tipo   de   dados   de   precisão   única   com   32   bits   e   ponto 
flutuante (aceita valores numéricos reais). Esse tipo de dados 
nunca   deve   ser   utilizado   para   valores   precisos,   como   valores 
monetários. Para isso, utilize a classe java.math.BigDecimal. 
float taxaJuros = 1.4;
6. double  Esse   tipo   de   dados   é   de   precisão   única   com   64   bits   e 
ponto   flutuante.  double  é   comumente   a   escolha   padrão   na 
utilização de números reais. Como mencionado para o tipo float, 
esse tipo de dados não deve ser utilizado para valores precisos.
double mediaFinal = 8.75;
7. boolean  Tipo   com   apenas   dois   valores   possíveis:  true 
(verdadeiro)   e  false  (falso).   Esse   tipo   de   dados   é   utilizado 
para simples marcações que sigam condições verdadeiro/falso. 
boolean temCarroProprio = true;
8. char Representa um único caractere de 16 bits Unicode. Seu valor 
mínimo é '\u0000'(0) e seu máximo é '\uffff' (65535).
char sexo = 'F';

Além dos oito tipos primitivos de dados listados acima, Java fornece 
suporte especial para cadeia de caracteres (texto) através da classe 
java.lang.String.   Ao   declarar   um   texto   entre   aspas   duplas,   Java 
criará um novo objeto do tipo String. Por exemplo, o trecho a seguir: 
String   s   =   “Isso   é   uma   String!”;  atribui   a  String   “Isso   é   uma 
String!”  à   variável  s.   Objetos   do   tipo  String  são   imutáveis,   quer 
dizer,   uma   vez   criados   não   podem   ter   seu   valor   alterado. 
Técnicamente,  String   não   é   um   tipo   primitivo.   Mas   considerando   o 
suporte especial que a linguagem dá a classe (como atribuir um texto 
entre aspas duplas diretamente ao objeto), normalmente vemos  Strings 
como um tipo primitivo.  
Como   foi   dito   acima,   uma   vez   atribuído   um   valor   à   uma   variável   do 
tipo  String,   o   valor   não   pode   ser   alterado;   mas   a   variável   pode 
receber um valor diferente. Por exemplo:
//Atribuímos um valor à variável texto. Esse valor não pode ser
//alterado, mas a variável texto sim!
String texto = “Isso é um texto”;
//Mas podemos reconstruir a variável texto com um outro valor!
texto = “Isso já é outro texto!”;
Os valores padrão para os tipos de dados em Java são os seguintes:
Tipo Primitivo Valor Padrão (para campos)
byte  0
short  0
int  0
long  0L
float  0.0f
double  0.0d
char  '\u0000'
String (ou qualquer outro objeto) null
boolean  false
Tenha em mente que para variáveis locais, o compilador nunca atribui 
um   valor   padrão   na   declaração.   Se   você   não   puder   inicializar   sua 
variável local quando ela é declarada, defina um valor a ela antes de 
usá­la.   Acessar   uma   variável   local   não­inicializada   resultará   num 
erro em tempo de compilação.
8­A)   Crie   uma   classe  Pessoa.   Essa   classe   deve   ter   os   seguintes 
campos: nome (String), idade (int), sexo (char), profissão (String), 
altura (double) e peso (double). Crie métodos que exponham e definam 
os campos de  Pessoa. Crie uma outra classe executável (com o método 
main)   e   construa   duas   instâncias   de  Pessoa.   Altere   os   valores   dos 
campos das Pessoas instanciadas.

Exemplo com métodos para receber e definir campos:

class Girafa {
//Os campos...
int tamanhoPescoco;
int tamanhoLingua;

//Métodos para expor os campos de Girafa
public int getTamanhoPescoco() {
//Retornamos o valor do campo tamanhoPescoco.
return tamanhoPescoco;
}

public int getTamanhoLingua() {
//Retornamos o valor do campo tamanhoLingua.
return tamanhoLingua;
}

//Métodos para definição dos campos de Girafa
public void setTamanhoPescoco(int novoValor) {
//Definimos o valor para o campo tamanhoPescoco.
tamanhoPescoco = novoValor;
}

public void setTamanhoLingua(int novoValor) {
//Definimos o valor para o campo tamanhoLingua.
tamanhoLingua = novoValor;
}
}
Literais
Pudemos   perceber   que   a   palavra   reservada  new  não   é   utilizada   para 
inicialização   de   tipos   primitivos.   Tipos   primitivos   são   dados 
especiais construidos dentro da linguagem; não são objetos criados de 
uma classe. Um literal é a representação em código fonte de um valor 
fixo. Literais são representados diretamente no código sem necessitar 
de computação. Abaixo seguem exemplos de literais em Java:

boolean resultado = true; //true é o valor literal.
char cMaiusculo = 'C'; //'C' é o literal.
byte posicoes = 100; //100 é o valor literal.
short frangosAssados = 3455; //3455 é o literal.

Os   tipos   inteiros   de   dados   (byte,  short,  int  e  long)   podem   ser 


expressados usando base decimal, octal ou hexadecimal. Base decimal 
significa que temos 10 símbolos para representar números (0, 1, 2, 3, 
4, 5, 6, 7, 8 e 9). É a base que utilizamos em nosso dia­a­dia. A 
base   octal   usa   8   símbolos   (0,   1,   2,   3,   4,   5,   6,   7   e   8)   e   a   base 
hexadecimal utiliza 16 símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, 
C, D, E e F) para representação de números.

int valorDecimal = 26; //Número 26 na base decimal.
int valorOctal = 032; //Número 26 na base octal.
int valorHexadecimal = 0x1a; //O número 26 na base hexadecimal.

Os   tipos   de   ponto   flutuante   (números   reais)   podem   ser   expressos 


utilizando   o   símbolo  E  ou  e  para   notação   científica,  F  ou  f  para 
literais  float  e  D  ou  d    para literais  double. Por convenção, esses 
símbolos (F e D) são omitidos.

double d1 = 1.234e2 //Ou 123.4 sem notação científica.
double d2 = 44.766d; //Significa a mesma coisa que 44.766.
double d3 = 89.433; //Sem símbolos!
 float f1 = 77.343f; //O mesmo valor que 77.343.

Literais   dos   tipos  char  e  String  odem   conter   qualquer   caractere 


Unicode   (UTF­16).Se   seu   editor   e   sistema   de   arquivo   permitem,   você 
pode   usar   esses   caracteres   diretamente   no   código.   Caso   contrário, 
pode­se   usar   os  escapes   Unicode  como  '\u0108'  (C   maiúsculo   com 
circunflexo)   ou  “Voc\u00ea   \u00e9   t\u00e3o   focado.”  (“Você   é   tão 
focado.”).   Sempre   utilize   aspas   simples   (')   para   literais  char  e 
aspas   duplas   (“)   para   literais  String  (caso   contrário   ocorrerá   um 
erro de compilação). Sequências de escapes Unicode  podem ser usadas 
em qualquer ponto de um programa Java (como em nomes de campos. Não 
somente em literais char e String).

A   linguagem   Java   também   suporta   alguns   escapes   especiais   para 


literais  char  e  String:  \b  (backspace),  \t  (tab),  \n  (line   feed   – 
nova   linha),  \f  (form   feed   –   alimentação   de   forms),  \r  (carriage 
return   –   similar   ao   nova   linha),  \”  (aspas   duplas),  \'  (aspas 
simples) e \\ (barra invertida).

Há também um literal especial,  null  (nulo), que pode ser usado como 


um   valor   para qualquer tipo referencial.  null  pode ser atribuido   a 
qualquer variável, exceto variáveis de tipo primitivo. Não há muito 
que se possa fazer com um valor  null  além de testar sua presença (A 
variável   x   é  null?).   Portanto,  null  é   comumente   utilizado   em 
programas como um marcador para indicar que determinado objeto está 
indisponível.

Há   também   um   tipo   especial   de   literal   chamado  literal   de   classe, 


formado   pelo  nome de  um tipo  com  .class.  Por exemplo,  String.class 
referencia o objeto do tipo Class que representa o próprio tipo (quer 
dizer   que   o   Java   nos   permite   lidar   com   as   classes   que   definem   os 
objetos como objetos!).

Arrays
Um   array,   é   um   objeto   container   que   armazena   um   número   fixo   de 
valores dum mesmo tipo. O tamanho de um array é definido no momento 
de   sua   criação.   Após   a   criação,   o   tamanho   do  array  não   pode   ser 
alterado. Você já viu um exemplo de array nesse tutorial. Se lembra 
do método main? Ele recebe um array de Strings como parâmetro.

Exemplo de um array com 10 posições.
Os   itens   do   array   são   chamados   de  elementos,   e   cada  elemento  é 
acessado   por   seu   índice   numérico.   Como   mostrado   na   ilustração 
anterior,   a   primeira   posição   de   um   array   tem   índice   0.   Em   nosso 
exemplo, a última posição do array tem índice 9 (o tamanho do array 
menos um). O quinto valor no array, por exemplo, seria acessado pelo 
índice 4.
Segue exemplo de classe utilizando array:

class TesteArray {
public static void main(String args[]) {
//A declaração de tipo “int[]” define que criamos um array 
//do tipo inteiro. O trecho “new int[10]” diz que nosso 
//array v terá 3 posições.
int[] a = new int[3];
//Atribuímos o valor 300 à primeira posição do array.
a[0] = 300;
//Atribuímos o valor 150 à segunda posição do array.
a[1] = 150;
//Atribuímos o valor 50 à última posição de nosso array.
a[2] = 50;
//Exibimos os valores armazenados no array.
System.out.println(“Elemento na 1ª posição: ” + a[0]);
System.out.println(“Elemento na 2ª posição: ” + a[1]);
System.out.println(“Elemento na 3ª posição: ” + a[2]);
}
}

Ao executarmos esse programa, nos será exibido:

>300
>150
>50

Similarmente, podemos declarar arrays de outros tipos:
byte[] b = new byte[100];
String[] frases = new String[50];
Bicicleta[] bykes = new Bicicleta[10];

Na declaração, podemos definir que estamos criando um array no tipo 
do dado (int[]) ou no nome da variável:
//Note que os colchetes ([]) definem nossa variável numeros como um 
//array. 
int numeros[] = new int[30];
Podemos   também,   caso   já   saibamos   de   antemão   os   valores   que   serão 
armazenados no array, já defini­los no momento da instanciação:

String[] nomes = {“Daniel”, “Fernando”, “Alex”, “Melissa”};

O array nomes será criado com 4 posições, sendo que a 1ª posição terá 
o   valor  “Daniel”,   a   2ª   posição   o   valor  “Fernando”,   a   3ª   posição   o 
valor “Alex” e a última posição o valor “Melissa”.
Um array de uma dimensão (como os vistos anteriormente) é conhecido 
como vetor.
Podemos   também   criar   arrays   multidimensionais   (com   duas   ou   mais 
dimensões). Segue exemplo de um array bidimensional (ou matriz):

//Criamos uma matriz de 4x4...
int[][] matriz = new int[4][4];

Os   valores   de   um   array   bidimensional   são,   assim   como   os   do 


unidimensional, acessados por índice.

6 7 3
2 8 0
4 1 5
int[][] m = new int[3][3];
Utilizemos o exemplo da imagem anterior. Para acessarmos o valor 7:
//Valor 7 está na primeira linha (0), segunda coluna (1).
int valor7 = m[0][1];
Acessando valor 5:
//Valor 5 está na terceira linha (2), terceira coluna (2).
int valor5 = m[2][2];
A matriz da figura poderia ser criada da seguinte forma...

int[][] m = {{6,7,3},{2,8,0},{4,1,5}};

ou...

int[][] m = new int[3][3];
//1ª linha...
m[0][0] = 6;
m[0][1] = 7;
m[0][2] = 3;
//2ª linha...
m[1][0] = 2;
m[1][1] = 8;
m[1][2] = 0;
//3ª linha.
m[2][0] = 4;
m[2][1] = 1;
m[2][2] = 5;

Arrays   em   java   permitem   que   saibamos   qual   seu   tamanho   (quantas 


posições eles têm). Todo array em java possui uma variável pública, 
length, que armazena seu tamanho.

Double[] valores = {1.4, 7.66, ­98.333};
System.out.println(“Tamanho do vetor valores: ” + valores.length);
O programa exibiria a mensagem “Tamanho do vetor valores: 3”
9­A) Construa uma classe executável (com método main) e crie um array 
unidimensional   do   tipo  int.   Insira   valores   no   array   e   os   exiba   na 
tela (System.out.println()).

9­B) Construa um classe executável e crie um array bidimensional 3x3 
de Strings. Insira nomes de pessoas conhecidas nessa matriz e, então, 
exiba esses nomes na tela.

9­C)  Construa   um   vetor   (array   unidimensional)   de  Bicicletas 


(MountainBikes,  Estradeiras   e  Ergometricas).   O   vetor   deve   ter   no 
mínimo 5 posições.

Das könnte Ihnen auch gefallen