1. การเปรียบเทียบลูป: for
เทียบกับwhile
สามารถใช้ ลูwhile
ปได้ทุกที่ที่คำสั่งหรือกลุ่มของคำสั่งต้องดำเนินการหลายครั้ง แต่ในสถานการณ์ที่เป็นไปได้ทั้งหมด สิ่งหนึ่งที่ควรค่าแก่การเน้นย้ำ
เรากำลังพูดถึงสถานการณ์ที่โปรแกรมเมอร์ (ผู้สร้างโปรแกรม) รู้ล่วงหน้าว่าควรดำเนินการลูปกี่ครั้ง โดยปกติจะจัดการโดยการประกาศตัวแปรตัวนับพิเศษ จากนั้นเพิ่ม (หรือลด) ตัวแปรด้วย1
การวนซ้ำแต่ละครั้ง
ทุกอย่างดูเหมือนจะทำงานได้ตามที่ควร แต่ก็ไม่สะดวกนัก ก่อนลูป เราตั้งค่าเริ่มต้นของตัวแปรตัวนับ จากนั้นในเงื่อนไขเราจะตรวจสอบว่าถึงค่าสุดท้ายแล้วหรือไม่ แต่เรามักจะเปลี่ยนค่าที่ส่วนท้ายสุดของตัวลูป
แล้วถ้าร่างกายของลูปมีขนาดใหญ่ล่ะ? หรือถ้าเรามีลูปที่ซ้อนกันหลายอัน โดยทั่วไป ในกรณีเหล่านี้ ขอแนะนำให้รวบรวมข้อมูลทั้งหมดเกี่ยวกับตัวแปรตัวนับไว้ในที่เดียว และนั่นคือเหตุผลที่เรามีfor
ลูปใน Java มันดูไม่ซับซ้อนมาก:
for (statement 1; condition; statement 2)
{
block of statements
}
การwhile
วนซ้ำจะมีเพียงเงื่อนไขในวงเล็บ แต่for
การวนซ้ำจะเพิ่มสองคำสั่งโดยคั่นด้วยเครื่องหมายอัฒภาค
ความจริงนั้นง่ายกว่าที่คิด: คอมไพเลอร์แปลงfor
ลูปเป็นลูปธรรมดาwhile
ดังนี้:
statement 1;
while (condition)
{
block of statements
statement 2;
}
หรือดีกว่านั้น เรามาสาธิตสิ่งนี้ด้วยตัวอย่างกันดีกว่า ข้อมูลโค้ดสองตัวด้านล่างเหมือนกัน
ตัวเลือกที่ 1 | ตัวเลือก 2 |
---|---|
|
|
เราเพิ่งรวบรวมรหัสทั้งหมดที่เกี่ยวข้องกับi
ตัวแปรตัวนับ ไว้ในที่เดียว
ในfor
ลูปคำสั่ง 1จะถูกดำเนินการเพียงครั้งเดียว ก่อนที่ลูปจะเริ่มต้นเอง สิ่งนี้สามารถเห็นได้อย่างชัดเจนในข้อมูลโค้ดที่สอง
คำสั่ง 2จะถูกดำเนินการในจำนวนครั้งเท่ากันกับเนื้อหาของลูป และแต่ละครั้งจะถูกดำเนินการหลังจากดำเนินการเนื้อหาทั้งหมดของลูปแล้ว
2. ตำแหน่งที่for
ใช้ลูป
ลูfor
ปน่าจะเป็นประเภทลูปที่ใช้มากที่สุดใน Java มันถูกใช้ทุกที่สำหรับโปรแกรมเมอร์มันชัดเจนและสะดวกกว่าwhile
การวนซ้ำ แทบทุกwhile
ลูปสามารถแปลงเป็นfor
ลูปได้
ตัวอย่าง:
ในขณะที่วนซ้ำ | สำหรับลูป |
---|---|
|
|
|
|
|
|
|
|
|
|
ให้ความสนใจกับตัวอย่างสุดท้าย ไม่มีคำสั่งสำหรับการทำงานกับตัวนับลูป ไม่มีเคาน์เตอร์และไม่มีใบแจ้งยอด
ในfor
ลูป Java ให้คุณละเว้น "คำสั่งเพื่อเริ่มต้นตัวนับ" และ "คำสั่งเพื่ออัปเดตตัวนับ" แม้แต่นิพจน์ที่กำหนดเงื่อนไขการวนซ้ำก็สามารถละเว้นได้
3. ความแตกต่างของการใช้for
ลูป
จุดสำคัญเกี่ยวกับการใช้for
ลูปbreak
และcontinue
คำสั่ง
คำbreak
สั่งในfor
ลูปทำงานเหมือนกับในwhile
ลูป — มันจะยุติการวนซ้ำทันที คำcontinue
สั่งข้ามเนื้อหาของลูป แต่ไม่ใช่statement 2
(ซึ่งเปลี่ยนตัวนับลูป)
ลองมาดูกันว่า ลูป for
และwhile
ลูปเกี่ยวข้องกัน อย่างไร
for (statement 1; condition; statement 2)
{
block of statements
}
statement 1;
while (condition)
{
block of statements
statement 2;
}
หากcontinue
คำสั่งถูกดำเนินการในfor
ลูปส่วนที่เหลือของบล็อกคำสั่งจะถูกข้าม แต่คำสั่ง 2 (คำสั่งที่ทำงานกับfor
ตัวแปรตัวนับของลูป) จะยังคงดำเนินการอยู่
กลับไปที่ตัวอย่างของเราโดยข้ามตัวเลขที่หารด้วย 7 ลงตัว
รหัสนี้จะวนซ้ำตลอดไป | รหัสนี้จะทำงานได้ดี |
---|---|
|
|
รหัสที่ใช้while
การวนซ้ำจะไม่ทำงาน — ฉันจะไม่มีวันมากกว่า 7 แต่รหัสที่มีfor
การวนซ้ำจะทำงานได้ดี
4. การเปรียบเทียบลูป: Java กับ Pascal
อย่างไรก็ตาม Pascal ก็มีFor
ลูป เช่นกัน โดยทั่วไปแล้ว ภาษาโปรแกรมทุกภาษาจะมีหนึ่งภาษา แต่ในภาษาปาสคาลนั้นชัดเจนมาก ตัวอย่าง:
ปาสคาล | ชวา |
---|---|
|
|
|
|
|
|
GO TO FULL VERSION