Upload
leticia-fernandes
View
3
Download
0
Embed Size (px)
DESCRIPTION
slide sobre struct (C)
Citation preview
1Estrutura (struct)
Uma struct uma varivel composta heterognea Visa facilitar manipulao de um conjunto de dados
logicamente relacionados, mas de diferentes tipos.
Exemplo: Considere um registro de alunos, com RA, nome, CR, sexo, e endereo (composto por rua, nmero, cidade).
0.73
nomerua
RAno. cidade
07234 Monica Santos R. Dois 321 Rio Claro
endereo
F
CR sexo
nome endereoRA
Monica Santos R. Dois, 321. Rio Claro07234
CR
F
sexo
0,73
2
Estrutura (struct)- declarao
Passo1: definir a estrutura
Forma geral: struct { ;
; ;. . .}
nome endereoRA
Monica Santos R. Dois, 321. Rio Claro07234
CR
F
sexo
0,73
Exemplostruct cadastro {
int ra; char nome[50];float CR;
char sexo; char endereo[20];};
Passo2: declarar as variveis que tero esta estrutura
Forma geral: struct ;Exemplo:
struct cadastro aluno, ex_aluno;
3
Estrutura (struct) - declarao Outra possibilidade de declarar a estrutura e as variveis
em apenas um passo:Forma geral: struct {
; ; ;. . .} nome_varivel 1, nome varivel 2, . . . Nome varivel n;
Exemplostruct cadastro {
char ra[6]; char nome[50];float CR;char sexo;char endereco[20];} aluno, ex_aluno;
4
Estrutura (struct)- declarao
Mais uma forma de declarao de uma struct
dando nome structstruct tipo_data{
int dia, mes, ano; };
typedef struct tipo_data DATA; /* data o nome do tipo */
O mesmo que Typedef struct tipo_data{
int dia, mes, ano; } DATA;
Podemos utilizar esse tipo para declarar variveisint X, Y, Z;
DATA data_nasc;DATA *d; /* d um ponteiro para uma varivel do tipo DATA */
5
Estrutura (struct) - Utilizao Cada campo pode ser acessado escrevendo-se:
nome da varivel, um ponto (.) e o nome do campo. Sintaxe:nome_varivel nome_campo;
Considerando a definio:struct cadastro {
char ra[6]; char nome[50];float CR;char sexo;} aluno;
Exemplos.:alunoCR = 0.75; alunosexo = F; alunora = 71234; /* Para atribuio de string usar a funo strcpy da biblioteca string.h */
strcpy(alunonome, Soraya);
OBS: Se o campo char for de mais de um elemento (vetor de strings), cada um dos elementos pode ser acessado pelo seu ndice.Exemplos:
printf(%c, aluno.nome[2]); /* exibe a letra r de Soraya */aluno.nome[4] = i'; /* troca a letra y pela letra i em Soraya*/
6
Atribuio de Estruturas - Utilizao Variveis com mesma estrutura podem ser igualadas.
Considere como exemplo:
struct coordenadas {int x, y, z;} variavel1, variavel2 = {1, 2, 3}; /* varivel2 inicializada*/
Como variavel1 e variavel2 tm a mesma estrutura pode-se atribuir os valores dos campos da varivel2 para a varivel1, como segue:variavel1= variavel2;
Atribuio anterior possui o mesmo efeito que: variavel1.x = variavel2.x;variavel1.y = variavel2.y;variavel1.z = variavel2.z;
7Exemplo#include
int main () {
struct coordenadas {int x, y, z;} variavel1;
struct coordenadas variavel2 = {1, 2, 0};
variavel1 = variavel2; /* Comando de atribuio */
printf ("x= %d y= %d z= %d \n", variavel1.x, variavel1.y, variavel1.z);
return(0);
}
Comando de definio de uma estrutura deve
aparecer antes da declarao de
variveis
8
Vetores de Estruturas
Exemplo:struct cadastro {
int ra; char nome[50];int num_curso, ano_ingresso;float CR;} aluno, alunos[500];
aluno valor para um aluno. Essa varivel pode ser usada para guardar o valor de um dos registros
alunos valores para vrios alunos
65432 0.75200642M a r a . . . . . . . .
ra nome num curso ano ingresso CR
ndices alunos
3
2
1
0
0 1 2 3 ndices do nome
9
Vetores de Estruturas
struct cadastro {int ra; char nome[50];int num_curso, ano_ingresso;float CR;} aluno, alunos[500];
O acesso a um campo da estrutura exige o ndice. nome_varivel[indice]nome_campo;
Exemplos: 1) aluno.ra=65432;
2) alunos[0]ra =73210;
3) strcpy(alunos[0]nome,Mara); /* usar #include */4) alunos[0]CR = 0.6;
5) for (i=0;i
13
Para criar estruturas dentro de estruturas; Estrutura interna precisa ser declarada antes:struct dados_pessoais {
char nome [50];char sexo;int idade;};
struct cadastro {int ra ;struct dados_pessoais pessoa;float CR;};
declarao da varivel struct cadastro aluno;
acesso um campo da estruturaaluno.ra=52410; aluno.pessoa.sexo=F;
Estruturas em estruturas
14
Estruturas em estruturas -Exemplo
struct Reg_endereo {char rua[50];int no;char cidade;};
struct cadastro_aluno {int ra;char nome[50];float CR;char sexo; struct Reg_endereo endereo;} aluno;
Exemplo de utilizao:scanf(%d %f %s, &aluno.ra, &aluno.CR, aluno.endereco.cidade);
0.73
nomerua
RAno. cidade
07234 Monica Santos R. Dois 321 Rio Claro
endereo
F
CR sexo