5/20/2018 Algoritmos e Programacao Apostila Completa
1/144
U PP
Bacharelado em Sistemas de Informao
Mdulo II
Organizao de Sistema MetodolgicoAlgoritmos e Programao II
5/20/2018 Algoritmos e Programacao Apostila Completa
2/144
5/20/2018 Algoritmos e Programacao Apostila Completa
3/144
Mdulo II
Algoritmos e Programao II
Magno Santos
5/20/2018 Algoritmos e Programacao 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 Medeiros
COORDENADOR 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
FranciscoPereira 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
5/20/2018 Algoritmos e Programacao 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
5/20/2018 Algoritmos e Programacao 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.
Apresentao
Apresentao
5/20/2018 Algoritmos e Programacao Apostila Completa
7/144
U
n
i
d
a
d
e
s
o
c
io
l
o
g
i
a
e
a
S
o
c
io
lo
g
i
a
d
a
E
d
u
c
a
o
AsociologiaeaSociologiadaEducao
Unidade1U
n
i
d
a
d
e
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
5/20/2018 Algoritmos e Programacao 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
5/20/2018 Algoritmos e Programacao 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. Essa
viso 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 egerenciada.
82
9
5/20/2018 Algoritmos e Programacao 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:
82
10
5/20/2018 Algoritmos e Programacao 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 deatividades 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.
82
11
5/20/2018 Algoritmos e Programacao 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 a
qualidade 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:
82
12
5/20/2018 Algoritmos e Programacao 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.
82
13
5/20/2018 Algoritmos e Programacao 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
82
14
5/20/2018 Algoritmos e Programacao 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
82
15
5/20/2018 Algoritmos e Programacao 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 trabalho
usadas 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
82
16
5/20/2018 Algoritmos e Programacao 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 detrabalho. 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
5/20/2018 Algoritmos e Programacao 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 de
trabalho 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
82
18
5/20/2018 Algoritmos e Programacao 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.
82
19
5/20/2018 Algoritmos e Programacao 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 passos
lgicos) do fluxo de desenvolvimento do software. Apresente asfases e atividades importantes para garantir a qualidade dosoftware.
82
20
5/20/2018 Algoritmos e Programacao 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 decada 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 umcompilador.
Exemplos so Java, C, C++, Basic, Fortran
2.2.2. Linguagens de Montagem de Baixo Nvel
Linguagens de montagem so similares s linguagens de
82
21
public class Documento {public static void main( String args[] ) {
System.out.println( "Cdigo documentado!" ); {}
}
5/20/2018 Algoritmos e Programacao 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.
82
22
5/20/2018 Algoritmos e Programacao 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 deConta4. Pegar cada nome emNomeLista
5. Se NomeChave for igual ao nome selecionado emNomeLista6. 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
5/20/2018 Algoritmos e Programacao 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. Oprogramador deve corrigir o programa no caso de erros (tambmconhecidos como Erros de Compilao) que ocorrem no programa.Este processo chamado dedepurao de erros (debug).
82
24
5/20/2018 Algoritmos e Programacao 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 compilaoocorre 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).
82
25
5/20/2018 Algoritmos e Programacao 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.
82
26
5/20/2018 Algoritmos e Programacao 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.
82
27
5/20/2018 Algoritmos e Programacao 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.Obytecode 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
82
28
5/20/2018 Algoritmos e Programacao 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 resultarno que chamamos de escapes da memria.
Em Java, o programador no possui a obrigao da retiraruma 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 donamespace 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.
82
29
5/20/2018 Algoritmos e Programacao 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 debytecodecom 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.
82
30
5/20/2018 Algoritmos e Programacao 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 arquivojdk-1_5_0_07-linux-i586.bin.
A caixa de dilogo abaixo ser mostrada. Pressione o boto Run
in Terminal.
82
31
5/20/2018 Algoritmos e Programacao 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 yese 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.
82
32
5/20/2018 Algoritmos e Programacao 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 botoNext >.
Modifique o nome do diretrio para: /usr/java/netbeans-5.5, ento pressione o botoNext >.
82
33
5/20/2018 Algoritmos e Programacao 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 Finishpara 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 .
82
34
5/20/2018 Algoritmos e Programacao 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.
82
35
5/20/2018 Algoritmos e Programacao 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 geditdo 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.
82
36
5/20/2018 Algoritmos e Programacao 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.
EmLinux: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:82
37
5/20/2018 Algoritmos e Programacao 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 letras
maiscula 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 :
82
38
5/20/2018 Algoritmos e Programacao 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 anteriorstatictquedeve ser digitada comostatic.
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 oNetBeansque 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:
82
39
5/20/2018 Algoritmos e Programacao 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 >".
82
40
5/20/2018 Algoritmos e Programacao 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".
82
41
5/20/2018 Algoritmos e Programacao 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):
82
42
5/20/2018 Algoritmos e Programacao 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
5/20/2018 Algoritmos e Programacao 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.
82
44
5/20/2018 Algoritmos e Programacao 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 chamadaTheTree. 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
5/20/2018 Algoritmos e Programacao 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-catchpara 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;
82
46
5/20/2018 Algoritmos e Programacao 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.iocontm 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 dataIndo tipo BufferedReader. No sepreocupe com o significado da sintaxe, pois ser abordado mais frente.A seguir, declaramos a varivel namedo tipo String:
String name = "";
na qual armazenaremos a entrada de dados digitada pelousurio. Note que foi inicializada como uma String vazia "". umaboa 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 blocotry-catch:try {name = dataIn.readLine();} catch (IOException e) {System.out.println("Error!");
}
que asseguram, caso ocorram excees sero tratadas.
82
47
5/20/2018 Algoritmos e Programacao 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 varivelname.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. }
82
48
5/20/2018 Algoritmos e Programacao 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 classeScanner:
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:82
49
5/20/2018 Algoritmos e Programacao 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 dados
Um outro modo de receber os dados de entrada utilizar aclasseJOptionPane, que pertence ao pacote javax.swing. AJOptionPanepossui 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:
82
50
5/20/2018 Algoritmos e Programacao 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
nafigura pgina anterior.
JOptionPane.showMessageDialog(null, msg);
Exerccios:
1. Utilizando a classeBufferedReaderou 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
5/20/2018 Algoritmos e Programacao 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. }
82
52
5/20/2018 Algoritmos e Programacao 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.
U
n
i
d
a
d
e
2
Unidade2
Estruturas de controleEstruturas de controle
5/20/2018 Algoritmos e Programacao 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
82
54
5/20/2018 Algoritmos e Programacao 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 doblocoif. 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 declaraoifpossui a seguinte forma:
if (expresso_lgica)instruo;
ou:
if (expresso_lgica) {instruo1;instruo2...}
onde, expresso_lgicarepresenta 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
82
56
5/20/2018 Algoritmos e Programacao Apostila Completa
56/144
Dicas de programao:1. Para evitar confuso,sempre coloque ainstruo ou instruescontidas no
blocoif ou if-elseentrechaves {}.2. Pode-se terdeclaraesif-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");}
82
57
5/20/2018 Algoritmos e Programacao Apostila Completa
57/144
7.3. Declarao if-else-if
A declarao elsepode 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 umadeclaraoif. A estruturaelse opcional e pode ser omitida. Noexemplo mostrado acima, se a expresso_lgica1 verdadeira,
o programa executa ainstruo1e salta as outras instrues.Caso contrrio, se a expresso_lgica1 falsa, o fluxo decontrole segue para a anlise daexpresso_lgica2.
Observe um exemplo da declaraoif-else-ifno seguinte trecho
de 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 ainstruo2e salta ainstruo3. Casocontrrio, se aexpresso_lgica2falsa, ento a instruo3 executada.
82
58
5/20/2018 Algoritmos e Programacao Apostila Completa
58/144
7.4. Erros comuns na utilizao da declarao if
1. A condio na declaraoifno avalia um valor lgico.Por exemplo:
// ERRADOint number = 0;
if (number) {// algumas instrues aqui}
a varivelnumber no 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. Escrever elseifem 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 construoswitchpermite que uma nicavarivel inteira tenha mltiplas possibilidades de finalizao.A declaraoswitchpossui 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 umcaseforselecionado, todasas instruesvinculadas ao caseseroexecutadas. Almdisso, asinstrues doscase seguintes
tambm seroexecutadas.3. Para prevenirque o programaexecute instruesdos outros casesubseqentes,utilizamos adeclaraobreakaps a ltimainstruo de cada
case.
82
59
5/20/2018 Algoritmos e Programacao 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_inteirae 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 defaultno 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 declaraoif ou switchsubjetiva. Oprogramadorpode decidir com
base na facilidade deentendimento docdigo, entre outrosfatores.2. Uma declaraoifpode 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 casesejanico, subseqentes,utilizamos a
declaraobreakaps a ltimainstruo de cadacase.
82
60
5/20/2018 Algoritmos e Programacao Apostila Completa
60/144
Compile e execute o programa acima e veremos que oresultado ser:
Sorry, you failed.
pois a varivelgradepossui o valor 92 e nenhuma das opescaseatende a essa condio.
Note que para o caso de intervalos a declaraoif-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 declaraoif-else-ifpara resolver este problemab) Use uma declarao switchpara 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
5/20/2018 Algoritmos e Programacao 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-whilee 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 whileexecuta repetidas vezes um bloco deinstrues enquanto uma determinada condio lgica forverdadeira.
A declaraowhilepossui a seguinteforma:
while (expresso_lgica) {instruo1;instruo2;...
}
82
62
5/20/2018 Algoritmos e Programacao Apostila Completa
62/144
As instrues contidas dentro do blocowhileso 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 ainstruowhileem diversar formas. Lembre-se da anatomia deum cdigo em Java.
Exemplo 1:
int x = 0;
while (x
5/20/2018 Algoritmos e Programacao 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-whilepossui a seguinte forma:do {
instruo1;instruo2;...
} while (expresso_lgica);
Inicialmente, as instrues dentro do lao do-whilesoexecutadas. Ento, a condio na expresso_lgica avaliada.Se for verdadeira, as instrues dentro do lao do-whileseroexecutadas novamente.
A diferena entre uma declarao whileedo-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-whileso 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
5/20/2018 Algoritmos e Programacao Apostila Completa
64/144
O exemplo anterior mostrar a palavrahelloescrita 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 variveli, 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.
82
65
5/20/2018 Algoritmos e Programacao 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
82
66
5/20/2018 Algoritmos e Programacao 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 application6667 } // end method main6869 } // end class Average2
82
67
5/20/2018 Algoritmos e Programacao 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
5/20/2018 Algoritmos e Programacao 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, continuee return.
9.2. Declarao break
A declarao breakpossui duas formas: unlabeled(noidentificada - vimos esta forma com a declarao switch) elabeled(identificada).
9.2.1. Declarao unlabeled break
A formaunlabeledde uma declarao breakencerra aexecuo de um switch e o fluxo de controle transferidoimediatamente para o final deste. Podemos tambm utilizar aforma para terminar declaraesfor, whileou 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
declaraoforser interrompida e o controle do programa sertransferido para a prx
Top Related