Контрольная Информационные технологии. Информационные технологии
Скачать 1.51 Mb.
|
Основы программирования MATLABЦель работы: изучение особенностей программирования в системе MATLAB выполнение программы определения показателя политропы. Теоретическая часть Практически невозможно предусмотреть в одной, даже самой большой и мощной, математической системе возможность решения всех задач, которые могут интересовать пользователя. Программирование в системе MATLAB является эффективным средством ее расширения и адаптации к решению специфических проблем. Оно реализуется с помощью языка программирования системы. Большинство объектов этого языка, в частности все команды, операторы и функции, одновременно являются объектами входного языка общения с системой в командном режиме работы. Программы на языке программирования MATLAB сохраняются в виде текстовых m-файлов. Приведенные выше примеры программ (см. работы №№ 1, 2) часто называют скриптами (script – файлы). Более удобной разновидностью m – файлов являются функции, первой строкой которых является заголовок, использующий оператор function. Использование функций является удобным средством разделения программы на отдельные блоки алгоритмов, обратиться к которым можно из любой точки программы. Функции получают исходные данные в виде списка входных параметров и возвращают результаты своей работы также в виде списка выходных параметров. Одной из самых важных особенностей функций является аппарат локальных переменных. Все переменные, появляющиеся в теле функции, за исключением глобальных переменных, входных и выходных параметров, считаются локальными. Они образуют локальное рабочее пространство и доступны только в теле породившей их функции, и никакие скрипты или другие функции воспользоваться ими не могут. При написании программ – функций требуется, чтобы имя m – файла, в котором запоминается программа, обязательно совпадало с именем функции. Пример универсальной программы вычисления n! может быть написан следующим образом и должен быть сохранен под именем fact.m: function y=fact(n) k=1 for i=1: n k=k*I; end y=k; Для вычисления 5! Достаточно набрать в текущей строке: >> p=fact(5) >> p= 120 Отметим, что при обращении к функции должно выполняться соответствие между числом входных и выходных параметров. Так, например, обращения типа: >> [k1,k2]=fact(5) ??? Ошибка использования ==> fact Слишком много выходных аргументов. >> k1=fact(5,6) ??? Ошибка использования ==> fact Слишком много входных аргументов. >> [k1,k2]=fact(5,6) ??? Ошибка использования ==> fact Слишком много входных аргументов. вызовут ошибку, и работа программы будет прекращена. В любом m – файле можно описать несколько функций (в скриптах не допускается описание функций). Самая первая из них обладает тем преимуществом, что может быть вызвана извне. Все остальные функции считаются внутренними и доступны только в рамках данного m – файла. Функция может не содержать входных и выходных параметров. Если такая функция является внешней, то она выполняет роль скрипта. Однако в отличии от скрипта в ней могут присутствовать другие подфункции, отпадает необходимость в использовании функций как отдельных m – файлов, и текст программы можно целиком поместить в одном файле, а внешние подключать как дополнительные библиотеки (например, файлы данных). Поэтому рекомендуем для написания программы отказаться от скриптов и оформлять программу сразу в виде функции без входных и выходных параметров. Входной язык Matlab насчитывает всего 9 операторов, использующих 14 служебных слов. Соответствующие синтаксические конструкции приведены ниже: Таблица 4.
Комментарии начинаются с символа % и располагаются с начала строки либо правее любого последнего оператора строки. Начальные комментарии выполняют особую роль. Первая группа строк с подряд идущими комментариями до пустой строки образует текст, выдаваемый в командном окне по команде help с именем m – файла. Добавим, например, к приведенной выше программе вычисления 5! Следующий комментарий (рисунок 20): Выполним команду: >> help fact Функция вычисления факториала числа Рисунок 20. – Функция вычисления факториала Важным при написании программ является взаимодействия пользователя с программой. Простейший способ ввода числовой и символьной информации, набираемой с клавиатуры, использует функцию input. Эта функция допускает два формата обращения : >> x=input('Введите x= '); Введите x= В данном случае программа ожидает ввода (с клавиатуры) значения, которое будет присвоено переменной x. Вместо конкретного значения пользователь может ввести выражение, величина которого будет подсчитана с учетом текущего состояния переменных рабочего пространства. Второй формат обращения к функции имеет вид : input x=input('Введите x','s'); В данном случае текст, вводимый пользователем, будет рассматриваться как строка символов. Для того чтобы вывести на экран значение некоторой переменной можно исключить знак ';' в конце строки, например : >> x= 5; >> x x= 5 >> Более гибким вариантом вывода является использование функции disp : >> disp(x) 5 >> disp('x^2+3') x^2+3 >> Как видно данная функция не отображает имя выводимой переменной и дает возможность дополнить вывод определенными пояснениями, например : >> disp(strcat('Значение переменной x= ',num2str(x))); Значение переменной x=5 >> В данном примере текст выводимый функцией disp был составлен из двух строк: ' Значение переменной x = ', '5' (функция num2str(x,n) преобразует значение переменной x в строковый тип, n – количество цифр дробной части ). Функция strcat('s1','s2') выполняет операцию горизонтального объединения двух строк s1 и s2. Для вертикального объединения можно воспользоваться функцией strvcat : >> disp(strvcat('Значение переменной x = ',int2str(x))); Значение переменной x = 5 >> Отладка программы производится с помощь пунктов Debug и Breakpoint меню окна текстового редактора системы, путем установки точек останова программы. Выполнение программы приостанавливается при достижении строки помеченной точкой как показано на рисунок 2. При этом можно проверить значения переменных, выполнить определенные действия по определению корректного значения переменных и т.д. Дальнейшее выполнение программы можно организовать пооператорно (для продолжения нажать F10), что облегчает поиск ошибки, а можно и в обычном режиме (до конца или до следующей точки останова) используя клавишу F5. Как видно из рисунка 2 с помощью пункта Breakpoints можно регулировать условия останова выполнения программы в случае появления ошибки (stop if error), недопустимого значения переменных (stop if NaN Or Inf) или появлении предупреждения (stop if warning). Рисунок 21. – Пункты Debug и Breakpoint 2. Рабочее задание. 1. Выполнить упражнения из описания лабораторной работы. 2. Оформить результаты выполнения, иллюстрируя скриншотами. 3. Сделать вывод о проделанной работе. Ход выполнения работы. 1. Функция ввода исходных данных: Ввод исходных данных будем осуществлять с помощью стандартной функции системы menu (рисунок 22): Рисунок 22. – Функция menu >> k=menu(' Заголовок ', 'Кнопка1', 'Кнопка2', 'Кнопка3',….); При выборе одной из кнопок переменная k будет принимать значения 1,2,3,… в зависимости от номера выбранной кнопки в списке функции menu. function [P0,V0,P1,V1]=Vvod P0=100000;V0=0.1;P1=100000;V1=0.1 n=0; while n<5 n=menu('Исходныеданные',... strcat('P0= ',num2str(P0)),... strcat('V0= ',num2str(V0)),... strcat('P1= ',num2str(P1)),... strcat('V1= ',num2str(V1)),... 'Расчет'); switch n case 1 P0=input('P0= '); case 2 V0=input('V0= '); case 3 P1=input('P1= '); case 4 V1=input('V1= '); end end Троеточие используется для переноса строки. Работа функции осуществляется следующим образом: при выборе одной из кнопок (например, первой), переменной n будет присвоено значение равное 1, которое сигнализирует программе о необходимости изменить параметр, соответствующий кнопке 1. Выбор и изменение параметра происходит посредством оператора switch. Так как условие оператора while выполнено (n=1<5), то цикл повторится и появится меню с новым значением измененного параметра. Выход из цикла осуществится только при выборе кнопки 'Расчет', так как значение n=5, и условие цикла нарушается. В результате выполнения данной функции будет создано меню, которое будет позволять пользователю изменять значения исходных данных. Функция Vvod возвращает значения исходных параметров, заданных пользователем (рисунок 23): Рисунок 23. – Функция Vvod Рассчитываем политропы сжатия: 3. Сформируем ответ в виде функции (рисунок 5): function Otvet(P0, P1, V0, V1, n) clc; % выполняет очистку главного окна системы disp(' Параметры процесса '); disp(strcat(' Начальное давление P0: ',num2str(P0))); disp(strcat(' Начальный объем V0: ',num2str(P0))); disp(strcat(' Конечный объем V1: ',num2str(P0))); disp(strcat(' Показатель расширения n : ',num2str(L))); Рисунок 24. – Функция Otvet Общую функцию назовем Pokazatel: function Pokazatel clc; [P0,V0,P1,V1]=Vvod; % осуществляем ввод данных % Определяем n n=log(P0/P1)/log(V1/V0); %Выводим результат расчета Otvet(P0,V0,P1,V1,n); Функция Pokazatel должна располагаться самой первой в тексте программы. Рисунок 25. – Функция Pokazatel Рисунок 26. – Результат выполненной работы Вывод: изучили особенности программирования в системе MATLAB выполнение программы определения показателя политропы.
|