Возможна ли разработка приложения на Octave с GUI? |
Основы работы
2.1 Элементарные математические выражения
Простейшие арифметические операции в Octave выполняются с помощью следующих операторов:
- + сложение;
- - вычитание;
- * умножение;
- / деление слева направо;
- \ деление справа налево;
- ^ возведение в степень.
Вычислить значение арифметического выражения можно вводом его в командную строку и нажатием клавиши ENTER:
>>> 13.5/(0.2+4.2) ^2-2.3 ans = -1.6027
Обратите внимание, что при вводе вещественных чисел для отделения дробной части используется точка.
Если вычисляемое выражение слишком длинное, перед нажатием клавиши ENTER следует набрать три или более точки. Это будет означать продолжение командной строки:
>>> 1+2*3-4.... >>> +5/6+7 . . . . >>> -8+9 ans = 11.833
В первой главе мы уже говорили о значении символа точки с запятой ";" в конце выражения. Напомним, что если он указан в конце выражения, результат вычислений не выводится, а вместо этого активизируется следующая командная строка:
>>> 2-1; >>> 2-1 ans = 1
2.2 Текстовые комментарии
Правилом хорошего тона в программировании всегда считался легко читаемый программный код, снабжённый большим количеством комментариев. Поскольку далее речь пойдёт о достаточно сложных вычислениях, для наглядности мы также будем применять текстовые комментарии. Текстовый комментарий в Octave — это строка, начинающаяся с символа %. Использовать текстовые комментарии можно как в командной строке, так и в тексте программы. Строка после символа % не воспринимается как команда, и нажатие клавиши ENTER приводит к активации следующей командной строки. Примеры использования текстовых комментариев приведены в следующем разделе.
2.3 Представление вещественного числа
Числовые результаты могут быть представлены с плавающей (например, ), или с фиксированной (например, ) точкой. Числа в формате с плавающей точкой представлены в экспоненциальной форме , где — мантисса (целое или дробное число с десятичной точкой), — порядок (целое число). Для того, чтобы перевести число в экспоненциальной форме к обычному представлению с фиксированной точкой, необходимо умножить мантиссу на десять в степени порядок. Например,
Ниже приведён пример ввода вещественного числа.
>>> 0.987654321 ans = 0.98765
Нетрудно заметить, что число знаков в дробной части числа в строке ввода больше чем в строке вывода. Происходит это потому, что результат вычислений выводится в виде, который определяется предварительно установленным форматом представления чисел.
Команда, с помощью которой можно установить формат числа имеет вид:
format формат_числа;
В Octave предусмотрены следующие форматы чисел:
- Short — краткая запись, применяется по умолчанию;
- Long — длинная запись;
>>> format short >>> pi ans = 3.1416 >>> format long >>> pi ans = 3.14159265358979
- Short E (Short e) — краткая запись в формате с плавающей точкой;
- Long E (Long e) — длинная запись в формате с плавающей точкой;
>>> format short E >>> pi ans = 3.1416E+00 >>> format long E >>> pi ans = 3.14159265358979E+00
- Short G (Short g) — вторая форма краткой записи в формате с плавающей точкой;
- Long G (Long g) — вторая форма длинной записи в формате с плавающей точкой;
>>> format short G >>> pi ans = 3.1416 >>> format long G >>> pi ans = 3.14159265358979
- Hex — запись в виде шестнадцатеричного числа;
- native-Hex — запись в виде шестнадцатеричного числа, в таком виде, в каком оно хранится в памяти компьютера;
- Bit — запись в виде двоичного числа;
- native-Bit — запись в виде двоичного числа, в таком виде, в каком оно хранится в памяти компьютера;
>>> format native-hex >>> pi ans = 182d4454fb210940 >>> format hex >>> pi ans = 400921fb54442d18 >>> format bit >>> pi % Ответ в одну строку — здесь две из-за ширины страницы ans = 01000000000010010010000111111011 01010100010001000010110100011000 >>> format native-bit >>> pi % Ответ в одну строку ans = 00011000101101000010001000101010 11011111100001001001000000000010
- Bank — запись до сотых долей;
- Plus — записывается только знак числа;
>>> format bank >>> pi ans = 3.14 >>> format + >>> pi ans = + >>> -pi ans =
- Free — запись без форматирования, чаще всего этот формат применяют для представления комплексного числа (подробно о комплексных числах см. п. 2.5.2);
>>> format short >>> 3.1234+2.9876*i ans = 3.1234+2.9876i >>> format free >>> 3.1234+2.9876*i ans = (3.123, 2.988)
- Compact — запись в формате, не превышающем шесть позиций, включая десятичную точку, если целая часть числа превышает четыре знака, число будет записано в экспоненциальной форме.
>>> format compact >>> 123.123456 ans = 123.12 >>> 1234.12345 ans = 1234.1 >>> 12345.123 ans = 1.2345e+04
Обратите внимание, что формат Short установлен по умолчанию. Вызов команды format с другим числовым форматом означает, что теперь вывод чисел будет осуществляться в установленном формате.
2.4 Переменные
В Octave можно определять переменные и использовать их в выражениях. Для определения переменной необходимо набрать имя переменной, символ "=" и значение переменной. Здесь знак равенства — это оператор присваивания, действие которого не отличается от аналогичных операторов языков программирования. Таким образом, если в общем виде оператор присваивания записать как имя_переменной = значение_выражения, то в переменную, имя которой указано слева, будет записано значение выражения, указанного справа.
Имя переменной не должно совпадать с именами встроенных процедур, функций и встроенных переменных системы. Система различает большие и малые буквы в именах переменных. А именно: ABC, abc, Abc, aBc — это имена разных переменных.
Выражение в правой части оператора присваивания может быть числом, арифметическим выражением, строкой символов или символьным выражением. Если речь идёт о символьной или строковой переменной, то выражение в правой части оператора присваивания следует брать в одинарные кавычки.
>>> x=1.2 % Определение переменной x = 1.2000 >>> y=3.14 y = 3.1400 >>> z=x+y % Использование переменных в арифметическом выражении z = 4.3400 >>> s=sym ( ’a’ ) % Определение символьной переменной s = a % Определение строковой переменной >>> str=’Посадил дед репку. Выросла репка большая, пребольшая’ str = Посадил дед репку. Выросла репка большая, пребольшая
Рассмотрим несколько примеров присвоения значений переменным:
>>> a =1;b=2; c=a*b; d=c^2 d = 4
Обратите внимание, что если символ ; в конце выражения отсутствует, то в качестве результата выводится имя переменной и её значение. Наличие символа ; передаёт управление следующей командной строке. Это позволяет использовать имена переменных для записи промежуточных результатов в память компьютера.
Листинг ниже содержит пример использования в выражении не определённой ранее переменной.
% Сообщение об ошибке. Переменная не определена . >>> t /( a+b ) error: ’t’ undefined near line 37 column 1
Если команда не содержит знака присваивания, то по умолчанию вычисленное значение присваивается специальной системной переменной . Причём полученное значение можно использовать в последующих вычислениях, но важно помнить, что значение изменяется после каждого вызова команды без оператора присваивания. Примеры использования системной переменной ans:
>>>25-3 ans = 22 % Значение системной переменной равно 22 >>> 2*ans ans = 44 % Значение системной переменной равно 44 >>> x=ans ^0.5 x = 6.6332 >>> ans % Значение системной переменной не изменилось и равно 44 ans = 44
Кроме переменной в Octave существуют и другие системные переменные:
- — результат последней операции без знака присваивания;
- — мнимая единица ( );
- — число ;
- — число Эйлера ();
- — машинный символ бесконечности ();
- — неопределённый результат ( и т.п.);
- — наименьшее число с плавающей точкой ();
- — наибольшее число с плавающей точкой ().
Все перечисленные переменные можно использовать в математических выражениях.
Если речь идёт об уничтожении определения одной или нескольких переменных, то можно применить команду: clear имя_переменной
Пример применения команды clear:
>>> a = 5.2; b=a ^2; >>> a,b a = 5.2000 b = 27.040 >>> clear a >>> a,b error: ’a’ undefined near line 126 column 1 >>> b b = 27.040