Buscar este blog

viernes, 28 de junio de 2013

Secuencia

Una de las primeras cuestiones a aprender, en cuanto a programación estructurada es la secuencia, o lo que es lo mismo, comprender que las instrucciones (sean las que sean) que se ponen unas detrás de las otras se ejecutan en el mismo orden en el que se escribieron. ¡Tan sencillo como esto! Para comenzar, utilizaremos el módulo turtle. Este módulo permite manejar una tortuga por la pantalla, de tal manera que podemos hacer dibujos sencillos, ya que la tortuga deja rastro a medida que avanza. ¿Cuál va a ser el objetivo? Nada más y nada menos que hacer un dibujo de una escalera. ¿Fácil, verdad? Para poder utilizar el módulo de la tortuga, turtle, debemos indicarle a jC que lo necesitaremos, y para eso se emplea la sentencia import. El módulo de la tortuga necesita del módulo de funciones gráficas (gw), así que será necesario importarlo también:
import gw;
import turtle;
De acuerdo, ahora sólo es necesario empezar a darle órdenes a la tortuga. Para comprobar qué funciones soporta, sólo es necesario pulsar F1 y hacer click en el módulo de la tortuga. Para hacer que la tortuga avance, es necesario emplear la función forward(), y tenemos que pasarle la distancia a avanzar.
import gw;
import turtle;

turtle.forward( 25 );
¡Fantástico! La tortuga ha avanzado 25 pixels, con lo cuál ha visualizado una pequeña línea recta. Quizás te preguntes dónde está la tortuga. La tortuga en sí no se ve, aunque estaría al final de lo último que has dibujado. Los gráficos de tortuga tienen su origen en el lenguaje de programación LOGO, que fue creado precisamente para enseñar a los principiantes a programar, con la ventaja de apreciar sus avances visualmente. Hay una línea separando los imports de la llamada a forward() porque así queda más claro. Las líneas en blanco no son significativas, podríamos dejar veinte si quisiéramos. O ninguna. Pero es importante que el programa sea fácil de leer, incluso por ti mismo, cuando lo retomes dentro de un tiempo. Así que cuanto más claro esté el código (el código o el código fuente son las instrucciones del programa), mejor. USamos la funciión forward(), pero... ¿qué es una función? Si en un programa logramos que se realice una tarea poniendo una instrucción después de otra, una función es un conjunto de instrucciones que ha preparado alguien, con un nombre determinado, para lograr una tarea determinado. En concreto, forward() es una secuencia de instrucciones que ha preparado servidor para que la gente no tenga que programar el comportamiento de la tortuga una y otra vez: sólo úsalo. Las veces que haga falta. La primera instrucción que hemos utilizado ha sido turtle.forward( 25 ). En realidad, habría sido igual de efectivo indicar exclusivamente forward( 25 ). Estrictamente, la parte turtle. sólo hace referencia al módulo donde está la función a continuación, forward(). Como no hay ambigüedad, (no estamos utilizando una función que esté creada en otro módulo con el mismo nombre), no sería necesario, como decía, añadir el prefijo turtle. Pero nos sirve como documentación, de forma que sabemos que es exactamente ese módulo el que queremos usar. Hagamos algo más. Si giramos la tortuga noventa grados, conseguiremos que "apunte" hacia abajo, y entonces podremos avanzar otro poco, haciendo un escalón. Para girar, tenemos las funciones turnRight() y turnLeft() del módulo de la tortuga.
import media.gw;
import media.turtle;

turtle.forward( 25 );

turtle.turnRight( 90 );
turtle.forward( 25 );
De acuerdo, las instrucciones se ejecutan una detrás de la otra: avanzamos hacia la derecha (al principio, la tortuga apunta hacia la derecha por defecto), giramos noventa grados, avanzamos de nuevo... y con eso se ha dibujado un escalón en la pantalla. Vamos por buen camino. Ahora sólo es necesario repetir lo de antes, para conseguir una escalera completa. De acuerdo, sólo será necesario copiar las instrucciones que ya tenemos ahora (menos los imports) y pegarlas tres veces para conseguir una escalera de tres peldaños. ¡Vaya, pues no funciona! Si lo has probado, comprobarás que no sale una escalera. Tiene sentido, una vez que completamos un peldaño, debemos hacer que la tortuga mire hacia la derecha de nuevo. Es mejor borrarlo todo y volver a empezar. Partir del listado de más arriba. Hemos aprendido que copiar y pegar, sin pensar en lo que estamos haciendo, no es una buena idea. Para colocar la tortuga apuntando hacia la derecha, debemos girarla noventa grados en sentido contrario hacia donde la giramos antes. Es decir, para tener dos escalones:
import media.gw;
import media.turtle;

turtle.forward( 25 );

turtle.turnRight( 90 );
turtle.forward( 25 );

turtle.turnLeft( 90 );
turtle.forward( 25 );

turtle.turnRight( 90 );
turtle.forward( 25 );
No queda muy claro lo que estamos haciendo. Es fácil perderse viendo el código fuente. Para clarificarlo, incorporaremos comentarios dentro del código, que nos digan lo que hace cada grupo de instrucciones. Pero claro, no podemos permitir que se compilen esos comentarios... ¡sería desastroso!. Si empezamos una línea con //, haremos que esa línea no se compile, pudiendo poner a continuación lo que queramos.
import media.gw;
import media.turtle;

// Escalón inicial
turtle.forward( 25 );

turtle.turnRight( 90 );
turtle.forward( 25 );

// Escalón siguiente
turtle.turnLeft( 90 );
turtle.forward( 25 );

turtle.turnRight( 90 );
turtle.forward( 25 );
De acuerdo, ahora sí. Si copiamos y pegamos las instrucciones desde el comentario de Escalón siguiente, hasta el final, podemos incorporar todos los peldaños que queramos, simplemente según el número de veces que peguemos. El código final es:
/** @name   escalera
  * @brief  Dibuja una escalera en pantalla
  * @author jbgarcia@uvigo.es
  * @date   2013-06-28
  */

import media.gw;
import media.turtle;

// Escalón inicial
turtle.forward( 25 );

turtle.turnRight( 90 );
turtle.forward( 25 );

// Escalón siguiente
turtle.turnLeft( 90 );
turtle.forward( 25 );

turtle.turnRight( 90 );
turtle.forward( 25 );

// Escalón siguiente
turtle.turnLeft( 90 );
turtle.forward( 25 );

turtle.turnRight( 90 );
turtle.forward( 25 );
La primera parte es un comentario especial. Cuando empezamos un párrafo por /*, ese párrafo no se compila. Si se empieza por /**, entonces es que se trata de un comentario de documentación. Si pulsas F4 (una vez introducido y ejecutado el programa), verás la documentación generada a partir de ese comentario.

lunes, 24 de junio de 2013

¡Hola, mundo!

Bueno, esto es un clásico. ¿Cómo podemos saber que tenemos bien instalado jC, y que podemos empezar a probar cosas?¿Cómo hacernos con lo más básico del lenguaje? La respuesta es un clásico: un programa que visualice por pantalla un saludo, como "¡Hola, mundo!", por ejemplo.

Al arrancar jC, la pantalla inicial no es demasiado intuitiva. La forma de empezar a trabajar con jC es escoger el primer icono de la barra de herramientas (el folio con un asterisco abajo a la derecha). Si se prefiere, también se puede escoger Archivo >> Nuevo >> Programa, o incluso pulsar Ctrl, y sin soltarla, pulsar la tecla 'N' (esto se suele abreviar como Ctrl+N).

Aparece entonces un cuadro de diálogo para que indiquemos un nombre de archivo. Este archivo es donde se va a guardar el sencillo programa que vamos a crear. Para comenzar, escogemos un directorio y tecleamos el nombre del programa, que será: "holamundo". Automáticamente se añadirá la extensión .jc. Una vez hecho esto, pulsamos en "Guardar" o "Save", y entonces podremos empezar a trabajar.

jC nos ofrece una plantilla para ir comenzando, pero lo cierto es que es muy pronto para saber qué es lo que hace todo esto. Por ahora, lo borramos todo, y dejamos sólo el primer import: import std.io;. La librería estándar io es necesaria para poder utilizar una función que nos permita visualizar algo por pantalla, así que con import se incluye.

Las funciones ofrecen funcionalidades (nunca mejor dicho) que necesitaremos frecuentemente. Alguien (en este caso, servidor), se ha preocupado de prepararlas para que estén disponibles para los programadores. Veremos en detalle más adelante qué es una función, pero por ahora dejémoslo estar. Debemos llamar a la función print de io, y para hacer eso ponemos el nombre de la función, y entre paréntesis, los datos que necesita para funcionar. En este caso, la función print() necesita saber qué debe visualizar. Queremos que visualice texto, y el texto se introduce como tal, pero encerrado entre comillas. Así que finalmente, el programa queda como sigue:

import std.io;

print( "¡Hola desde jC!" );

El resultado es que esperaríamos: la frase que le hemos pasado a print() aparece en la pantalla. Bueno, ya sabemos cómo hacer algo tan sencillo como esto, ¡ahora hay que seguir avanzando por las lecciones!

viernes, 21 de junio de 2013

Instalación

La instalación de jC es muy sencilla, y aquí la veremos paso a paso, tal y como se describe en su página web.

  1. jC necesita de Java para funcionar. Se trata de pulsar en Descargar/Download y ejecutar el instalador. Una vez hecho esto, sólo será necesario pulsar Siguiente/Next hasta terminar con la instalación.
    Es probable que ya se tenga Java instalado. En este caso, no será necesario hacer nada.
  2. La instalación de jC también es muy sencilla. Se descarga el instalador multiplataforma (o el instalador para Windows, si se está usando dicho sistema operativo), y se ejecuta. Entonces comienza el proceso de instalación, cuyos pasos más importantes son la selección del idioma, el acuerdo de licencia, la selección del directorio de instalación, y la creación de accesos directos.
    1. Selección del idioma.
      Aparecerá seleccionada la lengua que se está utilizando el sistema operativo. Si esto no es así, se despliega la lista y se selecciona Español o Inglés, los dos idiomas soportados.
    2. La pantalla de bienvenida aparece entonces. En esta pantalla no es necesario hacer nada, tan sólo pasar a la siguiente.
    3. Lo mismo para la pantalla del acuerdo de licencia. Sólo es necesario seleccionar Acepto el acuerdo, y a continuación, pulsar en Siguiente.
    4. A continuación, es necesario seleccionar el directorio donde se va a instalar jC. Es seguro dejar el directorio que sugiere la aplicación, pero no es obligatorio. Es perfectamente posible instalar jC en el escritorio, por poner un ejemplo extremo.
    5. A continuación, se copian los archivos en el directorio de instalación.
    6. La instalación ya casi ha terminado. Simplemente quedan por elegir los accesos directos que se crearán. Al margen de los accesos directos que se creen, siempre será posible navegar hasta el directorio de la aplicación, y hacer doble click en jcv.jar.
Una vez seguidos todos estos pasos, tan solo resta ejecutar jC, bien a través del acceso directo en el menú de aplicaciones del sistema, bien navegando hasta el directorio de la aplicación, y haciendo doble click en jcv.jar.

jC

Bienvenido a la primera entrada de este blog.

La idea es ir descubriendo, poco a poco, pequeñas cosas sobre jC, a modo de pequeñas lecciones.

jC es un lenguaje de programación estructurado, ideal para el principiante. Es capaz de soportar a aquel que no tiene ni idea, así como al ya iniciado.

Dispone de capacidades gráficas simples y de consola.

Se puede encontrar aquí.