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

_2_учебн_пособ_SciLab

.pdf
Скачиваний:
31
Добавлен:
20.04.2015
Размер:
157.93 Кб
Скачать

3.СЦЕНАРИИ И ФОРМАТНЫЙ ВЫВОД

3.1.Файлы сценариев

Файл сценария это список команд SciLab, сохраняемый на диске. Для создания сценария служит редактор SciPad. Scipad вызыватся командой Editor из меню SciLab. Для сохранения содержимого сценария необходимо вызвать команду File - Save из меню SciPad-редактора (или комбинацию клавиш Ctrl-S) и записать файл с раcширением .sce.

Выполнить сценарий можно двумя способами:

1)Командой Execute → Load into SciLab из меню редактора SciPad (или комбинацией клавиш Ctrl-I) содержимое окна SciPad выполняется в окне SciLab.

2)Командой File → Exec… из меню окна SciLab содержимое файла с расширением .sce выполняется в окне SciLab.

Если в сценарии была сделана синтаксическая ошибка, SciLab выполняет программу до ошибочной команды и выдаёт сообщение об ошибке с указанием номера строки. После этого надо исправить ошибку, и заново запустить сценарий на выполнение. И так до тех, пор пока не будут исправлены все ошибки.

Всценарии можно обращаться к переменным, заданным в окне SciLab до запуска сценария. И, наоборот, все переменные, созданные во время работы сценария, остаются в памяти SciLab и после окончания выполнения сценария.

Всценариях можно помещать комментарии, начинающиеся с символов //.

3.2.Диалоговое взаимодействие сценариев с пользователем

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

Диалоговый ввод значения: x = input(‘Приглашение’);

При выполнении этой команды в основное окно выводится строка приглашения, затем происходит остановка работы программы и ожидается ввод значения x. Ввод подтверждается нажатием на клавишу Enter, после чего введённое число присваивается переменной x.

Ввод строк: Str = input(‘Приглашение’,’s’);

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

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

Для диалогового ввода массива используется функция input

M=input(‘Введите массив ‘)

В ответ на приглашение в командном окне вводится массив в квадратных скобках: Введите массив--> [10 20 30]

M=

10.20. 30.

2

Если на приглашение просто нажать Enter, то сформируется пустой массив.

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

Вывод значений:

x=5.0; // если не ставить «;», выводится имя переменной и значение disp(x) // вывод значения переменной

Вывод строки: disp(‘выводимая строка’)

При использовании disp для массива имя массива не выводится: disp(M)

10.20. 30.

Файл сценария

Вывод в основное окно после

 

запуска

r=input('Ведите радиус r =');

Ведите радиус r = 2

 

(Вводим число 2 и нажимаем кла-

 

вишу Enter)

disp('Длина окружности:')

Длина окружности

disp(2*%pi*r)

12.566371

3.3. Функция mprintf форматного вывода

mprintf(‘форматная строка’, список значений);

Форматная строка кроме обычных символов может содержать спецификаторы формата (%) и управляющие символы (\).

%d

Целое число (если число вещественное, выводится его целая часть)

%f

Вещественное число в фиксированном формате (по умолчанию 6 зна-

%e

ков после десятичной точки, если число целое, то выводится 6 нулей)

Вещественное число в экспоненциальном формате

%g

Вывод числа в наиболее компактной форме (либо в виде %e, либо в

%s

виде %f, либо в виде %d)

Строка символов

\n

Переход на новую строку

 

Строка sce-файла

 

t=5; mprintf( 'Величина t = %d\n ' , t );

соответствует выводу в командное окно строки

Величина t = 5

Здесь вместо спецификатора %d вставляется символьный образ целого значения t. Символ \n переводит курсор на новую строку.

Спецификаторы указывают, в какой форме выводить значение очередно-

го аргумента mprintf().

 

 

m-файл

Вывод

 

x = 10; y = -5.2;

 

 

mprintf(' x=%d y=%f \n ', x, y);

x =10 y=-5.200000

 

3

 

 

 

 

z=100.25;

 

 

mprintf(' z=%f\n z=%e \n ', z, z);

 

z=100.250000

 

 

z=1.002500e+002

k=25;

 

 

mprintf('%s\n%d*2=%f

 

Primer:

\n','Primer:',k,k*2);

 

25*2=50.000000

Если спецификация не соответствует типу переменной, то выдаётся ошибка. Если количество спецификаторов не соответствует числу выводимых значений, также выдаётся ошибка.

3.4. Управление количеством знакомест с помощью mprintf

Между знаком % и спецификатором могут быть вставлены дополнительные символы:

%15d (%15s) – целое число (строка) выводится в поле из 15 знакомест и выравнивается по правому краю этого поля;

%10.2f (%10.2e) – вещественное число выводится в поле из 10 знакомест

ивыравнивается по правому краю этого поля, а под дробную часть отводятся два знакоместа;

%.2f (%.2e)– под дробную часть числа отводятся два знакоместа;

%-10d (%-10s) – целое число (строка) выводится в поле из 10 знакомест

ивыравнивается по левому краю этого поля;

%-12.3f (%-12.3e)– вещественное число выводится в поле из 12 знакомест и выравнивается по левому краю этого поля, три знакоместа отводятся под дробную часть.

m-файл

 

Вывод

n=2; b=1.2;

 

 

mprintf('n=%5d b=%7.3f\n',n,b);

n=

2 b= 1.200

mprintf('n=%-5d b=%-7.3f\n',n,b);

n=2

b=1.200

mprintf('b=!%12.3e!\n',b)

b=! 1.200e+000!

Функция msprintf аналогична mprintf, но выводит информацию в строковую переменную: str=msprintf('b=!%12.3e!',b). Вывод этой переменной: disp(str) эквивалентен mprintf('b=!%12.3e!\n',b).

3.5.Форматный вывод числовых массивов

Всписке вывода функции mprintf может быть массив. Пример сценария:

A=[ 10 20 30 40]; mprintf('!%7.2f!%7.2f!\n',A)

После запуска sce-файла в командном окне получим:

! 10.00! 20.00!

4

Если количество спецификаторов формата меньше, чем элементов массива, то оставшиеся элементы не выводятся. Если количество спецификаторов больше элементов, выдаётся сообщение об ошибке

Если массив имеет несколько строк, форматная строка повторяется для каждой строки.

M=[11 12 13 21 22 23];

mprintf('!%7.2f!%7.2f!%7.2f!\n',M)

Врезультате получим:

!11.00! 12.00! 13.00!

!21.00! 22.00! 23.00!

Если число спецификаторов формата меньше числа элементов в строке, выводятся только первые элементы строк:

mprintf('!%7.2f!%7.2f!\n',M)

!11.00! 12.00!

!21.00! 22.00!

Если число спецификаторов формата больше числа элементов в строке, выводится сообщение об ошибке.

Вопросы и задания к главе 3

1.Зачем нужны сценарии?

2.Поясните связь переменных сценария с основным окном.

3.Можно ли использовать переменные основного окна в сценарии?

4.Как задать комментарии в сценарии?

5.Поясните способы запуска файла сценария на выполнение.

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

7.Перечислите все способы вывода значений из сценария.

8.Опишите все спецификаторы формата в функции форматного вывода.

9.Исследуйте, как выводится число при задании разных спецификаторов.

10.Как управлять числом знакомест при выводе значений?

11.Что происходит при несоответствии спецификатора типу значения?

12.Для чего нужна и как используется функция msprintf?

13.Опишите возможности форматного вывода массивов.

14.Может ли число спецификаторов несоответствовать числу значений?

15.Напишите, что и как будет выведено после выполнения в SciLab: а) mprintf('x=%d\n',5.3);

б) mprintf('x=%f\n',10); в) mprintf('a=%e\n',2); г) mprintf('a=%g\n',5);

д) mprintf('%5s:%.2e:%10f\n','k',10,-12.5); е) mprintf('%-7.1f%3s:%.2e\n',10,'^^',-1.3e2); ж) mprintf(':%e:%.2f\n%3s\n',15.3,1.2, '**'); з) mprintf('%5d:%-3s%e\n',21,'!',0.0012);

и) mprintf('%12.2e%-5d!%2s \n',-24 ,12,'-');

5

к) mprintf('(%7.2f)\n%-12.4e|%4s|\n',135,0.25,'=='); л) mprintf('%8.2f%-3s:%.3e\n',-3e-2,'x',300);

н) mprintf('%-9f%4s(%10.2e)\n',1/2,'_g',525).

16. В сценарии заданы значения четырёх переменных. Их значения и текстовые символы выведены в командное окно, как указано ниже. Здесь с помощью одного символа ∟ обозначено одно пустое знакоместо. Повторите этот вывод с точностью до каждого символа и пробела.

а) ∟∟∟∟∟∟∟x:∟∟∟∟∟∟∟y:

15.06231

-40 12.98

б) x=-8452.8300∟y=7.9177e+003

a= 9341.0000 b=

7238

в) x:∟∟∟∟∟∟∟y:

18.36137

-76 62.18

г) x1:∟108.26∟x2:∟∟1.76e+002 y1: 137.00 y2: -1.63e+002

д) ∟x1:∟-182.60∟∟∟y1:∟∟∟∟173.00 x2: 1.69e+002 y2: 1.90e+002

е) ∟∟∟∟∟∟∟∟1:∟∟∟∟∟∟∟∟2:

a:-1.073e+003 1.069e+003

b:1026.000 -1089.888

ж) ∟∟∟∟∟∟∟∟a:∟∟∟∟∟∟∟∟b:

1:-273.000 2.268e+002

2:269.000 -2.899e+002

з) ∟∟∟∟z:

1:982.9

2:962

3:-8.3e+002

4:-732.0

и) ∟∟∟∟∟∟∟1:∟∟∟∟∟∟∟∟2:∟∟∟∟∟∟∟∟3:∟∟∟∟∟4:

d: -2.8830e+001 197.1000 26.0000 -23

к) !∟-8.28349e+001∟!∟-78.00000∟! ! 91∟!∟79.17000 !