プログラミングをしていると、「計算結果をメッセージと一緒に表示したい」とか、「ユーザーが入力した数字(文字列として受け取る)を使って計算したい」といった場面がよくあります。😊
BASICでは、数値データを文字列データに、あるいはその逆に、文字列データを数値データに変換するための便利な関数が用意されています。それが STR$
関数と VAL
関数です。
これらを使いこなすことで、プログラムの表現力や柔軟性がぐっと高まりますよ!💪 それでは、それぞれの使い方を見ていきましょう。
STR$ 関数: 数値を文字列に変換する
STR$
関数は、引数として与えられた数値を、それに対応する文字列に変換します。計算結果などをメッセージの一部として表示したい場合に特に役立ちます。
基本的な使い方:
STR$(数値 または 数値変数)
例を見てみましょう:
10 SCORE = 100
20 SCORE_STR$ = STR$(SCORE)
30 PRINT "あなたの得点は " + SCORE_STR$ + " 点です!" ' 文字列として連結
40
50 ' 直接数値を変換することも可能
60 AGE = 25
70 PRINT "彼は " + STR$(AGE) + " 歳です。"
実行結果のイメージ:
あなたの得点は 100 点です!
彼は 25 歳です。
この例では、数値変数 SCORE
の値 100
を STR$
で文字列 "100"
に変換し、他の文字列と +
で連結しています。同様に、数値 25
も文字列に変換してメッセージに組み込んでいます。
STR$
で変換した文字列の先頭に、正の数ならスペース、負の数ならマイナス記号 -
が付加されることがあります。表示を整えたい場合は、RIGHT$
関数などと組み合わせて調整することもあります。VAL 関数: 文字列を数値に変換する
VAL
関数は、STR$
とは逆に、数字を表す文字列を実際の数値データに変換します。INPUT
文などでユーザーから数字の入力を受け取った場合、それは通常文字列として扱われるため、計算に使う前に VAL
関数で数値に変換する必要があります。
基本的な使い方:
VAL(文字列 または 文字列変数)
例を見てみましょう:
10 INPUT "あなたの年齢は? "; AGE_STR$
20 AGE_NUM = VAL(AGE_STR$)
30 PRINT "10年後、あなたは "; AGE_NUM + 10; " 歳ですね。"
40
50 PRICE_STR$ = "1980"
60 TAX_RATE = 0.1
70 PRICE_NUM = VAL(PRICE_STR$)
80 TOTAL = PRICE_NUM * (1 + TAX_RATE)
90 PRINT "税込価格は "; TOTAL; " 円です。"
実行例 (ユーザーが “30” と入力した場合):
あなたの年齢は? 30
10年後、あなたは 40 歳ですね。
税込価格は 2178 円です。
最初の部分では、INPUT
で受け取った文字列 AGE_STR$
を VAL
で数値 AGE_NUM
に変換し、その後の足し算に使っています。次の部分では、文字列 "1980"
を数値に変換して、消費税込みの計算を行っています。
文字列が数字で始まらない場合:
VAL
関数は、文字列の先頭から数字として解釈できる部分だけを読み取ります。数字以外の文字が現れた時点で読み取りを停止します。もし文字列が数字で始まっていなければ、通常 0
を返します。
10 A$ = "123XYZ"
20 B$ = "PRICE: 500"
30 C$ = " -42 " ' 先頭や末尾のスペースは無視されることが多い
40
50 PRINT VAL(A$) ' 結果: 123
60 PRINT VAL(B$) ' 結果: 0 (先頭が数字でない)
70 PRINT VAL(C$) ' 結果: -42
VAL
関数が意図通りに数値を返しているか確認するような処理を入れると、より安全なプログラムになります。👍まとめ
今回は、数値と文字列を相互に変換する STR$
関数と VAL
関数について学びました。
関数 | 機能 | 入力 | 出力 | 主な用途 |
---|---|---|---|---|
STR$(数値) | 数値を文字列に変換 | 数値 | 文字列 | 計算結果をメッセージに埋め込むなど |
VAL(文字列) | 文字列を数値に変換 | 文字列 | 数値 | ユーザー入力を計算に使う、文字列中の数値を抽出するなど |
これらの関数をうまく使うことで、データの種類を柔軟に扱い、プログラムでできることの幅が広がります。ぜひ、いろいろな場面で試してみてくださいね!🎉
次は「Step 4: 配列とデータ構造」に進み、複数のデータをまとめて扱う方法を学びましょう!
コメント