>> DOUG LLOYD: สิทธิทั้งหมดเพื่อ ขอพูดคุยเกี่ยวกับลูป
ดังนั้นลูปเป็นชนิดของเย็น เพราะช่วยให้โปรแกรมของคุณ
ในการดำเนินการสายรหัส มากกว่าและเหนือและมากกว่า
ซ้ำแล้วซ้ำอีกโดยไม่ต้องมีการคัดลอก และวางหรือมิฉะนั้นซ้ำพวกเขา
มีสามที่สำคัญคือ ชนิดของลูปที่คุณจะเห็น
คุณอาจจะมีโอกาสที่จะใช้ แต่ละคนในขณะที่คุณความคืบหน้าผ่าน CS50
บางส่วนของลูปเหล่านี้จะสวย คุ้นเคยกับคุณจากรอยขีดข่วน
อีกครั้งที่เราทำกับเงื่อนไข, เราจะทำให้พวกเขาขึ้นเคียงข้าง
ถ้ามีความคล้ายคลึงกันคือเราสามารถวาด
>> แรกคือตลอดไปจากรอยขีดข่วน ซึ่งเมื่อเทียบกับในขณะที่ (จริง)
นี่คือสิ่งที่เราเรียกว่าวง จำกัด
สายรหัสระหว่างปีกกา การจัดฟันเหมือนชิ้นส่วนปริศนา
ที่พอดีภายใน C ของป้องกันตลอดไป
จะดำเนินการจากบนซ้ำแล้วซ้ำอีก ลงล่างมากกว่าและเหนือและมากกว่า
ตลอดไป
หลังจากทั้งหมดถ้าคุณจำของเรา การอภิปรายของการแสดงออกบูลีน
ความจริงเป็นจริงเสมอ
ดังนั้นหากเรากำลังทำ บางสิ่งบางอย่างตราบใดที่ความจริง
เป็น true-- ดูเหมือนว่า silly-- เล็ก ๆ น้อย ๆ ที่แท้จริง เป็นความจริงเสมอดังนั้นจึงมักจะเรียกใช้
มันจะทำงานตลอดไปและ นิจกาลจนกว่าเรา
หาวิธีที่จะแยกออกจากมันด้วย คำสั่งแบ่งที่อีกครั้ง
ที่เราเห็นในขณะที่เล็ก ๆ น้อย ๆ ที่ผ่านมาเรา พูดถึงสวิทช์
>> หรือมิฉะนั้นเพียงแค่ฆ่าเรา โปรแกรมซึ่งบังเอิญ
ถ้าคุณเคยพบตัวเองใน สถานการณ์ที่มีวง จำกัด
และคุณไม่ทราบวิธีที่จะหยุด โปรแกรมของคุณจากการทำงาน
เพียงแค่กดควบคุมและ C และ ที่จะฆ่าโปรแกรมของคุณสำหรับคุณ
แต่นี้อีกครั้งเป็น เรียกว่าวง จำกัด
มันเป็นห่วงที่จะทำงานตลอดไป
ตอนนี้ในขณะที่ลูปไม่ได้ ไม่มีที่สิ้นสุดเสมอเพราะยัง
เราสามารถเปลี่ยนบูลีน กับสิ่งที่แสดงออก
เล็ก ๆ น้อย ๆ ที่มีประโยชน์มากขึ้นกว่าที่เป็นจริงเพียง
ดังนั้นนี่คืออีกตัวอย่างหนึ่ง
ในขณะที่บางและบูลีน การแสดงออกแล้ววงเล็บปีกกา
ที่สวยมากคล้าย ที่จะทำซ้ำจนกระทั่งจากรอยขีดข่วน
แม้ว่าในครั้งที่สองที่ผมจะ อธิบายความแตกต่าง
>> ดังนั้นใน C ถ้านิพจน์บูลีน ด้านในของวงในขณะที่
ประเมินจริงสายของ รหัสระหว่างวงเล็บปีกกา
จะดำเนินการซ้ำ ๆ ซ้ำไปซ้ำมา และมากกว่าจนกว่านิพจน์บูลีน
ประเมินเป็นเท็จ
ดังนั้นสำหรับตัวอย่างเช่นคุณอาจจะ มีการจัดเรียงของบางเคาน์เตอร์
ดังนั้นว่าคุณที่จุดเริ่มต้นของ วงนี้พูด int x เท่ากับศูนย์
ในขณะที่ x คือน้อยกว่า 100 ทำคู่ สิ่งที่อยู่ภายในวงเล็บปีกกา,
แล้วในที่สุดของวงของคุณที่คุณพูด x บวกบวกที่คุณกำลัง incrementing x
ในที่สุดก็จะได้รับ x 100 และคุณจะ
หยุดเพราะสภาพ x น้อยกว่า 100
จะไม่เป็นจริง เร็วที่สุดเท่าที่ x เท่ากับ 100
100 มีไม่ต่ำกว่า 100
>> ตอนนี้ค่อนข้างสับสนพฤติกรรม ของบล็อกรอยขีดข่วนเป็นสิ่งที่ตรงกันข้าม
ดังนั้นควรระมัดระวังจริงๆถ้าเป็น การโจมตีครั้งแรกของคุณในการใช้ลูป
โดยทั่วไปการทำซ้ำ จนกระทั่งในบล็อกรอยขีดข่วน
สิ่งที่จะทำซ้ำ มากกว่าและเหนือและมากกว่า
จนแสดงออกบูลีน การแสดงออกในรูปหกเหลี่ยมเป็นจริง
ดังนั้นมันจะให้ทำ มันจนกว่ามันเป็นความจริง
ขณะที่วงในขณะที่จะ ยังคงทำมันจนกว่าจะเป็นเท็จ
ดังนั้นพวกเขากำลังที่คล้ายกันมาก แต่ มีที่แตกต่างเพียงเล็กน้อย
จะต้องระวังโดยเฉพาะอย่างยิ่งที่คุณทำ การโจมตีครั้งแรกของคุณจากการเปลี่ยน
ที่จะเข้ามาในครอยขีดข่วน
ชนิดต่อไปของวงคือ จริงสวยเหมือนกัน
มันเรียกว่าสิ่งที่ต้องทำในขณะที่วง
วงนี้จะดำเนินการทุกสาย รหัสระหว่างวงเล็บปีกกาครั้งเดียว
และจากนั้นก็จะตรวจสอบ การแสดงออกบูลีน
ถ้านิพจน์บูลีน ประเมินจริง
มันจะกลับไปทำซ้ำ กระบวนการที่ซ้ำไปซ้ำมา
และมากกว่าจนกว่าบูลีน ประเมินการแสดงออกเป็นเท็จ
ดังนั้นวงนี้แตกต่างจากวงในขณะที่เป็น รับประกันว่าจะทำงานอย่างน้อยหนึ่งครั้ง
นี้จะมีประโยชน์สวย
>> สุดท้ายเรามีห่วง
สำหรับลูปเป็นชนิดของ สวย syntactically
และมีจำนวนมากที่เกิด ที่นี่เพื่อให้อดทนกับฉัน
ที่เราพยายามและทำลายชิ้นส่วนเหล่านี้ออกจากกัน
โดยทั่วไปกรณีใช้ ของห่วงคุณ
ต้องการที่จะทำซ้ำบางสิ่งบางอย่าง หมายเลขเฉพาะของครั้ง
ในตัวอย่างนี้ที่นี่ ฉันมีบล็อกซ้ำ
จากรอยขีดข่วนซึ่งเป็น คล้ายกับการห่วง
ใน C, การทำซ้ำ 10 ครั้งบางสิ่งบางอย่าง
และสำหรับวงใน มีซ้ายซึ่ง
เป็นวงที่สี่ จะทำในสิ่งเดียวกัน
นี้จะไป 10 ครั้ง
นับจากศูนย์เรา เพิ่มการส่งผ่านของวงแต่ละคน
และเราให้ทำอย่างนั้น จนกว่า i น้อยกว่า 10
>> ดังนั้นสิ่งที่เกิดขึ้น?
มีมากทั้งรหัสมี
Let 's ทำลายมันลงไป สิ่งที่เกิดขึ้นในขั้นตอน
โดยขั้นตอนที่เราขุดผ่านสำหรับห่วง
สิ่งแรกที่เกิดขึ้นก็คือ ตัวแปรนับเป็นศูนย์กลาง
ทุกอย่างทางด้านซ้ายของแรกที่ อัฒภาคภายในวงเล็บ
จะถูกดำเนินการ
ในกรณีนี้เรามี บอกฉัน int เท่ากับ 0
ประกาศตัวแปรใหม่ที่เรียกว่า i, ตัวแปรที่เป็นจำนวนเต็มชนิด
และเรากำลังจะบอกว่าค่าที่อยู่ภายใน ตัวแปรที่จะเป็นศูนย์
>> สิ่งที่สองที่เราทำคือ แล้วทันทีที่เราประเมิน
การแสดงออกบูลีน
นิพจน์บูลีนอยู่ใน ตรงกลางของทั้งสองอัฒภาค
ฉันน้อยกว่า 10
ที่จริงที่นี่ใช่มั้ย?
เราเพียงแค่กล่าวว่าฉันจะมีค่าเท่ากับ ศูนย์และอื่น ๆ 0 น้อยกว่า 10
และเพื่อให้มีเงื่อนไขว่า เป็นความจริงและตอนนี้เราจะ
ดำเนินการในการดำเนินการที่ร่างกายของวง
ถ้ามันเป็นของปลอม
ตัวอย่างเช่นถ้าผมพูดแทน ฉันมีค่าเท่ากับ 0 มีฉันกล่าวว่าฉันมีค่าเท่ากับ 15
int i เท่ากับ 15
ดี 15 เป็นไม่น้อยกว่า 10 ดังนั้นเรา ไม่เคยจะเข้าสู่ร่างกายของวง
เพราะนิพจน์บูลีน จะมีการประเมินว่าเป็นเท็จ
>> หลังจากที่เราผ่านไปจากบนลงล่าง เราพบว่าการปิดรั้งหยิก
เป็นสิ่งที่เกิดขึ้นที่สาม
ตัวแปรนับเป็น เพิ่มขึ้นหรือมากกว่าเส้น
รหัสของคำสั่งหลัง อัฒภาคที่สองภายในของ
สำหรับวงเล็บลูปจะถูกดำเนินการ
ดังนั้นเราจึงเริ่มต้นด้วยการ บอกฉัน int เท่ากับ 0
แล้วเราจะตรวจสอบหรือไม่ การแสดงออกบูลีนเป็นความจริง
0 น้อยกว่า 10 ดังนั้นมันเป็นความจริง
ดังนั้นเรากำลังจะดำเนินการต่อไป เข้าไปในร่างกายของวง
สิ่งที่จะเกิดขึ้นภายในวงและ เมื่อเราพบว่าการปิดหยิก
รั้งในสิ่งต่อไปที่เรา ทำคือการที่เราบอกว่าฉันบวกบวก
ผมเป็นศูนย์ตอนนี้ฉันเป็นหนึ่งใน
จากนั้นเราจะตรวจสอบค่าอีกครั้งของ การแสดงออกบูลีนที่อยู่ตรงกลาง
หนึ่งคือน้อยกว่า 10
ดังนั้นเราจะผ่านไปนี้ ดำเนินการอีกครั้งและอีกครั้ง
เราจะไปปิด วงเล็บปีกกาอีกครั้ง
เราจะเพิ่มขึ้นจากฉัน 1-2 และ 2-3
และอื่น ๆ และอื่น ๆ และอื่น ๆ จน ในที่สุดค่าฉันจะกลายเป็น 10
10 น้อยกว่า 10?
เลขที่
นับจาก 0, เราได้ไป ผ่านการทำซ้ำ 10 ของวง
เราได้ทำซ้ำ 10 ครั้งเพียง ที่เราทำในการป้องกันรอยขีดข่วน
และเพื่อให้เป็นพื้น กระบวนการสี่ห่วง
>> ขณะนี้การออกไป รหัสจริงและวางไว้
ในเพียงบางส่วนงบพื้นฐานทั่วไป
นี่คือสิ่งที่เกิดขึ้น
งบทั้งหมดใน เริ่มต้นครั้งแรกที่จะดำเนินการ
คุณอาจมีมากกว่าหนึ่ง
จากนั้นนิพจน์บูลีนมีการตรวจสอบ
ถ้าแสดงออกประเมินจริง รันร่างกายห่วงครั้งหนึ่ง
ถ้าแสดงออกประเมิน เป็นเท็จที่เรากำลังทำ
เราไม่ได้ดำเนินการ ร่างกายของวงที่ทุกคน
หลังจากที่เราได้ดำเนิน ร่างกายห่วงครั้งหนึ่ง
แล้วเราก็ทำในสิ่งที่อยู่ใน ส่วนที่มีเพิ่มขึ้น
ซึ่งมักจะเป็นไปได้ สิ่งที่ต้องการฉันบวกบวก
หรือสิ่งที่ต้องการนั้น ปรับเปลี่ยนตัวแปรเคาน์เตอร์
จากนั้นหลังจากที่เราเพิ่มเรา การตรวจสอบการแสดงออกอีกครั้ง
และทำซ้ำขั้นตอนเหล่านั้นซ้ำแล้วซ้ำอีก และมากกว่าจนการแสดงออกเป็น
ไม่จริง
>> ดังนั้นสิ่งที่เป็นกรณีการใช้งานสำหรับวง?
ใช้คุณใช้ห่วงในขณะที่เมื่อ คุณต้องการวงที่จะทำซ้ำ
ไม่ทราบจำนวนครั้ง แต่ มันอาจเป็นไปได้อาจจะไม่ทำงานตลอด
เช่นกันจริงๆ ในขณะที่วนลูปถูกนำมาใช้
คือการใช้การควบคุมการไหลสำหรับเกมส์
คุณอาจไม่ทราบวิธียาว ผู้ใช้จะได้รับการเล่น
แต่คุณต้องการที่จะเก็บ ทำในสิ่งเดียวกัน
การปรับปรุงตำแหน่งของ สไปรท์ต่างๆบนกระดาน
คุณต้องการที่จะให้สิ่งที่ การเคลื่อนย้ายตลอดเวลา
แต่คุณไม่ทราบว่าเมื่อ ผู้ใช้จะหยุดเล่น
หรือเมื่อพวกเขากำลังจะ ที่จะวิ่งออกไปจากชีวิต
ดังนั้นห่วงในขณะที่เป็นจริง ดีสำหรับสิ่งที่ต้องการที่
นั่นคือกรณีใช้งานที่ดี
>> สำหรับสิ่งที่ต้องทำในขณะที่ห่วง ก็สวยเหมือนกัน
คุณต้องการที่จะห่วงทำซ้ำที่ไม่รู้จัก จำนวนครั้ง แต่อย่างน้อยหนึ่งครั้ง
คุณอาจใช้นี้สำหรับเกม เกินไป แต่กรณีการใช้งานทั่วไปจริงๆ
จะแจ้งผู้ใช้สำหรับการป้อนข้อมูล
โดยทั่วไปแล้วคุณอาจจะบอกว่าบางสิ่งบางอย่าง เช่นให้ฉันเป็นจำนวนเต็มบวก
และคุณอาจจะใส่ที่ ภายในของสิ่งที่ต้องทำในขณะที่ห่วง
ดังนั้นจึงมักจะถามพวกเขาที่ อย่างน้อยหนึ่งครั้งสำหรับจำนวนเต็มบวก
ถ้าพวกเขาให้เป็นจำนวนเต็มบวก คุณอาจแบ่งออกจากวง
คุณอาจจะทำ
นิพจน์บูลีนใน ทำในขณะที่อาจจะผิดพลาด
>> และคุณจะไม่ขอให้พวกเขาอีกครั้ง
ถ้าพวกเขาให้คุณเป็นจำนวนลบที่ พวกเขาพิมพ์บางคำหรือบางสิ่งบางอย่างที่
ไม่ได้จริงๆมีประโยชน์ในการ คุณคุณอาจใช้
ในขณะที่ไม่ห่วงที่จะกลับไปทำ อีกครั้งและอีกครั้งและอีกครั้ง
แน่นอนคุณต้องการที่จะขอ พวกเขาเพื่อให้คุณจำนวนหนึ่งครั้ง
แต่คุณไม่ทราบว่าหลายครั้ง หลังจากที่พวกเขาอาจจะมีศัตรูพืช
และเพื่อให้ทำในขณะที่มันเป็นประโยชน์อย่างยิ่ง กรณีแจ้งผู้ใช้สำหรับการป้อนข้อมูล
และสำหรับการใช้ลูป กรณีโดยทั่วไปคือเมื่อ
คุณต้องการที่จะทำซ้ำห่วง จำนวนที่ไม่ต่อเนื่องครั้ง
แม้ว่าคุณอาจจะไม่ ทราบจำนวนครั้ง
ขณะที่โปรแกรมจะรวบรวม
>> ดังนั้นตัวอย่างเช่นบางทีคุณอาจจะมีโปรแกรม ที่คุณแจ้งให้ผู้ใช้สำหรับจำนวน
และพวกเขาใส่ 100
และจากนั้นคุณจะห่วง ในกรณีที่ทำงาน 100 ครั้ง
หรือบางทีพวกเขาใส่ 1000 ในโปรแกรมของคุณ
และเรียกใช้ห่วง 1,000 ครั้ง
มันเป็นจำนวนเฉพาะครั้ง
พวกเขาไม่จำเป็นต้อง รู้ว่าสิ่งที่ตัวเลขที่
เป็นโปรแกรมช่วงเวลาที่จะรวบรวม
มันไม่เหมือนวงในขณะที่ ที่มันอาจจะไม่มีที่สิ้นสุด
มันค่อนข้างเป็นจำนวนมาก ที่คุณก็ไม่ทราบ
ตอนนี้ถึงแม้ว่าฉัน ที่ระบุไว้ทุกกรณีการใช้งานเหล่านี้
คุณควรรู้ว่าสวย มากทุกกรณี,
คุณสามารถแลกเปลี่ยนทั้งหมด สามของลูปเหล่านี้
คุณสามารถใช้สำหรับวงที่คุณ มิฉะนั้นจะใช้วงในขณะที่
คุณสามารถใช้สำหรับวงที่ใดก็ตาม คุณต้องการใช้สิ่งที่ต้องทำในขณะที่ห่วงและอื่น ๆ
มันอาจจะเป็นบางครั้งหากินเล็ก ๆ น้อย ๆ ดังนั้นโดยทั่วไปก็เป็นวิธีที่ดี
ให้เป็นไปตามกรณีการใช้งานทั่วไป
ใช้สิ่งที่ต้องทำในขณะที่ห่วงถ้าคุณ ต้องการสิ่งที่ครั้งหนึ่งเคยเป็นอย่างน้อย
ใช้สำหรับวงถ้าคุณต้องการที่จะทำ บางสิ่งบางอย่างที่เฉพาะเจาะจงจำนวนครั้ง
หลังจากที่ทุกคนที่ว่าทำไมมี สามชนิดที่แตกต่างกันของลูป
>> ดังนั้นพวกเขาจึงสามารถนำมาใช้ ในบริบทที่เหมาะสม
แต่คุณสามารถแลกเปลี่ยน พวกเขาหากคุณต้องการ
ถ้าคุณรู้สึกสะดวกสบายกับลูปในขณะที่ และคุณก็ต้องการที่จะใช้ในขณะที่ลูป
มันเป็นสิ่งที่ ที่คุณสามารถทำได้แม้ว่ามันจะ
อาจจะเป็น syntactically เล็ก ๆ น้อย ๆ หากินที่สำหรับวง
จะมากตรงไปตรงมามากขึ้น
>> ชื่อของฉันคือดั๊กลอยด์และนี่คือ CS50