大学计算机-计算思维导论-课件第3章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
16位计算机
8b 8b 16b 16b 16b 16b 32b 32b -
Leabharlann Baidu32位计算机
8b 8b 16b 16b 32b 32b 32b 32b -
64位计算机
8b 8b 16b 16b 32b 32b 64b 64b 64b 64b
2)规范的存储方式
宽 度
(比 特)
32
数据类型
机内表示(二进制位数) 阶码 尾数 符号
3. 别名——引用(reference)
在C++等语言中引入了别名机制,即可以为 常量或变量起一个别名,分别称为右值引用 和左值引用。
4. 含有操作符的表达式
含有操作符的表达式是操作符与表达式的合 法组合,即这类表达式的值是通过一定的操 作得到的,如number1 + 3、number + munber2等。这个定义是递归的,即组合可 以是多层次的,如number = number + munber2等。这时,一个重要的问题是当表 达式中有两个及其以上的操作符时,哪个操 作符具有操作的优先权。
3.1.1 数据类型 3.1.2 标识符及其声明 3.1.3 表达式 3.1.4 操作符与表达式求值规则 3.1.5 语句及其流程控制 3.1.6 组织过程 3.1.7库函数与头文件 3.1.8 派生数据类型
3.1.1 数据类型
1. 数据类型及其基本类型
(1)整数类型:取值为整数的类型。典型的符号是 int。
”I am a student.”:由双撇知道它是一个字符串字面量(string literal)。
2. 数据实体
数据实体(object)也称数据对象,是拥有一 块独立存储区域的数据,要使用这种表达式 的值,需要访问其所在的内存空间。一般说 来,C语言允许用如下几种方式访问数据实体。
1)用名字访问数据实体——变量
0 ~ 4 294 967 295
0 ~ 264-1(18 446 744 073 709 551 615)
4)规范的书写格式 5)规范的可施加操作集合 6)规范所容纳的值的数目
3.1.2 标识符及其声明
1. 标识符规则 在程序中需要对数据等实体进行命名,这些名字就称为标识符
(Identifier))。不同的程序设计语言有不同的标识符规则。C语 言要求标识符遵守下列规则。 (1)在C99之前,要求标识符只能由大小写字母、数字和下划线 组成的序列,但不能以数字开头。例如,下面是合法的C标识符: a A Ab _Ax _aX A_x abcd operand1 results 下列不是合法的C标识符: 5_A(数字打头) A-3(含非法字符) 但是,C99允许标识符由通用字符名(universal-character-name) 以及其他编译器所允许的字符组成。 (2)C语言区别同一字母的大小写,如abc与abC被看作不同的标 识符。 (3)标识符不能使用对于系统有特殊意义的名字。这些对系统有 特殊意义的名字称为关键字。表3.3为C语言关键字一栏表,其中 粗体的也作为ANSI C99的关键字。
const double PI = 3.1415926; PI = 1.23; // 错误,不可赋值
2)指针(pointer)访问数据实体
(1)指针的概念。
程序中使用的任何一个数据实体都存储在内存的特定 位置上。这个位置用地址表示。指针变量简称指针, 是存储数据实体地址的变量,它提供了使用内存地址 访问数据实体的一种形式。
3.1.4 操作符与表达式求值规则
1. C语言的操作符
(1)不同的操作符需要的操作数不同。按照操作数 的数量,操作符可以分为
·一元(单目)操作符,即只有一个操作数,例如+(正)、 -(负)等。
·二元(双目)操作符,即具有两个操作数,例如+(加)、 -(减)、*(乘)、/(除)等。
·三元(三目)操作符以后介绍。
int i;
// 定义一个int类型变量i
float f ;
// 定义一个float类型变量f
double d;
// 定义一个double类型变量d
char c;
// 定义一个char类型变量c
(2)变量的赋值操作。
向变量送一个值,称为赋值,使用赋值操作 符(=)进行。赋值是改变变量值的操作。例 如
建立模型,就是对问题进行分析、抽象,忽略对求解没有影响 或影响甚微的枝节,将其纳入可以求解框架之中。表现就是用 一种机器可以直接或间接理解、执行的语言进行描述。经过长 期摸索,人们已经找到了这两个方面的结合点,总结出两种有 效的程序设计方法:面向过程的程序设计(Procedure Oriented Programming,POP)和面向对象的程序设计(Object Oriented Programming,OOP)。
3L:由其后缀L,知道它是一个long int类型整数常量。
3.1415f:由其后缀f,知道它是一个float类型浮点常量 (floating)。
3.1415:没有后缀f,知道它是一个double类型浮点常量。
’5’和’a’:由单撇知道它们是两个char类型字符常量 (charactor)。
3)不同的可能值集合
不同长度整数的最小取值范围
数据长 度
(比特
)
取值范围
signed (有符号)
unsigned (无符号)
8 -127 ~ 127
0 ~ 255
16 -32 767 ~ 32 767
0 ~ 65 535
32 -2 147 483 647 ~2 147 483 647
64
-9 223 372 036 854 775 807 ~9 223 372 036 854 775 807
除此之外,人们还不断总结程序开发中的经验和教训,形成了 一些行之有效的理论和方法。这些模型、理论和方法折浸透了 计算机问题求解的基本思维模式。
3.1 面向过程的程序开发 3.2 面向对象程序开发 3.3 程序错误和异常 3.4 软件工程
3.1 面向过程的程序开发
面向过程的模型把问题求解看作对于数据施加一系列操 作的过程。因此,面向过程的程序描述的核心内容是: 数据与操作过程。
float
8
23
1
64
double
11
52
1
79 long double 15
63
1
取值范围(绝对值)
0,1.175 49 ×10-38 ~3.40 ×1038
0,2.225 ×10-308 ~ 1.797 ×10308
0,1.2 ×10-4932~ 1.2 ×104932
十进制 精度
6位
15位
19位
什么,是不可预知的。这样不慎使用了这个变量,就
会得到不可预知的结果。在某些情况下,还可能因涉 及敏感数据而使系统运行出现问题。
(4)变量的“固化”。
用名字访问一个存储空间,有一个特例:当 定义时用const修饰后,就成为一个符号常量, 也称常变量或常量。常量只可读、不可写— —不可进行赋值操作。例如
int * pi;
// 定义一个指向int类型的指针
double * pd; // 定义一个指向duble类型的指针
char * pc; // 定义一个指向字符类型的指针
(3)指针的递引用。
定义了一个指针后,就可以用其间接访问其 所指向变量。在指针名前加一个*,就表示对 指针进行间接操作,称为指针递引用。例如 用*pi就可以访问指针pi所指向的存储空间, 即*pi与i等价。
// 定义一个int类型变量i,并为其赋以初值3 // 定义一个float类型变量f,并为其赋以初值1.234 // 定义一个double类型变量d,并为其赋以初值1.23456 // 定义一个char类型变量c,并为其赋以初值’a’
在C语言程序中,变量的初始化不是必须的。若声明 一个变量后,如果没有给它一个值,则它的值到底是
字面量(常量) 数据实体(变量) 带有操作符的表达式。
1. 字面量
字面量(literal)是表达式值的直接表示,使用这些值不需要访 问内存,因为它们没有独立的存储空间。字面量也属于特定类 型,其类型也可以由书写形式直接标明或推断出。例如:
2147483645:由其值可知,在32b系统中,是一个int类型的整 数常量(integer)。
指针变量也有类型。指针的类型就是它所指向的数据 实体的数据类型。或者说,一个指针只能指向一种特 定的类型。所以说,指针有两个基本属性:
·所指向的数据实体的类型——称为指针的基类型。 ·所指向的数据实体的地址——指针的值。
(2)指针的声明与初始化。
因此,指针的声明就要标明其所指向的数据 类型,并在数据类型与指针变量名之间加一 个*,以表明它是指针。例如
(4)C99对于标识符的长度没有限制,但要 求编译器至少记住前63个字符(C89为31), 要求链接器能至少处理前31字符且区分字母 大小写(C89为6且不区分字母大小写)。
2. 声明 声明的第一个用途就是定义标识符。例如 int i1,i2;
3.1.3 表达式
表达式是程序中关于数据值的表示。在C语言 中,表达式有3种形式:
1 数值数
据
负号
1 数值数据
* 乘 2 数值数据
/ 除 2 数值数据
% 求余
2 整型
+ 加 2 数值数据
减 2 数值数据
3)正负号表达式
在C语言中,一元正(+)和一元负号(-)都 是操作符,这一点与普通数学中的概念有所 不同。
4)判等操作符和关系操作符
C语言提供有两种判等操作符(equality operators): == (相等)、 != (不等), 4种关系操作符(relational operators):> (大于)、>=(大于等于)、<(小于)、 <=(小于等于)。
(2)按照操作功能,操作符可以分为算术操作符 [如·+(正)、-(负)、+(加)、-(减)、* (乘)、/(除)等]、赋值操作符(=)、关系操作 符(>=、>、 == 、 != 、<、<=)、逻辑操作符等等,
2. 五种最常用的操作符及其表达式
1)赋值操作符与赋值表达式
在计算机程序设计语言中,表达式与值之间 是一种绑定。赋值操作是改变值与表达式的 绑定的操作。
int i,j;
// 定义i
i = 8;
// 给i 赋值8
j = 5;
// 给j赋值5
i = i + 3;
// 给i 赋予i的原值加3
(3)变量的初始化。
C语言允许在声明一个变量的同时,可以给其一个初 始值,称为变量的初始化。例如
int i = 3; float f = 1.234; double d = 1.23456; char c = ‘a’;
第3章 问题求解工程化
程序(program)是关于问题求解(problem solving)的描述,也 是关于问题求解模型的(直接或间接)可执行描述。从问题给 定的初始条件或状态出发,经过分析,找到求解模型,并用可 以执行的形式描述出来。就是程序开发。所以,程序开发具有3 个要素:模型、表现和方法。
代码3.1 交换两个变量的值的代码段。
// 变量a、b、temp是三个相同类型的变量,且变量a、b已经有确定的值
temp = a;
// 语句1
a = b;
// 语句2
b = temp;
2)算术操作符与算术表达式
C语言提供的用于支持算术运算的7个操作符
符号 意义 操作数个数 操作数类型
+ 正号
2)用地址访问数据实体——指针
1)用名字访问数据实体——变量
(1)变量及其声明。
可以用名字访问的数据实体通常称为变量 (variable),或者说变量是被命名的数据实体。一 个变量在使用之前需要对其声明(定义),以向编译 器注册一个名字及其属性,供操作时进行合法性检查。 变量有许多属性,数据类型是其中最重要的属性,其 他以后逐步介绍。变量被声明后,编译器就会按照指 出的属性,为其分配一个适合的存储空间。下面是几 个变量的声明:
(2)浮点类型:取值可以带小数的类型,典型符号 是float和double.。
(3)字符类型:取值为字符,典型符号为char. (4)字符串类型:取值为多个字符。C语言中没有
类型符号。 (5)void类型:没有值的数据类型。
2. 数据类型的规范化特征 1)规范的存储空间
类型 char unsigned char short int unsigned short int int unsigned int long int unsigned long int long long int unsigned long long int