UNIVERSIDADE FEDERAL DE ITAJUBÁ – UNIFEI – CAMPUS ITABIRA
BAC004 – TÉCNICAS DE PROGRAMAÇÃO
Professores: Claudia, Denílson, Fabiana, Fernando, Juliano,
Natália, Raquel, Rodrigo, Sandro e Walter
Roteiro Prático Nº 10 – Estruturas/Registros
1) Objetivos: Definir e apresentar registros com suas manipulações em pseudocódigo e na linguagem de
programação C/C++. Registros são variáveis compostas heterogêneas, que também são chamados de
estruturas.
2) Livro texto:
ASCENCIO, A. F. G., CAMPOS, E. A. V. Fundamentos da Programação de Computadores (Algoritmos,
Pascal, C/C++ e Java). 2 ed. São Paulo: Prentice-Hall, 2008.
3) Fundamentação Teórica :
a)
Referência para consulta e estudos: Capítulo 10 do livro texto.
b) Definição: (Livro texto – seção 10.1)
Até o presente momento só foi possível a manipulação de coleção de dados do mesmo tipo, ou seja, quando
se declara um vetor de inteiros, todos os seus elementos são desse tipo; o mesmo ocorre com matrizes.
Já com registros, também chamados de estruturas, é possível agregar informações de tipos diferentes,
criando-se um novo tipo de dado. Um registro é, portanto, uma coleção de campos, em que cada campo pode
ser de um tipo diferente.
O conceito de registro visa facilitar o agrupamento de variáveis que não são do mesmo tipo, mas que guardam
estreita relação lógica. O registro é um caso mais geral de variável composta na qual os elementos do
conjunto não precisam ser, necessariamente, homogêneos ou do mesmo tipo (FARRER ET AL, 2008).
Exemplo:
Registro FUNCIONARIO
−
−
−
−
c)
CÓDIGO: 102
NOME: José da Silva
SALÁRIO: 1654,34
SEXO: M
FUNCIONÁRIO
CÓDIGO
NOME
SALÁRIO
SEXO
Declaração: A forma geral para se criar uma variável do tipo de dado registro é apresentada a seguir.
Como acontece com qualquer outro tipo de dado, uma variável registro pode ser simples, um vetor ou uma
matriz.
c.1) Sintaxe da declaração em Português Estruturado:
DECLARE nomeDaVariávelRegistro REGISTRO
TIPOCAMPO2, …, nomeCampoN
TIPOCAMPON)
(nomeCampo1
TIPOCAMPO1,
nomeCampo2
Exemplo 1: Pseudocódigo – VARIÁVEL SIMPLES REGISTRO
DECLARE funcionario REGISTRO (codigo, salario NUMÉRICO, nome, sexo LITERAL)
Neste exemplo, foi declarada uma variável chamada funcionario. Esta variável é um registro composto por
quatro campos: codigo e salario numéricos, e nome e sexo literais.
Exemplo 2: Pseudocódigo – CONJUNTO DE REGISTROS
DECLARE funcionario[10] REGISTRO (codigo, salario NUMÉRICO, nome, sexo LITERAL)
Neste exemplo, foi declarado um vetor chamado funcionario de 10 posições. Em cada posição será
armazenado um registro, composto por 4 campos: codigo e salario numéricos, e nome e sexo literais.
funcionario[3]
CÓDIGO
0
NOME
1
SALÁRIO
SEXO
2
3
...
9
c.2) Sintaxe da declaração na linguagem C/C++:
struct TipoRegistro{ // primeiro cria-se o tipo de dado registro
tipoCampo1
nomeCampo1;
tipoCampo2
nomeCampo2;
...
tipoCampon
nomeCampon;
};
TipoRegistro
nomeDaVariávelRegistro; /* depois declara-se a variável do tipo
registro criado */
Exemplo 1: C/C++
struct TFunc{ // primeiro cria-se o tipo TFunc
int codigo;
float salario;
char nome[30],
sexo;
};
TFunc funcionario; // depois, declara-se a variável funcionario do tipo TFunc
Exemplo 2: C/C++
struct TFunc{ // primeiro cria-se o tipo TFunc
int codigo;
float salario;
char nome[30],
sexo;
};
TFunc funcionario[10]; /* depois, declara-se um vetor chamado funcionario do
tipo TFunc */
d) Acesso aos campos de um registro: Pelo fato do registro conter várias informações, para acessar um
campo individualmente é necessário indicar o nome da variável e o nome do campo desejado, separados
por um ponto.
Sintaxe do acesso aos campos em Português Estruturado e na linguagem C/C++:
.nomeDoCampo
nomeDaVariávelDoTipoRegistro
ponto
Exemplo 1:
Pseudocódigo
C/C++
funcionario.codigo ← 102
funcionario.codigo = 102;
Neste exemplo, o número 102 é inserido no campo codigo da variável registro chamada funcionario.
Exemplo 2:
Pseudocódigo
C/C++
funcionario[3].codigo ← 103
funcionario[3].codigo = 103;
Neste exemplo, o número 103 é inserido no campo codigo da quarta posição da variável registro
chamada funcionario.
Exemplo 3:
Pseudocódigo
C/C++
ESCREVA conta[2, 1].num
cout << conta[2][1].num;
Neste exemplo, imprime-se o valor do campo num, localizado na 3a. linha, 2a. coluna da variável registro
chamada conta.
4) Exemplos usando registros de algoritmos em Português Estruturado e em C/C++:
a) Um produto possui código, nome, valor de custo e de venda. Assim, elabore um algoritmo em português
estruturado que leia esses dados em um registro e calcule o lucro do produto.
Pseudocódigo
C/C++
ALGORITMO
#include<iostream>
DECLARE produto REGISTRO (cod, valor_custo, using namespace std;
valor_venda NUMÉRICO, nome LITERAL)
DECLARE lucro NUMÉRICO
struct TProd{
int cod;
ESCREVA “DADOS DE UM PRODUTO”
char nome[30];
ESCREVA “Entre com o código: ”
float valor_custo,
LEIA produto.cod
valor_venda;
ESCREVA “Entre com o nome: ”
};
LEIA produto.nome
ESCREVA “Entre com o valor de custo: ”
int main()
LEIA produto.valor_custo
{
ESCREVA “Entre com o valor de venda: ”
TProd produto;
LEIA produto.valor_venda
float lucro;
lucro 
cout << "DADOS DE UM PRODUTO:\n\n";
cout << "Entre com o código: ";
cin >> produto.cod;
fflush(stdin);
cout << "Entre com o nome: ";
gets(produto.nome);
cout << "Entre com o valor de custo: ";
cin >> produto.valor_custo;
cout << "Entre com o valor de venda: ";
cin >> produto.valor_venda;
produto.valor_venda –
produto.valor_custo
ESCREVA “O lucro é: ”
ESCREVA lucro
FIM_ALGORITMO
lucro = produto.valor_venda produto.valor_custo;
cout << "\nO lucro é: ";
cout << lucro;
system("pause > null");
return 0;
}
b) Dada a tabela a seguir:
CÓDIGO
NOME
0 1000
ALFAIATE
1 1050
ALMOXARIFE
2 2000
ANALISTA
3 2050
ANTROPÓLOGO
4 3000
BOMBEIRO
5 3050
CARPINTEIRO
...
98 198050
TORNEIRO
99 199000
VENDEDOR
Escreva um algoritmo que leia a tabela acima e em seguida a imprima.
Pseudocódigo
ALGORITMO
DECLARE
profissoes[100]
NUMÉRICO, nome LITERAL)
DECLARE i NUMÉRICO
C/C++
REGISTRO
#include<iostream>
(cod using namespace std;
struct TProfissao{
int cod;
ESCREVA “ENTRADA DE DADOS DE 100 PROFISSÕES”
char nome[30];
PARA i ← 0 ATÉ 99 FAÇA
};
INÍCIO
ESCREVA i+1, "a. Profissão"
int main()
ESCREVA “Entre com o código: ”
{
LEIA profissoes[i].cod
TProfissao profissoes[100];
ESCREVA “Entre com o nome: ”
int i;
LEIA profissoes[i].nome
FIM
cout << "ENTRADA DE DADOS DE 100
PROFISSOES\n\n";
ESCREVA “IMPRESSÃO DAS 100 PROFISSÕES”
for(i=0; i<100; i++)
PARA i ← 0 ATÉ 99 FAÇA
{
INÍCIO
cout << i+1 << "a. Profissão\n";
ESCREVA i+1, "a. Profissão:"
cout << "Entre com o código: ";
ESCREVA “Código: ”
cin >> profissoes[i].cod;
ESCREVA profissoes[i].cod
fflush(stdin);
ESCREVA “Profissão: ”
cout << "Entre com o nome: ";
ESCREVA profissoes[i].nome
gets(profissoes[i].nome);
FIM
}
FIM_ALGORITMO
cout << "IMPRESSÃO DAS 100 PROFISSÕES\n\n";
for(i=0; i<100; i++)
{
cout << i+1 << "a. Profissão\n";
cout << "Código: " << profissoes[i].cod;
cout << " Nome: " << profissoes[i].nome
<< endl;
}
system("pause > null");
return 0;
}
5) Roteiro:
a ) Faça um programa utilizando registro que leia apenas uma conta bancária com as seguintes informações:
número da conta, nome do cliente e saldo. Apresente esses dados na tela.
b ) Modifique o programa anterior para realizar o cadastro de apenas 15 contas e não pode haver mais de uma
conta com o mesmo número. Observação: utilize um vetor de registros para guardar os dados.
c ) Modifique o programa anterior criando o menu de opções a seguir e implemente cada um deles:
1. Cadastrar uma conta
2. Visualizar todas as contas
3. Mostrar informações da conta com maior saldo
4. Mostrar informações da conta com menor saldo
5. Excluir uma conta
Se der tempo faça também....
d ) Modifique o programa anterior criando tipos registros para Cliente e Endereço, conforme o esquema
abaixo.
CONTA
CLIENTE
ENDEREÇO
Número
nome
rua
Saldo
CPF
número
Cliente
Endereço
cidade
estado
CEP
e ) Modifique o programa anterior adicionando outras opções no menu:
• Mostrar os dados da conta de um dado cliente (passando seu CPF)
• Mostrar a quantidade de clientes de uma dada cidade
Download

COLÉGIO UNIVERSITÁRIO PADRE DE MAN