Раздел: Документация
0 ... 144 145 146 147 148 149 150 ... 365 if NStudents >= 1 % Если число студентов больше или равно единице, то % считываем из поля Family третьей ячейки первого столбца % фамилию студента и заносим в массив строк strmas strmas - CELLMAS{3, 1}.Family; end % Продолжаем считывание по всем оставшимся столбцам, % начиная со второго for k = 2:NStudents % Считываем фамилию из поля Family третьей ячейки k-го столбца fam = CELLMASC3, к) .Family; % Добавляем фамилию в массив строк strmas = char(strmas, fam); end Результатом работы файл-функции students является массив строк с фамилиями студентов, участвовавших в проведении эксперимента: » st = students(EXPER) st = Иванов Сергеев Пашин Дополните файл-программу students, приведенную в листинге 8.18, проверкой, является ли входной аргумент массивом ячеек. Примените функцию isceii, которая возвращает "истину" (логическую единицу), если ее входной аргумент— массив ячеек, и "ложь" (логический ноль) в противном случае. Имеет смысл также проверять, содержит ли текущая ячейка структуру или нет. Для этого следует воспользоваться функцией isstruct. Кроме того, перед обращением к полю структуры полезно убедиться в его наличии, для чего служит функция isf ield. Приложения с интерфейсом из командной строки Хорошо написанная программа позволяет пользователю не только производить вычисления, но и управлять процессом в ходе работы программы. Одним из способов взаимодействия пользователя с приложением является организация интерфейса при помощи командной строки. Перед выполнени- ем некоторых действий программа приостанавливает работу и выдает запрос в командное окно. Ответ пользователя определяет дальнейший ход выполнения программы. Данный раздел посвящен написанию приложений с таким достаточно примитивным интерфейсом, позволяющим пользователю управлять работой программы. Простой пример, программа-калькулятор Хорошим демонстрационным примером приложения с интерфейсом из командной строки является программа-калькулятор, вычисляющая результат арифметических операций. Пользователь вводит число, затем выбирает арифметическое действие, вводит второе число и получает результат. Для написания такой программы требуется умение организовать вывод текста на экран и получать ответ от пользователя. Как мы уже упоминали, вывод текста в командное окно осуществляется функцией disp. Применение disp обеспечивает только одностороннюю связь программы с пользователем. Для интерактивного взаимодействия следует привлечь еще функцию input. Выходной аргумент input является значением, введенным пользователем с клавиатуры в командную строку в ответ на запрос. Запросом является строка, указанная в качестве входного аргумента, например: n = input(Введите значение п = ); При выполнении данной команды в командное окно выводится сообщение "Введите значение п = " и выполнение программы приостанавливается до тех пор, пока пользователь не введет число с клавиатуры и не нажмет <Enter>. После выполнения input переменной п присвоится введенное значение. Ошибочный ввод не числа, а, например, символа приведет к сообщению об ошибке и повторному появлению запроса на ввод. Функция input допускает ввод строк в строковую переменную, указанную в качестве выходного аргумента, причем вторым дополнительным входным аргументом следует указать s1, например: name - input[Введите имя , s ); На запрос input следует ввести строку, не заключая ее в апострофы, строка записывается в переменную name. Напишите файл-функцию, реализующую следующий алгоритм. 1.Считывание первого числа в числовую переменную (примените input). 2.Получение знака арифметической операции (+, * или /) и занесение его в строковую переменную (примените input со вторым аргументом s). 3.Считывание второго числа в числовую переменную. 4.Выполнение арифметического действия в зависимости от введенного знака операции (используйте оператор переключения switch). 5.Вывод результата в командное окно. Программу оформите в виде файл-функции без входных и выходных аргументов. Текст требуемой файл-функции приведен в листинге 8.19. 1 Листинг 8.19. Файл-функция calc function calc % Калькулятор с интерфейсом командной строки S Считывание в числовую переменную числа, введенного пользователем а = input(Введите первое число ); % Считывание в строковую переменную операции, введенной пользователем oper = input(Введите арифметическую операцию (+, -, *, /) , s); i Считывание в числовую переменную числа, введенного пользователем b = input(Введите второе число •); % Вычисление результата арифметической операции switch oper case "+1 а + b case - a - b case 1 * a * Ь case /1 a / b otherwise error{1 неизвестная арифметическая операция") end Работа с файл-функцией calc не требует никаких дополнительных пояснений для пользователя, ему достаточно следовать инструкциям, выводимым в командное окно, и результат будет получен. Файл-функция calc достаточно хорошо защищена от неправильного использования. Команда input без дополнительного аргумента • s • проверяет, что введено число, и повторяет запрос в случае неправильного ввода. Ошибка при выборе арифметической операции обрабатывается ветвью otherwise оператора switch, которая выводит сообщение о неправильно введенной операции. Результат 0 ... 144 145 146 147 148 149 150 ... 365
|