数学(s)と英語(e)、理科(r)の3科目の点数とボーナス点(a)を与えて、3科目中1科目でも100点があれば合計点数にボーナス点αをかさんしましょう。
マクロは次のように書きます。
�@ function prog23(s,e,r,a as integer) as integer
�A prog23 = 0
�B if s >= 100 then
�C prog23 = a
�D else if e >= 100
�E prog23 = a
�F else if r >= 100
�G prog23 = a
�H end if
�I prog23 = prog23 + s + e + r
�J end function
�H式までに3科目が100点か否か判断して、ボーナス点を関数名prog23へ納めることをしています。
�I式の右辺("="の右側)のprog23にはボーナス点が納められていますから、prog23+s+e+rを加えて
これをprog23へ納めています。
�I式のように、右辺の計算結果を左辺へ納めるようなことはプログラムではよく使います。
�A式でボーナス点はないとして0点を入れます。�Bから�Hで3科目のそれぞれが100点か否か判断して、
もし、100点ならprog23へボーナス点(a)を納めています。
このプログラムは、100点の科目が1科目でも3科目でもボーナス点は1科目分しか加算されません。
ボーナス点の加算を100点の科目数分だけ加算するように標記のプログラムを直してみましょう。
�@ function prog23(s,e,r,a as integer) as integer
�A prog23 = 0
�B if s >= 100 then
�C prog23 = a
�D else if e >= 100
�E prog23 = prog23 + a
�F else if r >= 100
�G prog23 = prog23 + a
�H end if
�I prog23 = prog23 + s + e + r
�J end function
�Eと�G式を変更しました。これで、3科目100点の場合は3倍のボーナス点を加算します。