windows界面程序开发第2章C语言基础.ppt
《windows界面程序开发第2章C语言基础.ppt》由会员分享,可在线阅读,更多相关《windows界面程序开发第2章C语言基础.ppt(100页珍藏版)》请在三一办公上搜索。
1、1,第 2 章 C+语言基础,2,2.1 C+概述,C+源于C语言,而C语言是在B语言的基础上发展起来的。1960年出现了一种面向问题的高级语言ALGOL 60。1963年英国剑桥大学推出了CPL(Combined Programming Language)语言,后来经简化为BCPL语言。1970年美国贝尔实验室的K.Thompson以BCPL语言为基础,设计了一种类似于BCPL的语言,取其第一字母B,称为B语言。1972年美国贝尔实验室的Dennis M.Ritchie为克服B语言的诸多不足,在B语言的基础上重新设计了一种语言,取其第二字母C,故称为C语言。1980年贝尔实验室的Bjarne
2、 Stroustrup对C语言进行了扩充,推出了“带类的C”,多次修改后起名为C+。以后又经过不断的改进,发展成为今天的C+。,3,C+是由C扩充而来,因此,除了与C兼容,C+还继承了C的以下特点:丰富的运算符和数据类型、结构化的程序设计方法、高效的机器代码、良好的可移植性。支持面向对象程序设计的方法。C+的错误检查机制强,提供了专门的机制检查类和异常处理功能。C+有很多成熟的编译器:Microsoft Wondows的Visual C+、Inprise的C+Builder、Borland的Borland C+和IBM的VisualAge C+。,2.1.1 C+的主要特点,(),4,C语言程
3、序:#include void main(void)/*这是一个简单的C程序:simple.c*/printf(Hello World!n);/输出字符串,2.1.2 C+程序与C程序,C+语言程序:#include void main(void)/这是一个简单的C+程序:simple.cppcout Hello World!endl;/输出字符串,(),5,(1)C+程序与C程序的结构完全相同。(2)C源程序文件的扩展名为C,C+源程序文件的扩展名为CPP。(3)C注释使用符号“/*”和“*/”,表示符号“/*”和“*/”之间的内容都是注释;C+除了支持这种注释,还提供了一个双斜线“/”注释
4、符,表示“/”之后的本行内容是注释,注释在行尾自动结束。(4)C程序所包含的标准输入、输出的头文件是stdio.h,输入、输出通常通过调用函数来完成;而C+程序可以包含标准输入、输出流的头文件iostream.h,输入、输出可以通过使用标准输入、输出流对象来完成。,C+程序与C程序的比较:,(),6,一个C+程序可以由多个函数构成;每个程序都从主函数main()开始执行,从主函数返回时结束执行;组成程序的语句主要包括声明语句和执行语句:-声明语句用于声明变量和函数,变量声明语句说明变量的名称和数据类型,函数声明语句说明函数的名称、参数类型和返回值;-执行语句包括:赋值语句、表达式语句、函数调用
5、语句和流程控制语句等,它们写在一个函数中(包括主函数)。,C+程序基本结构:,7,(1)当函数定义放在函数调用之后时,C程序函数原形(function prototype)有时可省略,而C+函数原形(声明)必不可少。一个不带参数的C函数原形必须使用void,而C+可以使用空参数列表。C+还要求函数所有参数在函数原形的圆括号中声明。(2)在C语言中,函数和语句块(花括号“”之间的代码)的所有变量声明语句必须放在所有执行语句之前。而C+中变量声明语句不要求放在函数和语句块的开始位置,可以把变量声明放在首次使用变量的附近位置,这样可提高程序的可读性。,2.1.3 C+对C的一般扩充,(),8,(3)
6、C+用new和delete运算符取代C的内存分配和释放函数malloc()和free()。(4)标准C+提供了字符串类,可以替代C函数库中的字符数组处理函数。(5)进行输入、输出操作时,C+用控制台输入、输出流对象(在头文件iostream.h中进行了类的声明)替代C的stdio函数库,利用“”流提取运算符或“”流插入运算符,分别将数据对象从输入流提取出来或插入到输出流,从而完成数据的输入和输出。使用C+面向流的输入、输出方式提高了程序的可读性,减少了错误的发生。,(),9,#include/使用输入、输出流void main(void)coutxyz;/从键盘读取数据给变量x、y、z cou
7、tThe sum is x+y+zendl;/输出结果,例 编写程序利用标准输入流接收用户从键盘输入的数据,利用标准输出流将运算结果输出到屏幕。,程序运行的结果为:please enter the value of x,y,z:2 4 6The sum is 12,(),10,2.1.4 利用Visual C+编制和运行C+程序,11,2.2 C+程序基本要素,程序由语句组成,语句由基本要素组成。任何一种程序设计语言都有自己的一套语法规则以及按照语法规则构成的元素,程序基本要素就是这样一种具有独立语法意义的元素。C+程序基本要素主要包括标识符、关键字、常量、变量、运算符和表达式等。,12,标识
8、符是程序员或系统定义的符号,用以标识变量、函数、对象等。标识符由字母、数字和下划线组成,它必须以字母或下划线开始。为标识符取名时,尽量使用能够反映其用途的单词或缩写,这样可提高程序的可读性。,2.2.1 标识符,例如:x,y,sum,length,Area,Myfun,m_xPos,CPerson,person1,13,关键字是C+编译器预定义的、具有固定含义的保留字,在程序中它们不能被作为一般的标识符使用。C+增加了C不具有的关键字,并且不同C+编译器含有不同的关键字。,2.2.2 关键字,例如:auto,bool,break,case,char,class,const,continue,d
9、efault,delete,do,double,else,enum,extern,false,float,for,friend,goto,if,inline,int,long,new,operator,private,protected,public,return,short,signed,sizeof,static,struct,switch,template,this,true,try,typedef,union,unsigned,using,virtual,void,while,(),14,在程序中使用的数据有常量和变量两种形式;常量是不能被程序改变的固定值;变量是可以被程序改变的数据。
10、常量和变量的主要区别在于:常量不占内存空间,不能为常量赋值;而变量需要占内存空间,可以给变量赋不同的值。不管常量还是变量,程序中使用的每一个数据都属于一种特定的数据类型。在使用变量之前,必须先利用标识符声明变量。,2.2.3 常量和变量,15,变量声明的一般形式如下:=,=,;,变量声明语句说明了变量的名称和数据类型,程序中通过变量名来存取其中的数据,数据类型定义了变量的存储结构和可以进行的运算。编译程序要为声明的变量分配存储空间,并可以给变量赋一个初始值。例如:int x;float radius=123.56;int x,y=100;,16,2.2.4 运算符和表达式,运算符:运算是对数据
11、进行加工的过程,表示各种不同运算的符号称为运算符,而参与运算的数据称为操作数。运算符实质上是系统预定义的函数名,而进行运算就是调用一个函数。按运算符和操作数的运算性质,运算符可分为算术运算符、逻辑运算符、关系运算符和其它运算符。常用:+、-、*、/、%、+、()、=、+=、-、&、=、new、delete,C+常用运算符,C+常用运算符(续),19,例如:x+y,area=PI*radius*radius,(a b)&(x=y),表达式:一个表达式由常量、变量、函数调用和运算符组成,每个表达式都将产生一个值,并且具有某种类型(称为该表达式的类型)。表达式隐含的数据类型取决于组成表达式的操作数的
12、类型。当表达式中的操作数都是常量时,称这个表达式是常量表达式。在对一个表达式求值时,优先级高的运算符先运算,优先级低的运算符后运算。运算符的结合性:右结合性和左结合性,20,2.3 C+数据类型,数据是程序加工的对象。C+将数据分为不同的数据类型,不管常量还是变量,它们都属于某一种数据类型。数据类型规定了数据的存储结构和可以进行的运算。C+中的数据类型分为:基本数据类型、指针类型和构造类型三大类。构造类型包括数组、结构和枚举等类型。,21,2.3.1 基本数据类型,基本数据类型是C+预定义的数据类型,C+的基本数据类型包括字符型、整数型、实型(单精度和双精度)和无值型。每种基本数据类型都使用一
13、个关键字来表示,如char、int、float、double和void等。数组、指针和类等派生数据类型是程序员按照C+的语法要求在基本数据类型基础之上建立起来的。除void数据类型以外,其它基本数据类型加类型修饰符signed、unsigned、short和long。,C+基本数据类型,23,例:int num,total;float v,r,h;int a=3;/等价于:int a(3);char c=A;long lx=12345678;unsigned int nWidth;,可以使用运算符“()”进行强制类型转换:float x=123.56;int i=(int)x;/i=123,2
14、4,2.3.2 const常量类型,const常量类型表示一个“常值变量”,即值不能被改变的变量。声明一个const型变量只需在数据类型说明前加上关键字const。例如:const int size=20;用const声明的变量必须用常量或常量表达式初始化。一旦变量被声明为const型,禁止任何试图修改该变量的操作。如果知道一个变量赋初值后在生命周期里其值不变,用const限定该变量是程序设计的好习惯,如数组长度。,25,数组属于构造类型,它是一组具有相同类型数据的有序集合,其中每个数据称为数组的元素。数组按其下标的个数分为一维数组、二维数组和多维数组。数组的声明方式如下:常量表达式;常量表达
15、式 常量表达式;数组的使用:数组声明后,可以引用数组每个元素,但不能一次引用整个数组。数组元素作为一个简单的变量对待。数组元素的引用方式如下:下标表达式下标表达式 下标表达式,2.3.3 数组,26,注意:数组元素的下标从0开始,直到数组长度减1,如:score0,score1,score29。在编译C+源程序时,为了保证程序编译和运行的效率,C+编译系统不对数组下标进行越界检查,程序运行时系统也不会提出越界警告。因此在对数组元素进行操作时应格外注意,以免破坏其它存储单元的数据,否则可能造成不可预料的后果。两维数组按行存储。int a23=2,4,6,8,10,12;/按数组的排列顺序 int
16、 a23=2,4,6,8,10,12;/分行赋初始值,27,任何变量都有一个内存地址,这种地址称为指针,而指针变量是一种存放内存地址的变量。每一个指针变量都有相应的数据类型,该类型用以说明指针所指内存单元中存放的数据的类型。指针变量声明的一般形式为:*;符号“*”是指针类型说明符,声明变量是一个指针型变量。例如:int*pointer;int*pointer;/两条语句功能相同,2.3.4 指针,28,有两个与指针有关的运算符:取地址运算符“”和指针运算符“*”;运算符“”用于取一个变量的地址;运算符“*”以一个指针作为其操作数,其运算结果表示所指向的变量;“”运算和“*”运算互为逆运算。,与
17、指针有关的运算符,29,#include void main()int a,b,*pa,*pb;a=10;b=20;pa=,例 指针的使用。,30,指针与数组,指针与数组关系密切,编程时可以用指针代替下标引用数组元素,指针使数组的使用更为灵活、有效;当声明一个数组后,编译程序会按照数组的类型和长度为它分配内存空间,数组名表示数组在内存中的首地址;当用一个指针变量存储数组首地址时,该指针就指向这个数组,就可以通过指针运算间接访问数组的元素。,31,例2 利用指针引用数组的方法求一个数组中所有元素之和。,#include void main()int a=2,4,6,8,10;int*pa=a;/
18、或pa=,32,C+语言没有提供字符串类型,字符串变量是作为一维字符数组来处理。字符串末尾必须加上一个字符串结束符“0”,但“0”不是字符串的有效字符,求字符串的长度时不能将它计算在内。对于字符串常量(用一对双引号括起来的字符序列),C+编译程序自动在字符串的末尾加上字符0,因此,可以直接用一个字符串常量来初始化一个字符数组。char s=Hello;,2.3.5 字符串,33,结构(structure)属于构造类型,它是由多种类型的数据成分组成的数据类型。例如,一个职员的信息由ID号、姓名、性别、出生日期和工资等数据项组成,可采用结构类型来表示。区别以前所介绍过的数据类型,结构的具体构成需要
19、用户自己定义,即定义一个结构类型。结构中的每个数据项称为成员,成员的类型可以是基本数据类型,也可以是一个诸如结构这样的构造类型。,2.3.6 结构,(),34,结构类型定义的一般形式为:struct;.;,(),35,下面定义职员结构类型:struct staffer intID;charname20;bool sex;float salary;,定义了结构(类型),就可以用结构声明结构变量,结构变量的声明形式如下:;,(),36,例如,利用定义的职员结构staffer声明一个职员结构变量:staffer employee1;,注意:不能在定义结构时对成员进行初始化,因为结构是一种数据类型,而
20、不是一个变量。只有在声明一个结构变量时才可以对该结构变量的成员进行初始化。如下所示:staffer employee1=110105,LiMing,1,3809.80;,(),37,结构变量的引用包括整个变量的引用和其成员的引用。作为变量,整个结构变量可以进行赋值、作为函数参数和返回值。结构成员引用的形式为:.,结构变量的引用,指向结构变量的指针 结构变量的指针的声明、赋值和使用规则同普通指针一样。可以通过使用指向运算符“-”引用结构成员。引用的形式如下:-,(),38,枚举类型(enum)也是程序员定义的类型,它是一种允许用符号常量代表数据的数据类型。在定义枚举类型时必须指定一组被命名的符号
21、常量的集合,该集合决定了该枚举类型的变量可以具有的合法值。枚举类型定义的一般形式为:enum,;枚举常量是C+标识符,每一个枚举常量对应一个整数值,第1个常量值为0,第2个常量值为1,依此类推。,2.3.7 枚举,39,使用举例:,以下定义了一个表示颜色的枚举类型:enum ColorRed,Green,Blue;定义好的枚举类型可作为数据类型用于声明枚举型变量,例如:enum Color MyColor;声明了枚举型变量,就可以将定义枚举类型时所列举的枚举常量集合中的任何一个常量赋值给枚举型变量。例如:MyColor=Green;在定义枚举类型时,可以为枚举常量指定其对应的整型值,例如:en
22、um ColorRed=-1,Green,Blue=3;,40,用typedef语句定义类型是指对原有的数据类型定义一个新的名称,而不是真正定义一个新的数据类型。typedef语句的使用形式为:typedef;其中的数据类型可以是简单的数据类型,如int、float和char等,也可以是诸如结构、枚举等组合数据类型。使用typedef的目的有两个:移植程序,增加程序的可读性。,2.3.8 用typedef定义类型,41,typedef int INTEGER;typedef unsigned char BYTE;typedef struct tagDate int year;int month
23、;int day;DATE;新定义数据类型如INTEGER(一般用大小字母)与int完全一样,可以用它进行变量的声明。如:INTEGER i;,例如:,42,2.4 控制语句,从结构化程序设计的观点考虑问题,任何算法功能都可以通过三种流程控制结构来实现。为了实现复杂的算法功能,除了采用一般的按照源代码编写顺序执行程序的顺序结构,还需要采用另外两种能够控制语句执行顺序的控制结构:分支结构和循环结构。分支结构是根据某个条件来决定执行哪些源代码,循环结构是根据某个条件来决定是否重复执行一段源代码。C+提供了多种不同形式的流程控制语句。,43,包括if语句和switch语句,用于实现分支结构。if 语
24、句的一般形式:if()如果表达式的值为真(非0),则执行其中的语句(块),否则跳过该语句。,2.4.1 条件语句,if语句的另一种形式:if()else,44,if语句的嵌套形式:,if()else if()else if().else if()else,45,例 输入一个学生三门课的成绩,计算其平均值,并根据其值输出评语。,#include void main()int math,chem,phy,ave;coutmathchemphy;ave=(math+chem+phy)/3.0+0.5;/0.5用于四舍五入if(ave=90)/使用ifelse if语句cout=60,46,switc
25、h()case:break;case:break;.case:break;default:;,多分支结构switch语句的一般形式:,47,switch语句使用说明:,执行switch语句时将其中表达式的值与一些常量进行比较,当某case语句中的常量与该表达式的值相等时,就执行该case语句后的语句(块),直到遇到break语句或到达switch语句末尾时退出switch结构。如果未出现相等的情况,则执行default后的语句。default语句可缺省,此时如果未出现相等的情况则不执行任何语句。在switch语句中,表达式与常量的类型必须一致,且只能是字符型、整形或枚举型。,48,例 键盘输入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- windows 界面 程序 开发 语言 基础
链接地址:https://www.31ppt.com/p-6523736.html