Материал: 4554

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

11

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

Создадим в редакторе Scinotes стандартную функцию, которая будет приветствовать всех по имени:

Теперь вызовем эту функцию в командной строке Scilab (не в редакторе!), указав в качестве входного параметра не одно значение, а массив значений:

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

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

Вязыке Scilab две конструкции, организующие ветвление:

1.Конструкция if ... else;

2.Конструкция select ... case.

Общий синтаксис конструкции if ... else имеет следующий вид

12

Общий синтаксис второй конструкции имеет вид

Для иллюстрации конструкций ветвления создадим функцию для расчета корней квадратного уравнения.

13

Результат вызова функции в командной строке Scilab

Вторую конструкцию продемонстрируем на следующем примере. Пользователь передает функции число, которое означает номер дня недели. В ответ функция выводит название этого дня.

14

Результат выполнения этой функции:

Для выполнения повторяющихся операций в Scilab предусмотрены два вида циклов:

1.Цикл for;

2.Цикл while.

Общий синтаксис для цикла for имеет вид

Цикл for, как правило, используется для перебора элементов с операциями над ними на некотором ограниченном множестве, либо когда количество итераций нам известно. Цикл будет выполняться до тех пор, пока счетчик не станет больше введенного конечного значения. Шаг является не обязательным параметром для счетчика и по умолчанию он принимается равным единице.

Для цикла while синтаксис имеет следующий вид

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

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

Управление циклом в его теле возможно с помощью следующих специальных операторов:

continue – передача управления следующей итерации; break – прекращение текущей итерации и выход из цикла.

15

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

Положить, что первый элемент массива есть искомый минимум (максимум) и записать его во временную переменную;

Сравнить значение i-го элемента (начиная со второго) со значением во временной переменной: если i-ый элемент меньше (больше) него, то записать i-ый элемент во временную переменную, иначе перейти на следующий шаг;

Увеличить значение счетчика i. Если счетчик вышел за размер массива, то закончить, иначе перейти на шаг 2.

Несложно заметить, что обработка матрицы и вектора по этому алгоритму будет не одинаковой, так как элементы в матрице адресуются двумя индексами. Для решения этой проблемы мы организуем ветвление, в котором по одной ветке будет вестись обработка вектора, а по другой – матрицы. Признаком вектора является наличие всего одного столбца или строки, так как мы помним, что адресация не зависит от представления вектора. Напомним, что для определения числа столбцов и строк используется функция size().

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