lógica de programação aula 08

Transcrição

lógica de programação aula 08
IFTO
LÓGICA DE PROGRAMAÇÃO AULA 08
Prof. Manoel Campos da Silva Filho
Tecnólogo em Processamento de Dados / Unitins
Mestre em Engenharia Elétrica / UnB
http://lab.ifto.edu.br/~mcampos
http://manoelcampos.com
mcampos at ifto.edu.br
Versão 08/11/12
Slide 1
Struct
●
Tipo de dado definido pelo programador
●
Denominado “Estrutura”
●
Estrutura composta e heterogênea
●
Também conhecida como Record (Registro)
em algumas linguagens como Pascal
Versão 08/11/12
Slide 2
Struct
●
●
●
●
Veja como uma struct é construída em C
Observe que, dentro das chaves, o processo é o mesmo que a
declaração de qualquer variável.
Podemos ter quantas variáveis (campos) quisermos dentro da
struct
As variáveis podem ser de quaisquer tipos que precisarmos.
struct nome_struct {
tipo1 dado1, dado2, dado3;
tipo2 dadoA, dadoB, dadoC;
tipoN dadoX, dadoY, dadoZ;
};
Versão 08/11/12
Slide 3
Struct
●
Os campos (variáveis dentro da struct) de um
mesmo tipo podem ser declarados em uma
mesma linha (assim como na declaração
comum de variáveis).
struct nome_struct {
tipo1 dado1, dado2, dado3;
tipo2 dadoA, dadoB, dadoC;
tipoN dadoX, dadoY, dadoZ;
};
Versão 08/11/12
Slide 4
Struct
●
No lugar de nome_struct, deve-se colocar o nome
que se deseja para a struct. Tal nome define o nome
de um novo tipo sendo criado, desta forma,
poderemos
declarar
variáveis
do
tipo
struct nome_struct;
struct nome_struct {
tipo1 dado1, dado2, dado3;
tipo2 dadoA, dadoB, dadoC;
tipoN dadoX, dadoY, dadoZ;
};
Versão 08/11/12
Slide 5
Struct: Exemplo
//Cria um novo tipo (struct) chamado struct pessoa
struct pessoa {
char nome[50], endereco[60];
int idade;
float altura;
};
//Declara uma variável do tipo struct pessoa. O nome da variável é p
struct pessoa p;
p.nome = “João”; //atribui um valor ao campo nome da variável p
p.endereco = “Rua 1”; //os valores atribuídos poderiam ter sido digitados pelo usuário
p.idade = 30; //O próximo exemplo mostra como atribuir valores digitados pelo usuário
p.altura = 1.8;
printf(“Nome: %s\n”, p.nome);
printf(“Idade: %d\n”, p.idade);
Versão 08/11/12
printf(“Endereço: %s\n”, p.endereco);
printf(“Altura: %f\n”, p.idade);
Slide 6
Vetor de Struct
●
●
●
Vetores e matrizes são variáveis compostas
homogêneas (como visto em aula anterior)
Eles armazenam diversos valores porém, todos
de um mesmo tipo
Como struct é um tipo, podemos ter um vetor
ou matriz que armazene uma struct em cada
posição
Versão 08/11/12
Slide 7
Vetor de Struct
●
●
●
Utilizando um vetor de struct, podemos, por
exemplo, armazenar, em uma única variável, os
dados pessoais de clientes (como nome, endereço,
telefone) para uma quantidade determinada de
clientes de uma empresa.
Cada posição do vetor representará então um
cliente
Cada cliente (armazenado em uma posição
diferente do vetor) será representado por uma struct
contendo seus dados (nome, endereço, etc)
Versão 08/11/12
Slide 8
Vetor de Struct: Exemplo
struct pessoa {
char nome[50], endereco[60];
int idade;
float altura;
};
struct pessoa p[10];
int i;
for(i = 0; i < 10; i++) {
printf(“Nome: ”);
scanf(“%s”, p[i].nome);
printf(“Endereço: ”); scanf(“%s”, p[i].endereco);
printf(“Idade: ”);
scanf(“%d”, &p[i].idade);
printf(“Altura: ”);
scanf(“%f”, &p[i].altura);
}
for(i = 0; i < 10; i++) {
printf(“Nome: %s\n”, p[i].nome);
printf(“Idade: %d\n”, p[i].idade);
printf(“Endereço: %s\n”, p[i].endereco);
printf(“Altura: %f\n”, p[i].altura);
}
Versão 08/11/12
Slide 9
Vetor de Struct: Exemplo
●
No exemplo anterior, o código mostrado abaixo
cria a struct, ou seja, define um novo tipo que
será utilizado para declarar variáveis:
struct pessoa {
char nome[50], endereco[60];
int idade;
float altura;
};
Versão 08/11/12
Slide 10
Vetor de Struct: Exemplo
●
A linha abaixo declara um vetor, porém, o tipo
de dado a ser armazenado em cada posição do
vetor será struct pessoa, ou seja, em cada
posição do vetor teremos uma pessoa.
struct pessoa p[10];
Versão 08/11/12
Slide 11
Vetor de Struct: Exemplo
●
●
As linhas abaixo mostram como armazenar um valor digitado pelo
usuário em uma determinada posição do vetor (i), para um
determinado campo da struct (campo nome).
Observe que, a variável p, pelo fato de ser um vetor, precisamos
acessar seus elementos utilizando um índice (i). Porém, por ser um
vetor de struct, não se pode simplesmente acessar um elemento
fazendo apenas p[i], deve-se, além de indicar a posição no vetor,
precisamos indicar qual campo dentro da struct será acessada.
printf(“Nome: ”);
scanf(“%s”, p[i].nome);
Versão 08/11/12
Slide 12
Vetor de Struct: Exemplo
●
A linha abaixo mostra como exibir um valor
armazenado em uma determinada posição do
vetor. Novamente, como a variável p é um
vetor de struct, precisamos indicar um índice (i)
e o nome de um campo dentro de tal posição
(campo nome neste exemplo).
printf(“Nome: %s\n”, p[i].nome);
Versão 08/11/12
Slide 13
Exercícios
●
1) Crie um programa para armazenar os nomes
de 10 alunos e as notas das três avaliações de
cada um. Ao final, exiba a média de cada
aluno, a lista de alunos aprovados e a lista de
alunos reprovados. Considere que o aluno
deve obter média 6 ou superior para ser
aprovado.
Versão 08/11/12
Slide 14

Documentos relacionados