Главная » Basic » ВЫВОД В ОПЕРАТОРЕ INPUT

0

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

10   PRINT "ЧИСЛО ЛЕТ ="

20   INPUT Y

приведут к возникновению изображения ЧИСЛО ЛЕТ = ?_

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

10  PRINT "ЧИСЛО ЛЕТ =";

20   INPUT Y

приведут к возникновению изображения ЧИСЛО ЛЕТ =?_

и изображение набираемого значения будет появляться после вопросительного знака на одной строке с текстом.

Во  многих системах для  микроЭВМ допускается  расширение  возможностей  оператора  INPUT, имеющее тот  же  эффект,  что  проиллюстрирован  в  последнем  примере. Общая  форма  записи расширения такова:

INPUT "текст"; список элементов данных Таким образом, оператор

10  INPUT "ЧИСЛО ЛЕТ =";Y

выдаст то же, что и выше: "ЧИСЛО ЛЕТ =?_". Бейсик ВВС предоставляет больше возможностей, чем большинство других систем, и  позволяет в списке элементов данных оператора INPUT  смешивать текст и вводимые данные, отделяя текст от вводимых данных запятой или вовсе не указывая разделителя между ними, например:

10   INPUT "ЧИСЛО ЛЕТ =",Y,"И ПРОЦЕНТ =" I

См. подразд. 4.1.6 по поводу других особенностей применения запятой или  точки с запятой при вводе оператором INPUT списка значений в одной строке.

3.5.1.   ФУНКЦИИ, УПРАВЛЯЮЩИЕ ОПЕРАТОРОМ PRINT

До сих пор расположение текста и результатов управлялось употреблением в операторах запятых или точек с запятыми. Однако большие возможности управления обеспечиваются за счет применения таких функций, как TAB и SPC.

Функция TAB не является просто генератором определенного числа пробелов; она предпринимает попытку перемещения к столбцу, номер которого передан ей в качестве аргумента. Эта функция реализована для большинства  версий Бейсика. Если ей в качестве аргумента передано значение N, то она пытается переместить текущую позицию печати следующего символа вперед (слева направо) в столбец  с  номером N.  Если это  невозможно из-за  того,  что  текущая позиция  превышает N,  то функция осуществляет переход на новую строку и  затем позиционирует вывод в столбец N новой строки. Таким образом, оператор

PRINT A;TAB (12) ;В;TAB(24); С

напечатает значение А, начиная с первой позиции строки,  значение  В — с двенадцатой, а значение С

—   с двадцать четвертой.

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

10  PRINT "ГОРОДСКАЯ КВАРТИРА"; TAB (25) ; P1 20  PRINT "СМЕЖНЫЙ ДОМ"; TAB (25) ; Р2

30  PRINT "ОСОБНЯК"; TAB (25) ; Р3 40  PRINT "САРАЙ, ТРЕБУЮЩИЙ УХОДА"; TAB (25) ; Р4 В результате цены будут выстроены в столбик независимо от длины описания вида жилища:

САРАЙ, ТРЕБУЮЩИЙ УХОДА     200

Реализации функции  TAB различаются. По крайней мере, в одной — двух системах упомянутого выше перехода на новую строку не происходит, и  если текущая позиция печати превышает N, то функция TAB попросту игнорируется.

Используя функцию TAB со значением аргумента X, вычисляемым в программе, можно получать грубые изображения графиков. В качестве X можно задавать любое выражение; его дробная часть отбрасывается, так как при изображении возможны только целочисленные координаты. Программу выдачи гистограммы из подразд. 3.5.1 нетрудно модифицировать следующим образом:

5 REM ПРОГРАММА ДЛЯ ГРУБОГО ПОСТРОЕНИЯ ГРАФИКА

10 PRINT "———————-ОСЬ Y————–"

20 FOR Х=0 ТО 7 STEP .5

30   Y=X**2+3

40   PRINT "!" ;TAB(Y) ;’*"

50 NEXT X

60 END

Эта программа выдаст следующее изображение  (см. замечания о перемещении  изображения  при заполнении экрана, подразд. 3.5.1) :

Существуют другие полезные функции  управления выводом, не входящие в стандарт Бейсика. В табл.  3.5  —  3.8  перечислены функции  управления выводом, имеющиеся  в  некоторых системах. Обратите внимание на функцию SPC(N), выводящую N пробелов, где N ограничено диапазоном 0… 255.

Некоторые другие функции позволяют перемещать курсор (т. е. текущую позицию печати) назад, вперед, на другие строки экрана, а также выдавать новое изображение на месте уже существующего. Таблица 3. 5. Функции управления выводом в Бейсике для персональной ЭВМ ZX81 фирмы Sinclair

Функция/оператор

Назначение

ATX, Y

CLS SCROLL TAB Y

Не является вещественной функцией, а

применяется в операторе PRINT для указания строки (Y) и столбца (X) , в которых должно начаться изображение следующего элемента данных (Верхняя строка экрана имеет номер 0, нижняя 21, крайний левый столбец строки имеет номер 0, крайний правый 31)

Оператор, вызывающий  стирание изображения с экрана

Оператор для перемещения изображения вверх на одну строку

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

Таблица 3.6. Функции управления выводом в Бейсике Microsoft

Функция/оператор

Назначение

HOME

НТАВХ

POS(X)

SPC(X)

TAB (X)

Оператор, вызывающий  стирание экрана и

перемещение курсора в левую верхнюю позицию экрана

Оператор, перемещающий курсор в столбец, номер которого равен целой части X (крайний левый столбец имеет номер 1, крайний правый

40) (См. VTAB)

Функция с фиктивным аргументом X, возвращающая текущую позицию курсора (столбец) в строке (См. VPOS(X))

Функция с целым аргументом X, изображающая

X пробелов

Функция для перемещения позиции печати

очередного элемента данных в столбец с номером, равным целой части X

VPOS(X)                    Функция с фиктивным аргументом X, возвращающая номер строки, в которой находится курсор

VTAB X                     Оператор, перемещающий курсор по вертикали в строку с номером, равным целой части X (верхняя строка имеет номер 1, нижняя 24)

Таблица 3. 7. Функции управления выводом в Бейсике ВВС

Функция/опер

атор

Назначение

CLS

COUNT POS SPC(X)

TAB (X)

TAB(X,Y) VPOS

Оператор, вызывающий  стирание экрана и

перемещение курсора в левую верхнюю позицию экрана (с координатами (0,0))

Функция без аргументов (входных параметров), возвращающая число символов, напечатанных на текущей строке

Функция без аргументов, возвращающая горизонтальную позицию курсора (крайний левый столбец имеет номер 0)

Функция, изображающая пробелы в количестве,

равном целой части аргумента X

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

Функция, вызывающая перемещение курсора в позицию с координатами (X, Y)  (см. POS, VPOS) Функция без аргументов, возвращающая вертикальную позицию курсора (верхняя строка имеет номер 0)

Таблица  3.8. Функции управления выводом в Бейсике для персональной ЭВМ PET фирмы Commodore

Функция/оператор

Назначение

10 PRINT "текст",

А; В

SPC(X)

Обычный оператор PRINT, с помощью которого можно выводить текст и числовые

значения. Однако если при наборе заключенного в кавычки текста нажимается какая-либо из клавиш управления курсором, то генерируется специальный символ, а соответствующее перемещение курсора происходит во время исполнения этого оператора в программе. Например, оператор PRINT "

Кроме этих функций в системе может присутствовать функция CLS, вызывающая стирание экрана и перемещение  курсора в его левый верхний угол. Взятые вместе, эти функции дают программе на Бейсике полную свободу управления позиционированием вывода в любое место экрана ВТУ. Эти функции могут применяться для "оживления" псевдографического  вывода в игровых программах, в прикладных программах, демонстрирующих, к примеру, поток жидкости по трубам и т. д. По поводу псевдографики см. разд. 6.6.

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии