Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmo e Estruturas de dados Engenharia Elétrica Registros Vimos inúmeras aplicações onde são necessários conjuntos de elementos do mesmo tipo, e para tal utilizamos os vetores. No entanto em alguns problemas há necessidade de definirmos conjuntos onde os elementos não sejam do mesmo tipo. O registro é um conjunto de dados logicamente relacionados e é uma das principais estruturas de dados. Um registro consiste em trabalhar vários dados de tipos diferentes em uma mesma estrutura e por isso é considerado heterogêneo Registros Por exemplo, seja um registro constituído dos campos referentes aos dados de um aluno da universidade, tais como, número de matrícula, nome completo, idade, turma, período em que se encontra e média geral. Exemplo: var MAT:caracter NOME:caracter IDADE:inteiro TURMA:caracter PERIODO:inteiro MEDIA:real Registros: sintaxe Com base no exemplo anterior podemos extrair a estrutura geral para a declaração de um registro em português estruturado: tipo <identificador> = registro <lista de campos e seus tipos> Fimregistro Var <variável> : <identificador> Onde identificador é o nome do tipo registro Registros: sintaxe declaração de um registro em C++: struct <identificador> { <lista de campos e seus tipos> } <identificador> <variável> ; Onde identificador é o nome do tipo registro Registros: sintaxe Exemplo: tipo reg_aluno = registro MAT:caracter NOME:caracter IDADE:inteiro TURMA:caracter PERIODO:inteiro MEDIA:real Fimregistro Var aluno:reg_aluno Aluno: Mat Nome Idade Turma Periodo media struct reg_aluno { char MAT; string NOME; int IDADE; string TURMA; int PERIODO; float MEDIA; } reg_aluno aluno; Registros: atribuição, leitura e escrita Atribuição <nome_reg [indice]>•<nome_campo> EXPRESSÃO; <nome_reg>•<nome_campo> EXPRESSÃO; Exemplo: aluno•mat 000123 aluno•nome “Jose” Leitura leia(<nome_do_registro>[indice] •<nome_do_campo>); leia(<nome_do_registro>•<nome_do_campo>); Exemplo: leia(aluno•mat); Leia(aluno•nome); Escrita escreva (<nome_do_registro>[indice]•<nome_do_campo>); escreva (<nome_do_registro>•<nome_do_campo>); Exemplo: escreva(aluno•mat) Escreva(aluno•nome) Para acessarmos um determinado campo de um registro devemos utilizar o operador “.” Registros: Exemplo1 Algoritmo “exemplo1” Tipo funcionario=registro nome:caractere; idade:inteiro; salario:real; Fimregistro Var f1:funcionario Inicio escreva(“Informe nome do funcionario:”) leia(f1.nome) escreva(“Informe idade do funcionario:”) leia(f1.idade) escreva(“Informe salario do funcionario: “) leia(f1.salario) escreva(“Dados do funcionario”) escreva(“Nome=“,f1.nome,”Idade=“,f1.idade,”Salario=“,f1.salario) fimalgoritmo Registros: Exemplo2 – utilizando vetor Algoritmo “exemplo1” Tipo funcionario=registro nome:caractere; idade:inteiro; salario:real; Fimregistro Var f1:vetor [1..5] de funcionario i:inteiro Inicio para i de 1 ate 5 faca escreva(“Informe nome do funcionario:”) leia(f1[i].nome) escreva(“Informe idade do funcionario:”) leia(f1[i].idade) escreva(“Informe salario do funcionario: “) leia(f1[i].salario) fimpara escreva(“Dados do funcionario”) para i de 1 ate 5 faca escreva(“Nome=“,f1[i].nome,”Idade=“,f1[i].idade,”Salario=“,f1[i].salario) fimpara fimalgoritmo Demonstração do vetor 1 nome idade salario 2 nome idade salario 3 nome idade salario 4 nome idade salario 5 nome idade salario Registros: Exemplo3 – Linguagem C++ #include <cstdlib> #include <iostream> using namespace std; struct funcionario{ int idade; string nome; float salario; }; int main(int argc, char *argv[]) { funcionario f1; cout<<"\nInforme nome do funcionario:"; cin>>f1.nome; cout<<"\nInforme idade do funcionario: "; cin>>f1.idade; cout<<"\nInforme salario do funcionario: "; cin>>f1.salario; cout<<"\nDados do funcionario"; cout<<"\n Nome= "<<f1.nome<<" Idade= "<<f1.idade<<“Salario="<<f1.salario<<"\n"; system("PAUSE"); return EXIT_SUCCESS; } Registros: Exemplo4 – Linguagem C++ #include <cstdlib> #include <iostream> using namespace std; struct funcionario{ int idade; string nome; float salario; }; int main(int argc, char *argv[]) { funcionario f1[5]; int i; for(i=0;i<5;i++){ cout<<"\nInforme nome do funcionario:"; cin>>f1[i].nome; cout<<"\nInforme idade do funcionario: "; cin>>f1[i].idade; cout<<"\nInforme salario do funcionario: "; cin>>f1[i].salario; }; cout<<"\nDados do funcionario"; for(i=0;i<5;i++){ cout<<"\nNome= "<<f1[i].nome<<" Idade= "<<f1[i].idade<<" Salario= “<<f1[i].salario<<"\n"; }; system("PAUSE"); return EXIT_SUCCESS; } Exercícios Elabore um algoritmo para ler idade e altura de 15 atletas de uma equipe, calcular a média das idades e das alturas, e finalmente, exibir os dados lidos e as duas médias calculadas. Escreva um algoritmo que crie uma estrutura para armazenar as informações dos alunos, cujos campos são: matricula, nome e 4 notas. O algoritmo deve efetuar a leitura das 4 notas bimestrais de 8 alunos e calcular a média das notas. Escreva um algoritmo que defina um registro para representar uma operação matemática. O registro deve armazenar dois números e um símbolo, que pode ser: + (adição), - (subtração), * (multiplicação), / (divisão), ^ (potenciação).
Compartilhar