
- •Содержание
- •Тема 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.2.Структура модуля исходного кода
В Object Pascalисходный код каждой программы разбит на модули. Модуль состоит из четырех разделов:интерфейсного, реализации, инициализации и завершения.Интерфейсный раздел и раздел реализации являются обязательными, они должны присутствовать в каждом модуле. Разделы инициализации и завершения необязательны. В начале файла модуля расположен заголовок модуля — ключевое словоunit, затем имя модуля и точка с запятой, например:
unit myUnit;
Эта строка кода означает, что модуль называется myUnitи его код хранится в файлеmyUnit.pas.
В интерфейсном разделе описывается информация, доступная из других модулей программы. В то же время информация, описанная в разделе реализации, из других модулей недоступна.
Модули, составляющие программу, делятся на созданные разработчиком и встроенные в Delphi. К встроенным относится, в частности, модульSystem, который содержит основные встроенные подпрограммыObject Pascal. МодульSystemне нужно явно включать в разрабатываемые модули с помощью ключевого словаuses— он считается исходно подключенным к каждому модулю автоматически.
В самом общем случае структура пустого модуля имеет вид
unit имя_модуля
interface
uses список_модулей;
implementation
uses список_модулей;
initialization
finalization
end.
Интерфейсный раздел всегда расположен первым и начинается с ключевого слова interface. Раздел реализации начинается с ключевого словаimplementation. После этих ключевых слов можно дополнительно указать модули, подключаемые к данному модулю, с помощью ключевого словаuses, за которым следует список модулей через запятую. В конце списка модулей ставится точка с запятой.
Модули, подключаемые в интерфейсном разделе, доступны из любого места данного модуля, а модули, подключаемые в разделе реализации, — во всем данном модуле, за исключением интерфейсного раздела.
В необязательных разделах инициализации и завершения расположен код, выполняемый только один раз в самом начале и в самом конце работы программы. Если модулей в программе несколько, то последовательность выполнения их разделов инициализации соответствует порядку их описания в модуле, где они подключаются с помощью ключевого слова uses, а последовательность выполнения разделов завершения противоположна этому.
Если в модуль вносятся изменения, то компилятор Delphiавтоматически проверяет все взаимосвязи между модулями с помощью ключевого словаusesи при необходимости повторно компилирует другие модули или сообщает об ошибке.
Тема 2. Линейный блок: оператор присваивания, переменная, процедура и функция
2.1 Линейный блок
Линейный блок может быть представлен в виде
оператора присваивания
вызова процедуры
вызова функции
Оператор присвоения представляет оператор, состоящий из левой и правой частью, соединенной знаком := . Например iCost:= 1000.
Левая часть представляется именем переменной. В правой части могут использоваться переменные и константы.
2.2. Переменные и константы
Переменнойназывается некоторая числовая или текстовая величина, которая обладает именем и может изменяться во время работы программы. Имя переменной однозначно определяет область памяти для хранения временной величины,
Чтобы иметь возможность работать с переменной, нужно выполнить ряд действий:
выбрать имя переменной/константы и её тип;
объявить переменную/константу как тип данных;
задать значение переменной/константы.
Выбирая имя переменной или константы, следует учитывать ряд обстоятельств. Во-первых, имя должно отражать назначение переменной или константы, т.е. быть мнемоничным, — это делает код программы более 'читабельным' и облегчает его отладку, тестирование, внесение изменений. Во-вторых, Object Pascalнакладывает на имена переменных/констант ряд ограничений:
имя должно начинаться с буквы принадлежащей английскому алфавиту или с символа подчеркивания;
имя может состоять из букв английского алфавита, цифры и символы подчеркивания;
имя должно быть уникальным и не совпадать с зарезервированными именами и словами Object Pascal;
имя должно содержать не более 255 символов;
имя переменной не чувствительно к регистру.
Область памяти, в которой хранятся переменные, имеет ограниченный размер и поэтому должна расходоваться экономно. Так как обычно известно, в каком диапазоне изменяются значения переменных и констант, то и число ячеек памяти можно выделять исходя из диапазона значений. Диапазон значений переменной или константы определяется ее типом. Тип переменной или константы для компилятора или интерпретатора служит показателем того, сколько байтов памяти она занимает.
Тип данных— это область определения некой величины, т.е. множество ее возможных значений и набор применяемых операций.
При выборе имени переменной рекомендуется начинать имя с префикса из одного символа, который указывает на тип данных переменной. Префиксы для различных типов переменных приведены в таблицах 2.1.
Таблица 2.1. | ||
Соглашение об именах | ||
Тип |
Префикс |
Пример имени |
Boolean |
b |
bMyFlag |
Byte |
y |
yPortEA |
Shortint |
h |
hDistance |
Smallint |
m |
mNumberOfCars |
Integer |
i |
iNumberOfStars |
Int64 |
n |
nWithOfDoor |
Shar |
c |
cSym |
ShortString |
t |
tNewDay |
String |
s |
sDollar |
Single |
g |
gCost |
Real |
r |
rPrice |
Extended |
e |
eValuel |