TEHC CAMP 91期夜間休日 卒業後活動記録

6/23 学習内容とまとめ

rubyドリル

検索問題

任意の文字列に"code"が左から何文字目に出てくるか、その数を出力するメソッドを作ります。

indexメソッド

文字列や配列の中に指定した文字列が含まれていた場合、その文字列の開始位置を整数の値で返すメソッド

str.index(検索したい文字列,[検索を開始する位置])
def count_code(str)
 puts str.index("code", 0) + 1
end

indexメソッドは文字列の先頭を0から数えるので+1にします。

ifとelse問題

20時から翌朝7時までは「NG」、それ以外は「OK」とオウムが喋るメソッドを作ります。

喋らないとき→false

喋るとき→true

呼び出し方:parrot_trouble(talking, hour)

def parrot_trouble(talking, hour)
 if talking && (hour < 7 || hour > 20)
  puts "NG"
 else
  puts "OK"
 end
end

if talking として、talkingにtrueが入っているときに真と判断されます。

そして、次の条件式に(hour < 7 || hour > 20)で20時から翌朝7時を判断しています。

A || B でAまたはBを表します

ちなみに、

A && B はAかつBを表します。

偶数値の取得

配列の中から偶数の数を返して出力するメソッドを作ります。

出力例:count_evens([2,1,2,3,4])→3

even?メソッド

対象の数値が、偶数かどうかを判断するメソッド

10.even?
#=> true

5.even?
#=> false
def count_evens(nums)
 count = 0
 nums.each do |num|
  if num.even?
   count += 1
  end
 end
 puts count
end

変数countを用意して、カウントした数を保持しています。

each内に記述していないのは、each内だと処理を繰り返すたびに

count = 0が実行されて、数値が0に上書きされてしまうため

eachの外に記述しています。

配列に入っている数字をeach文で取り出して、

even?メソッドで偶数かどうか確認して、偶数だった場合はcountに1を足します。

puts count で偶数の数を出力します。

特定の数字を検知するプログラム

特定の数字が存在するかどうかを判定するプログラムを作ります。

要件は

  • 配列内に1,2,3が全て入っている場合は、「True」と出力すること
  • 配列内に1,2,3の全てが入っていない場合は、「False」と出力すること

出力例:array123([1,1,2,3,1])→True

:array123([1,2,4])→False

include?メソッド

指定した値が、配列に含まれているかを判定するメソッド

array = ["foo", "bar"]
puts array.include?("bae")
#=> true
puts array.include?("hoge")
#=> false
def array123(nums)
 if nums.include?(1) && nums.include?(2) && nums.include?(3)
  puts "True"
 else
  puts "False"
 end
end
#呼び出し例
array124([1,1,2,3,1])

array123メソッドの仮引数に対象の配列が格納されます。

includeメソッドを使い、1、2、3が含まれている場合は"True"を出力する

ための条件分岐をしています。

&&演算子を複数使用して、条件を複数設定しています。

progate 学習コースⅥ 8まで