Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оператор for




Оператор while

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

while условие

операторы

end

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

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

Оператор цикла 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




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 318; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.041 сек.