基礎プログラミング II 第 6 回 (目的に応じて使ってみよう) 「工夫しだいでいろいろ」 講義ノート目次

step を用いてカウントダウンを作ってもよい。 step_rocket.rb を作って試そう。環境によっては音が鳴る。

system は、kterm で入力するコマンドをプログラムの中に使いたいときに便利である。

砂時計は止まらない

整数の場合には問題がないが、小数値でループを作る場合には注意が必要である。 while_sand.rb

printf("5 秒砂時計 \n")
c = 50
while c != 0
  printf("%3.1f\r", c/10.0)
  c -= 1
  sleep(0.1)
end
system("banner 'TIME UP!'")

小数計算の誤差を避けるために、 わざと整数を割り算して作る必要がある。 計算機の少数の誤差は 2 進法で 10 進法を計算していることに起因し、 0.1 を 10 回引いても厳密に 0 にならない; 1/3 を少数で表示すると 0.33333.. で、これを 3 倍しても 1 にならないのと似た状況である。

\r はその場所に printf をしつづけるという意味である。