这个任务的步骤比较简单。
- 获取长度、宽度和宽度。
- 验证这些值是否在要求的范围内。
- 计算周长。
- 提供计算出的周长或长度,具体取决于编写这些要求的人的迂腐程度。
第四个可能是这项任务中最难的部分,您需要联系编写需求的人以验证 输出:返回长方体的长度实际上是一个错字并且你应该返回长方体的周长。
在此示例中,我将假设这是一个技巧问题并提供长度;但是,如果这不是一个技巧问题,而是一个错字,您需要在输出行 (80) 上将长度变量 (LE) 替换为周长变量 (PE)。
10 IF NOT (LE < 1 OR LE > 100 OR BR < 1 OR BR > 100 OR WI < 1 OR WI > 100) THEN 60
20 INPUT "LENGTH, BREADTH, WIDTH"; LE, BR, WI
30 IF LE < 1 OR BR < 1 OR WI < 1 THEN PRINT "YOU HAVE ENTERED THE":PRINT "MICROVERSE. PLEASE ENSURE THAT":PRINT "ALL DIMENSIONS ARE AT LEAST 1":PRINT "UNIT."
40 IF LE > 100 OR BR > 100 OR WI > 100 THEN PRINT "YOU HAVE LEFT THE BOUNDS OF":PRINT "THE KNOWN UNIVERSE. PLEASE":PRINT "ENSURE THAT ALL DIMENSIONS ARE":PRINT "NO MORE THAN 100 UNITS."
50 GOTO 10
60 PE = LE + BR + WI
70 PE=PE*4
80 PRINT "THE CUBOID'S LENGTH IS:";LE
90 END
BASIC 的可读性从来不为人所知,即使是这个简短的程序也可能难以理解。下面是同一个程序,形式更易读:
loop while (%length% < 1 or %length% > 100 or %breadth% < 1 or %breadth% > 100 or %width% < 1 or %width% > 100)
input "Length, Breadth, Width"; %length%, %breadth%, %width%
switch
case (%length% < 1 or %breadth% < 1 or %width% < 1)
wrap You have entered the microverse. Please ensure that all dimensions are at least 1 unit.
case (%length% > 100 or %breadth% > 100 or %width% > 100)
wrap You have left the bounds of the known universe. Please ensure that all dimensions are no more than 100 units.
endswitch
endloop
%perimeter% = %length% + %breadth% + %width%
%perimeter% *= 4
print "The cuboid's length is:";%length%
这使用SuperBASIC,不是作为推荐(除非你碰巧使用的 BASIC 是在 TRS-80 彩色计算机上),只是因为我熟悉那个 BASIC 预处理器。这两个程序在某种程度上是等价的,因为我编写了更具可读性的代码,然后使用脚本将其转换为 BASIC。
您可以看到我上面概述的步骤:input 长方体的尺寸;验证尺寸是否在要求的范围内;或者loop返回input请求,如果不是,或者计算周长和print长度。
请注意,循环使用大多数 BASIC 实现的特性,即在第一次遇到数字变量时,变量被设置为零,这超出了规定的要求范围。如果您的 BASIC 变体不这样做,您将需要分配初始值,很可能使用 DEFINT 或 LET 语句。