Necesitas presentar un proyecto usando Adagraph? Codificas en ADA? Estas desesperado porque se acerca la fecha de entrega? No desespereis, contactanos y te haremos un proyecto para la universidad.
lunes, 29 de agosto de 2011
Primitivas para la manipulacion de Estructuras Dinamicas - Cadenas
-- Primitivas para la manipulacion de Estructuras Dinamicas utilizando de ejemplo el tipo de dato cajero:
type T_Cajero;
type Ptr_Cajero is access T_Cajero;
type T_Cajero is
record
Codigo_Cajero : Integer := 0;
Nombre : String (1 .. 30) := (others => ' ');
Tam_Nombre : Natural:=0;
Apellido : String(1..30):=(OTHERS=> ' ');
Tam_Apellido : Natural:=0;
Carnet : String(1..30):=(OTHERS=> ' ');
Tam_Carnet : Natural:=0;
Telefono : String(1..30):=(OTHERS=> ' ');
Tam_Telefono : Natural:=0;
Email : String(1..30):=(OTHERS=> ' ');
Tam_Email : Natural:=0;
Codigo_Horario : Integer:= 0;
Siguiente : Ptr_Cajero := null;
end record;
------------------------------------------
procedure Insertar_Inicio (
Cad_Cajero : in out Ptr_Cajero;
Elem : in out Ptr_Cajero )IS
BEGIN
IF (Elem = NULL)
THEN
PUT_LINE("Error al Insertar Inicio: No hay nada q insertar");
ELSE
Elem.All.Siguiente := Cad_Cajero;
Cad_Cajero := Elem;
Elem :=NULL;
END IF;
RETURN;
END Insertar_Inicio ;
procedure Insertar_Final (
Cad_Cajero : in out Ptr_Cajero;
Elem : in out Ptr_Cajero )IS
Tmp : Ptr_Cajero := null;
BEGIN
IF (Elem = NULL)
THEN
PUT_LINE("Error al Insertar al Final: No hay nada q insertar");
RETURN;
END IF;
IF (Cad_Cajero = NULL)
THEN
Cad_Cajero := Elem;
ELSE
Tmp := Cad_Cajero;
LOOP
EXIT WHEN Tmp.All.Siguiente =NULL;
Tmp := Tmp.All.Siguiente;
END LOOP;
Tmp.all.Siguiente := Elem;
END IF;
Elem :=NULL;
RETURN;
END Insertar_Final ;
procedure Eliminar_Inicio (
Cad_Cajero : in out Ptr_Cajero;
Elem : in out Ptr_Cajero )IS
BEGIN
IF (Cad_Cajero = NULL)
THEN
PUT_LINE("Hostias! La cadena esta vacia!");
RETURN;
END IF;
Elem := Cad_Cajero;
Cad_Cajero := Cad_Cajero.All.Siguiente;
Elem.All.Siguiente :=NULL;
RETURN;
END Eliminar_Inicio ;
procedure Eliminar_Final (
Cad_Cajero : in out Ptr_Cajero;
Elem : in out Ptr_Cajero )IS
Tmp: Ptr_Cajero;
BEGIN
IF (Cad_Cajero = NULL)
THEN
raise Cadena_Vacia ;
RETURN;
END IF;
IF (Cad_Cajero.All.Siguiente = NULL)
THEN
Elem := Cad_Cajero;
Cad_Cajero := NULL;
RETURN;
END IF;
Tmp:=Cad_Cajero;
LOOP
-- Nos detenemos en el penultimo elemento
EXIT WHEN Tmp.All.Siguiente.All.Siguiente = NULL;
Tmp:= Tmp.All.Siguiente;
END LOOP;
Elem := Tmp.All.Siguiente;
Tmp.All.Siguiente :=NULL;
RETURN;
END Eliminar_Final ;
procedure Recorrer (
Cad_Cajero : in Ptr_Cajero )IS
Tmp: Ptr_Cajero := null;
BEGIN
IF ( Cad_Cajero = NULL)
THEN
raise Cadena_Vacia ;
RETURN;
END IF;
Tmp:= Cad_Cajero ;
LOOP
EXIT WHEN Tmp=NULL;
Mostrar_Cajero(Tmp.All);
Tmp := Tmp.All.Siguiente;
END LOOP;
RETURN;
END Recorrer ;
procedure Buscar_Codigo (
Cad_Cajero : in Ptr_Cajero;
Codigo : in Integer;
Elem : out Ptr_Cajero )IS
Tmp : Ptr_Cajero := null;
begin
if (Cad_Cajero=null) then
raise Cadena_Vacia ;
else
Tmp:=Cad_Cajero;
loop
exit when Tmp=null;
exit when Tmp.All.Codigo_Cajero = Codigo;
Tmp:=Tmp.All.Siguiente;
end loop;
if (Tmp=null) then
raise Elemento_No_Encontrado;
else
Elem:=Tmp;
end if;
end if;
END Buscar_Codigo ;
Etiquetas:
Ada,
Cadenas,
Eliminar,
Estructuras Dinamicas,
Insertar,
Primitivas,
Recorrer
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario