- 程序的三大结构(了解)
- 顺序结构
- 选择结构
- 循环结构
- 程序的分支结构 IF语句
大多数编程语言中最为常用的一个语句就是 if 语句。以下是 if 语句的语法:
if (条件) { 语句块1 } else { 语句块2 }
其中的条件可以是任意表达式;而且对这个表达式求值的结果不一定是布尔值。
ECMAScript 会自动调用 Boolean() 转换函数将这个表达式的结果转换为一个布尔值。如果对 条件求值的结果是 true,则执行语句1,如果对条件求值的结果是 false , 则执行语句2 。 而且这两个语句既可以是一行代码,也可以是一个代码块 (以一对花括号括起来的多行代码) 。
if语句的三种格式:
- if( 条件 ){ 语句1 }
- if ( 条件 ) { 语句1 } else { 语句2 }
3、if ( 条件 ) { 语句1 } else if ( 条件 ){ 语句2 }...else{ 语句 } (else可以省略)
- 程序的多分支结构 switch语句\break语句
switch 语句与 if 语句的关系最为密切,而且也是在其他语言中普遍使用的一种流程控制语句。
switch (值) {
case 值: 语句块; break; 注意case向下的穿透力
......
default: 语句块
}
switch 语句中的每一种情形(case)的含义是: 如果表达式等于这个值(value) ,则执行此case后面的语句 。而 break 关键字会导致代码执行流跳出 switch 语句。如果省略 break 关键字,就会导致执行完当前 case 后,继续执行下一个 case。最后的 default 关键字则用于在表达式不匹配前面任何一种情形的时候,执行此代码(可以省略)。
- 循环的概念和意义
循环语句:就是程序路径的一个回路,可以让一部分代码重复执行。
- while和do-while循环的使用
- while( 限制条件 ){ 重复执行的语句块 }
while 语句属于前测试循环语句,也就是说,在循环体内的代码被执行之前, 就会对限制条件 求值。因此,循环体内的代码有可能永远不会被执行。
-
- do { 重复执行的语句块 }while( 限制条件 );
do-while 语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试限制条件。
换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次。
- for循环的使用
for 语句也是一种前测试循环语句,但它具有在执行循环之前初始化变量和定义循环后要执行的 代码的能力。
- 跳出循环
break 语句会立即退出整个循环,强制继续执行循环后面的其它语句。
continue 语句代表立即退出循环, 但退出的是当前循环继续执行下一次循环。
- 死循环的理解。
- 无法靠自身的控制终止的循环即死循环
- 浏览器的 Debug工具使用
- 了解循环的执行过程(断点),以及调试代码的基本能力
- 代码调试的方式
- 强化练习
- 开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者
体重是否合适(身高:cm)
- 案例:输入分数,判定成绩等级(if和switch两种写法)(5个等级0-100)
- 输入月份,显示当月的天数
- 打印100以内 7的倍数
- 求出1-1/2+1/3-1/4…..1/100的和
- 打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
- 利用星型字符(*)输出如下图形:三角形和梯形
- 打印100–200之间所有能被3和7整除的数
- 求100-999之间的水仙花数。
- 打印九九乘法表。
- 综合应用
- 篮球从5米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球的高度是0.1米。
- 有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4粒,每一个格内都比前一小格加一倍,棋盘上放的所有芝麻的重量。
- 输出100-200之间所有的素数。
- 求1+2!+3!+...+20!的值。
- 输入一个日期,判断这个日期是这一年的第几天
/*alert('start');//window.alert 浏览器内部的实现,具有阻止后面代码执行的特性
document.write('<div>1</div>');
document.write('<div>2</div>');
document.write('<div>3</div>');
alert('end');*/
//1.顺序结构:代码从上往下,从左往右,从内往外 执行的。
/*document.write('<div>1</div>');
document.write('<div>2</div>');
document.write('<div>3</div>');*/
//2.分支语句--选择
//var num=prompt('请输入一个数字:');
//判断数字是奇数还是偶数。--选择
//如果if 条件num%2==0 偶数
//否则else 奇数
//分支语句的基本结构
//{}:写入一条或者多条语句。
/*if(条件?){满足条件执行的语句块}
else{ 不满足条件执行的语句块 }*/
/*if(num%2==0){
alert('你输入的数字是:' + num);
alert('它是偶数');
}
else{
alert('你输入的数字是:' + num);
alert('它是奇数');
}*/
//3.循环语句:反复执行满足条件代码。
//循环的基本控制结构
/*while(限制条件){
满足限制条件反复执行循环体(代码块).
}*/
/*document.write('<ul>');
document.write('<li>1</li>');
document.write('<li>2</li>');
document.write('<li>3</li>');
document.write('<li>4</li>');
document.write('<li>5</li>');
document.write('<li>6</li>');
document.write('<li>7</li>');
document.write('<li>8</li>');
document.write('<li>9</li>');
document.write('<li>10</li>');
document.write('</ul>');*/
/*document.write('<ul>');
var num=1;
while(num<=10000){
document.write('<li>'+num+'</li>');
num++;
}
document.write('</ul>');*/
//if语句三种结构
//if语句的条件自动调用Boolean(),将条件的结果转换成布尔值。
//数字非0即真,字符串非空即真 null undefined都是false
//核心:最大的可能留给if。满足if 那么else可以不执行,同时else可以省略。
//if嵌套比多条件性能要好一些。
//1.单分支--1种情况
//单分支的基本结构
//if(条件){满足条件执行的语句块}
/*if('饿了困了'){
alert('喝红牛');
}*/
//如果输入的是数字,输出。
/*var num=prompt('请输入一个数字:');
if(!isNaN(num)){//是数字。
alert(num);
}*/
//2.双分支--两种情况
//if(条件?){满足条件执行的语句块} else{ 不满足条件执行的语句块 }
/*var num=prompt('请输入一个数字:');
if(!isNaN(num)){//是数字。
alert(num);
}
else{//不是数字
alert('输入有问题');
}*/
//核心:最大的可能留给if。满足if 那么else可以不执行。
/*var num=prompt('请输入一个数字:');
if(!isNaN(num)){//是数字。
alert(num);
}
else{//不是数字
fdklasfjdsalkfjladskf
}*/
//3.多分支--多种情况
//if(条件1){满足条件1执行的语句块} else if(条件2){满足条件2执行的语句块}....else{其它情况执行的语句块}
//多条件else可以省略。
/*var num=prompt('请输入一个数字:');//检测当前的数字>0 <0 =0
if(num>0){
alert('正数');
}
else if(num<0){
alert('负数')
}
else if(num==0){
alert(0)
}
else{//可以省略
alert('输入错误');
}*/
//1.if的嵌套使用
//输入一个五位数,分别输出各十百千万位。
/*var num=prompt('请输入一个五位数:');
//判断是否是数字
if(!isNaN(num)){//是数字
//是数字,继续判断是否有五位。
if(num>=10000 && num<=99999){
var gw=num%10;
var sw=parseInt(num%100/10);
var bw=parseInt(num%1000/100);
var qw=parseInt(num%10000/1000);
var ww=parseInt(num/10000);
document.write('我输入的数字是:'+num+'<br/>');
document.write('个位:'+gw+'<br/>');
document.write('十位:'+sw+'<br/>');
document.write('百位:'+bw+'<br/>');
document.write('千位:'+qw+'<br/>');
document.write('万位:'+ww);
}else{
alert('你输入的数字不符合规则');
}
}else{
alert('输入的不是一个数字');
}*/
//2.多条件语句和if的嵌套
//案例:输入分数,判定成绩等级(5个)
var score=prompt('请输入分数(0-100):');
if(!isNaN(score))
{
if(score>=0 && score<=100)
{//不允许这样写: 0<=score<=100
//通过多条件判断等级。
if(score==100){
alert('天才');
}
else if(score<100 && score>=90){
alert('优秀');
}
else if(score<90 && score>=80){
alert('良好');
}
else if(score<80 && score>=70){
alert('一般');
}
else if(score<70 && score>=60){
alert('及格');
}
else{
alert('不及格');
}
}
else{
alert('你输入的不是一个合法的分数');
}
}
else{
alert('你输入的不是数字');
}
/*if(!isNaN(score) && score>=0 && score<=100){
}
else{
alert('你输入的有问题');
}*/
//1.开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者
//体重是否合适(身高:cm)
//思路:输入身高和体重,返回体重是否符合(偏胖/标准/偏瘦)
//(身高-108)*2=体重+10
//(身高-108)*2=体重-10
var height=prompt('请输入身高cm:');
var weight=prompt('请输入体重:');
var maxweight=(height-108)*2+10;//标准里面的最大值
var minweight=(height-108)*2-10;//标准里面的最小值
//判断条件
if(weight>maxweight){
alert('偏胖');
}
else if(weight<minweight){
alert('偏瘦');
}
else if(weight>=minweight && weight<=maxweight){
alert('标准');
}
else{
alert('输入有误');
}
//switch:适合多分支的语句
//基本结构
//value:具体值,switch的value和case后面的value进行恒等比较。
//如果switch的value和case后面的value完全恒等,执行case后面的语句块。
//break:跳出分支语句,switch结束了。
//default:代表其他情况,相当于上面的每一个case都不符合,走default后面的语句块。default可以省略。
/*switch(value){
case value: 语句块; break;
case value: 语句块; break;
case value: 语句块; break;
case value: 语句块; break;
case value: 语句块; break;
case value: 语句块; break;
default: 语句块;
}*/
/*var num=prompt('请输入一个数字0-6:');
switch(Number(num)){
case 0: alert('星期日'); break;
case 1: alert('星期一'); break;
case 2: alert('星期二'); break;
case 3: alert('星期三'); break;
case 4: alert('星期四'); break;
case 5: alert('星期五'); break;
case 6: alert('星期六'); break;
default: alert('输入有误!');
}*/
/*var num=prompt('请输入一个数字0-6:');
switch(Number(num)){
case 0: alert('星期日'); break;
case 1: alert('星期一');
case 2: alert('星期二');
case 3: alert('星期三'); break;
case 4: alert('星期四'); break;
case 5: alert('星期五'); break;
case 6: alert('星期六'); break;
default: alert('输入有误!');
}*/
//case具有穿透力。因为没有break
//案例:输入分数,判定成绩等级(switch)(5个等级0-100)
/*var score=prompt('请输入一个分数:');
switch(true){
case score==100: alert('天才'); break;
case score<100 && score>=90: alert('优秀'); break;
case score<90 && score>=80: alert('良好'); break;
case score<80 && score>=70: alert('一般'); break;
case score<70 && score>=60: alert('及格'); break;
case score<60 && score>=0: alert('不及格'); break;
default:alert('输入有误!');
}*/
//利用switch后面的值和case后面表达式的值进行恒等的匹配。
//if和switch有哪些区别
//if适用於单分支,双分支,多分支,switch 多分支
//switch匹配的是恒等关系。 if条件是布尔值
//三目运算符:(?:)很多情况下取代if...else
//基本控制结构。
//条件表达式? 成立执行的代码 : 不成立执行的代码
//var num=prompt('请输入一个数字:');
/*if(!isNaN(num)){//是数字。
alert(num);
}
else{//不是数字
alert('输入有问题');
}*/
//!isNaN(num)?alert(num):alert('输入有问题');
//3.输入月份,显示当月的天数
//大月31:1,3,5,7,8,10,12
//小月30:4,6,9,11
//平月:2 闰年:29 非闰年:28
//闰年:能被4整除同时不能被100整除或者能被400整除。
var year=prompt('请输入一个四位的年份:');
var month=prompt('请输入一个月份:');
switch(Number(month)){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: alert(31); break;
case 4:
case 6:
case 9:
case 11: alert(30); break;
case 2:
if(year%4==0&&year%100!=0||year%400==0){//闰年
alert(29);
}else{//非闰年
alert(28);
}
break;
default:alert('输入有误!');
}
<script type="text/javascript">
/*var str='<table border=1><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr><tr><td>111111</td></tr></table>';
document.write(str);*/
//循环语句:就是程序路径的一个回路,可以让一部分代码重复执行。
/* var str='<ul>';
str+='<li>111111111</li><li>222222222</li>';
str+='</ul>';//字符串的拼接(叠加) str=str+'</ul>';
alert(str);
document.write(str);*/
//1.while循环。
//循环的基本控制结构
/*while(条件){
满足条件反复执行的循环体
}*/
var num=1;
var str='<ul>';
while(num<=100){
str+='<li>'+num+'</li>';
num++;
}
str+='</ul>';*///字符串的拼接(叠加) str=str+'</ul>';
//alert(num);//11
//alert(str);
//document.write(str);
</script>
<script type="text/javascript">
//死循环
/*while(true){
}
alert('hehe');*/
//while循环的嵌套:外层循环一次,内层循环结束。
var num=1;
while(num<=10){
document.write('我是外部循环输出的内容'+num+'<br/>');
var num1=1;
while(num1<=10){
document.write(' 我是内部循环输出的内容'+num1+'<br/>');
num1++;
}
num++;
}
</script>
<script type="text/javascript">
//sum=1+2+3+4+5+6+7+...100=5050
/*var sum=0;//和
var i=1;//i:累计的每一个数字。
while(i<=100){
sum+=i;//sum=sum+i; 1.sum=0+1=1; 2.sum=1+2=3; 3.sum=3+3=6 sum每一次累加的结果
i++;
}
alert(sum);*/
//8.打印100–200之间所有能被3和7整除的数
/*var num=100;
while(num<=200){
if(num%3==0 && num%7==0){
document.write(num+'<br>');
}
num++;
}*/
/*var str='<table>';
var row=1;
while(row<=9){
str+='<tr>';
var col=1;
while(col<=row){
str+='<td>'+col+'x'+row+'='+col*row+'</td>';
col++;
}
str+='</tr>';
row++;
}
str+='</table>';*/
var str='<table>'
for(var a=1;a<=10;a++){
str+='<tr>'
for(var b=1;b<=a;b++){
str+='<td>'+'</td>'
}
str+='</tr>'
}
str+='</table>'
document.write(str);
</script>
script type="text/javascript">
//while 语句属于前测试循环语句,也就是说,在循环体内的代码被执行之前, 就会对限制条件 求值。因此,循环体内的代码有可能永远不会被执行。
/*var num=5;
while(num<5){//前测试。
alert('ok');
}*/
//do { 重复执行的语句块 }while( 限制条件 );
//do-while 语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试限制条件。换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次。
var num=5;
do{//循环体内的代码至少会被执行一次。
alert('ok');
}while(num<5);
</script>
<script type="text/javascript">
//for循环:简单将for循环理解成while循环的简写。
//for(1初始值;2限制条件;3累加累减){4满足条件执行的循环体}
//执行循环:执行1-->执行2--执行4-->执行3->执行2-->执行4-->执行3->执行2-->执行4-->执行3...
//sum=1+2+3+4+5+6+7+...100=5050
/*var sum=0;//和
var i=1;//i:累计的每一个数字。
while(i<=100){
sum+=i;//sum=sum+i; 1.sum=0+1=1;
2.sum=1+2=3; 3.sum=3+3=6 sum每一次累加的结果
i++;
}
alert(sum);*/
/*for(var sum=0,i=1;i<=100;i++){
sum+=i;
}
alert(sum);*/
//8.打印100–200之间所有能被3和7整除的数
/*var num=100;
while(num<=200){
if(num%3==0 && num%7==0){
document.write(num+'<br>');
}
num++;
}*/
/*for(var num=100;num<=200;num++){
if(num%3==0 && num%7==0){
document.write(num+'<br>');
}
}*/
/*var str='<table>';
var row=1;
while(row<=9){
str+='<tr>';
var col=1;
while(col<=row){
str+='<td>'+col+'x'+row+'='+col*row+'</td>';
col++;
}
str+='</tr>';
row++;
}
str+='</table>';
document.write(str);*/
/*var str='<table>';
for(var row=1;row<=9;row++){
str+='<tr>';
for(var col=1;col<=row;col++){
str+='<td>'+col+'x'+row+'='+col*row+'</td>';
}
str+='</tr>';
}
str+='</table>';
document.write(str);*/
//for循环的死循环
for(var i=0;i<=0;){}//死循环
for(var i=0;;){}//死循环
for(;;){}//死循环
for(var i=0;i<=0;i++){}//ok
alert('hehe');
</script>
//break 语句会立即退出整个循环,强制继续执行循环后面的其它语句。
//continue 语句代表立即退出循环, 但退出的是当前循环继续执行下一次循环
/*for(var i=1;i<=10;i++){
if(i==5){
//break;//退出整个循环
continue;//退出的是当前循环继续执行下一次循环
}
document.write(i+'<br/>');
}*/
/*for(var i=1,j=1; i<=5; i++,j++){//一个条件限定两个值
document.write(i);//1,2,3,4,5
}
console.log(i);//6
console.log(j);//6*/
/*for(;;){}
for(var i=1;i<=10;i++){}
alert(i);//11*/
<script type="text/javascript">
/*document.write('abc');
alert('hello');
document.write('def');*/
/*var str='<table>';
var row=1;
while(row<=9){
str+='<tr>';
var col=1;
while(col<=row){
str+='<td>'+col+'x'+row+'='+col*row+'</td>';
col++;
}
str+='</tr>';
row++;
}
str+='</table>';
document.write(str);*/
//ReferenceError:引用错误,未找到某个变量或者引用。
//sytaxError:语法错误。写错了什么。
//个人调错习惯。
//利用代码的执行顺序,中间添加输出,找出错误。
//alert或者console.log()
/*document.write('第1行代码');
document.write('第2行代码');
document.write('第3行代码');
alert(1);
document.write('第4行代码');
document.write('第5行代码');
alert(2);
document.wrte('第6行代码');
document.write('第7行代码');
alert(3);
document.write('第8行代码');
document.write('第9行代码');
document.write('第10行代码');
document.write('第11行代码');*/
//断点调式:debugger或者控制面板sources 找到文件,通过代码前面的行号添加端点。
//for(var i=1,sum=0;i<=10;i++){
//debugger;
//sum+=i;
//}
//alert(sum);
//F8:每一次循环。
//F10:循环每一步执行的过程。利用右侧的watch监听每一步操作值的变化。
//打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
/*for(var i=1000,times=0;i<=2000;i++){
if(i%4==0 && i%100!=0 || i%400==0){
document.write(i+' ');
times++;
if(times%4==0){
document.write('<br>');
}
}
}*/
//利用星型字符(*)输出如下图形:三角形和梯形
/*for(var i=1;i<=10;i++){
for(var j=1;j<=10+i;j++){
document.write('*');
}
document.write('<br>');
}*/
//输出100-200之间所有的素数。 100/(2-99) 101/(2-100)
//素数:只能被1和自身整除的数。
for(var i=100;i<=200;i++){
var hehe=1;//随意的标记,满足标记是素数
for(var j=2;j<i;j++){
if(i%j==0){//不是素数。
hehe=2;//只要满足条件,说明不是素数。标记被改变了。
break;//终止循环。
}
}
if(hehe==1){//值没有变化,不符合上面的判断,是素数。
document.write(i+'<br />');
}
}
//2*2*2=2^3
//Math数学下面的常见的静态方法。
//Math.pow(2,3); 求2的3次幂 2:底数 3:指数。
//alert(Math.pow(2,3));//8
//var num=3.1465;
//数字对象下面:toFixed()方法:括号里面放置保留的小数的位数。
//alert(num.toFixed(2));//3.15 具有四舍五入功能。
//var sum=1*2*3*4*5=120 5!
/*for(var i=1,sum=1;i<=5;i++){
sum*=i;
}
alert(sum);*/
两种debugger方式,一种在代码中设置debugger;然后运行程序;另一种,在运行程序,进去souce,对要调试的那行前面点击 </script>