Trong khoa học máy tính, các câu lệnh điều kiện (conditional statement), biểu thức điều kiện (conditional expression) và cấu trúc điều kiện (conditional construct) là các tính năng của ngôn ngữ lập trình, thực hiện các tính toán hoặc hành động khác nhau tùy thuộc vào điều kiện boolean do lập trình viên đưa ra được đánh giá là đúng hay sai. Ngoài trường hợp xác định nhánh (branch predication), điều này luôn đạt được bằng cách thay đổi có chọn lọc luồng điều khiển dựa trên một số điều kiện.
Trong các ngôn ngữ lập trình mệnh lệnh, thuật ngữ " câu lệnh điều kiện" (conditional statement) thường được sử dụng, trong khi đó trong lập trình chức năng, thuật ngữ " biểu thức điều kiện" hoặc "cấu trúc điều kiện" được ưa thích hơn, bởi vì các thuật ngữ này đều có ý nghĩa riêng biệt.
If–then(–else)
Cấu trúc if–then
xây dựng (đôi khi được gọi là if–then–else
) phổ biến trên nhiều ngôn ngữ lập trình. Mặc dù cú pháp thay đổi từ ngôn ngữ sang ngôn ngữ, cấu trúc cơ bản (ở dạng mã giả) trông như thế này:
If (boolean condition) Then
(consequent)
Else
(alternative)
End If
Tham khảo chéo hệ thống lựa chọn
Bảng này đề cập đến đặc tả ngôn ngữ gần đây nhất của mỗi ngôn ngữ. Đối với các ngôn ngữ không có thông số kỹ thuật, việc triển khai chính thức mới nhất được đề cập đến.
Ngôn ngữ lập trình | Structured if | switch–select–case | Arithmetic if | Pattern matching[A] | ||
---|---|---|---|---|---|---|
then | else | else–if | ||||
Ada | Có | Có | Có | Có | Không | Không |
Bash shell | Có | Có | Có | Có | Không | Có |
C, C++ | Có | Có | Unneeded[B] | Fall-through | Không | Không |
C# | Có | Có | Unneeded[B] | Có | Không | Không |
COBOL | Có | Có | Unneeded[B] | Có | Không | Không |
Eiffel | Có | Có | Có | Yes | Không | Không |
F# | Có | Có | Có | Unneeded[C] | Không | Có |
Fortran 90 | Có | Có | Có | Có | Có[F] | Không |
Go | Có | Có | Unneeded[B] | Có | Không | Không |
Haskell | Có | Needed | Unneeded[B] | Bản mẫu:Yes-no[C] | Không | Có |
Java | Có | Có | Unneeded[B] | Fall-through[1] | Không | Không |
ECMAScript (JavaScript) | Có | Có | Unneeded[B] | Fall-through[2] | Không | Không |
Mathematica | Có | Có | Có | Có | Không | Có |
Oberon | Có | Có | Có | Có | Không | Không |
Perl | Có | Có | Có | Có | Không | Không |
PHP | Có | Có | Có | Fall-through | Không | Không |
Pascal, Object Pascal (Delphi) | Có | Có | Unneeded | Có | Không | Không |
Python | Có | Có | Có | Không | Không | Không |
QuickBASIC | Có | Có | Có | Có | Không | Không |
Ruby | Có | Có | Có | Có | Không | Không |
Rust | Có | Có | Có | Unneeded | Không | Có |
Scala | Có | Có | Unneeded[B] | Fall-through[cần dẫn nguồn] | Không | Có |
SQL | Có[S] | Có | Có | Có[S] | Không | Không |
Swift | Có | Có | Có | Có | Không | Có |
Visual Basic, classic | Có | Có | Có | Có | Không | Không |
Visual Basic.NET | Có | Có | Có | Có | Không | Không |
Windows PowerShell | Có | Có | Có | Fall-through | Không | Không |
- ^ This refers to pattern matching as a distinct conditional construct in the programming language – as opposed to mere string pattern matching support, such as regular expression support.
- 1 2 3 4 5 The often-encountered
else if
in the C family of languages, and in COBOL and Haskell, is not a language feature but a set of nested and independent if then else statements combined with a particular source code layout. However, this also means that a distinct else–if construct is not really needed in these languages. - 1 2 In Haskell and F#, a separate constant choice construct is unneeded, because the same task can be done with pattern matching.
- ^ In a Ruby
case
construct, regular expression matching is among the conditional flow-control alternatives available. For an example, see this Stack Overflow question. - 1 2 SQL has two similar constructs that fulfill both roles, both introduced in SQL-92. A "searched
CASE
" expressionCASE WHEN cond1 THEN expr1 WHEN cond2 THEN expr2 [...] ELSE exprDflt END
works likeif ... else if ... else
, whereas a "simpleCASE
" expression:CASE expr WHEN val1 THEN expr1 [...] ELSE exprDflt END
works like a switch statement. For details and examples see Case (SQL). - ^ Arithmetic
if
is obsolescent in Fortran 90.
Xem thêm
Tham khảo
Liên kết ngoài
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.