Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Оператор 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, то цикл считается завершенным, и управление передается следующему за телом цикла оператору. Если же xxk , то выполняются операторы в цикле (тело цикла). Далее параметр цикла увеличивает свое значение на 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-02-09; просмотров: 99; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты