- •Оглавление
- •Введение
- •Основные этапы решения задач на эвм
- •Анализ постановки задачи и ее предметной области
- •Формальное решение задачи
- •Алгоритмизация
- •Основные средства представления алгоритмов
- •Визуальные алгоритмы
- •Процесс программирования
- •Языки программирования
- •Язык программирования Pascal
- •Среда программирования Delphi
- •Событийная модель ос Windows
- •Концепция объектно-ориентированного программирования
- •Delphi. Основные характеристики продукта
- •Высокопроизводительный компилятор в машинный код
- •Быстрая разработка приложения из прототипов
- •Структурное объектно-ориентированное программирование
- •Создание приложения в Delphi
- •Свойства в Delphi
- •События в Delphi
- •Основные понятия алгоритмического языка Состав языка
- •Основные символы
- •Элементарные конструкции
- •Выражения
- •Комментарии
- •Директивы компилятора
- •Тип данных
- •Приведение типов
- •Простые типы данных Целые типы данных
- •Битовая арифметика
- •Вещественные типы данных
- •Логический тип данных
- •Символьный тип данных
- •Структура программы
- •Константы
- •Переменные
- •Операторы Оператор присваивания
- •Оператор перехода
- •Структурные операторы
- •Операторы управления выполнением цикла
- •Оператор варианта
- •Подпрограммы
- •Перечисляемый тип данных
- •Интервальный тип данных
- •Структурированные типы данных Массивы
- •Строковой тип данных (строки)
- •Множества
- •Файлы. Файловый тип
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Последовательный и прямой доступ к компонентам файла
- •Процедурный тип
- •Вариантный тип
- •Адресный тип. Указатели
- •Динамические переменные
- •Динамические структуры данных
- •Динамические массивы
- •Очереди
- •Статические методы
- •Виртуальные методы
- •Динамические методы
- •Методы обработки сообщений
- •Конструкторы и деструкторы
- •Замещенные методы
- •Абстрактные методы
- •Свойства
- •Обработчики событий
- •Список рекомендуемой литературы
Операторы управления выполнением цикла
Для всех операторов цикла выход из цикла обычно осуществляется вследствие естественного окончания оператора цикла. Object Pascal содержит две процедуры позволяющие управлять ходом выполнения цикла:
Процедура break выполняет безусловный выход из цикла.
Процедура continue выполняет переход к началу новой итерации цикла.
Оператор варианта
Оператор варианта реализует конструкцию многоальтернативного ветвления. Структура:
Case <выражение> of
<значение>[,…]:<оператор1>;
[<значение>[,…]:<оператор2>;]
[…]
[else <операторN>;]
End;
<выражение> - выражение, дающее результат порядкового типа.
Выполняется только один <оператор>, для которого значение выражения совпало со значением приведенным в списке слева от оператора.
Если значение выражения не совпало ни с одним приведенным значением, то выполняется оператор после else (если он присутствует).
Каждое <значение> должно быть уникальным. Диапазоны значений интервального типа не должны пересекаться.
Подпрограммы
Алгоритм решения задачи проектируется путем декомпозиции всей задачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подпрограмм.
Подпрограмма - это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы. Каждая подпрограмма определяется уникальным именем. В языке ObjectPascal существуют два типа подпрограмм - процедуры и функции.
Отличие функции от процедуры заключается в том, что функция после выполнения возвращает под своим именем какое-либо значение. Поэтому функции могут использоваться в выражениях.
Описание подпрограммы состоит из:
-
заголовка процедуры или функции
-
разделов описаний
-
тела подпрограммы
Подпрограмма может содержать такие - же разделы описаний, что и программа, а именно: разделы описания модулей, меток, констант, типов, переменных, процедур и функций. Все элементы, описанные в данных разделах, являются локальными для этой подпрограммы. Локальные элементы доступны только в данной подпрограмме. Если существует глобальный элемент с таким же именем, то будет доступен только локальный элемент.
Заголовок процедуры
procedure <имя_проц>[(<список_форм_парам>)];
Заголовок функции
function <имя_функ>[(<список_форм_парам>)]:<тип_результата>;
<тип_результата> - тип результата возвращаемого функцией.
<список_форм_парам> - список параметров подпрограммы, отделяемых друг от друга ;.
Существуют следующие типы параметров:
- Параметры-значения
- Параметры-константы
- Параметры-переменные
Параметры-значения – это локальные переменные, начальные значения, которых передаются в подпрограмму при ее вызове.
Структура: <имя_перем>[,…]:<тип>
Параметры-константы - это локальные константы, значения, которых передаются в подпрограмму при ее вызове.
Структура: const <имя_конст>[,…][:<тип>]
Параметры-переменные – это синонимы переменных, имена которых передаются в подпрограмму при ее вызове.
Структура: var <имя_перем>[,…][:<тип>]
Параметры-переменные используются, когда необходимо передать значение из подпрограммы в вызывающую программу. При этом все изменения параметра внутри подпрограммы приводят к аналогичным изменениям соответствующей переменной.
Если тип параметра-константы или параметра-переменной не указан, то такой параметр называется нетипизированным. В таком случае в качестве параметра при вызове подпрограммы можно использовать элементы любого типа.
Тело подпрограммы представляет собой составной оператор, в котором записаны операторы подпрограммы. Для функции тело подпрограммы обязательно должно включать следующий оператор присваивания:
<имя_функции>:=<выражение> или
Result:=<выражение>
Данная операция присваивания определяет результат функции - значение, которое вернет функция после выполнения.
Тело подпрограммы может содержать процедуру exit, которая осуществляет досрочный выход из подпрограммы.
Структура вызова подпрограммы:
<имя_подпр>[(<список_факт_парам>)]
<имя_подпр> - имя вызываемой подпрограммы
<список_факт_парам> - список фактических параметров(аргументов), передаваемых подпрограмме, отделяемых друг от друга ,. Каждый аргумент связывается с соответствующим параметром подпрограммы. Количество и тип аргументов в <список_факт_парам> должны соответствовать параметрам в <список_форм_парам> подпрограммы.
Если у подпрограммы нет параметров, то для вызова можно указать только имя подпрограммы.
Модули
Модуль в Object Pascal – это особым образом оформленная библиотека программных элементов. Под программными элементами понимаются любые элементы языка Object Pascal: константы, типы, переменные, подпрограммы. Модуль сам по себе не является выполняемой программой, он может только участвовать в построении программ и других модулей.
Все программные элементы модуля можно разбить на две части:
- программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне модуля;
- программные элементы, необходимые только для работы самого модуля, их называют невидимыми или скрытыми.
В соответствии с этим модуль, кроме заголовка, содержит две основные части, называемые интерфейсом и реализацией.
Модуль имеет следующую структуру:
unit <имя модуля>;
interface
[uses <список модулей подключаемых вместе с модулем>]
[ <описание видимых программных элементов модуля>]
implementation
[uses <список модулей используемых модулем>]
[ <описание скрытых программных элементов модуля>]
[initialization]
[ <операторы инициализации элементов модуля>]
[finalization]
[ <операторы деинициализации элементов модуля>]
end.
Использование в модулях подпрограмм имеет свои особенности. Заголовок подпрограммы содержит все сведения, необходимые для ее вызова: имя, перечень и тип параметров, тип результата для функций, эта информация должна быть доступна для других программ и модулей. С другой стороны, текст подпрограммы, реализующий ее алгоритм, другими программами и модулями не может быть использован. Поэтому заголовок видимой подпрограммы помещают в интерфейсную часть модуля, а полное описание – в часть реализации, причем заголовок в части реализации может не содержать список формальных параметров.
В том случае, если имена программных элементов в интерфейсной части модуля и в программе, использующей этот модуль, совпадают, обращение будет происходить к элементу, описанному в программе. Для обращения к элементу, описанному в модуле, необходимо применить составное имя, состоящее из имени модуля и имени элемента, разделенных точкой.
Рекурсивное использование модулей запрещено.
Если в модуле имеется раздел инициализации, то операторы из этого раздела будут выполнены перед началом выполнения программы, в которой используется этот модуль.
Если в модуле имеется раздел деинициализации, то операторы из этого раздела будут выполнены после выполнения последнего оператора программы, в которой используется этот модуль.