MIDletPascal: курс молодого программиста


Введение в язык

Написание программ в MIDletPascal очень просто, особенно если вы знакомы со старым добрым Pascal'ем. Главное, что нужно знать, - саму логику программ в Паскале и способы рисования на экране.

В MIDletPascal есть два пользовательских интерфейса - графический дисплей (Canvas) и форма (Form). Дисплей является хорошим средством, если вам необходимо отобразить графику или анимацию. Однако, с помощью дисплея невозможно запросить у пользователя какие-либо данные, например, имя или возраст. Здесь на помощь приходит форма, которая в противовес дисплея может содержать такие элементы, как текстовое поле, бегущую строку, "градусник", группу выбора. Кроме этих двух основных интерфейсов, также имеются меню, текстовое окно и предупреждение.

Типы данных можно разделить на две категории: простые и комплексные. Простые - char, string, integer, real, boolean, image, command, http, RecordStore, resource, а комплексные - это record и array. Если вы уже изучали Паскаль, то большинство типов должны быть вам знакомы, но есть новые: image - тип для хранения графических изображений; сommand - так называемые команды (софт-клавиши); http - переменные для выхода в Интернет; RecordStore - тип, аналогичный файлам на компьютере, т.е. с помощью этого типа мидлет сохраняет какие-либо данные; resource - тип для использования различных файлов в JAR-архиве. Надо заметить, что команды (Command) могут быть использованы в обоих интерфейсах.

Основные операторы MIDletPascal:

  • цикл for
  • цикл while
  • цикл repeat .. until
  • оператор break
  • оператор if .. then .. else
  • оператор присваивания
  • вызов процедуры/функции

Надо заметить, что нет оператора выбора "case of", поэтому приходится выкручиваться с помощью комбинаций "if ... then ... else". Кроме того, есть функция "halt", которая заканчивает работу программы сразу после её вызова. Также надо заметить, что MIDletPascal не чувствителен к регистру. Комментарии можно оставлять, обрамляя их символами '{' и '}', или между '(*' и '*)'. Если комментарий умещается в одну строку, вы можете использовать двойной символ '/'.

Структура программы в общем представлена здесь:

program programName;
объявления констант;
объявления типов;
объявления переменных;
объявления процедур и функций;
begin
операторы;
end.

Всё, опять же, как в Паскале, однако следует чуть подробнее поговорить о процедурах и функциях. В отличие от Паскаля, процедуры и функции не могут быть вложенными, т.е. одна функция не может быть объявлена внутри другой функции, так же, как и процедуры. Ещё следует заметить, что не поддерживается описание параметров var (раздел описания локальных переменных). Для использования функции или процедуры, идущей после уже описанной функции или процедуры, есть оператор "Forward". Forward - опережающее объявление, которое показывает компилятору, что процедура или функция будет описана где-то в коде программы. Например:

Procedure Name(x,y: integer); forward;


"Hello world!", или Первый опыт

Теперь создадим нашу первую программу. Откройте MIDletPascal, далее жмите File > New Project... В поле "Project name" можете ввести имя нового проекта, например, "FirstProgram", а в "Project location" указываете путь хранения проекта (я оставил по умолчанию). Далее в "Project type" выбираете единственный доступный вариант "Default MIDP project" и жмёте кнопку "Create". После этого автоматически появится текст такого содержания:

program FirstProgram;
begin
 drawText('Hello world!', 0, 0);
 repaint;
 delay(2000);
end.	

Функцией "DrawText" выводится надпись на экране, указанная в кавычках в первом параметре и с координатами, указанными во втором и третьем параметре. "repaint" перерисовывает дисплей (Canvas), а "delay" делает паузу на количество миллисекунд, указанных в скобках (1 сек = 1000 мсек), иначе программа закончит работу так быстро, что вы ничего не увидите.

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

Для компиляции программы нужно нажать "F7" или "Build project" (или меню Project > Build project) и компилятор скомпилирует вашу программу. Если в программе ошибок нет, то вы увидите сообщение об удачной компиляции - "Build finished successfully!", иначе будет выведено сообщение "Build terminated due to errors".

Стоит немного поговорить об интерфейсе MIDletPascal. Если вы уже работали с Delphi или Kylix, то схожесть налицо - сверху меню и панель инструментов, снизу вывод информации при компиляции. Посередине слева или справа (смотря как настроить) от окна с программой "инспектор" (если можно его так назвать) и само окно с программой. В инспекторе есть две вкладки - "Files" и "Properties". На вкладке "Files" находят списки подключённых ресурсов и исходных файлов, а в "Properties" описана конфигурация создаваемой программы: "MIDlet name" - имя создаваемого файла-программы; "MIDlet vendor" - имя компании/фирмы разработчика приложения; "MIDlet version" - версия приложения; "MIDlet icon" - иконка приложения. Чуть ниже идёт конфигурация компиляции: "Name" - название конфигурации; "MIDlet type" - тип создаваемого приложения, их три: "Сlassic MIDlet" - самый обыкновенный мидлет, "MIDP2.0 Fullscreen" - мидлет с ипользованием всего экрана (в классическом сверху полоса для батарейки и прочего, а снизу - для софт-клавиш), "NokiaAPI Fullscreen" - тот же мидлет, что и предыдущий, но для мобильных устройств фирмы Nokia. "MIDP version" - версия использования платформы MIDP (не все устройства поддерживают вторую версию).

После компиляции саму программу, файл с расширением .jar можно найти в папке bin папки самого проекта. Тут и назревает вопрос: для каждого тестирования программы её надо будет загружать на телефон? Ответ - нет! Есть множество различных программ-эмуляторов Java, например, MidpX J2ME Emulators Package.

(Продолжение следует)

Резидент Николай,
rezidentnik@gmail.com

Версия для печатиВерсия для печати

Номер: 

33 за 2009 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!