计算机导论期末总结

Posted 呆呆水獭_(:_」∠)_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机导论期末总结相关的知识,希望对你有一定的参考价值。

一、理论部分

为电子计算机奠定逻辑基础的是布尔。

图灵理论上证明了研制通用数字计算机的可行性。

冯诺依曼体系:

(1)计算机处理的数据和指令一律用二进制数表示

(2)顺序执行程序

计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。(指令和数据存储在主存储器

(3)计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成

指令系统:指令系统是计算机硬件的语言系统,也叫机器语言,指机器所具有的全部指令的集合,它是软件和硬件的主要界面,反映了计算机所拥有的基本功能。从系统结构的角度看,它是系统程序员看到的计算机的主要属性。

程序:计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。

主存储器:​其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。存放一个机器字的存储单元,通常称为字存储单元,相应的单元地址叫字地址。而存放一个字节的单元,称为字节存储单元,相应的地址称为字节地址。 ​

计算机系统由硬件系统和软件系统组成。

操作系统​是最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一。

函数调用结束后之所以能正确返回到主调函数,是因为在函数活动记录中保存了返回地址

运算器和控制器合称为CPU,控制器中的程序计数器PC的作用是存放下一条待执行的指令在内存的地址

程序不运行时,代码存放在外存中;要运行程序时,首先要将代码装入到内存/主存储器中。

指令是能够被计算机硬件直接识别的、命令计算机进行某种基本操作的二进制代码串。

操作系统的功能有:作业管理,设备管理,CPU管理,内存管理和文件管理

C程序源文件转变为目标代码文件是在编译阶段实现的,生成最终的可执行文件(exe文件)是在链接阶段实现的。

  1. 从计算工具的发展历史来看,现代“电子计算机”和帕斯卡、莱布尼兹时代的“机械式计算器”有什么本质区别?

    (1)通用性与专用性区别:电子计算机通过编程可实现所有可计算性通用功能(2分);机械式计算机通常只实现算术运算等专用功能(1分)。注:答出通用性与专用性区别或者相近意思即可给分。

(2)自动化与手动化区别:电子计算机通过存储程序可实现自动化运算(1分);机械式计算器进行运算通常需要人的大量参与(1分)。注:答出自动化与手动化区别或者相近意思即可给分。

2、针对ENIAC计算机,冯.诺依曼为什么要提出“存储程序”的思想?冯.诺依曼机体系的特点是什么?

(1)ENIAC的最大弱点是没有真正的存储器,程序是外插型的,导致计算的高速与编写程序的手工化存在着很大的矛盾,因此冯.诺依曼提出了“存储程序”的思想(2分)。注:答出解决程序执行和程序编写矛盾即可给分。

(2)冯.诺依曼机体系的特点:指令和数据采用二进制表示(1分);指令和数据一样存储在主存储器中(1分);计算机由运算器、控制器、存储器、输入设备、输出设备五大部分组成(1分)。

3、一幅位图图像可以看作是由多个小方格组合而成的矩阵,每个小方格叫做一个“像素”,比如一个分辨率为1024×768的图像可看作由1024×768个方格组成。假设每个像素能表示512种颜色,则存储一幅1024×768的图像至少需要多少字节?请说明原因。

计算机以二进制存储数据,因此存储512种颜色至少需要logz512=9bit。存储1024×768分辨率图像至少需要9bit×1024×768/8=884736B=864KB

  1. 高级语言所编写的源代码程序(可看成一个字符序列)在内存中也是二进制存储的,为什么计算机不能直接执行?请解释CPU运行一个程序的主要步骤?

1)计算机能直接执行的代码是指令系统所规定的二进制形式,字符序列所组成的源代码程序是二进制存储的,但不是指令系统编码格式,因此不能被计算机直接执行(2分)。注:答出源代码程序不是指令系统(或机器代码)格式即可给分。

(2)CPU运行一个程序包含三个主要步骤:取指令(1分);分析指令(1分);执行指令(1分)。

  1. 什么是计算机指令?通常指令所实现的操作是非常基本和简单的,但为什么我们可以用计算机完成玩游戏,甚至战胜世界围棋大师等复杂任务?

(1)计算机指令是能够被计算机硬件直接识别的、命令计算机进行某种基本操作的二进制代码串(2分)。注:答出计算机指令是机器代码给1分。

(2)现代计算机能够执行复杂任务是因为“算法+算力”:人类通过“算法”将复杂任务分解成若干个简单的、基本的计算机操作指令逐步执行(2分);计算机通过强大的“计算能力”实现操作指令的快速运行(1分)。

其他知识点:

https://www.mianfeiwendang.com/doc/656efbcd3789795935bbd155https://www.mianfeiwendang.com/doc/656efbcd3789795935bbd155

计算机导论基础知识_LxinY213的博客-CSDN博客https://blog.csdn.net/LxinY213/article/details/122110365

二、c语言知识点

冒泡函数:重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

使用双for循环。例子:

6-21 实验7_13_选择排序 (100 分)_呆呆水獭_(:_」∠)_的博客-CSDN博客https://blog.csdn.net/weixin_62495164/article/details/121712072?ops_request_misc=%7B%22request_id%22%3A%22164036280416780265493373%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=164036280416780265493373&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-121712072.first_rank_v2_pc_rank_v29&utm_term=6-21+%E5%AE%9E%E9%AA%8C7_13_%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F+&spm=1018.2226.3001.4187

静态数组:静态数组的变量本身就是数组第一个元素的地址。 动态数组的变量存放的是一根指向到申请空间的首址指针。 即使对于静态二维数组或者多维数组来说,其真实也是多个地址连续的一位数组组成的。例子:

7-37 实验7_2_数组查找 (100 分)_呆呆水獭_(:_」∠)_的博客-CSDN博客https://blog.csdn.net/weixin_62495164/article/details/121707123?ops_request_misc=%7B%22request_id%22%3A%22164036311816780274153418%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=164036311816780274153418&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-121707123.first_rank_v2_pc_rank_v29&utm_term=7-37+%E5%AE%9E%E9%AA%8C7_2_%E6%95%B0%E7%BB%84%E6%9F%A5%E6%89%BE+&spm=1018.2226.3001.4187

堆栈区别:

1.管理方式不同

堆是由程序员通过 调用系统库函数来管理内存,所以管理不力 就会出现常说的内存泄漏。栈是由计算机系统分配内存 而且系统有专门的寄存器存储栈指针。

2.生长方式不同

堆是向高地址扩展 也就是常说的向上生长。是不连续的内存区域。栈是向低地址扩展 也就是常说的向下生长。 是连续的内存区域。

3.分配方式不同

栈可静态分配或动态分配。静态分配由编译器完成,如局部变量的分配。动态分配由alloca函数在栈上申请空间,用完后自动释放。堆只能动态分配且手工释放。

链表:

递归的非递归实现:(借大佬的话来讲)1、递归就是函数调用函数本身,运行起来就是函数嵌套函数,层层嵌套,所以函数调用、参数堆栈都是不小的开销,但是程序简单。

2、非递归就是不断地对参数入栈、出栈,省去了函数层层展开、层层调用的开销。虽然参数出入栈次数多了,但是一般都开辟固定的足够大的内存来一次性开辟、重复使用。

3、非递归是从堆栈的角度来编写程序,速度快,但代码复杂。

递归是从问题本身的逻辑角度来编写,虽然速度相对慢,但代码容易理解。

三、机考PTA注意事项

见:

PTA易报错及不易察觉的检查点_呆呆水獭_(:_」∠)_的博客-CSDN博客https://blog.csdn.net/weixin_62495164/article/details/122138561?spm=1001.2014.3001.5501

以上是关于计算机导论期末总结的主要内容,如果未能解决你的问题,请参考以下文章

计算机安全导论期末复习小笔记

人工智能导论期末复习合集

软件工程导论期末复习重点

20191214第二周《信息安全导论》学习总结

20191302 《信息安全专业导论》第二周学习总结

2021-2022-1 20211317李卓桐 《信息安全专业导论》第十二周学习总结