- •Оглавление
- •Введение
- •Основные этапы решения задач на эвм
- •Анализ постановки задачи и ее предметной области
- •Формальное решение задачи
- •Алгоритмизация
- •Основные средства представления алгоритмов
- •Визуальные алгоритмы
- •Процесс программирования
- •Языки программирования
- •Язык программирования Pascal
- •Среда программирования Delphi
- •Событийная модель ос Windows
- •Концепция объектно-ориентированного программирования
- •Delphi. Основные характеристики продукта
- •Высокопроизводительный компилятор в машинный код
- •Быстрая разработка приложения из прототипов
- •Структурное объектно-ориентированное программирование
- •Создание приложения в Delphi
- •Свойства в Delphi
- •События в Delphi
- •Основные понятия алгоритмического языка Состав языка
- •Основные символы
- •Элементарные конструкции
- •Выражения
- •Комментарии
- •Директивы компилятора
- •Тип данных
- •Приведение типов
- •Простые типы данных Целые типы данных
- •Битовая арифметика
- •Вещественные типы данных
- •Логический тип данных
- •Символьный тип данных
- •Структура программы
- •Константы
- •Переменные
- •Операторы Оператор присваивания
- •Оператор перехода
- •Структурные операторы
- •Операторы управления выполнением цикла
- •Оператор варианта
- •Подпрограммы
- •Перечисляемый тип данных
- •Интервальный тип данных
- •Структурированные типы данных Массивы
- •Строковой тип данных (строки)
- •Множества
- •Файлы. Файловый тип
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Последовательный и прямой доступ к компонентам файла
- •Процедурный тип
- •Вариантный тип
- •Адресный тип. Указатели
- •Динамические переменные
- •Динамические структуры данных
- •Динамические массивы
- •Очереди
- •Статические методы
- •Виртуальные методы
- •Динамические методы
- •Методы обработки сообщений
- •Конструкторы и деструкторы
- •Замещенные методы
- •Абстрактные методы
- •Свойства
- •Обработчики событий
- •Список рекомендуемой литературы
Структурированные типы данных Массивы
Массивы представляют собой ограниченную упорядоченную совокупность однотипных величин. Каждая отдельная величина называется элементом массива. Тип элементов может быть любым, кроме файлового типа и называется базовым типом. Вся совокупность компонент определяется одним именем – именем массива. Доступ к элементу массива происходит по индексу – координатам элемента в массиве. В Object Pascal существуют статические и динамические массивы. Динамические массивы используют динамическое распределение памяти под массив и будут рассмотрены ниже вместе с другими динамическими структурами.
Статический массив описывается в разделе объявления типов или в разделе объявления переменных. В первом случае массив можно использовать в качестве типа параметров подпрограмм и типа результата функции.
Структура:
type <имя_типа>=array [<знач>[,…]] of <тип_элем>;
или
var <имя_перем>[,…]:array [<знач>[,…]] of
<тип_элем>[=(<спис_знач>)];
<тип элем.> - тип элементов массива(базовый тип).
<знач> - значение интервального типа (обычно целого).
Количество <знач> определяет количество измерений(координат элементов) массива (одномерный, двухмерный и т.д.), а само <знач> определяет границы изменения координаты и количество элементов для соответствующего измерения.
Можно проинициализировать переменную-массив начальными значениями, указанными в <спис_знач>. При инициализации многомерных массивов значения элементов каждого из входящих в него массивов записывается в скобках.
Для доступа к элементам массива используется структура:
<имя_масс>[<выраж.>[,…]]
Список выражений в скобках определяют индекс элемента. <выраж.> должно иметь значение целого типа. Количество <выраж.> должно соответствовать количеству измерений массива.
К массивам применима операция присваивания, копирующая все элементы одного массива в другой массив. Тип массивов должен быть эквивалентен.
К массивам применимы стандартные функции
Low(<имя_типа>|имя_перем),High(<имя_типа>|имя_перем),
Length(<имя_типа|имя_перем>), которые возвращают границы и длину первого измерения массива.
Строковой тип данных (строки)
Особое место в языке Object Pascal занимают массивы символов - строки. Работа со строками похожа на работу с обычными массивами, но строки не относятся к структурированным типам данным, так как имеют сложный внутренний механизм работы и хранения данных.
Тип |
Количество символов |
Требуемая память, байт |
Кодировка |
1. String[<знач>] |
<знач> |
<знач>+1 |
ASCII |
2. ShortString |
255 |
256 |
ASCII |
3. AnsiString (String) |
0-~2^31 |
4 б – 2 Гб |
ASCII |
4. WideString |
0-~2^30 |
4 б – 2 Гб |
Unicode |
5. PChar |
0-~2^31/~2^30 |
4 б – 2 Гб |
ASCII или Unicode |
Первые два типа представляют собой статические строковые типы. Остальные типы являются динамическими, то есть память под переменные выделяется автоматически в зависимости от текущего количества символов в строке.
Доступ к отдельным символам строки производится также как и для одномерных массивов:
<имя_строки>[<выраж.>]
<выраж.> - выражение целого типа, имеющее значение от 1 до количества символов в строке.
Тип элементов – Char или WideChar в зависимости от кодировки.
У переменных первых двух строковых типов существует специальный элемент с индексом 0, содержащий текущую длину строки.
Для строк (кроме PСhar) применимы:
1. Операция присваивания.
2. Операции отношения, которые производятся посимвольно. Если длина строки S1 больше длины строки S2, и все символы S2 равны соответствующим символам S1, то S1>S2. Например ‘AB’>’A’. Пустые строки представляют наименьшее значение: ‘A’>’’.
3. Операция конкатенации(объединения) строк +.
4. Стандартная функция Length(<имя_перем>), возвращающая текущую длину строки.
5. Стандартные функции для работы со строками - copy, delete, insert, pos.
Тип PСhar предназначен для хранения нуль-терминированных строк(стандартный строковой тип данных языка C++). В таких строках признаком конца строки является символ #0. Для работы с такими строками применяются стандартные подпрограммы из модуля SysUtils.
Данные типа PСhar и остальных строковых типов могут быть преобразованы друг в друга при помощи приведения типов.