
Prof. Paulo Rettore
Universidade Federal de Lavras
GAC124 — Introdução aos Algoritmos
Um registro reúne informações de tipos diferentes que descrevem a mesma entidade.
Nome, matrícula e notas.
Código, descrição e preço.
Título, autor e ano.
Em C++, registros são criados com struct.
struct Aluno {
string nome;
int matricula;
double nota1;
double nota2;
};Os campos de uma struct podem ter tipos diferentes, mas todos pertencem ao mesmo aluno.
Aluno a;
a.nome = "Ana";
a.matricula = 20260001;
a.nota1 = 85.0;
double media = (a.nota1 + a.nota2) / 2.0;Use o operador ponto . para acessar os campos de uma variável do tipo registro.
Aluno a;
cout << "Matrícula: ";
cin >> a.matricula;
cin.ignore();
cout << "Nome: ";
getline(cin, a.nome);
cin >> a.nota1 >> a.nota2;Ao misturar cin e getline(), descarte a quebra de linha com cin.ignore().
const int N = 3;
Aluno turma[N];
for (int i = 0; i < N; i++) {
cin >> turma[i].matricula;
cin.ignore();
getline(cin, turma[i].nome);
}O vetor representa várias entidades; cada posição é um registro completo.
double media(const Aluno& a) {
return (a.nota1 + a.nota2) / 2.0;
}
void imprime(const Aluno& a) {
cout << a.nome << ": " << media(a);
}O const Aluno& evita cópia desnecessária e informa que a função não deve alterar o registro.
Aluno origem = {"Ana", 20260001, 80, 90};
Aluno copia;
copia = origem;
copia.nome = "Bia";A atribuição copia todos os campos. Depois, os dois registros são independentes.
Um registro ocupa espaço para todos os seus campos. O compilador pode incluir pequenos espaços internos para alinhar os dados na memória.
Para a maior parte dos programas introdutórios, a prioridade é modelar os dados com clareza; detalhes de alinhamento aparecem em situações mais avançadas.
Modele um Produto com código, nome e preço. Leia três produtos e mostre o mais caro.
Gabarito orientador: Crie uma struct, armazene os registros em um vetor e percorra as posições procurando o maior preço.
Use estas fontes para consultas pontuais depois da aula:
Os slides completos, o Campus Virtual e o DREDD continuam sendo as fontes principais da disciplina.
Um struct agrupa dados relacionados; um vetor de registros organiza várias pessoas.
nome: Ana
matrícula: 2026001
nota: 8.5
nome: Bruno
matrícula: 2026002
nota: 7.0
nome: Carla
matrícula: 2026003
nota: 9.2
struct Aluno { string nome; int matricula; double nota; };
Aluno turma[3];
cout << turma[1].nome;O ponto central é alternar a leitura do texto e dos números sem deixar a quebra de linha pendente.
getline(cin, aluno.nome);
cin >> aluno.matricula >> aluno.nota;
cin.ignore();Use uma função como lerAluno(Aluno& a) para concentrar a leitura e reaproveitar o código.
PRÓXIMA AULA
Prof. Paulo Rettore
GAC124 — Introdução aos Algoritmos