《大学计算机基础第4章编程基础精选文档》由会员分享,可在线阅读,更多相关《大学计算机基础第4章编程基础精选文档(100页珍藏版)》请在金锄头文库上搜索。
1、大学计算机基础第大学计算机基础第4 4章编程基础章编程基础- -精选文档精选文档主要内容主要内容n程序设计基本概念程序设计基本概念nJavaScriptJavaScript语言及其运行环境语言及其运行环境nJavaScriptJavaScript编程基础编程基础nWSHWSH的输入的输入/ /输出功能输出功能nJavaScriptJavaScript流程控制流程控制n调试调试JavaScriptJavaScript程序程序nJavaScriptJavaScript函数函数2一、程序设计基本概念一、程序设计基本概念n程序设计语言程序设计语言n算法与流程图算法与流程图n结构化程序设计结构化程序设计
2、3一、程序设计基本概念(续)一、程序设计基本概念(续)n程序程序u用计算机语言描述的解决某一问题的步骤,用计算机语言描述的解决某一问题的步骤,由符合一定词法、语法和语义规则的符号序由符合一定词法、语法和语义规则的符号序列组成列组成n程序设计语言程序设计语言u用于编写计算机程序的语言,包括一组符号用于编写计算机程序的语言,包括一组符号定义和相应规则定义和相应规则u分类分类机器语言汇编语言高级语言4一、程序设计基本概念(续)一、程序设计基本概念(续)n程序设计语言(续)程序设计语言(续)u机器语言机器语言二进制代码语言,能被计算机硬件直接识别并执行例:计算4+6的机器语言程序 00100011 0
3、0000100 00100011 00000100 00000011 00000110 00000011 00000110 00000010 000000105一、程序设计基本概念(续)一、程序设计基本概念(续)n程序设计语言(续)程序设计语言(续)u汇编语言汇编语言一种面向机器的低级语言:用助记符代替操作码、用地址符代替操作数例:计算4+6的汇编语言程序 MOV A,4H MOV A,4H ADD A,6H ADD A,6H OUTL BUS,A OUTL BUS,A6一、程序设计基本概念(续)一、程序设计基本概念(续)n程序设计语言(续)程序设计语言(续)u高级语言高级语言表达方法接近于人
4、的自然语言和数学表达式,不依赖于机器的特定属性例:Print 4+6 两种工作方式:编译方式解释方式7一、程序设计基本概念(续)一、程序设计基本概念(续)n算法与流程图算法与流程图u算法算法计算机解决问题的方法和步骤算法描述工具自然语言流程图程序设计语言8一、程序设计基本概念(续)一、程序设计基本概念(续)n算法与流程图(续)算法与流程图(续)u流程图流程图用一些几何框图、流程线和文字说明表示各种类型的操作9一、程序设计基本概念(续)一、程序设计基本概念(续)n算法与流程图(续)算法与流程图(续)u算法描述实例:求算法描述实例:求8!自然语言描述自然语言描述:S1S1:将:将1 1值存入被乘数
5、变量值存入被乘数变量f f:1f;1f; 将将2 2值存入乘数变量值存入乘数变量m m:2m2mS2S2:将:将f f与与m m的乘积存入的乘积存入f f:f*mf;f*mf; 使使m m的值加的值加1 1:m+1mm+1mS3S3:若:若m8m8,转,转S2S2;否则,转;否则,转S4S4S4S4:输出结果:输出结果f f并结束并结束流程图描述:流程图描述:10一、程序设计基本概念(续)一、程序设计基本概念(续)n算法与流程图(续)算法与流程图(续)u算法描述实例:算法描述实例:求求自然语言描述自然语言描述:S1S1:设累加和变量:设累加和变量sumsum,且,且1sum1sum; 设分母变
6、量设分母变量denodeno,且,且2deno2deno; 设数符变量设数符变量signsign,且,且1sign1sign;S2S2:(-1)(-1) signsignsignsign;signsign (1/deno)(1/deno)termterm; sum+termsum sum+termsum;deno+1denodeno+1denoS3S3:若:若deno100deno100,转,转S2S2;否则,转;否则,转S4S4S4S4:输出结果:输出结果sumsum并结束并结束流程图描述:流程图描述:11一、程序设计基本概念(续)一、程序设计基本概念(续)n算法与流程图(续)算法与流程图(
7、续)u算法评价标准算法评价标准正确性可读性通用性高效率12一、程序设计基本概念(续)一、程序设计基本概念(续)n程序设计程序设计u设计、编制和调试程序的方法和过程设计、编制和调试程序的方法和过程u一般步骤一般步骤问题分析、算法设计、程序编写、程序调试、资料整理u常用方法常用方法结构化程序设计(Structured Programming,SP ) 方法面向对象程序设计(Object-Oriented Programming,OOP) 方法13一、程序设计基本概念(续)一、程序设计基本概念(续)n结构化程序设计结构化程序设计u按照模块化、层次化的方法设计程序按照模块化、层次化的方法设计程序u核心
8、思想核心思想程序模块化语句结构化自顶向下、逐步求精14一、程序设计基本概念(续)一、程序设计基本概念(续)n例:例:某班某班8080名学生,求某次考试的不及格率名学生,求某次考试的不及格率u任务分解任务分解 模块结构图模块结构图15一、程序设计基本概念(续)一、程序设计基本概念(续)u用流程图描述各模块的实现算法用流程图描述各模块的实现算法u使用某种程序设计语言加以实现使用某种程序设计语言加以实现顶层流程图顶层流程图”输入成绩输入成绩“流程图流程图”统计不及格人数统计不及格人数“流程图流程图16二、二、JavaScript语言及其环境语言及其环境nJavaScriptJavaScriptu解释
9、型的、基于对象的脚本语言解释型的、基于对象的脚本语言u适用于创建短小的应用程序适用于创建短小的应用程序n脚本脚本u用脚本语言编写的程序用脚本语言编写的程序u通常解释执行通常解释执行n脚本宿主脚本宿主u执行脚本的解释器执行脚本的解释器17二、二、JavaScript语言及其环境(续)语言及其环境(续)nJavaScriptJavaScript脚本的用途脚本的用途u动态网页编程动态网页编程uWeb服务器编程服务器编程u自动管理自动管理Windows系统系统18二、二、JavaScript语言及其环境(续)语言及其环境(续)nWindowsWindows脚本宿主(脚本宿主(WSHWSH)uWindo
10、ws脚本的运行环境脚本的运行环境u内嵌在微软的内嵌在微软的Windows操作系统中操作系统中n脚本引擎脚本引擎u某种脚本语言的解释程序某种脚本语言的解释程序u安装安装WSH时已自动安装时已自动安装JavaScript和和VBScrip这两种脚本引擎这两种脚本引擎uWSH可以执行以文本文件格式独立存在的可以执行以文本文件格式独立存在的Windows脚本,如脚本,如.js、.vbs、.wsf、.wsh19二、二、JavaScript语言及其环境(续)语言及其环境(续)n编写编写JavaScriptJavaScript脚本程序脚本程序u使用纯文本编辑器(如:记事本程序)使用纯文本编辑器(如:记事本程
11、序)u将程序代码保存为将程序代码保存为.js文件文件u例:例:WScript.Echo(Hello World!);20二、二、JavaScript语言及其环境(续)语言及其环境(续)nWSHWSH的两种形式的两种形式u窗口式(窗口式(WScript)对应可执行文件WScript.exeu命令式(命令式(CScript)对应可执行文件CScript.exeuWScript和和CScript的区别:输出形式不的区别:输出形式不同同21二、二、JavaScript语言及其环境(续)语言及其环境(续)n脚本的执行方式脚本的执行方式u显式启动显式启动WSH执行脚本执行脚本启动窗口式WSH(WScrip
12、t) wscript E:ScriptsS0404.js启动命令式WSH(CScript) cscript E:ScriptsS0404.jsu隐式启动隐式启动WSH执行脚本执行脚本鼠标双击脚本文件通过Windows“开始”菜单的“运行”命令在命令提示符中键入脚本文件的完整路径名22二、二、JavaScript语言及其环境(续)语言及其环境(续)n使用使用Windows Windows 脚本帮助脚本帮助u“Microsoft Windows 脚本技术” 文档(CHM 格式)u微软的脚本中心站点microsoft/china/technet/community/scriptcenter/defa
13、ult.mspx23三、三、JavaScriptJavaScript编程基础编程基础n基本概念基本概念u数据类型数据类型u常量常量u变量变量u运算符运算符u表达式表达式24三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n数据类型与常量数据类型与常量u数值型数值型整数常量十进制整数八进制整数l以0开头l例:032,-032十六进制整数l以0X或0x开头l例:0x32,-0x2B25三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n数据类型与常量(续)数据类型与常量(续)u数值型(续)数值型(续)浮点数常量普通形式l由整数部分、小数点和小数
14、部分组成l如:3.2、12.0、12.、.5、-1.8指数形式l指数是-324308之间的整数l如:5.34e5(表示5.34105)、312E-4(表示31210-4)NaN(Not a Number的缩写,即“非数字”)26三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n数据类型与常量(续)数据类型与常量(续)u字符串型字符串型由0个或多个字符组成的序列字符串常量必须用双引号“”或单引号“”括住例:Hello word!亚运欢迎你!a 或 aHi! I said.转义字符转义字符转义字符转义字符以反斜杠“”开头,后跟一个或多个字符如: n , t , 27三、
15、三、JavaScriptJavaScript编程基础(续)编程基础(续)n数据类型与常量(续)数据类型与常量(续)u布尔型布尔型即逻辑型,只有两个值:逻辑“真”和逻辑“假”,分别对应于布尔常量true和falseu其他类型的常量null空值常量,表示空的或不存在的对象引用undefined未定义值常量,表示变量还没有赋值28三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n变量变量u程序中一个已命名的存储单元程序中一个已命名的存储单元u两个基本特征两个基本特征变量名:标识变量的名称变量值:变量存储的数据u变量的值可以通过赋值发生变化变量的值可以通过赋值发生变化29三
16、、三、JavaScriptJavaScript编程基础(续)编程基础(续)n变量(续)变量(续)u命名命名以字母或下划线开头,由字母、数字和下划线构成不能使用JavaScript保留字,如var区分大小写易于记忆、有意义可以使用中文字符30三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n变量(续)变量(续)u声明声明使用关键字 var 声明变量,形如: var variablename; 或: var name,age,weight;隐式声明31三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n变量(续)变量(续)u赋值赋值声明变量的同
17、时给定初始值 如: var name = 张三丰;使用赋值语句 如: age = 20;32三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n变量(续)变量(续)u读取变量的值读取变量的值把该变量的名字放在常量可以出现的位置:表达式中赋值符的右边函数调用的实参表中33三、三、JavaScriptJavaScript编程基础(续)编程基础(续)例:例:变量的基本用法和含义,代码注释变量的基本用法和含义,代码注释var name;var name;/声明变量声明变量 name namename=name=张三张三;/;/把字符串把字符串“张三张三”存储到变量存储到变量
18、name name 中中age=20;age=20;/变量变量 age age 被被隐式声明,并赋值整数,并赋值整数 20 20/*/* 以上语句声明两个变量以上语句声明两个变量namename、age,age,并赋值;并赋值; 以下语句取出这两个变量的值、并使用以下语句取出这两个变量的值、并使用WScript.EchoWScript.Echo方法输方法输出。出。*/*/WScript.Echo(name);WScript.Echo(name);/取出变量取出变量namename的值,并输出的值,并输出WScript.Echo(WScript.Echo(今年今年););/输出字符串输出字符串“
19、今年今年”WScript.Echo(age);WScript.Echo(age);/读取变量读取变量ageage的值,并输出的值,并输出WScript.Echo(WScript.Echo(岁岁););/输出字符串输出字符串“岁岁”34三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n变量(续)变量(续)u类型类型变量值所属的数据类型JavaScript是一种弱类型的编程语言,允许把任何类型的数据赋值给变量,因此JavaScript变量的类型是动态的,只有在程序运行时才能动态确定35三、三、JavaScriptJavaScript编程基础(续)编程基础(续)例:变量类
20、型的动态性变量类型的动态性var x=20; WScript.Echo(typeof(x);x=您好您好; WScript.Echo(typeof(x);x=true; WScript.Echo(typeof(x);使用CScript执行该程序,输出为:numberstringboolean36三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n变量(续)变量(续)u作用域作用域变量起作用的范围,在该范围内可引用该变量全局变量全局变量在所有函数之外定义作用范围是同一个脚本文件,从定义处到文件结束局部变量局部变量在函数内定义作用范围局限于函数37三、三、JavaScri
21、ptJavaScript编程基础(续)编程基础(续)n运算符运算符u指定计算操作的符号(如指定计算操作的符号(如+、-、*、等)。被等)。被计算的值称为计算的值称为操作数操作数。u基本属性基本属性优先级结合性u单目运算符、双目运算符、三目运算符单目运算符、双目运算符、三目运算符u算术运算符、关系运算符、逻辑运算符算术运算符、关系运算符、逻辑运算符38三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n表达式表达式u运算符和操作数组合而成的式子运算符和操作数组合而成的式子u例:例:256、x、x+600u表达式的值表达式的值对操作数实施运算符所确定的计算后产生的结果值例
22、: 若有定义 var x=256; 则:256、x、x+600的值分别是数值256、256、85639三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n运算符的优先级运算符的优先级u决定各运算符的执行次序:优先级高的先计算优先级高的先计算u例:例:u尽量使用简单的表达式尽量使用简单的表达式40三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n运算符的结合性运算符的结合性u在运算符优先级相同的情况下,由结合性决定运算顺序u左结合左结合左边的运算符优先计算例:100-20+5u右结合右结合右边的运算符优先计算例:x=y=12341三、三、Ja
23、vaScriptJavaScript编程基础(续)编程基础(续)n表达式计算中的类型转换表达式计算中的类型转换uJavaScript会根据运算符的特性和操作数的类型进行隐式类型转换隐式类型转换u控制方法控制方法对于+运算符如果有一个操作数为字符串,则为字符串连接运算如果两个操作数都不是字符串,则是算术加运算对于其他运算符自动把操作数转换为相应类型使用函数parseInt()和parseFloat()显式转换42三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n算术运算符算术运算符u操作数和计算结果都是数值型操作数和计算结果都是数值型u+ - * / % + -u例:
24、例: 12%5 /若有若有 var x=10,y; y = +x; y = x+; y = -x; y = x-;43三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n算术运算符(续)算术运算符(续)u例:例: 网购一本书,书价网购一本书,书价7折,运费折,运费5元,共付款元,共付款61元,元,问:书价是多少?问:书价是多少? paid = price * discount + transCosts price = ( paid transCosts ) / discount44三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n关系运算符
25、关系运算符u对操作数进行比较,返回一个布尔值u又称比较运算符比较运算符u = = != = !=u运算规则运算规则两个操作数都是字符串进行字符串比较运算(比较字符的Unicode码值)例:xyzXYZ、xXYZ“至少有一个操作数不是字符串先将非数值型操作数转换为数值,然后进行数值比较运算例:210、1true、truefalse、2=0X2、1=true、true=true 45三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n逻辑运算符逻辑运算符u操作数和计算结果都是布尔值u& | !u例:例: score=85 & score=100 year%4=0 & ye
26、ar%100!=0 | year%400=0 46三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n位操作运算符位操作运算符u用于对整数的二进制位进行操作,计算结果仍为整数u& | u例:例: var a=4,b=7,c=2,result; WScript.Echo(a=4(0100),b=7(0111),c=2); result = a&b; WScript.Echo(a&b = + result); result = ac; WScript.Echo(ac; WScript.Echo(ac = + result); result = -12; WScript.E
27、cho(-12 = + result); result = -12; WScript.Echo(-12 = + result); 结果:-1无符号右移结果:230-147三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n赋值运算符赋值运算符u=u组合赋值运算符组合赋值运算符 = += -= *= /= %= &= |= = = = 48三、三、JavaScriptJavaScript编程基础(续)编程基础(续)n条件运算符条件运算符ucondition? true_result : false_resultu例:例:var number, dataOK; numbe
28、r = 5; dataOK = (number0)? true : false; 49四、四、WSHWSH的输入的输入/输出功能输出功能n借助脚本宿主对象所提供的有关方法进行借助脚本宿主对象所提供的有关方法进行n1 1、使用、使用WScriptWScript对象的对象的EchoEcho方法方法u命令格式:命令格式: WScript.Echo(Arg1 ,Arg2 ,Arg3 .); WScript.Echo(Arg1 ,Arg2 ,Arg3 .);u例:例: WScript.Echo(HelloWorld!);WScript.Echo(HelloWorld!); WScript.Echo(He
29、llo,World!); WScript.Echo(Hello,World!); WScript.Echo(1+2,=,1+2); WScript.Echo(1+2,=,1+2); 50四、四、WSHWSH的输入的输入/输出功能(续)输出功能(续)n2 2、使用使用WScript.ShellWScript.Shell对象的对象的PopupPopup方法方法命令格式: iB=object.Popup(strText,nSecondsToWait, strTitle,nType)例:var shell=WScript.CreateObject(WScript.Shell);var BtnCode
30、= shell.Popup(您是会员吗?, 8, 确认框示例, 1);var isMember = (BtnCode=1);var show_text = isMember? 欢迎!请进!: 对不起!我们只对会员开放;WScript.Echo(show_text); 51四、四、WSHWSH的输入的输入/输出功能(续)输出功能(续)n3 3、使用使用 WScript WScript对象的子对象对象的子对象StdInStdIn、StdOut StdOut u只能用只能用CScript执行执行uWScript.StdIn对象的ReadLine方法从标准输入流中读取一行文本使用转换函数parseIn
31、t()和parseFloat()uWScript.StdOut对象的WriteLine方法向标准输出流输出一行文本 52四、四、WSHWSH的输入的输入/输出功能(续)输出功能(续)n3 3、使用使用 WScript WScript对象的子对象对象的子对象StdInStdIn、StdOut StdOut u例例1: var age; WScript.StdOut.WriteLine(请输入你的年龄:); age = WScript.StdIn.ReadLine(); WScript.Echo(比你年长5岁的人今年, age+5, 岁); 请输入你的年龄:20比你年长5岁的人今年 205 岁53
32、四、四、WSHWSH的输入的输入/输出功能(续)输出功能(续)n3 3、使用使用 WScript WScript对象的子对象对象的子对象StdInStdIn、StdOut StdOut u例例2: var age; WScript.StdOut.WriteLine(请输入你的年龄:); age = parseInt(WScript.StdIn.ReadLine(); WScript.Echo(比你年长5岁的人今年, age+5, 岁); 请输入你的年龄:20比你年长5岁的人今年 25 岁 54五、五、JavaScriptJavaScript流程控制流程控制n三种流程结构三种流程结构u顺序顺序u
33、选择选择u循环循环 if 语句语句switch 语句语句while 语句语句for 语句语句dowhile 语句语句55五、五、JavaScriptJavaScript流程控制(续)流程控制(续)nifif语句语句u基本形式基本形式: if (判定条件判定条件) 语句语句1 1; else 语句语句2 2;56五、五、JavaScriptJavaScript流程控制(续)流程控制(续)n例: 判断用户输入的一个年份是否为闰年判断用户输入的一个年份是否为闰年var year;WScript.StdOut.WriteLine(请输入年份:);year = parseInt(WScript.StdI
34、n.ReadLine();if(year%4=0 & year%100!=0 | year%400=0) WScript.Echo(year+年+是闰年);else WScript.Echo(year+年+不是闰年);57五、五、JavaScriptJavaScript流程控制(续)流程控制(续)if(year%4=0 & year%100!=0 | year%400=0) WScript.Echo(year+年+是闰年);else WScript.Echo(year+年+不是闰年);这个if语句的功能能否不用if语句实现?58五、五、JavaScriptJavaScript流程控制(续)流程
35、控制(续)nifif语句(续)语句(续)u形式形式2: if (判定条件判定条件) 语句语句1 1u例例:求:求3个变量个变量x, y, z中的最大值。中的最大值。 max = x; if (maxy) max=y; if (max 24)if (carDoors = 4) & (driverAge 24) premium = 650.00; premium = 650.00; WScript.Echo( WScript.Echo(保险费保险费=+premium+ LOW RISK );=+premium+ LOW RISK ); elseelse premium = 1200.00; pre
36、mium = 1200.00; WScript.Echo( WScript.Echo(保险费保险费=+premium+ HIGH RISK );=+premium+ HIGH RISK ); 61五、五、JavaScriptJavaScript流程控制(续)流程控制(续)nifif语句(续)语句(续)u嵌套嵌套形式形式:一个一个if语句中包含其他的语句中包含其他的if语句语句u例例:等级成绩评定:等级成绩评定 62五、五、JavaScriptJavaScript流程控制(续)流程控制(续)nswitchswitch语句语句 switch(表达式表达式)case 表达式1: 语句1; break
37、;case 表达式2: 语句2; break;default: 语句n+1; break;63五、五、JavaScriptJavaScript流程控制(续)流程控制(续)n例:根据用户输入的一个数字(例:根据用户输入的一个数字(0-60-6),输出它对),输出它对应的是星期几应的是星期几/switch(weekday)switch(weekday) case 0: WScript.Echo(case 0: WScript.Echo(星期日星期日);break;);break; case 1: WScript.Echo(case 1: WScript.Echo(星期一星期一);break;);b
38、reak; case 2: WScript.Echo(case 2: WScript.Echo(星期二星期二);break;);break; case 3: WScript.Echo(case 3: WScript.Echo(星期三星期三);break;);break; case 4: WScript.Echo(case 4: WScript.Echo(星期四星期四);break;);break; case 5: WScript.Echo(case 5: WScript.Echo(星期五星期五);break;);break; case 6: WScript.Echo(case 6: WScri
39、pt.Echo(星期六星期六);break;);break; default:default: WScript.Echo(WScript.Echo(输入有误输入有误);break;);break; 64五、五、JavaScriptJavaScript流程控制(续)流程控制(续)n当一些语句需要反复执行时,就要用到循当一些语句需要反复执行时,就要用到循环结构的语句,即循环语句环结构的语句,即循环语句。nJavaScriptJavaScript常用的循环语句常用的循环语句ufor语句语句uwhile语句语句udowhile语句语句65五、五、JavaScriptJavaScript流程控制(续)流
40、程控制(续)nforfor语句语句u格式格式:for(初值表达式初值表达式; 循环判定式循环判定式; 更新表达式更新表达式) 循环体语句循环体语句;u执行步骤:执行步骤:66五、五、JavaScriptJavaScript流程控制(续)流程控制(续)n例:求例:求var sum=1, deno, sign=1, term;for(deno=2; deno=100; deno+) sign=(-1)*sign; term=sign*(1/deno); sum+=term;WScript.Echo(该多项式的和为:, sum);67五、五、JavaScriptJavaScript流程控制(续)流程
41、控制(续)n例:显示十六进制数的数码例:显示十六进制数的数码0123ABCDEF0123ABCDEFfor(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);68五、五、JavaScriptJavaScript流程控制(续)流程控制(续)nwhilewhile语句语句u
42、格式格式: while(循环判定式循环判定式) 循环体语句循环体语句; ;u执行步骤:执行步骤:69五、五、JavaScriptJavaScript流程控制(续)流程控制(续)n例:求例:求var sum=1, deno=2, sign=1, term;while(deno=100) sign=(-1)*sign; term=sign*(1/deno); sum+=term; deno+;WScript.Echo(该多项式的和为:, sum); 70五、五、JavaScriptJavaScript流程控制(续)流程控制(续)ndo.whiledo.while语句语句u格式:格式: do 循环体
43、语句循环体语句 while(循环判定式循环判定式);u执行步骤:执行步骤:71五、五、JavaScriptJavaScript流程控制(续)流程控制(续)n例:求例:求var sum=1, deno=2, sign=1, term;do sign=(-1)*sign; term=sign*(1/deno); sum+=term; deno+; while(deno=100);WScript.Echo(该多项式的和为:, sum); 72代码的输出结果?代码的输出结果?var i=0, text=;while(i5) text+=i; i+;WScript.Echo(text=, text);v
44、ar i=0, text=;while(i5); text+=i; i+;WScript.Echo(text=, text);73代码的输出结果?代码的输出结果?var i=8, text=;while(i5) text+=i; i+;WScript.Echo(text=, text);var i=8, text=;do text+=i; i+; while(i5);WScript.Echo(text=, text);dowhile的特点:至少执行一次循环体语句的特点:至少执行一次循环体语句74n在什么情况下,循在什么情况下,循环体及判定表达式环体及判定表达式皆相同的皆相同的whilewhil
45、e和和do.whiledo.while不等价不等价?75五、五、JavaScriptJavaScript流程控制(续)流程控制(续)nbreakbreak语句语句u格式格式: break;u功能:功能:结束循环语句(或结束循环语句(或switch语句)的执行语句)的执行ncontinuecontinue语句语句u格式格式: continue;u功能:功能:结束循环体的当次执行结束循环体的当次执行n在循环体中与在循环体中与ifif语句配合使用,控制循环语句配合使用,控制循环 76五、五、JavaScriptJavaScript流程控制(续)流程控制(续)n例:一段楼梯,每步跨例:一段楼梯,每步跨
46、2 2级,最后剩级,最后剩1 1级;每步跨级;每步跨3 3级,最级,最后剩后剩2 2级;每步跨级;每步跨4 4级,最后剩级,最后剩3 3级;每步跨级;每步跨5 5级,最后剩级,最后剩4 4级;每步跨级;每步跨6 6级,最后剩级,最后剩5 5级;每步跨级;每步跨7 7级,则最后不剩。级,则最后不剩。问:楼梯最少有多少级?问:楼梯最少有多少级?var steps=7;while(true) if(steps%3 = 2 & steps%4 = 3 & steps%5 = 4 & steps%6 = 5) break; steps+=7;WScript.Echo(楼梯最少有+steps+级);77五
47、、五、JavaScriptJavaScript流程控制(续)流程控制(续)var text=, i, count=0;for(i=1; i100; i+) if(i%8 = 0) continue; count+; text = text + i + t; if(count % 5 = 0) text += nWScript.Echo(text);例:例:以每行以每行5个数个数的方式的方式输出输出1100之间不之间不能被能被8整除的整除的数数78五、五、JavaScriptJavaScript流程控制(续)流程控制(续)n循环的嵌套循环的嵌套u在一个循环语句的循环体中包含另一个循环语在一个循环
48、语句的循环体中包含另一个循环语句句u例:求例:求1001000之间的所有素数之间的所有素数思路:逐个数进行检查,是素数,则输出判断某数number是否为素数:看能否被2number-1之间的数整除,能,则不是素数79n代码代码var number, submul, count=0;var text=1001000之间的素数:nn;for(number=100; number=1000; number+) for(submul=2; submulnumber; submul+) if(number%submul = 0) break; if(submul = number) text = tex
49、t + number + ; count+; if(count%10 = 0) text += n; WScript.Echo(text);80小结小结nWSHWSH的输入的输入/ /输出输出n流程控制流程控制u选择结构选择结构if;switchu循环结构循环结构for;while;do-whileubreakucontinue81六、调试六、调试JavaScriptJavaScript程序程序n调试程序:排除程序中的错误调试程序:排除程序中的错误n程序错误程序错误u语法错误语法错误程序不能正常执行利用WSH错误提示进行排除u语义错误语义错误程序可以执行,但结果不正确利用调试工具进行排除跟踪程
50、序的执行并查看执行中变量值的变化情况82六、调试六、调试JavaScriptJavaScript程序(续)程序(续)n使用使用MicrosoftMicrosoft脚本编辑器来调试程序脚本编辑器来调试程序n步骤步骤1:在调试器中执行脚本:在调试器中执行脚本 如:如:CScript E:jajS0425-withError.js /X2:设置断点、执行到断点:设置断点、执行到断点3:逐语句执行,观察变量值的变化:逐语句执行,观察变量值的变化4:找到问题后,结束本次调试:找到问题后,结束本次调试执行83七、七、JavascriptJavascript函数函数n函数函数u语句序列语句序列u作用:作用:
51、完成程序中的一个子任务完成程序中的一个子任务u优点:优点:可重用可重用u预定义函数预定义函数u自定义函数自定义函数84七、七、JavascriptJavascript函数(续)函数(续)n预定义函数预定义函数ueval( ) :计算在字符串中的常量表达式的值:计算在字符串中的常量表达式的值uescape( ):将字符串中的非字母数字的将字符串中的非字母数字的ASCII字符转字符转换为换为%AA、或将非、或将非ASCII字符(如汉字)转换为字符(如汉字)转换为%uUUUU。 例例:var escapestr=escape(您好您好! John); 把变量把变量 escapestr 赋值为字符串赋
52、值为字符串 %u60A8%u597D%21%20John%u60A8%u597D%21%20Johnuunescape( ):功能与功能与escape( ) 相反相反85七、七、JavascriptJavascript函数(续)函数(续)n预定义函数(续)预定义函数(续)uisNaN( ) :确定一个变量是否是:确定一个变量是否是NaNuisFinite( ):确定一个数值型变量是否有限:确定一个数值型变量是否有限 例:例:isFinite(1)返回返回true,而,而isFinite(a)返回返回falseuparseFloat( ):将字符串中开头的数字部分转换为:将字符串中开头的数字部分
53、转换为浮点数。浮点数。 例例: parseFloat(123.45abc) /123.45 parseFloat(abc123.45) /NaN parseFloat(true) /NaN uparseInt( )86七、七、JavascriptJavascript函数(续)函数(续)n自定义函数自定义函数u定义格式:定义格式:function 函数名(形参1 ,形参2.) 函数体u例:例:自定义无参函数自定义无参函数function Hello( ) WScript.Echo(您好!);87七、七、JavascriptJavascript函数(续)函数(续)n自定义函数(续)自定义函数(续)
54、u例:判断整数是否为素数的函数例:判断整数是否为素数的函数function isPrime(number) for(submul=2; submulnumber; submul+) if(number%submul = 0) break; if(submul = number) return true; else return false;88七、七、JavascriptJavascript函数(续)函数(续)n给函数添加返回值给函数添加返回值u return 表达式表达式;89七、七、JavascriptJavascript函数(续)函数(续)n函数调用函数调用u形式:形式:函数名函数名(实
55、参1 , 实参2 )u例:调用无参函数例:调用无参函数Hellou调用流程调用流程/Hello();/90七、七、JavascriptJavascript函数(续)函数(续)n函数调用(续)函数调用(续)u例:调用例:调用isPrime函数求函数求1001000之间的素数之间的素数var number, submul, count=0;var text=1001000之间的素数:nn;for(number=100; number3)1 (1=year=3) Cows(year) = 96代码代码function CountCows(year) var cows; if ( year=3 ) r
56、eturn 1; cows = CountCows(year-3) + CountCows(year-1); return cows;WScript.stdOut.Writeline(要计算第几年的牛的数目?n);year = parseInt(WScript.stdIn.Readline();WScript.Echo(第 + year + 年牛的数目为: + CountCows(year);97七、七、JavascriptJavascript函数(续)函数(续)n变量作用域变量作用域u变量的作用范围,在该范围内可引用该变量变量的作用范围,在该范围内可引用该变量u全局变量全局变量 vs. 局部变量局部变量由变量定义所处的位置决定(函数中函数中/函数外函数外)“局部优先”尽量使用局部变量,以避免冲突98小结小结nJavaScriptJavaScript程序调试程序调试n函数函数u定义定义u调用调用u嵌套调用嵌套调用u递归函数递归函数99结束结束