数学建模社区-数学中国

标题: 编程中常见错误 [打印本页]

作者: 森之张卫东    时间: 2015-7-14 22:10
标题: 编程中常见错误
1        编程中常见错误
1.1        常见语法错误
1.1.1        引用未定义变量

clear all
a=234
b=a
c=d


??? Undefined function or variable 'd'.
1.1.2        下标越界
clear all
a=rand(1,100);

for i=1:100,
   a(i)=i^2;
end
for j=2:101,
   b(j)=a(j);
end       

???  Index exceeds matrix dimensions.
1.1.3        维数不同赋值
?clear all
a=[1 2 3 4];
b=zeros(1,5);
for i=1:10,
   b(i,=a.^i;
end

???  In an assignment  A(matrix, = B, the number of columns in A and B
must be the same.

1.2        逻辑错误
1.2.1        变量未初始化
a=fix(10*rand(1,10));
m = length(a);
for i=1:m-1,
   for j=i+1:m,
      it=it+1;
      %error code
      b(it)=a(i)*a(i);%right code: b(it)=a(i)*a(j)
   end   
end

计数器变量it没有初始化

1.2.2        变量名误用
例子1:获得向量a中任取2个元素相乘的所有结果
a=fix(10*rand(1,10));
m = length(a);
it=0;
for i=1:m-1,
   for j=i+1:m,
      it=it+1;
      %error code
      b(it)=a(i)*a(i);%right code: b(it)=a(i)*a(j)
   end   
end
1.2.3        程序实现错误
没有按照模型(或算法)本身的意图实现编程。这种错误可能出现在程序的任何地方。
1.3        如何查找程序中的错误
有两类错误:
语法错误;
运行错误

如果碰到语法错误,相对来说比较容易解决;
如果遇到“运行错误”,即运行结果明显错误或者怀疑有错,此时查找错误比较困难;

1.3.1        查找错误的一般原则
先检查最可能出现错误的代码;
从上到下,逐行查错;
1.3.2        一般查错顺序
此时查错可以按以下顺序:
1、        表达式中的变量名是否用错了
2、        原则查看循环变量的范围是否有问题;
3、        查看向量、矩阵变量在赋值语句的下标表达式是否有问题
4、        查看算法中的逻辑错误,即程序没有实现算法的意图(这种错误不一定好找)
5、        检查for,while,if等语句是否与end配对,确保正确配对
6、        其他

注意:以上是一些经验性东西,还需要在实践中总结;






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5