用Alice学编程 (原书第2版)
作者 : Wanda P. Dann  Stephen Cooper  Randy Pausch 著
译者 : 付永刚 译
出版日期 : 2009-07-01
ISBN : 978-7-111-27462-9
定价 : 39.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 265
开本 : 16
原书名 : 用Alice学编程
原出版社: Pearson Education Asia
属性分类: 教材
包含CD :
绝版 :
图书简介

本书介绍的Alice系统将以一种全新的、更有乐趣的方式教你学习编程,避免了传统编程方式中程序语言的语法、编译连接时的错误处理等令人困惑的一系列问题。
Alice系统是面向对象编程教学的一个突破:在Alice中,所有的对象都是直观可见的,它们被具体化为三维的人、动物、家具等。这些对象的状态可以通过调用如“向前走1米”或“向左转1/4圈”这样的方法来改变的,这些方法对学生来说都是简单易懂的。计算的过程是以动画的方式,通过改变对象的状态来表现的,很难想出比这种表达概念和计算过程更自然的表达方式了。Alice的优点之一就是它把抽象的概念用形象的方式呈现给初学编程的人。

图书前言

“一本书如果没有插图和对话还有什么用呢?”Alice想到。
本书及配套的Alice系统采用一种创新的方式来介绍程序设计入门课程。过去的30年里,
这些课程对学生来说是相当头疼的,但其教学方式却几乎没有创新。我们用这种全新的教学
方式的目标就是让传统的编程概念更容易讲解和接受。Alice系统是免费的,可以在网站
www.alice.org下载。
程序设计课程应该教些什么
许多人都讨论过这个问题,大部分人都认为学生通过这门课程应该学到以下内容:
算法式的思维及表达方式:能够读写一种正式的编程语言。
抽象能力:能简单表达复杂的概念,并有逻辑性地分解一个问题的能力。
尽善尽美:认识到虽然解决一个问题有多种方式,但肯定有一些是更好的。
我们的教学方式有什么不同
我们的教学方式是让学生创作电影和游戏,通过这种方式让程序中“对象”的概念变为
切实可见的三维物体。在Alice中,屏幕上的物体构成了一个微型的三维世界。学生用鼠标在
编辑器中拖放程序的组成元素(if/then语句、循环、变量等)来编程,能避免语法错误。
Alice是一个功能强大的现代化编程环境,支持方法、函数、变量、参数、递归、数组和事件。
我们用这个强大的可视化环境来辅助“对象先行”(object-first)或“对象早行”(object-early)
的教学方式(在ACM和IEEE2001年关于计算机专业课表的研究报告中有述)。在Alice中,每
一个对象都是一个实实在在可见的物体!我们在本书开始的章节中就会介绍对象的概念。
我们认为,在程序设计入门课程中必须解决以下四个问题:
1) 编程中零散易错的规则,尤其是语法。Alice的编辑器根除了让学生头疼的语法错误问
题,它让学生建立起对语法的直观认识,每当拖拽一个程序元素到编辑器中时,所有有效的
匹配位置都会高亮显示。
2) 程序运行时不能看到计算结果。虽然文本式的调试器和变量监视器比没有它们要好
一点,但在Alice中,程序中的状态在本质上就都是可见的。从某种意义上说,我们是把学
生的心理负担从认知系统转移到了感知系统。对学生来说看到一个物体向后运动而不是向前
运动,比观察一个“sum”变量是减少而不是增加要容易得多。Alice让学生可以看到动画
程序怎样运行,这样就能在程序结构与表现的动画之间建立一种简单易懂的关系。现在的学
生的生活中充满了交互式的三维图形,我们希望直接利用这一点,而不是强加给他们这种学
习方式。
3) 缺乏编程动力。多数学生学习程序设计的入门课程仅仅因为学校的要求。没有什么能
比一个好老师更能激发学生的动力,但一个好的学习环境的确会有很大帮助。对使用Alice的
学生的一项调查研究表明,相比那些用传统方式学习的学生而言,使用Alice的学生会去做更
多的练习,也倾向于去学习第2门程序设计课程。关于Alice的早期版本我们收到最多的意见就
是希望能分享他们的成果,因此我们已经添加了在网页内运行Alice的新功能,以便学生把程
序发布到他们自己的网页上。在使用Alice之后所有学生的编程动力都有所提高,尤其是在女
同学身上我们看到了非常令人鼓舞的结果。
4) 理解复合逻辑与学习设计技巧的困难。Alice环境当然鼓励你去创建小规模的方法和函
数。更重要的是,Alice把程序设计类比为电影创作的过程,这样,我们可以借鉴其中故事板
的概念,而学生们可以把它理解为一个设计好的电影制作过程。我们用简单的草图和屏幕截
图来说明程序设计技巧,而建议使用文本式的故事板,逐步细化最终设计出程序的伪代码。
如何使用本书
当然,使用本书的老师可以选择最适合自己的方式来授课。下面列举了我们能想到的四
种方式:
作为短期或长期程序设计课程唯一的教科书。这种方式的结果是学生在期末时能够写
出相当复杂的程序(如300行)。这门课程可能适合那些非计算机专业的学生,只是想学习
程序设计而不需要学习一种具体的程序语言。它也可以作为准备选择计算机专业但之前缺
乏编程经验的学生的预备课程。在一个国家自然基金项目(NSF-0126833)研究中我们发
现,那些没有或有很少编程经验的人直接去学习第一门程序设计课程(如CS1)时都会有相
当的受挫感,而以Alice作为第一门程序设计课程的预备课程(pre-CS1)时,这种情形就有
很大改善。
作为传统的“程序设计入门”课程的第一部分,例如CS1。Seymour Papert开发的Logo语
言和Rich Pattis开发的Karel the Robot系统都采用了这种教学方式,它们给了我们很大启发。
不同的是,Alice的功能很强大,这使它可以作为几个学期的学习工具(如Carnegie Mellon大
学计算机专业的高年级学生通常会用Alice写出3 000行左右的程序)。然而,许多程序设计的
入门课程不仅要介绍程序设计的概念,同时还要学生用传统的编程语言如Java写程序。而先
学习Alice,学生就可以先熟悉程序设计中的基本概念,然后当过渡到一门具体程序语言中详
细的语法规则时,他们就能很快掌握。Alice中也可以用类似Java语法的方式显示代码,如图
P-1-1所示。
作为“计算机文化”课程中程序设计的部分。在许多学校,计算机文化课程都是向非计
算机专业的学生很宽泛地介绍关于计算机或信息技术的内容。大部分这类课程都去掉了程序
设计的部分,更像是去学习电子表格和字处理等办公自动化软件的实验课。Alice作为计算机
文化课程中程序设计的部分有较大潜质。
作为高中“程序设计入门”课程的教材。在高中,有趣的能激发学生学习动力的环境是
老师最好的朋友,在这里Alice有更大的发展空间。这本书可以作为某门课的一部分,或者是
为高考而作计算机类课程的预备学习。

上架指导

计算机\多媒体

封底文字

本书介绍的Alice系统将以一种全新的、更有乐趣的方式教你学习编程,避免了传统编程方式中程序语言的语法、编译连接时的错误处理等令人困惑的一系列问题。
Alice系统是面向对象编程教学的一个突破:在Alice中,所有的对象都是直观可见的,它们被具体化为三维的人、动物、家具等。这些对象的状态可以通过调用如“向前走1米”或“向左转1/4圈”这样的方法来改变的,这些方法对学生来说都是简单易懂的。计算的过程是以动画的方式,通过改变对象的状态来表现的,很难想出比这种表达概念和计算过程更自然的表达方式了。Alice的优点之一就是它把抽象的概念用形象的方式呈现给初学编程的人。
书中包含丰富生动的示例、练习,很容易激发学生的兴趣。本书可作为大学计算机、数字媒体、动漫等专业学生程序设计课程的入门教材,也可供对编程感兴趣的其他专业学生参考。
读者可以登录华章网站(www.hzbook.com)下载Alice的安装包和模型库http://www.aliceprogramming.net/。使用本书授课的教师还可以下载书中的例子文件、不同授课时长的课表安排及每周的讲义(ppt)、考卷范例及答案等。

图书序言

编程的入门课程一直都是让学生最头痛的,最近又有把面向对象的编程放在第一学期的
趋势,这更是加重了学生的学习负担。近期的调查表明,选择计算机专业的学生人数下降了
23%,这真是让人担忧。我们不该让学生在刚刚接触编程时就给他们不必要的打击。
Alice系统是面向对象编程教学的一个突破:在Alice中,所有的对象都是直观可见的,它
们被具体化为三维的人、动物、家具等。这些对象的状态可以通过调用诸如“向前走1米”或
“向左转1/4圈”这样的方法来改变,这些方法对学生来说都是简单易懂的。计算的过程以动画
的方式,通过改变对象的状态来表现,在表达概念和计算过程时很难想出比这种方法更自然的
表达方式了。Alice的优点之一就是能把抽象的概念用形象的方式呈现给初学编程的人。
老师们都知道,如果学生没有学习动力,任何教学方法和教学技巧都将毫无用处,只有
学生有内在动力时才能达到最好的效果。虽然可以采用奖励和惩罚的方式(如分数)来激发
学习动力,但Alice使用的却是一种更直接的激励方式:它用讲故事的方式来讲授程序设计,
这对所有人都很有吸引力,就像在洛杉矶每个人都会说:“人人都想当导演”。
以三维图形作为创作手段,Alice系统能让那些玩游戏和看皮克斯动画片长大的年轻人很
容易接受它,把计算机程序设计比喻成讲故事的过程,是少数几个能让大一新生迅速理解程
序设计概念的方式之一。
配合一些高级概念,如直观可见的对象,同时受到Squeak系统中编辑器的启发,Alice设计
了一个拖拽式的用户界面,使用它学生可以在屏幕上拖动程序中的组件而不会出现语法错误。
有些人说Alice是近20年来面向计算机入门课程的最有创新性的系统之一,而且它来得正
是时候!
Alan Kay
Kay博士是最早研究面向对象编程、个人计算和图形用户界面的先驱之一。他曾获得美国
国家工程院颁发的德雷珀奖(与Robert Taylor、Butler Lampson和Charles Thacker一同获奖)、
美国计算机协会颁发的图灵奖和日本稻盛基金会颁发的京都奖。

译者简介

付永刚 译:暂无简介

译者序

2001年,我由于师从戴国忠老师学习人机交互而了解到Randy Pausch—Alice项目的负
责人,同时也是CMU娱乐技术中心(ETC)和Stage3实验室的创始人之一,他领导的团队致
力于创新的三维交互技术及其应用研究。十余年来,Alice从最初的虚拟场景快速原型工具,
逐步演变成为了一个面向程序设计入门课程的教育软件。在美国大概有300多所大学采用这种
简单有趣的方法来讲授程序设计中的基本概念,甚至有不少高中也在用它进行初级的逻辑思
维训炼。在其他国家,越来越多的教育机构也开始使用Alice开设程序设计入门的课程。
我一直觉得将Alice引入到现在的教学体系中是一件很有意义的事情。在成为一名教师后,
这种愿望更加强烈。2006年和2007年,我尝试着在多媒体技术基础课程的实验中,简短地介
绍Alice。有趣的是,我所执教的班级女生偏多,学生对Alice表现出了极大的兴趣。2008年,
我尝试着给全院的大一新生开设程序设计基础的课程,借鉴国外的教学内容和方法,用Alice
来讲解概念,而不是某种计算机语言。令人鼓舞的是,在每周2个小时的上课时间内,绝大部
分学生都能乐在其中,全神贯注地创作自己的“作品”。接下来的学期,当他们继续学习C和
C++语言时,接受程度和学习效果都有很大提升。
从我个人的一点经验来看,把Alice纳入现有信息类专业的课程体系中,最佳的时间是第
一学期,因为它既能调动学生的学习积极性,又能避免由于语法和开发环境的原因而影响对
核心概念的学习。在讲授方式上,我不太赞同对象早行(object-early)和对象先行(objectfirst)
的观点,而觉得应该采用Y. Daniel Liang教授在《Introduction to Programming Using
C++》一书中所用的基础先行(fundamental-first)的方法,即先介绍程序设计的基本概念和
方法,如控制语句、循环、函数、数组以及逐步细化的设计方法等,然后再介绍面向对象的
设计方法。程序设计的本质实际上是问题求解,不具备基本的问题分析和程序设计能力的学
生是不可能学好面向对象的设计方法的。
除了能够纳入现有信息类课程体系中以外, Alice还可作为其他专业的学生普及计算机知
识的教学工具,甚至是为中学生开设的一门计算机课程。
关于Alice软件的几点说明
Alice并不是一个面向对象的编程语言,而是用面向对象的语言(Java)开发的交互式虚
拟场景创作工具。Alice并不能用来讲解面向对象设计中的核心概念:封装、继承和多态性。
Alice并没有实现严格意义上的封装,即没有访问控制;它所实现的继承也很有限,父类的改
变并不会影响子类;它更没有实现多态性。即便如此,Alice依然是一个优秀的讲解程序设计
和面向对象概念的教学软件,它是一种把程序可视化的方法。Alice甚至直接提供了数组可视
化对象来形象地表现数组的操作原理。Alice还可以作为一个动画或者游戏的快速原型工具,
基于丰富的模型库,用鼠标拖拽就可以迅速表达设计创意和程序过程。
关于翻译风格
本书保留相当分量的英文术语,经常中英并陈。一方面,对于一些关键的程序设计概念,
如函数、递归、数组、类等词语保留英文可以方便学生转向某种程序设计语言(如C、C++、
Java)时不至于感到陌生;另一方面,由于Alice软件目前还没有中文版,其用户界面和代码
中皆用英文表述,因此保留英文词语以方便学生查阅。本书还有诸多地方采用这种方式,意
在告诉读者,译者深知自己的不足与局限,惟恐造成读者对中译名词的误解和不习惯,所以
附上原文。
为保证插图质量,文中绝大部分插图都用Alice 2.0实际操作后截图得到,同时修正了原文
中的几个错误。
最后,我要特别感谢我的学生白浩,他完成了本书初稿并验证了每章的练习和工程,为
了让译稿更加符合中国人的阅读习惯,他花费了很大精力反复校对和推敲。我还要感谢我去
年刚刚执教过的学生:张贞艳、张玢玢、朱枝红和丁伟峰,他们重新制作了全书的插图。
付永刚
2009年6月8日
北京语言大学

图书目录

译者序

前言
致谢
第一部分Alice简介
第1章 Alice入门 2
1.1 Alice简介 2
1.2 Alice中的概念 6
提示与技巧1 特效:文本与二维图像 12
小结 14
练习 15
第2章 程序的设计与实现 17
2.1 剧情与故事板 17
2.2 第一个程序 22
提示与技巧2 方位指令与运动指令 33
小结 41
练习 43
第3章 编程:把代码片段集中到一起 45
3.1 内置函数与表达式 45
3.2 简单的控制结构 49
提示与技巧3 相机和动画的控制 56
小结 59
练习 60
第二部分 面向对象和事件驱动编程的概念
第4章 类、对象、方法和参数 64
4.1 全局方法 66
4.2 参数 73
4.3 类级方法与继承 81
提示与技巧4 可见和不可见对象 91
小结 96
练习和工程 97
第5章 交互:事件和事件处理 106
5.1 交互式编程 106
5.2 参数和事件处理方法 111
提示与技巧5 创建你自己的人物模型 118
小结 120
练习和工程 121
第三部分 使用函数和控制语句
第6章 函数和If/Else语句 130
6.1 函数 130
6.2 用If/Else及布尔函数控制程序执行 136
提示与技巧6 随机数和随机动作 146
小结 148
练习和工程 150
第7章 确定循环和条件循环 159
7.1 Loop 159
7.2 While—条件循环 164
提示与技巧7 事件和循环 168
小结 170
练习和工程 171
第8章 递归 177
8.1 递归简介 177
8.2 另一种形式的递归 181
提示与技巧8 工程学角度的观感 190
小结 192
练习和工程 193
第四部分 高级主题
第9章 列表和列表处理 200
9.1 列表 200
9.2 列表搜索 205
提示与技巧9 姿势 208
小结 209
练习和工程 210
第10章 变量和继承的再探讨 214
10.1 变量 214
10.2 在可视化数组对象中使用索引变量 223
提示与技巧10 使用监视和文本输出进行调试 229
小结 232
练习和工程 233
第11章 接下来学什么 237
附录 241
附录A:使用Alice 241
附录B:Alice界面操作 257

教学资源推荐
作者: (美)William Stallings 著
作者: 赵淑芬 主编周斌 康宇光 副主编
参考读物推荐