Chương 8: Vòng lặp 

Chương 8 : Vòng lặp

precedent chapter Mục Lục next chapter

Một vòng lặp đơn giản : while

Thế nào là một vòng lặp ?
Một vòng lặp là một cấu trúc hoạt động cùng nguyên lý với điều kiện (if…else). Bạn sẽ thấy có nhiều điểm giống giống với chương điều kiện đấy !
Cụ thể hơn, một vòng lặp cho phép lặp lại các dòng lệnh (hay các instruction) nhiều lần. Sơ đồ hóa như sau :

vong lap


Đây là những gì xảy ra trong một vòng lặp :
  • Như thường lệ, các dòng lệnh sẽ chạy lần lượt theo thứ tự từ trên xuống dưới (mũi tên đỏ)
  • Cuối cùng, sau khi chạy dòng lệnh chót, nó sẽ chạy trỡ lại từ đầu (mũi tên xanh)
  • Rồi nó lại bắt đầu chạy theo thứ tự từ trên xuống dưới (mũi tên đỏ)
  • Rồi lại quay trỡ lại dòng đầu tiên sau khi chạy dòng chót (mũi tên xanh)
v.v…
Điều hơi buồn cười ở sơ đồ này là vòng lặp sẽ chạy hoài chạy hoài, cứ xong dòng cuối nó lại trỡ lại dòng đầu, không dừng lại. Chính vì vậy mà cho dù mình dùng vòng lặp kiểu nào đi nữa (while hay for) mình cũng phải chỉ ra điều kiện ! Khi điều kiện còn đúng thì vòng lặp được tiếp tục, khi điều kiện không còn đúng nữa thì nhảy ra khỏi vòng lặp !
Ví dụ một vòng lặp while đơn giản :

Code : PHP
<?php
while ($continue_boucle == "yes")
{
    // những dòng lệnh sẽ thực hiện trong vòng lặp này
}
?>
While có thể dịch là « khi mà », « khi mà continue_boucle bằng yes thì chạy các dòng lệnh bên trong ;
Những dòng lệnh bên trong vòng lặp được đặt giữa hai dấu ngoặc móc ! Mình bắt đầu gặp dấu ngoặc móc này khắp nơi rồi đa !
Để làm quen với cách dùng vòng lặp, tôi xin đưa ra vài ví dụ cụ thể như sau :

Ví dụ 1 : Giả sử bạn bị phạt, bạn phải chép lại 100 lần câu « Em không dám coi cọp bài của bạn nữa ! » Tôi nhớ hồi nhỏ tôi đã phát khóc mỗi khi phải bỏ ra hàng giờ để chép phạt ! Bây giờ nhờ có PHP, tôi hết sợ bị phạt rồi ! Hehehe …

Code : PHP
<?php
$so_hang = 1;

while ($so_hang <= 100)
{
    echo "Em không dám coi cọp bài của bạn nữa. <br>";
    $so_hang++; // $so_hang = $so_hang + 1
}
?>
Cái vòng lặp này đặt điều kiện: khi mà $so_hang nhỏ hơn hoặc bằng 100 thì in ra câu “Em không dám coi cọp bài của bạn nữa.”, Sau khi in xong dòng này, mình thực hiện một động tác làm tăng giá trị của $so_hang lên 1 bằng cách dùng kí hiệu rút gọn ++ ($a++; tương đương với $a=$a+1;)
Ban đầu $so_hang có giá trị bằng 1, sau khi in xong nó được tăng lên 1, giá trị mới của nó là 2! Rõ ràng là 2<=100! Do đó điều kiện còn đúng nên tiếp tục in ra một câu nữa, in xong, lại được tăng lên 1 thành 3, và 3<=100 là đúng, cứ thế vòng lặp in đến hàng thứ 100, sau khi in xong hàng thứ 100 $so_hang cũng sẽ được tăng lên 1 thành 101, lúc này điều kiện đã không còn đúng nữa (101>100 mà) nên vòng lặp sẽ dừng lại! Vậy là vèo một cái mình có 100 dòng rồi! Bây giờ dù cho cô giáo bắt chép 1000 dòng cũng đâu ngán ha! (nói vậy thôi, ai lại để cô giáo thấy làm chi rồi bị phạt, ha ha ha).
Bạn cần phải đảm bảo cho điều kiện được đúng ít nhất một lần, nghĩa là đặt điều kiện sao cho những lệnh bên trong vòng lặp được thực hiện ít nhất một lần, nếu không nó sẽ chạy hoài không nghỉ đó! May mà PHP có chế độ tự dừng lại nếu sau khoảng 15 giây không chạy được và sẽ báo lỗi!
Hey, cái này có ích gì không đó chú? Mình đâu có nhu cầu làm như vậy trong một trang web đâu nhỉ?
Đúng vậy! Thật khó nói cho bạn hiểu được cái này phục vụ vào đâu trong trang web, nhưng các bạn sẽ rõ trong phần II của bài viết này (về Cơ Sở Dữ Liệu). Tạm thời bạn hãy cố gắng hiểu cách sử dụng và cơ chế hoạt động của nó nhé!
Bây giờ bạn hãy thử đoán trước xem ví dụ sau đây sẽ ra như thế nào nhé:
Ví dụ 2:

Code : PHP
<?php
$so_hang = 1;

while ($so_hang <= 100)
{
echo "Đây là hàng số $so_hang <br>";
$so_hang++;
}
?>

Một vòng lặp phức tạp hơn: For

Đừng hoảng nhé bạn, cái từ phức tạp này không có nghĩa là rắc rối khó nuốt đâu!
Về cơ chế hoạt động của nó thì cũng giống với while và mục đích của nó thì cũng như while, chỉ có điều cách viết của nó hơi khác, ví dụ:

Code : PHP
<?php
for ($so_hang = 1; $so_hang <= 100; $so_hang++)
{
echo "Đây là hàng số $so_hang <br>";
}
?>
Mỗi một điểm khác ở hàng for: sau for là một cặp ngoặc đơn, trong đó mình đặt những gì?
Đầu tiên là giá trị ban đầu của biến, rồi dấu chấm phẩy, kế đến là điều kiện của biến để vòng lặp tiếp tục lặp lại công việc, rồi dấu chấm phẩy, sau cùng là thao tác làm tăng giá trị của biến!
Ví dụ này và ví dụ 2 ở trên cho ra cùng một kết quả!
Làm sao biết khi nào thì tớ mới dùng while, còn khi nào thì dùng for???
While thì dùng lúc nào cũng được, for dùng khi biến có nhu cầu “tăng giá trị”! Nhưng mà không ai kề dao vào cổ bạn ép bạn phải dùng for nếu bạn chỉ thích while thôi đâu!

Hết chương 8.


precedent chapter Mục Lục next chapter

Copyright© NGUYỄN Thanh Trà