コンテンツ
C言語の基本ルール
まずは、C言語のプログラムのつくりがどうなっているかを覚えます。よく使われる基本的なルールを説明します。
C言語入門 Lesson1のゴール
C言語でLesson1.cというファイルを作成します。
Lesson1.cは、 ”Hello World!”
を出力するプログラムです。
Lesson1.cを作り、実行結果を確認してみよう
まずは、Lesson1.cの問題を実行するプログラムを作成し、その中で出てくるプログラムについて解説を行っていきます。
Lesson1 サンプルプログラム
/* Lesson1 Sample Program */
#include <stdio.h>
/* 標準入出力ライブラリヘッダをインクルードします。 */
void main ( void )
{
printf("Hello World!");
printf("\n");
return;
}
C言語のコメント文
まずはじめに「/*」ではじまり「*/」で終わる文章は、C言語プログラムの中のコメント文になります。コメント文の中に書いてある文字は、プログラムの中では無効行として扱われ、何も実行されません。※サンプルプログラムの1行目と3秒目
なお、1行だけ有効なコメントとして、「//」を使うこともできます。
C言語のコメント文の規則
「/*」ではじまり「*/」で終わる間にある文字すべてがコメント文となります。
なお、改行しても有効です。
「//」を使った場合、1行のみコメント文として有効になります。
例1)
「/* ここの間に書かれた文字は
すべてプログラムでは無効行と判断されます。
改行してもコメント文として判断されます。 */」
例2)
「// 1行のコメント文です。」
コメントは、プログラムの中の説明を入れる時に使います。コメント文の注意点としては、「/*~*/」のネスト(2回使うこと)ができず、はじめの「*/」でコメント終了と判断されます。
※コメント行は、プログラムで何をしているかわかりやすくするための説明を記載するために利用しますが、必要ないのでは?という話もあります。自分だけがわかればよい、というプログラムであれば必要ないと思います。しかし、プログラムファイルが、いろんな人に読まれることを考えた場合、なぜこのような処理にしたのか、という説明があると親切です。
例3)
// コメント有効の行
コメントは無効。プログラムが実行される行
/* コメント有効の行
コメント有効の行
コメント有効の行 */
コメントは無効。プログラムが実行される行
コメントは無効。プログラムが実行される行
C言語のプログラムの規則[main関数]
C言語は、「main関数」から処理がはじめに実行されるというルールがあります。すべてのC言語のプログラムには、mainの処理が必ず必要です。そのため、まずはmain関数を作ります。サンプルプログラムの5行目がmain関数のプログラムです。
void main ( void )
C言語プログラムの文末[;]
C言語は、1行ずつのプログラムを書きますが、プログラム文の終わりに文末を示す「;」(セミコロン)を付けます。Lesson1のサンプルプログラム7~9行目で、それぞれのプログラムの文末に終わりを示す「;」(セミコロン)を使っています。
もし1行では書ききれないため続けたい場合は、「\」(円マーク)を使います。これについては別の章で説明します。
関数の戻り値を返す[return]
プログラムの9行目に、「return;」の行があります。これは、main関数の処理を終了させるという意味を持ちます。
return;
main関数の規則は以下のようになります。
C言語のプログラムの規則[main関数]
void main ( void )
{
/* C言語の処理 */
return ;
}
C言語の関数のルール
関数は「{」ではじまり「}」で終わるというルールがあります。さきほど説明したmain関数も関数の基本ルールに従うので、規則だけ説明をしておきます。
また、1行ずつ記載されているプログラムの処理の末尾は「;」を入れる、ということも基本ルールになります。
C言語の関数の規則
戻り値 関数名 ( 変数1, 変数2,・・ )
{
/* C言語の処理 */
return 戻り値;
}
型(void)について
プログラムの5行目で「void main(void)」が出てきました。さきほどのC言語の関数の規則にしたがうと、
戻り値(=void) 関数名(=main) 変数(=void)
になります。
voidは「なし(=値がないこと)」を意味しますので、今回の説明では、戻り値なし(void)、変数なし(void)という、mainを定義したという意味になります。
出力する関数[printf]
Lesson1のゴールは、C言語のプログラムで「Hello World!」という実行結果をコマンド上に出力する、ということが目的となっています。この出力を行う時に使う関数が「printf」です。※サンプルプログラムの7行目と8行目
このprintf関数はそのままでは使えません。プログラムの中で使えるようにするために、printf関数を定義しているヘッダファイル「stdio.h」をインクルードする、というプログラム文が必要になります。※サンプルプログラムの2行目
printfの規則
※プログラム文で「stdio.h」をインクルードする。
#include <stdio.h>
<printfの基本文法>
printf(" 出力したい文字、数字など ");
改行(\n)について
プログラムの出力の時に、改行をしたい場合があります。その時、改行を意味する「\n」を使います。
※サンプルプログラムの8行目
プログラムの実行順番
C言語のプログラムは、最初から1行ずつプログラムが順番に実行されます。そのため、Lesson1のサンプルプログラムでも、はじめの1行目コメント文が読み込まれ、これは無効行と判断されます。次の2行目の”stdio.h”のインクルードを実行する、というような流れでプログラムが処理されます。
Lesson1 サンプルプログラムの実行結果
サンプルプログラムである、ソースファイル [Lesson1.c] を実行した結果を確認します。
/* Lesson1 Sample Program */
#include <stdio.h> /* 標準入出力ライブラリヘッダをインクルードします。 */
void main ( void )
{
printf("Hello World!");
printf("\n");
return;
}
<実行結果 [Lesson1.c]>
PS C:\Cprogram> gcc lesson1.c -o lesson1.exe
PS C:\Cprogram> .\lesson1.exe
Hello World!(改行)
これで”Hello World!(改行)”が出力されました。
Lesson1のおさらい
・「/* ・・・ */」 と、「//」はC言語のコメント文になる。
・C言語は、main関数ではじまる
・C言語プログラムの文末は[;](セミコロン)を使う
・returnは、戻り値を返す処理
・型(void)は、値がないことを意味する
・文字の出力は、printf関数を使う
・「\n」で改行を行う
・C言語のプログラムは、1行目から順に1行ずつ実行される
Lesson1の演習問題を用意しましたので解いてみましょう。
C言語の基本 演習問題 (Lesson1)
Lesson1 – Problem1
次のプログラムには間違いがありますか?間違いがなければ、問題なし。間違いがあれば何行目のどこが間違っているか指摘してください。
#include <stdio.h>
void main ( void ) { printf("C言語の演習問題をやろう");
/* このプログラムは
正しいですか? */ return; }
Lesson1 – Problem2
次のプログラムには間違いがありますか?間違いがなければ、問題なし。間違いがあれば何行目のどこが間違っているか指摘してください。
#include <stdio.h>
void main ( void )
{
printf("C-Program")
return 1
}
Lesson1 – Problem3
C言語でLesson1P3.cというファイルを作成し
"C言語の"
"演習問題をやろう"
と出力してください。
次のLesson2に進む
Lesson1 – Problem1解答
このプログラムは正しいです。実際に実行してみてください。ただし、プログラムの中で改行が入っておらず、とても読みにくいソースコードになってしまっています。他の人も読みやすいプログラムを書くことは、間違えをしにくいソースコードになりますので、読みやすさを心がけましょう。
#include <stdio.h>
void main ( void ) { printf("C言語の演習問題をやろう");
/* このプログラムは
正しいですか? */ return; }
<実行結果 [Lesson1P1.c]>
PS C:\Cprogram> gcc Lesson1P1.c -o Lesson1P1.exe
PS C:\Cprogram> .\Lesson1P1.exe
C言語の演習問題をやろう
Lesson1 – Problem2解答
プログラムの4行目と5行目の末尾に「;」(セミコロン)がないため、間違いです。また、プログラムの2行目でvoid型のmain関数として定義されていますが、5行目の「return」文で「1」の数字を戻り値として返すようになっていますので間違えです。
#include <stdio.h>
void main ( void )
{
printf("C-Program")
return 1
}
<実行結果 [Lesson1P2.c]>
コンパイルエラーになりました。
PS C:\Cprogram> gcc Lesson1P2.c -o Lesson1P2.exe
Lesson1P2.c: In function 'main':
Lesson1P2.c:4:22: error: expected ';' before 'return'
printf("C-Program")
^
;
return 1
~~
「main」関数の、4行目で「;」(セミコロン)が入るはずなのがないよ、というerrorが出ています。
Lesson1 – Problem3解答
Lesson1P3.cのサンプルソースです。
#include <stdio.h>
void main ( void )
{
printf("C言語の");
printf("\n");
printf("演習問題をやろう");
return;
}
<実行結果 [Lesson1P3.c]>
PS C:\Cprogram> gcc Lesson1P3.c -o Lesson1P3.exe
PS C:\Cprogram> .\Lesson1P3.exe
C言語の
演習問題をやろう