TclでFizzBuzz

mzp2008-02-10

30分プログラム、その241。TclでFizzBuzzを。
初心者入門といったらFizzBuzzでしょう、ということで書いてみた。
GUIの配置でかなり苦労した。ああ、Tkのリファレンスが欲しい。

小さいフレームをつくって、その中にWidgetを配置して、そのフレームを積み重ねてウインドウ全体を構成すればいいみたい。Javaでも似たことをよくやるけど、もしかして一般的な技法なのかな?

使い方

$ wish fizzbuzz.tcl

ソースコード

#!/usr/bin/wish
wm title . "GUI FizzBuzz"
button .fizzbuzz -text {FizzBuzz} -command {
    for {set i 1} {$i <= 100} {incr i} {
	if {[expr $i % 15] == 0} {
	    .fm.result insert end "fizzbuzz\n"
	} elseif {[expr $i % 3] == 0} {
	    .fm.result insert end "fizz\n"
	} elseif {[expr $i % 5] == 0} {
	    .fm.result insert end "buzz\n"
	} else {
	    .fm.result insert end "$i\n"
	}
    }
}
frame .fm
text      .fm.result -width 70 -height 40 -yscrollcommand ".fm.scroll set"
scrollbar .fm.scroll -command ".fm.result yview"
pack .fm.scroll .fm.result -side right -fill y -expand yes

pack  .fizzbuzz .fm