C++17 入门


C++编程语言具有”可操纵底层硬件、程序效率高和 面向对象的优势
 
尽管企业界已经使用最新的C++11、14、17标准,国内高校仍然沿用的是C++98标准,已经和业界普遍使用的现代C++语法标准有很大的脱节
网上课程甚至还有VC6 、C++ Builder、VS2008等环境
针对没有任何编程基础的学生,直接讲解最新的C++17标准,避免传统的”从C到C++“的教学模式和国内高校采用的过时的C++98标准语法。
 
区别有传统的C++98的叫做是”现代C++“

程序

程序=一系列对数据加工的指令
 
指令:分为:算术比较分支
算术:加减乘除,这些通常被称为算术操作
比较:比较两个数字大小,或者他们是否相等。这些通常被称为逻辑操作
分支:跳转到程序中的零一条指令,并从那里继续。这些通常被称为控制语句
 
 

计算机组成

 
输入、处理、存储、输出
CPU:计算机的大脑,负责计算、处理数据、控制其他设备等
  • 算术/逻辑单元(ALU)执行算术和比较操作
  • 控制单元确定下一个要执行的指令
  • 寄存器形成一个高速存储区以保存临时结果

算法

算法是完成某个任务或解决某个问题的一系列步骤(指令)
 
程序和编程:
程序就是算法在计算机中的表示和实现
编程就是如何利用计算机的指令来表示算法,即将算法转换成计算机可以执行的程序

二进制

 
比特、字节、
 

编程语言

表示指令和数据的规则。如同人类语言:英语、汉语都有一套语法规则。
 
  • 机器语言
    • 机器语言是用0和1 表示指令和数据,因为计算机只能识别0和1。这种二进制代码表示的计算机能直接识别和执行的一种机器指令集合,称为机器语言。
  • 汇编语言
    • 机器语言的字符化表示,每个汇编指令对应一个机器语言指令。增加了程序的可读性.
  • 高级语言
    • 用人类语言表示指令和数据
      编译器或解释器:将高级语言编程的程序转换为机器指令的程序。(大大提高了可读性)
      notion image

程序开发步骤

  • 理解问题:是一个什么样的问题?输入数据是什么?要产生什么结果?
  • 提出算法:解决这个问题的指令(步骤)序列
  • 编写程序:将算法转换成某种编程语言的程序
  • 测试:各种可能的不同输入,是否产生预期的结果
(示例)计算一组数值的平均值
  • 理解问题:问题定义、数据表示、输入输出
  • 提出算法:
    • 用两个数值分别表示总和和数值的个数
      将输出的这些数累加到总和上;
      最后除以数值的个数,得到平均值。
  • 伪代码表示算法:
    • 总和 sum= 0
      计数器为count=0
      重复:
      读一个值;
      如果读取值失败,结束这个”重复“过程
      否则:
      将读取的值value加到sum。
      计数器增加1,即
      通过”总和“和”计数器“相除得到平均值
      显示/打印平均值
       
  • 编写程序:将算法某种编语言如C/C++/python语言表示出来
  • 测试:输入不同的测试数据,看看结果是否正确?输入非法数据会怎么样?

    C++语言

    • C++语言是对C语言的扩展和增强:面向对象通用算法(泛型编程)
    • 1979年,贝尔实验室Bjarne Stroustrup(C++之父,现在Texas A&M)发明
    • 1998年被ISO委员会批准,2003年发布了修正版。2014年开始增加了很多新特性:C++11、C++14、C++17、C++20.

    C/C++优点

    • 直接操纵底层硬件如内存、速度快
    • 全能王:从系统软件到应用软件,无所不能 。
      • 硬件驱动和操作系统、桌面应用、web应用
    • 速度王:性能要求高的如操作系统、大型软件、游戏、平台、框架
      • 如人工智能的平台Tensorflow/caffe、图形库OpenGL、高性能库CUDA/OpenCL
    • 其他高级语言望尘莫及
    • 硬件驱动和操作系统
      • notion image
        notion image
        notion image
        notion image

    最简单的C++程序

    • C++是对C语言的扩展,C语言程序也是C++程序
      • main() { }
      • mian :函数名
      • () :参数列表
      • mian() :函数签名(函数名和参数列表构成了函数签名)
      • {} :函数体

    return关键字

    • 结束函数执行,返回(return)到调用者
      • int main() { return 0; }
      • 遇到return结束函数执行 ,返回到调用者
      •