preguntas a a ed

4
1.- ¿Que es la abstracción? Tipos de abstracción. 1. Destacar los detalles más relevantes del objeto en estudio. 2. Ignorar los detalles irrelevantes del objeto ( en ese nivel de abstracción). 1. La abstracción operacional: Se basa en el uso de procedimientos y/o funciones sin preocuparnos de cómo están implementadas. Se destaca que hace y se ignora como se hace. 2. La abstracción de datos: es la técnica de programación que permite inventar o definir nuevos tipos de datos adecuados a la aplicación que se desea realizar. 3.- ¿Existe alguna relación entre la ocultación de información y la independencia de la información? Si, ya que gracias a la ocultación de la información conseguimos que sea independiente su especificación de su implementación. 6.- ¿Cuándo utilizaremos una representación pesudoestática de un TAD Pila? Cuando sea conveniente emplear pilas de diferentes tamaños en un programa. En esta representación el tamaño máximo de una pila no es el mismo para todas las pilas y se fijará en tiempo de ejecución en el momento de crearla, es decir, se preguntará al usuario el tamaño de la pila que en ese momento vaya a crear. Pero este tamaño será fijo durante todo el tiempo de la pila. 7.- ¿Cuándo utilizaremos una representación dinámica de un TAD pila? Cuando no sabemos de antemano el número de elementos que podría tener una pila, es decir, cuando el tamaño de las pilas creadas en nuestra aplicación sea variable con lo cual se incrementará ó decrementará su tamaño conforme sea necesario en tiempo de ejecución. 8.- ¿En qué caso utilizaremos una representación estática de un TAD pila? Cuando el tamaño de todas las pilas que necesitemos en nuestra aplicación sea el mismo. La representación estática requiere saber el tamaño máximo en tiempo de compilación (de antemano sabremos la cantidad de elementos que van a tener las pilas empleadas en dicha aplicación). 9.- ¿Por qué en la representación dinámica de un TAD pila se representa la pila como un puntero a las estructuras de datos diseñadas? La razón de introducir un puntero es hacer que el paso de parámetros a las operaciones del TAD sea por referencia, de modo que los cambios en los parámetros formales sean reflejados en los parámetros reales. 10.- ¿Porqué en la representación estática y pseudoestática de un TAD pila, el registro que representa la pila se pasa por referencia sin ser necesario? Esto es debido al principio de independencia de la representación. Una forma de hacerlo es definir un puntero a las estructuras de datos diseñadas. Así se obtienen 2 ventajas: 1. El paso por referencia queda oculto a la implementación del TAD y es transparente para el usuario del mismo. 2. Se ahorra la memoria de los datos que se duplican mientras que se ejecuta una función debido a que, cuando se ejecuta la llamada a una función, la transferencia de parámetros se hace siempre por valor, lo cual provoca que los parámetros reales se copien en los formales.

Upload: raul-gutierrez

Post on 13-Dec-2015

219 views

Category:

Documents


2 download

DESCRIPTION

Preguntas a a Ed

TRANSCRIPT

Page 1: Preguntas a a Ed

1.- ¿Que es la abstracción? Tipos de abstracción.

1. Destacar los detalles más relevantes del objeto en estudio.

2. Ignorar los detalles irrelevantes del objeto ( en ese nivel de abstracción).

1. La abstracción operacional: Se basa en el uso de procedimientos y/o funciones sin preocuparnos de

cómo están implementadas. Se destaca que hace y se ignora como se hace.

2. La abstracción de datos: es la técnica de programación que permite inventar o definir nuevos tipos de

datos adecuados a la aplicación que se desea realizar.

3.- ¿Existe alguna relación entre la ocultación de información y la independencia

de la información?

Si, ya que gracias a la ocultación de la información conseguimos que sea independiente su especificación

de su implementación.

6.- ¿Cuándo utilizaremos una representación pesudoestática de un TAD Pila?

Cuando sea conveniente emplear pilas de diferentes tamaños en un programa. En esta representación el

tamaño máximo de una pila no es el mismo para todas las pilas y se fijará en tiempo de ejecución en el

momento de crearla, es decir, se preguntará al usuario el tamaño de la pila que en ese momento vaya a

crear. Pero este tamaño será fijo durante todo el tiempo de la pila.

7.- ¿Cuándo utilizaremos una representación dinámica de un TAD pila?

Cuando no sabemos de antemano el número de elementos que podría tener una pila, es decir, cuando el

tamaño de las pilas creadas en nuestra aplicación sea variable con lo cual se incrementará ó decrementará

su tamaño conforme sea necesario en tiempo de ejecución.

8.- ¿En qué caso utilizaremos una representación estática de un TAD pila?

Cuando el tamaño de todas las pilas que necesitemos en nuestra aplicación sea el mismo. La

representación estática requiere saber el tamaño máximo en tiempo de compilación (de antemano

sabremos la cantidad de elementos que van a tener las pilas empleadas en dicha aplicación).

9.- ¿Por qué en la representación dinámica de un TAD pila se representa la pila como un puntero a

las estructuras de datos diseñadas?

La razón de introducir un puntero es hacer que el paso de parámetros a las operaciones del TAD sea por

referencia, de modo que los cambios en los parámetros formales sean reflejados en los parámetros reales.

10.- ¿Porqué en la representación estática y pseudoestática de un TAD pila, el registro que

representa la pila se pasa por referencia sin ser necesario?

Esto es debido al principio de independencia de la representación. Una forma de hacerlo es definir un

puntero a las estructuras de datos diseñadas. Así se obtienen 2 ventajas:

1. El paso por referencia queda oculto a la implementación del TAD y es transparente para el usuario del

mismo.

2. Se ahorra la memoria de los datos que se duplican mientras que se ejecuta una función debido a que,

cuando se ejecuta la llamada a una función, la transferencia de parámetros se hace siempre por valor, lo

cual provoca que los parámetros reales se copien en los formales.

Page 2: Preguntas a a Ed

Al definir el tipo pila como un puntero al registro que representa a la pila, solo se hace una copia de este

puntero y no del registro completo.

12.- ¿Tiene algún sentido representar una pila con una lista doblemente enlazada? ¿Por qué?

No, ya que una lista doblemente enlazada requiere un doble puntero, uno para el elemento siguiente y

otro para el anterior. Esto es un gasto innecesario ya que en la pila solo insertamos o eliminamos por el

Tope. Por lo tanto, con un sólo puntero es suficiente.

Además en una pila no tenemos el concepto de posición, ya que solo podemos insertar por la cima y

eliminar por la misma, mientras que en la lista podemos hacer una inserción ó eliminación en cualquier

posición mientras que , como dijimos antes, en la pila sólo podemos por el tope, ya que es una condición

necesaria del TAD pila.

13.- ¿Y en una representación pseudoestática?

Ventajas: Relativo a la pila estática, la pila pseudoestática nos permite fijar distintos tamaños para las pilas

de la aplicación en tiempo de ejecución por lo que un tamaño inicial no determinará el tamaño de todas

las pilas. Ocupa menos espacio que la implementación del TAD pila mediante celdas enlazadas ya que no

requiere un puntero por elemento.

Inconvenientes: Tamaño constante durante la vida de cada pila, tamaño que tenemos que ir controlando

para no sobrepasarlo.

14.- ¿Cuándo utilizaremos la representación circular del TAD pila?

Tal y como se define el TAD pila, una pila es una secuencia de elementos de un tipo determinado, en la

cual se puede añadir y eliminar elementos sólo por uno de sus extremos llamado tope o cima, por lo tanto,

carecería de sentido utilizar un puntero que se utilizara para apuntar a la base de la pila (primer elemento

que se introduciría en ella). En cualquier caso, ese TAD lo utilizaríamos para obtener el elemento base de la

pila, pero por otra parte, tendríamos que cambiar operaciones del TAD pila como la función FIN(habría que

reimplementarla)..

15.- ¿Para qué se utiliza el nodo cabecera en el TAD Cola, en su implementación con celdas

enlazadas? (TRAMPA)

El nodo cabecera no se utiliza en el TAD cola, es innecesario dado que ésta surge para resolver un

problema de independencia de la representación en el TAD lista, cuando definimos la posición en una lista.

16.-¿Por qué surge el nodo cabecera en las listas?

Cuando implementamos la lista con celdas enlazadas, se nos plantea un problema de independencia de la

representación en lo que se referencia a la utilización de tipo de dato posición.

Por ejemplo, en la operación Insertar del TAD Lista, cuando vamos a insertar en la posición “p”, el elemento

que ocupa dicha posición (si lo hubiera) pasaría a ser la posición “p+1” y el nuevo elemento que vamos a

insertar, obviamente, ocuparía la posición “p”. Ocurre un problema y es que, además de hacer esta

operación, la posición apuntaría al elemento que ocupa la posición “p+1” y esto no debe ser así, es decir,

debería de apuntar a la posición insertada , a la posición “p”. Por esta razón, se debe de modificar dicho

puntero para que apunte donde debería de apuntar y se pasaría en la cabecera de la función como

“posición *p”, y no estaríamos cumpliendo con la especificación del TAD lista.Para arreglar este problema,

hacemos que cada elemento de la lista se referencie mediante su nodo anterior, con lo que acarrea el

problema de que, el primer elemento no tenga anterior, luego se crea el nodo cabecera y, en

consecuencia, también respetaríamos la especificación del TAD lista.

Page 3: Preguntas a a Ed

21.- ¿Qué es la especificación semántica?

La especificación semántica van a ser una serie de pautas las cuales van a expresar el significado de cada

una de las operaciones de un TAD.Se puede expresar mediante precondiciones y postcondiciones, es decir,

bajo el cumplimiento de las precondiciones, se puede realizar la operación y después de la ejecución de las

misma, se deben cumplir las postcondiciones.

22.- ¿Qué es la especificación sintáctica?

Se refiere a la definición formal del conjunto de métodos ó procedimientos válidos capaces de acceder de

manera única a los elementos de datos o estructura de datos del tipo de dato abstracto.

25.- Respetando el TAD Lista mediante un vector ¿es posible evitar el coste

O[[n]] para inserciones y borrados en los extremos?

Si en los extremos, podría evitarse añadiendo a la estructura dos campos enteros indicando dónde están

los extremos e inicializarlo a n/2 y (n/2+1) por ejemplo. A medida que se van insertando y borrando, se

actualizan los valores de los extremos. Por ejemplo si quiero insertar al principio de la lista haría:

V[extremoDerecho]=Elemento;

extremoDerecho=extremoDerecho-1;

En todas las operaciones la lista estaría comprendida entre extremoDerecho y extremoIzquierdo y habría

que controlar sus valores. Así para insertar en la posición 3 de la lista sería en extremoDerecho+3, siempre

y cuando este valor esté en los límites adecuados.

28.- Condición que tiene que tener una lista para que la búsqueda sea logarítmica?

¿Cómo vas a hacer en una lista que es una estructura secuencial, una búsqueda logarítmica?. No se puede.

Ya que la inserción no tiene por qué ordenarse además, para poder hacerlo de forma vectorial, el vector no

va a estar lleno porque son las operaciones que están implementadas.

32.- ¿Cómo se podría eliminar un elemento cualquiera de una cola/pila?

No se puede, en la cola se introduce por un extremo y se saca por el otro, en una pila se introduce y se

saca por el mismo extremo.

33.- ¿Por qué es necesaria la función igual en listas?

Para buscar la posición de un elemento compara los elementos, puede ser el tipo del elemento sea tipo

estructurado y no se puedan comparar elementos con el operador ==.

35.- Principio fundamental de los TAD: independencia de la representación.

Independientemente de cómo se represente el TAD, la especificación no cambia. Por ello un usuario puede

usar un TAD sin importarle como está implementado o bien si la implementación cambia no afecta a la

especificación.

36.- ¿Por qué hace falta un doble puntero en la definición del tipo listas?

Porque si se inserta el primer elemento cuando la lista está vacía no se modificaría. Además de ésta forma

se respeta la especificación.

Page 4: Preguntas a a Ed

37.- Ante la posibilidad de que no se verifiquen las precondiciones de una operación de un TAD, que

decisiones de diseño puede implementar la operación?

Lo ideal sería que diese un error. Dependiendo de la gravedad que puede derivar el error al resto de la

aplicación, recomendaría que si fuese alto, daría por concluida la continuidad de la aplicación y terminaría

inminentemente con su ejecución.