程序段


F0 = F(a); F1 = F(b); ������/*区间两端点的函数值*/
if ( F0*F1 <= 0 ){���������/*区间中没有根,不做*/
��X0 = a; X1 = b; �������/*设置当前求根区间的两个端点*/
��for ( i = 1;i <= n;i++ ){�� /*最多允许迭代n次*/
��Xm = (X0+X1)/2;
��Fm = F(Xm); ��������� /*求中点及中点的函数值*/
��if ( abs(Fm) < eps || abs(X1-X0) < eps )
    break;           /*求到转出循环*/
��if ( F0*Fm > 0 )��������/*没有求到,缩小求根区间*/
����{ X0 = Xm;F0 = Fm;}��� /*向右缩小区间*/
��else X1 = X; ���������/*向左缩小区间*/
�}
}
��
��这段程序仍然不是结构化的程序,利用了C语言中的一个语句break,它的功能是将控制转移到它所在循环的后面第一个后续语句处。它与〖程序段1〗完成的工作相同,由于将转移语句与转出条件的判断直接联系在一起,可读性较好。再看〖程序段3〗,它利用了一个布尔变量finished,该变量的初值为false,当循环中求到了要求的结果时,将此变量的值改变为true,表示循环应结束,while 循环测试到finished为true,就自动退出循环,执行后续的语句。
��