Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »
реклама
Ремонт apple iPhone в Казани.

Почтовая рассылка

Подписчиков: 11850
Последний выпуск: 19.06.2015

Midlet Pascal

Автор: Есенин Павел aka Ordos
27 декабря 2007 года

Доброе время суток! Вы хотите написать программку или игрушку для мобильного телефона, а изучать примудрости Java нет желания или возможности? Тогда идеальным средством будет программный продукт MidletPascal. Представляет он из себя эдакий сильно упрощенный Pascal, который после компиляции преобразуется в байт-код явы и выдается в виде двух файлов - jar и jad. Причем для компиляции не требуется ничего, кроме самого MidletPascal, что опять же не может не радовать. В этой статье я постараюсь разъяснить самые основы этого замечательного языка. Предполагается, что Вы немного знакомы с языком Pascal и имеете какой-то опыт программирования на нем.

Запустите MidLetPascal. Создадим нашу первую программку. Жмем "File - "New Project" и в поле "Project name" вводим название проекта (например - "MyProject". Без кавычек, разумеется).

После этого автоматически появляется текст примерно такого содержания:

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

Если Вы знакомы с Паскалем, то здесь в принципе все понятно. Первой строчкой идет название проекта. Далее, между begin и end идет сам текст программы. Процедура drawText выводит текст на экран. В данном случае выводится текст "Hello world!" на экран с координатами (0,0), т.е. в левый верхний угол. Но на самом деле текст все равно не будет виден на экране. Дело в том, что используется не один, а два "экрана", т.е. так называемая двойная буферизация. Сначала изображается передний буфер, а drawText выводит текст на задний. Поэтому для того, чтобы наша надпись все-таки была видна пользователю и используется следующая команда repaint, которая перерисовывает содержимое заднего буфера на видимый экран. Но тут есть одно "но". Процедура repaint выполняется довольно медленно и должна вызываться как можно реже. Например следующий код будет работать, но относительно медленно:

program MyProject;
begin
   drawText('Строка 1', 0, 0);
   repaint;     
   drawText('Строка 2', 0, 10);
   repaint;     
   drawText('Строка 3', 0, 20);
   repaint;     
   delay(2000);
end.

Так делать не нужно, поскольку здесь происходит перерисовка экрана целых три раза, что довольно медленно. Правильней было бы сделать так:

program MyProject;
begin
   drawText('Строка 1', 0, 0);
   drawText('Строка 2', 0, 10);
   drawText('Строка 3', 0, 20);
   repaint;     
   delay(2000);
end.

Ну и последняя строка - delay(2000) - делает паузу. В параметре (в скобках) указывается число миллисекунд. Если не сделать паузу, то когда программа дойдет до конца, она завершится и пользователь просто не успеет увидеть текст на экране.

А теперь давайте напишем программу, делающую что-то полезное :) Например, будет переводить градусы Фаренгейта в градусы Цельсия. Эту задачку довольно часто приводят в программировании. Посмотрим, как решить ее на MidletPascal. Допустим нам надо вывести значения градусов Фаренгейта от 0 до 10 и аналогичные им градусы Цельсия. Начнем с математики. Вычислятся это все по такой формуле:

C = (F - 32) * 5 / 9,

где F - градусы по шкале Фарегейта, а C соответсвенно по шкале Цельсия. Далее приступаем к написанию собственно программы. Ну для начала создаем новый проект, как сказано выше и называем его, например, "Perevod".

program Perevod;

Дальше нам нужно ввести переменные C и F. Для этого пишем "var" на следующей строчке и далее пишем наши переменные (конструкция полностью аналогична паскалю):

var
  C, F: integer;

integer - это тип переменных (в данном случае целый). Поскольку градусов у нас много, а точнее промежуток от 0 до 10, организуем цикл:

 for F:=0 to 10 do
    begin
      C:=trunc((F - 32) * 5 / 9);
      drawText(IntegerToString(F)+' -> '+IntegerToString(C), 0 , F*10);
    end;

Т.е. F у нас будет меняться от 0 до 10. При вычислении C trunc будет отбрасывать дробную часть, что сделано для упрощения процесса. Дальше с помощью drawText выводим все это безобразие. Кстати в последнем параметре - F*10 сделано для того чтобы автоматизировать переход на следующую строку при выводе. Ну и в итоге приведу полный текст программы:

program Perevod;
var
  C, F: integer;
begin
  for F:=0 to 10 do
    begin
      C:=trunc((F - 32) * 5 / 9);
      drawText(IntegerToString(F)+' -> '+IntegerToString(C), 0, F*10);
    end;
   repaint;     
   delay(5000);
end.

Вот пока и все. В следующей статье мы поговорим о выводе картинок и обработке нажатий на кнопки.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
96K
11 декабря 2015 года
Георгий Огорелков
0 / / 11.12.2015
Мне нравитсяМне не нравится
11 декабря 2015, 16:45:31
Годно =)
2.
89K
20 февраля 2013 года
Виктор Вторыгин
0 / / 20.02.2013
Мне нравитсяМне не нравится
20 февраля 2013, 22:17:53
я всё зделал точ в точ как по уроку но у меня пишет ошибку что то не то написано что может быть такое?
3.
79K
20 декабря 2011 года
it-log
0 / / 20.12.2011
Мне нравитсяМне не нравится
20 декабря 2011, 14:29:02
Спасибо за статью!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог