WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Pages:     || 2 | 3 | 4 |

«Free Pascal и Lazarus Учебник по программированию Е. Р. Алексеев О. В. Чеснокова Т. В. Кучер Москва ALT Linux; Издательский дом ДМК-пресс 2010 УДК 004.432 ББК 22.1 А47 Алексеев Е. Р., Чеснокова О. В., Кучер Т. В. А47 ...»

-- [ Страница 1 ] --

В серии: Библиотека ALT Linux

Free Pascal и Lazarus

Учебник по программированию

Е. Р. Алексеев

О. В. Чеснокова

Т. В. Кучер

Москва

ALT Linux; Издательский дом ДМК-пресс

2010

УДК 004.432

ББК 22.1

А47

Алексеев Е. Р., Чеснокова О. В., Кучер Т. В.

А47 Free Pascal и Lazarus: Учебник по программированию / Е. Р. Алексеев, О. В. Чеснокова, Т. В. Кучер М. : ALT Linux ; Издательский дом ДМК-пресс, 2010. 440 с. : ил.

(Библиотека ALT Linux).

ISBN Free Pascal свободная реализация языка Паскаль, совместимая с Borland Pascal и Object Pascal Delphi, но при этом обладающая и некоторыми дополнительными возможностями. Свободный компилятор Free Pascal кросплатформенный продукт, реализованный, в частности, для операционных систем Linux и Windows. Данная книга представляет собой учебник по алгоритмизации и программированию на основе языка Free Pascal. Кроме того, читатель познакомится с принципами создания визуальных приложений в среде Lazarus.

К каждой теме прилагаются 25 вариантов задач для самостоятельного решения, что позволит использовать книгу не только начинающим самостоятельно изучать программирование, но и преподавателям в учебном процессе.

Сайт книги: http://books.altlinux.ru/freepascal/ Книга адресована преподавателям и учащимся средних и высших учебных заведений, а также широкому кругу читателей, интересующихся программированием.

УДК 004. ББК 22. Книгу можно приобрести:

В компании Альт Линукс : (495) 662-3883. E-mail: [email protected] Internet-магазин: http://shop.altlinux.ru В торгово-издательском холдинге Альянс-книга :

Оптовые покупки: (495) 258-91-94, 258-91-95. E-mail: [email protected] Internet-магазин: http://www.alians-kniga.ru/ Материалы, составляющие данную книгу, распространяются на условиях лицензии GNU FDL. Книга содержит следующий текст, помещаемый на первую страницу обложки: В серии “Библиотека ALT Linux”. Название: Free Pascal и Lazarus: Учебник по программированию.

Книга не содержит неизменяемых разделов. Авторы разделов указаны в заголовках соответствующих разделов. ALT Linux торговая марка компании ALT Linux. Linux торговая марка Линуса Торвальдса. Прочие встречающиеся названия могут являться торговыми марками соответствующих владельцев.

c ISBN Алексеев Е. Р., Чеснокова О. В., Кучер Т. В., c ALT Linux, Оглавление От редакции О свободном программном обеспечении для образования........ О книжной серии Библиотека ALT Linux................ Введение Глава 1. Средства разработки программ на языке Free Pascal Процесс разработки программы...................

1.1 Среда программирования Free Pascal................

1.2 Среда разработки Geany.......................

1.3 Среда визуального программирования Lazarus...........

1.4 Глава 2. Общие сведения о языке программирования Free Pascal Структура проекта Lazarus......................

2.1 Структура консольного приложения.................

2.2 Элементы языка.. ..........................

2.3 Данные в языке Free Pascal.....................

2.4 Операции и выражения........................

2.5 Стандартные функции ........................

2.6 Задачи для самостоятельного решения...............

2.7 Глава 3. Операторы управления Основные конструкции алгоритма..................

3.1 Оператор присваивания........................

4.1 Общие сведения о подпрограммах. Локальные и глобальные 4.2 Формальные и фактические параметры. Передача параметров Глава 5. Использование языка Free Pascal для обработки 5.11 Использование указателей для работы с динамическими Задачи для самостоятельного решения...............

От редакции О свободном программном обеспечении для образования Эта книга не просто учебник по программированию на давно уже ставшем традиционным для преподавания языке Паскаль. Это первое издание на русском языке, посвященное свободной реализации этого языка Free Pascal и свободной же интегрированной среде разработки Lazarus. Как и любые свободные программы, компилятор Free Pascal compiler и среда Lazarus могут быть установлены на любое количество компьютеров бесплатно (без лицензионных отчислений), могут использоваться без ограничений, их исходные тексты полностью доступны для изучения и модификации. А это означает, что они идеально подходят для задач и условий обучения программированию, не накладывая на учащих и учащихся дополнительных расходов и давая им возможность максимально полно разобраться в предмете (вплоть до анализа исходных текстов компилятора).

Преимущества свободного программного обеспечения для образования были признаны в России на самом высоком уровне, и осенью 2007 года состоялся первый открытый конкурс на разработку и поставку пакета свободного программного обеспечения. Его победителем стала группа Армада. Соисполнителем по этому конкурсу стала компания ALT Linux, работающая с 2001 года и являющаяся российским лидером в разработке свободного ПО и дистрибутивов на базе Linux.



В рамках проекта сотрудниками ALT Linux был разработан и протестирован пакет свободного программного обеспечения (ПСПО)1, который был внедрен более чем в 1000 школ трех пилотных регионов России Республики Татарстан, Пермского края и Томской области. В этих регионах была отработана не только технология внедрения, но и технология организации техподдержки, что очень важно для успеха проекта. Несмотря на то что пилотных регионов только три, любая школа России могла добровольно присоединиться к проекту и бесплатно получить комплект ПСПО. Для популяризации этой возможности и проекта в целом был проведен ряд семинаров в разных уголках страны. По итогам года, в проекте внедрения участвует 2151 школа.

1 http://linux.armd.ru В 2010 году компания ALT Linux выпустила новый комплект образовательных дистрибутивов, Альт Линукс 5.0 Школьный2, который является авторским развитием пакета свободного программного обеспечения (ПСПО) 2007 2008 годов.

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

Альт Линукс Школьный может быть установлен практически на любой компьютер, так как включает в себя версии, адаптированные под различные системные требования аппаратного обеспечения.

Дистрибутивы комплекта Альт Линукс 5.0 Школьный включают Free Pascal и Lazarus и идеально подходят для освоения материала книги и организации преподавания на основе языка Free Pascal.

О книжной серии Библиотека ALT Linux Библиотека ALT Linux серия книг о свободном программном обеспечении и самых разных областях его применения, издаваемая компанией ALT Linux совместно с издательством ДМК-Пресс.

К настоящему моменту в серии вышли книги:

• Г. В. Курячий, К. А. Маслинский Введение в ОС Linux: Курс лекций. Учебное пособие. М., 2010.

• В. Б. Волков Линукс Юниор: Книга для учителя. М, 2010.

• И. А. Хахаев Свободный графический редактор GIMP: Первые шаги. М., • И. А. Хахаев и др. OpenOce.org: Теория и практика. М., 2008.

• Е. Р. Алексеев, Е. А. Чеснокова, Е. А. Рудченко Scilab: Решение инженерных и математических задач. М., 2008.

• ALT Linux снаружи. ALT Linux изнутри. М., 2006.

Материалы всех публикуемых в серии книг распространяются под свободными лицензиями, а полные электронные версии книг представлены в открытом доступе в Интернете. Более подробную информацию о серии, вышедших и готовящихся книгах вы найдёте на сайте проекта3.

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

2 http://www.altlinux.ru/products/5th-platform/school-box/ 3 http://books.altlinux.org Введение Авторы книги давно хотели написать учебник по программированию, который был бы полезен пользователям различных операционных систем. Благодаря компании ALT Linux, мы попытались это сделать. В качестве языка программирования был выбран язык Free Pascal, который представляется нам ясным, логичным и гибким языком и приучает к хорошему стилю программирования. Свободно распространяемые компиляторы языка Free Pascal реализованы во многих дистрибутивах Linux, есть свободные компиляторы и для ОС Windows. Кроме того, в этой книге мы попытались познакомить читателя с принципами создания визуальных приложений в среде Lazarus.

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

Авторы надеются, что читатель имеет первоначальные навыки работы на персональном компьютере под управлением ОС Linux или Windows и знаком со школьным курсом математики.

Книга состоит из десяти глав.

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

Во второй главе изложены основные элементы языка (переменные, выражения, операторы) Free Pascal. Описаны простейшие операторы языка: присваивания и ввода-вывода, приведена структура программы, приведены примеры простейших программ линейной структуры.

Третья глава является одной из ключевых в изучении программирования.

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

В четвёртой главе читатель на большом количестве примеров познакомится с подпрограммами. Описан механизм передачи параметров между подпрограммами. Один из параграфов посвящён рекурсивным подпрограммам. В завершении главы рассмотрен вопрос создания личных модулей.

Пятая и шестая главы посвящены изучению алгоритмов обработки массивов и матриц. Здесь же читатель познакомится и с реализацией этих алгоритмов на языке Free Pascal. Именно эти главы совместно с третьей являются ключом к пониманию принципов программирования.

Седьмая глава знакомит читателя с обработкой файлов на языке Free Pascal под управлением ОС Linux и Windows. На практических примерах изложен механизм прямого и последовательного доступа к файлам и обработки ошибок ввода-вывода. Описана работа с бестиповыми и текстовыми файлами.

Восьмая глава посвящена обработке строк и записей. Приведённые примеры позволят читателю разобраться с принципами обработки таблиц в языке Free Pascal.

В девятой главе авторы описали принципы объектно-ориентированного программирования и их реализацию в языке Free Pascal.

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

К каждой теме прилагаются 25 вариантов задач для самостоятельного решения, что позволит использовать книгу не только начинающим самостоятельно изучать программирование, но и преподавателям в учебном процессе.

С рабочими материалами книги можно познакомиться на сайте Евгения Ростиславовича Алексеева http://www.teacher.dn-ua.com.

Авторы благодарят компанию ALT Linux и лично Кирилла Маслинского за возможность издать эту книгу.

Авторы выражают благодарность своим родным за помощь и понимание.

Глава Средства разработки программ на языке Free Pascal В этой главе мы начинаем знакомство с программированием на языке Free Pascal. Язык программирования Free Pascal ведёт своё начало от классического языка Pascal, который был разработан в конце 60-х годов XX века Никлаусом Виртом. Н. Вирт разрабатывал этот язык как учебный язык для своих студентов. С тех пор Pascal, сохранив простоту и структуру языка, разработанного Н. Виртом, превратился в мощное средство программирования. С помощью современного языка Pascal можно производить простые расчёты, разрабатывать программы для проведения сложных инженерных и экономических вычислений.

1.1 Процесс разработки программы Разработку программы можно разбить на следующие этапы:

1) Составление алгоритма решения задачи. Алгоритм это описание последовательности действий, которые необходимо выполнить для решения поставленной задачи.

2) Написание текста программы. Текст программы пишут на каком-либо языке программирования (например на Free Pascal) и вводят его в компьютер с помощью текстового редактора.

3) Отладка программы. Отладка программы это процесс устранения ошибок из текста программы. Все ошибки делятся на синтаксические и логические. При наличии синтаксических ошибок (ошибок в написании операторов) программа не запускается. Подобные ошибки исправляются проще всего. Логические ошибки это ошибки, при которых программа работает, но неправильно. В этом случае программа выдаёт не те результаты, которые ожидает разработчик или пользователь. Логические ошибки исправить сложнее, чем синтаксические, иногда для этого придётся переписывать отдельные участки программы, а иногда и перерабатывать весь алгоритм.

4) Тестирование программы. Тестирование программы процесс выявления ошибок в работе программы.

Процессы отладки и тестирования сопровождаются неоднократным запуском программы на выполнение. Процесс запуска программы может быть осуществлён только после того, как введённая в компьютер программа на алгоритмическом языке Pascal1 будет переведена в двоичный машинный код и создан исполняемый файл. Процесс перевода текста программы в машинный код называют трансляцией. Все трансляторы делятся на два класса:

• интерпретаторы трансляторы, которые переводят каждый оператор программы в машинный код, и по мере перевода операторы выполняются процессором;

• компиляторы переводят всю программу целиком, и если перевод всей программы прошёл без ошибок, то полученный двоичный код можно запускать на выполнение.

Если в качестве транслятора выступает компилятор, то процесс перевода текста программы в машинный код называют компиляцией. При переводе программы с языка Pascal в машинный код используются именно компиляторы2.

Рассмотрим основные этапы обработки компилятором программы на языке Pascal.

1) Компилятор анализирует, какие внешние библиотеки3 нужно подключить, разбирает текст программы на составляющие элементы, проверяет синтаксические ошибки и в случае их отсутствия формирует объектный код (в Windows файл с расширением.obj, в Linux файл с расширением.o).

Получаемый на этом этапе двоичный файл (объектный код) не включает в себя объектные коды подключаемых библиотек.

2) На втором этапе компоновщик подключает к объектному коду программы объектные коды библиотек и генерирует исполняемый код программы.

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

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

1.2 Среда программирования Free Pascal Рассмотрим процесс установки компилятора Free Pascal в ОС Linux.

Для установки программ в операционной системе Linux служит менеджер пакетов. В разных дистрибутивах Linux используются различные менеджеры 1 Как и на любом другом языке.

2 Вместо термина компилятор в литературе иногда используют термин транслятор компилирующего типа.

3 В библиотеках языка Pascal хранится объектный (двоичный) код стандартных (таких, как sin(x), cos(x) и др.) функций и процедур языка.

пакетов, например, в ALT Linux можно воспользоваться программой Synaptic.

Окно Synaptic представлено на рис. 1.1. В школьной линейке дистрибутивов ALT Linux Free Pascal и Lazarus присутствуют сразу после установки операционной системы.

Обратите внимание, что для установки программ необходимо установить список источников программ (список репозиториев4 ).

Для установки Free Pascal в окне Synaptic (см. рис. 1.1) необходимо щёлкнуть по кнопке Найти и в открывшемся окне ввести fpc (см. рис. 1.2). Менеджер программ находит программу FreePascal, после чего в окне Synaptic необходимо отметить программы fpc (Free Pascal Compiler Meta Package) для установки (с помощью контекстного меню или с помощью кнопки Отметить для обновления) и начать установку, щёлкнув по кнопке Применить. После этого начнётся процесс загрузки пакетов из Интернета и их установки.

В состав метапакета fpс входит компилятор языка Free Pascal fpc и среда разработки fp-ide. Для запуска среды разработки в Linux необходимо просто в терминале набрать fp. На рис. 1.3 представлено окно среды разработки программ на языке Free Pascal в ОС Linux.

4 Список репозиториев список официальных сайтов, с которых можно устанавливать программы.

Рис. 1.2. Окно поиска компилятора Free Pascal в Synaptic Рис. 1.3. Среда программирования Free Pascal в ОС Linux Для установки Free Pascal в ОС Windows необходимо запустить скачанный со страницы загрузки5 инсталяционный файл. Первое диалоговое окно сообщит о начале процесса установки Free Pascal на компьютер. Для продолжения установки во всех следующих окнах нужно выбирать кнопку Next, для возврата к предыдущему шагу кнопку Back, а для прерывания процесса установки кнопку Cancel. В следующем окне нужно определить путь для установки Free Pascal. По умолчанию установка происходит в корневой каталог диска С. Для выбора другого пути установки можно воспользоваться кнопкой Browse... Кроме того, в этом окне выводится информация о количестве свободного места на диске. В следующих четырёх окнах пользователь сможет выбрать из списка тип установки: Full Installation (полная), Minimum Installation (минимальная), Custom Installation (выбор компонентов), указать название устанавливаемого приложения в главном меню, выбрать типы файлов, поддерживаемых средой, 5 http://www.freepascal.org/down/i386/var.

и начать процесс установки Free Pascal, нажав кнопку Install. Контролировать процесс установки можно с помощью линейного индикатора.

Запуск среды программирования Free Pascal в Windows можно осуществить из главного меню: Пуск Программы Free Pascal Free Pascal. На экране появится окно, представленное на рис. 1.4.

Установив пакет Free Pascal, мы получили компилятор и среду программирования.

Компилятор Free Pascal работает в командной строке. Для того чтобы создать исполняемый файл из текста программы, написанного на языке Pascal, необходимо выполнить команду Здесь fpc имя исполняемого файла компилятора командной строки Free Pascal, name.pas имя файла с текстом программы. В результате в Linux будет создан исполняемый файл с именем name (в Windows имя исполняемого файла name.exe).

При использовании компилятора fpc после компиляции автоматически происходит компоновка программы (запуск компоновщика make).

Технология работы с компилятором Free Pascal может быть такой: набираем текст программы в стандартном текстовом редакторе, затем в терминале запускаем компилятор, после исправления синтаксических ошибок запускаем исполняемый файл. При такой технологии работы с компилятором, необходимо не забывать сохранять текст программы, иначе при запуске компилятора будет компилироваться старая версия текста программы.

Однако среда программирования позволяет значительно упростить процесс разработки программ. В состав среды программирования Free Pascal входит текстовый редактор, транслятор и отладчик. Рассмотрим их работу подробнее.

1.2.1 Работа в текстовом редакторе Free Pascal С помощью редактора Free Pascal можно создавать и редактировать тексты программ. После открытия пустого окна (File New) или загрузки текста программы (File Open) мы находимся в режиме редактирования, что подтверждается наличием в окне курсора (небольшого мигающего прямоугольника).

Для перехода из режима редактирования к главному меню нужно нажать клавишу F10, обратно Esc. Кроме того, этот переход можно осуществить щелчком мыши либо по строке главного меню, либо по полю редактора.

Редактор Free Pascal обладает возможностями, характерными для большинства текстовых редакторов. Остановимся на некоторых особенностях.

Работа с фрагментами текста (блоками) в редакторе Free Pascal может осуществляться с помощью главного меню и функциональных клавиш. Выделить фрагмент текста можно с помощью клавиши Shift и клавиш перемещения курсора (стрелок).

В главном меню для работы с фрагментами текста предназначены команды пункта редактирования Edit:

• Copy (Ctrl+C) копировать фрагмент в буфер;

• Cut (Ctrl+X) вырезать фрагмент в буфер;

• Paste (Ctrl+V) вставить фрагмент из буфера;

• Clear (Ctrl+Del) очистить буфер;

• Select All выделить весь текст в окне;

• Unselect отменить выделение.

Команды Copy и Cut применяют только к выделенным фрагментам текста.

Кроме того, пункт меню Edit содержит команды Undo и Redo, с помощью которых можно отменять и возвращать выполненные действия.

Комбинации клавиш, предназначенные для работы с блоком, таковы:

• Ctrl+K+B пометить начало блока;

• Ctrl+K+K пометить конец блока;

• Ctrl+К+Т пометить в качестве блока слово слева от курсора;

• Ctrl+K+Y стереть блок;

• Ctrl+K+C копировать блок в позицию, где находится курсор;

• Ctrl+K+V переместить блок в позицию, где находится курсор;

• Ctrl+K+W записать блок в файл;

• Ctrl+K+R прочитать блок из файла;

• Ctrl+K+P напечатать блок;

• Ctrl+К+Н снять пометку блока; повторное использование Ctrl+К+Н вновь выделит блок.

Работа с файлами в среде Free Pascal осуществляется с помощью команд File главного меню и функциональных клавиш:

• New открыть окно для создания новой программы;

• Open (F3) открыть ранее созданный файл;

• Save (F2) сохранить созданный файл;

• Save As сохранить файл под другим именем;

• Exit (Alt+X) выйти из среды программирования.

При создании новой программы ей по умолчанию присваивается стандартное имя NONAMEOO.PAS (NO NAME нет имени).

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

В редакторе Free Pascal допускается работа с несколькими окнами. Переключаться между окнами можно двумя способами:

• для переключения в окно с номером от первого до девятого нажать комбинацию клавиш Alt+i, где i номер окна (например Alt+5 вызов пятого • для вывода списка окон на экран нажать комбинацию клавиш Alt+0, появится список активных окон, в котором будет необходимо выбрать нужное и нажать Enter.

1.2.2 Запуск программы в среде Free Pascal и просмотр результатов После того как текст программы набран, его следует перевести в машинный код. Для этого необходимо вызвать транслятор с помощью команды Compile Compile (комбинация клавиш Alt+F9). На первом этапе транслятор проверяет наличие синтаксических ошибок. Если в программе нет синтаксических ошибок, то на экране сообщается о количестве строк транслированной программы и объме доступной оперативной памяти.

Если на каком-либо этапе транслятор обнаружит ошибку, то в окне редактора курсор укажет ту строку программы, в которой ошибка была обнаружена.

При этом в верхней строке редактора появится краткое диагностическое сообщение о причине ошибки.

Для запуска транслированной программы необходимо выполнить команду Run Run (комбинация клавиш Ctrl+F9), после чего на экране появляется окно командной строки, в котором пользователь и осуществляет диалог с программой. После завершения работы программы вновь появляется экран среды Free Pascal.

Для просмотра результатов работы программы в OC Windows необходимо нажать комбинацию клавиш Alt+F5. Для возврата в оболочку следует нажать любую клавишу.

Рис. 1.5. Окно Geany c шаблоном программы на Free Pascal Однако при использовании среды программирования существует проблема вывода кириллического текста в консольном приложении.

Альтернативой среды программирования Free Pascal является текстовый редактор Geany (http://www.geany.org), который позволяет разрабатывать программы на различных языках программирования.

1.3 Среда разработки Geany Среда разработки (её также иногда называют текстовым редактором) Geany есть в репозитории большинства современных дистрибутивов Linux6. Разработка программ с использованием Geany довольна удобна. Geany можно установить стандартным для вашего дистрибутива способом, например, с помощью менеджера пакетов Synaptic.

Последовательно рассмотрим основные этапы разработки программы с использованием Geany.

1) Необходимо создать шаблон приложения на Pascal (или другом языке программирования) с помощью команды Файл New (with Template) Pascal source le. После чего появится окно с шаблоном исходного кода 6 Существует версия Geany и для Windows (http://www.geany.org/Download/Releases).

Рис. 1.6. Окно Geany c текстом программы на языке Free Pascal (см. рис. 1.5), в котором необходимо ввести текст программы и сохранить его (см. рис. 1.6).

2) Для компиляции и запуска программы на выполнение служит пункт меню Построить. Для компиляции программы следует использовать команду Построить Собрать (F8). В этом случае будет создан файл с объектным кодом программы и исполняемый файл. После компиляции программы ниже окна с программой будет представлен подробный отчёт (см. рис. 1.6) о результатах компиляции. Этот отчёт следует внимательно изучить, поскольку он позволяет быстро исправлять синтаксические ошибки. В сообщении об ошибке указана строка, где она найдена, и её краткое описание на английском языке. В отчётах по результатам компиляции могут быть ошибки (error ) и сообщения (warning). Сообщения это обнаруженные компилятором неточности, при которых, однако, возможно создание исполняемого кода программы.

3) Для запуска программы следует выполнить команду Построить Выполнить (F5). После чего на экране появится окно терминала (см. рис. 1.7), в котором можно вводить данные и увидеть результаты работы программы.

В Geany можно настроить команды вызова компиляции, компоновки и запуска. Для этого служит команда Построить Установить включения и аргументы. Это окно для работы с файлами с расширением pas представлено на ***** ******* Рис. 1.7. Окно терминала с результатами работы программы Рис. 1.8. Окно Установить включения и аргументы для Free Pascal рис. 1.8. При настройке строк Compile и Запуск следует учитывать, что %f имя компилируемого файла, %e имя файла без расширения.

Выбор среды для разработки консольных программ на Free Pascal дело пользователя. Авторы советуют читателю под управлением ОС Linux использовать Geany7, хотя для набора текста программы можно использовать и обычный текстовый редактор (например gedit, tea, kate и др.), а компиляцию осуществлять в терминале. Под управлением Windows логичнее использовать fp-ide.

1.4 Среда визуального программирования Lazarus Lazarus это среда визуального программирования. Здесь программист получает возможность не просто создавать программный код, но и наглядно (визуально) показывать системе, что бы он хотел увидеть.

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

8 Интерфейс диалог, обмен информацией.

Рис. 1.9. Окно поиска пакета Lazarus для установки создания программного кода в Lazarus достигается за счёт того, что значительная часть текста формируется автоматически.

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

1.4.1 Установка Lazarus в ОС Linux Для установки Lazarus в окне Synaptic (см. рис. 1.1) необходимо щёлкнуть по кнопке Найти. В появившемся окне поиска (см. рис. 1.9) вводим имена необходимых программ (lazarus, fp, fpc, fpc-source) и щёлкаем по кнопке Найти.

Менеджер программ находит программы Lazarus и FreePascal, после чего в окне Synaptic необходимо отметить программы Lazarus, fp, fpc, fpc-ide для установки (с помощью контекстного меню или с помощью кнопки Отметить для обновления) и начать установку, щёлкнув по кнопке Применить. После этого Synaptic предложит установить ещё несколько пакетов, которые необходимы для нормального функционирования Lazarus. С этим предложением нужно согласиться. После этого начнётся процесс загрузки файлов пакетов и установки Lazarus на компьютер. После установки запуск программы осуществляется с помощью команды меню Разработка Lazarus9.

Для установки Lazarus можно не использовать менеджер пакетов Synaptic, а самостоятельно загрузить все необходимые пакеты с сайта проекта10 и затем вручную их установить. Подробное описание процесса ручной установки можно найти в Интернете11.

1.4.2 Установка Lazarus под управлением ОС Windows Рассмотрим особенности установки среды визуального программирования Laza-rus для операционной системы Windows. Перед установкой необходимо скачать установочный файл со страницы загрузки12. Установка Lazarus на компьютер осуществляется с помощью Мастера установки. Для того чтобы Мастер 9 Не исключено, что вызов Lazarus в других дистрибутивах Linux может осуществляться и с помощью другой команды главного меню.

10 http://sourceforge.net/project/showfiles.php?group_id=89339.

11 http://freepascal.ru/article//lazarus/20080316091540.

12 http://sourceforge.net/project/showfiles.php?group_id=89339.

Рис. 1.10. Окно Мастера установки. Выбор языка.

Рис. 1.11. Начало процесса установки Lazarus начал свою работу, необходимо запустить программу установки Lazarus Setup.

Появится диалоговое окно (рис. 1.10), в котором пользователь может выбрать из списка язык для дальнейшего диалога с Мастером установки. Нажатие кнопки ОК приведёт к появлению следующего окна. Использование кнопки Отмена в этом и во всех последующих окнах приведёт к прерыванию работы Мастера установки.

Следующее окно (рис. 1.11) информационное. Оно сообщает пользователю о начале процесса установки. Нажатие кнопки Далее приведёт к следующему шагу Мастера установки.

На следующем этапе (рис. 1.12) необходимо выбрать путь для установки Lazarus. По умолчанию программа будет установлена на диск С. Для выбора иного пути для установки следует воспользоваться кнопкой Обзор. В этом и во всех последующих окнах с помощью кнопки Назад можно вернуться к предыдущему шагу Мастера установки.

Рис. 1.12. Окно выбора пути для установки Lazarus Рис. 1.13. Окно выбора компонентов для установки приложения Следующий шаг выбор из полного перечня средств системы необходимых компонентов (рис. 1.13). По умолчанию будут установлены все компоненты системы. Отменить установку компонента можно, если щелчком мыши убрать метку рядом с его именем.

Рис. 1.14. Среда визуального программирования Lazarus В следующих окнах Мастера установки пользователь может выбрать папку меню Пуск, в которой будет создан ярлык для устанавливаемого приложения13, и создать на рабочем столе ярлык для приложения Lazarus14. Далее Мастер установки сообщит о том, куда будет установлено приложение Lazarus, коков тип установки, какие компоненты системы были выбраны, где будет создан ярлык и будет ли создан значок на рабочем столе. После этого начнётся процесс установки приложения на компьютер. Контролировать установку приложения пользователь может с помощью линейного индикатора, а прервать кнопкой Отмена. Завершается процесс установки щелчком по кнопке Завершить. Запуск Lazarus можно осуществить из главного меню командой Пуск Программы Lazarus Lazarus.

1.4.3 Среда Lazarus На рис. 1.14 показано окно, которое появится после запуска Lazarus. В верхней части этого окна размещается главное меню и панель инструментов. Слева расположено окно инспектора объектов, а справа окно редактора исходного кода.

Если свернуть или сдвинуть окно редактора, то станет доступным окно формы, представленное на рис. 1.15.

Работу над программой в среде визуального программирования условно можно разбить на две части. Первая это создание внешнего вида (интерфейса) 13 Поумолчанию ярлык создаётся в меню Пуск Программы.

14 Спомощью щелчка мыши установить маркер в поле рядом с командой Создать значок на рабочем столе.

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

1.4.4 Главное меню Lazarus Все команды, необходимые для работы в среде визуального программирования Lazarus, содержаться в главном меню. Доступ к командам главного меню осуществляется одинарным щелчком левой кнопкой мыши.

Работа с файлами в среде Lazarus осуществляется при помощи пункта меню Файл. Команды этого пункта меню можно разбить на группы:

• создание новых файлов Создать модуль, Создать форму, Создать... ;

• загрузка ранее созданных файлов Открыть..., Вернуть, Открыть недавнее;

• сохранение файлов Сохранить, Сохранить как..., Сохранить все;

• закрытие файлов Закрыть, Закрыть все файлы редактора;

• удаление файлов из каталога Очистить каталог... ;

• вывод на печать Печать... ;

• перезагрузка среды Перезапуск;

• выход из среды Выход.

Команды, предназначенные для редактирования текста программного кода, собраны в меню Правка. В основном, это команды, характерные для большинства текстовых редакторов:

• команды отмены или возврата последней операции Отменить, Вернуть;

Рис. 1.16. Выбор конструкции языка для заключения в неё выделенного фрагмента программного кода • команды переноса, копирования и вставки выделенного фрагмента текста в буфер Вырезать, Копировать, Вставить;

• команды, работающие с выделенным блоком текста Сдвинуть блок вправо, Сдвинуть блок влево;

• команды смены регистра Верхний регистр выделения, Нижний регистр выделения;

• команды выделения фрагмента текста собраны в пункте меню Выделить.

Далее будут перечислены специфические команды редактора программного кода Lazarus.

Команда Закомментировать добавляет в начале каждой строки выделенного фрагмента два символа косая черта, что превращает выделенный текст в комментарий 15, команда Раскомментировать выполняет обратное действие.

Команда Заключить выделение в... приводит к открытию диалогового окна (рис. 1.16), в этом окне пользователь может выбрать конструкцию языка программирования, в которую будет заключён выделенный фрагмент текста.

Команда Сортировка выбранного... также открывает диалоговое окно, в котором можно установить параметры сортировки текста в выделенном фрагменте.

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

Пункт меню Просмотр применяют для настройки внешнего вида среды программирования.

15 Комментарий фрагмент программного кода, который игнорируется компилятором.

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

Первая группа команд открывает или активизирует следующие окна:

• Инспектор объектов окно, с помощью которого можно описать внешний вид и поведение выделенного объекта (подробно см. п. 1.4.8);

• Редактор исходного кода окно, в котором можно создавать и редактировать текст программы (подробно см. п. 1.4.6);

• Обозреватель кода содержит общую информацию о проекте;

• Редактор LazDoc редактор шаблонов;

• Браузер кода окно проводника проекта.

Следующая группа команд пункта меню Просмотр также открывает диалоговые окна. Эти окна носят информационный характер. Так, команды Модуль... и Форма... выводят список модулей и форм данного проекта. Назначение команд Показать зависимости модулей и Показать сведения о модуле говорят сами за себя. Последняя команда этой группы Переключить модуль/форму активизирует либо окно редактора, либо форму.

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

Команды пункта меню Проект предназначены для выполнения различных операций с проектом 16 :

• команды создания проекта Создать проект и Создать проект из • команды вызова ранее созданного проекта Открыть проект, Открыть недавний проект, Закрыть проект;

• команды сохранения проекта Сохранить проект, Сохранить проект как..., Опубликовать проект;

• команды управления проектом Инспектор проекта, Настройка проекта..., Параметры компилятора и т. д.

Команды, позволяющие запускать проект на выполнение и выполнять его отладку, содержатся в пункте главного меню Запуск:

• Собрать сборка программы из откомпилированных файлов;

• Собрать всё скомпоновать все файлы проекта;

• Быстрая компиляция компиляция файлов программы;

• Запуск запуск проекта с помощью отладчика (компиляция, компоновка и исполнение);

• Пауза приостановка выполнения программы до нажатия любой клавиши;

• Шаг со входом режим пошагового отладочного выполнения программы со входом в вызываемые процедуры и функции;

16 Отдельная программа в Lazarus называется проектом.

• Шаг в обход режим пошагового отладочного выполнения программы без входа в вызываемые процедуры и функции;

• Запуск до курсора отладка и выполнение программы в этом режиме осуществляются до оператора, стоящего в строке, помеченной курсором;

• Останов прерывание выполнения программы;

• Сброс отладчика сброс всех ранее задействованных отладочных средств и прекращение выполнения программы;

• Настройка Сборки+Запуска... настройка параметров компоновки • Вычислить/Изменить возможность просмотреть значение переменной и/или найти значение выражения в процессе выполнения программы, при необходимости можно изменить значения любой переменной;

• Добавить наблюдения открытие окна, в котором можно указать переменные и/или выражения, за изменением значений которых следует понаблюдать при отладке программы;

• Добавить точку останова установка в текущей строке контрольной точки; после запуска программного кода отладчик прекратит его выполнение перед оператором, помеченным точкой останова; в программе можно указать произвольное количество таких точек.

Работа с компонентами 17 организована при помощи команд пункта меню Компоненты. Пункты меню Инструменты и Окружение18 применяются для настройки свойств среды программирования.

Работа с окнами в Lazarus выполняется при помощи пункта меню Окна.

Названия команд этого пункта совпадают с названиями окон, и выбор любой команды приведет к активации соответствующего окна.

Пункт меню Справка это справочная информация о системе. Здесь можно вызывать средства справочной системы и выполнять её настройку.

1.4.5 Форма приложения Форма приложения (рис. 1.15) это проект интерфейса будущего программного продукта. Вначале это окно содержит только стандартные элементы: строку заголовка и кнопки развертывания, свертывания и закрытия. Рабочая область окна заполнена точками координатной сетки19. Задача программиста используя панель компонентов, заполнить форму различными интерфейсными элементами, создавая тем самым внешний вид своей программы.

Команды настройки окна формы находятся на вкладке Редактор форм (рис. 1.17) в меню Окружение Настройки окружения...

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

18 Команды пункта меню Окружение описаны в параграфе 1.4. 19 Координатная сетка отображается только на этапе создания программы при включённом флажке Показать сетку (см. рис. 1.17).

1.4.6 Окно редактора Lazarus Окно редактора (рис. 1.14) тесно связано с формой приложения (рис. 1.18) и появляется вместе с ним при создании нового проекта. Окно редактора по умолчанию находится на первом плане и закрывает окно формы. Переключаться между этими окнами можно командой Просмотр Переключить модуль / форму, клавишей F12 или просто щелчком мыши.

Окно редактора предназначено для создания и редактирования текста программы, который создается по определённым правилам и описывает некий алгоритм. Если окно формы определяет внешний вид будущей программы, то программный код, записанный в окне редактора, отвечает за её поведение.

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

Обратите внимание, что при загрузке Lazarus автоматически загружается последний проект, с которым работал пользователь. Происходит это благодаря отмеченному пункту Открывать последний проект при запуске (рис. 1.19), Рис. 1.18. Окно формы и окно редактора Рис. 1.19. Окно настройки файлов в среде Windows Рис. 1.20. Настройки окна редактора программного кода который находится на вкладке Файлы меню Окружение Настройки окружения... Если убрать метку рядом с командой Открывать последний проект при запуске, то при загрузке Lazarus будет создавать новый проект.

Настроить окно редактора можно с помощью вкладки Общие меню Окружение Настройки редактора... (рис. 1.20). Для того чтобы установить (отменить) ту или иную настройку, достаточно установить (убрать) маркер рядом с её названием и подтвердить изменения нажатием кнопки Ok.

На вкладке Дисплей меню Окружение Настройки редактора...

(рис. 1.21) можно изменить шрифт текста программного кода.

Как и в большинстве текстовых редакторов, в редакторе программного кода Lazarus предусмотрена работа с шаблонами. Здесь под шаблоном подразумевается автоматический ввод конструкций языка программирования. Например, пользователь вводит символ b, затем символ пробел, а на экране появляется конструкция begin...end. Настройку шаблонов можно выполнить в диалоговом окне (рис. 1.22), которое появится после выполнения команды Окружение Шаблоны кода... Например, чтобы заработал рассмотренный шаблон, нужно выбрать (щёлкнуть по нему мышкой) в списке шаблонов строку b begin...end и установить маркер рядом с командой Включить макросы. Затем в группе коРис. 1.21. Окно настройки редактора программного кода, вкладка Дисплей Рис. 1.22. Окно настройки шаблонов редактора программного кода в среде Linux Рис. 1.23. Окно создания шаблона программного кода манд Автозавершение при обнаружении... выбрать слово пробела. Если среди команд автозавершения выбрать конец строки, то шаблон будет появляться в тексте программы после ввода символа b и нажатия клавиши Enter.

Шаблоны можно добавлять, удалять и править. Для этого в окне Шаблоны кода предусмотрены специальные кнопки. В нижней части окна, над кнопками Ok и Отмена, расположено поле ввода и редактирования шаблонов с активным курсором. Если выделить любой шаблон из списка, щёлкнув по нему мышкой, то в поле ввода появится соответствующая конструкция.

Если воспользоваться кнопкой Добавить, то появится диалоговое окно (рис. 1.23) для создания шаблона. Здесь в поле Элемент следует указать символ или группу символов, ввод которых будет связан с создаваемым шаблоном.

В поле Комментарий можно дать краткое описание шаблона и нажать кнопку Добавить. Элемент и комментарий к нему будут добавлены в список шаблонов в окне Шаблоны кода. Теперь нужно создать сам шаблон, то есть указать, какая именно конструкция языка появится при вводе элемента в текст программы.

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

Например, создадим шаблон для конструкции repeat..until, которая будет добавлена в текст, если пользователь введёт символ r. Выполним следующую последовательность действий:

• щёлкнем по кнопке Добавить в окне Шаблоны кода (см. рис. 1.22);

• в появившемся диалоговом окне Добавить шаблон кода (рис. 1.23) в поле Элемент введём символ r, а в поле Комментарий фразу repeat until, и нажмём кнопку Добавить;

• в окне Шаблоны кода (рис. 1.24 1.25) выделим в списке шаблонов строку • введём в поле ввода, расположенном в нижней части окна, конструкцию языка repeat until;

• нажмём кнопку Ok в окне Шаблоны кода.

Для изменения шаблона служит кнопка Правка. Шаблон, который нужно откорректировать, должен быть выделен. Дальнейшие действия аналогичны тем, которые выполняются при создании шаблона.

Рис. 1.24. Создание нового шаблона в Linux Рис. 1.25. Создание нового шаблона в среде Windows Для того чтобы удалить шаблон из списка, его нужно выделить, а затем нажать кнопку Удалить.

1.4.7 Панель компонентов Панель компонентов расположена20 под главным меню (рис. 1.14). Она состоит из большого числа групп, в которых располагаются соответствующие компоненты (рис. 1.26).

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

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

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

• в панели компонентов для выбора компонента;

• в рабочем пространстве формы для указания положения левого верхнего угла компонента.

1.4.8 Инспектор объектов Окно инспектора объектов располагается слева от окна редактирования.

Как правило, оно содержит информацию о выделенном объекте. На рис. 1. представлен инспектор объектов с информацией о вновь созданной форме.

Окно инспектора объектов имеет три вкладки: Свойства, События, Избранное, которые используются для редактирования свойств объекта и описания событий, на которые будет реагировать данный объект. Совокупность свойств отображает внешнюю сторону объекта, совокупность событий его поведение.

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

20 Включить (выключить) Панель компонентов можно, установив (убрав) маркер рядом с командой Показать палитру компонентов меню Просмотр.

Чтобы выбрать свойство или событие, необходимо щёлкнуть левой кнопкой мыши по соответствующей строке.

Свойства, отображённые в таблице, могут быть простыми или сложными.

Простые свойства определены единственным значением. Например, свойство Caption (Заголовок) определяется строкой символов, свойства Height (Высота) и Width (Ширина) числом, свойство Enabled (Допустимость) значениями True (Истина) и False (Ложь). Сложные свойства определяются совокупностью значений. Например, свойство Font (Шрифт). Слева от имени этого свойства стоит знак +. Это означает, что свойство сложное, и при щелчке по значку + откроется список его составляющих.

Активизировать значение любого свойства можно обычным щелчком мыши.

При этом в конце строки может появиться либо кнопка с символом многоточия, либо кнопка со стрелкой, направленной вниз. Щелчок по многоточию откроет диалоговое окно для установки значений сложных свойств (например Font). Обращение к стрелке приведёт к раскрытию списка возможных значений простого свойства (например Enabled).

1.4.9 Первая программа в Lazarus Процесс создания программы в Lazarus состоит из двух этапов:

• формирования внешнего вида программы, её интерфейса;

• написания программного кода на языке программирования Free Pascal, заставляющего работать элементы интерфейса.

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

Рис. 1.29. Создание нового проекта в среде Windows Начнём знакомство с визуальным программированием с создания простой программы про кнопку, которая хочет, чтобы по ней щёлкнули. После чего появляется сообщение о работе программы.

Начнём с создания нового проекта. Для этого выполним команду главного меню Проект Создать проект... В появившемся диалоговом окне (рис. 1. 1.29) выберем из списка слово Приложение и нажмём кнопку Создать. Результатом этих действий будет появление окна формы и окна редактора программного кода.

Сохраним созданный проект, воспользовавшись командой Проект Сохранить проект как... Откроется окно сохранения программного кода Сохранить Unit1 (рис. 1.30 1.31).

Создадим в нём новую папку Primer_1 (можно воспользоваться кнопкой Создание новой папки (Создание каталога)), откроем её и щёлкнем по кнопке Сохранить. Тем самым мы сохраним файл Unit1.pas, содержащий текст программы. Сразу же откроется окно Сохранить проект (рис. 1.32 1.33), в котоРис. 1.30. Окно сохранения модуля в Windows Рис. 1.31. Окно сохранения модуля в Linux Рис. 1.32. Окно сохранения проекта в Windows Рис. 1.33. Окно сохранения проекта в Linux ром также необходимо щёлкнуть по кнопке Сохранить. Теперь мы сохранили файл Project1, содержащий общие сведения о проекте.

На самом деле все наши манипуляции привели к сохранению более чем двух файлов. Теперь в каталоге Primer_1 (рис. 1.34 1.35) хранится файл с текстом программы unit1.pas, файл unit1.lfm21 со сведениями о форме Form1, а также файлы project1.lpn и project1.lpi, содержащие настройки системы программирования и параметры конфигурации проекта.

Итак, проект сохранён. Все дальнейшие изменения будем сохранять командой Проект Сохранить проект.

Теперь можно приступить к визуальному программированию. У нас есть один объект форма Form1. Изменим некоторые его свойства с помощью инспектора объектов.

Перейдём в окно инспектора объектов и найдем в нём свойство Caption (Заголовок). Свойство формы Caption отвечает за текст, выводимый в заголовке формы. По умолчанию оно имеет значение Form1. Изменим его на слово ПРИМЕР 21 Можно задать и имена файлов, отличные от стандартных Unit1.

Рис. 1.36. Изменение свойства формы Рис. 1.38. Изменение заголовка формы Рис. 1.39. Размещение кнопки на форме (рис. 1.36). Это изменение сразу же отразится на форме в поле заголовка появится надпись ПРИМЕР 1 (рис. 1.38). Аналогично можно изменить размеры формы, присвоив новые значения свойствам Height (Высота) и Width (Ширина), ещё проще это сделать, изменив положение границы формы с помощью кнопки мыши, как это делается со всеми стандартными окнами.

Изменим ещё одно свойство формы Position (положение формы на экране). Значения этого свойства не вводятся вручную, а выбираются из списка (рис. 1.37). Если выбрать свойство poScreenCenter, то форма всегда будет появляться в центре экрана.

Напомним, что мы пишем программу про кнопку. Пришло время поместить её на форму. Для этого обратимся к панели компонентов (рис. 1.26) и найдём там компонент Tbutton. Чтобы разместить компонент на форме, нужно сделать два щелчка мышью: первый по компоненту, второй по окну формы. В результате форма примет вид, представленный на рис. 1.39.

Теперь у нас два объекта: форма Form1 и кнопка Button1. Напомним, что изменения значений свойств в окне инспектора объектов относятся к выделенноРис. 1.40. Кнопка Запуск на панели му объекту. Поэтому выделим объект Button1 и изменим его заголовок Caption и размеры Height (высота формы), Width (Ширина формы). В заголовке напишем фразу Щёлкни мышкой!!!, установим ширину 135 пикселей, а высоту 25 пикселей. Сохраним проект (Проект Сохранить проект).

Для того чтобы посмотреть, как работает наша программа, её необходимо запустить на выполнение. Сделать это можно командой Запуск Запуск, функциональной клавишей F9 или кнопкой Запуск на панели инструментов (рис. 1.40). Созданное окно с кнопкой должно выглядеть, как на рис. 1.41.

Теперь щёлкнем по кнопке и убедимся, что ничего не произойдет. В этом нет ничего удивительного, ведь мы ещё не написали ни одной строчки программного кода. Можно сказать, что мы разработали только внешнюю часть программы, но не позаботились о функциональной. Несмотря на это, в окне редактора появился текст программы:

unit Unit1 ;

{$mode objfpc}{$H+} interface uses type { TForm1 } TForm1 = c l a s s (TForm) Button1 : TButton ;

private { private declarations } public { public declarations } end ;

var Form1 : TForm1 ;

implementation initialization {$I unit1.lrs} end.

О назначении всех перечисленных в листинге команд мы поговорим позже.

Вернёмся к программе и подумаем, что же мы хотим от нашей кнопки. Скорее всего, это должна быть реакция на какое то событие, например на щелчок мыши.

После запуска программы на экране появилось окно, на котором расположена кнопка с надписью Щёлкни мышкой!!!. Предположим, что если мы щёлкнем по ней, она обрадуется и сообщит: УРА! ЗАРАБОТАЛО!.

Для воплощения этой идеи завершим работу программы, закрыв окно с кнопкой обычным способом (щелчком по крестику в правом верхнем углу) и перейдём в режим редактирования. Перейдём к инспектору объектов, выделим кнопку Button1 и обратимся к вкладке События инспектора объектов. Напомним, что здесь расположены описания событий. Выберем событие OnClick обработка щелчка мыши и дважды щёлкнем в поле справа от названия (рис. 1.42).

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

procedure TForm1. B u t t o n 1 C l i c k ( Sender : TObject ) ;

begin end ;

На данном этапе изложения материала данный текст это фрагмент программного кода, именуемый подпрограммой. О назначении этой подпрограммы можно догадаться по её имени TForm1.Button1Click: на форме Form1 для объекта кнопка Button1 обрабатывается событие щелчок мыши Click. Все команды, написанные между словами begin и end, будут выполняться при наступлении указанного события (щелчка мыши).

Теперь установим курсор между словами begin и end созданной подпрограммы и напишем:

Button1. Caption := ’ УРА ! ЗАРАБОТАЛО ! ’ ;

Эта запись означает изменение свойства кнопки. Только теперь мы выполнили его не с помощью инспектора объектов, а записав оператор языка программирования. Прочитать его можно так: присвоить (:=) свойству Caption объекта Button1 значение ’УРА! ЗАРАБОТАЛО!’. Поскольку присваиваемое значение строка, оно заключено в одинарные кавычки.

Теперь текст подпрограммы в окне редактора имеет вид:

procedure TForm1. B u t t o n 1 C l i c k ( Sender : TObject ) ;

begin Button1. Caption := ’ УРА ! ЗАРАБОТАЛО ! ’ ;

end ;

Сохраним созданную программу, запустим её на выполнение и убедимся, что кнопка реагирует на щелчок мыши (рис. 1.43). Закрыть проект можно командой Проект Закрыть проект.

Рис. 1.43. Окончательный результат работы программы 1.4.10 Полезная программа Итак, первая программа написана. Она не несёт особой смысловой нагрузки.

Главная ее задача показать, что же такое визуальное программирование. Следующая программа также будет несложной, но полезной. Мы автоматизируем процесс перевода старой русской меры веса в современную. Эта задача формулируется так: выполнить перевод пудов и фунтов в килограммы, если известно, что 1 пуд = 40 фунтам = 16.38 кг.

Итак, наша программа должна позволить пользователю ввести два числа (пуды и фунты) и после щелчка по кнопке сообщить, каково значение в килограммах.

Создадим новый проект, выполнив команду Проект Создать проект..., и сохраним его в папке Primer_2 командой Проект Сохранить проект как...

Воспользуемся вкладкой Standard панели компонентов и разместим на форме следующие компоненты: четыре объекта типа надпись Label (этот компонент используется для размещения в окне не очень длинных однострочных надписей); два поля ввода Edit (это редактируемое текстовое поле, предназначенное для ввода, отображения или редактирования одной текстовой стоки); одну кнопку Button (этот компонент обычно используют для реализации некоторой Рис. 1.45. Изменение свойств формы и ее компонентов команды). Компоненты должны располагаться на форме примерно так, как показано на рис. 1.44.

В первой надписи будет храниться текст Меры веса. Две надписи Label и Label3 нужны для пояснения того, какие именно данные должны вводиться, надпись Label4 понадобится для вывода результата. В поля ввода Edit и Edit2 будут введены конкретные значения: вес в пудах и фунтах. Вычисление веса в килограммах произойдёт при щелчке по кнопке Button1 и будет выведено в Label4. Изменим свойства формы и размещённых на ней компонентов в соответствии с табл. 1.1 1.4. После всех изменений форма будет иметь вид, представленный на рис. 1.45.

Интерфейс программы готов. Займёмся вычислительной частью задачи.

Для этого создадим для кнопки Button1 обработчик событий OnClick, для чего дважды щёлкнем по объекту Button1 левой кнопкой мыши. Между слоТаблица 1.1. Значение свойств формы Caption Font.Name Font.Size Таблица 1.2. Свойства компонентов типа надпись Height Width Свойства Top и Left определяют расположение компонента относительно верхнего левого угла формы.

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

procedure TForm1. B u t t o n 1 C l i c k ( Sender : TObject ) ;

var pud, f u n t : integer ;

begin Label4. Caption := ’ В килограммах : ’+F l o a t T o S t r ( kg ) ;

end ;

Рассмотрим программный код построчно.

Строка 1. Заголовок подпрограммы. Он состоит из ключевого слова procedure и имени подпрограммы TForm1.Button1Click, а в скобках обычно указывают список параметров подпрограммы, если таковые имеются.

Строка 2. Открывает блок описания переменных (var от variable, переменная).

Строка 3. Описывает переменные pud и funt. Компьютер понимает эту запись как команду выделить в памяти место для хранения двух целых чисел22.

Строка 4. Описывает одну вещественную переменную kg.

Строка 5. Начинает программный блок (begin начало).

Строка 6. Команда, выполняющая следующие действия. Из свойства Text поля ввода Edit1 считывает введённую туда информацию. Эта информация воспринимается компьютером как строка текста (например, 360 это строка из трёх символов), а поскольку нам для вычислений нужны числовые значения, то функция StrToInt преобразовывает её в целое число. Результат этих преобразований записывается в память компьютера под именем pud. Символы := обозначают оператор присваивания. Например, запись a:=3.14 читается так: переменной a присвоить значение 3.14. Выражение 3.14:=a не имеет смысла.

Строка 7. Информация из поля ввода Edit2 преобразовывается в целое число и записывается в переменную funt. Фактически команды, записанные в шестой и седьмой строках, осуществляют ввод исходных данных.

Строка 8. Вычисляется значение выражения, результат которого присваивается переменной kg. Обратите внимание, что умножение здесь обозначается звездочкой, деление наклонной чертой, сложение знаком +. Записывая математическое выражение на языке программирования, нужно чётко указывать все операции. Нельзя, например, опустить знак умножения, как это принято в математике.

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

Строка 9. Изменяет свойство Caption объекта Label4. В него будет помещён текст, состоящий из двух строк. Первая ’В килограммах: ’, вторая значение переменной kg. Знак + в этом выражении применяют для конкатенации (слияния) строк. Кроме того, поскольку значение переменной kg вещественное число, оно преобразовывается в строку функцией FloatToStr. Фактически в этой строке был выполнен вывод результатов.

Строка 10. Конец программного блока (end конец).

Теперь наша программа может быть откомпилирована и запущена на выполнение. Процесс компиляции представляет собой перевод программы с языка программирования в машинный код. Для компиляции нужно выполнить команду Запуск Быстрая компиляция. Во время компиляции проверяется наличие синтаксических ошибок, и в случае их обнаружения процесс компиляции прерывается. Мы специально допустили ошибку в восьмой строке программного кода (пропустили двоеточие в операторе присваивания). Результат компиляции программы с синтаксической ошибкой показан на рис. 1.46.

Строка с ошибкой выделена красным цветом, а под окном редактора появилось окно Сообщение23, в котором описана допущенная ошибка. Ошибку нужно исправить, а программу ещё раз откомпилировать.

После успешной компиляции всех файлов, входящих в проект, необходимо собрать (скомпоновать) проект из объектных (откомпилированных) файлов (с расширением.о для Linux,.obj для Windows). Для этого следует выполнить команду Запуск Собрать или воспользоваться комбинацией клавиш Ctrl+F9.

23 Если окно Сообщение отсутствует, его можно вывести на экран командой Просмотр Сообщения.

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

Вообще говоря, если команду Запуск Быстрая компиляция опустить, а сразу выполнить команду Запуск Собрать, то произойдёт и компиляция всех файлов проекта и его компоновка.

После успешной компиляции и сборки программу нужно сохранить (Проект Сохранить) и запустить. Запуск осуществляется из среды разработки (Запуск Запуск) или выполнением файла: в Linux./project1, в Windows projec1.exe. На рис. 1.47 показан результат работы нашей программы.

Обратите внимание, что ошибки могут возникать и после запуска программы. Например, в нашем примере исходные данные целые числа. Если ввести дробь, появится аварийное сообщение. В подобной ситуации следует прервать выполнение программы командой Запуск Останов (Ctrl+F2).

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

(Ctrl+F11), перейти к папке с проектом и выбрать из списка файл с именем project1.lpi.

1.4.11 Консольное приложение среды Lazarus В Lazarus можно создавать не только визуальные приложения с графическим интерфейсом, но и писать программы на Free Pascal в текстовом режиме.

Для этого существует консольное приложение.

Чтобы создать новое консольное приложение, нужно выполнить команду Проект Создать проект..., в появившемся диалоговом окне (рис. 1. 1.29) выбрать фразу Программа пользователя и нажать кнопку Создать.

На экране появится окно редактора программного кода (рис. 1.48), в котором уже представлена общая структура программы на языке Free Pascal.

Рис. 1.48. Окно редактора в консольном приложении В общем виде программа на языке Free Pascal состоит из заголовка программы, раздела описаний и непосредственно тела программы.

Заголовок программы состоит из ключевого слова program и имени программы. В нашем случае (рис. 1.48) это Project1. Имя было присвоено программе автоматически. При желании его можно изменить.

Раздел описаний обычно включает в себя описание констант, типов, переменных, процедур и функций. На рис. 1.48 видно, что раздел описаний начинается со слова uses. Это раздел подключения модулей. Модуль это специальная программа, которая расширяет возможности языка программирования. В нашем случае происходит подключение модуля SysUtils, который позволяет работать с файлами и каталогами, и модуля Classes, который работает с компонентами.

За разделом описаний следует исполняемая часть программы, или тело программы. Оно начинается со служебного слова begin и заканчивается служебным словом end и точкой. Тело программы содержит операторы языка, предназначенные для реализации поставленной задачи.

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

Рассмотрим пример. Пусть нужно решить задачу перевода градусной меры угла в радианную. Эта задача известна из школьного курса и формулируется так: чтобы найти радианную меру какого-нибудь угла по данной градусной мере, нужно умножить число градусов на /180, число минут на /(180 · 60) и найденные произведения сложить.

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

program P r o j e c t 1 ;

{$mode objfpc}{$H+} uses Classes, SysUtils { you can add units after this } ;

var gradus, minuta : integer ;

radian : real ;

begin write ( ’ grad u s= ’ ) ;

readln ( grad u s ) ;

write ( ’ minuta= ’ ) ;

readln ( minuta ) ;

end.

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

gradus= minuta= radian=2.8885199120506E+ Нетрудно заметить, что к тексту, созданному автоматически, мы добавили описание переменных (все используемые в программе переменные должны быть описаны).

var gradus, minuta : integer ; //Описаны две целочисленные переменные.

radian : real ;

и тело программы begin write ( ’ grad u s= ’ ) ;

readln ( grad u s ) ;

write ( ’ minuta= ’ ) ;

readln ( minuta ) ;

writeln ( ’ r a d i a n= ’, r a d i a n ) ; //Вывод результата вычислений.

end.

Так как в этой программе графический интерфейс отсутствует, мы разработали элементарный текстовый диалог компьютер пользователь. Для этого были использованы операторы ввода (read) и вывода (write) данных.

1.4.12 Операторы ввода вывода данных Ввод информации с клавиатуры осуществляется с помощью оператора read.

Он может иметь один из следующих форматов:

или readln ( x1, x2,..., xn ) ;

где x1, x2,..., xn список вводимых переменных. При вводе вещественных значений целую и дробную часть числа следует разделять точкой.

Когда в программе встречается оператор read, её действие приостанавливается до тех пор, пока не будут введены исходные данные. При вводе числовых значений два числа считаются разделёнными, если между ними есть хотя бы один пробел, символ табуляции или конца строки (Enter). После ввода последнего значения следует нажать Enter.

Оператор readln аналогичен оператору read, разница заключается в том, что после считывания последнего в списке значения для одного оператора readln данные для следующего оператора readln будут считываться с начала новой строки. Но следует помнить, что Enter переведёт курсор на новую строку независимо от того, как именно происходит считывание данных.

Для вывода информации на экран служат операторы write и writeln. В общем случае эти операторы имеют вид:

или writeln ( x1, x2,..., xn ) ;

где x1, x2,..., xn представляют собой список выводимых переменных, констант, выражений. Если элемент списка текстовая информация, её необходимо взять в кавычки.

Операторы write и writeln последовательно выводят все переменные. Если используется оператор writeln, то после вывода информации курсор перемещается в новую строку.

Итак, в нашем примере оператор write(’gradus=’); выводит на экран символы gradus=, которые подсказывают пользователю, что он должен ввести значение переменной gradus, а оператор readln(gradus); предназначен для ввода значения переменной gradus. Оператор writeln(’radian=’, radian); выводит на экран два значения: строку radian= и значение переменной radian.

Как правило, вещественные данные выводятся в формате с плавающей точкой:

где # любая десятичная цифра от 0 до 9. Для того чтобы перейти к формату с фиксированной точкой, нужно число, расположенное до символа E (мантиссу числа), умножить на 10, возведённое в степень, значение которой указано после числа E (порядок числа). Например, 0.35469000000E 01 = 0.35469000000 · 101 = 0.035469, 5.43286710000E + 02 = 5.43286710000 · 102 = 543.28671.

Чтобы выводить числа в формате с фиксированной точкой, необходимо использовать форматированный вывод. Для этого оператор write или writeln нужно задать следующим образом:

write ( идентификатор : ширина_поля_вывода : дробная_часть ) ;

где идентификатор это имя переменной, которая будет выводится на экран;

ширина_поля_вывода количество позиций (целая часть, точка, дробная часть), которое будет занимать значение переменной при выводе; дробная_часть количество позиций, необходимых для дробной части числа.

Например, пусть результат работы нашей программы имеет вид gradus= minuta= radian=2.8885199120506E+ Понятно, что оператор вывел на экран значение переменной radian в формате с плавающей точкой.

Если воспользоваться оператором то результат работы программы будет таким:

gradus= minuta= radian=2. где значение переменной radian представлено в формате с фиксированной точкой (всё число занимает пять позиций и три из них после запятой).

Глава Общие сведения о языке программирования Free Pascal В этой главе читатель познакомится со структурой проекта в среде Lazarus и основными элементами языка программирования Free Pascal: переменными, константами, их типами, основными операциями и функциями языка.

2.1 Структура проекта Lazarus Любой проект в Lazarus это совокупность файлов, из которых создаётся единый выполняемый файл. В простейшем случае список файлов проекта имеет вид:

• файл описания проекта (.lpi);

• файл проекта (.lpr);

• файл ресурсов (.lrs);

• модуль формы (.lfm);

• программный модуль (.pas);

После компиляции программы из всех файлов проекта создаётся единый выполняемый файл с расширением.exe, имя этого файла совпадает с именем проекта.

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

unit имя_модуля ;

interface //Раздел описаний.

implementation //Раздел реализаций.

end.

Заголовок модуля это зарезервированное слово unit, за которым следует имя модуля и точка с запятой. В разделе описаний, который открывается служебным словом interface, описывают программные элементы типы, классы, процедуры и функции:

interface uses список_модулей ;

type список_типов ;

const список_констант ;

var список_переменных ;

procedure имя_процедуры ;

...

function имя_функции ;

...

Раздел implementation содержит программный код, реализующий механизм работы описанных программных элементов (тексты процедур обработки событий, процедуры и функции, созданные программистом). Процедуры и функции в Lazarus также построены по модульному принципу1.

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

2.2 Структура консольного приложения Структура консольного приложения имеет вид:

заголовок программы;

uses modul1, modul2,..., moduln ;

раздел описаний;

тело программы.

Заголовок программы состоит из служебного слова program, имени программы, образованного по правилам использования идентификаторов (см. п. 2.3), и точки с запятой, например:

program Предложение uses modul1, modul2,..., moduln предназначено для подключения модулей. В модулях находятся функции и процедуры языка. Для использования функций и процедур, находящихся в модуле, необходимо в тексте программы подключить их с помощью предложения uses.

1 Подробно о процедурах и функциях см. в главе 4.

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

раздел описания констант;

раздел описания типов;

раздел описания переменных;

раздел описания процедур и функций.

В языке Free Pascal должны быть описаны все переменные, типы, константы, которые будут использоваться программой. В стандартном языке Pascal порядок следования разделов в программе жёстко установлен, во Free Pascal такого строгого требования нет. В программе может быть несколько разделов описания констант, переменных и т. д. Более подробно структуру консольной программы на языке Free Pascal можно представить следующим образом:

program имя_программы ;

uses modul1, modul2,..., moduln ;

const описания_констант ;

type описания_типов ;

var описания_переменных ;

begin операторы_языка ;

end.

Тело программы начинается со слова begin, затем следуют операторы языка Pascal, реализующие алгоритм решаемой задачи. Операторы в языке Pascal отделяются друг от друга точкой с запятой и могут располагаться в одну строчку или начинаться с новой строки (в этом случае их также необходимо разделять точкой с запятой). Особо отметим символ ; он служит для отделения одного оператора от другого. Можно сказать, что ; ставится между операторами. Тело программы заканчивается служебным словом end. Несмотря на то что операторы могут располагаться в строке как угодно, рекомендуется размещать их по одному в строке, а в случае сложных операторов отводить для каждого несколько строк.

Рассмотрим более подробно структуру программы:

program имя_программы ;

uses modul1, modul2,..., moduln ;

const описания_констант ;

type описания_типов ;

var описания_переменных ;

begin оператор_1 ;

оператор_2 ;

...

оператор_n end.

Приведём пример текста программы на Free Pascal:

program one ;

const a =7;

var b, c : real ;

begin c :=a +2; b:= ca sin ( a ) end.

2.3 Элементы языка Программа на языке Free Pascal может содержать следующие символы:

• латинские буквы A, B, C,..., x, y, z;

• специальные символы +, -, /, =,, [, ],., (, ), ;, :, {, }, $, #, _, @, ‘,.

Из символов алфавита формируют ключевые слова и идентификаторы. Ключевые слова это служебные слова языка, которые имеют специальное значение для компилятора и используются только в том смысле, в котором они определены (операторы языка, типы данных и т. п.). Идентификатор совокупность букв, цифр и символа подчёркивания. Идентификатор начинается с буквы или символа подчёркивания. Идентификаторы служат для именования различных объектов (констант, переменных, меток, типов данных, процедур, функций, модулей, классов) языка. Идентификатор не может содержать пробел. Прописные и строчные буквы в именах не различаются, например ABC, abc, Abc одно и то же имя. Каждое имя (идентификатор) должно быть уникальным и не совпадать с ключевыми словами.

В тексте программы можно использовать комментарии. Если текст начинается с двух символов косая черта // и заканчивается символом перехода на новую строку, заключён в фигурные скобки {} или располагается между парами символов (* и *), то компилятор его игнорирует. Например:

{Комментарий может выглядеть так!} (Или так. ) //А если вы используете такой способ, //то каждая строка должна начинаться //с двух символов косая черта.

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

2.4 Данные в языке Free Pascal Для решения задачи в любой программе выполняется обработка каких-либо данных. Данные хранятся в памяти компьютера и могут быть самых различных типов: целые и вещественные числа, символы, строки, массивы. Типы данных определяют способ хранения чисел или символов в памяти компьютера. Они задают размер ячейки, в которую будет записано то или иное значение, определяя тем самым его максимальную величину или точность задания. Участок памяти (ячейка), в котором хранится значение определённого типа, называется переменной. У переменной есть имя (идентификатор), тип и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана. Описание переменной на языке Free Pascal осуществляется с помощью служебного слова var:

var имя_переменной : тип_переменной ;

Если объявляется несколько переменных одного типа, то описание выглядит следующим образом:

var переменная_1, переменная_2,..., переменная_N: тип_переменных ;

Например:

var ha : integer ;

Константа это величина, которая не изменяет своего значения в процессе выполнения программы. Описание константы имеет вид:

const имя_константы = значение ;

Например:

const //Целочисленная константа.

h=3;

bk = 7.521;

c= ’ abcde ’ ; //Символьная константа.

2.4.1 Символьный тип данных Данные символьного типа в памяти компьютера всегда занимают один байт.

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

Описывают символьный тип с помощью служебного слова char. Например:

var c : char ;

В тексте программы значения переменных и константы символьного типа должны быть заключены в апострофы: ’а’, ’b’, ’+’.

2.4.2 Целочисленный тип данных Целочисленные типы данных могут занимать в памяти компьютера один, два, четыре или восемь байтов. Диапазоны значений данных целочисленного типа представлены в табл. 2.1.

Описание целочисленных переменных в программе может быть таким:

var b : byte ; i, j : integer ; W: word ; L_1, L_2 : longint ;

2.4.3 Вещественный тип данных Внутреннее представление вещественного числа в памяти компьютера отличается от представления целого числа. Оно представлено в экспоненциальной форме mE ± p, где m мантисса (целое или дробное число с десятичной точкой), p порядок (целое число)2. Чтобы перейти от экспоненциальной формы к обычному представлению числа3, необходимо мантиссу умножить на десять в степени порядок. Например:

36.142E + 2 = 36.142 · 102 = 3614.2; 7.25E 5 = 7.25 · 105 = 0.0000725.

2 Действия над числами, представленными в экспоненциальной форме, называют арифметикой с плавающей точкой, так как положение десятичной точки меняется в зависимости от порядка числа.

3 Число в обычном его представлении называют числом с фиксированной точкой.

Вещественное число в Pascal может занимать от четырёх до десяти байтов. Диапазоны значений вещественного типа представлены в табл. 2.2.

Single Real Double Extended Comp Currency Примеры описания вещественных переменных:

var 2.4.4 Тип дата-время Тип данных дата-время TDateTime предназначен для одновременного хранения даты и времени. В памяти компьютера он занимает восемь байтов и фактически представляет собой вещественное число, где в целой части хранится дата, а в дробной время.

2.4.5 Логический тип данных Данные логического типа могут принимать только два значения: истина (true) или ложь (false). В стандартном языке Pascal был определён лишь один логический тип данных boolean. Логические типы данных, определённые в языке Free Pascal, представлены в табл. 2.3.

Пример объявления логической переменной:

var FL : boolean ;

2.4.6 Создание новых типов данных Несмотря на достаточно мощную структуру встроенных типов данных, в среде Lazarus предусмотрен механизм создания новых типов. Для этого используют служебное слово type:

type новый_тип_данных = определение_типа ;

Когда новый тип данных создан, можно объявлять соответствующие ему переменные:

var список_переменных: новый_тип_данных ;

Применение этого механизма мы рассмотрим в следующих параграфах.

2.4.7 Перечислимый тип данных Перечислимый тип задаётся непосредственным перечислением значений, которые он может принимать:

var имя_переменной: (значение_1, значение_2,..., значение_N) ;

Такой тип может быть полезен, если необходимо описать данное, которое принимает ограниченное число значений. Например:

var Применение перечислимых типов делает программу нагляднее:

type var 2.4.8 Интервальный тип Интервальный тип задаётся границами своих значений внутри базового типа:

var имя_переменной: минимальное_значение.. максимальное_значение ;

Обратите внимание, что в данной записи два символа точки рассматриваются как один, поэтому пробел между ними не допускается. Кроме того, левая граница диапазона не должна превышать правую. Например:

var Применим механизм создания нового типа данных:

type //Создание перечислимого типа данных дни недели.

Week_days = (Mo, Tu, We, Th, Fr, Sa, Su ) ;

//Создание интервального типа данных рабочие дни.

Working_days = Mo.. Fr ;

//Описание соответствующей переменной days рабочие дни.

var days : Working_days ;

2.4.9 Структурированные типы Структурированный тип данных характеризуется множественностью образующих его элементов. В языке Free Pascal это массивы, строки, записи, множества и файлы.

Массив совокупность данных одного и того же типа4. Число элементов массива фиксируется при описании типа и в процессе выполнения программы не изменяется.

Для описания массива используют ключевые слова array...of:

имя_массива : array [ список_индексов ] of тип_данных ;

где:

• имя_массива любой допустимый идентификатор;

• тип_данных любой тип языка.

• список_индексов перечисление диапазонов изменения номеров элементов массива; количество диапазонов совпадает с количеством измерений массива; диапазоны отделяются друг от друга запятой, а границы диапазона, представляющие собой интервальный тип данных, отделяют друг от друга двумя символами точки:

[ индекс1_нач.. индекс1_кон, индекс2_нач.. индекс2_кон,... ] Например:

var //Одномерный массив из 10 целых чисел.

4 Подробно о массивах см. в главе a : array [ 1.. 1 0 ] of byte ;

//Двумерный массив вещественных чисел (3 строки, 3 столбца).

Ещё один способ описать массив создать новый тип данных. Например, так:

type //Объявляется новый тип данных трёхмерный массив целых чисел.

massiv=array [ 0.. 4, 1.. 2, 3.. 5 ] of word ;

var //Описывается переменная соответствующего типа.

M: massiv ;

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

имя_массива[номер_элемента] Например: a[5], b[2, 1], M[3, 2, 4].

Строка последовательность символов. В Lazarus строка трактуется как массив символов, то есть каждый символ строки пронумерован, начиная с единицы.

При использовании в выражениях строка заключается в апострофы. Описывают переменные строкового типа так:

имя_переменной : string ;

или:

имя_переменной : string [ длина_строки ] ;

Например:

const S= ’ СТРОКА ’ ;

var S t r 1 : string ;

Если при описании строковой переменной длина строки не указывается, это означает, что она составляет 255 символов. В приведённом примере строки Str и Str2 одинаковой длины.

Запись это структура данных, состоящая из фиксированного количества компонентов, называемых полями записи. В отличие от массива поля записи могут быть разного типа. При объявлении типа записи используют ключевые слова record..end:

имя_записи = record список_полей end ;

здесь имя_записи любой допустимый идентификатор, список_полей описания полей записи. Например:

//Описана структура записи.

//Каждая запись содержит информацию о студенте и //состоит из двух полей имя и возраст.

type var //Объявлены соответствующие переменные три объекта типа запись.

a, b, c : student ;

Доступ к полям записи осуществляется с помощью составного имени:

имя_записи.имя_поля Например:

a. name:= ’ Ivanov Ivan ’ ;

b. name:=a. name ;

Оператор присоединения with имя_записи do упрощает доступ к полям записи:

with a do begin name:= ’ Petrov Petr ’ ;

age : = 1 9 ;

end ;

Множество это набор логически связанных друг с другом объектов. Количество элементов множества может изменяться от 0 до 255. Множество, не содержащее элементов, называется пустым. Для описания множества используют ключевые слова set of:

имя_множества = set of базовый_тип_данных ;

Например:

type TwoNumbers = set of 0.. 1 ;

var Num1, Num2, Num3 : TwoNumbers ;

Файл это именованная область внешней памяти компьютера. Файл содержит компоненты одного типа (любого типа, кроме файлов). Длина созданного файла не оговаривается при его объявлении и ограничивается только ёмкостью диска, на котором он хранится. В Lazarus можно объявить типизированный файл:

имя_файловой_переменой = f i l e of тип_данных ;

нетипизированный файл:

имя_файловой_переменой = f i l e ;

и текстовый файл:

имя_файловой_переменой = TextFile ;

Например:

var f 3 : TextFile ;

2.4.10 Указатели Как правило, при обработке оператора объявления переменной имя_переменной: тип_переменной компилятор автоматически выделяет память под переменную имя_переменной в соответствии с указанным типом. Доступ к объявленной переменной осуществляется по её имени. При этом все обращения к переменной заменяются адресом ячейки памяти, в которой хранится её значение. При завершении подпрограммы, в которой была описана переменная, память автоматически освобождается.

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

Указатель это переменная, значением которой является адрес памяти, где хранится объект определённого типа (другая переменная). Как и любая переменная, указатель должен быть объявлен. При объявлении указателей всегда указывается тип объекта, который будет храниться по данному адресу:

var имя_переменной : ^тип ;

Такие указатели называют типизированными. Например:

var p : ^integer ;

//По адресу, записанному в переменной p, //будет храниться переменная типа int, //или, другими словами, p указывает //на тип данных integer.

В языке Free Pascal можно объявить указатель, не связанный с каким либо конкретным типом данных. Для этого применяют служебное слово pointer:

var имя_переменной : pointer ;

Например:

var x, y : pointer ;

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

2.5 Операции и выражения Выражение задаёт порядок выполнения действий над данными и состоит из операндов (констант, переменных, обращений к функциям), круглых скобок и знаков операций, например a+b*sin(cos(x)). В табл. 2.4 представлены основные операции языка программирования Free Pascal.

Таблица 2.4. Основные операции языка Free Pascal арифметическое/ло- целый/логичес- целый/логический арифметическое/ло- целый/логичес- целый/логический арифметическое/ло- целый/логичес- целый/логический арифметическое/ло- целый/логичес- целый/логический В сложных выражениях порядок, в котором выполняются операции, соответствует приоритету операций. В языке Free Pascal приняты следующие приоритеты:

1) not.

2) *, /, div, mod, and, shl, shr.

3) +, –, or, xor.

которая программируется с помощью стандартных функций языка:

• exp(n*ln(x)) для положительного x;

• -exp(n*ln(abs(x))) для отрицательного x.

Данную же формулу можно использовать для возведения x в дробную степень n, где n обыкновенная правильная дробь вида k/l, а знаменатель l нечётный. Если знаменатель l чётный, это означает извлечение корня чётной степени, следовательно, есть ограничения на выполнение операции (x > 0).

При возведении числа x в отрицательную степень следует помнить, что Таким образом, для программирования выражения, содержащего возведение в степень, надо внимательно проанализировать значения, которые могут принимать x и n, так как в некоторых случаях возведение x в степень n невыполнимо.

Некоторые функции, предназначенные для работы со строками, представлены в табл. 2.7.

concat(S1, S2,...) delete(S, n, m) insert(S, n, m) pos(S1, S2) 9 Формула формируется следующим образом: логарифмируем выражение xn, получается n ln(x), затем экспоненцируем последнее.

chr(x) DataTimeToStr(V) Поясним назначение функции FloatToStrF(V,F,P,D). Обычно её используют для форматированного вывода вещественного числа. Значения параметра F представлены в табл. 2.8, P количество символов в формируемой из числа строке, D количество символов в дробной части числа.

Таблица 2.8. Параметры функции FloatToStrF Экспоненциальная форма представления числа, P мантисса, D ffExponent Число в формате с фиксированной точкой, P общее количество ffFixed цифр в представлении числа, D количество цифр в дробной части:

Универсальный формат, использует наиболее удобную форму предffGtneral Число в формате с фиксированной точкой, использует символ разffNumber делителя тысяч при выводе больших чисел.

Денежный формат, соответствует ffNumber, но в конце ставит символ ffCurency Примером работы функции FloatToStrF служит фрагмент программы:

var n : integer ;

St : string ;

begin n:=5;

St := ’ Иванов А. ’ ;



Pages:     || 2 | 3 | 4 |


Похожие работы:

«Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТУРИЗМА И СЕРВИСА Волгоградский филиал Кафедра туризма и сервиса ДИПЛОМНАЯ РАБОТА на тему: Разработка мероприятий по повышению качества услуг предприятия (на примере пиццерии Гранвиль ООО Сонас г. Волгограда) по специальности: 080502.65 Экономика и управление на предприятии (в туризме и гостиничном...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное бюджетное образовательное учреждение высшего профессионального образования КРАСНОЯРСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ им. В.П. АСТАФЬЕВА (КГПУ им. В.П. Астафьева) Институт социально-гуманитарных технологий ПРОГРАММА вступительных испытаний для поступающих в аспирантуру Направление подготовки 47.06.01 Философия, этика и религиоведение Программа аспирантуры Онтология и теория познания Красноярск — 2014...»

«1 1. Пояснительная записка 1.1.Краткая характеристика дисциплины Рабочая программа дисциплины Культура речи и деловое общение составлена в соответствии с государственным образовательным стандартом высшего профессионального образования по направлению подготовки Управление персоналом Цель дисциплины: научить студентов ориентироваться в различных речевых ситуациях, учитывая то, кому, что, с какой целью, где и когда говорит (пишет). Задачи дисциплины: – выступать с сообщениями перед аудиторией; –...»

«Технические требования к оригинал-макетам и PDF/X -файлам газет для печати на Ижевском полиграфическом комбинате. 1. Электронные носители. Компакт-диски CD-R,CD-RW, DVD-R, DVD-RW (стандарт ISO9660) Устройства, подключаемые через USB, вместе с драйверами к ним 2. Типы файлов, принимаемые в производство Постраничные файлы в формате PDFX/1a (для многостраничных изданий допускается одним многостраничным файлом). 3. Программы для подготовки оригинал-макетов. 3.1. Для газетных оригинал-макетов...»

«ОГЛАВЛЕНИЕ 1. Пояснительная записка 3-7 Программа духовно-нравственного развития и воспитания обучающихся на 2. ступени начального общего образования 8-21 Планируемые результаты освоения обучающимися основной образовательной 3. программы начального общего образования 22-49 Базисный учебный план начального общего образования 4. 50-53 8 Программа формирования универсальных учебных действий у обучающихся 5. на ступени начального общего образования 54-69 Программы отдельных учебных предметов,...»

«ПРОГРАММА ПРОДВИЖЕНИЯ ТОРГОВЛИ В ТАДЖИКИСТАНЕ Информационный бюллетень #1 (5) (январь-апрель 2008) В ЭТОМ НОМЕРЕ: 1. Суровая зима и энергетический кризис 2. Таджикские компании приняли участие на поразили Таджикистан ПродЭкспо-2008. а ущерб сельхозсектору составил около 130. и вернулись с новыми идеями, проектами и миллионов долларов США предложениями о сотрудничестве 4. Наши партнеры: ПОО “Шарбатхо” 3. Повышение уровня удовлетворенности. производит более 40 видов продуктов. было основной...»

«1 2 3 Аннотация В рабочей программе преддипломной практики содержатся сведения о ее целях и задачах в соответствии с учебным планом подготовки горных инженеров по направлению подготовки 130400.65 Горное дело специализации 130409.65 Горные машины и оборудование, которую студенты должны пройти в одиннадцатом семестре на шестом курсе обучения. Рабочая программа преддипломной практики студентов на горных и машиностроительных предприятиях, в проектных и научно-исследовательских учреждениях и...»

«АННОТАЦИЯ К РАБОЧЕЙ ПРОГРАММЕ ПО ОБЩЕСТВОЗНАНИЮ 11 КЛАСС Рабочая программа составлена на основе ФК Государственного стандарта образования1, Программы по Обществознанию для 10-11 классов, базового уровня2, учебно-методического комплекта Л.Н. Боголюбова Обществознание, программы, учебного плана МБОУ СОШ №200, особенностей и возможностей 11-х классов. Изучение обществознания (включая экономику и право) в старшей школе на базовом уровне направлено на достижение следующих целей: • развитие личности...»

«Государственное бюджетное общеобразовательное учреждение средняя общеобразовательная школа №556 с углублнным изучением английского языка Курортного района Санкт-Петербурга КАДРОВЫЙ ПОТЕНЦИАЛ (Педагогическая компетентность. Программа модернизации кадрового потенциала общеобразовательной школы) Серикова В.Ю., директор ГБОУ СОШ 556 Бабина Н.Б., заместитель директора по УВР Маркушева М.Б, заместитель директора по ВР Санкт-Петербург 2013 Содержание 1.Общее описание инновационного продукта 3...»

«1 СОДЕРЖАНИЕ 1. Общие сведения о направлении. Организационно-правовое обеспечение образовательной деятельности 3 2. Структура подготовки магистров. Сведения по основной образовательной программе 5 3. Содержание подготовки магистров 5 4. Учебный план 13 5. Учебные программы дисциплин, диагностические средства 14 6. Организация учебного процесса 17 7. Качество подготовки обучающихся 21 7.1 Уровень требований при приеме 21 7.2 Эффективность системы текущего и промежуточного контроля 8. Учебные...»

«ж М ИНЗДРАВСОЦРАЗВИТИЯ РОССИИ УТВЕРЖДА Государственное бю джетное образовательное Проректор п учреждение высш его профессионального образования Челябинская государственная 2012 медицинская академия М инистерства здравоохранения и социального развития Российской Федерации (ГБОУ ВПО ЧелГМ А М инздравсоцразвития России) кафедра социально-гуманитарных наук РАБОЧАЯ ПРОГРАММА по дисциплине на 2011/12 учебный год Дисциплина - ФИЛОСОФИЯ Специальность - лечебное дело 060101 Факультет - лечебный Форма...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования Кемеровский государственный университет в г. Анжеро-Судженске 01 марта 2013 г. РАБОЧАЯ ПРОГРАММА по дисциплине Территориальная организация труда (ОПД.Р.1) для специальности 080502.65 Экономика и управление на предприятии (городское хозяйство) факультет информатики, экономики и математики курс: 4 зачет: 8 семестр семестр: 8...»

«ПОЯСНИТЕЛЬНАЯ ЗАПИСКА Программа по альпинизму составлена в соответствии с Законом РФ Об образовании в редакции ФЗ от 13.01.96 г № 12-ФЗ, Типовым положением об образовательном учреждении дополнительного образования детей (Постановление Правительства РФ от 07.03.95 г. № 233), Методическими рекомендациями по организации деятельности спортивных школ в Российской Федерации, Программой обучения и подготовки альпинистов (Федерация альпинизма ВС ДФСО профсоюзов Управление альпинизма ВС ДФСО профсоюзов....»

«НОУ ВПО САНКТ-ПЕТЕРБУРГСКИЙ ИНСТИТУТ ВНЕШНЕЭКОНОМИЧЕСКИХ СВЯЗЕЙ, ЭКОНОМИКИ И ПРАВА (НОУ ВПО СПб ИВЭСЭП) РАБОЧАЯ ПРОГРАММА ОСНОВЫ МЕДИАПЛАНИРОВАНИЯ Направление подготовки 031600 Реклама и связи с общественностью Квалификации (степени) выпускника _бакалавр_ Санкт-Петербург 2012 1 ББК 60.56 О 75 Основы медиапланирования [Электронный ресурс]: рабочая программа /авт.-сост. М.М. Козлова. – СПб.: ИВЭСЭП, 2012. – 34 с. Утверждена на заседании кафедры связей с общественностью, протокол № 2 от 25.09.2012...»

«ПРОГРАММА ВСТУПИТЕЛЬНОГО ЭКЗАМЕНА В АСПИРАНТУРУ ПО ФИЛОСОФИИ Философия и круг ее проблем. Понятие философии, мировоззрения, науки. Типы мировоззрения: мифологическое, религиозное, философское, научное. Предмет и метод философии. Место и роль философии в культуре. Структура философского знания. Функции философии. Границы научного и философского знания. Отношения философии и религии. Блоки философских проблем. Феномен античного миросозерцания: формирование вечных философских проблем. Особенности...»

«Забайкальский край Администрация муниципального района Александрово-Заводский район КОМПЛЕКСНАЯ ПРОГРАММА социально-экономического развития муниципального района АЛЕКСАНДРОВО-ЗАВОДСКИЙ РАЙОН 2011-2020гг. Александровский Завод, 2011 год ПАСПОРТ КОМПЛЕКСНОЙ ПРОГРАММЫ СОЦИАЛЬНО-ЭКОНОМИЧЕСКОГО РАЗВИТИЯ МУНИЦИПАЛЬНОГО РАЙОНА АЛЕКСАНДРОВО-ЗАВОДСКИЙ РАЙОН на 2011-2020годы Наименование Программы: Программа социально-экономического развития муниципального района Александрово -Заводсий район на 2011годы...»

«ПРОГРАММА ЕВРОПЕЙСКОГО СОЮЗА “ЦЕНТРАЛЬНАЯ АЗИЯ ИНВЕСТ II” GIZ Program “Support of Regional Economic Cooperation in Central Asia” Отчет по итогам совместной конференции посвященной вопросам региональной интеграции Центральной Азии в мировую экономику Отчет подготовлен в рамках проекта Интегрированный подход к продвижению Центрально-Азиатских МСП по переработке орехов, сухофруктов и мёда (CANDY). 2012 год Региональная интеграция Центральной Азии в мировую экономику ОГЛАВЛЕНИЕ 1. ВВЕДЕНИЕ 2. ЦЕЛИ...»

«ОФИЦИАЛЬНО Индекс № 241 (23885) Суббота, 21 декабря 2013 года № 96 (180) 2109 НИЖНЕТАГИЛЬСКАЯ ГОРОДСКАЯ ДУМА ШЕСТОЙ СОЗЫВ Двадцать пятое заседание РЕШЕНИЕ от 20.12.2013 № 52 О бюджете города Нижний Тагил на 2014 год и плановый период 2015 и 2016 годов Рассмотрев представленный Главой города проект бюджета города Нижний Тагил на 8. Утвердить свод расходов бюджета города Нижний Тагил по разделам, подразгод и плановый период 2015 и 2016 годов, итоги публичных слушаний по вопросу делам, целевым...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ Учебно-методическое объединение высших учебных заведений Республики Беларусь по гуманитарному образованию УТВЕРЖДАЮ Первый заместитель Министра образования Республики Беларусь _ А.И. Жук _ 2010 г. Регистрационный № ТД-_/тип. ТЕОРЕТИЧЕСКАЯ ГРАММАТИКА Типовая учебная программа для высших учебных заведений по специальности: 1-21 05 06 Романо-германская филология (английский язык и литература) СОГЛАСОВАНО СОГЛАСОВАНО Начальник Управления высшего и...»

«Аттестационные испытания при переводе, восстановлении, поступлении на второе высшее образование на дефектологический факультет ПРОГРАММЫ вступительных испытаний: • для лиц, имеющих высшее профессиональное образование и поступающих в МПГУ для получения второго высшего образования; • для студентов, переводящихся внутри МПГУ и из других учебных заведений; • для студентов, отчисленных из МПГУ и восстанавливающихся на соответствующий курс. Специальность Сурдопедагогика (заочная форма обучения) 2...»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.