第一篇:Prolog概述
Visual Prolog智能集成开发环境评述
雷英杰
邢清华
孙金萍
张 雷
(空军工程大学导弹学院 陕西三原
713800)
摘 要:Visual Prolog是国际上已经广泛流行的功能强大的通用智能化应用集成开发环境。本文全面评述其功能特点,包括Visual Prolog的由来与发展、可视化开发环境、可视化编程接口、语言与编译器、运行环境等。
关键词:Visual Prolog;人工智能;逻辑程序设计;开发环境
中图分类号:TP393 文献标识码:A 文章编号:1009-3516(2002)05——
Overview of Visual Prolog Intelligent Integrated Development Environment LEI Ying-jie, XING Qing-hua, SUN Jin-ping, ZHANG Lei(The Missile Institute of Air Force Engineering University, Sanyuan Shaanxi, 713800, China)
Abstract Visual Prolog has already become a widely used AI programming language in logic and international developing tools and environment, which is a powerful, general-purpose, intelligent and integrated visual studio.All aspects of Visual Prolog are presented in this paper, such as how it derives and evolves, and its visual programming environment, visual programming interfaces, the features of programming language and compiler, running environment and so on.Keywords: Visual Prolog;Artificial Intelligence;Programming in Logic;Development Environment
智能化是当前计算机、自动化、通信、管理等信息科学技术领域中的新方法、新技术、新产品的重要发展方向与开发策略之一。信息处理的智能化与信息社会对智能的巨大需求是人工智能发展的强大动力。人工智能研究曾取得过许多令人注目的成果,也走过不少弯路,经历过不少挫折。近几年来,随着计算机与网络通信技术的迅猛发展,特别是因特网的大规模普及,人工智能的研究再度活跃起来,并正向更为广阔的领域发展。围绕智能化应用系统的研究和开发也迎来一个蓬勃发展的新时期。因此,引进与消化国际上已经广泛流行的功能强大和通用的智能程序设计语言、工具与环境,对于我国开发智能应用系统十分必要。有鉴于此,本文全面介绍和评述Visual Prolog的功能特点,希望对我国在这一领域从事教学、研究及应用开发的同行有所启迪。
1.Visual Prolog的由来与发展
Prolog语言是人工智能与专家系统领域最著名的逻辑程序设计语言。Visual Prolog意指可视化逻辑程序设计语言,是基于Prolog语言的可视化集成开发环境,是Prolog开发中心(PDC)最新推出的基于Windows环境的智能化编程工具,其语言特性符合相应的国际标准ISO/IEC 13211-1:1995。目前,Visual Prolog在美国、西欧、日本、加拿大、澳大利亚等发达国家和地区十分流行,是国际上研究和开发智能化应用的主流工具之一。预计短时期内,在国际上已经十分流行的最新版本的可视化逻辑程序设计语言Visual Prolog将会在我国广泛流行开来,并将迅速成为我国研究和开发智能化应用的最重要的工具。
Visual Prolog具有模式匹配、递归、回溯、对象机制、事实数据库和谓词库等强大功能[1]。它包含构建大型应用程序所需要的一切特性:图形开发环境、编译器、连接器和调试器,支持模块化和面向对象程序设计,支持系统级编程、文件操作、字符串处理、位级运算、算术与逻辑运算,以及与其它编程语言的接口。Visual Prolog包含一个大型库,捆绑了范围广阔的API函数:包括Windows GUI函数族、ODBC/OCI数据库函数族和Internet函数族(socket、ftp、http、CGI等)。这个开发环境全部使用Visual Prolog语言写成,而且包含对话框、菜单、工具栏等若干编码专家和图形编辑器。Visual Prolog支持Windows 98/Me/NT/2000/XP、OS/2及文本方式下的Linux和SCO UNIX。Visual Prolog非常适合于专家系统、规划和其它AI相关问题的求解,是智能程序设计语言中具有代表性且应用较多的一种程序设计语言。由于这种语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用,在智能程序设计语言中占有相当重要的地位。
Prolog是全世界计算机科学家多年来研究工作的结晶。Prolog的第一个正式版本由法国马赛大学Alain Colmerauer于70年代作为一种逻辑程序设计工具研制。其结果是诞生了一种远比当今Pascal和C这样著名的编程语言功能更加强大的语言。一个特定应用的Prolog程序典型情况下只需要对应C++程序的十分之一程序行。
今天,Prolog是人工智能应用编程和专家系统开发的一个非常重要的工具。更多的“用户友好性”和智能化程序的要求是使Prolog流行起来的另一个原因。但Prolog最重要的好处是非常公平地适用于任何应用领域:通过让程序员建立对象和进程之间的逻辑关系,复杂问题更容易从本质上求解,而且产生的程序在其生命周期更容易维护。定制知识库、专家系统、自然语言接口和智能信息管理系统这些应用都是当前使用Visual Prolog进行程序设计的领域范围[3]。
Prolog已经走出了人工智能实验室,PDC的Visual Prolog是一个商业上富有竞争的通用开发环境。Visual Prolog因其容易增加程序甚至网站的智能化特性而日益变成许多开发者选择的工具。
Prolog是一种众所周知的说明性语言。这就是说,给出所需要的事实和规则,Prolog将使用演绎推理求解编程问题。这与传统的过程性编程语言如C、BASIC和Pascal等形成了鲜明的对照。在过程性语言中,程序员必须提供一步一步的指令,准确地告诉计算机如何求解给定的问题。换句话说,程序员必须预先知道如何求解这个问题。相反,Prolog程序员只需要提供对问题的描述和求解的基本规则。然后,Prolog系统本身将确定如何找到一个解。
由于这种说明性(而不是过程性)方法,众所周知的错误来源,诸如循环操作次数多一次或少一次这样的错误,一开始就被排除了。Prolog鼓励程序员从结构良好的问题描述开始,因而实际上,Prolog也可以被用作指定产品的规格说明工具和实现工具。
Visual Prolog是PDC Prolog和Turbo Prolog的后继产品。在微机上,Visual Prolog是基于Windows环境的,而早期的PDC Prolog和Turbo Prolog是基于DOS环境的。Visual Prolog特别适合于处理知识和知识问题求解,是优秀的智能化应用开发工具。同时它与SQL数据库系统、C++开发系统和其它语言工具如Visual Basic、Borland的Delphi或IBM的Visual Age一样,都致力于同样的目标,已经成为适合于任何应用领域的通用开发工具。当今有一些组织趋向于用数据库技术来求解一切问题,但这种途径常常在开发时间和最终系统的性能两方面导致坏的结果。用Prolog开发的应用程序具有更优越的性能和用户友好性、更短的开发时间。PDC的Visual Prolog特别适用于这些传统类型的数据库任务,因为Visual Prolog具有的编程能力之一就是十分易于使用的数据库引擎。Visual Prolog由于高度优化的编译器,创建的程序非常快,几乎与基于C++的应用程序一样快。
Web编程支持和对象机制这两种功能是对Visual Prolog商用有效性的巨大贡献。对象机制本身就是一种非常强大的建模工具,几乎已经成了Pascal、C++、Smalltalk等语言的一种事实上的标准。Web编程支持是一个重要的新特性。譬如,用Visual Prolog写的专家系统,可以被连接到Web页,在支持部门、网上贸易和其它一些基于Web技术的开发等方面将发挥重要作用。
2.可视化开发环境
Visual Prolog的可视化开发环境(VDE)[4]把编译器与编辑器、资源工具箱、资源和应用程序专家、交互式建造工具和各种浏览工具等结合在一起。
在交互式、可视化地创建用户接口部件之后,就自动生成了一个运行原型。应用程序专家为一个项目创建所需要的全部文件,资源专家知道如何生成Prolog代码,以支持所选择的全部资源。
设计VDE是为了使开发应用程序更加容易、方便和快捷,这些应用程序是基于每一个本地操作系统提供标准接口的高级抽象。功能上相同的可视化开发环境可以运行在所有的Windows平台上。
编码专家(Code Expert)创建并维护Prolog的控件资源代码。Visual Prolog最大的强项可能是把布局设计工具(Layout)和编码专家结合在一起。编码专家完成大部分工作,就是说,你可以在几分钟之内创建一个应用程序,然后从这个原型逐渐增强到最终的应用程序。
应用程序专家(Application Expert)能生成一个新项目,或对一个现有项目进行配置。它说明操作系统、用户接口策略、C编译器、伴随工具等数千种组合情形。当生成一个新项目时,它将自动建立所有的基本工具,如帮助文件、工具栏、菜单等。
资源编辑器包含一组工具,这些工具使得以交互方式可视化地设计和修改用户接口成为可能。可以直接使用鼠标安排控件在对话框或窗口中的布局,设置访问属性。资源由窗口、对话框、位图、图标、光标和字符串等组成,它们是任何使用GUI的应用程序都需要的。Visual Prolog具有很强的引入资源的能力。资源可以从DLL、应用程序、RES文件及其它Visual Prolog项目引入。
Visual Prolog包含一个语言敏感的文本编辑器,它具有现代开发环境中能找到的所有特性。例如编辑器强大的源代码控制功能,可以使Visual Prolog的关键字和其它语言元素的代码有不同的颜色。这些颜色能使谓词名、参数、注释等之间的差别更易于区分。例如,整型常数可以分配以红色显示。编辑器支持不受限制的撤消与重做设施、搜索与替换、剪切、拷贝、粘贴、快速拖放移动块,甚至嵌入超文本链接。此外,与以前的PDC编辑器一样,程序员能够把这个编辑器功能包括在自己的应用程序中。这个编辑器用在VDE中的独有特色是它知道Visual Prolog的所有谓词、用户接口部件、颜色、常量等。所有这些特性都可以容易地用鼠标粘贴到源代码。
VDE包含有帮助生成器。内置的帮助创作系统使得很容易给出应用程序的联机帮助。这个帮助系统是基于PDC的超文本抽象机(HAM)的。在帮助创作系统中,有可能在设计阶段交互式地输入文本,用鼠标标记新的链接,跟随现有的链接。帮助系统能够输出Windows的.RTF格式,所以它可以生成本地的Windows帮助系统。Help编译器(如HCW.EXE)不包括在Visual Prolog中,但可以在Visual C++和Borland C++产品中找到。也可以在ftp.microsoft.com站点下载一个最新版本的Windows帮助编译器。
Visual Prolog编译器为源代码浏览器产生信息,所以,检查模块中的谓词、浏览项目中所有全局谓词,或者查找任何谓词、论域声明或定义的位置,都是可能的。
Visual Prolog也可以使用源代码控制系统,如Visual SourceSafe、PVCS和MKS,因而很容易在几个项目之间共享源代码,也允许多个程序员从事同一项目。
Visual Prolog的联机帮助设施提供一个完全的VDE操作指南和完整的基本Prolog语言及可视化编程方面扩展的参考信息。当Prolog程序较大时,你就会发现Visual Prolog的调试器是一个不可缺少的工具。调试器对编译出来的代码进行工作,允许设置断点和单步执行代码。当单步执行代码时,可以检查变量的值及尚待证实的事实的内容。
Make工具处理编译、连接、资源编辑和资源绑定等所有的复杂性工作。Make工具检查时间邮戳,每次只编译所需要的文件。为了显示项目的结构,可以把项目中的依赖关系显示成一个树。
在Visual Prolog专业版本中有一个VDESRC子目录,在这个子目录中可以找到可视化开发环境的全部源代码。有了它,就可以任意定制所期望的VDE,或者研究在程序中如何实现这些功能、适当的工具和技术。用来安装Visual Prolog的安装程序本身是用Visual Prolog写成的,其核心源代码包含在磁盘上。它能被修改而创建你自己应用程序的安装程序。
3.Visual Prolog语言与编译器
Visual Prolog的编译器产生紧凑的本地代码,足以与Pascal和C编译器所生成的代码媲美。编译器执行几种不同的分析,范围从全局流程分析和确定性机制检查,向下到寄存器分配和偷窥优化[2]。
除了产生有效代码以外,编译器还执行许多高级检查,检测潜在的编译时间问题。主要是类型检验分析、全局流程分析、确定性机制检查和可能的失败检测。
检测编译时间错误的类型检查机制。许多Prolog是无类型的解释程序,而Visual Prolog杰出的特性之一恰恰是其强类型机制,它提供一个额外级别的编程安全性。类型声明是资料性代码,有助于编译器在开发的早期阶段指出创建的类型错误和更严重的逻辑错误。因此,通过比照程序员和开发系统之间的类型,使得类型声明有助于保证一个程序在整个产品生命周期的完整性。更进一步,这些声明帮助编译器生成的程序更有效,在执行期间更节省存储空间。
异常处理和错误陷阱。Visual Prolog包括功能强大的处理错误情况和控制用户中断的机制[1]。程序员可以在错误检查和错误报告的各个级别上进行选择。例如
check_diskette(S):-trap(disk(S), ExitCode, errorhandler(ExitCode)).类和对象。人们常常在面向对象和说明性编程语言之间进行取舍,但在Visual Prolog中,可以同时使用 来自这两种范例的特性。Visual Prolog语言支持对象和类,在设计中与C++实现类似。
可移植性编码。Visual Prolog系统可用于多种平台,并能为多种平台生成程序。除了个别操作系统专用设施和限制之外,Prolog代码在所有平台之间是可移植的。诸如拷贝、重命名和删除文件、调用其它程序、返回日期和时间等函数,在所有平台上的工作都是相同的。应用程序能够针对Windows 98/Me/NT/2000 /XP及Linux等产生各种不同的应用程序版本。
开放式平台。Visual Prolog很好地设计了与其它编程工具的接口。Visual Prolog能生成其它语言可调用的例程,它本身也能够调用其它语言编写的例程。接口是通用的,而且支持所有产生标准.OBJ模块的编译器。此外,Visual Prolog程序还能够调用DLL,并被放在DLL内部。
通过声明全局Visual Prolog谓词为C语言(或stdcall)调用约定,通过声明参数类型和输入/输出流程模式,在Visual Prolog和C之间不用特殊的胶合代码而直接调用C例程(就象它们是Prolog代码一样)是完全可能的。这种接口在两个方向上起作用,当谓词象C语言那样声明时,它们能够被C语言例程直接调用。例如
GLOBAL PREDICATES procedure LONG vpi_LoadDll(STRING)(I)language c procedure LONG vpi_GetDllProc(LONG, STRING ProcName)-(I,I)language c 数据库子系统。快速而非常灵活的数据库子系统使Visual Prolog成为一个比许多4GL数据库应用更适当的选择。这个数据库系统支持一个独特的Visual Prolog项的有序链的集合,而数据库的项可以是语言本身支持的任何抽象或数据结构,从简单的记录到树或图。数据库系统能直接访问单个项,或经由项的链进行回溯,以产生或匹配特定值。项可以存放在三个位置中的任何一处:在一个文件中、在内存中或在EMS中。数据库还支持B+树,以提供快速数据检索和有效改变项排序的能力。
如果你正在LAN应用程序中使用数据库,就可以利用Visual Prolog支持外部数据库系统的文件共享这个优点。通过使用相应的机制,在交易内部使文件访问串行化,从而可有效地提供多用户数据库访问功能。也就是说,一个数据库可以被几个用户或几个进程同时打开。
Prolog解释器源代码。Visual Prolog还包含Prolog推理机PIE(Prolog Inference Engine):用Visual Prolog编写的一个标准Prolog解释器的全部源代码。对于更多地学习Prolog如何工作和如何把元语言能力加进应用程序来说,这个解释程序是一个强大的工具。你可以修改这个解释程序,创建自己专用的逻辑程序设计语言、推理机、专家系统外壳或程序接口等。
把Prolog编译器嵌入到应用程序。在VPITOOLEXAMPBUILD子目录中,有一个例子说明如何把Prolog编译程序和连接程序集成到你的应用程序,以便编译那些尚未工作的规则。通过在.DLL中实现规则,就可以改变规则而不用关闭应用程序。对于规划和调度而言,这是一个非常强大的功能特性。要使用这一特性,必须另付给PDC运行时间费用,签署一个协议,并且不可以用它来创建一个与Visual Prolog产品竞争的应用程序。
4.可视化编程接口
Visual Prolog已经定义了一种可移植的基于GUI的API,称之为可视化编程接口(VPI)[5]。这个API是一种抽象的设施,可以在Windows 98/Me/NT/2000/XP平台中找到。可视化编程接口给Visual Prolog程序员一个比本地编程更可移植和更易使用的GUI API。然而,为了使用户不受限制,VPI也包含不可移植的平台专用设施和选件。如果使用平台专用设施,那么,应用程序就是不可移植的,或者必须使用条件编译提供不同平台的选择行为。还有可能象在WINBIND或PMBIND子目录中那样,直接对潜在的API进行编程。
与基本的可移植VPI一起,许多高级GUI部件已经在VPI顶层实现。这些部件提供了源代码,当然对于VPI所支持的所有平台都是可移植的。这些工具包括删格(Grid)、树型窗口、Explorer视图、工具栏、制表对话框、高级报表处理等。
客户/服务器体系结构。Visual Prolog是一个建造客户/服务器应用程序的功能强大的平台。其主要途径当前是TCP/IP绑定,也可以是Windows下的NETDDE。使用其中任何一种设施,程序员可以在单个机器的多个进程之间,或在网络中分开的各机器程序之间,发送任意复杂的Prolog项。数据库和逻辑服务器可以用这种设施容易地进行建造。
ODBC和可移植SQL绑定。Visual Prolog的外部数据库常常是存储大量数据最快和最灵活的途径。然而,数据可能在另一个数据库系统中已经存在,或者这个应用程序需要与其它仅仅使用特定数据库技术的应用程 序共享数据。在这种情况下,能够连接到外部数据库非常重要,而Visual Prolog与可移植SQL的绑定将使这种情况对于大多数数据库来说得到简化。可移植SQL绑定是基于ODBC、Oracle的OCI库、或DB2的。对Windows平台而言,Visual Prolog还包含更广泛的对Microsoft的ODBC API的直接绑定。
资料处理工具。PDC的DOC工具为处理丰富的格式化资料提供一个高级抽象。用Prolog结构来表示资料使得不受实际格式限制成为可能,而不管它们是否为.RTF、HTML或IPF格式。既有从Prolog项格式到这些格式的生成器,也有分析程序把任何这些格式转换为Prolog项格式。这些工具展现了许多应用程序的能力,如Word资料生成、Internet助理等。这些工具可以在DOC_TOOL子目录中找到,子目录中还包含一个示例程序,可以看到HTML格式的文件如何转换为.RTF格式时的详细情形。
Visual Prolog包含许多特性,可以容易地创建由Internet激活的应用程序,从而提供广泛的Internet编程支持。(1)绑定到套接字(Socket)。包括绑定基本的低级接口和使套接字接口用起来更安全、更容易的高级接口。套接字是针对TCP/IP协议的API,可以用来在Internet的程序之间、在一个网络内部或同一台计算机上的两个进程之间建立一种通信。(2)FTP支持。Visual Prolog包含一些API和示例程序,显示如何使用Internet文件传输协议FTP从Internet服务器发送和接收文件,演示如何使用Internet超文本传输协议(HTTP)。这组API可以用来在Visual Prolog中创建WWW客户与服务器实用程序和Internet代理。(3)CGI支持。Visual Prolog支持CGI,所包含的一些CGI例子演示如何创建和生成动态Web页的Visual Prolog程序。(4)ISAPI支持。Visual Prolog支持Microsoft的ISAPI,允许在Microsoft信息服务器或任何其它支持ISAPI接口的HTTP服务器上有高性能脚本。此外,Visual Prolog还包括一些例子,显示如何使Prolog服务器与Java小程序(Applet)进行通信。
Visual Prolog当前提供一个商业专家系统外壳ESTA,同时还提供了全部源代码,可以定制和包含在自己的应用程序之中。
总之,Visual Prolog提供了大量实例来演示上述各种功能。其中有一个标签专家,是创建和打印标签的一个小应用程序。你将发现它是一个真正展示所包含的VPI工具能力的精致的小例子。此外,随Visual Prolog一起,还提供了许多展示Prolog问题求解的典型例子。
5.Visual Prolog运行环境
推荐的Visual Prolog运行环境如下:MS Windows 98/Me/NT/2000/XP,Pentium以上配置的PC机,推荐64MB RAM以上,硬盘至少75 MB自由空间, 专业版完全安装大约需要200 MB,SVGA以上分辨率的显示器。
参考文献
[1] 雷英杰,张雷,邢清华,孙金萍 编著.Visual Prolog语言教程[M].西安:陕西科技出版社,2002.[2] 雷英杰,邢清华,张雷,孙金萍 编著.Visual Prolog编程指南[M].待出版,2002.[3] H.J.Holst.Visual Prolog Version 5.x Getting Started, Prolog Development Center, 2001.[4] H.J.Holst.Visual Prolog Version 5.x Visual Development Environment, Prolog Development Center, 2001.[5] H.J.Holst.Visual Prolog Version 5.x Visual Programming Interface[M], Prolog Development Center, 2001.雷英杰,男,[1956-],教授,博士生导师。研究领域:人工智能、决策支持、网络与信息安全等。
第二篇:逻辑型程序设计语言PROLOG详细教程
逻辑型程序设计语言PROLOG教程
2.3.1逻辑型程序设计语言PROLOG PROLOG的语句
PROLOG语言只有三种语句,分别称为事实、规则和问题。
1.事实(fact)
格式: <谓词名>(<项表>).功能
一般表示对象的性质或关系。
其中谓词名是以小写英文字母打头的字母、数字、下划线等组成的字符串,项表是以逗号隔开的项序列。
例如:
student(john).like(mary ,music).表示“约翰是学生”和“玛丽喜欢音乐”。2.规则(rule)
格式:
<谓词名>(<项表>):-<谓词名>(<项表>){,<谓词名>(<项表>)}.功能: 一般表示对象间的因果关系、蕴含关系或对应关系。
其中“:-”号表示“if”(也可以直接写为if),其左部的谓词是规则的结论(亦称为头),右部的谓词是规则的前提(亦称为体),{}表示零次或多次重复,逗号表示and(逻辑与),即规则的形式是一个逻辑蕴含式。
例如:
bird(X):-animal(X),has(X,feather).grandfather(X,Y):-father(X,Z),father(Z,Y).第一条规则表示“如果X是动物,并且X有羽毛,则X是鸟”;第二条规则就表示“X是Y的祖父,如果存在Z,X是Z的父亲并且Z又是Y的父亲”。
3.问题(question)
格式: ?-<谓词名>(<项表>){,<谓词名>(<项表>)}.功能 表示用户的询问,它就是程序运行的目标。
例如:
?-student(john).?-like(mary,X).2.3.2 PROLOG程序
PROLOG程序一般由一组事实、规则和问题组成。问题是程序执行的起点,称为程序的目标。
例如下面就是一个PROLOG程序。
likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane ,smith).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).?-friend(john,Y).可以看出,这个程序中有四条事实、两条规则和一个问题。其中事实、规则和问题都分行书写。规则和事实可连续排列在一起,其顺序可随意安排,但同一谓词名的事实或规则必须集中排列在一起。问题不能与规则及事实排在一起,它作为程序的目标要么单独列出,要么在程序运行时临时给出。
这个程序的事实描述了一些对象(包括人和事物)间的关系;而规则则描述了john交朋友的条件,即如果一个人喜欢读书并且喜欢音乐(或者喜欢运动和喜欢音乐),则这个人就是john的朋友(当然,这个规则也可看作是john朋友的定义);程序中的问题是“约翰的朋友是谁?”
当然,PROLOG程序中的目标可以变化,也可以含有多个语句(上例中只有一个)。如果有多个语句,则这些语句称为子目标。例如对上面的程序,其问题也可以是 ?-likes(mary,X).或
?-likes(mary,music).或
?-friend(X,Y).或
?-likes(bell,sports), likes(mary,music), friend(john,X).等等。当然,对于不同的问题,程序运行的结果一般是不一样的。
2.3.3 PROLOG程序的运行机理
PROLOG程序的运行是从目标出发,并不断进行匹配、合一、归结,有时还要回溯,直到目标被完全满足或不能满足时为止。1.自由变量与约束变量
PROLOG中称无值的变量为自由变量,有值的变量为约束变量。一个变量取了某值就说该变量约束于某值,或者说该变量被某值所约束,或者说该变量被某值实例化了。
2.匹配合一
两个谓词可匹配合一,是指两个谓词的名相同,参量项的个数相同,参量类型对应相同,并且对应参量项还满足下列条件之一:
(1)如果两个都是常量,则必须完全相同。
(2)如果两个都是约束变量,则两个约束值必须相同。
(3)如果其中一个是常量,一个是约束变量,则约束值与常量必须相同。
(4)至少有一个是自由变量。例如:下面的两个谓词
pre1(“ob1”,“ob2”,Z)
pre1(“ob1”,X,Y)
只有当变量X被约束为“ob2”,且Y、Z的约束值相同或者至少有一个是自由变量时,它们才是匹配合一的。
3.回溯
所谓回溯,就是在程序运行期间,当某一个子目标不能满足(即谓词匹配失败)时,控制就返回到前一个已经满足的子目标(如果存在的话),并撤消其有关变量的约束值,然后再使其重新满足。成功后,再继续满足原子目标。如果失败的子目标前再无子目标,则控制就返回到该子目标的上一级目标(即该子目标谓词所在规则的头部)使它重新匹配。回溯也是PROLOG的一个重要机制。
下面,我们介绍PROLOG程序的运行过程。我们仍以上面的程序为例。设所给的询问是
?-friend(john,Y).(john和谁是朋友?)
则求解目标为
friend(john,Y).这时,系统对程序进行扫描,寻找能与目标谓词匹配合一的事实或规则头部。显然,程序中前面的四条事实均不能与目标匹配,而第五个语句的左端即规则
friend(john,X):-likes(X,reading),likes(X,music).的头部可与目标谓词匹配合一。但由于这个语句又是一个规则,所以其结论要成立则必须其前提全部成立。于是,对原目标的求解就转化为对新目标
likes(X,reading),likes(X,music).的求解。这实际是经归结,规则头部被消去,而目标子句变为
?-likes(X,reading),likes(X,music).现在依次对子目标
likes(X,reading)和likes(X,music)
求解。
子目标的求解过程与主目标完全一样,也是从头对程序进行扫描,不断进行测试和匹配合一等,直到匹配成功或扫描完整个程序为止。可以看出,对第一个子目标like(X,reading)的求解因无可匹配的事实和规则而立即失败,进而导致规则
friend(john,X):-likes(X,reading),likes(X,music).的整体失败。于是,刚才的子目标
likes(X,reading)和likes(X,music)
被撤消,系统又回溯到原目标friend(john,X)。这时,系统从该目标刚才的匹配语句处(即第五句)向下继续扫描程序中的子句,试图重新使原目标匹配,结果发现第六条语句的左部,即规则
friend(john,X):-likes(X,sports),likes(X,music).的头部可与目标为谓词匹配。但由于这个语句又是一个规则,于是,这时对原目标的求解,就又转化为依次对子目标
likes(X,sports)和likes(X,music) 的求解。这次子目标likes(X,sports)与程序中的事实立即匹配成功,且变量X被约束为bell。于是,系统便接着求解第二个子目标。由于变量X已被约束,所以这时第二个子目标实际上已变成了
likes(bell,music).由于程序中不存在事实likes(bell,music),所以该目标的求解失败。于是,系统就放弃这个子目标,并使变量X恢复为自由变量,然后回溯到第一个子目标,重新对它进行求解。由于系统已经记住了刚才已同第一子目标谓词匹配过的事实的位置,所以重新求解时,便从下一个事实开始测试。
易见,当测试到程序中第三个事实时,第一个子目标便求解成功,且变量X被约束为mary。这样,第二个子目标也就变成了
likes(mary,music).再对它进行求解。这次很快成功。
由于两个子目标都求解成功,所以,原目标friend(john,Y)也成功,且变量Y被约束为mary(由Y与X的合一关系)。于是,系统回答:
Y=mary
程序运行结束。
上面只给出了问题的一个解。如果需要和可能的话,系统还可把john的所有朋友都找出来。我们把上述程序的运行过程再用示意图(图2─1)描述如下:
图2─1
PROLOG程序运行机理示例
上述程序的运行是一个通过推理实现的求值过程。我们也可以使它变为证明过程。例如,把上述程序中的询问改为
friend(john,mary)
则系统会回答:yes
若将询问改为:
riend(john,smith)
则系统会回答:no
从上述程序的运行过程可以看出,PROLOG程序的执行过程是一个(归结)演绎推理过程。其特点是:推理方式为反向推理,控制策略是深度优先,且有回溯机制。其具体实现方法是:匹配子句的顺序是自上而下;子目标选择顺序是从左向右;(归结后)产生的新子目标总是插入被消去的目标处(即目标队列的左部)。PROLOG的这种归结演绎方法被称为SLD(LinearresolutionwithSelectionfunctionforDefiniteclause)归结,或SLD反驳-消解法。SLD归结就是PROLOG程序的运行机理,它也就是所谓的PROLOG语言的过程性语义。2.4
Turbo PROLOG程序设计 2.4.1 Turbo PROLOG的程序结构
一个完整的Turbo PROLOG(2.0版)程序一般包括常量段、领域段、数据库段、谓词段、目标段和子句段等六个部分。各段以其相应的关键字constants、domains、database、predicates、goal和clauses开头加以标识。:
另外,在程序的首部还可以设置指示编译程序执行特定任务的编译指令;在程序的任何位置都可设置注解。总之,一个完整的TurboPROLOG(2.0版)程序的结构如下
/*<注释>*/
<编译指令>
constants
<常量说明>
domains
<域说明>
database
<数据库说明>
predicates
<谓词说明>
goal
<目标语句>
clauses
<子句集>
当然,一个程序不一定要包括上述所有段,但一个程序至少要有一个predicates段、clauses段和goal段。在大多数情形中,还需要一个domains段,以说明表、复合结构及用户自定义的域名。如若省略goal段,则可在程序运行时临时给出,但这仅当在开发环境中运行程序时方可给出。若要生成一个独立的可执行文件,则在程序中必须包含goal段。另一方面,一个程序也只能有一个goal段。
例2.3 如果把上节中的程序要作为TurboPROLOG程序,则应改写为:
/*例子程序-1*/
DOMAINS
name=symbol
PREDICATES
likes(name,name).friend(name,name)
GOAL
friend(john,Y),write(″Y=″,Y).CLAUSES likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane,smith).friend(john,X):-likes(X,sports),likes(X,music).friend(john,X):-likes(X,reading),likes(X,music).结合上例,我们再对上述程序结构中的几个主要段的内容和作用加以说明(其余段在后面用到时再作说明):
领域段该段说明程序谓词中所有参量项所属的领域。领域的说明可能会出现多层说明,直到最终说明到Turbo PROLOG的标准领域为止(如上例所示)。Turbo PROLOG的标准领域即标准数据类型,包括整数、实数、符号、串和符号等,其具体说明如表2.1所示。
表2.1 Turbo PROLOG的标准领域
谓词段:该段说明程序中用到的谓词的名和参量项的名(但Turbo PROLOG的内部谓词无须说明)。
子句段:该段是Turbo PROLOG程序的核心,程序中的所有事实和规则就放在这里,系统在试图满足程序的目标时就对它们进行操作。
目标段:该段是放置程序目标的地方。目标段可以只有一个目标谓词,例如上面的例子中就只有一个目标谓词;也可以含有多个目标谓词,如:
goal
readint(X),Y=X+3,write(“Y=”,Y).就有三个目标谓词。这种目标称为复合目标。
另外,一般称程序目标段中的目标为内部目标,而称在程序运行时临时给出的目标为外部目标。
2.4.2 Turbo PROLOG的数据与表达式 1.领域
1)标准领域
Turbo PROLOG中不定义变量的类型,只说明谓词中各个项的取值域。2)结构
结构也称复合对象,它是TurboPROLOG谓词中的一种特殊的参量项(类似于谓词逻辑中的函数)。
结构的一般形式为
<函子>(<参量表>)
其中函子及参量的标识符与谓词相同。注意,这意味着结构中还可包含结构。所以,复合对象可表达树形数据结构。例如下面的谓词
likes(Tom,sports(football,basketball,table-tennis)).中的
sports(football,basketball,table-tennis)
就是一个结构,即复合对象。
又如:
person(“张华”,student(“西安石油学院”),address(“中国”,“陕西”,“西安”)).reading(“王宏”,book(“人工智能技术基础教程”,“西安电子科技大学出版社”)).friend(father(“Li”),father(“Zhao”)).这几个谓词中都有复合对象。复合对象在程序中的说明,需分层进行。例如,对于上面的谓词
likes(Tom,sports(football,basketball,table-tennis)).在程序中可说明如下:
domains
name=symbol
sy=symbol
sp=sports(sy,sy,sy)
predicates
likes(name,sp)3)表
表的一般形式是
[x1,x2,…,xn]
其中xi(i=1,2,…,n)为PROLOG的项,一般要求同一个表的元素必须属于同一领域。
不含任何元素的表称为空表,记为[]。例如下面就是一些合法的表。
[1,2,3]
[apple,orange,banana,grape,cane]
[“PROLOG”,“MAENS”,“PROGRAMMING”,“in logic”] [[a,b],[c,d],[e]] []
表的最大特点是其元素个数可在程序运行期间动态变化。表的元素也可以是结构或表,且这时其元素可以属于不同领域。
例如:
name(“Li Ming”),age(20),sex(male),address(xi an)] [[1,2],[3,4,5],[6,7]]
都是合法的表。后一个例子说明,表也可以嵌套。
实际上,表是一种特殊的结构。它是递归结构的另一种表达形式。这个结构的函数名取决于具体的PROLOG版本。这里我们就用一个圆点来表示。
下面就是一些这样的结构及它们的表表示形式:
结构形式
表形式 ·(a,[])
[a] ·(a,·(b,[]))
[a,b] ·(a,·(b,·(c,[])))
[a,b,c]
表的说明方法是在其组成元素的说明符后加一个星号*。如:
domains
lists=string*
predicates
pl(lists)
就说明谓词pl中的项lists是一个由串string组成的表。
对于由结构组成的表,至少得分三步说明。例如对于下面谓词p中的表
p([name(“Liming”),age(20)])
则需这样说明:
domains
rec=seg*
seg=name(string);age(integer)
predicates
p(rec)2.常量与变量
由上面的领域可知,Turbo PROLOG的常量有整数、实数、字符、串、符号、结构、表和文件这八种数据类型。同理,Turbo PROLOG的变量也就有这八种取值。另外,变量名要求必须是以大写字母或下划线开头的字母、数字和下划线序列,或者只有一个下划线。这后一种变量称为无名变量。3.算术表达式
Turbo PROLOG提供了五种最基本的算术运算:加、减、乘、除和取模,相应运算符号为+、-、*、/、mod。这五种运算的顺序为:*、/、mod优先于+、-。同级从左到右按顺序运算,括号优先。算术表达式的形式与数学中的形式基本一样。例如:
数学中的算术表达式
PROLOG中的算术表达式
x+yz
X+Y*Z
ab-c/d
A*B-C/D
u mod v
U mod V(表示求U除以V所得的余数)即是说,Turbo PROLOG中算术表达式采用通常数学中使用的中缀形式。这种算术表达式为PROLOG的一种异体结构,若以PROLOG的结构形式来表示,则它们应为
+(X,*(Y,Z))
-(*(A,B),/(C,D))
mod(U,V)
所以,运算符+、-、*、/和mod实际也就是PROLOG内部定义好了的函数符。
在Turbo PROLOG程序中,如果一个算术表达式中的变元全部被实例化(即被约束)的话,则这个算术表达式的值就会被求出。求出的值可用来实例化某变量,也可用来同其他数量进行比较,用一个算术表达式的值实例化一个变量的方法是用谓词“is”或“=”来实现。例如:
Y is X+5 或 Y=X+5
(*)
就使变量Y实例化为X+5的值(当然X也必须经已被某值实例化),可以看出,这里对变量Y的实例化方法类似于其他高级程序语言中的“赋值”,但又不同于赋值。例如,在PROLOG中下面的式子是错误的:
X=X+1 4.关系表达式
Turbo PROLOG提供了六种常用的关系运算,即小于、小于或等于、等于、大于、大于或等于和不等于,其运算符依次为
<,<=,=,>,>=,<>
Turbo PROLOG的关系表达式的形式和数学中的也基本一样,例如:
数学中的关系式
Turbo PROLOG中的关系式
X+1≥Y
X+1>=Y
X≠Y
X<>Y 即是说,Turbo PROLOG中的关系式也用中缀形式。当然,这种关系式为Turbo PROLOG中的异体原子。若按Turbo PROLOG中的原子形式来表示,则上面的两个例子为
>=(X+1,Y)和<>(X,Y)
所以上述六种关系运算符,实际上也就是Turbo PROLOG内部定义好了的六个谓词。这六个关系运算符可用来比较两个算术表达式的大小。
例如:
brother(Name1,Name2):-person(Name1,man,Age1),person(Name2,man,Age2),mother(Z,Name1),mother(Z,Name2),Age1>Age2.需要说明的是,“=”的用法比较特殊,它既可以表示比较,也可以表示约束值,即使在同一个规则中的同一个“=”也是如此。
例如:
(例一)
p(X,Y,Z):-Z=X+Y.当变量X、Y、Z全部被实例化时,“=”就是比较符。如:对于问题
Goal:p(3,5,8).机器回答:yes。而对于
Goal:p(3,5,7).机器回答:no。
即这时机器把X+Y的值,与Z的值进行比较。
(例二)但当X,Y被实例化,为Z未被实例化时,“=”号就是约束符。如:
Goal:p(3,5,Z).机器回答:Z=8 这时,机器使Z实例化为X+Y的结果。2.4.3 输入与输出
虽然PROLOG能自动输出目标子句中的变量的值,但这种输出功能必定有限,往往不能满足实际需要;另一方面,对通常大多数的程序来说,运行时从键盘上输入有关数据或信息也是必不可少的。为此每种具体PROLOG一般都提供专门的输入和输出谓词,供用户直接调用。例如,下面就是TorboPROLOG的几种输入输出谓词:
(1)readln(X)。
这个谓词的功能是从键盘上读取一个字符串,然后约束给变量X。
(2)readint(X)。
这个谓词的功能是从键盘上读取一个整数,然后约束给变量X,如果键盘上打入的不是整数则该谓词失败。
(3)readreal(X)。
这个谓词的功能是从键盘上读取一个实数,然后约束给变量X,如果键盘上打入的不是实数则该谓词失败。
(4)readchar(X)。
这个谓词的功能是从键盘上读取一个字符,然后约束给变量X,如果键盘上打入的不是单个字符,则该谓词失败。
(5)write(X1,X2,… Xn)。
这个谓词的功能是把项Xi(i=1,2,…n)的值显示在屏幕上或者打印在纸上,当有某个Xi未实例化时,该谓词失败,其中的Xi可以是变量,也可以是字符串或数字。
(6)nl换行谓词。它使后面的输出(如果有的话)另起一行。另外,利用write的输出项“n”也同样可起换行作用。例如:
write(“name”), n l ,write(“age”)
与write(“name”,“n”,“age”)的效果完全一样。例2.4用上面的输入输出谓词编写一个简单的学生成绩数据库查询程序。
PREDICATES student(integer,string,real)grade GOAL grade.CLAUSES student(1,“张三”,90.2).student(2,“李四”,95.5).student(3,“王五”,96.4).grade:-write(“请输入姓名:”),readln(Name), student(-,Name,Score), nl,write(Name,“的成绩是”,Score).grade:-write(“对不起,找不到这个学生!”).grade:-write(“对不起,找不到这个学生!”).下面是程序运行时的屏幕显示: 请输入姓名: 王五
王五的成绩是96.4。
2.4.4 分支与循环
PROLOG中并无专门的分支和循环语句,但PROLOG也可实现分支和循环程序结构。1.分支
对于通常的IF-THEN-ELSE分支结构,PROLOG可用两条同头的并列规则实现。例如,将
IF x>0THENx:=1
ELSE x:=0 用PROLOG实现则是 Br :-x>0,x=1.Br :-x=0.类似地,对于多分支,可以用多条规则实现。例如: Br :-x>0,x=1.Br :-x=0,x=0.Br :-x<0,x=-1.2.循环
PROLOG可以实现计循环次数的FOR循环,也可以实现不计循环次数的DO循环。例如下面的程序段就实现了循环,它使得write语句重复执行了三次,而打印输出了三个学生的记录。
student(1,“张三”,90.2).student(2,“李四”,95.5).student(3,“王五”,96.4).print:-student(Number,Name,Score),write(Number,Name,Score),n l ,Number=3.这个例子可以看作是计数循环。当然,也可以通过设置计数器而实现真正的计数循环。下面的程序段实现的则是不计数的DO循环。
student(1,“张三”,90.2).student(2,“李四”,95.5).student(3,“王五”,96.4).print:-student(Number,Name,Score),write(Number,Name,Score),nl,fail.print:-.这个程序段中的fail是一个内部谓词,它的语义是恒失败。这个程序段与上面的程序段的差别仅在于把原来用计数器(或标记数)循环控制语句变成了恒失败谓词fail,另外再增加了一个print语句。增加这个语句的目的是为程序设置一个出口。因为fail是恒失败,下面若无出口的话,将引起print本身的失败。进而又会导致程序中的连锁失败。
2.4.5 动态数据库
动态数据库就是在内存中实现的动态数据结构。它由事实组成,程序可以对它操作,所以在程序运行期间它可以动态变化。Turbo PROLOG提供了三个动态数据库操作谓词: asserta(
asserta(
assertz(
retract(
例如语句
asserta(student(20,“李明”,90.5)).将在内存的谓词名为student的事实前插入一个新事实:
student(20,“李明”,90.5)
如果内存中还没有这样的事实,则它就是第一个。又如语句
retract(student(20,-,-)).将从内存的动态数据库中的删除事实
student(20,-,-)它可解释为学号为20的一个学生的记录。注意,这里用了无名变量-。
可以看出,PROLOG提供的动态数据库机制,可非常方便地实现堆栈、队列等动态数据结构,提供的数据库操作谓词大大简化了编程。
另外,PROLOG还提供了谓词
save(
2.4.6 表处理与递归
表是PROLOG中一种非常有用的数据结构。表的表述能力很强,数字中的序列、集合,通常语言中的数组、记录等均可用表来表示。表的最大特点是其长度不固定,在程序的运行过程中可动态地变化。具体来讲,就是在程序运行时,可对表施行一些操作,如给表中添加一个元素,或从中删除一个元素,或者将两个表合并为一个表等等。用表还可以方便地构造堆栈、队列、链表、树等动态数据结构。
表还有一个重要特点,就是它可分为头和尾两部分。表头是表中第一个元素,而表尾是表中除第一个元素外的其余元素按原来顺序组成的表。例如下面的例子:
表
表头
表尾
[1,2,3,4,5]
[2,3,4,5]
[apple,orange,banana]
apple
[orange,banana]
[[a,b],[c],[d,e]]
[a,b]
[[c],[d,e]]
[“PROLOG”]
“PROLOG“
[]
[]
无定义
无定义
在程序中是用竖线“|”来区分表头和表尾的,而且还可以使用变量。例如一般地用[H|T]来表示一个表,其中H、T都是变量,H为表头,T为表尾。注意,此处H是一个元素(表中第一个元素),而T则是一个表(除第一个元素外的表中其余元素按原来顺序组成的表)。表的这种表示法很有用,它为表的操作提供了极大的方便。下面我们就给出用这种表示法通过匹配合一提取表头和表尾的例子。
表1
表2
合一后的变量值 [X|Y]
[a,b,c]
X=a,Y=[b,c] [X|Y]
[a]
X=a,Y=[] [a|Y]
[X,b]
X=a,Y=[b] [X,Y,Z]
[a,b,c]
X=a,Y=b,Z=c [[a,Y]|Z]
[[X,b],[c]]
X=a,Y=b,Z=[[c]]
还需说明的是,表中的竖杠“|”后面只能有一个变量。例如写法[X|Y,Z]就是错误的。但竖杠的前面的变量可以多于一个。例如写法[X,Y|Z]是允许的。这样,这个表同[a,b,c]匹配合一后,有
X=a,Y=b,Z=[c]
另外,竖杠的前面和后面也可以是常量,例如[a|Y]和[X|b]都是允许的,但注意,后一个表称为无尾表,如果它同表[a|Y]匹配,则有
X=a,Y=b
(而不是Y=[b])
如果无竖杠“|”,则不能分离出表尾。例如,表[X,Y,Z]与[a,b,c]合一后得X=a,Y=b,Z=c。其中变量Z并非等于[c]。
例2.5 设计一个能判断对象X是表L的成员的程序。
我们可以这样设想:
(1)如果X与表L中的第一个元素(即表头)是同一个对象,则X就是L的成员;
(2)如果X是L的尾部的成员,则X也就是L的成员。
根据这种逻辑关系,于是有下面的PROLOG程序:
member(X,[X|Tail]).member(X,[Head|Tail]):-member(X,Tail).
其中第一个子句的语义就是上面的第一句话,第二个子句的语义就是上面的第二句话。可以看出,这个程序中使用了递归技术,因为谓词member的定义中又含有它自身。利用这个程序我们就可以判定任意给定的一个对象和一个表之间是否具有member(成员)关系。
例如,我们取表L为[a,b,c,d],取X为a,对上面的程序提出如下询问:
Goal:member(a,[a,b,c,d]).
则有回答:yes
同样对于询问:
Goal:member(b,[a,b,c,d]).Goal:member(c,[a,b,c,d]).Goal:member(d,[a,b,c,d]).
都有回答:yes
但若询问
Goal:member(e,[a,b,c,d]).
则回答:no
如果我们这样询问
Goal:member(X,[a,b,c,d]).
意思是要证明存在这样的X,它是该表的成员,这时系统返回X的值,即
X=a
如果需要的话,系统还会给出X的其他所有值。
例2.6 表的拼接程序,即把两个表连接成一个表。
append([],L,L).append([H|T],L2,[H|Tn]):-append(T,L2,Tn).
程序中第一个子句的意思是空表同任一表L拼接的结果仍为表L;第二个子句的意思是说,一个非空的表L1与另一个表L2拼接的结果L3是这样一个表,它的头是L1的头,它的尾是由L1的尾T同L2拼接的结果Tn。这个程序刻划了两个表与它们的拼接表之间的逻辑关系。
可以看出,谓词append是递归定义的,子句append([],L,L).为终结条件,即递归出口。
对于这个程序,如果我们询问
Goal:append([1,2,3],[4,5],L).
则系统便三次递归调用程序中的第二个子句,最后从第一个子句终止,然后反向依次求出每次的拼接表,最后输出
L=[1,2,3,4,5]
当然,对于这个程序也可以给出其他各种询问,如: Goal:append([1,2,3],[4,5],[1,2,3,4,5]). 系统回答:yes Goal:append([1,2,3],[4,5],[1,2,3,4,5,6]). 系统回答:no Goal:append([1,2,3],Y,[1,2,3,4,5]). 系统回答:Y=[4,5]
Goal:append(X,[4,5],[1,2,3,4,5]).
系统回答:X=[1,2,3]
Goal:append(X,Y,[1,2,3,4,5]). 系统回答: X=[],Y=[1,2,3,4,5] X=[1],Y=[2,3,4,5] X=[1,2],Y=[3,4,5] X=[1,2,3],Y=[4,5] …
等等(如果需要所有解的话)。
例2.7 表的输出。
print([]).print([H|T]):-write(H),print(T).例2.8 表的倒置,即求一个表的逆序表。
reverse([],[]).reverse([H|T],L):-reverse(T,L1),append(L1,[H],L).
这里,reverse的第一个项是输入,即原表,第二个项是输出,即原表的倒置。2.4.7 回溯控制
PROLOG在搜索目标解的过程中,具有回溯机制,即当某一个子目标Gi不能满足时,就返回到该子目标的前一个子目标Gi-1,并放弃Gi-1的当前约束值,使它重新匹配合一。在实际问题中,有时却不需要回溯,为此PROLOG中就专门定义了一个阻止回溯的内部谓词——“!”,称为截断谓词。
截断谓词的语法格式很简单,就是一个感叹号“!”。!的语义是:
(1)若将“!”插在子句体内作为一个子目标,它总是立即成功;
(2)若“!”位于子句体的最后,则它就阻止对它所在子句的头谓词的所有子句的回溯访问,而让回溯跳过该头谓词(子目标),去访问前一个子目标(如果有的话);
(3)若“!”位于其他位置,则当其后发生回溯且回溯到“!”处时,就在此处失败,并且“!”还使它所在子句的头谓词(子目标)整个失败(即阻止再去访问头谓词的其余子句(如果有的话),即迫使系统直接回溯到该头谓词(子目标)的前一个子目标(如果有的话))。
例2.9考虑下面的程序:
p(a).(2─1)
p(b).(2─2)
q(b).(2─3)
r(X):-p(X),q(X).(2─4)
r(c).
对于目标:r(Y).
可有一个解
Y=b
但当我们把式(2─4)改为
r(X):-p(X),!,q(X).(2─4′)
时,却无解。
这是由于添加了截断谓词“!”。因为式(2─4′)中求解子目标p(X)时,X被约束到a,然后跳过“!”,但在求解子目标q(a)时遇到麻烦,于是又回溯到“!”,而“!”阻止了对p(X)的下一个子句p(b)和r的下一个定义子句r(c)的访问。从而,导致整个求解失败。
例2.10 设有程序:
g0:-g11,g12,g13.(2─5)g0:-g14.(2─6)g12:-g21,!,g23.(2─7)g12:-g24,g25.(2─8).........
给出目标:g0.假设运行到子目标g23时失败,这时如果子句(2─7)中无!的话,则会回溯到g21,并且,如果g21也失败的话,则会访问下面的子句(2─8)。但由于有!存在,所以不能回溯到g21,而直接宣告g12失败。于是,由子句(2─5),这时则回溯到g11。如果我们把子句(2─7)改为
g12:-g21, g23,!.(2─9)当然这时若g23失败时,便可回溯到g21,而当g21也失败时,便回溯到g12,即子句(2─8)被“激活”。但对于修改后的程序,如果g13失败,则虽然可回溯到g12,但对g12不做任何事情,便立即跳过它,而回溯到g11,如果子句(2─9)中无!,则当g13失败时,回溯到g12便去考虑子句(2─8),只有当子句(2─8)再失败时才回溯到g11。2.4.8 程序举例
下面我们给出几个简单而又典型的例子程序。通过这些程序,读者可以进一步体会和理解PROLOG程序的风格和能力,也可以掌握一些基本的编程技巧。
例2.11 下面是一个简单的路径查询程序。程序中的事实描述了如图2─2所示的有向图,规则是图中两节点间有通路的定义。
图2─2
有向图
predicates
road(symbol,symbol)
path(symbol,symbol)clauses
road(a,b).road(a,c).road(b,d).road(c,d).road(d,e).road(b,e).path(X,Y):-road(X,Y).path(X,Y):-road(X,Z),path(Z,Y).程序中未含目标,所以运行时需给出外部目标。例如当给目标:
path(a,e).
系统将回答:yes
但当给目标:
path(e,a).
时,系统则回答:no
如果给出目标:
run. 且在程序中增加子句
run:-path(a,X),write(”X=“,X),nl,fail.run. 屏幕上将会输出:
X=b
X=c
X=d
X=e
X=d
X=e
X=e
即从a出发到其他节点的全部路径。
例2.12 下面是一个求阶乘程序,程序中使用了递归。
/*aFactorialProgram*/
domains
n,f=integer
predicates
factorial(n,f)
goal
readint(I),factorial(I,F),write(I,”!=“,F).clauses
factorial(1,1).factorial(N,Res):-
N>0,N1=N-1,factorial(N1,FacN1),Res=N*FacN1.程序运行时,从键盘输入一个整数,屏幕上将显示其阶乘数。
例2.13 下面是一个表的排序程序,采用插入排序法。
/*insertsort*/
domains
listi=integer*
predicates
insert-sort(listi , listi)
insert(integer,listi,listi)
asc-order(integer,integer)
clauses
insert-sort([],[]).insert-sort([H|Tail],Sorted-list):-insert-sort(Tail,Sorted-Tail),insert(H,Sorted-Tail,Sorted-list).insert(X,[Y|Sorted-list],[Y|Sorted-list1]):-asc-order(X,Y),!,insert(X,Sorted-list,Sorted-list1).insert(X,Sorted-list,[X|Sorted-list]).asc-order(X,Y):-X>Y.程序中对表处理使用了递归。程序中也未给出目标,需要在运行时临时给出。例如当给目标:
insert-sort([5,3,4,2,6,1,7,8,9,0],L).系统将输出:
L=[0,1,2,3,4,5,6,7,8,9]
例2.14下面是一个简单的通信录管理程序,其中用到输入输出、动态数据库等。通过阅读这个程序,我们还可以掌握循环结构和简单的菜单程序编写方法。
/*通信录*/
database
person(string,integer)
predicates
address-book
chose(integer)
input query
repeat goal
address-book.clauses
address-book:-repeat,clearwindow,write(”==============“),nl,write(”1--录入“),nl, write(”2--查询“),nl, write(”3--退出“),nl,write(”==============“),nl, write(”请选择:-“), readint(N), chose(N).chose(1):-input,fail.chose(2):-query,fail.chose(3):-clearwindow,!.input:-clearwindow,write(”姓名:“),readln(Name),write(”电话:“),readint(Tel),assertz(person(Name,Tel)),!.query:-clearwindow,write(”姓名:“),readln(Name),person(Name,Tel),write(”电话:“,Tel),readchar(-),!.repeat.repeat:-repeat.程序中的repeat恒成功。它与内部谓词fail配合实现了循环。
需说明的是,这仅是一个演示性程序,还不能实用。因为这里的通信录并未存入磁盘文件。用谓词save就可方便地把通信录存入磁盘文件。例如用语句
save(”addrbook.dat“)
就可把已插入内存的person事实存入文件addrbook.dat中。而语句
consult(”addrbook.dat“)
则可又将该文件中的事实装入内存。
2.4 函数型程序设计语言LISP
LISP语言的主要特点是:
(1)LISP程序由一组函数组成,程序的执行过程是函数的调用过程。
(2)程序和数据在形式上是相同的,即都是符号表达式,简称为S─表达式。
(3)递归是LISP语言的主要控制结构。
(4)程序以交互方式运行。
2.2.1 LISP的程序结构与运行机制
LISP的程序一般由函数的定义和函数的调用两部分组成。其一般格式为:
(DEFUN(<函数名>(<形参表>)<函数体>)
(<函数名>(〖WB〗<形参表>)<函数体>)
…
(<函数名>(<形参表>)<函数体>))
(<函数名><实参表>)
(<函数名><实参表>)
…
(<函数名><实参表>)
其中的“DEFUN”是定义函数的关键字,“函数名”可以是系统的内部函数(名),也可以是用户用DEFUN定义的函数(名)。例如下面就是一个LISP程序。
(DEFUNHANOI(a b c n)
(COND((=n1)(MOVE-DISK a c))
(T(HANOI a c b(-n1))
(MOVE-DISK a c)
(HANOI b a c(-n1))))(DEFUNMOVE-DISK(from to)(TERPRI)(PRINC″Move Disk From″)(PRINC from)(PRINC”To“)(PRINC to))
(HANOI′a′b′c3)2.2.2 S─表达式
从语法上看,LISP程序的基本单位是S─表达式。S─表达式又可分为原子和表两大类。原子(atom)是由字母和数字组成的字符串,是S─表达式的最简单情况。原子又可分为文字原子、串原子和数字原子三种。
文字原子又称符号(symbol),是以字母开头的字母数字串,用来表示常量、变量和函数的名字等。例如:ABC、X1等。
串原子是由双引号括起来的一串字符。如”LISP Program"。
数字原子由数字串组成。在其前面可以有符号“-”或“+”,中间可出现“.”,用来表示整数和实数。例如:256、-66、3.14159等。
S─表达式可以递归定义如下:
(1)原子是S─表达式。
(2)若S1和S2是S─表达式,则(S1·S2)也是S─表达式。由定义,下面的式子都是S─表达式:
X2
123
(A·B)
(A·(B·C))
表(list)是LISP语言中最常用的数据类型,也是主要的处理对象。表是由圆括号括起来的由空格分开的若干个元素的集合。
表的一般形式为:
(…)
例如:
(X Y Z),(+12),(A(B C))
左括号后面的第一个元素称为表头,其余的元素组成的表称为表尾。例如,对于表
(+12)的头为+,尾为(12)。
特别地,元素个数为零的表为空表,记为()或NIL。
表是一种特殊的S─表达式,每一个表都对应着一个S─表达式。二者的关系由下面的例子说明。
表←——————————————→S-表达式
(A)
(A·NIL)
(AB)
(A·(B·NIL))
(ABC)
(A·(B·(C·NIL)))
((AB)CD)
((A·(B·NIL))·(C·(D·NIL)))
可以看出,表的S─表达式的结构实际是一棵二叉树。
2.2.3 基本函数
LISP的函数都以表的形式出现,并一律使用前缀表示方式,即表头为函数名,并且每个函数都有一个返回值。LISP的函数可分为语言自身提供的内部函数(称为基本函数或系统函数)和用户自定义函数两类。基本函数的种类有十多个,下面仅给出其中主要的几类。
1.表处理函数
表处理是LISP的主要特色,表处理的函数也很多,下面仅给出最常用的几个。1)CAR函数
格式(CAR<表>)
其中CAR为函数名,它是一个保留字(下同)。功能取出表中的表头。
例如:(CAR′(LISP Language Program))返回值为:LISP 2)CDR函数
格式(CDR<表>)
功能取出表中的表尾。
例如:(CDR′(LISP Language Program))
返回值为:(Language Program)
3)CONS函数
格式(CONS<表>)
功能将S─表达式作为一个元素加到表中去,并作为所构成新表中的第一个元素。
例如:(CONS′My′(LISP Language Program))
返回值为:(My LISP Language Program)4)APPEND函数
格式(APPEND<表1><表2>…<表n>)功能
将n个表中的元素合并成一个新表。例如:(APPEND′(TIGER LION)′(DOG CAT))返回值为:(TIGER LION DOG CAT)5)LIST函数
格式(LIST…)功能把n个S─表达式作为元素括在一起构成一张新表。例如:(LIST′YELLOW′RED′BLUE)返回值为:(YELLOW RED BLUE)
2.算术函数
LISP的算术表达式也是用函数表示的,称为算术函数。下面我们仅举例说明。
(+25)
表示2+5,返回值为7。
(-(*48)(/105))表示4×8-10/5,返回值为30。3.求值与赋值函数
在上面的函数中多次出现撇号′,它的意思是禁止求值。为什么要禁止求值呢?原来,LISP总是试图对一切S─表达式求值。表的值是通过函数运算而得到的,原子的值则是通过赋值函数实现的。撇号′也是一个函数,它实际是禁止求值函数QUOTE的简写形式。
赋值函数有多个,其中SET函数是一个最基本的赋值函数。
格式(SET<变量>)
功能把S─表达式赋给变量。
例如:
(SET′X′8);
X 得到值8
(SET′Y′(a b c));
Y 得到值(a b c)
(SET′Z(CDRY);
Z 得到值(b c)
另外,赋值函数还有SETQ、SETF(COMMON LISP),其功能是类似的。
4.谓词函数
返回值为逻辑值真或假的函数称为谓词函数,简称谓词。LISP中真和假分别用T和NIL表示,当函数的返回值为非NIL时,也表示为真。另外,NIL也表示空表。谓词函数也有多个,下面我们仅给出常用的几个。(1)原子谓词ATOM
格式(ATOM<参数>)
功能检测其参数是否为原子,是则返回T,否则返回NIL。
例如:
(ATOM′a);返回T
(ATOM′(a b));返回NIL(2)相等谓词EQUAL
格式(EQUAL<参数><参数>)
功能判断两个参数是否逻辑相等。
例如:
(EQUAL′a′a);
返回T
(EQUAL′(a b)′(ac));
返回NIL
(EQUAL′(a b)(CONS′a′(b)));
返回T
还有一种相等谓词,其格式为:(EQ<参数><参数>),但它只是用来判断两个原子是否相等。例如:(EQ′a′a),则返回T(3)判空表函数NULL
格式(NULL<参数>)
功能判断参数是否为空表,是则返回T,否则返回NIL。
5.条件函数
条件函数也称分支函数,类似于其他语言中的分支语句,其作用是控制程序的流程。
格式
(COND(P1 e1)
(P2e2)
…
(Pnen))
其中Pi(i=1,...,n)为谓词,ei(i=1,...,n)为一个或多个S─表达式。
功能如果P1为真,则COND函数的值为e1(当e1为多个S─表达式时,取最后一个S─表达式的值,下同)。否则,判断P2,……直到某个Pi真为止,然后将对应的ei作为函数值。若没有一个Pi的值为非NIL,则COND的返回值为NIL。特别地,Pi也可以为逻辑常量T,这时则对其对应的各表达式求值,并把最后一个表达式的值作为COND的返回值。
例如:
(COND((NULL x)0)
((ATOM x)1)
((LISTP x)(LENGTH x)))
其语义是,若x的值为NIL,则COND的返回值为0;若x为原子,则COND的返回值为1;若x的值为表,则COND的返回值为表的长度。
2.2.4 自定义函数
基本函数是LISP提供的基本处理功能,要用LISP编程解决实际问题,仅有基本函数还是不够的,用户还必须根据问题的需要,利用基本函数自定义所需的函数。
自定义函数的格式为:
(DEFUN<函数名>(<形参表>)<函数体>)其中函数体,又可能是用户自定义的函数或LISP基本函数的某种组合。所以,一般来讲,LISP自定义函数就是由其基本函数组合而成的。常用的组合方法有复和、分支、递归、迭代等。其中最具特色的构造方法是递归。
例2.1 定义求N!的LISP函数。
阶乘的公式是
n!=n×(n-1)!
1!=1
0!=1
由此我们给出其LISP函数如下:
(DEFUNN!(n)
(COND((=n 0)1)
((=n 1)1)
(T(* n(N!(-n 1))))))可以看出,该函数的最后一行中又调用了它自己。所以,这个函数N!是递归定义的。
需说明的是,一个函数是否能递归定义,要取决于以下两条:
(1)函数的求值存在最简的情形,在这种情形下函数值是显然的或已知的;
(2)该函数对于其参数的求值,可以归结为对另一些参数的求值,而且后者比前者更容易求值,即使问题朝最简情形逼近了一步。
2.2.5 程序举例
例2.2 符号微分程序。
这里是指数学上的一元函数求导。我们用D(ex)表示数学上的de/dx,这里e为需求导的函数表达式,x为自变量。程序如下:
(DEFUND(ex)
(COND((ATOM e)(IF(Eq e x)1 0))
(T(APPLY(D-RULE(CAR e))
(APPEND(CDR e))
(LIST x)))))其中D-RULE是一个获取给定操作符的微分规则的LISP函数。微分规则的存放,是通过为相应操作符建立d特性的方法完成的。D-RULE的定义为
(DEFUN D-RULE(operator)
(GET operator′d))其中操作符d的特性值需事先用SETF函数建立好。例如对于操作符加+和乘·,在数学上有
d(u+v)/dx=du/dx+dv/dx
d(u·v)/dx=v·du/dx+u·dv/dx
用LISP表示就是
(SETF(GET′+′D)′(LAMBDA(u v
x)′(+,(Dux),(D v x))))
(SETF(GET′*′D)′(LAMBDA(u v
x)′(+(*,(Dux),v)(*,(D v x),u)))))有了这些函数,我们就可以用机器求符号微分了。例如,给出如下的函数调用(D′(+(*2x)(*x x))′x);即求一元函数2x+x2关于x的导函数则得到返回值为
(+(+(* 0 x)(* 1 2))(+(* 1 x)(*1 x)))
即2+2x,结果正确。
由于篇幅所限,上面我们对LISP语言仅做了简要介绍。需进一步学习的读者,可参阅有关专门著作。实际上,以此为入门和基础,读者就可以参照某一具体的LISP语言资料,进行LISP程序设计了。经过30多年的发展,LISP的方言和版本也很多。目前比较流行的有INTERLISP、MACLISP、COMMONLISP。其中COMMONLISP将成为一种标准,以统一各种LISP方言。
http://www.xiexiebang.com/tags/Prolog/
第三篇:概述
概述
建国以来农村社会养老
1956 年明确了关于五保的具体提法:农业生产合作社对于社内缺少劳动力,生活无依靠的鳏寡孤独的农户和残废军人,应当在生产上和生活上给以适当的安排,做到保吃、保穿、保烧(燃料)、保教(儿童和少年)、保葬,使得这些人的生养死葬都有指靠10(《一九五六年到一九六七年全国农业发展纲要(草案)》:全国人民代表大会常务委员会,1956.)土地养老和家庭养老是广大农民传统的养老保障方式,且在一段时间内发挥了重要作用,但是随着全国市场经济体制改革的深入,工业化、城镇化进程的加快,这两种传统、非正式的养老保障方式的功能正在逐渐弱化,而具有社会福利性质、正式的社会养老方式被引入,并且日益成为关系农民切身利益的大事。
以 1992 年颁布的《县级农村社会养老保险基本方案》(试行)(以下简称“老 农保”)为标志,农村社会养老保险工作开始在农村地区广泛推广。据统计,截 至 1999 年年底,全国共有 31 个省、自治区、直辖市的 76%的乡镇开展了农村社 会养老保险工作,共有 8000 万人次的农民参加了农村社会养老保险13。(13《1999 年劳动和社会保障统计公报》:《劳动保障通讯》,2000.)但是由于存在诸多问题,1999 年开始对其进行整顿,《国务院批转整顿保险业工作小组保险业整顿与改革方案的通知》(国发[1999]14 号)要求农村停止接受农村社会养老保险新业务。至此,老农保工作基本处于停滞状态。
3.新型农村社会养老保险制度以来的农村社会养老 进入 21 世纪以后,农村社会养老保险工作又被提上了日程,政府鼓励各地积极探索建立适合本地区经济发展的新型农村社会养老保险。2009 年国务院颁发《关于开展新型农村社会养老保险试点的指导意见》(以下简称“新农保”),决定开展新农保试点工作。当年实现覆盖全国 10%的县(市、区、旗),以后再逐步扩大试点范围,最终实现在全国普遍实施,到 2020 年之前实现对农村适龄居民的全覆盖。据人力资源和社会保障部发布的消息,截至 2012 年 10 月底,城乡居民社会养老保险参保人数达到 4.59 亿,其中 1.25 亿城乡老年居民领取养老金。2012年年末全国所有县级行政区全面开展国家城乡居民社会保险工作,城乡参保人数达 4.84 亿,实际领取待遇人数 1.31 亿14。(人力资源和社会保障事业发展统计公报,2012 年.)人社部、财政部印发《城乡养老保险制度衔接暂行办法》(以下简称暂行办法)是改进养老保险制度的又一重大举措,主要是解决城镇职工基本养老保险与城乡居民基本养老保险制度两大制度的衔接问题,将于 2014 年 7 月 1 日正式实施。《暂行办法》出台最大收益者是农民工和城镇非从业居民,这对于提高他们参保积极性,扩大覆盖率有重要促进作用。长期以来,绝大部分农民工因为身份和工作流动性大的特点游离于制度之外,据人社部统计,2012 年全国农民工总量达 2.62 亿人,但是同期参加职保的农民工人数仅为 4543 万。而《暂行办法》出台使得广大农民工和城镇非从业居民进可以参加“职保”并享受待遇,退可由 城乡居民养老保险制度“兜底”,这在一定程度上保障了弱势群体农民工的权益。《暂行办法》规定优先保留待遇较高的职保,明确对参保人员重复缴费和重复领取待遇情况的处理意见。但值得注意的是,《暂行办法》只适用于尚处于缴费期、未领取养老保险待遇的人员;已经退休或是按规定已领取养老保险待遇的不适用。随着老龄化进程的加快,国家越来越重视对老年人的特殊照顾,出台了各种措施从物质和精神层面加强对老年人的优待。《关于进一步加强老年人优待工作的意见》要求,“政府和社会在做好公民社会保障和基本公共服务的基础上,在医、食、住、行、用、娱等方面,积极为老年人提供各种形式的经济补贴、优先优惠和便利服务,不断提升老年人生活质量”。《关于进一步加强老年人优待工作的意见》明确了优待的基本对象为 60 周岁以上的老年人,各地可因地制宜,在卫生保健、交通出行、商业服务、文体休闲等方面,对常住本行政区域内的老年人给予同等优待,并根据本地实际情况,逐步拓展同等优待范围。《中华人民共和国老年人权益保障法》规定:“家庭成员应当从关心老年人的精神需求,不得忽视、冷落老年人,尤其是与老年人分开居住的家庭成员,应当经常看望或者问候老年人,以满足老年人的精神需求”。国家在保障老年人的物质需求基础上也逐渐开始重视老年人的精神需求,以法律的形式在一定程度上强制规定了年轻人对老年人应尽的义务。我国人口老龄化加速发展,并且高龄化、空巢化趋势明显。2013 年,我国 60 岁以上老年人突破 2 亿大关,达到 2.02 亿 15。(《中国老龄事业发展报告(2013)》:中国社科院,2013.)
应对老龄化速度加快的挑战,面对“未备先老”的现状,加强社会养老服务体系建设十分必要。长期以来,党和政府十分重视老年群体,出台各项政策,采取措施,为老龄事业持续发展奠定了很好的基础。
2005年民政部启动养老服务社会化示范活动,推动老年福利服务由补缺型向适度普惠型转变。新时期,新起点,养老服务产业面临前所未有的发展机遇。《关于加快发展养老服务业意见的通知》提出指导性意见:“发展养老服务业要按照政策引导、政府扶持、社会兴办、市场推动的原则”,“要建立公开、平等、规范的养老服务准入制度,积极支持以公建民营、民办公助、政府补贴、购买服务等多种方式兴办养老服务业,鼓励社会资金以独资、合资、合作、联营、参股等方式兴办养老服务业。”这不仅明确了未来要建立的养老服务体系,而且引导社会力量参
与到养老服务业中来。2008 年全国老龄委办公室、民政部等十部门联合下发《关 于全面推进居家养老服务工作的意见》提出:“不断加大工作力度,积极推动居 家养老服务在城市社区普遍开展,同时积极向农村社区推进。”“农村社区依托乡 镇敬老院、村级组织活动场所等现有设施资源,力争 80%左右的乡镇拥有一处集 院舍住养和社区照料、居家养老等多种服务功能于一体的综合性老年福利中心,1/3 左右的村委会和自然村拥有一所老年人文化活动和服务的站点。”《关于全面 推进居家养老服务工作的意见》的出台促进了养老服务业向农村地区开展,明确 要完善养老机构并对建设标准做了具体规定。从此,各地开始纷纷出台政策措施 促进养老服务业的发展,养老服务业迈上了快速发展的轨道。《社会养老服务体 系建设规划(2011—2015)》提出:“坚持政府主导、政策扶持、多方参与、统筹 规划”,“初步建立起与人口老龄化进程相适应、与经济社会发展水平相协调,以 居家为基础、社区为依托、机构为支撑的社会养老服务体系,让老年人安享晚年,共享经济社会发展成果”。《国务院关于加快发展养老服务业的若干意见》(国发 [2013]35 号)提出,到 2020 年,全面建成以居家养老为基础、社区为依托、机 构为支撑的功能完善、规模适度、覆盖城乡的养老服务体系。养老服务产品更加 丰富,市场机制不断完善,养老服务业持续健康发展。中共十八届三中全会通过 的《中共中央关于全面深化改革若干重大问题的决定》,强调要“加快社会事业 改革,解决好人民群众最直接最现实的利益问题”,其中,特别强调要加快建设 社会养老服务体系,发展老年服务产业。
《中国老龄事业的发展》白皮书显示,2006 年全国有养老院、敬老院等养
老服务机构共 39546 个,总床位 149.7 万张。其中,民办养老机构有 1620 多所,床位有近6 万张。这一时期,采取深化居家养老服务,依托社区平台,通过政府 购买服务等方式解决居家老人的养老需求。社会化的养老机构发展较快,民办养 老机构成为养老服务的重要力量,但养老服务人员文化素质偏低,专业技能缺乏,服务意识淡薄。这在一定程度上阻碍了养老服务事业的发展。目前,我国养老服 务业取得了长足发展,养老机构数量不断增加,服务规模不断扩大,老年人的文化生活日益丰富,养老质量不断提高,朝着规范化、标准化、多样化、专业化、公共服务均等化方向努力,初步建立起养老服务体系。但是,养老机构供需矛盾突出,设施简陋;城乡之间、区域之间发展不平衡;政府投入有限,社会力量参与不足;服务人员专业化程度不高等问题仍然存在。
第四篇:集体合同概述
集体合同概述
题目:平等协商、签订和履行集体合同应当遵循、、的原则。答案:合法、公平、诚信(《江苏省集体合同条例》第三条 P183)题目:平等协商、签订和履行集体合同应当遵循()的原则。
(A)公平、公正、便捷(B)合法、公平、诚信(C)合法、公平、便捷(D)公平、平等、便捷
答案:B(《江苏省集体合同条例》第三条 P183)题目:县级以上地方人民政府劳动和社会保障行政部门对集体合同进行()审查,依法对集体合同的签订和履行进行监督。(A)合法性(B)公平性(C)合理性(D)公正性
答案:A(《江苏省集体合同条例》第六条P184)
题目:用人单位规章制度与集体合同不一致的,按照()执行。
(A)规章制度(B)集体合同(C)劳动合同(D)两者皆可
答案:B(《江苏省集体合同条例》第四条P184)题目:用人单位规章制度与集体合同不一致的,按照集体合同执行。答案:√(《江苏省集体合同条例》第四条P184)题目:平等协商、签订和履行集体合同应当遵循公平、公正、自愿、便捷的原则。答案:×(《江苏省集体合同条例》第三条P183)题目:下列说法正确的是()。
(A)平等协商、签订和履行集体合同应当遵循公平、公正、自愿、便捷的原则(B)用人单位规章制度与集体合同不一致的,按照集体合同执行
(C)县级以上地方人民政府劳动和社会保障行政部门对集体合同进行公正性审查,依法对集体合同的签订和履行进行监督
(D)集体合同约定的条件、劳动报酬等标准不得低于法定标准
答案:BD(《江苏省集体合同条例》第三-八条P183-184)题目:下列说法错误的是()。
(A)县级以上地方人民政府劳动和社会保障行政部门对集体合同进行公正性审查,依法对集体合同的签订和履行进行监督
(B)依法签订的集体合同只对用人单位具有约束力
(C)用人单位与职工个人订立的劳动合同中劳动条件、劳动报酬等标准低于集体合同约定的,按照劳动合同执行
(D)集体合同约定的条件、劳动报酬等标准不得低于法定标准
答案:ABC(《江苏省集体合同条例》第三-八条P183-184)
B-d-044集体合同平等协商的事项
题目:集体合同平等协商的要求应当以 提出。答案:书面形式(《江苏省集体合同条例》第九条P184)题目:用人单位与职工方提出平等协商的要求时,一方提出协商要求,另一方应当在收到要求之日起()以内书面形式予以答复,不得拒绝或者拖延。(A)十日(B)二十日(C)三十日(D)四十日
答案:B(《江苏省集体合同条例》第九条P184)题目:集体合同平等协商的要求应当()提出。
(A)以口头形式(B)以书面形式
(C)以口头或者书面形式(D)以口头和书面形式
答案:B(《江苏省集体合同条例》第九条P184)题目:除了()以外,下列集体合同事项都可以由双方平等协商。
(A)劳动报酬(B)工作时间
(C)工作岗位设置(D)劳动安全与卫生
答案:C(《江苏省集体合同条例》第十条P184-185)题目:用人单位与职工方提出平等协商的要求时,一方提出协商要求,另一方应当在收到要求之日起20日以内书面形式予以答复,不得拒绝或者拖延。答案:√(《江苏省集体合同条例》第九条)题目:集体合同平等协商的要求可以由口头形式提出。答案:×(《江苏省集体合同条例》第九条)题目:订立集体合同时,双方可以进行平等协商的事项有()。
(A)劳动报酬
(B)劳动安全与卫生(C)职业技能培训(D)保守商业秘密
答案:ABCD(《江苏省集体合同条例》第十条)
题目:订立集体合同时,用人单位确定()事项,应当事先与职工进行平等协商。
(A)劳动报酬
(B)劳动合同管理(C)奖惩与裁员(D)保守商业秘密
答案:ABC(《江苏省集体合同条例》第十条)
B-d-045集体合同平等协商的程序、人员及形式
题目:协商代表因履行职责占用工作时间的,视为。答案:提供正常劳动(《江苏省集体合同条例》第十五条P186)题目:集体合同平等协商时,用人单位首席协商代表由()担任。
(A)法定代表人或者主要负责人担任(B)法定代表人指定专人担任(C)工会主要负责人
(D)本单位以外专业人员
答案:A(《江苏省集体合同条例》第十二条 P185)题目:集体合同平等协商时,职工方首席协商代表由()担任。
(A)法定代表人或者主要负责人担任(B)法定代表人指定专人担任(C)工会主要负责人
(D)本单位以外专业人员
答案:C(《江苏省集体合同条例》第十二条 P185)题目:集体合同平等协商时,可以聘请本单位以外的有关专业人员作为本方协商代表参加协商,但所聘人数不得超过本方协商代表的()。(A)三分之一(B)三分之二(C)五分之一(D)五分之二
答案:A(《江苏省集体合同条例》第十二条P185)题目:协商代表在任期内,用人单位不得无故调动其工作岗位和免除职务、降低职级。答案:√(《江苏省集体合同条例》第十五条 P186)题目:集体合同平等协商时,双方协商代表可以相互兼任。答案:×(《江苏省集体合同条例》第十一条 P185)题目:下列说法错误的是()。
(A)集体合同平等协商的代表可以相互兼任
(B)职工方协商代表不胜任、不履行职责的,可以随时予以罢免或者撤职(C)协商代表因履行职责占用工作时间的,应当扣除相应时间的工资(D)协商会议内容应当如实记录,记录员由双方协商制定
答案:ABC(《江苏省集体合同条例》第十一-十八条P185-186)题目:下列说法正确的是()。
(A)集体合同平等协商的代表人数应当对等(B)协商代表的人气由被代表方确定,但不得短于三年(C)集体合同平等协商的代表可以相互兼任(D)协商会议内容不需记录
答案:AB(《江苏省集体合同条例》第十一-十八条P185-186)
B-d-046集体合同的期限、生效、变更和终止 题目:集体合同期限不得短于 年。答案:一年(《江苏省集体合同条例》第十九条P186)题目:集体合同期限不得短于()年。
(A)半年(B)一年(C)两年(D)三年
答案:B(《江苏省集体合同条例》第十九条P186)题目:集体合同签订后,用人单位应当在()日内将集体合同文本以及有关资料报送当地劳动保障行政部门。(A)五日(B)七日(C)十日(D)十五日
答案:C(《江苏省集体合同条例》第二十三条P187)题目:集体合同期满前()个月内,双方应当协商签订集体合同。
(A)半个月(B)一个月(C)两个月(D)三个月
答案:D(《江苏省集体合同条例》第二十九条P188)题目:集体合同草案只能由双方共同起草,任何一方都单独不能起草。答案:×(《江苏省集体合同条例》第十九条P186)题目:集体合同期满前一个月内,双方应当协商签订集体合同。答案:×(《江苏省集体合同条例》第二十九条P188)题目:用人单位或者职工方可以在集体合同平等协商中提出增长工资要求的情形有()。
(A)本单位利润增长的
(B)本单位劳动生产率提高的
(C)当地人民政府发布的工资指导线提高的(D)本地区城镇居民消费价格指数增长的
答案:ABCD(《江苏省集体合同条例》第二十一条P187)题目:致使集体合同部分或者全部条款无法履行的,可以变更或者解除集体合同的情形有()。
(A)订立时所依据的法律、法规已经修改或者废止(B)不可抗力
(C)集体合同变更或者解除条件出现(D)由一方协商代表出现变动
答案:ABC(《江苏省集体合同条例》第二十七条P188)
B-d-047区域、行业集体合同 题目:区域、行业的集体合同适用范围内的用人单位与本单位职工方又单独签订集体合同的,其集体合同规定的劳动条件和劳动报酬等标准不得 区域、行业集体合同的规定。
答案:低于(《江苏省集体合同条例》第三十四条p189)题目:区域、行业的集体合同适用范围内的用人单位与本单位职工方又单独签订集体合同的,其集体合同规定的劳动条件和劳动报酬等标准()区域、行业集体合同的规定。(A)不得低于(B)可低于
(C)不得等同于(D)等同于
答案:A(《江苏省集体合同条例》第三十四条p189)
题目:尚未建立区域、行业职工代表大会的,集体合同草案应当得到区域、行业内()以上职工的同意。(A)三分之一(B)三分之二(C)半数
(D)五分之一
答案:C(《江苏省集体合同条例》第三十三条p189)
题目:区域、行业的集体合同草案应当提交()讨论通过。
(A)区域、行业职工代表大会(B)劳动保障行政部门(C)区域、行业协会(D)用人单位
答案:A(《江苏省集体合同条例》第三十三条p189)
题目:区域、行业的集体合同草案应当提交区域、行业职工代表大会 讨论通过。答案:√(《江苏省集体合同条例》第三十三条p189)题目:通过的集体合同只能由双方首席协商代表签字。答案:×(《江苏省集体合同条例》第三十三条p189)题目:下列关于区域、行业集体合同表述正确的是()。
(A)区域、行业的集体合同适用范围内的用人单位与本单位职工方又单独签订集体合同的,其集体合同规定的劳动条件和劳动报酬等标准不得低于区域、行业集体合同的规定
(B)区域、行业的集体合同草案应当提交区域、行业职工代表大会讨论通过(C)通过的集体合同只能由双方首席协商代表签字
(D)尚未建立区域、行业职工代表大会的,集体合同草案应当得到区域、行业内全体职工的同意
答案:AB(《江苏省集体合同条例》第三十三条、第三十四条p189)题目:下列关于区域、行业集体合同表述错误的是()。
(A)区域、行业的集体合同适用范围内的用人单位与本单位职工方又单独签订集体合同的,其集体合同规定的劳动条件和劳动报酬等标准可以低于区域、行业集体合同的规定
(B)区域、行业的集体合同草案双方协商同意即可通过(C)通过的集体合同只能由双方首席协商代表签字
(D)尚未建立区域、行业职工代表大会的,集体合同草案应当得到区域、行业内全体职工的同意
答案:ABCD(《江苏省集体合同条例》第三十三条、第三十四条p189)
B-d-048集体合同争议处理和法律责任
题目:劳动保障行政部门处理平等协商和签订集体合同中发生的争议,应当自受理之日起
日内处理结束,有特殊情况需要延长的,由劳动保障行政部门负责人批转可以延长 日。
答案:三十 十五(《江苏省集体合同条例》第三十六条 P189)题目:因履行集体合同发生争议,双方应当协商解决;协商不成的,任何一方可以向劳动争议仲裁委员会申请仲裁;对仲裁不服的,可以自收到仲裁裁决书之日起()日内向人民法院提起诉讼。(A)5(B)10(C)15(D)20 答案:C(《江苏省集体合同条例》第三十七条P190)题目:违反《江苏省集体合同条例》相关规定,协商代表因履行职责被扣发、降低工资和福利的,由劳动保障行政部门责令用人单位支付其工资、福利,并可以责令按应得工资、福利总和的()标准支付赔偿金。(A)百分之五十以上一倍以下(B)一倍以上三倍以下(C)两倍
(D)三倍以上五倍以下
答案:A(《江苏省集体合同条例》第三十七条P190)题目:协调处理集体协商争议,应当自受理协调处理申请之日起()日内结束协调处理工作;期满未结束的,可以适当延长协调期限,但最长期限不得()日。(A)30日 15日(B)60日 30日(C)30日 30日(D)60日 15日
答案:A(《江苏省集体合同条例》第三十六条P189)题目:劳动保障行政部门处理平等协商和签订集体合同中发生的争议,应当自受理之日起三十个工作日内处理结束,有特殊情况需要延长的,由劳动保障行政部门负责人批转可以延长十五个工作日。
答案:×(《江苏省集体合同条例》第三十六条P189)题目:违反《江苏省集体合同条例》相关规定,协商代表因履行职责被扣发、降低工资和福利的,由劳动保障行政部门责令用人单位支付其工资、福利,并可以责令按应得工资、福利总和的一倍以上三倍以下的标准支付赔偿金。
答案:×(《江苏省集体合同条例》第三十九条P190)题目:协调处理集体协商争议应当按照的程序是()。
(A)受理协调处理申请(B)调查了解争议的情况
(C)研究制定协调处理争议的方案
(D)对争议进行协调处理,并制作《协调处理协议书》
答案:ABCD(p190-191)
题目:平等协商和签订集体合同发生的争议包括()。
(A)对协商代表资格有异议的
(B)对集体合同约定的劳动条件、劳动报酬等标准有异议的(C)对协商和签订集体合同的程序有异议的
(D)在协商和签订集体合同过程中发生的其他争议的
答案:ABCD(《江苏省集体合同条例》第三十九条P189)
B-d-049集体合同特别规定
题目:劳动保障行政部门对集体合同或专项集体合同有异议的,应当自收到文本之 日起日内将《审查意见书》送达双方协商代表。
答案:15(《江苏省集体合同条例》第二十三条p187)
题目:劳动保障行政部门对集体合同或专项集体合同有异议的,应当自收到文本之日起()日内将《审查意见书》送达双方协商代表。(A)5(B)10(C)15(D)20 答案:C(《江苏省集体合同条例》第二十三条p187)题目:集体合同或专项集体合同在()情况下终止。
(A)期满或双方约定的终止条件出现(B)协商一致
(C)上级工会要求(D)任何时候
答案:A(《江苏省集体合同条例》第二十三条p186)题目:协商代表履行职责的期限由()确定。
(A)被代表方(B)双方协商(C)上级工会(D)用人单位
答案:A(《江苏省集体合同条例》第十一条p185)
题目:集体合同平等协商的首席代表不可以由非本单位人员代理。答案:√(《江苏省集体合同条例》第十二条p185)
题目:集体合同平等协商的首席代表可以由非本单位人员代理。答案:×(《江苏省集体合同条例》第十二条p185)题目:集体合同《审查意见书》应当载明的内容有()。
(A)集体合同或专项集体合同当事人双方的名称、地址
(B)劳动保障行政部门收到集体合同或专项集体合同的时间(C)审查意见
(D)作出审查意见的时间 答案:ABCD(p148-149, p186-191)
题目:集体合同平等协商代表在协商前应做()准备工作。
(A)熟悉与集体协商内容有关的法律、法规、规章和制度
(B)了解与集体协商内容有关的情况和资料,收集用人单位和职工对协商意向所持的意见
(C)拟定集体协商议题,集体协商议题可由提出协商一方起草,也可由双方指派代表共同起草
(D)确定集体协商的时间、地点等事项;共同确定一名非协商代表担任集体协商记录员
答案:ABCD(p148-149, p186-191)
B-e-050农民工就业服务
题目:农民工就业所在地政府及其教育行政部门应当按照“______、______”的原则,采取多种形式,安排农民工适龄子女接受义务教育。
答案:流入地政府负责、公办学校吸纳为主 P199 第二章 就业服务第十条
题目:劳动争议仲裁机构对农民工申诉的劳动争议案件,应当加快审理、及时裁决,涉及劳动报酬、()的应当优先审理。(A)保险待遇
(B)加班加点工资支付(C)休息休假(D)劳动保护
答案:A P199 第二章 就业服务第十条
题目:劳动和社会保障行政部门和有关行政主管部门应当加强劳务输出工作机构和信息网络的建设,为农民工提供及时准确的信息服务,做好劳务输出的组织协调工作,提高劳务输出的()程度。(A)规范化(B)组织化(C)专业化(D)制度化
答案:B P198 第二章 就业服务第七条
题目:各类职业介绍机构为农民工提供免费职业介绍的,按照国家和省有关规定享受()。
(A)津贴(B)补贴
(C)优惠政策(D)奖励
答案:B P198 第二章 就业服务第八条
题目:劳动争议仲裁机构对农民工申诉的劳动争议案件,应当加快审理、及时裁决,涉及劳动报酬、保险待遇的应当优先审理。
答案:√
P199 第二章 就业服务第十一条
题目:安全生产监督管理、卫生等有关行政主管部门依法做好农民工安全生产和疾病防治工作,卫生部门应当将农民工随带子女免疫工作纳入当地免疫计划。
答案:√
P198 第二章 就业服务第九条
题目:公共就业服务机构应当为农民工免费提供()、()、()和()服务。
(A)就业信息(B)政策咨询(C)技能培训(D)职业指导(E)职业介绍
答案:ABDE P198 第二章 就业服务第八条
题目:地方各级人民政府应当组织开展农村劳动力转移就业技能、安全技能培训和引导性培训,在财政支出中安排专项经费重点用于扶持农村劳动力就业技能和安全技能培训工作,制定和落实以培训促就业的()、()和()措施。(A)保障(B)补贴(C)激励(D)奖励
答案:BCD P198第二章 就业服务第六条
B-e-051农民工工资、保险权益保护
题目:用人单位支付农民工的工资不得低于______。答案:当地最低工资标准 P199 第三章 第十二条
题目:安全生产监督管理、建设部门应当将用人单位参加工伤保险和农民经安全生产教育、培训合格作为发放《 》的必备条件。(A)从业资格证(B)培训上岗证
(C)安全生产许可证(D)营业资格证
答案:C P200 第三章 第十六条
题目:劳务派遣组织向用人单位派遣农民工的,由()和()按照劳务派遣组织所在地社会保险的有关规定参加社会保险,缴纳社会保险费。(A)劳务派遣组织、用人单位(B)劳务派遣组织、农民工(C)用人单位(D)农民工
答案: B P200 第三章 第十四条
题目:除实行小时、日、周工资制的用人单位外,其他用人单位应当()向农民工支付工资。用人单位不得无故克扣或者拖欠农民工工资。
(A)每半年(B)每年
(C)约定的工作完成后(D)每月
答案:D P199 第三章 第十二条
题目:对餐饮行业和农民工集中的用人单位推进《劳动计酬手册》制度,对其工资支付情况实施监控。
答案:×
对建设领域和农民工集中的用人单位推进《劳动计酬手册》制度,对其工资支付情况实施监控。
P199 第三章 第十三条
题目:用人单位一般不得延长农民工工作时间,确因生产经营需要延长农民工工资时间或者在休息日、休假日安排农民工工作的,按照法定程序进行,并依法支付加班工资。
答案:×
用人单位一般不得延长农民工工作时间,确因生产经营需要延长农民工工资时间或者在休息日、休假日安排农民工工作的,按照法定程序进行,并依法支付加班工资或者安排补休。P202 第三章 第二十五条
题目:用人单位工资分配应当遵循()的原则,实行();工资支付应当遵循()的原则,按时以()形式足额支付。(A)按劳分配(B)同工同酬(C)诚实信用(D)货币
答案:ABCD P199 第三章 第十二条
题目:建立农民工()和()制度。
(A)工资保证金(B)工伤保险
(C)工资支付重点监控(D)失业保险
答案:AC P199 第三章 第十三条
B-e-052农民工权益保障及法律责任
题目:用人单位使用农民工,不得违反规定向农民工收取或者变相收取______、______及其他不合理费用,不得扣押农民工个人身份证。
答案:保证金、抵押金 P201 第四章 第二十一条
题目:用人单位无故克扣或者拖欠农民工工资报酬的,由劳动保障行政部门责令改正,逾期不改正的,责令用人单位按照应付金额()以下标准,向农民工加付赔偿金。(A)30%以上-50%(B)50%以上-100%(C)20%以上-30%(D)100%以上-200% 答案:B P203 第六章 第二十一条
题目:《江苏省农民工权益保护办法》自()起施行。
(A)2009年5月1日(B)2007年7月1日(C)2008年5月1日(D)2010年3月1日
答案:C P204 第六章 第三十七条
题目:支持和鼓励农民工自愿和依法()转让承包集体土地的使用权。
(A)有偿(B)无偿(C)直接(D)间接
答案:A P202 第五章 第二十九条
题目:严禁任何单位已培训为名向农民工非法收取费用。答案:√
P202 第四章 第二十四条
题目:学校违反规定向农民工子女收取费用的,有监察、价格、教育等部门责令整改限期改正,逾期不改正的,对学校负责人和直接责任人给予处分。
答案:√ P203 第六章 第三十二条
题目:用人单位应当依法与农民工订立书面劳动合同,劳动合同的订立应遵循______、______的原则。
(A)公平公正(B)平等自愿(C)诚实信用(D)协商一致
答案:BD P201 第四章 第二十二条
题目:行政机关及其工作人员有下列行为之一的,由本级人民政府或者上级行政主管部门、监察机关给予行政处分:()
(A)干预用人单位自主依法使用农民工的;
(B)向农民工或者使用农民工的单位非法收取费用的;(C)不履行职责知识农民工合法权益收到损害的;(D)侵害农民工人身、财产权利的
答案:ABCD P204 第六章 第三十六条
B-f-053工会组织概述
题目:工会各级组织按照______的原则建立。答案:民主集中制 P206 第二章 第九条
题目:全国人民代表大会常务委员会《关于修改<中华人民共和国工会法>的决定》自()起施行。
(A)1992年4月3日(B)2001年10月27日(C)1950年6月28日(D)1995年1月1日
答案:B P205 第一章 总则前言
题目:工会是职工()的工人阶级的群众组织。
(A)自愿结合(B)自愿组建(C)依法成立(D)依法组建
答案:A P205 第一章 总则
题目:企业、事业单位、机关有会员()以上的,应当建立基层工会委员会。
(A)25人以上(B)40人以上(C)15人以上(D)30人以上
答案:A P206 第二章 第十条
题目:基层工会委员会每届任期2年或者3年。答案:× P207 第二章 第十条
基层工会委员会每届任期3年或者5年。
题目:经基层工会委员会或者二分之一以上工会会员提议,可以临时召开会员大会或者会员代表大会。
答案:× P207 第二章 第十六条
经基层工会委员会或者三分之一以上工会会员提议,可以临时召开会员大会或者会员代表大会。题目:()、()、()具有社会团体法人资格。
(A)中华全国总工会(B)地方总工会(C)基层工会(D)产业工会 答案:ABD P207 第二章 第十四条 题目:()、(),可以建立基层工会联合会。
(A)企业职工较多的乡镇(B)社区
(C)城市街道(D)村
答案:AC P207 第二章 第十条
B-f-054工会权利和义务
题目:企业、事业单位违反职工代表大会制度和其他民主管理制度,工会有权要求纠正,保障职工依法行使______的权利。
答案:民主管理 题目:()可以为所属工会和职工提供法律服务。
(A)市级以上各级总工会(B)县级以上各级总工会(C)地方各级总工会(D)全国总工会
答案:B P208 第三章 第十九条
题目:建立工会组织的企业、事业单位、机关案每月全部职工工资总额的()向工会拨缴的经费。(A)1%(B)5%(C)3%(D)2% 答案:D P212 第五章 第四十二条
题目:罢免工会主席、副主席必须召开会员大会或者会员代表大会讨论,非经会员大会全体人员或者会员代表大会全体代表过()通过,不得罢免。(A)三分之一(B)四分之一(C)二分之一(D)三分之二
答案:C P208 第二章 第十七条
题目:县级以上各级人民政府以及有关部门研究制定劳动就业、工资、劳动安全卫生、社会保险等涉及职工切身利益的政策、措施时,应当吸收上级工会参加研究,听取工会意见。
答案:× P210 第三章 第三十三条
县级以上各级人民政府以及有关部门研究制定劳动就业、工资、劳动安全卫生、社会保险等涉及职工切身利益的政策、措施时,应当吸收同级工会参加研究,听取工会意见。题目:各级人民政府劳动行政部门应当会同同级工会和企业方面代表,建立劳动关系三方协商机制,共同研究解决劳动关系方面的重大问题。
答案:√
P210 第三章
第三十四条
题目:企业、事业单位违反劳动法律、法规规定,有下列侵犯职工劳动权益情形的(),工会代表应当代表职工与企业、事业单位交涉,要求企业、事业单位采取措施予以改正。(A)克扣职工工资的;
(B)不提供劳动安全卫生条件的;(C)随意延长劳动时间的;
(D)侵犯女职工和未成年工特殊权益的;(E)其他严重侵犯职工劳动权益的。
答案:ABCDE P209 第三章 第二十二条 题目:工会应当根据经费独立原则、建立()、()和()监督制度。
(A)测算(B)预算;(C)决算;
(D)经费审查;
答案:BCD P212 第五章 第四十四条
B-f-055违反工会法的法律责任 题目:工会对违反本法规定侵犯其合法权益的,有权提请______或者有关部门予以处理,或者向______。
答案:人民政府、人民法院提起诉讼 P212 第六章 第四十九条
题目:职工因参加工会活动而被解除劳动合同的,由劳动行政部门责令恢复其工作,并补发被解除劳动合同期间应得的报酬或者责令给予()的赔偿。
(A)本人年收入2倍(B)本人月收入2倍(C)本人年收入3-5倍(D)本人月收入3-5倍
答案:A P213 第六章 第五十二条 题目:工会参加企业的劳动争议()。
(A)调解工作(B)处理(C)仲裁(D)协调
答案:A P210 第三章 第二十八条
题目:企业、事业单位无正当理由()工会经费,基层工会或者上级工会可以向当地人民法院申请();拒不执行支付令的,工会可以依法申请人民法院()。(A)拖延或者拒不拨缴,支付令,强制执行(B)拖延或者拒不拨缴,强制征缴,强制执行(C)不缴或者拒不缴纳,支付令,强制划拨(D)拖延或者拒不拨缴,支付令,强制划拨
答案:A P212 第五章 第四十三条
题目:工会工作人员违反法律规定,损害职工或者工会权益的,由上级工会责令改正,或者予以行政处分;情节严重的,依照《中国工会章程》予以罢免。
答案:× P213 第六章 第五十五条 工会工作人员违反法律规定,损害职工或者工会权益的,由同级工会或者上级工会责令改正,或者予以行政处分;情节严重的,依照《中国工会章程》予以罢免。
题目:阻挠职工依法参加和组织工会或者阻挠上级工会帮助、指导职工筹建工会的,由劳动行政部门责令其改正;拒不改正的,由劳动行政部门提请县级以上人民政府处理。
答案:√ P213 第六章 第五十条
题目:违反法律规定,有下列情形之一的(),由县级以上人民政府责令改正,依法处理。
(A)妨碍工会组织职工通过职代会和其他形式依法行使民主权利的;(B)非法撤销、合并工会组织的
(C)妨碍工会参加职工因工伤亡事故以及其他侵犯职工合法利益问题调查处理的
(D)无正当理由拒绝进行平等协商的
答案:ABCD P213 第六章 第五十三条 题目:工会的财产、经费和国家拨给工会使用的不动产,任何组织和个人不得()、()和()。
(A)侵占(B)挪用
(C)任意调拨(D)处置
答案:ABC P212 第五章 第四十六条
第五篇:人才市场概述
中国广西人才市场 员工培训讲义
(一)第一讲
人 才 市 场 概 述
马 昌 定
一、人才市场的含义、产生、特点
(一)含义
从广义上说,人才市场是遵循市场规律调节人才供求的一种机制。人才、用人单位、人才中介服务机构、管理机构、人才交流场所(设施)等都是人才市场组成的重要因素。狭义地说,人才市场是指交换人才劳动能力的场所,是为人才个体和人才使用单位双向选择(买卖)提供条件和服务的机构。由于体制上的原因,目前我国存在着人才市场和劳动力市场以及高校毕业生就业市场。人才市场服务的主要对象,传统的做法为,各类使用人才的单位和具有中专以上学历或取得专业技术职称资格的人员,以及其它从事专业技术工作或管理工作的人员、各类能工巧匠。科学的人才观认为,人才存在于人民群众之中。只要具有一定的知识或技能,能够进行创造性劳动,为推动社会主义物质文明、政治文明、精神文明建设,在建设中国特色社会主义伟大事业中作出积极贡献,都是党和国家需要的人才。要坚持德才兼备原则,把品德、知识、能力和业绩作为衡量人才的主要标准,不唯学历、不唯职称、不唯资历、不唯身份,不拘一格选人才。鼓励人人都做贡献,人人都能成才。
(二)人才市场的产生和形成
1、人才市场产生和形成的前提条件(1)人才供求双方具有相对独立性。即人才具有独立支配自己劳动能力的权利,使用人才的单位有用人自主权;
(2)有服务于人才“买卖”双方的中介条件。包括机构、场所、设施(网上人才市场则以网络为载体)。
(3)工资成了人才的市场价格,由人才市场供求关系调节。
2、人才市场形成的现实基础
(1)培育和发展人才市场是社会主义市场经济发展的客观要求。建立和完善社会主义市场经济就是要充分发挥市场在社会资源配置中的基础性作用。人才资源作为重要的资源,在市场经济条件下,必须通过市场来配置。因此,建立社会主义市场经济体制,必须发展完善人才市场。
(2)培育和发展人才市场是劳动人事制度改革和毕业生就业制度改革的必然结果。在计划经济条件下,劳动力和人才资源的配置都是通过行政计划完成的,大、中专院校的毕业生,由国家通过指令性计划分配工作。随着经济体制改革的深入,劳动人事制度和大中专毕业生就业制度也必须改革,要打破人才资源计划配置和毕业生统包统配的体制和机制,必须建立市场配置体制和机制,人才市场就应运即生。
(三)人才市场的特点
1、我国人才市场与国外的人才市场比较,其主要特点:
(1)我国的人才市场是政府培育的,不是自发形成的。因此,我国人才市场从功能、机制、服务范围、对象到市场的场所(设施)机构受政府行为的影响很大。
(2)目前情况下,人才中介机构是我国人才市场的表现形态。因为我 国人才市场是由政府建立的,在起步阶段,由政府人事行政部门分割一部分职能,交由其所属的人才中介服务机构来行使,而人才中介机构又基本上是通过市场机制来运作,由此培育人才市场。这就形成了当前的情况,即不是人才中介机构以业已存在的人才市场为依托,而是人才市场凭借人才中介机构而存在。可以说,我国目前的人才市场是通过人才中介机构而获得了存在的形态的,这也使得人才中介机构成为了人才市场的具体组织形式和运行方式。
2、人才市场与一般的商品市场、生产要素市场相比,除了具有开放性、竞争性、等价交换性等共性以外,还有其自身的特殊性。表现为:(1)人才市场上的“商品”(人才)交换、价格(工资)不是成交与否的唯一因素。不同的人才有不同的追求,有的人才将工作环境、发展前景、人际关系等等作为是否成交的重要条件,而其它商品市场,商品能否成交,主要是取决于价格是否合适。
(2)人才市场中“商品”(人才)使用价值的非显现性。一般商品的使用价值,购买者大都通过眼看、手摸、阅读商品介绍或度量,就可以得到比较准确的判断。而人才的使用价值,凭简单的物理观察、度量是很难判断的,必须进行科学的测评。
(3)人才市场上“商品”(人才)的储存、陈列上的信息替代性。一般商品市场必须陈列储存有商品实物供买方察看、购买,而人才市场的“商品”可以通过文字信息陈列、储存,买卖双方可以通过了解信息来选择。可以说,人才市场的商品主要就是信息。中介机构主要通过提供信息为买卖双方服务、促进交易。(4)人才市场上的“商品”(人才)具有情绪性。他们讲究尊严、讲究平等。他们对市场服务的要求,软件重于硬件。
(四)人才中介机构
1、人才中介机构的性质。中介组织也叫非政府组织、非营利组织。社会中介组织是介于政府与社会之间,依法从事独立和专门的社会活动,从而具有特定功能的共同体。在市场经济中,存在着大量的这种经济性中介组织(也叫市场中介组织),诸如各种行业协会、联合会、商会、会计师审计师事务所、资产评估机构、资信评估机构、工程监理机构、商标事务所以及各种中介交易机构(房地产交易所、证券交易所、期货交易所、技术成果交流中心、产权交易中心等)。人才中介机构也是其中一个重要的中介组织。2001年9月,国家人事部和国家工商行政管理总局颁布的《人才市场管理规定》明确:“人才中介服务机构是指为用人单位和人才提供中介服务及其他相关服务的专营或兼营的组织。”
2、人才中介机构的产生。一是市场需要。人才个体和用人单位要实现合理选择、组合,必须有中介机构为其提供中介服务(重要是信息服务);二是政府需要,在市场经济条件下,政府对社会人才资源的管理需要从微观走向宏观,从直接走向间接,它就需要一种具有一定的社会整合能力与市场调控能力的人才中介组织。可以说,人才中介机构它具有独立的社会地位,即处于社会中间层,占据人才资源的公共事务领域,拥有客观的合法的活动空间。
3、人才中介机构的特征
(1)独立性。人才中介机构既非隶属于政府的纯行政机构,也非属于 企业性质的经济组织或经营管理组织,而是能够独立承担民事法律责任的社会法人组织。
(2)中介性。它属于政府与社会之间,将政府与社会有机联系起来,成为重要的中间环节与功能性的交流渠道,是社会整合的调节器。
(3)公共性。它的行为结果是公益性的,它存在的基础是政府与社会的公共需求。
(4)服务性。人才中介机构既服务于政府的公共管理需要,也服务于人才资源的市场配置。
(5)公正性。人才中介机构的地位要求它必须依法公正地发挥功能,遵守自己的行业准则,公平合理地居间服务。
目前我区政府人事部门所属的人才交流服务机构,还不是完整意义上的人才中介组织。一是职能上,它们或多或少还根据政府的授权在行使行政管理职能和人事公共服务职能,特别是县市一级的人才交流服务机构,很大程度上还是政事不分。二是经费来源上,基本上还是财政拨付。从发展来看,必然要实行政事分开,成为真正意义上的人才中介组织。
二、人才市场的地位和作用
(一)地位
1、人才市场是社会主义市场体系的重要组成部分。发展人才市场,是建立和完善社会主义市场经济体制的重要内容。要建立和完善社会主义市场经济体制,离不开完善的市场体系。完善的市场体系要求市场层次完整、相互联系、相互制约、运转自如。现代市场可分为商品市场、生产要素市场两个方面。商品市场包括生活资料市场和生产资料市场;生产要素市场包括资 本市场、劳动力市场、人才市场、技术市场、信息市场和房地产市场。可以说,没有人才市场,市场体系是不完整的。
2、现代社会,科学技术日新月异,人才资源成为了第一资源。人才市场在市场体系中的地位越来越重要。
(二)人才市场(人才中介服务机构)的作用
1、配置人才资源。在市场经济条件下,人才市场在人才资源配置中发挥基础性作用。目前,我国的人才资源的市场配置,重要是通过人才中介服务机构完成的。通常是人才中介机构向社会发布人才供求信息,将供求两个主体联系起来,服务双方的选择和人才资源的配置。
2、反映人才供求。市场经济条件下,人才市场是反映社会人才供求状况的最有效途径。国家人事部从去年开始,定期公布全国重点城市和地区人才供求状况,都是由当地的人才市场提供数据。这种反映,一方面影响人才供求双方的选择,指导人才的流动;另一方面,引导人才的培养。许多人才培养机构都根据人才市场的供求信息确定培养规模和种类。
3、引导人才消费。人才市场的供求双方,大部分对人才市场的整个形式不很了解,很难科学合理地确定其人才消费的定位。有些用人单位对哪些岗位究竟选择什么样的人才最合适,并不很清楚;有的人才对自己究竟最适合什么样的职位也不一定很明确。这就需要我们人才市场的专家、顾问为他们提供咨询和指导服务。
4、评价人才素质。目前,许多的人才中介服务机构都开展了人才素质测评业务。人才素质测评是根据一定的目的,综合运用定量与定性的多种方法,对人才的德、智、能、绩进行客观、准确评价的一种社会活动。科 学的人才测评,一是能对被测评者的素质作出客观鉴定;二是对被测评者的潜在素质进行预测。这种鉴定和预测就能更准确地认识人才,更科学地配置和使用人才,实现职位与人才的最佳匹配。
5、保障人才流动。目前,我们人才中介服务机构开展的人才代理业务,特别是我们政府人事部门所属的人才交流服务机构,根据政府的授权开展的流动人员人事档案管理以及与此相关的诸如身份认定、工龄计算、职称考评、户籍管理、党团组织关系管理,社会保险代办等等业务,有效地解除了人才流动的后顾之忧,保障了人才的流动。人才派遣业务,既有利于人才的合理配置,也能有效地保障人才流动。
6、提升人才“内存”。人才市场根据市场经济发展的要求和人才本身的需求,开展培训业务,能使人才在离开学校以后,不断地更新知识和增加新知识,新技能,这对于开发人才资源,提升人才素质发挥了极其重要的作用。
三、人才市场的现状
(一)人才市场发展面临的形势
1、党中央、国务院、自治区党委和政府都高度重视人才和人才市场的发展,人才市场逐步被社会认同;
2、改革的深入,将加速人才资源配置市场化进程,创造有利于人才市场发展的体制环境,特别是劳动人事制度改革和毕业生就业制度改革的深化,直接推动人才市场的发展;
3、经济全球化和区域一体化的趋势,使人才市场的发展具有更加广阔的前景。国际化的人才流动和世界范围的人才配置已成为可能。我国加入 世贸组织以后,特别是中国——东盟自由贸易区的建立,国际合作的人力资源开发已提上了议程。
4、人才市场的竞争越来越激烈。首先是我国入世以后,面临着国(境)外人才中介服务机构的竞争,我们当前的市场机制不健全、规模不大、层次不高、服务粗放,与他们竞争处于很不利的地位。其次,在国内也面临着劳动力市场和毕业生就业市场的竞争。
(二)我国的人才服务业经过十多年的发展已取得较大的成绩。主要表现为:
1、人才交流服务机构稳步发展,人才市场的体系框架已基本形成。从种类上分,有区域性人才市场、专业性人才市场和基础性人才市场;从层次上分,既有国家级的,也有省、地级的,还有县、区级的;从存在形态上分,既有集市型的人才市场,又有网上人才市场。截止2003年底,全国共有人才交流服务机构4653家,从业人员28095人,挂牌的人才市场3305家,其中国家级人才市场30家。我区截止2004年底,共有人才流动服务机构104个,挂牌的人才市场96个,其中国家级人才市场两个。
2、人才市场在人才资源配置中的基础性作用不断增强。2003年,全国共举办人才交流大会49490多场次,参会人才2198多万人次,参会单位1900万余家,达成流动协议的590多万人。各级人事部门人才交流服务机构接待流动人员2380多万人次,登记流动的1296万余人次,实现流动的有445万多人。我区2003年政府人事部门所属的人才流动服务机构(人才市场)共举办人才交流会730多场次,进场招聘人才的单位1.7万多家,共接待各类要求流动和求职的人员71万多人次,其中实现就业和达成流动意向协议 的有14.2万多人。
3、人才社会化服务的内容不断扩大,工作水平不断提高。2003年,全国人才服务机构共为46万多家单位代理人事业务,为260多万人提供了人事代理服务,举办各种培训班21000多场次,为190万多人提供了短期培训和学历教育培训;全国共为人才信息计算机数据库28700多个,年访问量达到8.5亿多次。2003年,我区的人才服务机构共为1700多个用人单位提供了人事代理服务,年底累计代管流动人员档案22.3万多份。人才培训、人才测评、人才租赁、就业指导等业务也有较大发展。
(三)人才市场发展中存在的主要困难和问题
1、市场主体尚未完全到位;
2、基础设施较差。有的地方没有场所,有些地方连基本的服务设施都没有;
3、市场功能不完善。如人才评价、咨询指导、市场信息的处理、人才培训、人才流动保障服务等方面的功能尚不完善;
4、机制不健全。市场的供求、价格、竞争等机制,有的未形成,有的不健全;
5、从业人员的素质较低,服务质量不高;
6、管理不规范,法制不健全。
四、人才市场的发展
中央确定我国人才市场发展的目标是:建立和完善机制健全、运行规范、服务周到、指导监督有力的人才市场体系。具体地说,就是遵循市场发展规律,健全与其他要素市场相贯通的人才市场运行机制,主要包括供求机制,竞争机制和价格机制;加强客观调空与监管,建立与社会主义市 场经济体制相适应的比较完善的人才市场管理体制;按照法制建设要求,营造公平透明,竞争有序,规范运作,恪守诚信的市场环境;健全以市场需求为导向,与政府公共服务相配套的专业化、信息化、产业化、国际化人才市场服务体系。
(一)发展人才市场的意义
1、发展人才市场是实施人才强国战略的重要内容。实施人才强国战略的一项重要内容就是优化人才资源配置,充分发挥人才的作用。而发展和完善人才市场是优化人才结构,合理配置人才的重要基础和有效途径。所以说,实施人才强国战略,实现人才的合理流动、合理配置、合理使用,必须发展人才市场。
2、有利于完善社会主义市场体系。前面说过,没有完善的人才市场,社会主义市场体系是不完整的,人才市场的滞后会影响整个社会资源的优化配制和经济体制改革深化。
3、有利于优秀人才的脱颖而出。人才市场贯彻公开、平等、竞争、择优的原则,能有效地避免计划体制下人才选拔配置任用上的诸多弊端,为优秀人才的脱颖而出创造良好的社会氛围。
4、作为我们广西这样人才缺乏的后发达地区,发展人才市场是开发人才资源最有效的途径。目前,我们广西的人才状况是总量不足,布局不合理,有的地方大量积压人才,有的地方则非常缺乏人才。现阶段要解决人才匮乏的问题,当然要培养人才,但培养人才周期较长,远水难解近渴;引进人才,我们又缺乏发达地区的优厚条件,竞争不过人家。只有完善人才市场,盘活区内的人才,实现人才都能人尽其才、才尽其用,是开发人才资源最有效的途径。
5、有利于迎接国(境)外人才中介服务机构的挑战。我国加入世贸组织以后,人才服务业也要对外开放。一些国(境)外的人才中介机构正瞄准我国这一市场,如果我们自己在这方面不发展的话,不仅人才中介服务业的市场被人家占领了,而且我们许多优秀的人才也会随之外流。
(二)发展人才市场的措施
1、提高认识,增强发展人才市场的责任感和紧迫感。培育和发展人才市场是政府赋予人事部门的职责,人才交流服务机构作为具体承担这项工作的机构,责无旁贷。从目前的形势看,我区人才市场的发展已落后于经济社会发展要求,与兄弟省、市比较差距也较大,区外、国外的机构意欲抢占我区的市场。另外,从我们人事部门自身的发展来看,人才市场是我门为经济建设服务的重要阵地。必须抢占机遇、加快发展。
2、深化改革、排除壁垒,推进市场主体到位,创造有利于市场发展的体制环境,完善人才市场机制。当前主要是深化劳动人事制度、社会保障制度和户籍管理制度改革,使用人单位和人才都通过市场机制实现合理配置。
3、完善人才市场服务网络。一是办好基础性人才市场,提高市场覆盖率;二是推动国家级人才市场的发展,充分发挥国家级人才市场的辐射、带动、示范作用;三是大力发展企业经营管理人才和高新技术人才等专业性人才市场,满足高层次人才开发的需要;四是发展农村人才市场,为农村人才的发展和技术交流提供服务。
4、完善市场功能。一是人才中介。包括现场中介、网上中介、委托中介;二是人才流动保障。目前就是我们开展的以人事管理(档案)管理为主要内容的及其相关的服务;三是人事代理服务。包括人事诊断、策划设计、管理咨询和人事事务的代管代办(人事外包);四是人才派遣服务;五是人才培训;六是职业指导;七是人才测评;八是人才信息服务。我们要通过创造性的工作,不断拓展服务范围和领域,不断创新服务的内容和方式。
5、人才服务机构内部应建立有利于自身发展的管理体制和内部运行机制。人才服务机构的工作性质、对象、范围和方式与政府机关是有根本区别的。其管理体制和运行机制,必须切合实际,有利于促进自身的发展。
6、提高从业人员的素质,推动才中介服务机构能力建设。当前人才市场的发展,领导重视,社会认同,客观需要,能否发展起来,关键在人,在于从事这项工作的人。从事这项工作的同志,除了政治上可靠以外,要有开创创新的意识,发奋进取的精神,还要精通业务。人才中介服务机构的工作人员必须是人才专家、人才顾问。因此,我们一定要选好人,同时加强培训,不断提高其素质,要努力提高人才中介服务机构的业务开发能力和经营水平。
7、提高服务质量。一是树立质量意识,明确质量是生命线;二是建立服务质量标准和规范;三是加大相关的训练;四是监督检查,抓好落实。
8、加强管理,规范市场行为,保证人才市场的健康发展。作为政府人事部门要加强对全社会人才市场的规范和管理,通过立法、执法、宣传、教育等措施创造一个公开、公正、公平的市场环境。作为人才中介服务机构,就要加强对交流场所和交易行为的管理。贯彻真实、合法、公平、诚信等原则,保证市场运行的健康、高效。