scilab учебник. Учебник Scilab. Учебник Для студентов по дисциплин Базовые средства математических пакетов
Скачать 5.73 Mb.
|
Встроенные в сценарий функция так же, как и сценарий, может содер- жать команды, операторы и другие функции (вложенные), имеет функцио- нальное содержание, более сложную программную структуру и имеет следу- ющие особенности: начинается структура функции с заголовка, а именно, с ключевого слова function , а завершается ключевым словом endfunction или end ; второй строкой должен быть комментарий о ее функциональном назначении; все ключевые шаги всегда необходимо комментировать; может иметь входные и выходные параметры, назначение которые также необходимо комментировать; может содержать вложенные функции; все переменные, описанные в теле функции, являются локальными, то есть действуют только в пределах тела функции (за исключением вложенных функций); в простейшем варианте, как описания функций, так и обращения к ним, могут быть частью сценария (функции могут быть встроенные в сценарий), который может состоять только из описания функций). описания внутренних встроенных функций могут находиться в лю- бых строках сценария. Макрос – это внешняя функция, реализованная средствами языка Scilab, которую можно сохранить в текстовом sci -файле, имеющая такое же имя, что sci -файле, и, загрузив которую в оперативную, память можно выполнить по имени функции. Примитив – это внешняя откомпилированная функция, которая может быть реализована средствами Scilab, C++, Фортран или любого другого языка программирования, причем вызов такой функции осуществляется через спе- циальный шлюз Scilab. В Scilab шлюз – это функция C++ или Fortran, которая позволяет пользователю соединять интерпретатор с набором библиотечных функций, чтением входных параметров, заданных пользователем, и записью выходных аргументов, затребованных пользователем. 158 Далее в этом разделе будут рассмотрены правила описания простейших сценариев и встроенных в них функций, являющихся частью сценария, а также запись их в sce -файлы, загрузку их из файла в оперативную память и выпол- нение загруженных сценариев. Создание же текстовых и откомпилированных библиотек будет рассмотрено в п.1.5.6. Инструментом создания и отладки сценариев и встроенных в сценарии функций является редактор SciNotes. Этот редактор является одним из основ- ных компонентов системы Scilab, и вместе с файловой системой, обеспечива- ющей хранение сценариев, макросов и примитивов, а также алгоритмиче- скими средствами, и является системой программирования Scilab. Обратите внимание, что sce -файлы – это текстовые файлы, в которых могут хра- ниться сценарии, созданные с помощью встроенного редактора SciNotesили любого другого текстового редактора. Прежде чем перейти к правилам описания и вызова сценариев и функ- ций, а также записи их в sce -файлы, рассмотрим элементы редактора SciNotes и их использование при создании и выполнении сценариев и функций. Средства Редактора SciNotes Для работы с редактором его необходимо открыть (активировать). Это можно сделать элементом SciNotes инструментальной панели Scilab, в ре- зультате чего открывается окно редактора SciNotes (рис. 1.5.2-1). Рис. 1.5.2-1 Окно редактора SciNotes для создания сценария Меню редактора SciNotes содержит следующие элементы: Файл – включает команды, которые позволяют создавать новый до- кумент, открывать существующий или последний сохраненный доку- мент, и другие. 159 Правка – включает команды, которые позволяют работать с текстом в окне редактора: отменить действие, повторить, вырезать, копиро- вать, вставить и другие. Формат – включает команды, которые позволяют осуществить фор- матирование документа: сделать или удалить отступ, удалить про- белы в конце строки, сменить регистр, добавить или удалить коммен- тарий, заменить одинарные кавычки на двойные. Настройка – включает команды, которые позволяют выполнить те- кущую кодировку файла, настройку шрифтов и цвета. Окно – включает инструменты копирования или отделения вкладки в новое окно, включение или отключение разделителя на две колонки и другое. Выполнить – включает команды, которые позволяют выполнить со- зданный файл и сохранить в текущем каталоге, а также выполнять выделенную часть файла. Справка – о редакторе SciNotes. Элементы панели инструментов дублируют часто используемые ко- манды меню SciNotes, и позволяют, например, открывать, сохранять, редак- тировать, запускать и осуществлять отладку созданного документа и многое другое. Для редактирования содержимого ранее созданного и записанного в sce - файл сценария и, необходимо открыть этот файл либо выполнив команду От- крыть элемента меню Файл, либо щелкнув мышкой на соответствующий эле- мент панели инструментов , либо двойным щелчком мышки на Имя файла в окне Обозреватель файлов. При использовании команды Открыть открывается окно Open (рис.1.5.2-2), в строке Filename которого необходимо ввести имя открываемого файла и щелкнуть по кнопке Open (или вызвать его двойным щелчком в поле текущей директории). Рис. 1.5.2-2 Окно Open (Открыть) 160 Запись созданного сценария в sce -файл осуществляется либо командой Сохранить как…элемента меню Файл, либо выбором соответствующего эле- мента панели инструментов . В открывшемся одноименном окне требуется выбрать путь сохранения программного кода и ввести его имя, а затем щелк- нуть по кнопке Save (рис. 1.5.2-3). Следует помнить, что по умолчанию все файлы записываются с расширение *. sce Рис. 1.5.2-3 Окно Сохранить как… Для сохранения программного кода после его редактирования необхо- димо выполнить команду Сохранить элемента меню Файл или щелкнуть по соответствующему элементу панели инструментов . Отметим, что одновременно в редакторе могут быть загружено не- сколько сценариев, что отражается на вкладках, расположенных в строке над полем ввода текста, где перечислены имена загруженных и создаваемых сце- нариев. Переход между вкладками с соответствующим отображением про- граммного кода в окне Редактора можно произвести щелчком по вкладке с именем нужного сценария. Следует помнить, что в первых строках любого создаваемого sce -сценария, нужно вво- дить комментарии о назначении программного кода. Создание, сохранение и выполнение сценариев Для создания нового сценария достаточно открыть SciNotes и ввести в команды, например, необходимые для построения простейшего графика (рис. 1.5.2-4.). 161 Рис. 1.5.2-4 Сценарий РИС1524 , содержащий команды для построения графика Для сохранения только что созданного сценария следует щелкнуть по элементу инструментальной панели Редактора Сохранить как…, затем в со- ответствующей строке окна Сохранить ввести имя файла с расширением*. sce , и щелкнуть по кнопке Save. Имя файла появится в окне текущего каталога, а в строке активных файлов вместо имени Безымянный1 , появится введенное имя. Например, на рис. 1.5.2-4 показан сценарий РИС1524 , созданный в редак- торе SciNotes. Загрузка и запуск сценария, сохраненного в sce- файле, осуществляется из Командного окна по его имени с указанием пути к этому файлу. Жела- тельно предварительно в окне Обозреватель файлов установить путь к папке, где находится сохраненный sce -файл с соответствующим сценарием, то есть сделать эту папку текущей. Загрузка содержимого sce -файла в оперативную память компьютера осуществляется командой exec , которая может иметь следующие форматы: exec('Путь доступа к файлу\ИмяФайла.sce', РежимОтображения); exec('ИмяФайла.sce', РежимОтображения); В первом формате указывается полный путь к загружаемому sce -файлу. Этот формат используется, если папка, где находится загружаемый сценарий, не является текущей. Во втором случае указывается только имя файла, при условии, что папка, где находится загружаемый сценарий, является текущей. Второй парамер функции exec – РежимОтображения является необязатель- ным, и может принимать значения 0, 1, -1, 2, 3, 4 . Если он равен 0 или 1 , то результаты работы инструкций Scilab выводятся в Командном окне, а если он равен -1 , то в Командное окно ничего не выводится. Этот параметр позволяет управлять отображением информации в Командном окне в ходе выполнения 162 инструкций Scilab. Вывод строк сценария в Командное окно и результаты ра- боты инструкций Scilab можно также включать и отключать с помощью встро- енной функции Scilab mode Следует обратить внимание, что при отсутствии параметра РежимОтображения команда exec может заканчиваться символом точка с запятой. Если этот символ отсутствует, то строки программного кода, выполняемого сценария, выводится в Командное окно, а наличие точки с запятой гасит вы- вод кода сценария. Следует помнить, что если выполнение сценария требует задания начальных значе- ний для используемых переменных, то это необходимо сделать перед запуском файла сценария на выполнение. Чтобы выполнить сценарий – РИС1524.sce , который предназначен для по- строения графика, следует предварительно загрузить файл с именем РИС1524.sce (рис. 1.5.2-5). --> // Подключение и выполнение сценария РИС15204.sce --> --> clear --> exec ('РИС15204.sce', 0); Рис. 1.5.2-5 Результат выполнения сценария с именем РИС1524.sce Сценарии и встроенные функции Общая структура сценария со встроенными в него внутренними функ- циями может быть следующей: 163 // Комментарий, описывающий назначение сценария ... ТелоСценария ... Описание встроенных внутренних функций ... // конец сценария В отличие от сценариев, функции являются типичными объектами языка программирования высокого уровня, и имеют свою определенную структуру. Общая структура описания внутренних встроенных функции с n входными и k выходными параметрами имеет следующий формат: function [y1,…,yk] = ИмяФункции(x1,…,xn) // Комментарии, описывающие назначение функции и ее параметров ... ТелоФункции ... y1 = Выражение1; ... yk = Выражениеk; ... endfunction где: x1,…,xk – список входных формальных параметров функции (если функ- ция не имеет входных параметров, тогда после имени функции указываются пустые скобки); y1,…,yn – список выходных формальных параметров (для од- ного выходного параметра квадратные скобки необязательны); ТелоФункции – содержит команды, операторы и библиотечные функции, необходимые для вычисления выходных параметров. Если вычисленные результаты должны быть в ходе выполнения функции (или ее отладки) отображены в Командном окне, то символ точка с запятой в конце операторов отсутствует, иначе вывод результата гасится символом точки с запятой. Первая строка описания любой функции начинается с ключевого слова function , вслед за которым в квадратных скобках через запятую указываются имена выходных параметров, далее после знака присвоения ( = ) указывается уникальное ИмяФункции , а затем в круглых скобках – СписокВходныхФормальныхПараметров функции. Заканчивается описание функции командой endfunction или end. Следует напомнить, что функция может не иметь входных параметров, тогда после имени функции указываются пустые скобки. Обращение к функции может иметь следующие форматы: [var1,var2,…,vark]=ИмяФункции(СписокВходныхФактическихПараметров); var=ИмяФункции(СписокВходныхФактическихПараметров) ИмяФункции(СписокВходныхФактическихПараметров) 164 Первый формат предусматривает необходимость вычисления в теле функции k значений, которые в результате выполнения функции присваива- ются k выходным параметрам и выводятся на экран (или только сохраняются под их именами в случае, если после обращения к функции стоит точка с за- пятой, которая гасит их вывод). Второй формат используется, если функция имеет только один выход- ной параметр. Формат практически идентичен первому, но здесь имя выход- ного параметра можно не заключать в квадратные скобки. Третий формат обращения к функции используется в двух случаях. В первом случае функция имеет один выходной параметр, но он не используется в выражениях (в этом случае значение выходного параметра записывается в переменную ans ). Во втором случае функция не имеет выходных параметров, а, например, предназначена для вывода результатов расчета (построение гра- фика, таблицы значений и т.п.). По умолчанию все переменные, описанные в теле функции, являются локальными. Простейшим случаем использования внутренних встроенных функций является сценарий, состоящий из одной функции. Рассмотрим пример созда- ния сценария с описанной внутри него одной функцией fun(x)=ax 2 +x/2 и одним входным параметром, сохранения этого сценария в sce -файле, загрузки и об- ращения к нему из Командного окна. Для этого необходимо выполнить следующие шаги: 6) Загрузить текстовый редактор SciNotes. 7) Описать сценарий со встроенной функцией fun(x) в редакторе. 8) Сохранить сценарий в sce -файл под именем РИС1526 9) Загрузить сценарий в Командном окне командой exec 10) Выполнить (вызвать) функцию fun(x) На рис. 1.5.2-6 показаны окно редактора SciNotes после написания сце- нария, содержащего функцию fun(x) , записанного в файл РИС1526.sce. Ниже приведено содержимое Командного окна, из которого происходит загрузка файла - сценария РИС1526, двукратное обращение к встроенной функции fun(x) и в котором отображаются результаты ее вы выполнения. При выполнении команды fun(x) , функция принимает один фактиче- ский входной параметр x=5 (переменная x должна быть предварительно опре- делена), вычисляет с использованием встроенной в сценарий функции значе- ние по соответствующей формуле и возвращает его через выходной пара- метр ans . Второе обращение в функции показывает возможность использова- ния функции fun в операторе присваивания. Здесь в качестве параметра x использовано числовое значение, а результат выполнения присваивается пе- ременной y 165 --> // Загрузка файла РИС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 и Командное окно Тело функции может включать в себя любые выражения Scilab, функции ввода/вывода, операторы управления, комментарии, пустые строки и вложен- ные функции и многое другое. Обратите внимание, что любые переменные, которые определены в функциях, хра- нятся в своих локальных Рабочих областях данных каждой функции, то есть от- дельно от Рабочей области Обозревателя переменных, в которой хранятся только пе- ременные, определенные в Командном окне и сценариях. В следующем примере, приведенном на рис. 1.5.2-7, представлено опи- сание сценария, включающего одну встроенную функцию с несколькими вы- ходными параметрами. Заметим, что список выходных параметры в заголовке функции заключен в квадратные скобки, а сами параметры отделены друг от друга запятыми. Загрузим файл-сценарий РИС1527.sce и вызовем функцию quadeq , которая должна по заданным коэффициентам квадратного уравнения вычислить его корни. |