Professional Documents
Culture Documents
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.
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 */
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;
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
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
1 2 3 4
Nmero: 0001
De: ____________________ Para: ______________________ Data: ____ / ____ / _______ Horrio: ________ : _________ Poltrona: ____________ Distncia: ____________ km
44
13
14
Referncias
Mizrahi, Victorine. Treinamento em Linguagem C. So Paulo: Pearson Prentice Hall, 2008 Schildt, Herbert. C Completo e Total. Makron book
15