Строки в процедурах и функциях
Сравнение и сортировка строк
Строки, как и числа, можно сравнивать. Для строк, состоящих из одних букв (русских или латинских), результат сравнения очевиден: меньше будет та строка, которая идет раньше в алфавитном порядке. Например, слово «паровоз» будет «меньше», чем слово «пароход»: они отличаются в пятой букве: 'в' < 'х'. Более короткое слово, которое совпадает с началом более длинного, тоже будет стоять раньше в алфавитном списке, поэтому 'пар' < 'парк'.
Но откуда компьютер «знает», что такое алфавитный порядок? И как сравнивать слова, в которых есть строчные и заглавные буквы, а также цифры и другие символы? Что больше, 'ПАР', 'Пар' или 'пар'? Оказывается, при сравнении строк используются коды символов. Тогда получается, что:
'ПАР' < 'Пар' < 'пар'.
Возьмём пару 'ПАР' и 'Пар'. Первый символ в обоих словах одинаков, а второй отличается — в первом слове буква заглавная, а во втором — такая же, но строчная. Во всех современных таблицах символов (включая UNICODE) заглавные буквы стоят раньше строчных и поэтому имеют меньшие коды. Поэтому 'А' < 'а', 'П' < 'а' и 'ПАР' < 'Пар' < 'пар'.
А как же с другими символами (цифрами, латинскими буквами)? Цифры стоят в кодовой таблице по порядку, причём раньше, чем латинские буквы; латинские буквы — раньше, чем русские; заглавные буквы (русские и латинские) — раньше, чем соответствующие строчные. Поэтому: '5STEAM' < 'STEAM' < 'Steam' < 'steam' < 'ПАР' < 'Пар' < 'пар'.
Сравнение строк используется, например, при сортировке. Рассмотрим такую задачу: надо ввести с клавиатуры 10 фамилий и вывести их на экран в алфавитном порядке.
Для сортировки удобно выделить массив строк, который в школьном алгоритмическом языке объявляется как литтаб, а в Паскале — array of string. Ввод и вывод выполняются с помощью стандартных циклов, а сортировка — любым известным способом, например методом пузырька:
Следующая страница Вопросы и задания