Материал: Scilab ЛабПрактикум и теория

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

Сценарий является простейшей реализацией sce-файлов. Он может содержать последовательность команд, операторов, функций и комментарии.

Файлы-сценарии имеют свои особенности: 

  • не имеют входных и выходных параметров; 

  • работают с данными из рабочей области; 

  • в процессе выполнения не компилируются;

  • строки автоматически нумеруются;

  • представляют собой зафиксированную в виде файла последовательность команд, операторов и функций полностью аналогичную той, что используется во время сессии в Командном окне.

Откроем окно SciNotes для создания файла-сценария и введем в нем несколько команд, например, необходимых для построения графика (рис. 1.3.2-1.).

Рис. 1.3.2-1.Файл-сценарий, содержащий команды для построения графика

Для сохранения созданного файла следует щелкнуть по кнопку инструмента Сохранить, в соответствующей строке окна ввести имя sce-файла, а затем щелкнуть по кнопке Save. Имя файла появится в окне Текущего каталога.

Запуск файла (рис.1.3.2-3), сохраненного, например, с именем primer9, можно произвести из строки Командного окна, скопировав его содержимое в текущую командную строку и нажать <Enter> (то есть выполнить, как команду Scilab). Зададим предварительно в командном окне переменным x и z числовые значения, а следом, подключив соответствующий файл-сценарий выполним его. Запуск файла позволил в следующей строке командного окна получить результат выполнения (рис.1.3.2-4).

Рис.1.3.2-3. Sce-сценарий primer9


Рис. 1.3.2-4. Выполнение sce-сценария с именем primer9

Рассмотрим еще один пример работы (primer1), который предназначен для построения графика (рис. 1.3.2-5).

Рис.1.3.2-5. Sce-сценарий с именем primer1

Чтобы запустить этот файл на выполнение следует предварительно задать последовательность значений переменной x, которая используются в теле файла (помня, что sce-сценарий работает с данными из рабочей области) и набрать в командной строке имя (рис.1.3.2-6).


Рис.1.3.2-6. Выполнение sce-файла с именем primer1

Этот пример еще раз подтверждает, что все переменные, используемые в sce-сценарии, являются глобальными, т. е. они действуют одинаково в командах сессии и внутри программного блока, которым является sce-сценарий. Результат выполнения команд сценария с именем primer1 приведен на рис. 1.3.2-7.

Рис. 1.3.2-7. Результат работы sce-сценария primer1

      1. Описание и работа с sce-функциями

Sce-функции, также как и sce-сценарии, содержат команды, операторы и функции, но являются более сложным типом sce-файлов по сравнению со сценарием и имеют свои особенности:

  • начинаются с заголовка описания sce-функции;

  • могут иметь входные и выходные параметры;

  • все переменные, описанные в теле sce-функции, по умолчанию являются локальными, т.е. действуют только в пределах тела функции (глобальные переменные должны быть описаны как global);

  • являются самостоятельными программными единицам, которые общаются с другими модулями посредством имени с входными и выходными параметрами.

Таким образом, sce-функция является типичным объектом языка программирования высокого уровня.

При создании новой sce-функции открывается окно редактора со следующим шаблоном (рис. 1.3.3-1).

Рис.1.3.3-1. Структура новой sce-функции

Общая структура sce-функции с n входными и m выходными параметрами имеет вид:

function[var1, …, varm,…] =f_name (список входных параметров)

// Основной комментарий

// Тело m-функции

var1 = выражение

…

varm = выражение

endfunction

Начинается sce-функция с заголовка function, затем в квадратных скобках через запятую указывается имена выходных параметров, далее f_name – имя функции, а затем в круглых скобках - список входных параметров функции. Имена функций должны быть уникальными. Заканчивается sce-функция командой endfunction или просто end.

Sci-функция может быть вызвана из выражений, расположенных в Командном окне или в других программных модулях:

f_name(список_параметров)

Между собой sce-функции общаются посредством своего имени и входных и выходных параметров. Конструкция

vаri=выражение

приведенная в общей структуре sce-функции, используется, если требуется, чтобы функция возвращала результаты вычислений.

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

[var1,var2,... ] = f_nаmе(Список_параметров)

    Создадим простейшую sce-функцию с двумя входными и одним выходным аргументами (рис. 1.3.3- 2).


Рис. 1.3.3- 2. Описание sce-функции с одним выходным параметром

Сохраним функцию в файле, отметив, что Scilab предлагает в качестве имени sce-функции название самой функции, т.е. fab. Для вызова функции в Командном окне следует выполнить команду exec (указа, имя файла) (рис.1.3.3-3). Теперь можно выполнять обращение к функции, показанное также на рис.1.3.3-3.

Рис. 1.3.3-3. Обращение к sce-функции fab(a,h,i)

Следует отметить, что если в конце первой командной строки не поставлена точка с запятой (;), то в окно выводится текст функции.

Если директория, в которой расположена вызываемая функция, является текущей, то в команде exec полный путь можно не указывать – достаточно указать имя функции. В нашем случае exec(‘tt.sci’).

При вызове sci-функции fab (a,h,i) входные аргументы a, h и i получили соответственно значения 1, 4 и 3, результат вычислений был записан в выходной параметр t, значение выходного параметра t присвоен переменной d, а значение d вывелось в следующую строку командного окна.

Следующий пример показывает создание sce-функции с несколькими выходными параметрами. Список выходных параметры в заголовке sce-функции заключен в квадратные скобки, а сами параметры отделены запятыми. В качестве примера создадим и выполним sce-функцию quadeq(a,b,c),которая по заданным коэффициентам квадратного уравнения находит его корни (рис.1.3.3-4 , 1.3.3-5).

Рис. 1.3.3-4.Описание функция quadeq(a, b, c) с двумя выходными параметрами

Рис. 1.3.3-5. Выполнение функции quadeq(a, b, c) с двумя выходными параметрами

Иногда при создании sce-функций желательно применение глобальных переменных (например, если входных параметров слишком много). В таких случаях глобальные переменные надо объявить следующей командой:

global varl, var2,...

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

      1. Алгоритмические операторы Scilab

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

Оператор присваивания. Основным оператором системы программирования Scilab является оператор присваивания, имеющий следующую структуру:

ИмяПеременной = выражение

Оператор предназначен для идентификации переменных и обозначается символом =, слева от которого находится имя переменной, а справа арифметическое или строковое выражение (правила записи арифметических и строковых выражений были рассмотрены в п.1.1.2). Приведем несколько примеров операторов присваивания (рис.1.3.4-1).

Рис. 1.3.4-1. Примеры операторов присваивания

Все переменные, используемые в правой части оператора присваивания должны быть предварительно определены. Если командная строка заканчивается символом точка с запятой (;), то результат выполнения оператора не выводится, иначе он выводится в следующей строке командного окна. Это замечание распространяется и на выполнение операторов присваивания, расположенных в sci-файлах.

Операторы ввода данных. Для организации простейшего ввода в Scilab можно воспользоваться функциями

x=input('title');

или

x=x_dialog('title', 'stroka');

Функция input выводит в командной строке Scilab подсказку title, и ожидает от пользователя ввода значения, которое затем в качестве результата возвращается в переменную х. Функция x_dialog выводит на экран диалоговое окно с именем title. После чего пользователь может щелкнуть OK и тогда stroka вернется в качестве результата в переменную x, либо ввести новое значение вместо stroka, которое и вернется в качестве результата в переменную x. На рис.1.3.4-2 представлено диалоговое окно, которое формируется строкой x=x_dialog('Input X','5').


Рис. 1.3.4-2. Ввод данных с клавиатуры

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

Источник: https://studfile.net/preview/16689967/