1、信息技术学院软件教研室1第二章第二章 C+语言概述语言概述信息技术学院软件教研室2 了解和熟悉了解和熟悉C+开发环境,掌握开发环境,掌握C+程序的基本结构程序的基本结构及其词法成分及其词法成分。C+程序的基本结构,程序的基本结构,C+字符集和字符集和单词,常用的库函数。单词,常用的库函数。讲授与上机相结合。讲授与上机相结合。信息技术学院软件教研室32.1 2.1 一个简单的一个简单的 C+C+程序程序2.2 C+2.2 C+字符集字符集2.3 C+单词单词2.4 C+语句语句2.5 C+的函数的函数2.6 C+程序基本结构程序基本结构2.7 VC+6.0集成开发环境集成开发环境作业作业【教学内
2、容】【教学内容】信息技术学院软件教研室42.12.1一个简单的一个简单的 C+C+程序程序#include /#include /进行标准进行标准I/OI/O操作引入头文件操作引入头文件void main()/void main()/主函数主函数 cout“Welcome to C+!”endl;/*输出一个字符串,输输出一个字符串,输 出一个换行符出一个换行符,并刷新流并刷新流*/刷新流是指把流缓冲区的内容立即写入到对刷新流是指把流缓冲区的内容立即写入到对应的物理设备上。(应的物理设备上。(p345)信息技术学院软件教研室52.2 C+字符集字符集n 用程序设计语言所写的程序必须符用程序设计
3、语言所写的程序必须符合相应语言的语法合相应语言的语法 n源程序源程序(源代码)是一个(源代码)是一个字符序列字符序列,这些字,这些字符序列按顺序组成了一系列符序列按顺序组成了一系列“单词单词”,“单单词词”的组合就形成了语言有意义的的组合就形成了语言有意义的语法单位语法单位,一些简单语法单位的组合又形成了更复杂的一些简单语法单位的组合又形成了更复杂的语法单位,最后一系列语法单位组合成语法单位,最后一系列语法单位组合成程序程序。信息技术学院软件教研室6 C+语言的字符集和语言的字符集和C的字符集相同。的字符集相同。1.大小写英文字母大小写英文字母A-Z和和a-z;2.数字字符数字字符0-9;3.
4、其他字符其他字符 p25标点符号标点符号(10个)个),;(简单语句的结束符简单语句的结束符)”:空格空格 ,回车符回车符 制表符制表符单字符运算符单字符运算符(19个)个)()+-*/%.!&|?特殊用途符号(特殊用途符号(3个)个)#_ (汉字、全角西文字符等,可在汉字、全角西文字符等,可在C+字符串中使用,但不属于字符串中使用,但不属于C+字符字符)2.2 C+字符集字符集信息技术学院软件教研室72.3 C+单词单词:C+系统预定义的单词,在系统系统预定义的单词,在系统中有不同的使用目的。中有不同的使用目的。C语言有语言有32个关键字个关键字P26#开头的预处理命令中,其命令关键字不算做
5、开头的预处理命令中,其命令关键字不算做C+保留字,但为了避免混乱,可看作为保留字。保留字,但为了避免混乱,可看作为保留字。这些命令关键字有这些命令关键字有include define ifdef ifndef endif等。等。信息技术学院软件教研室8nC+规定:规定:n 标识符是由大小写字母、数字字符和下划线标识符是由大小写字母、数字字符和下划线组成,并以字母或下划线开头。组成,并以字母或下划线开头。n如:正确:如:正确:size,Name_1;n 非法:非法:3x,li-1,la one。n 大小写有区别大小写有区别;Max和和max不同不同n 标识符的长度不受限制;只有前标识符的长度不受
6、限制;只有前32字符有效字符有效n 在实际应用时,尽量使用有意义的标识符,在实际应用时,尽量使用有意义的标识符,不能用系统中已预定义的标识符,如:关键字。不能用系统中已预定义的标识符,如:关键字。信息技术学院软件教研室93.常量常量n 常数(数值常量):常数(数值常量):如如 5,23,-256,2.307等等n逻辑常量:逻辑常量:0和和1(分别用(分别用false和和true表示)表示)n字符常量(单个的字符常量(单个的ASCII字符):字符):如如a,+,5等等n字符串常量(字符串)(由字符串常量(字符串)(由ASCII字符和汉字区位码字符和汉字区位码字符组成的一串字符):字符组成的一串字
7、符):如如5,apple,姓名姓名等等n注意区别:注意区别:a,a,”a”-分别表示:变量标识,分别表示:变量标识,字符常量,字符串字符常量,字符串 信息技术学院软件教研室10是一些用来进行某是一些用来进行某种操作的单词,它实际上是系统预定义的函数名,除包含种操作的单词,它实际上是系统预定义的函数名,除包含C语言的语言的34种运算符外,还增加了一些新的运算符。种运算符外,还增加了一些新的运算符。C+语言的运算符可以重载语言的运算符可以重载 分隔符被称为程序中的标点符号。分隔符被称为程序中的标点符号。1)空格符:用作单词之间的分隔符;)空格符:用作单词之间的分隔符;2)逗号:用作变量之间或对象之
8、间的分隔符;或用作函数的多)逗号:用作变量之间或对象之间的分隔符;或用作函数的多个参数之间的分割;个参数之间的分割;3)分号:用于)分号:用于for循环语句中,作为关键字循环语句中,作为关键字for后面的括号内的后面的括号内的三个表达式之间的分隔符。三个表达式之间的分隔符。for(i=0;i=n;i+)4)冒号:用作语句标号与语句间的分隔符以及)冒号:用作语句标号与语句间的分隔符以及switch语句中语句中case与语句序列之间的分隔符。与语句序列之间的分隔符。P845)大括号:用来为函数体、分支程序等定界的。大括号:用来为函数体、分支程序等定界的。信息技术学院软件教研室11(增加程序的可读性
9、,非执行)(增加程序的可读性,非执行)C+语言中有两种方法:语言中有两种方法:1)使用)使用/*和和*/;段注释;段注释/*This program is first look at a C+class definition.Class areused both in data abstraction and object_oriented programming.*/2)使用)使用/;行注释,内容不能跨行;行注释,内容不能跨行 /This program is first look at a C+classdefinition./Class Are used both in data abs
10、traction and object。信息技术学院软件教研室12 C+语句有以下八类语句有以下八类 类型定义语句:类型定义语句:自定义数据类型。如 struct List ;p218 变量定义语句:变量定义语句:如 int a,b,c;注:变量定义语句前加注:变量定义语句前加const保留字为常量定义语句。保留字为常量定义语句。函数原型语句:函数原型语句:声明函数存在并执行调用格式。void Sort(int a,int b);表达式语句:表达式语句:如 x=3*x+5;Sort(a,n);cout“x=“xn;复合语句复合语句:格式 语句序列;如:如:,;,x=4;,(p29)int x=
11、4,y;x-y=0;选择语句选择语句:根据条件从多个分支中选择其一执行。if,switch 循环语句循环语句:根据条件控制一个程序段反复执行。for,while,do 跳转语句跳转语句:如 goto,return,break,continue 2.4 C+语句语句由由C+单词按照一定的语法规则排列起来构成语句单词按照一定的语法规则排列起来构成语句除复合语句外,语句最后必须以除复合语句外,语句最后必须以“;”结束。结束。信息技术学院软件教研室13 1、,用户直接使用,由系统提供的头文件给出其函数原型。,用户直接使用,由系统提供的头文件给出其函数原型。如如 math.h中有常用数学函数原型。如:中
12、有常用数学函数原型。如:abs()string.h包含对字符串操作的函数原型包含对字符串操作的函数原型 iostream.h包含标准包含标准I/O操作的函数原型。如:操作的函数原型。如:cout,cin 注:从注:从C继承来的以继承来的以h作为扩展名的头文件,在作为扩展名的头文件,在C+中有不带中有不带扩展名的前面加扩展名的前面加c的头文件对应。的头文件对应。C+新建立的、以新建立的、以h为扩展名的头文件,对应的不带扩展为扩展名的头文件,对应的不带扩展名的头文件的文件名保持不变。(这两种文件的作用不完全相同,名的头文件的文件名保持不变。(这两种文件的作用不完全相同,如如iostream.h与与
13、iostream,iostream中有stdio.h函数)2.5 C+的函数的函数C+函数分系统函数和用户函数函数分系统函数和用户函数:信息技术学院软件教研室14 带扩展名为带扩展名为.h的文件的文件,一般为数据类一般为数据类型的定义、常量定义、函数原型说明等。型的定义、常量定义、函数原型说明等。n:预处理包含命令(独占一行,回车预处理包含命令(独占一行,回车符结束)符结束),格式为:格式为:n#include n 在在C系统层次目录系统层次目录lib中查找中查找“头文件头文件”n#include“头文件名头文件名”n 在当前或指定目录,或系统目录中查找在当前或指定目录,或系统目录中查找“头文
14、件头文件”n注:n若包含的头文件是C+新建立的,并不带扩展名,则必须在其后使用一条“using namespace std;”语句。信息技术学院软件教研室15说明:在说明:在#include 预处理包含命令中,预处理包含命令中,还可以用来包含一个程序文件。(还可以用来包含一个程序文件。(p32)#include“程序文件名程序文件名”把程序文件包含到所在的当前程序文把程序文件包含到所在的当前程序文件中,即把文件内容嵌入到此包含命令件中,即把文件内容嵌入到此包含命令的位置。的位置。信息技术学院软件教研室16简单的简单的 C+C+程序举例程序举例#include /#include /进行标准进行
15、标准I/OI/O操作引入头文件操作引入头文件void main()/void main()/主函数主函数 std:std:cout“Welcome to C+!”/cout“Welcome to C+!”/输出一个字符串输出一个字符串 std:std:coutendl;/coutendl;/输出一个换行符输出一个换行符#include#include using namespace std;using namespace std;void main()void main()coutWelcome to C+!endl;coutWelcome to C+!endl;#include void m
16、ain()coutWelcome to C+!endl;信息技术学院软件教研室17程序说明程序说明必须有且只有一个名字为必须有且只有一个名字为main的函数的函数整个程序从函数整个程序从函数main开始执行开始执行std :标准名字空间标准名字空间 C+将将“程序世界程序世界”划分为划分为“名字空间名字空间”,以解决可,以解决可能的命名冲突。能的命名冲突。std:std:cout:coutcout:cout属于标准名字空间属于标准名字空间 using namespace std;using namespace std;告诉编译器,任何对象如果告诉编译器,任何对象如果不带显式的限定符,它就属于标
17、准名字空间。不带显式的限定符,它就属于标准名字空间。信息技术学院软件教研室18 2、。函数类型函数类型 (参数表参数表)函数头函数头函数体函数体信息技术学院软件教研室19程序必须有并且只有一个程序的主函数(程序必须有并且只有一个程序的主函数(main)一般格式:一般格式:void main(void)语句语句 程序运行结果程序运行结果:C+program Press any key to continue#includevoid main(void)coutC+program.endl;信息技术学院软件教研室20n函数原型语句:函数原型语句:一个函数的函数头就是该函数的原型,一个函数的函数头就
18、是该函数的原型,其原型语句可以用函数头后加分号得到。其原型语句可以用函数头后加分号得到。实例:实例:#includeint Add(int x,int y);/Add函数的原型语句void main()int a;a=Add(3,5);/调用Add函数 couta=aendl;int Add(int x,int y)/Add函数的具体定义 int z=x+y;return z;/返回语句,z的值作为函数返回值运行结果:a=8信息技术学院软件教研室212.6 C+程序基本结构程序基本结构#include /#include /预处理包含命令预处理包含命令int big(int x,int y);
19、/int big(int x,int y);/函数原型说明语句函数原型说明语句 void main()void main()/中间为函数体中间为函数体 int a,b,c;/int a,b,c;/定义整型变量定义整型变量 cout“coutab;/cinab;/输入语句输入语句c=big(a,b);/c=big(a,b);/函数调用语句函数调用语句cout“a,b,c=”a,b,cendl;/cout“a,b,c=”a,b,c=y)return x;/if(x=y)return x;/条件语句条件语句 else return y;else return y;Li1_2.cpp信息技术学院软件教
20、研室22C+程序结构说明程序结构说明一个一个C+程序由一个主函数程序由一个主函数main和若干用户函数,以及一些和若干用户函数,以及一些预处理命令行,一些数据类型、符号常量、变量的定义所预处理命令行,一些数据类型、符号常量、变量的定义所组成。其中组成。其中必须有且仅有一个名字为必须有且仅有一个名字为main的函数的函数,整个程,整个程序从函数序从函数main开始执行。开始执行。函数由语句和局部变量或对象构成,函数间可以互相调用函数由语句和局部变量或对象构成,函数间可以互相调用(main除外)。一个函数为一个功能模块。除外)。一个函数为一个功能模块。物理上,一个物理上,一个C+程序可以放在一个或
21、多个源文件中,每个程序可以放在一个或多个源文件中,每个文件包含一些函数和外部变量或对象的定义,其中有且仅文件包含一些函数和外部变量或对象的定义,其中有且仅有一个文件中包含一个函数有一个文件中包含一个函数main。每个源文件可以分别编。每个源文件可以分别编译。文件扩展名为译。文件扩展名为.cpp信息技术学院软件教研室23C+程序结构说明程序结构说明程序第一行为预处理包含命令行,头文件程序第一行为预处理包含命令行,头文件iostream.h,后面,后面函数中可以完成标准输入输出操作。函数中可以完成标准输入输出操作。如果定义函数在调用点之后,在主调函数前面加如果定义函数在调用点之后,在主调函数前面加
22、“函数声函数声明明”语句。如第二行的语句。如第二行的big函数原型说明语句。函数原型说明语句。int big(int x,int y);cin和和cout完成输入输出操作,运算符完成输入输出操作,运算符为提取运算符,用为提取运算符,用于键盘输入;于键盘输入;为插入运算符,用于向显示器输出。为插入运算符,用于向显示器输出。程序执行到程序执行到cin语句时,等待从键盘输入数据,每个数据后语句时,等待从键盘输入数据,每个数据后以空白符(空格、制表符、回车换行符)结束。以空白符(空格、制表符、回车换行符)结束。输入输入a和和b的值:的值:运行结果:运行结果:12 25a,b,c=12,25,25信息技
23、术学院软件教研室242.7 VC+6.0集成开发环境集成开发环境:1.根据实际问题编写程序;根据实际问题编写程序;2.在在VC+下输入、编辑、连接、运行程序下输入、编辑、连接、运行程序 进入进入VC+6.0集成开发环境操作界面集成开发环境操作界面 输入和编辑一个程序文件输入和编辑一个程序文件(.cpp)编译编译(compile)当前程序文件(当前程序文件(.obj)连接连接(build)一个程序中的各程序文件一个程序中的各程序文件(.exe)运行连接后生成的可执行文件运行连接后生成的可执行文件 上机操作实例演示上机操作实例演示:Li1_1.cpp、Li1_2.cpp信息技术学院软件教研室25标
24、题栏菜单栏标准工具栏向导栏微型编译工具栏编辑窗口工作区窗口输出窗口状态栏Visual C+集成开发环境信息技术学院软件教研室26开始结束编辑编译连接执行有错否?有错否?.cpp.obj.exeYYNN流流程程图图信息技术学院软件教研室27输入和编译程序n1、启动VC+n2、建立当前工作区目录n3、定义当前工程项目名 Win32 Console Applicationn4、建立一个内容为空的项目n5、在当前项目中建立程序文件信息技术学院软件教研室281、启动VC+开始程序Microsoft Visual C+6.0信息技术学院软件教研室292、建立当前工作区目录信息技术学院软件教研室303、定义
25、当前工程项目名 Win32 Console Application信息技术学院软件教研室314、建立一个内容为空的项目信息技术学院软件教研室325、在当前项目中建立程序文件信息技术学院软件教研室33:进入:进入VC+操作界面操作界面单击单击文件文件菜单,选择菜单,选择打开打开命令命令在在 打开打开对话框中选择所要打开的文件,然后单击对话框中选择所要打开的文件,然后单击打打开开按钮,被打开的文件显示在操作界面的编辑窗口中按钮,被打开的文件显示在操作界面的编辑窗口中 信息技术学院软件教研室34:单击单击编译编译菜单下的菜单下的Compile 当前文件名当前文件名命令命令弹出对话框要求建立功能区窗口
26、,选择弹出对话框要求建立功能区窗口,选择是是按钮按钮编译状态输出窗口出现提示信息,编译状态输出窗口出现提示信息,生成生成(.obj)文件。文件。单击单击编译编译菜单下的菜单下的Build 当前文件名当前文件名命令命令编译状态输出窗口出现提示信息编译状态输出窗口出现提示信息,生成,生成(.exe)文件。文件。单击单击编译编译菜单下的菜单下的Execute 当前文件名当前文件名命令命令弹出屏幕输出窗口,显示输出的结果弹出屏幕输出窗口,显示输出的结果 信息技术学院软件教研室35注:若编译或连接成功则在调试窗口显示注:若编译或连接成功则在调试窗口显示li1-1.exe-0 error(s),0 war
27、ning(s)否则,显示发生的错误(否则,显示发生的错误(eroor为严重错误,为严重错误,warning为警为警告错误告错误)信息技术学院软件教研室36举例:#include#includeDeclare.hvoid main()int a,b,c;coutabc;cout它们中的最大值:max(a,b,c)endl;cout它们中的最小值:min(a,b,c)endl;coutabc;cout它们中的最大值:max(a,b,c)endl;cout它们中的最小值:min(a,b,c)endl;MaxMin.cpp信息技术学院软件教研室37Func.cppint max(int x,int y
28、,int z)if(xy)x=y;if(xy)x=y;if(xz)x=z;return x;信息技术学院软件教研室38Declare.hint max(int x,int y,int z);int min(int x,int y,int z);信息技术学院软件教研室39作业作业习题二习题二nP48 2,3,4n上机验证上机验证 2.2 信息技术学院软件教研室40参考资料参考资料n入门入门B.Kernighan D.Ritchie,The C Programming Language,Prentice Hall,1998Stanley B.Lippman 著 侯捷 译 Essential C+华中科技大学出版社n中级中级C+PrimerEffictive C+More effictive C+n高级高级Erich Gamma等著 李英军等 译设计模式译设计模式可复用面向对象软件的基可复用面向对象软件的基础础 机械工业出版社