TinyDev - Contenido de la Ayuda

TinyDev v1.00 - 18 Mar 2017

© 2017 Miguel I. García López (FloppySoftware)

Todos los derechos reservados.

www.floppysoftware.es
floppysoftware@gmail.com


TinyDev

Introducción

El IDE de TinyDev

Introducción
El menú Archivo
El menú Editar
El menú Ejecutar
El menú Opciones
El menú Ayuda
El área de edición
Los botones de acceso rápido
El área del lenguaje
El área del información

El lenguaje de TinyDev

Introducción
Instrucciones
Funciones
Comentarios
Identificadores
Expresiones
Números
Cadenas de texto
Imágenes
Sonidos
Colores
Places
Variables
Arrays
Operadores
Control del flujo de ejecución
Subrutinas
Palabras reservadas en orden alfabético
Palabras reservadas según su función


TinyDev

Introducción

TinyDev es un lenguaje de programación para niños, creado con el objetivo de enseñarles a pensar en la resolución de problemas.

Aunque es un lenguaje muy completo, ha sido diseñado para que sea sencillo de utilizar, huyendo de las complicaciones y dificultades de ciertos lenguajes de programación para niños, muy en boga actualmente.

Mediante TinyDev, los niños pueden dibujar gráficos, escribir texto, mover imágenes por la pantalla, emitir sonidos, e interactuar con el usuario mediante el teclado y el ratón.

Además, se acompaña de un pequeño IDE (Integrated Development Environment, Entorno de Desarrollo Integrado), mediante el cual los niños pueden crear, editar y ejecutar sus programas, tal y como ocurre con los lenguajes de programación profesionales.


El IDE de TinyDev

Introducción

El IDE (Integrated Development Environment, Entorno de Desarrollo Integrado) de TinyDev ha sido diseñado para parecerse y actuar como los que acompañan a los lenguajes de programación profesionales, aunque teniendo en cuenta el tipo de usuarios al que va destinado.

IDE de TinyDev

Tiene las funciones características de este tipo de entornos, entre ellas:


El menú Archivo

Mediante las opciones de este menú, podemos realizar las operaciones frecuentes con archivos que contengan código fuente para el lenguaje TinyDev: Nuevo, Abrir, Guardar, Guardar como e Imprimir.

También está disponible la opción Salir, para abandonar el IDE.


El menú Editar

En este menú, se encuentran las opciones habituales de edición de texto: Cortar, Copiar, Pegar, Eliminar y Seleccionar todo. Estas funciones también están disponibles si se pulsa el botón derecho del ratoón, dentro del área de edición de texto.

También incluye las opciones de búsqueda de texto.


El menú Ejecutar

Mediante las opciones de este menú, podemos controlar la ejecución del programa cargado en el IDE: Ejecutar y Detener.


El menú Opciones

En este menú, se encuentran las opciones de configuración del IDE: Mostrar consejo al iniciar y Utilizar la plantilla para nuevos archivos.

La plantilla para nuevos archivos, se llama TinyDev_es_ES.km, y puede ser personalizada, a gusto del usuario.


El menú Ayuda

Mediante las opciones de este menú, podemos acceder a la ayuda e información de TinyDev: Ver la ayuda y Acerca de TinyDev.


El área de edición

En el área de edición, es donde podemos escribir las líneas que componen los programas.

Pulsando el botón derecho del ratoón, dentro del área, aparecerá un menú con algunas opciones de edición de texto: Cortar, Copiar, Pegar, Eliminar y Seleccionar todo.


Los botones de acceso rápido

La barra de botones, permite el acceso rápido a las funciones más habituales del IDE.

Si se deja el cursor del ratón sobre un botón, aparecerá un pequeño texto explicativo sobre la función que realiza.

Barra de botones de acceso rápido


El área del lenguaje

En este panel, podemos encontrar todas las palabras clave del lenguaje de programación de TinyDev.

Para introducir una palabra clave en el texto utilizando este panel, basta con pulsar el botón izquierdo del ratón, con el cursor encima de ella.

Panel del lenguaje


El área de información

En este panel, aparece información acerca del texto que estamos editando, el número de línea actual, mensajes explicativos, etc.

Area de información


El lenguaje de TinyDev

Introducción

En TinyDev, cada línea de texto, es una instrucción, un place, un comentario, o una líne en blanco.


Instrucciones

Una instrucción, está compuesta por su nombre y, en la mayoría de los casos, unas opciones, separadas entre sí, por uno o más espacios en blanco, y unos parámetros, separados entre sí, por una coma, que puede estar seguida de uno o más espacios en blanco:

	Set tablero[casilla] = 2
	Screen 400, 200
				

Los parámetros, suelen ser expresiones, de texto, numéricas...

	Set total = cantidad * 10 + beneficio
	Screen tablero_ancho * pieza_lado, tablero_alto * pieza_lado
				

Funciones

Una función, se diferencia de una instrucción, en que ha de emplearse obligatoriamente como parámetro, o en la construcción de expresiones. Sus parámetros, son indicados entre paréntesis, separados entre sí por una coma, que puede estar seguida de uno o más espacios en blanco:

	Print Center "¡Has ganado " + string(cuantos) + " puntos!"
	Variable String segundoNombre = Middle(nombre, 5, 6)
				

Comentarios

Los comentarios, son muy útiles para explicar qué hace un determinado fragmento de código del programa.

Se escriben anteponiéndoles el caracter apóstrofe '.

Todo lo que haya a continuación del apóstrofe en la línea, será ignorado.

De esta forma, podemos escribir comentarios que ocupen toda la línea:

	' Esto es un comentario
				

o al final de la misma:

	Call Title ' Esto es un comentario
				

Identificadores

Los identificadores se utilizan para dar nombre a las variables y los places.

Un identificador, debe empezar por una letra, seguida opcionalmente de cualquier combinación de letras, números y el caracter de subrayado _.

No se distinguen entre mayúsculas y minúsculas, por lo que los identificadores nombreCompleto y nombrecompleto, referencian al mismo identificador.

Algunos identificadores válidos son: myName, year1969, house_color.

Estos identificadores no son válidos: 45 (no empieza con una letra), $name (no empieza con una letra), my/home (el carácter / no es válido), 6years (no empieza con una letra).


Expresiones

Una expresión, es una operación que devuelve un resultado de un tipo determinado:


Números

Un número puede ser negativo: -56, o positivo: 25, pero no están permitidos los decimales.

Una expresión numérica, es una expresión cuyo resultado es un valor numérico. Ejemplos:

	50
	precio * 10
	(5 + lado) * 6
	total - descuento
				

Para crear una variable que contenga un número, se ha de utilizar la palabra reservada Variable.

Se puede alterar el valor de una variable numérica con Set:

	Variable Number precio = 50
	Variable Number total
	Set total = precio * 3
	Print "El total es: " + String(total) + " euros"
				

En este caso, la salida sería:

	El total es: 150 euros
				

Se puede convertir un valor numérico en su equivalente textual, con String:

	Variable Number edad = 5
	Variable String texto
	Set texto = String(edad)
				

Cadenas de texto

Una cadena de texto, ha de estar entrecomillada: "Esto es una cadena".

Una expresión de texto, es una expresión cuyo resultado es un valor de texto. Ejemplos:

	"Hola"
	"Hola " + nombre
	"El apellido de " + nombre + " es " + apellido
				

Para crear una variable que contenga un valor textual, se ha de utilizar la palabra reservada Variable.

Se puede alterar el valor de una variable de tipo texto, con Set:

	Variable String nombre = "Juan"
	Set nombre = nombre + " Serrano"
	Print nombre
				

En este caso, la salida sería:

	Juan Serrano
				

Se puede convertir un valor textual, en su equivalente numérico, con Number:

	Variable Number edad
	Dialog Input "Introduce tu edad"
	Set edad = Number(Reply())
				

Imágenes

Los tipos de ficheros admitidos para las imágenes, son los que mismos que admite el lenguaje Java: bmp, jpg, png, etc.

Una expresión de tipo imagen, es una expresión cuyo resultado es un valor textual, o bien una referencia a una variable de tipo imagen. Ejemplos:

	Variable String tipoImagen = ".png"
	Variable Image fotoUno = "foto1" + tipoImagen
	Variable Image mismaFoto = fotoUno
				

Para crear una variable de este tipo, has de utilizar la palabra reservada Variable.

Se puede alterar el valor de una variable de este tipo, con Set:

	Variable Image icono
	Set icono = "flor.png"
				

Sonidos

El tipo de fichero admitido para los sonidos, es wav.

Una expresión de tipo sonido, es una expresión cuyo resultado es un valor textual, o bien una referencia a una variable de tipo sonido. Ejemplos:

	Variable String tipoSonido = ".wav"
	Variable Sound efectoSonido = "crash" + tipoSonido
	Variable Sound mismoSonido = efectoSonido
				

Para crear una variable de este tipo, has de utilizar la palabra reservada Variable.

Se puede alterar el valor de una variable de este tipo, con Set:

	Variable Sonido efectoSonido
	Set efectoSonido = "crash.wav"
				

Colores

Los colores se indican mediante expresiones textuales: black, blue, cyan, light_gray, gray, dark_gray, magenta, orange, pink, red, white, yellow y green.

Ejemplo:

	Pen "black"
	Paper "red"
	Print "Texto de color negro, sobre fondo de color rojo."
				

Places

Los places, son posiciones o lugares en el código del programa, señalados mediante un identificador, y el caracter de dos puntos:

Ejemplo:

	CentraTexto:
				

Son utilizados para cambiar el flujo de ejecución del programa, mediante la utilización de las instrucciones Call y Jump.


Variables

Hay disponibles 4 tipos de variables:

Tipos de variables
Tipo Valor
Number Números
String Cadenas de texto
Image Imágenes
Sound Sonidos

Las variables, se crean con la instrucción Variable, y su valor se modifica con Set:

	Variable String nombreCompleto = nombre + apellidos
	Variable Image icono = "flor.png"
	Variable Number precio
	Variable Sound sonidoClick = "click.wav"
	Set precio = 5
				

Arrays

Los arrays, son grupos de datos del mismo tipo.

Se crean con Variable, y su valor se modifica con Set.

La cantidad de datos (o tamaño) del array, es fijo, por lo que una vez creado, no se puede cambiar.

Para referirse a cada elemento del array, se indica su nº de índice, que va de 0, a tamaño - 1.

Por ejemplo:

	' Crea un array de 10 números:
	'
	Variable Number precio[10]
	'
	' Asigna un valor al 1er elemento,
	' y al último:
	'
	Set precio[0] = 10
	Set precio[9] = 50
	'
	' Suma los 2 valores y los presenta
	' en pantalla:
	'
	print "Suma: " + String(precio[0] + precio[9])
				

Operadores

Hay varios tipos de operadores, con distinto nivel de precedencia, que se pueden usar en las expresiones:

Operadores, ordenados según nivel de precedencia
Nivel Operadores Orden de evaluación
1 [] Acceso a elemento de un array
() Paréntesis
De izquierda a derecha
2 * Multiplicación
/ División
% Módulo
De izquierda a derecha
3 + Suma o concatenación
- Resta
De izquierda a derecha
4 == Igual
!= Distinto
>  Mayor que
>= Mayor o igual que
<  Menor que
<= Menor o igual que
De izquierda a derecha
5 && Y lógico
|| O lógico
De izquierda a derecha

Para acceder a un elemento de un array, se utilizan los corchetes:

	Variable Image iconos[5]        ' Crear un array de 5 imágenes (índices del 0 al 4)
	Set iconos[0] = "abrir.png"  ' Asignamos una imagen al 1er elemento
				

Los paréntesis, son utilizados para cambiar el orden de evaluación en las expresiones, o hacerlas más legibles:

	Set importe = (precio + recargo) * unidades
				

El operador +, puede ser utilizado, además de para sumar dos expresiones numéricas, para concatenar dos expresiones textuales:

	Variable nombre = "Julio"
	Variable apellidos = "Lóopez Blanco"
	Variable nombreCompleto = nombre + " " + apellidos
				

Los operadores relacionales, son utilizados para comparar 2 expresiones del mismo tipo (numéricas o textuales):

	Variable String nombre
	Dialog Input "Dime tu nombre:"
	Set nombre = Reply()
	If nombre == "José" Then Print "¡Hola, Pepe!"
				
Otro ejemplo:
	Set counter = 0
	Do
		Print String(counter)
	Loop While counter < 5
				

Los operadores lógicos, son utilizados para combinar el resultado de 2 comparaciones:

	Variable String nombre = "Marta"
	Variable Number edad = 58
	If edad > 50 && nombre == "Marta" Then Print "¡Hola, abuelita!"
				

Control del flujo de ejecución

Se puede alterar el orden de ejecución de las instrucciones del programa, utilizando Call y Jump.

Además, contamos con los bucles y la instrucción condicional If.

Para utilizar Call y Jump, necesitamos crear places:

		Call GameOver
		End
	GameOver:
		Print "***GAME OVER***"
		Return
				

Mediante Return, volveremos a ejecutar las instrucciones que estén después del Call que llamó al place.

Este sistema, es muy útil para crear subrutinas:

		Print "Lunes" + Break()
		Call Martes
		Print "Miércoles" + Break()
		Jump Viernes
		Print "Jueves" + Break()
	Viernes:
		Print "Viernes" + Break()
		End
	Martes:
		Print "Martes" + Break()
		Return
				

La salida sería:

	Lunes
	Martes
	Miércoles
	Viernes
				

Como se puede observar, el texto Jueves no ha sido impreso.

La instrucción End termina el programa.


Subrutinas

Una subrutina, es un fragmento de código, que comienza en un place, que se ejecuta mediante la instrucción Call.

Mediante la instrucción Return, volveremos a ejecutar las instrucciones que siguen al Call que llamó a la subrutina.

Son muy útiles, para organizar el código del programa, de una forma más lógica y ordenada, así como para partes del programa, que sean frecuentemente utilizadas.

Es conveniente utilizar comentarios, que describan lo que hacen, y qu´ variables necesitan o modifican, etc.:

	Variable String texto
	Variable Number y
	
	Set texto = "¡Hola mundo!"
	Set y = 100
	Call TextoCentrado
	
	Set texto = "¡Hasta luego!"
	Set y = 150
	Call TextoCentrado
	End
	
	' Imprime un texto centrado en la ventana, en rojo, con fondo blanco.
	' La variable 'texto', contiene el texto a imprimir.
	' La variable 'y', contiene la posición Y de la pantalla (la fila).
	'
	TextoCentrado:
		Pen "red"
		Paper "white"
		Cursor To 0 y
		Print Center texto
		Return
				

Palabras reservadas, según su función

Creación y manipulación de variables:

Set
Variable

Control del flujo de ejecución:

Break
Call
Do
Else
End
If
Jump
Loop
Return

Gráficos, imágenes e impresión de texto:

Clear
Cursor
CursorX
CursorY
Dialog
Ellipse
Font
Image
Line
Paper
Pen
Point
Print
Rectangle
Screen
ScreenHeight
ScreenWidth
TextHeight
TextWidth

Entrada de datos por el teclado:

Dialog
Key
Reply

Sonidos:

Sound

Control del ratón:

MouseClick
MouseX
MouseY

Otros:

Break
Length
Middle
Number
Random
String
Wait


Palabras reservadas, por orden alfabético

Instrucciones:

Break
Call
Clear
Cursor
Dialog
Do
Ellipse
Else
End
Font
If
Image
Jump
Line
Loop
Paper
Pen
Point
Print
Random
Rectangle
Return
Screen
Set
Sound
Variable
Wait

Funciones:

Break
CursorX
CursorY
Key
Length
Middle
MouseClick
MouseX
MouseY
Number
Paper
Pen
Random
Reply
ScreenHeight
ScreenWidth
String
TextHeight
TextWidth

Otras palabras reservadas auxiliares, utilizadas conjuntamente con las anteriores, son:

Bold, Center, Error, Fill, Information, Input, Italic, Left, OkCancel, Plain, Right, Solid, Then, To, Transparent, Until, Warning, While, YesNo.


Break -- Instrucción

Break() -- Función

Sale de un bucle Do ... Loop:

	Variable Number contador = 0
	Do
		Dialog YesNo "Ahora el contador vale " + String(contador) + Break() + "¿Quieres salir del bucle ya?"
		If Reply() == "yes" Then Break
	Loop While contador < 10
				

Como función, devuelve un código de nueva línea, útil en las instrucciones Print y Dialog:

	Print "Esto es una línea." + Break() + "Y esto otra."
				

Call place -- Instrucción

Continuar la ejecución de las instrucciones del programa, a partir del place indicado.

Una vez se encuentre la instrucción Return, la ejecución continuará en la instrucción que sigue al Call que llamó al place.

Se suele utilizar en las subrutinas:

		Image 10, 10, coheteUno
		Call Pausa
		Image 10, 10, coheteDos
		Call Pausa
		End
Pausa:
		Wait 600
		Return
				

Clear -- Instrucción

Borra la ventana, con el color de fondo actual, y sitúa el cursor en la esquina superior izquierda de la misma (x = 0, y = 0):

	Screen 300, 300
	Paper "blue"
	Clear
				

Cursor To x, y -- Instrucción

Mueve el cursor a la posición indicada.

Tanto x, como y, son expresiones numéricas:

	Cursor To 10, 10
				

CursorX() -- Función

Devuelve la posición X actual del cursor:

	Cursor To CursorX(), 10
				

CursorY() -- Función

Devuelve la posición Y actual del cursor:

	Cursor To 0, CursorY()
				

Dialog tipo texto -- Instrucción

Visualiza un cuadro de diálogo del tipo especificado, e imprime el mensaje de texto indicado:

Tipos de cuadros de diálogo
Tipo Funcionalidad Devuelve el dato en Reply()
Input Solicita un dato al usuario
YesNo Hace una pregunta al usuario, y devuelve "yes" o "no"
OkCancel Hace una pregunta al usuario, y devuelve "ok" o "cancel"
Warning Informa de una advertencia No
Error Informa de un error No
Information Muestra una información No

Los datos introducidos, se pueden recuperar mediante la la función Reply():

	Variable String nombre
	Variable Number edad
	Variable Number helado = 0
	Dialog Input "Dime tu nombre:"
	Set nombre = Reply()
	Dialog Input "Dime tu edad, " + nombre + ":"
	Set edad = Number(Reply())
	Dialog YesNo "¿Te gustan los helados?"
	If Reply() == "yes" Then Set helado = 1
				

Do ... Loop While condición -- Instrucción

Do ... Loop Until condición

Do While condición ... Loop

Do Until condición ... Loop

Ejecuta una serie de instrucciones dentro de un bucle, mientras se cumpla la condición (While), o hasta que se cumpla (Until).

Las 2 primeras formas, comienzan a ejecutar las instrucciones contenidas dentro del bucle, y luego evalún la condición antes de proseguir, por lo que siempre ejecutan dichas instrucciones, al menos una vez.

Las otras 2 formas, evalún la condición al principio del bucle, por lo que puede que no ejecuten nunca las instrucciones, si dicha condición no se cumple.

Veamos un ejemplo:

	Do
		Dialog YesNo "¿Deseas continuar dentro del bucle?"
	Loop While Reply() == "yes"
				

Otro ejemplo más:

	' Imprimir los números del 1 al 10
	'
	Variable Number contador = 1
	Do
		Print String(contador) + Break()
		Set contador = contador + 1
	Loop Until contador == 10
				

Ellipse {modo} x, y, ancho, alto -- Instrucción

Dibuja una elipse (o un círculo, si ancho y alto son iguales).

Los valores x, y, ancho y alto, son expresiones numéricas, que indican la posición más a la izquierda, la posición más arriba, el ancho en pixels, y el alto en pixels, respectivamente.

El modo de operación es opcional.

Modos de operación
Modo Efecto
  Dibuja sólo el contorno, con el color de pluma
Fill Dibuja el contorno, con el color de pluma, y rellena el interior, con el color de papel
Solid Dibuja una figura sólida, con el color de pluma

Veamos un ejemplo:

	' Dibuja un círculo de 100 pixels de diámetro,
	' con el contorno de color negro, y el interior de color rojo
	Pen "black"
	Paper "red"
	Ellipse fill 25, 50, 100, 100
				

Else {instrucción} -- Instrucción

Else If condición Then {instrucción} -- Instrucción

Ejecuta las instrucciones siguientes, si la condición evaluada en el anterior If era falsa.

En caso contrario, no las ejecuta.

Se utiliza Else sin argumentos, cuando se trata de un bloque If:

	If edad >= 18 Then
		Print "Mayor de edad"
		Set mayorDeEdad = 1
	Else
		Print "Menor de edad"
		Set mayorDeEdad = 0
	End If
				

Los Else de bloque, también admiten la forma Else If:

	If numero == 0 Then
		Print "0"
	Else If numero == 1 Then
		Print "1"
	Else If numero == 2 Then
		Print "2"
	Else
		Print "?"
	End If
				

Se utiliza un Else simple, cuando se trata de un If simple:

	If edad >= 18 Then Print "Mayor de edad"
	Else Print "Menor de edad"
				

Los Else simples, también admiten la forma Else If simple:

	If numero == 0 Then	Print "0"
	Else If numero == 1 Then Print "1"
	Else If numero == 2 Then Print "2"
	Else Print "?"
				

Importante: No está permitido mezclar distintos tipos de If y Else (sólo simples, o sólo de tipo bloque).


End {If} -- Instrucción

La instrucción End finaliza el programa:

	Dialog YesNo "¿Deseas jugar otra partida?"
	If Reply() == "no" Then End
	Jump partidaNueva
				

También se utiliza la forma End If, para finalizar un If de tipo bloque:

	If Reply() == "no" Then
		Clear
		Print "¡Hasta luego!"
	End If
				

Font {nombre} {tamaño} {atributos} -- Instrucción

Cambia la fuente actual, su tamaño y los atributos.

El valor nombre es una expresión textual, que indica el nombre de la fuente, y tamaño es una expresión numérica, que indica su tamaño en puntos.

Los atributos permiten cambiar las características que indica la tabla.

Atributos
Atributo Efecto
Plain Texto normal sin atributos
Bold Texto en negrita
Italic Texto en cursiva (itálica)
Transparent Fondo transparente (no rellena con el color de papel

Sólo se modificarán las características que se indiquen, pero en el caso de indicar alg&uactue;n atributo, todos los demás se desactivarán;n:

	Font "arial"
	Font 32, Bold
	Font "verdana", Bold, Italic
				

If condición Then {instrucción} -- Instrucción

Ejecuta las instrucciones siguientes, si la condición es cierta.

Puede ser utilizado conjuntamente con Else.

Hay dos tipos de If.

De tipo bloque, finalizados con End If:

	If edad >= 18 Then
		Print "Mayor de edad"
		Set mayorDeEdad = 1
	Else
		Print "Menor de edad"
		Set mayorDeEdad = 0
	End If
				

Y de tipo simple:

	If edad >= 18 Then Print "Mayor de edad"
	Else Print "Menor de edad"
				

Importante: No está permitido mezclar distintos tipos de If y Else (sólo simples, o sólo de tipo bloque).


Image x, y, imagen -- Instrucción

Dibuja la imagen en la posición indicada por x e y, ambas, expresiones de tipo numérico.

La imagen se indica mediante una expresión de imagen:

	Variable Image icono = "estrella.png"
	Image 10, 15, icono
				

Jump place -- Instrucción

Cambia el flujo de ejecución del programa, ejecutando las instrucciones a partir del place indicado:

		' Imprimir: Hola Pepe
		Print "Hola "
		Jump imprimeC
		print "Juan"
	imprimeC:
		print "Pepe"
				

La salida en pantalla sería:

	Hola Pepe
				

Key() -- Función

Devuelve el nombre de la tecla o caracter pulsado por el usuario, como una cadena de texto.

En el caso de que el usuario no haya pulsado ninguna tecla, devolverá una cadena vacía "":

		Variable String tecla
	pulsaTecla:
		Set tecla = Key()
		If tecla == "up" Then Call mueveArriba
		If tecla == "down" Then Call mueveAbajo
		Jump pulsaTecla
				

Veamos otro ejemplo:

	' Subrutina que espera a que se pulse
	' cualquier tecla.
	' El valor de la tecla se pierde.
	'
	esperaTecla:
		Do Until Key() != ""
			' Nada
		Loop
		Return
				

El caracter o tecla es borrado del buffer de teclado, en cuanto es leído.

Los nombres de las teclas (aparte de los caracteres comunes como a, B, 1, 2, 3, etc.),son: up, down, left, right, enter, escape, home, end, page_up, page_down...


Length( texto )-- Función

Devuelve la longitud en caracteres de una expresión textual:

	Variable String nombre = "Juanjo"
	Variable Number longitud = Length(nombre)
				

Line x, y, x2, y2 -- Instrucción

Dibuja una línea con el color de pluma, desde la posición indicada por x e y, hasta la posición indicada por x2 e y2.

Dichas posiciones, son expresiones numéricas:

	Pen "red"
	Line 10, 15, 300, 250
				

Loop -- Instrucción

Instrucción de cierre de un bucle Do:

	' Subrutina que espera a que se pulse cualquier tecla.
	' Devuelve el valor en la variable textual 'tecla'.
	'
	esperaTecla:
		Do
			Set tecla = Key()
		Loop While tecla == ""
		Return
				

Middle( texto, índice, longitud ) -- Función

Devuelve un valor textual, extraído de texto, a partir de la posición índice, de la longitud en caracteres indicada.

El primer índice es el 0.

	Variable String nombre = "Juan Miguel"
	Variable String segundoNombre = Middle(nombre, 5, 6)  ' Extraemos "Miguel"
				

MouseClick() -- Función

Devuelve el botón del ratoón que ha sido pulsado, como un valor textual, según indica la tabla.

Valores devueltos por MouseClick()
Valor Significado
"" Ningún botón pulsado
"left" Botón izquierdo
"middle" Botón central
"right" Botón derecho

Veamos un ejemplo:

	Variable String boton = MouseClick()
	If boton == "left" Then Print "Izquierdo"
	Else If boton == "right" Then Print "Derecho"
				

MouseX() -- Función

Devuelve la posición x del puntero del ratón, como un valor numérico:

	Variable Number posX = MouseX()
				

Devuelve -1, si el puntero del ratón está fuera de la ventana.


MouseY() -- Función

Devuelve la posición y del puntero del ratón, como un valor numérico:

	Variable Number posY = MouseY()
				

Devuelve -1, si el puntero del ratón está fuera de la ventana.


Number( texto ) -- Función

Convierte una expresión textual, en su equivalente numérico:

	Variable Number valor = 3 + Number("45")
				

Si la expresión textual no tiene equivalente numérico, devuelve el valor 0.


Paper color -- Instrucción

Paper() -- Función

Como instrucción, cambia el color de papel:

	Paper "red"
	Clear
				

Como función, devuelve el color de papel actual:

	Paper "Blue"
	Print "Texto escrito sobre fondo de color: " + Paper()
				

Pen color -- Instrucción

Pen() -- Función

Como instrucción, cambia el color de pluma:

	Pen "Blue"
	Paper "Yellow"
	Print "Texto escrito en color azul, sobre fondo amarillo"
				

Como función, devuelve el color de pluma actual:

	Pen "Blue"
	Print "Texto escrito en color: " + Pen()
				

Po‌int x, y -- Instrucción

Dibuja un pixel con el color de pluma, en la posición indicada por x e y, ambos indicados como expresiones numéricas:

	Pen "green"
	Point 10, 40
				

Print {modo} texto -- Instrucción

Imprime el texto indicado en la pantalla.

El modo, tiene el efecto indicado en la tabla.

Modos
Modo Efecto
  Imprime en la posición actual del cursor
Left Texto justificado a la izquierda, en la posición y actual
Center Texto centrado, en la posición y actual
Right Texto justificado a la derecha, en la posición y actual

Veamos un ejemplo:

	Variable String nombre = "Pepe"
	Variable Number edad = 15
	Print "El alumno " + nombre + ", tiene " + String(edad) + " años de edad." + Break()
				

Random máximo -- Instrucción

Random() -- Función

La primera forma, indica el nº máximo que generará la segunda.

La segunda forma, es una función, que devuelve un nº aleatorio entre 0 y máximo, ambos inclusive.

El valor máximo, es una expresión numérica:

	Variable Number dato
	' Random generará números del 0 al 5,
	' ambos inclusive:
	'
	Random 5
	' La variable 'dado' tendrá un valor aleatorio
	' entre 1 y 6, ambos inclusive:
	'
	Set dado = Random() + 1
				

Rectangle {modo} x, y, ancho, alto -- Instrucción

Dibuja un rectángulo (o un cuadrado, si ancho y alto son iguales).

Los valores x, y, ancho y alto, son expresiones numéricas, que indican la posición más a la izquierda, la posición más arriba, el ancho en pixels, y el alto en pixels, respectivamente.

El modo de operación es opcional.

Modos de operación
Modo Efecto
  Dibuja sólo el contorno, con el color de pluma
Fill Dibuja el contorno, con el color de pluma, y rellena el interior, con el color de papel
Solid Dibuja una figura sólida, con el color de pluma

Veamos un ejemplo:

	' Dibuja un cuadrado de 100 pixels de lado,
	' con el contorno de color negro, y el interior
	' de color rojo:
	'
	Pen "black"
	Paper "red"
	Rectangle fill 25, 50, 100, 100
				

Reply() -- Función

Devuelve el valor introducido por el usuario, mediante la instrucción Dialog, como un valor textual:

	Variable String nombre
	Dialog Input "Introduce tu nombre:"
	Set nombre = Reply()
				

Dicho valor puede ser convertido a un valor numérico, mediante la función Number.


Return -- Instrucción

Cambia el flujo de ejecución del programa a la siguiente instrucción que sigue al Call, que llamó al place:

		Call borraPantalla
		Print "Game Over"
		End
	borraPantalla:
		Clear
		Return
				

Screen ancho, alto -- Instrucción

Reinicia la ventana, cambiando sus dimensiones a las indicadas, borrando su contenido pintando el fondo de la misma con el color de papel, cambiando los valores de la fuente a sus valores por defecto, y situando el cursor en la esquina superior izquierda de la misma (posición x = 0 e y = 0):

	Screen 800, 600
	Paper "green"
	Clear
				

ScreenHeight() -- Función

Devuelve el alto de la ventana, en pixels:

	Screen 800, 600
	Variable Number alto = ScreenHeight()
				

ScreenWidth() -- Función

Devuelve el ancho de la ventana, en pixels:

	Screen 800, 600
	Variable Number ancho = ScreenWidth()
				

Set variable = valor -- Instrucción

Set array[índice] = valor -- Instrucción

Asigna un valor a una variable o elemento de un array.

Los valores admitidos, dependen del tipo de variable.

Para variables de tipo Number, el valor será una expresión numérica:

	Variable Number precio 25
	Variable Number total
	Set total = precio * 10
	Variable String alumnos[15]
	Set alumnos[3] = "Pepe"
				

Para variables de tipo String, el valor será una expresión textual:

	Variable String nombre
	Set nombre = "Miguel"
				

Para variables de tipo Image, el valor puede ser tanto una expresión textual que referencie el nombre del fichero de imagen, como el nombre de otra variable del mismo tipo:

	Variable Image iconoFlor = "flor.png"
	Variable Image icono
	Set icono = iconoFlor
	Image 100 100 icono
				

Para variables de tipo Sound, el valor puede ser tanto una expresión textual que referencie el nombre del fichero de sonido, como el nombre de otra variable del mismo tipo:

	Variable Sound click
	Set click = "sonido_click.wav"
				

String( número ) -- Función

Convierte una expresión numérica, en su equivalente textual:

	Variable Number valor = 5
	Variable String texto = String(valor)
				

Sound sonido -- Instrucción

Emite el sonido indicado por la expresión de sonido:

	Variable Sound sonidoError = "fail.wav"
	Sound sonidoError
				

TextHeight( texto ) -- Función

Devuelve la altura de una expresión textual, en pixels:

	Variable Number altoEnPixels = TextHeight("Texto de prueba")
				

TextWidth( texto ) -- Función

Devuelve la anchura de una expresión textual, en pixels:

	Variable Number anchoEnPixels = TextWidth("Texto de prueba")
				

Variable tipo nombre {= valor} -- Instrucción

Variable tipo nombre[tamaño] -- Instrucción

Crea una variable o array del tipo especificado, y (opcionalmente) le asigna un valor del mismo tipo (sólo para variables).

El tipo, puede ser uno de los indicados en la tabla.

Tipos
Tipo Significado
Number Para variables de tipo numérico
String Para variables de tipo textual
Image Para variables de tipo imagen
Sound Para variables de tipo sonido

El valor se indica mediante una expresión del tipo correspondiente: numérica, textual, de imagen, o de sonido:

	Variable Number edad = 10
	Variable Number precio
	Variable String nombreCompleto = nombre + apellidos
	Variable Sound sonidoFin = "game_over.wav"
	Variable Image fondoVentana = "selva.png"
	Variable String alumnos[50]
				

Wait milisegundos -- Instrucción

Realiza una pausa, de la duración indicada mediante una expresión numérica:

	' Parar 1 segundo la ejecución del programa:
	'
	Wait 1000