SlideShare una empresa de Scribd logo
Programación Distribuida y en Tiempo Real
Ejercicio3: Ocultación de información en ADA
EJERCICIO 1.
ESTRUCTURAS BÁSICAS DE DATOS
Escribir un programa en ADA con las siguientes características:
1. Genere una cola con 10 datos usando el paquete Cola.
2.Extraiga y muestre por pantalla los datos introducidos en la cola
anterior.
3.OPCIONAL. Adaptar el programa para poder trabajar con una Pila en
vez de una Cola.
Código Ejercicio3ADA:
-- Indicamos las Librerias a utilizar, entre ellas la de la cola
del ejercicio, cola_ejercicio3:
with
ada.text_io,
ada.integer_text_io,
cola_ejercicio3;
use
ada.text_io,
ada.integer_text_io;
procedure Ejercicio3ADA is
-- Defino el tipo de datos que se quiere guardar en cada
Nodo de la Cola, en este caso un registro:
type datos is record
num:integer;
end record;
-- Empleo el paquete cola_ejercicio3, indico que son 10
nodos:
package colaEj3 is new cola_ejercicio3( 10, datos );
use colaEj3;
c:cola;
temp:datos;
eleccion:integer;
Francisco Manuel García Vallejo Página 1 de 7
Programación Distribuida y en Tiempo Real
begin
-- Inicializo la cola
inicializar(c);
put_line("Inicialización de Cola");
-- Compruebo que la cola este o no llena, la voy
llenando con los números que introduce por teclado, para llenarla
utilizo un while que finalizará cuando este llena
if esLlena(c) then
put_line("La Cola esta llena.");
else
while not esllena(c) loop
put("Número a insertar: ");
get(temp.num);
insertar( c, temp );
end loop;
end if;
-- Extraigo los elementos de la cola, primero compruebo
que no este vacia, utilizo el mismo bucle while que para
llenarla, con la misma condicion
if esVacia(c) then
put_line("La cola esta vacía.");
else
while not esVacia(c) loop
extraer( c, temp );
put("Numero extraído: ");
put(temp.num, width=>0);
new_line;
end loop;
put_line("Ya he extraido todos los números.");
end if;
end Ejercicio3ADA;
Francisco Manuel García Vallejo Página 2 de 7
Programación Distribuida y en Tiempo Real
Implementación de la Cola: cola_ejercicio3.ads:
-- ESPECIFICACIÓN DE LA COLA
-- PRECONDICIÓN:
-- Se ha de recibir de la instanciacion de la librería, un
parámetro de tipo natural y el tipo de datos a almacenar en cada
Nodo de la Cola.
-- Se ha de controlar que la pila no este vacía/llena con las
funciones esVacia/esLlena antes de usar insertar/leer/extraer.
generic
-- Parámetros recibidos de la instanciacion de la librería:
(private - limited private)
max:natural;
type datos is private;
package cola_ejercicio3 is
-- Defino las cabeceras (como private - limited private) de
los tipos de datos que emplearan las funciones, se terminan de
definir en la zona private:
type cola is limited private;
-- Defino las cabeceras de las funciones contenidas en el
fichero de implementación:
procedure inicializar( c:in out cola );
function esVacia( c:in cola ) return
boolean;
function esLlena( c:in cola ) return
boolean;
procedure insertar( c:in out cola; d:in datos );
function leer( c:in cola ) return
datos;
procedure extraer( c:in out cola; d:out datos );
-- En la zona privada, detallo como son las variables
declaradas previamente como privadas:
private
Francisco Manuel García Vallejo Página 3 de 7
Programación Distribuida y en Tiempo Real
type vector is array(1..max) of datos;
type cola is record
elemento:vector;
numNodos:integer;
primero:integer;
ultimo:integer;
end record;
end cola_ejercicio3;
Francisco Manuel García Vallejo Página 4 de 7
Programación Distribuida y en Tiempo Real
Cuerpo de la Cola: cola_ejercicio3.adb:
-- IMPLEMENTACIÓN DE LA COLA
-- Funciones del paquete:
package body cola_ejercicio3 is
-- INICIALIZA UNA COLA:
-- Precondición: Se ha de recibir un parámetro de tipo Cola
(registro con elemento:vector; numNodos,primero,ultimo:integer)
-- Postcondición: Se inicializa a 0 el contador de Nodos de
la Cola.
procedure inicializar( c:in out cola ) is
begin
c.numNodos := 0;
end inicializar;
-- INDICA SI LA COLA ESTA VACÍA:
-- Precondición: Se ha de recibir un parámetro de tipo Cola.
-- Postcondición: Se devuelve un true si la cola esta vacía
o un false en caso contrario.
function esVacia( c:in cola ) return boolean is
begin
if c.numNodos > 0 then
return false;
else
return true;
end if;
end esVacia;
-- INDICA SI LA COLA ESTA LLENA:
-- Precondición: Se ha de recibir un parámetro de tipo Cola.
-- Postcondición: Se devuelve un true si la cola esta llena
o un false en caso contrario.
function esLlena( c:in cola ) return boolean is
begin
if c.numNodos < max then
return false;
else
return true;
end if;
end esLlena;
-- INSERTA UN NUEVO NODO AL FINAL DE LA COLA:
-- Precondición: Se ha de recibir un parámetro de tipo Cola
y el tipo de dato a guardar en los Nodos de la Cola. Se ha de
comprobar que haya espacio con la función esLlena().
-- Postcondición: Se insertan los datos en el último Nodo de
Francisco Manuel García Vallejo Página 5 de 7
Programación Distribuida y en Tiempo Real
la Cola.
procedure insertar( c:in out cola; d:in datos ) is
begin
if c.numNodos = 0 then
c.numNodos := 1;
c.primero := 1;
c.ultimo := 1;
c.elemento(c.primero) := d;
else
c.numNodos := c.numNodos + 1;
if c.ultimo = 1 then
c.ultimo := max;
else
c.ultimo := c.ultimo - 1;
end if;
c.elemento(c.ultimo) := d;
end if;
end insertar;
-- LEE LOS DATOS DEL PRIMER NODO:
-- Precondición: Se ha de recibir un parámetro de tipo Cola.
Se ha de comprobar que no este vacía con la funcion esVacia()
-- Poscondición: Se devuelven los datos del primer Nodo de
la Cola.
function leer( c:in cola ) return datos is
begin
return c.elemento(c.primero);
end leer;
-- EXTRAE LOS DATOS DEL PRIMER NODO:
-- Precondición: Se ha de recibir un parámetro de tipo Cola
y el tipo de dato a guardar en los Nodos de la Cola. Se ha de
comprobar que no este vacía con la función esVacia()
-- Postcondición: Devuelve por referencia los datos del
primer Nodo y a continuacion lo elimina.
procedure extraer( c:in out cola; d:out datos ) is
begin
d := c.elemento(c.primero);
if c.numNodos > 1 then
if c.primero = 1 then
c.primero := max;
Francisco Manuel García Vallejo Página 6 de 7
Programación Distribuida y en Tiempo Real
else
c.primero := c.primero - 1;
end if;
end if;
c.numNodos := c.numNodos - 1;
end extraer;
end cola_ejercicio3;
Francisco Manuel García Vallejo Página 7 de 7

Más contenido relacionado

PDF
Ejercicio ADA Instrucciones y Estructuras de Control
PDF
About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7)
PDF
ΠΛΗ31 ΜΑΘΗΜΑ 3.2
PPTX
Searching and sorting
PPTX
Constructor overloading & method overloading
PPTX
Java String Handling
PDF
Java Collections Tutorials
PDF
FINAL PAPER FP301 OBJECT ORIENTED PROGRAMMING
Ejercicio ADA Instrucciones y Estructuras de Control
About security assessment framework “CHIPSEC” (FFRI Monthly Research 2016.7)
ΠΛΗ31 ΜΑΘΗΜΑ 3.2
Searching and sorting
Constructor overloading & method overloading
Java String Handling
Java Collections Tutorials
FINAL PAPER FP301 OBJECT ORIENTED PROGRAMMING

Similar a Ejercicio ADA: Ocultación de Información en ADA (20)

PDF
Ejercicio ADA Tipos de Datos en ADA
DOCX
Informe técnico - Unidad 3 Estructuras no lineales (Rubí Verónica)
PDF
Colas Dennis Escobar Salazar.pdf
PPTX
PPTX
C6_PROGRAMACION_c.pptx
PPTX
Estructura de datos
PPT
Estructura de datos.vrb
PPT
Estructura de datos.vrb
PPT
Estructura de datos.vrb
PPT
Estructura de datos.vrb
DOCX
PPTX
Presentacion pilas lista y colas
PPTX
Programación 3: colas
PDF
secme-19001 (1) (1) (1).pdf
PPS
Colas y listas generales
PPT
Presentacion De Cola
PPT
Presentacion De Cola
PPT
Presentacion De Cola
PDF
PPTX
Colas en programacion
Ejercicio ADA Tipos de Datos en ADA
Informe técnico - Unidad 3 Estructuras no lineales (Rubí Verónica)
Colas Dennis Escobar Salazar.pdf
C6_PROGRAMACION_c.pptx
Estructura de datos
Estructura de datos.vrb
Estructura de datos.vrb
Estructura de datos.vrb
Estructura de datos.vrb
Presentacion pilas lista y colas
Programación 3: colas
secme-19001 (1) (1) (1).pdf
Colas y listas generales
Presentacion De Cola
Presentacion De Cola
Presentacion De Cola
Colas en programacion
Publicidad

Último (20)

PDF
Introducción a la historia de la filosofía
DOCX
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
PPTX
LAS MIGRACIONES E INVASIONES Y EL INICIO EDAD MEDIA
PDF
Aumente su Autoestima - Lair Ribeiro Ccesa007.pdf
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
PDF
Introduccion a la Investigacion Cualitativa FLICK Ccesa007.pdf
PDF
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
PDF
TOMO II - LITERATURA.pd plusenmas ultras
PDF
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
PPTX
Doctrina 1 Soteriologuia y sus diferente
PDF
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
PDF
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
PDF
Unidad de Aprendizaje 5 de Matematica 2do Secundaria Ccesa007.pdf
PDF
IPERC...................................
PPTX
Presentación de la Cetoacidosis diabetica.pptx
DOCX
Programa_Sintetico_Fase_4.docx 3° Y 4°..
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Introducción a la historia de la filosofía
PLAN DE AREA DE CIENCIAS SOCIALES TODOS LOS GRUPOS
LAS MIGRACIONES E INVASIONES Y EL INICIO EDAD MEDIA
Aumente su Autoestima - Lair Ribeiro Ccesa007.pdf
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
Escuelas Desarmando una mirada subjetiva a la educación
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
Introduccion a la Investigacion Cualitativa FLICK Ccesa007.pdf
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
TOMO II - LITERATURA.pd plusenmas ultras
La Formacion Universitaria en Nuevos Escenarios Ccesa007.pdf
Doctrina 1 Soteriologuia y sus diferente
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
Unidad de Aprendizaje 5 de Matematica 2do Secundaria Ccesa007.pdf
IPERC...................................
Presentación de la Cetoacidosis diabetica.pptx
Programa_Sintetico_Fase_4.docx 3° Y 4°..
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Publicidad

Ejercicio ADA: Ocultación de Información en ADA

  • 1. Programación Distribuida y en Tiempo Real Ejercicio3: Ocultación de información en ADA EJERCICIO 1. ESTRUCTURAS BÁSICAS DE DATOS Escribir un programa en ADA con las siguientes características: 1. Genere una cola con 10 datos usando el paquete Cola. 2.Extraiga y muestre por pantalla los datos introducidos en la cola anterior. 3.OPCIONAL. Adaptar el programa para poder trabajar con una Pila en vez de una Cola. Código Ejercicio3ADA: -- Indicamos las Librerias a utilizar, entre ellas la de la cola del ejercicio, cola_ejercicio3: with ada.text_io, ada.integer_text_io, cola_ejercicio3; use ada.text_io, ada.integer_text_io; procedure Ejercicio3ADA is -- Defino el tipo de datos que se quiere guardar en cada Nodo de la Cola, en este caso un registro: type datos is record num:integer; end record; -- Empleo el paquete cola_ejercicio3, indico que son 10 nodos: package colaEj3 is new cola_ejercicio3( 10, datos ); use colaEj3; c:cola; temp:datos; eleccion:integer; Francisco Manuel García Vallejo Página 1 de 7
  • 2. Programación Distribuida y en Tiempo Real begin -- Inicializo la cola inicializar(c); put_line("Inicialización de Cola"); -- Compruebo que la cola este o no llena, la voy llenando con los números que introduce por teclado, para llenarla utilizo un while que finalizará cuando este llena if esLlena(c) then put_line("La Cola esta llena."); else while not esllena(c) loop put("Número a insertar: "); get(temp.num); insertar( c, temp ); end loop; end if; -- Extraigo los elementos de la cola, primero compruebo que no este vacia, utilizo el mismo bucle while que para llenarla, con la misma condicion if esVacia(c) then put_line("La cola esta vacía."); else while not esVacia(c) loop extraer( c, temp ); put("Numero extraído: "); put(temp.num, width=>0); new_line; end loop; put_line("Ya he extraido todos los números."); end if; end Ejercicio3ADA; Francisco Manuel García Vallejo Página 2 de 7
  • 3. Programación Distribuida y en Tiempo Real Implementación de la Cola: cola_ejercicio3.ads: -- ESPECIFICACIÓN DE LA COLA -- PRECONDICIÓN: -- Se ha de recibir de la instanciacion de la librería, un parámetro de tipo natural y el tipo de datos a almacenar en cada Nodo de la Cola. -- Se ha de controlar que la pila no este vacía/llena con las funciones esVacia/esLlena antes de usar insertar/leer/extraer. generic -- Parámetros recibidos de la instanciacion de la librería: (private - limited private) max:natural; type datos is private; package cola_ejercicio3 is -- Defino las cabeceras (como private - limited private) de los tipos de datos que emplearan las funciones, se terminan de definir en la zona private: type cola is limited private; -- Defino las cabeceras de las funciones contenidas en el fichero de implementación: procedure inicializar( c:in out cola ); function esVacia( c:in cola ) return boolean; function esLlena( c:in cola ) return boolean; procedure insertar( c:in out cola; d:in datos ); function leer( c:in cola ) return datos; procedure extraer( c:in out cola; d:out datos ); -- En la zona privada, detallo como son las variables declaradas previamente como privadas: private Francisco Manuel García Vallejo Página 3 de 7
  • 4. Programación Distribuida y en Tiempo Real type vector is array(1..max) of datos; type cola is record elemento:vector; numNodos:integer; primero:integer; ultimo:integer; end record; end cola_ejercicio3; Francisco Manuel García Vallejo Página 4 de 7
  • 5. Programación Distribuida y en Tiempo Real Cuerpo de la Cola: cola_ejercicio3.adb: -- IMPLEMENTACIÓN DE LA COLA -- Funciones del paquete: package body cola_ejercicio3 is -- INICIALIZA UNA COLA: -- Precondición: Se ha de recibir un parámetro de tipo Cola (registro con elemento:vector; numNodos,primero,ultimo:integer) -- Postcondición: Se inicializa a 0 el contador de Nodos de la Cola. procedure inicializar( c:in out cola ) is begin c.numNodos := 0; end inicializar; -- INDICA SI LA COLA ESTA VACÍA: -- Precondición: Se ha de recibir un parámetro de tipo Cola. -- Postcondición: Se devuelve un true si la cola esta vacía o un false en caso contrario. function esVacia( c:in cola ) return boolean is begin if c.numNodos > 0 then return false; else return true; end if; end esVacia; -- INDICA SI LA COLA ESTA LLENA: -- Precondición: Se ha de recibir un parámetro de tipo Cola. -- Postcondición: Se devuelve un true si la cola esta llena o un false en caso contrario. function esLlena( c:in cola ) return boolean is begin if c.numNodos < max then return false; else return true; end if; end esLlena; -- INSERTA UN NUEVO NODO AL FINAL DE LA COLA: -- Precondición: Se ha de recibir un parámetro de tipo Cola y el tipo de dato a guardar en los Nodos de la Cola. Se ha de comprobar que haya espacio con la función esLlena(). -- Postcondición: Se insertan los datos en el último Nodo de Francisco Manuel García Vallejo Página 5 de 7
  • 6. Programación Distribuida y en Tiempo Real la Cola. procedure insertar( c:in out cola; d:in datos ) is begin if c.numNodos = 0 then c.numNodos := 1; c.primero := 1; c.ultimo := 1; c.elemento(c.primero) := d; else c.numNodos := c.numNodos + 1; if c.ultimo = 1 then c.ultimo := max; else c.ultimo := c.ultimo - 1; end if; c.elemento(c.ultimo) := d; end if; end insertar; -- LEE LOS DATOS DEL PRIMER NODO: -- Precondición: Se ha de recibir un parámetro de tipo Cola. Se ha de comprobar que no este vacía con la funcion esVacia() -- Poscondición: Se devuelven los datos del primer Nodo de la Cola. function leer( c:in cola ) return datos is begin return c.elemento(c.primero); end leer; -- EXTRAE LOS DATOS DEL PRIMER NODO: -- Precondición: Se ha de recibir un parámetro de tipo Cola y el tipo de dato a guardar en los Nodos de la Cola. Se ha de comprobar que no este vacía con la función esVacia() -- Postcondición: Devuelve por referencia los datos del primer Nodo y a continuacion lo elimina. procedure extraer( c:in out cola; d:out datos ) is begin d := c.elemento(c.primero); if c.numNodos > 1 then if c.primero = 1 then c.primero := max; Francisco Manuel García Vallejo Página 6 de 7
  • 7. Programación Distribuida y en Tiempo Real else c.primero := c.primero - 1; end if; end if; c.numNodos := c.numNodos - 1; end extraer; end cola_ejercicio3; Francisco Manuel García Vallejo Página 7 de 7