「C言語」の「分岐・繰り返し処理」の作り方を学ぼう!
今回は、プログラミングでは「お馴染み」の「分岐」と「繰り返し」について学んでいきたいと思います。
「お馴染み」という言葉を使えるほど、プログラムに詳しいわけでは無いのですが、他のプログラミング言語を勉強していても必ず出てくるので、「ハズせない」内容だと思っています。
そもそも「ハズしていい」っていう内容は無いのですが・・・
C言語は学ぶ内容も多いので、「学べるところ」から学んでいきたいと思います。
「分岐処理」を身に付けよう!
「分岐」とはある「条件」を元に処理の実行内容を分けることができる機能です。
「分岐条件」には、「ある変数がある値以上」であるとか、「ある変数がある文字列と一致している」といった条件を指定します。
指定した「条件を満たしている場合」の処理と「条件を満たしていない場合」の処理を書いておくことで、条件に応じて処理の内容を分けることができます。
「if文」の書き方
if文は、
if( 条件 ){ 条件を満たしている場合の処理 } else { 条件を満たしていない場合の処理 }
というように書いていきます。
if文のフォーマットがあって、そこに「条件」と「処理」を当てはめていく感じですね。
他の言語でもだいたい似たような書き方になっています。
「C言語」のプログラムだと、
#include <stdio.h> int main(void) { int i = 3; if ( i == 3 ){ printf("「i」の変数の中身は「3」です。"); } else { printf("「i」の変数の中身は「3」ではありません。"); } return 0; }
みたいな感じになります。
「i」の変数に「3」を入れて、if文で判定をすると、「条件」のところには「i == 3」とあるので、「iの変数が3かどうか?」を判定しています。
「iの変数が3」であれば、
「i」の変数の中身は「3」です。
と表示され、「iの変数が3」でなければ、
「i」の変数の中身は「3」ではありません。
と表示されます。
ここまではそんなに複雑な内容では無いので、何回か書いて実行することで、自分でもすぐに「if文」が書けるようになりました。
「if文」は単体でも作ることができるので、
#include <stdio.h> int main(void) { int i = 3; if ( i == 3 ){ printf("「i」の変数の中身は「3」です。"); } return 0; }
と書くこともできるのですが、「i」の変数が「3」以外の場合は画面に何も表示されません。
他にもたくさん条件を増やしたい場合、例えば、「iの変数」が「3」と「5」と「7」の時に文字を表示したい場合は、「else if」という書き方があります。
#include <stdio.h> int main(void) { int i = 5; if ( i == 3 ){ printf("「i」の変数の中身は「3」です。"); } else if ( i == 5 ){ printf("「i」の変数の中身は「5」です。"); } else if ( i == 7 ){ printf("「i」の変数の中身は「7」です。"); } else { printf("「i」の変数の中身は「3」「5」「7」以外の値です。"); } return 0; }
このように書くと、「i」の変数は「5」となっているため、
「i」の変数の中身は「5」です。
と表示されます。
「3」「5」「7」以外の値が変数に入っていた場合は、
「i」の変数の中身は「3」「5」「7」以外の値です。
と表示されます。
一つ気を付けないといけないところは、「上から順に条件を満たしているかを確認している」ため、どれかの条件に一致すると、「一致した条件の下にある条件は判定されない」んですね。
いろいろな「if文」を書いてどんどん「if」を使いこなせるようになっていきたいな~
「繰り返し処理」を作れるようになろう!
「繰り返し条件」を満たしている間は、指定した処理を繰り返し、条件を満たさなくなったら、繰り返し処理を停止するような処理を作ることができるのが「繰り返し構文」です。
この仕組みも他のプログラム言語で用意されているので、他のプログラミング言語を学んだことがある人なら知っている人もいるんでは無いでしょうか。
「C言語」でももちろん「for文」を書くことで繰り返し処理を行うことができます。
「for文」の書き方
「for文」は一見すると見た目が複雑に感じられがちですが、1行の中にさまざまな「式・条件」が入っているため、そのように見えますが、1つ1つを見ていくとそれぞれの式が関連しあって動いている様子を見ることができます。
書き方は、
for ( カウンタ変数; 条件; カウンタ変数を増減する式){ //繰り返し行う処理を書く }
プログラムにすると、
#include <stdio.h> int main(void) { for ( int i = 0; i < 5; i++ ){ printf("iの値は「%d」です。\n", i); } return 0; }
のようになります。
このプログラムを実行すると、
iの値は「0」です。 iの値は「1」です。 iの値は「2」です。 iの値は「3」です。 iの値は「4」です。
のように表示されます。
「i」の変数の値は「1」ずつ変化していますが、
#include <stdio.h> int main(void) { for ( int i = 0; i < 5; i=i+2 ){ printf("iの値は「%d」です。\n", i); } return 0; }
のように書くと、「i」の変数を「2」ずつ変化させることができます。
このプログラムを実行すると、
iの値は「0」です。 iの値は「2」です。 iの値は「4」です。
のように表示されます。
「分岐処理」と「繰り返し」処理を一緒に使ってみる
「C言語」のいろいろなプログラムについて調べていると、「分岐処理と繰り返し処理」を一緒に使っている例がたくさんありました。
例えば、
#include <stdio.h> int main(void) { for ( int i = 0; i < 100; i++ ){ if ( i%10 == 0){ printf("iの値は「%d」です。\n", i); } } return 0; }
のように、「for文」の中に「if文」を書くこともできます。
このプログラムを実行すると、
iの値は「0」です。 iの値は「10」です。 iの値は「20」です。 iの値は「30」です。 iの値は「40」です。 iの値は「50」です。 iの値は「60」です。 iの値は「70」です。 iの値は「80」です。 iの値は「90」です。
のように表示されます。
他にも、
#include <stdio.h> int main(void) { for ( int i = 0; i < 30; i++ ){ if ( i%10 == 0 ){ for ( int j = 0; j <= 5; j++ ){ printf("i+jの値は「%d」です。\n", (i+j)); } } } return 0; }
のように「for文」の中に「if文」を書いて、さらに「for文」を書くこともできます。
実行結果は、
「i+j」の値は「0」です。 「i+j」の値は「1」です。 「i+j」の値は「2」です。 「i+j」の値は「3」です。 「i+j」の値は「4」です。 「i+j」の値は「5」です。 「i+j」の値は「10」です。 「i+j」の値は「11」です。 「i+j」の値は「12」です。 「i+j」の値は「13」です。 「i+j」の値は「14」です。 「i+j」の値は「15」です。 「i+j」の値は「20」です。 「i+j」の値は「21」です。 「i+j」の値は「22」です。 「i+j」の値は「23」です。 「i+j」の値は「24」です。 「i+j」の値は「25」です。
となります。
ただし・・・あまりにたくさん階層ができてしまうと、プログラムの内容を理解するのが困難になってしまいます(^_^;)
なので、ほどほどに使うのが、プログラムの理解をしやすくするためにも大切なんですね。
今後もいろいろなプログラムの書き方を勉強していきたいと思います。