Давным-давно, в первом классе, вы составляли слова, старательно выводя букву за буквой. Конечно, если просто записывать буквы алфавита одну за другой, может получиться и нечто бессмысленное. Однако для действий, о которых пойдет речь, неважно, имеют слова смысл или нет. Эти действия можно применять даже к словам, записанным произвольными символами, например нотами или "пляшущими человечками". Да и ЭВМ, конечно, недоступен смысл "человеческих" слов. Поэтому словом в информатике принято считать любую последовательность символов некоторого алфавита. Алфавитом может служить любое Множество символов.
Если, скажем, алфавит состоит из цифр 0, 1, 2, 3, 4, 5, 6" 7, 8, 9, то натуральные числа - слова в этом алфавите. Если же добавить в этот алфавит запятую, то появится возможность записывать и неотрицательные десятичные дроби. Алфавит азбуки Морзе состоит из трех символов: точки, тире и пробела. Обычно, правда, упоминают только два символа - точку и тире. А ведь без пробела нельзя было бы в передаваемом сообщении отделить одну букву от другой.
Пробел - вообще замечательный символ! Никак не обозначенный, он тем не менее присутствует почти в каждой фразе. Посмотрите, сколько пробелов на этой странице! А поля? Они сплошь состоят из пробелов. Без этого скромного труженика полей текст слипся бы и его было бы трудно читать и понимать. Если в русский алфавит добавить пробел и все знаки препинания, то любая фраза станет словом (по нашему определению).
Как видите, пробел ничем не хуже других символов. Поэтому можно рассматривать слово, состоящее, скажем, из одного пробела. Впрочем, это еще не самое удивительное слово. Часто бывает необходимым слово, в котором вообще нет символов (вы убедитесь в этом, изучив § 27). Такое слово называется пустым.
Слово - не воробей, а последовательность символов алфавита
Итак, повторим, слово (в информатике) - это произвольная последовательность символов (в частности - последовательность, не содержащая ни одного символа). Число символов в слове назовем его длиной (длина пустого слова равна 0).
Теперь, когда вы освоились с понятием слова, расскажем, какие действия можно совершать со словами.
Вспомните, как на уроках русского языка вы анализировали слова, разбирая их по составу - выделяли корни и приставки, суффиксы и окончания. Как видите, одна из основных операций, необходимых для анализа слов,- выделение в слове его части. Часть слова, конечно, тоже является словом. Можно по-разному указывать, какая часть слова выделяется. Мы договоримся задавать номер первого символа выделяемой части и количество символов в ней. Приведем примеры: слово РОК - часть слова КРОКОДИЛ, начинающаяся со второй буквы и имеющая длину 3. А слова РОД и ДОК не являются его частями. Конечно, операция выделения части слова не всегда выполнима (например, в слове СТОЛ нельзя выделить часть длины 5).
Слова можно не только разбирать на части, но и собирать из других слов, как поезда из вагонов. Для этого служит операция соединения слов. Определение соединения слов очень простое: соединить два слова - это значит к первому слову справа приписать второе. Соединение слов будем обозначать знаком + (как сложение чисел). Например,
Сравним свойства соединения слов и сложения чисел. Сразу ясно, что, в отличие от сложения чисел, для соединения слов переместительный закон не верен - результат, как правило, зависит от порядка, в котором соединяются слова. Например:
ПОТ + КОМ ≠ КОМ + ПОТ.
то же время сочетательный закон верен:
(ПАР + О) + ХОД = ПАР + (0 + ХОД) = ПАР + 0 + ХОД = ПАРОХОД.
Вообще, соединяя несколько слов, скобки можно не писать.
А что получится, если некоторое слово соединить с пустым словом? Каждому ясно: от соединения с пустым словом ничего не меняется. Среди слов пустое слово играет ту же роль, что число 0 среди чисел.
Пустое слово нулю подобно: прибавляй, не прибавляй, а результат все тот же
Используя выделение части слова и соединение слов, можно решать самые разнообразные задачи. В этих задачах слова выступают как данные (точно так же, как числа в вычислительных задачах). Как вы знаете, данные хороши тогда, когда они хорошо организованы, упорядочены. Люди давно придумали замечательный способ упорядочения слов - алфавитный. Именно так упорядочены слова в словарях. Из двух слов договоримся считать большим то, которое в словаре стоит дальше:
СЛОН > МОСЬКА,
ЖИРАФ > ЖИР.
Но как быть, если словаря под рукой нет или сравниваемые слова еще не попали в словарь? Например, какое из слов больше: РОКЕР или БРЕЙКЕР? Ясно, что РОКЕР больше. Ведь буква Р в алфавите стоит дальше, чем буква Б. А что, если первые буквы слов совпали (например, РОК и РЫК) ? Тогда надо смотреть на вторые буквы. А что, если и вторые совпали?... Ну тогда... Закончите формулировку правила сравнения слов самостоятельно.
- Что же больше, "СЛОН" иль "КИТ"?
- Загляните в алфавит!
Итак, сравнивать слова можно и без словаря. Достаточно знать порядок букв (символов) в соответствующем алфавите.
Вопросы
1. Что такое слово?
2. Что такое алфавит?
3. Какое слово называется пустым?
4. Что такое длина слова? Какова длина пустого слова?
5. В чем состоит операция выделения части слова? Всегда ли эта операция выполнима?
6. Что такое соединение двух слов?
7. Выполняется ли для соединения слов:
а) переместительный закон;
б) сочетательный закон?
8. Какое слово при соединении слов играет роль нуля?
9. Как сравнить два слова между собой?
Задания для самостоятельного выполнения
1. а) Придумайте пример двух слов, результат соединения которых не зависит от их порядка;
б*) Определите, какими должны быть два слова, для которых результат соединения не зависит от их порядка.
2. Даны слова: ИНФОРМАТИКА, ЭЛЕКТРИФИКАЦИЯ. Какие получатся слова, если к данным словам применить операцию выделения части, имеющей длину 5, начиная с третьей буквы?
3. Какой длины должно быть слово, чтобы в нем можно было выделить часть, имеющую длину n, начиная с k-го символа?
4. Злоумышленник стер по одному "слагаемому" в каждом из следующих равенств:
а) ... + КОЗА = СТРЕКОЗА;
б) 2 + 3 + ... = 235;
в) НЕ + ... + ХОЧУ = НЕ ХОЧУ;
г) %№ + ... + () = %№ <> ().
Восстановите пропавшие "слагаемые".
5. С помощью операций выделения части и соединения из слова ЖЕЛЕЗНОДОРОЖНИК можно сделать слово ДОЗОР. Для этого нужно соединить следующие части слова ЖЕЛЕЗНОДОРОЖНИК: часть длины 2, начинающуюся с 8-й буквы, часть дайны 1, начинающуюся с 5-й буквы, и часть длины 2, начинающуюся с 9-й буквы. С помощью тех же операций составьте из слова ЖЕЛЕЗНОДОРОЖНИК слова ДОНОР, ЖЕЗЛ, КОЛЕНО, КРОКОДИЛ.
6. Дано слово длины 5. Используя действия выделения части и соединения, составьте слово, записанное теми же символами, но в обратном порядке. Например, из слова 12345 должно получиться слово 54321.
7. Алфавит племени Мумбо-Юмбо состоит из трех букв: ъ, ь, ы, расположенных в указанном порядке. Упорядочите следующие слова по возрастанию (в скобках указан перевод этих слов):
8. а) Найдите слово русского языка, которое больше, чем слово ПАР, и меньше, чем слово ПАРУС.
б) Два слова называются соседними, если не существует слов, больших одного из них и меньших другого. Приведите пример двух соседних слов русского языка.
в) Докажите, что два различных слова одной длины не могут быть соседними.
9*. Если натуральные числа записывать обычным образом в алфавите, состоящем из цифр, то сумма чисел не совпадает с соединением соответствующих слов (приведите пример). Какой алфавит надо выбрать и как надо записывать числа, чтобы сумма чисел была равна соединению соответствующих слов?