Entrada y salida de datos

 

 

Introducción: funciones para E/S de datos

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:

Volver al principio de página

 

PRINT: Salida por pantalla

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.

Volver al principio de página

INPUT: lectura del teclado

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

Volver al principio de página

 

PRINT USING

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

Volver al principio de página

 

LINE INPUT

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 ...

Volver al principio de página

 

Posicionado del cursor y borrado de pantalla

 

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

Volver al principio de página

volver a Inicio