Lệnh break.
Sử
dụng break chúng ta có thể thoát khỏi vòng lặp ngay cả khi điều kiện để
nó kết thúc chưa được thoả mãn. Lệnh này có thể được dùng để kết thúc một
vòng lặp không xác định hay buộc nó phải kết thúc giữa chừng thay vì kết thúc
một cách bình thường. Ví dụ, chúng ta sẽ dừng việc đếm ngược trước khi nó kết
thúc:
// break loop example #include <iostream.h> int main () { int n; for (n=10; n>0; n--) { cout << n << ", "; if (n==3) { cout << "countdown aborted!"; break; } } return 0; } |
10, 9, 8, 7, 6, 5, 4, countdown aborted! |
Lệnh
continue.
Lệnh
continue làm cho chương trình bỏ qua phần còn lại của vòng lặp và nhảy
sang lần lặp tiếp theo. Ví dụ chúng ta sẽ bỏ qua số 5 trong phần đếm ngược:
// break loop example #include <iostream.h> int main () { for (int n=10; n>0; n--) { if (n==5) continue; cout << n << ", "; } cout << "FIRE!"; return 0; } |
10, 9, 8, 7, 6, 4, 3, 2, 1, FIRE! |
Lệnh
goto.
Lệnh
này cho phép nhảy vô điều kiện tới bất kì điểm nào trong chương trình. Nói
chung bạn nên tránh dùng nó trong chương trình C++. Tuy nhiên chúng ta vẫn có
một ví dụ dùng lệnh goto để đếm ngược:
// goto loop example #include <iostream.h> int main () { int n=10; loop: ; cout << n << ", "; n--; if (n>0) goto loop; cout << "FIRE!"; return 0; } |
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, FIRE! |
Hàm
exit.
Mục
đích của exit là kết thúc chương trình và trả về một mã xác định. Dạng
thức của nó như sau
void exit (int exit code);
exit code được dùng bởi một số hệ điều
hành hoặc có thể được dùng bởi các chương trình gọi. Theo quy ước, mã trả về 0
có nghĩa là chương trình kết thúc bình thường còn các giá trị khác 0 có nghĩa
là có lỗi.
Cấu
trúc lựa chọn: switch.
Cú
pháp của lệnh switch hơi đặc biệt một chút. Mục đích của nó là kiểm tra
một vài giá trị hằng cho một biểu thức, tương tự với những gì chúng ta làm ở
đầu bài này khi liên kết một vài lệnh if và else if với nhau.
Dạng thức của nó như sau:
switch (expression) {
case constant1:
block of
instructions 1
break;
case constant2:
block of
instructions 2
break;
.
.
.
default:
default
block of instructions
}
Nó
hoạt động theo cách sau: switch tính biểu thức và kiểm tra xem nó có
bằng constant1 hay không,
nếu đúng thì nó thực hiện block of
instructions 1 cho đến khi tìm thấy từ khoá break, sau
đó nhảy đến phần cuối của cấu trúc lựa chọn switch.
Còn nếu không, switch sẽ kiểm tra xem biểu thức có bằng constant2 hay không. Nếu đúng nó sẽ
thực hiện block of instructions 2
cho đến khi tìm thấy từ khoá break.
Cuối cùng, nếu giá trị biểu thức không bằng bất kì hằng nào được chỉ định ở
trên (bạn có thể chỉ định bao nhiêu câu lệnh case tuỳ thích), chương
trình sẽ thực hiện các lệnh trong phần default: nếu nó tồn tại vì phần
này không bắt buộc phải có.
Hai
đoạn mã sau là tương đương:
ví dụ switch |
if-else tương
đương |
switch (x) { case 1: cout << "x is 1"; break; case 2: cout << "x is 2"; break; default: cout << "value of x unknown"; } |
if (x == 1) { cout << "x is 1"; } else if (x == 2) { cout << "x is 2"; } else { cout << "value of x unknown"; } |
Tôi
đã nói ở trên rằng cấu trúc của lệnh switch hơi đặc biệt. Chú ý
sự tồn tại của lệnh break ở cuối mỗi khối lệnh. Điều này là cần thiết vì
nếu không thì sau khi thực hiện block of
instructions 1 chương trình sẽ không nhảy đến cuối của lệnh
switch mà sẽ thực hiện các khối lệnh tiếp theo cho đến khi nó tìm thấy lệnh break
đầu tiên. Điều này khiến cho việc đặt cặp ngoặc nhọn { } trong mỗi trường hợp là không cần
thiết và có thể được dùng khi bạn muốn thực hiện một khối lệnh cho nhiều trường
hợp khác nhau, ví dụ:
switch (x) { case 1: case 2: case 3: cout << "x is 1, 2 or 3"; break; default: cout << "x is not 1, 2 nor 3"; } |
Chú
ý rằng lệnh switch chỉ có
thể được dùng để so sánh một biểu thức với các hằng. Vì vậy chúng
ta không thể đặt các biến (case (n*2):)
hay các khoảng (case (1..3):)
vì chúng không phải là các hằng hợp lệ.
style="BORDER-RIGHT:
medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm;
PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM:
windowtext 3pt solid">
Nếu bạn cần kiểm tra các khoảng hay nhiều giá
trị không phải là hằng số hãy kết hợp các lệnh if và else if