Aula18-struct
-
Upload
leticia-fernandes -
Category
Documents
-
view
3 -
download
0
description
Transcript of Aula18-struct
-
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