Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 58
Текст из файла (страница 58)
Элементарные логические операции дополнены набором функций МАТЮКАВ, позволяющих проверить для матриц некоторые условия, см. табл. 12.7. Проверка для матриц проводится по столбцам. Результатом проверки для вектора является число. 312 Глава 12. Элементы лаына МАТ(АВ Проиллюстрируем некоторые из этих команд на следующих примерах. Проверим массив с на наличие ненулевых элементов: » апу(с') апа = 0 1 Ряд функций дает возможность выявить пустую переменную Г(зев)рту), идентичность матриц (т весов)), ответить, числовой ли это массив ((зпяпег) с): » ( 1 дпимег(с(с ) твемрту( Г 1) мемрту(с ) (весна) (а .с ) 1 апа = 1 1 0 0 Наконец, есть команда Г) ПО, которая выводит индексы и значения согласно заданному условию. Например, для массива с, полученного ранее, команда поиска элементов, тождественно равных единице, выведет: » 0=(1пщ с==1) 0 2 4 Заметим, что результат содержит ссылки на два единичных элемента массива с, при этом используется одномерная индексация.
Напомним, что матричные данные размещаются в памяти последовательно по столбцам. Действительно, » с(Ш2))-с(4) дпа = 0 Приведем еще пример выделения нужных данных из массива. Рассмотрим задачу нахождения простых чисел на интервале 1100,130). В МАТ|АВ имеется команда т )зрг(ве, проверяющая число на простоту: » А=100:130, Р-А(11пп(ддргше(А))) Р 101 103 107 109 113 127 Отметим, что команда Г( пп возвращает индексы элементов массива, удовлетворяющих некоторому условию, поэтому для вывода простых чисел из заданного диапазона нужно результат поиска подставить в качестве индекса. Текстовые строки Символы и текстовые строки в МАТ1АВ вводятся при помощи простых кавычек. Во внутреннем представлении символы даны целыми числами.
Конвертировать массив символов в числовую матрицу позволяет команда бонЫ е. Обратная операция совершается по команде с))аг. Печатаемые символы из стандартного набора АБСП представлены числами от 32 до 255. Объединить текстовые строки можно, просто заключив их в квадратные скобки или при помощи команды зтгсас. Приведем примеры для данных команд. Вначале введем строку: » 5 Привет 5 Привет Синтаксис и данные 313 Отметим, что для ввода русских букв следует выбрать в меню Ейе/ Рте(етепсез/ Соююапс) Фпс)ои)в аоот шрифт с русской кодировкой. Теперь найдем коды введен- ных символов: » ч-Оооо)е(в) ч= 207 240 232 22б 229 242 Таблица 12.В. Команды преобразования строка/число Имя иоманды Действие Перевод числа в строку Перевод целого числа в строку Преобразование матрицы в строку Объединение строк в матрицу Преобразование строки в число Объединение строк пом2ввг тп(2ввг мпв2втг втг2мпт втг2пци всгсас Приведем простой пример: » 2-1.2ез.
ввгсвт("з-",пим2вгг(г)) апв з 1200 Многомерные массивы Массивы с числом размерностей более двух считаются многомерными. Такие массивы могут быть считаны из файла или созданы при помощи команд, таких как Объединим две строки: » п=(ч " от млтслв") Привет от МАТЫВ Тот же результат получится, если вместо переменной ч использовать строковую переменную в. В завершение попробуем применить команду в Ьгсэт: >> всгсдг(в.ч) Нвгю п9: 1прц( пвв( Ье в ттг(п9. »1п С:)МАТ(АВЙ11(гоо1Ьох(мв11вЬ)вггтоп)беЬ)впх н вв 1>пе 15 1и С:)МАТСАВЙ11)воо1Ьох)мат)вЬ)ввгтип)втгсав.м вв 11пе 57 апвПриветПривет Действительно, переменная ч не является строкой, однако, выведя предупреждение, МАТЬАВ попытался выполнить запрашиваемое соединение переменных. В результате получилась текстовая строка.
Для перевода численных данных в строковые переменные имеется ряд команд преобразования. В табл. 12.8 приведены некоторые команды для этих и обратных операций, а полный список можно получить по команде Ье1р втг(цп з14 Глапа12. Элементы языка ИАТСАВ тегоз, опез, гап((. Число параметров при обращении к этим командам должно соответствовать размерности вводимого массива. Например, трехмерный массив 2х4х2 из нулей будет организован по команде » 5-пегое(2,4.2); Обращение к элементам многомерного массива производится по обычным правилам работы с массивами, так что действуют двоеточия для указания диапазона, а еп(( означает максимальное значение данной размерности. Чтобы изменить какой-нибудь элемент, достаточно присвоить ему значение точно так же, как для обычных массивов, а если элемента не было, то произойдет увеличение размерности массива: » 5(3.1.2)-13; зппе(5(:,:,1)) апз- 3 4 Заметим, что пополнение массива означает дополнительные затраты времени на переписывание данных.
Поэтому для повышения скорости расчета рекомендуется описывать максимальную размерность массива сразу (резервировать память), если это возможно. Когда многомерный массив организуется для хранения нескольких матриц одинакового размера, то первые два индекса удобнее отвести под строки и столбцы матриц, а последний индекс — для номера матрицы. Тогда в результате получим: » 52-5(:.;.епО) 52 О О 13 Напомним, что резервирование памяти ускоряет работу в среде МАТ1.АВ, посколь- ку не расходуется время на пополнение массивов.
Массивы ячеек Для хранения разнородных объектов (массивов разных размерностей, разнотипных данных) удобно пользоваться массивами ячеек, которые создаются двумя способами: по команде се11 или заключением объектов в фигурные скобки. Например: » С = (зка(5) пяп(мах(5)) зпм(зап(зып(5)))) С = (1х4х2 ОоиЫе) 11х1х2 ОонЫе) 113) Для указания элементов массива ячеек используются фигурные скобки, так что в результате обращения к третьему элементу массива С получим число 13: » ЦЗ) длз 13 а содержимое первого элемента массива ячеек С есть: » С1 С(1] С1(:.:,1) О О О О Синтаксис и данные 315 Сн:,:.2)- 13 О О О Для превращения структуры С1 в обычный массив можно воспользоваться командами 5ООЕЕге или 5))) тоотв, которые удаляют равные единице размерности (матрица в один столбец или одну строку превращается в вектор): » С2-аи1 тт01и(С1) ' С2 0 0 0 0 13 0 0 0 Нужно помнить, что составные части массива ячеек представлены копиями, так что при изменении исходного массива 5 в объекте С никаких изменений не последует.
Иными словами, это не указатель на массив, а сам массив. Для преобразования массива символов в массив ячеек применяется команда се) 151 г, а обратная процедура реализуется командой с))а г. Если потребуется создать текст из нескольких строк, то обычный прием отделения строк точкой с запятой может не сработать, поскольку все строки должны быть одной длины. В таких случаях можно подготовить массив ячеек: » С-("Опе";"тигее";"5ечеп") С" "Опе" "ть ее" "5ечеп" и затем преобразовать его в массив символов при помощи команды с)таг; » 5-сиаг(С) 5- Опе тпгее 5ечеп Для получения строк одной длины МАТЮКАВ добавляет нужное число пробелов, что легко увидеть, затребовав данные о размерностях массива 5: » а)ге(5) апа- 3 5 Структуры Структурами МАТ1.АВ (тип зтщс1) являются многомерные массивы.
Доступ к ним осуществляется путем указания индексов-имен. Например, можно создать скалярную структуру из двух полей: » 5.пане 'трап': 5,огеег 2 5 папе: "трап" огоег: 2 31б Глаеа 12. Элементы языка ИАТЕАВ Расширение структуры производится по тому же правилу, что и добавление строк или столбцов в массив: » 5(2).паве-'Сиип'; 5(2).огпег-а; Для пополнения структуры можно также использовать специальную команду зс гост. Организуем третий элемент структуры 5, присвоив полю паше значение пря н, а полю ог((ег — значение 2. » 5(3)=аогосг("паве",'пряи','огсег',2) 5 1хЗ зггосг аггау нт'СЬ тте)пз: паве огеег » (5.паве) апз"трап" » (5.огаег) апз- 2 "Сиип" "прин" Преобразование данных в массив символов осуществляется по команде сваг: » сьаг(5.паве) апзтрап Сиип Пряи 3лементы программирования Система МАТЕ.АВ включает стандартный набор конструкций языка программиро- вания высокого уровня.
В этом разделе описана работы с условными операторами, оператором выбора, циклами, а также программирование собственных функций. Условные операторы и цинлы Простейший условный оператор имеет вид: тг ВОВС ЕХРа, епо' Команды ЕХРВ будут выполнены, если истинно условие ВООК Оператор кили» дает альтернативу: гт ВООС. ЕХРВ, е)зе ЕХРХ 2, епе Напомним, что запятая (или точка с запятой) после условия ВООЕ необязательна, если команды ЕХРк расположить на следующей строке.
При добавлении еше одно- го служебного слова — е1 зеХà — условный оператор становится мощнее: Чтобы вывести содержимое отдельных полей структуры, нужно использовать фи- гурные либо квадратные скобки в зависимости от того, символьные или числовые данные связаны с данным полем: Элементы программирования 3 47 тт ВООС 1. ехРй 1 е1яетг ВООЕ 2, ЕХРй 2 е1ае!Г ВООЕ 3, ЕХРМ 3 е1яе ЕХРй 0 епб Здесь проверки следуют одна за другой. В том случае, если условие ВООЕ М истинно, будет выполнен оператор ЕХРй М. Например, при х=4 в результате выполнения условного оператора: » >Г х«0, О. е1аетг х«3.