Основы программирования в системе Scilab

В Scilab встроен мощный язык программирования с поддержкой объектов. Работа в Scilab может осуществляться как в режиме командной строки, так и в программном режиме. Для создания программы (программу в Scilab иногда называют сценарием) необходимо:

1. Вызвать команду Editorиз меню.

2. В окне редактора Scipadнабрать текст программы.

3. Сохранить текст программы с помощью команды File /Saveв виде файла с расширением sce, например file.sce.

4. После этого программу можно будет вызвать, набрав в командной строке exec, например exec("file.sce"), или вызвав команду меню File/Exec..., или, находясь в окне Scipad, выполнить команду Execute/Load into Scilab(Ctrl+l).

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

Основные операторы sci-языка

Функции ввода-вывода в Scilab

Для организации простейшего ввода в Scilab можно воспользоваться функциями

x=input('title');

или

x=x_dialog('title', 'stroka');

Функция input выводит в командной строке Scilab подсказку title и ждет пока пользователь введет значение, которое в качестве результата возвращается в переменную х.

-->x=input('title');

title-->4

-->x

x =

4.

Функция x_dialog выводит на экран диалоговое окно с именем title, после чего пользователь может щелкнуть OKи тогда stroka вернется в качестве результата в переменную x, либо ввести новое значение вместо stroka, которое и вернется в качестве результата в переменную x.

Основы программирования в системе Scilab - student2.ru

Набрав вместо strokа число 45 и распечатав х, получим:

Основы программирования в системе Scilab - student2.ru

-->x

x =

45

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

x=evstr(x_dialog('title', 'stroka'));

Можно сразу набрать

->x=evstr(x_dialog('title', '46'));

-->x+6

ans =

52.

Для вывода в текстовом режиме можно использовать функцию disp следующей структуры disp(b). Здесь b - имя переменной или заключенный в кавычки текст.

-->disp('Привет')

Привет

-->disp("Привет")

Привет

Оператор присваивания

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

a=b

здесь a – имя переменной или элемента массива, b - значение или выражение. В результате выполнения оператора присваивания переменной a присваивается значение выражения b.

x=5;y=sin(x);

Условный оператор

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

ifЛогическое_выражение then

Инструкции_1

Else

Инструкции_2

End

Инструкции в списке разделяют оператором,(запятая)или ;(точка с запятой).

Логические выражения

Логические выражения состоят из констант, переменных и функций, соединенных операциями отношения: больше (>), больше или равно (>=), равно (==), не равно (~=) , меньше (<), меньше или равно (<=). Например: x2>y. Логические выражения принимают значения «истина» или «ложь». Например, при x=2 и y=8 значение выражения x2>y является ложью. Несколько логических выражений могут быть объединены в одно операторами & и |. Например: x.^2>y | y>7. Если несколько логических выражений соединены оператором &, то значение такого выражения является истиной, если каждое логическое выражение, входящее в него, является истиной. Если несколько логических выражений соединены оператором |, то значение такого выражения является истиной, если хотя бы одно логическое выражение, входящее в него, является истиной.

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

ifЛогическое_выражение_1 then

Инструкции_1

elseifЛогическое_выражение_2 then

Инструкции_2

Else

Инструкции_3

End

В этом случае оператор if работает так: если логическое выражение_1истинно, то выполняются инструкции_1, а затем инструкции, стоящие после оператора end. Если логическое выражение_2 является истиной, то выполняются инструкции 2, а затем инструкции, стоящие после оператора end. Если ни одно из логических выражений не является истиной, то выполняются инструкции, стоящие после слова else.

Частные случаи:

1) if Логическое_выражение then Инструкции , end

Примеры:

-->if x>5 then y=8, end

-->if x>5 then y=8;t=6; end

2) if Логическое_выражение then Инструкции_1, else Инструкции_2, end

Пример:

-->if x>5 then y=8,t=6; else y=x^2 ,end

3) if Логическое_выражение then

Инструкции

End

Замечание: слово thenв составе условного оператора ifне является обязательным.

Пример. Вычислить функцию y при x=0.397, если

Основы программирования в системе Scilab - student2.ru

Решение:

x=0.397;

if x.^2<=25*cos(x.^3) then

y=sin(3*x)

else

y=(2*x – tan(x))./sqrt(x.^2+2)

end

Набрав этот файл в редакторе Scipad и запустив его на выполнение командой Execute/Load into Scilab, получим:

y =

0.9287402

В качестве примера программирования разветвляющегося процесса рассмотрим решение квадратного уравнения Основы программирования в системе Scilab - student2.ru .

Входными данными этой задачи являются коэффициенты квадратного уравнения a, b, c. Выходными данными являются корни уравнения x1 , x2или сообщение о том, что действительных корней нет.

Алгоритм состоит из следующих этапов:

1. Ввод коэффициентов уравнения a, b и с.

2. Проверка, является ли уравнение квадратным (а≠0).

3. Вычисление дискриминанта уравнения d.

4. Если d=0, то выводится сообщение: уравнение имеет два равных корня и печатается значение корня.

5. Если d>0, определяются x1 и x2

6. Если d<0, то выводится сообщение «Корней нет».

Программа решения квадратного уравнения

clc

a=input('a=');

b=input('b=');

c=input('c=');

if a==0 then

disp("Уравнение не является квадратным")

else

// Вычисляем дискриминант.

d=b*b-4*a*c;

// Если дискриминант отрицателен,

if d<0

// то вывод сообщения,

disp(' Действительных корней нет');

elseif d==0

//иначе-вычисление корней соответствующего

// квадратного уравнения.

disp("уравнение имеет два равных корня") ;x=-b/(2*a)

else

x1=(-b+sqrt(d))/2/a

x2=(-b-sqrt(d))/2/a

end

end

a=-->1

b=-->2

c=-->-5

x1 =

1.4494897

x2 =

- 3.4494897

Найти все корни квадратного уравнения можно и без оператора if, воспользовавшись тем, что в Scilab определены операции над комплексными числами.

clc

a=input('a=');

b=input('b=');

c=input('c=');

d=b*b-4*a*c;

x1=(-b+sqrt(d))/2/a;

x2=(-b-sqrt(d))/2/a;

disp(x1,x2);

a=-->1

b=-->2

c=-->3

- 1. - 1.4142136i

- 1. + 1.4142136i

Комплексные корни квадратного уравнения

Наши рекомендации