作者: davi
日時: 2009/2/11(00:23)
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/