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

Post on 12-Apr-2017

291 views 2 download

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

# Estrutura de Dados #

Aula 02 - Estrutura de dados e TAD

Prof. Leinylson Fontinele Pereira

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

Introdução

11:27 3 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

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

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…

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 .

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

Estruturas de Dados

11:27 10 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.

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.

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

Tipos Abstratos de Dados

11:27 14 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.

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.

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)

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

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.

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];

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.

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!

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.

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.

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.

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:

O tipo struct

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

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

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”.

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?

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:

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

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.

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.

Concluindo...

11:27 34 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:

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

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

Alguma Dúvida?

11:27

Até a próxima aula...

leinylson@gmail.com