Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Maple 9.5/10 Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, Ρ„ΠΈΠ·ΠΈΠΊΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 111

Автор Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”ΡŒΡΠΊΠΎΠ½ΠΎΠ²

<stateq> # выраТСния β€” Ρ‚Π΅Π»ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

end; (ΠΈΠ»ΠΈ end:) # объявлСниС ΠΊΠΎΠ½Ρ†Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π­Ρ‚Π° Ρ„ΠΎΡ€ΠΌΠ° ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС описанныС Π²Ρ‹ΡˆΠ΅ частныС Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ позволяСт Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ самыС слоТныС ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. ЧитатСлям-программистам стоит Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ справкС возмоТности этой Ρ„ΠΎΡ€ΠΌΡ‹ задания ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ возмоТности конструкции use β€¦ in β€¦ end use.

10.4. БрСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

10.4.1. БрСдства контроля ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€

Для контроля ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π½Π°Π΄ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ вывСсти ΠΈΡ… тСкст. Для этого, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, слуТит ΠΊΠΎΠΌΠ°Π½Π΄Π°

print(name);

Π³Π΄Π΅ name β€” имя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅, Π½Π°Π΄ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

> interface(verboseproc=2,prettyprint=1,version);

1, 3, Classic Worksheet Interface, Maple 9.50, Windows, Aug 9 2004 Build ID 163356

Π•Π΅ смысл Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ пояснСн Π½ΠΈΠΆΠ΅. Пока ΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° обСспСчиваСт ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ тСкста ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ВстроСнныС Π² ядро ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, написанныС Π½Π΅ Π½Π° Maple-языкС, Π² ΠΏΠΎΠ»Π½ΠΎΠΌ тСкстС Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ. Поясним это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ:

> print(evalf);

proc() option builtin, remember; 171 end proc

> print(erf);

proc(x::algebraic)

local Re_x, Im_x, sr, si, xr, xi;

option `Copyright (c) 1994 by the University of Waterloo. All rights reserved.`;

 if nargs <> 1 then error "expecting 1 argument, got %1", nargs

 elif type(x, 'complex(float)') then evalf('erf'(x))

 elif x = 0 then 0

 elif type(x, 'infinity') then

  if type(x, ' cx_infinity') then undefined + undefined*I

  elif type(x, 'undefined') then NumericTools:-ThrowUndefined(x)

  elif type(Re(x), 'infinity') then CopySign(1, Re(x))

  elif type(x, 'imaginary') then x

  else infinity + infinity*I

  end if

 elif type(x, 'undefined') then NumericTools:-ThrowUndefined(x, 'preserve' = 'axes')

 elif `Symbolic/Sign`(x) = -1 then -erf(-x)

 else 'erf'(x)

 end if

end proc

Π—Π΄Π΅ΡΡŒ Π²Π½Π°Ρ‡Π°Π»Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π²Ρ‹Π²ΠΎΠ΄ сокращСнного листинга встроСнной Π² ядро ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ evalf, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²Π΅Π΄Π΅Π½ ΠΏΠΎΠ»Π½Ρ‹ΠΉ листинг ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ вычислСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ошибок erf. Π­Ρ‚Π° функция ΠΈΠΌΠ΅Π΅Ρ‚ довольно ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ β€” ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТными ΠΈ большими ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ. Π˜Ρ… просмотр ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ читатСлям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ β€” листинги ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π½Π° языкС Maple ΡΠ²Π»ΡΡŽΡ‚ΡΡ наглядными ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Но вСрнСмся ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ interface. Она слуТит для управлСния Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΈ задаСтся Π² Π²ΠΈΠ΄Π΅

interface(arg1, arg2, …)

Π³Π΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ равСнств Π²ΠΈΠ΄Π° name=value ΠΈ слов-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

ansi          autoassign   echo        errorbreak  errorcursor

imaginaryunit indentamount labelling   labelwidth  latexwidth

longdelim     patchlevel   plotdevice  plotoptions plotoutput

postplot      preplot      prettyprint prompt      quiet

rtablesize    screenheight screenwidth showassumed verboseproc

version       warnlevel

Рассмотрим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ возмоТности этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ verboseproc=n Π·Π°Π΄Π°Π΅Ρ‚ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° листинга ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. ΠŸΡ€ΠΈ n=0 тСкст Π½Π΅ выводится, ΠΏΡ€ΠΈ n=1 выводится тСкст Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Π° ΠΏΡ€ΠΈ n=2 β€” всСх ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π½Π° Maple-языкС. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ этого Π±Ρ‹Π» Π΄Π°Π½ Π²Ρ‹ΡˆΠ΅. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ prettyprint=0 ΠΈΠ»ΠΈ 1 управляСт Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ стандартных сообщСний. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ plotdevice=string управляСт Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ plotdevice=gif ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ запись Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ .gif.

Одним ΠΈΠ· основных срСдств ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ являСтся функция трассировки trace(name). Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ задаСтся систСмной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ printlevel (ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π°). ΠŸΡ€ΠΈ printlevel:=n (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ n=1 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) выводится Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСпосрСдствСнно исполняСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ k-Π³ΠΎ уровня влоТСнности Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡ‚ 5*k Π΄ΠΎ 5*(k+1). Π’Π°ΠΊ, ΠΏΡ€ΠΈ n ΠΎΡ‚ 1 Π΄ΠΎ 5 выводятся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ трассировки ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня, ΠΏΡ€ΠΈ n ΠΎΡ‚ 6 Π΄ΠΎ 10 Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Ρ‚.Π΄. МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ n β€” 100 обСспСчиваСт трассировку ΠΏΠΎ всСм уровням влоТСнности ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ name.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ осущСствлСниС трассировки для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ int(x^n,x):

> printlevel:=5;

printlevel := 5

> trace(int);

{--> enter trace, args = int

<-- exit trace (now at top level) = int}

                                    int

> int(x^n,x);

ДСйствиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ трассировки отмСняСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ untrace:

> untrace(int);

{--> enter untrace, args = int

<-- exit untrace (now at top level) = int}

                                      int

> int(Ρ…^n,x);

> enter int, args = x^n, x <-- exit int (row at top level) = x^(n+1)/(n+1)}

> printlevel:=1;

printlevel := 1

> int(x^n,x);

ΠŸΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² выполнСния вычислСний Π½Π°Π΄ΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° сообщСниями ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Для этого Π² Maple прСдусмотрСны функция traceerr ΠΈ систСмная пСрСмСнная lasterr, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сохраняСтся послСднСС сообщСниС ΠΎΠ± ошибкС. ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ tracerr пСрСмСнная lasterr очищаСтся:

> 2/0;

Error, numeric exception: division by zero

> 2/4;

1/2

> 2/.3;

6.666666667

> lasterror;

"division by zero"

> traperror(3/4);

3/4

> lasterror;

lasterror

> traperror(5/0);

Error, numeric exeption: division by zero

> lasterror;

"numeric exception: division by zero"

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ отслСТиваниС ошибок Π² Ρ…ΠΎΠ΄Π΅ вычислСний. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ систСмой Maple Ρ€Π΅Π΄ΠΊΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ‚ описанныС срСдства, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π½Π° Π΅Π³ΠΎ основС Π±ΡƒΠ΄Π΅Ρ‚ составлСна ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ построСнии ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ ситуации Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ.

10.4.2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ²

Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ CodeGenetarion ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования Maple-ΠΊΠΎΠ΄ΠΎΠ² Π² ΠΊΠΎΠ΄Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования:

> with(CodeGeneration);

Warning, the protected name Matlab has been redefined and unprotected

[C, Fortran, IntermediateCode, Java, LanguageDefinition, Matlab, Names, Save, Translate, VisualBasic]

НапримСр, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Maple-ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ mode Π² ΠΊΠΎΠ΄Ρ‹ языка MATLAB ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

> Matlab(mode);

Warning, the function names {Im, Re} are not recognized in the target

language

function modcreturn = modc(z)

 modcreturn = (sqrt(Re(z) ^ 2 + Im(z) ^ 2));

Из этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ систСмой Maple, ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² Π½Π΅ΠΉ, ΠΈΠΌΠ΅Π΅Ρ‚ возмоТности Π»Π΅Π³ΠΊΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с листингами ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ написанных Π½Π° языкС программирования систСмы Maple, Π΄Π° ΠΈ Π½Π° рядС Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ рассмотрСниС примСнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования Π² Π·Π°Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚, хотя ΠΎΠ½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ систСма Maple располагаСт срСдствами для этого.

10.4.3. Π Π°Π±ΠΎΡ‚Π° с ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв составитСли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€) Ρ€Π΅Π΄ΠΊΠΎ ΠΏΡ€ΠΈΠ±Π΅Π³Π°ΡŽΡ‚ ΠΊ пошаговой ΠΈΡ… ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅. БрСдства ΠΎΠ±Ρ‰Π΅ΠΉ диагностики ΡƒΠΆΠ΅ Π² Maple Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ Π³Ρ€ΡƒΠ±Ρ‹Π΅ ошибки Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… ΠΏΡ€ΠΈ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Иногда, ΠΏΡ€Π°Π²Π΄Π°, для этого приходится Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Β«ΠΏΡ€ΠΎΠ³ΠΎΠ½ΡΡ‚ΡŒΒ» ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ Π½Π°Ρ‡Π½Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ слуТит ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ (debugger). ОпишСм, ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Допустим, ΠΌΡ‹ составили Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ demo, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΡƒΡŽ сумму ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² чисСл (1^2+2^2+...+n^2):

> demo:=proc(n::integer) local y,i:

> Ρƒ:=3:

> for i to n do y:=y+i^2 od

> end;

demo := proc(n::integer) local y,i; y: = 0; for i to n do Ρƒ:=i^2 end do end proc

> demo(3);

14

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ stopat:

> stopat(demo);

[demo]

> demo(3); demo:

 1* y := 0;

DBG>

ΠŸΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, являСтся ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ ΠΊ Π²Π²ΠΎΠ΄Ρƒ со Π·Π½Π°ΠΊΠ° > Π½Π° DBG> (ΠΊΠ°ΠΊ Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, DBG ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ debugger). Π’Π΅ΠΏΠ΅Ρ€ΡŒ, подавая ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ next (ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ), step (шаг) ΠΈ stop (остановка), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹:

DBG> next

0

demo:

 2 for i to n do

    ...

   end do

DBG> step

0

demo:

 3 y := y+i^2

DBG> step

1

demo:

 3 y := y+i^2

DB3> step

5

demo:

 3 y := y+i^2

DBG> step

14

Π’ послСднСм случаС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠΎ шагам дошла Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° вычислСний; Π½Π° этом Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ сама собой.

МоТно Ρ‚Π°ΠΊΠΆΠ΅ вывСсти листинг ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ showstat: