Нестандартные типы данных: перечисляемые и интервальные пользовательские типы.

Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Компилятор при каждой операции с переменной интервального типа генерирует подпрограммы проверки, определяющие, остается ли значение переменной внутри установленного для нее диапазона.

Обе константы должны принадлежать одному из стандартных типов (тип real недопустим). Значение первой константы должно быть значительно меньше значения второй.

Например: 1..12 (номер месяца может принимать значения от 1 до 12) или ‘а’..’я’ (буквы русского алфавита – от а до я)

Перечисляемый тип (enumerated type) – тип данных, заданных списком принадлежащих ему значений.

Объявление перечисляемого типа описывает множество идентификаторов, которые являются возможными значениями перечисляемого типа. Идентификаторы в описании типа представляют собой константы. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки.

Перечисляемый тип ограничен больше чем интервальный, он задается перечислением своих значений.

Например, в виде строковых констант: color=(red, blue, green, black). В приведенном примере создается новый (нестандартный) тип данных color. Переменные этого типа могут принимать всего 4 значения: red, blue, green, black.

Понятие подпрограммы, типы подпрограмм. Обращение к подпрограмме.

Подпрограмма - это отдельная функционально независимая часть программы.

Подпрограммы решают три важные задачи:

· избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;

· улучшают структуру программы, облегчая ее понимание;

· повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификациях программы.

Подпрограммы могут быть стандартными, т.е. определенными системой, и собственными, т.е. определенными программистом.

Использование имени процедуры в программе называется оператором или вызовом процедуры. Имя процедуры не может находиться в выражении в качестве операнда.

Описание процедуры включает заголовок (имя), состоящий из зарезервированного слова Procedure, идентификатора (имени) процедуры, списка формальных параметров с указанием типа каждого параметра и тело процедуры.

Процедура. Формальные и фактические параметры процедуры.

Процедура - это независимая поименованная часть программы, предназначенной для выполнения определенных действий, т.е. программа в миниатюре. Состоит из заголовка и тела. После однократного описания процедуру можно вызвать по имени из последующих частей программы.

Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.

Для формальных и фактических параметров необходимо соблюдать соответствия:

· одинаковое количество,

· одинаковый порядок следования,

· совместимость типов по присвоению.

Формат описания процедуры имеет вид:

procedure имя процедуры (формальные параметры);

раздел описаний процедуры

begin

исполняемая часть процедуры

end;

Подпрограмма-функция. Формальные и фактические параметры подпрограммы-функции.

Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.

Функция - аналогична процедуре, но имеется два отличия:

- функция передает в точку вызова скалярное значение, т.е. результат своей работы;

- имя функции может входить в выражение как операнд.

Формат описания функции:

function имя функции (формальные параметры):тип результата;

раздел описаний функции

begin

исполняемая часть функции

end;

Рекурсивное обращение. Примеры использования рекурсивных подпрограмм.

Язык Паскаль допускает, чтобы подпрограмма вызывала саму себя (рекурсивное обращение). Рекурсия- способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих её тело операторов обращается сама к себе.

Пример. Вариант функции, рекурсивно вычисляющей факториал числа N.

functicon Factorial(N: Byte): Longint;

begin

if N in [0..1]

then Factorial := 1

else Factorial := N * Factorial(N - 1)

end;

Наши рекомендации