第1章 第4節 歴史に「もし(IF)」はないけれど…


← 前に戻る | 次に進む →

この節では、選択や繰り返しなどの基本的な文について説明します。まずは下の表を見てください。

意味と使い方
if文 式の条件が真の場合、文1が実行され、偽の場合は(もしあれば)文2が実行される。
if (式) 文1
if (式) 文1 else 文2
switch文 式の条件より、caseでラベルされた行に飛ぶ。
switch (式) 文
while文 式が真の間、文が繰り返される。ただし、文が実行される前に式が評価される。
while (式) 文
do文 式が真の間、文が繰り返される。ただし、文が実行された後に式が評価される。
do 文 while (式);
for文 式1で初期設定、式2で評価、式3は式2を再評価する前に実行される。文は式2が真の間、繰り返される。
for (式1; 式2; 式3) 文

これらの文を組み合わせて使用することにより、複雑な仕組みを持つプログラムを書くことができるようになります。では、これらを用いた非常に簡単なこづかい帳(みたいなもの(^-^;)を作ってみましょう。

List 1.11 簡易こづかい帳

#include <iostream>
using namespace std;

int main()
{
    int income, outgo, total;
    int sw;

    total = 10000;
    cout << "現在の所持金は " << total << " 円になります。" << endl;

    // 20回まで記録を付けられます.
    for (int i = 0; i < 20; i++) {
        cout << "収入なら 1、支出なら 2、それ以外なら終了です: " << ends;
        cin >> sw;

        if (sw != 1 && sw != 2) break;

        switch (sw) {
        case 1:
            cout << "収入はいくらですか? " << ends;
            cin >> income;
            total += income;
            break;
        case 2:
            cout << "支出はいくらですか? " << ends;
            cin >> outgo;
            total -= outgo;
            break;
        }
    }

    cout << "現在の所持金は " << total << " 円になります。" << endl;

    return 0;
}


現在の所持金は 10000 円になります。
収入なら 1、支出なら 2、それ以外なら終了です:  1
収入はいくらですか?  3000
収入なら 1、支出なら 2、それ以外なら終了です:  2
支出はいくらですか?  5000
収入なら 1、支出なら 2、それ以外なら終了です:  2
支出はいくらですか?  2000
収入なら 1、支出なら 2、それ以外なら終了です:  0
現在の所持金は 6000 円になります。

このプログラムは、実行すると現在の所持金を表示し、収入・支出のどちらを入力するのか尋ねてきます。そこで、収入なら1、支出なら2を入力します。すると今度は金額を尋ねられますので、数値を入力してください。そして、終了するときは1と2以外を入力します(例では0を入力しています)。

こんなのがこづかい帳なのか? と思われるかもしれませんが、とりあえずは大きなものを作るには、まず土台からということで少々お付き合いくださいまし(^-^)。

では、プログラムの中身を見ていきましょう。

まず、最初の宣言のところで、int型でincome、outgo、totalという変数を宣言しています。文字通りincomeは収入、outgoは支出、totalは合計を表します。そして、totalは初期値として10000が代入されています。swは後でswitch文の式に使用します。

早速、for文が出てきました。おや、for文の中にint iと宣言されていますね。この宣言はfor文の中だけで有効になるのです[注4]。そして、このfor文では変数iが20より小さいときに実行せよという意味なので、for文の中身が20回繰り返されることになります。

無限ループ

無限ループを作る記法は、for (;;)while (true)(もしくはwhile (1))があります。while (true)は条件が真の間、繰り返されるので理解するのは簡単でしょう。一方、for (;;)の記法はなんだか奇異に感じるかもしれません。しかしこの書き方はCやC++では一般的なので覚えておくと良いでしょう。これをforever(永遠に)と覚えておくとわかりやすいのではないでしょうか。

次に、変数swにユーザが入力した数値が入ります。収入なら1、支出なら2、終了ならそれ以外です。そして、if文でswが1でなく、かつ、2でもない場合にこのfor文から抜け出すためのbreakが実行されます。このbreakはfor文やwhile文などの繰り返しの中から抜け出したり、後述のswitch文から抜け出すときに使用します。

さて、つぎにswitch文が出てきます。swに入っている数値をラベルとして、それと同じラベルを持ったcaseに行くことになります。つまり、swが1なら、case 1:に、swが2なら、case 2:に行きます。ここでは使用していませんが、指定したラベルが存在しない場合は、default:を使用すればそれに対する処理を記述できます。

ここで、switch文を用いる際、注意しなければならないことがあります。それはcaseから抜けるためにはbreakを用いなくてはならないということです。もし、case 1:でbreakがなかったら、そのままcase 2:も実行してしまうのです。

収入・支出の処理が終わると、再び現在の所持金が表示され、終了です。どうでした? 難しく感じましたか? それとも簡単でしたか? 選択や繰り返しをマスターすれば、プログラミングの基本はわかったことになります。


← 前に戻る | 次に進む →


Copyright (C) Noriyuki Futatsugi/Foota Software, Japan.
All rights reserved.
d2VibWFzdGVyQGZ1dGF0c3VnaS5uZXQ=