Главная » Просмотр файлов » Матросов А.В. Maple 6. Решение задач высшей математики и механики

Матросов А.В. Maple 6. Решение задач высшей математики и механики (1185909), страница 55

Файл №1185909 Матросов А.В. Maple 6. Решение задач высшей математики и механики (Матросов А.В. Maple 6. Решение задач высшей математики и механики.djvu) 55 страницаМатросов А.В. Maple 6. Решение задач высшей математики и механики (1185909) страница 552020-08-25СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 55)

Основы программирования в МарЬ 11ве2. Обычно создается список, длина которого равна длине наименьшего из двух заданных списков. Если при обрашении к этой команде задается четвертый параметр, то длина нового списка равна длине наибольшего списка, а четвертый параметр используется в качестве недостаюшего параметра при вызове функции г. > Ш: = (ееЧ (1, 1="а" ..

"Ь'Ч ! х Г,г:= ["а", "Ь"! > Ь2;=[хеЧ(1,1=2..6)]; 12:= [2, 3,4, 5, б! > х1р( (х, у) ->х ( (у, Ш, Ь2); ["а2", "ЬЗ"! > х1р((х,у(->х((у,Ь1,Ь2,рь1); [ "а2", "ЬЗ", ф4, ф5, фб ! [Подробное описание команды хтр(( можно найти в гл. 2.) 5.2. Процедуры В языках программирования процедуры позволяют выделить код в одну связанную единицу с тем, чтобы в дальнейшем простым обрашением к ее имени инициировать выполнение всех, содержащихся в ней операторов. Обычно процедуры используются для реализации некоторых часто выполняемых действий.

Так как основным режимом работы в Мар!е является интерактивное взаимодействие пользователя с его ядром, то процедуры являются единственным способом создания программ, расширяющих функциональные возможности самой системы аналитических вычислений Мар1е. И здесь следует отметить, что программирование в Мар1е достаточно своеобразно в силу аналитических "способностей" Мар!е.

Разработка программ для выполнения численных расчетов над числовыми данными, конечно, практически не отличается от аналогичных действий в других языках программирования, разве что синтаксис используемых операторов разный, но вот как только мы хотим запрограммировать действия с аналитическими выражениями, то наш опыт численного программирования становится практически не нужным. Программирование аналитики больше связано с проверкой типов выражений, позволяющих определить, в конечном счете, их структуру и состав, а эти знания уже позволяют нам реализовать разнообразные необходимые аналитические действия над выражениями, Небольшой пример. Пусть необходимо разработать процедуру, вычисляющую абсолютное значение некоторой величины.

Программист, не работавший с аналитическими системами, но имеющий опыт программирования на Часть Ь Основы Мар)е таких языках, как Рог(гав или С, без сомнения быстро напишет процедуру типа следующей: > АВЯ:=ргос(х) т т х<0 Гпеп -х е1ве х епс( 1Г; еос) ргос; Для вещественных числовых значений параметра она будет прекрасно ра- ботать: > АВЯ(-5,В9); 5.89 > в:=1/2: АВЯ (в) Но как только ей в качестве параметра будет передана переменная, которой не присвоено никакого числового значения, а такое в Мар!е может произойти, то наша процедура выдаст сообщение об о)пибке: > АВЯ(Ь) ) Еггог, (1п АВЯ) саппос ева1папе Ьоо1еап: Ь < 0 Действительно, невозможно определить, будет ли переменная ь меньше или больше нуля. В этом случае придется немного подкорректировать процедуру с тем, чтобы она в подобных случаях возвращала не вычисленное значение нашей функции Авя(): > АВЯ:=ргос(х) 1Г Гуре(х,повег1с) слеп 1Г х<0 гпеп -х е1ве х епс( 1Г) е1ве 'АВЯ'(х) епо' 11) епп ргос: > АВЯ(Ы ~ АВБ(Ь) На этом простейшем примере мы показали, какие "проблемы" возникают при программировании с аналитическими вычислениями, и показали простейший вариант решения с помощью проверки типа передаваемого в процедуру параметра.

Хотя, справедливости ради, следует заметить, что на этом "проблемы" не закончились. А если передаваемое в процедуру Авя() выражение является произведением, например, двух неизвестных величин? Ведь нам известно, что модуль произведения равен модулю произведения модулей, но наша процедура не сделает такого преобразования, т. е. мы получим в качестве результата АВЯ (а Ь ), а не АВБ (а) АВЗ (Ь ), как следовало бы. Глава 5. Основы программирования в Мар(е 5.2.1. Определение процедуры Определение процедуры Мар!е имеет следующий общий синтаксис: ргос ([ список формальных параметров ]) 1оса1 список локальных переменных; ] ( 91оЬа1 список глобальных переменных; [ орсзопа список опций с(еасггргзоп строка описания; последовательность операторов епб ргос При объявлении процедуры единственным обязательным параметром является последовательность операторов, формирующих тело процедуры.

Остальные параметры, определяюшие локальные и глобальные переменные, список формальных параметров, задающие специальные опции режима выполнения процедуры и строку описания, могут полностью отсутствовать. Замечание Для совместимости с предыдущими версиями в Мар]е завершать объявление процедуры можно просто ключевым словом епгь Последовательность ключевых слов епб ргос в предыдущих версиях не допустима. Определение процедуры на рабочем листе создает объект Мар!е, которому. однако, следует дать имя, чтобы в дальнейшем можно было обрашаться к нему.

Это осуществляется обычной операцией присваивания: > гессог 1епдсп:=-ргос(х,у) ачгс(х"2еу-2)) епб ргос) ьессог )ела)ь:= ргес(х, у) ачг((х 2 + у 2) ева ргес После того, как процедура определена и ей присвоено имя, ее можно вызвать и выполнить с помощью оператора вызова функции, в котором задается имя процедуры, а в скобках определяются фактические переменные, которые заменяют в теле процедуры все формальные параметры: > еесгог 1епчгй(2,5) ) ('29 Обычно возврагнаанын значением процедуры явпяется значение последне~о вычисленного в теле процедуры оператора. В нашем примере последний, и единственный, оператор вычисляет квадратный корень из суммы квадратов параметров процедуры. При вызове процедур следует помнить, что Мар1е сначала вычисляет все фактические параметры, а затем уже использует полученные значения в качестве параметров процедуры: > х: нпгс(у)) Часть 1 Основы Мар(е > у:=х) у:=х > х:=в; х:= а > оесхох 1епдп)1(х,у) а+а Задать процедуру, тело которой состоит из одного выражения или одного оператора ьг, можно и с помощью специальной нотации, заимствованной из алгебры, — последовательности '(спхсох пара веров)->оператор'.

Определенную нами ранее процедуру можно задать и так: > оеспох 1епдпп:= (х, у) ->вЧ«с(х"2+у"2); тес(ог (епяй:= (х,у) -+ тгх +у Если в процедуре задан только один параметр, то при таком способе зада- ния круглые скобки можно опустить; > д:=х->1х х<0 спев -1 е11х х=О спеп 0 е1ве 1 еп«( 1х; я:= ртое(х) орпоп арета)ог, о«гоп; (Гх < О (Ьеп -! е(П х = О тьеп О е(ве ! епй и епп ртее > 9(-9),9(0),д(9); -), О, ! Определения процедур трактуются Мар)е как правильные выражения, по- этому их можно создавать и вызывать и без присваивания имен: > ( (х, у) ->вяхс (х 2еу"2) ) (4, а) т())О+а' > ртос(х,у) вяхп(х 2+у"2) ) епо рхос (с,«(); т(с'+ д' Однако неименованные процедуры обычно используются совместно с функци- ей пер(): > пар (х->х" 3, (1, 5, 9, 4 ) ); ( (, 64, ! 25, 729 ) Над неименованными процедурами можно выполнять разнообразные подходящие действия, например, вычислять производную операцией О.

Если результату, который также является процедурой, присвоить какое-либо имя, то его можно использовать для вызова полученной процедуры: > Ьл -О ( (х) ->вяхв (х" 2+у" 2) ); х Г:=х-ь „Гх2+у2 Глава д Основы программирования в ((()ар)в > г(1)г ! Д ( 2 5.2.2. Передача параметров При вызове процедуры Мар1е сначала вычисляет ее имл, а затем последовательность переданных ей параметров, причем если значением какого-либо параметра оказывается последовательность, то формируется одна результирующая последовательность величин, которая и трактуется как последовательность фактических параметров: > в:=а,пг (::=2; вга,Ь (:=2 > И:=(х,у,х)->х*у*г; вс:=(х,у,г) — >хух > ьнв,г) 2аЬ В этом примере х, у, х является последовательностью формальных парамет- рОВ, тОГда КаК в,в,2 — ПОСЛЕдОВатЕЛЬНОСтЬ фаКтИЧЕСКИХ ПараМЕтрОВ.

Количество фактических параметров не обязательно должно равняться количеству формальных параметров процедуры, определенных при ее объявлении. Если их меньше, то ошибка во время выполнения процедуры возникнет только тогда, когда при вычислении тела процедуры действительно потребуется значение этого отсутствующего параметра. Если фактических параметров больше, чем формальных, то никакой ошибки не будет сгенерировано — дополнительные параметры будут просто проигнорированы. > тххеп=ргос(х, у, х) гв х>у спеп х е1ве г епс( )в епс( ргос; еХУ2:= ргес (х, у,х) Ыу < х Феп х е!ве епа Ы епе' ргпс > тхХЕ (1, 2, 3, 4, 5, б ) г 3 > тУЛЕ (5, 1): 5 > тХХЕ (1,5) ) Еггог, (1п тХХЕ) тХХЕ пеев а Згс( агоптепс, х, еиьоп тв тъввтпя Первый вызов процедуры ххе() с большим числом фактических параметров выполнился нормально.

Второй вызов этой же функции с двумя параметрами тоже завершился нормально, так как значение третьего параметра не потребовалось. А вот третий вызов с двумя параметрами завершился сообщением об ошибке, что необходим третий параметр, который в вызове отсутствует. Часть Л Основы гйзар(в зог До сих пор мы не обращали внимания на типы передаваемых в процедуру фактических параметров, а это во всех языках программирования является важной составляющей, так как позволяет исключить ошибки во время выполнения, связанные с некорректным применением некоторых операций к данным определенного типа, получаемым через параметры. Пока что наши процедуры работали без ошибок либо с параметрами любого типа, либо мы вызывали их с параметрами правильного типа, при которых подобных коллизий не возникало. Попробуем вызвать процедуру ~хуг(( с первым параметром„являющимся алгебраической переменной: > пхуг ('х',2, г( з Еггог, (за пе(угз саппос еиахпасе Ьоо1еап: -х < -2 Естественно, получили ошибку выполнения, так как действительно невозможно выяснить, больше или нет переменная х значения второго параметра.

Сообщение об ошибке нам понятно, так как мы сами разрабатывали процедуру и знаем ее алгоритм, но если передать ее другому программисту, то он наверняка не поймет в чем тут дело. Чтобы избежать подобных сообщений для процедур, работающих с определенным типом параметров, следует при объявлении процедуры обьявлять и тип ее параметров. Для этих целей предназначена операция проверки типа ::, первым операндом которой является имя формального параметра, а вторым его тип: > пкугз=ргос(хззпозпегхс,уззппзеегхс,х( гд х>у гьеп х е1зе г епг( зд епс( ргосг изхуУ: = ргос (хспзипенс, успигоепг, з) 1г у < х гвеп х еае г епо' и епп' ргос В этом случае, прежде чем начнется выполнение операторов тела процедуры, Мар1е проверит вычисленные значения фактических параметров соответствующим в объявлении процедуры типам формальных параметров.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее