《《程序设计风格》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《程序设计风格》PPT课件.ppt(38页珍藏版)》请在三一办公上搜索。
1、南京大学 计算机科学与技术系 Base of Programming,1,4 程序设计风格,南京大学 计算机科学与技术系 Base of Programming,2,程序设计(Program design/Programming),计算机解题的方式与人解题的方式存在差异程序设计(设计和编制程序的过程)设计程序:数据结构设计和算法设计编制程序:把设计转化为某种程序语言的代码,软件工程(Software Engineering),程序设计语言,程序设计要素 数据结构 算法 程序设计方法方法学 语言工具和环境语言学,南京大学 计算机科学与技术系 Base of Programming,3,面向过程面
2、向问题面向对象,程序设计方法,南京大学 计算机科学与技术系 Base of Programming,4,程序设计语言,程序设计的结果必然要用一种能被计算机接受的语言表示出来,即编程实现(Coding)。程序设计语言是人与计算机、计算机之间对话的工具,是用来书写计算机程序的语言机器语言(Machine language)汇编语言(Assembly language)高级语言(High-level language),南京大学 计算机科学与技术系 Base of Programming,5,1 程序设计风格,程序设计风格通常有非结构化与结构化之分程序设计风格通常是指对程序进行静态分析所能确认的程序
3、特性,它涉及程序的易读性。,南京大学 计算机科学与技术系 Base of Programming,6,结构化程序设计自1969年由荷兰学者迪克斯特拉()提出后,经数十年的发展,如今已被广泛用于程序设计中。它要求整个程序可分解为不同功能的模块,每一个模块又由不同的子模块组成,最小的模块是一个最基本的结构。这样的程序一般具有良好的书写形式和结构,可以避免程序中无规则的跳转和繁杂的逻辑关系,易于阅读和理解。是一种良好程序设计风格的典范。,结构化程序设计(Structured Programming,简称SP),南京大学 计算机科学与技术系 Base of Programming,7,SP不仅要求所编
4、出的程序结构良好,而且还要求程序设计过程也是结构良好的,后者是前者的基础。对程序设计过程而言,“结构良好”是指采用分解和抽象的方法来完成程序设计任务,具体体现为:“自顶向下、逐步精化”的程序设计过程。对程序而言,“结构良好”是指:每个程序单位应具有单入口、单出口的性质。不包含不会停止执行的语句,程序在有限时间内结束。程序中没有无用语句,程序中所有语句都有被执行的机会。,结构化程序设计(Structured Programming,简称SP),南京大学 计算机科学与技术系 Base of Programming,8,结构化程序设计规定了几种具有良好特性的“基本结构”,以作为程序设计中的基本单元,
5、再由这些基本单元构成大的程序。其基本结构主要有三种,即顺序结构、分支(选择)结构和循环结构。,三种基本流程的共同特点:只有一个入口只有一个出口每一部分都有机会被执行到不存在“死循环”,南京大学 计算机科学与技术系 Base of Programming,9,采用一致/有意义的标识符为程序实体(如变量、函数等)命名。使用符号常量为程序书写注释采用代码的缩进格式,南京大学 计算机科学与技术系 Base of Programming,10,自定义标识符命名建议,【建议1】自定义标识符应当直观,用词尽量准确,可望文知意,便于记忆和阅读。切忌使用汉语拼音来命名。【建议2】标识符的长度应当符合“min-l
6、ength&max-information”原则。一般来说,长名字能更好地表达含义,但名字并非越长越好,单字符的名字也是有用的,常见的如i,j,k,m,n,x,y,z等,它们通常可用作函数内的局部变量。,南京大学 计算机科学与技术系 Base of Programming,11,【建议3】程序中不要出现仅靠大小写区分的相似的标识符。例如:int x,y,X;/变量x 与 X 容易混淆void foo(int x);/函数foo 与FOO容易混淆void FOO(int y);【建议4】用一对反义词命名具有相反含义的变量或函数等。例如:intminValue,maxValue;intSetVal
7、ue(),GetValue();,南京大学 计算机科学与技术系 Base of Programming,12,建议5函数名和类型名用大写字母开头的单词组合而成。如:voidInit(void);voidSetValue(int value);建议6变量名和参数名的首单词用小写字母开头。如:int flag;intstuAge;int current_value,main函数除外,南京大学 计算机科学与技术系 Base of Programming,13,建议7符号常量名全用大写字母,用下划线分割单词。如:#define MAX_LENGTH 100#define PI 3.14建议8静态变量名
8、加前缀s_(表示static)。如:static int s_initValue;建议9全局变量名加前缀g_(表示global)。如:int g_howManyBook;,南京大学 计算机科学与技术系 Base of Programming,14,程序排版建议,【建议1】在每个函数定义结束之后加空行。【建议2】在一个函数体内,逻辑上密切相关的语句之间不加空行,其它地方加空行分隔。【建议3】一行代码只做一件事情,比如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且便于写注释。,南京大学 计算机科学与技术系 Base of Programming,15,【建议4】尽可能在定义变量的同时初始
9、化该变量,如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未初始化的变量,可能会导致程序错误。本建议可以减少隐患。【建议5】长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句易读。【建议6】注释的位置应与被描述的代码相邻,可以放在代码的上方或右方;当代码比较长,特别是有多重嵌套时,应在一些段落的结束处加注释,便于阅读。,南京大学 计算机科学与技术系 Base of Programming,18,好的程序,正确(Correct)高效(Efficient)可靠(Reliable)易读(Easy to
10、 read)可维护(Maintainable)可重用(Re-usable)可移植(Portable),南京大学 计算机科学与技术系 Base of Programming,19,2 各种结构程序设计范例,顺序结构分支结构循环结构综合结构,南京大学 计算机科学与技术系 Base of Programming,20,2.1 顺序结构程序设计范例,顺序结构涉及要素:表达式语句(赋值表达式 赋值语句 最常用)空语句顺序结构:,南京大学 计算机科学与技术系 Base of Programming,21,例1:输入一个角度,计算其对应的正弦值(可调用库函数)。,南京大学 计算机科学与技术系 Base of
11、 Programming,22,#include#include#define PI 3.14using namespace std;int main()int alpha=0;double x,y;cout alpha;x=alpha*PI/180.0;y=sin(x);cout sin(alpha)=y endl;return 0;,Ex1:运行结果:sin(60)=0.86576,南京大学 计算机科学与技术系 Base of Programming,23,#include#include#define PI 3.14using namespace std;int main()int al
12、pha1=0,alpha2=0,alpha3=0;double x,y;cout alpha1 alpha2 alpha3;x=alpha1+(alpha2+alpha3/60.0)/60.0;x=x*PI/180.0;y=sin(x);cout sin(alpha1 alpha2 alpha3)=;cout y endl;return 0;,Ex1*:运行结果:sin(603030)=0.870164,南京大学 计算机科学与技术系 Base of Programming,24,2.2 分支结构程序设计范例,分支结构涉及要素:if if else?:switchbreakgoto复合语句分支结
13、构:,南京大学 计算机科学与技术系 Base of Programming,25,例2:计算函数分析:,南京大学 计算机科学与技术系 Base of Programming,26,#include using namespace std;int main()double x,y;cout x;if(x 10)y=x*x+1;elsey=x;cout y endl;return 0;,Ex2:计算分段函数,南京大学 计算机科学与技术系 Base of Programming,27,从键盘输入一个三角形的三条边,判断其为何种三角形,#include using namespace std;int
14、main()float a,b,c;cin a b c;if(a+b=c|b+c=a|c+a=b)cout 不是三角形;else if(a=b,Ex3,南京大学 计算机科学与技术系 Base of Programming,28,并非越精炼的程序就越好,并非越精炼的程序效率就越高。P47例3.6,南京大学 计算机科学与技术系 Base of Programming,29,#include using namespace std;int main()double x,y;char operatr;cout x operatr y;switch(operatr)case+:x+=y;break;ca
15、se-:x-=y;break;case*:x*=y;break;case/:x/=y;break;default:cout error!n;cout=x endl;return 0;,输入:10.8+0.13输出:=10.93,例4:编程,模拟袖珍计算器的加减乘除四则运算,读入数据,并按算式计算结果。,若去掉break语句执行结果将如何?,南京大学 计算机科学与技术系 Base of Programming,30,#include using namespace std;int main()double x,y;char operatr;cout x operatr y;switch(oper
16、atr)case+:x+=y;break;case-:x-=y;break;case*:x*=y;break;case/:x/=y;break;default:cout error!n;cout=x endl;return 0;,输入:10.8+0.13输出:=10.930000,思考:修改程序,使之能计算一个加减运算混合表达式,输入:10.8+0.13-10=输出:0.930000,南京大学 计算机科学与技术系 Base of Programming,31,2.3 循环结构程序设计范例,循环结构涉及要素:while do while forbreakcontinuegoto,使用频率:for
17、while dowhile,南京大学 计算机科学与技术系 Base of Programming,32,#include using namespace std;int main()int p,i,n=10;p=1;i=2;while(i=n)p=p*i;i+;cout factorial of n=p endl;return 0;,例5:计算n!,p=1;i=2;dop=p*i;i+;while(i=n);,for(i=2,p=1;i=n;i+)p*=i;,南京大学 计算机科学与技术系 Base of Programming,33,例6:利用公式:C=(5/9)(F-32)计算并输出F氏温度
18、与C氏温度对照表,设已知F氏温度取0、10、20、200,南京大学 计算机科学与技术系 Base of Programming,34,#define LOWER 0#define UPPER 200#define STEP 10#include using namespace std;int main()float f,c;/变量定义 f=LOWER;while(f=UPPER)/循环计算 c=5.0/9.0*(f-32.0);cout f c endl;f=f+STEP;return 0;,Ex6,南京大学 计算机科学与技术系 Base of Programming,35,确定性 有穷性 可
19、执行性(有效性)0个或多个输入;1个或多个输出,求i的约数:i除以一个数,余数为0/1i之间的一个整数,int a,b,c;cin a b;c=a/b;,if(b=0)cout);else,2.4 综合结构程序设计范例,求和:short sum=0,i=-32767;while(i!=0)/sum=sum+i;i=i+2;cout);,南京大学 计算机科学与技术系 Base of Programming,36,例7:(译密码)为使电文保密,往往按一定规律将其转换成密码后传输,收报人再按约定的规律解密。编程将输入字符按如下规律转换成密码:将字母变成其后的第4个字母,非字母符号不变,如“Chinese Woman!”转换为“Glmriwi asqer!”.,南京大学 计算机科学与技术系 Base of Programming,37,#include using namespace std;int main()char ch;while(ch=getchar()!=n)if(ch=a,输入:Chinese Woman!输出:Glmriwi Asqer!,Ex7,南京大学 计算机科学与技术系 Base of Programming,38,小结,程序设计风格顺序结构程序设计范例分支结构程序设计范例循环结构程序设计范例综合结构程序设计范例,
链接地址:https://www.31ppt.com/p-5588413.html