ГЛАВА 15
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ
ОБ ОПЕРАТОРАХ PRINT и INPUT
Краткое содержание: CLS; PRINT-параметры: их отсутствие вообще,
выражение (числовое или строковое);
TAB числовое выражение, AT числовое
выражение; PRINT разделители: "Л
,,м INPUT-параметры, LINE строчная
переменная, свёртка, SCREEN$.
выражения, значение которых используются в операторе PRINT, назы-
ваются PRINT-параметрами, они разделяются запятыми или точкой с запя-
той, называемыми PRINT-разделителями.
В операторе PRINT возможно отсутствие некоторых параметров, а сам
оператор в случае повторения может заменяться на две запятые подряд.
PRINT AT 11,16;"*"
выведет "*" в середине экрана.
AT "строка"."столбец"
этот параметр перемещает позицию вывода в место, определяемое но-
мером строки и столбца. Номер строки меняется от 0 (верхняя) до 21, а но-
мер. столбца от 0 (левый) до 31.
Оператор SCREENS. Его действие противоположно действию операто-
ра PRINT AT..., он использует те же параметры: номер строки и столбца, но
их значения заключаются в скобки.
Оператор SCREENS сообщает Вам какой символ находится на экране в
указанной позиции.
Выполнив:
PRINT SCREENS (11,16)
мы получим "*" выведенную предыдущим оператором.
В качестве возвращаемого значения могут использоваться: алфавитно-
цифровые символы, специальные символы, пробелы. Линии, нарисованные с
помощью операторов: PLOT, DRAW, CIRCLE, определяемые пользователем
символы и графические символы, возвращаются как пустая строка. То же,
когда функция OVER используется для получения комбинированных знаков.
TAB "столбец" Этот параметр перемещает позицию вывода в указан-
ный столбец на той же строке, или переходит на новую строку, если столбец
был последним.
Помните, что компьютер уменьшает номер позиции по модулю 32 (т.е.
делит на 32 и использует остаток). Так "TAB 33" равнозначно "TAB 1".
К примеру:
PRINT TAB 30; 1; TAB 12;"CONTENTS";
AT 3,1;"CHAPTER"; TAB 24;"PAGE"
выведет на экран оглавление для первой страницы книги.
Рассмотрим пример иллюстрирующий уменьшение по модулю 32:
10 FOR N-0 ТО 20
20 PRINT TAB 8»N;N
30 NEXT N
Более наглядный пример получится при замене в 20 строке "8" на "6".
Несколько замечаний:
• 1) в рассмотренных примерах в качестве ограничителей
использовалась ;". Можно использовать "," (или вообще ничего).
При этом необходимо следить за установкой текущей позиции
вывода;
• 2) нельзя использовать для вывода две нижние строки экрана (22,23)
т.к. они используются для получения оператором INPUT данных.
Последняя используемая строка -21;
• 3) можно использовать параметр AT для установки позиции вывода в
то .место, где уже имеется выведенная информация, при этом
каждый новый символ уничтожает старый.
Ещё одним оператором, используемым совместно с PRINT, является
CLS, он производит очистку экрана подобно операторам CLEAR и RUN.
При заполнении всего экрана происходит его свёртка, в этом можно
убедиться проделав:
CLS : FOR N=1 ТО 22: PRINT N: NEXT N
и далее выполнить PRINT 99 некоторое количество разбили вариант с
остановом вывода для просмотра текста. Чтобы убедиться в этом выполним.
CTS : TOR N=1 TO 100: PRINT N: NEXT N
когда экран заполнится, вывод остановится, и в нижней части экрана
появится запрос: 'Scrool7". После просмотра нажмите "У" (да), и вывод про-
должится Возможен отрицательный ответ "N" (нет), "STOP" (SYMBOL
SHIFT и "А") или "BREAK" (SPACE) В последнем случае компьютер оста^
новит программу и выдаст сообщение: 'D BREAK - CONT repeats...".
Оператор INPUT ^гпользуется для ввода различных знэчений.
Например:
INPUT "How old are You ?AGE
Компьютер выведет на экран (в нижней части) вопрос; в ответ на кото-
рый Вы должны ввести свой возраст.
Фактически INPUT содержит те же параметры, что и PRINT, так "How
old are You ?" и AGE оба являются параметрами INPUi. Однако существуют
некоторые отличия:
• 1) дополнительный параметр - переменная, значение которой Вы
должны присвоить (в нашем примере AGE); *
• 2) Вы можете выводить значение переменной, как часть запроса,
заключив её для этого в скобки.
Пример:
LET my ageeINT (RND *1T)0): INPUT ("I am";mv age;".");
"How old are You ?",your age ^
Значение "my age" выдаёт компьютер, значение "your age" вводите Вы
сами.
По мере выдачи операторов INPUT поисходит свёртка экрана. Рас-
смотрим пример использования AT в INPUT операторе:
10 INPUT "This is line Г;А$;АТ 0 ;"This is line 0",A$;
AT 2,0fThis is line 2",A$; AT l,0"This is still line Iм,A$
Когда "This is line 2" будет выведено, нижние строки станут сдвигаться
вверх, освобождая место, но нумерация останется прежней.
Выполним:
10 FOR N=0 ТО 19: PRINT AT N,0;N;: NEXT N
20 INPUT AT 0,0;A$;AT 1,0;A$;AT 2,0;A$;AT 3,0;A$;
AT 4,0;A$;AT 5,0;A$;
Когда информация начнет смещаться в область действия операторов
PRINT, произойдет свертка экрана.
Еще одним параметром оператора INPUT является LINE, он предназна-
чен для ввода строчных переменных. Рассмотрим пример.
INPUT LINE А$
Если ввести какую-либо строчную переменную без строковых кавычек,
то её значение будет присвоено А$. Заметим, что мы не можем использо-
вать параметр LINE для числовых переменных.
Управляющие символы CHRS 22 и CHR.S 23 выполняют функции, подоб-
ные параметрам TAB и AT. Их преимущество состоит в том, что можно
использовать имена переменных, а для TAB и AT это невозможно. Эти управ-
ляющие символы обрабатываются как числа.
Аналогом AT является управляющий символ CHR$ 22. Первое значение
определяет строку, второе столбец.
PRINT CHR$ 22+CHR$ 1+CHR$ С;
то же, что и
PRINT АГ 1,С;
Как значения параметров рассматриваются только CHRS С (CHRS 22 не
учитывается). '
Аналогом TAB является управляющий символ CHRS 23. Значения зада-
ваемых им параметров находятся в пределах от 0 до 65535
PRINT CHR$ 23+CHR$ A+CHR$ В
то же, что и
PRINT TAB А+256*В
Вы можете использовать РОКЕ для остановки компьютера.Запрашиваю-
щего свертку, выполнив:
РОКЕ 23692,255
Компьютер станет сворачивать экран без запроса 255 раз, прежде чем
запросит свертку. Так, например, запустите:
10 FOR N=0 ТО 10000
20 PRINT N: POKE 23692,255
30 NEXT N
и следите, сколько свертокчсделает компьютер.
Стартуем следующую программу, проверяющую знание таблицы умно-
жения:
10 LET М$=""
20 LET A-INT (RND *12)+1: LET B=INT (RND *12) + 1
30 INPUT (M$)""What is ";(A);" * ' ;<B>? ";C
100 IF C=A*B THEN LET M$«" Right GOTO 20
110 LET M$=" Wrong. Try again. GOTO 30
Можно несколько изменить программу так, чтобы, не зная правильного
ответа, можно было узнать ею. К примеру, компьютер спрашивает "Сколько
будет 2*3 ?". Не зная ответа. Вы вводите 2 * 3 и получаете его. Для этого
замените в 30 строке "С" на "С$", в 100хтроке на "VAL С$" и дополнитель-
но введите строку:
40 IF C$STR$ VAL С$ THEN LET MS-" Type if properly
as number.": GO TO 20
для исключения подсказки, поменяйте "С$" в строке 30 на "LINE С$"