Aula 14 estruturas - Programação 1

259 visualizações

Publicada em

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

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
259
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
5
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula 14 estruturas - Programação 1

  1. 1. Programação I: Estruturas Rodrigo Paes rodrigo@ic.ufal.br
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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
  11. 11. Instituto de Computação – UFAL Estruturas como parâmetro de funções void imprimir(struct funcionario um_funcionario) { printf("#####################n"); printf("Nome: %sn",um_funcionario.nome ); printf("Idade: %dn",um_funcionario.idade ); printf("Salario: %.2fn",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); rodrigo@ic.ufal.br slide 11
  12. 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. 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. 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. 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. 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

×