目录
一、计算机系统
计算机系统由硬件、软件组成;
指令系统是硬件和软件的界面。
二、计算机语言和程序设计方法
l计算机语言
n程序员与计算机沟通的语言;
n描述解决问题的方法和相关数据。
l计算机语言的级别
n二进制代码构成的机器语言;
n使用助记符的汇编语言;
n使用类似英语单词和语句的高级语言;
nC++是面向对象的高级语言
lC++支持的程序设计方法
n面向过程的程序设计方法;
n面向对象的程序设计方法;
n泛型程序设计方法。
三、C++程序的开发过程
l 算法设计
l 源程序编辑
l 编译
l 连接
l 运行调试
四、信息在计算机中的表示与存储
l计算机中的数据用二进制表示;
l逻辑数据、字符数据用二进制编码表示。
计算机硬件
计算程序语言
l计算机解决问题是程序控制的;
l程序就是操作步骤;
l程序要使用语言来表达。
机器语言
l计算机能识别的是机器语言;
l机器语言指令是由0和1编码的;
l例如:
加法指令可能是“0001”。
计算机指令系统
l机器硬件能够识别的语言(机器语言)的集合;
l它是软件和硬件的主要界面。
计算软件
l是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件;
l软件包括程序和文档。
计算机程序
l指令的序列;
l描述解决问题的方法和数据。
计算机语言和程序设计方法
最初的计算机语言——机器语言
l由二进制代码构成
l计算机硬件可以识别
l可以表示简单的操作
l例如:加法、减法、数据移动等等
汇编语言
l将机器指令映射为助记符
n如ADD、SUB、mov等;
l抽象层次低,需要考虑机器细节。
高级语言
l关键字、语句容易理解;
l有含义的数据命名和算式;
l抽象层次较高;
n例如,算式:a+b+c/d
l屏蔽了机器的细节;
例如,这样显示计算结果:cout<<a+b+c/d
C++语言
l是高级语言
l支持面向对象的观点和方法
n将客观事物看做对象
n对象间通过消息传送进行沟通
n支持分类和抽象
面向过程的程序设计方法:
l机器语言、汇编语言、高级语言都支持;
l最初的目的:用于数学计算;
l主要工作:设计求解问题的过程。
l大型复杂的软件难以用面向过程的方式编写
面向对象的程序设计方法:
l由面向对象的高级语言支持;
l一个系统由对象构成;
l对象之间通过消息进行通信。
面向对象的基本概念
对象
l一般意义上的对象:现实世界中实际存在的事物。
l面向对象方法中的对象:程序中用来描述客观事物的实体。
抽象与分类
l分类依据的原则——抽象;
l抽象出同一类对象的共同属性和行为形成类;
l类与对象是类型与实例的关系。
封装
l隐蔽对象的内部细节;
l对外形成一个边界;
l只保留有限的对外接口;
l使用方便、安全性好。
继承
l意义在于软件复用;
l改造、扩展已有类形成新的类。
多态
l同样的消息作用在不同对象上,可以引起不同的行为。
程序的开发过程
程序
l源程序:
n用源语言写的,有待翻译的程序;
l目标程序:
n源程序通过翻译程序加工以后生成的机器语言程序;
l可执行程序:
n连接目标程序以及库中的某些文件,生成的一个可执行文件;
n例如:Windows系统平台上的.EXE文件。
三种不同类型的翻译程序
l汇编程序:
n将汇编语言源程序翻译成目标程序;
l编译程序:
n将高级语言源程序翻译成目标程序;
l解释程序:
n将高级语言源程序翻译成机器指令,边翻译边执行。
C++程序的开发过程
l算法与数据结构设计;
l源程序编辑;
l编译;
l连接;
l测试;
l调试。
计算机中的信息与存储单位
计算机的基本功能
l算术运算;
l逻辑运算。
计算机中信息:
l控制信息——指挥计算机操作;
l数据信息——计算机程序加工的对象。
信息的存储单位
l位(bit,b):数据的最小单位,表示一位二进制信息;
l字节(byte,B):八位二进制数字组成(1byte=8bit);
l千字节1KB=1024B;
l兆字节1MB=1024K;
l吉字节1GB=1024M。
计算机的数字系统
l二进制系统;
l基本符号:0、1。
程序中常用的数制:
R 进制转换为十进制:
l各位数字与它的权相乘,其积相加,例如:
(11111111.11)2 =1×27+1×26+1×25+1×24+1×23+1×22+1×21+1×20+1×2-1+1×2-2 =(255.75)10
十进制整数转换为R 进制整数:
l“除以R取余”法。
所以 6810=10001002
十进制小数→ R 进制小数:
l“乘以R取整”法。
所以 0.312510 = 0.01012
二、八、十六进制的相互转换
l1位八进制数相当于3位二进制数;
l1位十六进制数相当于4位二进制数,例如:
(1011010.10)2=(001011010.100)2=(132.4)8
(1011010.10)2=(01011010.1000)2=(5A.8)16
(F7)16=(11110111)2=(11110111)2
数据在计算机中的编码表示
二进制数的编码表示
l需要解决的问题:负数如何表示?
l最容易想到的方案:
0:表示“+”号;
1:表示“-”号。
l原码
n"符号──绝对值"表示的编码
例如:
n原码的缺点:
u零的表示不惟一
[+0]原=000...0
[-0]原=100...0
u进行四则运算时,符号位须单独处理,运算规则复杂。
l补码
n符号位可作为数值参加运算;
n减法运算可转换为加法运算;
n0的表示唯一。
l补码的原理
n模数:
n位二进制整数的模数为2n;
n位二进制小数的模数为2。
n补数:
u一个数减去另一个数(加一个负数),等于第一个数加第二个数的补数,例(时钟指针):8+(-2)=8+10(mod12)=6;
u一个二进制负数可用其模数与真值做加法(模减去该数的绝对值)求得其补码,例(时钟指针):-2+12=10。
l补码的计算
n借助于“反码”作为中间码;
n负数的反码与原码有如下关系:
符号位不变(仍用1表示),其余各位取反(0变1,1变0),例如:
X=-1100110[X]原=11100110[X]反=10011001
n正数的反码与原码表示相同,正数的补码与原码相同;
n反码只是求补码时的中间码;
n负数的补码由该数反码的末位加1求得。
n对补码再求补即得到原码。
l补码的优点:
n0的表示唯一;
n符号位可作为数值参加运算;
n补码运算的结果仍为补码。
实数的浮点表示
l计算机中通常采用浮点方式表示小数;
l实数N用浮点形式可表示为:N=M×2E
E:2的幂,N:阶码;
M:N的尾数。
字符在计算机中的表示
l字符在计算机中是通过编码表示的;
l例如:
ASCII码是一种常用的西文字符编码:用7位二进制数表示一个字符,最多可以表示27=128个字符;
l《GB18030-2005信息技术中文编码字符集》是中国国家标准。