Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 78
Текст из файла (страница 78)
Команда ! 002 выводит представление числа в форме мантисса (число от 0,5 до 1) и порядок, а рон2 есть обратная ей команда: э (ш,р! 1002(4) 5.0000е-ОО! Р 3 » рои2(ш.р) дпз " 4 Программирование в МАТЮКАВ Начальные сведения о программировании на языке МАТ1АВ изложены в главе 12 «Элементы языка МАТ1.АВэ, где описаны синтаксис и типы данных, основные операторы и программирование функций. Эта глава посвящена вопросам программирования в системе МАТ1.АВ. Здесь описаны команды ввода-вывода, объектно-ориентированное программирование, отладка функций и профилирование разработанных программ, рассмотрены возможности компилятора МАТ1.АВ и разработка мех-файлов, обсуждено программирование интерфейса.
Последние версии пакета существенно расширили возможности МАТ1.АВ как интегрированной среды программирования. При помощи собственно~о компилятора МАТ1.АВ или стандартных компиляторов, установленных на компьютере, можно использовать существующее программное обеспечение на языках С и Фортране без его переписывания, а также ускорять вычисления за счет большей скорости выполнения циклов и других операций у откомпилированных модулей. В МАТ1.АВ поддерживается интерфейс АР1(Аррйсайоп Ргойгаш 1пгег1асе), что позволяет вызывать из МАТ1.АВ программы, написанные на С и Фортране, обмениваться данными с другими приложениями, устанавливать связи клиентсервер между МАТ1 АВ и другими программами, Вызов МАТ1.АВ из Мар1е описан в главе 9 «Мар!е и другие программыь.
Подробное описание всех возможностей, предоставляемых МАТ1АВ для программирования, невозможно в рамках данной книги, позтому в втой главе мы ограничимся их коротким изложением и демонстрационными примерами. Детальное описание программирования в среде МАТ1АВ дано в документации 1271, а на русском языке много полезной информации содержится в книге 1171. Команды ввода-вывода В МАТ1АВ поддерживается работа с внешними данными, подготовленными в различных форматах. Такая работа осуществляется при помощи набора эффектив- 418 Глава Тб. Программирование в МАТ[Аз ных команд. Для записи и считывания информации разработан специальный формат гпа[-файла, избавляющий пользователя от необходимости вникать в детали хранения данных. Более того, при помощи функций из библиотеки С можно создавать приложения с доступом к гпа[-файлам. Также имеется набор команд для форматного ввода и вывода информации, для записи бинарных файлов и для работы с некоторыми типами стандартных файлов, Команды !оаэи и заче Мопгными и удобными в работе являются команда ааче для сохранения информации и команда 1оаб для ее считывания.
По умолчанию данные записываются в стандарте гпз[-файла. Схематически обращение к команде ааае выглядит следующим образом: вахе [ммЯ) [-пАРАметРьЦ [пеРеменные) В квадратных скобках даны необязательные параметры, при отсутствии которых запись производится согласно системным назначениям. Когда имя файла ММЯ нс указано, то данные будут сохранены в двоичном файле гоайа Ьзпай Если расширениее файла пропущено, то данные запишутся в файл ИИЯзпа1 Список величин, подлежагцих записи, задается параметром ПЕРЕМЕННЫЕ, при отсутствии которого сохраняются все данные из рабочей области. Дополнительные ПАРАМЕТРЫ могут принимать следующие значения: о аас11 — сохранение в виде АБСП-файла с мантиссой из восьми цифр; га азс1а-борЫ е — сохранение в виде АБСП-файла с шестнадцатизначной мантиссой; О аррепб — дозапись в существующий файл, При сохранении информации в двоичном коде для записи вещественных чисел используется 8 байт, а для целочисленных переменных могут применяться следующие форматы:1пго (однобайтное целое число от — 128 до 127), 1п[1б (двухбайтное целое число) и 1п[32 (четырехбайтное целое число).
Приведем примеры. Запись переменных б и е в файл аЬс.гпа[ производится одной командой » вахе аЬс б е Запись переменных б и е в текстовый файл аЬс.[хт » вахе аЬс яхт -аас11 б е Назначения параметров для команды 1оаб аналогичны описанным ранее: 1оаб [ИМЯ) [-ПАРАМЕТРЫ1 [ПЕРЕМЕННЫЕ) Из файла ИИЯ считываются только переменные, перечисленные в списке ПЕРЕМЕННЫЕ, а отсутствие списка вызовет считывание всех величин, сохраненных в файле ИМЯ.
Данные из АБСП-файла с именем МАМЕ.ех[ можно считать по команде » 1оаб МАМЕ.еха Команды ввода-вывода 419 Сами данные должны быть организованы в виде массива с одинаковым числом злементов во всех строках, иначе при считывании данных будет выведено сообщение об ошибке. По прочтении данные будут помещены в массив с именем МАМЕ Обращаться к командам 1оаб и еаче можно так же, как к функциям. Например, для сохранения в файле МАМ Енаа1 переменных б и е следует ввести » вате("МАМЕ лат". 'б', 'е') а для считывания соответственно » 1оаб( ПАМЕла~".'б'.'е') Использование вызова функции удобнее, если аргумент-строка формируется из нескольких частей.
Например, можно предложить следующий фрагмент для считывания и последующей обработки данных дневных наблюдений за июнь, записанных в файлах дцпе1 бат, 3цпе2.ба1 и т, дс » Еог б-) 30. бб-[ "боне" тпт25тг(б) ".ба1";. 1оабщб) т Обработка данннк епб То же самое, но с потерей эффективности (работает интерпретатор, а выше использовался вызов функции), можно реализовать при помощи следующего фрагмента; » Гог и-) 30. а-1")оаб бисе" тпо2атг(п) ".бас"З) е«а1(а). т Обработка ваннах епб Записать и считать переменные с общей частью в имени можно при помощи знака ««», например, чтобы сохранить все переменные, начинающиеся с сочетания аЬс, достаточно команды » ваке аос* Форматные операции ввода-вывода Для операций ввода-вывода с использованием форматов данных и работы с бинарными файлами применяются команды, напоминающие стандартные функции языка С, см.
табл. 16.1. Перед началом записи или чтения нужный файл следует открыть при помощи ко- манды Е1-тореп('МАМЕ'. 'Его') Имя файла МАМЕ должно содержать путь, если файл берется из каталога, не указанного в списке каталогов Ра11) Вгочтзег Строковая переменная ' ЕЕАО' определяет тип файла и способ работы с ним: '1' — текстовый файл, 'Ь' — бинарный файл, 'г' — чтение, 'ы' — запись, ' г ' — чтение и запись одновременно, ' а ' — добавление в конец файла. Например, для чтения бинарного файла следует задать флаг ' гЬ ', для записи текстового — ')(Ь '. Полученный в результате выполнения операции 1ореп числовой идентификатор Е1 используется в качестве параметра для функций 1геаб и Еыг) Се. Если открыть файл не удалось, то Е 1=-1. Чтобы закрыть файл, надо выполнить команду Гс)осе(Е)) 4к0 Глава 1б.
Программирование в ИАТЕАВ Таблица 1б.1. Список команд ввода-вывода Имл Назначение Открытие файла Закрытие файла Считывание данных из файла Запись данных в файл Считывание форматированных данных из файла Запись данных в файл или вывод на экран Считывание строки из файла без служебных символов Считывание строки из файла со служебными символами Чтение данных с разделителями из текстового файла Чтение форматированных данных из текстового файла Горел тс)05е Тгез6 Тиг(те тзсапт трг1 птт тйе() тйетз 6)игеа6 техтгеа6 Здесь Р1 — идентификатор файла, РАЯА — имя записываемой переменной, а назначение остальных параметров то же, что и для команды Ггеа6.
Приведем пример. Откроем файл ааа,1 па запись бинарных данных н сохраним магическую матрицу размера 2х2: » (16 Горел("вва.1".'»Ь'), тыг11е(116.мзй(с(2), '(птейег»4') 116 3 дп5 4 Допишем вещественное число и закроем файл: » Тыг1(е(116.р1,'Г)овтб4'): тс)озе(т16) алз О Теперь считаем записанные данные: Команда Ггеа6 применяется для чтения бинарных файлов: [А. С00НТ)-(геа6( Е). 511Е. ' РЯЕС ' . ' 5К1 Р ' ) Здесь А — имя матрицы, куда заносятся считываемые данные, а СОПИТ вЂ” число прочитанных элементов. Если дополнительный параметр 5!ЕЕ отсутствует, то считывается весь файл, целое число И в качестве 512Е задает считывание И элементов и формирование вектора-строки, а при указании в качестве 517Е вектора [И, И] формируется матрица размера [И,И), причем параметр И может принимать значение тпт.