El lenguaje de programación iJava (2)

Entorno de programación

Para escribir un programa en iJava usaremos la página crea en donde podemos encontrar un un recuadro en blanco para escribir nuestros programas, una zona cuadrada gris oscura en donde aparecerán los gráficos que nuestros programas dibujen y una zona inferior blanca, que sólo se muestra al probar los programas, y en la que aparecerán mensajes de texto que genere nuestro programa.

Un programa en iJava siempre incluye una función principal denominada main sin parámetros y cuyo tipo es void. De este modo el programa más pequeño que podemos escribir en iJava tendrá esta forma:

void main() {
}

A medida que escribamos nuestro programa es posible que aparezcan mensajes de error en la parte inferior indicando qué hemos hecho mal y cuál puede ser la solución. Una vez que nuestro programa no tenga errores podremos darle un nombre y guardarlo, si tenemos cuenta de usuario y estamos registrados, y probarlo pulsando en el botón probar. El botón nuevo nos permitirá crear un nuevo programa desde cero así que conviene guardar el anterior antes de pulsarlo.

El programa anterior, aunque es correcto, no hace nada. Para que haga algo debemos añadir instrucciones en su interior, es decir, entre las dos llaves (caracteres { y }). Las instrucciones más sencillas que podemos utilizar son las que sirven para pedir al ordenador que haga alguna de las tareas que ya sabe hacer. A estas tareas las llamamos funciones de biblioteca y nos permitirán, por ejemplo, dibujar un circulo en la pantalla. Para conseguirlo escribe y prueba el siguiente programa

void main() {
	ellipse(160,160,100,100);
}

Funciones

El programa anterior incluye una única instrucción terminada con punto y coma. Podemos escribir todas las que queramos una detrás de otra, pero siempre acabando cada una con punto y coma ya que ese símbolo es el que sirve en iJava para separar dos instrucciones. Esa instrucción consiste en la petición al ordenador de que lleve a cabo la función llamada ellipse que es una de las funciones gráficas incluidas en la biblioteca de funciones de iJava.

Cada función tienen un objetivo concreto, el de la función ellipse es dibujar una elipse. Pero podemos indicarle al ordenador dónde y con qué tamaño dibujarla a través de los parámetros que tiene la función. Los parámetros se indican separados por comas y encerrados entre paréntesis. Las funciones pueden o no tener parámetros y el número y tipo de los mismos también es propio de cada función. Para saber como usar cada función podemos usar la referencia rápida que en la parte inferior de la página crea.

Funciones Gráficas

La función ellipse, como el resto de las funciones de biblioteca para manejar gráficos, muestra sus resultados en el cuadrado situado a la derecha de la zona donde se escribe el código al que llamamos pantalla. Esta pantalla tiene un tamaño de 320 por 320 puntos. La esquina superior izquierda corresponde a la posición (0,0), y la esquina inferior derecha a la posición (319,319). Prueba a modificar el programa anterior añadiendo más instrucciones cambiando los parámetros para modificar la posición y tamaño de las elipses que se dibujan.

A continuación tienes una lista con todas las funciones de biblioteca que nos permiten hacer dibujos en la pantalla y pinchando en cada una de ellas accederás a un programa escrito junto con la explicación de los parámetros que tienen.

Cuando se dibuja una figura con cualquiera de las funciones anteriores el contorno se pinta de color negro y el interior de color blanco. Para dibujar una figura con otros colores tenemos que elegirlos antes de usar la función que dibuje la figura. Para elegir el color del contorno usaremos la función stroke y para elegir el color de relleno la función fill. También es posible elegir el grosor de los contornos con la función strokeWeigth. El siguiente programa muestra cómo se utilizan estas tres funciones

void main() {
	// Fijo el color de fondo a gris claro
	background(192,192,192);
	// Fijo el grosor de los contornos a 5 puntos
	strokeWeight(5);
	// Elijo rojo puro para el color de los contornos
	stroke(255,0,0);
	// Elijo amarillo puro para el color de relleno
	fill(255,255,0);
	point(160,160);
	// Elijo verde puro para el color de los contornos
	stroke(0,255,0);
	line(10,10,310,10);
	// Elijo azul puro para el color de los contornos
	stroke(0,0,255);
	ellipse(160,50,300, 40);
	// Elijo negro puro para el color de los contornos
	stroke(0,0,0);
	triangle(10,100, 310, 100, 160,150);
	// Elijo gris para el color de los contornos
	stroke(128,128,128);
	// Elijo cyan para el color de relleno
	fill(0,255,255);
	rect(10,170,300, 50);
}

En el programa anterior, lo primero que se hace es cambiar el color de fondo usando la función background. Después dibuja una figura de cada tipo y utiliza la función strokeWeight al comienzo para fijar el grosor de los contornos a cinco puntos. Una vez fijado se mantiene así hasta el final del programa o hasta que se cambie de nuevo. Como en este programa no vuelve a cambiarse el grosor todas las figuras aparecen con un contorno de cinco puntos. Las funciones stroke y fill se comportan del mismo modo, es decir, una vez que se elige el color de contorno o relleno todas las figuras que se dibujen a continuación usarán esos colores. Por eso, sólo el rectángulo aparece relleno de color cyan ya que justo antes se cambia el color de relleno, el resto de figuras se rellenan de amarillo que es el color de relleno elegido al comienzo del programa.

En iJava se utiliza el modelo de componentes RGB para trabajar con colores. Esto significa que cualquier color se define mediante tres números enteros entre 0 y 255. También es posible crear colores transparentes añadiendo una cuarta componente llamada alpha que será un número real entre 0 y 1. Para que resulte más fácil elegir el color las funciones de biblioteca que sirven para definir colores aparecen en el código del programa subrayadas y si pinchamos en ellas se despliega un selector de color en el que puedes elegir el color que desees y el nivel de transparencia que necesites.

Para que no se dibujen los contornos o no se rellenen las figuras se utilizan las funciones noStroke y noFill respectivamente.

Además de dibujar figuras es posible dibujar texto en la pantalla. Para ello usamos la función text indicando el mensaje a mostrar, y la posición de la parte izquierda del renglón donde se situará el texto. El texo se dibuja con una letra de 14 puntos de ancho pero es posible modificarlo usando la función textSize. Por último, la función textWidth nos permite saber la anchura de un texto en función del tamaño de letra que haya configurado en ese momento.

Finalmente, iJava incluye una función para dibujar imágenes. Las imágenes deben estar en alguna página web pública y se deben respetar los derechos de autor a la hora de utilizarlas. Para dibujar una imagen usaremos la función image.

Funciones para mostrar información

Cuando se ejecutan los programas, en la parte inferior de la ventana aparece un recuadro gris claro donde se van a mostrar todos los mensajes de texto que genere nuestro programa. Es decir, ese será el dispositivo de salida. A continuación tienes una lista con las dos funciones de biblioteca que nos permiten mostrar mensajes. Pinchando en cada una de ellas accederás a un programa escrito junto con su explicación.

La información que podemos mostrar con las funciones print y println puede ser un valor literal, es decir, escrito directamente como parámetro. La función println se usa habitualmente para mostrar un texto, los textos se encierran entre comillas dobles como se puede ver en el siguiente programa mientras que los números se escriben de la forma habitual e incluso es posible usar la notación cietífica para expresarlos.

void main() {
	println(2);
	println(1.35);
	println(0.135E+2);
	println("Hola mundo!!");
}

Pero además de valores literales, print y println también pueden mostrar el resultado de un cálculo. El ordenador, como cualquier calculadora, es capaz de hacer operaciones matemáticas. Para expresarlas utilizaremos los símbolos +, -, *, / para indicar las operaciones aritméticas básicas, y el símbolo % para obtener el resto de la división. También se pueden utilizar paréntesis para agrupar los términos.

void main() {
	// Muestra 1 más el resultado de multiplicar 2 y 3
	println(1 + 2 * 3);
	// Muestra el resultado de multiplicar 3 por la suma de 1 y 2
	println((1 + 2) * 3);
	// Muestra el resto de dividir 5 entre 2
	println(5 % 2);
	// Muestra el resultado de dividir 1 entre 2 cuando ambos números son enteros
	println(1 / 2);
	// Muestra el resultado de dividir 1 entre 2 cuando ambos números son reales
	println(1.0 / 2.0);			
}

En el programa anterior también aparece una de las dos formas en que podemos introducir comentarios en nuestros programas. Los comentarios los escribimos para explicar qué hace nuestro programa. Sirven para que otras personas o incluso nosotros mismos entendamos mejor el programa pero el ordenador los ignora completamente. Un comentario de una línea se escribe empezando por dos barras inclinadas // y un comentario de múltiples líneas se escribe encerrando todo el texto entre las marcas /* y */.

Las expresiones aritméticas que hemos visto cómo escribir en el programa anterior son calculadas por el ordenador y, en ese caso, su resultado es utilizado como parámetro de la función println.Aunque también podemos utilizar expresiones aritméticas como parámetros de cualquier función.

Funciones matemáticas

Además de las operaciones aritméticas básicas también suele ser necesario realizar otras operaciones matemáticas más complejas como raíces cuadradas o cálculos con ángulos. Para realizar todas estas operaciones iJava incluye las siguientes funciones matemáticas.

Todas las funciones matemáticas devuelve un resultado que podemos utilizar independientemente o como un operando más de una expresión aritmética. Por ejemplo, el siguiente programa muestra primero cuánto vale la raíz cuadrada de 2, después el valor de la raíz de 3 y finalmente el resultado de sumar ambas.

void main() {
	// Muestra la raiz de 2
	println(sqrt(2));
	// Muestra la raiz de 3
	println(sqrt(3));
	// Muestra la suma de ambas
	println(sqrt(2)+sqrt(3));
}

Es importante entender el orden en que se ejecuta el programa. En la primera instrucción, iJava lo primero que hace es pasar el valor 2 a la función sqrt para que esta pueda calcular la raíz cuadrada de 2. Después, usa el resultado que devuelve dicha función como parámetro de la función println que se encarga de mostrar ese valor por la pantalla. La segunda instrucción se comporta de forma similar mientras que en la tercera, lo primero que hace iJava es calcular el resultado de la raíz cuadrada de 2 usando la función sqrt, después hace lo propio con la raíz cuadrada de 3, posteriormente calcula el resultado de sumar ambos valores y ese número es el que le pasa a la función println para que aparezca por la pantalla.

Todas las funciones matemáticas esperan números que pueden ser enteros o reales aunque los interpretan como si fueran reales. Sin embargo, mientras que las funciones log, sqrt, pow, sin, cos, tan, asin, acos y atan devuelven un número real, las funciones abs, floor, ceil y round devuelven un número entero.

iJava incluye otra función que, aunque no es exactamente una función matemática, puede sernos de utilidad en muchos casos. Se trata de la función random que sirve para generar un número aleatorio. Esta función puede ser utilizada sin parámetros, con uno o con dos. Cuando la usamos sin parámetros devuelve un número real aleatorio entre 0 y 1, cuando le ponemos un parámetro el número aleatorio se genera entre 0 y el valor del parámetro, y si ponemos dos, el número aleatorio se genera en el intervalo indicado por ambos parámetros.

Fecha y hora

iJava también incluye algunas funciones para conocer la fecha y la hora del ordenador donde se está utilizando. Las funciones son las siguientes:

Además también existe la función millis() que devuelve el número de milisegundos que han transcurrido desde que empezó el programa. Esta función suele usarse en programas con animaciones para controlar el progreso de las mismas.

Sigue aprendiendo en El lenguaje de programación iJava (2)