式と演算
コンピューターは、さまざまな情報を処理することで、価値のある新しい情報を生み出すことが得意です。以下は、情報を処理するということのほんの一例です。
- 四則演算などの計算
- 数列の並び替え
- 条件に一致する数値の探索
- 文章から特定の単語の出現位置を求める
算数や数学で学んでいることは、問題に含まれる情報から、知りたいことを計算で導き出すという、情報処理の手法を学んでいると言い換えても良いでしょう。例えば、以下のような計算問題の例を考えます。
- リンゴが5個あります。オレンジが10個あります。合計で何個でしょうか?
上記で与えられた情報は、以下です。
- リンゴの個数は、5個である。
- オレンジの個数は、10個である。
そして、知りたい情報は、合計の個数です。答えを得るためには、以下の計算式が必要になります。
- 5 + 10
ここでは、合計の個数を求めるために、足し算(加算とも言います)を使いました。上記の答えは、15 ですね。つまり、合計の個数である 15 個という新しい情報を生み出したことになります。
足し算など計算に使用する記号のことを「演算子」と呼びます。Jasmine Tea で使用することができる演算子は、算術演算子、関係演算子、論理演算子の 3 種類があります。
- 算術演算子 - 足し算、引き算、掛け算、割り算の商、割り算の余りを計算するための演算子です。
- 関係演算子 - 2つの数値が一致しているか、どちらか大きいか、を比較するための演算子です。
- 論理演算子 - 論理積(AND)、論理和(OR)、否定(NOT)、排他的論理和(XOR)を行うための演算子です。
計算式に代表される、数値や変数、関数、文字列を演算子で連結したものを、Jasmine Tea では「式」と呼びます。また、数値や変数、関数だけのものも、式と呼びます。以下は、全て式です。
- (10+3)/5
- a+b/c-d
- "JASMINE"
- 3.14
- a$
- random(1,6)
- x*32+random(0,64)
プログラムの中に書かれた式は、式が書かれた命令が実行された際に計算されて答えが得られます。式に書かれた内容に従って答えを求めることを「式を評価する」と言います。式に含まれる数値や文字列、変数に記憶された数値や文字列、関数の結果得られた数値や文字列に基づいて、演算子ごとに決められた計算が行われていきます。
式の評価結果は、let 命令を使って変数に記憶したり、その他の命令のパラメーターとして利用します。Jasmine Tea では、式のみをプログラムの行に記載することはできません。式は、何らかの命令のパラメーターとして利用することになります。
算術演算子
演算子 | 計算内容 | 例 | 数学での表現 |
---|---|---|---|
+ | 加算 | a+b | a + b |
- | 減算 | a-b | a ー b |
* | 乗算 | a*b | a × b |
/ | 除算 | a/b | a ÷ b |
% | 剰余 | a%b | a ÷ b の余り |
演算子の優先順位(計算の順番)は、以下です。
優先順位 | 算術演算子 |
---|---|
1 | * / |
2 | % |
3 | + - |
Jasmine Teaプログラミング言語は小数点を含む演算を行うことができます。計算結果の小数点以下16位以降は、切り捨てられます。
「+」演算子は、文字列と配列に対応しています。2つの文字列を「+」演算子によって連結させることができます。例えば、"abc" + "def" の結果は、"abcdef" となります。また、2つの配列を「+」演算子によって連結させることができます。例えば、[1,2,3] + [4,5,6] の結果は、[1,2,3,4,5,6] となります。
関係演算子
演算子 | 意味 |
---|---|
= | 両辺が等しい |
<> | 両辺が等しくない |
> | 左辺が右辺より大きい |
< | 左辺が右辺より小さい |
>= | 左辺が右辺と等しいか大きい |
<= | 左辺が右辺と等しいか小さい |
関係演算子の結果は、真のときは -1、偽のときは 0 となります。
論理演算子
優先順位 | 演算子 | 意味 |
---|---|---|
1 | not | 否定 |
2 | and | 論理積 |
3 | or | 論理和 |
4 | xor | 排他的論理和 |
論理演算子は、ビット単位で 0 と 1 の論理演算を行います。論理演算は、32ビットの整数に変換した後に計算されます。
演算子の優先順位
演算子の種別は、以下の優先順位で評価されます。
- 算術演算子
- 関係演算子
- 論理演算子
全ての演算の優先順位は、以下となります。
- ( ) で囲まれた式
- 関数
-
- / (乗算、除算)
- % (剰余)
-
-
- (加算、減算)
-
- = <> > < >= <=
- not
- and
- or
- xor
計算式と条件式
数値、演算子、変数や関数を組み合わせることで、計算を行うことができます。何らかの計算を目的とした式を、計算式と呼びます。計算式では、主に算術演算子や関数が使われます。以下は、計算式の例です。
- (10+3)/5
- a+b/c-d
- x*32+random(0,64)
計算式は、算数や数学で学んだ式と考え方は同じです。計算式に基づいて計算された結果が、その式の評価結果となります。
式には、計算が主目的ではなく、「ある条件が成り立ったかどうか」ということを目的とした式があります。これを条件式と呼びます。条件式では、主に比較演算子や論理演算子が使われます。条件式は、以下のようなものです。
- a=1 (数値変数 a が記憶している数が 1 かどうか)
- a<b (数値変数 a が記憶している数よりも 数値変数 b が記憶している数の方が大きいかどうか)
- name$="yoichiro" and age=47 (文字列関数 name$ が記憶している文字列が "yoichiro" かつ数値変数 age が記憶している数が 47 かどうか)
比較演算子や論理演算子を使うと、条件に一致したときは -1、条件に一致しなかったときは 0 が評価結果として得られます。式の評価結果が -1 なのか 0 なのかを確認することで、その条件が成立したかどうかがわかります。条件式は、if 命令や do 命令、loop 命令などで使用します。