ホーム | ブログ | C++辞典 | サイトマップ | FAQ | 掲示板 | リンク集
メイン・メニュー
プログラミング
その他

Hello, World!

基礎も大事ですが、うんともすんとも言わないプログラムばかりを扱っていても眠くなってきますね。というわけで、今回は、せめて「うんすん」ぐらいは言わせて見ることにしましょう。といっても、日本語で「うんすん」という言わせるためには、色々と厄介な問題がありますので、まずはプログラミング学習での定番ともいえる "Hello, World!" を画面に出してみることにします。

まずは、次のソースコード(プログラムの原稿のことでしたね)をご覧ください。

#include <iostream>

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

結論からいうと、このソースコードは、「標準出力」に対して "Hello, World!" という「文字列」を出力し、改行するプログラムを表しています。何だかわからない専門用語が出てきましたね。まずは、何だか分からない「標準出力」と「文字列」について解説しましょう。

「標準出力」というのは、そのプログラムが動作する環境で、標準的に割り付けられた出力先のことで、普通は画面に対する出力のことを意味します。しかし、コマンドプロンプトからプログラムを実行する際に、少しいじってやると、出力先を画面ではなく、ファイルなど別のものに切り替えることができるというわけです。とりあえず、今の段階では、「標準出力」 = 画面への表示 だと考えても問題ありませんが、必ずしもそうではないことを、どこか記憶の片隅にでも置いておいてください。

次に「文字列」ですが、これは文字通り、「文字」の「列」のことです。上の例だと、"Hello, World!" というのは、'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!' という13個の「文字」の「列」というわけです。C++では、こうした「文字列」を表すときは、二重引用符( " )で囲みます。それに対して、1個の文字を表すときは、一重引用符( ' )で囲みます。仮に1文字しかなくても、二重引用符で囲まれていれば、それは文字列という扱いになります。

とりあえずは、上のソースコードを、hello.cpp というファイルに入力してみましょうか。そして、入力が終われば、コンパイルしてみてください。

C:\mingw> g++ hello.cpp

コンパイルは無事終わりましたか?エラーが出ているなら、もう一度注意深く入力しなおしてみてください。コンパイルができれば、次は実行です。

C:\mingw> a
Hello, World!

上のように、Hello, World! と表示されれば、正しくプログラムが動作しています。

それでは、ソースコードの内容を詳しく見ていきましょう。以前取り上げた「最も簡単なプログラム」と比べて、(空行は別として)増えたのは2行だけですね。つまり、#include <iostream> の行と、std::cout << "Hello, World!" << std::endl; の行です。まずは、順番に #include <iostream> から解説していきます。

<iostream>はヘッダといいます。ヘッダというのは、後に出てくる std::cout などをプログラムで使えるようにするために、いろいろなことが書かれた一種のソースコードだと考えてください。そして、#include は、そのヘッダをコンパイルの最初の段階で取り込むための指令です。取り込むというのは、要するに、上のソースコードの #include <iostream> の場所に、<iostream>の内容を挿入してしまうということです。

話だけでは分かりにくいので、実際に試してみましょう。コマンドプロンプトから次のように入力してみてください。

C:\mingw> g++ -E foo.cpp

すごいソースコードが目にも留まらぬ速さで流れていったのではないでしょうか。そして、最後に見覚えのあるソースコードが何行かだけ現れましたね。つまり、その目にも留まらぬ速さで流れていったソースコードがヘッダの正体です。このように、あらかじめヘッダという形でソースコードが用意されており、それを #include を使って取り込むだけで使えるようになっているわけです。あのすごい量を自分で入力しないといけないとしたら、大変ですよね。

ヘッダについてはこれぐらいにして、次は std::cout〜 の行について解説します。まず、std::cout と std::endl のところに、std:: というのが2回出てきますね。これは「名前空間」を指定するためのものです。「名前空間」というのは、すごく乱暴に言ってしまえば、ライブラリに付けられた名前のようなものです。ライブラリというのは、これまでにも何度か出てきましたが、関連性のある機能を集めたソフトウェアの部品のようなものでしたね。つまり、その関連性のある仲間に、「std」というグループ名を付けているわけです。

この入門講座では、Boost C++ Librariesを使いますが、Boost C++ Librariesに属している仲間には、「boost」という名前が付いています。「std」というのは、C++が標準でサポートしているライブラリ、「標準C++ライブラリ」に付けられた名前で、英語で標準を意味する standard の略です。ですから、標準C++ライブラリの機能を使うには、頭に std:: を付ける必要があります。同様に、Boost C++ Librariesの機能を使うには、頭に boost:: を付ける必要があります。

次に、<< という記号も2回現れていますね。これは「演算子」といいます。「演算子」というのは、普通、足し算のための + や、引き算のための - のようなものを意味しますが、今回出てきている演算子は、「標準出力」への出力を命令するために使っています。この行の先頭の std::cout が「標準出力」を表すもので、その後に続く、"Hello, World!" も std::endl も、この「標準出力」に出力する内容ということになります。

std::cout は「標準出力」を表していましたが、では std::endl は一体何なのでしょうか。endl は、end line の略で、そこで行が終わりであることを意味しています。厳密にいうと、"Hello, World!" を出力した段階では、その出力内容は、まだメモリの中に残ったままで、実際には画面に表示されません。そこで、std::endl を出力すると、メモリの中の内容が実際に画面に表示され、改行されるようになっています。

最後に、return 0; のところもそうなのですが、最後にセミコロンが付いていることを解説します。C++では、関数の内容は、文という単位で記述します。そして、文の終わりには、必ずセミコロン( ; )が必要です。これは、英語のピリオドや、日本語の句点のようなものです。セミコロンがないと、コンパイラは文の切れ目が分かりませんから、コンパイルできなかったり、期待した通りに動いてくれなかったりします。文の終わりには、必ずセミコロンを付けてください。

突然、難しい話になってしまいましたが、今回覚えておく必要があるのは、「標準出力」への出力を行うには、<iostream>というヘッダを取り込む必要があること。そして、std::cout << ○○ << std::endl; とすれば、「標準出力」に1行を出力できること。そして、文の終わりにはセミコロンをつけること。これだけです。後は、もう少し学習が進んでから、もう一度ここに戻ってきて見直してもよいでしょう。

プリンタ出力用画面
前のページ
プログラムの開始と終了
コンテンツのトップ 次のページ
キーボードからの入力


 ホーム | プロフィール | メール | ログイン | 管理
Copyright © 2005-2009 by TAKAGI Nobuhisa