Aula18-struct

3
 1 Estrutura (struct) Uma struct é uma vari ável compost a heterogênea Visa facilitar manipulação de um conjunto de dados logicamente relacionados, mas de diferentes tipos. Exemplo: Considere um registro de alunos, com RA, nome, CR, sexo, e endereço (composto por rua, número, cidade). 0.73 nome rua RA no. cidade 07234 MonicaS antos R. Dois 321 Rio Claro endereço F CR sexo nome endereço RA MonicaSantos R. Dois, 321. Rio Claro 07234 CR F sexo 0,73  2 Estru tura (st ruct)- declaraçã o Passo1: definir a estrutura Forma geral: struct <nome_estrutura> { <tipo_de_dados> <nome da variável>; <tipo_de_dados> <nome da variável>; <tipo_de_dados> <nome da variável>; . . . } nome endero RA Moni ca Santos R. Dois, 321. Rio Claro 07234 CR F sexo 0,73 Exemplo struc t cada stro { intra; char nome [50]; float CR; char sexo; char endereço[2 0]; }; Passo2: declarar as variáveis q ue terão esta estrutura Forma geral: struct <nome_estrutura> <nome_variável>; Exemplo: stru ct cada stro aluno, ex_aluno;  3 Estrut ura (st ruct) - declaração Outra possibilidade de declarar a estrutura e as variáveis em apenas um passo: Forma geral: struct <nome_estru tura> { <tipo_de_d ados> <nome da variável>; <tipo_de_d ados> <nome da variável>; <tipo_de_dados> <nome da variável>; . . . } nome_variável 1, nome variável 2, . . . Nome variável n; Exemplo struc t cadast ro { cha r ra[ 6]; char nome [50]; float CR; cha r sex o; char ender eco[2 0]; } aluno, ex_aluno; 4 Estru tura (st ruct)- declaraçã o Mais uma forma de declaração de uma struct dando nome à struc t struct tipo_data { int dia, mes, ano; }; typedef struct tipo_data DATA; /* data é o n ome do tipo */ O mesmo que Typedef struct tipo_data{ int dia, mes, ano; } DATA; Podemos utilizar esse tipo para declarar variáveis int X, Y, Z; DATA data_nasc; DATA *d;  /* d é um ponteiro para uma variável do tipo DATA */ 5 Estrut ura (str uct) - Utilizaçã o Cada campo pode ser acessado escrevendo-se: nome da variável, um ponto (.) e o nome do campo. Sintaxe: nome_variável nome_campo; Considerando a definição: struc t cada stro { char ra[6 ]; char nome[50]; float CR; char sexo ; } aluno; Exemplos.: aluno•• CR = 0.75; aluno•• sexo = ‘F’; aluno•• ra = 71234; /* Para atribuição de string usar a função 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 le tra r de Soraya */ aluno.nome[4 ] = ‘i'; /* troca a letra y pela letra i em Soraya*/ 6  Atribuição de Estruturas - Utilização Variáveis com mesma estrutura podem ser igualadas. Considere como exemplo: struc t coor dena das { in t x, y, z; } variavel1, variavel2 = {1, 2, 3}; /* variável2 é inicializada*/ Como variavel1 e variavel2 têm a mesma estrutura pode-se atribuir os valores dos campos da variável2 para a variável1, como segue: variavel1= variavel2; Atribuição anterior possui o mesmo efeito que: variavel1.x = variavel2.x; variavel1.y = variavel2.y; variavel1.z = variavel2.z;

description

slide sobre struct (C)

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