Apostila Java

Embed Size (px)

Citation preview

Introduo........................................................................................................................................3 Java..................................................................................................................................................3 O que Java?...............................................................................................................................3 Caractersticas da linguagem...........................................................................................................3 Java Interpretada e multiplataforma..........................................................................................3 Java Case Sensitive...................................................................................................................3 Java Multithread........................................................................................................................3 Porqu programar em Java?.............................................................................................................4 Java no mercado de trabalho atual...................................................................................................4 Como programar em Java................................................................................................................4 Ferramentas Java..............................................................................................................................6 JDK (Java Development Kit).......................................................................................................6 O que contm?.............................................................................................................................6 JRE (Java Runtime Evironment).................................................................................................6 Javac.............................................................................................................................................7 Tecnologias Java..............................................................................................................................7 JSE (Java Standart Edition).........................................................................................................7 JEE (Java Enterprise Edition)......................................................................................................7 JME (Java Mobile Edition)..........................................................................................................7 O que instalar?.................................................................................................................................7 Primeiro contato com o Java..........................................................................................................12 Analise da estrutura bsica de um programa java..........................................................................13 public.........................................................................................................................................13 static...........................................................................................................................................13 void............................................................................................................................................13 (String args[]).............................................................................................................................13 { ... }...........................................................................................................................................13 O que uma varivel?...................................................................................................................14 Como declarar uma varivel?....................................................................................................14 Definio de varivel e constantes.................................................................................................15 Declarao de constantes...............................................................................................................16 Como atribuir um valor?................................................................................................................16 Tipos de Dados..............................................................................................................................17 Os tipos primitivos em Java.......................................................................................................17 Comentrios...................................................................................................................................18 Operadores.....................................................................................................................................19 Operadores Aritmticos ................................................................................................................20 Operadores Relacionais.................................................................................................................22 Operadores Lgicos.......................................................................................................................22 Passagem de parmetro..................................................................................................................23 Converso de tipos.........................................................................................................................25 Excees em Java..........................................................................................................................26 Uso da estrutura try catch..............................................................................................................27 Uso do Bloco finally......................................................................................................................28 Uso da clausula throws..................................................................................................................29 Uso da Instruo throw..................................................................................................................30 Exerccios.......................................................................................................................................39 Comandos Condicionais................................................................................................................40 Uso da estrutura if-else..................................................................................................................40Curso Tcnico em Informtica

Capo Bonito - SP

1

Estrutura switch-case ....................................................................................................................41 Uso do getMessage e printStackTrace...........................................................................................42 Laos de Repetio........................................................................................................................43 Uso do Lao for.............................................................................................................................43 Uso do Lao while.........................................................................................................................44 Exerccios.......................................................................................................................................45 Funes Matemticas.....................................................................................................................46 Mtodo Ceil...............................................................................................................................47 Mtodo floor..............................................................................................................................47 Mtodo max...............................................................................................................................48 Mtodo min................................................................................................................................49 Mtodo sqrt................................................................................................................................49 Mtodo pow...............................................................................................................................50 Mtodo random..........................................................................................................................51 Formatao com a Classe DecimalFormat....................................................................................52 Internacionalizao com a Classe Locale......................................................................................54 Funes com Strngs......................................................................................................................56 Mtodo length............................................................................................................................57 Mtodo charAt...........................................................................................................................58 Mtodos toUpperCase e toLowerCase......................................................................................59 Mtodo substring.......................................................................................................................59 Mtodo trim...............................................................................................................................61 Mtodo replace..........................................................................................................................62 Mtodo valueOf.........................................................................................................................63 Mtodo indexOf.........................................................................................................................64 Criao de Banners........................................................................................................................65 Programao orientada por objeto.................................................................................................67 Definio e uso de uma classe.......................................................................................................71 Construtores e Herana..................................................................................................................82 Adio de construtores...............................................................................................................82 Herana de classes.........................................................................................................................86 Sobrescrita e Sobrecarga de Mtodos............................................................................................93 Conceito de polimorfismo.........................................................................................................93 Sobrescrita de mtodos..............................................................................................................94 Sobrecarga de mtodos..............................................................................................................97 Classes e mtodos finais..........................................................................................................103 Classes Abstratas, Interfaces e Pacotes........................................................................................107 Classes abstratas: criao e uso...............................................................................................107 Interfaces..................................................................................................................................111 Organizao em pacotes..........................................................................................................112

Curso Tcnico em Informtica

Capo Bonito - SP

2

IntroduoNesta aula aprenderemos o que Java, quais suas principais caractersticas, como funciona. Discorrerei sobre suas tecnologias atuais, onde se aplica cada uma, quais as diferenas entre elas, e, no final, quais programas instalar para podermos comear programar em Java.

JavaJava foi desenvolvida pela Sun Microsystems em 1995, inicialmente usada para rodar Applets via internet por meio do navegador HotJava (que acompanhava a linguagem), como o passar do tempo a Microsoft e a Netscape tambm incorporaram a nova tecnologia em seus navegadores. O que Java? Java uma linguagem de programao. Por favor no confundam Java com Java Script, enquanto uma uma poderosa linguagem de programao com vastos recursos, a outra uma linguagem de script para internet, com recursos limitados se comparados primeira.

Caractersticas da linguagemJava uma linguagem orientada objetos, interpretada, multiplataforma, case sensitive, e multithread. Segue um breve resumo de cada uma de suas caractersticas. Java Interpretada e multiplataforma Quando desenvolvemos uma aplicao em Java no ficamos presos uma dada plataforma, sendo assim, ao desenvolvermos no sistema operacional Windows por exemplo, no precisaremos recompilar o cdigo inteiro para rodar a mesma aplicao no Linux. Basta somente instalar o interpretador da Java, que tambm mantido pela Sun Microsystems, para o sistema operacional especfico, logo o pacote compilado no Windows vai rodar no Linux, MacOS, Solaris, ou em qualquer outro sistema operacional que possuir um interpretador Java. Java Case Sensitive Dizer que Java case sensitive significa dizer que a mesma sensvel as variaes de letras em maisculo e minsculo, ou seja, se por exemplo, voc declarar uma varivel A e declarar outra varivel a, Java far distino entre as duas. Java Multithread Em Java podemos executar dois comandos simultaneamente, sem um saber que o outro existe, sendo que cada um possui uma chamada diferente na mesma aplicao, tambm possvel

Curso Tcnico em Informtica

Capo Bonito - SP

3

retardar uma tarefa enquanto no executemos outra, como por exemplo, esperar at que todas as vendas abertas no momento sejam fechadas para podermos fechar o caixa dirio.

Porqu programar em Java?Java j no mais novidade e conforme os anos avanam surgem novos recursos, sendo assim um bom investimentos, com uma recursividade bastante elstica tem suas principais caractersticas como principal ponto forte. Com o passar dos anos o interpretador foi melhorando a principal justificativa para no programar em Java (de que era uma linguagem lerda por ser interpretada) foi caindo, com o avanar da tecnologia e o barateamento de custos do hardware, hoje em dia considervel (na grande maioria dos casos) que voc perca alguma performance para poupar custos com manuteno e tempo de resposta ao cliente.

Java no mercado de trabalho atualAtualmente Java est melhor difundida na faixa de sistemas para Web, com suas novas plataformas de desenvolvimento encurtando o tempo do mesmo e facilitando a vida dos programadores, o tempo de resposta ao cliente est cada vez mais curto e, com isso, aumentando a fatia do mercado de trabalho ocupada pela Java.

Como programar em JavaNa linguagem de programao Java, todos os cdigos-fonte so primeiramente escritos em um arquivo de texto com a extenso .java.

Curso Tcnico em Informtica

Capo Bonito - SP

4

O arquivo .class no contm cdigo que nativo para seu processador; ele em seu lugar contm bytecodes a linguagem de mquina da Java Virtual Machine (Java VM).

Como a Java VM disponvel em diferentes sistemas operacionais, os mesmos arquivo .class so capazes de rodar em Microsoft Windows, Solaris Operating System (Solaris OS), Linux, ou Mac OS.

Curso Tcnico em Informtica

Capo Bonito - SP

5

Ferramentas JavaA Java contm vrias ferramentas que podem ser chamadas atravs de um terminal, vou descrever as mais usadas no comeo, pois posteriormente, quando precisar das outras, voc utilizar uma IDE que acionar as mesmas automaticamente. JDK (Java Development Kit) JDK o kit de desenvolvimento da linguagem Java, cada Tecnologia Java contm o seu JDK especfico. O que contm? O JDK contm todas as ferramentas necessrias para se desenvolver aplicaes em dada tecnologia Java, por exemplo o JDK SE vem com todas as ferramentas necessrias para desenvolvermos aplicaes para Core/Desktop. JRE (Java Runtime Evironment) O JRE a mquina virtual Java, ele que interpreta da linguagem Java para a o sistema operacional instalado na mquina, traduzindo as instrues da aplicao para o mesmo.

Curso Tcnico em Informtica

Capo Bonito - SP

6

Javac O Javac o compilador Java, ele vem junto com o JDK. Atua transformando o cdigo fonte para o cdigo que vai ser interpretado pela JRE.

Tecnologias JavaCom Java podemos desenvolver sistemas para trs setores: Core/Desktop JSE Web JEE Mobile JME JSE (Java Standart Edition) Quando se fala em fazer um curso de Java esto falando de um curso sobre JSE, aqui onde aprende-se as principais funes, a sintaxe e a pensar em Java. Contm os recursos para desenvolvermos aplicaes locais (Core/Desktop). JEE (Java Enterprise Edition) JEE uma extenso da JSE adicionando a mesma mais recursos, a tecnologia mais avanada da Java, justamente por conter todos os recursos da JSE e mais os recursos da JEE, com ela desenvolvemos no somente as aplicaes para Core/Desktop mas tambm aplicaes Web. JME (Java Mobile Edition) JME a tecnologia responsvel pelo desenvolvimento de aplicaes mobile, com ela podemos programar para celulares e palms.

O que instalar?Para comear a aprender Java voc precisa simplesmente do JDK JSE e de um editor de texto qualquer, nada mais.Para baixar o JDK, simplesmente entre no site da Sun e escolha o apropriado para o seu sistema operacional. Para editor de texto eu recomendo o Notepad++, alm de ter o text hilight para Java ele tambm contm um plugin que completa automaticamente as funes chamadas em Java, parecido com uma mini IDE em modo texto. O processo de instalao transfere todas as ferramentas e pacotes da linguagem para sua mquina. Ao instalar o JDK, criada uma pasta com todos os arquivos do kit de ferramentas daCurso Tcnico em Informtica

Capo Bonito - SP

7

Sun. O caminho default da instalao "C:\Arquivos de programas\Java\jdk..............". Ao instalar o JDK, so criadas diversas pastas. Observe que a pasta jdk............ a principal em que esto todas as outras (a Sun chamada de JAVA HOME). Dependendo da verso do JDK instalada, essa pasta pode ter nomes e contedos diferentes. Voc dever se concentrar no nome da verso que voc baixou. Realize as configuraes das variveis de ambiente. A configurao das variveis depende do Sistema Operacional em que voc est instalando o JDK. Os procedimentos apresentados em seguida se referem configurao para o ambiente Windows. No Windows 2000, XP e Vista, devemos configurar as variveis pelo Painel de Controle. Defina as variveis, seguindo os procedimentos:

Clique sobre o cone Meu computador com boto direito do mouse e selecione a opo Propriedades com boto esquerdo

Curso Tcnico em Informtica

Capo Bonito - SP

8

Clique sobre aba Avanado e depois clique sobre o boto Variveis de Ambiente

Curso Tcnico em Informtica

Capo Bonito - SP

9

Em "Variveis de usurio", clique no boto "Nova". As variveis de ambiente podem tambm ser definidas em "Variveis do sistema" em vez de "Variveis de usurio", como sugerido.

A diferena que, quando definidas em "Variveis de usurios", elas funcionam somente para o seu usurio, e em "Variveis de sistema" funcionam para todos os usurios.

Curso Tcnico em Informtica

Capo Bonito - SP

10

No campo "Nome da varivel" coloque o nome da varivel que ser includa, por exemplo, JAVA HOME, e no campo "Valor da varivel" coloque o caminho referente varivel que voc nomeou, C:\Arquivos de programas\Java\jdk1.6.0_10 e Clique no boto"OK".

Faa o mesmo procedimento de incluso com as variveis path e classpath, definindo os seus nomes e incluindo os valores correspondentes: C:\Arquivos de programas\Java\jdk1.6.0_03\bin para a varivel path C:\Arquivos de programas\Java\jdk1.6.0_03\lib;.; para a varivel classpath. Verifique se a instalao foi realizada com sucesso. Entre em um diretrio qualquer no prompt de comando e digite javac seguido da tecla Enter. Se aparecer uma mensagem como "javac no reconhecido como um comando interno", porque o Java no foi instalado corretamente. Se ao digitar javac aparecer uma tela com instrues de Help do Java, significa que a instalao e a configurao foram realizadas com sucesso.Curso Tcnico em Informtica

Capo Bonito - SP

11

Primeiro contato com o JavaInicialmente, para fornecer o primeiro contato com a linguagem, ser apresentada uma classe em Java que escreve uma mensagem qualquer na tela. class Aula1 { public static void main (String args[]) { System.out.println("Inicio do aprendizado"); System.out.println("Ensino Didtico da Linguagem Java"); } }

Curso Tcnico em Informtica

Capo Bonito - SP

12

Analise da estrutura bsica de um programa javaA linha do mtodo principal possui o seguinte formato: public static void main(String args[]); praticamente todas as aplicaes tm essa linha. A nica coisa que pode ser alterada na linha a varivel args que pode receber outro nome de acordo com o desejo do programador. A seguir, feita uma anlise um pouco mais detalhada dessa linha. public um qualificador do mtodo (pode ser usado em qualquer mtodo, no apenas no main) que indica que ele acessvel externamente a essa classe (outras classes podem eventualmente utilizar esse mtodo). Isso til quando uma classe necessita utilizar alguma funcionalidade de outra classe, caracterstica muito comum na linguagem Java. static Qualificador que indica que o mtodo deve ser compartilhado por todos os objetos que so criados a partir dessa classe. void o valor de retorno do mtodo. Quando no h nenhum valor, ela retorna void, uma espcie de valor vazio que deve ser especificado. Este o nome do mtodo que indica ao compilador o incio do programa. o mtodo principal, em que todas as variveis, argumentos e instrues so interpretados e processados para a execuo do programa. (String args[]) o argumento do mtodo principal (main) e, por consequncia, do programa todo; ele um vetor de strings formado por todos os argumentos passados ao programa na linha de comando do sistema operacional quando o programa invocado. Outra variao existente nessa sintaxe inverter a posio dos colchetes ([]) que aparecem ao lado direito da palavra args. Poderia ser usado o formato "Sring[ ] args", cujo resultado obtido seria o mesmo, isto , trata-se da declarao de um vetor de strings. { ... } "Abre-chaves" e "fecha-chaves" delimitam um bloco de cdigo semelhante ao BEGIN e END de outras linguagens como Pascal. No exemplo Aula1 a classe Aula1 envolve todas as instrues da classe, inclusive o mtodo main. Esse exemplo possui apenas o mtodo main, entretanto uma classe pode envolver diversos mtodos.Curso Tcnico em Informtica

Capo Bonito - SP

13

O que uma varivel? um espao reservado na memria do computador para guardar uma informao. Uma varivel pode mudar o valor armazenado durante a execuo de uma aplicao Java, por isso a definio do nome varivel. Toda varivel tem um ciclo de vida, sua criao, uso e destruio se da ao decorrer da execuo da aplicao. O valor armazenado por uma varivel perdido ao fechar a aplicao. Para usar uma varivel dentro de uma aplicao Java devemos obrigatoriamente fazer a sua declarao antes de seu uso. Como declarar uma varivel? Variveis Java so declaradas dentro de mtodos. A declarao de uma varivel consiste em definir duas informaes: Tipo da varivel. Identificador da varivel (nome).

Toda varivel armazena um tipo especifico de informao, sendo esse tipo definido na sua declarao. Exemplos de tipo: Numricos: (armazena nmeros) Alfa-numricos (armazena letras e nmeros) Lembrando sempre que toda varivel deve possuir um identificador DICAS: Inicie sempre seu identificador com letras, para no gerar erros de compilao; Nunca utilize caracteres especiais na declarao de variveis Ex: , ~, ^. entre outros; Nunca utilize espaos em brancos Ex: salario inicial;

Curso Tcnico em Informtica

Capo Bonito - SP

14

class Aula1 { public static void main (String args[]) { String nome; int cdigo; double valor; } }

Definio de varivel e constantesUma varivel ou constante um tipo de identificador cujo nome, escolhido pelo programador, associado a um valor pertencente a um certo tipo de dados. Em outras palavras, um identificador a localizao da memria (um endereo ou vrios deles) capaz de armazenar o valor de um certo tipo, para o qual se d um nome (o nome da varivel, constante, objeto etc.) que usualmente descreve seu significado ou propsito. Desta forma, todo identificador possui um nome, um tipo e um contedo. Os identificadores no podem utilizar as palavras reservadas da linguagem Java, assim como ocorre com outras linguagens de programao. A relao de palavras reservadas at a verso 1.5 do Java apresentada na tabela abaixo. At agora no h notcias de incluso de novas palavras reservadas na verso 1.6. abstract assert *** boolean break byte case catch char class const * * no usado ** continue default do double else enum **** extends final finally float For goto * if implements import instanceof int interface long native New package private protected public return Short static strictfp ** Super switch synchronized this throw throws transient try void volatile while

adicionado verso 1.2

*** adicionado verso 1.4 **** adicionado verso 1.5Curso Tcnico em Informtica

Capo Bonito - SP

15

Declarao de constantesNa realidade no existem constantes em Java, o que existe um tipo de varivel com comportamento semelhante a uma constante de outras linguagens. Trata-se de um tipo de varivel que no pode alterar seu contedo depois de ter sido inicializado, ou seja, o contedo permanece o mesmo durante toda a execuo do programa. Em Java, essa varivel chamada de final. Essas constantes so usadas para armazenar valores fixos, geralmente definidos no incio de uma classe. Exemplos: o valor de PI na matemtica (3.14), o valor da acelerao na fsica (9 81 m/s2) a quantidade de milissegundos existentes em um segundo (1.000) etc. Para a declarao de "constantes" em Java utiliza-se a palavra reservada final antes da definio do tipo da varivel, como nos exemplos seguintes: final double pi = 3.14; final int miliSegundosPorSegundo = 1000; Caso um segundo valor seja atribudo a uma varivel final no decorrer da classe, o compilador gera uma mensagem de erro. No obrigatrio inicializar o contedo de uma varivel final no momento de sua declarao. possvel realizar esses dois processos em locais distintos, conforme apresentado em seguida. final int milimetrosPorCentimetro; . // linhas de cdigo milimetrosPorCentimetro = 10;

Como atribuir um valor?Toda varivel armazena um valor. Para definir ou alterar um valor armazenado por uma varivel devemos fazer uma ATRIBUIO. Para fazer essa atribuio devemos usar um operador de atribuio, em Java esse operador definido pelo caractere =

Curso Tcnico em Informtica

Capo Bonito - SP

16

Tipos de DadosAssim como em outras linguagens de programao, antes de utilizar variveis necessrio definir que tipo de dado ela vai armazenar. Caso seja necessrio armazenar a quantidade em estoque de um determinado produto, pode-se declarar uma varivel do tipo inteira, ou para armazenar valores monetrios, possvel declarar uma varivel do tipo double e assim por diante. Os tipos de dados em Java so portveis entre todas as plataformas de computadores que suportam essa linguagem. Na maioria das linguagens, quando um tipo de dado utilizado, por exemplo, um tipo inteiro, pode ser que para uma determinada plataforma esse nmero seja armazenado com 16 bits e em outra com 32 bits. Em Java isso no ocorre, uma vez que um tipo de dado ter sempre a mesma dimenso, independentemente da plataforma utilizada. Este e muitos outros recursos de portabilidade de Java permitem que os programadores escrevam programas sem conhecer a plataforma de computador em que eles sero executados. Os tipos primitivos em Java. Tipo Quantidade de bits Valores char 16 '\u0000' a '\uFFFP' byte 8 -128 a+ 127 int 32 -2.147.483.648 a+2.147.483.647 short 16 -32.768 a + 32.767 long 64 -9.223.372.036.854.775.808 a +9.223.372.036.854.775.807 float 32 -3.40292347E+38 a +3.40292347E+38 double 64 -1.79769313486231570E+308a +1.79769313486231570E+308 boolean 8 true ou false At pouco tempo atrs, quando os recursos de hardware da mquina eram mais limitados, existia a preocupao de reduzir ao mximo a quantidade de memria utilizada por um programa. Analisando a tabela acima, um programador chegaria concluso de que para armazenar a idade de uma pessoa, deveria ser utilizado o tipo byte, pois possui uma faixa de valores suficiente para armazenar a idade que uma pessoa normal pode atingir, dispensando outros tipos numricos que ocupariam mais espao na memria.

Curso Tcnico em Informtica

Capo Bonito - SP

17

ComentriosOs comentrios so linhas adicionadas ao programa que servem para facilitar seu entendimento por parte do programador, ou ainda por uma outra pessoa que o consulte. Essas linhas no afetam o programa em si, pois no so consideradas parte do cdigo. O Java aceita trs tipos de comentrio: de uma linha, de mltiplas linhas e de documentao. Para inserir comentrios de linha nica utilizam-se // (duas barras) em qualquer local do programa e tudo o que estiver escrito depois desse sinal e na mesma linha ser considerado um comentrio. Para inserir comentrios que envolvam vrias linhas, utiliza-se /* (barra asterisco) para demarcar o incio e */ (asterisco barra) para o final, ou seja, tudo o que estiver entre esses dois sinais ser considerado comentrio. O terceiro tipo semelhante ao comentrio de mltiplas linhas, entretanto tem o propsito de possibilitar a documentao do programa por meio de um utilitrio (javadoc) fornecido pela Sun junto com o SDK. Esse tipo de comentrio inicia-se com /** e encerrado com */. O exemplo abaixo demonstra a utilizao dos comentrios (colocados em negrito).

Curso Tcnico em Informtica

Capo Bonito - SP

18

/** Exemplo0202: 2. 3. 4. 5. 7. 8. 9. 10. 11. 12. 13. 14. 14. 16. 17. 18. } } Essa classe demonstra a utilizao de variveis em uma classe em Java. So declaradas variveis do tipo int e double. O exemplo tambm demonstra como imprimir o contedo das variveis na tela */ { public static void main (String args []) { int x = 10, y = 20; // declarao de variveis do tipo inteiro double dolar =2.62; /* As linhas seguintes enviam o contedo das variveis para a tela */ System.out.println(x); System.out.printIn(y); System.out.println(dlar);

6. public class Exemplo0202

OperadoresA linguagem Java oferece um amplo conjunto de operadores destinados realizao de operaes aritmticas, lgicas e relacionais, com a possibilidade de formar expresses de qualquer tipo. Alm dos operadores matemticos (aritmticos), existem tambm operadores lgicos e relacionais, conforme abordado em seguida.

Curso Tcnico em Informtica

Capo Bonito - SP

19

Operadores AritmticosTabela abaixo apresenta os operadores aritmticos usados em Java Funo Adio Subtrao Multiplicao Diviso Resto da diviso inteira Sinal negativo Sinal positivo Incremento unitrio Decremento unitrio Sinal + * / % + ++ -Exemplo X+Y X-Y X*Y X/Y X%Y -X +X ++X ou X++ --X ou X--

Entre os operadores presentes na tabela acima, talvez os de decremento (--) e incremento (++) causem alguma dvida, principalmente para os programadores iniciantes. Entretanto, sua utilizao extremamente simples: como o prprio nome diz, o operador de incremento incrementa (aumenta) o valor de uma varivel qualquer em um, ou seja, supondo que uma varivel chamada idade possua o contedo 10, ao receber o operador de incremento (idade++), seu contedo passa a ser onze (10+1). O mesmo vale para o operador de decremento, logicamente reduzindo em um o contedo da varivel. O exemplo 2.3 mostra um programa em Java com a utilizao de alguns operadores. Os comentrios aparecem no prprio programa com a utilizao das barras duplas ('//'). Em Java, para imprimir diversas variveis na tela uma ao lado da outra, utilizado o operador de concatenao (+), ao contrrio de outras linguagens que utilizam a vrgula (,) como separador. Na linha 8, por exemplo, a seqncia ("X =" + x) indica que o trecho entre aspas ser enviado para a tela concatenado com (+) o contedo da varivel x. Para enviar uma frase qualquer para a tela, necessrio coloc-la entre aspas; j para enviar o contedo de uma varivel, as aspas no devem ser utilizadas.

Curso Tcnico em Informtica

Capo Bonito - SP

20

class Exemplo0203 { public static void main (String args[]) { // declarao e inicializao de variveis int x = 10; int y = 3; // vrias operaes com as variveis System.out.println("X = "+ x); System.out.println("Y = "+ y); System.out.printIn("-X = "+(-x)); System.out.println("X/Y = "+(x/y)); System.out.println("Resto de X por Y = "+ (x%y)); System.out.println("Inteiro de X por Y = "+ (int)(x/y)); System.out.printIn("X + 1 = "+ (++x)); } }

Outro ponto a ser observado no exemplo 2.3 se refere utilizao do mtodo println da classe System. Conforme indica a figura 2.2, para cada comando println usado ocorre uma mudana de linha na tela. Essa caracterstica controlada pelas letras In inseridas no final do comando println, isto , o comando imprime o que est entre parnteses e em seguida imprime um final de linha. A prxima informao a ser impressa aparece na outra linha. Caso seja necessrio imprimir diversos valores na mesma linha, alm de utilizar o operador de concatenao, pode-se utilizar o comando println sem o In no final da seguinte forma: System.out.print ("Dados a serem impressos"). Ao compilar e executar corretamente o exemplo 2.3, aparece a tela de execuo mostrada na figura abaixo.

Curso Tcnico em Informtica

Capo Bonito - SP

21

Operadores RelacionaisOs operadores relacionais possibilitam comparar valores ou expresses, retornando um resultado lgico verdadeiro ou falso. A tabela abaixo demonstra os operadores relacionais usados em Java. Funo Igual Igualdade de String Diferente Maior que Maior ou igual a Menor que Menor ou igual a Dica Cabe observar a utilizao do sinal de igualdade (= =) para a comparao de variveis ou expresses. Pelo fato de o sinal de igual simples (=) ser utilizado na maioria das outras linguagens de programao, boa parte dos iniciantes em Java troca o duplo igual (= =) pelo sinal de atribuio (igual simples). Isso nem sempre acarreta erro de compilao, gerando resultados imprevisveis ao programa. Procure prestar muita ateno na sua utilizao nos programas. Caractere(s) utilizado(s) == var.equals(string) != > >= < Y X>=Y Xjava Exemplo0204 aprendendo Java Ao digitar esta linha de comando, obviamente depois de o programa ter sido compilado, o programa vai imprimir na tela os dois argumentos inseridos pelo usurio. Essas palavras so passadas ao programa por meio do vetor args existente na linha do mtodo main. A varivel args um vetor de string (na realidade string no uma simples varivel e sim um objeto que ser estudado mais frente) que possui o primeiro elemento do vetor com ndice 0 (zero). Sendo assim, cada palavra digitada na linha de comando, separada por um espao, ser armazenada em um ndice do vetor args (args[0] armazena o primeiro argumento, args[1] o segundo e assim sucessivamente). Para que este exemplo funcione corretamente, o usurio deve digitar pelo menos duas palavrasCurso Tcnico em Informtica

Capo Bonito - SP

23

na linha de comando; caso contrrio, um erro apresentado no momento da execuo, por meio da gerao de uma exceo da linguagem (item tratado mais adiante). Esse fato ocorre porque o programa foi elaborado para imprimir na tela os dois primeiros argumentos passados (args[0] e args[1]). A figura 2.3 demonstra a tela de resultado da execuo do exemplo 2.4. Observe que foram enviados dois nmeros no momento da execuo, os quais foram impressos na tela. Os argumentos passados na linha de comando sempre se referem a "variveis" do tipo string devido sintaxe utilizada no mtodo principal (main), ou seja, args um vetor de tipos string. Por este motivo, mesmo que sejam passados nmeros como parmetros, eles sero considerados caracteres.

Tela de execuo do exemplo 2.4. Para que o leitor v se acostumando linguagem, importante alterar este exemplo, trabalhando com mais de dois parmetros. Apesar de o exemplo tratado ser relativamente simples, ele se refere a uma importante caracterstica da linguagem Java: a passagem de parmetros entre mtodos.

Curso Tcnico em Informtica

Capo Bonito - SP

24

Converso de tiposO exemplo anterior demonstrou que todos os dados recebidos como argumentos em uma aplicao referem-se a valores do tipo string. Essa caracterstica gera um inconveniente no caso de ser necessria a utilizao de valores de outro tipo. Em diversos tipos de programa em Java, preciso realizar a converso entre os diversos tipos primitivos existentes. A linguagem Java possui uma srie de classes que realizam essa tarefa. A tabela 2.6 apresenta algumas das principais formas de converso de tipos. As palavras principais usadas na converso aparecem em negrito. No decorrer do livro, diversas vezes sero utilizados esses conversores de tipos. Supondo a varivel X int x = 10 int x = 10 float x = 10.5 String x = "10" String x = "20.54" String x = "20.54" String x = "Java" int x = 10 float x = 10.35 double x = 254.34 byte x[] - (x um vetor de bytes) Converte em Float double Int Int Float double Vetor de bytes String String String String y recebe o valor convertido Float y = (float) x double y = (double) x Int y = (int) x int y = Integer.parseInt(x) Float y = Float.parseFloat(x) double y = Double.parseDouble(x) Byte b[] = x.getBytes() String y = String.valueOf(x) String y = String.valueOf(x) String y = String.valueOf(x) String y = new String (x)

As converses mais usadas em Java. O exemplo 2.5 seguinte demonstra a criao de uma classe que recebe trs valores da linha de comando do DOS (notai, nota2 e trabalho) e calcula a mdia entre as notas, utilizando o conversor de tipo string para double. Para que este exemplo seja executado com sucesso, existe a necessidade de o usurio entrar com trs ciados numricos na linha de comando, conforme apresenta o cdigo abaixo:

Curso Tcnico em Informtica

Capo Bonito - SP

25

class Exemplo0205 { public static void main (String args[]) { double nota1, nota2, trabalho, media; nota1 = Double.parseDouble(args[0]); nota2 = Double.parseDouble(args[1]); trabalho = Double.parseDouble(args[2]); media = (notal+nota2+trabalho)/3; System.out.println("Media = "+ media); } }

Funcionalidades mais importantes do exemplo 2.5: Linha 5: contm a declarao das variveis usadas na classe. Linhas 6 a 8: os parmetros so transferidos para as variveis, com seus tipos devidamente convertidos por meio de Double.parseDouble(). Linha 9: realizado o clculo da mdia. Linha 10: a mdia impressa na tela.

Tela de execuo do exemplo 2.5

Excees em JavaAs excees em Java referem-se aos erros que podem ser gerados durante a execuo de um programa. Esses erros podem e devem ser controlados (tratados) dentro de um programa, pois muito comum que diversos tipos de exceo ocorram durante o processo de execuo. A linguagem Java possibilita a realizao desse controle de erros por meio da estrutura try-catchfinally e da clusula throws.

Curso Tcnico em Informtica

Capo Bonito - SP

26

Uso da estrutura try catchA estrutura try catch foi exemplificada anteriormente e o leitor pde notar que o objetivo de sua utilizao a previso de erros de execuo. Essa estrutura tem como funo desviar a execuo de um programa caso ocorram certos tipos de erro, predefinidos durante o processamento das linhas, e evitar que o programador precise fazer testes de verificao e avaliao antes de realizar certas operaes. Quando um erro ocorre, ele gera uma exceo que pode ser tratada pelo programa. Existem muitas excees que podem ser geradas pelas mais diversas classes e enumeradas seria um processo dispendioso e desnecessrio, pois as excees que devem ser obrigatoriamente tratadas so apontadas pelo prprio compilador. Neste livro, as excees sero devidamente comentadas toda vez que uma exceo diferente for utilizada nos exemplos. A estrutura try catch possui a seguinte sintaxe: try { } catch (Nome da exceo) { } catch (Nome da exceo) { } catch (Nome da exceo) { } Toda vez que a estrutura try utilizada, obrigatoriamente em seu encerramento (na chave final) deve existir pelo menos um catch, a no ser que ela utilize a instruo finally, conforme abordado em seguida. A sintaxe apresentada pode ser interpretada como: tente executar o

Curso Tcnico em Informtica

Capo Bonito - SP

27

conjunto de instrues entre as chaves; se houver algum erro, execute seu tratamento no catch. Depois de tratado o erro, a execuo do programa continua a partir do final do ltimo catch. Os erros gerados pelo programa sempre esto relacionados com as classes usadas. Por exemplo, o mtodo parseFloat da classe Float (Float.parseFloat) pode gerar um erro de converso numrica (NumberFormatException), isto , esse tipo de erro pode ser tratado quando essa classe for usada no programa. No faz sentido verificar se ocorrer um erro de entrada e sada de dados (lOException) quando a classe Float for utilizada. Portanto, o tratamento de erros deve ser realizado de forma coerente, de acordo com as classes utilizadas no programa. Dica Um erro muito comum entre os iniciantes na linguagem Java usar a estrutura try sem adicionar nenhum catch. Isso gera erro de compilao, pois ao usar try, obrigatria a presena de pelo menos um catch. Outro erro comum esquecer-se de encerrar a chave do try antes de iniciar um catch. Quando isso ocorre, o compilador apresenta uma mensagem de erro do tipo "try without catch", ou seja, se o catch for inserido no try, o compilador achar que ele nem existe. Observao A linguagem Java possui dezenas de erros que podem ocorrer durante a execuo de uma classe. Sero demonstrados e comentados apenas os que forem utilizados em nossos exemplos

Uso do Bloco finallyO bloco finally faz parte da estrutura try catch, inserido geralmente aps o ltimo catch. O finally opcional e fornece um conjunto de cdigos que sempre executado, independente de uma exceo ocorrer ou no. Quando se utiliza a estrutura try sem nenhum bloco catch, o bloco finally obrigatrio, isto , existe a possibilidade da utilizao das estruturas try-catch, trycatch--finally ou ainda try-finally. O objetivo do finally manter cdigos para liberao de recursos, adquiridos em seu bloco try correspondente. Um exemplo prtico de sua utilizao ser mostrado mais adiante na manipulao de arquivos texto, em que o bloco finally ser utilizado para fechar um arquivo aps abri-lo, ou seja, liberar um recurso externo depois de adquiri-lo.

Curso Tcnico em Informtica

Capo Bonito - SP

28

Durante a execuo de um programa, caso nenhuma exceo ocorra, os blocos catch no so executados e o controle prossegue para o bloco finally, que libera o recurso e passa a executar a primeira instruo aps o bloco finally. Caso ocorra alguma exceo, a execuo do programa ser desviada para o grupo de instrues catch. A seguir, independentemente de ter havido ou no uma exceo, o controle passa para o bloco finally para liberao de recursos. Mesmo que no exista nenhuma instruo catch referente exceo gerada, o controle passa pelo bloco finally. Isso pode ser til ao desenvolvedor caso necessite controlar apenas alguns tipos de erro, pois erros diferentes dos tratados podem ser desviados para o finally. A figura abaixo esboa um fluxograma que representa a seqncia de execuo da estrutura try-catch-finally.

Seqncia de execuo try-catch-finally.

Uso da clausula throwsEm alguns momentos, pode ocorrer de o programador no querer realizar controle sobre uma exceo, isto , no desejar tratar um erro. A linguagem Java permite ao programador que um erro seja "descartado", mesmo que ele ocorra, entretanto preciso que esse fato seja informado na declarao do mtodo.

Curso Tcnico em Informtica

Capo Bonito - SP

29

Esse processo pode ser realizado pela clusula throws. Observe o exemplo 3.4. Ele apresenta uma alternativa para entrada de dados pelo teclado sem a obrigatoriedade do tratamento da exceo IOException. 1. 2. 3. 4 5. 6. 7. 8. 9. 10. } } class Exemplo0304 { public static void main (String args[]) throws IOException { BufferedReader dado; System.out.println("Entre com seu nome"); dado= new BufferedReader(new InputStreamReader(System.in)); System.out.println("Seu nome " + dado.readLine());

Funcionalidades mais importantes do exemplo Linha 3: define que a exceo IOException no ser tratada no mtodo main (throws IOException). Esse fato torna desnecessrio definir a estrutura try catch para tratar esse erro, mesmo sendo uma exceo considerada obrigatria pela linguagem Java. Experimente compilar o exemplo sem a clusula "throws IOException". Aparece a seguinte mensagem de erro: "must be caught or declared to be thrown". O compilador est informando que existem duas possibilidades para corrigir o erro: ou realiza seu tratamento (com try catch, por exemplo), ou o define como descartado, conforme fizemos neste exemplo por meio da clusula throws.

Uso da Instruo throwConforme comentado anteriormente, a linguagem Java possui muitas excees, incluindo sua gerao e tratamento. O objetivo deste item apenas demonstrar que um desenvolvedor Java pode criar suas prprias excees e dispar-las no momento que necessitar, mesmo que elas no ocorram durante a execuo do programa. A instruo throw (ou comando, ou ainda palavra-chave se voc preferir) utilizada para disparar uma exceo, isto , ela pode forar que uma exceo ocorra. Com a instruo throw possvel criar uma exceo prpria, dando a ela um nome qualquer. O exemplo 3.5 mostra como possvel utilizar a instruo throw para gerar uma exceo.

Curso Tcnico em Informtica

Capo Bonito - SP

30

O programa segue sua execuo normal at encontrar a linha 8 em que a exceo forada, na qual est definida por meio de throw new Exception("nome da exceo"). Na linha 10 a exceo tratada. Evidentemente, este exemplo est simples demais e bem longe de uma aplicao real; serve apenas para demonstrar a gerao de uma exceo. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. } } } } catch (Exception MinhaExcecao) { System.out.print("a linguagem Java?"); class Exemplo0305 { public static void main (String args[]) { try { System.out.print("Como aprender "); throw new Exception("MinhaExcecao");

Curso Tcnico em Informtica

Capo Bonito - SP

31

Entrada de dados pelo TecladoUma aplicao provavelmente no receber dados pelo prompt durante a execuo do programa. O mais comum receber os dados do usurio por meio do teclado. O exemplo 2.6 seguinte aprimora o exemplo 2.5, recebendo as notas por meio do usurio e em tempo de execuo e realizando sua validao. 1 import java.io.*; 2 class Exemplo0206 3{ 4 public static void main (String args[]) 5 { 6 String s = ""; 7 float nota1 = 0, nota2 = 0, trabalho = 0, media = 0; 8 DataInputStream dado; 9 try 10 { 11 System.out.println("Entre com a nota 1"); 12 dado = new DataInputStream(System.in); 13 s = dado.readLine(); 14 nota1 = Float.parseFloat(s); 15 System.out.println("Entre com a nota 2"); 16 dado = new DataInputStream(System.in); 17 s = dado.readLine(); nota2 = Float.parseFloat(s); 18 System.out.println("Entre com a nota do Trabalho"); 19 dado = new DataInputStream(System.in); 20 s = dado.readLine() ; 21 trabalho = Float.parseFloat(s); 22 media = (notal+nota2+trabalho)/3; 23 System.out.println("Media : "+ media); 24 } 25 catch (IOException erro) 26 { 27 System.out.println("Houve erro na entrada de dados"); 28 } 29 catch (NumberFormatException erro) 30 { 31 System.out.println("Houve erro na converso, digite apenas caracteres numricos"); 32 } 33 }Curso Tcnico em Informtica

Capo Bonito - SP

32

Ao ser executada, a classe do exemplo 2.6 solicita os trs valores ao usurio (nota1, nota2 e trabalho) e no final demonstra a mdia dos valores digitados, conforme a figura abaixo

Figura 2.5 - Tela de execuo do exemplo 2.6 Funcionalidades mais importantes do exemplo 2.6: Linha 1: contm uma diretiva de compilao, isto , um apontamento para uma classe externa que ser usada durante o processo de compilao. A instruo import indica que determinado pacote de classes deve ser carregado no momento da compilao. Isso necessrio quando uma classe precisa utilizar recursos j definidos em outras classes. O exemplo chama o pacote java.io que contm uma srie de classes especializadas em entrada e sada de dados. usada a classe DatalnputStream que pertence ao pacote java.io. Entenda o pacote como um grupo de classes de mesmo tipo armazenadas em uma pasta qualquer. O asterisco presente em import java.io.* indica que devem ser carregadas todas as classes do pacote java.io. Uma alternativa realizar a declarao da seguinte forma: import java.io.DatalnputStream, indicando que ser utilizada apenas a classe DatalnputStream. Observao A linguagem Java possui um pacote de classes padro que carregado toda vez que uma classe compilada. Trata-se do pacote java.lang. Se esse pacote default no fosse carregado automaticamente, mesmo para enviar qualquer informao na tela por meio de System.out.println, seria necessrio declarar explicitamente a diretiva. No caso da classe System, seria necessria a seguinte declarao: import java.lang.System. No programa, * no gera overhead (sobrecarga) normalmente utilizado para reduzir o tamanho do cdigo. A utilizao do * pode gerar certa confuso, uma vez que ele deve ser usado apenas para identificar um grupo de classes e no um grupo de pacotes. Por exemplo,Curso Tcnico em Informtica

Capo Bonito - SP

33

suponha que um programa utiliza os pacotes java.util.* (o asterisco indica todas as classes do pacote til) e java.net.* (o asterisco indica todas as classes do pacote net). No possvel utilizar java.* achando que os dois pacotes (til e net) sero incorporados ao programa. O captulo 7 aborda a manipulao de pacotes com mais detalhes. Linha 8: declara um objeto chamado dado a partir da classe DatalnputStream. No se preocupe com isso ainda. Em outro captulo sero detalhados a criao e o funcionamento de classes e objetos. No momento, entenda DatalnputStream como uma classe que possibilita a entrada de dados via teclado. Linha 9: contm o bloco try (tente). Bloco um trecho de cdigo delimitado por abre e fechachaves. O bloco try sempre atua em conjunto com um ou vrios blocos catch. No exemplo o bloco try formado pelo conjunto de todas as instrues localizadas entre as linhas 10 e 28. Linha 12: o objeto dado recebe o que foi digitado pelo usurio por meio de new DatalnputSream(System.in). Essa linha pode gerar algum tipo de erro, uma vez que manipula troca de dados entre um perifrico (teclado) e a memria. Caso ocorra algum erro, a execuo do programa ser desviada para a linha 25 que trata de erros de entrada e sada de dados. Linha 13: a varivel s recebe o contedo texto do objeto dado. Essa linha contm o mtodo readLine() da classe DatalnputStream responsvel por ler uma linha de texto que foi digitada pelo usurio e atribu-la varivel s. Observa-se que esse mtodo foi descontinuado pela Sun. Por este motivo, ao compilar a classe, aparece uma observao (Note) alertando que o mtodo deprecated, isto , trata-se de um mtodo obsoleto. No entanto, mesmo com essa observao gerada pelo compilador, a classe pode ser executada normalmente. Utilizamos o mtodo readLine() da classe DatalnputStream para poder observar o funcionamento do deprecated. A prpria Sun recomenda que seja utilizado o mtodo readLine, porm da classe BufferedReader, conforme veremos a diante Linha 14: o contedo da varivel s convertido em uma varivel numrica do tipo float por meio de FloatparseFloat. Nesse momento pode ocorrer um erro de converso, caso o usurio tenha digitado um contedo diferente de nmero. Caso ocorra algum erro, a execuo do programa desviada para a linha 33 que trata de erros de converso de tipos.Curso Tcnico em Informtica

Capo Bonito - SP

34

Linhas 16 a 19 e 21 a 23: so praticamente idnticas s linhas 11 a 14. A diferena se refere utilizao de outras variveis. A seguir apresentado o exemplo 2.7, similar a 2.6, porm utilizando o mtodo readLine da classe BufferedReader. Observe as linhas em negrito. O resultado da execuo idntico ao exemplo 2.6. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 media = (notal+nota2+trabalho)/3;Curso Tcnico em Informtica

import java.io.*; class Exemplo0207 { public static void main (String args [ ] ) { String s = ""; float notai = 0, nota2 = 0, trabalho = 0, media = 0; BufferedReader dado; try { System.out.println("Entre com a nota 1"); dado = new BufferedReader(new InputStreamReader(System.in)); s = dado.readLine() ; notai = Float.parseFloat(s); System.out.println("Entre com a nota 2"); dado = new BufferedReader(new InputStreamReader(System.in)); s = dado.readLine() ; nota2 = Float.parseFloat(s); System.out.println("Entre com a nota do Trabalho"); dado = new BufferedReader(new InputStreamReader(System.in)); s = dado.readLine(); trabalho = Float.parseFloat(s);

Capo Bonito - SP

35

27 28 29 30 31 32 33 34 35 36 37 38 } Exemplo 2.7 } } } }

System.out.println("Media : "+ media); catch (IOException e) { System.out.println("Houve erro na entrada de dados"); catch (NumberFormatException e) { System.out.println("Houve erro na converso, digite apenas caracteres numricos");

Apesar de os exemplos 2.6 e 2.7 funcionarem perfeitamente, eles no so adequados para o atual padro de ambiente grfico, sobretudo para o ambiente de microcomputadores. A seo seguinte apresenta uma forma mais agradvel de entrada de dados durante a execuo de uma aplicao em Java por meio da classe JOptionPane. Caixa de Dilogo para Entrada de Dados A linguagem Java dispe de uma forma grfica para receber dados do usurio. Trata-se da utilizao de caixas de dilogo, no caso a caixa gerada a partir da classe JOptionPane que ser vista em detalhes no captulo 9, seo 9.11. 0 fato de receber dados de forma grfica parece dar mais motivao aos iniciantes em Java, j que permite descartar a tela preta do prompt. Por este motivo, os exemplos seguintes utilizam essa forma para entrada de dados do usurio. O exemplo 2.8 refaz o exemplo 2.7, utilizando a classe JOptionPane para entrada de dados.

Curso Tcnico em Informtica

Capo Bonito - SP

36

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20J 21 22 23 24J 25 26 27

import javax.swing.JOptionPane; class Exemplo0208 { public static void main (String args[]) { String aux = ""; float nota1 = 0, nota2 = 0, trabalho = 0, media = 0; try { aux = JOptionPane.showInputDialog(null, "Entre com a nota 1"); nota1 = Float.parseFloat(aux); aux = JOptionPane.showInputDialog(null, "Entre com a nota 2"); nota2 = Float.parseFloat(aux); aux = JOptionPane.showInputDialog(null, "Entre com a nota do trabalho"); trabalho = Float.parseFloat(aux); media = (nota1 + nota2 + trabalho) / 3; OptionPane.showMessageDialog(null, "Mdia : "+ media); } catch (NumberFormatException e) { OptionPane.showMessageDialog(null,"Houve erro na converso, digite apenas caracteres numricos"); } System.exit(0); }

28 } Exemplo 2.8

Curso Tcnico em Informtica

Capo Bonito - SP

37

Ao ser executada, a classe do exemplo 2.8 solicita os trs valores ao usurio (nota1, nota2 e trabalho) e apresenta a mdia dos valores digitados em janelas grficas similares da figura abaixo

Telas de execuo do exemplo 2.8. Funcionalidades diferentes do exemplo 2.8 em relao ao exemplo 2.7: Linha 1: contm a diretiva de compilao referente importao da classe JOptionPane. Diferentemente do exemplo 2.7, em que foi definida a importao de todas as classes do pacote (uso do *), neste exemplo optou-se pela importao de uma nica classe, no caso a JOptionPane. Linhas 10, 13 e 16: utiliza o mtodo showInputDialog da classe JOptionPane, responsvel por abrir a caixa de dilogo e permitir a digitao do valor da nota. O valor digitado armazenado em uma varivel do tipo String chamada aux. Como JOptionPane retorna um valor do tipo String (mesmo que seja digitado um valor numrico), ele precisa ser convertido em nmero por meio de Float.parseFloat. Linha 20: contm a utilizao do mtodo showMessageDialog da classe JOptionPane responsvel por abrir a caixa de dilogo e apresentar o valor da mdia. Observe a diferena entre os mtodos showInputDialog e showMessageDialog. Enquanto o primeiro permite a digitao de um valor, o outro apenas apresenta um valor na caixa. Linha 26: utiliza System.exit(0), responsvel por encerrar a aplicao.

Curso Tcnico em Informtica

Capo Bonito - SP

38

Exerccios1. Crie uma classe que receba trs nomes quaisquer por meio da linha de execuo do progra ma (prompt) e os imprima na tela da seguinte maneira: o primeiro e o ltimo nomes sero im pressos na primeira linha um aps o outro e o outro nome (o segundo) ser impresso na segunda linha. 2. Faa uma classe que receba a quantidade e o valor de trs produtos no seguinte formato: Quantidadel Valorl Quantidade2 Valor2 Quantidade3 Valor3. O programa deve calcular esses valores seguindo a frmula total = Quantidadel x Valorl + Quantidaote2 x VaIor2 + QuaoidadeS x ValorS. O valor total deve ser apresentado no final da execuo do programa. 3. Crie uma classe que receba a largura e o comprimento de um lote de terra e mostre rea total existente, conforme a figura 2.9. Utilize a caixa de dilogo com a classe JOptionPane para a entrada de dados. 4. Crie uma classe que receba quatro valores quaisquer e mostre a mdia e o somatrio entre eles e o resto da diviso do somatrio por cada um dos valores, conforme a figura 2.10. Utilize a caixa de dilogo com a classe JOptionPane para a entrada de dados. Para quebrar uma linha dentro da caixa de dilogo, utilize "\n".

5. Uma determinada pessoa que trabalha com piscinas precisa de um programa que calcule o valor das construes solicitadas pelos clientes, sabendo que eles sempre fornecem o comprimento, a largura e a profundidade da piscina a ser construda. Leve em considerao que o valor cobrado por m3 de gua que o preo de R$ 45.00 por m3.

Curso Tcnico em Informtica

Capo Bonito - SP

39

Comandos CondicionaisEles so usados em todas as linguagens de programao e possibilitam que a execuo de um programa seja desviada de acordo com certas condies. Os comandos condicionais usados em Java so if-else e switch-case. Essas duas estruturas de desvio existentes na linguagem Java possibilitam executar diferentes trechos de um programa com base em certas condies.

Uso da estrutura if-elseO if, em conjunto com o else, uma estrutura que permite a seleo entre dois caminhos distintos para execuo, dependendo do resultado (verdadeiro ou falso) de uma expresso lgica. Nesse tipo de estrutura, se a condio for verdadeira, so executadas as instrues que estiverem posicionadas entre os comandos if/else. Sendo a condio falsa, so executadas as instrues que estiverem aps a instruo else. A sintaxe para a utilizao do conjunto if-else demonstrada em seguida. Observe que a condio sempre deve aparecer entre parnteses, item obrigatrio na linguagem Java. if () { } else { } Assim como a maioria das instrues em Java, o conjunto if-else deve ser utilizado com minsculas e, caso haja apenas uma instruo a ser executada, tanto no if como no else, o uso das chaves desnecessrio. Lembre-se de que as chaves so utilizadas quando se necessita que um bloco de instrues seja executado.

Curso Tcnico em Informtica

Capo Bonito - SP

40

Estrutura switch-caseA estrutura switch-case se refere a uma outra modalidade de desvio da execuo do programa de acordo com certas condies, semelhante ao uso da instruo if. Ao trabalhar com uma grande quantidade de desvios condicionais contendo instrues if, pode-se comprometer a inteligibilidade do programa, deixando-o difcil de ser interpretado. A estrutura switch-case possibilita uma forma mais adequada e eficiente de atender a esse tipo de situao, constituindose uma estrutura de controle com mltipla escolha. A estrutura switch-case equivale a um conjunto de instrues if encadeadas, fornecendo maior inteligibilidade e eficincia durante a execuo. Sua sintaxe a seguinte: switch () { case 1: instrues; break; case 2: instrues; break; case 3: instrues; break; default:instrues; } Na primeira linha do switch avaliado o resultado da expresso, que normalmente se refere a uma varivel simples. O resultado dessa expresso comparado nas diretivas case, executando o bloco de instrues quando a expresso coincidir com o valor colocado na frente do case. Em outras palavras, supondo que o valor da expresso seja igual a 2, sero executadas as instrues localizadas entre case 2: e break. A cada case o programa compara o valor da expresso com o valor colocado na frente do case. Caso os valores sejam iguais, todas as instrues so executadas at que se encontre uma instruo break, que encerra o switch e faz a execuo do programa desviar para o ponto aps a chave de encerramento do switch. O programa percorre todas as diretivas case at que uma delas seja igual expresso inserida no switch. Caso nenhuma diretiva case possua o valor correspondente da expresso, sero executadas as instrues localizadas na diretiva default que opcional.

Curso Tcnico em Informtica

Capo Bonito - SP

41

Uso do getMessage e printStackTraceEm determinadas aplicaes torna-se necessrio descobrir o tipo de erro e em que linha do programa ele ocorreu. Para reconhecer esses erros, so utilizados dois mtodos: getMessage e printStackTrace. O mtodo getMessage serve para consultar e retornar uma string armazenada em uma determinada exceo. J o mtodo printStackTrace retorna o tipo de exceo gerado e informa em que linha do programa ocorreu o erro. O exemplo 3.6 traz uma pequena demonstrao, com fins didticos, para que o leitor compreenda mais claramente a utilizao dos mtodos getMessage e printStackTrace. 1. class Exemplo0306 2. { 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. } Funcionalidades mais importantes do exemplo 3.6: Linha 8: produz uma exceo de diviso por zero, uma vez que a varivel y possui contedo zero. Essa exceo ser tratada na linha 10 por meio de catch (Exception erro). Note que no foi definida a exceo aritmtica ArithmeticException, como feito anteriormente. Quando for utilizado Exception em um bloco catch, qualquer exceo gerada, isto , qualquer tipo de exceo ser tratado nesse bloco. Isso equivale a dizer que Exception pode ser considerado uma exceo default, caso o desenvolvedor no saiba os tipos de erro que podem ser gerados durante a execuo de um programa.Curso Tcnico em Informtica

public static void main (String args[]) { int x=10, y=0, z=0; try { z = x / y; // gera uma exceo aritmtica de diviso por zero } catch (Exception erro) { System.out.println(erro.getMessage()); // mostra a mensagem do erro erro.printStackTrace(); } } // mostra a exceo e a linha onde ocorreu o erro

Capo Bonito - SP

42

Linha 12: o mtodo getMessage se encarrega de retornar o erro ocorrido (no caso: / by zero diviso por zero). Linha 13: o mtodo printStackTrace retorna diversas informaes: o tipo de exceo, a mensagem de erro, o nome da classe que gerou o erro, o nome do mtodo em que o erro ocorreu e o nmero da linha do programa. No exemplo so retornadas as seguintes informaes: java.lang.ArithmeticException (tipo da exceo), / by zero (mensagem de erro), Exemplo0306 (nome da classe), main (nome do mtodo) e 8 (linha em que ocorreu o erro).

Laos de RepetioOs laos de repetio {looping) formam uma importante estrutura nas linguagens de programao por possibilitarem a repetio da execuo de um bloco de instrues em um programa. Eles determinam que um certo bloco seja executado repetidamente at que uma condio especfica ocorra. O mtodo da repetio uma das prticas mais usadas em programao, possibilitando a criao de contadores, temporizadores, rotinas para classificao, obteno e recuperao de dados. Em uma aplicao, provavelmente sempre existir pelo menos um lao de repetio. As principais formas de criao de laos de repetio em Java so construdas a partir das estruturas for e while.

Uso do Lao forA instruo for um tipo de contador finito, isto , ela realiza a contagem de um valor inicial conhecido at um valor final tambm conhecido. Seu funcionamento realizado por uma varivel de controle do tipo contador, que pode ser crescente ou decrescente e possui a seguinte sintaxe: for (inicializao; condio; incremento ou decremento) Em que: Inicializao: o valor inicial da varivel de controle do lao. Condio: a varivel que controla a continuao do lao. Deve conter o valor final que a varivel de controle pode assumir dentro do lao.

Curso Tcnico em Informtica

Capo Bonito - SP

43

Incremento ou decremento: o passo com que a varivel de controle ser acrescida ou decrescida. Esse incremento pode ser realizado por meio de uma varivel inteira ou com ponto flutuante, permitindo pequenos incrementos decimais, caso seja necessrio. Exemplo: for (int x=0; xSET CLASSPATH=D:\; Agora tente compilar os exemplos. Voc pode ver que so criados automaticamente pelo compilador os arquivos de pseudocdigo das classes (arquivos com extenso .class), como mostra a figura abaixo

Rode as aplicaes para voc ter as sadas mostradas na figura abaixo

Curso Tcnico em Informtica

Capo Bonito - SP

114