Você está na página 1de 11

Programação de Computadores

Registros

José Romildo Malaquias

Departamento de Computação
Universidade Federal de Ouro Preto

2023.1

1/11
Relembrando estruturas de dados

Como representar as características de uma


pessoa?
Variáveis simples
int idade;
double altura;
Vetores
int idades[10];
double alturas[5];
nome
Matrizes
cpf
int idades[2][10]; altura
peso
cor do cabelo

2/11
Registros

Registros são estruturas de dados capazes de agregar várias informações.


São coleções de dados heterogêneos agrupados em um mesmo elemento de dados.
Com registros os programadores podem gerar novos tipos de dados, não se limitando à utilização
dos tipos de dados primitivos.

3/11
Definição de tipos registros

Os registros em C++ são definidos pela A partir da struct definida, pode-se


utilização da palavra reservada struct: considerar que existe um novo tipo de dado a
ser utilizado.
struct nome_do_tipo_registro { Depois da definição do registro, uma ou mais
tipo1 campo1 ; variáveis do tipo nome_do_tipo_registro
tipo2 campo2 ; podem ser declaradas, sendo que os valores
.
. das variáveis estão relacionados aos campos
.
tipon campon ; do registro.
}; Cada informação contida em um registro é
chamada de campo.
A definição do tipo registro através da Os campos podem ser de diferentes tipos
palavra reservada struct apenas cria um
primitivos ou estruturados (inclusive outros
modelo do registro
tipos registros).
define quais características compõem o
registro
Por isso são chamadas variáveis compostas
heterogêneas

4/11
Exemplo
Declaração de um tipo para representar uma pessoa:

struct pessoa {
string nome;
int idade;
double salario;
};

Declaração de uma variável do tipo pessoa:

pessoa p1 = { "Lucimar de Matos", 23, 2000.00 };

nome idade salário


p1 "Lucimar de Matos" 23 2000.00

Para acessar os campos de um registro, é necessário indicar o nome da variável e o nome do campo
desejado, separados por ponto.

cout << "Nome: " << p1.nome << endl;


5/11
Exemplo completo

#include <iostream> Digite o nome: Mateus


using namespace std; Digite a idade: 28
Digite o salário: 3258.5
struct pessoa { Mateus tem 28 anos e recebe
string nome; ,→ R$3258.5
int idade;
double salario;
};

int main() {
pessoa p1;

cout << "Digite o nome: "; cin >> p1.nome;


cout << "Digite a idade: "; cin >> p1.idade;
cout << "Digite o salário: "; cin >> p1.salario;

cout << p1.nome << " tem " << p1.idade << " anos"
<< " e recebe R$" << p1.salario << endl;

return 0;
} 6/11
Registros aninhados
O tipo do campo pode ser um tipo registro:
#include <iostream>
using namespace std;

struct data_ { // observação: o nome data já existe na biblioteca


int dia;
int mes;
int ano;
};

struct pessoa {
string nome;
double salario;
data_ nascimento;
};

int main() {
pessoa p{"Beatriz", 1200, {20, 11, 2003}};
cout << p.nascimento.dia << "/" << p.nascimento.mes << "/" << p.nascimento.ano << endl;
return 0;
} 7/11
Exercício

Faça um programa que defina um tipo registro para representar um carro, contendo campos para o
modelo, a cor, e o ano de fabricação. O programa deve ler os dados de três carros e exibir o
modelo do carro mais antigo.

8/11
Arranjos de vetores

E se for necessário
..
armazenar os dados .
de 100 pessoas? int main() {
pessoa vet_pessoas[10];
for (int i = 0; i < 10; ++i) {
cin >> vet_pessoas[i].nome;
cin >> vet_pessoas[i].idade;
cin >> vet_pessoas[i].salario;
As estruturas vetores e registros podem ser combinadas }
para armazenar vários valores do tipo registro de uma vez. return 0;
Cada elemento do vetor será do tipo registro. }
Como o vetor é uma estrutura homogênea, todos os
elementos devem ser do mesmo tipo registro.

9/11
Exercício

Elabore um programa que leia uma quantidade de carros e crie um vetor com os dados dos carros
(cada carro tem um nome, ano de fabricação e preço).
Leia um preço de referência e mostre as informações de todos os carros com preço menor (na
ordem em que foram lidos).

10/11
Fim

11/11

Você também pode gostar