BT-Basic编程系列--13--输入输出之段落格式

BT-Basic编程系列–13–输入输出之段落格式


文章目录

  • BT-Basic编程系列--13--输入输出之段落格式
      • 段落格式化
        • 以段落格式输入数据
          • 从键盘输入数字
          • 从键盘输入字符串
          • 同时输入字符串和数字
        • 以段落格式输出数据
      • 通过制表符函数移动字段
      • 向后制表
      • 总结:自由字段输入(Free-Field INPUT)
      • 总结:段落格式输出(Free-Field OUTPUT)


段落格式化

本节提供了一般描述如何在段落格式下输入和输出数据,以及参考描述——输入和输出段落格式数据的规则。

  • 以段落格式输入数据
  • 以段落格式输出数据
以段落格式输入数据

当遇到enterinput语句时,系统要么从指定的来源读取数据,要么,如果输入来自键盘,则等待你提供数据。从系统的角度来看,从键盘或其他来源读取数据是一样的,只不过从键盘输入较慢。因此,如果你理解了键盘的输入规则,可以将同样的规则应用于其他设备——例如,从磁盘驱动器读取文件。

输入过程中,每个数据项会存储到语句变量列表中指定的适当的数值或字符串变量中。传入的数据项必须用分隔符分开,如上述参考描述中所述。数据项按输入的顺序存储到变量中,从左到右依次存放。每个项目必须与要赋值的变量类型一致,数值型或字符串型。

从键盘输入数字时,可以在一行中输入一个数字,每个数字后按回车,或者可以在一行中输入多个数字,然后按回车。一行或多行输入,每行对应设备或文件的一个记录。以下是一些示例:

从键盘输入数字
input "Please input three numbers", A, B, C

在终端屏幕上显示的消息(即语句中的文本)中,用户可以响应输入一行数字:

1024, 2048, 64

或者说,分成两行:

1024 2048
64

注意,间隔并不重要,空格或逗号都可以用作分隔符。输入后,列出的变量将包含这三个数字:

print A, B, C ! 显示 1024 2048 64

如果对一个变量进行了空输入,那么该变量将保留其原始内容。例如,如果上述语句再次执行,你可能只想更改变量C中的第三个数字。在这种情况下,可以对不需更改的变量进行空输入(只用逗号)。

,,32

打印变量,此时只有最后一个变量发生了变化:

print A, B, C ! 1024 2048 32

当从键盘输入字符串时,一般规则是每行只输入一个字符串。如果不是这样,那么你必须仔细计算字符数以匹配输入变量的长度。虽然从文件和设备中读取输入时可能需要调整数据以匹配变量的长度,但从键盘输入数据时是不切实际的。所以,我们看一下接下来的例子

从键盘输入字符串
dim AA$[15], BB$[20]
input "Please enter AA and BB", AA$, BB$
print "AA=";AA$; "Len:";len(AA$)
print "BB=";BB$; "Len:";len(BB$)

运行结果:

Please enter AA and BB
aaa
?
bbb
AA=aaaLen: 3
BB=bbbLen: 3

只要你分行输入字符串,就不必担心变量的长度,多余的空格会被系统自动舍弃。然而,如果你一次输入两个值,那么你必须计算字符数:

Please enter AA and BB
aaaaaaaa bbbbbbbb
AA=aaaaaaaa bbbbbbLen: 15
BB=bbLen: 2
<--15 spaces-->

从上面例子来看,前面15个字符会被保存到AA$变量中,剩下的两个字符被保存到了BB$变量中。

同时输入字符串和数字
dim BB$[10]
input "Please enter number and strings", AA, BB$
print "AA=";AA
print "BB=";BB$; "Len:";len(BB$)

运行结果:

Please enter number and strings
56 aaaaaa
AA= 56
BB=aaaaaaLen: 6
以段落格式输出数据

在输出的时候,段落格式将80字符长度的一行分成四个20字符的字段。每个数据项在其字段内左对齐。输出四个项目后,发送EOL(行结束),并开始一新行。

数字输出时会在前面留一个空格用于符号。如果数字是负数,负号会显示在这个空格中。前导零(符号空格后)会被抑制。数字(包括符号空格)在其字段中左对齐,其余的二十个空格保持空白。输出字符串也在其字段中左对齐,剩余空位保持空白。

A=1024
print "The number is",A

运行结果:

The number is        1024
<-----20 spaces----><-----20 spaces---->

如果字符串或数字需要超过二十字符,它会占用需要的多个字段(每个20字符)

前面示例中的输出数据项由逗号分隔,这称为分隔符。如果数据项后面跟着分号而不是逗号,那么该项就是紧凑的。紧凑的项目会缩短其字段长度。如果项目是数字,字段长度仅够容纳数字和一个尾随空格。如果项目是字符串,字段长度与字符串相同。然后下一个字段紧接在缩短后的字段后开始(假设该行有足够的空间)。如果需要,逗号和分号可以在同一列表中使用。

A=1024
print "The number is";A

运行结果:

The number is 1024
<-----20 spaces----><-----20 spaces---->

请注意,在一个紧凑字段之后,下一个常规字段不一定是20个字符长。它可以更长或更短,取决于其内容以及前一个紧凑字段结束的位置。这是因为(除非制表符函数将其加长)常规字段总是在四个特定列之一结束,这些列是第20列、第40列、第60列和第80列(最左边的列是第1列)。

A=1024
print "The number is";A,A

运行结果:

The number is 1024   1024
<-----20 spaces----><-----20 spaces---->

通过制表符函数移动字段

字段也可以通过制表符函数移动,在下面的例子中,第二个字段从第25列开始。

A=1024
print "The number is";tab(25),A

运行结果:

The number is            1024
<-------24 spaces------><--16 spaces---><-----20 spaces---->

向后制表

如果制表符函数指定的列位于前一个字段之内或左边,即,它向左制表,那么EOL(行结束)会发生,并且制表到下一行的指定列

A=1024
print "The number is",A,tab(9),"A is ",A

运行结果:

The number is        1024
        A is         1024
<------20 spaces---->------20 spaces---->
<--8 sp->-12 spaces->------20 spaces---->

制表符也可以用于通过指定大于80的列号来添加额外的换行符。每个80的倍数会产生一个换行符,然后余数将为制表到达的列号。

在下面的例子中,程序打印了三行。第一字符串从第20列开始。第二字符串在两次换行后的第25列开始;即,185/80 = 2,余数为25。

print tab(20), "First string", tab(185), "Second string"

运行结果:

                    First string
              
                         Second string
<-----20 spaces-----><---------space---><--25 spaces--->

也可以使用制表符函数添加额外换行

print tab(20), "The End", tab(185), "NEW SECTION"

运行结果:

                    The End

                             NEW SECTION
<----19 spaces----><------21 spaces---->
<-------24 spaces------><---16 spaces-->

总结:自由字段输入(Free-Field INPUT)

输入段落格式数据的规则如下:

  • 每个输入项必须与输入变量相匹配(数值或字符串分配给相应变量)。

  • 数值项之间的分隔符(数字)

    • 分隔符可以是逗号、空格或回车(EOL或EOR)。分隔符前后的多余空格会被忽略。
    • 可以通过省略数字并仅输入逗号(带或不带额外空格)来对数值变量进行空输入,即该变量保留其当前值。
  • 字符串之间的分隔符

    • 回车(EOL或EOR),此时输入变量的长度与分配给它的字符串长度相同,前提是变量的维度长度不能被超过。
    • 如果输入字符串长度超过分配给它的变量,那么多余的字符将被分配给下一个变量,如果有的话。
  • 同时输入字符串和数字时适用的通用规则,但请注意以下几点:

    • 如果字符串在数字之前并且在同一行(同一记录)中,那么该字符串的长度必须与分配给它的字符串变量的维度长度相同。在这种情况下,没有其他方法可以终止字符串。
    • 可以选择在上述字符串后面加上逗号(作为分隔符),但此逗号不会产生任何效果。也就是说,它本身不构成对下一个数值变量的空输入。需要第二个逗号来构成空输入。
  • 终止输入

    • 当所有输入变量都满足时,如果此时没有EOR,输入将被读取并丢弃直到下一个EOR。输入随后终止。
    • 如果读取到空行(空记录),输入终止,任何剩余的输入变量保留其当前值。
    • 输入可以跨记录边界,但单个项不可以。

总结:段落格式输出(Free-Field OUTPUT)

输出段落格式数据的规则如下:

  • 数值以标准格式输出。字符串和数值根据输出列表中的分隔符,输出到常规字段或紧凑字段。逗号指定常规字段,分号指定紧凑字段。制表符函数是一个特殊情况,因为它指定下一个字段的起始位置。

  • 常规格式(REGULAR format) 将一行(80个字符)分成四个字段,从字符位置(列)1、41、21和61开始。

    • 每个字段输出一个项目。当四个字段都被使用完或没有更多项目输出时,输出EOL(行结束)并换到下一行。
    • 每个项目在其字段中左对齐,剩余空格留空。
    • 数字以标准或科学格式显示。
    • 超过二十个字符的字符串或数字可以占用多个字段。
  • 紧凑格式(PACKED format) 将字段缩短到输出项目的长度。下一个字段从前一个字段的右侧立即开始。

    • 数字之后留一个空格。
    • 字符串之后不留空格。
    • 紧凑字段之后的第一个常规字段可以有多于或少于二十个字符,具体取决于紧凑字段的结束位置。常规字段总是在字符位置20、40、60或80处结束。

你可能感兴趣的:(BT-Basic语法,开发语言)