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