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

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


Скачать 5.73 Mb.
НазваниеУчебник Для студентов по дисциплин Базовые средства математических пакетов
Анкорscilab учебник
Дата05.05.2022
Размер5.73 Mb.
Формат файлаpdf
Имя файлаУчебник Scilab.pdf
ТипУчебник
#513983
страница4 из 21
1   2   3   4   5   6   7   8   9   ...   21
конкатенации (объединения), которая обозначается символом плюс (
+
)
(рис.1.2.4-2).

45
--> // Объединение строк
-->
--> a = 'Система'; b = "Scilab";
--> c = a +' ' + b c =
Система Scilab
Рис.
1.2.4-2. Выполнение над строками операции конкатенации
В системе Scilab имеется множество встроенных функций обработки строковых типов данных. Наиболее востребованными функциями, которые используются при работе со строками, являются функции
string
и
strtod
Функция
string
позволяет преобразовать свой входной параметр из любого типа данных в строку символов, а функция
strtod
позволяет преобразовать свою входную строку цифровых символов в число (рис. 1.2.4-3).
--> // Использование строковых функций
--> x = [1 2 3 4 5]; // Вектор х
-->
--> // Пример1. Преобразование х в строку
--> str = string(x) str =
!1 2 3 4 5 !
-->
--> // Пример2. Определение типа str
--> typeof(str) ans = string
-->
--> // Пример3. Str - матрица размером 1х5
--> size(str) ans =
1.
5.
-->
--> // Пример4. Преобразование '10' в число
--> a = 2;
--> c1 = a + strtod('10') c1 =
12.
Рис. 1.2.4-3 Примеры использования строковых функций
В
Примере1
вектор чисел
х
преобразован в массив строк
str
с использо- ванием функции
string
, где каждая строка массива состоит из одного символа.
Затем, в
Примере2
с использованием функции
typeof
проведена проверка того, что переменная
str
действительно является строкой, а в
Примере3
использо-

46 вана функция
typeof
,
выполнение которой показало, что переменная
str
явля- ется матрицей строк размером
1×5
. В
Примере4
показано преобразование стро- ковой константы
'10'
в число
10.
Рассмотрим еще одну функцию, которая используется при работе со строками. Функция
strcat
объединяет свой первый входной аргумент с разде- лителем, определённым во втором входном аргументе (рис. 1.2.4-4). В приве- денном примере функция
strcat
используется для получения новой строки.
--> // Использования функций strcat
-->
--> strcat(["1" "2" "3" "4" "5"]," + ") ans =
1 + 2 + 3 + 4 + 5
Рис.
1.2.4-4 Пример использования функций
strcat
Форматирование строковых данных
При выводе данных в удобном для пользователя формате в Scilab име- ется несколько функций, позволяющих выполнить преобразование произволь- ных типов данных в текстовые данные и производить управление их форма- том:

mprintf
– преобразует, форматирует и отображает данные в командном окне;

mfprintf
– преобразует, форматирует и записывает данные в файл;

msprintf
– преобразует, форматирует и записывает данные в строку.
Форматирование в этих функциях (выравнивание, число значащих цифр и так далее) осуществляется с использованием определенных элементов
нотаций (системой условных обозначений). Они аналогичны тем, которые используются для форматирования строковых данных в языке C++. Напри- мер, формат
%f
преобразует значения с плавающей точкой к соответствую- щему строковому формату, а формат
%.2f
, представляют две цифр после деся- тичного знака, формат
%12f
представляет при выводе
12
символов, заполняя по мере необходимости незначащие символы пробелами. Кроме того, имеется возможность комбинировать элементы формата с обычным текстом и специ- альными непечатными управляющими символов

escape
-символами, такими, например, как символ новой строки
\n
Строка, содержащая элементы форматирования, может иметь шесть эле- ментов. Справа налево эти элементы представляют: символ преобразования,
подтип, точность, ширина поля, флаги и числовой идентификатор.
В общем виде функции форматирования данных имеют следующий вид:
mprintf(Формат,СписокПеременных);
mfprintf(Формат,СписокПеременных);

47
msprintf(Формат,СписокПеременных)
.
Работу перечисленных выше функций рассмотрим на примере функции
mprintf:
Строка=mprintf(Формат,СписокПеременных), где
Строка
– строковая переменная
;
Формат
– параметр, который является стро- кой, содержащей символы преобразования (форматирования);
СписокПеременных

список переменных, значения которых необходимо отобразить в соответству- ющем формате
.
Каждый
Формат является строкой символов, который начинается с сим- вола
%
, и сообщает всё о переменной, значение которой нужно подставить: её тип и модификаторы (ширина, точность, размер):
Формат='%ФлагиШирина.ТочностьРазмерТип'.
Ни один из перечисленных элементов не является обязательным, кроме элемента
Тип
, а часть элементов формата относятся только к некоторым типам данных. Например, ширина, точность и размер – относятся только к числам.
Обратите внимание на то, что в элементах формата не допускаются пробелы, при-
чем символ преобразования является единственным обязательным полем, наряду с ве-
дущим символом
%
.
Рассмотрим основные допустимые символы преобразования строки
Формат подробнее
В соответствии с синтаксисом, формат преобразования начинается с символа
%
и содержит следующие необязательные и обязательные элементы:

флаги (необязательно);

поля ширины и точности (опционные);

спецификатор подтипа (необязательно);

символ типа (преобразования) (обязательный).
Эти элементы задаются в порядке, показанном в примере на рис. 1.2.4-5
Рис. 1.2.4-5 Пример строки форматирования

48
Символы преобразования, указывающие нотацию (систему условных обозначений) для преобразования выходных данных, приведены в
табл. 1.2.4-1.
Символы преобразования и примеры их применения. Таблица 1.2.4-1
Символ
Описание
%c
Выводит одиночный символ
%d
Выводит десятичное число
%e
Выводит десятичные числа с плавающей точкой в экспоненциальном виде
%E
Так же, как %e, но, используя прописные
%f
Выводит десятичные числа с плавающей запятой
%g
Более компактное %e или %f, незначительные нули не выводятся.
%G
Выводит десятичного целого числа (представление числа с основанием 10)
%i
Выводит целую часть десятичного числа (представление числа с основанием 10)
%s
Выводит строку символов
%u
Выводит целую часть десятичного числа без знака (представление числа с основа- нием 10)
Ширина и точность поля позволяют управлять шириной и точностью вы- ходных данных
(табл. 1.2.4-2).
Ширина и точность полей. Таблица 1.2.4-2
Характер
Описание
Пример
Ширина поля
Строка цифр, указывающая минимальное ко- личество цифр для печати
('%5d', 0) 0
('%5d', 7) 7
('%5d', -9) -9
('%5d', 45622) 45622
('
%5d', 4562237) 45622
Точность
Строка цифр, включающая точку (.) указание количества цифр, которые должны быть напечатаны справа от десятичной точки
('
%.0f
', e) 3
('
%.0f.
', e) 3
('
%.1f
', e) 2.7
('
%.2f
', e) 2.72
('
%.5f
', e)
2.71828
('
%f
', e)
2.718282
Например, если указать спецификатор формата
%5d
, то будет гарантиро- вано, что вывод числа всегда занимает
5
символьных позиций (если нужно, то больше, но не меньше). Эта возможность очень полезна при печати таблиц, потому что и большие, и маленькие числа займут в строке одинаковое число позиций.

49
Следует иметь в виду, что результат вывода будет дополнен до необхо- димой указанной ширины слева. При этом большие числа, которые требуют для печати большее количество символов, будут выведены полностью.
Поле опции ширины должно быть указано таким, чтобы удовлетворять максимальному размеру ожидаемого выводимого числа. Например, если числа могут состоять из 1, 2 или максимум
3
цифр, то формат
%3d
подойдет.
Опция ширины будет работать неправильно, если потребуется отобразить слишком большое число, которое не умещается в заданной ширине поля.
Числа с плавающей точкой (например,
3.1415
) содержат точку, тогда как числа целого типа (например,
27
) не имеют такой точки. Для печати чисел с плавающей точкой (
double
) флаги и правила работают точно так же, как и для целых чисел, но имеют несколько новых опций. Самая важная опция указы- вает, какое количество цифр может появиться после десятичной точки. Это количество цифр называется точностью (
precision
) числа.
Втабл. 1.2.4-3 приведены примеры возможных вариантов вывода числа
e=2.718281828
Флаги форматирования. Таблица 1.2.4-3
Характер
Описание
Пример
Знак минус (-)
Левое выравнивание
(
'
%-5.1f
', e) 2.7__
Знак плюс (+)
Всегда печатает знак (+или -)
(
'
%+5.1f
', e) _+2.7
Ноль (0)
Отображаются нул, а не пробелы
(
'
%05.1f
', e) 002.7
Знак плюс (+) или (-)
(
'
%+-5.1f
', e) _+2.7_
Знак плюс (+) и ноль (0)
(
'
% 05.1f
', e) +02.7_
Обратите внимание, что если в качестве элементов формата указаны точка и число, то
precision
указывает, сколько десятичных знаков должно по- явиться после десятичной точки.
Если точка для
%f
не указана
,
то по умолчанию будет приведен формат
%.6f
(
6
цифр после десятичной точки).
Если указано
precision
равное
0
, то десятичная точка также исчезает.
Для того чтобы ее вернуть, нужно после спецификатора формата
%f
указать ее в виде простого текста.
Можно в одном спецификаторе формата указать одновременно и ши- рину (
width
), и точность (
precision
). Например,
5.2
означает общую длину
5
, с
2
цифрами после десятичной точки. Самая распространенная ошибка, когда считают, что это означает
5
цифр до точки и
2
цифры после точки.
Флаги позволяют управлять выравниванием выходных данных с помо- щью дополнительных флагов.
Ширину и точность
с флагами можно комбинировать, чтобы указать левое выравнивание, дополнение слева нулями и применение знака
+
, - и т. д.

50
До или после операторов форматирования, перед знаком процента
%
или после преобразования, можно включать дополнительный текст. Причем этот текст может быть, как обычным текстом (текст для печати), так и текстом, со- стоящим из специальных символов, который нельзя вывести как обычный текст.
В табл.1.2.4-4 показаны допустимые специальные непечатные символы.
Таблица 1.2.4-4
Символ
Влияние на текст
''
Одиночная кавычка
%%
Одиночный знак процента
\\
Однократная обратная косая черта
\a
Аварийная сигнализация
\b
Возврат на одну позицию
\n
Новая строка
\r
Возврат каретки
\t
Горизонтальная табуляция
\v
Вертикальная табуляция
\xN
Шестнадцатеричное число, N
\N
Восьмеричное число, N
Рассмотрим несколько примеров форматирования, представленных на рис. 1.2.4-6.
-->
// Примеры форматированного вывода
-->
--> // Пример1. Использование символов %s для вывода текста
--> t ='Текст';
--> mprintf('%s' ,t)
Текст
-->
--> // Пример2. Использование символов %f для вывода числа
--> x = 234.2;
--> mprintf('%6.2f', x)
234.20
-->
--> // Пример3.Вывод элементов матрицы в различных форматах
--> A = %pi * 1000 * ones(1,4) // ones(1,4) – создание матрицы из 1
A =
3141.5927 3141.5927 3141.5927 3141.5927
-->
--> mprintf('%f\n%9.2f\n%+12.5f\n%12.2f\n' ,A) ans =
!3141.592654 !
! !
! 3141.59 !
! !

51
! +3141.59265 !
! !
! 3141.59 !
Рис. 1.2.4-6 Примеры использования функции
mprintf
В
Примере1
для вывода строки (текста) использованы символы
%s
. В
Примере2
для вывода значения числовой переменной использован символ
%f
. В
Примере3
создается вектор
А
, состоящий из четырех элементов
, а затем каждый элемент вектора выводится в своем числовом формате
%f
. Если формат содер- жит знак плюс (
+
), число выводится со знаком плюс, если использован формат
%n.mf
, то число при выводе состоит из
n
знаков, из которых
m
– число знаков после запятой. Использование управляющих символов
\n
позволяет вывести каждый элемент вектора с новой строки.
1.2.5 Функциональные структуры –
сценарий, функция и средства их создания
Уровни функциональных программных структур
Использование системы Scilab только в режиме непосредственного рас- чета в Командном окне явно недостаточно для решения сложных задач. По- скольку программы, реализующие сложные алгоритмы, создаются, как пра- вило, в соответствии с принципом процедурного программирования, то оче- видно необходимо иметь системные и программные средства, позволяющие создать функциональные программные структуры, и средства, обеспечиваю- щие их хранение в текстовых и откомпилированных библиотечных файлах, их загрузку в оперативную память и выполнения.
В соответствии с концепцией разработчиков в системе Scilab имеется три уровня функциональных структур, из которых можно построить различ- ные приложения. Это – Сценарий, Макрос и Примитив [
13
].
Сценарий – это фрагмент программного кода, который можно сохранить в текстовом
sce
-файле, а затем загрузить с помощью функции
exec
и выпол- нить сразу после загрузки.
Сценарии в Scilab предназначены для выполнения различного рода за- дач
. Они могут осуществлять подготовку данных для предстоящих вычисле- ний (инициализировать переменные и осуществлять их логическую проверку); выполнять вспомогательные действия (подгружать различные библиотеки и т.п.); проводить технические расчеты, а также осуществлять ввод и вывод дан- ных расчетов в виде таблиц, инструкций и графиков.
Сценарий – это заранее определенная последовательность инструкций
Scilab, практически он является подобием сессии Командного окна, и поэтому

52 все инструкции, загруженные из файла, могут быть выполнены точно так же, как если бы вы их вводили с клавиатуры в Командном окне.
В начало текста сценария рекомендуется вставлять комментарий о его функциональном назначении и комментировать все его ключевые шаги. Также рекомендуется команду
clear
, предназначенную для очистки содержимого окна Обозреватель данных от данных, используемых в предыдущей сессии.
Особенности сценария состоят в том, что он:

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

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

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

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

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

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

начинается структура функции с заголовка, а именно, с ключевого слова
function
, а завершается ключевым словом
endfunction
или
end
;

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

все ключевые шаги всегда необходимо комментировать;

может иметь входные и выходные параметры, назначение которые также необходимо комментировать;

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

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

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

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

53
1   2   3   4   5   6   7   8   9   ...   21


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