Aula 14 estruturas - Programação 1

16
Programação I: Estruturas Rodrigo Paes [email protected]

description

Aulas da Disciplina de Programação I do Professor Rodrigo Paes, UFAL

Transcript of Aula 14 estruturas - Programação 1

Page 1: Aula 14 estruturas - Programação 1

Programação I: Estruturas

Rodrigo Paes

[email protected]

Page 2: 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

Page 3: Aula 14 estruturas - Programação 1

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

Page 4: Aula 14 estruturas - Programação 1

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

Page 5: Aula 14 estruturas - Programação 1

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

Page 6: Aula 14 estruturas - Programação 1

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

Page 7: Aula 14 estruturas - Programação 1

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

Page 8: Aula 14 estruturas - Programação 1

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;

};

[email protected]

novo tipo de dado:struct funcionario

slide 8

Page 9: Aula 14 estruturas - Programação 1

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;

}

[email protected]

tipo Identificadores das variáveis

slide 9

Page 10: Aula 14 estruturas - Programação 1

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

Page 11: Aula 14 estruturas - Programação 1

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

Page 12: Aula 14 estruturas - Programação 1

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

Page 13: Aula 14 estruturas - Programação 1

Instituto de Computação – UFAL

Compondo estruturas com outras estruturas

Podemos definir estruturas que são compostas de outras estruturas

[email protected] slide 13

Page 14: Aula 14 estruturas - Programação 1

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

Page 15: Aula 14 estruturas - Programação 1

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

Page 16: Aula 14 estruturas - Programação 1

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