C++ の基本構文

C++C++Advanced
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、C++ プログラムの基本構造を学び、基本的な構文要素を探り、実行プロセスを理解します。この実践的な経験は初心者向けに設計されており、WebIDE 環境を使って C++ コードを書き、理解するための堅牢な基礎を提供します。

最初の C++ プログラムのセットアップ

まずは簡単な C++ プログラムを作成して調べてみましょう。これにより、C++ プログラムの基本構造とコンポーネントを理解することができます。

  1. WebIDE では、左側にファイルエクスプローラが表示されているはずです。ファイルエクスプローラエリアで右クリックし、「新しいファイル」を選択します。
  2. 新しいファイルに hello.cpp と名前を付けて Enter キーを押します。
  3. 新しいファイルがエディタで開かれるはずです。開かない場合は、ファイルエクスプローラの hello.cpp をダブルクリックして開きます。
  4. エディタに次の C++ コードを入力します。
#include <iostream>
using namespace std;

int main() {
    cout << "Hello, C++!" << endl;
    return 0;
}
C++ コードエディタのスクリーンショット

このコードを分解してみましょう。

  1. #include <iostream>:これは、入出力ストリームライブラリを含む事前処理指示子です。入出力操作に関するツールを使用したいことを C++ に伝えるようなものです。
  2. using namespace std;:この行により、標準ライブラリの要素を std:: で接頭辞を付けることなく使用できるようになります。「標準のツールセットを毎回その由来を指定することなく使用したい」と言っているようなものです。
  3. int main() {... }:これはメイン関数で、プログラムの実行が始まります。すべての C++ プログラムには main 関数が必要です。main の前の int は、この関数が整数値を返すことを示しています。
  4. cout << "Hello, C++!" << endl;:この行は、コンソールに "Hello, C++" という文字列を出力します。cout は出力に使用され、<< は出力演算子で、endl は文字列を出力した後に改行を追加します。
  5. return 0;:これは、プログラムが正常に実行されたことを示します。通常、0 の戻り値はすべてが予想通りに行ったことを示すために使用されます。

では、プログラムをコンパイルして実行してみましょう。

  1. WebIDE にターミナルまたはコンソールパネルがあることを確認します。見えない場合は、開く必要があります(通常、「ターミナル」または「ビュー」メニューの下に「新しいターミナル」のようなオプションがあります)。

  2. ターミナルで、正しいディレクトリにいることを確認します。現在のディレクトリを確認するには pwd コマンドを使用し、必要に応じて移動するには cd を使用します。

  3. プログラムをコンパイルするには、ターミナルに次のコマンドを入力します。

    g++ -o hello hello.cpp
  4. コンパイル済みのプログラムを実行するには、次のように入力します。

    ./hello

Hello, C++! という出力が表示されるはずです。

プログラム出力を表示するターミナル

エラーが発生した場合は、コードの誤字を再度確認してください。C++ は大文字と小文字を区別するので、coutCoutCOUT とは異なります。

変数とデータ型の理解

このステップでは、C++ における変数と基本的なデータ型を探ります。変数はプログラム内でデータを格納するために使用され、効率的なプログラミングにとって異なるデータ型を理解することは不可欠です。

  1. WebIDE で、variables.cpp と名付けた新しいファイルを作成します。これは、ファイルエクスプローラで右クリックして「新しいファイル」を選択することで行えます。
  2. エディタで variables.cpp を開き、次のコードを入力します。
#include <iostream>
#include <string>
using namespace std;

int main() {
    // 整数型変数
    int age = 25;

    // 浮動小数点型変数
    float height = 1.75;

    // 文字型変数
    char grade = 'A';

    // ブール型変数
    bool isStudent = true;

    // 文字列型変数 (C++ の string クラス)
    string name = "Alice";

    cout << "Name: " << name << endl;
    cout << "Age: " << age << " years" << endl;
    cout << "Height: " << height << " meters" << endl;
    cout << "Grade: " << grade << endl;
    cout << "Is a student: " << (isStudent? "Yes" : "No") << endl;

    return 0;
}

使用されている異なるデータ型を分解してみましょう。

  1. int:整数を表すために使用されます。例では、age は整数型です。
  2. float:少数を表すために使用されます。height に対して使用しています。より高精度を持つが、メモリを多く消費する double もあります。
  3. char:1 文字を表すために使用されます。grade 変数は文字型です。
  4. bool:真偽値を表すために使用されます。isStudent はブール型変数です。
  5. string:文字列を表すために使用されます。この型を使用するには、先頭に <string> をインクルードすることに注意してください。

このプログラムは、異なる型の変数を宣言する方法と、cout を使用してそれらを出力する方法を示しています。

cout << "Is a student: " << (isStudent? "Yes" : "No") << endl; という行に注目してください。これは、if-else 文の省略形である三項演算子 ?: を使用しています。つまり、「isStudent が true なら 'Yes' を出力し、そうでなければ 'No' を出力する」という意味です。

プログラムをコンパイルして実行するには:

  1. WebIDE のターミナルパネルで、正しいディレクトリにいることを確認します。

  2. 次のコマンドでプログラムをコンパイルします。

    g++ -o variables variables.cpp
  3. 次のコマンドでプログラムを実行します。

    ./variables

エラーが見つかった場合は、誤字を確認してください。一般的な誤りとしては、文の末尾にセミコロンを忘れたり、引用符が一致しなかったりすることが挙げられます。

制御構造 - if 文とループ

制御構造を使うことで、プログラムのフローを制御することができます。動的で応答性のあるプログラムを作成する上で不可欠な if 文とループを見ていきましょう。

  1. WebIDE で、control.cpp と名付けた新しいファイルを作成します。
  2. エディタで control.cpp を開き、次のコードを入力します。
#include <iostream>
using namespace std;

int main() {
    int number;
    cout << "Enter a number: ";
    cin >> number;

    // if 文
    if (number > 0) {
        cout << "The number is positive." << endl;
    } else if (number < 0) {
        cout << "The number is negative." << endl;
    } else {
        cout << "The number is zero." << endl;
    }

    // for ループ
    cout << "Counting from 1 to 5:" << endl;
    for (int i = 1; i <= 5; i++) {
        cout << i << " ";
    }
    cout << endl;

    // while ループ
    int count = 5;
    cout << "Countdown:" << endl;
    while (count > 0) {
        cout << count << " ";
        count--;
    }
    cout << endl;

    return 0;
}

使用されている制御構造を分解してみましょう。

  1. if-else 文:
    これにより、プログラムが判断を行うことができます。構造は以下の通りです。

    if (condition) {
        // 条件が true の場合に実行するコード
    } else if (another condition) {
        // この条件が true の場合に実行するコード
    } else {
        // どの条件も true でない場合に実行するコード
    }
  2. for ループ:
    コードブロックを何回繰り返すかを知っている場合に使用されます。構造は以下の通りです。

    for (initialization; condition; update) {
        // 繰り返すコード
    }

    例では、int i = 1 がループ変数を初期化し、i <= 5 がループを続ける条件で、i++ が各反復後にループ変数を更新します。

  3. while ループ:
    条件が true の間、コードブロックを繰り返したい場合に使用されます。構造は以下の通りです。

    while (condition) {
        // 繰り返すコード
    }

    例では、count > 0 の間、ループが続きます。

プログラムをコンパイルして実行するには:

  1. WebIDE のターミナルパネルで、正しいディレクトリにいることを確認します。

  2. 次のコマンドでプログラムをコンパイルします。

    g++ -o control control.cpp
  3. 次のコマンドでプログラムを実行します。

    ./control

プログラムを実行すると、数字を入力するように求められます。if 文がどのように機能するかを確認するために、異なる数字(正数、負数、ゼロ)を試してみてください。その後、入力に関係なく、for ループと while ループが示されます。

エラーが発生した場合は、セミコロンの欠落、ブレースの不一致、変数名の誤字などの一般的な問題を確認してください。

C++ における関数

関数は特定のタスクを実行するコードのブロックです。コードの整理に役立ち、再利用可能で理解しやすくなります。関数の使用方法を示すプログラムを作成しましょう。

  1. WebIDE で、functions.cpp と名付けた新しいファイルを作成します。
  2. エディタで functions.cpp を開き、次のコードを入力します。
#include <iostream>
using namespace std;

// 数値の二乗を計算する関数
int square(int num) {
    return num * num;
}

// 数値が偶数かどうかをチェックする関数
bool isEven(int num) {
    return num % 2 == 0;
}

// デフォルト引数付きの関数
void greet(string name = "Guest") {
    cout << "Hello, " << name << "!" << endl;
}

int main() {
    int number = 7;

    cout << number << " の二乗は:" << square(number) << endl;

    if (isEven(number)) {
        cout << number << " は偶数です。" << endl;
    } else {
        cout << number << " は奇数です。" << endl;
    }

    greet();  // デフォルト引数を使用
    greet("Alice");  // 名前を指定

    return 0;
}

このプログラムのコンポーネントを分解してみましょう。

  1. 関数定義:
    関数は戻り値の型、名前、および引数(必要に応じて)で定義されます。例えば:

    int square(int num) {
        return num * num;
    }

    この関数は整数 num を受け取り、その二乗を計算して結果を返します。

  2. ブール型の戻り値を持つ関数:

    bool isEven(int num) {
        return num % 2 == 0;
    }

    この関数は、数値が偶数の場合は true を、そうでない場合は false を返します。% 演算子は除算の余りを返します。

  3. デフォルト引数付きの関数:

    void greet(string name = "Guest") {
        cout << "Hello, " << name << "!" << endl;
    }

    この関数はデフォルト引数を持っています。関数を呼び出す際に引数が提供されない場合、"Guest" が使用されます。

  4. 関数呼び出し:
    main() 関数では、これらの関数をどのように呼び出して戻り値を使用するかを示しています。

プログラムをコンパイルして実行するには:

  1. WebIDE のターミナルパネルで、正しいディレクトリにいることを確認します。

  2. 次のコマンドでプログラムをコンパイルします。

    g++ -o functions functions.cpp
  3. 次のコマンドでプログラムを実行します。

    ./functions

このプログラムは、関数を使ってコードを管理可能で再利用可能なピースに整理する方法を示しています。エラーが発生した場合は、誤字、セミコロンの欠落、またはブレースの不一致を確認してください。また、関数を呼び出す際に正しい関数名を使用していることも確認してください。

基本的な入出力操作

この最後のステップでは、C++ における様々な入出力操作を示すプログラムを作成します。入出力を通じてユーザーと対話する方法を理解することは、対話型のプログラムを作成する上で不可欠です。

  1. WebIDE で、io_operations.cpp と名付けた新しいファイルを作成します。
  2. エディタで io_operations.cpp を開き、次のコードを入力します。
#include <iostream>
#include <iomanip>  // setprecision 用
#include <string>   // 文字列操作用
using namespace std;

int main() {
    string name;
    int age;
    double height;

    // 入力操作
    cout << "Enter your name: ";
    getline(cin, name);  // 空白を含む全行を読み取る
    cout << "Enter your age: ";
    cin >> age;
    cout << "Enter your height in meters: ";
    cin >> height;

    // 出力操作
    cout << "\n--- Your Information ---\n";
    cout << "Name: " << name << endl;
    cout << "Age: " << age << " years" << endl;

    // 浮動小数点出力の精度設定
    cout << fixed << setprecision(2);
    cout << "Height: " << height << " meters" << endl;

    // フォーマットされた出力のための幅と埋め文字の使用
    cout << "\nFormatted Age Display:\n";
    cout << setw(10) << setfill('.') << left << "Age" << setw(5) << right << age << endl;

    return 0;
}

このプログラムの主要なコンポーネントを分解してみましょう。

  1. 追加のヘッダー:

    • #include <iomanip>:このヘッダーは setprecisionsetw のような入出力マニピュレータを提供します。
    • #include <string>:このヘッダーは文字列操作のためのものですが、多くの場合 <iostream> と一緒に暗黙的に含まれます。
  2. 入力操作:

    • getline(cin, name):これは空白を含む全行を読み取ります。名前や文章を読み取る際に便利です。
    • cin >> age:これは age 変数に単一の値を読み取ります。>> 演算子は入力に使用されます。
  3. 出力操作:

    • cout << "Text" << variable << endl:これは基本的な出力操作です。<< 演算子は出力に使用されます。
    • endl:これは改行を追加し、出力バッファをフラッシュします。
  4. 出力のフォーマット:

    • cout << fixed << setprecision(2):これは浮動小数点の出力を常に 2 桁の小数表示に設定します。
    • setw(10):これは次の出力フィールドの幅を 10 文字に設定します。
    • setfill('.'):これはフィールド内の空きスペースに対して埋め文字を '.' に設定します。
    • leftright:これらは出力をそのフィールド内で整列させます。

プログラムをコンパイルして実行するには:

  1. WebIDE のターミナルパネルで、正しいディレクトリにいることを確認します。

  2. 次のコマンドでプログラムをコンパイルします。

    g++ -o io_operations io_operations.cpp
  3. 次のコマンドでプログラムを実行します。

    ./io_operations

プログラムを実行すると、名前、年齢、身長を入力するように促されます。この情報を入力した後、プログラムはフォーマットされた形式でそれを表示します。

注意すべき一般的な問題:

  • プログラムが名前の入力をスキップする場合は、入力バッファに改行文字が残っている可能性があります。これを修正するには、getline(cin, name); の前に cin.ignore(); を追加できます。
  • 年齢と身長に有効な数字を入力することを確認してください。数値以外の値を入力すると予期しない動作が起こる可能性があります。

このプログラムは、空白を含む文字列などの異なる種類の入力を処理する方法と、読みやすさを向上させるための出力のフォーマット方法を示しています。これらのスキルは、ユーザーにやさしく対話型の C++ プログラムを作成するために不可欠です。

まとめ

この実験では、WebIDE 環境を使って C++ プログラミングの基本概念を実践的に学びました。学んだことは以下の通りです。

  1. WebIDE で基本的な C++ プログラムを作成、コンパイル、実行する方法
  2. C++ における変数と異なるデータ型の使用方法
  3. if 文やループなどの制御構造を実装する方法
  4. コードを整理して再利用するための関数の作成と使用方法
  5. 基本的な入出力操作、出力のフォーマットを含む

これらの概念は C++ プログラミングの基礎を形成し、より高度なトピックに進む際に不可欠になります。覚えておいてください、練習こそがプログラミングの鍵です。これらのプログラムを修正したり、新しいプログラムを作成して学習を強化してみてください。実験して間違えることを恐れないでください - デバッグは身に付ける重要なスキルです。

C++ の学習を続けるにつれて、オブジェクト指向プログラミング、テンプレート、標準ライブラリの使用など、言語のより高度な機能を発見するでしょう。探求を続け、楽しくコーディングをしましょう!

WebIDE を使った C++ 開発は非常に便利で、特に初心者にとっては便利です。一貫した環境を提供し、多くのセットアップの問題を解消します。ただし、進歩するにつれて、より高度な機能や高速なコンパイル時間のために、Visual Studio、CLion、または Code::Blocks などのローカル開発環境や IDE を探求したい場合があります。