- •1. Простейшие Операторы языка
- •2. Операторы управления
- •3. Организация ветвлений
- •Input X
- •Input a,b,c
- •Input g
- •4. Организация циклов
- •5. Операторы циклов
- •Программа к задаче 5.2
- •Input "Введите числа X и y", X, y
- •Input X
- •Input X
- •6. Работа с массивами
- •7. ОбРаботка Символьных данных
- •Пример. ?instr(”Саша”,”а”),instr(3,”Саша”,”а”) Результат: 2,4
- •Input "введите число X"; X
- •Контрольные задания
7. ОбРаботка Символьных данных
Все символы в ПК имеют уникальные коды, значения которых закреплены в ASCII-таблице. С ней можно ознакомиться в любом справочнике. В Бейсике имеются несколько функций и операторов обработки символьных данных.
LTRIM$(строка) – удаляет начальные пробелы в символьном выражении.
RTRIM$(строка) – удаляет конечные пробелы в символьном выражении.
SPACE$(числовое_выражение) – возвращает строку пробелов длиной N символов (N в пределах 0-32767).
INSTR([начальная_позиция],строка1, строка2) – возвращает позицию первого вхождения строки2 в строку1, начиная с начальной позиции. Если начальная позиция не задана, отсчет производится с начала.
Пример. ?instr(”Саша”,”а”),instr(3,”Саша”,”а”) Результат: 2,4
LEFT$(строка, n) – возвращает строку, содержащую n первых символов.
Пример. ?LEFT$(”Саша”,2) Результат: ”Са”
RIGHT$(строка, n) – возвращает строку, содержащую n последних правых символов.
Пример. ?RIGHT$(”Саша”,2) Результат: ”ша”
MID$(строка, начальная_позиция [,длина]) – возвращает фрагмент ситроки, с начальной позиции заданной длины.
Пример. ?MID$(”теория”,4), MID$(”теория”,4,2) Результат:”рия”, ”ри”
MID$(строка, начальная_позиция [,длина])=строка – символьный оператор, заменяющий фрагмент строки на символьное выражение, начиная с начальной позиции заданной длины.
Пример. x$ = "здесь вход"
MID$(x$, 7, 2) = "выход"
? x$ Результат: "здесь выхо"
STR$(число) – возвращает символьное представление числа или числового выражения.
Пример. STR$(3) Результат: "3"
VAL(строка) – возвращает числовое представление символьного выражения. Функция обратна функции STR$().
Пример. STR$("3") Результат: 3
LEN(строка) – возвращает длину символьного выражения.
Пример. LEN(”теория”) Результат: 6
ASC(символ) – возвращает код символа ПК.
CHR$(число) – возвращает символ по его коду.
Примеры. ASC(“R”) Результат: 82 (код буквы R=82)
CHR(82) Результат: “R”
Т.е. функции эти обратны друг другу.
Текстовые данные можно соединять в одну строку, используя знак “+”.
Текстовые данные можно сравнивать между собой на больше, меньше, равно. Сравниваются, конечно, не сами символы, а их коды. Так верным будет отношение “A”<”R”, поскольку ASCII-код (65) английской буквы A меньше кода (85) буквы R. Сравнивать можно и целые слова. Так верно отношение “TOM”>”JON”. Сравнение начинается с первой пары символов. Здесь код английской T (код 84) больше кода J (74). Остальные символы далее не сравниваются. Если же первая пара букв совпадает, будет проверена следующая пара и т.д. до первого несовпадения. Если число символов в сравниваемых словах различно, сравнение выполняется до исчерпания первого операнда. Рост кодов символов соответствуют их порядку в алфавите. Для русских символов это не совсем так (см. справочник).
Пример. Напечатать символьную переменную X$ в обратном порядке
x$="Внимание": y$ =""
FOR i = LEN(x$) TO 1 STEP -1
y$ = y$ + MID$(x$, i,1)
NEXT
PRINT y$ Результат: “еинаминВ“
Здесь в переменной y$ формируется нужный результат.
Задача 7.1. Напечатать число X (в диапазоне 0-99) прописью. Такая потребность возникает при печати в финансовых документах “суммы прописью”. Результат поместить в переменную P$.
Нам понадобятся три текстовых массива. s1$(0 to 9) для числительных в диапазоне "ноль" – "девять", s2$(10 to 19) для "десять" – "девятнадцать", s3$(2 to 9) для "двадцать" – "девяносто". Начальный и конечный индексы массивов лучше выбирать в соответствии со значениями числительных. Наполнение массивов проще произвести операторами Data и Read.
CLS 'Программа к задаче 7.1
DIM s1$(0 TO 9), s2$(10 TO 19), s3$(2 TO 9)
DATA "ноль","один","два", "три","четыре","пять","шесть","семь","восемь","девять"
READ s1$(0), s1$(1), s1$(2), s1$(3), s1$(4), s1$(5), s1$(6), s1$(7), s1$(8), s1$(9)
DATA "десять","одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать",
"шестнадцать","семнадцать","восемнадцать","девятнадцать"
READ s2$(10),s2$(11),s2$(12), s2$(13), s2$(14), s2$(15), s2$(16), s2$(17), s2$(18), s2$(19)
DATA "двадцать","тридцать","сорок","пятдесят","шестьдесят","семдесят","восемдесят","девяносто"
READ s3$(2), s3$(3), s3$(4), s3$(5), s3$(6), s3$(7), s3$(8), s3$(9)