
- •Содержание
- •Тема 1. Основные понятия
- •1.2. Задача, алгоритм, программа
- •1.2.Структура модуля исходного кода
- •Тема 2. Линейный блок: оператор присваивания, переменная, процедура и функция
- •2.1 Линейный блок
- •2.2. Переменные и константы
- •Синтаксис объявления переменной в ObjectPascal
- •Синтаксис объявления именной константы в ObjectPascal
- •Синтаксис объявления переменных в VisualBasic
- •2.3Типыпеременныхиконстант
- •Var1: type definitions;
- •Var2, var3: type definition4;
- •Var4 : typel;
- •2.4. Простые типы данных
- •2.4.1. Порядковые типы
- •Поддиапазонные типы
- •Перечислимые типы
- •Операции над порядковыми типами
- •2.4.2. Целые переменные
- •Integer Shortint Smallint Longint Byte Word Cardinal
- •Физические целые типы
- •Логические целые типы
- •2.4.3. Вещественные переменные
- •Вещественные типы.
- •2.4.4. Строковые переменные
- •2.4.5. Булевы типы
- •Размеры переменных булевых типов
- •2.5. Процедуры и функции
- •Описание и вызов процедуры
- •Описание и вызов функции
- •Передача параметров
- •2.6 Область видимости переменных, констант, процедур и функций
- •2.7 Стандартные функции
- •Функции преобразования типов
- •Математические функции
- •Функции вещественных типов
- •Функции обработки строк
- •Строковые функции
- •2.8 Операции над данными
- •2.9 Приоритеты операций
- •2.10. Структурные типы
- •2.10.1. Записи
- •1: Variantnamel: varianttype3;
- •2, 3: Variantname2: varianttype4;
- •1: (KinfWorker: String[15];
- •2: (PosAdmin: String[20]);
- •2.10.2. Массивы
- •Var ИмяМассива: array [ТипИндекса1, ...., ТипИндексаN] of БазовыйТип
- •Var MyArray: Array [1..10] of Integer;
- •2.10.3. Множества
- •Var MyAlphaSet: CharSet;
- •2.10.4. Файловый тип
- •2.11. Указательные типы
- •Средства работы с указателями
- •2.12. Процедурные типы
- •2.13. Тип variant
- •Тема 3. Блок принятия решений: операторы ветвления
- •3.1 Оператор if
- •If условие1 then
- •3.3Операторcase
- •Тема 4. Цикличекий блок: операторы повторяющихся действий
- •4.1.Цикл for
- •4.2. Циклы while и repeat
- •4.3. Операторы break и cont inue
- •Тема 5. Работа с текстовыми файлами
- •5.1. Типы доступа к текстовым файлам
- •5.2. Текстовые файлы
- •5.2.2 Бинарные файлы
- •Id : String[12];
- •Тема 6. Работа с классами
- •6.1. Понятие класса
- •6.2. Классы в object pascal
- •6.3. Свойства класса
- •Способ глобальных и локальных переменных
- •Способ процедуры свойств
- •Создание и удалениеобъектов
- •Inherited Create;
- •Inherited Destroy;
- •6.4. Методы класса
- •6.5. Объявление и удаление объектов
- •Литература
1: (KinfWorker: String[15];
NumSect: Integer);
2: (PosAdmin: String[20]);
end;
Все варианты занимают в памяти одно место. Каждый вариант обозначается некоторой постоянной. При желании можно получать доступ ко всем полям всех вариантов одновременно, однако это может иметь смысл только в наиболее простых случаях, когда точно известно, как именно информация каждого варианта записывается в память. Каждый вариант обозначается минимум одной константой. Все константы должны быть порядковыми и совместимыми по типу с меткой поля. Необязательное поле — это идентификатор дополнительного поля в фиксированной части записи, общий для всех вариантов. Обычно с его помощью определяют, когда к какому варианту обращаться. Необязательное поле можно не указывать, однако порядковый тип необходим. При отсутствии необязательного поля программе придется выбирать подходящий вариант каким-то иным образом. Данные некоторых типов бессмысленно интерпретировать различным образом, и в Object Pascal на некоторые критические типы наложено соответствующее ограничение. Как следствие, в вариантную часть записи нельзя включать длинные строки и переменные типа Variant, а также структурные переменные, содержащие эти типы.
В С и C++ эквивалентом вариантному типу записи из Delphi является тип union.
2.10.2. Массивы
Массивы можно считать разновидностью переменных, в которых хранится сразу несколько значений. Массив можно использовать для хранения записей небольшой базы данных или красного, зеленого и синего компонентов растрового изображения.
Массивомназывают набор однотипных переменных, объединенных одним именем и доступных через это имя и порядковый номер к любой переменной в наборе.
Хотя массивы используются несколько реже переменных, они играют важную роль в разработке программ.
Синтаксис объявления массива:
Var ИмяМассива: array [ТипИндекса1, ...., ТипИндексаN] of БазовыйТип
Обратите внимание, что здесь квадратные скобки являются элементом описания массива и не означают, что выражение ТипИндекса1, ТипИндекса2 является необязательным.
Обычно ТипИндексаимеет выражениеnПерв1..nПосл1, гдеnПерв1— нижняя граница нумерации,nПосл1—верхняя граница нумерации. Для описания границ используются целые числа, они должны быть положительны.
Если указаны два типа индекса (nПерв1..nПосл1, nПерв2..nПосл2), то это значит, что массив у нас двумерный. Двумерные массивы обычно используют для представления матриц.
Объявленные границы массива не могут быть изменены в процессе выполнения программы.
Пусть, например, массив определен следующим образом:
Var MyArray: Array [1..10] of Integer;
тогда обращение к его третьему элементу будет выглядеть, как MyArray[З], и выполняться, как к переменной Integer.
Понятие массива существует в большинстве языков программирования, однако синтаксис, как правило, в каждом случае свой. В языках Basic и FORTRAN вместо квадратных скобок применяются круглые. В С и C++ элементы массива нумеруются с нуля, в FORTRAN — с единицы. В некоторых версиях Basic можно задавать верхнее и нижнее значения индексов, как это делается в Delphi. В С и C++ обращение к массиву эквивалентно обращению к его первому (нулевому) элементу. В Delphi это будет обращением ко всему массиву.
Нередко размер массива (то есть количество хранящихся в нем элементов) не может быть определен заранее. В таком случае следует объявить пустой массив.
Динамическим массивом называется массив, который в начале своего жизненного цикла не содержит ни одного элемента и размер которого определяется в процессе выполнения программы.
Динамический массив объявляется так же, как и обычный массив, за исключением того, что не указываются границы массива:
var
ИмяДиномическогоМассива : array of БазовыйТип;
Для задания размера динамического массива и выделения для него памяти используется встроенная процедура SetLength():
SetLength (ИмяДинамическогоМассива, длина) ;
Каждый элемент массива можно использовать как отдельную переменную. Доступ к элементу массива выполняется с помощью значений индексов. Например, для присвоения значений элементам массива могут быть использованы
ИмяМассива[ЗначениеИндекса1, ..., ЗначениеИндексаN] := Значение
или так:
ИмяМассва [ЗначениеИндекса1] . . . [ЗначениеИндексаN] := Значение