คำสั่งลูป
ลูป (Loop) เป็นสิ่งที่จำเป็น และทรงพลังที่สุดของการแก้ปัญหาด้วยการเขียนโปรแกรมบนคอมพิวเตอร์ เพราะมันช่วยย่นระยะเวลาของการทำงานได้ไม่จำกัด โดยทั่วไปเกือบทุกภาษาจะมีคำสั่งประเภท ลูป อยู่เป็นจำนวนมาก เพื่อให้เลือกใช้งานได้หลายกรณี แต่สำหรับ ไพธอน ไม่มี เพราะลูป เหล่านี้มักเป็นต้นเหตุของข้อผิดพลาดจากการเขียนโปรแกรม เขียนแล้วมึน เขียนแล้วงง นานเข้าก็ไม่เข้าใจ เนื่องจากคำสั่ง ลูป ที่เขียนนั้นซับซ้อนเกินไปนั่นเอง สรุปแล้ว ไพธอน มีลูปเพียง 2 แบบเท่านั้น ไม่มีมากกว่านี้เด็ดขาด ได้แก่
- for
- while
ถ้าเคยเขียนภาษาอื่นมา for กับ while ก็ดูจะปกติดี ภาษาอื่นมีหมด แล้วอะไรขาดไปกันแน่ สิ่งที่ขาดไปคือรูปแบบการใช้ ไม่ใช่คำสั่งครับ ยกตัวอย่างเช่น C C# และ Java สามารถเขียน for ได้สารพัดแบบ ทำให้ for กลายเป็นสิ่งมหัศจรรย์ ทำทุกอย่างได้ด้วย for แล้วก็งงกันไปหลายตลบ ส่วนใน ไพธอน มีวิธีใช้ for แบบเดียวเท่านั้นครับ for จะต้องอยู่ในรูปแบบดังนี้
for i in lists: statement1 statement2
ก่อนอื่นจะเห็นว่าคล้ายคล้าย if ครับ มี colon : เพื่อบอกจุดจบของคำสั่งที่มีคำสั่งย่อย จุดที่น่าสนใจอยู่ที่ for i in lists นี่แหละครับ นี่คือรูปแบบที่แน่นอนตายตัว หมายความว่า การวนรอบแต่ละครั้งค่า i จะเปลี่ยนไป โดยค่าที่อยู่ใน i จะถูกนำมาจาก ลิสต์ ที่ชื่อ lists ตามลำดับจนหมด ยกตัวอย่างเช่น
for i in [0,1,2,3,4]: print ’i’,i
จะได้ผลดังนี้
i 0 i 1 i 2 i 3 i 4
อ่านมาถึงตรงนี้ผู้ที่เคยเขียนโปรแกรมสารพัดภาษา น่าจะเริ่มงง แล้วจะเอาไปใช้ได้อย่างไรกัน เรื่องราวไม่ใหญ่โตอย่างที่คิดครับ ปัญหาคือทุกคนมักจะชินกับการบวกเลขแล้วใช้ index ในการเข้าถึง อาเรย์ หรืออะไรก็แล้วตามในทำนองนี้ เพราะนี้คือจุดประสงค์ของการใช้ ลูป แต่นี่ก็มันจะเป็นจุดที่ทำให้เขียนโปรแกรมผิดกันนั่นเอง เพราะเงื่อนไขการเริ่มและจบนั้นถูกกำหนดด้วยเงื่อนไข เช่น 0 ถึง 4 แต่ถ้าค่าเกิดกระโดดขึ้นมาโดยบังเอิญแทนที่จะมีค่าเป็น 4 แต่กลับมีค่าเป็น 5 ลูปนี้จะไม่มีวันจบ ด้วยเหตุนี้เอง ถ้าเรารู้ขอบเขตแน่นอนการใช้ ลิสต์ จะมีความถูกต้องมากกว่า ดังในกรณีนี้ มีเลขเรียงกัน 0 1 2 3 4 ถ้าใช้ลูปแบบข้างบน ค่าที่ได้จะไม่มีวันกระโดดเด็ดขาด
อย่าพึ่งตกใจว่าวิธีนี้จะบานปลายถ้าต้องลูปเลข 1 ถึง 1000000 เพราะต้องมีลิสต์ใหญ่มหาศาล และก็ไม่จำเป็นต้องมีซะด้วย เพราะมันเป็นเลขเรียงกัน ใช่แล้วครับ ไม่จำเป็น ไพธอน มีวิธีที่ง่ายกว่า ในกรณีของ for นี้ มันเป็นการ for ลงไปในชุดเลขที่เรียงกัน เพราะฉะนั้น ไพธอน จึงมีฟังก์ชั่นเอาไว้สำหรับสร้าง ลิสต์ โดยเฉพาะ 2 คำสั่ง ได้แก่ range() และ xrange() สำหรับตัวอย่างที่ผ่านมา สามารถเขียนแบบ ไพธอน ได้ดังนี้
for i in range(5): print ’i’,i
จริงๆ แล้ว range() กับ xrange() ให้ผลเหมือนกันทุกประการ แต่ต่างกันที่เวลาทำไปใช้งาน โดย range() จะสร้าง ลิสต์ ตามที่ระบุแล้วคืน ลิสต์ นั้นกลับมาทันที แต่ xrange() จะไม่ได้สร้าง ลิสต์ ทั้งหมดขึ้นมาในทีเดียว แต่ละส่งให้ทีละค่า วิธีของ xrange() นี้เรียกว่า Generator ครับ เหมาะสำหรับงานที่มีข้อมูลจำนวนมากและไม่จำเป็นต้องเก็บทุกอย่างในหน่วยความจำในครั้งเดียว
สำหรับ while นั้นตรงไปตรงมาเหมือนกับ while ปกติ แต่ก็เช่นเดียวกับคำสั่งอื่นๆ ของ ไพธอน ที่มีรูปแบบการใช้งานเพียงแบบเดียว ดังนี้
while expression: statement statement
เงื่อนไข expression มีลักษณะเดียวกับใน if เพราะฉะนั้นตัวอย่างด้านบนจะเขียนด้วย while ได้ดังต่อไปนี้
i = 0 while i < 5: print ’i’,i i += 1
- Printer-friendly version
- 3686 reads
Post new comment