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


7/1 学習内容&まとめ

Rubyドリル

クラスとインスタンス

class Student
  def set_name(name)
    @name = name
  end

  def self.introduce
    puts "私の名前は#{@name}です。"
  end
end

student = Student.new
student.set_name("山田太郎")
student.introduce

これではエラーが出ます。

①エラーが起きた原因

クラスメソッドとインスタンスメソッドを間違えているのでエラーになります。

クラスメソッドインスタンスメソッド
概念の違いクラス全体で共通したふるまいを表すクラスから生成されたインスタンスのふるまいをあらわす
使い方の違い定義するときは、self.を頭につける
クラスのみ使用可能
定義するときはなにもつけない
インスタンスのみ使用可能
コードdef self.メソッド名

end
def メソッド名

end

*頭に@をつけた変数はインスタンス変数と呼びます。

別のインスタンスメソッド内でも使用できるようになります。

最後の行で、クラスメソッドintroduceをインスタンスが呼び出しているが、クラスメソッドはインスタンスから呼び出せないのでエラーになります。

②正しいソースコード

class Student
  def set_name(name)
    @name = name
  end

  def introduce
    puts "私の名前は#{@name}です。"
  end
end

student = Student.new
student.set_name("山田太郎")
student.introduce

文字の順番を入れ替えて出力するプログラム

要件

  • 任意の文字列の最初の2文字を取得する
  • 取得した2文字を最後尾に移動させた状態で、その文字列を出力する

出力例

  • left2("Hello") → lloHe
  • left2("java") → vaja
  • left2("Hi") → Hi

値の取得

文字列に対して配列同様に[ ]を用いて取得したい文字列のインデックスを指定することで、値を取得できます。

str = "HELLO"

puts str[1]
# => 1

回答

def left2(str)
 puts str[2..-1] + str[0..1]
end

left2("Hello")

解説

str[2..-1]で3文字目から最後まで、str[0..1]で最初の2文字を取得しています。

最初の2文字を最後に移動させた状態にしたいので、str[2..-1] + str[0..1]

の順にしています。

特定の数値の個数を算出するプログラム

複数の数字が格納されている配列に「9」が何個含まれているか出力するプログラムにします。

要件

  • 配列の中の数字に対して、9の個数を数える
  • 数えた9の個数を出力する

出力例

  • array_count9([1, 2, 9]) → 配列の中には9が1個です
  • array_count9([1, 9, 9]) → 配列の中には9が2個です
  • array_count9([1, 9, 9, 3, 9]) → 配列の中には9が3個です

countメソッド

引数に指定した数字に一致するものの個数を数え、その結果を返すメソッド

ary = [1, 2, 4, 2]

ary.count(2)
 # => 2

回答

def array_count9(nums)
 count = nums.count(9)
 puts ("配列の中には9が#{count}個です")
end

array_count9([1, 2, 9])

解説

countメソッドを使い、指定した数字に一致するものの個数を数えます。

if else

2桁の正の整数を入力し、その整数が、10の倍数からの差が

2以内である時はTrue

それ以外はFalseと出力するメソッドを作ります。

出力例

  • near_ten(12)→True
  • near_ten(17)→False
  • near_ten(19)→True

回答

def near_ten(num)
 quotient = num % 10
 if quotient <= 2 || quotient >= 8
  puts "True"
 else
  puts "False"
 end
end

解説

2桁の整数が10の倍数から差が2以内ということは、10で割ったときの余りが2以下または8以上と解釈できます。

この処理を

quotient = num % 10
 if quotient <= 2 || quotient >= 8

で行っています。

progate 学習コースⅧ

7ページまで

一言日記

最近モチベーションが上がらない。

ってことで、今月からカレンダーに手書きで完了したことを記入する

方法にしてみました。

  • 進んでいる感覚がある方がモチベーション維持できるということ
  • スマホやPCでは余計なものを見てしまう

以上をふまえた上で大きめの卓上カレンダーに書き込めばいいのでは?

と思い、今月から試しにやってみます。

いつまで続くかわからないけど、常に見えるようにしているので

忘れることはないはず。

やることリスト

①就活

②朝のルーティン

③英語と数学の勉強

④プログラミングの勉強

⑤ブログ&読書

できた番号をカレンダーに記入していきます。

あれもこれもやらないとって、自分をおいこんで結局できなくて

へこんで、あせって…

余裕をもったほうがいいんだろうけど

今までが何もしてこなかったから

ついあせってしまう。

一歩ずつと心のなかで言い聞かせながら、今できることをがんばります。