Слайд 1Программирование в Matlab
Лекция 5
Слайд 2Типы программных файлов
Написание программ – это альтернатива работе в командной
строке
Программный код Matlab размещают в файлах с расширением «m» (m-файлах)
m-файлы
бывают двух видов:
скрипты (scripts)
функции (functions)
К сожалению, Matlab плохо понимает кириллицу…
Слайд 3Скрипты
Представляют собой последовательности команд Matlab
как если бы мы перенесли их
из командного окна в отдельный файл
Скрипт вызывается по имени через
командную строку
Скрипт выполняется в режиме интерпретатора
Слайд 4Функции
Специальный вид m-файлов
В отличие от скриптов могут принимать аргументы и
возвращать значения
Использование функций позволяет
структурировать программу
избежать повторения кода
Слайд 5Скрипты
Полезны для автоматизации последовательности действий, которые выполняются многократно
Не могут принимать
параметры и возвращать аргументы
Хранят значения своих переменных в рабочем пространстве
где
переменные доступны для других скриптов и из командной строки
Слайд 6Функции
Создание функции преследует целью расширение языка
Переменные, определённые внутри функции являются
локальными
то есть видны только внутри самой функции
Функция имеет собственное имя
Кроме
того, с ней связано имя m-файла, в котором функция записана
будем соблюдать правило: имя функции и имя m-файла должны быть одинаковы
Слайд 7Структура функции
Функция состоит из заголовка и тела
function f = fact(n)
Заголовок
% Вычисляет факториал.
Комментарий
% FACT(N) возвращает N!, Комментарий
f = prod(1:n); Тело функции
Фактически, функция отличается от скрипта наличием заголовка и способом вызова
Слайд 8Заголовок функции
function f = fact(n)
Слайд 9Комментарии
Используются для
пояснения кода
временного исключения кода из текста
Могут быть строчными и
блочными
Строчные начинаются с символа «%»
с этого места и до конца
строки всё игнорируется компилятором % как в этом примере
Блочные начинаются с символа «%{» и заканчиваются символом «%}»:
%{
эти символы должны обязательно стоять в отдельных строках!
%}
Слайд 10Комментарии
Можно автоматически закомментировать блок текста. Для этого:
выделить блок
щёлкнуть правой кнопкой
выбрать
Comment (или Ctrl+R)
Снять комментарий:
выделить закомментированный блок
щёлкнуть правой кнопкой
выбрать Uncomment (или
Ctrl+T)
Слайд 11Создание функции
m-файл можно создать в любом текстовом редакторе
Например, во встроенном
редакторе
при помощи меню
или командой
edit
Слайд 12Использование функции
Функция вызывается по своему имени (которое совпадает с именем
её m-файла)
Слайд 13Входные и выходные параметры
При написании функций в Matlab можно (и
желательно!) проводить проверку количества входных и выходных параметров
Для этого в
описании функции используют служебные слова:
nargin: количество входных параметров
nargout: количество выходных параметров
Слайд 14Входные и выходные параметры (пример)
Слайд 15Подфункции
В файлах-функциях Matlab могут быть реально описаны несколько функций
Синтаксически это
оформляется как две (или более) функций, записанных в одном файле
При
вызове такого m-файла происходит запуск самой первой функции
её имя должно совпадать с именем файла
Описание следующих функций локально
обычно они используются как вспомогательные для первой функции
Слайд 17Вложенные функции
Помимо последовательного вложения в один файл функция может быть
описана непосредственно в теле другой функции
Такая функция называется вложенной
Вложенная функция,
в свою очередь, может содержать другие вложенные функции
Слайд 19Создание p-кода
При вызове m-файла сравнительно много времени тратится на его
компиляцию
Чтобы сократить время выполнения можно предварительно перевести m-файл в p-код
(«пи-код»)
команда pcode <имя m-файла>
Откомпилированный в псевдокод файл получает расширение «p»
Такой файл будет выполняться быстрее, чем обычный m-файл
Слайд 20Интерактивный ввод данных
Используется при написании скриптов
Для ввода числовых данных
применяют функцию input по формату
x = input(’строка приглашения’)
Введённое пользователем
значение сохранится в переменной x
Для ввода строковых данных функция input вызывается с дополнительным параметром:
c = input(’строка приглашения’,’s’)
Кроме того, имеется Си-подобная функция sscanf
Слайд 22Вывод данных в командное окно
Для этого используют команду disp (от
display) по формату
disp()
Если выводимое значение –
число, то вначале его преобразуют к строковому типу при помощи функций int2str или num2str
Конкатенацию строк производят как для одномерных векторов-строк
Кроме того, имеется Си-подобная функция sprintf
Слайд 23Основные языковые конструкции
Как и любой процедурный язык высокого уровня, Matlab
позволяет использовать при написании программ
следование
ветвление
циклы
пользовательские функции
Слайд 24Следование
Реализуется перечислением каждого из операторов в отдельной строке
Либо в одной
строке через запятую (или точку с запятой)
Слайд 25Ветвление
Реализуется в двух вариантах:
при помощи оператора if
при помощи оператора switch
Слайд 26Оператор if
Простейшая форма:
if
end
Слайд 27Полный формат оператора if
В полном варианте оператора могут использоваться слова
else и elseif
Слово elseif может использоваться в одном операторе многократно
с указанием условия
Слово else – только один раз в конце оператора и без условия
Слайд 28Циклы
В Matlab имеется два вида циклов:
цикл с параметром for
цикл c
предусловием while
Также имеются
оператор досрочного выхода из цикла break
оператор перехода к
следующей итерации continue
Слайд 30Замечание по использованию цикла с параметром
Обычно цикл for используется для
обработки массивов
Важно помнить, что если есть возможность обойтись без этого
цикла (применить матричные или векторные операции), то лучше избавиться от явного цикла
В этом случае программа будет работать на порядок быстрее
Слайд 31Пример: замена отрицательных элементов вектора на нули
(с циклом)
Слайд 32Пример: замена отрицательных элементов вектора на нули
(без цикла)
Слайд 33Цикл с предусловием
Синтаксис:
while
end
Операторы выполняются, пока логическое выражение есть истина (true)
Слайд 35Операторы break и continue
Аналогичны одноимённым операторам Паскаля
Break производит досрочный выход
из цикла for или while
Continue прекращает выполнение текущей итерации и
переходит к следующей
Слайд 36Операторы break и continue
(пример)
Написать скрипт, который вводит с клавиатуры произвольное
количество чисел. Если число положительное, то оно прибавляется к сумме,
если отрицательное, то пропускается. Ноль – признак окончания работы
Слайд 37Операторы break и continue
(решение)