- •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 |
68 |
можно использовать и для однострочного комментария.
Например:
{Комментарий может выглядеть так!}
(*Или так.*)
//А если вы используете такой способ, //то каждая строка должна начинаться //с двух символов «косая черта».
2.4 Данные в языке Free Pascal
Для решения задачи в любой программе выполняется обработка каких-либо данных. Они хранятся в памяти компьютера и могут быть самых различных типов: целыми и вещественными числами, символами, строками, массивами. Типы данных определяют способ хранения чисел или символов в памяти компьютера. Они задают размер ячейки, в которую будет записано то или иное значение, определяя тем самым его максимальную величину или точность задания. Область памяти (ячейка), в которой хранится значение определенного типа, называется переменной. У переменной есть имя (идентификатор), тип и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана. Описание переменной в языке Free Pascal осуществляется с помощью служебного слова var:
var имя_переменной: тип_переменной;
Если объявляется несколько переменных одного типа, то описа-
ние выглядит следующим образом:
var переменная_1,…,переменная_N: тип_переменных;
Например: var
//Объявлена целочисленная переменная. ha: integer;
//Объявлены две вещественные переменные. hb, c: real;
Константа – это величина, которая не изменяет своего значения в процессе выполнения программы. Тип константы определяется ее
значением. Описание константы имеет вид: const имя_константы = значение;
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus |
69 |
Например: const
h=3; //Целочисленная константа. bk=-7.521; //Вещественная константа. c='abcde'; //Символьная константа.
Рассмотрим основные типы данных.
2.4.1 Символьный тип данных
Данные символьного типа в памяти компьютера всегда занимают один байт. Это связано с тем, что обычно под величину символьного типа отводят столько памяти, сколько необходимо для хранения одного символа.
Описывают символьный тип с помощью служебного слова char.
Например: var
c:char;
Втексте программы значения переменных и константы символьного типа должны быть заключены в апострофы: 'а', 'b', '+'.
2.4.2 Целочисленный тип данных
Целочисленные типы данных могут занимать в памяти компьютера один, два, четыре или восемь байт. Диапазоны значений данных целочисленного типа представлены в табл. 2.1.
Таблица 2.1 Целочисленные типы данных
Тип |
|
Диапазон |
|
Размер |
|
|
|
|
|
Byte |
0 |
.. 255 |
1 |
байт |
Word |
0 |
.. 65535 |
2 |
байта |
LongWord |
0 |
.. 4294967295 |
4 |
байта |
ShortInt |
-128 .. 127 |
1 |
байт |
|
Integer |
-2147483648 .. 2147483647 |
4 |
байта |
|
LongInt |
-2147483648 .. 2147483647 |
4 |
байта |
|
Smallint |
-32768 .. 32767 |
2 |
байта |
|
Int64 |
–263 .. 263 |
8 |
байт |
|
Cardinal |
0 |
.. 4294967295 |
4 |
байта |
Описание целочисленных переменных в программе может быть таким:
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus |
70 |
var
b: byte;
i, j: integer; W: word;
L_1, L_2: longint;
2.4.3 Вещественный тип данных
Внутреннее представление вещественного числа в памяти компьютера отличается от представления целого числа. Оно представлено в экспоненциальной форме mE ± p, где m – мантисса (целое или дробное число с десятичной точкой), p – порядок (целое число)25. Чтобы перейти от экспоненциальной формы к обычному представлению числа26, необходимо мантиссу умножить на десять в степени порядок. Например:
–36.142Е + 2 = –36.142∙102 = –3614.2; 7.25E – 5 = 7.25∙10–5 = 0.0000725.
Вещественное число в Pascal может занимать от четырех до десяти байтов. Диапазоны значений вещественного типа представлены в табл. 2.2.
Таблица 2.2 Вещественные типы данных
Тип |
Диапазон |
Количество |
|
Размер |
|
|
значащих |
|
|
|
|
цифр |
|
|
Single |
1.5Е-45 .. 3.4E+38 |
7 — 8 |
4 |
байта |
Real |
2.9E-39 .. 1.7E+38 |
15 — 16 |
8 |
байтов |
Double |
5.0Е-324 .. 1.7E+308 |
15 — 16 |
8 |
байтов |
Extended |
3.4Е-4932 .. 3.4E+4932 |
19 — 20 |
10 байтов |
|
Comp |
-263 .. 263 |
19 — 20 |
8 |
байтов |
Currency |
-922337203685477.5808 .. |
19 — 20 |
8 |
байтов |
|
922337203685477.5807 |
|
|
|
Примеры описания вещественных переменных: var
r1, r2: real; D: double;
25 Действия над числами, представленными в экспоненциальной форме, называют арифметикой с плавающей точкой, так как положение десятичной точки меняется в зависимости от порядка числа.
26 Число в обычном его представлении называют числом с фиксированной точкой.
Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus |
71 |
2.4.4 Тип дата-время
Тип данных дата-время TDateTime предназначен для одновре-
менного хранения даты и времени. В памяти компьютера он занимает восемь байтов и фактически представляет собой вещественное число, где в целой части хранится дата, а в дробной – время.
2.4.5 Логический тип данных
Данные логического типа могут принимать только два значения: истина (true) или ложь (false). В стандартном языке Pascal был
определен лишь один логический тип данных – boolean. Логиче-
ские типы данных, определенные в среде Lazarus, представлены в табл. 2.3.
Таблица 2.3 Логические типы данных
Тип |
|
Размер |
|
|
|
Boolean |
1 |
байт |
ByteBool |
1 |
байт |
WordBool |
2 |
байтa |
LongBool |
4 |
байтa |
Пример объявления логической переменной: var
FL: boolean;
2.4.6 Создание новых типов данных
Несмотря на достаточно мощную структуру встроенных типов данных, в среде Lazarus предусмотрен механизм создания новых типов. Для этого используют служебное слово type:
type новый_тип_данных = определение_типа;
Когда новый тип данных создан, можно объявлять соответствующие
ему переменные:
var список_переменных: новый_тип_данных;
Применение этого механизма мы рассмотрим в следующих параграфах.
2.4.7 Перечислимый тип данных
Перечислимый тип задается непосредственным перечислением
значений, которые он может принимать:
var имя_переменной:(знач_1,знач_2,…,знач_N);
Такой тип может быть полезен, если необходимо описать данное, которое принимает ограниченное число значений. Например: