6日でできる 新C言語入門|C言語プログラムの書き方

C言語の第一歩は、基本構造を知ることから。
小さなプログラムを読み解いて、書き方のルールを身につけよう。

C言語を学び始めるとき、最初に押さえておきたいのがプログラムの基本的な形です。C言語には、ヘッダーファイルの読み込み、main関数、処理の記述、セミコロン、return文など、ほとんどのプログラムに共通して登場する大切な要素があります。

最初は、記号や英単語が並んでいて難しく見えるかもしれません。しかし、1行ずつ役割を分けて見ていくと、C言語のプログラムは意外と整理された構造になっていることが分かります。どこから実行が始まり、どの命令で画面に文字を表示し、どこで処理が終わるのかを理解できると、C言語の学習がぐっと進めやすくなります。

C言語では、1つの処理の終わりにセミコロンを付けたり、大文字と小文字を区別したり、文字列をダブルクォーテーションで囲んだりする必要があります。こうした細かなルールは、最初は少し厳しく感じるかもしれません。しかし、これらはコンパイラがプログラムを正しく読み取るために必要な約束事です。

ここでは、C言語の基本的なプログラムを例にしながら、ヘッダーファイル、main関数、printf関数、エスケープシーケンス、セミコロン、return文の意味を、初心者にも分かりやすく整理して解説していきます。

最初に見るC言語プログラム

C言語の基本を理解するために、まずは短いプログラムを見てみましょう。ここでは、画面にメッセージを表示するシンプルなプログラムを使います。

プロジェクト/ファイル名: Lesson09_1/main.c

#include <stdio.h>

int main(int argc, char** argv) {
    printf("Welcome to C.\n");
    return 0;
}

実行結果

Welcome to C.

このプログラムを実行すると、コンソール画面にWelcome to C.と表示されます。処理としてはとても短いですが、C言語の基本構造がしっかり含まれています。

この中には、標準入出力を使うための準備、プログラムの開始位置、文字列を表示する処理、プログラムを正常に終了する処理が含まれています。C言語の学習では、まずこのような短いプログラムを正確に入力し、各行の意味を理解することが大切です。

プログラム全体の構造を見てみよう

C言語のプログラムは、ただ上から文字を並べているのではなく、役割ごとに構造があります。今回のプログラムは、大きく分けると次のような構成になっています。

行の内容役割
#include <stdio.h>画面出力などに必要な標準入出力ライブラリを使えるようにする
int main(int argc, char** argv)プログラムの実行が始まるmain関数を定義する
{ と }main関数の処理範囲を表す
printf("Welcome to C.\n");文字列を画面に表示する
return 0;プログラムが正常に終了したことをOSへ伝える

C言語では、main関数がプログラムの入口になります。プログラムを実行すると、基本的にmain関数の中に書かれた処理が順番に実行されます。

今回の例では、main関数の中にprintf関数とreturn文があります。つまり、文字列を表示し、その後に正常終了を返す、という流れです。

図:C言語プログラムの基本構造

この図から分かること

この図から分かるのは、C言語の基本的なプログラムが、準備、開始、処理、終了という流れで構成されているという点です。

#include <stdio.h>で必要な機能を使えるようにし、main関数から処理が始まります。その中でprintf関数を使って文字列を表示し、最後にreturn 0で正常終了を示します。短いプログラムでも、C言語の基本的な考え方がきちんと含まれています。

#include <stdio.h>は標準入出力を使うための準備

プログラムの先頭にある#include <stdio.h>は、ヘッダーファイルを読み込むための記述です。stdio.hは、標準入出力に関する機能を使うためのヘッダーファイルです。

標準入出力とは、キーボードからの入力や画面への出力など、基本的な入出力の仕組みを指します。今回のプログラムではprintf関数を使って画面に文字を表示しています。このprintf関数を使うために、stdio.hを読み込んでいます。

記述意味
#include指定したヘッダーファイルを読み込む
<stdio.h>標準入出力に関する機能を使うためのヘッダーファイル
printf関数文字や数値などを画面に表示するための関数

C言語では、使いたい機能に応じて必要なヘッダーファイルを読み込むことがあります。今回のようにprintf関数を使う場合は、stdio.hが必要になります。

最初のうちは、画面に文字を表示するときには#include <stdio.h>を書く、と覚えておくとよいでしょう。学習が進むと、標準ライブラリやヘッダーファイルの役割がより詳しく理解できるようになります。

main関数はプログラムの開始位置

int main(int argc, char** argv)は、main関数を定義している部分です。C言語のプログラムは、基本的にmain関数から実行が始まります。

関数とは、処理をひとまとまりにしたものです。C言語では、さまざまな処理を関数としてまとめて書くことができます。その中でもmain関数は特別な関数で、プログラムの入口として扱われます。

部分意味
intmain関数が整数値を返すことを示す
mainプログラムの開始点となる関数名
int argcコマンドライン引数の個数を受け取るための情報
char** argvコマンドライン引数の文字列情報を受け取るための情報
{ }関数の中に書く処理範囲を表す

今回の段階では、argcやargvの詳しい仕組みを完全に理解する必要はありません。これらは、プログラム実行時に外部から渡される情報を扱うためのものです。入門段階では、main関数はプログラムの開始場所であり、波かっこの中に実行したい処理を書く、と理解しておけば十分です。

C言語では、波かっこで処理のまとまりを表します。main関数の波かっこの中に書かれた処理が、プログラムの実行時に順番に処理されます。

printf関数は画面に文字を表示する

printf("Welcome to C.\n");は、画面に文字を表示するための処理です。printf関数は、C言語で標準出力へ文字列や値を表示するときによく使われます。

printfの丸かっこの中には、表示したい内容を書きます。文字列を表示する場合は、ダブルクォーテーションで囲みます。今回の例では、Welcome to C.\nという文字列を指定しています。

記述内容
printf画面に文字や値を表示する関数
( )関数に渡す内容を書く場所
"Welcome to C.\n"表示したい文字列
;1つの文の終わりを表す

printf関数は、C言語学習の初期からよく使います。変数の値を表示したり、計算結果を確認したり、プログラムの動きを調べたりするときにも便利です。

ただし、printf関数を使うには#include <stdio.h>が必要です。ヘッダーファイルの読み込みとprintf関数はセットで考えると理解しやすくなります。

エスケープシーケンスは特別な文字を表す記法

文字列の中にある\nは、改行を表すエスケープシーケンスです。画面に表示される文字としてのnではなく、改行という特別な動作を表します。

C言語では、文字列の中でそのまま書きにくい文字や、特別な意味を持つ文字を表すために、バックスラッシュを使った記法があります。これをエスケープシーケンスと呼びます。

エスケープシーケンス意味
\n改行
\tタブ
\\バックスラッシュ
\"ダブルクォーテーション
\'シングルクォーテーション
\0ヌル文字

たとえば、\nを使うと表示後に改行されます。\tを使うとタブ幅の空白を入れられます。"を使うと、文字列の中にダブルクォーテーションを表示できます。

C言語の文字列では、ダブルクォーテーションが文字列の始まりと終わりを表すため、文字としてのダブルクォーテーションを表示したい場合には特別な書き方が必要になります。このような場面でエスケープシーケンスが役立ちます。

図:printf関数とエスケープシーケンスの関係

この図から分かること

この図から分かるのは、printf関数が文字列を画面に表示し、\nのようなエスケープシーケンスによって表示の動きも指定できるという点です。

文字列の中にある\nは、そのままnと表示されるのではなく、改行として働きます。C言語では、文字列の中で特別な文字や動作を表すためにエスケープシーケンスを使います。画面表示を整えるうえで、とてもよく使う記法です。

セミコロンは文の終わりを表す

C言語では、1つの文の終わりにセミコロンを付けます。今回のプログラムでは、printf("Welcome to C.\n");とreturn 0;の末尾にセミコロンがあります。

セミコロンは、コンパイラに対してここで1つの処理が終わることを伝えるための記号です。日本語の文章で句点を付けるように、C言語では文の終わりにセミコロンを付けます。

記述例セミコロンの役割
printf("Welcome to C.\n");画面表示の処理がここで終わることを示す
return 0;戻り値を返す処理がここで終わることを示す

セミコロンを忘れると、コンパイルエラーになることがあります。C言語を始めたばかりの頃によくあるミスの1つです。

ただし、すべての行にセミコロンを付けるわけではありません。#include <stdio.h>やmain関数の定義行、波かっこだけの行には通常セミコロンを付けません。どの行が文なのかを意識すると、セミコロンを付ける場所が分かりやすくなります。

return 0は正常終了を表す

return 0;は、main関数の処理を終了し、OSへ結果を返すための記述です。main関数の戻り値の型はintなので、整数値を返します。

一般的に、main関数でreturn 0を返すと、プログラムが正常に終了したことを表します。0以外の値は、異常終了や特別な状態を表すために使われることがあります。

記述意味
return関数の処理を終了して値を返す
0正常終了を表す値としてよく使われる
return 0;main関数を正常に終了する

入門段階では、main関数の最後にはreturn 0;を書く、と覚えておくとよいでしょう。学習が進むと、関数の戻り値やエラーコードの考え方も理解しやすくなります。

C言語では大文字と小文字が区別される

C言語では、大文字と小文字が区別されます。たとえば、printfとPrintfは別の名前として扱われます。そのため、関数名や変数名を入力するときは、文字の大小に注意する必要があります。

入力例C言語での扱い
printf正しい関数名として扱われる
Printfprintfとは別の名前として扱われる
mainプログラムの入口として使われる関数名
Mainmainとは別の名前として扱われる

C言語のエラーで多いのが、関数名や変数名の大文字小文字の間違いです。見た目が似ていても、コンパイラにとっては別の名前になります。

特に入門段階では、教材のコードを写すときに大文字小文字を正確に入力することを意識しましょう。

半角文字で入力する

C言語のコードは、基本的に英数字や記号を半角で入力します。全角の記号が混ざると、見た目は似ていてもコンパイラが正しく解釈できず、エラーになることがあります。

注意する文字よくあるミス
;全角の;を入力してしまう
"全角の“ ”を入力してしまう
( )全角の( )を入力してしまう
{ }全角の{ }を入力してしまう
\日本語環境では見た目が¥になる場合がある

C言語のプログラムを書くときは、入力モードを半角英数字にしておくと安心です。特に、セミコロン、ダブルクォーテーション、丸かっこ、波かっこはよく使うため、半角で入力できているか確認しましょう。

コメントを使うと説明を残せる

C言語では、プログラムの中にコメントを書くことができます。コメントは、コンパイラには処理として扱われず、人間が読むための説明として使います。

コメントを使うと、処理の目的や注意点を残せるため、後から読み返したときに理解しやすくなります。学習中も、各行の意味を自分の言葉でコメントにしておくと、理解の整理に役立ちます。

コメントの種類書き方特徴
1行コメント// コメント内容行の途中から末尾までコメントになる
複数行コメント/* コメント内容 */複数行にわたる説明を書ける

コメントは便利ですが、書きすぎると逆に読みづらくなることもあります。処理の意味が分かりにくい場所や、学習上のメモを残したい場所に使うとよいでしょう。

インデントで読みやすくする

C言語では、波かっこの中の処理を字下げして書くことが一般的です。この字下げをインデントと呼びます。

インデントは、コンパイラにとって必須ではない場合もありますが、人間が読みやすいプログラムを書くためにはとても大切です。どの処理がmain関数の中にあるのか、どこからどこまでが処理のまとまりなのかを見た目で判断しやすくなります。

書き方のポイント内容
波かっこの中は字下げする処理のまとまりが見やすくなる
同じ階層はそろえる読みやすく、ミスに気づきやすい
閉じ波かっこの位置をそろえる対応関係が分かりやすくなる

今回のプログラムでは、printf("Welcome to C.\n");とreturn 0;がmain関数の中にあるため、字下げされています。こうした見た目の整理は、プログラムが長くなるほど重要になります。

図:C言語プログラムを書くときの基本チェック

この図から分かること

この図から分かるのは、C言語のプログラムを書くときには、内容だけでなく入力ルールや見た目の整理も大切だという点です。

半角入力、大文字小文字、セミコロン、波かっこの対応は、コンパイルエラーを防ぐために重要です。また、インデントを整えることで、自分にも他の人にも読みやすいプログラムになります。C言語は細かな記法に厳密な言語なので、最初のうちから丁寧に入力する習慣をつけることが大切です。

基本プログラムの流れを順番に読む

今回のプログラムは、次のような流れで読むことができます。

順番処理の内容
1stdio.hを読み込み、printf関数を使えるようにする
2main関数からプログラムの実行が始まる
3printf関数でWelcome to C.を画面に表示する
4\nによって表示後に改行する
5return 0で正常終了を示す

このように、短いプログラムでも実行の流れを順番に追うことができます。

C言語を学ぶときは、ただコードを暗記するのではなく、どこから始まり、どの順番で処理され、どこで終わるのかを意識しましょう。この読み方ができるようになると、条件分岐や繰り返しが登場したときにも理解しやすくなります。

よくある入力ミスと確認ポイント

C言語の最初のプログラムでは、入力ミスによるエラーがよく起こります。エラーが出ても、慌てる必要はありません。コンパイラは、プログラムのどこかにルール違反があることを教えてくれています。

よくあるミス確認するポイント
セミコロンを忘れるprintfやreturnの末尾にセミコロンがあるか
ダブルクォーテーションを閉じ忘れる文字列の始まりと終わりが対応しているか
波かっこを閉じ忘れる{ と } の数が合っているか
printfを大文字で書くprintfのつづりと小文字を確認する
全角記号が混ざる記号が半角になっているか
includeのつづりを間違える#include <stdio.h>が正しく入力されているか

エラーを直すときは、1つずつ確認するのが大切です。いきなり全体を大きく書き換えると、別のミスが増えることがあります。まずは、エラーメッセージが指している行の近くを確認し、記号やつづりを丁寧に見直しましょう。

最初のプログラムで身につけたい考え方

最初のC言語プログラムで大切なのは、画面に文字を表示できたかどうかだけではありません。C言語の基本的な構造を理解することが重要です。

#include <stdio.h>で必要な機能を準備し、main関数から処理が始まり、printf関数で出力し、return 0で終了する。この流れを理解しておくと、今後どのようなプログラムを書くときにも土台になります。

身につけたい考え方内容
プログラムには入口があるC言語ではmain関数から実行が始まる
必要な機能は準備するprintfを使うにはstdio.hが必要
文には終わりがあるセミコロンで文の終わりを示す
文字列にはルールがあるダブルクォーテーションやエスケープシーケンスを使う
プログラムは終了結果を返すreturn 0で正常終了を示す

C言語では、基本構造を理解することがとても大切です。最初のうちは短いプログラムを何度も入力し、少しずつ各部分の意味を確認していくと、自然に書き方が身についていきます。

C言語の書き方に慣れるために

C言語の書き方に慣れるには、まず短いプログラムを正確に入力することが大切です。最初から複雑な処理に進むより、基本構造をしっかり確認しながら、少しずつ表示内容や処理を変えて試していくと理解しやすくなります。

プログラムを書くときは、次の流れを意識するとよいでしょう。

手順内容
1プロジェクトとソースファイルを準備する
2#include <stdio.h>を書く
3main関数を書く
4波かっこの中に処理を書く
5printf関数で表示する
6return 0で終了する
7保存してからビルドと実行を行う

この流れに慣れると、C言語のプログラムを書くときの迷いが少なくなります。学習が進むと、変数、計算、条件分岐、繰り返し、関数などを追加していくことになりますが、基本の形は今回のような短いプログラムとつながっています。

基本構造を理解すると次の学習に進みやすくなる

C言語の基本プログラムには、学習の土台になる要素が詰まっています。ヘッダーファイル、main関数、printf関数、エスケープシーケンス、セミコロン、return文は、今後も何度も登場します。

これらを最初に理解しておくと、次に変数や計算を学ぶときにも、どこに処理を書けばよいのかが分かりやすくなります。また、エラーが出たときにも、どの部分の書き方が間違っているのかを確認しやすくなります。

C言語は、記法に厳密な言語です。その分、基本を丁寧に学ぶことで、プログラムの構造を正確に理解する力が身につきます。最初の短いプログラムをしっかり読み解くことが、C言語を実践的に使えるようになるための大切な第一歩です。