[前へ]   [目次へ]   [次へ]

Hello World(C/C++)


プログラム講座といえばお約束の「Hello World」プログラムです。

●Hello World(C/C++バージョン)
<  1>
<  2>
<  3>
<  4>
<  5>
<  6>
<  7>
#include <stdio.h>

int main(void)
{
   printf(
"Hello World\n");
   
return 0;

●実行結果
Hello World

それでは一行ずつ説明します。

1行目:#include <stdio.h>
   この行は3つの要素からなります。
   #include と <> と stdio.h です。

   
   #include はプリプロセス命令というもので、この部分にファイルを読み込む命令です。

   続く <> は stdio.h をはさんでいます。
   
   この <> は #include でしか使えず、標準ライブラリのヘッダーファイルを読み込むために使われます。

   他に "" でも囲むことができ、こちらはまずソースのあるフォルダを調べて、見つからなければ
   <> を指定した場合と同義になります。

   stdio.h は読み込むファイル名です。
   必要なファイルはこうして読み込んでいきます。
   
   stdio.h を開いても今はまだ意味が分からないでしょうが、
   5行目の printf 関数他を使うために必要、とだけ今は覚えておいてください。
   この stdio.h ファイルにはC言語で絶対に必要になる関数群が宣言されています。
   このファイルを読み込まずには意味のあるプログラムは作れません。
   今後も定番として読み込むことになります。(笑)

2行目:
   ・・・何もないですね(笑)
   C言語ではこういう行はプログラムとして特に意味を持ちません。
   人間が読みやすくするために使う行です。
   
3行目:int main(void)
   関数の定義です。
   次の行の{の先からが関数の中身です。
   これの説明はそれだけで5〜10ページくらい書けてしまうような気がします。
   
   この説明は関数定義に関する項でやる予定なので、
   とりあえずしばらくはこれをコピーしておいてください。
   
   で、真ん中に main と書いてある通り、この関数はプログラムのエントリポイントという重大な意味を持っています。
   この関数からプログラムが始まり、この関数が終わると終了します。
   
   ちなみにこのエントリポイントとしての意味を持つ関数名は他にもいくつかありますが、
   今はまだ気にしなくていいです。
   
4行目:{
   一文字です。(笑)
   これは一つ前の行と繋がっています。
   
   { は ブロック の始まりを意味します。
   この場合は関数ブロック(関数の始まり)を表します。

   C言語はあまり改行とかスペースにこだわらない(一部除く)ので、
   2行になってても文句いいません。
   だから別に3行目に int main(void){
   と書いてこの行消しても問題なしです。
   
   ただ、関数の始まりの { は改行して1文字目に書くことが多いようです。

5行目:printf("Hello World\n");
   この行から実行内容です。
   ここまでのは全部前準備です。
   
   さて、またこの行も分解しましょう(笑)
   この行からは実際に解釈する順番で分解していきます。
   
   まず注目は最後の ; です。
   この ; は行(正しくはstatement)の終了を意味します。
   C言語は上述した通り、改行などにあまりこだわらないので、この ; で終了しないと次の行とつながってしまいます。
   一行書いたら忘れずに付けましょう。
   
   さて、この ; のおかげで分析する行の範囲が決まりました。

   printf("Hello World\n")
   これが(C言語にとっての)1行です。
   この先に突っ込むとさらに難しくなってしまうので簡略化しますが、
   これでprintf 関数の呼び出しを意味します。

   printf 関数は画面に文字を出力する関数です。
   出力(表示)される文字は () の中の "" で囲まれた中身です。
   
   先ほどの実行結果にあった「Hello World」はこの部分に書いてあるものです。
   ではその後ろにあった \n はどこにいったのかというと・・・
   実は \ マークは特別な意味を持っていて、次の一文字と一緒に2文字で解釈されます。
   そして \n は「改行」を表します。

   この行を以下のようにして試せば違いが分かります。
   
●例1:\n付きの文字列を3回表示する
   printf("1回目\n");
   printf("2回目\n");
   printf("3回目\n");

●実行結果
1回目
2回目
3回目

●例2:\nなしの文字列を3回表示する
   printf("1回目");
   printf("2回目");
   printf("3回目");

●実行結果
1回目2回目3回目
こんな感じです。

6行目:return 0;
   return
 ってのは関数の実行を終了して呼び出し元に戻ります。
   5行目でやっと始まったのにもう終わりです。(笑)
   
   続く0はこの関数を呼び出した側に渡されますが、今はまだ0をつけておくだけでいいです。
   
7行目:}
   6行目の return で main 関数は終了しました。
   この後ろを実行するチャンスはこの場合はもうないので main 関数の中身も終わりです。
   
   この } は { と対になっていてブロックの終了を意味します。
   この場合は関数ブロックの終了を意味します。
   
   ちなみに { と } は必ず同じ数だけ存在しなければいけません。
   どっちかが多かったりするとエラーになってしまいます。
   
   
   これでとりあえずソースの最後まで来ました。
   いきなりいろんなことが出てきて混乱してしまったかもしれませんが、
   次回からはじっくりと簡単なところからやっていきたいと思いますので、
   これが分からなくても大丈夫です。(笑)
   今回のは printf 関数以外の部分はいわゆる雛形、定型文です。
   コピーしてるだけで使えるわけです。
   
   それで終わりというのも味気ないような気がして解説書いてみたら長くなってしまいました(笑)
   その上かなり複雑な条項も含んでしまった気が・・・余計ややこしくなってたらすいません・・・
   
   といった感じで次回に続きます。

[前へ]   [目次へ]   [次へ]

プログラミング講座 総合目次

最終更新 2008/10/17