0% encontró este documento útil (0 votos)
155 vistas42 páginas

Qbasic

Cargado por

apcbo
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
155 vistas42 páginas

Qbasic

Cargado por

apcbo
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

TUT.1. Instrucciones que controlan el flujo del programa TUT.1.1. DO...

LOOP, instruccin Repite un bloque de instrucciones mientras una condicin tenga el estado verdadero, o hasta que una condicin adquiera el estado verdadero. DO [{WHILE UNTIL} condicin] [bloqueinstrucciones] LOOP DO [bloqueinstrucciones] LOOP [{WHILE UNTIL} condicin] condicin: una expresin numrica que BASIC evala como verdadero (no cero) o falso (cero). Ejemplo: i% = 0 PRINT "El valor de i% al principio del bucle es ";i% DO WHILE i% < 10 i% = i% + 1 LOOP PRINT "El valor de i% al final del bucle es ";i% TUT.1.2. END, instruccin Pone fin a un programa, procedimiento, bloque o tipo de datos definido por el usuario. END [{DEF lneas. FUNCTION IF SELECT SUB TYPE}]

DEF: termina la definicin de una funcin DEF FN que ocupe varias FUNCTION: termina la definicin de un procedimiento FUNCTION. IF: termina un bloque de instrucciones IF... THEN... ELSE. SELECT: termina un bloque SELECT CASE. SUB: termina un procedimiento SUB. TYPE: termina la definicin de un tipo de datos definido por el

usuario. Si no se especifica ningn argumento, END pondr fin al programa y cerrar todos los archivos. Ejemplo: PRINT "Juego terminado." END TUT.1.3. EXIT, instruccin Sale de un bucle DO o FOR, un procedimiento FUNCTION o SUB, o una funcin DEF FN. EXIT {DEF DO FOR FUNCTION SUB}

DEF: sale de una funcin DEF FN. DO: sale de un bucle DO. FOR: sale de un bucle FOR.

FUNCTION: sale de un procedimiento FUNCTION. SUB: sale de un procedimiento SUB. Ejemplo: i% = 0 DO i% = i% + 1 IF i% = 500 THEN EXIT DO LOOP PRINT "SALE en"; i% TUT.1.4. FOR... NEXT, instruccin Repite un bloque de instrucciones el nmero de veces especificado. FOR contador = inicio TO fin [STEP incremento] [bloqueinstrucciones] NEXT [contador [,contador]...] contador: una variable numrica utilizada como contador de bucle. inicio y fin: los valores inicial y final del contador. incremento: el incremento con el que se cambia el contador cada vez que se ejecute el bucle. Ejemplo: FOR i% = 1 TO 15 PRINT i% NEXT i% FOR i% = 7 to -6 STEP -3 PRINT i% NEXT i% TUT.1.5. IF... THEN... ELSE, instruccin Ejecuta una instruccin o bloque de instrucciones segn las condiciones especificadas. IF condicin1 THEN [bloqueinstrucciones-1] [ELSEIF condicin2 THEN [bloqueinstrucciones-2]]... [ELSE [bloqueinstrucciones-n]] END IF IF condicin THEN instrucciones [ELSE instrucciones] falsa. falsa. lneas. lneas. condicin1: expresin que puede ser evaluada como verdadera o condicin2: expresin que puede ser evaluada como verdadera o bloqueinstrucciones-1: una o ms instrucciones en una o ms bloqueinstrucciones-2: una o ms instrucciones en una o ms bloqueinstrucciones-n: una o ms instrucciones en una o ms

lneas.

instrucciones: una o ms instrucciones, separadas con el signo de dos puntos. Ejemplo: INPUT "1 2? ", i% IF i% = 1 OR i% = 2 THEN PRINT "OK" ELSE PRINT "Valor no vlido" END IF TUT.1.6. GOSUB... RETURN, instruccin Se bifurca a una subrutina y regresa desde la misma. GOSUB lnea1 . . . RETURN [lnea2] lnea1: la etiqueta o el nmero de lnea correspondiente a la primera lnea de la subrutina. lnea2: la etiqueta o el nmero de lnea al que regresar la subrutina. Si no se indica una etiqueta o nmero de lnea en RETURN, el programa continuar su ejecucin a partir de la instruccin que le sigue a GOSUB (para llamadas a subrutinas) o a partir del lugar donde ocurri un evento (para identificacin de eventos). Las instrucciones SUB y CALL constituyen una mejor alternativa para el uso de subrutinas GOSUB. Ejemplo: FOR i% = 1 TO 20 GOSUB Cuadro NEXT i% END Cuadro: PRINT i%, i% * i% RETURN TUT.1.7. GOTO, instruccin Realiza una bifurcacin a una lnea especificada. GOTO lnea lnea: la etiqueta o el nmero de la siguiente lnea que ser ejecutada. DO... LOOP, SELECT CASE, IF... THEN... ELSE, SUB y FUNCTION ofrecen mejores formas de controlar el flujo de los programas.

GOTO tambin se utiliza como palabra clave en la instruccin ON ERROR. Ejemplo: 'Muestra el uso de ERDEV, ERDEV$, ERL, ERR, ERROR, ON ERROR y RESUME. ON ERROR GOTO Identificador 10 CHDIR "a:\" 'Origina ERR 71 "El disquete no est 'listo", 'si no hay disquete en la Unidad A. 20 y% = 0 30 x% = 5 / y% 'ERR 11 "Divisin entre cero." 40 PRINT "x% ="; x% 50 ERROR 57 'ERR 57 "Error de dispositivo I/O." Identificador: PRINT PRINT "Error "; ERR; " en la lnea "; ERL SELECT CASE ERR CASE 71 PRINT "Usando el dispositivo "; ERDEV$; " cdigo de error = "; ERDEV RESUME NEXT CASE 11 INPUT "Escriba el valor por el que desee dividir"; y% RESUME 'Reintentar lnea 30 con el nuevo valor de 'y%. CASE ELSE PRINT "Error inesperado, terminando el programa." END END SELECT TUT.1.8. ON... GOSUB y ON... GOTO, instrucciones Bifurcan a una de varias posiciones, segn el valor de una expresin. ON expresin% GOSUB lista-lneas ON expresin% GOTO lista-lneas expresin%: una expresin entre 0 y 255. lista-lneas: una serie de etiquetas o nmeros de lnea. Si el valor de la expresin es 1, el programa se bifurca a la primera lnea de la lista; si la expresin es 2, se bifurca a la segunda lnea, etc. SELECT CASE ofrece una mejor forma de realizar bifurcaciones mltiples. Ejemplo: FOR i% = 1 TO 2 ON i% GOSUB Uno, Dos NEXT i% END Uno: PRINT "Uno" RETURN Dos: PRINT "Dos" RETURN

TUT.1.9. SELECT CASE, instruccin Ejecuta uno de los bloques de instrucciones, segn el valor de una expresin. SELECT CASE expresinaprobar CASE listaexpresiones1 [bloqueinstrucciones-1] [CASE listaexpresiones2 [bloqueinstrucciones-2]]... [CASE ELSE [bloqueinstrucciones-n]] END SELECT expresinaprobar: cualquier expresin numrica o de cadena. listaexpresiones1: una o ms expresiones para comparar con expresinaprobar. listaexpresiones2: la palabra clave IS debe preceder a cualquier operador relacional que haya en una expresin. bloqueinstrucciones-1: una o ms instrucciones en una o ms lneas. bloqueinstrucciones-2: una o ms instrucciones en una o ms lneas. bloqueinstrucciones-n: una o ms instrucciones en una o ms lneas. El argumento listaexpresiones puede tener cualquiera de las siguientes formas o una combinacin, separadas por comas: expresin[,expresin]... expresin TO expresin IS operador-relacional expresin expresin: cualquier expresin numrica o de cadena que sea compatible con expresinaprobar. operador-relacional: uno de los siguientes operadores relacionales: <, < =, >, >=, <> o =. Ejemplo: INPUT "Escriba nivel de riesgo aceptable (1-5): ", Total SELECT CASE Total CASE IS >= 5 PRINT "Riesgo y ganancia mximos." PRINT "Seleccione plan de inversiones en bolsa de

valores."

CASE 2 TO 4 PRINT "Riesgo y ganancia de moderados a altos." PRINT "Seleccione fondo mutuo o bonos de corporaciones." CASE 1 PRINT "Sin riesgo, pocas ganancias." PRINT "Seleccione plan de pensin individual."

END SELECT TUT.1.10. STOP, instruccin STOP Detiene la ejecucin de un programa.

La palabra clave STOP tambin detiene la intercepcin de eventos en las instrucciones siguientes: COM STRIG TIMER ON COM ON KEY ON PEN Ejemplo: FOR i% = 1 TO 10 PRINT i% IF i% = 5 THEN STOP contina. NEXT i% TUT.1.11. SYSTEM, instruccin Cierra los archivos abiertos y devuelve el control al sistema operativo. SYSTEM TUT.1.12. WHILE... WEND, instruccin Ejecuta una serie de instrucciones siempre que la condicin especificada tenga el estado verdadero. WHILE condicin . . . WEND condicin: una expresin numrica que BASIC evala como verdadera (no cero) o falsa (cero). DO... LOOP ofrece una mejor forma de ejecutar instrucciones en un bucle dentro del programa. TUT.1.13. SLEEP, instruccin Suspende temporalmente la ejecucin del programa. SLEEP [segundos&] segundos&: el nmero de segundos durante los que se suspender la ejecucin del programa. ON STRIG ON TIMER KEY PLAY ON PLAY

PEN

'STOP hace una pausa; F5

Si segundos& es 0 se omite, el programa ser suspendido hasta que se presione una tecla o hasta que ocurra un evento interceptado. Ejemplo: PRINT "Tomando una siesta de 10 segundos..." SLEEP 10 PRINT "Despirtate!" TUT.2. Instrucciones que declaran constantes y variables TUT.2.1. CONST, instruccin Declara una o ms constantes simblicas. CONST nombreconst = expresin [,nombreconst = expresin]... nombreconst: el nombre de la constante. Este nombre puede tener hasta 40 caracteres y debe comenzar con una letra. Los caracteres vlidos son AZ, 0-9 y el punto (.). No se pueden usar letras acentuadas ni la . expresin: una expresin asignada a la constante. La expresin puede consistir de literales (tales como 1.0), otras constantes, cualquier operador aritmtico o lgico excepto el de exponenciacin (^) o una sola cadena literal. Ejemplo: CONST PI = 3.141593 INPUT "Radio del crculo: "; r PRINT "rea = "; PI * r ^ 2 TUT.2.2. DATA, READ y RESTORE, instrucciones DATA especifica los valores que sern ledos por instrucciones READ subsecuentes; READ lee esos valores y los asigna a variables; RESTORE permite a READ volver a leer valores en las instrucciones DATA especificadas. DATA constante[,constante]... READ listavariables RESTORE [lnea] constante: una o ms constantes numricas o de cadena que especifican los datos que sern ledos. Las constantes de cadena que contengan comas (,) , dos puntos (:) o espacios antes o despus sern puestas entre comillas (""). listavariables: una o ms variables, separadas por comas, a las que se asignarn valores. Los nombres de variables pueden tener hasta 40 caracteres y deben comenzar con una letra. Los caracteres vlidos son A-Z, 0-9 y el punto (.). No se pueden usar letras acentuadas ni la . lnea: la etiqueta o nmero de lnea de una instruccin DATA. Si se omite, la siguiente instruccin READ leer los valores de la primera instruccin DATA del programa. Slo se pueden introducir instrucciones DATA a nivel de mdulo. No pueden ser utilizados en procedimientos. Ejemplo: FOR i% = 1 TO 3 READ a%, b$

PRINT a%, b$ RESTORE NEXT i% DATA 1, "Repetir" TUT.2.3. DIM y REDIM, instrucciones DIM declara una matriz o especifica un tipo de datos para una variable que no sea una matriz. REDIM declara o cambia el tamao de una matriz dinmica, borrando los valores anteriores. DIM [SHARED] variable[(subndices)] [AS tipo] [,variable[(subndices)] [AS tipo]]... REDIM [SHARED] variable(subndices) [AS tipo] [,variable(subndices) [AS tipo]]... SHARED: especifica que las variables sern compartidas con todos los procedimientos SUB o FUNCTION existentes en el mdulo. variable: el nombre de una matriz o variable. subndices: las dimensiones de la matriz, indicadas de esta forma: [inferior TO] superior [,[inferior TO] superior]... inferior: el lmite inferior de los subndices de la matriz. El valor predeterminado es 0. superior: el lmite superior. AS tipo: declara el tipo de datos de la matriz o variable (INTEGER, LONG, SINGLE, DOUBLE, STRING o un tipo de datos definido por el usuario). DIM declara matrices estticas o dinmicas. A menos que se haya determinado el almacenamiento de la matriz mediante $STATIC, $DYNAMIC o COMMON, las matrices cuyas dimensiones son definidas con nmeros sern estticas y las matrices cuyas dimensiones son definidas con variables sern dinmicas. REDIM siempre declara matrices dinmicas. El almacenamiento de matrices estticas ser asignado al iniciar el programa y permanecer fijo. El almacenamiento de matrices dinmicas ser asignado durante la ejecucin del programa. Ejemplo: ' $DYNAMIC DIM A(49, 49) REDIM A(19, 14) TUT.2.4. ERASE, instruccin Reinicializa los elementos de una matriz o libera espacio de almacenamiento para matrices dinmicas. ERASE nombrematriz [,nombrematriz]... nombrematriz: el nombre de una matriz. Para matrices estticas, ERASE asigna cero a cada elemento de matrices numricas y asigna nulo a cada elemento de matrices de cadena.

Para matrices dinmicas, ERASE libera la memoria utilizada por la matriz. Hay que volver a declarar las dimensiones de la matriz usando REDIM o DIM antes de usarla. Ejemplo: DIM a%(0) a%(0) = 6 PRINT "Antes: "; a%(0) ERASE a% PRINT "Despus: "; a%(0) TUT.2.5. OPTION BASE, instruccin Establece el lmite inferior predeterminado para subndices de matrices. OPTION BASE {0 1}

La instruccin DIM con la clasula TO constituye una mejor forma de definir el lmite inferior de un subndice de matriz. TUT.2.6. TYPE... END TYPE, instruccin Define un tipo de datos que contiene uno o ms elementos. TYPE tipousuario elemento AS tipo [elemento AS tipo] . . . END TYPE tipousuario: el nombre del tipo de datos que ser definido. El nombre puede tener hasta 40 caracteres y debe comenzar con una letra. Los caracteres vlidos son A-Z, 0-9 y el punto (.). No se pueden usar letras acentuadas ni la . elemento: un elemento del tipo de datos definido por el usuario. tipo: el tipo de datos del elemento (INTEGER, LONG, SINGLE, DOUBLE, STRING o un tipo de datos definido por el usuario). Usaremos DIM, REDIM, COMMON, STATIC o SHARED para crear una variable con un tipo de datos definido por el usuario. Ejemplo: TYPE Cartas Palo AS STRING * 9 Valor AS INTEGER END TYPE DIM Juego(1 TO 52) AS Carta Juego(1).Palo = "Bastos" Juego(1).Valor = 2 PRINT Juego(1).Palo, Juego(1).Valor TUT.2.7. REM, instruccin Permite insertar comentarios y explicaciones en un programa.

REM comentario ' comentario comentario: cualquier texto. Se har caso omiso a comentarios al ejecutar el programa, a menos que contengan metacomandos. Se puede insertar un comentario en la misma lnea despus de una instruccin ejecutable si va precedido de una forma de REM que utilice la comilla sencilla (') o si REM va precedido de dos puntos (:). Ejemplo: REM Este es un comentario. ' Este tambin es un comentario. PRINT "Prueba1" 'Un comentario despus de la instruccin PRINT. PRINT "Prueba2" : REM Otro comentario despus de la instruccin PRINT. TUT.2.8. SWAP, instruccin Intercambia los valores de dos variables. SWAP variable1, variable2 variable1 y variable2: dos variables del mismo tipo de datos. Ejemplo: a% = 1: b% = 2 PRINT "Antes: "; a%, b% SWAP a%, b% PRINT "Despus: "; a%, b% TUT.2.9. COMMON, instruccin Define variables globales que podrn ser compartidas en todo el programa o entre programas encadenados. COMMON [SHARED] listavariables SHARED: indica que las variables sern compartidas en todos los procedimientos SUB o FUNCTION. listavariables Una o ms variables que sern compartidas: variable[( )] [AS tipo] [, variable[( )] [AS tipo]]... variable: un nombre de variable BASIC. Los nombres de variables pueden tener hasta 40 caracteres y deben comenzar con una letra. Los caracteres vlidos son A-Z, 0-9 y el punto (.). No se pueden usar letras acentuadas ni la . tipo: el tipo de datos de la variable (INTEGER, LONG, SINGLE, DOUBLE, STRING, o un tipo de datos definido por el usuario). A menos que haya sido declarada como matriz esttica en una instruccin DIM anterior, una variable de matriz en una instruccin COMMON ser una matriz dinmica. Ser necesario establecer sus dimensiones posteriormente a travs de una instruccin DIM o REDIM.

TUT.2.10. $DYNAMIC y $STATIC, metacomandos Establecen el almacenamiento predeterminado de matrices. {REM {REM '} $STATIC '} $DYNAMIC

{REM '}: REM o un carcter de comentario (') debe preceder a los metacomandos. $STATIC: especifica que las matrices declaradas en instrucciones DIM subsecuentes sean matrices estticas (a menos que sean declaradas en un procedimiento SUB o FUNCTION no esttica). El almacenamiento de matrices ser asignado al iniciar el programa y permanecer fijo. $DYNAMIC: especifica que las matrices declaradas en instrucciones DIM subsecuentes sean matrices dinmicas. El almacenamiento de matrices ser asignado en forma dinmica durante la ejecucin del programa. DIM y REDIM generalmente constituyen una mejor manera de especificar si las matrices deben ser dinmicas o estticas. TUT.2.11. LBOUND y UBOUND, funciones Devuelven el lmite inferior y superior (el subndice menor o mayor disponible), para la dimensin de matriz especificada. LBOUND(matriz[,dimensin%]) UBOUND(matriz[,dimensin%]) matriz: el nombre de la matriz. dimensin%: indica la dimensin de la matriz cuyo lmite inferior o superior ser dado como resultado. Utilcese 1 para la primera dimensin, 2 para la segunda, etc. El valor predeterminado es 1. Ejemplo: DIM a%(1 TO 3, 2 TO 7) PRINT LBOUND(a%, 1), UBOUND(a%, 2) TUT.2.12. VARSEG y VARPTR, funciones VARPTR devuelve la direccin compensada de una variable. VARSEG devuelve la direccin de segmento de una variable. VARPTR(nombre-variable) VARSEG(nombre-variable) nombre-variable: cualquier nombre de variable BASIC. TUT.2.13. VARPTR$, funcin Devuelve una representacin de la direccin de una variable en forma de una cadena para ser utilizada en instrucciones DRAW y PLAY. VARPTR$(cadena-comando$)

cadena-comando$: una variable de cadena que contiene comandos DRAW o PLAY. Ejemplo: Escala$ = "CDEFGAB" PLAY "L16" FOR i% = 0 TO 6 PLAY "O" + STR$(i%) PLAY "X" + VARPTR$(Escala$) NEXT i% TUT.3. Instrucciones que definen y llaman procedimientos TUT.3.1. CALL, instruccin Transfiere el control a un procedimiento SUB. [CALL] nombre [([listargumentos])] nombre: el nombre del procedimiento SUB que ser llamado. listargumentos: las variables o constantes que sern pasadas al procedimiento SUB. Separe los argumentos con comas. Para especificar argumentos de matrices, usaremos el nombre de la matriz seguido de parntesis vacos. Si se omite la palabra clave CALL, tambin se debern omitir los parntesis alrededor de listargumentos. Declrese el procedimiento en una instruccin DECLARE antes de llamarlo, o gurdese el programa y QBASIC generar automticamente una instruccin DECLARE. Para especificar un argumento cuyo valor no ser cambiado por el procedimiento, encierre el argumento entre parntesis. Nota: El programa [Link] ilustra llamadas a procedimientos SUB. Para ver o ejecutar este programa, carguemos [Link] usando el comando Abrir del men Archivo. TUT.3.2. DECLARE, instruccin Declara una funcin FUNCTION o subprograma SUB e invoca la verificacin de tipo de datos para los argumentos. DECLARE {FUNCTION SUB} nombre [([listaparmetros])]

nombre: el nombre del procedimiento. listaparmetros: una o ms variables que especifican los parmetros que sern pasados al procedimiento cuando ste sea llamado: variable[( )] [AS tipo] [, variable[( )] [AS tipo]]... variable: el nombre de una variable BASIC. tipo: el tipo de datos de la variable (INTEGER, LONG, SINGLE, DOUBLE, STRING o un tipo de datos definido por el usuario). ANY permite cualquier tipo de datos. DECLARE es requerido si se hace un llamado a un procedimiento SUB sin

CALL. QBASIC generar automticamente instrucciones DECLARE cuando se guarde un programa. Nota: El programa [Link] muestra cmo declarar FUNCTION y procedimientos SUB. Para ver o ejecutar este programa, cargaremos [Link] usando el comando Abrir del men Archivo. TUT.3.3. FUNCTION, instruccin Define un procedimiento FUNCTION. FUNCTION nombre [(listaparmetros)] [STATIC] [bloqueinstrucciones] nombre = expresin [bloqueinstrucciones] END FUNCTION nombre: el nombre de la funcin y tipo de datos que devuelve especificado por un sufijo de tipo de datos (%, &, !, #, o $). listaparmetros: una o ms variables que especifican parmetros que sern pasados a la funcin cuando sta sea llamada: variable[( )] [AS tipo] [, variable[( )] [AS tipo]]... variable: un nombre de variable BASIC. tipo: el tipo de datos de la variable (INTEGER, LONG, SINGLE, DOUBLE, STRING, o un tipo de datos definido por el usuario).

STATIC: especifica que los valores de las variables locales de la funcin sen guardados entre llamados a la funcin. expresin: el valor de la funcin devuelto. Cuando se llama a una funcin, se podr especificar que el valor de un argumento no sea cambiado por la funcin, poniendo el argumento entre parntesis. Nota: (Ver la Nota de la seccin anterior). TUT.3.4. RUN, instruccin Ejecuta el programa actual o el programa especificado. RUN [{nmerolnea archivo$}]

nmerolnea: el nmero de lnea en el programa actual donde la ejecucin deber comenzar. Si no se especifica un nmero de lnea, la ejecucin comenzar en la primera lnea ejecutable. archivo$: el nombre de un archivo de origen de BASIC. QBASIC supone que tendr la extensin .bas. RUN cierra todos los archivos y borra la memoria del programa antes de cargar un programa. Utilizaremos la instruccin CHAIN si deseamos ejecutar un programa sin cerrar los archivos abiertos. Ejemplo:

'Supone que el programa [Link] est en el directorio \DOS. RUN "C:\DOS\[Link]" TUT.3.5. SHELL, instruccin Suspende la ejecucin de un programa BASIC para ejecutar un comando de DOS o un archivo de Procesamiento por Lotes (batch). SHELL [cadenacomando$] cadenacomando$: el nombre de un comando de DOS o archivo de Procesamiento por Lotes. Se reanudar la ejecucin del programa cuando se termine de ejecutar el comando de DOS o el archivo de Procesamiento por Lotes. Si omito la cadena de comando, SHELL invocar a DOS Shell y presentar el smbolo del sistema. Utilizar el comando EXIT para reanudar al programa. Ejemplo: SHELL "DIR" TUT.3.6. SHARED y STATIC, instrucciones SHARED permite que los procedimientos tengan acceso a variables de nivel de mdulo. STATIC convierte una variable local en una funcin o procedimiento y conserva su valor entre llamados. SHARED variable[()] [AS tipo] [,variable[()] [AS tipo]]... STATIC variable[()] [AS tipo] [,variable[()] [AS tipo]]... variable: el nombre de la variable de nivel de mdulo que ser compartida o la variable que se har esttica. Los nombres de variables pueden tener hasta 40 caracteres y deben comenzar con una letra. Los caracteres vlidos son A-Z, 0-9 y el punto (.). No se pueden usar letras acentuadas ni . AS tipo: declara el tipo de datos de la variable (INTEGER, LONG, SINGLE, DOUBLE, STRING o un tipo de datos definido por el usuario). Nota: El programa [Link] muestra el uso de las instrucciones SHARED y STATIC. Para ver o ejecutar este programa, carguemos [Link] usando el comando Abrir del men Archivo. TUT.3.7. SUB, instruccin Define un procedimiento SUB. SUB nombre[(listaparmetros)] [STATIC] [bloqueinstrucciones] END SUB nombre: el nombre de un procedimiento SUB, de hasta 40 caracteres, sin sufijo indicando el tipo de datos. listaparmetros: una o ms variables que especifican los parmetros que sern pasados a un procedimiento SUB cuando es llamado:

variable[( )] [AS tipo] [, variable[( )] [AS tipo]]... variable: un nombre de variable BASIC. tipo: el tipo de datos de la variable (INTEGER, LONG, SINGLE, DOUBLE, STRING, o un tipo de datos definido por el usuario). STATIC: especifica que los valores de las variables locales del procedimiento SUB sean guardados entre llamados a la funcin. Cuando se hace el llamado a un procedimiento SUB, se puede especificar que el valor de un argumento no sea cambiado por el procedimiento, poniendo el argumento entre parntesis. Ejemplo: El programa [Link] muestra cmo llamar a un procedimiento SUB. TUT.3.8. CHAIN, instruccin BASIC. Transfiere el control desde el programa actual a otro programa de

CHAIN archivo$ archivo$: el nombre del programa al que se pasar el control. Ejemplo: 'Supone que el programa [Link] est en el directorio \DOS. CHAIN "C:\DOS\[Link]" TUT.3.9. DEF FN, instruccin Define una funcin. DEF FNnombre(listaparmetros)] = expresin DEF FNnombre[(listaparmetros)] [bloqueinstrucciones] FNnombre = expresin [bloqueinstrucciones] EXIT DEF] [bloqueinstrucciones] END DEF listaparmetros: uno o ms argumentos con esta forma: variable[( )] [AS tipo] [, variable[( )] [AS tipo]]... variable: un nombre de variable BASIC. tipo: el tipo de datos de la variable (INTEGER, LONG, SINGLE, DOUBLE, STRING o un tipo de datos definido por el usuario). expresin: el valor devuelto por la funcin.

La instruccin FUNCTION ofrece una mejor manera de definir una funcin. TUT.3.10. DEFDBL, DEFINT, DEFLNG, DEFSNG y DEFSTR , instrucciones Definen el tipo de datos predeterminado para variables, funciones DEF FN y procedimientos FUNCTION. DEFINT DEFLNG DEFSNG DEFDBL DEFSTR letras letras letras letras letras [,letras]... [,letras]... [,letras]... [,letras]... [,letras]...

letras: una letra o serie de letras (por ejemplo, A-M). QBASIC establecer el tipo de datos predeterminado para variables, funciones DEF FN y procedimientos FUNCTION cuyos nombres comienzan con la letra o letras especificadas, segn se indica a continuacin: Instruccin Tipo de datos predeterminado

DEFINT Entero DEFLNG Entero largo DEFSNG Precisin sencilla DEFDBL Precisin doble DEFSTR Cadena Un sufijo indicando el tipo de datos (%, &, !, # o $) siempre tendr prioridad sobre una instruccin DEFtipo. Precisin sencilla ser el tipo de datos predeterminado si no se especifica una instruccin DEFtipo. Despus de especificar una instruccin DEFtipo en un programa, QBASIC insertar automticamente una instruccin DEFtipo correspondiente en cada procedimiento que hayamos creado. Ejemplo: DEFDBL A-Z a = SQR(3) PRINT "Raz cuadrada de 3 = "; a TUT.4. Instrucciones de Entrada/Salida de dispositivos TUT.4.1. CLS, instruccin Borra la pantalla. CLS [{0 1 2}]

CLS: borra la ventana grfica o la de texto. Si se ha establecido una ventana grfica (usando VIEW), se borrar slo la ventana grfica. De lo contrario, se borrar la ventana de texto o toda la pantalla. CLS 0: borra la pantalla, quitando todo el texto y los grficos. CLS 1: borra la ventana de grficos, o la pantalla completa si no se ha establecido una ventana para grficos.

CLS 2: borra la ventana de texto. TUT.4.2. CSRLIN y POS, funciones y LOCATE, instruccin LOCATE mueve el cursor en la pantalla a la posicin especificada. CSRLIN devuelve la posicin actual de la fila donde se encuentra el cursor. POS devuelve la posicin actual de la columna donde se encuentre el cursor. LOCATE [fila%][,[columna%][,[cursor%][,inicio% [,fin%]]]] CSRLIN POS(expresin) fila% y columna%: el nmero de la fila y columna a la que se mover el cursor. cursor%: especifica si el cursor est visible: 0 = invisible, 1 = visible . inicio% y fin%: expresiones de enteros entre 0 y 31 que especifican la primera y ltima lnea de exploracin del cursor. Podremos cambiar el tamao del cursor modificando las lneas de exploracin. expresin: cualquier expresin. Ejemplo: CLS LOCATE 5, 5 MiLin% = CSRLIN MiCol% = POS(0) PRINT "Posicin 1 (Presione cualquier tecla)" DO LOOP WHILE INKEY$ = "" LOCATE (MiLin% + 2), (MiCol% + 2) PRINT "Posicin 2" TUT.4.3. INKEY$, funcin Lee un carcter desde el teclado. INKEY$ INKEY$ genera una cadena nula si no hay ningn carcter para devolver. Para las teclas estndar, INKEY$ genera una cadena de 1 byte que contiene el carcter ledo. Para las teclas extendidas, INKEY$ genera una cadena de 2 bytes que contienen el carcter nulo (ASCII 0) y el cdigo de teclado. Ejemplo: PRINT "Presione Esc para salir..." DO LOOP UNTIL INKEY$ = CHR$(27) '27 es el cdigo ASCII para Esc. TUT.4.4. INP y OUT, funciones INP genera un byte ledo del puerto (hardware) de Entrada/Salida (E/S). OUT enva un byte a un puerto (hardware) de E/S. INP(puerto%)

OUT puerto%, datos% puerto%: un nmero entre 0 y 65.535 que identifica el puerto. datos%: una expresin numrica entre 0 y 255 que ser enviada al Ejemplo: x% = INP(&H3FC) 'Leer COM1 Modem Control Register. OUT &H3FC, (x% XOR 1) 'Cambiar bit de Data Terminal Ready. TUT.4.5. INPUT y LINE INPUT, instrucciones INPUT lee informacin desde el teclado o desde un archivo. LINE INPUT lee una lnea de hasta 255 caracteres desde el teclado o desde un archivo. INPUT [;] ["mensaje"{; ,}] listavariables LINE INPUT [;] ["mensaje";] variable$ INPUT #numarchivo%, listavariables LINE INPUT #numarchivo%, variable$ mensaje: una cadena literal optativa que ser presentada antes de que el usuario introduzca datos. Un punto y coma despus del mensaje agregar un signo de interrogacin al texto del mensaje. listavariables: una o ms variables, separadas con comas, en las que sern almacenados los datos introducidos desde el teclado o ledos desde un archivo. Los nombres de variables pueden tener hasta 40 caracteres y deben comenzar con una letra. Los caracteres vlidos son A-Z, 0-9 y el punto (.). No se pueden usar letras acentuadas ni la . variable$: almacena una lnea de caracteres introducidos desde el teclado o ledos desde un archivo. numarchivo%: el nmero de un archivo abierto. INPUT utiliza la coma (,) como separador entre entradas. LINE INPUT lee todos los caracteres hasta encontrar un retorno de carro. Para datos introducidos desde el teclado, un punto y coma (;) inmediatamente despus de INPUT mantendr el cursor en la misma lnea despus que el usuario presione la tecla ENTRAR. Ejemplo: CLS OPEN "LISTA" FOR OUTPUT AS #1 DO INPUT "NOMBRE:",Nombre$ 'Lee datos desde el teclado. INPUT "EDAD:", Edad$ WRITE #1, Nombre$, Edad$ INPUT "Desea ingresar otros datos"; R$ LOOP WHILE UCASE$(R$) = "S" CLOSE #1 'Mostrar el archivo en la pantalla. OPEN "LISTA" FOR INPUT AS #1 CLS PRINT "Datos en el archivo:": PRINT DO WHILE NOT EOF(1) LINE INPUT #1, REC$ 'Leer datos del archivo. PRINT REC$ 'Imprimir los datos en la pantalla. LOOP

puerto.

CLOSE #1 KILL "LISTA" TUT.4.6. KEY (Asignacin), instruccin Asigna valores de cadena a teclas de funcin y, si se especifica la opcin, presenta los valores de las teclas. KEY KEY KEY KEY tecla%, expresincadena$ LIST ON OFF

tecla%: el nmero de una tecla de funcin. Utilizaremos 1 a 10 para las teclas de funcin F1 a F10. Utilizaremos 30 y 31 para F11 y F12 en teclados extendidos. expresincadena$: una expresin de cadena de hasta 15 caracteres generados al presionar la tecla de funcin. LIST: presenta las asignaciones para cada tecla. ON: activa la lnea que muestra las teclas de funcin. OFF: desactiva la lnea que muestra las teclas de funciones. Ejemplo: KEY KEY KEY KEY 4, "MENU" + CHR$ (13) LIST 4, "" LIST

TUT.4.7. LPOS, funcin Devuelve el nmero de caracteres enviados a la impresora desde el ltimo envio de retorno de carro. LPOS(n%) n%: indica uno de los puertos de impresora: 0 = LPT1, 1 = LPT1, 2 = LPT2 y 3 = LPT3. Ejemplo: 'Este ejemplo requiere una impresora. LPRINT FOR i% = 1 TO 20 LPRINT i%; IF LPOS(1) >= 10 THEN LPRINT NEXT i% TUT.4.8. PRINT y LPRINT, instrucciones PRINT escribe datos en la pantalla o en un archivo. LPRINT imprime los datos en la impresora LPT1. PRINT [#numarchivo%,] [listaexpresiones] [{; LPRINT [listaexpresiones] [{; ,}] ,}]

numarchivo%: el nmero de un archivo abierto. Si no se especifica un

nmero de archivo, PRINT escribir la informacin en la pantalla. listaexpresiones: una lista de una o ms expresiones numricas o de cadena que sern impresas. {; ,}: determina el lugar dnde empieza la informacin de salida siguiente: ; imprimir inmediatamente despus del ltimo valor. , imprimir al inicio de la siguiente zona de impresin. Las zonas de impresin tienen un ancho de 14 caracteres. Ejemplo: OPEN "[Link]" PRINT #1, USING CLOSE OPEN "[Link]" INPUT #1, a$ PRINT a$ LPRINT "Esta es LPRINT "Esta es LPRINT 2 FOR OUTPUT AS #1 "##.### "; 12.12345 FOR INPUT AS #1 una lnea"; 1 una lnea",

TUT.4.9. PRINT USING y LPRINT USING, instrucciones PRINT USING escribe informacin de salida con formato en la pantalla o en un archivo. LPRINT USING imprime informacin de salida con formato en la impresora en LPT1. PRINT[#numarchivo%,] USING cadenaformato$;listaexpresiones [{; ,}] LPRINT USING cadenaformato$; listaexpresiones [{; ,}] numarchivo%: el nmero de un archivo secuencial abierto. formatocadena$;: una expresin de cadena que contiene uno o ms especificadores de formato: Caracteres que dan formato a una expresin numrica . # Posicin de dgito. Despus del dgito, imprime el signo para los nmeros negativos. Posicin de punto decimal. A la izquierda del punto decimal, imprime una coma cada 3 dgitos. Imprime $ delante. Posicin del signo de nmero. Llena espacios delante con * Imprime con formato exponencial. Combina ** y $$. Caracteres que dan formato a una expresin de cadena & \ \ entre ! Imprime la cadena completa. Imprime los primeros n caracteres, donde n es el nmero de espacios barra +2. Imprime slo el primer carcter de la cadena. Caracteres utilizados para imprimir caracteres literales _ Imprime el carcter de formato siguiente como literal.

, $$ + ** ^^^^ **$

(Cualquier carcter que no est en la tabla ser imprimido como literal). listaexpresiones: una lista de una o ms expresiones numricas o de cadena que sern impresas; separadas con comas, punto y comas, espacios o tabulaciones. {; ,}: (Ver la seccin anterior).

Ejemplo: a = 123.4567 PRINT USING "###.##"; a LPRINT USING "+###.####"; a a$ = "ABCDEFG" PRINT USING "!"; a$ LPRINT USING "\ \"; a$ TUT.4.10. OPEN COM, instruccin Abre e inicializa un canal de comunicacines para informacin de entrada y salida (E/S). Debemos ejecutar la instruccin OPEN COM antes de usar un dispositivo para comunicaciones que utilice una interfaz RS232. OPEN "COMn: listaop1 listaop2" [FOR modo] AS [#]numarch% [LEN=reclen%] COM2). n: el puerto de comunicaciones que ser abierto (1 = COM1, 2 = con

listaop1: los parmetros de comunicacin que se utilizan mayor frecuencia: [baudios] [,[paridad] [,[datos] [,[paro]]]]

baudios es la velocidad de transmisin en baudios para el dispositivo que ser abierto: 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600; paridad es el mtodo para verificar la paridad: N (ninguno), E (par), O (impar), S (espacio), M (marca), PE (activar verif/errores); datos es el nmero de bits de datos por byte: 5, 6, 7, 8; paro es el nmero de bits de paro: 1, 1.5, 2. Los valores predeterminados son: baudios 300, paridad par, 7 bits de datos, 1 bit de paro. listaop2: lista de parmetros usados con menor frecuencia, separados con comas: Opcin ASC BIN CD[m] CS[m] DS[m] LF OP[m] Descripcin Abre el dispositivo en modo ASCII. Abre el dispositivo en modo binario. Define el tiempo de espera (en milisegundos) en la lnea Data Carrier Detect (DCD). Define el tiempo de espera (en milisegundos) en la lnea Clear to Send (CTS). Define el tiempo de espera (en milisegundos) en la lnea Data Set Ready (DS). Enva un carcter de salto de lnea despus de un retorno de carro. Especifica cunto tiempo (en milisegundos) OPEN

de RB[n] RS TB[n]

COM esperar la apertura de todas las lneas comunicaciones. Define el tamao (en bytes) del buffer receptor. Suprime la deteccin de Peticin de Envio (RTS). Define el tamao (en bytes) del buffer de transmisin.

modo: RANDOM=predeterminado. Los dems: APPEND especifica que el archivo ser abierto para dar informacin de salida secuencial y coloca el puntero de archivo al final del archivo. Una instruccin PRINT # o WRITE # luego anexa informacin al archivo. BINARY especifica el modo de archivo binario. En este modo, es posible leer o escribir informacin en cualquier posicin de byte del archivo usando instrucciones GET o PUT. INPUT especifica que el archivo ser abierto para recibir informacin de entrada secuencial. OUTPUT especifica que el archivo ser abierto para dar informacin de salida secuencial. RANDOM especifica que el archivo ser abierto en el modo de acceso aleatorio. RANDOM, como hemos dicho ya, es el modo de archivo predeterminado. numarch%: un nmero entre 1 y 255 que identifica el canal de comunicaciones mientras est abierto. reclen%: tamao del buffer de modo de acceso aleatorio (el valor predeterminado es de 128 bytes). Ejemplo: 'Usemos este ejemplo para detectar errores de comunicaciones en serie. 'Velocidad de transmisin lenta, handshaking de hardware desactivado, 'buffer agrandado... OPEN "COM1:300,N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048" FOR RANDOM AS #1 TUT.4.11. SPC, funcin LPRINT. SPC(n%) 32,767. n%: el nmero de espacios que sern omitidos; un valor entre 0 y Ejemplo: PRINT "Texto1"; SPC(10); "Texto2" TUT.4.12. SCREEN, funcin Omite un nmero de espacios especificados en una instruccin PRINT o

Devuelve el valor ASCII o el atributo de color de un carcter en la pos icin de pantalla especificada. SCREEN (lnea%,columna% [,indicolor%]) lnea%: la coordenada indicando la lnea de un carcter. columna%: la coordenada indicando la columna de un carcter. indicolor%: un valor (0 1) que especifica el tipo de resultado producido. Valor 0 (u omitido) 1 Ejemplo: CLS PRINT "Hola PRINT "El valor ASCII del carcter situado en 1,1 es"; SCREEN(1, 1) TUT.4.13. TAB, funcin Mueve el cursor de texto a la posicin de impresin especificada. TAB(columna%) columna%: el nmero de columna de la nueva posicin de impresin. Ejemplo: PRINT TAB(25); "Texto" TUT.4.14. VIEW PRINT, instruccin Establece los lmites de margen para el texto en la pantalla del marco de visualizacin. VIEW PRINT [filasup% TO filainf%] filaasup%: el nmero de la fila superior del texto en la ventana. filainf%: el nmero de la fila inferior del texto en la ventana. Si omitimos los argumentos filasup% y filainf%, VIEW PRINT establecer la pantalla completa como pantalla de texto. La gama de valores para filasup% y filainf% depende del modo de pantalla. Ejemplo: VIEW PRINT 10 TO 15 FOR i% =1 TO 100 'Informacin de salida se desplazar PRINT i% NEXT i% Resultado El cdigo ASCII del carcter El atributo de color del carcter

TUT.4.15. WAIT, instruccin Suspende la ejecucin del programa hasta que la configuracin de bits especificada se envie desde un puerto de entrada. WAIT numpuerto%, expresin-AND% [,expresin-XOR%] numpuerto%: el nmero de un puerto de entrada. expresin-AND%: una expresin en entero que WAIT combina con el valor de la configuracin de bits usando un operador AND. Cuando el resultado no es cero, WAIT dejar de controlar el puerto. expresin-XOR%: puede ser utilizado para activar y desactivar bits de lnea en la configuracin de bits antes de aplicar la operacin AND. Ejemplo: 'Leer la direccin del puerto del controlador de interrupcin &H20. 'Presionar cualquier tecla para continuar. WAIT &H20, 1 TUT.4.16. WIDTH, instruccin Asigna un ancho a la lnea de salida enviado a un dispositivo como una impresora o archivo, o cambia el nmero de columnas o filas presentadas en pantalla. WIDTH [columnas%] [,filas%] WIDTH {#numarchivo% dispositivo$}, columnas% WIDTH LPRINT columnas% columnas%: el ancho deseado, en columnas. El ancho presentado en la pantalla debe ser 40 u 80 columnas. filas%: la altura deseada, en filas. La altura presentada en la pantall a puede ser 25, 30, 43, 50 60, segn el adaptador de video y el modo de pantalla. #numarchivo%: el nmero de un archivo o dispositivo abierto. dispositivo$: el nombre de un dispositivo: SCRN:, COM1:, COM2:, LPT1:, LPT2:, LPT3: Ejemplo: OPEN "LPT1:" PARA SALIDA COMO #1 WIDTH #1, 132 TUT.4.17. IOCTL, instruccin e IOCTL$, funcin IOCTL transmite una cadena de control a un controlador de dispositivo. IOCTL$ devuelve la informacin sobre el estado actual de un controlador de dispositivo. IOCTL [#]numarchivo%, cadena$ IOCTL$([#]numarchivo%) numarchivo%: el nmero de un dispositivo abierto. cadena$: la cadena de control que se enviar al dispositivo. Las cadenas de control IOCTL y la informacin producida por IOCTL$

dependen del controlador de dispositivo. Consultemos, pues, la documentacin del controlador de dispositivo para obtener informacin sobre las cadenas de control y los resultados de la funcin IOCTL$. TUT.4.18. RESET, instruccin Cierra todos los archivos y dispositivos abiertos. RESET TUT.4.19. STICK, funcin Devuelve las coordenadas de una palanca de mando (joystick). STICK(n%) n%: indica las coordenadas que sern devueltas como resultado: n% 0 1 2 3 Devuelve coordenada coordenada coordenada coordenada X Y X Y de de de de palanca palanca palanca palanca A A B B

Llamar STICK(0) antes de STICK(1), STICK (2) o STICK(3). STICK(0) guarda un registro de las coordenadas actuales. Ejemplo: Temp% = STICK(0) PRINT STICK(2), STICK(3) TUT.5. Instrucciones para presentar imgenes grficas TUT.5.1. CIRCLE, instruccin Traza un crculo o elipse en la pantalla. CIRCLE [STEP] (x!,y!),radio![,[color%] [,[inicio!] [,[fin!] [,aspecto!]]]] STEP: especifica que las coordenadas estarn situadas con relacin a la posicin actual del cursor de grficos. (x!,y!): las coordenadas del centro del crculo o elipse. radio!: el radio del crculo o elipse en unidades del sistema de coordenadas actual, determinado por las ms recientes instrucciones SCREEN, VIEW o WINDOW. color%: un atributo de color que determina el color del crculo. Los atributos de color disponibles dependern del adaptador de grficos y del modo de pantalla establecido mediante la ms reciente instruccin SCREEN. inicio!: el ngulo inicial para el arco, en radianes. fin!: el ngulo final para el arco, en radianes. aspecto!: la dimensin entre la longitud del eje Y y la longitud del eje X, utilizada para trazar elipses. Nota: Para convertir grados en radianes, multipliquemos grados por (PI) y dividamos entre 180.

Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. SCREEN 2 CIRCLE (320, 100), 200 CIRCLE STEP (0,0), 100 TUT.5.2. COLOR, instruccin Establece los colores presentados en la pantalla. COLOR [primerplano%] [,[fondo%] [,bordes%]] (Modo de pantalla 0, slo texto) COLOR [fondo%] [,paleta%] (Modo de pantalla 1) COLOR [primerplano%] (Modos de pantalla 4, 12, 13) COLOR [primerplano%] [,fondo%] (Modos de pantalla 7-10) primerplano%: un nmero que establece el color del primer plano de la pantalla. En el modo de pantalla 0, primerplano% es un atributo de color que establece el color al texto. En otros modos de pantalla, primerplano% es un atributo de color o valor de color de 4 bytes (modo de pantalla 4 solamente) que establece el color para el texto y lneas dibujadas. fondo%: un nmero que establece el color del fondo en la pantalla. En el modo de pantalla 0, fondo% es un atributo de color. En el modo de pantalla 1, fondo% es un valor de color de 4 bits. En los modos de pantalla 7-10, fondo% es un valor de color. bordes%: un atributo de color que establece el color de los bordes de la pantalla. paleta%: un nmero (0 1) que especifica el juego de atributos de color que ser utilizado: paleta% Atributo 1 0 1 Verde Azul-verdoso Atributo 2 Magenta Rojo Atributo 3 Blanco Intenso Marrn

Los atributos y valores de color disponibles dependern del adaptador de grficos y del modo de pantalla establecido mediante la ltima instruccin SCREEN. Si el sistema tiene un adaptador EGA, VGA o MCGA, utilizaremos la instruccin PALLETTE para cambiar las asignaciones de color correspondientes a los atributos de color. Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. SCREEN 7 FOR i% = 0 TO 15 COLOR i% PRINT i% NEXT i% TUT.5.3. GET (Grficos) y PUT (Grficos), instrucciones

GET captura una imagen de pantalla en grficos. PUT presenta una imagen capturada mediante GET. GET [STEP](x1!,y1!)-[STEP](x2!,y2!), matriz[(ndice%)] PUT [STEP] (x1!,y1!), matriz[(ndice%)] [,palabra] STEP: especifica que las coordenadas estarn situadas con relacin a la posicin actual del cursor de grficos. (x1!,y1!): las coordenadas superior izquierda de la imagen capturada mediante GET o la posicin en la pantalla donde PUT colocar la imagen. (x2!,y2!): las coordenadas inferior derecha de la imagen capturada. matriz: Nombre de la matriz donde ser almacenada la imagen. ndice%: el ndice de la matriz donde comenzar el almacenamiento de la imagen. palabra: una palabra clave indicando la forma en que se presentar la imagen: Palabra AND OR PSET PRESET XOR Efecto Combina la imagen almacenada con una imagen existente. Superpone la imagen almacenada en una imagen existente. Traza una imagen almacenada, borrando una imagen existente. Traza una imagen almacenada en colores inversos, borrando una imagen existente. Traza una imagen almacenada o borra una imagen trazada anteriormente y conserva el fondo, produciendo efectos de animacin.

Siempre se debe ejecutar una instruccin PUT en el mismo modo de pantalla que la instruccin GET utilizada para capturar la imagen, o en un modo compatible. Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. SCREEN 1 DIM Cuadro%(1 TO 200) x1% = 0: x2% = 10: y1% = 0: y2% = 10 LINE (x1%, y1%)-(x2%, y2%), 2, BF GET (x1%, y1%)-(x2%, y2%), Cuadro% DO PUT (x1%, y1%), Cuadro%, XOR x1% = RND * 300 y1% = RND * 180 PUT (x1%, y1%), Cuadro% LOOP WHILE INKEY$ = "" Nota: Vase al final en este mismo Captulo la seccin de matrices para imgenes de pantalla y compatibilidad. TUT.5.4. LINE, instruccin

Traza una lnea o rectngulo en la pantalla. LINE [[STEP](x1!,y1!)]-[STEP](x2!,y2!) [,[color%] [,[B BF] [,estilo%]]] STEP: especifica que las coordenadas estarn situadas con relacin a la posicin actual del cursor de grficos. (x1!,y1!): las coordenadas de pantalla del principio de la lnea. (x2!,y2!): final de la lnea. color%: un atributo de color que establece el color de la lnea o rectngulo. Los atributos de color disponibles dependern del adaptador de grficos y del modo de pantalla establecido mediante la ms reciente instruccin SCREEN. B: traza un rectngulo en lugar de una lnea. BF: traza un cuadro con relleno de color. estilo%: un valor de 16 bits los cuales determinan si se trazan o no los pixeles. Utilizado para trazar lneas de trazos o punteadas. Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. SCREEN 1 LINE (110, 70)-(190, 120), , B LINE (0, 0)-(320, 200), 3, , &HFF00 TUT.5.5. PAINT, instruccin Rellena una rea con el color o el diseo especificado. PAINT [STEP] (x!,y!)[,[{color% [,fondo$]]] diseo$}] [,[colorbordes%]

STEP: especifica que las coordenadas se situen con relacin a la posicin actual del cursor de grficos. (x!,y!): las coordenadas de pantalla donde se iniciar el relleno de color. color%: un atributo de color que establece el color de relleno. diseo$: un diseo de relleno con un ancho de 8 bits y una longitud de hasta 64 bytes, definido as: diseo$ = CHR$(arg1) + CHR$(arg2) + ... + CHR$(argn%) Los argumentos de CHR$ son nmeros entre 0 y 255. Cada CHR$ (argn%) define un sector del diseo basado en la forma binaria del nmero. colorbordes%: un atributo de color que especifica el color de los bordes del rea rellena. PAINT deja de rellenar el rea cuando encuentre un borde del color especificado. fondo$: un sector del diseo de fondo de 1 byte, 8 pixeles. Al especificar un sector del diseo de fondo, se podr rellenar encima de una rea previamente rellenada. Los atributos de color disponibles dependern del adaptador de grficos y del modo de pantalla establecido mediante la ltima instruccin SCREEN. Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color.

SCREEN 1 CIRCLE (106, 100), 75, 1 LINE (138, 35)-(288, 165), 1, B PAINT (160, 100), 2, 1 TUT.5.6. PALETTE y PALETTE USING, instrucciones Cambian las asignaciones de color correspondientes a los atributos de color en el modo de pantalla actual. PALETTE y PALETTE USING funcionan nicamente en sistemas que utilicen adaptadores EGA, VGA o MCGA. PALETTE [atributo%,color&] PALETTE USING matriz#[(ndice%)] atributo%: el atributo de color que ser cambiado. color&: un valor de color que ser asignado a un atributo. matriz#: una matriz de valores de color que ser asignada al juego de atributos del modo de pantalla actual. La matriz debe ser suficientemente grande para asignar colores a todos los atributos. ndice%: el ndice del primer elemento de la matriz que ser asignado a un atributo. Los atributos y valores de color disponibles dependern del adapatador de grficos y del modo de pantalla actual establecido por la ms reciente instruccin SCREEN. Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. PALETTE 0, 1 SCREEN 1 FOR i% = 0 TO 3: a%(i%) = i%: NEXT i% LINE (138, 35)-(288, 165), 3, BF LINE (20, 10)-(160, 100), 2, BF DO FOR i% = 0 TO 3 a%(i%) = (a%(i%) + 1) MOD 16 NEXT i% PALETTE USING a%(0) LOOP WHILE INKEY$ = "" TUT.5.7. PCOPY, instruccin Copia una pgina de memoria de vdeo en otra. PCOPY pginaorigen%,pginadestino% pginaorigen%: el nmero de la pgina de memoria de vdeo que ser copiada. pginadestino%: el nmero de la pgina de memoria de vdeo en la que ser insertada la copia. El valor que identifica la pgina de vdeo es determinado por el tamao de la memoria de vdeo y el modo de pantalla actual. Ejemplo:

PCOPY 1, 3 TUT.5.8. PMAP, funcin Devuelve la coordenada de ventana lgica equivalente a una coordenada de ventana fsica, segn la definicin en la instruccin WINDOW, o viceversa. PMAP (coordenadainicio#, n%) coordenadainicio#: una coordenada de ventana lgica o un marco de visualizacin. n%: un valor indicando la coordenada que ser devuelta como resultado: coordenadainicio# Coordenada Coordenada Coordenada Coordenada Ejemplo: 'Este ejemplo requiere un adaptador de grficos que sea compatible 'con el modo de pantalla 1. SCREEN 1 WINDOW SCREEN (0, 0)-(100, 100) PRINT "X lgica=50, X fsica="; PMAP(50, 0) PRINT "Y lgica=50, Y fsica="; PMAP(50, 1) TUT.5.9. POINT, funcin Devuelve las coordenadas actuales del cursor de grficos o el atributo de color del pixel especificado. POINT {(n%) (x%,y%)} (n%): indica el tipo de coordenadas que ser devuelto como resultado: n% 0 1 Da como resultado La coordenada X fsica actual (marco de visualizacin) La coordenada Y fsica actual (marco de visualizacin) La coordenada X lgica actual La coordenada Y lgica actual X Y X Y lgica lgica fsica fsica n% 0 1 2 3 Da como resulado Coordenada Coordenada Coordenada Coordenada X Y X Y fsica fsica lgica lgica

2 3

(x%,y%): las coordenadas del pixel cuyos colores sern verificados por POINT. Si las coordenadas estn fuera de la ventana actual, POINT regresar como resultado -1. Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. SCREEN 1 LINE (0, 0)-(100, 100), 2 LOCATE 14, 1

FOR y% = 1 TO 10 FOR x% = 1 TO 10 PRINT POINT(x%, y%); NEXT x% PRINT NEXT y% TUT.5.10. PRESET y PSET, instrucciones Trazan el punto especificado en la pantalla. PRESET [STEP] (x!,y!) [,color%] PSET [STEP] (x!,y!) [,color%] STEP: especifica que x! e y! sern expresados con relacin a la posicin actual del cursor de grficos. (x!,y!): las coordenadas de pantalla del pixel que ser establecido. color%: un atributo de color que establece el color del pixel. Si se omite color%, PRESET usar el color de fondo actual y PSET usar el color de primer plano actual. Los atributos de color disponibles dependern del adaptador de grficos y del modo de pantalla. Los valores de las coordenadas dependern del adaptador de grficos, el modo de pantalla y las instrucciones VIEW y WINDOW ms recientes. Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. SCREEN 1 FOR i% = 0 TO 320 PSET (i%, 100) FOR delay% = 1 TO 100: NEXT delay% PRESET (i%, 100) NEXT i% TUT.5.11. SCREEN, instruccin Establece el modo de pantalla y otras caractersticas de la pantalla. SCREEN modo% [,[cambiocolor%] [,[pginactiva%] [,pginavisual%]]] modo%: establece el modo de pantalla. cambiocolor%: un valor (0 1) que cambia entre el modo de colores y el modo monocromtico (modos 0 y 1 solamente): Modo s 1 0 0 1 Valor Cero No cero Cero Efecto Desactiva colore Activa color Activa color Desactiva color

No cero

pginactiva%: la pgina de pantalla en la que se escribe la informacin de salida de texto o grficos.

monitor.

pginavisual%: la pgina de pantalla presentada actualmente en el

Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. SCREEN 1 'grficos 320 x 200 LINE (110, 70)-(190, 120), , B LINE (0, 0)-(320, 200), 3, , &HFF00 Nota: Ver en este mismo Captulo la seccin de modos de pantalla. TUT.5.12. VIEW, instruccin Define el tamao y la posicin de un marco de visualizacin (viewport) en donde se pueden presentar grficos en la pantalla. VIEW [[SCREEN] (x1!,y1!)-(x2!,y2!) [,[color%] [,bordes%]]] SCREEN: especifica que las coordenadas se situen con relacin a la pantalla y no con el marco de visualizacin. (x1!,y1!)-(x2!,y2!): las coordenadas de las esquinas diagonalmente opuestas del marco de visualizacin. color%: un atributo de color que establece el color de relleno del marco de visualizacin. bordes% : un atributo de color que establece el color de los bordes del marco de visualizacin. Si se omiten todos los argumentos, la pantalla completa ser el marco de visualizacin. Los atributos de color disponibles dependern del adaptador de grficos y del modo de pantalla establecido mediante la ms reciente instruccin SCREEN. Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. SCREEN 1 VIEW (10, 10)-(300, 180), , 1 LOCATE 1, 11: PRINT "Un marco de visualizacin de grficos grande"; VIEW SCREEN (80, 80)-(200, 125), , 1 LOCATE 11, 11: PRINT "Un marco de visualizacin de grficos pequeo"; TUT.5.13. WINDOW, instruccin Define las dimensiones lgicas de la ventana de grficos actual. Utilizar la instruccin WINDOW para definir mi propio sistema de coordenadas para el marco de visualizacin. WINDOW [[SCREEN] (x1!,y1!)-(x2!,y2!)] SCREEN: invierte la direccin cartesiana normal de las coordenadas de pantalla de manera que los valores aumentan desde la parte superior de la

pantalla hasta la parte inferior. (x1!,y1!): coordenadas lgicas que corresponden a las coordenadas de pantalla superior izquierda del viewport. (x2!,y2!): coordenadas lgicas que corresponden a las coordenadas de pantalla inferior derecha del marco de visualizacin. WINDOW sin argumentos desactiva el sistema de coordenadas lgicas. Utilicemos la instruccin VIEW si deseamos cambiar el tamao de la ventana. Ejemplo: 'Este ejemplo requiere un adaptador de grficos a color. SCREEN 1 FOR i% = 1 TO 10 STEP 2 WINDOW (-160 / i%, -100 / i%)-(160 / i%, 100 / i%) CIRCLE (0, 0), 10 NEXT i% TUT.5.14. DRAW, instruccin Dibuja un objeto. DRAW cadenacomando$ cadenacomando$: una expresin de cadena que contiene uno o ms de los comandos DRAW: Comandos para trazar lneas y movimientos del cursor: D[n%] derecha erecha zquierda izquierda idades. precedido unto ades. . R[n%] U[n%] E[n%] F[n%] G[n%] H[n%] L[n%] M[{+ -}]x%,y% Mueve el cursor hacia abajo n% unidades. Mueve el cursor hacia arriba y hacia la n% unidades. Mueve el cursor hacia abajo y hacia la d n% unidades. Mueve el cursor hacia abajo y hacia la i n% unidades. Mueve el cursor hacia arriba y hacia la n% unidades. Mueve el cursor hacia la izquierda n% un Mueve el cursor al punto x%,y%. Si x% va de + o -, mover el cursor con relacin al p actual. Mueve el cursor hacia la derecha n% unid Mueve el cursor hacia arriba n% unidades Prefijo optativo que mueve el cu Prefijo optativo que dibuja y de

[B] rsor sin dibujar. [N] vuelve el cursor

a su posicin original. Comandos de color, rotacin y escala: r 0, 1, An% Rota un objeto n% 90 grados (n% puede se 2 3). Establece el color para dibujar

Cn% (n% es un atributo s de un elleno, n2% tableciendo la cursor. TAn% Sn% Pn1%,n2%

de color). Establece los colores de relleno y borde objeto (n1% es el atributo de color de r es el atributo de color de bordes). Determina la escala de dibujo es longitud de una unidad de movimiento del El valor predeterminado para n% es 4, el equivalente de un pixel. Rota un ngulo n% grados (de -360 a +360).

Si se omite n% de los comandos para trazar lneas y mover el cursor, el cursor se mover 1 unidad. Para ejecutar una subcadena del comando DRAW desde una cadena del comando DRAW, utilicemos el comando "X": DRAW "X"+ VARPTR$(cadenacomando$) Ejemplo: 'Este ejemplo requiere un adaptador de grficos en 'color. SCREEN 1 Tringulo$ = "F60 L120 E60" DRAW "C2 X" + VARPTR$(Tringulo$) DRAW "BD30 P1,2 C3 M-30,-30"

TUT.6. Instrucciones y comandos del sistema DOS en BASIC TUT.6.1. CHDIR, MKDIR, RMDIR y FILES, instrucciones CHDIR cambia el directorio predeterminado de una unidad de disco. MKDIR crea un subdirectorio. RMDIR elimina un subdirectorio. FILES muestra el contenido del directorio en uso o del directorio especificado. CHDIR MKDIR RMDIR FILES ruta$ ruta$ ruta$ [archivo$]

ruta$: la ruta de acceso al nuevo directorio predeterminado, al subdirectorio que se va a crear o eliminar. archivo$: un nombre de archivo o ruta de acceso (puede incluir una unidad y comodines de MS-DOS ). Si no se especifica archivo$, FILES presentar todos los archivos que hay en el directorio actual.

Ejemplo: MKDIR "C:\TEMP\TEST" CHDIR "C:\TEMP" FILES RMDIR "TEST" TUT.6.2. KILL, instruccin Elimina archivos del disco. KILL archivo$ archivo$: identifica el archivo o los archivos que sern eliminados. Podemos incluir una ruta de acceso y los comodines DOS. Ejemplo: INPUT "Archivo que ser eliminado: "; f$ KILL f$ TUT.6.3. NAME, instruccin Cambia el nombre de un archivo o directorio. NAME viejo$ AS nuevo$ viejo$ y nuevo$ : el nombre de un archivo existente y el nombre nuevo del archivo. Cada nombre puede incluir una ruta de acceso. Ejemplo: INPUT "Nombre existente: "; ViejoFN$ INPUT "Nombre nuevo: "; NuevoFN$ NAME ViejoFN$ AS NuevoFN$ TUT.6.4. ENVIRON, instruccin y ENVIRON$, funcin ENVIRON cambia o agrega una cadena de ambiente en la tabla de entorno DOS. ENVIRON$ devuelve una cadena de ambiente DOS. ENVIRON$ (variable-ambiente$) ENVIRON$ (n%) ENVIRON expresincadena$ variable-ambiente$: el nombre de una variable de ambiente de MS-DOS . n%: especifica que ENVIRON$ devolver la ensima cadena de la tabla de cadenas de ambiente. expresincadena$: el nombre y valor de una variable de ambiente de DOS (tal como path o prompt) en una de las siguientes formas: variable-ambiente$=cadena-ambiente$ variable-ambiente$ cadena-ambiente$ Los cambios realizados a travs de la instruccin ENVIRON sern

borrados cuando se termine el programa. Ejemplo: ENVIRON "PATH=TEST" PRINT ENVIRON$("PATH") TUT.6.5. DATE$, funcin e instruccin La funcin DATE$devuelve la fecha actual del sistema de la computadora. La instruccin DATE$ define la fecha actual en el sistema de la computadora. DATE$ DATE$ = expresin-cadena$ expresin-cadena$: la fecha, en una de las siguientes formas: ddmm-aa, dd-mm-aaaa, dd/mm/aa, dd/mm/aaaa. La funcin DATE$ devuelve una cadena en la forma mm-dd-aaaa. Ejemplo: PRINT DATE$ DATE$ = "01-01-90" 'Nota: La nueva fecha del sistema 'permanecer vigente hasta que 'usted la vuelva a cambiar. PRINT "Fecha cambiada a "; DATE$ TUT.6.6. TIME$, funcin e instruccin La funcin TIME$ devuelve la hora actual segn el sistema de la computadora. La instruccin TIME$ define la hora actual en el sistema de la computadora. TIME$ TIME$ = expresin-cadena$ expresin-cadena$: la hora, en una de las siguientes formas: hh Define la hora; los minutos y segundos cambian automticamente a 00. hh:mm Define la hora y los minutos; los segundos cambian automticamente a 00. hh:mm:ss Define la hora, los minutos y los segundos.

La funcin TIME$ devuelve una cadena en la forma hh:mm:ss. Ejemplo: PRINT TIME$ TIME$ = "08:00:58" 'Nota: La nueva hora del sistema 'permaner vigente hasta que 'la vuelva a cambiar. PRINT "Hora cambiada a "; TIME$ TUT.7. Instrucciones de Entrada/Salida de archivos TUT.7.1. CLOSE, instruccin

Cierra uno o ms archivos o dispositivos abiertos. CLOSE [[#]numarchivo%[,[#]numarchivo%]...] numarchivo%: el nmero de un archivo o dispositivo abierto. CLOSE sin argumentos cerrar todos los archivos y dispositivos abiertos. Ejemplo: CLS INPUT "Escriba el nombre del archivo: ", n$ OPEN n$ FOR OUTPUT AS #1 PRINT #1, "Esto se guarda en el archivo." CLOSE OPEN n$ FOR INPUT AS #1 INPUT #1, a$ PRINT "Leer el archivo: "; a$ CLOSE TUT.7.2. EOF, funcin Verifica si se ha llegado al final de un archivo. EOF da como resultado verdadero (no cero) si se ha llegado al final de un archivo. EOF(numarchivo%) numarchivo%: el nmero de un archivo abierto. Ejemplo: CLS OPEN "[Link]" FOR OUTPUT AS #1 FOR i% = 1 TO 10 WRITE #1, i%, 2 * i%, 5 * i% NEXT i% CLOSE #1 OPEN "[Link]" FOR INPUT AS #1 DO LINE INPUT #1, a$ PRINT a$ LOOP UNTIL (EOF(1)) TUT.7.3. FILEATTR, funcin Devuelve informacin acerca de un archivo abierto. FILEATTR(numarchivo%,atributo%) numarchivo%: el nmero de un archivo abierto. atributo%: especifica el tipo de informacin que dar. Si abributo% es 1, FILEATTR devolver un valor que indica el modo de acceso del archivo: Valor 1 2 4 Modo Entrada Salida Aleatorio

32 de DOS.

Anexado

Binario

Si atributo% es 2, FILEATTR devolver los identificadores de archivos Ejemplo: OPEN "[Link]" FOR BINARY AS #1 PRINT FILEATTR(1, 1) CLOSE

TUT.7.4. FREEFILE, funcin Devuelve el siguiente nmero de archivo vlido que est disponible. FREEFILE Ejemplo: OPEN "[Link]" FOR OUTPUT AS #1 PRINT "Siguiente nmero de archivo: "; FREEFILE CLOSE TUT.7.5. GET (Archivos) y PUT (Archivos), instrucciones GET lee informacin de un archivo colocndola en un buffer de acceso aleatorio o en una variable. PUT escribe una variable o un buffer de ac ceso aleatorio en un archivo. GET [#]numarchivo%[,[numregistro&][,variable]] PUT [#]numarchivo%[,[numregistro&][,variable]] numarchivo%: el nmero de un archivo abierto. numregistro&: para archivos de acceso aleatorio, es el nmero del registro que ser ledo o escrito. Para archivos binarios la posicin de byte donde se inicia el proceso de leer o escribir. variable: para GET, es una variable utilizada para recibir informacin del archivo. Para PUT, una variable que contiene la informacin de salida que ser escrita en el archivo. variable, generalmente, tiene el tipo de datos definido por el usuario. Ejemplo: TYPE RegistroPrueba Alumno AS STRING * 20 Nota AS SINGLE END TYPE DIM MiClase AS RegistroPrueba OPEN "[Link]" FOR RANDOM AS #1 LEN = LEN(MiClase) [Link] = "SabineCse" [Link] = 99 PUT #1, 1, MiClase CLOSE #1 OPEN "[Link]" FOR RANDOM AS #1 LEN = LEN(MiClase) GET #1, 1, MiClase PRINT "ESTUDIANTE:", [Link]

PRINT "NOTA:", [Link] CLOSE #1 KILL "[Link]" TUT.7.6. INPUT$, funcin Devuelve una cadena de caracteres leda desde el archivo especificado. INPUT$(n[,[#]numarchivo%]) n: el nmero de caracteres (bytes) que sern ledos. numarchivo%: el nmero de un archivo abierto. Si numarchivo% se omite, INPUT$ leer desde el teclado. Ejemplo: OPEN "[Link]" FOR OUTPUT AS #1 PRINT #1, "El texto" CLOSE OPEN "[Link]" FOR INPUT AS #1 PRINT INPUT$(3,1) 'Imprime los 3 primeros caracteres. CLOSE TUT.7.7. LOC, funcin Devuelve la posicin actual dentro de un archivo. LOC(numarchivo%) numarchivo%: el nmero de un archivo o dispositivo abierto. Para archivos binarios, LOC devuelve la posicin del ltimo byte ledo o escrito; para archivos de acceso aleatorio, LOC devuelve el nmero del ltimo registro ledo o escrito en el archivo; para archivos secuenciales, LOC devuelve la posicin actual del byte en el archivo, dividido por 128. Ejemplo: OPEN "[Link]" FOR RANDOM AS #1 FOR i% = 1 TO 10 PUT #1, , i% NEXT i% SEEK #1, 2 GET #1, , i% PRINT "Datos: "; i%; " Registro actual: "; LOC(1); " Siguiente: "; SEEK(1) TUT.7.8. LOCK y UNLOCK, instrucciones LOCK limita o impide el acceso a un archivo mediante un proceso de red. UNLOCK cancela las limitaciones impuestas por la ltima instruccin LOCK. LOCK [#]numarchivo% [,{registro& [inicio&] TO fin&}] UNLOCK [#]numarchivo% [,{registro& [inicio&] TO fin&}] numarchivo%: el nmero de un archivo abierto. registro&: para archivos de acceso aleatorio, el nmero del registro

que ser bloqueado, con relacin al primer registro del archivo. Para archivos binarios, el nmero del byte que ser bloqueado, con relacin al primer byte del archivo. inicio& y fin&: los nmeros del primer y ltimo registro o byte en una serie de registros o bytes que sern bloqueados o desbloqueados. Para archivos secuenciales, LOCK y UNLOCK afectan a todo el archivo. Ejemplo: 'Este ejemplo slo funcionar en una red. OPEN "[Link]" FOR RANDOM AS #1 FOR i% = 1 TO 10 PUT #1, , i% NEXT i% LOCK #1, 2 'Bloquear registro 2. GET #1, 2, i% UNLOCK #1, 2 'Desbloquear registro 2. TUT.7.9. LOF, funcin Devuelve la longitud de un archivo en bytes. LOF(numarchivo%) numarchivo%: el nmero de un archivo abierto. Ejemplo: INPUT "Escriba el nombre del archivo: "; f$ OPEN f$ FOR BINARY AS #1 PRINT "Longitud del archivo = "; LOF(1) CLOSE TUT.7.10. OPEN, instruccin Abre un archivo o dispositivo. OPEN archivo$ [FOR modo] [ACCESS acceso] [bloqueo] AS [#]numarch% [LEN=longreg% archivo$: el nombre del archivo o dispositivo. El nombre puede incluir una unidad de disco y ruta de acceso. modo: uno de los siguientes modos de archivo: APPEND, BINARY INPUT, OUTPUT o RANDOM. (Vase OPEN COM para la aclaracin de cada uno de ellos). acceso: en una red, especifica si el archivo ser abierto con el tipo de acceso READ, WRITE o READ WRITE: Tipo de acceso READ WRITE READ WRITE Accin Abre un archivo para lectura solamente. Abre un archivo para escritura solamente. Abre un archivo para lectura y escritura.

El modo READ WRITE es vlido slo para archivos que tengan el modo binario o de acceso aleatorio, y para archivos abiertos con el modo APPEND (acceso secuencial).

bloqueo: especifica el estado de bloqueo de archivos en una red: SHARED, LOCK READ, LOCK WRITE, LOCK READ WRITE. numarch%: un nmero entre 1 y 255 que identifica el archivo mientras est abierto. longreg%: para archivos de acceso aleatorio, la longitud de registro (el valor predeterminado es 128 bytes). Para archivos secuenciales, el nmero de caracteres en buffer (el valor predeterminado es 512 bytes). Ejemplo: INPUT "Escriba el nombre del archivo: "; n$ OPEN n$ FOR OUTPUT AS #1 PRINT #1, "Esto se guarda en el archivo." CLOSE OPEN n$ FOR INPUT AS #1 INPUT #1, a$ PRINT "Leer del archivo: "; a$ CLOSE TUT.7.11. SEEK, funcin y SEEK, instruccin La funcin SEEK devuelve la posicin actual del archivo. La instruccin SEEK establece la posicin del archivo para la siguiente accin de leer o escribir. SEEK(numarchivo%) SEEK [#]numarchivo%, posicin& numarchivo%: el nmero de un archivo abierto. posicin&: la posicin donde ocurrir la siguiente accin de leer o escribir. Para archivos de acceso aleatorio, un nmero de registro. Para otros archivos, la posicin de byte con relacin al principio del archivo. El primer byte ocupa la posicin 1. Ejemplo: OPEN "[Link]" FOR RANDOM AS #1 FOR i% = 1 TO 10 PUT #1, , i% NEXT i% SEEK #1, 2 GET #1, , i% PRINT "Datos: "; i%; " Registro actual: "; LOC(1); " Siguiente: "; SEEK(1) TUT.7.12. WRITE, instruccin Escribe datos en la pantalla o en un archivo secuencial. WRITE [[#]numarchivo%,] listaexpresiones numarchivo%: el nmero de un archivo secuencial abierto. Si se omite el nmero de archivo, WRITE escribir en la pantalla. listaexpresiones: una o ms variables o expresiones, separadas con comas, cuyos valores sern escritos en la pantalla o en un archivo. WRITE inserta comas entre los datos y comillas alrededor de cadenas mientras los escribimos.

WRITE escribe valores en un archivo en una forma que puede ser leda por la instruccin INPUT. Ejemplo: CLS OPEN "LISTA" FOR OUTPUT AS #1 DO INPUT " NOMBRE: ", Nombre$ INPUT " EDAD: ", Edad$ WRITE #1, Nombre$, Edad$ INPUT "Agregue otros datos"; R$ LOOP WHILE UCASE$(R$) = "Y" CLOSE #1 'Imprime el archivo en la pantalla. OPEN "LISTA" FOR INPUT AS #1 CLS PRINT "Datos en archivo:": PRINT DO WHILE NOT EOF(1) INPUT #1, Reg1$, Reg2$ 'Lee datos del archivo. PRINT Reg1$, Reg2$ 'Imprime los datos en la pantalla. LOOP CLOSE #1 KILL "LISTA" TUT.7.13. FIELD, instruccin Asigna espacio para variables en un buffer de archivo de acceso aleatorio. FIELD [#]numarchivo%, anchocampo% AS variablecadena$ [,anchocampo% AS variablecadena$] ... numarchivo%: el nmero de un archivo abierto. anchocampo%: el nmero de caracteres en el campo. variablecadena$: una variable que identifica el campo y contiene datos para el campo. Las variables de registro generalmente constituyen una mejor manera de manejar los datos de registros. Ejemplo: OPEN "[Link]" FOR RANDOM AS #1 LEN = 80 FIELD #1, 30 AS nombre$, 50 AS direccin$

1 1

También podría gustarte