忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

BHT-BASIC4.0:演算子について(BHT-1300)
今回はBHT-BASICの演算子について説明したいと思います。
BHT-BASICには、算術演算子、関係演算子、論理演算子、関数演算子、文字列演算子と 普通の言語にはだいたいそろっている演算子があります。

■演算子の優先順位

優先順位演算子名称演算子
1 括弧 ( ) 括弧の中が優先して演算
2 関数演算子 組込み関数,ユーザ関数の実行
3 算術演算子 ※演算子の中で更に優先度がある
優先順位演算演算子
1 負号 -
2 乗算、除算 * , /
3 剰余演算 MOD
4 加算、減算 + , -
4 関係演算子 = , <> , >< , < , > , <= , >= , =< , =>
5 論理演算子 ※演算子の中で更に優先度がある
優先順位演算演算子
1 否定 NOT
2 論理積 AND
3 論理和 OR
4 排他的論理和 XOR
6 文字列演算子

演算子は特に目新しいものは無く、よくあるものばかりですので、 各演算子毎に細かくは記しませんが、少し注意するものをピックアップします。

■算術演算子・剰余演算(MOD)

MODは割り算の余りを返すものです。 以下の例の様に数値は四捨五入し整数にしてからMOD演算が行われます。
	PRIVATE X%, Y%, R%
	X% = 10
	Y% = 3
	R% = X% MOD Y%	'X%をY%で割った余り
	PRINT "R%=" ; R%
	R% = 10 MOD 4.1	'4.1を四捨五入し結果 10 MOD 4
	PRINT "R%=" ; R%
	R% = -10 MOD -4.5 '-4.5を四捨五入し結果 -10 MOD -5
	PRINT "R%=" ; R%
	
	Wait 0, &h01	'キー入力待ち
	END



■オーバーフローとゼロによる除算

演算結果がオーバーフローしたり、ゼロで割った場合には実行時エラーが発生します。 以下のソースはその例を示します。
	ON ERROR GOTO MAIN.ERR	'エラー宣言
	PRIVATE X%, Y%
	X% = 32767		'整数型のMAX値
	PRINT "TEST-1"
	Y% = X% / 0		'ゼロで割る
	PRINT "TEST-2"
	Y% = X% + 1		'整数型のオーバーフロー
	
	Wait 0, &h01	'キー入力待ち
	END

MAIN.ERR:
	'エラーコードと発生アドレス表示
	PRINT "ERR=" + HEX$(ERR) + " : ERL=" + HEX$(ERL)
	RESUME NEXT		'エラー発生の次の行に戻る



■関係演算子について

関係演算子は2個の式を比較して、真「-1」または偽「0」を返します。 この値を使って、プログラムの流れを制御できます。 以下のソースは、IF文を使った各関係演算子の例を示します。

また、関係演算子の計算結果を変数に入れて使うこともできます。
	SCREEN 1 '標準漢字モードを指定
	PRIVATE X%
	'各関係演算子の例	
	IF 1 = 1  THEN PRINT "[=] :等しい"     ENDIF
	IF 0 <> 1 THEN PRINT "[<>]:等しくない" ENDIF
	IF 0 < 1  THEN PRINT "[<] :小さい" ENDIF
	IF 1 > 0  THEN PRINT "[>] :大きい" ENDIF
	IF 0 <= 1 THEN PRINT "[<=]:以下" ENDIF
	IF 1 => 0 THEN PRINT "[=>]:以上" ENDIF
	PRINT "-----"
	'比較を式に代入
	X% = (1 = 1): PRINT "等しい="; X%
	X% = (0 = 1): PRINT "等しくない="; X%
	Wait 0, &h01	'キー入力待ち
	END




■論理演算子を式で使う

論理演算子は、複数の関係演算子での判定結果を関連付ける演算子です。
	OUT &H6080, 1 '小フォントを指定
	PRIVATE X%, Y%, Z%
	'NOT
	Z% = NOT(0): PRINT "NOT (0)=" ;Z%
	Z% = NOT(NOT(0)): PRINT "NOT(NOT((0))=" ;Z%
	Z% = NOT(1): PRINT "NOT (1)=" ;Z%
	'AND
	Z% = 0 AND 0: PRINT "(0) AND (0)=" ;Z%
	Z% = 0 AND 1: PRINT "(0) AND (1)=" ;Z%
	Z% = 1 AND 0: PRINT "(1) AND (0)=" ;Z%
	Z% = 1 AND 1: PRINT "(1) AND (1)=" ;Z%
	'OR
	Z% = 0 OR 0: PRINT "(0) OR (0)=" ;Z%
	Z% = 0 OR 1: PRINT "(0) OR (1)=" ;Z%
	Z% = 1 OR 0: PRINT "(1) OR (0)=" ;Z%
	Z% = 1 OR 1: PRINT "(1) OR (1)=" ;Z%
	'XOR
	Z% = 0 XOR 0: PRINT "(0) XOR (0)=" ;Z%
	Z% = 0 XOR 1: PRINT "(0) XOR (1)=" ;Z%
	Z% = 1 XOR 0: PRINT "(1) XOR (0)=" ;Z%
	Z% = 1 XOR 1: PRINT "(1) XOR (1)=" ;Z%
	
	Wait 0, &h01	'キー入力待ち
	END



■文字列演算子について

文字列の演算では結合しかなく、+マークで行います。 また、数値の様に文字列の比較ができます。
	SCREEN 1 '標準漢字モードを指定
	'文字列連結
	PRIVATE X$, Y$, Z$
	X$ = "123": Y$ = "ABC"
	Z$ = "連結=" + X$ + ":" + Y$
	PRINT Z$
	PRINT "-----"
	'各関係演算子の例	
	IF "123" =  "123" THEN PRINT "[=] :等しい"     ENDIF
	IF "012" <> "123" THEN PRINT "[<>]:等しくない" ENDIF
	IF "001" <  "002" THEN PRINT "[<] :小さい" ENDIF
	IF "003" >  "002" THEN PRINT "[>] :大きい" ENDIF
	PRINT "-----"
	'文字列の長さが異なる
	IF "123" <> "12"  THEN PRINT "[<>]:等しくない" ENDIF
	IF "12"  <  "123" THEN PRINT "[<] :小さい" ENDIF
	IF "123" >  "12"  THEN PRINT "[>] :大きい" ENDIF

	Wait 0, &h01	'キー入力待ち
	END



=====
2016/04/02:の時の情報











PR

コメント

コメントを書く