Лекция: Пример 14. Определить к какому языку и регистру клавиатуры относится данная буква.

INPUT a$

SELECT CASE ASC(a$)

CASE 65 TO 90: PRINT " Лат.ЗАГЛАВНАЯ "

CASE 97 TO 122: PRINT «Лат. Строчная»

CASE 12 TO 159: PRINT «Русс. ЗАГЛАВНАЯ»

CASE 160 TO 175: PRINT «Русс. Строчная»

CASE 224 TO 239: PRINT «Русс. Строчная»

CASE ELSE: PRINT «НЕ является БУКВОЙ»

END SELECT

Работа программы. Алгоритм основан на использовании конструкции логической передачи управления SELECT CASE. Она анализирует ASCII-код введенного знака, который выдает функция ASC. В каждом CASE указан диапазон возможных значений, соответствующей группе букв.

Большой спектр задач выделения и анализа фрагментов строк решается с помощью функции INSTR.

Пример 15. Определить, входит ли строка В$=«dow» в слово, A$ = «Windows».

INPUT A$

INPUT B$

k = INSTR(A$, B$)

IF k > 0 AND LEN(B$) > 0 THEN PRINT «Yes» ELSE PRINT «No»

END

Результат:

Yes

Работа программы. Алгоритм основан на работе функции INSTR. Результатом ее работы является целое число k равное номеру знака в А$, с которого начинается вхождение B$. Естественно, что если k больше нуля, то В$ входит в А$. Условие в операторе IF состоит из двух компонентов. В одном проверяется значение k, во втором (LEN(B$) > 0) — длина переменной В$.

Второе условие введено для того, чтобы выдать отрицательный ответ в случае ввода нулевой переменной. Иначе при В$="" значение k будет равно 1, и программа определит вхождение.

Пример 16. Определить, сколько раз B$ входит в A$.

A$ = «промышленное производство проводов»

B$=«про»

i = 1

k = 0

DO

x = INSTR(i, A$, B$)

IF x > 0 THEN

i = x + LEN(B$) ' Номер начала поиска

k = k + 1 ' Счетчик вхождений

ELSE

EXIT DO ' Выход из цикла

END IF

LOOP

PRINT «всего вхождений=»; k

Результат:

Всего вхождений= 3

Работа программы. Цикл DO …LOOP использован потому, что заранее неизвестно, сколько будет вхождений.

В строке i = x + LEN(B$) номер начала поиска передвигается направо. Если программа найдет первое вхождение, то нужно будет продолжить поиск с позиции, номер которого равен номеру начала вхождения плюс длина искомого слова.

В примере первое вхождение «про» в «промышленное производство проводов» начинается с первой позиции, следователь но, продолжать поиск нужно с 4-й позиции (1 + LEN(B$)=1+3=4).

Если обнаруженное вхождение нужно заменить другой строкой, то используют оператор MID$.

Пример 17. Заменить все пробелы на тире в тексте А$.

A$= «Погиб поэт! невольник чести!»

FOR i = 1 TO LEN(A$)

IF ASC(MID$(A$, i, 1)) = 32 THEN MID$(A$, i, 1) = "-"

NEXT i

PRINT A$

Результат:

Погиб-поэт!-невольник-чести!

Работа программы. В цикле поочередно выделяются знаки переменной А$. Функция ASC определяет АSCII-код знака, но в том случае, если номер равен 32 (ASCII-код пробела), оператор MID$ заменяет текущий символ знаком «минус» (тире).

Сортировка текстовых массивов

еще рефераты
Еще работы по информатике