前へ 上へ 次へ
BMI 値計算のための式は以下の通りです。
※ ここで身長がメートル単位であることに注意して下さい。
前へ 上へ 次へ
7 条件分岐(IF 文)
条件分岐は if 文により行う事ができます。 条件が真の場合のみの処理の記述は以下のように行います。if (条件) then 条件が真の場合の処理 end if
処理が 1 文で済む場合は以下のようにすることも可能です。
if (条件) 処理
偽の場合の処理も記述する場合には else を用いて以下のように記述します。
if (条件) then 条件が真の場合の処理 else 条件が偽の場合の処理 end if
条件がいくつもある場合には以下のような記述も可能です。
if (条件 1) then 条件 1 が真の場合の処理 else if (条件 2) then 条件 1 が偽で条件 2 が真の場合の処理 else if (条件 n) then 条件 1 から条件 n-1 が偽で条件 n が真の場合の処理 else 条件 1 から条件 n がすべて偽の場合の処理 end if[ if.f90 ] - 条件判断を行うサンプル
program if
implicit none
integer a, b
print *, "Please enter two numbers:"
read *, a, b
if ( a > b ) then
print *, "a is greator than b!"
else if ( a == b ) then
print *, "a is equal to b!"
else
print *, "a is less than b!"
end if
end program if
出力例:
Please enter two numbers:
3 4
a is less than b!
比較は比較演算子を用いて行いますが、以下に利用可能な比較演算子を示します。
| 比較演算子 | 意味 | 用例 |
| .lt.もしくは < | より小さい | a.lt.b もしくは a<b |
| .le.もしくは <= | より小さいか等しい | a.le.10 もしくは a<=10 |
| .eq.もしくは == | 等しい | a.eq.100 もしくは a==100 |
| .ne.もしくは /= | 等しくない | a.ne.0 もしくは a/=0 |
| .gt.もしくは > | より大きい | a.gt.30 もしくは a>30 |
| .ge.もしくは >= | より大きいか等しい | a.ge.30 もしくは a>=30 |
複数の条件を結合するための論理演算子と、条件を否定するための論理演算子が用意されています。 以下に論理演算子を優先度の高い順に示します。 (優先度の高いものから先に評価されます。)
| 論理演算子 | 意味 & 意味 | |
| .not. | 以外 | .not. a==b |
| .and. | かつ | a==b .and. b==c |
| .or. | もしくは | a==b .or. b==c |
| .eqv. | 論理値が等しい | a<0 .eqv. b<0 (a と b の符号が同じという比較例) |
| .neqv. | 論理値が等しくない | a<0 .neqv. b<0 (a と b の符号が一致しないという比較例) |
※ 補足:論理値同士の比較には == や /= を使えません。 .eqv. もしくは .neqv. を利用します。
以下に条件式の例を示します。
[
comp.f90
] - 条件式のサンプル
program comparison
implicit none
integer,parameter :: my_height = 167
integer,parameter :: my_weight = 60
integer your_height, your_weight
print *, "Please enter your height in cm:"
read *, your_height
print *, "Please enter your weight in kg:"
read *, your_weight
if ( my_height > your_height .and. my_weight > your_weight ) then
print *, "I am TALLER and HEAVIER than you!"
end if
end program comparison
出力例:
Please enter your height in cm:
160
Please enter your weight in kg:
56
I am TALLER and HEAVIER than you!
7.1 ★ 練習課題:BMI 値を求める
身長(cm)と体重(kg)を入力して、それらの値から BMI 値を求め出力して下さい。 更に求められた BMI 値によりそれぞれ以下のようなメッセージを出力して下さい。| BMI 値 | 出力メッセージ |
| 18.5 未満 | Yasegimidesu |
| 18.5 以上 25.0 未満 | Futsuudesu |
| 25.0 以上 30.0 未満 | Futorigimidesu |
| 30.0 以上 | Futorisugidesu |
BMI 値 = 体重(kg)÷(身長(m)× 身長(m))
例えば身長 167 cmで体重 60 kgであれば
BMI 値 = 60 ÷(1.67 × 1.67)
となります。
処理手順例
-
変数を宣言する
例)
real bmi, h, w - 身長(cm)を入力してほしい旨を画面に出力する(print 文)
- 身長をキーボードから入力する(read 文)
- 体重(kg)を入力してほしい旨を画面に出力する(print 文)
- 体重をキーボードから入力する(read 文)
-
公式を用いて BMI 値を計算してその結果を答えを格納する変数に代入する
例)
h = h/100.0 ! センチメートルをメートルに変換
bmi = w/(h*h) - BMI 値を画面に出力する(print 文)
- 4つの条件(Yasegimidesu, Futsuudesu, Futorigimidesu, Futorisugidesu)のうちで該当するメッセージを表示する(if 文)
実行例: Enter SHINCHO(cm): 170 Enter TAIJU(kg): 60 BMI = 20.7612438 Futsuudesu[ kadai-bmi.f90 ] - BMI 値を求めるプログラム例
前へ 上へ 次へ
