Работа с ZX-Spectrum 1993 г.

Глава 8 - строки символов.


ГЛАВА 8

СТРОКИ СИМВОЛОВ

Краткое содержание: сечения, использование ТО

Примечание: эти операции отсутствуют в стандартном BASIC'e.

Пусть имеется строка символов, тогда её подстрокой будет некоторая
последовательность символов из этой строки. Так "STRING" является подст-
рокой от "BEGGER STRING", а "В STRING" и "BIG STRING" не являются.

Существует действие, называемое сечением для определения подст-
рок и которое может применяться к строковым выражениям. Общая его фор-
ма:

"строковое выражение"("начало" ТО "конец")
Следующее выражение истинно:

"ABCDEF" (2 ТО 5)»"BCDE".
Если опущено "начало", то по умолчанию подразумевается 1, если "ко-
нец", то подразумевается длина всей строки. Так:

"ABCDEF" (ТО 5) - "ABCDEF" (1 ТО 5) - "ABCDE"
"ABCDEF" (2 ТО) - "ABCDEF" (2 ТО 6) - "BCDEF"
"ABCDEF"(ТО) - "ABCDEF" (1 ТО 6) - "ABCDEF
Посленднее выражение можно было бы записать и так:

"ABCDEF" (),
что тоже верно. Можно опускать и слово ТО :

"ABCDEF" (3) - "ABCDEF" (3 ТО 3) - "С"
"начало" и "конец" должны находиться в пределах строки, иначе будет
выдано сообщение об ошибке. Так, выражение
"ABCDEF" (5 ТО 7)

Вызывает сообщение "3 subscript wrong...", так как "конец" превышает
длину, строки (6).

Если "начало" больше, чем "конец", либо обе границы лежат за преде-
лами строки. То результатом будет пустая строка:
"ABCDEF"(8 ТО 7) - "
"ABCDEF"(1 ТО 0)

"Начало" и "конец" не могут быть отрицательными, иначе выдаётся со-
общение "В Integer out of range...".

Следующая программа иллюстрирует эти правила:
10 LET a$e"ABCDEF"
20 FOR п-1 ТО 6
30 PRINT а$(п ТО 6)
40 NEXT п
50 STOP

Можно также присваивать значения подстроке Попробуйте:
10 LET а$="Гт the ZX SPECTRUM"
20 PRINT a$
30 LET a$(5 TO
40 PRINT a$

Подстрока aS(5 TO 8) имеет длину только в 4 символа, поэтому будут
использованы только первые четыре звёздочки. Это особенность присво-
ения значения подстроке: длинные данные усекаются справа, а короткие до-
полняются пробелами до длины подстроки. Это действие называют
прокрустианом (по имени царя Прокруста из древнегреческих мифов, кото-
рый своим гостям либо отрубал ноги, либо вытягивал их, если они не под-
ходили по длине его кровати).

Если Вы теперь выполните:

LET a$()e"HELLO THERE"

и

PRINT а$;"

Вы увидите, что будут выведены дополнительные пробелы, так как а$0
считается подстрокой. Для правильного выведения следует писать:
LET а$ш"HELLO THERE"

Можно использовать скобки, что позволяет вычислять значение строко-
вого выражения перед тем, как выбрать сечение. Например:
"ABC"+"DEF" (1 ТО 2)*"ABCDE"
("ABC"+"DEF") (1 ТО 2)«МАВ"




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Problem - О выпуске газеты #z80 на английском языке.
Почтовый ящик - Пароли к игре PRINCE of PERSIA (без защиты). Секрет загрузки FAULTLESS 2.
Юмор - Анекдоты.
Обратная связь - контакты редакции.
Бук - ПАПАХИ HА БАШHЯХ.

В этот день...   21 ноября