関数の基礎


●プログラムを作成していると,何度も同じ処理を書かなければならないことがある。
 しかし,そのつど同じ処理の内容を書くのは手間がかかってたいへんである。そこで,
 一回,処理をまとめて書いておき,必要なときに再利用できれば便利である。この,
 再利用のためにまとめられたものを,サブルーチン(sub routine)とか,プロシージャ
 (procedure)などと言う。特にC言語では,関数(function)と呼ばれる。今回は関数の
 基礎について学習しよう。

以下に,関数の基本事項を示す。



●関数の考え方

function1-1

・▼FLASHによる解説(右下に「クリック」と表示されたらクリックで次に進めます)

    最初から再生




    ●main( )関数とC言語プログラムの動作の仕方(「関数が関数を呼び出す」連鎖でプログラムが動く)

    function1-2




    ●関数の利用と動作の流れ ( 例:平均値を計算して返してくれる関数 average( ) )

    ・▼FLASHによる解説(右下に「クリック」と表示されたらクリックで次に進めます)
    最初から再生





    ●関数の定義の仕方(基本編)

    function2-1

    問題1:2つのint型引数の内,大きい方を返す関数 max( ) を完成せよ。 問題2:1個のint型整数を受け取り,それが偶数なら整数値1を,奇数なら
    整数値0を返す関数 isEven( ) を定義せよ。
    #include <stdio.h>
     
    int max( int x, int y ) {
        /* ここを完成させる */
    }
     
    int main( void ) {
        int a, b;
        printf( "a = " ); scanf( "%d", &a );
        printf( "b = " ); scanf( "%d", &b );
        printf( "max is %d\n", max( a, b ) );
        // getchar(); getchar(); // VisualStudio 2010用
        return 0;
    }
    #include <stdio.h>
     
    int isEven( int n ) {
        /* ここを完成させる */
    }
     
    int main( void ) {
        int a;
        printf( "a = " ); scanf( "%d", &a );
        if( isEven( a ) == 1 ) printf( “%d は偶数”, a );
        if( isEven( a ) == 0 ) printf( “%d は奇数”, a );
        // getchar(); getchar(); // VisualStudio 2010用
        return 0;
    }




    ●関数の定義の仕方(引数と返値の有無)




    引数・返値の有無の組み合わせで分類してみよう(下図にマウスカーソルを重ねると補助の説明フキダシが表示されます)





    ●関数の定義の仕方(配列を受け取る関数)



    上図で例に挙げた関数 displayIntArray( ) の使用例
    #include <stdio.h>
     
    // 第1引数に受け取ったint型配列の要素をすべて表示する。第2引数にはその配列の要素数を渡す。
    void displayIntArray( int a[ ], int length ) {
        int i;
        for( i = 0; i < length; i++ ) {
            printf( "%d, ", a[i] ); // 受け取った配列のi番目の要素を表示する
        }
        printf( "\n" ); // 最後に改行を表示する
    }
     
    int main( void ) {
        
        int array1[] = { 3, 7, 2, 9, -1 };
        int array2[] = { 5, 1, 0, 3, 7, 10, 20 };
        
        displayIntArray( array1, 5 );  // 配列array1 の要素をすべて表示する
        displayIntArray( array2, 7 );  // 配列array2 の要素をすべて表示する
        
        // getchar(); getchar(); // VisualStudio 2010用
        return 0;
    }