·

Análise de Sistemas ·

Estrutura de Dados

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta
Equipe Meu Guru

Prefere sua atividade resolvida por um tutor especialista?

  • Receba resolvida até o seu prazo
  • Converse com o tutor pelo chat
  • Garantia de 7 dias contra erros

Texto de pré-visualização

ESTRUTURA DE DADOS Jeanine dos Santos Barreto Dados heterogêneos e homogêneos Quando uma estrutura de dados armazena elementos de tipos diferentes é dito que esta é uma estrutura de dados heterogênea Normalmente esse tipo de dado é chamado de registro então o registro é uma estrutura de dados que faz o agrupamento de dados de tipos diferentes entre si Ele é formado por uma quantidade determinada de campos os quais são itens individuais de dados e relacionados de forma lógica LAUREANO 2008 Em outras palavras um registro é algo que agrupa elementos que não são do mesmo tipo de dado mas que têm vínculo lógico Os registros consistem em conjuntos de posições de memória os quais são identificados pelo mesmo nome e são individualizados por meio de identificadores que se associam a cada conjunto de posições Figura 1 Figura 1 Representação gráfica de um registro Fonte Laureano 2008 p 41 25 Estrutura de dados Figura 2 Representação gráfica de um vetor Fonte Laureano 2008 p 27 A sintaxe para a definição do vetor acima seria tipodedado nomedovetorquantidadedeposicoesdovetor Em C float nota5 O funcionamento de um vetor consiste em determinar a localização de todos os seus elementos partindo do endereço do primeiro elemento o que se torna possível porque todos estes ficam dispostos lado a lado e cada elemento tem um tamanho fixo É importante lembrar que a primeira posição de um vetor será sempre conhecida por 0 e nunca por 1 nota0 95 nota1 74 nota2 81 nota3 46 nota4 45 Matrizes As matrizes são estruturas de dados bidimensionais os quais precisam de dois índices para fazer o endereçamento e para percorrer toda a estrutura um que servirá para referenciar a linha e outro que servirá para referenciar a coluna da matriz TENENBAUM LANGSAM AUGENSTEIN 1995 27 Estrutura de dados Em C char letras36 A alocação de valores para os elementos da matriz pode ser feita linha por linha ou coluna por coluna É importante lembrar da mesma forma que os vetores que a primeira posição de cada dimensão da matriz será sempre conhecida por 0 e nunca por 1 letras00 M letras01 A letras02 R letras03 C letras04 O letras05 S letras10 N letras11 A letras12 S letras13 S letras14 E letras15 R letras20 D letras21 O letras22 N letras23 A letras24 L letras25 D Aplicação de dados homogêneos vetores e matrizes e ponteiros Existem muitas operações que podem ser feitas com vetores e matrizes na linguagem de programação C e as mais básicas serão exibidas a seguir Para que se possa compreender a aplicação de um vetor podese criar um arquivo em C com o nome vetorcpp cujo código será o seguinte 29 Estrutura de dados Uma das maneiras mais fáceis de incluir elementos em um vetor é utilizando o laço for o que é feito entre as linhas 10 e 12 do código acima Depois disso o código do programa exibe os valores contidos no vetor nas linhas 14 a 16 e exibe o vetor ao contrário entre as linhas 18 e 20 Ainda utilizando o laço for mas agora fazendo um teste com cada posição do vetor são exibidos os elementos pares nas linhas 22 a 25 Estrutura de dados 30 Finalizando nas linhas 27 a 31 é exibido o maior elemento do vetor atri buindo cada valor de posição a uma variável a qual recebe um valor maior cada vez que o teste feito é verdadeiro A execução do código acima exibirá uma tela semelhante à da Figura 4 Figura 4 Execução do código Para que se possa compreender a aplicação de uma matriz podese criar um arquivo em C com o nome matrizcpp cujo código será o seguinte 31 Estrutura de dados Como a matriz é formada de vários vetores mas tem mais de uma dimensão uma das melhores maneiras de inserir elementos em uma matriz é utilizar laços de for encadeados nos quais um faz a varredura nas posições da linha e outro faz a varredura nas posições da coluna Entre as linhas 11 e 16 o código faz a inserção de valores nas posições da matriz Logo a seguir nas linhas 18 a 24 são utilizados laços de for encadeados novamente para fazer a exibição do valor contido em cada uma das posições da matriz Finalizando entre as linhas 26 e 34 está o código utilizado para verificar qual é o maior elemento da matriz Dessa forma novamente são utilizados laços de for encadeados mas para isso é feito um teste para cada um dos valores das posições para verificar se estes são maiores do que uma variável a qual foi inicializada com 0 mas recebe um valor maior caso seja encontrado Figura 5 Estrutura de dados 32 Figura 5 Exemplo de operações com matriz Ponteiros Um ponteiro é um tipo de dado que se diferencia de uma variável no sentido de que a variável faz uma referência direta a um valor Já o ponteiro faz uma referência indireta a um valor Quando se faz a modificação do valor de um ponteiro está sendo modificado o valor da variável para a qual o ponteiro está apontando Em outras palavras o ponteiro é um tipo de dado que permite referenciar a posição de um objeto na memória mas também o próprio objeto DEITEL DEITEL 2011 Quando se trabalha com ponteiros o operador unário é utilizado para acessar o conteúdo da variável para o qual o ponteiro está apontando enquanto o operador unário é utilizado para acessar o endereço da variável para o qual o ponteiro está apontando É importante lembrar que cada ponteiro deve ser declarado conforme o tipo de dado da variável para a qual ele vai apontar e que a declaração de um ponteiro é feita ao colocar um na frente da variável 33 Estrutura de dados No código acima é feita a atribuição de um valor para uma variável Depois um ponteiro vai fazer a referência para essa variável o que possibilita exibir o seu valor e o seu endereço A execução do código exibe uma tela semelhante à apresentada na Figura 6 Figura 6 Exemplo de declaração de ponteiro É possível também fazer operações de soma e subtração com uma vari ável do tipo ponteiro e nesse caso será somada ou diminuída no ponteiro a quantidade de endereços de memória que é relativa ao tipo de dado que o ponteiro armazena LAUREANO 2008 De maneira resumida se um ponteiro que armazena um int ocupa 4 bytes cada operação de soma feita no ponteiro vai acrescentar 4 posições ou unida des de memória Já se o ponteiro armazenar um char o qual ocupa 1 byte de memória cada operação de soma feita no ponteiro vai acrescentar 1 posição ou unidade de memória O exemplo abaixo ilustra essa explicação Estrutura de dados 34 A execução desse código vai retornar a uma tela semelhante à da Figura 7 Figura 7 Exemplo de aritmética de ponteiro 35 Estrutura de dados DEITEL P J DEITEL H M Como programar em C 6 ed São Paulo Pearson 2011 LAUREANO M Estrutura de dados com algoritmos e C São Paulo Brasport 2008 TENENBAUM A A LANGSAM Y AUGENSTEIN M J Estruturas de dados usando C São Paulo Makron Books 1995 Estrutura de dados 36