7-Modulo6

Page 1

Curso Profissional de Informática de Gestão

Módulo 6: Tipo Estruturado - Registos

LINGUAGENS DE PROGRAMAÇÃ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 registos (designados Estruturas no C) permitem 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]; 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 ponto (..) ficando eee.mmm 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}

Exemplos struct 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. Isto é possível através da palavra reservada typedef typedef: 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; Atenção: na definição de um typedef não podem ser Atenção declaradas variáveis. Curso Profissional de Informática de Gestão - 2008/2011 - Módulo 6


Onde definir estruturas e typedef #include<. . . . .> #include<. . . . .> struct data{. . . .}; typedef . . . . . .; /* 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, é

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]; 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}}, {”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”: 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 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 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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.