Reaproveitando algoritmos

Documentos relacionados
Implementando uma Classe e Criando Objetos a partir dela

Cotagem de dimensões básicas

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Diretrizes para determinação de intervalos de comprovação para equipamentos de medição.

N1Q1 Solução. a) Há várias formas de se cobrir o tabuleiro usando somente peças do tipo A; a figura mostra duas delas.

Freedom Software. Sistema de Representação. Freedom Software Sistema de Representação Página 1

TÉCNICAS DE PROGRAMAÇÃO

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Resolução da lista de exercícios de casos de uso

O USO DE JOGOS DE CARTAS COMO ESTRATÉGIA PARA O ENSINO DA MATEMÁTICA

COTAÇÃO DE COMPRAS COM COTAÇÃO WEB

Objetivo do trabalho 4

AV1 - MA (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, , , 980

Introdução à Ciência da Computação

Casos de uso Objetivo:

F O R T A L E Z A MANUAL DO GUIA ON-LINE

GUIA RÁPIDO DE UTILIZAÇÃO DO SIGPROJ VERSÃO USUÁRIO

Inserção de Ponto de Entrada. Autoenge Módulo Automação Página 1

Dadas a base e a altura de um triangulo, determinar sua área.

Unidade 9: Diálogos deliberativos

Fundamentos de Teste de Software

Introdução. Introdução. Objetivos da Aula. Bases Computacionais da Ciência(BC-0005)

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE I. Prof. Dr. Daniel Caetano

Liberação de Atualização

ANÁLISE DE UMA POLÍTICA PÚBLICA VOLTADA PARA A EDUCAÇÃO: PROGRAMA BRASIL ALFABETIZADO

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Manual do Sistema de Trâmite de Processos da UFMT

Laboratório de Física I - EAD- UESC 2011

O Gerenciamento de Documentos Analógico/Digital

Gerenciamento da Integração (PMBoK 5ª ed.)

Astra LX Frases Codificadas Guia para o processo de Configuração de Frases Codificadas no Programa AstraLX.

A Torre de Hanói e o Princípio da Indução Matemática

IPS COMÉRCIO Empresa social

A Famosa Agulhada do Didi. Figura 1 A Agulhada do Didi. Obs: linha azul média de 3 dias linha verde média de 8 dias linha roxa média de 20 dias

NOTIFICANDO USUÁRIOS SOBRE UMA NOVA EDIÇÃO

Uso das ferramentas de monitoramento de gerência de redes para avaliar a QoS da rede.

SUBSÍDIOS DE FORMAÇÃO

Para a melhor compreensão do OpenBiblio, veja os exemplos que a seguir: O cadastramento dos livros

Gerenciamento do ciclo de vida de um documento Simone de Abreu

02. [Manzano, 1996] Escreva um programa em C que apresente os quadrados dos números inteiros de 15 a 200.

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

Tanto na visão semanal como diária você tem a sua disposição algumas opções uteis que facilitarão seu dia a dia.

Manual do Usuário. Protocolo

Exercícios Adicionais

PASSFINGER Manual de utilização

O USO DE JOGOS DE CARTAS COMO ESTRATÉGIA PARA O ENSINO DA MATEMÁTICA

O MÉTODO HÚNGARO PARA RESOLUÇÃO DE PROBLEMAS DE OTIMIZAÇÃO

CALEDÁRIO ESCOLAR. Página 1 de 24

Um representante é alguém que está onde eu não consigo estar.

Álgebra. SeM MiSTéRio

ALGORITMOS E FLUXOGRAMAS

INSTRUÇÕES DE INSTALAÇÃO

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

Prof. Me. Marcos Echevarria

Sumário. Administração de Banco de dados Módulo 12. Ilustração Backup-Recovery. Recuperação (Recovery) - Definição

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.

Tanto neste nosso jogo de ler e escrever, leitor amigo, como em qualquer outro jogo, o melhor é sempre obedecer às regras.

Estruturas de repetição (Ciclos)

Simulado de Algoritmos - Respostas

MANUAL - CONTABILIDADE

Aula 5 TECNOLOGIA EM JOGOS DIGITAIS JOGOS MASSIVOS PELA INTERNET Marcelo Henrique dos Santos -

DESENVOLVENDO O SISTEMA

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

ESTUDO DE VIABILIDADE. Santander, Victor - Unioeste Aula de Luiz Eduardo Guarino de Vasconcelos

Passo a Passo do Cadastro Funcionários no SIGLA Digital

Brasil Pensou em código de barras. Pensou GS1 Brasil. Como gerar seu Código de Barras

SISTEMA BRENA DE AUTOMAÇÃO COMERCIAL

Portal do Projeto Tempo de Ser

Atua no acompanhamento das atividades, através da implementação de políticas e normas; Busca a satisfação do cliente.

COMO ESTUDAR 1. Nereide Saviani 2

Manual de aplicação do selo comemorativo de 60 anos da Ufes

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

APÓS A INSTALAÇÃO, MÃOS À OBRA. E AO TECLADO. MANUAL DE INSTALAÇÃO

Sistemas Operacionais. Prof. André Y. Kusumoto

Q-Acadêmico. Módulo CIEE - Estágio. Revisão 01

Dicas de Administração do Tempo. Dicas. Administração do Tempo Reisner Consultores Associados

Título do Case: Diversidades que renovam, transformando novas realidades

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

Um novo campo de atuação para estagiários de Biblioteconomia: relato de experiência

O que esperar do SVE KIT INFORMATIVO PARTE 1 O QUE ESPERAR DO SVE. Programa Juventude em Acção

Entrevistas clínicas para estudar a flexibilidade no cálculo numérico

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

O QUE CHECAR ANTES DE COMPRAR UM IMÓVEL EM LEILÃO

INSTALAÇÃO UBUNTU NUM INSTANTE

PROVA RESOLVIDA E COMENTADA DA POLÍCIA RODOVIÁRIA FEDERAL(PRF) - Professor Joselias Out

Algoritmos e Programação Parte Teórica

OBJETIVO VISÃO GERAL SUAS ANOTAÇÕES

Software Livre e Engenharia Elétrica

Estruturas de Repetição

PROCEDIMENTOS PARA AQUISIÇÃO

Conceitos básicos da linguagem C

Como estudar o SIPIA CT

Quantidade dos Serviços

DIRECTRIZES PARA A ADAPTAÇÃO DO GUIA SOBRE AS MARCAS AO UTILIZADOR

Objetivos. Teoria de Filas. Teoria de Filas

CAPÍTULO 2. Grafos e Redes

Desmistificando o Programa de Computador

Transcrição:

Reaproveitando algoritmos Alguns exercícios pedem que se modifique um algoritmo feito anteriormente, para que ele resolva um novo problema. Isto procura demonstrar uma prática corriqueira, chamada de reaproveitamento de software. Assim, quem desenvolve software procura sempre reaproveitar trabalhos já realizados, e com isto diminuir o tempo necessário para criar um novo programa. No entanto, para que algoritmos possam ser reaproveitados, algumas adaptações podem vir a ser necessárias. O ideal seria não precisar modificar o algoritmo, e apenas fornecer os dados de entrada que ele necessita, e depois usar os dados de saída que ele gera. Futuramente no curso (em particular na disciplina de Programação Orientada a Objeto, na 5 a fase) se estudarão formas de fazer isto sistematicamente. Em nossa disciplina, no entanto, teremos que usar mais da intuição para reaproveitarmos os algoritmos que vão sendo criados. Alguns exemplos ilustrarão como se podem reaproveitar algoritmos. Para começar, tomemos o exercício da tabuada, cujo algoritmo segue abaixo. Um exercício seguinte pede que se modifique esse algoritmo para que ele mostre as tabuadas de todos os números de 1 a 10. Algumas modificações serão necessárias: 1. Não será mais necessário ler um número do teclado, pois os números cujas tabuadas devem ser mostradas já são conhecidos. 2. Para cada número entre 1 e 10, deve-se executar a parte do algoritmo que mostra a tabuada. Isto implica o uso de uma estrutura de repetição. Abaixo segue o novo algoritmo, destacando-se o que foi reaproveitado do algoritmo anterior. As poucas modificações dizem respeito à repetição do algoritmo da tabuada para cada valor contido na variável base, sendo que esses valores iniciam com 1 e vão até 10. Observe que a maior parte do algoritmo anterior foi aproveitada sem alterações. Um outro exercício pede que seja feito um algoritmo para informar se um número lido pelo teclado é primo. Uma possível solução é mostrada abaixo.

O exercício seguinte pede que se modifique o algoritmo anterior para que se informe todos os números primos que sejam menores que um determinado número lido pelo teclado. Esse novo algoritmo deve basicamente fazer o seguinte:

No fluxograma acima foi destacada a parte do algoritmo que deve testar se o valor da variável numero é primo. Somente se esse teste for verdadeiro o novo algoritmo deve mostrar o valor de numero. Mas justamente o que faz o algoritmo anterior é testar se um determinado número é primo, o que leva a questão: seria possível reaproveitá-lo? A resposta definitivamente é sim, e abaixo se demonstra como isto é possível. Novamente se destacou o que foi reaproveitado do algoritmo anterior. Observe que foi necessária uma pequena modificação (destacada em azul) para que, ao invés de mostrar se um número é primo ou não, se mostre o valor do número quando ele for primo (e somente nesse caso). Um outro exercício é modificar o algoritmo anterior para que, ao invés de mostrar todos os números primos menores que um determinado número, mostre todos os números primos que são divisores de um número. Foi destacada a única modificação necessária, que diz respeito à decisão sobre mostrar ou não o valor da variável numero: agora ele deve ser mostrado somente se for primo e também se for divisor do número informado pelo teclado (contido na variável numerolimite).

Por fim, modificando-se levemente o algoritmo acima pode-se criar um algoritmo para fatorar um número qualquer. A fatoração de um número é a operação em que se decompõe esse número em fatores primos por exemplo, a fatoração de 12 é {2, 2, 3}, a fatoração de 25 é {5, 5}, e a fatoração de 126 é {2, 3, 3, 7}. O novo algoritmo está mostrado abaixo, com a modificação em relação ao algoritmo anterior destacada em azul.

Por esses exemplos se pode ver que o reaproveitamento de algoritmos não só é possível, como recomendável. Para facilitar o reaproveitamento, devem-se escrever algoritmos cujos dados de entrada e de saída possibilitem que um mesmo algoritmo resolva todos os problemas de um determinado tipo (ou ao menos a maioria deles). Claro que para isto a delimitação do tipo de problema que um algoritmo deve ser capaz de resolver precisa ser bem definida, tornando-se uma diretriz de projeto de grande relevância.