《C++入门经典(第6版)》——第2章 程序的组成部分2.1 使用C++的原因

第2章 程序的组成部分

C++入门经典(第6版)
本章介绍如下内容:

为何使用C++;

C++程序的组织结构;

注释如何让程序更容易理解;

函数的作用。

虽然已面世37年,但是C++编程语言的地位比20世纪70年代末出现的其他东西高得多。当前C++仍在风行,还是一种世界级编程语言。

造就它令人惊讶的生命力的原因在于,通过使用C++,只需编写少量的代码,就可创建快速执行的程序,且可在各种计算环境下运行。当今的C++编程功能让您能够生成功能强大的复杂应用程序,适用于商业、商务和开源开发。

2.1 使用C++的原因

在计算时代持续的70年中,计算机编程语言得到了长足发展。C++被认为是对1972年面世的C语言的革命性改进。

最早的程序员使用最原始的计算机指令:机器语言,这些指令用一长串1和0表示。后来,人们发明了汇编语言,它们将机器指令映射到人类能阅读且易于管理的命令,如ADD和MOV。

组成计算机程序的指令称为源代码。

随后出现了高级语言,如BASIC和COBOL,这些语言让程序员能够使用类似于实际单词或句子的语言编写程序,如Let Average = .366。然后,由称为解释器或编译器的工具将这些指令转换为机器语言。

基于解释器的语言每次读取一行代码,并将指令进行转换。

基于编译器的语言通过编译将程序转换为目标代码,这些代码存储在目标文件中。然后,由链接器将目标文件转换为可在操作系统上运行的可执行程序。

由于解释器在代码编写时读取它,并动态地执行代码,因此对程序员来说更容易使用。编译器要求程序员执行不那么方便的编译和链接步骤,但好处是运行速度比解释器运行的程序快得多。

多年来,程序员的目标是编写可快速执行的简短代码。程序必须很小,因为内存昂贵;其运行速度也必须快,因为处理能力的要求也很苛刻。随着计算机价格越来越便宜、速度越来越快、处理能力越来越强大,而内存的容量越来越大、价格越来越便宜,因此,这些制约因素已不再重要。

当前,最大的编程开销是程序员的时间成本。诸如C++等现代语言使得编写结构良好、易于维护的程序更容易,而且这些程序还可扩展和改进。

2.1.1 编程风格

随着编程语言的发展,出现了满足不同编程风格的语言。

在过程型编程中,程序被设计为一系列操作,这些操作对一组数据进行处理。结构化编程的出现为组织这些过程和管理大量数据提供了一种系统性方法。

结构化编程的主要思想是分而治之。对于程序要执行的任务,如果太复杂,则将其划分为一组更小的任务。如果这些任务还太复杂,则进一步划分成更小的任务。最终的目标是,任务足够小,足够独立,易于理解。

例如,假设有出版商请您编写一个程序,以跟踪其天才横溢、魅力四射的计算机图书作者小组的平均收入,可将这项工作划分成如下子任务。

(1)找出每位作者的收入。

(2)计算出版商有多少作者。

(3)计算这些作者的总收入。

(4)将总收入除以作者数。

计算总收入又可做如下划分。

(1)获取每位作者的个人记录。

(2)获悉作者的预付款和版税。

(3)扣除咖啡的费用、治疗眼睛疲劳的费用以及脊椎保健的费用。

(4)将其收入加入总收入。

(5)获取下一位作者的个人记录。

获取作者记录的任务又可进一步划分为如下子任务。

(1)打开存储作者记录的文件夹。

(2)选择正确的记录。

(3)从磁盘读取数据。

虽然结构化编程得到了广泛应用,但这种方法也存在一些缺点。随着数据量的增加,将数据与操作数据的任务分开将更难。使用数据要做的事情越多,程序越令人感到迷惑。

过程型程序员经常发现自己为解决问题而重新寻求新的解决方案,而不是编写可重用的程序。重用性基于的理念是,创建程序组件,需要时将其插入程序中。这种方法模拟了现实世界。在现实世界中,使用已制造好的零件组装成设备,这些零件执行特定的任务,因此自行车设计师无须从头开始制作刹车;相反,他可将现有的刹车融合到设计中,以利用其功能。

在面向对象编程面世前,计算机程序员无法使用这种基于组件的方法。

2.1.2 C++和面向对象编程

面向对象编程(OOP)是一种革命性的编程风格,正是C++让它得以大行其道。

从本质上说,面向对象编程就是将数据和操作数据的过程视为一个对象:一个有身份和特征的独立实体。

C++全面支持面向对象编程,包括面向对象开发的三个支柱概念:封装、继承和多态。

1.封装
前面说到,自行车工程师在设计新车时,他将各个组件组合起来,如车架、手把、车轮和前灯。每个组件都有一些属性,能够完成一些行为。他不用了解前灯的工作原理就能使用,只要知道它是做什么用的即可。

为了实现这个目标,前灯必须是独立的,它必须完成明确的任务,并且全面完成。全面完成一项任务称为封装。

前灯的所有属性都封装在headlight对象中,而不是遍布整辆自行车。

C++支持通过创建用户定义的类型来封装属性,这种类型称为类。定义良好的类是一个完全封装的实体,要么使用整个实体,要么不使用。使用定义良好的类时,程序不需要知道其工作原理,根据这一原则,应隐藏类的内部工作原理。程序员只需知道如何使用它即可。如何创建类将在第8章介绍。

2.继承和重用
下面更深入地了解自行车工程师,假设他名为Penny Farthing。Penny要让新设计的自行车快速投放市场:他欠了一屁股债,这些债主可没有耐心。

鉴于时间紧迫,Penny决定对一款现有的自行车进行改进,给它添加杯托和里程表等新部件,推出一款有额外功能的改进型新车。他重用了普通自行车的所有部件,同时添加了新部件,以拓展其用途。

C++通过继承来支持重用的概念。可将新类型声明为现有类型的扩展,新子类称为继承了现有类型。Penny设计的自行车继承了老式普通自行车,因此具备其所有品质,但根据需要添加了新功能。有关继承及其应用将在第16章讨论。

3.多态
作为最后一个卖点,Penny Farthing设计的Amazo-Bicycle牌自行车的铃铛的行为与众不同,不是像病鸭那样叫,而是轻按时像汽车喇叭,重按时像雾号。铃铛根据骑车人如何使用它发出正确的叫声。

为了支持这种不同对象做相应事情的概念,C++使用了称为函数多态和类多态的功能。 多态指的是同一样东西有多种形态,这将在第17章讨论。

通过学习C++,您将全面了解面向对象编程。等您阅读完本书并开始开发C++程序时,将熟悉这些概念。

本书不介绍如何设计自行车,也不介绍从债务缠身的状态下走出来。

时间: 2024-10-09 23:56:31

《C++入门经典(第6版)》——第2章 程序的组成部分2.1 使用C++的原因的相关文章

《C++入门经典(第5版•修订版)》——第2章 程序的组成部分

第2章 程序的组成部分 C++入门经典(第5版•修订版)本章介绍如下内容: 为何使用C++?C++程序的组织结构.注释如何让程序更容易理解?函数的作用.虽然面世30多年,但是C++编程语言的地位比20世纪70年代末出现的其他东西高得多.当前C++仍在风行,还是一种世界级编程语言. 造就它令人惊讶的生命力的原因在于,通过使用C++,只需编写少量的代码,就可创建快速执行的程序,且可在各种计算环境下运行.当今的C++编程功能让您能够生成功能强大的复杂应用程序,适用于商业.商务和开源开发.

《C++入门经典(第6版)》导读

前言 C++入门经典(第6版) 祝贺您!当您阅读到这里时,离学习最重要的编程语言之一-- C++又近了20秒. 如果您再花23小时59分40秒,就将掌握C++编程语言的基本知识.只需24个课程(每个课程不超过1小时),就将学会重要的C++功能,如管理I/O.创建循环和数组.使用模板进行面向对象编程以及创建C++程序. 我们将这些主题组织成了结构完美.易于理解的课程.在每章中,都将通过项目.输出和代码分析,演示相关的主题.另外,还清楚地标出了语法示例,以方便参考. 每章末尾还列出了常见问题及其答案

《C++入门经典(第5版•修订版)》导读

前言 C++入门经典(第5版•修订版)祝贺您!当您阅读到这里时,离学习最重要的编程语言之一--C++又近了20秒. 如果您再花23小时59分40秒,就将掌握C++编程语言的基本知识.只需24个课程(每个课程不超过1小时),就将学会C++基本知识,如管理I/O.创建循环和数组.使用模板进行面向对象编程以及创建C++程序. 我们将所有这些主题组织成了结构完美.易于理解的课程.在每章中,都将通过项目.输出和代码分析,演示相关的主题.另外,还清楚地标出了语法示例,以方便参考.每章末尾还列出了常见问题及其

《C++游戏编程入门(第4版)》——2.12 Guess My Number游戏简介

2.12 Guess My Number游戏简介 C++游戏编程入门(第4版)本章最后一个项目Guess My Number是一款经典的猜数游戏.如果有谁在童年没有玩过这个游戏,这里给出它的规则:计算机在1-100之间选择一个随机数,然后玩家尝试以最少的次数来猜中这个数.玩家每次输入猜测的数字,计算机告诉玩家猜测过高.过低或正好猜对.一旦玩家猜中,游戏结束.程序运行示例如图2.14所示.从Cengage Learning网站(www.cengageptr.com/downloads)上可以下载到

《C++游戏编程入门(第4版)》——1.8 Lost Fortune简介

1.8 Lost Fortune简介 C++游戏编程入门(第4版) 本章最后一个项目Lost Fortune是一个拟人化的探险游戏.在游戏中,玩家输入一些信息,计算机把这些信息扩展成一个探险故事.程序的运行示例如图1.9所示. 图1.9 故事由玩家提供的细节构成 这里不一次展示全部代码,而是每次给出一部分.从Cengage Learning网站(www.cengageptr.com/ downloads)上可以下载到该程序的代码.程序位于Chapter 1文件夹中,文件名为lost_fortun

《C++游戏编程入门(第4版)》——1.9 本章小结

1.9 本章小结 C++游戏编程入门(第4版) 本章介绍了以下概念: C++是编写一流游戏的主要编程语言. C++程序由一系列的C++语句组成. C++程序的基本生命周期包括构思.设计.源代码.目标文件和可执行文件. 编程错误包括3类:编译错误.链接错误和运行时错误. 函数是一组能完成某些任务并返回一个值的一组程序语句. 每个程序都必须包含main()函数,它是程序的运行起始点. include指令告诉预处理器在当前文件中包含另一个文件. 标准库是一些文件的集合.程序文件可以包含这些文件来实现像

《C++游戏编程入门(第4版)》——2.13 本章小结

2.13 本章小结 C++游戏编程入门(第4版)本章介绍了以下概念: 表达式的真与假可以用于分支执行(或跳过)部分代码.可以使用关键字true或false表示真或假.任意值或表达式可以求值为真或假.任意非零值可以解释成true,而0解释成false.创建布尔表达式的一般方式是使用关系运算符进行值比较.if语句对表达式进行验证,只有当表达式为true时才执行代码.if语句的else子句指定的代码只有在if语句中表达式验证为false时才执行.switch语句验证能当作int型的值,并执行标记有相应

《Android游戏编程入门经典》——4.6节问与答

4.6 问与答Android游戏编程入门经典问:开发出售的应用程序或游戏时,可以使用模拟器,还是应该在实际Android设备上测试代码?请讨论赞成或反对的原因. 答:答案不唯一. 问:市场上有运行各种Android操作系统的众多设备,为了获得兼容性,需要采用哪种方法? 答:答案不唯一.

《iOS 8应用开发入门经典(第6版)》——第1章,第1.4节开发技术概述

1.4 开发技术概述 iOS 8应用开发入门经典(第6版) 在接下来的几章中,将简要地介绍用来创建iOS应用程序的技术.我们的目标是让您快速了解这些工具和技术,然后开始开发.这意味着几章后您才会编写第一个应用程序,但当您开始编码时,将具备成功创建各种应用程序所需的技能和知识. 1.4.1 Apple开发工具 在本章中,您下载并使用了应用程序Xcode,它自带了iOS模拟器,您在阅读本书的过程中主要使用的就是它.这两个应用程序很重要,本书将花两章的篇幅(第2章和第5章)介绍它们的功能和用法. 需要