Showing posts with label hàm IF. Show all posts
Showing posts with label hàm IF. Show all posts

Saturday, August 24, 2013

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

Tam giác

Hôm nay Blog Mạng Lưới Toàn Cầu 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à empty và is_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.

Friday, August 23, 2013

Cách viết câu lệnh if trong PHP

Chụp màn hình một đoạn code của hàm if

Lệnh if trong PHP là lệnh hay được dùng và rất quan trọng. Nó được sử dụng để điều khiển việc thực thi các lệnh dựa trên kết quả TRUE hoặc FALSE của một hoặc nhiều biểu thức điều kiện.

Về cấu trúc thì đoạn code dưới đây trình bày cấu trúc tổng quát và đầy đủ của câu lệnh if:

if (Biểu thức điều kiện 1) {
Khối lệnh được thực thi 1
}
else if (Biểu thức điều kiện 2) {
Khối lệnh được thực thi 2
}
else if (Biểu thức điều kiện n) {
Khối lệnh được thực thi n
}
else {
Khối lệnh được thực thi cuối cùng
}

Biểu thức điều kiện sẽ được đưa vào trong dấu ngoặc đơn (), còn khối lệnh thực thi được đưa vào trong dấu ngoặc nhọn {}

Chỉ khi nào Biểu thức điều kiện có giá trị TRUE thì Khối lệnh bên trong tương ứng mới được thực thi, còn không thì chương trình sẽ bỏ qua để đi tới xem xét biểu thức điều kiện tiếp theo.

Nếu Biểu thức điều kiện có giá trị TRUE thì Khối lệnh bên trong tương ứng được thực thi, các biểu thức điều kiện và khối lệnh khác của hàm if đó sẽ bị bỏ qua.

Câu lệnh có thể chứa nhiều mệnh đề else if nhưng chỉ được phép chứa duy nhất 1 mệnh đề else và nó phải ở vị trí cuối cùng (không tính mệnh đề else khác trong câu lệnh if lồng)

Mệnh đề else cuối cùng không có biểu thức điều kiện đi kèm mà chỉ có khối lệnh thực thi. Khi tất cả các điều kiện if và else if đều sai thì lúc đó khối lệnh thực thi của else cuối cùng mới được chạy...

Trong thực tế không phải lúc nào bạn cũng viết đầy đủ cấu trúc trên do vậy có tới 3 cách viết cho câu lệnh if, tùy theo mục đích mà nên sử dụng cái nào cho phù hợp.

Câu lệnh if không có mệnh đề nào khác đi kèm

if (biểu thức điều kiện) {
khối lệnh thực thi
}


Ví dụ: 

if ($tuoi >=18) {
echo 'Được cấp bằng lái xe';
}

Giải thích: Nếu biến $tuoi có giá trị lớn hơn hoặc bằng 18 thì in ra dòng chữ Được cấp bằng lái xe.

Câu lệnh if có mệnh đề else đi kèm

if (biểu thức điều kiện) {
khối lệnh thực thi
} else {
khối lệnh thực thi
}

Ví dụ:

if ($tuoi >=18) {
echo 'Được cấp bằng lái xe';
}
else {
echo 'Chưa đủ tuổi!'
}

Giải thích: Nếu biến $tuoi có giá trị lớn hơn hoặc bằng 18 thì in ra dòng chữ Được cấp bằng lái xe. Còn nếu không thì in ra dòng chữ 'Chưa đủ tuổi'.

Câu lệnh if có cả mệnh đề else if và else

if (biểu thức điều kiện) {
khối lệnh thực thi
} else if (biểu thức điều kiện) {
khối lệnh thực thi
} else {
khối lệnh thực thi
}

Ví dụ:

if ($diem_tong_ket>=8) {
$xep_loai = 'Bằng giỏi';
}
else if ($diem_tong_ket>=7) {
$xep_loai = 'Bằng khá';
}
else if ($diem_tong_ket>=6) {
$xep_loai = 'Trung bình khá';
}
else if ($diem_tong_ket>=5) {
$xep_loai = 'Trung bình';
}
else {
echo 'Học lại!';
}

Giải thích: Nếu biến $diem_tong_ket có giá trị lớn hơn hoặc bằng 8 thì in ra dòng chữ 'Bằng giỏi'. Nếu không lớn hơn 8 và đồng thời lớn hơn hoặc bằng 7 thì in ra dòng chữ 'Bằng khá'. Nếu không lớn hơn 7 và đồng thời lớn hơn hoặc bằng 6 thì in ra dòng chữ 'Trung bình khá'. Nếu không lớn hơn 6 và đống thời lớn hơn hoặc bằng 5 thì in 'Trung bình'. Cuối cùng, ngoài tất cả các trường hợp trên - tức là nhỏ hơn 5 thì sẽ in ra dòng 'Học lại!'

Câu lệnh if với biểu thức điều kiện phức

Sẽ không chỉ có 1 biểu thức điều kiện mà sẽ có vài biểu thức điều kiện cùng kết hợp với nhau để xem xét. Nó cũng giống như kiểu bạn chọn mua một cái điện thoại, nó sẽ phải thỏa mãn vài điều kiện, chẳng hạn không có giá quá 10 triệu, phải là điện thoại thông minh, có định vị toàn cầu, hãng sản xuất là Iphone hoặc SamSung...Bạn có thể chọn bắt buộc phải thỏa mãn cả 4 điều kiện trên thì mới mua hoặc cũng có thể chọn thỏa mãn ít nhất 3/4 thì bạn cũng mua...

if (biểu thức điều kiện 1 toán tử logic biểu thức điều kiện 2 toán tử logic biểu thức điều kiện 3...) {
khối lệnh thực thi;
}

Ví dụ:

if (empty($so_luong) || !is_numeric($so_luong) || ($so_luong <=0)) {
$thong_diep = 'Số lượng phải được nhập và phải là một số nguyên dương';
}

Giải thích: Dòng code trên kiểm tra xem biến $so_luong có được nhập hay không bằng hàm empty(), tiếp đến nó kiểm tra dữ liệu nhập vào có phải là một số hay không bằng hàm is_numeric(), cuối cùng là xác thực số nhập vào phải có giá trị dương. Bạn có thể kết hợp các toán tử logic như &&, ||, ! trong biểu thức điều kiện phức.

Ngoài ra còn có câu lệnh if lồng - tức là câu lệnh if này lồng trong câu lệnh if khác.

Xem thêm: