Buscar

Aula 4 - Tipos estruturados de dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Estruturas de dados I
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
Larissa Camila Papa 
1
Tipos estruturados de dados
Aula 04
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
2
 Arquivo contendo apenas:
 os protótipos das funções oferecidas pelo módulo;
 os tipos de dados exportados pelo módulo (typedef’s, struct’s,
etc).
 Em geral possui:
 nome: igual ao do módulo ao qual está associado;
 extensão: .h
Módulos de compilação em separado
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
3
Módulos de compilação em separado
 Inclusão de arquivos de interface no código.
 Protótipos das funções da biblioteca padrão de C:
#include <arquivo.h>
 Protótipos de módulos do usuário:
#include "arquivo.h"
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
4
Tipos abstrato de dados - TAD
 Um TAD define:
 um novo tipo de dado;
 o conjunto de operações para manipular dados desse tipo.
 Um TAD facilita:
 a manutenção e a reutilização de código;
 abstrato = “forma de implementação não precisa ser
conhecida”.
 Para utilizar um TAD é necessário conhecer a sua
funcionalidade, mas não a sua implementação.
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
5
Interface de um TAD
 Define:
 Nome do tipo;
 Os nomes das funções exportadas:
 Os nomes das funções devem ser prefixada pelo nome do
tipo, evitando conflitos quando tipos distintos são usados
em conjunto
 Exemplo:
 aluno - função para criar um tipo Aluno
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
6
Implementação de um TAD
 O arquivo de implementação de um TAD deve:
 incluir o arquivo de interface do TAD:
 permite utilizar as definições da interface, que são
necessárias na implementação;
 garante que as funções implementadas correspondem às
funções da interface.
O compilador verifica se os parâmetros das funções implementadas
equivalem aos parâmetros dos protótipos
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
7
Implementação de um TAD
 O arquivo de implementação de um TAD deve:
 incluir as variáveis globais e funções auxiliares:
 devem ser declaradas como estáticas
 visíveis apenas dentro do arquivo de implementação
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
8
TAD Aluno
 Tipo de dados para representar um aluno com as seguintes
operações:
 cria – cria um aluno com o nome e a nota final;
 libera – libera a memória alocada para um aluno;
 imprime – imprime os dados do aluno;
 diferença – calcula a diferença entre duas notas.
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
9
Interface Aluno
 Define o nome do tipo e os nomes das funções exportadas
 A composição da estrutura Aluno não faz parte da interface:
 não é exportada pelo módulo;
 não faz parte da interface do módulo;
 não é visível para outros módulos.
 Os módulos que utilizarem o TAD Aluno:
 não poderão acessar diretamente os campos da estrutura
Aluno;
 só terão acesso aos dados obtidos através das funções
exportadas.
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
10
Aluno.h – arquivo com a interface de Aluno
typedef struct Aluno Aluno;
Aluno* aluno_cria (char nome, float nota);
void aluno_libera (Aluno* p);
void aluno_imprime (Aluno* p);
float aluno_diferenca (Aluno* p, Aluno* q);
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
11
Implementação de Aluno
 Implementação de Aluno:
 inclui o arquivo de interface de Aluno;
 define a composição da estrutura Aluno;
 inclui a implementação das funções externas;
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
12
Aluno.c – arquivo com o TAD Aluno
#include <stdlib.h>
#include “ponto.h“
struct aluno{
char nome[30];
float nota;
}
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
13
Aluno.c – arquivo com o TAD Aluno
 Função para criar um aluno dinamicamente:
 aloca a estrutura que representa o aluno;
 inicializa os seus campos.
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
14
Aluno.c – arquivo com o TAD Aluno
Aluno* aluno_cria (char nome[30], float nota){
Aluno* p = (Aluno*) malloc(sizeof(Aluno));
if (p == NULL) {
printf("Memória insuficiente!\n");
exit(1);
}
p->nome = nome;
p->nota = nota;
return p;
}
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
15
Aluno.c – arquivo com o TAD Aluno
 Função para liberar um Aluno:
 deve apenas liberar a estrutura criada dinamicamente através
da função cria.
void aluno_libera (Aluno* p){
free(p);
}
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
16
Aluno.c – arquivo com o TAD Aluno
 Função para imprimir um Aluno.
void aluno_imprime (Aluno* p){
printf (“O nome e: %s\n”, p->nome);
printf (“A nota e: %f\n”, p->nota);
}
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
17
Aluno.c – arquivo com o TAD Aluno
 Função para calcular a diferença entre duas notas.
float aluno_diferenca (Aluno* p, Aluno* q){
float nota1 = p->nota;
float nota2 = q->nota;
return nota1 – nota2;
}
Universidade Federal de Ouro Preto
DECEA – Departamento de Ciências Exatas e Aplicadas
João Monlevade – Minas Gerais
18
main.c
#include <stdio.h>
#include “aluno.h"
int main (void){
Aluno* p = aluno_cria(‘joão’,8.0);
Aluno* q = aluno_cria(‘carlos’,7.1);
float diferenca = aluno_diferenca(p,q);
printf(“Diferenca entre notas: %f\n", diferenca);
aluno_libera(q);
aluno_libera(p);
return 0;
}

Continue navegando