• La orden LET suele ser opcional, el BASIC de Sinclair lo exige pero la mayoria de los otros no, es lo mismo si se pone o no, acabo de probar en el emulador y funciona igual con o sin LET. Lo del DIM tambien lo probe, eso es parecido al BASIC Sinclair, hay que declarar el tamaño maximo que va a tener la cadena. DIM se puede usar una sola vez, conviene ponerlo al principio del programa, por eso tenes que elegir bien el tamaño maximo que va a tener. En otros BASIC directamente el maximo esta puesto por defecto, por lo general 255, se ve que en este BASIC hay que definirlo antes de usar la variable.

     

  • Lo de declarar el tamaño maximo debe ser para ahorrar memoria o para optimizar la velocidad de ejecucion.
    Ya que en los interpretes BASIC se hace todo dinamicamente, si una cadena tiene el valor "HOLA", y despues le asignas el valor "HOLA MUNDO", va a incrementar su tamaño de 4 a 10 caracteres, y para poder agregar esos 6 caracteres el BASIC tiene que mover las variables que esten almacenadas despues para hacer lugar. Si se declara el tamaño maximo de la cadena al principio, el BASIC reserva el tamaño maximo siempre y no tiene que andar moviendo nada en memoria cada vez que cambia el contenido de la cadena.
    Esos son criterios del que escribe cada version de BASIC.
     

  • La orden LET suele ser opcional, el BASIC de Sinclair lo exige pero la mayoria de los otros no, es lo mismo si se pone o no, acabo de probar en el emulador y funciona igual con o sin LET. Lo del DIM tambien lo probe, eso es parecido al BASIC Sinclair, hay que declarar el tamaño maximo que va a tener la cadena. DIM se puede usar una sola vez, conviene ponerlo al principio del programa, por eso tenes que elegir bien el tamaño maximo que va a tener. En otros BASIC directamente el maximo esta puesto por defecto, por lo general 255, se ve que en este BASIC hay que definirlo antes de usar la variable.


    Solo te corrijo que en el basic Sinclair no es necesario declarar el tamaño de las variables alfanumericas con DIM, se usa directamente LET con el valor. DIM solo se usa para formatear las dimensiones de las matrices.

    Como anecdota, el basic Sinclair obliga al uso de LET por su sistema de "palabra-clave" donde con cada pulsacion de tecla (excepto las numericas y las especiales) se obtiene una keyword (en todos los modos excepto el "L"), por lo cual cada linea de programa siempre comienza con un comando o una funcion, pero nunca con una variable, ya que si quisieramos poner 10 a=1 al estar en modo K obtendriamos 10 NEW =1
     

  • Solo te corrijo que en el basic Sinclair no es necesario declarar el tamaño de las variables alfanumericas con DIM, se usa directamente LET con el valor. DIM solo se usa para formatear las dimensiones de las matrices. 

    kasalewa
    Cierto, en sinclair no es necesario declarar con DIM las variables alfanumericas, excepto si son arreglos o matrices, que es el caso que me toco a mi, ahi si tenes que especificar el tamaño maximo. El BASIC las trata como matrices de caracteres donde se puede obviar la ultima dimension. Es muy particular ese BASIC en el manejo de cadenas.
     

  • BUenas de nuevo, disculpen si soy pesado, por eso quiero agradecer a todos los que me tienen pasiencia primero que nada.
    Tengo unas dudas, disculpen si no las enumero, pero justo la pc se me rompio la parte de los numeros.

    primero: Estoy en la pantalla de basic de atari, escribi un programa que tiene ciento setenta lineas, pero cuando quiero subir al principio no me deja, me vuelve de nuevo al fin cuando subo a la pantalla.
    Como hago para volver al principio???
    Tengo que hacerlo con list y apretar break obligatorio o hay alguna otra manera?

    Segundo:Puede sonar medio bobo, pero estoy tratando de aprender a hacer una calculadora interactiva en basic.
    Ya se que no es para nada util , pero mas que nada es que quiero hacer ejercicio por ejercicio de basic sin saltearme de ningun tema.
    Pero me pasa lo siguiente:
    [los espacion significan signo de igual, como dije antes no me funciona el teclado numerico]

    ciento treinta print suma,resta o multiplicacion
    ciento treinta y cinco LET S B+C
    ciento cuarenta LET D B´+c
    iciento cincuenta input s
    ciento cincuenta y cinco print s

    pero me da error justo en el ciento cuarenta y cinco, que es lo que pasa???
    desde ya gracias.

    Perdonen lo grasa que es escribir los numeros con letras, desde ya gracias.
    P.D:no se si exista en el foro , pero estaria bueno hacer una seccion de basic para todos aquellos que quieran despejar sus dudas.
     


  • BUenas de nuevo, disculpen si soy pesado, por eso quiero agradecer a todos los que me tienen pasiencia primero que nada.
    Tengo unas dudas, disculpen si no las enumero, pero justo la pc se me rompio la parte de los numeros.

    primero: Estoy en la pantalla de basic de atari, escribi un programa que tiene ciento setenta lineas, pero cuando quiero subir al principio no me deja, me vuelve de nuevo al fin cuando subo a la pantalla.
    Como hago para volver al principio???
    Tengo que hacerlo con list y apretar break obligatorio o hay alguna otra manera?

    Segundo:Puede sonar medio bobo, pero estoy tratando de aprender a hacer una calculadora interactiva en basic.
    Ya se que no es para nada util , pero mas que nada es que quiero hacer ejercicio por ejercicio de basic sin saltearme de ningun tema.
    Pero me pasa lo siguiente:
    [los espacion significan signo de igual, como dije antes no me funciona el teclado numerico]

    ciento treinta print suma,resta o multiplicacion
    ciento treinta y cinco LET S B+C
    ciento cuarenta LET D B´+c
    iciento cincuenta input s
    ciento cincuenta y cinco print s

    pero me da error justo en el ciento cuarenta y cinco, que es lo que pasa???
    desde ya gracias.

    Perdonen lo grasa que es escribir los numeros con letras, desde ya gracias.
    P.D:no se si exista en el foro , pero estaria bueno hacer una seccion de basic para todos aquellos que quieran despejar sus dudas.

    Sheviasbox


    A ver, si te referis a que cuendo vas ingresando lineas de programa, al llenar la pantalla y seguir ingresando lineas, esta se desplaza hacia arriba mostrando solo las ultimas lineas Basic, si queres "subir" en el listado con los los cursores, al llegar a la parte superior de la pantalla, el cursor vuelve a la parte de abajo de la misma, no se desplaza el listado, esto es normal. Si queres poner en pantalla de nuevo la parte del principio del programa que se "perdio" de la pantalla tenes que usar LIST, no queda otra. Algunos basic permiten listar porciones de programa, por ejemplo LIST -30, todas las lineas desde el principio hasta la linea 30, o LIST 50-, para todas las lineas a partir de la linea 50 o bien LIST 10-40 para las lineas de 10 a 40, sin embargo esto NO lo admite el basic de la 130XE, al menos el que viene en rom, desconozco si los basic extendidos en cartucho lo permiten. En la 130XE solo podes listar una unica linea, por ejemplo LIST 40, que te lista SOLAMENTE la linea 40, una cagada, pero es lo que hay, asi y todo viene bien para de depurar una linea que te da error al ejecutar.

    No entiendo lo que pones del error, no veo una linea 145 en el listado que pusiste, si es por ese apostrofe que pusiste entre la B y el +, no solo al ejecutar da error sino tambien al listar, te deberia aparecer una pantalla como la que te adjunto primero, si se corrige el error, esa porcion de programa no da error al ejecutarlo (segundo adjunto).

    PD: A mi me parece que ya hay abundante informacion tanto en libros como en publicaciones en internet sobre el basic en general, tutoriales, avanzado y demas. Me parece mas facil que alguien que tiene una duda especifica con el basic de una plataforma en general (como es tu caso con este problema en particular), lo plantee directamente en el subforo de esa plataforma, asi es mas facil que se lea y obtener la ayuda, porque si bien todos los basic tienen la misma base, hay muchas particularidades y limitaciones de cada plataforma en particular.
     

  • BUenas de nuevo, disculpen si soy pesado, por eso quiero agradecer a todos los que me tienen pasiencia primero que nada. Tengo unas dudas, disculpen si no las enumero, pero justo la pc se me rompio la parte de los numeros. 

    Sheviasbox
    Se rompio el teclado o se te desconfiguro o presiono la tecla bloq. num.? Igual los numeros y el signo = los tenes encima de las letras, no necesitas el teclado numerico para tipearlos.
     

  • Es el teclado de la notebook solo me funciona la tecla 5 y 6 nada mas. Como pueden apreciar ya que no puedo poner parentecis...
    La ´ esa fue un error que me acabo de dar cuenta, no es eso.
    La idea es hacer una calculadora interactiva, que me acabo de dar cuenta que se hace con if then

    diez: print ¨¨¨dame dos numeros¨
    veinte: input x:input y
    cuarenta: print ¨debo sumar o multiplicar¨
    cincuenta: print ¨teclea s o m¨
    sesenta : input r[signo de pesos]
    setenta: if r[signo de pesos]igual¨s¨then let z igual x+y
    ochenta: if r[signo de pesos]igual ¨m¨then let z igual x*y
    noventa: print ¨la respuesta es ¨;z

    Me aparece todo bien hasta que llego a la linea sesenta
    que dice : ERROR NUEVE AT LINE SESENTA?????

    ya no se que mas hacer..si aparece la imagen que acabo de adjuntar el que quiero hacer es el de la calculadora.
    Desde ya gracias por su pasiencia.
     

  • Struan te habia dicho que tenias que declarar las variables alfanumericas con DIM, acabo de probar con 10 input r$ y efectivamente al ejecutar da error 9 luego de ingresar un texto, si pongo una linea 5 dim r$(10) funciona sin errores.

    Pone una linea 5 dim r$(1), ya que solo vas a almacenar los valores "s" o "m", si vas a usar r$ para algo mas despues, entonces ponele un tamaño mayor.

     

  • Si probe y funciona, muchisimas gracias.
    Es que me cuesta sacarme un poco ese dinamismo de msx ya que en msx no habia que declarar nada.
    Voy a tener que repasar de nuevo todos los conocimientos ya que este libro y otros tantos que he bajado se basan en sistema commodore y msx.
    Desde ya muchisimas gracias a todos.
     

Moderador (s): pinkstone, homecomputer, Selandari, pastbytes, Durandal