Семантика RUbasic

Семантика RUbasic

«Вообще же, всё написанное должно быть удобочитаемо и удобопонимаемо, а это — одно и то же.»
Аристотель. 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.

От А = 1 До 100 Шаг -1

Повтор

Вполне читаемо — вообще без комментариев.

Комментарии

Однако, комментарии в языке есть. Они начинаются символом «%» и продолжаются до конца строки. Например:

Пока А < 10  % до тех пор, пока А меньше 10

А = А + 1  % продолжаем увеличивать А на 1

Снова

Также возможно комментирование строки кода целиком для её «отключения»:

%Пока А < 10  % до тех пор, пока А меньше 10

Типы констант и переменных

В языке существует два типа неявных переменных и констант:

  • числовой
  • текстовая строка

Тип переменной задается неявно — по последнему присваиваему значению.

Числовые константы могут быть целыми или дробными: с десятичной дробной частью, отделяемой от целой части точкой («.»). Со знаком «+» или «-«, или без знака (положительные).

Примеры числовых констант.

123

-54

12.438

Текстовые строки представляют из себя строки символов, заключённые в двойные кавычки.

Примеры строковых констант:

      "" — пустая строка (строка нулевой длины)

      "А" — строка из одного символа

      "Мама мыла раму." — обычная строка

Возможно неявное автоматическое преобразование строки в число, если строка — по сути текстовая запись числа.

"145763" — это то же самое, что и 145763.

Нечисловые строки в арифметических операциях интерпретируются как нулевые значения.

Для того чтобы получить число можно использовать арифметическую операцию, гарантирующую числовой результат:

Б = А - 0

Здесь результат (значение переменной Б) в любом случае (даже если переменная А — не числового типа) будет числовым.

А для гарантии сохранения строкового значения можно использовать, например, функцию склейки двух строк:

         А = Текст.Сцепить("12","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 + Б) позволяет ввести символ «<«

 

Поделиться: 

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать rubasic.ru, вы соглашаетесь на использование файлов cookie.
Понятно