欢迎来到天天文库
浏览记录
ID:46863976
大小:106.50 KB
页数:14页
时间:2019-11-28
《12-C上机指导参考给学生》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《C程序设计》上机指导第一部分:VisualC++6.0集成开发环境。见教材P370-P376第二部分:调试程序的方法与技巧程序调试主要有两种方法,即静态调试和动态调试。程序的静态调试就是在程序编写完以后,由人工“代替”或“模拟”计算机,对程序进行仔细检查,主耍检查程序中的语法规则和逻辑结构的正确性。通过静态调试,可以大大缩短上机调试的时间,提高上机的效率。程序的动态调试就是实际上机调试,它贯穿在编译、连接和运行的整个过程屮。根据程序编译、连接和运行吋计算机给出的错误信息进行程序调试。在此基础上,通过“按步执行”、“设置断点”进行程序的调试。实践表明,静态调试和动态调试是
2、互相补充、相辅相成的,缺少其中任何一种方法都会使查找错误的效率降低。一.静态调试1.对程序语法规则进行检查(1)语句正确性检查。检杏每个语句的书写是否有字符遗漏,包括必要的空格符是否都有。检查两数调用时形参和实参的类型、个数是否相同。(2)语法正确性检查。书写程序时必须遵守语法规则,否则编译时程序将给出错误信息。语句的配对检查:许多语句都是配対出现的,不能只写半个语句。另外,语句有多重括号时,每个括号也都应成对出现,不能缺左少右的。注意检查语句顺序:冇些语句不仅句法本身要正确,而H语句在程序中的位置也必须止确。例如,变量定义要放在所有可执行语句之前。2.检查程序的逻辑结构
3、⑴检査程序中各变量的初值和初值的位置是否正确。我们经常遇到的是“累加”、“累乘”,其初值和位置都非常重要。用于累加的变量应取0初值或给定的初值,用于累乘的变量应赋初值为1或给定的值。因为累加或累乘都是通过循环结构来实现的,因此这些变呈赋初值语句应在循坏体Z外。对于多重循环结构,内循环体中的变量赋初值语句应在内循坏Z外;外循环体中的变量赋初值语句应在外循环Z外。如果赋初值的位置放错了,那么将得不到预想的结果。⑵检查程序中分枝结构是否正确。程序屮的分枝结构都是根据给定的条件来决定执行不同的路径的,因此在设置各条路径的条件时一定要谨慎,在设置“大于”、“小于”这些条件吋,一定要
4、仔细考虑是否应该包括“等于”这个条件,更不能把条件写反。尤其要注意的是,实型数据在运算过程中会产生误差,如果用“等于”或“不等于”对实数的运算结果进行比较,则会因为误差而产生误判断,路径选择也就错了。因此在遇到要判断实数a与b相等与否作为条件来选择路径时,应该把条件写成:if(fabs(a-b)<=le-6),而不应该写成if(a=b)o要特别注意条件语句嵌套时,if和else的配对关系。(1)检査程序中循环结构的循环次数和循环嵌套的正确性。C语言屮可川for循坏、while循环、do-while循环。在给定循环条件时,不仅要考虑循环变量的初始条件,还要考虑循环变量的变化
5、规律、循环变量变化的吋间,任何一条变化都会引起循环次数的变化。(2)检査表达式的合理与否。程序中不仅要保证表达式的正确性,而R还要保证表达式的合理性。尤其要注意表达式运算屮的溢出问题,运算数值可能超出-整数范围就不应该采用整型运算,否则必然导致运算结果的错谋。两个相近的数不能相减,以免产生“下溢”。更要避免在一个分式的分母运算屮发牛“下溢”,因为编译系统常把卜•溢做零处理。因此分母中出现下溢时要产生“被零除”的错误。由于表达式不合理而引起的程序运行错误往往很难查找,会增加程序调试的难度。程序的静态调试是程序调试非常重要的一步。初学者应培养自己静态检査的良好习惯,在上机前认
6、真做好程序的静态检査工作,从而节省上机时间,使有限的机时充分发挥作用。二.动态调试在静态调试中可以发现和改正很多错误,但有一些比较隐蔽的错涙只有上机进行动态调试,才能够找到这些错误并改正它们。1•编译过程中的调试编译过程除了将源程序翻译成目标程序外,还要对源程序进行语法检杳。如果发现源程序有语法错谋,系统将显示错误信息。川户可以根据这些提示信息查找出错误性质,并在程序屮出错之处进行相应的修改。有时我们会发现编译时有几行的错谋信息都是一样的,检查这些行本身没有发现错误,这时要仔细检查与这些行有关的名字、表达式是否有问题。例如,因为程序中数组说明语句有错,这吋,那些•该数组有
7、关的程序行都会被编译系统检查出错。这种情况下,用户只要仔细分析一下,修改了数组说明语句的错误,许多错误就会同时没冇To对于编译阶段的调试,要充分利用屏幕给岀的错课信息,对它们进行仔细分析判断。只要注意总结经验,使程序通过编译是不难做到的。2.连接过程的调试编译通过示要进行连接。连接的过程也有杏错的功能,它将指岀外部调用、函数之间的联系及存储区设置等方面的错i吴。如果连接时有这类错谋,编译系统也会给出错误信息,用户要对这些信息仔细判断,从而找出程序屮的问题并改正之。连接时较常见的错课有以F儿类:(1)某个外部调用冇错,通常系统明
此文档下载收益归作者所有