Оператор альтернативного выбора

Еще одним способом организации разветвлений является оператор select альтернативного выбора следующей структуры:

select параметр

case значение1 then операторы1

case значение2 then операторы2

else операторы

end

Оператор select работает следующим образом: если значение параметра равно значению1, то выполняются операторы1, иначе если параметр равен значению2, то выполняются операторы2; в противном случае, если значение параметра совпадает со значением3, то выполняются операторы3 и т.д. Если значение параметра не совпадает ни с одним из значений в группах case, то выполняются операторы, которые идут после служебного слова else.

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

Рассмотрим использование оператора select на примере решения следующей задачи.

ЗАДАЧА.

Вывести на печать название дня недели, соответствующее заданному числу D, при условии, что в месяце 31 день и 1-е число - понедельник.

Для решения задачи воспользуемся условием, что 1-е число - понедельник. Если в результате остаток от деления заданного числа D на семь будет равен единице, то это понедельник (первое, восьмое, пятнадцатое, двадцать второе и двадцать девятое числа), двойке - вторник, тройке - среда и так далее. Вычислить остаток от деления числа х на k можно по формуле modulo(x,k). Следовательно, при построении алгоритма необходимо использовать шесть условных операторов.

Решение задачи станет значительно проще, если при написании программы воспользоваться оператором select.

D=input('D=');

//Вычисление остатка отделения D на 7, сравнение его с числами

// от 0 до 6.

select modulo(D,7)

case 1 then disp('Monday');

case 2 then disp('Tuesday');

case 3 then disp('Wednesday');

case 4 then disp('Thursday');

case 5 then disp('Friday');

case 6 then disp('Saturday');

else

disp('Sunday');

end

Рассмотрим операторы цикла в Scilab. В sci-языке есть два вида цикла - оператор цикла с предусловием while и оператор for.

Оператор while

Оператор цикла while имеет вид

while условие

операторы

end

Здесь условие - логическое выражение; операторы будут выполняться циклически, пока логическое условие истинно.

Оператор цикла while обладает значительной гибкостью, но не слишком удобен для организации «строгих» циклов, которые должны быть выполнены заданное число раз.

Оператор цикла for используется именно в этих случаях.

Оператор for

Оператор цикла for имеет вид

for x=xn:hx:xk

операторы

end

Здесь x - имя скалярной переменной - параметра цикла, хn - начальное значение параметра цикла, xk - конечное значение параметра цикла , hx - шаг цикла . Если шаг цикла равен 1, то hx можно опустить, и в этом случае оператор for будет таким.

for x=xn:xk

операторы

end

Выполнение цикла начинается с присвоения параметру начального значения (x=xn). Затем следует проверка, не превосходит ли параметр конечное значение (x>xk). Если x>xk, то цикл считается завершенным, и управление передается следующему за телом цикла оператору. Если же x≤xk , то выполняются операторы в цикле (тело цикла). Далее параметр цикла увеличивает свое значение на hx (x=x+hx). После чего снова производится проверка значения параметра цикла, и алгоритм повторяется.

Пример. Протабулировать функцию y=xln2x.Х принимает значения от 1 до с шагом 0,2.

clc

for x=1:.2:2

y=x*log(x)^2;

printf("%1.1f %2.2f",x,y)

disp('')

end

1.0 0.00

1.2 0.04

1.4 0.16

1.6 0.35

1.8 0.62

2.0 0.96

Циклы while и for могут быть прерваны с помощью оператора break.
Пример.
-->a=0; for i=1:5:100, a=a+1; if i>10 then break, end;end
-->a
a =
3.

Обработка массивов и матриц в Scilab

Массив – это совокупность однородных элементов, имеющих одно имя. Одномерный массив – это вектор Оператор альтернативного выбора - student2.ru . Двумерный массив – это матрица

Оператор альтернативного выбора - student2.ru

размерности n*m.

В системе Scilab принято элементы массивов записывать следующим образом: a(1), a(n), b(3, 7), b(n, m).

Для того, чтобы определить количество элементов в одномерном массиве x, используют функцию length вида

n=length(x)

Для того, чтобы определить количество строк (n) и столбцов (m) матрицы b, можно воспользоваться функцией size:

[n, m]=size(b)

Рассмотрим возможности sci-языка для обработки массивов и матриц. Особенностью программирования задач обработки массивов (одномерных, двумерных) на sci-языке является возможность как поэлементной обработки массивов (как в любом языке программирования), так и использование функций Scilab для работы массивами и матрицами.

Рассмотрим основные алгоритмы обработки массивов и матриц и их реализацию на sci-языке.

Ввод-вывод массивов и матриц

Ввод массивов и матриц может быть организован как в режиме диалога:

clc

N=input('N=');

disp("Ввод вектора Х");

for i=1:N

x(i)=input('X=');

end

disp(x);

//Ввод матрицы

N=input('N=');

M=input('M=');

disp(' Ввод матрицы ');

for i=1:N

for j=1:M

a(i,j)=input('');

end

end

disp(a);

N=-->3

Ввод вектора Х

X=-->4

X=-->-3

X=-->46

4.

- 3.

46.

N=-->2

M=-->3

Ввод матрицы

-->-1

-->6

-->0

-->34

-->3

-->65

- 1. 6. 0.

34. 3. 65.

так и непосредственно в программе:

x=[4 -3 46];

a=[-1, 6, 0;34, 3,65];

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