Главная » Просмотр файлов » Говорухин В., Цибулин Б. Компьютер в математическом исследовании

Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 36

Файл №1185927 Говорухин В., Цибулин Б. Компьютер в математическом исследовании (Говорухин В., Цибулин Б. Компьютер в математическом исследовании.djvu) 36 страницаГоворухин В., Цибулин Б. Компьютер в математическом исследовании (1185927) страница 362020-08-25СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

((п () саппьс еча1оа(е Ьас1еап. а < О Если бы переменной а перед обращением к Е было присвоено числовое значение, то ошибка бы не возникла. Ошибки можно избежать, используя обращение к процедуре как к процедуре отложенного действия, указан ее имя в кавычках. При таком обращении не происходит выполнения тела процедуры, Результат можно присвоить переменной и вернуться к выполнению процедуры после явного определения всех фактических параметров.

Например: > а:='('(а.ь): е.= 1(а) > а'-1, ч: Значение второго наро иетро: Ь Е)це одним источником ошибок может быть использование в процедурах локальных переменных. Дело в том, что для оценки локальных переменных Мар!е использует только один уровень оценивания и это иногда приводит к неверным результатам, Проиллюстрпруем сказанное примером: > (.-росс(х) 1аса1 а Ь,с, Ь:=с: а+х; епб ргос. З:= ргос (х) 1оса1 а, Ь, е: а;= Ь; Ь:= с; а + х спб ргос и Г(1); Ь+1 Этой ошибки можно избежать, если перед оператором авх; поставить оператор а:=еоа1(а).

Модули Если процедуры предназначены для создания команд, включаюц(их в себя набор Мар1е-команд, то модули позволяют создавать более сложные конструкции, такие как наборы процедур, данных и др. Описание модуля имеет вид: люби1е () ехрогс Е5ЕО: 1оса1 15ЕО. В1ЬЬа1 65ЕО: срг)сп ОРТ5ЕО: белею р11сп ОЕ5С. аорт епб пюби1е . Описатель ел росс предназначен для задания имен процедур, наборов данных и других составляющих модуля, которые будут доступны для вызова. Обращение к этим объектам осуществляется при помощи команды выбора О-). Другие описатели аналогичны соответствующим описателям процедур.

2410, Глава 7 Програииироаание а иар(е Приведем пример простых процедуры и модуля, которые реализуют операции сложения и произведения двух величин: > ехрг:-ргос() 1аса) р1ов,ргоа; р1ов:-(а. Ы ->а>Ь; рсоа:=(а. Ы->а*Ь; р1ыв,ргоо епа ргос: Обратимся к процедуре ехрг и выведем результат: > «1: ехрг(); 51(13(1.1); 51(2)<1,1): «!:= р1ы, ргали 2 Теперь приготовим модуль для выполнения аналогичных операций: > ехео:=вюао1е() ехрог< р1ов,ргоп; р1ив:-(а. Ы ->а«Ь: ргоа.-(а.Ы ->а*Ь: епт) еоао1е.

Обратнисв н эленентан надули; > еяво: -р1о«(1.1): ехвю: -ргой1,1); 2 Модули являются мощным инструментом программирования в Мар1е и позволяют реализовывать самые разнообразные конструкции. Последнее время широкое распространение получили объектно-ориентированные языки программирования. Хотя Марте и не является таким языком в полной мере, но с помощью модулей можно реализовывать разнообразные операции с объектами. Приведем пример конструктора объекта «комплексное число«и > Соилов:-ргос(ге1,!ей) тт пагад«>2 Слеп еггог("Неправильный входной паранетр") Гт; пюоы1е<) ехрогс ге Ни.'аЬв',ат<2!с " 1оса1 геа(ртиай геа).тиар:-ге),тир, ге;-()->геа1: 1е:-()->тлей: аов:-<)->ва С(ге()"2+ив<)"2); .ага: (у->агсаап(нв()тге()): епа вюаа1е: епа ргос: создадим с помощью конструктора соевою комплексное число 2+21 и выведем его модуль и мнимую часть.

Функции, процедуры и надули 191 > а:-Соаиыа(2.2): кая О1 0 а).' 8; х ва,(иь Ь,ага; ееа(вих)о)е > 5:-аЬ5(): г:-1и(): 2 /2 2 Макроопределения Часто бывает удобно ввести новые имена для уже существующих функций или переменных. Это позволяет сделать команда 51 ! аз. Проиллюстрируем ее действие примером: > а1)аа(Г-5)о); > Р(х): 51ир11ту(аиЬ5(х-Р!/2.3)): Р(Х) 1 Для задания макроопределений (макросов) используется команда авсго. ее удобно применять для введения сокращенных имен-синонимов команд Мар!е, присвоения одного имени для последовательности команд или переопределения уже существующих команд. Поясним сказанное примерами.

Сначала определим макрос с именем сс для вычисления определителя при помощи команды ЬеС пакета 1тоа19 и обратимся к нему: > геасагс; иасго(сс-11оа19(оет)): > сс(Па1.а2) . (аз.ааП): а! а4 — а2 аЗ Следующий макрос реализует сразу несколько операций: > аасго(с5 аЬ50(соа+"-"+5!п)): > 9: с5(х); 8:=(-соа(х) + х — аго(х) ) Подставим в полученное выражение значение х: > 5ОЬ5(х 0.1.9): ! -Соа(. ! ) +,1 — 5!о(.

! ) ! Значение выражения вычислено не было, для этого требуется выполнить команду еча) Г. Переопределим команду подстановки 50Ь5 так, чтобы после подстановки всегда выполнялись действия с плавающей запятой: > авсго(аоЬ5-еча1(95оЬ5); С, СХ, Хива Теперь при обращении к команде 50Ь5 сразу производится и вычисление выражения: > 5иЬ5(х 0.1,9); аоЬ5(х 1/5.(х-1) Э); .9948375820 -.5120000000 192 Глава 7. Программирование в Мер<в 1оздание и использование пакетов и библиотек Пакетом обычно является коллекция процедур, предназначенных для решения определенного класса задач. В поставке Мар1е существует более двадцати пакетов, в том числе пакет для решения задач линейной алгебры, пакет по теории графов и др.

Этот стандартный набор мовкно расширять пакетами, разработанными самим пользователел(. В создаваемый пакет имеет смысл номен<ать уже отла)кепные и оттестированные процедуры. Напол<ним, что один из вариантов обращения к команде паше сош пакета пап)е рас<(, выглядит следующим образом; паше рас2 Гпаше сош) < ор11опз), Таким образом, полное имя команды, входящей в пакет, состоит из имени етого пакета и имени самой команды, а пакет представляет собой как бы массив, злементалвн которого являются команды.

Для оформления пакета нужно переменной с составным именем присвоить процедуру. После того как пакет написан, ого нужно сохранить на диске в файле с расширением зп <например, с именем пешеГ11е) при помощи команды ввее паше овсе."паше<1)е ш" В последующих сеансах пакет нужно предварительно считать с диска при помощи команды геап 'паше<11е.ш" Пакеты можно создавать также прн помощи модулей <фактически модуль и является пакетом).

Для подключения пакета используется команда и) 1П. Приведем пример небольшого пакета рас<(1 из трех процедур с именами ргос1, ргос2, ргосЗ: > расх1<ргоо1): = ргос(а) 1оса1 в; ю "2*а; рюпт("ргос1: ".в); гс епо' ргос рдсл1<ргос2)'- ргос(а) 1оса1 гн в;-в"2; рг1п<<"ргос2: ".в), в: епс ргос: овсв)<ргосЗ) = ргос<а.з) 1оса1 гк в =<в+в)/2, рюпм "ргосЗ: ",в): вп епо ргос: Сохраним пакет в файле рас<(1.)п: > ва>е раск)."расл1 ш"; Теперь в другам сеансе мы можем считать зтат пакет командой геай и подключить при помощи команды )<1 СП; > гелгвг(л > геао "рвск1 ш": > нгел(расх1); < ргосб ргос2, ргосЗ) > ргос2(а): ргос2:, а~ Если пользователем написаны и используются несколько собственных пакетов, то целесообразносоздатьсобственн юбиблиатек .Впредыд щихверсияхМар1едля Создание и использование пакетов и библиотек 193 этого была предназначена программа п)агсй.ехе. В состав ядра Мар]е б включена команда пигсЬ. С ее помощью можно создавать библиотеки, добавлять или исключать элементы библиотек и т.

д. Обращение к ней имеет вид: еагсм сознана, агс1п че сц г, орт1опз ) Здесь сспп)ап6 описывает действие с библиотекой агсйче сйг, а орт1опз — дополнительные параметры. Мы не будем далее подробно останавливаться на описании работы с библиотеками, а ограничимся только простым примером. Для более подробной информации следует обратиться к справке Мар]е. Вначале создадим новую библиотеку (директория с:~тел) р), должна уже существовать на диске) при помощи команды > иагсп("сгеаге","с:))Сезр))", 1), Отметим, что при указании директорий в Мар]е вместо одного используется два обратных еле)па.

Для работы с библиотеками в Мар]е имеются две зарезервированные переменные: 1) Ьпап)е — содержит пути к каталогам, где находятся доступные в текущем сеансе библиотеки, а з аче1 (Ьпаве — имя каталога с библиотекой, в которую будут записываться новые процедуры. Файлы с библиотеками имеют имя п)ар[е.йЬ, Для того чтобы в сеансе стала доступна дополнительная библиотека, необходимо этим переменным присвоить строки с указанием пути к библиотеке: > 1)Ьпаее: -1(Ьпаие. "с: ()Сепо) ) ": ПБпахпе х> "С:1)РКООКАМ Р[[.ЕЯ)МАР).Е од)Ь," "с:ц(ехпрц" > захе)1Ьпаее:-11Ьпаие[2]: Приготовим модуль, содержащий две процедуры: > енпо: -пюао1е() ехрогс р!из.рго6; 1оса1 а.Ь: ор(1оп раскаое: р1оз:-ргос(а,Ы а+Ь епс ргос: рго6:"ргсс(а.Ы а>Ь гп6 ргос; епа пкн о)е: Сохраним его и пакет рас]хт (будем считать, что мы его уже подключили) в библиотеку с помощью команды заче11Ь: > заче1)щехаа.раси)): Чтобы записанные команды активировать в другом сеансе, нужно добавить путь к пользовательской библиотеке в список йЬпап)е и подключить пакеты при помощи команды кп СЬ.

Например: > гезгагг; > 11Ьпаие:-11Ьпаие,"с:1)Свар)1": > и)СЬ(ехпю): [Р(ит,ргол ] В Мар!е имеется возможность сопровождать написанные команды текстами справки. Для этого используется команда вакепе1 р: иакеье1 р(сорте., тхет()е, 11ьгагу) 19Га Глава 7. Программирование в нар!е Здесь гор!с — имя команды, для которой создается справка, Охот!1е — имя текстового файла, содержащего текст справки, 1! Ьгагу — имя библиотеки, содержащей команду. (оманды ввода/вывода В Мар1е можно сохранить в файле результаты всего сеанса работы, но часто бывает нужно записать только конечный результат, а не весь ход решения. Это становится особенно актуальным, если для получения результата проводился большой объем символьных вычислений и манипуляций с формулами.

Для записи данных в Мар1е существует команда заче. Если результатами работы являются значения переменных чаг1, чаг2,..., то для сохранения их в файл с именем паве и расширением ехт достаточно дать команду ааче чаг1,чаг2,. .."пане.ехт": Способ представления сохраняемой информации в файле зависит от расширения ехт. Если в качестве расширения указано .!и, то файл запишется во внутреннем Мар1е-формате, при других расширениях команды Мар!е запишутся в текстовом формате. Например, в результате выполнения команд > а:-51п(х): ааче а."а.и"; будет создан файл с именем а.пт со следующей информацией: нбрО 1"а-$55!п66ФФ"хбб" Приведем пример сохранения в текстовом формате: > а:-5!п(х) ааче а."а яхт"; Содержимое файла имеет вид: а: 51п(х); Если использовать команду заче без перечисления переменных, а указать только имя файла, то произойдет сохранение всех назначенных за сеанс величин.

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

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

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