Algoritmos e programação
Bacharelado em Sistemas de Informação UAPI Módulo II Organização de Sistema Metodológico Algoritmos e programação Algoritmos e Programação II Magno Santos PRESIDENTE DA REP DA EDUCAÇÃO Ferna Wellington Dias REIT de Sousa Santos Júni DO MEC Carlos Edua ors6 a Silva MINISTRO OR DO ESTADO DERAL DO AÇÃO A DISTÂNCIA ENADORIA GERAL DA UNIVERSIDADE ABERTA DO BRASIL celso costa SECRETÁRIO DE EDUCAÇÃO DO ESTADO DO PIAUÍ Antonio José Medeiros COORDENADOR GERAL DO CENTRO DE EDUCAÇAO ABERTA A DISTÂNCIA DA LIFPI Gildásio Guedes Fernandes SUPERITENDÊNTE DE EDUCAÇÃO SUPERIOR NO ESTADO Eliane Mendonça DIRETOR
DO CENTRO DE CIÊNCIAS HUMANAS E LETRAS Antônio Fonseca dos santos Neto COORDENADOR DO CUSO DE ADMINISTRAÇÃO A DISTÂNCIA Francisco pereira da Silva Filho COODENADORA DE MATERIAL DIDÁTICO DO CEAD/UFPI Cleidinalva Maria Barbosa Oliveira DIAGRAMAÇÃO Emanuel Alcântara da Silva B726C SANTOS, Magno Alves Algoritmos e programaçao II / Magno Alves dos Santos Teresina: UFPI/UAPI 2008. Inclui bibliografia 1 Algoritmo. 2 Linguagem Java, 3 Programação Orientada a Objetos . l. Universidade Federal do Piauí/ Saída de Dados UNIDADE 2. ESTRUTURAS DE CONTROLE 07 Estruturas de Decisão: if-then-else, switch 08 – Estruturas de
Repetição: while, do-whlle, for 09 – Estruturas de Interrupção: break, continue, return UNIDADE 3. ARRANJOS E ARGUMENTOS 10 – Arranjos em Java 11 — Argumentos em Java UNIDADE 4. PARADIGMA DE PROGRAMAÇÃO ORIENTADA A OBJETOS 12 Classes, Objetos e Métodos 13 – Definição de Classe em Java 14 – Herança, Polimorfismo e Interface 15 – Tratamento e Exceçoes em java APÊNDICES: ACI – EXERCÍCIOS ADICIONAIS A02 – PLANO DE ENSINO A03 – AGENDA DE ATIVIDADES REFERÊNCIAS BIBLIOGRAFICAS 07 09 21 27 31 35 46 53 56 52 69 75 77 83 8991 107 125 138 142 145 149 151 Apresentação Apresentação
Este texto é destinado aos estudantes aprendizes que participam do programa de Educação a Distância da Universidade Aberta do Piauí (UAPI) vinculada ao consórcio formado pela Universidade Federal do Piauí (IJFPI) Universidade Estadual do Piauí (IJESPI), Centro Federal de Ensino Tecnológico do Piauí (CEFET-PI), com apoio do Governo do estado do Piauí, através da Secretaria de Educação. O texto deste compêndio é composto de quatro unidades, contendo quinze sub-unidades, estruturadas de modo sequencial, onde discorrem sobre os fundamentos da programação de computadores orientada a objetos.
Na Unidade 1, abordamos os fundamentos de engenharia de software e da programação 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 cádi o para ler e escrever dados na entrada e saída padrão , apresentamos as PAGF e escrever dados na entrada e saída padrão. Na Unidade 2, apresentamos as estruturas de controle de um programa em Java.
Exemplificamos as estruturas de repetição incremental, repetição com teste no início e repetição com teste no final, além as estruturas de desvio condicional. Na Unidade 3, abordamos as estruturas de dados de arranjos homogêneos e heterogêneos. Trabalhamos exemplos com vetores, matrizes e adicionalmente passagem de parâmetros como argumentos para um programa Na Unidade 4, são expostos conteúdos sobre o paradigma da programação orientada a objetos. Focamos nas definições e exemplos de classe, objeto, mensagem. Apresentamos características intrínsecas da programação 00 como herança, polimorfismo e interface.
A sociologia e a Sociologia A sociologia e a Sociologia da Educação Fundamentos da Educação de Programação Orientada Objetos Unidadel 1 Unidade Resumo Esta unidade tem como meta apresentar uma visão geral sobre os elementos conceituais da programação orientada a objetos. São abordados os fundamentos da engenharia de software e da programação de computadores. A anatomia de um programa em Java é apresentada com suas características e funções onde se deve aprender a criar, editar, compilar e executar um dos primeiro programa em Java.
Como objetivo principal, esta unidade ensina, a gerar um código simples dentro dos padrões mínimos exigido pela engenharia software. Sumário UNIDADE I . FUNDAMENTOS DE PROGRAMAÇAO ORIENTADA A OBJETOS OI — Introdução à en enharia de software 02 Introdução à programaçã ores 03 – Histórico PAGF 3 OF Histórico da Linguagem Java 04 – Instalação do Java e do NetBeans 05 – Primeiro Programa Java com a IDE NetBeans 06 – Entrada e Saída de Dados 07 0921 27 31 36 46 l. INTRODUÇÃO À ENGENHARIA DE SOFMARE 1. . Engenharia de Software – Uma visão em camadas Engenharia de Software é uma disciplina que aplica princípios da engenharia de desenvolvimento na qualidade do software em um determinado tempo e com um custo efetivo. Usando uma abordagem istemática e metodológica para produzir resultados que possam ser quantificados. Faz uso de medição e métricas para avaliar a qualidade, não somente do software, mas também do processo. Utilizada para avaliar e gerenciar projetos de desenvolvimento de software.
Engenharia de Software é vista de modo diferente pelos diversos profissionais. Pressman sugere uma visão da engenharia de software como uma camada tecnológica 1. Essa visão consiste em quatro camadas: foco na qualidade, processo, método e ferramentas. A Figura abaixo ilustra essa visão da engenharia de software. 1. 1 . Foco na Qualidade Essa camada busca um total foco na qualidade. É uma cultura onde o compromisso em melhoria continua no processo de desenvolvimento do software é sustentado.
Permite o desenvolvimento de mais abordagens efetivas para engenharia de software. 1. 1. 2. Processo Define uma estrutura, que consiste em áreas de processos chave, que define e permite a entrega racional e a tempo de um software. Áreas de processos chave são a base para o gerenciamento de projeto de software. Estabelecem que métodos técnicos sejam aplicados, quais ferramentas são usadas, que produtos de trabalho recisam ser produzidos, e que marcos são definidos. são usadas, que produtos de trabalho precisam ser produzidos, e que marcos são definidos.
Incluem a garantia que a qualidade será mantida, e que a mudança é devidamente controlada e gerenciada. 82 9 1 . 1. 3. Método Métodos definem procedimentos sistemáticos e ordenados de construção de software. Eles proporcionam uma estrutura global interna onde as atividades do engenheiro de software são realizadas. Essas atividades incluem um conjunto amplo de tarefas, tais como, análise de requisitos, design, construção do programa, teste e manutenção. Metodologia é a ciência de pensamento sistemático, usando os métodos ou procedimentos para uma disciplina em particular.
Existem várias metodologias da engenharia de software que são usadas atualmente. Algumas delas estão enumeradas abaixo: Metodologias Estruturadas: • Informações de Engenharia • Desenvolvimento do Ciclo de Vida do Software/Ciclo de Vida do Projeto Metodologia de Desenvolvimento de Aplicação Rapid • Metodologia de Desenvolvimento de Aplicação Joint • Método CASE* Metodologias Orientadas a Objeto. • Método Booch • Método Coad e Yourdon • Método Jacobson • Método Rambaugh ?? Método Wirfs-Brock 1 . 1*4.
Ferramentas Promovem o suporte aos processos e métodos. Ferramentas CASE (Computer Aided Software Engineeing) proporcionam um sistema de suporte ao projeto de desenvolvimento, onde as informações criadas por uma ferramenta podem ser usadas por outras. Podem ser automáticas ou semi-automáticas. Muitas ferramentas são usadas para desenvolver modelos. Modelos são patterns (padrões) de algo que fol criado ou são simplificações. Existem dois modelos que geralmente são desenvolvidos por um engenheiro de softwar PAGF s OF simplificações.
Existem dois modelos que geralmente são esenvolvidos por um engenheiro de software, especialmente, o modelo de sistema e o modelo de software. O modelo de sistema é uma representação acessível de um sistema complexo que precisa ser estudado, enquanto o modelo de software é chamado de blueprint do software que precisa ser construído. Assim como as metodologias, vários modelos de ferramentas são usados para representar sistemas e softwares. Alguns estão descritos abaixo.
Abordagem de Modelos de Ferramentas Estruturada: IO 82 • Diagrama de Entidade-Relacionamento • Diagrama de Fluxo de Dados • Pseudocódigo • Fluxograma Abordagem de Modelo de Ferramenta Orientada a Objeto: • Linguagem de Modelagem Unificada (UML) 1 . 2. Qualidade dentro do Esforço de Desenvolvimento Conforme mencionado anteriormente, a qualidade é a mente que influencia todo engenheiro de software. Focando na qualidade em todas as atividades de engenharia de software, reduz-se custo e melhora-se o tempo de desenvolvimento pela minimização de um novo trabalho de correção.
Para proceder dessa forma, um engenheiro de software tem que definir explicitamente que qualidade de software é ter um conjunto de atividades que assegurarão que todo produto e trabalho da engenharia de software exibe a ta qualidade, fazer controle de qualidade e atividades garantidas, o uso de métricas para desenvolver estratégias para melhorar o produto de softw’are e o processo. 1. 2. 1. O que é qualidade? Qualidade é a característica total de uma entidade para satisfazer necessidades declaradas e implícitas.
Essas características ou atributos têm que ser mensuráveis de modo que possam ser comparados po PAGF 6 características ou atributos têm que ser mensuraveis de modo que possam ser comparados por padrões conhecidos. 1. 2. 2. Como definimos qualidade? Três perspectivas são usadas na compreensão da qualidade, especialmente, olhamos para a qualidade do produto, do processo e no contexto do ambiente de negócios. Qualidade do Produto Significa coisas diferentes para cada pessoa. É relativo para uma pessoa analisar qualidade.
Para os usuários finais, o software tem qualidade se fornecer a que desejam e quando desejam o tempo todo. Também julgam baseados na facilidade de usar e de aprender como usá-lo. Normalmente avaliam e categorizam com base em características externas, tal como, número de falhas por tipo. Falhas podem ser ategonzadas como: insigniflcantes, importantes e catastróficas. Para que outros possam desenvolver e manter o software, estes devem ficar de olho nas características internas em vez das externas.
Exemplos que incluem erros e falhas encontradas durante as fases de análise de requisitos, design, e codificação são normalmente feitos anteriormente ao carregamento dos produtos para os usuários finais. 82 11 Como engenheiros de software, devemos construir modelos baseados em como os requisitos dos usuários externos serão relacionados com os requisitos internos dos desenvolvedores. Qualidade do Processo Existem várias tarefas que afetam a qualidade do software. Às vezes, quando uma tarefa falha, a qualidade do software falha. Como engenheiros de softwares, devemos validar a qualidade no processo de desenvolvimento do software.
Regras de processo sugerem que pela melhoria do processo de desenvolvimento do software, também há melhora da qualidade d PAGF 7 que pela melhoria do processo de desenvolvimento do software, também há melhora da qualidade do produto resultante. Algumas regras de processo são demonstradas abaixo: • Capabillty Maturity Model Integration(CMMl). Foram formulados pelo Software Engineering Institute (SEI). É um processo meta-modelo que é baseado em um conjunto de sistemas e competências da engenharia de software que devem existir dentro de uma organização.
Como a mesma atinge diferentes níveis de capacidade e maturidade desses processos de desenvolvimento. • ISSO 9000:2000 para Software. É um padrão genérico, aplicado para qualquer organização que queira melhorar a qualidade global dos produtos, sistemas ou servlços que proporclona. • Software process Improvement e Capability Determination (SPICE). É um padrão que define um onjunto de requisitos para avaliação do processo de software. O objetivo desse padrão é auxiliar organizações a desenvolver uma análise objetiva da eficácia de qualquer processo de software definido.
Nessa perspectiva, qualidade é visualizada em termos de produtos e serviços sendo proporcionado pelo negócio em que o software é usado. Melhorando a qualidade técnica dos processos de negócio, agrega-se valor ao negócio, por exemplo, valor técnico do software traduz o valor do negóc10. Também é importante medir o valor do software em termos de terminologias de negócio, tal como, “quantos pedidos de venda oram processados hoje? ‘, valor do dólar sobre o retorno em cima dos investimentos (ROI), etc. Se o software não agrega valor ao negócio, qual a necessidade de tê-lo em primeiro lugar? . 2. 3. Como endereçamos os pontos importantes sobre qualidade? Podemos endereçar os pon PAGF 8 OF lugar? 1. 2. 3. Como endereçamos os pontos importantes sobre qualidade? Podemos endereçar os pontos importantes sobre qualidade em: 8212 1. Uso de padrões de Qualidade. Padrões de qualidade são um conjunto de princípios, 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 usuários finais e participantes.
Sustenta um ambiente de colaboração e comunicação efetiva. 3. Compreender as tendências sistemátlcas na natureza humana. Tal como, as pessoas tendem a ser contrárias ao risco quando existe uma perda potencial, são indevidamente otimistas em seus planos e projeções, e preferem usar julgamentos intuitivos ao invés de modelos quantitativos. 4. Engajamento para a qualidade. Uma mente focada sobre qualidade é necessária para descobrir erros e defeitos assim ue possam ser endereçados imediatamente. 5. Requisitos de usuários administradores porque mudarão ao longo do tempo.
Requisitos é a base, definindo as características da qualidade de software. 1. 3. Técnicas e Garantias de Qualidade de Software Garantia de qualidade de Software é um subconjunto da engenharia de software que assegura que todos os produtos de trabalho sejam realizados, e que cumpram com as exigências e padrões estabelecidos pelos usuários. Considera-se como uma das atividades mais importantes que é aplicada durante todo o processo do desenvolvimento do sofMare. O objetivo é detectar efeitos antes do software ser entregue como um produto acabado para o usuário final.
Isto abrange uma aproximação eficaz da gerência de qualidade, tecno produto acabado para o usuário final. Isto abrange uma aproximação eficaz da gerência de qualidade, tecnologia de engenharia de software (métodos e ferramentas), técnicas formais de revisão, várias estratégias de teste, controle de documentação de software e alterações feitas, um procedimento para assegurar a conformidade com os padrões 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 para uso, isto é, se estiver trabalhando corretamente.
Para que ele trabalhe corretamente, ele deve estar em conformidade com os requisitos funcionais e de performance características externas dos usuários), padrões explicitamente documentados de desenvolvimento (padrões de qualidade), e características implícitas (características internas aos desenvolvedores) que são esperadas por todo desenvolvimento profissional de software. Três pontos importantes enfatizados para definir a qualidade do software. 13 82 1. Requisitos de Software são a base para a qualidade do oftware. É necessário explicitar, especificar e priorizar. . padrões definem um de critérios de desenvolvimento que irão mostrar a maneira com a qual o software será desenvolvido. 3. Características implícitas deverão ser identificadas e documentadas; elas influenciam na maneira de como o software será desenvolvido assim como sua manutenibilidade. 1. 3. 2. Características para uma Boa Engenharia de Software Para definir uma boa engenharia de software, dê uma olhada nas características específicas que o software apresenta. Algumas delas estão enumeradas abaixo: • Usabilidade. É a característica do