P1: c > 5 (x+y > 5)
False: thực hiện lệnh d = c + x/2 True: thực hiện lệnh d = c – x/2
P2: d>= c + 2 P2: d>= c + 2
False True False True
d = c + x/2 d < c + 2 d = c + x/2 d >= c + 2 d = c – x/2 d < c + 2 d = c – x/2 d >= c + 2 x < 4 x >=4 x > -4 x <= -4
Chi tiết hơn, chúng ta đi giải thích các thủ tục để có đƣợc các miền từ giải thích của P1 và P2 (Hình 1.7) và theo dõi cụ thể trong Hình 1.8 bên dƣới đây:
Xem xét các nút phát biểu của biểu đồ dòng điều khiển từng cái một (Hình 1.7). Đầu tiên vị từ P1 chia toàn bộ miền vào hai khu vực. Biên P1 đƣợc thể hiện bằng một đƣờng thẳng đƣợc xây dựng từ biểu thức x + y = 5: Mọi điểm nằm bên trên đƣờng thằng (không thuộc đƣờng thẳng) đáp ứng điều kiện P1 là True, các điểm thuộc đƣờng thẳng và các điểm nằm phía dƣới đƣờng thẳng sẽ thỏa mãn P1 là False
Tiếp theo, chúng ta xem xét hai cách giải thích của vị từ P2. Cho P1 = True, P2 có giải thích sau đây:
Vì vậy, P2 tiếp tục phân chia miền đƣợc xác định bởi giá trị P1 = True thành hai bộ tƣơng ứng với hai giá trị của nó. Biên P2 chia ra, khi P1 là True, đƣợc đại diện bởi các đƣờng thẳng x = -4. Khu vực bên trái của biên P2 và trên biên P1 tƣơng ứng với P1P2 = TT, và khu vực bên phải của biên P2 và trên biên P1 tƣơng ứng với P1P2 = TF.
Hình 1.8: Các miền thu được từ các giải thích vị từ trong hình 1.74
Khi P1 = False, P2 có giải thích nhƣ sau:
P2 : x >4
Nói cách khác, P2 tiếp tục phân chia miền đƣợc xác định khi P1 = False thành hai bộ tƣơng ứng với hai giá trị thật của nó. Biên P2, khi P1 = True, đƣợc phân chia bởi đƣờng thẳng x = 4. Khu vực bên phải của biên P2 và dƣới biên P1 tƣơng ứng với P1P2
= FT, và khu vực bên trái của biên P2 và dƣới biên P1 tƣơng ứng với P1P2 = FF trong Hình 1.8.
Chúng ta có thể lƣu ý rằng nếu một chƣơng trình có chứa k vị từ trong đó, số lƣợng tối đa các miền thu đƣợc là 2k. Trong thực tế, số lƣợng các miền thu đƣợc là nhỏ hơn nhiều so với 2k,
*)Ví dụ 05: Chƣơng trình nhập vào điểm và xét điểm tổng kết môn học