OriosのActiveBasic講座(1-1):入出力

3.計算式

【目標】コンピューターにいろいろな計算をさせることができるようになりましょう。

前回まではDOSウィンドウに文字や数字を表示させてきました。 しかし今までの内容は基礎の基礎にすぎません。 まだコンピューターに「アレ」をやらせていないからです。 さて、アレとは何でしょう? 下のヒントから推測してみましょう。

分かりましたか?(今回のタイトルを見たときから分かってたって?!やられた……。) そうです。 「アレ」とはずばり計算のことです。 コンピューターは「計算」をさせなければ無用の長物と言っても過言ではありません! ということで、今回は四則演算を中心にプログラムでの計算式の書き方を勉強します。 それでははりきっていきましょう!! 早速次のプログラムを実行させてみましょう。

'lesson1-1-3
#console
Print 1 + 1 - 1
Print 2 * 3 / 6
Print 3.4 \ 1.5
Print 3 * 2 - 2.5 * 2
Print (2 ^ 8) Mod 85
Sleep(3000)
End

実行すると次のようなウィンドウが表示されます。

C:\ActiveBasicCourse\lesson1-1-3.abp
1
1
2
1
1

では今回のプログラムの説明に入ります。 今回は特に変な記号がたくさん出てきて混乱しているかもしれませんが、その混乱はこの説明を読めばきっと収まるはずです。 頑張って読んでみてください。

-*-*-*-*-説明-*-*-*-*-
【使い方】
(1) Print 計算式 
(2)(a) 数字1  + 数字2 
(2)(b) 数字1  - 数字2 
【意味】
(1) 計算式 を計算した結果を表示します。
(2)(a) 数字1 と数字2 を足した値を表します。
(2)(b) 数字1 から数字2 を引いた値を表します。
【解説】
(1) 計算式の表示
( ) 「Print」は数字や文字を表示するだけでなく、計算式の結果も表示させることもできます。 計算式は数字と「+」「-」などの演算子というものを組み合わせて書きます。 また計算式の結果を表示させたいときは文字列のように「"」で囲んだりはしません。 (もちろん計算式そのものを表示したいときは「"」で囲みます。[例] Print "1 + 1")
(2) 四則計算(1)
( ) 「+」や「-」のように計算式を作るために使う記号を演算子と言います。 演算子と聞くと少し戸惑うかもしれませんが、要は日常生活で式を書くときに使っている「+」や「-」と同じです。 なので1と1を足した和を表したければ普通に「1 + 1」と書けばいいだけです。 また演算子は「1 + 1 - 1」のように続けて使うこともできます。 この場合、計算は普通の計算と同じように左から順に行われます。
【使い方】
(a) 数字1  * 数字2 
(b) 数字1  / 数字2 
【意味】
(a) 数字1 と数字2 を掛けた値を表します。
(b) 数字1 を数字2 で割った値を表します。
【解説】
四則演算(2)
( ) 上に引き続き演算子の解説です。 掛け算と割り算の場合は、「×」・「÷」の代わりにそれぞれ「*」(アスタリスク)・「/」(スラッシュ)というプログラミング独特の表記をします。 これは「×」「÷」はアルファベットや数字などの文字の2倍の記憶領域が必要になったり、世界共通で使える文字体系(具体的に言えば「ASCII」)の中にこの文字が含まれないなど理由はいろいろありますが、 とにかくこれらの文字はプログラミングにとっては都合が悪い文字なのです。 なのでこの2つの記号はプログラミングにとって都合のいい文字である「*」や「/」という記号で代用するわけです。
【使い方】
数字1  \ 数字2 
【意味】
数字1 を数字2 で整数除算します。
【解説】
その他の計算(1)
( ) この世の中は四則計算だけで済むということはありません。 べき乗・剰余・対数・三角関数・整数除算・虚数計算……など数えたらきりがありません。 コンピューターにはこれらのうちほとんどの計算をさせることができます。 ここではその中で「整数除算」を紹介します。 この計算の演算子である「\」は他の「+」「-」「*」「/」と同じように計算する2つの値の間に入れます。 これは数字1 を四捨五入した値を数字2 を四捨五入した値で割ってその商(割った値を、その値より0に近い整数のうちで最もその値に近い整数で表現したもの)を計算するものです。 これは、数字1 を数字2 で割った商(割った値を、その値より0に近い整数のうちで最もその値に近い整数で表現したもの)を計算するものです。(AB4.10より仕様変更 / 2006/03/22に追記 / ユーザー様よりご指摘を受けました。)
【解説】
優先順位(1)
( ) 昔、小学校の算数で「掛け算・割り算は足し算・引き算の前にやりましょう。」と習ったかと思います。 例えば「1 + 2 × 3」なら先に「2 × 3」を計算して「6」、そして「1」にこの「6」を足して「7」です。 決して「1」に「2」を足して「3」、この「3」に「3」を掛けて「9」ということはありません。 なぜこのような話を出したかというと、この原則はプログラミングでも全く同じだからです。 プログラミングだから特別ということはありません。 つまり「1 + 2 * 3」も計算結果は「7」であって「9」ではありません。 このように「掛け算・割り算は足し算・引き算の前」のような決まりのことを優先順位と言います。
【使い方】
(1)(a) 数字1  ^ 数字2 
(1)(b) 数字1  Mod 数字2 
(2) (計算式 )
【意味】
(1)(a) 数字1 の数字2 乗を表します。
(1)(b) 数字1 を数字2 で割ったときの余りを表します。
(2) ()で囲まれた計算式 を先に行います。
【解説】
(1) その他の計算(2)
( ) ここでは「べき乗(演算子:^)」と「剰余(演算子:Mod)」を紹介します。 「べき乗」とは「an」のことで、「剰余」は割り算の「余り」のことです。 演算子の位置は今までの演算子と同じように計算する2つの値の間に入れます。
(2) 優先順位(2)
(i) カッコ
プログラミングで使うカッコも日常生活で使っている式と同じで、()で囲まれた計算式 から先に計算します。 今回の例では、「2 ^ 8」をまず計算して「256」。そしてこの「256」を85で割った余りということで「1」となります。 あと、数学の計算式では[](大カッコ)・{}(中カッコ)・()(小カッコ)というふうに使い分けますが、プログラミングでは全て()で表現します。
(ii) 優先順位の変更
先ほど(4)で優先順位の話をしましたが、では(4)で例に出した「1 + 2 * 3」の計算結果を優先順位を無視して「9」にしたい場合はどうすればいいでしょうか? そうです。 たった今説明したばかりの「カッコ」を使えばいいのです。 カッコがある場合は優先順位を無視して(カッコ内の式はまたカッコ内の式で優先順位どおりの計算が行われます)カッコ内の計算式を先に計算するわけですから、「1 + 2 * 3」カッコを使って「(1 + 2) * 3」のようにしてやれば見事に結果は「9」になります。
-*-*-*-*- (参)(考) -*-*-*-*-
【優先順位一覧表】

下に優先順位一覧表を載せておきます。 全部覚えておく必要はないと思いますが、ある程度優先順位を知っておかないとプログラムで意図しない計算結果が出ることがありますので (と言っても最終手段として不安なところは括弧で囲むというのもあります)。

演算子意味
^べき乗
-マイナス符号
*, /乗算・除算
\整数除算
Mod剰余
+, -加算・減算

【計算式の間のスペースについて】

今回のプログラム例では全て演算子と数字の間に「1 + 1」のように半角スペースを入れています。 これは別にスペースを入れないとプログラムが動かないというものではありません。 なので「1+1」のようにしてもプログラムは正常に実行されます。 しかし半角スペースを入れておくことで式は確実に見やすくなります。 ということで、管理人はスペースを入れることをお勧めします。

では一通り学んだところで実際に自分でプログラムを作ってみましょう。 読んだだけで分かった気になっていることもよくありますので、確認の意味でもぜひやってみてください。

-*-*-*-*- -*-*-*-*-
(1) 次の計算式の結果を表示させましょう。
  • 12 + 34 - 46
  • 3 × 4 ÷ 12
  • 28を254で割った余り
  • 6 - 2 × 3
(2)以下に括弧を外した計算式があります。 計算式が正しくなるように括弧を補って表示させてみましょう。 (注:この問題はプログラミングの技術うんぬんというよりはパズルみたいなものなので、もしできなくても気にしないでください。)
  • 2 + 4 * 3 + 7 * 2 + 1 / 11 = 11
  • 10 * 7 + 1 * 100 + 2 * 8 + 1 = 7117

ご質問・ご意見・ご感想・苦情等はメールまたはメイン掲示板のActiveBasic板などでお気軽にどうぞ。

前に戻る - 次に進む

ホーム > OriosのActiveBasic講座(トップページ) >