Б) Файл - функции (процедуры)
Особенности создания М-файлов Создание программы в среде MatLAB осуществляется с помощью либо собственного встроенного (начиная из версии MatLAB 5), либо стороннего текстового редактора, который автоматически вызовется, если его предварительно установить с помощью команды Preferences меню File командного окна MatLAB. Например, это может быть редактор Notepade среды Windows. Окно предварительно установленного редактора появляется на экране, если перед этим вызвана команда M-file из меню Newили выбрано название одного из существующих М-файлов при вызове команды Open M-file из меню File командного окна. В первом случае окно текстового редактора будет пустым, во втором - в нем будет содержаться текст вызванного М-файла. В обоих случаях окно текстового редактора готово для ввода нового текста или корректировки существующего.
Программы на языке MatLAB имеют две разновидности - так называемые Script-файлы (файлы-сценарии, или управляющие программы) и файлы-функции (процедуры). Обе разновидности должны иметь расширение имени файла .m, т. е. их нельзя различить по типу файла. С помощью Script-файлов оформляют основные программы, управляющие от начала до конца организацией всего вычисли- тельного процесса, и отдельные части основных программ (они могут быть записаны в виде отдельных Script-файлов). Как файл-функции оформляются отдельные процедуры и функции (т. е. такие части программы, которые рассчитаны на неоднократное использование Script-файлами или другими процедурами при измененных значениях исходных параметров и не могут быть выполнены без предварительного задания значений переменных, которые называют входными).
Главным внешним отличием текстов этих двух видов файлов является то, что файл-функции имеют первую строку вида
function <ПКВ> = <имя процедуры >(<ПВВ>),
где обозначен ПКВ - Перечень Конечных Величин, ПВВ - Перечень Входных Величин. Script-файлы такой строки не имеют.
Принципиальное же отличие состоит в совсем различном восприятии системой имен переменных в этих двух видах файлов.
В файл-функциях все имена переменных внутри файла, а также имена переменных, указанные в заголовке (ПКВ и ПВВ), воспринимаются как локальные, т.е. все значения этих переменных после завершения работы процедуры исчезают, и область оперативной памяти ПК, которая была отведена под запись значений этих переменных, освобождается для записи в нее значений других переменных.
В Script-файлах все используемые переменные образуют так называемое рабочее пространство (Work Space). Значение и содержание их сохраняются не только на протяжении времени работы программы, но и на протяжении всего сеанса работы с системой, а, значит, и при переходе от выполнения одного Script- файла к другому. Иначе говоря, рабочее пространство является единым для всех Script-файлов, вызываемых в текущем сеансе работы с системой. Благодаря этому любой длинный Script-файл можно разбить на несколько фрагментов, оформить каждый из них в виде отдельного Script-файла, а в главном Script-файле вместо соответствующего фрагмента записать оператор вызова Script-файла, представляющего этот фрагмент. Этим обеспечивается компактное и наглядное представление даже довольно сложной программы.
За исключением указанных отличий, файл-функции и Script-файлы оформляются одинаково.
а) Создание Script-файлов:
основные особенности Script-файлов таковы:
· Script-файлы являются независимо (самостоятельно) исполняемыми блоками операторов и команд;
· Все используемые переменные образуют так называемое рабочее пространство, которое является общим для всех исполняемых Script-файлов;
· Из этого следует, что при выполнении нескольких Script-файлов имена переменных в них должны быть согласованы, так как одно имя означает в каждом из них один и тот же объект вычислений;
· В них отсутствует заголовок, т. е. первая строка определенного вида и назначения;
· Обращение к ним не требует указания никаких имен переменных: все переменные формируются в результате выполнения программы либо сформированы ранее и существуют в рабочем пространстве.
Необходимо отметить, что рабочее пространство Script-файлов недоступно для файлов-функций, которые используются в нем. В файлах-функциях невозможно использовать значения, которые приобретают переменные в Script-файле, обходя заголовок файл-функции (так как все переменные файл-функции являются локальными). Единственной возможностью сделать так, чтобы внутри файл- функции некоторая переменная рабочего пространства могла сохранить свое значение и имя, является специальное объявление этой переменной в Script-файле как глобальной с помощью служебного слова global. Кроме того, аналогичная запись должна содержаться и в тексте М-файла той файл-функции, которая будет использовать значение соответствующей переменной Script-файла.
Чтобы использовать новую файл-функцию dvob1 в Script-файле, в последнем до обращения к этой функции должна быть записана строка
global K
и определен вектор-строка К из пяти элементов (заданы их значения). Если в одной строке объявляются несколько переменных как глобальные, они должны отделяться пробелами (не запятыми!).