NCRE二级VFP机试逻辑陷阱分析和思考.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NCRE二级VFP机试逻辑陷阱分析和思考

NCRE二级VFP机试逻辑陷阱分析和思考   文章编号:1672-5913(2008)20-0148-03   摘 要:本文简要介绍了当前VFP教学和NCRE考试的现状,通过具体实例详细阐述NCRE二级VFP机试中部分逻辑陷阱,探讨VFP教学的特点,并由此深入分析如何及时发现并避免犯错。   关键词:NCRE;VFP;逻辑陷阱;实践教学;数据校验   中图分类号:G642 文献标识码:B      全国计算机等级考试(National Computer Rank Examin-   ation,简称NCRE)是由教育部考试中心主办,面向社会考查计算机应用知识与能力的全国性计算机水平考试体系。NCRE二级证书是具有基本计算机使用能力的社会通用标准,是职务晋升、职称评定、岗位竞聘的重要依据。VFP是NCRE二级考试语种之一,由于部分VFP上机考题中隐藏了很深的逻辑陷阱,所以它成了阻碍获取证书的主要因素,因此认真分析考题、反复校验结果来避免落入逻辑陷阱已经成为数据处理的基本方法。      1 VFP教学和考试现状简介      1.1 VFP教学现状   数据库技术是计算机专业的基础课程之一,它所研究的问题就是如何科学地组织和存储数据,如何高效地获取和处理数据,如何更广泛、更安全地共享数据。VFP是目前最流行的数据库管理系统之一,是一种支持面向对象程序设计的可视化高级程序设计语言,是大学非工科专业学生必修的计算机课程,也是目前NCRE二级报考人数最多的语种。   1.2 VFP二级考试特点   报考VFP的绝大部分是非工科的考生,他们普遍缺乏计算机编程思维,部分考生在考试结束后自我感觉良好,最终却没有通过考试,除了粗心大意犯低级错误以外,如何及时发现并避免逻辑错误成为能否通过考试的重要因素。   在VFP二级考试中,SQL语句占了很大的比例,部分考题在需要用SQL语句处理的综合大题中设置了很多逻辑陷阱。很多同学很容易落入陷阱,原因是这部分同学均用固定的思维去解题,没有深入理解知识点,再加上逻辑错误不像语法错误那样有错误提示,往往他们会认定初步得到的结果一定会是正确结果。但是在部分有逻辑陷阱的考题中,初步求出的结果并非正确的结果,这种解题思路很不科学。下面,我们用两个具体实例来加以说明。      2 实例及其逻辑陷阱分析      实例一:在选课表Sc.dbf(见图1)中查询既选修了kc0001课程,又选修了kc0002课程的学生的学号。      图1 选课表Sc.dbf      从题意经过初步分析,考生会认为这是一个对课程求条件的逻辑“与”关系,由此运用平时所学知识马上就可以得到以下代码:   select 学号 from Sc where 课程号=kc0001 and 课程号=kc0002   执行这段代码的结果是一个空表,即没有一个学生同时选修了kc0001和kc0002这两门课。然而,回头再去仔细地去观察一下选课表Sc,从表的第一条和第二条记录发现学号为“010303”的学生明显同时选修了kc0001和kc0002这两门课,所以这是一段有逻辑陷阱的错误的代码,如果不仔细校验分析的话,很有可能会落入一个事先设计好的逻辑陷阱中。下面再来分析一下代码的执行过程,在VFP的查询过程中记录指针是从第一条记录扫描到最后一条的,当记录指针指向第一条记录时,条件“课程号=’kc0001’”满足,但是条件“课程号=’kc0002’”并不满足,两个条件只满足一个,不符合代码中的and“与”条件,所以没有查询结果;同理,记录指针扫描到第二条时也只满足“课程号=’kc0002’”这一个条件,同样会没有查询结果。于是学号为“010303”的这个同学就被忽略掉,所以这种解题思路是完全错误的。正确的解题思路是分别查找出选修了kc0001和kc0002这两门课的学生,得到两个查询结果集合,如果有一个学号同时在两个集合中出现的话就证明这个学生一定选修了这两门课。具体可以用以下这个SQL嵌套语句来实现以上思路:   Select 学号 from sc where 课程号=kc0001 and 学号 in (select 学号 from sc where 课程号=kc0002)   运行以上代码,查询得到学号为“010303”的这个同学满足考题要求。   实例二:用SQL语句查询订单表Orders.dbf(见图2)中每个职工所经手的具有最高金额的订单信息。      图2 订单表Orders.dbf      对于这个考题,首先会想到将所有数据按职工号进行分组,然后在每个小组内利用最大值函数max()求出小组内最高金额的相关记录信息,经过简单的分析,写出下列代码:   select 职工号

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档