11
stão stão LINGUAGENS DE PROGRAMAÇÃO Módulo 6: Tipo Estruturado - Registos Curso Profissional de Informática de Ges Curso Profissional de Informática de Ges 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

7-Modulo6

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 7-Modulo6

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

Page 2: 7-Modulo6

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

Page 3: 7-Modulo6

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

Page 4: 7-Modulo6

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

Page 5: 7-Modulo6

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

Page 6: 7-Modulo6

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.

Page 7: 7-Modulo6

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

Page 8: 7-Modulo6

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

Page 9: 7-Modulo6

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

Page 10: 7-Modulo6

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

Page 11: 7-Modulo6

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