logica_de_programacao

Upload: robnilsonm13

Post on 08-Jul-2015

9.828 views

Category:

Documents


0 download

TRANSCRIPT

Sumrio NOES DE LGICA.............................................................................................................. 3 O QUE LOG!CA? ..................................................................................................................... 3 OBJET!vOS DA LOG!CA ............................................................................................................... 3 O QUE LOG!CA DE PROGRANAO? .............................................................................................. 3 O QUE UN ALGOR!TNO? ........................................................................................................... + !NPORTANC!A DA CONSTRUO DE ALGOR!TNOS ................................................................................ + REPRESENTAO DE ALGOR!TNOS.................................................................................................. + EXERCC!OS DE F!XAO............................................................................................................. 7 CONCEITOS BSICOS SOBRE ALGORITMOS......................................................................... S T!POS PR!N!T!vOS .................................................................................................................... 8 vAR!AvEL............................................................................................................................... 8 CONSTANTES .......................................................................................................................... 9 !DENT!F!CAO DAS vAR!AvE!S PARA A L!NGUAGEN JAvA .................................................................... 10 CONENTAR!OS....................................................................................................................... 11 OPERADORES ........................................................................................................................ 12 Operador de atribuiao .................................................................................................... 12 Operadores aritmticos.................................................................................................... 12 Operadores relacionais .................................................................................................... 13 Operadores lgicos.......................................................................................................... 1+ TABELA-vERDADE ................................................................................................................... 1+ PRECEDNC!A DOS OPERADORES ................................................................................................. 15 REGRAS PARA CR!AO DE BONS ALGOR!TNOS................................................................................. 16 NTODO PARA DESENvOLv!NENTO DE ALGOR!TNOS .......................................................................... 17 EXERCC!OS DE F!XAO........................................................................................................... 18 ESTRUTURAS DE CONTROLE............................................................................................... 20 ESTRUTURA SEQUENC!AL .......................................................................................................... 20 Passagem de parametros em Java .................................................................................... 20 Conversao de Tipos e Casting........................................................................................... 21 Conversoes Automaticas .................................................................................................. 21 Cast de Tipos !ncompativeis............................................................................................. 21 Uso do teclado para a entrada de dados ............................................................................ 23 Algoritmos Resolvidos...................................................................................................... 25 EXERCC!OS DE F!XAO - ESTRUTURA SEQUENC!AL ......................................................................... 27 ESTRUTURAS DE SELEO ......................................................................................................... 29 Seleao Simples .............................................................................................................. 29 Seleao Composta........................................................................................................... 30 Seleao Encadeada ......................................................................................................... 32 Seleao encadeada Heterognea ...................................................................................... 32 Seleao encadeada Homognea........................................................................................ 33 Seleao de multipla escolha.............................................................................................. 35 Algoritmos Resolvidos...................................................................................................... 37 EXERCC!OS DE F!XAO - ESTRUTURA DE SELEO.......................................................................... +0 ESTRUTURAS DE REPET!O....................................................................................................... +5 Repetiao com teste no inicio ........................................................................................... +5 Repetiao com teste no final ............................................................................................ +8 Repetiao com variavel de controle ................................................................................... +9 Comparaao entre estruturas de repetiao......................................................................... 50 Outros exemplos complementares .................................................................................... 55 EXERCC!OS GERA!S - ESTRUTURAS DE CONTROLE ...................................................................... 68 FUNES MATEMTICAS E DE STRING EM JAVA ............................................................... 75 FUNOES NATENAT!CAS ........................................................................................................... 75 FUNOES DE STR!NG ............................................................................................................... 77 EXERCC!OS DE F!XAO - FUNOES NATENAT!CAS E DE STR!NGS ......................................................... 79 VETORES E MATRIZES......................................................................................................... S0 vAR!AvE!S CONPOSTAS HONOGNEAS........................................................................................... 80 vAR!AvE!S CONPOSTAS UN!D!NENS!ONA!S (vETORES) ....................................................................... 80 Declaraao ..................................................................................................................... 80 Nanipulaao ................................................................................................................... 80 vAR!AvE!S CONPOSTAS NULT!D!NENS!ONA!S (NATR!ZES) ................................................................... 97 Declaraao ..................................................................................................................... 97 Nanipulaao ................................................................................................................... 97 EXERCC!OS DE F!XAO - vETORES E NATR!ZES.............................................................................107 MODULARIZAO ............................................................................................................. 10S DECONPOS!O....................................................................................................................108 PROCED!NENTOS...................................................................................................................108 Chamada de procedimentos ............................................................................................109 FUNOES ............................................................................................................................111 ESCOPO DE vAR!AvE!S ............................................................................................................112 PARANETROS .......................................................................................................................113 Parametros formais ........................................................................................................113 Parametros reais............................................................................................................113 PASSAGEN DE PARANETROS......................................................................................................11+ Passagem de parametros por valor ..................................................................................11+ Passagem de parametros por referncia ...........................................................................11+ EXERCC!OS DE F!XAO - NODULAR!ZAO..................................................................................121 ARQUIVOS......................................................................................................................... 124 !NTRODUO .......................................................................................................................12+ DEF!N!O DE ARQU!vOS.........................................................................................................12+ NAN!PULAO......................................................................................................................125 T!POS DE ARQU!vOS...............................................................................................................126 FORNAS DE ACESSO ...............................................................................................................126 ARQU!vO SEQUENC!AL - OPERAO DE !NCLUSO..........................................................127 ARQU!vO SEQUENC!AL - OPERAO DE CONSULTA .........................................................130 ARQU!vO SEQUENC!AL - OPERAO DE ALTERAO........................................................132 ARQU!vO SEQUENC!AL - OPERAO DE EXCLUSO..........................................................135 REPRESENTAO DA NAN!PULAO DE ARQU!vOS DE ACESSO ALEATOR!O ..............................................137 ARQU!vO DE ACESSO ALEATOR!O - OPERAO DE !NCLUSO..........................................137 ARQU!vO DE ACESSO ALEATOR!O - OPERAO DE CONSULTA .........................................139 ARQU!vO DE ACESSO ALEATOR!O - OPERAO DE ALTERAO........................................1+1 ARQU!vO DE ACESSO ALEATOR!O - OPERAO DE EXCLUSO..........................................1++ EXENPLOS D!vERSOS - UT!L!ZANDO AS CLASSES AWT, SW!NG E EvENT .................................................1+6 EXERCC!OS DE F!XAO - ARQU!vOS ..........................................................................................152 PROGRAMAO ORIENTADA A OBJETOS ......................................................................... 156 CONCE!TOS PREL!N!NARES.......................................................................................................156 !NTRODUO .......................................................................................................................156 O PROCESSO DE ABSTRAO.....................................................................................................156 OPERAOES DE ABSTRAO ......................................................................................................156 Classificaaof!nstanciaao...............................................................................................156 GeneralizaaofEspecializaao...........................................................................................157 AgregaaofDecomposiao ...............................................................................................158 Associaao ....................................................................................................................161 EXERCC!OS DE F!XAO - CONCE!TOS BAS!COS DE OO....................................................................161 O MODELO DE OBJETOS.................................................................................................... 162 CONCE!TOS FUNDANENTA!S......................................................................................................162 CLASSES E OBJETOS...............................................................................................................162 ATR!BUTO...........................................................................................................................162 NTODO.............................................................................................................................162 TERNOS ENPREGADOS NA POO .................................................................................................163 JAVA E O MODELO DE OBJETOS........................................................................................ 165 PROGRANAO ESTRUTURADA...................................................................................................166 O NODELO DE OBJETOS..........................................................................................................170 Objetos, mtodos e variaveis...........................................................................................170 Agregaao.....................................................................................................................170 Nensagens....................................................................................................................171 Classes e instancias........................................................................................................172 Herana........................................................................................................................172 Sobrecarga de Operadores e Polimorfismo........................................................................173 INTRODUO S CLASSES................................................................................................ 175 DEF!N!O DE UNA CLASSE EN JAvA ...........................................................................................175 Criando a Classe Caixa....................................................................................................175 A saida do programa sera ...............................................................................................176 O volume e +1+0.0.........................................................................................................176 !NTRODUO AOS NTODOS .....................................................................................................176 !ncluindo um Ntodo na Classe Caixa...............................................................................177 Retornando um valor .....................................................................................................178 !ncluindo um Ntodo com Parametros a Classe Caixa ........................................................178 CONSTRUTORES ....................................................................................................................179 GARBAGE COLLECT!ON............................................................................................................180 O NTODO F!NAL!ZE()............................................................................................................180 MAIS DETALHES SOBRE CLASSES E MTODOS................................................................. 1S1 SOBRECARGA DE NTODOS ......................................................................................................181 SOBRECARGA DE CONSTRUTORES ...............................................................................................182 A PALAvRA-CHAvE STAT!C .......................................................................................................183 A PALAvRA-CHAvE F!NAL .........................................................................................................183 HERANA........................................................................................................................... 1S3 FUNDANENTOS DE HERANA.....................................................................................................183 EXENPLO DE HERANA............................................................................................................18+ SOBREPOS!O DE NTODOS....................................................................................................185 Aplicando a Sobreposiao de Ntodos ..............................................................................185 CLASSES ABSTRATAS ..............................................................................................................186 PACOTES E INTERFACES................................................................................................... 1S7 PACOTES ............................................................................................................................187 Criando um Pacote.........................................................................................................187 A variavel de Ambiente CLASSPATH.................................................................................188 CONTROLE DE ACESSO............................................................................................................188 !NPORTANDO UN PACOTE ........................................................................................................189 !NTERFACES.........................................................................................................................189 TRATAMENTO DE EXCEO............................................................................................... 190 FUNDANENTOS DO TRATANENTO DE EXCEO................................................................................190 T!POS DE EXCEO................................................................................................................191 TRY-CATCH..........................................................................................................................191 THROW ..............................................................................................................................191 THROWS .............................................................................................................................192 F!NALLY..............................................................................................................................193 EXCEOES PADROES EN JAvA....................................................................................................19+ CR!ANDO UNA EXCEO ..........................................................................................................19+ ENTRADAJSADA .............................................................................................................. 195 STREANS ............................................................................................................................195 Streams de Bytes e de Caracteres....................................................................................195 Streams Predefinidas......................................................................................................196 LENDO DADOS DO TECLADO .....................................................................................................196 Leitura de Caracteres do Teclado.....................................................................................197 Leitura de Strings do Teclado ..........................................................................................198 ESCREvENDO NO TERN!NAL......................................................................................................198 LE!TURA E ESCR!TA DE ARQU!vOS ..............................................................................................198 APPLETS............................................................................................................................ 201 !NTRODUO AOS APPLETS.......................................................................................................201 ESQUELETO BAS!CO DE UN APPLET .............................................................................................202 !niciaao e Finalizaao de um Applet ................................................................................203 CORES DO APPLET .................................................................................................................203 DESENHANDO FORNAS GEONTR!CAS..........................................................................................20+ ANEXO A:........................................................................................................................... 205 CONCE!TOS SOBRE A L!NGUAGEN JAvA.........................................................................................205 Um Breve histrico.........................................................................................................205 Principios basicos de um ambiente Java classico................................................................205 Por Dentro da Plataforma Java ........................................................................................207 Compilador e Ambiente de Execuao Java.........................................................................208 ANEXO B............................................................................................................................ 209 RESUNO DOS CONCE!TOS ABORDADOS SOBRE A L!NGUAGEN JAvA. .......................................................209 RECURSOS ..........................................................................................................................209 COLETA DE L!XO ...................................................................................................................209 ANB!ENTE JAvA DE CONP!LAO................................................................................................209 DURANTE O PROCESSO DE CONP!LAO.......................................................................................210 ARQU!vOS DO JDK ................................................................................................................210 ALGUNAS DEF!N!OES ............................................................................................................210 CONP!LADOR JAvAC ...............................................................................................................211 PARA !NTERPRETAR O PROGRANA...............................................................................................212 PALAvRAS RESERvADAS...........................................................................................................212 vAR!AvE!S...........................................................................................................................212 NOD!F!CADORES DE vAR!AvE!S .................................................................................................213 CONENTAR!OS......................................................................................................................213 NOD!F!CADORES DE CLASSES ....................................................................................................213 NOD!F!CADORES DE NTODOS E vAR!AvE!S_NENBRO.......................................................................213 EXCEOES...........................................................................................................................213 DESCR!O DE ALGUNAS CLASSES...............................................................................................215 CLASSES NA!S UT!L!ZADAS .......................................................................................................215 1.String....................................................................................................................215 2.Classe que representa datas - java.util.date..............................................................216 3.Classes de Entrada e Saida......................................................................................217 +.File.......................................................................................................................218 ANEXO C............................................................................................................................ 220 3 Noes de Lgica O que lgica? palavra lgica originria do grego logos, que significa linguagem racional. De acordo com o dicionrio Michaelis, lgica a anlise das formas e leis do pensamento, mas no se preocupa com a produo do pensamento, quer dizer, no se preocupa com o contedo do pensamento, massimcomaformadeste,isto,comamaneirapelaqualumpensamentoouumaidiaso organizadoseapresentados,possibilitandoquecheguemosaumaconclusopormeiodo encadeamento dos argumentos. Os argumentos podem ser dedutivos ou indutivos. Os argumentos indutivos so aqueles com que,apartirdosdados,sechegaaumarespostapormeiodeanalogia,ouseja,pelacomparao comalgoconhecido,pormessetipoderaciocnionooferececertezadequearespostaserde fatoverdadeira.necessrioconhecerosfatosouassituaesparaquesepossafazera comparao.Josargumentosdedutivossoaquelescujaconclusoobtidacomoconseqnciadas premissas, isto , por meio da anlise das situaes ou fatos, pode-se obter a resposta. Trabalha-se comaformadassentenas,semquehajanecessidadedoconhecimentoprviodassituaesou fatos. Exemplos: a) todo mamfero um animal. todo cavalo um mamfero. portanto, todo cavalo um animal. b) Kaiton um pas do planeta Stix. Todos os Xipins so de Kaiton. Logo, todos os Xipins so Stixianos. c) Gerson cientista. Todo cientista estudioso. Logo, Gerson estudioso. A lgica a arte do bem pensar, que a cincia das formas do pensamento. Visto que a formamaiscomplexadopensamentooraciocnio,algicaestudaaacorreodoraciocnio. Podemos ainda dizer que a lgica tem em vista a ordem da razo. Objetivos da lgica Estudodastcnicasdeformalizao,deduoeanlisequepermitamverificara validade de argumentos. Algicatambmobjetivaacriaodeumarepresentaomaisformal,quese contrape linguagem natural, que suscetvel a argumentaes informais. O que lgica de programao? Significaousocorretodasleisdopensamento,daordemdarazoedeprocessosde raciocnioesimbolizaoformaisnaprogramaodecomputadores,objetivandoracionalidadeeo desenvolvimentodetcnicasquecooperemparaaproduodesolueslogicamentevlidase coerentes, que resolvam com qualidade os problemas que se deseja programar. O raciocnio algo abstrato, intangvel. Os seres humanos tm a capacidade de expressa-lo atravsdapalavrafaladaouescrita,queporsuavezsebaseiaemumdeterminadoidioma,que segue umasrie depadres (gramtica). Um mesmoraciocnio pode ser expressoem qualquerum dos inmeros idiomas existentes, mas continuar representando o mesmo raciocnio, usando apenas outra conveno. A 4 Algosimilarocorrecomalgicadeprogramao,quepodeserconcebidapelamente treinadaepodeserrepresentadaemqualquerumadasinmeraslinguagensdeprogramao existentes.Estas,porsuavez,somuitoatreladasaumagrandediversidadededetalhes computacionais, que pouco tm a ver com o raciocnio original. Para escapar dessa Torre de Babel e, ao mesmo tempo, representar mais fielmente o raciocnio da lgica de programao, utilizamos os algoritmos. O que um algoritmo? Umalgoritmopodeserdefinidocomoumaseqnciadepassosquevisamatingirum objetivo bem definido. Quando elaboramos umalgoritmo devemos especificar aesclaraseprecisas, que a partir deumestadoinicial,apsumperododetempofinito,produzemumestadofinalprevisvelebem definido. Istosignificaqueo algoritmo fixa umpadro de comportamento a ser seguido, uma norma de execuo asertrilhada, com vistas aalcanar,comoresultado final, asoluo de umproblema, garantindo que sempre que executado, sob as mesmas condies, produza o mesmo resultado. importncia da construo de algoritmos Representar mais fielmente o raciocnio envolvido na lgica de programao e, dessa forma, permite-nos abstrair de uma srie de detalhes computacionais, que podem ser acrescentadosmaistarde.Assimpodemosfocalizarnossaatenonaquiloque importante: a lgica da construo de algoritmos. Umavezconcebidaumasoluoalgortmicaparaumproblema,estapodeser traduzidaparaqualquerlinguagemdeprogramaoeseragregadadas funcionalidadesdisponveisnosdiversosambientes;costumamosdenominaresse processo de codificao. Representao de algoritmos Umalgoritmoumalinhaderaciocnio,quepodeserdescritodediversasmaneiras,como por exemplo: pseudicdigo, descrio narrativa, fluxograma ou diagrama de Chapin. Exemplo: Algoritmo para trocar lmpadas (considerando 10 lmpadas) Descrio narrativa Ir at o interruptor; Enquanto a quantidade desoquetes testados for menor que dez, faa Acionar interruptor; Se a lmpada no acender, ento Pegar uma escada; Posicionar a escada embaixo da lmpada; Buscar uma lmpada nova; Acionar o interruptor; Subir na escada; Retirar a lmpada queimada; Colocar uma lmpada nova; Enquanto a lmpada no acender, faa Retirar a lmpada queimada; Colocar uma lmpada nova; Ir at o interruptor do prximo soquete; 5 Diagrama Chapin ou N-S Pseudocdigo ou portugol Inicio Declarao de variveis; Enquanto (soquetes testados) < 10 faa Acionar o interruptor; Se (lmpada no acendeu) ento Pegar uma escada; Colocar a escada embaixo do soquete; Buscar lmpada nova; Acionar interruptor; Subir na escada; Retirar a lmpada queimada; Colocar lmpada nova; Enquanto (lmpada no acender) faa Retirar lmpada queimada; Colocar lmpada nova; Fim enquanto; Ir para o prximo soquete; Fim se; Fim enquanto; Fim; Ir para o primeiro soquete Soquetes testados < 10 Acionar o interruptor Lmpada no acendeu? Pegar uma escada Colocar a escada embaixo do soquete Buscar uma lmpada nova Acionar o interruptor Subir na escada Retirar a lmpada queimada Colocar a lmpada nova Lmpada no acendeu? Retirar lmpada queimada colocar lmpada nova Ir para o prximo soquete FV 6 Fluxograma ou Diagrama em blocos incio Soquetes testados< 10 Ir para o primeiro soquete Acionar o interruptor Lmpada no acendeu? Pegar uma escada Colocar a escada embaixo do soquete Buscar a lmpada nova Acionar interruptor Subir na escada Retirar a lmpada queimada colocar lmpada nova Lmpada no acendeu? Retirar a lmpada queimada Colocar lmpada nova Ir para prximo soquete fim 7 Exerccios de Fixao 1. Descreva com suas palavras o que voc entende por: ao; processo; estado; evento; padro de comportamento. 2.Escreva um algoritmo para descrever como voc faz para ir da sua casa at a Faculdade. 3.Oquevocentendeporaspectoestticoeaspectodinmicodeumalgoritmo?Qualoconceito que relaciona estes dois aspectos? 4.Quaissoastrsestruturasbsicadecontrolecomasquaispodemosdesenvolverqualquer algoritmo? 5.O que um programa? 6.O que um bom programa? 7.Com relao as aspecto de documentao, qual a vantagem de se utilizar uma pseudolinguagem para desenvolvimento de programas? 8 Conceitos bsicos sobre algoritmos sdadossonaverdade,osvaloresqueseroutilizadosparaaresoluodeumproblema. Essesvalores podem ser fornecidos pelo usuriodoprograma,podem seroriginados apartir deprocessamentos(clculos)ou,ento,apartirdearquivos,bancosdedadosououtros programas. Tipos primitivos Paraentenderostiposprimitivos,voltemosnossaatenoparaumconceitomuito importante: informao. Informaoamatria-primaquefazcomquesejanecessriaaexistnciados computadores,poiselessocapazesdemanipularearmazenarumgrandevolumededadoscom altaperformance,liberandooHomemparaoutrastarefasnasquaisseuconhecimento indispensvel. Osdadossoarmazenadostemporariamenteemvariveisparaquesejamprocessadosde acordo com as especificaes do algoritmo. Para que haja integridade no resultado obtido, os dados devemserclassificadosdeacordocomotipodovaloraserarmazenadonavarivel,isto,para evitarproblemasquepodemserocasionadosdevidoaofornecimentodevaloresinadequados operao que ser realizada. Aproximando-nos da maneira pela qual o computador manipula as informaes, vamos dividi-las em quatro tipos primitivos, que sero os tipos bsicos que usaremos na construo de algoritmos. Comoosdadosmanipuladospeloscomputadoresduranteaexecuodosprogramasso armazenados na memria, esses tipos seguem caractersticas de formato e espao disponvel nessa memria. Definir o tipo de dados mais adequado para ser armazenado em uma varivel uma questo degrandeimportnciaparagarantiraresoluodoproblema.Aodesenvolverumalgoritmo, necessrioquesetenhaconhecimentoprviodotipodeinformao(dado)queserutilizadopara resolveroproblemaproposto.Apartirda,escolhe-seotipoadequadoparaavarivelque representar esse valor. Na confeco de algoritmos, utilizamos ostipos de dadosprimitivos (literal, inteiro, real e lgico), uma vez que os algoritmos apenas representam a resoluo dos problemas. J na confeco de programas, existem desdobramentos para esses tipos de dados a fim de adequ-los melhor ao propsito de cada linguagem e resoluo prtica dos problemas. Varivel Um dado classificado como varivel quando tem a possibilidade de ser alterado em algum instante no decorrer do tempo, ou seja, durante a execuo do algoritmo em que utilizado, o valor dodadosofrealteraoouodadodependentedaexecuoemumcertomomentoou circunstncia. Quandoumalgoritmotranscritoparaumadeterminadalinguagemdeprogramao,as variveistambmteroafunodearmazenardadostemporariamente,masnamemriaRAMdo computador.Essesdadosseroutilizadosduranteoprocessamentoparaaresoluodoproblema em questo. PrmtvosEsecjcos ara a lnyuayem de Proyramao Java TIpos de dados0efInIoTIposde dados CapacIdadedearmazenamentonamemrIa docomputador,deacordocomaIInguagem Java. LIteral-tambmconhecIdo como texto ou caractere. Poderreceberletras,numeros e simbolos. D8S:osnumerosarmazenados emumavarIvelcujotIpode dadolIteralnopoderoser utIlIzados para clculos. char16 bIts - armazena unIcodes. byte8 bIts - de (128) at (127) short16 bIts - de (J2.768) at (J2.767) O 9 PrmtvosEsecjcos ara a lnyuayem de Proyramao Java nt J2bIts-de(2.147.48J.648)at (2.147.48J.647) long64bIts-de(9.22J.J72.0J6.854.775.808)at (9.22J.J72.0J6.854.775.807) floatJ2 bIts - de (J,4EJ8) at (J,4E+J8)Feal-tambmconhecIdo como ponto flutuante. PoderrecebernumerosreaIs, Isto,comcasasdecImaIs, posItIvos ou negatIvos.double64 bIts - de (1,7EJ08) at (+1,7E+J08) LogIco-tambmconhecIdo como booleano. PoderreceberverdadeIro(1) ou falso(0). boolean8bIts-emjavapodesearmazenartrueou ]clse. Inteiros Javadefinequatrotiposinteiros:byte,short,intelong.Todosostiposinteirosso sinalizados,ouseja,podemassumirvalorespositivosenegativos.Javanosuportatiposno sinalizados (inteiros somente positivos). Otamanhodeumtipointeironodeveservistocomoaquantidadedememriapara armazenarodadoesimocomportamentoapresentadopelodado.OambientedeexecuoJava podeutilizarqualquertamanhodememriaparaarmazenarodadodesdequeocomportamento correto seja mantido. A variao dos valores que cada tipo de dado inteiro pode assumir mostrada na tabela acima. Tipos de Dados de Ponto Flutuante Osnmeros de ponto flutuante, tambmconhecidos como nmeros reais,so utilizadosem operaesquenecessitamdeprecisofracionria,taiscomoraizquadrada,senoecosseno.Java define dois tipos de dados de ponto flutuante: floate double, que representam nmeros de preciso simplesedupla,respectivamente.Avariaodosvaloresdostiposdedadosdepontoflutuante podem assumir mostrado na tabela acima. Caracteres EmJavaotipodedadosutilizadoparaarmazenarumcaractereochar.OtipocharemJavadiferentedocharnoC/C++.EmC/C++,charuminteirode8bits.JavautilizaoUnicode pararepresentarseuscaracteres.OUnicodedefineumconjuntodecaracteresinternacionalque representatodososcaracteresencontradosemtodososidiomashumanos.umauniodedoze conjuntos de caracteres, como Latim, Grego e rabe. Para isso os caracteres unicode necessitam de 16 bits para serem representados. Assim, em Java, os caracteres tem o tamanho de 16 bits variando de O a 65.536, no existindo valores para este tipo de dado. Booleanos Para valores lgicos, Java possui o tipo boolean. Uma varivel booleana pode assumir valor true (verdadeiro) ou false (falso). Este tipo de dado retornado por todos os operadores relacionais, comoa= 0; i--) { try{ // monitora um bloco de cdigo System.out.println("Dividindo35por"+i+ "...); a = 35 / i; System.out.println("35 / " + i + " = " + a); } catch (ArithmeticException e) { // verifica diviso por zero System.out.println("Erro: Diviso por zero"); } } } } A sada do programa Dividindo 35 por 5... 35 / 5 7 Dividindo 35 por 4... 35 / 4 = 8 Dividindo 35 por 3... 35 / 3 11 Dividindo 35 por 2... 35 / 2 = 17 Dividindo 35 por l... 35/1-35 Dividindo 35 por O... Erro: Diviso por zero throw Na seo anterior foi mostrado como tratar uma exceo gerada pelo ambiente de execuo Java. Entretanto, possvel que o programador usurio gere explicitamente uma exceo atravs da palavra-chave throw. O formato geral : throw instancia_de_uma_exceo, Ainstnciadaexceoasergeradadevesernecessariamenteumobjetodaclasse Throwable ou de uma subclasse de Throwable. A partir do ponto onde utilizado o throw, o fluxo de execuo interrompido e nenhuma outra operao subsequente executada. O bloco try mais prximo inspecionado para verificar se o bloco catch identifica a exceo gerada. Caso a exceo sejaidentificada,aexecuodoprogramapassaparaoblococatch.Seaexceonofor identificadapornenhumblocotry-catch,entootratadorpadrodeexceesacionado 192 interrompendoa execuo do programae imprimindoa pilhade rastreamento.Aseguir mostrado um exemplo de utilizao de throw: class ThrowDemo { static void demoThrowQ {try { // gera uma exceo thrownew NullPointerException("DEMO"); }catch (NulIPointerException e) { System.out.println("Identifiada dentro de demoThrow); // gera novamente a mesma exceo throw e; } } public static void main(String args[]) { try { demoThrow(); }catch (NullPointerException e) { System.out.println("Identifiada novamente:" + e); } } } A sada do programa Identificada dentro de demoThrow Identificada novamente: java.lang.NullPointerException: DEMO throws Quando um mtodo "A" pode gerar uma exceo que ele no trata, necessrio especificar o seuerrodemaneiraqueoutrosmtodosquechamemomtodo"A"previnam-secontraesta exceo.Istofeitoatravsdainclusodaclusulathrowsnadeclaraodomtodo.Aclusula throws lista os tipos de excees que um mtodo pode gerar. A incluso desta clusula fora que os usurios deste mtodo tratem as possveis excees. O formato geral : tipo nome_do-metodo(lista_de_parmetros) throws lista_de_excees { // corpo_do_mtodo} A seguir mostrado um exemplo de utilizao de throws: class ThrowsDemo { static void demoThrows() throws IllegalAccessException { System.out.println("Identificada dentro de demoThrows"); // gera a exceo throw new IllegalAccessException("DEMO"); } public static void main(String args[]) { try { demoThrows(); } catch (IllegalAccessException e) { System.out.println("Identificada novamente: " + e); } } } A sada do programa Identificada dentro de demoThrows193 Identificada novamente: java.lang.IllegalAccessException: DEMO finally Quando ocorre uma exceo o fluxo de execuo do mtodo alterada abruptamente. Muitas vezesdependendodecomoomtodocodificado,possvelqueomtodoretornedeforma prematura.Paraevitaristopodeseradicionadoumblocofinallyaotry-catch.Oblocofinallyser executado sempre, ocorrendo ou no uma exceo. A seguir mostrado um exemplo de utilizao do bloco finally: class FinallyDemo { static void metodoA() { try { System.out.println("dentro do metodoA"); throw new RuntimeException("DEMO"); } finally { System.out.println("dentro finally do metodoA"); } } static void metodoB() {try { System.out.println("dentro do metodoB"); return; } finally { System.out.println("dentro finally do metodoB"); } } static void metodoC() { try { System.out.println("dentro do metodoC"); } finally { System.out.println("dentro finally do metodoC"); } } public static void main(String args[]) {try { metodoA(); } catch (Exception e) { System.out.println("Excecao identificada"); } metodoB(); metodoC(); } } A sada do programa dentro do metodoA dentro finally do metodoA Exceo identificada dentro do metodoB dentro finally do metodoB dentro do metodoC dentro finally do metodoC Notequeoblocofinallysempreexecutadomesmosendogeradaumaexceocomono metodoA(),solicitandoumretornoprematurocomonometodoB()ouquandonenhumaexceo identificada como no metodoC(). 194 Excees Padres em Java Nestaseoseroapresentadasasexceesdefinidasnopacotejava.langqueportado automaticamenteemtodoprogramaJava.ParaasclassesdaramificaoRuntimeException.O compiladornoverificasesotratadasporalgummtodo.Poroutrolado,paraasclassesda ramificaoExceptionocompiladorverificaseelassotratadasemalgummtododoprograma. Muitas outras excees so definidas em outras bibliotecas. Exceo0escro ArthmetcExceptonErro arItmtIco como dIvIso por zero ArrcylndexDutD]8oundsExceptonndIce do crrcy fora do lImIte ArrcyStoreExceptonAtrIbuIo de elemento de tIpo Incompativel ClcssCcstExceptonCcst InvlIdo llleyclAryumentExceptonArgumento InvlIdo Invocando um mtodo llleyclMontorStcteExceptonDperao de monItoramento InvlIdo llleyclStcteExceptonAmbIente ou aplIcao em estado Incorreto llleyclThrecdStcteExceptonDperao requIsItada Incompativel com estado atual lndexDutD]8oundsExceptonAlgum tIpo de indIce fora do lImIte NeyctveArrcySzeExceptonArrcy crIado com tamanho negatIvo NullPonterExceptonUso InvlIdo de referncIa nula NumberFomctExceptonConverso InvlIda de Strny para numero SecurtyExceptonTentatIva de vIolao de segurana StrnylndexDutD]8oundsndIce de Strny fora de lImIte 0nsupportedDperctonExceptonUma operao no suportada foI encontrada Subclasses de RuntimeException nao checadas pelo compilador. Exceo0escro ClcssNotFoundExceptonClasse no encontrada CloneNotSupportedExceptonTentatIva de clonar um objeto que no Implementa a Interface Clonable llleyclAcessExceptonAcesso negado a uma classe lnstcncctonExceptonTentatIva de crIar um objeto de uma classe abstrata ou Interface. lnterruptedExceptonUma Threcd foI InterrompIda por outra NoSuchFeldExceptonUm campo requIsItado no exIste NoSuchMethodExceptonUm mtodo requIsItado no exIste Subclasses de Exception checadas pelo compilador. Criando uma Exceo EmboraasexceespadresdeJavatratemamaioriadoserroscomuns,ousuriopode querer definir novas excees para outros erros. Para isso basta criar uma subclasse de Exception. Abaixo mostrado um exemplo de criao de uma exceo: class MinhaExcecao extends Exception {private int cdigo; 195 MinhaExcecao(int cod) {cdigo = cod; } public String toString() { return "MinhaExcecao, cdigo " + cdigo; } } class MinhaExcecaoDemo { staticvoidregistra(inta)throws MinhaExcecao { System.out.println("registrando cdigo = " + a); if(a > 10) throw new MinhaExcecao(a); SyStem.out.printLn(cdigo = " + a + " registrado"); } public static void main(String args[]) {try { registra(5); registra(29); } catch (MinhaExcecao e) { System.out.println("Exceo identificada: + e); } } } sada do programa registrando cdigo - 5 cdigo = 5 registrado registrando cdigo = 29 Exceo identificada: MinhaExcecao, cdigo = 29 EntradaJSada Streams Os programas Java trabalham comEntrada/Sada (E/S) atravs de streams. Uma stream umaabstraoqueproduzouconsomeinformao.Umastreamligadaaumdispositivofsico atravsdosistemadeE/S.Todasasstreamsapresentamcomportamentoigualmesmoqueos dispositivos a elasligado forem diferentes. Assim, as mesmas classes e mtodos de E/S podem ser utilizadasparadiferentestiposdedispositivos.IstosignificaqueumaStreamdeentradapode abstrair muitos tipos diferentes de entradas como arquivos, teclado ou conexes de rede. Da mesma forma, uma stream de sada pode referir-se ao terminal, a um arquivo ou a uma conexo de rede. Streams de Bytes e de Caracteres Java define dois tipos de streams: streams de bytes e streams de caracteres. Asstreams debytesoferecemmeiosparatrataraentradaesadadebytes.Umastreamdebytespodeser utilizada,porexemplo,paralerouescreverdadosbinrios.Streamsdecaracteresoferecemmeios para tratar a entrada e sada de caracteres. As streams de caracteres utilizam acodificao Unicode. Classes de Streams de Bytes Asstreamsdebytesestodivididasemdoisramoshierrquicos.Oprimeiroteminciona classeabstrata InputStream. Todas as subclasses deste ramo correspondem a streams de bytes de entradautilizadasparaaleituradebytesdediversosdispositivos.Osegundoramodahierarquia originadonaclasseabstrataOutputStream.Assubclassesdesteramopermitemaescritadebytes 196 em diversos dispositivos. A tabela abaixo mostra quais so as classes que trabalham com streams de bytes. Classes de Streams de Caracteres Asstreamsdecaracterestambmestodivididasemdoisramoshierrquicos.Oprimeiro ramotemincionaclasseabstrataReader.Todasassubclassesdesteramocorrespondema streamsdebytesdeentradautilizadasparaaleituradecaracteresdediversosdispositivos.O segundoramodahierarquiaoriginadonaclasseabstrataWriter.Assubclassesdesteramo permitem a escrita de diversos disposivos. Classe Stream0escro 8ufferednputStreamStrecm de entrada bu]]erzcdc 8ufferedDutputStreamStrecm de saida bu]]erzcdc 8yteArraynputStreamStrecm de entrad que l de um array de bytes 8yteArrayDutputStreamStrecm de saida que escreve em um array de byte 0atanputStreamStrecm de entrada para leItura de tIpos de dados Java Padro 0ctcDutputStrecmStrecm de saida para escrIta em tIpos de dados Java Padro FlelnputStrecmStrecm de entrada para leItura de arquIvos FleDutputStrecmStrecm de saida para escrIta em arquIvos FlterlnputStrecmStrecm de entrada que Implementa lnputStrecm FlterDutputStrecmStrecm de saida que Implementa DutputStrecm lnputStrecmStrecm de entrada (classe abstrata) DutputStrecmStrecm de saida (classe abstrata) PpedlnputStrecmStrecm de entrada ppe PpedDutputStrecmStrecm de saida ppe PrntStrecmStrecm de saida que possuI rnt e rntln PushbccklnputStrecmStrecm de entrada que permIte devolver um byte lIdo RcndomAccessFleSuporta escrIta e leItura de arquIvos SequencelnputStrecmStrecm de entrada que combIna uma ou maIs strecms de entrada Classes de Streams de bytes. Streams Predefinidas AstreamdesadapadroSystem.out.Porpadro,estastreamestligadaaoterminal (console). A stream de entrada padro System.in. Por padro, esta stream tambm est ligada ao teclado.StreamdeerropadroSystem.err.Porpadro,estastreamtambmestligadaao terminal (console)mas pode ser redirecionada para qualquer dispositivo de E/S compatvel. System.in um objeto do tipo InputStream. System.out e System.err so objetosdo tipo PrintStream. Estas so streams de bytes, contudo, so tipicamente utilizadas para ler caracteres do teclado e escrever caracteres para o terminal. Lendo Dados do Teclado Em Java no existe um mtodo generalizado para leitura de teclado como o scanf do C ou o read do Pascal. Na realidade os caracteres do teclado so lidos atravs da stream System.in. Para seobterumastreamdecaracteresnecessrioempacotaroSystem.inemumobjeto BufferedReader. Para criar um objeto BufferedReadero formato do construtor padro : 197 BufferedReader(Reader ReaderDeEntrada) ReaderDeEntrada ligado instncia de BufferedReaderque est sendo criado. Reader uma classe abstrata. Uma das suas subclasses concretas InputStreamReaderque converte bytes em caracteres. Para criar um objeto InputStreamReaderpode-se usar o construtor: InputStreamReader(InputStream StreamDeEntrada) Nestecaso,pode-seutilizarSystem.incomoStreamDeEntradaparaoconstrutodo InputStreamReader.Assim,paraconectarumBufferedReaderaotecladonecessrioincluira seguinte linha de cdigo: BufferedReader bf = new BufferedReader(new InputStreamReader(System.in) Aps a execuo desta linha, br estar conectado ao teclado atravs do System.in. A tabela abaixo mostra quais so as classes que trabalham com streams de caracteres. Classe Stream0escro 8u]]eredRecder Stream do caracteres de entrada bufferizada 8u]]eredWrterStream de caracteres de saida bufferizada ChcrArrcyRecder Stream de entrada que l de um array de caracteres ChcrArrcyWrter Stream de saida que escreve em um array de caracteres FleRecderStream de entrada para leitura de arquivos FleWrter Stream de saida para escrita em arquivos FlterRecder Stream de entrada que implementa Reader FlterWrterStream de saida que implementa Writer lnputStrecmRecder Stream de entrada que traduz bytes em caracteres DutputStrecmWrterStream de saida que traduz bytes em caracteres LneNumberRecderStream de entrada que conta e l linhas Recder Stream de caracteres de entrada (classe abstrata) Wrter Stream de caracteres de saida (classe abstrata) PpedRecderStream de caracteres de entrada pipe PpedWrter Stream de caracteres de saida pipe PrntWrter Stream de caracteres de saida que possui print e println Push8cckRecderStream de caracteres de entrada que permite devolver um byte lido StrnyRecderStream de caracteres de entrada que l de uma string StrnyWrterStream de caracteres de saida que escreve em uma String Classes de streams de caracteres. Leitura de Caracteres do Teclado Para ler um caractere do teclado basta utilizar o mtodo read(). Observe que o mtodo pode gerar uma exceo lOException. Abaixo mostrado um exemplo que l do teclado: import java.io.*; class LeCaracterTeclado { public static void main(String args[]) throws lOException { char c; 198 BufferedReaderbr=newBufferedReader(new InputStreamReader(System.in)\ System.out.println("Digite um caracter qualquer ou 's' para sair); do { c = (char) br.read(); System.out.println(c); } while (c != 's'); } } Observequeocomportamentodesteprogramaumpoucodiferentedoesperado.Isto ocorre porque System.in no repassa para o programa nenhum caractere at que sejapressionada a tecla ENTER. Leitura de Strings do Teclado ParalerumastringdotecladobastautilizaromtodoreadLine().Observequeomtodo readLine tambm pode gerar uma exceo lOException. Abaixo mostrado um exemplo que l uma string do teclado: import java.io.*;| class LeStringTeclado {public static void main(String args[]) throws lOException { String s; BufferedReader br = newBufferedReader(new InputStreamReader (System.in)); System.out.println("Entre com texto e pressione ENTER"); System.out.println("Digite 'sair' para finalizar."); do { s = br.readLine(); System.out.println(s); } while (!s.equals("sair")); } } Escrevendo no Terminal Aescritanoterminalpodeserfacilmentedesempenhadaatravsdosmtodoprintln()do System.out,conformeconstanosexemplosexibidosatomomento.Estesmtodossodefinidos pela classe PrintStream (que o tipo de objeto referenciado por System.out. Leitura e Escrita de Arquivos DiversasclassesemtodosparaleituraeescritadearquivossodefinidasemJava.Estas classesfazempartedopacotejava.io.EmJavatodososarquivossotratadoscomoarquivos binrios. Contudo, podem ser utilizadas streams de caracteres para escrita e leitura de arquivos. DuasdasclassesmaiscomunsparamanipulaodearquivossoFileinputStreame FileOutputStreamquecriamstreamsdebytesconectadasaarquivos.Paraabrirumarquivobasta criarumobjetodeumadestasclassesespecificandoonomedoarquivocomoparmetrodo construtor. Os construtores utilizados nos exemplos desta seo so: FileInputStream(String nomeDoArquivo) throws FileNotFoundException FileOutputStream(String nomeDoArquivo)throws FileNotFoundException OparmetronomeDoArquivoespecificaoarquivoaseraberto.Seaocriarumastreamde entrada,seoarquivonopuderserencontradoounoexistir,aexceoFileNotFoundException 199 gerada.Nocasodastreamdesada,casooarquivoespecificadonopudersercriado,aexceo FileNotFoundExceptiongerada.Quandoostreamdesadacriado,qualquerarquivocomo mesmo nome ser destrudo. Quando todas as operaes de leitura ou escrita tiverem sido concludas, necessrio fechar oarquivoatravsdomtodoclose()definidoemambasasclassesFilelnputStreame FileOutputStream. O mtodo close() pode gerar a exceo IOException. Para ler bytes de um arquivo pode-se utilizar o mtodo read() da classe FileInputStream. O mtodoread()podegeraraexceoIOException.Semprequechamado,omtodoread()lum byte e retorna o valor deste byte como um valor inteiro. Ao chegar ao fim do arquivo, o mtodo read() retorna -1. O exemplo a seguir l um arquivo chamado TESTE.TXT e imprime na tela o seu contedo: import java.io.*; class ExibeArquivo { public static void main(String args[]) throws IOException {int i; FileInputStream fis; try { fis = new FileInputStream(args[0]); } catch (FileNotFoundException e) { System.out.println("Arquivo no encontrado."); return; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Uso: ExibeArquivo nomeArquivo"); return; } // l os caracteres e imprime na tela do { i = fis.read(); if(i != -1) System.out.print((char) i); } while (i != -1); fis.close(); } } Paraescreveremumarquivopodeserutilizadoomtodowrite()providopelaclasse FileOutputStream.Paraestemtodonecessriopassarovalordobyteaserescritonoarquivo. Este parmetro do tipo inteiro, contudo, somente o byte menos significativo escrito no arquivo. O mtodo write() pode gerar a exceo lOException. No exemplo abaixo write() utilizado para copiar um arquivo: import java.io.*; class CopiaArquivo {. public static void main(String args[]) throws lOException {int i; FileInputStream fis; FileOuputStream fos; try { try { fis = new FileInputStream(args[0]); } catch (FileNotFoundException e) { System.out.println("Arquivo origem no encontrado.); return; } try{ fos = new FileOutputStream(args[1]); } catch (FileNotFoundException e) { System.out.println("Erro criando arquivo destino."); return; } }catch (ArrayIndexOutOfBoundsException e) { System.out.println("Uso: CopiaArquivo origem destino"); return; } 200 // copia arquivotry { do { i = fis.read(); if(i != -1)fos.write(i); } while (i != -1); } catch (lOException) { System.out.println("Erro"); } fis.close(); fos.close(); } } 201 Applets Introduo aos Applets odososexemplosanterioressoaplicativosdeterminal(interfacedetexto).Contudo,tem outrostiposdeaplicaesJavacomoosApplets.Umappletumapequenaaplicaoque pode ser acessada de um servidor de Web, transferida pela Internet, automaticamente instalada eexecutadacomopartedeumdocumentoHTML.Nestecaptuloseroapresentadosos fundamentosrelacionadoscomacriaodeumapplet.Comoserconstatadoaolongodeste captulo,osAppletssoestruturadosdemaneiradiferentedosaplicativos.Abaixoapresentadoo exemplo mais bsico de um applet: import java.awt.*; import java.applet.*; public class PrimeiroApplet extends Applet{ public void paint(Graphics g) { g.drawString("Primeiro exemplo de applet.", 20, 20); } } Este applet importa dois pacotes, o primeiro o java.awt (Abstract Window Toolkit - AWT). Os AppletsinteragemcomousurioatravsdoAWTenoatravsdoterminalcomonosexemplos anteriores.OAWToferecesuporteainterfacegrficabaseadaemjanelas.OAWTbastante extenso e, maiores detalhes sobre as suas classes devem ser obtidos nos arquivos de ajuda de Java. Osegundopacoteojava.AppletsquecontmaclasseApplet.TodososAppletsdevemser subclasses de Applet. Como o applet ser acessado por um outro programa necessrio declar-lo como public. O mtodopaint()definidopeloAWTedevesersobrepostopeloapplet.Estemtodochamado semprequeoappletprecisarserredesenhado.Istoocorreemsituaescomoquandooapplet minimizado e restaurado ou quando ele coberto e descoberto por outra janela. O paint() tambm chamado quando o applet iniciado. O parmetro do mtodo paint() um objeto da classe Graphics querepresentaareaondeoappletexibido.OdrawString()daclasseGraphicsrecebecomo parmetrosamensagemqueserescritanareadoappleteaposioxeyondeelaser posicionada. A posio (0, 0) corresponde ao ponto do topo esquerdo do applet. Observequeumappletnopossuiummtodomain()poiseleexecutadoimediatamente aps ser carregado em um visualizador de applet ou em um navegador. Um applet compilado da mesma forma que os aplicativos terminais. Contudo, para execut-lo o processo diferente. Existem duas maneira de se executar um applet:' UtilizandoumnavegadorWebcompatvelcomJavacomooNetscapeouversesdoInternet Explorer. UtilizandoumvisualizadordeappletcomooutilitrioappletviewerprovidocomoJava.Neste casooappletexecutadoemumajanela.Normalmenteestaamaneiramaisrpidadese testar um applet. ParaexecutarumappletnecessrioescreverumpequenoarquivoHTMLcontendoumatag APPLET indicando o nome do applet e suas dimenses (largura e altura ocupadas na tela). Abaixo mostrado um possvel arquivo HTML: Primeiro Applet

SalveoarquivocomoTesteApplet.html.Paraexecutaroappletemumnavegadorbasta carregar o arquivo TesteApplet.html. Para executar no appletviewer basta executar: T 202 appletviewer TesteApplet.html De forma alternativa, para utilizar o appletviewer a tag APPLET pode ser includa no cdigo do applet como comentrio do cdigo fonte do applet, conforme a listagem abaixo: import java.awt.*; import java.applet.*; /* / public class PrimeiroApplet extends Applet { public void paint(Graphics g) { g.drawString("Primeiro exemplo de applet.", 20, 20); } } Destaforma,bastacompilarocdigoeexecutaroappletviewerpassandoonomedo arquivo fonte (.java) do applet ao invs do arquivo HTML. Esqueleto Bsico de um Applet QuasetodososAppletssobrepemumconjuntodemtodosqueoferecemomecanismo bscioparaqueonavegadorouovisualizadordeappletcontroleasuaexecuo.Quatrodestes mtodos so definidos pela classe Applet: init(), start(), stop() e destrroy(). Outro mtodo, paint(), definido pela classe Component da biblioteca AWT. Uma implementao padro oferecida, assim no necessrio sobrepor os mtodos que no sero utilizados. O esqueleto bsico de um applet mostrado abaixo. // Um esqueleto para Applets import java.awt.*; import java.applet.*;/*

*/ public class EsqueletoApplet extends Applet{ // Primeiro mtodo chamadopublic void init() { // inicializacao do applet } // Chamado aps init() e sempre que o applet e reiniciado public void start() { // inicia ou reinicia a execuo } // Chamado quando o applet e suspensopublic void stop() { // suspende a execuo } // Chamado quando o applet e finalizado// este e o ultimo mtodo executadopublic void destroy() { // executa o cdigo de finalizao do applet } // Chamado quando o applet precisa ser redesenhado public void paint(Graphics g) { // cdigo de desenho do applet } } Emboraesteesqueletonofaanada,elepodesercompiladoeexecutado. 203 Quando executado, ele gera uma janela limpa. Iniciao e Finalizao de um Applet importante observar a ordem em que cada um dos mtodos apresentados no esqueleto so chamados. Quando o applet iniciado, o AWT chama em seqncia os seguintes mtodos: 1. init() 2. start() 3. paint() Quando o applet finalizado a seguinte seqncia de mtodos chamada: 1. stop() 2. destroy() init()-Esteoprimeiromtodoaserchamado.Neledevemseriniciadastodasasvaimtodo chamado uma nica vez durante a execuo do applet. start()-Omtodostart()chamadoimediatamenteapsoinit()esemprequeforreiniciadaa execuo do applet aps ter sido suspensa. Este mtodo chamado sempre que o documento HTML exibido na tela. paint()-Estemtodochamadosemprequeoappletprecisaserredesenhado.Istopodevarias razes. Por exemplo, quando a janela do applet coberta e descoberta por outra janela. Ou quando a janela do applet minimizada e restaurada. O mtodo recebe um parmetro Graphics que descreve o ambiente grfico onde o applet est sendo executado. stop() - O mtodo stop() chamado quando o navegador Web deixa o documento HTMLcontendo o applet (quando ele carrega outra pgina, por exemplo). Quando stop() chamado, provavelmente oappletestsendoexecutado.Omtodostop()utilizadoparasuspenderThreadsqueno precisamserexecutadasenquantooappletnovisvel.Elaspodemserreiniciadasatravsdo mtodo start() caso o usurio volte para a pgina. destroy() - O mtodo destroy() chamadoquando o ambiente de execuo determina que o applet ser removidocompletamenteda memria. Neste momento todos os recursos utilizadospelo applet devem ser liberados. O mtodo stop() sempre chamado antes do mtodo destroy(). Cores do Applet Paraconfiguraracordefundodajaneladeumapplet,necessrioutilizaromtodo setBackground().Paraconfiguraracordedesenhonecessrioutilizaromtodo setForeground().EstesmtodossodefinidospelaclasseComponenteapresentamseguinte forma: void setBackground(Color novaCor)void setForeground(Color novaCor) Onde novaCor define a cor que ser configurada. A classe Cor define as seguintes constantes para especificar uma cor: Color.blackColor.magentaColor.blue Color.orange Color.cyanColor.pinkColor.darkGrayColor.red Color.grayColor.whiteColor.greenColor.yellow Color.lightGray Abaixomostradoumexemploquemodificaacordedesenhoeacordofundo.Avisualizao dele mostrada na figura abaixo: import java.awt.*; import java.applet.*; /*