疾风计划:C++程序设计(郑莉)丨第一章:绪论

一、计算机系统基本概念

  • 计算机系统由硬件、软件组成;
  • 指令系统是硬件和软件的界面。

1.1 计算机硬件

在这里插入图片描述

1.2 计算程序语言

  • 计算机解决问题是程序控制的;
  • 程序就是操作步骤;
  • 程序要使用语言来表达。

1.3 机器语言

  • 计算机能识别的是机器语言;
  • 机器语言指令是由0和1编码的;
  • 例如:加法指令可能是“0001”。

1.4 计算机指令系统

  • 机器硬件能够识别的语言(机器语言)的集合;
  • 它是软件和硬件的主要界面。

1.5 计算软件

  • 是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件;
  • 软件包括程序和文档。

1.6 计算机程序

  • 指令的序列;
  • 描述解决问题的方法和数据。

二、计算机语言和程序设计方法

  • 计算机语言
    1.程序员与计算机沟通的语言;
    2.描述解决问题的方法和相关数据。
  • 计算机语言的级别
    1.二进制代码构成的机器语言;
    2.使用助记符的汇编语言;
    3.使用类似英语单词和语句的高级语言;
    4.C++是面向对象的高级语言
  • C++支持的程序设计方法
    1.面向过程的程序设计方法;
    2.面向对象的程序设计方法;
    3.泛型程序设计方法

2.1 最初的计算机语言——机器语言

  • 由二进制代码构成
  • 计算机硬件可以识别
  • 可以表示简单的操作
  • 例如:加法、减法、数据移动等等

2.2 汇编语言

  • 将机器指令映射为助记符,如ADDSUBmov等;
  • 抽象层次低,需要考虑机器细节。

2.3 高级语言

  • 关键字、语句容易理解;
  • 有含义的数据命名和算式;
  • 抽象层次较高,例如,算式:a+b+c/d
  • 屏蔽了机器的细节,例如,这样显示计算结果:cout<<a+b+c/d

2.4 C++语言

  • 是高级语言
  • 支持面向对象的观点和方法:
    1.将客观事物看做对象
    2.对象间通过消息传送进行沟通
    3.支持分类和抽象

2.5 面向过程的程序设计方法:

  • 机器语言、汇编语言、高级语言都支持;
  • 最初的目的:用于数学计算;
  • 主要工作:设计求解问题的过程。
  • 大型复杂的软件难以用面向过程的方式编写

2.6 面向对象的程序设计方法:

  • 由面向对象的高级语言支持;
  • 一个系统由对象构成;
  • 对象之间通过消息进行通信。

三、面向对象的基本概念

3.1 对象

  • 一般意义上的对象:现实世界中实际存在的事物。
  • 面向对象方法中的对象:程序中用来描述客观事物的实体。

3.2 抽象与分类

  • 分类依据的原则——抽象;
  • 抽象出同一类对象的共同属性和行为形成类;
  • 类与对象是类型与实例的关系。

3.3 封装

  • 隐蔽对象的内部细节;
  • 对外形成一个边界;
  • 只保留有限的对外接口;
  • 使用方便、安全性好。

3.4 继承

  • 意义在于软件复用;
  • 改造、扩展已有类形成新的类。

3.5 多态

  • 同样的消息作用在不同对象上,可以引起不同的行为。

四、C++程序的开发过程

4.1 程序

  • 源程序:
    用源语言写的,有待翻译的程序;
  • 目标程序:
    源程序通过翻译程序加工以后生成的机器语言程序;
  • 可执行程序:
    连接目标程序以及库中的某些文件,生成的一个可执行文件;
    例如:Windows系统平台上的.EXE文件。

4.2 三种不同类型的翻译程序

  1. 汇编程序:
    将汇编语言源程序翻译成目标程序;
  2. 编译程序:
    将高级语言源程序翻译成目标程序;
  3. 解释程序:
    将高级语言源程序翻译成机器指令,边翻译边执行。

4.3 C++程序的开发过程

  • 算法与数据结构设计;
  • 源程序编辑;
  • 编译;
  • 连接;
  • 测试;
  • 调试。

五、计算机中的信息与存储单位

5.1 计算机的基本功能

  • 算术运算;
  • 逻辑运算。

5.2 计算机中信息:

  • 控制信息——指挥计算机操作;
  • 数据信息——计算机程序加工的对象。

5.3 信息的存储单位

  • 位(bit,b):数据的最小单位,表示一位二进制信息;
  • 字节(byte,B):八位二进制数字组成(1byte=8bit);
  • 千字节1KB=1024B;
  • 兆字节1MB=1024K;
  • 吉字节1GB=1024M。

5.4 计算机的数字系统

  • 二进制系统;
  • 基本符号:01

5.5 程序中常用的数制

进制基数进位原则基本符号
二进制2逢2进10,1
八进制8逢8进10,1,2,3,4,5,6,7
十进制10逢10进10,1,2,3,4,5,6,7,8,9
十六进制16逢16进11,2,3,4,5,6,7,8,9,A,B,C,D,E,F

5.6 R进制转换为十进制

  • 各位数字与其权重相乘,积相加:
    ( 11111111.11 ) 2 = 1 × 2 7 + 1 × 2 6 + 1 × 2 5 + 1 × 2 4 + 1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0 + 1 × 2 − 1 + 1 × 2 − 2 = ( 255.75 ) 10 (11111111.11)_2 =1×2^7+1×2^6+1×2^5+1×2^4+1×2^3+1×2^2+1×2^1+1×2^0+1×2^{-1}+1×2^{-2} =(255.75)_{10} (11111111.11)2=1×27+1×26+1×25+1×24+1×23+1×22+1×21+1×20+1×21+1×22=(255.75)10

5.7 十进制转换为R进制

  • “除以R取余”法。
    -在这里插入图片描述
    所以 ( 68 ) 10 = ( 1000100 ) 2 (68)_{10} = (1000100)_2 (68)10=(1000100)2

5.8 十进制小数转 R 进制小数

  • “乘以R取整”法。
    在这里插入图片描述
    所以 ( 0.3125 ) 10 = ( 0.0101 ) 2 (0.3125)_{10} = (0.0101)_2 (0.3125)10=(0.0101)2

5.9 八、十六进制的相互转换

  • 1位八进制数相当于3位二进制数;

  • 1位十六进制数相当于4位二进制数,例如:

( 1011010.10 ) 2 = ( 001011010.100 ) 2 = ( 132.4 ) 8 (1011010.10)_2=(001011010.100)_2=(132.4)_8 (1011010.10)2=(001011010.100)2=(132.4)8
( 1011010.10 ) 2 = ( 01011010.1000 ) 2 = ( 5 A . 8 ) 16 (1011010.10)_2=(01011010.1000)_2=(5A.8)_{16} (1011010.10)2=(01011010.1000)2=(5A.8)16
( F 7 ) 16 = ( 11110111 ) 2 = ( 11110111 ) 2 (F7)_{16}=(11110111)_2=(11110111)_2 (F7)16(11110111)2(11110111)2

六、数据在计算机中的编码表示

6.1 二进制数的编码表示

  • 需要解决的问题:负数如何表示?
  • 最容易想到的方案:
    0:表示“+”号;
    1:表示“-”号。

6.1.1 原码

"符号──绝对值"表示的编码
例如:
在这里插入图片描述
- 原码的缺点:
1.零的表示不惟一
[+0]原=000…0
[-0]原=100…0
2.进行四则运算时,符号位须单独处理,运算规则复杂。

6.1.2 补码

  • 符号位可作为数值参加运算;
  • 减法运算可转换为加法运算;
  • 0的表示唯一。

6.1.3 补码的原理

模数:

  • n位二进制整数的模数为2n;
  • n位二进制小数的模数为2。

补数:

  • 一个数减去另一个数(加一个负数),等于第一个数加第二个数的补数,例(时钟指针):8+(-2)=8+10(mod12)=6
  • 一个二进制负数可用其模数与真值做加法(模减去该数的绝对值)求得其补码,例(时钟指针):-2+12=10

6.1.4 补码的计算

  • 借助于“反码”作为中间码;
  • 负数的反码与原码有如下关系:
    • 1.符号位不变(仍用1表示),其余各位取反(0变1,1变0),例如:
      • X=-1100110 [X]原=11100110 [X]反=10011001
    • 2.正数的反码与原码表示相同,正数的补码与原码相同;
    • 3.反码只是求补码时的中间码;
    • 4.负数的补码由该数反码的末位加1求得。
    • 5.对补码再求补即得到原码。

6.1.5 补码的优点:

  1. 0的表示唯一;
  2. 符号位可作为数值参加运算;
  3. 补码运算的结果仍为补码。

6.2 实数的浮点表示

  • 计算机中通常采用浮点方式表示小数;
  • 实数N用浮点形式可表示为:N=M×2E
    E:2的幂,N:阶码;
    M:N的尾数。

6.3 字符在计算机中的表示

  • 字符在计算机中是通过编码表示的;
  • 例如:
    1.ASCII码是一种常用的西文字符编码:用7位二进制数表示一个字符,最多可以表示27=128个字符;
    2.《GB18030-2005信息技术中文编码字符集》是中国国家标准。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值