Vous êtes sur la page 1sur 27

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Programao e Sistemas de Informao

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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)

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Exemplo
Nome Idade Pessoa Naturalidade Profisso Cdigo Nome Artigo Preo Quantidade

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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

!! Forma de acesso aos dados

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Declarao de registos como tipo de dados


struct nome_da_estrutura { tipo_dados campo_1; tipo_dados campo_2; tipo_dados campo_n; };
Escola Secundria Daniel Faria Baltar Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Declarao de registos como variveis


!! No momento da criao da estrutura struct nome_da_estrutura { tipo_dados campo_1; tipo_dados campo_2; tipo_dados campo_n; } var1, var2, , varn; !! Posteriormente criao da estrutura nome_da_estrutura var1, var2, varn;

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Exemplo
Vector char int float float

Atleta

Nome Idade Altura Peso

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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

!! Exemplo de declarao de variveis


atleta a1, a2;
Declarao de variveis TIPO struct atleta

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Utilizao de registos
!! Sintaxe para referencia de variveis tipo registo
!! Para o registo var1

!! Para o campo do registo var1.campo

!! Sendo esta a forma de referencia as operaes e procedimentos acontecem da forma habitual

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Exemplo
!! O campo nome da varivel a1
a1.nome

!! A varivel a2
a2

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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) ; }

!!

Atribuio de valores !! a1.idade=18;

!!

Leitura de valores !! gets(a1.nome)

!!

Escrita de valores !! cout << a1.nome

!!

copia de strings !! cpystr(a1.nome, Joana Lemos)

!!

Atribuio entre campos da estrutura !! a2.idade=a1.idade

!!

Atribuio entre variveis da estrutura !! a1=a2

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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);

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Avanando
!! E se for necessrio fazer o calculo para vrios artigos?
!! 100 variveis do tipo artigo??? artigo a1, a2, a3, a4, , a100;

!! Ou um vector do tipo artigo com 100 elementos? " artigo a[100];


Escola Secundria Daniel Faria Baltar Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Combinao de registos com vectores


!! possvel combinar registos com vectores !! Basta declarar um vector como uma varivel do tipo estrutura !! Sintaxe de arrays tipo estrutura
nome_estrutura array[num_elementos];

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Combinao de registos com vectores


!! Exemplo de declarao de estrutura (com declarao de um vector)
struct atleta { char nome[30]; int idade; float altura, peso; } a[10];
Declarao de um vector a TIPO struct atleta Declarao de tipo de dados

!! Exemplo de declarao de um vector


atleta a[10];
Declarao de um vector a TIPO struct atleta

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Combinao de registos com vectores


!! Sintaxe para referencia de vectores tipo registo
!! Para o registo como vector var[ i ] !! Para o campo do registo como vector
var[ i ].campo

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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);

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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);

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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 ;

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Operaes com vectores de registos


!! Idnticas s utilizadas em vectores de tipos de dados simples:
!! Operaes entre campos do registo !! Pesquisa !! Insero !! Modificao !! Eliminao !! Ordenao

!! Em alguns casos o processo mais eficaz por se tratar de um estrutura

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Passagem de registos para funes


!! possvel utilizar registos como parmetros de funes
!! Esta passagem pode ser feita como
!! Varivel tipo estrutura !! Apontador para varivel tipo estrutura (a ver no mdulo 6)

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

Passagem de registos para funes


// Programa DADOS #include <iostream> using namespace std; struct dados { int idade ; float peso; }; void altera (dados d) { d.idade ++ ; d.peso = d.peso * 1.1 ; cout << Dentro da funo\n; cout << Idade: << d.idade << \t ; cout << Peso: << d.peso << \t ; } } main() { dados d1 ; d1.idade = 17; d1.peso = 70.5 ; altera (d1) ; cout << Dentro de main\n; cout << Idade: << d1.idade << \t ; cout << Peso: << d1.peso << \t ; system (PAUSE) ;

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Gesto e Programao de Sistemas Informticos

Programao e Sistemas de Informao

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.

Escola Secundria Daniel Faria Baltar

Ana Maria Teles de Meneses

Vous aimerez peut-être aussi