Понедельник, 06.05.2024, 17:28
Приветствую Вас Гость | RSS
MIDletPascal
Категории каталога
Алгоритмы, Математические методы [0]
Аудио и Графика [0]
Сеть, Интернет [0]
Обучающие статьи [4]
Простенькие Игры и Програмки [0]
Серьезные проекты [1]
Форма входа
Поиск
Друзья сайта
Главная » Статьи » Обучающие статьи

Азы программирования в MIDletPascal Урок 1.
В этой статье я постараюсь разъяснить самые основы этого замечательного языка. Предполагается, что Вы немного знакомы с языком 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.

Автор: Есенин Павел aka Ordos

Категория: Обучающие статьи | Добавил: midletpascal (05.02.2008)
Просмотров: 5978 | Комментарии: 12 | Рейтинг: 4.0/4 |
Всего комментариев: 9
9 kosmod  
0
ПОМОГИТЕ написать программу для тестирования. очень нужно. чтобы там был вопрос и 4 варианта ответа. если ктото может отпишитесь.

8 romed  
0
:) птички на улице поют!! я так счастлив

7 Bobep  
0
Моя жена заходит на ваш блог постоянно, решил и я зайти :)

6 Константин  
0
А если написать программу,которая переводит значеие введенное с клавиатуры.Какой оператор использовать для запроса ввода чисел с клавиатуры и как это выглядит?

5 hattines  
0
Согласен, но не со всеми.

4 amesfor  
0
Буду писать стихи теперь, весна же все таки:)

3 ovicen  
0
Спасибо большое. Есть о чем задуматься . Картинок бы ещё.

2 Артем  
0
http://mobilepascal.ucoz.ru-добро пожаловать на мой сайт

1 Dementor  
0
Давольно таки интересная программа можно попробовать что то и создать!

Имя *:
Email *:
Код *: