Tcl break Command
last modified April 3, 2025
The Tcl break command is used to exit from loops prematurely. It
terminates the innermost enclosing loop and continues execution after the loop.
The command is essential for controlling loop execution flow.
Basic Definition
The break command immediately terminates the current loop's
execution. It works with while, for, and foreach
loops. The program continues with the next command after the loop.
Syntax: break. The command takes no arguments and has no return
value. It simply transfers control out of the current loop structure.
Basic While Loop Break
This example demonstrates using break to exit a while
loop when a condition is met.
set count 0
while {1} {
puts "Count is $count"
incr count
if {$count > 5} {
break
}
}
puts "Loop exited"
This creates an infinite loop with while {1} that would run forever.
The break command exits the loop when count exceeds 5. The message
after the loop confirms exit.
For Loop with Break
This example shows break used within a for loop to
exit when finding a specific value.
for {set i 0} {$i < 10} {incr i} {
if {$i == 7} {
puts "Found 7, breaking loop"
break
}
puts "Current value: $i"
}
puts "After loop"
The loop normally runs from 0 to 9, but exits early when i equals 7. The
break command stops the loop immediately, skipping remaining
iterations. Control passes to the statement after the loop.
Nested Loops with Break
This demonstrates how break only affects the innermost loop when
used in nested loop structures.
for {set i 1} {$i <= 3} {incr i} {
puts "Outer loop: $i"
for {set j 1} {$j <= 3} {incr j} {
if {$j == 2} {
puts " Breaking inner loop at j=2"
break
}
puts " Inner loop: $j"
}
}
The outer loop runs completely, but the inner loop breaks when j equals 2.
The break only affects the inner for loop. The outer
loop continues its normal execution.
Break in Foreach Loop
This example shows break used with a foreach loop to
stop processing a list when a condition is met.
set colors {red green blue yellow orange}
foreach color $colors {
if {$color eq "blue"} {
puts "Found blue, stopping"
break
}
puts "Processing $color"
}
puts "Done"
The loop processes each color in the list until it finds "blue". At that point,
break exits the loop. Colors after "blue" in the list are not
processed. The message after confirms loop exit.
Break with Conditional Logic
This example combines break with more complex conditional logic to
exit a loop based on multiple factors.
set total 0
while {1} {
puts -nonewline "Enter a number (0 to exit): "
flush stdout
gets stdin num
if {$num == 0} {
break
}
if {$num < 0} {
puts "Negative numbers not allowed"
continue
}
set total [expr {$total + $num}]
puts "Current total: $total"
}
puts "Final total: $total"
This interactive example sums numbers until the user enters 0. The break
exits the loop when 0 is entered. Negative numbers trigger continue
to skip that iteration. The final total displays after loop exit.
Break in Switch Statement
This example shows how break behaves differently in a switch
statement compared to loops.
set value 3
switch $value {
1 {
puts "Case 1"
break
}
2 {
puts "Case 2"
break
}
3 {
puts "Case 3"
# No break here
}
4 {
puts "Case 4"
break
}
default {
puts "Default case"
break
}
}
puts "After switch"
In switch, break prevents fall-through to the next
case. Without break, execution continues to the next case. Here,
case 3 has no break, so case 4 would execute if present. The
message after confirms switch completion.
Best Practices
- Use Sparingly: Minimize break usage for clearer code flow.
- Clear Conditions: Make break conditions obvious and documented.
- Avoid Deep Nesting: Consider restructuring deeply nested loops.
- Alternative Logic: Sometimes loop conditions can replace breaks.
- Comments: Add comments explaining why break is necessary.
This tutorial covered the Tcl break command with practical
examples showing its usage in different loop structures and scenarios.
Author
List all Tcl Tutorials.