学习收获
一,第六章
6·1计算机操作:
计算机的定义:
能够存储,检索和处理数据的可编程电子设备。
可编程的(programmable)
存储(store)
检索(retrieve)
处理(process)
存储,检索和处理是计算机对数据能够执行的动作。
6·2机器语言:
机器语言(machine language):由计算机直接使用的二进制编码指令构成的语言。
虚拟机(virtual computer machine):为了模拟真实机器的重要特征而设计的假象机器。
*Pep/9的基本特性:
程序计数器(PC),包含下一条即将被执行的指令的地址。
指令寄存器(IR),包含正在被执行指令的一个副本。
累加器(A),用来存储数据和运算的结果。
Pep/9的CPU
Pep/9的存储器
Pep/9的指令格式:
指令说明符(instruction specifier)8位
操作数说明符(operand specifier)16位
操作代码(operation code)4位或8位操作码,寄存器,寻址模式说明符(addressing mode specifier)+指令的指令说明符部分
一些示例指令:
Pep/9的输入/输出:
遵循的设计原则是内存映射输入/输出(memory-mapped I/O)将输入设备与主存中特定的、固定的地址联系起来。在Pep/9中输入设备地址在FC15,输出设备在地址FC16。
模型:
将输入设备中的值载入累加器中,将字符载入累加器中,将累加器中的值存储到输出设备的地址中。使用ASCII字符集来表示字符,我们可以通过使用载入字节和存储字节的操作来实现Pep/9的输入和输出。
6·4汇编语言
汇编语言(assembly language):一种低级语言,用助记码表示特定计算机的机器语言指令。
汇编器(assembler):把汇编语言程序翻译成机器代码的程序。
Pep/9汇编语言:
操作数用0x和十六进制表示,接下来是逗号,最后是寻址模式(由字母i(立即寻址)或d(直接寻址)说明)。
汇编器指令(assembler directive):有时也称为伪操作(pseudo-operation),翻译程序时用的指令。
Pep/9汇编器忽视在分号后面的任何字符,这就允许我们在指令旁边添加注释(comment):为读者提供解释性的文字。
数字数据、分支、标签:
分支(branch):指出执行下一条指令的指令。
标签(label):对内存位置起的名字,可以将这个名字当作操作数。标签和它对应的地址会在代码清单后以符号表(symbol table)的形式进行展示。
打印错误信息的标签:BRLT指令被用来在累加器包含附属的时候进行跳转。在打印错误信息后,一条无条件分支将会跳转到程序的最后,标签为finish。
汇编语言中的循环:程序首先从用户那里读取一个数字,用来说明将会有多少个数被加到sum中。每一次循环,计数器都加1并使用BREQ指令检查它是否到达极限,如果到了极限值,那么循环终止,程序停止。如果没有,那么回到循环顶部继续处理下一个值。
6·5表达算法
算法(algorithm):解决方案的计划或概要,或解决问题的逻辑步骤顺序。
伪代码(pseudocode):一种表达算法的语言。
6·6测试
测试计划(test plan):说明如何测试整个程序的文档。
代码覆盖(明箱)测试法(code-coverage(clear-box testing):通过执行代码中所有语句的程序或子程序的测试法。
数据覆盖(暗箱)测试法(data-coverage(black-box)testing):把代码作为一个暗箱,基于所有可能的输入数据测试程序或子程序的方法。
测试计划实现(test-plan implementation):用测试计划中规定的测试用例验证程序是否输出预期的结果。
第七章、问题求解与算法设计
7·1如何解决问题
提出问题:
寻找相似的情况
分治法
算法(解决方案):在有限的时间内,用有限的数据解决问题或子问题的明指令集合。
7·2有简单变量的算法
简单变量是指那些不能被分开的变量,是储存在一个地方的值。
带有选择的算法 Determine
带有循环的算法:
1·计数控制循环:使用一个特殊的变量叫做循环控制变量(loop control variable)
第一部分是初试化,第二部分是测试,第三部分是增量
while循环被称为前测试循环(pretest loop)
2`事件控制循环
事件必须初始化,事件必须被测试,事件必须更新
嵌套结构(nested structure): 控制结构嵌入另一个控制结构,又称为嵌套逻辑(nested logic)
3`平方根
抽象步骤(abstract step):细节仍未明确的算法步骤。
具体步骤(concrete step):细节完全明确的算法步骤。
7·3复杂变量
数组是同构项目中的有名集合,可以通过单个项目在集合中的位置访问它们。项目在集合中的位置叫做索引。
记录是异构项目中的有名集合,可以单独访问其中的项目。所谓异构,就是指集合中的元素不必相同。集合可以包括 整数或其他类型的数据。
第三个复合数据结构,是面向编程对象中的类。
7·4搜索算法
顺序搜索
有序数组中的顺序搜索
二分检索(binary search)
7`5排序
选择排序法,只有三个抽象步骤,即确定数组是否已经排好序了、找到最小元素索引、和互换两者位置
冒泡排序法:从数组的最后一个元素开始,比较相邻的元素对,如果下面的元素小于上面的元素,则交换两者位置。
在进入循环之前,我们把一个不二变量设为FALSE,发生交换操作,便把它设置为TURE,若布尔变量仍未=为FALSE,则数组有序。
插入排序 类似于冒泡过程。
7·6递归算法
递归(recursion):算法调用它本身的能力。
子程序语句
递归阶乘
递归二分检索
7·7几个重要思想
信息屏蔽(informaiton hiding):隐蔽模块中的细节以控制对这些细节的访问的做法。
抽象(abstraction):复杂系统的一种模型,只包括对观察者来说必须的细节。
数据抽象(data abstraction):把数据的逻辑视图和它的实现分离开。
过程抽象(procedural abstraction):把动作的逻辑数据区和它的实现分离开。
控制抽象(control abstraction):把控制结构的逻辑视图和它的实现分离开。
控制结构(control structure):用于改变正常的顺序控制流的语句。
学习问题
1.第六、七章的内容很抽象很复杂。
2.知识点难以理解。
解决方法
与同学交流,上课时将不懂的地方提出来。