QBasic tutorial 10

Bienvenido al tutorial 10. Antes de explicarte qué es un procedimiento déjame adentrarte algo llamado Subrutina. Las subrutinas son secciones de código que se dejan para acceso fácil y básicamente para colocar bien el código en QBasic para que sea fácil de leer y escribir. Primero déjame explicar los dos comandos que harán todo el trabajo en QBasic.

Gosub

Un comando "GOSUB" es una sentencia de control que se extiende a otra parte del programa. En otras palabras, une parte de tu programa básico a otra parte del programa cumpliendo alguna clase de acción. Con el comando "GOSUB" necesitarás una etiqueta específica. Una etiqueta es una parte que se encadenará con "GOSUB", ahora te mostraré un ejemplo de programación dentro de un momento.

Return

El comando "RETURN" permite saltar atrás o a una etiqueta. Por ejemplo puedes tener "GOSUB" en una parte de tu programa para poder volver atrás o para continuar más tarde. El método es diferente y todos los tipos de programas pueden ser construidos. Aquí hay un simple comando de programación usando estos dos comandos.
CLS
PRINT "Un simple programa GOSUB"
PRINT "-------------------------------------"
PRINT "En principio vamos a saltar a otro programa y escribir algo"
GOSUB hola
PRINT "Finalmente, hemos regresado con seguridad"
END
hola:
PRINT "Hola, estamos saltando"
PRINT "Vamos a regresar y finalizar el programa"
RETURN

Como puedes ver todo parece bastante sencillo. En principio estamos haciendo las mismas cosas que has aprendido en tutoriales anteriores. La parte importante es la sentencia "GOSUB hola". Dentro de esta línea estamos contando a dónde va el programa y encontrando la etiqueta llamada "hola". Así el programa busca el resto del programa hasta que la etiqueta es parecida, que es la etiqueta que contiene a "hola". Continúo dentro de la etiqueta "hola", está el código que la ejecuta. El código simplemente escribe un simple texto en la pantalla. Una vez que ha hecho esto, salta hacia atrás a donde viene, que es la sentencia "GOSUB". El ordenador recuerda toda esta información una vez que la sentencia "GOSUB" ha sido alcanzada. Para poner esta teoría en un ejemplo escribiremos otro programa corto que saltará a dos lugares diferentes en el programa. Escribe lo siguiente y presiona "F5" para correrlo.

CLS
PRINT "Otro simple programa GOSUB"
PRINT "---------------------------------------"
PRINT "En principio vamos a saltar a la Primera Etiqueta"
GOSUB etiqueta1
PRINT "Hemos finalizado, volvemos con seguridad a la etiqueta1"
PRINT
PRINT "Después vamos a saltar a la Segunda Etiqueta"
GOSUB etiqueta2
PRINT "Hemos finalizado, volvemos con seguridad a la etiqueta2"
END
etiqueta1
PRINT "Hola he saltado a la Etiqueta1"
PRINT "Vamos a regresar y saltar de nuevo.
RETURN
etiqueta2
PRINT "Hola vamos a saltar a la Etiqueta2"
PRINT "vamos a regresar y finalizar el programa.
RETURN

Como puedes ver es bastante usual hacer subrutinas en algunos programas de QBasic. Déjame simplemente aconsejarte sobre un par de cosas:

1. Asegúrate de no usar palabras reservadas como "PRINT", "STOP", "LOCATE", etc para tus etiquetas.
2. Asegúrate de llamar a tus etiquetas por algunos nombres significativos que tengan que ver con lo que la subrutina está haciendo. Por ejemplo podrías llamar "puntos: a la subrutina puntuación de un juego.
3. Las etiquetas de subrutina siempre tienen dos puntos al final. Si te olvidas de ella te dará un error.

Programando un ejemplo de la selección 1

Aquí hay un par de ejemplos de programas que debes querer intentar. Yo he usado muchos comandos de totorales anteriores para mostrar cómo se encadenan los programas juntos.

Contraseña de programa

CL
PRINT "Contraseña del programa 2"
PRINT "-----------------------------------"
PRINT
INPUT "Por favor, introduce la contraseña:", contraseña$
IF contraseña$= "manzana" THEN GOSUB introduce ELSE GOSUB error
END
introduce:
CLS
PRINT " Bienvenido, lo has introducido correctamente"
RETURN
error:
CLS
PRINT "Lo siento, has metido la contraseña errónea"

El anterior es un simple programa que pregunta por una contraseña. Necesitas meter "manzana" para tener éxito, si no el programa dirá que has metido la contraseña errónea.

Menú del programa

 
CLS
PRINT "Menú del programa"
PRINT "--------------------------"
PRINT
PRINT "1. Abrir Archivo"
PRINT "2. Salvar Archivo"
PRINT "3. Guardar Programa"
PRINT
regresar:
LOCATE 8, 10
INPUT "Selección:", número
IF número = 1 THEN GOSUB opción1
IF número = 2 THEN GOSUB opción2
IF número = 3 THEN GOSUB opción3 ELSE GOSUB regresar
opción1:
LOCATE 10, 10
PRINT "Opción 1 Seleccionada"
RETURN
opción2:
LOCATE 10, 10
PRINT "Opción 2 Seleccionada"
RETURN
opción3:
LOCATE 10, 10
PRINT "Has finalizado el programa"
END

El anterior programa te permite seleccionar 1,2 ó 3. Dependiendo de la tecla que sea presionada lo encadenará a una etiqueta relevante pero se dejará para recordarte algo. Muchos usuarios usan este comando para acordarse de lo que la línea hace realmente. Debajo tienes un pequeño ejemplo.

CLS
REM "Debajo hay un simple Programa Escribiendo"
PRINT "HOLA"

Este programa es realmente básico pero todavía nos enseña este punto. Si lo que quieres realmente es llamar la atención puedes usar una ´ como rem. Aquí está como.

CLS
PRINT "HOLA" ´ Este comando escribirá la palabra´s "HOLA"

Cualquier cosa que aparezca después del símbolo ´ no será usado durante el programa. Debes intentar situar el símbolo ´ en su propia línea. Debajo tenemos otro simple programa de ejemplo.

CLS
´ Estamos imprimiendo "HOLA"
PRINT "HOLA"
´ Luego podemos terminar el programa con el comando "END"
END
Como puedes ver "REM" y el símbolo ´ es un comando usado que debes conocer. Es un excelente camino para comentar tu código de programación y que otros usuarios lo entiendan. Ahora deberías encontrar en alguno de mis programas ejemplos del uso de el comando "REM" y el símbolo ´. Intenta usarlo donde sea posible, no sabes que fácil es olvidar lo que hace cada parte del programa

Introducción a los Subprocedimientos

Debo advertirte que algunas cosas pueden parecerte un poco complicadas cuando empieces a leer la siguiente parte del tutorial. Si te pierdes, por favor, intenta leerlo de nuevo hasta que sea de sentido común. Sin embargo intentaré hacer las cosas lo más fácil de entender que sea posible.
El Subprocedimiento funciona de modo un poco diferente que las subrutinas, como expusimos arriba. Con un Subprocedimiento tú puedes trabajar en una parte particular del programa sin que el resto intervenga. Por ejemplo podrías escribir el menú de un programa y poner los detalles del menú de cada programa separados fuera de tu programa, pero poder acceder a él muy fácil. Déjame darte una perspectiva más de esto.
Por ejemplo si has escrito un juego de ordenador que permite matar alienígenas. Cad vez que un alien ha sido disparado incrementas tu puntuación en 50. Podrías crear un subprocedimiento para hacer esto sin tener que escribir el código una y otra vez. Antes de enseñarte cómo escribir un Subprocedimiento completo, déjame enseñarte cómo crear uno dentro del Editor de QBasic.

Cómo crear un Subprocedimiento

Asegúrate de que has empezado con una pantalla limpia, si no la tienes, por favor selecciona "NEW" desplegándolo del archivo "FILE" del menú. En cuanto está hecho estamos preparados para crear un Nuevo Subprocedimiento. Escribe "SUB hola". Una vez que lo has hecho y pulsado return, debes ahora meter el Subprocedimiento en el modo edición. Ésta es la parte desarrollada abajo.

Usuario del Microsoft QuickBasic

La anterior teoría funciona bien con QuickBasic, pero también podrías hacer esto. Dentro del editor de QBasic mueve tu ratón sobre el menú desplegable de "EDIT" y pulsa sobre "NEW SUB". Si no tienes ratón, pulsa simultáneamente ALT+E. Esto desplegará el menú "EDIT" hacia la barra de título. Ahora mueve con la flecha la marca brillante hacia la opción "NEW SUB". Ahora pulsa return.
Una vez que has hecho lo que expliqué arriba debería aparecer una ventana preguntando por el nombre del nuevo New Sub. Llamémosle "hola". Escribe la palabra "hola" en la caja "nombre:". Si haces ahora un click ( pulso con el ratón) o pulsas return sobre la caja "OK", tu área de pantalla cambiará y te presentará algo que parece un poco diferente. La presentación debería ser como esto.

Tu menú de opciones puede ser diferente al mío. Esto es porque estoy usando la versión comercial de QBasic llamada QuickBasic. No te preocupes por esto por que todo lo que te explico funcionará igual.

Como puedes ver en la pantalla mostrada arriba tú área de trabajo debería tener sólo líneas escritas. Hay "SUB hola" seguidos en la siguiente línea de "END SUB". Entre estas dos líneas debes meter todo el código que quieras hacer. Escribe lo siguiente en la ventana del Editor.

 
SUB hola
PRINT "Hola, has accedido a un subprocesador."
END SUB

Una vez hecho esto, ahora estás preparado para continuar escribiendo el programa en la forma que lo has hecho en tutoriales anteriores. Básicamente puedes olvidar cómo lo has escrito hasta ahora. Para regresar a la pantalla que tiene el programa necesitas seleccionar "VIEW" en el menú desplegable. Puedes hacer esto como antes con "EDIT", pero en vez de hacer click sobre "EDIT" hazlo sobre "VIEW" con tu ratón. De nuevo puedes presionar ALT + "V" para hacerlo. Una vez el menú desplegable aparece deberías tener algo como esto.

Mueve la barra de selección de menú al detalle "SUBs" , una vez que brille haz un click sobre el botón del ratón presiona la tecla "Return". Recuerda que mi menú puede parecer diferente porque estoy usando una versión comercial de QBasic. Una vez que hayas echo esto debe ser introducido en otra pantalla en una ventana diferente. Deberás tener algo como lo siguiente.

*Nota:

Item significa detalle, cancel cancelar y help ayuda.

Ahora verás la palabra "Sin Título" reluciendo en la ventana. La palabra "Sin Título" es el nombre de tu programa principal. Esto es llamado Módulo. Tu programa principal (módulo" se llamará o encadenará al Subprocedimiento para cumplir su tarea. Tu programa principal (módulo) es llamado "Sin Título" seguido del nuevo Subprocedimiento llamado "hola". Para que nosotros podamos llamar este nuevo procedimiento "hola" necesitamos volver a situarnos en el programa principal (modulo). Podemos hacer esto con dos clicks seguidos sobre la pantalla llamada "Sin Título" o presionando la tecla return ahora. Nosotros también podemos presionar el botón "Edit activo" con el ratón.

Si haces lo anterior correctamente entrarás ahora en el programa principal (módulo). Este es donde estábamos al principio antes de meterte en todos estos procedimientos. Tú probablemente estés dando gracias al cielo por ello.

O.k., ahora estarás preparado para escribir un programa nombrando o encadenando el subprocedimiento que has creado. Esta es una parte probablemente fácil, sin embargo para castigarte te adentraré en un nuevo comando de QBasic.

Declare

Cada vez que creas un nuevo Subprocedimiento debes declarar su uso en el programa principal (módulo). La razón es muy simple, todo el tiempo que el programa se corre en QBasic necesitas contar al programa cada Subprocedimiento que está allí para ser usado. Así en la construcción del actual programa vamos a crear un Subprocedimiento simple. Pero para poder usarlo tenemos que informar a QBasic que está allí disponible para usar. En principio vamos a mirar los métodos básicos de la sentencia "DECLARE". Para decirnos que tenemos un Subprocedimiento llamado "hola" debemos teclear primero esta línea en la ventana del programa principal (módulo), que deberías tener en frente de ti ahora y no debería contener ningún código de programación en ella. Por favor, introduce el siguiente código.
DECLARE SUB hola ()
CLS
hola
La sentencia "DECLARE" funciona así. En principio estamos diciendo que el Subprocedimiento se llama "hola", como ya sabes. En segundo lugar tenemos algunos paréntesis de abrir y cerrar. Estos paréntesis representan algún argumento que vamos a añadir después. No te preocupes por esto por ahora, sólo asegúrate de introducirlos en el programa siempre a menos que te digan lo contrario.
La siguiente línea os limpia la pantalla. La siguiente línea es una parte interesante. Allí es dónde ocurre todo lo interesante. Ahora estamos llamando a un Subprocedimiento llamado "hola" que habíamos escrito previamente. Todo lo que necesitas hacer es escribir el nombre del Subprocedimiento y correrlo todo dentro del subprocedimiento, dentro del programa. Es muy fácil de entender una vez que sepas cómo. Presiona "F5" para correr el programa y ver qué sucede.
Así tenemos una introducción muy básica en Subrutinas y Subprocedimientos. Recuerda que este tutorial cubre de forma muy básica los subprocedimientos, sobre los que aprenderás más en tutoriales fufuros. En el siguiente tutorial escribiré un programa que usa no sólo un Subprocedimiento, sino un par, sólo mostrarte cómo funciona. Por ahora sigue programando y te veré pronto.

© 1995-97, etsimo WWW team