- •210700.62 Инфокоммуникационные технологии и системы связи
- •1. Понятие информации. Введение в дискретные структуры
- •1.1 Понятие информации, информационные процессы
- •1.1.1 Понятие информации. Роль информации в развитии общества
- •1.1.2 Распознавание, хранение, передача, обработка и поиск информации
- •1.1.3 Многообразие форм информации и способов ее обработки
- •1.1.4 Кодирование информации. Количество и единицы измерения информации
- •1.1.5 Информатика как наука
- •1.2.1 Позиционные системы счисления, основные понятия
- •1.2 Системы счисления, используемые в компьютере
- •1.2.2 Перевод чисел в другие системы счисления
- •2 Арифметические и логические основы эвм
- •2.1 Технические средства реализации информационных процессов
- •2.1.1 История развития эвм
- •2.1.2 Классификация компьютерных систем
- •2.1.3 Общие принципы построения современных компьютеров
- •2.1.4 Функциональная структура компьютера
- •2.1.5 Периферийные устройства эвм
- •2.1 Операции с числами в эвм. Логические основы эвм
- •2.1.1 Представление числовых данных в памяти эвм
- •2.2.2 Машинные операции с двоичными числами
- •2.2.3 Основные понятия алгебры логики. Элементарные логические операции
- •2.2.4 Базовые логические элементы компьютера
- •2.3 Операционные системы
- •2.3.1 Структура программного обеспечения компьютерных систем
- •2.3.2 Операционные системы и оболочки
- •2.3.3 Архитектура ос. Ядро и его функции
- •2.3.4 Файловые системы ос
- •3 Основы алгоритмизации, введение в программирование и основы работы с пакетами прикладных программ
- •3.1 Основы алгоритмизации
- •3.1.1 Понятие алгоритма и его свойства
- •3.1.2 Средства описания алгоритмов
- •3.1.3 Основные типы структур алгоритмов
- •3.1.4 Примеры реализации основных алгоритмических структур
- •3.1.5 Структурированные данные и алгоритмы их обработки
- •3.2 Введение в программирование matlab
- •3.2.1 Вычислительная среда matlab
- •3.2.2 Особенности интерфейса программы
- •3.2.3 Типы данных. Выражения. Операторы. Функции
- •3.2.4 Понятие массива. Операции с матрицами и массивами
- •3.2.5 Управляющие конструкции языка программирования
3.2.5 Управляющие конструкции языка программирования
Для решения многих задач требуются программы, в которых действия повторяются циклически» а в зависимости от некоторых условий выполняются различные части программы. Для реализации подобного рода алгоритмов предназначены управляющие конструкции.
Управляющие конструкции языка программирования MATLAB, которые могут быть использованы при написании, как программ, так и функций.
Операторы цикла
Схожие и повторяющиеся действия выполняются при помощи операторов цикла for и while. Цикл for предназначен для выполнения заданного числа повторяющихся действий (арифметический цикл), a while — для действий, число которых заранее не известно, но известно условие продолжения цикла (циклы с предусловием или с постусловием).
Цикл for
Использование for осуществляется следующим обратом:
for count = start : step : final
команды MATLAB
end
Здесь count – переменная цикла, start – ее начальное значение, final – конечное значение, а step – шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается, как только значение count становится больше final. Переменная цикла может принимать не только целые, но и вещественные значения любого знака.
Если шаг цикла равен 1,то его можно не указывать.
Пример.
Пусть требуется вычислить точки семейства
кривых для x[0.2π],
которое задано функцией
,
зависящей от параметры а , для значений
параметра а от -0.1 до 0.1 с шагом 0,02.
Листинг 3.1. Файл-программа для расчета значений функции
х = 0 : pi/30 : 2*pi; % вычисление вектора значений аргумента
% перебор значений параметра в цикле
for а = -0.1 : 0.02 : 0.1
% вычисление вектора значений функции для текущего значения параметра
у = ехр(-а*х).*sin(x);
end
Пример. Пусть требуется вычислить значение суммы
Алгоритм вычисления суммы использует накопление результата, т. е. сначала сумма равна нулю, затем в переменную k заносился единица, вычисляется 1/k! (т. е. 1/1!), добавляется к S и результат снова заносится в S. Далее k увеличивается на единицу, и процесс продолжается, пока последним слагаемым не станет 1/N!.
Листинг 3.2. Файл-программа для вычисления суммы
% обнуление S для накопления суммы
S = 0;
N=10;
% накопление суммы в цикле с шагом 1
for k = 1 : N
S = S + 1/factorial(k);
end
Цикл while
Цикл while служит для организации повторений однотипных действий и случае, когда число и повторений заранее неизвестно и определяется выполнением некоторого условия.
while условие повторения цикла
команды MATLAB
end
Пример. Требуется найти сумму ряда для заданного х (синус разложением в ряд):
Суммировать до бесконечности не возможно, но можно накапливать сумму с заданной точностью. Известно, что дня знакопеременного ряда теоретически достаточно удерживать слагаемые, превышающие по модулю заданную точность, например 10-10. Однако суммирование таких рядов с ограниченной точностью вычислений может привести к потере значащих цифр и, в конечном итоге, к неверному результату. Значение k, обеспечивающее малость текущего слагаемого, заранее неизвестно, поэтому циклом for воспользоваться не удастся. Следовательно, необходимо использовать цикл while, который работает, пока выполняется условие цикла.
В
данном примере условием повторения
цикла является то, что модуль текущего
слагаемого
больше 10-10.
Для записи условия в форме понятной
MATLAB, следует использовать знак >
(больше).
Текст
программы, вычисляющей сумму ряда на
основе рекуррентного соотношения
приведен в листинге 3.3.
Листинг 3.3 Файл-функция, вычисляющая синус разложением в ряд
% вычисление первого слагаемого суммы для k=0
k = 0;
x = 0.5;
u = x;
s = u;
while abs(u) > 1.0e-l0
k = k + 1;
u = u*х^2/(2*k) /(2*к + 1);
s = s + u;
end
У цикла while, в отличие or for, нет переменной цикла, поэтому необходимо до начала цикла переменной k присвоить единицу, а внутри цикла увеличивать ее на единицу.
Условие цикла while может содержать логическое выражение, составленное из операций отношения и логических операций или операторов. Для задания условия повторении цикла допустимы операции отношения, приведенные в таблице 3.3.
Таблица 3.3 Операции отношения
Обозначение |
Операция отношения |
== |
Равенство |
< |
Меньше |
<= |
Меньше или равно |
>= |
Больше или равно |
~= |
Не равно |
Задание более сложных условий производится с применением логических операторов или операций. Например, условие -1≤х<2 состоит в одновременном выполнении неравенства х≥-1 и х<2 и записывается при помощи логического оператора and
and(x >= -1, х < 2),
или эквивалентным образом с применением логической операции "И"
(х >= -1) & (х < 2).
Основные логические операции и операторы приведены в таблице 3.4.
Таблица 3.4 Логические выражения и примеры их применения
Тип выражения |
Выражение |
Логический оператор |
Логическая операция |
Логическое "И" |
x<3 и k=4 |
and (x < 3, k==4) |
(х<3) & (k == 4) |
Логическое "ИЛИ" |
х = 1 или 2 |
or (x == 1, x == 2) |
(x ==1) | (x == 2) |
Отрицание "НЕ" |
a 1.9 |
not (a == 1.9) |
~(a == 1.9) |
При программировании алгоритмов кроме организации повторяющихся действий в виде циклов часто требуется выполнить тог иди иной блок команд в зависимости от некоторых условий, т. е. использовать ветвление алгоритма.
Операторы ветвления
Условный оператор if и оператор переключения switch позволяют создать гибкий разветвляющийся алгоритм, в котором при выполнении определенных условий выполняется соответствующий блок операторов или команд MATLAB. Практически во всех языках программирования имеются аналогичные операторы.
Условный оператор if
Оператор if может применяться в простом виде, для выполнения блока команд при удовлетворении некоторого условия, или в конструкции if-elseif-else для написания разветвляющихся алгоритмов.
Применение условного оператора if в самом простом случае выглядит так:
if условие
команды MATLAB
end
Если условие верно, то выполняются команды MATLAB, размещенные между if и end, а если условие неверно, то происходит переход к командам, расположенным после end. Условие является логическим выражением и записывается по правилам, описанным выше.
Пример.
Вычислить
,
при условии что вычисления происходят
в области действительных чисел и
требуется вывести сообщение, если
результат является комплексным числом.
В данном примере перед вычислением функции следует произнести проверку значения аргумента х и вывести в командное окно предупреждение, если модуль х меньше единицы (листинг 3.4).
Листинг 3.4 Файл-функция, проверяющая значение аргумента
% проверка аргумента
if abs(x) < 1
warning (‘результат комплексный’)
end
% вычисление функции
F = sqrt(x^2 – 1);
В общем виде оператор ветвления представляет конструкцию if-elseif-else. В зависимости от выполнения того или иного условия работает соответствующая ветвь программы, если все условия неверны, то выполняются команды, размещенные после else.
Пример. Вычисление кусочно-заданной функции
В данном примере число ветвей равно трем. Во второй ветви достаточно только проверить, что х<π, условие x≥-π уже выполнено (иначе бы отработала первая ветвь, и оператор if закончил работу). В последней ветви нет смысла проверять никакие условия, она работает, если все предыдущие условия неверны, что как раз соответствует х≥-π.
Листинг 3.5 Файл-функция вычисления кусочно-заданной функции
if x < - pi
y = sin(x) – 1;
elseif x< pi
y = x/pi;
else
y = -cos(x);
end
Оператор switch
Оператор switch используется тогда, когда необходимо выбрать ту или иную ветвь, в зависимости от значения некоторой переменной.
Оператор switch удобно применять тогда, когда есть соответствие между дискретными значениями некоторой переменной и последующими действиями. Для определения ветви программы в зависимости от выполнения более сложных условий, например а>0, приходится использовать оператор if.
