テキストを表示(ひょうじ)してみる
このページではHSPのウィンドウに指定(してい)したテキストを表示(ひょうじ)させるだけですが、

プログラム(はじ)めての(ひと)必見(ひっけん)のエスケープシーケンスの説明(せつめい)や、

演算子(えんざんし)について、HSP特有(とくゆう)(?)の計算手順(けいさんてじゅん)があります。


タイトルに()いてるように白色(しろいろ)のウィンドウに表示(ひょうじ)するよ。

いきなりだけどテキストを表示(ひょうじ)する命令(めいれい)()く。

その命令名(めいれいめい)mes()ばれているんだ。

(おそ)らくmessageの(りゃく)間違(まちが)いないと(おも)う。

(まえ)のページのようにコレだけを()(はや)まって勝手(かって)()かないでよ。

(べつ)重大(じゅうだい)問題(もんだい)()きるわけじゃないからやってもいいけどね。

(すで)()いた(ひと)()かると(おも)うけど「(なに)()こらない」んだ。

このmes命令(めいれい)はテキストを表示(ひょうじ)させる命令(めいれい)表示(ひょうじ)するテキストが設定(せってい)されなきゃ(なに)表示(ひょうじ)しないってわけ。

()たり(まえ)()えば()たり(まえ)表示(ひょうじ)させるのを設定(せってい)してないのに表示(ひょうじ)されるのは(いや)だね。

それじゃあどうやって表示(ひょうじ)させるんだろう?

(まえ)のページにも()いたように命令名(めいれいめい)前後(ぜんご)(あいだ)余計(よけい)なもの(スペースはいいが)を()れると

HSPは命令名(めいれいめい)とは解釈(かいしゃく)してくれない。

	mes文章表示テスト中
	stop
じゃあどうすればいいのだろう? (かん)のいい(ひと)はすぐ()づくだろうが、 命令名(めいれいめい)とパラメーターの(あいだ)区切(くぎ)りを()れてやればいいわけだね。 ()ばすだけ時間(じかん)無駄(むだ)になるから(こた)えを()くと 区切(くぎ)記号(きごう)(文字(もじ))として半角(はんかく)スペースを()れるんだ。
	mes 文章表示テスト中
	stop
()いてある(とお)りに()くとうまくいく場合(ばあい)があるけどまだおかしいようだ。 おかしくなりそうな場合(ばあい)(かんが)えてみたよ。 <パターン1>動作(どうさ)するが(ただ)しくない結果(けっか)表示(ひょうじ)される その1        『0』と表示(ひょうじ)される場合(ばあい)は、        指定(してい)したテキストが『変数(へんすう)』と()うものだ、と誤認(ごにん)されているよ。        回避策(かいひさく)1が(あと)()いてあるからソレを()てね。 <パターン2>動作(どうさ)するが(ただ)しくない結果(けっか)表示(ひょうじ)される その2        全然違(ぜんぜんちが)数字(すうじ)表示(ひょうじ)される場合(ばあい)数字(すうじ)(あふ)れということが原因(げんいん)のようだよ。        回避(かいひ)出来(でき)ないんだけど回避策(かいひさく)2に()せているから()てね。 <パターン3>エラーが()る その1        文法(ぶんぽう)間違(まちが)ってる、といったエラーが発生(はっせい)する場合(ばあい)は、        指定(してい)したテキストが通常(つうじょう)文字(もじ)数字(すうじ)じゃなくて        記号(きごう)からはじまってるんじゃないかな?        コレもパターン1同様(どうよう)回避策(かいひさく)1を()てみると(なぞ)()ける。 <パターン4>エラーが()る その2        「計算式(けいさんしき)でエラーが発生(はっせい)した」というエラーが()場合(ばあい)は、        小数点以下(しょうすうてんいか)もある数字(すうじ)表示(ひょうじ)しようとしたんじゃないかな?        コレについては回避策(かいひさく)3を()てね。 <パターン5>エラーが()る その3        HSP2ではもう1つの「計算式(けいさんしき)でエラーが発生(はっせい)した」となるパターン。        「mes 123 stop」といった(かん)じに(よこ)(なら)べてないかな?        コレについては回避策(かいひさく)4を()よう。 回避策(かいひさく)1> 文字列(もじれつ)として(あつか)        下記(かき)(よう)にダブルクォーテーション『"』で(かこ)まなけなければならない。        mes "テキスト"        この命令(めいれい)(ぎょう)(あと)(なに)記述(きじゅつ)しない場合(ばあい)には        つけなくてもエラーにならないのだけどね。一応(いちおう)はつけよう。        ダブルクォーテーション『"』がないもので数字(すうじ)からはじまらないテキストは        『変数(へんすう)』であるが、記号(きごう)からはじまるものは変数(へんすう)にはならない。        きちんとダブルクォート・文字(もじ)数字(すうじ)から(はじ)まってるよという(ひと)は        (ぜん)ページの命令(めいれい)のところで()いたように全角文字(ぜんかくもじ)で        ()かれているかmes前後(ぜんご)文字(もじ)(はい)っているのだと(おも)う。        その場合(ばあい)(ぎょう)全削除(ぜんさくじょ)して()(なお)そう。 回避策(かいひさく)2> 数字(すうじ)として(あつか)        ダブルクォーテーション『"』で(かこ)まなくてもたいていは「0」と表示(ひょうじ)されずに        指定(してい)どおりの数字(すうじ)表示(ひょうじ)されることと(おも)う。        でもあまり(おお)きい数字(すうじ)(ちい)さい数字(すうじ)(マイナス())は        オーバーフローやアンダーフローという限界(げんかい)()えた問題(もんだい)発生(はっせい)してしまう。        上記(じょうき)問題(もんだい)は「-2147483668〜2147483667」以外(いがい)(あつか)うとなる。        どうなるかというと、(まった)(こと)なる(あたい)となってしまうんだ。        「2147483668」は「-2147483668」、「2147483669」は「-2147483667」と表示(ひょうじ)される。        しかし、ここで()ってるのは計算用(けいさんよう)使(つか)場合(ばあい)(はなし)。        計算(けいさん)することなく表示(ひょうじ)だけでいいのならこの(かぎ)りではないよ。        何十桁(なんじゅっけた)という(おお)きさのものも()れられるんだ。        文字列(もじれつ)としてダブルクォーテーション『"』で(かこ)むとよい。        mes "98765432100" 回避策(かいひさく)3> 小数(しょうすう)(あつか)        整数(せいすう)回避策(かいひさく)2で()いた範囲(はんい)だけ        (あつか)うことができるけど小数(しょうすう)はHSP2で(あつか)うことができないよ。        厳密(げんみつ)には(まったく)(あつか)えないわけじゃなく工夫(くふう)すればいける。        (はじ)めて()もない(ひと)には滅茶苦茶(めちゃくちゃ)高度(こうど)だが。        DLLを使(つか)うという()もあるけどね。        どうしても使(つか)いたい(ひと)TIPS文字列編(もじれつへん)()てね。        (はじ)めての(ひと)であっても簡単(かんたん)使(つか)えるようにしてるから。        回避策(かいひさく)2同様(どうよう)表示(ひょうじ)だけならダブルクォーテーションで(かこ)む。 回避策(かいひさく)4> 改行(かいぎょう)する        1(ぎょう)命令(めいれい)(なら)べないで改行(かいぎょう)しよう。        ()けないわけじゃないけど見易(みやす)さを(かんが)えてね。        複数(ふくすう)()くのをマルチステートメントというけど、        そのやり(かた)(つぎ)のページで。 ふう。 問題(もんだい)のあった(ひと)はコレのどれかに()てはまったかな。 これ以外(いがい)のパターンで()からない(とき)は、 技術掲示板(ぎじゅつけいじばん)()ずかしがらずに()いてくれていいよ。 回避策(かいひさく)()いたけど表示(ひょうじ)できるテキストは2種類(しゅるい)あるんだ。 1つは文字(もじ),文字列(もじれつ)テキスト。もう1つは数字(すうじ)テキスト。 表示(ひょうじ)したものは文字(もじ),文字列(もじれつ)であれ数字(すうじ)であれ(おな)じもの。 (なに)(ちが)うのかと()うと、数字(すうじ)計算(けいさん)できるってことだね。 もっと()うと「1+1」というものを文字列(もじれつ)として表示(ひょうじ)させると 「1+1」と画面(がめん)表示(ひょうじ)されることができて、 数値(すうち)だと「1+1」の計算結果(けいさんけっか)である「2」が表示(ひょうじ)されるってこと。 計算(けいさん)()(かた)最後(さいご)()いてあるからそこを()てね。 「1+1」という文字列(もじれつ)として表示(ひょうじ)したい場合(ばあい)回避策(かいひさく)何度(なんど)()てきたダブルクォーテーション『"』で(かこ)
	mes "1+1"
	stop
こうすると「1+1」と表示(ひょうじ)されるだけで計算(けいさん)(おこな)われない。 説明文等(せつめいぶんとう)で「『1+1』というのは…」と表示(ひょうじ)したいのに 「『2』というのは…」と表示(ひょうじ)されちゃうと(こま)るよね? 普通(ふつう)のパターンだと数字(すうじ)計算(けいさん)必要(ひつよう)だね。 そういう場合(ばあい)、ダブルクォーテーションで(かこ)まずに数字(すうじ)だけ()けばOK。
	mes 1+1
	stop
さて、いきなりですがここで問題(もんだい)です。 HSPウィンドウに「HSPBCの管理人(かんりにん)は"アルティメット"です。」と (かぎ)カッコ「」で(かこ)んだ中身(なかみ)全部表示(ぜんぶひょうじ)させてみて。 きちんと表示(ひょうじ)された? 「です。」とだけ表示(ひょうじ)されちゃった な〜んて(ひと)はいるんじゃないかな…。 いるでしょう? そう、(きみ)(こと)だよ。 なんで「です。」とだけ表示(ひょうじ)されたんだろう? (かんが)えてみようね。 (じつ)はコレ…HSPのバグなんだ。 ということではないよ。 (きみ)()(かた)(わる)かっただけなんだ。 ()いたプログラムをもう一度(いちど)よく()てほしい。
	mes "HSPBCの管理人は"アルティメット"です。"
	stop
(まった)(おな)じことを()いたんだよね? コレを分解(ぶんかい)して(かんが)えていってみよう。 mes命令(めいれい)は「ダブルクォーテーションで(かこ)んだモノがパラメーター」だったよね。

mes "HSPBCの管理人は"アルティメット"です。" ← ダブルクォーテーションで(かこ)んだモノ

それなら「HSPBCの管理人(かんりにん)はです。」となってもいいのでは、となるんだけど、 HSPでは最後(さいご)のパラメータ部分(ぶぶん)だけが表示(ひょうじ)されるようだよ。 何故(なぜ)そうなるのか(くわ)しくは()らない…。 この「"」問題(もんだい)のほかに「\」が表示(ひょうじ)されないといった問題(もんだい)や、 1つのmes命令(めいれい)改行(かいぎょう)する方法(ほうほう)()いてあるから()んで。 「"」というのや「\」を文字列内(もじれつない)()きたい(とき)改行(かいぎょう)()れたい(とき)はエスケープしなきゃ表示(ひょうじ)できないよ。 (むずか)しい言葉(ことば)だけど、(べつ)のモノを入れて(おぎな)わないとダメってこと。 (べつ)のモノとは、「\」を表示(ひょうじ)したいものの(まえ)()れてやればいいんだ。 つまり「"」を表示(ひょうじ)したい場合(ばあい)は「\"」とすればいいし、 「\」を表示(ひょうじ)したい(とき)は「\\」と2つならべれば1つの「\」を表示(ひょうじ)できる。 改行(かいぎょう)()かりにくいけど「\n」で複数行(ふくすうぎょう)()ける。
	mes "\"を表示したい時は\\\"と書く\n\\を表示したい時は\\\\と書く\n改行は\\nと書く"
	stop
他言語(たげんご)だと(ほか)にタブを()れる「\t」があったりするけど、 HSP2では使(つか)おうとしても文字化(もじば)けするだけで使(つかえ)えない。 無理矢理(むりやり)使(つか)えるようにしたのがTIPS文字列編(もじれつへん)()いてあるよ。 「\n」というのは(くわ)しくは『改行(かいぎょう)』ではなく『復帰改行(ふっきかいぎょう)』。 改行(かいぎょう)(あらわ)す「\r」でも「\n」と(おな)じように使(つか)えるみたい。 ヘルプに「改行(かいぎょう)=\n」となっているし「\n」と()いた(ほう)がいいと(おも)う。 もしかしたら(なん)らかの問題(もんだい)があるのかもしれないからね。 1つのmes命令(めいれい)改行(かいぎょう)する方法(ほうほう)がもう1つあったよ。 それは(ちゅう)カッコを使(つか)うというものだ。
	mes {"
	こうすることで
	見た目の通り
	改行させることが出来るんだ。
	"}
	stop
直感的(ちょっかんてき)()かるだろうけど、「{」から「}」までが1つのブロック。 何度(なんど)もダブルクォーテーションで(かこ)むと文字(もじ)になると()いたけど、 シングルクォーテーションで(かこ)むと(べつ)のものになるよ。
	mes 'A'
	stop
「A」と表示(ひょうじ)されずに「65」と表示(ひょうじ)されたよね? Aが65と表示(ひょうじ)される。これで()づく(ひと)がいるんじゃないかな? ()づかない(ひと)(ほとんどか)の(ひと)説明(せつめい)すると、 シングルクォーテーションで(かこ)んだものはアスキーコードになるんだな。 指定(してい)した文字列(もじれつ)のどれでもなるというわけではなく、 1バイト()だけアスキーコードとなるんだ。 1文字目(もじめ)じゃなく1バイト()だよ。 間違(まちが)えないでね。 2バイト文字(もじ)だと上位(じょうい)バイトしか()ないのでいつも(おな)じようなコードだ。 1バイト以降(いこう)をアスキーコードにする(とき)命令(めいれい)使(つか)う。 それはココで説明(せつめい)しないけど命令名(めいれいめい)だけ()いておくとpeekだ。 さぁ(つぎ)命令(めいれい)紹介(しょうかい)するよ。 …といってもmes命令(めいれい)(おな)じテキストを表示(ひょうじ)する命令(めいれい)で、 やり(かた)(なに)全部(ぜんぶ)mes命令(めいれい)一緒(いっしょ)なんだ。 (ちが)(てん)はたった1つ。 それは命令名(めいれいめい)(ちが)うというのだけだよ…。 print命令(めいれい)というもので、書式(しょしき)は「print "strings"」だ。 (なん)命令名(めいれいめい)以外(いがい)がすべて(おな)命令(めいれい)存在(そんざい)するのか(なぞ)だけど()にしないことにしよう。 mes命令(めいれい)使(つか)(かた)はやったけど書式(しょしき)()いてなかったな。 書式(しょしき)()るとmes命令(めいれい)(おな)(かたち)なのがすぐ()かるよね? (はじ)めに命令名(めいれいめい)()いて、半角(はんかく)スペースをあける。 その(あと)にダブルクォーテーションで(かこ)まれた文字列(もじれつ)記述(きじゅつ)する。 …といったことを(あらわ)しているんだよ。 当然(とうぜん)計算(けいさん)する場合(ばあい)はダブルクォーテーションはいらない。 『strings』というは(とく)意味(いみ)はないよ。 こんな(ふう)()くんだ、という(れい)として()かれているだけのことだ。 早速(さっそく)使(つか)ってみよう。
	print "Hello! HSPworld."
	stop
何度(なんど)()(よう)mes,print命令(めいれい)一緒(いっしょ)命令(めいれい)自分(じぶん)使(つか)いやすい(ほう)使(つか)えばいいと(おも)うよ。 個人的(こじんてき)には文字数(もじすう)(すく)ないmes命令(めいれい)(ほう)がイイ。 文字数(もじすう)(すく)なくて毎回(まいかい)使(つか)うのに(らく)だって理由(りゆう)だけ。 簡単(かんたん)紹介(しょうかい)だけどコレでいいだろう…。 それじゃあ最後(さいご)計算(けいさん)について説明(せつめい)するから。 他言語(たげんご)をしたことのある(ひと)()ってるだろうけど、 加減乗除(かげんじょうじょ)全部(ぜんぶ)全部(ぜんぶ)一般(いっぱん)使(つか)われる演算子(えんざんし)(おな)じというわけではないよ? HSPの計算(けいさん)使(つか)演算子(えんざんし)(した)(とお)り。
加算(かさん)+
減算(げんざん)-
乗算(じょうざん)*
除算(じょざん)/
余算(よざん)\
(ひだり)ビットシフト<<
(みぎ)ビットシフト<<
論理積(ろんりせき)& , && , and , AND
論理和(ろんりわ)| , || , or , OR
排他的論理和(はいたてきろんりわ)^ , xor , XOR
<,>,=というのもあるけど計算(けいさん)には使(つか)わないから(はぶ)いているよ。 加減算(かげんざん)通常(つうじょう)(おな)じく+,−を半角文字(はんかくもじ)()く。
	mes 2 + 3
	mes 4 - 1
	stop
乗除算(じょうじょざん)一般(いっぱん)の×,÷を使(つか)わない。 *,/を半角文字(はんかくもじ)()んだよ。
	mes 2 * 5
	mes 3 / 2
	stop
(うえ)計算(けいさん)をしてもらって()づくと(おも)うけど、 ()(ざん)(しょう)((こた)え)は整数部分(せいすうぶぶん)しか()てこない。 整数(せいすう)しか計算(けいさん)出来(でき)ないと()いてたけど ココでも小数部分(しょうすうぶぶん)()()てられちゃうんだ。 乗除算(じょうじょざん)(なら)うのは(たし)小学(しょうがく)2,3(ねん)くらいだったかな? この計算部分(けいさんぶぶん)(ところ)まではさすがにココでは説明(せつめい)しないよ。 どこか(べつ)のサイトにでも()って勉強(べんきょう)してきておくれ…。 余算(よざん)というのを()らない(ひと)加減乗除(かげんじょうじょ)より(おお)いかも。 ()んで()(ごと)し、()(ざん)(あま)りを(もと)める演算(えんざん)だ。 上記(じょうき)赤丸(あかまる)部分(ぶぶん)余算(よざん)(もと)められる(ところ)余算(よざん)言語(げんご)によって演算子(えんざんし)(ちが)うから()をつけること。 HSPではエスケープシーケンスと(おな)「\」を使(つか)んだ。
	mes 11 \ 4
	stop
一般(いっぱん)計算(けいさん)(おな)じく()(すう)が0だとエラーになるんだよ。 2.6以前(いぜん)強制的(きょうせいてき)()ちてしまうエラーだったけど、 HSP2.6からエラーが()正常(せいじょう)(?)に終了(しゅうりょう)してくれるようになった。 コレは除算(じょざん)だけじゃなく余算(よざん)でも()こるんだよ。()をつけてね。 ビットシフトなどの論理(ろんり)(ビット)演算(えんざん)は ココで説明(せつめい)できるレベルを()えているから説明(せつめい)しないよ。 ()りたい(ひと)知識(ちしき)部屋(へや)()こう。 一般(いっぱん)計算手順(けいさんてじゅん)って()うのは()められているよね?
最優先(さいゆうせん)カッコ
乗算(じょうざん)除算(じょざん)
一番後(いちばんあと)加算(かさん)減算(げんざん)
カッコと()っても種類(しゅるい)(おお)いけどココでは省略(しょうりゃく)(たと)えば「5+4*3/2-1」のような計算(けいさん)(した)計算手順(けいさんてじゅん)だね。
1.4×312
2.12÷26
3.5+611
4.11−110
しかしHSPの通常計算(つうじょうけいさん)では(まえ)から計算(けいさん)するという 電卓(でんたく)と同じようなやり(かた)となるんだ。
1.5+49
2.9×327
3.27÷213(13.5)
4.13−112(12.5)
回避(かいひ)するにはHSPでも使(つか)えるカッコで矯正(きょうせい)するしかないだろう。
	mes 5 + 4 * 3 / 2 - 1
	mes 5 + ( ( 4 * 3 ) / 2 ) - 1
	stop
(こた)えによって処理(しょり)()えるプログラムを(つく)るときなんかは (とく)注意(ちゅうい)必要(ひつよう)になってくるね。 はい、一応(いちおう)このページはココまで。 けど、()わりってわけじゃあないぞ。最後(さいご)宿題(しゅくだい)だ。
Q1「C:\program files\hsp\hsp2.exe」と表示(ひょうじ)させよ
Q2「7÷2」の(あま)りを計算(けいさん)させて表示(ひょうじ)させよ
Q3表示部(ひょうじぶ)に「print 3□2」とすると、ウィンドウには「12」と表示(ひょうじ)された
四角(しかく)()てはまる演算子(えんざんし)(こた)えよ
(こた)えは(つぎ)のページで。
5ページへ進む 3ページへ戻る