[Ред] Змінні
<имя переменной> = <значение>
Оскільки GNU Octave вважається мовою високого рівня, до визначення змінних виставляються певні вимоги:
- назва змінної може містити літери, цифри і символи підкреслення "_", але не повинно починатися з цифри;
- мова GNU Octave чутливий до регістру, тобто А та а - це різні змінні;
- створювати змінні можна в будь-якому місці програми (вони не описуються і не оголошуються);
- змінні не мають "сталості" типу даних, тобто спочатку можна привласнити а = 10. а потім а = "Hello!" ;
Як і в звичайних мовах програмування, змінні Octave поділяються на глобальні (визначені в файлах-сценаріях) і локальні (визначені в файлах-функціях). Розглянемо наступний приклад. Нехай результати розрахунків (в даному випадку, присвоювання значень змінним а і b) "головною" програми Script1 передаються в підпрограму Script2, а та, в свою чергу, виконує над ними якісь дії і викликає функцію function MyFunction ().
# Файл Script1.m
a = 1;
b = 3;
Script2;
# Файл Script2.m
a = 2;
b = 2;
MyFunction ();
# Файл MyFunction.m
function MyFunction ()
a = 3;
b = 3;
endfunction
В результаті виклику трьох m-файлів, значення змінних залишаться а = 2 і b = 2. Справа в тому, що змінні оголошені в функції вважаються локальними, тобто вони створюються при зверненні до MyFunction і видаляються з пам'яті при виході з неї. Змінні ж створені в скриптах "живуть" до тих пір, поки не буде виконано весь набір команд (неважливо, чи розміщені ці команди в одному або різних файлах). І більш того, значення глобальних змінних зберігаються протягом усього сеансу роботи з Octave. тобто вони доступні навіть в абсолютно різних програмах, що запускаються послідовно виходячи із системи. Таким чином, у наведеному вище прикладі по суті створені дві різні пари змінних з однаковими іменами - одна пара а й b існує поза визначення функцій, друга її копія - суто в межах function. endfunction.
[Ред] Global декларація змінних
Як було зазначено вище, простору змінних скриптів і функцій не перетинаються між собою. Однак існує можливість з функції звернутися до глобальної змінної для використання її значення (як читання, так і зміни). Реалізується така можливість за допомогою ключового слова global.
[Ред] Persistent декларація змінних
[Ред] Структури даних
Досить часто доводиться мати справу з даними, які згруповані по деякому логічному умові, але мають в загальному випадку різні типи. З одного боку їх можна розглядати як єдину структуру, а з іншого - як набір окремих елементів. Подібні конструкції в мовах програмування називають "записами". У Octave їх називають структурами даних.
<имя переменной 1>.<имя переменной 2>[.<имя переменной 3>[.<имя переменной 4>[. <имя переменной N>]]]
Приклад 3. Визначення міжосьової відстані зубчастої передачі
Gear1.m = 1.5; # Модуль зубчастого колеса №1
Gear1.z = 20; # Число зубів зубчастого колеса №1
Gear2.m = 1.5; # Модуль зубчастого колеса №2
Gear2.z = 50; # Число зубів зубчастого колеса №2
function d = Diam (Gear) # розрахунок делительного діаметра
d = Gear.m * Gear.z;
endfunction
a = (Diam (Gear1) + Diam (Gear2)) / 2 # міжосьова відстань: ans = 52.5
Структури даних можна створювати за допомогою вбудованої функції struct. має синтаксис struct (<"поле 1">, <значение1>, <"поле 2">, <значение 2>. ):
У Octave також передбачені ряд функцій getfield, rmfield, isfield, isstruct, fieldnames, struct, cellstr, iscellstr, setfield, subsref, subsasgn (див. Help).
[Ред] Формат виведення значень
Очевидно, що в різних випадках необхідно виводити результати обчислень з різною точністю. Для цих цілей служить команда format.
де <опция> може приймати одне із значень: