Глава 15
Дополнительные сведения об
операторах "Р R I N T и '1 N Р U Т"
Краткое содержание: CLS, PRINT-параметры: их отсутствие вообще,
выражение (числового или строчного типа); ТАВ-числовое выра-
жение, АТ-числовое выражение PRINT разделители: *,
**' INPUT-параметры, LINE строчная переменная, Свертка,
SCREENS.
Выражение, значение которого выводится в операторе PRINT, на-
зывается PRINT-выражеиием, оно разделяется запятыми или точкой с
запятой, называемыми PRINT-разделителями. В операторе PRINT воз-
можно отсутствие каких-либо параметров, в этом случае ставятся
две запятые подряд.
PRINT AT 11,16;
печатается в середине экрана.
AT 'СТРОКА', 'СТОЛБЕЦ*
этот параметр перемещает позицию вывода в место, определяемое но-
мером строки и столбца. Номер строки меняется от 0 (верхняя) до
21, а номер столбца-от 0 (левый) до 31. Оператор SCREENS: его
действие противоположно действию оператора PRINT AT, он использу-
ет те же параметры, но их значения заключаются в скобки (номер
строки, номер столбца).
PRINT SCREENS (11,16)
мы возвратимся на '*', выведенную предыдущим оператором. Как сим-
волы вывода могут использоваться: алфавитно-цифровые символы,
специальные символы, пробелы. Линии, нарисованные с помощью опе-
раторов: PLOT, DRAW, CIRCLE и определяемые пользователем с по-
мощью графических символов, возвращаются как пустая строка, одна-
ко имеется и другое применение, когда функция OVER используется
для производства (построения) комбинированных знаков. Тав стол-
бец: этот параметр перемещает позицию вывода в указанный столбец
на той же строке, или переходит на новую строку, если столбец был
последним. Помните, что компьютер уменьшает номер позиции по мо-
дулю 32 (т.е. делит на 32 и использует остаток).
Заметим, что 'Тав 33' равнозначно 'TAB 1'
к примеру:
PRINT TAB 30,1; TAB 12; "CONTENTS*'; AT 3,1;''CHARTER'';
TAB 24; ''PAGE*'
выведет иа экран для первой страницы книги оглавление
10 FOR N>0 ТО 20
20 PRINT TAB 8*N; N
30 NEXT N
Мы увидим, что значения параметра TAB получаются в результате
вычитания по модулю из 32. Более наглядный пример получится при
замене в 20 строке '8' на '6*. несколько замечаний:
1. В рассмотренных примерах в качестве ограничителей использо-
валась '; '. Можно использовать ', ' (или пробел, как конец опе-
ратора) при этом необходимо следить, чтобы позиция вывода не пе-
реместилась в часть экрана, предназначенную для вывода сообщения.
2. Мы не можем использовать две нижних строки экрана (22 и
23), т.к. они используются для получения оператором INPUT даииых,
т.к. последняя используемая строка - 21.
3. Мы можем использовать параметр AT для установки позиции вы-
вода в то место, где уже имеется выведенная информация, при этом
новый символ уничтожает старый. Еще одним оператором, используе-
мым совместно с PRINT является CLS, ои производит очистку экрана
подобно операторам CLEAR и RUN при заполнении всего экрана про-
исходит его свертка, в этом можно убедиться проделав:
CLS; FOR N*1 ТО 100: PRINT N: NEXT N
и далее PRINT 99 некоторое количество раз. При выводе текста на
экран происходит останов вывода, для просмотра текста, чтобы убе-
диться в этом выполним:
CLS; FOR N»1 ТО 22: PRINT N: NEXT-N:
когда экран заполнится, вывод остановится и в нижней части экрана
появится запрос: ''SCROOL ?". После просмотра нажмите 'Y' (да) и
вывод продолжится. Возможен отрицательный ответ 'N' (нет), STOP
(SYMBOL SHIFT и 'а') или SPASE (eReaK). Компьютер остановит Прог-
рамму и выдаст сообщение: D BReaK-coNT RepeaTS. INPUT операторы
используются для ввода различных значений. Например:
INPUT ''HOW OLD ARE YOU?'', AGE
компьютер выведет на экран (в нижней части) вопрос, в ответ на
который вы должны ввести свой возраст. Фактически INPUT содержит
те же параметры, что и PRINT, так "HOW OLD ARE YOU?" н 'AGE' яв-
ляются параметрами INPUT. Однако существуют и значительные разли-
чия .
1. Параметры INPUT-переменные, которые вы вводите сами, INPUT
может начинаться с буквы, которая является вводимой переменной.
2. Вы можете вводить значение переменной, как часть запроса,
заключив ее для этого в скобки. Пример:
LET MY AGE* I NT (RND* 100): INPUT ("I AM". MY AGE; ". ");
"HOW OLD ARE YOU?", YOUR AGE
значение 'MY AGE' выдает компьютер, значение 'YOUR АСЕ'вводите вы
сами. По мере выдачи операторов INPUT происходит свертка экрана.
Рассмотрим пример использования AT в INPUT-операторе:
10 INPUT "THIS IS LINE Г A*; AT 0,0; "THIS LINE IS 0й, AS;
AT 2,0; "THIS IS LINE 2", AS; AT 1,0; "THIS IS STILL LINE
l"; AS;
когда ''THIS IS LINE 2'* будет выведено, нижние строки будут
сдвигаться вверх через намеченную линию. Выполним:
10 FOR N*0 ТО 19: PRINT AT N,0; NEXT N
20 INPUT AT 0,0; AS; AT 1,0; AS; AT 2,0; AS; AT 3,0; AS; AT 4,0;
AS; AT 5,0; AS;
когда информация начнет смещаться в область действия операторов
PRINT произойдет свертка экрана. Еще одним примером оператора
INPUT является LINE, он предназначен для ввода строчных перемен-
ных. Рассмотрим пример:. _ (без строковых кавычек)
INPUT LINE AS!
если ввести какую-либо строчную переменную, то ее значение будет
присвоено AS. заметим, что мы не можем использовать параметр LINE
для числовых переменных. Управляющие символы CHRS22 и CHRS23 вы-
полняют функции, подобные параметрам TAB и AT. Их преимущество
состоит в том, что можно задавать более чем два значения, а для
TAB и AT это не возможно. Эти управляющие символы обрабатываются
как числа, аналогом AT является управляющий символ CHRS22, первое
значение определяет строку, второе столбец.
PRINT CHRS22+CHRS1+CHR с;
то же, что и
PRINT AT 1, с
Как значения параметров рассматриваются только CHRS1 и CHR с
(CHRS22 не учитывается). Аналогом TAB является управляющий символ
CHRS23, значения задаваемых им параметров находятся в пределах от
0 до 65535.
PRINT CHRS23+CHR A+CHR в
то же, что и
PRINT TAB А + 256*в
вы можете использовать РОКЕ для остановки компьютера, запрашиваю-
щего свертку, выполнив:
РОКЕ 23692,255
компьютер станет сворачивать экран без запроса 255 раз, прежде
чем запросит свертку, как в примере:
10 FOR N* 0 то 10000
20 PRINT N: РОКЕ 23692,255: NEXT N
н следите сколько сверток сделает компьютер. Стартуем следующую
программу, проверяющую таблицу умножения:
10 LET MS»'' ''
20 LET A-INT (RND*12) +1: LET В®I NT (RND*12) +1
30 INPUT (MS) ' ' "WHAT IS"; (A); "*"; (B); "?"; С
100 IF C®A*B THEN LET MS*"RIGHT": GOTO 20
111 LET MS*"WRONG. TRY AGAIN. ": GOTO 30
можно несколько изменить программу, 'так, чтобы не зная правильно-
го ответа, можно было узнать его. К примеру компьютер спрашивает
сколько будет 2*3, не зная ответа вы вводите 2*3 и получаете его.
Для этого замените в 30 строке 'С' на 'CS', в 100 строке на 'VAL
CS' и дополнительно введите строку:
40 IF CS< >STRS VAL CS THEN LET MS*"TYPE IT PROPERLY
AS NUMBER. ": GOT030
для исключения подсказки поменяйте 'CS' в строке 30 иа 'LINE CS'