《计算机科学精粹》
感觉这样写有些浪费时间精力, 而且太繁琐. 但是这种绪论类的书, 就是要细细地看一遍, 然后争取用自己的知识面把内容扩充出来才有用吧.
第一章
1.1 想法
程序设计的一般步骤:
- 分析问题
- 确定数学模型
- 算法设计
- 编写程序
- 程序运行和测试
- 程序文档编写与程序维护
1.1.1 流程图
图形 | 含义 |
---|---|
圆角矩形 | 起止框 |
矩形 | 处理框 |
菱形 | 判定框 |
箭头 | 流程线 |
平行四边形 | 输入输出框 |
绘制流程图原则:
- 将状态步骤和指令步骤置于矩形框内;
- 将决策步骤置于菱形框内;
- 不要将指令步骤与决策步骤放在一起;
- 使用箭头连接各个顺序步骤;
- 标明进程的开始和结束.
1.1.2 伪代码
无法被机器理解的类似代码的语言
可以不被编程语言的范式所束缚, 先写出代码思路 然后再用具体的语言实现
1.1.3 数学模型
模型是一组表示问题及其特征的概念.
中学数学的思路:问题建模为若干数字和方程, 然后应用各种工具进行求解.
还是没有工程经验, 对计算机中的数学模型基本没有什么概念. 所以就照抄了
1.2 逻辑
1.2.1-1.2.2 运算符+布尔代数
布尔代数:运算符不再是数字, 而是True和False两个值.
条件运算符(→)表示变量间的依赖关系
取反运算符(!)表示取反
与或非
逻辑与(AND):同真则真, 一假则假
逻辑或(OR):一真则真, 同假则假
逻辑非(XOR):相同为假, 相异则真
结合律:
A AND (B AND C) = (A AND B) AND C
A OR (B OR C) = (A OR B) OR C
分配律:
A AND (B OR C) = (A AND B) OR (A AND C)
A OR (B AND C) = (A OR B) AND (A OR C)
德摩根定律:
!(A AND B) = !A OR !B
!A AND !B = !(A OR B)
1.2.3 真值表
真值表采用列表示变量, 行表示变量状态的可能组合
1.2.4 逻辑在计算中的应用
数字逻辑电路:与门、或门、异或门
1.3 计数
1.3.1 乘法
如果一个事件以n种不同的方式发生, 另一个事件以m种不同的方式发生, 那么两个事件可能以n×m种不同的方式发生
1.3.2 排序
n个项, 有n!种排序方式
n!=1×2×3...×(n-1)×n
1.3.3 具有相同项的排列
1.3.4 组合
1.3.5 求和
求和符号(Σ)
1.4 概率
1.4.1 对结果计数
P = 事件发生次数 / 可能的结果数量
1.4.2 独立事件
一个事件的结果不会对另一个事件的结果产生影响, 则称二者相互独立
两个独立事件发生的概率是它们各自概率的乘积.
1.4.3 互斥事件
两个事件不可能同时发生, 则称二者互斥
如果希望任一互斥事件发生, 将它们各自的概率相加即可
1.4.4 对立事件
两个互斥事件涵盖所有可能的结果, 则称二者对立
对立事件的概率和为100%
1.4.5 赌徒谬误
过去的事件永远不会影响独立事件的结果
1.4.6 高级概率
参考资料
- 《离散数学及其应用》
- 周以真教授关于计算思维的幻灯片
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构