Этот инструмент позволяет автоматически генерировать блоксхемы на основе псевдокода или исходного кода на любом языке программирования. Поддерживаются практически все инструкции ветвления и циклы. Размеры блоков соответствуют ГОСТам, а также доступны ГОСТовские шрифты.
Если требуется использование математических формул, их можно задавать через Typst в любом текстовом поле.
Интерфейс разделён на две части:
Создание: кнопка для рендеринга блоксхемы из DSL (Domain Specific Language - особый язык, описанный ниже).
Настройки: кнопка для задания параметров блоксхемы.
Генерация: кнопка для создания DSL из обычного исходного кода на любом языке программирования.
Скачивание: кнопка для загрузки сгенерированной блоксхемы.
Слева: редактор DSL.
Справа: результат в виде визуализированной блоксхемы.
У каждого типа блока есть своё название. Чтобы нарисовать блок, необходимо указать его название и текст. Некоторыея блоки имеют текст по умолчанию, который можно менять. Вот основные правила:
Чтобы нарисовать блок вычислений с текстом x = 1 + 2
, используйте:
block`x = 1 + 2`
Если текст занимает несколько строк:
block`x = 1 + 2
x = 1 + 2`
Для отображения формул с использованием Typst в тексте блока нужно использовать знак $
перед строкой. Например, чтобы отобразить формулу x = 1 + 2
, используйте:
block$`x = 1 + 2`
start
и stop
. У них установлен текст по умолчанию, поэтому его писать не обязательно.
block
io
Блок называется if
. Вместе с ним используются псевдоблоки then
и else
, которые добавляют текст около стрелочек и позволяют задавать последовательность других блоков в фигурных скобках. Примеры:
Пример 1
if$`x > 0` then`да` { block`x = x + 1` }
Пример 2
if`x + y < 0`
then`да`
{ block`y = y - 1` }
else`нет`
{
block`y = y + 1`
block`x = x - 1`
}
Блок называется switch
. Вместе с ним используются псевдоблоки case
. В фигурных скобках после каждого case
можно указать только один блок. Пример:
switch`x` case`1` { block`y = 0` } case`0` { block`y = 1` }
for
, while
, do_while
. Они работают одинаково, меняется только название блока и его отрисовка. Пример:
for`i = 0(1)5` {
block`x = x + 2 * i`
}
Обычный - connect
, межстраничный - pc
. Внутри можно указывать текст. При стандартных настройках межстраничный соединитель вмещает до трёх строк текста.
join
. Используется для объединения веток после разрыва страницы. Пример:
Блоксхема 1
start
if$`x>0` then`да` {
block`x = x - 1`
pc`01
02
B`
}
else`нет` {
block`x = x + 1`
pc`01
02
A`
}
Блоксхема 2
join {
pc`01
02
A`
block`y = x`
}
{
pc`01
02
B`
block`y = -x`
}
stop
fn