Posteado por: albalba | Abril 17, 2008

Práctica 7 (Episodio I)

QUÉ HORROR, QUÉ HORROR!! La práctica 7 la peor práctica de todas las que hemos hecho en OCA. Por lo menos en la práctica 5, a fuerza de dar la plasta, algo avanzamos, pero esta vez HA SIDO UN CAOS!!!!!!!!!!!!!!!!!

Cuando leímos la práctica nos dimos cuenta de que lo que pedían en realidad era realizar una cola utilizando vectores, en lugar de usar arrays estáticos (los cuales tienen una tamaño fijo) habría que usar vectores dinámicos (no tienen un tamaño fijo, sino variable), o eso creímos en un principio.

Si la finalidad era implementar una cola no podían faltar un constructor vacío (siempre recomendable), un método encolar, un desencolar y un estaVacio, como mínimo esto era necesario seguro.

Después, ante las caras perplejas de toda la clase, se comenzó a explicar en clase el por qué de los vectores. Respecto a un array, aprovechas mejor la memoria, no desaprovechas espacio como puede ocurrir con el array. Si te creas un array de una determinada longitud y después tan solo aprovechas la mitad, queda desperdiciada la otra mitad. Eso es lo que no ocurrirá con los vectores.

Para dejarlo más claro, se nos explicó el concepto de complejidad, es decir, lo que tardas en realizar una determinada operación. Nos pareció una flipada esto. Lo entendimos pero tras un poco de esfuerzo. Si miramos, por ejemplo, un método que extraiga un elemento de la primera posición de la cola, el tiempo que se tarda en realizar la operación sería aproximadamente k+nt, siendo t el tiempo que tardará un elemento en extraerse de la cola; n, el número de elementos y puede ser tan grande como queramos ya que estamos en un vector. También n tiene que ser menor o igual al tiempo máximo limitado en realizarse con un array estático. Y k es una constante que representa el resto del tiempo que no se ha tenido en cuanta, otras operaciones que se realizan para hallar ese tiempo total.

Teniendo en cuenta que tenemos una variable índice, imaginar una flechita que señala la posición en la que estamos situados, si hacemos que ese índice apunte a la posición 1 de la cola (hemos movido una posición a la derecha y hemos colocado como primera posición del array la posición 1), el tiempo aproximado en realizar la operación será c, un tiempo que tiene la misma finalidad de k, pero obviamente son diferentes. Si no tengo un valor último, hay que recorrer el array, por lo que el tiempo que gasta el método sería de nuevo k+nt.

En fin, que cogimos el código de la práctica anterior e intentarnos ponernos manos a la obra, pero éramos peor que Manolo y Benito en manos a la obra, todo lo que hacíamos estaba mal. Primero decidimos usar la clase vector. Observamos esta clase en el API implementando los métodos que en él se describían. Pero vimos que nuestros compañeros intentaban solucionar la clase cola con la clase Queue, así que fuimos al API a echarle un vistazo. No nos convenció la utilización de ésta, preferimos la clase Vector. Cada vez que intentábamos implementar cualquiera de los métodos que hemos dicho antes que deberíamos tener, no sabíamos ni por donde pillarlo. No paramos de darle vueltas y vueltas al asunto. Sentíamos que rodábamos como peonzas en nuestras sillas aunque en realidad estábamos parados frente al ordenador. Fue como montarse en una atracción del parque de atracciones, el topspin, la máquina, o similares.

Pero de repente, Alberto comentó que nadie iba por buen camino, no había que utilizar ni las clases implementadas ya como Queue, Vector, List, ni arrays claro. De hecho no era necesario mirar el API en toda la práctica.

Entonces mi compi y yo nos miramos y casi nos ponemos a gritar: “ENTONCES COMO, SINO PODEMOS USAR LAS HERRAMIENTAS QUE TENEMOS HAY QUE HACER TODO AL MODO DE SIEMPRE, ESCRIBIR COMO UN DESQUICIADO.”

Pues como desquiciados nos pusimos a escribir. Pensamos que como atributos, en nuestra clase a la que llamamos contenedor, debía haber como mínimo un objeto pieza y un objeto contenedor. Empezamos a escribir, escribir,… no sabíamos ni que poner. ¿cómo hacer un array dinámico sacándolo de la nada? Sin ayuda de ninguna clase!! De verdad que no pudimos más. Nos tiramos dos horas frente a una caja cuadra’ que hacía ruido o por más que le decíamos: “oye, nosotros sabemos que tu lo sabes… dínoslo o te rompemos los circuitos”, la cosa ni se inmutó. Como era de esperar el “jodio” ordena no nos contestó.

Tras poner nuestro canal satélite, también denominado oreja oyelotodo, en atención, oímos como el profesor ya desveló, que lo que teníamos que implementar para ello era una clase enlazada. Así que cogimos los apuntes en los que se recogía la información sobre la susodicha que era la luz para llegar al camino.

Pero para cuando quisimos escribir en el ordena la clase nodo, ya era la hora de irse, demasiado tarde.

Por lo que hemos hablado con los compañeros, nadie con los que hablamos, consiguió hacer nada mínimamente en condiciones.

Qué decepcionados salimos. Pero haber si ahora intentando en casita con la lista enlazada todo sale. Esperemos que sí.

Hasta pronto!!


Dejar una respuesta

Su respuesta:

Categorías