Bruce.さん < こん??は でび です
On Tue, 10 Feb 2009 23:54:19 +0900
"Bruce." <kbk@...> wrote:
> > で、procedureとかrepeatとかswapとかの謎(?)の
> > コマンド名(予約語?)が…。
>
> procedure と repeat は予約語ですね。swapは本の別のところで登場している
> ユーザー定義手続きでしょう。
なる。
> 1;じゃなくて、1:じゃないですか?
> おそらくループから脱出するときのラベルです。
うぉ! 申し訳ない。仰るとおりのtypoでした。
だから、ラベル扱いになるんですね。
var 1; とか Dim 1 とかの意味の省略表記かと誤読していました。
> > repeat
> > while data[i] < x do i := i+1;
> > while x < data[j] do j := j-1;
> > if i ≧ j then goto 1;←ループの終了
> > swap(i,j);
> > i := i+1; j :=j-1;
> > until false; ← repeat に対応
> > 1;←gotoの指定先
>
> repeat 〜 until ほげほげ
> で、ほげほげが「真」になるまで繰り返しですが、上の例では until false なので
> 無限ループになっていて、抜けるときはswapの手前のif文の判定が真になったと
> きと。
ほほぅ…本人が上手に使いこなせるのならば…という条件付きで、
無限ループを意図的に用いるってやり口もアリなんですね…。
「無限ループ == 巨悪」という、かなり強い刷り込みが
あったので、驚きでした。
でび http://davi.txt-nifty.com/1984/