Операторы ветвления (условные операторы).
К операторам ветвления (условным операторам) относится условный оператор if, который позволяет создать такие алгоритмы, в которых при заданных условиях выполняются одни или другие блоки команд. Иными словами, в программном коде создаются точки ветвления, когда в зависимости от выполнения некоторого условия (или условий) выполняются разные фрагменты кода.
Рассмотрим условный оператор if, использующий ключевые слова if (если), else (иначе), elseif (иначе если), end (конец всей конструкции).
Наиболее простой синтаксис применения оператора if имеет вид:
if условие Инструкции end |
где условие – произвольное выражение (чаще всего включающее в себя операции сравнения и логические операции), истинность или ложность которого понимается как отличие от нуля или равенство нулю, причем если условие истинно, то выполняются Инструкции (команды) после этого условия до ключевого слова end, которое является идентификатором окончания условного оператора. После этого управление передается оператору, следующему после условного. Если условие истинным не является, то управление сразу передается оператору, следующему после условного. Иными словами, при ложном условии, Инструкции после условия и до ключевого слова end не выполняются.
Пример 1.3.1. Требуется найти максимальное из трех чисел x, y, z: u=max{x,y,z}. Напечатать значения x, y, z и u.
Для выполнения создается М-файл. Ниже приведен текст М-файла.
x=input('Введите значение x: '); y=input('Введите значение y: '); z=input('Введите значение z: '); if(x>=y&x>=z) u=x; end if(y>=x&y>=z) u=y; end if(z>=x&z>=y) u=z; end disp('x='); disp(x); disp('y='); disp(y); disp('z='); disp(z); disp('u=max(x,y,z)='); disp(u); |
Результаты расчета в командном окне (задано x=1, y=2 и z=3):
x=
y=
z=
u=max(x,y,z)=
Помимо рассмотренного варианта синтаксиса, в условном операторе могут использоваться ключевые слова else и elseif. В частности, если синтаксис условного оператора имеет вид
if условие Инструкции_1 else Инструкции_2 end |
то при истинном условии выполняются команды, расположенные между условием и ключевым словом else (т.е. блок Инструкции_1), а если условие ложно, то выполняются команды между ключевым словом else и инструкцией окончания условного оператора end.
Пример 1.3.2. Требуется найти максимальное и минимальное из двух чисел x, y: u=max{x,y}; v=min{x,y}. Напечатать значения x, y и u, v.
Для выполнения создается М-файл. Ниже приведен текст М-файла.
x=input('Введите значение x: '); y=input('Введите значение y: '); if (x>y) u=x; v=y; else u=y; v=x; end disp('x='); disp(x); disp('y='); disp(y); disp('u=max(x,y)='); disp(u); disp('v=min(x,y)='); disp(v); |
Результаты расчета в командном окне (задано x=1 и y=2):
x=
y=
u=max(x,y)=
v=min(x,y)=
В более общем случае синтаксис оператора if следующий:
if условие_1 Инструкции_1 elseif условие_2 Инструкции_2 elseif условие_3 Инструкции_3 ... else Инструкции end |
Поясним, что в такой конструкции может быть много ветвей с ключевым словом elseif, при этом если справедливо условие условие_1, то выполняется набор команд Инструкции_1, если справедливо условие условие_2, то выполняется набор команд Инструкции_2 и т.д. Если же все эти условия оказываются ложными, то выполняются команды, расположенные после слова else. Отметим, что с одной стороны число ветвей elseif неограниченно, с другой – ветви elseif могут отсутствовать вовсе. Рассмотренный условный оператор завершается ключевым словом end.
Следует обратить внимание, что особенность приведенного оператора состоит в том, что каждое следующее условие проверяется только в том случае, если не выполнено ни одно из предыдущих условий.
Пример 1.3.3. Требуется составить программу анализа значения температры t и характеристики типа погоды: Морозная погода (если значение температуры неположительно); Холодная погода (если значение температуры положительно, но не превосходит 10); Прохладная погода (если значение температуры больше 10, но не больше 18); Теплая погода (если значение температуры больше 18, но не больше 25); Жаркая погода (если значение температуры больше 25).
Для выполнения создается М-файл. Ниже приведен текст М-файла.
t=input('Введите значение температуры t='); if(t<=0) disp('Морозная погода') elseif and(t>0, t<=10) disp('Холодная погода') elseif and(t>10, t<=18) disp('Прохладная погода') elseif and(t>18, t<=25) disp('Теплая погода') else disp('Жаркая погода') end |
Результаты расчета в командном окне (задано t=11):
Прохладная погода
Пример 1.3.4. Даны три числа: трех чисел x, y, z. Требуется найти сумму значений, по модулю меньших 5, остальные распечатать.
Для выполнения создается М-файл. Ниже приведен текст М-файла.
x=input('Введите значение x: '); y=input('Введите значение y: '); z=input('Введите значение z: '); s=0; if(abs(x)<5) s=s+x; else disp('x='); disp(x); end if(abs(y)<5) s=s+y; else disp('y='); disp(y); end if(abs(z)<5) s=s+z; else disp('z='); disp(z); end disp('s='); disp(s); |
Результаты расчета в командном окне (задано x=-3, y=5 и z=6):
y=
z=
s=
-3
Пример. Найти корни квадратного уравнения
или
,
где , ,
Возможны три случая.
- Если , тогда имеется единственный корень .
- Если и , тогда нет действительных корней.
- Если и , тогда уравнение имеет два действительных корня: и .
Пример текста программы для М-файла
t=input('введите t=');
a=t-1;b=2*t;c=t+3;
if a==0
x=-c/b; disp('уравнение имеет один корень:'); disp('x=');disp(x);
else
d=b^2-4*a*c;
if d<0
disp('уравнение не имеет действительных корней: d<0');
else
d=sqrt(d); x1=(-b+d)/(2*a); x2=(-b-d)/(2*a);
disp('x1='); disp(x1); disp('x2='); disp(x2);
end
end
Результат счета при
введите t=1
уравнение имеет один корень:
x=
-2
Результат счета при
введите t=-3
x1=
-3/2
x2=
Результат счета при
введите t=2
уравнение не имеет действительных корней: d<0
Дата добавления: 2016-11-02; просмотров: 1329;