|
Unas de las principales vías de comunicación de un programa con el usuario son la pantalla (terminal) y el teclado. La entrada y salida de datos por estos medios se pueden realizar mediante varias instrucciones de QBasic. Las fundamentales son:
y algunas más avanzadas:
Otras que permiten el control de la salida por pantalla son:
Comenzaremos con la instrucción principales de salida de datos: PRINT.
La función PRINT escribe texto y/o números en la pantalla (aunque también en un archivo). Su uso en sencillo, sólo hay que añadir detrás de la palabra clave la lista de datos que se desea visualizar. Por ejemplo:
' Muestra un mensaje PRINT "Hola" PRINT "mundo" END |
El resultado es:
Hola mundo |
Nótese que PRINT imprime un salto de línea tras el texto. Se puede inhibir el salto automático de línea si se añade ; tras el texto:
' Muestra un mensaje PRINT "Hola"; PRINT "mundo" END |
cuyo resultado es:
Hola mundo |
Un ejemplo de uso con valores numéricos y de texto es:
' Muestra valores numéricos a% = 50 b% = 100 PRINT "El valor de a es"; a%; " y el valor de b es"; b% END |
cuyo resultado es:
El valor de a es 50 y el valor de b es 100 |
Nótese que al concatenar el texto con los números mediante ; se añade automáticamente un espacio en blanco antes de cada valor numérico.
Si en lugar de utilizar ; se utiliza , para la concatenación:
' Muestra valores numéricos a% = 50 b% = 100 PRINT "El valor de a es", a%; " y el valor de b es", b% END |
el resultado es:
El valor de a es 50 y el valor de b es 100 |
es decir, produce una separación de 14 espacios.
Algo muy usual en un programa es esperar que el usuario introduzca datos por el teclado. Para ello contamos con la instrucción INPUT. Un ejemplo:
' Lee un número entero desde el teclado DIM num% PRINT "Introduce un número"; INPUT num% PRINT "Has tecleado el número"; num% END |
Este programa muestra el mensaje Introduce un número? (nótese la interrogación añadida) y espera a que el usuario introduzca un entero. Si el usuario escribe 23 y pulsa INTRO lo que se observa es:
Introduce un número? 23 Has tecleado el número 23 |
Podemos preguntar por más de una variable a la vez en un solo INPUT:
' Lee varios enteros desde el teclado DIM a%, b%, c% PRINT "Introduce tres números"; INPUT a%, b%, c% PRINT "Has tecleado los números"; a%; b%; c% END |
De esta forma, cuando el usuario ejecuta el programa debe introducir los tres datos separados por una coma y finalizar con un retorno de carro.
Introduce tres números? 1,2,3 Has tecleado los números 1 2 3 |
Es muy común escribir un mensaje con PRINT antes de realizar un INPUT, como en los dos ejemplos anteriores. Pero INPUT facilita la labor si se utiliza así:
' Lee un entero desde el teclado DIM num% INPUT "Introduce un número: ", num% PRINT "Has tecleado el número"; num% END |
que produce la salida:
Introduce un número: 23 Has tecleado el número 23 |
La utilización de INPUT para introducción de cadenas de texto es similar:
' Lee una cadena de caracteres desde el teclado DIM palabra AS STRING INPUT "Escribe una palabra: ", palabra PRINT "He guardado: "; palabra END |
cuyo resultado es, si se escribe el texto y se pulsa INTRO:
Escribe una palabra: Tecnología He guardado: Tecnología |
Se puede limitar el tamaño de la cadena que se almacena si se especifica la longitud máxima de dicha cadena en la instrucción DIM:
DIM palabra AS STRING*5 ' Define palabra como una cadena de texto ' de una longitud máxima de 6 caracteres ... ... |
en este caso el resultado es:
Escribe una palabra: Tecnología He guardado: Tecno |
Esta instrucción es similar a PRINT pero es capaz de dar un formato especificado de salida a los datos. La sintaxis de uso es:
PRINT USING formato; lista_de_expresiones
donde formato es una cadena de texto que contiene distintos especificadores que aplican formato a la lista_de_expresiones. Esta lista no es más que un conjunto de expresiones numéricas o de texto concatenadas con ; o ,.
Los especificadores que se pueden utilizar en formato son:
Caracteres que dan formato a una expresión numérica |
# Posición de dígito. ¦ - Después del dígito, imprime . Posición de punto decimal. ¦ el signo para los números , A la izquierda del punto decimal, ¦ negativos. imprime una coma cada 3 dígitos. ¦ $$ Imprime $ adelante. + Posición del signo de número. ¦ ** Llena espacios adelante con * ^^^^ Imprime con formato exponencial. ¦ **$ Combina ** y $$. |
Caracteres que dan formato a una expresión de texto |
& Imprime la cadena completa. ¦ \ \ Imprime los primeros n ! Imprime sólo el primer carácter ¦ caracteres, donde n es el de la cadena. ¦ número de espacios entre |
Caracteres utilizados para imprimir caracteres literales |
_ Imprime el carácter de formato ¦ Cualquier carácter que no siguiente como literal. ¦ esté en la tabla será ¦ impreso como literal. |
Veamos un ejemplo en el que se da formato a expresiones numéricas y de texto:
' Calcula el importe total de un conjunto de productos INPUT "Introduzca el nombre del producto: ", nombreitem$ INPUT "¿Cuántos elementos?: ", numitems% INPUT "¿Cuál es el importe unitario?: ", importeitem! importetotal! = numitems% * importeitem! PRINT PRINT "Producto Cantidad Importe Importe Total" PRINT "-------- -------- --------- -------------" PRINT USING "\ \ ##,### ###,###.## #,###,###.##"; nombreitem$; numitems%; importeitem!; importetotal! END |
Este programa produce el resultado:
Introduzca el nombre del producto: relé ¿Cuántos elementos?: 30 ¿Cuál es el importe unitario?: 1.5 Producto Cantidad Importe Importe Total -------- -------- --------- ------------- relé 30 1.50 45.00 |
Esta instrucción es sumamente similar a INPUT, si bien almacena en una sola variable toda la entrada proporcionada desde teclado hasta encontrar un retorno de carro y no considera las comas (,) separadores de variables (como sucedía con INPUT).
Por ejemplo:
' Lee una cadena de caracteres desde el teclado DIM frase AS STRING LINE INPUT "Escribe una frase: ", frase PRINT "He guardado: "; frase END |
Si al ejecutar este programa se introduce la primera oración del Quijote se obtiene:
Introduce una frase: En un lugar de la Mancha, de cuyo nombre ... He guardado: En un lugar de la Mancha, de cuyo nombre ... |
![]() |
LOCATE: posicionado del cursor |
Hemos visto que cuando usamos PRINT se escribe en la posición actual del cursor y se mueve éste al final de la cadena que hemos escrito. Pero ¿qué sucede cuando queremos escribir en una posición determinada de la pantalla?. La solución está en la función LOCATE. Supongamos que queremos escribir 'Hola' en la fila 20, columna 10 de la pantalla:
' Muestra Hola en la fila 20, columna 10 LOCATE 20, 10 PRINT "Hola" END |
Obsérvese que primero se indica la fila (y) y luego la columna (x). La esquina superior izquierda es la posición (1, 1).
![]() |
CLS |
Ahora ya sólo resta saber cómo se limpia la pantalla. Ello es tan fácil como usar:
CLS
(clear screen, borrar pantalla).
Esta función no sólo borra la pantalla, sino que sitúa el cursor en la posición (1, 1), en la esquina superior izquierda.
' Borra pantalla y muestra mensaje CLS PRINT "Hola" END |