簡単なプログラム


簡単なプログラム

まずは、次の簡単なプログラムを見て欲しい。

#include <stdio.h>

main() {
    int price1, price2, sum;

    printf("Please type the price 1: ");
    scanf("%d", &price1);
    printf("Please type the price 2: ");
    scanf("%d", &price2);
    sum = price1 + price2;
    printf("Sum of price is: %d\n", sum);
}
sum.c

2つの数値を入れ、それを足すだけである。

このプログラムを元に、Cのプログラムの一般的な約束事を述べる。

以下、本文の中に出てきた様々なものについて、解説する。

#include <stdio.h>

先頭の
#include <stdio.h>
は、プログラム中に出て来たprintfを使うために必要な ものである。実は、「#include <ファイル名>」 は、システムのどこか(普通のUNIXでは/usr/include)に ある「stdio.h」というファイルのこの部分に読み込め、 という命令である。その中には「printfのプロトタイプ宣言」 と呼ばれるものが書かれているが、この意味はまだ分からなくて良い。

変数と代入文

    int price1, price2, sum;
の部分は変数の宣言である。intは整数型(整数が入る変数)であることを 指定し、price1price2sumが変数の名前である。

printf

printfは、文字列を表示する関数である。
printf("Please type the price 1: ");
で、「Please type the price 1: 」と表示する。 文字列は、このように「"」で囲う。

また、

printf("Sum of price is: %d\n", sum);
のように、「%d」があると、その部分は文字列の 後で指定した値で置き換えられる。例えば、
printf("abc%ddef%dghi", 100, 2);
で、「abc100def2ghi」と表示される。 末尾の「\n」は、そこで改行することを示す。

なお、「%d」は表示したい値が整数の場合で、 そうで無い場合は、次の表に従う。

%d 整数を10進数で表示
%c 文字
%s 文字列
%f 浮動小数点数(0.0314のように)
%e 浮動小数点数(3.14e-02のように)
%g 浮動小数点数(%fと%gのうち短い方で表示)
%% ただの「%」という文字
%.15g %gで有効数字15桁まで表示

scanf

scanf("%d", &price1);
で、キーボードから数値を入力し、その値を price1という変数に代入する。 変数の前に付いている「&」は 「アドレス演算子」と呼ばれるものでポインタと 深い関りがあるが、ここでは触れない。 こう書くものと思って欲しい。

scanfの場合も%の部分は変数の型によって次のように 使い分ける。printfと似ているが少し違うので注意。

%d 整数を10進数で入力
%c 文字
%s 文字列
%f,%e,%g 浮動小数点数(float型)
%lf,%le,%lg 浮動小数点数(double型)

算術演算子と式

算術演算子と変数や定数を組み合わせて、式を構成する。 算術演算子は、

+加算
-減算、符号反転
*乗算
/除算
%剰余

がある。*/%は、+-よりも 優先順位が高く、また括弧()を利用して優先順位を変更することも出来る。

    x = 10 - 2 * 5;
    x = (10 - 2) * 5;
また、省略形として +=-=*=/=%=という 演算子がある。例えば、
    x = x + 10;
    x += 10;
と書くことが出来る。

簡単なプログラム2

次に浮動小数点数を使った例を示す。

#include <stdio.h>
#include <math.h>

main() {
    int price1, price2;

    printf("Please type the price: ");
    scanf("%d", &price1);
    price2 = (int)floor(price1 * 1.05);
    printf("Price with tax is: %d\n", price2);
}
tax.c

scanfprintfの使い方は先に述べた。

ここで出て来た

#include <math.h>
は、数学関数(ここではfloor)を使うために必要なものである。 また、数学関数を使ったプログラムをコンパイルするときは、
% cc -o tax tax.c -lm
%
のように、-lmを付加する必要がある。なお、これを 付加する位置は重要で、必ずソースファイル(tax.c)より 後に指定しなければならない。

数学関数

floor(式)は、式の値を越えない最大の整数を返す関数である。 主な数学関数は、以下のようなものがある。

floor 切り捨て
ceil 切り上げ
fabs 絶対値
sqrt 平方根
exp 指数関数
log 対数関数(底はe)
log10 対数関数(底は10)
pow(x,y) xのy乗
cos コサイン
sin サイン
tan タンジェント
asin アークサイン
acos アークコサイン
atan アークタンジェント


簡単なプログラム / kashi@mn.waseda.ac.jp