ZetCode

Tcl else Command

last modified April 3, 2025

The Tcl else command provides alternative execution paths in conditional statements. It's used with if to execute code when the condition is false. The else clause is optional in Tcl control structures.

Basic Definition

The else command follows an if command and its body. It executes when the if condition evaluates to false (0). The syntax is: if {condition} {body} else {body}.

The else must appear on the same line as the closing brace of the if body. This is a syntax requirement in Tcl for proper parsing.

Simple if-else Example

This shows the basic usage of else with an if statement.

basic_else.tcl
set x 10
if {$x > 5} {
    puts "x is greater than 5"
} else {
    puts "x is 5 or less"
}

Here, the condition checks if x is greater than 5. If true, the first block executes. Otherwise, the else block runs. The output will be "x is greater than 5" in this case.

Multiple Conditions with elseif

Tcl supports multiple conditions using elseif between if and else.

elseif_example.tcl
set score 85
if {$score >= 90} {
    puts "Grade: A"
} elseif {$score >= 80} {
    puts "Grade: B"
} elseif {$score >= 70} {
    puts "Grade: C"
} else {
    puts "Grade: D or F"
}

This example demonstrates a grading system with multiple conditions. The elseif commands provide additional conditions to check. The else catches all remaining cases not covered by previous conditions.

Nested if-else Statements

if-else statements can be nested inside other if-else blocks for complex logic.

nested_else.tcl
set age 25
set has_license 1
if {$age >= 18} {
    if {$has_license} {
        puts "You can drive"
    } else {
        puts "You're old enough but need a license"
    }
} else {
    puts "You're too young to drive"
}

This checks both age and license status. The outer if verifies age, while the inner if-else checks the license. Proper indentation helps maintain readability in nested conditions.

Empty else Block

An else block can be empty, though this is generally not recommended.

empty_else.tcl
set debug 0
if {$debug} {
    puts "Debug mode is on"
} else {
    # Do nothing in production mode
}

This example shows an empty else block used for debug mode control. While syntactically valid, it's better to either omit the else or add a comment explaining why it's empty.

Boolean Logic with else

else can be used with boolean operators for more complex conditions.

boolean_else.tcl
set a 10
set b 20
if {$a > $b || $a == $b} {
    puts "a is greater than or equal to b"
} else {
    puts "a is less than b"
}

This demonstrates using logical OR (||) in the condition. The else block executes only if both conditions are false. Boolean operators can create sophisticated decision trees.

Using else with expr

The else concept can be implemented within expr using the ternary operator.

expr_else.tcl
set x 15
set result [expr {$x > 10 ? "Large" : "Small"}]
puts "The number is $result"

This shows a compact conditional expression using expr's ternary operator. The part after ? is the "true" branch, and after : is the "else" branch. This is equivalent to an if-else statement but more concise.

Best Practices

This tutorial covered the Tcl else command with practical examples showing its usage in different conditional scenarios.

Author

My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.

List all Tcl Tutorials.