02 2023 档案
摘要:本章中,我们将用 C 语言开发一个简单的游戏程序,来对如何让计算机"思考"进行说明。该游戏程序的名称是《猜拳游戏》。也就是说,让大家和计算机进行猜拳比试。在比试开始前,是先出石头、剪刀还是布呢,想必大家都会思考一番。而计算机也是如此,不进行"思考"就无法获胜。那么,如何才能让计算机"思考"呢?我们可以用程序来实现思考步骤,然后再传给计算机。大家知道,即使是对同一件事情,成人和小孩的思考方式也是不同的,经验、直觉等都会影响"思考"的深度。而这些在程序中是如何表示的呢?这就是本章的重点。不过大家先不要着急,让我们从编程开始说起。
阅读全文
摘要:"计算机如果没有软件,就仅仅是个箱子"这个诙谐的描述大家都知道吧?也就是说,即使是计算机这种看起来很了不起的设备(硬件),离开了软件依然什么也做不了。虽然这句话极具讽刺意味,不过也正戳到了计算机的本质。因为软件的存在是硬件正常运行的必要条件。通过前面的章节我们已经知道,控制 CPU,只需把编译器或汇编器生成的本地代码加载到主内存并运行就可以了。那么,如何用程序来控制 CPU 和主内存以外的硬件呢?本章我们就会对这个问题进行解答。
阅读全文
摘要:笔者在学生时代曾写过比较 C 语言源代码和汇编语言源代码的报告。这个报告的研究方法是,把 C 语言的各种语法变换成汇编语言,然后对这些内容进行调查。通过研究,笔者对程序的运行机制有了深刻的了解。希望各位读者看完本章内容也能有同样的收获。在本章的前半部分,我们会对 CPU 解释运行的本地代码和汇编语言的一对一关系、汇编语言的源代码中包含的用来指示汇编器的伪命令、栈的推/啪以及调用函数的机制进行说明。在本章的后半部分,会向大家介绍一下局部变量和全局变量的不同、循环等流程控制的实现方式等。在研究对象方面,我们选取了 Pentium等 x86 系列 CPU 用的汇编语言,编程工具则依然使用前面章节中用到的 Borland C++。本章的内容相比其他章节多了不少,请大家耐心地阅读下去。
阅读全文
摘要:利用计算机运行程序大部分都是为了提高处理效率。例如,微软文字这样的文字处理软件,是用来提高文本文件处理效率的程序,微软Excel 等表格计算软件,是用来提高账本处理效率的程序。类似于文字处理软件及表格计算软件这样,为了提高特定处理效率的程序总称为"应用"。程序员的工作就是编写各种各样的应用来提高业务效率。而应用的运行环境,也就是操作系统,则直接从软件商店等处购买就可以了。不过,一定不能忽略操作系统,否则就无法编写应用。这是因为,程序员是通过利用操作系统提供的功能来编写应用的。本章中,我们会对操作系统的角色,以及应用利用操作系统功能的方法进行说明。关于操作系统的类型,这里我们选取了用户人数较多的 Windows 作为示例。
阅读全文
摘要:源代码完成后,就可以编译生成可执行文件了。负责实现该功能的是编译器。本章将围绕着编译器的功能,详细介绍从程序编写到运行为止的流程。首先,我们会和大家一起看一下源文件是如何通过编译转换成可执行文件的。接下来,我们会继续关注可执行文件被加载到内存后的运行机制。此外,还会对程序运行时内存上的栈及堆进行说明。由于篇幅有限,本章只介绍了用 C 语言编译器一个来编写 Windows 用的可执行文件(EXE 文件)的示例,不过其他环境及编程语言等采用的基本上是同样的机制。因此,即使不了解 C 语言的相关知识也不会有影响,这一点请大家放心。
阅读全文
摘要:开篇 (1)应用的运行环境,指的是什么? 操作系统和计算机本身(硬件)的种类 (2)Macintosh用的操作系统(MacOS),在AT兼容机上能运行吗? 无法运行 (3)Windows上的应用,在MacOS上能运行吗? 无法运行 (4)FreeBSD提供的Ports,指的是什么? 通过使用源代码来
阅读全文
摘要:0、开篇 (1)文件储存的基本单位是什么? 字节(1字节=8位) (2)DOC、LZH和TXT这些扩展名中,哪一个是压缩文件的扩展名? LZH (LZH是用LHA等工具压缩过的文件的扩展名) (3)文件内容用“数据的值*循环次数”来表示的压缩方法时RLE算法还是哈夫曼算法? RLE算法 (4)在Wi
阅读全文
摘要:0、开篇: (1)存储程序方式指的是什么? 在存储装置中保存程序,并逐一运行的方式 (2)通过使用内存来提高磁盘访问速度的机制称为什么? 磁盘缓存 (3)把磁盘的一部分作为假想内存来使用的机制称为什么? 虚拟内存 (4)Windows中,在程序运行时,存储着可以动态加载调用的函数和数据的文件称为什么
阅读全文
摘要:计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。因此,大家有必要对内存和磁盘的构造有一个物理上的(硬件的)和逻辑上的(软件的)认识。本章的主题是内存(磁盘部分会在第 5 章中讲解)。其实,从物理上来看,内存的构造非常简单。只要在程序上花一些心思,就可以将内存变换成各种各样的数据结构来使用。譬如,物理上有棱有角的内存,在程序上是可以按照逻辑很流畅地使用的。而且这并不特别,它是很多程序中都会用到的一般方法。
阅读全文