第8章 条件処理
8.6 if文について
これまで見てきたように、if文を利用すれば様々な条件に応じた処理を実行させることができます。これまでのサンプルは単純なパターンばかりでしたが、if文には色々なバリエーションがあり、プログラムに応じて複雑に記述を使い分けなければならない場合があります。また「論理演算式」は、複数の条件を組み合わせて記述することができます。
8.6.1 if文のルールとバリエーション
これまで学習してきたif文のルールを以下にまとめます。
・if文は複数条件式であっても、必ずifで始まる。
・if文の後ろにはelif文はいくつでも繋げられる。
・else文を加える場合は、最後に1つである。
・else文は省略しても構わない。
・同ブロック内の処理はインデントを揃える
・ifブロック、elifブロック、elseブロック内にはif文を記述できる。(if文のネスト)
・入れ子のブロックは元のブロックよりさらにインデントする
上記のルールを守れば、様々なバリエーションの記述ができます。
パターン例 : if文と複数条件式(if – elif – else)を使った記述
パターン例 : if文とif – else文+ネストさせたif文を使った記述
8.6.2 論理演算子とは
これまで、いろいろな条件分岐を説明しましたが、もっと多くの条件を組み合わせてより複雑な条件を表すときに使うのが論理演算子です。論理演算子の左右に来るのは、必ずtrueかfalse、もしくは解がそのようになる式となります。
主な論理演算子を図 8.6.2.1に示します。
表 8.6.1 : 論理演算子の種類
各論理演算子がどのような値を返すのか、もう少し詳しく見てみましょう。
1. and
「and」は論理積とも呼ばれ、演算子の左辺と右辺の値がともに「true」の場合だけ、全体がtrueになります。
つまり、すべての条件を満たす(true)場合だけが全体がtrueになります。
表 8.6.2 : and条件の演算結果
書式:条件文と「and」論理演算子
この場合は、もし条件式Aが合っている、かつ、条件式Bが合っていたら処理を行う、ということになります。フローチャートにすると、図 8.6.2.1のようになります。
図 8.6.2.1 : 条件文とand論理演算子のフローチャート
2. or
「or」は論理和とも呼ばれ、演算子の左辺または右辺の値が少なくとも1つがtrueの場合に、全体がtrueになります。つまり、条件のうち1つ以上満たせば全体の式がtrueになります。
表 8.6.3 : or条件の演算結果
書式:条件文と「or」論理演算子
この場合は、もし条件式Aまたは条件式Bのどちらかが合っていたら処理を行う、ということになります。
フローチャートにすると、図 8.6.2.2のようになります。
図 8.6.2.2 : 条件文とor論理演算子のフローチャート
3. not
「not」は論理否定と呼ばれ、演算子の右辺の値を反転します。trueの否定がfalseで、falseの否定がtrueになります。
表 8.6.4 : 論理not
書式:条件文と「!」論理演算子
論理演算子「not」は条件の否定を表すものですので、この場合は、もし条件式の結果がtrueならそれを否定されるので処理は行われない、もし条件式の結果がfalseならそれを否定されるので処理が行われるということになります。
フローチャートにすると、図 8.6.2.3のようになります。
図 8.6.2.3 : 条件文とnot 論理演算子