苦しんで覚えるC言語 7.3 複数の処理の実行 P144 – P146 P152 – P154

7.3 複数の処理の実行

if文のブロック文

既にif文の書き方として、{ } で処理を囲んで書くことを解説しましたが、改めて { } をブロック文と言います。

1行だけの処理(以下の赤字箇所)しか書かない場合は、参考書の様に { } を省略して記載することが可能です。

 if(score > 100) score = 100;

色んな書き方のパターンを初学時に覚えるのは混乱のもとになるので、if文については処理の行数に関わらず、 { } を記載する。と覚えておいても良いと思います。

8.1 2つの場合分け

偽の場合の処理

今まではif文で判定をした後、真の場合のみ処理されるプログラムを説明してきました。
偽の場合にも処理をさせたい場合は、以下の様に記載をします。

 if(条件式)
 {
  真の場合の処理
 }else
 {
  偽の場合の処理
 }

{ } の後に else と記載をして再度 { } で処理を括ります。

参考書の参考コードをコメントしてみます。

#include <stdio.h>

int main(void)
{
    int suuti;

    scanf("%d",&suuti);

    if(suuti == 10)
    {
        printf("入力値は10です。\n");
    }else
    {
        printf("入力値は10ではありません。\n");
    }

    return 0;
}

この章の本質部から解説しますと、if文はsuutiの変数に入った値が10かどうか?を判定しています。

10の場合は最初の{ }の中に書かれた処理が実行されます。
つまり、printf(“入力値は10です。\n”); ですね。

10以外の場合は、elseの後にある{ }の中に書かれた処理が実行されます。
つまり、printf(“入力値は10ではありません。\n”); ですね。

これまで当たり前の様に書かれてきた printf について触れておきたいと思います。
これは関数になります。
この関数は標準関数とか標準ライブラリと呼ばれる関数群の一つになります。

標準ライブラリとは、設計者がよく使うであろう処理を予め言語の方で用意して使える状態になった関数のことです。

printfは、表示させたい内容とフォーマットを指定することでPC画面へ出力してくれる関数になります。

上記のサンプルコードには、scanf というのも出てきます。
これは、入力された情報を指定した変数に格納してくれる関数です。
キーボードなどの入力デバイスから、送られてきたデータを格納してくれるので、
一般的に、キーボードの押下ボタンの値コードを取得して、コードの内容に応じて処理をするようなテストプログラムを作ったりすることが多いです。

参考書のP442~標準ライブラリで用意される関数が掲載されていますので、またお時間のある時に眺めてみてください。

で、、、この標準ライブラリを使用するにあたり、上記のサンプルコードの先頭行に書かれている#include <stdio.h> が必要になります。

今後、この記載は標準ライブラリに関わらず使用しますので周知しておいてください。

まず、#include という部分ですが、この文言の後に続く外部ファイルの内容を、プログラムが書かれているファイル内に取り込むための命令になります。

今回のサンプルコードで解説すると、main関数内で、printfscanf が使われており、
この2つの関数の処理内容が、stdio.h というファイルの中に書かれているので、
予め処理の内容を取り込んでおいて(=#include)くださいね。という意味なります。

printf、scanf関数は、stdio.hの中に処理があるのですが、別の標準関数はstdio.hではないファイルに書かれているものもあるので、使いたい関数の処理が書かれた外部ファイルがどのファイルなのかは、使用する際に調べて記載する必要があります。

stdio.hの < > ですが、標準ライブラリに関連する外部ファイルは、PC内の指定されたディレクトリに保存されています。
その為、その保存先の参照パスを指定する記号となります。
つまり、○○フォルダー内にstdio.hというファイルがあるから見てきて。といった意味になります。

他、“stdio.h” といったように ” ” で囲むこともあります。
これも外部ファイルが置いてあるパスを指すのですが、プログラムコードを記載しているファイル(=ソースファイル)が保存されているディレクトリを参照するように指定する記号となります。
つまり、ソースファイルと同じ保存先に外部ファイルがあると思うから見てきて。といった意味になります。

簡単な例を挙げますと、etoフォルダーにmain関数の処理を書いたmain.cというソースファイルがあるとします。
同じフォルダー内にあるsample.hという外部ファイルに書かれた処理を、main.cで使っている場合、#include “sample.h” といった感じでmain.dのファイルの先頭に記載をするのがルールになります。

 etoフォルダ ━ main.c
       ┗ sample.h

main.cファイルの中でsample.hに書かれた処理を使用していない場合は、#include “sample.h”の記述は無くて良いです。

この辺りは、必要時に記載が漏れているとコンパイラがエラーで警告してきますので、漏れることはないと思います。