Редактор блок-схем
Вашему вниманию представляется программа, которая предназначена для создания, редактирования и экспорта блок-схем алгоритмов. Пользователю не нужно заботиться о размещении и выравнивании объектов, программа автоматически разместит все блоки. Редактор позволит экспортировать блок-схему в исходный текст программы для разных языков программирования (Pascal, C/C++, Алгоритмический язык). Редактор блок-схем позволяет экспортировать изображение схемы в различные графические форматы: BMP, JPEG, PNG, TIFF, ICO, PPM, XBM, XPM, SVG. Программа распространяется на условиях лицензии GNU General Public License (GPL). Программа написана на языке C++ на основе библиотеки Qt. Доступны бинарные сборки как для GNU/Linux, так и Microsoft Windows (2000/XP/2003/2008/Vista/7).
Возможности
Снимки экрана
- генерация исходного кода на основе блок-схемы в различные языки программирования;
- автоматическое размещение блоков на схеме;
- экспорт схемы в популярные растровые форматы;
- экспорт схем в векторный формат SVG;
- возможность работы с буфером обмена;
- масштабирование блок-схемы;
- поддержка нескольких языков переводов;
- конвертация блок-схемы в исходный код на нескольких языках программирования;
- бесплатность и открытость программы;
- открытый формат файла, основанный XML;
- кроссплатформенность: имеются сборки для Microsoft Windows и GNU/Linux.
Снимки экрана
Загрузки
- Исходный код: https://github.com/viktor-zin/afce/archive/master.zip
- Сайт: https://viktor-zin.github.io/afce
- Бинарная сборка для Windows: afce-0.9.8-win32.exe
- Linux - Mageia Cauldron: afce-0.9.7-0.git20140901.1.mga5.i586.rpm
- Бинарная сборка для MacOS X: afce-0.9.8-beta-x64.dmg
Спасибо за вашу работу.
ОтветитьУдалитьиспользую в школе в связке с PascalABC.
до этого гонял под вайном(дебиан\убунта\минт), пока не додумался посетить вашу страничку.
Просьба - нельзя ли разделить ввод\вывод по командам раздельно,
а то ученики поначалу постоянно путаются.
Еще раз спасибо!
Ввод/вывод разделен.
УдалитьДобрый день.
ОтветитьУдалитьСуществует версия afce-0.9.5, доделанная Сергеем Рябенко: http://blog.nntc.nnov.ru/?p=1326 . Но он полностью изломал локализацию, в остальном всё сделано более-менее. В Mageia локализация была исправлена патчем, и Вы можете найти итоговый пакет afce-0.9.5 в Mageia Cauldron: http://distrib-coffee.ipsl.jussieu.fr/pub/linux/Mageia/distrib/cauldron/SRPMS/core/release .
Список известных ошибок:
- нет английской справки, только русская для всех локалей,
- диалоги частично руссифицированы, у некоторых диалогов нет заголовка,
- при закрытии внутреннего окна крестиком статус кнопки, отвечающей за
это окно, не меняется, в Меню тоже статус не меняется,
- частично нет иконок у некоторый пунктов меню,
- не запоминается расположение внутренних окон.
Пожалуйста, не бросайте разработку программы, ведь скоро уже qt5. Было бы неплохо продолжить разработку и выпустить новую версию afce.
Здравствуйте!
УдалитьНа сколько мне известно, Qt5 уже давно вышла. А вот продолжать разработку программы пока не хватает времени. Хотя, действительно, там есть куда двигаться. Может, через какое-то время я всё таки смогу продолжить разработку.
Тогда еще из школьных языков можно было бы добавить BASIC в разных диалектах.
УдалитьЯ убрал для Mageia переключение языков из Меню, которое было у Сергея Рябенко, и перешёл на автоопределение языка, так как не реализовано запоминание в конфиге, но это тоже можно вернуть и доделать.
С нетерпением будем ждать новой версии!
Я опубликовал исходники на GitHub: https://github.com/viktor-zin/afce
УдалитьДумаю, можно совместными усилиями продолжить разработку Редактора.
Лучше было начать с версии 0.9.5 и её продолжить улучшать, именно она признана образовательными дистрибутивами Alt Linux, EduMagic. А раз Вы начали с 0.9.0, то тогда внести наработки из версии 0.9.5.
УдалитьПопробую собрать воедино все изменения и дополнения.
Удалитьhttp://svnweb.mageia.org/packages/cauldron/afce/current/?view=log
ОтветитьУдалитьПосмотрите, пожалуйста, чего я исправил после того как Вы взяли src.rpm.
Не получается запустить, выдает ошибку qt platform.
ОтветитьУдалитьНапишите в какой операционной системе запускаете и какую версию Редактора используете?
УдалитьОперационная система Windows 7. Версия afce-0.9.7-win32.
УдалитьПредлагаю общение перевести на GitHub, там можно скриншоты прикреплять, да делать общее обсуждение проблем. Добро пожаловать: http://github.com/viktor-zin/afce/issues
УдалитьУважаемые разработчики, спасибо за программу!
ОтветитьУдалитьНо у меня есть проблема
содержимое блока постоянно выходит за его рамки
Например, в том же блоке процесса и операторе условия
Возможно ли сделать какое-нибудь растяжение блоков?
Операционная система Windows 7. Версия afce-0.9.7-win32.
УдалитьСпасибо за отзыв! Блоки расширяться не могут, но можно переносить строки. А если уж совсем надо, то можно передать в SVG и в Inkscape отредактировать.
УдалитьДоброго дня!
УдалитьА как перенести строку?
Этот комментарий был удален автором.
ОтветитьУдалитьЗдравствуйте. Я хотела просмотреть код программы afce, но многое там не поняла, непривычный синтаксис. Можете скинуть схему построения программы? Или что-либо, что может помочь разобраться в коде. Пыталась гуглить определенные команды, но продвинулась не сильно.
ОтветитьУдалитьОгромное спасибо за дистрибутив для Mac OS X
ОтветитьУдалитьДобрый день! Нет ли дистрибутива для Win64?
ОтветитьУдалитьОтдельную сборку для Windows x64 не делал. 32-битная версия успешно работает на 64-битной платформе. Да и из исходников можно, думаю, без проблем собрать 64-битную версию - просто не было острой необходимости.
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьСкачал , но у меня программа на английском языке , как русский включить не разобрался
ОтветитьУдалитьДо версии 0.9.8 язык выбирался автоматически и не было возможности выбрать вручную. Начиная с 0.9.8 имеется возможность выбрать языка как при установке, так и из меню «Вид» в программе. Ссылки на этом блоге вели на версию 0.9.7, теперь я обновил их до последней версии.
УдалитьВ while что-то текст в две строки не хочет становиться, в if нормально.
УдалитьТолько что проверил - действительно так. Надо будет исправить. Сейчас пока времени не хватает. В апреле-мае планирую уделить проекту время.
УдалитьДякую за програму. Мені пригодилася.
ОтветитьУдалитьУспіхів!!!
Почему если используется краткая форма ветвления справа в коде все равно пишет else?
ОтветитьУдалитьВ принципе, это не ошибка, код получается всё равно правильный. Просто генерация кода не оптимизирована. Предлагаю на гитхабе сделать заметку по этому поводу.
УдалитьСофтина просто замечательная! Мужик, спасибо тебе огромное. Главное никакой богомерзкой явы и костылей.
ОтветитьУдалитьЗа человеческую сборку отдельный респект!
Ушёл работать и пускать слюни...
P.S.
Собрал на QT5 - Всё отлично работает
возникает ошибка, при оформлении цикла
ОтветитьУдалитьПаскаль
for i:=1 to n do
...
На С++ переводит
for(int i = 1; i < n; ++i)
теряется последнее значение
В файле сpp измените условие (знак < замените на <= как в тексте ниже)
Удалить"template":"for(int %var% = %from%; %var% <= %to%; ++%var%) {%branch1%\n}"
Не совпадает блок Цикла "ДО" со справочным. В справке зацикливание по ветке НЕТ, а в блоке по ветке "ДА". Может сделать везде по ветке НЕТ?
ОтветитьУдалитьЯ хочу сделат болгарский перевод програму. Что мне надо сделать?
ОтветитьУдалитьЗдравствуйте! Вам нужно взять файл из проекта afce_en_US.ts переименовать afce_bg_BG.ts и в нем перевести необходимые строки (формат XML). Можно воспользоваться утилитой Qt Linguist. Результат перевода можно выслать мне. Также можно перевести документацию. Подробности тут: https://github.com/viktor-zin/afce/blob/master/TRANSLATIONS.md (англ.)
Удалитьнепонятно как выводить текстовые сообщения.
ОтветитьУдалитьпри переводе условия сравнения , например, a>5 and b<9 в язык Ершова не превращает and в русское "и".
ОтветитьУдалитькак хадавать типы переменных (строковые вообще есть?) и их объявления не появляются в коде
Такой функционал еще не реализован. Это требует ввода некоторых ограничений при использовании подобных операторов, чтобы можно было в автоматическом режиме преобразовывать. Например, в разных языках программирования оператор неравенства выглядит !=, а в других <>. Также операторы и/или/не имеет разные приоритеты в разных языках. И эти случаи нужно корректно отрабатывать и правильно преобразовывать в соответствующий язык. Генерация абсолютно рабочего исходного кода по блок-схеме не являются конечной целью. Этот редактор в первую очередь предназначен для быстрого построения блок-схем и дальнейшего экспорта в графический формат.
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитькак можно поставить в блок схему селективное ветвление(круг)
ОтветитьУдалитьК сожалению, такой функционал не реализован.
УдалитьХорошая программа, но лишь для школьников. Для уроков информатики. Ничего серьезного нарисовать не получится, так как невозможно сделать переходы в нужные места программы. Также редактирование слабовато - элементы удаляются вместе со всеми вложенными структурами.
ОтветитьУдалитьСогласен, но и я её и создавал главным образом для школьников и учителей информатики.
УдалитьХороший редактор. Спасибо.
ОтветитьУдалитьТолько для цикла с параметром в блоке через точку с запятой (а не через многоточие) указывается имя и начальное значение параметра (например і:=0), условие выполнения цикла (например, n-конечное значение параметра і) и шаг цикла (например, 1).
Т.е. вместо i:=0...n-1 следует изобразить: i=0; n; 1;
Аналогично (на С++): for(int i = 0; i <= n; i++)
Стандартом языка С++ запись функции
ОтветитьУдалитьvoid main(void) {
}
является некорректной, поскольку главная функция должна возвращать целочисленный результат, подтверждающий правильность её завершения:
int main() {
return 0;
}
Не могли бы Вы разместить у себя на сайте сборки для Ubuntu?
ОтветитьУдалитьUbuntu 16.04 x86: https://yadi.sk/d/1uPow6Je3RnjxK
Ubuntu 16.04 x64: https://yadi.sk/d/3sNuboy53RnjyN
Здравствуйте, Виктор. Программа AFCE 0.9.8 это последняя версия?
ОтветитьУдалитьЕсть предложение для цикла с параметром. В окне ввода значений добавить поле со списком с подписью Шаг. Шаг может принимать значение +1 и -1. Если выбран шаг +1 все остается как есть. Если -1, в блоке модификации пишется в конце текст шаг=-1, при генерации кода в паскаль вместо to, downto, при генерации в Бейск, в цикле for добавить в конце step -1, при генерации в Ci переменная цикла больше, либо равна конечному значению и изменяется на декремент и т.д.
ОтветитьУдалитьВообще спасибо за программу, очень удобная для составления небольших блок-схем. Опробовал со студентами.
ОтветитьУдалитьХорошо, что в AFCE пользователь может сам создать привила перекодировок в любой удобный для него язык, уже попробовал и сделал, спасибо!
ОтветитьУдалитьВиктор, я вам высылал уже по почте файл для перекодировке блок-схемы в язык java, здесь повторю ссылку на файл и расскажу о нем.
ОтветитьУдалить"Мы разработали файл для перекодировок блок-схемы в язык java, этот файл можно скачать по следующему адресу(), данный файл должен быть размещен в каталоге afce(Где установлена программа AFCE), в подкаталоге generators.
В нашем файле перекодировка построена так, что ввод входных переменных осуществляется через элементы параметра args[], args это входной параметр метода main. Иными словами при запуске класса должны быть заданны в командной строке аргументы класса, разделителем списка аргументов является пробел.
ИмяКласса список_аргументов
Если аргументов класса не хватает в командной строке для ввода переменных, программа автоматически прекращается и выдается сообщение no data.
"
C уважением, Виталий.
Здравствуйте! Да, я видел файлы, но пока у меня не было времени с ними разобраться. Я обязательно гляну и отвечу вам более обстоятельно. Спасибо за вклад в развитие программы!
УдалитьАдрес файла Ubuntu 16.04 x86:https://yadi.sk/d/5uv3GAxkY9vIjg
ОтветитьУдалитьПрограмма полезная. Нельзя такую забрасывать.
ОтветитьУдалитьНет объявления переменных, что касается языка Си. Код, сгенерированный программой, не будет работать без этого.
ОтветитьУдалитьСпасибо большое за программу!
ОтветитьУдалитьПеревод в код меня не сильно интересовал, мне нужна была возможность быстро и легко рисовать блок-схемы. Но немного разочаровало отсутствие возможности создавать блок-схемы отдельных функций. Если проблема состоит в переводе таких отдельных блоков на определенные языки программирования, то можно было бы компенсировать это хотя бы возможностью добавления новых вкладок/листов, в которых будет размещены коды отдельных функций.