PRÀCTICA Nº 1: 1 sessió
(des de 6 de Març al 12 de Març de 1998)1. LES UNITATS DE TURBO PASCAL
Les unitats permeten en Turbo Pascal definir mòduls com subprogrames i dades que poden ser construïdes, compilades i modificades independentment de qualsevol programa que les utilitze. La manera de construir estos mòduls es pròpia del compilador Turbo Pascal de la empresa Borland i no es generalitzable a atres compiladors. En qualsevol cas, en tots els compiladors de Pascal existeix la possibilitat de definir de manera pareguda mòduls independents (consulteu en cada cas el manual del compilador).
L’arxiu amb el codi font de la unitat està composta per quatre parts diferenciades:
1) Capçalera:
UNIT nombre;
Nota: el nom donat a la unitat deu de coincidir amb el nom del arxiu que la conté (sense el '.pas').
2) Especificació d’objectes (constants, tipus, variables, procediments, funcions) que es defineixen i que podràn ser utilitzats pels programes que usen la unitat.
INTERFACE
definició de constants, tipus i variables
capçalera de procediments i funcions
3) Implementació de les rutines definides en INTERFACE i d’atres necessàries per al seu funcionament però que son privades al mòdul i no poden ser utilitzades des de programes externs. També es possible definir dades locals a la unitat.
IMPLEMENTATION
Dades, procediments y funcions
4) Secció de iniciació. S’enumeren les accions que es necessari realitzar per a iniciar correctament, si es precís, les dades que utilitze la unitat
BEGIN
accions
END.
Exemple de unitat:
UNIT Operacions;
INTERFACE
Function suma ( a,b: integer ) : integer;
Procedure resta ( a,b: integer; var r: integer );
IMPLEMENTATION
Function suma ( a,b: integer ) : integer;
begin
suma := a + b
end;
Procedure resta ( a,b: integer; var r: integer );
begin
r := a - b
end;
BEGIN
END.
Per a compilar una unitat i poder usar-la des de un atre programa, es necessari entrar en el menú d’opcions del compilador i indicar com a destí de la compilació el disc. D’esta manera, quant es compile correctament la unitat, es generarà un arxiu en disc anomenat igual que el nom utilitzat en la capçalera de la unitat i amb la extensió TPU, que contindrà el codi binari de la unitat. Una vegada creat l’arxiu TPU ja es pot utilitzar eixa unitat en qualsevol programa mitjançant la sentència USES nom al principi del programa.
2 UNITAT PER A L’ESPECIFICACIÓ DE L’ESTRUCTURA DE DADES "VECTOR"
Com a primera tasca en esta pràctica es demana escriure un mòdul en TP que especifique la representació en memòria i les operacions associades a l’estructura de dades Vector. Este mòdul es deu de dissenyar de la forma més general possible, de manera que siga fàcilment adaptable a qualsevol tipus d’aplicació. Per a facilitar el seu disseny, a continuació s’indica com deu de ser la seua estructura:
UNIT Vector;
INTERFACE
Const Tam_Max_Vector = .?. ;
{Grandària màxima del array que puga emmagatzemar la informació en el Vector}
Type Valor = .?. ;
{Especificar el tipus necessari per a la aplicació}
Indice_Vector = 1..Tam_Max_Vector;
Nivel_Ocupacion = 0.. Tam_Max_Vector;
Vector = Record
info : array [ Indice_Vector ] of Valor;
n : Nivel_Ocupacion;
End;
Procedure CREAR_VECTOR ( Var V: Vector );
{Inicia el vector a buit}
Function VACIO_VECTOR ( V: Vector ): Boolean;
{Torna True si el vector està buit. Si no torna False}
Procedure TAMANO_VECTOR ( V: Vector ): Nivel_Ocupacion;
{Ens diu quants elements ‘valids’ té el vector}
Procedure ALMACENAR_INFO (Var V: Vector; i: Indice_Vector; x: Valor );
{Emmagatzema en la posició ‘i’ del vector la informació ‘x’}
Procedure INSERTAR_FINAL (Var V: Vector; x: Valor );
{Emmagatzema la informació ‘x’ darrere de l’última posició ocupada del vector}
Function RECUPERAR_INFO ( V: Vector; i: Indice_Vector ): Valor;
{Torna el valor contingut en la posició ‘i’ del vector}
Procedure ELIMINAR_INFO ( Var V: Vector; i: Indice_Vector );
{Elimina el valor contingut en la posició ‘i’ del vector}
IMPLEMENTATION
{... Escriure ací el codi de les operacions anteriors ...}
Begin
End.
3. COMPROVACIÓ DE LA UNITAT
La segona tasca a realitzar consisteix en l’aplicació de la unitat anterior en la resolució de dos problemes: La criba de Eratóstenes i La eliminació d’elements repetits d’un vector.
Criba de Eratóstenes
Com a exemple d’utilització de l’estructura de dades Vector, es proposa escriure un programa que implemente el mètode d’obtenció de nombres primers proposat per Eratóstenes i conegut com la criba o garbell de Eratóstenes aplicada als ‘N’ primers nombres naturals.
El mètode consisteix, bàsicament, en la següent successió de passes:
1.- Demanar el nombre ‘N’ al usuari.
2.- Emmagatzemar els nombres que volem garbellar en un vector V_Original (des de 2 fins a ‘N’) i iniciar amb l’element ‘1’ (que es primer per definició) un segon vector V_Primos on emmagatzemarem els primers que anem obtenint.
3. Fer
a.- L’element situat en la posició u, ‘X’, del vector V_Original es primer
b.- Eliminar del vector V_Original tots aquells elements que siguen múltiples de ‘X’.
c.- Ficar ‘X’ en el vector d’elements primers V_Primos.
Mentre queden elements en el vector V_Original.
4.- Mostrar per pantalla els elements emmagatzemats en V_Primos.
Eliminació d’elements repetits d’un vector
El segon problema proposat es l’eliminació de tots els elements repetits que es troben en un vector de ‘M’ elements generat aleatòriament, utilitzant l’estructura vector i les funcions sobre vector implementades en la unitat.
Les tasques a realitzar en este segon programa son les següents:
1.- Demanar el valor ‘M’ al usuari.
2.- Generar un vector aleatori de ‘M’ elements, amb valors enters entre 0 i 50.
3.- Mostrar per pantalla els valors emmagatzemats en el vector,
4.- Recórrer el vector en la forma que cregues convenient fins eliminar tots els possibles elements repetits.
5.- Mostrar el vector resultant (vector original sense elements repetits) per pantalla.
En estos programes hi ha que tindre en compte que qualsevol procés de manipulació del vector es deu de realitzar a través de les operacions definides en la unitat anteriorment dissenyada, de forma que en el programa no apareix cap detall que indique com s’ha representat el vector. Les solucions que no complisquen este requisit seran considerades incorrectes.
LLIURAMENT DE PROGRAMES: Al finalitzar la sessió de pràctiques corresponent.