Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Free Pascal и Lazarus

Покупка
Артикул: 616131.01.99
Free Pascal - свободная реализация языка Паскаль, совместимая с Borland Pascal и Object Pascal - Delphi, но при этом обладающая и некоторыми дополнительными возможностями. Свободный компилятор Free Pascal - кросплатформенный продукт, реализованный, в частности, для операционных систем Linux и Windows. Данная книга представляет собой учебник по алгоритмизации и программированию на основе языка Free Pascal. Кроме того, читатель познакомится с принципами создания визуальных приложений в среде Lazarus. К каждой теме прилагаются 25 вариантов задач для самостоятельного решения, что позволит использовать книгу не только начинающим самостоятельно изучать программирование, но и преподавателям в учебном процессе. Сайт книги: http://books.altlinux.ru/freepascal/ Книга адресована преподавателям и учащимся средних и высших учебных заведений, а также широкому кругу читателей, интересующихся программированием.
Алексеев, Е. Р. Free Pascal и Lazarus : учебник по программированию / Е. Р. Алексеев, О. В. Чеснокова, Т. В. Кучер. - Москва : ДМК Пресс : ALT Linux, 2010. - 438 с. - (Библиотека ALT Linux). - ISBN 978-5-94074-611-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/408666 (дата обращения: 20.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
В серии:
Библиотека ALT Linux

Free Pascal и Lazarus

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

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

Москва

ДМК Пресс, ALT Linux, 2010

УДК 004.432
ББК
22.1
А47

А47

Free
Pascal
и
Lazarus:
Учебник
по
программирова
нию / Е. Р. Алексеев, О. В. Чеснокова, Т. В. Кучер — М. : ALT
Linux, 2010. — 438 с. : ил. — (Библиотека ALT Linux).

ISBN 978-5-94074-611-9

Free Pascal — свободная реализация языка Паскаль, совместимая

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

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

Сайт книги: http://books.altlinux.ru/freepascal/

Книга адресована преподавателям и учащимся средних и высших

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

УДК
004.432

ББК
22.1

Книгу можно приобрести:

В компании «Альт Линукс»: (495) 662-3883. E-mail: zakaz@altlinux.ru

Internet-магазин: http://shop.altlinux.ru

В торгово-издательском холдинге «Альянс-книга»:

Оптовые покупки: (495) 258-91-94, 258-91-95. E-mail: books@alians-kniga.ru

Internet-магазин: http://www.alians-kniga.ru/

Материалы, составляющие данную книгу, распространяются на условиях лицензии GNU

FDL. Книга содержит следующий текст, помещаемый на первую страницу обложки: «В серии

“Библиотека ALT Linux”». Название: «Free Pascal и Lazarus: Учебник по программированию».
Книга не содержит неизменяемых разделов. Авторы разделов указаны в заголовках соответствующих разделов. ALT Linux — торговая марка компании ALT Linux. Linux — торговая мар
ка Линуса Торвальдса. Прочие встречающиеся названия могут являться торговыми марками
соответствующих владельцев.

ISBN 978-5-94074-611-9
c⃝
Алексеев Е. Р., 2010

c⃝
ALT Linux, 2010

c⃝
Издание, ДМК Пресс, 2010

Оглавление

Оглавление
3

Введение
6

Глава 1.
Средства разработки программ на языке Free Pascal
8
1.1
Процесс разработки программы . . . . . . . . . . . . . . . . . . .
8
1.2
Среда программирования Free Pascal . . . . . . . . . . . . . . . .
9
1.3
Среда разработки Geany
. . . . . . . . . . . . . . . . . . . . . . .
15
1.4
Среда визуального программирования Lazarus . . . . . . . . . . .
17

Глава 2.
Общие сведения о языке программирования Free Pascal
51
2.1
Структура проекта Lazarus . . . . . . . . . . . . . . . . . . . . . .
51
2.2
Структура консольного приложения . . . . . . . . . . . . . . . . .
52
2.3
Элементы языка . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
2.4
Данные в языке Free Pascal
. . . . . . . . . . . . . . . . . . . . .
55
2.5
Операции и выражения . . . . . . . . . . . . . . . . . . . . . . . .
63
2.6
Стандартные функции
. . . . . . . . . . . . . . . . . . . . . . . .
67
2.7
Задачи для самостоятельного решения . . . . . . . . . . . . . . .
78

Глава 3.
Операторы управления
80
3.1
Основные конструкции алгоритма . . . . . . . . . . . . . . . . . .
80
3.2
Оператор присваивания . . . . . . . . . . . . . . . . . . . . . . . .
82
3.3
Составной оператор . . . . . . . . . . . . . . . . . . . . . . . . . .
82
3.4
Условные операторы
. . . . . . . . . . . . . . . . . . . . . . . . .
82
3.5
Операторы цикла . . . . . . . . . . . . . . . . . . . . . . . . . . .
106
3.6
Задачи для самостоятельного решения . . . . . . . . . . . . . . .
135

Глава 4.
Подпрограммы
140
4.1
Общие сведения о подпрограммах. Локальные и глобальные
переменные
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
140
4.2
Формальные и фактические параметры. Передача параметров
в подпрограмму . . . . . . . . . . . . . . . . . . . . . . . . . . . .
141
4.3
Процедуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
142
4.4
Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
146
4.5
Решение задач с использованием подпрограмм
. . . . . . . . . .
151
4.6
Рекурсивные функции
. . . . . . . . . . . . . . . . . . . . . . . .
169

Оглавление

4.7
Особенности работы с подпрограммами
. . . . . . . . . . . . . .
173
4.8
Разработка модулей . . . . . . . . . . . . . . . . . . . . . . . . . .
176
4.9
Задачи для самостоятельного решения . . . . . . . . . . . . . . .
179

Глава 5.
Использование языка Free Pascal для обработки
массивов
182
5.1
Общие сведения о массивах . . . . . . . . . . . . . . . . . . . . .
182
5.2
Описание массивов . . . . . . . . . . . . . . . . . . . . . . . . . .
183
5.3
Операции над массивами . . . . . . . . . . . . . . . . . . . . . . .
185
5.4
Ввод-вывод элементов массива
. . . . . . . . . . . . . . . . . . .
185
5.5
Вычисление суммы и произведения элементов массива . . . . . .
198
5.6
Поиск максимального элемента в массиве и его номера
. . . . .
199
5.7
Сортировка элементов в массиве
. . . . . . . . . . . . . . . . . .
200
5.8
Удаление элемента из массива . . . . . . . . . . . . . . . . . . . .
204
5.9
Вставка элемента в массив . . . . . . . . . . . . . . . . . . . . . .
208
5.10
Использование подпрограмм для работы с массивами
. . . . . .
210
5.11
Использование указателей для работы с динамическими
массивами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
213
5.12
Примеры программ . . . . . . . . . . . . . . . . . . . . . . . . . .
218
5.13
Задачи для самостоятельного решения . . . . . . . . . . . . . . .
245

Глава 6.
Обработка матриц в Паскале
248
6.1
Ввод-вывод матриц . . . . . . . . . . . . . . . . . . . . . . . . . .
250
6.2
Алгоритмы и программы работы с матрицами . . . . . . . . . . .
262
6.3
Динамические матрицы
. . . . . . . . . . . . . . . . . . . . . . .
298
6.4
Задачи для самостоятельного решения . . . . . . . . . . . . . . .
301

Глава 7.
Обработка файлов средствами Free Pascal
303
7.1
Типы файлов в Free Pascal . . . . . . . . . . . . . . . . . . . . . .
303
7.2
Работа с типизированными файлами . . . . . . . . . . . . . . . .
304
7.3
Бестиповые файлы в языке Free Pascal . . . . . . . . . . . . . . .
328
7.4
Обработка текстовых файлов в языке Free Pascal . . . . . . . . .
340
7.5
Задачи для самостоятельного решения . . . . . . . . . . . . . . .
345

Глава 8.
Работа со строками и записями
347
8.1
Обработка текста . . . . . . . . . . . . . . . . . . . . . . . . . . .
347
8.2
Работа с записями
. . . . . . . . . . . . . . . . . . . . . . . . . .
352
8.3
Задачи для самостоятельного решения по теме «Строки» . . . .
361
8.4
Задачи для самостоятельного решения по теме «Записи» . . . .
362

Глава 9.
Объектно-ориентированное программирование
367
9.1
Основные понятия . . . . . . . . . . . . . . . . . . . . . . . . . . .
367
9.2
Инкапсуляция . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
376
9.3
Наследование и полиморфизм . . . . . . . . . . . . . . . . . . . .
380

Оглавление
5

9.4
Перегрузка операций . . . . . . . . . . . . . . . . . . . . . . . . .
392
9.5
Задачи для самостоятельного решения . . . . . . . . . . . . . . .
405

Глава 10. Графика в Lazarus
409
10.1
Средства рисования в Lazarus . . . . . . . . . . . . . . . . . . . .
409
10.2
Построение графиков . . . . . . . . . . . . . . . . . . . . . . . . .
418
10.3
Задачи для самостоятельного решения . . . . . . . . . . . . . . .
429

Заключение
433

Сведения об авторах
434

Литература
435

Предметный указатель
436

Введение

Авторы книги давно хотели написать учебник по программированию, который был бы полезен пользователям различных операционных систем. Благодаря
компании ALT Linux, мы попытались это сделать. В качестве языка программирования был выбран язык Free Pascal, который представляется нам ясным, логичным и гибким языком и приучает к хорошему стилю программирования. Свободно распространяемые компиляторы языка Free Pascal реализованы во многих
дистрибутивах Linux, есть свободные компиляторы и для ОС Windows. Кроме
того, в этой книге мы попытались познакомить читателя с принципами создания
визуальных приложений в среде Lazarus.
В настоящее время существует множество подходов к изучению программирования. По мнению авторов, нельзя изучать программирование на каком-либо
языке, не изучив методы разработки алгоритмов. Одним из наиболее наглядных
методов составления алгоритмов является язык блок-схем. Об этом свидетельствует и многолетний опыт авторов преподавания программирования. Мы попытались написать учебник по алгоритмизации и программированию, насколько
нам это удалось — судить читателю.
Авторы надеются, что читатель имеет первоначальные навыки работы на
персональном компьютере под управлением ОС Linux или Windows и знаком со
школьным курсом математики.
Книга состоит из десяти глав.
В первой главе читатель узнает о средствах разработки программ на Free
Pascal, напишет свои первые программы.
Во второй главе изложены основные элементы языка (переменные, выражения, операторы) Free Pascal. Описаны простейшие операторы языка: присваивания и ввода-вывода, приведена структура программы, приведены примеры
простейших программ линейной структуры.
Третья глава является одной из ключевых в изучении программирования.
В ней изложена методика составления алгоритмов с помощью блок-схем. Приведено большое количество примеров блок-схем алгоритмов и программ различной
сложности. Авторы рекомендуют внимательно разобрать все примеры и выполнить упражнения этой главы, и только после этого приступать к изучению последующих глав книги.

Оглавление
7

В четвёртой главе читатель на большом количестве примеров познакомится
с подпрограммами. Описан механизм передачи параметров между подпрограммами. Один из параграфов посвящён рекурсивным подпрограммам. В завершении главы рассмотрен вопрос создания личных модулей.
Пятая и шестая главы посвящены изучению алгоритмов обработки массивов
и матриц. Здесь же читатель познакомится и с реализацией этих алгоритмов
на языке Free Pascal. Именно эти главы совместно с третьей являются ключом
к пониманию принципов программирования.
Седьмая глава знакомит читателя с обработкой файлов на языке Free Pascal под управлением ОС Linux и Windows. На практических примерах изложен
механизм прямого и последовательного доступа к файлам и обработки ошибок
ввода-вывода. Описана работа с бестиповыми и текстовыми файлами.
Восьмая глава посвящена обработке строк и записей. Приведённые примеры
позволят читателю разобраться с принципами обработки таблиц в языке Free
Pascal.
В девятой главе авторы описали принципы объектно-ориентированного программирования и их реализацию в языке Free Pascal.
В десятой главе рассмотрены графические возможности Lazarus, изложено
подробное описание алгоритма построения графиков непрерывных функций на
экране дисплея. Приведены тексты программ изображения графиков функций
с подробными комментариями.
К каждой теме прилагаются 25 вариантов задач для самостоятельного решения, что позволит использовать книгу не только начинающим самостоятельно
изучать программирование, но и преподавателям в учебном процессе.
С рабочими материалами книги можно познакомиться на сайте Евгения Ростиславовича Алексеева — http://www.teacher.dn-ua.com.
Авторы благодарят компанию ALT Linux и лично Кирилла Маслинского за
возможность издать эту книгу.
Авторы выражают благодарность своим родным за помощь и понимание.
Алексеев Е. Р., Чеснокова О. В., Кучер Т. В.
Донецк, январь 2009 г.

Глава 1

Средства разработки программ на языке
Free Pascal

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

1.1
Процесс разработки программы

Разработку программы можно разбить на следующие этапы:
1) Составление алгоритма решения задачи. Алгоритм — это описание последовательности действий, которые необходимо выполнить для решения поставленной задачи.
2) Написание текста программы. Текст программы пишут на каком-либо языке программирования (например на Free Pascal) и вводят его в компьютер
с помощью текстового редактора.
3) Отладка программы. Отладка программы — это процесс устранения ошибок из текста программы. Все ошибки делятся на синтаксические и логические. При наличии синтаксических ошибок (ошибок в написании операторов) программа не запускается. Подобные ошибки исправляются проще
всего. Логические ошибки — это ошибки, при которых программа работает,
но неправильно. В этом случае программа выдаёт не те результаты, которые ожидает разработчик или пользователь. Логические ошибки исправить
сложнее, чем синтаксические, иногда для этого придётся переписывать отдельные участки программы, а иногда и перерабатывать весь алгоритм.

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

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) и др.) функций и процедур языка.

Глава 1. Средства разработки программ на языке Free Pascal

Рис. 1.1. Менеджер пакетов Synaptic

пакетов, например, в 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
11

Рис. 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 (выбор компонентов), указать название устанавливаемого
приложения в главном меню, выбрать типы файлов, поддерживаемых средой,

5http://www.freepascal.org/down/i386/var.

Глава 1. Средства разработки программ на языке Free Pascal

Рис. 1.4. Окно компилятора Free Pascal

и начать процесс установки Free Pascal, нажав кнопку Install. Контролировать
процесс установки можно с помощью линейного индикатора.
Запуск среды программирования Free Pascal в Windows можно осуществить
из главного меню: Пуск — Программы — Free Pascal — Free Pascal. На экране появится окно, представленное на рис. 1.4.
Установив пакет Free Pascal, мы получили компилятор и среду программирования.
Компилятор Free Pascal работает в командной строке. Для того чтобы создать исполняемый файл из текста программы, написанного на языке Pascal,
необходимо выполнить команду
fpc name.pas
Здесь fpc — имя исполняемого файла компилятора командной строки Free Pascal, name.pas — имя файла с текстом программы. В результате в Linux будет создан исполняемый файл с именем name (в Windows имя исполняемого файла —
name.exe).
При использовании компилятора fpc после компиляции автоматически происходит компоновка программы (запуск компоновщика make).
Технология работы с компилятором Free Pascal может быть такой: набираем
текст программы в стандартном текстовом редакторе, затем в терминале запускаем компилятор, после исправления синтаксических ошибок запускаем исполняемый файл. При такой технологии работы с компилятором, необходимо

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

не забывать сохранять текст программы, иначе при запуске компилятора будет
компилироваться старая версия текста программы.
Однако среда программирования позволяет значительно упростить процесс
разработки программ. В состав среды программирования 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+К+Н
вновь выделит блок.