はじめての C

[Learning GNU C]

2.7. より 大きな (未完成の) プログラム

今まで 見てきた 小さな プログラムの 規模では ある程度の 対話型プログラムを つくるには 十分でない。 簡単に しておくために プログラムの 骨組みを 書くことにしよう。 そうすれば 新しい 考え方で 泥沼に はまることなく その構造と 使い方とを 理解できる。 第3章で このプログラムの 完成版を 書く。 ここにある code は コンパイルして 実行できるが それは ユーザに なにか 入力を 求めたり 価格を 算出したりは しない。

初めは main.c だ。 これは ただ 関数 main() から できている。 main() は 他の ファイルで 定義した いくつかの 関数を 呼び出していく。 注意するのは the Standard Device I/O ライブラリからの 関数は なにも 使わないので

#include <stdio.h>

という line を もたないことだ。

Example 2-4. main.c

#include "display.h"
#include "prices.h"

int
main()
{
display_options();
calculate_price();
display_price();

return 0;
}

次は display.c だ。 これは 2つの 関数から なり いずれも main() から 呼び出すので ヘッダファイル display.h に これらの 宣言を 置く。

Example 2-5. display.c

#include <stdio.h>

int
display_options()
{
printf("pizza parler へ ようこそ。\n");
printf("pizza の サイズ (inch) は どうしますか?");
return 0;
}

int
display_price()
{
printf("pizza の お値段は 0.00 と なります。\n");
return 0;
}

Example 2-6. display.h

/* ヘッダファイルは 関数の 宣言から なり これらの
* 関数の どちらかを 用いるときは このファイルを
* "#include" しなければ ならない。
*/

int display_options(void);
int display_price(void);

最後が prices.c で それは ユーザからの 入力を 受け取る 関数と pizza の 総価格を 算出する 関数から なる。 main() から 呼び出すのは ただ 1つの 関数だけで そのため 他の 2つの 宣言は ファイルの 先頭に 置く。 これらの 関数の code は 第3章で 埋めていく。

Example 2-7. prices.c

int get_size(void);
int get_toppings(void);

int
calculate_price()
{
/* code を ここに 置く。get_size() と
* get_toppings() を 呼び出す。
*/
return 0;
}

int
get_size()
{
/* code を ここに 置く。 */
return 0;
}

int
get_toppings()
{
/* code を ここに 置く。 */
return 0;
}

Example 2-8. prices.h

int calculate_price(void);

次に コマンドで コンパイルする。

$ gcc -Wall -o pizza-program main.c prices.c display.c

実行すると あいさつを 表示して pizza の 金額が "0.00" だと 知らせる。