Você está na página 1de 8

Etapa 3

Introduo
Nesta etapa vamos ver como organizar o sistema de um aeroporto para taxiamento areo com
intuito de trazer segurana, dinamismo e organizao para todas as etapas que vamos
percorrer com isso podemos trazer para nossos passageiros e tripulantes maior confiabilidade
no desenvolvimento do taxiamento areo. Para isso ser feito um estudo com base nas
instrues desta atps para determinar as melhores formas de transportar passageiros e
manipular aeronaves.

Passo 1
Introduo a alocao Dinmica de Memria: Conceito, funes, e aplicaes. Exemplos.
Desenvolvimento de Filas e Pilhas com alocao dinmica.

Alocao dinmica
A alocao dinmica o processo que aloca memria em tempo de execuo. Ela utilizada
quando no se sabe ao certo quanto de memria ser necessrio para o armazenamento das
informaes, podendo ser determinadas em tempo de execuo conforme a necessidade do
programa. Dessa forma evita-se o desperdcio de memria.

No padro C ANSI existem 4 funes para alocaes dinmica pertencentes a biblioteca


stdlib.h. So elas malloc(), calloc(), realloc() e free(). Sendo que as mais utilizadas so as
funes malloc() e free(). Alm das funes mencionadas acima existem outras que no
sero abordadas neste tutorial, pois no so funes padres.

A alocao dinmica muito utilizada em problemas de estrutura de dados, por exemplo,


listas encadeadas, pilhas, filas, arvores binrias e grafos. As funes malloc() e calloc() so
responsveis por alocar memria, a realloc() por realocar a memria e por ultimo a free()
fica responsvel por liberar a memria alocada.

A sintaxe da funo malloc() dada por:

Esta funo recebe como parmetro size que o nmero de bytes de memria que se
deseja alocar. O tipo size_t definido em stdlib.h como sendo um inteiro sem sinal. O
interessante que esta funo retorna um ponteiro do tipo void podendo assim ser atribudo
a qualquer tipo de ponteiro.

No exemplo abaixo, suponha que seja necessrio no meio do cdigo alocar uma memria
com 150 bytes, para isto seria necessrio digitar as seguintes linhas de cdigo:

No programa abaixo podemos verificar alguns problemas que podem ser facilmente
resolvidos se tivssemos utilizado alocao dinmica.

More referncias bibliograficas


Referncia gerada com sucesso.
Referncia: BATTISTI, Jlio. Linguagem C Alocao dinmica. 2009. Disponvel em:
<http://juliobattisti.com.br/tutoriais/katiaduarte/cbasico009.asp>. Acesso em: 23 out. 2014.
Citao com autor includo no texto: Battisti (2009)
Citao com autor no includo no texto: (BATTISTI, 2009)

Filas e pilhas com alocao dinmica


Como uma fila pode ser representada em C? Uma ideia usar um vetor para
armazenar os elementos da fila e duas variveis, front e rear, para armazenar as posies
dentro de um vetor do primeiro e ltimo elementos da fila. Poderiamos declarar uma fila q de
inteiros com:
#define MAXQUEUE 100
Struct queue {
Int items (MAXQUEUE);
Int front, rear;
}q;

Uma pilha um conjunto ordenado de itens no qual novos itens podem ser inseridos e
a partir do qual podem ser eliminados itens em uma extremidade chamado topo da pilha. Ao
contrrio do que acontece com o vetor, a definio da pilha compreende a insero e a
eliminao de itens, de modo que uma pilha um objeto dinmico, constantemente mutvel.
Por conseguinte, surge ento a pergunta: como uma pilha muda ? A definio especifica que
uma nica extremidade da pilha designada como o topo da pilha. Novos itens podem ser
colocados no topo da pilha (em cujo caso este topo ser deslocado para cima, de modo a
corresponder ao novo primeiro elemento), ou os itens que estiverem no topo da pilha podero
ser removidos (em cujo caso esse topo ser deslocado para baixo, de modo a corresponder ao
novo primeiro elemento).
Referncia gerada com sucesso.
A referncia foi vinculada ao seu nome de usurio.
Referncia: AARON M. TENENBAUM (Sp). Departamento de Cincias da Computao. Estrutura de
dados usando c. So Paulo: Pearson, 1995. 426 p. Teresa cristina flix de souza.
Citao com autor includo no texto: Aaron M. Tenenbaum (1995)
Citao com autor no includo no texto: (AARON M. TENENBAUM, 1995)

Passo 2
Taxiamento de voos
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<locale.h>

typedef struct Taxiamento{


int numeroVoo;
char modeloAeronave[20], empresaAerea[20], horaSaida[6];
struct Taxiamento* prox;
};

Taxiamento *aux, *inicio = NULL, *final = NULL;

void cadastrarTaxiamento(){
aux = (struct Taxiamento*)malloc(sizeof(struct Taxiamento));
system("cls");
printf("\n\tDigite o Numero do Voo: ");
scanf("%d", &aux -> numeroVoo);
fflush(stdin);
printf("\n\tDigite o Modelo da Aeronave: ");
gets(aux -> modeloAeronave);
fflush(stdin);
printf("\n\tDigite o Nome da Empresa Area: ");
gets(aux -> empresaAerea);
fflush(stdin);
printf("\n\tDigite o horrio de sada (HH:MM): ");
gets(aux -> horaSaida);
fflush(stdin);
aux -> prox = (struct Taxiamento*)NULL;

if (inicio == NULL)
inicio = final = aux;
else{
final -> prox = aux;
final = aux;
}
printf("\n\tCADASTRO REALIZADO COM SUCESSO! \n");

void autorizaTaxiamento(){
aux = inicio;
printf("\n\t *** Liberando o Taxiamento *** \n");
aux = inicio -> prox;
free(inicio);
inicio = aux;
}

void exibirTaxiamento(){
system("cls");
Taxiamento *aux;
printf("\n\t *** Exibindo o Taxiamento *** \n");

for(aux = inicio; aux != NULL; aux = aux -> prox){


printf("\n\tNumero do Voo = %d\n \tModelo da Aeronave: %s\n \tEmpresa Aerea:
%s\n \tHorario de Sado: %s \n\n", aux -> numeroVoo, aux -> modeloAeronave, aux ->
empresaAerea, aux -> horaSaida);
}
}

main(){

setlocale(0,"portuguese");

int opc, vbuscar;


Taxiamento novo;

do{
system("cls");
printf("\n\t *** CONTROLE DE VOO *** \n\n");
printf("\t1 - Cadastrar Voo\n");
printf("\t2 - Exibir os Voos cadastrados\n");
printf("\t3 - Atender o Primeiro da Fila\n");
printf("\t4 - Sair\n");
printf("\n\tEscolha uma opo: ");
scanf("%d", &opc);

switch(opc){

case 1:
cadastrarTaxiamento();
break;

case 2:
if(inicio != NULL){
exibirTaxiamento();
}
else{

printf("\n\tA Fila est vazia!\n");


}
break;

case 3:
if(inicio != NULL){
autorizaTaxiamento();
}
else{
printf("\n\tA Fila est vazia!\n");
}
break;

case 4:
exit(1);
}
system("pause");
}while(opc != 4);
}
Fim do programa

Você também pode gostar