1 00:00:00,000 --> 00:00:03,160 >> DAVID เจลัน: สมมติว่าเราต้องการที่จะเขียน โปรแกรมที่ขอให้ทุกคนใน 2 00:00:03,160 --> 00:00:06,740 ห้องพักสำหรับอายุของพวกเขาและจากนั้นพิมพ์ ออกวิธีการเดิมที่คนเหล่านั้นจะได้รับการ 3 00:00:06,740 --> 00:00:07,520 ปีนี้? 4 00:00:07,520 --> 00:00:09,900 ตอนนี้เห็นได้ชัดว่าการคำนวณนี้ ปัญหาเป็นไปได้อย่างเป็นธรรม 5 00:00:09,900 --> 00:00:10,660 ซื่อตรง 6 00:00:10,660 --> 00:00:14,090 แต่คำถามที่น่าสนใจคือถ้าเรา ไม่ทราบล่วงหน้าว่าผู้คนจำนวนมาก 7 00:00:14,090 --> 00:00:16,790 เป็นไปได้ในห้องนี้ว่า เราสามารถไปเกี่ยวกับการจัดเก็บ 8 00:00:16,790 --> 00:00:17,980 ทุกวัยของพวกเขา 9 00:00:17,980 --> 00:00:19,680 ดีลองมาดู 10 00:00:19,680 --> 00:00:22,760 >> ขอเริ่มต้นด้วยการกระตุ้น ผู้ใช้ที่ผมเคยทำที่นี่สำหรับ 11 00:00:22,760 --> 00:00:26,410 ผู้คนจำนวนมากในห้องพักโดยใช้ GetInt และห่วงในขณะที่ทำเพื่อ 12 00:00:26,410 --> 00:00:28,220 ได้รับจำนวนเต็ม 13 00:00:28,220 --> 00:00:32,310 สมมติว่าตอนนี้เราต้องการที่จะขอให้แต่ละเช่น คนที่อยู่ในห้องพักสำหรับอายุของพวกเขา 14 00:00:32,310 --> 00:00:35,820 ดีสัญชาตญาณของฉันจะใช้ ห่วงทำที่แจ้ง แต่ฉันยัง 15 00:00:35,820 --> 00:00:37,840 ต้องการที่จะเก็บ อายุของคนเหล่านั้น 16 00:00:37,840 --> 00:00:40,760 และสัญชาตญาณแรกของฉันจะมี การใช้ตัวแปรเป็นครั้งแรก 17 00:00:40,760 --> 00:00:43,690 อายุของบุคคลตัวแปรอื่น สำหรับอายุของคนที่สองของ 18 00:00:43,690 --> 00:00:44,780 การจัดเรียงของตามสาย 19 00:00:44,780 --> 00:00:46,230 อายุ int - 20 00:00:46,230 --> 00:00:48,850 ดีขอเรียกว่า 1 สำหรับ เป็นคนแรก 21 00:00:48,850 --> 00:00:51,480 int อายุ 2 คนที่สอง 22 00:00:51,480 --> 00:00:53,980 int อายุ 3 สำหรับบุคคลที่สาม 23 00:00:53,980 --> 00:00:56,750 >> แต่รอสักครู่นี้ไม่อาจจะ เส้นทางที่ดีที่สุดที่จะไปลง 24 00:00:56,750 --> 00:01:00,620 เพราะผมไม่ทราบว่าในอนาคตของ การเขียนและรวบรวมโปรแกรมนี้ว่า 25 00:01:00,620 --> 00:01:02,330 ผู้ใช้หลายคนที่มีกำลังจะเป็น 26 00:01:02,330 --> 00:01:06,590 และนอกจากนี้ถ้ามีมากที่สุดเท่าที่ ผู้ใช้ 100, 100 ประกาศตัวแปร 27 00:01:06,590 --> 00:01:10,350 การเรียงลำดับของการตั้งชื่ออย่างผิดปกติเช่นนี้ไม่ได้ รู้สึกเหมือนการออกแบบที่ดีที่สุด 28 00:01:10,350 --> 00:01:14,430 >> ดีขอบคุณที่มีอยู่อีก ชนิดของตัวแปรที่เรียกว่าแถวที่ 29 00:01:14,430 --> 00:01:18,710 ช่วยให้เราสามารถเก็บหมายเลขของ ints ใด ๆ ภายในของมันแม้ว่าเราไม่ทราบ 30 00:01:18,710 --> 00:01:22,190 เมื่อเขียนโปรแกรมของฉันกี่ ints เช่นที่เรากำลังจะต้อง 31 00:01:22,190 --> 00:01:25,970 จึงขอย้อนกลับและลบเหล่านี้ หลาย ints และแทนที่จะแทนที่ 32 00:01:25,970 --> 00:01:29,620 กับหนึ่งในตัวแปรที่เรียกว่า พูดวัยพหูพจน์ 33 00:01:29,620 --> 00:01:33,420 แต่ขอเพิ่มเติมระบุในบรรทัดนี้ ของรหัสในวงเล็บว่าเรา 34 00:01:33,420 --> 00:01:35,460 ต้องการ n ints 35 00:01:35,460 --> 00:01:39,570 และดังนั้นเราจะเรียกรวม อ้างถึง ints เหล่านี้เป็นวัย 36 00:01:39,570 --> 00:01:43,490 >> ตอนนี้ในเวลาเพียงสักครู่ฉันจะสามารถที่จะได้รับ ในแต่ละ ints ในอาร์เรย์นี้ 37 00:01:43,490 --> 00:01:47,270 ในทำนองเดียวกันโดยวิธีการวงเล็บเหลี่ยม สัญกรณ์เริ่มต้นที่ 0 38 00:01:47,270 --> 00:01:51,720 เพื่อขอดำเนินการขณะนี้อยู่ในวงที่จะ แจ้งให้ผู้ใช้สำหรับทุกวัยของพวกเขา 39 00:01:51,720 --> 00:01:54,780 สำหรับ int ฉันได้รับ 0 40 00:01:54,780 --> 00:01:59,464 ฉันมีค่าน้อยกว่า N, ผู้คนจำนวนมาก ในห้องฉันบวกบวก 41 00:01:59,464 --> 00:02:06,610 >> และขณะนี้อยู่ในวงนี้ขอบอกว่า อายุ printf จำนวนคนร้อยละฉัน 42 00:02:06,610 --> 00:02:09,430 เป็นตัวยึดจุลภาค 43 00:02:09,430 --> 00:02:13,210 และตอนนี้มากกว่าที่จะเริ่มนับจาก 0 ในโปรแกรมตัวเองให้เป็นที่ 44 00:02:13,210 --> 00:02:17,180 ฉันเพิ่มขึ้นอย่างน้อย 1 เพื่อให้ปกติ คนที่ใช้โปรแกรมนี้ 45 00:02:17,180 --> 00:02:20,120 ไม่ได้มีการนับเช่น นักวิทยาศาสตร์คอมพิวเตอร์อาจ 46 00:02:20,120 --> 00:02:26,130 ตอนนี้ขอทำวัยวงเล็บผมจึง ระบุว่าอายุลำดับที่ i ในของเรา 47 00:02:26,130 --> 00:02:31,480 อาร์เรย์ของว​​ัยเป็นไปได้ ค่าตอบแทนของ GetInt 48 00:02:31,480 --> 00:02:37,800 >> ตอนนี้ห่วงด้านล่างนี้ให้ดำเนินการต่อไป จะคิดว่าบางเวลาผ่านไป 49 00:02:37,800 --> 00:02:41,690 และตอนนี้ขอดำเนินการต่อไปในวงอื่น ที่จริงอายุทุกคนในห้อง 50 00:02:41,690 --> 00:02:42,800 โดยหนึ่งในปี 51 00:02:42,800 --> 00:02:48,110 ดังนั้นอีกครั้งที่ฉันได้รับ int 0 ผมน้อย กว่า N, จำนวนของผู้คนใน 52 00:02:48,110 --> 00:02:49,680 ห้องพักผมบวกบวก 53 00:02:49,680 --> 00:02:57,210 >> และตอนนี้ด้านในของวงนี้ขอบอกว่า printf ปีจากนี้จำนวนคน 54 00:02:57,210 --> 00:03:00,990 ร้อยละฉันเป็นตัวยึดจะ เป็นร้อยละฉันก็เป็นอีกหนึ่ง 55 00:03:00,990 --> 00:03:03,210 ตัวยึดปี 56 00:03:03,210 --> 00:03:07,230 แล้วเสียบเข้าที่ ตัวยึดให้เป็นครั้งแรกบอกว่าฉันบวก 57 00:03:07,230 --> 00:03:11,220 1 เพื่อให้อีกครั้งที่เราจะเริ่มนับ สำหรับผู้ใช้ตั้งแต่วันที่ 1 58 00:03:11,220 --> 00:03:18,630 และจากนั้นให้เสียบอายุของบุคคลที่ ขณะที่ผมอายุวงเล็บบวก 1 จึง 59 00:03:18,630 --> 00:03:23,740 ระบุการเดินทางได้รับอายุลำดับที่ i ในของเรา อาร์เรย์ของว​​ัยเพิ่ม 1 ไปแล้ว 60 00:03:23,740 --> 00:03:28,370 แทรกผลรวมที่เป็นตัวยึดของเรา วงเล็บปิดอัฒภาค 61 00:03:28,370 --> 00:03:33,280 >> ตอนนี้ขอรวบรวมโปรแกรมนี้กับการทำ วัยและให้ทำงานได้ด้วยจุด 62 00:03:33,280 --> 00:03:34,990 เฉือนวัย 63 00:03:34,990 --> 00:03:38,770 และคิดว่ามีเพียงสาม คนที่อยู่ในห้องและมีคนอยู่ 18 64 00:03:38,770 --> 00:03:40,700 มีคน 19 คน 20 65 00:03:40,700 --> 00:03:45,350 ดีในปีที่แต่ละคนเหล่านั้น เป็นไปได้ที่ 19, 20, และ 21, 66 00:03:45,350 --> 00:03:46,600 ตามลำดับ 67 00:03:46,600 --> 00:03:48,948