Buscar

Aula 08 Estrutura 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 36 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 36 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 36 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

CIn.ufpe.br 
Computação Eletrônica 
 
Aula 8 – Estruturas de Dados 
 
Prof.: André Tiba 
akot@cin.ufpe.br 
Site da disciplina: www.cin.ufpe.br/~hfb/ce 
 
CIn.ufpe.br 
Tópicos da Aula 
• Quando estudamos vetores, vimos coleções homogêneas de 
dados, onde todos os elementos possuíam o mesmo tipo de 
dados. Hoje aprenderemos a criar estruturas de dados 
heterogêneas. 
– Tipos Primitivos x Tipos Estruturados 
– Conceito de Tipos Estruturados 
– Declaração de Estruturas em C (struct) 
– Variáveis do tipo struct 
– Operações com estruturas 
– Comando typedef 
– Passando Estruturas para Funções 
– Estruturas Aninhadas 
– Vetores de Estruturas 
CIn.ufpe.br 
Tipos de Dados Primitivos vs 
Estruturados 
• C oferece tipos primitivos que servem para representar valores 
simples Reais (float, double), inteiros (int), caractere (char); 
• C oferece também mecanismos para estruturar dados 
complexos nos quais as informações são compostas por 
diversos campos, podendo ter de tipos diferentes. 
• São chamados de: 
– Tipos de dados estruturados ou registros (em c: struct). 
CIn.ufpe.br 
Tipos de Dados Estruturados 
• Os tipos de dados estruturados permitem agrupar conjuntos de 
tipos de dados distintos sob um único nome; 
• Podemos criar vários objetos na memória de um determinado 
tipo estruturado, previamente definido. 
• Ex.: 
Tipo de dados Campo 
String Nome 
String Endereço 
Inteiro Telefone 
Inteiro Idade 
String Data de Nascimento 
Float Peso 
Float Altura 
Cadastro_Pessoal 
Nome da Estrutura 
(tipo composto) 
Campos ou 
Membros .
.
. 
CIn.ufpe.br 
Definindo Estruturas de Dados 
• Forma geral: 
CIn.ufpe.br 
Definindo Estruturas de Dados 
• Em C, esta estrutura de dados pode ser definida da seguinte 
maneira: 
Tipo de dados Campo 
String Nome 
String Endereço 
Inteiro Telefone 
Inteiro Idade 
String Data de 
Nascimento 
Float Peso 
Float Altura 
Cadastro_Pessoal 
Campos 
.
.
. 
.
.
. 
Nome da Estrutura 
(tipo composto) 
CIn.ufpe.br 
Importância de Estruturas de 
Dados 
• Considere o ponto P, com coordenadas x e y, ou seja, P(x,y); 
• Sem mecanismos para agrupar as duas coordenadas, P será 
descrito em um programa na forma: 
 
 
 
 
• Esta representação não deixa claro que estas variáveis estão 
conectadas (são partes de um todo) compondo a representação 
de um Ponto 2D; 
CIn.ufpe.br 
Importância de Estruturas de 
Dados 
• Uma estrutura serve para agrupar diversas variáveis dentro de 
um único contexto: 
 
 
 
 
• Com isso, a estrutura Ponto2D passa a ser um tipo. Então, 
podemos declarar uma variável deste tipo da seguinte forma: 
CIn.ufpe.br 
Acessando Membros do Tipo 
Ponto 
• Membros de uma estrutura são acessados via o operador de 
acesso ( “.” ): 
 
 
 O nome da variável do tipo 
struct deve vir antes do “.” 
 
Após o “.” vem o nome do 
campo que será acessado. 
Forma geral: nome_variavel.nome_do_campo 
CIn.ufpe.br 
Exemplo: 
CIn.ufpe.br 
Onde Declarar um Tipo 
Estruturado? 
• Geralmente, declara-se um tipo estruturado fora das funções 
– Escopo da declaração engloba todas as funções no mesmo arquivo 
fonte; 
• Pode-se, também, declarar tipos estruturados dentro de 
funções; 
– Neste caso, escopo do tipo estruturado limita-se a função; 
• Há outras formas de declarar estruturas e variáveis. Ex.: 
Obs: Com estas 
formas, perde-se 
em legibilidade. 
CIn.ufpe.br 
Inicializando Variáveis de Tipos 
Estruturados 
• Uma variável de um tipo estruturado pode ser inicializada com 
uma estrutura com o auxílio do abre-fecha chaves (“{” e “}”): 
Deve-se inicializar 
os membros na 
ordem correta! 
CIn.ufpe.br 
Atribuição de Estruturas 
• A estrutura armazenada por uma variável de um tipo 
estruturado pode ser atribuída a outra variável deste mesmo 
tipo estruturado: 
Atribuição da estrutura 
contida em p2 para p1. 
CIn.ufpe.br 
Atribuição de Estruturas 
• A inicialização de uma estrutura deve ser feita no ato de sua 
declaração: 
Errado! 
CIn.ufpe.br 
Outras Operações com 
Estruturas 
• Como escrever um programa que imprime a soma das 
coordenadas de dois pontos? 
Errado! 
Não podemos somar 
estruturas inteiras 
CIn.ufpe.br 
Outras Operações com 
Estruturas 
• Como escrever um programa que imprime a soma das 
coordenadas de dois pontos? 
Certo! 
Temos que atuar 
membro a membro 
CIn.ufpe.br 
Usando typedef 
• O comando typedef permite criar novos nomes para tipos 
existentes; 
• Criação de sinônimos para os nomes de tipos 
– Útil para abreviar nomes de tipos ou tipos complexos 
• Forma Geral: 
typedef tipo_existente sinonimo; 
• Ex.: 
 
 
• Define a palavra “uint” como sendo um novo tipo, sinônimo do 
tipo “unsigned int”; 
CIn.ufpe.br 
Usando typedef 
• Muito útil para evitar a necessidade de utilizar a palavra “struct” 
nas declarações de variáveis tipo estrutura: 
 
 
 
 
• ou 
Simplifica a declaração de variáveis 
CIn.ufpe.br 
Passagem de Estruturas para 
Funções 
• Assim como podemos passar tipos primitivos como argumentos 
para uma função, também podemos passar estruturas: 
A passagem será feita por 
valor, resultando em uma 
cópia de p1 para p. 
CIn.ufpe.br 
• Uma função pode retornar uma estrutura: 
Retornando Estruturas 
 
O retorno será feito 
por valor, resultando 
em uma cópia de s 
para p3 
CIn.ufpe.br 
Estruturas Aninhadas 
• Membros de uma estrutura podem ser outras estruturas 
previamente definidas Ex.: 
CIn.ufpe.br 
Exemplo: Ponto está dentro do 
Círculo? 
2
21
2
21 )()( yyxxd 
Um ponto está no interior de um círculo se sua distância para o centro é 
menor que o raio do círculo 
CIn.ufpe.br 
Vetores de Estruturas 
• Podemos utilizar vetores de estruturas. 
• Considere o cálculo do centro geométrico de um conjunto de 
pontos: 
CIn.ufpe.br 
Atividade 1 
• Faça um programa que declare uma estrutura “Fucionario” com 
os campos, nome, cargo, endereço, CPF, idade e salário. 
• O programa deve ler do teclado as informações de 5 
funcionários em um vetor de estruturas; 
• Em seguida o programa imprime o nome e o salário de cada 
funcionário; 
• Por fim, o programa imprime o total pago para todos os 
funcionários. Ex.: 
 
 
Maria.......R$ 2.500,00 
João.........R$ 2.000,00 
Pedro.......R$ 1.500,00 
------------------------------ 
Total.........R$ 6.000,00 
 
CIn.ufpe.br 
Atividade 1 
CIn.ufpe.br 
Atividade 2 
• Altere o programa anterior: 
– Crie uma função que recebe como entrada o vetor de funcionários e 
uma string contendo o nome de um cargo, e retorna o total dos salários 
pagos para aquele cargo; 
– Imprima o valor obtido pelo retorno da função descrita acima. 
 
 
CIn.ufpe.br 
Atividade 2 
CIn.ufpe.br 
Atividade 3 
• Crie um programa que armazene o nome, o telefone e o e-mail 
de um grupo de 10 pessoas, utilizando vetores de estrutura. 
– Peça para o usuário digitar num trecho das iniciais de um nome, de um 
telefone ou de um e-mail, e faça com que o programa imprima os dados 
que correspondem a este trecho. 
 
 
CIn.ufpe.br 
Atividade 3 
CIn.ufpe.br 
Atividade 3 
CIn.ufpe.br 
Atividade 4 
• Seja um conjunto de 4 objetos pontuais, cada com uma certa 
massa m, distribuídos no plano XY. Crie uma estrutura que 
armazene estas três informações. Defina um vetor de estruturas 
que guarde as informações dos 4 objeto (passadas pelo 
teclado). Em seguida, construa uma função calcule o centro de 
massa do sistema, imprimindo o resultado.CIn.ufpe.br 
Atividade 4 
CIn.ufpe.br 
Atividade 4 
CIn.ufpe.br 
Atividade 5 
• Um pintor recebeu um trabalho para pintar 10 apartamentos, 
que podem ter um ou dois quartos. Além dos quartos, deve-se 
pintar a sala e a cozinha (incluindo o teto). 
– Para facilitar a estimativa da área a ser pintada, considere que cada 
cômodo é um retângulo (lados L1 e L2), e que devido a reforma dos 
apartamentos, cada um tem sua própria altura h. Crie um programa que 
estime a área total a ser pintada de paredes e de tetos, para os dados dos 
apartamentos que são lidos via teclado. Crie duas estruturas, uma que 
contenha as áreas dos cômodos de um apartamento, e outro com os 
lados e altura. Guarde as informações em um vetor de estruturas. 
 
 
CIn.ufpe.br 
Atividade 5 
CIn.ufpe.br 
Atividade 5

Outros materiais