Вы находитесь на странице: 1из 4

AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DO

CURSO PROFISSIONAL DE TCNICO DE GESTO E PROGRAMAO DE SISTEMAS


INFORMTICOS
2012-2015
PROGRAMAO E SISTEMAS DE INFORMAO

MDULO 5 Estruturas de dados Compostas (40 aulas/45min)

Objetivos do mdulo:

- Definir e manipular tipos de dados compostos;

- Aplicar a estrutura de dados apropriada ao problema;

- Definir estruturas;

- Definir unies;

- Definir variveis simples a partir de estruturas;

- Definir matrizes a partir de estruturas;

- Definir variveis simples a partir de unies;

Contedos do mdulo:

- Definio de estruturas de dados compostas;

- Acesso aos campos de uma estrutura;

- Afetao dos campos de uma estrutura;

- Utilizao de Array de estruturas;

- Desenho de aplicaes que envolvam estruturas de dados de alguma complexidade.

Definio

Em C possvel que o programador defina os seus prprios tipos de dados combinando outros tipos de
dados bsicos numa s estrutura.

A ideia agregar numa estrutura os dados que esto relacionados.

Por exemplo, considere um programa para gerir dados de alunos em que, para cada aluno, pretendemos
armazenar a seguinte informao:

Nome, Morada, Cdigo Postal, N de Telefone, Email, Data de Nascimento

At agora a soluo passava por criar um vetor para cada elemento a armazenar ou, na melhor das
hipteses, combinar os elementos de acordo com o seu tipo de dados.

As estruturas permitem combinar estes campos agrupando-os num s tipo de dados, assim:

alunosnet@gmail.com alunosnet.pt.vu Pgina 1 de 4


struct aluno{
char nome[50];
char morada[100];
char cp[9];
char telefone[10];
char email[100];
char data_nascimento[9];
};

Assim temos um novo tipo de dados denominado struct aluno com vrios campos.

Sendo um novo tipo de dados podemos declarar uma varivel desse mesmo tipo de dados assim:

struct aluno x;

A varivel x composta por vrios campos que so referenciados utilizando o operador . (ponto final) logo a seguir
varivel para indicar qual o campo a referir.

printf(Introduza o nome:);

gets(x.nome);

printf(O nome introduzido foi: %s\n,x.nome);

Quando definimos o tipo de dados podemos, tambm, criar variveis com base nesse mesmo tipo de dados basta
adicionar o nome das variveis entre a } (chaveta a fechar) e o ; (ponto e vrgula) na declarao da estrutura;

struct aluno{
char nome[50];
char morada[100];
char cp[9];
char telefone[10];
char email[100];
char data_nascimento[9];
} var1,var2;

Quando s precisamos de uma varivel da estrutura podemos omitir o nome da estrutura e s indicar o da varivel.

A definio da estrutura pode estar dentro de uma funo mas as boas prticas indicam que devem estar fora e no
inicio do cdigo, logo a seguir aos #include e #define.

Uma maneira de simplificar o cdigo passa por utilizar a instruo typedef em conjunto com a struct para criar um
tipo de dados que permite definir as variveis sem utilizar a palavra struct, assim:

typedef struct{
char nome[50];
char morada[100];
char cp[9];
char telefone[10];
char email[100];
char data_nascimento[9];
} aluno;

Podemos, agora, definir variveis somente utilizando o tipo de dados definido:

alunosnet@gmail.com alunosnet.pt.vu Pgina 2 de 4


aluno x;

Inicializao

Tal como nos restantes tipos de dados podemos inicializar as variveis definidas com base numa estrutura quando as
declaramos.

typedef struct{
int x,y;
}ponto;

ponto p={1,2};

Tambm podemos atribuir os valores aps a declarao:

typedef struct{
int x,y;
}ponto;


ponto p;
p.x=1;
p.y=2;

Podemos ainda atribuir os valores de uma estrutura a outra:


typedef struct{
int x,y;
}ponto;


ponto p,q;
p.x=1;
p.y=2;
q=p;

Ateno que no possvel utilizar o operador == (igual) entre duas variveis declaradas com base em estruturas, a
igualdade tem de ser avaliada campo a campo.

Passagem a funes

Tal como as restantes variveis tambm podemos passar uma varivel criada com base numa estrutura para uma
funo. As regras so as mesmas quanto passagem por valor ou por referncia.

Alm de passar uma estrutura completa podemos passar somente um elemento da estrutura do seguinte modo:

func(p.x);

Quando passamos s um elemento a funo deve ter um parmetro com o tipo de dados que coincida com o tipo de
dados do elemento passado.

A passagem da estrutura inteira para dentro de uma funo implica que a estrutura seja definida globalmente.

alunosnet@gmail.com alunosnet.pt.vu Pgina 3 de 4


Quando passamos uma estrutura inteira o parmetro deve ser definido a partir da mesma estrutura se no o
compilador d erro, no basta que seja de uma estrutura idntica.

Vetores de estruturas

Um vetor pode ser definido com base numa estrutura assim:

typedef struct{
int x,y;
}ponto;


ponto pontos[10];

Com um vetor passamos a ter de indicar no s o campo da estrutura mas tambm o ndice dentro do vetor:

typedef struct{
int x,y;
}ponto;


ponto pontos[10];

printf(%d - %d\n,pontos[2].x,pontos[2].y);

alunosnet@gmail.com alunosnet.pt.vu Pgina 4 de 4

Вам также может понравиться

  • Ufcd 0133
    Ufcd 0133
    Документ2 страницы
    Ufcd 0133
    Amélia Costa Pereira
    Оценок пока нет
  • Ficha de Avaliação Diagnóstica Excel1718
    Ficha de Avaliação Diagnóstica Excel1718
    Документ4 страницы
    Ficha de Avaliação Diagnóstica Excel1718
    Amélia Costa Pereira
    Оценок пока нет
  • Ficha 9 PPT Anima
    Ficha 9 PPT Anima
    Документ2 страницы
    Ficha 9 PPT Anima
    Amélia Costa Pereira
    Оценок пока нет
  • Ficha 10 Acionadores
    Ficha 10 Acionadores
    Документ2 страницы
    Ficha 10 Acionadores
    Amélia Costa Pereira
    Оценок пока нет
  • Ficha11 4 Diogo
    Ficha11 4 Diogo
    Документ4 страницы
    Ficha11 4 Diogo
    Amélia Costa Pereira
    Оценок пока нет
  • Ficha 3 PPT Estrutura
    Ficha 3 PPT Estrutura
    Документ1 страница
    Ficha 3 PPT Estrutura
    Amélia Costa Pereira
    Оценок пока нет
  • Ficha 2 PPT
    Ficha 2 PPT
    Документ6 страниц
    Ficha 2 PPT
    Amélia Costa Pereira
    Оценок пока нет
  • Sistemas Informaticosna Areada Comunicacao 3 Ano
    Sistemas Informaticosna Areada Comunicacao 3 Ano
    Документ3 страницы
    Sistemas Informaticosna Areada Comunicacao 3 Ano
    Amélia Costa Pereira
    Оценок пока нет
  • Comofazerumaapresentaopowerpoint 120123171218 Phpapp01
    Comofazerumaapresentaopowerpoint 120123171218 Phpapp01
    Документ20 страниц
    Comofazerumaapresentaopowerpoint 120123171218 Phpapp01
    MARIAJBEZERRA
    Оценок пока нет
  • Resumo Tema I - Lógica e Teoria Conjuntos
    Resumo Tema I - Lógica e Teoria Conjuntos
    Документ22 страницы
    Resumo Tema I - Lógica e Teoria Conjuntos
    Amélia Costa Pereira
    Оценок пока нет
  • 2teste 11G 0708
    2teste 11G 0708
    Документ6 страниц
    2teste 11G 0708
    Dinis Costa
    Оценок пока нет
  • Ficha01 0139
    Ficha01 0139
    Документ1 страница
    Ficha01 0139
    Amélia Costa Pereira
    100% (1)
  • FTE08
    FTE08
    Документ1 страница
    FTE08
    Amélia Costa Pereira
    Оценок пока нет
  • FE10
    FE10
    Документ3 страницы
    FE10
    Amélia Costa Pereira
    Оценок пока нет
  • Apresentação 11 Montagem de Computadores
    Apresentação 11 Montagem de Computadores
    Документ15 страниц
    Apresentação 11 Montagem de Computadores
    Amélia Costa Pereira
    Оценок пока нет
  • Ficha 7 Excel
    Ficha 7 Excel
    Документ1 страница
    Ficha 7 Excel
    Amélia Costa Pereira
    Оценок пока нет
  • Semelhança Figuras
    Semelhança Figuras
    Документ2 страницы
    Semelhança Figuras
    Amélia Costa Pereira
    Оценок пока нет
  • Expoente 10 Sintese Tema I
    Expoente 10 Sintese Tema I
    Документ4 страницы
    Expoente 10 Sintese Tema I
    Idália Moleirinho de Oliveira
    Оценок пока нет
  • 1testea 11G 0708
    1testea 11G 0708
    Документ6 страниц
    1testea 11G 0708
    Amélia Costa Pereira
    Оценок пока нет
  • Secções
    Secções
    Документ2 страницы
    Secções
    Amélia Costa Pereira
    Оценок пока нет
  • Montagem de PC
    Montagem de PC
    Документ3 страницы
    Montagem de PC
    Amélia Costa Pereira
    Оценок пока нет
  • 2teste 11G 0708 PDF
    2teste 11G 0708 PDF
    Документ6 страниц
    2teste 11G 0708 PDF
    Amélia Costa Pereira
    Оценок пока нет
  • Secções
    Secções
    Документ5 страниц
    Secções
    Ana Carla Pereira Barbosa
    Оценок пока нет
  • 1teste 0910
    1teste 0910
    Документ2 страницы
    1teste 0910
    Amélia Costa Pereira
    Оценок пока нет
  • Ficha N.º 8
    Ficha N.º 8
    Документ1 страница
    Ficha N.º 8
    Amélia Costa Pereira
    Оценок пока нет
  • Apresentação 11 Montagem de Computadores
    Apresentação 11 Montagem de Computadores
    Документ15 страниц
    Apresentação 11 Montagem de Computadores
    Amélia Costa Pereira
    Оценок пока нет
  • Apresentação 11 Montagem de Computadores
    Apresentação 11 Montagem de Computadores
    Документ15 страниц
    Apresentação 11 Montagem de Computadores
    Amélia Costa Pereira
    Оценок пока нет
  • Fichadetrabalho 1
    Fichadetrabalho 1
    Документ8 страниц
    Fichadetrabalho 1
    Amélia Costa Pereira
    Оценок пока нет
  • Aula 1 - SGBD
    Aula 1 - SGBD
    Документ7 страниц
    Aula 1 - SGBD
    Amélia Costa Pereira
    Оценок пока нет
  • Ficha N.º 6
    Ficha N.º 6
    Документ3 страницы
    Ficha N.º 6
    Amélia Costa Pereira
    Оценок пока нет
  • Bibliotecas para Manipulação de Dados
    Bibliotecas para Manipulação de Dados
    Документ34 страницы
    Bibliotecas para Manipulação de Dados
    Caroline Lopes Avila Paier
    Оценок пока нет
  • Aula 5 PDF
    Aula 5 PDF
    Документ4 страницы
    Aula 5 PDF
    Jonatas Riciano Silveira
    Оценок пока нет
  • 15.3 Versao Final Com ISBN-Estrutura de Dados 07.07.14
    15.3 Versao Final Com ISBN-Estrutura de Dados 07.07.14
    Документ122 страницы
    15.3 Versao Final Com ISBN-Estrutura de Dados 07.07.14
    Edmilson De Araujo Amancio
    Оценок пока нет
  • List A 01
    List A 01
    Документ2 страницы
    List A 01
    Andrius
    Оценок пока нет
  • Introdução A Programação em Vba
    Introdução A Programação em Vba
    Документ20 страниц
    Introdução A Programação em Vba
    gonzagaw
    100% (1)
  • Apostila LabVIEW Versao 3 Exercicios
    Apostila LabVIEW Versao 3 Exercicios
    Документ36 страниц
    Apostila LabVIEW Versao 3 Exercicios
    Anonymous O6I4DK
    Оценок пока нет
  • 414813-Apostila Rápida de Pascalzim
    414813-Apostila Rápida de Pascalzim
    Документ56 страниц
    414813-Apostila Rápida de Pascalzim
    Diego Oliveira
    Оценок пока нет
  • Estrutura de Dados
    Estrutura de Dados
    Документ248 страниц
    Estrutura de Dados
    ibtatwin
    100% (1)
  • Filas
    Filas
    Документ6 страниц
    Filas
    soceares
    Оценок пока нет
  • Funcoes Tratamento XML
    Funcoes Tratamento XML
    Документ13 страниц
    Funcoes Tratamento XML
    Evangelista Sampaio
    Оценок пока нет
  • Comecando Com JavaScript - 30 at Guto Xavier
    Comecando Com JavaScript - 30 at Guto Xavier
    Документ143 страницы
    Comecando Com JavaScript - 30 at Guto Xavier
    Fabiana Santo
    Оценок пока нет
  • Strings Pascal
    Strings Pascal
    Документ5 страниц
    Strings Pascal
    kaizerslawten
    Оценок пока нет
  • Pascal
    Pascal
    Документ47 страниц
    Pascal
    f_dalton
    Оценок пока нет
  • Atividade POO 3p Superior - Encapsulamento
    Atividade POO 3p Superior - Encapsulamento
    Документ2 страницы
    Atividade POO 3p Superior - Encapsulamento
    SuperCassy
    Оценок пока нет
  • Curso C# Básico - 13 - Vetores Ou Arrays e Matrizes
    Curso C# Básico - 13 - Vetores Ou Arrays e Matrizes
    Документ6 страниц
    Curso C# Básico - 13 - Vetores Ou Arrays e Matrizes
    Raffa Zanatta
    Оценок пока нет
  • Java 53
    Java 53
    Документ68 страниц
    Java 53
    Giovane Kauer
    Оценок пока нет
  • A3 - Matriz
    A3 - Matriz
    Документ7 страниц
    A3 - Matriz
    Luiz Henrique Guimarães Soares
    Оценок пока нет
  • BL 09 - Prog - Linguagem de Programacao Aplicado A Automacao
    BL 09 - Prog - Linguagem de Programacao Aplicado A Automacao
    Документ4 страницы
    BL 09 - Prog - Linguagem de Programacao Aplicado A Automacao
    Vanildo Silva
    Оценок пока нет
  • Pilhas
    Pilhas
    Документ6 страниц
    Pilhas
    Rafael G. Aguiar
    Оценок пока нет
  • Aula 3 - PDF
    Aula 3 - PDF
    Документ4 страницы
    Aula 3 - PDF
    Jonatas Riciano Silveira
    Оценок пока нет
  • AED I Lista 2 Exercicios Resolvidos
    AED I Lista 2 Exercicios Resolvidos
    Документ13 страниц
    AED I Lista 2 Exercicios Resolvidos
    Heitor Santos Reis
    100% (1)
  • Listaexerc Algoritmos Vetor PDF
    Listaexerc Algoritmos Vetor PDF
    Документ5 страниц
    Listaexerc Algoritmos Vetor PDF
    Mariana Cunha
    Оценок пока нет
  • LPRE1 TODAS AULAS Linguagem C PDF
    LPRE1 TODAS AULAS Linguagem C PDF
    Документ117 страниц
    LPRE1 TODAS AULAS Linguagem C PDF
    mateus
    Оценок пока нет
  • Linguagem de Programação C++
    Linguagem de Programação C++
    Документ98 страниц
    Linguagem de Programação C++
    agashmidtgmailcom
    100% (1)
  • C# 1
    C# 1
    Документ286 страниц
    C# 1
    Jose Gilberto Machado Canuto
    Оценок пока нет
  • 3-Tipos de Dados - Parte 1
    3-Tipos de Dados - Parte 1
    Документ32 страницы
    3-Tipos de Dados - Parte 1
    Everton França
    Оценок пока нет
  • C# - Linguagem de Scripts e Fundamentos Da Programação
    C# - Linguagem de Scripts e Fundamentos Da Programação
    Документ104 страницы
    C# - Linguagem de Scripts e Fundamentos Da Programação
    Janayna Autran
    Оценок пока нет
  • Apostila PHP Slides
    Apostila PHP Slides
    Документ205 страниц
    Apostila PHP Slides
    anacco
    Оценок пока нет
  • Python PDF
    Python PDF
    Документ83 страницы
    Python PDF
    testegomide
    Оценок пока нет
  • Algoritmo Estrutura de Dados 01
    Algoritmo Estrutura de Dados 01
    Документ24 страницы
    Algoritmo Estrutura de Dados 01
    Higor Medeiros
    Оценок пока нет