当前课程知识点:程序设计基础 > 第三章 逻辑推理与枚举解题 > 程设论道 > 程设论道一
我们第三章讲了
逻辑思维解题的一些知识
那有些同学反正就是反应说
它太神奇了 计算机竟然
能够解决逻辑推理的题
那其实这里头就是说明什么
我们计算思维这个算法
真的是很有力量
所以 可以跟同学们多谈谈
什么是算法
其实算法应该说是跟我们
程序设计很紧密相关的概念
所以这一章讲完之后
我觉得在讨论环节里头
来重点探讨这个问题
给学生说一说
让学生理解一下
算法也不是什么
特别高大上的一个词
因为好像觉得
不是计算机系的或者说
计算机系里头很多人是搞竞赛的
算法这个东西
很高大上 很神秘
其实跟大家讲讲
没那么神秘
其实算法应该就是说
也很好理解
他其实就是一系列的这种
对于特定问题的求解的
一系列的指令
这个比较抽象一点
但是它实际上这个定义
比较简单
我们平时自己做事情也是有
一系列的特定的步骤
那我们也可以说是一种算法
生活中其实
(做事情步骤)也就是算法
但是呢 一定要有
很明确的这个步骤
先做什么 后做什么
包括我们说
什么条件下我们做什么
都很明确
不能说你 跑过去
我也不知道做什么
那这个我们至少就没法提炼成
这个计算机的语言去写
这个其实也是跟计算机本身的
能力来决定的
因为它只会做你告诉它
该怎么做的事
你都不知道 那它就更不知道了
所以就是
要有明确的含义的指令
还有 刚才想起来一个笑话
就是跟这个算法有点关系的
原来说 就是举个例子
怎么把大象塞到冰箱里
然后 第一步 把冰箱门打开
然后把大象塞进去
然后把冰箱门关上 这三步
这很明确
但是这里头有一个问题
就是说 你每个步骤得能做到
你那大象能不能塞进去
所以我说 第二个就是
在明确之下 你必须是可实现的
你不能动动嘴巴说
你把它放进去 那不行
在计算机里一样
所以我们的每一步骤
或者要去做什么
你要是能实现 意思就是
你得写成语句
计算机能够执行出结果出来
那既然能执行出结果
那肯定是 还得给它一个时间限制
不能说这个
无限制的执行
有限步骤呗
这个我给数学系的同学
他们数学系(的同学)
很容易理解那种无限的概念
有个极限啊 有个级数啊这种
他觉得列一个公式 写一个无穷点点点
我一样能算出来啊
但是这种人能算出来
你交给计算机 计算机搞不定的
想想也是 计算机在那转
也得耗电呐 也得耗能量啊
你老算老不出来结果
最终就能源耗尽 没了之后
它就算不出来
或者说 我们说 算法
其实它暗含他能解决问题
你要是算不完 那就没解决
或者说 你在我有生之年
解决不了 那这个也不行
华而不实
我们隔壁实验室
是做密码相关研究的
他们就特别有体会
这个密码我要破解
我不是说我破解不出来
你拿枚举法 这样肯定能破解出来
问题是我发现
我枚举我要枚举多少呢
这个算了下时间
我几辈子都算不完的
然后他们就会觉得
这样密码就很安全了
它失去算法的意义了
因为你不能靠它(解决问题)
就是它是能解决 但是人等不及
所以有时候我们觉得
咱们编程序还是有
很强的解决问题的实用主义
的这种思想在里头
从算法来讲 就更是如此
有限的步骤
而且这个有限必须是在
我人能够忍受(范围内) 或者
(就)某种具体的应用来讲
能忍受的
就是你说的 最早的第一台计算机
它算弹道路径 你还没算出来呢
炮就过去了
那个就不行
有限的 然后 必须是明确的
在明确之后还得每一个(步骤)
必须是可以实现的
所以这样的话
才能真正成为一个
可以解决问题的
能够用的算法
具备这样的特点的
我们称之为算法
所以你课上讲的那个
什么谁做的好事啊
那个家伙是嫌疑犯啊
给出来那个东西
就是在有限的步骤
能够找出来
谁是做好事的
谁是嫌疑犯
所以它就是一个
很好的一种算法
然后其实我觉得
我们后面会学到
更多更多的算法
其实大家以后
写程序写多了就会发现
算法其实就是我们
写程序的一些套路
就是照着这个思路
往里一套 这个问题就能搞定
或者说 照这个思路
我一类的问题就能搞得定
你说总结嘛
解题的经验啊 思考的方法
慢慢总结
可能发现一定的普适性
而且这里头 我觉得还有
一个可能要跟学生讲的
就是除了你去学习
掌握这个(算法)之外
这些常见的算法经典算法
其实也可以说是有限的
就是你掌握了几个
那程咬金就三板斧
他不一样很厉害 最后
所以呢 我想我们程序里头
其实在算法层面上
也有一个类似的
有一些经典的 重要的(算法)
掌握之后 就能解决很多很多问题了
所以说 程序设计基础
看起来我们介绍的算法
似乎并不多
但它的的确确是为学生打下了
一个真正解决问题的基础
而且它绝对不是一个
很基本 很初步一个基础
它真的是能管用的
在算法基础上 很多地方
具体的问题去细化 去改变它
甚至说不同算法可以组合
像搭积木一样 这么搭出来
就能那个得到一个新的算法
解决一些新的问题
但是换来换去还是那些
所以我觉得这么来理解比较好
-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 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测