Upload
margarida-miragaia
View
46
Download
1
Embed Size (px)
Citation preview
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Programao e Sistemas de Informao
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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)
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Exemplo
Pessoa
Nome Idade Naturalidade Profisso
Artigo
Cdigo Nome Preo Quantidade
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Declarao de registos como tipo de dados
struct nome_da_estrutura
{
tipo_dados campo_1;
tipo_dados campo_2;
tipo_dados campo_n;
};
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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;
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Exemplo
Atleta
Nome Idade Altura Peso
Vector char
int
float
float
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Declarao de registos Exemplo de declarao de estrutura (com declarao de variveis)
struct atleta {
char nome[30];
int idade;
float altura, peso;
} a1, a2;
Exemplo de declarao de variveis atleta a1, a2;
Declarao de tipo de dados
Declarao de variveis TIPO struct atleta
Declarao de variveis TIPO struct atleta
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Exemplo
O campo nome da varivel a1
a1.nome
A varivel a2
a2
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Utilizao de registos #include
#include
using namespace std;
main() {
struct atleta {
char nome[30] ;
int idade ;
} a1, a2 ;
a1.idade = 18 ;
cout
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Exemplo // Programa PESSOA
#include
#include
using namespace std;
main() {
struct pessoa {
char nome[30] ;
int idade ;
} ;
pessoa aluno1, aluno2 ;
cout
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Exemplo // Programa ARTIGO
#include
#include
using namespace std;
main() {
struct artigo {
char nome[30] ;
float preco, quant ;
} artigo1, artigo2;
cout artigo1.quant ;
cout artigo2.quant ;
cout
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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];
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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];
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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];
Exemplo de declarao de um vector atleta a[10];
Declarao de tipo de dados
Declarao de um vector a TIPO struct atleta
Declarao de um vector a TIPO struct atleta
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Exemplo // Programa ARTIGO v2
#include
#include
using namespace std;
main() {
struct artigos {
char nome[30] ;
float preco, quant ;
} artigo[100];
int i;
for (i = 0; i < 100; i++) {
cout
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Exemplo // Programa PESSOA
#include
#include
using namespace std;
main() {
struct pessoa {
char nome[30] ;
int idade ;
} ;
pessoa aluno[19] ;
int i, inovo;
for (i = 0; i < 19; i++) {
cout
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Exemplo // Programa FICHA
#include
#include
using namespace std;
main() {
struct ficha {
char sexo ;
int idade ;
} pessoa[100] ;
int i, n, mas, fem, idadesm, idadesf;
int mediam, mediaf;
cout > n;
for (i = 0; i < n; i++) {
cout
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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)
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
Passagem de registos para funes // Programa DADOS
#include
using namespace std;
struct dados {
int idade ;
float peso;
} ;
void altera (dados d) {
d.idade ++ ;
d.peso = d.peso * 1.1 ;
cout
Gesto e Programao de Sistemas Informticos Programao e Sistemas de Informao
Ana Maria Teles de Meneses Escola Secundria Daniel Faria Baltar
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.