Мансуров К.Т.
Основы программирования в среде Lazarus
Допущено Министерством образования и науки Кыргызской Республики в качестве учебника для студентов высших учебных заведений, аспирантов и преподавателей
УДК 004
ББК 32.973-01
Рецензенты:
доктор физико-математических наук, профессор Десятков Г.А. доктор физико-математических наук, профессор Сопуев А.С. доктор физико-математических наук, профессор Сатыбаев А.С.
М23 Мансуров К.Т. Основы программирования в среде Lazarus, 2010. – 772 с.: ил.
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 |
Содержание |
|
Предисловие................................................................................................................. |
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 Одновременное использование вещественных и целых чисел. ...... |
102 |
2.1.20 Другие стандартные функции с вещественными аргументами ...... |
104 |
2.1.21 Булевы переменные ............................................................................. |
104 |
2.1.22 Условные операторы............................................................................ |
106 |
2.1.22.1 Оператор if …. then ............................................................................................ |
107 |
3
Содержание
____________________________________________________________________
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. Тип String ............................................................................................................... |
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 |
4
Содержание
____________________________________________________________________
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 Сортировка выбором ............................................................................. |
280 |
4.1.3 Сортировка вставками ........................................................................... |
286 |
4.1.4 Метод быстрой сортировки................................................................... |
301 |
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 |
5