+-みゅお~ん
for文は命令文を繰り返し実行するシステムとなってるの
for文は命令文を繰り返し実行するシステムとなってるの
(for)ふぉ~~~~~~~~~~
#include <stdio.h>
int main(void){
int a;
for(a=1; a<=3; a++){
printf("このprintf出力表示は%d回目です\n",a);
}
return 0;
}
プログラムの実行結果
このprintf出力表示は1回目です
このprintf出力表示は2回目です
このprintf出力表示は3回目です
アレサ 「なんだか プログラムっぽくなってきました。
はじめて見るプログラムです。」
ソーラー「なんだろうか? このプログラムは?
僕もはじめてみる。けど・・・
なんだかこのプログラムには親しみを感じるなあ
個人的な思いだけど、このプログラムには神聖なものを
かんじるよ。
このプログラムを紹介できて幸せだよ。」
アレサ「そう、ですか・・・
これから末永くお世話になりそうなプログラムですね。」
ソーラー 「このプログラムは東方風シューティング
のプログラムの中でもみかけたことがあるよ。
そのほかにも本当いろんなところでみかけてきたんだ・・・
やっとここまできたか・・・
このプログラムは東方風シューティングゲームを
つくりはじめる第1歩、になるとおもうな。」
アレサ 「では、早速このプログラムの使い方を2人で
探っていきましょう。
まず、このプログラムの
for(a=1; a<=3; a++)
ここの部分ですね。
ここで
a=1は初期化式
a<=3は条件式
a++は継続処理方法
というものをあらわしています。」
ソーラー「
a=1は初期化式
a<=3は条件式
a++は継続処理方法
意味がよくわからないね。
でも、多分大丈夫。
音楽、デッサンと同様に
そのうち
『『 自然に 』』
分かるシステム
『『ヘキサ構造体』』
になってるんだよ。このC言語システムは。」
🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞
ここで物事を理解、習得するときは
自分の思考力のみで理解をすすめているように思われますが
『ヘキサ構造体』内のシステムにおいては、そのようなことはなく
論理的なつながり、理解、などは
すべて自然のシステム 『フォーミュラ」
によってつなげられ、助けられ支えられています。
その意味で『『 自然に 』』理解していくということです。
🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞🌞
アレサ 「
for(a=1; a<=3; a++){
printf("このprintf出力表示は%d回目です\n",a);
}
は
この ブロック{ }で囲まれた命令文
printf("このprintf出力表示は%d回目です\n",a);
のaの値を1,2,3と変えながら
3回実行する命令文なのです。
具体的に
for(a=1; a<=3; a++)は
どのようなシステムになっているかというと
最初の初期化式a=1により
まずfor(a=1; a<=3; a++){}のブロック{}内に記述された
命令文
printf("このprintf出力表示は%d回目です\n",a);
のaに1が代入された
printf("このprintf出力表示は%d回目です\n",1);
が実行されます
その結果
このprintf出力表示は1回目です
が表示されます。
次に継続処理方法a++ですが
aに代入される値を1ずつ増加させるはたらきがあります。
継続処理方法a++でaの数値を1つずつ増やすので
a=1の次は
a=2が
変数aに代入されて
次は
printf("このprintf出力表示は%d回目です\n",2);
が実行され
このprintf出力表示は2回目です
が
このprintf出力表示は1回目です
につづけて
コマンドプロンプト画面に表示されることになります。
さらに
継続処理方法a++によりaの数値は1増加され
a=2の次は
a=3が
変数aに代入されて
printf("このprintf出力表示は%d回目です\n",3);
が実行され
このprintf出力表示は3回目です
が
このprintf出力表示は1回目です
このprintf出力表示は2回目です
につづいて
コマンドプロンプト画面に表示されることになります。
次に継続処理方法a++によりaの数値は1増加され
printf("このprintf出力表示は%d回目です\n",4);
が実行されるはずですね。
ここで条件式a<=3がでてきます。
条件式a<=3ですが
条件式a<=3はaの値が3以下のときのみ(条件式a<=3を満たす場合のみ すなわち条件式a<=3が真の値1をもつときのみ)
for{}文のブロック{}内の命令文が実行されるよう制限する働きがあります。
この場合
for{}文のブロック{}内の命令文
printf("このprintf出力表示は%d回目です\n",a);
ですね。
継続処理方法a++によりaの数値は
a=1の状態から1ずつ増加され
変数aの取る値は
a=4に到達するのですが
条件式a<=3により
aの値が3以下のときのみ
for{}文のブロック{}内の命令文が実行されるよう制限されているので
aの値が4をとったときの
printf("このprintf出力表示は%d回目です\n",4);
は実行されないことになります。
ですので
プログラムの実行結果に
このprintf出力表示は1回目です
このprintf出力表示は2回目です
このprintf出力表示は3回目です
に続いて
このprintf出力表示は4回目です
が表示されることはありません。
for文による命令文の繰り返しは
printf("このprintf出力表示は%d回目です\n",1);
printf("このprintf出力表示は%d回目です\n",2);
printf("このprintf出力表示は%d回目です\n",3);
までが実行されて
printf("このprintf出力表示は%d回目です\n",4);
は実行されません。
よって
プログラムの実行結果はコマンドプロンプト画面に
このprintf出力表示は1回目です
このprintf出力表示は2回目です
このprintf出力表示は3回目です
が表示されます。
」
ソーラー「
その際、aの動きをよくみてくださいよ(^^)/🌞」
アレサ「はいっ
a=1 ,1回目の繰り返しのときは
このprintf出力表示は1回目です
と実行表示され
a=2, 2回目の繰り返しのときは
このprintf出力表示は2回目です
と実行表示され
a=3,3回目の繰り返しのときは
このprintf出力表示は3回目です
と実行表示されていますね。。
このように
a=1と,1回目の繰り返しは対応しており
同様に
a=2と, 2回目の繰り返しは対応しており
同様に
a=3と,3回目の繰り返しは対応しています。
aの値に応じて
printf命令文の実行結果が変化しているところが
このfor文をつくった技術者さんの魂の萌えどころです。
もうちょっと詳しくみていきますと
a=2に注目すると
a=2と, 2回目の繰り返しにおいては
その中にふくまれる命令文
printf("このprintf出力表示は%d回目です\n",a);
の変数aも2に変化しています。
よって
printf("このprintf出力表示は%d回目です\n",2);
の命令により
このprintf出力表示は2回目です
と表示されますね。
つまり、
『a=n回目の命令を下すときは
printf命令文のなかの第2引数に記述されている
変数aの値もnに変化します。』
😊
チョコっと解説
printf("このprintf出力表示は%d回目です\n",2);
において
"このprintf出力表示は%d回目です\n"の部分が第1引数
2の部分が第2引数
となります
😊
ですので、
次のプログラムのようにprintf命令文のなかに第2引数が記述されていない場合
つまり
変数aが記述されていない場合は
同じ文章が
1回目も2回目も3回目もあらわれてきます。
#include <stdio.h>
int main(void){
int a;
for(a=1; a<=3; a++){
printf("このprintfはprintfちゃんです\n");
}
return 0;
}
プログラムの実行結果
このprintfはprintfちゃんです
このprintfはprintfちゃんです
このprintfはprintfちゃんです
for(a=1; a<=3; a++)と設定されている場合
printf命令文のなかに変数aが記述されているいないにかかわらず
printf命令文が
3回実行されています
」
ソーラー 「なんか for文は とってもわかりやすい命令文ですね。
では、今、命令文を何回目繰り返しているのかをprintf出力表示したいときは
前のプログラム
printf("このprintf出力表示は%d回目です\n",a);
のように
そのprintf命令文のなかの第2引数に
変数aを記述しておけばいいということになるのかな・・
当然だけど
変数aを記述しておけばいいといっても
次の命令文
👇
int a;
for(a=1; a<=3; a++){
printf("このprintf出力表示はa回目です\n");
}
のように
👆
printf関数のなかの第1引数の部分" "内に変数aをいれてしまっては
このprintf出力表示はa回目です
このprintf出力表示はa回目です
このprintf出力表示はa回目です
と
このprintf出力表示はa回目ですの文章が
3回表示されるだけなんだね。
」
アレサ 「そうなんですの。ですから
aの値を変えながら命令文を実行したいときは
変数aを
printf("%d\n",a);
のように
printf関数の第2引数に記述し
さらに
printf関数の第1引数の文字列の中に%d出力変換指定子を記述して
%d出力変換指定子の部分に変数aの値を
取り込むようにしましょう。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます