《程序设计回顾》PPT课件.ppt
《《程序设计回顾》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《程序设计回顾》PPT课件.ppt(108页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、软件体系结构软件体系结构 编程回顾编程回顾林荣恒林荣恒北京邮电大学北京邮电大学2北京邮电大学北京邮电大学主要内容主要内容o编程概述编程概述o程序风格程序风格o算法与数据结构算法与数据结构o小结小结设计、调试和测试这里不再介绍设计、调试和测试这里不再介绍3北京邮电大学北京邮电大学编程概述编程概述o程序程序o编程编程Programmingo编程语言编程语言4北京邮电大学北京邮电大学程序程序o计算机的工作是由程序来控制的计算机的工作是由程序来控制的o程序程序:程序是为解决某一问题而编写的语句序列。:程序是为解决某一问题而编写的语句序列。通俗的说,将解决一个实际问题的具体操作步骤用通俗的说,将解决一个
2、实际问题的具体操作步骤用某种计算机语言描述出来,就形成了程序。某种计算机语言描述出来,就形成了程序。n语句序列:指令语句序列:指令o计算机可以识别的命令计算机可以识别的命令n实际问题的具体操作步骤:算法实际问题的具体操作步骤:算法o求解问题的方法,是在有限的步骤内求解某一问题所使求解问题的方法,是在有限的步骤内求解某一问题所使用的一组定义明确的规则,是计算机处理问题所需要的用的一组定义明确的规则,是计算机处理问题所需要的过程过程5北京邮电大学北京邮电大学高质量的程序所具备的条件高质量的程序所具备的条件o建立正确的数学模型和确定有效的计算方法建立正确的数学模型和确定有效的计算方法o运行结果必须正
3、确,且在精度和其它各方面运行结果必须正确,且在精度和其它各方面均满足要求均满足要求o程序本身具有良好的结构,逻辑清晰,易读程序本身具有良好的结构,逻辑清晰,易读易懂易懂o程序运行时间尽可能短,同时尽可能合理地程序运行时间尽可能短,同时尽可能合理地使用内存使用内存o便于检查、修正、移植和维护便于检查、修正、移植和维护6北京邮电大学北京邮电大学编程编程o编程编程(Programming):就是编写程序,:就是编写程序,它是在对算法进行正确描述的基础上进行的,它是在对算法进行正确描述的基础上进行的,是用计算机语言(程序设计语言)实现算法是用计算机语言(程序设计语言)实现算法的过程。的过程。n算法转变
4、程序的过程算法转变程序的过程7北京邮电大学北京邮电大学编程的一般过程编程的一般过程o对于简单问题,前三步可看作一步,即分对于简单问题,前三步可看作一步,即分析问题、设计算法。析问题、设计算法。o维护?维护?8北京邮电大学北京邮电大学程序语言程序语言o机器语言机器语言由计算机硬件系统可以识别的二进制指令由计算机硬件系统可以识别的二进制指令组成组成o汇编语言将机器指令映射为一些可以被人读懂的助汇编语言将机器指令映射为一些可以被人读懂的助记符,如记符,如ADD、SUB等等o高级语言高级语言屏蔽了机器的细节,提高了语言的抽象层屏蔽了机器的细节,提高了语言的抽象层次次n程序中可以采用具有一定含义的数据命
5、名和容易理解的程序中可以采用具有一定含义的数据命名和容易理解的执行语句执行语句n在书写程序时可以联系到程序所描述的具体事物在书写程序时可以联系到程序所描述的具体事物o面向过程面向过程o面向对象面向对象9北京邮电大学北京邮电大学选择计算机语言的原则选择计算机语言的原则o根据自己所处理事务的特点来选择计算机语言根据自己所处理事务的特点来选择计算机语言o符合现代程序设计的要求符合现代程序设计的要求o适合使用者的硬件和软件环境适合使用者的硬件和软件环境o考虑软件执行效率考虑软件执行效率o考虑使用者的工作性质考虑使用者的工作性质10北京邮电大学北京邮电大学高级程序语言学习要点高级程序语言学习要点o数据结
6、构数据结构n基本、复合基本、复合o变量变量n类型类型n声明方法声明方法o操作符操作符o语句语句n赋值、计算赋值、计算n结构控制语句:条件、分支、循环结构控制语句:条件、分支、循环n过程调用语句过程调用语句o功能块功能块/操作操作n函数、过程函数、过程n类中的方法或成员变量类中的方法或成员变量11北京邮电大学北京邮电大学高级程序语言学习要点高级程序语言学习要点(2)o模块模块n.c文件文件n类类o类库或者库函数:该语言或者第三方提供的,不用自己编写的类库或者库函数:该语言或者第三方提供的,不用自己编写的n系统调用系统调用n输入输出:文件、键盘、网络输入输出:文件、键盘、网络n随机数、随机数、St
7、ringn线程线程no作用域作用域nPublic、static、private、protected、friendly、externo异常处理异常处理12北京邮电大学北京邮电大学高级程序语言学习要点高级程序语言学习要点(3)o可执行程序的构成和组织可执行程序的构成和组织n主程序、主程序、Main函数、函数、Main类类n模块文件、类文件模块文件、类文件n目录结构目录结构o程序编辑、编译、链接和执行方法程序编辑、编译、链接和执行方法n依赖于环境依赖于环境o该语言有特色的地方该语言有特色的地方o可视化程序设计可视化程序设计n实质是去使用开发环境提供的可视化库函数或者类库实质是去使用开发环境提供的可视
8、化库函数或者类库13北京邮电大学北京邮电大学主要内容主要内容o编程概述编程概述o程序风格程序风格o算法与数据结构算法与数据结构o小结小结14北京邮电大学北京邮电大学程序风格程序风格o引言引言o名字名字o表达式和语句表达式和语句o一致性和习惯用法一致性和习惯用法o函数宏函数宏o神秘的数神秘的数o注释注释15北京邮电大学北京邮电大学程序风格程序风格o引言引言o名字名字o表达式和语句表达式和语句o一致性和习惯用法一致性和习惯用法o函数宏函数宏o神秘的数神秘的数o注释注释16北京邮电大学北京邮电大学看看这个代码看看这个代码typedef structdouble x,y,zvec;vec U,blac
9、k,amb=.02,.02,.02;struct sphere vec cen,color;double rad,kd,ks,kt,kl,ir*s,*best,sph=0.,6.,.5,1.,1.,1.,.9,.05,.2,.85,0.,1.7,-1.,8.,-.5,1.,.5,.2,1.,.7,.3,0.,.05,1.2,1.,8.,-.5,.1,.8,.8,1.,.3,.7,0.,0.,1.2,3.,-6.,15.,1.,.8,1.,7.,0.,0.,0.,.6,1.5,-3.,-3.,12.,.8,1.,1.,5.,0.,0.,0.,.5,1.5,;yx;double u,b,tmin,
10、sqrt(),tan();double vdot(A,B)vec A,B;return A.x*B.x+A.y*B.y+A.z*B.z;vec vcomb(a,A,B)double a;vec A,B;B.x+=a*A.x;B.y+=a*A.y;B.z+=a*A.z;return B;vec vunit(A)vec A;return vcomb(1./sqrt(vdot(A,A),A,black);struct sphere*intersect(P,D)vec P,D;best=0;tmin=1e30;s=sph+5;while(s-sph)b=vdot(D,U=vcomb(-1.,P,s-c
11、en),u=b*b-vdot(U,U)+s-rad*s-rad,u=u0?sqrt(u):1e31,u=b-u1e-7?b-u:b+u,tmin=u=1e-7&utmin?best=s,u:tmin;return best;vec trace(level,P,D)vec P,D;double d,eta,e;vec N,color;struct sphere*s,*l;if(!level-)return black;if(s=intersect(P,D);else return amb;color=amb;eta=s-ir;d=-vdot(D,N=vunit(vcomb(-1.,P=vcomb
12、(tmin,D,P),s-cen);if(d0)N=vcomb(-1.,N,black),eta=1/eta,d=-d;l=sph+5;while(l-sph)if(e=l-kl*vdot(N,U=vunit(vcomb(-1.,P,l-cen)0&intersect(P,U)=l)color=vcomb(e,l-color,color);U=s-color;color.x*=U.x;color.y*=U.y;color.z*=U.z;e=1-eta*eta*(1-d*d);return vcomb(s-kt,e0?trace(level,P,vcomb(eta,D,vcomb(eta*d-s
13、qrt(e),N,black):black,vcomb(s-ks,trace(level,P,vcomb(2*d,N,D),vcomb(s-kd,color,vcomb(s-kl,U,black);main()printf(%d%dn,32,32);while(yx32*32)U.x=yx%32-32/2,U.z=32/2-yx+/32,U.y=32/2/tan(25/114.5915590261),U=vcomb(255.,trace(3,black,vunit(U),black),printf(%.0f%.0f%.0fn,U);你写的比它好多少?你写的比它好多少?17北京邮电大学北京邮电大
14、学想写出高质量的代码吗?想写出高质量的代码吗?o高质量代码的四个基本特性:高质量代码的四个基本特性:n正确性正确性n简单性简单性n可读性可读性n可测试性可测试性o可读性可读性(清晰性)是(清晰性)是“易于维护、易于重构易于维护、易于重构的程序的程序”最有价值的特性最有价值的特性n采用好的程序设计风格进行编码是实现可读性采用好的程序设计风格进行编码是实现可读性的必要保障的必要保障18北京邮电大学北京邮电大学为什么要有可读性?为什么要有可读性?o编程首先是与人交流,其次才是与计算机交流,采编程首先是与人交流,其次才是与计算机交流,采用好的风格编写出可读性好的代码,可以降低与人用好的风格编写出可读性
15、好的代码,可以降低与人交流的复杂度:交流的复杂度:n编程编程o阅读代码的次数要比编写代码多得多,即使在开发的初阅读代码的次数要比编写代码多得多,即使在开发的初期也是如此期也是如此 n维护维护o代码的维护者会感激你使代码容易理解代码的维护者会感激你使代码容易理解 n将来的维护者很可能就是你自己,到时候你得尝试记起自己将来的维护者很可能就是你自己,到时候你得尝试记起自己六个月以前在想什么六个月以前在想什么 o软件的首要技术使命是管理复杂度,许多编程实践软件的首要技术使命是管理复杂度,许多编程实践背后的动机正是为了降低程序的复杂度背后的动机正是为了降低程序的复杂度19北京邮电大学北京邮电大学怎样提高
16、可读性?怎样提高可读性?o名字,最常见的有类名、子程序名、变量名;名字,最常见的有类名、子程序名、变量名;o长度,比如类的长度、数据成员的数目、子程序的长度,比如类的长度、数据成员的数目、子程序的长度、子程序的参数数目、语句的嵌套层数;长度、子程序的参数数目、语句的嵌套层数;o复杂度,包括表达式的复杂度、语句逻辑的复杂度复杂度,包括表达式的复杂度、语句逻辑的复杂度等;等;o格式,包括缩进、空格、注释等;格式,包括缩进、空格、注释等;o耦合度,包括由于共享数据(含全局数据)导致的耦合度,包括由于共享数据(含全局数据)导致的耦合、类之间耦合(继承、组合、友元)、子程序耦合、类之间耦合(继承、组合、
17、友元)、子程序之间的耦合等;之间的耦合等;20北京邮电大学北京邮电大学程序风格程序风格o引言引言o名字名字o表达式和语句表达式和语句o一致性和习惯用法一致性和习惯用法o函数宏函数宏o神秘的数神秘的数o注释注释21北京邮电大学北京邮电大学名字:名不正,则言不顺!名字:名不正,则言不顺!o类名、子程序名、变量名等,用于标识相应类名、子程序名、变量名等,用于标识相应的对象的对象o可以使用切合实际的命名约定,但一旦使用可以使用切合实际的命名约定,但一旦使用了,就一定要始终如一地坚持你的命名约定了,就一定要始终如一地坚持你的命名约定nfrontsize,frontSize,front_size22北京邮
18、电大学北京邮电大学一些基本的命名规则一些基本的命名规则o全局变量使用具有说明性的名字,作用范围越大,所携带的信全局变量使用具有说明性的名字,作用范围越大,所携带的信息应该越多息应该越多n好名字:好名字:ocurrentDate、todaysDaten坏名字:坏名字:oX,y,d,cd,td,x,y,dateo局部变量可以使用短名字局部变量可以使用短名字n例如,如果循环只有寥寥数行,而且只是单层循环,那么可以例如,如果循环只有寥寥数行,而且只是单层循环,那么可以用用i、j等等n 如果循环行数较多,或者有嵌套,则需要更长而且有意义的如果循环行数较多,或者有嵌套,则需要更长而且有意义的名字名字o试比
19、较:试比较:nscoreteamIndexeventIndex 和和 scoreijo下标串化问题下标串化问题23北京邮电大学北京邮电大学一些基本的命名建议(续一些基本的命名建议(续1)o研究发现,当变量名的平均长度在研究发现,当变量名的平均长度在10到到16个字符的时候,调试程序所需花费的气力是个字符的时候,调试程序所需花费的气力是最小的。平均名字长度在最小的。平均名字长度在8到到20个字符的程个字符的程序也几乎同样容易调试。序也几乎同样容易调试。n太短的名字无法传达足够的信息太短的名字无法传达足够的信息 n太长的名字很难写,同时也会使得程序的视觉太长的名字很难写,同时也会使得程序的视觉结构
20、变得模糊不清结构变得模糊不清24北京邮电大学北京邮电大学一些基本的命名建议(续一些基本的命名建议(续2)o保持一致性保持一致性n坏的命名:坏的命名:n好的命名:好的命名:Class UserQueue int noOfItemsInQ,frontOfQueue,queueCapacity;public int noOfUsersInQueue()Class UserQueue int nUsers,front,capacity;public int getNoOfUsers()25北京邮电大学北京邮电大学一些基本的命名建议(续一些基本的命名建议(续3)o函数采用动作性的名字:用动作性的动词,后
21、面跟函数采用动作性的名字:用动作性的动词,后面跟着名词着名词n如:如:n比较:比较:oIf(checkoctal(c)和和 if(isoctal(c)o要准确:名字不仅是个标记,它还携带着给读程序要准确:名字不仅是个标记,它还携带着给读程序人的信息人的信息now=date.getTime();putchar(n);26北京邮电大学北京邮电大学程序风格程序风格o引言引言o名字名字o表达式和语句表达式和语句o一致性和习惯用法一致性和习惯用法o函数宏函数宏o神秘的数神秘的数o注释注释27北京邮电大学北京邮电大学表达式和语句表达式和语句o用缩行显示程序的结构用缩行显示程序的结构nBad:nGood:F
22、or(n=0;n100;fieldn+=0;*i=0;return(n);For(n=0;n100;n+)Fieldn=0;*i=0;return(n);28北京邮电大学北京邮电大学表达式和语句(续表达式和语句(续1)o使用表达式的自然形式使用表达式的自然形式nBadnGoodIf(!(block_id=unblocks)If(block_id=actblks)|(block_id unblocks)29北京邮电大学北京邮电大学表达式和语句(续表达式和语句(续2)o用加括号的方式排除二义性用加括号的方式排除二义性n在混合使用相互无关的运算符时,多加几个括在混合使用相互无关的运算符时,多加几个括
23、号没有坏处号没有坏处o尤其是尤其是C语言语言n即使不必要,加了括号也能把意图表现得更明即使不必要,加了括号也能把意图表现得更明白白n小窍门:使用括号使得你不用去记那些操作符小窍门:使用括号使得你不用去记那些操作符的优先级的优先级30北京邮电大学北京邮电大学表达式和语句(续表达式和语句(续3)o分解复杂的表达式分解复杂的表达式nBad:nGood*x+=(*xp=(2*k (n-m)?ck+1:dk-);If(2*k (n-m)*xp=cK+1;Else*xp=dk-;*x+=*xp;31北京邮电大学北京邮电大学表达式和语句(续表达式和语句(续4)o当心副作用当心副作用nBad code:nGo
24、od code:stri+=stri+=;Stri+=;Stri+=;32北京邮电大学北京邮电大学表达式和语句(续表达式和语句(续5)o使用空行将代码分为有机的各个部分使用空行将代码分为有机的各个部分#include#include int main(int argc,char*argv)/*Set the input to no-echo,character-at-time *(cbreak)mode,*and remember the old mode in t0*/struct termios t0,t1;tcgetattr(0,&t0);t1=t0;t1.c_lflag&=!(ECHO
25、|ICANON);tcsetattr(0,0,&t1);run();/*Set the terminal back to its original mode*/tcsetattr(0,0,&t0);return 0;33北京邮电大学北京邮电大学表达式和语句(续表达式和语句(续6)o子程序、函数、方法的代码行数最好不要超子程序、函数、方法的代码行数最好不要超过过200行行n可读性不好可读性不好n新手可以先编长的,再进行分离。新手可以先编长的,再进行分离。o每一行只写一条语句每一行只写一条语句34北京邮电大学北京邮电大学程序风格程序风格o引言引言o名字名字o表达式和语句表达式和语句o一致性和习惯用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计回顾 程序设计 回顾 PPT 课件
限制150内