Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
osnovy_programmirovanija_v_srede_lazarus.pdf
Скачиваний:
185
Добавлен:
18.03.2015
Размер:
6.53 Mб
Скачать

2.1 Основные элементы языка

____________________________________________________________________

вольной информации (буквы, цифры и специальные знаки).

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

ко нельзя считать, что консольные приложения предназначены лишь для изуче-

ния языка. Можно и с помощью консольных приложений разрабатывать очень сложные программы. Например, компилятор Free Pascal является консольным приложением, то есть может быть запущен в консоли, из командных файлов или из IDE Lazarus.

Для создания консольного приложения необходим только текстовый ре-

дактор и компилятор Free Pascal. В принципе для этого Lazarus не нужен. Од-

нако мы все же будем использовать Lazarus, поскольку IDE Lazarus позволяет создавать в том числе и консольные приложения. А его мощный текстовый ре-

дактор с подсветкой синтаксиса и другими широкими возможностями значи-

тельно облегчит нам написание программ.

2.1.9 Русский язык в консольных приложениях

В консольных приложениях под Windows, к сожалению, возникают про-

блемы с выводом на экран русских букв. Это вызвано различием в кодировке символов в Windows, которая работает в графическом режиме и ее консоли, ко-

торая работает в текстовом режиме. Не вдаваясь пока в тонкости, скажу лишь,

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

UTF8ToConsole(), которая позволит нам корректно отображать русские бу-

квы на экране в консольных приложениях для платформы Windows в операто-

рах writeln и write.

Используйте функцию UTF8ToConsole() вот таким образом:

writeln(UTF8ToConsole('Русский текст'));

вместо

70

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

writeln('Русский текст');

В Linux таких проблем нет, поэтому можно писать просто

writeln('Русский текст');

Но мы и в Linux будем писать

writeln(UTF8ToConsole('Русский текст'));

Это позволит нам без проблем переносить программы из Linux в Windows,

т.е. наши программы без каких-либо переделок будут безошибочно компилиро-

ваться и выполняться как на платформе Linux, так и на платформе Windows.

2.1.10 Первая программа

Запустите Lazarus. Выберите пункт меню Проект, Создать проект… (рис.

2.15).

Рис. 2.15. Меню "Проект"

Создайте консольное приложение (рис. 2.16). Для этого выберите Кон-

сольное приложение и нажмите Создать.

71

2.1 Основные элементы языка

____________________________________________________________________

Рис. 2.16. Окно создания нового проекта

Возьмите себе за правило сразу же сохранять только что созданный про-

ект, даже если он пока пустой. Это должно стать вашей хорошей привычкой,

такой же, как чистить зубы утром и вечером! Дело в том, что во время сохране-

ния, вы можете создать папку для своего проекта, и все файлы текущего проек-

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

Для сохранения проекта проще всего воспользоваться кнопками на панели инструментов, рис. 2.17.

Рис. 2.17. Кнопки сохранения проекта

В открывшемся диалоговом окне сохранения проекта создайте новую пап-

ку в нужном месте, укажите имя проекта и нажмите Сохранить, рис. 2.18, 2.19.

72

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

Рис. 2.18. Стандартное диалоговое окно сохранения в Windows

Рис. 2.19. Стандартное диалоговое окно сохранения в Linux

При задании имени папки и имени проекта старайтесь, чтобы имена отра-

жали суть проекта. Это поможет вам легко ориентироваться в своих проектах,

73

2.1 Основные элементы языка

____________________________________________________________________

особенно когда их накопится достаточно много. Также помните, что если вы даете имя, состоящее из нескольких слов, то в Linux нельзя ставить пробелы между словами. В этом случае Lazarus не сможет открыть ваш проект, рис. 2.20.

Имя проекта всегда задавайте в нижнем регистре.

Рис. 2.20. Окно сообщения "Файл не найден"

После сохранения в папке с проектом появятся несколько файлов, которые мы рассмотрим позже. В окне редактора исходного кода вы увидите текст. Это заготовка кода для консольного приложения, автоматически вставляемого Lazarus (рис. 2.21).

Рис. 2.21. Заготовка кода для консольного приложения, автоматически вставляемого Lazarus

74

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

Мы не будем сейчас обращать внимание на этот код и разбирать его, по-

скольку у нас для этого пока недостаточно знаний. Просто удалите этот код.

Для этого установите курсор в любое место окна редактора исходного текста и нажмите Ctrl+A. Весь текст в окне выделится. Нажмите клавишу Delete. Введи-

те следующий код программы:

program summa;

{$mode objfpc}{$H+}

uses

FileUtil; { Подключение модуля FileUtil для корректного отображения русских букв с помощью функции UTF8ToConsole }

var

result, A, B: integer;

begin

readln(A, B);

result:=A + B;

writeln(UTF8ToConsole('1-е введенное число= '), A); writeln(UTF8ToConsole('2-е введенное число= '), B); writeln(UTF8ToConsole('Сумма двух чисел = '), result);

end.

Окно редактора исходного кода в Windows будет иметь вид, рис. 2.22:

75

2.1 Основные элементы языка

____________________________________________________________________

Рис. 2.22. Окно редактора исходного кода в Windows

В Linux это же окно будет иметь вид, рис. 2.23.

Рис. 2.23. Окно редактора исходного кода в Linux

76

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

Обратите внимание на объявление

uses

FileUtil;

Этим объявлением мы подключаем модуль FileUtil в котором опреде-

лена функция UTF8ToConsole().

Если вас смущает что значит модуль и функция в Паскале, то немного по-

терпите. В главе 3 мы подробно рассмотрим все эти вопросы. Напоминаю, что мы вынуждены это делать, чтобы в Windows в окне DOS при работе вашей про-

граммы корректно отображался русский шрифт. Также пока примите на веру и проделайте следующее.

Откройте меню Проект->Инспектор проекта и нажмите на кнопку со значком "+", рис. 2.24.

Рис. 2.24. Окно инспектора проекта

В появившемся окне "Добавить к проекту" нажмите на кнопку "Новое тре-

бование", рис. 2.25.

Рис. 2.25. Добавление нового требования

77

2.1 Основные элементы языка

____________________________________________________________________

В раскрывающемся списке "Имя пакета" найдите и выберите пакет LCL.

Нажмите клавиши Ctrl+F9. Начнется компиляция и сборка программы. Ес-

ли вы ввели текст программы без ошибок в точности как приведено выше, то компиляция завершится успешно. В окне Сообщения вы увидите сообщение

Проект "summa" успешно собран.

В папке проекта появятся, в дополнение к уже существующим, еще не-

сколько файлов. В частности, готовый к исполнению файл. В Windows это бу-

дет файл с расширением exe, в Linux файл без расширения.

Чтобы запустить программу на выполнение прямо из среды Lazarus на-

жмите клавишу F9 или кнопку "Запуск" (зеленый треугольник) на панели инст-

рументов или меню Запуск->Запуск, рис. 2.26.

Рис. 2.26. Способы запуска программы

Пользователям Linux для того, чтобы запускать программы из среды Lazarus в терминале необходимо в меню Запуск->Параметры запуска устано-

78

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

вить флажок "Использовать приложение для запуска", рис. 2.27, 2.28.

Рис. 2.27. Меню "Запуск"

При этом для некоторых дистрибутивов Linux надо заменить строку

/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)

на

/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)

79

2.1 Основные элементы языка

____________________________________________________________________

Рис. 2.28. Настройка проекта для запуска в терминале

Для запуска программы вне среды Lazarus в Windows достаточно дважды

щелкнуть по имени исполняемого exe-файла.

ВLinux выдать команду <путь к файлу> ./<имя исполняемого файла>

Вдальнейшем, для единообразия в изложении, будем предполагать,

что все примеры в книге запускаются из среды Lazarus.

После запуска программы у вас появится окно вида, рис. 2.29 (Windows) и

рис. 2.30 (Linux).

80

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

Рис. 2.29. Окно исполняемой программы в Windows

Рис. 2.30. Окно исполняемой программы в Linux

Введите значения переменных A и B. Это должны быть целые числа. Для завершения ввода числа нажмите Enter.

Окно вывода программы в Linux будет иметь вид, рис. 2.31:

81

2.1 Основные элементы языка

____________________________________________________________________

Рис. 2.31. Окно вывода программы в Linux

В Windows после ввода второго числа в окне что-то промелькнет и окно закроется. Как сделать так, чтобы окно не закрывалось, и мы могли увидеть ре-

зультаты выполнения программы?

Для этого можно вставить в код программы оператор readln без пара-

метров перед завершающим оператором end с точкой. Снова нажмите клави-

шу F9. На этот раз после ввода чисел окно не закроется и вы сможете увидеть результаты работы программы, рис. 2.32.

Рис. 2.32. Окно вывода программы в Windows

82

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

Чтобы закрыть окно программы нажмите Enter.

Проанализируем нашу программу. Вроде программа работает, сумма вы-

числяется правильно. И все же даже в этой простейшей программе видны су-

щественные недостатки. Недостатки с точки зрения организации взаимосвязи с пользователем или, как говорят, интерфейса связи с пользователем.

Во-первых, после запуска нашей программы появляется пустое окно. Это сразу же вызывает негативные ассоциации. Что-то случилось с компьютером?

Он завис?

Ну, мы-то с вами знаем, что нужно ввести два числа, но пользователь мо-

жет и не знать об этом! Как исправить это? А очень просто! Вставьте оператор writeln(UTF8ToConsole('Введите два целых числа'));

перед оператором ввода readln(A, B);

Окно программы будет выглядеть так, рис. 2.33, 2.34:

Рис. 2.33. Окно программы в Windows

83

2.1 Основные элементы языка

____________________________________________________________________

Рис. 2.34. Окно программы в Linux

Теперь даже ежу понятно, что нужно ввести два числа!

Во-вторых, (это касается опять же Windows) неплохо было бы дать поль-

зователю инструкцию как выйти их программы. Окно программы будет закры-

то только после нажатия клавиши Enter. Нажатие любых других клавиш к за-

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

И опять, пользователь ведь не знает, что для выхода из программы нужно на-

жать клавишу Enter. Есть два варианта выхода из этой ситуации:

1.В конце программы, но перед readln вставить оператор

writeln(UTF8ToConsole ('Для выхода нажмите Enter'));

2.Воспользоваться функцией readkey без параметров. Окно программы бу-

дет закрываться при нажатии любой клавиши. Этот вариант предпочтительней,

только для этого необходимо использовать объявление uses Crt, чтобы включить модуль CRT о котором речь пойдет позже и в ко-

тором и есть эта функция. Но, даже в этом случае, будет правильнее, если вставить оператор (разумеется, перед readkey) writeln(UTF8ToConsole('Для выхода нажмите любую клавишу'));

84

Глава 2 Введение в язык программирования Pascal

____________________________________________________________________

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

program summa; {$mode objfpc}{$H+} uses

Crt, FileUtil; {Подключение модуля CRT для использования функ-

ции readkey и модуля FileUtil для корректного отображения русских букв с помощью функции UTF8ToConsole}

var

result, A, B: integer; begin

writeln(UTF8ToConsole('Введите два числа')); readln(A, B);

result:=A + B;

writeln(UTF8ToConsole('1-е введенное число= '), A); writeln(UTF8ToConsole('2-е введенное число= '), B); writeln(UTF8ToConsole('Сумма двух чисел = '), result); writeln(UTF8ToConsole('Нажмите любую клавишу')); readkey;

end.

Результаты работы программы приведены на рис. 2.35, 2.36.

85

2.1 Основные элементы языка

____________________________________________________________________

Рис. 2.35. Результаты работы программы в Windows

Рис. 2.36. Результаты работы программы в Linux

Пользователи Linux обратите внимание, что если вы выполняете програм-

му в терминале, то выдается еще дополнительно сообщение "Press enter". Все же операторы

writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

86

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]