[ プログラミング演習(Ruby) >  プログラミング演習(Ruby) 課題(2024) >  [課題04] 秒数を時・分・秒に換算する ]

[課題04] 秒数を時・分・秒に換算する

課題

入力した秒数を何時間何分何秒という形に変換して表示するプログラムを作成して下さい.

想定するプログラム実行例

次にプログラムのファイル名が仮に「hms.rb」であったとして, 想定される実行例を示します.

$ ruby hms.rb
秒数を(時間,分,秒)に直します
何秒? 86400 ⏎
86400秒は24時間0分0秒です

$ ruby hms.rb
秒数を(時間,分,秒)に直します
何秒? 934572 ⏎
934572秒は259時間36分12秒です

$ ruby hms.rb
秒数を(時間,分,秒)に直します
何秒? 128 ⏎
128秒は0時間2分8秒です

この実行例でも分かるように,このプログラムではタートルグラフィクスを利用しません. 新たなウインドウは開かず,Terminal(端末)のウインドウ上でデータを入力し,同じウインドウに結果を出力します.

プログラムの作成方法について

今回はプログラムのテンプレートは提供しません. その代わりにプログラムのサンプルをこのページの末尾に示します. 今回のプログラムを作成するヒントにしてください.

Emacsで新しいファイルを作る方法については, 「[課題00]: マンデルブロ集合画像生成プログラム」を参照してください.

次に示すコードをプログラムの先頭にコピーして入れておくようにして下さい(必要事項は記入して下さい). なおEmacsでRubyファイル(○○○○.rb)を新規作成すると, このヘッダが自動的にファイルの先頭に書き込まれます.


=begin

所属:     
氏名:     
学生番号:
難易度(5段階評価):

感想など(任意)

=end

[参考] ヘッダの調整

EmacsでRubyファイルを新規作成したときに取り込まれるヘッダは次のファイルに記述されています.

HOME > .emacs.d > template > template.rb

このファイルを編集して保存すれば,次回からは(新たにEmacsを起動すれば),変更後のヘッダが自動的に取り込まれるようになります.

なお「.」から始まる名前のファイル,フォルダ(ディレクトリ)は, 通常は見えないようになっています. Emacsで新規ファイルを作成する画面で「Show hidden files」にチェックを入れれば,「.」から始まる名前のファイルとディレクトリも表示されるようになります.

   Show hidden files 

データ入力

次のように書くことで,Terminal(端末)ウインドウに質問文を表示しつつ, キーボードから文字列を読み取ることができます.


  # 質問文を端末のウインドウに表示して,キーボードから文字列を読み取る
  print "何秒? "
  str = gets()

この例の場合,読み取った文字列は「変数str」に代入されます. 変数名は自由に決めて構いません.

なお,ここで読み取られるデータは,キーボードから入力された数字が並んでいる文字列です. コンピュータ内部で文字列と数値は異なるデータとして扱われます. 「数字が並んだ文字列」を「数値」として解釈するには文字列を変換する必要があります.

整数への変換文字列.to_i
小数への変換文字列.to_f

  # 質問文を端末のウインドウに表示して,キーボードから文字列を読み取る
  print "何秒? "
  str = gets()

  # 文字列strを整数に変換してsecに代入する
  sec = str.to_i

データ出力

Terminal(端末)のウインドウにメッセージを表示するにはprintやputsを使います(他の方法もあります).


  print "何秒? "
  str = gets()
  sec = str.to_i
  puts "入力された値は#{sec}秒です."

四則演算と剰余演算

Rubyでの四則演算の演算子は次の通りです.

加算+
減算-
乗算*
除算/

剰余を計算する演算子もあります.


  5 % 2 # ==> 1 
  9 % 3 # ==> 0
 11 % 4 # ==> 3

サンプルプログラム

サンプルプログラムを示します. ブラウザの画面で開いたときに文字化けしてしまう場合には, ダウンロードしてEmacs等で開いてみて下さい.

注意

以下のことに注意して下さい.

[ プログラミング演習(Ruby) >  プログラミング演習(Ruby) 課題(2024) >  [課題04] 秒数を時・分・秒に換算する ]