2024年10月09日 | 公開 |
記事にふりがなを付けたいときは、次のチェックボックスをクリックしてください。
これまでは、数字を入れる箱である、数値変数を使って来ましたが、今度は、文字列を入れる箱である、文字列変数を使ってみましょう。
ドル記号($)で終わる変数名にすると、文字列変数になります。例えば、A$
、FIRST_NAME$
、名字$
などは文字列変数の変数名です。
文字列変数には、代入文で、文字列を代入する事ができます。
例えば、A$="abc"
という代入文は、A$
という文字列変数に、abc
という文字列を代入します。
実際に試してみましょう。下の画面32で、A$="abc"ENTERと入力して、変数A$
にabc
という文字列を代入した後に、PRINT A$ENTERと入力して、A$
の値を確認してください。
A$="abc"ENTER、PRINT A$ENTERと、順に入力してください。
そうすると、実行例58に示す表示になります。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok A$="abc" ← 変数A$にabcという文字列を代入 Ok PRINT A$ ← A$の値を表示させる abc ← A$の値のabcが表示される Ok
この様に、PRINT文で、ちゃんとA$
にabc
という文字列が代入されている事が、確認できます。
ある数値変数と、その数値変数の変数名の後ろに$
を付けた文字列変数とは、まったく別の変数として、同時に使う事ができます。
例えば、A
という数値変数と、A$
という文字列変数は、別の変数で、それらは同時に使う事ができます。
実際に試してみましょう。下の画面33で、A=5ENTER、A$="abc"ENTER、PRINT A,A$と、順に入力してください。
A=5ENTER、A$="abc"ENTER、PRINT A,A$と、順に入力してください。
そうすると、実行例59に示す表示になります。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok A=5 ← 変数Aに5を代入 Ok A$="abc" ← 変数A$にabcという文字列を代入 Ok PRINT A,A$ ← AとA$の値を表示させる 5 abc ← 5とabcが表示される Ok
この様に、A
とA$
は、全く別の変数として扱われている事が分かります。
ところで、リスト6のプログラムを実行すると、何が起こるか考えてください。
10 A$="おじいさん"
20 B$="おばあさん"
30 PRINT "昔むかし、ある所に、";A$;"と";B$;"が住んでいました。";
40 PRINT "ある日のこと、";A$;"は山に柴刈りに、";B$;"は川に洗濯に行きました。";
50 PRINT B$;"が川で洗濯をしていると、川上から大きな桃が、";
60 PRINT "どんぶらこ、どんぶらこと流れてきました。"
何が起こるか考えたら、次に、リスト6のプログラムを実行してみましょう。下の画面34には、すでにリスト6のプログラムが入力されています。RUNENTERと入力して、実行してください。
RUNENTERと入力すると、リスト6のプログラムを実行できます。
そうすると、実行例60に示す表示になります。
Ok
10 A$="おじいさん"
20 B$="おばあさん"
30 PRINT "昔むかし、ある所に、";A$;"と";B$;"が住んでいました。";
40 PRINT "ある日のこと、";A$;"は山に柴刈りに、";B$;"は川に洗濯に行きました。";
50 PRINT B$;"が川で洗濯をしていると、川上から大きな桃が、";
60 PRINT "どんぶらこ、どんぶらこと流れてきました。"
RUN ← プログラムを実行する
昔むかし、ある所に、おじいさんとおばあさんが住んでいました。ある日のこと、おじいさんは山に柴刈りに、おばあさんは川に洗濯に行きました。おばあさんが川で洗濯をしていると、川上から大きな桃が、どんぶらこ、どんぶらこと流れてきました。
Ok
この様に、「昔むかし、ある所に、おじいさんとおばあさんが住んでいました…」と、桃太郎の話を表示します。
プログラムの10行で、A$
におじいさん
という文字列を代入しています。
20行では、B$
におばあさん
という文字列を代入しています。
30行~60行のPRINT文で、桃太郎の話を表示しています。
なお、30行~50行のPRINT文の様に、PRINT文の最後がセミコロン(;)で終わっていると、表示の際に改行をしません。つまり、30行~60行のPRINT文で表示している内容は、途中に改行をはさまずに表示されます。
桃太郎の話を表示する際に、登場人物の名前を、一旦A$
(おじいさん)とB$
(おばあさん)の2つの文字列変数に代入してから使っている点が、このプログラムのポイントです。この様に、名前を文字列変数に入れておくと、プログラムの最初の代入文を書き換えるだけで、登場人物を変更できます。
例えば、10行を10 A$="太郎"
に書き換え、20行を20 B$="花子"
に書き換えると、「昔むかし、ある所に、太郎と花子が住んでいました。ある日のこと、太郎は山に柴刈りに、花子は川に洗濯に行きました…」という具合に、登場人物が太郎と花子の桃太郎の話が表示されます。
是非画面34で、A$
とB$
に代入する文字列を書き換えて、おじいさんやおばあさん以外の人が登場する桃太郎の話を表示してみてください。
INPUT文を使うと、プログラムの実行時に、ユーザー(BASICで作ったプログラムを使う人)が入力した値を、変数に代入する事ができます。
試しに、INPUT文を使ってみましょう。下の画面35で、INPUT AENTERと入力してください。
INPUT AENTERと入力してください。
そうすると、実行例61の様に、クエスチョンマーク(?)が表示されます。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok INPUT A ← INPUT文 ? ← ?が表示されて入力状態になる ← ここにOkが表示されていない
INPUT文を入力した後に、まだOkが表示されていない事から分かる様に、まだINPUT文は実行が終わっていません。(実行中です)
INPUT文というのは、ユーザーに値を入力してもらって、その入力された値を変数に代入するという働きをします。INPUT A
の場合なら、入力された値を変数A
に代入します。
実行例61の状態で、123ENTERと入力すると、変数A
に123という値が代入されます。続けてPRINT AENTERと入力すると、変数A
に123が代入されたことが確認できます。(実行例62参照)
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok INPUT A ? 123 ← 123を入力する Ok PRINT A ← PRINT文でAの値を確認 123 ← 先程入力した123が表示される Ok
INPUT文に文字列を指定して、ユーザーに値を入力してもらう際に、メッセージを表示する事ができます。
実際に試してみましょう。次の画面36で、INPUT "Xの値: ",XENTERと入力してください。
INPUT "Xの値: ",XENTERと入力してください。
そうすると、実行例63に示す様に、Xの値: というメッセージが出た後に、入力状態になるはずです。この様に、メッセージを表示すると、「変数Xに代入する値を入力すればいいんだな」と、入力する値の意味をユーザーが理解しやすくなります。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok INPUT "Xの値: ",X ← メッセージ付きのINPUT文 Xの値: ← メッセージの後で入力状態になる
実行例63の状態で、さらに456ENTERと、変数X
に代入する値を入力し、さらにPRINT XENTERと入力する事で、変数X
に代入された値を確認してください。456と表示されるはずです。(実行例64参照)
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok INPUT "Xの値: ",X Xの値: 456 ← Xの値として456を入力 Ok PRINT X ← Xに代入された値を表示させる 456 ← 先程入力した456が表示される Ok
X
の値として456を入力した例INPUT文を使うと、計算に使う値を、実行時にユーザーに入力してもらうプログラムを作る事ができます。
例として、リスト7の様なプログラムを作りました。
10 PRINT "XとYの2つの数を入力してください。"
20 INPUT "Xの値: ",X
30 INPUT "Yの値: ",Y
40 PRINT
50 PRINT "X + Y = ";X+Y
60 PRINT "X - Y = ";X-Y
70 PRINT "X × Y = ";X*Y
80 PRINT "X ÷ Y = ";X/Y
このプログラムは、X
とY
の2つの数を入力すると、その2つの数を使って四則演算するものです。
10行では、XとYの2つの数を入力してください。というメッセージを画面に表示します。
20行では、INPUT文で、入力された値を変数X
に代入します。
30行では、INPUT文で、入力された値を変数Y
に代入します。
40行では、何も表示せずに改行します。
50行では、X
とY
の和(X+Y
)を表示します。
60行では、X
とY
の差(X-Y
)を表示します。
70行では、X
とY
の積(X*Y
)を表示します。
80行では、X
とY
の商(X/Y
)を表示します。
下の画面37には、リスト7のプログラムがあらかじめ入力されています。RUNENTERと入力すると、実際に動作させることができます。
RUNENTERと入力すると、リスト7のプログラムを実行できます。
X
の値として8、Y
の値として5を入力した時は、実行例65の様な実行結果になります。
10 PRINT "XとYの2つの数を入力してください。" 20 INPUT "Xの値: ",X 30 INPUT "Yの値: ",Y 40 PRINT 50 PRINT "X + Y = ";X+Y 60 PRINT "X - Y = ";X-Y 70 PRINT "X × Y = ";X*Y 80 PRINT "X ÷ Y = ";X/Y RUN ← RUN命令でプログラムを実行 XとYの2つの数を入力してください。 Xの値: 8 ← Xの値として8を入力 Yの値: 5 ← Yの値として5を入力 X + Y = 13 ← 8+5の計算結果を表示 X - Y = 3 ← 8-5の計算結果を表示 X × Y = 40 ← 8×5の計算結果を表示 X ÷ Y = 1.6 ← 8÷5の計算結果を表示 Ok
X
の値を8、Y
の値を5として実行した例INPUT文で、ユーザーが入力した文字列を、文字列変数に代入する事もできます。
例えば、リスト8のプログラムを見てください。
10 INPUT "名前を入力してください: ",NAME$
20 PRINT "こんにちは、";NAME$;"さん。";NAME$;"って、いい名前ですね。"
このプログラムの10行のINPUT "名前を入力してください: ",NAME$
というINPUT文では、名前を入力してください: というメッセージを表示してから、変数NAME$
に代入する文字列の入力状態になります。
20行のPRINT文では、10行のINPUT文で入力したNAME$
の値を利用したメッセージを表示します。
下の画面38には、リスト8のプログラムがあらかじめ入力されています。RUNENTERと入力すると、プログラムを実行できます。
RUNENTERと入力すると、リスト8のプログラムを実行できます。
プログラムを実行して、太郎
と入力すると、実行例66に示す様に、「こんにちは、太郎さん。太郎って、いい名前ですね。」と表示されます。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok 10 INPUT "名前を入力してください: ",NAME$ 20 PRINT "こんにちは、";NAME$;"さん。";NAME$;"って、いい名前ですね。" RUN ← RUN命令でプログラムを実行 名前を入力してください: 太郎 ← 太郎と入力 こんにちは、太郎さん。太郎って、いい名前ですね。 ← 20行で表示したメッセージ Ok
次のページでは、INPUT文について、さらに詳しい説明をします。