自作関数には引数にif文やfor文などの条件式で使用される変数をもつものがあります。 その2 for文の条件式内の変数を引数に持つ場合
ソーラー「よ~し、こぉ~~い~~~
次は
自作関数には引数にif文やfor文などの条件式で使用される変数をもつものがあります。 その2 for文の条件式内の変数を引数に持つ場合
だ。
アレサッ
準備はいいかな。😊」
ソーラーの
きらきらっ きらきらっ
アレサ「っ! 今、夏真っ盛り なのですね。
ここには太陽が訪れている・・・
太陽の季節が・・・
では 私も元気にまいります。
自作関数の引数に for文の条件式内の変数を持つ場合ですか・・・
プログラムを構成すると
#include <stdio.h>
void Forprintf (int x,int y){
int a;
for(a=0;a<x;a++)
printf("%d\n",a);
int b;
for(b=y;b<7;b++)
printf("%d\n",b);
return;}
int main(void){
Forprintf (1,2);
return 0;
}
コンパイル結果
0
2
3
4
5
6
ソーラー「いい感じ~さっぱりわからないじゃないか~
これは いったいどういうことなんだい?」
笑顔が光に照らされ きらめく。
きらきらっ きらきらっ
アレサ「ま、眩しい!
で、では説明にまいりますの
void Forprintf (int x,int y){
int a;
for(a=0;a<x;a++)
printf("%d\n",a);
int b;
for(b=y;b<7;b++)
printf("%d\n",b);
return;}
⇧
この自作関数の定義内の
まず
int a;
for(a=0;a<x;a++)
printf("%d\n",a);
の部分から始めたいと思います。
for文とは
for文につづいて記述された命令文を
(この場合 printf("%d\n",a);を)
何回か繰り返して実行する
というものでした。
そして どのように命令文を繰り返し実行ていくのかを
制御しているのが
for(a=0;a<x;a++)内の変数aというわけです。
そして aが変数として機能するには
aの変数宣言が必要となるので
int a;が
for文の前に記述されているわけです。
int a; aの変数宣言が
for文の前に記述されていなければ
aはコンピュータに変数として認識されないということですの。
そして
for文の条件式(a=0;a<x;a++)より
変数aは
a=0,1,2,3,4,5,・・・x-1までの値を順次とっていくのが
わかります。
そして aの値に対応した命令文が次のように順次実行されていきます。
a=0のとき
printf("%d\n",0);が実行
a=1のとき
printf("%d\n",1);が実行
a=2のとき
printf("%d\n",2);が実行
a=3のとき
printf("%d\n",3);が実行
・
・
・
a=x-1のとき
printf("%d\n",x-1);が実行されていくので
コンパイル結果は
0
1
2
3
.
.
.
x-1
となります。
このプログラムでは自作関数の引数であるxに1が代入されるので
for(a=0;a<x;a++)⇨for(a=0;a<1;a++)となり
a=0のときの
printf("%d\n",0);だけが実行されて
コンパイル結果は
1
となります。
int xに 代入される値によって
int a;
for(a=0;a<x;a++)
printf("%d\n",a);
は制御を受けているわけですの。」
ソーラー「次は僕の番だね。
お次は
int b;
for(b=y;b<7;b++)
printf("%d\n",b);
の部分だね。
先程と同様に
bが変数として機能するには
bの変数宣言が必要なので
int b;が
for文の前に記述されているね。
やっぱり 変数を使用する際は変数宣言はかかせないね。
そして
int b;
for(b=y;b<7;b++)
printf("%d\n",b);
⇧
このfor文内の変数bは
b=y,y+1,y+2,y+3,・・・6までの値を順次とっていくのが
for文の条件式(b=y;b<7;b++)よりわかります。
そのbの値に応じて
b=yのとき
printf("%d\n",y);
b=y+1のとき
printf("%d\n",y+1);
b=y+2のとき
printf("%d\n",y+2);
b=y+3のとき
printf("%d\n",y+3);
・
・
・
b=6のとき
printf("%d\n",6);が実行されるので
コンパイル結果は
y
y+1
y+2
y+3
.
.
.
6
となるんだね😊
ひゃっほ~い
そして
このプログラムでは自作関数の引数であるyに2が代入されるので
for(b=y;b<7;b++)
は
for(b=2;b<7;b++)となります
for(b=2;b<7;b++)なので
bは2,3,4,5,6の値をとることになり
bの値に応じて
b=2のとき
printf("%d\n",2);が実行
b=3のとき
printf("%d\n",3);が実行
b=4のとき
printf("%d\n",4);が実行
b=5のとき
printf("%d\n",5);が実行されて
コンパイル結果は
2
3
4
5
6
となるわけなんだ。
つまり 自作関数の引数であるint yに代入される値によって
このfor文 for(b=y;b<7;b++)は制御を受けてるってわけだね。」
アレサ「以上のことをまとめると
最初に出てきたプログラムは実行されると
⇩
#include <stdio.h>
void Forprintf (int x,int y){
int a;
for(a=0;a<x;a++)
printf("%d\n",a);
int b;
for(b=y;b<7;b++)
printf("%d\n",b);
return;}
int main(void){
Forprintf (1,2);
return 0;
}
コンパイル結果
0
2
3
4
5
6
となるわけですの
Forprintf (1,2);
が実行されただけで
コンパイル結果が
0
2
3
4
5
6
となるのですね。」
ソーラー「
Forprintf (1,2);の代わりに
Forprintf (5,6);が実行されると
コンパイル結果
0
1
2
3
4
6
Forprintf (1,2);の代わりに
Forprintf (3,1);が実行されると
コンパイル結果
0
1
2
1
2
3
4
5
6
となるっと」
アレサ 「ではもうひとつ
では もう一つ
自作関数の引数に for文の条件式内の変数を持つ場合
を お示しいたします。
#include <stdio.h>
void ForForprintf (int x,int y){
int a;
int b;
for(a=0;a<x;a++)for(b=0;b<y;b++)
printf("%d\n",a);
return;
}
int main(void){
ForForprintf (2,3);
return 0;
}
コンパイル結果
0
0
0
1
1
1
このプログラムでは
自作関数の引数 int x, int yに
2,3が代入されています
ですので
for(a=0;a<x;a++)for(b=0;b<y;b++)
⇩
for(a=0;a<2;a++)for(b=0;b<3;b++)
となり
for(a=0;a<2;a++)for(b=0;b<3;b++)の制御をうけながら
printf("%d\n",a);
が実行されていきますの。
まず
for(b=0;b<3;b++)により
bは0,1,2の値を順次とっていくのがわかります。
b=0のとき
printf("%d\n",a);が実行
b=1のとき
printf("%d\n",a);が実行
b=2のとき
printf("%d\n",a);が実行され
コンピュータ内で
printf("%d\n",a);
printf("%d\n",a);
printf("%d\n",a);
が生成されます。
次に
この
printf("%d\n",a);
printf("%d\n",a);
printf("%d\n",a);
に
for(a=0;a<2;a++)が作用していきます。
for(a=0;a<2;a++)より
aは0,1の値を順次とっていくのがわかります。
そして
a=0のとき
printf("%d\n",0);
printf("%d\n",0);
printf("%d\n",0);
が実行され
a=1のときは
printf("%d\n",1);
printf("%d\n",1);
printf("%d\n",1);
が実行されるので
最終的にコンパイル結果は
0
0
0
1
1
1
となるわけです。
いかがですか😊ソーラーさん」
ソーラー「これはfor文 2重入れ子構造だね。
これはでてくると思ったよ。
ForForprintf (5,1);なら
プログラム内の
ForForprintf (2,3);を
ForForprintf (5,1);に
打ち直せば
すぐに結果がわかるよね
そのときの
コンパイル結果は
0
1
2
3
4
となります。
🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳
まず
for(b=0;b<y;b++)にのyに1を代入した
for(b=0;b<1;b++)により
bは0の値だけをとっていくのがわかります。
b=0のとき
printf("%d\n",a);が実行され
コンピュータ内で
printf("%d\n",a);が生成されます。
次に
この
printf("%d\n",a);に
for(a=0;a<x;a++) のxに5を代入した
for(a=0;a<5;a++)が作用していきます。
for(a=0;a<5;a++)より
aは0,1,2,3,4,の値をとるのがわかります。
そして
a=0のとき
printf("%d\n",0);が実行され
a=1のとき
printf("%d\n",1);が実行され
a=2のとき
printf("%d\n",2);が実行され
a=3のとき
printf("%d\n",3);が実行され
a=4のとき
printf("%d\n",4);が実行され
最終的にコンパイル結果は
0
1
2
3
4
となるわけです。
🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳
そして
ForForprintf (2,2);なら
0
0
1
1
となるんだね。
自作関数は 引数の数値の変更が やっぱり容易だね。」
きらっキラキラ☆☆☆
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます