Оператор 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
Массив – это совокупность однородных элементов, имеющих одно имя. Одномерный массив – это вектор . Двумерный массив – это матрица
размерности 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];
Вычисление суммы и произведения элементов массива (матрицы)
Рассмотрим алгоритм нахождения суммы, который заключается в следующем: вначале сумма равна 0 (s=0), затем к s добавляем первый элемент массива и результат записываем опять в переменную s, далее к переменной s добавляем второй элемент массива и результат записываем в s и далее аналогично добавляем к s остальные элементы массива. При нахождении суммы элементов матрицы последовательно суммируем элементы всех строк.
Алгоритм нахождения произведения следующий: на первом начальное значение произведения равно 1 (p=1), затем последовательно умножаем p на очередной элемент, и результат записываем в p и т.д.
Программа вычисления суммы элементов массива
//Записываем в переменную s число 0.
s=0;
//Перебираем все элементы массива
for i=1:length(x)
//накопление суммы
s=s+x(i);
end
Программа вычисления произведения элементов массива
p=1;
for i=1:length(x)
p=p*x(i);
end
Программа вычисления суммы элементов матрицы
s=0;
//Вычисляем количество строк n и столбцов m матрицы a.
[n,m]=size(a);
for i=1:n
for j=1:m
s=s+a(i,j);
end
end
disp(s);
Программа вычисления произведения элементов матрицы
//Начальное значение произведение (p) равно 1.
p=1;
//Вычисляем количество строк N и столбцов M матрицы a.
[N,M]=size(a);
//Перебираем все строки матрицы.
for i=1:N
//Перебираем все столбцы матрицы.
for j=1:M
Умножаем значение p на текущий элемент матрицы.
p=p*a(i,j);
end
end
Поиск максимального (минимального) элемента массива (матрицы)
Алгоритм решения задачи поиска максимума и его номера в массиве следующий. Пусть в переменной с именем Max хранится значение максимального элемента массива, а в переменной с именем Nmax - его номер. Предположим, что первый элемент массива является максимальным и запишем его в переменную Max, а в Nmax - его номер (1). Затем все элементы, начиная со второго, сравниваем в цикле с максимальным. Если текущий элемент массива оказывается больше максимального, то записываем его в переменную Max, а в переменную Nmax - текущее значение индекса i. Фрагмент программы поиска максимума:
Реализация алгоритма поиска максимума
//Записываем в Max значение первого элемента массива.
Max=a(1);
//Записываем в Nmax номер максимального элемента
//массива, сейчас это число 1.
Nmax=1;
//Перебираем все элементы массива, начиная со второго.
for i=2:N
//Если текущий элемент массива больше Max,
if x(i)>Max
//то текущий элемент массива объявляем максимальным,
Max=x(i);
//а его номер равен i.
Nmax=i;
end;
end;
Алгоритм поиска минимального элемента в массиве будет отличаться от приведенного выше лишь тем, что в операторе if знак поменяется с > на <.
Программа поиска минимального элемента матрицы и его индексов: Nmin - номер строки , min - номер столбца минимального элемента.
Обратите внимание, что при поиске минимального (максимального) элемента матрицы циклы по i и j начинаются с 1. Если написать с двух, то при обработке элементов будет пропущена первая строка или первый столбец при сравнении a(i , j) с min.
Программа поиска минимального элемента матрицы и его индексов
//Записываем в Min a(1,1), в Nmin и Lmin число 1.
Min=a(1,1); Nmin=1; Lmin=1;
for i=1:N
for j=1:M
//Если текущий элемент матрицы меньше Min,
if a(i,j)<Min
//то текущий элемент массива объявляем минимальным,
Min=a(i,j);
//а его индексы равны i и j.
Nmin=i;
Lmin=j;
end;
end;
end;
Другие примеры.
Пример: вычислить количество отрицательных элементов вектора x=(-2, 5, -7, 9, -15).
Решение.
x=[-2, 5, -7, 9, -15];
n=length(x);
k=0;
for i=1:n
if x(i)<0 then
k=k+1;
end
end
t= k
Пример: вычислить произведение положительных элементов матрицы
Решение.
a=[1 3 5 7
9 -2 0 5];
[n, m]=size(a);
s=1;
for i=1:n
for j=1:m
if a(i, j)>0 then
s=s*a(i, j);
end
end
end
s
Дата добавления: 2015-08-01; просмотров: 871;