Revistas en papel
 Amiga World Nº19 - Marzo 1991
Anterior
MenĂº
Logotipo
Sí puedes leer esta frase, la página ha sido actualizada.

El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España
para ofrecer los artículos de la revista Amiga World España.


Por Steve Gillmor

Algunos programadores profesionales ya están listos para usar la nueva onda de Amiga (el sistema de autor), para de esta forma acelerar sus prototipos y desarrollos. Para el resto de nosotros, desplazar ventanas y usar botones en la pantalla es sencillo, pero los Scripts que lo hacen posible es otra historia. De igual forma AmigaVision, basado en iconos y selección de ventanas, requiere de usted el saber trabajar con variables IF-THEN-ELSE, GOTO, así como con palabras de programación para música, permitiéndole dar a sus presentaciones un aspecto de 'inteligencia artificial'.

No se preocupe, ya que existe mucha información. No sólo existe un incremento en los cursos de ejemplos, trucos y pilas que usted puede diseccionar y analizar, sino que también se encuentran programas como UltraCard (Intuitive Technologies, $50) y CanDo (INOVAtronics, $149,95), así como pilas de información en el Dominio Público sobre HiperCard y el libro 'The Complete HyperCard HandBook' de Danny Goodman (Bantam Books, $22,95).

El lenguaje de Scripts de UltraCard es similar en potencia y sintaxis (UltraTalk) a su equivalente en Macintosh, HyperTalk. Tanto estos dos como CanDoSpeak (CanDO) son como 'hablar en inglés', sin complicaciones de sintaxis. De igual forma si nunca ha usado UltraCard, seguramente comprenderá la siguiente instrucción: "Jump To Frame 3 of Stack 'Help'", la cual informa al programa que muestre en pantalla el tercer frame de una colección de Frames llamada Help.

Si no sabe la función de un comando, podrá testear este en la ventana Chat de UltraCard (presionando 'F6') y escribiendo las líneas en cuestión. Toda la información que se adjunta con UltraCard incluye la sala de control y ayuda; por otro lado junto con el programa se encuentran buenos ejemplos de estudio para técnicas. Usted podrá ver estas o editarlas, así como diseñar las suyas propias mediante el modo Modify del menú (o F2), y seleccionando Script en el menú Edit. Permítanme construir un ejemplo que ilustre alguna de las estrategias básicas en la construcción de Scripts, así como mostrarles que la misma aplicación puede aparecer en el programa CanDo.


Comenzando el Script

Antes de ponerse a escribir el código, es conveniente escribir un plano en el que se describa lo que su aplicación debe realizar. Primero nuestro ejemplo mostrará un botón de cada uno de los modelos Amiga. Dependiendo de lo que el usuario haya seleccionado, el programa saltará a una pantalla que contendrá botones con los diversos tipos de periféricos disponibles para dicho modelo. Después de que el usuario haya realizado una elección, el programa mostrará una lista de tiendas de periféricos. Cuando el usuario seleccione cada uno de los productos de su interés, el programa irá acumulando de una forma automática el coste total, además de mostrar la misma.

De igual forma no intente definir todo el programa desde el principio al final; comience con el mínimo de Frames, objetos y comandos para que el sistema funcione. Entonces, una vez comprobado el funcionamiento del sistema, podrá volver al listado para optimizar el programa así como resolver los problemas detectados.

Asumiremos que la información de nuestro ejemplo mostrará un frame introductorio con cinco botones etiquetados A500, A1000, A2000, A2500 y A3000. Abra el botón A500 e introduzca el siguiente Script para conducir el mismo:

   Slect.Up:
   global computer.type
   put "A500" into computer.type
   jump next
   End_Select.Up

Select.Up: en UltraTalk se corresponde con mouseUp en HyperTalk y Release en CanDoSpeak; esto informa al programa que el usuario a seleccionado y pulsado el botón izquierdo del ratón, ejecutando los comandos siguientes. Es a continuación cuando se define la variable computer.type como global, haciendo que pueda ser accedida por cualquiera de las pilas. A continuación se asigna la cadena "A500" a la variable, y finalmente se salta al siguiente Frame. Los otros cuatro botones son idénticos, excepto la asignación a computer.type. Para ahorrar tiempo, copie y duplique el Script de A500 para cada uno de los modelos restantes, alterando únicamente la cadena de asignación a computer.type.

La pantalla 'next', que aparecerá cuando el usuario haya realizado su elección, será una nueva pantalla con botones que identifican varias elecciones de periféricos y software. Cada botón (Memoria, Drives, monitores, etc) contiene un Script que evalúa el contenido de computer.type y salta al Frame apropiado. La sintaxis más aproximada sería:

   Select.Up:
   if computer.type is "A500"
   jump to frame "A500Memory"
   endif
   if computer.type is "A1000"
   jump to frame "A1000Memory"
   endif
   ... así para cada uno de los modelos End_Select.Up

Aquí se evalúa la variable global computer.type, saltando al frame apropiado de ampliaciones de memoria. Estas sentencias IF pueden comenzar a añadirse. Usted puede redireccionar el fluido de programa más eficientemente usando el operando de concatenación (&&). Por ejemplo puede sustituir las sentencias If por la siguiente instrucción:

   jump to frame computer.type && "Memory"

De esta forma no sólo el programa será más corto, sino que tampoco tendrá que evaluar todas las sentencias IF. Mediante la unión del valor en computer.type (A500) a la cadena "Memory" (el valor en el ejemplo del botón) en el comando Jump, realmente le está informando que salte al frame A500Memory; que es la siguiente en la secuencia. Usted puede testear el operador de concatenación (u otro) mediante la ventana Chat. Abra esta y escriba la siguiente línea:

   put "A500" into computer.type

Presione la tecla RETURN y escriba:

   showmsg computer.type && "memory"

Presione la tecla Return de nuevo y el ordenador mostrará (showmsg) el valor concatenado:

   A500Memory


Llamando Scripts desde Scripts

Siguiendo esta línea, el programa saltará al frame A500Memory; representando los productos en un set de botones. Una vez que se salta a un nuevo Frame, cuando el usuario pulsa un botón, esta vez el Script llamará a una subrutina que añade el precio del producto a un total. A continuación se muestra el Script para el botón A501:

   Select.Up:
   call add.to.total(149.95)
   -llama a una función definida por
   -el usuario.
   End_Select.Up

La segunda línea llama a la subrutina Add.To.Total y pasa en el precio de la tarjeta A501, 149.95. Todas las subrutinas de UltraTalk se almacenan en la pila de Script, que se encuentra compartida por el resto de las pilas. Las subrutinas son funciones definidas por el usuario que ahorran tiempo de desarrollo, ya que en vez de repetirse una misma operación varias veces, esta se ejecuta cada vez que se hace necesario. El comentario que figura no se interpreta al realizar la compilación, pero sirve para que el programador haga una aclaración dentro del Script. A continuación examinaremos la subrutina Add.To.Total:

   Add.To.Total:
   global grand.total
   add parm(1) to grand.total
   put grand.total into display.total
   End_Add.To.Total

Los 149.95 cuando se realiza la llamada a Add.To.Total es recibida por esta a través de Parm(1) (o parámetro 1); un segundo parámetro sería Parm(2) y así sucesivamente. La rutina suma el valor del parámetro 1 al contenido en la variable global grand.total. Finalmente se muestra el contenido de grand.total en la primera fila del Frame llamada Display.Total.


Las mismas palabras, Diferentes lenguajes.

Aunque la sintaxis en CanDo es diferente, la creación de Scripts es igual de sencilla, pudiendo hacer uso de un editor interactivo para aprender el lenguaje. En la edición de un botón se permite arrastrarlo, realizar un doble click, y soltarlo. Por ejemplo seleccione Release y escriba la primera línea del botón A500:

   Let ComputerType = "A500"

Si no escribe el Let, el sistema de errores de CanDo le informará que se trata de una instrucción desconocida y no le permitirá salir a otro modo hasta que el error se corrija. Usted puede seleccionar Help para recoger algo de información sobre los comandos, funciones y variables, así como elegir de entre una lista los iconos que facilitan la generación de un Script en gráficos, texto, AmigaDOS, ARexx y otros comandos.

El nuevo sistema profesional de Amiga,
basado en iconos y ventanas, requiere
de Vd. el saber trabajar con variables
IF-THEN-ELSE, GOTO, etc.

Siguiendo el salto del A500 en el Script UltraCard, el siguiente paso en el programa es mostrar una nueva pantalla. Anteriormente se ha utilizado "jump next" en UltraTalk, aquí deberá seleccionar en el icono Deck y seleccionar el botón etiquetado Next para insertar la siguiente línea de Script:

   NextCard

Otra vez deberá copiar y duplicar los otros cuatro botones, acabando la primera parte del Script. Al igual que en UltraCard, en CanDo existe un operando de concatenación con la cual se ahorrará espacio de memoria así como legibilidad del programa. Observe que al igual que en UltraCard, en CanDo la sintaxis también es muy similar, sustituyendo únicamente el signo de concatenación:

   GotoCard ComputerType // "Memory".

Al igual que en el lenguaje anterior, en CanDo también se pueden crear subrutinas separadamente de los objetos y salvada en una misma zona, análoga a la Pila de UltraCard. Para llamar a una rutina se emplea la siguiente sintaxis (en este caso equivalente a la primera de UltraCard):

   Do "AddToTotal",150

En esta ocasión he compensado el valor puesto que CanDo no trabaja con valores en coma flotante. La rutina AddToTotal es como sigue:

   let GrandTotal = GrandTotal + arg1
   SetText "DisplayTotal",GrandTotal.

El uso de las subrutinas es muy bueno, puesto que le ahorran tiempo de programación, así como poder utilizar las mismas subrutinas en diferentes Script, ya que se tratan de módulos independientes de programa.


Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal