Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
1. # Estrutura de Dados #
Aula 02 - Estrutura de dados e TAD
Prof. Leinylson Fontinele Pereira
2. 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
4. O que vamos aprender?
Estruturas de Dados
TAD
11:27 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
5.
6. O que é Estrutura de Dados?
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
É a disciplina que trabalha com estruturas mais complexas em relação aos tipos de
dados 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
7. Tipo de Dados
11:27
Estrutura 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 …
8. Tipo de Dados
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Para cada dado armazenado no computador, devemos definir o conjunto de valores
que 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 ou
falso .
9. Tipo Básicos de Dados
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
O tamanho e a faixa dos dados dependem do processador e
da implementação do compilador
11. O que é Estrutura de Dados?
11:27
Estrutura 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) para
representá-lo. Cada ED pode ser construída a partir de tipos básicos (inteiro, real,
caracter) ou estruturada (array, registro) de uma determinada linguagem de
programação.
12. Estruturas de Dados
11:27
Estrutura 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 de
dado primitivo.
As estruturas heterogêneas são conjuntos de dados formados por tipos de dados
primitivos diferentes (campos do registro) em uma mesma estrutura.
A escolha de uma estrutura de dados apropriada pode tornar um problema
complicado em um de solução bastante trivial.
13. Estruturas e Dados
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
int
float
double
char
Struct
Listas
Filas
Pilhas
Vetores
Matrizes
Árvores
Estruturas Dados
14. Tipos Abstratos de Dados
11:27 14 Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
15. O que é Tipos Abstratos de Dados (TAD)?
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
É um tipo de modelo ou domínio que encapsula outros tipos de dados. Um TAD
possui um algoritmo para acessar, criar e efetuar operações relacionadas
diretamente ao formato do TAD criado.
16. TAD: Abstração
11:27
Estrutura 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 de
dado (operações) e nos abstraímos de como ele foi implementado.
17. TAD: Encapsulamento
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Não é preciso saber os detalhes de implementação do TAD. Seu usuário irá se
preocupar apenas com base nas operações oferecidas (interface)
O TAD provê um mecanismo de encapsulamento de um tipo de dado, onde
separamos a especificação (aspecto externo) de sua implementação (aspecto
interno)
18. Estruturas (Structs) em C / C++
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Uma estrutura é uma coleção de uma ou mais variáveis, possivelmente de tipos
diferentes, 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 única
variável contendo três campos.
Em C, usa-se a construção struct para representar esse tipo de dado
19. Para que serve uma struct emC?
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Suponha que você foi contratado por uma grande empresa
para criar um aplicativo de C que armazena todas as
informações dos funcionários, um banco de dados.
20. Para que serve uma struct emC?
11:27
Estrutura 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];
21. Para que serve uma struct emC?
11:27
Estrutura 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 de
identificação, horários, cargos etc.
22. Para que serve uma struct emC?
11:27
Estrutura 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 Bruce
Lee seria o de número 50, ou seja, para pegar o nome dele, vá para a posição 49
da matriz de strings.
Para saber o salário dele, vá na posição de número 49 do vetor de floats que
representa os salários. Na posição 49 do vetor de inteiros podemos obter a idade
deles e assim vai...
Isso tudo é possível, mas extremamente trabalhoso, confuso e nada organizado.
É paraisso que existemas structs!
23. O que é uma struct emC?
11:27
Estrutura 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 estrutura
tem variável do tipo int (para idade), do tipo string (para armazenar o nome), têm
floats (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 ter
acesso a estrutura dele, e todas as informações viriam juntas.
24. O que é uma struct emC?
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Essas estruturas, ou structs, podem ter quantos elementos você queira e dos tipos
que você quiser. Você primeiro define a estrutura, seu nome e elementos.
Depois você escolhe quantos elementos daquela estrutura quer ter, e os declara com
nomes diferentes.
Após isso, em vez de você manipular as milhares de variáveis dos mais diversos
tipos 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.
26. Declarandoa Struct emC
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Vamos declarar uma struct para representar os dados dos funcionários:
27. O tipo struct
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
A sintaxe para declarar outras structs do tipo “struct Funcionario” é:
28. O tipo struct
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Outra maneira de declarar variáveis de um tipo struct que queremos, é criar esses
elementos após as chaves na hora de criar a “struct Funcionario”.
29. O tipo struct: acessando os campos
11:27
Estrutura 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?
30. O tipo struct: acessando os campos
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Basta colocar um ponto após o nome escolhido para a struct. Após isso, acessamos
normalmente a variável:
31. Typedef
11:27
Estrutura 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
32. Estruturas Aninhadas
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Os campos de uma estrutura podem ser outras estruturas
Exemplo: Estrutura de um retângulo.
33. Estruturas Aninhadas
11:27
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Os campos de uma estrutura podem ser outras estruturas
Exemplo: Estrutura de um retângulo.
36. 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
37. 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
A palavra struct informa ao compilador que um modelo de estrutura está sendo definido
“Nome_de_sua_struct” é uma etiqueta que dá nome à definição da estrutura
Podemos ver as structs como um tipo de dado.
Por exemplo, “Funcionario”, que foi declarado anteriormente, pode ser visto como um novo de tipo de variável.
Essa visão, de que criamos um novo tipo de variável, é tão certa que é possível criar e declarar mais variáveis do tipo “struct Funcionario”.
Note que no momento da criação do modelo da “struct Funcionario”, declaramos um inteiro, uma string e um float dentro da struct.
Todas as structs do tipo “Funcionario” terão um inteiro, uma string e um float.
Como acessar, alterar e ler os elementos de uma struct em C?
Pelo nome da variável do tipo “struct Funcionário”
Pontos no espaço bidimensional, representado por duas coordenadas (x e y)
Não sendo mais necessário adicionar o nome “struct” antes.
Faze no quadro
Uma estrutura em C serve basicamente para
agrupar diversas variáveis dentro de um único
contexto