Информатика
Глава 10. Описание языка Basic назад оглавление вперед

10.5. Операторы ввода/вывода

Операторы ввода служат для задания исходных данных при выполнении программы. Операторы вывода позволяют получить результаты выполнения программы.

Ввод в Basic осуществляется одним из двух способов: использованием оператора INPUT или пары операторов READ, DATA.

10.5.1. Операторы READ и DATA

Эти операторы в программе всегда присутствуют одновременно.

Формат оператора READ имеет вид

READ v1 [ , v2, …]

где v1, v2, . . . — вводимые переменные (квадратные скобки обозначают необязательные параметры).

Формат оператора DАТА имеет вид

DАТА а1 [ , а2 , ...]

где a1,a2, . . . — константы.

Оператор DAТА содержит данные, которые при выполнении операторов RЕАD будут вводиться в переменные, перечисленные в списке ввода операторов RЕАD. Данные, подлежащие вводу, могут располагаться в одном операторе DАТА или в нескольких операторах DАТА, но в том порядке, в котором эти данные должны использоваться оператором (или операторами) RЕАD. Операторы DАТА могут располагаться в любом месте программы. В строке, содержащей оператор DАТА, не допускается использование других операторов.

Перед выполнением программы все данные, содержащиеся в операторах DАТА, помещаются в специальную область памяти (область DАТА). Порядок расположения данных в области DАТА соответствует порядку следования различных операторов DАТА в программе, а для каждого оператора DАТА — порядку данных в этом операторе. Например, при наличии в одной программе следующих операторов:

DАТА 10.6

DАТА 0.1,15,1.2

DАТА 5.1

данные в области DАТА будут расположены в такой последовательности: 10.6, 0.1, 15, 1.2, 5.1.

При выполнении операторов READ данные из области DATA по очереди пересылаются в переменные, перечисленные в списке ввода операторов READ. Например, если в программе, содержащей приведенные выше операторы DАТА, имеются также операторы

READ A, B, C

READ D

то после их выполнения переменные А, В, С, D будут иметь значения

А=10.6, В=0.1,С=15, D=1.2.

Если данных не хватает, то выводится сообщение об ошибке.

10.5.2. Оператор RESTORE

Данные из области DАТА можно считывать повторно, используя оператор RESTORE. Формат оператора

RESTORE [арифметическое выражение]

Значение целой части арифметического выражения определяет номер данного, с которого начнется повторное считывание. Если арифметическое выражение отсутствует, осуществляется возврат к началу списка. Например, после выполнения группы операторов

READ A, B, C, D
DATA 10.6,0.1,15,1.2
RESTORE
READ E,F

будет А=10.6, В=0.1, С==15, D=1.2, Е=10.6, F=0.1.

10.5.3. Оператор INPUT

При использовании оператора INPUT данные вводятся с клавиатуры во время выполнения программы. Формат оператора

INPUT [“строка”;] v1 [ , v2, ...]

где

v1,v2, . . . - переменные;

строка - строковая константа, которая выводится на экран, перед тем как пользователь начнет ввод данных. Этот элемент является необязательным.

При выполнении этого оператора ЭВМ делает паузу, на экране высвечивается текст строки и “?” и ЭВМ ждет ввода данных. На клавиатуре дисплея необходимо набрать числа, подлежащие вводу, в порядке, задаваемом списком ввода. Если чисел несколько, то они отделяются друг от друга запятыми. После этого нажатием клавиши ENTER эти числа вводятся в ячейки памяти, выделенные для переменных, указанных в списке. Если данные не уместились в одной строке или их недостаточно, то на экране опять появляется “?” и система ждет ввода остальных чисел. После ввода значений всех переменных, перечисленных в списке, выполнение программы продолжается.

Пример 10.9

INPUT A, B, C, D

? 10.6,0.1,15
? 1.2

Пример 10.10

INPUT “Введите A и B”;A, B

Введите A и B? 10.6, 0.1, 15

Использование операторов READ, DATA целесообразно во время отладки программы, когда программа многократно выполняется с одними и теми же данными, вводимыми в этом случае один раз при вводе программы. Когда же отлаженная программа многократно выполняется с различными наборами данных, целесообразно использовать оператор INPUT. Использование операторов READ, DATA в этом случае требовало бы перед каждым выполнением программы с новыми данными замены операторов DATA, т. е. изменения текста программы.

10.5.4. Оператор PRINT

Оператор PRINT используется для вывода на экран монитора или на принтер результатов вычислений. Формат оператора

PRINT список

Список вывода может содержать имена переменных, числа, арифметические выражения и тексты. Если список отсутствует, то при выполнении оператора PRINT просто осуществляется перевод строки. Тексты используются для печати всевозможных заголовков и пояснений. Текст заключается в кавычки или в апострофы и может содержать любые символы Basic. Если в списке вывода содержатся арифметические выражения, то они сначала вычисляются, а затем выводятся вычисленные значения.

Для удобства восприятия выводимых результатов экран условно разделен на 5 зон, по 14 позиций каждая, и вывод каждого следующего данного осуществляется в следующую зону. Такая форма вывода обеспечивается использованием “,” (запятой) в качестве разделителя в списке вывода.

Например, при выполнении оператора

PRINT “АРГУМЕНТ” , X , “ФУНКЦИЯ” , X^2

при Х=2 будет выведено

АРГУМЕНТ

2

ФУНКЦИЯ

4

Появление запятой всегда приводит к переходу к следующей зоне. Поэтому употребление двух запятых подряд или запятой в начале списка приводит к пропуску одной зоны. Например, при выполнении оператора

PRINT ,”АРГУМЕНТ”, X

вывод начинается с 15-й позиции, т.е. при Х=2 будет напечатано

АРГУМЕНТ 2

Такой способ вывода с использованием в качестве разделителя запятой называется выводом в зонном формате.

После последнего элемента списка также может употребляться запятая. В этом случае при выполнении следующего оператора PRINT вывод элементов его списка будет осуществляться в следующей зоне (без перевода строки). Например, при выполнении операторов

PRINT A, B,

PRINT P

при А=10.1, В=6.8, Р=190 будет выведено в одну строку

            10.1     6.8     190

Отсутствие запятой после последнего элемента в списке приводит к переводу строки, так что следующий оператор PRINT начинает вывод с новой строки. Например, при выполнении операторов

PRINT A, B

PRINT P

при тех же значениях А, В, Р будет выведено

      10.1         6.8
      190

Если в качестве разделителя используется “;”, то вывод осуществляется в так называемом плотном формате, т. е. каждое следующее данное выводится после предыдущего через пробел. Например, оператор

PRINT A; B; P

приводит к следующей печати :

      10.1     6.8     190

Такой способ вывода рекомендуется для более компактного вывода, когда выводится много данных, содержащих небольшое число значащих цифр.

Замечание

Результаты вычислений выводятся как десятичные числа (в основной форме), если они находятся в диапазоне от 0.01 до 999999. В противном случае числа выводятся в форме с порядком. При этом в стандартной форме вывода число перед порядком содержит обязательно один разряд (ненулевой) перед точкой и пять цифр в качестве дробной части. Под знак числа (кроме числа 0) предусматривается одна позиция, знак + не выводится. Например, при выполнении операторов

A= 0.01: B=9.90000E-03 : C=1.00000E+06

PRINT A, B, C

на экран будет выведено

0.01 9.90000 E-03 1.00000 E 06

10.5.5. Оператор PRINT USING

Дает возможность задать точный образ вывода отдельных элементов списка.

Оператор PRINT USING имеет формат

PRINT USING "строка"; список

где строка содержит один или более символов форматирования.

При выводе числовых значений предусматривается символ # для каждой выводимой цифры, а также знака числа. Если предполагается вывод с порядком, то для порядка предусматриваются символы ^^^^. Все остальные символы, включая пробелы, обозначают сами себя и выводятся без изменений. Для вывода числа, содержащего дробную часть, в формате задается столько символов #, сколько всего цифр требуется вывести, и точка для отделения цифр целой части от дробной. То есть использование формата позволяет отсечь при печати ненужные цифры. Результат при этом округляется.

Примеры

PRINT USING “#.## ##.#”; 5.629, -1.1
5.63 –1.1

PRINT USING “X=#.# F=####”; .151, 366.3
X=0.2 F= 366

Если в формате задан только один образ, то он может использоваться многократно для каждого элемента в списке вывода.

Пример

PRINT USING “##.##”; 10.1, -4.828

10.10   -4.83

Использование оператора PRINT USING при выводе массивов позволяет выводить массивы в удобной для восприятия форме, что иллюстрирует программа 10.10.

Программа 10.10

DIM F2 (4,4)
P= .5
FOR I=1 TO4
       FOR J=1 TO 4
          P=P+1
          F2 (I, J)=P
          PRINT USING ‘‘###.##”; F2 (I, J);
       NEXT J
       PRINT
NEXT I
END

1.50

2.50

3.50

4.50

5.50

6.50

7.50

8.50

9.50

10.50

11.50

12.50

13.50

14.50

15.50

16.50

Оператор PRINT в девятой строке осуществляет только возврат каретки перед выводом новой строки.

Таким образом, оператор PRINT USING может обеспечить вывод результатов в любом желаемом формате.

10.5.6. Использование функции ТАВ в операторе PRINT

Функция ТАВ может использоваться как один из элементов в списке вывода оператора PRINT. Она вызывает вывод следующего за ней элемента, начиная с позиции, номер которой задан как аргумент функции ТАВ. Общий вид функции

ТАВ (арифметическое_выражение)

Если значение арифметического выражения содержит дробную часть, то при определении позиции печати дробная часть отбрасывается. Аргумент должен быть заключен в диапазоне от 0 до 71 (по числу позиций строки экрана). Если аргумент функции ТАВ меньше текущей позиции строки, то эта функция игнорируется, печать осуществляется в следующую позицию. Например, при выполнении оператора

PRINT ТАВ(20); 5

число 5 выводится в 21-ю позицию строки экрана (20-я позиция отводится под знак числа).

При выполнении оператора

PRINT TAB (5); 5; TAB (12); 89

в 6-ю позицию выводится 5, начиная с 13-й - 89.

При выполнении оператора

PRINT TAB (20);”*”; TAB (30); “0”

в 20-ю позицию выводится *, в 30-ю - 0.

При выполнении операторов

X=20

PRINT TAB(X); ”*”

в 20-ю позицию выводится *.

При выполнении операторов

X=20

PRINT TAB (X);”*”; TAB (X-10);”0”

* выведется в 20-ю позицию, 0 — в 10-ю позицию, но на следующей строке. Такой результат второй функции ТАВ объясняется тем, что она определяет позицию, меньшую текущей (при печати нельзя вернуться по строке назад).

Функцию ТАВ можно использовать для вывода результатов в наглядной форме в виде графиков, таблиц, гистограмм.


назад оглавление вперед

 

Яндекс.Метрика