- •Основы программирования в matlab методические указания
- •Введение
- •1. Виды программ в matlab
- •1.1 Сценарии (скрипты)
- •1.2 Функции
- •1.3 Основные и локальные функции
- •1.4 Вложенные функции
- •1.5 Анонимные функции
- •2. Управляющие конструкции
- •2.1 Условный оператор if
- •2.2 Оператор выбора switch-case
- •2.3 Цикл с определённым количеством итераций
- •2.4 Цикл с неопределённым количеством итераций
- •2.5 Операторы return, break и continue
- •2.6. Функция input
- •3. Комментарии в программе
- •4. Лабораторное задание
- •Библиографический список
- •Содержание
- •09.03.02 «Информационные системы и технологии»
- •09.03.01 «Информатика и вычислительная техника»
- •394026 Воронеж, Московский просп., 14
2. Управляющие конструкции
Для проектирования сложных интерактивных программ используют управляющие конструкции.
Все управляющие конструкции принято делить на операторы выбора (ветвления), которые позволяют выбрать один из вариантов работы программы, и циклические операторы, повторяющие блок команд некоторое число раз. Также применяются специальные команды для досрочного завершения цикла или всей программы. Рассмотрим их подробнее.
2.1 Условный оператор if
Оператор имеет следующий синтаксис:
if условие 1
блок команд 1
elseif условие 2
блок команд 2
…
else
блок команд N
end
Работа условного оператора основана на проверке условий на истинность. Как только MATLAB дошёл до первого истинного условия, он выполняет соответствующий блок команд. На этом работа оператора if заканчивается. Если все выражения оказались ложными, выполняются инструкции блока else.
Синтаксис условного оператора разрешает отсутствие блоков elseif и else.
Условные выражения представляют собой неравенства, записанные с помощью логических операторов:
больше >,
меньше <,
равно ==,
меньше или равно <=,
больше или равно >=,
не ~,
не равно ~=,
и &,
или |.
Условие считается истинным только тогда, когда неравенство верно.
Для записи сложных выражений рекомендуется использовать скобки:
>> if (a < b) & (b < c)
…
end
Рассмотрим пример.
Пусть требуется найти наибольшее из двух чисел.
Создадим функцию MaxNumber:
function MaxNumber(a, b)
if a >= b
disp(a)
else
disp(b)
end
Вызовем её с параметрами 1.6 и 3.14:
>> MaxNumber(1.6, 3.14)
3.1400
2.2 Оператор выбора switch-case
Данный оператор применяется в тех случаях, когда переменная (или результат выражения) может принимать одно из нескольких конкретных значений. Синтаксис оператора имеет вид:
switch переменная или выражение
case {список значений 1}
команды 1
case {список значений 2}
команды 2
…
otherwise
команды N
end
Работа оператора выбора аналогична работе условного оператора. Результат switch-выражения сравнивается с перечисленными в case-блоках значениями. Как только найдено хотя бы одно совпадение, выполняются соответствующие команды. Команды блока otherwise выполняются, если не нашлось ни одного совпадения. Но использовать его не обязательно.
Эквивалентная запись условного оператора выглядит так:
if (выражение == значения1{1}) | (выражение == значения1{n1})
команды1
elseif (выражение == значения2{1}) | (выражение == значения2{n2})
команды2
…
else
команды блока otherwise
end
Оператор « | » – логический оператор ИЛИ. Таким образом, условие будет выполнено, если будет найдено хотя бы одно совпадение.
Переменная в блоке switch должна быть скалярного типа или строкой. Если вместо неё используется выражение, оно так же должно возвращать скалярное значение или строку. В случае ошибки MATLAB выведет сообщение об ошибке.
Переменные (или выражения) в списке блока case также должны представлять собой или скалярные переменные, или строки, или массивы таких значений (но не матрицы). В последнем случае MATLAB будет искать совпадения хотя бы с одним из элементов массива. Если список значений содержит единственное значение, использование фигурных скобок необязательно.
Рассмотрим пример использования оператора.
Пусть нам нужно определить, является буква английского алфавита гласной или согласной. Для этого мы в функции IsVowel создадим массив гласных (vowels) и поместим его в блок case:
function IsVowel(letter)
vowels = {'A', 'a';
'E', 'e';
'I', 'i';
'O', 'o';
'U', 'u'};
switch letter
case vowels
disp('Гласная')
otherwise
disp('Согласная')
end
Вызовем функцию:
>> IsVowel(‘v’)
Согласная