7 サブルーチン(関数)とマクロ



next up previous contents

Next: サブルーチンの作り方 Up: No Title Previous: 練習問題


7 サブルーチン(関数)とマクロ

以下のプログラムは、第2節のプログラム例を 関数と置き換えを使って書き直したものです。 これにより、関連する処理をひとつにまとめて見やすく 考えやすくし、また後からパラメータをいろいろといじって 変更してみることが非常に楽になっています。

-----------------------
 1: /* "ex7.c" --- 単振動のグラフを表示する */
 2:
 3: #include <stdio.h>
 4: #include <math.h>
 5: #include <Xtc.h>
 6: 
 7: #define PAI 3.14159                         /* 置き換えの定義 */
 8: #define G 9.80
 9: #define RANGE 0.2               /* (変更を容易にする置き換え) */
10: #define ORIGIN_X 120
11: #define ORIGIN_Y 200
12: #define LENGTH 0.5
13: #define MAG_Y 150
14: #define Radian(x) ( x * PAI / 180.0 )  /* マクロ定義 */
15:                                        /* (度→ラジアンへの変換) */
16: 
17: void syokika(void)
18: {
19:      initgraph();                  /* グラフィックス環境の初期化 */
20:
21:      setcolor( WHITE );                    /* 座標軸の表示色設定 */
22:      line( 100, ORIGIN_Y, 540, ORIGIN_Y );          /* x軸の描画 */
23:      line( ORIGIN_X,  50, ORIGIN_X, 350 );          /* y軸の描画 */
24:      outtextxy( ORIGIN_X - 20, ORIGIN_Y + 20, "0"); /* 原点表示  */
25: 
26:      return;
27: }
28:
29: double huriko( double x, double l )
30: {
31:     return( RANGE * sin( Radian( sqrt( G / l ) * x ) ) );
32: }
33: 
34: void main(void)
35: {
36:     int  degree;
37:     int  x,y;
38:     double radian;
39: 
40:     syokika();          /* ウィンドウへグラフを表示する準備処理 */
41: 
42:     for( degree = 0; degree < 360; degree++ ){
43:         x = ORIGIN_X + degree;
44:         y = ORIGIN_Y + MAG_Y * huriko( (double)degree, LENGTH );
45:         putpixel( x, y, GREEN );          /* グラフ(点)の描画 */
46:     }
47: 
48:     xtcmainloop( 3 );             /* 終了入力待ち */
49:     closegraph();
50: }
-----------------------




next up previous contents

Next: サブルーチンの作り方 Up: No Title Previous: 練習問題




機械・知能系 コンピュータ実習担当教官