Дневник разработки 17.01.2021

Дневник разработки 17.01.2021

Мы принципиально переосмыслили понятие такого элемента языка RUbasic как «Функция».

Идея вот в чем:

Функция может быть процедурой (подпрограммой), если она объявляется без скобок и параметров. При этом ей не передаются параметры (что логично), она не использует свои собственные локальные переменные (все переменные остаются глобальными), и не может возвращать значения. То есть, по сути это макрос: вставка фрагмента кода, записанного в теле функции, в то место, где указан вызов функции по имени:

Функция Победа ' здесь функция объявлена без скобок и параметров.

Консоль.ПечатьСтроки("Выигрыш!")

Возврат

Вызов функции «Победа» в самой программе:

Победа() '  в это место будет просто подставлен код из тела функции

То есть текст «Победа()» будет заменен на «Консоль.ПечатьСтроки(«Выигрыш!»)». И всё.

Но если функция объявлена со скобками, вот так:

Функция Моя_функция()

То она становится полноценной обособленной функцией: с передаваемыми параметрами, со своими локальными (видимыми только внутри нее переменными), с возвращаемым значением.

При этом, если мы передаем в функцию значения переменных в виде параметров и функция их изменяет, то в самой программе эти переменные тоже изменяются. Таким образом, единственными переменными, которые могут быть изменены функцией (которые связывают  её с основной программой), являются её параметры и возвращаемое значение. Если нужно, чтобы функция изменила значение какой-то переменной, её нужно передать в параметрах при вызове.

Параметрами функции при вызове могут быть либо константы, либо переменные, но не выражения (по крайней мере, пока).

Функция Моя_функция(А, Б, Ц)

... ' какой-то код

Возврат Д

И её вызов в программе:

Л = Моя_функция(Р, С, Т)

Теперь мы получаем полноценную функцию как, например, в С++, пользоваться которой гораздо удобнее и проще.

В настоящее время мы заняты переводом на русский язык библиотеки для роботов Lego — EV3 Basic для проекта MS Small Basic по-русски и интеграцией функционала этой библиотеки с RUbasic.

А также сейчас идет работа над упрощенной версией RUbasic.

Поделиться: 

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