Você está na página 1de 15

Instituto Superior Politecnico de Tecnologia e Cincias

GRUPO: 2 INTEGRANTES DO GRUPO: CLUDIO DA SILVA ERNESTO JOO FERREIRA MRCIA MARLIA DE MENEZES N N N A20120750 A20120694 A20120487

Sumrio

Objectivos...................................................................................................................................... 5 Introduo ..................................................................................................................................... 6 Conceito de Filas ........................................................................................................................... 7 TIPOS DE FILA ................................................................................................................................ 8 Fila simples: ............................................................................................................................... 8 Algoritmo em Pseudo-Codigo de uma Fila Simples ................................................................. 9 Teste de Mesa de Filas Simples ............................................................................................... 10 Algoritmo em Pseudo-Codigo de uma fila circular ................................................................. 12 Teste de Mesa de Filas Circulares ........................................................................................... 13 Concluso .................................................................................................................................... 14 Bibliogrfia .................................................................................................................................. 15

Objectivos
O presente trabalho tem como objectivo explanar de forma abrangente os conceitos, estrutura lgica e utilizao de filas. Apresenta as estruturas de uma fila os algoritmos bsicos que servem de alicerce para o estudo e a construo de software.

Introduo
Antes de comear a explanar sobre o conceito de filas importante primeiro definir alguns conceitos que esto intimamente relacionados com o conceito de filas. Estrutura de dados: uma estrutura de dados um modo particular de armazenamento e organizao de dados em um computador de modo que possam ser usados eficientemente. Endereos: memria de qualquer computador uma sequncia de bytes, cada byte pode armazenar um nmero inteiro entre 0 e 255 (ou seja, um caracter). Cada byte tem um endereo (= address) numrico. Ponteiros: um ponteiro nada mais do que uma varivel que guarda o endereo de uma outra varivel.
Tipos de dados abstractos: uma especificao de um conjunto de dados e operaes que podem ser executadas sobre esses dados. Alm disso, uma metodologia de programao que tem como proposta reduzir a informao necessria para a criao/programao de um algoritmo atravs da abstraco das variveis envolvidas em uma nica entidade fechada. Com operaes prprias sua natureza.

Conceito de Filas
Definio de Filas: Uma fila uma estrutura de dados que admite insero de novos elementos e remoo de elementos antigos. Mais especificamente, uma fila (= queue) uma estrutura sujeita seguinte regra de operao: sempre que houver uma remoo, o elemento removido o que est na estrutura h mais tempo. Em outras palavras, o primeiro objecto inserido na fila tambm o primeiro a ser removido. Essa poltica conhecida pela sigla FIFO (= First-In-First-Out). A fila tem como objectivo armazenar dados disponibilizando o critrio de acesso o primeiro que entra o primeiro que sai.

Figura 1.1 Mecanismo de acesso de uma fila Inicio Sadas Fim Chegadas

As principais operaes com uma fila so insero e retirada, tambm chamadas Queue e Dequeue, respectivamente. O conceito de fila dentro do contexto da computao, a operao Queue sempre coloca um novo elemento no fim da fila, e a operao Dequeue sempre retira o elemento mas antigo da fila, isto , o elemento que esta na frente o no inicio da mesma.

TIPOS DE FILA
Fila simples: um tipo de fila com alocao esttica.
A figura 1.1 exibe uma possvel configurao para uma fila com alocao esttica, o vector Q armazena quem est na varivel Inicio indica quem est na frente da fila, e a varivel Fim indica quem est no final da fila. Figura 1.1- fila de alocao esttica.

Estrutura 1 Q 2 3 4 5 6 7 8

Operaes

Inicializa Queue M Incio 1 Fim DeQueue

Uma fila simples utiliza as variveis inicio e fim e um vector V com MAX posies. A varivel inicio armazena no vector V , o ndice do primeiro elemento da fila, e a varivel fim armazena, no mesmo vector , o ndice do ultimo elemento da fila. Inicialmente quando a fila est vazia, inicio contem o valor 1 ,e fim ,o valor 0. A operao Queue primeiro testa se a fila est cheia (fim = MAX) e, em caso afirmativo, acusa fila cheia. Caso contrrio, fim incrementado por 1, e o novo elemento armazenado em V|fim|. Operao Dequeue primeiro testa se a fila est vazia (Inicio> fim) e, em caso afirmativo, acusa Fila Vazia. Caso contrrio, armazena-se o elemento V |incio|em alguma varivel, incio incrementado por 1. As filas simples , implementadas atravs de alocao esttica no permitem a reutilizao de posies liberadas pela operao Dequeue.

Algoritmo em Pseudo-Codigo de uma Fila Simples


Inicio Const max= 10; {define o nmero mximo de elementos da fila} Tipo {define o tipo de fila} Fila = registro Q= vetor[1..max] Tipo vetor: Q Inicio: inteiro; Fim: inteiro; Fim; Var Fila_1, fila_2: { declara duas filas } Escreva_no_topo: caracter ; { armazena quem esta na frente da fila} I: inteiro; [auxilia nos laos] Procedimento inicializa( var F: fila); Inicio F. inicio 1; F.fim0; Fim; Procedimento inserao(var F: fiila, D: caracter); Inicio Se F.Fim = max entao { verifica o transbordo de fila } Escreva( Fila esta cheia ); F.Fim F.Fim+1; F.Q[F.Fim]D; Fim se; Fim; Procedimento retirada ( var F: Fila; var R: caracter); Inicio Se F.Inicio> F.Fim entao { verifica se a fila esta vazia } Escreva( Fila vazia ); R ?; Se nao R F.Q[ F.inicio]; F.inicioF.inicio+1; Fim se; Fim; Inicio Inicializa( Fila_1); Inicializa( Fila-2); Inserao( Fila_1, A); Inserao( Fila_1,B); Inserao( Fila_1,C); Inserao( Fila_1,D); Inserao(Fila_2,A);

Para I Fila_1.inicio ate Fila_1.Fim faa Retirada( Fila_1, estava_no_topo); Escreva( I, , estava_no_topo); Fim para; Para I1 ate 4 faa { exibe o conteudo de Fila_2 } Retirada( Fila_2, estava:no_topo); Escreva( I, , estava_no_topo); Fim para; Fim; Fim.

Teste de Mesa de Filas Simples

Operao Inicializa Insero(X, 4) Insero(X,12) Retirada(X,Res) Insero(X,5) Insero(X,2)

Inicio 1 1 1 2

Fim 0 1 2 2 3

___Fila X_____ Q[1, 2, 3 ] ? ? ? 4 ? ? 4 ? ? 4 12 ? 4 12 5 *****Fila Cheia****

4 12 4 5 2

10

Filas Circulares
As filas circulares se aproximam da noo popular de uma fila. Como vimos anteriormente, as filas simples, implementadas atravs de alocao esttica, no permitem a reutilizao de posies liberadas pela posio Dequeue. A fig. 1.2 exibe uma possvel configurao para uma fila circular com alocao esttica. Fig. 1.2

Tamanho

Comparando a fila simples com a fila circular da fig. 1.1, Observa-se que foi introduzido o elemento tamanho. Na fila simples, o nmero de elementos em uso era dado por (fim inicio + 1). Na fila circular, o nmero de elementos em uso dado pelo objecto tamanho. A cada operao Queue e Dequeue, tamanho , respectivamente incrementado e decrementado. Para realizar a ideia de circularidade, fim e inicio devem ser ajustados no inicio fsico da fila sempre que seus respectivos valores ultrapassarem o valor de MAX.

11

Algoritmo em Pseudo-Codigo de uma fila circular


Inicio Const max= 10; {define o nmero maximo de elementos da fila} Tipo {define o tipo de fila} Fila = registro Q= vetor[1..max] Tipo vetor: Q Inicio: inteiro; Tamanho: inteiro; Fim: inteiro; Fim; Var Fila_1, fila_2: { declara duas filas } Escreva_no_topo: caracter ; { armazena quem esta na frente da fila} I: inteiro; [auxilia nos laos] Procedimento inicializa( var F: fila); Inicio F. inicio 1; F.fim0; F.tamanho0; Fim; Procedimento inserao(var F: fiila, D: caracter); Inicio Se F.Fim = max entao { verifica o transbordo de fila } Escreva( Fila esta cheia ); F.Fim F.Fim Mod Max +1; F.Q[F.Fim]D; F.tamanho F.tamanho + 1 Fim se; Fim; Procedimento retirada ( var F: Fila; var R: caracter); Inicio Se F.tamanho = 0 entao Escreva( Fila vazia ); R ?; Se nao R F.Q[ F.inicio]; F.inicioF.inicio Mod Max +1; F.tamanhoF.tamanho - 1 Fim se; Fim; Inicio Inicializa( Fila_1); Inicializa( Fila-2); Inserao( Fila_1, A); Inserao( Fila_1,B); Inserao( Fila_1,C); Inserao( Fila_1,D); Inserao(Fila_2,A); Para I Fila_1.inicio ate Fila_1.Fim faa

12

Retirada( Fila_1, estava_no_topo); Escreva( I, , estava_no_topo); Fim para; Para I1 ate 4 faa { exibe o conteudo de Fila_2 } Retirada( Fila_2, estava:no_topo); Escreva( I, , estava_no_topo); Fim para; Fim; Fim.

Teste de Mesa de Filas Circulares


Operao Inicializa Insero (X,4) Insero (X,12) Retirada (X,Res) Insero (X,5) Insero (X,2) Insero (X,-1) D 4 12 4 5 2 -1 R Inicio 1 1 1 2 2 2 Fim Tamanho ------- Fila X -----Q [1, 2, 3] ? ? ? ? 5 5

0 0 ? ? 1 1 4 ? 2 2 4 12 2 1 4 12 3 2 4 12 1 3 2 12 ****************Fila Cheia********************

13

Concluso
Concluindo as filas circulares se aproximam da noo popular de uma fila. As filas simples, implementadas atravs de alocao estatica, no permitem a reutilizao de posies liberadas pela operao Dequeue.

14

Bibliogrfia
Estrutura de dados- Autor (Arthur Vargas Lopes) 1999

15

Você também pode gostar