Rubyの練習問題を解いてみた

11日目です。

昨日Fizz Buzzプログラム作成を通して理解が身についたので、ネット上で練習問題を解いてみました。

https://www.yukisako.xyz/entry/ruby-practice

問1〜7までは文字を出力したり簡単な計算をしたりで、問題なく解けたので省きます。

問8、9もシンプルな条件分岐の問題だったので、下記のようにできました。

 
 # 問8
 num1 = 22
 if num1 > 50
  puts "num1は50より大きいです。"
 else
  puts "num1は50以下です"
 end

 # 問9
 num1 = 22
 if num1 % 2 == 0
  puts "num1は偶数です"
 else
  puts "num1は奇数です"
 end
 

 

問題は次からでした。

問10

「おはよう」と10回表示されるプログラムを書いてください

(ただし、for文を用いてください)

問11

「こんにちは」と10回表示されるプログラムを書いてください

(ただし、while文を用いてください)

、、、あれ、「for」「while」ってどうやって使うんだっけ?

「if」とか「case」は例題でも使う機会が多かったのですが、forやwhileってあまり見ないので全然思い出せず、、

 

再度調べました。

for文

for 変数 in オブジェクト do #doは省略しても良い
  処理
end
while文
while 条件式 do
  処理1
  処理2
  処理3
  ・・・
  ・・・
end

https://www.sejuku.net/blog/19121

 

上記を元に作った結果

 # 問10
 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 i = 0
 for i in numbers
  if i < 11
   i += 1
   puts 'おはよう'
  end
 end

 # 問11
 i = 0
 while i < 10 do
  i += 1
  puts "こんにちは"
 end

なんとか要件通りのものは作れました。

が、リファクタリングできると思うので、改善します。

 

本日はチェリー本第8章(モジュールを理解する)まで終わらせました。

正直、前章(クラスの作成を理解する)後半からモジュールの話は今の私に難しく、体系的に理解ができていないと思います。このまま他の章に行ってもよくわからないまま時間だけが過ぎてしまいそうなので、明日から事前学習のRubyを進め、基本的なところから、クラスやモジュールについてまでの理解を深めるようにします。