Программирование на Lazarus

Введение в Lazarus

Показывать лекцию целиком

Цель лекции

Знакомство с историей развития языков программирования и диалектов Pascal; первое знакомство с IDE Lazarus и компилятором Free Pascal; изучение компонентов TForm, TLabel, TButton; создание первого проекта.

Исторический экскурс

Историю развития языков программирования, пожалуй, можно начать с первой в мире программистки Ады Лавлейс (Августа Ада Кинг, графиня Лавлейс, математик). Ада Лавлейс родилась 10 декабря 1815 г. в Лондоне, была известна описанием вычислительной машины (механическая машина Ч. Бэббиджа), в разработке которой она принимала участие, и созданием первой программы для нее. Ввела в употребление термины "цикл" и "рабочая ячейка". В честь Ады Лавлейс в 1975 году был назван язык программирования Ада.

Реально языки программирования получили развитие в 1945-1955 гг., когда появились первые ЭВМ (Электронные Вычислительные Машины), для которых программы составлялись вначале на машинном языке, а затем и на Ассемблере - мнемоническом представлении машинного языка. И если "чистым" машинным языком уже давно никто не пользуется, то Ассемблер все еще применяется там, где требуется либо сверхмалый размер программы, либо большая скорость ее работы, то есть, в основном, для создания критических участков ОС (Операционных Систем) или драйверов, для программирования микропроцессоров в различных платах, устройствах. Написать большую современную программу на Ассемблере - невероятно сложная, а то и невыполнимая задача.

В 1954 году появился первый язык программирования высокого уровня Фортран, и началась новая эра развития программирования.

Язык высокого уровня (или высокоуровневый язык) - это язык программирования, наиболее приближенный к человеческому языку. Он содержит смысловые конструкции, описывает структуры данных, выполняет над ними различные операции.

Современные языки высокого уровня оперируют уже целыми объектами - сложными конструкциями, обладающими определенным состоянием и поведением.

Для обучения программированию и для решения задач общего назначения наибольшее распространение получил язык программирования высокого уровня Паскаль, созданный в 1968-1969 гг. профессором Никлаусом Виртом, и названный в честь выдающегося французского математика Блеза Паскаля (между прочим, создателя первой в мире механической машины, складывающей два числа). Этот язык выгодно отличается от других языков программирования более строгими правилами в описании и использовании данных различного типа. Паскаль - структурный язык, небольшой и эффективный, способствующий выработке у программиста хорошего стиля программирования. В школах и ВУЗах всех стран в мире по сей день изучают ту или иную реализацию Паскаля.

Поскольку Lazarus основан на Паскале (точнее, на Объектном Паскале), историю других высокоуровневых языков в рамках данного курса мы рассматривать не будем.

В 1983 г. фирма Borland, известная разработкой Delphi - платного предшественника Lazarus, выпустила Turbo Pascal - интегрированную среду разработки программ на языке Паскаль. Turbo Pascal - это компилятор, компоновщик, редактор кода и отладчик в одном окне. Он подобен швейцарскому ножу, где множество разных инструментов вмонтировано в единое устройство. Для программистов Turbo Pascal примечателен тем, что он стал своеобразным прародителем сред быстрой разработки программ.

В 1986 г. появился язык Object Pascal (Объектный Паскаль), разработанный в фирме Apple Computer. Этот диалект Паскаля уже мог оперировать объектами.

В 1989 г. объектное расширение Паскаля было добавлено и в Turbo Pascal фирмы Borland.

В 1994 г. была выпущена первая версия Delphi - Графическая интегрированная среда быстрой разработки программ для Windows. Этот факт дал невероятный толчок развитию таких сред, в которых разработка интерфейса программы для программиста вместо нудной рутины, превращалась в забавный конструктор форм. В современных средах можно создать программу, даже не дотрагиваясь до клавиатуры - исключительно с помощью мыши. Правда, подобной программе вряд ли можно будет придать сколь-либо полезные функции.

Все эти языки и среды были платными, часто оказывались недоступны образовательным учреждениям в силу своей дороговизны. В 1993 г. начались работы над проектом Free Pascal (FPC - Free Pascal Compiler). Первая версия FPC появилась лишь в июле 2000 г., она была полностью бесплатная и поддерживала множество платформ: Windows, Linux, FreeBSD, Mac OS X и т.п. FPC - это бесплатный открытый проект, его исходные коды для изучения или модификации доступны каждому! Чуть позже появился Lazarus - единственная в мире бесплатная графическая среда для быстрой разработки программ, использующая компилятор FPC. Как и FPC, Lazarus распространяется на условиях лицензии GNU GPL (General Public License). Если не особо вдаваться в юридические подробности, то GNU GPL - это лицензия, предоставляющая пользователю права свободно и бесплатно копировать, модифицировать и распространять (в том числе и на коммерческой основе) данный продукт. По этой же лицензии распространяются все версии ОС (Операционной Системы) Linux - бесплатном и довольно серьезном конкуренте Windows.

Итак, мы с вами будем говорить о последней (на момент написания курса) версии Lazarus - 1.0.10, работающей с компилятором FPC 2.6.2. Lazarus - молодой и бурно-развивающийся проект, новые версии выходят довольно часто, так что вы, вероятно, будете пользоваться более свежей версией. Тем не менее, на курсе рассматриваются фундаментальные вопросы программирования, которые едва ли будут пересматриваться. Так что можете изучать предоставленный материал, пользуясь версией Lazarus 1.0.10 или любой более свежей.

В силу того, что подавляющее большинство пользователей по-прежнему работает в операционной системе Windows, мы будем рассматривать работу с Lazarus именно в этой среде (автор использовал ОС Windows XP SP3). Рамки курса небезграничны, а описание особенностей работы в других платформах может лишь запутать учащихся на начальном этапе.

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

Что такое Lazarus?

Lazarus - это IDE (Integrated Development Environment) - Интегрированная Среда Разработки программ, использующая компилятор FPC (Free Pascal Compiler), редакторы кода, форм, Инспектор Объектов, отладчик и многие другие инструменты.

Еще говорят, что среда Lazarus - это RAD (Rapid Application Development) - среда Быстрой Разработки Приложений.

До сих пор среды разработки программ, подобные Lazarus, были исключительно платными. Lazarus же стал первой (и пока единственной) IDE, доступной образовательным и государственным учреждениям совершенно бесплатно. Более того, Lazarus является проектом Open Source - проектом с открытым исходным кодом. Многие программисты по всему миру принимают участие в его развитии, исходный код Lazarus доступен для изучения и модификации. Lazarus имеет поддержку множества языков, в том числе и русского, что выгодно отличает его от других IDE.

Где взять?

В правой верхней части сайта вы увидите следующую картинку:

(рис 1.1) Выбор и закачка необходимой реализации

Здесь вы сможете выбрать реализацию именно под вашу платформу, от Windows до Mac OS X, как 32-х так и 64-х разрядную. При написании курса использовался 32-х разрядный Lazarus для платформы Windows.

Нажав кнопку "

В этом случае, перейдя по ссылкам, вы получите доступ к закачке нескольких файлов, например,

  • lazarus-1.0.10-fpc-2.6.2-win32.exe
  • lazarus-1.0.10-fpc-2.6.2-cross-arm-wince-win32.exe
  • README.txt
  • Нам нужен только первый файл из этого списка. Второй файл является расширением для разработки программ под Windows CE (она же WinCE) - это вариант операционной системы Microsoft Windows для наладонных компьютеров, смартфонов и встраиваемых систем. На данном курсе эту возможность мы рассматривать не будем. Последний файл - простой текстовый файл с информацией о версии, он нам тоже не нужен.

    Как установить?

    Lazarus устанавливается достаточно просто. Собственно, ничего менять нам не придется, оставим все параметры, предложенные установщиком по умолчанию. Для начала выберем русский язык установки, затем все время будем нажимать кнопки "Далее". Лишь в предпоследнем окне установщика при желании можно поставить флажок "Создать значок на Рабочем столе". Когда укажем все параметры, начнется установка Lazarus. Придется подождать пару минут, пока распакуются и скопируются множество файлов. И, наконец, кнопка "Завершить" для закрытия окна установщика. Все, Lazarus у нас есть! Мы можем его загрузить.

    В самом начале Lazarus выглядит несколько неопрятно:

    (рис 1.2) Первый запуск Lazarus

    Lazarus состоит из нескольких окон (которые стоит подравнять, чтобы они занимали весь рабочий стол и не мешали друг другу):

  • Главное окно
  • Инспектор объектов
  • Редактор форм
  • Редактор кода
  • Окно сообщений
  • (рис 1.3) Окна Lazarus

    Главное окно

    Главное окно состоит из следующих элементов:

    (рис 1.4) Главное окно Lazarus
  • Главное меню содержит все команды, необходимые для правки, компиляции, отладки программы, для запуска различных вспомогательных утилит.
  • Панель инструментов содержит кнопки чаще всего применяемых команд (эти же команды можно выполнить и с помощью Главного меню).
  • Палитра компонентов содержит множество вкладок, на которых содержится богатый выбор компонентов из собственной библиотеки компонентов Lazarus - LCL (Lazarus Component Library).
  • Инспектор объектов

    Окно Инспектора объектов состоит из двух частей:

  • Дерево объектов, в котором в древовидной форме располагаются все объекты, используемые в текущей форме.
  • Окно с вкладками, в котором можно настраивать различные свойства текущего объекта. Несмотря на то, что имеется 4 вкладки (Свойства, События, Избранное, Ограничения), чаще всего используются только первые две. О свойствах и событиях мы поговорим подробней в следующих лекциях.
  • (рис 1.5) Инспектор объектов

    Редактор форм, Редактор кода и Окно сообщений

    Последние три окна проще. Редактор форм предназначен, соответственно, для редактирования формы - положения и размеров компонентов, размещенных на этой форме.

    Несмотря на явную схожесть, форма и окно приложения - не одно и то же. Форма - это то, что видит программист в процессе разработки проекта, а окно - это то, что увидит пользователь, когда загрузит нашу программу.

    Редактор кода содержит исходный код, который нам придется вводить и модифицировать. Редактор обладает рядом полезных умений: подсвечивает синтаксис команд, делает авто-отступ и авто-завершение команд, выводит необходимые подсказки, в общем, сильно облегчает жизнь программисту.

    (рис 1.6) Редактор кода

    Нам придется часто переключаться между Редактором форм и Редактором кода. Проще всего это делать кнопкой <F12>.

    И, наконец, Окно сообщений выводит различные сообщения: о найденных ошибках, о завершении компиляции, о наличии объявленных, но неиспользуемых переменных и т.п.

    Схожесть и отличия с Delphi

    Я не мог не упомянуть о Delphi, который является платным аналогом Lazarus, и его предшественником. И Lazarus, и Delphi поддерживают код Объектного Паскаля, используют визуальные и невизуальные компоненты, имеют схожий интерфейс. Взгляните на рисунок:

    (рис 1.7) Окна Delphi 7

    Как видите, Lazarus очень похож на Delphi, однако есть и отличия.

  • Lazarus, в отличие от Delphi, бесплатен, и может свободно и легально применяться в любом учебном, государственном или производственном учреждении, или дома.
  • Lazarus имеет собственную библиотеку компонентов LCL (Lazarus Component Library), а Delphi - VCL (Visual Component Library). Однако VCL и LCL во многом так похожи, что программист при работе с компонентами почти не ощущает разницы. Часто (но не всегда) проекты, написанные на Delphi можно без потерь компилировать на Lazarus.
  • Lazarus кросс-платформенная IDE, то есть, поддерживает различные операционные системы. Существует, правда, Kilyx - реализация Delphi для Linux, однако Lazarus имеет реализации для гораздо большего списка операционных систем, причем как 32-х, так и 64-х разрядных версий.
  • Lazarus, в силу того, что моложе Delphi, пока имеет меньшую поддержку: дополнительные компоненты сторонних разработчиков, книги на русском языке, сайты, посвященные языку и т.п.
  • Lazarus имеет менее развитые средства для работы с Базами Данных. Будем надеяться, это временный недостаток.
  • Некоторые компоненты LCL в Lazarus еще "сырые" - иногда попадаются свойства, которые не работают. Чаще всего, это второстепенные свойства, так что можно смело использовать компоненты и без них.
  • Несмотря на все отличия, эти IDE так похожи, что можно смело утверждать - Delphi-программист почти без усилий сможет пользоваться Lazarus, и наоборот. А бурное развитие молодого Lazarus гарантирует, что в будущем его немногочисленные недостатки будут исправлены.

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

    Прежде всего, давайте создадим где-нибудь общую папку, в которую затем будем складывать все наши проекты. Пусть это будет

    C:\Education\
    (education - образование)

    Каждый проект по правилам, должен сохраняться в отдельную папку. Чтобы не запутаться, будем давать этим папкам имена, соответствующие номеру лекции, и номеру проекта в ней (лекция-проект). То есть, в первой лекции первый проект будет сохранен в папку

    C:\Education\01-01

    Вы можете выработать и собственные правила наименования папок - суть от этого не изменится, лишь бы вы сами потом в них не запутались. Мы несколько раз упомянули слово проект.

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

    По традиции, первая созданная программа должна просто выводить сообщение "Hello, world!" ("Привет, мир!"). Не будем отступать от традиций, и сделаем это тремя разными способами. Итак, создадим на диске указанные выше папки, куда сохраним наш первый проект. Загружаем Lazarus, если он еще не загружен, и выделяем редактор форм. В левой части, если вы не забыли, находится Инспектор объектов, и в нем выделена вкладка "Свойства" - это нам и нужно. Среди свойств найдите Caption, и вместо текста

    Form1

    который там находится по умолчанию, впишите

    Hello, world!

    По окончании этой процедуры нажмите <Enter>. Как только вы это сделаете, текст в заголовке формы изменится:

    (рис 1.8) Первые шаги

    Теперь обратите внимание на Палитру компонентов. На вкладке Standard, четвертый значок изображает кнопку с надписью "Ok" на ней. Эта кнопка нам и нужна.

    (рис 1.9) Кнопка TButton в Палитре компонентов

    Щелкните по ней мышью, а затем щелкните уже по форме, примерно по центру. На форме тут же появится кнопка, обрамленная рамочкой, с надписью Button1 - такое имя Lazarus дал кнопке по умолчанию. Рамочка вокруг кнопки говорит о том, что ухватившись мышью за одну из ее сторон или углов, мы сможем менять размеры кнопки. Ухватившись за саму кнопку, мы сможем перемещать ее по форме.

    Слева, в Инспекторе объектов, список свойств также изменился - некоторые остались прежними, другие добавились. Поступим, как и в прошлый раз - в свойстве Caption вместо Button1 впишем Hello, world!. Затем мышью изменим размеры и расположение кнопки, чтобы у нас получилось примерно следующее:

    (рис 1.10) Кнопка до и после обработки

    Обратите внимание: перемещать кнопку по форме можно не только мышью, но и клавишами <Ctrl> + <Кнопки управления курсором> (стрелки вверх, вниз, влево, вправо). А изменять ее размеры - клавишами <Shift> + <Кнопки управления курсором>. Этот способ удобней для более точной настройки положения и размеров любых компонентов, не только кнопки.

    Мы попробовали два способа вывести нужный текст. Теперь поработаем с исходным кодом. Щелкните дважды по кнопке, и Lazarus откроет Редактор кода, создав обработчик для этой кнопки, и установив курсор внутрь него. Здесь нам пока ничего понимать не нужно, просто впишите текст, прямо туда, где находится курсор:

    ShowMessage('Hello, world!');
        

    Чтобы получилось так:

    (рис 1.11) Код обработчика кнопки

    На этом наш проект закончен. Осталось сохранить его и скомпилировать в программу. Выберите команду меню Файл -> Сохранить все, или (что проще) нажмите соответствующую кнопку на Панели инструментов:

    (рис 1.12) Кнопки сохранения

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

    Как только вы сохраните проект, выйдет еще один запрос - на сохранение файла модуля Unit1. Здесь мы тоже оставляем название по умолчанию, нажмем лишь кнопку "Сохранить". Обратите внимание - кнопки "Сохранить" и "Сохранить всё" стали неактивными - это означает, что ни в форме, ни в проекте в целом у нас изменений нет.

    Хорошо, проект мы сохранили, однако работающей программы у нас пока нет. Чтобы ее получить, нужно скомпилировать проект. Причем сделать это можно тремя командами Главного меню:

  • Запуск -> Компилировать
  • Запуск -> Собрать
  • Запуск -> Запустить
  • Последняя команда не только компилирует проект и создает загрузочный файл программы, но и сразу запускает его на выполнение, так что в большинстве случаев предпочтительней именно эта команда. Удобнее всего воспользоваться соответствующей кнопкой на Панели инструментов:

    (рис 1.13) Кнопка запуска

    Нажмите эту кнопку, проект скомпилируется и сразу же запуститься. Как только мы нажмем кнопку "Hello, world!" в окне программы, выскочит записанное в Редакторе кода сообщение:

    (рис 1.14) Работа нашей программы

    Нажмите кнопку "Ок", закрыв сообщение, после чего закройте саму программу (не проект!). Если выйдет подобное сообщение:

    (рис 1.15) Сообщение об остановке выполнения

    то советую нажать кнопку "Больше не показывать это сообщение", чтобы в дальнейшем оно вам не надоедало. После этого можете закрыть и Lazarus. Исполняемый файл project1.exe с нашей программой вы найдете в папке, куда сохраняли проект. Это уже вполне работоспособная программа, её можно запустить прямо из этой папки или переслать другу, чтобы он позавидовал вашим новым знаниям (для выполнения программы требуется только один файл project1.exe, остальные файлы не нужны - это файлы проекта, которые нужны только программисту).

    Полезные ссылки

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

  • http://lazarus.freepascal.org/ - Официальный сайт Lazarus. Здесь вы сможете и новые версии найти, и новости почитать.
  • http://wiki.freepascal.org/Main_Page/ru - Русскоязычная документация по Lazarus и Free Pascal. Если постараться, тут можно найти ответы почти на все вопросы, которые непременно у вас будут возникать.
  • http://www.cyberforum.ru/lazarus/ - Большой форум по Lazarus. Форумы вообще очень полезны и информативны, а форумы о программировании особенно. Даже если вы и не смогли найти в Интернете решение вашей проблемы, на форуме непременно найдется какой-нибудь "гуру", который вам поможет советом.
  • http://www.freepascal.ru/ - Русскоязычный информационный портал о Free Pascal и Lazarus. Тоже весьма полезный сайт.
  • http://lazarus.16mb.com/ - А это уже мой сайт, который задумывался для поддержки данного курса. В разделе "Скачать" вы сможете найти исходные коды всех примеров из всех лекций курса на случай, если у вас что-то не будет получаться, или будет просто лень набивать код самостоятельно. Там же вы найдете и сможете скачать все инструменты программиста, которые рассматриваются на данном курсе, за исключением самого Lazarus - программа очень часто обновляется, а на сайте разработчика всегда самая свежая версия, поэтому скачивать Lazarus разумней там. Так же, на сайте я постараюсь почаще выкладывать дополнительный материал, не вошедший в данный курс.
  • Вернуться к учебному плану