algoritmos e programacao ii apostila completa

Upload: valtheir-sa

Post on 29-Oct-2015

43 views

Category:

Documents


2 download

TRANSCRIPT

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    1/144

    U A P IA P IBacharelado em Sistemas de Informao

    Mdulo II

    Organizao de Sistema MetodolgicoAlgoritmos e Programao II

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    2/144

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    3/144

    Mdulo II

    Algoritmos e Programao II

    Magno Santos

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    4/144

    PRESIDENTE DA REPBLICALuiz Incio Lula da Silva

    MINISTRO DA EDUCAOFernando Haddad

    GOVERNADOR DO ESTADOWellington Dias

    REITOR DA UNIVERSIDADE FEDERAL DO PIAULuiz de Sousa Santos Jnior

    SECRETRIO DE EDUCAO A DISTNCIA DO MECCarlos Eduardo Bielschowsky

    COORDENADORIA GERAL DA UNIVERSIDADE ABERTA DO BRASILCelso Costa

    SECRETRIO DE EDUCAO DO ESTADO DO PIAU

    Antonio Jos MedeirosCOORDENADOR GERAL DO CENTRO DE EDUCAO ABERTA A

    DISTNCIA DA UFPIGildsio Guedes Fernandes

    SUPERITENDNTE DE EDUCAO SUPERIOR NO ESTADOEliane Mendona

    DIRETOR DO CENTRO DE CINCIAS HUMANAS E LETRASAntnio Fonseca dos Santos Neto

    COORDENADOR DO CUSO DE ADMINISTRAO A DISTNCIA

    Francisco Pereira da Silva Filho

    COODENADORA DE MATERIAL DIDTICO DO CEAD/UFPICleidinalva Maria Barbosa Oliveira

    DIAGRAMAOEmanuel Alcntara da Silva

    B726c SANTOS, Magno Alves

    Algoritmos e Programao II / Magno Alves dos SantosTeresina: UFPI/UAPI

    2008.

    Inclui bibliografia

    1 Algoritmo. 2 Linguagem Java, 3 Programao Orientada aObjetos . I. Universidade Federal do Piau/Universidade Aberta doPiau. II. Ttulo.

    CDU: 32

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    5/144

    Sumrio Geral

    UNIDADE 1. FUNDAMENTOS DE PROGRAMAOORIENTADA A OBJETOS 07

    01 Introduo engenharia de software 0902 Introduo programao de computadores 2103 Histrico da Linguagem Java 2704 - Instalao do Java e do NetBeans 3105 Primeiro Programa Java com a IDE NetBeans 3606 Entrada e Sada de Dados 46

    UNIDADE 2. ESTRUTURAS DE CONTROLE 5307 Estruturas de Deciso: if-then-else, switch 5608 Estruturas de Repetio: while, do-while, for 6209 Estruturas de Interrupo: break, continue, return 69

    UNIDADE 3. ARRANJOS E ARGUMENTOS 7510 Arranjos em Java 7711 Argumentos em Java 83

    UNIDADE 4. PARADIGMA DE PROGRAMAOORIENTADA A OBJETOS 8912 Classes, Objetos e Mtodos 9113 Definio de Classe em Java 10714 Herana, Polimorfismo e Interface 12515 Tratamento e Excees em Java 138

    APNDICES:A01 - EXERCCIOS ADICIONAIS 142A02 PLANO DE ENSINO 145

    A03 - AGENDA DE ATIVIDADES 149

    REFERNCIAS BIBLIOGRFICAS 151

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    6/144

    Este texto destinado aos estudantes aprendizes que

    participam do programa de Educao a Distncia da

    Universidade Aberta do Piau (UAPI) vinculada ao consrcio

    formado pela Universidade Federal do Piau (UFPI) Universidade

    Estadual do Piau (UESPI), Centro Federal de Ensino

    Tecnolgico do Piau (CEFET-PI), com apoio do Governo do

    estado do Piau, atravs da Secretaria de Educao.

    O texto deste compndio composto de quatro unidades,contendo quinze sub-unidades, estruturadas de modo

    sequencial, onde discorrem sobre os fundamentos da

    programao de computadores orientada a objetos.

    Na Unidade 1, abordamos os fundamentos de engenharia

    de software e da programao orientada a objetos, apresentando

    a anatomia de um programa orientado a objetos com seus

    elementos constituintes. Apresentamos os primeiros passos com

    a IDE NetBeans e como escrever um cdigo para ler e escreverdados na entrada e sada padro.

    Na Unidade 2, apresentamos as estruturas de controle de

    um programa em Java. Exemplificamos as estruturas de

    repetio incremental, repetio com teste no incio e repetio

    com teste no final, alm das estruturas de desvio condicional.

    Na Unidade 3, abordamos as estruturas de dados de

    arranjos homogneos e heterogneos. Trabalhamos exemplos

    com vetores, matrizes e adicionalmente passagem de

    parmetros como argumentos para um programa

    Na Unidade 4, so expostos contedos sobre o

    paradigma da programao orientada a objetos. Focamos nas

    definies e exemplos de classe, objeto, mensagem.

    Apresentamos caractersticas intrnsecas da programao OO

    como herana, polimorfismo e interface.

    ApresentaoApresentao

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    7/144

    Unidade1AsociologiaeaSociologiadaEducaoAsociologiaeaSociologiadaEducao

    Unidade1Unidade1

    Resumo

    Unidade1

    Esta unidade tem como meta apresentar uma visogeral sobre os elementos conceituais da programaoorientada a objetos. So abordados os fundamentosda engenharia de software e da programao decomputadores. A anatomia de um programa em Java apresentada com suas caractersticas e funes

    onde se deve aprender a criar, editar, compilar eexecutar um dos primeiro programa em Java. Comoobjetivo principal, esta unidade ensina, a gerar umcdigo simples dentro dos padres mnimos exigidopela engenharia software.

    Fundamentos de

    Programao Orientada

    a Objetos

    Fundamentos de

    Programao Orientada

    a Objetos

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    8/144

    UNIDADE 1. FUNDAMENTOS DE PROGRAMAO

    ORIENTADA A OBJETOS 07

    01 Introduo engenharia de software 09

    02 Introduo programao de computadores 21

    03 Histrico da Linguagem Java 27

    04 - Instalao do Java e do NetBeans 31

    05 Primeiro Programa Java com a IDE NetBeans 3606 Entrada e Sada de Dados 46

    Sumrio

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    9/144

    1. INTRODUO ENGENHARIA DE SOFTWARE

    1.1. Engenharia de Software Uma viso em camadas

    Engenharia de Software uma disciplina que aplica

    princpios da engenharia de desenvolvimento na qualidade dosoftware em um determinado tempo e com um custo efetivo.Usando uma abordagem sistemtica e metodolgica paraproduzir resultados que possam ser quantificados. Faz uso demedio e mtricas para avaliar a qualidade, no somente dosoftware, mas tambm do processo. Utilizada para avaliar egerenciar projetos de desenvolvimento de software.

    Engenharia de Software vista de modo diferente pelosdiversos profissionais. Pressman sugere uma viso daengenharia de software como uma camada tecnolgica 1. Essaviso consiste em quatro camadas: foco na qualidade, processo,mtodo e ferramentas. A Figura abaixo ilustra essa viso daengenharia de software.

    1.1.1. Foco na Qualidade

    Essa camada busca um total foco na qualidade. umacultura onde o compromisso em melhoria continua no processode desenvolvimento do software sustentado. Permite odesenvolvimento de mais abordagens efetivas para engenhariade software.

    1.1.2. Processo

    Define uma estrutura, que consiste em reas de processoschave, que define e permite a entrega racional e a tempo de umsoftware. reas de processos chave so a base para ogerenciamento de projeto de software. Estabelecem quemtodos tcnicos sejam aplicados, quais ferramentas sousadas, que produtos de trabalho precisam ser produzidos, e quemarcos so definidos. Incluem a garantia que a qualidade sermantida, e que a mudana devidamente controlada e

    gerenciada.

    829

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    10/144

    1.1.3. Mtodo

    Mtodos definem procedimentos sistemticos eordenados de construo de software. Eles proporcionam umaestrutura global interna onde as atividades do engenheiro desoftware so realizadas. Essas atividades incluem um conjuntoamplo de tarefas, tais como, anlise de requisitos, design,construo do programa, teste e manuteno.

    Metodologia a cincia de pensamento sistemtico,usando os mtodos ou procedimentos para uma disciplina emparticular. Existem vrias metodologias da engenharia desoftware que so usadas atualmente. Algumas delas estoenumeradas abaixo:

    Metodologias Estruturadas:

    Informaes de Engenharia Desenvolvimento do Ciclo de Vida do Software/Ciclo deVida do Projeto Metodologia de Desenvolvimento de AplicaoRapid Metodologia de Desenvolvimento de Aplicao Joint Mtodo CASE*

    Metodologias Orientadas a Objeto:

    Mtodo Booch Mtodo Coad e Yourdon Mtodo Jacobson Mtodo Rambaugh Mtodo Wirfs-Brock

    1.1.4. Ferramentas

    Promovem o suporte aos processos e mtodos.Ferramentas CASE (Computer Aided Software Engineeing)proporcionam um sistema de suporte ao projeto dedesenvolvimento, onde as informaes criadas por umaferramenta podem ser usadas por outras. Podem serautomticas ou semi-automticas.

    Muitas ferramentas so usadas para desenvolvermodelos. Modelos so patterns (padres) de algo que foi criadoou so simplificaes. Existem dois modelos que geralmente sodesenvolvidos por um engenheiro de software, especialmente, omodelo de sistema e o modelo de software. O modelo de sistema uma representao acessvel de um sistema complexo queprecisa ser estudado, enquanto o modelo de software chamadode blueprint do software que precisa ser construdo. Assim comoas metodologias, vrios modelos de ferramentas so usadospara representar sistemas e softwares. Alguns esto descritos

    abaixo.Abordagem de Modelos de Ferramentas Estruturada:

    8210

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    11/144

    Diagrama de Entidade-Relacionamento Diagrama de Fluxo de Dados Pseudocdigo Fluxograma

    Abordagem de Modelo de Ferramenta Orientada a Objeto:

    Linguagem de Modelagem Unificada (UML)

    1.2. Qualidade dentro do Esforo de Desenvolvimento

    Conforme mencionado anteriormente, a qualidade amente que influencia todo engenheiro de software. Focando naqualidade em todas as atividades de engenharia de software,reduz-se custo e melhora-se o tempo de desenvolvimento pelaminimizao de um novo trabalho de correo. Para procederdessa forma, um engenheiro de software tem que definirexplicitamente que qualidade de software ter um conjunto de

    atividades que asseguraro que todo produto de trabalho daengenharia de software exibe alta qualidade, fazer controle dequalidade e atividades garantidas, o uso de mtricas paradesenvolver estratgias para melhorar o produto de software e oprocesso.

    1.2.1. O que qualidade?

    Qualidade a caracterstica total de uma entidade parasatisfazer necessidades declaradas e implcitas. Essascaractersticas ou atributos tm que ser mensurveis de modo

    que possam ser comparados por padres conhecidos.1.2.2. Como definimos qualidade?

    Trs perspectivas so usadas na compreenso daqualidade, especialmente, olhamos para a qualidade do produto,do processo e no contexto do ambiente de negcios.

    Qualidade do Produto

    Significa coisas diferentes para cada pessoa. relativopara uma pessoa analisar qualidade. Para os usurios finais, osoftware tem qualidade se fornecer o que desejam e quandodesejam o tempo todo. Tambm julgam baseados na facilidade deusar e de aprender como us-lo.

    Normalmente avaliam e categorizam com base emcaractersticas externas, tal como, nmero de falhas por tipo.Falhas podem ser categorizadas como: insignificantes,importantes e catastrficas. Para que outros possam desenvolvere manter o software, estes devem ficar de olho nas caractersticasinternas em vez das externas. Exemplos que incluem erros efalhas encontradas durante as fases de anlise de requisitos,

    design, e codificao so normalmente feitos anteriormente aocarregamento dos produtos para os usurios finais.

    8211

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    12/144

    Como engenheiros de software, devemos construirmodelos baseados em como os requisitos dos usurios externossero relacionados com os requisitos internos dosdesenvolvedores.

    Qualidade do Processo

    Existem vrias tarefas que afetam a qualidade dosoftware. s vezes, quando uma tarefa falha, a qualidade dosoftware falha. Como engenheiros de softwares, devemosvalidar a qualidade no processo de desenvolvimento do software.Regras de processo sugerem que pela melhoria do processo dedesenvolvimento do software, tambm h melhora da qualidadedo produto resultante. Algumas regras de processo sodemonstradas abaixo:

    Capability Maturity Model Integration(CMMI). Foramformulados pelo Software Engineering Institute (SEI). umprocesso meta-modelo que baseado em um conjunto desistemas e competncias da engenharia de software que devemexistir dentro de uma organizao. Como a mesma atingediferentes nveis de capacidade e maturidade desses processosde desenvolvimento.

    ISSO 9000:2000 para Software. um padro genrico,aplicado para qualquer organizao que queira melhorar aqualidade global dos produtos, sistemas ou servios queproporciona.

    Software Process Improvement e Capabi l i tyDetermination (SPICE). um padro que define um conjunto derequisitos para avaliao do processo de software. O objetivodesse padro auxiliar organizaes a desenvolver uma anliseobjetiva da eficcia de qualquer processo de software definido.

    Nessa perspectiva, qualidade visualizada em termos deprodutos e servios sendo proporcionado pelo negcio em que osoftware usado. Melhorando a qualidade tcnica dos

    processos de negcio, agrega-se valor ao negcio, por exemplo,valor tcnico do software traduz o valor do negcio. Tambm importante medir o valor do software em termos de terminologiasde negcio, tal como, quantos pedidos de venda foramprocessados hoje?, valor do dlar sobre o retorno em cima dosinvestimentos (ROI), etc. Se o software no agrega valor aonegcio, qual a necessidade de t-lo em primeiro lugar?

    1.2.3. Como endereamos os pontos importantes sobrequalidade?

    Podemos enderear os pontos importantes sobrequalidade em:

    8212

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    13/144

    1. Uso de padres de Qualidade. Padres de qualidade so umconjunto de princpios, procedimentos, metodologias e regras,para resumir, sobre qualidade no processo, tais como, CMMI,ISO 9000:2000 para Software e SPICE.

    2. Compreender pessoas envolvidas no processo de

    desenvolvimento incluindo usurios finais e participantes.Sustenta um ambiente de colaborao e comunicao efetiva.

    3. Compreender as tendncias sistemticas na naturezahumana. Tal como, as pessoas tendem a ser contrrias ao riscoquando existe uma perda potencial, so indevidamenteotimistas em seus planos e projees, e preferem usarjulgamentos intuitivos ao invs de modelos quantitativos.

    4. Engajamento para a qualidade. Uma mente focada sobrequalidade necessria para descobrir erros e defeitos assim que

    possam ser endereados imediatamente.5. Requisitos de usurios administradores porque mudaro aolongo do tempo. Requisitos a base, definindo as caractersticasda qualidade de software.

    1.3. Tcnicas e Garantias de Qualidade de Software

    Garantia de qualidade de Software um subconjunto daengenharia de software que assegura que todos os produtos detrabalho sejam realizados, e que cumpram com as exigncias epadres estabelecidos pelos usurios. Considera-se como umadas atividades mais importantes que aplicada durante todo oprocesso do desenvolvimento do software. O objetivo detectardefeitos antes do software ser entregue como um produtoacabado para o usurio final. Isto abrange uma aproximaoeficaz da gerncia de qualidade, tecnologia de engenharia desoftware (mtodos e ferramentas), tcnicas formais de reviso,vrias estratgias de teste, controle de documentao desoftware e alteraes feitas, um procedimento para assegurar aconformidade com os padres de desenvolvimento de software,e um mecanismo para mensur-los e document-los.

    1.3.1. Qualidade de Software

    Um software possui qualidade se ele estiver ajustado parauso, isto , se estiver trabalhando corretamente. Para que eletrabalhe corretamente, ele deve estar em conformidade com osrequisitos funcionais e de performance caractersticas externasdos usurios), padres explicitamente documentados dedesenvolvimento (padres de qualidade), e caractersticasimplcitas (caractersticas internas aos desenvolvedores) queso esperadas por todo desenvolvimento profissional desoftware.

    Trs pontos importantes enfatizados para definir aqualidade do software.

    8213

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    14/144

    1. Requisitos de Software so a base para a qualidade dosoftware. necessrio explicitar, especificar e priorizar.

    2. Padres definem um de critrios de desenvolvimentoque iro mostrar a maneira com a qual o software ser

    desenvolvido.

    3. Caractersticas implcitas devero ser identificadas edocumentadas; elas influenciam na maneira de como osoftware ser desenvolvido assim como sua manutenibilidade.

    1.3.2. Caractersticas para uma Boa Engenharia de Software

    Para definir uma boa engenharia de software, d umaolhada nas caractersticas especficas que o software apresenta.Algumas delas esto enumeradas abaixo:

    Usabilidade. a caracterstica do software de apresentarfacilidades entre a comunicao dos usurios com o sistema. Portabilidade. a capacidade do software ser executado emdiferentes plataformas e arquiteturas. Reusabilidade. a habilidade do software de se transferir de umsistema para outro. Manutenibilidade. a habilidade do software de se envolver eadaptar-se s alteraes em um curto espao de tempo. caracterizado pela fcil atualizao e manuteno. Dependncia. a caracterstica do software ser confivel e desegurana

    Eficincia. a capacidade do software utilizar os recursos commaior eficincia.

    1.3.3. Atividades da Garantia de Qualidade de Software

    Garantia de Qualidade de Software composta por umavariedade de atividades com o objetivo de construir software comqualidade. Isto envolve dois grupos de desenvolvedores e aequipe de SQA (Software Quality Assurance). A equipe de SQAtem responsabilidade em garantir plenamente qualidade,supervisionar, manter, analisar e reportar defeitos. As atividades

    envolvidas so as seguintes:1. A equipe de SQA prepara o Plano de SQA. Isto se d durante afase de planejamento de projeto. Identificam-na:

    Avaliao a ser executada; Auditorias e revises a serem executadas; Padres que devem ser aplicados; Procedimentos de erros reportados e monitorados; Documentos que devem ser produzidos; e Conjunto de respostas que se fizer necessrio.

    2. A equipe de SQA participa na descrio do processo dedesenvolvimento de software. O time de desenvolvedores

    8214

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    15/144

    escolhe o processo de desenvolvimento e a equipe de SQA deveverificar se ele se enquadra na poltica organizacional e nospadres de qualidade

    3. A equipe de SQA revisa as atividades de engenharia desoftware empregadas pelo time de desenvolvedores para checar

    a conformidade com o processo de desenvolvimento de software.Eles monitoram e seguem desvios do processo dodesenvolvimento do software. Documentam-no e asseguram-se de que as correes sejam feitas.

    4. A equipe de SQA rev o trabalho para verificar se estoconforme o padro definido. Eles monitoram e marcam defeitos efalhas encontrados em cada trabalho.

    5. A equipe de SQA assegura-se que os desvios nas atividades desoftware e no processo de produo estejam seguramentebaseados na definio de procedimentos e padres de operao

    6. A equipe de SQA envia desvios e desconformidades aospadres para os gerentes ou a quem for de interesse.

    1.3.4. Tcnicas Formais de Reviso

    Produtos de trabalho so as sadas esperadas comoresultado da execuo de tarefas no processo dedesenvolvimento de software. Esses resultados contribuem parao desenvo lv imento de so f tware com qua l idade .Conseqentemente, devem ser mensurados e verificados

    novamente se vo ao encontro das exigncias e dos padres. Asalteraes nos produtos de trabalho so significativas; elaspodem ser monitoradas e controladas. A tcnica de checar aqualidade dos produtos de trabalho a tcnica formal de reviso.Formal Technical Reviews (FTR) so executadas em vriospontos do processo do desenvolvimento do software. Ela servepara descobrir erros e defeitos que podem ser eliminados antesdo software ser enviado para o usurio final. Especificamente,seus objetivos so:

    1. Descobrir erros em funes, na lgica ou na execuo paratoda a representao do software;2. Verificar se o software sob a reviso encontra-se de acordocom os requisitos do usurio;3. Assegurar-se que o software esteja de acordo com os padresdefinidos;4. Conseguir que o software seja desenvolvido de uma maneirauniforme; e5. Desenvolver projetos mais gerenciveis.

    Um guia geral de conduo das tcnicas formais dereviso est listado abaixo.

    Revisar o produto de trabalho e NO o desenvolvedor doproduto de trabalho. O objetivo da reviso e descobrir erros edefeitos para melhorar a qualidade do software. O tom da reviso

    8215

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    16/144

    pode ser brando, porm construtivo. Planejar e cumprir a agenda. Revises no devem durar mais deduas horas. Minimizar os debates e discusses. inevitvel que osproblemas sejam levantados e isso no cause efeito nas pessoas.Lembre a todos que no hora de resolver os problemas quesero apenas documentados, uma outra reunio deve seragendada para resolv-los. Indique reas de problema, mas no s tente resolv-las.Mencione e esclarea reas de problema. Entretanto, no horade resolver problemas, devero ser resolvidos em uma outrareunio. Tome nota. uma boa prtica tomar nota do que foi dito e suasprioridades para que elas possam ser vistas por outros revisores.Isto ajudar a esclarecer os defeitos e aes a serem tomadas. Mantenha o nmero dos participantes a um mnimo e insista em

    preparar-se para a reviso. Escrever comentrios e observaespelos revisores uma boa tcnica. Fornea uma lista de verificao para o produto de trabalho que provvel ser revista. A lista de reviso prov uma estrutura queconduza a reviso. Isto tambm ajuda os revisores a manterem ofoco na questo.Programe as revises como parte do processo dedesenvolvimento de software e assegure-se de que os recursossejam fornecidos para cada revisor. Preparao previnterpretaes em uma reunio. Isto tambm ajuda os revisores amanterem o foco na questo. Sumrio da reviso. Verifica a eficcia do processo da reviso.

    Duas tcnicas formais de reviso do produto de trabalhousadas na indstria so Fagan's Inspection Method eWalkthroughs.

    1.3.5. Mtodo de Inspeo de Fagan

    Introduzido por Fagan em 1976 na IBM. Originalmente foiutilizado para verificar cdigos de programas. Entretanto, pode serestendido para incluir outros produtos de trabalho como tcnicas

    de documentos, modelo de elementos, projetos de cdigos edados etc. Isto gerenciado por um moderador que responsvelpor supervisionar a reviso. Isto requer uma equipe de inspetoresdesignados a verificar se as regras do produto de trabalho vo deencontro lista de interesse preparada. mais formal que owalkthrough. A seguir esto descritas regras determinadas na qualcada participante dever aderir:

    As inspees so realizadas em um nmero de pontos noprocesso do planejamento do projeto e do desenvolvimento dossistemas.

    Todas as classes com defeito so documentadas e os produtosdo trabalho so inspecionados no somente a nvel lgico, deespecificaes ou de funes de erros. A inspeo realizada por colegas em todos os nveis exceto o

    8216

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    17/144

    chefe. As inspees so realizadas em uma lista prescrita dasatividades. As reunies de inspeo so limitadas a duas horas. As inspees so conduzidas por um moderador treinado.

    Inspetores so designados a especificar regras para aumentar aeficcia. As listas de verificao dos questionrios a seremperguntados pelos inspetores so usadas para definir tarefas eestimular a encontrar defeitos. Os materiais so inspecionadosminuciosamente para que seja encontrado o mximo nmero depossveis erros. Estatsticas com os tipos de erros so vitais, so utilizadas paraobter anlises de uma maneira similar anlise financeira.

    Conduzir inspees requer muitas atividades. Elas estocategorizadas a seguir:

    Planejamento. O moderador deve se preparar para a inspeo.Decide quem sero os inspetores e as regras que estes devemobedecer, quem e quando desempenharo seus papis edistribuir a documentao necessria. Uma rpida apresentao. 30 minutos de apresentao doprojeto dos inspetores o suficiente. Isto pode ser omitido setodos estiverem bem familiarizados com o projeto. Preparando. Cada inspetor ter de 1 a 2 horas sozinho parainspecionar o produto de trabalho. Ele ir executar as regraspassadas a ele com base na documentao provida pelomoderador. Ele ir tentar descobrir defeitos no produto de

    trabalho. Ele no dever reparar defeitos ou criticar odesenvolvedor do produto de trabalho. Realizando a reunio. Os participantes das reunies soinspetores, moderadores e desenvolvedores do produto detrabalho. Os desenvolvedores do produto de trabalho estopresentes para explicar o produto de trabalho, e responder sperguntas que os inspetores fizerem. Nenhuma discusso se odefeito ou no real permitida. Uma lista de defeitos deve serproduzida pelo moderador. Refazendo o produto de trabalho. A lista de defeitos deve seratribuda a uma pessoa para repar-la. Normalmente, esta o

    desenvolvedor do produto de trabalho. Acompanhando os reajustes. O moderador assegura-se que osdefeitos nos produtos de trabalho sejam endereados esolucionados. Mais tarde este deve ser inspecionado por outroinspetor. Realizando uma reunio ocasional de anlise. Isto opcional,momento onde dada a possibilidade aos inspetores deexpressarem sua viso pessoal sobre erros e melhorias. A nfase dada maneira que a inspeo foi feita.

    1.3.6. Walkthrough

    O walkthrough menos formal que a inspeo. Aqui, oproduto de trabalho e sua documentao correspondente soentregues para um time de revisores, normalmente em torno de 3

    17

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    18/144

    pessoas, onde comentrios de sua exatido so apresentados.Ao contrrio da inspeo onde um o moderador, odesenvolvedor do produto de trabalho coordena o walkthrough.Um escrivo tambm deve estar presente para documentar a listade aes. Uma lista de aes deve ser feita a fim de melhorar a

    qualidade do produto final a qual inclui ajustes dos defeitos,resolues dos problemas etc.

    Alguns passos devem ser seguidos para obter sucesso nowalkthrough. Eles esto listados abaixo:

    Nenhum gerente deve estar presente. Enfatizar que o walkthrough para deteco de erros e no paracorreo. Manter o interesse do grupo. Nenhuma contagem ou atribuio de nota. Criticar o produto; no a pessoa.

    Sempre documentar a lista de aes.

    Conduzir o walkthrough, similar inspeo, requer muitasatividades. Elas esto categorizadas como se segue:

    Antes do walkthrough

    o O desenvolvedor do produto de trabalho agenda owalkthrough, preferivelmente, com um dia deantecedncia ou dois no mximo.o Distribuir o material necessrio para o produto detrabalho dos revisores.o Pede-se especificamente que cada revisor tragapelo menos dois comentrios positivos dowalkthrough e um comentrio negativo sobre oproduto do trabalho.

    Durante o walkthrough

    o O desenvolvedor do produto de trabalho faz umarpida apresentao do seu produto de trabalho.Este passo pode ser ignorado caso os revisoresconheam bem o produto de trabalho.

    o olicitar comentrios aos revisores. s vezes,problemas so levantados e apresentados, masno devem ser solucionados durante owalkthrough. Os problemas devero ser includosem uma lista de aes.o Uma lista de aes deve ser produzida at o fim dowalkthrough.

    Aps o walkthrough

    o O desenvolvedor do produto de trabalho recebe alista de aes.

    o Pede-se para enviar os estados das aes com o

    8218

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    19/144

    apresentadas na lista de aes.o Possivelmente, um outro walkthrough deveser agendado.

    1.4. Documentao no Esforo de Desenvolvimento

    1.4.1. O que documentao?

    um conjunto de documentos ou informaes do produtoque descrevem o sistema. Cada documento desenhado paraexecutar uma funo especfica, como:

    REFERNCIA, como por exemplo, especificaes tcnicas oufuncionais.

    INSTRUCIONAL, como por exemplo, tutoriais, demonstraesou prottipos.

    MOTIVACIONAL, como por exemplo, brochuras,demonstraes ou prottipos.

    H vrios tipos de documentao e informaes funcionais doproduto. Alguns so citados abaixo:

    Caractersticas e Funes do Sistema Sumrio Gerencial e do Usurio Manual do Usurio Manual de Administrao do Sistema Vdeo Multimdia Tutoriais Demonstraes Guia de Referncia Guia de Referncia Rpida Referncias Tcnicas Arquivos de Manuteno do Sistema Modelos de Teste do Sistema Procedimentos de Converso Manual de Operaes/Operador

    Help ON-Line Wall Charts Layout de teclado ou Templates Jornais

    Bons documentos no geram sistemas complicados. Noentanto, eles podem ajudar de outra forma. A tabela seguintemostra como a documentao ajuda no processo dedesenvolvimento de software.

    8219

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    20/144

    Existem dois principais propsitos da documentao.Especificamente, eles: Fornecem um argumento racional e permanente para aestrutura do sistema ou comportamento atravs dos manuais dereferncia, guia do usurio e documentos de arquitetura dosistema. Servem como documentos transitrios que so parte deuma infra-estrutura envolvida em uma execuo de um projetoreal como: cenrios, documentao do projeto interno, relatriode reunies e problemas.

    Exerccios:

    1. Discuta a viso em camadas tendo em vista nogerenciamento e desenvolvimento do software.

    2. Qualidade do software a caracterstica para satisfazer

    necessidades declaradas e implcitas do contratante. Comomensurar estas caractersticas que do modo que possa sercomparada a padres conhecidos?

    3. Pesquisa na Internet exemplos de documentao desoftware como: a) Manual do Usurio, b) Manual deAdministrao do Sistema, c) Vdeo, Multimdia, Tutoriais, d)Demonstraes, e) Arquivos de Manuteno do Sistema, f)Manual de Operaes/Operador, g) Help ON-Line, Wall Charts.

    4. Apresente um algoritmo (em fluxograma ou em passoslgicos) do fluxo de desenvolvimento do software. Apresente asfases e atividades importantes para garantir a qualidade dosoftware.

    8220

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    21/144

    5. Documente o cdigo abaixo.

    Desafio:

    6. A equipe de desenvolvimento responsvel pelaconstruo do software que ir dar suporte ao sistema deinformao solicitado. Em geral formado por: analista desistemas, projetista, programadores e testadores. Qual papel de

    cada um no processo de engenharia do software.

    2. INTRODUO PROGRAMAO DE COMPUTADORES

    2.1. O que uma linguagem de programao?

    Uma linguagem de programao uma tcnica decomunicao padronizada para se expressar instrues para umcomputador. Assim como os idiomas utilizados pelos sereshumanos, cada linguagem tem sua prpria sintaxe e gramtica.

    Linguagens de programao possibilitam ao programador

    especificar precisamente com quais dados o computador irinteragir, como estes dados sero gravados/transmitidos, eprecisamente quais aes sero tomadas de acordo com ascircunstncias.

    Existem diferentes tipos de linguagens de programaoque podem ser usadas para a criao de programas, mas,independente da linguagem utilizada, essas instrues sotraduzidas em linguagem de mquina, e podem ser entendidaspor computadores.

    2.2. Categorias das Linguagens de Programao

    2.2.1. Linguagens de Programao de Alto Nvel

    Uma linguagem de programao de alto nvel umalinguagem de programao que mais amigvel para o usurio,em alguns casos independente de plataforma, e que abstraioperaes de baixo nvel como acesso a memria. Umainstruo de programao pode ser traduzida em uma ou vriasinstrues de mquina por um compilador.

    Exemplos so Java, C, C++, Basic, Fortran

    2.2.2. Linguagens de Montagem de Baixo Nvel

    Linguagens de montagem so similares s linguagens de

    8221

    public class Documento {public static void main( String args[] ) {

    System.out.println( "Cdigo documentado!" ); {}

    }

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    22/144

    Este o ciclo de vida quando se tenta resolver umproblema no computador:

    Para entendermos ofuncionamento deste ciclo nasoluo de problemas no

    computador, vamos definirum problema exemplo queiremos resolver passo apasso enquanto discutimosas me todo log ias pa raresoluo de problemas emdetalhe.

    2.3.1. Definir o problema

    Geralmente, um programador recebe uma tarefa na formade um problema. Antes do programa poder ser projetado pararesolver um problema em particular, o problema deve, emprimeiro lugar, ser bem e claramente definido em termos dos seusrequisitos de entrada e sada.

    Um problema claramente definido j metade da soluo.Programao de computadores requer que o problema sejaprimeiro definido antes de se pensar em criar a soluo.Vamos definir o problema exemplo:Crie um programa que ir determinar o nmero de vezes que um

    nome aparece em uma lista.2.3.2. Analisar o problema

    Depois do problema ter sido definido adequadamente, omais simples e tambm o mais eficiente e efetivo meio de seresolver ser visualiz-lo atravs de uma representao clara eobjetiva.

    Geralmente, este passo se d com a quebra do problemaem sub-problemas menores e mais simples.Problema Exemplo:

    Determinar o nmero de vezes que um nome aparece emuma lista

    Entrada para o programa:Lista de nomes, nome que se deseja procurar

    Sada do programa:O nmero de vezes que o nome aparece em uma lista

    2.4. Projetar e representar o algoritmo

    Logo que o problema estiver sido claramente definido,podemos nos concentrar em desenvolver a soluo. Naprogramao de computadores, geralmente requerido queexpressemos a soluo passo a passo.

    8222

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    23/144

    Um Algoritmo uma especificao clara e no ambguados passos necessrios para se resolver o problema. Ele podeser expresso tanto em linguagem humana (Ingls, Tagalog ePortugus), como atravs de representao grfica comofluxograma ou atravs de pseudocdigo, que um meio termo

    entre a linguagem humana e a linguagem de programao.Dado o problema definido na seo anterior, como

    podemos expressar a soluo de uma maneira simples e quepossa ser entendida?

    Expressando a soluo atravs da linguagem humana:

    1. Obter a lista de nomes, vamos cham-la de NomeLista2. Obter o nome a ser procurado, vamos cham-lo deNomeChave3. Criar um contador, vamos cham-lo de Conta4. Pegar cada nome em NomeLista

    5. Se NomeChave for igual ao nome selecionado em NomeLista6. Adicionar 1 a Conta7. Repetir 4 at que todos os nomes j tiverem sido comparados8. Exibir o valor de Conta

    Expressando a soluo atravs de um fluxograma:

    Expressando a soluo atravs de pseudocdigo:

    23

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    24/144

    2.4.1. Smbolos do Fluxograma e o seu significado

    Um fluxograma uma ferramenta de projeto usada pararepresentar graficamente a lgica de uma soluo. Osfluxogramas, tipicamente, no mostram comandos de linguagem

    de programao. Ao invs disto, eles mostram o conceito emPortugus ou em notao matemtica.Aqui esto algumas dicas dos smbolos mais usados para a

    criao de fluxogramas. Pode-se utilizar quaisquer smbolosquando criar os seus fluxogramas, desde que use-os de maneiraconsistente.

    2.5. Codificar e Depurar

    Depois de construir o algoritmo, ser possvel criar o cdigofonte. Usando o algoritmo como base, o cdigo fonte pode serescrito usando a linguagem de programao escolhida.

    Na maioria das vezes, depois do programador ter escrito oprograma, este poder no estar funcionando 100% no incio. O

    programador deve corrigir o programa no caso de erros (tambmconhecidos como Erros de Compilao) que ocorrem no programa.Este processo chamado de depurao de erros (debug).

    8224

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    25/144

    Existem dois tipos de erros que os programadorespodero encontrar. O primeiro o erro em tempo de compilao eo outro o erro em tempo de execuo.

    Erro em tempo de compilao ocorre se h um erro desintaxe no cdigo. O compilador ir detectar o erro e o programanem mesmo compilar. Neste ponto, o programador estarinapto a criar um executvel que possa ser executado pelo

    usurio at que o erro seja corrigido.Esquecer um ponto-e-vrgula no final de uma instruo ouescrever um comando erroneamente, por exemplo, so erros emtempo de compilao. algo que o compilador pode detectarcomo sendo um erro.

    Compiladores no so perfeitos e ento no podemdetectar todos os erros em tempo de compilao. Isso especialmente verdadeiro para erros de lgica como asrepeties (loops) infinitos. Este tipo de erro chamado de erroem tempo de execuo.

    Por exemplo, a sintaxe do cdigo pode estar correta.Entretanto, ao seguir a lgica do cdigo, o mesmo pedao deinstruo executado vrias e vrias vezes, infinitamente. Nestecaso, os compiladores no so espertos o suficiente para pegartodos estes tipos de erro em tempo de compilao,conseqentemente, o programa compila corretamente em umarquivo executvel.

    Entretanto, quando o usurio final roda o programa, oprograma (ou mesmo o computador inteiro) congela devido auma repetio infinita. Outros tipos de erro em tempo deexecuo so: um valor errado a ser computado, uma instruoerrada a ser executada, etc.

    Exerccios:

    1. Escrevendo algoritmos: Dado o seguinte conjunto de tarefas,crie um algoritmo para realizar cada uma das tarefas abaixo.Escreva os algoritmos usando pseudocdigo ou fluxogramas.a) Assar pob) Acessar o computadorc) Obter a mdia de trs nmeros

    2. Com base a figura abaixo, defina um problema simples, faa aanlise de como o problema ser resolvido, represente oproblema em fluxograma e codifique em pseudocdigo(portugol).

    8225

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    26/144

    Desafio:

    Suponha que um certo instituto deseja fazer umapesquisa de opinio pblica. Os dados sero coletados nosbairros da vrias cidades. Os dados sero armazenados e

    devero ser processados para gerar os relatrios estatsticosda pesquisa. Construa um fluxograma de como ser oprocesso de coleta, processamento e resultados do sistema.

    8226

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    27/144

    3 Histrico da Linguagem Java

    3.1. Um pouco da histria

    Java foi criado em 1991 por James Gosling da Sun

    Microsystems. Inicialmente chamada OAK (Carvalho), emhomenagem uma rvore de janela do Gosling, seu nome foimudado para Java devido a existncia de uma linguagem com onome OAK.

    A motivao original do Java era a necessidade de umalinguagem independente de plataforma que podia ser utilizadaem vrios produtos eletrnicos, tais como torradeiras erefrigeradores. Um dos primeiros projetos desenvolvidosutilizando Java era um controle remoto pessoal chamado *7 (StarSeven).

    Ao mesmo tempo, a World Wide Web e a Internet foramganhando popularidade. Gosling achava que a linguagem Javapoderia ser usada para programao da Internet.

    3.2. O que a tecnologia Java?

    3.2.1. Uma linguagem de programao

    Como linguagem de programao, Java pode ser utilizadopara criar todos os tipos de aplicaes existentes, de programas

    de Inteligncia Artificial para Robs at programas paraaparelhos celulares.

    3.2.2. Um ambiente de desenvolvimento

    Como ambiente de desenvolvimento, a tecnologia Javafornece um grande conjunto de ferramentas: um compilador, uminterpretador, um gerador de documentao, ferramenta deempacotamento de classes de arquivos e outros.

    3.2.3. Um ambiente de aplicao

    Aplicaes de tecnologia Java so tipicamente programasde propsito geral que executam sobre uma mquina onde o JavaRuntime Environment instalado.

    8227

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    28/144

    3.2.4. Um ambiente de distribuio

    H dois ambientes de distribuio principais: Primeiro, oJRE, fornecido atravs do Java 2 Software Development Kit(SDK), contm um conjunto completo de arquivos de classespara todos pacotes de tecnologia Java. Outro ambiente dedistribuio o navegador web, ou seja, o browser. Osnavegadores web atuais fornecem interpretao tecnologia eambiente Java em tempo de execuo.

    3.3. Algumas caractersticas do Java

    3.3.1. Mquina Virtual Java

    A Mquina Virtual Java uma mquina imaginria que implementada atravs de um software emulador em umamquina real. A JVM prov especificaes de plataforma dehardware na qual compila-se todo cdigo de tecnologia Java.Essas especificaes permitem que o software Java seja umaplataforma independente pois a compilao feita por uma

    mquina genricaconhecida como JVM.O bytecode uma linguagem de mquina especial que

    pode ser entendida pela Mquina Virtual Java (JVM). Obytecode independente de qualquer hardware de computadorparticular. Assim, qualquer computador com o interpretador Javapode executar um programa Java compilado, no importandoem que tipo de computador o programa foi compilado.

    3.3.2. Garbage Collection

    Muitas linguagens de programao permitem aoprogramador alocar memria durante o tempo de execuo.Entretanto, aps utilizar a memria alocada, deve existir uma

    8228

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    29/144

    maneira para desalocar o bloco de memria de forma que osdemais programas a utilizem novamente. Em C, C++ e outraslinguagens o programador o responsvel por isso. Isso, svezes, pode ser difcil j que instncias podem ser esquecidas deserem desalocadas da memria pelos programadores e resultar

    no que chamamos de escapes da memria.Em Java, o programador no possui a obrigao da retirar

    uma varivel criada das reas de memria, isto feito por umaparte da JVM especfica que chamamos de Garbage Collection.O Garbage Collection o grande responsvel pela liberaoautomtica do espao em memria.

    Isso acontece automaticamente durante o tempo de vidado programa Java.

    3.3.3. Segurana do Cdigo

    Segurana do Cdigo alcanada em Java atravs daimplementao da Java Runtime Environment (JRE). A JREroda cdigos compilados para a JVM e executa o carregamentode classes (atravs do Class Loader), verificao de cdigo(atravs do verificador de bytecode) e finalmente o cdigoexecutvel.

    O Class Loader responsvel por carregar todas asclasses necessrias ao programa Java. Isso adiciona seguranaatravs da separao do namespace entre as classes do sistemade arquivos local e aquelas que so importadas pela rede. Issolimita qualquer ao de programas que podem causar danos, pois

    as classes locais so carregadas primeiro. Depois de carregartodas as classes, a quantidade de memria que o executvel irocupar determinada. Isto acrescenta, novamente, uma proteoao acesso no autorizado de reas restritas ao cdigo pois aquantidade de memria ocupada determinada em tempo deexecuo.

    Aps carregar as classes e definir a quantidade dememria, o verificador de bytecode verifica o formato dosfragmentos de cdigo e pesquisa nestes fragmentos por cdigosilegais que possam violar o direito de acesso aos objetos.Depois que tudo isso tiver sido feito, o cdigo finalmente

    executado.

    3.4. Fases do Programa Java

    A figura seguinte descreve o processo de compilao eexecuo de um programa Java.

    8229

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    30/144

    O primeiro passo para a criao de um programa Java escrever os programas em um editor de texto. Exemplos deeditores de texto que podem ser utilizados: bloco de notas, vi,emacs, etc. Esses arquivos so armazenados no disco rgido coma extenso .java.

    Aps o programa Java ter sido criado e salvo, compile oprograma utilizando o Compilador Java. A sada desse processo

    um arquivo de bytecode com extenso .class.O arquivo .class ento lido pelo Interpretador Java que

    converte os bytecodes em linguagem de mquina do computador

    que se est usando.

    Exerccios:

    1. O que a tecnologia Java inovou em relao as

    tecnologias j existentes como C++, Delphi, Visual Basic?2. Com base a figura abaixo, escreva um fluxograma

    das fases de implementao de um programa em Java.

    Especifique os desvios lgicos e desvios com repeties.3. Com vista no desepenho em tempo de execuo,

    compare a execuo de uma aplio em Java e outra em C++ no

    ambiente Linux.

    Desafio:

    Pesquise e relacione os sistemas middlewares (mquinas

    virtuais) existentes para linguagens e aplicativos. Descreva a

    funo de cada um.

    8230

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    31/144

    4 Instalao do Java e do NetBeans

    4.1. Instalando Java no Ubuntu

    Passo 1: No diretrio onde foi efetuado o download dos

    instaladores.

    Passo 2: Antes de executar o instalador, assegure-se de que oarquivo seja um executvel. Para tanto, pressione o boto direito

    do mouse no cone do instalador, e em seguida selecione

    Properties. Selecione na aba Permissions, e ento marque a

    opoExecute. Feche a janela.

    Passo 3: Duplo-clique no arquivo jdk-1_5_0_07-linux-i586.bin.A caixa de dilogo abaixo ser mostrada. Pressione o boto Run

    in Terminal.

    8231

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    32/144

    No console ser mostrado o contrato de licena dosoftware.

    Pressione ENTER at ser mostrada a pergunta: Do youagree to the above license terms?[yes or no]. Caso concordecom os termos apresentados digite a palavra yes e pressione a

    tecla ENTER. Aguarde que o instalador termine dedescompactar e instale o Java.

    Passo 4: Devemos um caminho de pesquisa a fim de permitir aexecuo de comandos java em qualquer local. Para isto,entraremos na pasta /usr/local/bin. Digitando:

    Para criar os links simblicos para os comandos, tecle:

    sudo ln -s /usr/java/jdk1.5.0_07/bin/* .

    4.2. Instalando NetBeans no Ubuntu

    Passo 1: V para a pasta onde estiver o instalador doNetBeans.

    Passo 2: Antes de executar o instalador, assegure-se deque o arquivo seja executvel. Para tanto, utilize o boto direitodo mouse no cone do instalador e, em seguida selecione

    Properties. Selecione a aba Permissions, e marque a opoExecute. Encerre a janela.

    8232

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    33/144

    Passo 3: Duplo-clique no arquivo de instalao do NetBeans.Pressione o boto Run in Terminal.

    Ser mostrada uma caixa de dilogo do NetBeans 5.5.Pressione o boto Next >.

    Na prxima janela o termos da licena sero mostrados,caso concorde selecione a opo I accept the terms in thelicense agreement, e ento pressione o boto Next >.

    Modifique o nome do diretrio para: /usr/java/netbeans-

    5.5, ento pressione o boto Next >.

    8233

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    34/144

    Na pasta do JDK, selecione /usr/java/jdk1.5.0_07, e entopressione o boto Next >.

    A prxima caixa de dilogo mostra apenas informaes

    sobre o NetBeans que voc est instalando. Pressione o botoNext >. Aguarde o NetBeans terminar o processo de instalao.

    Pressione o boto Finish para completar a instalao.

    Passo 4:A fim de possibilitar a execuo do NetBeans a partir dequalquer pasta no computador, precisamos criar um caminho depesquisa. Para isso, entramos na pasta :/usr/local/bin. com ocomando:

    cd /usr/local/bin

    Crie um caminho de pesquisa para o NetBeans, digitando:

    sudo ln -s /usr/java/netbeans-5.5 .

    8234

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    35/144

    possvel executar o NetBeans a partir de qualquer pasta,digitando:

    netbeans &

    Exerccios:

    1. Baixe da Internet e instale o sistema de desenvolvimentojava (J2SDK) no ambiente Windowns. Edite (usando o editorpadro - NotePad), compile e execute (usando linha de comando CMD) o programa Wello World.2. Baixe da Internet e instale o sistema de desenvolvimentojava (J2SDK) no ambiente Linux. Edite (usando o editor padro vi ou pico, etc), compile e execute (usando linha de comando doterminal console) o programa Wello World.

    3. Baixe e instale no NetBeans no ambiente Windonws eLinux. Teste alguns exemplos.

    8235

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    36/144

    5. PRIMEIRO PROGRAMA JAVA COM A IDE NETBEANS

    Antes de explicar o que o programa significa, vamosescrev-lo e execut-lo.

    5.1 Utilizando a console e um editor de texto

    Neste exemplo utilizaremos um simples editor de texto,que pode ser o gedit do Linux, para editar o cdigo fonte. Emseguida ser necessrio abrir uma janela terminal para compilar eexecutar os programas.

    Passo 1: executar um editor de texto

    Para iniciar um editor de texto no Linux selecioneApplications Accessories Text Editor.

    Passo 2: Abrir a janela de console

    Para abrir o terminal no Linux, selecione Applications Accessories Terminal.

    Passo 3: Escrever as instrues utilizando o Editor de Texto

    Digite as seguintes instrues no editor de textos:

    Passo 4: Salvar o programa Java

    Chamaremos o programa de "Hello.java" e o colocaremos

    em uma pasta denominada "myJavaPrograms".Caso esta pasta no tenha sido criada, retorne janela determinal aberta e insira as seguintes instrues:

    Para o Linux:

    $ md myJavaPrograms

    Retorne ao Editor de textos e salve o programa. Para abrira caixa de dilogo salvar selecione a opo "File" localizada nabarra de menus e depois clique na opo "Save".

    Selecione a nova pasta criada como myJavaProgramspara entrar nela. A pasta deve estar vazia porque ainda nosalvamos nada dentro dela.

    8236

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    37/144

    Na caixa de texto "Name", digite o nome do programa(Hello.java), e depois clique no boto salvar.

    Aps salvar o arquivo observe que o ttulo da janela mudoude "Untitled" para "Hello.java", caso deseje alterar novamente oarquivo basta edit-lo e depois salv-lo novamente clicando em

    File Save.

    Passo 5: Entrar na pasta que contm o programa

    O prximo passo deve ser o de compilar o programa.Inicialmente, precisamos entrar na pasta que o contm. Retorne janela do terminal.

    Em Linux:Normalmente, quando abrimos uma janela terminal, ela vai

    diretamente para sua pasta home (identificada por $). Para ver o

    que tem dentro do diretrio digite ls (LS em minscula,significando "List Sources") e pressione ENTER. Isso far comque sejam listados os arquivos e pastas da pasta home.

    Verifique a existncia de uma pasta chamada"myJavaPrograms", criada a pouco, sendo esta o local em que foisalvo o programa "Hello.java". Mudaremos o contexto para estapasta.

    Para entrar nesta pasta devemos utilizar o comando: cd[nome da pasta]. O comando "cd" significa "Change Directory".Digitaremos:

    $ cd myJavaPrograms

    Agora que estamos dentro da pasta onde o arquivo doprograma est, poderemos ento compillo.

    Certifique-se de que o arquivo est realmente dentrodesta, executando o comando ls (LS em minscula) novamente.

    Passo 6: Compilar o programa

    Para compilar o programa, utilizamos o comando: javac[Nome do Arquivo]. Ou seja:

    javac Hello.java

    Durante a compilao, criado o arquivo: [Nome doArquivo].class, neste caso, Hello.class, que contm o cdigoem linguagem de mquina (chamado de bytecode).

    Passo 7: Executar o programa

    Assumindo que no ocorreu problemas na compilao(caso tenha ocorrido qualquer problema refaa os passos

    realizados), estamos prontos para executar o programa.Para executar o programa, utilizamos o comando: java[nome do arquivo sem a extenso].

    No caso do exemplo, digite:8237

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    38/144

    java Hello

    Veremos na mesma tela, em que foi executado ocomando, a seguinte mensagem:

    Hello world!

    5.2 Erros

    Vimos um pequeno programa Java, geralmente noencontraremos qualquer problema para compilar e executaresses programas, entretanto nem sempre este o caso, comomencionamos na primeira parte deste curso, ocasionalmenteencontramos erros durante esse processo.

    Como mencionamos antes, h dois tipos de erros: oprimeiro pode ocorrer durante a compilao, chamado de erro de

    sintaxe, o segundo pode ocorrer durante a execuo, chamadoruntime error.

    5.2.1 Erros de Sintaxe

    Os erros de sintaxe normalmente so erros de digitao,ocasionados pelo programador que pode ter se equivocado edigitar uma instruo errada, ou por esquecimento de algumaparte da instruo, por exemplo, um ponto e vrgula. OCompilador tenta isolar o erro exibindo a linha de instruo emostrando o primeiro caractere incorreto naquela linha,

    entretanto, um erro pode no estar exatamente neste ponto.Outros erros comuns so a troca de letras, troca de letrasmaiscula por minscula (a linguagem Java completamentecase-sensitive, ou seja, o caractere "a" completamentediferente do caractere "A", e o uso incorreto da pontuao.

    Vamos retornar ao exemplo, o programa Hello.java.Intencionalmente, escreveremos a palavrachave "static" deforma errada e omitiremos o ponto-e-vrgula em uma instruo ea deixaremos errada.

    Salve o programa e execute os passos necessrios paracompil-lo. Observe a mensagem de erro gerada ao se tentarcompilar novamente o programa na imagem da pgina seguinte :

    8238

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    39/144

    A primeira mensagem de erro sugere que existe um errona linha 6 do programa apontado para a palavra void, entretantoesta palavra est correta. O erro na palavra anteriorstatict quedeve ser digitada como static.

    A segunda mensagem de erro sugere que faltou umponto-e-vrgula na linha 10, entretanto, esta contmsimplesmente o comando de fechar o bloco do mtodo main. Oerro est exatamente na linha anterior.

    Como regra, ao encontrar muitas mensagens de errosdevemos corrigir o primeiro erro da lista e tente novamente

    compilar o programa. Deste modo reduziremos o nmero total demensagens de erro dramaticamente, pois podem existir o quechamamos de erros derivados, ou seja, um erro que tem porcausa a instruo anterior.

    5.2.2 Erros em tempo de execuo (Erros de run-time)

    Os erros em tempo de execuo so erros que noaparecero at que tentemos executar o programa. Osprogramas so compilados com sucesso, mas apresentarorespostas erradas, que podem ter como causa se o programador

    no obedeceu uma lgica coerente ou no caso em erro deestruturas do programa.

    5.3. Usando NetBeans

    Construmos o programa sem utilizar nenhum recursosofisticado, iremos aprender como fazer todo o processo daseo anterior utilizando uma IDE.

    Nesta parte da lio utilizaremos o NetBeans que umAmbiente de Desenvolvimento Integrado ( IDE - In tegratedDevelopment Environment).

    Um ambiente de desenvolvimento integrado umsoftware aplicativo que possui uma interface construtora, umeditor de texto, um editor de cdigo, um compilador e/ouinterpretador e um depurador.

    Passo 1 : executar o NetBeans

    Para executar o NetBeans por intermdio da linha decomando, abra uma janela terminal (Os passos para abrir ajanela terminal foram discutidos anteriormente) e digite:

    8239

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    40/144

    Passo 2: construir o projeto

    Depois de abrir aIDE NetBeans sermostrada a interfacegrfica GUI,conforme Figura.

    Ser mostradauma nova janela dedilogo, conformea figura.

    Clique em File New Project, depoisde fazer isso, umajanela de dilogoaparecer. Nestemomento deve-seclicar em "JavaApplication" e emseguida clicar noboto "Next >".

    8240

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    41/144

    Troque o local daaplicao clicandono boto"Browse...".

    Aparecer umajanela de dilogopara localizaodo diretrio. Dum clique duplo noseu diretriohome.

    O contedo daraiz do diretrioserapresentado. Dum clique duplono diretrioMYJAVAPROGR

    AMS e depois dum clique noboto "Open".

    Veja que alocalizao doprojeto mudoupara/home/florence/MYJAVAPROGRAMS.Finalmente, nocampo "CreateMain Class",digite "Hello",que ser o nomeda classeprincipal, e emseguida clique noboto "Finish".

    8241

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    42/144

    Passo 3: escrever os detalhes do programa

    Antes de escrever o programa descreveremos a janelaprincipal.

    Como mostrado na figura abaixo, automaticamente, o

    NetBeans cria um cdigo bsico para o programa Java.Poderemos adicionar as declaraes neste cdigo gerado. Nolado esquerdo da janela visualizamos uma lista de pastas earquivos que o NetBeans gerou antes de criar o projeto.

    T u d o s e e n c o n t r a d e n t r o d a s u a p a s t aMYJAVAPROGRAMS, onde foi configurado o local do projeto. Nolado direito, visualizamos o cdigo gerado.

    Modifique o cdigo gerado pelo NetBeans, por horaignoraremos as outras partes das instrues discutindo osdetalhes destas posteriormente. Insira a seguinte instruo:

    System.out.println("Hello world!");

    Isto significa que voc deseja que seja mostrada amensagem "Hello world!" na sada padro do computador, emseguida seja feito um salto de linha. Poderamos substituir estainstruo por duas equivalentes:

    System.out.print("Hello");System.out.println(" world!");

    O mtodo print() faz com que no seja provocado o salto delinha, utilizaremos para este exemplo a primeira instruo. Insiraesta instruo aps a linha de comentrio (que ser desprezadapelo compilador):

    8242

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    43/144

    //TODO code application logic here.

    Passo 4 : compilar o projetoPara compilar o programa, a partir do Menu Principal

    selecione Build Build Main Project, ou utilize a tecla de atalhoF11, ou utilize o boto de atalho para compilar o cdigo.

    43

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    44/144

    Passo 5: Executar o projeto

    Se no existir errosno programa,veremos amensagem desucesso na janelade sada.

    Para executar oprograma, cliqueem Run RunMain Project, ouutilize a tecla deatalho F6, ouutilize o boto deatalho paraexecutar oprograma.

    O resultado finaldo programaser mostradona janela desada.

    8244

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    45/144

    Exerccios:

    1. Baixe e instale no NetBeans no ambiente Windonws e Linux.Teste alguns exemplos inclusive o Hello World2. Melhore o Hello World. Utilizando o NetBeans crie uma classechamada [MeuNome], o programa dever mostrar comoresultado a mensagem: Welcome to Java Programming[MeuNome]!!!3. Utilizando o NetBeans, crie uma classe chamada TheTree. Oprograma dever mostrar as seguintes linhas na sada:Estou aprendendo a usar a IDE NetBeansMinha produtividade vai melhorarO desenvolvimento fica facilitado

    Desafio:

    Baixe da Internet e instale a IDE, bastante conhecida pelod e s e n v o l v e d o r e s J a v a , c h a m a d a E c l i p s e http://www.eclipse.org/. Instale no ambiente Win ou Linux.Execute o memo aplicativo Wello World. Descreva asdificuldades de manipulao entre o Eclipse e o NetBeans.

    45

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    46/144

    6. ENTRADA E SADA DE DADOS

    6.1. BufferedReader para capturar dados

    Primeiramente, utilizaremos a classe BufferedReaderdo

    pacote java.io para capturar dados de entrada atravs do teclado.Passos para capturar os dados digitados, tomemos por base oprograma visto na lio anterior:1. Digite a seguinte instruo no incio do programa:

    import java.io.*;

    2. Adicione as seguintes instrues no corpo do mtodo main:

    BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));

    3. Declare uma varivel temporria do tipo String para gravar osdados digitados pelo usurio e chame o mtodo readLine() quevai capturar linha por linha do que o usurio digitar. Isso deverser escrito dentro de um bloco try-catch para tratar possveisexcees.

    try {String temp = dataIn.readLine();} catch (IOException e) {System.out.println("Error in getting input");}

    Abaixo, segue o programa completo:

    import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;public class GetInputFromKeyboard {public static void main(String[] args) {BufferedReader dataIn = new BufferedReader(newInputStreamReader(System.in));String name = "";System.out.print("Please Enter Your Name:");try {name = dataIn.readLine();} catch (IOException e) {System.out.println("Error!");}System.out.println("Hello " + name +"!");}}

    Faremos uma anlise deste programa linha por linha:

    import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;

    8246

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    47/144

    Estas linhas acima mostram que estamos utilizando asclasses BufferedReader, InputStreamReadere IOExceptioncada qual dentro do pacotejava.io. Essas APIs ou Interfaces deProgramao de Aplicaes (Application Programming Interface)contm centenas de classes pr-definidas que se pode usar nosprogramas. Essas classes soorganizadas dentro do que chamamos de pacotes.

    Pacotes contm classes que se relacionam com umdeterminado propsito. No exemplo, o pacotejava.io contm asclasses que permitem capturar dados de entrada e sada. Estaslinhas poderiam ser reescritas da seguinte forma:

    import java.io.*;

    que importar todas as classes encontradas no pacotejava.io,deste modo possvel utilizar todas classes desse pacote noprograma.

    As prximas linhas:

    public class GetInputFromKeyboard {public static void main( String[] args ) {

    j foram discutidas na lio anterior. Isso significa quedeclaramos uma classe nomeada GetInputFromKeyboard e,em seguida, iniciamos o mtodo principal (main).

    Na instruo:

    BufferedReader dataIn = new BufferedReader(newInputStreamReader(System.in));

    declaramos a varivel dataIn do tipo BufferedReader. No sepreocupe com o significado da sintaxe, pois ser abordado mais frente.A seguir, declaramos a varivel name do tipo String:

    String name = "";

    na qual armazenaremos a entrada de dados digitada pelousurio. Note que foi inicializada como uma String vazia "". uma

    boa prtica de programao inicializar as variveis quandodeclaradas.Na prxima instruo, solicitamos que o usurio escreva umnome:

    System.out.print("Please Enter Your Name:");As seguinte linhas definem um bloco try-catch:try {name = dataIn.readLine();} catch (IOException e) {System.out.println("Error!");

    }

    que asseguram, caso ocorram excees sero tratadas.

    8247

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    48/144

    Falaremos sobre o tratamento de excees na ltima partedeste curso. Por hora, necessrio adicionar essas linhas parautilizar o mtodo readLine() e receber a entrada de dados dousurio.

    Em seguida:

    name = dataIn.readLine();

    capturamos a entrada dos dados digitados pelo usurio e asenviamos para a varivel String criada anteriormente. Ainformao guardada na varivel name.Como ltima instruo:

    System.out.println("Hello " + name + "!");

    montamos a mensagem final para cumprimentar o usurio.PRATICANDO!

    Digite (retire no nmero das linhas, coloque a identao edocumentao) o programa abaixo e execute. Veja a forma dedilogo. Observer a forma de converso de dados parseInt.

    1. import javax.swing.*;2.

    3. public class InputTest4. {5. public static void main(String[] args)6. {7. // get first input8. String name = JOptionPane.showInputDialog9. ("What is your name?");10.11. // get second input12. String input = JOptionPane.showInputDialog13. ("How old are you?");

    14.15. // convert string to integer value16. int age = Integer.parseInt(input);17.18. // display output on console19. System.out.println("Hello, " + name +20. ". Next year, you'll be " + (age + 1));21.22. System.exit(0);23. }24. }

    8248

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    49/144

    6.2. Classe Scanner para capturar dados

    Vimos uma maneira para obter dados de entrada atravsdo teclado. O JDK 5.0 lanou uma nova classe chamadaScanner que engloba diversos mtodos para facilitar este

    servio.Abaixo, segue o programa completo utilizando esta

    classe:

    import java.util.Scanner;public class GetInputFromScanner{public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("Please Enter Your Name:");String name = sc.next();

    System.out.println("Hello " + name +"!");}}

    Compare-o com o programa visto anteriormente.Percebe-se que fica mais simples conseguir a mesmafuncionalidade.

    Inicialmente, definimos a chamada ao pacote que contma classe Scanner:

    import java.util.Scanner;

    Em seguida, as instrues que define a classe e o mtodo main:

    public class GetInputFromScanner{public static void main(String[] args) {

    Definimos uma varivel, denominada sc, que ser criadaa partir da classe Scannere direcionada para a entrada padro:

    Scanner sc = new Scanner(System.in);

    De forma semelhante, mostramos uma mensagemsolicitando informao do usurio:

    System.out.println("Please Enter Your Name:");

    Utilizamos a varivel sc para chamarmos o mtodo quefar o recebimento dos dados digitados:

    String name = sc.nextLine();

    A classe Scannerpossui diversos mtodos que podemser utilizados para realizar este servio.Os principais mtodos que podemos utilizar, neste caso,

    so:8249

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    50/144

    Por fim, mostramos o resultado e encerramos o mtodomain e a classe:

    System.out.println("Hello " + name +"!");}

    }

    6.3. Utilizando a JOptionPane para receber dadosUm outro modo de receber os dados de entrada utilizar a

    classe JOptionPane, que pertence ao pacote javax.swing. AJOptionPane possui mtodos que conseguem criar caixas dedilogo na qual o usurio pode informar ou visualizar algumdado.Dado o seguinte cdigo:

    import javax.swing.JOptionPane;public class GetInputFromKeyboard {

    public static void main( String[] args ){String name = "";name = JOptionPane.showInputDialog("Pleaseenter your name");String msg = "Hello " + name + "!";JOptionPane.showMessageDialog(null, msg);

    }}

    Essa classe apresentar oseguinte resultado:

    8250

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    51/144

    A primeira instruo:

    import javax.swing.JOptionPane;

    mostra que estamos importando a classe JOptionPane do

    pacotejavax.swing.Poderamos, de forma semelhante, escrever estas

    instrues do seguinte modo:

    import javax.swing.*;

    A instruo seguinte:

    name = JOptionPane.showInputDialog("Please enteryour name");

    cria uma caixa de entrada que exibir um dilogo com umamensagem, um campo de texto para receber os dados dousurio e um boto OK, conforme mostrado na figura 1. Oresultado ser armazenado na varivel do tipo String name.

    Na prxima instruo, criamos uma mensagem decumprimento, que ficar armazenada na varivel msg:

    String msg = "Hello " + name + "!";

    Finalizando a classe, exibiremos uma janela de dilogoque conter a mensagem e o boto de OK, conforme mostrado

    na figura pgina anterior.

    JOptionPane.showMessageDialog(null, msg);

    Exerccios:

    1. Utilizando a classe BufferedReaderou Scanner, capture trspalavras digitadas pelo usurio e mostre-as como uma nicafrase na mesma linha. Por exemplo:Palavra 1: Meu nomePalavra 2: Palavra 3: JesusSada : Meu nome Jesus

    2. Utilizando a classe JOptionPane, capture palavras em trscaixas de dilogos distintas e mostre-as como uma nica frase.Por exemplo utilizaremos a figura da pgina a seguir :

    51

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    52/144

    3. Digite (sem nro de linha e identado), compile e execute oprograma abaixo. Estude o programa, diga o que faz e coloqueos comentrios em cada linha.

    1. import javax.swing.*; 2. 3. public class SimpleFrameTest

    4. {

    5. public static void main(String[] args)

    6. {

    7. SimpleFrame frame = new SimpleFrame();

    8. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    9. frame.show(); 10. }

    11. }

    12.

    13. class SimpleFrame extends JFrame

    14. {

    15. public SimpleFrame()

    16. {

    17. setSize(WIDTH, HEIGHT);

    18. }

    19.

    20. public static final int WIDTH = 300;

    21. public static final int HEIGHT = 200;

    22. }

    8252

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    53/144

    Resumo

    Esta unidade tem como meta principal apresentar asestruturas de controles bsicas como: desvioscondicionais simples (if/then) e compostos(if/then/else), e repeties condicionais com teste noincio (while/for) e no final (do/while) das estruturas da

    programao Java. Estas estruturas so importantesna especificao de algoritmos, pois de acordo com asentradas o fluxo de execuo do algoritmo pode seralterado. O principal objetivo desta unidade trabalharcom exemplos das estruturas de controle condicionalpara desenvolver a capacidade de abstrao naespecificao dos algoritmos de acordo com os

    problemas apresentados.

    Unidade2Unidade2Estruturas de controleEstruturas de controle

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    54/144

    Sumrio

    UNIDADE 2. ESTRUTURAS DE CONTROLE 5307 Estruturas de Deciso: if-then-else, switch 5608 Estruturas de Repetio: while, do-while, for 6209 Estruturas de Interrupo: break, continue, return 69

    8254

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    55/144

    Dicas de

    programao:1. Expressolgica umadeclarao quepossui um valorlgico. Issosignifica quea execuo destaexpresso deveresultar em umvalor true ou false.

    2. Coloque asinstrues deforma que elasfaam parte dobloco if. Porexemplo:if(expresso_lgica) {// instruo1;// instruo2;

    }

    7. ESTRUTURA DE CONTROLE DE DECISO IF-THEN-ELSESWITCH

    Estruturas de controle de deciso so instrues emlinguagem Java que permitem que blocos especficos de cdigo

    sejam escolhidos para serem executados, redirecionandodeterminadas partes do fluxo do programa.

    7.1. Declarao if

    A declarao ifespecifica que uma instruo ou bloco deinstrues seja executado se, e somente se, uma expressolgica for verdadeira. A declarao ifpossui a seguinte forma:

    if (expresso_lgica)instruo;

    ou:

    if (expresso_lgica) {instruo1;instruo2...}

    onde, expresso_lgica representa uma expresso ou varivellgica.

    Por exemplo, dado o trecho de cdigo:

    int grade = 68;if (grade > 60) Stem.out.println (Congratulations!");

    ou:

    int grade = 68;if (grade > 60) {

    System.out.println("Congratulations!");System.out.println("You passed!");}

    Instruo

    Simples

    Instrues

    em Bloco

    8256

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    56/144

    Dicas de programao:1. Para evitar confuso,sempre coloque ainstruo ou instruescontidas no

    bloco ifou if-else entrechaves {}.2. Pode-se terdeclaraes if-elsedentro de declaraesif-else, por exemplo:if (expresso_lgica) {if (expresso_lgica) {...}else {...

    }}else {...}

    7.2. Declarao if-else

    A declarao if-else usada quando queremos executardeterminado conjunto de instrues se a condio for verdadeirae outro conjunto se a condio for falsa.

    Possui a seguinte forma:

    if (expresso_lgica)instruo_caso_verdadeiro;elseinstruo_caso_falso;

    Tambm podemos escrev-la na forma abaixo:

    if (expresso_lgica) {instruo_caso_verdadeiro1;

    instruo_caso_verdadeiro2;...} else {instruo_caso_falso1;instruo_caso_falso2;...}

    Por exemplo, dado o trecho de cdigo:

    int grade = 68;

    if (grade > 60)System.out.println("Congratulations! You passed!");elseSystem.out.println("Sorry you failed");

    ou:

    int grade = 68;if (grade > 60) {System.out.print("Congratulations! ");System.out.println("You passed!");

    } else {System.out.print("Sorry ");System.out.println("you failed");}

    8257

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    57/144

    7.3. Declarao if-else-if

    A declarao else pode conter outra estrutura if-else. Estecascateamento de estruturas permite ter decises lgicas muitomais complexas.

    A declarao if-else-ifpossui a seguinte forma:

    if (expresso_lgica1)instruo1;else if(expresso_lgica2)instruo2;elseinstruo3;

    Podemos ter vrias estruturas else-if depois de umadeclarao if. A estrutura else opcional e pode ser omitida. Noexemplo mostrado acima, se a expresso_lgica1 verdadeira,

    o programa executa a instruo1 e salta as outras instrues.Caso contrrio, se a expresso_lgica1 falsa, o fluxo decontrole segue para a anlise da expresso_lgica2.

    Observe um exemplo da declarao if-else-ifno seguinte trechode cdigo:

    public class Grade {public static void main( String[] args ) {

    double grade = 92.0;if (grade >= 90) {

    System.out.println("Excellent!");} else if((grade < 90) && (grade >= 80)) {

    System.out.println("Good job!");} else if((grade < 80) && (grade >= 60)) {

    System.out.println("Study harder!");} else {

    System.out.println("Sorry, youfailed.");}

    }}

    Se esta for verdadeira, oprograma executa ainstruo2 e salta ainstruo3. Casocontrrio, se aexpresso_lgica2 falsa, ento a instruo3 executada.

    8258

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    58/144

    7.4. Erros comuns na utilizao da declarao if

    1. A condio na declarao ifno avalia um valor lgico.Por exemplo:

    // ERRADOint number = 0;

    if (number) {// algumas instrues aqui}

    a varivel numberno tem valor lgico.

    2. Usar = (sinal de atribuio) em vez de == (sinal deigualdade) para comparao. Por exemplo:

    // ERRADOint number = 0;

    if (number = 0) {// algumas instrues aqui}

    3. Escreverelseifem vez de else if.

    // ERRADOint number = 0;if (number == 0) {// algumas instrues aqui} elseif(number == 1) {

    // algumas instrues aqui}

    7.5. Declarao switch

    Outra maneira de indicar uma condio atravs de umadeclarao switch. A construo switch permite que uma nicavarivel inteira tenha mltiplas possibilidades de finalizao.A declaraoswitch possui a seguinte forma:

    switch (varivel_inteira) {

    case valor1:instruo1; //instruo2; // bloco 1... //break;

    case valor2:instruo1; //instruo2; // bloco 2... //break;

    default:

    instruo1 ; //instruo2; // bloco n... //break;

    }

    Notas:1. Ao contrrio dadeclarao if,mltiplasinstrues soexecutadas sem anecessidade daschaves quedeterminam oincio e trmino de

    bloco {}.2. Quando umcase forselecionado, todasas instruesvinculadas ao caseseroexecutadas. Almdisso, asinstrues doscase seguintes

    tambm seroexecutadas.3. Para prevenirque o programaexecute instruesdos outros casesubseqentes,utilizamos adeclarao breakaps a ltimainstruo de cada

    case.

    8259

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    59/144

    onde, varivel_inteira uma varivel de tipo byte, short, char ou int.valor1, valor2, e assim por diante, so valores constantes que estavarivel pode assumir.

    Quando a declarao switch encontrada, o fluxo decontrole avalia inicialmente a varivel_inteira e segue para o caseque possui o valor igual ao da varivel. O programa executa todasinstrues a partir deste ponto, mesmo as do prximo case, at

    encontrar uma instruo break, que interromper a execuo doswitch.

    Se nenhum dos valores case for satisfeito, o bloco defaultser executado. Este um bloco opcional. O bloco default no obrigatrio na declarao switch.

    7.6. Exemplo para switch

    public class Grade {public static void main(String[] args) {

    int grade = 92;switch(grade) {case 100:System.out.println("Excellent!");break;

    case 90:System.out.println("Good job!");break;

    case 80:System.out.println("Study harder!");break;

    default:System.out.println("Sorry, you failed.");

    }

    Dicas deProgramao:1. A deciso entreusar uma declaraoifou switch subjetiva. Oprogramadorpode decidir com

    base na facilidade deentendimento docdigo, entre outrosfatores.2. Uma declarao ifpode ser usada paradecisesrelacionadas aconjuntos,escalas de variveisou condies,

    enquanto que adeclarao switchpode ser utilizadapara situaes queenvolvam varivel dotipo inteiro. Tambm necessrio que ovalor de cadaclusula case sejanico, subseqentes,utilizamos a

    declarao breakaps a ltimainstruo de cadacase.

    8260

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    60/144

    Compile e execute o programa acima e veremos que oresultado ser:

    Sorry, you failed.

    pois a varivel grade possui o valor 92 e nenhuma das opescase atende a essa condio.

    Note que para o caso de intervalos a declarao if-else-if mais indicada.

    Exerccios:

    1. Obtenha do usurio trs notas de exame e calcule a mdiadessas notas. Reproduza a mdia dos trs exames. Junto com amdia, mostre tambm um :-) no resultado se a mdia for maiorou igual a 60; caso contrrio mostre :-(Faa duas verses deste programa:a) Use a classe BufferedReader (ou a classe Scanner) para obteras notas do usurio, e System.out para mostrar o resultado.b) Use JOptionPane para obter as notas do usurio e paramostrar o resultado.2. Solicite ao usurio para digitar um nmero, e mostre-o porextenso. Este nmero dever variar entre 1 e 10. Se o usuriointroduzir um nmero que no est neste intervalo, mostre:"nmero invlido".Faa duas verses deste programa:a) Use uma declarao if-else-ifpara resolver este problemab) Use uma declarao switch para resolver este problema

    3. Escreva um programa para calcular o valor da fatura doconsumo de energia eltrica. O programa tem como entrada oconsumo em Kilo Watt ms. O valor da conta calculadobaseado na faixa de consumo progressivo:a) de 1 a 50 Kw, computa-se R$ 0,50 por Kw consumidob) de 51 a 100 Kw, computa-se R$ 1,00c) de 101 a 150 Kw, computa-se R$ 2,00d) acimda de 150 Kw, computa-se R$ 3,00Por exemplo: Um consumo de 157 Kw/ms gera uma fatura de:(50 x 0,50) + (50 x 1,00) + (50 x 2,00) + (7 x 3,00) = R$ 196,00

    Desafio

    O que faz o program abaixo? O que imprime como sada?public class Mystery {

    public static void main( String args[] ) {int y, x = 1, total = 0;while ( x

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    61/144

    8. ESTRUTURA DE CONTROLE DE REPETIO: WHILE, DO-WHILE, FOR

    8.1. Estruturas de controle de repetio

    Estruturas de controle de repetio so comandos emlinguagem Java que permitem executar partes especficas docdigo determinada quantidade de vezes. Existem 3 tipos deestruturas de controle de repetio: while, do-while e for.

    A figura abaixo apresenta a anatomia de um program emJava com os elementos mais relevantes da linguagem. Em gerala maioria da aplicaes em Java so baseadas neste modelo.

    8.2. Declarao while

    A declarao while executa repetidas vezes um bloco deinstrues enquanto uma determinada condio lgica forverdadeira.

    A declarao while possui a seguinteforma:

    while (expresso_lgica) {instruo1;instruo2;...

    }

    8262

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    62/144

    As instrues contidas dentro do bloco while so executadasrepetidas vezes enquanto o valor de expresso_lgica forverdadeira.

    Por exemplo, dado o trecho de cdigo:

    int i = 4;while (i > 0){System.out.print(i);i--;

    }

    O cdigo acima ir imprimir 4321 na tela. Se a linhacontendo a instruo i-- for removida, teremos uma repetioinfinita, ou seja, um cdigo que no termina. Portanto, ao usarlaos while, ou qualquer outra estrutura de controle de repetio,tenha a certeza de utilizar uma estrutura de repetio que

    encerre em algum momento.PRATICANDO!

    Digite os exemplos abaixo e observe como funciona ainstruo while em diversar formas. Lembre-se da anatomia deum cdigo em Java.

    Exemplo 1:

    int x = 0;

    while (x

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    63/144

    Dicas deprogramao:1. Erro comum deprogramao aoutilizar o lao do-while esquecer oponto-evrgula(;) aps a declaraowhile.do {...} while(boolean_expression)// ERRADO -> faltou;2. Como visto para adeclarao while,tenha certeza que adeclarao do-whilepoder terminar emalgum momento.

    A declaraodo-while possui a seguinte forma:do {

    instruo1;instruo2;...

    } while (expresso_lgica);

    Inicialmente, as instrues dentro do lao do-while soexecutadas. Ento, a condio na expresso_lgica avaliada.Se for verdadeira, as instrues dentro do lao do-while seroexecutadas novamente.

    A diferena entre uma declarao while e do-while que,no lao while, a avaliao da expresso lgica feita antes de seexecutarem as instrues nele contidas enquanto que, no laodo-while, primeiro se executam as instrues e depois realiza-sea avaliao da expresso lgica, ou seja, as instrues dentro emum lao do-while so executadas pelo menos uma vez.

    PRATICANDO!

    Experimente executar os trechos de cdigo abaixo.Analise o que ocorre.

    Exemplo 1:int x = 0;do {

    System.out.println(x);x++;

    } while (x

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    64/144

    O exemplo anterior mostrar a palavra hello escrita natela infinitas vezes.

    8.4. Declarao for

    A declarao for, como nas declaraes anteriores,permite a execuo do mesmo cdigo uma quantidadedeterminada de vezes.

    A declarao forpossui a seguinte forma:

    for (declarao_inicial; expresso_lgica; salto) {instruo1;instruo2;...

    }

    onde:

    declarao_inicial inicializa uma varivel para o laoexpresso_lgica compara a varivel do lao com um

    valor limitesalto atualiza a varivel do lao

    Um exemplo para a declarao for:

    for (int i = 0; i < 10; i++) {System.out.print(i);

    }

    Neste exemplo, uma varivel i, do tipo int, inicializadacom o valor zero. A expresso lgica "i menor que 10" avaliada. Se for verdadeira, ento a instruo dentro do lao executada. Aps isso, a expresso i ter seu valor adicionado

    em 1 e, novamente, a condio lgica ser avaliada. Esteprocesso continuar at que a condio lgica tenha o valorfalso.

    8265

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    65/144

    Este mesmo exemplo, utilizando a declarao while, mostrado abaixo:

    int i = 0;while (i < 10) {

    System.out.print(i);i++;

    }

    PRATICANDO!

    1.Modifique o programa abaixo com a estrutura for paraincrementar e decrementar valores de c.

    // Increment.java public class Increment {

    // main method begins execution of Java application

    public static void main( String args[] )

    int c;

    c = 5;

    System.out.println( c ); // print 5

    System.out.println( c++ ); // print 5 then postincrement

    System.out.println( c ); // print 6

    System.out.println(); // skip a line

    c = 5;

    System.out.println( c ); // print 5

    System.out.println( ++c ); // preincrement then print 6

    System.out.println( c ); // print 6

    } // end method main

    } // end class Increment

    8266

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    66/144

    2. Digite o programa abaixo e estude com ele funciona. Removenos nro de linha e faa a identao do cdigo

    1 // Average2.java2 // Class average program with sentinel-controlled repetition.

    34// Java core packages5 import java.text.DecimalFormat;67// Java extension packages8 import javax.swing.JOptionPane;910 public class Average2 {1112 // main method begins execution of Java application13 public static void main( String args[] )14 {15 int gradeCounter, // number of grades entered16 gradeValue, // grade value17 total; // sum of grades

    18 double average; // average of all grades19 String input; // grade typed by user2021 // Initialization phase22 total = 0; // clear total23 gradeCounter = 0; // prepare to loop2425 // Processing phase26 // prompt for input and read grade from user27 input = JOptionPane.showInputDialog(28 "Enter Integer Grade, -1 to Quit:" );2930 // convert grade from a String to an integer31 gradeValue = Integer.parseInt( input );3233 while ( gradeValue != -1 ) {3435 // add gradeValue to total36 total = total + gradeValue;3738 // add 1 to gradeCounter39 gradeCounter = gradeCounter + 1;4041 // prompt for input and read grade from user42 input = JOptionPane.showInputDialog(43 "Enter Integer Grade, -1 to Quit:" );4445 // convert grade from a String to an integer46 gradeValue = Integer.parseInt( input );47 }4849 // Termination phase50 DecimalFormat twoDigits = new DecimalFormat( "0.00" );5152 if ( gradeCounter != 0 ) {53 average = (double) total / gradeCounter;5455 // display average of exam grades56 JOptionPane.showMessageDialog( null,57 "Class average is " + twoDigits.format( average ),58 "Class Average", JOptionPane.INFORMATION_MESSAGE );59 }60 else61 JOptionPane.showMessageDialog( null,62 "No grades were entered", "Class Average",63 JOptionPane.INFORMATION_MESSAGE );6465 System.exit( 0 ); // terminate application66

    67 } // end method main6869 } // end class Average2

    8267

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    67/144

    Exerccios:

    1. Crie um programa que mostre seu nome cem vezes. Faa trsverses deste programa:a) Use uma declarao while para resolver este problemab) Use uma declarao do-while para resolver este problemac) Use uma declarao for para resolver este problema

    2. Receba como entrada um nmero e um expoente. Calcule estenmero elevado ao expoente. Faa trs verses deste programa:a) Use uma declarao while para resolver este problemab) Use uma declarao do-while para resolver este problema3. c)Use uma declarao for para resolver este problema

    3. O que o programa abaixo faz:

    // Faz algopublic class Calculate {

    public static void main( String args[] ){

    int sum, x;x = 1;sum = 0;while ( x

  • 7/15/2019 Algoritmos e Programacao II Apostila Completa

    68/144

    9. ESTRUTURA DE CONTROLE DE INTERRUPO: BREAK,CONTINUE E RETURN

    9.1. Declaraes de Interrupo

    Declaraes de interrupo permitem que redirecionemos

    o fluxo de controle do programa. A linguagem Java possui trsdeclaraes de interrupo. So elas: break, continue e return.

    9.2. Declarao break

    A declarao break possui duas formas: unlabeled (noidentificada - vimos esta forma com a declarao switch) elabeled (identificada).

    9.2.1. Declarao unlabeled break

    A forma unlabeled de uma declarao break encerra aexecuo de um switch e o fluxo de controle transferidoimediatamente para o final deste. Podemos tambm utilizar aforma para terminar declaraes for, while ou do-while.Por exemplo:

    String names[] = {"Beah", "Bianca", "Lance", "Belle","Nico", "Yza", "Gem", "Ethan"};

    String searchName = "Yza";boolean foundName = false;for (int i=0; i < names.length; i++) {

    if (names[i].equals(searchName)) {foundName = true;break;

    }}if (foundName) {

    System.out.println(searchName + " found!");} else {

    System.out.println(searchName + " not found.");}

    Neste exemplo, se a String Yza for encontrada, a

    declarao forser interrompida e o controle do programa sertransferido para a prxima instruo abaixo da declarao for.

    9.2.2. Declarao labeled break

    A forma labeled de uma declarao break encerra oprocessamento de um lao que identificado por um labelespecificado na declarao break.

    Um label, em linguagem Java, definido colocando-seum nome seguido de dois-pontos, como por exemplo:

    teste:esta linha indica que temos um label c