C/C++ 基本语法元素

I. 程序设计基本概念

1.程序

  • 一系列遵循一定规则并且能正确完成特定功能的代码或者指令序列
  • 通常包括数据结构和算法

2.程序设计

  • 按照任务需要,设计数据结构和算法,编写代码,并测试正确性,得到正确运行结果的过程

3.程序设计语言

  • 语法: 编写程序代码的规范, 具有特定的语法规则
  • 语义: 具有特定的语法意义
  • 语用: 具有特定的语法使用环境

4.算法

  • 问题的求解方法与步骤
  • 不允许存在二义性
  • 用流程图或者伪代码描述
  • 算法设计过程是逐步求精的

5.数据与数据结构

  • 数据: 程序操作的对象
  • 数据结构: 数据对象之间的相互关系及构造方法
  • 与算法关系密切

6.结构化程序设计

  • 数据结构
  • 程序流程控制
  • 函数与算法
  • 程序组织

7.面向对象程序设计

数据中心 转向 算法中心主义, 再转向对象主义

  • 对象:行为与属性的集合
  • 类与对象、对象构造、继承与派生

8.范型编程

  • 标准模版库: 迭代器、容器、抽象算法

II. 简单C/C++ 程序

1.C 程序


#include<stdio.h>    //预编译指令,包含标准头文件
// 新版可以写成 <cstdio>
int main()           //主函数的函数头, 全局唯一
{                    //函数体
    printf("hello world!\n");
    // printf 标准库函数,位于stdio.h 中, \n 换行
    return 0;
    // 返回值是传给操作系统,操作系统根据返回值判断程序是否正确执行
}

2.C++ 程序


#include<iostream>
using namespace std;    //标准命名空间

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

  • <<表示数据流动的方向, 数据从右向左流动
  • endl : endline
  • 命名空间 namespace, 使用来解决函数名太多而导致的重名, 可以用 namespace 去解析函数
  • 如果上述代码不写 using namespace std, 则要加上名解析操作符 ::, coutendl要写成std::cout ````std::endl```

3. C++,计算两个整数之和


#include<iostream>

using namespace std;

int main()

{
    int a, b, sum;
    cout << "a=";
    cin >> a;
    cout << "b=";
    cin >> b;
    sum = a + b;
    cout << a << " + " << b << " = " << sum << endl;
    return 0;
}

4.总结

  • 由一个或多个函数组成
  • 有唯一的主函数 main
  • 程序执行由主函数开始,其他函数由主函数调用或者间接调用
  • 程序执行流程与函数定义顺序无关
  • 每个函数包含函数头和函数体两个部分组成
  • C/C++ 包含大量库函数和算法,可以直接使用

III. 程序设计基本流程

1.流程

  • 编辑源代码 => 源文件(.cpp/.c)和头文件(.h)
  • 编译 => 目标文件(二进制代码)
  • 链接(目标文件 + 函数库文件) => 可执行文件
  • 测试

2.编辑与编译

  • 编辑: 编辑器 vim emacs
  • 编译: - c: gcc - cpp: g++
  • 执行:./a.out

IV. 基本语法元素

1.数据类型

  • 整数类型: - 使用int 定义整数类型的数据对象 int a;, 整数类型具有取值范围,仅能表示特定区间内整数值 - 整数符号:确定是否表示负数
    • signed:
    • unsigned: 无符号, 表示0+, unsigned int b; - 整数长短: 确定 整数取值范围大小
    • long: long int c;
    • short:short int c;
  • 浮点数类型: - double: 精度更高 - float: 有效只有6,7位, 精度不够高,不推荐

2.量和表达式

表达式:

  • 操作数与操作符序列, 表达运算过程
  • 操作数:文字,量,函数调用,括号
  • 操作符:运算逻辑
  • 表达式值:运算结果
  • 表达式求值: 计算表达式值的过程

变量:

  • 程序运行期间,存储的值可以改变的量

  • 格式: 变量类型 变量名[,变量名称];, 如 int a;double a, b

  • C/C++中,变量应该先声明,再使用

  • 变量名称具有唯一性,不允许重名

  • 变量基本特征(VANT) - 变量总是具有值(value) - 变量总是与内存中地址(address)相对应 - 变量总是具有名称(name) - 变量总是具有特定的类型(type)

整数类型文字

  • 十进制
  • 十六进制: - 逢十六进一, 无正负号 - 以0x0X开头的0-9, A/a~F/f序列
  • 八进制 - 逢八进一,无正负号 - 以0开头的0~7序列
  • 二进制

浮点数类型文字

  • 小数形式
  • 指数形式:科学记数法, 由尾数部分,字符E/e

字符串类型文字

  • 双引号引起的字符序列: "hello world!"
  • 转义序列: 用\来转义表达自身的序列 \n 换行 \t制表键 \\反斜杠字符本身 \" 双引号 etc

常量

  • 程序执行期间值不变的量
  • const 数据类型 常量名称 = 初始值 , 如 const int zero = 0
  • 用来解决程序中单独出现的数据

赋值与初始化

  • 赋值:变量名称 = 表达式
  • 变量初始化: 定义变量的时候设定初始值,定义的瞬间只能做一次初始化

操作数与操作符

  • 一元操作符: 单个操作数, 如负号
  • 二元操作符: 两个操作数, 如加减乘除
  • 三元操作符: 三个操作数, 如条件表达式
  • 操作符的优先级与结合性: 优先级确定计算顺序, 结合性确定计算方向

3.语句

简单语句

  • 表达式后跟分号

复合语句

  • 花括号括起来的语句序列
  • { a = 1; b = a + 1;}

空语句

  • 单独的一个分号
  • 目的: 满足程序特定语法规则要求, 作为未来添加程序代码的占位标记

4.基本输入输出

  • 输出: cout, 插入操作符 >>
  • 输入: cin, 输出操作符 <<

V. 程序设计风格

1.注释

  • 目的:增强程序可读性和可维护性
  • 格式: - /* this is comment */ - // this is a comment line
  • 同一种注释标记不能嵌套

2.命名规范

  • 字符集:ASCII字符集, 大小写英文字母,数字,部分特殊符号等
  • 标识符:以下划线、字母、开头, 由下划线,字母,数字组成,表示常量,变量,函数,类型等名称, 区分大小写 - 关键字:系统专用的具有特定意义的标识符 - 预定义标识符:编译命令与库函数名,具有特定意义 - 用户定义标识符: 用户根据需要定义,主要为了使程序容易维护

3.宏于常量

宏定义

  • #define 指令: 预处理命令, 如 #define PI 3.14
  • 后面无分号!!
  • 一旦定义,可以代替常量使用
  • 宏定义不是常量, 是文本, 程序编译时,是使用定义的宏中的文本替换量
  • 程序优先使用常量而不是宏

目的与意义

  • 增强程序可读性: 使用具有意义的名字命名
  • 增强程序的可维护性: 将值定义为符号常量, 则程序中只需要修改一次

4.赋值语句简写形式

  • x = x + a –> x += a
  • x = x - a –> x -= a
  • x = x * a –> x *= a
  • x = x / a –> x /= a, 除法用于整数则结果也为整数, 用于浮点数则结果也为浮点数

  • x = x % a –> x %= a, %: 两个整数进行整数除法, 结果为余数
  • x *= a + b –> x = x * (a + b)

5.代码排版

  • 左缩进递进层次
  • 一行不超过80个字符
  • 一个函数代码不超过60行
  • 复合语句书写格式要统一
  • 命名规范一致
  • 风格要保持统一

Share this on