MetaCard y Revolution: Herramientas de autor multiplataforma para multimedia | ||
---|---|---|
Anterior | Capítulo 3. Programación en MetaTalk y Transcript | Siguiente |
Antes de empezar, hay que recordar detalles de sintáxis peculiares de este lenguaje (aunqe no únicos, ciertamente) que son aplicables a cualquier orden que se escriba:
No existe un caracter de terminación de una sentencia o instrucción, el salto de línea es el que lo indica en un script (el código asociado a cualquier objeto). La única excepción es en la "Message Box"; allí, en una sóla línea, se pueden introducir varias órdenes seguidas. En ese caso, para separarlas se utiliza el punto y coma (";").
Por cuestiones de legibilidad, uno puede decidir escribir una orden en más de una línea, para evitar que se interprete por el sistema de ejecución como una nueva orden se utilizará el caracter barra invertida ("\").
Los comentarios, tan importantes en cualquier programa, se denotan con el carácter almohadilla ("#") o con dos guiones seguidos ("--"); aunque existen otras posibilidades al estilo de C ... Lo más cómodo es, posiblemente, utilizar las opciones a este respecto que tiene el editor nativo (si es el que utiliza) de código.
En MetaTalk sólo hay nueve estructuras de control: exit, if, next, pass, repeat, return, switch, throw, y try. Estas son las que dirijen el flujo de ejecución de nuestros programas. De ellas, habitualmente utilizo sólo tres, así que no piense en memorizar demasiado. Aquí haré poco más que unos breves comentarios:
Es recomendable, como sabrá todo estudioso de la programación, evitar el uso de next. Además usualmente habrá hecho una comprobación con un if para ver si ha de ejecutarla. Compruebe que se da la negación de la condición y ejecute la orden correspondiente, así no la necesitará.
Con la orden exit ocurre algo similar. Ambas son salidas rápidas para casos de emergencia. Le sugiero lo mismo que en el caso anterior.
El switch es interesante cuando una expresión se puede evaluar a varios valores. Generalmente acabo reescribiéndolo como una serie de if y no es que tenga nada contra él, pero me evito aprenderme o consultar su sintáxis.
Para reaccionar ante errores en ejecución (exception handling) están throw y try que, respectivamente, genera una condición de error o ejecuta una orden en modo "protegido" por si sucede una condición de error. Para recoger estas situaciones se acompañán del inseparable catch. No se por qué no las utilizo, la verdad. Será por que mis programas no tienen errores ...; no, creo que no es po eso. En realidad hago las comprobaciones antes, así que con el if me basta.
La orden return, aunque tiene otro uso, sólo la utilizo para devolver un resultado en una función y ahí, sale sóla.
La orden pass, se utiliza en casos donde se quiere actuar sobre la jerarquía de mensajes. Lo admito, la he utilizado.
Al final, me quedo con las dos que utilizo día a día y que siempre he de ir a revisar la sintaxis por que tienen varias variantes, así que sólo copiaré aquí la sintáxis que puede encontrar en la ayuda integrada:
La orden if se puede reescribir como:
if <condition> then <command> else <command>
if <condition>
then <command>
else <command>
if <condition> then <commands> end if
if <condition> then <commands> else <command>
if <condition> then <commands> else <commands> end if
La orden repeat se utiliza para hacer cualquier bucle y, por ello, puede tomar diferentes invocaciones:
repeat [forever] end repeat
repeat [for] <count> [times] end repeat
repeat until <condition>
repeat while <condition> end repeat
repeat with <variable> = <start> to <end> end repeat
repeat with <variable> = <start> down to <end> end repeat
repeat for each <chunk> <variable> in <exp> end repeat
Un par de cuestiones más:
La orden do permite ejecutar una orden que se haya construido como resultado de la propia ejecución: por ejemplo, concatenando cadenas de caracteres y contenidos de variables.
Es posible, y en determinadas ocasiones más interesante, realizar un bucle sólo con eventos programados en el tiempo o mientras se den ciertas condiciones. Por el interés de eta posibilidad lo abordamos en el siguiente punto.