Upload
sala-tic
View
212
Download
0
Embed Size (px)
DESCRIPTION
Â
Citation preview
Cu
rso
Pro
fiss
ion
al d
e In
form
áti
ca d
e G
estã
oC
urs
o P
rofi
ssio
na
l de
Info
rmá
tica
de
Ges
tão
LINGUAGENS DE PROGRAMAÇÃOMódulo 6: Tipo Estruturado - Registos
Cu
rso
Pro
fiss
ion
al d
e In
form
áti
ca d
e G
estã
oC
urs
o P
rofi
ssio
na
l de
Info
rmá
tica
de
Ges
tão
Conteúdos
1. Noção de registos
2. Vantagens da utilização de registos
3. Regras de utilização de registos
4. Manipulação de registos
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Noção de registos
� Até agora todos os dados eram armazenados em variáveis simples: char, int, float ou double. Podendo também ser armazenados conjuntos de valores relacionados em vectores, que tinham a capacidade de conter vários elementos do mesmo tipo.
� Os registosregistos (designados Estruturas no C) permitem colocar, numa única entidade, elementos de tipos colocar, numa única entidade, elementos de tipos diferentes.
� Uma estrutura é, assim, um conjunto de uma ou mais variáveis (a que vulgarmente também se chama campos ou membros) agrupadas sob um único nome, de forma a facilitar a sua referência.� As estruturas podem conter elementos de qualquer tipo de
dados válidos em C (tipos básicos ou mesmo outras estruturas)
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Declaração de estruturas
� A declaração de estruturas é realizada através da seguinte sintaxe:
struct [nome_da_estrutura]
{{
tipo1 campo1, campo2;
…
tipon campo;
};
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Declaração de estruturas - exemplo
� Definir uma estrutura capaz de suportar datas.
struct Data
{{
int Dia, Ano;
char Mes[20];
};
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Declaração de variáveis do tipo
estrutura
� Para declarar uma variável do tipo struct
Data, atrás apresentado, basta indicar qual o tipo, seguido do nome das variáveis:
struct Data d, datas[100];struct Data d, datas[100];
� Em que:� d é uma variável do tipo struct Data.
� datas é um vector de 100 elementos, sendo cada um deles um estrutura do tipo struct Data.
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Declaração de variáveis do tipo
estrutura� A declaração de variáveis pode também ser
realizada quando se faz a definição da própria estrutura:
struct [nome_da_estrutura]
{{
tipo1 campo1, campo2;
…
tipon campo;
} v1, v2, …, vn;
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Exemplo:
� Definir uma estrutura capaz de suportar a definição de um indivíduo. Declarar na definição as variáveis Paulo e Teresa, desse mesmo tipo.
struct Pessoa
{{
int idade;
char sexo, est_civil;
char nome[60];
float salario;
} Paulo, Teresa;
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Acesso aos membros de uma estrutura
� Para aceder ao membro mmm de uma estrutura eee usa-se o operador pontoponto (..) ficando eee.mmm
� Exemplo:Exemplo:
struct Data {int dia, ano; char mês[12];} dt_nasc;
dt_nasc.dia = 23;
strcpy(dt_nasc.mes, ”Janeiro”);
dt_nasc.ano = 1966;
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Inicialização automática
� Uma estrutura pode ser inicializada quando é declarada:
struct nome_estrutura var ={val1, val2, …, valn}
� Exemplosstruct Data { int dia, ano; char mes[12]; } dt_nasc = {23,1966,”Jan”};
struct Data { int dia, ano; char mes[12]; }
dt_nasc = {23,1966,”Jan”};
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Definição de tipos - typedef
� Uma das desvantagens existentes na utilização de estruturas está na declaração das variáveis que têm sempre que ser precedidas da palavra reservada struct seguida do nome da estrutura.
� O ideal seria podermos representar uma estrutura unicamente através de uma palavra, tal como fazemos com os tipos base da linguagem.fazemos com os tipos base da linguagem.
� Isto é possível através da palavra reservada typedeftypedef:
typedef tipo_existente sinónimo;
� A palavra typedef não cria um novo tipo. Permite apenas que um determinado tipo possa ser denominado de forma diferente, de acordo com as necessidades do programador.
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Exemplo:
� Declare um novo tipo denominado PESSOA que permita identificar a estrutura pessoa.
typedef struct Pessoa
{{
int idade;
char sexo, est_civil;
char nome[60];
float salario;
} PESSOA;
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
AtençãoAtenção: na definição de um typedef não podem ser declaradas variáveis.
Onde definir estruturas e typedef
#include<. . . . .>
#include<. . . . .>
struct data{. . . .};
typedef . . . . . .;
/* protótipos das funções *//* protótipos das funções */
. . . . . .
/* funções */
f() {. . . .}
g() {. . . .}
main() {. . . .}
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Estruturas dentro de estruturas
� Uma estrutura pode conter, na sua definição, variáveis simples, vectores, apontadores ou mesmo outras estruturas.
� A única restrição a que tem que obedecer, é A única restrição a que tem que obedecer, é que todas as estruturas ou tipos utilizados na definição de uma nova estrutura têm que estar previamente definidos.
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Exemplo
� Declare um novo tipo denominado pessoa que contenha o nome, idade, salário e data de nascimento.
typedef struct
{ int Dia;
char Mes[3+1];char Mes[3+1];
int Ano; } DATA;
typedef struct s_pessoa
{ char Nome[100];
int Idade;
float Salario;
DATA dt_Nasc; } PESSOA;
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Exemplo
� Declare uma variável simples desse tipo e um vector com 3 pessoas.
struct s_pessoa homem, mulher[3];
� ou
PESSOA homem, mulher[3];
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Exemplo
� Como alterar o código para inicializar as variáveis no momento da declaração?
PESSOA homem = {”To”, 23, 123.45, {10,”MAI”,1986}},
mulher = {{”Ze”, 51, 0.0, {15, ”JUN”, 1958}},
{”Alf”, 17, 52.0, {22, ”JUL”, 1992}},{”Alf”, 17, 52.0, {22, ”JUL”, 1992}},
{”NY”, 22, 25.93, {14, ”DEZ”, 1987}}
};
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Exemplo
� Adicionar um dia à data de nascimento do homem:homem.dt_Nasc.Dia++;
� Colocar o ano 1999 na segunda mulher do vector:mulher[1].dt_Nasc.Ano = 1999;
� Alterar o mês da última mulher para ”NOV”:� Alterar o mês da última mulher para ”NOV”:strcpy(mulher[2].dt_Nasc.Mes, ”NOV”);
� Mostrar no ecrã a primeira letra de cada um dos meses das mulheres:
for(i=0; i<3; i++)
putchar(mulher[i].dt_Nasc.Mes[0]);
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Passagem de estruturas para funções
� A passagem de estruturas para funções faz-se indicando no parâmetro o tipo associado à estrutura (ou ao typedef).
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Bibliografia
� Damas, Luís; LINGUAGEM C; FCA; 2ª edição; Lisboa; 1999
� Aguilar, Luis Joyanes; FUNDAMENTOS DE PROGRAMAÇÃO – Algoritmos, estruturas de dados e objetos; Mc Graw Hill; Tradução da 3ª edição; São Paulo; 2008
� Azul, Artur Augusto; BASES DE PROGRAMAÇÃO 10; Porto Editora; Porto
� Azul, Artur Augusto; BASES DE PROGRAMAÇÃO 10; Porto Editora; Porto
� http://www.eisnt.com/GPSI/programacao/Aula4C.pdf
� http://www.linhadecodigo.com.br/Artigo.aspx?id=425
� http://www.criarweb.com/artigos/825.php
� http://deei.fct.ualg.pt/PI_flobo/teorica7.html
� http://www.di.ubi.pt/~fsilva/prog/Prog_Cap4.pdf (em 10/11/2008)
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6
Bibliografia
� Damas, Luís; LINGUAGEM C; FCA; 2ª edição; Lisboa; 1999
� Aguilar, Luis Joyanes; FUNDAMENTOS DE PROGRAMAÇÃO – Algoritmos, estruturas de dados e objetos; Mc Graw Hill; Tradução da 3ª edição; São Paulo; 2008
� Azul, Artur Augusto; BASES DE PROGRAMAÇÃO 10; Porto Editora; Porto
� Azul, Artur Augusto; BASES DE PROGRAMAÇÃO 10; Porto Editora; Porto
� Em 10/11/2008� http://www.eisnt.com/GPSI/programacao/Aula4C.pdf
� http://www.linhadecodigo.com.br/Artigo.aspx?id=425
� http://www.criarweb.com/artigos/825.php
� http://deei.fct.ualg.pt/PI_flobo/teorica7.html
� http://www.di.ubi.pt/~fsilva/prog/Prog_Cap4.pdf
Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6