c++primer 笔记(一)

来源:互联网 发布:天猫魔盒好用软件 编辑:程序博客网 时间:2024/05/17 13:40

声明:此文是博主拜读《C++ Primer (3E)》一书的笔记,一切版权属于原作者。

链接:http://blog.csdn.net/ningxialieri/article/details/8841868

 

    记得刚上大学,我们开的第一门计算机语言课就是C++,当时真是很痛苦,很苦逼啊。初次接触计算机语言,感觉亚历山大啊。

     最近公司要培训c++课,提供了C++ Primer(3E)的电子档(记得自己以前买过这本书,现在不知道哪里去了),我刚拜读了第一篇第一章第一节,就被这段文字吸引了,突然感觉计算机不那么。。了。

      再次记录下这段文字,作为学习笔记,以鼓励自己。

 

 

        程序常常是针对某些要解决的问题和任务而编写的。我们来看一个例子,某个书店将每本售出图书的书名和出版社,输入到一个文件中,这些信息以书售出的时间顺序输入,每两周店主将手工计算每本书的销售量,以及每个出版社的销售量。报表以出版社名称的字母顺序排列,以使下订单。现在,我们希望写一个程序来完成这项工作。
        解决大问题的一种方法,是把它分解成许多小问题,理想情况下,这些小问题可以很容易地被解决。然后,再把它们合在一起,就可以解决大问题了。如果新分割的小问题解决起来还是太大,就把它分割得再小一些,重复整个过程,直到能够解决每个小问题。这个策略就是分而治之(divide and conquer) 和逐步求精(stepwise refinement)。 书店问题可以分解成四个子问题或任务:
        1 读销售文件
         2 根据书名和出版社计算销售量
         3 以出版社名称对书名进行排序
        4 输出结果
       我们知道怎样解决第1, 2 和4 个子问题,因此它们不需要进一步分解,但是第3 个子问题解决起来还是有些大。所以,对这个子问题重复我们的做法继续分解:
        3a 按出版社排序
        3b 对每个出版社的书按书名排序
        3c 在每个出版社的组中比较相邻的书名如果两者匹配增加第一个的数量删除第二个
        3a ,3b, 和3c 所代表的问题现在都已经能够解决了,由于我们能够解决这些子问题。因此,也就能够有效地解决原始的大问题了,而且我们也知道任务的原始顺序是不正确的,正确的动作序列应该是
        l 读销售文件
        2 对文件排序——先按出版社然后在出版社内部按书名排序
        3 压缩重复的书名
        4 将结果写入文件
        这个动作序列就是算法algorithm, 下一步我们把算法转换成一种特定的程序设计语言————在这里是C++语言。

 

 

用哑函数实现上面所说过程:

#include <iostream>
using namespace std;

void readIn() { cout << "readIn()\n"; }
void sort() { cout << "sort()\n"; }
void compact() { cout << "compact()\n"; }
void print() { cout << "print()\n"; }

int main()
{
        readIn();
        sort();
        compact();
        print();
        return 0;
}

        上面这种渐进式生成程序的方法,可以避免在程序设计过程中出现各种问题,试图一下子就能写出一个完全成功的程序几乎是不可能的。

 

        iostream是输入/输出流库标准文件(注意它没有后缀),它包含cout 的信息,这对我们的程序是必需的,#include 是预处理器指示符(preprocessor directive), 它把iostream 的内容读入我们的文本文件中。在C++标准库中定义的名字,如cout, 不能在程序中直接使用,除非在预处理器指示符 #include <iostream>后面加上语句using namespace std;       这条语句被称作using 指示符(using directive)。 C++标准库中的名字都是在一个称作std 的名字空间中声明的,这些名字在我们的程序文本文件中是不可见的,除非我们显式地使它们可见,using 指示符告诉编译器要使用在名字空间std 中声明的名字。

 

 

变量的定义:下面以一个例子来看变量的定义,在这里首先提出的是变量与内存区域相关联。

下面是一组C++语句,
        int book_count = 0;
        book_count = books_on_shelf + books_on_order;
        cout << "The value of book_count: " << book_count;
        第一条语句是一个声明(declaration) 语句,book_count 被称为标识符(identifier) 或符号变量(symbolic variable),简称,变量或者对象(object)。 它定义了计算机内存的一块区域,并且与名字book_count 相关联,被用来存储整数值。0 是一个文字常量(literal constant),book_count 被初始化为0。

 

 

 

        标准C++中,如果main()函数没有显式地提供返回语句,则它缺省返回0。

 

        C++定义了一组内置的基本数据类型,整数类型int ,浮点数类型float, 字符类型char, 以及只有false 和true 两个值的布尔类型boolean。 每种类型都与C++语言中
某一个关键字keyword 相关联,程序中的每个对象都与一个特定的类型相关联。

 

        C++标准库还提供了一组扩展的基本数据类型,其中包括字符串string, 复数complex number, 向量vector 和列表list。 例如
        // 为了使用string 对象下面的头文件是必需的
        #include <string>
        string current_chapter = "Getting Started";
        // 为了使用vector 对象下面的头文件是必需的
        #include <vector>
        vector<string> chapter_titles( 20);
       current_chapter 是一个字符串对象,被初始化为字符串文字“Getting Started” 。chapter_title是一个向量,包含有20 个字符串类型的元素,以下这种特殊语法:
        vector <string>
        指示编译器创建一个能够存放字符串元素的向量类型,要定义一个能够存放20 个整数的向量对象,我们可以这样写:
        vector<int> ivec(20);

 

 

 

 

原创粉丝点击