• Nenhum resultado encontrado

10 Estruturas-Registro

N/A
N/A
Protected

Academic year: 2021

Share "10 Estruturas-Registro"

Copied!
30
0
0

Texto

(1)

Linguagem C

Variáveis Compostas Heterogêneas

Prof. Marcelo R. Zorzan Prof. Moacir P. Ponti Jr.

(2)

Agenda

 Recordando...  Estrutura de Dados  Aplicação de estruturas  Declaração de Struct  Exemplo – Declaração  Exemplo – Programa

 Declarando, atribuindo e imprimindo  Exemplo

 Atividade 1  Exercícios

(3)

 Um array de 1 dimensão – vetor

Várias posições (espaços na memória) de um mesmo tipo

Recordando...

float vetor1[10];

 Na memória serão alocadas 10 posições tipo float para a variável

vetor1

5

4

3

2

1

0

6

7

8

9

vetor1

(4)

Recordando...

 Um array de 2 dimensões – matriz

Várias posições (espaços na memória) de um mesmo tipo

int matriz1[3][3];

 Na memória serão alocadas 3x3 posições tipo int para a variável

matriz1 (2,2) (2,1) (2,0) (1,2) (0,2) (1,1) (0,1) (1,0) (0,0) matriz1 Posições da matriz

(5)

Estruturas de Dados

Muitas vezes precisamos compor os dados para

formar estruturas de dados complexas

Variáveis compostas homogêneas (Arrays)

 Conjunto de variáveis de mesmo tipo

Variáveis compostas heterogêneas

 Conjunto de variáveis de tipos diferentes  Chamadas de:

Estruturas (Struct)Registros (Record)

(6)

Aplicação de Estruturas (1)

 Estruturas podem ser usadas para armazenar

informações relacionadas 1. Produto e i h c t i R . D Autor (char[11]) 59,9000 Preco (float) C m e g a u g n i L Livro (char[11])

(7)

Aplicação de Estruturas (2)

 Armazenar informações relacionadas

1. Ficha de cliente (cadastro)

o l u a P o a S Cidade (char[10]) 5555-5555 Telefone (int) 30 Idade (int) a n e l e H Nome (char[10])

(8)

Aplicação de Estruturas (3)

 Estruturas de dados complexas 1. Listas &012 Ponteiro (*) 0,0000 Dado (float) &013 Ponteiro (*) 0,0000 Dado (float) [null] Ponteiro (*) 0,0000 Dado (float) &001 &012 &013

(9)

Declaração de Struct

 A declaração de uma estrutura agrupa sobre um

identificador, diversas variáveis

struct identificacao_da_estrutura { tipo1 nome1; tipo2 nome2; ... tipoN nomeN; };

(10)

10

Estruturas

 Variáveis compostas heterogêneas (estruturas) são um

conjunto de variáveis de tipos diferentes que são logicamente relacionadas.

Essas variáveis compartilham o mesmo identificador

e ocupam posições consecutivas de memória.

 Para as variáveis de uma estrutura:

 Elas são denominadas membros;  São identificadas por nomes.

struct sEndereco { char rua[40]; int numero; }; Membros Nomes

(11)

Exemplo – Declaração

 Vamos criar uma estrutura de endereço, que possa ser

usada como se fosse um tipo de dado posteriormente

 Este código deve vir no início do programa, após os

“includes” struct sEndereco { char rua[40]; int numero; char cidade[30]; char estado[2]; long int CEP; };

(12)

Exemplo – Programa

 Vamos criar uma programa que use a estrutura

sEndereco e atribua valores a todas as variaveis da

estrutura

int main(void) {

//cria variavel ender1 como struct sEndereco

struct sEndereco ender1;

strcpy(ender1.rua,"Rua 7 de Setembro");

ender1.numero = 405;

strcpy(ender1.cidade,"Goiania"); strcpy(ender1.estado,"GO");

ender1.CEP = 06599604; }

(13)

Declarando, atribuindo e imprimindo

#include <stdio.h> #include <stdlib.h>

struct sRetangulo {

float altura, largura; };

int main(void) {

struct sRetangulo ret1; ret1.altura = 10;

printf("Digite o valor da largura: "); scanf("%f", &ret1.largura);

printf("Altura: %.1f", ret1.altura); printf("Largura: %.1f", ret1.largura); return 0;

(14)

Exemplo

Em corridas de automobilismo, há uma etapa de

classificação para definir o grid de largada

Nesta classificação é armazenada a melhor

volta do piloto, contendo: minutos e segundos

Crie e utilize uma estrutura de dados que inclua

o nome, equipe e melhor volta do piloto em uma

classificação

(15)

Estruturas

anônimas

Uma declaração de estrutura anônima possui a

seguinte estrutura:

struct { tipo1 nome1; tipo2 nome2; ... tipoN nomeN; } variavel1, variavel2;

(16)

16

Estruturas

anônimas

#include <stdio.h> struct { int hora; int minuto; int segundo; } H; int main(void) { H.hora = 10; H.minuto = 15; H.segundo = 30;

printf("%d:%d:%d", H.hora, H.minuto, H.segundo); return 0;

(17)

Estruturas

anônimas

 A estrutura anônima, não pode ser referenciada em

outras partes do código.

 Alguns problemas do uso de estrutura anônima:

Incentiva a criação de variáveis globais, o que pode não ser ideal para

uma boa prática de programação;

(18)

18

Estruturas

rotuladas

 Estruturas rotuladas criam um “rótulo” que pode ser

referenciado posteriormente no código.

 Criação de rótulos. struct rotulo_da_estrutura { tipo1 nome1; tipo2 nome2; ... tipoN nomeN; };

(19)

Estruturas

rotuladas

#include <stdio.h> struct sHora { int hora; int minuto; int segundo; }; int main(void){ struct sHora H; H.hora = 10; H.minuto = 15; H.segundo = 30;

printf("%d:%d:%d", H.hora, H.minuto, H.segundo); return 0;

(20)

20

Estruturas

rotuladas

e

nomeadas

Uma estrutura rotulada e nomeada pode

ser definida da seguinte forma:

typedef struct rotulo_da_estrutura { tipo1 nome1; tipo2 nome2; ... tipoN nomeN; } id_tipo_da_estrutura;

(21)

Estruturas

rotuladas

e

nomeadas

#include <stdio.h>

typedef struct Hora { int hora; int minuto; int segundo; } THora; int main(void) { THora H; H.hora = 10; H.minuto = 15; H.segundo = 30;

printf("%d:%d:%d", H.hora, H.minuto, H.segundo); return 0;

(22)

22

Atividade 1

 Escreva um programa que possua uma variável de tipo

anônimo, capaz de armazenar o título, o autor, a

editora e o ano de publicação de um livro. Teste a

variável atribuindo e lendo os valores dela.

 Defina um tipo de estrutura rotulada para representar

números complexos da forma a + b.i, sendo a a parte real e b a imaginária. Crie também uma função para calcular a soma de dois números complexos, codificando também um programa para testar o seu funcionamento.

(23)

Estruturas Aninhadas

Estruturas em que um ou mais de seus membros

também sejam estruturas.

typedef struct rotulo_estrutura1 {

tipo1 nome1;

tipoN nomeN; } id_estrutura1;

typedef struct rotulo_estrutura2 {

id_estrutura1 nome;

tipoN nomeN; } id_estrutura2;

(24)

24

Estruturas Aninhadas –

Exemplo

#include <stdio.h> #include <string.h>

typedef struct sHora {

int hora; int minuto; int segundo; } Hora;

typedef struct sRelogio {

Hora H;

char modelo[10]; } Relogio;

(25)

Estruturas Aninhadas –

Exemplo

#include <stdio.h> #include <string.h>

typedef struct sHora {

int hora; int minuto; int segundo; } Hora;

typedef struct sRelogio { Hora horario; char modelo[10]; } Relogio; int main(void) { Relogio r1; r1.H.hora = 10; r1.H.minuto = 15; r1.H.segundo = 30; strcpy(r1.modelo,"Cassio"); printf("Modelo: %s\n", r1.modelo); printf("%d:%d:%d",r1.H.hora, r1.H.minuto, r1.H.segundo); return 0;

(26)

26

Atividade 2

Defina um tipo de estrutura para armazenar os

dados de um vôo:

nomes das cidades de origem e destino,

datas e horários de partida e chegada.

Utilize a estrutura

hora

do exemplo anterior.

Crie um programa para testar as

funcionalidades criadas, declarando variáveis

e funções necessárias.

(27)

Arrays de Estruturas

É possível combinar arrays e estruturas para

criação de diferentes estruturas de dados.

 Podemos ter uma estrutura contendo um membro do

tipo array, ou;

(28)

28

Arrays e Estruturas –

Trecho de exemplo

... struct sEndereco { char rua[40]; int numero; }; int main(void) {

struct sEndereco listaend[5]; listaend[0].numero = 100;

strcpy(listaend[3].rua,”Av. Brasil”); ...

(29)

Arrays e Estruturas –

Trecho de exemplo ... struct sEndereco { char rua[40]; int numero; }; int main(void) {

struct sEndereco listaend[5]; listaend[0].numero = 100;

strcpy(listaend[3].rua,”Av. Brasil”); ... } listaend: ID da estrutura Na memória [0] [1] [2] [3] [4] 100 Av. Brasil

(30)

30

Arrays e Estruturas –

Exemplo

#include <stdio.h> struct sHora { int hor; int min; int seg; }; int main(void) { struct sHora H[5]; H[0].hor = 10; H[0].min = 15; H[0].seg = 30;

printf("%d:%d:%d", H[0].hor, H[0].min, H[0].seg); return 0;

Referências

Documentos relacionados

O CES é constituído por 54 itens, destinados a avaliar: (a) cinco tipos de crenças, a saber: (a1) Estatuto de Emprego - avalia até que ponto são favoráveis, as

c) Rendimento Acadêmico insuficiente no curso ao qual está vinculado (Situação a ser avaliada pelo Tutor do PET Conexões de Saberes “Direitos Humanos, Culturas e Subjetividades”);

Na área de Alimentação Coletiva, a subárea principal de atuação é a de “Uni- dade de Alimentação e Nutrição – UAN” (56%); na Nutrição Clínica prevalece “Hospitais

O termo extrusão do núcleo pulposo aguda e não compressiva (Enpanc) é usado aqui, pois descreve as principais características da doença e ajuda a

As IMagens e o texto da Comunicação (com as legendas incluídas) devem ser enviadas por correio eletrônico. Comitê

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

Dessa forma, os níveis de pressão sonora equivalente dos gabinetes dos professores, para o período diurno, para a condição de medição – portas e janelas abertas e equipamentos

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam