2021-2022-1学期 20212422《计算机科学概论》第三周学习总结
本周内,我自学了《计算机科学概论》的第六、七章内容。第六与第七章的内容是关于计算机程序设计层的相关知识,第六章讲的是实现计算机操作的机器语言与算法的初步了解的知识,第七章讲的是关于计算机解决问题的方式及求解过程的相关知识。
第六章
低级程序设计语言与伪代码
一、计算机操作
计算机的定义:计算机是能够存储(store)、检索(retrieve)和处理(process)数据的可编程(programmable)电子设备
二、机器语言
定义:由计算机直接使用的二进制编码指令构成的语言
每条机器语言指令只能执行一个非常低级的任务,大多数程序使用高级语言编写,然后翻译成机器语言的。
(一)Pep/9:一台虚拟机
虚拟机:为了模拟真实机器的重要特征而设计的假想机器
Pep/9一共有40条机器语言指令
基本特性如下图

指令格式
一条指令由两部分构成,即8位数的指令说明符和(可选的)16位的操作数说明符
由此决定了Pep/9的指令在长度上是1字节或3字节

寻址位置说明符:表示了怎样解析指令中的操作数部分
一些示例指令

Pep/9模拟器
用于模拟程序,按照虚拟机的设计方式进行运算
可免费下载
三、汇编语言
定义:一种低级语言,用助记码表示特定计算机的机器语言指令。
汇编器:把汇编语言程序翻译成机器代码的程序
Pep/9汇编语言

同时,汇编语言编程还支持汇编器指令

在Pep/9汇编语言中,操作数用0x和十六进制表示,接下来是逗号,最后是寻址模式(由字母i(立即寻址)或d(直接寻址)说明
注释:为程序读者提供的解释性文字
数字数据、标签、分支
分支:指出执行下一条指令的指令
标签:对内存位置起的名字,可以将这个名字当作操作数
四、表达方法
算法(algorithm):解决方案的计划或纲要,或解决问题的逻辑步骤顺序
伪代码(pseudocode):一种表达算法的语言
(一)伪代码的功能
1.变量
2.赋值
3.输入/输出
4.选择
5.重复
伪代码语句:

伪代码类型
Write:输出
Read:输入
IF...ELSE:选择
WHILE:重复
以下为Pep/9指令格式的导图

第七章
问题求解与算法设计
(一)问题求解
一、如何解决问题
下列是关于Polya的“如何解决它”列表

对于此个列表,如果将文字未知量换成问题,把数据换成信息,把定理换成解决方案,那么这个列表就适用于各种类型的问题。
二、提出问题
对于自己接受的任务,当任务完全明确之前,你会问何时、为什么、在哪里等一系列问题;而对于自己设置的任务,那么提出问题的方式就不是口头的,而是下意识的。
以下是你应该问的一些典型的问题:
·对这个问题我了解多少?
·解决方案是怎么样的?
·存在什么特例?
·我如何知道已经找到解决方案了?
三、寻找熟悉的情况
识别相似情况在计算机领域非常有用。在计算领域中,我们会看到某种问题不断地以不同的形式出现,而一个好的程序员看到以前解决的任务或者任务的一部分(子任务)时,会直接选用已有的解决方案。
四、算法
Polya列表的第二步的最后一句说,最终应该得到解决方案,在计算领域,这种解决方案被称之为算法。
算法(algorithm):在有限的时间内用有限的数据解决问题或子问题的明确指令集合
五、计算机问题求解过程
如下图

注意:算法一般是在用编程语言进行编码之前要写的
六、方法总结
1.分析问题
2.列出主要任务
3.编写其余模块
4.根据需要进行重组和改写
七、测试算法
类似于数学问题中的检查结果,也即等价测试推出答案的过程
(二)有简单变量的算法
1.带有选择的算法
2.带有循环的算法
(1)计数控制循环
(2)时间控制循环
(3)平方根
抽象步骤:细节仍未明确的算法步骤
具体步骤:细节完全明确的算法步骤
(三)复杂变量
1.数组
数组是同构项目的有名集合,可以通过单个项目在集合中的位置访问它们
2.记录
记录是异构项目的有名集合,可通过名字单独访问其中的项目
四、搜索算法
1.顺序搜索
2.有序数组中的顺序搜索
3.二分检索
二分检索算法假设药检所的数组是有序的,其中每次比较操作都可以找到要找的项目或把数组减少一半
五、排序
1.选择排序
2.冒泡排序(也属于选择排序的一种,但是在查找最小值的时候用了不同的方法)
3.插入排序
六、递归算法
1.子程序语句
2.递归阶乘
3.递归二分检索
4.快速排序
第六章知识思维导图

第七章知识思维导图

总结
这两章的学习难度较大,知识深度和广度都有所提升,抽象而又复杂,作为初学者,我感到理解这部分内容比较困难,希望能在今后的学习中再更进一步,提升自己的知识水平。

浙公网安备 33010602011771号