1 00:00:00,000 --> 00:00:02,880 >> [เล่นเพลง] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> ลำโพง 1: นี่คือ CS50 และ นี้คือจุดเริ่มต้นของสัปดาห์ที่สอง 4 00:00:13,500 --> 00:00:18,400 ดังนั้นขอดำน้ำที่เหมาะสมเป็นสิ่งที่ ที่เป็นรถเพื่อที่จะพูด 5 00:00:18,400 --> 00:00:24,015 ดังนั้นกว่าที่นี่เป็น IDE CS50 และฉันได้ ดึงขึ้นล่วงหน้า screen-- นี้แช่ง 6 00:00:24,015 --> 00:00:25,070 มัน 7 00:00:25,070 --> 00:00:25,760 แจ้งเตือนสปอยเลอร์. 8 00:00:25,760 --> 00:00:26,260 ทั้งหมดขวา 9 00:00:26,260 --> 00:00:29,060 ผมเคยดึงขึ้นหน้าจอนี้ที่นี่ ซึ่งมีโปรแกรมที่ง่ายมาก 10 00:00:29,060 --> 00:00:32,659 ถ้าเราเลื่อนลงมากที่สุด นี้เป็นเพียงการแสดงความคิดเห็น 11 00:00:32,659 --> 00:00:36,730 แต่ที่นี่ในสาย 13 ผ่าน 17 เรามีโปรแกรม 12 00:00:36,730 --> 00:00:40,580 >> มันเป็นเรื่องที่ถูกต้อง syntactically ซ​​ึ่งหมายความว่าถ้า ฉันจะรวบรวมมันจะรวบรวมและทำงาน 13 00:00:40,580 --> 00:00:41,920 แต่มันก็เป็นรถ 14 00:00:41,920 --> 00:00:47,330 โปรแกรมนี้จะอ้างว่าในความคิดเห็น ขึ้นด้านบนว่ามันควรจะพิมพ์ 10 ดาว 15 00:00:47,330 --> 00:00:48,870 แต่มันไม่ได้ 16 00:00:48,870 --> 00:00:53,290 และขึ้นอยู่กับประสบการณ์ของคุณ หรือเร็ว ๆ นี้จะมีประสบการณ์กับซี 17 00:00:53,290 --> 00:00:56,820 คุณสามารถมองเห็นเหตุผล ทำไมนี้ในความเป็นจริง Buggy? 18 00:00:56,820 --> 00:00:57,804 ใช่? 19 00:00:57,804 --> 00:00:59,220 ผู้ชม: มันจะไปจากศูนย์ถึง 10 20 00:00:59,220 --> 00:01:01,884 นั่นคือการทำซ้ำ 11 21 00:01:01,884 --> 00:01:02,550 ลำโพง 1: ใช่ 22 00:01:02,550 --> 00:01:06,030 ดังนั้นมันจะจากศูนย์ ผ่านและเท่ากับ 10, 23 00:01:06,030 --> 00:01:08,140 ซึ่งแน่นอนว่าเป็น 11 ซ้ำ 24 00:01:08,140 --> 00:01:10,020 ดังนั้นจึงเป็นไปได้ พิมพ์จริง 11 ดาว 25 00:01:10,020 --> 00:01:13,040 ดังนั้นการประชุมวิทยาการคอมพิวเตอร์ มากที่สุดในการเขียนโปรแกรมภาษา 26 00:01:13,040 --> 00:01:15,270 เป็นจริงเพียงเพื่อ เริ่มนับที่ศูนย์ 27 00:01:15,270 --> 00:01:18,800 แต่นับถึง แต่ไม่ผ่าน มูลค่าจริงที่คุณดูแลเกี่ยวกับ 28 00:01:18,800 --> 00:01:21,216 >> ตอนนี้สิ่งหนึ่งที่ ใช้เวลาเพียงเล็กน้อยรับใช้ 29 00:01:21,216 --> 00:01:25,350 และแม้กระทั่งรอยขีดข่วนได้รับการออกแบบตามที่มันเป็น สำหรับการเขียนโปรแกรมไม่ได้หรือคอมพิวเตอร์ที่ไม่ใช่ 30 00:01:25,350 --> 00:01:28,070 นักวิทยาศาสตร์และนักสำหรับเด็ก ส่วนใหญ่ถูกออกแบบให้มี 31 00:01:28,070 --> 00:01:29,570 คุณจะเริ่มนับทั่วไปที่หนึ่ง 32 00:01:29,570 --> 00:01:30,277 และที่ดี 33 00:01:30,277 --> 00:01:33,110 คุณอย่างสามารถเริ่มนับ ที่หนึ่งหากที่สะดวกสบายมากขึ้น 34 00:01:33,110 --> 00:01:37,210 และนับได้ถึง 10 และผ่านการ แต่ คุณจะรู้โดยเฉพาะอย่างยิ่งในสัปดาห์นี้ 35 00:01:37,210 --> 00:01:39,950 และนอกเหนือจากนั้นเพียงเพื่อให้ หลายสิ่งหลายอย่างในการเขียนโปรแกรม 36 00:01:39,950 --> 00:01:42,465 0 คิดว่าเป็นครั้งแรกที่ หลักที่คุณนับ 37 00:01:42,465 --> 00:01:45,590 ที่คุณจะพบว่ามันง่าย เพียงเพื่อให้ได้เป็นนิสัยของการเริ่มต้นนี้ 38 00:01:45,590 --> 00:01:49,490 จากศูนย์และการนับถึงค่า คุณดูแลเกี่ยวกับในขณะนี้จาก 39 00:01:49,490 --> 00:01:49,990 รับไป 40 00:01:49,990 --> 00:01:50,990 >> ดังนั้นที่ได้กำหนดว่า 41 00:01:50,990 --> 00:01:53,670 เราเปลี่ยนหรือลดน้อยลง เท่ากับเพียงน้อยกว่า 42 00:01:53,670 --> 00:01:56,050 ลองมาดูที่ ตัวอย่างที่สองที่นี่ 43 00:01:56,050 --> 00:01:59,585 >> ดังนั้นโปรแกรมนี้ในการเรียกร้องมากเกินไปของมัน แสดงความคิดเห็นขึ้นด้านบนว่ามันควรจะพิมพ์ 44 00:01:59,585 --> 00:02:02,260 สิบดาว แต่มันไม่ได้ 45 00:02:02,260 --> 00:02:05,540 ข้อผิดพลาดที่นี่คืออะไร? 46 00:02:05,540 --> 00:02:07,930 >> ดังนั้น what-- และขอโทษขอให้เป็นคนที่ชัดเจน 47 00:02:07,930 --> 00:02:08,610 10 ดาว 48 00:02:08,610 --> 00:02:11,644 ต่อหนึ่งบรรทัด แต่มันไม่ได้ 49 00:02:11,644 --> 00:02:14,810 ดังนั้นในความเป็นจริงให้ฉันไปข้างหน้าและรวบรวม คนนี้เพราะมันเป็นน้อย 50 00:02:14,810 --> 00:02:16,900 ที่ชัดเจนขึ้นอยู่กับคำอธิบายว่า 51 00:02:16,900 --> 00:02:18,720 ผมขอไปลงในไดเรกทอรีแหล่งที่มาของเรา 52 00:02:18,720 --> 00:02:25,110 ทำให้รถหนึ่งเฉือนจุดรถหนึ่ง 53 00:02:25,110 --> 00:02:28,680 ตกลงผมเห็น 11 ดาวซึ่ง ยังคงเป็นปัญหา 54 00:02:28,680 --> 00:02:30,090 แต่พวกเขายังทั้งหมดในหนึ่งบรรทัด 55 00:02:30,090 --> 00:02:31,500 เกิดอะไรขึ้นที่นี่? 56 00:02:31,500 --> 00:02:32,339 ใช่ 57 00:02:32,339 --> 00:02:33,255 ผู้ชม: [ไม่ได้ยิน] 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 ลำโพง 1: ใช่ 60 00:02:36,860 --> 00:02:40,210 ดังนั้นนี่คือความสวยงามที่คุณอาจ จำฉันเอ่ยสั้น ๆ ของ 61 00:02:40,210 --> 00:02:42,793 แม้ว่าทุกอย่างดู สวยและก็เยื้องอย่าง 62 00:02:42,793 --> 00:02:45,850 และชนิดของมันมีลักษณะเหมือนรอยขีดข่วน ในบรรทัดที่ 16 และ 17 มีความว่า 63 00:02:45,850 --> 00:02:47,600 แน่นอนว่าภายใต้เยื้องสำหรับวง 64 00:02:47,600 --> 00:02:48,400 นั่นเป็นสาระสำคัญ 65 00:02:48,400 --> 00:02:50,460 คอมพิวเตอร์ไม่ได้ รู้หรือดูพื้นที่สีขาว 66 00:02:50,460 --> 00:02:52,910 พื้นที่สีขาวเป็นเพียงสำหรับ มนุษย์เรา, stylistically 67 00:02:52,910 --> 00:02:57,010 คอมพิวเตอร์ไม่ทราบเมื่อคุณมี วงเล็บปีกกาซึ่งจะจริง 68 00:02:57,010 --> 00:02:58,280 แก้ไขปัญหานี้ 69 00:02:58,280 --> 00:03:02,350 >> ดังนั้นถ้าเราจริงไปและ ใส่อย่างชัดเจนในวงเล็บปีกกาเหล่านี้ 70 00:03:02,350 --> 00:03:05,220 ที่จะแก้ไขปัญหานี้ได้โดย การที่ชัดเจนในการคอมไพเลอร์ 71 00:03:05,220 --> 00:03:07,930 ว่าที่จริงผมต้องการที่จะดำเนินการ สองบรรทัดของรหัสอีกครั้ง 72 00:03:07,930 --> 00:03:09,220 และอีกครั้งและอีกครั้ง 73 00:03:09,220 --> 00:03:11,680 แต่สิ่งที่เป็นคำอธิบายพื้นฐาน? 74 00:03:11,680 --> 00:03:12,180 ใช่มั้ย? 75 00:03:12,180 --> 00:03:15,260 เราไม่จำเป็นต้องเคร่งครัด หยิกวงเล็บตลอดเวลา 76 00:03:15,260 --> 00:03:18,210 แม้ว่ามันอาจจะดีที่สุด ที่จะได้รับการปฏิบัติเป็นนิสัยที่อยู่แล้ว 77 00:03:18,210 --> 00:03:20,878 แม้ว่ามันจะเพิ่มสอง ตัวละครรหัสของคุณ ทำไม? 78 00:03:20,878 --> 00:03:22,380 >> ผู้ชม: [ไม่ได้ยิน] 79 00:03:22,380 --> 00:03:24,630 ลำโพง 1: ใช่เพื่อให้เป็น วิธีการแก้ปัญหาอื่นทั้งหมด 80 00:03:24,630 --> 00:03:25,130 ใช่มั้ย? 81 00:03:25,130 --> 00:03:28,250 โดยเฉพาะอย่างยิ่งถ้าได้อย่างรวดเร็วก่อนที่คุณทำไม่ได้ จริงๆขอบคุณสิ่งที่เกิดขึ้น 82 00:03:28,250 --> 00:03:31,070 ดีแน่นอนที่เราจะทำได้ เพียงแค่ทำสองสิ่งที่ได้ในครั้งเดียว 83 00:03:31,070 --> 00:03:32,710 และเพียงแค่หลีกเลี่ยงปัญหาทั้งหมด 84 00:03:32,710 --> 00:03:36,080 และที่ว่าดี แต่ตอนนี้ สำหรับวัตถุประสงค์ของว​​ันนี้สิ่งที่ 85 00:03:36,080 --> 00:03:38,200 เป็นคำอธิบายสำหรับข้อผิดพลาดหรือไม่? 86 00:03:38,200 --> 00:03:39,810 ทำไมดาวทุกคนในหนึ่งบรรทัด? 87 00:03:39,810 --> 00:03:40,806 ใช่? 88 00:03:40,806 --> 00:03:43,296 >> ผู้ชม: ดูเหมือนว่าถ้า คุณมีหนึ่งบรรทัดของรหัส 89 00:03:43,296 --> 00:03:46,649 คุณสามารถทำมันไม่มี 90 00:03:46,649 --> 00:03:47,440 ลำโพงที่ 1: ว่า 91 00:03:47,440 --> 00:03:48,750 นี่เป็นเพียงการประชุมของมนุษย์ 92 00:03:48,750 --> 00:03:50,750 คนตระหนักดีว่ามันเป็น เล็ก ๆ น้อย ๆ ที่น่ารำคาญหรือน่าเบื่อ 93 00:03:50,750 --> 00:03:53,470 ที่จะต้องใส่วงเล็บปีกกาทั้งหมด เวลาถ้าสิ่งที่คุณต้องการที่จะทำ 94 00:03:53,470 --> 00:03:55,090 มีการดำเนินการอย่างใดอย่างหนึ่งของสายรหัส 95 00:03:55,090 --> 00:03:57,660 ดังนั้นมนุษย์จึงตัดสินใจบางอย่าง เวลาที่ผ่านมาว่าที่ดี 96 00:03:57,660 --> 00:04:01,180 หากคุณต้องการที่จะนำทั้งหมดของวงของคุณ เพียงแค่ว่าในหนึ่งบรรทัดเช่นนี้ 97 00:04:01,180 --> 00:04:04,030 ที่ดีกับซิงเกิ้ล อัฒภาคที่สิ้นสุด 98 00:04:04,030 --> 00:04:07,210 แต่คุณสามารถทำเช่นหนึ่ง สายโดยไม่ต้องวงเล็บปีกกา 99 00:04:07,210 --> 00:04:09,900 >> ดังนั้นเมื่อ CS50 คู่มือสไตล์ ขณะที่จะชี้ให้คุณ, 100 00:04:09,900 --> 00:04:11,980 คุณจะเห็นว่าโดยทั่วไป มันเป็นนิสัยที่ดี 101 00:04:11,980 --> 00:04:14,920 ที่จะได้รับในนี้จนกว่าคุณจะ หลงผิดค่อนข้างสะดวกสบาย 102 00:04:14,920 --> 00:04:17,404 จากเหล่านี้ชนิดของการประชุม และทำสิ่งที่ตัวคุณเอง 103 00:04:17,404 --> 00:04:18,820 ตราบใดที่คุณอยู่ด้วยตัวเองที่สอดคล้องกัน 104 00:04:18,820 --> 00:04:21,540 และเราจะพูดคุยเกี่ยวกับ รูปแบบนิด ๆ หน่อย ๆ ต่อมาในวันนี้ 105 00:04:21,540 --> 00:04:23,200 >> ดังนั้นให้ฉันเปิดโปรแกรมอื่น ๆ 106 00:04:23,200 --> 00:04:24,930 แน่นอนเราควร แก้ไขปัญหาที่ 10 รวม 107 00:04:24,930 --> 00:04:32,470 ให้ฉันไปข้างหน้าและเขียนจริง โปรแกรมรวดเร็วที่ฉันจะโทร 108 00:04:32,470 --> 00:04:38,140 สมมติว่าวงดอทซีดังนั้นห่วงดอทซี และในจุด C ห่วงฉันจะมี 109 00:04:38,140 --> 00:04:41,970 รวมถึงมาตรฐาน I / O จุด H int main เป็นโมฆะ 110 00:04:41,970 --> 00:04:44,020 และตอนนี้ขอเพียงแค่ทำจริงห่วง 111 00:04:44,020 --> 00:04:46,020 ดังนั้น 4 int ผมได้รับเป็นศูนย์ 112 00:04:46,020 --> 00:04:48,660 ฉันจะน้อยกว่าการพูด, 50 113 00:04:48,660 --> 00:04:49,950 ผมบวกบวก 114 00:04:49,950 --> 00:04:53,350 และจากนั้นในที่นี่เรามา ไปข้างหน้าและไม่พิมพ์เอฟ 115 00:04:53,350 --> 00:04:56,400 แล้วฉันต้องการพิมพ์ฉัน และสายใหม่อัฒภาค 116 00:04:56,400 --> 00:05:00,015 >> และนี่ควรพิมพ์ทั้งหมด ตัวเลขจากศูนย์ถึง 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 หัวไม่กี่พยักหน้า 119 00:05:03,680 --> 00:05:04,270 ไม่กี่กัดกร่อน 120 00:05:04,270 --> 00:05:05,339 มีอะไรผิดพลาดอยู่แล้ว? 121 00:05:05,339 --> 00:05:06,630 ความผิดพลาดได้ง่ายที่ผมทำคืออะไร? 122 00:05:06,630 --> 00:05:07,170 ใช่ 123 00:05:07,170 --> 00:05:08,544 >> ผู้ชม: [ไม่ได้ยิน] 124 00:05:08,544 --> 00:05:09,210 ลำโพง 1: ใช่ 125 00:05:09,210 --> 00:05:11,520 ดังนั้นแม้ว่าจะมีลักษณะ เช่นนี้เป็นสิ่งที่ผมตั้งใจ 126 00:05:11,520 --> 00:05:13,920 จำได้ว่าผมยังเป็น เพียงอักขระ ASCII 127 00:05:13,920 --> 00:05:14,955 >> ดังนั้นถ้าฉันพูดว่าพิมพ์ "ที่หนึ่ง" 128 00:05:14,955 --> 00:05:16,670 มันอย่างแท้จริงไป ในการพิมพ์ครั้งที่หนึ่งดังนั้นถ้าฉัน 129 00:05:16,670 --> 00:05:20,030 ต้องการ plug-in ตัวยึด มูลค่าที่จริงผมต้องทำเช่นนี้ 130 00:05:20,030 --> 00:05:22,630 แล้วเสียบในตัว ค่าของฉันแบบไดนามิก 131 00:05:22,630 --> 00:05:25,200 มิฉะนั้นฉันแค่จะไป จะได้รับ 50 ของฉันบนหน้าจอ 132 00:05:25,200 --> 00:05:28,140 >> ดังนั้นให้ฉันไปข้างหน้าและ ทำให้วงนี้เรียกใช้มัน 133 00:05:28,140 --> 00:05:30,650 และแน่นอนเรามีทั้งหมด วิธีผ่าน 49 134 00:05:30,650 --> 00:05:34,140 และถ้าผมเลื่อนกลับในเวลาที่ฉันเห็น จำนวนศูนย์ที่จุดเริ่มต้น 135 00:05:34,140 --> 00:05:36,050 >> ดีสิ่งที่ถ้าฉันชนิดของสกรูขึ้น? 136 00:05:36,050 --> 00:05:37,800 ถ้าฉันทำเช่นนี้? 137 00:05:37,800 --> 00:05:40,120 เพียงเพราะฉันไม่ได้คิด 138 00:05:40,120 --> 00:05:40,970 มีอะไรโปรแกรมนี้ 139 00:05:40,970 --> 00:05:43,970 เมื่อกำลังรวบรวมและทำงาน จะทำมีเหตุผล? 140 00:05:43,970 --> 00:05:44,870 >> ผู้ชม: ไม่มีอะไร 141 00:05:44,870 --> 00:05:45,661 >> ลำโพง 1: ไม่มีอะไร 142 00:05:45,661 --> 00:05:47,156 ว่าเป็นเพราะเหตุใด 143 00:05:47,156 --> 00:05:49,124 >> ผู้ชม: ผมถูกออกแบบมาสำหรับศูนย์ 144 00:05:49,124 --> 00:05:51,899 ดังนั้นเงื่อนไขที่เป็นเท็จ 145 00:05:51,899 --> 00:05:52,940 ลำโพง 1: ใช่ว่า 146 00:05:52,940 --> 00:05:55,110 ทั้งหมดรหัสที่ถูกต้อง syntactically 147 00:05:55,110 --> 00:05:57,310 นี้จะรวบรวมนี้ รหัสจะทำงาน แต่ก็ไม่ได้ 148 00:05:57,310 --> 00:06:00,110 จะไปทำอะไรที่เป็นประโยชน์ เพราะผมเริ่มต้นผมให้เป็นศูนย์ 149 00:06:00,110 --> 00:06:02,240 จากนั้นเราจะตรวจสอบคือผมมากกว่า 50? 150 00:06:02,240 --> 00:06:03,810 เห็นได้ชัดว่าไม่มีก็ไม่ได้ 151 00:06:03,810 --> 00:06:05,760 ดังนั้นห่วงไม่เคยดำเนินการในทุก 152 00:06:05,760 --> 00:06:09,580 >> ถ้าเราทำอะไรบางอย่าง เสี่ยงน้อยมาก? 153 00:06:09,580 --> 00:06:12,890 ดังนั้นสิ่งที่ถ้าเราทำเช่น int ผมได้รับเป็นศูนย์ 154 00:06:12,890 --> 00:06:15,640 และตอนนี้ให้ฉันใช้ในขณะที่ วงซึ่งเป็นเงื่อนไขอีก 155 00:06:15,640 --> 00:06:21,810 และในขณะที่ผมพูดในขณะที่ฉันมีค่ามากกว่า หรือเท่ากับศูนย์และจากนั้นในที่นี่ผม 156 00:06:21,810 --> 00:06:26,070 ไปข้างหน้าและบันทึกแฟ้มให้ห่วง 157 00:06:26,070 --> 00:06:27,070 และฉันจะใช้มัน 158 00:06:27,070 --> 00:06:30,230 สิ่งที่ฉันจะได้เห็นนี้ เวลาที่มีห่วงขณะที่? 159 00:06:30,230 --> 00:06:30,852 ใช่ 160 00:06:30,852 --> 00:06:32,120 >> ผู้ชม: เป็นห่วงไม่มีที่สิ้นสุด? 161 00:06:32,120 --> 00:06:35,360 >> ลำโพงที่ 1: วง จำกัด ? 162 00:06:35,360 --> 00:06:36,662 ใช่และทำไม? 163 00:06:36,662 --> 00:06:38,120 ผู้ชม: เพ​​ราะมันเป็นศูนย์เสมอ 164 00:06:38,120 --> 00:06:38,786 ลำโพง 1: ใช่ 165 00:06:38,786 --> 00:06:40,100 ดังนั้นฉันจะเริ่มต้นเป็นศูนย์ 166 00:06:40,100 --> 00:06:44,470 แน่นอนผมอยู่เสมอมากขึ้น มากกว่าหรือเท่ากับ 0 เป็นผล 167 00:06:44,470 --> 00:06:46,460 ดังนั้นฉันแค่จะไป เห็นนี้เพียบ 168 00:06:46,460 --> 00:06:49,850 และตอนนี้ได้เกิดขึ้นครั้งเดียว หรือสองครั้งต่อหัวของหลักสูตร 169 00:06:49,850 --> 00:06:52,417 สิ่งที่เกิดขึ้นเมื่อคุณ มีวง จำกัด ? 170 00:06:52,417 --> 00:06:53,314 >> ผู้ชม: การควบคุมซี 171 00:06:53,314 --> 00:06:53,980 ลำโพง 1: ใช่ 172 00:06:53,980 --> 00:06:56,250 ดังนั้นการควบคุม C ในที่สุดก็จะตอบสนอง 173 00:06:56,250 --> 00:06:59,520 แต่น่าเสียดายที่เราได้พิมพ์ออกมา และล้านล้านเลขศูนย์อยู่แล้ว 174 00:06:59,520 --> 00:07:01,520 และเพื่อให้คอมพิวเตอร์มี ชนิดของการได้รับข้างหน้าผม 175 00:07:01,520 --> 00:07:03,394 ดังนั้นมันเป็นไปที่จะไม่สนใจ ฉันนิด ๆ หน่อย ๆ 176 00:07:03,394 --> 00:07:06,560 แต่ถ้าคุณเพียงแค่กดควบคุม C ไม่กี่ ครั้งบน Mac ของคุณหรือแป้นพิมพ์คอมพิวเตอร์ 177 00:07:06,560 --> 00:07:08,790 ในที่สุดมันก็ควรแน่นอนยุติ 178 00:07:08,790 --> 00:07:11,770 และหากไม่ได้เราจะแสดงให้คุณเห็นบางอย่าง เทคนิคอีกไม่นานที่คุณ 179 00:07:11,770 --> 00:07:14,850 จริงสามารถบังคับให้ฆ่าโปรแกรม เหมือนใน Windows และ Mac OS, 180 00:07:14,850 --> 00:07:15,562 ถ้าจำเป็นต้อง. 181 00:07:15,562 --> 00:07:16,770 แต่ขอลองอย่างอื่น 182 00:07:16,770 --> 00:07:19,895 ลองจริงเพิ่มขึ้นเป็นครั้งที่หนึ่ง นี้ยังคงไปได้ไม่มีที่สิ้นสุด? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 ให้ฉันทำงานนี้ 185 00:07:25,140 --> 00:07:27,090 และตอนนี้คุณสามารถชนิดของ ดูสิ่งที่เกิดขึ้น 186 00:07:27,090 --> 00:07:30,140 นี้ก็เป็นวง จำกัด 187 00:07:30,140 --> 00:07:33,080 แต่นี้เป็นบิตของคำถามเคล็ดลับที่ 188 00:07:33,080 --> 00:07:35,460 นี้เป็นไปที่จะพิมพ์หมายเลขถาวรหรือไม่ 189 00:07:35,460 --> 00:07:36,647 >> ผู้ชม: เลขที่ 190 00:07:36,647 --> 00:07:37,230 ลำโพง 1: เลขที่ 191 00:07:37,230 --> 00:07:37,620 ทำไม? 192 00:07:37,620 --> 00:07:38,820 ผมได้ยินบางกัดกร่อนมากกว่าที่นี่ 193 00:07:38,820 --> 00:07:41,859 Someone-- ใช่ 194 00:07:41,859 --> 00:07:44,275 ผู้ชม: คุณไม่ได้มีเพียงพอ บิตจริงๆให้ไป 195 00:07:44,275 --> 00:07:44,730 ลำโพงที่ 1: สิทธิทั้งหมด 196 00:07:44,730 --> 00:07:46,000 ดังนั้นผมจึงไม่ได้มีมากพอ บิตให้ไป 197 00:07:46,000 --> 00:07:47,124 ดังนั้นสิ่งที่จะเกิดขึ้น? 198 00:07:47,124 --> 00:07:49,320 มันเป็นเพียงแค่จะหยุด? 199 00:07:49,320 --> 00:07:52,542 >> ผู้ชม: ในบางจุด มันจะปิด the-- 200 00:07:52,542 --> 00:07:54,500 ลำโพง 1: มันจะปิด วงลง แต่ทำไม? 201 00:07:54,500 --> 00:07:57,950 สิ่งที่จะเกิดขึ้นที่ ท้ายสุดของขอบเขตของตนหรือไม่ 202 00:07:57,950 --> 00:07:58,479 ใช่? 203 00:07:58,479 --> 00:08:00,520 ผู้ชม: มันจะวงจร กลับไปที่ตัวเลขติดลบ 204 00:08:00,520 --> 00:08:02,900 ลำโพงที่ 1: จำนวนลบหรือ ถ้าเราเป็นเพียงแค่การรักษาในเชิงบวก 205 00:08:02,900 --> 00:08:03,570 ศูนย์อย่างน้อย 206 00:08:03,570 --> 00:08:04,550 ดังนั้นใช่อย่างแน่นอน 207 00:08:04,550 --> 00:08:08,059 จำได้ว่าที่เราเห็นครั้งสุดท้ายที่ว่าถ้าคุณ เพิ่มบิตของคุณหนึ่งครั้งมากเกินไป 208 00:08:08,059 --> 00:08:10,225 และคุณก่อนมีล้น ความจุของ int ของคุณ 209 00:08:10,225 --> 00:08:13,058 หรือสิ่งที่ชนิดของข้อมูลที่เป็นคุณ จะห่อรอบอาจจะ 210 00:08:13,058 --> 00:08:14,020 ตัวเลขสองเชิงลบ 211 00:08:14,020 --> 00:08:16,644 หรือถ้าคุณได้ระบุว่าคุณ ช่วงเท่านั้นที่ควรจะเป็นบวก 212 00:08:16,644 --> 00:08:18,560 ซึ่งคุณสามารถทำ แต่ เราไม่ได้เห็นได้ว่ายัง 213 00:08:18,560 --> 00:08:21,420 คุณอาจจะจบลงอย่างน้อยกลับไปที่ศูนย์ 214 00:08:21,420 --> 00:08:22,410 แม้ว่าในความเป็นจริงใช่ 215 00:08:22,410 --> 00:08:24,320 ในกรณีนี้ในแง่ลบ ตัวเลขซึ่งในกรณีนี้ 216 00:08:24,320 --> 00:08:26,870 วงเป็นไปที่จะยุติ เพราะผมไม่ได้ในความเป็นจริง 217 00:08:26,870 --> 00:08:29,220 มากกว่าหรือเท่ากับ ศูนย์ถ้าเป็นเชิงลบ 218 00:08:29,220 --> 00:08:31,780 >> ดังนั้นน่าเสียดายที่ว่า ระยะเวลาที่เราจะต้องรอ? 219 00:08:31,780 --> 00:08:35,490 ตอนนี้เรากำลังขึ้นไป สิ่งที่ 2000000-ish? 220 00:08:35,490 --> 00:08:37,705 เราเป็นเหมือน 2 พันล้าน, เราจะต้องรอ 221 00:08:37,705 --> 00:08:39,330 จนกว่าเราจะสามารถมองเห็นอาการนี​​้ 222 00:08:39,330 --> 00:08:46,200 แต่เราสามารถดูได้เล็ก ๆ น้อย ๆ ได้เร็วขึ้น maybe-- ลองดูว่าเราสามารถหยุดยั้ง 223 00:08:46,200 --> 00:08:46,700 เข้ามา. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 แม้เมนูจะปรากฏช้า 226 00:08:51,331 --> 00:08:51,830 ทั้งหมดขวา 227 00:08:51,830 --> 00:08:54,270 ดังนั้นเราจะกลับมาก่อนที่จะยาว 228 00:08:54,270 --> 00:08:56,320 มันเป็นสิ่งที่ดี time-- แช่งมันลูกสุนัข 229 00:08:56,320 --> 00:08:58,280 >> มันเป็นเวลาที่ดีสำหรับการประกาศบางส่วน 230 00:08:58,280 --> 00:09:01,225 ดังนั้นถ้าคุณอาจจะชอบ ที่จะมีส่วนร่วมใน YHack, 231 00:09:01,225 --> 00:09:03,600 ซึ่งเป็นเหตุการณ์ที่เป็น การสนับสนุนจากเพื่อนของเราที่มหาวิทยาลัยเยล 232 00:09:03,600 --> 00:09:05,990 และแน่นอนบางส่วนของหลักสูตรของ TFS ที่มหาวิทยาลัยเยลมีส่วนร่วมกับเรื่องนี้ 233 00:09:05,990 --> 00:09:08,610 YHack เป็นสากล สับธนบุรีเจ้าภาพโดยจัดขึ้นและ 234 00:09:08,610 --> 00:09:12,395 ที่มหาวิทยาลัยเยลพากัน 1500 เช่นแฮกเกอร์ใจกว้างและโฆษณาทั้งหมด 235 00:09:12,395 --> 00:09:13,120 ทั่วโลก 236 00:09:13,120 --> 00:09:14,610 ถ้าเป็นที่น่าสนใจ ลองดูที่นี่ 237 00:09:14,610 --> 00:09:17,401 ถ้าเป็นมากเกินไปในเวลาสั้น ๆ หน้าจอจะดูที่สไลด์ของว​​ันนี้ 238 00:09:17,401 --> 00:09:19,622 สำหรับ URL สำหรับ yhack.org 239 00:09:19,622 --> 00:09:21,080 ดังนั้นยังไม่กี่ประกาศอย่างรวดเร็ว 240 00:09:21,080 --> 00:09:24,410 ดังนั้นส่วนที่เป็นทางการจะเริ่มต้น ในสัปดาห์หน้าทั้งที่นี่และนิวเฮเวน 241 00:09:24,410 --> 00:09:27,660 เก็บไว้ในใจคุณจะได้รับ อีเมลต่อมาช่วงสุดสัปดาห์นี้มีแนวโน้มมากที่สุด 242 00:09:27,660 --> 00:09:29,390 มันต้องใช้เวลานาน สำหรับในส่วน CS50, 243 00:09:29,390 --> 00:09:32,080 รับทุกคนที่อยู่ใน ระดับและทุกคนย้ายไปรอบ ๆ 244 00:09:32,080 --> 00:09:34,871 และการเรียนการสอนทุกคน ' นอกจากนี้ยังมีตารางเวลาที่ยังคงแข็งตัว, 245 00:09:34,871 --> 00:09:38,110 แต่ติดตามความคืบหน้าสำหรับอีเมลและหากจำเป็นที่จะต้อง จะคุณสามารถอีกครั้งหลังจากที่มีส่วน 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net 247 00:09:39,580 --> 00:09:43,280 ดังนั้นแม้ว่าคุณจะเป็นผู้เข้าร่วมประชุมอย่างต่อเนื่อง ที่ส่วนทราบว่าเกือบทั้งหมด 248 00:09:43,280 --> 00:09:46,786 ของทรัพยากรที่เราใช้ในส่วน เป็นที่เปิดเผยต่อสาธารณชนที่ CS50 249 00:09:46,786 --> 00:09:48,460 การศึกษาที่ URL นี้ที่นี่ 250 00:09:48,460 --> 00:09:51,630 ดังนั้นถ้าคุณเคยต้องการที่จะตรวจสอบอีกครั้ง วัสดุจากส่วนหรืออ่านไปข้างหน้า 251 00:09:51,630 --> 00:09:54,170 หรือคุณไม่สามารถทำให้มันเป็นสัปดาห์ที่บาง ตระหนักดีว่าสไลด์ตัวอย่าง 252 00:09:54,170 --> 00:09:58,210 และปัญหาที่เกิดขึ้นและคำจำกัดความ และอื่น ๆ ทั้งหมดที่มีเช่นกัน 253 00:09:58,210 --> 00:10:00,645 >> เวลาทำงานกลับมาในวันนี้ และวันพรุ่งนี้และวันพุธ 254 00:10:00,645 --> 00:10:03,020 และวันพฤหัสบดีการตรวจสอบของหลักสูตร เว็บไซต์สำหรับตารางเวลา 255 00:10:03,020 --> 00:10:05,690 >> และยังเปิดตัวในขณะนี้ วันนี้เป็นวัน CS50 พูดคุย 256 00:10:05,690 --> 00:10:09,230 ดังนั้นถ้าและเมื่อคุณมีคำถามสำหรับ แต่ละอื่น ๆ หรือสำหรับพนักงานที่แน่นอนของ 257 00:10:09,230 --> 00:10:12,099 และมักจะทำงาน ชุดเกี่ยวกับปัญหาบางอย่าง 258 00:10:12,099 --> 00:10:15,015 รู้ว่าคุณไม่จำเป็นต้อง ต้องหันไปของมนุษย์ต่อไปที่คุณ 259 00:10:15,015 --> 00:10:17,810 ถ้าไม่มีใครมีคุณสามารถ ถึงออกมาให้เราและเพื่อนร่วมชั้น 260 00:10:17,810 --> 00:10:19,890 ออนไลน์ผ่าน CS50 พูดคุย 261 00:10:19,890 --> 00:10:22,600 ดังนั้นนี้เป็นความคิดเห็น กระดานสำหรับการเรียนการสอน 262 00:10:22,600 --> 00:10:24,550 และตระหนักดีว่านี้ อาจจะเป็นสิ่งที่ดีที่สุด 263 00:10:24,550 --> 00:10:28,480 วางที่จะเริ่มต้นเมื่อคุณมี คำถามเมื่อนอกเวลาทำการ 264 00:10:28,480 --> 00:10:29,470 โดยเฉพาะอย่างยิ่ง 265 00:10:29,470 --> 00:10:31,070 >> อาหารกลางวันจะเริ่มขึ้นในสัปดาห์นี้ด้วย 266 00:10:31,070 --> 00:10:33,170 ที่ไฟและน้ำแข็ง [ไม่ได้ยิน] ในนิวเฮเวน 267 00:10:33,170 --> 00:10:35,379 ลองดูที่หลักสูตรที่ เว็บไซต์เพื่อที่จะตอบรับคำเชิญ 268 00:10:35,379 --> 00:10:36,753 มาก่อนแรกที่ให้บริการสำหรับ 269 00:10:36,753 --> 00:10:39,380 ถ้าคุณไม่ได้รับในสัปดาห์นี้ เราจะทำสิ่งเหล่านี้ส่วนใหญ่ทุกวันศุกร์ 270 00:10:39,380 --> 00:10:40,400 ในระหว่างระยะเวลา 271 00:10:40,400 --> 00:10:41,830 >> ตกลงและตอนนี้คำว่าการจัดลำดับเกี่ยวกับ 272 00:10:41,830 --> 00:10:44,690 โดยเฉพาะอย่างยิ่งในขณะที่เราเข้าสู่ปัญหา ตั้งหนึ่งซึ่งจะออกในสัปดาห์นี้ 273 00:10:44,690 --> 00:10:46,670 และปัญหาที่เกิดขึ้นตั้งสองและหลังจากนั้น 274 00:10:46,670 --> 00:10:51,680 เราจะไปเกี่ยวกับการประเมินชุด P วิธี และการประเมินผลที่มีคุณภาพนั้น? 275 00:10:51,680 --> 00:10:55,560 ดังนั้นจึงเป็นสี่แกนที่เราใช้ในการ CS50 และพวกเขากำลังสี่เหล่านี้ที่นี่ 276 00:10:55,560 --> 00:10:59,200 >> ขอบเขตที่จับอยู่กับตัวเลข พื้นฐานเพียงเท่าใดชุดพี 277 00:10:59,200 --> 00:10:59,860 คุณจะแก้ไขปัญหา 278 00:10:59,860 --> 00:11:02,890 มันสอดคล้องกับประมาณ ความพยายามและมันเป็นวิธีการของเราในการจับภาพ 279 00:11:02,890 --> 00:11:05,190 คุณไม่ลองครึ่ง P การตั้งค่าทั้งหมดของชุดพี 280 00:11:05,190 --> 00:11:08,860 นี้เป็นหนึ่งง่ายต่อการได้รับที่สมบูรณ์แบบ คะแนนในถ้าคุณทำจริง 281 00:11:08,860 --> 00:11:11,020 พยายามทุกแง่มุมของการตั้งค่า P ​​ทุก 282 00:11:11,020 --> 00:11:12,010 ดังนั้นเก็บที่ในใจ 283 00:11:12,010 --> 00:11:13,420 >> ความถูกต้องเป็นสิ่งที่ 284 00:11:13,420 --> 00:11:17,760 ทำงานรหัสของคุณเป็นสเปค และเป็นวิธีแก้ปัญหาตัวอย่างพนักงาน ' 285 00:11:17,760 --> 00:11:19,730 ชี้ให้เห็นว่ารหัสของคุณ ควรในความเป็นจริงการทำงาน 286 00:11:19,730 --> 00:11:23,260 ตรวจสอบ 50 ถ​​้าคุณยังไม่เคยเจอมัน ยังอยู่ใน P ตั้งหนึ่งเปค 287 00:11:23,260 --> 00:11:25,060 และจะโดยทั่วไป ให้คุณใช่ / ไม่ใช่คำตอบ 288 00:11:25,060 --> 00:11:26,518 เป็นไปได้ว่ารหัสของคุณถูกต้อง 289 00:11:26,518 --> 00:11:30,680 อย่างน้อยที่สุดเท่าที่เราจะ ในการประเมินนั้นอยู่บนพื้นฐานของการทดสอบ 290 00:11:30,680 --> 00:11:32,430 ที่เราเรียกใช้โปรแกรมที่อยู่ภายใน 291 00:11:32,430 --> 00:11:33,850 >> การออกแบบเป็นส่วนตัวมากขึ้น 292 00:11:33,850 --> 00:11:35,994 นี่คือวิธีที่เขียนได้ดีเป็นรหัสของคุณ 293 00:11:35,994 --> 00:11:38,410 และนี่คือสิ่งที่ คุณจะได้รับดีกว่าที่เมื่อเวลาผ่านไป 294 00:11:38,410 --> 00:11:41,201 และมันเป็นสิ่งที่เราจะ ให้ข้อเสนอแนะในเชิงคุณภาพมากขึ้น 295 00:11:41,201 --> 00:11:43,350 โดยการออกแบบและฉันอาจ หมายความว่าอีกไม่นานคุณ 296 00:11:43,350 --> 00:11:47,650 อาจถูกล่อลวงในบาง P การตั้งค่าที่จะทำบางสิ่งบางอย่าง loopingly, 297 00:11:47,650 --> 00:11:51,590 แต่อาจจะมีสามหรือสี่หรือ ห้าห่วงซ้อนกันก่อนหรือในขณะที่ซ้อนกัน 298 00:11:51,590 --> 00:11:52,090 ลูป 299 00:11:52,090 --> 00:11:54,130 ซึ่งโดยทั่วไปควร เริ่มต้นที่จะทำให้คุณประจบประแจง 300 00:11:54,130 --> 00:11:56,070 และโดยทั่วไปจะเป็น การพิจารณาการออกแบบที่ไม่ดี 301 00:11:56,070 --> 00:11:59,490 และคุณจะเริ่มเห็นในชั้นเรียนและ จากระดับวิธีการที่ดีในการทำสิ่ง 302 00:11:59,490 --> 00:12:02,920 วิธีที่ดีในการทำสิ่งที่ ทั้งหมดอาจจะถูกต้อง แต่ไม่ได้ 303 00:12:02,920 --> 00:12:04,304 จำเป็นต้องออกแบบมาอย่างดี 304 00:12:04,304 --> 00:12:05,220 เช่นเดียวกับการเขียนเรียงความ 305 00:12:05,220 --> 00:12:08,100 คุณอาจจะสามารถที่จะนำคำพูดบน หน้าหลักไวยากรณ์ที่ถูกต้อง 306 00:12:08,100 --> 00:12:10,016 แต่การเขียนเรียงความหรือ วิทยานิพนธ์พวกเขาอยู่ในเป็นเพียง 307 00:12:10,016 --> 00:12:11,810 สมบูรณ์ไม่ต่อเนื่องกันหรือ unpersuasive 308 00:12:11,810 --> 00:12:15,930 และอื่น ๆ ที่อาจจะมีในแบบอะนาล็อกที่ เขียนโลกของการออกแบบดีหรือดี 309 00:12:15,930 --> 00:12:18,490 >> และรูปแบบก็เป็นอัตนัยอย่างเป็นธรรม 310 00:12:18,490 --> 00:12:20,060 แต่อย่างน้อยเราคาดว่าสอดคล้อง 311 00:12:20,060 --> 00:12:21,480 นี่คือวิธีที่สวยเป็นรหัสของคุณ 312 00:12:21,480 --> 00:12:22,840 สิ่งที่มีการเยื้องอย่าง? 313 00:12:22,840 --> 00:12:26,600 เป็นตัวแปรชื่อของคุณได้ดี / มีทั้งหมด วงเล็บและวงเล็บปีกกาของคุณ 314 00:12:26,600 --> 00:12:27,920 สอดคล้องกับที่พวกเขาควรจะเป็นอย่างไร 315 00:12:27,920 --> 00:12:31,490 เราจะมีคู่มือสไตล์ CS50 เป็น ชุดปัญหาจะชี้ให้คุณที่ 316 00:12:31,490 --> 00:12:33,730 ผู้ที่มีความสะดวกสบายมากขึ้น ยินดีที่จะหลงทางจากที่ 317 00:12:33,730 --> 00:12:35,771 ตราบใดที่คุณได้ด้วยตนเองที่สอดคล้องกัน 318 00:12:35,771 --> 00:12:38,020 และนี่ก็เป็นบทเรียน เราจะเสริมในส่วน 319 00:12:38,020 --> 00:12:40,990 ดังนั้นถ้าทั้งหมดนี้เป็นเพียงเล็กน้อย ได้อย่างรวดเร็วและตระหนักถึงการตั้งค่า P ​​และส่วน 320 00:12:40,990 --> 00:12:42,900 จะเข้าสู่ความลึกมากขึ้นก่อนที่จะยาว 321 00:12:42,900 --> 00:12:45,490 >> แต่โดยทั่วไปเรามี ไม่กี่ถังมากสำหรับ CS50 322 00:12:45,490 --> 00:12:48,170 คะแนนโดยทั่วไปจะมีโย ของ 1-3 หรือ 1-5 323 00:12:48,170 --> 00:12:50,836 เรา literally-- และผมก็ไม่สามารถพูดได้ นี้พอในสัปดาห์แรก 324 00:12:50,836 --> 00:12:51,582 สามเป็นสิ่งที่ดี 325 00:12:51,582 --> 00:12:54,290 ดังนั้นแม้ว่าใช่สาม ห้าปกติท​​างคณิตศาสตร์ 326 00:12:54,290 --> 00:12:57,240 อาจจะเป็นร้อยละ 60 หรือเหมือน D ลบ 327 00:12:57,240 --> 00:12:58,840 สามคือในความเป็นจริงที่ดี 328 00:12:58,840 --> 00:13:01,050 และในความเป็นจริงที่เราคาดหวัง นักเรียนส่วนใหญ่ในชั้นเรียน 329 00:13:01,050 --> 00:13:04,280 ที่จะเริ่มต้นระยะที่อยู่รอบ ๆ เจ้าตัวและสามและสี่ 330 00:13:04,280 --> 00:13:05,510 อาจจะไม่ได้ห้าจำนวนมาก 331 00:13:05,510 --> 00:13:06,661 ไม่ได้หลายคนเกินไป 332 00:13:06,661 --> 00:13:08,910 แต่โดยทั่วไปจะเริ่มต้นใน จุดหวานว่าในโค้ง 333 00:13:08,910 --> 00:13:11,694 เพื่อให้เวลาผ่านไปเรื่อย, มีจริงห้องสำหรับ 334 00:13:11,694 --> 00:13:13,360 และโอกาสสำหรับความก้าวหน้าบน 335 00:13:13,360 --> 00:13:15,810 ดังนั้นโปรดอย่าถือเอาสามกับ 60% 336 00:13:15,810 --> 00:13:17,410 มันเป็นนามธรรมมากขึ้นกว่าที่ 337 00:13:17,410 --> 00:13:20,160 สูตรที่เราคำนวณ เกรดจะมีน้ำหนักดังต่อไปนี้ 338 00:13:20,160 --> 00:13:21,610 ความถูกต้องที่มีค่ามากที่สุด 339 00:13:21,610 --> 00:13:23,010 การออกแบบที่มีค่าน้อย 340 00:13:23,010 --> 00:13:24,490 สไตล์ที่มีค่าน้อย 341 00:13:24,490 --> 00:13:26,950 และนี่โดยทั่วไป จับระยะเวลาที่ 342 00:13:26,950 --> 00:13:29,800 ที่จะเข้าสู่การได้รับในแต่ละ ของแกนเหล่านี้เพียงขวา 343 00:13:29,800 --> 00:13:31,810 สไตล์เป็นเรื่องง่ายสุด ควรจะรวดเร็วสุด 344 00:13:31,810 --> 00:13:33,657 แต่มันก็เป็นนิสัยง่าย ขี้เกียจที่จะได้รับเกี่ยวกับ 345 00:13:33,657 --> 00:13:35,490 ความถูกต้องอาจใช้เวลา คุณใช้เวลาส่วนใหญ่ 346 00:13:35,490 --> 00:13:38,990 ไล่ลงมาอาจผิดพลาดบางอย่าง ใช้เวลาที่ชั่วโมงพิเศษหรือมากกว่า 347 00:13:38,990 --> 00:13:41,737 และเพื่อให้คะแนน ในที่สุดที่จับ 348 00:13:41,737 --> 00:13:43,070 ดังนั้นตอนนี้เป็นคำที่รุนแรงมากขึ้น 349 00:13:43,070 --> 00:13:45,240 ตั้งแต่ CS50 มี ความแตกต่างที่ดีขึ้น 350 00:13:45,240 --> 00:13:47,440 หรือแย่ลงของการเป็น บางทีอาจจะดีกว่าที่คุ้นเคย 351 00:13:47,440 --> 00:13:50,065 กับปัญหาของการศึกษา ความซื่อสัตย์สุจริตมากที่สุดกว่าที่อื่น ๆ แน่นอน 352 00:13:50,065 --> 00:13:53,720 และแน่นอนมันเป็นความรู้ของฉันว่า เราส่งนักเรียนโชคไม่ดี 353 00:13:53,720 --> 00:13:56,690 เพื่อวัตถุประสงค์ทางวินัย ทุกปีเป็นผล ดังนั้น 354 00:13:56,690 --> 00:13:59,040 ในความสนใจของเต็มรูปแบบ การเปิดเผยข้อมูลให้มาพูดคุยสั้น ๆ 355 00:13:59,040 --> 00:14:02,820 เกี่ยวกับสิ่งที่เกิดขึ้นใน CS50 และสิ่งที่คุณ สามารถทำได้และสิ่งที่คุณสามารถมีสติในการ 356 00:14:02,820 --> 00:14:05,530 >> ดังนั้นที่นี่มาตั้งแต่ปี 2007 เมื่อ ฉันได้รับการถ่ายทอดการเรียนการสอน 357 00:14:05,530 --> 00:14:07,870 เป็นจำนวนคดีที่คณะกรรมการโฆษณา 358 00:14:07,870 --> 00:14:10,690 โฆษณาคณะกรรมการวินัยของฮาร์วาร์ ร่างกายหรือตอนนี้เกียรติยศที่ปรึกษา 359 00:14:10,690 --> 00:14:13,790 กรณีที่จะเรียกเมื่อ นักเรียนทำสิ่งที่แน่นอนของ 360 00:14:13,790 --> 00:14:15,470 หลักสูตรที่ไม่สมควรพิจารณา 361 00:14:15,470 --> 00:14:17,220 ไม่มีรูปแบบที่เป็นจริง ที่นี่ผมจะบอกว่า 362 00:14:17,220 --> 00:14:19,530 มันมีความผันผวนมากกว่า ปี แต่โดยทั่วไป 363 00:14:19,530 --> 00:14:22,262 นี้คือจำนวนของ กรณีที่มีการเรียก 364 00:14:22,262 --> 00:14:23,970 จำนวนของนักเรียน ที่มีส่วนร่วม? 365 00:14:23,970 --> 00:14:25,290 มันแตกต่างกันมากเกินไป 366 00:14:25,290 --> 00:14:27,930 โดยปกติปีที่ผ่านมา ตัวอย่างเช่น 29 นักศึกษาที่ Harvard 367 00:14:27,930 --> 00:14:29,740 ได้รับการโฆษณาขึ้นเพื่อที่จะพูด 368 00:14:29,740 --> 00:14:32,670 29 ของพวกเขานักเรียนปัจจุบัน พวกเขาทั้งสองนักเรียนก่อน 369 00:14:32,670 --> 00:14:35,610 ที่ได้ทำงานร่วมกัน ในบางวิธีที่ไม่ดี 370 00:14:35,610 --> 00:14:38,400 และแล้วในแง่ของ เปอร์เซ็นต์ก็มักจะประมาณ 3% 371 00:14:38,400 --> 00:14:41,360 ของชั้นที่โชคไม่ดี ทำให้เหล่านี้ชนิดของการตัดสินใจ 372 00:14:41,360 --> 00:14:44,470 >> ดังนั้นปีที่ผ่านมามันเป็น 3.5% ของร่างกายของนักเรียน CS50 373 00:14:44,470 --> 00:14:46,820 นั่นก็คือการโฆษณาขึ้นเพื่อที่จะพูด 374 00:14:46,820 --> 00:14:48,490 >> ดังนั้นสิ่งที่ไม่ทั้งหมดนี้หมายความว่าอย่างไร 375 00:14:48,490 --> 00:14:49,660 และสิ่งที่เราทำจริงทำอย่างไร 376 00:14:49,660 --> 00:14:52,930 >> ดังนั้นสำหรับการเปิดเผยข้อมูลเต็มรูปแบบเรา อย่างเช่นนักวิทยาศาสตร์คอมพิวเตอร์ 377 00:14:52,930 --> 00:14:57,620 มีเครื่องมือซอฟต์แวร์ที่จำหน่ายของเรา และมันเป็นเรื่องง่ายมากสำหรับเราในความเป็นธรรม 378 00:14:57,620 --> 00:15:00,980 ที่เพื่อนร่วมชั้นอื่น ๆ ที่ไม่ได้เป็น ข้ามเส้นเหล่านี้จะข้ามเปรียบเทียบ 379 00:15:00,980 --> 00:15:04,570 ส่งทุกปีนี้กับทุกคน ส่งสำหรับแปดปีที่ผ่านมา 380 00:15:04,570 --> 00:15:05,445 ซอฟแวร์ไม่นี้ 381 00:15:05,445 --> 00:15:07,440 และในที่สุดก็ ตาของมนุษย์ที่จะตัดสินใจ 382 00:15:07,440 --> 00:15:11,410 หรือไม่ที่จะดูบาง เรื่องพิจารณาพิพากษาต่อไป 383 00:15:11,410 --> 00:15:12,737 แต่จะช่วยให้ซอฟแวร์อย่างแน่นอน 384 00:15:12,737 --> 00:15:15,820 และนี้ตรงไปตรงมาคือเหตุผลที่ฉันคิดว่า เรามีจำนวนมากดังกล่าวใน CS50 385 00:15:15,820 --> 00:15:18,540 มันไม่ได้เป็นเพราะ CS50 นักเรียนหรือนักศึกษาลูกค้ามากขึ้น 386 00:15:18,540 --> 00:15:20,840 โดยทั่วไปจะซื่อสัตย์ใด ๆ น้อย กว่านักเรียนอื่น ๆ 387 00:15:20,840 --> 00:15:22,340 มันเป็นเพียงแค่เรามี เครื่องมือและเทคนิค 388 00:15:22,340 --> 00:15:24,095 ที่จะใช้ผ่านครั้งแรกนี้ 389 00:15:24,095 --> 00:15:25,960 >> แต่ที่เราทำเก็บตา ในทุกสิ่งเหล่านี้ 390 00:15:25,960 --> 00:15:30,340 ได้เป็นอย่างดีอีกครั้งในความสนใจของ ตระหนักถึงการทำงานที่ถูกใส่ 391 00:15:30,340 --> 00:15:32,397 โดยส่วนใหญ่สุดของชั้นเรียน 392 00:15:32,397 --> 00:15:34,230 และนโยบายการเรียนการสอนของ ความซื่อสัตย์ทางวิชาการ 393 00:15:34,230 --> 00:15:37,021 แม้ว่าจะเป็นพวงของวรรค ยาวกับพวงของกระสุน 394 00:15:37,021 --> 00:15:40,490 ที่มีความหวังว่าจะสามารถอ่านได้มากก็ จริงๆไม่ต้มลงไปจะเหมาะสม 395 00:15:40,490 --> 00:15:44,000 และการปกครองที่ดีที่สุดของหัวแม่มือที่ เรานำเสนอภายในหลักสูตร 396 00:15:44,000 --> 00:15:46,020 นี้เป็นสาระสำคัญ ของงานที่ทุกท่าน 397 00:15:46,020 --> 00:15:47,850 ส่งไปยังหลักสูตรนี้จะต้องเป็นของคุณเอง 398 00:15:47,850 --> 00:15:51,510 และแน่นอนในเกือบทุกคน กรณีที่เรียกว่าสำหรับการดำเนินการทางวินัย 399 00:15:51,510 --> 00:15:55,640 มันเป็นเพราะนักเรียนบางช่วงปลายหนึ่ง คืนมักจะหันรหัสของเขาหรือเธอ 400 00:15:55,640 --> 00:15:58,130 มากกว่าที่จะตรงไปตรงมาเพื่อนร่วมชั้น, จากนั้นก็นำมาใช้มัน 401 00:15:58,130 --> 00:16:00,840 ครบถ้วนหรือ อย่างมีนัยสำคัญดังกล่าว 402 00:16:00,840 --> 00:16:02,680 >> แต่จริงๆนี้ OK 403 00:16:02,680 --> 00:16:04,684 และแน่นอนที่สำนักงาน ชั่วโมงบิลกระดาษ 404 00:16:04,684 --> 00:16:07,850 คุณได้รับการส่งมอบถ้าคุณมาจากสำนักงาน ชั่วโมงสัปดาห์ที่ผ่านมาสนับสนุนให้มากที่สุดเท่าที่ 405 00:16:07,850 --> 00:16:09,710 คุณอย่างแน่นอน ยินดีและเป็นกำลังใจให้ 406 00:16:09,710 --> 00:16:12,340 เพื่อหารือเกี่ยวกับชุดปัญหากับเพื่อนร่วมชั้น 407 00:16:12,340 --> 00:16:14,461 เพื่อช่วยให้แต่ละอื่น ๆ เมื่อสะดุด 408 00:16:14,461 --> 00:16:17,710 แต่โดยทั่วไปกฎของหัวแม่มือควร เป็นแบบนี้ "เมื่อคุณจะขอความช่วยเหลือ 409 00:16:17,710 --> 00:16:20,412 คุณอาจแสดงรหัสของคุณกับคนอื่น ๆ แต่คุณอาจไม่ดูพวกเขา. " 410 00:16:20,412 --> 00:16:22,620 ดังนั้นในคำอื่น ๆ ถ้าฉัน ดิ้นรนกับชุด P บาง 411 00:16:22,620 --> 00:16:25,290 และฉันนั่งอยู่ที่นั่นใน ห้องโถงรับประทานอาหารหรือในห้องสมุด 412 00:16:25,290 --> 00:16:28,470 หรือในห้องเรียน พยายามที่จะหาข้อผิดพลาดบางอย่าง 413 00:16:28,470 --> 00:16:30,340 แน่นอนฉันสามารถแสดง รหัสของฉันบนหน้าจอของฉัน 414 00:16:30,340 --> 00:16:32,590 เพื่อคนนั่งต่อไป กับผมอย่างแน่นอนกับพนักงาน 415 00:16:32,590 --> 00:16:33,600 แต่ยังมีเพื่อนร่วมชั้น 416 00:16:33,600 --> 00:16:36,580 แต่ถ้าวิธีการแก้ปัญหาที่ เพื่อนร่วมชั้นของฉันมีคือโอ้ 417 00:16:36,580 --> 00:16:39,200 นี่เพียงแค่ใช้เวลาดูสิ่งที่ ฉันไม่ข้ามเส้น 418 00:16:39,200 --> 00:16:43,120 >> และฉันจะกล้าบอกว่าโดยทั่วไป เป็นสิ่งที่เหมาะสมสำหรับคนส่วนใหญ่ 419 00:16:43,120 --> 00:16:45,030 ได้อย่างง่ายดายมากจุดแนว 420 00:16:45,030 --> 00:16:47,195 และเพื่อให้ดูหลักสูตร รายละเอียดเพิ่มเติม 421 00:16:47,195 --> 00:16:49,070 และตอนนี้อีกคนหนึ่งที่ ด้านความขัดแย้ง 422 00:16:49,070 --> 00:16:52,529 ของหลักสูตร CS50 ที่ฉันคิดว่าฉัน จะพูดถึงในข้อสรุปที่นี่ 423 00:16:52,529 --> 00:16:53,820 เป็นข้อเสียใจที่เรียกว่า 424 00:16:53,820 --> 00:16:55,340 ดังนั้นนี่คือทั้งหมดที่พิมพ์ดี 425 00:16:55,340 --> 00:16:58,090 แต่โดยทั่วไปที่เราได้เห็น ที่ผ่านมา 8 ปีบวก 426 00:16:58,090 --> 00:17:01,510 ที่จริงเกือบทั้งหมดของ CS50 ของ กรณีของการทุจริตทางวิชาการ 427 00:17:01,510 --> 00:17:04,390 ได้รับผลมาจากการที่ไม่ดีเพียง การตัดสินใจในช่วงดึก 428 00:17:04,390 --> 00:17:07,144 ผลของความเครียดผล การขาดของการรับประทานอาหาร, ขาดการนอนหลับ 429 00:17:07,144 --> 00:17:09,560 มากเกินไปชุด P, มากเกินไป วันครบกำหนดภาระผูกพันมากเกินไป 430 00:17:09,560 --> 00:17:13,520 สร้างความเครียดขึ้นมาใน 2:00, 03:00 AM, 04:00 กับเส้นตาย looming 431 00:17:13,520 --> 00:17:17,020 นักเรียนส่วนใหญ่ในกรณีเหล่านี้ ได้ทำเพียงแค่การตัดสินใจที่ไม่ดี 432 00:17:17,020 --> 00:17:20,619 ที่พวกเขาได้เป็นอย่างดีอาจจะเสียใจ เช้าวันถัดไปหากไม่ได้นาทีต่อมา 433 00:17:20,619 --> 00:17:25,490 แต่จนถึงปีที่ผ่านมาไม่มี วาล์วปล่อยให้นักเรียนเหล่านี้สามารถทำได้ 434 00:17:25,490 --> 00:17:29,140 จริงเปิดขึ้นจริงที่อยู่ หัวปัญหาได้โดยไม่ต้องกลัวจะถูก 435 00:17:29,140 --> 00:17:30,850 booted จากวิทยาลัยทั้งหมด 436 00:17:30,850 --> 00:17:33,260 >> และแน่นอนเราแนะนำ ข้อเสียใจนี้เมื่อปีที่แล้ว 437 00:17:33,260 --> 00:17:35,970 ที่บอกว่าถ้าภายใน 72 ชั่วโมงสามวัน 438 00:17:35,970 --> 00:17:37,970 ของข้ามเส้นบาง ที่กำหนดไว้ในหลักสูตร 439 00:17:37,970 --> 00:17:41,178 คุณมาข้างหน้าให้เป็นหนึ่งในหลักสูตรของ หัวและเราจะมีการสนทนาเกี่ยวกับเรื่องนี้ 440 00:17:41,178 --> 00:17:43,720 นอกจากนี้ยังมีบาง ผลที่ตรงกันข้ามกับสิ่งที่ 441 00:17:43,720 --> 00:17:44,990 รับการรายงานไปในทางตรงกันข้าม 442 00:17:44,990 --> 00:17:49,190 ยังคงมีผลบางอย่างที่ คือการดำเนินการโดยการเรียนการสอน 443 00:17:49,190 --> 00:17:51,611 โดยทั่วไป zeroing ชุด P หรือการกระทำบางอย่างอื่น ๆ 444 00:17:51,611 --> 00:17:53,610 แต่เราจะแน่นอน จัดการมันเองและไม่ได้ 445 00:17:53,610 --> 00:17:58,460 ดูมันที่สูงขึ้นเป็นผล อาจจะมีมากที่รุนแรงมากขึ้น 446 00:17:58,460 --> 00:18:01,810 และแน่นอนที่จะแบ่งปันสิ่งที่เกิดขึ้น เมื่อปีที่แล้วในช่วงแปดปีที่ผ่านมาและตอนนี้ 447 00:18:01,810 --> 00:18:04,950 เก้าปีของการเรียนการสอนหลักสูตรนี้ และหลังการ tinkering กับลูกบิดต่างๆ 448 00:18:04,950 --> 00:18:07,866 เปลี่ยนหน้าปัดต่างๆที่ผ่านมา หลายปีที่ผ่านมาความซื่อสัตย์ทางวิชาการ 449 00:18:07,866 --> 00:18:11,920 และเห็นต่อข้อมูลไม่ชัดเจน ผลกระทบแม้สุนทรพจน์เช่นนี้ 450 00:18:11,920 --> 00:18:15,490 นี่คือมือลงสิ่งที่ดีที่สุด เราได้แนะนำ pedagogically 451 00:18:15,490 --> 00:18:18,090 ในรอบแปดปีพร้อม เส้นเหล่านี้ใน CS50 452 00:18:18,090 --> 00:18:21,010 >> 19 นักเรียนมาข้างหน้า ตามข้อนี้เมื่อปี 453 00:18:21,010 --> 00:18:23,389 เราเอาการกระทำไม่ เจ็ดของนักเรียนเหล่านั้น 454 00:18:23,389 --> 00:18:25,430 ระบุว่าพวกเขา กังวลโดยไม่จำเป็น 455 00:18:25,430 --> 00:18:27,304 พวกเขาไม่ได้ในความเป็นจริง ข้ามเส้น แต่มัน 456 00:18:27,304 --> 00:18:28,960 ได้รับการสนทนาที่ดีที่จะมีกระนั้น 457 00:18:28,960 --> 00:18:31,190 เรา zeroed 11 ของคะแนน ที่ถูกส่งมา 458 00:18:31,190 --> 00:18:33,840 และหนึ่งในกรณีที่เราถาม นักเรียนที่จะทำปัญหาตั้ง 459 00:18:33,840 --> 00:18:36,370 แต่ที่น่าสนใจมากขึ้น ตรงไปตรงมากับสิ่งเหล่านี้ 19 แชท, 460 00:18:36,370 --> 00:18:39,020 ซึ่งเป็นวิธีที่มากกว่าฉัน คาดว่าจะมีแต่ละของพวกเขา 461 00:18:39,020 --> 00:18:41,370 10 นาทีบางที ชั่วโมงนานนอกจากนี้ยังนำ 462 00:18:41,370 --> 00:18:44,920 จะสว่างจำนวนของปัญหาเกี่ยวกับ ปัญหาครอบครัวปัญหาเพื่อน 463 00:18:44,920 --> 00:18:46,940 ปัญหาสุขภาพจิต ที่เรามีส่วนร่วมแล้ว 464 00:18:46,940 --> 00:18:50,200 ด้วยพรของนักเรียนที่มีถิ่นที่อยู่ คณบดีหรือเพื่อนหรือหมายเลขอื่น ๆ 465 00:18:50,200 --> 00:18:51,450 ทรัพยากรสนับสนุน 466 00:18:51,450 --> 00:18:54,454 ดังนั้นว่านี่คือไกลโดยหนึ่ง ของการใช้งานที่ดีที่สุดของเวลาของเรา 467 00:18:54,454 --> 00:18:55,870 และเป็นหนึ่งในการแทรกแซงที่ดีที่สุด 468 00:18:55,870 --> 00:18:58,870 >> กับที่กล่าวว่ามันไม่มี ข้อมูลเกี่ยวกับอัตราการตรวจสอบ 469 00:18:58,870 --> 00:19:00,909 ของความไม่ซื่อสัตย์ทางวิชาการมากขึ้นโดยทั่วไป 470 00:19:00,909 --> 00:19:02,950 และผมกล้าพูดว่าเซตนี้ ของนักศึกษาชั้นปีที่ผ่านมา 471 00:19:02,950 --> 00:19:06,350 เป็นกลุ่มผู้เข้าชมที่เรา ก่อนหน้านี้ไม่เคยระบุก่อน 472 00:19:06,350 --> 00:19:08,140 และไม่เคยเชื่อมต่อกับก่อน 473 00:19:08,140 --> 00:19:10,020 และอื่น ๆ เหล่านี้ เรื่องราวความสำเร็จที่ยอดเยี่ยม 474 00:19:10,020 --> 00:19:13,390 ถึงแม้ว่าพวกเขาถูกนำตัวไปแสง ในเวลาน้อยกว่าสถานการณ์ที่ดีที่สุด 475 00:19:13,390 --> 00:19:15,640 ดังนั้นเก็บไว้ในใจ ขณะที่คุณทำอาจจะ 476 00:19:15,640 --> 00:19:17,390 บางคนตัดสินใจไม่ดี ตัวเองในช่วงดึก 477 00:19:17,390 --> 00:19:20,151 ว่ามีการขอความช่วยเหลือมานาน เป็นนักศึกษาอยู่ในสถานการณ์ที่ 478 00:19:20,151 --> 00:19:23,400 เป็นเจ้าของและมาข้างหน้าเพื่อที่เราจะสามารถทำได้ มีชนิดของการแชทและจัดการกับมัน 479 00:19:23,400 --> 00:19:27,310 ในทางที่การศึกษาแล้ว เราสามารถวางไว้ข้างหลังพวกเราในวันถัดไป 480 00:19:27,310 --> 00:19:30,335 >> โดยไม่ต้องกังวลใจต่อให้ใช้ ขอบออกจากการสนทนานี้ 481 00:19:30,335 --> 00:19:35,080 เหตุผลที่ลูกสุนัขมีขึ้นมี เพียงเพื่อทำลายน้ำแข็งสักครู่ 482 00:19:35,080 --> 00:19:39,560 และโชคร้ายที่พวกเขากำลังนอนหลับทั้งหมด แต่สิ่งที่ควรจะเกิดขึ้นที่นี่ 483 00:19:39,560 --> 00:19:41,760 ทุกคนควร จะกลัวและชนิดของการผ่อนคลาย 484 00:19:41,760 --> 00:19:43,910 หลังจากนั้นการสนทนาหนักมาก 485 00:19:43,910 --> 00:19:46,930 แต่เห็นได้ชัดผมใส่ ลูกสุนัขที่จะนอนหลับ 486 00:19:46,930 --> 00:19:50,070 แต่ถ้าคุณไป CS50 ของ ลูกสุนัขเฉือนเว็บไซต์ 487 00:19:50,070 --> 00:19:51,610 คุณสามารถดูได้ตลอดทั้งวัน 488 00:19:51,610 --> 00:19:55,280 โดยเฉพาะอย่างยิ่งอาจ 02:00 หรือ 03:00 หรือ 04:00 ในเวลากลางคืน 489 00:19:55,280 --> 00:19:57,480 ที่จะเห็นการบรรเทาความเครียดเล็ก ๆ น้อย ๆ มี 490 00:19:57,480 --> 00:19:58,805 เพื่อให้เป็นลูกสุนัขเฉือน 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 ทั้งหมดขวา 493 00:20:02,200 --> 00:20:03,020 ไม่ได้เป็นเรื่องที่สนุกที่? 494 00:20:03,020 --> 00:20:04,200 ตกลง. 495 00:20:04,200 --> 00:20:07,140 ดังนั้นกลับไปยังคอมพิวเตอร์บาง วิทยาศาสตร์ถ้าฉันอาจ 496 00:20:07,140 --> 00:20:10,600 >> ดังนั้นจำได้ว่าครั้งสุดท้ายที่เราเริ่มต้น มองไม่เพียง แต่ที่หลักซึ่ง 497 00:20:10,600 --> 00:20:13,930 เป็นฟังก์ชั่นเริ่มต้นเมื่อ ธงสีเขียวคลิกเทียบเท่า 498 00:20:13,930 --> 00:20:16,999 แต่เราก็เริ่มในเวลาสั้น ๆ เขียนบางส่วนของฟังก์ชั่นของเราเอง 499 00:20:16,999 --> 00:20:20,040 และป่านนี้ไม่มีฟังก์ชั่นเหล่านี้ ได้รับโดยเฉพาะอย่างยิ่งใหญ่หรือเนื้อ 500 00:20:20,040 --> 00:20:24,570 คุณจะได้รับในที่มีขนาดใหญ่ ฟังก์ชั่นอาจ P ชุดที่ 2, P ตั้ง 3 501 00:20:24,570 --> 00:20:26,410 แน่นอน P ตั้ง 4 เป็นต้นไป 502 00:20:26,410 --> 00:20:29,340 ตอนนี้ส่วนใหญ่ของโปรแกรมของคุณ หากไม่ได้ทั้งหมดของพวกเขาอย่างแน่นอนสำหรับ P 503 00:20:29,340 --> 00:20:31,550 ชุดที่ 1 สามารถทำได้ทั้งหมดในหลัก 504 00:20:31,550 --> 00:20:33,810 ถ้าโปรแกรมของคุณเป็นเพียง ห้าเส้น 10 เส้น 505 00:20:33,810 --> 00:20:37,070 แม้กระทั่ง 20 สายยาวได้อย่างสมบูรณ์แบบ เหมาะสมที่จะเขียนมัน 506 00:20:37,070 --> 00:20:40,930 ทั้งหมดในหลักและไม่ได้ที่จะซับซ้อนกว่า รหัสของคุณ แต่สิ่งที่เรากำลังทำในวันนี้ 507 00:20:40,930 --> 00:20:44,360 และเป็นต้นไปพยายามที่จะยัง แนะนำเทคนิคการออกแบบที่ดี 508 00:20:44,360 --> 00:20:48,660 เพื่อให้เป็นรหัสของคุณได้รับมากขึ้น ที่ซับซ้อนและเป็นปัญหาที่เกิดขึ้น 509 00:20:48,660 --> 00:20:51,690 คุณต้องการที่จะแก้ปัญหาได้ยากขึ้นและ ที่น่าสนใจมากกว่าที่คุณมีการเรียงลำดับของ 510 00:20:51,690 --> 00:20:55,850 เครื่องมือในกล่องเครื่องมือของคุณที่ การออกแบบที่ดีที่จะแก้ปัญหาเหล​​่านั้น 511 00:20:55,850 --> 00:21:01,210 >> ดังนั้นลองมาดูอย่างรวดเร็วกลับไปที่ โปรแกรมจากสัปดาห์ที่ผ่านมาของฉันนี้ซึ่ง 512 00:21:01,210 --> 00:21:06,550 ฟังก์ชั่นเป็นจุดศูนย์ซีและ สังเกตเห็นว่าค่อนข้างง่าย 513 00:21:06,550 --> 00:21:10,310 มันมีลักษณะเช่นนี้กับสอง ฟังก์ชั่นหลักและชื่อพิมพ์ 514 00:21:10,310 --> 00:21:13,160 และคิดกลับหรือบางทีอาจจะ วิศวกรรมย้อนกลับในวันนี้ 515 00:21:13,160 --> 00:21:16,880 สิ่งที่เป็นแรงจูงใจสำหรับการแนะนำ ฟังก์ชั่นในสาย 28 ที่เรียกว่า 516 00:21:16,880 --> 00:21:18,180 พิมพ์ชื่อ? 517 00:21:18,180 --> 00:21:21,745 หรือสิ่งที่เป็นตัวอย่างของการนี​​้ใน แง่ของหลักการหรือประเด็นที่ 518 00:21:21,745 --> 00:21:22,605 ถ้าคุณจะ 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 บางพึมพำ 521 00:21:27,300 --> 00:21:28,830 อะไร? 522 00:21:28,830 --> 00:21:32,210 >> ใช่สลายตัวฟังก์ชั่นอื่น ๆ เป็นชนิดของวิธีที่จินตนาการของว่า 523 00:21:32,210 --> 00:21:34,690 ย่อยสลายโปรแกรมของคุณ เข้าไปในส่วนที่เป็นส่วนประกอบของ 524 00:21:34,690 --> 00:21:37,530 และจากนั้นใช้ชิ้นส่วนเหล่านั้น การประกอบทั้งหมด 525 00:21:37,530 --> 00:21:39,620 ดังนั้นที่มากเกินไปเป็นเพียงชนิด ของคำหนึ่งแล้ว 526 00:21:39,620 --> 00:21:42,050 แต่อาจจะเป็นแม้กระทั่ง ตัวอย่างที่ดีของบางสิ่งบางอย่าง 527 00:21:42,050 --> 00:21:43,081 เรียกว่าเพียงแค่สิ่งที่เป็นนามธรรม 528 00:21:43,081 --> 00:21:43,580 ใช่มั้ย? 529 00:21:43,580 --> 00:21:46,950 นามธรรมเป็นไปได้อย่างใดอย่างหนึ่ง ในรูปแบบที่เกิดขึ้นใน CS50 530 00:21:46,950 --> 00:21:49,085 และวิทยาการคอมพิวเตอร์ มากขึ้นโดยทั่วไปเนื่องจากเป็น 531 00:21:49,085 --> 00:21:53,060 เทคนิคที่คุณสามารถแก้ ปัญหาที่เกิดขึ้นได้อย่างมีประสิทธิภาพมากขึ้นเพราะคุณ 532 00:21:53,060 --> 00:21:56,807 สามารถเขียนการแก้ปัญหามากขึ้น สังหรณ์ใจและในทางที่เครื่องชั่งน้ำหนัก 533 00:21:56,807 --> 00:21:58,390 และเป็นที่เข้าใจโดยคนอื่น ๆ 534 00:21:58,390 --> 00:21:59,860 ผมหมายถึงอะไรโดยที่? 535 00:21:59,860 --> 00:22:04,340 >> ดังนั้นเนื้อหามันเป็นมากขึ้นที่สามารถอ่านได้ จะมองไปที่โปรแกรมเช่นนี้ 536 00:22:04,340 --> 00:22:05,990 ซุปเปอร์สั้นแม้ว่ามันจะเป็น 537 00:22:05,990 --> 00:22:10,050 เมื่อคุณเห็นในบรรทัดที่ 22 ว่ามี ฟังก์ชั่นที่เรียกว่าชื่อพิมพ์ 538 00:22:10,050 --> 00:22:12,620 ชื่อที่อยู่คนเดียวกล่าวว่าสิ่งที่มันไม่ 539 00:22:12,620 --> 00:22:15,780 ฟังก์ชั่นที่เห็นได้ชัดว่าจะใช้เวลา การป้อนข้อมูลระหว่างวงเล็บของตน 540 00:22:15,780 --> 00:22:18,600 และเห็นได้ชัดไม่บางสิ่งบางอย่าง สันนิษฐานพิมพ์ชื่อ 541 00:22:18,600 --> 00:22:20,880 ดังนั้นแม้ว่าเรา อย่างที่อาจมี 542 00:22:20,880 --> 00:22:25,280 ทำในสิ่งที่เราทำในสัปดาห์ที่ผ่านมาซึ่งเป็น เพียงแค่ใช้เวลานี้สายที่เกิดขึ้นจริงของรหัส 543 00:22:25,280 --> 00:22:28,710 ได้รับการกำจัดนี้และได้รับการ กำจัดนี้ทั้งหมดเข้าด้วยกัน 544 00:22:28,710 --> 00:22:31,436 เราเรียงลำดับของการแยกออกไป ความคิดในการพิมพ์ชื่อ 545 00:22:31,436 --> 00:22:33,060 ผมไม่สนใจว่าคุณกำลังใช้ความละเอียดในการพิมพ์ 546 00:22:33,060 --> 00:22:35,601 ฉันไม่สนใจถ้าคุณมี ร้อยละ S และเครื่องหมายเหล่านี้เอ็น 547 00:22:35,601 --> 00:22:37,270 เป็นรายละเอียดที่เป็นความลับอย่างไม่น่าเชื่อ 548 00:22:37,270 --> 00:22:40,090 สิ่งที่ฉันจะดูแลเกี่ยวกับเป็น โปรแกรมเมอร์พิมพ์ชื่อ 549 00:22:40,090 --> 00:22:43,414 และเพื่อสิ่งที่ดีกว่าที่จะทำ กว่าโดยการเรียกฟังก์ชั่นการพิมพ์ชื่อหรือไม่? 550 00:22:43,414 --> 00:22:46,330 และอื่น ๆ ที่เป็นหนึ่งในแรงจูงใจ สำหรับการทำบางสิ่งบางอย่างเช่นนี้ 551 00:22:46,330 --> 00:22:50,370 ทำรหัสที่อ่านได้มากขึ้น นำมาใช้ใหม่และยังบรรยายตัวเอง 552 00:22:50,370 --> 00:22:52,120 ตอนนี้ขอใช้เวลาดู ที่อีกตัวอย่างหนึ่ง 553 00:22:52,120 --> 00:22:56,220 ซึ่งเป็นฟังก์ชั่นหนึ่ง ซึ่งเรามีมากกว่าที่นี่ 554 00:22:56,220 --> 00:23:00,367 >> ดังนั้นหนึ่งนี้อาจจะมากยิ่งขึ้น ที่น่าสนใจเพราะในกรณีนี้ 555 00:23:00,367 --> 00:23:01,700 ฉันไม่ต้องการที่จะเพียงแค่ได้รับเป็น int 556 00:23:01,700 --> 00:23:03,320 ฉันต้องการที่จะได้รับ int บวก 557 00:23:03,320 --> 00:23:06,470 และมันจะเปิดออกที่จะได้รับในเชิงบวก int ที่คุณต้องทำพวงของ legwork 558 00:23:06,470 --> 00:23:06,969 ใช่มั้ย? 559 00:23:06,969 --> 00:23:09,600 มันไม่ได้เป็นที่เรียบง่ายหนึ่งบรรทัด เรียกเหมือนเป็นชื่อพิมพ์ 560 00:23:09,600 --> 00:23:11,480 ซึ่งเป็นที่ยอมรับน่าสนใจน้อย 561 00:23:11,480 --> 00:23:16,000 >> เพื่อให้ได้ int บวก logically-- ผมขอเลื่อนกลับลงไปซ่อนนี้ 562 00:23:16,000 --> 00:23:18,887 ที่คุณต้องทำอย่างไร? 563 00:23:18,887 --> 00:23:20,720 เช่นเดียวกับเครื่องมือทั้งหมดที่เรา มีในขณะที่มีการ 564 00:23:20,720 --> 00:23:24,440 สิ่งที่ต้องการความละเอียดการพิมพ์จากมาตรฐาน ห้องสมุดและจากห้องสมุด CS50 565 00:23:24,440 --> 00:23:26,990 เรามีรับ Int และรับ Float, รับลองรับสตริง 566 00:23:26,990 --> 00:23:29,260 แต่เพียงคนเดียว, ชิด, ในขณะนี้คือการได้รับดอกเบี้ย 567 00:23:29,260 --> 00:23:32,970 ดังนั้นถ้าเครื่องมือเดียวที่คุณมี ในกล่องเครื่องมือของคุณจะได้รับ Int, 568 00:23:32,970 --> 00:23:35,505 วิธีการที่เราจะไปเกี่ยวกับการใช้ ให้ได้รับ int บวก? 569 00:23:35,505 --> 00:23:35,929 >> ผู้ชม: สร้างบันทึกและตรวจสอบ ว่าการป้อนข้อมูลที่พวกเขาให้ 570 00:23:35,929 --> 00:23:36,762 เป็นบวกหรือไม่ 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> ลำโพงที่ 1: ที่สมบูรณ์แบบ 573 00:23:40,640 --> 00:23:41,200 ที่แน่นอน 574 00:23:41,200 --> 00:23:43,950 เป็นอีกเครื่องมือหนึ่งที่เรามีในของเรา จากกล่องหรือสองสัปดาห์ที่ผ่านมา 575 00:23:43,950 --> 00:23:45,419 เป็นเพียงการสร้างการวนลูป 576 00:23:45,419 --> 00:23:48,210 ดังนั้นใช่ถ้าเราใช้ในขณะที่ ห่วงหรือต้องทำในขณะที่ห่วงหรือก่อน 577 00:23:48,210 --> 00:23:50,850 วงเราอาจได้รับไป กับใด ๆ ของผู้ที่อยู่ในรูปแบบบางส่วน 578 00:23:50,850 --> 00:23:55,140 เราสามารถใช้ความคิดของการ GET int บวกโดยเพียงแค่ใช้รับ Int, 579 00:23:55,140 --> 00:23:57,830 และจากนั้นก็ให้เรียกมันว่า อีกครั้งและให้รบกวนผู้ใช้ 580 00:23:57,830 --> 00:24:00,320 จนกว่าเขาหรือเธอจริง ช่วยให้เรามีสิ่งที่เราต้องการ 581 00:24:00,320 --> 00:24:03,260 >> และดังนั้นตอนนี้ นามธรรมของกระบวนการ 582 00:24:03,260 --> 00:24:05,680 ในการได้รับ int บวก ในการทำงานที่เรียกว่า 583 00:24:05,680 --> 00:24:08,930 รับดอกเบี้ยบวกเพิ่มอีกนิด ที่น่าสนใจเพราะดูที่นี้ 584 00:24:08,930 --> 00:24:10,990 เหล่านี้เป็นเช่น 10 บวก บรรทัดของรหัสที่ 585 00:24:10,990 --> 00:24:15,090 มีส่วนร่วมในการรับ int บวก และฉันไม่สนใจว่าคุณทำมัน 586 00:24:15,090 --> 00:24:17,850 สิ่งที่ผมสนใจคือการที่คุณ สามารถทำมันได้และเพื่อให้ฉันได้ 587 00:24:17,850 --> 00:24:21,660 ซ่อนรายละเอียดทั้งหมดเหล่านี้ที่อยู่เบื้องหลัง ฟังก์ชั่นที่เรียกว่าได้รับในเชิงบวก int ว่า 588 00:24:21,660 --> 00:24:23,430 แน่นอนมีสิ่งที่ต้องทำในขณะที่วงนี้ 589 00:24:23,430 --> 00:24:27,660 >> และดูสัปดาห์ที่ผ่านมาสำหรับไวยากรณ์ มี แต่เพียงประกาศ N, 590 00:24:27,660 --> 00:24:29,800 และจะพิมพ์ออก การเรียนการสอนให้กับผู้ใช้ 591 00:24:29,800 --> 00:24:33,330 มันเรียกรับ Int และจากนั้นจะตรวจสอบ สภาพนี้อีกครั้งและอีกครั้ง 592 00:24:33,330 --> 00:24:35,230 และอีกครั้งจนกว่าผู้ใช้จะให้ความร่วมมือ 593 00:24:35,230 --> 00:24:38,000 >> ดังนั้นตอนนี้ไม่กี่ตรวจสอบสติ 594 00:24:38,000 --> 00:24:40,370 สำหรับผู้ที่คุ้นเคยอาจจะ กับการเขียนโปรแกรมบางอย่าง 595 00:24:40,370 --> 00:24:46,410 ทำไมยังไม่มีการประกาศว่าทำไมจะสร้าง ยังไม่มีข้อความที่ด้านนอกของสิ่งที่ต้องทำในขณะที่วง? 596 00:24:46,410 --> 00:24:50,370 ทำไมมันจึงเป็นในบรรทัดที่ 29 และไม่ได้ เมื่อวันที่ 33 เหมือนเช่น 597 00:24:50,370 --> 00:24:53,529 >> ผู้ชม: เพ​​ราะเมื่อคุณ ประกาศนอกชนิด 598 00:24:53,529 --> 00:24:56,688 ของมากขึ้น scope-- ขนาดใหญ่ 599 00:24:56,688 --> 00:24:58,146 >> ลำโพง 1: ดี 600 00:24:58,146 --> 00:24:59,604 >> ผู้ชม: --and ถ้าคุณประกาศ ภายในวง [ไม่ได้ยิน] 601 00:24:59,604 --> 00:25:00,979 เพราะมันไม่ได้รู้เกี่ยวกับมัน 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 ลำโพงที่ 1: ว่า 604 00:25:03,610 --> 00:25:06,330 ถ้าฉันสามารถ simplify-- มันเป็นปัญหาของขอบเขต 605 00:25:06,330 --> 00:25:11,530 และขอบเขตหมายถึงบริบท ซึ่งตัวแปรที่มีอยู่หรือสามารถใช้งานได้ 606 00:25:11,530 --> 00:25:15,050 และกฎที่ดีของหัวแม่มือที่นี่คือ โดยทั่วไปเมื่อคุณประกาศหรือสร้าง 607 00:25:15,050 --> 00:25:21,642 ตัวแปรคุณสามารถใช้มันไว้ภายใน ที่ใกล้เคียงที่สุดของกอดวงเล็บปีกกา 608 00:25:21,642 --> 00:25:22,600 ดังนั้นสิ่งที่หมายความว่า? 609 00:25:22,600 --> 00:25:26,551 ถ้าฉันแทนยกเลิกและไปกับ บางสิ่งบางอย่างที่ให้ความรู้สึกเรียบง่ายเล็ก ๆ น้อย ๆ 610 00:25:26,551 --> 00:25:27,050 ใช่มั้ย? 611 00:25:27,050 --> 00:25:29,360 >> สาย 32 เพียงแค่รูปลักษณ์ทำความสะอาดเพื่อฉันตอนนี้ 612 00:25:29,360 --> 00:25:31,500 ฉันทำสิ่งทั้งที่ ครั้งเดียวแล้วกำหนด 613 00:25:31,500 --> 00:25:33,070 ด้านขวามือด้านซ้ายมือ 614 00:25:33,070 --> 00:25:35,180 ปัญหาที่เกิดขึ้นในขณะนี้ขึ้นอยู่กับ ความหมายของขอบเขตที่ 615 00:25:35,180 --> 00:25:41,130 คือการที่ยังไม่มีสามารถนำมาใช้ในสาย วันที่ 31 และ 32 ด้านในของวงนี้ 616 00:25:41,130 --> 00:25:45,100 แต่โดยความหมายที่ว่า ก็สามารถนำมาใช้ไม่ได้? 617 00:25:45,100 --> 00:25:45,660 ในบรรทัดที่อะไร? 618 00:25:45,660 --> 00:25:46,160 ใช่ 619 00:25:46,160 --> 00:25:47,490 >> ผู้ชม: 35 620 00:25:47,490 --> 00:25:49,180 >> ลำโพง 1: 35 621 00:25:49,180 --> 00:25:50,480 ไม่แน่นอน 35 622 00:25:50,480 --> 00:25:52,349 และยังเป็นที่ที่อื่น? 623 00:25:52,349 --> 00:25:52,890 ผู้ชม: 34 624 00:25:52,890 --> 00:25:55,040 ลำโพง 1: ถึง 34 ปัญหาเพราะมันเป็น 625 00:25:55,040 --> 00:25:56,450 นอกวงเล็บปีกกา 626 00:25:56,450 --> 00:25:58,200 ดังนั้นในความเป็นจริงเรามาดูสิ่งที่เกิดขึ้น 627 00:25:58,200 --> 00:25:58,700 ใช่มั้ย? 628 00:25:58,700 --> 00:26:00,722 นี้อาจดูเหมือนเล็ก ๆ น้อย ๆ ที่ใช้งานง่ายหรืออาจจะไม่ได้ 629 00:26:00,722 --> 00:26:02,680 แต่ให้ดูว่า คอมไพเลอร์ได้กล่าวเมื่อ 630 00:26:02,680 --> 00:26:04,730 ที่เราจะไปลงในไดเรกทอรีแหล่งที่มาของวันนี้ 631 00:26:04,730 --> 00:26:08,950 ทำให้ฟังก์ชั่นหนึ่ง 632 00:26:08,950 --> 00:26:11,231 โอ้พระเจ้า. 633 00:26:11,231 --> 00:26:12,980 ดีที่สุดผมก็เสร็จ ว่าโดยวิธีการ 634 00:26:12,980 --> 00:26:14,030 ทั้งหมดขวา 635 00:26:14,030 --> 00:26:15,510 และสิ่งที่เป็นปัญหาที่นี่? 636 00:26:15,510 --> 00:26:17,430 ความลับมากที่จะมองไปที่ 637 00:26:17,430 --> 00:26:19,570 แต่นี่คือสิ่งที่ฉัน typed-- ทำให้ฟังก์ชั่นหนึ่ง 638 00:26:19,570 --> 00:26:21,640 นี่คือสิ่งที่ทำให้เกิด ที่เป็นจริง 639 00:26:21,640 --> 00:26:23,705 โดยใช้เสียงดังกราวคอมไพเลอร์ กับบางส่วนของธงเหล่านั้น 640 00:26:23,705 --> 00:26:25,080 ที่เราจะได้เห็นอีกครั้งก่อนที่จะยาว 641 00:26:25,080 --> 00:26:26,829 และอีกครั้งมักจะมอง ข้อผิดพลาดที่แรก 642 00:26:26,829 --> 00:26:30,540 เพราะมันก็จะมีซ้อน ผลความหมายในสายอื่น ๆ 643 00:26:30,540 --> 00:26:34,410 >> ดังนั้นสิ่งนี้หมายความว่า ปัญหาคือใน 1.c. ฟังก์ชั่น 644 00:26:34,410 --> 00:26:36,890 มันอยู่บนเส้น 32 645 00:26:36,890 --> 00:26:39,712 และมันก็เป็นที่คอลัมน์หรือตัวอักษรที่ 13 646 00:26:39,712 --> 00:26:42,670 ดังนั้นเมื่อแก้ไขข้อความของคุณที่สามารถ ช่วยให้คุณระบุที่เป็นปัญหา 647 00:26:42,670 --> 00:26:47,079 ดังนั้นถ้าผมเลื่อนขึ้นสิ่งที่เป็นสาย 32? 648 00:26:47,079 --> 00:26:49,120 นั่นเป็นจริงนี้ ที่เน้นอยู่แล้ว 649 00:26:49,120 --> 00:26:50,607 สิทธิ here-- n ตัวแปรที่ไม่ได้ใช้ 650 00:26:50,607 --> 00:26:51,440 แต่มันไม่ได้ที่ไม่ได้ใช้ 651 00:26:51,440 --> 00:26:52,320 ฉันใช้มัน 652 00:26:52,320 --> 00:26:56,110 แต่คอมไพเลอร์ของสับสนเพราะ มันมีอยู่ภายในขอบเขตนี้ 653 00:26:56,110 --> 00:26:57,727 และดังนั้นผมจึงไม่สามารถใช้งานได้ที่นี่ 654 00:26:57,727 --> 00:26:58,560 ฉันไม่สามารถใช้งานได้ที่นี่ 655 00:26:58,560 --> 00:27:01,320 และคอมไพเลอร์จึง ไม่ได้สนใจว่าฉันพยายาม 656 00:27:01,320 --> 00:27:03,940 มันน่าจะเป็นที่ไม่ได้ใช้ ภายในขอบเขตที่แท้จริงของมัน 657 00:27:03,940 --> 00:27:08,854 >> ดังนั้นเราจึงสามารถขยายขอบเขตด้วยการทำ ว่าสิ่งที่เราเริ่มต้น with-- int n 658 00:27:08,854 --> 00:27:11,020 และถึงแม้ว่ามันไม่ได้ ดูสง่างามบางที 659 00:27:11,020 --> 00:27:15,110 และเรากำลังการสายพิเศษ ที่นี่ตอนนี้ก็อยู่ในขอบเขตทุกที่ 660 00:27:15,110 --> 00:27:15,970 ดังนั้นขอลองอีกครั้ง 661 00:27:15,970 --> 00:27:19,040 เพื่อให้การทำงานอย่างใดอย่างหนึ่ง 662 00:27:19,040 --> 00:27:19,610 นีซ 663 00:27:19,610 --> 00:27:23,370 และตอนนี้ถ้าผมถ้าผมใช้ฟังก์ชั่น หนึ่งขอให้เชิงลบที่ 10 664 00:27:23,370 --> 00:27:27,170 เชิงลบ 1, 0, 1, และมันแน่นอนทำงาน 665 00:27:27,170 --> 00:27:28,610 >> ดังนั้นจึงมีวิธีอื่นที่นี่ 666 00:27:28,610 --> 00:27:29,280 คุณรู้อะไรไหม? 667 00:27:29,280 --> 00:27:31,230 เกิดอะไรขึ้นถ้าผมกำลังต่อสู้กับเรื่องนี้? 668 00:27:31,230 --> 00:27:33,140 ผมไม่ทราบว่า n ที่ควรจะไป 669 00:27:33,140 --> 00:27:33,723 คุณรู้อะไรไหม? 670 00:27:33,723 --> 00:27:39,220 ฉันแค่ไปที่จะนำมันทั้งหมด วิธีที่ด้านบนของไฟล์ของฉันที่นี่ 671 00:27:39,220 --> 00:27:42,835 สิ่งนี้จะทำคุณคิดว่า? 672 00:27:42,835 --> 00:27:43,335 ใช่? 673 00:27:43,335 --> 00:27:44,251 >> ผู้ชม: [ไม่ได้ยิน] 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 ลำโพง 1: ใช่ 676 00:27:48,630 --> 00:27:50,560 ดังนั้นผมจึงได้ทำมันทั่วโลกเพื่อที่จะพูด 677 00:27:50,560 --> 00:27:54,430 หากคุณมีตัวแปรที่อยู่นอก ฟังก์ชั่นทั้งหมดของคุณที่จะได้รับอนุญาต 678 00:27:54,430 --> 00:27:58,780 และรหัสควรรวบรวมและ n ในขณะนี้จะสามารถเข้าถึงได้ไม่เพียง แต่ในการรับ 679 00:27:58,780 --> 00:28:02,490 int บวก แต่ยังอยู่ใน main-- ที่ เป็นที่น่าเป็นห่วงเล็ก ๆ น้อย ๆ เพราะมี 680 00:28:02,490 --> 00:28:04,864 แล้ว n ในหลักเพื่อให้มากขึ้น ว่าในเวลาเพียง moment-- 681 00:28:04,864 --> 00:28:06,530 แต่นี้จะได้รับการพิจารณาการออกแบบที่ไม่ดี 682 00:28:06,530 --> 00:28:06,910 ทั้งหมดขวา 683 00:28:06,910 --> 00:28:08,570 หากคุณมีรีสอร์ทเพื่อ สิ่งที่ต้องการโอ้ฉันจะ 684 00:28:08,570 --> 00:28:10,125 เพียงแค่ใส่มันขึ้นมาที่นี่เพราะ รหัสที่ดูเหมือนว่าจะรวบรวม 685 00:28:10,125 --> 00:28:12,180 โดยทั่วไปไม่ได้เป็นวิธีที่ดีที่สุด 686 00:28:12,180 --> 00:28:14,590 แต่คุณต้องการที่จะเลือก ขอบเขตที่เป็นไปได้ที่แคบ 687 00:28:14,590 --> 00:28:18,720 สำหรับตัวแปรของคุณซึ่งจะหมายถึง ไปกับการออกแบบครั้งแรกของเราที่ 688 00:28:18,720 --> 00:28:19,920 ถูกต้องที่นี่ 689 00:28:19,920 --> 00:28:24,400 >> ขณะนี้เป็นกันถ้าคุณไม่ได้ เหมือนกันชื่อตัวแปรที่นี่ 690 00:28:24,400 --> 00:28:27,750 ทางคจะจัดการ this-- แม้เรื่องนี้จะไม่เกิดขึ้นมากเกินไป often-- 691 00:28:27,750 --> 00:28:30,150 คือว่านี้ยังคงเป็น สมบูรณ์ดีที่นี่ 692 00:28:30,150 --> 00:28:35,000 แต่ความหมายของ n ในสายนี้ 22 จะเงาหนึ่งของโลก 693 00:28:35,000 --> 00:28:38,190 ดังนั้นหนึ่งนี้จะทำงานภายใน หลักและทั่วโลกหนึ่ง 694 00:28:38,190 --> 00:28:41,670 จริงจะใช้เมื่อคุณอยู่ใน ได้รับในเชิงบวก int แต่เพิ่มเติมว่า 695 00:28:41,670 --> 00:28:43,890 อีกครั้งหนึ่ง แต่เพียง สำหรับผู้ที่อยากรู้อยากเห็น 696 00:28:43,890 --> 00:28:45,970 >> ดังนั้นในระยะสั้นเราแก้ไขปัญหานี้ที่นี่ 697 00:28:45,970 --> 00:28:49,220 ตอนนี้ขอแซวออกจากกันสองชิ้นอื่น ๆ ก่อนที่เราจะมองไปที่หนึ่งบรรทัดสุดท้ายของรหัส 698 00:28:49,220 --> 00:28:50,170 ในโปรแกรมนี้ 699 00:28:50,170 --> 00:28:52,170 รับ int บวก 700 00:28:52,170 --> 00:28:54,450 ที่ด้านซ้ายมือของ คำที่เป็น int คำ 701 00:28:54,450 --> 00:28:56,860 อะไรที่มีความหมายว่าคุณคิดว่า? 702 00:28:56,860 --> 00:28:58,900 ป่านนี้เราได้เห็นส่วนใหญ่เป็นโมฆะ 703 00:28:58,900 --> 00:28:59,400 ใช่? 704 00:28:59,400 --> 00:29:01,810 >> ผู้ชม: มันเป็นประเภทของ ตัวแปรที่คุณถามเกี่ยวกับ 705 00:29:01,810 --> 00:29:04,550 >> ลำโพง 1: ใช่มันเป็นประเภทของการให้ฉัน ไม่พูดตัวแปร แต่ชนิดของค่า 706 00:29:04,550 --> 00:29:05,990 ที่ฉันถามกลับ 707 00:29:05,990 --> 00:29:08,070 และแน่นอนว่าเป็น ที่ใช้งานง่ายที่นี่หวังว่า 708 00:29:08,070 --> 00:29:08,200 ใช่มั้ย? 709 00:29:08,200 --> 00:29:10,250 ถ้าคุณต้องการที่จะได้รับ int บวกก็คือสิ่งที่คุณ 710 00:29:10,250 --> 00:29:12,920 ต้องการ function-- เหมือนของเรา อาสาสมัครจากสัปดาห์ที่ผ่านมา 711 00:29:12,920 --> 00:29:15,720 ที่จะถึงมือคุณกลับชิ้น ของกระดาษที่มี int กับมันอยู่แล้ว? 712 00:29:15,720 --> 00:29:19,190 และเพื่อให้เราได้ระบุไว้ว่า ประเภทการกลับมาของฟังก์ชั่นนี้ที่เรียกว่า 713 00:29:19,190 --> 00:29:20,450 จะได้รับ int บวก 714 00:29:20,450 --> 00:29:22,990 ถ้าเราไม่ได้ต้องการให้ กลับสิ่งที่คุณบอกว่าเป็นโมฆะ 715 00:29:22,990 --> 00:29:25,270 หากคุณต้องการที่จะกลับมา สตริงที่คุณพูดสตริง 716 00:29:25,270 --> 00:29:27,310 หากคุณต้องการที่จะกลับมา ลอยคุณพูดลอย 717 00:29:27,310 --> 00:29:30,440 แต่เพียงคนเดียวที่ใช้ที่นี่ เหตุผลเพราะผมใช้รับ int, 718 00:29:30,440 --> 00:29:34,130 แม้ว่าฉัน จำกัด ไปยัง ค่าบวกคือการกลับเป็น int 719 00:29:34,130 --> 00:29:38,380 >> ดังนั้นตรงกันข้ามมันหมายความว่าอะไร ว่ามีช่องว่างในวงเล็บหรือไม่? 720 00:29:38,380 --> 00:29:40,130 ทำอะไรวงเล็บ โดยทั่วไปกำหนด? 721 00:29:40,130 --> 00:29:40,588 ใช่? 722 00:29:40,588 --> 00:29:42,880 >> ผู้ชม: มันมีความหมายของฟังก์ชั่น ไม่ได้รับก็จริง 723 00:29:42,880 --> 00:29:44,650 >> ลำโพงที่ 1: มันมีความหมายของฟังก์ชั่น ไม่จริงได้รับสิ่งที่? 724 00:29:44,650 --> 00:29:45,430 >> ผู้ชม: อินพุต 725 00:29:45,430 --> 00:29:46,763 >> ลำโพงที่ 1: การป้อนข้อมูลอันใด ๆ 726 00:29:46,763 --> 00:29:49,870 ดังนั้นแน่นอนถ้าวงเล็บ ที่นี่คุณระบุเป็นโมฆะ 727 00:29:49,870 --> 00:29:51,650 ก็หมายความว่าฉันไม่ต้องการป้อนข้อมูลใด ๆ 728 00:29:51,650 --> 00:29:53,269 ฉันจะจัดการกับปัญหาตัวเอง 729 00:29:53,269 --> 00:29:55,810 และแน่นอนคุณจะได้ไม่ต้อง บอกได้อะไร int บวก 730 00:29:55,810 --> 00:29:59,630 คุณเพียงแค่บอกว่าได้รับ int บวกและว่า ฟังก์ชั่นจะออกไปและทำสิ่งที่ตน 731 00:29:59,630 --> 00:30:02,970 >> แต่มีการเคล็ดลับเล็ก ๆ น้อย ๆ ที่ฉันได้ รับการเล่นที่นี่ตลอดเวลานี้ 732 00:30:02,970 --> 00:30:04,970 เพื่อให้แน่ใจว่ารหัสนี้จะรวบรวม 733 00:30:04,970 --> 00:30:09,620 ขอให้สังเกตว่า int-- ได้รับในเชิงบวก int void-- อยู่บนเส้น 27 734 00:30:09,620 --> 00:30:14,530 แต่ด้วยเหตุผลบางอย่างที่ดูเหมือนจะแปลก ก็ยังขึ้นที่นี่ในบรรทัดที่ 16 735 00:30:14,530 --> 00:30:18,530 และเพียงแค่การวัดที่ดีฉันจะทำซ้ำ นี้จึงเป็นสิ่งที่เหมือนกันอย่างสมบูรณ์แบบ 736 00:30:18,530 --> 00:30:21,640 และฉันได้กล่าวกับต้นแบบ เล็ก ๆ น้อย ๆ ความคิดเห็นหนึ่งบรรทัด 737 00:30:21,640 --> 00:30:28,850 ที่เกิดขึ้นถ้าฉันจะลบสิ่งนั้นและ ตอนนี้วิ่งให้ฟังก์ชั่น 1, ใส่ 738 00:30:28,850 --> 00:30:29,350 ขออภัย 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 ประเดี๋ยวก่อน 741 00:30:33,110 --> 00:30:34,764 ในกรณีที่แท็บของฉัน? 742 00:30:34,764 --> 00:30:35,263 หือ? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 รอ. 745 00:30:39,620 --> 00:30:41,570 ทำให้ฟังก์ชั่น 1 746 00:30:41,570 --> 00:30:42,150 เราจะไปที่นั่น. 747 00:30:42,150 --> 00:30:42,310 ตกลง. 748 00:30:42,310 --> 00:30:43,400 ไม่ได้บันทึกไว้อย่างถูกต้อง 749 00:30:43,400 --> 00:30:45,220 ดังนั้นผมคิดว่ามีน้อย ข้อผิดพลาดที่นี่ที่ฉันไม่ได้ 750 00:30:45,220 --> 00:30:46,636 เห็นชื่อแท็บในขณะนี้ 751 00:30:46,636 --> 00:30:47,940 ดังนั้นสิ่งที่เกิดขึ้นที่นี่? 752 00:30:47,940 --> 00:30:52,210 ประกาศโดยนัยของฟังก์ชั่น ได้รับในเชิงบวกคือ int ไม่ถูกต้องใน C99 753 00:30:52,210 --> 00:30:53,940 ดังนั้นอีกครั้งทำให้เกิดความสับสน 754 00:30:53,940 --> 00:30:55,200 ดังนั้นสิ่งที่บ่งบอกถึงนี้หรือไม่? 755 00:30:55,200 --> 00:30:57,287 ดีก็ปรากฎว่า C คือโง่สวย 756 00:30:57,287 --> 00:30:59,912 ดีก็เขียนโปรแกรม ภาษาหรือมากกว่าเป็นคอมไพเลอร์ 757 00:30:59,912 --> 00:31:02,940 มันรู้ว่าสิ่งที่คุณมี สอนมันและมันก็เป็นเพียง 758 00:31:02,940 --> 00:31:05,640 จะรู้ว่าสิ่งที่ ถ้าคุณสอนมาก่อน 759 00:31:05,640 --> 00:31:07,960 ในคำอื่น ๆ ใน หลักในขณะที่ฉัน 760 00:31:07,960 --> 00:31:10,900 พยายามที่จะเรียกฟังก์ชั่น เรียกว่าได้รับ int บวก 761 00:31:10,900 --> 00:31:14,120 แต่คอมไพเลอร์จะไม่ จะสังเกตเห็นว่าได้รับ int บวก 762 00:31:14,120 --> 00:31:16,500 อยู่จนสาย 26 763 00:31:16,500 --> 00:31:21,360 และเพื่อให้สิ่งที่คอมไพเลอร์จะเป็นเพียง ข้อผิดพลาดโดยเร็วที่สุดเท่าที่จะได้รับสาย 17 764 00:31:21,360 --> 00:31:23,700 กล่าวว่าการประกาศโดยปริยาย ได้รับของ int บวกซ​​ึ่ง 765 00:31:23,700 --> 00:31:27,740 เป็นเพียงวิธีแฟนซีของว่าฉันทำไม่ได้ รู้ว่าสิ่งที่ได้รับในเชิงบวกคือ int ยัง 766 00:31:27,740 --> 00:31:31,240 >> ภาษาอื่น ๆ เช่น Java และ งูหลามและทับทิมอาจจะมองไปข้างหน้า 767 00:31:31,240 --> 00:31:32,240 C ไม่ได้ 768 00:31:32,240 --> 00:31:35,110 ดังนั้นวิธีการที่เราจะแก้ไขปัญหา นี้เป็นหนึ่งในสองวิธี 769 00:31:35,110 --> 00:31:40,160 อย่างใดอย่างหนึ่งอย่างใดอย่างหนึ่งว่าปัญหาคือการที่ได้รับ int บวกไม่เคยเห็นมาก่อน 770 00:31:40,160 --> 00:31:42,150 ดีให้ฉันเพียงแค่ย้ายไปยังด้านบน 771 00:31:42,150 --> 00:31:43,650 ที่จะแก้ไขปัญหานี้ 772 00:31:43,650 --> 00:31:46,790 แต่โดยทั่วไปก็ ถือเป็นเทคนิคที่ดีกว่า 773 00:31:46,790 --> 00:31:50,220 ที่จะใส่ฟังก์ชั่นหลักของคุณที่มาก ด้านบนเพื่อให้มนุษย์อ่านรห​​ัสของคุณ 774 00:31:50,220 --> 00:31:52,710 รู้ว่าสิ่งที่โปรแกรมไม่ เพราะหลักไม่ได้ฝังอยู่ทั้งหมด 775 00:31:52,710 --> 00:31:53,960 วิธีที่ด้านล่างหรืออยู่ตรงกลาง 776 00:31:53,960 --> 00:31:55,130 มันเป็นที่ส่วนบนสุด 777 00:31:55,130 --> 00:31:56,410 เพื่อให้ไม่รู้สึกเหมาะ 778 00:31:56,410 --> 00:31:58,326 และคุณจะได้รับจริง ในสถานการณ์ที่ 779 00:31:58,326 --> 00:32:00,820 หากมีการเรียกฟังก์ชัน อีกซึ่งเรียกอีก 780 00:32:00,820 --> 00:32:04,630 คุณจะได้รับเป็นปัญหาที่ไม่มี สามารถไปข้างต้นอื่น ๆ ที่มีเหตุผล 781 00:32:04,630 --> 00:32:05,920 มันเป็นไปไม่ได้ 782 00:32:05,920 --> 00:32:09,290 >> และเพื่อให้วิธีการทำงาน รอบนี้คือการใช้เวลาเพียงแค่ 783 00:32:09,290 --> 00:32:13,200 ลายเซ็นของฟังก์ชั่นเพื่อที่จะ speak-- บรรทัดแรกที่มัน declared-- 784 00:32:13,200 --> 00:32:16,850 และเพียงแค่คัดลอกวางไว้ที่ ด้านบน แต่ไม่ได้มี braces-- หยิก 785 00:32:16,850 --> 00:32:17,980 เพียงกับอัฒภาค 786 00:32:17,980 --> 00:32:20,840 มันเหมือนคำใบ้เล็ก ๆ น้อย ๆ ของสิ่งที่จะมา 787 00:32:20,840 --> 00:32:26,630 และในความเป็นจริงตลอดเวลานี้เมื่อเรา ได้เห็นสิ่งที่ต้องการ io.h มาตรฐาน 788 00:32:26,630 --> 00:32:33,040 และ cs50.h ในทำนองเดียวกันในจุดเหล่านั้น ไฟล์เอชจะมีต้นแบบอื่น ๆ 789 00:32:33,040 --> 00:32:35,250 และเราจะเห็นว่าก่อนที่จะยาว 790 00:32:35,250 --> 00:32:39,340 >> ดังนั้นในระยะสั้นเมื่อคุณมีโปรแกรม ในแฟ้มที่มีฟังก์ชั่นหลาย ๆ 791 00:32:39,340 --> 00:32:42,300 นอกเหนือจากหลักคุณเกือบจะ เคยต้องการที่จะประกาศให้ 792 00:32:42,300 --> 00:32:45,360 เพียงแค่วิธีการแรกของพวกเขา สายตามด้วยอัฒภาค 793 00:32:45,360 --> 00:32:48,410 ที่ส่วนบนสุดของแฟ้ม 794 00:32:48,410 --> 00:32:50,460 นั่นเป็นจำนวนมากทั้งหมดในครั้งเดียว 795 00:32:50,460 --> 00:32:53,130 มีคำถามอะไรไหม? 796 00:32:53,130 --> 00:32:53,920 มีคำถามอะไรไหม? 797 00:32:53,920 --> 00:32:54,530 ทั้งหมดขวา 798 00:32:54,530 --> 00:32:59,760 >> ดังนั้นขอย้ายไปแล้ว เพื่อสิ่งที่ต้องการไอ 799 00:32:59,760 --> 00:33:00,260 โอ้ 800 00:33:00,260 --> 00:33:00,570 วิธีที่เหมาะสม 801 00:33:00,570 --> 00:33:01,220 ทั้งหมดขวา 802 00:33:01,220 --> 00:33:02,260 อาการไอ 803 00:33:02,260 --> 00:33:05,080 ดังนั้นนี่คือค การดำเนินงานของโปรแกรม 804 00:33:05,080 --> 00:33:07,560 ที่เราทำในวันอื่น ๆ ใน รอยขีดข่วนได้เป็นอย่างมากเพียงแค่ 805 00:33:07,560 --> 00:33:08,691 กล่าวว่าไอไอไอ 806 00:33:08,691 --> 00:33:09,190 ทั้งหมดขวา 807 00:33:09,190 --> 00:33:11,136 และคนที่บอกว่าไม่กี่ วันที่ผ่านมาว่ามี 808 00:33:11,136 --> 00:33:12,760 วิธีการทำความสะอาดรหัสนี้ขึ้นแล้ว 809 00:33:12,760 --> 00:33:12,880 ทั้งหมดใช่มั้ย? 810 00:33:12,880 --> 00:33:15,440 ทันทีที่คุณคัดลอกและ อาจจะวางการออกแบบที่ไม่ดี 811 00:33:15,440 --> 00:33:18,725 อย่างน้อยหนึ่งครั้งที่เราจะไปสี่หรือห้า อาการไอหรือ 20 ก็รู้สึกปฏิบัติไม่ดี 812 00:33:18,725 --> 00:33:19,850 เราเพียงแค่ให้คัดลอกวาง 813 00:33:19,850 --> 00:33:22,213 อะไรคือทางออกที่ชัดเจน เพื่อการทำความสะอาดโปรแกรมนี้ 814 00:33:22,213 --> 00:33:23,120 >> ผู้ชม: ห่วง 815 00:33:23,120 --> 00:33:23,350 >> ลำโพง 1: ใช่ 816 00:33:23,350 --> 00:33:24,070 ดังนั้นการใช้ห่วง 817 00:33:24,070 --> 00:33:27,697 และเราสามารถใช้สำหรับวงในขณะที่ ห่วงจำนวนของวิธีการใด ๆ 818 00:33:27,697 --> 00:33:29,780 และแน่นอนว่าเป็นสิ่งที่ เราทำในหนึ่งรุ่นที่นี่ 819 00:33:29,780 --> 00:33:32,250 ผมเคยเขียนใหม่แทน ในรุ่นหนึ่ง cough.c 820 00:33:32,250 --> 00:33:35,170 จะเป็นเพียงไอภายในสำหรับวง 821 00:33:35,170 --> 00:33:38,240 สิทธิทั้งหมด แต่มี โอกาสนี้ชนิดของการเริ่มต้น 822 00:33:38,240 --> 00:33:41,630 ในการออกแบบนี้เล็ก ๆ น้อย ๆ มากขึ้นเช่น บทเรียนที่เราสอนสักครู่ที่ผ่านมา 823 00:33:41,630 --> 00:33:46,190 ซึ่งเป็น this-- คิดว่าฉันต้องการ ในการสร้างฟังก์ชั่นที่เรียกว่าไอ 824 00:33:46,190 --> 00:33:49,730 ขอพิจารณาเพื่อรอสักครู่ สิ่งที่มันจะมีลักษณะเหมือน 825 00:33:49,730 --> 00:33:51,900 ดังนั้นถ้าผมต้องการอะไร ไอผมเพียงแค่ต้อง 826 00:33:51,900 --> 00:33:53,800 ที่จะใช้พิมพ์ฉภายในฟังก์ชั่น 827 00:33:53,800 --> 00:33:55,030 และแน่นอนผม 828 00:33:55,030 --> 00:33:56,990 และในความเป็นจริงทั้งหมดนี้ เวลาเวลาที่คุณอยู่ 829 00:33:56,990 --> 00:33:59,000 สิ่งที่จะพิมพ์ หน้าจอ, โปรแกรมเมอร์ 830 00:33:59,000 --> 00:34:00,610 จะเรียกว่าผลข้างเคียง 831 00:34:00,610 --> 00:34:02,990 มันไม่ได้ฉันมอบหมาย กลับมีคนค่า 832 00:34:02,990 --> 00:34:06,170 ฉันก็จะดำเนินการบางอย่าง ที่อาจจะมีสายตาที่เห็นได้ชัด 833 00:34:06,170 --> 00:34:10,672 แต่ไอฟังก์ชั่นนี้ก็ไม่กลับมา สิ่งที่อยู่บนพื้นฐานของบรรทัดแรกของตนหรือไม่ 834 00:34:10,672 --> 00:34:12,880 ไม่มีเพราะประเภทกลับ จะถือเป็นโมฆะซึ่งก็หมายความว่า 835 00:34:12,880 --> 00:34:14,250 มันไม่ได้มอบหมายให้ฉันอะไรกลับ 836 00:34:14,250 --> 00:34:16,791 มันอาจจะทำอะไรบางอย่าง มองเห็น แต่ก็ไม่ได้มอบให้ฉัน 837 00:34:16,791 --> 00:34:18,639 กลับชิ้นส่วนของกระดาษเช่นสัปดาห์ที่ผ่านมา 838 00:34:18,639 --> 00:34:21,310 >> มันต้องป้อนข้อมูลใด ๆ ? 839 00:34:21,310 --> 00:34:21,810 เลขที่ 840 00:34:21,810 --> 00:34:23,134 และดังนั้นจึงเป็นโมฆะที่นี่ด้วย 841 00:34:23,134 --> 00:34:25,600 ดังนั้นนี่ก็เป็นชนิดของ มากกว่าวิศวกรรมปัญหานี้ 842 00:34:25,600 --> 00:34:26,099 ใช่มั้ย? 843 00:34:26,099 --> 00:34:28,820 ผมได้ทำโปรแกรมอื่น ๆ ที่ซับซ้อนมากขึ้นของสายรหัส 844 00:34:28,820 --> 00:34:31,889 ฉันไม่ได้ทำมัน ๆ ทำงานได้มากขึ้น แต่ 845 00:34:31,889 --> 00:34:34,210 จะเป็นหินก้าวที่ บางทีอาจจะเป็นที่กว้างขึ้น 846 00:34:34,210 --> 00:34:36,830 บริบทที่มีรหัสที่ซับซ้อนมากขึ้น 847 00:34:36,830 --> 00:34:38,150 แต่สิ่งที่เกี่ยวกับเรื่องนี้? 848 00:34:38,150 --> 00:34:42,050 ฉันมีอะไร done-- เพียง glancing ที่ โดยไม่ต้องมองหาที่แสดงความคิดเห็น 849 00:34:42,050 --> 00:34:46,076 ที่ด้านบนสุดของ file-- สิ่งที่มี ผมทำที่นี่เป็นพื้นฐานที่มีอาการไอของฉัน 850 00:34:46,076 --> 00:34:47,409 การดำเนินงานที่แตกต่างกันอย่างไร 851 00:34:47,409 --> 00:34:48,327 ใช่ในด้านหลัง? 852 00:34:48,327 --> 00:34:51,384 >> ผู้ชม: ทำให้มันเพื่อให้คุณสามารถ มีลักษณะปิด 853 00:34:51,384 --> 00:34:52,050 ลำโพง 1: ใช่ 854 00:34:52,050 --> 00:34:53,270 ดังนั้นนี้รู้สึกชนิดของความสุข 855 00:34:53,270 --> 00:34:53,389 ใช่มั้ย? 856 00:34:53,389 --> 00:34:56,600 มันก็เหมือนกับการเพิ่มคุณสมบัติในการของคุณ โปรแกรมหรือการทำงานของคุณในกรณีนี้ 857 00:34:56,600 --> 00:34:57,830 ผลตอบแทนที่ได้ก็ยังไม่มีอะไร 858 00:34:57,830 --> 00:35:00,538 มันอาจจะมีผลข้างเคียงภาพ เพราะมันโทรฉพิมพ์ 859 00:35:00,538 --> 00:35:02,800 แต่ตอนนี้ฉันได้ parametrized ฟังก์ชั่นที่ 860 00:35:02,800 --> 00:35:06,470 หมายถึงการที่ฉันได้ระบุการดำเนินการ การป้อนข้อมูลชนิด int และเรียกว่า n, 861 00:35:06,470 --> 00:35:08,510 แต่ผมจะเรียกมันว่าอะไรที่ฉันต้องการ 862 00:35:08,510 --> 00:35:11,550 ในความเป็นจริงมันก็อาจจะเป็น ครั้งที่จะได้อย่างชัดเจนมากขึ้น 863 00:35:11,550 --> 00:35:13,310 และจากนั้นผมก็สามารถเปลี่ยนที่นี่ 864 00:35:13,310 --> 00:35:16,450 แต่ประเด็นก็คือว่านี่เป็นวิธีการที่ฉัน สร้างฟังก์ชั่นที่จะใส่ 865 00:35:16,450 --> 00:35:19,530 และถ้าคุณจำได้พลิก บางทีอาจจะผ่านออนไลน์ในหนึ่ง 866 00:35:19,530 --> 00:35:23,000 ของเดิน throughs ที่ ตัวอย่างที่สี่และไอสุดท้าย 867 00:35:23,000 --> 00:35:27,150 คุณจะสังเกตเห็นที่นี่ฉันได้ทั่วไป รหัสของฉันชนิดของ further-- ใจลอย 868 00:35:27,150 --> 00:35:27,690 มันต่อไป 869 00:35:27,690 --> 00:35:31,390 เช่นเดียวกับไอและจามทั้งสอง เหมือนพูดอะไรบางอย่างหรือการทำ 870 00:35:31,390 --> 00:35:32,330 ชนิดของเสียงบาง 871 00:35:32,330 --> 00:35:34,725 บันทึกที่จะเป็น บล็อกที่สอดคล้องกันรอยขีดข่วน 872 00:35:34,725 --> 00:35:37,350 ดังนั้นสิ่งที่ผมทำในรุ่นนี้ ซึ่งเราสามารถได้อย่างรวดเร็วเพียงแค่ที่ 873 00:35:37,350 --> 00:35:43,170 เป็นไอก็เหมือนกับว่า [ไอ] ไอและในขณะเดียวกัน, จามเป็น 874 00:35:43,170 --> 00:35:44,570 ชอบพูดว่า [Achoo] 875 00:35:44,570 --> 00:35:46,900 และดังนั้นผมจึงได้ทั่วไป การดำเนินการของผู้ที่ 876 00:35:46,900 --> 00:35:48,970 โดยขณะนี้การดำเนินการ ฟังก์ชั่นนี้ทั่วไป 877 00:35:48,970 --> 00:35:51,490 พูดซึ่งเป็นที่น่าสนใจ สำหรับวัตถุประสงค์ของว​​ันนี้ 878 00:35:51,490 --> 00:35:54,300 เพียงเพราะมันยังคง ไม่ได้มีชนิดของผลตอบแทน 879 00:35:54,300 --> 00:35:56,398 แต่ปัจจัยการผลิตหลายวิธีที่มันไม่ได้? 880 00:35:56,398 --> 00:35:56,981 ผู้ชม: สอง 881 00:35:56,981 --> 00:35:57,430 ลำโพง 1: สอง 882 00:35:57,430 --> 00:35:59,263 ดังนั้นถ้าคุณต้องการ ใช้เวลาในสองข้อโต้แย้ง 883 00:35:59,263 --> 00:36:00,710 เพียงแค่แยกพวกเขาด้วยเครื่องหมายจุลภาค 884 00:36:00,710 --> 00:36:03,110 และถ้าคุณต้องการแล้ว เรียกใช้ฟังก์ชันที่ 885 00:36:03,110 --> 00:36:05,800 สังเกตเห็นว่าคุณเพียง โทรพูดอ้างนำมาอ้าง, 886 00:36:05,800 --> 00:36:09,090 สำหรับอาร์กิวเมนต์แรกร่วมกัน n สำหรับอาร์กิวเมนต์ที่สอง 887 00:36:09,090 --> 00:36:12,130 ดังนั้นอีกครั้งเราก็มีตอนนี้ หน่วยการสร้างเพื่อให้เราสามารถจริง 888 00:36:12,130 --> 00:36:15,686 การดำเนินการบางส่วนของฟังก์ชั่นของเราเอง 889 00:36:15,686 --> 00:36:16,570 ทั้งหมดขวา 890 00:36:16,570 --> 00:36:19,690 คำถามใด ๆ เกี่ยวกับเหล่านี้หรือไม่ 891 00:36:19,690 --> 00:36:22,400 >> ดังนั้นตอนนี้ขอกลับมาปอกเปลือกชั้นถ้าเป็นเช่นนั้น 892 00:36:22,400 --> 00:36:24,840 และเป้าหมายในที่สุด ปัญหาในสัปดาห์หน้าชุด 893 00:36:24,840 --> 00:36:27,710 เป็นไปได้ใน cryptogrophy-- ศิลปะของข้อมูล scrambling 894 00:36:27,710 --> 00:36:30,640 และโดยเฉพาะข้อมูลที่ จะมีคุณเข้ารหัสหรือถอดรหัส 895 00:36:30,640 --> 00:36:31,605 เป็นไปได้ข้อความ 896 00:36:31,605 --> 00:36:33,980 และเพื่อให้ชนิดของเชิญที่ คำถามในวันนี้เช่นกัน 897 00:36:33,980 --> 00:36:38,480 สิ่งที่เกิดขึ้นภายใต้ฝากระโปรง ที่มีข้อความเกิน ASCII จากสัปดาห์ที่ศูนย์ 898 00:36:38,480 --> 00:36:40,730 และวิธีการที่เราสามารถทำได้จริง เริ่มต้นที่จะจัดการกับมันได้หรือไม่ 899 00:36:40,730 --> 00:36:43,070 ดังนั้นนี่คือชื่อของ Zamyla 900 00:36:43,070 --> 00:36:47,380 และในข้อความที่อาจจะป้อน เข้ารับฟังก์ชั่นเช่นสตริง 901 00:36:47,380 --> 00:36:52,540 และเริ่มต้นตอนนี้เมื่อคุณเห็น สายเช่น this-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 เริ่มคิดว่ามันเป็นแม้ว่าแต่ละ ของตัวละครเหล่านั้นอยู่ในกล่องของ 903 00:36:56,550 --> 00:36:57,050 ด้วยตัวเอง 904 00:36:57,050 --> 00:36:59,460 และแน่นอนในสัปดาห์หรือดังนั้น เวลาแต่ละกล่องเหล่านี้ 905 00:36:59,460 --> 00:37:04,280 เป็นไปเพื่อเป็นตัวแทนมากโดยเฉพาะ บล็อกของ memory-- กัดของหน่วยความจำ 906 00:37:04,280 --> 00:37:07,050 ดังนั้นแต่ละตัวอักษรเหล่านี้ ท้ายที่สุดจะเป็นตัวแทนของ 8 บิต 907 00:37:07,050 --> 00:37:10,560 และเราจะเห็นจริงว่าเกิดอะไรขึ้น ในใต้ฝากระโปรงในคอมพิวเตอร์ของฉัน 908 00:37:10,560 --> 00:37:13,440 >> แต่ไม่ได้พอเพียง เพียงแค่มองไปที่ Zamyla 909 00:37:13,440 --> 00:37:17,520 ผ่านเลนส์นี้โดยแต่ละ ตัวอักษรเหล่านี้อยู่ในกล่องของตัวเอง 910 00:37:17,520 --> 00:37:22,697 และอย่างเพียงพอใน C ที่เราสามารถทำได้ เข้าถึงแต่ละกล่องเหล่านี้ได้โดยตรง 911 00:37:22,697 --> 00:37:25,530 ดังนั้นหากคุณต้องการที่จะได้รับเป็นครั้งแรก ตัวอักษรของชื่อของเธอง่ายสุดใน C. 912 00:37:25,530 --> 00:37:28,410 ถ้าคุณต้องการที่จะได้รับที่ผ่านมา จดหมายง่ายสุดเช่นกัน 913 00:37:28,410 --> 00:37:30,240 กับชิ้นส่วนของไวยากรณ์ใหม่ 914 00:37:30,240 --> 00:37:36,250 >> ดังนั้นฉันจะไปข้างหน้าเข้า CS50 IDE และเปิดสายศูนย์ dot ซี 915 00:37:36,250 --> 00:37:40,270 และในตัวอย่างนี้ที่นี่ยังมี คู่ของสิ่งใหม่ที่เกิดขึ้น 916 00:37:40,270 --> 00:37:44,360 ดังนั้นครั้งแรกในสาย 19 เราได้ เห็นนี้ before-- รับสตริง 917 00:37:44,360 --> 00:37:49,840 ดังนั้นเพียงแค่เป็นกาสติอย่างรวดเร็ว ถ้ามีคนสามารถมีขึ้นด้วยวาจา 918 00:37:49,840 --> 00:37:52,662 คำอธิบายของคนธรรมดา สิ่งที่เกิดขึ้นในสาย 19 919 00:37:52,662 --> 00:37:55,370 เช่นเดียวกับที่แปลนี้เป็น ภาษาอังกฤษที่เพื่อนร่วมห้องไม่ได้อยู่ใน CS50 920 00:37:55,370 --> 00:37:56,416 อาจจะเข้าใจ 921 00:37:56,416 --> 00:37:56,916 ใช่ 922 00:37:56,916 --> 00:37:59,749 >> ผู้ชม: มีผู้ใช้เข้า สตริงและเก็บไว้ในตัวแปร s 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 ลำโพง 1: ดี 925 00:38:02,600 --> 00:38:05,579 มีผู้ใช้ป้อนข้อมูลสตริง และเก็บไว้ในตัวแปร s 926 00:38:05,579 --> 00:38:06,120 นั่นวิเศษมาก 927 00:38:06,120 --> 00:38:08,090 ดังนั้นทางด้านขวามือ ด้านที่เราเรียกรับสตริง 928 00:38:08,090 --> 00:38:10,340 ที่ส่งกลับค่า ที่ไม่ได้รับที่ได้รับมอบหมาย 929 00:38:10,340 --> 00:38:14,230 จากด้านขวามือไปทางซ้ายมือ ด้านข้างเป็นตัวแปรที่เรียกว่า s ที่ 930 00:38:14,230 --> 00:38:15,950 ออกแบบมาเพื่อเก็บสตริง 931 00:38:15,950 --> 00:38:16,800 ที่แน่นอน 932 00:38:16,800 --> 00:38:20,000 >> ดังนั้นตอนนี้สาย 22 ต่อ ความคิดเห็นในสาย 21 933 00:38:20,000 --> 00:38:22,780 เห็นได้ชัดพิมพ์สตริงที่ ตัวละครตัวหนึ่งต่อบรรทัด 934 00:38:22,780 --> 00:38:23,740 แต่อย่างไร 935 00:38:23,740 --> 00:38:27,040 ดังนั้นก่อนอื่นเราเริ่มต้นฉันถึง 0 936 00:38:27,040 --> 00:38:31,061 และจากนั้นจะทำอย่างไรที่เราจะไป ส่วนท้ายของชื่อ Zamyla ได้หรือไม่ 937 00:38:31,061 --> 00:38:32,810 ดีในตอนท้ายของ ชื่อ Zamyla ของฉันได้ 938 00:38:32,810 --> 00:38:38,151 ตนเองพิมพ์ตัวอักษรตัวสุดท้ายของ ชื่อของเธออย่างใดหรือหมายเลขของมัน 939 00:38:38,151 --> 00:38:38,650 ใช่มั้ย? 940 00:38:38,650 --> 00:38:43,500 ถ้าเรากลับไป here-- Z-A-M-L-- Y-L-A-- ดังนั้นฉันสามารถพิมพ์ใน 941 00:38:43,500 --> 00:38:47,340 อะไรดัชนีของ จดหมายฉบับสุดท้ายของ Zamyla? 942 00:38:47,340 --> 00:38:52,517 ถ้าเป็น 0-- พูดเหมือน programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 ฉัน heard-- ดังนั้นแน่นอนจดหมายฉบับสุดท้าย ชื่อ Zamyla เป็นที่หก 944 00:38:56,570 --> 00:38:58,890 แต่ถ้าเรานับจาก 0, มันจะเป็นหมายเลข 5 945 00:38:58,890 --> 00:39:01,320 ดังนั้นเก็บที่ในใจนี่ 946 00:39:01,320 --> 00:39:04,929 >> มันจะเปิดออกมีฟังก์ชั่นใน C เรียกว่า strlen และกลับในวันที่ 947 00:39:04,929 --> 00:39:06,720 และวันนี้ยังคง จำนวนมากของการเขียนโปรแกรม 948 00:39:06,720 --> 00:39:09,524 เลือกที่จะซิงค์ชื่อของพวกเขา ฟังก์ชั่นที่เสียงเหมือนคำ 949 00:39:09,524 --> 00:39:10,440 พวกเขากำลังพยายามที่จะบอกว่า 950 00:39:10,440 --> 00:39:12,590 strlen ดังนั้นความยาวสตริง 951 00:39:12,590 --> 00:39:18,168 ดังนั้นสิ่งที่จะมีความยาวของสตริง S กลับมาเมื่อ Zamyla คือการใส่หรือไม่ 952 00:39:18,168 --> 00:39:19,569 >> ผู้ชม: ห้า 953 00:39:19,569 --> 00:39:22,090 >> ลำโพง 1: Z-A-M-Y-L หก 954 00:39:22,090 --> 00:39:22,590 ใช่มั้ย? 955 00:39:22,590 --> 00:39:23,940 เป็นความยาวของชื่อ Zamyla ของอะไร? 956 00:39:23,940 --> 00:39:24,440 ใช่มั้ย? 957 00:39:24,440 --> 00:39:26,240 และเพียงแค่ในความเป็นจริงหกตัวอักษร 958 00:39:26,240 --> 00:39:26,740 ใช่มั้ย? 959 00:39:26,740 --> 00:39:28,940 ดังนั้นสิ่งที่หมายความว่าสำหรับวงของเราหรือไม่ 960 00:39:28,940 --> 00:39:32,130 เรากำลังจะไปจากที่ 0 ถึงหกซึ่ง 961 00:39:32,130 --> 00:39:33,650 เป็นไปเพื่อให้เราห้าซ้ำ 962 00:39:33,650 --> 00:39:34,890 เราจะทำอย่างไรในแต่ละซ้ำ? 963 00:39:34,890 --> 00:39:36,870 ดีซีร้อยละคน เดาได้ในวันอื่น ๆ 964 00:39:36,870 --> 00:39:38,710 หมายถึงตัวยึดสำหรับสิ่งที่? 965 00:39:38,710 --> 00:39:39,335 >> ผู้ชม: Char 966 00:39:39,335 --> 00:39:40,293 ลำโพง 1: เพียงแค่ถ่าน 967 00:39:40,293 --> 00:39:42,877 ดังนั้น character-- เดียวไม่ได้ ตัวละครหลายตัวเช่นสตริง 968 00:39:42,877 --> 00:39:45,251 และแล้วนี่คือการขึ้นบรรทัดใหม่ ที่เราได้มีการพิมพ์ออก 969 00:39:45,251 --> 00:39:46,580 และแล้วนี่เป็นไวยากรณ์ใหม่ 970 00:39:46,580 --> 00:39:51,130 ถ้าคุณต้องการที่จะพิมพ์ออก i-ครั้ง ตัวละครใน S สตริงเพื่อที่จะพูด 971 00:39:51,130 --> 00:39:54,060 คุณก็สามารถพูด ชื่อของ S สตริง 972 00:39:54,060 --> 00:39:58,230 แล้วเปิดวงเล็บเหลี่ยมและ แล้วปิดวงเล็บเหลี่ยมกับฉัน 973 00:39:58,230 --> 00:39:58,780 ตรงกลาง. 974 00:39:58,780 --> 00:40:01,430 และมันเป็นชนิดของความสุขในที่ ชนิดของมันมีลักษณะเหมือนตาราง 975 00:40:01,430 --> 00:40:06,210 เช่นเดียวกับช่องสี่เหลี่ยมที่ Zamyla ของ ตัวอักษรที่อยู่ในภาพว่ามี 976 00:40:06,210 --> 00:40:09,970 >> ดังนั้นถ้าจริงผมทำงานนี้ ตอนนี้เรามาดูสิ่งที่เกิดขึ้น 977 00:40:09,970 --> 00:40:15,190 ทำให้สตริง 0 เฉือนจุด สตริง 0 แล้วฉัน 978 00:40:15,190 --> 00:40:16,720 จะพิมพ์ชื่อของ Zamyla 979 00:40:16,720 --> 00:40:19,428 มีพรอมต์ไม่ได้เพราะผมไม่ได้ ใช้ฉพิมพ์ แต่ที่ดี 980 00:40:19,428 --> 00:40:20,660 ผมเพิ่งรู้ว่าสิ่งที่ต้องทำ 981 00:40:20,660 --> 00:40:23,240 และแน่นอนมันพิมพ์ออก ชื่อ Zamyla ของหนึ่งบรรทัดต่อ 982 00:40:23,240 --> 00:40:25,760 >> ตอนนี้ขอเป็นเพียงเล็กน้อยประมาท 983 00:40:25,760 --> 00:40:28,461 สมมติว่าผมไม่ทราบ เกี่ยวกับ strlen และฉันคิด 984 00:40:28,461 --> 00:40:31,460 สิ่งที่ถูกต้องไม่มีใครที่จะมี ชื่อที่ใหญ่กว่าเช่น 50 ตัวอักษร 985 00:40:31,460 --> 00:40:36,360 ลองไปข้างหน้าและคอมไพล์นี้ และเรียกมันแล้วพิมพ์ใน Zamyla 986 00:40:36,360 --> 00:40:37,160 อีกครั้ง 987 00:40:37,160 --> 00:40:40,850 เหตุผลคืออะไร โปรแกรมจะพยายามที่จะพิมพ์? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A แล้วเช่น 45 ไม่รู้จักไบต์หน่วยความจำ 989 00:40:49,545 --> 00:40:51,670 และแน่นอนเราจะกลับมา กับความคิดของหน่วยความจำนี้ 990 00:40:51,670 --> 00:40:54,180 แต่มีเหตุผลถ้า ชื่อ Zamyla นี้เป็นเวลานาน 991 00:40:54,180 --> 00:40:56,450 ตามภาพ นี่คือสิ่งที่เรากำลังจะบอกว่า 992 00:40:56,450 --> 00:40:59,810 จะให้การพิมพ์ให้พิมพ์ให้ การพิมพ์ให้พิมพ์ให้พิมพ์ 993 00:40:59,810 --> 00:41:03,781 ทุกทางที่จะเป็นตัวละครที่ 50 ซึ่งผู้ที่รู้สิ่งที่จะเกิดขึ้น 994 00:41:03,781 --> 00:41:05,030 ดังนั้นขอจริงจะดู 995 00:41:05,030 --> 00:41:06,720 ลองพิมพ์ใน Zamyla 996 00:41:06,720 --> 00:41:07,250 ที่น่าสนใจ 997 00:41:07,250 --> 00:41:08,190 เรามีโชคดี 998 00:41:08,190 --> 00:41:09,700 เพียงแค่ทั้งกลุ่มของพื้นที่สีขาว 999 00:41:09,700 --> 00:41:09,930 โอ้ 1000 00:41:09,930 --> 00:41:11,120 มีตัวละครตัวหนึ่งเป็นขี้ขลาด 1001 00:41:11,120 --> 00:41:14,577 มันมีลักษณะเหมือนเป็นคำถามที่แปลก ทำเครื่องหมายที่นั่น แต่มีชื่อของ Zamyla 1002 00:41:14,577 --> 00:41:15,660 ให้ของได้รับประมาทจริงๆ 1003 00:41:15,660 --> 00:41:20,000 วิธีการเกี่ยวกับที่เราพิมพ์ออกมา 500 บล็อกในที่ไม่รู้จัก? 1004 00:41:20,000 --> 00:41:24,380 ลองไปข้างหน้าและจะทำให้เรื่องนี้ เช่นกันและแล้วการทำงานอีกครั้ง 1005 00:41:24,380 --> 00:41:27,980 และเต็มหน้าจอขอมันเพราะ เราต้องดูพื้นที่มากขึ้น 1006 00:41:27,980 --> 00:41:30,460 Zamyla 1007 00:41:30,460 --> 00:41:31,830 มีโชคดีอีกครั้ง 1008 00:41:31,830 --> 00:41:33,070 >> เราได้รับกล้าบ้าบิ่นมากขึ้น? 1009 00:41:33,070 --> 00:41:36,070 ให้ของได้รับประมาทมากขึ้น 1010 00:41:36,070 --> 00:41:39,350 50,000 ตัวอักษร 1011 00:41:39,350 --> 00:41:41,390 นี้เป็นส่วนใหญ่ก็ไม่ได้เป็นความคิดที่ดี 1012 00:41:41,390 --> 00:41:41,890 ทั้งหมดขวา 1013 00:41:41,890 --> 00:41:42,990 ทำให้สตริง 0 1014 00:41:42,990 --> 00:41:44,720 นี้จะเป็นครั้งสุดท้ายของเราสาธิต 1015 00:41:44,720 --> 00:41:47,261 Zamyla 1016 00:41:47,261 --> 00:41:48,632 อี๊ 1017 00:41:48,632 --> 00:41:50,010 อี๊ 1018 00:41:50,010 --> 00:41:50,680 ตกลง. 1019 00:41:50,680 --> 00:41:54,407 ดังนั้นหน่วยความจำของฉันเป็นที่ว่างเปล่าจริงๆตอนนี้ ซึ่งเป็นจริงชนิดของความสะดวกสบาย 1020 00:41:54,407 --> 00:41:55,990 สิ่งที่ฉันพยายามที่จะได้รับสิทธิ to-- ทั้งหมด 1021 00:41:55,990 --> 00:41:57,614 และตอนนี้ฉันแค่ไปที่จะได้รับโดยประมาท 1022 00:41:57,614 --> 00:41:58,570 500,000 1023 00:41:58,570 --> 00:42:03,860 Make-- ช่วยให้เต็มหน้าจอมัน 1024 00:42:03,860 --> 00:42:04,990 เข้าสู่ 1025 00:42:04,990 --> 00:42:05,490 Zamyla 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 เราจะไปที่นั่น. 1028 00:42:13,390 --> 00:42:15,610 ผมมีความคิดว่าว่าไม่มี เป็น แต่เสียงไม่ดี 1029 00:42:15,610 --> 00:42:16,110 ทั้งหมดขวา 1030 00:42:16,110 --> 00:42:20,322 และในความเป็นจริงในเร็ว ๆ นี้ถ้าคุณอยู่ในหมู่ ในไม่กี่คนที่โชคดีในเวลาทำการ 1031 00:42:20,322 --> 00:42:22,780 และปัญหาการตั้งค่าหนึ่งคุณ อาจเป็นอย่างดีพบนี้ 1032 00:42:22,780 --> 00:42:25,490 ผิดส่วนที่ไม่จริง มีความหมายที่ดีที่กำหนด 1033 00:42:25,490 --> 00:42:28,450 มันหมายถึงชนิดของความผิดพลาดบางอย่าง ที่เกี่ยวข้องกับส่วนของหน่วยความจำ 1034 00:42:28,450 --> 00:42:30,490 และในแง่ของคนธรรมดา มันหมายความว่าเราสัมผัส 1035 00:42:30,490 --> 00:42:34,780 memory-- เราใช้ RAM ในเครื่องคอมพิวเตอร์ของฉัน ที่ฉันไม่ควรจะได้มีการเข้าถึง 1036 00:42:34,780 --> 00:42:37,050 และนั่นคือสิ่งที่ทั้งสอง ที่มีประสิทธิภาพและยังเป็นอันตราย 1037 00:42:37,050 --> 00:42:39,910 เกี่ยวกับ C เป็นจริงที่คุณ มีการเข้าถึงอิสระ 1038 00:42:39,910 --> 00:42:45,910 เพื่อความสมบูรณ์ของหน่วยความจำโปรแกรมของคุณ หรือไบต์หรือแรมมากขึ้นโดยเฉพาะ 1039 00:42:45,910 --> 00:42:49,510 >> ดังนั้นแม้ว่าชื่อของ Zamyla เป็นเพียงหกตัวอักษรยาว 1040 00:42:49,510 --> 00:42:51,450 ฉันยังคงสามารถไปได้ทุกที่ ในความทรงจำที่ฉันต้องการ 1041 00:42:51,450 --> 00:42:53,491 และเป็นกันถ้าคุณได้ เคยอ่านบทความบางส่วน 1042 00:42:53,491 --> 00:42:55,610 ในช่วงหลายปีเกี่ยวกับบางส่วน เซิร์ฟเวอร์หรือโปรแกรมบางอย่าง 1043 00:42:55,610 --> 00:42:58,654 ได้รับรอยแตกหรือ hacked ที่ นำประโยชน์จากบางสิ่งบางอย่าง 1044 00:42:58,654 --> 00:43:00,820 ที่เรียกว่าหน่วยความจำล้น ใช้ประโยชน์จากการที่เราจะเป็นจริง 1045 00:43:00,820 --> 00:43:04,970 พูดคุยเกี่ยวกับในช่วงไม่กี่สัปดาห์ที่ผ่านมาว่าเป็น โดยทั่วไปหมายถึงการหลอกล่ออย่างใด 1046 00:43:04,970 --> 00:43:09,090 ลงในคอมพิวเตอร์ไปด้วยดี เกินขอบเขตของหน่วยความจำ 1047 00:43:09,090 --> 00:43:11,410 ว่าควรจะมีแล้ว หาบางสิ่งบางอย่างฉ่ำ 1048 00:43:11,410 --> 00:43:13,530 ในการที่ memory-- รหัสผ่านบางทีวิธี 1049 00:43:13,530 --> 00:43:16,990 ในการหลีกเลี่ยงบางหมายเลขซีเรียล ตรวจสอบหรือเพียงแค่ความสามารถทั่วไป 1050 00:43:16,990 --> 00:43:20,360 เพื่อหลอกลวงให้คอมพิวเตอร์ที่รัน รหัสที่ไม่ได้ตั้งใจ 1051 00:43:20,360 --> 00:43:22,360 แต่ขอกลับไปมา ความเป็นจริงเพื่อรอสักครู่ 1052 00:43:22,360 --> 00:43:24,550 ที่โปรแกรมนี้คือ ดำเนินการกับ strlen, 1053 00:43:24,550 --> 00:43:26,110 และแนะนำสิ่งหนึ่งที่นี่ 1054 00:43:26,110 --> 00:43:30,030 มีอะไรใหม่ในหมู่เหล่านี้สามบรรทัดบน? 1055 00:43:30,030 --> 00:43:30,910 >> ดังนั้นจุดชมสตริง 1056 00:43:30,910 --> 00:43:35,490 มันจะเปิดออกมีห้องสมุดนี้เรียกว่า String Dot H หรือห้องสมุดสตริง 1057 00:43:35,490 --> 00:43:38,490 ที่มีไฟล์ส่วนหัวเพื่อที่จะพูด เป็นจุดชมสตริงที่ทำให้ผม 1058 00:43:38,490 --> 00:43:40,860 การเข้าถึงฟังก์ชั่นนี้ strlen 1059 00:43:40,860 --> 00:43:43,841 ถ้าผมเอาว่าเป็นคอมไพเลอร์ จะตะโกนมาที่ผมในบางรูปแบบ 1060 00:43:43,841 --> 00:43:44,590 แต่คุณรู้อะไรไหม 1061 00:43:44,590 --> 00:43:46,090 ตอนนี้ขอ nuanced จริงๆ 1062 00:43:46,090 --> 00:43:50,820 ในบรรทัดที่ 22 มีบางสิ่งบางอย่างชนิด ของ inefficient-- ออกแบบมาไม่ดี 1063 00:43:50,820 --> 00:43:53,990 arguably-- เกี่ยวกับสายของรหัสนี้ 1064 00:43:53,990 --> 00:43:56,280 คิดว่ากลับไปว่า สำหรับวงจะดำเนินการ 1065 00:43:56,280 --> 00:44:00,140 และสิ่งที่เกิดขึ้นอีกครั้งขั้นตอนและ อีกครั้งและ again-- เริ่มต้นที่ 1066 00:44:00,140 --> 00:44:04,110 สภาพรหัสว่า ได้รับการดำเนินการแล้วที่เพิ่มขึ้น 1067 00:44:04,110 --> 00:44:07,880 หรือการเปลี่ยนแปลงแล้วสภาพ แล้วรหัสที่แล้วการเปลี่ยนแปลงแล้ว 1068 00:44:07,880 --> 00:44:11,280 สภาพแล้วรหัส แล้วการเปลี่ยนแปลงและอื่น ๆ 1069 00:44:11,280 --> 00:44:15,320 ดังนั้นสิ่งที่อาจจะเล็ก ๆ น้อย ๆ ที่น่าเป็นห่วงหรือทำไม่ดีที่นี่? 1070 00:44:15,320 --> 00:44:16,387 ใช่สีฟ้า 1071 00:44:16,387 --> 00:44:18,220 ผู้ชม: strlen เป็น เรียกว่าหลาย ๆ ครั้ง 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 ลำโพง 1: ใช่ 1074 00:44:21,320 --> 00:44:23,700 strlen ดังนั้นจะเรียกว่า หลายต่อหลายครั้ง แต่สิ่งที่เป็น 1075 00:44:23,700 --> 00:44:27,113 ความยาวของชื่อ Zamyla ของ ครั้งแรกที่วงรัน? 1076 00:44:27,113 --> 00:44:27,860 >> ผู้ชม: หก 1077 00:44:27,860 --> 00:44:28,110 >> ลำโพง 1: หก 1078 00:44:28,110 --> 00:44:30,976 ดีสิ่งที่มีความยาวของชื่อของเธอ เป็นครั้งที่สองรหัสรัน? 1079 00:44:30,976 --> 00:44:31,432 >> ผู้ชม: หก 1080 00:44:31,432 --> 00:44:31,890 >> ลำโพงที่ 1: สิทธิทั้งหมด 1081 00:44:31,890 --> 00:44:32,720 ก็ยังคงหก 1082 00:44:32,720 --> 00:44:33,220 ใช่มั้ย? 1083 00:44:33,220 --> 00:44:35,260 ชื่อ Zarla มีไม่ได้ การเปลี่ยนแปลงแม้ว่าฉันกำลังมองหา 1084 00:44:35,260 --> 00:44:38,240 ที่เพียงส่วนหนึ่งของตัวอักษรในชื่อของเธอ 1085 00:44:38,240 --> 00:44:41,349 และเพื่อให้ความจริงที่ว่าฉันได้อย่างมีประสิทธิภาพ ถามคำถามนี้สิ่งที่ 1086 00:44:41,349 --> 00:44:44,640 ความยาวของ Zamyla สิ่งที่เป็นความยาว ของ Zamyla สิ่งที่ความยาวของ Zamyla ที่ 1087 00:44:44,640 --> 00:44:47,990 หกครั้งที่แยกต่างหากหรือ เจ็ดแม้โง่เพียง 1088 00:44:47,990 --> 00:44:50,390 เพราะนั่นคือคำตอบที่ไม่มีการเปลี่ยนแปลง 1089 00:44:50,390 --> 00:44:53,550 และเพื่อให้สิ่งที่ฉันสามารถทำได้จริง ทำคือ this-- ในสายหนึ่ง 1090 00:44:53,550 --> 00:44:55,680 ฉันมีรุ่นที่ดีกว่าเล็กน้อยที่นี่ 1091 00:44:55,680 --> 00:45:00,110 There-- สตริง whoops-- สองฉันมี รุ่นที่ดีกว่าเล็กน้อยนั้น 1092 00:45:00,110 --> 00:45:05,010 ฉันทำ this-- แทนเพียง ฉันเริ่มต้นเป็น 0, ฉันยังด้วยเครื่องหมายจุลภาค 1093 00:45:05,010 --> 00:45:07,990 ประกาศตัวแปรที่สองเรียกว่า n-- ผมไม่ได้กล่าว int อีกครั้ง 1094 00:45:07,990 --> 00:45:09,220 ฉันไม่ควรในความเป็นจริง 1095 00:45:09,220 --> 00:45:10,380 แต่เราบอก n 1096 00:45:10,380 --> 00:45:13,610 แล้วฉันจะเริ่มต้น n strlen ของ n เพื่อให้ในขณะนี้ 1097 00:45:13,610 --> 00:45:17,110 กี่ครั้งไม่ strlen ได้รับการดำเนินการทั้งหมด? 1098 00:45:17,110 --> 00:45:17,610 เพียงครั้งเดียว. 1099 00:45:17,610 --> 00:45:20,257 ดังนั้นนี่คือสิ่งที่เราหมายถึง ก่อนหน้านี้เกี่ยวกับการออกแบบที่ดีขึ้น 1100 00:45:20,257 --> 00:45:23,090 ที่จริงครั้งเดียวรหัสของคุณถูกต้อง จะกลับคิดผ่าน 1101 00:45:23,090 --> 00:45:26,820 ฉันใช้น้อย หน่วยความจำหรือเป็นไม่กี่วินาที 1102 00:45:26,820 --> 00:45:30,409 หรือมิลลิวินาทีของเวลาที่เครื่องคอมพิวเตอร์เป็น เป็นไปได้ที่จะใช้ปัญหาบางอย่าง? 1103 00:45:30,409 --> 00:45:32,200 และฉันจะเลื่อน และเพียงแค่พูดถึง 1104 00:45:32,200 --> 00:45:34,283 ที่มีการกล่าวถึงนี้ ของโมฆะในรุ่นนี้ 1105 00:45:34,283 --> 00:45:36,390 แต่เราจะกลับมาก่อนที่จะยาว 1106 00:45:36,390 --> 00:45:41,010 เพราะตอนนี้ลองมาดู ในที่นี้จะนำเราไป 1107 00:45:41,010 --> 00:45:44,110 ดังนั้นหนึ่งก็ปรากฎว่า ตอนนี้ที่เรามีความสามารถใน 1108 00:45:44,110 --> 00:45:46,860 จะมองไปที่ตัวละครของแต่ละบุคคล เราสามารถใช้ประโยชน์จากสิ่งที่ 1109 00:45:46,860 --> 00:45:50,807 จากสัปดาห์ที่ 0 ที่เป็นความลับมากและ การเรียงลำดับของน่าทึ่งในเวลา 1110 00:45:50,807 --> 00:45:53,390 แต่ในขณะนี้และโดยเฉพาะอย่างยิ่งเมื่อเรา จะได้รับการเข้ารหัสในรอบสัปดาห์ 1111 00:45:53,390 --> 00:45:54,820 มันเป็นไปได้ที่มีประสิทธิภาพสวย 1112 00:45:54,820 --> 00:45:57,450 ปรากฎว่ามีบางส่วน ข้อมูล types-- ints และลอย 1113 00:45:57,450 --> 00:46:00,300 และตัวอักษรและสตริงและ อื่น ๆ things-- บางคน 1114 00:46:00,300 --> 00:46:02,800 สามารถแปลงได้อย่างง่ายดายมากไปยังอีก 1115 00:46:02,800 --> 00:46:05,840 >> ตัวอย่างเช่นเมื่อเราได้พูดคุย เกี่ยวกับ ASCII บางครั้ง ago-- นี่ 1116 00:46:05,840 --> 00:46:07,796 ตัวอักษรทุน ผ่านเอ็ม, จุดจุด 1117 00:46:07,796 --> 00:46:12,530 dot-- ที่เรากล่าวว่ามีการทำแผนที่ ระหว่างตัวอักษรและตัวเลขเหล่านี้ 1118 00:46:12,530 --> 00:46:14,970 และในความเป็นจริงก็ถือเป็นจริง สำหรับตัวพิมพ์เล็กได้เป็นอย่างดี 1119 00:46:14,970 --> 00:46:17,470 ตัวพิมพ์เล็กเป็น 97 ทุนคือ 65 1120 00:46:17,470 --> 00:46:20,860 และมีตัวเลขใน ASCII ที่ ซึ่งเป็นเพียงการทำแผนที่นี้ 1121 00:46:20,860 --> 00:46:23,240 ระบบทั้งหมดของตัวอักษรอื่น ๆ เหล่านั้น 1122 00:46:23,240 --> 00:46:25,030 ดังนั้นสิ่งที่หมายความว่า? 1123 00:46:25,030 --> 00:46:28,390 ดีฉันจะไปข้างหน้าและเปิดกว้าง บางสิ่งบางอย่างที่แท้จริงได้อย่างรวดเร็วเรียกว่า 1124 00:46:28,390 --> 00:46:31,240 ASCII 0 ซึ่งส่วนใหญ่เป็นความคิดเห็น 1125 00:46:31,240 --> 00:46:33,860 และอีกครั้งออนไลน์ที่คุณสามารถเสมอ ได้อย่างรวดเร็วผ่านการแสดงความคิดเห็น 1126 00:46:33,860 --> 00:46:36,180 >> และดูสิ่งที่ นี้จะไปทำ 1127 00:46:36,180 --> 00:46:38,410 ดังนั้นก็มีฟังก์ชั่นหลัก 1128 00:46:38,410 --> 00:46:41,490 ฉันได้ยากรหัสตัวเลขเพียงสำหรับ ตอนนี้เพราะผมรู้ว่าสิ่งที่ฉันทำ 1129 00:46:41,490 --> 00:46:42,950 ฉันรู้ว่าฉันต้องการที่จะเห็นที่นี่ 1130 00:46:42,950 --> 00:46:45,220 และฉันได้เริ่มต้นฉันถึง 65 1131 00:46:45,220 --> 00:46:48,490 และฉันนับ ผ่าน 26 ตัวอักษรรวม 1132 00:46:48,490 --> 00:46:52,990 และสิ่งที่ฉันจะ พิมพ์เส้นหนึ่งที่เวลา 1133 00:46:52,990 --> 00:46:54,930 ถ้าคุณสามารถแปลความหมาย นี้เน้นเส้น? 1134 00:46:54,930 --> 00:46:55,970 สิ่งที่ได้รับพิมพ์? 1135 00:46:55,970 --> 00:46:56,797 ใช่ 1136 00:46:56,797 --> 00:46:57,264 >> ผู้ชม: คุณจะ พิมพ์ตัวอักษรที่ 1137 00:46:57,264 --> 00:46:59,805 สอดคล้องกับแผนที่ของ ค่าตัวอักษรและค่าจำนวนเต็ม? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 ลำโพงที่ 1: ว่า 1140 00:47:01,990 --> 00:47:04,740 ฉันจะพิมพ์ตัวอักษร ที่สอดคล้องกับค่าจำนวนเต็มที่ 1141 00:47:04,740 --> 00:47:06,131 และในทางกลับกันดังต่อไปนี้ 1142 00:47:06,131 --> 00:47:08,880 อย่างนี้บางคนกล่าวว่าก่อนหน้านี้ เป็นเพียงตัวยึดสำหรับถ่าน 1143 00:47:08,880 --> 00:47:09,490 มันก็ยังคงเป็น 1144 00:47:09,490 --> 00:47:12,280 นี้แน่นอนเป็นตัวยึด สำหรับ int-- ไม่บรรทัดใหม่ 1145 00:47:12,280 --> 00:47:18,140 และตอนนี้สังเกตเห็นค่าแรกของฉันที่ ฉันเสียบสำหรับตัวยึดที่ 1146 00:47:18,140 --> 00:47:22,320 ไม่ได้เป็นเพียงครั้งที่ฉันพูด ในวงเล็บผมถ่าน, 1147 00:47:22,320 --> 00:47:26,700 ซึ่งสอดเป็นถ่าน บอกคอมไพเลอร์, การรักษาผม 1148 00:47:26,700 --> 00:47:28,490 ไม่เป็นสิ่งที่มันเป็นซึ่งเป็นตัวเลข 1149 00:47:28,490 --> 00:47:30,490 รักษามันเป็นตัวละครที่เกิดขึ้นจริง 1150 00:47:30,490 --> 00:47:34,490 ในขณะที่ค่าที่สองที่ฉันเสียบ in-- I-- ก็ควรจะเป็นตัวเลข 1151 00:47:34,490 --> 00:47:38,140 >> ดังนั้นถ้าผมรวบรวม program-- นี้ ดังนั้นนี่คือทำให้ ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 ASCII เฉือนจุด 0-- ฉันเพิ่งได้รับ แผนภูมินี้เล็ก ๆ น้อย ๆ ที่มีประโยชน์ที่ 1153 00:47:41,720 --> 00:47:44,950 แสดงให้เห็นฉันทั้งหมดที่เป็นไปได้ แมปโดยไม่ต้องคิดว่ามัน 1154 00:47:44,950 --> 00:47:46,450 ผ่านหรือคิดออกด้วยตัวเอง 1155 00:47:46,450 --> 00:47:48,783 และฉันยังพิมพ์ออก สังเกตตัวอักษรตัวพิมพ์เล็ก 1156 00:47:48,783 --> 00:47:51,410 เพราะไม่กี่บรรทัดต่อมาที่ผม ยังพิมพ์ออกมาทำแผนที่นี้ 1157 00:47:51,410 --> 00:47:53,737 เช่นกันซึ่งเป็นเพียงการ บอกว่าเมื่อคุณเข้าใจ 1158 00:47:53,737 --> 00:47:55,570 สิ่งที่เกิดขึ้นภายใต้ เครื่องดูดควันที่คุณสามารถ 1159 00:47:55,570 --> 00:47:57,111 โดยอัตโนมัติแปลงไปมา 1160 00:47:57,111 --> 00:48:00,160 และในความเป็นจริงถ้าใด ๆ ของคุณ ที่เคยทำอย่างนี้ในโรงเรียนประถมศึกษา 1161 00:48:00,160 --> 00:48:03,490 หรือได้ยินเกี่ยวกับคน mythically การบันทึก 1162 00:48:03,490 --> 00:48:05,620 และผ่านไปของเขา หรือเพื่อนของเธอในชั้นเรียน 1163 00:48:05,620 --> 00:48:08,300 แต่คุณมีสัญญาณรบกวน โดยตัวอักษรที่ชอบกลายเป็น B, 1164 00:48:08,300 --> 00:48:11,240 และกลายเป็น B C หรือบางสิ่งบางอย่าง ที่มีความซับซ้อนมากขึ้นกว่าที่ดี 1165 00:48:11,240 --> 00:48:13,410 วิธีการที่คุณจะไปเกี่ยวกับ การดำเนินการที่เป็นเด็ก? 1166 00:48:13,410 --> 00:48:16,340 ดีที่คุณเพียงแค่ชนิดของทราบ จะกลาย B, B จะกลายเป็นซี 1167 00:48:16,340 --> 00:48:19,700 แต่ทางคณิตศาสตร์ สิ่งที่เด็กที่ทำอะไร 1168 00:48:19,700 --> 00:48:22,050 สิ่งที่คุณได้รับการเพิ่มตัวอักษรแต่ละตัว? 1169 00:48:22,050 --> 00:48:23,340 ได้อย่างมีประสิทธิภาพ 1 1170 00:48:23,340 --> 00:48:27,740 >> ดังนั้นเมื่อคุณเปลี่ยน A ไป B ที่ ชนิดเช่นการเปลี่ยนแปลง 65-66, 1171 00:48:27,740 --> 00:48:29,590 ซึ่งทางคณิตศาสตร์หมายถึงเพียงแค่เพิ่ม 1 1172 00:48:29,590 --> 00:48:33,300 ดังนั้นถ้าคุณมีการดำเนินการ เทคนิคเล็ก ๆ น้อย ๆ ที่หลอกลวง 1173 00:48:33,300 --> 00:48:36,380 สำหรับครูของคุณในรหัสคุณ อาจจะทำตรงนั้นเพียง 1174 00:48:36,380 --> 00:48:38,552 โดยการเพิ่มตัวอักษรเดียวร่วมกัน 1175 00:48:38,552 --> 00:48:40,260 ดังนั้นก่อนที่จะยาวเรา จะไปดูวิธีการที่เรา 1176 00:48:40,260 --> 00:48:43,300 สามารถใช้ประโยชน์จากการที่จริง การแย่งชิงอย่างแท้จริงและถอดรหัส 1177 00:48:43,300 --> 00:48:43,991 ข้อมูล. 1178 00:48:43,991 --> 00:48:47,240 ในขณะที่รู้ว่าเราได้เริ่มต้น ที่จะแนะนำห้องสมุดอื่น ๆ คู่ 1179 00:48:47,240 --> 00:48:48,990 here-- สตริงหนึ่งวันนี้ 1180 00:48:48,990 --> 00:48:51,180 และเว็บไซต์ที่เป็นประโยชน์มาก หวังว่าคุณจะได้พบกับ 1181 00:48:51,180 --> 00:48:55,010 เรียกว่า reference.cs50.net ซึ่ง พนักงานการเรียนการสอนได้ใส่กัน 1182 00:48:55,010 --> 00:48:57,510 เพื่อที่ว่าถ้าคุณต้องการที่จะ เงยหน้าขึ้นมองว่า strlen งาน 1183 00:48:57,510 --> 00:48:59,300 คุณสามารถเริ่มต้นการพิมพ์ ชื่อฟังก์ชั่นของ 1184 00:48:59,300 --> 00:49:02,890 คลิก strlen มีแล้ว คำอธิบายน้อยสบาย 1185 00:49:02,890 --> 00:49:03,700 จะไปปรากฏ 1186 00:49:03,700 --> 00:49:06,880 หรือถ้าคุณต้องการอย่างเป็นทางการ คำอธิบาย Linux-based, 1187 00:49:06,880 --> 00:49:08,945 คุณสามารถคลิกที่สะดวกสบายมากขึ้น ที่ด้านบนขวาและมัน 1188 00:49:08,945 --> 00:49:12,070 จะนำเสนอข้อมูลเดียวกัน แต่ในแง่ความซับซ้อนมากขึ้น 1189 00:49:12,070 --> 00:49:15,070 นั่นเป็นทรัพยากรที่มีประโยชน์ในการ จริงรู้ว่าสิ่งที่ทุกอย่างจะ 1190 00:49:15,070 --> 00:49:17,320 >> ครั้งต่อไปที่เราจะไป ดูที่โอวัลติ 1191 00:49:17,320 --> 00:49:20,070 และมากขึ้นและแนะนำตัวเอง สู่โลกของการเข้ารหัส 1192 00:49:20,070 --> 00:49:21,930 ก่อนหน้านั้นเราจะเห็น คุณในภายหลังในสัปดาห์นี้ 1193 00:49:21,930 --> 00:49:23,390 และตอนนี้การตัดสินใจที่อ็อกเดน 1194 00:49:23,390 --> 00:49:26,730 เห็นคุณในวันพุธที่ 1195 00:49:26,730 --> 00:49:30,216 >> [เล่นเพลง] 1196 00:49:30,216 --> 00:49:33,702 >> [เล่นเพลง] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> ลำโพง 1: อะไร [แหลม] คุณจะทำอะไร? 1199 00:49:42,200 --> 00:49:45,720 >> ลำโพงที่ 1: ฉันกินขนมของฉันได้อย่างไร 1200 00:49:45,720 --> 00:49:47,160 จะทำอย่างไรที่คุณกินมันได้หรือไม่ 1201 00:49:47,160 --> 00:49:47,860 ด้วยมือของคุณ? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [เล่นเพลง] 1204 00:49:57,940 --> 00:50:03,453