Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ZX-Review-1992-01-12.pdf
Скачиваний:
243
Добавлен:
28.03.2015
Размер:
2.43 Mб
Скачать

стандартном размере 8x8 пикселов (см. CSIZE).

21. SHIFT$ (число, строка)

FN Z$(число, строка)

SHIFT$ многоцелевая функция для преобразования строковых переменных. Она имеет много разных режимов работы. Режим задается параметром "число" при вызове функции. Вот краткий обзор ее режимов.

1.Все символы строки преобразуются в верхний регистр (в прописные буквы).

2.Все символы преобразуются в нижний регистр (в строчные буквы).

3.Регистр всех символов меняется на противоположный.

4.Подавление управляющих кодов. Все символы, являющиеся управляющими кодами, за исключением символа CHR$ 13 (код ENTER) заменяются символом "точка" (".").

5.Подавление токенов ключевых слов. Символы CHR$ 128...255 заменяются символами 0...127. При этом управляющие коды, за исключением ENTER (CHR$ 13) заменяются символом ".".

6.Подавление токенов ключевых слов. Символы CHR$ 128...255 заменяются символами 0...127, при этой все управляющие коды заменяются символом ".".

7.Все ключевые слова преобразуются из токенизированной (однобайтной) формы в многобайтную (по байту на каждый символ).

8.Все ключевые слова преобразуются из формы с полным написанием в однобайтные токены. Регистр символов роли не играет. После каждого ключевого слова должен стоять небуквеный символ.

9.То же, что и предыдущий режим, но после ключевого слова может стоять любой символ.

10.То же, что и предыдущий режим, но не все ключевые слова должны быть набраны прописными литерами.

11. То же, что и режим 8, но все ключевые слова должны быть набраны прописными буквами.

SHIFT$1...SHIFT$3

Преобразования регистров. Рассмотрим примеры: SHIFT$ (1,"Basic") = "BASIC" SHIFT$ (2,"Basic") = "basic" SHIFT$ (3,"Basic") = "bASIC"

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

100 INPUT i$: IF SHIFT$(1,1$) ="Y" THEN GO TO 200

Это поможет вам уйти от целой последовательности сравнений, таких, как

IF i$ = "Y" OR i$ = "y"

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

SHIFT$4...SHIFT$6

Подавление управляющих кодов и токенов ключевых слов.

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

PRINT CHR$(PEEK address)

Очень скоро по этой команде Вы получите сообщение об ошибке "Invalid colour". Это произойдет как только вы попытаетесь распечатать непечатный символ.

Например, последовательность 17, 200 будет интерпретироваться, как CHR$17; CHR$200, а это в переводе c машинного языка на БЕЙСИК означает PAPER 200. Компьютер отреагирует сообщением об ошибке.

Сам формат печати при этом будет выглядеть весьма неопрятно, поскольку символы выше 127 могут быть распечатаны, как символы UDG, как символы блочной графики и как токены ключевых слов, имеющие самую разную длину.

Функция SHIFT$ позволяет справиться с этой проблемой, подавляя неприятные эффекты. В течение нескольких минут Вы сможете "прощупать" память компьютера в поисках таблиц данных, сообщений и списков ключевых слов.

100 FOR n=1 ТО 65535 STEP 704

110 PRINT SHIFT$(6,MEMORY$())(n ТО n+703)

120 PAUSE 0: CLS

130 NEXT n

Если область памяти, которую вы сканируете, содержит не машинный код, а БЕЙСИК программу, то может быть Вам нецелесообразно отключать изображение токенов ключевых слов и достаточно только подавить управляющие коды режимом SHIFT$4.

SHIFT$7

Преобразование токенов в полную символьную запись. Начнем с примеров:

10 LET a$ = " THEN NOT": REM это токены

20 PRINT a$, LEN a$: REM LEN=2

30 LET t$ = SHIFT$(7,a$) 40 PRINT t$, LEN t$:

REM LEN=9

Эта функция должна быть полезной для тех, кто работает с принтером. Если принтер подключен не через стандартный "Синклеровский" интерфейс, то он не сможет воспроизводить на печать токены ключевых слов БЕЙСИКа, поскольку он о них ничего не знает.

Подобная конверсия поможет вам получать распечатки ваших БЕЙСИК программ.

SHIFT$8...SHIFT$11

Преобразование ключевых слов из полной формы записи в токенизированную форму. Эта функция преобразует все символьные последовательности, которые являются ключевыми словами БЕЙСИКа в токенизированную форму. Ключевое слово не будет распознано, если непосредственно перед ним стоит какая либо буква. Что же касается символа, стоящего непосредственно за ключевым словом, то его влияние зависит от того,

какой конкретно режим был избран (см. выше).

Эта функция может пригодиться в том случае, если вы примете БЕЙСИК программу через внешний порт или через сеть от компьютера другой системы. Конвертировав записанные символами ASCII ключевые слова в токены и подправив синтаксис программы под свой "Спектрум", вы сэкономите массу времени, т. к. вам не придется набирать текст программы вручную.

22. SINE (число)

FN S(число)

Это модифицированная функция "синус". Она дает менее точный результат по сравнению с функцией SIN стандартного БЕЙСИКа, но зато работает в шесть раз быстрее.

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

23. STRING$ (число, строка)

FN S$ (число, строка)

Эта функция дает строковую переменную, состоящую из параметра "строка", повторенного столько раз, каково значение параметра "число".

STRING$ (32," ") = " ..... "

(32 знака)

STRING$ (4,"АВ") = "АВАВАВАВ" PRINT STRING$(704,"Х")

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]