第2章 Raptor 程序设计基础
本章的学习目标需要解答以下问题:
● 为什么要学习程序设计?
● 程序设计主要经历了那些发展阶段?
● 什么是可视化的程序设计环境?
● 为什么要使用可视化程序设计环境?
● 程序设计那些基本要素?
● 解释性程序与编译性程序的差别是什么?
● 为何选择Raptor 作为程序和算法的可视化工具?
● Raptor 程序设计环境有那些基本概念?
● 如何使用程序设计进行计算问题的求解?
2.1 程序与算法一些基本概念
2.1.1 为什么要学习程序设计?
21世纪是信息和知识经济的时代,计算机的应用十分普及,不懂计算机程序设计,就不能真正理解计算机和在读者从事的工作领域内深入的应用计算机。
计算机应用软件及工具层出不穷,尽管这样在我们的工作通常也要针对具体实际问题对一些软件进行二次开发或需要开发一些适用自己的软件。
除了使用计算机作为生产工具和生活、娱乐的手段之外,对于高等学校的学生,了解计算机科学,使得计算机成为一种可以帮助人们思维的工具。
计算思维由美国Carnegie Mellon 大学计算机科学教授周
以真女士于2006年提出。她认为,计算思维(Computational
thinking )是运用计算机科学的基础概念进行问题求解、系统
设计、以及人类行为理解等涵盖计算机科学之广度的一系列思
维活动。计算思维代表着一种普遍的态度和一类普适的技能,
每一个人都应热心于它的学习和运用(参见图2-1)。
周以真认为计算思维具有以下特征:
(1) 是概念化的抽象思维而不只是程序设计
(2) 是基本的而不是死记硬背的技能
(3) 是人的而不是计算机的思维方式 (4) 是数学和工程思维的互补与融合 (5) 是思想而不是人造品 (6) 面向所有的人和所有地方
(7)
关注依旧亟待理解和解决的智力上极有挑战性并且引人入胜的科学问题。
计算思维吸取了问题解决所采用的一般数学思维方法,现实世界中巨大复杂系统的设计与评估的一般工程思维方法,以及复杂性、智能、心理、人类行为的理解等的一般科学思维方法。
图2-1我们所使用的工具深刻地影响我们的
思考习惯,从而也影响了我们的思考能力。
--埃德斯加·狄克斯特拉
计算思维建立在计算过程的能力和限制之上,由人由机器执行。计算方法和模型使我们敢于去处理那些原本无法由个人独立完成的问题求解和系统设计。
计算思维最根本的内容,即其本质(Essence)是抽象(Abstraction)和自动化(Automation)。计算思维中的抽象完全超越物理的时空观,并完全用符号来表示,其中,数字抽象只是一类特例。
与数学和物理科学相比,计算思维中的抽象显得更为丰富,也更为复杂。数学抽象的最大特点是抛开现实事物的物理、化学和生物学等特性,而仅保留其量的关系和空间的形式,而计算思维中的抽象却不仅仅如此。
2.1.2程序设计主要经历了那些发展阶段?
程序设计是一门技术,也是算法设计的基本工具,需要相应的理论、技术、方法和工具来支持,程序设计主要经历了结构化程序设计和面向对象程序设计的发展阶段,程序设计环境则经历了文本化到可视化得发展过程。
1.结构化程序
1966年,Böhm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种形式结构的程序设计方法。采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护,从而可以提高编程工作的效率,降低软件开发的成本。
1)顺序结构:顺序结构是一种简单的程序设计结构,顺序结构自始至终严格按照程序
中语句的先后顺序逐条执行,是最基本、最常用的结构形式;它是程序设计中的必
备;如图2-1(a)所示。
2)选择结构:又称为分支结构,它包括简单选择和多分支选择结构。如图2-1(b)所示。
图2-1 顺序与选择结构
3)重复结构:重复结构又称为循环结构,它根据给定的条件,判断是否需要重复执行
某一相同功能的程序段。在程序设计语言中,重复结构对应两类循环语句,对先执
行循环体后判断的称为直到型循环结构。如图2-2(a)所示;对先判断后执行的循
环体称为当型循环结构如图2-2(b)所示。
结构化程序设计的优点:
1) 程序的可读性好,易于维护;
2) 提高了编程效率,降低了开发成本
在结构化程序设计的具体实施中,要注意把握如下要素:
vs编程软件1) 使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;
2) 选用的控制结构只准许有一个入口和一个出口;
3) 程序语句组成容易识别的块或子程序,每块或子程序只有一个入口和一个出口;
4) 复杂结构应该用嵌套基本控制结构进行组合来实现;
5) 语言中没有的控制结构,应该采用前后一致的方法来模拟;
2. 面向对象程序设计
客观世界中任何一个事物都可以被看成是一个对象,对象是现实世界事物或个体的抽象表示,抽象的
结果不仅包括事物个体的属性,还包括事物的操作。属性值表示了对象的内部状态。面向对象方法的本质就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域,也就是说,系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。从计算机的角度来看,面向对象就是运用对象、类、继承、封装、消息、结构与连接等面向对象的概念对问题进行分析、求解的系统开发技术。
面向对象方法有以下几个主要优点:
1) 与人类习惯的思维方法一致
2) 稳定性好
3) 可重用性好
4) 易于开发大型软件产品
5) 可维护性好
3. 文本化程序设计环境
许多计算机基础课程中采用的
C 语言程序,是一种典型的文本化程
序设计环境,程序的编辑、调试和
运行过程的数据输入和结果输出采
用文本进行。图2-3显示了Turbo C
的程序编辑环境。
文本化程序设计环境的优点,
对计算机系统要求较低,环境安装
方便,程序的平台通用性好,是大
部分计算机专业课程中进行算法描
述的主要高级程序设计语言之一;
缺点是对初学者作为入门的程序和
算法设计工具有一定的难度。
4. 可视化程序设计环境
什么是可视化程序设计?
可视化(Visual)程序设计是一种全新的程序设计方法,它主要是让程序设计人员利用软件本身所提供的各种控件,像搭积木式地构造应用程序的各种界面。
图2-3 文本化程序设计环境样例
可视化程序设计有哪些优点?
可视化程序设计最大的优点是设计人员可以不用编写或只需编写很少的程序代码,就能完成应用程序的设计,这样就能极大地提高设计人员的工作效率。
目前流行的可视化程序设计环境以微软公司的VS系列产品最为典型。这是由于随着计算机软件工程技术的迅速发展,可视化编程技术已经成为当今软件开发的重要工具和手段,尤其是Visual Basic和Visual C++可视化编程工具等开发工具的出现,大大推动了可视化编程技术的发展和应用(参见图2-4)。
图2-4微软公司的Visual Basic 2010用户界面
可视化程序设计环境有哪些特点?
●可视化程序设计:以“所见即所得”的编程思想为原则,力图实现编程工作的可视
化,即随时可以看到结果,程序的调整与结果的呈现可以同步。
●可视化编程是与传统的编程方式相比而言的,这里的“可视”,指的是减少文本语
句的输入,仅通过直观的操作方式即可完成用户界面的设计工作,例如目前最好的
Windows应用程序开发工具。
●目前主流的可视化编程语言的特点主要表现在两个方面:一是基于面向对象的思
想,引入了控件的概念和事件驱动;二是程序开发过程一般遵循以下步骤,即先进
行界面的绘制工作,再基于事件编写程序代码,以响应鼠标、键盘的各种动作。但
是在算法设计和描述中,此类工具的应用受到一定的条件限制。
2.1.3 为什么要使用Raptor可视化程序设计环境?
Raptor(the Rapid Algorithmic Prototyping Tool for Ordered Reasoning--用于有序推理的快速算法原型工具),是一种可视化的程序设计环境,为程序和算法设计的基础课程的教学提供实验环境。
使用Raptor设计的程序和算法可以直接转换成为C++、C#、Java等高级程序语言,这就为程序和算法的初学者铺就了一条平缓、自然的学习阶梯。
Raptor出现的背景
沙克尔福德和勒布朗(Shackelford and LeBlanc)曾经观察到的在计算导论课程中使用特定的编程语言容易导致学生“受到干扰并从算法问题求解的核心上分散注意力”。由于教师希望学生在上课时间中解决他们觉得最有难度的问题。因此,往往把授课的重点集中在语法上,这是由于大部分学生都会遇到的困难(例如:在C语言环境中,不适当地使用“=”而不是“==”,或放置不当的分号等)。
此外,费尔德(Felder)指出,大多数学生是视觉化的学习者,而教师则往往倾向于提供口头讲授。有的专家研究估计,高校学生中有75%和83%的之间的比例为视觉化学习者。所以对大多数学生来说,由于其高度的文本化,而不是视觉化的性质,无论是传统的编程语言或伪代码提供了一个反直觉的算法表达框架。
在最终用户开发(End User Development)的背景下,菲舍尔(Fischer)等陈述了图形语言优于文字
的好处,他说:“基于文本的语言往往是比较复杂的,因为任何人类语言从无到有,必须从语法和词汇(术语)开始。因此,专为最终用户设计的图形语言表达了编程世界中的包含了通过条件行动规则(condition-action rules)自我训练的图形隐喻。其目标则是通过缩短现实世界中的行动与程序设计之间的概念距离来减少学习上的认知负担。”
RAPTOR,专门用于解决非可视化的环境的句法困难和缺点。RAPTOR允许学生用连接基本图形符号来创建算法。学生然后可以在其环境运行算法,包括单步执行或连续执行的模式。该环境可以直观地显示当前执行符号所在的位置,以及所有变量的内容。此外,RAPTOR提供了一个基于Ada1Graph的简单图形库,。学生不仅可以可视化创建算法,所求解的问题本身也是可以是可视化的。
Raptor作为一种可视化程序设计的软件环境,已经为卡内基.梅龙大学等世界上22个以上的国家和地区的高等院校使用,在计算机基础课程教学中,取得良好的效果。
由于Raptor是一种基于流程图的可视化程序设计环境。而流程图是一系列相互连接的图形符号的集合,其中每个符号代表要执行的特定类型的指令。符号之间的连接决定了指令的执行顺序。由于流程图是大部分高校计算机基础课程首先引入的与程序、算法表达有关的基础概念,所以一旦开始使用Raptor解决问题,这些原本抽象的理念将会变得更加清晰。
我们使用Raptor基于以下几个原因:
•Raptor开发环境可以在最大限度地减少语法要求的情形下,帮助用户编写正确的程序指令。
•Raptor开发环境是可视化的。Raptor程序实际上是一种有向图,可以一次执行一个图形符号,以便帮助用户跟踪Raptor程序的指令流执行过程。
•Raptor是为易用性而设计的(用户可用它与其他任何的编程开发环境进行复杂性比较)。
•使用Raptor所设计程序的调试和报错消息更容易为初学者理解。
•使用Raptor的目的是进行算法设计和运行验证,所以避免了重量级编程语言,如C++或Java的过早引入,给初学者带来的学习负担。。
其他相关的可视化编程环境
事实上,IBM已经认识到可视化编程环境对其产品最终用户的重要性,他们在其WebSphere产品中使用基于流程图开发环境。
瓦茨(Watts)等开发了SFC,一种结构化流程图编辑器。SFC允许用户开发的流程图,并始终在显示流程图的同时显示C或Pascal类似程序语法的文本。然后用户可以复制和粘贴文本到另一个文本编辑器中进行做出修改,以获得完整的程序。
卡奥尼和巴格特(calloni and Bagert)开发的一个图标式的编程语言,BACCII+,这是作为C++到补充在应用在大学的计算机基础课程序列中的。他们的实验表明,学生使用BACCII+和C++两者的表现比使用那些只有C++的要好。一旦程序开发完毕,用户可以生成任何一个基于文本的语言(包括Pascal和C + +代码)。
FLINT程序消除文本代码必须调试的缺陷。使用FLINT,学生需要进行一次自上而下的程序分解,然后为实现每个子目标而设计流程图。流程图可以在FLINT中执行。这迫使学生使用软件工程中的瀑布模型],而实际上学生在使用增量或螺旋方式开发可能有更多的
1Ada是一种大型通用程序设计语言,它是现代计算机语言的成功代表,集中反映了程序语言研究的成果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论