BASIC-256. Глава 15
Методические материалыАвтор: Владимир Черный
Продолжаем публиковать перевод книги Джеймса Рено. Эту главу перевел Владимир Черный.
Оглавление:
- Глава 1: Знакомство с BASIC-256 – cкажи «Привет»
- Глава 2: Рисуем основные фигуры
- Глава 3: Звуки и музыка
- Глава 4: Мыслить как программист
- Глава 5: Программа задает вам вопросы
- Глава 6: Сравнения, сравнения, сравнения
- Глава 7: Циклы и счетчики — повторяем снова и снова
- Глава 8: Графика на заказ — создание фигур своими руками
- Глава 9: Подпрограммы — повторное использование кода
- Глава 10: Управляем мышкой, перемещаем объекты
- Глава 11: Использование клавиатуры для управления программой
- Глава 12: Картинки, музыка и спрайты
- Глава 13 Массивы — коллекции данных
- Глава 14 Математика — развлечемся с числами
Глава 15 Работаем со строками
Мы использовали строки, чтобы хранить нечисловую информацию, формировать вывод на экран и получать вводимые пользователем символы. В главе 11 мы использовали Unicode значения отдельных символов для построения строк.
В этой главе мы узнаем несколько новых функций для действий со строками.
Строковые функции
BASIC-256 имеет восемь стандартных функций для преобразования строк, которые собраны в таблице 7
Функция | Описание |
---|---|
string(выражение) | приводит выражение (строковое или целое или дробь) к строке |
length(строка) | возвращает длину строки |
left(строка, длина) | возвращает часть строки заданной длины, отсчитывая слева |
right(строка, длина) | возвращает часть строки заданной длины, отсчитывая справа |
mid(строка, начало, длина) | возвращает среднюю часть строки заданной длины от позиции начало |
upper(выражение) | Возвращает строку в верхнем регистре (заглавные буквы) |
lower(выражение) | Возвращает строку в нижнем регистре (строчные буквы) |
instr(стог, иголка) | Ищет иголку в стоге (сена) и возвращает ее позицию. |
Функция string()
Функция string() берет выражение в любом формате и преобразовывает его в строку. Она очень удобна для преобразования целых или дробных чисел в символы так, что с ними можно работать как со строками.
1 # string.kbs
2 a$ = string(10 + 13)
3 print a$
4 b$ = string(2 * pi)
5 print b$
Программа 84 Функция string()
23
6,283185
Пример вывода программы 84 Функция string()
string(выражение) Преобразует выражение (строку, целое или дробное число) в строку |
Функция length()
Функция length() возвращает количество символов (букв, знаков) входящих в строку.
1 # length.kbs
2 # печатает 7, 0, и 22
3 print length("Привет!")
4 print length("")
5 print length("Программировать круто!")
Программа 85 Функция length()
7
0
22
Вывод программы 85 Функция length()
length(выражение)
Принимает строковое выражение и возвращает его длину. Для пустой строки ("") возвращает нуль (0). |
Функции left(), right() и mid()
Функции left(), right() и mid() извлекают из строки определенную подстроку (часть строки).
1 # leftrightmid.kbs
2 a$ = "автомашина"
3 # печатает "авто"
4 print left(a$,4)
5 # печатает "на"
6 print right(a$,2)
7 # печатает "маш" и "шина"
8 print mid(a$,5,3)
9 print mid(a$,7,9)
Программа 86 Функции left(), right() и mid()
авто
на
маш
шина
Пример вывода программы 86 Функции left(), right() и mid()
left(строка, длина)
Возвращает подстроку заданной длины, начиная слева. Если длина равна или больше длины переменной строка, то только строка и будет возвращена. |
right(строка, длина)
Возвращает подстроку заданной длины, начиная справа. Если длина равна или больше длины переменной строка, то только строка и будет возвращена. |
mid(строка, начало, длина)
Возвращает подстроку заданной длины переменной строка из ее середины. Параметр начало указывает, где эта подстрока должна начаться (1 = начало строки)1 |
Функции upper() и lower()
Функции upper() и lower() просто возвращают строку состоящую из заглавных (upper) или строчных (lower) букв. Эти функции наиболее полезны, когда надо сравнить значения двух строк и вам не важно в каком регистре они написаны.
1 # upperlower.kbs
2 a$ = "Привет!"
3 # печатает "привет!"
4 print lower(a$)
5 # печатает "ПРИВЕТ!"
6 print upper(a$)
Программа 87 Функции upper() и lower()
привет!
ПРИВЕТ!
Пример вывода программы 87 Функции upper() и lower()2
lower(строка) upper(строка) Возвращает копию переменной строка, в которой все символы заменены на строчные (lower) или заглавные (upper) буквы. Остальные (не буквы) символы возвращаются без изменений. |
Функция instr()
Функция instr() ищет первое вхождение подстроки в заданную строку и возвращает местоположение первого символа подстроки в строке. Если подстрока отсутствует в строке, возвращается нуль (0).
1 # instr.kbs
2 a$ = "автомашина"
3 # ищем подстроку "шина"
4 print instr(a$,"шина")
5 # ищем подстроку "колесо"
6 print instr(a$,"колесо")
Программа 88 Функция instr()
7
0
Пример вывода программы 88 Функция instr()
instr(стог_сена, иголка) Ищет подстроку (иголка) в другой строке (стог_сена). Возвращает позицию первого символа подстроки. Если подстрока не найдена, возвращает нуль (0). |
Десятичная система счисления (по основанию 10), используемая наиболее часто, использует цифры от 0 до 9 для записи чисел. А теперь, давайте представим, что случится, если у нас будет только 5 цифр от 0 до 4. В этом случае число 23 (23=2*101+3*100) станет 43 (4*51+3*50), но будет представлять одно и то же количество предметов. Такое преобразование чисел называется сменой основания системы счисления. Компьютер, в своем внутреннем устройстве, не использует и не понимает числа по основанию 10, он преобразует все числа в двоичную систему (по основанию 2) и их он хранит в памяти и с ними только оперирует. «Большая программа» этой главы преобразует (конвертирует) положительные целые числа из одной системы счисления в интервале от 2 до 36 в любую другую. В качестве цифр от 11-ой до 36-ой используются заглавные буквы английского алфавита.3 |
1 # radix.kbs
2 # преобразование чисел из одного основания (2-36) в другое
3
4 digits$ = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
5
6 message$ = "из основания"
7 gosub getbase
8 frombase = base
9
10 input "число по основанию " + frombase + " >", number$
11 number$ = upper(number$)
12
13 # преобразуем число в десятичную систему (основание 10) и сохраняем его в переменной n
14 n = 0
15 for i = 1 to length(number$)
16 n = n * frombase
17 n = n + instr(digits$, mid(number$, i, 1)) - 1
18 next i
19
20 message$ = "в основание"
21 gosub getbase
22 tobase = base
23
24 # строим строку в tobase
25 result$ = ""
26 while n <> 0
27 result$ = mid(digits$, n % tobase + 1, 1) + result$
28 n = n \ tobase
29 end while
30
31 print "по основанию " + tobase + " это число равно " + result$
32 end
33
34 getbase: # получение основания от 2 до 36
35 do
36 input message$+"> ", base
37 until base >= 2 and base <= 36
38 return
Программа 89. Большая программа – Смена основания системы счисления
из основания> 10
число по основанию 10, >999
в основание> 16
по основанию 16, это число равно 3E7
Пример вывода программы 89 Большая программа — Смена основания системы счисления
---------------------------------------------------
1Если сумма параметров начало+длина больше, чем длина строки, то вернется только часть строки от места начало до конца строки, что и показано в последнем выводе программы 86. (прим. редактора)
2Если у вас эти функции не работают с русскими буквами - обновите BASIC-256 (прим. редактора).
3Как известно, в английском алфавите ровно 26 букв. A означает «цифру» 10, B – 12 и т. д. Наиболее известна в среде программистов шестнадцатеричная система счисления, где цифрами от 10 до 15 являются буквы от A до F
Где скачать BASIC-256:
Для дистрибутивов ALT Linux
- ветка 4.0 basic256-0.9.6-alt5.M40.1.i586.rpm
- ветка 4.1 basic256-0.9.6-alt5.M41.1.i586.rpm
- ветка p5 basic256-0.9.6-alt5.M50P.1.i586.rpm
- ветка 5.1 basic256-0.9.6-alt5.M51.1.i586.rpm
Windows версия
http://basic256.org (http://www.sourceforge.net/projects/kidbasic)
Как установить BASIC-256 в Linux
Для Альт Линукс: настроить репозиторий и обновить/установить пакет через synaptic или apt
Для rpm-based дистрибутивов: rpm -Uvh <имя_пакета>.rpm
Февраль 11, 2011, 9:25 пп
Огромное спасибо за перевод книги. Учителя информатики Вам благодарны. С нетерпением ждем окончания перевода.
Февраль 14, 2011, 12:05 пп
Владимир! Осталось всего 5 глав. Собственно текст давно переведен, а когда выкладывается идет коррекция. Так что недолго посчитать по пятницам когда будет окончание. Постараюсь к этому времени сделать и pdf книги.