- •1 Средства разработки программ на языке Free Pascal
- •1.1 Процесс разработки программы
- •1.2 Среда программирования Free Pascal
- •1.2.1 Работа в текстовом редакторе Free Pascal
- •1.2.2 Запуск программы в среде Free Pascal и просмотр результатов
- •1.3 Текстовый редактор Geany
- •1.4 Среда визуального программирования Lazarus
- •1.4.1 Установка Lazarus в ОС Linux
- •1.4.2 Установка Lazarus под управлением ОС Windows
- •1.4.3 Среда Lazarus
- •1.4.4 Главное меню Lazarus
- •1.4.5 Окно формы
- •1.4.6 Окно редактора Lazarus
- •1.4.7 Панель компонентов
- •1.4.8 Инспектор объектов
- •1.4.9 Первая программа в Lazarus
- •1.4.10 Полезная программа
- •1.4.11 Консольное приложение среды Lazarus
- •1.4.12 Операторы ввода - вывода данных
- •2 Общие сведения о языке программирования Free Pascal
- •2.1 Структура проекта Lazarus
- •2.2 Структура консольного приложения
- •2.3 Элементы языка
- •2.4 Данные в языке Free Pascal
- •2.4.1 Символьный тип данных
- •2.4.2 Целочисленный тип данных
- •2.4.3 Вещественный тип данных
- •2.4.4 Тип дата-время
- •2.4.5 Логический тип данных
- •2.4.6 Создание новых типов данных
- •2.4.7 Перечислимый тип данных
- •2.4.8 Интервальный тип
- •2.4.9 Структурированные типы
- •2.4.10 Указатели
- •2.5 Операции и выражения
- •2.5.1 Арифметические операции
- •2.5.2 Операции отношения
- •2.5.3 Логические операции
- •2.5.4 Операции над указателями
- •2.6 Стандартные функции
- •2.7 Задачи для самостоятельного решения
- •3 Операторы управления
- •3.1 Основные конструкции алгоритма
- •3.2 Оператор присваивания
- •3.3 Составной оператор
- •3.4 Условные операторы
- •3.4.1 Условный оператор if…then…else
- •3.4.2 Оператор варианта case
- •3.5 Обработка ошибок. Вывод сообщений в среде Lazarus
- •3.6 Операторы цикла
- •3.6.1 Оператор цикла с предусловием while .. do
- •3.6.2 Оператор цикла с постусловием repeat … until
- •3.6.3 Оператор цикла for … do
- •3.7 Операторы передачи управления
- •3.8 Решение задач с использованием циклов
- •3.9 Ввод данных из диалогового окна в среде Lazarus
- •3.10 Задачи для самостоятельного решения
- •3.10.1 Разветвляющийся процесс
- •3.10.2 Циклический процесс
- •4 Подпрограммы
- •4.2 Формальные и фактические параметры. Передача параметров в подпрограмму
- •4.3 Процедуры
- •4.4 Функции
- •4.5 Решение задач с использованием подпрограмм
- •4.6 Рекурсивные функции
- •4.7 Особенности работы с подпрограммами
- •4.7.1 Параметры-константы
- •4.7.2 Процедурные типы
- •4.8 Разработка модулей
- •4.9 Задачи для самостоятельного решения
- •5 Использование языка Free Pascal для обработки массивов
- •5.1 Общие сведения о массивах
- •5.2 Описание массивов
- •5.3 Операции над массивами
- •5.4 Ввод-вывод элементов массива
- •5.4.2 Ввод-вывод данных в визуальных приложениях
- •5.5 Вычисление суммы и произведения элементов массива
- •5.6 Поиск максимального элемента в массиве и его номера
- •5.7 Сортировка элементов в массиве
- •5.7.1 Сортировка методом «пузырька»
- •5.7.2 Сортировка выбором
- •5.8 Удаление элемента из массива
- •5.9 Вставка элемента в массив
- •5.10 Использование подпрограмм для работы с массивами
- •5.11 Использование указателей для работы с динамическими массивами
- •5.11.1 Работа с динамическими переменными и указателями
- •5.11.2 Работа с динамическими массивами с помощью процедур getmem и freemem
- •5.12 Примеры программ
- •5.13 Задачи для самостоятельного решения
- •6 Обработка матриц во Free Pascal
- •6.1 Ввод-вывод матриц
- •6.2 Алгоритмы и программы работы с матрицами
- •6.3 Динамические матрицы
- •6.4 Задачи для самостоятельного решения
- •7 Обработка файлов средствами Free Pascal
- •7.1 Типы файлов
- •7.2 Работа с типизированными файлами
- •7.2.1 Процедура AssignFile
- •7.2.2 Процедуры reset, rewrite
- •7.2.3 Процедура СloseFile
- •7.2.4 Процедура rename
- •7.2.5 Процедура erase
- •7.2.6 Функция eof
- •7.2.7 Чтение и запись данных в файл
- •7.3 Бестиповые файлы в языке Free Pascal
- •7.4 Обработка текстовых файлов в языке Free Pascal
- •7.5 Задачи для самостоятельного решения
- •8 Работа со строками и записями
- •8. 1 Обработка текста
- •8.2 Работа с записями
- •8.3 Задачи для самостоятельного решения по теме «Строки»
- •8.4 Задачи для самостоятельного решения по теме «Записи»
- •9.1 Основные понятия
- •9.2 Инкапсуляция
- •9.3 Наследование и полиформизм
- •9.4 Перегрузка операций
- •9.5 Задачи для самостоятельного решения
- •10 Графика во Free Pascal
- •10.1 Средства рисования в Lazarus
- •10.2 Построение графиков
- •10.3 Задачи для самостоятельного решения
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus |
64 |
2 Общие сведения о языке программирования Free Pascal
В этой главе читатель познакомится со структурой проекта в среде Lazarus и основными элементами языка программирования Free Pascal: переменными, константами, их типами, основными операциями и функциями языка.
2.1 Структура проекта Lazarus
Любой проект в Lazarus – это совокупность файлов, из которых создается единый выполняемый файл. В простейшем случае список файлов проекта имеет вид:
•файл описания проекта (.lpi); •файл проекта (.lpr);
•файл ресурсов (.lrs); •модуль формы (.lfm); •программный модуль (.pas);
После компиляции программы из всех файлов проекта создается единый выполняемый файл, имя этого файла совпадает с именем проекта.
Программный модуль, или просто модуль, – это отдельно компилируемая программная единица, которая представляет собой набор типов данных, констант, переменных, процедур и функций. Любой модуль имеет следующую структуру:
unit имя_модуля; |
//Заголовок модуля. |
|
interface |
|
|
//Раздел описаний. |
|
|
implementation |
|
|
//Раздел реализаций. |
||
end. |
//Конец модуля. |
Заголовок модуля – это зарезервированное слово unit, за кото-
рым следует имя модуля и точка с запятой. В разделе описаний, который открывается служебным словом interface, описывают про-
граммные элементы – типы, классы, процедуры и функции: interface
uses список_модулей; type список_типов;
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus |
65 |
const список_констант; var список_переменных; procedure имя_процедуры;
…
function имя_функции;
…
Раздел implementation содержит программный код, реализу-
ющий механизм работы описанных программных элементов (тексты процедур обработки событий, процедуры и функции, созданные программистом). Процедуры и функции в Lazarus также построены по модульному принципу23.
Наряду с визуальными приложениями, Lazarus позволяет разрабатывать и обычные консольные приложения, которые также могут быть созданы в оболочке Free Pascal, и в текстовом редакторе Geany. Авторы настоятельно рекомендуют начинать изучение программирования именно с создания консольных приложений. Поэтому рассмотрим подробно структуру консольного приложения.
2.2 Структура консольного приложения
Структура консольного приложения имеет вид:
заголовок программы;
uses modul1, modul2, …, moduln; раздел описаний; тело программы.
Заголовок программы состоит из служебного слова program, имени программы, образованного по правилам использования идентифи-
каторов (см. п. 2.3 ), и точки с запятой, например: program my_prog001;
Предложение uses modul1, modul2, …, moduln предна-
значено для подключения модулей. В модулях находятся функции и процедуры языка. Для использования функций и процедур, находящихся в модуле, необходимо в тексте программы подключить их с помощью предложения uses.
Раздел описаний включает следующие подразделы:
раздел описания констант; раздел описания типов; раздел описания переменных;
23 Подробно о процедурах и функциях см. в главе 4.
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus |
66 |
раздел описания процедур и функций.
В языке 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;
...
end.
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus |
67 |
Приведем пример текста программы на Free Pascal: program one;
const a=7;
var b,c: real; begin
c:=a+2; b:=c-a*sin(a) end.
2.3 Элементы языка
Программа на языке Free Pascal может содержать следующие символы:
•латинские буквы A, B, C…, x, y, z; •цифры 0, 1, 2…, 9;
•специальные символы + ,–, /, =, <, >, [, ], ., (, ), ;, :, {, }, $, #, _, @,
‘, ^.
Из символов алфавита формируют ключевые слова и идентификаторы. Ключевые слова – это зарезервированные слова, которые имеют специальное значение для компилятора. Примером ключевых слов являются операторы языка, типы данных и т.п. Ключевые слова используются только так, как они определены при описании языка. Идентификатор – это имя программного объекта24, представляющее собой совокупность букв, цифр и символа подчеркивания. Первый символ идентификатора – буква или знак подчеркивания, но не цифра. Идентификатор не может содержать пробел. Прописные и строчные буквы в именах не различаются, например ABC, abc, Abc – одно и то же
имя. Каждое имя (идентификатор) должно быть уникальным и не совпадать с ключевыми словами.
В тексте программы можно использовать комментарии. Комментарий это текст, который компилятор игнорирует. Комментарии используют для пояснений программного кода или для временного отключения команд программного кода при отладке. Комментарии бывают однострочные и многострочные. Однострочный комментарий начинается с двух символов «косая черта» // и заканчивается симво-
лом перехода на новую строку. Многострочный комментарий заключен в фигурные скобки {} или располагается между парами символов
(* и *). Понятно, что фигурные скобки {} или символы (* и *)
24 К программным объектам относятся константы, переменные, метки, процедуры, функции, модули и программы.