当前课程知识点:程序设计基础 > 第九章 可配置的程序设计 > 程设论道 > 程设论道
今天是我们这个课的最后一章
叫可配置的程序设计其实又给大家讲了一个叫变与不变的问题
我们原来变量那就讲了因为有不变的量所以才会有变量
相辅相成然后我们去研究一些算法思想找规律
不变的内容今天我们又讲了可配置又是变与不变
所以应该把这一章跟第二章结合起来学
这是一种感觉一种变量的一种新的形式
怎么能够把这个我们的一个变量除了什么样地用变量来表达
那么还有怎么样能把这个变量读到我们的程序当中去
对就是我们学第二章刚开始的时候只是说
变量把有些数 有些数是不变有些数是要变的
特质公式有些关系上的东西
后来我们再给它概念变量用来表示概念
今天我们就说菜单有些数据是内容有可能写死在那里的
也希望它能变那我们就用变量来表示它
然后又跟这个文件相关联这个信息能从这个文件里头读进来
特别是今天的课程我们一开始的内容是写死的
后来又给它提取出来然后往那个文件里去放
跟这个程序无关这个程序就是一个基本的处理流程
那个东西实际上是一个数据数据是可以变的
所以除了你需要根据应用的需求去决定变跟不变之外
因为你比方像我们这个地方是要求才改变
我要换个语言那个时候在被要求之下的具体的应用
我们把这种提示信息可参照的内容把它进行一个剥离
那当然有的时候就是在我们程序的设计里头
通常的做法是把这个数据跟它的范法剥离开
因为算法是代码 代码因为你一旦写好之后像我们现在这种
C跟C++语言 代码是不能变的
所以在这种时候在剥离变与不变的时候
通常是把代码认为是不变的就它的一个框架留下来
而剥出去的往往是被处理的数据
所以像我们这个例子里头因为菜单提示是一个字符串
那就是个数据水果的名字它也是数据
所以恰好是殊途同归你本来应用里头需要它变
另外一个角度的话一般来讲我们的程序设计里头
通常代码是没法变的我们只能去变数据
所以这样的话 就给抽离出来
.就是变跟不变在哪里去切一刀你的准则是什么
或者我觉得像这个问题是不是也可以这样理解
就是如果不把这个通过文件来读
那还能怎么办得通过键盘cin读进来
其实也不是说不能做就是说那你每次这个程序运行的时候
我得敲每次菜单是什么样的每次敲进去就很麻烦
可能这个应用的场景虽然量在变
但是可能又不是经常变
我可能想让它变完之后保持一段时间
而且因为是有的时候有人参与的地方不往往太可实现自动化
你想比方说我一个外国人想看你做的菜单
而你现在后台赶快敲那个提示好你这对付一个可以
下回再来一个 你总7×24小时看着
但是说 你要想自动化的时候
如果这个信息是放在计算机里头放在硬盘上放着的
那我就可以拿程序里头语句在我需要的时候把它找出来
这是因为你把它剥离出来而且放到文件里面去了
才使得它的全自动成为一种可能我想换就换
这个数据有的时候也挺重要的 我们通过它来控制
看起来一个数据实际上它能决定程序一个执行的方式
然后我们今天反正也提到了命令命令行控制文件控制啊
其实它们也有一定相通的
比如说我命令行的东西你也可以你一定读某某文件
我命令行都在写在文件里头
所以看不同的一种方式大家觉得用起来更方便
像你刚才讲的你如果每次都是要手去敲的话
那就不合适就算你是命令行的参数那也麻烦文件更合适
但有的时候就是文件必须要打开编辑再关闭
那有的时候我们就是说顺手就干了
所以我拿文件就绕一个圈 所以平时各种命令带各种参数
高手都是闭着眼睛直接敲键盘的
而且这个可配置 跟另外一个东西其实也是很有关联的
你之所以能够在运行的时候比方说通过argc argv
或者一些其他的文件
之所以能够用它来控制你程序运行形式
是因为在你的程序里头事实上存在着那些不同的运行的路径
或者说它的这种功能如果没有的话那你是不可能去切换的
那跟什么像就是我们以前在编程序的时候
特别提到说比如程序出bug出错误
往往就是边界条件没考虑
有的同学觉得很委屈啊
说这个边界条件只有0.001%的可能性会发生
干嘛要处理它计算机这个独特的地方是
哪怕只有这么小的概率你也在程序里头必须考虑
就是你事先要把它都对应好
那我们这边的比方说语言的切换也好
水果的显示也好那你事先都准备着
那保不齐它就要那个实际上就是你事先的程序里头有多套的东西
然后你才使得它的这种在运行的时候控制它的这种状态成为可能
就如同我们以前说你把所有的情况都考虑到
才能使得你的程序不出bug
另一点就是我们之前的课上也提到了
我们学了程序设计很多生活中的问题都能随时来解决
但是我们有的时候写程序不是一开始就想的特别特别完整的
因为我们的方法课上也介绍了自顶向下 逐步求精
我们会有一个大概的处理流程我们会去细化
这样才能够说把我们学到的东西能够很好地应用起来
去解决我们的问题而我们也希望这个课程大家学完以后
能够活学活用能够主动的用课上的东西去解决各种问题
生活中可能也包括学习上比如说玩个游戏
都是需要去可以算一算
所以其实我们这个第九章安排这个内容其实也是很有用意的
就是说其实第九章的内容
我想除了argc argv唯一好像新一点的知识之外
其他都是大家会的但是在大家都会的这个工具前提下
那为什么我们能够用它去做这样一个配置文件程序的执行和运行
那是因为在思维方法上面在认识的深度上面
那毕竟老师教课 你认识的肯定深一点
反过来就说明 你只有认识的越深刻
你这种思维掌握的越到位
你才能够把已学的知识把它真正的活用好
我们这一章作为我们程序设计基础mooc课的最后一章
我们还特意选了这个例子就是比较贴近生活
然后用我们学过的知识
随着我们分析问题也包括问题的需求不断地变化
我们不断的去改进它去解决新的问题
所以我觉得这种活学活用的做法
希望同学们能够去吸收借鉴
其实也是在我们最开始第一次讨论的时候
说到了就是我们的教学理念里头很重要的一条
就是一定要从什么当中来到什么当中去
所以你看我们最后搞了一个
生活当中很亲密很紧密的例子
回到了第二章 周而复始
但是我们螺旋式上升的
课程里头去给大家介绍的计算思维的
然后我们给大家讲一些科学方法论
那么我们认为说贯穿整个学习的过程的
但是我们平时的作业你说很多时候是讲什么
留什么样的作业习题让他去练习
作业就只是说告诉你用一个特定的方法了
让你去理解掌握一项特定的方法
但是真正到考试生活当中的时候
就不会告诉你用什么方法
就自己根据自己以前练习的经验选这个问题适合什么样的方法
适合什么样的算法什么的样的思路去做
不变的是计算的思维和科学的方法
但是变的时候你要具体问题具体分析去灵活应用
所以就是希望同学们这个课程结束之后
也能够比较自觉地用我们介绍的这些方法
这些分析解问题决问题的科学方法不断地去运用去练习
这样既是帮你解决生活中的各种问题
也是把自己的这个认识能够提高
主要是思维有一个提升
我们就达到原来所讲的引领他的计算人生
它长到身上的不光是一个具体的专业的技能
更重要的是他增进了这种思维的思考的深度
他一种掌握了新的思维的方法
也许上完我们这个课过了很长时间
C语言是什么都忘光了
但是这个思维的方法只要你还在用计算机去解决问题
经常你都会使用的
所以这也是我们对选这个课的同学们一个期望
期望也算是一个祝福吧
-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 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测