当前课程知识点:程序设计基础 > 第三章 逻辑推理与枚举解题 > 程设论道 > 程设论道二
我们这一章还讲了if 和 for
就是我们从原来顺序结构的程序
开始有了分支结构和循环结构了
所以这些关于程序的流程
也可以再跟大家 再介绍介绍
其实程序的流程 到你这一章之后
应该说 去解决所有算法的流程结构都已经具备了
虽然看上去很简单 无非是顺序 分支 循环
但是呢 这三个就够了
据他们数学系的同学来讲
有人能用数学方法证明出来
就用这三种结构 就能搞定所有的问题
怎么证明呢 谁证明的 我记不住了
但是这个里头 学生在学的时候
还有一个需要特别去注意的地方
顺序这个事情 符合世界运行的规律
时间是不能倒退的 对不对
我们一步一步往后走 顺着去做
总是这样子的
而且你一个人做的话
肯定是 这么叫 串行的吧
肯定是这么一步步来的
这个好理解
分支呢 其实很多时候
我们也经常这么思考
说 哎 我去做个什么事情
他要是来了呢... 他要是不来怎么办呢
他脑子里头不断的在那里犹犹豫豫
或者权衡的时候
其实就是不断的在做分支判断的时候
如果这样子就怎么着
如果这样怎么样
甚至我们还有一个成语
叫做兵来将挡 水来土掩
其实就是分支嘛
对不对
你甚至包括说 诸葛亮 给下面 给个精囊妙计
如此这般
在什么条件下打开第几个锦囊
所以其实分支这章 学生还是比较好理解的
锻炼大家运筹帷幄的能力
但是我觉得 就是那个循环
可能是 上面有个窗户纸一样
就是它理解上面 需要再下点功夫
要用同一段代码,运行好多好多次
每次运行的效果又不一样
最后来解决一个整个的这个问题
就是我们介绍的循环的这个概念
说循环呢其实看上去很简单
但实际上理解起来,对初学者有一定的难度
所以 我觉得就是
就像我们前面讨论过的一样
循环这个 能不能写的出来
能不能写对
其实体现了这个学生 或者我们编程的人
对于这个规律性的把握
是不是到位
这个讲的好
你能不能把这个规律把握出来
然后你才能写出这个循环来
因为 如果循环简单地变成为一个重复的话
好像是个人都会做
但是问题是
你怎么重复
在两次重复之间
得周而复始
看上去是重复的 但是还螺旋式上升呢
那那个上升的量 就是变化的量
对那个变化的那个东西
所以需要在循环当中 在重复当中
发现 变跟不变
然后这个时候你循环才能写出来
所以,这样的话才能够理解说 我怎么去
把问题用循环来解决
想起来我在第一章的时候
就留了个伏笔 当时
就最后的时候不是写了好几个公式嘛
最后一页是好几个公式
算不出来的 写不出直接的程序的
有几个 Sigma 啊
啊你还用Sigma了啊 对啊
去调一个 pai 啊
公式写在那
但你怎么写出那个程序
当时是写不出来的,没有对应的数学函数
用了循环之后, 新的同学应该自己下去试一试
能写的出来了
所以你说这个我到是又觉得
循环 看上去是一个重复的升级版
对吧 重复这个事情大家都会
但是循环这个大家就不见得都会
另外一个方面 循环其实也是
我们过去在数学里头 一个学过的概念的
一个计算机语言的表现
或者把它写成计算机语言来表达
什么呢 就你刚才说的那个 Sigma
你看我们过去 在高中
不是经常有写那个 求和的式子
Sigma n等于1 到 N ,然后这边是个a_i
实际上什么意思呢?也不就是
a_1 + a_2 + ... + a_N 吗?
然后数学上我们直接这么写就完了
就表达出来 要把 a_1 加到 a_N
那现在这个写法
在数学上是写的 Simga 这种形式
那计算机语言是计算机看得懂的语言啊
它怎么写呢?它得把Sigma写成一个for的头
把a_i写成循环体
好像还都能对上诶
真的 特别像
就是i=1 然后下面到 N
然后我们相当于for循环
一个条件 表达式1 表达式2
中间就是循环体 就是你刚刚说的 很像
就是这个里头 我们过去在数学里头
我们那个时候学的 等比数列 等差数列 通项 之类的
其实 有的时候有的同学会觉得那个很难
其实 它难就难在怎么把数之间的规律
掌握出来
他只要掌握规律,那个式子就能写
他就能写那个东西了
我们这个其实也是一样
找到规律 你就找到变和不变
然后呢 让循环变量控制那个变化的
然后把不变的部分作为它的循环体来出现
其实我刚才还有个想法
说顺序是很自然的嘛 一步一步走
然后分支呢 是我要把各种问题想清楚
但是光有这两个吧
我原来自己写程序的时候试试就觉得
我按顺序结构这么写出来的程序
计算机算的是挺快的
它比我算的快
但是 我还有写程序的时间呢
然后最后一句一句写 他就一句一句执行
那有那写的时间 我都算出来了啊
所以有了循环之后吧
就计算机才能做到 就超过人了
把握这个写程序的时间赚回来了
但计算机呢它可以不知疲惫 也不怕枯燥
你只要给它电 它就可以一直一直一直运行
所以就得有循环
循环才能让他一直一直一直的运行
所以有的时候确实是说
我们人力啊 思维啊能力就在那边
但计算机可以帮我们衍生
就因为我们告诉它怎么做以后,它可以反复的去做
就不怕苦不怕累 不怕枯燥的(去做)
而且关键是你还把这种怎么变化的规律
也含在里头去了
它会在每一圈不断重复的过程中
其实自己在不断的进化、演化
螺旋式上升
它其实在里头重复的每一圈
执行东西实际上是不一样的
把这个顺序 分支 循环一组合
肯定能够(组成) 解决我们所说的任何(问题) 的可行的算法
人家已经证明了
这个放心 人家已经证明了,就靠着三个
能解决所有的复杂的算法(问题)
简单算法当然更不在话下了
所以我们后面学习的就是怎么把这三个东西拼吧拼吧
用来解决问题
好 就在我们算法思想指导下
把这个组合好
-1.1 基础知识
-1.2 买菜问题
-1.3 数学运算
-1.4 补充说明
-1.5 总结
--1.5 总结
-程设论道
--程设论道
-师生问答
-第一章 编程初步--语法自测
-2.1 关于超级计算器的几点思考
-2.2 电子秤模拟 — 背景介绍及需求分析
-2.3 电子秤模拟 — 代码实现
-2.4 变量定义与变量类型
-2.5 猜数游戏与数据表示
-2.6 关于变量的讨论
--公告
-2.7 变量体现的计算思维
-程设论道
--程设论道
-师生问答
--师生问答
-第二章 变量与代数思维--语法自测
-3.1 谁做的好事——语义表示
-3.2 谁做的好事——真假检查
-3.3 谁做的好事——循环枚举
-3.4 谁是嫌疑犯——多重循环枚举
-3.5 谁是嫌疑犯——破案线索表示
-3.6 谁是嫌疑犯——用二进制枚举
-程设论道
--程设论道一
--程设论道二
--程设论道三
-师生问答
-第三章 逻辑推理与枚举解题--语法自测
-4.1 插花游戏
-4.2 筛法
-4.3 线性查找
-4.4 折半查找
--4.4.1 提问
-4.5 排序问题
-4.6 总结
--4.6.1 总结
-程设论道
--程设论道二:筛法
-师生问答
-第四章 筛法与查找--语法自测
-5.1 阶乘
-5.2 排序
-5.3 矩阵填充
-5.4 分书与八皇后
-5.5 青蛙过河
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答一
--师生问答二
-第五章 分治思想与递归--语法自测
-6.1 兔子数列问题
-6.2 分鱼问题
-6.3 橱窗的插花问题
-6.4 最长公共子序列问题
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第六章 递推与动态规划--语法自测
-7.1 统计记录总数
-7.2 统计活跃用户数
-7.3 统计在线时长
--7.3.2 结构
-7.4 总结
--7.4.1 总结
-程设论道
--程设论道
-师生问答
--师生问答
-第七章 文本数据处理--语法自测
-8.1 将数据组织成链表
-8.2 提高链表访问效率 —— 哈希链表
-8.3 以二进制文件存储链表
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第八章 非文本数据处理--语法自测
-9.1 自动售卖程序
-9.2 配制水果信息
-9.3 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测