C++程序设计程序设计-2课程目标进一步掌握程序设计,包括过程化程序设计和面向对象的程序设计掌握C++语言了解常用的算法及算法设计过程程序设计-3期末成绩的组成期末考试:50%平时作业:20%上机考试:30%程序设计-4教材及参考教材C++程序设计思想与方法(第2版)人民邮电出版社翁惠玉C++程序设计实验指导孟桂娥上海交大出版社C程序设计(第3版)谭浩强C++大学教程(第5版)电子工业出版社程序设计-5作业的相关规定及注意事项本学期将布置若干个作业,在课后独立完成作业环境:VC6.0、VC2008、VC2010助教每周一晚上6:00-9:00,地点:电院4号楼208机房。(从第2周到第16周)答疑作业要求:必须独立、按时地完成每次上机作业每次上机作业的具体要求参见每次作业的文档说明程序设计-6作业命名规则1.使用WinRAR软件将上机作业(包括工程文件、资源文件、源文件和头文件等)的多个文件直接压缩为一个压缩文件,该压缩文件必须命名为:”学号_作业号.rar”。2.若一次作业中包含多个小题,则每个小题应分别放入一个单独文件夹,多个文件夹直接压缩为一个压缩文件。其中,每个小题的文件夹应命名为:”学号_作业号_题号”;3.作业中应该不包括Debug文件夹以及某些声音、图像文件4.命名规则示例:以学号为5030309999,第四次作业(第四次作业中含有两个独立的小作业)为例:两个小作业的文件夹名字应为:5030309999_4_1和5030309999_4_2压缩文件名应为:5030309999_4.rar程序设计-7评分标准每次作业内容上课时发布,同时发布“完成截止日期”和提交地址,在“截止日期”后,将停止该次作业批改。一经发现作业抄袭情况,无论任何原因,抄袭者与被抄袭者的当次作业一律记为0分程序设计-8第二章通过例子学习第一个程序第二个程序变量定义数据类型符号常量算术表达式赋值表达式自增自减运算符强制类型转换数据的输入输出程序设计-9C++程序的基本组成基本的C++程序结构//File:hello.cpp//thisprogramprintsthemessage//“helloeveryone”onthescreen#includeiostreamintmain(){std::cout“helloeveryone”std::endl;return0;}程序注释预处理命令主程序程序设计-10注释C++的注释是从//开始到本行结束,也可以采用C风格的注释,即从/*与*/之间所有的文字都是注释,可以是连续的几行。注释是写给人看的,而不是写给计算机的。程序注释:从整体描述程序操作过程注释也可以出现在主程序中,解释主程序中一些比较难理解的部分。给程序添加注释是良好的程序设计风格程序设计-11C程序的基本组成基本的C程序结构//File:hello.cpp//thisprogramprintsthemessage//“helloeveryone”onthescreen#includeiostreamintmain(){std::cout“helloeveryone”std::endl;return0;}程序注释预处理命令主程序程序设计-12编译预处理C++的编译分成两个阶段:预编译和编译预编译处理程序中的预编译命令,即那些以#开头的指令编译预处理主要有:库包含:用#include实现,表示程序使用了某个库宏定义:用#define实现。宏包括不带参数的宏和带参数的宏。不带参数的宏通常用来定义符号常量。带参数的宏用来定义一些较为复杂的操作。程序设计-13库包含的格式库是预先做好的一些工具程序。每个库要提供一个接口,告诉库的用户如何使用库提供的功能。库包含就是把库的接口文件放入源文件,以便编译器检查程序中对库的调用是否正确。库包含格式:#includefilename:包含了一个系统库#include“filename”:包含了一个用户自定义的库程序设计-14宏定义不带参数的宏定义通常用于为程序中的常量取一个名字,称为符号常量。格式:#define标识符替换文本如:#defineRADIUS5#definePI3.14159#defineAREAPI*RADIUS*RADIUS用define定义宏是C语言的习惯,在C++中有更好的解决方案程序设计-15使用符号常量的好处含义清楚,提高了程序的可读性。在需要改变一个常量时能做到“一改全改”程序设计-16C程序的基本组成基本的C程序结构//File:hello.cpp//thisprogramprintsthemessage//“helloeveryone”onthescreen#includeiostreamintmain(){std::cout“helloeveryone”std::endl;return0;}程序注释预处理命令主程序程序设计-17主程序主程序由一个或多个函数组成每个程序都必须有一个名为main的函数,它是程序的入口。程序设计-18函数的构成intmain()函数头{std::cout“helloeveryone”std::endl;return0;}函数体与PYTHON不同,C++的函数体必须用一对花括号括起来。事实上,PYTHON中所有必须缩进的语句,在C++中都必须用花括号括起来。程序设计-19输出流对象std::cout“流”指的是设备之间传递的数据流输出流是传给输出设备的数据流cout代表显示器格式将hello显示在屏幕上:std::cout“hello”std::cout“hello,everyone”std::endlstd::endl表示换行程序设计-20名字空间在大型的程序时,每个源文件可能由不同的开发者开发。不同的源文件中可能有同样的名字。当这些源文件连接起来形成一个可执行文件时,就会造成重名。名字空间是把一组程序实体组合在一起,构成的一个作用域。一个名字空间中不能有重名,不同的名字空间中可以定义相同的实体名。当引用某个实体时,需要加上名字空间的限定程序中的std是C++中所有标准库的名字空间名。程序设计-21使用名字空间的指令格式:usingnamespace名字空间名;一旦用了使用名字空间的指令,该名字空间中的所有的实体在引用时就不需要再加名字空间的限定了。第一个程序可以改写为:程序设计-22//file:hello.cpp//Thisprogramprintsthemessage“Helloworld.”//Onthescreen#includeiostreamusingnamespacestd;intmain(){cout“Helloworld.”endl;return0;}程序设计-23第二章通过例子学习第一个程序第二个程序变量定义数据类型符号常量算术表达式赋值表达式自增自减运算符强制类型转换数据的输入输出程序设计-24计算园的面积和周长//file:circle.cpp//该程序用于计算园的面积和周长#definePI3.14159//定义符号常量#includeiostreamusingnamespacestd;intmain(){doubleradius,area,circum;cout请输入圆的半径:;cinradius;area=PI*radius*radius;circum=2*PI*radius;coutendl;cout园的面积为:areaendl;cout园的周长为:circumendl;return0;}变量定义输入阶段计算阶段输出阶段程序设计-25程序的组成变量定义:C++中的变量在使用前都必须被定义。变量定义严格指出变量中可以存放的数据类型。输入阶段:获取执行时才能确定的用户数据。输入过程一般包括两步:显示提示信息读取数据计算阶段:由输入推导出输出的过程。通常通过各种计算得到。输出阶段:显示程序执行的结果程序设计-26第二章通过例子学习第一个程序第二个程序变量定义数据类型符号常量算术表达式赋值表达式自增自减运算符强制类型转换数据的输入输出程序设计-27变量定义变量,也称为对象,是数据的存放之处变量有三个重要属性:名称、值、类型。变量定义就是告诉编译器变量的名字及该变量中可以存放哪一类数据类型的值C++中变量定义的格式:类型名变量名1,变量名2,…,变量名n;如:intnum1,num2;doublearea;在C++中,每个变量在使用前必须被定义,以便编译器检查变量使用的合法性。程序设计-28变量命名名字必须以字母或下划线开头。C++语言中,名字中出现的大写和小写字母被看作是不同的字符,因此ABC,Abc,abc是三个独立的变量名。名字中的其它字符必须是字母、数字或下划线,不得使用空格或其它特殊符号名字不可以是系统的保留词,如:int,double,for,return等,它们在C++语言中有特殊用途C++没有规定过名字的长度,但各个编译系统都有自己规定。名字应使读者易于明白其存储的值是什么,做到“见名知意”。程序设计-29第二章通过例子学习第一个程序第二个程序变量定义数据类型符号常量算术表达式赋值表达式自增自减运算符强制类型转换数据的输入输出程序设计-30数据类型整型实型字符型布尔型枚举类型变量赋初值了解占用的内存量程序设计-31数据类型—整型整型数的表示范围:由各个编译器指定。整型数有三种存储方式,在VC中占用的空间如下所示基本型int:4byte(PC)–231~(231-1)长整型long:long/longint4byte(PC)–231~(231-1)短整型short:2byte(PC)-215~(215-1)允许的操作:算术运算、比较大小等程序设计-32整型数的表示—码制讨论如何将符号位数字化。0表示正数,1表示负数。数字的三种编码方式为:原码反码补码程序设计-33原码用符号位和数值表示带符号数。正数的符号位为0,负数的符号位为1。数值部分用二进制表示。如用一个字节表示数值:[62]原=00111110[-62]原=10111110程序设计-34反码正数的反码与原码相同,负数的反码为该数的绝对值的原码取反。如:[62]反=00111110[-62]反=11000001程序设计-35补码正数的补码与原码相同,负数的补码为该数的反码加1。如:[62]补=00111110[-62]补=11000010大多数计算机系统都用补码表示整数程序设计-36整数的内部表示整数在计算机内部通常用补码表示,在VC中也是如此。整数运算时要注意数据的表示范围。如整数用两个字节表示时,正整数32767加1的结果为-32768。这称为整数运算的溢出,系统不检查这样的错误,程序员必须自己保证程序中不出现这样的错误。程序设计-37无符号整数在某些应用中,不可能出现负数,则整型数中有一半的数值范围是被浪费的。因此在C/C++中可以将所有的数都看成正整数,称为无符号数无符号数的定义:在各种整数类型前加上关键词unsigned,变成unsignedint,unsignedshort,unsignedlongunsignedint0~232-1unsignedshort0~65535unsignedlong0~232-1程序设计-38整型常量整型常量可用十进制、八进制和十六进制表示十进制:123,-234八进制:0123十六进制:0x123,0x3a2f一旦定义了一个整型变量,可以将一个整型常量赋给该整型变量。如inta;a=123;或a=0x123;都是正确的程序设计-39数据类型整型实型字符型布尔型枚举类型变量赋初值了解占用的内存量程序设计-40数据类型—浮点数VC中,实型数以浮点形式表示一个浮点数分成尾数和阶码两部分。阶码表示小数点