1. Noção de algoritmo



Documentos relacionados
INTRODUÇÃO À PROGRAMAÇÃO

Metodologias de Programação

Algoritmo e Pseudo-código

4 Introdução ao Algoritmo

INF1005: Programação I. Algoritmos e Pseudocódigo

ALGORITMOS. O que é Algoritmo? Algoritmo é um dos processo para criação

Linguagens de Programação:

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Algoritmos. Prof. Jonatas Bastos

Estruturas de Repetição

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

ALGORITMOS E PROGRAMAÇÃO TEÓRICA RAÍ ALVES TAMARINDO RAI.TAMARINDO@UNIVASF.EDU.BR

OBSERVAÇÕES: EXERCÍCIOS

Unidade 10 Análise combinatória. Introdução Princípio Fundamental da contagem Fatorial

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO

Ivanovitch Medeiros Dantas da Silva. Natal, 01 de setembro de 2011

Conceitos e Representação de Algoritmos

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Informação-Prova de Equivalência à disciplina de: Aplicações Informáticas B. 1. Introdução. Ensino Secundário. Ano letivo de 2011/12

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

6 CONCEPÇÃO BÁSICA DO SISTEMA DE APOIO À DECISÃO

Modelos de Ciclo de Vida de Software

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Normas para a elaboração de um relatório. para a disciplina de projecto integrado. 3.º ano 2.º semestre. Abril de 2004

Manual do Processo de Planejamento da UFSC. Departamento de Planejamento SEPLAN/UFSC

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

Melhorias de Processos segundo o PDCA Parte IV

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Engenharia Econômica

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

Circuitos Aritméticos

Análise de algoritmos. Parte II

Processo de Desenvolvimento de Software

Figura 8: modelo de Von Neumann

Glossário de Aprendizagem Motora

Universidade Paulista

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Administração Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Informática Aplicada

O Sistema de Computação

Ferramenta 8: Fluxograma

RESOLUÇÃO. Artigo 2º - O Curso, ora criado, será oferecido no turno noturno, com 10 semestres de duração e com 50 vagas iniciais.

Fundamentos de Arquitetura e Organização de Computadores

CAMPUS DE GUARATINGUETÁ FACULDADE DE ENGENHARIA. Introdução à Programação em C. Algoritmos: Estruturas de Repetição. Prof. Dr. Galeno.J.

COMPUTAÇÃO. O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD:

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Interpretações de Qualidade de Software. Interpretações de Qualidade de Software. Aspectos Importantes das Definições de Qualidade

Introdução à Algoritmos. Aula 11

Comandos de Desvio 1

Orientação a Objetos

RACIOCÍNIO LÓGICO QUANTITATIVO

CURSO DE MATEMÁTICA BÁSICA PROGRAMA DE EDUCAÇÃO TUTORIAL CENTRO DE ENGENHARIA DA MOBILIDADE

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Plano de Ensino PROBABILIDADE E ESTATÍSTICA APLICADA À ENGENHARIA - CCE0292

Montadores e Compiladores

Entrada e Saída Transmissão Serial e Paralela

Arquitectura interna de um computador

Tipos de problemas de programação inteira (PI) Programação Inteira. Abordagem para solução de problemas de PI. Programação inteira

Qualidade de Produto. Maria Cláudia F. P. Emer

Produção de Vídeos Didáticos: Tábua de Galton

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

Agenda. O que é Testar? Por que testar? Quando testar? Processo de teste Níveis de teste Tipos de teste Classificação dos testes.

Glossário Versão 1.0 Desenvolvimento do Sistema de Gestão de Documentos Doc Manager Histórico de Revisão

Até o momento, vimos que a estrutura de um computador segue uma seqüência: ENTRADA => PROCESSAMENTO => SAÍDA

Algoritmos e Programação

Introdução à Computação

Erros e Incertezas. Rafael Alves Batista Instituto de Física Gleb Wataghin Universidade Estadual de Campinas (Dated: 10 de Julho de 2011.

Notas de aula de Lógica para Ciência da Computação. Aula 11, 2012/2

TECNOLOGIA EM MECATRÔNICA INDUSTRIAL CONTROLADORES LÓGICOS PROGRAMÁVEIS

Curso de Sistemas de Informação 8º período Disciplina: Tópicos Especiais Professor: José Maurício S. Pinheiro V

ESPECIFICAÇÕES TÉCNICAS SISTEMA DE DETECÇÃO VEICULAR OVERHEAD

Introdução a Programação Aula 01

UNIVERSIDADE DO ESTADO DE SANTA CATARINA CENTRO DE CIÊNCIAS TECNOLÓGICAS CCT DEPTO. DE ENG. DE PRODUÇÃO E SISTEMAS 1 REDES PERT-CPM

CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES

ANEXO 3 GERENCIAMENTO DE MODIFICAÇÕES

Engenharia de Software. Ciclos de Vida do Software. 1. Sistemas

Teste de Funções por Cobertura do Grafo de Fluxo de Controle

Unidade II Atividades em PDS: Testes. Unidade III Suporte e Manutenção. Processo Desenvolvimento Software

Modelos Matemáticose Classificaçãode Robôs

O cilindro deitado. Eduardo Colli

BANCO DE DADOS. Professor: André Dutton

Introdução. Qualidade de Produto. Introdução. Introdução ISO/IEC Normas

Avaliação e Desempenho Aula 1 - Simulação

1.1. Definição do Problema

Orientações gerais. Apresentação

AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO

Boas situações de Aprendizagens. Atividades. Livro Didático. Currículo oficial de São Paulo

AULA : DICAS PARA UMA BOA REDAÇÃO

Placas Gráficas. Placas Gráficas. Placas Gráficas. Placas Gráficas. O que é? Para que serve? Resolução (cont.) Resolução

Engenharia Econômica

Anterior Sumário Próximo MATRIZES, DETERMINANTES E SISTEMAS

01/08/2011. Introdução Lógica Sequencia lógica Instruções Algoritmos Programas. Lógica. Lógica na programação. Instrução.

Informática Aplicada à Engenharia Elétrica I

GESTÃO DA MANUTENÇÃO

Processamento de Dados aplicado à Geociências. AULA 3: Algoritmos computacionais Representação de Algoritmos Sintaxe Tipos de dados Expressões

ALGORITMOS CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

Transcrição:

1. Noção de algoritmo Em português, a palavra algoritmo quer dizer operação ou processo de cálculo, entre outras definições possíveis (Dicionário Brasileiro de Língua Portuguesa, Mirador Internacional, Ed. 1977). Outra definição de algoritmo pode ser dada como a especificação da sequência ordenada de passos que deve ser seguida para a realização de uma tarefa, garantindo a sua repetibilidade. O algoritmo não é a solução do problema, mas sim o meio de obtê-la. Surgem então algumas questões: - Como se obterá a solução? R: Ela poderá ser obtida por meio de um método previamente conhecido, composto de operações que, conjuntamente, levam ao fim desejado a partir do estado observado. - Quem obterá a solução? R: Para nós, diremos que a solução será obtida por um computador uma ferramenta capaz de executar diversas vezes e muito rapidamente algumas tarefas bem definidas. O nosso objectivo não é fazer com que o computador trabalhe eternamente sobre um problema, talvez até insolúvel em virtude do algoritmo proposto; queremos que a solução seja obtida ou então que sejamos avisados pela máquina de que o problema é insolúvel. Assim, um algoritmo deve ter um número finito de operações executáveis, num determinado período de tempo, e que consiga detectar a viabilidade de resolver o problema proposto. Podemos então definir algoritmo da seguinte forma: um algoritmo é uma sequência ordenada e finita de operações bem definidas e eficazes que, quando executadas por um computador termina sempre num determinado período de tempo e que produz uma solução ou que indica que a solução não pode ser obtida. Pela definição anterior podemos constatar que há uma primeira instrução e uma última instrução, ou seja, um algoritmo tem um princípio e um fim. Ao contrário do que se possa pensar, o conceito de algoritmo não foi criado para satisfazer as necessidades da computação. Pelo contrário, a programação de computadores é apenas um dos campos de aplicação dos algoritmos. Na verdade, há inúmeros casos que podem exemplificar o uso (involuntário ou não) de algoritmos para a padronização do exercício de tarefas rotineiras. - 1 -

Devemos sempre ponderar se todos os algoritmos propostos para a solução de um dado problema são igualmente desejáveis. Quase sempre existe mais do que uma maneira de resolver um problema, e essa escolha é nossa. Qual será então a melhor das escolhas? Dados dois ou mais algoritmos para resolver o mesmo problema, é sensato escolher aquele que obtém uma solução no menor tempo possível e que utiliza o menor espaço para a representação dos dados do problema. Voltando ao contexto computacional, daqui em diante a atenção deste trabalho estará voltada para a automação de tarefas utilizando computadores. A automação é um processo em que a tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas. Para que a automação de uma tarefa seja bem sucedida é necessário que a máquina que passará a realizá-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficiência, de modo a garantir a repetibilidade do mesmo. Assim, deve ser especificado com clareza e exactidão o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a sequência em que estas fases devem ser realizadas. Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador não é mais do que um algoritmo escrito numa forma compreensível pelo computador, ou seja, um algoritmo que diz ao computador os passos específicos e a ordem pela qual devem ser executados. Assim, um algoritmo deve ter robustez, ou seja, um algoritmo deve contemplar todas as facetas possíveis do problema que queremos resolver. Ao elaborar um algoritmo não devemos deixar que nenhum detalhe provoque um mau funcionamento do mesmo. Se conseguirmos construir um algoritmo robusto, qualquer mudança no problema será controlada pelo algoritmo, ou seja, o algoritmo deve ser flexível para mudanças. Um algoritmo deve ser correcto, ou seja, deve dar uma solução para o problema e deve cumprir todos os requisitos propostos nos objectivos. Um algoritmo deve ser eficiente, isto é, deve conseguir chegar aos objectivos propostos utilizando a menor quantidade de recursos possíveis, ou seja, minimizando o uso da memória, de passos e de esforço humano. - 2 -

Diz-se que um algoritmo é eficaz quando atinge o objectivo principal, ou seja, a análise da resolução do problema realiza-se prioritariamente. Pode dar-se o caso que exista um algoritmo eficaz mas não eficiente, na medida do possível devemos tentar obter estes dois conceitos conjuntamente. Para conseguir resolver qualquer problema devem-se ter em atenção os seguintes passos: - Análise do problema neste ponto define-se o problema, compreende-se e analisa-se com todo o detalhe. - Desenho do algoritmo neste ponto deve-se elaborar um algoritmo que reflicta passo a passo a resolução do problema. - 3 -

2. Representação de algoritmos Existem diversas formas de representação de algoritmos, mas não há um consenso em relação à melhor delas. O critério utilizado para classificar hierarquicamente estas formas está directamente ligado ao nível de detalhe ou, inversamente, ao grau de abstracção oferecido. Algumas das formas de representação de algoritmos tratam os problemas apenas ao nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com uma linguagem de programação específica. Por outro lado, existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes que muitas vezes acabam por obscurecer a ideia principal, o algoritmo, dificultando o seu entendimento. Das formas de representação de algoritmos mais conhecidas destacamos: - a narrativa descritiva ou descrição narrativa; - o fluxograma convencional; - o pseudocódigo, também conhecido como linguagem estruturada ou portugol. 2.1. Narrativa descritiva Nesta forma de representação os algoritmos são expressos directamente em linguagem natural. Vejamos os seguintes exemplos: - Receita de bolo: Misture os ingredientes Unte a forma com manteiga Despeje a mistura numa forma Se houver coco ralado então despeje sobre a mistura Leve a forma ao forno Enquanto não corar deixe a forma no forno Retire do forno Deixe arrefecer - Tomar banho: Entrar na casa de banho e tirar a roupa Abrir a torneira do chuveiro Entrar na água Ensaboar-se Fechar a torneira - 4 -

Sair da água Enxugar-se Vestir-se - Cálculo da média de um aluno: Obter as notas da primeira e da segunda provas Calcular a média aritmética entre as duas Se a média for maior ou igual que 9,5, o aluno foi aprovado, senão foi reprovado No entanto, na prática, esta representação é pouco usada porque o uso da linguagem natural dá muitas vezes oportunidade a más interpretações, ambiguidades e imprecisões. 2.2. Fluxograma convencional Um fluxograma é uma representação gráfica de algoritmos onde diferentes formas geométricas implicam distintas acções (instruções, comandos). Tal propriedade facilita o entendimento das ideias contidas nos algoritmos. Esta forma de representação de algoritmos é intermédia à descrição narrativa e ao pseudocódigo, pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de implementação do programa, como, por exemplo, o tipo de variáveis utilizadas. Há vários padrões que definem as formas geométricas das figuras e que devem ser usados para representar cada um dos diversos tipos de instruções; contudo, nenhum deles sobressai em relação aos demais no que diz respeito à aceitação por parte dos usuários. Nos fluxogramas convencionais existe uma preocupação com os detalhes de nível físico da implementação do algoritmo. Por exemplo, diferentes figuras geométricas são adoptadas para representar operações de saída de dados realizadas em diferentes dispositivos, como uma fita magnética ou um monitor de vídeo. Segue-se uma lista das principais formas geométricas usadas nos fluxogramas. = Início e final do fluxograma = Indica o sentido do fluxo de dados e conecta os símbolos existentes ou = Operação de entrada de dados = Informações recebidas ou fornecidas de ou por um computador - 5 -

= Operação de saída de dados em impressora = Saída de dados em vídeo = Informações exibidas por dispositivos visuais, vídeo ou monitor = Utiliza-se para indicar cálculos (algoritmos) a efectuar, atribuições de valores = Bloco de decisão Em geral, um fluxograma resume-se a um único símbolo inicial, por onde começa a execução do algoritmo, e um ou mais símbolos finais, que são pontos onde a execução do algoritmo acaba. Partindo do símbolo inicial, há sempre um único caminho orientado para ser seguido, que representa a única sequência de execução das instruções. Excepções a esta regra são os símbolos finais, dos quais não sai nenhum fluxo, e os símbolos de decisão, dos quais pode haver saída de mais do que um caminho de saída (normalmente dois caminhos), que representam uma bifurcação no fluxo. Segue-se a representação do algoritmo do cálculo da média de um aluno sob a forma de um fluxograma convencional..v. 9,5-6 -