apostila java - parcial 2

Upload: willian-secco

Post on 12-Jul-2015

316 views

Category:

Documents


2 download

TRANSCRIPT

Programao JAVAJoacir Giaretta

[email protected]

IntroduoTendo sido originalmente concebida para o desenvolvimento de pequenos aplicativos e programas de controle de aparelhos eletrodomsticos e eletroeletrnicos, Java mostrou-se ideal para ser usada na rede Internet. O que a torna to atraente o fato de programas escritos em Java poderem ser executados virtualmente em qualquer plataforma, seja para computadores desktops, como Windows, Linux, Mac, seja para smartphones e celulares, como Symbian, Android, BlackBarry, seja para sistemas operacionais proprietrios, sistemas embarcados. Java uma linguagem de programao orientada a objeto desenvolvida na dcada de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que so compiladas para cdigo nativo, a linguagem Java compilada para um bytecode que executado por uma mquina virtual. Java possui estrutura muito semelhante da linguagem C, da qual descende imediatamente. Java tem em comum com a linguagem C++ o fato de ser orientada a objetos e mantm com esta uma alto grau de semelhana. Esse paradigma de programao consiste de um grau a mais na abstrao da programao, em comparao com a programao estruturada, e tem se mostrado extremamente til na produo de programas cada vez mais sofisticados, em menor tempo e com maior qualidade. A programao orientada a objetos (OOP) hoje universalmente adotada como padro de mercado, e muitas linguagens tradicionais foram aperfeioadas para implementar esse paradigma, como C++, Object Pascal, etc. A Sun Microsystems foi a desenvolvedora da linguagem Java at que, em Abril de 2009, a Oracle a comprou, sendo atualmente a detentora dos direitos autorais. O site http://java.sun.com continua sendo o site oficial e mantm informaes atualizadas sobre o desenvolvimento da linguagem Java e suas relaes com o mercado, assim como utilitrios e ferramentas disponveis para serem baixados gratuitamente.

Como Java executadoUm cdigo fonte escrito em linguagem Java (.java) traduzido pelo compilador para os bytecodes (.class), isto , o cdigo de mquina de um processador virtual, chamado Java Virtual Machine (JVM). A JVM um capaz de interpretar os bytecodes produzidos pelo compilador, executando a aplicao vrias vezes mais lento do que linguagens com cdigo executvel nativo da plataforma. Em contrapartida, uma aplicao Java pode ser executada em qualquer plataforma, desde que esteja dotada de uma JVM. 1

Ambientes de Desenvolvimento possvel desenvolver aplicaes em Java atravs de vrios ambientes de desenvolvimento integrado (IDEs). Dentre as opes mais utilizadas pode-se destacar algumas para usurios iniciantes:

BlueJ um ambiente desenvolvido por uma faculdade australiana (considerado muito bom para iniciantes); JCreator (gratuito/shareware) um ambiente desenvolvido pela Xinox (recomendado para programadores iniciantes); jEdit (recomendado para programadores iniciantes);

E outras IDEs mais completas (recomendado para programadores profissionais):

Eclipse (software livre) um projeto aberto iniciado pela IBM; IntelliJ IDEA (comercial) uma IDE desenvolvida pela JetBrains; JBuilder um ambiente desenvolvido pela empresa Borland; JDeveloper (gratuito OTN) uma IDE desenvolvida pela empresa Oracle; NetBeans (software livre) uma IDE desenvolvida pela Sun Microsystems;

Por serem gratuitas, o Eclipse (www.eclipse.org) e o NetBeans (www.netbeans.org) so IDEs muito utilizadas, tanto a nvel acadmico como profissional. Essas sero as ferramentas escolhidas para trabalhar com essa apostila.

2

Antes de instalar uma dessas ferramentas, fundamental baixar e instalar o JDK (Kit de Desenvolvimento Java) mais atual possvel, encontrado em http://java.sun.com. Esse JDK especfico para a plataforma que se quer desenvolver. Por exemplo:

Java SE (Standard Edition): a base da plataforma Java e utilizada para desenvolver aplicativos desktops e servidores. Java EE (Enterprise Edition): Necessria para desenvolver softwares que rodam em servidores de aplicaes (geralmente aplicaes web). Java ME (Micro Edition): Utilizada para desenvolver softwares para dispositivos mveis e para dispositivos com pouca capacidade de processamento, como por exemplo: telefones celulares.

Para o contedo dessa apostila, iremos utilizar o Java SE. necessrio esclarecer duas siglas: JRE (Java Runtime Environment): composto pela JVM e pela biblioteca de classes Java utilizadas para execuo de aplicaes java, estas bibliotecas so chamadas de APIs Java. Portanto, para rodarmos uma aplicao Java necessrio instalarmos uma JRE no computador onde o software foi instalado. JDK (Java Development Kit): o conjunto de ferramentas necessrias para realizar o desenvolvimento de aplicaes Java e inclui a JRE e ferramentas de programao. Esse o que deve ser baixado e instalado para a continuidade dessa apostila.

No momento da digitao dessa apostila, a verso do Java SE estava na Java SE 6 Update 25, e com indicativos de lanamento do Java SE 7. importante que se tenha a JDK sempre atualizada, pois as atualizaes so feitas constantemente pelos programadores do Java. Para instalar uma nova verso, v no Painel de Controle e remova a verso anterior, caso contrrio ela ficar instalada juntamente com a nova, o que no uma boa ideia.

Programao BsicaVamos iniciar com o clssico "Al pessoal!". O objetivo desta classe (estilo aplicao) simplesmente escrever na tela a frase "Al pessoal!". Vejamos como o cdigo fonte:public class AloPessoal { public static void main(String args[]) { System.out.println("Alo pessoal!"); } }

Digitando e executando a classeVamos fazer trs testes com a mesma classe: 1) Crie uma workspace no Eclipse, chamada WSEclipse. Lembre-se que o Eclipse abre os projetos a partir de uma workspace. No possvel abrir um projeto diretamente, sempre necessrio abrir a workspace. Aps abri-la, crie um projeto chamado Projeto Aula 3

Java.

A seguir, crie um pacote chamado principal (em minsculo, pois, por conveno Java, pacotes so escritos sem nenhuma maiscula). Por fim, crie a classe AloPessoal, clicando no checkbox para inserir o main() automaticamente. Ento, digite o println e execute com o auxlio das teclas Ctrl + F11. 2) Crie um projeto no NetBeans (o NetBeans no trabalha com workspaces) chamado Projeto Aula Java. A seguir, crie um pacote chamado principal. Por fim, crie a classe AloPessoal (o NetBeans no possui checkbox para inserir o main() automaticamente). Ento, adicione o main(), digite o println e execute com o auxlio das teclas Shift + F6. 3) Apenas a ttulo de conhecimento, no necessrio ter uma IDE para executar aplicaes Java. Ento, vamos utilizar o Bloco de Notas para criar o arquivo AloPessoal.java. O nome do arquivo deve ser exatamente igual ao nome da classe. Digite a classe dentro desse arquivo e salve-a. Para compilar, vamos para o Prompt de Comando, direcionando para a pasta onde foi salvo o arquivo (cd \pasta). D um dir para verificar se o arquivo est nessa pasta. Aps, digite javac AloPessoal.java. O javac o compilador Java e, se tudo der certo, ir gerar o arquivo AloPessoal.class, que o bytecode, que pode ser executado a partir do comando java AloPessoal.

Entendendo a estrutura do programaToda classe auto-executvel Java deve conter ao menos uma declarao da formapublic class [nome] { public static void main(String args[]) { ... } }

Onde [nome] o nome da classe e a parte "..." o cdigo Java vlido, a ser executado no programa. O nome de uma classe um identificador, como qualquer outro presente no programa, por isso no deve conter espaos ou outros caracteres grficos, isto , deve ser um nome composto de uma sequncia de caracteres que seja vlida para um identificador. Outros exemplos de identificadores so nomes de variveis, nomes de comandos, etc. Vamos adiar um pouco a complicao sobre o que vem a ser uma classe, pois isso depende de alguns conceitos da programao orientada a objetos. Por hora, vamos apenas aceitar que toda aplicao Java deve conter ao menos uma classe, e que dentro de uma classe que vo os dados e as funes. Notemos ainda que toda classe estilo aplicao Java deve ter uma classe dotada de uma funo chamada main(). As funes, na Orientao a Objetos, levam o nome de mtodos. O mtodo main() o ponto onde se d o incio da execuo do programa, isto , um mtodo chamado automaticamente pela JVM. Voltando classe AloPessoal, o cdigo a ser executado System.out.println("Alo pessoal!");

4

o nome de um mtodo que serve para escrever informaes textuais na tela. Note que existe um ; (ponto e vrgula) no final da linha, logo aps o ")". Em Java, obrigatrio colocar um ponto e vrgula aps cada comando, bem semelhante a Linguagem C.System.out.println

Mais exemplosPodemos escrever "Alo pessoal!" escrevendo primeiro, "Alo " e depois, "pessoal!". Para isso, a classe deve ser alterada da seguinte forma:public class Alo { public static void main(String args[]) { System.out.print("Alo "); System.out.println("pessoal!"); } }

Para escrever dados genricos na tela, existe o System.out.print que escreve o dado e mantm o cursor na mesma linha. H tambm o System.out.println que escreve dados e muda o cursor para a prxima linha. Podemos concatenar dois ou mais strings usando o operador de concatenao "+". Por exemplo,"Alo " + "pessoal!"

o mesmo que "Alo pessoal!". Para escrever um nmero, basta escrever [string]+n onde [string] uma string qualquer e n um nmero. Vamos utilizar um exemplo declarando variveis inteiras, somando-as e mostrando o resultado:public class Numero { public static void main(String args[]) { int a = 3, b = 2, c; c = a + b; System.out.println("A soma de " + a + " com " + b + " resulta " + c); } }

A converso das variveis numricas para String feita automaticamente pelo operador de concatenao. E ele entende que no uma soma porque comea com um String ( "A soma de"). Compilando e executando esse exemplo, devemos obter na tela:A soma de 3 com 2 resulta 5

Introduzindo comentrios no cdigoUm comentrio uma poro de texto que no tem funo para o compilador Java, mas til para identificar partes de cdigo de programao. Assim sendo, um comentrio identificado, mas ignorado completamente pelo compilador Java. Os comentrios so introduzidos no cdigo Java de duas formas distintas (semelhante a linguagem C):

Colocado em qualquer parte da classe e delimitado entre /* e */. Colocado // antes do comentrio, que se estender at o final da linha. 5

Por exemplo, o cdigo:// // Este um exemplo de como somar dois numeros // public class Numero { public static void main(String args[]) { /* Mtodo principal */ double x,y; // estes sao numeros reais de dupla precisao // System.out.print("x = 2.0"); /* inicializando o "x" */ x = 2; y = 3.0; /* iniciando o y, e fazendo y = y+x; */ y = y + x; // escrevendo a soma System.out.println("x+y = " + (x+y)); } } /* fim de Numero */

equivalente ao cdigo:public class Numero { public static void main(String args[]) { double x,y; x = 2; y = 3.0; } y = y + x;

System.out.println("x+y = " + (x+y)); }

No prximo captulo, vamos estudar detalhadamente os tipos de dados aceitos pela linguagem Java.

Tipos de DadosProgramao de computadores consiste essencialmente em manipulao de dados. Os dados representados em um computador podem ser de diversos tipos, e eles so classificados conforme esses tipos. Por isso, damos o nome de Tipos de Dados. A linguagem Java oferece diversos tipos de dados com os quais podemos trabalhar. Este captulo cobrir os tipos de dados mais importantes. Na verdade h basicamente duas categorias em que se encaixam os tipos de dados: tipos primitivos e tipos de referncias. Os tipos primitivos correspondem a dados mais simples ou escalares e sero abordados em detalhe no que segue, enquanto os tipos de referncias consistem em arrays, classes e interfaces. Estes sero vistos posteriormente. Descrio boolean Pode assumir o valor true ou o valor false. Utiliza um nico bit na memria. Caractere em notao Unicode (www.unicode.org) de 16 bits. Serve para a char armazenagem de dados alfanumricos. Tambm pode ser usado como um dado inteiro com valores na faixa entre 0 e 65535. Inteiro de 8 bits em notao de complemento de dois. Pode assumir valores entre byte -27=-128 e 27-1=127. 6 Tipo

Inteiro de 16 bits em notao de complemento de dois. Os valores possveis cobrem a faixa de -2-15=-32.768 a 215-1=32.767 Inteiro de 32 bits em notao de complemento de dois. Pode assumir valores entre int -231=2.147.483.648 e 231-1=2.147.483.647. Inteiro de 64 bits em notao de complemento de dois. Pode assumir valores entre long -263 e 263-1. Representa nmeros em notao de ponto flutuante normalizada em preciso simples de 32 bits em conformidade com a norma IEEE 754-1985. O menor valor float positivo representvel por esse tipo 1.40239846e-46 e o maior 3.40282347e+38 Representa nmeros em notao de ponto flutuante normalizada em preciso dupla de 64 bits em conformidade com a norma IEEE 754-1985. O menor valor double positivo representvel 4.94065645841246544e-324 e o maior 1.7976931348623157e+308short

Atribuio de Dados e IdentificadoresPara exemplificar os tipos de dados, faremos atribuies a partir do operador de atribuio "=", que indica o valor que a varivel receber: 1. 2. 3. 4. Informar o tipo de dado que deseja declarar (boolean, int, etc) Informar o nome que ser usado para batizar a varivel (somaTotal, por exemplo) Atribuir varivel um valor inicial. Terminar a declarao com um ponto-e-vrgula ";".

Exemplo: int somaTotal = 15; ou:int somaTotal; somaTotal = 15;

Na declarao acima usamos o nome somaTotal para designar a varivel. Um nome de varivel, assim como nome de um mtodo, classe, rtulo e dezenas de outros itens lexicogrficos, constitui o que chamado um identificador. Uma vez criado, um identificador representa sempre o mesmo objeto a ele associado, em qualquer contexto em que seja empregado. As seguintes regras orientam a criao de identificadores:

O primeiro caracter de um identificador deve ser uma letra. Os demais caracteres podem ser quaisquer sequncias de nmeros e letras. Devido a razes histricas, o underline "_" e o sinal de dlar "$" so considerados letras e podem ser usados nos identificadores. Assim como em outras linguagens, como C e C++, os identificadores distinguem o tipo de caixa das letras, isto , as maisculas so consideradas distintas das minsculas. H uma conveno Java que regulamente a utilizao disso: 7

Variveis e Mtodos: primeira inicial minscula e demais maisculas. Ex: fimDeArquivo, meuMetodo() Classes: todas iniciais maisculas. Ex: AloPessoal Pacotes todas iniciais minsculas. Ex: pacoteprincipal

Tipo caracterUma varivel do tipo char armazena um caractere Unicode. Um caractere Unicode um caractere de 16 bits, sendo que de 0 a 225 correspondem aos caracteres do cdigo ASCII (a tabela ASCII uma tabela padronizada internacionalmente de associaes entre caractere e a sua representao numrica no computador). Uma constante do tipo caractere representada colocando-se entre apstrofos, ou pelo valor numrico correspondente na tabela Unicode (ou ASCII), ou ainda, pela seqncia '\x' onde x especifica o caractere a ser referido. Esta especificao de seqncia de escape obedece s mesmas convenes do C/C++. Por exemplo: 'a', 'f', '\n', etc, so constantes do tipo char. Exemplo de caracteres especiais:Representao visual: Funo, significado: \n Pula linha, linefeed \r Retorno de carro \b Backspace \ Apstrofe \ Aspas \\ Barra inversa

Exemplo:char letra = 'A' ; char letra2 = 65 ; // na tabela ASCII o 65 corresponde ao 'A'

Tipo BooleanEste o tipo de dado mais simples encontrado em Java. Uma varivel booleana pode assumir apenas um entre dois valores: true ou false. Algumas operaes possveis em Java como ay, etc. tm como resultado um valor booleano, que pode ser armazenado para uso futuro em variveis booleanas. Estas operaes so chamadas operaes lgicas. As variveis booleanas so tipicamente empregadas para sinalizar alguma condio ou a ocorrncia de algum evento em uma aplicao Java. Exemplo:boolean fimDoArquivo = false;

Tipos de Dados InteirosOs tipos de dados primitivos byte, int, char, short e long constituem tipos de dados inteiros. Isso porque variveis desses tipos podem conter um valor numrico inteiro dentro da faixa 8

estabelecida para cada tipo individual. Por exemplo, um byte pode conter um inteiro entre -128 e 127, enquanto um short pode conter um valor entre -32.768 e 32.767. J o tipo long permite armazenar valores muito maiores. H diversas razes para se utilizar um ou outro dos tipos inteiros em uma aplicao. Em geral, no sensato declarar todas as variveis inteiras da aplicao como long. Raramente os programas necessitam trabalhar com dados inteiros que permitam fazer uso da mxima capacidade de armazenagem de um long. Alm disso, variveis grandes consomem mais memria do que variveis menores, como short. Exemplo:byte Contador = 1; int AnguloEmGraus = -45; char Indice = 6;

A diferena entre essas declaraes e a declarao de dados booleanos vista acima est no tipo de dado especificado e no valor atribudo a cada varivel.

Operaes com inteirosPodemos realizar uma srie de operaes com os dados do tipo inteiro. A tabela seguinte mostra uma lista completa. Operao= ==, !=

Descrio

Operador de atribuio Operadores de igualdade e diferena = Operadores de desigualdade +, Operadores unrios +, -, *, /, % Adio, subtrao, multiplicao, diviso e mdulo Operadores de atribuio com adio, subtrao, multiplicao, diviso e +=, -=, *=, /=, %= mdulo ++, -Incremento e decremento , >>> Operadores de deslocamento de bits =, >>>= Operadores de atribuio com deslocamento de bits ~ Operador lgico de negao &, |, ^ Operadores lgicos E, OU e OU-exclusivo &=, |=, ^= Operadores de atribuio com operao lgica E, OU e OU-exclusivo Muitas das operaes que aparecem na lista acima so familiares e praticamente no requerem explicao. H outros, porm, que podem simplificar, ou deixar mais compacta a programao. o caso dos operadores de atribuio aritmticos. Estes consistem de atalhos para atribuir um novo valor a uma varivel onde esse novo valor depende do valor anterior l armazenado. Por exemplo: += adiciona um valor ao valor antigo de uma varivel e a soma passa a ser o novo valor. Esse padro tambm obedecido para as operaes -=, *=, /= e %=. Temos assim as seguintes correspondncias: 9

x x x z

+= -= *= /=

5 y 2 4

x x x z

= = = =

x x x z

+ * /

5 y 2 4

Os operadores de incremento e decremento referem-se a apenas uma varivel (logo so chamados de unrios). Por exemplo, o operador de incremento soma um ao operando conforme o exemplo:x++;

uma maneira muito mais concisa de se escrever x = x + 1. Mas no s, esses operadores se comportam de modo diferente quando seguem ou precedem o nome de uma varivel. Se o operador precede o nome da varivel, ento o incremento (ou decremento) ocorre antes que o valor da varivel seja tomado para a expresso aritmtica. No seguinte exemplo, o valor das variveis x e y ser 6:int x = 5; int y = ++x;

Porm, no prximo exemplo o valor de x ser 6 enquanto que o valor de y ser 5:int x = 5; int y = x++;

Vejamos alguns exemplos de declaraes e de utilizaes de operaes envolvendo tipos inteiros:byte j = 60; short k = 24; int l = 30; long m = 12; long n = 9223372036854775807L; long resultado = 0L; resultado += j; // resultado = 60 (0 mais 60) System.out.println("Resultado = " + resultado); resultado += k; // resultado = 84 (60 mais 24) System.out.println("Resultado = " + resultado); resultado /= m; // resultado = 7 (84 dividido por 12) System.out.println("Resultado = " + resultado); resultado -= l; // resultado = -23(7 menos 30) System.out.println("Resultado = " + resultado); resultado = -resultado; // resultado = 23 ( -(-23) ) System.out.println("Resultado = " + resultado); resultado %= m; // resultado = 11 (resto de 23 div. 12) System.out.println("Resultado = " + resultado);

Qualquer literal inteiro considerado do tipo int. Por exemplo, o nmero 4 considerado um int, mas pode ser atribudo s variveis byte e short, pois o nmero suficientemente pequeno para caber nesses tipos de inteiro. Se for feita a atribuio desse mesmo nmero para uma varivel long, tambm ser possvel, porm, se o nmero inteiro atribudo for maior que 2147483648, que o maior valor permitido de uma varivel int, necessrio colocarmos a letra L (maiscula ou minscula) no final do nmero para indicarmos que um long. 10

Obs: Se alguma operao aritmtica cria um resultado que excede um dos limites estabelecidos para o tipo inteiro empregado, no h qualquer indicao de erro para avisar sobre essa ocorrncia. Ao invs disso, um complemento de dois do valor obtido ser o resultado. Por exemplo, se a varivel for do tipo byte, ocorrem os seguintes resultados: 127+1 = -128, 127+9=-120 e 127+127=-2. Entretanto, uma exceo do tipo ArithmeticException levantada caso ocorra uma diviso por zero. Vejamos o seguinte cdigo:public class Arith { public static void main(String args[]) { byte a = 127; short b = 32767; int c = 2147483647; long d = 9223372036854775807L; int e = 0; a += 1; b += 1; c += 1; d += 1; System.out.println("Valor de a = " + System.out.println("Valor de b = " + System.out.println("Valor de c = " + System.out.println("Valor de d = " + d /= e; // Vai dar erro porque e = } }

a); b); c); d); 0

com seu respectivo resultado de execuo:C:\jdk1.4.1.\Aula>java Arith Valor de a = -128 Valor de b = -32768 Valor de c = -2147483648 Valor de d = -9223372036854775808 Exception in thread main java.lang.ArithmeticException: / by zero at Arith.main(Arith.java:18)

Porm, se substituirmos as atribuies por:a b c d = = = = a b c d + + + + 1; 1; 1; 1;

iremos obter um erro de compilao indicando incompatibilidade de tipos e solicitando uma converso (casting ou coero) explcita de tipos. Isso se deve ao fato de que, a maioria das operaes aritmticas envolvendo inteiros produz um int, independentemente do tipo original dos operandos. Como um int possui 32 bits, um short 16 e um byte 8, tal operao no possvel. Ento as duas primeiras atribuies iro resultar em erro, a terceira se trata de uma varivel int e a quarta se trata de uma varivel long (64 bits). Nesses casos, necessrio utilizar o operador de coero ou type cast, da seguinte forma:a = (byte)(a + 1); b = (short)(b + 1);

11

A tabela a seguir mostra as promoes permitidas para os tipos de dados primitivos:Tipo double float long int char short byte boolean Promoes permitidas nenhuma double float ou double long, float ou double int, long, float ou double int, long, float ou double short, int, long, float ou double nenhuma (no so considerados nmeros em Java)

Exerccios:1) Criar uma aplicao para calcular o salrio de um trabalhador a partir do nmero de horas trabalhadas e o valor da hora. Estes valores devem ser armazenados em variveis inteiras. Mostre o salrio. 2) Criar uma aplicao que insira um valor em uma varivel int. Calcular e mostrar o menor nmero possvel de notas de 100, 50, 20, 10, 5, 2 e 1 em que o valor pode ser decomposto. Ex.: 389 pode ser decomposto em 3 notas de 100, 1 de 50, 1 de 20, 1 de 10, 1 de 5, 2 de 2 e 0 de 1. Dica: Utilizar o resto da diviso de inteiros (%) 3) Criar uma aplicao que declare e inicialize dois valores short representando, respectivamente, um valor de hora e um de minutos e informe quantos minutos se passaram desde o incio do dia. Exemplo:valores atribudos : 13 15 mostra : 795 minutos

Tipos de Ponto FlutuanteEm Java, existem duas categorias de variveis de ponto flutuante: float armazena valores numricos em ponto flutuante de preciso simples e double de preciso dupla. Ambas seguem norma: IEEE Standard for Binary Floating Point Arithmetic, ANSI/IEEE Std. 754-1985 (IEEE, New York). O fato de obedecer a essa norma que torna os tipos de dados aceitos pela linguagem Java to portveis. Esses dados sero aceitos por qualquer plataforma, independendo do tipo de sistema operacional e do fabricante do computador. A representao dos valores em ponto flutuante pode ser feita usando a notao decimal (exemplo: -24.321) ou a notao cientfica (exemplo: 2.52E-31). Alm dos possveis valores numricos que uma varivel de ponto flutuante pode assumir h tambm os seguintes: menos infinito mais infinito zero NAN - not a number

12

Estes so requeridos pela norma. O mais infinito usado, por exemplo, ao somarmos 1 ao maior valor possivelmente representvel por esse sistema.

Operaes com tipos de ponto flutuanteMuitas das operaes realizveis com inteiros (porm no todas) tm anlogas para nmeros de ponto flutuante. Eis um resumo: Operao=

Descrio Operador de atribuio ==, != Operadores de igualdade e diferena = Operadores de desigualdade +, Sinais unrios +, -, *, / Adio, subtrao, multiplicao e diviso +=, -=, *=, /= Operadores de atribuio com adio, subtrao, multiplicao e diviso ++, -Operadores unrios de incremento e decremento Um valor como 3.14159265 considerado double como padro, se voc quer atribuir esta constante a um float, faa o type cast explicitamente:float a; a=(float)3.14159265; //a recebe PI

Ou ento usar uma terminao em f para indicar que o nmero deve ser representado como float:float a=3.14159265f //ou F maiusculo

Exerccios:1) Criar uma aplicao para calcular e mostrar as mdias aritmtica e harmnica de trs valores. Os trs valores devem ser double e as duas variveis para as mdias devem ser float.ma = (a + b + c ) / 3; mh = 3 / (1/a + 1/b + 1/c );

2) Criar uma aplicao que declare trs variveis a1 (double), an (double) e r (double), respectivamente o 1o termo de uma progresso aritmtica, o ltimo termo da progresso e a razo desta progresso. Atribua valores a essas variveis. Aps, determinar a soma dos termos desta progresso aritmtica e mostrar. Obs: n e Sn devem ser float.n = an a1 + r r Sn = (a1 + an) . n 2

13

Vetores e MatrizesSemelhante s linguagens C, C++ e Pascal, a linguagem Java tambm d suporte a vetores e matrizes (arrays) de diversas formas. Os vetores constituem uma forma muito conveniente de organizar informaes em fileira. Por exemplo, podemos formar um vetor com as notas de cinco alunos de uma sala de aula do seguinte modo:float nota[] = { 7.8f, 8.4f, 4.2f, 1.8f, 6.4f };

Neste caso nota[0] a nota do primeiro aluno, isto , 7.8, nota[1] a nota do segundo, ou seja, 8.4, e assim por diante. A utilizao de vetores e matrizes em Java envolve trs etapas: 1. Declarar o vetor ou matriz. Para isto, basta acrescentar um par de colchetes antes ou depois do nome da varivel. Por exemplo:int ind[]; double A[][],T[][]; float []nota;

2. Reservar espao de memria e definir o tamanho. preciso definir o tamanho do vetor, isto , a quantidade total de elementos que ter de armazenar. Em seguida necessrio reservar espao de memria para armazenar os elementos. Isto feito de maneira simples pelo operador new:ind = new int[10]; nota = new float[70]; A = new double[10][20];

Obs.: possvel juntar as duas primeiras etapas, realizando a declarao e a reserva de memria, assim: int ind[]= new int[10]; 3. Armazenar elementos no vetor ou matriz. Para armazenar uma informao em um dos elementos de um vetor ou matriz, necessrio fornecer um ndice que indique a posio desse elemento. Por exemplo, para armazenar um valor na quarta posio do vetor nota, fazemos o seguinte:nota[3] = 5.2f;

Como podemos observar, os ndices comeam em zero e vo at o nmero de posies reservadas, menos um. No vetor nota criado acima, os ndices vlidos vo de 0 at 69. Caso haja a tentativa de atribuir um valor a um elemento cujo ndice esteja fora desse intervalo, ocorrer um erro que impedir a execuo do programa. Por isso, necessrio um certo cuidado ao manejar com esses ndices, garantindo o perfeito funcionamento do programa. Existe, porm, um atalho para esses trs passos quando desejamos criar um vetor com valores atribudos de modo esttico. Foi o que fizemos no primeiro exemplo acima, declarando o vetor 14

com as notas de cinco alunos. Nesse caso, espao suficiente para as notas de cinco alunos foi reservado e as notas foram guardadas em respectivas posies do vetor.nota

Entretanto, nem sempre to fcil assim. Em geral, estaremos interessados em trabalhar com vetores muito maiores, e cujos elementos sejam provenientes de outras fontes, que variam com o tempo. Assim, seremos obrigados a seguir os passos acima. Eis mais alguns exemplos de vetores e matrizes:// 11 primeiros termos da seqncia de Fibonacci: long Fibonacci[] = {1,1,2,3,5,8,13,34,55,89,144}; // Tabela de sen(n*pi/6), n=0,1,2,...5 float seno[] = {0.0000f,0.5000f,0.8660f,1.0000f,0.8660f,0.5000f}; // Tabela de log(1+n), n=0,2...99: double tlog[] = new double[100]; for(int n=0; n