« 【チラシのうら 31日目】MID$,ASC,LENの文字列操作関数を実装してみた | トップページ | 【チラシのうら 33日目】MSX-BASICの文法をみて思う事 »

2026年7月27日 (月)

【チラシのうら 32日目】IF~THEN~ELSE~ENDIFを実装してみた

IF文は1行に IF THEN ELSE が存在するMSX-BASIC仕様にしていましたが、
Chat-GPTに作ってもらったBASICのサンプル(モールス信号変換)のコードが
複数行に記述する IF~THEN~ELSE~ENDIF 構文を使用していました。
※昨日はMSX-BASIC仕様のIF文に書き換えて実行していました。

やっぱりIF~THEN~ELSE~ENDIFはあった方が便利だよなぁ…と言う訳で実装してみました。
IF構文を構造ブロックスタックに積んでないのでELSE区のエラーチェックがいい加減…と言うかエラーチェックしてません。
なのでIF区なしでELSEが出現するとENDIFまでスキップするGOTO文として動作します。 (;´∀`) コレハ コレデ ヨイ キガ シテキタ
この応用で WHILE~WHILEEND / DO~UNTILも実現できそうな気が…


------------------------
M5Z-80 BASIC Ver.0.3a
------------------------

10 REM ******************************
20 REM * MORSE CODE CONVERTER
30 REM ******************************
40 DIM M$(36)
50 RESTORE
60 FOR I=1 TO 36
70 READ M$(I)
80 NEXT
90 INPUT "TEXT";A$
100 FOR I=1 TO LEN(A$)
110 C$=MID$(A$,I,1)
120 IF C$=" " THEN PRINT " / ";:GOTO 200
130 N=ASC(C$)
140 IF N>=97 AND N<=122 THEN N=N-32
150 IF N>=65 AND N<=90 THEN
160 PRINT M$(N-64);" ";
170 GOTO 200
180 END IF
190 IF N>=48 AND N<=57 THEN PRINT M$(N-21);" ";
200 NEXT
210 PRINT
220 END
1000 DATA .-,-...,-.-.,-..,.
1010 DATA ..-.,--.,....,..,.---
1020 DATA -.-,.-..,--,-.,---
1030 DATA .--.,--.-,.-.,...,-
1040 DATA ..-,...-,.--,-..-,-.--
1050 DATA --..
1060 DATA -----,.----,..---,...--
1070 DATA ....-,.....,-....,--...
1080 DATA ---..,----.

READY.

run
TEXT?I LOVE YOU
.. .-.. --- ...- . -.-- --- ..-
READY.


ここまでの成果

  • IF~THEN~ELSE~ENDIF

|

« 【チラシのうら 31日目】MID$,ASC,LENの文字列操作関数を実装してみた | トップページ | 【チラシのうら 33日目】MSX-BASICの文法をみて思う事 »

BASIC」カテゴリの記事

コメント

この記事へのコメントは終了しました。