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 | ||
tutorial_de_aventuras_en_basic [2022/01/25 18:53] – peron | tutorial_de_aventuras_en_basic [2022/08/01 23:14] (actual) – [Conclusión] 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 ===== | ||
- | At line 280 we finally arrive at the real power of programming: the ability to make decisions. BASIC uses the IF-THEN-ELSE | + | En la línea |
- | The IF statement has three parts: | + | La declaración '' |
- | IF condition | + | <code freebasic> |
+ | IF condición | ||
+ | </ | ||
- | The three parts are the condition, alternative 1, and alternative 2. The condition is some relationship that BASIC tests to see if it is true. On line 280, the conditional test is whether CHOICE% equals | + | Las tres partes son la // |
- | The two alternatives listed inside of the IF statement can be any ordinary | + | Ambas // |
- | < | ||
- | 280 IF CHOICE% = 2 THEN CLS ELSE PRINT "Hey Cool" | ||
- | </ | ||
- | In our example, CHOICE% is a integer variable. Other variable types may also be used. We could change CHOICE% to CHOICE! and still see if it equalled 2. String variables can likewise be tested. | + | < |
- | + | 280 IF OPCION% | |
- | < | + | |
- | 280 IF WHO$ = " | + | |
</ | </ | ||
- | Notice that the character string Brian is enclosed in quotation marks. Remember our discussion of the PRINT statement from chapter one. Quotation marks tell BASIC to use the characters exactly as we have written them. If Brian were not in quotation marks, BASIC would try to use it as a variable name. When the program runs, the person at the keyboard does not have to enter quotation marks. | + | En nuestro ejemplo, '' |
- | One further note about testing string variables: computers are dumb. They only do exactly what you tell them to do. If you ran the above line of BASIC and entered brian or BRIAN, the program would print | ||
- | < | + | < |
- | Who are you? | + | 280 IF QUIEN$ = " |
</ | </ | ||
- | BRIAN is not the same as Brian. A character string inside of quotation marks must EXACTLY match the contents of the variable. | + | Observa que la cadena de caracteres '' |
+ | |||
+ | > las computadoras solo cumplen exactamente lo que les instruye que hagan. | ||
- | The last part of the IF-THEN-ELSE statement is not always required. The ELSE may be omitted along with the second alternative. This would leave us with an IF-THEN command. We could write line 280 as: | + | Si corres la línea anterior de BASIC e ingresas '' |
< | < | ||
- | 280 IF CHOICE% = 2 THEN GOTO 600 | + | Quien eres tu? |
</ | </ | ||
- | If CHOICE% does not equal two, then the first alternative would not be executed. Instead, BASIC would continue with the next line after 280. If that line happened to be line 300 the two IF statements would produce the same result! Thus, every IF statement has an ELSE even if the ELSE is not written as part of the instruction. | + | Para el intérprete de BASIC, '' |
- | In all of our examples so far, we have tested to see if a variable is equal to some value. Other tests can be used. We can use all of the ordinary arithmetic comparisons such as greater than, less than, or not equal. Here is how these OPERATORS, as they are called, are written: | + | La última parte de la instrucción '' |
- | = equal to | + | <code freebasic> |
+ | 280 IF OPCION% | ||
+ | </ | ||
- | < less than | + | 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: |
- | <= less than or equal to | + | <code> |
+ | = Igual a | ||
+ | < Menor que | ||
+ | > Mayor que | ||
+ | <= Igual o menor que | ||
+ | => Igual o Mayor que | ||
+ | <> No igual a | ||
+ | </ | ||
- | => greater than or equal to | + | 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'' |
- | <> | ||
- | With the exception of the last, these operators should be familiar. When used in a BASIC program, the operators that have more than one character, such as =>, are written without a space between the two characters. Here are some sample IF-THEN statements.Review each one to check your understanding. | + | < |
- | + | 280 IF OPCION% = 2 THEN GOTO 600 ELSE GOTO 300 | |
- | < | + | 290 IF OPCION% <> 2 THEN GOTO 300 ELSE GOTO 600 |
- | 280 IF CHOICE% = 2 THEN GOTO 600 ELSE GOTO 300 | + | 300 IF ADIVINADO% = NUMERO% THEN GOTO 140 |
- | 290 IF CHOICE% <> 2 THEN GOTO 300 ELSE GOTO 600 | + | 310 IF ADIVINADO% > NUMERO% THEN PRINT "Muy alto" |
- | 300 IF GUESS% = NUMBER% THEN GOTO 140 | + | 320 IF ADIVINADO% < NUMERO% THEN PRINT "Muy bajo" |
- | 310 IF GUESS% > NUMBER% THEN PRINT "Too High" | + | |
- | 320 IF GUESS% < NUMBER% THEN PRINT "Too Low" | + | |
330 IF SUB! <= 0 THEN GOTO 500 | 330 IF SUB! <= 0 THEN GOTO 500 | ||
340 IF SUB! => 4 THEN GOTO 500 | 340 IF SUB! => 4 THEN GOTO 500 | ||
- | 350 IF ANSWER$ = "y" THEN ANSWER$ = "Y" | + | 350 IF RESPUESTA$ = "s" THEN RESPUESTA$ = "S" |
- | 360 IF QUANTITY% - SUB% < 1 THEN GOTO 600 | + | 360 IF CANTIDAD% - SUB% < 1 THEN GOTO 600 |
- | 370 IF X% = 2 THEN TWOS% = TWOS% + 1 | + | 370 IF X% = 2 THEN DOS% = DOS% + 1 |
</ | </ | ||
- | These statements are not a real program. Don't bother to enter them on your computer. They are for examples, only. Let's discuss some. Line 290 above is a different way of writing line 280 in our STORY program. Note that it has exactly the same effect. Compare the two lines. | + | Estas instrucciones no constituyen un programa |
- | In line 300, we compare two variables! | + | ¡En la línea |
- | Lines 330 and 340 use less than or equal to and greater than or equal to. | + | Las líneas |
- | Line 350 is interesting. This checks what is held inside string | + | La línea |
- | Line 360 is an advanced example. BASIC subtracts | + | la Linea 360 es un ejemplo avanzado. BASIC resta SUB% de CANTIDAD% y luego verifica si este número es menor a '' |
- | GOTO | + | |
- | When we first looked at the IF-THEN-ELSE statement in line 280 of our STORY program, we saw that both alternative 1 and alternative 2 used GOTO statements. Now it is time to discuss GOTO. | + | ==== GOTO ==== |
- | Fortunately, | + | Cuando observamos por primera vez la sentencia '' |
- | < | + | Afortunadamente, |
- | 280 IF CHOICE% = 2 THEN GOTO 600 ELSE GOTO 300 | + | |
+ | < | ||
+ | 280 IF OPCION% = 2 THEN GOTO 600 ELSE GOTO 300 | ||
</ | </ | ||
- | If CHOICE% is 2 then the next line to execute is line 600. If CHOICE% is not 2, then the next line to execute is line 300. | + | Si '' |
- | The GOTO command is useful inside of an IF-THEN | + | El comando '' |
- | < | + | < |
- | 10 PRINT "This is line 10" | + | 10 PRINT "Esta es la línea |
20 GOTO 50 | 20 GOTO 50 | ||
- | 30 PRINT "This is line 30" | + | 30 PRINT "Esta es la línea |
40 GOTO 70 | 40 GOTO 70 | ||
- | 50 PRINT "This is line 50" | + | 50 PRINT "Esta es la línea |
60 GOTO 30 | 60 GOTO 30 | ||
70 END | 70 END | ||
</ | </ | ||
- | GOTO provides the ability to skip around in a program. When our little program runs, it will execute the lines in this order: | + | > GOTO te da la posibilidad de trampolinear dentro del programa. |
- | < | + | 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 | ||
</ | </ | ||
- | If you made a mistake in entering this program, you may have discovered something called a LOOP. A loop occurs when the program does not end. Examine this program: | + | Si has cometido un error al ingresar este programa, es posible que haya dado con algo llamado **bucle** ("loop"). Se produce un bucle cuando el programa no termina nunca. Examina este programa: |
- | 10 PRINT "Esto es la línea 10" | + | <code freebasic> |
+ | 10 PRINT "Hola Humanoide!" | ||
20 GOTO 10 | 20 GOTO 10 | ||
+ | </ | ||
- | Line 10 will be executed over and over. Indeed, you must press the CTRL-Break key to end the program. In this example, the cause of the loop is clear. Line 20 asks BASIC to execute line 10. Then BASIC executes line 20 again. BASIC does not know that it already executed line 20. Remember, your computer will only do exactly what you tell it to do. | + | La línea |
- | Unfortunately, the cause of loops is not always as clear as in this last example. In long programs, many GOTO statements might be used and it is difficult to see exactly how a loop was created. For this reason, try to avoid using GOTO. Think carefully about your program and plan it so that a GOTO is used only when necessary. A program using many GOTOs is called SPAGHETTI CODE. Understanding spaghetti code is like following a noodle in a plate of spaghetti. | + | Desafortunadamente, la causa de los bucles no siempre es tan evidente como en este último ejemplo. Es común usar muchas secuencias '' |
- | ===== PROGRAM LOGIC ===== | + | > Los programas que utilizaban muchas instrucciones '' |
+ | ===== Lógica del Programa ===== | ||
- | With the IF-THEN | + | Con las declaraciones '' |
- | Consider line 280 once again: | + | Considere la línea |
- | < | + | < |
- | 280 IF CHOICE% = 2 THEN GOTO 600 ELSE GOTO 300 | + | 280 IF OPCION% = 2 THEN GOTO 600 ELSE GOTO 300 |
</ | </ | ||
- | In our PRINT statements in lines 200 and 210, we asked the person running STORY to enter a 1 or a 2. But in line 280 we only check to see if they entered a 2. Why? | + | En las instrucciones '' |
- | The reason: you cannot trust humans! Just because we asked for a 1 or 2 does not mean people will enter a 1 or 2. What if they enter zero or three? We are protected, however, because we built our program to handle any reply. In this case, choice | + | 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 '' |
- | When you write your IF-THEN | + | Cuando escribas tus declaraciones '' |
- | < | + | |
- | 280 IF CHOICE% = 2 THEN GOTO 600 | + | < |
- | 281 IF CHOICE% = 1 THEN GOTO 300 | + | 280 IF OPCION% = 2 THEN GOTO 600 |
- | 282 IF CHOICE% < 1 THEN GOTO 50 | + | 281 IF OPCION% = 1 THEN GOTO 300 |
- | 283 IF CHOICE% >> 2 THEN GOTO 50 | + | 282 IF OPCION% < 1 THEN GOTO 50 |
+ | 283 IF OPCION% >> 2 THEN GOTO 50 | ||
</ | </ | ||
- | There is nothing wrong with using these lines in our STORY program. It is a matter of taste. The original | + | No hay nada de malo en usar estas líneas adicionales en el programa HISTORIA. Es cuestión de gustos. La línea |
- | When planning programs you not only have to watch out for humans, you must also think like a computer. Just as we saw in the loop, your computer is going to do what you tell it to do. This may not be what you want it to do! As a human, it is easy to see that " | + | > Ten en cuenta las [[reglas_de_diseno_unix|reglas de diseño Unix]]. Escribir programas comprensibles. |
- | Consider this example: | + | 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: |
- | 280 IF CHOICE% < 1 THEN GOTO 500 | + | |
- | 290 IF CHOICE% > 1 THEN GOTO 700 | + | < |
+ | 280 IF OPCION% < 1 THEN GOTO 500 | ||
+ | 290 IF OPCION% > 1 THEN GOTO 700 | ||
</ | </ | ||
- | We might believe we are checking to see if someone is cheating on an INPUT statement. But what happens if someone enters a 1? Is the computer doing what we asked? Certainly. Is it doing what we want? That depends. Whenever your program misbehaves, it might help to carefully review each statement IN ORDER OF EXECUTION. On a note pad, write down the names of the variables | + | 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__. | ||
+ | |||
+ | > Se utilizaba tabular los nombres de las variables | ||
- | ===== THE REST OF THE PROGRAM | + | ===== El resto del programa |
+ | Este tutorial comenzó con la promesa de un programa que contaría una historia y te permitiría crear tu propio final. Ahora que has explorado estos comandos BASIC utilizados en las primeras veintiocho líneas, es hora de ingresar al resto del programa. | ||
- | This chapter began with the promise of a program that would tell a story and allow you to create your own ending. Now that we have explored the new BASIC commands used in the first twenty eight lines, it is time to enter the rest of the program. | + | Al ingresarlo, intente escribir una historia simplona. Observe que muchas líneas son idénticas o muy parecidas. Por ejemplo, las líneas 60, 260, 320 y 520 son iguales. Después de presionar Intro para ingresar en línea 60, simplemente movías el cursor hacia arriba, cambiabas el número de línea y presionabas Intro de nuevo. Se utiliza el comando **LIST** para comprobar el listado. |
- | As you enter this program, try to type as little as possible. Notice that many lines are either identical or very much alike. For example, lines 60, 260, 320, and 520 are the same. After you press ENTER for line 60, just move the cursor up, change the line number, and press ENTER again. Use LIST to check your progress. | ||
- | < | + | < |
300 REM ***** PANTALLA 1A ***** | 300 REM ***** PANTALLA 1A ***** | ||
310 CLS | 310 CLS | ||
Línea 309: | 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 318: | Línea 330: | ||
510 PRINT " | 510 PRINT " | ||
520 PRINT " | 520 PRINT " | ||
- | 530 INPUT CHOICE% | + | 530 INPUT OPCION% |
- | 540 IF CHOICE% = 2 THEN GOTO 900 ELSE GOTO 1200 | + | 540 IF OPCION% = 2 THEN GOTO 900 ELSE GOTO 1200 |
600 REM ***** PANTALLA 1B ***** | 600 REM ***** PANTALLA 1B ***** | ||
610 CLS | 610 CLS | ||
Línea 334: | 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 343: | Línea 355: | ||
810 PRINT " | 810 PRINT " | ||
820 PRINT " | 820 PRINT " | ||
- | 830 INPUT CHOICE% | + | 830 INPUT OPCION% |
- | 840 IF CHOICE% = 2 THEN GOTO 1500 ELSE GOTO 1800 | + | 840 IF OPCION% = 2 THEN GOTO 1500 ELSE GOTO 1800 |
900 END | 900 END | ||
1200 END | 1200 END | ||
Línea 351: | Línea 363: | ||
</ | </ | ||
- | At long last, we get to see where the GOTO 300 and GOTO 600 statements will take us. Check each IF-THEN | + | Por fin, podemos ver a dónde nos llevarán las declaraciones |
+ | |||
+ | Este programa muestra una pantalla que inicia la historia y tiene otras dos como opciones. De estas otras dos se podría ramificar | ||
+ | |||
+ | Finalmente, dado que este programa representa mucho trabajo duro, asegúrese de gauardarlo en un archivo de disco antes de ingresar al SISTEMA. | ||
+ | |||
+ | ===== Conclusión ===== | ||
- | This program displays one screen that starts the story and has two others as choices. From these others you could branch to another four. However, instead of listing a program with many empty boxes, I will let you finish it. Create additional story boxes that begin at lines 900, 1200, 1500, and 1800. Use as many as you need. Feel free to fill in a real story in the boxes. Just list each flower box (LIST 320 - 520, for example) and type in a story. Remember to press ENTER after each line. | + | En este tutorial aprendimos sobre las variables y las instrucciones BASIC REM, '' |
- | Finally, since this program represents a lot of hard work, be sure to SAVE it in a disk file before you enter SYSTEM. Also, if you have a printer, you may want to use the LLIST command to print out a copy on paper. | + | > |
- | In this tutorial we learned about variables and the BASIC REM, IF-THEN-ELSE, |