我正在尝试开设一个“复古计算”课程,并希望让人们有机会在家里完成项目(而不是带着一个3kb的庞然大物走出1980年)我听说repl.it有每种编程语言,它有QuickBasic吗?我如何在网上使用它?提前感谢您的帮助!
发布于 2019-09-02 09:09:25
您可以这样做(提示:搜索QBasic;它与QuickBASIC具有相同的语法),但是您应该意识到它在an incomplete JavaScript implementation上运行时有一些限制。为了完整起见,我将复制原始博客文章中的信息:
什么是有效的
仅支持文本模式。实现了最常见的命令(足以运行半字节)。其中包括:
from screen
不起作用的是什么
不支持声明
这还远远没有完成。在评论中,AC0KG指出AC0KG不起作用。
简而言之,它还需要50或100个小时的工作,没有理由这样做。
有一点我还不能确定,那就是像INPUT或LINE INPUT这样的语句...它们似乎不适合我在repl.it上使用,而且我不知道还能在哪里找到托管的qb.js。
我的建议: FreeBASIC
如果可能的话,我会推荐使用FreeBASIC。它本质上是一个用C++ (我最后知道的)编写的带有附加功能的现代重新实现。
像DEF SEG语句和VARSEG函数这样的旧DOS不再适用,因为它是在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++编译失败!有关详细信息,请参阅internals\temp\compile.txt“。简单地说,它是可用的和高度兼容的,但它需要一些工作,比如repl.it使用的qb.js脚本。
另一种选择: DOSBox和autorun
你也可以找到一种方法,在像DOSBox这样的东西中运行QB4.5的实际副本,并简单地修改默认DOSBox.conf (或其他名称)中的自动运行信息,以自动启动QB。然后只需将其与修改后的DOSBox.conf重新打包在一个很好的安装程序中,以便于分发(NSIS,Inno Setup等)。这将提供超越FreeDOS虚拟机的最复古体验,因为您将处理16位分段内存、显卡等-当然,所有这些都是模拟的。
https://stackoverflow.com/questions/57717873
复制相似问题