版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、n从程序设计语言到程序n从程序设计语言到程序202X-1-2C语言程序设计进阶3初学者的困难初学者的困难n写出符合要求的程序n不知如何下手n不知程序错在哪里n不知如何改正错误n不知如何检查程序是否符合要求n不知如何写出高质量的程序202X-1-2C语言程序设计进阶4感到困难的原因感到困难的原因n对编程语言的掌握n对解题过程的掌握n对相关知识和技术的掌握n实践经验202X-1-2C语言程序设计进阶5解决问题的方法解决问题的方法n掌握程序设计的基本过程n掌握程序设计各步骤的相关技术n加强练习n多做练习n阅读高水平的程序202X-1-2C语言程序设计进阶6程序设计的基本过程程序设计的基本过程n明确任
2、务要求n明确已知条件n逐步分解、自顶向下的设计n提出解题思路n确定关键算法和数据结构n确定程序结构n编码实现可运行的程序n检验程序是否符合要求202X-1-2C语言程序设计进阶7程序设计的步骤程序设计的步骤n分析n明确程序设计的目标和要求n明确已知条件和约束n设计n描述问题求解的过程和步骤n逐步缩短出发点和目标间的距离n编码n从设计到程序的转换202X-1-2C语言程序设计进阶8程序设计的步骤程序设计的步骤( (续续) )n调试n发现和改正编码中的错误n语法错误n语义错误n逻辑错误n检查和保证编码的正确性202X-1-2C语言程序设计进阶9程序设计的步骤程序设计的步骤( (续续) )n测试n排
3、除设计错误n检验程序的正确性和可靠性n保证程序的功能和性能符合目标要求202X-1-2C语言程序设计进阶10不同规模程序的差异不同规模程序的差异n设计目标不同n功能和性能要求n生命周期、可维护性、可扩展性n可靠性n程序复杂程度不同n结构n代码量n错误处理方式202X-1-2C语言程序设计进阶11不同规模程序的差异不同规模程序的差异( (续续) )n使用环境和方式的差异n使用环境n单一平台n多种平台n网络环境n使用人员n自用n他人:专业人员 vs 一般用户n与其它程序的关系和交互方式202X-1-2C语言程序设计进阶12不同规模程序的差异不同规模程序的差异( (续续) )n工作内容差异n主要体现
4、在分析、设计和测试n重点随程序复杂性增加而逐渐前移n测试工作的重要性随程序复杂性增加而增加202X-1-2C语言程序设计进阶13问题分析问题分析n分析的依据n明确的要求:问题描述n隐含的要求:规则、环境、常识n分析的方法n认真阅读题目,理解题目要点n认真思考,准确把握要求n记录关键点202X-1-2C语言程序设计进阶14问题分析问题分析( (续续) )n分析要点n明确问题的要求n功能:对环境及输入数据的处理过程及结果n性能:对系统资源的占用量n使用方式和环境 n人机界面n输入/输出数据及格式n与其它系统的交互 n理解问题的性质n把握所要解决的关键问题202X-1-2C语言程序设计进阶15分析结
5、果的质量要求分析结果的质量要求n具体、准确、完整n符合题目的各项要求:明确的和隐含的n后续工作的依据:可操作性n后续工作检查的标准n必要的文档n记录需求要点n基本功能、输入数据的来源,数据格式、类型、数量和范围、需要处理的特殊情况n计算结果的输出格式和目标文件 202X-1-2C语言程序设计进阶16问题分析的例问题分析的例已知一元多项式A = anxn + + a1x + a0, B = bnxn + + b1x + b0根据运算符+、-、*,分别计算A + B、A - B、A * B。输入数据由三行组成。第一行是多项式A,第二行是多项式B,第三行是一个运算符,表示所要进行的运算。多项式中除常
6、数项外的每一项的形式为AnXN,其中An是一个整数,表示该项的系数,X是变量名,N是该项的次数。各项与+之间可以有0个或多个空格符。输入的多项式A和B的最高次数均不超过500,系数的绝对值不超过10000。输出结果写在标准输出上,占一行。结果多项式按降幂方式排列,各项的表示形式与输入形式相同,按常规的方式显示。例如,系数为0的项不输出;除常数项外,系数为1的项不显示系数。各项与运算符之间空一格。【输入样例】3x5 + 5x3 + 69x6 + 2x5 + 6x3 + x2 + 6-【输出样例】-9x6 + x5 - x3 - x2202X-1-2C语言程序设计进阶17多项式运算程序的功能多项式
7、运算程序的功能n读入数据n数据结构和存储空间n完成计算n数据结构和算法n输出结果n格式要求202X-1-2C语言程序设计进阶18输出结果的格式要求输出结果的格式要求n对于一般项, n输出结果占一行n结果多项式按降幂方式排列n如果系数为0,则不输出该项 n各项与运算符之间空一格n除常数项外,如果系数为正负1,则不显示系数 n系数的正负号不直接输出,而是转化为该项前面的运算符:正号对应运算符+, 负号对应运算符-n如果指数为0,则不输出x0而只输出系数。这包括系数为1的情况202X-1-2C语言程序设计进阶19输出结果的格式要求输出结果的格式要求( (续续) )n对于多项式的第一项的特殊规则:n若
8、第一项系数为正数,则在其前面不输出任何符号n若第一项系数为负数,则在其前面输出符号-,且-与系数之间不留空格n对于整个多项式的特殊规则:n若多项式中所有项的系数均为0,即整个结果多项式为零,则输出0n操作符+、-前后要留有空格n末尾要输出换行符n, 并且n与前面的可显示字符之间不留空格n多项式中变元的名字:n是一个字符,必须与输入多项式中的变元名字一致202X-1-2C语言程序设计进阶20设计设计n设计的依据n对问题的分析n计算环境的限制n设计的内容n建立计算模型n提出解题思路n确定计算方法n确定基本数据结构202X-1-2C语言程序设计进阶21设计设计( (续续) )n设计的检验n能否满足分
9、析阶段所明确的需求n能否作为编码的依据202X-1-2C语言程序设计进阶22设计要点设计要点n解题的步骤n关键算法n输入/输出信息和格式n程序结构n错误处理n可能出现的错误n处理方法202X-1-2C语言程序设计进阶23计算模型计算模型n适用于与具体应用领域相关的题目n对所要求解的问题的一种抽象n用计算过程中的元素描述问题n计算过程中的元素: 数据、公式、操作等n把应用领域中的实体及其关系抽象成数学模型n建立实体与计算对象的对应关系202X-1-2C语言程序设计进阶24计算模型的建立计算模型的建立n分析题目中与计算相关的实体及其相互关系,以及所要求解的内容。n细化实体、关系和求解要求,建立脱离
10、具体应用领域的、比较抽象的问题描述及其与题目中实体的对应关系。n根据这一模型确定计算步骤、算法及数据结构等后续工作。 202X-1-2C语言程序设计进阶25计算计算模型的建立模型的建立( (续续) )n计算模型不一定唯一n在已知的计算模型中找出最为合适或接近的计算模型n尽量简明、直观202X-1-2C语言程序设计进阶26计算模型的例计算模型的例nCalling CirclesCalling Circles(202X ACM Programming Contest 202X ACM Programming Contest Finals,BFinals,B) n题目大意:如果题目大意:如果A A呼
11、叫过呼叫过B B,B B又直接或间接地呼叫又直接或间接地呼叫过过A A,则,则A A和和B B同在一个呼叫组中。给出一组同在一个呼叫组中。给出一组 呼叫呼叫记录,计算出各个呼叫组及其中的人员。例如,记录,计算出各个呼叫组及其中的人员。例如,A A呼叫过呼叫过B B,B B呼叫过呼叫过C C,C C呼叫过呼叫过A A,则,则A A、B B、C C在一个在一个呼叫组中。同时,呼叫组中。同时,C C又呼叫过又呼叫过D D,D D也呼叫过也呼叫过C C,则,则D D也与也与A A、B B、C C同在一个组中。同在一个组中。B B又呼叫过又呼叫过E E,但,但E E没有没有呼叫过呼叫过A A、B B、C
12、 C、D D中的任何一位,则中的任何一位,则E E不在不在A A、B B、C C、D D的呼叫组中。的呼叫组中。n数学模型数学模型n有向图有向图n节点对应用户节点对应用户n弧对应呼叫弧对应呼叫n呼叫组对应互相连通的节点呼叫组对应互相连通的节点n问题的求解问题的求解n计算有向图的连通性计算有向图的连通性202X-1-2C语言程序设计进阶27计算模型的例计算模型的例( (续续) )n模型的表述n邻接矩阵n人名与节点对应表n问题的求解n计算连通矩阵n节点根据连通性分组n根据分组和对应表解释连通矩阵202X-1-2C语言程序设计进阶28解题思路解题思路n问题求解的步骤序列n在问题描述的应用领域上进行n
13、在计算模型的基础上进行n逐步探索、逐步细化n分而治之,把大问题分解成小问题n解题思路的可行性n每一步都可以用已知的方法解决n每一步都可以在限定条件下实际计算202X-1-2C语言程序设计进阶29解题思路解题思路( (续续) )n解题思路的描述n自然语言n解题思路的依据n对问题的分析和理解n经验、常识、n解题步骤的粒度取决于n问题的规模n人员的能力和经验n例:根据输入数据建立一个名字数值对照表 202X-1-2C语言程序设计进阶30解题思路的例解题思路的例1 1:Calling CirclesCalling Circlesn计算步骤 n读入数据,生成内部表示形式n生成用户人名表n生成初始邻接矩阵
14、n计算图的连通性n计算邻接矩阵的2 n-1次幂n计算可达性矩阵n根据图的连通性产生输出结果n根据各对节点间的可达性分组n根据格式要求输出分组结果202X-1-2C语言程序设计进阶31解题思路的例解题思路的例2 2:N!的分解的分解n将N!分解成质数幂的乘积从标准输入读取一个整数N(2N60000),将N!的质数幂的乘积分解式打印到标准输出上,分解式中的质数按从小到大输出。对重复出现的质 因 数 , 用 指 数 形 式 表 示 。n例输入: 5输出: 23*3*5202X-1-2C语言程序设计进阶32解题思路的例解题思路的例2(2(续续) )n思路1n计算N!n分解质因数n可行性问题:N!不可直
15、接表示nN的最大值为60000n12! 231-1,232-1 13! 202X-1-2C语言程序设计进阶33解题思路的例解题思路的例2(2(续续) )n思路2n逐一地分解N以下所有的自然数n累加每个质因子出现的次数n依据n乘法的交换律和结合律n所需分解的最大的数为60000n可行性:每一步都实际可计算 n其它思路?202X-1-2C语言程序设计进阶34计算方法计算方法( (续续) )n根据计算模型设计和选择算法n算法应该满足的条件:n每一步都应是含意确定、可以计算的n应该在有限的步骤之内产生所需要的计算结果n应该在有限的步骤内停止n算法的选择不唯一n算法评估和比较的主要考虑n运行速度/资源消
16、耗1.实现的复杂度202X-1-2C语言程序设计进阶35算法的基本要求算法的基本要求n使用计算机求解问题的有限步骤n表示为运算的序列n算法的基本性质n可操作性n可终止性n可达到预期的目标202X-1-2C语言程序设计进阶36算法分类算法分类n简单算法n专用算法n策略算法202X-1-2C语言程序设计进阶37简单算法简单算法n分析解决问题的常规思路n使用已有的知识可以直观地描述n描述应具体,具有可操作性n例:编写一个函数setbits(x,p,n,y), 对x从右数第p位开始,向左向左连续n位(含第p位)置为y的最右边n位的值,其余各位保持不变。202X-1-2C语言程序设计进阶38函数函数se
17、tbitssetbits的算法的算法n取出y的最右边n位的值n生成最右n位为全1其余为全0的掩模n将y的值和掩模“按位与”n左移p-1位n取代x从右数第p位开始向左向左连续的n位nx从右数第p位开始向左向左连续n位置为0n将y的最右边n位的值左移p-1位n将上述结果和被处理后的x “按位或”202X-1-2C语言程序设计进阶39简单算法的例简单算法的例(2)(2)n计算N(1 = N =1000)元人民币兑换成1分、2分和5分的硬币,有多少种可能的组合n算法n枚举n部分枚举公式n公式n分析的难度、实现的难度、计算复杂度不同202X-1-2C语言程序设计进阶40专用算法专用算法n数值算法,例:n
18、高斯消元法、FFT、插值算法、龙格-库塔法n. .n非数值算法,例:n排序算法n图形操作n代码优化、垃圾收集. .202X-1-2C语言程序设计进阶41策略算法策略算法n搜索n递归n动态规划n贪心法n. .202X-1-2C语言程序设计进阶42算法的评价算法的评价n对计算资源的占用n时间效率(CPU)n空间效率(内存)n绝对值/变化的量级n理解和实现的难易程度n性能和适用范围202X-1-2C语言程序设计进阶43算法的设计和选择算法的设计和选择n算法不唯一n最优算法也不一定唯一n算法设计和选择的依据n算法优缺点的比较n待解问题的复杂程度n计算环境的限制n速度n内存n实现的难易程度202X-1-
19、2C语言程序设计进阶44算法设计的例:算法设计的例:N!的分解!的分解 n解题思路n对从2开始的自然数逐一分解质因数n将分解的结果累加到质数出现次数表中n算法n建立按从小到大排序的N以下的质数表n将所有的质数出现次数表项清零n遍历从2到N的自然数,对每一个数Ni进行下述操作3.1 对Ni进行质因数分解并将Ni所包含的各个质因子的个数分别累加到相应的质数出现表项中202X-1-2C语言程序设计进阶45算法设计的例:算法设计的例:N!的分解!的分解( (续续) )n算法步骤的细化n对每一个大于1的自然数ni进行操作如下1. 将ni保存在单元A中,将质数2的序号保存在单元B中2. 如果A中的数值等于
20、1,则结束操作3. 根据B中的序号取出质数,检查该数能否整除A中的数值4. 如果可以整除,则将A被整除的结果保存到A,并根据B中的序号将质数出现表项的值加1,然后重复本步操作5. 如果不能整除,则将B中的序号加1,转回2n每一步都具有可以直接编码的可操作性n具体编码取决于数据结构202X-1-2C语言程序设计进阶46数据结构数据结构n组织和保存数据n与算法的设计相辅相成、互相协调n算法描述对数据的操作n不了解算法,无法决定如何构造数据n算法的构造在很大程度上依赖于数据结构n应该与算法同时考虑n满足算法的要求n数据的表示:类型、范围、精度n可以在计算平台上方便地实现202X-1-2C语言程序设计
21、进阶47数据结构的例数据结构的例:N!的分解!的分解 n质数表以及质数出现次数表:一维数组n质数表以及质数出现次数表中的表项数量:质数表中所需要的最大的质数的上限n最大的质因子不应该超过N。题目中N的上限是60000,因此质数表中最大的质数小于60000。n质数的分布随着数值期间向上增长而趋于稀疏n保守估计,在60000以内,质数约占1/8,质数表和质数出现次数表只要7500项n每项数据存储的类型n最大的质数不超过60000,可以用16位二进制位的无符号整数n一般情况下应该避免使用无符号整数来表示需要进行运算的数据n因此质数表项的数据类型需要使用32位的有符号整数n质数出现次数表项的数据类型n
22、需要估计在所有质因子中,出现次数最多的质因子的最大出现次数是多少n2是最小的质数,在N!的各个质因子中,2出现的次数最多n将N!按定义展开成为从1到N的连乘,并对这一由自然数构成的因子序列进行考察n每21=2个就有一个数包含有一个2n每22=4个就有一个数包含有两个2n每2n=8个就有一个数包含有n个2nN!中所包含的2的个数为N/21 + N/22 + N/23 +N/2 t,其中t为满足2 t = N的最大值n假设N的最大值为216 = 65536,则这时N!中所包含的2的个数为216-1=65535n选择32位的有符号整数作为质数出现次数表项的数据类型。 10 100 200 500 1
23、000 5000 600004254695168669 6057202X-1-2C语言程序设计进阶48数据结构的例数据结构的例:N!的分解!的分解( (续续) )n质数出现次数表项分析的推广n对N以下的每一个质数,都可以直接计算出它在N!中出现的次数n这个方法比对N以下的各个正整数进行质因子分解更简单n新的解题思路:n用N以下质数的各次幂分别整除N,并将结果直接累加,得到对N!的质因子分解结果202X-1-2C语言程序设计进阶49数据结构的例数据结构的例:N!的分解!的分解( (续续) )n与上述思路对应的算法描述1建立按从小到大排序的N以下的质数表2将所有的质数出现次数表项清零3对于所有的从
24、2到小于等于N的最大质数进行遍历,并对每一个质数Pi进行:3.1 将质数Pi放入存储单元A中3.2 用A中的数整除N,将结果累加到相应的质数出现表项中3.3 将A中的数乘以质数Pi,比较A中的数是否大于N3.4 如果A中的数大于N,结束对质数Pi的处理如果A中的数不大于N,则转到202X-1-2C语言程序设计进阶50编码过程编码过程n程序的实现n从自然语言到编程语言n描述的进一步精确n符合编程语言的语法和语义n编码策略n自顶向下(top down)n分而治之(divide and conquer)n描述逐层细化n独立的基本任务202X-1-2C语言程序设计进阶51编码过程编码过程( (续续)
25、)n保持良好的程序结构n对计算过程描述的层次性n对程序的描述要自顶向下,逐步细化n在每一个层面上只描述本层面直接使用到的计算步骤和控制机制n各个计算步骤的细节,在下一层次再进行细化的描述n自顶向下的层次性描述通过函数的调用和定义实现n对于过于复杂,不便直接使用C语句描述细节的计算步骤n用一个函数来表示这个计算步骤n在对这个函数具体定义时再详细描述计算步骤的操作细节n函数名说明所要完成的任务,参数传递计算所需要的数据n逐级细化,直至所有的操作都转化为基本的C语言计算/控制语句202X-1-2C语言程序设计进阶52编码过程编码过程( (续续) )n保持良好的程序结构(续)n在main三 中,只描述
26、计算的基本步骤n对程序调用参数的错误处理n对大的计算过程的控制n各个计算步骤的细节,留待下面的层次逐步展开n函数的长度n一般不超过显示器一屏所能显示的长度n表达独立的操作步骤 202X-1-2C语言程序设计进阶53编码的例编码的例:N!的分解!的分解#define MAX_N 60000#define MAX_ITEMMAX_N / 8int primeMAX_ITEM, f_num_tabMAX_ITEM;int main(int c, char *v)int m, n;if (c 2) fprintf(stderr, Usage: %s Nn, v0);return 1;n = atoi(
27、v1);if (n MAX_N) fprintf(stderr, N must be between 2 and %dn, MAX_N);return 2;m = gen_primes(n, prime);gen_factors(n, m, prime, f_num_tab);print(m, f_num_tab);return 0;202X-1-2C语言程序设计进阶54编码的例编码的例:N!的分解!的分解( (续续) )void gen_factors(int max, int p_no, int prime, int f_tab)int i, n;for (i = 0; i p_no; i
28、+) for (n = primei; n = max; n *= primei) f_tabi += max / n;202X-1-2C语言程序设计进阶55编码的其它要点编码的其它要点n代码的描述应当完整简洁n语句的使用应当准确n代码应该容易阅读、理解和修改n代码应当便于重用n代码中应有适当的注释202X-1-2C语言程序设计进阶56代码描述的完整和简洁代码描述的完整和简洁n应该严格地根据解题步骤和算法的规定n完整地描述具体的计算过程n代码的描述应该直截了当,避免不必要的语句 n检查n解题步骤和算法的每一步是否都在代码中得到正确的描述n各个计算步骤的前后顺序是否正确n条件判断的内容和位置是否
29、恰当202X-1-2C语言程序设计进阶57语语句的句的准确准确性性n避免由于疏忽或误解而产生编码错误 n常见的错误n= 与 = 混淆nif else if else if 的嵌套:意图与描述不符nswitch case 语句中缺少必要的breakn变量未赋值即引用n字符与字符串混淆n按位与(&)与逻辑与(&)混淆,按位或(|)与逻辑或(|)混淆n运算符优先级和结合方式错误n例: 1 a + b 1 0)还是大于等于0(n=0)n是i n还是i = n 还是 i = n + 1202X-1-2C语言程序设计进阶58代码的可维护性代码的可维护性n代码应该容易阅读、理解和修改n便于发
30、现和改正错误n在一定的范围内适应需求的合理变动n利用变量的初始化和编译系统的预处理功能#define NAME_NUM 30char *name_listNAME_NUM = name_1, name_2, . . “name_30”;char *name_list = “name_1”, “name_2”, . . “name_30”;#define NAME_NUM (sizeof(name_list) /sizeof(name_list0)n避免使用不易理解的技巧和复杂的表达式 p=(i+)+(i+)+(i+); x = y+z; 202X-1-2C语言程序设计进阶59代码的重用代码的重
31、用n代码可以不经修改地在多处使用n相同的或相近的功能应该只在一处实现n使程序的代码简洁,便于维护n可以减少工作量,提高工作效率n方法:n函数n宏定义n避免过分追求代码的重用n函数过于复杂,引起编码、调试和维护的困难202X-1-2C语言程序设计进阶60代码中的注释代码中的注释 n有于对程序的理解n增加程序的可维护性n必要的注释n生存周期在一天以上n最基本的注释:对程序的说明n程序的目的和作用n程序编写的依据n程序中不直观的地方n所采用的算法和数据结构及采用的理由n复杂代码段落的含义n注释应当与代码一致202X-1-2C语言程序设计进阶61代码的代码的检查检查 n语法检查n使用编译系统n其它工具
32、nlint、 n语法错误的处理n从第一个错误改起n改正所有的错误和警告n语义检查:测试和调试202X-1-2C语言程序设计进阶62调试概述调试概述n调试的目的n保证程序正常运行n在编程阶段进行n步进式调试n及时编译n及时测试n调试工具和方法n编译器做为语法检查工具n函数测试环境和数据n调试工具的选择和使用202X-1-2C语言程序设计进阶63调试的基本步骤调试的基本步骤n确定故障现象n确定程序的执行过程n分析故障的原因n确认故障原因n修改程序n测试/确认程序运行正常n步进式的调试202X-1-2C语言程序设计进阶64确定故障现象确定故障现象n故障的表现n程序的输出n与预期结果的差异n程序的状态
33、n故障的类型n错误输出/死循环/程序崩溃n确定性故障/非确定性故障n出现故障的条件n运行环境n输入数据n操作/命令202X-1-2C语言程序设计进阶65确定程序的执行过程确定程序的执行过程n估计在出错的条件下程序的执行路径n分析程序的逻辑n判断各个分支点的条件n验证程序的执行路径n基本方法:输出提示信息n调试工具:在可能的路径上设置断点n分支点的检验策略n二分法202X-1-2C语言程序设计进阶66观察程序的内部状态观察程序的内部状态n关键变量n直接输出的变量n相关的中间变量n变量值的观察n打印n使用调试工具n与预期值的比较n根据程序逻辑,分析所观察变量的预期值202X-1-2C语言程序设计进
34、阶67分析故障的原因分析故障的原因n确定与故障相关的变量n与输出结果直接相关的变量n中间变量n确定故障的源头202X-1-2C语言程序设计进阶68确认故障原因确认故障原因n修改可能引起故障的语句n适用n引起计算错误的故障n引起崩溃或死循环的故障n屏蔽/删除可能引起故障的语句n适用n引起崩溃或死循环的故障202X-1-2C语言程序设计进阶69修改程序修改程序n可恢复性修改n保存程序备份n将需修改的语句放入注释n记录修改内容n注释n修改的原因n修改的内容n初步观察修改效果n测试/确认程序运行正常202X-1-2C语言程序设计进阶70测试初步测试初步n检验程序的功是否能符合要求n排除设计错误n检验程
35、序的性能和可靠性n在程序设计开始前考虑n在程序阶段性完成时进行202X-1-2C语言程序设计进阶71测试的要素测试的要素n测试的步骤n函数测试n模块测试n整体测试n回归测试n测试模型n黑盒测试n白盒测试202X-1-2C语言程序设计进阶72测试的要素测试的要素n测试方法n手工/自动n测试工具n测试环境n操作系统n编译系统/选项/版本n测试数据n输入数据n预期结果202X-1-2C语言程序设计进阶73测试数据的覆盖范围测试数据的覆盖范围n基本覆盖n功能要求n性能要求n边界条件n应当处理的极端条件和特殊情况n错误处理n有可能出现的错误n适当的反应202X-1-2C语言程序设计进阶74测试数据的设计
36、测试数据的设计n依据n问题分析中的各种要求n时机n问题分析阶段,设计开始之前n方法n手工n自动202X-1-2C语言程序设计进阶75测试数据的例:多项式运算测试数据的例:多项式运算n功能性基本覆盖的要素n输入数据n输出数据n输入数据的覆盖因素n输入数据的长度n多项式各项系数的值n极限值、n连续、正负交错、奇偶次项交错为0、1、 n运算符202X-1-2C语言程序设计进阶76测试数据的例:多项式运算测试数据的例:多项式运算( (续续) )n输出数据的覆盖因素n结果多项式的长度n单项、小于、等于极限值n多项式各项系数的值n边界条件n系数为0n结果多项式为0n长度等于极限值202X-1-2C语言程序
37、设计进阶77测试数据设计要点测试数据设计要点n考虑问题要求的各个方面n考虑程序的运行模式n各种要求的合理组合n原因n程序的复杂性n错误来源的多样性n编程人员测试时的倾向n常见问题n测试简单,数据设计不系统202X-1-2C语言程序设计进阶78测试的方法测试的方法n测试工具n程序的性能评估n错误的处理n记录n调试n测试n针对性测试n回归测试202X-1-2C语言程序设计进阶79程序分析和设计的例:程序分析和设计的例: 图像文件格式转换工具图像文件格式转换工具n基本任务:n10种格式的图像文件任意转换n命令行指定输入/输出文件n文件格式的给定:文件名后缀n独立运行n错误信息n输入文件不能读n输出文件不能写n输入文件格式与文件名后缀不符n文件名后缀错误202X-1-2C语言程序设计进阶80图像格式转换工具基本功能图像格式转换工具基本功能n10种格式的分析n10种格式的生成n9x9种格式转换n文件名后缀的识别n文件读写n错误处理202X-1-2C语言程序设计进阶81格式转换程序要点格式转换程序要点n需要解决的关键问题n文件后缀名的识别n不同格式之间的转换n尽量减少程序量n增加程序的可扩展性n解决
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年尚义县教师招聘笔试备考试题及答案解析
- 亚运村中心招聘全科医生1人笔试模拟试题及答案解析
- 2026年方正县教师招聘考试参考题库及答案解析
- 招聘18人!玛沁县紧密型医共体2026年下半年编外人员招聘笔试参考题库及答案解析
- 2026武汉市疾病预防控制中心招聘眼视光师1名笔试模拟试题及答案解析
- 2026重庆巫山县生态环境局招聘7人笔试备考题库及答案解析
- 2026年兴业县教师招聘笔试备考题库及答案解析
- 2026年柏乡县教师招聘笔试参考题库及答案解析
- 2026福建农林大学附属小学福州仓山淮安实验小学招聘笔试模拟试题及答案解析
- 2026贵州黔南公路建设养护有限公司公开招聘3人笔试模拟试题及答案解析
- 眼科疾病诊疗技术新进展与挑战
- 2026年初三年级资深班主任工作经验分享课件-班级管理的“细”与“实”
- 2026年丽江市消防救援局第三批政府专职消防员、消防文员招聘(55人)笔试备考试题及答案详解
- 2026年中考英语短文填空(7大考点14篇跟踪训练)
- 高校实验室建设项目投标文件
- 住宅项目施工总承包工程方案投标文件(技术标)
- 营商环境平台建设方案
- 2026新教材统编版九年级上册历史:全册教材问题答案
- 2026年国企纪检监察岗位面试题含答案
- 2026北京市市政工程设计研究总院有限公司校园招聘笔试历年参考题库
- 七大浪费分析与改善培训
评论
0/150
提交评论