zoukankan      html  css  js  c++  java
  • 2019-2020-1学期 20202410《计算机科学概论》第三周学习总结

    2019-2020-1学期 20202410《计算机科学概论》第三周学习总结

    之前已经了解了计算机的一些基本信息、不同类型信息的存储方法,现在我们又将重点学习“如何使用计算机系统”。

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

    一、计算机操作

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

    计算机能够对数据执行的操作是:存储、检索和处理。

    二、机器语言

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

    但事实上,用机器语言编写语言十分复杂,而且每条机器语言只能执行一个非常低级的任务,所以大多数程序是用高级语言编写,然后翻译成机器语言。

    (一)Pep/9:一台虚拟机

    虚拟机:为了模拟真实机器的重要特征而设计的假想机器。

    1、Pep/9的基本特性

    Pep/9的内存单元由65536字节的存储空间构成。Pep/9的字长是2字节,或者16位。

    Pep/9有七个寄存器,在研究之前,我们要先了解寄存器:

    寄存器是中央处理器中算术/逻辑单元的一小块存储区域,它用来存储特殊的数据和中间值。

    而我们则重点研究其中三个:

    • 程序寄存器:其中包含下一条即将被执行的指令的地址
    • 指令寄存器:其中包含正在被执行的指令的一个副本
    • 累加器:用来存储数据和运算的结果

    2、指令格式

    一条指令由两部分组成,即8位的指令说明符和(可选的)16位操作数说明符。因此Pep/9的指令在长度上是1字节或3字节,取决于是否需要用操作数说明符。

    • 指令说明符(指令的第一个字节)说明了要执行什么操作(比如把一个数(操作数)加到一个已经存储在寄存器中的值上)和如何解释操作数的位置。
    • 操作指示符(指令的第二和第三个字节)存放的是操作数本身或者操作数的地址。有些指令没有操作指示符。

    3、一些示例指令

    (二)Pep/9的输入/输出

    对于输入和输出(IO),该虚拟机遵循的设计原则是内存映射输入/输出,这种方式将输入和输出设备与主存中特定的、固定的地址联系起来。在Pep/9虚拟机中,输入设备在地址FC15,输出设备在地址FC16. ** 三、一个程序实例**

    屏幕上显示“Hi“。这个程序有5条机器语言指令:2条用于载入,2条用于存储,1条用于停止程序运行。在本实例中,我们使用立即寻址,直接寻址留作练习。因此,当我们载入字符时,寻址模式说明符是000,每一个字符的ASCII码将会直接进入操作数说明符中。接下来是使用二进制和十六进制写的程序语句:

    对于每一个二进制指令,第一行展示了8位指令说明符,第二行展示了16位操作数说明符。

    (一)Pep/9模拟机

    我们可以使用Pep/9模拟机来模拟程序。

    在Pep/模拟器中,通过选中”构建“>“装入“菜单选项来装入程序。再将程序装入内存中后,可以通过”构建“>”执行“菜单选项运行程序。

    当模拟机执行程序时,有读取-执行周期:

    1)从由程序计数器确定的存储器位置上获取指令;

    2)解码指令,更新程序计数器;

    3)获得操作数(如果需要)

    4)执行指令

    (二)另一个机器语言实例

    四、汇编语言

    • 汇编语言:一种低级语言,用助记码表示特定计算机的机器语言指令
    • 汇编器:把汇编语言程序翻译成机器代码的程序

    (一)Pep/9汇编语言

    在Pep/9汇编语言中,操作数用0x和十六进制表示,接下来是逗号,最后是寻址模式(由字母i(立即寻址)或d(直接寻址)说明)。

    除了常规的指令,汇编语言编程还支持汇编器指令,这些指令都是汇编器本身使用的指令,有时它们也被称作伪操作。

    • 汇编器指令:翻译程序使用的指令。

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

    (二)数字数据、分支、标签

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

    (三)汇编语言中的循环

    五、表达方法

    • 算法:解决方案的的计划或概要,或解决问题的逻辑步骤顺序

    • 伪代码:一种表达算法的语言

    (一)伪代码的功能

    变量

    赋值

    输入/输出

    选择

    重复

    • 布尔表达式:评价为真或假的表达式
    • 伪代码语句

    (二)执行伪代码算法

    (三)写伪代码运算

    • 桌面检查:在纸上走查整个设计

    (四)翻译伪代码算法

    六、测试

    • 测试计划:一个文档,说明了要全面测试程序需要运行的次数以及运行程序使用的数据。

    • 代码覆盖(明箱)测试法:通过执行代码中的所有语句测试程序或子程序的测试方法

    • 数据覆盖(暗箱)测试法:把代码作为一个暗箱,基于所有可能的输入数据测试程序或子程序的测试方法

    • 测试计划实现:用测试计划中规定的测试用例验证程序是否输出了预期的结果

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

    一、如何解决问题

    1)你必须理解问题

    2)找到数据和未知量之间的联系。如果找不到直接的联系,则可能需要考虑辅助问题。最终应该得到解决方案。

    3)执行方案

    4)分析得到的解决方案

    (一)提出问题

    对这个问题我了解多少?

    解决方案是什么样的?

    存在什么特例?

    我如何直到已经找到解决方案了?

    (二)寻找熟悉的情况

    (三)分治法

    把一个大问题划分成几个能解决的小单元

    (四)算法

    • 算法:在有限的时间内用有限的数据解决问题或子问题的明确指令集合。

    (五)计算机问题求解过程

    (六)方法总结

    分析问题

    列出主要任务

    编写其余模块

    根据需要进行重组和改写

    (七)测试算法

    二、有简单变量的算法

    (一)带有选择的算法

    (二)带有循环的算法

    1、计数控制循环

    2、事件控制循环。

    • 嵌套结构:控制结构嵌入另一个控制结构的结构,又称嵌套逻辑。

    3、平方根

    • 抽象步骤:细节仍未明确的算法步骤

    • 具体步骤:细节完全明确的算法步骤

    三、复杂变量

    (一)数组

    同构项目的有名集合,可以通过单个项目在集合中的位置访问它们。项目在集合中的位置叫做索引。

    (二)记录

    异构项目于的有名集合,可以通过名字单独访问其中的项目。所谓异构,指集合中的元素可以不必相同。

    四、搜索算法

    (一)顺序搜索

    依次查找每个元素并将其与我们需要搜索的元素进行比较。

    (二)有序数组中的顺序搜索

    (三)二分检索

    在有序列表中查找项目的操作,通过比较操作排除了大部分检索范围。

    五、排序

    (一)选择排序

    (二)冒泡排序

    (三)插入排序

    六、递归算法

    • 递归:算法调用它本身的能力

    (一)子程序语句

    子程序有两种形式:

    1)不仅执行任务,还返回给调用单元一个值(值返回子程序)。 2)用作表达式,返回的值被用来评估表达式。

    (二)递归阶乘

    (三)递归二分检索

    (四)快速排序

     

    七、几个重要思想

    (一)信息隐蔽

    隐蔽的模块的细节以控制对这些细节的访问的做法

    (二)抽象

    • 数据抽象:把数据的逻辑视图和它的实现分离开。

    • 过程抽象:把动作的逻辑视图和它的实现分离开。

    • 控制抽象:把控制结构的逻辑视图和它的实现分离开。

    • 控制结构:用于改变正常的顺序控制流的语句。

    (三)事物命名

    在编写算法时,我们使用速记短语表示要处理的任务和信息,也就是说,给数据和过程一个名字,这些名字叫做标识符。

    (四)测试

    白盒测试:基于代码本身。 黑盒测试:基于测试所有可能的输入值。

    以下是思维导图:

  • 相关阅读:
    I.MX6 busybox set hosname and login with root
    Linux busybox mount -a fstab
    MDEV Primer
    qtcreator cannot find -lts
    I.MX6 linux Qt 同时支持Touch、mouse
    Android ashmem hacking
    I.MX6 Android U-blox miniPCI 4G porting
    Android service binder aidl 关系
    OK335xS psplash 进度条工作原理 hacking
    设置Android默认锁定屏幕旋转
  • 原文地址:https://www.cnblogs.com/20202410wyy/p/13896189.html
Copyright © 2011-2022 走看看