Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Обработка символьной информации
Кроме числовых значений переменные в Бейсике могут принимать значения в виде строки символов. Символьные значения (константы) заключаются в кавычки " ". Имя символьной (строковой) переменной отличается от обычной числовой переменной добавлением справа специального символа, чаще знака доллара $, например, AS, Fl$, MaxS. Над символьными переменными допустима операция сложения (склейка строк символов); могут быть использованы функции и процедуры обработки символьных величин. Начнем с примеров программ, аналогичных приведенным ранее на языке Паскаль. Программа 68 (см. программу 11) 10 ' ******* Количество гласных в тексте ************ 20 с$ = "аеиоуыэюяАЕИОУЫЭЮЯ" 30 INPUT "Введите текст"; а$ 40 n» О 50 FOR k = 1 ТО LEN(c$) 6t> b$ = MID$(c$, k, 1) 70 FOR i = 1 TO LEN(a$) 80 IF b$ = MID$(a$, i, 1) THEN n = n + 1 90 NEXT i 100 NEXT k 110 PRINT "Количество гласных равно", n 120 END Здесь использована строковая функция MID(a$,ij) - вырезка подстроки из строки а$, где первый аргумент - исходная строка, второй - начальная позиция подстроки, третий - длина подстроки. Функция LEN(aS) - длина текста. В следующей программе дополнительно использованы строковые функции LEFT$(a$,i) - выделение подстроки длиной i от левого края заданной строки и RIGHT$(a$,i) - то же, но с правого края. Программа 69 (см. программу 12) 10 ' ******* Замена в тексте sqr на ехр ************ 20 INPUT "Введите текст"; а$ 30 FOR i = 1 ТО LEN(a$) - 2 40 IF MID$(a$, i, 3) О "THEN GOTO 60 50 a$ = LEFT$(a$, i -1) + "+ RIGHT$(a$, LEN(a$) - i - 2) 60 NEXT i 70 PRINT a$ 80 END Приведем еще несколько примеров. Программа 70 10 ' ******* игра клавиатурный тренажер ************ 12 DATA "азбука", "год",".23*45/56", letter, pc-ibm 15 DATA "дом-home", "Красноярск", "Омск", "Пермь", "Воронеж" 20 FOR i = 1 ТО 10 30 READ a$(i) 40 NEXT i 60 FOR i = 1 TO 10 70 CLS: PRINT: PRINT TAB(IO); a$(i); 100 PRINT: PRINT: PRINT 110 PRINT "введите слово и нажмите <ВК>"; 120 LOCATE 8, 5: х» TIMER: INPUT b$: CLS 130 у = TIMER: PRINT: n =LEN(a$(i)) 140 IF a$(i) <> b$ THEN 190 150 PRINT USING "###.#<"; (y - x) / П; 160 PRINT "сек. на один символ": GOTO 200 170 PRINT: PRINT "слово набрано неверно" 180 FOR m = 1 ТО 5000: NEXT m 190 NEXT i Функция TIMER возвращает текущее время системной среды в секундах. В строке 180 предусмотрен пустой цикл для осуществления временной задержки в исполнении программы. Использование функций LEFTS(aS,n) и MID$(a$,n,k) еще раз продемонстрировано в следующем примере. Здесь же использованы математические функции INT(x) -целая часть числа х, RND(x) - случайное число в интервале от 0 до 1. В программе задается массив (оператор DIM aS(k)) из пяти слов, представленных в списке DATA (30 и 40 строки). Случайным образом выбирается одно из них и предлагается его угадать вводом подходящих символов.
Программа 71 5 ' *************** угадай слово ********************* 10 k = 5 15 DIM a$(k) 30 DATA "вечер","информатика","университет" 40 DATA "эхо","тра-ля-ля" 50 FOR i = 1 ТО k 60 READ a$ (i) 70 NEXT i 80 CLS 90 r = INT(k * RND(-TIMER)) + 1 100 n = LEN(a$(r)) 110 PRINT "Я задумал слово из "; n; "букв" 120 LOCATE 5, 20: PRINT LEFT$(s$, n) Ш 130 t = о т 140 DO • 150 LOCATE 8, 12: PRINT "введи букву" Щ 160 INPUT h$ 170 у = О 180 FOR i = 1 ТО n ] 190 IF h$ = MID$(a$(r), i, 1) THEN | 200 LOCATE 5, 19 + i: PRINT h$: | 210 t=t+l:y=l | 220 END IF | 230 NEXT i 240 LOCATE 8, 12: PRINT " " 250 IF у О 1 THEN LOCATE,10, 15: PRINT "нет такой буквы" 260 FOR m = 1 ТО 5000: NEXT m 270 LOCATE 10, 15: PRINT " " | 280 LOOP WHILE t 0 n I 290 LOCATE 13, 13: PRINT "угадал, поздравляю!" f Обратим внимание на использованный в данной программе цикл DO-LOOP-WHILE, который допустим в некоторых версиях Бейсика (QBASIC, Turbo-BASIC).
Контрольные вопросы и задания 1. Охарактеризуйте использованные выше строковые функции.
Date: 2015-11-13; view: 390; Нарушение авторских прав |