|
|||
Управляющие структурыУправляющие структуры 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 рисунков — построений трехмерных поверхностей из треугольных окрашенных областей со случайными параметрами.
|
|||
|