Uploaded by Вадим Надежкин

Smath

advertisement
Smath Studio
Введение
Программа состоит из 3 областей:
 Основное меню
 Инструментальная панель
 Рабочее поле
1) Основное меню состоит из основных команд для работы с документом в целом, такие как
вставить, вырезать, открыть, сохранить…, а также содержит математический справочник и набор
примеров. Стоит отметить, что сам справочник набран в Smath Studio и из него легко можно
копировать необходимые формулы.
2) Инструментальная панель разделена по категориям :
а) Панель «Арифметика»
Содержит цифры, математические символы, и основные операции. Рассмотрим 3 из них.
 Оператор присвоения « := », служит для присвоения переменным каких либо значений
(численных либо символьных). Например A := 2 (переменной А присвоили значение 2, теперь
программа знает, что есть переменная А, которая равна 2).
 Оператор численного вычисления « = », служит для получения численного результата, он
применим как к выражениям, так и к переменным. Например: А = 2 или A+2 = 4, т.к мы
раньше присвоили переменной А значение 2.
 Оператор символьного вычисления « → » позволяет вычислять символьный результат,
например: 2A+2A → 4A
б) Панель «Матрицы»
Содержит команды для работы с матрицами. Позволяет находить определитель матрицы,
транспонировать ее, находить минор. А также содержит команду векторного умножения, потому
как векторы программа рассматривает как матрицу с одним столбцом (или строкой).
в) Панель «Булева»
Эта панель содержит набор для команд для булевой алгебры. А также позволяет задавать
логические операции в командах ветвления и циклах.
г) Панель «Функции»
Содержит набор часто используемых функций, таких как sin, cos, log и т.п. А также 2 кнопки
«2d» и «3d», эти кнопки позволяют вставить соответственно 2-х мерные и 3-х мерные графики.
д) Панель «График»
Эта панель позволяет вращать, перемещать, увеличивать/уменьшать графики функций.
Двумерные графики строятся по переменной х, а трехмерные по 2 переменных x, y (переменные
должны вводиться в нижнем регистре).
е) Панель «Программирование»
Содержит 4 функции программирования, таких как: ветвление «IF», циклы «WHILE» и «FOR»
и вспомогательная функция «LINE»
ж) Последние две панели называются одинаково «Символы» и содержат греческие символы.
3) Рабочее поле и первый расчет
Рабочее поле занимает самую большую часть программы, здесь мы будем задавать исходные
данные. Основным элементом поля является курсор или Фокус ввода (место где будет
набираться выражение) он выглядит как красный крестик.
Произведём нехитрые вычисления, для начала сложим 2 числа:
o Ткните мышкой в свободное место рабочего поля
o Введите «a», потом щёлкнете на оператор присвоения «:=» на панели «Арифметика» и
введите число, которое вы хотите сложить. Должно получиться так «a:=5» после ввода
цифры нажмите Ввод (Enter) тем самым закончив ввод выражения и переведя курсор на
следующую строку.
o Чуть ниже сделайте тоже самое для числа «b». Должно выйти так «b:=23»
o
Еще ниже вводите «a», затем оператор сложения «+» с панели «Арифметика», затем «b» и
оператор численного вычисления «=» с той же панели. Что должно получиться см. на
рис.1 ниже.
Рис. 1 Первый расчет
4) Об основных правилах написания расчетов в программе
Используемая в расчете переменная/функция должна быть заранее объявлена в программе, т.е
находиться выше либо левее от выражения. При объявлении переменной, можно использовать
ранее объявленные переменные, встроенные и ранее объявленные функции, либо их сочетания
переменных и функций. Например A:=sin(b), где b=5 (объявлена выше, либо левее).
Для символьных вычислений переменные объявлять не обязательно.
Переменная может содержать в себе не только скалярное значение (численное), но и
матрицу/вектор
5) Некоторые горячие клавиши
Сочетание клавиш
Shift + :
Ctrl + .
=
Enter
Таблица 1. Некоторые сочетания клавиш
Результат
Вставляет оператор присвоения «:=» с панели «Арифметика»
Вставить оператор символьного вычисления «→» с панели «Арифметика»
Вставить оператор численного вычисления «=» с панели «Арифметика»
Закончить ввод выражения и переместиться на строчку ниже
6) Единицы измерения и автоматическая помощь ввода
Щелкните на свободном поле и наберите «s». Рядом откроется небольшой список со всеми
функциям/единицами измерения на букву «s» (sin, sign и т.п.) см. рис.2. Теперь если два раза
кликнуть мышкой на выбранный пункт в списке, то выбранная функция/единица измерения
вставиться в документ (так же можно использовать клавишу tab или сечетание ctrl+enter).
 В программе можно выбирать функции из списка (ctrl + E или кнопка «f(x)» в основном
меню программы)
 Можно выбрать единицы измерения ( ctrl+W или зайти в пункт выпадающего меню вставка
-> единица измерения)
Рис.2. Список предлагаемых функций/единиц измерения
а) При работе с единицами измерения, результаты вычислений могут получиться не в тех
единицах, которые вы хотели бы видеть.
Для того чтобы исправить это, достаточно (см. рис.3):
 Кликнуть мышкой на выражение, навести курсор на черный квадратик справа (это поле
ввода).
 Нажать ctrl+W или зайти в пункт выпадающего меню вставка -> единица измерения
 Затем выбрать единицу из списка (для тех кто нажал ctrl+W)
рис. 3 Вставка единицы измерения через диалог




Для ручного ввода единиц измерения:
Кликнуть мышкой на выражение, навести курсор на черный квадратик справа (поле
ввода).
Нажать клавишу «э» в английской раскладке для ввода единицы вручную.
Ввести единицу и нажать Tab (Shift + Enter) для подтверждения ввода единицы.
Нажать ввод, для завершения ввода выражения.
Рис. 4. Вставка единицы измерения через динамическую помощь ввода
б) Вставка функций аналогична вставке единиц измерения.
Работать в программе легко и удобно, оформленные документы смотрятся достойно:
Рис. 5. Пример оформленного документа
1. Основы работы
1. Курсор и ввод выражений
1.1 Курсор в Smath Studio
В Smath Studio курсор бывает трех типов:
 курсор в виде красного крестика "+", указывает позицию.
 в виде уголка "__| " или перевернутой буквы "Т" - " _|_ "

Указывает в каком месте математического выражения будет проводиться редактирование
(ввод нового символа или удаление неверно введенного символа). Если в данном примере
ввести цифру 5, то число 144 изменится на 1454, если же нажать delete, то получим 14.
Используя стрелки «влево» и «вправо» вы можете передвигать курсор по введенному
выражению. Так же для этих целей можно использовать мышку или пробел (нажмите
несколько раз пробел и вы увидите, что курсор будет по очереди выделять части
выражения). Таким образом можно расставлять забытые скобки, знаки корня и т.п.
в виде вертикальной черты " | ".
Указывает позицию в текстовой области, в которой будет производиться редактирование.
1.2 Ввод выражений
Smath Studio можно использовать как простой калькулятор, для этого ткните мышкой в любое
свободное место рабочего поля и попробуйте ввести пример.
3+69-9*3-3^5+698/2=
После ввода этой комбинации в Smath Studio вы увидите:
Теперь по порядку:
 для ввода простых выражений можно пользоваться такими операторами, как "+", "-", "*", "/", "("
и т.п.
 комбинация 3^5 означает 3 в степени 5.
 для того чтобы получить результат нажмите "=" на клавиатуре или на инструментальной
панели.
2. Особенности редактирования выражений
2.1 Коррекция знака
Иногда при вводе математического выражения случаются досадные опечатки, скажем вместо «+»
ввели «-». Допустим при вычислении значение какого-то выражения test вы ошиблись знаком.
1) Для редактирования выражения поместите курсор после знака «+»
2) Теперь при нажатии клавиши «backspace» вместо «+» появится пустое поле ввода символа
3) После этого можно вводить нужный знак «-»
Точно таким же образом можно редактировать любые знаки (:= > < + - и прочие)
2.2 Коррекция неверно введенных скобок
Это исправляется радикальным путем. Последовательность действий:
1) подвести курсор к открывающей скобке
2) нажать клавишу «backspace»
3) сочетанием ctrl+x или же через выпадающее меню по правой кнопке мыши вырезать
выделенную часть выражения
4) получатся пустые скобки
5) нажимая клавишу «backspace» удалить скобки
6) в пустое поле вставить ранее вырезанное выражение
2.3 Форматирование текста
Введите текст
Обратите внимание : текст можно вводить и без вставки текстовой области. Просто начните набирать
нужный текст, при нажатии клавиши «пробел» введенное выражение переведется в текстовую строку.
Важно : если введенный таким образом текст состоит из одного слова и не содержит пробелов,
отформатировать его не удастся. Чтобы это исправить просто добавте пробел в конце слова.
Поместите курсор в любое место этой строки и нажмите сочетание клавиш ctrl+b
Если еще раз нажать это сочетание, то текст вновь станет не жирным. Точно так же его можно сделать
курсивом (комбинация ctrl+i)
Или подчеркнутым (комбинация ctrl+u)
Как видно, каждый из этих эффектов можно применять к тексту по отдельности, либо все сразу.
2. Переменные
Переменная - участок памяти компьютера, у которого есть имя, он может содержать в себе число,
матрицу, или текст;
Матрица - прямоугольная таблица с элементами, которая может содержать другие матрицы, числа,
текст и переменные;
Текст - любые символы заключенные в двойные кавычки ( " );
В Smach Studio переменные могут содержать:
 Текст, например: "надпись, или любой другой текст"
 Число, например: 5 или 7,68 или -953,25

Матрицу, например:
При объявлении переменной, можно использовать: ранее объявленные переменные, встроенные и
ранее объявленные функции, либо их сочетания. Например A:=sin(b), где b=5 (объявлена выше, либо
левее).
Для символьных вычислений переменные объявлять не обязательно.
Примеры
1. Создадим простую переменную с именем "value", для этого сделайте как показано ниже:
value:= 123
value = 123
Здесь в первой строчке мы переменной value назначаем значение 123, об этом говорит
оператор присваения (:=) c панели арифметика. А во второй строчке, мы выводим содержимое
переменной при помощи оператора численного вычисления (=) c той же панели.
Важно: Программа чувствительна к регистру букв, т.е переменные Value,VALUE, value и VaLuE
воспринимаются ей как совершенно разные, и никак между собой не связанные.
Пример:
value := 123
VALUE := 235
value = 123
VALUE = 235
В этом примере, мы в первой строчке объявляем переменную "value", а во второй "VALUE".
2. Вычислим выражение с использованием переменных, для этого сделайте так, как показано ниже:
Пример №1:
В этом примере, мы присвоили переменным a, b и c численные значения, а затем присвоили
переменной d результат вычисленной формулы. В третьей строчке снизу мы вывели значение
переменной d=92. А во второй строчке снизу присвоили переменной новое значение - 52. Таким
образом переменная d выше четвертой строчки снизу не определена, между четвертой и второй
строчками снизу равна 92, а правее и ниже второй строчки снизу равна 52.


Важно: Переменные перед вычислением должны быть объявлены заранее, т.е выше либо левее
вычисляемого выражения.
Важно: Знак присваения (:=) позволяет также присвоить пременной другое значение.
Переменная будет равна этому значению ниже опереции присвоения.
Пример №2:
В примере №2 наглядно показано, что программа не может посчитать выражение и результат
присвоить переменной d поскольку переменная a определена ниже определения переменой d.
3. Пример увеличения значения переменной:
A:=5
A:=A+2
A=7
Вначале мы присваиваем переменной A значение 5, а в следующей строке мы присваиваем
переменой А ее же значение + 2, и в результате получаем 5+2=7
3. Булевы операции
Любая логическая операция может вернуть одно из двух значений, ложь (false) или истина (true). В
Smath Studio значение ложь(false) = 0, а значение истина (true) = 1.
Важно: в дальнейшем особенности работы программы Smath Studio могут измениться, поэтому будем
пользоваться стандартными значениями: 0 - ложь, 1 - истина .
Обозначение Название операции
Равно
Пример
Оператор выдает истину, если оба выражения слева и
справа от оператора равны, в противном случае он
выдает ложь.
Выражение
1=1
1=0
0=1
Строго меньше
Результат
1
0
0
Оператор выдает истину, если число/выражение справа
меньше числа/выражения слева.
Выражение Результат
1<1
0
1<0
0
0<1
1
23 < 25
1
Строго больше
Оператор выдает истину, если число/выражение слева
больше числа/выражения справа.
Выражение Результат
1>1
0
1>0
1
0>1
0
23 > 25
0
Меньше либо равно
Оператор выдает истину, если число/выражение слева
меньше либо равно числу/выражению справа.
Выражение Результат
1
1
1
1
0
0
0
1
1
25
1
23
Больше либо равно
Оператор выдает истину, если число/выражение слева
больше либо равно числу/выражению справа.
Выражение Результат
1
1 1
1
0
1
0
1
0
25
0
23
Неравно
Оператор выдает истину, если число/выражение справа,
отличается от числа/ выражения слева.
Выражение Результат
0
1
1
1
0
1
0
1
1
25
1
23
Отрицание, НЕ
Этот оператор унарный, т.е. ему нужно только одно
число/выражение, его приоритет выше приоритета всех
остальных логических операций, т.е. он выполняется в первую
очередь.
Выражение Результат
1
0
0
1
(1 < 1)
1
( 1<1)
1
И
Обратите внимания на последнюю строчку таблицы. Т.к.
операция НЕ ( ) выполняется в первую очередь, то ( 1) = 0
Операция логическое И или логическое умножение. По
аналогии с умножением в алгебре, если любое из 2-х чисел
произведения равно нулю, то все произведение равно нулю.
Выражение Результат
1 1
1
1 0
0
0 1
0
0 0
0
Или
Операция логическое Или или логическое сложение. По
аналогии со сложением в алгебре, если любое из 2-х чисел
суммы не равно нулю, то вся сумма не равна нулю.
Выражение Результат
1
0
1
0
Исключающее или
1
1
0
0
1
1
1
0
Операция исключающее или.
Выражение Результат
0
1
1
1
0
1
0
1
1
0
0
0
Договоримся заранее, что логические выражения будем писать в скобках.
Пример №1 - простые логические выражения:
Обратите внимание на результаты операции «Исключающее или», т.к. оба числа не равны 0,
программа воспринимает их как истину.
Пример №2 - сложные логические выражения:
Все сложные выражения в примере №2 в конечном итоге сводятся к простым:
Выражение
(a > b)
(с > d)
Примечание




(a
(a
b)
b)
d
d
Подставляем значения переменных: (5 > 6) (7 > 0)
Т.к. скобки устанавливают приоритет, то сначала вычисляется
первое выражение в скобках - (5 > 6) = 0 (ложь)
Затем второе (7 > 0) = 1(истина )
Теперь подставляем результаты в исходное выражение (0 1) =
0 (ложь)

Подставляем значения переменных: (5 6) 0
Т.к. скобки устанавливают приоритет вычисления, то сначала
вычисляем выражение в скобках (5 6) = 1 (истина )
Подставляем результат в исходное выражение 1 0 = 0 (ложь)



Подставляем значения переменных: ( 5 6) 0
Вычисляем первое выражение ( 5 6) =1
Подставляем результат в исходное выражение 1


0 =1(истина )
Пример №3 - смешанные сложные выражения:
Обратите внимание, поскольку истинное выражение в Smath Studio численно равно 1, а ложное 0,
логические выражения можно использовать вместе с алгебраическими и др. вычислениями. В этом
примере явно видно, что если 2<x<5 то логическое выражение равно 1, и число 1036 отнимается от
остального выражения. А если x выходит за диапазон (2;5) - то логическое выражение равно 0, и число
1036 домноженное на 0, тоже обращается в 0!
4. Матрицы, векторы и массивы
В Smath Studio нумерация всех элементов начинается с 1. Если вы будете использовать какую-либо
функцию с нулевым элементом, то программа выдаст ошибку.
1. Матрицы, создание матриц, элементы матриц (mat, matrix, el(2), el(3))
Матрица в общем случае это прямоугольный набор элементов, который может содержать:
 числа (целые, вещественные, комплексные)
 строковые значения
 другие матрицы
1.1 Создать матрицу можно несколькими способами:
а) При помощи команды mat или кнопки
«Кубическая матрица» с панели «Матрицы». В
результате проделанных действий вы увидите пустую матрицу. Для того чтобы изменить ее
размеры, ухватитесь мышкой за черный квадратик справа снизу матрицы и растягивайте/сжимайте
ее.
б) Командой matrix(arg1, arg2), где arg1 - число строк, arg2 - число столбцов.
Так matrix(10,20) создаст матрицу заполненную нулями, состоящую из 10 строк и 20 столбцов:
в) Создать матрицу можно также при помощи команд el(2) и el(3). При увеличении индекса, матрица
автоматически меняет свои размеры, а промежуточные элементы заполняются нулями.
1.2 В Smath Studio существуют две команды, которые позволяют обращаться к элементам матрицы по
отдельности. Рассмотрим отличия этих команд в таблице:
Вопросы:
el(2)
el(3)
Для чего нужна? Служит для работы с одномерными Служит для работы с 2-х мерными матрицами
матрицами (состоящими из одного (прямоугольными матрицами), позволяет
столбца) и позволяет получить любой получить любой элемент матрицы:
элемент матрицы:
В чем разница?
Как
использовать?
Команда el(2) может работать только с Команда el(3) способна работать с любыми
одномерными матрицами.
матрицами.
Если матрица имеет больше одного
столбца, команда выдаст ошибку.
После ввода команды появятся два После ввода команды появятся три связанных
связанных поля:
поля:
В верхнее поле записывается матрица, В верхнее поле записывается матрица, в
а в нижнее - номер строки.
нижние - номер строки, потом номер столбца.
Пример:
Пример:
2. Матрица-вектор
С точки зрения Smath Studio вектор - это матрица состоящая из одного столбца и трёх строчек
(например, командой matrix(3,1) можно создать нулевой вектор).
Пример команды векторного умножения векторов
с панели «Матрицы»:
С векторами можно делать те же действия, что и с матрицами.
3. Матрица как массив элементов (max, min, cols, rows)
В Smath Studio можно использовать матрицы и как массив для хранения элементов. Это возможно
благодаря трём командам:
 el(2) и el(3), которые позволяют обращаться к любому элементу матрицы;
 matrix позволяет создавать матрицы во время расчета.
В матрице можно например накапливать координаты точек для построения графиков или другие
данные, с которыми удобно работать, как с массивом.
Далее будут приведены некоторые команды, которые рассматривают матрицы как массив элементов:
Команда
Описание
max
Находит максимальное значение в матрице, т.е. эта команда применительно к
матрице
min
cols
вернет число 33.
Находит минимальное значение в матрице, т.е. эта команда применительно к
матрице
вернет число 11.
Возвращает количество столбцов в матрице, применительно к матрице
вернет 1, а для матрицы
rows
вернет 3.
Возвращает количество строк в матрице, применительно для матрицы
вернет 3.
4. Сортировка матриц/массивов (sort, csort, rsort)
Сортировка позволяет упорядочить/отсортировать элементы матрицы/массива по порядку (по
возрастанию)
Команда
sort
Описание
Команда применима только к векторам, т.е к матрицам состоящим из одного столбца и
нескольких строчек, она сортирует элементы вектора в порядке возрастания.
Пример:
csort
Команда позволяет отсортировать всю матрицу, по элементам выбранного столбца. Т.е.
матрица сортируется по строчкам, согласно возрастанию элементов указанного столбца.
Пример (сортируем матрицу по 1 столбцу):
rsort
Команда позволяет отсортировать всю матрицу, по элементам выбранной строки. Т.е.
матрица сортируется по столбцам, согласно возрастанию элементов указанной строки.
Пример (сортируем матрицу по 1 строчке):
5. Объединение матриц (augment, stack)
Команда
augment
Описание
Команда позволяет объединять матрицы по столбцам.
Можно объединить матрицы только с одинаковым числом строк!
Команда позволяет объединить несколько матриц, все они отделяются между
собой запятыми.
 Возможно
использовать
такую
конструкцию: А:=augment(А, B),
где
матрица A должна быть определена перед первым использованием этой
конструкции. Она позволяет прибавлять к матрице А, ее же значение плюс
матрицу B. Этот прием используется в основном в циклических конструкциях.
Команда позволяет объединять матрицы по строкам


stack



Можно объединить матрицы только с одинаковым числом столбцов!
Команда позволяет объединить несколько матриц, все они отделяются между
собой запятыми.
Возможно
использовать
такую
конструкцию: А:=stack(А, B),
где
матрица A должна быть определена перед первым использованием этой
конструкции. Она позволяет прибавлять к матрице А, ее же значение плюс
матрицу B. Этот прием используется в основном в циклических конструкциях.
6. Субматрицы (col, row, submatrix)
Рассмотрим группу команд, которая служит для разделения матриц.
Команда
col
Описание
Эта команда позволяет извлечь из матрицы любой указанный столбец, например,
возьмем третий столбец из матрицы:
Номер требуемого столбца должен быть меньше либо равен количеству столбцов в
матрице.
Эта команда позволяет извлечь из матрицы любую указанную строчку, например:
row
Номер требуемой строки должен быть меньше либо равен количеству строк в матрице.
submatrix Эта команда позволяет извлечь из матрицы указанную прямоугольную область,
например:
Мы вычленили из основной матрицы, подматрицу, которая включает в себя строки с 1
по 4 и колонки со 2 по 3 из основной матрицы! Ниже приведена таблица с описанием
параметров этой функции:
№ аргументов
1
2
3
4
5
Описание
Сама матрица
Номер начальной строки
Номер конечной строки
Номер начального столбца
Номер конечного столбца
5. Графики
Графики функции в Smath Studio бывают 2-х видов: двухмерные и трехмерные. Для работы с ними есть
специальная панель «График».
1) Вставить график в расчет можно несколькими способами:

2D-график можно вставить комбинацией Shift + @.

При помощи кнопок

При помощи меню Вставка.
и
с панели «Функции».
2) Работа с графиком
Для начала редактирования графика, необходимо его выделить и поместить курсор в поле ввода
данных.
В нижней части графика есть пустое поле, куда нужно вставить:
 для 2D графиков - функцию от х (например, sin(x) или cos(x))
 для 3D графиков - функцию от х и y (например, sin(x+y), но можно и просто sin(x) или cos(x)).
Внимание: В объявлении функции можно использовать любые имена переменных. Но
график строиться только относительно «х» и «y». Т.е. для графика функция должна
быть вызвана с использованием этих переменных.
Если Вам нужно построить графики сразу нескольких функции, то можно воспользоваться
функцией sys (алгебраическая система), введя ее с клавиатуры или нажав кнопку
с панели
«Функции».
Например:
При этом разные графики рисуются линиями разного цвета.
3) Панель «График»
Панель содержит 6 кнопок для работы с графиками:
 Вращать - позволяет вращать мышкой 3D-график.
 Масштабировать - позволяет масштабировать график (можно колесиком мышки). В 2D-графиках
для изменения масштаба только по оси X удерживайте клавишу Shift, для оси Y - клавишу Ctrl.
 Перемещать - позволяет перемещать изображение внутри графика.
 График точками и график линиями - переключает режим отображения графиков
точками/линиями.

Обновить график - позволяет вернуть исходное положение графика.
4) Построение графика по точкам
Для построения графика по точкам нужно использовать матрицы. В таблице показан формат матриц
для 2D и 3D графиков:
2D
3D
Эта матрица содержит пары координат Х и Y.
Эта матрица содержит тройки координат
Матрицу этого формата можно вывести и на 2D и
X, Y, Z. Матрица такого формата способна
на 3D-графике
(на 3D графике
изображение
отображаться лишь на 3D-графике.
построится в плоскости XY).
Такой подход к построению графиков как правило требует программирования. Для работы с матрицами
могут понадобится функции augment, el(2), el(3), stack.
Пример 1 (2D-график по точкам):
Здесь наглядно видно, что окружность состоит из отрезков соединяющих точки, координаты которых
даны в матрице result, а матрица result1 наглядно показывает положение этих точек.
Пример 2 (3D-график по точкам):
В этом примере для наглядности изменили матрицу из примера 1 так, чтобы получилась спираль.
5) Вывод надписей на графике
Программа позволяет выводить на графике, как надписи, так и разного вида «Точки».
Формат матрицы для вывода надписей:
Где:
Параметр
X1...Xn
Y1...Yn
"text"
txtSize
"txtColor"
Описание
Координата Х точки
Координата Y точки
Сама надпись в кавычках
Размер шрифта
Цвет текста (пишется в кавычках)
Обратите внимание : Последние два столбца матрицы являются не обязательными, их можно
не использовать, при этом программа сама назначит цвет и размер шрифта.
Рассмотрим параметры:

"text" может содержать как текст, так и специальные символы.
- Обычные текст отображается на графике правее указанной координаты и может содержать
почти любые символы.
- Специальные символы - символы, которые можно наносить на график как точки.
Программа воспримет спецсимвол только в том случае, если он записан в кавычках один и без
пробелов.
Спецсимвол
+
*
o
x
.

Описание
знак + отображается как крестик
знак "*" отображается в виде пятиконечной звезды
знак "o" (маленькая буква О в английской раскладке) отображается как окружность
знак "x" (икс маленькая в английской раскладке) отображается как повернутый
крестик
знак "." (точка) отображается как жирная точка.
Параметр "txtColor" позволяет задавать цвет надписи. Цвет задается в кавычках, некоторые
возможные значения приведены в таблице.
Значение
"aqua"
Цвет
Значение
"navy"
"black"
"olive"
"blue"
"purple"
"brown"
"red"
"fuchsia"
"silver"
"gray"
"teal"
"green"
"violet"
"lime"
"white"
"maroon"
"yellow"
Цвет
Пример 3. График sin(x), cos(x), с использованием спецсимволов разного цвета
В этом примере использованы готовые матрицы с результатами работы функций sin и cos. На
графике, первая рисуется символом ".", а вторая - "х". Обратите внимание на надпись «Пример №3».
6. Функции программирования
1. Условный переход if-else
Оператор условного перехода if-else служит для выполнения определенного набора команд, в
зависимости от выполнения условия.
Пример №1:
a:=5
b:=6
if a>b
max:=a
else
max:=b
max=6
В начале функция if проверяет условие а>b, и если это истина, то выполняется следующие
после if выражение — max:=a. В противном случае выполняется выражение следующее после else —
max:=b.
А что если нужно выполнить только одно условие после if или else? В таком случае можно записать
на месте ненужного выражения 1 или любое другое число ...
Пример №2
a:=5
b:=6
if a>b
1
else
a:=b+1
a=5
Здесь если выражение a>b истинно, то программа ничего не будет делать и приступит к вычислению
следующего оператора после блока if-else.
2. Циклы for, while
Цикл — специальная конструкция, предназначенная для многократного повторения набора
инструкций. Количество повторений может задаваться заранее или зависеть от выполнения
определенного условия, как в операторе if-else .
Цикл со счетчиком for.
Пример №1
a:=0
cntr:=8
for i:=2 , i<cntr, i:=i+2
a:=a+1
a=3
Как это работает:
Строка
Выражение
Описание
1
a:=0
Присваиваем переменной а число 0, для того, чтобы узнать количество
повторений цикла
2
cntr:=8
Эта переменная нужна для условия цикла
3
for i:=2 , i<cntr, i:=i+2 Здесь мы задаем цикл:
i:=2 это счетчик цикла, он показывает на каком шаге находится
цикл
4
a:=a+1
5
a=3




i<cntr логическое условие, когда оно станет ложным — цикл
закончится
i:=i+2 эта конструкция задает шаг цикла, т.е i будет изменяться с
шгом 2 (2,4,6,8)
Эта переменная позволяет нам узнать, сколько повторений выполнил
цикл. В первой строке
а=0, при первом проходе мы задаем переменной а ее же значение + 1.
Мы можем видеть, что поскольку a=3, цикл повторился 3 раза, т.е.
строка 4 выполнилась 3 раза.
Важно: если условие построено таким образом, что выдает всегда истину - цикл никогда не
остановится.
cntr:=1
cntr:=2
for i:=2, i>cntr, i:=i+1
for i:=2, i=cntr, i:=i+1
cntr:=i
Важно: если счетчик цикла не изменяется или изменяется неправильно, то цикл может работать
бесконечно:
cntr:=8
cntr:=8
for i:=2 , i<cntr, i:=i
for i:=2 , i<cntr, i:=i-1
a:=a+1
a:=a+1
Важно: если условие цикла не выполняется изначально, то цикл ни разу не выполнится.
a:=0
cntr:=1
for i:=2 , i<cntr, i:=i+2
a:=a+1
a=0
Обратите внимание: для выхода из цикла достаточно изменить счетчик цикла так, чтобы
условие цикла стало ЛОЖНЫМ. Например, следующий цикл завершит свою работу на 3 шаге:
a:=0
cntr:=50
for i:=1 , i<cntr, i:=i+2
if i = 3
i:=cntr
else
1
Пример №2
В этом примере счетчик цикла х меняется сам и принадлежит диапазону t.
Обратите внимания на 2-ю строчку t:=1..5, где использована функция range, которая присваивает
переменной t диапазон от 1 до 5, с шагом 1.
Здесь цикл повторяется пять раз, что видно из значения j=15 во 2-й строчке снизу
(j=0+1+2+3+4+5=15). Значение x внутри цикла берется из диапазона. Если диапазон t = (1,2,3,4,5), то
при каждом следующем шаге x будет равен следующему значению, взятому из этого диапазона:
шаг значение Х
1
2
3
4
5
x=1
x=2
x=3
x=4
x=5
Цикл с предварительной проверкой условия while
Пример №3
Обратите внимание на вертикальную линию под командой while. В этом примере использована
команда line.
Как это работает:
Строка
1
2
3
4
5
7



Выражение
Описание
i:=2
Присваиваем переменной i число 2, эта переменная будет счетчиком цикла
a:=1
Эта переменная позволяет нам задать, сколько повторений выполнил цикл
while i<5
Зздесь мы задаем цикл:
i<5 означает, что цикл будет выполняться пока это условие верно.
i:=i+1
Изменяем счетчик цикла на единицу.
a:=a+1
Эта переменная позволяет нам узнать, сколько повторений выполнил цикл. В
первой строке а=0, при каждом проходе мы увеличиваем а на 1.
a=4
Мы можем видеть, что поскольку a=4, цикл повторился 3 раза. Т.е. строка 5
выполнилась 3 раза, т.к. начальное значение а=1.
Важно: все замечания по циклу for также относяться и к циклу while.
Важно: переменная, которая участвует в условии цикла, должна быть задана, иначе вы не
сможете предсказать, как будет работать цикл.
Важно: в теле цикла, должна быть предусмотрена конструкция, которая изменяет счетчик цикла,
иначе цикл будет выполняться бесконечно. Например:
i:=2
a:=1
while i<5
a:=a+1
3. Составная команда Line
Команда Line позволяет сделать составную команду, т.е. одну команду из нескольких. Вы наверное
уже заметили, что все команды циклов, а также оператор ветвления позволяют записывать внутри себя
лишь одну команду. Чтобы внутри этих команд можно было выполнить целый ряд действий,
используют line. На рисунке ниже показана команда line:
По умолчания она вставляется с двумя пустыми полями ввода, туда можно записать нужные вам
команды. Черный квадратик справа внизу служит для растягивания линии, с его помощью линию
можно растянуть/сжать на столько команд, на сколько нужно:
Внутрь оператора line можно вставлять еще несколько операторов line, вложений может быть
много, но на практике больше 2-3 обычно не используется:
Если навести мышку на оператор line, то появится всплывающая подсказка, где показано состояние
всех переменных.
Если Вы все таки запустили расчёт с бесконечным циклом (или просто хотите прервать работу
цикла), то в Smath Studio есть кнопка остановки расчета
.
7. Функции пользователя
В Smath Studio возможно создавать свои функции, которые могут использоваться в расчете.
Синтаксис описания функции:
<имя функции>(<параметр1> , <параметр2>, .. , <параметрN>) := <любое выражение>
Где:
<имя функции> - название функции
<параметр1> , <параметр2>, .. , <параметрN> - параметры, с которыми будет вызываться функция
<любое выражение> - любое правильно написанное выражение, которое может использовать
параметры функции. Здесь описывается что именно будет делать функция.
Пример:
sum2(a, b) := a+b+1
В этом примере объявлена простейшая функция sum2, которая складывает два числа a и b, и
прибавляет к ним единицу.
Использовать такую функцию можно так же, как и стандартную функцию Smath Studio.
Пример:
sum2(5,2) = 8
Функции пользователя очень гибкий и удобный инструмент, они позволяют существенно уменьшить
объем расчета путем замены часто повторяющихся участков.



Важно: числу параметров, указанному при описании функции должно соответствовать
число параметров при вызове. Например:
sum2(5)
- неправильно
sum2(5,3,5,8) - неправильно
sum2(5,3)
- правильно
Важно: параметрами функции могут быть матрицы, числа, и строки. Но при вызове
функции должен быть учтен порядок записи переменных. Т.е. если в описании функции
1я переменная - матрица, 2я - число, а 3я - строка, то и при вызове функции 1й параметр
должен быть матрицей, 2й - числом, 3й - строкой.
Обратите внимание: в правой части описания функции могут быть функции
программирования
Пример1 (по преобразованию арабских чисел в римские):
Описание работы функции ArabicToRoman
Строка
Описание
ArabicToRoman(arabic):=|
Здесь мы объявляем функцию. Объявление
функции может состоять из 2 частей:
1. Имя функции, должно быть обязательно
указано.
2. Используемые переменные перечисляются в
скобках через запятую.
Как видно, в этой функции активно используется
Нужен, чтобы можно было выполнить
оператор line
несколько команд.
Это матрица 2x13, в ней содержатся арабские
1 строчка
числа и соответствующие им римские.
2 строчка
3 строчка
roman:= "Value must be in the range 1-3999."
4 строчка
roman:= ""
5 строчка
for j:=1, j ≤ cols(relation), j:=j+1,
6 строчка (внутри цикла for), объявляем цикл
Т.к. в нашем случае римское число должно
быть не больше 3999, и не меньше 1.
 если логическое выражение вернет истину,
то программа выполнит следующую строчку
после if (см. строчку 3), а затем перейдет к
следующей после блока if- else инструкции
(см. строчку 8)
 если - ложь то программа приступит к
выполнению команд после оператора else
Эта строка может выполнится только если
логическое выражение после if в строке 2
вернет истину.
В этой строке мы переменной roman
присваиваем текст «Value must be in the range
1-3999.»
(число должно быть в диапазоне 1-3999)
Весь блок команд после else выполнится
только если логическое выражение после if в
строке 2 вернет истину.
В этой строчке мы объясняем программе, что
переменная roman будет содержать текстовое
значение, т.к. по умолчанию все переменные
численные.
Объявляем цикл, для того, чтобы пройтись по
всем элементам матрицы relation.
j:=1
счетчик цикла
j ≤ cols(relation) логическое условие (цикл
будет выполняться пока
условие не станет ложным)
Буквально означает : пока j
меньше либо равно кол-ву
столбцов в матрице relation
j:=j+1
Увеличиваем счетчик цикла
на 1 при каждом проходе.
В нашем случае цикл повториться 13 раз,
переменная j изменится с шагом 1 от 1 до 13
Что означает: повторять пока выполняется
условие
Дословно условие читается так:
пока arabic больше либо равно значению
ячейки матрицы relation с координатами (1
строка, j - столбец). Где j - счетчик цикла из 5
строки.
j=1
= 1000
j=2
= 900
j=3
= 500
...
j=12
j=13
7 и 8 строчки (внутри цикла while)
...
=4
=1
Здесь вначале мы переменной arabic
присваиваем её же значение минус значение 1-й
строчки j столбца матрицы relation до тех пор
пока логическое условие в 6 строчке не станет
ложным.
Затем в строковой переменной roman
накапливаем значение 2-й строчки j столбца
матрицы relation. См. команду concat.
Функции в Smath Studio устроены так, что
возвращают значение последней операции. Т.о.
наша функция вернет значение переменной
roman
8 строчка и последняя
roman
Пример2:
В этом примере показано, как создать массив функций:
Подробно рассмотрим как это работает:
Строка
Описание
func_list - это матрица (7 строк, 1 столбец), в которой
содержатся функции.
i:=1
Объявляем переменную i
test_func(x,y):=func_listi Объявляем функцию
test_func(x,y) и присваиваем
test_func(2,3)=5
ей значение элемента матрицы
func_listi с номером i
вызываем функцию test_func, где параметр x=2, y=3
и получаем соответственно ответ:
первый элемент матрицы func_list равен x+y
- значит функция test_func(x,y) = x+y
- значит 2+3=5
Важно: числу параметров, указанному при описании функции (т.е. в матрице) должно соответствовать
число параметров при вызове и при объявлении функции.
Например:
Первый элемент матрицы равен x+y
Значит при объявлении функции должны быть указаны x и y:
test_func(x,y):=func_list1
test_func(x,y,z):=func_list1 (лишние объявленные параметры учитываться не будут )
Download