Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Conceito de Estrutura de dados, Notas de estudo de Programação Javascript

Material explicando a Estrutura de dados!!

Tipologia: Notas de estudo

2020

Compartilhado em 16/06/2020

Pedreiro1337
Pedreiro1337 🇧🇷

2 documentos

1 / 5

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Módulo 2 - Estrutura de Dados
2 - Estrutura de Dados
Com vários tipos de dados diferentes e possíveis, a escolha pela maneira adequada
para melhor garantir o relacionamento da estrutura de dados com o domínio do
problema a ser tratado pela lógica de programação é fator determinante para obtenção
de algoritmo otimizado.
As estruturas de dados serão responsáveis pela especificação conceitual dos dados
de forma conciliadora com o domínio do problema que as rotinas do programa estão
resolvendo. Imagine que a interface do sistema está tratando de um cálculo de reajuste
percentual para o preço de um determinado produto. Faz sentido que os campos
destinados à indicação do percentual a ser utilizado no cálculo assim como o preço do
produto estejam associados a um tipo de dados que permite operações numéricas.
Importante perceber ainda que faz parte do ambiente do estudo da Estrutura de
Dados as operações para manipulação dos seus dados que também estão relacionadas
com o domínio do problema. Alterar o preço do produto por meio de um percentual
informado talvez signifique ter que localizar tal produto em uma lista e alterar seu valor.
Outro detalhe interessante é que os tipos de dados capazes de representar por
completo o domíno do problema normalmente não se limitam ao uso apenas dos dados
primitivos oferecidos pelas linguagens de programação. Porém, são os tipos básicos de
dados e operadores que as linguagens oferecem que permitirão a construção de uma
estrutura flexível que seja adequada ao problema que se pretende resolver. Assim, é o
programador quem deverá fazer bom uso da implementação da estrutura abstrata de
dados para conseguir bons resultados.
Para ilustrar esse conceito será feito o uso do exemplo apresentado por Edelwiss e
Galante (2009), no qual é tratada uma estrutura de dados responsável por armazenar
“datas”.
O problema: construir um tipo de dados que permita armazenar uma data no
formato de dia, mês e ano. Além disso é necessário somar dias à uma determinada data,
escrevê-la por extenso e verificar se é válida.
Para resolver essa situação ou qualquer outra que se apresente, será
necessário realizar duas etapas.
Etapa 1: estruturar um tipo de dado para representar e armazenar
adequadamente o domínio do problema. Uma das maneiras seria criar um tipo de
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Conceito de Estrutura de dados e outras Notas de estudo em PDF para Programação Javascript, somente na Docsity!

Módulo 2 - Estrutura de Dados

2 - Estrutura de Dados

Com vários tipos de dados diferentes e possíveis, a escolha pela maneira adequada para melhor garantir o relacionamento da estrutura de dados com o domínio do problema a ser tratado pela lógica de programação é fator determinante para obtenção de algoritmo otimizado. As estruturas de dados serão responsáveis pela especificação conceitual dos dados de forma conciliadora com o domínio do problema que as rotinas do programa estão resolvendo. Imagine que a interface do sistema está tratando de um cálculo de reajuste percentual para o preço de um determinado produto. Faz sentido que os campos destinados à indicação do percentual a ser utilizado no cálculo assim como o preço do produto estejam associados a um tipo de dados que permite operações numéricas. Importante perceber ainda que faz parte do ambiente do estudo da Estrutura de Dados as operações para manipulação dos seus dados que também estão relacionadas com o domínio do problema. Alterar o preço do produto por meio de um percentual informado talvez signifique ter que localizar tal produto em uma lista e alterar seu valor. Outro detalhe interessante é que os tipos de dados capazes de representar por completo o domíno do problema normalmente não se limitam ao uso apenas dos dados primitivos oferecidos pelas linguagens de programação. Porém, são os tipos básicos de dados e operadores que as linguagens oferecem que permitirão a construção de uma estrutura flexível que seja adequada ao problema que se pretende resolver. Assim, é o programador quem deverá fazer bom uso da implementação da estrutura abstrata de dados para conseguir bons resultados. Para ilustrar esse conceito será feito o uso do exemplo apresentado por Edelwiss e Galante (2009), no qual é tratada uma estrutura de dados responsável por armazenar “datas”.

O problema : construir um tipo de dados que permita armazenar uma data no formato de dia, mês e ano. Além disso é necessário somar dias à uma determinada data, escrevê-la por extenso e verificar se é válida. Para resolver essa situação ou qualquer outra que se apresente, será necessário realizar duas etapas. Etapa 1: estruturar um tipo de dado para representar e armazenar adequadamente o domínio do problema. Uma das maneiras seria criar um tipo de

dado que contivesse três campos. O primeiro para armazenar o dia, o segundo para armazenar o mês e o terceiro para armazenar o ano. Como tanto dias quanto meses ou anos podem ser representados por números, esses três campos poderiam ser do tipo inteiro. Essa estrutura pode ser genericamente descrita conforme o Exemplo 1: Classe = Date Date.dia: tipo inteiro; Date.mês: tipo inteiro; Date.ano: tipo inteiro; Fim da Classe

Exemplo 1 - Exemplo de estrutura para armazenar data

Etapa 2: determinar o funcionamento das operações aplicáveis ao tipo de dados. No caso do tipo Date seria possível, entre outras operações: acrescentar dias ou escrever a data por extenso. Vale destacar que as operações que precisarão ser realizadas dependem do domínio do problema. Talvez em um determinada situação a data não precise ser escrito por extenso, por exemplo. A descrição de algumas dessas operações pode ser, genericamente, assim demonstrada:

Function InitializeDate Inputs: Day, Month, Year (integer) Outuput: D (Date) Recebe três parâmetros inteiros referente ao dia, mês e ano e retorna a data resultante. Exemplo 2 - Exemplo de Operação que Inicializa a Data

Function PlusDays Inputs: D (Date), DaysToPlus (integer) Output: Date Recebe um parâmetro (D) com a data de referência para o cálculo e outro com a quantidade de dias (DaysToPlus) que devem ser somados à data de referência. Retorna a data resultante da soma dos dias.

Exemplo 3 - Exemplo de Operação que Soma dias à data

Em estruturas lineares os elementos (nodes) estão posicionados de maneira sequencial. Assim uma única repetição do algoritmo é capaz de percorrer os nodes do início ao fim da estrutura. Os nodes precisam de uma identificação de localização nas estruturas lineares. Isso pode ser feito por meio de um indicador de índice para casos como os vetores ou o próprio node precisa de um dado para apontar para o item anterior ou até mesmo posterior como, por exemplo, nas listas. Dessa maneira, cada node é uma estrutura personalizada, armazenando seu valor e a referência para o item seguinte, conforme ilustrado na Figura 2. Quando não existir um próximo elmento, o último node deve apontar para “ null ”, já que não existe um próximo item.

Figura 2 - Exemplo de Estrutura personalizada do node

Já nas estruturas não lineares os elementos podem ser mais de um predecessor ou sucessor. Fazem parte dessa classificação, entre outras, as estruturas de grafos e árvores. A Figura 3 ilustra uma estrutura em grafo.

Figura 3 - Exemplo de estrutura em grafo

E 1

E (^2) E 3

E (^4) E 5 E 6

Node Valor (value) Próximo (next)

Node Valor (value) Próximo (next)

Node Valor (value) Próximo (next)

NULL

A Figura 4 apresenta as principais estruturas lineares e não lineares que são abordados durante o período de estudo dessa disciplina. Cada uma delas será detalhada de maneira específica.

Figura 4 - Estruturas a serem estudadas

Para saber mais GRONER, L. Estrutura de dados e algoritmos com JavaScript. Novatec Editora. São Paulo, 2a. edição. 2018 NINA, E; GALANTE, R. Estrutura de dados. Bookman, Porto Alegre, 262 p. 2009 TENEMBAUM, A.A; LANGSAM, Y.; AUGENSTEIN, M.J. Estrutura de dados usando C. Makron Books, São Paulo, 1995 LAFORE, R. Estrutura de Dados e Algoritmos em JAVA. Editora Ciência Moderna, Rio de Janeiro, 2004 EGYPTO, C. Apostila de Esturuta de Dados. Centro Federal de Educação Tecnológica da Paraíba. 2004. Disponível em: DOVICCHI, J. Estrutura de Dados. E-book. Disponível em: http://www.inf.ufsc.br/~joao.dovicchi/pos-ed/ebook/e-book_estrut_dados_dovicchi.pdf RICARTE, I.L.M. Estruturas de Dados. Depto de Engenharia de Computação e Automação Industrial. Universidade Estadual de Campinas. Disponível em: http://calhau.dca.fee.unicamp.br/wiki/images/0/01/EstruturasDados.pdf SIMON, I. A Revolução Digital e a Sociedade do Conhecimento. 2000. Disponível em: https://www.ime.usp.br/~is/ddt/mac333/aulas/tema-11-24mai99.html KOFFMAN, E. B.; WOLFGANG, P.A.T. Objetos, Abstração, Estrutura de Dados e Projeto Usando C++. LTC. Rio de Janeiro, 2008.

ESTRUTURA DE DADOS

LINEARES

Pilha (Stack) Fila (Queue) Lista (List) Vetor e Matriz (Array)

NÃO LINEARES

Tabela de Espelhamento (Hash Table) Árvore (Tree)