Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.1.0 - Русский


mode

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

Синтаксис

mode(k)
k = mode()

Аргументы

k

целое число от -1 до 6: выбранный или текущий режим исполнения / отображения на экране.

Описание

mode(k) позволяет выбрать как информация отображается в командном окне в ходе выполнения инструкций Scilab. Если эти инструкции включают в себя инструкцию mode, то последующие инструкции в том же окружении будут отображаться в соответствии с новым режимом. Точка с запятой, поставленная в конце любой инструкции всегда прекращает отображение результатов работы, несмотря ни на какой текущий режим исполнения.

Контекст
mode(..) и другие инструкции могут быть использованы и исполнены в различном контексте:
  • Функции (F): функция, написанная на языке Scilab, может включать в себя инструкции mode. Будучи скомпилированной и вызванной, действия внутренней инструкции mode отмечены буквой F в таблице, приведённой ниже. По умолчанию инструкции в функциях запускаются в режиме молчания mode(-1) какой бы ни был текущий режим в вызывающем окружении.

  • Сценарии (S): инструкции Scilab, написанные в файле (обычно с расширением .sce) вне определения любой функции может включать в себя инструкции mode. Когда такой файл запущен с помощью exec(filename) или exec(filename, mode_k), то результаты инструкции mode в исполняемом файле помечены буквой S в таблице, приведённой ниже. По умолчанию сценарии запускаются в режиме mode(3) какой бы ни был текущий режим в вызывающем окружении. Это переписывается с помощью опции mode_k.

  • Командное окно (C): инструкции Scilab, напрямую вводимые в командном окне, всегда отображаются после ввода. Результаты текущего режима инструкции mode или любого последующего режима, введённого в командном окне, помечены буквой C в таблице, приведённой ниже. По умолчанию результаты работы инструкций отображаются в командном окне в режиме mode(2).

  • execstr(T): эта функция принимает матрицу текста T. Каждый элемент исполняется как последовательность инструкций Scilab, который может содержать инструкцию mode. Результаты любой последующей инструкции mode, встреченной в матрице, помечены буквой T ("текст") в таблице, приведённой ниже. По умолчанию все инструкции исполняются в режиме молчания mode(-1) какой бы ни был текущий режим в вызывающем окружении запускающего execstr().

  • Обратные вызовы (K): обратный вызов является уникальной строкой в которой написаны инструкции Scilab. Эта строка назначается для интерактивного компонента, такого как пункт в меню, флажок и т.д. Инструкции исполняются при активации компонента через воздействие: выбор меню, установку или снятие флажка и т.д. Обратный вызов может содержать инструкции mode. Инструкции обратного вызова всегда исполняются непосредственно на уровне командного окна. Результаты их работы остаются в командном окне после того, как обратный вызов будет завершён. Результаты работы инструкции mode, используемые в обратном вызове, отмечены буквой K в таблице, приведённой ниже.

Характеристики
режим # -10 1 2 3 4 6
Инструкции отображения [a] C C C S C C S C S C S K
Результаты отображения [b] всегдавсегдавсегдавсегдавсегдавсегда
Шаг за шагом [s] S F K S F T K
Кратко [c] C+++++SFT +CK++ SFT+S+
Комментарии [d] [e] [f] [g][h][h,i]
Комментарии
[a]: В нормальном режиме инструкции отображаются в предложением о вводе -->, идущим впереди. В пошаговом режиме вместо этого используется >>.
[b]: указывает, что точка с запятой в конце не поставлена.
[c]: "+" означает: нет дополнительной пустой строки после результатов. "++" означает: нет дополнительной пустой строки ни после выполненных инструкций, ни после результатов.
[d]: По умолчанию режим молчания в функциях и с execstr().
[e]: mode(5) эквивалентно mode(1), но не должен быть использован.
[f]: Режим работы по умолчанию в командном окне.
[g]: По умолчанию режим работы exec().
[h]:
  • Любой комментарий // отображается без предложения о вводе и без остановки на нём.
  • Некоторые паразитные предложения о вводе --> и дополнительные пустые строки могут иногда отображаться (программная ошибка).
  • Обратный вызов всегда делается уникальной строкой инструкций, как если бы они были определены и запущены одной строкой. Следовательно, оба доступных пошаговых режима исполнения могут быть активированы, но бесполезны в любом обратном вызове.
[i]: mode(7) делает то же самое, но не должен быть использован.
[s]: Пошаговый режим останавливается после каждой строки инструкций и ждёт нажатия пользователем клавиш <ввод> или p<ввод>, чтобы продолжить работу. Нажатие клавиши p вводит режим паузы. Эти режимы могут быть использованы например в демонстрационных примерах или режиме необработанной отладки.

Режим в вызывающем окружении никогда не меняется после использования mode(..) в вызывающей функции, в исполняемом сценарии .sce или в качестве ввода execstr() после того, как выполнение завершится и вернёт результат. Когда инструкция mode(k) используется в обратном вызове, то она исполняется, она становится и остаётся актуальным режимом отображения в командном окне после завершения обратного вызова.
Вывод специально отображаемый функциями наподобие disp() или mprinf() никогда не отменяется, даже в режиме mode(-1).
mode(5), mode(7) и другие незарегистрированные значения могут приниматься, но не должны использоваться: они могут быть удалены или переопределены в будущем.

Примеры

В функции:

function example_mode(level_mode)
   disp(mode());
   mode(level_mode)
   a = 3
endfunction
mode(2)
example_mode(0)
mode()
example_mode(1)
example_mode(2)

В инструкции exec(script, mode):

ins = [
    "mprintf(""Режим исполнения по умолчанию: %d\n"", mode())"
    "mode(i)"
    "mprintf(""Новый активный режим: %d\n"", mode())"
    "// Новый комментарий"
    "a = rand(2,4)"
    "b = %pi;"
    "c = %s;"
    ];
fn = TMPDIR + "\test_mode.sce";
mputl(ins, fn);
//
mode(2)
i = 1;
exec(fn)
mode()
exec(fn, 0)
i = 3; // инструкции отображаются
exec(fn, 3)
i = 4; // инструкции отображаются + пошаговый режим. "p<ввод>" вводит режим паузы
exec(fn, 4)

With execstr():

ins = [
    "mprintf(""Режим исполнения по умолчанию: %d\n"", mode())"
    "mode(1)        // Введение компактного режима"
    "mprintf(""Новый активный режим: %d\n"", mode())"
    "a = rand(2,4)"
    "b = 1"
    "c = %pi"
    ];
mode(2)
execstr(ins)
mode()       // Восстановлен исходный режим

В обратном вызове (в данном случае меню):

mode(2)
uimenu("parent",0,"Label","mode_test",..
       "callback", "disp(mode()); mode(1); a = rand(2,4), pwd(),");
// Щёлкните по меню "mode_test" и посмотрите что отобразится в командном окне
mode()
delmenu mode_test

Смотрите также

  • exec — исполнение файла-сценария
  • execstr — исполняет Scilab-код, заданный в строках
  • точка с запятой — (;) завершение выражения и разделитель строк
  • debug — Среда отладки в Scilab
  • pause — временно приостанавливает выполнение и разрешает инструкции в консоли.
  • getscilabmode — возвращает режим работы Scilab
  • режим выдачи предупреждений — предупреждающие сообщения
  • funcprot — переключает режим защиты функций Scilab
  • ieee — установка режима исключения с плавающей запятой

История

ВерсияОписание
6.0
  • mode(4) теперь выполняется пошагово и может быть приостановлен в сценариях и в функциях.
  • Для/внутри сценариев mode(4) теперь отображает каждую строчку инструкций и отображает результаты компактно. Он может использоваться для демонстрационных примеров.
  • Обратные вызовы всегда исполнялись в режиме молчания mode(-1). Теперь они исполняются по умолчанию в текущем режиме mode().
Report an issue
<< lines Командное окно %onprompt >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon May 22 12:41:19 CEST 2023