Laboratory of Software Engineering and Computer Network Engineering for a better life Universidade Federal do Maranhão Curso de Engenharia Elétrica ALGORITMOS Supervisão: Prof. Dr.º Denivaldo Lopes Adelman Wallyson de Sousa Benigno LESERC (Laboratório de Engenharia de Software e Rede de Computadores) Web Site: http://www.leserc.dee.ufma.br/ Contato: denivaldo.lopes AT dee.ufma.br
Sumário Introdução a algoritmos - Pseudolinguagem-Portugol Portugol - Variáveis - Operadores aritméticos ticos - Operadores relacionais - Operadores LógicosL Controle de Fluxo - Estruturas sequenciais - Estruturas condicionais - Estruturas de repetição - Estruturas de múltipla m escolha Função - Conceito - Objetivos - Como funciona - Algoritmo exemplo Recursividade - Conceito - Vantagens e Desvantagens - Algoritmo exemplo Gerenciamento de Exceções - Conceito - Tratamento de exceções - Algoritmo exemplo Considerações finais Referências bibliográficas
INTRODUÇÃO A ALGORITMOS Conceito Algoritmo é a descrição de um conjunto de ações que resultam numa sucessão finita de passos, com o intuito de resolver um determinado problema. O O conceito central da programação e da ciência da computação é o conceito de algoritmo. (WIRTH - Professor da Universidade de Zurique, autor de diversos livros na área e responsável pela criação de linguagens de programação como ALGOL e PASCAL)
INTRODUÇÃO A ALGORITMOS Pseudolinguagem-Portugol Portugol - O Portugol (simbiose do Português com o ALGOL e PASCAL) é uma pseudolinguagem de programação, que permite pensarmos no problema sem perder a flexibilidade e a proximidade com a linguagem humana, facilitando a interpretação. - Neste tutorial, nós n s usamos o software Visualg (http://www.apoioinformatica.inf.br/ http://www.apoioinformatica.inf.br/) ) para emular a execução dos algoritmos em portugol.
INTRODUÇÃO A ALGORITMOS Variáveis - É como são chamados os locais onde são armazenados possíveis valores do tipo básico b associado. O nome da variável vel é um identificador. - Tipos básicos b de dados: INTEIRO: qualquer número n inteiro, negativo, nulo ou positivo. Ex.: -15, 0, 101 REAL: qualquer número n real, negativo, nulo ou positivo. Ex.: -1, -0.5, 0, 5, 9.5 CARACTER: qualquer conjunto de caracteres alfanuméricos. Ex.: 123, A123, CASA LÓGICO: conjunto de valores (FALSO ou VERDADEIRO)
INTRODUÇÃO A ALGORITMOS Operadores aritméticos ticos Operador + Adição Operação Exemplo 10 + 15 - * / DIV MOD ^ ou exp(a, b) Subtração Multiplicação Divisão (onde o resultado será um número real) Divisão (onde o resultado será um número inteiro) Resto de uma divisão Exponenciação 20 10 3 * 5 5 / 2 = 2,5 10 div 2 = 5 7 div 2 = 3 7 mod 2 = 1 5 ** 2 ou exp(5, 2)
INTRODUÇÃO A ALGORITMOS Operadores relacionais Operador = Igualdade Relação <> > >= < <= Diferente Maior que Maior ou igual a Menor que Menor ou igual a
INTRODUÇÃO A ALGORITMOS Operadores lógicosl Operador Relação E (And) E lógico Ou (Or) Ou lógico Não (Not) Negação lógica Ou-X (Xor) Ou Exclusivo P Q P e Q P ou Q P ou-x Q F F F F F F V F V V V F F V V V V V V F
CONTROLE DE FLUXO Conceito - Habilidade de ajustar a maneira como um programa realiza suas tarefas. Por meio de instruções especiais, chamadas comandos, essas tarefas podem ser executadas.
CONTROLE DE FLUXO Estruturas Sequenciais -Conjunto de comandos que serão executados numa seqüência linear de cima para baixo. comando 1 comando 2 início comando 3 meio comando 3 fim comando 3... comando n
CONTROLE DE FLUXO Algoritmo exemplo
CONTROLE DE FLUXO Estruturas Condicionais -Quando um conjunto de ações a para ser executado, depender de uma condição. se <condição> então <comando 1> <comando 2> <comando n> senão <comando 3> <comando 4> <comando m> fimse
CONTROLE DE FLUXO Algoritmo exemplo
CONTROLE DE FLUXO Estruturas de repetição - Quando um conjunto de ações a é executado repetidamente enquanto uma determinada condição permanece válida. v» Para - Quando precisamos repetir um conjunto de comandos um número pré-definido de vezes. para varcontrole de ValInicial ate ValFinal faca <comando 1> <comando 2> <comando n> fimpara
» Enquanto - Utilizada quando não sabemos o número de repetições e quando possuímos uma expressão que deve ser avaliada para que os comandos da estrutura sejam executados. enquanto <condição> faca <comando 1> <comando 2> <comando n> fimenquanto» Repita... Até que - Utilizada quando não sabemos o número de repetições e quando os comandos devem ser executados pelo menos uma vez, antes da expressão ser avaliada. repita <comando 1> <comando 2> <comando n> ate <condição>
CONTROLE DE FLUXO Algoritmo exemplo
CONTROLE DE FLUXO Algoritmo exemplo
CONTROLE DE FLUXO Algoritmo exemplo
CONTROLE DE FLUXO Estruturas de múltipla m escolha - Utilizada quando temos muitas possibilidades para uma determinada situação, onde a aplicação da estrutura se...então...senão...fim fim-se,, tornaria o algoritmo muito complexo. escolha <expressão> caso valor1 : <comando 1> caso valor2 : <comando 2>... senão <comando n> fimescolha
CONTROLE DE FLUXO Algoritmo exemplo
FUNÇÃO Conceito - Mecanismo que tem a característica especial de retornar ao programa que a chamou, um valor associado ao nome da função.
FUNÇÃO Objetivos - Facilitar a compreensão e manutenção do código. c - Melhor estruturação do programa. - Possibilitar o reaproveitamento de código. c - O código c da função fica isolado,, sendo a ligação com o programa principal feita pelos argumentos enviados pelo programa chamador da função.
FUNÇÃO Como funciona - Após s ser chamada transfere o controle para a função - Executa a tarefa desejada - Coloca o resultado da execução em um lugar (área( de memória ou registradores). - Retornar o controle (fluxo do programa) para o ponto de origem.
Algoritmo exemplo FUNÇÃO
RECURSIVIDADE Conceito - Mecanismo que permite a uma função chamar a si mesma.
Como funciona RECURSIVIDADE - Diminui sucessivamente o problema em um problema menor, até que o tamanho ou a simplicidade do problema permita resolvê-lo lo de forma direta. - Uma condição de finalização deve estar presente em pelo menos um local do algoritmo, pois sem esta condição, o algoritmo não pára p de chamar a si mesmo, até estourar a capacidade da pilha de execução. - A cada nova execução, vai se aproximando da condição de finalização.
RECURSIVIDADE Vantagens - Código mais claro (legível) e mais compacto do que os correspondentes não-recursivos; - Algoritmos para resolver problemas de natureza recursiva são fáceis f de serem implementados em linguagens de programação de alto nível. n
RECURSIVIDADE Desvantagens - Maior consumo de recursos; - Algoritmos recursivos são mais difíceis de serem depurados, especialmente quando existem muitas chamadas em espera na pilha de execução.
RECURSIVIDADE Algoritmo exemplo
GERENCIAMENTO DE EXCEÇÕES Conceito - É um conjunto de medidas na estrutura de um algoritmo, que possuem o intuito de evitar possíveis falhas em um programa, como overflow aritmético tico e divisão por zero.
GERENCIAMENTO DE EXCEÇÕES Tratamento de exceções - Identificar as causas de uma possível falha do algoritmo. - Estabelecer estruturas ao algoritmo, que analisem as condições, e gerenciem um tratamento a essas causas. - Configurar o algoritmo de forma que seja retomado, após s a análise das condições, o processamento normal do programa.
GERENCIAMENTO DE EXCEÇÕES Algoritmo exemplo
CONSIDERAÇÕES FINAIS Os algoritmos são a base para o aprendizado de todos os assuntos presentes em nosso cronograma. Entender as estruturas básicas b e principalmente a lógica l de programação, é extremamente importante para a absorção de conhecimentos que serão necessários futuramente.
REFERÊNCIAS BIBLIOGRÁFICAS PINTO, Wilson. Introdução ao Desenvolvimento de Algoritmos e Estruturas de Dados.. São Paulo: Editora Érica, 1990. MANZANO, José Augusto N.G. Algoritmos: lógica l para desenvolvimento de programação ão.. São Paulo: Érica, 1996. SANTOS, Wellington Lima dos. Algoritmos e Estruturas de Dados II. Disponível em: http://www.ufgd.edu.br/~wlsantos/algo/recursividade.pdf Acesso em: 13/02/07 RUBIRA, Cecília. Tratamento de Exceções. Disponível em: http://www.ic.unicamp.br/~zanoni/mc600/java/livrojava/livrojava-cap_12.pdf cap_12.pdf Acesso em: 14/02/07 NIELEBOCK, Denise Guedes. Revisão de Introdução a Algoritmos. Disponível em: http://www.eduardostefani.eti.br/bennett/classificacao/mpc-lista1.doc lista1.doc Acesso em: 14/02/07 Visualg,, Disponível em: http://www.apoioinformatica.inf.br/