Встроенные функции eval и menu
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Функция eval

В ML имеется возможность сформировать требуемую команду в виде строки символов, а затем выполнить ее, как обычную команду, набранную в командном окне. Для этого предназначена встроенная функция eval.

Метод задания команд в виде текстовых строк и их выполнения с помощью этой функции, используется при написании m-файлов, т. к. такой метод позволяет реализовывать более эффективные алгоритмы решения задач.

Функция еval (<текст>) предназначена для выполнения команды, заданной текстом, как команды ML.

Например, eval (‘2*2+3’) выводит на экран 7. Аргументом функции может быть также строковая переменная.

Команда eval (‘<имя скрипт-файла>’) вызовет выполнение операторов, находящихся в файле с соответствующим именем.

Функция menu

Эта функция предназначена для вывода на экран окна с выпадающим меню, которое имеет заголовок и кнопки с названиями пунктов меню. Количество кнопок, равное количеству пунктов меню, определяется количеством параметров функции menu.

k = menu(‘<заголовок меню>’,’<назв. пункта 1>’,…,’<назв. пункта n >’)

Номер выбранной кнопки является результатом функции menu.

Пример.

Пусть необходимо построить график функции на заданном интервале от 0 до 2 pi , цветом, выбранным из меню.

Напишем script-файл:

k=menu ('цвет','красный', 'зеленый','синий')

color=['r'

  'g'

  'b'];

t=0:0.1:2*pi;

s=sin(t);

plot(t,s,color(k))

При выполнении этого скрипт-файла функция menu выводит на экран окно вида:

При нажатии на одну из кнопок с названием цвета, номер этой кнопки становится результатом функции menu и попадает в переменную k. Вектор-столбец color содержит атрибуты цвета для построения графика. По номеру k нужный атрибут выбирается из массива color и указывается в команде plot. В результате, выбрав нужный пункт меню, получим график функции, построенный выбранным цветом.

Для организации многократного выбора и выполнения нужных действий с помощью меню можно использовать цикл while и функцию eval . Для этого команды, реализующие необходимые действия, оформляются в виде скрипт-файлов: для каждого пункта меню – свой скрипт-файл , затем необходимо задать символьную матрицу, например, D, состоящую из названий файлов, соответствующих пунктам меню (заданий). Строки символьной матрицы должны иметь одинаковую длину. Команда return обеспечивает возврат из функции или скрипт-файла в точку вызова. В данном примере можно также использовать команду break, которая предназначена для досрочного прерывания цикла. Предположим, что необходимо выполнить по выбору 3 задания в любом порядке.

D=[‘f1    ’

  ‘f2     ’

  'f3       '

  ‘return‘];

n=1;

while n<4

n=menu(‘меню’, ’пункт1’, ’пункт2’, ’пункт3’, ’выход’)

eval(D(n,:))

end

Каждая строка символьной матрицы D содержит имя одного из файлов, реализующих соответствующий пункт меню. В n – ой строке матрицы находится название файла, выполняющего n –й пункт меню. Обращение D ( n ,:) позволяет извлечь из матрицы D n -ую строку, содержащую название файла. В результате выполнения команды menu в n записывается номер выбранного пункта меню. Для выполнения файл-программы достаточно в командной строке указать имя этого скрипта. Функция eval с параметром D ( n ,:) запускает соответствующий скрипт-файл для выполнения.

Создание и использование m-файлов

Эффективным способом выполнения команд в ML является применение m-файлов. Текстовый файл, содержащий набор инструкций на языке системы ML, называется m-файлом. Инструкции выполняются последовательно от начала до конца файла. Существует возможность досрочного выхода из m-файла, для этого используется оператор return. При необходимости прервать работу с ML используется оператор exit .

 Различают два вида m-файлов:

· Файл-программы (Script m - файл)

· Файл-функции (Functionm - файл)

Script -файлы

Файл-программы (их называют скриптами или сценариями) являются самым простым типом m-файлов. Script - файл состоит из последовательности команд, не содержит заголовка, а также входных и выходных параметров. Все объекты, используемые внутри script -файла, считаются глобальными. Если в рабочем пространстве есть данные, то внутри script-файла их можно использовать, а после окончания выполнения script - файла можно использовать данные, созданные с его помощью. Такие файлы используются для автоматизации выполнения большого набора инструкций.

В одной строке программы можно размещать несколько операторов, тогда они разделяются либо запятой, либо точкой с запятой. Если оператор длинный и не умещается на одной строке, то в конце строки ставятся три точки и дальше на другой строке продолжается набор этого оператора.

Для выполнения файл-программы достаточно в командной строке указать имя этого скрипта. Перед запуском программы на выполнение необходимо установить свой каталог в качестве текущего. Запуск файла на выполнение можно осуществить двумя способами:

1. из окна редактора;

2. из командного окна.

Для запуска программы на выполнение из окна редактора надо выбрать пункт меню Debug , Run , или нажать функциональную клавишу F 5, или выбрать соответствующую пиктограмму на панели инструментов. Выполнить программу, уже сохраненную на диске, можно из командного окна ML, просто набрав имя файла без расширения.

Создадим script -файл, в который поместим текст программы, позволяющей вычислить длину окружности по величине ее радиуса.

В текстовом редакторе наберем следующий текст:

% Вычисление длины окружности

r=input (‘Введите радиус окружности ’)

l=2*pi*r;

disp(‘Длина окружности равна’)

disp(l)

Сохраним его на диске с именем dl _ okr в своей папке. Затем вызовем его для выполнения, указав в окне Command Window в командной строке имя файла dl _ okr .

>> dl_okr

Получим на экране:

Введите радиус окружности 12

r =

12

Длина окружности равна

75.3982

Файлы-функции

Система ML позволяет описать свои пользовательские функции и обращаться к ним, как к встроеннным. В отличие от script-файла файл - функция имеет входные параметры и может передавать результат в виде выходных параметров. Файлы-функции часто применяют при решении задач вычислительной математики.

Можно создавать файл-функцию с любым количеством входных и выходных параметров. Файл-функция всегда состоит из заголовка и тела функции.

Заголовок функции:

function [<список вых. параметров >]=<имя функции >(<список вх. параметров>)

Заголовок функции включает ключевое слово function , имя функции, входные и выходные параметры. После заголовка записываются операторы, реализующие алгоритм поставленной задачи. Они составляют тело функции.

Если функция содержит только один выходной параметр, то квадратные скобки не нужны, а если несколько, то они указываются через запятую в квадратных скобках, образуя вектор. Переменным из списка выходных параметров присваиваются значения, вычисленные в функции. Список входных параметров указывается через запятую в круглых скобках после имени функции. Имя m -файла, в котором сохраняется текст функции должно совпадать с именем функции. Имя функции не несёт результата.

При вызове файл-функции нужно указать ее имя и список фактических параметров. Это можно осуществить либо в командном режиме, либо из других файл-программ или файл-функций.

Вызов (активизация) файла-функции c одним выходным параметром может иметь вид:

<имя функции>(<список входных фактических параметров>)

и может использоваться в операторах присваивания или в выражении::

<имя переменой>=<имя функции>(<список входн. фактических пар-ов>)

Выходных параметров может быть столько, сколько необходимо, тогда список выходных параметров перечисляется через запятую в квадратных скобках:

function [< z 1, z 2,…, zn >]=<имя функции >(< список входных. параметров >)

<операторы, в результате которых выходные параметры получают значения>

Вызвать такую функцию можно так:

[ y 1, y 2,…, yn ]=<имя функции >(<список вх. факт. параметров>)

Все переменные, используемые внутри файла-функции, а также входные и выходные параметры являются локальными. Они доступны только внутри функции.

Напишем файл-функцию, позволяющую вычислить факториал любого числа.

Не будем использовать оператор цикла, а используем функцию prod (1: n ). В редакторе наберем следующий текст:

%нахождение факториала любого числа

function f=fact orial (x)

f=prod(1:x);

Сохраним файл на диске с именем factorial. Этот файл получит расширение .m. Обратимся к функции для вычисления факториала числа 5:

>> factorial(5)

ans =

120

или

>> f=factorial(5)

f =

120

Отличия файла-функции от Scipt -файла:

1. Файл-функция имеет входные и выходные параметры, а scipt -файл - нет;

2. Все переменные, используемые внутри файла-функции, локальны. Файл-программа работает с переменными рабочего пространства, т.е. в scipt -файле можно использовать глобальные данные;

3. Функция перед выполнением компилируется. Scipt -файл не компилируется целиком, а выполняется в режиме интерпретации.

4. Имя файла, в котором записана функция, должно совпадать с именем функции, а имя scipt -файла может быть любым. 

Программа будет выполняться быстрее, если вместо script -файла использовать файл-функцию (в случае, если это возможно).

Дата: 2019-02-02, просмотров: 322.