实验1 Visual Prolog入门(1)
- 格式:doc
- 大小:441.50 KB
- 文档页数:13
在Visual C++ 中使用内联汇编- -使用内联汇编可以在C/C++ 代码中嵌入汇编语言指令,而且不需要额外的汇编和连接步骤。
在Visual C++ 中,内联汇编是内置的编译器,因此不需要配置诸如MASM 一类的独立汇编工具。
这里,我们就以Visual Studio .NET 2003 为背景,介绍在Visual C++ 中使用内联汇的相关知识(如果是早期的版本,可能会有些许出入)。
内联汇编代码可以使用C/C++ 变量和函数,因此它能非常容易地整合到C/C++ 代码中。
它能做一些对于单独使用C/C++ 来说非常笨重或不可能完成的任务。
一、优点使用内联汇编可以在C/C++ 代码中嵌入汇编语言指令,而且不需要额外的汇编和连接步骤。
在Visual C++ 中,内联汇编是内置的编译器,因此不需要配置诸如MASM 一类的独立汇编工具。
这里,我们就以Visual Studio .NET 2003 为背景,介绍在Visual C++ 中使用内联汇的相关知识(如果是早期的版本,可能会有些许出入)。
内联汇编代码可以使用C/C++ 变量和函数,因此它能非常容易地整合到C/C++ 代码中。
它能做一些对于单独使用C/C++ 来说非常笨重或不可能完成的任务。
内联汇编的用途包括:使用汇编语言编写特定的函数;编写对速度要求非常较高的代码;在设备驱动程序中直接访问硬件;编写naked 函数的初始化和结束代码。
二、关键字使用内联汇编要用到__asm 关键字,它可以出现在任何允许C/C++ 语句出现的地方。
我们来看一些例子:简单的__asm 块:__asm{MOV AL, 2MOV DX, 0xD007OUT AL, DX}在每条汇编指令之前加__asm 关键字:__asm MOV AL, 2__asm MOV DX, 0xD007__asm OUT AL, DX因为__asm 关键字是语句分隔符,所以可以把多条汇编指令放在同一行:__asm MOV AL, 2 __asm MOV DX, 0xD007 __asm OUT AL, DX显然,第一种方法与C/C++ 的风格很一致,并且把汇编代码和C/C++ 代码清楚地分开,还避免了重复输入__asm 关键字,因此推荐使用第一种方法。
Qbasic 教程BASIC(Beginner’s All-purpose Symbolic Instruction Code 的缩写,意为初学者通用符号指令代码)语言是在1964年由美国的两位教授Thomas 和John G.Kemeny在Fortran 语言的基础上设计的语言系统,这个简单、易学的程序设计语言当时只有17条语句,12个函数和3个命令,现在一般称其为基本BASIC。
BASIC语言自诞生起,几十年间,经过世界和地的微机生产厂家的不断扩充和完善,先后出现了许多版本,IBM-PC及其兼容机上用的BASIC和GWBASIC.这些不同版本的BASIC语言并不兼容,在很大程度上依赖于具体的硬件,这些BASIC语言都是非结构化的,一般称其为第一代BASIC。
70年代初,提出了结构化程序设计思想,BASIC语言的两位创始人Thomas 和John G.Kemeny于1985年推出了BASIC语言的新版本TrueBASIC,意思是说这才是真正的BASIC,以区别于各微机生产厂家自行开发的“街头BASIC”,它既保留了BASIC语言原有的简单,易学的特点,又使其成为结构化的程序设计语言,开创了BASIC语言的新纪元,属于第二代BASIC。
目前,比较流行的第二代BASIC还有Microsoft公司于1986年推出的Quick BASIC (快速BASIC)和Borland公司于1987年推出的TurboBASIC(增强BASIC),尤其是Quick BASIC提供了集编辑、调试、编译、运行于一体的集成环境,具有下拉菜单、多窗口及在线帮助功能,并和以前IBM-PC机上的各种BASIC版本保持兼容。
进入90年代,Microsoft公司研制的Windows视窗软件问世之后,微软公司又开发了一个在Windows下运行的、面向对象的Visual BASIC(可视BASIC,即图形界面式的BASIC),称为第三代BASIC,Visual BASIC与Quick BASIC完全兼容,有Quick BASIC 编写的程序不经修改就可在Visual BASIC下运行。
目录摘要............................................... 错误!未定义书签。
Abstact............................................ 错误!未定义书签。
第一章绪论........................................ 错误!未定义书签。
1.1引言........................................ 错误!未定义书签。
1.2问题的提出.................................. 错误!未定义书签。
1.3可行性分析.................................. 错误!未定义书签。
2.1专家系统概述................................ 错误!未定义书签。
2.1.1什么是专家系统........................ 错误!未定义书签。
2.1.2专家系统的组成........................ 错误!未定义书签。
2.1.3专家系统的应用领域.................... 错误!未定义书签。
2.2 知识库..................................... 错误!未定义书签。
2.3推理原理.................................... 错误!未定义书签。
2.3.1推理概念及分类........................ 错误!未定义书签。
第三章鸡疾病诊断专家系统知识库的研究............. 错误!未定义书签。
3.1鸡疾病诊断专家系统介绍...................... 错误!未定义书签。
3.2鸡疾病诊断专家系统设计...................... 错误!未定义书签。
3.2.1系统功能.............................. 错误!未定义书签。
BASIC目录[隐藏]BASIC的历史Basic 的名字中文维基百科BASIC 使用者BASIC语言的特点BASICBASIC(Beginners' All-purpose Symbolic Instruction Code,又译培基),意思就是“初学者的全方位符式指令代码”,是一种设计给初学者使用的程序设计语言。
BASIC是一种直译式的编程语言,在完成编写后不须经由编译及连结等手续即可执行,但如果需要单独执行时仍然需要将其建立成执行档。
[编辑本段]BASIC的历史1964年,两位美国计算机科学家G. Kemeny和Thomas E. Kurtz在FORTRA N语言的基础上创造了一种新的语言——BASIC,BASIC是一种适用于初学者的人机交互式语言。
[编辑本段]Basic 的名字Beginner's All-purpose Symbolic Instruction Code(初学者通用的符号指令代码),原来被作者写做BASIC,只是后来被微软广泛的叫做Basic了。
BASIC语言本来是为校园的大学生们创造的高级语言,目的是使大学生容易使用计算机。
尽管初期的BASIC仅有16条语句,但由于BASIC在当时比较容易学习,它很快从校园走向社会,成为初学者学习计算机程序设计的首选语言。
随着计算机科学技术的迅速发展,特别是微型计算机的广泛使用,计算机厂商不断地在原由的BASIC基础上进行功能扩充,出现了多种BASIC版本,例如TRS-80 BASIC、Apple BASIC、GWBASIC、IBM BASIC(即BASICA)、True BASIC。
此时BASIC已经由初期小型、简单的学习语言发展成为功能丰富的使用语言。
它的许多功能已经能与其他优秀的计算机高级语言相媲美,而且有的功能(如绘图)甚至超过其他语言。
1975 年,比尔·盖茨创立的Microsoft,并成功的把Basic语言的编译器移植到使用Intel 处理器的ALR 计算机中,IBM 在1982 年选定Microsoft 创作PC 的操作系统时,也选定了Microsoft 的Basic作为其计算机的ROM-Basic。
一、计算机的诞生与发展,及其特点1、诞生:1946年,美国为计算弹道轨迹而研制成功了世界第一台计算机。
其英文缩写名为ENIAC。
2、冯·诺依曼,“现代电子计算机之父”,其计算机的基本原理是“程序存储”。
2、发展:阶段时间逻辑器件应用范围第一代 1946——1958 真空电子管科学计算、军事研究第二代 1959——1964 晶体管数据处理、事物处理第三代 1965——1970 集成电路包括工业控制的各个领域第四代 1971——大规模集成电路应用到了各个领域3、计算机的作用a)数值计算:弹道轨迹、天气预报、高能物理等等b)信息管理:企业管理、物资管理、电算化等c)过程控制:工业自动化控制,卫星飞行方向控制d)辅助工程:CAD、CAM、CAT、CAI等4、计算机的特点计算机的运算速度快、计算精度高、存储功能强、具有逻辑判断能力和自动运行能力。
二、与计算机相差的常用英文及其中文对照CAD——计算机辅助设计CAI——计算机辅助教育CAM——计算机辅助制造CAT——计算机辅助翻译CIMS——计算机集成制造系统三、数制与编码1.四种进制数表示方式对照表。
2.四种进制用什么字母表示。
“H”表示“十六进制”;“D”表示“十进制”;“O”表示“八进制”;“B”表示“二进制”。
如:(1101)B 、(71)D 、(27)O、(4F)H 。
1.其它进制转为十进制a)二进制转十进制:(1011)2=1×23+0×22+1×21+1×20b)十六进制转十进制:(B56E)16=B×163+5×162+6×161+E×160=11×163+5×162+6×161+14×1602.十进制(整数)转为二进制十进制数除以二,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到商为“0”。
企业需求模型的形式化验证苗虹;李震;葛世伦【摘要】企业信息化建设和改造中对建立全面、正确、一致的企业模型存在巨大需求.在企业信息系统开发的生命周期中,系统分析阶段内需求的正确获取与表达是保证软件质量、降低软件开发成本和风险的关键.文中提出对需求建模时引入本体方法进行形式化描述,进而设计模型能力问题验证,发现需求和设计的缺陷,确保软件需求的正确、有效和完备.基于此选择企业经营销售管理领域,并采用逻辑程序设计语言Visual Prolog给出了针对需求模型进行验证的应用实例.【期刊名称】《江苏科技大学学报(自然科学版)》【年(卷),期】2008(022)005【总页数】6页(P79-84)【关键词】企业建模;本体;模型能力;形式化【作者】苗虹;李震;葛世伦【作者单位】江苏科技大学,经济管理学院,江苏,镇江,212003;南京理工大学,自动化学院,江苏,南京,210094;北京航空航天大学,工程系统工程系,北京,100083;江苏科技大学,经济管理学院,江苏,镇江,212003【正文语种】中文【中图分类】TP3110 引言软件开发生命周期中正确的需求获取是确保企业信息系统成功开发与实施的前提,需求模型、设计模型和实现代码之间存在着追溯关系[1];需求分析的质量影响并决定了设计的质量,进而影响并决定了代码,直至整个信息系统的质量.目前流行的UML(Unified Modeling Language)建模和MDA(Model Driven Architecture)方法更加凸现了需求模型的重要;同时模型中各概念、关联的完整性、一致性和正确性等方面也是一直以来建模中亟待解决的问题.目前不少知名大公司如AT&T,HP,Microsoft,Intel,Motorola已开始在其产品开发中使用模型检验技术,学界相关著名的研究机构如卡梅隆大学、斯坦福大学、加州大学伯克利分校等也在从事相关研究,并推出了一些模型检验系统[2];国内学者也纷纷开展了UML语义元模型、对图形化表示辅以形式化的逻辑规约、模型与形式化语言如Z,B,Prolog,VDM 等语言的转化方面的研究[3-4].但总的来说,研究是就UML中的单个模型做出形式化定义和描述;就面向企业的各类信息系统而言,其企业逻辑要高于计算机技术本身,需求建模和验证对于企业信息化建设的重要性更是不言而喻.文中提出在企业需求建模时引入本体方法,对模型中的实体概念、关系进行形式化的描述,奠定模型的逻辑基础,通过能力提问方式对模型加以验证,以确保其需求分析的正确性和有效性.1 形式化验证方法1.1 基于本体的形式化描述本体方法逐渐被引入到企业建模领域中,尤其在需求分析阶段,提取领域的元信息,帮助人们精确描述信息系统中概念术语,保证领域内概念术语的稳定性和一致性.文中引入了本体方法中相关的形式化关键技术有:① 描述逻辑一种用来描述概念和概念层次关系的知识表示语言.描述逻辑描述形成了层次知识:概念和角色名,并能转换成一阶谓词逻辑,适用于概念建模、本体检验与信息查询.② 情景演算主要用来表示动作和变化的理论,其目的是提供一种逻辑语言为活动建模,是一种基于情景概念的一阶理论.典型有TOVE(Toronto Virtual Enterprise)企业本体论研究中建立的活动本体,在一阶谓词的基础上采用了情景演算方法[5-7].③ 模型能力即模型所能解决用户需求问题的能力[8].因此让模型具备逻辑基础,同时通过问题设计,可以达到对模型完整性、一致性和正确性等不同方面能力的验证与测试.1.2 形式化验证流程图1 形式化的企业需求模型验证流程Fig.1 Process of formal validation on enterprise requirements model在企业建模领域,大部分需求分析方法基本上都基于非形式化尤其是图形化的描述,实质上都未给出数学意义上严格的语法和语义说明[9].形式化方法能够严格地定义用户需求,描述了领域需求的事实和内部逻辑,利用定义的推理规则和其内嵌的推理机制实现基于逻辑的企业需求验证.由此可以通过早期的形式化验证而不是代价昂贵的失败来确保需求定义的一致性和完整性.同时,基于形式化的企业需求验证技术能够结合传统的软件开发方法,在原有流程的基础上,利用形式化方法精确的描述能力和严格的推理过程,使计算机能够自动完成传统需求设计中的需求评审工作,在原来只有用户、开发人员和领域专家参与的技术复审活动中加入了软件测试人员.由此包含需求验证工作的广义软件测试从需求分析阶段就得以展开,使得在需求设计阶段发现和解决软件缺陷的可能性大大增加[10],具体流程如图1所示.2 Prolog逻辑程序设计语言由上可知,谓词逻辑不仅可以用来表示事物的状态、属性、概念等事实性知识,也可以用来表示事物的因果关系,即规则.Prolog语言是著名的逻辑程序设计语言,非常适合于专家系统,用来规划和其他AI(Artificial Intelligence)问题的求解.Visual Prolog是基于Prolog语言的可视化集成开发环境,支持谓词逻辑的形式系统,同时具有模式匹配、递归、回溯、对象机制,事实数据库和谓词库等强大的功能,包含构建大型应用程序所需要的一切特性以及与其他编程语言的接口[11].正因为这一特质,可以由软件测试人员或者自动化工具对企业需求模型进行形式化描述以存储事实,在积累的测试经验基础上通过和用户、专家交流完成对需求模型的验证问题设计并将其形式化,形成若干包含内在规则的问题对形式化的需求模型来进行提问.通过形式化的描述需求模型、用户和专家的问题和规则、设计需求验证问题这一系列的过程,实现企业需求的形式化验证.在Visual Prolog程序中包括5个段,段结构和形式化软件需求验证设计过程的对应关系如表1所示.表1 Visual Prolog段结构和形式化需求验证设计过程的对应关系Table 1 Corresponding relationship between the Visual Prolog structure and validation design process段结构功能设计过程论域段声明正在使用的任何论域形式化的自定义论域谓词段声明谓词及其参数的论域(类型)形式化的定义领域需求的对象和关联子句段放置事实和规则形式化的描述领域需求的活动事实和关联事实,将用户和专家的问题和内容进行形式化的规则提取并描述内部事实数据库由若干事实组成,这些事实在程序运行期间可以直接加入或删除形式化的记录需求模型动态运行时事实和关联的变化目标段放置Visual Prolog程序的开始目标形式化的键入用户和专家的问题,得到目标问题的解集3 应用实例3.1 形式化转换设计以一般企业经营销售子领域为例,其功能用例以及销售管理的行为序列如图2所示[12].依据图2中的图形化描述,以谓词的方式在Visual Prolog将其所反映的领域需求进行形式化的转换,结果如表2所示.图2 销售管理部分需求模型(用例图和序列图)Fig.2 Part of sales management model(use case diagram and sequence diagram)表2 形式化转换设计Table 2 Design in formal representation需求模型中的对象与关联谓词段定义部门组织(organization) organization(string) 单据(bill) bill(string) 行为活动(activity) activity(string) 计划(plan) plan(string) has-authority(部门组织,活动) has-authority(string,string) sub-organization(部门组织,部门组织) sub-organization(string,string) sub-activity(活动,活动) sub-activity(string,string) enable(单据/计划,活动) enable(string,string) …… 子句子段中的事实定义注释活动事实activity(“draw sales plan”) 制定销售计划activity(“assign sale-task”) 布置销售任务activity(“sale”) 经营销售职能activity("fill out delivery bill") 填写发货单 activity("apply for product out of storage"). 申请产品出库 activity("modify receivables"). 应收帐款勾对…… activity("sales account-book") 销售统计组织部门事实organization(“sales department”) 经营销售部organization(“financial department”) 财务管理部单据事实bill(“sale-task assignment bill”) 销售任务单bill(“delivery bill”) 发货单bill(“shipment bill”) 货运单bill(“client payment list”) 客户回款清单bill(“sale invoice”) 销售发票部门职能事实has-authority(“sales department”, “sale”)has-authority(“sales department”, “draw sales plan”)…… 部门-职能关联enable(“sales plan”, “assign sa le-task”)enable(“sales invoice”, “sales invoice manage-ment”)enable(“market demand information”, “com-petitorinformation”, “market forecast”)…… 子句段中的规则定义部门-职能关联 list_authority(Orgnization):-organization(Orgnization),activity(X),has_authority(Orgnization,X),write(Org nization),nl,write("has authority:"),nl,write(X),nl,nl,fail. 定义反映状态的使能约束situationenable("draw sales plan"):- organization("sales department").situationenable("assign sale-task"):- bill("sales assignmentbill").situationenable("fill out delivery bill"):-external("saler").situationenable("apply for product out of storage"):-bill("delivery bill").situationenable("list details of the goods"):-bill("shipment bill").situationenable("get account receivable"):-bill("shipment bill").situationenable("deliver goods"):- external("storage keeper").situationenable("client payback"):-external("client").situationenable("client payback record"):- bill("client payment list"). situationenable("modify receivables"):-organization("financial department").situationenable("make out invoice"):- organization("financial department").situationenable("invoice disposal"):- bill("sales invoice"),organization("financialdepartment"), bill("client paymentlist"),external("saler").situationenable("daily reprot of fund"):- organization("financial department").situationenable("sales account-book"):- bill("sales invoice"),organization("financialdepartment"),bill("client payment list"),external("saler"). 动态过程的初始状态定义execute_from_activity(X):-activityenable(X),situationenable(X),write(X),nl,nl,assert(over(X)),changesitu ation(X),nextactivity(Y,X),execute_from_activity(Y). 活动发生时的触发活动约束和状态变化定义changesituation("draw sales plan"):- assert(bill("sale-task assignment bill")).changesituation("assign sale-task"):-!.changesituation("fill out delivery bill"):- assert(bill("delivery bill")).changesituation("apply for product out of storage"):-assert(bill("shipment bill")).changesituation("list details of the goods"):-!.changesituation("deliver goods"):- !.changesituation("client payback"):-assert(bill("client payment list")).changesituation("client payback record"):- !.changesituation("modify receivables"):- !.changesituation("make out invoice"):- assert(bill("sales invoice")).3.2 形式化验证形式化表示该领域的需求模型后,该模型若是完备的或标准的,那么面向某个用户的具体需求问题时,它是应该可以从中给出答案的,相应于Prolog中的工作流程如图3所示,即可完成对所建需求模型的验证与测试.假设将表2中的关联事实has_authority("sales department","draw sales plan")删去,即未定义该关联,提问:该模型描述的部门存在哪些职能?在Visual Prolog的目标段键入问题的形式化表达:list_exsit_authority(X).,程序运行得到的系统回答如下:图3 Prolog工作流程图Fig.3 The working process in PrologTech_design Departmenthas authority:tech_designProduct Departmenthas authority:product management回答部分显然缺少sales department has authority: draw sales plan,则要求修改领域本体模型.定位到相应的子句规则段list_exsit_authority处,根据此谓词的规则定义:list_exsit_authority(Orgnization):-exsit_authority(Orgnization),fail.再定位到子句规则段exsit_authority处,又根据它的规则定义:exsit_authority(Orgnization):-organization(Orgnization),activity(X),has_authority(Orgnization,X),write(Orgnization),nl,write("has authority:"),nl,write(X),nl,nl,fail.通过对exsit_authority规则的分解,作出相应的提问:存在哪些部门组织?在Visual Prolog的目标段键入:organization(X).,运行结果如下:X=sales departmentX=tech_design departmentX=product departmentX=material departmentX=financial department5 Solutions据此逻辑,是首先确认需求模型中是否存在此概念,若存在,该模型程序即可回答出其领域中的实例化概念,否则说明该模型的通用性概念不完整,需补充定义此概念;而此时答案表明模型描述的组织中包括sales department,则继续提问:存在哪些活动?在Visual Prolog的目标段键入:activity(X).,运行结果如下:X=StartX=draw sales planX=assign sale-taskX=fill out delivery billX=apply for product out of storage……X=invoice disposalX=daily report of fundX=sales account-bookX=saleX=tech_designX=product management18 Solutions同理得出需求模型的形式化谓词定义中已存有此概念,即上述回答表明模型描述的活动中包含了“draw sales plan”活动,则可再继续提问:模型是否描述了销售部门具有制订销售计划的关联?在Visual Prolog的目标段键入:has_authority(“sales department”, “draw sales plan”).系统运行结果为:No Solution此时表明模型中不存在这样的关联事实,所以要求修改模型,当修改了模型并相应地在子句段重新加入关联has_authority("sales department","draw sales plan")后,得到期望结果:Sales departmenthas authority:draw sales planTech_design Departmenthas authority:tech_designProduct Departmenthas authority:product management因此,修改后的模型具备了回答这个问题的能力.该实例在不断的提问过程中,首先从问题中提取最基本通用的概念验证其存在性,再由此测试这些概念实体间关联的完整性,体现了模型通用性、完整性、一致性方面的能力.同理,通过表2中活动的初始状态、活动发生时的触发约束和状态变化,以及状态的使能约束等一系列谓词的定义,可以对模型动态过程方面的能力提问,使其动态演绎企业活动,正确描述企业活动间的约束以及状态变化引起的事件触发,验证模型(如图2中的序列图)的动态逻辑.4 结论形式化的需求验证引入本体方法使得图形化的企业需求模型具有精确说明和共享的语义基础与逻辑基础,由此展开的模型能力提问让测试人员从企业信息系统的需求开发阶段就得以介入,使得在需求分析阶段发现和解决缺陷的机会大大增加.需求验证加大了测试对提高软件质量的支持力度,有助于降低开发的风险成本.基于不同角度设计模型能力问题,对多个需求模型进行考察,并能方便缺陷的定位与追溯. UML统一建模语言的语义精化和具有自解释能力的XML技术的出现使得需求开发走上标准化和通用化的道路,基于标准化OCL的UML/MDA框架,开发准确语义的需求模型,支持用户需求和专家规则的交互界面、自动化的后台推理机、面向领域的完整的企业需求模型检验系统、支持后期软件功能测试的用例自动生成等将是进一步研究的方向.参考文献(References)[1] 吴际,金茂忠.UML面向对象分析[M].北京:北京航空航天大学出版社,2001.[2] 董威. 面向UML的模型检验研究[D].上海:国防科技大学,2002.[3] 占学德. 基于UML Statecharts 测试方法的研究[D].上海:上海大学,2005.[4] 刘静. 基于形式规格说明的统一软件建模系统的研究[D]. 上海:上海大学,2005.[5] Fox M S, Michael G. An activity ontology for enterprise modelling[C]∥Workshop on Enabling Technologies-Infrastructures for Collaborative Enterprises.West Virginia University,1994.[6] Pinto J, Reiter R. Temporal reasoning in logic programming: A case for the situation calculus[C]∥Proceedings of the 10th International Conference on Logic Programming. Budapest Hungary,June 1993.[7] 姜艺,潘燕华,葛世伦.一种基于本体的企业建模策略[J]. 江苏科技大学学报:自然科学版,2006,20(3): 85-90.Jiang Yi, Pan Yanhua, Ge Shilun,.A strategy of enterprise modeling based on ontology [J].Journal of Jiangsu University of Science and Technology:Natural Science Edition,2006,20(3): 85-90.(in Chinese)[8] Gruber Thomas R, Fox M S. The role of competency questions in enterprise enginee ring[C]∥Proceedings of the IFIP WG5.7 Workshop on Benchmarking-Theory and Practice.Trondheim Norway,June 1994.[9] Rumbaugh B G, Jacksen J. The Unified Modeling Language User Guide[G]. Addison-Wesley, 1999.[10] 齐治昌,谭庆平,宁洪.软件工程[M]. 北京:高等教育出版社,2004.[11] 雷英杰,张雷,邢清华,等. Visual Prolog语言教程[M]. 西安:陕西科学技术出版社,2002.[12] 葛世伦, 潘燕华. 大型单件小批制造企业信息模型[M].北京:科学出版社,2006.。
Crosswords问题的智能程序实现 (一) 课标要求: (三)人工智能语言与问题求解 (1)了解一种人工智能语言的基本数据和程序结构,掌握相关概念,知道人工智能语言的主要特征。 (2)初步学会使用该语言设计程序求解简单问题,并能够上机调试、执行相应的程序。 例1 用匹配方法解决简单的查询问题。
(二)学情分析: 学生在完成必修模块的学习后,会逐步对运用信息技术解决实际问题产生浓厚的兴趣,运用信息技术的意识会不断增强。特别是在完成了信息的编程加工与智能化加工的知识后,学生对于如何在计算机编制程序解题会比较关注。
华南师大附中在选修课程的开设上,教师根据学生特点,针对高一奥林匹克班学生开设了《算法与程序设计》和《人工智能初步》两门选修课,两门课程的选学人数分别为18人和47人。很明显地看出,学生对人工智能的学习兴趣是比较大的。一方面与这模块的内容比较新颖有关,另一方面也与学生通过各种渠道认识计算机强大的计算能力,从而对计算机智能化认识的不全面有关。
第一章的学习后,学生通过充分的体验,认识了人工智能学科的研究内容、主要技术和应用领域。由于大部分学生在选修本模块之前都没有学习程序设计的知识,第二章的教学设计将首先安排学生学习人工智能语言,给予学生更多的动手实践的时间和空间,让学生保持着对这一门技术难度较高的课程的学习兴趣。采用“程序设计”学习与理论知识同步的策略,在学习PROLOG人工智能语言的基础上,渗透教材中“知识”及“知识表示”的内容。PROLOG语言的学习实际上是一个载体,它可以让原本抽象的“知识”及“知识表示”具体化,学生可以在实践中更好地理解和体会这部分内容。
学习程序设计语言一直以来都是信息技术教育中讨论的热点问题。在设计PROLOG教学时,要考虑遵循学生的认知规律,循序渐进地引领学生学习程序结构、语法及数据结构。因此,教学时尝试打破一般程序设计教学中“先讲语句语法,再编程序”的思路,直接从实用的角度和解决问题角度入手来认识PROLOG程序。教学过程中简易问题的PROLOG程序最好能够与自然语言的表达相近,推理过程要比较直观,这有助于学生对程序的阅读和理解,消除学生对语言语法学习的恐惧心理。
Visual Prolog语言简介
Prolog语言是人工智能与专家系统领域最著名的逻辑程序设计语言。Visual Prolog意指可视化逻辑程序设计语言,是基于Prolog语言的可视化集成开发环境,是Prolog开发中心(PDC)最新推出的基于Windows环境的智能化编程工具,其语言特性符合相应的国际标准ISO/IEC 13211-1:1995。目前,Visual Prolog在美国、西欧、日本、加拿大、澳大利亚等发达国家和地区十分流行,是国际上研究和开发智能化应用的主流工具之一。预计短时期内,在国际上已经十分流行的最新版本的可视化逻辑程序设计语言Visual Prolog将会在我国广泛流行开来,并将迅速成为我国研究和开发智能化应用的最重要的工具。 Visual Prolog具有模式匹配、递归、回溯、对象机制、事实数据库和谓词库等强大功能。它包含构建大型应用程序所需要的一切特性:图形开发环境、编译器、连接器和调试器,支持模块化和面向对象程序设计,支持系统级编程、文件操作、字符串处理、位级运算、算术与逻辑运算,以及与其它编程语言的接口。 Visual Prolog包含一个大型库,捆绑了范围广阔的API函数:包括Windows GUI函数族、ODBC/OCI数据库函数族和Internet函数族(socket、ftp、http、cgi等)。这个开发环境全部使用Visual Prolog语言写成,而且包含对话框、菜单、工具栏等若干编码专家和图形编辑器。Visual Prolog支持Windows 3.x/95/98/Me/NT/2000/XP、OS/2和文本方式下的DOS、Linux和SCO UNIX。 Visual Prolog非常适合于专家系统、规划和其它AI相关问题的求解,是智能程序设计语言中具有代表性且应用较多的一种语言。由于这种语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用。Visual Prolog不仅是优秀的智能化应用开发工具,而且已经成为适用于任何应用领域的强有力的通用开发工具。Visual Prolog与SQL数据库系统、Visual C++或其它C++开发系统、及Visual Basic、Delphi或Visual Age等编程语言一样,可以用来轻松地开发各种应用,包括数据库和Web应用。 智能化是当前计算机、自动化、通信、管理等信息科学技术领域中的新方法、新技术、新产品的重要发展方向与开发策略之一。信息处理的智能化与信息社会对智能的巨大需求是人工智能发展的强大动力。人工智能与专家系统曾取得过许多令人注目的成果,也走过不少弯路,经历过不少挫折。近几年来,随着计算机与网络通信技术的迅猛发展,特别是因特网的大规模普及,人工智能与专家系统的研究再度活跃起来,并正向更为广泛的领域发展。围绕人工智能与专家系统的研究和应用开发也迎来一个蓬勃发展的新时期。因此,引进与消化国际上已经广泛流行的功能强大和通用的智能程序设计语言、工具与环境,对于我国开发智能应用系统十分必要。
补充教程(写在正式教程的前面) 如果你是一位prolog的新手,希望你首先阅读这篇文章,好对prolog的全局有个了解。在这篇文章中我会把prolog和其他的程序语言做比较,所以希望你已经具有了一定的编程水平。
什么是prolog? prolog是Programming in LOGic的缩写,意思就是使用逻辑的语言编写程序。prolog不是很高深的语言,相反,比较起其他的一些程序语言,例如c、basic等等语言, prolog是更加容易理解的语言。如果你从来没有接触过计算机编程,那么恭喜你,你将很容易的进入prolog世界。如果你已经是其他语言的高手,你就需要完全丢弃你原来的编程思路,否则是很难掌握prolog的。
Visual Prolong 软件使用说明 (1)
Visual Prolong已经增加了如下的新功能: 一个独特的对象系统 多线程机制 Unicode支持 改进的DLL支持 改进的函数支持 改进的异常处理 其它更多的功能等 Visual Prolong是一个完备的程序设计环境,它提供了如下的设施: 图开开发环境 编译器 链接器 调试器
创建项目: 从这部分开始,将会给出一个可视化的开发环境(VDE)的综述。这个VDE是用来创建、开发和维护Visual Prolong项目的,也就是说,在一个项目文件中,将使用这个VDE来完成如下任务。 创建(creation)项目: 建立(building)项目: 浏览(browing)项目: 开发(development)项目: 调试(debugging)项目:
创建项目: Project-new 选择项目名为tut01,项目名也作为将要产生的目标文件名,在此例子中,目标文件是一个exe文件,故目标文件名将是tut01.exe,选择UI策略为GUI,即该程序是一个GUI程序,带有图形用户界面。 基本目录是一切项目的基地。
单击“创建”按扭,创建该项目,VDE将显示出如下图
左面的窗口是项目窗口,它包含项目中有关实体的各种信息。这个窗口现在尚不包含大量的信息,但当编译项目时,各种信息就会添加进来。后面将会较详细地分析在编译该项目时这个窗口所包含的各种信息。 右面或底部是消息窗口,它将包含各种状态信息和进展信息。 2.建立项目 在做任何修改之前,首先要建立该项目,即编译和链接该项目。在建立(building)菜单中,可以找到建立、编译和执行项目的菜单命令。
编译过后 3.浏览项目 图中最顶部结点代表项目,其它结点是项目目录 紧下面是逻辑结点,它表示Visual Prolong的安装目录,这个目录包含来自目录Visual Prolong系统的库和库代码。 接下来的目录是任务窗口,它是将项目目录的一个子目录,这个目录包含产生任务窗口、菜单、工具栏及关于对话框等所需要的全部代码。 最后可以看到若干个文件,Visual Prolong使用以下约定: *.ph文件是程序包的头文件.一个程序包是类和接口的一个集合,程序包常被当作一个积木块使用 *.pack文件是程序包,它们包含相应的*.ph文件的实现或定义. *.i文件包含一种接口.(interface) *.cl文件包含一个类声明 *.pro文件包含一个类的实现 如果完全展开tut01.cl结点,可以看到如下图: 新出现的几个类型的结点的含义如下: *.dlg文件包含一个对话框 *.win文件包含一个窗口 *.mnu文件包含一个菜单 *.cur文件包含一个光标 *.ico文件包含一个图标 继续考查后还可以发现 *.tb文件包含工具栏 *.bmp文件包含位图 *.lib文件包含库 如果右击一个结点,一个关联菜单将出现,菜单中包含对这个特定结点进行适当的操作的有关命令 如果双击一个结点,则相应的实体将调出对应的编辑器,所有的源代码文件都将在文本编辑器中进行编辑.
如果有些实体出现两次,这是因为它们既有一个声明,又有一个定义或实现. 4.开发项目 实验一 Visual Prolog集成环境 一、实验目的 熟悉和掌握Visual Prolog 6.1的安装和Visual Prolog集成环境的使用,能够简单创建项目、建立项目、浏览项目、开发项目、调试项目。
二、实验原理 Prolog在英语中的意思就是Programming in Logic(逻辑编程)。Visual Prolog具有模式匹配、递归、回溯、对象机制、事实数据库和谓词库等强大功能。也具有一般语言的处理功能。它非常适合于专家系统、规划和其它AI相关问题的求解,适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用。
三、实验条件 1 Visual Prolog 6.1。 三、实验内容 1、安装Visual Prolog 6.1 2、创建简单的GUI和CONSOLE项目。 3、了解VDE创建项目、建立项目、浏览项目、开发项目、调试项目一般过程。 4、了解一个项目由那些文件组成及其各自的作用。 四、实验步骤 1、服务器上获取Visual Prolog 6.1 (freeware)压缩文件,解压缩后直接安装程序。 2、从开始菜单和快捷方式中Visual Prolog 6.1环境,出现一个空白的VDE环境,如果创建过项目,则直接打开了该项目,如上图。
3、打开帮助文件,熟悉各个菜单项目的主要功能。 4、创建一个GUI的项目,并在ABOUT窗体中添加一个“按钮”,并添加事件,修改“按钮”的标题。
5、通过帮助系统了解本GUI项目中各个文件的作用。 6、通过设置断点,能够在GUI项目中调试程序。 7、创建一个CONSOLE的项目,并能够使用console类实现简单的输出,从而了解Visual Prolog 6.1程序的执行过程。
五、实验报告要求 1、试验目的。 2、试验内容。 3、试验过程。 4、试验总结。 Visual Prolog是基于逻辑程序设计语言Prolog的一种强类型的面向对象的程序设计语言。一个Visual Prolog程序包括一个目标、大量的接口声明和类的实现程序。
接口、类声明和类实现包括Prolog实体的定义和声明,即 论域 常量 谓词 事实数据库 Visual Prolog 程序的实际代码中的谓词声明和子句定义声明。