複数の処理の実行
複数の処理の必要性
突然ですが、テストの点数を入力するプログラムを作ってみたいと思います。
これ自体は、今までやってきたことで簡単に実現できますが、
今回はさらに、100点より大きい点数を間違えて入力した場合、
自動的に100点に修正して記憶するという機能をつけてみます。
このプログラム自体は、そんなに難しいことではありません。
次のプログラムは、先ほどの処理を実現する例です。
このプログラムを実行させて100以下を入力した場合の結果は、次の通りになります。
このプログラムを実行させて100より大きい入力をした場合の結果は、次の通りになります。
ここで、さらにもう1つ、入力された点数が100点より大きい場合に、
「入力が 100 より大きいので修正します。」
と言うメッセージを表示するように機能を追加する場合、どうすれば良いでしょうか。
既存のif文のすぐ後ろに、printf文をつなげてもうまくいきません。
if文では、if文のすぐ次にある文しか、判断結果に使わないので、
if文のすぐ後ろに書いたprintf文は、普通の文として、毎回実行されてしまいます。
1つの方法は、if文を2つ使うことです。次のように、
if文を2つ使えば、メッセージを表示させることが可能になります。
これ自体は、今までやってきたことで簡単に実現できますが、
今回はさらに、100点より大きい点数を間違えて入力した場合、
自動的に100点に修正して記憶するという機能をつけてみます。
このプログラム自体は、そんなに難しいことではありません。
次のプログラムは、先ほどの処理を実現する例です。
ソースコード
#include <stdio.h>
int main(void)
{
int score;
printf("点数を入力して下さい:");
scanf("%d", &score);
if (score > 100) score = 100;
printf("点数は %d 点です。\n", score);
return 0;
}
このプログラムを実行させて100以下を入力した場合の結果は、次の通りになります。
実行結果
点数を入力してください:58 入力したデータ
点数は 58 点です。
点数は 58 点です。
このプログラムを実行させて100より大きい入力をした場合の結果は、次の通りになります。
実行結果
点数を入力してください:135 入力したデータ
点数は 100 点です。
点数は 100 点です。
ここで、さらにもう1つ、入力された点数が100点より大きい場合に、
「入力が 100 より大きいので修正します。」
と言うメッセージを表示するように機能を追加する場合、どうすれば良いでしょうか。
既存のif文のすぐ後ろに、printf文をつなげてもうまくいきません。
if文では、if文のすぐ次にある文しか、判断結果に使わないので、
if文のすぐ後ろに書いたprintf文は、普通の文として、毎回実行されてしまいます。
1つの方法は、if文を2つ使うことです。次のように、
ソースコード
if (score > 100) printf("入力が 100 より大きいので修正します。\n");
if (score > 100) score = 100;
if文を2つ使えば、メッセージを表示させることが可能になります。
ブロック文
前節のようにすれば、1つの条件に対して、複数の文を実行させることができますが、
同じ条件で何回も比較を行うのは、どう考えてもムダでしかありません。
1つのif文で、複数の文を実行できる方法があれば、はるかにスマートになります。
C言語には、複数の文を、ひとまとめにする機能が存在しています。
それが、ブロック文(複文)と呼ばれる機能です。
{} で囲むことで、複数の文をまとめる方法。
このブロック文を使うと、1つの文しか置けない場所に複数の文を置くことかできます。
また、ブロック文の中の文は、右に少しずらして書くことが慣習となっています。
始めにインデントを説明しましたが、忘れていた人は思い出してください。
ブロック文を使えば、if文の結果で、複数の処理を実行させることができます。
次のプログラムは、ブロック文を使ってメッセージ表示機能を追加します。
このプログラムを実行させて100以下を入力した場合の結果は、次の通りになります。
このプログラムを実行させて100より大きい入力をした場合の結果は、次の通りになります。
同じ条件で何回も比較を行うのは、どう考えてもムダでしかありません。
1つのif文で、複数の文を実行できる方法があれば、はるかにスマートになります。
C言語には、複数の文を、ひとまとめにする機能が存在しています。
それが、ブロック文(複文)と呼ばれる機能です。
キーワード
【ブロック文】
{} で囲むことで、複数の文をまとめる方法。
このブロック文を使うと、1つの文しか置けない場所に複数の文を置くことかできます。
また、ブロック文の中の文は、右に少しずらして書くことが慣習となっています。
始めにインデントを説明しましたが、忘れていた人は思い出してください。
ブロック文を使えば、if文の結果で、複数の処理を実行させることができます。
次のプログラムは、ブロック文を使ってメッセージ表示機能を追加します。
ソースコード
#include <stdio.h>
int main(void)
{
int score;
printf("点数を入力して下さい:");
scanf("%d", &score);
if (score > 100)
{
printf("入力が 100 より大きいので修正します。\n");
score = 100;
}
printf("点数は %d 点です。\n", score);
return 0;
}
このプログラムを実行させて100以下を入力した場合の結果は、次の通りになります。
実行結果
点数を入力してください:58 入力したデータ
点数は 58 点です。
点数は 58 点です。
このプログラムを実行させて100より大きい入力をした場合の結果は、次の通りになります。
実行結果
点数を入力してください:135 入力したデータ
入力が 100 より大きいので修正します。
点数は 100 点です。
入力が 100 より大きいので修正します。
点数は 100 点です。
本サイトについて
苦しんで覚えるC言語(苦C)はC言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。




