
- •Введение
- •Часть 1. Основные сведения о языке Free Pascal
- •Глава 1. Хранение данных
- •Глава 2. Основные операторы
- •Глава 3. Условные операторы
- •Глава 4. Циклы
- •Глава 5. Подпрограммы
- •Глава 6. Стандартные математические подпрограммы
- •Глава 7. Модификаторы подпрограмм
- •Глава 8. Инкремент и декремент
- •Глава 9. Работа с консолью
- •Глава 10. Массивы
- •Глава 11. Указатели
- •Глава 12. Динамическое распределение памяти
- •Глава 13. Процедурный тип
- •Глава 14. Множества
- •Глава 15. Обработка строк
- •Глава 16. Записи
- •Глава 17. Упакованные сущности
- •Глава 18. Перезагрузка операторов
- •Глава 19. Определение типа во время выполнения программы
- •Глава 20. Работа с файлами
- •Глава 21. Структура программы
- •Глава 22. Области видимости данных
- •Часть 2. Сопровождение и повышение надежности программ
- •Глава 1. Комментарии
- •Глава 2. Завершение программы
- •Глава 3. Параметры командной строки
- •Глава 4. Обработка ошибок
- •Глава 5. Модули
- •Часть 3. Объектно-ориентированное программирование
- •Глава 1. Принципы объектно-ориентированного программирования
- •Глава 2. Классы
- •Глава 3. Наследование
- •Глава 4. Вспомогательные классы
- •Глава 5. Ссылки на классы
- •Глава 6. Интерфейсы
- •Часть 4. Концепция объектов вне классов
- •Глава 1. Объекты без классов
- •Глава 2. Динамические объекты
- •Глава 3. Расширенные записи
- •Часть 5. Создание программ с графическим интерфейсом
- •Глава 1. Средства быстрой разработки
- •Глава 2. Описание элементов графического интерфейса
- •Глава 3. Проектирование в Lazarus
- •Глава 4. Основные элементы интерфейса
- •Глава 5. Диалоги
- •Глава 6. Таймер
- •Глава 7. Запуск программ
- •Заключение
- •Список литературы

Симметричная разность
Симметричная разность дает множество состоящие из элементов, которые не входят ни в одно из исходных множеств.
Синтаксис: множество1><множество2;
Проверка элемента
Чтобы определить принадлежность элемента к множеству используйте оператор бинарный in. В качестве первого операнда используйте элемент. Вторым операндом идет множество. Оператор in возвращает истинное значение, если элемент принадлежит множеству.
Глава 15. Обработка строк
Хранение строк и символов
Одиночный символ храниться в переменной типа char, которая занимает в памяти один байт. Строка представляет собой последовательность символов. Есть несколько типов данных для хранения строк.
Строковые типы данных
Тип |
Описание |
ShortString |
Короткая строка |
AnsiString |
Строка с текстом в кодировке UTF-8 |
String |
В зависимости от настроек компилятора может быть синонимом |
|
ShortString или AnsiString |
PChar |
Строка из символов. Каждый символ занимает один байт. |
|
Строка завершается нулевым байтом |
WideString |
Строка из символов. Каждый символ занимает два байта. |
UnicodeString |
Синоним WideString |
Особенности строковых типов
Память под короткие строки выделяется при запуске программы. Максимальная длина короткой строки составляет 255 символов. Каждый символ занимает один байт памяти. К отдельному символу строки можно обратиться как к элементу массива. В нулевом элементе храниться длина строки.
Память под остальные строки выделяется динамически во время работы программы. Выделение происходит автоматически при необходимости. Освобождение памяти так же происходит автоматически.
23
Так же остальные строки не имеют ограничения по длине. Их длина зависит только от объема доступной памяти.
Тип PChar введен, чтобы обеспечить возможность взаимодействие с кодом на языке Си или Си++.
Склейка строк
Для склейки нескольких строк в одну используйте оператор суммирования +.
Присваивание значений
Значение, которое присваивается строковой переменной, должно быть заключено в одинарные кавычки.
Ограничение длины строк
Вы можете задать длину строковой переменной при ее объявлении.
Синтаксис: var имя:string[длина];
Подпрограммы для работы с символами
Функция chr возвращает символ с заданным кодом, а функция ord выполняет противоположенное действие.
Преобразования кодировок
Функция AnsiToUtf8 преобразует строку из текущей системной кодировки в UTF-8. Функция Utf8ToAnsi выполняет обратное преобразование.
Процедуры преобразования коротких строк
Для преобразования числа в строку используйте процедуру Str. Она берет в качестве аргументов строку и имя числовой переменной.
Для преобразования строки в число используйте процедуру Val.
Формат вызова процедуры Val: Val(Строка, число, код);
Число и код являются именами переменных. Число содержит результат преобразования. Код будет содержать нулевое значение или позицию строки, в которой произошла ошибка преобразования.
24

Подпрограммы для работы с короткими строками
Подпрограмма |
Описание |
Length(строка); |
Возвращает длину строки |
SetLength(строка,длина); |
Изменяет длину строки |
LowCase(строка); |
Преобразует строку в нижний регистр |
UpCase(строка); |
Преобразует строку в верхний регистр |
Copy(строка,позиция,размер); |
Возвращает часть строки, то есть подстроку |
Pos(подстрока или |
Возвращает позицию, в которой находиться |
символ,строка); |
подстрока или символ |
Delete(строка, позиция, |
Удаляет часть строки |
количество символов) |
|
Глава 16. Записи |
|
Запись как пользовательский тип данных
Вы можете определить свой тип данных при помощи записей. Запись представляет собой сущность, которая содержит и объединяет в себе разные переменные. Переменные внутри записи называют полями.
Описание записи
Синтаксис описания записи:
Type имя записи=record Объявления полей End;
Формат объявления поля: поле:тип;
Объявление экземпляра записи и доступ к отдельным полям
Экземпляр записи объявляется как обычная переменная. Но вместо стандартного типа указывается имя записи.
С полем экземпляра записи можно работать почти также как с обычной переменной. Формат обращения к полю экземпляра записи: экземпляр.поле
Использование записей как аргументов подпрограмм
Запись может быть использована, как аргумент подпрограммы, если в списке параметров использовать имя записи вместо стандартного типа. Так же запись может являться значением, которое возвращает функция.
25
Глава 17. Упакованные сущности
Выравнивание
Центральный процессор обрабатывает данные, используя машинные слова. Размер слова определяется разрядностью процессора или шириной шины данных. Выравнивание позволяет оптимизировать размещение данных в памяти.
Упаковка записей
Чтобы использовать упакованную запись нужно в ее определении после ключевого слова record написать ключевое слово packed или bitpacked. При использовании ключевого слова bitpacked выравнивание выполняется с учетом отдельных бит.
Упаковка массивов
Чтобы использовать упакованный массив нужно в его объявлении после ключевого слова array написать ключевое слово packed. Динамический массив не может быть упакованным.
Процедура pack упаковывает содержимое обычного массива и помещает содержимое в упакованный массив. Процедура unpack распаковывает содержимое сжатого массива и помещает содержимое в обычный массив. Обе процедуры берут в качестве параметров имена обычного и динамического массива, а так же номер первого элемента.
Глава 18. Перезагрузка операторов
Необходимость перезагрузки операторов
Программист может определить собственный нестандартный тип данных. При работе с ним бывает необходимо переопределить поведение операторов. Этот процесс называется перезагрузкой операторов.
Реализация перезагрузки
Перезагрузка операторов реализуется при помощи следующей конструкции:
operator оператор(Список параметров) результат: тип результата; begin
тело оператора end;
26