作者: Keiichi Takahashi
日時: 2002/4/08(17:47)
ビットウォークの高橋です。

Yさ wrote:
> [お題]簡易足し算器
> [内容]入力された数字を合計し、表示する。
>  0が入力されるまで数字を受け付け、合計し続ける。
>  0が入力されるとそれまでの合計を表示する。
> 
> [awkによる例]
> -----
> { if($1!=0) total+=$1; else exit; }
> END{ print "total = ", total; }
> -----
> ※ちなみに"簡易"なので入力が数値であるか等のチェックは省略
> 
> 
> どなたかその他の(スクリプト)言語による例をお願いいたします(^o^)/
> (適当なお題がありましたらそれもお願いいたします)

Tclの場合の一例を紹介します。上記と同様、数値が入力されているかなど、細
かなチェックはしていません。
一般的なTclのスクリプト起動のやりかた(最初の3行)から、ちょっと余計な
機能を足しました。


--- ここから ---
#!/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"

# 初期値
set total 0

# コマンド引数の読み込み
if {$argc} {
    foreach value $argv {
        set total [expr $total + $value]
    }
}

# 0が入力されるまでループ
while {[set value [gets stdin]] != 0} {
    set total [expr $total + $value]
}

# 合計を出力
puts "合計:$total"

exit
--- ここまで ---

これを例えばファイル名をaddition.tclとして保存します。


LinuxなどUNIX系シェル上で実行するには、次のようにします($はシェルのプロ
ンプトです)。

$ chmod +x ./addition.tcl
$ ./addition.tcl
2
4
6
8
10
0
合計:30

(実行時に引数を付けてもOK)
$ ./addition.tcl 2 4 6
8
10
0
合計:30


-- 
Keiichi Takahashi, bitWalk Co.,Ltd.
mailto:bitwalk@...
http://members10.tsukaeru.net/bitwalk/