A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linguagem de Programação II

Apresentações semelhantes


Apresentação em tema: "Linguagem de Programação II"— Transcrição da apresentação:

1 Linguagem de Programação II
Aula 8 Struct/Registros Prof. Luiz José Hoffmann Filho

2 Passando Estruturas para funções
Passando elementos da estrutura para funções: Quando você passa um elemento de uma variável estrutura para uma função, está, de fato, passando o valor desse elemento para a função. Assim, você está passando uma variável simples.

3 Passando Estruturas para funções
Exemplo: Struct fred { char x; int y; float z; char s[10]; } mike; A seguir são mostrados exemplos de cada elemento sendo passado para uma função: func(mike.x); func2(mike.y); func3(mike.z); func4(mike.s); func(mike.s[2]); Pode ser passado por referência: func(&mike.x); func2(&mike.y); func3(&mike.z); func4(&mike.s); func(&mike.s[2]); Com deve ser a declaração destas funções?

4 Passando Estruturas Inteiras para Funções
Quando uma estrutura é usada como um argumento para uma função, a estrutura inteira é passada usando o método padrão de chamada por valor. Obviamente, isso significa qe quaisquer alterações podem ser feitas no conteúdo da estrutura dentro da função para a qual ela é passada sem afetar a estrutura usada como argumento.

5 Passando Estruturas Inteiras para Funções
Exemplo: #include <stdio.h> Struct struct_type { int a, b; char ch; }; void f1(struct struct_type parm) { printf(“%d %d %c”, parm.a, parm.b, parm.ch); } int main() { struct struct_type arg; arg.a = 1000; arg.b = arg.a – 888; arg.ch = ‘L’; f1(arg); return; Atenção aos nomes!!! Atenção aos nomes!!!

6 Ponteiros para Estruturas
C permite ponteiros para estruturas exatamente como permite ponteiros para outros tipos de variáveis. No entanto, há alguns aspectos especiais de ponteiros de estrutura que devem ser discutidos.

7 Ponteiros para Estruturas
Declarando um ponteiro para estrutura struct addr *addr_pointer; struct dados *dados_pointer;

8 Ponteiros para Estruturas
Usando ponteiros para estruturas: Há dois usos primários para ponteiros de estrutura: gerar uma chamada por referência para uma função e/ou criar listas encadeadas e outras estruturas de dados dinâmicas usando o sistema de alocação de C. Agora iremos estudar o primeiro uso. E em Estrutura de Dados no próximo semestre o segundo uso.

9 Ponteiros para Estruturas
Exemplo: (Deve-se usar o operador “&” e “->”) struct bal { // Declaração da struct float balance; char name[80]; } person; struct bal *p; // Declaração do ponteiro Então p = &person; // Atribuição ao ponteiro Agora para acessar o dados da struct: p->balance; // “->” operador seta usado no lugar do operador “.” p->name;

10 Ponteiros para Estruturas
#include <stdio.h> #define DELAY struct my_time{ int hours, minutes, seconds; }; void display(struct my_time *t) { printf(“%02d :”, t->hours); printf(“%02d :”, t->minutes); printf(“%02d :”, t->seconds); }

11 Ponteiros para Estruturas
void update(struct my_time *t) { t->seconds++; if(t->seconds == 60) { t->seconds = 0; t->minutes++; if(t->minutes == 60){ t->minutes = 0; t->hours++; if(t->hours = 24){ t->hours = 0; } delay(); Void delay() { long int t; for(t=1;t<DELAY; ++t);

12 Ponteiros para Estruturas
int main() { struct my_time systime; systime.hours = 0; systime.minutes = 0; systime.seconds = 0; for(;;){ update(&systime); display(&systime); } return;

13 Matrizes e Estrutura dentro de Estrutura
struct x { int a[10][10]; float b; } y; y.a[3][3] = 10; Quando um elemento de uma estrutura é uma estrutura, ela é chamada estrutura aninhada. Por exemplo, a estrutura address é aninhada em emp neste exemplo: struct emp{ struct addr address; // estrutura aninhada float wage; } worker; worker.address.zip = 93456;

14 Alocação Dinâmica de Estruturas
Exemplo: #include <stdio.h> struct addr { char name[50]; int fone; }; int main () { struct addr *p; p = malloc(sizeof(struct addr)); scanf(“%d”, &p->fone); scanf(“%s”, p->name); printf(“name %s fone %d\n”, p->name, p->fone); return; }

15 Exercícios Escreva um programa que armazene um cadastro de 50 pessoas com os seguintes dados: nome, telefone e data de nascimento (dia, mês, ano) e realize consultas da seguinte forma (utilize funções para inserir e para fazer a busca): Leia o número de um determinado mês (1 a 12). Obs: a leitura do mês 0 encerra as consultas. Exiba o nome, o telefone e o dia do aniversário das pessoas daquele respectivo mês.

16 Exercícios Seja a seguinte struct que é utilizada para descrever os produtos que estão no estoque de uma loja: struct Produto{ char nome[30]; int codigo; double preco; } Escreva uma função que declare uma matriz de Produto com 10 itens de produtos; Atribua os valores “Pe de moleque”, e R$0.20 aos membros da posição 0 e os valores “Cocada baiana”, e R$0.50 aos membros da posição 1 da matriz anteior; Faça as mudanças que forem necessárias para usar um ponteiro para Produto ao invés de uma matriz de Produtos. Faça na alocação de mamória de forma que se possa armazenar 10 produtos na área de memória apontada por este ponteiro e refaça as atribuições da letra b; Escreva as função para imprimir os campos que foram atribuídos na letra anteriores.

17 Exercícios Crie uma estrutura representando os alunos do curso de linguagem de Programação 2. A estrutura deve conter a matrícula do aluno, nome, nota da primeira prova, nota da segunda prova e nota da terceira prova. Faça funções para: Permita ao usuario entrar com os dados de 5 alunos. Encontre o aluno com maior nota da primeira prova. Encontre o aluno com maior média geral. Encontre o aluno com menor média geral. Para cada aluno diga se ele foi aprovado ou reprovado, considerando o valor 6 para aprovação.

18 Exercícios Faça um programa que seja uma agenda de compromissos e:
Crie e leia um vetor de 5 estruturas de dados com: compromisso (maximo 60 letras) e data. A data deve ser outra estrutura de dados contendo dia, mês e ano. Leia dois inteiros “m” e “a” e mostre todos os compromissos do mês “m “do ano “a”. Repita o procedimento até ler m = 0. Dica: use fgets(string, tamanho, stdin) para ler uma string, precedido imediatamente por fflush(stdin).


Carregar ppt "Linguagem de Programação II"

Apresentações semelhantes


Anúncios Google