welcome: please sign in
location: 条件文

条件文

流れ図

プログラムは記述した順に実行されました。 次のようなプログラムがあったとします。

ここでは、文1~3は代入文かprint文だと考えてください。 このプログラムを実行すると、文1~3はこの順に実行されます。

実行の順序を図で表すと次のようになります。

処理の流れ(実行順序)を表すための図を流れ図といいます。


条件文の書き方

いつも同じ処理をするだけでなく、場合によって処理内容を変えることができると、もっといろんなプログラムが書けます。

条件によって処理内容を変えるための、もっとも基本的な文が if文 です。

if文の書き方は

です。

丸で囲まれたところはその通りに書きます。 条件のところには、数の比較などが書けます。 文のところには、代入文や print文などが書けます。

if文はしばしば数行を使って記述します。

例を示します。

書き方と対応させて見ましょう。 丸で囲まれた部分に対応する if ( ) { } の位置を確認してください。


条件文の実行

if文の処理順序は次のようになります。

条件が成り立たないときは、(2)では何も行われないことになります。

このようなプログラムがあったとします。

このプログラムを流れ図であらわすと、次のようになります。 点線で囲んだ範囲が if文に対応する部分です。

処理順序は

です。


条件

条件のところには、数値の比較などが記述できます。 他にも論理式を含め、いろいろな条件を記述できますが、この授業では2つの数値の比較のみを扱います。

数値とは、リテラルで表された数値、変数名が表す数値、それらを使った数式、関数などのことです。

2つの数値が、等しいか、等しくないか、大きいか、小さいかなどの比較ができます。

比較を表すには次の記号を使います。

等しいことの判定にはイクオール2つ、等しくないことの判定には!とイクオールです。注意してください。


書き方の例

条件が成り立つときだけ実行される部分を、右にずらして書いています。 このように揃えて分りやすく書きましょう。

print 文も使えます。

条件が成り立つときだけ実行される部分が1文だけのときは、このように書くこともあります。

条件が成り立つときだけ実行される部分が1文だけのときは、括弧を省略することもできます。今回は使いません。


条件文の書き方(1)

if文の書き方は

であり、処理の流れは図に示す通りです。 図では、いくつかの文をまとめて処理という箱で表しています。 条件が成り立つときだけ、処理の部分を実行します。

この流れ図に対応するif文は次のように書きます。


条件文の書き方(2)

条件が成り立つときとそうでないときで、別の処理をさせたいことがあります。 流れ図で示すような場合です。

条件が成り立つときは処理1を行い、そうでないときは処理2を行います。

この流れ図に対応するif文は else を使って次のように書きます。

処理と書いた部分は、文がいくつか並んだものです。 { と } で挟まれた部分は、このように右にずらして書くと分りやすい。

elseを含むif文の構文図はこのようになります。


条件文の書き方(3)

if文の中の処理の部分には、代入文やprint文だけでなく、if文を書くこともできます。 そうすることで、いくつもの場合に分けた処理を行うことができます。

多くの場合に分けるときは、次のように考えます。

条件1が成り立つときは、処理1を行い、
そうではなくて(条件1が成り立たなくて)条件2が成り立つときは、処理2を行い、
そうではなくて(条件1も条件2も成り立たなくて)条件3が成り立つときは、処理3を行い、
そうではない(条件1も条件2も条件3も成り立たない)ときは、処理4を行う。

この流れ図に対応するif文は次のように書きます。

if文と流れ図が対応していることを、確認してください。 最初の条件は if で、2番目以降の条件は else if で記述します。 最後は else です。


例題

次の図で haba を与えて、面積と周囲の長さを表示する関数 kao を作りなさい。

プログラムのおよその形はこのようになりました。 3行目以下で計算し、変数 wa に面積を代入しています。 そのあとprint文を使って表示します。面積のみ示していますが、実際は他の表示も必要です。 値を返さないreturn文を使っています。値を返してもかまいません。

面積の計算

面積を計算するには、四角や三角の部分に分けて部分ごとに面積を計算し合計します。 さらに2つの円の面積を計算して、これを引けば求まります。

関数の中でprintを行っているので、引数の値を変えて呼び出すことで結果が表示されます。 例えば

のようになります。

これらは正しく計算されているようですが、引数の値によっては正しく計算できない場合があります。

幅6のときを計算させてみると

と表示されますが、実際の形と比べてみると正しくないことが分ります。

円の半径が2ですから、幅が8より小さいときは範囲内に2つ並べることができず、はみ出してしまいます。 このような場合は、面積を求めることができません。

また幅が20より大きくなるとアゴの三角形ができなくなり、この場合も面積は求まりません。

計算が正しく行えないときは、そのことを表示するようにしましょう。

if文を使って

ようにします。

条件 haba < 8 が成り立つときだけ、print( '幅が小さすぎます' ); が実行されます。 条件 haba < 8 が成り立たないときは、print( '幅が小さすぎます' ); は実行されません。

したがって、habaの値が 6 のように8より小さいときにはprintが行われ、 habaの値が 10 のように8より大きいときにはprintは行われません。

実行するとこのようになります。

実際には、幅が小さすぎるときや大きすぎるときには 面積がを表示しないようにするのがよい。

条件文 (最終更新日時 2010-02-19 06:19:21 更新者 masahiko)