Recent from talks
Nothing was collected or created yet.
Flowgorithm
View on Wikipedia| Flowgorithm | |
|---|---|
| Paradigm | Structured, imperative |
| Designed by | Devin Cook |
| First appeared | 2014 |
| Stable release | 4.5.0
/ October 8, 2024 |
| Typing discipline | Static, strong, safe |
| Implementation language | C# |
| OS | Windows |
| License | Freeware |
| Filename extensions | .fprg |
| Website | flowgorithm |
| Influenced by | |
| Flowcharts | |
Flowgorithm is a graphical authoring tool which allows users to write and execute programs using flowcharts. The approach is designed to emphasize the algorithm rather than the syntax of a specific programming language.[1] The flowchart can be converted to several major programming languages. Flowgorithm was created at Sacramento State University.[2]
Origin of name
[edit]The name is a portmanteau of "flowchart" and "algorithm".[3]
Supported programming languages
[edit]Flowgorithm can interactively translate flowchart programs into source code written in other programming languages. As the user steps through their flowchart, the related code in the translated program is automatically highlighted. The following programming languages are supported:[4]
Multilingual support
[edit]Flowgorithm supports the following languages:[5]
Graphical shapes
[edit]Flowgorithm combines the classic flowchart symbols and those used by SDL diagrams. The color of each shape is shared by the associated generated code and the console window. The colors can be changed to several built-in themes.
Example
[edit]The image below has the solution for 99 Bottles of Beer. A function is used to return a string that either contains the singular "bottle" or plural "bottles" depending on the value of the parameter.
See also
[edit]Other educational programming languages include:
- Alice
- DRAKON
- LARP
- Microsoft Small Basic
- Raptor
- Scratch
- Blockly, interface used by Scratch to make the code blocks
- Visual Logic
References
[edit]- ^ "ASEE PSW-2015 Conference Proceedings" (PDF). asee.org. p. 158. Retrieved 2016-05-04.
- ^ Kourouma, Mathieu (22 October 2016). "Capabilities and Features of Raptor, Visual Logic, and Flowgorithm for Program Logic and Design". ResearchGate. Retrieved 16 July 2017.
- ^ "Info". Flowgorithm. Archived from the original on 2016-03-16. Retrieved 2016-01-15.
- ^ "Features". Flowgorithm. Archived from the original on 2015-12-09. Retrieved 2016-01-15.
- ^ "Flowgorithm - Flowchart Programming Language". flowgorithm.org. Archived from the original on 2025-11-01. Retrieved 2025-11-01.
External links
[edit]Flowgorithm
View on GrokipediaHistory and Development
Origin and Naming
Flowgorithm was developed by Devin Cook, a lecturer in the Computer Science Department at California State University, Sacramento, with the goal of creating a visual tool to make programming more accessible for beginners by leveraging graphical flowcharts instead of text-based syntax.[2][6] This approach allowed users to design, execute, and debug algorithms intuitively, fostering a deeper understanding of programming logic without the immediate barriers of coding conventions.[1] The software was initially released as freeware, distributed openly to educators and students to facilitate the transition from conceptual flowcharting to actual code generation in various programming languages.[1] Its name is a portmanteau of "flowchart" and "algorithm," directly reflecting its core emphasis on visualizing and implementing algorithmic processes through flowchart structures.[1] The primary motivation behind Flowgorithm's creation stemmed from the challenges novices face in introductory computer science courses, where the syntax-heavy nature of traditional languages like C++ or Java often overwhelms learners and hinders focus on fundamental concepts such as control flow and data manipulation.[2] By prioritizing visual representation, Cook aimed to lower this entry barrier, enabling students to experiment with programming ideas more rapidly and build confidence before tackling textual code.[1]Key Milestones and Updates
Flowgorithm's first public release occurred on August 6, 2014, with version 1.0.2, introducing core functionality for creating flowcharts that could be executed directly and translated into basic source code for several programming languages, such as C++, Java, and Python.[7] This initial version established the tool's foundation as an educational aid for visualizing algorithms without requiring text-based coding.[1] Over the following years, Flowgorithm saw steady enhancements in language support and export capabilities. By 2015, the tool had expanded to include over 10 programming languages in its Source Code Viewer, with additions like Swift in version 1.10, alongside improvements to existing templates for better code generation accuracy.[8] A notable milestone came in 2018 with version 2.18.4, which introduced "Auto Pseudocode" export for generating language-agnostic representations and added support for TypeScript and Scala, while revamping the Source Code Viewer interface with unique icons for each language to enhance usability.[9] More recent developments have focused on broadening compatibility and performance. In March 2023, version 3.4.2 added Kotlin support to the Source Code Viewer, enabling flowchart-to-Kotlin code translation and further extending the tool's reach to modern mobile and backend development contexts.[10] The 2024 release of version 4.0 marked a significant technical upgrade, incorporating a new graphics engine for faster rendering and reduced memory usage, along with enhancements to Turtle Graphics and the introduction of an "Ignore Breakpoints" feature for streamlined debugging.[4] As of November 2025, no major updates have been released that year, though minor fixes continue through version 4.5, which addressed Source Code Viewer bugs in October 2024.[4] Community involvement has played a key role in Flowgorithm's evolution, with ongoing open-source contributions including a macOS port maintained on GitHub since 2021, allowing broader platform accessibility.[11] Additionally, user-driven enhancements, such as multilingual interface translations (e.g., additions in Chinese, German, and others by 2015) and bug fixes, are documented in the official revision history, reflecting collaborative improvements tracked since the tool's inception.[8][4]Core Features
Graphical Shapes and Syntax
Flowgorithm employs standard flowchart symbols to represent program elements visually, allowing users to construct algorithms without textual code. The primary shapes include terminals, processes, input/output operations, decisions, and loops, each with defined geometric forms and functionalities. These shapes are connected by directed arrows to indicate control flow, ensuring a clear depiction of execution sequence from initialization to termination.[12] Terminals mark the boundaries of a program and are depicted as rounded rectangles; the initial terminal is labeled "Main" to signify program entry, while the final one is labeled "End" to denote completion. These ovals or rounded forms provide a visual anchor for the flowchart's structure, adhering to conventional diagramming practices. No executable statements are placed within terminals, emphasizing their role solely in delimiting the program's scope.[13] Process shapes, represented as rectangles, handle assignments, declarations, and general computations. Variable declarations occur via a dedicated "Declare" shape, where users specify names, data types (such as integer, real, string, or boolean), and for arrays, dimensions with initial sizes; multiple variables can be declared in a single shape using comma-separated lists. Assignments within process rectangles support complex expressions involving operators from mathematical, BASIC, and C-style syntaxes, including arithmetic (+, -, *, /, ^ for exponentiation), relational (==, !=, >, <), logical (&&, ||, and, or), and string concatenation (&). Arrays are manipulated graphically by indexing within expressions, and functions are invoked through subroutine calls represented as specialized process variants.[14][15] Input and output operations use parallelogram shapes, often stylized as chat bubbles for user interaction, to denote data exchange with external sources like keyboards, screens, or files. These shapes accept expressions for prompts or values, facilitating graphical representation of read/write actions without requiring textual I/O statements. Built-in support for file I/O is provided through dedicated shapes—Open File, Read File, Write File, and Close File—each as distinct parallelograms that handle text file operations, integrating seamlessly with process shapes for data processing.[5] Decision shapes are diamonds that evaluate boolean expressions to branch execution paths, with two outgoing arrows labeled "True" and "False" for conditional logic like if-then-else constructs. Expressions within decisions leverage the same operator set as processes, supporting nested conditions through multiple connected diamonds. Loops are implemented via specialized rectangular shapes with integrated arrow indicators for iteration: the While shape evaluates a condition before executing its body, the For shape iterates over a variable range with initialization, increment, and termination checks, and the Do shape executes its body at least once before condition evaluation. These loop shapes encapsulate repetitive logic visually, with arrows looping back to the shape's entry point.[16][17][18] Syntax rules in Flowgorithm enforce structured program construction through graphical constraints: arrows must connect shapes unidirectionally to prevent cycles outside loops, variables must be declared before use (with undeclared references highlighted visually), and expressions follow operator precedence rules (e.g., unary operators highest, followed by exponents, multiplication/division, addition/subtraction, concatenation, relations, logical AND, then OR). Built-in libraries for mathematics (e.g., sin, cos, sqrt via intrinsic functions in process shapes), strings (e.g., length, substring), and random number generation are accessed graphically without explicit imports, embedding operations directly into expressions. Error handling manifests as visual indicators during flowchart editing, such as red outlines on invalid shapes, syntax error pop-ups for mismatched types or undeclared variables, and runtime debug highlights, ensuring violations are apparent without compiling to text-based code. Subroutines, akin to functions, use a call shape (rectangle with subroutine name) to invoke reusable blocks defined in separate flowcharts, promoting modular design graphically.[15][5]Supported Programming Languages
Flowgorithm's Source Code Viewer facilitates the interactive conversion of flowcharts into executable source code for numerous programming languages, maintaining the original logic flow including variable declarations, loops, conditional statements, and input/output operations. This process leverages customizable templates that define language-specific syntax, keywords, operator precedence, and formatting conventions to generate syntactically valid code from graphical elements.[19] As of version 4.5, released on October 8, 2024, Flowgorithm supports export to over 25 programming languages, enabling educators and developers to bridge visual programming with real-world coding practices. The core supported languages include:- Ada 95
- AppleScript
- AutoHotKey
- Bash
- C#
- C++
- Fortran 2003
- Groovy
- Java
- JavaScript
- Kotlin
- Lua
- MATLAB
- Nim
- Pascal
- Perl
- PHP
- PowerShell
- Python
- QBasic
- Ruby
- Scala
- Smalltalk
- SQL (including Transact-SQL)
- Swift
- TypeScript
- Visual Basic .NET
- Visual Basic for Applications (including Excel VBA)
Multilingual Interface Support
Flowgorithm provides localization for its user interface to accommodate non-English speakers, supporting 32 languages.[22] These include English (the default), French, German, Spanish (both Mexican and Castilian variants), Italian, Portuguese, Chinese (Simplified and Traditional), Arabic, Russian, and others such as Afrikaans, Catalan, Croatian, Czech, Dutch, Farsi, Galician, Hebrew, Hungarian, Indonesian, Japanese, Korean, Latvian, Malay, Mongolian, Polish, Romanian, Slovenian, Swedish, Thai, Turkish, and Ukrainian.[22] The implementation relies on resource files that translate key interface elements, including menus, tooltips, error messages, and help text, without requiring programming knowledge from contributors.[22] Users can select their preferred language through the "Change Language" menu option available at startup or within the settings, enabling seamless switching between supported locales. Community involvement is encouraged through an open contribution process, where individuals can volunteer to translate the interface by contacting the developer at FlowgorithmDevinCook.com and providing a translated text file.[22] This approach ensures ongoing expansion of language support and promotes accessibility in global educational settings. By offering a fully localized interface, Flowgorithm lowers barriers for international students and educators, facilitating the visual learning of programming concepts regardless of the user's native language.[22]Usage and Applications
Basic Program Examples
Flowgorithm's basic program examples showcase how to construct simple algorithms using its graphical flowchart interface, emphasizing core shapes like terminals, inputs, outputs, decisions, and loops. These examples help users understand program flow without writing traditional code, with the tool generating corresponding pseudocode for verification. The following walkthroughs describe three fundamental programs, including textual representations of their flowcharts and brief pseudocode outputs generated by Flowgorithm.[12]Example 1: Basic Input-Output Program
This example creates a greeting program that reads a user's name via input and outputs a personalized message, demonstrating terminal, input, process (via concatenation), and output shapes. The flowchart structure is linear: it starts with a terminal shape labeled "Main" to initiate the program, followed by a parallelogram input shape to capture the string variable "name" from the user, then a rectangle process shape (optional for concatenation if needed, but often directly in output), an output shape displaying the greeting, and ends with a terminal shape. Arrows connect these shapes sequentially from top to bottom. When executed, the program prompts for input in the console and prints the result. The generated pseudocode is:Main
Input name
Output "Hello, " + name + "!"
End
Main
Input name
Output "Hello, " + name + "!"
End
Example 2: Conditional Structure
A conditional program checks if an input number is even or odd, using a decision diamond to branch the flow based on the modulo operator. The flowchart begins with a "Main" terminal, proceeds to an input shape for the integer variable "number", then a diamond decision shape evaluating "number MOD 2 = 0". If true (yes arrow), it routes to an output shape printing "The number [number] is even."; if false (no arrow), it routes to another output shape printing "The number [number] is odd." Both branches converge to the end terminal. This structure highlights branching logic. The generated pseudocode is:Main
Input number
If (number MOD 2 = 0) Then
Output "The number " + number + " is even."
Else
Output "The number " + number + " is odd."
End If
End
Main
Input number
If (number MOD 2 = 0) Then
Output "The number " + number + " is even."
Else
Output "The number " + number + " is odd."
End If
End
Example 3: Loop Implementation
This loop example computes the sum of integers from 1 to a user-specified N, using a for-loop shape for iteration and accumulation in a process shape. The flowchart starts with a "Main" terminal, inputs the integer "N", initializes a real variable "sum" to 0 in a process shape, then enters a for-loop shape iterating "i" from 1 to N with increment 1. Inside the loop, a process shape adds "i" to "sum". After the loop, an output shape displays "sum", followed by the end terminal. This demonstrates repetitive execution and variable updates. The generated pseudocode is:Main
Input N
sum = 0
For i = 1 To N Step 1
sum = sum + i
End For
Output sum
End
Main
Input N
sum = 0
For i = 1 To N Step 1
sum = sum + i
End For
Output sum
End

