Hello Worldプログラムを解剖する

前回作った、「Hello, World」プログラムとC言語の話を今回はしていきます。

#include<stdio.h>

int main(void)
{
    printf("Hello, world\n");
    return 0;
}

おまじないではない!1行目

1行目は「ヘッダ」と言います。
ヘッダにはプログラム中に使用する「標準ライブラリ関数」というものを呼び出す記述が示してあります。
標準(Standard)入出力( Input/Output)を略して「stdio」となっています。「.h」はヘッダファイルの拡張子となっています。

#include<stdio.h>

標準入出力(stdio.h)は、モニターへの文字の表示やキーボード入力などをする関数を定義している説明書みたいなものです。
今回使っている「printf関数」も「stdio.h」に定義された関数です。

1行目のこの記述の説明を「おまじない」として後回しにする教科書もありますが、疑問だけが残りここでリタイアしてはいけないので当サイトとしては、疑問が残らない様説明しました。
しょっぱなからこんなに覚えられないという方は、いずれ気にしていただければ大丈夫です!

3~7行目

2行目は!?と思った方、2行目の改行に意味はありません。C言語はフリーフォーマット(Wikipedia):体裁自由なので、空白や改行は意味を持ちません。
改行や空白を用いるのは、プログラマーが読みやすくするためです。極端ですが以下の様に記述しても問題なくコンパイルできます。
ただし、ヘッダは改行する必要があります。

#include <stdio.h>
int main(void){printf("Hello, world\n");return 0;}

フリーフォーマットと言えども、単語が区別できないとコンパイルが出来ません。
intとmain、returnと0などを区別するために空白を使います。
例えるなら、「Apple pen」を「Applepen」と書いてしまうと、どこで単語が区切れてるのか分からなくなってしまうのと同じです。

ここから3行目の説明に入ります。

int main(void)

この行はmain関数を定義しています。
そもそも関数とは以下に示す様な形式をしています。

関数の書式

型名 関数名(引数) {処理内容} 

型名:int型(整数型)を始めに覚えてください.

関数名:「半角英字,半角数字,半角アンダーバー(_)」かつ「1文字目は数字以外」で名前がダブらない限り自由に付けることが出来ます.
引用したライブラリに定義されている関数名も使えません(printfなど).

引数:関数には値を受け取って計算する機能があります.その受け取る値の種類(型)を記載します.値を渡さない場合は「空白かvoid」と記載します.

処理内容:関数にさせる処理内容を記載します.記載した順に実行されます.

関数一般のカタチが分かれば、main関数の構造も見えてくるでしょう。

int main(void)
{
    printf("Hello, world\n");
    return 0;
}

型数:int, 関数名:main, 引数:無し, 処理内容:{}内の記述
これがHello worldプログラムのmain関数の大まかな構造になります。

つぎに、main関数の処理内容({}の中身)を見ていきます。

printf関数の書式:文字列を表示する

printf(“moji”);

printf関数は文字列を表示したいときに使います.
セミコロン(;)を忘れないように気を付けよう!
標準入出力に定義される.

ここまでで分かったように、C言語ではmain関数の中にprintf関数があります
標準入出力で定義されたprintf関数をmain関数で呼び出して使っているにすぎません。
この様に、C言語のプログラムは関数が集まってできています。

ここで”\n”について説明したいのですが詳細はエスケープシーケンスのページをご覧ください。
”\n”は改行させるための記号という認識で大丈夫です。
“\”を”¥”と記載しますが同じ文字を示しています。

return文の書式:関数を終了させる

return 返り値;

return文が実行されるとプログラムは終了します.
return文以降に、処理内容が記載されていたとしても強制的に関数は終了します.

返り値:何も値を返す必要が無いときは0とします.

今回は、Hello worldプログラムを通してC言語の書き方、細かい気になるポイントを学んでもらいました。
次回はprintf関数の更なる使い方を確認してみましょう。

最後にHello world関数をトークン(単語)毎に改行したHello worldプログラムを載せておきます。
こんな記述方法でもコンパイルできるんです。
また、#includeはカッコ(<>)の代わりにダブルクォーテーション(””)でもヘッダファイルを指定することが出来ます(あまり、ほとんど使わないですが…)。

#include"stdio.h"
int
main
(
void
)
{
printf
(
"Hello, world\n"
)
;
return
0
;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です