Sei sulla pagina 1di 22

Linguagem C

- Estruturas -

Estruturas
Estruturas de
de dados
dados
Uma estrutura (struct) uma coleo de um ou
mais variveis, possivelmente de tipos
diferentes, agrupadas sob um nico nome.
Estruturas constituem um recurso importante
para organizar os dados utilizados por um
programa pois trata um grupo de valores como
uma nica varivel.
So chamadas de registros em outras linguagens
de programao.

Estrutura
Estrutura de
de dados
dados
Exemplo:

Estruturas
Estruturas de
de dados
dados
Estruturas (ou registros) so classificados como
variveis compostas heterogneas, pois podem
agrupar variveis de tipos diferentes.
Em contraposio, temos os vetores e matrizes,
classificados como variveis compostas
homogneas, pois somente agrupam variveis do
mesmo tipo.

Estruturas
Estruturas de
de dados
dados
Exemplo:

struct
struct data
data
{{
int
int dia;
dia;
int
int mes;
mes;
int
int ano;
ano;
};
};

Estrutura
Estrutura de
de dados
dados
A palavra-chave struct informa ao compilador
que um modelo de estrutura est sendo definido.
data uma etiqueta que d nome definio
da estrutura.
Uma definio de estrutura um comando, por
isso deve terminar em ponto-e-vrgula.

Estrutura
Estrutura de
de dados
dados
Os nomes declarados entre as chaves so os
campos (ou membros) da estrutura.
Os campos de uma mesma estrutura devem ter
nomes diferentes.
Porm, estruturas diferentes podem conter
campos com o mesmo nome.

Estruturas
Estruturas de
de dados
dados
A definio de uma estrutura no reserva qualquer espao
na memria.

Note que, no exemplo dado, nenhuma varivel foi


declarada de fato, apenas a forma dos dados foi definida.

Essa definio, porm, cria um novo tipo de dados, que


pode ser usado para declarar variveis.

Declarando
Declarando uma
uma estrutura
estrutura
Duas maneiras de declarar a varivel x do tipo data:
struct
struct data
data
{{
int
int dia;
dia;
int
int mes;
mes;
int
int ano;
ano;
};
};
...
...
struct
struct data
data x;
x;
Dois comandos:
Define estrutura como
novo tipo
Declara varivel do
novo tipo definido

ou

struct
struct data
data
{{
int
int dia;
dia;
int
int mes;
mes;
int
int ano;
ano;
}} x;
x;
Um comando:
Define estrutura e
declara varivel do
novo tipo definido

Declarando
Declarando uma
uma estrutura
estrutura
Os campos de uma estrutura podem ser de
qualquer tipo, inclusive uma estrutura
previamente definida.
A declarao do formato de uma estrutura pode
ser feita dentro da funo principal (main) ou fora
dela.

Estruturas
Estruturas de
de dados
dados
Forma geral de definio de uma estrutura:

struct
struct <etiqueta>
<etiqueta> {{
<tipo>
<tipo> campo_1;
campo_1;
<tipo>
<tipo> campo_2;
campo_2;
...
...
<tipo>
<tipo> campo_n;
campo_n;
}} <variveis>;
<variveis>;

Exerccio:
Exerccio:
Fazer um programa em C com a declarao de
uma estrutura (registro) para os campos de
uma passagem de nibus.
Passagem de nibus:
Nmero: 0001
De: ____________________ Para: _______________________
Data: ____ / ____ / _______ Horrio: ________ : _________
Poltrona: ____________

Distncia: ____________ km

Acessando
Acessando os
os campos
campos de
de uma
uma estrutura
estrutura
Podemos acessar individualmente os campos de
uma determinada estrutura como se fossem
variveis comuns.
A sintaxe para acessar e manipular campos de
estruturas a seguinte:

<nome_da_varivel
<nome_da_varivel do
do tipo
tipo estrutura>
estrutura>..<campo
<campo da
da estrutura>
estrutura>

Exerccio:
Exerccio:
Continuar o programa em C para ler os valores
para os atributos da estrutura.
Passagem de nibus:
Nmero: 0001
De: ____________________ Para: _______________________
Data: ____ / ____ / _______ Horrio: ________ : _________
Poltrona: ____________

Distncia: ____________ km

Leitura
Leitura dos
dos campos
campos de
de uma
uma estrutura
estrutura
A leitura dos campos de uma estrutura a partir
do teclado deve ser feita campo a campo, como
se fosse variveis independentes.

cout
cout <<
<< Digite
Digite oo nome
nome do
do aluno:
aluno: ;
;
cin
cin >>
>> aluno.nome;
aluno.nome;
cout
cout <<
<< Digite
Digite aa idade
idade do
do aluno:
aluno: ;
;
cin
cin >>
>> aluno.idade;
aluno.idade;

Exemplo1
Exemplo1 Programa
Programa com
com estrutura
estrutura
#include <iostream>
using namespace std;
main ()
{
struct Reg_Produto {
char codigo[10];
char descricao[30];
char unidade[5];
float preco;
};

Reg_Produto Prod;
cout << "\n Digite o codigo:";
cin.getline (Prod.codigo,10);
cout << "\n Digite a descricao:";
cin.getline (Prod.descricao,30);
cout << "\n Digite a unidade:";
cin >> Prod.unidade;
cout << "\n Digite o preco:";
cin >> Prod.preco;
system("pause");
}

Estruturas
Estruturas aninhadas
aninhadas
Um campo de uma estrutura pode ser uma outra
estrutura.
Quando isso ocorre, temos uma estrutura
aninhada.

Exemplo:
Exemplo:
#include <iostream>
using namespace std;
main()
{
struct reg_endereco
{
char rua[40];
char numero[5];
char cep[8];
} endereco;

struct reg_aluno
{
int codigo;
char nome[40];
reg_endereco ender_aluno;
} aluno;
cout << "\n Digite o nome da rua: ";
cin.getline(aluno.ender_aluno.rua,4
0);
}

Vetor
Vetor de
de estruturas
estruturas
Combinao de estruturas homogneas (Vetor) com
heterogneas (Registros), onde cada elemento do
vetor uma estrutura de dados.
Usado quando precisamos de diversas cpias de uma
estrutura.
Exemplo: Colocar todas as passagens do nibus em
memria
Nmero: 0001

0
1

De: ____________________ Para: _______________________

Data: ____ / ____ / _______ Horrio: ________ : _________

43

Poltrona: ____________

Distncia: ____________ km

Exerccios:
Exerccios:
1. Fazer um programa em C++ para:
a. ler uma estrutura com a origem e destino da passagem de nibus para 2
trechos
b. Depois da leitura dos 2 trechos, mostrar a origem do primeiro trecho e o
destino do 2 trecho.
Para resolver o exerccio, ser necessrio criar um vetor para a estrutura, mantendo-se em
memria os 2 trechos.

Exerccios:
Exerccios:
2. Criar um estrutura para armazenar o nome, nota de prova e nota do
trabalho do aluno.
Dever ter um campo na estrutura para armazenar a mdia das notas.
A mdia dever ser calculada e armazenada neste campo.
O programa dever mostrar o nome, as notas, a mdia e a mensagem
se o aluno foi aprovado ou reprovado.

Exerccios:
Exerccios:
3. Faa um programa que defina uma estrutura chamada reg_produtos, com as seguintes informaes:
a. Cdigo de identificao do produto: representado por 5 caracteres
b. Nome do produto: com ate 30 caracteres
c. Preo de compra: representado por um valor real
d. Preo de venda: representado por um valor real
Defina uma estrutura reg_estoque com todos os atributos da estrutura reg_produtos, acrescentando o atributo
quantidade em estoque
Ler os dados para um produto e a quantidade em estoque, armazenando-os na estrutura estoque.
Mostrar na tela o cdigo, a descrio e a diferena entre o preo de compra e de venda e a quantidade em
estoque.

Potrebbero piacerti anche