Хелпикс

Главная

Контакты

Случайная статья





Управляющие структуры



Управляющие структуры

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

Условный оператор if в общем виде записывается следующим образом:

if Условие

Инструкции_1

elself Условие

Инструкции_2

else

Инструкции_3

end

Эта конструкция допускает несколько частных вариантов. В простейшем, типа! f...end: if Условие Инструкции end

Пока Условие возвращает логическое значение 1 (то есть «истина»), выполняются Инструкции, составляющие тело структуры if...end. При этом оператор end указывает на конец перечня инструкций. Инструкции в списке разделяются оператором , (запятая) или ; (точка с запятой). Если Условие не выполняется (дает логическое значение 0, «ложь»), то Инструкции также не выполняются.

Еще одна конструкция

if Условие

Инструкции_1

else

Инструкции_2

end

выполняет Инструкции_1, если выполняется Условие, или Инструкции_2 в противном случае.

Условия записываются в виде:

Выражение_1 Оператор_отношения Выражение_2,

причем в качестве Операторов_отношения используются следующие операторы: ==, <, >, <=, >= или ~=. Все эти операторы представляют собой пары символов без пробелов между ними.

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

 

 

2).Циклы типа for...end

Циклы типа for...end обычно используются для организации вычислений с заданным числом повторяющихся циклов. Конструкция такого цикла имеет следующий вид:

for vаг=Выражение. Инструкция. .... Инструкция end

Выражение чаще всего записывается в виде s:d:e, где s — начальное значение переменной цикла var, d — приращение этой переменной и е — конечное значение управляющей переменной, при достижении которого цикл завершается. Возможна и запись в виде s :е (в этом случае d=l). Список выполняемых в цикле инструкций завершается оператором end.

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

» for i=1:5 i^2. end;

ans =

ans =

ans =

ans =

ans =

» for x=0:.25:1 Х ^ 2, end:

ans =

ans =

0.0625

ans =

0.2500

ans =

0.5625

ans =

Оператор continue передает управление в следующую итерацию цикла, пропуская операторы, которые записаны за ним, причем во вложенном цикле он передает управление на следующую итерацию основного цикла. Оператор break может использоваться для досрочного прерывания выполнения цикла. Как только он встречается в программе, цикл прерывается. Возможны вложенные циклы, например:

for i=1:3

for j=l:3

A(1.j)=i+j;

end

end

В результате выполнения этого цикла (файл for2.m) формируется матрица А:

» for2

» А

А =

2 3 4

3 4 5

4 5 6

»

Следует отметить, что формирование матриц с помощью оператора : (двоеточие) обычно занимает намного меньше времени, чем с помощью цикла. Однако применение цикла нередко оказывается более наглядным и понятным. MATLAB допускает использование в качестве переменной цикла массива А размера тхп. При этом цикл выполняется столько раз, сколько столбцов в массиве А, и на каждом шаге переменная var представляет собой вектор, соответствующий текущему столбцу массива А:

» А=[1 2 3:4 5 6]

А =

1 2 3

4 5 6

» for var=A; var, end

var =

var =

var=

3).Циклы типа while...end

Цикл типа while выполняется до тех пор, пока выполняется Условие:

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

Пример применения цикла while уже приводился. Досрочное завершение циклов реализуется с помощью операторов break или continue.

 

4).Конструкция переключателя

Для осуществления множественного выбора (или ветвления) используется конструкция с переключателем типа switch:

switch switch_Bыражение

case саsе_Выражение

Список_инструкций

case {саsе_Выражение1, Саsе_выражение2, саsе_ВыражениеЗ....}

Список_инструкций

otherwise. Список_инструкций end

Если выражение после заголовка switch имеет значение одного из выражений са5е_Выражение..., то выполняется блок операторов case, в противном случае — список инструкций после оператора otherwise. При выполнении блока case исполняются те списки инструкций, для которых сазе_Выражение совпадает со switch_Bbipa-жением. Обратите внимание на то, что сазе_Выражение может быть числом, константой, переменной, вектором ячеек или даже строчной переменной. В последнем случае оператор case истинен, если функция strcmp (значение, выражение) возвращает логическое значение «истине».

Поясним применение оператора switch на примере m-файла swl.m:

switch van

case {1,2,3}

dispCПервый квартал')

case {4,5,6}

disp('Второй квартал')

case {7,8,9}

d.isp( 'Третий квартал')

case {10.11,12}

dispC Четвертый квартал')

otherwise

disp('Ошибка в задании')

end

Эта программа в ответ на значения переменной van — номера месяца — вычисляет, к какому кварталу относится заданный месяц, и выводит соответствующее сообщение:

» var=2;

» swl

Первый квартал

» var=4;swl

Второй квартал

» var=7:swl

Третий квартал

» var=12;swl

Четвертый квартал

» var=-l;swl

Ошибка в задании

Создание паузы в вычислениях

Для остановки программы используется оператор pause. Он используется в следующих формах:

· pause — останавливает вычисления до нажатия любой клавиши;

· pause(N) — останавливает вычисления на N секунд;

· pause on — включает режим отработки пауз;

· pause off — выключает режим отработки пауз.

Следующий пример поясняет применение команды pause:

for i=1:20;

х =rand(1,40);

у =rand(1,40);

z = sin(x.*y);

tri = delaunay(x.y);

trisurf(tri,x,y,z)

paused);

end

Команда paused) здесь обеспечивает показ 20 рисунков — построений трехмерных поверхностей из треугольных окрашенных областей со случайными параметрами.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.