Aula 14 estruturas - Programação 1
-
Upload
isaac-barros -
Category
Documents
-
view
58 -
download
0
description
Transcript of Aula 14 estruturas - Programação 1
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
[email protected] slide 2
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
[email protected] slide 3
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 …
[email protected] slide 4
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
[email protected] slide 5
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
[email protected] slide 6
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
[email protected] slide 7
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;
};
novo tipo de dado:struct funcionario
slide 8
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;
}
tipo Identificadores das variáveis
slide 9
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;
}
[email protected] slide 10
Instituto de Computação – UFAL
Estruturas como parâmetro de funções
void imprimir(struct funcionario um_funcionario)
{
printf("#####################\n");
printf("Nome: %s\n",um_funcionario.nome );
printf("Idade: %d\n",um_funcionario.idade );
printf("Salario: %.2f\n",um_funcionario.salario );
}
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;
imprimir(joao);
imprimir(maria);
[email protected] slide 11
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
[email protected] slide 12
Instituto de Computação – UFAL
Compondo estruturas com outras estruturas
Podemos definir estruturas que são compostas de outras estruturas
[email protected] slide 13
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
[email protected] slide 14
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;
[email protected] slide 15
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
[email protected] slide 16