Ovum supports standard control flow constructs following structured programming principles:
If/Else: Conditional execution with syntax if (condition) { ... } else { ... }. The condition must be a Boolean expression (Bool). Braces are required for blocks, but for single statements the braces can be omitted (though using braces is encouraged for clarity).
if (x > 0) {
    sys::Print("Positive")
} else if (x < 0) {
    sys::Print("Negative")
} else {
    sys::Print("Zero")
}
While Loop: while (condition) { ... } repeats the body while the condition is true.
var i: Int = 0
while (i < 10) {
    sys::Print(i.ToString())
    i = i + 1
}
For Loop: for (item in collection) { ... } iterates over elements of a collection (arrays, etc.).
for (item in items) {
    sys::Print(item.ToString())
}
Return: return expression; exits the current function with the given value (or return; with no value to exit a void function). In pure functions, a return simply provides the result; in impure, it may terminate early as usual.
Break/Continue: break exits a loop immediately, continue skips to the next iteration of the loop.
var i: Int = 0
while (i < 10) {
    if (i == 5) {
        break  // Exit loop
    }
    if (i == 3) {
        i = i + 1
        continue  // Skip to next iteration
    }
    sys::Print(i.ToString())
    i = i + 1
}
All control flow follows structured programming principles (no goto).