วันพฤหัสบดีที่ 17 กรกฎาคม พ.ศ. 2557

ภาษา JavaScript ฉบับผู้เริ่มต้น part 10

: Iteration Statements เหล่าคำสั่งทำซ้ำ

>> คำสั่งทำซ้ำคืออะไรเหรอ?
ตอบ เพื่อนๆเคยใช้ if เคยใช้ switch มาแล้ว ตอนนี้รู้แล้วว่าพวกมันคือทางเลือกเพื่อกระทำอย่างหนึ่งอย่างใดใช่ไหม จะทำจริงหรือทำเท็จควบคุมสมใจอยาก บัดนี้ทางเลือกเหล่านั้นอาจไม่เพียงพอครับ ไม่พอในที่นี้คือ อาจต้องเขียนโค้ดเยอะ เขียนโค้ดยาวตามปริมาณข้อมูลที่มีอยู่เป็นร้อย เป็นพัน หรือเป็นหมื่นๆ หรือไม่รู้ด้วยซ้ำว่าปริมาณข้อมูลมีอยู่มากน้อย หรือต้องเขียนจาวาสคริปต์ให้หยุดรอคำสั่งยกเลิกจากผู้ใช้งาน โปรแกรมเมนูอาหารจึงจะปิดตัวลงไป อีกหลายหลากเหตุผลที่จำเป็นต้องมีกลุ่มคำสั่งจำพวกทำซ้ำ ซึ่งได้แก่
- for statement
- while statement
- do-while statement

>> ปริมาณข้อมูลเป็นที่ทราบแน่ชัด จำนวนรอบรู้แจ้งเห็นจริง ควรเลือกใช้ for statement เหตุผลคือ?
ตอบ for ถูกคิดขึ้นเพื่องานที่รู้จำนวนอย่างแน่นอน มีตัวแปร index คอยเพิ่มหรือลดค่าใดๆเพื่อบังคับให้เกิดรอบการทำงานทำซ้ำจนกว่าค่าของ index นั้นจะขัดกับเงื่อนไข ตัวอย่างเช่น

for ( var i = 0; i < 10; i++ ) {
document.write( i );
}

ผลลัพธ์จะได้ 0123456789 แสดงออก ณ บราเซอร์ เพราะค่าของ i ต้องน้อยกว่า 10 ดังนั้นค่าสูงสุดที่ได้จึงเท่ากับ 9 นั่นเอง และในที่นี้ตัวแปร i ก็คือ index ที่บังคับการเกิดรอบดังกล่าว

>> ทำทุกอย่างได้เหมือน for แต่ถูกออกแบบให้รับกับเงื่อนไขที่เป็นจริงอยู่เสมอจึงจะทำงาน ไม่คํานึงถึงจำนวนรอบหรือการทำซ้ำที่จะเกิด เอาเป็นว่าเงื่อนไขเป็นเท็จเมื่อไรค่อยออกจากวงวน ลักษระงานแบบนี้ให้เลือกใช้ while statement ครับ เหตุผลคือ?
ตอบ จริงอยู่ที่ทั้ง while และ for สามารถกำหนดเงื่อนไขและตัวแปร index ให้ทำงานอย่างเดียวกันเป๊ะๆ ทว่าตำราหลายเล่มได้กล่าวเอาไว้ว่า หากต้องนับจำนวนหรือค่าใดๆโดยขึ้นกับรอบและตัวแปร index ให้ใช้ for, แต่หากเป็นเงื่อนไขที่ไม่เกี่ยวข้องกับที่ยกมานี้ให้ใช้ while เพราะจะสื่อความหมายได้ดีกว่า อย่างน้อยก็ทำให้รู้ว่าสนใจรอบหรือไม่ ตัวอย่างการเขียน while ให้ทำงานดุจเดียวกับ for ข้างต้น

var i = 0;
while( i < 10 ) {
document.write( i );
i++;
}

ตัวอย่างการใช้ while ที่ไม่เกี่ยวกับจำนวนรอบ : โปรแกรมป้อนเลขท้ายสองตัว

var userInput = prompt("Please, Input your last two digits in a lottery ticket in this box.");
userInput = parseInt(userInput);

while ( userInput != 88 ) {
userInput = prompt("Please, Input your last two digits in a lottery ticket in this box.");
userInput = parseInt(userInput);
}

alert("You won the prize!!!");

โปรแกรมป้อนเลขท้ายสองตัวนี้ ป้อนผิดมันจะถามอยู่เรื่อยๆ แต่ถ้าป้อนถูก (ตัวเลขที่ถูกรางวัลคือ 88) ก็จะแสดงข้อความว่าคุณถูกรางวัลนะ แล้วจบโปรแกรมไป

>> ทำทุกอย่างได้เหมือนกับ while ต่างเพียงสิ่งที่ทำนั้นทำก่อนการตรวจสอบเงื่อนไข กล่าวคือ กระทำคำสั่งที่ต้องการไปก่อนครั้งหนึ่ง แล้วค่อยถามว่าจะทำซ้ำอีกหรือไม่ ลักษณะงานแบบนี้สมควรให้ do-while statement

ตัวอย่างการเขียน do-while ที่ให้ผลลัพธ์เช่นเดียวกับ while และ for ข้างต้น

var i = 0;
do {
document.write( i );
i++;
} while( i < 10 );

มันจะทำคำสั่ง document.write ก่อนครึ้งหนึ่งแล้วค่อยไปถามว่า i ยังคงน้อยกว่า 10 หรือไม่ ซึ่งต่างจาก while ที่ต้องถามคำถามนี้ก่อน

>> เนื้องจากว่าหน้ากระดาษ (อิเล็กทรอนิกส์) นี้ยาวเกินไปแล้ว part ต่อไปจะแนะนำการจัดการ errors ด้วย try/catch ครับ สวัสดีครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น