* Данный текст распознан в автоматическом режиме, поэтому может содержать ошибки
1110
Программирование в системах компьютерной алгебры
14.5.5. Процедуры и процедуры функции в системе MuPAD
Важным средством расширения языков программирования, помимо функций пользователя, являются процедуры и процедуры функции. Они являются само стоятельными модулями языка и обеспечивают обмен данными через свои вход ные и выходные параметры. Программа в системе MuPAD – это некоторая проце дура. Внутри нее могут быть другие процедуры и функции, а также описанные выше управляющие конструкции. Наличие процедур обусловливает возмож ность процедурного и модульного программирования. Процедура в MuPAD может иметь одну из двух конструкций: Имя:=proc(x,y,z,....) proc(x,y,z,...) [local a,b,c...;] name Имя [options;] [local a, b, c, ...;] begin [options;] Тело процедуры begin end_proc Тело процедуры end_proc В первом варианте процедуры обычно задаются пользователем в его програм ме, во втором – применяются в библиотеках процедур. Имена процедур задаются по правилам задания идентификаторов. Главное, что они должны быть уникаль ными. В библиотечных процедурах имена имеют вид Имя_пакета::Имя_про цедуры. Помимо локального статуса переменных, указанных в списке параметров процедур, в них можно задать такой статус и для любых других переменных, объ явив их с помощью слова local. Возможно также задание опций – options. После этого процедура открывается словом begin. Тело процедуры может содержать любые выражения, в том числе математические. Завершается процедура словом end_proc. В любом месте процедуры можно ввести комментарий с помощью сим волов #, например # Это комментарий #. Процедура может быть процедурой функцией, то есть в ответ на обращение к ней Имя(x, y, z, ...) она может возвращать некоторое значение. Принято, что это значение последнего выражения в теле процедуры. С помощью слова return могут возвращаться и значения выражений в любом месте процедуры, если это преду смотрено циклами с условиями их прекращения или условными операторами. Для иллюстрации статуса переменных в процедурах рассмотрим следующий пример:
• a:=0:b:=0:c:=0: modz:=proc(z) #Au?eneaiea iiaoey eiiieaeniiai ?enea# begin a:=Re(z):b:=Im(z): c:=sqrt(a^2+b^2) end_proc: