Universidade Federal do Maranhão Universidade Federal do Maranhão
Curso de Engenharia El
Curso de Engenharia Eléétricatrica
Adelman
Adelman WallysonWallyson de Sousa Benignode Sousa Benigno
ALGORITMOS
ALGORITMOS
Supervisão: Prof. Dr.
Supervisão: Prof. Dr.ºº DenivaldoDenivaldo Lopes Lopes
Engineering for a better life
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
Sum
á
á
rio
rio
Introdu
Introduçção a algoritmosão a algoritmos
-- PseudolinguagemPseudolinguagem--PortugolPortugol
-- VariVariááveisveis
-- Operadores aritmOperadores aritmééticosticos
-- Operadores relacionaisOperadores relacionais
-- Operadores LOperadores Lóógicosgicos Controle de Fluxo
Controle de Fluxo
-- Estruturas Estruturas sequenciaissequenciais
-- Estruturas condicionaisEstruturas condicionais
-- Estruturas de repetiEstruturas de repetiççãoão
-- Estruturas de mEstruturas de múúltipla escolhaltipla escolha
Fun
Funççãoão
-- ConceitoConceito
-- ObjetivosObjetivos
-- Como funcionaComo funciona
-- Algoritmo exemploAlgoritmo exemplo
Recursividade
Recursividade
-- ConceitoConceito
-- Vantagens e DesvantagensVantagens e Desvantagens
-- Algoritmo exemploAlgoritmo exemplo
Gerenciamento de Exce
Gerenciamento de Exceççõesões
-- ConceitoConceito
-- Tratamento de exceTratamento de exceççõesões
-- Algoritmo exemploAlgoritmo exemplo
Considera
Consideraçções finaisões finais Referências bibliogr
INTRODU
INTRODU
Ç
Ç
ÃO A ALGORITMOS
ÃO A ALGORITMOS
ConceitoConceito
Algoritmo
Algoritmo
é
é
a descri
a descri
ç
ç
ão de um conjunto de
ão de um conjunto de
a
a
ç
ç
ões que resultam numa sucessão finita de
ões que resultam numa sucessão finita de
passos, com o intuito de resolver um
passos, com o intuito de resolver um
determinado problema.
determinado problema.
“
“O conceito central da programaO conceito central da programaçção e da ciência da computaão e da ciência da computaçção ão éé o o conceito de algoritmo
conceito de algoritmo””.. (
(WIRTH WIRTH --Professor da Universidade de Zurique, autor de diversos livros Professor da Universidade de Zurique, autor de diversos livros na na áárea e responsrea e responsáável vel
pela cria
Pseudolinguagem
Pseudolinguagem
-
-
Portugol
Portugol
-- O O PortugolPortugol (simbiose do Português com o ALGOL (simbiose do Português com o ALGOL e PASCAL)
e PASCAL) éé uma uma pseudolinguagempseudolinguagem de de programa
programaçção, que permite pensarmos no problema ão, que permite pensarmos no problema sem perder a flexibilidade e a proximidade com a
sem perder a flexibilidade e a proximidade com a
linguagem humana, facilitando a interpreta
linguagem humana, facilitando a interpretaçção.ão.
-- Neste tutorial, nNeste tutorial, nóós usamos o software s usamos o software VisualgVisualg (
(http://www.apoioinformatica.inf.br/http://www.apoioinformatica.inf.br/) para emular a ) para emular a execu
execuçção dos algoritmos em ão dos algoritmos em portugolportugol..
INTRODU
Vari
Vari
á
á
veis
veis
-- ÉÉ como são chamados os locais onde são armazenados como são chamados os locais onde são armazenados poss
possííveis valores do tipo bveis valores do tipo báásico associado. O sico associado. O ““nomenome”” da da vari
variáável vel éé um identificador.um identificador.
-- Tipos bTipos báásicos de dados:sicos de dados:
INTEIRO
INTEIRO: : qualquer nqualquer núúmero inteiro, negativo, nulo ou positivo. mero inteiro, negativo, nulo ou positivo. Ex.:
Ex.: --15, 0, 10115, 0, 101
REAL
REAL: : qualquer nqualquer núúmero real, negativo, nulo ou positivo. Ex.: mero real, negativo, nulo ou positivo. Ex.:
--1, 1, --0.5, 0, 5, 9.50.5, 0, 5, 9.5
CARACTER
CARACTER: : qualquer conjunto de caracteres alfanumqualquer conjunto de caracteres alfanumééricos. ricos. Ex.:
Ex.: ““123123””, , ““A123A123”” , , ““CASACASA””
L
LÓÓGICOGICO: : conjunto de valores (FALSO ou VERDADEIRO)conjunto de valores (FALSO ou VERDADEIRO)
INTRODU
5 ** 2 ou exp(5, 2) Exponenciação
^ ou exp(a, b)
7 mod 2 = 1 Resto de uma divisão
MOD
10 div 2 = 5 7 div 2 = 3 Divisão (onde o resultado
será um número
inteiro) DIV
5 / 2 = 2,5 Divisão (onde o resultado
será um número real) / 3 * 5 Multiplicação * 20 – 10 Subtração -10 + 15 Adição + Exemplo Operação Operador
INTRODU
INTRODU
Ç
Ç
ÃO A ALGORITMOS
ÃO A ALGORITMOS
Operadores aritm
Menor ou igual a <= Menor que < Maior ou igual a >= Maior que > Diferente <> Igualdade =
Relação
Operador
Operadores relacionais
Operadores relacionais
INTRODU
F V V V V V V F F V V V F V F F F F F F P ou-X Q P ou Q P e Q Q P Ou ‘Exclusivo’ Ou-X (Xor) Negação lógica Não (Not) Ou lógico Ou (Or) E lógico E (And) Relação Operador
INTRODU
INTRODU
Ç
Ç
ÃO A ALGORITMOS
ÃO A ALGORITMOS
Operadores l
CONTROLE DE FLUXO
CONTROLE DE FLUXO
Conceito
Conceito
--
Habilidade de ajustar a maneira como um
Habilidade de ajustar a maneira como um
programa realiza suas tarefas. Por meio de
programa realiza suas tarefas. Por meio de
instru
instru
ç
ç
ões especiais, chamadas comandos,
ões especiais, chamadas comandos,
essas tarefas podem ser executadas.
--Conjunto de comandos que serão executados numa Conjunto de comandos que serão executados numa seq
seqüüência linear de cima para baixo.ência linear de cima para baixo.
comando 1 comando 1 comando 2 comando 2
in
iníício comando 3 cio comando 3 meio comando 3 meio comando 3 fim comando 3 fim comando 3 ... ... comando n comando n
CONTROLE DE FLUXO
CONTROLE DE FLUXO
Estruturas
Algoritmo exemplo
Algoritmo exemplo
CONTROLE DE FLUXO
CONTROLE DE FLUXO
--Quando um conjunto de aQuando um conjunto de açções para ser executado, ões para ser executado, depender de uma condi
depender de uma condiçção.ão.
se <condi
se <condiçção> ão> entãoentão <comando 1> <comando 1> <comando 2> <comando 2> <comando n> <comando n> senão <comando 3> <comando 3> <comando 4> <comando 4> <comando m> <comando m> fimse
Estruturas Condicionais
Estruturas Condicionais
CONTROLE DE FLUXO
CONTROLE DE FLUXO
Algoritmo exemplo
Algoritmo exemplo
CONTROLE DE FLUXO
CONTROLE DE FLUXO
-- Quando um conjunto de aQuando um conjunto de açções ões éé executado executado repetidamente enquanto uma determinada
repetidamente enquanto uma determinada
condi
condiçção permanece vão permanece váálida.lida.
» Para - Quando precisamos repetir um conjunto de comandos um número pré-definido de vezes.
para
para varControlevarControle de de ValInicialValInicial ate ate ValFinalValFinal facafaca <comando 1> <comando 1> <comando 2> <comando 2> <comando n> <comando n> fimpara fimpara
Estruturas de repeti
Estruturas de repeti
ç
ç
ão
ão
CONTROLE DE FLUXO
CONTROLE DE FLUXO
enquanto <condi
enquanto <condiçção> facaão> faca <comando 1> <comando 1> <comando 2> <comando 2> <comando n> <comando n> fimenquanto fimenquanto repita repita <comando 1> <comando 1> <comando 2> <comando 2> <comando n> <comando n> ate <condi
ate <condiçção>ão>
» 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.
» 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
Algoritmo exemplo
Algoritmo exemplo
CONTROLE DE FLUXO
CONTROLE DE FLUXO
Algoritmo exemplo
Algoritmo exemplo
CONTROLE DE FLUXO
CONTROLE DE FLUXO
Algoritmo exemplo
Algoritmo exemplo
CONTROLE DE FLUXO
CONTROLE DE FLUXO
-- Utilizada quando temos muitas possibilidades para Utilizada quando temos muitas possibilidades para uma determinada situa
uma determinada situaçção, onde a aplicaão, onde a aplicaçção da ão da estrutura se...então...senão...
estrutura se...então...senão...fimfim--sese, tornaria o , tornaria o algoritmo muito complexo.
algoritmo muito complexo.
escolha <expressão> escolha <expressão>
caso valor1 : <comando 1> caso valor1 : <comando 1> caso valor2 : <comando 2> caso valor2 : <comando 2>
... ... senão <comando n> senão <comando n> fimescolha fimescolha
Estruturas de m
Estruturas de m
ú
ú
ltipla escolha
ltipla escolha
CONTROLE DE FLUXO
CONTROLE DE FLUXO
Algoritmo exemplo
Algoritmo exemplo
CONTROLE DE FLUXO
CONTROLE DE FLUXO
FUN
FUN
Ç
Ç
ÃO
ÃO
Conceito
Conceito
--
Mecanismo que tem a caracter
Mecanismo que tem a caracter
í
í
stica
stica
especial de retornar ao programa que a
especial de retornar ao programa que a
chamou, um valor associado ao nome da
chamou, um valor associado ao nome da
fun
Objetivos
Objetivos
-- Facilitar a compreensão e manutenFacilitar a compreensão e manutençção do cão do cóódigo.digo.
-- Melhor estruturaMelhor estruturaçção do programa.ão do programa.
-- Possibilitar o reaproveitamento de cPossibilitar o reaproveitamento de cóódigo.digo.
-- O cO cóódigo da fundigo da funçção fica ão fica ““isoladoisolado””, sendo a liga, sendo a ligaçção com o ão com o programa principal feita pelos argumentos enviados pelo
programa principal feita pelos argumentos enviados pelo
programa
programa chamadorchamador da funda funçção.ão.
FUN
FUN
FUN
Ç
Ç
ÃO
ÃO
Como funciona
Como funciona
-- ApApóós ser chamada transfere o controle para a funs ser chamada transfere o controle para a funççãoão
-- Executa a tarefa desejadaExecuta a tarefa desejada
-- Coloca o resultado da execuColoca o resultado da execuçção em um lugar (ão em um lugar (áárea de rea de mem
memóória ou registradores).ria ou registradores).
-- Retornar o controle (fluxo do programa) para o ponto de Retornar o controle (fluxo do programa) para o ponto de origem.
Algoritmo exemplo
Algoritmo exemplo
FUN
RECURSIVIDADE
RECURSIVIDADE
Conceito
Conceito
--
Mecanismo que permite a uma fun
Mecanismo que permite a uma fun
ç
ç
ão
ão
chamar a si mesma.
RECURSIVIDADE
RECURSIVIDADE
Como funciona
Como funciona
-- Diminui sucessivamente o problema em um problema Diminui sucessivamente o problema em um problema menor, at
menor, atéé que o tamanho ou a simplicidade do problema que o tamanho ou a simplicidade do problema permita resolvê
permita resolvê--lo de forma direta. lo de forma direta.
-- Uma condiUma condiçção de finalizaão de finalizaçção deve estar presente em pelo ão deve estar presente em pelo menos um local do algoritmo, pois sem esta condi
menos um local do algoritmo, pois sem esta condiçção, o ão, o algoritmo não p
algoritmo não páára de chamar a si mesmo, atra de chamar a si mesmo, atéé estourar a estourar a capacidade da pilha de execu
capacidade da pilha de execuçção.ão.
-- A cada nova execuA cada nova execuçção, vai se aproximando da condião, vai se aproximando da condiçção ão de finaliza
RECURSIVIDADE
RECURSIVIDADE
Vantagens
Vantagens
--
C
C
ó
ó
digo mais claro (leg
digo mais claro (leg
í
í
vel) e mais compacto
vel) e mais compacto
do que os correspondentes não
do que os correspondentes não
-
-
recursivos;
recursivos;
--
Algoritmos para resolver problemas de
Algoritmos para resolver problemas de
natureza recursiva
natureza recursiva
são f
são f
á
á
ceis de serem
ceis de serem
implementados em linguagens de programa
implementados em linguagens de programa
ç
ç
ão
ão
de alto n
RECURSIVIDADE
RECURSIVIDADE
Desvantagens
Desvantagens
--
Maior consumo de recursos;
Maior consumo de recursos;
--
Algoritmos recursivos são mais dif
Algoritmos recursivos são mais dif
í
í
ceis
ceis
de
de
serem depurados, especialmente quando
serem depurados, especialmente quando
existem muitas chamadas em espera na pilha
existem muitas chamadas em espera na pilha
de execu
Algoritmo exemplo
Algoritmo exemplo
RECURSIVIDADE
RECURSIVIDADE
GERENCIAMENTO
GERENCIAMENTO
DE EXCE
DE EXCE
Ç
Ç
ÕES
ÕES
Conceito
Conceito
-- ÉÉ um conjunto de medidas na estrutura de um um conjunto de medidas na estrutura de um algoritmo, que possuem o intuito de evitar
algoritmo, que possuem o intuito de evitar
poss
possííveis falhas em um programa, como veis falhas em um programa, como overflow
Tratamento de exce
Tratamento de exce
ç
ç
ões
ões
-- Identificar as causas de uma possIdentificar as causas de uma possíível falha do vel falha do algoritmo.
algoritmo.
-- Estabelecer estruturas ao algoritmo, que Estabelecer estruturas ao algoritmo, que analisem as condi
analisem as condiçções, e gerenciem um ões, e gerenciem um tratamento a essas causas.
tratamento a essas causas.
-- Configurar o algoritmo de forma que seja Configurar o algoritmo de forma que seja retomado, ap
retomado, apóós a ans a anáálise das condilise das condiçções, o ões, o processamento normal do programa.
processamento normal do programa.
GERENCIAMENTO
GERENCIAMENTO DE EXCE
GERENCIAMENTO DE EXCE
Ç
Ç
ÕES
ÕES
Algoritmo exemplo
CONSIDERA
CONSIDERA
Ç
Ç
ÕES FINAIS
ÕES FINAIS
Os algoritmos são a base para o aprendizado
Os algoritmos são a base para o aprendizado
de todos os assuntos presentes em nosso
de todos os assuntos presentes em nosso
cronograma. Entender as estruturas b
cronograma. Entender as estruturas báásicas e sicas e
principalmente a l
principalmente a lóógica de programagica de programaçção, ão, éé extremamente importante para a absor
extremamente importante para a absorçção de ão de
conhecimentos que serão necess
conhecimentos que serão necessáários rios
futuramente.
REFERÊNCIAS BIBLIOGR
REFERÊNCIAS BIBLIOGR
Á
Á
FICAS
FICAS
PINTO, Wilson.
PINTO, Wilson. IntroduIntroduçção ao Desenvolvimento de Algoritmos e Estruturas de ão ao Desenvolvimento de Algoritmos e Estruturas de
Dados
Dados. São Paulo: Editora É. São Paulo: Editora Érica, 1990.rica, 1990. MANZANO, Jos
MANZANO, Joséé Augusto N.G. Augusto N.G. Algoritmos: lAlgoritmos: lóógica para desenvolvimento de gica para desenvolvimento de programa
programaççãoão. São Paulo: É. São Paulo: Érica, 1996.rica, 1996. SANTOS, Wellington Lima dos.
SANTOS, Wellington Lima dos. Algoritmos e Estruturas de Dados II. Algoritmos e Estruturas de Dados II. DisponDisponíível vel em:
em: http://www.ufgd.edu.br/~wlsantos/Algo/Recursividade.PDFhttp://www.ufgd.edu.br/~wlsantos/Algo/Recursividade.PDF Acesso em: 13/02/07Acesso em: 13/02/07 RUBIRA, Cec
RUBIRA, Cecíília. Tratamento de Excelia. Tratamento de Exceçções. Disponões. Disponíível em: vel em:
http://www.ic.unicamp.br/~zanoni/mc600/java/LivroJava/LivroJava
http://www.ic.unicamp.br/~zanoni/mc600/java/LivroJava/LivroJava--cap_12.pdfcap_12.pdf Acesso em: 14/02/07
Acesso em: 14/02/07
NIELEBOCK, Denise Guedes. Revisão de Introdu
NIELEBOCK, Denise Guedes. Revisão de Introduçção a Algoritmos. Disponão a Algoritmos. Disponíível em: vel em: http://www.eduardostefani.eti.br/bennett/classificacao/mpc
http://www.eduardostefani.eti.br/bennett/classificacao/mpc--lista1.doclista1.doc Acesso em: Acesso em: 14/02/07
14/02/07 Visualg