UNIPLI
Linguagem de Programação I
Professora Simoni Rangel de Freitas Oliveira
Estruturas e tipos definidos pelo usuário
1. Estruturas
Uma estrutura é um conjunto de variáveis de tipos distintos ou não, agrupadas sob um
único nome. As variáveis que compõem a estrutura são chamadas membros, campos
ou elementos.
Exemplos:
1. Uma estrutura data composta por três elementos: dia, mês e ano.
struct data
{
int dia;
int mes;
int ano;
};
2. Uma estrutura aluno composta por dois elementos: nome e matrícula.
struct aluno
{
char nome[80];
int matricula;
};
Declaração de uma estrutura
Sintaxe:
struct <identificador>
{
tipo membro1;
tipo membro2;
...
tipo membroN;
};
•
•
•
•
Com a palavra-chave struct declara-se um novo tipo de dado.
A palavra seguinte será o seu identificador.
Os membros são declarados entre chaves.
A declaração termina com um “ponto e vírgula” (;).
No momento da declaração da estrutura:
• Não há alocação de espaço de memória.
• É definido um modelo de como estruturas do tipo identificador, devem ser
construídos.
• Os membros não podem ser inicializados.
1
UNIPLI
Linguagem de Programação I
Professora Simoni Rangel de Freitas Oliveira
Após ter sido declarado o novo tipo existe e pode ser utilizado para criar variáveis que
irão armazenar os valores.
Sintaxe para a declaração das variáveis:
struct <identificador> <lista de variáveis>;
Exemplos:
struct data hoje;
• Declaração de uma variável, ou uma estrutura, do tipo data.
• É alocado espaço para armazenar os dados de hoje.
struct aluno Joana, Marilena, Marcelo;
• Declaração de três variáveis, ou três estruturas, do tipo aluno
• É alocado espaço para armazenar os dados dos três alunos: Joana, Marilena
e Marcelo.
É possível declarar simultaneamente o modelo da estrutura e as variáveis do tipo
estrutura.
Exemplos:
struct data{
int dia;
int mes;
int ano;
}hoje;
struct aluno{
char nome[80];
int matricula;
}Joana, Marilena, Marcelo;
 Inicialização de estruturas
A inicialização de estruturas é semelhante à inicialização de um arranjo.
Exemplos:
1.
struct funcionario
{
char nome[50];
double salario;
} x, y, z;
struct funcionario x = {“Amanda da Silva”, 370.00};
struct funcionario y = {“Marcelo de Souza Junior”, 450.00};
struct funcionario z = {“Roberto dos Santos”, 1530.00};
2
UNIPLI
Linguagem de Programação I
Professora Simoni Rangel de Freitas Oliveira
2.
struct data{
int dia;
int mes;
int ano;
}hoje;
struct data hoje={13,11,2006};
Os valores para cada um dos membros são escritos entre chaves e separados por
vírgula, na ordem em que foram declarados.
 Acesso aos elementos de uma estrutura
Os elementos de uma estrutura podem ser acessados através do operador de acesso
“ponto” (.). Esse operador conecta o nome de uma variável estrutura a um membro
desta.
Exemplos:
1. struct funcionario{
char nome[50];
double salario;
} x, y, z;
// esturura x
strcpy(x.nome,”Amanda da Silva”);
x.salario=370.00
//estrutura y
gets(y.nome);
scanf(“%lf”, &y.salario);
//estrutura z
z=x; //atrituição de todos os campos de x para z;
• Só é possível atribuir o conteúdo de uma estrutura a outra estrutura do
mesmo tipo.
2. Estrutura com outras estruturas como membros.
struct aluno
{
char nome[80];
int matricula;
struct data nascimento;
}fulano;
gets(fulano.nome);
scanf(“%d”, &fulano.matricula);
scanf(“%d”, &fulano.nascimento.dia);
scanf(“%d”, &fulano.nascimento.mes);
scanf(“%d”, &fulano.nascimento.ano);
3
UNIPLI
Linguagem de Programação I
Professora Simoni Rangel de Freitas Oliveira
3. Vetores de estruturas
Vetores de estruturas são vetores onde os elementos são estruturas. Deste modo, o
acesso a um vetor de estruturas é feito colocando-se o índice entre colchetes, logo
após o nome do vetor seguido pelo operador ponto.
A inicialização pode ser feita delimitando-se o conteúdo do vetor entre um par de
chaves, assim como o conteúdo a ser atribuído a cada posição do vetor. O valor para
cada um dos membros deve respeitar a ordem de declaração, separados por vírgula.
Exemplo:
#include <stdio.h>
#define TAM_VET 4
void main(){
// declaracao do modelo data
struct data{
int dia, mes, ano;
};
// declaracao do modelo funcionario
struct funcionario{
char nome[50];
double salario;
struct data nascimento;
};
// declaração da variável i
int i;
// declaracao e inicialização do vetor de estruturas vet
struct funcionario vet[TAM_VET]={
{"Adriana Martins", 350.00, {10,5,1982} },
{"Luciano Araujo de Lima", 540.00, {23,8,1983} },
{"Marcos Paulo da Silva", 3625.00, {14,1,1981} },
{"Jonathas Martins dos Santos",2368.00, {2,10,1983} }
};
puts("Imprimindo os dados.\n");
for(i=0; i<4; i++){
puts(vet[i].nome);
printf("Salario: %.2lf", vet[i].salario);
printf("\n%d/%d/%d\n\n", vet[i].nascimento.dia,
vet[i].nascimento.mes,
vet[i].nascimento.ano );
}
}
Bibliografia
HICKSON, Rosângela. Aprenda a programar em C, C++ e C#. Ed. Campus, 2002.
GOTTFRIED, B. S. Programando em C. Editora LTC, 1993.
KERNIGHAN, B. W., RITCHIE, D. M. C: A linguagem de programação – Padrão ANSI.
Ed. Campus, 1989.
4
Download

Estrutura pt1