Baixe o app para aproveitar ainda mais
Prévia do material em texto
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ÓDIGO: 102 − NOME: José da Silva − SALÁRIO: 1654,34 − SEXO: M FUNCIONÁRIO CÓDIGO NOME SALÁRIO SEXO c) 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 (nomeCampo1 TIPOCAMPO1, nomeCampo2 TIPOCAMPO2, …, nomeCampoN TIPOCAMPON) 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. 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 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. 0 1 2 3 ... 9 funcionario[3] CÓDIGO NOME SALÁRIO SEXO 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++: nomeDaVariávelDoTipoRegistro.nomeDoCampo 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 DECLARE produto REGISTRO (cod, valor_custo, valor_venda NUMÉRICO, nome LITERAL) DECLARE lucro NUMÉRICO ESCREVA “DADOS DE UM PRODUTO” ESCREVA “Entre com o código: ” LEIA produto.cod ESCREVA “Entre com o nome: ” LEIA produto.nome ESCREVA “Entre com o valor de custo: ” LEIA produto.valor_custo ESCREVA “Entre com o valor de venda: ” LEIA produto.valor_venda lucro produto.valor_venda – produto.valor_custo ESCREVA “O lucro é: ” ESCREVA lucro FIM_ALGORITMO #include<iostream> using namespace std; struct TProd{ int cod; char nome[30]; float valor_custo, valor_venda; }; int main() { TProd produto; float 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; 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 C/C++ ALGORITMO DECLARE profissoes[100] REGISTRO (cod NUMÉRICO, nome LITERAL) DECLARE i NUMÉRICO ESCREVA “ENTRADA DE DADOS DE 100 PROFISSÕES” PARA i ← 0 ATÉ 99 FAÇA INÍCIO ESCREVA i+1, "a. Profissão" ESCREVA “Entre com o código: ” LEIA profissoes[i].cod ESCREVA “Entre com o nome: ” LEIA profissoes[i].nome FIM ESCREVA “IMPRESSÃO DAS 100 PROFISSÕES” PARA i ← 0 ATÉ 99 FAÇA INÍCIO ESCREVA i+1, "a. Profissão:" ESCREVA “Código: ” ESCREVA profissoes[i].cod ESCREVA “Profissão: ” ESCREVA profissoes[i].nome FIM FIM_ALGORITMO #include<iostream> using namespace std; struct TProfissao{ int cod; char nome[30]; }; int main() { TProfissao profissoes[100]; int i; cout << "ENTRADA DE DADOS DE 100 PROFISSOES\n\n"; for(i=0; i<100; i++) { cout << i+1 << "a. Profissão\n"; cout << "Entre com o código: "; cin >> profissoes[i].cod; fflush(stdin); cout << "Entre com o nome: "; gets(profissoes[i].nome); } 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áriacom 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
Compartilhar