自作関数には引数に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も
自作関数内の引数に指定できています。」
ソーラー「なんか 自作関数は便利だね。
この いまの自作関数IF
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文の条件式だったりすることによって
多種多様な
自作関数がつくられるわけなんだね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます