Прохоров Г.В., Леденев М.А., Колбеев В.В. Пакет символьных вычислений Maple V (Прохоров Г.В., Леденев М.А., Колбеев В.В. Пакет символьных вычислений Maple V.djvu), страница 14
Описание файла
DJVU-файл из архива "Прохоров Г.В., Леденев М.А., Колбеев В.В. Пакет символьных вычислений Maple V.djvu", который расположен в категории "". Всё это находится в предмете "компьютерный практикум по специальности" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 14 - страница
> сопгегг(я!п(х" 2),ягг!щ); > сопгегг(а+в+с*д,ягг!пК); саЫе(~лннгегг!с, ( (1, 1)=79 (2,2)=49 (1,2)=5б )) выражения в строку служит команда янйл)л(2)) Ф+%+й'с,) Ю 157 Массивы и таблицы 15. МАССИВЫ И ТАБЛИЦЫ 15.1. Создание таблиц Таблица — конечномерный массив, у которого индексы любые значения. Таблица создается указанием слова "гаЫе*'. > таЫе( ); йаЫе(( ]) Команда заЫе( ) создала таблицу с неопределенными значениями.
Определим значения таблицы: > (аЬ е((22,ген,р()); гаЫе(( 1= 22 2 = гес( 3 = 7[ в Так как индексы таблицы не были определены, то программа сама присвоила им целочисленные значения, расположенные по порядку. Зададим индексы таблицы следуюсцим образом; > Я:= гаЫе(((2)=45,(4)=61)); Я = саЫе(( 2=45 4=61 ]) Обратимся к элементам таблицы, один из которых не определен: 158 Глава 15 > $[Ц,5[2[; Я,45 Для распечатки индексов и значений таблицы служат функции )пд(зеа и епьт1ез. Например, распечатаем индексы таблицы Р: > (па(сея(Р); [с(еЯ, [аЬс) Значения таблицы Е: > еп(без(Р); [ -вп1, [ соз [ И.2. Индекснын функции Можно создавать определенные типы таблиц с помощью индексных функций: зупппеспс, апйзупппе(Пс, зрагзе, д(абопа!, (депйу — по формату: [аЫе( <индексная функция>,<индексная функция...>) Если <индексная функция> определено как <имя> которое не принадлежит одному из пяти перечисленных, то имя '(пдехГ.
<имя> будет использоваться, как имя процедуры, которая определяет индексную функцию. Пример, приведенный ниже, создает индексную функцию, которая возвращает заначение 1пГ1п((у для всех несвязанных со значениями индексов таблицы (похоже на индексную функцию арале, которая возвращает нуль). 159 Массивы и таблицы Пример: > 'шбехЛпйвгу':= ргос(пийсев,1аЫе) > И(пагав = 2) 1Ьеп > И (авв!!!пе4(1аЫе[ор(!п4!сев)[)) йгеп 1аЫе[ор(шй!сев)[; > еЬе Ыйвгу; > й1 > еЬе 1аЫе[ор(!в[(сев)[ иа агав[3..пагав[; > й; > епй: > 1 иа 1аЫе((пйвгу): > 1[1Д:= 1: > 1[1Д; > 1[2,Ц; > 1 па 1аЫе(вупппе1йс,шйшгу): > 1[1,2[ иа 1: > 1[1Д; > 1[2,1[; > 1[33,44[; 160 Глава !6 16. ПРОЦЕДУРЫ 16.1. Определение и вызов процедур Синтаксис определения процедуры следующий; ргос (<агязес(>)!оса! <пзес(>; я!оЬа! <пзег(>; орйопз <овес)>; дезспрйоп <згг!пя>; <згагзег!> епг( Параметры: — список формальных параметров.
Параметры в списке разделяются запятой. Список может быть пустым; <агязеа> !оса!, я!оЬа(, орг(олз — необязательные параметры, которые определяют глобальные и локальные переменные, а также режимы работы; Ыезсггриол — комментарий, описание процедуры. Любой возвращаемый список может быть пустым. Проема~реть параметры процедуры можно с помощью функции ор. ор(<пшп>,еча!(<имя процедуры>), где пшп — число (параметр). 1 — возвращает список формальных параметров; 2 — возвращает список локальных переменных; 3 — возвращает список ключей из раздела орйопз; 4 — возвращает таблицу памяти процедуры; 5 — возвращает строку описания Йезспр1!оп; 6 — возвращает список глобальных переменных. Процедуры 161 Пример ощгеиния и вызова процедуры .' > роиег:=ргос(а,Ь) > оезсг!рг(оп 'возведение в степень'; > алЬ > епо; ранет;= ргае1а,ЬУ и Ь ела > роиег(2,3); > ор(1,ега!(розгег)); и,6 Процедура возвращает значение последнего выполненного оператора или значение, определенное процедурой КЕТ()КЬ!.
> опе:=ргос(!) > !1 Г<0 ГЬеп КЕРК)Х((0) е!зе КЕТАХ(1) 6 > епгй > опе(1); опе( — 6)! 1б.2. Локальные лоромвнные Как и в процедурах Разса!. в Мар)е существуют локальные и глобальные переменные. Онн определяются при описании процедуры после ключевых слов я)оЬа) и !оса). Локальные переменные видимы только в пределах процедуры, глобальные переменные видимы везде. Рекомендуется все переменные, используемые процедурой, описывать в секциях !оса! и я1оЬа).
Если тнп переменных явно не определен, то существует правило определения типа переменной: !б2 Глава !б ° если переменной внутри процедуры присвоено какое-либо значение, то зта переменная считается локальной; ° переменные, используемые в циклах Гог и зег(, также считаются локальными. ° остальные переменные считаются глобальными. > ж=ргос(х) > у:=2х; > КЕРК)ч(у) > епо: И'агп!ле, у и !тр!!с!!!у Йес(агег! !оса! > а:=ргос(х) > й)оЬа! г; > х+г > епрс > г:=О: а(5); > г:=6: а(5); то.З. Расширяющие ключи Расширяющие ключи записываются в секции орйопз, Ключи могут быть следующими: гегоегоЬег — определяет таблицу памяти для процедуры; Ьп|)йо — определяет функцию как встроенную; зумет — определяет "системную" процедуру; орега!ог — объявляет процедуру — функциональный оператор; аггов — определяет процедуру — оператор в нотации "->"; апя!е — определяет процедуру — оператор в нотации "<..!..>"; Процедуры — определяет, что будет выводиться информация о выполнении; рас(саяе — определяет пакетную процедуру; Соруг1йЫ вЂ” авторские права.
ггасе Ключ гегиегпоег Определяет, что все результаты обращений к процедуре будут заноситься в таблицу памяти процелуры. > гл~ > епй: > г"(4): 16 > г(б); 36 Просмотреть таблицу памяти можно с помощью следующей команды: > ор(4,ега)(()); Рассмотрим пример процедуры, вычисляющей числа Фибоначчи; > й=ргос(г) > орт(опя гегоетЬег; гаЫе([ 6= 36 4=16 В !64 Глава !6 > 1:= ргос(п) !(пс2 ГЬеп не)ае((п — 1)+1(п-2) йене: > 1(14); Затраты времени возрастают по зкспоненциальной зависимости: > 1:= ргос(п) орйоп гевевЬег; > !1 пс2 Гйеп п еЬе 1(п — 1)+1(п — 2) й еп4: > 1(14)! В последнем случае затраты времени возрастают по линейной зависимости.
так как предыдущие значения запоминаются в таблице памяти. С таблицей памяти можно работать как с обычной таблицей. Допустимо присваиванне; > 1(0)пеО! г!О) — — О Ключ Ье41нп Определяет процедуру как встроенную. Ключ Ьц))!!и должен быть первым в списке орбопз, Например, функция гуре — встроенная функция. > еза)(гуре): ргос( 1 ор!1от Ьи(1!Ьк 145 ел~1 Результат выполнения еча! показывает, что гуре — встроенная функция. Число !45 — системный номер функции.
Процедуры 165 Ключ «уггеаь Определяет "системную" процедуру. "Системная*' процедура — это процедура, таблица лама~и которой может быть удалена из "мусорного ящика" (яагЬаяе сойесгог) системы. Если процедура описана без ключа зуззегп, то нельзя будет удалить ее таблицу памяти. Ключ орегагог Определяет, что с процедурой можно работать как с оператором.
Пример функционального оператора: > зоне<х "2(х>; ве1:=(х ~ х) > орет:=ргос(х,у) > ор6оп орега1ог; > х'2 — у > епд) орвг = (х -у ~ х,у) 2 > орет(4,1); Процедура орег аналогична записи: > орет:=<х"2 — у(х,у>1 орвг = (х — у ~ х„у) 2 Ключ аггаи Процедура — оператор будет записана в нотации "->".
Глава 16 166 Нотация "->'* - это форма записи оператора. Ключ Аггоп изменяет правило определения глобальных и локальных переменных: все не локальные переменные не будут добавлены в список параметров. Ключ аггою используется вместе с орегагог. > орег1:=ргос(х,у) > орйопз орегазог,втоп! > х" 2 — у > епй; орегс' =(х,у) -+х — у 2 > орег1(4,1); Орег! эквивалентно записи; > орег1:=(х,у) — >х" 2 — у; орег1;=(х,у) -Эх -у 2 Ключ аля!е Объявляет процедуру — оператор в нотации "с >".
Действует вместе с ключом орегагог (по умолчанию). > орег2:=ргос(х,у) > орйопя орегатог,апя!е! > х 2 — у > еп41 орег2 = (х -у ~ х у) 2 Ключ стасе Определяет, что при выполнении процедуры будет выводиться отладочная информация. 167 П оцеду ы Не подлежат трассировке процедуры, содержащие функции: ааа)апед, еча1, еча! Ы, еъа!1 еча!и, ггареггог, зес), озег)п)о. > рго:=ргос1х,у,г) > !оса! 1,)еа; > орг)опа !гасе; > 1;=х*у; > 1спеу+гс > к=к*а; > 1+)с+1; > епс): > рго(1,2,3); ! — > елптрго, агею = 1, 2, 3 с'=2 )с:= 5 г '= 3 10 < — ели рса с'гсоа ас сор 1еие!) = 10) 10 Аналогичные результаты дает функция !гасе(<имена процедур>). > Й:=ргос(1) > 1~3 > епс); ф~с= ргосСсС с "3 епН 168 Глава 16 > 0(4); 64 > !гасе(й): > 0(4); ( — > елюгЦ; агдз = 4 ч- ехй ДГ(лая аз гор!еге1) = 64) Выключить режим трассировки можно с помощью ип1гасе.