LoginSignup
0
0

More than 1 year has passed since last update.

コードを書けない人が0からコードを書くための3ステップ

Last updated at Posted at 2022-02-05

今回の記事の想定

⚫︎プログラミング学んだけど0からコードが書けない人向けです。
下の動画をベースに記事を書いて行きます。

参考動画

この動画をベースに描いて行きます。

なぜ手が動かないか

理由はいきなり大きなことをやろうとして何をしたらいか整理できていないことです

これを解決するためには?

1.日本語でやりたい処理を言語化

2.言葉にしたことをコードに置き換える

3.小さく動かす

上の3つができれば書けるようになるみたいです。

実際のコードでやってみる

動画もRubyでやっていますが自分もRubyでやって行きます。
まず以下の前提でコードを書いて行きます。


#次のFootball_playerクラス内にdataメソッドを追加し、期待する出力結果になるようにする
class  Football_player

end

Football_player1 = Football_player.new('メッシ','アルゼンチン',169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()

⚫︎期待する出力結果

名前: メッシ
国籍: アルゼンチン
身長: 169
名前: ロナウド
国籍: ポルトガル
身長: 187

やりたいことを言語化して書いて行きます。

class  Football_player  
#コード追加 名前と国籍、身長を受け取る
 #名前と身長の情報を出力
end

Football_player1 = Football_player.new('メッシ','アルゼンチン',169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()

⚫︎追加
1.コード追加 名前と国籍、身長を受け取る
2.名前と身長の情報を出力
この2つを追記しました。

そこでRuby 文字出力で検索します。

この記事がヒットします。
https://www.sejuku.net/blog/16119

putsを追記します。

#次のFootball_playerクラス内にdataメソッドを追加し、期待する出力結果になるようにする
class  Football_player
 #コード追加 名前と国籍、身長を受け取る
  #名前と身長の情報を出力
 name = 'メッシ'
 nationality = 'アルゼンチン'
 heigth = 169
 puts name
 puts nation
 puts height
end

Football_player1 = Football_player.new('メッシ','アルゼンチン',169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()

しかし出力結果は期待する結果にはならないです。
文字が連結しているのでRuby 文字連結で調べます。
するとこちらの記事がヒットします。
https://qiita.com/Kta-M/items/c7c2fb0b61b11d3a2c48

#次のFootball_playerクラス内にdataメソッドを追加し、期待する出力結果になるようにする
class  Football_player
    #コード追加 名前と国籍、身長を受け取る
    #名前と身長の情報を出力
name = "メッシ"
 nation = "アルゼンチン"
 height = 169
 puts "名前:"+ name     #追記
 puts "国籍:"+ nationality   #追記  
 puts "身長:"+ height    #追記
end

Football_player1 = Football_player.new("メッシ","アルゼンチン",169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()

上のコードのように追記します。
ただこのままだとエラーが出てしまします。

名前:メッシ
国籍:アルゼンチン
Traceback (most recent call last):
        2: from study_time.rb:819:in `<main>'
        1: from study_time.rb:827:in `<class:Football_player>'
study_time.rb:827:in `+': no implicit conversion of Integer into String (TypeError)

数値と文字は連結できないという意味です。
"身長:"+ height と height = 169の部分のことです。

Ruby 整数 文字列変換で検索します。

この記事がヒットします。
https://www.javadrive.jp/ruby/numeric_class/index4.html

class  Football_player
    #コード追加 名前と国籍、身長を受け取る
    #名前と身長の情報を出力
name = "メッシ"
 nationality = "アルゼンチン"
 height = 169
 puts "名前:" + name
 puts "国籍:"+ nationality 
 puts "身長:"+ height.to_s  //.to_sを追記
end

Football_player1 = Football_player.new("メッシ","アルゼンチン",169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()

height.to_s に変更しました。

以下のエラーが出ます。

名前:メッシ
国籍:アルゼンチン
身長:169
Traceback (most recent call last):
        2: from study_time.rb:830:in `<main>'
        1: from study_time.rb:830:in `new'
study_time.rb:830:in `initialize': wrong number of arguments (given 3, expected 0) (ArgumentError)

その後に

class  Football_player
    #コード追加 名前と国籍、身長を受け取る
    #名前と身長の情報を出力
name = "メッシ"
 nationality = "アルゼンチン"
 height = 169
 puts "名前:" + name
 puts "国籍:"+ nationality 
 puts "身長:"+ height.to_s   //.to_sを追記
end

Football_player1 = Football_player.new("メッシ","アルゼンチン",169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()

次はこのコードを書いて行きます。
コード追加 名前と国籍、身長を受け取る

Rubyクラス変数初期化で検索し以下の記事がヒットします。
https://www.javadrive.jp/ruby/class/index5.html

class  Football_player
    #コード追加 名前と国籍、身長を受け取る
def initialize(name,nationality,height)
   @name = name
   @nationality = nationality
   @height = height
end

    #名前と身長の情報を出力
name = "メッシ"
 nationality = "アルゼンチン"
 height = 169

 def data
 puts "名前:" +  @name
 puts "国籍:"+ @nationality 
 puts "身長:"+ @height.to_s
end
end

Football_player1 = Football_player.new("メッシ","アルゼンチン",169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()

これで期待通りの挙動になります。

最後に

かなりわかりづらい記事になり申し訳ありませんでした。
この記事はほぼ自分のアウトプットのための記事です。
動画は詳しく載っているので見てみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0