Cтраница 2
Имя формального параметра может быть использовано только один раз в списке формальных параметров описания шаблона. Имена формальных параметров шаблона должны быть уникальны среди всех описаний шаблонов. [16]
![]() |
Использование шаблонов функций ( часть 1 из 2. [17] |
Каждый формальный параметр в определении шаблона должен хотя бы однажды появиться в списке параметров функции. Каждое имя формального параметра в списке определения шаблона должно быть уникальным. [18]
Формы описания списка параметров будут рассмотрены позднее. В простом случае это список имен формальных параметров с указанием их типов. [19]
Параметрами-процедурами и параметрами-функциями называются параметры, которые сами являются процедурами или функциями. Для параметра-процедуры в заголовке процедуры указывается только имя формального параметра. Для параметра-функции должен указываться и тип результата. В обоих случаях при вызове подпрограмм формальным параметрам-процедурам и параметрам-функциям, указанным внутри процедуры, должны соответствовать фактические параметры, совпадающие с ними по количеству и типу. [20]
![]() |
Синтаксис заголовка процедуры. [21] |
Все имена, используемые в процедуре, делятся на локальные и глобальные по отношению к данной процедуре. Локальные имена описываются внутри процедуры, локальными являются имена формальных параметров. [22]
Каждая подпрограмма должна быть определена как описание либо в главной программе, либо в определении другой подпрограммы. В строке 2 задаются имя подпрограммы SUM, имена формальных параметров V и / V и указывается, что параметр, соответствующий формальному параметру N, передается по значению. В тех случаях, когда явно не указано, что параметр передается по значению, предполагается, что он передается по имени. [23]
Типы, составляющие область определения функции, принято называть типами формальных параметров. Для каждой конкретной функции данного типа операция create задает имена формальных параметров и выражение ( терм), согласно которому вырабатывается результат функции. Для получения результата функции служит операция appl, операндами которой являются сама функция и список значений аргументов фактических параметров), типы которых соответствуют типам формальных параметров. [24]
Посредством формальных параметров данной программе передаются фактические параметры при ее вызове из других программ. Для обращения к фактическим параметрам из данной программы необходимо использовать имена формальных параметров в косвенных ссылках. [25]
Определение каждой подпрограммы состоит из заголовка, в котором описываются имя подпрограммы, имена формальных параметров и тип каждого имени, и из тела, в общем случае являющегося блоком. [26]
Главная программа начинается с вызова функции DEFINE, чтобы определить подпрограмму. Аргументами DEFINE являются ( 1) имя подпрограммы, REVERSE, ( 2) имя формального параметра, X, ( 3) имя локальной переменной, Y, и ( 4) метка инструкции, с которой начинается тело подпрограммы, REV. После завершения работы DEFINE управление передается инструкции с меткой МАШ. Этот переход нужен из-за того, что иначе управление было бы передано следующей по порядку инструкции, которая оказывается первой инструкцией в теле подпрограммы REVERSE. REVERSE после главной программы, исключив тем самым необходимость передачи управления для обхода тела подпрограммы. [27]
Она полезна при написании программистом своих собственных процедур трассировки, отслеживающих несколько функций и нуждающихся в - определении имен формальных параметров этих функций. [28]
![]() |
Примитивы Лиспа. [29] |
В Лиспе существует идентичный механизм, только функция вводится с помощью специального атома LAMBDA, а не с помощью ключевого слова ( lambda), как в Норе. Лямбда-выражение языка Лисп является S-выражением из трех компонентов: первый компонент - это атом LAMBDA, второй - это список имен формальных параметров функции, и третий - это тело функции. [30]