Самоучитель Matlab
print(Unquoted,"Совершенное число: 6=1+2+3 и 6=1*2*3"); break
otherwise
print(Unquoted,"Ничего интересного!") end_case
Особенность этого кода состоит в том, что он содержит пустые блоки ofdo – то есть блоки, которые не содержат команд для выполнения. Такой подход используется, если одни и те же действия нужно выполнять для нескольких значений проверяемого выражения. Что касается функции TestNumber(), то у нее один аргумент, который проверяется на предмет принадлежности к последовательности Фибоначчи.
На заметку
Последовательность Фибоначчи формируется так. Первые два числа последовательности равны 1, а каждое следующее равно сумме двух предыдущих. Таким образом, получаем числа 1, 1, 2, 3, 5, 8, 13, 21 и так далее.
Для нас интерес представляют числа в пределах первого десятка. В этом диапазоне к последовательности Фибоначчи имеют отношение числа 1, 2, 3, 5 и 8. Именно эти значения проверяются в начальных of-do блоках оператора выбора. Все эти блоки, кроме блока, соответствующего значению 8, пустые – то есть не содержат команд для выполнения. Поэтому если имеет место совпадение в одном из таких пустых блоков, сразу выполняются команды первого непустого блока – в данном случае блока для значения аргумента 8. Благодаря этому для значений 1, 2, 3, 5 и 8 аргумента функции TestNumber() выполняются одни и те же команды. А именно командой print(Unquoted,"Это число Фибоначчи!") выводится сообщение
Это число Фибоначчи!, а затем благодаря инструкции break работа оператора выбора (а с ним и все функции) завершается.
Отдельно обрабатывается значение аргумента 6. Число 6 – так на-
зываемое совершенное. Совершенные числа |
имеют особенность – |
он равны сумме своих делителей (чисел, на |
которые делится чис- |
ло). Делителями числа 6 являются числа 1, 2 и 3. Сумма этих чисел также равна 6. Если аргумент функции TestNumber() равен 6, командой print(Unquoted,"Совершенное число: 6=1+2+3 и 6=1*2*3") выводится сообщение о том, что число 6 - совершенное. Во всех прочих случаях появляется сообщение Ничего интересного!. На рис. 9.39 приведен фрагмент документа с примерами вызова функции TestNumber().
Стоит обратить внимание на то, как обрабатывается символьный аргумент функции (то есть аргумент, которому не присвоено числовое значение). В этом случае в силу очевидных причин реализуется otherwise-блок оператора выбора.