Estrutura de Dados Prof. Miguel Bonafe

Slides:



Advertisements
Apresentações semelhantes
Algoritmo e Programação
Advertisements

ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Programação em Java Prof. Maurício Braga
Introdução a Algoritmos
Estruturas de Controle
TÉCNICAS DE PROGRAMAÇÃO I
Amintas engenharia.
Estruturas de Repetição
INTRODUÇÃO – LOGICA E ALGORITMOS
Programação para Geociências
Paradigmas de Linguagens Conceitos Básicos
Lógica de Programação Módulo II
Recursividade Conceitos e Aplicações.
Introdução à Lógica de Programação (cont.)
Estruturas de Controle
THOBER CORADI DETOFENO, MSC. Aula 07
Universidade Federal do Espírito Santo
ALGORITMO E ESTRUTURA DE DADOS
INTRODUÇÃO À PROGRAMAÇÃO
O Portal do Estudante de Computação
Formas de Representação de Algoritmos
Programação I Caderno de Exercícios Nome.
Professor Fernando Luís
Processamento da Informação BC-05045
Paradigmas de programação
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
PROGRAMAÇÃO I UNIDADE 1.
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 6 Vetores e Matrizes
Comunicação Inclusiva Acessibilidade e Programação Web
Linguagem de Programação II Parte V
Linguagem de Programação II Parte IX
CEPMAT Curso Técnico em Informática
INTRODUÇÃO – LOGICA E ALGORITMOS
Análise Estruturada.
Estrutura de dados, pseudocódigo
FTIN Formação Técnica em Informática
ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Introdução a Programação
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
TÉCNICAS DE PROGRAMAÇÃO
Instituto Federal de Santa Catarina
Linguagem e Ambiente Scratch
Professor: Márcio Amador
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
Introdução a Algoritmos
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
Instituto Federal de Santa Catarina
Igor Steinmacher, MSc. O maravilhoso mundo da Lógica de Programação.
Programação de PIC em C Exposição das funções básicas para
Algoritmos e Estruturas de Dados I – Estruturas de Controle de Fluxo
Linguagens de Programação
Fundamentos de linguagens de programação
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Programação de Computadores - 1
Introdução a Programação
Algoritmos Prof.: Carlos Alberto
Etapas : Algoritmo é uma sequência lógica de instruções que podem ser executadas. É importante destacar que qualquer tarefa que siga um certo padrão.
Algoritmos e Programação I
ALGORITMOS Profº Antonio Carlos Marcelino de Paula.
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Exercícios Faça um algoritmos para trocar uma lampada queimada.
Sistemas para Internet Algoritmos e Lógica de Programação
Linguagem de Programação Prof. Fabricio Roulin Bittencout
Lógica de programação Introdução à lógica de programação
Adriano A. Ribeiro. Português Estruturado Apesar do Português Estruturado ser uma linguagem bastante simplificada, ela possui todos os elementos básicos.
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

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

Apostila #1 Referencia bibliográfica: Estrutura de Dados e Algoritmos INSTITUTO FEDERAL AMAZONAS Apostila #1 Referencia bibliográfica: Estrutura de Dados e Algoritmos Uma Abordagem Didatica Celso Roberto Moraes Editora Futura

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Aula de hoje: Conceitos úteis E.D. Tipos Abstratos de Dados (TAD) Tipos de Dados Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados Conceitos úteis

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 Estrutura de Dados - Prof. Miguel Bonafe

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 Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Conceitos Úteis 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 Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Conceitos Úteis 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 Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados E.D.

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | ED 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 Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | ED 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 Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | ED 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 Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | ED 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 Estrutura de Dados - Prof. Miguel Bonafe

Tipos Abstratos de Dados (TAD) Estrutura de Dados Tipos Abstratos de Dados (TAD)

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | TAD O que é uma Estrutura de Dados (ED)? São Tipos Abstratos de Dados 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | TAD A idéia fundamental do tipo de dados abstratos é possibilitar ao programador a separação do que fazer e de como fazer. 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | TAD Modelo de um tipo abstrato de de Dados (TAD) Dados Estrutura de dados Função A Função B Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | TAD 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | TAD Uma declaração de variável em uma linguagem como C ou Pascal especifica: O conjunto de valores que pode assumir. O conjunto de operações que podemos efetuar. A quantidade de bytes que deve ser reservada para ela. Como o dado representado por esses bytes deve ser interpretado (por exemplo, uma cadeia de bits pode ser interpretada como um inteiro ou real...). Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | TAD 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...) Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | TAD 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | TAD 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados Tipos de dados

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Tipos Tipos de Dados Numérico Literal Caractere Lógico Inteiro Real Estrutura de Dados - Prof. Miguel Bonafe

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

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Aula de hoje: Algoritmos Dificuldades na construção Complexidade Métodos para diminuição da complexidade Referencia bibliografica: Estrutura de Dados e Algoritmos Uma Abordagem Didatica Celso Roberto Moraes Futura Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados Algoritmos

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos Podemos evidenciar tres caracteristicas importantes sobre os algoritmos: É rigoroso na sua definação Legibilidade Portabilidade Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos 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? Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos 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. Estrutura de Dados - Prof. Miguel Bonafe

Dificuldades na construção de Algoritmos Estrutura de Dados Dificuldades na construção de Algoritmos

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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? Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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, Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados Complexidade

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Métodos para diminuição da complexidade Estrutura de Dados Métodos para diminuição da complexidade

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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: Dividir para conquistar. Planejamento reverso. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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: Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos P1 P2 P3 P4 P5 P6 P7 Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos Entrada Saída Raio Altura Volume Do cone Volumne = (raio2 * 3,1416 * altura) / 3 Figura com a representação do método do planejamento reverso. Estrutura de Dados - Prof. Miguel Bonafe

Metodologia para construção de algoritmos Estrutura de Dados Metodologia para construção de algoritmos

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos Metodologia que pode auxiliá-lo na elaboração de algoritmos: Procure entender o que deve ser feito. Identifique as entradas de dados Identifique as saídas de dados Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Formas de expressar um algoritmo Estrutura de Dados Formas de expressar um algoritmo

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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: Descrição Narrativa Fluxograma convencional Notação de pseudocódigo Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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: Obter as notas da primeira e da segunda prova; Calcular a média aritmética entre as duas; Se a média for maior ou igual a sete, o aluno foi aprovado; senão ele foi reprovado. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos Nota1, Nota2 Média = (nota1 + nota2) / 2 >= 7 “APROVADO” “REPROVADO” Inicio Fim Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos Variáveis Nota1, Nota2 : real Média : real Início leia nota1 leia nota2 média = (nota1 + nota2) / 2 se média >= 7 entao imprima “aprovado” senao imprima “reprovado” fim se imprima média fim Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos Operações primivitas de entrada de dados: Permite que uma dado seja colocado em uma variavel LEIA <lista de variáveis > 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> 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> Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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 > Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. . Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos Se <condicao> então <conjunto de operações 1> Senão <conjunto de operações 2> Fim se Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos Se <condicao> então <conjunto de operações 1> Senão <conjunto de operações 2> Fim se <conjunto de operações 3> <conjunto de operações 4> Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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 codigo Caso codigo seja <1> : imprima “aprovado” <2> : imprima “reprovado” <3> : imprima “exame final” Senão : imprima “instrução desconhecida” Fim caso Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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> Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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> Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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 Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos Tot = 1 para x = 1 até 3 passo <valor> faça Tot = Tot * x Fim para Imprima Top Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos enquanto <condição> faça <conjunto de instruções > Fim enquanto x = 1 enquanto x < 10 faça x = x* 2 Fim enquanto Imprima x Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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>. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas 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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos repita <conjunto de instruções > Até <condição> x = 1 repita x = x * 2 até x < 10 Imprima x Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados Exercícios

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 Estrutura de Dados - Prof. Miguel Bonafe

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. Estrutura de Dados - Prof. Miguel Bonafe

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. Estrutura de Dados - Prof. Miguel Bonafe

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. Estrutura de Dados - Prof. Miguel Bonafe

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. Estrutura de Dados - Prof. Miguel Bonafe

Estrutura de Dados - Prof. Miguel Bonafe Instituto Federal Amazonas Introdução | Algoritmos FIM Estrutura de Dados - Prof. Miguel Bonafe