2020-2021第一学期《计算机科学概论》第三周自习总结

2020-2021第一学期20202411《计算机科学概论》第三周自学总结

自习内容:《计算机科学概论》第6章 低级程序设计语言与伪代码 第7章 问题求解与算法设计

这部分的学习内容较之前而言,更加的抽象,而且真正引入了语言与代码。这也是今后要熟知的界面以及程序设计的重要一点。


第6章 低级程序设计语言与伪代码

机器语言是最低等级的编程语言。而伪代码能够表示算法。

6.1 计算机操作

计算机是能够存储(store)、检索(retrieve)和处理(process)数据的可编程(programmable)的电子设备。

6.2 机器语言
机器语言(machine language):由计算机直接使用的二进制编码指令构成的语言。

计算机必须参考的命令的真实清单并不存在,源于CPU嵌有相关指令。每条机器语言指令只能执行一个非常低级的任务。目前几乎没有程序是用机器语言编写的。

每种类型的CPU都有它能理解的自己的机器语言。

虚拟机(virtual computer):为了模拟真实机器的重要特征而设计的假象机器。

可用位数决定了我们可以使用的内存大小。Pep/9中一条指令由两部分组成,即8位的指令说明符(instruction)和可选的16位操作数说明符(operand specifier)。指令说明符说明了要执行什么操作和如何解释操作数的位置。操作数说明符存放的是操作数本身或者操作数的地址。3位的寻址模式说明符(addressing mode specifier)表示了怎么表示解析指令中的操作数部分。主要有立即寻址(i)和直接寻址(d)。没有操作数的指令称为一元指令(unary instruction)。

虚拟机遵循的设计原理是(内存映射输入/输出memory-mapped I/O)

6.3 一个程序实例

我们必须使用存储单一字节的存储指令。在机器语言执行之前,它必须被载入存储器。这个任务通过一个叫做装入程序(loader)的软件工具来实现。模拟器在执行时遵守读取-执行周期。

6.4 汇编语言
汇编语言(assembly language):一种低级语言,用助记码表示特定计算机的机器语言指令。
汇编器(assembler):把汇编语言程序翻译成机器代码的程序。
汇编器指令(assembler directive):翻译程序使用的指令。

有时也被称伪操作(pseudo-operation)。

注释(comment):为程序读者提供的解释性文字。

由程序员解释的内容。

我们从未直接使用过机器语言编写程序来进行数值计算,因为Pep/9机器语言的输出值被定义为单个字符。

分支(branch):指出执行下一条指令的指令。
标签(label):对内存位置起的名字,可以将这个名字当作操作数。

我们可以重写我们的AddNums程序来使用循环。

6.5 表达算法
算法(algorithm):解决方案的计划或概要,或解决问题的逻辑步骤顺序。
伪代码(pseudocode):一种表达算法的语言。

伪代码的功能包括1.变量。2.赋值。3.输入/输出。4.选择。5.重复。

布尔表达式(Boolean expression):评价为真或为假的表达式。

一个伪代码语句可以被翻译成多种汇编语言语句。

桌面检查(desk checking):在纸上走查整个设计。
6.6 测试

测试计划就是一个文档,说明了要全面测试程序需要运行的次数以及运行程序使用的数据。每套输入的数据值称为测试用例(test case)。

代码覆盖测试法(code-coverage testing):通过执行代码中的所有语句测试程序或子程序的测试方法。
数据覆盖测试法(data-coverage testing):把代码作为一个暗箱,基于所有可能的输入数据测试程序或子程序的测试方法。
测试结果实现(test-plan implementation):用测试计划中规定的测试用例验证程序是否输出了预期的结果。

第7章 问题求解与算法设计

7.1 如何解决未知问题

1.提出问题。2.寻找熟悉的情况。3.分治法。4.算法。5.计算机问题求解过程(分析和说明阶段、算法开发阶段、实现阶段和维护阶段)。6.方法总结。7.测试算法。

7.2 带有循环的算法

循环控制变量(loop control variable)第一部分是初始化:循环控制变量初始化为某个初始值。第二部分是测试:循环控制次数是否已经达到特定值。第三部分是增量:循环控制变量以1递增。

while循环被称为前循环(pretest loop)。永远不会终止的循环称为一个无限循环(infinite loop)。循环中重复的次数是由循环自身内发生的事件控制的循环被称为时间控制循环。包括时间初始化,事件必须被测试,事件必须更新。

嵌套结构(nested structure):控制结构另一个结构的结构,又称为嵌套逻辑(nested logic)。
抽象步骤(abstract step):细节仍未明确的算法步骤。
具体步骤(concrete step):细节完全明确的算法步骤。
7.3 复杂变量

应用中的字母叫做字符串。

数组是同构项目的有名集合,项目在集合中的位置叫做引索。

7.4 搜索算法

AND是一种布尔操作符,还包括OR、NOT。AND操作符只有在表达式都为假时返回FALSE,否则返回TRUE。NOT操作符改变表达式的值。

二分检索(binary search):在有序列表中查找项目的操作,通过比较操作排除大部分检索范围。
7.5 排序

冒泡排序是一种选择排序法,只是在查找最小值时采用了不同的方法。

7.6 递归算法

当在一个算法使用它自己时,这样的算法被称为递归算法。

递归(recursion):算法调用他本身的能力。

每个递归算法至少有两种情况:基本情况和一般情况。所有递归解决方案的第一步都是确定尺寸系数。控制结构使用子程序。命名代码出现的地方被称为调用单元。

如果问题陈述逻辑上分为两种情况(基本情况、一般情况),则递归是一种可行的选择。

7.7 几个重要思想

对于设计的每个特定分层,设计者只考虑阈值相关的细节。

信息隐蔽(information hiding):隐蔽模块的细节以控制对这些细节的访问的做法。
抽象(abstraction):复杂系统的一种模型,只包括对观察者来说的必须细节。

抽象是人们用来处理复杂事务的强有力的工具。

数据抽象(data abstraction):把数据的逻辑视图和它的现实分离开。
过程抽象(procedural abstraction):把动作的逻辑视图和它的现实分离开。
控制抽象(control abstraction):把控制结构的逻辑视图和它的现实分离开。
控制结构(control structure):用于改变正常的顺序控制流的语句。


Q&A见小组讨论。

原文地址:https://www.cnblogs.com/MrHuan3/p/13872657.html