BETA

Ruby ターミナル内アプリの作り方 (クラス使用しないバージョン)

投稿日:2020-09-01
最終更新:2020-09-04

今回はTwitterで知り合ったあっこさんに教えて頂いた、
八百屋さんアプリの作り方をまとめていきます。

八百屋さんアプリの完成形(クラス使用しないバージョン)

まずは完成形のターミナルから。。

1.とまと(¥100)  
2.にんじん(¥200)  
3.かぼちゃ(¥300)  
4.スイカ(¥1000)  
商品を選択 >  【番号を入力する】  
【選んだ商品名】ですね。何個買いますか> 【個数を入力】  
5個以上なので、20%割引となります。  
合計金額 : 【○○○○円】  

簡単に言うと
メニューを表示→商品選択→個数を選択→合計金額
このようなアプリになります。

アプリに必要な知識 

まずは自分に足りないものを考えます。

①メニュを表示 → each文で作成。
②商品選択時の変数の使い方。
③ターミナル内で値の受け取り方
④5個以上の時の割引 → 条件分岐

②、③が自信なかったので調べながらやります

アプリ制作

①メニューの表示の仕方

メニュー名、金額を menus の配列の中に入れ、
番号をつけて、名前・金額それぞれ取り出します。

menus = [  
  {name: "とまと", price: 100},  
  {name:"にんじん", price: 200},  
  {name:"かぼちゃ", price: 300},  
  {name:"スイカ", price: 1000}  
]  

menus.each.with_index(1) do |menu,i|  
  puts "#{i}.#{menu[:name]}(¥#{menu[:price]})"  
end  

これをターミナルで実行すると。。

1.とまと(¥100)  
2.にんじん(¥200)  
3.かぼちゃ(¥300)  
4.スイカ(¥1000)  

メニュー表示できました。

②商品番号を選択(ターミナルの値の受け取り方)

print "商品を選択 > "  
order = gets.chomp.to_i  
select_menu = menus[order - 1]  

ターミナル内から番号を受け取るときは、gets.chompを使用。
これを整数に .to_iを使用する。
商品番号で受け取った値を select_menu に代入する。
この時 order受け取った番号で選択すると0からのインデックス番号で選択されてしまう。
[order - 1]とすることで、、受け取った番号と商品名が一致する。。

③個数を選択(ターミナルの値の受け取り方)

print "#{select_menu[:name]}ですね。何個買いますか。>"  
count = gets.chomp.to_i  

代入したあとなので、名前を取り出すときは#{select_menu[:name]}となる。
個数で受け取った値を count に代入する。

④条件分岐後に、合計金額を表示

total_price = select_menu[:price] * count  
if count >= 5  
  puts "5個以上なので20%割引となります"  
  total_price *= 0.8  
end  
puts "合計金額:¥#{total_price.floor}"  

合計金額をtotal_priceに代入する。
5個以上の時は total_price *=0.8で上書きする。
小数点ををかけているので、合計金額を表示すると。。
小数点で表示されてしまう。。そんな時に助けてくれるは .floorだ!!!
#{total_price.floor}とすることで整数として表示してくれる。。

これを合体させれば八百屋さんアプリの完成だ!!!

落ち着けばできるはずなのに。。いきなり作ろうと思うと、、
頭がこんがらがってしまう。。
作る時は自分に足りないモノを先に見つければ、、
多少落ち着いてできる気がする。。
問題を出してくれたあっこさんには感謝しかない!!!
しかも教えてくれる!なんて!!
いつか恩返しができるように、、積み上げて、ちょっとづつでも前進しよう。。
https://twitter.com/akko_merry 本当にありがとうございます!!!

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

アラフォーから始めるプログラミング!!!目指せエンジニア☆☆

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう