Ejemplo sencillo de listas
Para medio explicar el uso de las listas voy a usar la practica que hicimos hoy en clase.
Una lista es un conjunto de datos agrupados los cuales manejamos a través de funciones y procedimientos para obtener un determinado resultado. [Mas sobre listas]
Para ilustrar este ejemplo partimos de la siguiente situación: Tenemos una lista de numero naturales (1,7,14,72,103) y queremos obtener el primer numero de esa lista que es redondo.
Este sería el código fuente a usar, en los comentarios explico cada cosa y el porque de ello para que lo comprendáis mejor.
----------------------------------------------------------------
-- Nombre: Primer redondo
-- Fecha: 15/12/2008
-- Descripción: Comprobación de los elementos de una lista hasta
-- obtener el primer numero redondo e imprimirlo en pantalla.
-- Requiere: Modulo de manejo de listas (lista.ads y lista.adb)
----------------------------------------------------------------
-- Autor: [SkG]
----------------------------------------------------------------
-- Llamamos a los módulos de manejo de texto y de números
with Ada.Text_IO, Ada.Integer_Text_IO; use Ada.Text_IO, Ada.Integer_Text_IO;
-- Llamamos al modulo de manejo de listas
with Lista;
procedure primer_redondo is
----------------------------------------------------------------
-- Declaración de tipos y paquetes
----------------------------------------------------------------
-- Estas dos lineas SIEMPRE las usaremos cuando tengamos que
-- manejar listas, normalmente con poca variación.
-- Declaramos una 'ListaCol' como una Lista de números naturales
package ListaCol is new Lista(natural); use ListaCol;
-- Creamos un tipo para manejar elementos de esa lista
subtype TLista is ListaCol.Tipo;
----------------------------------------------------------------
-- Declaración de funciones y procedimientos
----------------------------------------------------------------
-- Esto es una función sencilla para ver si un numero es redondo
function Redondo(N:Natural) return boolean is
-- PRE: NºRedondo Div 2,8,9
begin
return ((N mod 2 = 0) and (N mod 8 = 0) and (N mod 9 = 0));
end Redondo;
-- En esta función lo que hacemos es comprobar elemento
-- a elemento si es redondo, si no lo es continua con el resto
-- de elementos existentes en la lista.
function PQC(Col:TLista) return natural is
begin
if Es_Vacia(Resto(Col)) then
return Primero(Col);
elsif Redondo(Primero(Col)) then
return Primero(Col);
else
return PQC(Resto(Col));
end if;
end PQC;
-- Estas son otras funciones importantes si queremos imprimir
-- la lista en la pantalla.
-- Aquí especificamos como debe salir los datos, como si fuera
-- la parte ejecutiva del programa.
procedure ImprElemento(N:natural) is
begin
Put(N,0);
end ImprElemento;
-- Esta es la función a la que llamaremos para imprimir la lista
-- a cual ordena 'Escribir' la lista como se dice en la anterior
procedure ImprLista is new Escribir(ImprElemento);
----------------------------------------------------------------
-- Delcaración de variables y/o constantes
----------------------------------------------------------------
-- Esto es una lista de prueba
Col: constant TLista := Lista_Cons((1,7,14,72,103));
----------------------------------------------------------------
-- Parte ejecutiva
----------------------------------------------------------------
begin
-- Aquí es donde ya se pone todo lo que debe suceder.
-- En este caso Imprimimos la lista que tenemos y luego
-- comprobamos cual es el primer redondo con nuestra función
Put("De la lista "); ImprLista(Col);
Put(" el primer redondo es: "); Put(PQC(Col),0);
end primer_redondo;
En serio, si no os leéis los comentarios de poco os va a servir.
Podéis copiar simplemente, pero no siempre voy a poner las practicas completas, solo alguna parte para que completéis el resto o las partes conflictivas.
¿Te gustó este artículo?
Aún no hay trackbacks.
Enlaces
- Barrapunto
- Blog de Yclan
- Brave New World
- Cats’ Paradise
- Eien-no-Ai
- Fotos en Flickr
- skgsergio's GitHub
- Wikimanga
Categorías
- ADA
- C/C++
- Consolas
- General
- IRC
- Java
- Linux
- Mac OS X
- Otros
- PHP
- Programación
- Sistemas
- Unix en general
- Vida-Real
Comentarios recientes
- Anónimo en El rey de los proyectos inacabados…
- NeoFtw en Reflexiones sobre la sociedad
- Antonio en Listas encadenadas o Linked List en C
- Ingeniero24 en Procedures con prametros in, out e in out
- Rarok en Reflexiones sobre la sociedad
