《VisualC实用教学教程(第3版)》教案整编.ppt
《《VisualC实用教学教程(第3版)》教案整编.ppt》由会员分享,可在线阅读,更多相关《《VisualC实用教学教程(第3版)》教案整编.ppt(782页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 基本C+语言,C+是在20世纪80年代初期由贝尔实验室设计的一种在C语言的基础上增加了对 面向对象程序设计支持的语言,它是目前应用最为广泛的编程语言。本章先来说 明C+程序结构,然后详细讨论数据类型、运算符与表达式、基本语句、函数和 预处理、构造类型、指针和引用等内容。需要说明的是,在学习本章之前最好先 做实验1。 1.1 C+程序结构 同其他程序设计语言一样,C+也有自己的程序结构。,1.1.1 几个C+程序,下面先来介绍几个比较简单的C+程序。 例Ex_Simple1 一个简单的C+程序 #include stdafx.h /* C+程序的基本结构 */ #include void
2、 main() double r, area;/ 声明变量 coutr;/ 从键盘上输入变量r的值 area = 3.14159 * r * r;/ 计算面积 cout圆的面积为:arean; / 输出面积 ,1.1.1 几个C+程序,例Ex_Simple2 在屏幕上输出一个由星号形成的三角形 / 输出星号的三角形阵列 #include void DoDraw(int num); / 声明一个全局函数 void main() int num=5;/ 定义并初始化变量 DoDraw(num);/ 函数的调用 void DoDraw(int num)/ 函数的定义 for (int i=0; in
3、um; i+) / 循环语句 for (int j=0; j=i; j+) cout*; coutn; 主函数main和被调用的函数DoDraw。DoDraw函数是在屏幕上输出 星号的三角形阵列,这个阵列的行数以及每行星号的个数由num决定。结果如下:,1.1.1 几个C+程序,例Ex_Simple3 用类的概念重写例Ex_Draw #include class CDrawArray/ 定义一个类 public: void DoDraw(int num);/ 声明类的公有成员函数 ; void CDrawArray:DoDraw(int num)/ 成员函数的实现 for (int i=0;i
4、num;i+) for (int j=0;j=i;j+)cout*;coutn; void main() int num=5; CDrawArray myDraw;/ 定义类的一个对象 myDraw.DoDraw(num);/ 调用此对象的成员函数 虽然本程序的作用和例Ex_Simple2是一样的,但它引用了类的概念,是一个面向对象的 C+程序。程序中class后的名称是要定义的类名,该类仅声明了一个公共类型的成员函 数DoDraw。调用时,先定义该类的对象,然后像myDraw.DoDraw(num)语句那样调用。,1.1.2 C+程序的基本组成,从上面的几个例子可以看出,一个C+程序往往由预
5、处理命令、语句、函数、变量和对 象、输入与输出以及注释等几个基本部分组成的。 (1) 预处理命令。 (2) 语句。 (3) 函数。 (4) 变量和对象。 (5) 输入与输出。 (6) 注释。,1.1.3 C+程序的书写风格,1. 标识符命名 标识符是用来标识变量名、函数名、数组名、类名、对象名等的有效字符序列。 下面几个原则是命名时所必须注意的。 (1) 合法性。C+规定标识符由大小写字母、数字字符(09)和下划线组成,且第 一个字符必须为字母或下划线。任何标识符中都不能有空格、标点符号及其他字符, (2) 有效性。 (3) 易读性。,1.1.3 C+程序的书写风格,2. 缩进和注释 缩进 每
6、个“”花括号占一行,并与使用花括号的语句对齐。花括号内的语句采用缩进书写格式,缩进量为四个字符(一个默认的制表符)。 注释要注意的是: 注释应在编程的过程中同时进行,不要指望程序开发完成后再补写注释。 必要的注释内容应包含: 在源文件头部进行必要的源程序的总体注释:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 在函数的头部进行必要的函数注释:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。 其他的少量注释。如全局变量的功能、取值范围等。千万不要陈述那些一目了然的内容,否则会使注释的效果适得其反。,1.2
7、.1 基本数据类型,C+基本数据类型有char(字符型)、int(整型)、float(单精度实型)和double(双精度实型),“实型”又可称为“浮点型”。在ANSI C+中,基本数据类型还有wchar_t(双字节字符型)和bool(布尔型,值为false或true,而false用0表示,true用1表示)。 需要说明的是: (1) 无符号(unsigned)和有符号(signed)的区别在于数值最高位的含义。对于signed类型来说,最高位是符号位,其余各位表示数值大小;而unsigned类型的各个位都用来表示数值大小;因此相同基本数据类型的signed和unsigned的数值范围是不同。例
8、如,无符号字符型值的范围为0255,而有符号字符型值的范围为 -128 -127。 (2) char、short、int和long可统称为整型。默认时,char、short、int和long本身是有符号(signed)的。,1.2.1 基本数据类型,图1.1 C+的数据类型,1.2.1 基本数据类型,表1.1 C+的基本数据类型,1.2.2 常量,根据程序中数据的可变性,数据可以分为常量和变量两大类。 在程序运行过程中,其值不能被改变的量称为“常量”。常量,又称为“直 接量”,可分为不同的类型,如1、20、0、-6为整型常量,1.2、-3.5为实 型常量,a、b为字符常量。常量一般从其字面形式
9、即可判别。下面介 绍各种不同数据类型常量的表示方法。,1.2 .2常量,1. 整型常量 整型常量可以用十进制、八进制和十六进制来表示。 (1) 十进制整型常量。即十进制整数,如34、128等。 (2) 八进制整型常量。以数字0开头的数是八进制整数,它由0至7的数字组成。如 045,即(45)8,表示八进制数45,等于十进制数37;-023表示八进制数-23,等 于十进制数-19。 (3) 十六进制整型常量。以0 x或0X开头的数是十六进制整数,它由0至9、A至F或 a至f组成。例如0 x7B,即(7B)16,等于十进制的123,-0X1a等于十进制的-26。 需要注意的是: 整型常量中的长整型
10、(long)要以L或小写字母l作为结尾,如3276878L,496l等。 整型常量中的无符号型(unsigned)要以U或u作为结尾,如2100U,6u,100ul (表示unsigned long)等。,1.2.2 常量,实型常量 实型常量即实数,它有十进制数或指数两种表示形式。 (1) 十进制数形式。十进制数形式是由整数部分和小数部分组成的(注意必须有小 数点)。例如0.12、.12、1.2、12.0、12.、0.0都是十进制数形式。 (2) 指数形式。指数形式采用科学表示法,它能表示出很大或很小的实数。例如 1.2e9或1.2E9都代表1.2 x 109,注意字母E(或e)前必须有数字,
11、且E(或e)后面的 指数必须是整数。 若实型常量是以F(或f)结尾的,则表示单精度实型(float),以L(或小写字母l)结尾 的,表示长双精度实型(long double)。若一个实型常量没有任何说明,表示双精 度实型(double)。,1.2 .2常量,字符常量 字符常量是用单引号括起来的一个字符。如A、g、%、 等都是字符常量。注意B和b是两个不同的字符常量。 C+还可以用一个“”开头的字符序列来表示特殊形式的字符常量。 表1.2列出了常用的转义序列符。,表1.2 C+中常用转义序列符,1.2.2 常量,字符串常量 C+语言中除了允许使用字符常量外,还允许使用字符串常量。字符串常量是一
12、对双引号括起来的字符序列。例如: “Hello, World!n” “C+语言” “abcdef” 等等都是字符串常量。字符串常量中还可以包含空格、转义序列符或其他字符。 由于双引号是字符串的分界符,因此如果需要在字符串中出现双引号则必须用 “”表示。例如: “Please press “F1” to help!” 这个字符串被解释为: Please press “F1” to help! 字符串常量应尽量在同一行书写,若一行写不下,可用来连接,例如: “ABCD EFGHIGK.”,1.2 常量,符号常量 在C+中,也可以用一个标识符来代替一个常量。例如: 例Ex_PI1 用#define定
13、义符号常量 #include #define PI 3.14159 void main() double r = 100.0, area; area = PI * r * r; cout圆的面积是:area n; 程序中用#define命令行定义PI,使其代替常量3.141593,此后凡是在程序中出现的PI都代表3.14159,可以和常量一样进行运算。 在C+中,除了用#define定义符号常量外,C+还常常用const定义的变量来代替#define定义的符号常量。,1.2.2 常量,例Ex_PI2 用const定义的变量代替符号常量 #include const double PI = 3.
14、14159; void main() double r = 100.0, area; area = PI * r * r; cout圆的面积是:area n; 与例Ex_PI1相比,程序代码几乎一样,不同的地方是第二行中的const和例 Ex_PI1中的#define不一样。,1.2.3 变量,变量是指在程序执行中其值可以改变的量。 变量有3个基本要素:C+合法的变量名、变量类型和变量的数值。 1. 变量的定义 一般格式语句进行定义的(凡格式中出现的尖括号“”,表示 括号中的内容是必需指定,若为方括号“”,则括号中的内容是可选的,本书作 此约定): ; 变量名和数据类型是告诉编译器要为其分配多
15、少内存空间,以及变量中要存取的 是什么类型的数据。例如: int nNum1; int nNum2; int nNum3; double x; 这样,nNum1、nNum2、nNum3分别占用4个字节的存储空间,其存取的数据 类型是int型,称之为“整型变量”,而x则占用8个字节的存储空间,存取的数据类 型是double型,称之为“双精度实型变量”。有时,为使代码简洁,还可以将同类 型的变量定义在一行语句中,不过同类型的变量名要用逗号(,)分隔。,1.2.3 变量,2. 变量的初始化 程序中常需要对一些变量预先设置初值,即将初值存储在变量名所代表的内存空 间,这一过程称为初始化。在C+中,变量
16、初始化是在定义变量时同时赋初值。 例如: int nNum1 = 3;/ 指定nNum1为整型变量,初值为3 double x = 1.28;/ 指定x为双精度实变量,初值为1.28 char c = G;/ 指定c为字符变量,初值为G 也可以在多个变量的定义语句中单独对某个变量初始化,如: int nNum1, nNum2 = 3, nNum3; 变量的初始化还有另外一种形式,例如: int nX(1), nY(3); 表示nX和nY是整型变量,它们的初值分别为1和3。 。,1.2.4 基本输入、输出,1. 输出流(cout) 通过cout可以输出一个整数、实数、字符及字符串,cout中的插
17、入符“ void main() coutABCDt1234tendl; 执行该程序,结果如下: ABCD 1234 程序中“t”是制表符(见表1.2),它将后面的1234在水平的下一个制表位置输出。 endl是C+中控制输出流的一个操作算子(预定义的对象),它的作用和n等价, 都是结束当前行,并将屏幕输出的光标移至下一行。,1.2.4 基本输入、输出,实际上,为了更好地调整输出格式,有时还可以使用下面的输出函数。 (1) width()函数。width()函数有两种格式: int width(); int width(int); 第一种格式用来获取当前输出数据时的宽度,另一种格式是用来设置当前
18、输出数据时的宽度。 (2) precision()函数。与width()相似,precision()也有两种格式: int precision(); int precision(int); (3) fill()函数。fill()函数也有下列两种格式,这两种格式分别用来获取和设置当前宽度内的填充字符,第二种格式函数还将返回设置前的填充字符。 char fill(); char fill(char);,1.2.4 基本输入、输出,下面通过一个例子说明上述格式输出函数的用法。 例Ex_CoutFrm cout的格式输出 #include void main() intnNum = 1234; dou
19、blefNum = 12.3456789; cout1234567890endl; cout.width(10); coutnNumn; cout.width(10); coutfNumendl; coutcout.precision(4)endl; coutfNumendl; cout.fill(#); cout.width(10); coutfNumendl; 执行该程序,结果如下:,1.2.4 基本输入、输出,2.输入流(cin) cin可以获得多个键盘的输入值,它具有下列格式: cin . 其中,提取符“”可以连续写多个,每个后面跟一个表达式,该表达式通常是获 得输入值的变量或对象。例
20、如: int nNum1, nNum2, nNum3; cinnNum1nNum2nNum3; 要求用户从键盘上输入三个整数。输入时,必须在3个数值之间加上一些空格来 分隔,空格的个数不限,最后用回车键结束输入(书中出现的“”表示输入一个回 车键,特此约定);或者在每个数值之后按回车键。例如,上述输入语句执行 时,用户可以输入: 12920 或 12 9 20,1.2.4 基本输入、输出,3.格式算子 格式算子oct、dec和hex能分别将输入或输出的数值转换成oct、dec和hex 八进制、十进制及十六进制,例如: 例Ex_Algorism 格式算子的使用 #include void mai
21、n() int nNum; couthexnNum; coutOcttoctnNumendl; coutDectdecnNumendl; coutHexthexnNumendl; 程序执行时,结果如下:,1.3.1 算术运算符,算术运算符包括双目的加减乘除四则运算符、求余运算符以及单目的正负运算 符。C+中没有幂运算符,幂运算符是通过函数来实现的。算术运算符如下所 示: +(正号运算符,如+4,+1.23等) -(负号运算符,如-4,-1.23等) *(乘法运算符,如6*8,1.4*3.56等) /(除法运算符,如6/8,1.4/3.56等) %(模运算符或求余运算符,如40%11等) +(加
22、法运算符,如6+8,1.4+3.56等) -(减法运算符,如6-8,1.4-3.56等),1.3.1 算术运算符,(5) 溢出处理 在C+中,当某数除以0或当其它溢出时,编译系统将报告错误并终止程序运行。但 对整数溢出,系统却不认为是一个错误,这在编程时需要特别小心。例如: 例Ex_OverFlow 一个整型溢出的例子 #include void main() short nTotal, nNum1, nNum2; nNum1 = nNum2 = 1000; nTotal = nNum1*nNum2; coutnTotaln; 程序运行的结果是16960,1.3.2 赋值运算符,1. 复合赋值
23、 在C+语言中,规定了10种复合赋值运算符: +=,-=,*=,/=,%=,=,|=,=,= 它们都是在赋值符“=”之前加上其它运算符而构成的,其中的算术复合赋值运算 符的含义如表1.3所示。,表1.3 复合赋值运算符,1.3.2 赋值运算符,1. 复合赋值 复合运算符的优先级和赋值符的优先级一样,在C+的所有运算符中只高于逗号 运算符,而且复合赋值运算符的结合性也是从右至左的,所以在组成复杂的表达 式时要特别小心。例如: a *= b - 4/c + d; 等效于 a = a * ( b - 4/c + d); 而不等效于 a = a * b - 4/c + d;,1.3.2 赋值运算符,2
24、.多重赋值 所谓多重赋值是指在一个赋值表达式中出现两个或更多的赋值符(“=”),例如: nNum1 = nNum2 = nNum3 = 100; 由于赋值符的结合性是从右至左的,因此上述的赋值是这样的过程:首先对赋值 表达式nNum3 = 100求值,即将100赋值给nNum3,同时该赋值表达式取得值 100;然后将该值赋给nNum2,这是第二个赋值表达式,该赋值表达式也取得值 100;最后将100赋给nNum1。 由于赋值是一个表达式,所以它几乎可以出现在程序的任何地方,例如: a = 7 + (b = 8)(赋值表达式值为15,a值为15,b值为8) a = (c = 7) + ( b=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualC实用教学教程(第3版) visualc 实用 教学 教程 教案 整编
限制150内