СПО в российских школах

Команда ALT Linux рассказывает о внедрении свободного программного обеспечения в школах России
Февраль 11, 2011

BASIC-256. Глава 15

Методические материалы
Автор: Владимир Черный

Продолжаем публиковать перевод книги Джеймса Рено. Эту главу перевел Владимир Черный.
Оглавление:

Где взять BASIC-256

Глава 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

Windows версия
http://basic256.org (http://www.sourceforge.net/projects/kidbasic)

Как установить BASIC-256 в Linux

Для Альт Линукс: настроить репозиторий и обновить/установить пакет через synaptic или apt
Для rpm-based дистрибутивов: rpm -Uvh <имя_пакета>.rpm

Комментарии (2) к “BASIC-256. Глава 15”

  1. Огромное спасибо за перевод книги. Учителя информатики Вам благодарны. С нетерпением ждем окончания перевода.

  2. Владимир Черный говорит:
    Февраль 14, 2011, 12:05 пп

    Владимир! Осталось всего 5 глав. Собственно текст давно переведен, а когда выкладывается идет коррекция. Так что недолго посчитать по пятницам когда будет окончание. Постараюсь к этому времени сделать и pdf книги.

Оставьте комментарий