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