Académique Documents
Professionnel Documents
Culture Documents
Contedos
!! Conceito de registo !! Vector vs registo !! Declarao de registos - struct !! Utilizao de variveis do tipo struct !! Combinao de registos com vectores !! Passagem de registos para funes !! Gesto de registos
Escola Secundria Daniel Faria Baltar Ana Maria Teles de Meneses
Conceito
!! Um tipo de dados estruturados que permite agrupar elementos de vrios tipos diferentes, sob a forma de campos, numa mesma estrutura !! Estas estruturas so habitualmente designadas por registos (record)
Exemplo
Nome Idade Pessoa Naturalidade Profisso Cdigo Nome Artigo Preo Quantidade
Vector vs Registo
!! Diferena entre vector e registo
!! Tipo de dados
!! Vectores: elementos do mesmo tipo de dados !! Registos: elementos de diferentes tipos de dados
Exemplo
Vector char int float float
Atleta
Declarao de registos
!! Exemplo de declarao de estrutura (com declarao de variveis)
struct atleta { char nome[30]; int idade; float altura, peso; } a1, a2;
Declarao de variveis TIPO struct atleta Declarao de tipo de dados
Utilizao de registos
!! Sintaxe para referencia de variveis tipo registo
!! Para o registo var1
Exemplo
!! O campo nome da varivel a1
a1.nome
!! A varivel a2
a2
Utilizao de registos
#include <string.h> #include <iostream> using namespace std; main() { struct atleta { char nome[30] ; int idade ; } a1, a2 ; a1.idade = 18 ; cout << Escreva o nome: ; gets (a1.nome) ; cout << a1.nome << \n ; strcpy (a2.nome, Joana Lemos) ; a2.idade = a1.idade ; a1 = a2 ; cout << a1.nome << \t ; cout << a1.idade << \n ; system (PAUSE) ; }
!!
!!
!!
!!
!!
!!
Exemplo
// Programa PESSOA #include <string.h> #include <iostream> using namespace std; main() { struct pessoa { char nome[30] ; int idade ; }; pessoa aluno1, aluno2 ; cout << Dados relativos ao primeiro aluno\n ; cout << Nome: ; gets (aluno1.nome) ; cout << Idade: ; cin >> aluno1.idade ; cout << Dados relativos ao segundo aluno\n ; cout << Nome: ; gets (aluno2.nome) ; cout << Idade: ; cin >> aluno2.idade ; if (aluno1.idade < aluno2.idade) cout << O << aluno1.nome << mais novo\n; else if (aluno1.idade>aluno2.idade) cout << O << aluno2.nome << mais novo\n; else cout << Os alunos tm a mesma idade\n; system (PAUSE); } Escola Secundria Daniel Faria Baltar Ana Maria Teles de Meneses
Exemplo
// Programa ARTIGO #include <string.h> #include <iostream> using namespace std; main() { struct artigo { char nome[30] ; float preco, quant ; } artigo1, artigo2; cout << Dados relativos ao primeiro artigo\n ; cout << Nome: ; gets (artigo1.nome) ; cout << Preo: ; cin >> artigo1.preco ; cout << Quantidade: ; cin >> artigo1.quant ; } cout << Dados relativos ao segundo artigo\n ; cout << Nome: ; gets (artigo2.nome) ; cout << Preo: ; cin >> artigo2.preco ; cout << Quantidade: ; cin >> artigo2.quant ; cout << Valor em stock do primeiro artigo: ; cout << artigo1.preco*artigo1.quant << \n ; cout << Valor em stock do segundo artigo: ; cout << artigo2.preco*artigo2.quant << \n ; system (PAUSE);
Avanando
!! E se for necessrio fazer o calculo para vrios artigos?
!! 100 variveis do tipo artigo??? artigo a1, a2, a3, a4, , a100;
Exemplo
// Programa ARTIGO v2 #include <string.h> #include <iostream> using namespace std; main() { struct artigos { char nome[30] ; float preco, quant ; } artigo[100]; int i; } for (i = 0; i < 100; i++) { cout << Dados relativos ao artigo << i+1<< \n ; cout << Nome: ; gets (artigo[i].nome) ; cout << Preo: ; cin >> artigo[i].preco ; cout << Quantidade: ; cin >> artigo[i].quant ; } for (i = 0; i < 100; i++) { cout << Valor em stock do artigo << i+1<< : ; cout << artigo[i].preco*artigo[i].quant << \n ; } system (PAUSE);
Exemplo
// Programa PESSOA #include <string.h> #include <iostream> using namespace std; main() { struct pessoa { char nome[30] ; int idade ; }; pessoa aluno[19] ; int i, inovo; } for (i = 0; i < 19; i++) { cout << Dados relativos ao aluno << i+1 << \n ; cout << Nome: ; gets (aluno[i].nome) ; cout << Idade: ; cin >> aluno[i].idade ; } inovo = 0; for (i = 0; i < 19; i++) if (aluno[inovo].idade > aluno[i].idade) inovo = i; cout << O aluno mais novo << aluno[inovo].nome; cout << e tem << aluno[inovo].idade <<\n; system (PAUSE);
Exemplo
// Programa FICHA #include <string.h> #include <iostream> using namespace std; main() { struct ficha { char sexo ; int idade ; } pessoa[100] ; int i, n, mas, fem, idadesm, idadesf; int mediam, mediaf; } cout << Numero de elementos: ; cin >> n; for (i = 0; i < n; i++) { cout << Elemento << i+1 << \n ; cout << Sexo (F/M): ; cin << pessoa[i].sexo) ; cout << Idade: ; cin >> pessoa[i].idade ;
Exemplo (cont.)
masc = 0; fem = 0; idadesm = 0; idadesf = 0; for (i = 0; i < n; i++) { if (pessoa[i].sexo == F) { fem = fem + 1; idadesf = idadesf + pessoa[i].idade; } else if (pessoa[i].sexo == M) mas = mas + 1; idadesm = idadesm + pessoa[i].idade; } } mediaf = idadesf / fem; mediam = idadem / mas; cout << Media de idades do sexo feminino = << mediaf << \n; cout << Media de idades do sexo masculino = << mediam << \n; system (PAUSE); }
Escola Secundria Daniel Faria Baltar Ana Maria Teles de Meneses
Actividade
!! A partir da estrutura atleta crie um vector de registos jogador
!! Pesquisar um jogador por numero dado !! Pesquisar o jogador mais velho e o mais novo !! A mdia das idades !! O ano de nascimento dos jogadores !! Ordenar os jogadores por numero
Escola Secundria Daniel Faria Baltar Ana Maria Teles de Meneses
Referncias
!! TREMBLAY, Jean-Paul & BUNT, Richard B., Introduction to Computer Science: An Algorithmic Approach, 2. Ed. Lisboa: McGraw-Hill, 1989. !! LIMA, Jorge R., Linguagem Algortmica, Porto: Universidade Portucalense Departamento de Informtica, 1987. !! AZUL, Artur A., Bases de Programao Curso Tecnolgico de Informtica 10. ano, Porto: Porto Editora, 2004. !! MARQUES DE S, Joaquim P., Fundamentos de Programao Usando C, Lisboa: FCA, 2004. !! KERNIGHAN, Brian & RITCHIE, Dennis, The C Programming Language, 2nd Ed. New Jersey: Prentice Hall, 1988.