А она должна проверять символы
регистр). А она должна проверять символы в диапазоне 'A'...'Z' и
'a'...'z' или перед выполнением проверки преобразовывать символы
в верхний регистр.
Еще один ключ к поиску ошибки дает анализ обеих введенных
строк. Вы ввели буквы верхнего и нижнего регистра от 'A' до 'I',
но в общем итоге выведена только половина букв. Теперь вы уже
знаете, почему.
Давайте вернемся назад к строке, в которой вызывается
IsLetter, с помощью еще одного метода перемещения: нажмите клави-
ши Alt-F8, по которым программа будет выполнена до последнего
оператора процедуры или функции. Так как вторая введенная строка
содержит только буквы нижнего регистра, каждый символ обрабатыва-
ется, как пробел, и пропускается. Это приводит к неверному значе-
нию счетчиков слов и букв и выявляет причину ошибок 1 и 4.
TDeb 3.0 #2-3 = 158 =
Диалоговое окно Evaluate/Modify
-----------------------------------------------------------------
Кстати, существует еще один прекрасный способ выявить непра-
вильное поведение IsLetter. Нажав клавиши Alt-D E, выведите диа-
логовое окно Evaluate/Modify (Вычисление/Модификация) и введите
следующее выражение:
IsLetter('a') = IsLetter('A')
И тот, и другой параметр (a и A) являются буквами, но ре-
зультат вычисления False подтверждает, то они интерпретируются
функцией IsLetter по-разному. (Окна вычисления и просмотра можно
использовать для вычисления выражений, выполнения присваиваний,
или, как в данном случае, вызовов процедур и функций. Более под-
робно об этом рассказывается в Главе 6.)
Проверка
-----------------------------------------------------------------
Итак, две ошибки выявлены, остались три. Ошибку 2 гораздо