Está en la página 1de 6

75.

554 FP PEC3 20151 GEI/GTT Estudios de Informtica Multimedia y Telecomunicaciones

PEC3
Formato y fecha de entrega
La PEC se debe entregar antes del da 1 de Diciembre de 2015 a las 23:59.
Para la entrega se deber entregar un fichero en formato ZIP, que contenga:

Este fichero con las respuestas a los distintos ejercicios que se


plantean.

Un nico proyecto Codelite que contenga los ficheros .h y .c pedidos.


El main de este proyecto debe contener las llamadas a las pruebas
que se piden, de forma que se muestre el resultad de cada prueba.

La entrega se har en el apartado de entregas de EC del aula de teora.

Presentacin
En esta PEC trabajaremos tanto en lenguaje algortmico como con pequeos
programas. Se trabajar con tablas y con los tipos abstractos de datos.
Continuaremos trabajando con los tipos de datos estructurados y la
modularidad, tanto a nivel de acciones y funciones, como en la utilizacin de
varios ficheros de cdigo en Codelite.

Competencias
Transversales

Capacidad de comunicacin en lengua extranjera.

Especficas

Capacidad de disear y construir aplicaciones informticas mediante


tcnicas de desarrollo, integracin y re-utilizacin.

Conocimientos bsicos sobre el uso y la programacin de los


ordenadores, sistemas operativos, bases de datos y programas
informticos con aplicacin a la ingeniera.

75.554 FP PEC3 20151 GEI/GTT Estudios de Informtica Multimedia y Telecomunicaciones

Objetivos

Saber modularizar el cdigo utilizando acciones y funciones

Saber crear y utilizar archivos de cabecera

Saber definir y utilizar tablas

Saber definir y utilizar TADs

Saber definir pruebas para comprobar el correcto funcionamiento de


un cdigo.

Creacin de pequeos programas en C

Recursos
Para realizar esta actividad tenis a vuestra disposicin los siguientes
recursos:
Bsicos

Materiales en formato web de la asignatura de les 11 primeras


semanas

Laboratorio de C

Complementarios

Internet: La forma ms efectiva de encontrar informacin sobre


cualquier duda sobre C es la bsqueda a travs de un buscador.

Criterios de valoracin
Cada ejercicio lleva asociada la puntuacin sobre el total de la actividad. Se
valorar tanto la validez de las respuestas como su completitud.

En ejercicios en que se pide lenguaje algortmico, se debe respetar


el formato.

En el caso de ejercicios en lenguaje C, estos tienen que compilar


para ser evaluados. En tal caso, se valorar:
o

Que funcionen

Que se respeten los criterios de estilo

Que el cdigo est comentado

Que las estructures utilizadas sean las correctas

75.554 FP PEC3 20151 GEI/GTT Estudios de Informtica Multimedia y Telecomunicaciones

75.554 FP PEC3 20151 GEI/GTT Estudios de Informtica Multimedia y Telecomunicaciones

[50%] Ejercicio 1: Operaciones con tablas


A partir de la siguiente definicin de los tipos tDate y tPerson en lenguaje
algortmico y lenguaje C:
type
tDate: record
day: integer;
month: integer;
year: integer;
frecord
tPerson: record
name: string;
bDate: tDate;
frecord
ftype
#define MAX_NAME_LEN 125
typedef struct {
unsigned char day;
unsigned char month;
unsigned short year;
} tDate;
typedef struct {
char name[MAX_NAME_LEN];
tDate bDate;
} tPerson;
Define en lenguaje algortmico y en lenguaje C:
a) Una funcin datecmp que reciba dos variables del tipo tDate como
parmetro y devuelva un -1 en caso que la primera sea menor a la
segunda, un +1 en caso que la primera sea mayor a la segunda y un 0
en caso que sean iguales.
b) Una funcin personcmp que reciba dos variables del tipo tPerson
como parmetro y devuelva un -1 en caso que la primera sea menor a
la segunda, un +1 en caso que la primera sea mayor a la segunda y

75.554 FP PEC3 20151 GEI/GTT Estudios de Informtica Multimedia y Telecomunicaciones

un 0 en caso que sean iguales. Para ordenar dos personas


seguiremos los siguientes criterios:
a. Primero las personas ms jvenes (bDate sea mayor)
b. En caso de personas nacidas el mismo da, se ordenarn en
orden alfabtico por su nombre.
Nota: Tenis a vuestra disposicin el mtodo datecmp del
apartado anterior y el mtodo strcmp de la librera string.h.
c) Un tipo tPersonTable que defina una tabla de personas con una
capacidad de hasta 15 personas.
d) Una accin personTable_init para inicializar una tabla de personas.
e) Una accin personTable_sortedAdd que, dada una tabla de
personas y una nueva persona, aada la persona a la tabla de tal
forma que las personas queden ordenadas dentro de la tabla.
Nota: Para que queden ordenadas, se deber recorrer la tabla hasta
encontrar la posicin en la que se debe aadir la persona, desplazar el
resto de personas de la tabla para dejar un espacio vaco, y finalmente
copiar la informacin en la posicin correcta. Tenis a vuestra
disposicin el mtodo personcmp del apartado anterior.
f) (Slo en lenguaje C) Una accin testTable que implemente las
pruebas necesarias para comprobar que el cdigo implementado
funciona en los siguientes casos (se debe mostrar el resultado por
pantalla):
a. Aadimos una persona a una tabla vaca
b. Aadimos una persona a una tabla no vaca:
i. Esta nueva persona va al principio de la tabla
ii. Esta nueva persona va al final de la tabla
iii. Esta nueva persona va entre otras personas que la
tabla ya contiene.
c. Aadimos una persona a una tabla que ya contiene el nmero
mximo de personas que puede almacenar.
Nota: El cdigo en lenguaje C de este ejercicio debe estar en los ficheros
person.c y person.h. En el caso de los tests del apartado f, deben ir en los
ficheros tests.c y test.h. Aade una llamada al mtodo main a la accin
testTable.

75.554 FP PEC3 20151 GEI/GTT Estudios de Informtica Multimedia y Telecomunicaciones

[50%] Ejercicio 2: Tipos abstractos de datos


A partir de la definicin del tipo tPerson del ejercicio anterior, implementa en
lenguaje algortmico y en C:
a) Tipo de datos tPersonQueue que represente una cola de personas
con capacidad para 15 personas.
b) Una accin enqueue que dada una cola de persones y una nueva
persona, aada esta persona a la cola.
c) Una funcin dequeue que, dada una cola de personas, extraiga la
persona que toque de la cola, guardando su informacin en un
parmetro de salida. Esta funcin devolver un valor TRUE en caso
que haya personas a la cola, o un valor FALSE si la cola estaba vaca.
d) Una accin queuecpy que, dada una cola como parmetro de
entrada, la copie en una segunda cola pasada como parmetro de
salida. Los datos que hubiera en la cola de salida se pierden.
e) (Slo en lenguaje C) Una accin testQueue que implemente las
pruebas necesarias para comprobar que el cdigo implementado
funciona en los siguientes casos (se debe mostrar el resultado por
pantalla):
a. Aadimos una persona a una cola vaca.
b. Aadimos una persona a una cola que no est vaca
c. Extraemos una persona de una cola vaca
d. Extraemos una persona de una cola con ms de una persona
e. Extraemos una persona de una cola que contiene slo una
persona.
f.

Aadimos una persona a una cola que ya est al lmite de su


capacidad.

g. Copiamos una cola vaca a otra cola vaca.


h. Copiamos una cola vaca a otra cola que contiene elementos.
i.

Copiamos una cola con elementos a una cola vaca

j.

Copiamos una cola con elementos a una cola con elementos.

Nota: El cdigo en lenguaje C de este ejercicio se debe poner en los ficheros


queue.c y queue.h. El cdigo de los tests del apartado e, debe ir en los
ficheros tests.c y test.h. Aade una llamada en el mtodo main a la accin
testQueue.