Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MLab.doc
Скачиваний:
5
Добавлен:
17.11.2018
Размер:
818.69 Кб
Скачать

Условный оператор.

Условный оператор позволяет организовать ветвления в программе и имеет следующую синтаксическую конструкцию:

if (<логическое выражение1>)

<операторы>

[elseif (<логическое выражение2>)

<операторы>

elseif (<логическое выражение3>)

<операторы>

]

else

<операторы>

end

В этой конструкции может быть произвольное количество вложений ветвей elseif.

Пусть необходимо по введенной с клавиатуры температуре воздуха определить погоду. Введем следующий текст:

>> t=input('введи температуру')

введи температуру -4

t =

-4

>> if (t<0)

s='мороз'

elseif and(t>0,t<=10)

s='холодно'

elseif and(t>10,t<=20)

s='тепло'

else

s='жарко'

end

В результате выполнения этого фрагмента программы получим на экране:

s =

мороз

Условие может быть записано и в такой форме:

(t>0)&(t<=10)

Оператор переключения (выбора).

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

Switch <ключевое выражение>

Case <список значений1

<опреаторы>

Case <список значений2>

<операторы>

[Otherwise

<операторы>]

End

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

Пример.

Пусть необходимо по введенному с клавиатуры номеру месяца определить время года. Ниже приведен текст script-файла с именем season.m.

n=input('введи ном. мес ')

switch n

case 1,2,12

disp('зима')

case 3,4,5

disp('весна')

case 6,7,8

disp('лето')

case 9,10,11

disp('осень')

otherwise

disp('ошибка')

end

Вызовем программу для выполнения и получим:

>> season

введи ном. мес 11

n =

11

осень

Функция eval

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

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

еval(‘текст’) – предназначена для выполнения команды, заданной текстом, как команды ML.

Например, eval(‘2*2+3’) выводит на экран 7.

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

Функция menu.

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

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

Номер выбранной кнопки попадает в переменную k.

Пример.

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

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

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

color=['r'

'g'

'b'];

t=0:0.1:2*pi;

s=sin(t);

plot(t,s,color(k))

На экране появляется меню вида:

Выбрав нужный пункт меню, получим график функции выбранным цветом.

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

D=[‘f1 ’

f2 ’

f3...’

break‘

while n<4

n=menu(‘заголовок’,’пункт1’,’пункт2’,’пункт3’,’выход’)

eval(D(n,:))

end

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]