пятница, 30 сентября 2011 г.

Редактор блок-схем

Вашему вниманию представляется программа, которая предназначена для создания, редактирования и экспорта блок-схем алгоритмов. Пользователю не нужно заботиться о размещении и выравнивании объектов, программа автоматически разместит все блоки. Редактор позволит экспортировать блок-схему в исходный текст программы для разных языков программирования (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.


Снимки экрана






Загрузки
  1. Исходный код: https://github.com/viktor-zin/afce/archive/master.zip
  2. Сайт: https://viktor-zin.github.io/afce
  3. Бинарная сборка для Windows: afce-0.9.8-win32.exe
  4. Linux - Mageia Cauldron: afce-0.9.7-0.git20140901.1.mga5.i586.rpm
  5. Бинарная сборка для MacOS X: afce-0.9.8-beta-x64.dmg

54 комментария:

  1. Павел Росс, информатика 5-11 клпятница, 23 марта 2012 г., 03:01:00 GMT+7

    Спасибо за вашу работу.
    использую в школе в связке с PascalABC.
    до этого гонял под вайном(дебиан\убунта\минт), пока не додумался посетить вашу страничку.
    Просьба - нельзя ли разделить ввод\вывод по командам раздельно,
    а то ученики поначалу постоянно путаются.
    Еще раз спасибо!

    ОтветитьУдалить
  2. Добрый день.
    Существует версия 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.

    ОтветитьУдалить
    Ответы
    1. Здравствуйте!

      На сколько мне известно, Qt5 уже давно вышла. А вот продолжать разработку программы пока не хватает времени. Хотя, действительно, там есть куда двигаться. Может, через какое-то время я всё таки смогу продолжить разработку.

      Удалить
    2. Тогда еще из школьных языков можно было бы добавить BASIC в разных диалектах.
      Я убрал для Mageia переключение языков из Меню, которое было у Сергея Рябенко, и перешёл на автоопределение языка, так как не реализовано запоминание в конфиге, но это тоже можно вернуть и доделать.
      С нетерпением будем ждать новой версии!

      Удалить
    3. Я опубликовал исходники на GitHub: https://github.com/viktor-zin/afce

      Думаю, можно совместными усилиями продолжить разработку Редактора.

      Удалить
    4. Лучше было начать с версии 0.9.5 и её продолжить улучшать, именно она признана образовательными дистрибутивами Alt Linux, EduMagic. А раз Вы начали с 0.9.0, то тогда внести наработки из версии 0.9.5.

      Удалить
    5. Попробую собрать воедино все изменения и дополнения.

      Удалить
  3. http://svnweb.mageia.org/packages/cauldron/afce/current/?view=log
    Посмотрите, пожалуйста, чего я исправил после того как Вы взяли src.rpm.

    ОтветитьУдалить
  4. Не получается запустить, выдает ошибку qt platform.

    ОтветитьУдалить
    Ответы
    1. Напишите в какой операционной системе запускаете и какую версию Редактора используете?

      Удалить
    2. Операционная система Windows 7. Версия afce-0.9.7-win32.

      Удалить
    3. Предлагаю общение перевести на GitHub, там можно скриншоты прикреплять, да делать общее обсуждение проблем. Добро пожаловать: http://github.com/viktor-zin/afce/issues

      Удалить
  5. Уважаемые разработчики, спасибо за программу!
    Но у меня есть проблема
    содержимое блока постоянно выходит за его рамки
    Например, в том же блоке процесса и операторе условия
    Возможно ли сделать какое-нибудь растяжение блоков?

    ОтветитьУдалить
    Ответы
    1. Операционная система Windows 7. Версия afce-0.9.7-win32.

      Удалить
    2. Спасибо за отзыв! Блоки расширяться не могут, но можно переносить строки. А если уж совсем надо, то можно передать в SVG и в Inkscape отредактировать.

      Удалить
    3. Доброго дня!
      А как перенести строку?

      Удалить
  6. Этот комментарий был удален автором.

    ОтветитьУдалить
  7. Здравствуйте. Я хотела просмотреть код программы afce, но многое там не поняла, непривычный синтаксис. Можете скинуть схему построения программы? Или что-либо, что может помочь разобраться в коде. Пыталась гуглить определенные команды, но продвинулась не сильно.

    ОтветитьУдалить
  8. Огромное спасибо за дистрибутив для Mac OS X

    ОтветитьУдалить
  9. Добрый день! Нет ли дистрибутива для Win64?

    ОтветитьУдалить
    Ответы
    1. Отдельную сборку для Windows x64 не делал. 32-битная версия успешно работает на 64-битной платформе. Да и из исходников можно, думаю, без проблем собрать 64-битную версию - просто не было острой необходимости.

      Удалить
  10. Этот комментарий был удален автором.

    ОтветитьУдалить
  11. Скачал , но у меня программа на английском языке , как русский включить не разобрался

    ОтветитьУдалить
    Ответы
    1. До версии 0.9.8 язык выбирался автоматически и не было возможности выбрать вручную. Начиная с 0.9.8 имеется возможность выбрать языка как при установке, так и из меню «Вид» в программе. Ссылки на этом блоге вели на версию 0.9.7, теперь я обновил их до последней версии.

      Удалить
    2. В while что-то текст в две строки не хочет становиться, в if нормально.

      Удалить
    3. Только что проверил - действительно так. Надо будет исправить. Сейчас пока времени не хватает. В апреле-мае планирую уделить проекту время.

      Удалить
  12. Дякую за програму. Мені пригодилася.
    Успіхів!!!

    ОтветитьУдалить
  13. Почему если используется краткая форма ветвления справа в коде все равно пишет else?

    ОтветитьУдалить
    Ответы
    1. В принципе, это не ошибка, код получается всё равно правильный. Просто генерация кода не оптимизирована. Предлагаю на гитхабе сделать заметку по этому поводу.

      Удалить
  14. Софтина просто замечательная! Мужик, спасибо тебе огромное. Главное никакой богомерзкой явы и костылей.
    За человеческую сборку отдельный респект!

    Ушёл работать и пускать слюни...

    P.S.
    Собрал на QT5 - Всё отлично работает

    ОтветитьУдалить
  15. возникает ошибка, при оформлении цикла
    Паскаль
    for i:=1 to n do
    ...
    На С++ переводит
    for(int i = 1; i < n; ++i)
    теряется последнее значение

    ОтветитьУдалить
    Ответы
    1. В файле сpp измените условие (знак < замените на <= как в тексте ниже)
      "template":"for(int %var% = %from%; %var% <= %to%; ++%var%) {%branch1%\n}"

      Удалить
  16. Не совпадает блок Цикла "ДО" со справочным. В справке зацикливание по ветке НЕТ, а в блоке по ветке "ДА". Может сделать везде по ветке НЕТ?

    ОтветитьУдалить
  17. Я хочу сделат болгарский перевод програму. Что мне надо сделать?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте! Вам нужно взять файл из проекта afce_en_US.ts переименовать afce_bg_BG.ts и в нем перевести необходимые строки (формат XML). Можно воспользоваться утилитой Qt Linguist. Результат перевода можно выслать мне. Также можно перевести документацию. Подробности тут: https://github.com/viktor-zin/afce/blob/master/TRANSLATIONS.md (англ.)

      Удалить
  18. непонятно как выводить текстовые сообщения.

    ОтветитьУдалить
  19. при переводе условия сравнения , например, a>5 and b<9 в язык Ершова не превращает and в русское "и".

    как хадавать типы переменных (строковые вообще есть?) и их объявления не появляются в коде

    ОтветитьУдалить
    Ответы
    1. Такой функционал еще не реализован. Это требует ввода некоторых ограничений при использовании подобных операторов, чтобы можно было в автоматическом режиме преобразовывать. Например, в разных языках программирования оператор неравенства выглядит !=, а в других <>. Также операторы и/или/не имеет разные приоритеты в разных языках. И эти случаи нужно корректно отрабатывать и правильно преобразовывать в соответствующий язык. Генерация абсолютно рабочего исходного кода по блок-схеме не являются конечной целью. Этот редактор в первую очередь предназначен для быстрого построения блок-схем и дальнейшего экспорта в графический формат.

      Удалить
  20. Этот комментарий был удален автором.

    ОтветитьУдалить
  21. как можно поставить в блок схему селективное ветвление(круг)

    ОтветитьУдалить
  22. Хорошая программа, но лишь для школьников. Для уроков информатики. Ничего серьезного нарисовать не получится, так как невозможно сделать переходы в нужные места программы. Также редактирование слабовато - элементы удаляются вместе со всеми вложенными структурами.

    ОтветитьУдалить
    Ответы
    1. Согласен, но и я её и создавал главным образом для школьников и учителей информатики.

      Удалить
  23. Хороший редактор. Спасибо.
    Только для цикла с параметром в блоке через точку с запятой (а не через многоточие) указывается имя и начальное значение параметра (например і:=0), условие выполнения цикла (например, n-конечное значение параметра і) и шаг цикла (например, 1).
    Т.е. вместо i:=0...n-1 следует изобразить: i=0; n; 1;
    Аналогично (на С++): for(int i = 0; i <= n; i++)

    ОтветитьУдалить
  24. Стандартом языка С++ запись функции
    void main(void) {
    }
    является некорректной, поскольку главная функция должна возвращать целочисленный результат, подтверждающий правильность её завершения:
    int main() {

    return 0;
    }

    ОтветитьУдалить
  25. Не могли бы Вы разместить у себя на сайте сборки для Ubuntu?
    Ubuntu 16.04 x86: https://yadi.sk/d/1uPow6Je3RnjxK
    Ubuntu 16.04 x64: https://yadi.sk/d/3sNuboy53RnjyN

    ОтветитьУдалить
  26. Здравствуйте, Виктор. Программа AFCE 0.9.8 это последняя версия?

    ОтветитьУдалить
  27. Есть предложение для цикла с параметром. В окне ввода значений добавить поле со списком с подписью Шаг. Шаг может принимать значение +1 и -1. Если выбран шаг +1 все остается как есть. Если -1, в блоке модификации пишется в конце текст шаг=-1, при генерации кода в паскаль вместо to, downto, при генерации в Бейск, в цикле for добавить в конце step -1, при генерации в Ci переменная цикла больше, либо равна конечному значению и изменяется на декремент и т.д.

    ОтветитьУдалить
  28. Вообще спасибо за программу, очень удобная для составления небольших блок-схем. Опробовал со студентами.

    ОтветитьУдалить
  29. Хорошо, что в AFCE пользователь может сам создать привила перекодировок в любой удобный для него язык, уже попробовал и сделал, спасибо!

    ОтветитьУдалить
  30. Виктор, я вам высылал уже по почте файл для перекодировке блок-схемы в язык java, здесь повторю ссылку на файл и расскажу о нем.
    "Мы разработали файл для перекодировок блок-схемы в язык java, этот файл можно скачать по следующему адресу(), данный файл должен быть размещен в каталоге afce(Где установлена программа AFCE), в подкаталоге generators.
    В нашем файле перекодировка построена так, что ввод входных переменных осуществляется через элементы параметра args[], args это входной параметр метода main. Иными словами при запуске класса должны быть заданны в командной строке аргументы класса, разделителем списка аргументов является пробел.
    ИмяКласса список_аргументов
    Если аргументов класса не хватает в командной строке для ввода переменных, программа автоматически прекращается и выдается сообщение no data.
    "
    C уважением, Виталий.

    ОтветитьУдалить
    Ответы
    1. Здравствуйте! Да, я видел файлы, но пока у меня не было времени с ними разобраться. Я обязательно гляну и отвечу вам более обстоятельно. Спасибо за вклад в развитие программы!

      Удалить
  31. Адрес файла Ubuntu 16.04 x86:https://yadi.sk/d/5uv3GAxkY9vIjg

    ОтветитьУдалить