+-みゅお~ん

for文は命令文を繰り返し実行するシステムとなってるの  0.1




        (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以下のときのみ


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命令文のなかに第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文は とってもわかりやすい命令文ですね。


では、今、命令文を何回目繰り返しているのかをprintf表示したいときは


前のプログラム


printf("このprintf出力表示は%d回目です\n",a);


のように


そのprintf命令文のなかの第2引数に


変数aを記述しておけばいいということになるのかな・・


当然だけど


変数aを記述しておけばいいといっても


次の命令文


int a;

for(a=1; a<=3; a++){

printf("このprintf出力表示はa回目です\n");

}

のように


printf関数のなかの"   "に変数aをいれてしまっては



このprintf出力表示はa回目です

このprintf出力表示はa回目です

このprintf出力表示はa回目です



このprintf出力表示はa回目ですの文章が

3回表示されるだけですね。


アレサ 「そうなんですの。ですから


aの値を変えながら命令文を実行したいときは


変数aを


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


のように


printf関数の第2引数に記述し


さらに


printf関数の第1引数の文字列の中の%d出力変換指定子を記述して


%d出力変換指定子の部分に変数aの値を


取り込むようにしましょう。」







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

作者を応援しよう!

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

応援したユーザー

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