第三周学习第六章低级程序设计语言与伪代码,第七章问题求解与算法设计。
从第六章中学习到计算机执行程序指令使用的是机器语言,给每条机器语言指令分配一个助记指令码是汇编语言。从机器语言到汇编语言,缓解了程序员效率低工作量大的问题,同时能够减少编程中的错误。将两种语言联系起来的是汇编器,它将编程语言翻译成等价的机器语言,反之亦然。虚拟机Pep/9内存由65536字节个存储空间构成,65536=2的16次方,一元指令的长度为1字节,指令说明符中后三位为000为立即寻址,001为直接寻址。立即寻址为操作数说明符包含将要处理的数据,直接寻址为操作数说明符包含将要处理的数据的地址。载入寄存器寻址模式为立即寻址或直接寻址。编写程序中包括载入、存储以及停止程序运行(伪代码为END.),行为与二进制指令与十六进制指令一一对应,一般情况下,操作数用0x(十六进制)表示,然后是逗号,最后是寻址模式(i=立即寻址(immediately),d=直接选址(directly))。DECI(十进制输入)指令设计将输入的字符转为数字的操作,不支持立即寻址。DECO指令输出特定的十进制数字,支持两种寻址模式。STRO指令被用来打印完整的一串字符串。分支操作中断程序的正常线性流。CPWA指令将累加器当前的值减去操作数,存储累加器的结果。若此时结果≤0,则BRLT和BREQ指令可被用来判断。伪代码是一种能够表达算法的语言,有五个必须表示的概念:变量,赋值,输入/输出,选择,重复。特别地,布尔表达式为评价真假的表达式(while if旁的括号里)涉及缩进语句,何时跳过缩进语句与其语句类型有关:在if中真则进入缩进语句,假则跳过(有else则执行其下面的代码块):在while中与if不同的是没有else。测试分为明箱测试法(代码覆盖测试法)和暗箱测试法(数据覆盖测试法),前者基于代码来测试,后者基于数据来测试。
从第七章中围绕“问题”展开学习由提出问题到解决问题,首先需要理解问题,找到数据和问题之间的关系,分析执行方案以及最终方案。方法大致归为:分析问题、明确主要任务、编写其余模块、重组与改写。带有循环的算法包括计数控制循环、事件控制循环和平方根,而事件控制循环中又包含嵌套结构(控制结构嵌入另一个控制结构的结构),以上为有简单变量的算法。数组是同构项目中的有名集合,通过单个项目在集合中的位置访问他们。记录是异构项目的有名集合,可以通过名字单独访问其中的项目。异构就是指集合中的元素可以不必相同。搜索算法包括顺序搜索和二分检索。二者各有所长,在数组是有序且排好的情况下,不超过20个时,使用二分法更胜一筹。排序分为选择排序、冒泡排序、插入排序(、快速排序)。当一个算法中使用它自己时,这样的算法成为递归算法。递归就是算法调用它本身的能力。子程序是抽象的强力工具,命名子程序列表允许程序的读者了解到任务已经完成并且不被任务实现的细节所打扰。用递归阶乘和递归二分检索来测试计算机的算力及内存。在进行高层设计时不能看见低层的细节,这被称之为信息隐蔽(隐蔽模块的细节以控制对这些细节的访问的做法)。抽象指复杂系统的一种模型,只包括对观察者来说必需的细节。在计算领域,算法就是需要实现的步骤的抽象。抽象有数据抽象(分离数据逻辑视图与其实现)、过程抽象(分离动作逻辑视图与其实现)、控制抽象(分离控制结构逻辑视图与其实现)三类。控制结构(用于改变正常顺序控制流的语句)。给数据和过程一个名字,这个名字叫做标识符,数据和动作的标识符都是抽象的一种形式。测试:白盒测试、黑盒测试(与明箱暗箱测试法类似)。