из 772
Текущий вид
Ма
н
суров
К.Т.
Основы п
рограммировани
я
в среде
Lazarus
УДК
004
ББК 32.973
-
01
Р
ецензенты:
доктор физико
-
математических наук, профессор Сопуев А.С.
доктор физико
-
математических наук, профессор Сатыбаев А.С.
М
23
Мансуров К.Т.
Основы
программи
р
ования в среде
Lazarus
,
2010.
7
7
2
с.: ил.
ISBN
978
-
9967
-
03
-
646
-
8
В к
ниг
е излагаются основы программирования на языке Паскаль
.
Она вводит
читателя в круг тех идей, понятий, принципов и методов, на которых зиждется совр
е-
менное программиров
ание.
Изложение языка Паскаль ведется применительно к компилятору
Free
Pascal
и среде
Lazarus
, которые относятся к категории
свободно
го
пр
о
граммного
обеспечения
.
Достоинством
С
ПО является
общедоступность и бе
с
платность.
Так, и
Free
Pascal
и
Lazarus
можно
свободно скачать в Интернете. В отличие от продуктов
семейства
Delphi
, и
спользование
Free
Pascal
и
Lazarus
п
о
зволит снять все проблемы
нелегальн
ого
использовани
я
лицензионного ПО. В то же время
Lazarus
по своим во
з-
можностям практически не уступает
Delphi
.
Таким образом,
Lazarus
является идеал
ь-
ным средством для изучения
языка программирования Паскаль
в школах и вузах
в
полном соответствии с Концепцией развития разработки и использования свободного
программного обеспечения в Российской Федерации. В пакете сво
бодного програм
м-
ного обеспечения (ПСПО) для образовательных учреждений РФ
Free
Pascal
и
Lazarus
также им
е
ются
.
В книге п
риведены многочисленные
примеры
программ
.
Подробно ра
с
смотрены
типичные и наиболее часто используемые алгоритмы.
Особое внимание уделено
ра
з-
работке программ с графическим интерфейсом, а также объек
т
но
-
ориентированному
программированию. Рассмотрены особенности програ
м
мирования в
среде
Lazarus
в
ОС
Windows
и
Linux
. К книге прилагается
DVD
диск с исходными кодами всех пр
о-
грамм, рассмотренных
в книге.
Учебник предназначен
для
студентов и преподавателей, а также для школьников
и лиц, самостоятельно изучающих программирование на языке Паскаль.
Учебник и все материалы, входящие в него распространяются на условиях
л
и
цензии
GNU
FDL
.
М 2404090000
-
10
ISBN
978
-
9967
-
03
-
646
-
8
© Мансуров К.Т., 2010
3
Содержание
Предисловие
................................
................................
................................
.................
7
Глава 1 Основы программиров
ания
................................
................................
........
10
1.1. Понятие алгоритма.
................................
................................
........................
10
1.1.1 Алгоритм Евклида.
................................
................................
...................
12
1.
1.2 Задача о поездах и мухе
................................
................................
...........
17
1.1.3 Вместо лирического отступления
................................
..........................
26
1.2. Этапы подготовки задачи для решения на компьютере
............................
28
1.3. Примеры разработки алгоритмов
................................
................................
.
32
1.3.1 Решение квадратного уравнения.
................................
...........................
32
1.3.2 Вычисление интегралов
................................
................................
..........
34
1.3.3 Обработка результатов эксперимента
................................
....................
36
1.3.4 Решение системы линейных алгебра
ических уравнений
....................
39
Глава 2 Введение в язык программирования
Pascal
................................
..............
48
2.1. Основные элементы языка
................................
................................
............
48
2.1.1 Переменные. Стандартные типы.
................................
...........................
49
2.1.2 Операции отношения
................................
................................
...............
51
2.1.3 Раздел описаний
переменных
................................
................................
.
51
2.1.4 Выражения
.
Порядок выполнения операций.
................................
.......
52
2.1.5 Константы
................................
................................
................................
.
53
2.1.6 Комментарии в программе
................................
................................
......
54
2.1.7 Операторы
................................
................................
................................
.
55
2.1.7.1. Оператор присваивания
................................
................................
..........................
55
2.1.7.2. Операторы ввода/вывода
................................
................................
........................
56
2.1.7.3. Операторы инкремента и декремента
................................
................................
...
58
2.1.8
Среда разработки
Lazarus
................................
................................
........
58
2.1.9 Русский язык в консольных приложениях
................................
............
70
2.1.10 Первая программа
................................
................................
..................
71
2.1.11 Открытие существующего проекта
................................
......................
87
2.1.12 Другие способы создания консольных приложений
..........................
91
2.1.13 Типовой пустой проект
................................
................................
..........
94
2.1.14 Операции с целыми числами
................................
................................
95
2.1.15 Вместо лирического отступления 2
................................
.....................
98
2.1.16 Стандартные функции с целыми аргументами
................................
...
99
2.1.17 Операции с вещественными числами (тип
real
).
..............................
101
2.1.18 Форматирование вывода
................................
................................
.....
102
2.1.19 Одновременное использование вещественных и целых чисел.
......
10
2
2.1.20 Другие стандартные функции с вещественными аргументами
......
104
2.1.21
Булевы
переменные
................................
................................
.............
104
2.1.22 Условные операторы.
................................
................................
...........
106
2.1.22.1 Оператор
if
....
then
................................
................................
............................
107
Содержание
_____________________________________________________
_______________
4
2.1.22.2. Оператор
if
...
then
...
else
................................
................................
..................
107
2.1.23 Операторы цикла
................................
................................
..................
113
2.1.23.1. Оператор цикла с предусловием
................................
................................
........
113
2.1.23.2. Оператор цикла с постусловием
................................
................................
........
114
2.1.23.3. Оператор цикла с параметром.
................................
................................
..........
120
2.1.23.4. Второй вариант оператора цикла с параметром
................................
...............
121
2.1.24 Оператор выбора
case
................................
................................
..........
124
2.1.25 Организация простейшего контроля ввода данных.
........................
126
2.1.26 Вычисление сумм сходящихся рядов
................................
................
131
2.2. Реализация некоторых алгоритмов главы 1.
................................
.............
136
2.2.1 Программа решения задачи
о поездах и мухе
................................
.....
136
2.2.2 Программа вычисления определенного интеграла
............................
137
Глава 3 Более сложные элементы языка
................................
...............................
141
3.1. Общая структура Паскаль
программы
................................
....................
141
3.1.1 Процедуры и функции
................................
................................
...........
142
3.1.1.1 Структура процедуры
................................
................................
............................
142
3.1.1.2. Структура функции
................................
................................
...............................
143
3.1.1.3 Глобальные и локальные переменные
................................
................................
.
144
3.1.1.4 Способы передачи параметров
................................
................................
.............
155
3.1.1.5 Процедуры завершения
................................
................................
.........................
159
3.2. Еще
раз о типах данных
................................
................................
...............
159
3.2.1 Классификация типов данных
................................
..............................
159
3.2.1.1 Целый тип
................................
................................
................................
...............
160
3.2.1.2. Интервальный тип
................................
................................
................................
.
161
3.2.1.3. Перечислимый тип
................................
................................
................................
162
3.2.1.4. Множества
................................
................................
................................
.............
162
3.2.1.5. Логический тип
................................
................................
................................
......
163
3.2.1.6. Вещественный тип
................................
................................
................................
163
3.2.1.7. Указатели
................................
................................
................................
...............
164
3.3. Обработка символьной информации в Паскале
................................
........
165
3.3.1 Символьные и строковые типы данных.
................................
.............
165
3.3.1.1. Тип
Char
................................
................................
................................
.................
170
3.3.1.2. Функции для работы с символами
................................
................................
.......
170
3.3.1.3. Тип
S
t
ring
................................
................................
................................
...............
171
3.3.1.4. Строковые процедуры и функции
................................
................................
.......
176
3.4. Массивы
................................
................................
................................
........
190
3.4.1 Динамические
массивы
................................
................................
.........
197
3.4.2 Программа решения системы линейных алгебраических
уравнений методом Гаусса
................................
................................
.............
202
3.4.1.1. Вариант 1
с
goto
................................
................................
...............................
204
3.4.1.2.
Вариант
2
без
goto
................................
................................
...........................
206
3.4.1.3. Вариант 3
более лучшая реализация
................................
................................
209
3.5. Модули в Паскале
................................
................................
........................
213
3.5.1 Структура модуля
................................
................................
..................
213
3.5.2 Системные модули
................................
................................
.................
218
3.5.2.1. Модуль CRT
................................
................................
................................
...........
220
Содержание
____________________________________________________________________
5
3.6. Файлы
................................
................................
................................
............
225
3.6.1 Тип данных
запись
................................
................................
.............
225
3.6.2 Файловые типы
................................
................................
.......................
227
3.6.3 Процедуры для работы с файлами
................................
.......................
228
3.6.3.1.
Общие процедуры для работы с файлами всех типов
................................
.......
228
3.6.3.2. Процедуры для работы с текстовыми файлами
................................
.................
230
3.6.3.3. Процедуры дл
я работы с типизированными файлами
................................
......
238
3.6.3.4. Процедуры для работы с нетипизированными файлами
................................
..
248
3.6.3.5. Организация контро
ля ввода/вывода при работе файлами
...............................
254
3.6.3.6. Создание простой базы данных с типизированными файлами.
.......................
257
Глава 4 Типовые алго
ритмы обработки информации
................................
.........
272
4.1. Алгоритмы сортировки
................................
................................
...............
272
4.1.1 Обменная сортировка (метод "пузырька")
................................
..........
274
4.1.2 Сортировка выбором
................................
................................
.............
279
4.1.3 Сортировка вставками
................................
................................
...........
286
4.1.4 Метод быстрой с
ортировки
................................
................................
...
300
4.2. Алгоритмы поиска
................................
................................
........................
312
4.2.1 Поиск в массивах
................................
................................
...................
312
4.2.2 Вставка и удаление элементов в упорядоченном массиве
................
323
4.3. Динамические структуры данных
................................
..............................
331
4.3.1 Представление в п
амяти компьютера динамических структур.
.......
337
4.3.2 Реализация стека с помощью массивов
................................
...............
340
4.3.3 Представление двоичного дерева в
виде массива и реализация
алгоритма обхода двоичного дерева слева.
................................
..................
349
4.3.4 Указатели
................................
................................
................................
361
4.3.5 Стандартные операции с линейны
ми списками
................................
.
365
4.3.6 Реализация динамических структур линейными списками
..............
372
4.3.6.1. Реализация стека
................................
................................
................................
...
372
4.3.6.2. Реализация очереди с помощью линейного списка
................................
...........
375
4.3.6.3. Реализация двоичного дерева с помощью линейного списка
..........................
380
4.3.7 Сортировка и поиск с помощью двоичного дерева
...........................
388
Глава 5 Основы объектно
-
ориентированного программирования
....................
396
5.1. Три источника и три составные части ООП.
................................
.............
396
5.2. Классы и объекты.
................................
................................
........................
398
5.2.1 Обращение к
членам класса.
................................
................................
.
401
5.3. Инкапсуляция
................................
................................
...............................
406
5.3.1 Спецификаторы доступа.
................................
................................
......
411
5.3.2 Свойства.
................................
................................
................................
.
417
5.4. Наследование
................................
................................
................................
426
5.5. Полиморфизм
................................
................................
................................
435
5.5.1 Раннее связывание.
................................
................................
................
437
5.5.2 Позднее связывание.
................................
................................
..............
442
5.5.3 Конструкторы и деструкторы.
................................
..............................
448
Глава 6 Программирование приложений с графическим интерфейсом
............
458
Содержание
_____________________________________________________
_______________
6
6.1. Элементы графического интерфейса
................................
.........................
459
6.2. Различия между консольными и графическими приложениями
............
466
6.3. Визуальное программирование в среде
Lazarus
................................
.......
468
6.3.1 Создание графического приложения
................................
...................
468
6.3.2 Форма и ее основные свойства
................................
.............................
475
6.3.3 Компоненты
................................
................................
............................
481
6.3.4 Обработчики событий
................................
................................
...........
481
6.3.5 Простейшие компоненты
................................
................................
......
484
6.3.5.1. Компон
ент
TLabel
................................
................................
..............................
485
6.3.5.2. Кнопки
TButton
,
TBitBtn
и
TSpeedButton
................................
...........................
500
6.3.6 Организация ввода данных. Однострочные редакторы
T
Edit,
TLabeledEdit
................................
................................
..............................
504
6.3.6.1. Компонент
T
Edit
................................
................................
................................
.
504
6.3.6.2. Компонент TLabeledEdit
................................
................................
.......................
512
6.3.7 Обработка исключений. Компонент
TMaskEdit
. Организация
контроля ввода данных
................................
................................
...................
518
6.3.7.1. Компонент
T
Mask
Edit
................................
................................
......................
529
6.3.8 Специальные компоненты для ввода чисел
................................
........
547
6.3.9 Тестирование и отладка программы
................................
....................
549
6.3.10 Компоненты отобра
жения и выбора данных
................................
....
553
6.3.10.1. Компонент
TMemo
................................
................................
...............................
554
6.3.10.2. Компонент
TStringGrid
................................
................................
................
607
6.3.10.3. Компоненты выбора
................................
................................
............................
616
6.3.10.4. Компоненты отображения структурированных данных
................................
.
644
6.3.11
Организация меню. Механизм действий
-
Actions
..........................
717
6.3.11.1. Компонент
TMainMenu
................................
................................
.....................
717
6.3.11.2. Компонент
TToolBar
................................
................................
........................
736
6.3.11.3. Компонент
TActionList
................................
................................
................
740
6.3.11.4. Создание приложений с изменяемыми размерами окон
................................
.
761
Послесловие
................................
................................
................................
.............
764
Литература
................................
................................
................................
...............
765
Алфавитный указатель
................................
................................
...........................
766
7
Предисловие
Настоящая книга возникла в результате переработки лекций, которые я
читал на протяжении ряда лет студентам Ошского технологического универс
и-
тета.
В книге
излагаются основы программирования на языке Паскаль.
Она вв
о-
дит читателя в круг тех идей, понятий, пр
инципов и методов, на которых зи
ж-
дется современное программирование.
Во многих школах и вузах преподавание
языка Паскаль
ведется с прим
е-
нением
компилятор
а
Турбо
-
Паскаль фирмы
Borland
. Хотя Турбо
-
Паскаль ныне
уже не поддержива
е
тся, тем не менее, он явля
е
тся
платным продуктом
.
П
рав
о-
преемником
Borland
в настоящее время является компания
Embarcadero
Tec
h-
nologies
.
Несмотря на то
,
что многие ведущие разработчики программного обесп
е-
чения
, включая и
Embarcadero
Technologies
,
имеют специальные предложения
для учеб
ных заведений с существенными скидками
,
многие вузы,
а тем более
и
школы,
к сожалению,
не в состоянии приобретать
новейшие
средства разр
а-
ботки программ, например, такие как
Embarcadero
RAD
Studio
2010,
Microsoft
Visual
Studio
и многие др
у
гие.
Поэтому сов
ершенно естественным является подход к использованию
в
образовательных учреждениях
свободного программного обеспечения.
Не сл
у-
чайно в России принята
Концепция развития разработки и использования св
о-
бодного программного обеспечения
, которая касается также и
образования
.
Достоинством СПО
является общедоступность и бе
с
платность.
Изложение языка Паскаль
в этой книге
ведется применительно к компил
я-
тору
Free
Pascal
и среде
Lazarus
, которые относятся к категории свободного
программного обеспечения. Так, и
Free
Pa
scal
и
Lazarus
можно свободно ск
а-
Предисловие
____________________________________________________________________
8
чать в Интернете. В отличие от продуктов семейства
Delphi
, использование
Free
Pascal
и
Lazarus
позволит снять все проблемы нелегальн
ого
использовани
я
л
и-
цензионного ПО. В то же время
Lazarus
по своим возможностям практически
не уступает
Delphi
. Таким образом,
Lazarus
является идеальным средством для
изучения
языка
программирования
Паскаль
в школах и вузах в полном соотве
т-
ствии с
упомянутой выше
Концепцией.
В пакете свободного программного
обеспечения (ПСПО) для образовательны
х учреждений РФ
Free
Pascal
и
Laz
a-
rus
также имеются
.
Книга состоит из шести глав.
В первой главе излагается понятие алгоритма,
способы записи алгоритмов,
даются примеры разработки алгоритмов. Рассматриваются этапы решения з
а-
дачи на ко
м
пьютере.
Во второй г
лаве рассматриваются элементарные конструкции языка Па
с-
каль. Дается краткий обзор
IDE
Lazarus
.
Рассматриваются способы создания
консольных приложений.
Рассмотрены особенности программирования в среде
Lazarus
в ОС
Windows
и
Linux
. Так, для
Windows
в консол
ьных приложениях
существует проблема с русским языком. В
главе дается способ решения
этой
проблемы
.
Для
Linux
приводится способ настройки приложения для его выпо
л-
нения в терминале. Рассмотрены простейшие методы контроля данных.
В третьей главе рассматриваю
тся более сложные элементы языка, в час
т-
ности подробно разбираются типы данных, методы обработки символьных и
строковых данных, функции и процедуры, способы передачи параметров, ма
с-
сивы, в том числе динамические массивы. Подробно изучаются файлы, методы
до
ступа, типы файлов
, обработк
а
ошибок ввода
-
вывода.
В четвертой главе изучаются типовые алгоритмы. К типовым алгоритмам
отнесены алгоритмы сортировки и поиска, а также алгоритмы работы с дин
а-
мическими структурами. Рассмотрены ряд алгоритмов, проводится срав
нение и
анализ эффективности этих алгори
т
мов.