所以我今天一直在使用QBASIC64 ......为了旧学校的缘故.
我在想:
a)您编写的最复杂的QBASIC代码是什么,
以及
b)您编写的最有用的代码是什么
(例子很好,但不是必要的^ _ ^ - 这是社区维基,只是为了好玩)
除Visual Basic之外,还可以使用哪些免费的IDE?
是否有任何与BASIC兼容的免费软件QBASIC IDE?
我有一本关于学习BASIC编程的旧书.它写得很好,很有趣,并且在教授计算机编程的第一步方面做得很好.这也是我的第一本关于编程的书,它开始为我所有.:)
现在还有一个人想要学习编程,(因为我不能自己去教他)我想不出一本更好的书来推荐他.当然,这种语言已经过时,但编程的基础并没有改变,而且这本书写得非常好,以至于我还没有看到一个等价物(不是我看过的,不可否认).
只有一个问题 - 因为这本书已经很老了,所以它写的是BASIC的一些方言,大约25年前曾在大型机上流行(或者我收集).这是必须的行编号,没有适当的文本编辑器(所有编辑都通过行号在命令行上发生)等等.当我第一次拿到这本书时,这已经严重过时了.
对我(和其他人)来说幸运的是,我发现语法几乎完全与Microsoft QBasic兼容.我记得的唯一区别是,在书中,字符串变量必须以¤QBasic所需的为后缀$.不知何故,他们两个都在旧键盘上的同一个键上结束,所以我自己发现了这个.
现在,我可以推荐获得QBasic或QuickBasic,但我想知道是否有更好,更现代的东西.Textmode屏幕,有限的慢速图形和64K的可用RAM是一种教育,但......
有什么建议?
我正在研究一些旧的qbasic代码.所有Goto语句都是混乱的.我是否正确,以下行将永远返回?
IF FLAG = 0 THEN TARGET = X: GOSUB 55000: TEMP = XI - TEMP2: RETURN
Run Code Online (Sandbox Code Playgroud)
因此,如果我理解正确,冒号就会在同一行上分隔语句.在if仅适用于TARGET = X的GOSUB,TEMP =,和RETURN将总是执行.正确?
我的一部分困惑是因为下一行是读
IF FLAG = 1 THEN STEP = X: GOSUB 115000
Run Code Online (Sandbox Code Playgroud)
因为第二个语句的标签从未在GOTO中使用过,所以我看不到它会被执行.
我需要一个从 0 到 10 或从 0 到 100 的完全随机数作为在 QBasic 中完成的随机抽取程序的值“NUM”。我目前有这个:
RANDOMIZE TIMER: A = INT((RND * 100)): B = INT((RND * 10)): C = (A + B)
NUM = INT(C - (RND * 10))
Run Code Online (Sandbox Code Playgroud)
这基本上只是一堆随机数学运算,以获得 1 到 100 之间的随机数。
问题是我经常得到相同或非常相似的数字。有更可靠的方法来做到这一点吗?
在GW-BASIC和QuickBASIC中,语句都是传递参数,其中一些是可选的,可以根据语句省略:
REM Move the text cursor to the specified column and row.
LOCATE row%, column%
REM Move the text cursor to the specified column without changing the row.
LOCATE , column%
Run Code Online (Sandbox Code Playgroud)
在GW-BASIC中,该CLEAR语句相当不寻常,因为它的第一个"参数"总是被省略:
CLEAR , basicMem
CLEAR , basicMem, basicStack
CLEAR , , basicStack
Run Code Online (Sandbox Code Playgroud)
在QuickBASIC中,basicMem由于解释器/运行时管理自己的内存,参数变为可选:
CLEAR , , basicStack
Run Code Online (Sandbox Code Playgroud)
我想知道的是,第一个"参数"是否曾用于GW-BASIC之前的任何东西,即这样的东西实际上是有用的:
CLEAR missingArg, basicMem, basicStack
REM ^^^^^^^^^^
REM here
Run Code Online (Sandbox Code Playgroud)
也就是说,在第一个逗号之前是否有过有目的的非空论证?
如果有人有任何想法,我很想知道!
我一直在研究一个项目,我在其中使用一个旧程序并创建它的新版本....事情是它是用Quick Basic编写的,它有一行我不明白的代码
ON FLAG% GOTO 1730, 1900
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这是什么??? 顺便说一句,我正在研究VisualBasic
我在Qbasic写一个程序.我想知道如何测试文件夹是否存在.
这个想法是:
IF "c:\user\basic\blablabla\" exists (?? how to programm the "exist" test?)
THEN CHDIR "c:\user\basic\blablabla\"
ELSE
MKDIR "c:\user\basic\blablabla\"
CHDIR "c:\user\basic\blablabla\"
ENDIF
Run Code Online (Sandbox Code Playgroud)
我希望我很清楚,
非常感谢你的建议!
:)
我有一个用 QuickBasic 编写的应用程序(游戏)。我拥有它的权利,但没有编写原始代码。我面前有源代码,但我在试图理解这一切时有点绞尽脑汁。有什么方法可以让逆向工程变得更容易吗?现在我正在使用 FbEdit,只是尝试将应用程序分解为各个组成部分。
我试图通过我的串口传递一个直接的ASCII文本命令,如下所示:
string cmd = "<ID00><PA>Hello World. ";
template.Serial.WriteLine(cmd);
Run Code Online (Sandbox Code Playgroud)
Serial是SerialPort属性引用.我也试过'Write(cmd)',但即使串口打开,命令也似乎永远不会通过.我发现我应该在消息的末尾添加一个回车符(cr)和一个换行符(lf),但我不知道如何在C#中将所有内容转换为字节但是它需要从我对协议的理解中作为ASCII文本传递.
我发现某人的QBasic源代码如下:
100 OPEN "COM1:9600,N,8,1,CS,DS,CD" AS 1
200 PRINT #1,"<ID00>";:REM SIGN ADDRESS, 00 FOR ALL
210 PRINT #1,"<PA>";:REM PAGE "A" (MESSAGE NUMBER, A-Z)
220 PRINT #1,"<FQ>";:REM OPTIONAL DISPLAY MODE, (FA-FZ), "APPEAR"
230 PRINT #1,"<CB>";:REM OPTIONAL COLOR CHANGE, (CA-CZ), "RED"
240 PRINT #1,"Hello World";:REM TEXT
250 PRINT #1, CHR$(13)+CHR$(10);:REM MUST END IN CARRIAGE RETURN/LINE FEED
Run Code Online (Sandbox Code Playgroud)
那么如何将CHR $(13)+ CHR $(10)转换为附加到c#代码中字符串行末尾的字符,以便通过串口发送?