使用 repl.it 在QuickBasic中编程?



我正在尝试打开一个"复古计算"类,并希望让人们有机会在家中完成项目(无需随身携带 1980 年的 3kb 怪物(我听说 repl.it 拥有每种编程语言,它有 QuickBasic 吗,我如何在线使用它?提前感谢您的帮助!

你可以这样做(提示:搜索QBasic;它与QuickBASIC共享语法(,但你应该意识到它有一些限制,因为它运行在一个不完整的JavaScript实现上。 为了完整起见,我将重现原始博客文章中的信息:

什么有效

仅支持文本模式。最常见的命令(足以运行 半字节(被实施。其中包括:

  • 子和函数
  • 阵 列
  • 用户类型
  • 共享变量
  • 循环
  • 从屏幕输入

什么不起作用

  • 不支持图形模式
  • 不允许与 IF/THEN 在同一行上发表任何语句
  • 不支持行号
  • 只有 NIBBLES 使用的内置函数。实施 BAS
  • 所有子例程和函数都必须使用 DECLARE 声明

这远未完成。AC0KG在评论中指出,P=1-1不起作用。

简而言之,它还需要 50 或 100 小时的工作,并且有 没有理由这样做。

我无法确定的一个警告是像INPUTLINE INPUT这样的陈述...... 他们似乎在 repl.it 上对我不起作用,我不知道还有什么地方可以找到 qb.js托管。


我的建议:FreeBASIC

如果可能的话,我会推荐FreeBASIC。 它本质上是一种用C++(我知道的最后一个(编码的现代重新实现,具有附加功能。

旧的DOS的东西,如DEF SEG语句和VARSEG函数不再适用,因为它是一个现代的BASIC实现,在32位平面地址空间而不是16位分段内存上运行。 我不确定旧的SADD函数和新的StrPtr函数之间有什么区别,如果有的话,但想法是一样的:返回构成字符串的字节的地址。

你也可以禁用一些东西,并使用#lang "qb"作为程序的第一行来维护QB兼容性,因为使用默认的"fb"方言时会有明显的差异,或者你可以接受新功能并避免使用"qb"方言,主要关注编程概念;选择权在你。 无论您选择哪种方言,基本内容都应该可以正常工作:

DECLARE SUB collatz ()
DIM SHARED n AS INTEGER
INPUT "Enter a value for n: ", n
PRINT n
DO WHILE n <> 4
collatz
PRINT n
LOOP
PRINT 2
PRINT 1
SUB collatz
IF n MOD 2 = 1 THEN
n = 3 * n + 1
ELSE
n = n  2
END IF
END SUB

关于QB64的一句话

有人可能会争辩说,有一种更兼容的转译器称为QB64(除了一些东西,比如DEF FN......(,但如果你想要一个供学生使用的工具,我不能推荐它。 对于 Windows 用户来说,这是一个很大的下载,它的语法检查有时可能有点差,以至于您可能会看到 QB 代码编译,只是看到一条神秘的消息,例如"C++编译失败!有关详细信息,请参阅内部\temp\编译.txt"。 简而言之,它是可用且高度兼容的,但它需要一些工作,例如 repl.it 使用的 qb.js 脚本。


另一种选择:DOSBox和自动运行

您还可以找到一种方法在DOSBox之类的东西中运行QB 4.5的实际副本,并简单地修改默认DOSBox.conf(或任何名称(中的自动运行信息以自动启动QB。 然后只需将修改后的DOSBox.conf重新打包到一个不错的安装程序中即可,以便于分发(NSIS,Inno Setup等(。 这将提供超越FreeDOS虚拟机的最复古的体验,因为您将处理16位分段内存,VGA等 - 当然都是模拟的。

最新更新