[Lession 2 – PHP] Sử dụng vòng lặp for lồng nhau trong PHP vẽ hình tam giác bằng kí tự *

Từ ngữ lập trình ₵/₵++, ₵#, Java, … hay bất cứ từ ngữ lập trình nào đều sử dụng vòng lặp. Vậy PHP thì sao? PHP có 4 Loops trọng yếu, trong bài từ bây giờ tôi mong muốn nói về vòng lặp For.

1. Vòng lặp là gì?

Vòng lặp là một mã lệnh trong đó chương trình được thực hiện lặp đi lặp lại nhiều lần cho đến khi thỏa một điều kiện nào đó.

2. Vòng lặp for là gì?

– Cú pháp:

for

(

$bien_dieu_khien

;

$bieu_thuc_dieu_kien

;

$bieu_thuc_thay_doi_bien_dieu_khien

)

{

}

Trong số đó:

  • $bien_dieu_khien : Chứa giá trị khởi tạo trước hoặc truyền giá trị trực tiếp trong vòng lặp đều được đồng ý. Lệnh này chỉ thực hiện một lần duy nhất.
  • $bieu_thuc_dieu_kien : Đây là một biểu thức quan hệ xác nhận thời điểm nào thì thoát vòng lặp
  • $bieu_thuc_thay_doi_bien_dieu_khien : Biểu thức này xác nhận rằng $bien_dieu_khien sẽ biến đổi như vậy nào sau mỗi lần lặp.

Trong số đó:

Chẳng hạn: Xét một vòng lặp dễ dàng sau

for

(

=

;

<

10

;

++

)

{

echo

.

' - '

;

}

Ta thấy:

  • Giải thích về vòng lặp trên: Biến điều khiển khởi tạo bằng 0, với điều kiện là sẽ lặp đi lặp lại số lần nhỏ hơn 10 tức là đến lần thứ 9 thì stop. & sau mỗi lần lặp thì tăng lên 1.

  • Lệnh echo cho phép in ra kí tự chứa trong dấu nháy kép ” ” hoặc dấu nháy đơn ‘ ‘.

  • Kết quả của chẳng hạn trên in ra một chuỗi như sau:
    “0 – 1 – 2 – 3 – 4 – 5 – 6 – 7 – 8 – 9 – ”.
    Tức là:

    Lần lặp trước hết $ι = 0 , kiểm soát 0 đúng là nhỏ hơn 10 thì tiến hành in ra số 0 & dấu gạch ngang ‘ – ‘ trước hết: “0 –

    Tăng $ι lên 1 ở lần lặp thứ 2, hiện thời $ι = 1 & 1 nhỏ hơn 10. Vậy là ở lần lặp này ta có được chuỗi: “0 – 1 –

    Tương tự với các bước 2-3-4-5-6-7-8-9.

3. Vòng lặp for lồng nhau:

Vòng lặp for trong php có thể lồng nhau để giải quyết bài toán. Ở mỗi vòng lặp cha thì vòng lặp con sẽ được thực hiện, thực hiện hết bài viết bên trong vòng lặp mới thực hiện vòng kế tiếp.

Ở vòng lặp for lồng nhau bạn cần tham chiếu với mô hình ma trận để dễ hiểu hơn,

Xem Thêm  Hướng dẫn: Intro to React - Phản ứng - hướng dẫn ứng dụng phản ứng cơ bản

Trên đây là ma trận ?, có ɱ hàng & и cột, trong vòng lặp for tương ứng với hàng ɱ là $ι, cột и là $j. Hãy nắm chắc điều này để khi nhìn vào các chẳng hạn bên dưới bạn sẽ dễ hiểu hơn.

4. Ứng dụng vòng lặp for vẽ hình tam giác bằng kí tự *

4.1. Tam giác vuông trái:

for

(

=

1

;

<=

5

;

++

)

{

for

(

$j

=

1

;

$j

<=

;

$j

++

)

{

echo

"*"

;

}

echo

"<br>"

;

}

Kết quả:

Giải thích về vòng lặp trên:

Tưởng tượng đây là một ma trận, $ι là số hàng & $j là số cột

  • Vòng 1: Vòng lặp cha khởi tạo vị trí đầu tiên tiên $ι = 1, kiểm soát 1 luôn nhỏ hơn & bằng 5 nên chạy đến vòng lặp con bên trong là cột trước hết $j = 1, kiểm soát $j hiện thời nhỏ hơn & bằng $ι => true nên in ra được dòng trước hết & dấu sao trước hết.

    Tham chiếu theo hình ảnh ma trận cho ở trên, hiện thời ta đã in ra được a11 với một sao: * .

  • & đừng quên echo "<br>"; để ngắt dòng mỗi khi xong một vòng lặp con.

  • Vòng 2: $ι cộng 1, các bước kiểm soát tương tự bước 1.

    Chiếu theo bảng ma trận, hiện thời $ι = 2 tức là $ι đã nhảy xuống hàng 2 cột 1 tức a21, chạy đến vòng lặp con $j hiện thời bằng 1 đáp ứng điều kiện & in ra một ” * “, $j hiện thời cộng thêm 1 vẫn đáp ứng điều kiện nhỏ hơn & bằng $ι nên in ra được a22 : * *.

  • Vòng thứ 3, 4, 5 tương tự.

4.2. Tam giác vuông phải

for

(

=

1

;

<=

5

;

++

)

{

for

(

$j

=

1

;

$j

<=

5

;

$j

++

)

{

if

(

$j

<=

5

-

)

{

echo

"&nbsp&nbsp"

;

}

else

{

echo

"*"

;

}

}

echo

"<br>"

;

}

Kết quả :

Giải thích về vòng lặp trên:

  • Khác với tam giác vuông trái, tam giác vuông phải sau khoảng thời gian kiểm soát vòng lặp cha & chạy đến vòng lặp con thì cần in ra kí tự khoảng trắng trước hết. Trong PHP cần dùng &nbsp để in ra kí tự khoảng trắng.

  • Vòng 1: Tham chiếu với mô hình ma trận, vị trí đầu tiên tiên $ι = 1, cột trước hết $j =1 thì thực hiện if($j <= 5 - $ι), điều kiện này làm chủ số khoảng trắng được in ra theo mỗi lần lặp.

    Với vị trí đầu tiên tiên, ta thấy vòng lặp con $j <= 5 tức là $j được cung cấp 5 cột, $j = 5-1 = 4. Vậy sẽ có 4 cột có kí tự khoảng trắng, cột sót lại sẽ là kí tự * được in ra.

  • & đừng quên echo "<br>"; để ngắt dòng mỗi khi xong một vòng lặp con.

  • Vòng 2: Hàng thứ 2 là $ι = 2, cột $j chạy từ 1, in ra một kí tự * , sau đó $j tăng trưởng 1 vẫn đáp ứng điều kiện, thực hiện điều kiện if($j <= 5 - $ι) thì hiện thời $j = 5-2 = 3.

    Vậy là có 3 cột có kí tự khoảng trắng, cột sót lại sẽ là 2 kí tự * * được in ra.

  • Vòng 3, 4, 5 tương tự.

Xem Thêm  Tạo khóa chính trong SQL Server - SQL Server - đặt khóa chính sql

4.3. Tam giác cân:

for

(

=

1

;

<=

5

;

++

)

{

for

(

$j

=

;

$j

<

5

;

$j

++

)

{

echo

"&nbsp&nbsp"

;

}

for

(

$j

=

1

;

$j

<=

(

2

*

-

1

)

;

$j

++

)

{

echo

"*"

;

}

echo

"<br>"

;

}

Kết quả:

Giải thích về vòng lặp trên:

  • Vòng 1: Tiếp tục tham chiếu mô hình ma trận, vòng lặp cha vị trí đầu tiên tiên $ι = 1, vòng lặp con đầu tiên cột $j = $ι (Số hàng bằng số cột) sau đó in ra các kí tự khoảng trắng.
    Đến vòng lặp con thứ 2 ta cho $j = 1, hiện thời kiểm soát xem $j <= (2 * $ι - 1) tức là $j = (2*1-1) = 1 => true. Thực hiện chèn một kí tự *.

  • & đừng quên echo "<br>"; để ngắt dòng mỗi khi xong một vòng lặp con.

  • Vòng 2: Hàng thứ hai $ι = 2, $j = 2, thực hiện in ra kí tự khoảng trắng trước.
    Đến vòng lặp con thứ hai $j = 1 & chèn kí từ * sớm muộn đó khi $j tăng trưởng 2 thì chèn thêm hai kí tự sao. Vậy hàng thứ hai có 3 kí tự *.

  • Vòng 3, 4, 5 tương tự.

4.4. Tam giác cân ngược

$row

=

5

;

for

(

=

1

;

<=

$row

;

++

)

{

for

(

$j

=

1

;

$j

<

;

$j

++

)

{

echo

"&nbsp&nbsp"

;

}

for

(

$j

=

1

;

$j

<=

(

$row

*

2

-

(

2

*

-

1

)

)

;

$j

++

)

{

echo

"*"

;

}

echo

"<br>"

;

}

Kết quả:

Giải thích về vòng lặp trên:

  • Khởi tạo biến hàng là $row = 5.

  • Vòng 1: Bậc nhất tiên $ι = 1, vào vòng lặp con trước hết cho $j =1 với biểu thức điều kiện là $j < $ι thì in ra kí tự khoảng trắng.
    Vòng lặp con thứ hai cho cột $j = 1 với biểu thức điều kiện là $j <= ($row * 2 - (2 * $ι - 1)) tức là $j = (5*2 - (2*$ι -1)) = 9 => true. Thực hiện chèn chín kí tự *.

  • & đừng quên echo "<br>"; để ngắt dòng mỗi khi xong một vòng lặp con.

  • Vòng 2: Hàng thứ hai $ι = 2, vào vòng lặp con trước hết $j = 1 & tiếp tục thực hiện in khoảng trắng.
    Vào vòng lặp con thứ hai cho cột $j = 1với biểu thức điều kiện là $j <= ($row * 2 - (2 * $ι - 1)) tức là $j = (5*2 - (2*2 -1)) = 7 => true. Thực hiện chèn bảy kí tự *.

  • Vòng 3, 4, 5 tương tự.

Xem Thêm  Kiểm tra chuỗi bằng trong Python - kiểm tra chuỗi trong python

5. Code tổng quát:

<!

DOCTYPE

html

>

<

html

lang

=

"

en

"

>

<

head

>

<

meta

charset

=

"

UTF-8

"

>

<

meta

name

=

"

viewport

"

content

=

"

width=device-width, initial-scale=1.0

"

>

<

title

>

Document

</

title

>

</

head

>

<

body

>

<?php

for

(

=

1

;

<=

5

;

++

)

{

for

(

$j

=

1

;

$j

<=

;

$j

++

)

{

echo

"*"

;

}

echo

"<br>"

;

}

echo

"<br>"

;

for

(

=

1

;

<=

5

;

++

)

{

for

(

$j

=

1

;

$j

<=

5

;

$j

++

)

{

if

(

$j

<=

5

-

)

{

echo

"&nbsp&nbsp"

;

}

else

{

echo

"*"

;

}

}

echo

"<br>"

;

}

echo

"<br>"

;

for

(

=

1

;

<=

6

;

++

)

{

for

(

$j

=

;

$j

<

6

;

$j

++

)

{

echo

"&nbsp&nbsp"

;

}

for

(

$j

=

1

;

$j

<=

(

2

*

-

1

)

;

$j

++

)

{

echo

"*"

;

}

echo

"<br>"

;

}

echo

"<br>"

;

$row

=

5

;

for

(

=

1

;

<=

$row

;

++

)

{

for

(

$j

=

1

;

$j

<

;

$j

++

)

{

echo

"&nbsp&nbsp"

;

}

for

(

$j

=

1

;

$j

<=

(

$row

*

2

-

(

2

*

-

1

)

)

;

$j

++

)

{

echo

"*"

;

}

echo

"<br>"

;

}

echo

"<br>"

;

for

(

=

;

<

6

;

++

)

{

for

(

$j

=

;

$j

<

;

$j

++

)

{

echo

"&nbsp&nbsp"

;

}

for

(

$j

=

;

$j

<

6

;

$j

++

)

{

echo

"&nbsp*"

;

}

echo

'<brvàgt;'

;

}

echo

"<br>"

;

for

(

=

6

;

>=

1

;

--

)

{

for

(

$j

=

1

;

$j

<=

;

$j

++

)

{

echo

"*&nbsp"

;

}

echo

'<brvàgt;'

;

}

?>

</

body

>

</

html

>

Tự mình thử để cùng nhau điêu luyện nhé! ??

Như thế bài thứ 3 trong chuỗi bài học PHP của tôi đã giải quyết, nếu có gì cần phản hồi xin hãy cmt bên dưới nhé!

(*2*)??ậ? ???(*2*)

Viết một bình luận