Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zadania_na_2_semestr / Методическое пособие.pdf
Скачиваний:
377
Добавлен:
02.04.2015
Размер:
1.62 Mб
Скачать

Лабораторная работа №5. Ввод-вывод

Организация ввод-вывод в MATLAB

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

Основу консольного ввода-вывод в MATLAB составляют 3 функции:

disp — вывод содержимого указанной переменной;

input — функция ввод;

fprintf — форматированный вывод.

Далее рассмотрим каждую функцию отдельно, однако сначала кратко рассмотрим сроки в MATLAB.

Строки

Прежде чем рассказывать о вводе-выводе в MATLAB сделаем небольшое отступление и расскажем о строках в MATLAB. Первое, что необходимо отметить, это то, что все строки в MATLAB является векторами-строками содержащие символы (тип char), а это значит со строками в MATLAB можно работать так же как и массивами.

Строки в MATLAB заключаются в одинарные кавычки. Приведем пример создания строки:

>> str = 'Hellow world!'

str =

Hellow world!

Внутри одиночных кавычек можно помещать вводить доступные символ, например буквы, цифры, символы подчеркивания, двойные кавычки и др. Однако, так как строка сама ограничивается одинарными кавычками, то для того чтобы поместить в строку одинарную кавычку, необходимо поместить в нее две следующие подряд одинаковые кавычки. Для того чтобы это было понятнее, сразу приведем пример:

49

>> str = 'You''re right!'

str =

You're right!

После данного краткого обзора строк в MATLAB теперь непосредственно перейдем к рассмотрению функций консольного ввода-вывода в MATLAB.

Функция disp

Данная функция является простейшей для вывод в командное окно в MATLAB. Данная функция принимает единственный аргумент, который выводит в командное окно. Например:

>>disp(str); Hellow world!

>>str

str =

Hellow world!

>>disp(x)

12.5000

>>x

x =

12.5000

Как видно вывод функции disp аналогичен тому, если ее аргумент просто ввести в

консоль без символа «;» на конце, за исключением того, что не будет выведено имя переменной. На этом рассмотрение данной функции закончим и перейдем к рассмотрению функции input.

Функция input

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

50

>>a = input('Введите число a: '); Введите число a: 12.5

>>b = input('Введите число b: '); Введите число b: 2 + 5

>>a

a =

12.5000

>> b

b =

7

Как видно из примера, прежде чем вернуть результат, MATLAB попытается вычислить его значение, как если бы его введи в командное окно, однако это поведения не всегда желательно, и требуется получить введенное выражение в виде строки. Для этого функции input необходимо указать второй параметр 's':

>>str1 = input('Введите строку: ','s'); Введите строку: Hellow world!

>>str1

str1 =

Hellow world!

>> str2 = input('Введите строку: '); Введите строку: Hellow world! Error: Unexpected MATLAB expression.

Введите строку: 'Hellow world!' >> str2

str2 =

Hellow world!

Как видно из этого примера, без указания второго параметра в input ввести строку не заключая ее в одиночные кавычки не удастся.

Теперь приведем пример организации простого диалога с пользователем. В качестве примера приведем программу, которая будет раскладывать введенное целое число на множители. Данная программа будет иметь главного меню, содержащее два пункта:

1. Разложить число на множители

51

2.Выход

Код данной программы содержится в функции simpleDialog.m:

function [ ] = simpleDialog( )

%Пример организации простейшего диалога с пользователем

%переменная для содержащая выбор пользователя userAnswer = 0;

%цикл для организации главного меню

while (userAnswer ~= 2)

%вывод содержимого меню disp('Главное меню');

disp('1. Разложить число на множители'); disp('2. Выход');

%получим от пользователя номер пункта, меню которое он выбрал userAnswer = input('> ');

%хорошим томом будет проверить корректность данных введенных

%пользователем, и если они ошибочны, то вывести предупреждение

if userAnswer ~= 1 && userAnswer ~= 2 disp('Ошибка ввода, повторите ввод');

elseif userAnswer == 1

%предложим пользователю ввести целое положительное число x = input('Введите целое положительно число: ');

%проверим корректность введенного числа

%функция isscalar проверят, что введенное число скаляр if ~isscalar(x) || x < 0 || x ~= round(x)

disp('Ошибка, введены некорректные данные');

%в случае ошибки ввода можно либо попросить повторить

ввод

% или вернутся в главное меню. В данном случае мы

вернемся к

% главному меню

else

%вычисли разложение числа x на множители

%для этого воспользуемся функцией factor disp('Разложение введенного числа на множители'); disp(factor(x));

end

end

end

end

52