自作関数には引数にif文やfor文などの条件式で使用される変数をもつものがあります。 その1 if文の条件式内の変数を引数に持つ場合 0.1

ソーラー「ねえ、ねえ、アレサ


以下のプログラムのように


printfのような関数の内部で使用される変数x,yのようなものだけが


自作関数の引数になるのかな?


#include <stdio.h>


void Twoprintf (int x,int y){

printf("%d\n",x);

printf("%d\n",y);

return;}


int main(void){

Twoprintf(1,2);

return 0;

}


コンパイル結果

1

2


ソーラー「それだと かなり単純だよね😊」


アレサ

「はいっ そうですね。


他にも


自作関数には 引数として


if文やfor文などの条件式で使用される変数をもつものがあります。 


次のプログラムをご覧ください


#include <stdio.h>


void IFprintf (int x,int y){

if(x>0)printf("%d\n",y);

return;}


int main(void){

IFprintf(1,2);

return 0;

}


コンパイル結果

2


ソーラー「さりげに if文の条件式で使われる変数xまでもが


自作関数の引数に な・っ・て・い・る \(^o^)/」


アレサ「このプログラムでは


自作関数IFprintf が


void IFprintf (int x,int y){

if(x>0)printf("%d\n",y);

return;}


上記のように定義され


if文内で使用されるxと

printf文内で使用されるyが


自作関数IFprintfの引数となっています。


前にも お話しましたが


変数x,yを使用できる状態にするには


変数宣言 int x ,int yが必要なので


自作関数 IFprintf (int x,int y)の()内でint x ,int yと


変数宣言が表記されています。


このことは xが if文内で使用される変数であったとしても


かわりは ありませんの(´▽`) ソーラーさん」


ソーラー 「なるほどねえ 寿司食いねえ。


おらが朝とってきた サンマだよ。」


アレサ「ぱくっ オイシイですの」


ソーラー 「じゃあ オラもif文をつかった自作関数をつくってなあ


コンパイルしてみるべ」


ソーラー 「どうだいべ


つくってみただあ


自作関数IF2printfだべぇ


おらぁ


セカンドんだあぁ


#include <stdio.h>


void IF2printf (int x,int y,int z){

if(x>0)printf("%d\n",y);

if(y>0) printf("%d\n",z);

return;

}


int main(void){

IF2printf(5,6,7);

return 0;

}

コンパイル結果

6

7


どうだべ アンれぇスアア


アレサ


「はいっ if文の条件式内で使われている変数x,yを


自作関数内の引数に指定できています。」


ソーラー 「そんだらんなら つぐに もうひとつ


つくってみるだあ


IF3んだあああああああああ


どんだあ なあ 


アンレさ 


アンれサァアア


#include <stdio.h>


void IF3printf (int x,int y,int z){

if(x>0)

if(y>0)

if(z>0) printf("%d\n",z);

return;

}


int main(void){

IF3printf(5,6,7);

return 0;

}

コンパイル結果

7


ソーラー

「これは


x>0 ならif(x>0)につづく命令文が実行され

y>0 ならif(y>0) つづく命令文が実行され

z>0 ならif(z>0) つづく命令文が実行されるという


if文3重入れ子構造になっています。」


アレサ「これらif文の条件式内で使われている変数x,y,zも


自作関数内の引数に指定できています。」


ソーラー「なんか 自作関数は便利だね。


この いまの自作関数IF3スリーprintfの例でいうなら


IF3printf(5,6,7);から

IF3printf(8,100,12);

IF3printf(22,88,110);


などのように

簡単に

if文内の条件式の変数部分の数値を変更できるんだもんね~(*^^*)~


自作関数をつかわなければ


#include <stdio.h>


int main(void) {


int x = 8;

int y = 100;

int z = 12;

if (x>0)

if (y>0)

if (z>0) printf("%d\n", z);


return 0;

}


#include <stdio.h>


int main(void) {


int x = 22;

int y = 88;

int z = 110;

if (x>0)

if (y>0)

if (z>0) printf("%d\n", z);


return 0;

}


のように直接数値を


変数x

変数y

変数z


に代入しなければいけないからね


自作関数IF3printfを作製していれば


IF3printf (int x,int y,int z)


int x

int y

int z

に数値を代入すればいいからね


んん~~


この 自作関数のIF3printf(5,6,7); タイプの表現方法は便利だね。」


アレサ「そうなのです。


自作関数を作製するのは


 ”記述の長いプログラムを何度も書かなくて済むために作られる”


という理由のほかに


このように 


  ”自作関数内の変数に代入される数値を簡単に変更できる”


 というのが理由としてあります。」


ソーラー 「なるほどねえ 自作関数いいね。


ところで


もしかしたら


if文内で使用される変数であっても 

for文で使用される変数であっても

switch文で使用される変数であっても

配列内で使用される変数であっても

構造体で使用される変数であっても


変数だったらなんでも自作関数の引数になるんじゃないかな?」


アレサ「はいっ 変数であれば 自作関数の引数にすることができますよ。


逆にいうと


自作関数の()内に7個の引数があるならば


自作関数内には 数値を 


変えることのできる箇所 つまり変数の部分が7か所あることになりますの。」


ソーラー「その箇所が if文の条件式だったり、


for文の条件式だったりすることによって


多種多様な


自作関数がつくられるわけなんだね。」






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

作者を応援しよう!

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

応援したユーザー

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