miércoles, 9 de enero de 2008

Diseño, Imaginación y Realidad

La Imaginación y la Realidad

El diseño, ya sea que se trate de objetos funcionales, modelos operativos o procesos informáticos (incluyendo desde procesos de control en tiempo real hasta juegos de video), se nutre de la imaginación. Sin imaginación, no hay objeto, no hay modelo y no hay software.

Sin embargo, hay una enorme diferencia entre la imaginación pura, tal como se presenta en la poesía o incluso en la novela (sin dejar de reconocer que aún en estas artes aparecen restricciones formales como el lenguaje, los símbolos, la cultura, etcétera) y aquella imaginación que puede plasmarse en términos de una realidad tangible, ya sea como objeto material, formal o lógico.

Una de las dificultades radica en las limitaciones que impone “la realidad” en cuanto a leyes físicas, tiempos tecnológicos, recursos materiales y demás cuestiones. Estas restricciones que se imponen sobre el diseñador, implican un marco limitante de la discrecionalidad que puede ejercer. En alguna medida tendrá que encajar, literalmente meter en una caja la nube imaginativa de su proyecto.

Tal vez los más creativos a la hora de experimentar sus nubes imaginativas en el mundo real hayan sido los físicos, desde la mítica manzana de Newton hasta el logro de la fisión nuclear son espectaculares muestras de imaginación aplicada. En el caso de la informática, la restricción la impone el modelo computacional disponible que, a su vez, depende de los recursos económicos y humanos.

Para los alumnos, es muy útil experimentar las ideas con distintas plataformas y, de este modo, explorar los límites, tanto propios como de las plataformas en cuestión. Como me gusta ejemplificar estas cosas, vamos a realizar un sencillo ejemplo en una plataforma muy amigable y fácil de usar como es el Excel.

Reloj Analógico



Fig. 1 Relój Analógico implementado en un gráfico Excel

Ventajas

Entre las ventajas que nos ofrece Excel, está la ubicuidad y la facilidad de uso. Hay millones de PC en el mundo que disponen de este producto y millones de usuarios que saben como utilizarlo.

La representación gráfica del reloj también es fácil de lograr con el uso de los gráficos que provee y que no requieren esfuerzos por parte del usuario. Asimismo, la relación entre el gráfico y la hoja con los datos es directa y no requiere de ningún tipo de “programación”.

Los cálculos también presentan una gran ventaja ya que no requieren de “programación” sino que, simplemente, se agregan fórmulas en las celdas de la hoja Excel.

Desventajas

Una de las restricciones que presenta el Excel es que no dispone de un control Timer como el que disponen los formularios de Access, las plataformas de Visual Studio y otras. En lugar de la versatilidad del control Timer, podemos utilizar la función Time() de Visual Basic.

Manos a la obra

El primer paso consiste en armar la hoja con los datos y las fórmulas.

En el rango A3:A14 ponemos los grados en grupos de 30° que cubren los 360° (0° coincide con 360°).



Fig. 2 Tabla con datos y fórmulas para el Reloj Analógico

En la columna B solamente vamos a determinar la posición del círculo con respecto al eje x, para ello emplearemos la función (correspondiente a B3): =SENO(RADIANES(A3))

Nota: la función Radianes() convierte del sistema exadecimal a arco o radianes que es el sistema que entiende Excel.

En la columna C solamente vamos a convertir la posición del círculo con respecto al eje y, para ello emplearemos la función (correspondiente a C3): =COS(RADIANES(A3))

Estas dos columnas (B y C) se emplean para ubicar los diamantes en forma circular y equidistante y dar la idea de un dial de reloj.

Corresponden a la serie de datos:

=SERIES(;Reloj!$B$3:$B$14;Reloj!$C$3:$C$14;1)

En la columna D ponemos valores del 1 al 12 para usarlos en las etiquetas del gráfico

Los Segundos

El segundero se implementa por medio de la serie:

=SERIES(;Reloj!$E$3:$E$4;Reloj!$F$3:$F$4;2)

En esta serie, E3 y F3 tiene el valor 0, es decir x=0 e y=0 (el centro del círculo).

E4 =SENO(RADIANES(G1*6))

F4 =COS(RADIANES(G1*6))

Los Minutos

Exactamente igual que los segundos pero toman el valor de H1 en lugar de G1.

Las Horas

Queda como ejercicio para aquellos alumnos que les interese.

La Programación Visual Basic

Tal como dije al comienzo, en este ejemplo hay muy poca programación ya que Excel se encarga de casi todo el problema con sus funciones y gráficos. El código se requiere para permitir que el usuario pueda ver al reloj en funcionamiento. Para esto le agregaremos a la hoja un botón que permita arrancarlo y detenerlo a voluntad.

El Código

Private Sub CommandButton1_Click()
Dim cambio As Integer
If CommandButton1.Caption = "Fin" Then
CommandButton1.Caption = "Inicio"
End
Else
CommandButton1.Caption = "Fin"
Do
Range("g1").Value = Second(Time())
[h1] = Minute(Time())
DoEvents
Loop
End
End If
End Sub

Observen que hay dos modalidades para actualizar las celdas de la hoja de Excel, en un caso se emplea la función Range(): Range("g1").Value = Second(Time()) en el otro, se utiliza [h1] = Minute(Time()).

Importante: ¡No se olviden de DoEvents!

Sergio Otaño

2 comentarios:

Alberto dijo...

HOLA QUE TAL AMIGO, QUISIERA SABER SI ME PUEDES PASAR EL ARCHIVO DEL RELOJ ANALOGICO, YA QUE HE INTENTADO REPRODUCIRLO CON TUS PASOS PERO LA VERDAD NO TENGO CONOCIMIENTOS NI INTERMEDIOS EN EXCEL Y NO LOGRO TENER EXITO. ing.alberto.industrial@gmail.com
DE ANTEMANO, GRACIAS.

Sergio Otaño dijo...

Alberto, puedes bajar el archivo de Excell aquí: http://rapidshare.com/files/443120757/reloj.xls

Si le agregas la hora, envíame la captura de pantalla.

Suerte!!!