1.11 结构化编程
20世纪60年代,许多大型软件的开发遇到了严重困难。常常推迟软件计划,因而使成本大大超过预算,而且最终产品也不可靠。人们开始认识到,软件开发是项复杂的活动,比原来所预想的要复杂得多。20世纪60年代的研究结果是结构化编程(structured programming)的出现,用规定的方法编写程序比非结构化编程能产生更清晰、更容易测试/调试以及更容易修改的程序。
本书的第2章将介绍结构化编程原理。第3章到第5章则会开发多种结构化程序。结构化编程研究的一个更具体结果是1971年Niklaus Wirth教授推出了Pascal语言。Pascal语言是用17世纪著名数学家和哲学家巴雷斯·帕斯卡(Blaise Pascal)的名字命名的,常用于教学中讲解结构化编程.因而很快成为了大学中受欢迎的语言。但是这个语言缺乏在商业、工业和政府应用程序中所需要的许多特性,因此没有被大学以外的环境所接受。
Ada语言是在20世纪70年代和80年代初由美国国防部资助开发的。在此之前,国防部的导弹命令与控制软件系统是由几百种不同语言生成的,国防部要求用一种语言来完成大多数工作。Ada以Pascal为基础.但最终结构与Pascal大相径庭。这个语言是根据著名诗人Lord Byron的女儿(Ada Lovelace)的名字命名的。Ada Lovelace在19世纪初编写了世界上第一个计算机程序,用于charles ;Babbage设计的分析机引擎的计算设备。Ada的一个最重要功能是多任务(multiasking).程序员可以使多个活动任务并行发生。我们要介绍的其他常用高级语言(包括C/C++)通常只让程序员编写一次只有一个活动任务的程序。
1.12 典型C++环境基础
C++系统通常由几个部分组成:程序开发环境、语言和C++标准库。下面介绍图1.1所示的典型C++环境。
C++程序通常要经过6个阶段(如图1.1),即编辑(edit)、预处理(Preprocess)、编译(compile)、连接(Link)、装入(load)和执行(excute)。这里主要介绍典型UNIX C++系统(注意,本书的程序不经修改或稍作修改即可在大多数当前的++系统中运行,包括Microsoft Windows系统)。如果当前使用的不是UNIX系统,可以参看系统手册或向老师请教如何在相应环境中完成这些工作。第一个阶段是编辑文件,这是用编辑器程序(editor program)完成的。程序员用编辑器输入C++程序,并进行必要的修改.然后将程序存放在磁盘之类的辅助存储设备中。C++程序文件名通常以.cpp、cxx或.C的扩展名结尾(注意C为大写),详见C++环境文档中对文件名扩展的说明。UNIX系统中两个广泛使用的编辑器是vi和emacs。个人计算机上的Borland C++和Microsoft
visualC++等C++软件包都有自己的编辑器,它们与编程环境紧密集成。这里,我们假设读者已经知道如何编辑程序。
随后的阶段是程序员发出编译(compile)程序的命令。编译器将C++程序翻译为机器语言代码(也称为目标码)。在C++系统中,预处理程序在编辑器翻译阶段开始之前自动执行。C++预处理器采用预处理指令(Preprocess directive)表示程序编译之前要进行的某些操作。这些操作通常包括在要编译的文件中包括其他文本文件和进行各种文本替换。前面几章将介绍最常见的预处理指令,所有预处理指令的详细介绍见第17章“预处理器”。编辑器在将程序翻译为机器语言代码之前调用预处理器。
下一个阶段是连接。C++程序常常引用其他地方定义的函数,如标准库中或持定项目的程序员使用的专用库。C++编译器产生的目标码通常包含由于缺少一些内容而造成的“空穴”,连接器(1inker)将目标码与这些默认功能的代码连接起来,建立执行程序映像(不再缺少任何代码)。在典型的UNIX系统中,编译和连接C++程序的命令是CC。要编译和连接程序welcom.C,在UNIX提示符下键人:
CC ; welcome.C
并按Enter键(或Return键)。如果程序编译和连接正确,则产生文件a.out。这就是welcome.C的执行程序映像。
再下一个阶段是装入。执行之前,要先把程序放进内存中,这是由装入器(Loader)完成的,装入器读取磁盘中执行程序的映象文件,
并将其放进内存中。最后,计算机在CPU控制下逐条指令地执行程序。要在UNIX系统中装入并执行程序.可在UNIX提示符下键入a.out并按Return键。
程序不是一次就能够运行。上述每个阶段都可能因为各种错误而失败。例如,可能除数为0(计算机上的非法操作,和算术运算中一样),这会使计算机打印出错信息。然后.程序员需返回编辑阶段,进行必要的修改并继续其余阶段,确定修改之后能否顺利工作。
常见编程错误1.1
如果除数为0之类的错误在程序运行时发生,则称这类错误为运行时错误(run-time error)或执行时错误(execution-time error)。除数为0通常是个致命错误,会使程序立即终止,无法完成工作。非致命错误能让程序运行完毕,但会产生错误结果(注意,在有些系统中.除数为0不是致命借误,详见系统的说明文档)。
C++中的大多数程序都要输入/输出数据。有些C++函数的输入来自cin(标准输人流),通常是键盘,但也可以连接其他输入设备。数据通常输出到co皿(标准输出流).一般是计算机屏幕,但也可以是其他设备。程序打印结果,通常是指在屏幕上显示结果。数据也可以输出到其他设备,如磁盘和硬拷贝打印机。还有称为cerr的标准错误流(standard error stream),通常连接屏幕,用于显示错误消息。用户经常把普通输出数据(即cout)路由到非屏幕设备,而让cerr输出到屏幕,可以立即通知用户发生错误。
2016考研政策http://www.kyjxy.com/yuanxiao/zhengce/
2015考研英语真题http://www.kyjxy.com/yingyu/zhenti/
2015考研复试英语口语http://www.kyjxy.com/fushi/zhinan/