Матросов А.В. Maple 6. Решение задач высшей математики и механики (1185909), страница 64
Текст из файла (страница 64)
Параметры дескриптора обьсдинения аналогичны параметрам дескриптора структуры: СН10И(поле1::дескриптор данных1, ..., пелен.":дескриптор данныхн( ТабЛИца (таъ1е) И СПИСОК (11ат) Мар!Е МОГут ИСПОЛЬЗОВатЬСя В КаЧЕСтВЕ фаК- тических параметров, если формальные параметры объявлены как структу- рЫ. ДЛя ОбЪЕдИНЕНИй дОПуетИМЫМ ТИПОМ Мар!Е яВЛяЕтСя ТОЛЬКО тИП тао1е. Так как Мар(е не поддерживает перечисляемый тип, то следует использовать тип 1птечет(п(, в котором количество байт и должно соответствовать размеру целого типа, используемому для реализации перечисляемого типа компилятора, с помощью которого была откомпилирована внешняя процедура, По умолчанию все параметры во внешнюю процедуру передаются по значению.
Если через какой-либо параметр возвращается некоторое вычисленное в процедуре значение, то он должен быть объявлен как передаваемый по ссылке с помощью модификатора вкгс идентификатор:ыаКГ(дескриптор, опции) Допустимыми опциями могут быть лыхтнтнс, слъь окьх или акт((ви ои(ас Первая опция эквивалентна параметру С-процедуры, определенному как о с( *.
Вторая опция хотя и определяет передачу параметра по ссылке, однако запрещает возврат через него вычисленных во внешней процедуре величин„предохраняя тем самым фактический параметр от изменения. Последняя опция вктови оыьх предопределяет, что в действительности через этот параметр никаких ланных в процедуру не передается, он служит только для возврата значений из внешней процедуры. Опция шв команды о(ег пе ехцехпа1(( ЗаДаЕт в виде строки Мар)е полный путь и имя библиотеки, в которой размещена внешняя вызываемая процедура. Кроме нее можно использовать опцию сснртькв, определяющую компилятор, с помощью которого будет компилироваться интерфейсная С-функция, а также опции, изменяющие установленные по умолчанию ключи компилятора при вызове его из командной строки.
Опция орттонз служит для зала- Глава о. Основы программирования в Мвр]в ния любых ключей компилятора за исключением -1 и -те, для которых предназначены, соответственно, опции 1нс к)АС и ов,т ЕЕАС. В качестве примера обращения к внешней процедуре откомпилируем и занесем в библиотеку та( ьш](.![Ь следующую процедуру перемножения двух квадратных матриц, написанную на языке С н возвращающую результирующую матрицу произведения через свой параметр: чо18 паГ спп1Г(с]оаЬ1е *А, с(апЬ1е *В, с(оиЬ1е *С, ьпГ 1, гпг Э, гп1 К) ( 1пГ с)апЫе г) 1ог (1=0; 1<1; 4+1) тог ()с=о) К<К) ~-Нс) ( г = 0.0) гог(8=0;]<а)4'с.З) (Г е= А[1*048)*В(З*Кск])) с[ *кс-)с) = г;) ВЫЗОВ КОМаидЫ Оетопе ехГегпа1() СОЗдаНИя ИНтЕрфЕИСНЫХ фуНКцИй ВЫГЛя- дит следующим образом; > пс>Г пп1Г:=Ое81пе ехсегпа1('асаГ псп1Г', ас сААЕАт(1..
1, ' ..], 11оаГ (8] ), Ь::Аврлт(1., З, 1 .. х, 11оаГ (8) ), с::КЕР(АРААУ(1.. ', 1..], г1оаГ [8) ), КЕТСАИ СНЬс), с::1пседег(4], З::[пседег[4], )с::1пседег[4), 118="0С'ССсПСар1ЕбСааГЬаСаЕаЫ'ССпаГ ХСи1Г.11Ь")) Маг сап1г:= ргоа(р1с с (ггаые, пасхе, 1оепг1аа1(0) ), рг:: (гсаЫе, пасхе, Ьаеппьаа1(0) ), рЗ:: (пасхе, гаепГ1аа1(0) ), р4::ьпГедег, р5:с1пгедег, рб::1ппедег) орГ1оп са11 ехГегпа1) аа11 ехгегпаь(10ЗЗ812220, 107З788584, Еа1ае, агда) епс) ргоа ТЕПЕРЬ МОЖНО СОЗдатЬ дВЕ МатрИцЫ С ПОМОЩЬЮ КОНСтруКтара Маггах(), в котором необходимо указать тип данных 11оаг [8) и опцию хранения матриц по строкам, как принято в С, а не по столбцам, как принято в Мар]е. Обращение к созданной процедуре хег пп1г() осуществит перемножение матриц с помощью внешней процедуры еаг сап1г (), написанной на языке С: > А:= Масг1х(100,100, (1,З)->1/3, с)аеаГУРе481оаГ[8], огс)ег=С огсег) > В:= Маегьх(100,100, (1,])->1*], с(асасуре 81оае[8], огс(ег=С огеег) > паГ асп1Г(А,В,С,100,100,100)с Часть Р, Основы МарРе 344 Результат перемножения двух матриц А и в будет помещен в автоматически созданную процедурой гзас зю1с11 матрицу о.
Замечание Приведенные здесь результаты создания интерфейсных функций командой детьпе ехСеспа11) ВЗЯТЫ ИЗ Справки Мар1е, Автору, к сожалению, не удалось самостоятельно выполнить вызов внешней процедуры из-за непонятных проблем, связанных с компилятором м1сгозоп ч1зоа! с++ 6.0. команда аебспе ехсетпзс11 вызывала компилятор С, транслировала сгенерированную Мар1е интерфейсную С-функцию, создавала библиотеку ОСС и помещала в нее оттранслированную функцию и внешнюю процедуру Мар1е перемножения матриц, но на этапе подключения ее к ядру Мар1е возникала непонятная ошибка, которую автору не удалось исправить.
Часть!, Основы Мар!е 346 ражения, а не формируя таблицу значений, необходимую для построения графика функции с помощью диаграмм Ехсе1, переносить данные рабочего листа Ехсе! в приложение Мар1е либо в виде объекта-матрицы, либо помешать их непосредственно в электронную таблицу Мар!е и наоборот. Подобное взаимодействие двух популярных приложений сушественно расширяет функциональность одного (Ехсе!) и расширяет область использования другого (Мар)е). 6.1. Установка и получение справки Установить надстройку Мар)е 6 для Ехсе! 2000 достаточно просто. Прежде всего необходимо, чтобы на компьютере пользователя была установлена программа Ехсе! 2000 из семейства приложений 0(тгсе 2000. Если это так, то обычная процедура установки Мар(е 6 сделает все необходимые действия, чтобы надстройка Мар!е 6 была доступна из Ехсе! 2000.
После установки программы Мар!е 6 в диалоговом окне Надстройки приложения Ехсе! (команда Сервис ) Надстройки) в списке доступных надстроек появится запись Мвр!е 6 Ехсе! А1Ы-!и. Для ее подключения следует установить расположенный слева от нее флажок и нажать кнопку ОК. В результате выполнения указанных действий будет загружена надстройка Мар1е 6, н отобразится панель инструментов лля работы с Мар!е, внешний вид которой показан на рис. 6.1. Рис. 6.т. Панель инструментов Мар1е 6 Замечание Если по каким-то причинам в списке доступных надстроек не окажется надстройки Мар!е, то следует нажать кнопку Обзор диалогового окна Надстройки и выбрать файл впшпр1ех.Х1 А, расположенный в подкаталоге Ехсе! основного каталога, в котором установлена программа Мар!е 6.
Замечание Отобразить или скрыть панель инструментов Мар!е 6 можно командой Ехсе! Сервис ь Настройка. На вкладке Панели инструментов отображаемого ею диалогового окна Настройка следует установить или сбросить флажок рядом с панелью инструментов Мар!е 6 в списке всех доступных панелей инструментов.
Надстройка Мар1е 6 работает только в МВ Ехсе1 2000. В предыдущей версии Ехсе! 97 она будет доступна в диалоговом окне Надстройки, но попытка ее активизировать окажется неуспешной. 347 Глава с. Мар1е е Ехсе! Кнопка фф панели инструментов предназначена для работы со справкой Мар!е. Ассоциированная с ней команда отображает диалоговое окно Мар!е 6 Не!р (рис. 6.2), в котором можно получить справку по любой доступной команде Мар)е, а также общую справку по работе с надстройкой Мар!е 6 нажатием кнопки 1)япй Мар1е 1в Ехсе1. Рис. 6.2. диалоговое окно справки Мвр!е в Ехсе! Общая справка отображается в стандартном диалоговом окне справки операционной системы %~пг!овз и имеет четыре раздела, содержащих общую информацию об использовании Мар!е в Ехсе! (Сепега) 1пгоппабоп), описание вызова функций Мар!е из рабочих листов Ехсе1 и задание их параметров ссылками на содержимое ячеек рабочего листа Ехсе1 (Юяпа Мар!е 6), необходимую информацию по настройке параметров ядра мар1е (спзгещипй Мар1е 6) и соответствие типов данных Мар!е и Ехсе! (Ке1егепсез).
Для получения справки по конкретной команде Мар!е в диалоговом окне Мар1е 6 Не!р в поле Не!р Тор!с следует набрать имя команды и нажать клавишу <Епгег>. В расположенных ниже поля ввода двух областях ВевсПрйоп и 1)ваде отобразится описание команды и синтаксис ее вызова. Например, на рис. 6.2 можно видеть информацию по команде отображения решения ОбЫКНОВЕННОГО дИффЕрЕНцИаЛЬНОГО ураВНЕНИя ОврЗсг1) ИЗ ПаКЕта ркгоств.
Часть ! Основы Мар1е 348 Имя команды следует задавать точно в соответствии с ее названием а Мар1е, используя там, где необходимо, прописные буквы. В противном случае можно не получить справку по интересующей команде. Замечание Прн задании имени команды можно перед ней через запятую указывать имя пакета Мар1е, в котором она расположена. Если пользователь забыл имя команды, или не знает, какие команды в Мар!е предназначены для выполнения необходимых действий, можно воспользоваться окном отображения доступных команд Мар!е 6 Не!р Вготгаег, нажав кнопку Вгсггзе. Это окно (рис. 6.3) полностью соответствует окну поиска информации в справке самого приложения Мар!е; при выборе темы в последнем заполненном списке в следуюшем по порядку списке отображаются подчиненные темы, если они сушествуют, или становится лоступной кнопка Р!ар!ау Тор!с, нажатие на которую приводит к отображению справки по выбранной команде.