Thảo luận:Bảng tra cứu thuật ngữ ngôn ngữ lập trình C/Xét điều kiện

Tủ sách mở Wikibooks
Bước tới điều hướng Bước tới tìm kiếm

?[sửa]

Có 3 loại mệnh đề lựa chọn:

  1. If
  2. If .. Else
  3. Switch

The ? (ternary condition) operator is a more efficient form for expressing simple if statements. It has the following form:


 expression1 ? expression2:  expression3



It simply states:


if expression1 then expression2 else expression3


For example to assign the maximum of a and b to z:


 z = (a>b) ? a : b;

which is the same as:


 if (a>b)

z = a; else z=b;


If[sửa]

Công Thức
   if (<biểu thức>)
      <mệnh đề1>
Thí Dụ

If .. Else[sửa]

Công Thức
   if (<biểu thức>)
      <mệnh đề1>
   else
      <mệnh đề2>
Thí Dụ


Trong dạng này, nếu phần trong ngoặc đơn có giá trị khác 0 hay có giá trị "đúng" (true) thì dòng điều khiển sẽ chuyển vào để thực thi <mệnh đề1>. Nếu trong câu lệnh if có thêm từ khóa else thì <mệnh đề2> sẽ được thực thi một khi <biểu thức> có giá trị 0 hay giá trị "sai".

Nhắc lại: như trên thì vị trí mỗi mệnh đề đều có thể thay bằng một khối mã.

Trong cách viết mã lồng nhau phức tạp bao gồm nhiều mệnh đề if thì từ khóa else sẽ được gán vào mệnh đề if phía trên gần nhất nào chưa được ghép. Để tránh sự nhầm lẫn cách tốt nhất là lồng chúng vào trong các dấu {}.

switch[sửa]

Mệnh đề switch sẽ gây ra việc chuyển dòng điều khiển sang một trong những mệnh đề con kế tiếp tùy theo giá trị của một biểu thức X (biểu thức này phải có kiểu nguyên). Các mệnh đề con này thường là các mệnh đề phức hợp. Đứng trước mỗi mệnh đề con sẽ là một từ khóa case, sau đó là một biểu thức hằng Hi, và dấu hai chấm : gắn liền tiếp theo đó là mệnh đề con Mi.

Khi giá trị của X trùng với một giá trị Hi được nêu ở đâu thì mệnh đề con đi gắn liền vói hằng tại đó (tức là Mi) sẽ được thực thi.

Nếu X không bằng với bất kì giá trị Hi nào thì người lập trình có thể dùng thêm từ khóa default, sau đó là dấu hai chấm : và tiếp theo là một mệnh đề con Mdefault. Mệnh đề con này sẽ được thực thi khi mà giá trị của X khác với mọi giá trị hằng Hi.

Lưu ý:

  • Trong câu lệnh switch thì không cho phép có hai giá trị hằng bằng nhau. Nghĩa là khi X được đánh giá thì chỉ có tối đa một mệnh đề con được thực thi.
  • Các câu lệnh switch có thể được dùng trong dạng lồng vào nhau (nest), một từ khóa case hay default sẽ thuộc vào câu lệnh switch bên trong nhất (hay nhỏ nhất) chứa nó.
  • Một khi dòng điều khiển hoàn tất câu lệnh con Mi thì nó sẽ tiếp tục thi hành các câu lệnh con Mi+1 theo sau cho đến khi nó bị yêu cầu ngưng bởi câu lệnh nhảy (mà thường dược dùng nhiều nhất là câu lệnh break)

Trong dạng thí dụ dưới đây, nếu <biểu thức X> có giá trị bằng <hằng H2> thì mệnh đề các biểu thức <mệnh đề M2>,<mệnh đề M3>, và <mệnh đề Mdefault> sẽ lần lần lượt được thực thi theo thứ tự nếu như trong chúng không có câu lệnh break. Nhưng vì trong mã thí dụ có câu lệnh break nên dòng điều khiển sẽ ngưng và kết thúc câu lệnh switch khi thi hành lệnh break này.

  switch (<biểu thức X>)
  {
     case <hằng H1> : 
<mệnh đề M1>
case <hằng H2> :
<mệnh đề M2>
break;
case <hằng H3> :
<mệnh đề M3>
default :
<mệnh đề Mdefault>
}