Помощничек
Главная | Обратная связь


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

Оператор ветвления if



Функции от функций.

Способы ввода данных и вывода результатов.

Задания.

__________________

 

5.1 Оператор цикла for:

for count = start:step:final

команды MatLab

end

 

Здесь count – переменная цикла; start – её начальное значение; final – конечное значение; step – шаг на который увеличивается (или уменьшатся) переменная count. Если шаг равен 1, то его можно не указывать.

Например, создадим матрицу Q, размера , элементы которой вычисляются по формуле: , для этого в М-файле hil создадим цикл:

------------------------------------------------------------------------------------------------------------------------

% Задание размера матрицы Q

n = 4;

% Инициализируем матрицу Q и заполняем её нулями

Q = zeros(n);

% Вычисляем элементы матрицы Q

for i = 1:n

for j = 1:n

Q(i, j) = 1/(i + j - 1);

end

end

% Отображаем матрицу на экране

disp('Матрица Q = ')

disp(Q)

------------------------------------------------------------------------------------------------------------------------

5.2 Оператор цикла while:

while условие цикла

команды MatLab

end

 

В условии цикла используются операции отношения или логические операторы:

Обозначение Операции отношения
= = равенство
< (>) Меньше (больше)
< = (> =) Меньше или рано (больше или равно)
~ = Не равно

 

Логические операторы Условие Запись в MatLab Эквивалентная запись
Логическое « и » and (x<3, k = = 4) (x<3) & (k = = 4)
Логическое « или » or (x = = 1, x = = 2) (x = = 1) | (x = = 2)
Логическое « нет » not ( x = =2) ~ (x = = 2)

 

Пример. Найдем сумму диагональных элементов матрицы Q. Набираем команды внимательно, чтобы не произошло зацикливание программы. В случае зацикливания надо принудительно прервать выполнение M-файла. Для этого следует нажать клавиши Ctrl+C или Ctrl+Break.

Продолжаем М-файл hil.

------------------------------------------------------------------------------------------------------------------------

s = 0;

k = 1;

while k <= n

s = s + Q(k, k);

k = k+1;

end

% Отображаем сумму на экане

disp('Сумма диагональных элементов матрицы Q = ')

disp( s );

-----------------------------------------------------------------------------------------------------------------------

У цикла while нет переменной цикла, в отличие, от цикла for, поэтому пришлось до начала цикла присвоить переменной k значение нуль, а затем увеличивать k на единицу.

 

Оператор ветвления if.

Оператор ifможет применяться в простом виде

if условие

команды MatLab

end

Например, напишем файл-функцию Rfun для вычисления выражения

проверяющую значение аргумента.

------------------------------------------------------------------------------------------------------------------------

function f = Rfun(x);

if abs(x) < 1

warning ('результат комплексный')

end

f = sqrt(x^2-1);

-----------------------------------------------------------------------------------------------------------------------

Команда warningслужит для вывода предупреждения в командное окно.

Теперь вызов Rfun от аргумента, меньшего единицы по модулю, приведет к выводу в командное окно предупреждения:

>> y = Rfun(0.2)

Warning: результат комплексный

y =

0 + 0.9798i

 

В общем виде оператор ветвления представляет конструкцию

If - elseif – else

 

Напишем файл-функцию ifdem, демонстрирующую работу if - elseif – else.

-----------------------------------------------------------------------------------------------------------------------

function ifdem(a);

if (a == 0)

disp('a равно нулю')

elseif a == 1

disp('a равно 1')

elseif a == 2

disp('a равно 2')

elseif a >= 3

disp('a больше или равно 3')

else

disp('a меньше 3, но не равно 0, 1, 2')

end

----------------------------------------------------------------------------------------------------------------------

В зависимости от выполнения того или иного условия работает соответствующая ветвь программы, если все условия неверны, то выполняются команды, размещенные после else.

Вызовем функцию ifdem с аргументом 1.2:

 

При организации циклических вычислений следует, позаботься о том, чтобы внутри цикла не возникало ошибок, и не было зацикливания программы. Для досрочного прерывания цикла можно использовать команду break. Оператор break прерывает цикл и происходит выполнение операторов, расположенных в строках следующих за последним end.

Например, напишем программу prch, определяющую является ли заданное число N простым.

------------------------------------------------------------------------------------------------------------------------

N = input('Ведите число: ')

% Предполагаем, что число простое (pr=1)

pr = 1;

% Перебираем все возможные делители числа N от 2 до N/2

for i=2:N/2

% Если N делится на i,

if mod(N,i) == 0

% то число N не является простым (pr=0)

pr =0;

% и прерывается выполнение цикла

break;

end

end

% Если pr равно 1, то N - простое число

if pr == 1

disp('ПРОСТОЕ ЧИСЛО')

else

disp('НЕ ЯВЛЯЕТСЯ ПРОСТЫМ ЧИСЛОМ')

end

 

------------------------------------------------------------------------------------------------------------------------

Прервать не только цикл, но и программу можно также оператором error.

Например, изменим начало программы prch.

------------------------------------------------------------------------------------------------------------------------

N = input('Ведите число: ')

ost = round(N)- N;

if (N > 0) & (ost == 0)

% Предполагаем, что натуральное число простое (pr=1)

pr = 1;

else

error('ЧИСЛО N НЕ ЯВЛЯЕТСЯ НАТУРАЛЬНЫМ')

end

% Перебираем все возможные делители числа N от 2 до N/2

 

........

------------------------------------------------------------------------------------------------------------------------

Теперь, если ввести число, не являющимся натуральным, то программа прервется и укажет об ошибке ввода.

 

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.