Práctica 3B de Seminario de Lenguajes A

Anuncio
Práctica 3B de Seminario de Lenguajes A - Ada, comparación con Java y Delphi
Objetivo: Uso de estructuras compuestas, arreglos y registros. Aprender a declarar arreglos multidimensionales.
Aprender a declarar y usar arreglos irrestrictos con sus atributos.
Aprender a declarar y usar registros parametrizados (variantes y con discriminante.
Aprender el acceso de arreglos mediante slices.
Comparar con Java y Pascal.
1.
Declare un tipo matriz cuadrada de enteros de tamaño fijo e implemente las funciones “+” y “*”.
Resuelva el tipo de dos formas diferentes. Declare una constante llamada Zero donde todos sus
componentes son 0. Declare otra constante Ident que sea la matriz identidad, donde todos sus
elementos son 0, salvo los de su diagonal principal que son 1. Declare un a función Column que dada
una matriz y un valor entero retorna el correspondiente vector.
Optativo(s):
a)
¿ Cómo declararı́a matrices en Java y en Pascal ?
b)
¿ Cómo declararı́a constantes de tipos compuestos en Java y Pascal ?
c)
¿ Puede declarar constantes que se inicializan mediante funciones en los otros lenguajes ?
d)
¿ Tienen los otros lenguajes formas de aggregates similares a las de Ada ?
Sub-objetivo: Declaración y uso de arreglos multidimensionales. Overloading de operadores. Declaración de constantes usando others. Declaración de constantes mediante funciones. Aggregates de arreglos multidimensionales. Uso de slices.
2.
String variables:
a)
Definir usando registros variantes un tipo de dato String T de longitud variable y los procedimientos Get y Put para leer y mostrar el string respectivamente. Defina la función Set
de forma que recibe un String estándar y devuelve uno variable ( String T) conteniendo al
parámetro. ¿ Puede redefinir el “:=” ?.
b)
Utilizando el tipo definido implementar la función “&” (concat) que recibe dos strings de
longitud variable y retorna la concatenación de ellos.
c)
Realizar un programa que lea diez strings e imprima el resultado de concatenarlos.
Optativo(s):
a)
¿ Qué tipos Strings encuentra en Java y Pascal, Qué propiedades tienen ?
Sub-objetivo: Declaración, asignación y uso de registros variables. Declaración y uso de arreglos
irrestrictos. Slices.
3.
La información de los empleados de una empresa se organiza de la siguiente forma:
Nombre
Categorı́a (puede ser profesional, técnico o personal temporario)
Si es profesional, se tiene:
• N ◦ de profesional
• Universidad en la que se recibió
Si es técnico se tiene:
1
• Matrı́cula de técnico
• Antigüedad
• Area (puede ser reparaciones, o administrativo)
Sueldo
a)
Se debe leer una secuencia de empleados que termina al leer un empleado con nombre “”
(vacı́o) e informar la cantidad de empleados que son profesionales recibidos en la UNLP, la
cantidad de técnicos con más de 3 años de antigüedad y el monto total que debe pagar la
empresa en sueldos expresado en dólares.
Nota: Resuelva reusando los tipos definidos en ejercicios anteriores.
Optativo(s):
a)
¿ Cómo resuelve Java y Pascal los tipos con estructura variable ?
b)
Mencione las diferencias entre los registros con discriminante de Pascal y los de Ada ?
Sub-objetivo: Declaración, asignación y uso de registros con discriminante. Declaración de tipos
enumerativos definidos por el usuario. Reusabilidad.
4.
Realizar una función que reciba dos vectores A y B de enteros de igual dimensión y retorne el
producto escalar de ambos vectores. La longitud de los vectores no es conocida.
Nota: el producto escalar entre vectores se define como:
p=
n
X
ai ∗ b i
i=1
Optativo(s):
a)
¿ Cómo se puede implementar en Pascal funciones que puedan trabajar sobre arreglos de
dimensiones variables ?
Sub-objetivo: Declaración y uso de arreglos irrestrictos. Uso de atributos de arreglos.
5.
Realizar una función que reciba dos vectores A y B de enteros y retorne un vector C que contenga
el resultado de la suma de A y B. Si los vectores fueran de diferente longitudes, cómo lo resolverı́a?.
Nota: la suma entre vectores se define como un nuevo vector donde cada componente es :
ci = a i + b i
Sub-objetivo: Declaración y uso de arreglos irrestrictos. Uso de atributos de arreglos. Parámetros
y valores de retorno de tipo arreglo.
6.
Realizar una función que reciba dos vectores A y B de caracteres y retorne un vector C (de enteros)
que contenga las ocurrencias de cada elemento A(i) en B. Los vectores A y B no necesariamente
son del mismo tamaño y su longitud no se conoce. No importa si existen elementos repetidos en A.
Sub-objetivo: Declaración y uso de arreglos irrestrictos. Uso de atributos de arreglos. Declaración
de variables arreglos resueltas en tiempo de invocación. Parámetros y valores de retorno de
tipo arreglo.
2
7.
Realizar una función que reciba dos vectores A y B de enteros, y retorne un tercer vector C de
dimensión 10 que contenga en forma ordenada 10 pares ordenados donde cada par (x, y) es: x el
elemento de A e y la cantidad de veces que ocurre en B. Los 10 elementos deben estar ordenados
de acurerdo a la componente y. Los vectores A y B no necesariamente son del mismo tamaño y su
longitud no se conoce. Como resuelve el hecho de que A tenga menos de 10 elementos?.
Sub-objetivo: Declaración y uso de arreglos irrestrictos. Uso de atributos de arreglos. Arreglos
de registros. Parámetros y valores de retorno de tipo arreglo.
8.
Idem al anterior pero en lugar de 10 ocurrencias que sean N (parámetro de la función).
Sub-objetivo: Declaración y uso de arreglos irrestrictos. Uso de atributos de arreglos. Declaración
de variables arreglos resueltas en tiempo de invocación. Parámetros y valores de retorno de
tipo arreglo.
9.
a)
Redefina el tipo del ejercicio 1 (uno) como matriz rectangular irrestricta.
b)
Defina un nuevo tipo basado en el anterior como matriz cuadrada de 20x20.
c)
Redefina el tipo del ejercicio 1 (uno) como matriz rectangular parametrizada (Es decir la
cantidad de filas y de columnas son parámetros de un registro).
Redefinir solo el “+”.
Sub-objetivo: Arreglos multidimensionales irrestrictos. Tipos derivados de tipos compuestos. Registros varaintes con más de un parámetro. Uso de slices.
10.
a)
Defina el tipo Persona_T con su correspondiente Get y Put. Una persona es:
Nombre
Sexo (masculino o femenino)
Si es masculino:
• Trabajo
Si es femenino:
• Edad
• Padre (que es otra persona).
Edad de cada hijo a cargo (parametrizable la cantidad de hijos).
b)
Declare un nuevo tipo “hombre sin hijos” basado en Persona_T.
c)
Declare un subtipo “mujer con 3 hijos” basado en Persona_T.
Optativo(s):
a)
¿ Cómo lo resolverı́a en un lenguaje OO como Java ?
Sub-objetivo: Registros con discriminante con más de un parámetro y de diferentes tipos. Declaración de tipos nuevos en base a tipos compuestos. Necesidad de utilizar punteros (Se ven en
la próxima práctica).
3
Descargar