我們可以使用 goto 語句(無條件分枝語句)跳到程序中的標記。在 C++ 及 Pascal 中,標記是用一個標識符(即標記的名稱),然後一個冒號(:)來表示;不過,在 Pascal 中的標記必須要用保留字 label 來宣告,而 C++ 中的標記是不用宣告的。
以下的程序利用了一個無條件分枝去繪出一個以星號(*)組成的倒三角形,不過行數必須是十行或以下。
C++ 版本 | Pascal 版本 |
#include <iostream.h> main() { int i, j, n; cout << "n? "; cin >> n; for (i = 1; i <= n; i++) { if (i > 10) goto finished; for (j = n; j >= i; j--) cout << "* "; cout << endl; } finished: cout << "Finished!" << endl; return 0; } |
program prog_22(input, output); label finished; var i, j, n: integer; begin write('n? '); readln(n); for i := 1 to n do begin if i > 10 then goto finished; for j := n downto i do write('* '); writeln end; finished: writeln('Finished!') end. |
輸出範例一(紅色的文字由使用者輸入)︰ | |
n? 8 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Finished! |
|
輸出範例二(紅色的文字由使用者輸入)︰ | |
n? 15 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Finished! |
即使無條件分枝用起來很方便,我們應避免使用。事實上,要寫一個沒有無條件分枝的程序不會太困難。例如,上列程序中有陰影的部份可以像下列程序一般改寫︰
C++ 版本 | Pascal 版本 |
#include <iostream.h> main() { int i, j, n; cout << "n? "; cin >> n; i = 1; while ((i <= n) && (i <= 10)) { for (j = n; j >= i; j--) cout << "* "; cout << endl; i++; } cout << "Finished!" << endl; return 0; } |
program prog_23(input, output); var i, j, n: integer; begin write('n? '); readln(n); i := 1; while (i <= n) and (i <= 10) do begin for j := n downto i do write('* '); writeln; i := i + 1 end; writeln('Finished!') end. |