AnteriorPosterior

15. Numeración de líneas: Auto, renum, edit...

Por: Nacho Cabanes
Actualizado: 19-04-2019 22:40
Tiempo de lectura estimado: 6 min.

 

BASIC

15. Numeración de líneas: Auto, renum, edit...

En los BASIC "antiguos" (con números de línea) más completos disponíamos de una serie de ayudas a la hora de teclear nuestros programas y a la hora de intentar descubrir fallos. Vamos a ver algunas de ellas.

Una orden que podía ayudarnos cuando teníamos que teclear un programa mínimamente largo era la orden AUTO. Esta hacía que comenzasen a aparecer los números de las líneas automáticamente, de modo que nosotros sólo teníamos que centrarnos en escribir el contenido de cada orden en sí. Si solo escribíamos la orden AUTO, se comenzaría a numerar a partir de la línea 10, y se aumentaba de 10 en 10 (al pulsar Intro aparecerá la línea 20, luego la 30, y así sucesivamente):

AUTO

(Fuente "1501.bas". Probado en Locomotive Basic de Amstrad CPC)

En los BASIC que incorporaban esta posibilidad, se solía poder personalizar también un poco más. Por ejemplo, podríamos decir que queríamos comenzar a numerar a partir de la línea 200 (e incrementando de 10 en 10) así:

AUTO 200

(Fuente "1502.bas". Probado en Locomotive Basic de Amstrad CPC)

y si queremos que aumente de 5 en 5 (también a partir de la línea 200) sería:

AUTO 200,5

(Fuente "1503.bas". Probado en Locomotive Basic de Amstrad CPC)

Puede ocurrir que nos hayamos quedado sin espacio para insertar nuevas líneas. Es decir, entre la línea 10 y la 20 podemos incluir una línea 15, pero entre la línea 2 y la 3 no podemos insertar más líneas (no se permiten números de línea con decimales: no es válida la línea 2,5 ni la 2.33).

Una opción que nos permiten algunos de los mejores entre los BASIC "antiguos" es la RENUM, que vuelve a numerar las líneas de 10 en 10, y la primera pasa a ser la línea 10:

(Fuente "1504.bas". Probado en Locomotive Basic de Amstrad CPC)

Eso sí, hay que tener en cuenta que esto puede dar lugar a problemas si se ha empleado la orden GOTO o GOSUB: el siguiente programa

1 PRINT "HOLA" 
2 GOTO 1

(Fuente "1505.bas". Probado en Locomotive Basic de Amstrad CPC)

se podría convertir en el siguiente, que es incorrecto porque ya no existe la línea 1:

10 PRINT "HOLA" 
20 GOTO 1

(Fuente "1506.bas". Probado en Locomotive Basic de Amstrad CPC)

En este caso, cuando nuestro intérprete de BASIC llegue a la línea 2, aparecería un mensaje de error que diría que no existe la línea 1, pero en casos como el siguiente puede ser aún más grave:

5 X = 1 
20 GOTO 40 
40 X = X + 1 
120 PRINT X

(Fuente "1507.bas". Probado en Locomotive Basic de Amstrad CPC)

al cambiar la numeración de las líneas, cambiará la estructura del programa, la nueva línea 30 (que antes era la 40) es ignorada, sin ningún tipo de mensaje de error, con lo que el programa muestra en pantalla el valor 1 en vez de 2 (ha cambiado la lógica del programa sin darnos cuenta):

10 X = 1 
20 GOTO 40 
30 X = X + 1 
40 PRINT X

(Fuente "1508.bas". Probado en Locomotive Basic de Amstrad CPC)

Para evitar estos problemas, la orden RENUM no se debería utilizar, salvo que sea estrictamente imprescindible, y en este caso deberíamos imprimir el programa inicial y el modificado, y compararlos para asegurarnos de todos los saltos sigan llegando al punto al que deben (Aun así, no siempre todo es tan crítico: algunas versiones de BASIC, como la de los Amstrad CPC, suelen corregir los números de línea que aparecen dentro de cada orden, con lo que es habitual que no se altere la lógica del programa).

Para corregir una línea ya escrita en un intérprete de BASIC clásico, normalmente tendremos 3 opciones:

  • La que "nunca falla" es volver a escribirla.
  • Algunos intérpretes permiten que, si esa línea está a la vista en pantalla, usemos las "flechas" del teclado para desplazarnos hasta ella, corrijamos las letras que nos interesen, y al pulsar la tecla Intro, la línea quedará actualizada.
  • Otros muchos permiten escribir EDIT seguido del número de línea para poder modificar esa línea y corregir sólo las letras o símbolos que sean incorrectos:
EDIT 120

(Fuente "1509.bas". Probado en Locomotive Basic de Amstrad CPC)

4121 visitas desde el 19-04-2019

AnteriorPosterior