第1章c的初步知识与数据类型.ppt
《第1章c的初步知识与数据类型.ppt》由会员分享,可在线阅读,更多相关《第1章c的初步知识与数据类型.ppt(104页珍藏版)》请在三一文库上搜索。
1、第1章 C+的基础知识,程序设计语言是人类在计算机上解决实际问题的一种工具。当一个求解问题能够用数学模型表达时,人们会考虑用某种程序设计语言将该问题的数学模型表示成计算机可以接受的程序形式,再由计算机自动处理这个程序,生成人们所需要的结果。,1.1 程序设计语言的基本概念,1. 面向过程的结构化程序设计语言 2. 面向对象的程序设计语言有两类:一类是完全面向对象的语言,另一类是兼顾面向过程和面向对象的混合式语言。C+语言就是后一种形式的典型代表。,1.2 C+程序的基本结构,1.2.1 C+程序结构 一般来说,C+程序的结构包含声明区、函数区两个部分,在任何一个区内都可以随时插入程序的注释。,
2、【例1.1】从键盘输入圆的半径,求圆的面积。 程序代码如下: /*ex1_1.cpp* #include #define PI 3.14159 float sum(float x); void main() float r,s; coutr; s=sum(r); cout“r=“r“ “s=“ “sendl; float sum(float x) return PI*x*x; ,1声明区 声明区在函数之外。程序的声明区可能需要编写: (1)包含文件,如例1.1中的#include ; (2)宏定义,如例1.1中的#define PI 3.14159; (3)函数声明,如例1.1中的float
3、sum(float x); (4)条件编译; (5)全局变量声明; (6)结构体等的定义; (7)类的定义。,2函数区 一个程序由一个主函数main()和多个(可以是0个 )其他函数组成。每个函数都是由函数声明部分与函数体部分组成。程序的执行从main()函数开始。函数声明部分包括函数返回值类型、函数名、函数的形式参数。 函数体部分是用一对花括号括起来的完成该函数所表达的功能的语句的集合。语句可以是数据描述语句或数据操作语句。,任何一种程序设计语言可用下面的模型描述:,一种程序设计语言的模型与人类的自然语言模型是一致的,都遵守这种模型。读者可以借鉴人类自然语言的学习方法来学习某种程序设计语言。
4、,1.2.2 C+程序的书写格式 C+程序的书写格式比较灵活,书写程序时可以任意换行,一行内可以书写多条语句,一条语句可以书写在多行上,只要每条语句以分号(;)结束即可。也因为如此,所以C+程序可读性差,为了提高程序的可读性,C+程序的书写格式有如下约定: (1)C+程序中,每行一般书写一条语句;语句较短时,多条语句可书写在一行内。语句较长时,一条语句可写在多行上。,(2)C+程序中,每条语句以分号结束,表示一条语句的结束,但函数说明行和声明区的多数语句后不用分号。语句前面没有标号,只有goto语句的转向目标语句前加标号。 (3)C+程序中,使用向右缩进方法表达程序中的层次结构,如花括号内的函
5、数体、循环语句的循环体、if语句的if体和else体一般都向右缩进几个字符。花括号是函数体或复合语句的定界符。 (4)C+程序中,可使用多行注释或单行注释以增强程序的可读性。多行注释以“/*”开始,以“*/”结束,占据多行。单行注释以“/”开始,占据一行。,1.3 一个应用程序的开发过程,1.3.1 Visual C+ 6.0开发环境 采用Visual C+ 6.0开发环境 ;这是一个集编辑、编译、链接、调试运行于一体的集成环境,即在一个程序的控制下可以分步或一次性地完成编辑、编译、链接、调试运行工作。,1.3.2 一个应用程序的开发过程,1启动Visual C+ 6.0开发环境,2创建工程项
6、目,3打开项目文件,4创建C+源程序文件并添加到项目文件中,5编译、链接与运行程序,在上页图中单击“Compile”按钮进行编译,单击“Build”按钮进行编译与链接(在没有编译的情况下),单击“Execute Program”按钮进行编译、链接和运行(在没有编译、链接的情况下)。,例1.1程序所建立的项目的运行结果如下: Input r:10 r=10 s= 314.159,1.4 C+的词法规则,一个程序包含两个方面的主要内容:数据描述和数据操作。数据是操作的对象,数据的存储方式决定于该数据的数据类型,描述数据就是定义数据的类型。数据类型的定义表现在常量、变量等的定义之中,而常量、变量又是
7、一种程序设计语言的基本单词。除了常量、变量之外,一种程序设计语言还有标识符、运算符、关键字、分隔符等基本单词,这些单词的构成(书写规则)都必须遵守该语言的词法规则。,本节介绍的就是C+中各种单词的构词规则。请读者结合前面的语言模型图学习本节内容并思考本节内容属于语言模型图的哪个环节。 由一种语言提供的字符集中的字符构造的单词必须遵守该语言的词法规则。在一种语言中,单词涉及标识符、关键字、运算符、常量、变量、注释符、分隔符等。C+也不例外。本节只讨论C+中的基本词法规则。,1.4.1 C+的字符集组成,C+的字符集包括如下字符: (1)26个小写字母:az。 (2)26个大写字母:AZ。 (3)
8、10个数字:09。 (4)标点和特殊字符:+ - * / , : ; ? ” | ! # % & ( ) 空格。 (5)空字符:ASCII码为0的字符,用作字符串的结束符。,1.4.2 C+的单词及其构词规则,单词由若干个合法字符组成,下面介绍常用的单词。 1标识符 标识符是由字母、下画线和数字组成的字符序列,第一个字母必须是字母或下画线,不能是数字。标识符中的字母大小写是不同的。标识符用来命名C+程序中的常量、变量、函数、语句标号及类型定义符等。有一部分标识符是系统定义的。本小节关心的是用户定义的标识符。,在定义标识符时,要注意以下几点: (1)要遵守上面的构成标识符的规则。 Aa、ABC、
9、A_Y、ycx11、_name是合法标识符。而5xyz、m.x、!abc、x-y是非法标识符。 (2)系统已经使用的关键字、函数名或其他已定义的单词不能再定义成标识符。 (3)定义标识符时尽可能让标识符有意义,便于阅读,即做到“见名知义”。,2关键字 关键字(又称保留字)是被系统定义了的已具有特定含义的标识符。 3运算符 运算符与操作数连接组成表达式。连接一个操作数的运算符称为单目运算符,连接两个操作数的运算符称为双目运算符,连接三个操作数的运算符称为三目运算符。有关运算符的种类、功能、优先级和结合性等问题将在1.7节中详细介绍。,4常量 常量是在程序中不改变的量。C+程序中的常量有:整型常量
10、、浮点型常量、字符常量和字符串常量4种。将在1.6节中详细介绍。 5变量 变量是在程序中可以改变的量。变量有三要素:名字、类型和值。某个变量的值被改变后,将一直保持到下一次被改变。变量是一种标识符,其命名完全与标识符相同。将在1.6节中详细介绍其特性。,6注释符 注释符的作用是在程序中标识注释信息。在C+程序中,可使用多行注释或单行注释增强程序的可读性。多行注释以“/*”开始,以“*/”结束,占据多行。单行注释以“/”开始,占据一行。“/*”、“*/”、“/”就是注释符。 7分隔符 分隔符有:空格符、换行符、水平制表符等,用作其他单词之间的分隔符;逗号(,),多作多个变量或多个参数之间的分隔符
11、;分号(;),主要用于for语句的for关键字后的圆括号内,作分隔符;冒号(:),用来标识语句标号和开关语句,常用于switch的case关键字后。,1.5 C+基本数据类型,表1-2 C+基本数据类型,数 据 类 型,字节数,数据表达范围,1.6 常量与变量,常量与变量是C+中最基本的数据描述形式。本节只介绍常量和变量的基本概念,包括4种常量和基本数据类型的变量。关于构造类型的变量将在后续章节中介绍。 1.6.1 常量 常量是在程序中不改变的量。C+程序中有4种常量:整型常量、浮点型常量、字符常量和字符串常量。,1整型常量 C+程序中,整型常量和浮点常量统称数值常量。 整型常量有三种形式:十
12、进制、八进制和十六进制。 十进制常量的写法就是算术表达方式,如12、345都是合法的十进制常量。 八进制常量在数值前要加上一个零(0),如011、077都是合法的八进制常量。 十六进制常量的写法是在数值前加上一个零(0)和一个字母X(大小写均可),如0X11、0xF都是合法的十六进制常量,分别等于十进制数17和15。,2浮点型常量 浮点型常量又称实数型常量。分为十进制数形式和指数形式两种表示方法。 (1)十进制数形式的浮点型常量的书写格式: . 其中小数点不能省略。如1.2345、1.0、1.、.12345均是合法的浮点型常量。,(2)指数形式的浮点型常量的书写格式: .E 其中,指数形式表示
13、符“E”大小写均可。 .部分允许不含小数点的,或含小数点的,必须是整数。如12E-3、0.1E2、.12345E6、0E0等均是合法的。,【例1.2】浮点型常量的运用。 程序代码如下: /*ex1_2.cpp* #include #include void main() float a,b,c; a=12.34567; b=.11183155; c=12.e2; cout“a=“setprecision(7)a; cout“ta=“setiosflags(ios:scientific)aendl; cout“b=“b; cout“tc=“cendl; ,程序的运行结果如下: a=12.3457
14、 a=1.234567e+001 b=1.118316-001 c=1.200000e+003,3字符常量 字符常量是一个用单引号括起来的字符。单引号是字符常量的定界符,单引号本身表示成。在C+中,字符常量具有整数值,其值是该字符的ASCII码。一个字符常量可以与整数进行加减运算。下面的程序给出了字符与整数进行加减运算的实例。,【例1.3】字符常量的运用。 程序代码如下: /*ex1_3.cpp* #include #include void main() char a,b,c,d; a=A; b=B; c=a+3; d=; coutatbtcendl; couthexint(a)tint(b
15、)tint(c)endl; coutdendl; ,程序的运行结果如下: A B D 41 42 44 ,4字符串常量 字符串常量是用双引号括起来的若干个字符组成的字符序列。双引号是字符串常量的定界符,双引号本身表示成“”。“”是一个空字符串,空字符串中没有任何有效字符,只有一个字符串结束符。在C+程序中,任何一个字符串常量都有一个结束符,该结束符是ASCII码值为0的空字符,表示为0。,字符常量与字符串常量是不同的,表现在: (1)表示形式不同。前者用单引号括起来,后者用双引号括起来。 (2)存放它们的对象不同。前者存放在字符变量中,后者存放在字符数组或字符指针指定的位置。如,char c=
16、A, s5=“ABCD“; (3)存放字符串常量时要加一个结束符,而存放字符常量则不需要。所以A与“A”不同。且其占用的内存空间也不同,A占1个字节;“A”占2个字节,前一字节存放字符A,后一字节存放结束符。 (4)对它们进行的运算也不同。字符与字符、字符与整数间可作加减运算;而字符串只能作连接运算。,【例1.4】字符串常量的运用。 程序代码如下: /*ex1_4.cpp* #include void main() char s110,s210; couts1s2; couts1ts2endl; ,程序的运行结果如下: Input 2 Words,Please:Beijing Changsha
17、 Beijing Changsha,5符号常量 符号常量是一个用来替代常量(前面讨论的4种常量)的标识符。这个标识符当然叫符号常量。 (1)增强程序的可读性。标识符可以定义得有意义,如用PI表示圆周率。 (2)书写简单,不易出错。有的常量直接书写很长,容易出错,如圆周率3.141 592 6用PI代之,既简单又不容易出错。 (3)修改程序方便。,1.6.2 变量 变量是在程序中可以改变的量,变量有名字、类型和值三个要素。变量的类型包括存储类和数据类型两个方面。某个变量的值被改变后,将一直保持到下一次被改变。 1变量的定义 变量在使用前必须定义。格式如下: ;,例如:int a,b,c; a、b
18、、c为整型变量;缺省存储类,要看是定义在函数体内还是函数体外来确定是自动类还是外部类; static double x,y10; x、y是静态双精度变量,y是数组,2变量的数据类型 变量的基本数据类型有:整型、浮点型和字符型。 变量的构造数据类型称自定义类型。它由若干个数据类型相同或不相同的变量所构成的类型。如数组、结构体、共用体、类都是构造数据类型。 3变量的存储类 变量的存储类定义变量的有效性范围,即作用域。C+中有4类:自动存储类(auto)、寄存器存储类(register)、静态存储类(static)和外部存储类(extern)。,(1)自动存储类 某一变量定义成自动存储类后,其作用域
19、在定义它的函数体或分程序内,自动存储类变量只能定义在函数体或分程序内。变量的生存期在作用域内,即执行完定义它的函数后,该变量即被释放。这类变量的安全性最好,在不同的函数中可以定义相同名字的变量,互不影响。在函数体内定义自动存储类变量时可以省去说明符auto。前面程序中定义的变量都省去了存储类说明符auto,它们都是自动存储类变量。,(2)寄存器存储类 寄存器存储类的变量与自动存储类的变量有相同的作用域和生存期。定义这类变量必须加存储类说明符register,并且只能定义在函数体或分程序内。这类变量有可能被存放在CPU的空闲通用寄存器中,当CPU中没有空闲通用寄存器时,当作自动存储类变量。一旦变
20、量存入CPU的寄存器中,则变量的访问效率将大大提高,这是因为访问内存比访问CPU寄存器花的时间长得多。,(3)静态存储类 静态存储类分为内部静态存储类和外部静态存储类。内部静态存储类变量定义在函数体或分程序内,其作用域在定义它(们)的函数体或分程序内。而外部静态存储类变量定义在函数体或分程序外,其作用域在定义它(们)的文件内,可见两者的作用域是不同的。 内部静态存储类和外部静态存储类变量有相同的生存期,都被存放在内存的静态区域,静态变量在程序结束时才释放内存。 要定义静态存储类变量,必须加存储类说明符static。,(4)外部存储类 外部存储类变量的作用域是整个程序,包含该程序的各个文件。生存
21、期是整个程序,在程序结束时才释放内存。,表1-3 各种存储类特性的比较,存 储 类 别,自动类,寄存器类,内部静态类,外部静态类,静态类,外部类,或分程序内,在定义它的文件内,程序的各个文件,程序结束,前有效,离开定义体,即消失,存取速度快,安全性好,在定义它的函数体,安全性差,同自动类,作 用 域,生 存 期,其 他,外部存储类变量可以定义在函数体内、外,定义在函数体外时可以不加存储类说明符,但在说明一个外部存储类变量时,必须加存储类说明符extern。有如下两种情况要在引用外部存储类变量前,对其进行说明。 在一个文件中,在定义前引用外部存储类变量必须说明。 在多个文件的程序中,在一个文件中
22、定义,在另一个文件中引用,引用前要说明。,【例1.5】定义在前、引用在后的外部存储类变量(输出结果与例1.4类似)。 程序代码如下: /*ex1_5.cpp* #include char s110,s210; void main() couts1s2; couts1ts2endl; ,【例1.6】定义在后、引用在前的外部存储类变量(输出结果与例1.4类似)。 程序代码如下: /*ex1_6.cpp* #include void main() extern char s110,s210;/说明外部存储类变量 couts1s2; couts1ts2endl; char s110,s210;,4变量
23、的值 变量的值是变量三要素之一。可以在定义变量时对变量赋初值(变量初始化),也可以在引用变量时通过其他方法(赋值表达式、cin、scanf函数等)对变量赋值。 变量初始化格式: =,=,;,如果外部类和静态类变量不进行初始化,那么它们由编译程序赋以“零值”(数值型变量赋数值0,字符型变量赋空字符)。如果自动类和寄存器类变量不进行初始化,那么它们不具有有意义的值,必须通过赋值后才能引用。 外部类和静态类变量初始化是在编译时给定的。即在第一次执行定义或说明时给定,以后进入所定义的函数体或分程序不再赋初值。而自动类和寄存器类变量的初始化是在每次进入函数体或分程序时重新定义初值。,可见,变量有定义和引
24、用两个方面。变量的定义涉及变量名称、存储类和数据类型。引用即使用,通常先定义,后使用。例1.6是特例,但在使用前必须说明。引用一个变量,其值是否有意义是一个重要的问题。如在一个函数内定义内部静态存储类的变量,离开这个函数后,虽然变量仍然存在,但它的值可能无效了,所以不能引用。 下面是一些合法的定义: int a=1,b=2,c=3; static char xyz=A,buffer10=“Hello“; double a5=1.12345,2.23456,3.34567,4.45678,5.56789 float s=1+2+3;,关于在引用变量时通过赋值表达式、cin、scanf函数等方式对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 初步 知识 数据类型
链接地址:https://www.31doc.com/p-2548037.html