C++入門|2章を例題で確認する

C++の基本技を、例題で実戦確認。cin、cout、if文、stringを使って、入力・判定・表示の流れを修行ミッションのように身につけよう。

ここまでの2章では、C++の基本として、cinによる入力、coutによる出力、stringによる文字列の扱い、if文による条件判定などを学んできました。

C++の文法は、ひとつずつ見るとシンプルです。
しかし、実際のプログラムでは、これらを組み合わせて使うことが大切になります。

たとえば、キーボードから数値を入力し、その値が条件を満たすか判定して、結果を表示する。
あるいは、文字列を入力し、指定された合言葉と一致するかを調べて、OKかNGを表示する。

このような処理は、C++の基本練習としてとても重要です。

ドラゴンボール風にたとえるなら、2章で学んだ内容は、C++修行場で覚えた基本技です。

cinは、修行端末から値を受け取る技。
coutは、結果を表示パネルへ送る技。
if文は、スカウターの判定によって進む道を変える技。
stringは、技名や合言葉のような文字列を扱うための便利なカプセルです。

ここでは、2章の内容を確認するために、次の2つの例題に取り組みます。

例題確認する内容ドラゴンボール風のイメージ
例題2-1整数を入力し、条件を満たすか判定する戦闘力が修行条件を満たすか調べる
例題2-2文字列を入力し、指定文字列と比較する修行場の合言葉が正しいか判定する

どちらの例題も、C++の基本を確認するのにぴったりです。

プログラムを読むときは、次の流れを意識しましょう。

流れ内容
入力cinでキーボードから値を受け取る
保存受け取った値を変数に入れる
判定if文で条件を調べる
出力coutで結果を表示する

この流れを理解できると、C++の基本的なプログラムをかなり読みやすくなります。

図:2章の例題で確認するC++の基本技

この図が示していること

この図では、C++の基本的な処理の流れを表しています。

cinで入力を受け取り、if文で条件を判定し、coutで結果を表示します。
2章の例題では、この流れを使って、数値の判定や文字列の比較を行います。

C++のプログラムは、入力、処理、出力の順番で考えると理解しやすくなります。

例題2-1:戦闘力が3の倍数か判定する

問題文

プログラムを実行すると「戦闘力を入力:」と表示され、入力待ち状態になります。
キーボードから整数値を入力し、入力した数値が3の倍数であれば、その数値が3の倍数であると表示するプログラムを作りなさい。

3の倍数ではない場合は、何も表示しなくてかまいません。

期待される実行結果①

戦闘力を入力:12
12は3の倍数です。

期待される実行結果②

戦闘力を入力:10

この例題では、整数の入力、if文による条件判定、coutによる表示を確認します。

ドラゴンボール風にいえば、入力された戦闘力が「3倍修行モード」に入れる値かどうかを調べるミッションです。

例題2-1の考え方

まず、キーボードから整数を入力するために、int型の変数を用意します。

int power;

次に、coutで入力を促します。

cout << "戦闘力を入力:";

そして、cinで入力された値をpowerに入れます。

cin >> power;

3の倍数かどうかを調べるには、3で割った余りを確認します。
C++では、余りを求めるために%演算子を使います。

power % 3 == 0

この条件が成り立つなら、powerは3の倍数です。

条件式意味
power % 3 == 0powerを3で割った余りが0
余りが03で割り切れる
3で割り切れる3の倍数

たとえば、12を3で割ると余りは0です。
そのため、12は3の倍数です。

一方、10を3で割ると余りは1です。
そのため、10は3の倍数ではありません。

例題2-1の解答例

プロジェクト名/ファイル名: Ex2_1/main.cpp

#include <iostream>

using namespace std;

int main(int argc, char** argv) {
    // 戦闘力を入れる変数を宣言する
    int power;

    // キーボードから整数値を入力する
    cout << "戦闘力を入力:";
    cin >> power;

    // 3で割った余りが0なら、3の倍数と判定する
    if (power % 3 == 0) {
        cout << power << "は3の倍数です。" << endl;
    }

    // プログラムが正常に終わったことを示す
    return 0;
}

解説

このプログラムでは、入力された整数が3の倍数かどうかを判定しています。

最初に、整数を入れるための変数powerを宣言しています。

int power;

powerは、キーボードから入力された戦闘力を保存するための変数です。

次に、coutを使って入力を促すメッセージを表示しています。

cout << "戦闘力を入力:";

この表示があることで、実行した人は何を入力すればよいのか分かります。

そのあと、cinを使ってキーボードから整数を受け取ります。

cin >> power;

cin >> power; と書くことで、入力された整数がpowerに代入されます。

判定に使っているのは、次のif文です。

if (power % 3 == 0) {
    cout << power << "は3の倍数です。" << endl;
}

power % 3は、powerを3で割った余りを求める式です。

powerの値power % 3判定
1203の倍数
903の倍数
1013の倍数ではない
1423の倍数ではない

if文は、条件がtrueのときだけ中の処理を実行します。
そのため、power % 3 == 0が成り立つときだけ、メッセージが表示されます。

ドラゴンボール風にたとえるなら、スカウターが戦闘力を調べて、3倍修行モードに適した値なら「3の倍数です」と表示しているイメージです。

図:%演算子で3の倍数を判定する

この図が示していること

この図では、入力された整数が3の倍数かどうかを、%演算子で判定する流れを表しています。

power % 3 == 0がtrueなら、3で割り切れるため、3の倍数です。
その場合だけ、coutで判定結果を表示します。

if文は、条件が成り立つときだけ処理を実行するため、条件判定の基本練習に向いています。

例題2-1で確認できるC++の基本

この例題では、次の内容を確認できます。

確認ポイント内容
int型整数を扱う
cinキーボードから数値を入力する
coutコンソールへ結果を表示する
if文条件が成り立つときだけ処理する
%演算子割った余りを求める
==演算子等しいかどうかを比較する

この例題の中心は、条件式です。

power % 3 == 0

この式が読めるようになると、倍数判定のプログラムが作りやすくなります。

たとえば、2の倍数ならpower % 2 == 0、5の倍数ならpower % 5 == 0のように考えられます。

例題2-2:修行場の合言葉を判定する

問題文

プログラムを実行すると「合言葉を入力:」と表示され、入力待ち状態になります。
キーボードから文字列を入力し、入力した文字列が「Training」であれば「入場OK!」と表示し、そうでなければ「入場NG!」と表示するプログラムを作りなさい。

ただし、文字列を扱う変数にはstring型を使うこと。

期待される実行結果①

合言葉を入力:Training
入場OK!

期待される実行結果②

合言葉を入力:Battle
入場NG!

ドラゴンボール風にたとえるなら、修行場の入口で合言葉を入力し、正しければ入場できる判定ミッションです。

例題2-2の考え方

文字列を扱うために、string型の変数を用意します。

string word;

stringを使う場合は、stringヘッダーを読み込んでおくと分かりやすく安全です。

#include <string>

次に、coutで入力を促します。

cout << "合言葉を入力:";

そして、cinで入力された文字列をwordに入れます。

cin >> word;

入力された文字列がTrainingかどうかは、==演算子で比較できます。

word == "Training"

この条件が成り立つなら、入場OKを表示します。
そうでなければ、else側で入場NGを表示します。

入力文字列判定表示
Training一致する入場OK!
Battle一致しない入場NG!
training大文字小文字が違う入場NG!

C++のstringでは、==演算子を使って文字列の内容を比較できます。
この点は、C++で文字列を扱ううえでとても便利です。

例題2-2の解答例

プロジェクト名/ファイル名: Ex2_2/main.cpp

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char** argv) {
    // 合言葉を入れるstring型の変数を宣言する
    string word;

    // メッセージを表示して、キーボードから文字列を入力する
    cout << "合言葉を入力:";
    cin >> word;

    // 入力された文字列がTrainingかどうかを判定する
    if (word == "Training") {
        cout << "入場OK!" << endl;
    }
    else {
        cout << "入場NG!" << endl;
    }

    // プログラムが正常に終わったことを示す
    return 0;
}

解説

このプログラムでは、入力された文字列が指定された合言葉と一致するかどうかを判定しています。

まず、string型の変数wordを宣言しています。

string word;

string型は、C++で文字列を扱うための便利な型です。
技名、名前、合言葉、メッセージなどを扱うときに使えます。

次に、coutで入力を促します。

cout << "合言葉を入力:";

そのあと、cinで入力された文字列をwordに入れます。

cin >> word;

たとえば、Trainingと入力すると、wordの中にはTrainingが入ります。

判定は、次のif文で行っています。

if (word == "Training") {
    cout << "入場OK!" << endl;
}
else {
    cout << "入場NG!" << endl;
}

word == "Training" は、wordの中身がTrainingと等しいかどうかを調べています。

条件がtrueなら、入場OK!を表示します。
条件がfalseなら、else側に進み、入場NG!を表示します。

条件結果
word == "Training" がtrue入場OK!
word == "Training" がfalse入場NG!

ドラゴンボール風にいえば、修行場の入口にある判定装置が、入力された合言葉をチェックしているイメージです。

合言葉がTrainingなら、扉が開いて入場OK。
違う言葉なら、入場NGになります。

string型と==演算子の便利さ

C++のstring型では、==演算子で文字列の内容を比較できます。

word == "Training"

これは、wordの中身がTrainingと同じかどうかを調べる式です。

数値の比較と同じような感覚で書けるため、とても読みやすいです。

比較意味
word == "Training"wordがTrainingと同じか
word != "Training"wordがTrainingと違うか

stringを使うと、文字列の入力、表示、比較が自然に書けます。
これはC++の大きな便利ポイントです。

図:stringの比較で合言葉を判定する

この図が示していること

この図では、string型の変数wordに入力された文字列を、Trainingという文字列と比較する流れを表しています。

word == "Training"がtrueなら、入場OK!を表示します。
falseなら、入場NG!を表示します。

C++のstringでは、==演算子で文字列の内容を比較できるため、合言葉判定のような処理を分かりやすく書けます。

例題2-2で確認できるC++の基本

この例題では、次の内容を確認できます。

確認ポイント内容
string型文字列を扱う
#includestringを使う準備
cinキーボードから文字列を入力する
cout結果を表示する
if文条件によって処理を分ける
else条件が成り立たないときの処理を書く
==演算子文字列の内容が等しいか比較する

数値だけでなく、文字列もif文で判定できます。

C++ではstring型を使うことで、文字列の入力や比較を自然に書けます。
特に、word == "Training"のような書き方は、意味が読み取りやすいです。

2つの例題で確認した流れ

今回の2つの例題は、扱っているデータの種類が違います。

例題2-1では整数を扱いました。
例題2-2では文字列を扱いました。

しかし、プログラムの基本の流れはとても似ています。

流れ例題2-1例題2-2
入力するcin >> power;cin >> word;
判定するpower % 3 == 0word == "Training"
表示する3の倍数なら表示OKまたはNGを表示

このように、C++では数値でも文字列でも、入力、判定、表示という流れで考えることができます。

ドラゴンボール風にいえば、どちらもスカウター判定ミッションです。

戦闘力を入力する場合は、数値条件を判定します。
合言葉を入力する場合は、文字列の一致を判定します。

扱うデータが違っても、C++の基本の組み立て方は共通しています。

2章の例題で身につけたい考え方

2章の例題で大切なのは、文法をばらばらに覚えることではありません。
入力された値を変数に入れ、その値を条件式で調べ、必要な結果を表示するという流れをつかむことです。

考え方内容
入力された値は変数に保存するcinで受け取った値をあとで使えるようにする
条件式で判定するif文の中でtrueかfalseを判断する
条件に応じて表示を変えるcoutで結果を出力する
数値と文字列で比較方法が少し違う数値は%や比較演算、文字列は==などを使う

C++では、cinとcoutを使うことで、入力と出力を分かりやすく書けます。
さらに、if文を組み合わせると、条件に応じてプログラムの動きを変えられます。

この感覚が身につくと、次の段階である繰り返し処理、関数、クラスの学習にも進みやすくなります。

2章で押さえておきたい確認ポイント

2章の内容を例題で確認するときは、次のポイントを意識しましょう。

ポイント内容
coutメッセージや結果を表示する
cinキーボードから値を入力する
int整数を扱う
string文字列を扱う
if文条件が成り立つか判定する
else条件が成り立たない場合の処理を書く
%演算子割った余りを求める
==演算子等しいかどうかを比較する
endl改行する

2章で学ぶ内容は、C++プログラムの基本技です。

ドラゴンボール風に言えば、cinは修行端末から値を受け取る技、coutは結果を表示パネルに送る技、if文はスカウター判定で進む道を決める技です。

この基本技を例題で確認しておくと、次の学習に進んだときにも、コードの流れを落ち着いて読めるようになります。