При вызове процедуры пишет мне "illegal use of formal parameter". Что он мне этим хочет сказать?
Для большей ясности объясню суть проблемы.
Есть у меня некие начальные исходные данные a,b,c,d. Есть некие процедуры proc1(), proc2(), proc3(), которые используют в своих расчетах эти исходные данные и выдают некий результат.
Вот в таком виде все прекрасно работало:
a:=1:
b:=2:
c:=3:
d:=4:
proc1():
proc2():
proc3():
Потом у меня возникла потребность по очереди варьировать исходные данные. Для этого я создал массивы и по очереди вместо одной из переменных подставлял массив. Например для варьирования переменной "a" это имело следующий вид:
a:=1:
b:=2:
c:=3:
d:=4:
N_a:=10:
arr_a:=array(1..N_a):
arr_a[i]:=#генерирую значения элементов массива
#дальше в цикле перебираю все значения "а"
#b,c,d остаются постоянными
for i from 1 by 1 to N_a do
a:=arr_a[i]
proc1():
proc2():
proc3():
end do:
В таком виде это тоже прекрасно работает. Но поскольку у меня исходных данных не 4, а 12 и все их надо проварьировать, а внутри вышеописанного цикла довольно обьемный код, то возникает логическое желание создать из всего этого процедуру с параметрами и просто вызвать ее 12 раз. Что я и делаю:
my_proc:=proc(N_x,x,arr_x)
for i from 1 by 1 to N_x do
x:=arr_x[i]
proc1():
proc2():
proc3():
end do:
end proc:
При вызове процедуры my_proc(N_a,a,arr_a); он мне торжественно говорит: "illegal use of formal parameter". В хелпе по этому поводу ничего внятного не нашел.
Обьясните, пожалуйста, что это за Error
Модератор: Admin
aar, коли решили дать совет, то пользуйтесь корректно и терминологией, и понятиями. В Maple под формальными параметрами понимаются те, которые указываются в заголовке определения процедуры proc(x,y,...). В отличие от фактических, передаваемых при ее вызове. То же, о чем написали вы, называются глобальными переменными и им можно присваивать значения в теле процедуры, предварительно определив их в global-секции. Можно и без определения, но тогда для присвоения следует использовать assign Все эти детали прекрасно описаны, например, здесь
http://www.aladjev-maple-book.narod.ru
КСтати, даже даже формальным параметрам можно присваивать значения и это также вы найдете в указанной ссылке. Можно дать еще пару советов, но спешу. Вместе с тем, очень желательно, чтобы изначально начинающие получали корректные советы, а не отсебятину.
http://www.aladjev-maple-book.narod.ru
КСтати, даже даже формальным параметрам можно присваивать значения и это также вы найдете в указанной ссылке. Можно дать еще пару советов, но спешу. Вместе с тем, очень желательно, чтобы изначально начинающие получали корректные советы, а не отсебятину.