• Всякая магия перестаёт существовать после того, как вы понимаете, как она на самом деле работает.

Краткое введение в MS Small Basic

Microsoft Small Basic имеет очень простую структуру. В нем всего 14 ключевых слов, которые обеспечивают алгоритмическую структуру программы. Весь основной функционал и возможности взаимодействия программ с «окружающим миром» — «спрятаны» в объектах, которые находятся в библиотеках расширений.

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

TextWindow    TEXTWINDOW    textwindow    TeXtWiNdOw

и обозначают одно и то же имя класса TextWindow. То же самое касается любых имен и ключевых слов MS Small Basic: если в тексте программы встретятся переменные с именами Var, VAR и var они будут восприняты как одна и та же переменная.

Исключение составляет онлайн среда программирования Small Basic, в которой присутствует явная регистрозависимость, что, вероятно, обусловлено платформой MS Azure, на которой она реализована.

Элементы языка программирования MS Small Basic структурированы следующим образом:

Объекты

Объекты Элементы языка программирования, очень похожие на реальные объекты окружающего мира. У объектов есть  Свойства, они могут реагировать на События и использовать для выполнения каких-либо действий Методы.

Свойства Объектов

Свойства объектов — это переменные, которые определяют вид или поведение своих объектов.

События Объектов

Возникают в процессе выполнения программы в связи с какими-то внешними действиями (нажатие клавиш клавиатуры, мыши,  и т.д.) и используются для реакции объектов на эти действия.

Методы Объектов

Действия, которые могут выполнять сами объекты, их функции.

Ключевые слова

Основа языка. Обеспечивают всю алгоритмическую логику языка. Не принадлежат к Объектам.

Кроме Ключевых слов основу языка MS Small Basic составляют:

  • Переменные
  • Константы
  • Операции
  • Комментарии

При написании программ на языке Small Basic для работы с объектами необходимо вначале указывать имя объекта, а затем, через точку — как вы хотите его использовать: изменить свойства, назначить обработчик события или выполнить какое-то действие, используя методы данного объекта. Это правило не относится к работе с ключевыми словами и переменными.

Примеры написания кода на языке Small Basic:

GraphicsWindow.CanResize = "False" — установка свойства графического окна (GraphicsWindow), запрещающего изменение его размера;

GraphicsWindow.MouseMove = Move — объявление подпрограммы — обработчика события с именем Move, которая будет выполнена после движения мышкой в графическом окне (GraphicsWindow);

GraphicsWindow.DrawRectangle(x, y, ширина, высота) — операция рисования в графическом окне (GraphicsWindow) прямоугольника с начальной точкой, имеющей координаты x, y и заданными шириной и высотой.

Комментарии

Для того чтобы облегчить понимание программы следует добавлять к её исходному коду комментарии. В Small Basic можно добавлять комментарии с помощью знака апострофа (‘) в начале строки комментария. знак комментария можно использовать в любом месте программы: в самом начале любой строки или где-то в середине. Всё, что записано после этого символа и до конца строки (до перехода на новую строку) — считается комментарием и игнорируется при компиляции программы. Исключение составляет только использование этого символа внутри текстовой строки: " ' " — здесь он не будет работать как знак комментария, а будет просто воспринят компилятором как текстовый символ апострофа.

' - Таким символом в MS Small Basic задаетсz комментарий к программе

for a = 1 to 100 ' цикл от 1 до 100

Кстати, с помощью комментариев можно «выключать» части программы при отладке. Про такие строки в программе говорят, что они «закомментированы».

i = 5 ' эта строка будет выполнена

'k = i ' эта строка выполняться не будет - она закомментирована

k = i + 8 ' эта строка будет выполнена

Использование переменных

Переменная в программировании — это область памяти с именем, в которую можно программно записывать разные значения. Содержимое этой области памяти — это и есть текущее значение данной переменной. Для использования переменной в программе её необходимо сначала (явно или неявно) объявить: дать ей имя (её «идентификатор») и задать её тип. Тип переменной определяет, какие возможные значения она может принимать и какие операции с ней можно выполнять. Соответствие типа переменной и её использования проверяется во время компиляции программы. В Small Basic существует два типа данных:

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

Вы можете давать переменным практически любые имена, но лучше всего давать им такие имена, которые позволяли бы понять, что именно в них хранится. Например, переменной, предназначенной для сохранения номера телефона, можно дать имя «PhoneNumber».

Вы можете давать переменным максимально описательные имена, однако, не стоит забывать о том, что каждый язык программирования налагает определенные ограничения на создание имен переменных. Например, для языка программирования Small Basic характерны следующий правила создания имен переменных:

  • Имя переменной не может начинаться с цифры.
  • Имя переменной может содержать только буквы, цифры и знак подчёркивания.
  • Два разных имени переменных обозначают две разных переменных. Одинаковые имена обозначают одну и ту же переменную.
  • В качестве имен переменных нельзя использовать зарезервированные ключевые слова Small Basic, имена классов, свойств, методов и т.п.

В приведенном ниже примере используются две переменные. Одна переменная (Salary) используется для сохранения данных, представляющих заработок пользователя, а вторая (TaxOwed) — результатов определенных вычислений:

'Программа расчёта налога

Salary = 25000

TaxOwed = Salary * 0.95 'Налог = 5%

TextWindow.Writeline ("После уплаты налога вы получите " + TaxOwed + " руб.")

Объявление переменных

В отличие от большинства современных языков программирования, MS Small Basic позволяет создавать и использовать переменные в любом месте программы и не требует какого-либо специального объявления их типов. Более того, в зависимости от содержимого тип переменной в процессе работы программы может изменяться. Фактически, в Small Basic существует некий универсальный тип переменных, который автоматически «подстраивается» под те данные, которые в эти переменные записываются в процессе работы программы.

Присваивание переменной значения

Переменные используются для хранения данных во время работы программы. Операция записи данных в ячейку памяти, соответствующую данному имени переменной называется операцией присваивания (или просто «присваисванием») этой переменной определённого значения. В MS Small Basic переменные содержат значение 0 или «» (пустая строка) до тех пор, пока вы не присвоите им определенное значение. То есть, MS Small Basic в принципе позволяет использовать переменные до того, как им были присвоены значения, однако, с точки зрения программирования это — очень серьёзная ошибка, потому что вы никогда не можете знать наверняка, что же находится в переменной до первого присваивания ей значения. Так как основным назначением переменной является хранение данных, вы можете присвоить переменной значение следующим способом:

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

Присваивание фиксированного значения

Простейший способ присвоить переменной определенное значение — использовать знак равенства (оператор присваивания) между именем переменной и этим значением. Этот метод позволяет присвоить переменной числовое или строковое значение, как показано в следующем примере:

Salary2 = 9000000

Message = "Я очень хотел бы стать действительно хорошим программистом."

В первой строке вы присваиваете переменной Salary2 числовое значение 9000000. Во второй строке вы присваиваете переменной Message значение «Я очень хотел бы стать действительно хорошим программистом.». Такие фиксированные значения, записанные напрямую как числа или строки символов называются в программировании Константами (от латинского «constans» — неизменный, постоянный).

Присваивание результатов

Если вы хотите сохранить в числовой переменной результат вычислений, просто присвойте ей значение математического выражения:

PersonlQ = BossIQ / 3

В этом примере программа делит на 3 значение переменной BossIQ и после этого записывает результат вычисления в переменную (говорят: «присваивает результат вычисления переменной») PersonlQ.

Если вам необходимо присвоить переменной текстовое значение, можно поступить так:

Cry = "Я хочу есть"

NewCry = Cry + " пищу, которая очень вкусна."

В этом примере в первой строке переменной Cry напрямую присваивается значение, «Я хочу есть». Вторая строка создает новую переменную NewCry. Затем она объединяет значение переменной Сгу со строкой » пищу, которая очень вкусна.». Таким образом, переменная NewCry получает в качестве своего значения строку «Я хочу, есть пищу, которая очень вкусна.».

Некоторые методы классов (функции) могут после завершения своего выполнения создавать некоторые значения (обычно говорят, что метод или функция «возвращает значение»), которые можно получить, например, записав их в переменную, или сразу использовать в операциях, или использовать в качестве параметров других методов. Например:

string1 = TextWindow.Read() ' в переменную string1 записываем строку символов, введённую пользователем на клавиатуре в окне консоли, которую метод TextWindow.Read() возвращает в качестве результата своей работы

lin = a + Math.Sin(alpha) ' здесь в арифметическом выражении используется значение синуса угла alpha, которое возвращает метод Math.Sin()

TextWindow.WriteLine(Math.Sin(alpha)) ' здесь в качестве параметра метода TextWindow.WriteLine() используется значение, возвращаемое методом Math.Sin(alpha). В результате выполнения этой строки в консоли будет напечатано значение синуса угла alpha

Массивы

Microsoft Small Basic кроме одиночных переменных использует массивы, которые позволяют хранить много однотипных значений в оперативной памяти компьютера, используя одно общее имя для обращения к самому массиву и индексы для обращения к конкретным элементам массива. Массивы позволяют читать, записывать, добавлять и удалять элементы в произвольном порядке. Кроме того, массивы могут быть многомерными: количество индексов у каждого элемента может быть больше одного.

Простое обращение к элементам массива:

fruit[1] = "Яблоко" ' присваиваем первому элементу массива fruit значение "Яблоко"

fruit[2] = "Банан" ' присваиваем второму элементу массива fruit значение "Банан"

TextWindow.Writeline(fruit[1]) ' печатаем в консоли значение первого элемента массива - строку "Яблоко"

Для обращения к массивам поэлементно удобно использовать операторы цикла For или While. Для выполнения сложных операций с массивами (удаление элементов, определение размера и т.п.) используется класс Array стандартной библиотеки Small Basic.

Условные операторы

Все программы выполняются последовательно — в том порядке, в котором написаны операторы. Однако, это не всегда удобно. Очень часто возникает необходимость многократного повторения одного и того же фрагмента программы или обход какого-либо куска кода без выполнения в зависимости от значений переменных. Для этих целей используются операторы циклов и переходов.

Условные операторы — это очень важный элемент практически любой программы. С их помощью программа может «принимать решения». Прежде чем приступить к изучению условных операторов, необходимо узнать о логических понятиях «истина» и «ложь» в MS Small Basic.

Истина и ложь

В Small Basic понятия «истина» («True») и «ложь» («False») означают совсем не то же самое, что в обычной жизни. Для человека некоторые понятия могут быть частично истинными, а для компьютера любое утверждение — либо истина, либо ложь (без промежуточных вариантов: либо 0, либо 1). Значения частей одного логического выражения (утверждения) могут отличаться друг от друга, а само выражение может быть либо истинным, либо нет.

Чтобы определить истину и ложь, используются логические операторы и операторы сравнения. Эти операторы устанавливают истинность отдельных частей логического выражения относительно друг друга, а затем определяют истинность всего логического выражения. Здесь приведены все логические операторы и операторы сравнения используемые в Small Basic:

Оператор Описание
Операторы сравнения:
= Равно
< Меньше
> Больше
<= Меньше или равно
>= Больше или равно
<> Не равно
Логические операторы:
Or Или
And И

If … Then

Самый простой условный оператор: If … Then.

If переменная1 Оператор_сравнения переменная2/константа Then

Операции

EndIf

Или

If переменная1 Оператор_сравнения переменная2/константа Логический_оператор переменная3 Оператор_сравнения переменная4/константа Then

Операции

EndIf

С помощью этого оператора программа может осуществлять выбор, какой блок кода выполнять. Как видите, после оператора If следует выражение, состоящее из переменных, констант и оператора сравнения. Если это выражение истинно, то команды между Then и EndIf будут выполнены. Если же выражение ложно, то ничего не произойдет и программа продолжится с первой команды после оператора EndIf. Фактически мы получаем возможность управлять последовательностью выполнения программы в зависимости от значений переменных.

If … Then … Else

Возможно, вы захотите, чтобы программа выполнила какие-то действия в случае, если проверяемое условие ложно. Можно переписать программу, используя другой оператор If для выполнения новой проверки, но есть более легкий и правильный способ сделать это — использовать оператор Else.

If переменная1 Оператор_сравнения переменная2/константа Then

Операции ' Этот блок будет выполнен, если проверяемое условие истинно (верно)

Else

Операции ' Этот блок будет выполнен, если проверяемое условие ложно (неверно)

EndIf

Существует и другой эффективный способ применения условной конструкции If… Else: вы можете использовать оператор ElseIf.

If переменная1 Оператор_сравнения переменная2/константа Then

Операции ' Этот блок будет выполнен, если проверяемое условие истинно (верно)

ElseIf переменная3 Оператор сравнения переменная4/константа Then

Операции ' Этот блок будет выполнен, если первое проверяемое условие ложно (неверно), а второе - истинно

Else

Операции ' Этот блок будет выполнен, если первое и второе проверяемые условия ложны (неверны)

EndIf

Примеры:

If x < 2 Then

TextWindow.WriteLine("x меньше двух")

Else

TextWindow.WriteLine("x больше или равен двум")

EndIf

 

If numl = 1 Then

TextWindow.WriteLine("один")

ElseIf num1 = 2 Then

TextWindow.WriteLine("два")

ElseIf num1 = 3 Then

TextWindow.WriteLine("три")

EndIf

Логические операторы

Логические операторы используются в логических выражениях для проверки нескольких связанных условий.

  • Оператор And возвращает значение «true» (истина), только если только оба его параметра имеют значение true.
  • Оператор Or возвращает значение «true» (истина), если один или более его параметров имеют значение true. Ниже приведен пример использования логических операторов And и Or.

Примеры:

If numl = 1 and num2 = 1 Then

TextWindow.WriteLine("один и один")

Elself numl = 2 or num2 = 2 Then

TextWindow.WriteLine("два или два")

EndIf

Оператор Goto

Goto — это очень простой оператор, она выполняет безусловный (всегда обязательный к выполнению) переход к строке программы, где стоит указанная в этом операторе метка. Goto работает следующим образом: там, где нужно в тексте программы — ставится метка (например, создадим метку с именем «label»), а оператор Goto label в другом месте программы выполнит переход к этой метке (передаёт управление оператору, стоящему в строке следующей за строкой с меткой).

Примеры:

Goto label

Операции ' этот блок никогда не будет выполнен

label:

 

label:

Операции 'этот блок будет выполняться бесконечно

Goto label

 

If quit = 1 Then

Goto End 'переход сразу к завершению программы

EndIf

Операции 'если переменная quit не равна 1, будет выполнен этот блок

End:

Program.End()

Заметьте, что при размещении метки в коде программы после неё ставится двоеточие (:). Однако когда вы указываете имя метки в операторе Goto, двоеточие не ставится.

Циклы

Циклы — это фрагменты кода, который нужно повторить несколько раз до наступления какого-либо события. Например, главный цикл игры может повторяться до тех пор, пока игрок не одержит победу или не выйдет из игры. Циклы используются в программах для выполнения любых повторяющихся действий.

В языке программирования Small Basic существует два вида циклов:

  • For … EndFor;
  • While … EndWhile

For … EndFor

Цикл For … EndFor используется в случае, если фрагмент кода требуется выполнить определенное количество раз. Иначе говоря, вы знаете, сколько раз цикл должен повториться.

For переменная1 = константа To переменная2/константа Step переменная3/константа

Операции

EndFor

Этот цикл можно применять, например, если вы хотите переместить игрока на поле ровно на 10 позиций. Поскольку вы знаете, на сколько нужно переместить игрока, то вы можете сместить его на одну позицию, а с помощью цикла повторить это действие 10 раз.

Пример:

For i = 1 To 10 'всего 10 повторений

PlayerX = PlayerX + PlayerStep 'Игрок делает шаг: координата Х игрока изменяется на значение PlayerStep

EndFor

Как вы видите, цикл начинается с ключевого слова For и заканчивается ключевым словом EndFor. Ключевое слово To определяет значение переменной цикла, при переходе за которое цикл завершится. Ключевое слово Step (необязательное) определяет число, прибавляемое к значению переменной цикла (счётчику) при каждом проходе цикла. Если вы не укажите оператор Step, то при каждом проходе цикла значение переменной цикла будет увеличиваться на 1.

Пример прямого цикла:

For i = 1 To 6 Step 1 'цикл на 6 повторений

Turtle.Move(30) ' черепашка сдвигается на 30 точек...

Turtle.Turn(60) ' ...и поворачивается на 60 градусов

EndFor

Пример обратного цикла:

For i = Len To 1 Step -1

TextWindow.Writeline(i) 'печатаем последовательно уменьшающиеся числа: от значения переменной Len до 1

EndFor

While … EndWhile

Цикл While … EndWhile обычно применяется в том случае, если вы заранее не знаете, когда следует прекратить выполнение цикла. Это так называемый условный цикл, завершаемый в тот момент, когда условие, указанное в операторе цикла станет неверным.

While переменная1 Оператор сравнения переменная2/константа

Операции

EndWhile

Примеры:

While doAgain <> "n"

TextWindow.WriteLine("Введите число: ")

numl = TextWindow.ReadNumber()

If num1 = 1 Then

TextWindow.WriteLine("один")

Else

TextWindow.WriteLine("не один")

EndIf

TextWindow.WriteLine("Вы хотите ввести число снова (y/n)? ")

doAgain = TextWindow.Read()

EndWhile

 

While doAgain <> "n" And doAgain <> "N"

TextWindow.WriteLine("Введите число. ")

num1 = TextWindow.ReadNumber()

If num1 = 1 Then

TextWindow.WriteLine("один")

EndIf

TextWindow.WriteLine("Вы хотите ввести число снова (y/n)? ")

doAgain = TextWindow.Read()

EndWhile

Подпрограммы

Подпрограммы — это фрагменты кода, которые выполняют определенные, как правило, законченные действия. Подпрограммы логично использовать в больших программах, когда вам часто нужно повторять выполнение одних и тех же действий, либо для организации в программе параллельного потока выполнения, либо в качестве блока кода для обработки какого-то события. Обращение к подпрограммам на языке Small Basic осуществляется двумя способами:

  • Реакция на какое-то событие (нажата клавиша на мышке, клавиатуре, движение мышки, срабатывание таймера и т.д.)
  • Непосредственно из основной программы

Подпрограмму необходимо определить, перед тем как её использовать. Сам код подпрограммы может быть написан в любом месте вашей программы, при вызове подпрограммы это не имеет значения, за исключением случаев использования подпрограмм в Lego EV3, где они должны быть определены в тексте до первого вызова.

Sub Name ' имя подпрограамы

Выполняемые команды ' код подпрограммы

EndSub

Пример:

Inputs() ' Скобки означают, что это не переменная, а именно вызов подпрограммы

Sub Inputs ' Имя подпрограммы. Дальше - сам код подпрограммы

TextWindow.Write("Введите имя служащего: ")

name = TextWindow.Read()

'Ввод часов

TextWindow.Write("Введите количество рабочих часов: ")

hrs = TextWindow.ReadNumber()

'Ввод зарплаты

TextWindow.Write("Введите величину зарплаты служащего: ")

payRate = TextWindow.ReadNumber()

EndSub

Здесь строка Inputs() — является вызовом подпрограммы,  при выполнении которого выполнятся все операторы, указанные в самой подпрограмме Inputs.

Если постараться обеспечить в программе передачу в подпрограмму данных перед вызовом и получение после её выполнения результатов работы, то можно получить практически функцию, как в других языках программирования.

Sub Sinus ' объявление подпрограммы

b = Math.Sin(a)

EndSub

a = 15 ' переменная - параметр для подпрограммы

Sinus() ' вызов подпрограммы

TextWindow.WriteLine("Синус угла в " + a + " радиан равен " b) ' b - переменная, в которой хранится значение, возвращённое подпрограммой в результате работы


Поделиться: