【第5章】文字列を扱う


 ここまでずっと数値データばかり扱ってきました。変数に代入するのもPRINT命令で画面に表示するのもすべて数値のみでした。この章では画面に数値以外の文字を表示したり、文字データを扱うことを覚えましょう。
 
[ストリングとは]


図5-1.文字を画面に表示する
図5-1.文字を画面に表示する


 まずは図5-1のように画面に文字を表示する方法です(思いっ切り筆者の趣味が入ったサンプルで申し訳ありません・・・汗)。これは、画面に何か表示するのだから PRINT命令を使うのかな、はい、そのとおりです。ではやってみましょう。プログラムはこうなるはず。では作って実行してみてください。


     PRINT C62型は国鉄で最後に作られた蒸気機関車
     END


図5-2.実行したらエラーになった
図5-2.実行したらエラーになった

 実行したらこうなってしまいました(図5-2)。では次のように直してください。実行結果は図5-1の通りになったと思います。

           PRINT "C62型は国鉄で最後に作られた蒸気機関車"
           END

 どこが違うのかわかりますか。そうです。「C62型は」の前と「機関車」の後ろに"(ダブルクォーテーションまたは引用符とよばれる)が入っています。この" "で囲まれたものを文字列とか文字リテラルストリングと呼びます。当カテゴリーでは今後ストリングといいます。プログラミング言語ではストリングもまた「式」です。ストリングであることを示す引用符はTiny BASICでは"(ダブルクォーテーション)のみです。プログラミング言語によっては'(シングルクォーテーション)が使えるものもありますが、Tiny BASICでは ' は別の意味を持つのでご注意ください。引用符は始めも終わりも " です。日本語の「 」のように始め終わりの区別がありません。
 最初の例がエラーとなった原因ですが、PRINT命令は続くオペランド(式)が数値、計算式、関数、ストリング以外のときはすべて変数とみなします。この場合だと「C62型~機関車」が" "で囲まれていないのでストリングではなく変数とみなされます。変数名は半角英数字という規則がありました(第2章)。なので「これは何?」ということでエラーになってしまったというわけです。
 では次のようなプログラムはどういう結果になるでしょうか。考えてみてください。

        PRINT 50+30
        PRINT "50+30"
        END

 結果は図5-3のようになります。1行目のPRINT命令のオペランドの内容は 50+30 の計算結果ですが、2行目は " で囲まれているため「ご、ゼロ、たす、さん、ゼロ」というストリングとみなされていることがわかります。

図5_3.
図5-3. " "で囲むと計算式とはみなされない

 ところで、大変細かいことなのですが、お気づきになったでしょうか。PRINT命令での表示のとき、ストリングは普通に(左詰めで)表示されますが、数値の場合は最上桁の左側に半角1文字分のスペースが空きます。これは本来正負を表す + 、 - の符合が入るところです。負の数の場合は - (マイナス)が表示されますが、正の数の場合、 + (プラス)は省略されます。トライアルコード(3和音)では、マイナーコードを表す小文字のmは書かれるけれど、メジャーコードを表す大文字のMは普通は省略されるというのと似ています(筆者の本業は・・・ええい、しつこい!)
図5_4.メジャーコード(左)とマイナーコード(右)
図5_4.メジャーコード(左)とマイナーコード(右)

「変数にストリングを代入する」
 
 次のプログラムを実行すると、図5_5のようになります。入力窓ではご自分の名前でも好きな人の名前でもなんでもいいので入れてください。
                          A$="さん、こんにちは"
                          INPUT B$
                          A=5
                          C$=B$+A$
                          D$=DATE$
                          PRINT C$
                          PRINT
                          PRINT "今日は";D$;"です","今日もお仕事がんばってください"
                          PRINT A
                          END
図5_5.実行結果
図5_5.実行結果

 プログラム1行目の代入文を見てください。ストリングはこのように変数に代入することもできます。ストリングを入れる変数は変数名の後ろに半角の $ (ダラー、またはドルマーク)を付けます。
 2行目にはINPUTがありますが、ストリングはキーボードから入力し、変数に代入することもできます。
 3行目ですは変数Aに数値を代入しています。変数Aは1行目ですでに使われていますが、AとA$は違う変数とみなされますので文法的にはこれで問題ありません(プログラムはわかりにくくなりますが)。

 4行目です。「えっ?文字と文字のたし算って?」と思われた方もいらっしゃると思います。これはたし算ではなく、ストリングの連結です。このサンプルの場合、A$に入っているストリングの後ろに変数B$に入っているストリングが連結されそれが変数C$に代入されます。
 5行目に出てきたDATE$は、画面に美少女が現れてデートしてくれる・・・わけではなく(冷汗)、今日の日付です(現在のパソコンは、筆者の知る限りすべての機種で内部にカレンダー・時計機能を持っています)。DATE$はコンピュータが管理している日付を引っ張り出してくる(多くのプログラミング言語のマニュアルでは「与える」という言い方をします)関数です。Windows10+Tiny BASICの場合、日付は西暦4桁/月2桁/日2桁になります。DATE$は $ が付いているので想像つくと思いますが、日付をストリングで与えますから、 $の付いた変数に代入して使うことが可能です。
 7、8行目のPRINT命令の使い方は、今までやってきたものとかなり様相が違います。PRINT命令は続くオペランドの中に式(表示するもの)が複数入っていてもよいのですが、その区切りを ; にすると続けて表示、 , にすると少し間隔を空けて表示します。またオペランドが全くないPRINTだけだと改行のみ行ないます。1行空けるときなどに使います。

 ストリングの扱い方とPRINT命令のいろいろな使い方を覚えると、見やすい画面、使いやすいプログラムが作れるようになります。次章でやってみましょう

【この章のまとめ】

画面に文字を表示するには表示したい文字を " で囲む

"  "で囲まれたものを文字列、文字リテラル、ストリングという

変数名に $ を付けた変数にはストリングが代入できる

PRINT命令で数値を表示すると最上桁の左に正負の符合が入る半角1つのスペースが空く

PRINT命令で複数の式を表示させるとき、区切りを ; にすると続けて表示、 , にすると少し間隔を空けての表示となる。オペランドが何もないと改行のみ行なう

DATE$はコンピュータが管理している日付をストリングで与える関数である

コメント一覧
コメント投稿

名前

URL

メッセージ

- CafeLog -