Мегаобучалка Главная | О нас | Обратная связь


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



2015-12-07 214 Обсуждений (0)
Циклы типа while...end 0.00 из 5.00 0 оценок




Программирование в MATLAB

Создание М-файлов-функций и М-файлов-сценариев

М-файлы-сценарии являются просто записью серии команд без входных и выходных параметров.

Язык программирования MATLAB является типичным интерпретатором. Это означает, что каждая инструкция программы распознается и тут же исполняется, что облегчает обеспечение диалогового режима общения с системой. Этап компиляции всех инструкций, т. е. полной программы, отсутствует. Интерпретация означает, что MATLAB не создает исполняемых конечных программ. Они существуют лишь в виде m-файлов. Для выполнения программ необходима среда MATLAB.

 

Задание 1:Откройте текстовый редактор системы MATLAB. Составьте m-сценарий, в котором бы строился график функции y(x)=x+sin(x) на отрезке [0,5]. Проверьте работу программы.

 

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

 

Структура m-функции выглядит следующим образом:

 

function выходной параметр=имя функции(список входных параметров)

% комментарии

Тело функции

выходной параметр=выражение;

 

Пример m-функции с одним параметром, вычисляющей значение функции :

function var=func1(x)

% вычисление функции y=1/(x^2+1)

var=1./(x.^2+1);

 

 

Такую функцию можно вызвать либо в другом m-файле, либо в командном окне, например:

 

>> y=func1(3)

 

y =

 

0.1000

 

>> x=0:5;

>> y=func1(x)

 

y =

 

1.0000 0.5000 0.2000 0.1000 0.0588 0.0385

 

 

M-функция может содержать несколько выходных параметров, тогда они перечисляются в квадратных скобках через запятую, например:

 

function [var1,var2]=my_func(x,y,z)

% комментарии

Тело функции

var1=выражение1;

var2=выражение2;

 

Пример m-функции с одним параметром, вычисляющей значения функций :

 

 

function [var1,var2]=func2(x)

% вычисление функций y1=1.5x^2, y2=cos(pi*x)

var1=1.5*x.^2;

var2=cos(pi*x);

Пример вызова данной функции:

>> [a b]=func2(3)

 

a =

 

13.5000

 

 

b =

 

-1

 

Задание 2:Откройте текстовый редактор системы MATLAB. Составьте m-функцию, вычисляющую значение функции y(x)=log(x^2+2). Проверьте работу программы.

 

Управляющие структуры языка MATLAB

Поскольку язык программирования системы MATLAB ориентирован на структурное программирование, в нем нет номеров строк и программных операторов безусловного перехода GO TO. Имеются лишь управляющие структуры следующих типов: условных выражений if... else...elseif...end, циклы for...end и while...end.

С позиций теории структурного программирования этих средств достаточно для решения любых задач. В MATLAB имеются также операторы-переключатели типа case.

 

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

 

 

Функции ввода-вывода

Для ввода пользователем значений переменных служит функция input. При использовании

данной функции в следующем виде:

 

d=input(’Введите значение переменной d=’);

 

переменной d присваивается значение, введенное пользователем после запроса ’введите значение переменной’.

При выполнении этой функции она останавливает вычисления и ожидает ввода значения.

 

Для вывода на экран текста и значений переменных служит функция disp:

 

disp(’pi=’); disp(pi)

 

Условный оператор

Условный оператор if в общем виде записывается следующим образом:

 

if Условие,

Инструкции_1,

elseif Условие,

Инструкции_2,

else

Инструкции_3,

end

 

 

Эта конструкция допускает несколько частных вариантов. Простейший:

 

if Условие

Инструкции

end

 

 

Пока Условие возвращает логическое значение 1 (то есть "истина"), выполняются Инструкции, составляющие тело структуры if...end. При этом оператор end указывает на конец перечня инструкций. Инструкции в списке разделяются оператором , (запятая) или ; (точка с запятой). Если Условие не выполняется (дает логическое значение 0, "ложь"), то Инструкции также не выполняются.

 

Еще одна конструкция

 

if Условие,

Инструкции_1,

else

Инструкции_2,

end

 

выполняет Инструкции_1, если выполняется Условие, или Инструкции_2 в противном случае.

 

Условия записываются в виде:

Выражение_1 Оператор_отношения Выражение_2,

 

причем в качестве Операторов_отношения используются следующие операторы:

== (равно), < (меньше), > (больше), <= (меньше либо равно), >= (больше либо равно), ~= (не равно).

 

Все эти операторы представляют собой пары символов без пробелов между ними.

 

Задание 3: Создайте m-файл и проверьте работоспособность программы: вычисление корней квадратного уравнения.

 

% Решение квадратного уравнения

a=input(’Input coefficient a=’);

b=input(’Input coefficient b=’);

c=input(’Input coefficient c=’);

% Вычисление дискриминанта

d= b^2-4*a*c;

if d>0

disp(’Корни вещественны’)

disp(’x1=’), disp((-b+sqrt(d))/(2*a))

disp(’x2=’), disp((-b-sqrt(d))/(2*a))

elseif d==0

disp(’Кратные корни’)

disp(’x1=x2=’), disp(-b/(2*a))

else

disp(’Корни комплексные’)

disp(’x1=’), disp((-b+sqrt(d))/(2*a))

disp(’x2=’), disp((-b-sqrt(d))/(2*a))

end

%Конец программы

 

Циклы типа for...end

Циклы типа for...end обычно используются для организации вычислений с заданным числом повторяющихся циклов. Конструкция такого цикла имеет следующий вид:

 

for vаr=Выражение,

Инструкция,

...,

Инструкция,

end

 

Выражение чаще всего записывается в виде s:d:e, где s - начальное значение переменной цикла var, d - приращение этой переменной и е - конечное значение управляющей переменной, при достижении которого цикл завершается. Возможна и запись в виде s:е (в этом случае d=1).

Список выполняемых в цикле инструкций завершается оператором end. Возможно создание вложенных циклов.

 

Задание 4: Создайте m-файл-функцию и проверьте работоспособность программы: вычисление факториала (m-файл должен иметь имя factorial.m).

 

function v=factorial(n)

% Факториал

if n==0

v=1;

else

v=1;

for i=1:n,

v= v*i;

end,

end

 

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

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

 

while Условие,

Инструкции

End

 

Задание 5: Создайте m-файл и проверьте работоспособность программы: приближенное вычисление бесконечной суммы.

 

% Вычисление числа \pi=4*(1-1/3+1/5-1/7+…)

% Из-за медленной сходимости ряда точность eps не рекомендуется брать меньше 0.0001

 

eps=input(’задайте точность’)

s=0;

k=0;

while 1/(2*k+1)>eps

s=s+(-1)^k/(2*k+1);

k=k+1;

end

disp(’pi=’),

disp(s*4)

 

 



2015-12-07 214 Обсуждений (0)
Циклы типа while...end 0.00 из 5.00 0 оценок









Обсуждение в статье: Циклы типа while...end

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (214)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)