自作関数のなかに自作関数を格納する 自作関数の2重入れ子  その2


ソーラー「今度は 


引数を持つ自作関数を


自作関数の定義に格納している自作関数をつくってみよう。」


アレサ「はいっ 


引数を持つ自作関数を自作関数の定義に格納してみますですの😊」


ソーラー「


引数を持つ自作関数は


void SelectSentense1(int a){


if(a==0)

printf("にゃほほ~い\n");

else printf("わはは~\n");

return;

}

void SelectSentense2(int b){


if(b==0)

printf("おにゃんこです\n");

else printf("ひたすらおにゃんこです\n");

return;

}


の2つを使ってみます。


これら 2つの自作関数を並べて使い構成したプログラムは


#include <stdio.h>


void SelectSentense1(int a){


if(a==0)

printf("にゃほほ~い\n");

else printf("わはは~\n");

return;

}


void SelectSentense2(int b){


if(b==0)

printf("おにゃんこです\n");

else printf("ひたすらおにゃんこです\n");

return;

}


int main (void){

SelectSentense1(0);

SelectSentense2(1);


return 0;

}


コンパイル結果

にゃほほ~い

ひたすらおにゃんこです


となります。 」



ソーラー「お次は


自作関数SelectSentense1を


自作関数SelectSentense2に格納してみるよ~


にゃんにゃん」


アレサ「ソーラーさん おにゃんこが のりうつっています」


ソーラー「自作関数SelectSentense2に


自作関数SelectSentense1を


まとめるには にゃ~ん


まず自作関数SelectSentense1を定義し

void SelectSentense1(int a){


if(a==0)

printf("にゃほほ~い\n");

else printf("わはは~\n");

return;

}


そのあとに


自作関数SelectSentense1を


自作関数SelectSentense2の定義にとりこんでみます。


自作関数SelectSentense1をとりこんだ


自作関数SelectSentense2を次のように定義します

☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆


void SelectSentense2(int a,int b){

SelectSentense1(a);


/*1度 int aとaの変数宣言してしまえば

SelectSentense1(a);

のように

SelectSentense1(int a);

と記述しなくても

aの表記だけで変数aを引数に使用することができます。*/


if(b==0)

printf("おにゃんこです\n");

else printf("ひたすらおにゃんこです\n");

return;

}

☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆


==========

自作関数 作製のメリットは


内部に格納した関数やif()構造などに含まれる変数を


一括して管理できるところにあります。


このように自作関数SelectSentense2を作製した場合


SelectSentense2に とりこんだSelectSentense1のif()構造内の変数aと


SelectSentense2のif()構造内の変数b


2つの変数a,bを


SelectSentense2(inta,int b)と一括して管理できるようになるのです。


このようにすれば


inta,int bに数値を代入することも代入した数値を変更することも


とても簡単になるのです。


それは


自作関数に変数を引数にもつ関数を格納する場合だけでなく


自作関数に変数を引数にもつ自作関数を格納する場合も同様なのです。 


===========

アレサ「この 


自作関数 SelectSentense2をつかって


プログラムを構成してみますの。


#include <stdio.h>


void SelectSentense1(int a){


if(a==0)

printf("にゃほほ~い\n");

else printf("わはは~\n");

return;

}


void SelectSentense2(int a,int b){

SelectSentense1(a);


if(b==0)

printf("おにゃんこです\n");

else printf("ひたすらおにゃんこです\n");

return;

}


int main (void){

SelectSentense2(0,1);

return 0;

}


コンパイル結果

にゃほほ~い

ひたすらおにゃんこです


アレサ「このように


自作関数 SelectSentense2を作製することによって


1つの命令文 SelectSentense2(int a,int b)に格納された


int a

int b


SelectSentense2(0,1)と


0と1を代入して


if(a==0) のばあいの

にゃほほ~い

if(b==0) でない場合の

ひたすらおにゃんこです


が表示されるわけ\(^o^)/なんですの


さきほどの自作関数


SelectSentense1

SelectSentense2

をならべてつかった


プログラムのように


SelectSentense1(0);

SelectSentense2(1);


と表記する必要はありませんの。



SelectSentense2(int a,int b)に


SelectSentense2(0,0)とうちこめば


にゃほほ~い

おにゃんこです


SelectSentense2(int a,int b)に


SelectSentense2(1,1)とうちこめば


わはは~

ひたすらおにゃんこです


が表示されます。


簡単に  SelectSentense2(int a,int b)に数値を代入して


コンパイル結果を変更させることができていますの。


自作関数の数が


SelectSentense1

SelectSentense2

SelectSentense3

SelectSentense4

SelectSentense5

SelectSentense6

.

.

.

.

.

と増えれば さらに自作関数を自作関数に


まとめることの効果を実感できるとおもわれます。


ソーラー「にゃお~」


アレサ「にゃお~


おにゃんこはひたすらおにゃんこです


ね、おにゃんこさ~~ん😊」


ソーラー「にゃ~ん」








  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます