S T R U C T O R I Z E R

GNU General Public License



Read here ...
F.A.Q.
Why doesn't Structorizer support FOR loops in C-like syntax, i.e. for(...; ...; ...)?
Though this syntax - once very unusual when C was designed - has become pretty popular since many C-inspired other languages have adopted it, the disadvantages caused by it concerning language-independence and predictability e.g. on code export are significant.
One might expect that a typical FOR loop in C syntax looks like this:
for (int i = 0; i < N; i++)
In this case it would indeed be easy to extract the loop variable (i), a start value (0), an end value (N-1), and an increment (+1), which are needed to interpret the loop in a generic way. Unfortunately the loop schema can be (ab)used in many ways, however, as it allows to place arbitrary instruction sequences (even empty ones) in zones 1 and 3 and any Boolean expression or even nothing in zone 2. This way, its flexibility undermines the semantics of the Nassi-Shneiderman symbols and complicates execution and code export heavily.
The wild and inconsistent guesswork needed to extract the above information from FOR loop headers of the strangest kinds in dozens of different syntax variants in early Structorizer versions was no longer acceptable such that we decided for a form-based FOR loop editor that ensures a reliable interpretation.
You may still switch to free text mode and write down a C-style loop header for documentation purposes but then Structorizer won't account for executability and sensible code export results.
see 0 comments on this item
Where can I find help about Nassi-Shneiderman diagrams?
If you need help with Nassi-Shneiderman diagrams, please consider one of the following links:

see 0 comments on this item
When I import a source file e.g. from Pascal and re-export it then many variables lose their information. Can this loss be avoided?
Yes, mostly. Without declarations, Structorizer can only guess the type from assigned values (if these are very simple). The type of variables introduced by an INPUT instruction cannot be inferred at all. So make sure to have import option "Import variable declarations" enabled before you parse code. (By default, it is switched off.) This will preserve the declarations in the diagram such that on export more type information (ideally all) is available.
see 0 comments on this item
What to do if diagram size and GUI are too small in high-DPI or 4k screen environments?

On 4k screens (or in high-DPI environment, in general), the icons, menus, and diagrams may appear too small to be legible or acknowledgeable. This is because Java Swing had been lacking DPI awareness, at least before Java 9.

So a workaround was implemented to upsize the GUI via the GUI scaling preference. This mode is also helpful for beamer presentations. It may not affect all GUI elements in a consistent way, though, particularly not with all Looks & Feels.

The GUI scaling does not affect the size of the diagram itself, though. Its scaling is completey independent from the GUI scaling and instead to be done via the Font preference or the related buttons / hot keys. This holds as well for the editors texts, output window content, and the Turtleizer window, to name just some of them.

In a future version, the improved DPI awareness mechanism of Java will certainly be made use of, but the explicit GUI scaling facility is likely to remain, at least for the mentioned presentation purposes.

Please log in first to post a comment.
What is the best font to choose for diagrams?
For Structorizer 3.x, you need to choose a font that supports Unicode. Check the test string in the font dialog and make sure you see an arrow and the sign for an empty set ():

The following fonts should work fine:
  • Arial Unicode
  • Dialog
  • Lucidia Bright
  • Lucidia Sans
  • Lucidia Sans Unicode
  • Monospaced
  • OpenSymbol
  • Sans Serif
  • Serif
see 0 comments on this item
The current version seems to be defect - where may we obtain an older stable version?

This is very simple: In the GitHub project Structorizer.Desktop you find most of the published versions since 3.22-30 among the Releases (the more recent ones even without gap). Next to the source code snapshots you will find the delivered packages for Mac, Linux, and Windows there (and even the related user guide version).

So you can simply download the respective package of e.g. the penultimate version, unzip it, create a link and use it as explained in the User Guide. On a Windows machine, if you had installed Structorizer as application, you might alternatively copy the contained file "Structorizer.jar" into the installation folder of Structorizer and switch the update mode to "notify and ask" or shut it off lest the backup version should immediately be overridden again on start.

see 0 comments on this item
Structorizer works only with instructions in French. Can you help me?
This is no longer true and a matter of configuration. As Structorizer does not follow Microsoft standards, the language of the graphical user interface is independent of the syntax used to develop algorithms.
Since Structorizer version 3.26-00, the default keyword set for the diagram elements is in English. Anyway, you may simply go to the respective configuration panel via menu item "Preferences"->"Parser" and change the keywords according to your needs. Note that you may even choose among some pre-configured localized keyword sets via the broad button near the lower right corner of the Parser Preferences panel.
Whenever you modify the parser preferences, Structorizer will offer you automatically to refactor all open diagrams accordingly (i.e. to replace the previously valid keywords in the texts by the new ones).
Likewise, when you load diagrams Structorizer will adapt them to the current keyword set (if you allowed this refactoring in the import options for NSD files, reachable via menu item "Preferences"->"Import"; it is enabled by default).
see 1 comments on this item
Is there any user manual for Structorizer?
Yes, here it is: Structorizer User Guide

Several people have worked on this before. Check out these documents:
see 0 comments on this item
Is there a loop element with "do while" semantics as in C etc.?
Yes and no. In fact, Structorizer provides an end-controlled loop with "repeat until" semantics. The only difference to a "do while" loop is the inverse logic of the loop condition. For avoiding ambiguity, Structorizer can only provide one of them. It should not be a big issue to negate the condition in order to achieve the opposite effect if desired. On execution, import, and export Structorizer manages very well to ensure algorithmic equivalence.
You can find a more detailed discussion here: Issue #830
see 0 comments on this item
Is the Android app functionally compatible with the Desktop version?
No, unfortunately, the Android app is not only reduced to very rudimentary diagram editing without any additional features, display modes etc. It is not even possible to load all nsd files created by recent Desktop versions (in particular if the diagram contains TRY elements), leave allone arrangement files. The Android app has not kept pace with the desktop version development since about 2007. So it may just be used as a viewer for simple diagrams. In fact we think it does not make much sense to develop algorithms on a smartphone. Possibly there will be some updates at least to enable it to load all nsd files again, but still with very poor display options.
see 0 comments on this item
Is it possible to export a library of routines even if some of them are not called by another?
Yes, since version 3.30-07 you may use the so called group export for it. Simply put all subroutine diagrams (and possibly needed includables) into a common arrangement group, select the group in the Arranger index and start the export via the context menu of the Arranger index. The export may also be done as batch job at the command line having saved the group as an arrangement file before.
see 0 comments on this item
Is it possible to ensure some "classroom" settings for Structorizer, i.e. common settings for all users?
Yes. Since version 3.29-12 you can place a central ini file with selectively exported preferences in the installation directory of Structorizer. The effect will be that the centrally stored preferences will override the respective personal settings on Structorizer start. It does not hinder users to modify them during the session, to store them as file and to reload this after the next start, though. But pupils cannot e.g. leave an idiotic configuration just to rile the next one using the same account. (With inidvidual local accounts this kind of joke is hardly possible anyway.)
This central ini file is a relatively easy way to prepare some default settings that differ from the standard Structorizer defaults, which are otherwise imposed on every new user.
see 0 comments on this item
Do I have to save diagrams as nsd files first to create an Arrangement archive?
No. After having e.g. imported a bunch of diagrams from a source file or decomposed a complex diagram into several subroutine diagrams, all placed in the Arranger, you should just make sure that the collaborating diagrams form a common group (via the context menu tools in the Arranger index). Then select the group in the Arranger index and activate the context menu item "Save changes". Choose "As archive (*.arrz)". This way you can save the member diagrams of the group directly in the emerging arrz file. (When you later edit diagrams loaded from an arrangement archive their changes will be saved directly in the archive.)
see 0 comments on this item