Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕХНОЛОГИЯ ОБРАБОТКИ ИНФОРМАЦИИ | Лабораторная 1.docx
Скачиваний:
10
Добавлен:
01.07.2025
Размер:
835 Кб
Скачать
☆

Циклы типа while...End

Цикл типа while выполняется до тех пор, пока выполняется Условие:

while Условие

Инструкции

end

Досрочное завершение циклов реализуется с помощью операторов break или continue.

Диалоговый ввод

Приведем простой пример диалоговой программы:

% Вычисление длины окружности с диалоговым вводом радиуса

r=0;

while r>=0,

r=input('Введите радиус окружности r=');

if r>=0

disp(' Длина окружности l=');

disp(2*pi*r),

end 

end

Эта программа служит для многократного вычисления длины окружности по вводимому пользователем значению радиуса г. Простейший диалог реализован с помощью команды input:

input(‘Введите радиус окружности r='):

При выполнении этой команды вначале выводится запрос в виде строки, затем происходит остановка работы программы и ожидается ввод значения радиуса г (в общем случае числа). Ввод, как обычно, подтверждается нажатием клавиши Enter, после чего введенное число присваивается переменной г. Следующие строки

if r>=0

disp(' Длина окружности l = ');

disp(2*pi*r);

end

с помощью команды disp при r>=0 выводят надпись «Длина окружности 1=» и вычисленное значение длины окружности.

Пока r>=0. цикл повторяется. Но стоит задать r<0, вычисление длины окружности перестает выполняться, а цикл завершается.

Функция input может использоваться и для ввода произвольных строковых выражений. При этом она задается в следующем виде:

input('Комментарий'. ‘s’)

При выполнении этой функции она останавливает вычисления и ожидает ввода строкового комментария. После ввода возвращается набранная строка. Это иллюстрирует следующий пример:

» S=input('Введите выражение ','s') % (Вводим) 2*sin(l) 

S =

2*sin(l) 

» eval(S) 

ans = 

1.6829

Функция eval позволяет вычислить выражение, заданное (полученное от функции input) в символьном виде. Вообще говоря, возможность ввода любого символьного выражения в сочетании с присущими языку программирования MATLAB управляющими структурами открывает путь к созданию диалоговых программ любой сложности

Функции в matlab(м-функции)

М-функции являются M-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB.

Пример

Функция average - это достаточно простой M-файл, который вычисляет среднее значение элементов вектора: function y = average (x) % AVERAGE Среднее знач0ение элементов вектора. [m,n] = size(x); if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))         error('Входной массив должен быть вектором’) end y =sum(x)/length(x);  % Собственно вычисление

Эти команды нужно записать в M-файл, именуемый average.m. Функция average допускает единственный входной и единственный выходной аргументы. Для того чтобы вызвать функцию average, надо ввести следующие операторы:

z=1:99; average(z) ans = 50

Структура М-функции.

M-функция состоит из:

  • строки определения функции;

  • первой строки комментария;

  • тела функции;

  • строчных комментариев;

Строка определения функции. Строка определения функции сообщает системе MATLAB, что файл является М-функцией, а также определяет список входных аргументов.

Строка определения функции average имеет вид:

function y = average(x)

Здесь:

  1. function - ключевое слово, определяющее М-функцию;

  2. y - выходной аргумент;

  3. average - имя функции;

  4. x - входной аргумент.

Каждая функция в системе MATLAB содержит строку определения функции, подобную приведенной.

Если функция имеет более одного выходного аргумента, список выходных аргументов помещается в квадратные скобки. Входные аргументы, если они присутствуют, помещаются в круглые скобки. Для отделения аргументов во входном и выходном списках применяются запятые.

Пример

function [x, y, z] = sphere(theta, phi, rho)

Первая строка комментария. Для функции average первая строка комментария выглядит так:

% AVERAGE Среднее значение элементов вектора

Это - первая строка текста, которая появляется, когда пользователь набирает команду help <имя_функции>. Поскольку эта строка содержит важную информацию об M-файле, она должна быть тщательно составлена.

Тело функции. Тело функции содержит код языка MATLAB, который выполняет вычисления и присваивает значения выходным аргументам. Операторы в теле функции могут состоять из вызовов функций, программных конструкций для управления потоком команд, интерактивного ввода/вывода, вычислений, присваиваний, комментариев и пустых строк.

Пример

Тело функции average включает ряд простейших операторов программирования:

Оператор вызова функции size Начало оператора if

[m, n] = size(x);

if(~((m==1)|(n==1))|(m == 1 & n == 1))

  Error('Input должно быть вектором')

end y = sum(x)/length(x);

Сообщение об ошибке Конец оператора if Вычисление и присваивание

Как уже говорилось ранее, комментарии отмечаются знаком (%). Строка комментария может быть размещена в любом месте M-файла, в том числе и в конце строки.

Имена М-функций. В системе MATLAB на имена М-функций налагаются те же ограничения, что и на имена переменных - их длина не должна превышать 31 символа. Имена М-функций должны начинаться с буквы; остальные символы могут быть любой комбинацией букв, цифр и подчеркиваний.

Имя файла, содержащего М-функцию, составляется из имени функции и расширения “.m”.