Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базовые средства матпакета Scilab

.pdf
Скачиваний:
125
Добавлен:
04.04.2023
Размер:
6.29 Mб
Скачать

Рис. 1.5.2-1 Окно редактора SciNotes для создания сценария

Меню редактора SciNotes содержит следующие элементы:

Файл – включает команды, которые позволяют создавать новый документ, открывать существующий или последний сохраненный документ, и другие.

Правка – включает команды, которые позволяют работать с текстом

вокне редактора: отменить действие, повторить, вырезать, копировать, вставить и другие.

Формат – включает команды, которые позволяют осуществить форматирование документа: сделать или удалить отступ, удалить пробелы в конце строки, сменить регистр, добавить или удалить комментарий, заменить одинарные кавычки на двойные.

Настройка – включает команды, которые позволяют выполнить текущую кодировку файла, настройку шрифтов и цвета.

Окно – включает инструменты копирования или отделения вкладки

вновое окно, включение или отключение разделителя на две колонки и другое.

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

Справка – о редактореSciNotes.

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

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

141

Открыть открывается окно Open (рис.1.5.2-2), в строке Filename которого необходимо ввести имя открываемого файла и щелкнуть по кнопке Open (или вызвать его двойным щелчком в поле текущей директории).

Рис. 1.5.2-2 Окно Open (Открыть)

Запись созданного сценария в sce-файл осуществляется либо командой Сохранить как…элемента меню Файл, либо выбором соответствующего элемента панели инструментов . В открывшемся одноименном окне требуется выбрать путь сохранения программного кода и ввести его имя, а затем щелкнуть по кнопке Save (рис. 1.5.2-3). Следует помнить, что по умолчанию все файлы записываются с расширение *.sce.

Рис. 1.5.2-3 Окно Сохранить как…

Для сохранения программного кода после его редактирования необходимо выполнить команду Сохранить элемента меню Файл или щелкнуть по соответствующему элементу панели инструментов .

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

142

программного кода в окне Редактора можно произвести щелчком по вкладке с именем нужного сценария.

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

Создание, сохранение и выполнение сценариев

Для создания нового сценария достаточно открыть SciNotesи ввести в

команды, например, необходимые для построения простейшего графика

(рис. 1.5.2-4.).

Рис. 1.5.2-4 Сценарий РИС1524, содержащий команды для построения графика

Для сохранения только что созданного сценария следует щелкнуть по элементу инструментальной панели Редактора Сохранить как…, затем в соответствующей строке окна Сохранить ввести имя файла с расширением*.sce, и щелкнуть по кнопке Save. Имя файла появится в окне текущего каталога, а в строке активных файлов вместо имени Безымянный1, появится введенное имя. Например, на рис. 1.5.2-4 показан сценарий РИС1524, созданный в редакторе SciNotes.

Загрузка и запуск сценария, сохраненного в sce-файле, осуществляется из Командного окна по его имени с указанием пути к этому файлу. Желательно предварительно в окне Обозреватель файлов установить путь к папке, где находится сохраненный sce-файл с соответствующим сценарием, то есть сделать эту папку текущей.

Загрузка содержимого sce-файла в оперативную память компьютера осуществляется командой exec, которая может иметь следующие форматы:

143

exec('Путь доступа к файлу\ИмяФайла.sce', РежимОтображения); exec('ИмяФайла.sce', РежимОтображения);

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

Второй парамер функции exec РежимОтображения является необязательным, и может принимать значения 0, 1, -1, 2, 3, 4. Если он равен 0 или 1, то результаты работы инструкций Scilab выводятся в

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

Следует обратить внимание, что при отсутствии параметра РежимОтображения команда execможет заканчиваться символом точка с запятой. Если этот символ отсутствует, то строки программного кода, выполняемого сценария, выводится в Командное окно, а наличие точки с запятой гасит вывод кода сценария.

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

Чтобы выполнить сценарий – РИС1524.sce, который предназначен для построения графика, следует предварительно загрузить файл с именем

РИС1524.sce(рис. 1.5.2-5).

--> // Подключение и выполнениесценарияРИС15204.sce

--> -->clear

-->exec ('РИС15204.sce', 0);

144

Рис. 1.5.2-5 Результат выполнения сценария с именем РИС1524.sce

Сценарии и встроенные функции

Общая структура сценария со встроенными в него внутренними функциями может быть следующей:

//Комментарий, описывающий назначение сценария

...

ТелоСценария

...

Описание встроенных внутренних функций

...

// конец сценария

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

Общая структура описания внутренних встроенных функции с nвходными иkвыходными параметрами имеет следующий формат:

function [y1,…,yk] = ИмяФункции(x1,…,xn)

//Комментарии, описывающие назначение функции и ее параметров

...

ТелоФункции

...

y1 = Выражение1;

...

yk = Выражениеk;

...

endfunction

145

где: x1,…,xk – список входных формальных параметров функции (если функция не имеет входных параметров, тогда после имени функции указываются пустые скобки); y1,…,yn – список выходных формальных параметров (для одного выходного параметра квадратные скобки необязательны); ТелоФункции – содержит команды, операторы и библиотечные функции, необходимые для вычисления выходных параметров. Если вычисленные результаты должны быть в ходе выполнения функции (или ее отладки) отображены в Командном окне, то символ точка с запятой в конце операторов отсутствует, иначе вывод результата гасится символом точки с запятой.

Первая строка описания любой функции начинается с ключевого слова function, вслед за которым в квадратных скобках через запятую указываются имена выходных параметров, далее после знака присвоения (=) указывается уникальное ИмяФункции, а затем в круглых скобках – СписокВходныхФормальныхПараметров функции. Заканчивается описание функции

командой endfunction или end.

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

Обращение к функции может иметь следующие форматы:

[var1,var2,,vark]=ИмяФункции(СписокВходныхФактическихПараметров); var=ИмяФункции(СписокВходныхФактическихПараметров) ИмяФункции(СписокВходныхФактическихПараметров)

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

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

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

По умолчанию все переменные, описанные в теле функции, являются

локальными.

146

Простейшим случаем использования внутренних встроенных функций является сценарий, состоящий из одной функции. Рассмотрим пример создания сценария с описанной внутри него одной функцией fun(x)=ax2+x/2 и одним входным параметром, сохранения этого сценария в sce-файле, загрузки и обращения к нему из Командного окна.

Для этого необходимо выполнить следующие шаги:

1)Загрузить текстовый редактор SciNotes.

2)Описать сценарий со встроенной функцией fun(x)в редакторе.

3)Сохранить сценарий в sce-файл под именем РИС1526.

4)Загрузить сценарий в Командном окне командой exec.

5)Выполнить (вызвать) функцию fun(x).

На рис. 1.5.2-6 показаны окно редактора SciNotesпосле написания сценария, содержащего функцию fun(x), записанного в файл РИС1526.sce. Ниже приведено содержимое Командного окна, из которого происходит загрузка файла-сценария РИС1526, двукратное обращение к встроенной функции fun(x)и в котором отображаются результаты ее вы выполнения.

При выполнении команды fun(x), функция принимает один фактический входной параметр x=5 (переменная xдолжна быть предварительно определена), вычисляет с использованием встроенной в сценарий функции значение по соответствующей формуле и возвращает его через выходной параметр ans. Второе обращение в функции показывает возможность использования функции funв операторе присваивания. Здесь в качестве параметра xиспользовано числовое значение, а результат выполнения присваивается переменной y.

 

 

 

 

--> //

Загрузка файла РИС15206.sce и выполнение функции fun

-->exec('РИС15206.sce',0);

-->

 

 

 

-->clear

 

-->x =

5;

// Определение значения параметра х

-->fun(х)

// Вычисление функции fun(x) при х = 5

ans

=

 

 

 

27.5

 

-->

 

 

 

-->y =

fun(4) // Использование функции в операторе присваивания

y

=

 

 

 

18.

 

 

Рис. 1.5.2-6 Окно SciNotesи Командное окно

147

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

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

В следующем примере, приведенном на рис. 1.5.2-7, представлено описание сценария, включающего одну встроенную функцию с несколькими выходными параметрами. Заметим, что список выходных параметры в заголовке функции заключен в квадратные скобки, а сами параметры отделены друг от друга запятыми. Загрузим файл-сценарий РИС1527.sceи вызовем функцию quadeq, которая должна по заданным коэффициентам квадратного уравнения вычислить его корни.

--> // Загрузка файла РИС15207.sce и выполнение функции quadeq

-->exec('РИС1527.sce', 0); -->

-->clear

--> // Матрицы с заданными коэффициентами трех уравнений

-->A = [1 3 5]; B = [2 4 6]; C = [1 2 4];

--> [X1, X2] = quadeq (A, B, C) // Обращение к функции quadeq X2 =

-1. -0.6666667 - 0.4714045i -0.6 - 0.663325i X1 =

-1. -0.6666667 + 0.4714045i -0.6 + 0.663325i

Рис. 1.5.2-7 Содержимое окна SciNotesи Командного окна после загрузки сценария РИС1527 и выполнения функции quadeq

В двух рассмотренных выше примерах сценарии РИС1526 и РИС1527 были созданы в редакторе SciNotes,загружены и вызваны на выполнение из Командного окна, куда и были выведены результаты.

148

Чтобы запустить на выполнение сценарий из окна редактора SciNotes, достаточно нажать кнопку (Выполнить) или выбрать команду Выполнить в одноименном элементе меню. В результате в строке Командного окна появится команда execc указанием полного пути к файлу, а курсор устанавливается в начале следующей строки.

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

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

входных и выходных параметров.

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

//Имя Сценария и его назначение

Тело сценария

...

functionf1

ТелоФункцииf1 end

functionfm

ТелоФункцииfm end

//end сценария

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

1.5.3. Общая структура функций и сценариев. Области видимости переменных

Общая структура кода сценария

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

149

--> // Загрузка и выполнение вложенных функцией

-->exec('РИС15301.sce', 0); -->clear

--> x = 2;

--> r = mvf(x) r =

2.

Рис. 1.5.3-1 Пример реализации вложенных функцией

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

На рис 1.5.3-2 показано сначала обращение из Командного окна к функции vstfun, использующей функции vfun1 и vfun2, расположенные в сценарии, а затем отдельно к функции vfun2. Этот пример показывает, что все остальные функции, при подключении сценария командой exec становятся доступными для использования в Командном окне.

150