|
Процедуры и процедуры-функции
Простейшие процедуры
Процедурой называют модуль программы,
имеющий самостоятельное значение и выполняющий одну или несколько операций,
обычно достаточно сложных и отличных от операций, выполняемых встроенными операторами
и функциями.
Процедуры являются важнейшим элементом
структурного программирования и служат средством расширения возможностей системы
Maple 7 пользователем. Каждая процедура имеет свое уникальное имя и список параметров
(он может быть пустым). Процедуры вызываются так же, как встроенные функции,
— указанием их имени со списком фактических параметров. При этом просто процедуры
обычно не возвращают каких-либо значений после своего исполнения, хотя могут
присваивать значения входящим в них переменным. Процедуры-функции в ответ на
обращение к ним возвращают некоторое значение. Они как бы являются новыми функциями,
задаваемыми пользователем. Описанные ранее функции пользователя фактически являются
процедурами-функциями с несколько упрощенной структурой. Простейшая форма задания
процедуры следующая:
name
:=ргос(Параметры)
Тело процедуры
end;
Параметры процедуры задаются перечислением
имен переменных, например ргос(х) или
proc(x.y.z). С помощью знака :: после имени переменной можно определить
ее тип, например в объявлении prog(n::Integer) объявляется,
что переменная п является целочисленной. При вызове процедуры выражением вида:
name(Фактические_параметры)
фактические параметры подставляются
на место формальных. Несоответствие фактических параметров типу заданных переменных
ведет к сообщению об ошибке и к отказу от выполнения процедуры.
В качестве примера ниже приведена
процедура вычисления модуля комплексного числа г — в данном случае это единственный
параметр процедуры:
ПРИМЕЧАНИЕ
После ввода заголовка процедуры
под строкой ввода появляется сообщение: «Warning, premature end of input».
Оно указывает на то, что ввод листинга процедуры не закончен и должен быть
продолжен до тех пор, пока не будет введено завершающее слово end листинга
процедуры. Если после этого слова поставить символ точки с запятой, то листинг
процедуры будет выведен на экран дисплея.
Теперь для вычисления модуля достаточно
задать обращение к процедуре modc(z), указав вместо
z конкретное комплексное число:
>
modc(3.+I*4.); 5.000000000
Нетрудно заметить, что при знаке
: после завершающего слова end текст процедуры повторяется
в строке вывода (в общем случае в несколько ином виде). Если это повторение
не нужно, после слова end надо поставить знак двоеточия.
Обратите также внимание на то, что для обозначения действительной и мнимой частей
процедуры в ее тексте появились готические буквы.
|