e知識「e-chishiki.com」では、インドでの著名なIT著者、IT教育者、eセキュリティーの大家により作成された様々な種類のプログラミング言語に関する技術的なコンテンツを知識情報データーベースとして提供します。
オンライン書籍; インド式プログラミングバイブル C言語入門 (上)
第 1 章 : C言語入門 始めに(書籍のプレビュー)
インド式プログラミングバイブル C言語入門
この記事は、2008年4月から発売の「インド式プログラミングバイブル C言語入門 (上)」より掲載しました。書籍の情報は、こちらをご覧ください。
はじめてのCプログラム
変数の型、定数、キーワードについての知識を身につけたら、次には、それらを組み合わせて命令を作ってみたくなることでしょう。しかしここでは、その代わりに、はじめてのCプログラムを書いてみます。プログラムを書いてみてから、そこで使われている命令を、詳しく検討してみましょう。
はじめてのCプログラムを書き始める前に、すべてのCプログラムが守らなければならない次の規則を、まずしっかりと覚えます。
- Cプログラムの各命令は、独立した文章として記述します。つまり、完成したCのプログラムには、一連の命令文が含まれます。
- プログラム中の命令文は、実行したい順番で記述します。ただし、プログラムの論理が、意図的な「jump(飛び越し)」や、命令文の制御の移動を行う場合は、当然ながらそちらの方に従うことになります。
- 命令文を読みやすくするために、単語と単語の間には空白を挿入することができます。ただし、変数、定数、キーワードの中に空白を入れてはいけません。
- 命令文はすべて小文字で記述します。
- 命令文を記述する際の字下げや段付けに関しては、特に決まった規則はありません。このため、Cはしばしばフリーフォーム(自由フォーマット)言語と呼ばれます。
- Cの命令文は、必ず「;」で終了します。つまり、「;」が文の終了を示す記号となります。
さて、実際にはじめてのCプログラムを書いてみましょう。元本、年数、利率を示す値から単利を求める、簡単な計算を行うプログラムです。
/* 単利の計算式 */
/* Author gekay Date: 25/05/2006 */
# include <stdio.h>
void main( )
{
int p, n ;
float r, si ;
p = 1000 ;
n = 3 ;
r = 8.5 ;
/* 単利の計算式 */
si = p * n * r / 100 ;
printf ( "%f" , si ) ;
}
このプログラムを、順に解説してみましょう。
- プログラムについてのコメントは、/* */で囲んで記述します。例えば、このプログラムでは、最初の2行がコメント部分です。
- コメントの記述は必須ではありませんが、冒頭部分に、プログラムの目的、作成者名、作成日、を入れるようにするのは、良い習慣になります。
-
コメントは、プログラムのどこにでも、何行でも記述できます。例えば下記のように、コメントは命令文の前や後ろ、途中にも入れることができます。
/* 式 */ si = p * n * r / 100 ;
si = p * n * r / 100 ; /* 式 */
si = p * n * r / /* 式 */ 100 ;
-
時には、プログラム中で、その命令文がどんな役割を果たしているのか、分かりづらい場合があります。そのような場合、命令文(もしくは一組の命令文)に、その個所の役割を記したコメントが付けてあると、とても役に立つでしょう。例えば、次のようなコメントです。
/* 単利の計算式 */
si = p * n * r / 100 ;
- 多くの場合、プログラマは、コメントの記述を軽視する傾向があるようです。しかし、大規模なソフトウェアをチームで開発する場合、コードに適切にコメントを付けることは、チームの他のメンバーがそのコードを理解するのに不可欠と言って良いのです。
- この例のプログラムには、たくさんのコメントを付ける必要は無いでしょうが、多くの場合、プログラマはコメントを付けすぎるよりは、付けなさすぎる傾向があります。必要十分な数のコメントは、後になってプログラムの挙動を理解しようとする時に、多大な苦行から、あなたを救ってくれるかもしれないのです。
- 通常の記述規則は、/*~*/で囲まれた部分には適用されません。 このため、コメント部分は小文字、大文字、または大文字と小文字の混在で記述できます。これは、コメントが、プログラマ自身や、他のプログラマの理解を助けるためだけの部分であり、コンパイラには完全に無視されるからです。
-
コメントは、ネスト(入れ子)構造にすることは、できません。例えば、
/* Cal of SI /* sam date 01/05/2005 */ */
のような記述は、エラーとなってしまいます。
-
コメントは、次の例のように、数行に渡って書くことはできます。
/* This is
a jazzy
comment */
このようなコメントは、複数行コメントとも呼ばれます。
- main( )は、一組の命令文に付けられる集合名です。この名前は、かならずmain( )でなければならず、他の名前には変えられません。main( )に含まれるすべての命令文は、次のように一対の{ }で囲みます。
void main( ) { statement 1 ; statement 2 ; statement 3 ; }
- 技術的な言葉で言えば、このmain( )は、関数なのです。すべての関数には、一対のカッコ( )が付いています。
- 電卓の関数ボタンが答えの値を返すように、Cの関数も値を返します。main( )関数が、いかなる値も返さない場合は、その前にキーワードvoidを付けて記述します。関数とその働きについては、第5章で非常に詳しく取り上げています。
-
プログラム中に使用する変数は、使用する前に、まず宣言されていなくてはなりません。例えば、次のように宣言します。
int p, n ; /* 宣言 */
float r, si ; /* 宣言 */
si = p * n * r / 100 ; /* 式 */
-
Cの命令文は、必ず「;」で終了します。
例えば、次のようになります。
float r, si ;
r = 8.5 ;
-
文章なら、次のようになります。
si = p * n * r / 100 ;
*と/は算術演算子です。Cで使用できる算術演算子は、+、-、*、/です。Cには、非常に多くの演算子が用意されています。Cで使用できる演算子の数は、約45個です。しかし、意外なことですが、指数演算を行う演算子は用意されていません。開発時に入れ忘れてしまったようなのですが、Cが委員会などではなく、個人によって開発されたことを思いだして、大目に見てあげましょう。
- siの値が計算によって求められたら、次は、画面に出力しなければなりません。他の言語と違って、Cには画面への出力表示を行う命令がありません。画面への出力は、すべて既存のライブラリ関数を使用して行います。printf( )も、その1つです。siに入っている値を画面に出力するために、この関数を使います。
- printf( )関数を使用するには、プログラムの冒頭で#include <stdio.h> と記述する必要があります。#includeは、プリプロセッサ指令です。この目的については、第7章で詳しく説明します。今は、printf( )を使うときには、とにかく#includeと書くことにしましょう。
printf( )関数の一般的な記述は、以下のようになります。
printf ( "<format string>", <list of variables> ) ;
<format string> (書式文字列)には、以下の内容が記述できます。
%f は実数値を出力
%d は整数値を出力
%c は文字値(文字コード)を出力
書式文字列の部分には、上記の%f、%d、%cといった書式指定子に加えて、他の色々な文字を含めることができます。そのような文字は、printf( )実行時に、そのままの形で出力されます。
以下にあげるのは、printf( )関数の使用例です。printf ( "%f", si ) ; printf ( "%d %d %f %f", p, n, r, si ) ; printf ( "Simple interest = Rs. %f", si ) ; printf ( "Prin = %d \nRate = %f", p, r ) ;
最終行からの出力は、次のようになります。
Prin = 1000
Rate = 8.500000命令文の中の「\n」は、一体何でしょうか?これは改行文字と呼ばれ、カーソルを次の行に移動させる働きがあります。このため出力は、2行に分けて表示されます。「\n」は、Cで使用できるエスケープ シーケンスの1つです。エスケープ シーケンスについては、第11章で詳しく説明します。それまでは、出力を複数の行に渡ってきちんと出力したい場合に、「\n」が便利だと言うことだけ、覚えておいてください。
printf( )は、変数の値だけではなく、式の結果も出力できます。式とは、定数、変数、演算子の有効な組み合わせのことにすぎません。つまり、3や3+2、c、a+b*c-dは、すべて有効な式です。このような式の結果は、次のように出力できます。
printf ( "%d %d %d %d", 3, 3 + 2, c, a + b * c – d ) ;
3やcも、有効な式として扱われることに、注意してください。



