Archive for 22 abril 2008

Monday Trip

Esta mañana me levanté a las seis menos cuarto para viajar a Lincoln, por lo menos esta vez prendieron el alumbrado público de la calle Belgrano. En la ida pasé parte del viaje dormitando y parte tratando de descifrar que estaba escuchando la tipa que se sentó al lado mio. Creo que era una canción de Los Piojos, qué mal.
De vuelta estuve la mayor parte del tiempo intentando de controlar mi respiración para tranquilizarme un poco, pero fue inútil.
Pasé una parte considerable de la tarde repasando para el parcial de Estructuras, en el que estoy condenado a fracasar.
Hoy no fue la gran cosa. Eso no quiere decir que muchos de los días anteriores lo hayan sido.

Anuncios

L’Automne

De un día para el otro, como quien no quiere la cosa, el Viernes el otoño se nos cayó encima.
Cursé a la mañana, y lo más notable que pasó fue que me bluetoothearon la foto del perro japonés que está en el camino a la universidad (muchas gracias ^-^).

The bear-lion dog

The bear-lion dog

A la tarde temprano tuve Metodologías, y por suerte salí pudiendo hacer más de lo esperado. Estaba por tomar el camino a casa cuando me dije: “esperá… ya empezó el otoño, mañana es sábado y no curso”, entonces cambié de dirección y empecé a caminar por lo que supongo que fueron 45 minutos, viendo como la gente, los animales, las plantas y las cosas se adaptaban al cambio.

Más tarde llegaron a casa Gabriel y Martín, pero no los pude atender mucho porque tenía que seguir con Smalltalk :(

Recursividad(n-1)

La clase de hoy de Estructuras estuvo más entretenida que de costumbre. ¿Cambios radicales en la materia? No. es que el tema de hoy fue recursividad, recursión o como le digan (si es que le dicen de alguna manera), ¿Y que puede haber de no-divertido en funciones que se llaman a si mismas?

Es natural tenerle miedo a las funciones recursivas antes de conocerlas, uno piensa “¿Cómo? ¡si se llama a si misma nunca termina!, ¡se nos llega a meter una de esas malditas cosas en ‘el sistema’ y lo deja caido para siempre!¡va a haber saqueos, muerte y destrucción por doquier!”.
Pero a tranquilizarse, eso no pasa, a menos que los programadores no sepan nada de esta técnica. En ese caso recomiendo comprarse un búnker nuclear, aunque teniendo en cuenta el elevado precio que han adquirido estos refugios gracias a la inflación, mejor consideremos las siguientes alternativas:

1) Eliminar las computadoras de la faz de la Tierra.
2) Acordarse las tres reglas fundamentales e indiscutibles de la recursividad.

Dado que la primera opción implica un futuro en el que no tengo trabajo, mejor elijamos la segunda.

Reglas fundamentales, absolutas, inalienables e indiscutibles de la recursión

  1. Saber cuándo parar: esta regla es aplicable a muchas esferas de la vida, pero en funciones recursivas es muy importante. Si no se especifica una condición de terminación (o como me enteré hoy que le decían, caso degenerado), la función puede entrar en una recursión infinita, cosa que muy probablemente desatará las tragedias anteriormente mencionadas.
  2. Saber cómo dar el paso: sí, en la vida es muy difícil dar el gran paso, pero en las funciones recursivas no es la gran cosa. Se refiere a obtener, devolver o modificar algún valor, que es parte de la solución del problema. (se va a ver más claro en el ejemplo)
  3. Reducir: no hay demasiado misterio en esta regla. La función se llama a sí misma enviándose una entrada menor a la que recibió. Ojalá fuera tan fácil reducir los problemas de uno.

ej1. La ultraquemada sumatoria (ej. Sumatoria de 5 = 1 + 2 + 3 + 4 + 5)

C#:
public int Sumatoria(int n)
{
//Caso degeneradísimo
if (n == 1)
return 1;
else
//Paso adelante y reducción.
return n + Sumatoria(n – 1);
}

Sigamos el caso de 4 (ya tengo las manos cansadas):
Sumatoria(4) = 4 + Sumatoria(3)
Sumatoria(3) = 3 + Sumatoria(2)
Sumatoria(2) = 2 + Sumatoria(1)
Sumatoria(1) = 1

Si reemplazamos cada llamada a la función por el valor que devolvió, obtenemos 10. ¡Voilá!

ej2. Decidir si un elemento es miembro de una lista. (no es a propósito lo del nombre de la función, me acabo de dar cuenta)

Lisp:
(defun mi-miembro (x lista)
(cond
((null lista) nil)
((equal x (first lista)) T)
(T (mi-miembro (rest lista)))
)
)


Como diría algún profesor que ya no tiene ganas de explicar: identificar las tres reglas en el ejemplo anterior queda de ejercicio.

Por hoy me voy despidiendo, pero antes quería aclarar que estos son solamente algunos de los tipos de funciones recursivas, ¡todavía quedan muchas con las cuales divertirse! ;)

Semijueves

Hoy tuvimos la clase post-introductoria (todavía le falta un poquito para ser la primera clase) de Comunicación de Datos, que si bien no fue tan interactiva como la anterior, me dejó conforme, especialmente porque mientras explicaba que todas las funciones que se usan para representar la corriente alterna derivan de la función seno, el profesor miró para adelante y preguntó casi inocentemente “¿Qué onda?”. Por otro lado, me di cuenta que me quedé muy dormido en cuanto a conocimientos de circuitos eléctricos, shame on me.
Sin haber comido casi nada, tuve una hora y cincuenta minutos de Estructuras de Datos, donde pasé la mayor parte del tiempo tratando vanamente de hacer funcionar el maldito linker del maldito lenguaje Pascal. Todo bien con Pascal, muchas gracias por la pascalina, pero la verdad que donar el nombre a tan horroroso lenguaje, no sé… me decepcionaste Blaise.

The very first one

Es Martes, un Martes bastante feo, me desperté bastante ofuscado y pensando en todas las cosas que tenía que hacer (tanto en las cosas que tengo que hacer por obligación como en las que tengo que hacer por gusto). Caminé las largas cuadras habituales hasta la universidad, sin prestar demasiada atención a nada, salvo a las cosas que quedan por hacer.
Cursé, sin pena ni gloria, escuché un poco, escribí otro poco y divagué otro gran poco, y en esa divagación se me ocurrió lo del blog. Miré desde distintos lados la idea en el camino de vuelta, pasando entre la gente, ocupada en sus cosas que no me involucran (salvo por una mujer en una bicicleta, que escupió al piso, y yo la vi, y ella vio que yo la había visto, y al saber que ella había visto que yo la vi, no pude evitar sonreirme, y creo que ella me vio), y cuando llegué acá lo hice.
¿De qué voy a hablar? Creo que ni yo lo sé del todo. Hopes? not too many left, but I know there’s some concealed thing that keeps me moving.