-- AUTOR: Elvira Mayordomo Cámara
-- PROYECTO: módulo de declaración del
-- TAD aeropuertos solución del ejercicio 9 de
-- tablas hash
-- FICHERO: aeropuertos.ads
-- FECHA: 7-1-04
-- Especificación no hecha
with Ada.text_io, Ada.Strings.Unbounded, ustrings, tablasrecolocacion;
use Ada.text_io, Ada.Strings.Unbounded, ustrings;
package aeropuertos is
type rdestino;
type listadestinos is access rdestino;
type rdestino is
record
nombre:ustring;
sig:listadestinos;
end record;
type aeropuerto is limited private;
function h(nom:ustring;m:integer) return integer;
--hash por método de la división con módulo m
procedure crear(l:in listadestinos;a:out aeropuerto);
--Post: a:=crea(l)
procedure abrir(a:in out aeropuerto;l:in listadestinos);
--Pre: a.abiertas<P and a=a0
--Post: a:=abre(a0,l)
procedure asignarPista(a:in out aeropuerto;v:in ustring;d:in ustring);
--Pre: v no existe en a and d está en a.losdest and a=a0
--Post: a:=asignaPista(a0,v,d)
procedure despegar(a:in out aeropuerto;n:in integer);
--Pre: n<=a.abiertas and a.laspistas(n).numvuelos<>0 and a=a0
--Post: a:=despega(a0,n)
function cuantosDelante(a:aeropuerto;v:ustring) return integer;
--Pre: v existe en a
--Post: devuelve cuántosDelante(a,v)
private
max:constant:=293;-- depende del número de destinos (eldoble, primo)
max2:constant:=293;-- depende del número de vuelos (eldoble, primo)
P:constant:=30;--número de pistas
type rpista;
type ptpista is access rpista;
type rpista is
record
valor: integer;
sig: ptpista;
end record;
-- clave destino, valor pistas para ese
-- destino
package mitabla is new
tablasrecolocacion(ustring, ptpista, max, h);
use mitabla;
type rvuelo;
type ptvuelo is access rvuelo;
type rvuelo is
record
nombre: ustring; -- nombre del vuelo
pista: integer;
posicion: integer; -- número en la cola
sig: ptvuelo; -- siguiente en la cola
end record;
package mitabla2 is new
tablasrecolocacion(ustring,ptvuelo, max2, h);
use mitabla2;
type pista is
record
numvuelos: integer;
primcola, ultcola: ptvuelo;
end record;
type vpistas is array(integer range 1..P) of pista;
type aeropuerto is
record
losdest: mitabla.tabla;
losvuelos: mitabla2.tabla;
nabiertas: integer;
laspistas: vpistas;
end record;
end aeropuertos;
syntax highlighted by Code2HTML, v. 0.9.1