第一章C基础知识.ppt

上传人:本田雅阁 文档编号:3453949 上传时间:2019-08-27 格式:PPT 页数:62 大小:1.50MB
返回 下载 相关 举报
第一章C基础知识.ppt_第1页
第1页 / 共62页
第一章C基础知识.ppt_第2页
第2页 / 共62页
第一章C基础知识.ppt_第3页
第3页 / 共62页
第一章C基础知识.ppt_第4页
第4页 / 共62页
第一章C基础知识.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《第一章C基础知识.ppt》由会员分享,可在线阅读,更多相关《第一章C基础知识.ppt(62页珍藏版)》请在三一文库上搜索。

1、,Adobe photoshop,Adobe Acrobat,Maya,Java虚拟机内核,Google: 网络搜索引擎,JPL (Jet Propulsion Lab, NASA): 火星探测器自动驱动系统 (包括场景分析和路线预测)以及很多地面支持软件。,C+,运行速度快,功能强大,类库需要手动选择, 编译型跨平台 JAVA 运行速度缓慢,需要虚拟机环境,完全跨平 台,类库丰富,功能中庸,无法进行底层的高级操 作 C#,运行速度中等,需要虚拟机环境,即将跨平台, 类库丰富,功能与略比JAVA多,主要是能与操作系 统底层交互,Java和C#正在不断蚕食着C+的地盘。也许Java和C#的狂潮终

2、将迫使C+回归本位 回到它有着根本性优势的开发领域: 低级系统程序设计、高级大规模高性能应用设计、嵌入式程序设计、通用程序设计以及数值科学计算等。,教材 Visual c+面向对象与可视化程序设计 课程内容 第一篇基础知识 第一章 Visual c+2008简介 第二章 c+ 基础知识 第三篇 MFC开发 第八章 MFC基础知识 第九章 Windows标准控件在可视化编程中的应用 第十章 在MFC中创建应用程序的资源 第四篇 综合应用举例 第十三章 数据库应用程序的开发,学时安排 理论 40 上机16 学习方法 学习过程中注重实践环节 每个例题都需要自己动手编写程序 每章的实验任务必须完成 尽

3、可能多做习题 考核方式 考试70% 平时+实验 30%,学习编程的秘诀是:编程,编程,再编程; C+语言和C+的集成开发环境要同时学习和掌握 。 从开始养成良好的编程习惯。 代码排版清晰,容易阅读 变量命名规范 编写C+风格的程序,编写C+风格的程序 1)严格采用阶梯层次组织代码 2)对变量定义尽量位于开始位置 3)命名规则 指针变量基本原则为: “p”+变量类型前缀+命名 如 float *型应该表示为pfStat 静态变量用s_开头 成员变量用m_开头 对枚举类型(enum)中变量要求用枚举变量或其缩写做前缀并且要求用大写,参考文献 1、钱能主编,C+程序设计教程,清华大学出版社 2、面向

4、对象的程序设计语言C+ 陈志泊等编 人民邮电出版社 3、http:/ 孙鑫 vc+从入门到精通开发详解视频教程,答疑: 联系方式: E栋322办公室,第一章 c+ 基础知识,美国AT&T贝尔实验室的Bjarne Stroustrup博士在20世纪80年代初期发明并实现了C+,1.1 C+语言的发展历程,C+3.0,C+1.0,带类的C,89年,增加类的多继承,91年增加模板,增加异常处理、名字空间、运行时类型识别,97年,成为标准,C+语言发展大概可以分为三个阶段:,第一阶段 80年代到1995年 这一阶段C+语言基本上是传统类型上的面向对象语言, 并且凭借着接近C语言的效率,在工业界使用的开

5、发语言 中占据了相当大份额;,第二阶段 1995年到2000年 这一阶段由于标准模板库(STL)和后来的Boost等程序库 的出现,泛型程序设计在C+中占据了越来越多的比重 性。当然,同时由于Java、C#等语言的出现和硬件价格 的大规模下降,C+受到了一定的冲击;,第三阶段 2000年至今 由于以Loki、MPL等程序库为代表模板元编程的出现,C+ 出现了发展历史上又一个新的高峰,这些新技术的出现以及 和原有技术的融合,使C+已经成为当今主流程序设计语言 中最复杂的一员。,1.2一个简单C+程序 1、控制台应用程序,例 求从键盘上输入的两个浮点数的和。 #include #include u

6、sing namespace std; void main() double x,y; cout“Enter two double number:“;,cinxy; double z=x+y; cout“x+y=“zendl; 执行该程序,屏幕上出现如下提示信息: Enter two double number:3.456 71.3 运行结果为: x+y=74.7,1)预处理命令#include 预处理命令是包含命令,其功能是把一个文本文件的内容包含到该命令处。上述程序以#打头,表明该行是一个预处理命令;是命令的参数,它指出了要包含的那个文件的文件名是iostream。,2)头文件 以.h作为

7、扩展名,包含有对象和函数说明的文件称为头文件。在上述程序中,用C+流完成输入、输出的操作,其中,cout是输出流对象,cin是输入流对象;和endl都是特殊函数。这些对象和函数是系统提供的,但必须先说明后使用,它们的说明就在系统提供的头文件iostream.h中。,3)stdafx Stdafx:standard Application Framework Extensions 标准应用程序框架的扩展 没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。,4)using namespace std std 是一个命名空间。不同的命名空间可以有相同的类名被定义

8、。 比如A B两个班都有叫张三的人,你要使用A班的张三,必然要先指名是A班这个名字空间(namespace),然后你对张三的所有命令才能达到你的预想,不会叫错人 所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙。,5)输入和输出 程序要求用户提供信息的过程称为程序的输入。程序向用户发出一些信息的过程称为程序的输出。 C+程序的输入操作是由系统提供的标准输入流对象cin来完成的。 C+的输出操作是由系统提供的标准输出流对象cout来完成的。,cin与cout说明 用来取代scanf和printf,更安全、更方便。,1 格式控制符与输出数据的类型不一致 2 sca

9、nf()的第二个参数应是一个指针参数,以上错误C编译器不能检查出来。,#include void main() int i; float f; scanf(“%f”,i); printf(“%d”,f); ,#include using namespace std; void main() int i; float f; cini; coutf; ,cin中运算符“”在C+中仍保持C中“右移”功能,但用于输入时扩充了其功能,表示将从标准输入流(键盘)读取的数值传送给右方指定的变量。 如:cinx; /键盘输入的数据自动转换为变量X的类型,并存入变量X内。 可以连续输,如cinabc;不用顾忌类

10、型。 它按书写顺序从键盘上提取所要求的数据,并存入对应的变量中。 用cin输入时,要注意使用间隔符 (空格、回车、Tab键)。,cout中运算符“”在C+中保持C中“左移”功能,表示将右方变量的值写到标准输出流cout(即屏幕)中。 “”允许用户连续输出一串数据或表达式。 可以使用格式控制(与C兼容),默认的转换基数是十进制。 如:dec(十进制), hex(十六进制), oct(八进制), endl, t, n等。,#include using namespace std; void main() int x=25; couthexx“ “decx“ “octxn; 输出结果:19 25 3

11、1,2、Windows应用程序,void Ca7Dlg:OnBnClickedButton1() MessageBox(L“dfdf“); / TODO: 在此添加控件通知处理程序代码 ,基本整型 (int) 短整型 (short) 整型 长整型 (long) 无符号型 (unsigned) 基本类型 单精度型 (float) 实型(浮点型) 双精度型 (double) 字符型 (char) 扩展双精度型 (long double) 数据类型 布尔型 (bool) 空类型 (void) 数组类型 ( ) 指针类型 (*) 构造类型 结构体类型 (struct) 共用体类型 (union) 枚举

12、型 (enum) 类 (class),1.3 C+数据类型,C+中用typedef声明一个新的类型名来代替已有的类型名。如 typedef int INTEGER; /指定用标识符INTEGER代表int类型 typedef float REAL; /指定用REAL代表float类型 这样,以下两行等价: int i,j; float a,b; INTEGER i,j; REAL a,b; 如果在一个程序中,整型变量是专门用来计数的,可以用COUNT来作为整型类型名: typedef int COUNT; /指定用COUNT代表int型 COUNT i,j;,说明:1)用typedef声明类型

13、,也可以声明结构体类型: typedef struct int month; int day; int year; DATE; /注意DATE是新类型名,而不是结构体变量名 用DATE定义变量: DATE birthday; DATE *p; /p为指向此结构体类型数据的指针,2)sizeof 函数,用于计算某种数据类型的长度,返回值为字节数。 如 cout“int 的长度:”sizeof(int)endl; cout“double的长度”sizeof(double)endl,常量:在程序运行期间其值不能被修改,在定义时必须初始化 严格来说,常量又分成符号常量和常数。 符号常量: 代表一个固定

14、不变值的名字 常数(整型和浮点型): 程序中使用的具体的数据,1.4 常量及其定义,符号常量 C+中提供了一个关键字const,用来区分常量和变量。并且由于常量代表一个固定的值,并且该值在程序运行过程中不能够被改变,所以要求常量在定义的时候必须进行初始化。 定义形式有: const 数据类型 符号常量名=初始值; 例如:const double PI=3.1415926;,注意: const double PI; PI=3.1415926; /error const double PI=; /error const int M=max(15,23); /error #define 符号常量名

15、初始值 例如:#define PI 3.1415926,1.5 变量,在C+中,变量是存储信息的地方。变量的实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。 注意: 1)大小写区分 2)命名习惯 3)与C语言不同,C+语言中的变量定义不必位于程序的开始,可以穿插在其它语句中间。,f ( ) int i; i=10; int j; j=25; / ,1.6 引用,引用是别名 建立引用时,程序用另一个变量或对象(目标)的名字初始化它 引用作为目标的别名而使用,对引用的改动实际是对目标的改动 引用的声明形式为 &引用名=目标名 或 & 引用名=目标名,引用型变量的名字,必须遵循

16、变量的命名规则,例如,引用一个整型变量: int someInt; int 声明rInt是对整数的引用,初始化为引用someInt。 注意:在这里,要求someInt已经声明或定义。 引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变。 引用在声明时必须初始化。,someInt:6 rInt:6 someInt:7 rInt:7,例 如何建立和使用引用,输出结果,#include using namespace std; void main() int someInt; /定义变量 int ,#include “stdafx.h“ #include using namespace s

17、td; int main( ) int a=2568; int *pt; int ,1)选择结构,C+语言支持下列基本的条件语句: if语句 if else语句 if else if语句 ?条件语句 可简化条件表达式的表达形式,语法为: expression1? Expression2:expression3,if (expression1) statement1; else statement2;,1.7 c+控制结构,switch语句,多次判断选择 判断的是同一个表达式的值,switch(表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句

18、n default: 语句n+1 ,只能是整型、字符型和枚举型,值不能相同,且次序不影响执行结果,每个case分支可以有多条语句,但不用,#include #include using namespace std; int main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+;break; case 1:b+;break; case 2: a+;b+;break; case 3:a+;b+; /printf(“a=%d,b=%dn”,a,b); cout“a=“a“tb=“b; ,while循环(特别适合处理字符串

19、和其他指针类型) do while循环 for循环(通常用于具有固定长度的数据结构),do statement; while(expression);,for(expression1;expression2; expression3) statement; ,注意:对于while语句或for语句,循环体中的语句只有在 while或for语句中的条件为真时,才会被执行;而dowhile语句则总能保证循环体被执行一次。,while(expression) statement; ,2) 循环结构,int sum = 0; for(int i=1; i=100; i+) sum = sum+i; co

20、utsumendl;,3) 其他控制语句,1break语句 只用于switch语句或循环体中,作用是使程序从switch语句内跳出或结束循环,继续执行逻辑上的下一条语句。 2continue语句 仅用于循环体中,作用是结束本次循环,接着开始判断循环条件,决定是否继续执行下一次循环。,int max(int x,int y) int z=xy?x:y; return (z); ,形式参数,必须分别列出每个参数的类型,结束函数的执行,返回到调用处,函数的返回值,必须与函数类型一致,形式参数是调用该函数时需要函数处理的数据。 返回值是函数调用完后回应给调用者的结果。,函数名,函数返回值类型,若为in

21、t可省略,1.8函数,1、函数定义,2、函数调用,函数的功能是通过在程序中对其调用来实现的。 调用一个函数,就是把控制权转去执行该函数的函数体,函数体执行完之后,再将控制权转到调用函数处。 无参函数的调用格式一般为: 函数名( ) 有参函数的调用格式一般为: 函数名() 中的参数称为实际参数或实参。,#include /函数定义 void main(void) int a,b,c; cinab; c=max(a,b); prn(); coutcendl; ,执行过程:,main函数,调用函数max,调用函数prn,max函数,函数体,prn函数,函数体,函数调用的使用方式如下: (1) 对于有

22、返回值的函数,调用出现在表达式中。 (2) 对于没有返回值的函数,函数调用只能通过函数调用语句实现。,函数调用方式: 赋值 如:c=max(a,b); 表达式中 c=1+max(x,y); coutmax(x,y); 执行函数 prn();,例 编写程序求的值,其中arctan用如下形式的级数计算: 直到级数某项绝对值不大于10-15为止;和x均为double型。,#include using namespace std; int main() double a,b; double arctan(double x);/函数原型声明 a=16.0*arctan(1/5.0); b=4.0*arc

23、tan(1/239.0); /注意:因为整数相除结果取整, /如果参数写1/5,1/239,结果就都是0 cout“PI=“a-bendl; ,double arctan(double x) int i; double r,e,f,sqr; sqr=x*x; r=0; e=x; i=1; while(e/i1e-15) f=e/i; r=(i%4=1)? r+f : r-f; e=e*sqr; i+=2; return r; ,3、函数声明,如果函数调用的位置在函数定义之前,C+强制要求在函数调用之前必须对所调用的函数作函数原型声明。 函数声明的一般形式: 函数类型 函数名(参数表); 如:i

24、nt max ( int x, int y ) ; int max ( int , int ) ;,4、函数重载,C语言编程时,有时几个不同名的函数实现的是同一类的操作。例如:求三个数中最大值,数据类型未知。需要设计三个函数: int max1 ( int a, int b, int c ); float max2 ( float a, float b, float c ); long max3 ( long a, long b, long c ); C语言规定在同一作用域中不能有同名的函数。 C+语言允许同一作用域中有同名的函数来实现不同功能,参数个数和类型不同,此即函数的重载。,int m

25、ain() int a=3,b=1,c=4; float d=3.1, e=6.2, f=4.9; long g=69242; long h=-13, i=78241; coutmax(a,b,c)endl; coutmax(d,e,f)endl; coutmax(g,h,i)endl; return 0; ,例 求3个数的最大值。,#include using namespace std; int max(int a,int b,int c) if(ba) a=b; if(ca) a=c; return(a); ,float max(float a, float b, float c) if

26、(ba) a=b; if(ca) a=c; return(a); ,long max(long a, long b, long c) if(ba) a=b; if(ca) a=c; return(a); ,5、函数的参数传递-用引用做形参,#include using namespace std; void Swap(int,Swap(x,y);,57,6、内联函数,频繁使用某函数时,在编译时将所调用函数的代码嵌入到主函数中,此函数为内置函数(内联函数)。 要求 函数定义前加关键字inline。 函数体内含循环,switch和复杂的if嵌套语句不要使用。 关键字inline 必须与函数定义体放

27、在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。 只适用于规模很小而使用频繁的函数,例 内联函数应用举例,#include using namespace std; inline double CalArea(double radius) return 3.14*radius*radius; int main() double r(3.0); double area; area=CalArea(r); coutareaendl; return 0; ,7、 有默认参数的函数,函数在声明时可以预先给出默认的形参值,调用时如给出实参,则采用实参值,否则采用预先给出的默认形

28、参值。 例如: int add(int x=5,int y=6) return x+y; int main() add(10,20); add(10); add(); ,注意: 1)默认形参值必须从右向左顺序声明,并且在默认形参值的右面不能有非默认形参值的参数。 例: int add(int x,int y=5,int z=6);/正确 int add(int x=1,int y=5,int z);/错误 int add(int x=1,int y,int z=6);/错误,2)调用出现在函数体实现之前时,默认形参值必须在函数原形中给出;而当调用出现在函数体实现之后时,默认形参值需在函数实现时给出。 例:,int add(int x=5,int y=6); int main() add(); /调用在实现前 int add(int x,int y) return x+y; ,int add(int x=5,int y=6) return x+y; int main() add(); /调用在实现后 ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1