2.1.2 Câu lệnh có điều kiện (2)

Bây giờ chúng ta sẽ thảo luận về 2 trường hợp đặc biệt của câu lệnh có điều kiện. Đầu tiên chúng ta sẽ nói về trường hợp câu lệnh được đặt sau if là một if khác.

Đây là kế hoạch chúng ta đưa ra cho ngày Chủ Nhật tới: “nếu thời tiết đẹp chúng ta sẽ đi tìm một nhà hàng đẹp. Nếu chúng ta tìm thấy nhà hàng đẹp, chúng ta sẽ ăn trưa ở đó. Ngược lại, chúng ta sẽ ăn sandwich. Nếu thời tiết xấu, chúng ta sẽ đến rạp hát. Nếu hết vé chúng ta sẽ đi mua sắm”

Có vẻ hơi loằng ngoằng đúng không ? Giờ chúng ta sẽ diễn đạt ý trên bằng ngôn ngữ C++. Hãy nhìn vào đoạn code dưới đây →

if(TheWeatherIsGood)

if(NiceRestaurantFound)

HaveLunch();

else

EatASandwich();

else

if(TicketsAvailable)

GoToATheatre();

else

GoShopping();

Có 2 điều quan trọng cần chú ý:

  • Sử dụng câu lệnh if như thế này gọi là nesting (lồng nhau); mọi câu lệnh else sẽ tạo thành cặp với câu lệnh if gần nhất đằng trước nó nhưng chưa khớp với bất kỳ câu lệnh else nào khác
  • Hãy chú ý nhìn xem viêc dấu thụt đầu dòng làm tăng khả năng đọc và nhấn mạnh sự lồng nhau của các câu lệnh có điều kiện như thế nào

Trường hợp đặc biệt thứ 2 cũng tương tự như nesting, nhưng có điểm khác biệt quan trọng. Một lần nữa, chúng ta sẽ thay đổi kế hoạch như sau: “Nếu thời tiết đẹp, chúng ta sẽ đi dạo, nếu không thì nếu chúng ta có vé chúng ta sẽ đến rạp hát, nếu không thì nếu có 3 cái bàn trống ở nhà hàng, chúng ta sẽ ăn trưa. Nếu mọi thứ đều không như mong đợi, chúng ta sẽ về nhà và chơi cờ”. Chúng ta hãy cùng viết bằng ngôn ngữ C++ →

Khi bạn lắp ráp các câu lệnh if nối tiếp nhau, nói được gọi là một cascade. Hãy chú ý một lần nữa về việc thụt đầu dòng cải thiện khả năng đọc code như thế nào.

if (TheWeatherIsGood)

GoForAWalk();

else if (TicketsAvailable)

GoToATheatre();

else if (TableAvailable)

GoForALunch();

else

PlayChessAtHome();