计算机导论1Word文档下载推荐.docx
《计算机导论1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机导论1Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
其他输入设备有鼠标、光笔、触摸屏,以及声音输入装置。
中央处理器(CPU)的功能是执行指令,例如数学计算、数据比较和数据在系统中的移动。
主存储器是在进程中暂时存储程序和数据的地方。
当关机时存储在主存储器中的数据就被删除了。
输出设备通常是显示器或是打印机。
如果是在显示器上显示,就是软复制。
如果是在打印机上打印出来,就是硬复制。
辅助存储器可以输入也可以输出。
它可以永久保存程序和数据。
当关机时,程序和数据仍然保存在辅助存储器中,以便下次使用。
图1-2基本的硬件组成
1.3计算机软件
计算机软件分为两大类:
系统软件和应用软件。
不管硬件系统体系结构如何,软件都分为这两类。
系统软件管理计算机资源。
它在用户和硬件之间建立了一个接口,但并不直接为用户服务。
应用软件则是直接帮助用户解决问题。
图1-3显示了计算机软件的组成。
图1-3软件的种类
1.3.1系统软件
系统软件由一系列程序构成,这些程序管理着计算机硬件资源并执行所需的信息处理任务。
这些程序分为三类:
操作系统、系统支持程序和系统开发程序。
操作系统提供一些例如用户接口、文件和数据库访问和到通信系统的接口。
这种软件的主要目的是在保证用户访问系统的同时维护系统高效地工作。
系统支持软件提供了系统工具和其他操作服务。
例如排序程序和磁盘格式化程序。
操作服务包括一系列程序,这些程序为操作人员和安全监视器提供运行数据,以保护系统和数据的安全。
最后一类系统软件是系统开发软件,包括把程序转换为机器执行语言的语言翻译器,保证程序无错的调试工具,以及不在本书讨论范围的计算机软件设计系统。
1.3.2应用软件
应用软件分为两大类:
通用软件和具体应用软件。
通用软件从开发者处购买,并能应用于多种场合。
例如文字处理器、数据库管理系统和计算机辅助设计系统。
之所以称为通用软件是因为它们可以解决用户不同的计算问题。
图1-4软件
专用软件只能应用于特定的目的。
例如会计使用的总账系统和材料计划系统就是专用软件。
它们只能完成所设定的任务,而不能应用于其他任务。
系统和应用软件的关系可以通过图1-4看出来。
在图1-4中,每个圆圈代表一个接口点。
中心是硬件,最外层代表用户。
要应用此系统,用户需要使用某些应用软件。
应用软件又和系统软件层的操作软件交互。
系统软件提供和硬件的直接相互作用。
注意此图底部的开口。
用户沿着此路径就可以在需要时直接和操作系统发生联系。
如果用户买不到所需的软件,那就必须构建自行开发的应用软件。
在现在的计算环境中,用来开发软件的工具就是要通过本书学习的C++语言。
1.4计算环境
1.4.1个人计算环境
在1971年,Intel公司的MarcianE.Hoff把中央处理器的基本要素结合到微处理器中。
采用芯片的第一台计算机是Intel4004,它也是Intel奔腾系统的开山鼻祖。
如果使用个人计算机,所有的计算机硬件都连接在个人计算机(或简称为PC)上。
在这种情况下,整台机器都属于你,你可以随心所欲使用。
图1-5显示了典型的个人计算机。
图1-5个人计算环境
1.4.2分时环境
大公司的职员通常在分时环境中工作。
在分时环境中,很多用户都与一个或多个计算机连接。
这些计算机可以是小型计算机,也可以是大型主机。
尽管现在越来越多的微机被用来模拟终端,但是它们所用的终端通常是不可编程。
而且在分时环境中,输出设备(例如打印机)和辅助存储器(例如磁盘)被所有用户共享。
图1-6显示了一个典型的学院图书馆系统,在这里很多学生可以共享小型计算机。
图1-6分时环境
在分时环境中,所有计算都必须由一台中央计算机完成。
换言之,中央计算机有很多职责:
控制共享资源,管理共享数据和打印,以及计算工作。
这些工作使计算机非常繁忙。
事实上,有时因为太繁忙,用户会对其较慢的反应而懊恼。
1.4.3客户机/服务器环境
客户机/服务器计算环境把计算功能在中央计算机和用户机之间进行分工。
用户可以通过个人计算机和工作站把某些计算工作从中央计算机指派给工作站。
在客户机/服务器环境下,用户的微机或工作站被称为客户机。
中央计算机可以是一台功能强大的微机、小型计算机或中央主机,称作服务器。
由于客户机和中央计算机共同分担工作,所以反应时间和显示器显示加快,从而用户工作更有效率。
图1-7显示了一个典型的客户机/服务器环境。
1.4.4分布式计算
分布式计算环境给不同的服务器和客户机提供了无缝集成的计算功能。
因特网连接了不同的客户机和服务器。
当今的因特网可以连接有线和无线设备,将数台服务器连接起来,提供一种特定服务。
例如E-Bay联合使用计算机提供拍卖服务。
在这种环境下,计算机可以执行同一任务,也可以完成不同功能。
这种环境提供了一种可靠的、可伸缩的而且容易使用的网络。
图1-8演示了分布式系统。
图1-7客户机/服务器环境
图1-8分布式计算
1.5计算机语言
为计算机编程就必须使用计算机语言。
经过多年的发展,计算机语言已经从机器语言发展到自然语言。
计算机语言的发展史可以通过图1-9看出。
图1-9计算机语言的发展史
1.5.1机器语言
在计算机早期,惟一可以使用的编程语言是机器语言。
每台计算机都由自己的机器语言,这种语言是由一系列的0或1组成。
程序1-1演示了机器语言编程的例子。
这个程序把两个数字相加并显示结果。
用机器语言写的指令必须是一系列的0或1,因为计算机内部是由很多开关、晶体管和其他电子设备构成,而这些装置只有开或关两种状态。
0代表关的状态,1代表开的状态。
程序1-1机器语言表示的加法程序
说明:
计算机能理解的语言只有机器语言。
1.5.2符号语言
很显然,如果程序员继续使用机器语言,就不会编出大量程序。
20世纪50年代初期,GraceHopper,一位数学家,同时也是一位美国海军军官,开发了一种特殊的计算机编程语言,用来把程序转换为机器语言。
她的工作推动了编程语言的应用,这种语言只是简单地用符号或助记符来代表不同的机器语言指令。
因为使用符号,这种语言就被称为符号语言。
程序1-2演示了用符号语言表示的加法程序。
程序1-2符号语言表示的加法程序
一种被称为汇编器的特殊程序把符号编码翻译为机器语言。
因为符号语言必须汇编为机器语言,所以它很快就被称作汇编语言。
现在那些代表计算机机器语言的符号语言仍被称为汇编语言。
1.5.3高级语言
虽然符号语言大大提高了编程效率,但仍要求程序员局限于所使用的硬件上。
而且使用符号语言也是非常烦琐的,因为每一个机器指令都必须单独编码。
为了提高程序员的效率,把更多注意力从计算机转移到要解决的问题上,人们开发了一种新的高级语言。
高级语言可以移植到很多计算机上,这就使得程序员可以专注于要解决的问题而不是计算机。
高级语言把程序员从汇编语言的琐碎工作中解脱出来。
高级语言有一个与符号语言相同的地方:
那就是必须转换成机器语言。
这个过程称为编译。
第一种广泛使用的高级语言是FORTRAN。
是由JohnBackus和IBN小组在1957年开发的。
现在仍广泛地应用于科学和设计方面。
跟着FORTRAN之后出现的是COBOL。
GraceHopper在COBOL商业语言的开发中又是一位关键人物。
几年后其他的语言——最主要是BASIC、Pascal、Ada和C语言都得到了发展。
现在一种针对于系统软件和新应用代码的更受欢迎的高级语言是C++语言。
程序1-3把程序1-2中的加法程序用C++语言表示出来。
程序1-3用C++语言表示的加法程序
1.5.4自然语言
最理想的情况是我们可以使用自然语言(例如英语、法语、或者汉语),而计算机能够理解并立即执行我们的命令。
虽然这听起来像是科幻小说,但是在实验室里人们正进行着大量这方面的工作。
到目前为止,它在工业方面的应用还是很局限的。
1.6编写、编辑、编译和连接程序
我们前边已经知道只有把程序编码为它的机器语言时,计算机才能理解。
这一节我们将学习把用C++语言编程的程序转换为机器语言的过程。
这个过程用线性方式表示出来,但要认识到,这些步骤在开发过程中重复了很多遍,以便检查错误和改进编码。
程序员的工作是编写程序并转换为可执行文件(机器语言)。
这个过程有三个步骤:
(1)编写并编辑程序,
(2)编译程序,(3)将程序和要求的库模块连接。
1.6.1编写和编辑程序
用于编写程序的软件称为文本编辑器。
文本编辑器帮助输入、修改和存储字符数据。
通过系统上的编辑器,你可以写信,写报告,编程序。
编写程序和其他形式的文本进程主要的不同是,程序是以编写代码行为基础,而大多数的文本进程是以字符和行为基础。
文本编辑器可以是通用的文字处理器,但通常是由提供编译器的同一家公司提供的特殊编辑器。
编辑器应该具有以下特殊命令——定位和替换语句的搜索命令,把语句从程序的某个部分移动到另一部分的复制粘贴命令,以及允许设置制表位来对齐语句的格式化命令。
完成一个程序后就把文件保存在磁盘里。
这个文件将输入到编译器,称为源文件。
1.6.2编译程序
保存在磁盘源文件里的信息必须翻译为机器语言才能被计算机理解。
这就是编译器的工作。
C++编译器实际是两个独立的程序:
预处理器和翻译器。
预处理器读取源代码,为翻译器做准备。
预处理器准备代码时,它寻找预处理器指令。
这种指令告诉预处理器寻找特定的代码库,替换代码并用其他方法准备代码,以便把代码翻译为机器语言。
预处理的结果称为翻译单元。
预处理器完成代码编译准备工作后,翻译器就开始把程序转换为机器语言的实际工作。
翻译器读取翻译单元,然后将结果即目标模块写到一个文件中,最后与其他预编译单元共同组成最终程序。
目标模块就是转换为机器语言的代码。
虽然编译器的结果已经是机器语言代码,但还是不能运行,也就是说不具有执行性。
因为它没有所需的C++和其他函数。
1.6.3连接程序
以后我们会看到,C++语言由很多函数构成。
其中的一些函数由用户完成,并作为源程序的组成部分。
但也有其他函数,例如输入/输出进程和数学库函数,这些函数存在于别处而必须安装在用户的程序上。
连接器把所有不管是用户开发还是系统提供的函数编译为最终的可执行程序(图1-10)。
图1-10构建C++程序
1.7程序的执行
图1-11程序的执行
一旦程序连接完毕就准备运行。
为了运行程序,可以使用操作系统命令,例如run(运行)命令把程序加载到内存中,然后执行。
把程序输入内存的功能是由称为加载器的操作系统程序完成的。
它定位可执行程序并把它读入内存。
一切工作完成后,控制就交给程序,然后执行程序。
执行程序时,程序可以从用户或文件中读取要处理的数据。
处理完的数据可以输出到显示屏或者存到文件中。
当程序完成后,就会告知操作系统,操作系统就会把程序从内存移出。
图1-11演示了在个人计算机环境中执行程序的过程。
1.8系统开发
前面我们已经学习了构建程序的必要步骤。
这一节我们将学习如何开发程序。
整个程序的质量和成功与否都取决于这个关键进程。
如果用良好的系统化开发技巧细心地设计每个程序,程序将会是高效的,可以避免错误而且易于维护。
1.8.1系统开发生存周期
现在大规模的现代编程项目是由一系列称为系统开发生命周期的阶段完成。
虽然根据环境的不同,阶段的确切数目和名称会有所不同,但是人们对开发过程必须遵守的步骤却达成了共识。
不管用什么方法,现在的软件工程概念都要求严密、系统的软件开发方法。
图1-12系统开发模型
现在一种名为瀑布模型的开发生命周期非常受欢迎。
取决于不同的公司和要开发的软件类型,这种模型有5到7个阶段。
图1-12提供了这种模型的一种可能变体。
瀑布模型从系统要求开始。
在这个阶段中,系统分析定义系统将要完成的特定要求。
这些要求以用户可以理解的术语表示出来。
分析阶段从系统的角度来寻找不同的方案,而设计阶段就决定如何建立系统。
在设计阶段中,组成系统的各个程序的功能就确定了。
同时也完成了文件和/或数据库的设计。
最后在第四个阶段中就开始编写程序。
这个过程将在本书中讲解。
当写出程序,经过测试达到程序员的要求时,项目就进入了系统设置阶段。
所有程序都必须测试以保证系统工作的整体性。
最后是维护阶段。
主要是保证投入生产的系统工作稳定。
这种瀑布模式看起来好像是各个阶段不间断地从开始延续到最后,事实上并非如此。
请注意图1-12中的反向箭头的迭代过程。
随着每个阶段的开发,经常会在前面的工作中发现错误和疏忽之处。
当发生这种情况时,就需要返工,以保证一致性并分析所做的改变引起的影响。
如果这是一项简短的工作,那就最好不过了。
但是如果在最少三个主要项目的代码和测试阶段都有错误,以至于它们不能运行而必须取消,就意味着几百万美元的资金和几年的开发时间都白费了。
1.8.2程序开发
程序开发是一个多步骤的过程。
它要求首先理解问题,然后制定解决方案,编写并测试程序。
拿到一个开发程序的任务时,你会接到相关的程序要求说明和程序接口设计书。
同时还要对整个项目有概括性的理解,以便于知道自己的工作是如何与项目衔接。
你的工作是解决如何把要输入的内容转换为特定的结果。
这就是程序设计工作。
为了理解这个过程,我们来看一个简单的问题。
计算你的房子面积有多少平方英尺?
你将如何做呢?
1.理解问题
解决任何问题的第一步是理解问题。
首先仔细阅读要求说明。
如果认为已经完全理解了,请与用户和系统分析人员共同讨论你的理解。
这个过程通常要求提问问题以确认你的理解。