1、清华大学出版社 1,第5章JavaScript的控制语句,主要内容 简单程序 分支控制语句 循环控制语句 跳转控制语句 函数 递归函数分支控制语句是根据表达式或变量的取值来选择所执行的分支。 循环控制语句是在一定条件下使程序能反复执行某个程序模块。 跳转控制语句允许程序在某种条件下改变常规执行顺序,直接跳转到某个特定的位置继续执行。,清华大学出版社 2,5.1简单程序,简单程序是指该程序自始至终按照语句序列的排列顺序执行。 【例5-1】编制程序计算1+2+3+4+5。var sum=0; sum=sum+1; sum=sum+2; sum=sum+3; sum=sum+4; sum=sum+5
2、; document.write (sum); ,清华大学出版社 3,5.2分支控制语句,主要内容 5.2.1if语句 5.2.2switch语句 5.2.3多分支程序,清华大学出版社 4,5.2.1if语句,1.if语句 if语句的标准语句模式如下: if () else ,清华大学出版社 5,5.2.1if语句,2.简单判断语句 格式:if () 3.选择判断语句 格式:if () else 邻近匹配原则:else语句总是和同一个模块中的前面最近一个if语句相匹配。 【例5-2】程序邻近匹配原则示例。 x=0; if (ab) if (cd) x=1;if (e=f) x=2;else x
3、=3; else x=4;,清华大学出版社 6,5.2.2switch语句,switch ()case :; break;case :; break;case :; break;/这里可添加任意多个case语句default:隐含语句; ,清华大学出版社 7,5.2.2switch语句,【例5-3】用switch语句构成的程序。var x=1,y=0,a=0,b=0; switch (x) case 1:switch (y) case 0:a+;break;case 1:b+;break;case 2:a+;b+;break; document.write(“a=“,a); document.
4、write(“b=“,b); ,清华大学出版社 8,5.2.3多分支程序,【例5-4】程序代码缩进书写的示例。var m,season; m=parseInt(prompt(“m=“,“0“); if (m=12|m=1|m=2)season“冬“; else if (m=3|m=4|m=5)season“春“; else if (m=6|m=7|m=8)season“夏“; else if (m=9|m=10|m=11)season“秋“; elseseason=“illegal months“; document.write(“季节是“+season+“季“); ,清华大学出版社 9,5.
5、2.3多分支程序,1.嵌套if语句的示例 【例5-5】有如下的分段函数: y=-1 (x0) 写程序,输入x的值,再计算并输出y的值。var x,y; x=parseInt(prompt(“x=“,“0“); if (x,清华大学出版社 10,5.2.3多分支程序,2.嵌套switch语句的示例 【例5-6】switch语句嵌套的示例。var m,season; m=parseInt(prompt(“m=“,“0“); switch (m) case 12: case 1: case 2: season=“冬“; break;case 3: case 4: case 5: season=“春“
6、; break;case 6: case 7: case 8: season=“夏“; break;case 9: case 10: case 11:season=“秋“; break;default: season=“illegal months“ document.write(“季节是“+season+“季“); ,清华大学出版社 11,5.3循环控制语句,主要内容 5.3.1for循环 5.3.2for-in循环 5.3.3while循环 5.3.4dowhile循环 5.3.5循环程序的组成 5.3.6多重循环,清华大学出版社 12,5.3.1for循环,1.for循环语句的标准语句模
7、式 for循环允许程序员指定一个程序模块的重复执行次数,语句模式: for (;)循环体 2.for循环的执行过程 【例5-7】计算阶乘的程序一。var fact=1; var n=5; for (i=1;i,清华大学出版社 13,5.3.1for循环,【例5-8】计算阶乘的程序二。如果修改for循环语句中的三个参数,则可以得到计算阶乘的第二个程序,且实现功能不变。var n=10; fact=n; for (i=n;i=1;i-) fact=fact*i; document.write(fact); document.write(); ,清华大学出版社 14,5.3.2for-in循环,fo
8、r-in循环是一个指定对象中的所有属性值,或一个指定数组中的所有元素值。 for-in循环的一般语句模式如下: for (变量 in 对象或数组)循环体 【例5-9】一个使用for-in循环的示例。var a,i; a=new Array(2,4,6,8,10,1,3,5,7,9); for (i in a)document.write(ai+“,“); ,清华大学出版社 15,5.3.3while循环,1.while循环的语句模式 while循环的语句模式如下: while () 循环体 【例5-10】有一张厚一毫米的布,面积足够大,将它数次对折。问对折多少次,其厚度可以达到珠穆朗玛峰的高度
9、。var n=0; var h=1; while (h8848000) n=n+1;h=h+h; document.write(“对折次数为“+n);,清华大学出版社 16,5.3.3while循环,【例5-11】使用while循环来计算阶乘的程序。var fact=1; var i=1; while (i,清华大学出版社 17,5.3.4dowhile循环,1.dowhile循环的标准语句模式 dowhile循环的标准语句模式如下: do 循环体 while () 2.dowhile循环的执行过程 【例5-12】计算阶乘的程序示例。var fact=1; var i =0; var n=5;
10、 do i+;fact=fact*i while (i,清华大学出版社 18,5.3.5循环程序的组成,循环程序由四部分组成: 循环初始化部分 循环控制部分 循环工作部分 循环修改部分,清华大学出版社 19,5.3.6多重循环,【例5-13】编写百鸡问题的计算程序。如果公鸡五元一只,母鸡三元一只,小鸡一元三只,要求用100元购得100只鸡。var cock,hen,chick; for (cock=1;cock公鸡数:“,cock);document.write(“母鸡数:“,hen);document.write(“小鸡数:“,chick); ,清华大学出版社 20,5.3.6多重循环,【例
11、5-14】百鸡问题的计算程序二。var cock,hen,chick; for (cock=1;cock公鸡数:“,cock);document.write(“母鸡数:“,hen);document.write(“小鸡数:“,chick); ,清华大学出版社 21,5.4跳转控制语句,主要内容 5.4.1break语句 5.4.2continue语句,清华大学出版社 22,5.4.1break语句,break语句又称为间断语句,它可以用在如下两条语句中。 在case 语句之后的语句中附加break跳转控制语句,表示执行到break语句时要跳出整个switch语句的语句体部分。 在循环结构中,使
12、用break语句使流程跳出当前循环体,从而结束当前正在进行的循环过程。 【例5-15】循环体中的break语句执行示例。var s=0; for (i=1;i5) break;document.write(“s=“+s); ,清华大学出版社 23,5.4.2continue语句,continue语句又称为继续语句,它的功能是结束本次循环,即跳过本次循环中余下的全部语句,接着再一次进入循环。 【例5-17】用continue语句构成的程序示例。var i,j; for (i=1;ii) continue;document.write(i*j+“ “); document.write(“); ,清
13、华大学出版社 24,5.4.2continue语句,【例5-18】使用if语句构成的程序示例。var i; for (i=1;i,清华大学出版社 25,5.5函数,主要内容 5.5.1返回语句 5.5.2调用函数 5.5.3函数调用中的参数传递 5.5.4函数的嵌套调用 5.5.5全局变量和局部变量,清华大学出版社 26,5.5.1返回语句,返回语句的格式为:return () 说明: 用于表示函数的返回值。 return语句的功能是结束本次函数的执行过程,使之返回到调用程序中。 定义函数必须以“return ()”语句结尾,以function语句开头。 若有可选项“()”,则函数返回该表达式
14、的值,否则返回逻辑真。 定义函数的名称必须是唯一的。,清华大学出版社 27,5.5.2调用函数,调用函数语句的格式为:() 【例5-19】已知整型常数m和n,编程计算组合值m!/n!/(m-n)!。function comp(k) /定义函数comp()var fact=1;for (i=1;i,清华大学出版社 28,5.5.3函数调用中的参数传递,【例5-20】将计算长方形面积的运算编写成函数area,以便说明带参数的函数调用。function area(x,y) /定义函数area()var p;p=x*y;return p; var a=5,b=10,s; s=area(a,b); do
15、cument.write(“长方形面积=“,s); ,清华大学出版社 29,5.5.4函数的嵌套调用,【例5-21】求1+(1+2)+( 1+2+3)+ +( 1+2+3+4+5+6+7+8+9+10)。function sum1(n) /定义函数sum1()var sum=0,i;for (i=1;i,清华大学出版社 30,5.5.5全局变量和局部变量,说明: 全局变量在全部程序模块中均有效,而局部变量只在定义它的程序模块以及它的下层程序模块中才有效。 全局变量只能用显式命令才能清除,而局部变量在所定义的程序模块运行结束时便自动清除了。 在主程序中定义的变量,将在全部的程序模块中有效,作用相
16、当于全局变量。 在一个语句块内定义的局部变量能屏蔽同名的全局变量和高层程序模块中的同名局部变量,当该模块运行结束时,被屏蔽的全局变量将自动恢复。,清华大学出版社 31,5.6递归函数,主要内容 5.6.1递归函数分析 5.6.2递归函数示例,清华大学出版社 32,5.6.1递归函数分析,JavaScript语言中允许函数进行递归调用。 一个计算问题要采用递归调用时,必须符合以下三个条件: 必须有一个明确的结束递归调用过程的条件。 可以应用这一转化过程使问题得以简化并加以解决。 可以将要求解的计算问题转化为另一个简化的计算问题,而二者之间的解法是完全相同的,被处理的对象必须有规律地递增或递减。,
17、清华大学出版社 33,5.6.2递归函数示例,【例5-22】编写递归函数求Fibonacci数列中的第20个数。既0,1,1,2,3,5,8,13,21,34,55等,其中Fibonacci数列F(n)的定义为: f(0)=0 f(1)=1 f(n)=f(n-1)+f(n-2)function f(n) /定义函数f()if (n=0) return 0;else if (n=1) return 1;else return f(n-1)+f(n-2); var n=20; document.write(“Fibonacci数列中的第20个数是“+f(n); ,清华大学出版社 34,5.6.2递
18、归函数示例,【例5-23】有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大。用函数来描述递归过程如下。 age(n)=10 (n=1) age(n)=age(n-1)+2 (n1)function age(n) if (n=1)a=10;elsea=age(n-1)+2;return a; var m; m=age(5); document.write(“第5个人的岁数是“+m); ,清华大学出版社 35,5.7教学要点,本章内容主要包
19、括: JavaScript的控制语句 两条分支控制语句 三条循环控制语句 两条跳转控制语句 如何编写普通函数和递归函数并进行调用。 要求深刻理解各种控制语句和函数构造方法,会编写关于累和法、累积法、素数判断、费波那契数列、枚举法、排序、递归等方面的程序。,清华大学出版社 36,习题5,编程题 将输入的两个整数中绝对值较大的一个显示出来。 在终端上输入两个整数值,判断第一个能否被第二个整除,并在终端上显示适当信息。 在一维数组score内放10个学生成绩,求出平均成绩。 用选择法对数组中10个整数按由小到大排序。 显示水仙花数。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。 输出如下的杨辉三角形(9行9列)。 显示100至500之间的全部素数,要求每行放10个数。,