Estrutura de Dados Prof. Miguel Bonafe [email protected] INSTITUTO FEDERAL AMAZONAS.

90
Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmai l.com INSTITUTO FEDERAL AMAZONAS

Transcript of Estrutura de Dados Prof. Miguel Bonafe [email protected] INSTITUTO FEDERAL AMAZONAS.

Page 1: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados

Prof. Miguel [email protected]

INSTITUTO FEDERALAMAZONAS

Page 2: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

INSTITUTO FEDERALAMAZONAS

Apostila #1

Referencia bibliográfica:

Estrutura de Dados e Algoritmos

Uma Abordagem Didatica

Celso Roberto Moraes

Editora Futura

Page 3: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Aula de hoje:

Conceitos úteisE.D.Tipos Abstratos de Dados (TAD)Tipos de Dados

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

Page 4: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados

• Conceitos úteis

Page 5: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas Introdução | Conceitos Úteis

Iniciamos citando a celebre afirmação de NIKLAUS WIRTH de que:

PROGRAMA = ED + ALGORITMOS

Aqui podemos evidenciar a importancia das estruturas de dados e dos algoritmos no contexto dos computadores.

ED = Estrutura de Dados

Page 6: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto FederalAmazonas

Introdução | Conceitos Úteis

Iniciamos citando a celebre afirmação de NIKLAUS WIRTH de que:

PROGRAMA = ED + ALGORITMOS

Aqui podemos evidenciar a importancia das estruturas de dados e dos algoritmos no contexto dos computadores.

ED = Estrutura de Dados

Page 7: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

Realizando a combinação adequada das estruturas de dados com os algoritmos que atuam sobre essas estruturas, podemos conseguir a abstração das situações do nosso dia-a-dia em um nível suficiente para que um computador possa ajudar-nos da forma mais útil possível.

ED = Estrutura de Dados

Introdução | Conceitos Úteis

Page 8: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

O computador é uma máquina que processa essencialmente algoritmos escritos em uma linguagem de programação. Para criação de programas eficientes, não basta dominar tecnicamente os comandos de uma linguagem de programação; é necessário conhecer um pouco mais sobre construção de algoritmos e as estruturas de dados.

ED = Estrutura de Dados

Introdução | Conceitos Úteis

Page 9: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• E.D.

Estrutura de Dados

Page 10: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

Todo trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória principal.

E podemos classifica-las em 2 tipos.

• Instruções (determinam o funcionamento da maquina)• Dados (informações a serem processadas)

ED = Estrutura de Dados

Introdução | ED

Page 11: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

Durante a execução de qualquer tipo de programa, os computadores estão manipulando informações, para não se “esquecer” das informações, os computadores precisam guardá-las em sua memória principal. Essas posições de memória, que contem uma determinada informação, são denominadas pelos programas como variáveis.

ED = Estrutura de Dados

Introdução | ED

Page 12: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

Toda variavel possui três atributos: nome; tipo; valor ou informação.

Os dados a serem manipulados por um programa são armazenados em posições da memoria principal. Cada posição de memória só pode armazenar um determinado tipo de dado. Entao antes de usar essas posições de memória é necessario definir o tipo de dado que será armazenado.

ED = Estrutura de Dados

Introdução | ED

Page 13: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

Podemos definir ED como a organização e a representação das informações geralmente na memoria do computador para obter a devida abstração de um problema real e a melhor eficiencia na execução dos algoritmos, cujas operações atuam sobre essas estruturas de dados.

ED = Estrutura de Dados

Introdução | ED

Page 14: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• Tipos Abstratos de Dados (TAD)

Estrutura de Dados

Page 15: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

O que é uma Estrutura de Dados (ED)?São Tipos Abstratos de Dados

Introdução | TAD

O que é Tipos Abstratos de Dados (TAD)?Pode ser definido como um conjunto de valores e uma coleção de operadores que atuam sobre esses valores. As operações devem ser consistentes com os tipos de valores.

Page 16: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

A idéia fundamental do tipo de dados abstratos é possibilitar ao programador a separação do que fazer e de como fazer.

Introdução | TAD

Considerando a necessidade do programador de gravar um registro em um arquivo. Nessa situação, o programador só precisa saber o que deve ser feito; no caso, gravar um registro. Esse procedimento “gravar” representa um TAD, pois envolve um conjunto de valores e de ações específicas sobre os mesmos.

Page 17: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | TAD

DadosEstrutura de

dados

Função A

Função B

Dados

Modelo de um tipo abstrato de de Dados (TAD)

Page 18: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

Não confunda Tipos de Dados com Tipos Abstratos de Dados (TAD). Embora estes termos sejam parecidos, eles têm significados diferentes.

Em linguagens de programação, o tipo de dados de uma variável define o conjunto de valores que a variável pode assumir. Por exemplo, uma variável do tipo lógico pode assumir o valor verdadeiro ou falso.

Introdução | TAD

Page 19: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Uma declaração de variável em uma linguagem como C ou Pascal especifica:

1. O conjunto de valores que pode assumir. 2. O conjunto de operações que podemos efetuar. 3. A quantidade de bytes que deve ser reservada para

ela.4. Como o dado representado por esses bytes deve ser

interpretado (por exemplo, uma cadeia de bits pode ser interpretada como um inteiro ou real...).

Introdução | TAD

Page 20: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Então, tipos de dados podem ser vistos como métodos para interpretar o conteúdo da memória do computador.

Mas podemos ver o conceito de Tipo de Dados de uma outra perspectiva: não em termos do que um computador pode fazer (interpretar os bits...) mas em termos do que os usuários desejam fazer (somar dois inteiros...)

Introdução | TAD

Page 21: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Este conceito de Tipo de Dado divorciado do hardware é chamado Tipo Abstrato de Dado - TAD.

Estrutura de Dados é um método particular de se implementar um TAD.

A implementação de um TAD escolhe uma ED para representá-lo. Cada ED é construída dos tipos primitivos (inteiro, real, char,...) ou dos tipos compostos (array, registro,...) de uma linguagem de programação.

Introdução | TAD

Page 22: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Não importa que tipo de dados estaremos trabalhando, a primeira operação a ser efetuada em um TAD é a criação.

Depois, podemos realizar inclusões e remoções de dados. A operação que varre todos os dados armazenados num TAD é o percurso, podendo também ser realizada uma busca por algum valor dentro da estrutura.

Introdução | TAD

Page 23: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• Tipos de dados

Estrutura de Dados

Page 24: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Tipos

Tipos de Dados

Numérico Literal Caractere Lógico

Inteiro

Real

Page 25: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados

Prof. Miguel [email protected]

INSTITUTO FEDERALAMAZONAS

Page 26: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Aula de hoje:

AlgoritmosDificuldades na construçãoComplexidadeMétodos para diminuição da

complexidade

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas

Referencia bibliografica:

Estrutura de Dados e Algoritmos

Uma Abordagem Didatica

Celso Roberto Moraes

Futura

Page 27: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• Algoritmos

Estrutura de Dados

Page 28: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Pode ser definido como um conjunto de passos descritos sem ambiguidade, possuindo um início, que termine em um período de tempo finito e que apresente sempre o mesmo padrão de comportamento para conduzir-nos a uma solução adequada de um determinado problema.

Introdução | Algoritmos

Page 29: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Podemos evidenciar tres caracteristicas importantes sobre os algoritmos:

1. É rigoroso na sua definação2. Legibilidade3. Portabilidade

Introdução | Algoritmos

Page 30: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

A primeira característica está associada à ausência de ambiguidade, ou seja, não deve haver dupla interpretação das suas instruções. Esse objetivo pode ser atingido, se o algoritmo usar um pequeno conjunto de significado único, porém, podereso, no sentido prinicipal de ser suficiente para construir quaisquer algoritmos.

Introdução | Algoritmos

Page 31: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Dizer que o algortimo apresenta um bom nível de legibilidade significa dizer que a forma da representação da solução proposta pode ser facilmente comunicada para outras pessoas fazerem a avaliação e o uso do algoritmo sugerido como solução para um determinado problema. E para isso é muito importante, porque parece que as pessoas temdem a resolver muitos problemas semelhantes. Por que, então, não aproveitar a solução a solução já identificada por outras pessoas?

Introdução | Algoritmos

Page 32: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Finalmente, se um algoritmo possuir uma boa portabilidade, indica que ele foi elaborado sem os meandros muitas vezes presentes nas linguagens de programação. Um algoritmo será melhor quando passarmos a considerar os aspectos realmentes relevantes da solução, deixando de lado detalhes técnicos de uma ou outra linguagem de programação. A preocupação mais detalhada com os aspectos técnicos de uma linguagem de programação terá seu momento de triunfo quando for realizada a implementação, ou seja, a codificação do algoritmo.

Introdução | Algoritmos

Page 33: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• Dificuldades na construção de Algoritmos

Estrutura de Dados

Page 34: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Parece que construir algoritmos é uma tarefa trivial. Isso pode ser verdadeiro, se o problema a ser considerado for também trivial. Mas, em nosso dia-a-dia, muitas vezes ficamos frente a frente com problemas não tão triviais assim. Então, onde estaria a dificuldade em construir algoritmos?

Page 35: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

A resposta esta na complexidade que vai aparecendo em inúmeras situações, que vão desde o entendimento do cálculo da área de uma figura geométrica qualquer, passando pelo funcionamento de um sistema de contas a pagar, ou, ainda como se realiza o cálculo de área de uma função matemática usando a regra do trapézio, até o funcionamento do compartilhalmento do processador ou da memória principal de um computador em um ambiente multiusuário e multitarefas,

Page 36: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

com o objetivo de desenvolver um algoritmo que escalone a utilização desses dois recursos de forma justa entre as dezenas, centenas de processos existentes, e obtendo, ao mesmo tempo, o máximo de eficiência nessa tarefa de escalonamento de uso do processador.

A complexidade, para nós programadores, é encarada como sinônimo de variedade, que, por sua vez, representa a quantidade de situações diferentes que um problema pode apresentar as quais devem ser previstas na sua solução.

Page 37: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• Complexidade

Estrutura de Dados

Page 38: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Eliminarmos totalmente a complexidade, não é possível. Entretanto, podemos utilizar algumas técnicas para ajudar-nos a dominar a complexidade presente nos problemas do nosso mundo. Para isso, é necessário que alguns pontos importantes sejam compreendidos: “o que fazer?” versus “como fazer?”, além de legibilidade e portabilidade.

Page 39: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

O primeiro ponto refere-se à necessidade de compreendermos o que deve ser feito antes de pensar na maneira como faze-lo. Muitas vezes, tentamos esboçar uma solução sem ao menos realizar uma leitura mais cuidadosa do problema. Essa pressa pode, muitas vezes, levar-nos a adotar uma estratégia de solução (como se faz) bastante equivocada. Podemos, com isso, pagar um alto preço pela ineficiência quase intolerável da solução obtida.

Page 40: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Após o entendimento sobre o que deve ser realizado, ou seja, depois de definirmos qual o produto final desejado, é o momento de pensarmos como poderemos desenvolver uma solução para que consigamos obter esse produto desejado (resultado). Talvez um exemplo simples possa ajudar a observar a diferença entre esses dois pontos.

Page 41: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Para tanto, podemos considerar o seguinte problema: f(x) = 4x2 + 5x + 10 Se pensarmos “o que” deve ser realizado, podemos responder que o objetivo é obter as raízes dessa equação de segundo grau. A questão de “como fazer” poderia ser deixada para um segundo momento, quando definiriamos a necessidade de calcular o valor do Delta, verificar se o seu resultado é maior ou igual a zero e, finalmente, realizar o cálculo efetivo das raízes no conjunto dos reais ou dos imaginários.

Page 42: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

A Legibilidade, como já dissemos, é a capacidade de outras pessoas entenderem com um mínimo de esforço a solução indicada para um problema. Percebemos que a questão em discussão nesse ponto é a comunicação. A estrutura por meio da qual a solução foi descrita deve permitir que uma pessoa entenda os principais passos que, seguidos, conduzem à solução.O ultimo ponto, a portabilidade, implica diretamente no alto grau de independencia da estrutura usada para a construção do algoritmo das linguagens de programação.

Page 43: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• Métodos para diminuição da complexidade

Estrutura de Dados

Page 44: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Existem várias sugestões de métodos para ajudar-nos a diminuir e a dominar a complexidade que pode aparecer nos problemas. Entre outros, podemos citar:

a) Dividir para conquistar.b) Planejamento reverso.

Page 45: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Dividir para conquistar: A primeira sugestão é usada desde os tempos do Imperador Julio Cesar, o todo-poderoso, na invasão e conquista de novos terras. Antes de invadir um novo reino, o Imperador procurava introduzir espiões que provocavam pequenos conflitos internos, visando enfraquecer o reino a ser conquistado.

Page 46: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Esses pequenos conflitos provocam normalmente a ruptura do reino a ser invadido e conquistado, tornando, dessa forma, mais fácil a tarefa que antes parecia impossível.

Essa idéia de invadir para conquistar, no contexto da construção de algoritmos, consiste em dividir o problema original em partes menor complexidade. Deve-se contudo, analizar a divisão obtida para garantir a coerencia dessa divisão. Se alguma parte não for bem compreendida, pode-se aplicar a ela novamente o método.

Page 47: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Finalmente, analisar o objeto obtido para garantir entendimento e coerência de todas as partes. A decomposição do problema original apresenta normalmente uma estrutura de suas partes em uma forma hierárquica, como é apresentado abaixo:

Page 48: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

P1

P2 P3 P4

P5 P6 P7

Page 49: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Os passos descritos anteriormente podem ser resumidos pelo princípio denominado refinamento top-down, e esse princípio é a verdadeira chave para a escrita de programas grandes e complexos que funcionam de forma adequada. O princípio implica no adiamento das considerações de detalhes, mas jamais nas considerações sobre a precisão e sobre o rigor nesse processo de refinamento, em busca do domínio da complexidade do problema original.

Page 50: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Planejamento reverso: ela recomenda a determinanação dos dados de saídas, ou seja, identificar o que é desejado como resultado. Definindo os dados de saídas, pode ser possível, de maneira resersa, determinar os componentes que formam os dados de entrada, assim como todas as etapas de transformações desses dadis de entrada, para conseguirmos as saídas desejadas.

Page 51: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Apresentamos um problema simples, que consiste a obtenção do volume de um cone para ilustrar o método do planejamento reverso. O retângulo listado é a representação abstrata do algoritmo que atua nas entradas para obtenção das saídas necessáarias. Assim, podemos observar que a aplicação do método do planejamento reverso, a partir da identificação do dado de saída, permitiu a identificação dos dados de entrada e o respectivo processamento sobre esses dados para obter o resultado desejado.

Page 52: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Entrada SaídaRaioAltura

Volume Do cone

Volumne = (raio2 * 3,1416 * altura) / 3

Figura com a representação do método do planejamento reverso.

Page 53: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• Metodologia para construção de algoritmos

Estrutura de Dados

Page 54: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Metodologia que pode auxiliá-lo na elaboração de algoritmos:

1. Procure entender o que deve ser feito.

2. Identifique as entradas de dados

3. Identifique as saídas de dados

Page 55: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

4. Determine o que deve ser feito, para transformar as entradas de determinadas nas saídas especificadas.• Utilizar o método do particionamento (dividir para

conquistar)• Se for o caso, aplicar tambem o planejamento

reverso para auxiliar o domínio da complexidade do problema.

• Construir um esboço do algoritmo com as estruturas sequencial, condicional e repetitiva.

5. Executar o algoritmo, observando os resultados obtidos com valores previamente esperados.

Page 56: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• Formas de expressar um algoritmo

Estrutura de Dados

Page 57: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Temos uma grande preocupação na construção de um algoritmo que é: fazer de forma que a comunicação ocorra com o menor esforço possível e principalmente sem ambiguidade.

Existem diversas sugestões para a construção de algoritmos. Podemos citar as três principais:

a) Descrição Narrativab) Fluxograma convencionalc) Notação de pseudocódigo

Page 58: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

A forma narrativa como o próprio nome diz, permite o uso de frases na língua portuguesa com o objetivo de descrever os passos principais de uma solução.

Exemplo:1) Obter as notas da primeira e da segunda prova;2) Calcular a média aritmética entre as duas;3) Se a média for maior ou igual a sete, o aluno foi

aprovado; senão ele foi reprovado.

Page 59: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

A vantagem da forma narrativa é que podemos considerá-la uma forma livre para expressar uma solução. É uma boa indicação para construir os esboços iniciais de uma algoritmo. A desvantagem fica por conta da possibilidade do aparecimento de ambiguidades na interpretação das frases.

Page 60: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

O fluxograma é uma alternativa muito interessante para a construção de algortimos, porque, muitas vezes, um desenho vale mais do que mil palavras. No fluxograma, são usados desenhos padronizados que indicam ações de aquisição ou de saída de dados, processamentos, decisões, repetições, etc.

Na figura abaixo encontraremos o mesmo algoritmo do cálculo da média já apresentado na forma narrativo e que agora é representado pelo fluxograma.

Page 61: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Nota1, Nota2

Média = (nota1 + nota2) / 2

>= 7

“APROVADO”“REPROVADO”

Inicio

Fim

Page 62: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

A grande vantagem do fluxograma, que é representar o algoritmo na forma de desenho, é, muitas vezes, seu calcanhar-de-aquiles. Isso ocorre porque, muitas vezes um algoritmo complexo, tais como que atuam sobre pilhas, filas ou que fazem classificação e pesquisa de elementos, ou ainda que apresentam utilização de recursividade como solução, os desenhos padronizados podem ser inadequados para a comunicação da solução, principalmente se o fluxograma vier a tornar-se extenso e ocupar várias páginas. Nesses cenários, parece ser mais facil escrever do que desenhar.

Page 63: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

A terceira possibilidade de expressar a solução de um algoritmo, é em uma notação denominada pseudocódigo. Como o próprio nome sugere, é uma notação que lembra os comandos de uma linguagem de programação, mas, por ser um falso código, não considera todo o rigor de sintaxe que uma linguagem de programação deve apresentar para que o programa passe pelo processo de compilação.

Page 64: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Não existe, de fato, uma notação de pseudocódigo que pode ser considerada padrão. O que normalmente existe é um conjunto reduzido de operações e estruturas primitivas, porém mais que suficientes para construir quaisquer algoritmos. O sentido de primitivo refere-se ao significado único que tais operações e estruturas indicam, como, por exemplo, a obtenção de dados do mundo externo, seu processamento e posterior exibição de resultados, estruturas condicionais e repetitivas.

Page 65: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

VariáveisNota1, Nota2 : realMédia : real

Início leia nota1

leia nota2média = (nota1 + nota2) / 2se média >= 7 entao

imprima “aprovado”senao

imprima “reprovado”fim seimprima média

fim

Page 66: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

1. Operações primivitas de entrada de dados: Permite que uma dado seja colocado em uma variavel

LEIA <lista de variáveis >2. Operaçoes primitivas de saída de dados: Permite a

exibição de conteúdo de uma variável ou até mesmo de uma mensagem qualquer; no caso colocada entre aspas. IMPRIMA <lista de variáveis>

3. Operações primitiva de atribuição ou simplesmente atribuição: Refere-se ao armazenamento do resultado obtido do lado direito, na variável posicionada do esquerdo. <nome da variavel> = <expressão>

Page 67: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

4. Estrutura sequencial: Refere-se à disposição sequencial que todo o algoritmo tem, ou seja, executa-se cada passo somente após o término do passo anterior.

.

.

. < passo1 >

< passo2 >< passo3 >...

Page 68: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

5. Estrutura condicional: É a estrutura na qual uma expressão lógica é avaliada. Se o resultado for verdadeiro, é realizado um conjunto de operações; caso contrário, ou seja, se o resultado for falso, realiza-se outro conjunto de instruções. Podemos observar aqui a utilização ou não do conjunto de instruções para o caso da expressão lógica for falsa, ou ainda haver os chamados aninhamentos de estruturas condicionadas..

Page 69: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Se <condicao> então <conjunto de operações 1>Senão

<conjunto de operações 2>Fim se

Page 70: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Se <condicao> entãoSe <condicao> então

<conjunto de operações 1>Senão

<conjunto de operações 2>Fim se

SenãoSe <condicao> então

<conjunto de operações 3>Senão

<conjunto de operações 4>Fim se

Fim se

Page 71: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

6. Estrutura de seleção de múltipla escolha: Em vez de optarmos pela utilização de várias estruturas condicionadas aninhadas, que têm um potencial para provocar confusão na interpretação de seu significado, podemos decidir pelo uso da seleção de múltipla escolha para elaborarmos algoritmos mais concisos e com maior legibilidade. Deve-se lembrar contudo, que a utilização do senão : <conjuto de instruções> é opcional na estrutura de múltipla escolha.

Page 72: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Caso <dado> seja<n1> : <conjunto de instruções 1><n2> : <conjunto de instruções 2><n3> : <conjunto de instruções 3>

…Senão : <conjunto de operações 2>

Fim caso

Leia codigoCaso codigo seja

<1> : imprima “aprovado”<2> : imprima “reprovado”<3> : imprima “exame final”Senão : imprima “instrução desconhecida”

Fim caso

Page 73: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

6. Laços contados: São as estruturas usadas sabemos antecipadamente o número de vezes que um certo trecho deve ser repetido. O incremento da variável de controle deve ser entendido que é realizado automaticamente pela estrutura do laço contado. A variável de controle será incrementada de uma unidade, a não ser que um passo de incremento diferente de uma unidade seja especificado em passo <valor>

Page 74: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Observamos que o incremento de variável de controle deve ser, necessariamente, um número inteiro. A cada incremento realizado, a estrutura de laço contado verifica (de forma automática) se o novo valor obtido para a variável de controle não ultrapassou o valor estipulado em até <valor final>. É muito importante que seja entendido que tanto o incremento da variável de controle como se o valor da mesma ultrapassou ou não o valor final são controles que devem ser subentendidos como embutidos na estrutura de laços contados.

Page 75: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Muitas vezes, as linguagens de programção até tornam explícitas as condições-limite do valor da variável de controle (por exemplo, x < 10 ou x >= 4), outras permitem que o passo de incremento seja diferente de uma unidade, ou ainda que haja incremento negativo, porém existem muitas liguagens de programação que não permitem essas possibilidades. Mas a ideía do pseudo-código é conseguir uma independencia de uma ou outra linguagem de programação, então, assumiremos que a condição genérica para limite do valor da vaiável de controle será: <variavel de controle> <= <valor limite>

Page 76: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

enquanto essa condição for verdadeira, o conjunto de instruções incorporadas no laço contado será repetido! Além disso, se o passo do incremento da variável de controle for igual a um, poderemos abrir mão de escrever passo <valor> no pseudocódigo.

para <variavel de controle> = <valor ini> até <valor Fim> passo <valor> faça <conjunto de instruções 1>

Fim para

Page 77: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Tot = 1

para x = 1 até 3 passo <valor> faça

Tot = Tot * x

Fim para

Imprima Top

Page 78: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

7. Laços condicionais: As estruturas sob o controle dos laços condicionais são executados até que uma determinada condição seja satisfeita. Recomenda-se sua utilização quando não é possível determinar o número de vezes que um certo conjunto de instruções será repetido. Sabemos apenas que em uma certa condição essa repetição deverá cessar. Existem duas possibilidades: enquanto e repita.

Page 79: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Enquanto: Faz no início a avaliação de uma condição, de tal forma que, se o resultado for falso, o conjunto de instruções sob seu controle não será executado. O fluxo de execução continua normalmente após fim enquanto. Entretanto, se o resultado for verdadeiro, o conjunto de instruções é executado, depois a condição é novamente testada e, se continuar verdadeiramente testada e, se continuar verdadeira, o conjunto de instruções é novamento repetido. Isso acontece até que a condição se torne falsa.

Page 80: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

x = 1

enquanto x < 10 faça

x = x* 2

Fim enquanto

Imprima x

enquanto <condição> faça <conjunto de instruções >

Fim enquanto

Page 81: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Repita: Propicia uma repetição de um certo conjunto de instruções, tal como o ‘enquanto’; entretanto, o teste da condição é realizado após o conjunto de instruções ser executado pelo menos uma vez. Então, o teste da condição é realizado novamente e, se o resultado for verdadeiro, o loop é interrompido e o fluxo de execução continua na instrução seguinte a até <condição>.

Page 82: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

Observamos que na estrutura de repetição ‘enquanto’ existe uma possibilidade do conjunto de instruções sob seu domínio não ser realizado nenhuma vez. Já na estrutura de repetição ‘repita’ o conjunto de instruções é executado, com toda a certeza, pelo menos uma vez. O uso de uma estrutura ou de outra dependerá muito de que é necessário realizar em um certo algoritmo.

Page 83: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

Introdução | Algoritmos

x = 1

repita

x = x * 2

até x < 10

Imprima x

repita <conjunto de instruções >

Até <condição>

Page 84: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

• Exercícios

Estrutura de Dados

Page 85: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas Exercícios | Tipos

1. Escreva um algoritmo em pseudocódigo para conceder um aumento de 5% para todos os funcionários cadastrados na folha de pagamento.

2. Escreva um algoritmo em pseudocódigo que recebe um numero inteiro como entrada, calcule o número de dígitos e sua soma. Ex.: entrada = 12345 resultado 5 digitos e soma dos digitos é igual 15

Page 86: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas Exercícios | Tipos

3. Dado um número de 3 algarismos, construa e exiba outro numero de quatro algarismos de acordo com as seguintes regras:a) Os 3 primeiros algarismos, contados da direita para a esquerda, são iguais aos do número que foi dado.b) O 4 algarismo é um digito de controle calculado a partir do número dado da seguinte forma: soma-se o primeiro com o segundo algarismos, multiplica-se por dois e com o terceiro algarismo multiplica-se por seis.c) Finalmente, calcular um dígito de controle obtido com o resto da divisão do resultado da Etapa B por nove.

Page 87: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas Exercícios | Tipos

4. Um home precisa atravessar um rio com um barco que possui apenas a capacidade de transporta-lo e mais uma de tres cargas, que são: um lobo, uma cabra e um maço de alfafa. O que o homem deve fazer para atravessar o rio sem permitir que fiquem em uma margem, por motivos óbvios, o lobo e a cabra, a cabra e a alfafa? Faça a contrução do algoritmo na forma narrativa.

Page 88: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas Exercícios | Tipos

5. Elabore um algoritmo na forma narrativa que mova tres discs de uma Torre de Hanói, constituída de três hastes (a,b,c), uma as quais serve de suporte para três discos de tamanhos diferentes (1,2,3), os menores estão sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contando que nunca seja colocado um disco maior sobre um menor. O objetivo é transferir os três discos para outra haste.

Page 89: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Estrutura de Dados - Prof. Miguel Bonafe

Instituto Federal

Amazonas Exercícios | Tipos

6. Escreva um algoritmo que considere a entrada e três números inteiros e exiba o maior e o menor deles.

7. Considere a entrada de varios números inteiros. Suponha que a entrada seja finalizada pelo valor zero. Elabore um algoritmo para exibir, como saída, a estatística de números maiores e menores que cinco.

Page 90: Estrutura de Dados Prof. Miguel Bonafe miguelbonafe@hotmail.com INSTITUTO FEDERAL AMAZONAS.

Instituto Federal

Amazonas

Estrutura de Dados - Prof. Miguel Bonafe

FIM

Introdução | Algoritmos