Урок 14.
Функции преобразования типов данных.
Применение кодов символов.
На прошлых уроках мы познакомились с функциями обработки символьных величин,
в частности с функциями обработки строк.
Сегодня мы продолжим изучение функций обработки
символьных величин и познакомимся с функциями преобразования типов
данных. Эти функции названы так потому, что аргументы и результаты
этих функций — величины разных типов. Так, если аргумент функции
— символьная величина, то результатом функции сбудет число, и наоборот.
Функция CHR$(N) (от англ. CHaRacter — символ)
выдает символ, ASCll-код которого равен N.
CHR$(66) = "В" (латинская буква)
CHR$(62) = ">"
Функция VAL(X$) (от англ. VALue — значение)
преобразует последовательность символов, соответствующую символьной записи
числа на Бейсике, в число (десятичный код).
При преобразовании в строковом представлении
допустимы стоящие впереди пробелы, знаки “+” и “-” (перед цифрами), цифры,
десятичная точка, знаки Е и D (экспоненциальное представление числа).
Если нецифровой знак первый, то значение функции равно 0.
Пробелы в записи, расположенные до цифр, игнорируются.
VAL("123" + "45") = 12345
VAL("-55 + АБ") = -55
VAL("12.5ABC")=12.5
VAL(" 32.121")= 32.121
VAL("ABC") = 0
VAL("ABC12")=0
Функция АSС(Х$)
вычисляет значение ASCII-кода первого символа строки Х$.
ASC("F") = 70
ASC("house") = 104
Часто функция ASC используется в тестовых
(контролирующих) программах, когда хотят проверить правильность ответов
или данных, введенных пользователем.
Функция STR$(x) (от англ. STRing — строка)
преобразует числовой аргумент в строку (текст) цифр
в десятичном виде. Для положительных чисел в строковом представлении содержится
ведущий пробел.
STR$(125) = " 125"
STR$(&HFF) = " 255"
STR$(-15.6)="-15.6"
С помощью рассматриваемых функций расширяются способы решения задач с
символьными величинами. Вспомним задачу сравнения символьных величин.
Ту обработку, которая производилась вручную, теперь можно возложить на
компьютер.
Задача 1.
Сравните два введенных с клавиатуры слова.
Решение.
Используемые величины:
А$, В$ — вводимые слова;
N —длина А$;
М—длина В$;
Р — наибольшая длина слов;
I — номер символа в А$;
J — номер символа в В$;
К — номер вырезаемого символа;
А1$ — символ, вырезаемый из А$;
В1$ — символ, вырезаемый из В$.
Вводятся слова А$ и В$ и находятся их длины
N и М соответственно. Если эти длины совпадают, то обработка продолжается.
Если первое слово длиннее второго, то P=N и слово В$ дополняется пробелами
до длины второго слова, иначе Р=М и дополняется пробелами слово А$. Далее
вырезается по одному символу из А$ и В$ — А1$ и В1$ и сравниваются коды
этих символов. Если все ASC(A1$)=ASC(B1$), то выводится "А$=В$";
если на каком-то шаге ASC(A1$)<ASC(B1$), то "А$<В$", иначе
"А$>В$".
INPUT A$, B$
N = LEN(A$)
М = LEN(B$)
IF М - N THEN GOTO 12
IF N > М THEN GOTO 6 ELSE GOTO 9
6 FOR I - М + 1 ТО N
В$ = В$ + " "
NEXT I
GOTO 12
9 Р = М
FOR J = N + 1 ТО М
А$ =А$ + " "
NEXT J
GOTO 125
12 Р = N
125 FOR К = 1 ТО Р
А1$ - MID$(A$,K,1)
В1$ - MID$(B$,K,1)
IF ASC(A1$) > ASC(B1$)
THEN GOTO 18
IF ASC(A1$) =ASC(B1$)
THEN GOTO 17 ELSE GOTO 20
17 NEXT К
PRINT A$; "="; В$
GOTO 21
18 PRINT A$; ">"; В$
GOTO 21
20 PRINT A$; "<"; В$
21 END
Задача 2.
Подсчитайте во введенном тексте количество букв
и количество цифр.
Решение.
Используемые величины:
А$ — вводимый текст;
S — счетчик букв;
N — счетчик цифр;
В — код вырезаемого символа;
I — номер символа в тексте.
Задаются нулевые значения счетчика букв S и
счетчика цифр N. Текст просматривается начиная с первого символа, вырезается
по одному символу и проверяется код В этого символа. Если он находится
на отрезке [65,90], или [97, 122], или [192, 254], то вырезанный символ
— буква и необходимо увеличить значение S на 1. Если код символа принадлежит
отрезку [48, 57], то это цифра и необходимо увеличить значение N на 1.
При достижении конца текста на экран выводятся значения S и N.
S = О
N = О
INPUT "ВВЕДИТЕ ТЕКСТ";А$
FOR I = 1 ТО LEN(A$)
В = ASC(MID$(A$,I,1))
IF (В >= 65 AND В <= 90) OR (В >= 97
AND В <= 122)
(В >= 192 AND В <= 254) THEN S = S + 1
IF В >= 48 AND В <= 57 THEN N = N + 1
NEXT I
PRINT "БУКВ-"; S; ", "; "ЦИФР-"; N
END
Задания для самостоятельного решения.
Задача 1.
Напишите программу, проверяющую, являются ли различными все цифры во
введенном четырехзначном числе.
Задача 2.
Напишите программу, определяющую частоту вхождения в текст букв.
Задача 3(дополнительная).
Напишите программу замены во введенном предложении всех прописных букв
строчными.
|