初めてのC++プログラムを作成する

C++Beginner
オンラインで実践に進む

はじめに

この実験では、初めてのC++プログラムを作成する方法を学びます。まず、Ubuntu 22.04環境でGCC (GNU Compiler Collection) コンパイラをインストールし、必要な環境変数を設定します。次に、新しいC++ソースファイルを作成して基本的なプログラム構造を記述し、cout ステートメントを使って「Hello World」というメッセージを表示させます。さらに、プログラムのコンパイルと実行方法、単一行および複数行のコメントの追加方法、endl\n を使った改行方法、そしてセミコロンの欠落といった一般的な構文エラーの修正方法についても学びます。

Ubuntu 22.04へのGCCコンパイラのインストールと環境変数の設定

このステップでは、Ubuntu 22.04でC++用のGCC (GNU Compiler Collection) コンパイラをインストールし、必要な環境変数を設定する方法を学びます。GCCはC++プログラムをコンパイルして実行するために不可欠なツールです。

まず、WebIDEのターミナルを開きましょう。画面下部のターミナルアイコンをクリックするか、キーボードショートカット(通常は Ctrl+`)を使用します。

次に、パッケージリストを更新して、利用可能なパッケージの最新情報を取得します。

sudo apt update

出力例:

Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu jammy InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-backports InRelease
Hit:4 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
157 packages can be upgraded. Run 'apt list --upgradable' to see them.

ターミナルの更新コマンドの出力

続いて、GCCコンパイラと関連する開発ツールをインストールします。

sudo apt install -y build-essential

出力例:

Reading package lists...
Building dependency tree...
Reading state information...
build-essential is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 22 not upgraded.

インストールを確認し、GCCのバージョンをチェックするには以下のコマンドを実行します。

g++ --version

出力例:

g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

GCCコンパイラは通常、システムのPATHに自動的に含まれるため、追加の設定は不要です。

.cpp拡張子を持つ新しいC++ソースファイルの作成

このステップでは、.cpp 拡張子を持つ新しいC++ソースファイルを作成する方法を学びます。C++では、ソースファイルに .cpp 拡張子を付けることで、そのファイルにC++コードが含まれていることを示します。WebIDEのファイルエクスプローラーとテキストエディタを使用して、最初のC++ソースファイルを作成しましょう。

まず、ターミナルで ~/project ディレクトリに移動します。

cd ~/project

次に、WebIDEのファイルエクスプローラーを開きます。サイドバーにファイルやフォルダのリストが表示されます。「+」記号や「New File」オプションなど、新しいファイルを作成するためのアイコンを探してください。

ファイルエクスプローラー内で右クリックし、「New File」を選択します。ファイル名を hello.cpp と入力します。.cpp 拡張子は、コンパイラや開発ツールに対して、これがC++ソースファイルであることを伝えるために非常に重要です。

ターミナルで作成する場合の例(参考):

touch hello.cpp

作成した hello.cpp をクリックして、WebIDEのテキストエディタで開きます。空のファイルが表示され、最初のC++コードを書く準備が整いました。

.cpp 拡張子が重要な理由は以下の通りです。

  • ファイルがC++ソースコードであることを識別する
  • 開発ツールやコンパイラがファイルの種類を認識するのを助ける
  • .c (C言語)、.java (Java)、.py (Python) などの他のプログラミング言語のファイルと区別する

これで hello.cpp ファイルにC++コードを書く準備ができました。次のステップでは、このファイルに基本的なC++プログラムを記述する方法を学びます。

int main() 関数による基本的なプログラム構造の記述

このステップでは、C++プログラムの基本的な構造、特に main() 関数について学びます。すべてのC++プログラムには、プログラムの実行開始点となる main() 関数が必要です。

前のステップで作成した hello.cpp をWebIDEで開き、以下の基本的なプログラム構造を追加します。

#include <iostream>

int main() {
    // ここにコードを記述します
    return 0;
}

注意: 学習効果を高めるため、コードは手入力することをお勧めします。C++の構文において { }(波括弧)や ;(セミコロン)は不可欠ですので、注意してください。スペースやインデントも忘れないようにしましょう。これらが正しくないと、ステップの検証に失敗する可能性があります。

この基本構造を解説します。

  1. #include <iostream>: 入出力ストリームライブラリを読み込むプリプロセッサ指令です。これにより、画面への出力などの入出力操作が可能になります。
  2. int main(): メイン関数の宣言です。
    • int は、この関数が整数値を返すことを指定しています。
    • main() はC++プログラムの標準的な開始点です。
    • 空の括弧 () は、この関数が引数を取らないことを示しています。
  3. 波括弧 { }: 関数本体を定義し、ここにコードを記述します。
  4. return 0;: プログラムが正常に終了したことを示します。
    • 0を返すことで、オペレーティングシステムに対してプログラムがエラーなく実行されたことを伝えます。
    • これはC++プログラムにおける標準的な慣習です。

WebIDEは入力中に自動的に変更を保存します。または、エディタの保存オプションを使用して手動で保存することもできます。

WebIDEの詳細については、WebIDEガイドを参照してください。

覚えておくべき重要なポイント:

  • すべてのC++プログラムには main() 関数が必要である
  • main() 関数はプログラムの実行が開始される場所である
  • return 0; ステートメントは、通常、プログラムの正常終了を示すために使用される

main() 関数は、旅の出発点のようなものだと考えてください。ドライブが特定の場所から始まるように、C++プログラムも main() 関数から実行が始まります。

cout を使用した Hello World メッセージの表示

このステップでは、cout を使用して画面に「Hello, World!」というメッセージを表示する方法を学びます。cout はC++標準入出力ライブラリの一部であり、出力の表示に使用されます。

WebIDEで hello.cpp を開き、main() 関数を以下のように修正します。

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

新しく追加したコード行を解説します。

  • std::cout: 標準出力ストリームオブジェクトです。
    • std:: は標準名前空間を使用していることを示します。
    • cout は「console output(コンソール出力)」の略です。
  • <<: ストリーム挿入演算子で、データを出力ストリームに送るために使用されます。
  • "Hello, World!": 表示したいテキストメッセージです。
  • std::endl: 改行を追加し、出力バッファをフラッシュします。
    • メッセージが即座に表示されることを保証します。
    • カーソルを次の行に移動させます。

ファイルを保存する際は、上記に示した構造全体が含まれていることを確認してください。

cout に関する重要なポイント:

  • テキスト、数値、その他のデータ型を画面に表示するために使用される
  • << 演算子を連結して、複数の項目を一度に表示できる
  • std::endl は表示後に改行を作成するために使用される

cout は、メッセージを世界に伝えるメガホンのようなものだと考えてください。<< 演算子はメッセージをセットする役割を果たし、std::endl は全員に明確に聞こえるようにする役割を果たします。

g++ hello.cpp -o hello コマンドによるプログラムのコンパイル

このステップでは、g++ コンパイラを使用してC++プログラムをコンパイルする方法を学びます。コンパイルとは、人間が読めるC++ソースコードを、コンピュータが実行可能なプログラムに変換するプロセスです。

WebIDEのターミナルを開きます。~/project ディレクトリにいることを確認してください。

cd ~/project

次に、g++ コマンドを使用して、先ほど作成した hello.cpp ファイルをコンパイルします。

g++ hello.cpp -o hello

このコマンドを解説します。

  • g++: GNU C++コンパイラです。
  • hello.cpp: コンパイルしたいソースファイルです。
  • -o hello: 出力される実行ファイル名を指定します。
    • -o は出力ファイル名を指定するためのオプションです。
    • hello は作成される実行ファイルの名前です。

出力例:

## 出力がない場合は、コンパイル成功を意味します

コンパイルが成功すれば、エラーメッセージは表示されません。コンパイラは同じディレクトリに hello という名前の実行ファイルを作成します。

C++コードをコンパイルするターミナル

コンパイルを確認するには、ディレクトリ内のファイルを確認します。

ls

出力例:

hello  hello.cpp

これで2つのファイルが表示されるはずです。

  • hello.cpp: ソースコードファイル
  • hello: コンパイルされた実行プログラム

コンパイルに関する重要な注意点:

  • コードにエラーがある場合、g++ はエラーメッセージを表示します
  • プログラムを実行する前に、必ずコンパイルエラーを確認して修正してください
  • -o オプションは省略可能ですが、実行ファイルに意味のある名前を付けるのが良い習慣です

コンパイルは、本をある言語から別の言語へ翻訳することに似ています。g++ コンパイラは、人間が読めるC++コードを、コンピュータが理解して実行できる言語に翻訳します。

./hello コマンドによるプログラムの実行

このステップでは、コンパイルした実行プログラムを実行する方法を学びます。C++プログラムをコンパイルした後、./ コマンドに続いて実行ファイル名を指定することで実行できます。

~/project ディレクトリにいることを確認してください。

cd ~/project

前のステップでコンパイルしたプログラムを実行するには、以下のコマンドを使用します。

./hello

./ はシステムに対して現在のディレクトリ内にある実行ファイルを探すように指示し、hello は作成した実行ファイルの名前です。

出力例:

Hello, World!

何が起きているのかを解説します。

  • ./ は「現在のディレクトリ内」を意味します。
  • プログラムはコンパイルされた実行ファイル内の命令を読み取ります。
  • C++ソースコードで定義したメッセージを表示します。
  • 表示後、プログラムは終了します。

実行に関する重要な注意点:

  • 現在のディレクトリにあるプログラムを実行する際は、必ず実行ファイル名の前に ./ を付けてください。
  • プログラムには実行権限が必要です(g++ が自動的に付与します)。
  • 出力が表示されない場合は、プログラムが正しくコンパイルされているか再確認してください。

プログラムの実行は、車を始動させることに似ています。コンパイルは車の準備であり、プログラムの実行はキーを回して運転することです。

プログラムを複数回実行したい場合は、単に ./hello コマンドを繰り返すだけです。

単一行および複数行コメントの追加

このステップでは、C++コードにコメントを追加する方法を学びます。コメントはコード内のメモであり、コードが何をするかを説明します。コンパイラには無視されるため、コードの可読性を高めるのに役立ちます。

WebIDEで hello.cpp を開き、さまざまな種類のコメントを含めるように修正します。

#include <iostream>

// これは単一行コメントです
// プログラムの動作を説明します

/*
これは複数行コメントです
説明を複数行にわたって書くことができます
各行に // を追加する心配はありません
*/
int main() {
    // 挨拶メッセージを表示
    std::cout << "Hello, World!" << std::endl;  // 出力を説明するインラインコメント

    /*
    必要に応じてコードの途中で
    複数行コメントを使用することもできます
    */
    return 0;  // オペレーティングシステムに成功ステータスを返す
}

コメントの種類を解説します。

  1. 単一行コメント:

    • // で始まります。
    • 行の終わりまで続きます。
    • 短い説明に最適です。
  2. 複数行コメント:

    • /* で始まり、*/ で終わります。
    • 複数行にまたがることができます。
    • 長い説明に便利です。
  3. インラインコメント:

    • コード行の末尾に追加されます。
    • その特定のコード行を説明します。

プログラムをコンパイルして実行し、正しく動作することを確認します。

g++ hello.cpp -o hello
./hello

出力例:

Hello, World!

コメントに関する重要なポイント:

  • コメントはコードを理解しやすくします。
  • 他のプログラマ(および自分自身)がコードの目的を理解する助けになります。
  • コンパイラはコメントを完全に無視します。
  • 「何」が行われているかではなく、「なぜ」そのように書かれているかを説明するためにコメントを使用してください。

コメントは、本の中の付箋のようなものだと考えてください。実際のテキストを変更することなく、追加のコンテキストや説明を提供します。

endl と \n を使用した改行

このステップでは、C++の出力で改行を作成する2つの方法、std::endl と改行文字 \n について学びます。どちらの方法も、出力を複数行にわたってフォーマットするのに役立ちます。

WebIDEで hello.cpp を開き、改行をデモンストレーションするように修正します。

#include <iostream>

int main() {
    // std::endl を使用した改行
    std::cout << "Hello, World!" << std::endl;
    std::cout << "Welcome to C++ Programming!" << std::endl;

    // \n を使用した改行
    std::cout << "Using newline character:\n";
    std::cout << "Line 1\n";
    std::cout << "Line 2\n";

    // 両方の方法を混ぜる
    std::cout << "Mixing methods: " << std::endl;
    std::cout << "Line with endl\n";
    std::cout << "Line with newline character" << std::endl;

    return 0;
}

👆 LabExのヒント: コードブロックの右下にある「Explain Code」をクリックすると、Labby AIとチャットしてコードの解説を受けることができます。

改行方法を解説します。

  1. std::endl:

    • 改行を追加します。
    • 出力バッファをフラッシュします(即時の表示を保証します)。
    • <iostream> ライブラリの一部です。
    • std::cout と共に使用されます。
  2. \n (改行文字):

    • 改行を作成するシンプルな方法です。
    • std::endl よりも軽量です。
    • 多くのプログラミング環境で動作します。
    • 出力バッファをフラッシュしません。

プログラムをコンパイルして実行します。

g++ hello.cpp -o hello
./hello

出力例:

Hello, World!
Welcome to C++ Programming!
Using newline character:
Line 1
Line 2
Mixing methods:
Line with endl
Line with newline character

重要なポイント:

  • std::endl\n はどちらも改行を作成します。
  • std::endl は包括的ですが、わずかに低速です。
  • \n は高速で軽量です。
  • これらの方法を組み合わせて使用できます。

改行は、本の中の段落分けのようなものだと考えてください。出力を整理し、構造化するのに役立ちます。

セミコロンの欠落などの一般的な構文エラーの修正

このステップでは、C++における一般的な構文エラー、特にセミコロンの欠落について学びます。セミコロンはステートメントの終わりを示すため、C++では非常に重要です。

WebIDEで syntax_errors.cpp という新しいファイルを作成します。

cd ~/project
touch syntax_errors.cpp
#include <iostream>

int main() {
    // 一般的な構文エラー: セミコロンの欠落
    std::cout << "This line has an error"  // ここにセミコロンがありません!
    std::cout << "This line will not compile" << std::endl;

    // セミコロンがある正しいバージョン
    std::cout << "This line is correct" << std::endl;
    std::cout << "All statements end with a semicolon" << std::endl;

    return 0;  // ここにもセミコロンを忘れないでください!
}

プログラムをコンパイルしてみます。

g++ syntax_errors.cpp -o syntax_errors

コンパイルエラーの例:

syntax_errors.cpp: In function ‘int main()’:
syntax_errors.cpp:5:42: error: expected ‘;’ before ‘std’
    5 |     std::cout << "This line has an error"  // Missing semicolon here!
      |                                          ^
      |                                          ;
    6 |     std::cout << "This line will not compile" << std::endl;
      |     ~~~

セミコロンに関する重要なポイント:

  • C++のすべてのステートメントはセミコロン ; で終わらなければなりません。
  • セミコロンは、ある命令がどこで終わり、次の命令がどこで始まるかをコンパイラに伝えます。
  • セミコロンの欠落はコンパイルエラーを引き起こします。
  • セミコロンを忘れやすい場所:
    • cout ステートメントの後
    • return ステートメントの後
    • 変数宣言の最後

エラーを修正しましょう。

  1. 不足しているセミコロンを追加します。
  2. 各ステートメントが ; で終わっていることを確認します。

修正したバージョンをコンパイルします。

g++ syntax_errors.cpp -o syntax_errors
./syntax_errors

成功すれば、エラーメッセージは表示されません。

セミコロンは、文章の句点(。)のようなものだと考えてください。コード内の完全な思考の終わりを示します。

まとめ

この実験では、Ubuntu 22.04でC++用のGCC (GNU Compiler Collection) コンパイラをインストールし、必要な環境変数を設定する方法を学びました。新しいC++ソースファイルを作成し、int main() 関数を含む基本的なプログラム構造を記述し、cout を使用して「Hello World」メッセージを表示させました。その後、g++ コマンドを使用してプログラムをコンパイルし、実行しました。さらに、単一行および複数行のコメントの追加方法、endl\n を使用した改行方法、そしてセミコロンの欠落といった一般的な構文エラーの修正方法についても学びました。

これらのステップを完了したことで、最初のC++プログラムを作成・実行するための強固な基礎が築かれ、Ubuntu 22.04でのC++開発に必要な基本的なツールと概念を理解できたはずです。