HSP3プログラミング入門講座
powered by Let's HSP!
HSPが対応する演算子(計算記号)
フリーウェアなWindowsプログラミングツール「HSP」(Hot Soup Processor)がサポートする「演算子」(えんざんし)を ピックアップ。英語だと「Operator」(オペレータ)。分かりやすく言うと、「計算記号」のことですな。
- このページはHSP3を想定した説明になってます。HSP2では通用しない情報がいくつか含まれてます。
- このページはHTMLで表現する関係で一部に全角記号を使ってます。スクリプト上では記号は半角文字のみ有効です。
算術演算子 (加算、減算、乗算、除算、剰余算)
トピックス名は何とも難しい表現ですが、要は算数の足し算、引き算、掛け算、割り算、割り算の余り(あまり)です。
| + | 加算(かさん)、足し算 | 
| − | 減算(げんざん)、引き算 | 
| * | 乗算(じょうざん)、掛け算、「×」 | 
| / | 除算(じょざん)、割り算、「÷」 | 
| ¥ | 剰余算(じょうよざん)、割り算の余り | 
算数の世界と違って、乗算と除算は「*」(アスタリスク)、「/」(スラッシュ)の表現します。最後は 割り算の余りで、「¥」(円記号、バックスラッシュ)を利用します。ちなみに、C言語では余りは「%」(パーセント)を使います。
// 割り算と余り ; 10割る3の答え value = 10 / 3 mes value ; 10割る3の余り value = 10 \ 3 mes value
ちなみに、こういう書き方(算数・数学の計算式)はできないので注意。
; ×ダメダメ 10 + 3 = value mes value
円記号が剰余算の記号として使われる関係上、文字として円記号を表現したい場合は2回繰り返さないとダメです。 これはパラメータにファイルパス(パスの区切り)なんかを指定する必要がある命令(bload命令、noteload命令、chdir命令、dirlist命令など)でも注意が必要です。
// 円記号を文字表現 mes "[\]" ; × mes "[\\]" ; ○ mes "C:\Program Files\hsp31" ; × mes "C:\\Program Files\\hsp31" ; ○ // ファイルパス notesel buf ; noteload "C:\Program Files\hsp31\readme.txt" ; エラー noteload "C:\\Program Files\\hsp31\\readme.txt" ; ○
割り算の余りはif命令と組み合わせると下のような処理で使えます。
//	2で割り切れるかチェック
	data = "あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ"
;	2で割り切れず余りが出る → 奇数
	foreach data
		if cnt \ 2 {
			mes data.cnt
		}
	loop
	mes ""
;	2で割り切れる → 偶数
	foreach data
		if cnt \ 2 = 0 {
			mes data.cnt
		}
	loop
算術演算子 (ビット演算)
ビット単位の演算です。「0」と「1」の2進数レベルで演算します。
| & | 論理積、マクロ定義で「and」 | 
| | | 論理和、マクロ定義で「or」 | 
| ^ | 排他的論理和、マクロ定義で「xor」 | 
| << | 左ビットシフト | 
| >> | 右ビットシフト | 
| & 演算 | ||
| 左側 | 右側 | 結果 | 
| 0 | 0 | 0 | 
| 0 | 1 | 0 | 
| 1 | 0 | 0 | 
| 1 | 1 | 1 | 
記号は「アンパサンド」(Wikiepdia)。
; 答えは%0000 (0) mes %1000 & %0101 ; 答えは%1000 (8) mes %1100 & %1010
| | 演算 | ||
| 左側 | 右側 | 結果 | 
| 0 | 0 | 0 | 
| 0 | 1 | 1 | 
| 1 | 0 | 1 | 
| 1 | 1 | 1 | 
記号は「縦線」「パーティカルバー」(Wikiepdia)。キーボードでは「円記号¥」の入力と同じ。
; 答えは%1101 (13) mes %1000 | %0101 ; 答えは%1110 (14) mes %1100 | %1010
| ^ 演算 | ||
| 左側 | 右側 | 結果 | 
| 0 | 0 | 0 | 
| 0 | 1 | 1 | 
| 1 | 0 | 1 | 
| 1 | 1 | 0 | 
記号は「ハット記号」「サーカムフレックス」(Wikipeida)。キーボードでは「〜」の入力と同じ。
; 答えは%1101 (13) mes %1000 ^ %0101 ; 答えは%0110 (6) mes %1100 ^ %1010
左・右にビットをずらします。
; 1ビットずらしは2倍 mes %1011 mes %1011 << 1 ; 答えは%1110000 (112) mes %111 << 4
; 1ビットずらしは1/2倍 mes %1000 mes %1000 >> 1 ; 答えは%10 (12) mes %100011 >> 4
条件演算子
| = == | 等号 | 
| != ! | 不等号 | 
| & | かつ | 
| | | または | 
| > | 左辺が大きい | 
| < | 左辺が小さい | 
| >= | 左辺が大きいか等しい | 
| <= | 左辺が小さいか等しい | 
代入演算子
変数に代入します。
| = == | 『a = b』は「aにbを代入」 | 
| += | 『a += b』は「aにbを足して、aに代入」 『a = a + b』に相当 | 
| −= | 『a -= b』は「aからbを引いて、aに代入」 『a = a - b』に相当 | 
| *= | 『a *= b』は「aにbを掛けて、aに代入」 『a = a * b』に相当 | 
| /= | 『a /= b』は「aをbで割って、aに代入」 『a = a / b』に相当 | 
| ¥= | |
| |= | |
| &= | |
| ^= | |
| <<= | |
| >>= | 
たとえば。
// 整数値の桁数を取得 value = 1234567 repeat if value = 0 : keta = cnt : break value /= 10 loop mes keta
// 整数値を逆から表示 value = 3141592 repeat if value = 0 : break mes value \ 10 value /= 10 loop
代入演算子 (インクリメント、デクリメント)
次は特殊な演算子。プラス2つ、マイナス2つで、1の増減が可能です。C言語の用語だと後置インクリメント(デクリメント)といいますが、前置インクリメント(デクリメント)には対応してません。
| ++ | インクリメント、1の加算 | 『a++』は「aに1を足して、aに代入」 『a = a + 1』に相当 | 
| −− | デクリメント、1の減算 | 『a--』は「aから1を引いて、aに代入」 『a = a - 1』に相当 | 
普通の代入処理よりコード量が少ないためスピードは上です(あくまで代入との比較で)。 ちなみに、プラス1つ、マイナス1つでも機能しますが、スピードなどにいっさい違いはありません。
value = 0 repeat 5 ; 「value = value + 1」に等しい value++ mes value loop repeat 5 ; 「value = value - 1」に等しい value-- mes value loop
代入演算子 (符号の反転)
元の数値がマイナスの場合はプラスに、プラスの場合はマイナスに符号が反転します。
value = -10 mes -value value = 10 value2 = -value mes value2
左辺ベースの型変換
HSP特有の処理として、演算する左辺の型(整数値・文字列・実数値)をベースに右辺の型変換が行われます。
| 整数値 + "文字列" 整数値 − "文字列" 整数値 * "文字列" | 文字列が中身0の整数値が代入された変数と判断 (除算は不可能なので必ずHSPエラー19) | 
| 整数値 + "数値文字列" 整数値 − "数値文字列" 整数値 * "数値文字列" 整数値 / "数値文字列" | 整数値同士のの加算・減算・乗算・除算 | 
| "文字列" + 整数値 | 加算が文字列同士の結合 (それ以外は不可能なので必ずHSPエラー21) | 
| 整数値 + 実数値 整数値 − 実数値 整数値 * 実数値 整数値 / 実数値 | 整数値同士の加算・減算・乗算・除算 <C言語とは異なる> | 
| 実数値 + 整数値 実数値 − 実数値 実数値 * 実数値 実数値 / 実数値 | 実数値同士の加算・減算・乗算・除算 | 
文字列が数字の場合は、HSPエラーが表示される定番どころ。左辺でint関数する、あるいは左辺で 加算(0)か乗算(1)の処理を付け加えます。また、実数値(小数点)の場合は、C言語で言う左辺の 「格上げ」が行われないので注意。double関数で変換する、あるいは左辺で加算(0.0)か乗算(1.0) の処理を付け加えます。
キーワード de HSP
- 無料プログラミング
- HSPダウンロード
- 実行ファイル作成
- HSP動作環境
- 演算子
- 文字列操作
- 命令・関数一覧
- アイコン変更
- PACKFILE
- PACKFILE編集
- #packopt
- #deffunc
- HSPエラー
- HSPエラー番号
- HSPエラー7
- HSPエラー12
- HSPエラー13
- HSPエラー33
- HSPエラー38
- HSPエラー41
- ホームページ作成
- バージョン
- フォント
- オブジェクト
- ボタン
- 入力ボックス
- オブジェクト非表示
- Win32 API
- メニュー
- HSPLet
- サウンド再生
- 画像
- PNGファイル
- HSP質問掲示板
- デバッグ
- ドラッグ&ドロップ
- ブラウザ作成
- HSP書籍本