Функции LEFTS, RIGHTS и MID$
Функции LEFTS, RIGHTS и MID$
Для получения фрагмента строки (или значения строковой переменной) применяются специальные функции.
Функция left$ выделяет из введенной строковой переменной n символов слева:
LEFT$(строковая_переменная, N)
Рассмотрим пример.
CLS
F$="ГАЗОНОКОСИЛЬВДК"
L$=LEFT$(F$, 5)
? L$
На экране появится слово "ГАЗОН", т. е. первые пять символов слева исходной строковой переменной.
Функция right$ вырезает из введенной строковой переменной N символов справа:
RIGHTS(строковая_переменная, N)
Например:
CLS
F$='TA30H0K0CIOTbII]HK" R$=RIGHT$(F$, 9)
? R$
На экране появится слово "КОСИЛЫЦИК", т. е. первые девять символов справа исходной строковой переменной.
Наконец, функция mid$ извлекает N2 символов, начиная с ni исходной строковой переменной:
MID$(строковая_переменная, N1, N2)
Например,
CLS
F$="ГА30Н0К0СИЛЫЦИК" M$=MID$(F$, 7, 4) ? М$
На экране появится слово "КОСИ", т. е. четыре символа, начиная с седьмого исходной строковой переменной.
Используя эти функции для начала можно с их помощью поиграть в игру "Наборщик", когда из букв, составляющих какое-либо слово, нужно составить другие слова. Для этого предназначена функция конкатенации или, по-простому, слияния, которая записывается просто знаком +. Например:
CLS
F$="ГАЗОНОКОСИЛЬЩИК"
W1$=MID$(F$, 4, 2)+RIGHT$(F$, 7)
W2$=MID$(F$, 4, 2)+LEFT$(F$, 2)
W3$=MID$(F$, 9, 1)+MID$(F$, 7, 2)+MID$(F$, 11, 2) +MID$ (F$, 7,2)
? Wl$
? W2$
? W3$
Выполните упражнения.
226. Определите, какие слова получатся в результате выполнения приведенной выше программы?
227. Напишите программу, которая выдаст на экран пять слов максимальной длины из слова "ЭЛЕКТРИЧЕСТВО". Побеждает тот, у кого сумма букв во всех словах наибольшая.
В качестве очередного примера приведем задачу подсчета слов во введенном тексте. Как известно, для компьютера словом является последовательность символов, заключенная в пробелы с двух сторон. Подчеркиваю, это не обязательно слово, в привычном для нас понимании, а любой набор символов, например, 45ро9) или ВАР56+УР47. Поэтому, в простейшем случае, подсчет количества слов во введенном тексте сводится к подсчету количества пробелов и добавлении к полученному значению единицы. (Почему так? Очень просто: слов два, а пробел между ними один; слов три — а пробелов два и т. д.) Получаем программу.
CLS
INPUT "Введите текст телеграммы"; W$
N=LEN(W$) : K=0
FOR 1=1 ТО N
P$=MID$(W$, I, 1)
IF P$=" " THEN K=K+1 NEXT I ? "В вашей телеграмме — "; K+l; "слов"
Программа работает очень просто. Она определяет длину текста в символах и заносит это число в переменную N. Затем устанавливает счетчику пробелов к нулевое значение. После чего, в цикле вырезает из текста последовательно по одному символу и проверяет, а не является ли он пробелом. Если это так, то увеличивает счетчик пробелов к на .единицу, а если нет — берет следующий символ. По завершении цикла в переменной к хранится количество пробелов в тексте, и мы выводим ответ о количестве слов на экран, добавляя к к еще единичку.
228. Используя пример с подсчетом слов в телеграмме, напишите программу, имитирующую отделение связи с очень хорошим обслуживанием. Программа должна выяснять имя клиента и в дальнейшем обращаться к нему только по имени. Запрашивается также регион, куда посылается телеграмма. Их три — Россия (коэффициент 1), страны СНГ (стоимость одного слова умножается на 2) и дальнее зарубежье (стоимость одного слова умножается на 5). По России стоимость одного слова составляет 1 руб. 50 коп. (причем неважно, какой длины слово). Затем у клиента запрашивается текст телеграммы и денежная сумма, определяется количество слов, стоимость телеграммы. Если денег ровно столько, сколько надо, его благодарят и прощаются. Если больше, чем надо, то ему предлагают сдачу и прощаются. Если — меньше, то просят добавить необходимую сумму, а затем, после расчета, с клиентом прощаются. А для пущей красо-
ты я обычно прошу нарисовать окошко телеграфа, в прорезях которого и происходит диалог компьютера с пользователем (Рисунок 1.65).