Операторы ветвления (условные операторы).

К операторам ветвления (условным операторам) относится условный оператор if, который позволяет создать такие алгоритмы, в которых при заданных условиях выполняются одни или другие блоки команд. Иными словами, в программном коде создаются точки ветвления, когда в зависимости от выполнения некоторого условия (или условий) выполняются разные фрагменты кода.

Рассмотрим условный оператор if, использующий ключевые слова if (если), else (иначе), elseif (иначе если), end (конец всей конструкции).

Наиболее простой синтаксис применения оператора if имеет вид:

if условие Инструкции end

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

Пример 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.

Пример 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.

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

Пример 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):

Прохладная погода

Пример 2.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

Пример. Найти корни квадратного уравнения

Операторы ветвления (условные операторы). - student2.ru

или

Операторы ветвления (условные операторы). - student2.ru ,

где Операторы ветвления (условные операторы). - student2.ru , Операторы ветвления (условные операторы). - student2.ru , Операторы ветвления (условные операторы). - student2.ru

Возможны три случая.

  1. Если Операторы ветвления (условные операторы). - student2.ru , тогда имеется единственный корень Операторы ветвления (условные операторы). - student2.ru .
  2. Если Операторы ветвления (условные операторы). - student2.ru и Операторы ветвления (условные операторы). - student2.ru , тогда нет действительных корней.
  3. Если Операторы ветвления (условные операторы). - student2.ru и Операторы ветвления (условные операторы). - student2.ru , тогда уравнение имеет два действительных корня: Операторы ветвления (условные операторы). - student2.ru и Операторы ветвления (условные операторы). - student2.ru .

Пример текста программы для М-файла

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

Результат счета при Операторы ветвления (условные операторы). - student2.ru

введите t=1

уравнение имеет один корень:

x=

-2

Результат счета при Операторы ветвления (условные операторы). - student2.ru

введите t=-3

x1=

-3/2

x2=

Результат счета при Операторы ветвления (условные операторы). - student2.ru

введите t=2

уравнение не имеет действительных корней: d<0

Наши рекомендации