Sei sulla pagina 1di 4

PRACTICA 1 SISTEMAS INFORMATICOS DE TIEMPO REAL.

Introduccin al Lenguaje Ada 95.


Introduccin:
En la presente practica se pretende que el alumno se familiarice con el lenguaje de
programacin Ada 95, en sus definiciones bsicas. Para ello se utilizara una versin del
compilador de GNAT, software de dominio pblico que cualquiera puede obtener por
Internet para cualquier entorno o sistema operativo.
En nuestro caso la versin es la 3.13 que soporta las tareas tanto en las versiones Unix
como en las de Windows (NT,95 y 2000). Las practicas se llevaran a cabo en maquinas
cuyo sistemas operativo es el Windows XP.
Para el desarrollo de la prctica es necesario solo unos pequeos conocimientos de
como funciona Windows XP. El compilador esta instalado en el directorio C:\GNAT\.
Se recomienda crear en un subdirectorio ( p.e: sitr) donde llevar acabo las pruebas.
Destacar que no hay garanta de que lo que se deje en el disco duro del ordenador del
laboratorio permanezca hasta la siguiente sesin. Por ello es recomendable utilizar
algn medio de almacenamiento removible para llevarse las prcticas.
Para que pueda utilizarse se deber ejecutar (doble click) en el icono que existe en el
men de Windows con nombre GNAT Ada95 Compiler. Este programa carga las
variables de entorno en memoria y ejecuta el entorno integrado de trabajo.

La prctica se desarrollara mediante unos ejercicios, que gradualmente se incrementaran


en dificultad.
Ejercicio 1: Programa Hello World.
Este primer ejercicio pretende familiarizar con el entorno de compilacin.
El programa es el siguiente:

with Text_IO;
-- comentario
procedure Hello is
I : Integer;
X, Y : Float;
begin
Text_IO.Put_Line("Hello!");
end Hello;
Introducir el cdigo mediante el editor de texto que proporciona el entorno en un
fichero que llamareis hello.adb. Una vez finalizado esto para obtener el ejecutable con
la opcin del men se compilar y ejecutar

Una vez hecho esto y si todo ha sido correcto deberis tener un fichero hello ejecutable.
Ejecutndolo se comprobara que es lo que hacia el programa.
Ejercicio 2: Das de la semana.
Este ejercicio pretende familiarizar con las declaraciones de tipos y subtipos. Para ello
se deber llevar a cabo un programa que tomando por pantalla un da de la semana,
devuelva el da siguiente. Por ejemplo si se introduce Lunes, devolver Martes.
Para ello ser til utilizar una declaracin de tipos como la que sigue:
TYPE Days IS (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
SUBTYPE WeekDays IS Days RANGE Mon .. Fri;
SUBTYPE WeekEnd IS Days RANGE Sat .. Sun;
PACKAGE Day_IO IS
NEW Text_IO.Enumeration_IO (Enum => Days);
Today
: Days;
Tomorrow : Days;

Como se puede ver esto no es todo el programa. El resto deber ser implementado por el
alumno. Ser interesante que se experimente con los tipos definidos, por ejemplo
creando ms, variando el rango, etc.
La forma de compilar y ejecutar el programa ser totalmente similar al anterior.

Ejercicio 3: Ordenacin de nmeros.


En el presente ejercicio se pretende estudiar varios aspectos de la programacin de Ada
95:
Declaracin e implementacin de procedimientos.
Pase de parmetros a los mismos.
El programa deber recoger por teclado tres nmeros enteros. Una vez recogidos
debern ser mostrados por pantalla ordenados. Para ello se implementar una funcin a
la que se le pasarn dos nmeros X e Y , devolviendo en X el menor y en Y el mayor.
El pase de parmetros deber llevarse a cabo por referencia.
Ejercicio 4: Utilizacin de vectores.
Este ultimo ejercicio recoge aspectos de los anteriores, completndose con la utilizacin
de un tipo de dato del usuario.
Se declarar un tipo vector cuyos elementos sern del tipo Float. Sobre dicho vector se
declararan 4 operadores:
1. suma de Float y vector
2. suma de dos vectores
3. producto de Float y vector
4. producto de dos vectores.
La declaracin tendr un aspecto similar este.
PACKAGE Vectors IS
TYPE Vector IS ARRAY(Integer RANGE <>) OF Float;
Bounds_Error : EXCEPTION;
FUNCTION "+" (K : Float; Right : Vector) RETURN Vector;
-- Pre: K and Right are defined
-- Post: returns the sum of the vector and the scalar
-Result(i) := K + Right(i)
FUNCTION "*" (K : Float; Right : Vector) RETURN Vector;
-- Pre: K and Right are defined
-- Post: returns the product of the vector and the scalar
-Result(i) := K * Right(i)
FUNCTION "*" (Left, Right : Vector) RETURN Float;
-- Pre:
Left and Right are defined
-- Post:
returns the inner product of Left and Right
-- Raises: Bounds_Error if Left and Right have different
bounds
FUNCTION "+" (Left, Right : Vector) RETURN Vector;
-- Pre:
Left and Right are defined
-- Post:
returns the sum of Left and Right
-result(i) := Left(i) + Right(i)
-- Raises: Bounds_Error if Left and Right have different
bounds
END Vectors;

Esto es solo la declaracin del tipo definido por el usuario. El alumno deber
implementar las funciones definidas (comportamiento del tipo) as como un programa
que tomando vectores y Floats, lleve a cabo operaciones con los mismos.

EJERCICIOS A ENTREGAR
Ejercicio 1:
Implementar una funcin que determine si un nmero es primo. Dicha funcin se
utilizar en un programa que pedir nmeros para determinar si lo son, hasta que se
introduzca el 0.
Ejercicio 2:
Implementar un paquete con la abstraccin de nmero complejo, ofreciendo las
operaciones de suma, producto entre complejos y de un complejo con un real.
Ejemplificar la correccin del paquete implementado utilizndolo en un programa que
mediante un men de opciones de operaciones, despus de pedir los datos vuelque el
resultado de la operacin por pantalla.

Potrebbero piacerti anche