Мы принципиально переосмыслили понятие такого элемента языка RUbasic как “Функция”.
Идея вот в чем:
Функция может быть процедурой (подпрограммой), если она объявляется без скобок и параметров. При этом ей не передаются параметры (что логично), она не использует свои собственные локальные переменные (все переменные остаются глобальными), и не может возвращать значения. То есть, по сути это макрос: вставка фрагмента кода, записанного в теле функции, в то место, где указан вызов функции по имени:
Функция Победа ' здесь функция объявлена без скобок и параметров.
Консоль.ПечатьСтроки("Выигрыш!")
Возврат
Вызов функции “Победа” в самой программе:
Победа() ' в это место будет просто подставлен код из тела функции
То есть текст “Победа()” будет заменен на “Консоль.ПечатьСтроки(“Выигрыш!”)”. И всё.
Функция Моя_функция()
То она становится полноценной обособленной функцией: с передаваемыми параметрами, со своими локальными (видимыми только внутри нее переменными), с возвращаемым значением.
При этом, если мы передаем в функцию значения переменных в виде параметров и функция их изменяет, то в самой программе эти переменные тоже изменяются. Таким образом, единственными переменными, которые могут быть изменены функцией (которые связывают её с основной программой), являются её параметры и возвращаемое значение. Если нужно, чтобы функция изменила значение какой-то переменной, её нужно передать в параметрах при вызове.
Параметрами функции при вызове могут быть либо константы, либо переменные, но не выражения (по крайней мере, пока).
Функция Моя_функция(А, Б, Ц)
... ' какой-то код
Возврат Д
И её вызов в программе:
Л = Моя_функция(Р, С, Т)
Теперь мы получаем полноценную функцию как, например, в С++, пользоваться которой гораздо удобнее и проще.
В настоящее время мы заняты переводом на русский язык библиотеки для роботов Lego – EV3 Basic для проекта MS Small Basic по-русски и интеграцией функционала этой библиотеки с RUbasic.
А также сейчас идет работа над упрощенной версией RUbasic.
Поделиться: