blockun dialy

同人ゲーム制作サークル「SaNa」のメンバーが書くゆるーいブログです。

小学生でも出来る!C++プログラム #06

はおっ(0^∀^)ノ お久しぶりです。渚です。

プログラムしか書けない私たちですが、この度は同人界隈向けに、 なんとなくこんな風に作ってるよーというのを発信すべく、 定期的にブログで紹介してみようかということになりました。 この記事はそんな連載の第12回です。

ということで,渚からは「小学生でも出来る!C++プログラム」 を紹介していこうと思います。

関連ブログ

目次

  • 「if文を使おう!」
    • 自動販売機プログラム
    • 自動販売機プログラム解答

人物紹介

渚:プログラムを教えてくれる先生

f:id:nagisa39:20160618210950p:plain

ココ:いんたーねっとって聞いたことがあります!

f:id:nagisa39:20160619122427p:plain

マナブ:将来はゲームプログラマーになりたいな!

f:id:nagisa39:20160619122428p:plain

自動販売機プログラム

渚>今日は自動販売機プログラムを書いていきましょう!

ココ>じどうはんばいき?

マナブ>ジュースが買える機械だよ。

ココ>知ってる!   そうじゃなくて,そのプログラムっていうのが想像できなくて・・・

マナブ>確かにそうですね。どんなプログラムなんですか?

渚>標準入出力(コンソール)を使って,ちょっとした自動販売機を作ります。

渚>見た方が早いので,お見せしますね。

f:id:nagisa39:20160904145136p:plain

渚>まずは,coutを使って,表示を行います。

渚>¥(円マーク)は,¥¥と記入しないと,適切に表示されないので注意しましょう!

f:id:nagisa39:20160904145330p:plain

渚>次に,cinを使って,入力を行います。

渚>赤色の字の「1」がcinで入れた値になります。

ココ>cin?

渚>coutの意味が,c(コンソール)のout(出力)です。  cinは,c(コンソール)のin(入力)になります。

渚>使い方は,

std::string value;
std::cin >> value;

渚>これだけで,string型のvalueに値が入ります。

渚>では,自動販売機のプログラムを見てみましょう!

渚>赤色の字以外は,coutで表示しているだけです。   では,赤色の字の数字を変えたらどうなるか見てみましょう!

渚>例えば,1番目に0を入れてみますね。

f:id:nagisa39:20160904150617p:plain

渚>こんな感じで,1~4のみしか処理しないようになっています。

渚>1番目に1~4のどれかを入力し,   2番目に,1~2以外を入力してみますね。

f:id:nagisa39:20160904151758p:plain

渚>こんな感じで,無視して買わされます。

マナブ>聞く意味ないですね・・;

渚>そうですね!   気になる人は,1~2以外の入力を受け付けないようにしましょう。

渚>あと見せていないのは,1番目に3と4を選択したパターンですね。

ココ>1番目に4を入れると,お金が足りなくて買えない!

渚>そうですね!どうなるか見てみましょう。

f:id:nagisa39:20160904152323p:plain

渚>こんな感じで,お金が足りないことを指摘されます。

渚>最後に,1番目に3を選択した場合と,2番目に2を選択した場合を見てみましょう!

f:id:nagisa39:20160904152423p:plain

渚>こんな感じです。

渚>では,こんな感じの自動販売機プログラムを組んでみましょう!

マナブ>は~い! ココ>は~い!

自動販売機プログラム解答

渚>では,解答プログラムを載せますね。

渚>まだ,出来ていない人は,出来るだけ自力で頑張ってね!

渚>ちなみに,↓のが唯一の回答ではなく,こういう方法もある位に思ってください!

#include <iostream>
#include <string>
using namespace std;

int main()
{
    unsigned int money = 1500;

    string select;
    int i_select;

    cout << "自動販売機" << endl;

    cout << "残金:" << money << "円" << endl;
    cout << "--------------------------------" << endl;
    cout << "お茶 アップル コーラ コーヒー" << endl;
    cout << "\\100   \\150      \\1500    \\2000" << endl;
    cout << "--------------------------------" << endl;

    cout << "どれをお買い求めになりますか?" << endl;
    cout << "1:お茶 2:アップル 3:コーラ 4:コーヒー" << endl;
    cin >> select;
    
    try 
    {
        i_select = std::stoi(select);
    }
    catch(exception e)
    {
        cout << "1~4を入れて下さい!" << endl;
        return 0;
    }
    
    if (i_select == 1)
    {
        if (money < 100)
        {
            cout << "お金たりないよ~!" << endl;
            return 0;
        }

        cout << "お茶を買いましたね。" << endl;
        cout << "本当にいいんですか?" << endl;
        cout << "1:はい 2:YES" << endl;
        cin >> select;

        cout << "お買い上げありがとうございます!" << endl;
        cout << "あなたのお財布から" << 100 << "円が減りました" << endl;
        cout << "残金:" << (money -= 100) << "円" << endl;
    }
    else if (i_select == 2)
    {
        if (money < 150)
        {
            cout << "お金たりないよ~!" << endl;
            return 0;
        }
        cout << "アップルを買いましたね。" << endl;
        cout << "本当にいいんですか?" << endl;
        cout << "1:はい 2:YES" << endl;
        cin >> select;

        cout << "お買い上げありがとうございます!" << endl;
        cout << "あなたのお財布から" << 150 << "円が減りました" << endl;
        cout << "残金:" << (money -= 150) << "円" << endl;
    }
    else if (i_select == 3)
    {
        if (money < 1500)
        {
            cout << "お金たりないよ~!" << endl;
            return 0;
        }
        cout << "コーラを買いましたね。" << endl;
        cout << "本当にいいんですか?" << endl;
        cout << "1:はい 2:YES" << endl;
        cin >> select;

        cout << "お買い上げありがとうございます!" << endl;
        cout << "あなたのお財布から" << 1500 << "円が減りました" << endl;
        cout << "残金:" << (money -= 1500) << "円" << endl;
    }
    else if (i_select == 4)
    {
        if (money < 2000)
        {
            cout << "お金たりないよ~!" << endl;
            return 0;
        }
        cout << "コーヒーを買いましたね。" << endl;
        cout << "本当にいいんですか?" << endl;
        cout << "1:はい 2:YES" << endl;
        cin >> select;

        cout << "お買い上げありがとうございます!" << endl;
        cout << "あなたのお財布から" << 2000 << "円が減りました" << endl;
        cout << "残金:" << (money -= 2000) << "円" << endl;
    }
    else
    {
        cout << "1~4を入れて下さい!" << endl;
        return 0;
    }
    
    cout << "--------------------------------" << endl;
    return 0;
}

渚>今までの紹介にない,部分を説明しますね!

unsigned int money = 1500;

渚>実は,int型の本名は,signed intという型なんです。   この型は,プラスの値とマイナスの値の両方が使える型になります。

渚>unsigned int型は,マイナスを扱えないようにする代わりに   通常のsigned int型より,大きいプラスの値が使える型になります。

渚>今回は,moneyがマイナスになることがないので,unsigned int型を使っています。

i_select = std::stoi(select);

渚>これは,string型のselectをint型のi_selectに変換しています。

渚>もし,selectに入っている値がint型ではなかった場合,

    try 
    {
        i_select = std::stoi(select);
    }
    catch(exception e)
    {
        cout << "1~4を入れて下さい!" << endl;
        return 0;
    }

渚>catchの中に入り,「"1~4を入れて下さい!"」が表示されます。

渚>try catchは,「selectに入っている値がint型ではなかった場合」   のような,異常なエラーがあった際,   落ちるのではなく,正常に処理を続けられるようにする仕組みです。

渚>これで説明は以上になります!ほかに気になるところはありますか?

ココ>だいじょうぶです! マナブ>だいじょうぶです!

渚>ということで,今回はif文を使って,自動販売機プログラムを書いてみよう!でした。

次回

for文について学ぼう

---フリー素材提供-------------------------------------- [ジュエルセイバーFREE] URL:http://www.jewel-s.jp/