1 if 结构
1.1if语句的基本形式
 
 
  
 
  
 
  
 
 但是这种方式只适用于简单的结构 。
1.2if语句的示例

输出量应为两个不相等的实数。两个相等的实数或两个复数。
3.写出算法本程序可分为三大块,它的函数分别为输入,运算过程和输出。我们把每一个大块分解成更小的,更细微的工作。根据判别式的值,可能有三种计算途径,读取输入的数据、 计算出根、 输入出根 ,所以我们要用到有三种选项的 if 结构。产生的伪代码如下

4.matlab代码如下
% 目的: 
% 此程序解出一元二次方程的根 
% 方程的形式为a*x^2 + b*x + c = 0。无论方程的根型如何,它都可以计算出答案。
% 
% 定义变量: 
% a --方程的x^2项系数 
% b --方程的x项系数 
% c --方程的常数项 
% discriminant --方程的判别式 
% imag_part --方程的虚部(对于复根) 
% real_part --方程的实部(对于复根) 
% x1 --方程的第一个解(对于实数根) 
% x2 --方程的第二个解(对于实数根) 
% 提示用户输入方程的系数 
disp ('此程序解出一元二次方程的根'); 
disp ('方程的形式为A*X^2 + B*X + C = 0。'); 
a = input('请输入A的系数: '); 
b = input('请输入B的系数: ');
c = input('请输入C的系数: '); 
%计算判别式 
discriminant = b^2 - 4 * a * c; 
%根据判别式的值,解方程的根 
if discriminant > 0 %方程有两个实数根 
 x1 = (-b + sqrt(discriminant)) / (2*a); 
 x2 = (-b - sqrt(discriminant)) / (2*a); 
 disp('此方程有两个实数根:'); 
 fprintf('x1 = %f\n', x1); 
 fprintf('x2 = %f\n', x2); 
elseif discriminant == 0 %方程有一个重根 
 x1 = ( -b ) / (2*a); 
 disp('此方程有两个相等的实数根:'); 
 fprintf('x1 = x2 = %f\n', x1); 
else %方程有复数根 
 real_part = (-b) / (2*a); 
 imag_part = sqrt( abs(discriminant)) / (2*a); 
 disp('此方程有复数根:'); 
 fprintf('x1 = %f + i %f \n',real_part, imag_part); 
 fprintf('x1 + %f - i %f \n', real_part, imag_part); 
end5.检测这个程序
 如果输入上面三个方程的系数得到对应的结果,则说明程序是正确的。运行结果:
        如果输入上面三个方程的系数得到对应的结果,则说明程序是正确的。运行结果:

1.3 关于 if 结构使用的注意事项


        MATLAB 翻译器经常把把已知的 end 语句和它最近的 if 语句联合在一起,所以第一个end 语句和 if y<0 最靠近,而第二个 end 与 if x>0 最接近。对于一个编写正确的程序,它能工作正常。但如果程序员编写出错误,它将会使编译器出现混淆性错误信息提示。例如,假设我们编写一个大的程序,包括如下的一个结构:  
这个程序包括了三个嵌套的 if 结构,在这个结构中可能有上千行的代码。现在假设第一个 end 在编辑区域突然被删除,那么 MATLAB 编译器将会自动将第二个 end 与最里面的if (test3)结构联合起来,第三个 end 将会和中间的 if(test2)联合起来。当编译器翻译到达文件结束的时候,那将发现第一个 if(test1)结构将永远没有结束,然后编译器就会产生一个错误提示信息,即缺少一个 end。但是,它不能告诉你问题发生在什么地方,这就使我们必须回过头去看整个程序,来找问题。在大多数情况下,执行一个算法,即可以用多个 else if 语句,也可以用 if 语句的嵌套。在这种情况下,程序员可以选择他喜欢的方式。
1.4if语句的不同表达形式
 
 
 
if grade > 95.0 
 disp('The grade is A.'); 
elseif grade > 86.0 
 disp('The grade is B.'); 
elseif grade >76.0 
 disp('The grade is C.'); 
elseif grade > 66.0 
 disp('The grade is D.'); 
else 
 disp('The grade is F.'); 
endif grade > 95.0 
 disp('The grade is A.');
else 
 if grade > 86.0 
 disp('The grade is B.'); 
 else 
 if grade > 76.0 
 disp('The grade is C.'); 
 else 
 if grade > 66.0 
 disp('The grade is D.'); 
 else 
 disp('The grade is F.'); 
 end 
 end 
 end 
end2 switch 结构
 
 
    
 
   
switch_expr 和每一个 case_expr 既可以是数值,也可以是字符值。注意在大多情况下只有一个语句块会被执行。当一个语句块被执行后,编译器就会跳到 end 语句后的第一个语句开始执行。如果 switch 表达和多个 case 表达式相对应,那么只有他们中的第一个将会被执行。让我们看一个简单的关于 switch 结构的例子。下面的语句用来判断 1 到 10 之间的数是奇数还是偶数。它用来说明一系列的 case 选项值的应用和 otherwise 语块的应用。
switch (value) 
case {1, 3, 5, 7, 9}, 
 disp('这个值是奇数。'); 
case {2, 4, 6, 8, 10}, 
 disp('这个值是偶数。'); 
otherwise, 
 disp('这个值超出范围。'); 
end3 try/catch 结构的应用
 
 
   % 初始化数组
a = [1 -3 2 5]; 
try 
 % 尝试输出一个元素
 index = input('请输入要显示的元素的下标: '); 
 disp(['a(' int2str(index) ') = ' num2str(a(index))] );
catch 
 % 如果出现错误则执行下面的代码
 disp( ['非法下标: ' int2str(index)] ); 
end运行结果:


















