Главная » Basic » СРАВНЕНИЕ СТРОК

0

Строки можно указывать в условиях оператора IF в сочетании со всеми операциями сравнения. При проверке на совпадение строки по обеим частям от знака = должны быть идентичны с учетом как ведущих, так и концевых пробелов. Например, условие оператора

IF А$="ПОЧЕМУ" THEN 100

выполнено в том случае, если значение А$ равно "ПОЧЕМУ", но не выполнено, если оно равно  "

ПОЧЕМУ", или "ПОЧЕМУ ", или любому другому значению.

Можно использовать и  операции < (меньше) или > (больше). Применительно к строкам операция < интерпретируется  как "младше в алфавитном порядке", а операция > как "старше в алфавитном порядке".

Только  что  сказанное  требует  некоторых  оговорок,  а  именно как  поступать  со  специальными символами   или цифрами?   Ответ на этот вопрос прост: при сравнении  строковых значений ЭВМ сопоставляет внутренние числовые коды символов и  на основе этого сопоставления устанавливает выполнение отношения < или >. Так, если "символ 1" имеет меньший числовой код, чем "символ 2", то  "символ 1" < "символ 2". В большинстве ЭВМ (но не во всех) для внутреннего представления символов используются коды ASCII (см. приложение II). В любом случае в Вашей системе должна быть предус-

Таблица 4.2. Некоторые примеры кодов ASCII

Символ

*

+

-

0

9

А

Н

Z

а

h

z

Код (деся-

тичный)

42

43

45

48

57

65

72

90

97

104

122

мотрена функция, позволяющая найти числовой код, соответствующий каждому символу. В табл. 4.2

приведено несколько  примеров  кодов  ASCII.   Учтите,  что   некоторые  специальные символы предшествуют цифрам 0 — 9, а сами цифры предшествуют прописным буквам. Строчные буквы оказываются почти в самом конце списка символов1.

Строки нетрудно  отсортировать по  алфавиту, поскольку  между  строкой,  начинающейся с  А,  и строкой, начинающейся с В, справедливо отношение <, и т. д. Например, выполнены соотношения "CAR" < "CARD" < "CARTER" < "CAT" а также

Ниже приводится  простая  программа,  демонстрирующая некоторые  из  подобных  соотношений.

Попробуйте исполнить ее на своей ЭВМ.

10 REM ТЕСТ, ДЕМОНСТРИРУЮЩИЙ СИМВОЛОВ

20 IF IF "A"<"B" THEN PRINT "A<B"

30 IF "0"<"8" THEN PRINT "0<8"

4(8 IF "0"<"D" THEN PRINT "0<D"

50 IF "X" = "XX" THEN PRINT "X=XX"

60 IF "X"<"XX" THEN PRINT "X<XX"

70 IF "CART HORSE"<"CARTER" THEN PRINT "CART HORSE<CARTER"

80 END RUN A<B 0<8

0<D X<XX

CART HORSE<CARTER END AT LINE 80

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

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

малопригоден. Гораздо более эффективная программа сортировки приводится в разд. 4.5.

10   REM ЭЛЕМЕНТАРНАЯ СОРТИРОВКА

28    INPUT A$,B$,C$

30   REM ПРОВЕРИМ ПЕРВУЮ ПАРУ И ПОМЕНЯЕМ МЕСТАМИ, ЕСЛИ

35   REM  ИДУТ НЕ ПО ПОРЯДКУ

40   IF A$<B$ THEN 90 50   X$=A$

60   A$=B$

70   B$=X$

80  REM ПРОВЕРИМ СЛЕДУЮЩУЮ ПАРУ И ПОМЕНЯЕМ МЕСТАМИ, ЕСЛИ

85  REM ИДУТ НЕ ПО ПОРЯДКУ

90   IF B$<C$ THEN 150 100   X$=B$

110  B$=C$

120   C$=X$

130  REM ТАК КАК ЗНАЧЕНИЯ ПЕРЕСТАВЛЕНЫ. ВНОВЬ ПРОВЕРИМ

135   REM  ПЕРВУЮ ПАРУ

140   GOTO 40

150  PRINT "АЛФАВИТНЫЙ ПОРЯДОК СЛОВ:"

160  PRINT AS,B$,C$

170   END RUN

?LARA,ANN,BETTY

АЛФАВИТНЫЙ ПОРЯДОК СЛОВ:

ANN                          BETTY                      LARA

END AT LINE 170

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии