Buscar

Computação Básica - Registros

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
COMPUTAÇÃO BÁSICA
Registros
Prof. Bruno Macchiavello (bruno@cic.unb.br)
Universidade de Brasília – UnB 
Instituto de Ciências Exatas – IE 
Departamento de Ciência da Computação – CIC 
Prof. Bruno Macchiavello 1
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Introdução
• Um registro ou estrutura (struct) é uma coleção
de uma ou mais variáveis, possivelmente de
tipos diferentes, agrupadas sob um único
identificador.
• Registros constituem um recurso importante
para organizar os dados utilizados por um
programa pois trata um grupo de valores como
uma única variável.
Prof. Bruno Macchiavello 2
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Introdução
• Estruturas (ou registros) são classificados como 
variáveis compostas heterogêneas, pois podem
agrupar variáveis de tipos diferentes.
• Em contraposição, temos os vetores e matrizes, 
classificados como variáveis compostas 
homogêneas, pois somente agrupam variáveis 
do mesmo tipo.
Prof. Bruno Macchiavello 3
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Registros
• Exemplos
Podemos ver que as variaveis Nome, Sexo, Endereço, 
Dados de Funcionários
Código: 9182 Nome: Hermenegildo Florentil Sexo: Masculino
Endereço: Rua dos Registros Isolados, 736
Cargo: Chefe de Divisória Salario: $ 455,46
• Cargo são Literais, o Código é um inteiro, e o Salario é 
do tipo real. Todas essas variaveis e seus tipos, criam 
um novo tipo de dado: DADOS DE FUNCIONÁRIOS
• Podemos analisar que da mesma forma que existe os 
tipos, literal, inteiro, real, agora existe o tipo Dados de 
Funcionários, e variáveis podem ter esse tipo.
Prof. Bruno Macchiavello 4
Cargo: Chefe de Divisória Salario: $ 455,46
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Registros
• Em pseudo-código podemos declarar um 
registro como o exemplo abaixo
Exemplo de declaração de um registro em pseudocódigo.
Algoritmo FuncionariosDaEmpresa
Prof. Bruno Macchiavello 5
Algoritmo FuncionariosDaEmpresa
Variáveis
i : inteiro
funcionarioDaEmpresa : registro( nome, sexo, endereço, cargo : literal ; 
codigo : inteiro ; salario : real)
Início
....
Fim
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Registros
• Ou da seguinte forma
Exemplo de declaração de um registro em pseudocódigo.
Algoritmo FuncionariosDaEmpresa
Definições
Prof. Bruno Macchiavello 6
Definições
tipoFuncionarioDaEmpresa : registro( nome, sexo, endereço, cargo : literal ; 
codigo : inteiro ; salario : real)
Variaveis
funcionarioDaEmpresa : tipoFuncionarioDaEmpresa
Inicio
....
Fim
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Em Ansi C
• Vamos ver primeiro um exemplo simples
struct data
{
Prof. Bruno Macchiavello 7
{
int dia;
int mes;
int ano;
};
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Em Ansi C
• A palavra-chave struct informa ao compilador 
que um modelo de estrutura está sendo 
definido.
• “data” é um identificador que dá nome à • “data” é um identificador que dá nome à 
definição da estrutura.
• Uma definição de estrutura é um comando, por 
isso deve terminar em ponto-e-vírgula.
Prof. Bruno Macchiavello 8
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Em Ansi C
• Os campos de uma estrutura podem ser de 
qualquer tipo, inclusive uma estrutura 
previamente definida.
• Porém, o tipo dos campos não podem ser o do 
próprio tipo que está sendo definido.
• A definição do formato de uma estrutura pode 
ser feita dentro da função principal (main) ou 
fora dela.
Prof. Bruno Macchiavello 9
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Em Ansi C – Usando Typedef
• Novos tipos de dados podem ser definidos 
utilizando-se a palavra-chave typedef.
typedef struct
Prof. Bruno Macchiavello 10
typedef struct
{
<tipo> campo_1;
<tipo> campo_2;
...
<tipo> campo_n;
} nome_do_tipo;
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Em Ansi C – Usando Typedef
• O uso mais comum de typedef é com estruturas de dados, pois 
evita que a palavra-chave struct tenha de ser colocada toda vez 
que uma estrutura é declarada.
#include <stdio.h>
typedef struct {
int codigo;
Prof. Bruno Macchiavello 11
int codigo;
float salario;
char nome[50], sexo[10], endereco[50], cargo[50]
} tipoDadosDeFuncionario;
int main() {
tipoDadosDeFuncionario dadosDeFuncionario;
...
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Em Ansi C - Declarando
• Em C podemos também declarar:
#include <stdio.h>
struct dadosDeFuncionario{
Prof. Bruno Macchiavello 12
struct dadosDeFuncionario{
int codigo;
float salario;
char nome[50], sexo[10], endereco[50], cargo[50]
};
/*Neste caso o novo tipo de dado se chama struct dadosDeFuncionario*/
int main() {
struct dadosDeFuncionario dadosDeFuncionario;
...
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Em Ansi C - Declarando
• Podemos declara como variavél global
struct <etiqueta> {
<tipo> campo_1;
<tipo> campo_2;
...
Prof. Bruno Macchiavello 13
<tipo> campo_2;
...
<tipo> campo_n;
} <variáveis>;
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Em Ansi C - Declarando
• Porém, lembrar que normalmente NÃO é bom trabalhar com 
variáveis globais.
#include <stdio.h>
struct dadosDeFuncionario{
int codigo;
float salario;
Prof. Bruno Macchiavello 14
float salario;
char nome[50], sexo[10], endereco[50], cargo[50]
} dadosFunc; 
/* Neste caso, dadosFunc é variavel global, e não devemos utilizar variáveis 
globais!*/
int main() {
dadosFunc.codigo = 9182;
...
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Acessando os campos
• Podemos acessar individualmente os campos 
de uma determinada estrutura como se fossem 
variáveis comuns.
• A sintaxe para acessar e manipular campos de • A sintaxe para acessar e manipular campos de 
estruturas é a seguinte:
Prof. Bruno Macchiavello 15
<nome_da_variável><nome_da_variável>..<campo><campo>
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
UniversidadeUniversidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo
Algoritmo FuncionariosDaEmpresa
Definições
tipoFuncionarioDaEmpresa : registro( nome, sexo, endereço, cargo : literal ; 
codigo : inteiro ; salario : real)
Variaveis
Prof. Bruno Macchiavello 16
Variaveis
funcionarioDaEmpresa : tipoFuncionarioDaEmpresa
Inicio
funcionarioDaEmpresa.nome ← ‘ Hermenegildo Florentil’
funcionarioDaEmpresa.codigo ← 9182
funcionarioDaEmpresa.sexo ←‘masculino’
...
Fim
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo – Ansi C
#include <stdio.h>
typedef struct {
int codigo;
float salario;
char nome[50], sexo[10], endereco[50], cargo[50];
} tipoDadosDeFuncionario;
Prof. Bruno Macchiavello 17
} tipoDadosDeFuncionario;
int main() {
tipoDadosDeFuncionario dadosDeFuncionario;
dadosDeFuncionario.codigo = 9182;
dadosDeFuncionario.Salario = 455.46;
...
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Leitura de Dados
• A leitura dos campos de uma estrutura a partir 
do teclado deve ser feita campo a campo, como 
se fosse variáveis independentes.
Prof. Bruno Macchiavello 18
printf (“Digite o nome do aluno: ”);
scanf (“%s”, aluno.nome);
printf (“Digite a idade do aluno: ”);
scanf (“%d”, &aluno.idade);
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo
Algoritmo FuncionariosDaEmpresa
Definições
tipoFuncionarioDaEmpresa : registro (nome, sexo, endereço, cargo : literal ; 
codigo : inteiro ; salario : real)
Variaveis
funcionarioDaEmpresa[100] : tipoFuncionarioDaEmpresa
Prof. Bruno Macchiavello 19
funcionarioDaEmpresa[100] : tipoFuncionarioDaEmpresa
i : inteiro
Inicio
para i←0 até 99 faça 
leia funcionarioDaEmpresa[i].nome
leia funcionarioDaEmpresa[i].sexo
leia funcionarioDaEmpresa[i].endereço
....
Fim
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo em C
#include <stdio.h>
typedef struct {
int codigo;
float salario;
char nome[50], sexo[10], endereco[50], cargo[50];
} tipoDadosDeFuncionario;
Prof. Bruno Macchiavello 20
int main() {
tipoDadosDeFuncionario dadosDeFuncionario[100];
int i;
for (i = 0; i<100; i++ ) {
scanf(“%s”, dadosDeFuncionario[i].nome);
scanf(“%d”, &dadosDeFuncionario[i].codigo);
scanf(“%s”, dadosDeFuncionario[i].sexo);
...
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Registros aninhados
• Um campo de um registro pode ser um outro
registro.
• Quando isso ocorre, temos um registro• Quando isso ocorre, temos um registro
aninhado.
• O padrão ANSI C especifica que as estruturas
podem ser aninhadas até 15 níveis, mas a
maioria dos compiladores permite mais.
Prof. Bruno Macchiavello 21
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo
#include <stdio.h>
typedef struct {
int dia;
int mes;
int ano
} tipoData;
/*o registro tipoData, é muito utilizado quando temos que armazenar datas*/
typedef struct {
Prof. Bruno Macchiavello 22
typedef struct {
tipoData data;
char nome[50];
char cpf[13];
}tipoVisitanteDaEmpresa;
int main() {
tipoVisitanteDaEmpresa visitante;
visitante.data.dia = 29;
visitante.data.mes = 11;
visitante.data.ano = 2007;
visitante.cpf = ‘111111111-11’;
....
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Vetor de Registros
• Usado quando precisamos de diversas cópias 
de uma estrutura.
• Por exemplo, cada cliente de uma locadora de • Por exemplo, cada cliente de uma locadora de 
vídeo constitui um elemento de um vetor, cujo 
tipo é uma estrutura de dados que define as 
características de cada cliente.
Prof. Bruno Macchiavello 23
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Vetores de Registros
#include <stdio.h>
typedef struct {
int codigo;
float salario;
Prof. Bruno Macchiavello 24
float salario;
char nome[50], sexo[10], endereco[50], cargo[50]
} tipoDadosDeFuncionario;
int main() {
tipoDadosDeFuncionario dadosDeFuncionario[10];
...
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Ponteiros para estruturas
• Ainda não estudamos ponteiros. Porém, é muito 
comum utilizar ponteiros para declarar os 
registros
• Para acessar uma estrutura com ponteiros 
pode-se usar duas sintaxes:
�Operador ponto:
�Operador seta:
Prof. Bruno Macchiavello 25
*<ponteiro_estrutura>.<campo>
<ponteiro_estrutura>-><campo>
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo
#include <stdio.h>
typedef struct {
int dia;
int mes;
int ano
} tipoData;
Prof. Bruno Macchiavello 26
int main() {
tipoData *p; /* define ponteiro p para registros data */
tipoData x; 
p = &x; /* agora p aponta para x */ 
(*p).dia = 31; /* mesmo efeito que x.dia = 31 */ 
(*p).mes = 8;
(*p).ano = 1998; 
....
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exemplo Ansi C
#include <stdio.h>
typedef struct {
int dia;
int mes;
int ano
} tipoData;
Prof. Bruno Macchiavello 27
int main() {
tipoData *p; /* define ponteiro p para registros data */
tipoData x; 
p = &x; /* agora p aponta para x */ 
p->dia = 31; /* mesmo efeito que x.dia = 31 */ 
p->mes = 8;
p->ano = 1998; 
....
}
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Detalhes de C: ENUM
• enum é a abreviação de ENUMERATE.
• Podemos usar esta palavra chave para declarar e 
inicializar uma seqüência de constates inteiras.
• Sua principal vantagem é quando não se quer 
inicializar todas as constantes e cada uma precisa 
ter um valor único.
• Por padrão, a primeira constante equivale a zero. 
As restantes equivalem à anterior incrementada em 
um.
Prof. Bruno Macchiavello 28
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
ENUM
• colors é o nome dado para o grupo de 
constantes (opcional).
• Se não é atribuído um valor para as constantes, 
enum colors {RED, GREEN, BLUE};
• Se não é atribuído um valor para as constantes, 
o valor padrão atribuído para o primeiro 
elemento na lista (RED em nosso caso) será 0 
(zero).
• As demais constantes com valor indefinido terão 
valor o da constante anterior mais 1 (um).
• No nosso caso, GREEN = 1 e BLUE = 2.
Prof. Bruno Macchiavello 29
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade dede BrasíliaBrasília
Computação BásicaComputação Básica
ENUM
• Pode-se atribuir valores para as constantes.
enum colors {RED = 1, enum colors {RED = 1, 
YELLOW, 
GREEN = 6, 
• Agora RED = 1, YELLOW = 2, GREEN = 6 e 
BLUE = 7. 
• Geralmente usa-se letras maiúsculas para dar 
nome às constantes.
Prof. Bruno Macchiavello 30
BLUE};BLUE};
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
Universidade Universidade de de BrasíliaBrasília
Computação BásicaComputação Básica
Exercícios
1. Faça um algoritmo que cadastre os filmes de uma locadora, sendo que
a locadora tem no máximo 100 filmes diferentes. Incialmente o lagorimo
deve pedir a quantidade de filmes a cadastrar é depois pedir a seguinte
informação para cada filme: Titulo, Categoria (Comedia, Ação, Drama,
Desenho), Duração (em minutos), Nome do Diretor(a), Quantidade de
Prof. Bruno Macchiavello 31
Desenho), Duração (em minutos), Nome do Diretor(a), Quantidade de
copias que existem na locadora, e o ano de lançamento.

Continue navegando