สวัสดีและยินดีต้อนรับ. ในการบรรยายนี้ ฉันต้องการพูดคุยเกี่ยวกับ while และ do while loop
เราได้พูดถึง for loop ซึ่งทำให้คุณสามารถทำซ้ำโค้ดได้
มีโครงสร้างอื่นใน c ที่เรียกว่า while และทำในขณะที่ทำสิ่งเดียวกันกับไวยากรณ์ที่แตกต่างกัน
ดังนั้น while วนลูป while loop เป็นกลไกในการทำซ้ำชุดคำสั่งและอนุญาตให้ดำเนินการต่อไปตราบเท่าที่นิพจน์ตรรกะที่ระบุประเมินเป็นจริง
ที่นี่เหมือนกันมากขึ้น เช่นเดียวกับคำสั่งต่างๆ ที่จะรันโค้ดบางตัว
ในขณะที่คำสั่งจะรันโค้ดบางตัวตามการประเมินบูลีนหลายครั้ง
ทุกสิ่งที่คุณสามารถทำได้ใน for loop คุณสามารถทำได้ใน while loop
มันเป็นเพียงรูปแบบที่แตกต่างกัน
หน้าตาของ while loop จะเป็นประมาณนี้
ในระดับที่สูงมาก ถ้าเราดู pseudocode ในขณะที่เงื่อนไขนี้เป็นจริง
ให้ทำต่อไป
ดังนั้นเพื่อเชื่อมโยงกับตัวอย่างโลกมากขึ้น
โดยพื้นฐานแล้ว ในขณะที่คุณหิว ให้กินแซนวิช อะไรทำนองนั้น
ดังนั้นคุณจะทำซ้ำรหัส คุณจะต้องกินแซนวิชหลายๆ อันในขณะที่คุณหิว
ไวยากรณ์ทั่วไปสำหรับ while loop มีดังนี้
และนี่จะแสดงให้คุณเห็นถึงไวยากรณ์สำหรับคำสั่งเดียวในเนื้อหา
ดังนั้นคุณไม่จำเป็นต้องใส่วงเล็บปีกกาหรือวงเล็บปีกกา
ฉันมักจะใช้คำว่า วงเล็บปีกกา และ วงเล็บปีกกา
ในคำศัพท์เดียวกัน
นี่คือสิ่งที่ไวยากรณ์ดูเหมือนเมื่อคุณมีคำสั่งเดียวกับหลายคำสั่ง
หลายงบ คุณต้องมีวงเล็บเหล่านั้น คำสั่งเดียวที่คุณไม่มี
เป็นทางเลือก คุณไม่สามารถมีได้หรือคุณไม่จำเป็นต้องมี
นิพจน์จะอยู่ภายในวงเล็บเหมือนกับคำสั่ง
for loop และ if นิพจน์ที่นี่แตกต่างจาก
for loop ตรงที่เป็นเงื่อนไขทางออกเดียว
มันเป็นเพียงการแสดงออก คุณไม่ได้เริ่มต้นตัวแปรควบคุมลูป
คุณไม่ต้องแก้ไขตัวแปรควบคุมลูประหว่างวงเล็บ
มันก็แค่นิพจน์ แค่เงื่อนไขทางออก
เงื่อนไขสำหรับความต่อเนื่องของลูป while ถูกทดสอบเมื่อเริ่มต้น
ดังนั้นนี่คือด้านบนของลูป
นี่หมายความว่ามันคือ pretest loop และนั่นหมายความว่ามันสามารถดำเนินการได้
0 ครั้งหรือสามารถดำเนินการได้หลายครั้งในร่างกาย
และอีกครั้ง สิ่งนี้จะมีความเกี่ยวข้องเพราะ do while loop กำลังทำบางสิ่งที่แตกต่างออกไปเล็กน้อย
หากนิพจน์เริ่มต้นเป็นเท็จ จะไม่มีการดำเนินการคำสั่งวนซ้ำในเนื้อหา
นั่นเป็นเหตุผลว่าทำไมมันถึงอยู่ในการทดสอบระดับบนสุด
ดังนั้น หากคุณตอบคำถามแรก ไม่ ฉันไม่หิว
คุณจะไม่กินแซนวิชอีกเลย คุณจะเดินตรงไปที่กาแฟหรือโค้ดบรรทัดถัดไป
คุณจะไม่เข้าสู่เนื้อหาของลูป
หากเงื่อนไขของลูปเริ่มต้นเป็นจริง เนื้อหาของลูปจะต้องมีกลไกสำหรับการเปลี่ยนแปลงนี้หากการวนซ้ำสิ้นสุดลง
มิฉะนั้น คุณจะมีวงวนไม่สิ้นสุด
ดังนั้นด้วย for loop ที่คุณแก้ไขตัวแปรควบคุมลูปในคำสั่งเดียว มันจะเป็นสิ่งเดียวกันใน
while loop ยกเว้นว่าคุณต้องทำในเนื้อหา
while loop กำลังจะเริ่มต้นตัวแปรควบคุมลูปที่ใดที่หนึ่งจากนั้นจะแก้ไขภายในเนื้อหาของโค้ด
ดังที่ฉันได้กล่าวไปแล้ว while loop สามารถทำทุกอย่างที่ for loop ทำ มันเป็นเพียงรูปแบบที่แตกต่างกัน
และอีกครั้ง for loop จะสั้นกว่า คุณสามารถทำทุกอย่างในบรรทัดเดียวในขณะที่วนรอบคุณต้องทำ
3 สิ่งเหล่านั้นในบรรทัดแยกกัน
ในตัวอย่างนี้ เรามีจำนวน
int เท่ากับ 0 นี่คือตัวแปรควบคุมลูป สิ่งนี้อยู่นอกคำสั่ง while loop
หากคุณใช้คำสั่ง for สิ่งนี้จะเข้าไปอยู่ในลูป for ก่อนอัฒภาคแรก
นั่นคือจุดเริ่มต้นของตัวแปรควบคุมลูป
จากนั้นคุณมีคีย์เวิร์ด while และคุณมีนิพจน์บูลีนอยู่ภายในวงเล็บ
ซึ่งจะเทียบเท่ากับ for loop คำสั่งที่สองก่อนเครื่องหมายอัฒภาคที่สอง
ดังนั้นนี่คือสิ่งที่คุณตรวจสอบว่าจริงหรือเท็จ และถ้ามันเป็นจริงหรือเท็จ คุณจะเข้าสู่เนื้อหาของลูป
หากจำนวนน้อยกว่าเท่ากับ 5 คุณจะต้องพิมพ์จำนวนออกมา
โค้ดบรรทัดถัดไปหลังจากนั้นมีความสำคัญมาก
การนับบวกเนื่องจากเป็นการแก้ไขตัวแปรควบคุมลูป
คุณต้องทำสิ่งนี้ การนับบวก บวก มิฉะนั้น คุณจะไม่มีวันออกจากลูปเพราะเงื่อนไขด้านบนบอกว่าการนับนั้นน้อยกว่า
5 หรือไม่ หากการนับมีค่าเท่ากับ 1 เสมอ แสดงว่าคุณมีวงวนอนันต์
ดังนั้นการนับบวกบวกจึงสำคัญมาก
บวก บวก นับ จำ เป็นโอเปอเรเตอร์การเพิ่มขึ้น
มันบอกว่านับเท่ากับนับบวก 1
ลูปนี้จะรัน 5 ครั้ง
มันจะวิ่งโดยนับเท่ากับ 1 นับเท่ากับ
2 นับเท่ากับ 3 นับเท่ากับ 4 และนับเท่ากับ 5
เมื่อการนับเท่ากับ 6 มันจะกระโดดออกจากลูปและจะไม่ออกจากคำสั่งในเนื้อความอีกต่อไป
อีกครั้งคุณควรคิดในแง่ของ for loop
เป็นเพียงตัวแปรควบคุมลูปและการแก้ไขตัวแปรควบคุมลูปไม่อยู่ในการประกาศของลูปจริง
ไม่ใช่ทั้งหมดในบรรทัดเดียวเหมือนใน for loop
นี่เป็นอีกตัวอย่างหนึ่งที่ตรรกะถูกควบคุมเพื่อสิ้นสุดการวนซ้ำ
ในตัวอย่างแรกที่ฉันแสดง นี่คือลูปคอนโทรลที่เคาน์เตอร์
มันจะดำเนินการในจำนวนครั้งที่เท่ากันเสมอซึ่งก็คือ 5
ในตัวอย่างต่อไป นี่คือตัวอย่างที่การวนซ้ำอาจดำเนินการ
100 ครั้งหรือ 0 ครั้ง
เงื่อนไขที่เรากำลังประเมินที่นี่ในคีย์ของเราในขณะที่ num ไม่เท่ากับลบ
1 ทั้งหมดขึ้นอยู่กับสิ่งที่ผู้ใช้ป้อนเพราะ num
คือสิ่งที่ผู้ใช้ป้อน
ดังนั้นลูปนี้อาจรัน 0 ครั้ง อาจรัน 100 ครั้ง
ทุกอย่างขึ้นอยู่กับอินพุตจากแป้นพิมพ์
และนี่เรียกว่าวงจรควบคุมยาม มันไม่ได้ถูกควบคุมโดยเคาน์เตอร์
มันขึ้นอยู่กับตรรกะและตัวแปรที่สามารถเปลี่ยนแปลงได้
ดังนั้นในขณะที่ num ไม่เท่ากับลบ 1 แล้ว num จะถูกเก็บค่าที่เราป้อนลงในแป้นพิมพ์
หากผู้ใช้ไม่เคยป้อนค่าลบ 1 ในแป้นพิมพ์ การวนซ้ำนี้จะไม่เกิดขึ้น
ไวยากรณ์ประเภทเดียวกันที่นี่กับ while ของเรา
ตัวแปรควบคุมลูปของเราที่นี่คือ num เราเริ่มต้น 0 ที่ด้านบน จากนั้นเราอ่านในการแก้ไขเพื่อดูว่าเราจะเข้าสู่ลูปตามสิ่งที่ผู้ใช้ป้อนในแป้นพิมพ์หรือไม่
จากนั้นในวงเล็บสำหรับคีย์เวิร์ด while เราจะตรวจสอบเพื่อดูว่าเป็นค่าลบ
1 หรือไม่
จากนั้นในเนื้อความของ while loop ที่มีวงเล็บปีกกา ไม่จำเป็นต้องมีวงเล็บปีกกา
เพราะมีคำสั่งเดียว แต่ผมชอบใส่ไว้ในนั้น
จากนั้นเราก็อ่านอินพุตถัดไปและเก็บเป็น num
หากผู้ใช้ป้อนค่าลบ 1 สำหรับอินพุตถัดไป ค่านั้นจะกระโดดออกจากลูป
หากไม่เป็นเช่นนั้น จะดำเนินการต่อไปและขอให้ป้อนข้อมูล
do while loop ต่างจาก for loop ใน while loop
เล็กน้อย เพราะถือว่าเป็นลูปหลังการทดสอบ
ดังนั้นในขณะที่วนรอบร่างกายจะดำเนินการในขณะที่เงื่อนไขเป็นจริง
ใน do while loop ที่ body ถูกดำเนินการเป็นครั้งแรกโดยไม่มีเงื่อนไข do while
loop เนื่องจากการทดสอบอยู่ด้านล่างหมายความว่าคุณจะต้องดำเนินการวนซ้ำอย่างน้อยหนึ่งครั้งเสมอ
คุณจะต้องประหารร่างกายอย่างน้อยหนึ่งครั้งเสมอ
มันอาจจะมากกว่านั้นก็ได้ แต่มันจะเป็นครั้งเดียวเสมอ มันไม่เคยเป็น 0
เพราะเงื่อนไขการทดสอบทางออกอยู่ที่ด้านล่าง
สิ่งนี้เรียกว่าวงจรหลังการทดสอบ เรียกอีกอย่างว่าลูปควบคุมทางออก
ดังนั้นคุณจะใช้ do a while loop หากคุณต้องการให้ลูปป้อนอย่างน้อยหนึ่งครั้ง
โดยทั่วไปแล้ว คุณไม่จำเป็นต้องใช้ do while
loop เพราะคุณยังสามารถทำสิ่งเดียวกันใน for loop ได้หากต้องการ
คุณเพียงแค่วางโค้ดไว้นอกลูป
ดังนั้น do while loop จึงไม่จำเป็นจริงๆ แต่มีบางกรณีที่คุณต้องการใช้
หลังจากดำเนินการครั้งแรก ร่างกายจะถูกดำเนินการในขณะที่เงื่อนไขเป็นจริงเท่านั้น
ดังนั้นหลังจากการวนซ้ำครั้งแรกของลูป
มันจะทำหน้าที่เหมือนกับลูปปกติ มันจะกระโดดออกมาถ้าเงื่อนไขเป็นเท็จ
นี่คือสิ่งที่ดูเหมือน สิ่งที่ต้องทำอยู่ที่ด้านบน จากนั้นการทดสอบเงื่อนไขจะอยู่ที่ด้านล่างด้วยคีย์เวิร์ด
while
ให้ทำเป็นคีย์เวิร์ดใหม่
แล้วคุณจะมีวงเล็บหรือไม่มีวงเล็บก็ได้ ขึ้นอยู่กับว่าคุณมีหลายประโยคในเนื้อหาหรือไม่
หากคุณมีประโยคเดียวในเนื้อหา คุณจะไม่มีวงเล็บเหลี่ยม คุณจะต้องทำที่ด้านบน แล้วจึงจะมี
while ที่ด้านล่างของลูป
และในระหว่างนั้น ในวงเล็บ คุณจะมีการประเมินบูลีนซึ่งจะเป็นเงื่อนไขที่คุณตรวจสอบ
แต่อีกครั้ง
เนื่องจากเงื่อนไขนั้นอยู่ที่ด้านล่าง คุณจึงรับประกันได้ว่าจะดำเนินการตามคำสั่งอย่างน้อยหนึ่งครั้งเสมอ
ดังนั้นตัวอย่างทางด้านซ้ายคือหนึ่งคำสั่ง ตัวอย่างทางด้านขวาคือหลายคำสั่ง
ดังนั้นคุณมีวงเล็บปีกกา
และอีกครั้ง ในตัวอย่างที่สองนี้ คุณกำลังบอกว่าคุณอาจมีบางอย่างเช่นพร้อมท์ให้ใส่รหัสผ่าน อ่านข้อมูลที่ผู้ใช้ป้อน
และในขณะที่อินพุตไม่เท่ากับรหัสผ่าน
แต่คุณจะต้องถามรหัสผ่านนั้นอย่างน้อยหนึ่งครั้งเสมอ
อีกตัวอย่างหนึ่งทำในขณะที่วนรอบ
ตัวอย่างแรกบนนี้เป็นตัวอย่างของการวนซ้ำที่อาจดำเนินการครั้งเดียวหรือหลายครั้ง
แต่ไม่เคย 0
ทุกอย่างขึ้นอยู่กับสิ่งที่ผู้ใช้ป้อน มันจะดำเนินการอย่างน้อยหนึ่งครั้งเสมอ แต่นี่คือการอ่านอินพุตจากแป้นพิมพ์
เราเห็นฟังก์ชัน scanf
และตราบใดที่ผู้ใช้ไม่ป้อน 20 พวกเขาจะดำเนินการวนซ้ำนี้
ในขณะที่ลูปสามารถเป็นลูปควบคุมเคาน์เตอร์ได้ซึ่งหมายความว่าจะดำเนินการตามจำนวนที่กำหนด
ในกรณีนี้ มันจะดำเนินการ 4 ครั้งในตัวอย่างนี้
เรามีจำนวน int เท่ากับ 4 แล้วเราทำที่ด้านบนสุด แล้วเราก็มีวงเล็บ
เพราะเรามีหลายประโยคภายในเนื้อหา
และเรากำลังเพิ่มตัวแปรควบคุมลูปนั้นภายในเนื้อหา ตัวเลข บวก บวก
แล้วเงื่อนไขการตรวจสอบยังคงอยู่ที่ด้านล่าง คุณจะดำเนินการนี้ 4 ครั้ง
และคุณจะสังเกตเห็นว่าคีย์เวิร์ด while ไม่จำเป็นต้องอยู่ในบรรทัดเดียวกับวงเล็บปีกกาด้านขวา
ปกติก็ใช่แต่ไม่จำเป็นต้องเป็น
และในขณะที่คีย์เวิร์ดที่ด้านล่างสุดก็ลงท้ายด้วยเครื่องหมายอัฒภาค คุณควรสังเกตด้วยว่า
ดังนั้นเราจึงได้เรียนรู้ทั้งหมดเกี่ยวกับลูปเหล่านี้ for loop, while และ do while
คุณควรใช้ลูปอะไร?
อย่างแรกที่คุณต้องตัดสินใจว่าจะใช้ลูปใดเป็นอย่างแรก คุณต้องการให้มันเป็นแบบทดสอบก่อนหรือหลังการทดสอบ?
คุณต้องการดำเนินการอย่างน้อยหนึ่งครั้งหรือคุณไม่ต้องการดำเนินการอย่างน้อยหนึ่งครั้ง
หากคุณต้องการให้รันอย่างน้อยหนึ่งครั้ง
คุณจะต้องใช้ do while หากไม่ใช่เงื่อนไข
คุณสามารถใช้ for หรือ while หรือ do while
ดังนั้นส่วนใหญ่เมื่อคุณตัดสินใจว่าจะใช้ลูปใด มันจะเป็นลูปก่อนการทดสอบเสมอ
คุณควรอยู่ห่างจาก do while loop
เป็นเพียงตัวเลือกที่ดีกว่าในกรณีส่วนใหญ่ อ่านง่ายกว่ามาก
จะดีกว่ามากที่จะดูก่อนที่คุณจะวนซ้ำ
อย่าเริ่มวนซ้ำ เป็นการดีกว่าที่จะตรวจสอบเงื่อนไขนั้นที่ด้านบน
เพื่อประโยชน์ในการอ่าน หากวนรอบอยู่ในการทดสอบ มันจะใช้งานง่ายขึ้นมาก
ให้ตรวจสอบลูปนั้นในตอนเริ่มต้น ใช้ a for หรือชั่วขณะหนึ่ง
และในหลายกรณี สิ่งสำคัญคือต้องข้ามการวนซ้ำทั้งหมดหากไม่เป็นไปตามการทดสอบในตอนแรก
อีกครั้ง เนื่องจากเป็นกรณีนี้ การทดสอบควรอยู่ด้านบนสุด คุณไม่ควรดำเนินการอย่างน้อยหนึ่งครั้งเสมอ
ส่วนใหญ่คุณอาจไม่ต้องการดำเนินการ
ดังนั้นคุณควรใช้เวลาสักครู่
ตอนนี้คำถามก็ลงมาแล้วฉันควรใช้อันไหนซักพัก
มันเป็นเรื่องของความชอบส่วนบุคคลจริงๆ มันไม่สำคัญหรอก เพราะอย่างที่ฉันพูดในตอนต้นของการบรรยายนี้
ทุกสิ่งที่คุณสามารถทำได้ในชั่วขณะหนึ่ง คุณสามารถทำในสำหรับ
ดังนั้น หากคุณชอบ for loop มากกว่า บางครั้ง for ก็เร็วกว่าเล็กน้อย เนื่องจากการปรับเปลี่ยนการควบคุมลูปทั้งหมด
และการเริ่มต้น และเงื่อนไขการออกทั้งหมดสามารถอยู่ในบรรทัดเดียวได้
แต่มันขึ้นอยู่กับคุณจริงๆ
โดยทั่วไปแล้ว สิ่งที่ฉันทำคือฉันจะใช้ for loop สำหรับลูปที่ควบคุมโดยเคาน์เตอร์
แต่อีกครั้งคุณสามารถใช้แบบเดียวกันได้ หากคุณต้องการใช้ for loop
และทำให้ดูเหมือนชั่วขณะหนึ่ง คุณไม่มีนิพจน์แรกและนิพจน์ที่สาม
คุณก็แค่มีนิพจน์เดียว ดังนั้น อัฒภาคสำหรับการทดสอบเซมิโคลอนจะเหมือนกับในขณะที่ทดสอบ
ดังนั้นนี่เป็นเพียงการแสดงให้คุณเห็นว่า for ในขณะที่สามารถทำสิ่งเดียวกันได้ เพียงแค่เปลี่ยนรูปแบบเล็กน้อย
หากคุณต้องการใช้ while loop จริง ๆ แต่ต้องการให้ทำหน้าที่เป็น for
loop คุณจะต้องนำหน้าด้วยการเริ่มต้นและรวมคำสั่ง update ไว้ในเนื้อหา
สิ่งที่คุณจะทำคือประมาณนี้ และคุณมักจะทำแบบนี้ชั่วขณะหนึ่ง
แต่นี่เทียบเท่ากับ for loop การเริ่มต้นอยู่นอกลูปของตัวแปรควบคุม
ตัวแปรควบคุมลูป
เงื่อนไขของการทดสอบอยู่ภายในวงเล็บ จากนั้นคุณกำลังอัปเดตตัวแปรควบคุมลูปนั้นในเนื้อหาของลูป
while
และนั่นก็เหมือนกับการอัปเดตการทดสอบการเริ่มต้น for
loop และเนื้อหา ไม่มีความแตกต่าง
อีกครั้งที่ฉันพูดถึงฉันใช้ for loop สำหรับลูปควบคุมเคาน์เตอร์อีกเล็กน้อย
แต่ฉันจะใช้ทั้ง for และ the while แทนกันได้ ขึ้นอยู่กับว่าฉันรู้สึกอย่างไรในวันนั้น
ดังนั้น for loop อาจเหมาะสมกว่าเล็กน้อยหากคุณต้องการเริ่มต้นและอัปเดตตัวแปรในหนึ่งบรรทัด
วง while จะดีกว่าเมื่อเงื่อนไขเป็นอย่างอื่น
อีกครั้ง ลูปคอนโทรลควบคุมสำหรับ ลูปคอนโทรลลูปอาจเป็นลูป while
และนี่คือตัวอย่างของลูป while ที่มีลูปควบคุม Sentinel และ
for loop ที่ทำสิ่งเดียวกันอีกครั้งหรือ for loop สำหรับการควบคุมตัวนับ
ในขณะที่ลูปสามารถรันได้หลายครั้งขึ้นอยู่กับสิ่งที่ผู้ใช้ป้อน
แต่ for loop จะถูกควบคุมโดยตัวนับ
ดังนั้นนี่คือในขณะที่ทำในขณะที่ หวังว่านี่จะชัดเจน
ทำความคุ้นเคยกับลูปเหล่านี้เพราะคุณต้องการทำซ้ำโค้ดบ่อยๆ
ในการพูดคุยเล็กน้อยเกี่ยวกับ nested loops และกลไกต่าง ๆ เล็กน้อยในการออกจากลูปโดยใช้ตัวแบ่งหรือดำเนินการต่อ
ขอขอบคุณ.