主题:数据的输入与输出(教程)
本文部分摘录于 《QUICK BASIC 程序设计》刘炳文 1991,《IMB PC编程指南》1991 (电子工业出版社)。
文中多数内容都是大家所熟悉的,可能有一些内容大家平时也没有注意,在此列出供大家参考。
1.键盘输入语句 INPUT
格式:INPUT[;]["提示"]{;|,}变量[,变量]…
功能:在程序执行期间接收从键盘上输入的数据。
说明:
INPUT 为关键字,当它后面存在分号时,输入完数据后按回车键不产生换行
提示信息要放到双引号内
;|, 用分号,则在提示信息后接有一个问号,用逗号则不接问号
变量 可以有一个或多个,各变量间用逗号分开。变量可以是 数值变量 字符串变量 数组元素或记录元素
输入字符串数据,字符串可以不放到引号内
输入数据类型必须与变量类型一致,且个数相同,否则显示 Redo from start
2.行输入语句 LINE INPUT
格式:LINE INPUT[;]["提示";]字符串变量
功能:从键盘上输入一行字符(最多为255个),并把它赋给字符串变量
说明:
INPUT 为关键字,当它后面存在分号时,输入完数据后按回车键不产生换行
LINE INPUT语句输入字符范围 ASC 32-126,128-255
输入时 用 ALT+225输入CHR$(225):按住ALT 输入225,再松开ALT
3 读数据语句 READ DATA
格式:READ 变量[,变量]…
DATA 变量[,变量]…
功能:READ语句把DATA语句中所提供的语句依次赋给指定的变量
说明:
变量可以是 数值变量 字符串变量 数组元素或记录元素
DATA语句中只能是 数值常量或字符串常量 不能是表达式,各变量间用逗号分开
4.输出语句 PRINT
格式:PRINT [表达式表][{,|;}]
功能:在屏幕上显示数据
说明:
能用定点格式显示单精度数(7位)和双精度数(16位),且不失精度,则用定点格式,否则用浮点格式。
例:
1.1E-6输出为0.000011
1.1E-7输出为1.1E-07
1.1D-15输出为.0000000000000011#
1.1D-16输出为1.1D-16
PRINT 中可解释的控制码 有
ASCii 7 鸣叫
9 标记
10 换行
11 光标归始
12 格式馈给(擦屏,光标归始)
13 回车
28 光标右
29 光标左
30 光标上
31 光标下
其他所有的代码都原样显示
例:
CLS
PRINT "We make "; CHR$(34); " in QBASIC CHR$(34)"; CHR$(13); "Is that right?"
显示结果如下:
We make " in QBASIC CHR$(34)
Is that right?
与PRINT 语句有关的函数
(1)TAB(n)
PRINT TAB(列)
屏幕最左边的列为1,最右边的列为最大行宽-1
显示位置为第(n MOD 行宽)列
(2)SPC(n)
PRINT SPC(空格数)
n可以是数值常量,数值变量 或是数值表达式
SPC(n)后隐含有一个分号
n为0~32767间的整数(非整数自动四舍五入)
(3)SPACE$(n)
返回一个由n个空格组成的字符串
n可以是数值常量,数值变量 或是数值表达式
n为0~30906间的整数(非整数自动四舍五入)
(4)STRING$(n, str)
返回一个由n个str组成的字符串
n可以是数值常量,数值变量 或是数值表达式
n为0~30906间的整数(非整数自动四舍五入)
5.输出语句WRITE
格式:WRITE [表达式表]
功能:在屏幕上显示数据
说明:
WRITE 语句只能用逗号分隔符
按紧凑方式输出数据
强行换行(不能在表达式表后加 ; 或 ,)
数值 无前后空格
字符串 自动在其前后加上引号(并显示出引号)
例:
CLS
a = 80: b = 90: c$ = "That's all": d = -1E-13
WRITE a, b, c$, d
PRINT a, b, c$, d
显示为:
80,90,"That's all",-1E-13
80 90 That's all -1E-13
6.特殊输入操作
(1)INKEY$函数
功能:从键盘上读入一个字符。
返回一个字节或两个字节的字符串
空字符串(长为0)表示美有从键盘输入字符
一个字节的字符串是从键盘上读的实际字符
如按 a ,INKEY$返回CHR$(97)
两个字节的字符串是表示一个专用扩展代码,其中第一个字节为00H
如按 ↑ ,INKEY$返回CHR$(0)+CHR$(72)
执行INKEY$时,屏幕不显示字符,可接收绝大部分字符,下列情况除外
Ctrl+Break 中断程序执行
Ctrl+Num Lock 暂停执行
Ctrl+Alt+Del 系统热启动
Prtsc 屏幕硬拷贝
常用来对键盘进行搜索,以确定用户有没有打入字符
例
PRINT "Press any key to continue..."
DO
LOOP WHILE INKEY$ = "" '或 LOOP UNTIL INKEY$ <> ""
又如 清空键盘缓冲区
DO
key$ = INKEY$
LOOP UNTIL key$ = ""
(2)INPUT$函数
格式:INPUT$(n[,[#]文件号])
功能:返回从键盘或指定文件中读出n个字符的字符串
例
PRINT "Press any key to continue..."
wait$ = INPUT$(1)
(3)设备文件的输入与输出
OPEN "KYBD:" FOR INPUT AS #1 '以输入方式打开键盘
OPEN "SCRN:" FOR OUTPUT AS #2 '以输出方式打开屏幕
CLS
PRINT "Please input the message"
INPUT #1, message$ '输入信息(不回显)
PRINT #2, message$ '输出所输入的信息
wait$ = INPUT$(1)
7.文本光标控制
(1)光标定位LOCATE
格式:LOCATE[行][,[列][,方式][,[开始行][,[停止行]]]
说明:
行,列 均为数值表达式
方式 是逻辑值,用来表示光标的可见性。
为0时,光标不可见
为1时,光标可见
开始行(结束行)为数值表达式表明屏幕上光标的开始或(结束)扫描行
取值范围 一般为0~7
一个字符的高度为8个扫描行,其底行为第0行,顶行为第7行
一般开始扫描行 应小于 结束扫描行,此时得到一个矩形光标,如果开始扫描行 大于 结束扫描行,则会得到一个中间断开得矩形光标。
例
LOCATE 12,20,1,2,4
*图形模式下为LOCATE[行][,列]
(2)检测光标位置
CSRLIN函数返回当前行位置
POS(n)函数返回当前列位置 ,其中n为虚变量,无意义
例
row = CSRLIN: col = POS(0)
8.文本输出框VIEW PRINT
功能:设定文本输出范围
格式:VIEW PRINT [顶行] TO [底行]
说明:顶行和 底行 取值范围为 1~25
(可通过 [url=http://www.programfan.com/club/showbbs.asp?id=49496]WIDTH[/url] 列数,行数 修改;列数取80或40,行数取25,30,43,50,60等)
例:
LOCATE 9, 1: PRINT STRING$(5, "*"); "up line"
LOCATE 21, 1: PRINT STRING$(5, "*"); "down line"
VIEW PRINT 10 TO 20
FOR i = 1 TO 15
PRINT "line";i
NEXT i
文中多数内容都是大家所熟悉的,可能有一些内容大家平时也没有注意,在此列出供大家参考。
1.键盘输入语句 INPUT
格式:INPUT[;]["提示"]{;|,}变量[,变量]…
功能:在程序执行期间接收从键盘上输入的数据。
说明:
INPUT 为关键字,当它后面存在分号时,输入完数据后按回车键不产生换行
提示信息要放到双引号内
;|, 用分号,则在提示信息后接有一个问号,用逗号则不接问号
变量 可以有一个或多个,各变量间用逗号分开。变量可以是 数值变量 字符串变量 数组元素或记录元素
输入字符串数据,字符串可以不放到引号内
输入数据类型必须与变量类型一致,且个数相同,否则显示 Redo from start
2.行输入语句 LINE INPUT
格式:LINE INPUT[;]["提示";]字符串变量
功能:从键盘上输入一行字符(最多为255个),并把它赋给字符串变量
说明:
INPUT 为关键字,当它后面存在分号时,输入完数据后按回车键不产生换行
LINE INPUT语句输入字符范围 ASC 32-126,128-255
输入时 用 ALT+225输入CHR$(225):按住ALT 输入225,再松开ALT
3 读数据语句 READ DATA
格式:READ 变量[,变量]…
DATA 变量[,变量]…
功能:READ语句把DATA语句中所提供的语句依次赋给指定的变量
说明:
变量可以是 数值变量 字符串变量 数组元素或记录元素
DATA语句中只能是 数值常量或字符串常量 不能是表达式,各变量间用逗号分开
4.输出语句 PRINT
格式:PRINT [表达式表][{,|;}]
功能:在屏幕上显示数据
说明:
能用定点格式显示单精度数(7位)和双精度数(16位),且不失精度,则用定点格式,否则用浮点格式。
例:
1.1E-6输出为0.000011
1.1E-7输出为1.1E-07
1.1D-15输出为.0000000000000011#
1.1D-16输出为1.1D-16
PRINT 中可解释的控制码 有
ASCii 7 鸣叫
9 标记
10 换行
11 光标归始
12 格式馈给(擦屏,光标归始)
13 回车
28 光标右
29 光标左
30 光标上
31 光标下
其他所有的代码都原样显示
例:
CLS
PRINT "We make "; CHR$(34); " in QBASIC CHR$(34)"; CHR$(13); "Is that right?"
显示结果如下:
We make " in QBASIC CHR$(34)
Is that right?
与PRINT 语句有关的函数
(1)TAB(n)
PRINT TAB(列)
屏幕最左边的列为1,最右边的列为最大行宽-1
显示位置为第(n MOD 行宽)列
(2)SPC(n)
PRINT SPC(空格数)
n可以是数值常量,数值变量 或是数值表达式
SPC(n)后隐含有一个分号
n为0~32767间的整数(非整数自动四舍五入)
(3)SPACE$(n)
返回一个由n个空格组成的字符串
n可以是数值常量,数值变量 或是数值表达式
n为0~30906间的整数(非整数自动四舍五入)
(4)STRING$(n, str)
返回一个由n个str组成的字符串
n可以是数值常量,数值变量 或是数值表达式
n为0~30906间的整数(非整数自动四舍五入)
5.输出语句WRITE
格式:WRITE [表达式表]
功能:在屏幕上显示数据
说明:
WRITE 语句只能用逗号分隔符
按紧凑方式输出数据
强行换行(不能在表达式表后加 ; 或 ,)
数值 无前后空格
字符串 自动在其前后加上引号(并显示出引号)
例:
CLS
a = 80: b = 90: c$ = "That's all": d = -1E-13
WRITE a, b, c$, d
PRINT a, b, c$, d
显示为:
80,90,"That's all",-1E-13
80 90 That's all -1E-13
6.特殊输入操作
(1)INKEY$函数
功能:从键盘上读入一个字符。
返回一个字节或两个字节的字符串
空字符串(长为0)表示美有从键盘输入字符
一个字节的字符串是从键盘上读的实际字符
如按 a ,INKEY$返回CHR$(97)
两个字节的字符串是表示一个专用扩展代码,其中第一个字节为00H
如按 ↑ ,INKEY$返回CHR$(0)+CHR$(72)
执行INKEY$时,屏幕不显示字符,可接收绝大部分字符,下列情况除外
Ctrl+Break 中断程序执行
Ctrl+Num Lock 暂停执行
Ctrl+Alt+Del 系统热启动
Prtsc 屏幕硬拷贝
常用来对键盘进行搜索,以确定用户有没有打入字符
例
PRINT "Press any key to continue..."
DO
LOOP WHILE INKEY$ = "" '或 LOOP UNTIL INKEY$ <> ""
又如 清空键盘缓冲区
DO
key$ = INKEY$
LOOP UNTIL key$ = ""
(2)INPUT$函数
格式:INPUT$(n[,[#]文件号])
功能:返回从键盘或指定文件中读出n个字符的字符串
例
PRINT "Press any key to continue..."
wait$ = INPUT$(1)
(3)设备文件的输入与输出
OPEN "KYBD:" FOR INPUT AS #1 '以输入方式打开键盘
OPEN "SCRN:" FOR OUTPUT AS #2 '以输出方式打开屏幕
CLS
PRINT "Please input the message"
INPUT #1, message$ '输入信息(不回显)
PRINT #2, message$ '输出所输入的信息
wait$ = INPUT$(1)
7.文本光标控制
(1)光标定位LOCATE
格式:LOCATE[行][,[列][,方式][,[开始行][,[停止行]]]
说明:
行,列 均为数值表达式
方式 是逻辑值,用来表示光标的可见性。
为0时,光标不可见
为1时,光标可见
开始行(结束行)为数值表达式表明屏幕上光标的开始或(结束)扫描行
取值范围 一般为0~7
一个字符的高度为8个扫描行,其底行为第0行,顶行为第7行
一般开始扫描行 应小于 结束扫描行,此时得到一个矩形光标,如果开始扫描行 大于 结束扫描行,则会得到一个中间断开得矩形光标。
例
LOCATE 12,20,1,2,4
*图形模式下为LOCATE[行][,列]
(2)检测光标位置
CSRLIN函数返回当前行位置
POS(n)函数返回当前列位置 ,其中n为虚变量,无意义
例
row = CSRLIN: col = POS(0)
8.文本输出框VIEW PRINT
功能:设定文本输出范围
格式:VIEW PRINT [顶行] TO [底行]
说明:顶行和 底行 取值范围为 1~25
(可通过 [url=http://www.programfan.com/club/showbbs.asp?id=49496]WIDTH[/url] 列数,行数 修改;列数取80或40,行数取25,30,43,50,60等)
例:
LOCATE 9, 1: PRINT STRING$(5, "*"); "up line"
LOCATE 21, 1: PRINT STRING$(5, "*"); "down line"
VIEW PRINT 10 TO 20
FOR i = 1 TO 15
PRINT "line";i
NEXT i