Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по паскалю.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
67.39 Кб
Скачать
  1. Бестиповые параметры и особенности работы с ними

В Турбо Паскале существует возможность создания процедур и функций с параметрами, не имеющими типа. Бестиповые параметры могут быть параметрами–переменными и параметрами–константами, так как передаются только по адресу. Заголовок процедуры с параметрами, не имеющими типа, может выглядеть таким образом:

procedure myproc(var par1, par2; const par3, par4);

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

 Процедурные типы -- это нововведение фирмы Borland (в стандартном Паскале таких типов нет). Основное назначение этих типов -- дать программисту гибкие средства передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям.      Для объявления процедурного типа используется заголовок процедуры (функции), в котором опускается ее имя, например:

type

Proc1 = Procedure (a, b, c: real; var d: real);

Proc2 = Procedure (var a, b);

РrосЗ = Procedure;

Func1 = Function: String;

Func2 = Function (var s: String): real;

    Как видно из приведенных примеров, существует два процедурных типа: тип-процедура и тип-функция. 

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

  1. Явная и неявная рекурсия

Прямая или явная рекурсия характеризуется существованием в теле процедуры оператора обращения к самой себе.

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

Для описания на Паскале прямой рекурсии никаких дополнительных операторов не требуется. При описании неявной рекурсии возникает проблема: при определении первой из нескольких взаиморекурсивных процедур или функций возникает необходимость обращения к подпрограмме, которая еще не определена, что в Паскале недопустимо. В этом случае используется специальная директива Паскаля forward, которая позволяет выполнять предописание:

сначала задаются прототипы подпрограмм с параметрами, за которыми вместо тела подпрограммы следует forword;

затем описываются тела этих подпрограмм (причем параметры второй раз можно уже не описывать).

  1. Типизированные константы

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

В Паскале типизированные константы задаются в разделе объявления констант следующим образом:

<идентификатор> : <тип> = <значение> ;

Здесь <идентификатор> – идентификатор константы;

<тип> – тип константы;

<значение> – значение константы.

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

  1. Файлы