初心者がC言語を学習する最初の一歩は、C言語で入門用プログラムを書いてみることです。入門用プログラムとしては「hello, world」と呼ばれるものが有名です。これは、画面に「hello, world」と表示するだけのプログラムです。
以下は、C入門用プログラム「hello, world」のソースコードです。
C入門のページです。C言語初心者のための入門用プログラムを2つ解説しています。ソースコードとその実行例、プログラムの解説があります。
初心者がC言語を学習する最初の一歩は、C言語で入門用プログラムを書いてみることです。入門用プログラムとしては「hello, world」と呼ばれるものが有名です。これは、画面に「hello, world」と表示するだけのプログラムです。
以下は、C入門用プログラム「hello, world」のソースコードです。
#include <stdio.h>
main()
{
printf("hello, world¥n");
}
このC言語のプログラムをテキストエディタ(メモ帳でもかまいません)を使って打ち込みましょう。初心者のための入門用プログラムなのでコピー&ペーストせずに、1文字ずつ打ち込んで見る方がよいでしょう。
打ち込み終わったら、ファイル名を「hello.c」として保存します。保存ができたら、この入門用プログラムをコンパイル、実行してみましょう。
以下はウィンドウズ上でMinGWを使った「hello.c」のコンパイル、実行の例です。コマンドプロンプト上で「gcc hello.c」と入力することによりhello.cをコンパイルして「a.exe」と入力することにより、オブジェクトを実行しています。その結果「hello, world」と表示されています。
C:¥c>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は xxxx-xxxx です
C:¥c のディレクトリ
2009/09/22 14:52 <DIR> .
2009/09/22 14:52 <DIR> ..
2009/09/22 14:57 63 hello.c
1 個のファイル 63 バイト
2 個のディレクトリ xxxx バイトの空き領域
C:¥c>gcc hello.c
C:¥c>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は xxxx-xxxx です
C:¥c のディレクトリ
2009/09/22 14:52 <DIR> .
2009/09/22 14:52 <DIR> ..
2009/09/22 14:57 63 hello.c
2009/09/22 15:01 15,883 a.exe
2 個のファイル 15,946 バイト
2 個のディレクトリ xxxx バイトの空き領域
C:¥c>a.exe
hello, world
C:¥c>
このC言語ソース・プログラムを解説します。
1行目の
#include <stdio.h>
は、標準ライブラリについての情報を取り込む文です。
次の
main()
ですが、これでmainという名前の関数を定義しています。C言語のプログラムはまずmainという関数から実行開始します。
次の
{
は、関数の開始を示しています。C言語の関数のプログラム文は{}で括られます。
次の
printf("hello, world¥n");
ですが、printf()は文字列を表示する関数で、これを実行することにより「hello, world」を表示させています。「¥n」は改行コードなので画面上には表示されていませんが、出力はされています。「¥n」がないと次に文字列を出力する際に同じ行に出力されます。「;」は、C言語の1つのプログラム文の終わりを示しています。
これが、入門用プログラム「hello, world」です。プログラムは正常に実行できましたか?コンパイルが通らない場合は、プログラムの打ち間違いと思われますので、1文字も間違いがないように見直してみましょう。プログラムは1文字でも間違えるとコンパイルが通らなかったり、意図したとおりに動かなかったりしますので、特に初心者の方は気をつけてくださいね。
上記はMinGWの例ですが、マイクロソフト社のVisual C++を使いたいという方もいらっしゃると思いますので、Visual C++ 2010 Expressでの例をこちらに作成しました。
初心者向けのC言語入門用プログラムの2つめとして階乗を計算するプログラムを紹介します。自然数nの階乗は、1からnまでの自然数を掛け合わせたものです。つまり「n×(n-1)×…3×2×1」です。また、0の階乗は1です。
以下は、C入門用プログラム2「factorial.c」のソースコードです。
#include <stdio.h>
#include <stdlib.h>
int factorial(int num)
{
int f, n;
if (num == 0) {
return 1;
}
n = num - 1;
for (f = num; n >= 1; n--) {
f = f * n;
}
return f;
}
int main(int argc, const char *argv[])
{
int n, f;
if (argc != 2) {
return 0;
}
n = atoi(argv[1]);
f = factorial(n);
printf("%d¥n", f);
return 0;
}
以下はウィンドウズ上でMinGWを使った「factorial.c」のコンパイル、実行の例です。コマンドプロンプト上で「gcc factorial.c」と入力することによりfactorial.cをコンパイルして「a.exe」と階乗計算したい数を入力することにより、オブジェクトを実行しています。その結果、計算結果が表示されています。【注意】階乗計算したい数として12を超える値を入力しないでください。
C:¥c>gcc factorial.c
C:¥c>a.exe 0
1
C:¥c>a.exe 1
1
C:¥c>a.exe 5
120
C:¥c>a.exe 10
3628800
C:¥c>
このC言語ソース・プログラムを解説します。
1〜2行目の
#include <stdio.h>
#include <stdlib.h>
は、標準ライブラリについての情報を取り込む文です。プログラムの中でprintf関数を使っているのでstdio.hが、atoi関数を使っているのでstdlib.hが必要です。
次の
int factorial(int num)
は、factorial関数の定義です。引数として階乗計算したい数numを取ります。この関数の中で階乗計算を行います。intは関数や変数の型を意味しています。
int f, n;
これはローカル変数(この関数内で有効な変数)の宣言です。fという変数とnという変数を使用します。
if (num == 0) {
return 1;
}
もし階乗計算したい数numが0ならば、1を返します(0の階乗は1だからです)。この文がif文と呼ばれるもので()内の条件が成立したら{}の中を実行します。「==」という演算子で同値かどうかを判定します。
n = num - 1;
変数nに変数numから1を引いた数をセットします。このように書くと変数に値を代入することができます。代入は=で、比較は==なので間違えないようにしましょう。
for (f = num; n >= 1; n--) {
f = f * n;
}
これがfor文と呼ばれるものです。for文の()の中は;で3つに分けられます。左側のf = numと書かれている部分ですが、この部分はfor文が実行される最初の時に1回だけ実行されます。ここでは変数fをnumで初期化しています。
真ん中のn >= 1の部分は、条件を表す部分です。この条件が満たされている間は、for文の{}内のプログラムが繰り返し実行されます。今の場合、nが1以上ならば繰り返し実行されます。
右端のn--の部分は、{}内のプログラムが1回実行されるたびに1回実行されます。n--はnを1だけマイナスするという意味です。n = n - 1と同じです。プログラムが繰り返し実行されるたびにnが1ずつ減っていくことになります。
f = f * n;で1ずつ減っていく数を掛け合わせていくことにより階乗を計算しています。
return f;
階乗計算した結果をこの関数の戻り値として返します。
続いてmain関数です。
int main(int argc, const char *argv[])
main関数の宣言です。argcにはコマンドラインから入力された文字列の数、今の場合はa.exeと階乗計算したい数の2つなので、2が入ってきます。*argv[]にはその2つの文字列(a.exeと階乗計算したい数)が入ってきます。
int n, f;
ローカル変数(この関数内で有効な変数)の宣言です。nという変数とfという変数を使用します。
if (argc != 2) {
return 0;
}
コマンドラインから入力された文字列の数のチェックです。今の場合は、a.exeと階乗計算したい数の2のはずなので、2以外は処理しないようにreturn 0;ではじいています。
n = atoi(argv[1]);
atoi()は文字列を数値に変える標準ライブラリの関数です。argv[1]に階乗計算したい数の文字列が入ってきますので、これを数値に変換してnに代入します。
f = factorial(n);
階乗計算したい数nを引数にしてfactorial関数をコールします。先に説明したfactorial関数の処理が行われ、戻り値として階乗計算した値が返されますので、それをfに代入します。
printf("%d¥n", f);
printf標準ライブラリ関数を使って階乗計算結果を表示させます。このように書くとfの値が%dのところに入って表示されます。
return 0;
0を返してmain関数を終了します。
これが、C入門用プログラム「factorial.c」です。初心者の方には、少し難しかったかもしれません。わからなかった部分は本サイトの他の項目を参考にしてみてください。お疲れさまでした。