MobileBASIC

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:55, 1 июня 2016.
MobileBASIC
Спроектировано David J Firth
Первый   появившийся 2003
Стабильная версия
  • Phone Edition: 1.9.1 by kiriman & dzanis (последняя официальная - 1.92);
  • Desktop Edition: 2.3;
  • Android Edition: 3.1
  • LITE for iOS : 1.2
Расширение файла .bas, .lis
Портал: http://www.mobilebasic.com/
Под влиянием
Basic

Mobile BASIC - это проприетарный диалект языка программирования [1], который может быть использован для программирования телефонов на платформе Java. Это возможно из-за того, что интерпретатор языка Mobile BASIC - это MIDlet.

Введение

В 1964 году, John G. Kemeny и Thomas E. Kurtz разработали оригинальный язык BASIC в Dartmouth College. Язык создавался как инструмент, с помощью которого студенты-непрограммисты могли самостоятельно создавать компьютерные программы для решения своих задач. Получил широкое распространение в виде различных диалектов, прежде всего как язык для домашних компьютеров.

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

Используется как самостоятельный язык для разработки прикладных программ, главным образом, работающих под управлением ОС Windows различных версий. Также широко распространён в качестве встроенного языка прикладных программных систем различного назначения и в качестве языка для программируемых калькуляторов.

Язык остается популярным средством, также существует много других технологий, перенявших у BASIC стандарты и технологии.

Синтаксис

Основное
  • LIST — Вывод на монитор текста программы в правильной последовательности строк. В зависимости от реализации команда поддерживала параметры — диапазон строк, который требуется вывести. Иногда поддерживался вариант LLIST — вывод на печатающее устройство.
  • RUN — Запуск текущей программы с первого оператора строки с самым маленьким номером. Мог поддерживаться параметр — номер строки, с которого нужно начинать исполнение.
  • REM — Комментарий. Текст, находившийся после ключевого слова и до конца строки, на исполнение программы не влиял. Многие интерпретаторы также поддерживали в качестве знака начала комментария одиночную кавычку '.
  • INPUT "Приглашение: ", Переменная — Вывод на монитор текста "Приглашение: " и ожидание, пока пользователь не введёт значение и не нажмёт Enter. После этого в Переменную запишется введённое значение. В простейших реализациях приглашение в INPUT не поддерживалось и его нужно было выводить отдельным оператором PRINT (см. ниже).
  • PRINT «Текст»;Переменная;Переменная;«Текст» — Вывод на монитор последовательно перечисленных объектов (текста и значений переменных). В зависимости от реализации, по-разному воспринимались разделители: в одних случаях разделитель приводил к выводу хотя бы одного пробела, в других — значения выводились подряд и разделители нужно было добавлять вручную. Разделитель «;» выполнял также функцию подавления перевода на следующую строку.
  • CLS — Очистка экрана терминала. В зависимости от реализации, конструкции и режима работы терминала текстовый курсор переносился либо в верхний левый, либо в нижний левый угол.
  • LET — Присваивание (формат «LET Переменная = Значение»). В абсолютном большинстве версий оператор LET поддерживался, но был факультативным — присваивания переменным значений записывались без LET).
  • DIM — Описание массива. В отличие от обычных переменных, массивы требовали описания. Максимальное число размерностей массива определялось только реализацией
  • DATA — Набор данных, размещаемых прямо в тексте программы (аналог константы или массива-константы).
  • READ — Команда считывания из набора DATA.
Безусловный переход
  • GOTO Lbl — Команда безусловного перехода на метку Lbl.
  • ON… GOTO — Команда вычисляемого перехода — после ON должно было идти вычисляемое выражение или переменная, а после GOTO — набор меток через запятую. Значение выражения указывало номер метки, на которую нужно перейти.
  • IF … THEN … — Обычный оператор ветвления. После IF размещается логическое условие, после THEN — оператор, который должен быть выполнен при истинности этого условия. Для сокращения записи многие реализации поддерживали соглашение — если после THEN идёт число, то это — метка, на которую нужно перейти, то есть форма «IF … THEN 150» равнозначна «IF … THEN GOTO 150». Также могли поддерживаться формы «IF … GOTO…»
Циклы
  • FOR ПеременнаяЦикла=НачальноеЗначение TO КонечноеЗначение STEP Шаг — Заголовок цикла с шагом. Инициирует цикл, в котором Переменная последовательно проходит ряд значений от НачальноеЗначение до КонечноеЗначение с шагом Шаг. Тело цикла ограничивается заголовком и ключевым словом NEXT. Часть STEP могла опускаться — в этом случае шаг был равен единице. Когда ПеременнаяЦикла выходит за указанные пределы, происходит переход за соответствующий оператор NEXT.
  • NEXT — Завершение тела цикла с шагом. Оператор показывает, что необходимо перейти на заголовок текущего исполняемого цикла FOR и продолжить работу. В более развитых реализациях NEXT мог содержать список переменных цикла через запятую — это означало, что в данной точке программы завершается тело не одного, а нескольких циклов. Применение NEXT с переменной также страховало от нарушения логики программы, так как вызывало ошибку времени выполнения, если при выполнении этой команды оказывалось, что активен цикл не по той переменной, имя которой указано.
  • WHILE Условие — Заголовок цикла с предусловием. Цикл завершался, если условие оказывалось ложно. В этом случае происходил переход за соответствующий заголовку оператор WEND.
  • WEND — Завершение тела цикла WHILE. Аналог NEXT но для цикла с предусловием.
Процедуры/подпрограммы
  • GOSUB Метка — Переход к подпрограмме, начинающейся с Метки. Возврат происходит при достижении оператора RETURN. Рекурсивный вызов процедуры был, как правило, запрещён и приводил к ошибке времени выполнения.
  • RETURN — Оператор возврата из подпрограммы. Выполняется безусловный переход на оператор, следующий за командой GOSUB, которой был произведён переход к подпрограмме.
  • END — Завершение выполнения программы. Система выходит в интерпретатор и пользователю выдаётся приглашение на ввод команд.
  • CHAIN — Загрузка диапазона строк программы с внешнего носителя.
Операции с файлами
  • OPEN — Открытие файла данных на внешнем носителе.
  • CLOSE — Закрытие файла данных на внешнем носителе.
  • GET — Последовательное чтение значений указанных переменных из файла с перемещением файлового указателя за последний считанный символ.
  • PUT — Последовательная запись значений указанных переменных в файл с перемещением файлового указателя за последний записанный символ.
  • DELETE — Команда интерактивного режима — удаление строки с указанным номером.
  • SAVE — Команда интерактивного режима — сохранение текущей программы в файле на внешнем носителе.
  • LOAD — Команда интерактивного режима — загрузка в память программы из файла на внешнем носителе. Как правило, по умолчанию она приводила к уничтожению ранее загруженной программы и данных.
  • RENUM — Команда интерактивного режима — перенумерация всех или заданного диапазона строк программы начиная с заданного числа с указанным шагом. По умолчанию — перенумеруются все строки программы с шагом 10.

Типы данных, переменные

Минимальный набор версий BASIC имел в своем распоряжении только целые типы данных и одно- и двухбуквенные имена, которые минимизировали требования к оперативной памяти (в то время дорогой).

Более мощные версии интерпретатора включают операции с числами с плавающей точкой, а переменные могут именоваться до шести знаков. Кроме того, имеются некоторые проблемы и ограничения в ранних интерпретаторах. Например, в applesoft имена переменных могут состоять из нескольких символов, но значимые только два, поэтому например можно было создать ошибочную программу с переменными LONG И LOSS. ключевые слова не должны быть использованы в именах переменных, так например SCORE является двумя переменными SC и E, т.к. OR - это ключевое слово языка.

Строковые переменные обычно различаются в зависимости от интерпретатора - у некоторых диалектов присутствует $ перед названием переменной, а сами значения обычно выделяются по двойной кавычке ".

Массивы в BASIC содержат целые, с плавающей точкой или строковые переменные.

В некоторых диалектах языка существуют матрицы, полезные при решении множества различных линейных уравнений. Эти диалекты напрямую поддерживают матричные операции для решения уравнений. Эти диалекты напрямую поддерживают такие матричные операции, как присвоение, сложение, умножение и вычисление определителя. Многие микроконтроллерные BASIC не поддерживают этот тип данных, тем не менее работают с операциями матриц.

Стандарты

  • ANSI/ISO/IEC Minimal BASIC:
    • ANSI X3.60-1978 "For minimal BASIC"
    • ISO/IEC 6373:1984 "Data Processing — Programming Languages — Minimal BASIC"
  • Ecma International-55 Minimal BASIC (исключен из-за одинакового содержания с ANSI X3.60-1978)
  • ANSI/ISO/IEC Full BASIC:
    • ANSI X3.113-1987 "Programming Languages Full BASIC"
    • INCITS/ISO/IEC 10279-1991 (R2005) "Information Technology - Programming Languages - Full BASIC"
  • ANSI/ISO/IEC Defining Modules:
    • ANSI X3.113 Interpretations-1992 "BASIC Technical Information Bulletin # 1 Interpretations of ANSI 03.113-1987"
    • ISO/IEC 10279:1991/ Amd 1:1994 "Modules and Single Character Input Enhancement"
  • Ecma International-116 BASIC ((исключен из-за одинакового содержания с ANSI X3.113-1987)

Эволюция BASIC

Неструктурированный BASIC

Оригинальный Dartmouth Basic имел необычное тогда понятие Matrix, которое обозначалось ключевым словом MAT. Несмотря на то, что оно впоследствии было упразднено во многих микроконтроллерных версиях языка, можно взглянуть на участок кода с его примером.

5 LET S = 0 
10 MAT INPUT V 
20 LET N = NUM 
30 IF N = 0 THEN 99 
40 FOR I = 1 TO N 
45 LET S = S + V(I) 
50 NEXT I 
60 PRINT S/N 
70 GO TO 5 
99 END

Новички в BASIC программировании могут начать с простой программы, которая использует ключевое слово PRINT

10 PRINT "Hello, World!"
140 END

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

10 INPUT "What is your name: ", U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want: ", N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars? ", A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
130 PRINT "Goodbye "; U$
140 END

Вышеприведенный пример работает таким образом:

What is your name: Mike
Hello Mike
How many stars do you want: 7
*******
Do you want more stars? yes
How many stars do you want: 3
***
Do you want more stars? no
Goodbye Mike

Структурированный BASIC

BASIC второго поколения включил в себя множество новых особенностей языка, которые в основном относятся к парадигме структурного программирования и подходу к модуляризации. Обычно в языках этой группы отсутствует принудительная нумерация строк, которая теперь заменяется на необязательные метки для GOTO. Кроме того, было добавлено множество ключевых слов для операций с повтором и удалением, а также локальные переменные в процедурах.

Ниже приведен пример такого языка - QuickBasic

DECLARE SUB PrintSomeStars (StarCount!)
REM QuickBASIC example
INPUT "What is your name: ", UserName$
PRINT "Hello "; UserName$
DO
   INPUT "How many stars do you want: ", NumStars
   CALL PrintSomeStars(NumStars)
   DO
      INPUT "Do you want more stars? ", Answer$
   LOOP UNTIL Answer$ <> ""
   Answer$ = LEFT$(Answer$, 1)
LOOP WHILE UCASE$(Answer$) = "Y"
PRINT "Goodbye "; UserName$
END

SUB PrintSomeStars (StarCount)
   REM This procedure uses a local variable called Stars$
   Stars$ = STRING$(StarCount, "*")
   PRINT Stars$
END SUB

Описание диалекта Mobile BASIC

интерпретируемый язык программирования, используемый для мобильных телефонов с поддержкой MIDP-2.0. Позволяет вам легко писать программы непосредственно на вашем телефоне или планшете с Андроидом. Существует в 4 реализациях: как среда программирования для компьютера, как обычный мидлет для мобильных устройств, как приложение для устройств под управлением Android и iOS.

Появился язык в 2002 году благодаря программисту Дэвиду Фёрту (англ. David J Firth), как легкое и удобное средство разработки программного обеспечения для мобильных телефонов.

Синтаксис мобильной версии очень похож на старые версии бейсика. Во-первых, используется обязательная нумерация строк, во вторых не используются пользовательские процедуры и функции (вместо них используется команда GOSUB).

Арифметические операции

Мобильная версия языка предлагает богатый набор операторов для арифметики:

+ сложить
- вычесть
* умножить
/ разделить
 % остаток от деления
** степень
(-) унарный минус

Кроме того, отличительной особенностью является то, что все операторы можно неограниченное количество раз использовать со скобками.

Сравнения

Операторы отношений используются для сравнения значений и состоят из такого списка:

= равенство
<> неравенство
< меньше
<= меньше-равно
> больше
>= больше-равно

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

в число логических операторов включены:

  • AND
  • OR
  • NOT

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

Побитовые операции

Если ваша программа работает с такими типами целых чисел, как

  • BYTE
  • SHORT
  • INTEGER
  • LONG

То существует еще один дополнительный набор операций:

& AND
| OR
^ XOR
~ дополнение
<< левый сдвиг
>> правый сдвиг
>>> беззнаковый правый сдвиг

Основные особенности

  • Структурный диалект BASIC с поддержкой
    • Процедур
    • Функций
    • Массивов
    • и т.д.
  • 10 типов данных включают
    • BOOLEAN
    • BYTE
    • SHORT
    • INTEGER
    • LONG
    • FLOAT
    • DOUBLE
    • COMPLEX
    • STRING
    • VARIANT.
  • Встроенный функционал для
    • Обработка строк
    • Дата и время
    • Тригонометрия (Cosine, Sine, Tangents, Cosecants, Secants и Cotangents)
    • Гиперболические функции
    • Логарифмы
  • Графические библиотеки включают
    • SETCOLOR
    • SETFONT
    • PLOT
    • DRAWLINE
    • DRAWARC
    • DRAWCIRCLE
    • DRAWOVAL
    • DRAWPIE
    • DRAWRECT
    • DRAWROUNDRECT
    • DRAWSTRING
    • FILLARC
    • FILLCIRCLE
    • FILLOVAL
    • FILLPIE
    • , FILLRECT
    • FILLROUNDRECT
    • SAVE
    • RESTORE
    • TRANSLATE
    • ROTATE
  • Поддержка сенсоров
    • Экран
    • Локация
    • Акселерометр
    • Температура
    • Гравитация
    • Гироскоп
    • Свет
    • Линейное ускорение
    • Магнитное поле
    • Давление
    • Близость
    • Относительная влажность
    • Вектор поворота

MobileBASIC Desktop

Код диалекта больше напоминает Quick Basic. Номера строк превратились в необязательные метки, программа легко делится на модули. Главной является процедура Main (Sub Main()). Но он все равно остается интерпретируемым языком, пусть и более быстрым в исполнении. Добавлена работа с картами и тайлами, для которых есть встроенные редакторы. Вообще, обе вариации среды разработки неплохо заточены именно под создание игр, о чем свидетельствует возможность работы с графическими элементами (гелями) и спрайтами.

Среда разработки включает в себя помимо редактора кода с подсветкой синтаксиса еще несколько специализированных редакторов: редактор тайлов (Tile Editor), редактор карт (Map Editor), средство изменения размеров изображения (Image Resize), средство подбора цвета (Color Chooser), а также встроенный эмулятор. Программа написана на Java SE, что позволяет ее запускать на любой операционной системе, на которой есть виртуальная Java-машина.

Mobile BASIC for Desktop example

Стабильная версия на данный момент: 2.3 [2].

MobileBASIC Android

В июне 2011 года в свет вышла очередная версия среды разработки. В этот раз - для платформы Android. Синтаксис сильно похож на синтаксис компьютерной версии, есть поддержка многомерных массивов, пользовательских процедур и функций. В программу включена удобная справка по языку и более 100 примеров использования различных возможностей языка. Существует две версии среды разработки: бесплатная (минусы - показ рекламы) и полная, доступная по цене £2.99. Последняя версия - 4.9.11.

Mobile BASIC for Android example

MobileBASIC LITE iOS

В 2012 году MobileBASIC распространился еще на одну платформу - iOS. Новая версия получила название MobileBASIC LITE. В нее включены многие функции, специфичные для устройств на базе iOS, такие как:

  • определение местоположения
  • работа с акселерометром и гироскопом
  • поддержка встроенных карт
  • работа с базами данных
Mobile BASIC for iOS example

В среду разработки встроен подробный справочник по языку с примерами.

Примечания

Ссылки