AnteriorPosterior

12. Escribir con formato: PRINT USING

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

 

BASIC

12. Escribir con formato: PRINT USING

Hemos visto que podemos escribir un texto en pantalla si lo indicamos entre comillas en una orden PRINT:

PRINT "Bienvenido"

y mostrar el valor de una variable si no usamos comillas:

PRINT nombre$

También sabemos que podemos escribir varias cosas en la misma línea, si incluimos un punto y coma entre dos PRINT (y entonces aparecerán juntas) o si usamos una coma (y entonces aparecen separadas por un cierto número de espacios).

10 PRINT "Bienvenido " ; nombre$ , "Pulsa una tecla para seguir" 

(Fuente "1201.bas". Probado en GwBasic 2.02, Locomotive Basic de Amstrad CPC)

Pero también podemos indicar que el cursor salte hasta una cierta posición de la línea, usando TAB, o decir cuántos espacios queremos que separen una frase de la otra, usando SPC, así:

10 nombre$="tu" 
20 PRINT "Bienvenido" ; TAB(30); nombre$ ; 
30 PRINT SPC(10) ; "Pulsa una tecla para seguir"

(Fuente "1202.bas". Probado en GwBasic 2.02, Locomotive Basic de Amstrad CPC, Commodore 64 Basic V2, Msx Basic 2.1)

En la mayoría de versiones de BASIC , estas dos órdenes escribirían la palabra Bienvenido, luego saltarían hasta la columna 30, escribirían el valor de la variable Nombre$, dejarían 10 espacios en blanco y mostrarían el texto final.

Nota: Hay alguna versión de BASIC en la que no existe SPC, y alguna en la que TAB(20) no salta hasta la columna 20, sino que deja 20 espacios en blanco a partir de la posición actual.

Hay otra posibilidad de PRINT que no hemos visto, y que puede ser muy interesante para cuando queramos dar formato a una gran cantidad de números. Se trata de PRINT USING, que nos permite indicar la cantidad de cifras total, la de decimales, si queremos punto en los miles, etc- Vamos a verlo directamente con un ejemplo

a = 100 
b = 1234.56

PRINT USING "#####.###"; a; b 
PRINT USING "#####,.###"; a; b 
PRINT USING "#####,"; a; b 
PRINT USING "##"; a; b 
PRINT USING "+#####.#"; a; b 
PRINT USING "**#######.#"; a; b 

(Fuente "1203.bas". Probado en GwBasic 2.02, Locomotive Basic de Amstrad CPC)

Da como salida

100.000 1234.560  
100.000 1,234.560  
100 1,235  
%100%1235  
+100.0 +1234.6  
******100.0*****1234.6  

Debería ser fácil de entender, pero vamos a resumir:

  • Cada # indica la posición de una cifra numérica. Por ejemplo, #### dejaría 4 espacios para números.
  • Con un punto (.) se indica cuantas posiciones decimales queremos. Por ejemplo, ###.## deja tres espacios antes de la coma y dos posiciones decimales (eso sí, la "coma decimal" aparece como un punto; si estamos en España o en algún otro país que use la coma para los decimales, el resultado no será del todo correcto.
  • Una coma (,) a la izquierda del punto decimal indica que también queremos separar los miles (nuevamente, el resultado no será lo que desearíamos en España, porque se separarían con comas, y nosotros usamos puntos).
  • Si no hay suficiente hueco para todas las cifras del número, se escribe el número entero, pero se precede por el símbolo % para avisarnos de que no está todo lo colocado que debería, como en el caso de "##"; 100
  • Si comenzamos con "+", obligamos a que se muestre el signo, tanto si es positivo (que no sería estrictamente necesario) como si es negativo.
  • Si empezamos por **, los espacios en blanco que queden a la izquierda se rellenan con asteriscos.
  • (Hay más posibilidades, pero nos vamos a quedar en las más habituales, que son éstas).

Nota: No todas las versiones de BASIC reconocen PRINT USING. No estará en las versiones más antiguas (C64, MSX), pero tampoco existe en Basic256, por ejemplo.

Ejercicio propuesto 12.1: Pide al usuario 5 datos del 1 al 1000 (quizá con cifras decimales) y muéstralos perfectamente tabulados en pantalla, con dos cifras decimales, de forma que todas las "comas" queden alineadas en una misma vertical.

5260 visitas desde el 19-04-2019

AnteriorPosterior