[C++Primer] 第一章 开始 & 第一部分 C++ 基础

解决书店的简单问题。
我们的书店保存所有销售记录的档案,每条记录保存了某本书的一次销售的信息(一册或多册)。每条记录包含三个数据项:

ISBN数量价格
0-201-70353-X424.99

为了编写这个程序, 我们需要使用若干 C 的基本特性。而且,我们需要了解如何编译及运行程序。

显然它必须:

  • 定义变量
  • 进行输入和输出
  • 使用数据结构保存数据
  • 检测两条记录是否有相同的ISBN
  • 包含一个循环来处理销售档案中的每条记录

1.1 编写一个简单C++程序

  1. 一个函数的定义包含四部分:返回类型 (return type)、函数名 (function name)、 一个括号包围的形参列表(parameter list,允许为空)以及函数体( function body)。

1.1.1 编译、运行程序

g++ -Wall -o 1-1 1-1.cpp 

1.2 初识输入输出

标准输入输出对象:

  • 标准输入 cin
  • 标准输出 cout
  • 标准错误 cerr
  • 运行信息输出 clog
#include <iostream>
int main(){
    std::cout << "Enter two numbers:"<< std::endl;
    int v1 = 0, v2 = 0;
    std::cin >> v1 >> v2;
    std:: cout << "The sum of "<< v1 << " and "<<v2 <<" is "<<v1+v2<<std::endl;
    return 0;
}
  1. 前缀 std::指出名字 cout 和 endl 是定义在名为 std 的命名空间(namespace)中的。

1.3 注释简介

  1. 注释通常用于概述算法,确定变量用途,解释晦涩难懂的代码片段。注释对程序的行为或性能没有影响。
  2. 错误的注释比完全没有注释更严重。
// /*
//  * 注释被
//  * 单行注释
//  * 注释掉了
//  */
#include <iostream>
int main(){
    std::cout << "/*";
    std::cout << "*/";
    //std::cout << /* "*/" */;
    std::cout << /* "*/" /* "/*" */; 
    return 0;
}

1.4 控制流

1.4.1 while 语句

  1. 语句块就是用花括号包围的零条或多条语句的序列

1.4.2 for 语句

for 循环的总体执行流程:

  1. 创建变量 val,将其初始化为1。
  2. 检测 val 是否小于等于10。若检测成功,执行 for 循环体。若失败,退出循环,继续执行 for循环体之后的第一条语句。
  3. 将 val 的值增加1。
  4. 重复第2步中的条件检测,只要条件为真就继续执行剩余步骤。

1.4.3 读取数量不定的输入数据

#include <iostream>
int main(){
    int sum = 0, value = 0;
    // 读取数据直到遇到文件尾, 计算所有读入的值的和
    while(std::cin >> value)
        sum += value;
    // 等价于sum = sum + value 
    std::cout << "Sum is: " << sum << std::endl;
    return 0;
}

1.4.4 if 语句

#include <iostream>
int main(){
    int sum = 1, v1 = 0, v2=0;
    std::cin >> v1;
    while(std::cin>>v2){
        if(v2==v1)
            sum ++;
        else{
            std::cout << v1 <<" occurs " << sum << " times"<<std::endl;
            sum = 1;
            v1 = v2;
        }
    }
    // 等价于sum = sum + value 
    std::cout << v1 <<" occurs " << sum << " times"<<std::endl;
    return 0;
}

1.5 类简介

为了使用类, 我们需要了解三件事情:

  • 类名是什么?
  • 它是在哪里定义的?
  • 它支持什么操作?

1.5.1 Sales_item类

  1. 每个类实际上都定义了一个新的类型,其类型名就是类名。

1.5.2 初识成员函数

  1. 成员函数是定义为类的一部分函数,有时也被称为方法(Method)

1.6 书店程序

#include <iostream>
#include "Sales_item.h"
int main()
{
    Sales_item total;
    if(std::cin>>total){
        Sales_item trans;
        while(std::cin>>trans){
            if (total.isbn() == trans.isbn())
                total += trans;
            else{
                std::cout<< total <<std::endl;
                total = trans;
            }
        }
        std::cout<< total << std::endl;
    }
    else{
        std::cerr<< "No data?!"<<std::endl;
        return -1;
    }
    return 0;
}

第一部分 C++ 基础

任何常用的编程语言都具备一组公共的语法特征,不同语言仅在特征的细节上有所区别。要想学习并掌握一种编程语言,理解其语法特征的实现细节是第一步。最基本的特征包括:

  • 整型、字符型等内置类型
  • 变量,用来为对象命名
  • 表达式和语句,用于操纵上述数据类型的具体值
  • if 或 while 等控制结构,这些结构允许我们有选择地执行一些语句或者重复地执行一些语句
  • 函数,用于定义可供随时调用的计算单元

大多数编程语言通过两种方式来进一步补充其基本特征:

  1. 赋予程序员自定义数据类型的权利,从而实现对语言的扩展
  2. 将一些有用的功能封装成库函数提供给程序员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值