C++ Primer 第一篇 C++概述

本章介绍C++语言的基本元素;包括内置数据类型、对象的定义、表达式、语句、函数的定义和使用。本章将给出一个最小的合法C++程序,主要用它来讨论程序的编译过程、预处理,并将首次介绍C++对输入/输出的支持。我们还将给出一些简单但完整的C++程序。

1.1 问题的解决

程序常常是针对某些要解决的问题和任务而编写的。我们来看一个例子,某个书店将每本售出图书的书名和出版社,输入到一个文件中,这些信息以书售出的时间顺序输入,每两周店主将手工计算每本书的销售量,以及每个出版社的销售量。报表以出版社名称的字母顺序排列,以使下订单。现在,我们希望写一个程序来完成这项工作。

解决大问题的一张方法,是把它分解成许多小问题。理想情况下,这些小问题可以很容易地被解决。然后,再把它们合在一起,就可以解决大问题了。如果新分割的小问题解决起来还是太大,就把它分隔得再小一些,重复整个过程,直到能够解决每个小问题。这个策略就是分而治之(divide and conquer)和逐步求精(stepwise refinement)。书店问题可以分解成四个子问题(或任务):

       1. 读销售文件;

       2. 根据书名和出版社计算销售量;

       3. 以出版社名称对书名进行排序;

       4. 输出结果。

我们知道怎样解决第1、2和4个子问题,因此它们不需要进一步分解。但是,第3个子问题解决起来还是有些大,所以对这个子问题重复我们的做法,继续分解:

        3a. 按出版社排序;

        3b. 对每个出版社的书,按书名排序;

        3c. 在每个出版社的组中,比较相邻的书名,如果两者匹配,增加第一个的数量,删除第二个。

3a、3b、3c所代表的问题,现在都已经能够解决了。由于我们能够解决这些子问题,因此也就能够有效地解决原始的大问题了。而且,我们也知道任务的原始顺序是不正确的,正确的动作序列应该是:

        1. 读销售文件;

        2. 对文件排序——先按出版社,然后再出版社内部按书名排序;

        3. 压缩重复的人名;

        4. 将结果写入文件。

这个动作序列就是算法(algorithm)。下一步我们把算法转换成一种特定的程序设计语言——在这里是C++语言。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值