ここまでC言語における変数の操作方法を大量に学んできました。
C言語には3つの柱があります。
85


・関数 ・変数 ・文法 です。

あなたは今、変数の柱を建てることに成功しました。

関数の柱は実はプログラマが生涯かけて建てていくことになるものです。
あなたはまだprintf関数とscanf関数しか操作しりませんが、Cの標準ライブラリには様々な関数があります。C言語 標準ライブラリ関数一覧(wikipedia)
sqrt関数も触れはしましたけど……

#include <stdio.h>にはprintf関数とscanf関数が入っているとお話しましたが、それ以外にも様々な関数が格納されています。これらの関数の操作方法を全て習得するのは大変困難でしょう。
ですから、必要になったらその都度練習して下さい。

例えば文字列を連結させたくなり、strcat関数を使いたくなったら、string.hをインクルードし、
strcat 使い方 などで調べてみて下さい。きっと分かりやすく解説しているHPがたくさん出てくるでしょう。
そうやって必要に応じて調べていく内に、操作できる関数群も増え、より複雑なプログラムも書けるようになるのです。

ところで今ボクは標準ライブラリと説明しましたね。
そうです。この関数群はあくまでもデフォルトで用意された機能に過ぎないのです。

例えば他のユーザーが制作した関数を使用することもできるのです。
その場合はそのユーザーが一緒に制作しているであろうマニュアルを参照して下さい。

と、こんな感じで関数の柱は人生を掛けて蓄えていくものなので、この講義では関数そのものの使い方にはあまり触れません。━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
では、文法の柱はどうなのかというと……これは今から学習します。
文法はこれまでにもいくつか触れてきました。例えば文末には;を付ける。文字は'で囲む、文字列は"で囲む……などです。

プログラムを書いていて、ある条件を満たした時だけ処理を行いたい場合を想定します。
例えば、ユーザーが特定の数値を入力した時だけ文章を表示する。などです。

そのようなプログラムを書く場合はifを使います。
86


if{}で囲んだ範囲をifの有効範囲とみなします。
ifの{}の中身は()の中が真(正しい時)のみ実行されます。

サンプルコードでそれを見てみましょう。

87

88


C言語の世界では=代入演算子なので、=と書くとNumber へ123を
代入せよという命令となってしまいます。ifの中で代入を行うこと自体は全く問題ありません

なので、=を2つ重ねて==とし、これを比較演算子と呼びます。これは左辺と右辺の値が同じであれば真を返す演算子です。
そうです。Number == 123とは、演算なのです。
Numberと123が同じ値なら真を、違う値なら偽を返す演算です。
if の()の中が真の時、ifの有効範囲は実行されると説明しました。

==演算子はifの機能ではありません。ifで使うことが多いだけで、あくまで演算の結果をifで利用しているだけということを心の片隅に置いておいて下さい。

また、ifif() と書いても、if ()と書いても、if    ()と書いても問題ありません。

問26:入力された整数が1205の時、認証成功と表示するプログラムを書きなさい。


難27:入力された整数が777の時、"確変"と表示して、もう一度入力を受け付け、そこで999と入力された時、"超大当たり"と表示するプログラムを書いて下さい。


難28:aと入力したら、bと表示するプログラムを書いて下さい。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
==のことを比較演算子といいます。比較演算子を使えば、より複雑な条件を設定することができます。
比較演算子は全部で6種類です。
[優先-1] <=(左辺が右辺以下)
[優先-1] >=(左辺が右辺以上)
[優先-1] <(左辺が右辺未満)
[優先-1] >(左辺が右辺を超過)
[優先-2] ==(左辺と右辺が等しい)
[優先-2] !=(左辺と右辺が等しくない)


これらの演算子は主にifの()の中で使用することになるでしょう。

if (100 < Number) と書けば、Numberの値が100を超過している時に有効範囲が実行されます。

問28:ユーザーに整数を入力させ、その値が80以上なら"合格"と表示するプログラムを書いて下さい。


問29:ユーザーに少数を入力させ、その値が30.5以下ならば、20を加算して表示するプログラムを書いて下さい。


問30:ユーザーに文字を入力させ、その文字がk以外だったならば、kと表示するプログラムを書いて下さい。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ここまで書いてきてふとこう思ったことはありませんか?
もっと複雑な条件を書きたい……と。
具体的には100以下でありつつ80以上の値を判定したり、
aとbとcを真と判定し、それ以外を偽と判定したい……などです。

実は……それを叶えてくれる論理演算子があります。
また演算子かよと思うかもしれませんが、最後の2つです。
[優先度-4] &&(論理積)
[優先度-5] ||(論理和)


&&演算子は左辺と右辺の条件が両方満たされた時、真を返します。
if (Number >= 80 && Number == 100)
と書けば、Numberの値が80以上かつ100だった時に有効範囲が実行されます。


95


問31:入力された整数が100ではなく、かつ、80点以上の時、合格&インパーフェクトと表示し、入力された値が100の時は合格&パーフェクトと表示するプログラムを書いて下さい。


||演算子は左辺または右辺の条件どちらかが満たされた時、真を返します。
どちらも満たされた場合もを返します。

if (Number == 100 || Number == 99)
と書けば、Numberの値が100または99の時に有効範囲が実行されます。

98

99


難32:ユーザーが文字を入力し、それがaかbかcの時は、"認証成功"と表示するプログラムを書きなさい。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
以下のサンプルコードをご覧ください。

これは、Numberの値が80以上ならば"合格"と表示し、80未満なら不合格と表示するプログラムです。

なんというか、不格好ですよね。
80以上のときに"合格"と表示する為に条件文を書くのは分かりますが、80以上でないのであれば、必然的に不合格となるではないですか。
要は、80点以上なら合格、それ以外なら不合格 とプログラムを書く方が人間工学的にスッキリしますよね。

それ以外をプログラムで表現するには、elseを使います。
elseは、直近のifの条件が偽の時発動します。

elseifと同じように{}で区切った範囲を有効範囲とします。ifと違う部分は、()を持たず、条件文を書く欄がないことです。

上のプログラムは次のように書き直しても正しく動きます。


対応するifとくっつけた方が直感的で分かりやすいプログラムになりますね。


問33:ユーザーから入力された整数が50以上なら"当たり"、それ以外なら"外れ"と表示するプログラムを書きなさい。