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書籍本