Baixe o app para aproveitar ainda mais
Prévia do material em texto
PROGRAMAÇÃO II AULA 8 – TIPOS DE DADOS DEFINIDOS PELO USUÁRIO CIÊNCIA DA COMPUTAÇÃO ESTRUTURAS Uma estrutura agrupa várias variáveis numa só; Funciona, por exemplo, como uma ficha pessoal que tenha nome, telefone e endereço A ficha é uma estrutura; Uma estrutura, então, serve para agrupar um conjunto de dados não similares, formando um novo tipo de dados 2 ESTRUTURAS - CRIANDO Para se cria uma estrutura usa-se o comando struct; O nome_do_tipo_da_estrutura é o nome da estrutura. As variáveis da estrutura são opcionais e seriam nomes de variáveis que o usuário já estaria declarando; 3 ESTRUTURAS - CRIANDO Nestes caso est é uma estrutura com dois campos, i e f. Foram declaradas também duas variáveis, a e b que são do tipo da estrutura; 4 ESTRUTURAS - CRIANDO Crie estruturas para: Endereço: rua, numero, bairro, cidade, sigla do estado e cep; Ficha pessoal: Nome, telefone, Endereço; 5 ESTRUTURAS - CRIANDO 6 PROJETO 1 – CRIANDO E UTILIZANDO ESTRUTURAS 7 PROJETO 1 – CRIANDO E UTILIZANDO ESTRUTURAS 8 CRIANDO E UTILIZANDO ESTRUTURAS O programa anterior declara uma variável do tipo ficha_pessoal e preenche seus dados. O programa mostra como podemos acessar um elemento de uma estrutura: basta usar o ponto (.); Mostra também como podemos acessar uma struct dentro de outra struct 9 VETORES DE ESTRUTURAS Uma estrutura é como qualquer outro tipo de dado em C, sendo assim, podemos criar matrizes e vetores de struct; Por exemplo um vetor de 100 fichas pessoas; Poderíamos por exemplo, acessar a segunda letra da sigla de estado da décima terceira ficha: 10 ESTRUTURAS – ATRIBUIÇÕES Podemos atribuir duas estruturas que sejam do mesmo tipo; O C irá, neste caso, copiar uma estrutura, campo por campo, na outra; Diferente do que acontece com vetores! Cuidado com ponteiros! 11 ESTRUTURAS – ATRIBUIÇÕES PROJETO 2 12 EXERCÍCIO 1 Escreva um programa fazendo o uso de struct’s. Você deverá criar uma struct chamada Ponto, contendo apenas a posição x e y (inteiros) do ponto. Declare 2 pontos, leia a posição (coordenadas x e y) de cada um e calcule a distância entre eles. Apresente no final a distância entre os dois pontos. 13 ESTRUTURAS – PASSANDO PARA FUNÇÕES Podemos também passar para uma função uma estrutura inteira. A passagem da estrutura é feita por valor. A estrutura que está sendo passada, vai ser copiada, campo por campo, em uma variável local da função PreencheFicha; Podemos contornar este pormenor utilizando ponteiros 14 ESTRUTURAS – PONTEIROS Podemos ter um ponteiro para uma estrutura. Considerando a struct ficha_pessoal, temos: Para usá-lo, haveria duas possibilidades. A primeira é apontá-lo para uma variável struct já existente, da seguinte forma: 15 ESTRUTURAS – PONTEIROS PROJETO 3 A segunda é alocando memória para ficha_pessoal usando por exemplo malloc(): Como mudaria o nome da 4ª ficha para Anselmo Ramon 16 ESTRUTURAS – PONTEIROS Se apontarmos o ponteiro p para uma estrutura qualquer, como fizemos em p=&ficha, e quisermos acessar um elemento da estrutura podemos fazer: Os parênteses são necessários, porque o operador . tem precedência maior que o operador * 17 ESTRUTURAS – PONTEIROS Porém este formato não é muito utilizado; O que é comum de se fazer é acessar o elemento nome através do operador seta. E para acessarmos o CEP dentro de endereço 18 O COMANDO SIZEOF O sizeof é usado para se saber o tamanho de variáveis ou de tipos. Retorna o tamanho do tipo ou variável em bytes; Aplicação importante do sizeof é para se saber o tamanho de tipos criados pelo usuário 19 O COMANDO TYPEDEF O comando typedef permite ao programador definir um novo nome para um determinado tipo; Como por exemplo vamos dar nome de inteiro para int; O comando typedef também pode ser utilizado para dar nome a tipos complexos, como as estruturas; Não sendo mais necessário a declaração da palavra struct para novas variáveis 20 O COMANDO TYPEDEF PROJETO 4 21 O COMANDO TYPEDEF PROJETO 4 22 EXERCÍCIO 2 Faça um programa para manipular os produtos de uma determinada loja. É necessário saber sobre cada produto: código, nome, preço. 23 O programa deverá oferecer as opções: Inserir, Alterar, Remover e Listar. Deverá ser utilizado structs, typedef, sizeof e alocação dinâmica (ponteiros) UMA APLICAÇÃO DE STRUCTS: AS LISTAS SIMPLESMENTE ENCADEADAS Várias estruturas de dados complexas podem ser criadas utilizando simultaneamente structs e ponteiros Uma delas é a LISTA ENCADEADA; Uma lista encadeada é uma sequência de structs, que são nós da lista, ligados entre si através de ponteiros. 24 UMA APLICAÇÃO DE STRUCTS: AS LISTAS SIMPLESMENTE ENCADEADAS Esta sequência pode ser acessada através de um ponteiro para o primeiro nó, que é a cabeça da lista. Cada nó contém um ponteiro que aponta para a struct que é a sucessora na lista; O ponteiro do último nó aponta para NULL, indicando o fim da lista; Esta estrutura de dados é criada dinamicamente (malloc() e free()) 25 UMA APLICAÇÃO DE STRUCTS: AS LISTAS SIMPLESMENTE ENCADEADAS EXERCÍCIO 3 26 27 28 29 30 EXERCÍCIO 3 Implementar as funções: void Alterar(ListaProduto *lista); void Excluir(ListaProduto *lista); 31 32
Compartilhar