Главная страница

scilab учебник. Учебник Scilab. Учебник Для студентов по дисциплин Базовые средства математических пакетов


Скачать 5.73 Mb.
НазваниеУчебник Для студентов по дисциплин Базовые средства математических пакетов
Анкорscilab учебник
Дата05.05.2022
Размер5.73 Mb.
Формат файлаpdf
Имя файлаУчебник Scilab.pdf
ТипУчебник
#513983
страница14 из 21
1   ...   10   11   12   13   14   15   16   17   ...   21
реализовать алгоритм решения поставленной задачи, или иначе, представить алгоритм в виде понятных компьютеру ука- заний того, что и в какой последовательности необходимо делать. К сожале- нию, компьютеры не умеют понимать словесное описание алгоритма, поэтому необходимо превратить его в абсолютно точный набор инструкций (команд), которые однозначно будут интерпретироваться компьютером. Для этого и были созданы языки программирования. Причем процесс создания ПП прошел путь от программирования в инструкциях процессора (машинных командах), через программирование на низкоуровневых языках (языках ассемблера) до программирования на языках высокого уровня и специализированных про- граммных систем.
Уровень в данном случае – это уровень машинного восприятия. Так, языки низкого уровня (ассемблер) по возможности приближены к компью- теру, что делает соответствующие программы особенно эффективными с точки зрения их быстродействия. Однако существенная проблема использова- ния таких языков заключается в том, что разработчик ПП – прежде всего че- ловек, и его способы восприятия информации весьма далеки от машинных, что

151 чрезвычайно затрудняет написание элементов ПП на ассемблере. Подавляю- щее большинство ПП реализованы на языке программирования высокого уровня.
С языками программирования тесно связаны понятия синтаксиса и се-
мантики:

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

семантика – это система правил истолкования отдельных языковых конструкций, которая и определяет смысловое значение предложе- ний алгоритмического языка.
Язык программирования – это искусственный (формальный) язык, пред- назначенный для записи алгоритмов. Язык программирования задается своим описанием и реализуется в виде специальных программ: трансляторов
(компиляторов или интерпретаторов).
Под транслятором обычно понимают специальную систему программ, которая переводит исходный программный код, написанный на языке про- граммирования, в последовательность машинных команд – команд процес- сора.
Трансляторы универсальных языков программирования высокого уровня, таких как C++, C#, VB и другие, обычно являются компиляторами.
Этим подчёркивается общепринятый для подобных языков режим трансля- ции, при котором вначале осуществляется перевод программного кода в дво- ичное представление, в так называемый хранимый в памяти компьютера объ- ектный модуль, а лишь затем этот модуль передаётся на исполнение.
Другой способ трансляции, называемый интерпретацией, который со- стоит в совмещении перевода и исполнения программного кода (в этом случае объектный модуль не хранится в памяти компьютера и его, соответственно, нельзя повторно использовать). Другими словами
, интерпретация означает, что каждая инструкция программы распознается (транслируется в машинные команды) и тут же исполняется, а программные модули существуют лишь в виде исходных текстовых файлов. В этом случае для выполнения программ- ного кода необходима среда системы программирования.
Уже в самом начале развития методов и средств разработки ПП стал при- меняться простой и эффективный приём выделения часто используемых алго- ритмов в самостоятельные программные элементы – модули и процедуры, ко- торые в свою очередь стали объединять в так называемые библиотеки проце- дур. Примером могут служить процедуры вычисления элементарных функций
(синус, косинус и др.), а также процедуры обмена с внешними устройствами компьютера. Однажды созданные и откомпилированные, они в дальнейшем могут применяться разработчиками ПП в своих задачах путём подсоединения

152 их к разработанному программному коду основного алгоритма. В более широ- ком плане эта идея нашла своё выражение в технологии модульного и проце- дурного программирования, которая заложена во всех современных системах программирования. Важно, что для создания загрузочного модуля, состоящего из множества оттранслированных программ, в том числе из библиотек, требу- ются специальные средства. Для этого в состав системы программирования входит программный модуль, называемый редактором связей, обеспечиваю- щий поиск необходимых процедур в библиотеках и присоединяющий их к ос- новному программному коду пользователя.
Поскольку в основе любой среды системы программирования лежат различные технологии, в том числе технологии структурного, процедурного,
визуального и объектно-ориентированного программирования, то в первую очередь необходимо следовать правилам этих технологий. Эти технологии – всего лишь инструменты, которыми можно пользоваться при разработке ПП
[
18
].
Совокупность идей и понятий, определяющих стиль написания про- грамм – это парадигма программирования. Парадигма, в первую очередь, определяется базовой программной единицей и самим принципом достиже- ния модульности программы.
Она определяет и то, в каких терминах описывается логика программы.
Так, в традиционном императивном программировании программа описыва- ется как последовательность действий, а в объектно-ориентированном про- граммировании (ООП) программу принято рассматривать как набор взаимо- действующих объектов. ООП есть, по сути, императивное программирование, дополненное принципом модульности (инкапсуляции данных и методов в объ- екте) и наследованием (принципом повторного использования разработанного функционала) [
18
]. Сами же методы (процедуры) разрабатываются на принци- пах императивного программирования.
Процедурное программирование – это парадигма программирования, основанная на концепции описания и вызова процедур. Процедуры также из- вестны как подпрограммы, методы или функции. Процедурное программиро- вание заключается, прежде всего, в выделении из общего программного кода его некоторых функциональных фрагментов в отдельные блоки (называемые процедурами), которое не только упрощает понимание алгоритма программы в целом, но и, как правило, сокращает код программы за счет удаления из нее многократно повторяющихся фрагментов. В результате разделения программ- ного кода на понятные специализированные функциональные блоки код про- граммы становится значительно проще в понимании, отладке и обслуживании.
В ходе выполнения такой программы любая процедура может быть вызвана произвольное число раз.
Структурное программирование – это методология разработки ПП, в основе которой лежит представление программного кода в виде базовых про-
граммных конструкций. В соответствии с этой методологией [
19
]:

153 1) Программный код представляет собой структуру, построенную из трёх типов базовых конструкций: последовательность – однократное выпол- нение операций в том порядке, в котором они записаны в тексте программы;
разветвление – однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия; цикл – многократ- ное исполнение одной и той же операции до тех пор, пока выполняется неко- торое заданное условие. В программе базовые конструкции могут быть вло- жены друг в друга произвольным образом, но никаких других средств управ- ления последовательностью выполнения операций не предусматривается.
2) Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные функциональные блоки) могут оформляться в виде процедур (подпрограмм или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова процедуры. При выполнении такой инструк- ции выполняется вызванная процедура, после чего исполнение программы продолжается с инструкции, следующей за командой вызова процедуры.
3) Разработка ПП ведётся пошагово, методом «сверху вниз».
Технология нисходящего проектирования с пошаговой детализацией является неотъемлемой частью создания хорошо структурированных про- грамм. При написании программы с использованием этой технологии вся за- дача рассматривается как единственное предложение (вершина), выражающее общее назначение программы. Вершина разделяется на ряд более мелких за- дач (функций) в том порядке, в котором эти задачи должны выполнятся. В ре- зультате получим первую детализацию. Далее каждая из подзадач разбивается на подзадачи, принадлежащие второму уровню детализации. Этот процесс называется – функциональной декомпозиций. Программист завершает про- цесс нисходящей разработки с пошаговой детализацией, когда алгоритм настолько детализирован, что его можно преобразовать в программу.
При декомпозиции используются только три указанные выше базовые управляющих конструкции (последовательность, разветвление, цикл), что позволяет говорить о структурной декомпозиции или структурном проек-
тировании программ.
Таким образом, пошаговая реализация программы – это тактика её раз- работки, а нисходящее проектирование – это стратегия программирования.
Для изучения базовых средств программирования будем использовать простейшие алгоритмы, реализованные в Scilab, как функции пользователя
(
sce
-функции).
Подход к решению задач с ориентацией на разработку функций включает в себя следующие основные этапы, часть из которых осуществля- ются до использования компьютера:

154 1) Постановка задачи. Этап включает в себя: сбор информации о задаче; определение конечных целей решения задачи; определение формы выдачи результатов; описание данных.
2) Анализ и исследование задачи. На этом этапе анализируются существующие аналогичные задачи; разрабатывается математическая модель задачи; осуществляется формализация; определяются структуры данных.
3) Разработка алгоритма. Этап заключается в выборе формы записи алгоритма и в последующем процессе разработки алгоритма и его описания.
4) Программирование (Разработка программного кода). На этом этапе вначале осуществляется выбор и уточнение способов организации данных, а затем разрабатывается программный код, описывающий разработанный алгоритм.
5) Отладка и тестирование. При тестировании и отладке выявляют синтаксические, семантические (смысловые) и логические ошибки, допущенные при разработке алгоритма и программировании. Анализ результатов тестирования позволяет устранить все выявленные семантические и логические ошибки.
6) Анализ
результатов решения задачи. На этом этапе осуществляется выполнение прикладной программы при реальных исходных данных. В результате анализа результатов возможно уточнение математической модели и повторение этапов 2-5.
Процесс алгоритмизации заключается в описании необходимой после- довательности действий, с помощью которой можно однозначно реализовать выбранный метод решения задачи. На практике только очень простые задачи представляются в виде известной последовательности арифметических или логических действий. Для большинства задач перед написанием программы требуется разработать соответствующую последовательность действий, при- водящую к решению задачи, то есть алгоритм ее решения. Причем, при разра- ботке алгоритма сложной задачи целесообразно провести декомпозицию вы- числительного процесса, составить укрупненную схему алгоритма с целью вы- явления типовых участков алгоритма и использования для их реализации стан- дартных или ранее разработанных алгоритмов (процедурное программирова-
ние). Заметим, что время, потраченное на разработку вначале укрупненного, а затем детального алгоритма, полностью окупается при программировании и отладке программы.
Алгоритм формально можно определить, как точное предписание (дей- ствие, группу действий), определяющее процесс преобразования исходных
данных в результат. Из определения алгоритма вытекают и его основные свойства:

155

детерминированность – однозначность получения результата при одних и тех же исходных данных;

результативность – обязательность получения искомого резуль- тата за конечное число шагов;

массовость – возможность получения результата при различных исходных данных рассматриваемого класса задач;

дискретность – возможность разбиения алгоритма на отдельные элементарные действия, позволяющие рассматривать алгоритм с различным уровнем детализации.
Уже упоминалось, алгоритмы реализуются при разработке программ- ного кода на основе базовых алгоритмических структур, которые подробно бу- дут рассмотрены в п. 1.5.4.
В п. 1.2-1.4 был рассмотрен интерактивный режим работы системы
Scilab в Командном окне и средства (объекты) Scilabэтого режима – команды, операторы и функции, которые являются объектами входного языка общения с системой Scilabв командном режиме
Большинство объектов входного языка
общения с системой Scilabв командном режиме одновременно являются и объектами языка программирования системы Scilab.
Различие между командами, выполняемыми при вводе с клавиатуры в
Командном окне, и программными операторами, выполняемыми при вызове процедур, является условным. Эта условность связана с выбором между про-
цедурной и функциональной технологиями программирования. Предполага- ется, что модули, процедуры и функции во всех языках программирования вы- сокого уровня имеют возможность храниться в библиотечных файлах. Кроме того, важно, что в современных системах программирования программный код может менять структуру заданного алгоритма вычислений в зависимости от входных данных и данных, полученных в ходе вычислений.
С позиций разработчика ПП язык программирования системы Scilab яв- ляется типичным проблемно-ориентированным языком программирования
высокого уровня интерпретирующего типа. Точнее говоря, он является язы-
ком сверхвысокого уровня, содержащим сложные операторы и функции, реа- лизация которых на обычных универсальных языках программирования
(например, Visual Basic, С# или Си++) потребовала бы дополнительных уси- лий и времени. Такой высокий уровень языка программирования Scilab опре- деляется и тем, что базовыми структурами данных являются матрицы, а
базовыми программными единицами функции. Причем над матрицами ре- ализованы как алгебраические, так и поэлементные операции.
Практически все программные структуры Scilab, операторы и функции являются средствами языка программирования. По числу математических и графических средств Scilab значительно превосходят VB, C++, JAVA и многие

156 другие, а кроме того система содержит и все необходимые типовые средства программирования, такие как условные выражения, циклы, операторы ввода/вывода и др.
В п.п.1.5.2, 1.5.3 будут рассмотрены базовые программные единицы си- стемы программирования Scilab, правила их описания и вызова, а в
п.1.5.4 алгоритмические операторы Scilab и базовые программные струк-
туры.
1.5.2. Функциональные структуры –
сценарий, функция и средства их создания
Уровни функциональных программных структур
Использование системы Scilab только в режиме непосредственного рас- чета в Командном окне явно недостаточно для решения сложных задач. По- скольку программы, реализующие сложные алгоритмы, создаются, как пра- вило, в соответствии с принципом процедурного программирования, то оче- видно необходимо иметь системные и программные средства, позволяющие создать функциональные программные структуры, и средства, обеспечиваю- щие их хранение в текстовых и откомпилированных библиотечных файлах, их загрузку в оперативную память и выполнения.
В соответствии с концепцией разработчиков в системе Scilab имеется три уровня функциональных структур, из которых можно построить различ- ные приложения. Это – Сценарий, Макрос и Примитив [
13
].
Сценарий – это фрагмент программного кода, который можно сохранить в текстовом
sce
-файле, а затем загрузить с помощью функции
exec
и выпол- нить сразу после загрузки.
Сценарии в Scilab предназначены для выполнения различного рода за- дач
. Они могут осуществлять подготовку данных для предстоящих вычисле- ний (инициализировать переменные и осуществлять их логическую проверку); выполнять вспомогательные действия (подгружать различные библиотеки и т.п.); проводить технические расчеты, а также осуществлять ввод и вывод дан- ных расчетов в виде таблиц, инструкций и графиков.
Сценарий – это заранее определенная последовательность инструкций
Scilab, практически он является подобием сессии Командного окна, и поэтому все инструкции, загруженные из файла, могут быть выполнены точно так же, как если бы вы их вводили с клавиатуры в Командном окне.
В начало текста сценария рекомендуется вставлять комментарий о его функциональном назначении и комментировать все его ключевые шаги. Также рекомендуется команду
clear
, предназначенную для очистки содержимого окна Обозреватель данных от данных, используемых в предыдущей сессии.

157
Особенности сценария состоят в том, что он:

хранится в
sce
-файлах с уникальным именем;

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

работает с переменными из Рабочей области (за исключением пере- менных, описанных во внутренних функциях этого сценария);

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

может содержать внутренние встроенные в сценарий функции поль- зователя;

строки нумеруются автоматически.
1   ...   10   11   12   13   14   15   16   17   ...   21


написать администратору сайта