1、Start,数据可视化分析,电子教案 版本6.6,数据可视化分析技术,1.计算机图形学算法基础 David F. Rogers 著 石教英译 清华大学出版社 ¥55.00 2. 计算机图形学教程 陆润民 清华大学出版社 ¥19.003. 计算机绘图 陆润民 高等教育出版社 ¥20.483. C语言绘图教程 陆润民 清华大学出版社 ¥16.004. 计算机绘图、数据可视化图书,配套教材,IDL可视化分析与应用韩培友 编著西北工业大学出版社,教学进程,参考书籍,课程概述,教学进程,第 1 章 IDL环境与操作,第 2 章 数据表达,第 3 章 数据输入与输出,第 5 章 图像系统,第 6 章 数据
2、可视化分析,第 7 章 图形用户接口GUI,第 11 章 智能工具 iTools,第 4 章 程序设计,第 16 章 项目管理器,第 17 章 系统发布,数据可视化分析技术,1.1 数据可视化技术 数据可视化 数据可视化分析1.2 数据可视化特点1.3 数据可视化应用1.4 数据可视化软件 IDL 6.4 软件特点、启动与状态设置 输入数据、数据可视化处理与分析、 保存分析结果,第 1 章,1.1 数据可视化技术,数据可视化技术,数据可视化技术(Data Visualization)运用计算机图形学和图像处理技术,将数据换为图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。涉及内容
3、:到计算机图形学、图像处理、计算机辅助设计、计算机视觉及人机交互技术等多个领域 。发展:科学计算可视化 工程数据可视化 测量数据可视化 信息可视化,体视化技术,通常把空间数据的可视化称为体视化技术(Volume Visualization)可视化软件 AVS/Express开发版 IDL(包括VIP、ION) PV-WAVE,教学进程,1.2 数据可视化特点, 数据可视化的特点怎样来分析大量、复杂和多维的数据呢?答案是要提供象人眼一样的直觉的、交互的和反应灵敏的可视化环境。因此,数据可视化技术的主要特点是:(1)交互性。用户可以方便地以交互的方式管理和开发数据。(2)多维性。可以看到表示对象或
4、事件的数据的多个属性或变量,而数据可以按其每一维的值,将其分类、排序、组合和显示。(3)可视性。数据可以用图象、曲线、二维图形、三维体和动画来显示,并可对其模式和相互关系进行可视化分析。 历史证明,人类的视觉在人类的科学发现中发挥过杰出的作用。通常在可视化方面,关键技术的出现,就是重大科学发现的前奏。望远镜和显微镜在天文学和生物发展中的作用,就是明证。 数据库、数据仓库、数据挖掘 数据缺乏 找不到有用信息 数据太多 找不到有用信息 数据可视化技术挖掘信息,教学进程,1.2 数据可视技术的意义,可视化人体计划(VHP):人类认识自身内部结构的愿望。 直到70年代计算机断层扫描(CT)和核磁共振图
5、像(MRI)技术和可视化技术的出现,才使获取人体内部数据的愿望成为现实。为了实现这一目的,美国国家医学图书馆(NLM)于1989年开始实施可视化人体计划(VHP)。 委托科罗拉多大学医学院建立起一男一女的全部解剖结构数据库。他们将一具男性和一具女性尸体从头到脚做 CT扫描和核磁共振扫描。男的间距1毫米,共1878 个断面;女的间距0.33毫米,共5189个断面。然后将尸体填充蓝色乳胶并裹以明胶后冰冻至摄氏零下80 度,再以同样的间距对尸体作组织切片的数码相机摄影。分辨率为2048 1216。所得数据共56GB(男13GB,女43GB)。全球用户在与美国国家医学图书馆签订使用协议并付少量费用后,
6、即可获得这一庞大的数据,用于教学和科学研究。VHP数据集的出现,标志计算机三维重构图像和虚拟现实技术进入了医学领域,从而大大促进了医学的发展和普及。中国:第三军医大学张绍祥教授,已经建立5具人体数据库。,教学进程,USA Man,教学进程,USA Man,教学进程,USA Women,教学进程,China VHP,教学进程,医学,数据可视技术的应用,1.3,教学进程,油气勘探,油气勘探,教学进程,医学,气象预报,教学进程,医学,油气勘探,气象预报,单画面矢量动画、多画面帧动画,多画面帧动画,单画面矢量动画,FRAME 01 FRAME 02 FRAME 03 FRAME 04 FRAME 05
7、 FRAME 06 FRAME 07,动画,教学进程,医学,油气勘探,气象预报,动画,工程,教学进程,医学,油气勘探,气象预报,动画,工程,采用按钮、菜单实现媒体间的控制功能,控制,1. 概述2. 课程演示3. 课间音乐4. 课堂作业,Button,Menu,控制,教学进程,医学,油气勘探,气象预报,动画,工程,信息可视化技术的发展, 数据库中的知识发现(KDD:Knowledge Discovery in Databases)KDD是一门交叉性学科,涉及到机器学习、模式识别、统计学、智能数据库、知识获取、数据可视化、高性能计算、专家系统等多个领域。KDD可以用在信息管理、过程控制、查询优化、
8、科学研究和决策支持. KDD的核心技术是数据挖掘(Data Mining)它是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。 人们把原始数据看作是形成知识的源泉,就像从矿石中采矿一样。 可视化挖掘:为了使发现知识的过程和结果易于理解和在发现知识过程中进行人机交互,要使用发现知识的可视化方法。为了了解数据之间的相互关系及发展趋势,人们可以求助于可视化技术。 信息可视化:信息可视化不仅用图形来显示多维的空间数据,使用户加深对数据含义的理解,而且用形象直观的图形来指引检索过程,加快检索速度。在科学计算可视化中,研究重点:如何
9、真实、快速地显示三维数据场。 显示多维数据:研究重点:设计和选择什么样的显示方式才能便于用户了解庞大的多维数据及它们相互之间的关系、人机交互技术等问题。我国可视化技术的发展:硬件 + 软件 + 工程,教学进程,X = DIST(40,40)SURFACE, XX = SHIFT(DIST(40), 20, 20) SURFACE, XX = EXP(-(SHIFT(DIST(40), 20, 20) /10)2) SURFACE, XX = BESELJ(SHIFT(DIST(40),20,20)/2, 0)SURFACE, X ISURFACE, X,应用举例, 表数据可视化, 人脑可视化,
10、file = FILEPATH(head.dat, SUBDIRECTORY = examples, data)data = READ_BINARY(file, DATA_DIMS = 80, 100, 57)IVOLUME, data,教学进程, 人体可视化,VolumeAnalysis.PRO导入UsaMaleData.sav,Chapter10VolumeRender.proChapter10VolumeRenderExercise.pro, Stock股票预测,HappyyouStockForecast.pro导入*.DATHappyYouTxdSingleRead.pro导入*.DA
11、Y,1.4 交互数据可视化分析语言 IDL6.4, 安装:按照提示。或者 回车,回车,再回车 启动:单击 开始程序IDL6.4IDL 帮助:联机帮助;命令帮助 ?;菜单帮助 退出:单击关闭按钮;FileExit;命令行输入命令:EXIT,安装、启动、帮助、退出,命令格式, 每条命令必须以命令动词开始,后面的选项可以必选或者可选, 用逗号来分隔每条命令中的各个选择项 如果一条命令太长,一行写不下时,可以使用续行符“$” 命令中字母大小写可以混合使用。 一行可以写多条命令,但是在命令之间必须使用续命令符“&”。 以分号“;”开头的语句为注释语句,教学进程, 操作方式:命令交互、菜单、程序 基本操作
12、:界面与操作,基本操作,程序方式, 编辑 保存 编译 运行; Chapter01HelloWho.proPRO Chapter01HelloWhoName=;按提示信息输入姓名,并保存到变量Name中 READ, Name, PROMPT = 请输入姓名: ;依次输出字符串Hello、变量Name的值和字符串“!” PRINT, Hello, , name, !END,教学进程,1.4 图像处理与分析语言 IDL6.4,END,P23: 2,3,4,5,教学进程,作业,END,数 据,2.1 常量2.2 变量 系统变量 内存变量2.3 数组2.4 结构2.5 函数2.6 表达式,第 2 章,字
13、符型常量是指用定界符括起来的任意一串字符。又称为字符串。IDL6.4提供了两种定界符:单引号和双引号。如果某种定界符本身是字符型常量的组成部分,就应该选择另一种定界符。数值型常量是指由数字、小数点、正负号、浮点数标识 E或D组成的可以进行算术运算的整数、浮点数和、双精度浮点数和复数。逻辑型常量是表示逻辑判断结果的数据,它的值只有真和假两种。其中真用字节型值1表示;假用字节型值0表示;因此逻辑型常量总是一个字节型的数据。逻辑型常量真是指逻辑判断结果为真的数据,它的情况包括:(1)字节型、整型和长整型的奇数;(2)非零的浮点型、双精度型和复数类型(包括单精度和双精度);(3)非空的字符串类型;逻辑
14、型常量假(非真)是指非真的数据;它的情况包括:(1)字节型、整型和长整型的零和偶数;(2)浮点型、双精度型和复数类型(包括单精度和双精度)的零;(3)空的字符串类型。,教学进程,2.1 常量,2.2 变量,变量是指在程序运行过程中其值可以发生变化的数据。变量名是指给变量起的名字。变量的功能是用来存储各种数据类型的常量的。变量名的命名规则:变量名由英文字母、数字、下划线和美元符号($)组成,而且必须以英文字母开头,长度最多不能超过128个字符,中间不能有空格。注意:变量名不能是系统内部用于特殊用途的保留字的名称。,系统变量: !DIR,内存变量是指临时存储于内存中的变量,用来存放操作或程序运行过
15、程中所需要的各种类型的原始数据、中间结果和最终结果。赋值: 格式:变量 = 表达式引用和输出:格式1:PRINT,表达式 HELP,表达式存储:SAVE 变量1,变量n,FILENAME =文件名 恢复:RESTORE ,FILENAME=“文件名”,教学进程,内存变量,2.3 数组,数组是一组有序数据的集合。数组是由一组名字相同,而下标不同的多个元素组成。数组中的每一个元素称为一个数组元素,而每一个数组元素又相当于一个内存变量。,直接创建数组用方括号括起来的一个或者多个数据直接创建数组,该方法只能创建1维数组到3维数组。格式:数组名= 表达式表,教学进程,函数创建数组 BYTARR, INT
16、ARR, FLTARR, DBLARR, STRARR BINDGEN, INDGEN, FINDGEN, DINDGEN, SINDGEN用方括号括起来的一个或者多个数据直接创建数组,该方法只能创建1维数组到3维数组。格式:数组名= 数组创建函数INDGEN(D1 , ., D8 )X = INTARR(100, 200, /NOZERO) Y = INDGEN(100,200),数组的赋值格式为:数组名下标列表表达式 数组名(D11: D12 ,D81: D82)表达式,数组的引用格式1: 数组名 格式2: 数组名下标列表格式3: 数组名(D11:D12 ,D81:D82), ImageB
17、mpToBmpSingle.pro Image01.bmp,2.4 结构,结构是由一组类型不同的常量、变量和数组组合而成的组合数据类型。结构中的每一个变量或者数组成为结构的成员。,匿名结构的创建格式:结构变量 = 成员1:表达式1,成员n:表达式nXStruct = X: 10, Y: music = X, 10, Y, music = X, Y, 10, music ,教学进程,匿名结构的赋值: 结构变量.成员 = 表达式,匿名结构的调用: 结构变量.成员,署名结构的创建格式:结构变量=结构名,成员1:表达式1, 成员n:表达式n,署名结构的赋值: 结构变量.成员= 表达式,署名结构的调用:
18、 结构变量.成员,结构数组格式:结构数组 = REPLICATE(结构变量,D1, D2) 例如:TDX数据格式,HappyYouTxdReadSz000001Day.pro,教学进程,2.5 函数, 函数分类:标准函数库、自定义函数 ;无参函数、有参函数 调用:函数名(参数) 三要素:参数个数相等;参数类型一致;参数顺序一致, 常用函数, x = ABS(-20) & PRINT, x, y = SYSTIME() & PRINT, y, z = abcxyz & m = STRLEN(z) & PRINT, z, m, year = STRMID(systime(), 20, 4) & P
19、RINT, year, ImageBmpToBmp.pro (size, congrid, where) Image01.bmp, HappyYouTxdReadSz000001Day.pro Sz000001.Day,2.6 表达式,算术运算符() 圆括号 加 自加 减 自减 MOD 模 * 乘 除 乘方 求最大 数组或下标 # 矩阵列乘# 矩阵行乘 结构成员操作,字符型运算符 ,教学进程,表达式是指用运算符把常量、变量、数组和函数按照一定语法规则连接起来的有意义的式子,用expR表示。表达式中的所有字符必须写在一行上。表达式分四种:数值型表达式、字符型表达式、关系型和逻辑型表达式。,关系型
20、运算符 EQ 等于 LT 小于 GT 大于 NE 不等于 LE 小于等于 GE 大于等于,逻辑型运算符 逻辑非运算 & 逻辑与运算 | 逻辑或运算NOT 按位非运算 AND 按位与运算 OR 按位或运算 XOR 按位异或运算,小结,教学进程,1.1 数据可视化技术 数据可视化 数据可视化分析1.2 数据可视化特点1.3 数据可视化应用1.4 数据可视化软件 IDL 6.4 基本操作 程序运行方法,2.1 常量2.2 变量 系统变量 内存变量2.3 数组2.4 结构2.5 函数2.6 表达式,END,P48: 2,3,5,6,7,11,教学进程,作业,END,数据的输入与输出,3.1 数据的输入
21、3.2 数据的输出 获取数据信息 输出数据3.3 读取图像3.4 显示图像3.5 存储图像3.6 读取二进制文件,第 3 章,格式:READ,变量1,变量n ,FORMAT=(格式描述 ) ,PROMPT =提示信息格式代码格式含义nAw 输出w个字符(重复n次)(若省略w,输出字符串中所有字符)$ 使下一个输出数据输出到该输出数据的所在行的后面(仅用于输出)nIw or nIw.m 输出w位十进制整数(其中在最右边的m位中的空格位置以0填充)nFw.d 输出w位单精度浮点数(其中小数位d位)nDw.d 输出w位双精度浮点数(其中小数位d位)nGw.d 根据数据大小自动选择科学格式或者F、D格
22、式输出Tn 在当前行的第n列(绝对位置)输出变量的值TLn 从当前位置向左移动n列,然后输出变量的值TRn or nX 从当前位置向右移动n列,然后输出变量的值/ 换行输出例:输入三个整数:年(2004)月(12)日(26), 按格式2004/12/26 输出。IDL year = 0 初始化三个整型变量: 年月日IDL READ, year, month, day, PROMPT=输入年月日: , FORMAT = (I4, I2, I2),教学进程,3.1 数据的输入,3.2 数据的输出,教学进程,格式:HELP,表达式1,表达式n ,OUTPUT = 变量 功能:显示各个变量或者表达式的
23、名称、类型和值。格式:PRINT ,表达式1,表达式n ,FORMAT=(格式描述) 功能:按照格式描述指定的格式依次输出表达式1,表达式n的值。格式代码格式含义 (同上一页)例:输入三个整数:年(2004)月(12)日(26), 按格式2004/12/26 输出。IDL year = 0 输出:2004/12/26IDL PRINT, year, month, day, FORMAT=(I4,/, I2,/, I2),3.3 读取图像,格式:FileName = DIALOG_PICKFILE( FILTER=文件名描述 , /MULTIPLE_FILES,/MUST_EXIST , /RE
24、AD , /WRITE,TITLE=对话窗口标题 )功能:以对话窗口的方式进行交互式的选择一个或者多个文件,并且返回包含所选文件的完整路径的字符型数组。若没有选择文件,则返回空串。,格式:Image = READ_IMAGE (Filename)例如:读取图像文件PhotoCat.jpg。写入PhotoCat.png。其操作方法为:IDLfile = DIALOG_PICKFILE(FILTER= *.JPG, /MUST_EXIST) IDLimage = READ_IMAGE(file)IDLTV, image , true=1IDL WRITE_IMAGE, PhotoCat.png,
25、png, image,教学进程,3.3 读取图像,格式:Yn = DIALOG_READ_IMAGE ( Filename, FILTER_TYPE=string, IMAGE=variable , TITLE=string )例如:启动DIALOG_READ_IMAGE,读取JPG文件:Yn = DIALOG_READ_IMAGE(FILTER= .jpg, IMAGE=IData)IDLTV, IData, true=1IDLWRITE_IMAGE, PhotoCat.png, png, image,教学进程,读取图像函数READ_BMP READ_PPM READ_DICOM READ_
26、PICT READ_PNG READ_TIFF READ_JPEG READU READ_BINARY,3.4 显示图像,教学进程,格式:TV, Image , TRUE=1 功能:在指定位置按照指定的大小显示指定的图像。格式:TVSCL, Image , TRUE=1 功能:在指定位置按照指定的大小以拉伸的方式显示指定的图像。 说明:TVSCL把图像的颜色空间拉伸到0255,可以增强图像的对比度。例如:启动DIALOG_READ_IMAGE,读取JPG文件:Yn = DIALOG_READ_IMAGE(FILTER= .jpg, IMAGE=IData)IDLTV, image , true
27、=1IDLWRITE_IMAGE, PhotoCat.png, png, image,教学进程,3.5 存储图像,格式:WRITE_IMAGE, Filename, Format, Data 说明:按指定的图像格式存储图像。,例如:读取图像文件rose.jpg。写入rose.png。其操作方法为:IDLfile = DIALOG_PICKFILE(FILTER= *.JPG, /MUST_EXIST) IDLimage = READ_IMAGE(file)IDLTV, image , true=1IDL WRITE_IMAGE, PhotoCat.png, png, image,教学进程,3.
28、5 存储图像, ImageBmpToBmp.pro (size, congrid, where) Image01.bmp,格式:Yn = DIALOG_WRITE_IMAGE ( Image, FILE=string, TITLE=string , TYPE=variable),例如:读取rose.jpg。启动DIALOG_READ_IMAGE,写入一个PNG文件:IDLfile = FILEPATH(rose.jpg, SUBDIRECTORY = examples, data)IDLimage = READ_IMAGE(file)IDLResult = DIALOG_WRITE_IMAGE
29、(image, TYPE=*.PNG),存储图像函数WRITE_BMP WRITE_PICT WRITE_PNG WRITE_TIFFWRITE_JPEG WRITE_PPM WRITEU, 形成体数据 Volume Data,教学进程,3.6 读取二进制文件,文件的RW需要通过与该文件相关联的逻辑设备号。逻辑设备号的范围:-2, -1,0128;其中-2,-1和0分别用于标准错误、标准输出和标准输入;1 99为用户可以使用的逻辑设备号;100 128为使用关键字 /GET_LUN 时,系统自动分配给文件的逻辑设备号。格式:GET_LUN,变量功能:申请一个合法的逻辑设备号(100 128),
30、并存入变量中。格式:OPENU,变量,文件名 ,/GET_LUN - OPENR - OPENW功能:按变量指定的逻辑设备号,打开已经存在的文件,进行读写操作。格式:EOF(设备号)功能:设备号所对应文件的指针是否在文件尾;是返回真1;否则假0格式:READU,设备号,变量1,变量n - READF功能:从设备号对应的二进制文件中读取多种类型数据依次到变量1变量n格式:WRITEU, 设备号, 表达式1, , 表达式n功能:把式1 ,式n 的值依次写入到设备号所对应的二进制文件 - PRINTF格式:FREE_LUN,变量1 ,变量2,变量n功能:释放变量1变量n指定的逻辑设备号,同时关闭相应
31、的文件。格式:CLOSE,变量1,变量2,变量n, /ALL功能:释放变量1变量n指定的逻辑设备号,同时关闭相应的文件。, HappyYouTXDSingleRead.pro,小结,第3章 图像读取与写入,教学进程,3.1 数据的输入3.2 数据的输出 获取数据信息 输出数据3.3 读取图像3.4 显示图像3.5 存储图像3.6 读取二进制文件,END,P60: 1,2,3补充: 写出读取图像、显示图像和写入图像的函数的用法。 补充: 读取二进制文件,教学进程,作业,程序设计,4.1 程序设计的三大基本结构4.2 顺序结构4.3 选择结构 IF CASE SWITCH4.4 循环结构 WHIL
32、E BREAKE CONTINUE FOR REPEAT 4.5 自定义函数4.6 程序调用 局部变量与全程变量 参数与关键字,第 4章,结构化程序的基本结构有三种:顺序结构、选择结构和循环结构。顺序结构是指在程序执行过程中,根据程序中各条语句的先后排列顺序,依次执行每一条语句,具有这种结构的程序称为顺序结构化程序。顺序结构是程序中最简单、最常用和最基本的结构。选择结构是指在程序运行过程中,程序中的某一段程序是否被执行取决于某个条件,若该条件满足了,就执行这段程序,否则这段程序将不被执行。具有这种结构的程序为选择结构程序。循环结构是指在程序执行过程中,根据实际需要,程序中的某一段程序需要循环执
33、行若干次,具有这种结构的程序称为循环结构程序。,教学进程,4.1程序设计的三大基本结构,4.2 顺序结构,顺序结构是指在程序执行过程中,根据程序中各条语句的先后排列顺序,依次执行每一条语句,具有这种结构的程序称为顺序结构化程序。顺序结构是程序中最简单、最常用和最基本的结构。,编程序Chapter04Average.pro,要求从键盘任意输入两个数据,然后计算它们的平均值,最后输出结果。程序为:; Chapter04Average.proPRO Chapter04AverageREAD, PROMPT=请输入X = ?, xREAD, PROMPT=请输入Y = ?, yAverage = (x
34、 + y)/2PRINT, Average =, AverageEND,教学进程, ReadWriteDate.pro JpgToPng.pro CTime.pro, ImageBmpToBmpSingle.pro Image01.bmp,4.3 选择结构,选择结构如果某程序中有语句序列A和语句序列B,而且当指定条件表达式的值为真时,则只执行语句序列A;否则,则只执行语句序列B。显然,该程序中是执行语句序列A还是语句序列B,不是取决于这两个语句序列在该程序中的排列顺序,而是取决于条件表达式的值。,教学进程,格式:IF 表达式 THEN BEGIN语句序列1 ENDIF ELSE BEGIN语句
35、序列2 ENDELSE,功能:根据表达式的值,选择执行语句序列1和语句序列2二者之一,4.3 选择结构,教学进程,例编程序,计算并输出 y 的值,其中x的值要求从键盘任意输入。; Chapter04SFunction.proPRO Chapter04SFunctionREAD, PROMPT=请输入X = ?, xIF x LE 0 THEN BEGINy = 5 * x 2 + 9ENDIF ELSE BEGINy = 5 * x 2 - 9ENDELSEPRINT, y = , yEND,4.3 选择结构,教学进程,嵌套:IF 表达式1 THEN BEGINIF 表达式2 THEN BEG
36、IN语句序列1ENDIF ELSE BEGIN语句序列2ENDELSE ENDIF ELSE BEGINIF THEN BEGIN语句序列3ENDIF ELSE BEGIN语句序列4ENDELSE ENDELSE功能:根据三个表达式的值来选择执行四个语句序列中的一个流程图:见下页图,4.3 选择结构,教学进程,4.3 选择结构,教学进程,例 编程序,计算并输出 y 的值,其中x 的值要求从键盘任意输入。PRO Chapter04MS5FunctionREAD, PROMPT=请输入X = ?, xIF x LE 3 THEN BEGINIF x LE -6 THEN BEGINy = 3 *
37、x 2 - x + 1ENDIF ELSE BEGINIF x LE -3 THEN BEGINy = 5 * x 2 - 3 * x + 1ENDIF ELSE BEGINy = 7 * x 2ENDELSEENDELSEENDIF ELSE BEGINIF x LE 6 THEN BEGINy = 5 * x 2 + 3 * x + 1ENDIF ELSE BEGINy = 3 * x 2 + x + 1ENDELSEENDELSEPRINT, y = , yEND,4.3 选择结构,教学进程,IF语句嵌套的另外两种常见格式,4.3 选择结构,教学进程,CASE语句格式:CASE 表达式
38、OF表达式1:BEGIN语句序列1 END 表达式n:BEGIN语句序列n END ELSE :BEGIN语句序列n+1 END ENDCASE功能:根据表达式的值与表达式1到 表达式n中的每一个表达式的值相比较,来选择执行n1个语句序列中的一个语句序列。,4.3 选择结构,教学进程,4.3 选择结构,教学进程,例 编程序Chapter04Month.pro,输入1月到12月中的任意一个月份数字,输出该月份的英文单词。程序如下:; Chapter04Month.proPRO Chapter04MonthREAD, PROMPT=请输入月份(1 , . , 12):, mCASE m of 1 : PRINT, January & 2 : PRINT, February 3 : PRINT, March & 4 : PRINT, April 5 : PRINT, May & 6 : PRINT, June 7 : PRINT, July & 8 : PRINT, August 9 : PRINT, September & 10 : PRINT, October 11 : PRINT, November & 12 : PRINT, December ELSE : PRINT, 输入的月份无效! ENDCASEEND,