Бързо ръководство за Maple

Конструкциятаelifthenможе да се повтори няколко пъти или изобщо да не се повтори. Часттаelseсъщо не е задължителна. Често е по-удобно да използвате функцията за разклоняване -`if `вместо съставния оператор за разклоняване. Има три аргумента, първият от които е условието, а вторият и третият са върнатите стойности. Ако първият аргумент е верен, тогава върнатата стойност на функцията е вторият аргумент, а ако е false, третият. Ето пример за използване на функцията`if `:

ръководство

В Maple има няколко вида цикли. Стандартният аритметичен цикъл има следната структура:forfrombytodood; Тук се изпълнява група от командиblockза всяка стойност на променливата на цикълаvar, която се променя от стойносттаexp1към стойносттаexp3със стъпкаexp2.Ако конструкциятаfromи/илиbyлипсва, тогава съответните изрази се приемат равни на 1. Обърнете внимание, че променливата на цикъла може да променя стойността си не само при преминаване към следващата стъпка от цикъла, но и вътре в тялото на цикъла. Нека илюстрираме това с пример:

>за i от 1 по 1 до 10 направете i:=i+3 od;

Итерационният цикъл има структурата:whiledood; Възможен е и „хибрид“ на аритметични и итеративни цикли. Съответната конструкция е:forfrombywhiledood;

Разгледаните варианти за организация на циклите са типични (с някои промени) за повечето езици за програмиране. В допълнение към тях, Maple има друг специфичен вид цикъл. Както вече споменахме, изразите в Maple имат дървовидна структура. Възможно е да се изброят всички клонове (операнди) от първо ниво сизползване на специален цикъл със следния синтаксис:forindood; Нека илюстрираме работата на този цикъл с примери:

>за g в expand(f) do g od;

>s:=0:for i в numtheory[divisors](60) направете if numtheory[mobius](i)=1 then s:=s+i fi od;s;

В последния пример намерихме сумата от онези делители на числото 60, стойността на функцията на Мьобиус от която е равна на 1.

Като илюстрация на използването на цикли и условни оператори ще решим следната задача: намираме всички двойки двойни прости числа (както се наричат ​​простите числа, които се различават едно от друго с 2) върху сегмент от естествената редица от числа от 8000 до 9000.

8009, 8011 8087, 8089 8219, 8221 8231, 8233 8291, 8293 8387, 8389 8429, 8431 8537, 8539 8597, 8599 8627 , 8629 8819, 8821 8837, 8839 8861, 8863 8969, 8971

Моля, обърнете внимание, че преди да започнем изчисленията, присвоихме стойност 0 на запазената променливаprintlevel. Факт е, че командите, извикани от вложени структури, не са предмет на правилото за регулиране на извеждането на резултатите от изпълнението на команда на екрана чрез поставяне на точка и запетая или двоеточие след съответната команда. В този случай се показват резултатите от изпълнението на всички команди, чиято дълбочина на вмъкване не надвишава текущата стойност на запазената променливаprintlevel. Това е за да се предотврати отпечатването на твърде много междинни резултати от програмата. Въпреки това, ако все пак искаме да покажем резултатите, получени при дълбочина на влагане, по-голяма отprintlevel, е достатъчно да използваме оператораprint. По подразбиране стойността наprintlevelе 1. (Това обяснява защо в примера, където изчислихме сбора на частта от делителите на числото60, резултатите от заданията s:=s+i) не бяха показани на екрана)

Волгоградски държавен педагогически университет Катедра по алгебра, геометрия и информатика