33.1. C++ プログラムの作成と実行
最も簡単な例として、”Hello, world!” と表示するプログラムを作成・実行してみましょう。
C++ でのプログラミングでは、最初に C++ 言語の規則にしたがって目的の命令を書いたテキストファイルを作成します。しかし、C++ ではこのテキストファイルのままでは実行できません。予めコンピュータが理解できる形式に変換する必要があるのです。この作業をコンパイルといい、コンパイルを行ってくれるプログラムをコンパイラといいます。今回は、iMac 端末で利用できる g++ というコンパイラを使います。したがって、
- C++ 言語によるテキストファイル(ソースファイル)を作成
- g++ でソースファイルを実行可能ファイル(バイナリファイル)に変換
- 実行可能ファイルを実行
という手順になります。Javaなどコンパイルを要する言語と共通の手順です。
簡単な C++ プログラムの作成 #
以下の内容のテキストファイルを作成し、”hello.cc” というファイル名で保存してください。これがソースファイルになります。テキストファイルを作るには、テキストエディタを使います。テキストエディタの使い方は 31. テキストエディタ を参照してください。
// hello.cc
#include <iostream>
using namespace std;
int main() {
cout << "Hello, world!" << endl;
}
“hello.cc” というファイル名の “.cc” という部分は、C++ のソースファイルであることを示します。その前の “hello” の部分は自由に付けることができますが、できるだけ半角英数字を用いるようにしましょう。
このプログラムの内容については、後ほど解説します。
C++ プログラムの実行 #
g++ というコンパイラを使って、ソースファイルをバイナリファイルに変換しましょう。
問題がなければ、何もメッセージが表示されないままプログラムが終了します。(何かメッセージが表示されたときはソースファイルに誤りがないか確認しましょう。)正しくコンパイルできていれば、ソースファイルと同じディレクトリに “a.out” というバイナリファイルができているはずなので、これを次のように実行します。
Hello, world!
プログラムの解説 #
改めて、先ほどのソースファイルを見てみましょう。
// hello.cc
#include <iostream>
using namespace std;
int main() {
cout << "Hello, world!" << endl;
}
このプログラムは、以下のように構成されています。
- 最初の行は、“//” で始まっています。このような行は、コメントして扱われ、プログラムの動作に影響を与えない部分です。つまり、この行はなくても問題ありません。
- “#include
” は、C++ の入出力(キーボード入力や画面への表示)機能のまとまりである iostream ライブラリを使うことの宣言です。C++ には標準で様々な機能(標準ライブラリ)が用意されていますが、どの機能を使うかはプログラムを書く人が選び、プログラムの最初に指定します。iostream ライブラリはこの標準ライブラリのうちの 1 つです。このプログラムは “Hello, world!” を表示することが目的ですから、この宣言で入出力機能を読み込みます。 - “using namespace std;” は、名前空間の指定です。名前空間についての詳しい解説は省略しますが、先ほど説明した iostream などの標準ライブラリはすべて std 名前空間で書かれているので、この指定をします。
- “int main()” は、プログラムの本体です。すべての C++ プログラムには、ただ一つの “int main()” が含まれなければなりません。直後の “{” の後から、実際の処理を書きます。
- “cout « “Hello, world!” « endl;” が、このプログラムの主である「 ”Hello, world!”を表示する」部分です。cout とは、iostream ライブラリに用意された出力機能です。直後に “«” を並べ、さらに文字列をダブルクォーテーションで囲んで続けることで、画面に文字列を出力できます。“«” は数珠つなぎに連ねることができ、さらに出力を続けることができます。“endl” は改行を表します。
- 最後の “}” は “int main()” の直後の “{” と対になり、プログラムの本体の終わりを表します。
C++では、ほとんどの文の最後にセミコロン “;” を付ける決まりがあります。ただし、“#” から始まる行やコメント行、プログラム本体 “int main() { … }” などには付けません。