《面向对象程序设计语言02(简单程序).ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计语言02(简单程序).ppt(28页珍藏版)》请在课桌文档上搜索。
1、简单C+程序,程序的构成元素、程序的基本结构,面向对象程序设计语言,面向对象程序设计语言,图灵奖得主:Pascal发明者:尼克劳斯.沃顿,程序=数据结构+算法,1.程序的构成元素,面向对象程序设计语言,2.程序的基本结构,语言的构成,程序的诞生,程序的操纵对象:数据/类型,程序的操纵工具:运算符号,顺序结构,分支结构,循环结构,一、程序的构成元素,面向对象程序设计语言,我们要研究一个C+基本程序是由哪些内容构成的。,#include using namespace std;int main(void)cout“Hello World!n”;return 0;,cpp文件:源程序,头部,主体,函
2、数,语句,关键字,操作符,文字,分隔符,标识符,字符集,一、程序的构成元素,面向对象程序设计语言,我们要了解一个C+程序是如何诞生的。,创建一个VC+项目:dsp,编译源程序文件为目标程序文件:obj,创建一个C+源程序文件:cpp,链接目标程序文件和库文件为可执行程序文件:exe,词法检查,语法检查,转译代码,看看例子程序:Test03,一、程序的构成元素,面向对象程序设计语言,程序操纵的对象是什么呢?,By the side of computers:built-in,By the side of users:self-defined,Data:All of data in compute
3、rs have TYPE,int,float,一、程序的构成元素,面向对象程序设计语言,我们看到电脑中丰富多彩的数据是如何由那么简单的两种基本类型的数据得来的呢?,int,float,bool,char,short,long,signed,unsigned,double,long double,一、程序的构成元素,面向对象程序设计语言,而我们在计算机中对数据的表示有两种方式:,变量:程序运行期间值会改变,常量:程序运行期间值不会改变,auto,register,extern,static,文字常量,符号常量,我们将在后面讨论,字符串常量,C+的Built-in变量没有这种类型,只有字符串类型的
4、对象,而且是用字符数组构成的.,一、程序的构成元素,面向对象程序设计语言,无论变量还是常量,都有对应的数据类型:,#include using namespace std;int main(void)bool x1=true;char x2=a;unsigned char x3=a;short x4=-1;unsigned short x5=-1u;int x6=-1;unsigned int x7=-1u;long x8=-1l;unsigned long x9=-1ul;float x10=0.6739088778089e-48f;double x11=0.6739088778089e-4
5、8;long double x12=0.6739088778089e-48l;return 0;,Notice:bool type is int of 1 byte.1:true0:false,Notice:char type is int of 1 byte.Char:-128 127Unsigned char:0 255,Notice:Float type data has effectiveness.,一、程序的构成元素,面向对象程序设计语言,这些数据在计算机中是怎样存储的呢?,All of them are binary by bytes In memory.,1*27+1*26+0*
6、25+1*24+0*23+1*22+0*21+0*20=212,(1)0*26+1*25+0*24+1*23+1*22+0*21+0*20=-44,-1,按位取反最终从补码得出原码,unsigned,signed,一、程序的构成元素,面向对象程序设计语言,无论是变量还是常量,都是按照上述方式存放在计算机中.只是变量是被命名了的内存空间,文字常量是没有命名的内存空间,但是符号常量则采用的是命名内存空间存储的.,const float PI=3.14159;,Notice:形式上很象变量的定义,但是要有关键字:const,Notice:在定义的时候一定要有初始值,Notice:在定义好了之后,是不
7、能进行赋值操作的PI=3.14156;,一、程序的构成元素,面向对象程序设计语言,程序有了操纵的对象“数据”之后,还需要有操纵的工具。,按照操作符的性质:,按照操作符的操作数的个数:,Operator:All of operators have Priority&Associativity,算术运算符,关系运算符,逻辑运算符,赋值运算符,位运算符,一目运算符,二目运算符,三目运算符,条件运算符,成员运算符,指针运算符,成员运算符,长度运算符,下标运算符,类型转换运算符,一、程序的构成元素,面向对象程序设计语言,这些运算符的作用规则:(1)要符合实际意义;(2)有优先级;(3)有结合性;(4)混
8、合运算的转换规则;,int i=100;bool b=true;cout i+b endl;,Notice:这是没有意义的运算,虽然C+中也能运行。,int a=1;int b=2;int c=3;cout a+a+b*c endl;,Notice:优先级就是先算哪个,后算哪个。结合性就是同一个运算符多次出现,运算是从左到右,还是从右到左。,一、程序的构成元素,面向对象程序设计语言,这些运算符的作用规则:(1)要符合实际意义;(2)有优先级;(3)有结合性;(4)混合运算的转换规则;,double x1=0.782;unsigned long x2=241;int x3=90;cout x1+
9、x2+x3 endl;,Notice:这个表达式最终将所有数据转换成double进行运算。,Notice:转换规则是:在同一个运算表达式中,将精度低的数全部转换成在表达式中出现的精度最高的数据类型。char,short,int,unsigned,long,unsigned long,float,double,long double,一、程序的构成元素,面向对象程序设计语言,由于存在数据混合运算,这会带来一些逻辑错误:,#include using namespace std;int main(void)/四舍五入带来的问题double x=10/7.0;cout x=x endl;if(x=1
10、.142857142857)cout x=10/7.0n;elsecout x does not equal 10/7.0n;double z=7.0*x-10;cout z=z endl;if(z=0)cout z=0.n;elsecout z does not equal 0.n;/进行除法运算带来的问题cout 1/2 is 1/2 endl;return 0;,Notice:怎样解决这些问题呢?用强制类型转换运算符()float(1)/float(2)(float)1/(float)2,Sample02,一、程序的构成元素,面向对象程序设计语言,上述例子我们学到的操作符是:,算术运算符
11、,赋值运算符,具体来说:-+-*/%+-,关系运算符,具体来说:=+=-=*=/=%=&=|=,具体来说:=!=,一、程序的构成元素,面向对象程序设计语言,我们特别关注:,+-的前置与后置,赋值运算符,=和=,例如:i+等价于 i=i+1如果i=0,(i+)-1的结果是?同样的,(+i)-1的结果又是?Sample:S02/S03,注意:“=”在C+中是一种运算符号对待。所以可以写出:x=y=z;的语句。,注意:“=”和“=”在C+中是完全不同的两种运算符号。if(x=y)是一种错误的写法。,二、程序的基本结构,面向对象程序设计语言,这是我们实现程序控制的方法.,顺序,选择,循环,单分支,双分
12、支,多分支,while,do while,for,二、程序的基本结构,面向对象程序设计语言,这些基本结构实际上是一种逻辑问题.,今天如果天气好,我就去Shopping,否则没人来叫我去Play basketball,我就Sleeping.,bool weather;cout weather;if(weather)cout pk;if(pk)cout“Paly basketball:)endl;elsecout Sleeping:(endl;,二、程序的基本结构,面向对象程序设计语言,选择结构是解决我们逻辑处理的问题.,单分支选择:只关注一次判断,一个结果的问题.,if(逻辑表达式 或 关系表达
13、式)/一次判断执行一个结果/注意:当“执行一个结果”只有一条语句的话,分割符可以不要。,if(x!=y)/一次判断x=y;/注意:当“执行一个结果”只有一条语句的话,分割符可以不要。,/但是,请养成良好的习惯,无论是一条语句,还是两条语句,都写上 if(x!=y)x=y;/这是好的编程习惯,二、程序的基本结构,面向对象程序设计语言,选择结构是解决我们逻辑处理的问题.,双分支选择:只关注一次判断,两个结果的问题.,if(逻辑表达式 或 关系表达式)/一次判断执行第一个结果else执行第二个结果,注意:结果一和结果二只能执行一个,Sample:if(x y)cout x;elsecout y;,二
14、、程序的基本结构,面向对象程序设计语言,选择结构是解决我们逻辑处理的问题.,多分支选择:有3种方法,使用嵌套方式(关心多个判断,执行多个结果)if(x!=y)if(x y)cout y”;elsecout“x y”;elsecout“x=y”;Sample:S05,注意:嵌套写的程序,要采用缩进排版,二、程序的基本结构,面向对象程序设计语言,选择结构是解决我们逻辑处理的问题.,多分支选择:有3种方法,使用多分支if 语句(关心多个判断,执行多个结果)if(x=y)cout y)cout y”;elsecout“x y”;Sample:S05,注意:这里的else真实含义,二、程序的基本结构,面
15、向对象程序设计语言,选择结构是解决我们逻辑处理的问题.,多分支选择:有3种方法,使用开关swtich语句(关心一个判断,执行多个结果)switch(x)case 0:cout“星期天”;case 1:cout“星期一”;break;case 2:cout“星期二”;break;case 3:cout“星期三”;break;case 4:cout“星期四”;break;case 5:cout“星期五”;break;case 6:cout“星期六”;break;default:cout“超出表示范围!”;break;,二、程序的基本结构,面向对象程序设计语言,循环结构是解决我们反复处理的问题.,在
16、C/C+语言中有3种循环语句,使用先判断,后执行的 while 语句int i(0);int sum(0);while(i=10)sum+=i+;,注意:这里的while后面跟的是逻辑表达式 或 关系表达式,Sample:S06,二、程序的基本结构,面向对象程序设计语言,循环结构是解决我们反复处理的问题.,在C/C+语言中有3种循环语句,使用先执行,后判断的 while 语句int i(0);int sum(0);dosum+=i+;while(i=10);,注意:这里的while后面要写分号,Sample:S06,二、程序的基本结构,面向对象程序设计语言,循环结构是解决我们反复处理的问题.,在C/C+语言中有3种循环语句,使用初始,判断,执行,步增的 for 语句int i(0);int sum(0);for(i=0;i=10;i+)sum+=i;,注意:i=0 是初始i=10 是判断i+是步增这里的 i是循环控制变量,Sample:S06,附录:,面向对象程序设计语言,李开复:一是“内功”要学好,不要只是去学各种皮毛的语言、工具,和一些三流公司招聘列出来的要求,要把数据结构、算法、数据库、操作系统原理、计算机结构、离散数学等课程学好;二是多编程,最好大学四年有十万行编程的经验;还要讲究“实干”,Google是动手者的天堂,另外要有一些数学能力,还要练习团队精神,与人合作。,