O documento apresenta um resumo sobre estruturas de dados em C, definindo-as como uma forma de criar novos tipos compostos que permitem armazenar diferentes tipos de dados. É explicado como definir uma estrutura, declarar variáveis do tipo da estrutura e acessar seus elementos. Também são mostrados exemplos de uso de estruturas como parâmetros de funções e compostas por outras estruturas.
2. Instituto de Computação – UFAL
Agenda!
Objetivo
Aprender a usar estruturas
O que veremos?
O que são ?
Como criar uma estrutura?
Como usar?
Estruturas como parâmetros de funções
Exercícios de fixação
rodrigo@ic.ufal.br slide 2
3. Instituto de Computação – UFAL
Motivação
Voltemos ao Array
Um array é um exemplo de uma estrutura de dados
Pega um tipo de dados simples: int, char, float,
double …
… organiza-os em uma cadeia linear de elementos
desses tipos
Restrição
Um array é composto de elementos de um mesmo
tipo
rodrigo@ic.ufal.br slide 3
4. Instituto de Computação – UFAL
Motivação
Mas pra que serveria uma estrutura de dados
que permita tipos diferentes?
Por exemplo, 05 primeiros elementos são int e os
dois ultimos são char
Você consegue visualizar algum cenário em que tipos
diferentes seriam úteis?
Exemplo: Ficha cadastral dos clientes de uma locadora
nome : char[255];
idade: int;
casado: int; // 1=sim, 2=não
…
rodrigo@ic.ufal.br slide 4
5. Instituto de Computação – UFAL
Motivação
Com o que sabemos até agora, teríamos que
trabalhar com variáveis diferentes
Até já fizemos um exemplo disso, lembram da
lanchonete?
int codigo[TAMANHO] = {101, 102, 103, 104, 105} ;
float preco[TAMANHO] = {1.20, 1, 2.5, 1, 2};
char *descricao[TAMANHO] = {"Refrigerante", "Suco", "Sanduiche", "Salgado",
"Torta"};
int quantidade[TAMANHO] = {0,0,0,0,0};
float subtotal[TAMANHO];
int indice, i;
Na verdade, o que queríamos eram as informações dos produtos e
dos pedidos
rodrigo@ic.ufal.br slide 5
6. Instituto de Computação – UFAL
Definindo um novo tipo
Em C já existem uma série de tipos pré-
definidos
int, float, char, double …
Vamos aprender a definir novos tipos
Os tipos definidos por nós serão “tipos
compostos”
Tipos que são compostos de outros tipos
rodrigo@ic.ufal.br slide 6
7. Instituto de Computação – UFAL
Estruturas
São uma forma de definir novos tipos
compostos
O que precisaremos fazer?
Duas etapas
Definir a estrutura
Declarar as variáveis do tipo da estrutura que acabamos de
definir
rodrigo@ic.ufal.br slide 7
8. Instituto de Computação – UFAL
Estruturas
Suponha que vamos fazer o registro dos
funcionários de uma empresa
Nome
Idade
Salário
A estrutura:
struct funcionario
{
char nome[255];
int idade;
float salario;
};
rodrigo@ic.ufal.br slide 8
9. Instituto de Computação – UFAL
Declaração de variáveis
Podemos usar o novo tipo para declarar
variáveis
main()
{
struct funcionario rodrigo, carlos, jose, maria;
}
rodrigo@ic.ufal.br
tipo Identificadores das variáveis
slide 9
10. Instituto de Computação – UFAL
Como usar as estruturas?
main()
{
struct funcionario joao, maria;
strcpy(joao.nome, "Joao da Silva");
joao.idade = 32;
joao.salario = 3000.00;
strcpy(maria.nome, "Maria Jose");
maria.idade = 41;
maria.salario = 4250.00;
}
rodrigo@ic.ufal.br slide 10
12. Instituto de Computação – UFAL
Estruturas como parâmetro de funções
A passagem é feita por valor e não por
referência!
Exemplo:
https://dl.dropbox.com/u/17364381/p1/estruturas
.c
rodrigo@ic.ufal.br slide 12
13. Instituto de Computação – UFAL
Compondo estruturas com outras estruturas
Podemos definir estruturas que são compostas
de outras estruturas
rodrigo@ic.ufal.br slide 13
14. Instituto de Computação – UFAL
No nosso código
Ponteiros para estruturas
Formas de acessar os elementos da estrutura
através de um ponteiro
Passagem por referência
Usando um array como um elemento da
estrutura
Arrays de estruturas
rodrigo@ic.ufal.br slide 14
15. Instituto de Computação – UFAL
Typedef
Define explicitamente um tipo de dado
Sem o typedef:
struct funcionario
{
char nome[255];
int idade;
float salario;
};
struct funcionario funcionario1, funcionario2;
Com o typedef:
typedef struct
{
char nome[255];
int idade;
float salario;
}t_funcionario;
t_funcionario funcionario1, funcionario2;
rodrigo@ic.ufal.br slide 15
16. Instituto de Computação – UFAL
Exercícios de fixação
Ler Seção 9.2 do livro do Jaime
Refaça os exemplos vistos em sala.
Modifique o seu trabalho para usar estruturas
Olhe as estruturas das bibliotecas que você está
utilizando no trabalho final e procure entende-
las
Atenção: Na próxima aula, faremos um mini-
teste na sala de aula.
Assunto: arrays, ponteiros e estruturas
rodrigo@ic.ufal.br slide 16