# 【知识精讲】使用循环结构
## Part1
在之前的课程中,我们已经向大家介绍了常规的顺序结构,以及条件判断结构——现在,我们要向大家介绍一种新的结构:循环结构。
什么是循环结构呢——简单地说,有些时候我们可以一遍又一遍地执行相同的语句。比如说,如果我们需要求一个数列的和,1+2+31+2+31+2+3一直加到nnn,这个时候我们该怎么计算呢?有的同学就说了,这个很好办啊——直接用算术级数求和公式就可以了。没错,在数学中,我们有很多的求数列前nnn项和的公式,用这样的公式就可以计算出前n项和。
## Part2
不过有的时候,一个数列的每一项之间都有规律可循,但是并没有总的求和公式(或者很难推导出求和公式)——这样的情况也是存在的。而且,使用计算机解题的时候,我们的思路就应该开阔一些——我们不一定要推导出求和公式,而是可以化繁为简,直接让计算机手动进行一次一次的加法运算就可以了。
这个时候,就需要应用到我们接下来要学的循环结构了——执行重复性很高的工作,对于我们人来说显然是低效而痛苦的,但是对于计算机来说就完全不存在这个问题了。计算机的运算速度很快,哪怕是几千次甚至上万次循环,它也可以在极短的时间内完成。
## Part3
简而言之,对于计算机来说,进行用相同算法反复处理不同数据的运算,是非常合适的——计算机先天就适合做这种“苦力”的工作。而要让计算机做这件工作,我们需要用到的,就是我们接下来要介绍的循环结构。
首先让我们来认识一下第一种循环:`do...while`循环——它的常见形式如下:
~~~
do {
[代码块]
} while(a);
~~~
跟之前学过的`switch`一样,这里的`a`也表示一个表达式——整个循环的流程是这样的:程序**首先执行一次**`do`后面大括号中的代码块(也叫做**循环体**),当代码块中的所有代码都执行完一遍之后,程序执行到`while`部分,然后会判断目前是否满足表达式`a`成立的条件。
如果表达式`a`的运算结果为`true`的话,就会回到循环体的开头,进入下一轮循环,周而复始;而如果`a`的结果为`false`的话,循环就会终止,程序会继续执行循环后面的代码。
## Part4
除了`do...while`循环之外,我们还有另一种与之类似的循环结构:`while`循环。它的常见形式如下:
~~~
while (a) {
[代码块]
}
~~~
从结构上看,`while`循环跟`do...while`循环非常相似,其执行的流程也跟`do...while`循环差不多——区别在于,`do...while`循环是先执行一遍循环体,再来判断表达式`a`的值是否为真,而`while`循环则是首先进行条件判断,然后再执行循环体。也就是说,对于`do...while`循环,**程序会保证至少执行一次循环体**,而`while`循环则**有可能不进入循环,完全不执行循环体**。
在实际应用中,我们可以根据程序和算法的需要,灵活选择使用哪一种循环。此外,我们还要注意,不管对于哪种循环,都应该确保循环体中含有改变循环条件表达式`a`的语句——如果表达式`a`的值始终为真的话,那么程序就会永远陷在循环体中,也就是所谓的**死循环**。
- 教材介绍
- 《编程初学入门常识》
- 什么是程序语言
- 【知识精讲】编程与编程语言
- 【选择测试】编程语言分类
- 【知识精讲】高级语言分类
- 【选择测试】编译与解释
- 【选择测试】程序员笑话-Java
- 熟悉键盘上用于编程的键位
- 【知识精讲】认识你的键盘
- 【知识精讲】中文和英文字符
- 【匹配测试】识别中英文符号
- 【选择测试】中英文符号的影响
- 【伴随编程】不要使用中文引号
- 【伴随编程】不要使用中文分号
- 【伴随编程】正确地输入符号
- 【选择测试】找出程序中的错误
- 初始工程师思维
- 【知识精讲】二进制思想
- 【选择测试】程序员笑话-凑整
- 【知识精讲】闭合的逻辑
- 【选择测试】程序员笑话-条件
- 程序员职业与生活
- 【知识精讲】程序员的发展方向
- 【知识精讲】程序员的装备
- 【知识精讲】程序员的健康
- 【选择测试】做一名健康的程序员
- 《C++程序设计》
- 前言
- 【知识精讲】编程与计算机科学
- 【知识精讲】编程与软件工程
- 【知识精讲】如何学习编程
- 你好C++
- 【知识精讲】你好,C++
- 【知识精讲】C++程序是如何开发的
- 【知识精讲】成为一名Power User
- 【伴随编程】让我们一起说你好
- 【知识精讲】你的第一个C++语言程序
- 【伴随命令】编译、运行你的程序
- 【伴随编程】将变量流式输出
- 【选择测试】变量的作用域
- 【知识精讲】变量与数据类型
- 【匹配测试】C++语言的入门概念
- 【知识精讲】在程序中学会换行
- 【选择测试】正确地换行
- 简单数学运算
- 【知识精讲】重新认识基本运算
- 【选择测试】运算符的理解
- 【伴随编程】做一下简单的运算
- 【伴随编程】a 的 n 次方
- 【知识精讲】数学函数
- 【伴随编程】让C++语言变成计算器
- 【伴随编程】计算球的体积
- 【匹配测试】数学世界知多少
- 【知识精讲】在程序中添加注释
- 【选择测试】正确地写注释
- 从伴随输入到变量地址
- 【伴随编程】 一个数字复读机器
- 【选择测试】理解标准输入输出
- 【伴随编程】一个加法计算器
- 【程序设计】A+B+C问题
- 【伴随编程】简单的I/O格式控制
- 【知识精讲】地址与取地址符
- 【伴随编程】看看我们的地址
- 习题一:面积与周长
- 【程序设计】矩形面积与周长
- 【程序设计】三角形面积与周长
- 【程序设计】圆形面积与周长
- 程序中的是与非
- 【知识精讲】是非的表示与关系运算
- 【伴随编程】验一验关系运算式
- 【选择测试】关系运算式求值
- 【知识精讲】如果的意义
- 【伴随编程】分段函数求值
- 【知识精讲】如果之后的如果
- 【伴随编程】五则运算器
- 【选择测试】分支的嵌套
- 【伴随编程】问号表达式
- 【知识精讲】是非之间的逻辑组合
- 【伴随编程】判断闰年
- 【程序设计】日期合法性
- 【知识精讲】多路顺序结构
- 【知识精讲】在程序中学会缩进
- 【选择测试】正确的缩进
- C++程序中的苦力
- 【知识精讲】使用循环结构
- 【选择测试】对比两种循环
- 【伴随编程】使用while循环
- 【填空测试】理解循环结构
- 【知识精讲】自减和自增运算符
- 【伴随编程】使用自增运算符
- 【知识精讲】for循环
- 【选择测试】for循环的使用
- 【程序设计】一大波好玩儿的程序
- 《代码能力快速提升》
- 《基础数据结构》
- 《搜索入门》
- 《动态规划基础》
- 《数论和基础数学》
- 《图和数基础》