• Nenhum resultado encontrado

Registros

N/A
N/A
Protected

Academic year: 2021

Share "Registros"

Copied!
34
0
0

Texto

(1)

Registros

(2)

• Ementa da Aula:

Fundamentos de construção de modelos e

programas; Abstração de dados e Notações

referentes à Estrutura Composta de Dados

(Registros).

• Objetivo:

Introduzir o conceito de modelagem de dados

utilizando e registros / structs.

(3)

Estruturas Compostas de Dados

• Homogêneas (vetores e matrizes)

(4)

Registros/Estruturas

• Motivação:

o MODELAGEM DE DADOS:

• MUNDO REAL: o Objetos/conceitos complexos. • MODELO:

o Representações que simplificam a realidade. o Tornam possível o estudo e a manipulação. o Úteis para um determinado propósito.

(5)

Registros/Estruturas

• Motivação:

o MODELAGEM DE DADOS:

MUNDO REAL

MODELO

Simplificação Aluno Nome RA CR Sexo

(6)

Registros/Estruturas

• Motivação:

o MODELAGEM DE DADOS:

MUNDO REAL

MODELO

Simplificação Aluno Nome RA CR Sexo Entidade:

Algo que é relevante para o sistema.

Pode estar associada a um elemento concreto, ou a um conceito “abstrato”.

(7)

Registros/Estruturas

• Motivação:

o MODELAGEM DE DADOS:

MUNDO REAL

MODELO

Simplificação Aluno Nome RA CR Sexo Atributos:

Conjunto de propriedade particulares que descrevem uma entidade .

(8)

Registros/Estruturas

• Problema:

o Como representar um modelo em linguagem

C?

• Conjunto de variáveis.

MUNDO REAL

Linguagem C

Implementação Aluno Nome RA CR Sexo Simplificação

MODELO

char nome[100]; int ra;

char sexo; float cr;

(9)

Registros/Estruturas

• Problema:

o Como representar um modelo em linguagem

C?

• Conjunto de variáveis.

• Podem ser agrupadas em estruturas.

MUNDO REAL

Linguagem C

Implementação Aluno Nome RA CR Sexo Simplificação

MODELO

char nome[100]; int ra;

char sexo; float cr;

(10)

Registros/Estruturas

• Definição:

o Uma

estrutura

(registro) é um tipo de dado

cujo formato é definido pelo programador.

o Ela agrupa elementos, chamados

membros

ou

campos

da estrutura, que não necessitam ser

do mesmo tipo.

(11)

Exemplo:

#include <stdio.h> #include <string.h> struct Aluno{ char nome[100]; int ra; float cr; char sexo; int curso; }; int main(){

struct Aluno aluno;

strcpy(aluno.nome,"Fulano da Silva"); aluno.ra = 923348; aluno.cr = 7.0; aluno.sexo = 'M'; aluno.curso = 43; return 0; }

(12)

Exemplo:

#include <stdio.h> #include <string.h> struct Aluno{ char nome[100]; int ra; float cr; char sexo; int curso; }; int main(){

struct Aluno aluno;

strcpy(aluno.nome,"Fulano da Silva"); aluno.ra = 923348; aluno.cr = 7.0; aluno.sexo = 'M'; aluno.curso = 43; return 0; }

Definição do formato da

estrutura.

(13)

Exemplo:

#include <stdio.h> #include <string.h> struct Aluno{ char nome[100]; int ra; float cr; char sexo; int curso; }; int main(){

struct Aluno aluno;

strcpy(aluno.nome,"Fulano da Silva"); aluno.ra = 923348; aluno.cr = 7.0; aluno.sexo = 'M'; aluno.curso = 43; return 0; } Membros da estrutura “Etiqueta” da estrutura

(14)

Exemplo:

#include <stdio.h> #include <string.h> struct Aluno{ char nome[100]; int ra; float cr; char sexo; int curso; }; int main(){

struct Aluno aluno;

strcpy(aluno.nome,"Fulano da Silva"); aluno.ra = 923348; aluno.cr = 7.0; aluno.sexo = 'M'; aluno.curso = 43; return 0; }

Declaração de uma

variável do tipo definido.

(15)

Exemplo:

#include <stdio.h> #include <string.h> struct Aluno{ char nome[100]; int ra; float cr; char sexo; int curso; }; int main(){

struct Aluno aluno;

strcpy(aluno.nome,"Fulano da Silva"); aluno.ra = 923348; aluno.cr = 7.0; aluno.sexo = 'M'; aluno.curso = 43; return 0; } Acessando membros da estrutura. nome_registro.campo

(16)

Registros/Estruturas

• Operações de entrada e saída (leitura e

escrita):

o A

leitura

/

escrita

de estruturas pela

entrada

/

saída

padrão, deve ser feita campo a

campo, como se os membros fossem variáveis

independentes.

//fgets(aluno.nome,99,stdin); scanf(" %[^\n]",aluno.nome); scanf("%d",&aluno.ra); scanf("%f",&aluno.cr); scanf(" %c",&aluno.sexo); scanf("%d",&aluno.curso);

printf("Nome: %s\n",aluno.nome); printf("RA: %d\n",aluno.ra);

printf("CR: %.2f\n",aluno.cr); printf("Sexo: %c\n",aluno.sexo); printf("Curso: %d\n",aluno.curso);

(17)

Registros/Estruturas

• Atribuição entre estruturas:

o O conteúdo de uma variável estrutura pode ser atribuído a outra variável estrutura do mesmo tipo.

o Todos campos da estrutura de origem são atribuídos aos membros correspondentes da estrutura de destino.

int main(){

struct Aluno aluno1; struct Aluno aluno2; ...

aluno1 = aluno2; ...

return 0; }

(18)

Estruturas Aninhadas

• Estruturas com campos que são estruturas.

• Recurso para a criação de tipos de dados

complexos

.

struct Data{ int dia; int mes; int ano; }; struct Endereco{ char rua[100]; char bairro[100]; char cidade[100]; int cep; }; struct Aluno{ char nome[100]; int ra; float cr; char sexo; int curso;

struct Data nascimento; struct Endereco endereco; };

(19)

Estruturas Aninhadas

• Estruturas com campos que são estruturas.

• Recurso para a criação de tipos de dados

complexos

.

int main(){

struct Aluno aluno;

strcpy(aluno.nome,"Fulano da Silva"); aluno.ra = 923348; aluno.cr = 7.0; aluno.sexo = 'M'; aluno.curso = 43; aluno.nascimento.dia = 13; aluno.nascimento.mes = 9; aluno.nascimento.ano = 1980;

strcpy(aluno.endereco.rua,"Av. Dr. Alberto Sarmento"); strcpy(aluno.endereco.bairro,"Castelo");

strcpy(aluno.endereco.cidade,"Campinas"); aluno.endereco.cep = 1306275;

(20)
(21)

 As estruturas podem ser inicializadas a partir de listas de inicializadores, assim como acontece com os arrays.

 Para inicializar uma estrutura, siga o nome da variável na

declaração com um sinal de igual e uma lista, delimitada por chaves, de inicializadores separados por vírgulas.

 Por exemplo, a declaração

struct card aCard = { “Três”, “Copas” }; cria a variável aCard para ser do tipo struct card (conforme definido na Seção 10.2) e inicializa o membro face como “Três” e o membro suit como “Copas”.

(22)

 Dois operadores são usados para acessar membros das estruturas: o

operador de membro de estrutura (.) — também chamado de

operador de ponto — e o operador de ponteiro de estrutura (->) — também chamado operador de seta.

 O operador de membro da estrutura acessa um membro da estrutura por meio do nome da variável da estrutura.

 Por exemplo, para imprimir o membro suit da variável da estrutura aCard declarada na Seção 10.3, use a instrução

(23)

 O operador de ponteiro da estrutura — que consiste em um sinal de subtração (-) seguido de um sinal de maior (>) — acessa um

membro da estrutura por meio de um ponteiro para a estrutura.  Suponha que o ponteiro cardPtr tenha sido declarado para

apontar para struct card, e que o endereço da estrutura aCard tenha sido atribuído a cardPtr.

 Para imprimir o membro suit da estrutura aCard com o ponteiro cardPtr, use a instrução

(24)

 A expressão cardPtr->suit é equivalente a

(*cardPtr).suit, que desreferencia o ponteiro e acessa o membro suit usando o operador de membro da estrutura.

 Aqui, os parâmetros são necessários porque o operador de membro da estrutura (.) tem uma precedência maior que o operador de

desreferência de ponteiro (*).

 O operador de ponteiro da estrutura e o operador de membro da

estrutura, com os parênteses (para chamar funções) e colchetes ([]) usados para subscrito de array, possuem a precedência de operador mais alta, e são associados da esquerda para a direita.

(25)

 Por exemplo, a declaração a seguir  typedef struct {

char *face; char *suit; } Card;

cria o tipo de estrutura Card sem a necessidade de uma instrução typedef separada.

(26)

 Card agora pode ser usado para declarar variáveis do tipo struct card.

 A declaração

Card deck[ 52 ];

declara um array de 52 estruturas Card (ou seja, variáveis do tipo struct card).

 Criar um novo nome com typedef não cria um novo tipo;

typedef simplesmente cria um novo nome de tipo, que pode ser usado como um alias para um nome de tipo existente.

(27)
(28)
(29)
(30)

Exercícios sobre Registros

• 1. Declarar o registro cuja representação gráfica é

dada a seguir:

(31)

Exercícios sobre Registros

• 2. Utilizando o registro criado no exercício

anterior, atribuir os valores apresentados abaixo

aos campos correspondentes:

(32)

Exercícios sobre Registros

• 3. Declarar um vetor de registros cuja

representação gráfica é dada a seguir:

(33)

Exercícios sobre Registros

• 3. Para cada um dos exemplos a seguir, crie o seu

registro equivalente.

(34)

Bibliografia

• Cormen, T. H. et.al. Algoritmos: teoria e prática,

Terceira edição. Ed. Campus, 2002.

• Ziviani, Nivio. Projeto de algoritmos. Editora

Thompson, 1a edição, 2006.

• Celes, Filho. Et al. Introdução a Estruturas de

Dados. Rio de Janeiro. Sétima Edição. Ed. Elsevier,

2004.

Referências

Documentos relacionados

PEIC/UFU/2016 vem requerer inscrição para o Processo Seletivo para Bolsista de Extensão na Pró-reitoria de Extensão, Cultura e Assuntos Estudantis, da Universidade

f) Caso não cumpra, no mínimo, 80% (oitenta por cento) das atividades programadas pelo Grupo (Situação a ser avaliada pelos alunos (as) e Tutor (a) do PET Conexões

e) executar as transferências dos recursos de apoio financeiro suplementar à educação infantil aos entes federados, após o recebimento da descentralização do MDS,

É uma proposta metodológica de apropriação e de reconstrução do conhecimento sistematizado buscando evidenciar que todo o conteúdo que é trabalhado na escola e pelo aluno,

As vantagens da utilização de perfis de praia para monitoramento da linha de preamar máxima (LPM) são: (i) diminuição da incerteza quanto à identificação da

Para atender às revelações do Senhor para o ensino da Palavra para crianças, intermediários e adolescentes, o ideal é que todos os templos tenham três salas de aula

O aluno que após assistir a primeira aula e no prazo de 02 (dois) dias, dentro da 1ª semana de aulas, pedir o cancelamento de sua matricula terá.. devolvidos 80% do valor pago à

De forma complementar, serão também analisadas outras questões que vêm sendo alvo de questionamentos desde a promulgação do CPC/15: primeiro, a possibilidade de coexistirem a