|
|
|
|
  |
| to The GDL Alliance > What is GDL? > Programming |
 |
|
|
|
|
|
|
|
 |
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
|
|
|
|