Buscar

9 UNIDADE 3 PARTE 3 - UNINGA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ALGORITMOS E 
PROGRAMAÇÃO 
APLICADA
Prof. Fábio Ataide de Lima
 Estruturas de dados heterogêneas
 Registros
 Comando typedef
 Uniões
UNIDADE III – PARTE 3
TÓPICOS DESTA AULA
 Permitem agregar diversas informações, que podem ser de 
diferentes tipos de dados (ao contrário de vetores e matrizes).
 São conceitualmente chamadas de registros, em que cada 
informação é denominada de campo (ou atributo, ou 
membro), as quais podem:
• ser de diferentes tipos;
• ou ainda, representar outros registros.
 Com o seu uso, os dados referentes a um
determinado contexto ficam melhor agrupados.
ESTRUTURAS DE DADOS HETEROGÊNEAS
REGISTROS: EXEMPLO
FICHA DO VEÍCULO
Marca:
Modelo:
Motor: .
Ano de Fabricação:
Ano Modelo:Categoria CNH:
Combustível:
Placa:
 Termo usado para identificar registros na linguagem C.
 Sintaxe para declarar uma struct:
 nome_estrutura e lista_variáveis: opcionais,
porém ao menos um deve ser especificado.
ESTRUTURAS (STRUCTS)
struct nome_estrutura
{
tipo campo_1;
tipo campo_2;
...
tipo campo_n;
} lista_variáveis;
ESTRUTURAS: EXEMPLO
 Declaração da estrutura para ficha de veículo.
• Armazenando a estrutura
diretamente nas variáveis:
struct {
char marca[16];
char modelo[16];
char placa[11];
char categ;
char combust[11];
int anofab;
int anomod;
float motor;
} v1, v2;
• Definindo um nome para a estrutura 
e, depois, atribuindo nas variáveis:
struct veiculo {
char marca[16];
char modelo[16];
char placa[11];
char categ;
char combust[11];
int anofab;
int anomod;
float motor;
};
struct veiculo v1, v2;
 Para se referir a um membro de uma estrutura, basta 
escrever o nome da variável de estrutura e o nome do 
membro separados por um ponto:
 Observação importante sobre struct em C:
• Somente pode ser utilizada dentro do bloco de instruções em que 
foi definida.
• Para que ela seja acessível de qualquer parte do programa, deve ser 
definida antes da função main(), preferencialmente
logo após as instruções #include.
MANIPULAÇÃO DOS MEMBROS DE 
ESTRUTURAS
struct veiculo v;
v.marca = "Ford";
v.anofab = 2018;
struct veiculo v;
printf("Marca..........: ");
fflush(stdin);
gets(v.marca);
printf("Modelo.........: ");
fflush(stdin);
gets(v.modelo);
printf("Placa..........: ");
fflush(stdin);
gets(v.placa);
do {
printf("Categoria (A-E): ");
fflush(stdin);
scanf("%c", &v.categ);
} while (!(v.categ >= 'A' && v.categ <= 'E') &&
!(v.categ >= 'a' && v.categ <= 'e'));
LEITURA DE MEMBROS DE ESTRUTURAS
printf("Combustivel....: ");
fflush(stdin);
gets(v.combust);
printf("Ano fabricacao.: ");
scanf("%d", &v.anofab);
printf("Ano modelo.....: ");
scanf("%d", &v.anomod);
printf("Motor..........: ");
scanf("%f", &v.motor);
EXIBIÇÃO DE MEMBROS DE ESTRUTURAS
printf("\nMarca/modelo: %s/%s", v.marca, v.modelo);
printf("\nMotor/placa.: %.1f %s", v.motor, v.placa);
printf("\nAno fab/mod.: %d/%d", v.anofab, v.anomod);
printf("\nCombustivel.: %s\n", v.combust);
struct veiculo v[5];
int i;
for (i = 0; i < 5; i++) {
printf("Marca..........: ");
fflush(stdin);
gets(v[i].marca);
printf("Modelo.........: ");
fflush(stdin);
gets(v[i].modelo);
printf("Placa..........: ");
fflush(stdin);
gets(v[i].placa);
do {
printf("Categoria (A-E): ");
fflush(stdin);
scanf("%c", &v[i].categ);
} while (!(v[i].categ >= 'A' && v[i].categ <= 'E') &&
!(v[i].categ >= 'a' && v[i].categ <= 'e'));
VETORES DE ESTRUTURAS
printf("Combustivel....: ");
fflush(stdin);
gets(v[i].combust);
printf("Ano fabricacao.: ");
scanf("%d", &v[i].anofab);
printf("Ano modelo.....: ");
scanf("%d", &v[i].anomod);
printf("Motor..........: ");
scanf("%f", &v[i].motor);
printf("-----------------\n");
}
VETORES DE ESTRUTURAS
printf("\nMarca Modelo Motor");
printf(" Placa Cat A.Fab A.Mod Combustivel");
for (i = 0; i < 5; i++) {
printf("\n%-15s %-15s", v[i].marca, v[i].modelo);
printf(" %.1f %-10s", v[i].motor, v[i].placa);
printf(" %c %d", v[i].categ, v[i].anofab);
printf(" %d %s", v[i].anomod, v[i].combust);
}
printf("\n");
 Permite ao programador definir um novo nome para um 
determinado tipo.
 Sintaxe:
 Exemplos:
• Dando o nome inteiro para o tipo int:
• Definindo uma struct como novo tipo de dado:
COMANDO typedef
typedef tipo_existente novo_nome;
typedef int inteiro;
inteiro num1, num2;
typedef struct {
char nome[30];
float nota[4];
} Aluno;
int main(void)
{
Aluno eu, grupo[4];
}
 Tipo de dado derivado (como uma estrutura) com membros 
que compartilham o mesmo espaço de armazenamento.
 O espaço a ser armazenado na memória será o tamanho do 
maior tipo.
 Sintaxe:
UNIÕES
union nome_união
{
tipo campo_1;
tipo campo_2;
...
tipo campo_n;
} lista_variáveis;
 União para armazenar o CPF ou o CNPJ:
 Dessa forma, é possível pedir um ou outro, de acordo com o 
tipo de pessoa especificado:
UNIÕES: EXEMPLO
union PFouPJ {
char cpf[15];
char cnpj[19];
} pessoa;
if (tipo == 'F' || tipo == 'f') {
printf("CPF.........: ");
fflush(stdin); scanf("%s", pessoa.cpf);
} else {
printf("CNPJ........: ");
fflush(stdin); scanf("%s", pessoa.cnpj);
}
 Modularização de programas
 Sub-rotinas
PRÓXIMA AULA

Continue navegando