どの言語も基本的な制御のための命令があります。
C言語に限らず、(構造化)プログラムは、次の3つの基本的な形式から成り立っています。
・順次
最も基本的な構造です。
これまでに記載したサンプルもこの構造で書かれています。
順次とは、プログラムが書かれた順番に処理を行っていくということです。
つまり、上から順に処理が進んでいくという構造です。
・分岐
その名の通り、プログラムを分岐させる構造です。
色々な命令がありますが、基本的には条件に応じて、実行するプログラムを変更するという構造です。
・反復
これも名前の通り、繰り返して実行するという構造です。
ただし、単純に同じことを繰り返すのではなく、工夫次第で様々なことが出来るようになります。
順次構造については、説明するまでも無く、これまで行ってきた構造ですので、分岐構造から説明を始めます。
分岐とは、(前述しましたが)条件に応じて、実行するプログラムを変更する構造です。
この分岐構造をしっかりと理解すれば、皆さんがC言語で作れるプログラムが飛躍的に拡がります。
(その分、工夫のしどころも多くなってきますが・・・)
代表的な制御文は「if」文です。
「if」は、英語での意味の通り、「もしも」という意味です。
制御文には「文法」の理解も必要ですので、まずは「文法」から説明します。
・if文の文法
if (条件) { 条件が成立している時の処理 }
まずは、簡単な形から始めます。
「もしも」括弧内の「条件」が「成立」していれば、中括弧「{}」内の「処理」を行う、という形です。
抽象的なので、具体的なプログラムを書きます。
<sample program 007-01>
#include <stdio.h> int main(void) { int data = 20; if (data < 50) { printf("dataは50より小さいです。\n"); } return 0; } |
<実行結果>
dataは50より小さいです。 続行するには何かキーを押してください・・・
変数「data」の中身は「20」です。
if文の部分は、
もしも、dataの中身が50未満であれば、「dataは50より小さいです。」という文字列を表示する
という内容になっています。
当然、変数「data」の中身は50未満ですから、きちんとメッセージが表示されます。
では、条件が成立しなければどうなるのでしょうか?
<sample program 007-02>
#include <stdio.h> int main(void) { int data = 60; if (data < 50) { printf("dataは50より小さいです。\n"); } return 0; } |
<実行結果>
続行するには何かキーを押してください・・・
実行結果には、何も表示されていません。
つまり、「条件」が「成立していなければ」、何もしないのです。
「コンピュータは本当に便利なのか?」にも書きましたが、コンピュータは指示されていないことは実行しません。
逆に、指示があれば間違っていても実行します。
こうやって、「条件」が「成立している時」と「成立していない時」で実行するプログラムを変更しているのです。
では、色々と具体例を書く前に「条件」について説明します。
上の例では、変数「data」の中身が「50」未満であれば、という条件を設定しています。
他には、どのような条件の設定が可能なのでしょうか?
「未満」が使えるのであれば、「以上」とか「以下」とか「等しい」とか「等しくない」とかも使えそうですよね。
ここで、どういったものが使えるのかを表にまとめてみます。
記号(演算子) | 関係 | 説明 |
---|---|---|
< | a < b | aはb未満 |
> | a > b | aはbより大きい |
<= | a <= b | aはb以下 |
>= | a >= b | aはb以上 |
== | a == b | aはbと等しい |
!= | a != b | aはbと等しくない |
基本的には、この6つの演算子を使います。
これらの「条件」が、「成立している」か「成立していない」かで実行するプログラムを変化させるのです。
ここで、注目して欲しいことがいくつかあります。
まず、「以上」や「以下」ですが、「>=(以上)」、「<=(以下)」という演算子になります。
「=>」や「=<」では、エラーになります。(決まりごとですから、覚えてください)
また、「等しい」は「=(イコール)」ではありません。
これは、前に書きましたが、「=」演算子は「代入する」という意味しかありません。
「等しい」は「==」演算子を使います。
これは、初心者や別の言語からC言語に移って来た方がよく間違えることです。(回避方法はありますが、慣れてくると間違えなくなります)
「等しくない」は「!=(ノットイコール)」と書きます。
これも言語によって書き方は色々ですが、C言語では、「!=」です。
では、サンプルを書きましょう。
<sample program 007-03>
#include <stdio.h> int main(void) { int data = 60; if (data > 50) { printf("dataは50より大きいです。\n"); } return 0; } |
<実行結果>
dataは50より大きいです。 続行するには何かキーを押してください・・・
<sample program 007-04>
#include <stdio.h> int main(void) { int data = 50; if (data <= 50) { printf("dataは50より以下です。\n"); } return 0; } |
<実行結果>
dataは50より以下です。 続行するには何かキーを押してください・・・
<sample program 007-05>
#include <stdio.h> int main(void) { int data = 50; if (data >= 50) { printf("dataは50以上です。\n"); } return 0; } |
<実行結果>
dataは50以上です。 続行するには何かキーを押してください・・・
<sample program 007-06>
#include <stdio.h> int main(void) { int data = 50; if (data == 50) { printf("dataは50です。\n"); } return 0; } |
<実行結果>
dataは50です。 続行するには何かキーを押してください・・・
<sample program 007-07>
#include <stdio.h> int main(void) { int data = 40; if (data != 50) { printf("dataは50ではありません。\n"); } return 0; } |
<実行結果>
dataは50ではありません。 続行するには何かキーを押してください・・・
とりあえず、「成立している」ようにプログラムを書いてみましたが、「成立していない」時は全部何も表示されません。
ここで、掲載したサンプルは、単純に「使い方」を書いただけです。
次は、これらを使って、「意味のある?」プログラムを書いていきます。