animated GIF GDLA Logo
Welcome
Structure
Members
FoundersWhat is GDL?
Tools
News
GDL Rocks
Info
World

French

German

Japanese

Portuguese

Spanish

 to The GDL Alliance  >  What is GDL?  >  Programming
What is GDL?ProgrammingParametric ExamplePella WindowGDL Object

Así que usted piensa que no puede programar...

El GDL es tan sencillo como tomar el té

Por David Nicholson-Cole
Translation by Javier Cidón Martínez

¡Usted puede perfectamente! Las ardillas pueden programar, los pájaros pueden programar, las arañas lo hacen, los niños pequeños lo hacen – cuando éstos planean una serie de acciones, intentan conseguir algo bien hecho, ellos corrigen sus propios errores cuando los cometen, y ellos logran un resultado – quizás un depósito de nueces, un nido lleno de huevos, un tela de araña, o un modelo de Lego.

El Instituto Británico de Normas recibió el Premio “Ig Nobel” de Literatura ya que escribieron la norma BS.6008: Método para la Preparación de un Licor de Té, y usaron 5000 palabras para hacerlo, explicando hasta el más mínimo detalle. Nosotros no iremos tan lejos, pero usaremos el método de preparar el té como ejemplo de programación humana. Escribamos una serie de 'operaciones' necesarias para hacer Té.

Sin entrar en demasiado detalle, listé la sucesión de operaciones para alguien que sabe las cosas obvias, como abrir el grifo. Cualquiera que lea esto (y sea mayor de 7 años) debería poder recitar la siguiente lista en el orden correcto.

1. Llenar la tetera con agua.
2. Hervir el agua 
3. Coger la tetera 
4. Llenar la tetera de bolsitas de té 
5. Verter el agua caliente 
6. Coger las tazas 
7. Esperar hasta que esté listo 
8. Llenar las tazas 
9. Agregar leche 
10. Servir el té
 100: ! Llenar la tetera con agua.
200: !Hervir el agua
300: !Coger una tetera
400: !Llenar la tetera de bolsitas de té
500: !Verter el agua caliente
600: !Coger las tazas
700: !Esperar hasta que esté listo 
800: !Llenar las tazas
900: !Agregar leche 
1000: !Servir el té
Ya que vamos a explicar al ordenador cómo hacer té, tenemos que volver a escribir la lista dando un número a cada operación (después dos puntos), usando un signo de exclamación para convertir cada nombre de la operación en etiquetas. Para las personas, podríamos numerar cada tarea: 1, 2, 3, etc., pero para los ordenadores es más fácil usar números más grandes (porque así podríamos más tarde insertar cosas extras que no habíamos pensado).

Ninguna de las tareas es una acción independiente: cada tarea se compone de varias acciones que podrían incluir errores. Por ejemplo, si la tetera contiene bolsas de té de la noche anterior, entonces habrá que lavarla primero. Esto requiere muchas frases condicionales (sentencias IF); por lo tanto, las soluciones tomadas serían el resultado de estos condicionantes. Dependiendo del nivel de conocimiento o estupidez de la máquina, usted la instruye apropiadamente. Por ejemplo, asumimos aquí que nuestro ordenador sabe cerrar un grifo o una olla. De la misma manera, el GDL sabe que los cilindros son redondos y que los conos se estrechan y redondean sin que nosotros tengamos que definir la curvatura matemáticamente.

El programa final para hacer té

Hasta que el hervidor está lleno: 2 sentencias IF
100: !Llenar de agua el hervidor  
IF el hervidor (vacío) THEN (llenar el hervidor de agua) IF el hervidor (lleno) THEN GOTO 200: hervir el agua 
Una línea simple también puede describir 2 sentencias IF
200: !Hervir el agua 
IF el agua (hirviendo) THEN (separar el hervidor del fuego) ELSE (hervir el agua)
Las personas son cantidades enteras; pero esto hace que nos aseguremos de que se puede hacer té para 2 personas como mínimo.
300: !Coger una tetera 
IF (número de las personas) menos de 2.01 GET la tetera pequeña
IF (número de las personas) mayor que 2 GET la tetera grande 
IF la tetera (sucia) THEN (lavar la tetera) UNTIL (limpia) 
IF la tetera (limpia) THEN (verter el agua caliente) UNTIL (colmarla).
IF la tetera (caliente) THEN (llenarla de bolsitas de té) 
!Continuar
Para el parámetro de “tipo de té”, usted puede permitir al usuario que seleccione el que prefiera de una lista de opciones.
400: !Llenar la tetera de bolsitas de té
LET tipo de té=USERCHOOSE (EarIGrey, Lop song, Manzanilla, TatLeys)
IF la tetera (grande) THEN agregar 2 bolsas de té USING tipo de té
IF la tetera (pequeña) THEN agregar 1 bolsa de té USING tipo de té
En caso de un problema de cantidad usted podría volver al principio.
500: !Llenar de agua
POUR agua INTO tetera UNTIL (lleno)
IF (no bastante agua) THEN GOTO 100:
PLACE el té UPON teteraSTART reloj de tiempo USING segundos
Éste es un “loop” repetitivo, lo hará hasta que todas las tazas estén seleccionadas, limpias y en su lugar.
600: !Coger las tazas
REPEAT (en armario)
GET (una taza)
IF (taza sucia) THEN (lavar taza)
PLACE la taza ONTO bandeja
UNTIL (bastantes tazas para todos)
Esto estaba ocurriendo mientras usted estaba cogiendo las tazas.
700: !Esperar hasta que esté listo
IF TIMECLOCK menos de 120 segundos THEN WAIT
Otro “loop” repetitivo
800: !Servir
REPEAT (en la bandeja de té)IF lleno=0 THEN POUR (una taza) UNTIL lleno=7/8 UNTIL (bastantes tazas para todos)
Otro ejemplo de cómo obtener el parámetro de la opción del usuario.
900: !Agregar leche
LET con/sin leche = USERCHOOSE (con leche, sin leche)
REPEAT (para cada taza en la bandeja de té)IF con/sin leche = (con leche) THEN (agregue leche a la taza) UNTIL (preguntar cada taza)
1000: !Servir el Té
Esto no está escrito ni en lenguaje BASIC ni en GDL, pero se parece a los dos, y muestra que este lenguaje de programación es como escribir en inglés con un estilo ligeramente matemático. Ok, nosotros no somos del todo perfectos. La Norma Británica dice que hay que poner primero la leche en la taza y, por supuesto, yo no he comprobado si los usuarios quieren azúcar, cucharas, platos o bizcochos. ¿Y qué pasa si no hay bastante té para todos? Entonces usted tiene que volver atrás, llenar la tetera y volver a hervir el agua. Esto podría construirse en el programa. Ese nivel de detalle y corrección del error haría el programa más profesional y su uso más amigable.

Yo espero que este ejemplo haya servido para explicarle la clase de cosas que usted puede hacer, y le haya convencido de que usted puede programar.

David Nicholson Cole es arquitecto y profesor en la Universidad de Nottingham. Es autor de varios libros sobre ArchiCAD y GDL.
©2001 GDL Alliance / Last update Wednesday, March 19, 2003
[Welcome] [Structure] [Members] [Founders] [Tools] [News] [GDL Rocks] [Info] [World]