🐳

【初心者向け】日本語からプログラミング言語へ(八百屋編)

2020/10/06に公開

概要

今回は初心者向けの記事になっております。
私が
・友達にプログラミング言語を教える時
・自分が学校で学んできた時
にどのように教えたり/学んだりしたのかを考えていました。
そしたら、「小学校の算数の文章問題レベル」をプログラミング言語に置き換えて、勉強していたことを思い出しました。私は毎回それを書く上で、いろんな書き方を学んで楽しさに気がついていきました!
今回はそれを実際にやってみようと思います!!

文章問題

八百屋さんがあります。
八百屋さんでは、
りんご100円
みかん200円
で販売されています。
Aくんは、りんごを3個とみかん3個を購入しました。
その時のAくんは何円払うでしょうか?
(正解は、900円です。)

プログラミングにしてみましょう!

下記のStepでプログラミングにしていきたいと思います。

  1. 数式にする
  2. 変数を書き出す
  3. クラスを使う
    (VScode + Rubyでコードは記載しています)

数式にする

# 八百屋さんがあります。
# 八百屋さんでは、
# りんご100円
# みかん200円
# で販売されています。
# Aくんは、りんごを3個とみかん3個を購入しました。
# その時のAくんは何円払うでしょうか?

puts 100 * 3 + 200 * 3 #りんご料金*購入個数 + みかん料金*購入個数 

ここは算数の式と出す感じと同じですね!

変数を書き出す

ここからプログラミングらしく変数で定義していきたいと思います。
それぞれ下記のように変貌します。

# 八百屋さんがあります。
# 八百屋さんでは、
# りんご100円
# みかん200円
# で販売されています。
# Aくんは、りんごを3個とみかん3個を購入しました。
# その時のAくんは何円払うでしょうか?
applePrice = 100
orangePrice = 200

appleWantCount = 3
orangeWantCount = 3
puts applePrice * appleWantCount + orangePrice * orangeWantCount

数式の時と違って、コメントがなくてもわかるようになったと思います!
こうやってわかりやすい変数をつけていきたいですね〜
変数にすることによって、「個数を変えたり、値段を変えたりすること」が容易になったと思います。

変数がよくない例は下記のようになります。コメントしないと何をしているかわかりませんね。。。

a = 100
c = 200

b = 3
d = 3
puts a * b + c * d

クラスを使う

最後の仕上げをしましょう!
何をするかというと、「何個買うのか、何を買うのか」は変数名で理解することができました。
どこと誰の部分をクラスで定義していきたいと思います。

# 八百屋さんがあります。
# 八百屋さんでは、
# りんご100円
# みかん200円
# で販売されています。
# Aくんは、りんごを3個とみかん3個を購入しました。
# その時のAくんは何円払うでしょうか?
class Yaoya 
    def purchasePrice(appleCount, orangeCount) 
        applePrice = 100
        orangePrice = 200
        return applePrice * appleCount + orangePrice * orangeCount
    end
end

class Akun
    def wantAppleCount
        appleCount = 3
        return appleCount
    end

    def wantOrangeCount 
        orangeCount = 3
        return orangeCount
    end
end

akun = Akun.new()
yaoya = Yaoya.new()

puts yaoya.purchasePrice(akun.wantAppleCount, akun.wantOrangeCount)

これでAくんが欲しいものが、八百屋さんが買うことができたので完成です!
他のいろんな書き方はありますが、今回はこちらを採用しました。

まとめ

どうでしたでしょうか?
変数を書き出すことができたら、第一歩はOKです!
経験者の方は「こうやって学んだな」と思い出してもらえたら、幸いです。

今回Rubyでしたら、自分が得意な言語で書いてみても楽しいかもしれません。
次回機会があれば、SwiftやKotlin等でも書きたいなと思っています!
こんなお題でやってほしい等のコメントがあったら、挑戦したいので、どんどんコメントくださいm(_ _)m

最後読んでいただきありがとうございました!

これでプログラミングに興味を持った方は
Progate
https://prog-8.com/

少し開発に自信がある人は、
Paizaをしてみるとよいかもです。

Discussion