Thực hành lệnh if và toán tử trong PHP

Hôm nay blog Kiến càng sẽ cùng bạn thực hành viết code liên quan đến lệnh if và toán tử trong PHP thông qua một bài tập khá đơn giản

Lệnh if và toán tử luôn đi kèm với nhau, đặc biệt là toán tử so sánh và toán tử logic, thành thạo lệnh if là yêu cầu rất quan trọng để nâng cao khả năng code PHP của bạn…

Bài tập hôm nay của chúng ta như thế này:

  • Người dùng nhập vào độ dài của 3 đoạn thẳng bất kỳ, yêu cầu là phải xác định được là 3 đoạn thẳng này có tạo thành được tam giác không?
  • Ý thứ hai: nếu đã thỏa mãn độ dài của 3 cạnh trong tam giác rồi thì xác định xem đây là tam giác loại gì? là đều, cân, vuông, vuông cân hay chỉ là tam giác thường thôi?

Tôi sẽ viết 2 file, thứ nhất là file index.php chứa form để người dùng nhập liệu. Ta dùng các thẻ input với type là text – bạn nhớ đặt tên cho các thẻ input thông qua thuộc tính name…

Code mẫu:

<form action="action.php" method="get">
   Độ dài đoạn thứ nhất: <input type="text" name="a"><br/>
   Độ dài đoạn thứ hai: <input type="text" name="b"><br/>
   Độ dài đoạn thứ ba: <input type="text" name="c"><br/>
   <input type="submit" value="Tính toán">
</form>

File thứ 2 là action.php, đây chính là nơi ta sẽ viết các giải thuật để giải quyết yêu cầu của bài toán.

Đầu tiên là đoạn code lấy dữ liệu từ trang index.php truyền sang bằng phương thức get:

$a=$_GET['a'];
$b=$_GET['b'];
$c=$_GET['c'];

Tiếp theo là đoạn code kiểm tra dữ liệu nhập vào – bao gồm 2 phần, kiểm tra nhập thiếu dữ liệu và kiểm tra dữ liệu nhập vào có đúng là số hay không:

// Kiểm tra nhập thiếu dữ liệu.        
if (empty($a) || empty($b) || empty($c)) {
    echo 'Nhập thiếu dữ liệu !!!';
    exit();
}
//Kiểm tra độ dài có phải là số hay không.
if (!is_numeric ($a) || !is_numeric ($b) || !is_numeric ($c)) {
    echo 'Độ dài phải là số !!!';
    exit();
}

Nếu không vượt qua được kiểm tra, chương trình sẽ thông báo lỗi thông qua lệnh echo và thoát bằng lệnh exit() mà không cần thực hiện các lệnh phía sau nữa. Ở trên tôi dùng 2 hàm dựng sẵn của PHP là emptyis_numeric, bạn nên ghi nhớ 2 hàm này vì nó rất hay được dùng.

Tiếp đến là khối lệnh chính nơi ta thực hiện các yêu cầu của bài toán.

Để 3 cạnh trở thành một tam giác thì yêu cầu phải là tổng độ dài của 2 cạnh bất kỳ phải lớn hơn cạnh còn lại, do vậy yêu cầu nhứ nhất sẽ có dạng như thế này:

if (($a + $b) > $c && ($b + $c) > $a && ($c + $a) > $b) {
        echo ‘Thỏa mãn yêu cầu là tam giác ‘;
}
else {
       echo ‘Không tạo thành được tam giác ‘;
}

Ở trên chúng ta sử dụng toán tử && để kết hợp các điều kiện đồng thời phải xảy ra.

Ý thứ 2 là xác định các kiểu tam giác.

Để là tam giác đều thì 3 cạnh phải bằng nhau, tam giác cân thì chỉ cần 2 cạnh bằng nhau, tam giác vuông thì bình phương một cạnh phải bằng tổng bình phương 2 cạnh còn lại, vuông cân tức là vừa vuông và cân, tam giác thường là tam giác nằm ngoài tất cả các dạng ở trên.

//Loại tam giác.
 
$a2=$a*$a;
$b2=$b*$b;
$c2=$c*$c;
 
if ($a == $b && $b == $c) {
        $tam_giac = 'Tam giác đều';
}
    
else if ($a == $b || $a == $c || $c == $b)  {
        if ($a2==$b2+$c2 || $b2==$a2+$c2 || $c2==$a2+$b2) {
            $tam_giac = 'Tam giác vuông cân';
        }
else {
            $tam_giac = 'Tâm giác cân';
        }
}
    
else if ($a2==$b2+$c2 || $b2==$a2+$c2 || $c2==$a2+$b2) {
        $tam_giac= 'Tam giác vuông';
}
    
else {
        $tam_giac = 'Tam giác thường';
}

Đoạn code trên có sử dụng if lồng để xác định tam giác vuông cân. Mệnh đề else cuối cùng để xác định tam giác thường khi mà tất cả các điều kiện đều không thỏa mãn. Một điều hay sai sót là bạn sẽ nhầm lẫn toán tử so sánh bằng “==” với toán tử gán “=

Trong các bài toán kiểu này, những trường hợp đặc biệt hơn nên được để lên trên để kiểm tra trước, cụ thể, tam giác nếu là đều thì nó sẽ chắc chắn là cân, còn cân thì chưa chắc đều, do vậy, chúng ta nên để trường hợp đều là cái đầu tiên để thực hiện kiểm tra điều kiện, nếu nó không thỏa mãn đều ta mới kiểm tra cân hay không.

Giờ giả dụ bạn kiểm tra cân trước, thì rất có thể đó là tam giác đều nhưng bạn lại bảo nó là tam giác cân…Có 2 toán tử logic được dùng trong các dòng code ở trên, đó là toán tử Và (&&), toán tử Hoặc (||)…Vậy là xong, bạn chỉ cần echo cái $tam_giac để thông báo cho người dùng nữa là OK.