1. Home
  2. /
  3. Modula2
  4. /
  5. Modula-2 Counter and Theme Toggle

Modula-2 Counter and Theme Toggle - Modula2 Typing CST Test

Loading…

Modula-2 Counter and Theme Toggle — Modula2 Code

Demonstrates a simple counter with theme toggling using Modula-2 variables and procedures.

MODULE CounterTheme;

VAR
	count: INTEGER := 0;
	isDark: BOOLEAN := FALSE;

PROCEDURE updateUI;
BEGIN
	WriteString("Counter: "); WriteInt(count, 0); WriteLn;
	IF isDark THEN
		WriteString("Theme: Dark"); WriteLn
	ELSE
		WriteString("Theme: Light"); WriteLn;
	END;
END updateUI;

PROCEDURE increment;
BEGIN
	count := count + 1;
	updateUI;
END increment;

PROCEDURE decrement;
BEGIN
	count := count - 1;
	updateUI;
END decrement;

PROCEDURE reset;
BEGIN
	count := 0;
	updateUI;
END reset;

PROCEDURE toggleTheme;
BEGIN
	isDark := NOT isDark;
	updateUI;
END toggleTheme;

BEGIN
	updateUI;
	increment;
	increment;
	toggleTheme;
	decrement;
	reset;
END CounterTheme.

Modula2 Language Guide

Modula-2 is a statically typed, modular, procedural programming language designed for systems programming and teaching structured programming concepts, created as a successor to Pascal.

Primary Use Cases

  • ▸Teaching structured and modular programming
  • ▸Systems programming and embedded applications
  • ▸Operating system and compiler development
  • ▸Prototyping modular software architectures
  • ▸Applications requiring strong type safety

Notable Features

  • ▸Module system for encapsulation
  • ▸Strong static typing
  • ▸Procedural programming with structured control
  • ▸Separate compilation for modules
  • ▸Support for low-level systems programming

Origin & Creator

Developed by Niklaus Wirth in 1978 at ETH Zurich as a follow-up to Pascal, focusing on modularity and systems programming.

Industrial Note

Modula-2 found niche use in teaching programming concepts, embedded systems, and certain early OS development projects, though modern usage is mostly academic.

More Modula2 Typing Exercises

Modula-2 Random Number GeneratorModula-2 Todo ListModula-2 Dice RollerModula-2 Countdown TimerModula-2 Prime CheckerModula-2 Temperature ConverterModula-2 Shopping CartModula-2 Name GreetingModula-2 Stopwatch

Practice Other Languages

CReactPythonC++RustTypeScriptKotlinPHPJavaC#RubyMqlCqlN1qlCypher