专业C5讲数据的表示课件教案资料

上传人:yulij****0329 文档编号:137659782 上传时间:2020-07-11 格式:PPT 页数:50 大小:749.50KB
返回 下载 相关 举报
专业C5讲数据的表示课件教案资料_第1页
第1页 / 共50页
专业C5讲数据的表示课件教案资料_第2页
第2页 / 共50页
专业C5讲数据的表示课件教案资料_第3页
第3页 / 共50页
专业C5讲数据的表示课件教案资料_第4页
第4页 / 共50页
专业C5讲数据的表示课件教案资料_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《专业C5讲数据的表示课件教案资料》由会员分享,可在线阅读,更多相关《专业C5讲数据的表示课件教案资料(50页珍藏版)》请在金锄头文库上搜索。

1、本章比较系统地介绍C+的语法要素,包括 常量与变量及其引用 函数 运算符 语句 I/O流格式控制 若干程序模块 本章的内容具有“资料”性质,是C+语言语法的“硬性”规定,是程序设计基础的基础,必须熟记。 完全理解本章的规定需要一个过程(至学期结束前); 建议经常地、反复地阅读本章,并自觉应用。,第五讲 数据的表示,学习方法,一个人走路,用不着把路上所有的石头搬掉再走。有时候要绕过去,等你走远了回头看,看到的只是走过的路,有些石头早已看不见了。 钱伟长,3.1 数据的表示,3.1.1 常量 3.1.2 变量 3.1.3 变量的引用 3.1.4 常量的引用,3.1.1 常量,字面常量 整型常量 1

2、0进制形式123、-123 16进制形式0 x7B、-0 x7B0 x开头 8进制形式0173、-01730开头 长整型数据123L、0 x7BL加后缀L或l 无符号整型123U、0 x7BU加后缀U或u 无符号长整型 123UL、0 x7BUL,3.1.1 常量,字面常量 浮点型常量 小数形式 123.45、1.0、-123.45 浮点形式(科学记数法) 1.2345E+2 表示 1.2345102 12345E-2 表示 1234510-2 可用小写字母e。E或e前的数字不能省略 默认double型,加后缀f表示float型。,字母E之前必须有数字且E之后指数必为整数。,3.1.1 常量,

3、符号常量 const 数据类型 常量名 = 初始化值; 常量不能作左值(不能对常量赋值) 常量只能作右值(可读取访问常量的值) 例如: const double PI = 3.1415926; const char LF = n; / 换行字符 const unsigned long MAX_NUMBER=10000; 使用符号常量的好处: 1.增加程序的可读性;2.便于调试程序。,3.1 数据的表示,3.1.1 常量 3.1.2 变量 3.1.3 变量的引用 3.1.4 常量的引用,3.1.2 变量,实际应用的需要 数据的本质 应用问题的表达、载体 算法的本质 控制数据的变化 问题的求解历程

4、 (初值中间结果解) 对计算机的要求 能存放(读/写)大量数据(Memory,内存) 数据(变量)的载体 能对数据进行基本运算(CPU,中央处理器) 数据(变量)加工的场所,3.1.2 变量,对计算机高级语言的要求 抽象性 屏蔽具体的内存操作细节,屏蔽CPU操作细节; 易用性 用变量名称(标识符)表示计算机内存单元的内容(数据) 用右值表达式表示从内存单元读取数据 用左值表达式表示写入数据到内存单元 用运算符表示对数据的操作 灵活性、安全性、内存利用效率 数据的生命期(创建、销毁) 可见性(读写访问权限),3.1.2 变量,变量其值在程序运行中可以被改变的量 它存放在计算机内存 它可以被读取(

5、作右值)、写入新值(作左值) 变量名成为其对应内存单元的抽象 各个变量之间的关系 实际问题中 关联密切 计算机程序中 相互独立 没有联动机制,由程序员精心控制,例如:计算圆面积,(数学题)计算公式 若 ,则 若 ,则,#include using namespace std; int main()/ 错误的程序 const double PI = 3.1415926; double r, s; s = PI * r * r; /r的值不可预知,不宜直接作右值 cout r endl; /因而s所获得的值亦无实际意义 r = 10; cout s endl; /s与r相互独立,不可能联动 r =

6、 20; cout s endl; /s无变化 return 0; ,#include using namespace std; int main()/ 正确的程序 5-1.cpp const double PI = 3.1415926; double r, s; r = 10; cout r endl;/ 输出 10 并换行 s = PI * r * r;/ 根据当前的r计算s的值 cout s endl;/ 输出 314.159 并换行 r = 20; s = PI * r * r;/ 根据当前的r重新计算s cout r ”,” s endl;/ 输出 20,1256.64换行 retu

7、rn 0; ,3.1.2 变量,变量其值在程序运行中可以被改变的量 变量必须先定义、后使用 定义变量意味着为该变量分配内存空间 变量定义需要确定其 5 要素: 存储类型(决定变量的生命期、可见性) 数据类型(决定变量的存储格式、取值范围) 变量名(“小精灵”的名字) 变量的初始值(“小精灵”的初态) 变量的地址(由系统确定,见第5章),变量定义的格式,变量定义语句 存储类型 数据类型 变量名 = 初始化值; 程序中何处可以定义变量? 在所有的函数之外 全局变量 存储类型 缺省 静态全局变量 存储类型 static 在某函数之内 静态局部变量 存储类型 static 局部(自动)变量 存储类型

8、auto 或者 缺省,存放在栈区,1. 变量的存储类型,一个程序在操作系统控制下启动执行时,由操作系统分配给该程序一定的内存空间,包括: 代码区 存放程序代码(体现冯诺依曼的“存储程序”思想) 数据区 全局数据区、常量池 存放全局变量、静态全局变量 静态局部变量、一些常量 栈区 存放局部(自动)变量 堆区 存放动态变量,规定:全局变量,在所有函数之外定义、缺省存储类型的变量 称为全局变量。 全局变量存放在全局数据区中; 全局变量在主函数执行之前产生、主函数结束后被销毁 (即:全局变量的生命期是全局的); 全局变量定义语句之后的所有函数中均可以直接对其进行读写访问(即:作用域范围大,可见性强)。

9、 使用全局变量不利于程序的移植、维护 (建议:程序中不要使用全局变量)。 C+语言的一些机制可以消灭程序中的全局变量。,#include /不好的程序 using namespace std; int temp; / 全局变量 int max(int a, int b, int c) temp = a; if(btemp) temp = b; if(ctemp) temp = c; return temp; int main() cout max(2, 5, 3) endl; return 0; ,/ 此函数强烈地依赖于变量temp,不能独立移植到其他程序中 / 修改了temp的值,可能影响其

10、他部分,#include /5-2.cpp using namespace std; int max(int a, int b, int c) int temp;/ 局部(自动)变量 temp = a; if(btemp) temp = b; if(ctemp) temp = c; return temp; int main() cout max(2, 5, 3) endl; return 0; ,好的代码! 不依赖于全局变量, 相对独立,便于移植,规定:静态全局变量,在所有函数之外定义、存储类型为static的变量称为静态全局变量。 静态全局变量与全局变量的唯一区别 在多文件结构程序中,静态

11、全局变量的作用域仅限于定义其的源程序文件(称为编译单元)中,不能跨越源程序文件; 全局变量可以跨越不同的源程序文件。需要在某一个源程序文件中定义(分配内存空间),而在其他源程序文件中用“外部参照访问声明”即可: extern 数据类型 某全局变量名; 即:一处定义,多处声明。,规定:静态局部变量,在函数内定义、存储类型为 static 的变量称为静态局部变量。 静态局部变量存放在全局数据区; 静态局部变量可能不被创建 程序运行时始终不执行定义它的函数。 静态局部变量最多只被创建、初始化一次 程序运行时,第一调用其所在函数时创建并初始化,其生命期直到主函数结束后才终止; 再次调用其所在函数时,将

12、跳过静态局部变量定义及初始化语句,该变量的当前值为上次退出函数时所保存的值。 在其所在函数外,静态局部变量处于“休眠”,不可访问。 静态局部变量具有全局生命期、局部可见性。,规定:局部变量(自动变量),在函数内定义、存储类型为 auto 的变量称为局部变量,也称为自动变量。 局部变量是程序中使用最多的变量; 局部变量存放在栈区; 生命期 随所在函数调用而创建,随所在函数返回而销毁 可见性 仅在所在函数内部 初始化 局部自动变量定义时,若未对其进行显式地初始化,则其初始值是不可预知的; 注:全局变量、静态全局变量、静态局部变量定义时,若未对其进行显式地初始化,系统将其初始化为各位全0。,#inc

13、lude / Variable_Test.cpp #include “VarExample.h” using namespace std; static float a=800.8f; /静态全局变量 int main() int a=10000,x=500,n=800;/ 局部自动变量 function1(); function2(); function3(); function1(); function2(); function3(); cout“in main() : N=”:n “,n=”n“,A=”:a “,a=”a“,x=”xendl; return 0; ,800.8,静态全局变

14、量 a,局部自动变量 a,局部自动变量 x,局部自动变量 n,10000,500,800,当执行到main()函数体的第一行语句后,main(),/ VarExample.h #ifndef VAREXAMPLE_H #define VAREXAMPLE_H extern int n; / 全局变量外部参照访问声明,并非定义变量 int function1(); / 函数原型,用于函数声明 double function2(); void function3(); #endif,/ VarExam1cpp #include #include VarExample.h using namespa

15、ce std; int n;/ 定义全局变量 static int a=10000; / 定义静态全局变量 int function1() static int a;/ 定义静态局部变量 0 double x=5.5;/ 局部自动变量 int n=100;/ 局部自动变量 x+; / 访问局部变量 6.5 :n+; / 访问全局变量 1 :a+; / 访问静态全局变量 10001 a = a + :a + (int)x + :n + n; /10108 cout in function1(): N = :n , n = n / 访问局部变量 , A = :a , a = a / 访问静态局部变量 , x = x endl; return a; ,800.8,静态全局变量 a,局部自动变量 a,局部自动变量 x,局部自动变量 n,10000,500,800,main(),全局变量 n,静态全局变量 a,10000,10000,静态局部变量 a,局部自动变量 x,局部自动变量 n,5.5,100,function1(),0,0,当执行到function1()函数体的第3条语句后,function1(),800.8,静态全局变量 a,局部自动变量 a,局部自动变量 x,局部自动变量 n,10000,5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号