Введение в язык
Написание программ в 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.
Резидент Николай,
[email protected]
![Версия для печати Версия для печати](https://www.kv.by/sites/all/modules/print/icons/print_icon.png)
Горячие темы