4_2:流程控制:[ for循环 ] + 断点调试

重点掌握

//1 for循环的执行流程
//2 嵌套循环: 外层循环执行一次 里面循环执行全部
//3 打印倒三角 里层变量j = 外层循环的i
//4 打印正三角 里层变量j <= 外层变量的i [ 九九乘法表也是正三角 ]
//5 分析比写代码要重要,伪代码的重要性

一  for循环

1)基本语法

//1 for循环 重复执行某些代码 通常和计数有关系
//2 语法结构
for( 初始化变量; 条件表达式; 操作表达式 ) {
  //循环体
}
//3 初始化变量:var i = 0;通常用于计数器使用 i是index的索引
//4 条件表达式:用来决定每一次循环是否继续执行,终止的条件
//5 操作表达式:每次循环最后执行的代码,经常用于计数器的更新[ 递增或递减 ]

2)for循环执行流程图

第一次循环

第二次循环

第一轮循环
  1 先执行 计数器变量 [var i = 0] 但是这句话在for循环里只执行一次
  2 去执行 条件表达式 [ i < 100 ] 条件满足 执行循环体代码 条件不满足直接退出循环
  3 去执行 操作表达式 [ i++ ] 此刻i的值已经改变
第二轮循环
  4 执行 条件表达式 [ i <100 ] 去判断自增后的i是否满足条件
  5 条件满足 执行循环体代码 条件不满足退出循环
  6 往复循环 直到i的值不满足 条件表达式

二  循环案例练习

1)求1-100的累加和

var sum = 0;//求和的变量
for (var i = 1; i <= 100; i++) {
  //sum = sum + i;
   sum += i;//执行了加等操作
}
console.log(sum);//5050

2)求1-100之间所有数的平均值

var num = 0;//求和变量
var avg = 0;//平均值变量
for (i = 0; i<=100; i++) {
    num += i;
}
avg = num / 100;//求出平均值
console.log(avg);//50.5 打印平均值

3)求1-100之间所有偶数和奇数的和

var even = 0;//变量存放偶数和
var odd = 0;//变量存放奇数和
for (var i = 1; i <= 100; i++) {
    if (i % 2 == 0) {
        even += i;
    } else {
        odd += i;
    }
}
console.log(even);//2550 打印偶数和
console.log(odd);//2500 打印奇数和

4)求1-100之间能被3整除的数字之和

var num = 0;
for (i = 0; i<=100; i++) {
    if (i % 3 == 0) {
        num += i;
    }
}
console.log(num);//1683

5)求学生成绩 ( 重点 )

//需求:用户输入班级人数,之后依次输入每个人的成绩,最后打印出班级总分和平均分

var num = prompt('请输入班级总人数');//班级总人数变量
var sum =0;//求总分的变量
var avg = 0; //求平均分变量

for (var i = 1; i<= num; i++) {
    var score = prompt('请第'+ i + '个同学的分数');//保存分数的变量
   //从用户取来的数据是字符串 需要用parseFloat转换为数字型
    sum = sum + parseFloat(score);//累加求出总成绩
}
avg = sum / num;//求出平均成绩
alert('班级总成绩是' + sum);
alert('班级平均成绩是' + avg);
  

6)一行打印五颗星星 [ 追加字符串 ]

var num = prompt('请输入打印星星的数量');//打印星星总数的变量
var str = '';//定义空字符串
for (var i = 1; i<= num; i++) {
    str = str + '';//追加字符串
}
alert(str);

三 循环嵌套

1)执行过程

//1 我们可以把里层的循环看做是外层循环的执行语句
//2 外层循环执行一次, 里层循环要执行全部
for (var i = 1; i<=3; i++) {
    console.log('这是外层循环的第'+ i +'次');
    for (var j = 1; j <= 3; j++) {
        console.log('内层循环第'+ j +'次');
    }
}
执行结果

案例练习

1)打印五行五列星星

//1 内层循环负责一行打印五个星星
//2 外层循环负责打印五行
var str = '';
for (var i = 1; i<=5; i++) {
    for (var j = 1;j <= 5; j++) {
        str = str + '';
    }
    str = str+'\n';
}
console.log(str);

2)打印倒三角

//核心算法:里层的个数的变量j = 行数的变量i
var str = '';
for (var i = 1; i<=10; i++) {//外层循环控制行数
    for (var j = i;j <= 10; j++) {//里层循环打印的个数不一样 核心是 j = i
        str = str + '';
    }
    str = str+'\n';//换行
}
console.log(str);
执行流程
外层第一轮循环 i=1 j=i 1-10 打印10个星星
外层第二轮循环 i=2 j=i 2-10 打印9个星星
外层第三轮循环 i=3 j=i 3-10 打印8个星星
依次类推 完成案例

3)九九乘法表 [ 和打印正三角一样 ]

// 一共有9行,但是每行的个数不一样,因此需要用到双重 for 循环
// 外层的 for 循环控制行数 i ,循环9次 ,可以打印 9 行
// 内层的 for 循环控制每行公式  j
// 核心算法:每一行 公式的个数正好和行数一致, j <= i;
// 每行打印完毕,都需要重新换一行
var str = '';
for (var i=1;i<=9;i++) {//外层循环控制行数
    for (var j=1;j<=i;j++) {//内层循环控制单行的个数 核心算法:j <= i
       // 1 × 2 = 2 
    str += j + '×' + i + '=' + i *j + '\t';// \t是空格
    }
    str += '\n';//添加换行

}
console.log(str);

四  断点调试 [ 重点 ]

1)开启调试

//1 浏览器F12 选择 Sources
//2 对想要打断点的代码 在行号上单击一下
//3 刷新浏览器
//4 选择右侧的 向下的箭头 查看程序执行顺序

  点击箭头  查看代码执行顺序

  鼠标放在变量上   可以看到现在循环到了第几轮

  在右侧 加号输入变量i 也可以看到循环到了第几轮

2)取消调试 

点击代码行号 取消选中  再刷新浏览器 就可以了。

  

posted @ 2021-02-10 10:37  棉花糖88  阅读(353)  评论(0编辑  收藏  举报