Técnicas de Programação
USES
CRT;
CONST
Max = 30;
TYPE Elem = string[20];
Fila = RECORD total : integer; comeco : Integer; fim : Integer; memo : array[1..Max] of Elem END;
PROCEDURE CriaFila (VAR F: Fila); {Cria fila} BEGIN F.Total :=0; F.Comeco := 1; F.Fim := 1; END;
FUNCTION FilaEstaVazia(VAR F: Fila): boolean; {Verifica se a fila esta vazia} BEGIN FilaEstaVazia := (F.total = 0); ; END;
FUNCTION FilaEstaCheia(VAR F: Fila): boolean; {Verifica se a fila esta cheia} BEGIN FilaEstaCheia := (F.total = MAX); END;
PROCEDURE adc (VAR i:integer); {Atualiza a fila} BEGIN i := i+1; IF ( i > MAX) THEN i := 1; END;
PROCEDURE inc (VAR i:integer); {Incrementa a fila} BEGIN i := I + 1; END;
PROCEDURE dec (VAR i:integer); {Decrementa a fila} BEGIN i := I - 1; END;
PROCEDURE Enfileira (VAR F:Fila; x:Elem); {Insere elemento na fila} BEGIN IF not FilaEstaCheia(F) THEN BEGIN F.memo[F.fim] := x; adc(F.fim); inc(F.total); END ELSE writeln('Queue Overflow’'); END;
FUNCTION Desenfileira (VAR F:Fila) : Elem; {Exclui elemento da fila} BEGIN IF not FilaEstaVazia(F) THEN BEGIN Desenfileira := F.memo[F.comeco]; adc(F.comeco); dec(F.total); END ELSE writeln('Queue Underflow'); END;
VAR Op:Char; A,B,C:Fila; nom_cli:Elem; Resp:Byte;
BEGIN
Op:='0'; WHILE (Op '9') DO BEGIN clrscr; writeln('***************************'); writeln; write('< ATENDIMENTO DE CLIENTES >'); writeln;