
前言
欢迎阅读本书。作者创作本书的动机是为两年期“因特网服务程序设计”学习过程中的“因特网程序设计Ⅰ”课程提供适当的学习资料。在完成两年Web开发课程之后,学生必须熟悉客户端和服务器端脚本语言。尽管有许多很好的关于静态网页开发技术(HTML、XHTML、HTML5和CSS)的书籍,但涉及JavaScript的书籍要么过于繁琐要么远超出两年期学习计划。因此本书设计成满足入门级程序员的需求,使他们能够很自然地使用JavaScript并且理解它与服务器端技术的交互性。
本书可用于为已了解HTML和CSS知识的学生开设的一学期“JavaScript程序设计”课程。本书程序设计基础部分强调把程序设计概念应用于JavaScript和PHP中,适用于从来没有或者略有编程经验的学生。每个概念都通过简短的例子来帮助读者加深对概念的理解,短例后面紧跟着面向实际环境的较长例子。
两个案例研究贯穿全书:一个游戏网站和一个教学网站。每章都有一节为这两个案例研究增加内容和功能,并且学生可以在每章末尾的编程挑战中补充内容。另外两个网站(一个是园艺公司网站,另一个是珠宝公司网站)也可以从零开始建立,并且学生可以在编程挑战中增强它们的功能。老师可以根据要求调整这些内容。
本书假定学生已经学过HTML和CSS,并且是创建静态网页的好手。然而,不要求学生有编程经验,也不要求学生具备数学、财务或其他学科的特殊知识。当最后一章使用SQL命令时,不要求学生已经接触过SQL或数据库。
本书组织
本书从第0章[1]计算机基础开始,随后第1章着眼于JavaScript程序设计入门的一般概念。第1章介绍贯穿全书的案例研究,但本书各章的案例研究是相互独立的,可以单独使用。第2章介绍变量、操作符和数据类型。对于那些从来没有学习过程序设计课程和熟悉程序设计概念的学生来说,这几章是非常重要的。理解网页和JavaScript代码之间的交互性是JavaScript最基本的重要特征之一。
第3~5章学习JavaScript基本控制结构,即顺序、选择和重复。没有编程经验的学生将学习这些语句结构一般是如何工作的,特别是在JavaScript中。有编程经验的学生可以快速阅读这几章。
第6和7章是JavaScript独有的,包含表单、函数和外部JavaScript文件。由于大多数学生已经在静态网页中使用过表单,所以这里以与JavaScript程序对接的方法讨论表单。
第8和9章包含数组和几种高级搜索与排序技术,这两章连同后面的三章最适合具有牢固编程基础的学生。
第10章讨论文档对象模型并介绍XML,第11和12章介绍PHP。学完这三章后,学生将能够开发使用数据库处理数据的网站。学生可以使用免费程序XAMPP在计算机上建立一个含有MySQL和PHP软件的Apache服务器。本书将详细介绍这个软件的操作方法。不需要具备MySQL或数据库知识,学生可以借助给出的MySQL命令建立使用数据库、服务器和PHP的实际环境,从而创建一个动态网站。
每章都有很多例子。自始至终,例子、检查点和练习的难度依次从最基本的概念理解提高到非常有挑战性的实际应用。每章包含一节 操作实践,在此开发案例研究网站Greg's Gambits和Carla's Classroom。在每章末尾的编程挑战部分,要求学生对这些案例研究进行补充。如果从本书开始学习到结束,开发的这些案例研究将建成健壮的网站。编程挑战还包含另外两个案例研究,即Lee's Landscape和Jackie's Jewelry网站,学生将完全靠自己建立这两个网站。本书在编程挑战部分为Greg's Gambits和Carla's Classroom项目提供了很多帮助,而为Lee's Landscape和Jackie's Jewelry项目只提供了很少的帮助。老师可以决定学生完成这些项目的独立程度。
练习部分包含填空题、判断题和简答题,而在编程挑战部分学生能够使用相应章节学习的知识创建自己的网页。
各章简介
格式说明
本书通过使用不同的字体来区分程序代码,变量和数组名是粗体。有时某些代码必须单行录入,但是限于纸张大小不可能完整地把这些代码显示在一行,因此使用符号表示下一行代码应该是上一行的一部分,这个符号不应该包含在内。如果没有符号
,那么下列样例代码应该录入在同一行。注意,其中的变量dinner是粗体:
第1章 本章介绍程序设计和JavaScript,讨论程序设计的一般问题解决策略以及程序的基本结构和3种控制结构,讨论用伪代码和流程图规划程序以及数据类型,引导学生在网页中创建JavaScript脚本,讨论对象、点标记以及几个重要的JavaScript方法和事件,介绍Greg's Gambits和Carla's Classroom网站并使用JavaScript为这些网站创建交互页面。
第2章 本章着眼于变量、JavaScript数据类型和操作符(包括算术、关系和逻辑操作符),解释类似JavaScript的弱类型语言和强类型语言的区别,讨论连接操作符的使用和JavaScript对用户输入数字的处理方法,讨论条件操作符从而使学生在不会使用选择结构的情况下创建有趣的页面,讨论操作符优先级和ASCII码。学生要为Greg's Gambits网站创建填字游戏并为Carla's Classroom网站创建拼写课。
第3章 本章讨论判断(选择)结构(包含单路、二路和多路分支结构)。介绍switch语句、验证方法和Math对象,使用嵌套选择结构和复合条件开发程序。学生可以使用Math.random()方法创建有趣的程序,要为Greg's Gambits创建幸运预言程序并且为Carla's Classroom创建一门算术课。
第4章 本章从重复结构开始,着眼于基本的循环结构:前测、后测循环,哨兵控制循环,计数器控制循环以及用于数据输入和数据验证的循环。循环语句包括while循环、do...while循环和for循环。学生要为Greg's Gambits创建一个信息编码器并且为第3章创建的Carla's Classroom算术课增加很多功能和深度。
第5章 本章进一步探讨第3章和第4章涉及的重复结构和选择结构,通过使用Math对象的一些方法介绍总数和平均数的计算方法,深入探讨嵌套结构(包括循环中的选择结构、循环中的循环和选择结构中的循环)以及台式检查。介绍提前退出循环的各种方法。学生要为Greg's Gambits创建一个战斗游戏(石头-纸-剪刀游戏的变种)并且为Carla's Classroom创建语法课。
第6章 大多数学过网页制作课程的学生已经处理过表单,然而本章的目的是让学生熟悉用JavaScript处理表单。由于网页制作课程已经讨论过基本的表单控件(单选按钮、复选框、文本框、文本区框、选择列表)以及隐藏字段和特殊控件(密码元素、提交和重置按钮),因此本章着眼于把表单数据返回给JavaScript程序,然后这个程序可以使用这些数据并且把其他信息返回给网页或者通过电子邮件把信息发送给用户。学生要为Greg's Gambits网站用户创建一个物品目录页面,并且为Carla's Classroom网站的Carla生成一份将发送给学生父母的学习进度报告。
第7章 本章包含函数、对象和JavaScript源文件,讨论内置和自定义函数,包含变量作用域、使用实参和形参、值参数和引用参数、按引用传递与按值传递,介绍新的对象(Boolean对象和Date对象)并且提供Math对象的更多信息,介绍创建和使用外部JavaScript源文件。学生要为Greg's Gambits创建一个悬吊人猜字游戏,并且为Carla's Classroom创建阅读理解课。
第8章 本章是着眼于数组的两章中的一章,讨论作为JavaScript对象的数组概念(包含一维数组、二维数组和平行数组),讨论装载数组的不同方法以及几个添加和删除数组元素的JavaScript数组方法。学生要为Greg's Gambits创建一个数字拼图游戏15,并且为Carla's Classroom创建一个幻灯片放映。
第9章 本章基于第8章,讲解排序和搜索数组,讨论JavaScript的sort()和reverse()方法。为了维护平行数组的完整性,开发其他搜索和排序方法,包括两个排序算法(冒泡排序和选择排序)、两个搜索算法(线性搜索和二分搜索)以及一些实施搜索的JavaScript方法。学生要为Greg's Gambits创建一个拼字游戏并且为Carla's Classroom创建因数分解课。
第10章 本章从JavaScript转到相关主题,讨论文档对象模型(DOM)和XML,讨论DOM节点和树的概念以及网页的父子模型,讨论用DOM技术创建、插入、删除和替换元素以及使用DOM方法创建定时器。本章还介绍了XML、XSL、命名空间和模式。在为Greg's Gambits创建页面时,结合使用XML和JavaScript是显示数据的另一种替代方法,结合使用XML和JavaScript为Carla's Classroom创建拼写课。
第11章 这是两章PHP相关内容的一章。要使用PHP,学生必须能够访问服务器。本章向学生介绍XAMPP的安装和使用方法,它是一个包含Apache服务器、PHP和MySQL的免费程序,并且能够安装在任何个人计算机或笔记本电脑上。本章讨论PHP基本知识,包括PHP文件名、如何访问Apache服务器的文件、PHP数据类型、PHP操作符和PHP关键字,介绍PHP的基本程序结构(包括顺序、选择和重复)与PHP数组和字符串,强调在服务器上为网站创建适当的文件夹结构。学生要使用PHP为Greg's Gambits创建欢迎页面,并且通过使用ajax_post()函数让用户向服务器发送和返回数据。学生还要使用PHP为Carla's Classroom创建一个页面,让用户输入部分名字然后程序显示一个大数组中的所有条目或者以那些字符开头的列表(也就是说,程序为用户提供可用选项并最终能够用于自动完成用户录入)。
第12章 本章在第11章介绍PHP的基础上示范如何完成两个特别而又重要的任务,讨论创建和读取Cookie,指引学生使用phpMyAdmin控制台创建数据库(它是XAMPP安装的一部分)。然后,使用PHP方法填充数据库。因为本书不包括MySQL的学习并且不要求学生具备数据库管理和MySQL知识,所以本章给出开发程序所需要的所有MySQL命令和语句,并且给出解释。这样,学生就能够为想要成为Greg's Gambits游戏网站成员的玩家创建和验证账户。学生也要为Carla's Classroom创建一个数据库,并且从数据库中提取信息从而向学生父母发送一封电子邮件报告。
附录A 列出可打印和不可打印的ASCII字符,每个字符有对应的十进制数和十六进制数编码。
附录B 列出算术操作符、关系操作符和逻辑操作符(如本书所用)以及操作符优先级表。
附录C 列出最常见的HTML实体,包含表示HTML保留字的实体。
附录D 列出下列对象的属性和方法:Array、Boolean、Date、Math、Number、String和RegExp,并列出JavaScript全局属性和函数。
附录E 解释jQuery概念、如何在网页中包含它、在哪里获取它、如何存储它以及jQuery函数的一个简短样例。
附录F 列出最常用的DOM属性、方法和事件以及3个重要的节点属性。
附录G 列出PHP保留字和关键字以及PHP预定义常量。
附录H 列出包含本书使用的常用PHP MySQL函数。
附录I 列出本书检查点的答案。
本书特色
例子
本书有超过235个已编号的可运行例子。所有程序代码行都标注了行号,并且通过引用行号详细解释每个例子的代码。展示的所有代码已经测试过,如果学生复制和运行这些例子,程序将正常运行。截屏展示相应的运行结果。
检查点
在每节末尾有5~10题检查点练习,以强化最重要的概念和编码技能。检查点的答案在附录I中。
操作实践
每章的最后有一节是操作实践,用于开发和扩展两个网站。Greg's Gambits是一个游戏网站,学生将在每章为这个网站逐步创建新的游戏或特征。Carla's Classroom是为一位小学老师开发的网站,学生将在每章为这个网站逐步创建老师可以在课堂中使用的课程或特色。本书为这两个网站开发了完整代码,并且在复习与练习中扩展这些网站的内容。在复习与练习的编程挑战一节包含一些练习,要求学生为Greg's Gambits创建新游戏或者为Carla's Classroom创建新课程。这些任务是操作实践工作的延续,但是可能有新的要求。在编程挑战中,为Greg's Gambits引入的概念将用于Carla's Classroom的新项目,Greg's Gambits的新项目将利用Carla's Classroom的概念和技能。因此,如果指导老师从本书开始到结束跟随开发其中的一个网站,那么将能够帮助学生创建一个包含所有重要概念和技能的实际项目,也就是创建一个健壮的实用网站。
操作实践一节按如下方式组织:学生可以使用提供的代码实施项目,并且在编程挑战中自己创建类似而又有所扩展的代码来扩展知识和技能。
在Student Data Files中包含这些项目需要的所有文件,如图像、文本文件等。
练习
每章包含从简单到复杂的40多道练习题,这些练习题分为以下几类。
·每节末尾的检查点测试学生对这一节内容的理解程度。
·每章末尾的练习包括:
·填空题
·判断题
·简答题
·编程挑战:
·使用本章概念创建简短网页。
·扩展操作实践创建的网页,或者为Greg's Gambits和Carla's Classroom增加新内容。
·从零开始建立两个公司网站Lee's Landscape和Jackie's Jewelry中的一个,每章增加一点内容。
检查点的答案放在附录I和网站www.pearsonhighered.com/irc中。Student Data Files提供复习与练习中奇数编号的答案,包括编程挑战中的参考答案并提供完整的必要代码。在Student Data Files中包含要完成任何项目需要的所有文件,包括图像、JavaScript源文件和文本文件等。
辅助资料
学生支持网站
学生可以从本书英文版的配套网站(www.pearsonhighered.com/drake)下载以下多种可用的资料:
·每章的幻灯片讲稿。
·所有检查点的答案。
·所有原版书奇数编号练习的答案。
·视频课件。
·所有例子、操作实践和练习需要的图像、文本文件和其他外部文件。
教师辅助资料
Pearson教师资源中心为有资格的老师提供多种辅助资料,包括:
·每章的幻灯片讲稿。
·所有检查点的答案。
·所有练习的答案,包括奇数编号和偶数编号。
·一些编程挑战的解决方案。
·各章所有的例子、练习和检查点需要的HTML、JavaScript、XML和PHP程序。
·视频课件。
·所有例子、操作实践和练习需要的图像、文本文件和其他外部文件。
·各章试题库。
要获取这些资料,可以访问网站www.pearsonhighered.com/irc或者与Pearson Education销售代理联系[2]。
致谢
正如没有最恰当的方法教程序设计一样,也没有最恰当的方法写程序设计的书。在写作本书时,我很幸运得到了以下经验丰富的老师提供的不同观点和很多有帮助的建议:
Brenda Terry,富勤顿学院
Leong Lee,奥斯汀佩伊州立大学
Dave Wilson,帕克兰学院
Tony Pittarese,东田纳西州立大学
Dave Sciuto,马萨诸塞大学卢维尔分校
Janos T.Fustos,丹佛大都会州立大学
Sam Sultan,纽约大学
Nancy McCurdy,圣达菲学院
特别感谢专业软件/Web开发师Anton Drake在为第10~12章开发Greg's Gambits和Carla's Classroom网站方面提供的无价帮助。Anton的贡献在于充当XML、PHP和MySQL内容的顾问并且协助编写了这几章的代码。
我非常荣幸与如此可爱的Pearson支持团队合作。Matt GolDstein为本书的出版提供机会,我将永远感谢他。Kathy Cantwell精炼了本书文字。Marilyn Lloyd和Scott Disanno一直支持我写作。Greg Dulles和Kayla Smith-Tarbox帮我寻找图像,从而使网站具有活力。Jenah Blitz-Stoehr亲自回答我的所有普通问题。Pearson的每个人都是友好亲切、乐于助人和鼓舞人心的,作者提出的要求都会一一满足。
我也要感谢Anton和宠物的耐心让我长时间敲打键盘,感谢全家对我的爱和鼓励让我花费大量时间做我热爱的事情——写作。
——Elizabeth Drake
[1] 第0章作为教辅资源放在华章网站(www.hzbook.com)上,有需要者可下载。——编辑注
[2] 关于本书教辅资源,用书教师可向培生教育出版集团北京代表处申请,电话:010-57355169/57355171,电子邮件:service.cn@pearson.com。——编辑注