38
# Estrutura de Dados # Aula 02 - Estrutura de dados e TAD Prof. Leinylson Fontinele Pereira

Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Embed Size (px)

Citation preview

Page 1: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

# Estrutura de Dados #

Aula 02 - Estrutura de dados e TAD

Prof. Leinylson Fontinele Pereira

Page 2: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Na aula anterior...

Apresentação da disciplina

Plano de aula

Introdução a Estrutura de Dados

11:27 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Page 3: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Introdução

11:27 3 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Page 4: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O que vamos aprender?

Estruturas de Dados

TAD

11:27 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Page 5: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Page 6: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O que é Estrutura de Dados?

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

É a disciplina que trabalha com estruturas mais complexas em relação aos tipos dedados em C++, para organizar os dados de acordo com um determinado problema.

Benefícios? Organização da informação

Melhora o desempenho

Proporciona o reuso de código

Proporciona interoperabilidade

Diminui custos

Page 7: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Tipo de Dados

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Define o conjuntos de valores (domínio) que uma variável pode assumir.

O dado pode ser um tipo padrão do próprio compilador.

No caso de C++ uma variável do tipo int, char, double ou float.

Exemplo:𝑖𝑛𝑡 → ⋯− 2,−1 , 0 , 1, 2, 3…

Page 8: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Tipo de Dados

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Para cada dado armazenado no computador, devemos definir o conjunto de valoresque ele pode assumir. Denominamos a esse conjunto de tipo de dados.

Por exemplo, um dado (variável) do tipo lógico pode assumir o valor verdadeiro oufalso .

Page 9: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Tipo Básicos de Dados

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

O tamanho e a faixa dos dados dependem do processador eda implementação do compilador

Page 10: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Estruturas de Dados

11:27 10 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Page 11: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O que é Estrutura de Dados?

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Relacionamento lógico entre os tipos de dados.

A implementação de um TAD escolhe uma estrutura de dados (ED) pararepresentá-lo. Cada ED pode ser construída a partir de tipos básicos (inteiro, real,caracter) ou estruturada (array, registro) de uma determinada linguagem deprogramação.

Page 12: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Estruturas de Dados

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

As estruturas de dados de tipos de dados estruturadas se dividem em homogêneos(vetores e matrizes) e heterogêneos (registros).

As estruturas homogêneas são conjuntos de dados formados pelo mesmo tipo dedado primitivo.

As estruturas heterogêneas são conjuntos de dados formados por tipos de dadosprimitivos diferentes (campos do registro) em uma mesma estrutura.

A escolha de uma estrutura de dados apropriada pode tornar um problemacomplicado em um de solução bastante trivial.

Page 13: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Estruturas e Dados

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

int

float

double

char

Struct

Listas

Filas

Pilhas

Vetores

Matrizes

Árvores

Estruturas Dados

Page 14: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Tipos Abstratos de Dados

11:27 14 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Page 15: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O que é Tipos Abstratos de Dados (TAD)?

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

É um tipo de modelo ou domínio que encapsula outros tipos de dados. Um TADpossui um algoritmo para acessar, criar e efetuar operações relacionadasdiretamente ao formato do TAD criado.

Page 16: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

TAD: Abstração

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

“É a habilidade de concentrar nos aspectos essenciais de um contexto qualquer,ignorando características menos importantes ou acidentais”.

Quando definimos um TAD, nos concentramos nos aspectos essenciais do tipo dedado (operações) e nos abstraímos de como ele foi implementado.

Page 17: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

TAD: Encapsulamento

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Não é preciso saber os detalhes de implementação do TAD. Seu usuário irá sepreocupar apenas com base nas operações oferecidas (interface)

O TAD provê um mecanismo de encapsulamento de um tipo de dado, ondeseparamos a especificação (aspecto externo) de sua implementação (aspectointerno)

Page 18: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Estruturas (Structs) em C / C++

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Uma estrutura é uma coleção de uma ou mais variáveis, possivelmente de tiposdiferentes, colocadas juntas sob um único nome para manipulação conveniente

Por exemplo, para representar um aluno são necessárias as informações nome,matrícula, conceito, ao invés de criar três variáveis, é possível criar uma únicavariável contendo três campos.

Em C, usa-se a construção struct para representar esse tipo de dado

Page 19: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Para que serve uma struct em C?

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Suponha que você foi contratado por uma grande empresapara criar um aplicativo de C que armazena todas asinformações dos funcionários, um banco de dados.

Page 20: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Para que serve uma struct em C?

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Vamos supor que tem 300 funcionários: Como você faria para

armazenar as idades deles?

𝑖𝑛𝑡 𝑖𝑑𝑎𝑑𝑒𝑠[300];

Page 21: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Para que serve uma struct em C?

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

E os nomes? Vamos separar 50 caracteres para cada pessoa.

Temos que ter 300 vetores (strings), cada um com 50 caracteres. Ficaria:

𝑐ℎ𝑎𝑟 𝑛𝑜𝑚𝑒𝑠[300][50];

O mesmo para sua data de admissão, o salário de cada um, seus números deidentificação, horários, cargos etc.

Page 22: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Para que serve uma struct em C?

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Mas como você faria saber as informações de um funcionário especificamente?

Poderíamos pegar cada posição para uma pessoa. Por exemplo, o funcionário BruceLee seria o de número 50, ou seja, para pegar o nome dele, vá para a posição 49da matriz de strings.

Para saber o salário dele, vá na posição de número 49 do vetor de floats querepresenta os salários. Na posição 49 do vetor de inteiros podemos obter a idadedeles e assim vai...

Isso tudo é possível, mas extremamente trabalhoso, confuso e nada organizado.

É para isso que existem as structs!

Page 23: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O que é uma struct em C?

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Struct, ou estrutura, é um bloco que armazena diversas informações.

Poderíamos criar uma estrutura para cada funcionário, e dentro dessa estruturatem variável do tipo int (para idade), do tipo string (para armazenar o nome), têmfloats (que armazenam o salário de cada um), etc. E cada estrutura teria um nome,que seria algo relacionado com o funcionário.

Assim, sempre que quiséssemos um dado de um funcionário, bastaríamos teracesso a estrutura dele, e todas as informações viriam juntas.

Page 24: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O que é uma struct em C?

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Essas estruturas, ou structs, podem ter quantos elementos você queira e dos tiposque você quiser. Você primeiro define a estrutura, seu nome e elementos.

Depois você escolhe quantos elementos daquela estrutura quer ter, e os declara comnomes diferentes.

Após isso, em vez de você manipular as milhares de variáveis dos mais diversostipos que tenha criado, você trabalha só com a estrutura.

Assim não tem que se ‘estressar’ com cada detalhe da estrutura.

Esses detalhes são definidos somente uma vez, na declaração da estrutura.

Page 25: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Declarando a Struct em C

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

struct nada mais é que um conjunto, ou bloco, de variáveis.

Page 26: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Declarando a Struct em C

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Vamos declarar uma struct para representar os dados dos funcionários:

Page 27: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O tipo struct

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

A sintaxe para declarar outras structs do tipo “struct Funcionario” é:

Page 28: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O tipo struct

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Outra maneira de declarar variáveis de um tipo struct que queremos, é criar esseselementos após as chaves na hora de criar a “struct Funcionario”.

Page 29: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O tipo struct: acessando os campos

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Criamos 3 funcionários desse tipo, e todos eles terão os mesmos elementos internos,com os mesmos nomes: idade, nome e salario.

Se tem o mesmo nome, como vamos diferenciar esses elementos, então?

Page 30: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

O tipo struct: acessando os campos

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Basta colocar um ponto após o nome escolhido para a struct. Após isso, acessamosnormalmente a variável:

Page 31: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Typedef

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Visando simplificar (ou abreviar) nomes de tipos e para tratarmos tipos complexos,é recomendado o uso de typedef

Page 32: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Estruturas Aninhadas

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Os campos de uma estrutura podem ser outras estruturas

Exemplo: Estrutura de um retângulo.

Page 33: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Estruturas Aninhadas

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Os campos de uma estrutura podem ser outras estruturas

Exemplo: Estrutura de um retângulo.

Page 34: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Concluindo...

11:27 34 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Page 35: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Material: https://sites.google.com/site/leinylsonnassau

11:27Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Aula baseada no material de:

Page 36: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Nesta aula aprendemos...

O que é Estrutura de Dados

Quais são os tipos de dados

O que é TAD

11:27 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Page 37: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Na próxima aula veremos...

Revisão de Ponteiros

Conceitos de Programação Estruturada # Vetores

# Matrizes

# Funções

11:27 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD

Page 38: Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD

Alguma Dúvida?

11:27

Até a próxima aula...

[email protected]