第4講 if文(もしもボックスの世界)
第1話 if文とは?
皆さん、英語で仮定法を学びましたよね。
If I were you, I would not marry such a man. (私があなたなら、あんな男と結婚しないのに)
(https://studysapuri.jp/contents/high/article/subject/english00013.htmlより引用)
つまり、
もしPだったらAだ。
が仮定法です。
テーマ名のもしもボックスはドラえもんに出てくるもしもボックスです。
電話ボックスのようなボックスで電話に向かって、
もし声の世界ならというと、
声のない世界になり、吹き出しになります。
のび太たちは、ジャイアンの度音痴な歌が聴きたくなくて、
もしもボックスに願いを伝えたのですが、
吹き出しになっても、
ジャイアンの歌はやっぱりとてもとても不快だったという落ちでしたね。
英語の仮定法やもしもボックスに対応するものが、
プログラム言語には必ず用意されています。
それをif文といいます。
前講の繰り返し処理とこのif文があれば、
どのような高度なプログラムも組めることが数学的に証明されています。
繰り返し処理は、for文以外にいくつかありますが、
他の繰り返し処理もすべてfor文で代用できますので、
for文とif文があれば、
どんなに高度なプログラムでも組めることが証明されていると言いかえても良いのです。
for文とif文の2つがそろえば、
世界No.1の囲碁棋士や将棋の名人を破るような高度なプログラムも組めるのです。
AIは、ニューラルネットワーク(シナプスから構成される脳のネットワーク)を仮想的にコンピュータに構築して、
深層学習をさせて高度な能力を身につけたわけですが、
それも結局はfor文とif文の組み合わせです。
完全自動運転車も作曲をするソフトも小説を書くAIも、
for文とif文さえあれば開発できるのです。
if文の基本的な形は、
if(条件式)A;
です。条件式が満たされるなら命令文Aを実行しなさいです。
例文を書けば、
if(goukeiten>=300)printf("合格!\n");
goukeiten>=300が条件式です。
goukeiten(合計点)が300以上なら、
コンソール画面に『合格!』と表示させて改行させなさいということになります。
何故、if文によってプログラミングの世界が広がるのでしょうか。
プログラムというのは、文の順番に上から下に直線的に流れていきます。
つまり、A→B→C→・・・と1次元の進み方をします。
これをもし性格診断のように分岐させることができれば、2次元の進み方をすることができます。
つまり、直線の世界から平面の世界へと広がるわけです。
この分岐させるための命令文がif文です。
if文を流れ図で表すと
となります。
if(条件式)A;
は命令文がAしかありませんが、
命令文を複数入れることができます。
複数入れるときは、
if(条件式){
A;
B;
C;
・・・
}
とします。
このときは、条件式が正しい(条件式が真であるといいます。)ときは、
複数の命令A,B,C,・・・が実行されることになります。
また、if文には
if(条件式)A; else B;
(A;の後に半角スペースを入れないとエラーします。
また、elseの後にも半角スペースが必要です。
あるいは
if(条件式){A;}else{B;}
でも大丈夫です。
)
というものもあります。
if(条件式)A; のときは条件文が正しくないときは何もしませんでしたが、
今回は、条件文が正しくないときは、命令Bが実行されます。
ですから、
if(条件式)A; else B;
は条件式が真であるときは命令Aが実行され、
偽であるときは命令Bが実行されるのです。
if〜else文の流れ図は、
ということになります。
if〜else文のときも、命令を複数入れることができます。
複数入れるときは、
if(条件式){
A;
B;
C;
・・・
}
else{
P;
Q;
R;
・・・
}
となります。
このときは、条件式が真であるとき命令A,B,C,・・・が、
偽であるときは、命令P,Q,R,・・・が実行されます。
それでは、国語・社会・数学・理科・英語の得点をキーボードから入力して、
その合計点が300以上なら『合格!』未満なら『不合格!』と表示させるプログラムを作って下さい。
つまり、以下のアプリです。
↓
キーボードから国語の得点を入力してエンター
↓
キーボードから社会の得点を入力してエンター
↓
キーボードから数学の得点を入力してエンター
↓
キーボードから理科の得点を入力してエンター
↓
キーボードから英語の得点を入力してエンター
前半は調子よかったのに、後半に失速して逆転不合格!
今までの知識の範囲内で組めますから、
30分は奮闘してどうしてもだめだったときのみに、
次話をクリックしましょう。