You are on page 1of 14

STRUCT

Estrutura
O problema de agrupar dados em C resolvido pelo uso de estruturas. Estruturas so tipos de variveis que agrupam dados geralmente desiguais; ao passo que matrizes agrupam dados similares. O exemplo tradicional de uma estrutura a folha de pagamento. Porqu?

Estrutura
Nmero: 0001 De: ____________________ Para: _______________________ Data: ____ / ____ / _______ Horrio: ________ : _________

Poltrona: ____________

Distncia: ____________ km

Uma estrutura um conjunto de variveis dentro de um mesmo nome. Em geral, uma varivel de um tipo especfico, por exemplo, temos uma varivel do tipo inteira e estamos fechados a nos referenciar aquele nome que lhe foi dado sempre por um nmero do tipo inteiro, logicamente. J as estruturas, dentro de um mesmo nome podemos nos referenciar a uma gama de variveis pr-definidas.

Estrutura
Por meio da palavra struct definimos um novo tipo de dado. Definir um tipo de dado significa informar ao compilador seu nome, tamanho em bytes e forma como deve ser armazenado e recuperado da memria. Aps ter sido definido, o novo tipo existe e pode ser utilizado para criar variveis de modo similar a qualquer tipo simples.

Nome: _____________________________________________ Cdigo: ___________________ Preo: __________________ Quant

exemplo
#include <stdio.h> #include <stdlib.h> struct Aluno { int nmat; float nota[3]; float media; }; int main() { struct Aluno Jose; /* Declara uma varivel do tipo struct Aluno */ Jose.nmat = 456; Jose.nota[0]= 7.5; Jose.nota[1]= 5.2; Jose.nota[2]= 8.4; Jose.media= (Jose.nota[0] + Jose.nota[1] + Jose.nota[2])/3.0; printf("Matrcula: %d\n", Jose.nmat); printf("Mdia : %.2f\n", Jose.media); system("PAUSE"); return 0; } /*Inicio da definio da estrutura */ /* Nmero da matrcula */ /* Notas */ /* Mdia */ /* Fim da definio */

exemplo

a definio de estrutura no cria nenhuma varivel, somente informa ao compilador as caractersticas de um novo tipo de dados A palavra struct indica que um novo tipo de dado est sendo definido e a palavra Aluno ser sua etiqueta. O nome do nosso novo tipo de dados struct Aluno
/*Inicio da definio da estrutura */
/* Nmero da matrcula */ /* Notas */ /* Mdia */ /* Fim da definio */

struct Aluno { int nmat; float nota[3]; float media; };

Acessando membros da estrutura


struct Aluno Jose; /* Declara uma varivel do tipo struct Aluno */ Jose.nmat = 456; Jose.nota[0]= 7.5; Jose.nota[1]= 5.2; Jose.nota[2]= 8.4; Jose.media= (Jose.nota[0] + Jose.nota[1] + Jose.nota[2])/3.0;

Combinando declaraes
#include <stdio.h> #include <stdlib.h> struct Aluno { int nmat; float nota[3]; float media; }Jose, Ana, Joao; /*Inicio da definio da estrutura */ /* Nmero da matrcula */ /* Notas */ /* Mdia */ /* Cria variveis tipo aluno*/

Inicializando estruturas
typedef struct { int dia; char mes[10]; int ano; } Data;

static data natal={25,"Dezembro", 2001}; static data aniversario = {30,"julho",1995}

Estruturas aninhadas
/* Mostra estruturas aninhadas */ #include <stdio.h> #include <stdlib.h>
typedef struct { int dia; char mes[10]; int ano; } Data; typedef struct { int pecas; float preco; Data diavenda; } Venda; int main() { static Venda A = { 20, 110.0, {7,"Novembro",2001} };

printf("Peas: %d\n", A.pecas); printf("Preo: %d\n", A.preco); printf("Data : %d de %s de %d\n", A.diavenda.dia, A.diavenda.mes, A.diavenda.ano); system("PAUSE"); return 0;
}

11

Funes que retornam uma estrutura


#include <stdio.h> #include <stdlib.h> typedef struct Venda { int pecas; float preco; } Venda; Venda TotalVendas( Venda C, Venda D);/* Prottipo */ int main() { Venda A, B, Total; printf("Venda A\n=======\n"); printf("Insira o nmero de peas: "); scanf("%d", &A.pecas); printf("Insira o preo: "); scanf("%f", &A.preco); printf("\nVenda B\n=======\n"); printf("Insira o nmero de peas: "); scanf("%d", &B.pecas); printf("Insira o preo: "); scanf("%f", &B.preco); Total = TotalVendas( A,B);/* Estruturas como argumento e retorno */

printf("\n\nVenda Total\n==========="); printf("\nTotal de peas: %d." , Total.pecas ); printf("\nPreo total : %.2f\n" , Total.preco );
system("PAUSE"); return 0; } Venda TotalVendas(Venda C, Venda D) { Venda T; T.pecas= C.pecas + D.pecas; T.preco= C.preco + D.preco; return T; }

12

Vetores de estruturas(exemplo grfico)

1 2 3 4

Nmero: 0001

De: ____________________ Para: ______________________ Data: ____ / ____ / _______ Horrio: ________ : _________ Poltrona: ____________ Distncia: ____________ km

44

13

Vetores de estruturas(exemplo de montagem)

14

Referncias
Mizrahi, Victorine. Treinamento em Linguagem C. So Paulo: Pearson Prentice Hall, 2008 Schildt, Herbert. C Completo e Total. Makron book

15

You might also like