При выводе информации с помощью оператора PRINT пользователь лишен возможности, изменять стандартную форму выводных данных. В ряде случаев такой порядок может не удовлетворять пользователя. В BASIC имеется специальный оператор PRINT USING, организующий вывод значений числовых и строковых переменных по специальным формам. Общая форма оператора имеет вид
PRINT USING «формат», список.
Параметр «формат» состоит из специальных символов форматирования и показывает, как следует вывести на печать список, который формируется точно так же как и в операторе PRINT, Старые соглашения, принятые для оператора PRINT по использованию разделительной запятой, в операторе PRINT USING не действует.
При выводе числовых значений обычно используется следующие числовые формы:
# - вывод одного разряда выводимого значения;
- вывод заданной позиции десятичной точки.
Например, выполнение операторов:
PRINT USING ” ##. ###”, 75.634
PRINT USING “###”, 520
Приведет к появлению на экране дисплея строк
75.634
Если количество позиций, указанное для дробной части, недостаточно, то число округляется. Для отрицательных чисел необходимо предусмотреть место под знак числа. Например, операторы
PRINT USING “##. ##”, 56.746
PRINT USING “###. ##”, -25.34
Вводят на терминал значения
56.75
PRINT USING "##: ##", 56.746
PRINT USING "###: ##", -25.34
выводят на терминал значения
56.75
-25.34
Если выводимые данные не помещаются в заданное форматом поле, то для обозначения ошибки перед числом печатается знак %, а затем - выводимое значение без соблюдения формата. Кроме того, если при округлении для числа потребуется больше позиций, чем отведено, то перед округлённым числом также будет выведен знак %. Например, при выполнении операторов
PRINT USING "##. ## ",126.94
PRINT USING "#. ##", 9.9999
будет напечатано
%126.94
%10
Шаблон, задаваемый в операторе PRINT USING, может содержать любые символы, которые при использовании этого шаблона будут выводиться в том виде, как они записаны. Например, выполнение операторов:
S=457.82
PRINT USING "Сумма равна ###. ##";S приведёт к появлению на экране строки
Сумма равна 457.82
Если в операторе PRINT USING содержится больше выводимых значений, чем указано форматов, то форматы будут повторяться, пока список не будет исчерпан. При этом каждое новое повторение форматной строки вызывает печать элементов списка с новой строки. Например
А=438.4
Х=15.76: У=120.496
X1=X-10: YI=Y-100
PRINT USING "##. ##", 25.73,A
PRINT USING "X=##. ## Y="###. ##”, X, Y, X1, Y1
Сообщение, выводимое на терминал:
25.73
%438.4
X=15.76 Y=120.50
X=5.76 Y=20.50
Для вывода вещественных: чисел с порядком используется формат “##. ##^^^^”.Здесь четыре стрелки отводят место под букву Е, знак показателя степени и две позиции под показатель степени. Положение десятичной точки среди знаков может быть любым. Например,
PRINT USING “##. ##^^^^”; 1875
PRINT USING “#. ###^^^^”; 1875
PRINT USING “##. #^^^^”;-0. 256
Ввод на терминал
18.75Е 02
1.875Е 03
-2.6Е-01
В мантиссе числа выводятся максимально возможное количество значащих цифр, а порядок подстраивается соответственно мантиссе.
'С помощью оператора PRINT USING можно вводить строку целиком, либо заданное число символов строки, отсчитываемое слева. Строковые форматы имеют вид:
! - означает вывод одного символа;
\\ - вывод фиксированного количества символов:
двух или более в зависимости от числа пробелов, стоящих между двумя косыми;
& - вывод строки целиком.
Например, если A$="PROGRAM", то с помощью следующих операторов:
PRINT USING "!";A$
PRINT USING "\\";A$
PRINT USING "\ \";A$
PRINT USING "&"; A&
Будет выведено:
P
PR
PROG
PROGRAM
Для вывода информации на принтер необходимо заменить в программе операторы PRINT и PRINT USING на LPRINT и LPRINT USING.
Упражнения
1) Записать оператор PRINT для печати константы 66.28 и значение функции Y=2Xtgx без использования зонного формата.
2) Сколько строк будет выведено на печать при выполнении операторов
CLS
PRINT”Длины сторон”
PRINT A, В,С
PRINT “площадь =”;
PRINT S
3) как будет выглядеть на экране дисплея выводимая информация после выполнения фрагмента программы
INPUT A, X
?0.21, -3.6
PRINT USING "##.#”, A+X
4) Указать результат выполнения следующих операторов
‘Вычисление площади треугольника
READ A,B,C
DATA 300., 400., 500.
P=(A+B+C)/2
S=SQR (P*(P-A)*(P-B)*(P-C))
PRINT USING "S=#. #^^^^”, S
5) Сколько символов строки X$=”DIMENSION” будет выведено на печать согласно оператору
PRINT USING “\ \”,X$