




已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/6/19,中山大学计算机科学系,第 4 章,程序设计基础,2019/6/19,中山大学计算机科学系,第四章 程序设计基础,程序设计语言 算法与流程图 程序设计方法简介 JavaScript 语言及其运行环境 JavaScript 编程基础 JavaScript流程控制 调试JavaScript程序 JavaScript 函数,2019/6/19,中山大学计算机科学系,4.1 程序设计语言,程序是用计算机语言描述的解决某一问题的步骤,由符合一定词法、语法和语义规则的符号序列组成。 程序设计语言是用于编写计算机程序的语言,包括一组符号定义和相应规则。 4.1.1 语言分类 (1)机器语言是二进制代码语言,能被计算机硬件直接识别并执行。如计算2+3: 00100011 00000010 -将2送累加器A;前8位是操作码,后8位是操作数 00000011 00000011 -将3与累加器A相加,结果放累加器A 00000010 -将累加器A中的数(即5)从总线输出,2019/6/19,中山大学计算机科学系,4.1.1 语言分类,(2)汇编语言是用助记符代替操作码、用地址符代替操作数的一种面向机器的低级语言。例如: MOV A,2H -将2送累加器A ADD A,3H -将3与累加器A相加,结果放累加器 OUTL BUS,A -将累加器A中的数(即5)从总线输出 汇编概念:汇编语言程序必须使用汇编程序把它翻译成机器语言后,才能被机器理解、执行。,2019/6/19,中山大学计算机科学系,4.1.1 语言分类,(3)高级语言的表达方法接近于人的自然语言和数学表达式,不依赖于机器的特定属性。例如: Print 2+3 翻译方式: 编译方式:使用编译程序 解释方式:使用解释程序,2019/6/19,中山大学计算机科学系,4.1.2 词法、语法和语义规则,(1)词法:组成合法语句的基本单元称为单词,构成合法单词的规则称为词法。如语句“x1=2”中的x1、=、2是合法单词,而 1x 不是合法变量名。 (2)语法:具有特定含义的符号串称为语句,构成合法语句的规则称为语法。例如:语句“x=*2”符合词法,但不符合语法规则。 (3)语义:合法语句的实际含义称为该语句的语义。对语义的理解是否准确,直接影响程序的正确性和可靠性。例如:在JavaScript中,“x=2”表示判断变量x与数值2是否相等,而“x=2”却表示将2赋值给x。,2019/6/19,中山大学计算机科学系,4.2 算法与流程图,算法是计算机解决问题的方法和步骤,可以使用自然语言、流程图、程序设计语言等描述工具来描述。 4.2.1 流程图 流程图是用一些几何框图、流程线和文字说明表示各种类型的操作。 基本图形和含义,2019/6/19,中山大学计算机科学系,4.2.2 对算法的初步认识,例4.1 将两个变量X和Y的值互换。设X=5,Y=10 用自然语言描述: S1:将Y值存入中间变量Z:YZ S2:将X值存入变量Y中:XY S3:将中间变量Z的值存入X中:ZX 用流程图描述,2019/6/19,中山大学计算机科学系,4.2.2 对算法的初步认识,例4.2 求1+2+3+4+100 用自然语言描述: S1:设累加和变量S,且0S;计数变量i,且0i S2:计算和S+iS,并把计数变量增值i+1i。 S3:判断:当i100时,返回第2步S2,再次求和;当i100时,顺序执行下一步S4。 S4:输出结果,S为所求之和。 用流程图描述,2019/6/19,中山大学计算机科学系,4.2.3 算法评价标准,正确性:保证运行结果正确 可读性:良好的可读性有助于保证算法的正确性。科学、规范的程序设计方法(如结构化方法和面向对象方法)可提高算法的可读性。 通用性:一个好算法要尽可能通用,可适用于同类问题的求解。 高效率:效率包括时间和空间两个方面,一个好的算法应执行速度快、占用内存少。可读性要优先于效率,高效率处于次要地位。,2019/6/19,中山大学计算机科学系,4.3 程序设计方法简介,程序设计(Programming)是设计、编制和调试程序的方法和过程,一般包括问题分析、算法设计、程序编写、程序调试、资料整理等步骤。 程序设计的常用方法有结构化程序设计(Structured Programming,SP方法)和面向对象程序设计(Object-Oriented Programming,OOP方法),前者注重事物的表现行为,后者注重事物的结构。,2019/6/19,中山大学计算机科学系,4.3.1 结构化程序设计,结构化程序设计方法 是指按照模块化、层次化的方法来设计程序。其核心思想包括以下三点: (1)程序模块化:是指把一个大程序分解成若干个小程序(即模块)。 (2)语句结构化:是指每个模块用顺序、选择和循环三种流程结构来实现,如图4.6所示。,2019/6/19,中山大学计算机科学系,4.3.1 结构化程序设计,(3)自顶向下、逐步求精的设计过程:一方面是指将一个复杂问题的求解过程分解和细化成由若干个模块组成的层次结构;另一方面是指将每个模块的功能逐步分解、细化为一系列的处理步骤,直至分解为三种基本控制结构的组合。 例4.3 某班80名学生,求该班成绩的不及格率。 首先将任务“求不及格率”分解成2个子模块“输入成绩”和“统计不及格人数”,如图:,2019/6/19,中山大学计算机科学系,4.3.1 结构化程序设计,然后使用流程图分别描述这些模块的实现算法,如图4.7中的子图B、C、D所示 最后使用某种程序设计语言加以实现,2019/6/19,中山大学计算机科学系,4.3.2 面向对象程序设计,面向对象程序设计是以对象为基本结构单元的程序设计,有以下基本概念: 对象:由一组属性和方法构成。 消息:请求对象执行某一操作或返回某个状态 封装:对象将数据及相关操作封装在一起成为一个相对独立的实体。 类:类是具有相同属性和方法的一组对象的抽象描述。对象也称为类的实例。 面向对象方法支持较高的可读性、可维护性和可修改性,以及软件重用。 面向对象语言(如C+)、基于对象的语言(如JavaScript),2019/6/19,中山大学计算机科学系,4.4 JavaScript 语言及其环境,4.4.1 JavaScript 简介 JavaScript是一种解释型的、基于对象的脚本语言。适用于创建短小的应用程序。 JavaScript最初由Netscape(网景)公司于1995年设计并实现。1997年,JavaScript被制定为Web脚本语言的标准,该标准编号是ECMA 262。 JScript是Microsoft公司对ECMA 262语言规范的一种实现。本书将JScript等同于JavaScript。,2019/6/19,中山大学计算机科学系,4.4 JavaScript 语言及其环境,脚本是用脚本语言编写的程序,通常解释执行。JavaScript脚本只能在某个解释器(或称“宿主”)上运行。依赖于宿主特性,JavaScript脚本具有不同的用途,如: 动态网页编程:将JavaScript脚本嵌入网页中,由Web浏览器解释执行。 Web服务器编程:将JavaScript脚本嵌入ASP页面中,由服务器端的ASP服务程序解释执行。 自动管理Windows系统:将JavaScript脚本保存为独立的脚本文件,由Windows脚本宿主解释执行,实现对Windows系统的自动管理。,2019/6/19,中山大学计算机科学系,4.4.2 Windows 脚本宿主,一、WSH 简介 Windows脚本宿主是Windows脚本的运行环境,内嵌在微软的Windows操作系统中。其中,Windows XP已内置WSH 5.6版。 脚本引擎是某种脚本语言的解释程序。安装WSH时已自动安装JavaScript和VBScrip这两种脚本引擎 WSH可以执行以文本文件格式独立存在的Windows脚本,如.js、.vbs、.wsf、.wsh,2019/6/19,中山大学计算机科学系,4.4.2 Windows 脚本宿主,二、编写第一个JavaScript脚本程序 例4.4 使用记事本编写一个JavaScript脚本程序,显示文字“Hello World!”。 操作步骤如下: 启动Windows记事本; 输入以下代码: WScript.Echo(“Hello World!“); 将这段代码保存在文件S0404.js中。,2019/6/19,中山大学计算机科学系,4.4.2 Windows 脚本宿主,三、脚本的执行方式 (1)显式启动WSH执行脚本 WSH有两种形式,即窗口式WSH(WScript)和命令式WSH(CScript),分别对应可执行文件WScript.exe和CScript.exe。如: wscript E:ScriptsS0404.js 或 cscript E:ScriptsS0404.js WScript和CScript对脚本的执行效果基本相同,唯一区别在于输出形式不同,2019/6/19,中山大学计算机科学系,4.4.2 Windows 脚本宿主,三、脚本的执行方式 (2)隐式启动WSH执行脚本 Windows脚本文件也可以像普通可执行文件那样直接执行: 通过“我的电脑”打开脚本文件所在的文件夹,然后双击它。 通过Windows“开始”菜单的“运行”命令,键入脚本文件的完整路径名。 在命令提示符中键入脚本文件的完整路径名。,2019/6/19,中山大学计算机科学系,4.4.3 使用 Windows 脚本帮助,微软在发布WSH 5.6时,也为脚本开发者提供了一个名为“Microsoft Windows 脚本技术”的说明文档(CHM 格式)。它提供了对JScript、VBScript、脚本运行时库和Windows脚本宿言等技术的详细描述。 还可以到微软的脚本中心站点(/china/technet/ community/scriptcenter /default.mspx)获取大量的脚本应用技术及实例。,2019/6/19,中山大学计算机科学系,4.5 JavaScript 编程基础,本节介绍最基本的编程概念,即常量、变量、运算符、表达式及其类型。 4.5.1 数据类型与常量 (一)数值型 (1)整数 十进制:使用09的数字序列表示。例如:25,+234,-998,085。 八进制:使用07的数字序列表示,并且首位必须是0。例如:0235,-065。 十六进制:使用09、A、B、C、D、E、F(或a、b、c、d、e、f)的数码序列表示,并且前两位必须是0X或0x。例如:0x235,-0XA8,0XEF。,2019/6/19,中山大学计算机科学系,4.5.1 数据类型与常量,(2)浮点数 浮点数是可以有小数部分的数值。浮点数常量只能采用十进制,表示形式有两种: 普通形式。由整数部分、小数点和小数部分组成,如:3.2、12.0、12.、.5、-1.8。 指数形式。如5.34e5(表示5.34105)、312E-4(表示31210-4)。其中,e(或E)后面的指数是-324308之间的整数。如23e4321和1.2e2.5等都是不合法的。 另外,JavaScript用一个特殊的数值常量NaN(Not a Number的缩写,即“非数字”)表示无意义的数学运算结果。,2019/6/19,中山大学计算机科学系,4.5.1 数据类型与常量,(二)字符串型 字符串用于表示文本数据,由0个或多个字符组成的序列组成。在表示字符串常量时,必须为字符串首尾添加成对的双引号“”或单引号“”,如: “Hello word!“ 世界,您好! “a“ 或 a “Hi!“ I said. 转义字符是指以反斜杠“”开头,后跟一个或多个字符。例4.5,2019/6/19,中山大学计算机科学系,4.5.1 数据类型与常量,(三)布尔型 布尔型(Boolean)就是逻辑型,只有两个值:逻辑“真”和逻辑“假”,分别对应于布尔常量true和false。 (四)其他类型的常量 null是空值常量,表示空的或不存在的对象引用。undefined是未定义值常量,表示变量还没有赋值。,2019/6/19,中山大学计算机科学系,4.5.2 变量,变量是程序中一个已命名的存储单元。它有两个基本特征,即变量名(标识变量的名称)和变量值(变量存储的数据)。另外,变量的值可以通过赋值发生变化;不过,在为变量赋予新值之前,变量一直保持它原先所存储的数据。,2019/6/19,中山大学计算机科学系,4.5.2 变量,(一)变量命名 变量名由以字母或下划线开头的字母AZ或az、数字09和下划线(_)构成的字符序列组成。如:page1、_hg、X1_1 不能使用JavaScript保留字,如var。 JavaScript变量名是区分大小写的。如n与N 为了提高程序的可读性,要选择易于记忆、有意义的变量名。如age 也可以使用中文字符命名JavaScript变量,2019/6/19,中山大学计算机科学系,4.5.2 变量,(二)变量声明 使用关键字 var 声明变量,格式如下: var variablename; 也可以同时声明多个变量名,如: var name,age,weight; (三)为变量赋值 方法一:声明变量的同时也给出初始值。如: var name=“张三“; 方法二:使用赋值语句为变量赋值。如: age = 20;,2019/6/19,中山大学计算机科学系,4.5.2 变量,(四)读取变量的值 若要取一个变量的值,则可以把该变量名放在一个常量可以出现的位置。 例4.6 了解变量的基本用法和含义,以及注释。 var name; /声明变量 name name=“张三“; /把字符串“张三”存储到变量 name 中 age=20; /变量 age 被隐式声明,并赋值整数 20 /* 以上语句声明两个变量name、age,并赋值; 以下语句取出这两个变量的值、并使用WScript.Echo方法输出。 */ WScript.Echo(name); /取出变量name的值,并输出 WScript.Echo(“今年“); /输出字符串“今年” WScript.Echo(age); /读取变量age的值,并输出 WScript.Echo(“岁“); /输出字符串“岁”,2019/6/19,中山大学计算机科学系,4.5.2 变量,(五)变量类型 在JavaScript中,变量类型是指变量值所属的数据类型。由于JavaScript是一种弱类型的编程语言,允许把任何类型的数据赋值给变量,因此JavaScript变量的类型是动态的,只有在程序运行时才能动态确定。 例4.7 编写以下JavaScript程序并使用CScript执行,以了解变量类型的动态性。 var x=20; WScript.Echo(typeof(x); x=“您好“; WScript.Echo(typeof(x); x=true; WScript.Echo(typeof(x);,2019/6/19,中山大学计算机科学系,4.5.2 变量,(六)简述变量的作用域 变量的作用域是指变量起作用的范围,在该范围内可引用该变量。在引入函数概念之前,本章大多数示例使用的都是全局变量,其作用范围是同一个脚本文件,也就是说,只要定义了一个变量,那么在同一个脚本文件中的后续脚本就可以使用它。,2019/6/19,中山大学计算机科学系,4.5.3 运算符与表达式, 基本概念 运算符是指定计算操作的符号(如+、-、*、等)。其中,把被计算的值称为操作数。 依赖操作数的个数,可将运算符分为单目运算符、双目运算符和三目运算符。 表达式是运算符和操作数组合而成的式子,如123、x、x+100 表达式具有值,这个值是对操作数实施运算符所确定的计算后产生的结果值。例如,如果有定义“var x=123;”,那么123、x、x+100的值分别是数值123、123、223。,2019/6/19,中山大学计算机科学系,4.5.3 运算符与表达式, 运算符的优先级 在计算复杂表达式时,先要计算子表达式的值,而计算这些子表达式的顺序依赖于运算符的优先级(优先级越高越先计算)。 例 尽量使用简单的表达式,2019/6/19,中山大学计算机科学系,4.5.3 运算符与表达式, 运算符的结合性 当表达式中连续出现的几个运算符优先级相同时,其运算顺序由结合性决定,分为: 左结合:是指左边的运算符优先计算,如 10-2-5 右结合:是指右边的运算符优先计算,如 x=y=100,2019/6/19,中山大学计算机科学系,4.5.3 运算符与表达式, 表达式中的类型转换 JavaScript会根据运算符的特性和操作数的类型进行隐式类型转换。 例4.8 求100+300、100+“300“、“100“+300和“100“+“300“。 例4.9 求100-300、100-“300“、“100“-300和“100“-“300“。 例4.10 求true + 100、true + “100“、true + false、true - false。 例4.11 求表达式 “a“ 100 的值。 控制方法 对于+运算符:如果有一个操作数为字符串,则为字符串连接运算;如果两个操作数都不是字符串,则是算术加运算。 对于其他运算符,自动把操作数转换为相应类型 使用函数parseInt()和parseFloat()显式转换,2019/6/19,中山大学计算机科学系,4.5.4 JavaScript运算符, 算术运算符 JavaScript算术运算符的操作数和计算结果都是数值型,包括+、-、*、/、%、+x、x+、-x、x- 例 10%3 / 等于 1 /若有 var x=100,y; y = +x; y = x+; y = -x; y = x-; 例4.12 买东西付了$105,税率为0.05,那么标价是多少?一共又付了多少税钱?,2019/6/19,中山大学计算机科学系,4.5.4 JavaScript运算符, 关系运算符 关系运算符(又称比较运算符)对操作数进行比较,返回一个布尔值。包括、=、=、!=、=、!= 比较运算符的操作数一般为数值型数据,但也可以是其他类型的数据: 如果两个操作数都是字符串,则进行字符串比较运算(比较字符的Unicode码值)。例如:“a“=“a“、“ab“=“ab“、“a“XYZ“、“x“XYZ“ 如果至少有一个操作数不是字符串,就先将非数值型操作数转换为数值,然后进行数值比较运算。例如:2“10“、1true、truefalse、2=“0X2“、1=true、“true“=true,2019/6/19,中山大学计算机科学系,4.5.4 JavaScript运算符, 逻辑运算符 逻辑运算符的操作数和计算结果都是布尔值,包括&、|、! 例如,若有变量x,则 判断“x是属于10,99之间的数值”的表达式写成: x=10 & x100 | (x0),2019/6/19,中山大学计算机科学系,4.5.4 JavaScript运算符, 位操作运算符 位操作运算符用于对整数的二进制位进行操作,计算结果仍为整数,包括,2019/6/19,中山大学计算机科学系,4.5.4 JavaScript运算符, 赋值运算符 最基本的赋值运算符是等于号(=),用于对变量进行赋值。 另外,一些运算符也可以和等于号(=)联合使用,构成组合赋值运算符,如=、+=、-=、*=、/=、%=、&=、|=、=、=、=,2019/6/19,中山大学计算机科学系,4.5.4 JavaScript运算符, 条件运算符 条件运算符格式如下: condition?true_result:false_result 如果condition为真,则表达式的值为true_result子表达式的值,否则为false_result子表达式的值。 例4.14 var age,status; age = 20; status = (age=18)?“已成年“:“未成年“; WScript.Echo(“小李“ + status );,2019/6/19,中山大学计算机科学系,4.5.4 JavaScript运算符, 其他运算符 JavaScript还包含其他几个特殊的运算符,如 . ( ) , delete new typeof void,2019/6/19,中山大学计算机科学系,4.6 JavaScript 流程控制,JavaScript支持结构化程序设计方法,即支持顺序、选择和循环这三种流程结构。 所谓顺序结构就是指构成JavaScript程序的多条语句按照它们的书写顺序从头到尾依次执行 在JavaScript中,每条语句应该以一个分号(;)结束,不过有时没有分号也不会出错。另外,JavaScrip允许把多条语句写在同一行中,此时,语句之间就一定要加上分号。,2019/6/19,中山大学计算机科学系,4.6.1 宿主的输入与输出功能,JavaScript语言没有直接提供输入与输出的语句,只能借助脚本宿主对象所提供的有关方法进行基本的输入与输出。 (一)使用WScript对象的Echo方法 命令格式: WScript.Echo(Arg1 ,Arg2 ,Arg3 .); 例如: WScript.Echo(“HelloWorld!“); WScript.Echo(“Hello“,“World!“); WScript.Echo(“1+2“,“=“,1+2);,2019/6/19,中山大学计算机科学系,4.6.1 宿主的输入与输出功能,(二)使用WScript.Shell对象的Popup方法 命令格式: iB=object.Popup(strText,nSecondsToWait,strTitle,nType) 例4.15 var shell=WScript.CreateObject(“WScript.Shell“); var BtnCode = shell.Popup(“您来过中大吗?“, 8, “确认框示例“, 1); var visited = (BtnCode=1); var show_text = visited?“您也认为中大很美吧!“:“欢迎您有机会来中大参观!“; WScript.Echo(show_text);,2019/6/19,中山大学计算机科学系,4.6.1 宿主的输入与输出功能,(三)使用WScript的标准输入/输出流对象StdIn、StdOut WScript的子对象StdIn、StdOut分别对应于Windows命令符窗口中的标准输入、输出流,因此,这两个对象只有用CScript执行才有效。 WScript.StdIn对象的ReadLine方法从标准输入流中读取一行文本;而WScript.StdOut对象的WriteLine方法则是向标准输出流输出一行文本。 例4.16 WScript.StdOut.WriteLine(“请输入您的姓名:“); var name = WScript.StdIn.ReadLine(); WScript.StdOut.WriteLine(“尊敬的“+name+“:欢迎您进入脚本世界!“);,2019/6/19,中山大学计算机科学系,4.6.2 选择结构,JavaScript 支持if 语句和 switch 语句 if 语句 一、ifelse 语句 if语句的基本形式是: if (判定条件) 语句1; else 语句2; 这种形式的 if 语句支持典型的二路选择结构,也就是,根据某种情况的判断,要么执行语句A,要么执行语句B。语句A和语句B不会同时执行。,2019/6/19,中山大学计算机科学系,4.6.2 选择结构,例4.17 分别输入两个数给变量x、y,然后求出这两个变量中的最大值。 var x,y,max; WScript.StdOut.WriteLine(“x=“); x = parseFloat(WScript.StdIn.ReadLine(); WScript.StdOut.WriteLine(“y=“); y = parseFloat(WScript.StdIn.ReadLine(); if (xy) / 若xy,则x是最大值,否则y是最大值 max=x; else max=y; WScript.StdOut.WriteLine(“最大值是:“ + max);,2019/6/19,中山大学计算机科学系,4.6.2 选择结构,二、没有else部分的if语句 if 语句的简单形式: if (判定条件) 语句; 例4.18 改写例4.17,要求不使用else部分。 编程思路:先假定x最大,如果假定不成立,那么y的值就最大。 max = x; /先假定x的值最大 if (maxy) max=y; WScript.StdOut.WriteLine(“最大值是:“ + max); 好处:便于改为求3个甚至更多变量的最大值。 max = x; if (maxy) max=y; if (maxz) max=z; ,2019/6/19,中山大学计算机科学系,4.6.2 选择结构,三、程序代码的书写格式问题 建议格式: if(xy) max=x;else max=y; 或 if(xy) max=x; else /else 与 if 对齐 max=y; 不好格式: if(xy) 或 if(xy) max=x;else max=y; max=x; else max=y; 注重程序可读性,2019/6/19,中山大学计算机科学系,4.6.2 选择结构,四、使用语句组 语句组:用大括号括起来的一组语句序列。在语法上,语句组相当于单条语句。 例4.19 求两个变量的最大值和最小值 . if (x=y) /必须用花括号括起以下两条语句,使之成为语句组;否则将出错。 max = x; min = y; else /同样必须用花括号括起以下两条语句,使之成为语句组 max = y; min = x; WScript.StdOut.WriteLine(“最大值是:“ + max +“;最小值是:“ + min);,2019/6/19,中山大学计算机科学系,4.6.2 选择结构,五、论变量的使用 变量的基本用途:存储初始值和计算结果,以及中间变量 例4.20 分别输入两个数给变量x、y,然后对这两个数进行由小到大的排序,使x、y分别存储这两个数中的最小值和最大值。 if (xy) /交换变量x,y的值 temp = x; x = y; y = temp; WScript.StdOut.WriteLine(“排序后,x=“ + x +“;y=“ + y),2019/6/19,中山大学计算机科学系,4.6.2 选择结构,六、if语句的嵌套 可以把一个if语句当成另外一个if语句的语句部分来用,这就是所谓的if语句的嵌套。 例4.21 根据成绩给出学生的考评:如果成绩=85,就考评“优”,否则如果成绩=60,就考评“及格”,否则考评为“不及格”。 格式调整,2019/6/19,中山大学计算机科学系, switch 语句,格式: switch(表达式) case 表达式1: 语句1; break; case 表达式2: 语句2; break; default: 语句n+1; break; ,2019/6/19,中山大学计算机科学系, switch 语句,例4.22 常识问答,请选择“中国的首都在哪个城市? A.香港B.广州C.北京D.上海”。 switch(answer) case “a“: case “A“: WScript.StdOut.WriteLine(“错!香港是中国的特别行政区“); break; case “b“: case “B“: WScript.StdOut.WriteLine(“错!广州是中国南部的大城市“); break; . default: WScript.StdOut.WriteLine(“选择错误!只能选填字母 A、B、C或D“); break; ,2019/6/19,中山大学计算机科学系,4.6.3 循环结构,当一些语句需要反复执行时,就要用到循环结构的语句,即循环语句。 JavaScript常用的循环语句主要是for语句、while语句以及dowhile语句。,2019/6/19,中山大学计算机科学系, for 语句,for 语句格式: for(初值表达式; 循环判定式; 更新表达式) 循环体语句; for 语句执行步骤:,2019/6/19,中山大学计算机科学系, for 语句,例4.23 求1+2+3+100的累加和。 编程思路:使用变量i作为循环变量,从1开始,每次加1,直至100;而sum作为累加器变量,累加i所遍历的值,其效果就是计算1+2+3+100 var i,sum=0; /sum是累加器变量,初值0 for(i=1;i=100;i+) /在每次循环时,循环变量i的值依次是1,2,3,.,100 sum += i; /累加循环变量i所遍历的值1,2,3,.,100 WScript.Echo(“1+2+3+.+100=“,sum);,2019/6/19,中山大学计算机科学系, for 语句,例4.24 显示十六进制数的数码0123ABCDEF 编程思路:使用一个循环变量(如i)遍历十六进制数的16个数码 for(i=0;i16;i+) /i遍历每个数码 switch(i) /将十进制数i转换为对应的十六进制数码 case 10:digit=“A“;break; case 11:digit=“B“;break; . default: digit=i;break; /09 digits = digits + digit; WScript.Echo(“十六进制的16个数码是:“,digits);,2019/6/19,中山大学计算机科学系, while 语句,while语句格式: while(循环判定式) 循环体语句; while循环的执行步骤如下:,2019/6/19,中山大学计算机科学系, while 语句,例4.25 使用while语句求1+2+3+100 编程思路: var i,sum; i=1;sum=0;/i是循环变量,初值1;而sum是累加器变量,初值0 while (i=100) /在每次循环时,循环变量i的值依次是1,2,3,.,100 sum += i; /累加循环变量i所遍历的值1,2,3,.,100 i+; WScript.Echo(“1+2+3+.+100=“,sum);,2019/6/19,中山大学计算机科学系, do while 语句,do while语句格式: do 循环体语句 while(循环判定式); do while 循环的执行步骤如下:,2019/6/19,中山大学计算机科学系, do while 语句,例4.26 使用dowhile语句求1+2+3+100 编程思路: var i,sum; i=1;sum=0;/i是循环变量;sum是累加器变量 do /在每次循环时,循环变量i的值依次是1,2,3,.,100 sum += i; /累加循环变量i所遍历的值1,2,3,.,100 i+; while (i=100); WScript.Echo(“1+2+3+.+100=“,sum); 在形式上do while语句把判定式while(i=100)放在语句后部,并且后面要加上分号“;”,2019/6/19,中山大学计算机科学系, do while 语句,do while的特点是至少执行一次循环体语句。 例4.27 编写一个二位整数相加的测试程序。要求程序随机生成两个二位整数,提示用户回答它们的相加结果,根据用户回答给出“答对”或“答错”的提示,并且允许用户决定是否继续答题,如果继续就再出题,否则就结束。 编程思路:,2019/6/19,中山大学计算机科学系, 使用break和continue,break语句也经常用在循环体中。当程序执行到循环体中的break语句时就结束整个循环语句。 continue语句只能用在循环体中,其作用是跳过循环体中未执行的语句,结束本次循环,跳至求循环判定式,决定是否继续循环。 continue语句和break语句的区别是:continue只是结束本次循环体的执行,而break则是结束整个循环语句的执行。 通常,continue语句和break语句在循环体中与if语句配合使用,从而控制循环。,2019/6/19,中山大学计算机科学系, 使用break和continue,例4.28 使用break语句实现例4.27 var x,y,result,answer,prompt,go_on_s; while(true) /先出题,再答题 x = Math.floor(Math.random() *90)+10; y = Math.floor(Math.random() *90)+10; result = x+y; /计算标准答案 WScript.StdOut.WriteLine(x + “+“ + y + “=“); answer = parseInt(WScript.StdIn.ReadLine(); prompt = (answer=result?“答对“:“答错“) +“!继续答题吗?(Y:继续;其他键退出)“; WScript.StdOut.WriteLine(prompt); go_on_s = WScript.StdIn.ReadLine(); if (go_on_s!=“Y“ ,2019/6/19,中山大学计算机科学系, 使用break和continue,例4.29 累加用户输入的正数,如果输入字符“Q”,就不继续输入,并显示累加结果。 var input,input_number,sum; for(sum=0; ; ) /sum作为累加器,初值为0 WScript.StdOut.WriteLine(“sum=“+sum + “,t请输入新的累加数(输入Q结束):“); input = WScript.StdIn.ReadLine(); if (input=“Q“ | input=“q“) break; /结束累加 input_number = parseFloat(input); if (isNaN(input_number) continue; /不能累加NaN if (input_number=0) continue; /不累加非正数 sum += input_number; /累加有效正数 WScript.StdOut.WriteLine(“sum=“+sum);,2019/6/19,中山大学计算机科学系, 循环的嵌套,在一个循环语句的循环体中也可以包含另一个循环语句,这称为循环的嵌套。 例4.30 显示一个“99乘法表”。 编程思路: 第j列显示j与19依次相乘的结果。 99乘法表的每一项其实就是“列号*行号”,2019/6/19,中山大学计算机科学系,4.7 调试JavaScript程序,程序出错分为两类: 语法错误; 语义错误。 所谓调试程序就是排除程序中的错误。,2019/6/19,中山大学计算机科学系,4.7.1 排除语法错误,语法错误是指写出的程序代码不符合语法规则,比如,变量名使用关键字、括号不匹配、if语句中判定条件式没有用圆括号括起来,等等。 Windows脚本宿主在执行含有语法错误的脚本程序时,会提示出现了什么错误以及出错位置。 例4.31 以下程序有语法错误,请排除。 . if xy /将出错,if判定条件式必须用圆括号括起来 max=x; else max=y; WScript.Echo(“最大值是=“,max);,2019/6/19,中山大学计算机科学系,4.7.2 排除语义错误,语义错误是指编写的程序代码符合语法规则,能够正常执行,但是执行的结果不符合要求。 导致语义错误的常见情况是对流程控制语句使用不当或者对变量赋予了一个不恰当的值。对于这种情况,可以使用专业的调试工具,通过跟踪程序的一步步执行并且查看执行中变量值的变化情况来排除程序中的语义错误。,2019/6/19,中山大学计算机科学系,4.7.3 使用Microsoft 脚本编辑器调试程序,Microsoft脚本编辑器是一种专业化的脚本编辑和调试工具,是Microsoft Office的可选组件之一。 使用示例 例4.32 第一步:在调试器中执行脚本 CScript E:ScriptsS0432.js /X 第二步:设置断点、执行到断点 第三步:逐语句执行,观察变量x、y值的变化 第四步:找到问题后,结束本次调试,2019/6/19,中山大学计算机科学系,4.8 JavaScript函数,4.8.1 什么是函数 函数是编制程序时定义的一个语句序列,其作用是执行一项单一任务或一系列任务。例如,一个函数可能是输出一行文本,也可能是计算一个数值并把它返回给主程序。 使用函数的一个好处在于它的可重用性。,2019/6/19,中山大学计算机科学系,4.8.2 使用预定义函数,所谓预定义函数是指不必自己定义、直接就可使用的函数。 一、eval( ) 函数:计算在字符串中的表达式的值 例4.33 求用户输入的任意常量表达式的值。 二、escape( ):将字符串中的非字母数字的ASCII字符转换为%AA、或将非ASCII字符(如汉字)转换为%uUUUU。如: var escapestr=escape(“您好! John“); 把变量 escapestr 赋值为字符串 %u60A8%u597D%21%20John unescape( ) 函数与 escape( ) 函数的功能正好相反,2019/6/19,中山大学计算机科学系,4.8.2 使用预定义函数,三、isNaN( )、isFinite( ) 函数 isNaN( ) 函数用于确定一个变量是否是NaN。 isFinite( ) 函数用于确定一个变量是否有限。如isFinite(1),而isFinite(“a“)返回false 四、parseFloat( )、parseInt( ) 函数 parseFloat( ) 函数将字符串转换为浮点数。如: parseFloat(“123.45“) 123.45 parseFloat(“123.45abc“) 123.45 parseFloat(“abc123.45“) NaN parseFloat(true) NaN parseInt( ) 函数与 parseFloat( ) 类似,2019/6/19,中山大学计算机科学系,4.8.3 函数定义与函数调用, 函数定义 定义格式: function 自定义函数名( ) 函数体 例4.34 定义一个函数Hello( ),这个函数的功能是输出文字“您好!”。实现程序如下: function Hello( ) /自定义无参数的函数 WScript.Echo(“您好!“); ,2019/6/19,中山大学计算机科学系,4.8.3 函数定义与函数调用, 函数调用 与调用预定义函数一样,对自定义函数的调用形式也是“函数名( )” 例4.35 改写例4.34,通过函数调用实现文字“您好!”的输出。 . Hello(); 函数调用流程,2019/6/19,中山大学计算机科学系,4.8.4 函数参数的使用, 给函数添加参数 定义函数的完整格式: function 自定义函数名(形参1,形参2,.) 函数体 参数作用:为被调用的函数传递一个或多个值 定义函数时指定的参数称为形式参数(形参);调用函数时为形参实际传递的值称为实际参数(实参) 调用形式: 函数名(实参1,实参2,.),2019/6/19,中山大学计算机科学系,4.8.4 函数参数的使用,例4.36 定义一个含有参数的函数Show(text),它输出参数text中的字符串。实现程序如下: function Show(text) WScript.Echo(text); Show(“JavaScript真棒!“);,2019/6/19,中山大学计算机科学系,4.8.4 函数参数的使用, 使用多个参数 当使用多个参数时,函数调用的各个实参按照其排列的先后顺序依次传递给函数定义中的形参。 例4.37 定义一个多参数函数Calculate(x,y,op),用于显示对形参x、y进行形参op指定的运算结果。 function Calculate(x,y,op) /对形参x,y进行形参op指定的运算(如+、-、*、/等),并显示 var exp,result; exp = x + op + y; result = eval(exp); WScript.Echo(x,op,y,“=“,result); Calculate(3,2,“+“); Calculate(4,5,“-“);Calculate(6,7,“*“);Calculate(8,9,“/“);,2019/6/19,中山大学计算机科学系,4.8.5 使用函数返回值, 给函数添加返回值 方法: return 表达式; 例4.38 编写函数Max(x,y): function Max(x,y) /求x,y中的最大值 var max; if (xy) max=x; else max=y; return max; /结束函数,并把变量max的值作为函数的返回值 var m; m = Max(100,200); WScript.Echo(“Max(100,200)=“ ,m);,2019/6/19,中山大学计算机科学系,4.8.5 使用函数返回值, 区分函数和过程 只返回undefined的函数称为过程。 过程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西2025自考金融学银行会计学易错题专练
- 储能系统负荷预测与调节方案
- 天津2025自考低空技术低空经济概论案例题专练
- 甘肃2025自考行政管理公共政策分析考前冲刺练习题
- 新疆2025自考生物育种技术英语二易错题专练
- 甘肃2025自考大功率半导体科学功率器件原理选择题专练
- 海南2025自考法学环境与资源保护法学高频题考点
- 河南2025自考金融学马克思概论易错题专练
- 厂房建设中的设备安装与调试管理
- 青海2025自考工商管理中国近现代史纲要易错题专练
- 教师晋升答辩常见问题汇编
- 新加坡安全培训题库及答案解析
- (人教A版)选择性必修一数学高二上册 第一章 空间向量与立体几何(A卷·知识通关练+B卷提升练习)(原卷版)
- 国家安全教育大学生读本电子版教材2025年课件讲义全套合集
- 2025煤矿安全规程解读
- 初级消防员培训课程教学大纲
- 2025-2026学年北师大版数学小学三年级上册(全册)教案设计及教学计划
- 2025年“学宪法讲宪法”主题活动知识竞赛题库附答案
- 2025年党纪法规知识测试题(含答案)
- 护理伦理与法律
- 网赌网贷专题教育
评论
0/150
提交评论