Beruflich Dokumente
Kultur Dokumente
Conceitos Básicos
• Coleção de uma ou mais variáveis que podem ser de diferentes tipos, agrupadas sob um
mesmo nome;
• Exemplo típico:
o Folha de pagamento onde cada elemento é um funcionário;
o Funcionário é descrito através de um conjunto de atributos como por exemplo:
nome → string
endereço → string
CPF → string
código do depto. → char
salário → float
tempo de serviço → int (em meses)
• Sintaxe:
struct nome { /* definição da estrutura */
tipo1 var1 ;
tipo2 var2 ;
tipo3 var3;
};
• Uso da estrutura – declaração de variáveis:
Ex.: struct nome var;
o nome é um novo tipo definido e var é uma declaração de variável do novo tipo
o var é uma variável do tipo struct nome e tem vários campos (partes): var1,
var2, etc ..., que são acessados da seguinte maneira:
var.var1
var.var2
var.var3
• Ex1:
struct ponto { //definição do tipo ponto
int x; /* ou int x, y; */
int y;
};
struct ponto P, M; // declaramos dois pontos: P e M
Os campos de P e M podem receber valores ou podem ser lidos:
P.x = 2;
P.y = 3;
ou poderia ser
scanf (“% d % d”, &P.x, &P.y);
• Ex2:
struct facil // definição do tipo facil
{ int num;
char ch;
};
Algumas operações:
printf (“\n Digite título: “);
gets (L1.titulo);
printf (“\n Digite registro: “);
scanf (“%d”, &L1.registro);
printf (“\n Digite estilo: “);
scanf (“%s”, L1.estilo);
• Caso o novo tipo criado seja usado só uma vez, podemos “omitir” seu nome (deixá-lo sem
nome):
struct {
int num;
char ch;
} x1, x2; //variáveis x1 e x2 com campos num e ch
• Comando typedef:
o O comando typedef pode servir para redefinir tipos existentes, dando outro
nomes a eles;
o Forma geral:
typedef <tipo ou nomeantigo > < nomenovo>
o A struct facil do ex. anterior, pode ser redefinida como struct simples, ex.:
typedef facil simples;
que é equivalente a
typedef struct facil
{ int num;
char ch;
} simples; // definição do tipo simples
• Outras maneiras alternativas de definir o tipo simples, são:
struct simples
{ int num;
char ch;
};
struct retangulo {
struct ponto pt1; // campo do tipo struct ponto
struct ponto pt2; // campo do tipo struct ponto
}
struct retangulo R1, R2;
Observações:
R1 e R2 têm 4 campos cada um:
R1.pt1.x, R1.pt1.y, R1.pt2.x, R1.pt2.y //idem para R2.
Supor que pt1 e pt2 são vértices opostos de um retângulo. Leitura dos vértices:
printf (“Leitura do 1o. Retângulo: \n”);
printf (“Digite vértice 1: \n”);
scanf (“%d %d”, &R1.pt1.x, &R1.pt1.y);
printf (“Digite vértice 2: \n”);
scanf (“%d %d”, &R1.pt2.x, &R1.pt2.y);
Cálculo da área de R1:
area = (R1.pt2.x - R1.pt1.x) * (R1.pt2.y - R1.pt1.y));
printf (“\n Area de R1 = %d \n”, area);
• Estruturas não podem ser comparadas.
o Ex: if (x1 = = x2)
.
ou if (R1 = = R2) ERRADO!!!
o Os campos é que devem ser comparados um a um, ex.:
if ( (x1.num == x2.num) && (x1.ch == x2.ch) ) // CORRETO
printf(“ As variáveis x1 e x2 são iguais \n”);
Exemplo1. Utilizando estrutura, fazer um programa em C que permita a entrada de nome, endereço e
telefone de 5 pessoas e os imprima.
Código:
#include <stdio.h>
struct cadastro {
char nome[20];
char end[50];
char telefone[11];
};
void main()
{
int i;