
«Вообще же, всё написанное должно быть удобочитаемо и удобопонимаемо, а это — одно и то же.»
Аристотель. IV век до н.э.
Базовая семантика любого русскоязычного языка программирования — это всегда «песня». Правда, песня — всегда разная. Иногда это песня программы автоматического перевода, и тогда элементарный оператор цикла со счетчиком превращается в трудновоспринимаемое по смыслу слово «ДЛЯ», которое в русском языке имеет не тот же самый смысл, что его английский первоисточник «For», иногда это песня неких академиков-программистов, помешанных на сокращениях и аббревиатурах, и тогда возникают такие перлы как «КНЦ», «ФУН», «ЦЕЛ», «ТАБ», «АЛГ», «НЦ», «КЦ», и другие, очень напоминающие эпистолярные шедевры разработчиков приборных панелей истребителей и эсминцев, и совершенно непонятные для простых смертных.
Но у нас-то задача — не предоставить тупым военнослужащим краткий, как выстрел, и ёмкий, как солдатский котелок, интерфейс взаимодействия с боеголовкой, а обеспечить детей и других учащихся таким набором команд, который бы легко читался, понимался и был прост в написании. То есть, команды должны быть короткими, читаемыми и понятными. И разумеется, никаких сокращений или аббревиатур.
Семантика английских языков программирования уже давно устоялась. Хоть в Algol’е, хоть в C++, хоть в Pascal’е операторы совершенно одинаковы: if, for, while, sub, print и т.п. — коротко и ясно… для любого англичанина или американца. А вот для всех остальных начинаются «трудности перевода»: для простого восприятия текстов программ на этих языках необходимо знать (именно знать!) английский язык. И куда, в таком случае, деваться всем остальным, кто английского в должном объеме не знает? Английский учить, а с программированием пока подождать? Или тупо зубрить английские команды, не понимая их значения, как ученый попугай?
Вот пример фрагмента программы:public TokenEnumerator GetTokenList(string lineText, int lineNumber){
if (lineText == null){
throw new ArgumentNullException("lineText");}
Возьмите любого русского школьника из обычной средней школы или студента, не программиста, и попросите прочитать и понять эти строки. Сможет? Нет! А ведь тут все очень корректно написано — так, чтобы читать этот код без комментариев. И такая проблема стоит не только в России: в мире масса стран, где английский — даже не второй по распространенности: абсолютное большинство населения его просто не знает — вообще.
А теперь о приятном. В результате довольно большой и сложной работы у нас получился довольно простой, понятный и лаконичный язык программирования, содержащий всего 14 ключевых слов, на которых можно построить любой алгоритм и логику программы. Они и составляют основу RUbasic’а.
Ключевые слова RUbasic
Функция — оператор, задающий имя подпрограммы-функции и определяющий начало блока операторов этой функции.
Возврат — оператор, определяющий конец блока операторов функции, точка возврата в основную программу или в иную точку вызова данной функции.
Если — оператор условного перехода. Задает условие для проверки.
То — вторая часть оператора условного перехода, стоящая после проверяемого условия и начинающая блок операторов, выполняемых в случае, если условие верно.
Иначе — необязательная часть оператора условного перехода, начинающая блок операторов, выполняемых в случае, если проверяемое условие неверно.
АЕсли — необязательная часть оператора условного перехода. Задает дополнительное условие для проверки в случае, если начальное условие неверно.
Дальше — оператор, определяющий конец блока операторов условного перехода, точка дальнейшего выполнения программы.
От — оператор цикла со счетчиком. Задает переменную цикла (счетчик) и ее начальное значение.
До — часть оператора цикла со счетчиком. Задает конечное значение переменной цикла и начинает блок операторов, выполняемых в цикле.
Шаг — необязательная часть оператора цикла со счетчиком. Задает шаг изменения значения переменной цикла. При отсутствии шаг изменения значения переменной цикла равен 1.
Повтор — оператор, определяющий конец блока операторов цикла со счетчиком, точка возврата к началу блока для повтора.
Пока — оператор цикла с условием. Начинает блок операторов, выполняемых в цикле, если проверяемое условие верно.
Снова — оператор, определяющий конец блока операторов цикла с условием, точка возврата к началу блока для повтора.
Переход — оператор безусловного перехода к строке с меткой. Предполагает наличие в тексте программы указанной метки.
ИЛИ — логическое «ИЛИ» для условных операторов.
И — логическое «И» для условных операторов.
Примеры построения конструкций языка
Перекрашиваем кошку. Если кошка черная или белая, красим ее в зеленый, если серая, — в желтый, а если какая-то другая, то в красный.
Если цвет_кошки = "черный" ИЛИ цвет_кошки = "белый" То
цвет_кошки = "зеленый"
АЕсли цвет_кошки = "серый" То
цвет_кошки = "желтый"
Иначе
цвет_кошки = "красный"
Дальше
Просто считаем от 100 до 1 в обратном порядке. На каждом шаге из значения переменной А вычитается 1.
От А = 100 До 1 Шаг -1
Повтор
Вполне читаемо — вообще без комментариев.
Комментарии
Однако, комментарии в языке есть. Они начинаются символом «%» и продолжаются до конца строки. Например:
Пока А < 10 % до тех пор, пока А меньше 10
А = А + 1 % продолжаем увеличивать А на 1
Снова
Также возможно комментирование строки кода целиком для её «отключения»:
%Пока А < 10 % до тех пор, пока А меньше 10
Типы констант и переменных
В языке существует два типа неявных переменных и констант:
- числовой
- текстовая строка
Тип переменной задается неявно — по последнему присваиваему значению.
Числовые константы могут быть целыми или дробными: с десятичной дробной частью, отделяемой от целой части точкой («.»). Со знаком «+» или «-«, или без знака (положительные).
Примеры числовых констант.
123
-54
12.438
Текстовые строки представляют из себя строки символов, заключённые в двойные кавычки.
Примеры строковых констант:
""
— пустая строка (строка нулевой длины)
"А"
— строка из одного символа
"Мама мыла раму."
— обычная строка
Возможно неявное автоматическое преобразование строки в число, если строка — по сути текстовая запись числа.
"145763"
— это то же самое, что и 145763
.
Нечисловые строки в арифметических операциях интерпретируются как нулевые значения.
Для того чтобы получить число можно использовать арифметическую операцию, гарантирующую числовой результат:
Б = А - 0
Здесь результат (значение переменной Б) в любом случае (даже если переменная А — не числового типа) будет числовым.
А для гарантии сохранения строкового значения можно использовать, например, функцию склейки двух строк, одна из которых пустая:
А = Текст.Сцепить("","345")
Результат (значение переменной А) в данном примере обязательно будет строковым.
Следует отметить, что операция склейки двух строк с помощью знака «+» склеивает только те строки, которые не могут быть интерпретированы как числа, а числа она складывает по правилам арифметики — всегда, когда их можно сложить. Остальные арифметические операции — работают только с числами.
Имена функций и переменных
Имена функций и переменных могут содержать любые буквы и цифры и знак подчеркивания. Никаких других символов они содержать не могут. Также, имена функций и переменных не могут начинаться с цифры и не могут совпадать с ключевыми словами RUbasic, именами объектов и классов, их функций, свойств и событий.
Примеры верных имён:
Собака12
ОбъёмВоды
_цвет_фона3
Моя_Переменная
Примеры неверных имён:
переменная№3
— неверное имя, содержит недопустимый символ номера.
1пёс
— неверное имя, начинается с цифры.
количество собак
— неверное имя, содержит недопустимый символ — пробел.
Экран
— неверное имя, это объект RUbasic.
Массивы
Массивы задаются именем самого массива и значением индекса. Индексы массивов — целочисленные и могут начинаться с любого числа, желательно начинать индексацию массива с 0 или с 1. Размеры массивов — динамические, при необходимости возможна вставка и удаление элементов.
Пример обращения к массиву:
От к = 1 До 10
деталь[к] = "Вал № " + к
Повтор
В результате выполнения этого кода в массив с именем «деталь» будут записаны следующие строки:
«Вал № 1»
«Вал № 2»
«Вал № 3»
. . .
«Вал № 10»
В Среде программирования RUbasic для ввода символов «[» и «]» без переключения на английскую раскладку клавиатуры используется клавиша «Ctrl» в комбинации с соответствующей клавишей:
Комбинация «Ctrl + [» (Ctrl + Х) позволяет ввести символ «[«
Комбинация «Ctrl + ]» (Ctrl + Ъ) позволяет ввести «]«
Оператор присваивания
Оператор присваивания обозначается символом равно («=«) после имени переменной, которой присваивается значение. В левой части может стоять только переменная, в правой: константа, переменная, выражение или функция, возвращающая значение.
С = "слово"
Торт = 12
а = б + 4
Операции сравнения
Операции сравнения используются в операторах условного перехода и циклах с условием. Они обозначаются знаками:
> — больше
< — меньше
= — равно
>= — больше или равно
<= — меньше или равно
<> или >< — не равно.
Для их ввода на русской клавиатуре предусмотрены специальные комбинации.
Для строковых переменных или констант допустимы только операции равно («=«) и не равно(«<>«/»><«).
В Среде программирования RUbasic для ввода символов «>» и «<» без переключения на английскую раскладку клавиатуры используется клавиша «Ctrl» в комбинации с соответствующей клавишей:
Комбинация «Ctrl + >» (Ctrl + Ю) позволяет ввести символ «>«
Комбинация «Ctrl + <» (Ctrl + Б) позволяет ввести символ «<«
Для объединения нескольких проверяемых условий используются условные операторы И и ИЛИ.
Дополнительные замечания
Для строкового типа переопределена операция сложения, при выполнении которой происходит слияние (склейка) двух строк в одну.
Эквивалентность записи:
- константа
- переменная
- возвращаемое функцией значение
- математическое выражение
Там, где может стоять константа соответствующего типа, может стоять и все остальное из вышеперечисленного, при условии сохранения типа.
Большие и маленькие буквы не различаются и, следовательно, почти весь программный код можно писать без использования клавиши Shift.
В Среде программирования RUbasic для ввода символов «[» и «]» без переключения на английскую раскладку клавиатуры используется клавиша «Ctrl» в комбинации с соответствующей клавишей:
Комбинация «Ctrl + [» (Ctrl + Х) позволяет ввести символ «[«
Комбинация «Ctrl + ]» (Ctrl + Ъ) позволяет ввести символ «]«
Также в Среде программирования RUbasic для ввода символов «>» и «<» без переключения на английскую раскладку клавиатуры используется клавиша «Ctrl» в комбинации с соответствующей клавишей:
Комбинация «Ctrl + >» (Ctrl + Ю) позволяет ввести символ «>«
Комбинация «Ctrl + <» (Ctrl + Б) позволяет ввести символ «<«
Поделиться: