ATPS ESTRUTURA DE DADOS
Por: diguests • 9/11/2015 • Trabalho acadêmico • 2.693 Palavras (11 Páginas) • 243 Visualizações
SUMÁRIO
1 | Introdução | 1 |
2 | Relatório 1 – Estrutura de Dados: Implementado uma Estrutura | 2 |
2.1 | Alocação Estática de Memória | 2 |
2.2 | Programa da Estrutura avião(structaviao) | 10 |
3 | Relatório 2–Listas Ligadas:Programa da Estrutura voo(struct voo) | 12 |
3.1 | Programa da Estrutura passagem(structpassagem) | 14 |
4 | Conclusão | 17 |
5 | Bibliografia | 18 |
- Introdução
Apresentaremos nesta ATPS – Estrutura de Dados, os passos 1 e 2, onde mostraremos a introdução Alocação Estática de Memória, bem como para os seguintes assuntos: Alocação de Memória; Ponteiros em C; Estrutura de Dados em C; Vetores em C; Implementação de Vetores Unidimensionais; Operações com Strings de Caracteres; Estruturas em C e Implementação de Estruturas.
Baseados neste assunto, iremos abordar as estruturas criadas em Linguagem C, para darmos início a criação da solução computacional da empresa aérea VOEBEM, que deseja automatizar alguns processos adotados pela companhia.
- Relatório 1 – Estrutura de Dados: Implementando uma Estrutura
Iremos dar início a implementação de uma estrutura em Linguagem C, mas para definirmos este conceito, iremos abordar os seguintes temas: Alocação de Memória, Ponteiros em C, Estrutura de Dados em C, Vetores em C, Implementação de Vetores Unidimensionais, Operações com Strings de Caracteres e Implementação de Estruturas.
- Alocação Estática de Memória
Quando um programa começa a ser executado em um computador, este programa solicita memória do sistema operacional em que está situado, ou seja, ele faz alocação de memória para ser executado. Porém, em certos casos, esta memória alocada na iniciação do programa não é suficiente, então o programa também aloca mais memória durante a sua execução, se utilizando de variáveis para isto.
Na Linguagem C (Programa que iremos utilizar para realizar as atividades propostas) existem dois tipos de alocação de memória (variáveis), a alocação de memória estática e a alocação de memória dinâmica, das quais iremos explica e exemplificas nos tópicos abaixo:
- Alocação de Memória Estática: O espaço de armazenamento de memória é definido durante o processo de compilação e tem a vantagem de certos dados estarem previamente organizados de forma linear e sequencial, porém é necessário que seja estabelecido a quantidade correta de memória a ser armazenada para uma determinada estrutura. Veja o exemplo aplicado a um vetor abaixo na Linguagem C com comentário:
int vetor [5]; /*Espaço reservado para cinco valores do tipo inteiro. O int ocupa 4 bytes de memória (8 bytes em certos computadores), logo este vetor ocupa 20 bytes de memória (5 x 4).*/
- Alocação de Memória Dinâmica: O espaço de armazenamento é definido e reservado durante a compilação do programa e tem a vantagem deste espaço ser alterado durante a sua execução. Esta alocação tem quatro tipos de funções para que ela possa ser executada:
1: Função Malloc – Esta função retorna um ponteiro do tipo void, ou seja, pode ser atribuída a qualquer tipo de ponteiro conforme a sintaxe abaixo:
void *malloc(size_t num_bytes); /*size _t é definido na biblioteca stdlib.h e num_bytes é o número de bytes que se deseja alocar.*/
2: Função Free – Esta função tem a o objetivo de liberar memória após a alocação pela função malloc, conforme sintaxe abaixo:
void free (void *ptr); /*O parâmetro ptr é um ponteiro do início da região de memória que se deseja liberar. */
3: Função Calloc – Esta função,é semelhante a função malloc, porém além de especificar número de memória a ser alocado, ela também especifica a quantidade de elementos e o tamanho da memória de cada um dos elementos que serão alocados, conforme sintaxe abaixo:
void *calloc(size_t num_itens, site_t tam_item); /* O parâmetro num_itens, especifica a quantidade de elementos a serem alocados e o tam_itens, o tamanho em bytes de cada um destes elementos. */
4: Função Realloc: Com esta função é possível alterar o tamanho de um conjunto de memória que já foi alocado, conforme a sintaxe abaixo:
void *realloc(void *ptr, size_t tam); /* O parâmetro ptr representa a região de memória que se deseja alterar e o tam representa o novo tamanho de memória a ser alterado. */
Ponteiros em C
O ponteiro é um tipo de dado, que está na mesma posição de memória de um valor inteiro por exemplo. Os ponteiros são objetos que estão previamente referenciados nas funções e que podem ser “invocados” a qualquer momento nestas funções quando a sua sintaxe for inclusa pelo usuário, ou seja, permite que uma função chamada modifique variáveis numa função de chamada ou chamadora. Vejamos um exemplo abaixo, onde utilizaremos a,b e c como números inteiros e realizaremos a função c = a + b:
...