Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаИПлб.doc
Скачиваний:
39
Добавлен:
08.05.2019
Размер:
6.96 Mб
Скачать

3. Управление последовательностью исполнения операторов

Как было отмечено выше, сценарий – это текстовый файл, в котором записаны команды, подлежащие выполнению. Последовательность выполнения команд сценария может быть изменена с помощью следующих операторов управления:

  • оператор условия if, в сочетании с оператором else и elseif выполняет группу операторов в соответствии с некоторыми логическими условиями;

  • оператор переключения switch, в сочетании с операторами case и otherwise выполняет различные группы операторов в зависимости от значения некоторого логического условия;

  • оператор цикла while выполняет группу операторов заранее неизвестное число раз, в соответствии с некоторым логическим условием завершения;

  • оператор цикла for выполняет группу операторов заранее известное число раз.

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

3.1. Оператор условия if

Оператор условия (развилки) позволяет выбрать одну альтернативу. Он может выступать в одной из трёх форм.

Во-первых,

if условие

операторы

end

Эта форма соответствует блок-схеме, представленной на рис. 3.2, а. Оператор условия if ... end вычисляет результат проверки некоторого выражения условие и выполняет или не выполняет соответствующую группу инструкций операторы в зависимости от значения этого результата. Если условие истинно, то Matlab выполнит все операторы, стоящие между if и end, а затем продолжит выполнение программы со строки после end. Если условие ложно, то Matlab пропустит все операторы между if и end и продолжит выполнение со строки после end.

На рис. 3.3 приведено окно редактора, в котором размещен текст программы, проверяющей, является ли значение переменной х, вводимое с клавиатуры, целым числом.

Рис. 3.3. Окно редактора с текстом скрипта

Скрипт сохранен в файле Simple.m на диске D в каталоге MATLAB701 в папке work. При запуске скритпа на выполнение на экран в рабочем окне Matlab будет выдано приглашение

Введите число

Если ввести 7, то результатом работы программы будет

7 - целое число

Если же ввести 7.2, то на экран ничего не выведется.

Во-вторых, можно использовать более развернутый вариант развилки

if условие

операторы1

else ..

оператры2

end

В этой форме имеется дополнительное ветвление внутри тела оператора if (рис. 3.2, б). Оператор else не содержит условия. Последовательность инструкций операторы2, связанная с ним, выполняются, если выражение условие оператора if ложно. На основе такой формы оператора if предыдущая задача решается более красиво.

x=input('Введите число ');

if fix(x)==x

disp([num2str(x) ' - целое число'])

else

disp([num2str(x) ' - не целое число'])

end

В-третьих, самая общая конструкция развилки

if условие1

операторы1

elseif условие2

операторы2

else

операторы3

end

в которой оператор elseif содержит условие2, которое вычисляется, если предшествующее условие1 оператора if ложно. Здесь один оператор if встроен (вложен) в else ветку другого оператора if (рис. 3.2, в). Инструкции операторы2, связанные с оператором elseif, выполняются, если условие2 истинно, иначе выполняются операторы3 else ветки. В следующем фрагменте программы проверяется, является ли символ, введенный с клавиатуры, прописной или строчной латинской буквой:

sym=input('Введите символ ','s');

if sym>='A' & sym<='Z'

disp([sym ' - прописная латинская буква'])

elseif sym>='a' & sym<='z'

disp([sym ' - строчная латинская буква'])

else

disp([sym ' - не латинская буква'])

end

Примечание: поскольку sym – символьная переменная, то в disp нет необходимости в преобразовании типа конкатенируемых значений.

Оператор elseif может многократно использоваться внутри оператора условия if. Возможен вариант вложенного оператора if без последней ветки else

if условие1

операторы1

elseif условие2

операторы2

end

Какая бы из форм развилки не применялась, в любом случае область действия условного оператора начинается ключевым словом if, а заканчивается ключевым словом end. Под условием понимается произвольное выражение, истинность или ложность которого понимается как отличие от нуля или равенство нулю соответственно. Чаще всего для построения выражения условие используют операции сравнения и логические операции. Следует отметить особенности построения развилок, связанные с тотальным использованием массивов в языке программирования системы Matlab. Массивы можно использовать в выражениях, входящих в условие. В этом случае, истинность условия наступает, когда истинны (не равны нулю) все элементы массива. Если хоть один элемент такого массива будет равен нулю, то условие считается ложным. Ложность будет иметь место и при использовании пустых массивов. Приведём простейший пример, иллюстрирующий работу условного оператора с условием-массивом.

a = [ 1 2; 4 0 ];

if a

b = 1;

else

b = 2;

В результате выполнения этого фрагмента переменная b получит значение, равное 2, так как матрица a содержит один нулевой элемент, и всё условие считается ложным. Запись if a по своему действию полностью эквивалентна записи if a~=0 или записи if all(a(:)).