Sobre criterios a la hora de especificar TADs

Sobre criterios a la hora de especificar TADs

de Tomas Pasacual Sexenian Lopez -
Número de respuestas: 1

Buenas, 

Haciendo un par de parciales y exámenes viejos vi que en la mayoría de ejercicios de especificación de TADs se elige especificarlos de la forma void NombreFuncion(...) antes de que la forma TipoDato NombreFuncion(...), osea se elige especificarlos como procedimientos y no como funciones. También note que las especificaciones a veces difieren para las mismas operaciones, por ejemplo, hablando del TAD cola en algunas especificaciones de desencolar se pone como pre-condición que la cola no este vacía mientras que en otras se aclara que si la cola esta vacía la operación no tiene efecto.

Es una forma mas correcta que las otra? O es solo tema de criterios? Por las tareas estoy acostumbrado a plantearlo como funciones pero en evaluaciones y prácticos las resoluciones están casi siempre como procedimientos 

En respuesta a Tomas Pasacual Sexenian Lopez

Re: Sobre criterios a la hora de especificar TADs

de Sofia Tito Virgilio Rodriguez -

Hola Tomas,

No hay una forma más correcta que la otra, pero si hubiera que tomar una convención a la hora de especificar TADs sobre qué operaciones definir como procedimientos y qué operaciones definir como funciones, podría ser la siguiente: 

Si la operación modifica la estructura (constructoras/destructoras) se recomienda definirla como un procedimiento que reciba la estructura por referencia.

Si la operación no modifica la estructura (selectoras/predicados) se recomienda definirla como una función que retorna algo del tipo correspondiente.

Aunque esto no sea lo que se hace en las tareas del laboratorio.

En cuanto a las diferentes pre-condiciones, es común verse frente a esa decisión de exigir algo como precondición o permitir que no se cumpla y especificar qué sucedería si no se cumple. Esto dependerá del propósito que tengamos en mente al definir la especificación del TAD, por lo que a priori tampoco habría una más correcta que otra.

Un error podría ser no exigir que la cola no esté vacía como pre-condición, y tampoco especificar qué ocurre cuando se invoca a esa operación con una cola vacía, porque esto podría dar como resultado una especificación ambigua.

Espero haber aclarado tu duda, cualquier cosa volvé a consultar.

¡Saludos!