Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previaÚltima revisiónAmbos lados, revisión siguiente | ||
tutorial_de_aventuras_en_basic [2022/01/25 20:22] – peron | tutorial_de_aventuras_en_basic [2022/08/01 23:12] – peron | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== Tutorial de BASIC: "Crea tu propia aventura" | ====== Tutorial de BASIC: "Crea tu propia aventura" | ||
- | Este tutorial te presenta generalidades, pero está pensado siguiendo el dialecto GW-BASIC. | + | Este tutorial |
- | ¿Alguna vez has leído uno de esos libros de cuentos de "Sigue tu propia aventura"? | + | ===== Introducción ===== |
- | El programa que abordaremos en este tutorial presentan una pantalla llena de historias | + | ¿Alguna vez has leído uno de esos libros de cuentos de "Sigue tu propia aventura"? |
- | Para comenzar, ingrese estas primeras veintiocho líneas del programa exactamente como están escritas. Asegúrese | + | === Propuesta === |
+ | El microprograma [[historia.bas]] que abordaremos en este tutorial presentan una pantalla el relato, y te solicitará que tomes la decisión. Tu decisión hará que aparezca una segunda pantalla con la continuación | ||
+ | ==== ¡A programar! ==== | ||
+ | Para iniciar, abre el intérprete en tu [[emulador_de_terminal|terminal]]. Podrás utilizar [[bwbasic]]. Introduce el comando: | ||
- | < | + | <code> |
+ | bwbasic | ||
+ | </ | ||
+ | |||
+ | Para comenzar podrías tipear estas primeras veintiocho líneas del código BASIC exactamente como están escritas en tu intérprete de BASIC (por ejemplo, [[bwbasic|BwBASIC]])... ¡pero esto es engorroso! Simplemente //copia y pega//. Asegúrese de presionar **Intro** después de cada línea. | ||
+ | |||
+ | > Si deseas teclear el código BASIC, te doy una ayuda para ahorrar tiempo: luego de escribir la línea 70 y presionar **Intro**, puedes mover el cursor hacia atrás hasta el número de línea, cambiarlo a 80 y presionar Intro nuevamente. Esto ahorra mucho escribir. Ingresa el comando **LIST** con frecuencia para verificar tu progreso. | ||
+ | |||
+ | == Primera parte del código fuente en BASIC == | ||
+ | <code freebasic> | ||
10 REM ************************************************************* | 10 REM ************************************************************* | ||
20 REM * HISTORIA | 20 REM * HISTORIA | ||
Línea 43: | Línea 55: | ||
===== Comentarios ===== | ===== Comentarios ===== | ||
+ | Observa las líneas 10 a 40. '' | ||
- | Observa las líneas 10 a 40. REM es una declaración de BASIC que no hace nada, significa " | + | > Los comentarios son importantes. Cuando termines de escribir tu programa, probablemente comprendas todo de él. Sin embargo, transcurridos unas semanas te resultará irreconocible Los comentarios ayudan. A diferencia de la era del [[DTSS|BASIC de Darthmouth]], |
- | + | ||
- | > Los comentarios son importantes. Cuando termines de escribir tu programa, probablemente comprendas todo de él. Sin embargo, transcurridos unas semanas te resultará irreconocible Los comentarios ayudan. A diferencia de la era del [[DTSS|BASIC de Darthmouth]], | + | |
El pequeño rectángulo hecho de asteriscos se llamaba //caja de flores//. Se acostumbraba colocar el nombre del programa, en este caso, // | El pequeño rectángulo hecho de asteriscos se llamaba //caja de flores//. Se acostumbraba colocar el nombre del programa, en este caso, // | ||
- | ==== VARIABLES | + | ==== Variables |
- | La línea 270 es una instrucción **INPUT**. INPUT detiene el programa y espera la entrada del teclado. Lo ingresado con el teclado, en la línea 270, se almacenará en una // | + | La línea 270 es una instrucción **INPUT**. |
=== Nombres de Variables === | === Nombres de Variables === | ||
- | Los nombres de variables deben crearse de acuerdo con ciertas reglas en BASIC. Por ejemplo, los nombres de variables deben comenzar con una letra del alfabeto y no puede tener más de cuarenta caracteres. El nombre puede incluir números. Estas son las reglas de BASIC, y no son muy estrictas. ¡Pero es igual de importante inventar nombres de variables que sean significativos para los seres humanos! Después de todo, BASIC funciona igual de bien con una variable llamada TKBRYIOPESFG% que con una llamada OPCION%. Pero, ¿cuál crees que sería más fácil de entender? | + | Los nombres de variables deben crearse de acuerdo con ciertas reglas en BASIC. Por ejemplo, los nombres de variables deben comenzar con una letra del alfabeto y no puede tener más de cuarenta caracteres. El nombre puede incluir números. Estas son las reglas de BASIC, y no son muy estrictas. ¡Pero es igual de importante inventar nombres de variables que sean significativos para los seres humanos! Después de todo, BASIC funciona igual de bien con una variable llamada |
- | La elección de los nombres de las variables es importante ya que un programa puede tener muchas de ellas. Si usas nombres son confusos, podrías confundir accidentalmente una variable con otra. Por demás, resiste la tentación de inventar nombres de variables lindos e ingeniosos. Nombres como RENGO$ y PORDIOSERA$ son divertidos de imaginar pero difíciles para seguir. Un buen programa debe ser fácil de entender, por lo cual emplea nombres de variables obvios. NOMBRE$ no puede sonar muy épico, pero al menos es evidente qué datos incorpora. | + | La elección de los nombres de las variables es importante ya que un programa puede tener muchas de ellas. Si usas nombres son confusos, podrías confundir accidentalmente una variable con otra. Por demás, resiste la tentación de inventar nombres de variables lindos e ingeniosos. Nombres como '' |
- | Ciertas palabras no se pueden utilizar como nombres de variables. Estas se llaman PALABRAS RESERVADAS e incluyen todos los comandos de BASIC. Por ejemplo, sabemos que PRINT y CLS son instrucciones de BASIC. Por lo tanto, no podrás utilizarlos también como nombres de variables ya que confundirían al intérprete computarizado. La lista de palabras reservadas es bastante larga. Entre estas palabras se incluyen palabras como NAME y PRINT. Si bien no es posible duplicar exactamente estas palabras como nombres de variables, puede usar nombres que incluyan la palabra reservada, por ejemplo NAMES o PRINTER, que podrían utilizarse perfectamente. | + | Ciertas palabras no se pueden utilizar como nombres de variables. Estas se llaman PALABRAS RESERVADAS e incluyen todos los comandos de BASIC. Por ejemplo, sabemos que '' |
- | Aunque BASIC consta de una larga lista de palabras reservadas para el idioma inglés, es probable casi ninguna sea molesta en castellano. La mayoría son declaraciones bastante extrañas que no serían muy útiles como nombres de variables. Cuando utilices una palabra reservada como nombre de variable, BASIC emitirá su inefable error de sintaxis " | + | Aunque BASIC consta de una larga lista de palabras reservadas para el idioma inglés, es probable casi ninguna sea molesta en castellano. La mayoría son declaraciones bastante extrañas que no serían muy útiles como nombres de variables. Cuando utilices una palabra reservada como nombre de variable, BASIC emitirá su inefable error de sintaxis "**SYNTAX ERROR**". A menudo, este tipo de errores son desconcertantes. La línea de BASIC podría parecer correcta en todos los sentidos. BASIC ni siquiera insinúa que has utilizado una palabra reservada. BASIC solo entiende que tu programa ha estipulado un comando BASIC incorrectamente. Prueba un programa con la declaración |
Aquí hay una lista de las reglas para tu nombre de variable: | Aquí hay una lista de las reglas para tu nombre de variable: | ||
Línea 76: | Línea 87: | ||
- | Compara la declaración INPUT en la línea 270 con la declaración INPUT del capítulo uno. Observe los nombres de las variables utilizadas en cada programa. En el primer programa usamos el nombre QUIEN$. En la línea 270 tenemos OPCION%. Ambos nombres son variables. Sin embargo, son diferentes. QUIEN$ y OPCION% son ejemplos de dos //tipos diferentes de variables// utilizadas en BASIC. | + | Compara la declaración |
- | Anteriormente definimos un nombre de variable como un casilla de correo. Disponíamos de varios tipos de buzones. Dos números de espera. El otro tiene caracteres y números. Por lo tanto, cuando se define una variable, debes decidir qué tipo de buzón será. El tipo de variable está determinado por el último carácter del nombre de la variable. Esto explica la diferencia entre QUIEN$ y OPCION%. | + | Anteriormente definimos un nombre de variable como un casilla de correo. Disponíamos de varios tipos de buzones. Dos números de espera. El otro tiene caracteres y números. Por lo tanto, cuando se define una variable, debes decidir qué tipo de buzón será. El tipo de variable está determinado por el último carácter del nombre de la variable. Esto explica la diferencia entre '' |
- | Un nombre de variable terminado con signo de porcentaje (%) se denomina **variable entera**. Este tipo de variable solo puede contener números enteros. Esto significa que OPCION% solo puede contener números tales como 2, 45, 611 o 10451. No puede contener números fraccionales como 2,5 o 25,75. Por lo tanto, al programar con la instrucción INPUT OPCION%, el usuario solo podrá ingresar un número entero. Si ingresase letras, BASIC emitiría el mensaje: | + | Un nombre de variable terminado con signo de porcentaje ('' |
< | < | ||
Línea 86: | Línea 97: | ||
</ | </ | ||
- | ...y el programa no continuaría sino hasta que ingresase números enteros. Por otro lado, si el usuario ingresa un número que no es entero, BASIC lo redondeará al entero más cercano. Por ejemplo, si se ingresa 23.6 al pedido de OPCION%, BASIC asignará 24 a dicha variable, sin emitir mensaje de error alguno. Las variables enteras no pueden contener números no mayores de 32.767 ni menores de -32.768. | + | ...y el programa no continuaría sino hasta que ingresase números enteros. Por otro lado, si el usuario ingresa un número que no es entero, BASIC lo redondeará al entero más cercano. Por ejemplo, si se ingresa |
Para explorar cómo BASIC maneja las variables enteras, intente ingresarle a la variable varios números, tanto enteros como fraccionales, | Para explorar cómo BASIC maneja las variables enteras, intente ingresarle a la variable varios números, tanto enteros como fraccionales, | ||
- | < | + | < |
10 PRINT " | 10 PRINT " | ||
20 INPUT OPCION% | 20 INPUT OPCION% | ||
Línea 96: | Línea 107: | ||
</ | </ | ||
- | Un segundo tipo de variable se denomina **Variable de Precisión**, | + | Un segundo tipo de variable se denomina **Variable de Precisión**, |
> Sigue esta regla: usa variables enteras toda vez que puedas. Usa variables de precisión sólo cuando debas. | > Sigue esta regla: usa variables enteras toda vez que puedas. Usa variables de precisión sólo cuando debas. | ||
- | El último tipo de variable que exploraremos es la **Variable de Cadena** (STRING). El nombre de una variable de cadena termina con un signo peso ($). QUIÉN$ es una variable de cadena. Estas variables de cadena contienen caracteres en lugar de números. Una sola variable de cadena puede contener hasta 255 caracteres. Estos caracteres pueden ser cualquiera de caracteres alfanuméricos, | + | El último tipo de variable que exploraremos es la **Variable de Cadena** (STRING). El nombre de una variable de cadena termina con un signo peso ('' |
He aquí una pequeña posibilidad de confusión que debes atender. | He aquí una pequeña posibilidad de confusión que debes atender. | ||
- | Las cifras, no los números, pueden ser caracteres. Considera la diferencia entre numerales y números. El número | + | Los caracteres pueden ser cifras, no numéricas. Considera la diferencia entre numerales y números. El numeral |
Suena más complicado de lo que es en realidad. | Suena más complicado de lo que es en realidad. | ||
Línea 110: | Línea 121: | ||
> Recuerda: si necesita una variable que contenga caracteres, use una variable de cadena. Si, en cambio, necesita realizar un cálculo, usa un número entero o una sola variable de precisión. | > Recuerda: si necesita una variable que contenga caracteres, use una variable de cadena. Si, en cambio, necesita realizar un cálculo, usa un número entero o una sola variable de precisión. | ||
- | === Ejemplos de Variables === | ||
- | |||
- | |||
- | Study these example of variables to check your understanding. | ||
- | |||
- | Name Contents Description | ||
- | Team1$ Hokies Horrect. | ||
- | DATE$ Incorrect. DATE$ is a reserved word. | ||
- | NUMBER% 123 Correct. | ||
- | STREET% 10 downing incorrect. Integer variables can only contain a number. | ||
- | STREET$ 10 Downing correct | ||
- | 1STPLACE$ Incorrect. Variable names must begin with a letter. | ||
- | COUNT% 45321 Incorrect. Numbers larger than 32,767 cannot be held in an integer variable. | ||
- | GASLEFT! 855.66 Correct. | ||
- | TONE% 600.8 BASIC will round TONE% to 601. | ||
- | WHO$ Elmer P. Fudd Correct. | ||
===== IF - THEN - ELSE ===== | ===== IF - THEN - ELSE ===== | ||
- | En la línea 280 llegamos finalmente al verdadero poder de la programación: | + | En la línea 280 llegamos finalmente al verdadero poder de la programación: |
- | La declaración IF tiene tres partes: | + | La declaración |
- | < | + | < |
IF condición THEN alternativa1 ELSE alteranativa2 | IF condición THEN alternativa1 ELSE alteranativa2 | ||
</ | </ | ||
- | Las tres partes son la // | + | Las tres partes son la // |
- | Ambas // | + | Ambas // |
- | < | + | < |
280 IF OPCION% = 2 THEN CLS ELSE PRINT "Ok! Perfecto!" | 280 IF OPCION% = 2 THEN CLS ELSE PRINT "Ok! Perfecto!" | ||
</ | </ | ||
- | En nuestro ejemplo, OPCION% es una variable entera. También es posible utilizar los otros tipos de variables. ¡Podríamos cambiar OPCION% a OPCION! y todavía ver si es igual a 2. También podríamos probar las variables de cadena. | + | En nuestro ejemplo, |
- | < | + | < |
280 IF QUIEN$ = " | 280 IF QUIEN$ = " | ||
</ | </ | ||
- | Observa que la cadena de caracteres Laura está entre comillas. Las comillas instruyen a BASIC que use los caracteres exactamente tal como los hemos escrito. Si Laura no estuviera entre comillas, BASIC intentaría usarla como un nombre de variable. Al ejecutar el programa, la persona en el teclado no debe que ingresar comillas. | + | Observa que la cadena de caracteres |
> las computadoras solo cumplen exactamente lo que les instruye que hagan. | > las computadoras solo cumplen exactamente lo que les instruye que hagan. | ||
- | Si corres la línea anterior de BASIC e ingresas laura o LAURA ¡el programa no sabría quién eres e indicaría: | + | Si corres la línea anterior de BASIC e ingresas |
< | < | ||
Línea 163: | Línea 158: | ||
</ | </ | ||
- | Para el intérprete de BASIC, LAURA no es lo mismo que Laura. Una variable de cadena entrecomilladas indica que debe cumplirse | + | Para el intérprete de BASIC, |
- | La última parte de la instrucción IF-THEN-ELSE no siempre es necesaria. El ELSE puede omitirse junto con la segunda alternativa. Esto nos dejaría con un tren de instrucciones mucho más sencillo: IF-THEN. Podrías escribir la línea 280 como: | + | La última parte de la instrucción |
- | < | + | < |
280 IF OPCION% = 2 THEN GOTO 600 | 280 IF OPCION% = 2 THEN GOTO 600 | ||
</ | </ | ||
- | Si OPCION% no es igual a 2, entonces no se ejecutaría // | + | Si '' |
En todos nuestros ejemplos hasta ahora, hemos probado para ver si una variable es igual a algún valor. Podrás utilizar otras comprobaciones. Usar todas las comparaciones aritméticas ordinarias, incluyendo //mayor que//, //menor que// o //no igual//. Estos **operadores** se escriben de la siguiente manera: | En todos nuestros ejemplos hasta ahora, hemos probado para ver si una variable es igual a algún valor. Podrás utilizar otras comprobaciones. Usar todas las comparaciones aritméticas ordinarias, incluyendo //mayor que//, //menor que// o //no igual//. Estos **operadores** se escriben de la siguiente manera: | ||
Línea 184: | Línea 179: | ||
</ | </ | ||
- | Con la excepción del último, todos los operadores deberías estar familiarizado con estos operadores. Al utilizar operadores en BASIC los operadores que constan de más de un (como =>) deben escribirse sin espacio entre los dos caracteres. He aquí algunos ejemplos de declaraciones IF-THEN. Revise cada una para verificar su comprensión. | + | Con la excepción del último, todos los operadores deberías estar familiarizado con estos operadores. Al utilizar operadores en BASIC los operadores que constan de más de un (como'' |
- | < | + | < |
280 IF OPCION% = 2 THEN GOTO 600 ELSE GOTO 300 | 280 IF OPCION% = 2 THEN GOTO 600 ELSE GOTO 300 | ||
290 IF OPCION% <> 2 THEN GOTO 300 ELSE GOTO 600 | 290 IF OPCION% <> 2 THEN GOTO 300 ELSE GOTO 600 | ||
Línea 202: | Línea 197: | ||
Estas instrucciones no constituyen un programa real. No te molestes en ingresarlos en el [[interpretes_de_basic|intérprete de BASIC]]. Solo son ejemplos. Hablemos de algunos. La línea 290 anterior es una forma distinta de escribir la línea 280 del programa HISTORIA. Ten en cuenta que producirá exactamente el mismo efecto. Compara ambas. | Estas instrucciones no constituyen un programa real. No te molestes en ingresarlos en el [[interpretes_de_basic|intérprete de BASIC]]. Solo son ejemplos. Hablemos de algunos. La línea 290 anterior es una forma distinta de escribir la línea 280 del programa HISTORIA. Ten en cuenta que producirá exactamente el mismo efecto. Compara ambas. | ||
- | ¡En la línea 300, comparamos dos variables! Además, ten en cuenta que la línea 300 no usa una instrucción ELSE. La línea 300 y el resto de los ejemplos resultan ser declaraciones simples de IF-THEN. La línea 310 preguntará si el número contenido en ADIVINA% es mayor que el número contenido en NUMERO%. La línea 320 prueba si ADIVINA% es menor que NUMERO%. | + | ¡En la línea 300, comparamos dos variables! Además, ten en cuenta que la línea 300 no usa una instrucción |
Las líneas 330 y 340 usan menor o igual que y mayor o igual que. | Las líneas 330 y 340 usan menor o igual que y mayor o igual que. | ||
- | La línea 350 es interesante. Esto verifica lo que se contiene dentro de la variable de cadena RESPUESTA$. Si es una " | + | La línea 350 es interesante. Esto verifica lo que se contiene dentro de la variable de cadena |
- | la Linea 360 es un ejemplo avanzado. BASIC resta SUB% de CANTIDAD% y luego verifica si este número es menor a 1. Solo considere este ejemplo como uno de los usos más poderosos de la instrucción IF-THEN. | + | la Linea 360 es un ejemplo avanzado. BASIC resta SUB% de CANTIDAD% y luego verifica si este número es menor a '' |
==== GOTO ==== | ==== GOTO ==== | ||
- | Cuando observamos por primera vez la sentencia IF-THEN-ELSE en la línea 280 de nuestro programa HISTORIA, vimos que tanto la // | + | Cuando observamos por primera vez la sentencia |
- | Afortunadamente, | + | Afortunadamente, |
- | < | + | < |
280 IF OPCION% = 2 THEN GOTO 600 ELSE GOTO 300 | 280 IF OPCION% = 2 THEN GOTO 600 ELSE GOTO 300 | ||
</ | </ | ||
- | Si OPCION% es 2, la siguiente línea a ejecutar será la línea 600. Si OPCION% no es 2, la siguiente línea a ejecutar será la línea 300. | + | Si '' |
- | El comando GOTO cobra gran utilidad dentro de una instrucción IF-THEN. También se puede usar un solo GOTO. Para comprender cómo funciona esta declaración, | + | El comando |
- | < | + | < |
10 PRINT "Esta es la línea 10" | 10 PRINT "Esta es la línea 10" | ||
20 GOTO 50 | 20 GOTO 50 | ||
Línea 238: | Línea 233: | ||
Cuando el programita corra, se ejecutará siguiendo este orden: | Cuando el programita corra, se ejecutará siguiendo este orden: | ||
- | < | + | < |
- | 10 PRINT "This is line 10" | + | 10 PRINT "Esta es la linea 10" |
20 GOTO 50 | 20 GOTO 50 | ||
- | 50 PRINT "This is line 50" | + | 50 PRINT "Esta es la linea 50" |
60 GOTO 30 | 60 GOTO 30 | ||
- | 30 PRINT "Esto es la línea 30" | + | 30 PRINT "Esta es la línea 30" |
40 GOTO 70 | 40 GOTO 70 | ||
70 END | 70 END | ||
</ | </ | ||
- | Si has cometido un error al ingresar este programa, es posible que haya dado con algo llamado | + | Si has cometido un error al ingresar este programa, es posible que haya dado con algo llamado |
+ | <code freebasic> | ||
10 PRINT "Hola Humanoide!" | 10 PRINT "Hola Humanoide!" | ||
20 GOTO 10 | 20 GOTO 10 | ||
+ | </ | ||
- | La línea 10 se ejecutará una y otra vez. De hecho, debe presionar las teclas **CTRL-c** para interrumpir la interpretación y ejecución del programa. En este ejemplo, el motivo del bucle es evidente. La línea 20 le pide a BASIC que ejecute la línea 10. Luego, BASIC ejecuta la línea 20 nuevamente. BASIC no sabe que ya ejecutó la línea 20. Recuerda: "El ordenador cumplirá las órdenes que le han dado. ¡Asegúrate de correr tu propio código!. Usa software libre". | + | La línea 10 se ejecutará una y otra vez. De hecho, debe presionar las teclas **CTRL-c** para interrumpir la interpretación y ejecución del programa. En este ejemplo, el motivo del bucle es evidente. La línea 20 le pide a BASIC que ejecute la línea 10. Luego, BASIC ejecuta la línea 20 nuevamente. BASIC no sabe que ya ejecutó la línea 20. Recuerda: "El ordenador cumplirá las órdenes que le han dado". ¡Asegúrate de correr tu propio código!. Usa software libre. |
- | Desafortunadamente, | + | Desafortunadamente, |
- | > Los programas que utilizaban muchas instrucciones GOTO recibían el apodo de CÓDIGO ESPAGUETI. ¡Dilucidar código espagueti era como seguir un fideo en un plato! | + | > Los programas que utilizaban muchas instrucciones |
===== Lógica del Programa ===== | ===== Lógica del Programa ===== | ||
- | Con las declaraciones IF-THEN y GOTO, introdujimos la capacidad de tomar decisiones y saltar a distintos sectores del programa BASIC. ¡Son capacidades poderosas!. Aunque el ordenador ejecute una línea tras otra, sabemos entonces que es muy posible las estas declaraciones no necesariamente se ejecuten en el orden estipulado por número de línea. Por tal motivo debes esforzarte en pensar en la __lógica de los programas__. Esta es la parte donde se requiere un pensamiento preclaro. | + | Con las declaraciones |
Considere la línea 280 una vez más: | Considere la línea 280 una vez más: | ||
- | < | + | < |
280 IF OPCION% = 2 THEN GOTO 600 ELSE GOTO 300 | 280 IF OPCION% = 2 THEN GOTO 600 ELSE GOTO 300 | ||
</ | </ | ||
- | En las instrucciones PRINT de las líneas 200 y 210, le pedimos al usuario de HISTORIA que ingrese un 1 o un 2. Pero en la línea 280 solo verificamos si ingresaron un 2. ¿Por qué sucede esto? | + | En las instrucciones |
- | La razón es simple ¡Rebeldía humana! El hecho de que hayas pedido un 1 o un 2 no significa que alguien vayan a ingresar necesariamente un 1 o un 2. ¿Qué sucedería si ingresa un cero o un tres? ¿O un insulto enjundioso? Sin embargo, estamos protegidos porque construimos nuestro programa para manejar cualquier respuesta. En este caso, la respuesta 1 es la opción predeterminada. Si simplemente presionan la **tecla Intro**, o ingresan cualquier número que no sea 2, se desplazará a la línea 300. El valor predeterminado es lo que sucede cuando el usuario no toma una decisión. | + | La razón es simple ¡Rebeldía humana! El hecho de que hayas pedido un 1 o un 2 no significa que alguien vayan a ingresar necesariamente un '' |
- | Cuando escribas tus declaraciones IF-THEN y GOTO, siempre planifica para recibir cualquier entrada. Imagina lo peor y desconfía de los humanos. Si pide un 1, 2 o 3, puedes estar seguro de que alguien probará introducir un 4. Si no desea planificar una opción predeterminada, | + | Cuando escribas tus declaraciones |
- | < | + | < |
280 IF OPCION% = 2 THEN GOTO 600 | 280 IF OPCION% = 2 THEN GOTO 600 | ||
281 IF OPCION% = 1 THEN GOTO 300 | 281 IF OPCION% = 1 THEN GOTO 300 | ||
Línea 285: | Línea 282: | ||
No hay nada de malo en usar estas líneas adicionales en el programa HISTORIA. Es cuestión de gustos. La línea original 280 gestiona todas las respuestas posibles usando una única línea de código BASIC. La solución anterior usa cuatro líneas su propósito no resulta tan claro como el original. Sin embargo, puedes hacer tu voluntad. | No hay nada de malo en usar estas líneas adicionales en el programa HISTORIA. Es cuestión de gustos. La línea original 280 gestiona todas las respuestas posibles usando una única línea de código BASIC. La solución anterior usa cuatro líneas su propósito no resulta tan claro como el original. Sin embargo, puedes hacer tu voluntad. | ||
- | > Ten en cuenta | + | > Ten en cuenta |
- | Al planificar tus programas, no solo debe tener cuidado con los humanos, sino que también debe pensar como una computadora. Tal como has visto, tu ordenador hará lo que le digan que haga. ¡Créeme! Normalmente no será esto lo que quieres que haga! Como humano, es fácil entender que " | + | Al planificar tus programas, no solo debe tener cuidado con los humanos, sino que también debe pensar como una computadora. Tal como has visto, tu ordenador hará lo que le digan que haga. ¡Créeme! Normalmente no será esto lo que quieres que haga! Como humano, es fácil entender que "'' |
Considere este ejemplo: | Considere este ejemplo: | ||
- | < | + | < |
280 IF OPCION% < 1 THEN GOTO 500 | 280 IF OPCION% < 1 THEN GOTO 500 | ||
290 IF OPCION% > 1 THEN GOTO 700 | 290 IF OPCION% > 1 THEN GOTO 700 | ||
</ | </ | ||
- | Podríamos creer que estamos comprobando si alguien está haciendo trampa en una instrucción INPUT. Pero, ¿qué sucedería si alguien ingresa un 1? ¿La computadora está haciendo lo que le pedimos? Ciertamente. ¿Está haciendo lo que deseamos? Ahora no es tan clara la respuesta... ¡Depende!. | + | Podríamos creer que estamos comprobando si alguien está haciendo trampa en una instrucción |
Cada vez que tu programa se comporte mal, podría ser útil revisar cuidadosamente cada declaración __siguiendo su orden de ejecución__. | Cada vez que tu programa se comporte mal, podría ser útil revisar cuidadosamente cada declaración __siguiendo su orden de ejecución__. | ||
Línea 309: | Línea 306: | ||
- | < | + | < |
300 REM ***** PANTALLA 1A ***** | 300 REM ***** PANTALLA 1A ***** | ||
310 CLS | 310 CLS | ||
Línea 324: | Línea 321: | ||
420 PRINT " | 420 PRINT " | ||
430 PRINT " | 430 PRINT " | ||
- | 440 PRINT " | + | 440 PRINT " |
450 PRINT " | 450 PRINT " | ||
- | 460 PRINT " | + | 460 PRINT " |
- | 470 PRINT " | + | 470 PRINT " |
480 PRINT " | 480 PRINT " | ||
490 PRINT " | 490 PRINT " | ||
Línea 349: | Línea 346: | ||
720 PRINT " | 720 PRINT " | ||
730 PRINT " | 730 PRINT " | ||
- | 740 PRINT " | + | 740 PRINT " |
750 PRINT " | 750 PRINT " | ||
- | 760 PRINT " | + | 760 PRINT " |
- | 770 PRINT " | + | 770 PRINT " |
780 PRINT " | 780 PRINT " | ||
790 PRINT " | 790 PRINT " | ||
Línea 366: | Línea 363: | ||
</ | </ | ||
- | Por fin, podemos ver a dónde nos llevarán las declaraciones GOTO 300 y GOTO 600. Marca cada IF-THEN y GOTO para asegurarse de que comprendes cómo funciona el programa. Podría ser útil Un diagrama arbolado. Ten en cuenta que las últimas cuatro líneas del programa introducen una nueva instrucción BASIC. Se trata de **END**. Su propósito es obvio, dar por finalizado el programa. Cada vez que BASIC llega a una instrucción END, deja de correrlo. Esto sucede incluso si encuentra END en medio de un programa. | + | Por fin, podemos ver a dónde nos llevarán las declaraciones GOTO 300 y GOTO 600. Marca cada '' |
Este programa muestra una pantalla que inicia la historia y tiene otras dos como opciones. De estas otras dos se podría ramificar a otras cuatro. Sin embargo, en lugar de enumerar un programa con muchas casillas vacías, podrás terminarlo por tu cuenta. Crea cuadros de historias adicionales que comiencen en las líneas 900, 1200, 1500 y 1800. Inventa tantos como necesites. Siéntete libre de completar una historia real en los recuadros. Simplemente realiza un listado de cada //caja de flores// (introduciendo el comando **LIST 320-520**, por ejemplo) y complétalo con tu historia. Recuerda presionar la **tecla Intro** después de cada línea. | Este programa muestra una pantalla que inicia la historia y tiene otras dos como opciones. De estas otras dos se podría ramificar a otras cuatro. Sin embargo, en lugar de enumerar un programa con muchas casillas vacías, podrás terminarlo por tu cuenta. Crea cuadros de historias adicionales que comiencen en las líneas 900, 1200, 1500 y 1800. Inventa tantos como necesites. Siéntete libre de completar una historia real en los recuadros. Simplemente realiza un listado de cada //caja de flores// (introduciendo el comando **LIST 320-520**, por ejemplo) y complétalo con tu historia. Recuerda presionar la **tecla Intro** después de cada línea. | ||
Línea 374: | Línea 371: | ||
===== Conclusión ===== | ===== Conclusión ===== | ||
- | En este tutorial aprendimos sobre las variables y las instrucciones BASIC REM, IF-THEN-ELSE, | + | En este tutorial aprendimos sobre las variables y las instrucciones BASIC REM, '' |
- | > | + | > |