第1章c++基础知识.ppt_第1页
第1章c++基础知识.ppt_第2页
第1章c++基础知识.ppt_第3页
第1章c++基础知识.ppt_第4页
第1章c++基础知识.ppt_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、孙岱,C+程序设计,第1章 C+基础知识,程序设计语言是人类在计算机上解决实际问题的一种工具。当一个求解问题能够用数学模型表达时,人们会考虑用某种程序设计语言将该问题的数学模型表示成计算机可以接受的程序形式,再由计算机自动处理这个程序,生成人们所需要的结果。,1.1 程序设计语言的基本概念,1. 面向过程的结构化程序设计语言 2. 面向对象的程序设计语言,C+语言是面向对象的语言,同时也兼顾了面向过程的程序设计方法。,1.2 C+程序的基本结构,1.2.1 C+程序结构 一般来说,C+程序的结构包含声明区、函数区两个部分,在任何一个区内都可以随时插入程序的注释。,【例1.1】从键盘输入圆的半径

2、,求圆的面积。 程序代码如下: /*ex1_1.cpp* #include #define PI 3.14159 float sum(float x); void main() float r,s; coutr; s=sum(r); coutr=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 sum(float x); (4)条件编译; (5

3、)全局变量声明; (6)结构体等的定义; (7)类的定义。,2函数区 一个程序由一个主函数main()和若干个其他函数组成。程序的执行从main()函数开始。 每个函数都是由函数声明部分(函数首部)与函数体部分组成。 函数声明部分包括函数返回值类型、函数名、函数的形式参数。 函数体部分是用一对花括号 括起来的完成该函数所表达的功能的语句的集合。,一般来说,程序设计语言可用下面的模型描述:,程序设计语言的模型与人类的自然语言模型类似。,例1_1,1.2.2 C+程序的书写格式 C+程序的书写格式比较灵活,书写程序时可以任意换行。为了提高程序的可读性,C+程序的书写格式有如下约定: (1)一般每行

4、书写一条语句,并以分号(;)结束。 语句较短时,可以多条语句可书写在一行内。语句较长时,一条语句可写在多行上。 (2)分号是语句的结束符,表示一条语句的结束,(但函数说明行和声明区的多数语句后不用分号)。 (3)各语句按逻辑层次进行缩进对齐。 (4)可使用注释以增强程序的可读性。注释以“/*”开始,以“*/”结束;若为单行注释还可以“/”开始,占据一行。,例1_1,1.3 一个应用程序的开发过程,1.3.1 Visual C+ 6.0开发环境 Visual C+ 6.0开发环境 是一个集编辑、编译、链接、调试、运行于一体的集成环境,即在一个程序的控制下可以分步或一次性地完成编辑、编译、链接、调

5、试运行工作。,1.3.2 一个应用程序的开发过程,1启动Visual C+ 6.0开发环境,2创建工程项目,3创建C+源程序文件并添加到项目文件中,4编译、链接与运行程序,产生的文件类型 .cpp 源程序文件(编程者输入的程序代码)* .obj目标文件(编译后生成的二进制代码) .exe可执行文件 .dsp项目参数配置文件(project)* .dsw 工作区文件(workspace) *,菜单: Compile、 Build 与Execute Program,例1.1程序所建立的项目的运行结果如下: Input r:10 r=10 s= 314.159,1.4 C+的词法规则,单词有:标识符

6、、运算符、注释符、分隔符 标识符包括常量名、变量名、关键字、函数名、类型名等,1.4.1 C+的字符集,C+的字符集包括如下字符: (1)26个小写字母:az。 (2)26个大写字母:AZ。 (3)10个数字:09。 (4)标点和特殊字符:+ - * / , : ; ? ” | ! # % 指数形式6位小数,1.6 常量与变量,1.6.1 常量 C+程序中有4种常量:整型常量、浮点型常量、字符常量和字符串常量。,数值型常量,1整型常量 整型常量有三种形式:十进制、八进制和十六进制。 十进制常量,如12、345都是合法的十进制常量。 八进制常量在数值前要加上一个零(0),如011、077都是合法

7、的八进制常量。 十六进制常量的写法是在数值前加上一个零(0)和一个字母X(大小写均可),如0X11、0 xF都是合法的十六进制常量,分别等于十进制数17和15。,2浮点型常量 浮点型常量又称实数型常量。分为十进制数形式和指数形式两种表示方法。 (1)十进制数形式的浮点型常量的书写格式: . 其中小数点不能省略。如1.2345、1.0、1.、.12345均是合法的浮点型常量。,(2)指数形式的浮点型常量的书写格式: .E 其中,指数形式表示符“E”大小写均可,必须是整数。 如12E-3、0.1E2、.12345E6、0E0等均是合法的。,【例1.2】浮点型常量的运用。 程序代码如下: /*ex1

8、_2.cpp* #include #include void main() float a,b,c; a=12.34567; b=.11183155; c=12.e2; couta=setprecision(7)a; coutta=setiosflags(ios:scientific)aendl; coutb=b; couttc=cendl; ,程序的运行结果如下: a=12.3457 a=1.234567e+001 b=1.118316e-001 c=1.200000e+003,设置精度,I/O流控制,指数形式输出,水平制表符,Float只有6位(小数,6位数字;指数形式6位小数),【例1.

9、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)tint(c)endl; coutdendl; ,程序的运行结果如下: ABD 414244 ,3字符常量 字符常量是一个用单引号括起来的一个字符。 字符常量具有整数值,其值是该字符的ASCII码。,置基数为16,强制转换为int类型,4字符串常量 字符串常量是用双引号括起来的若干个字符组成的字符序列。如:a student 注意如下

10、几个字符串: 双引号字符串,空字符串, 空格字符串。,字符常量与字符串常量是不同的,表现在: (1)表示形式不同。单引号,双引号。 (2)存放不同。前者存放在字符变量中,后者存放在字符数组或字符指针指定的位置。如,char c=A, s5=ABCD; (3)存放字符串常量时系统会自动加一个结束符。如A与“A”不同。 A占1个字节;“A”占2个字节,因为自动加一个结束符0。 (4)对它们进行的运算也不同。字符与字符、字符与整数间可作加减运算;而字符串只能作连接运算。,【例1.4】字符串常量的运用。 程序代码如下: /*ex1_4.cpp* #include void main() char s1

11、10,s210; couts1s2; couts1ts2endl; ,程序的运行结果如下: Input 2 Words,Please:Beijing Changsha Beijing Changsha,5符号常量 符号常量是一种用来替代常量(前面讨论的4种常量)的标识符。 使用符号常量的意义: (1)增强程序的可读性。标识符可以定义得能“见名思义”,如可用PI表示圆周率,可用MAX_ID表示最大编号。 (2)书写时不易出错。有的常量直接书写很长,容易出错,如圆周率3.141 592 6用PI代之,既简单又不容易出错。 (3)修改程序方便。 定义符号常量: #define ,例1_1,1.6.2

12、 变量 变量是在程序中可以改变值的量,变量有名字、类型和值三个要素。 1变量的定义 变量在使用前必须定义。格式如下: ;,例如:int a,b,c; a、b、c为整型变量; 2变量的数据类型 变量的基本数据类型有:整型、浮点型和字符型。 变量的构造数据类型如数组、结构体、共用体、类。 3变量的存储类(四种:auto、register、static、extern ) (改在第三章后学习),变量的值,3变量的存储类 变量的存储类定义变量的有效性范围,即作用域。C+中有4类:自动存储类(auto)、寄存器存储类(register)、静态存储类(static)和外部存储类(extern)。 stati

13、c double x,y10; x、y是静态双精度变量,y是数组,(1)自动存储类 某一变量定义成自动存储类后,其作用域在定义它的函数体或分程序内,自动存储类变量只能定义在函数体或分程序内。变量的生存期在作用域内,即执行完定义它的函数后,该变量即被释放。这类变量的安全性最好,在不同的函数中可以定义相同名字的变量,互不影响。在函数体内定义自动存储类变量时可以省去说明符auto。前面程序中定义的变量都省去了存储类说明符auto,它们都是自动存储类变量。,(2)寄存器存储类 寄存器存储类的变量与自动存储类的变量有相同的作用域和生存期。定义这类变量必须加存储类说明符register,并且只能定义在函数

14、体或分程序内。这类变量有可能被存放在CPU的空闲通用寄存器中,当CPU中没有空闲通用寄存器时,当作自动存储类变量。一旦变量存入CPU的寄存器中,则变量的访问效率将大大提高,这是因为访问内存比访问CPU寄存器花的时间长得多。,(3)静态存储类 静态存储类分为内部静态存储类和外部静态存储类。内部静态存储类变量定义在函数体或分程序内,其作用域在定义它(们)的函数体或分程序内。而外部静态存储类变量定义在函数体或分程序外,其作用域在定义它(们)的文件内,可见两者的作用域是不同的。 内部静态存储类和外部静态存储类变量有相同的生存期,都被存放在内存的静态区域,静态变量在程序结束时才释放内存。 要定义静态存储

15、类变量,必须加存储类说明符static。,(4)外部存储类 外部存储类变量的作用域是整个程序,包含该程序的各个文件。生存期是整个程序,在程序结束时才释放内存。,表1-3 各种存储类特性的比较,存 储 类 别,自动类,寄存器类,内部静态类,外部静态类,静态类,外部类,或分程序内,在定义它的文件内,程序的各个文件,程序结束,前有效,离开定义体,即消失,存取速度快,安全性好,在定义它的函数体,安全性差,同自动类,作 用 域,生 存 期,其 他,外部存储类变量可以定义在函数体内、外,定义在函数体外时可以不加存储类说明符,但在说明一个外部存储类变量时,必须加存储类说明符extern。有如下两种情况要在引

16、用外部存储类变量前,对其进行说明。 在一个文件中,在定义前引用外部存储类变量必须说明。 在多个文件的程序中,在一个文件中定义,在另一个文件中引用,引用前要说明。,【例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,

17、s210;/说明外部存储类变量 couts1s2; couts1ts2endl; char s110,s210;,4变量的值 变量的值可来自于: 程序中使用赋值语句赋值;如:x=5;y=x; 输入值;如: cinx; 变量初始化在定义变量时对变量赋初值: =,=,;,下面都是一些合法的定义: 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;,1.7 运算符与表达式,C+的表达式包括算术表达式、关系表达式、逻

18、辑表达式、赋值表达式、条件表达式和逗号表达式。 1.7.1 算术运算符与算术表达式 1算术运算符 算术运算符有: (1)单目运算符:-(取负)、+(增1)、-(减1)。 (2)双目运算符:+(加)、-(减)、*(乘)、/(除)、%(取余)。 优先级: 单目高于双目; * 、/ 、 %高于+ 、- 前缀运算(+和 - )与后缀运算(+和 - ):单独使用,效果一样;与其他运算混合使用,产生的结果不一样。,【例1.7】前缀运算表达式的运用。 程序代码如下: /*ex1_7.cpp* #include void main() int i=0; int a; a=+i; couta=a i=iendl

19、; 程序的运行结果如下: a=1 i=1,【例1.8】后缀运算表达式的运用。 程序代码如下: /*ex1_8.cpp* #include void main() int i=0;int b; b=i+; coutb=b i=iendl; 程序的运行结果如下: b=0 i=1,取余运算是求两个整型数相除的余数,只能用于两个整型数的运算。用下面的公式:余数=被除数-商除数 例如: 5%3的值是2 注意:5%-3的值是2,-5%3的值是-2。 【例1.9】取余运算。 /*ex1_9.cpp* #include void main() int a,b; a=5%-3; b=-5%3; couta=at

20、b=bendl; ,程序的运行结果如下: a=2 b=-2,2算术表达式 算术表达式是把常量、变量、函数等用算术运算符连接起来的有意义的式子。 算术表达式有整型和浮点型两类,由表达式中的参与运算的常量、变量、函数共同确定。 当表达式中参与运算的对象的类型不一致时: 编译系统会自动进行类型转换; 程序中可使用强制类型转换。,1.7.2 关系运算符与关系表达式 1关系运算符 (大于)=(大于等于)0 关系表达式的运算结果:成立或不成立,分别用整型1和0表示。 它在C+程序中通常用作为判断条件。 如:if (x+y0) then ,【例1.10】关系表达式的运用。 程序代码如下: /*ex1_10.

21、cpp* #include #define EPS 1.0E-16 void main() double a,b; int c; a=5.0; b=EPS; c=a+ba; couta=atb=btc=cendl; 程序的运行结果如下: a=5 b=1e-016 c=0 试将EPS 改成1.0E-15,c的值会是多少?,double仅15位有效数字,1.7.3 逻辑运算符与逻辑表达式 1逻辑运算符 ! 逻辑求反(又称逻辑非,单目运算符) a=5;b=0; c=!b; d=a 程序的运行结果如下: a=5 b=0 c=1 d=0 e=1,C+规定:逻辑表达式中非0的操作数为真,0操作数为假。,逻

22、辑与前为假则不算后面,结果为0;逻辑或前为真则不算后面,结果为1;,1.7.4 位运算符与位运算表达式 位运算是二进制运算。C+有两类位运算符:逻辑位运算符和移位运算符。由位运算符与操作数组成的表达式称为位运算表达式。位运算表达式的值是整型。 1逻辑位运算符 逻辑位运算符有: :按位求反(单目运算符) x=-1; x=x1; coutxendl; 结果为-1,int x; x=1; x=x1; coutxendl; 结果为0,【例1.12】逻辑位运算和移位运算。 程序代码如下: #include void main() int a,b; a=7;b=2; cout2=2)2=2)endl; ,

23、程序的运行结果: a=7 a=-8 a使得c赋值为1,b赋值为1,a赋值为1。 赋值时类型自动转换,可能会丢失精度。如int x; x=1.6;x值为1,【例1.13】赋值表达式。 #include void main() int a=1; couta=aendl; cout(a=2)=(a=2)endl; couta=aendl; 程序的运行结果如下: a=1 (a=2)=2 a=2,1.7.6 三目运算符与三目条件表达式 在C+中只有一个三目运算符?:,使用该组运算符组成条件表达式,格式如下: ?: 先计算,当非0时,条件表达式取的值,否则取的值。 条件表达式的功能可以解释成一个简单的条件

24、语句(参见第2章)。 三目运算符 ?: 的结合性是从右至左。,【例1.14】三目条件表达式的运用。 程序代码如下: /*ex1_14.cpp* #include void main() int a=1,b=2,c=3; coutb?b-:+a=b?b-:+a)b?+a:+b=b?+a:+b)b?a:bc?b:c=b?a:bc?b:c)endl; ,运行结果: ab?b-:+a = 2 c+=ab?+a:+b = 6 ab?a:bc?b:c = 6,1.7.7 逗号运算符与逗号表达式 逗号运算符为双目运算符,它的优先级最低,结合性是从左至右。逗号运算符用来连接两个或两个以上的表达式,形成逗号表达

25、式。 计算逗号表达式时,从左至右依次计算各个表达式,逗号表达式的值取最后一个表达式的值。多用在for循环语句的for关键字后的圆括号内,圆括号内由分号分隔的表达式可以是逗号表达式。,【例1.15】逗号表达式的运用。 #include void main() int a=1, b=2, c=3; couta=atb=btc=cendl; c=(a=10, b=a*2, b*2); couta=atb=btc=cendl; couta,b,c,c*3= (a,b,c,c*3)endl; 程序的运行结果如下: a=1 b=2 c=3 a=10 b=20 c=40 a,b,c,c*3 = 120,1.

26、7.8 指针运算 指针运算实际上是地址运算。指针运算有两个运算符: x=!-5+312; y=x-(-1); coutx=xty=yendl; z=xy?x-y?x:y:x*y; coutsizeof(int)=sizeof(int)tsizeof(z)= sizeof(z)endl; coutx=xty=ytz=zendl; ,程序的运行结果如下: x=6 y=8 sizeof(int)=4 sizeof(z)=4 x=6 y=7 z=6,1.7.10 类型转换 自动(隐含)转换和强制转换。 1、自动转换 如:int ival=0; ival=3.541+3; 则计算过程为:3.541+3.0(两者都是double型)6.541 (double型) 6( int型) ival获得值6 (1)不同类型数据运算,之前会进行下面的自动转换: char型和short型自动转换为int型;unsigned char型和unsigned short型自动转换为unsigned int型;float型自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论