1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> ศาสตราจารย์: ดังนั้นวาระการ สัปดาห์นี้ไม่ได้หมายความว่าสิ่งที่มาก 3 00:00:09,790 --> 00:00:12,801 แต่หวังว่ามากที่เป็นประโยชน์มาก และที่เกี่ยวข้องกับพวกคุณในสัปดาห์นี้ 4 00:00:12,801 --> 00:00:15,550 แต่เรากำลังจะใช้จ่ายอาจจะ 15 20 นาทีเพียงแค่การพูดคุยได้อย่างรวดเร็ว 5 00:00:15,550 --> 00:00:17,370 เกี่ยวกับรายการการเชื่อมโยง 6 00:00:17,370 --> 00:00:19,694 รายการการเชื่อมโยงจะไป ได้รับการคุ้มครองในการตอบคำถาม 7 00:00:19,694 --> 00:00:22,610 ดังนั้นบางทีมันอาจจะเป็นประโยชน์มาก ที่จะเรียนรู้เกี่ยวกับสิ่งที่บิตที่เป็น 8 00:00:22,610 --> 00:00:25,210 >> เรากำลังจะไปใช้จ่ายมากมาย ส่วนใหญ่ของวันนี้ 9 00:00:25,210 --> 00:00:27,640 จะไปตอบคำถามที่ศูนย์ปัญหาการปฏิบัติ 10 00:00:27,640 --> 00:00:30,970 และจากนั้นเราจะประหยัดอาจจะ 20, 30 นาที ในตอนท้ายสำหรับคำถามที่เอ้อระเหยใด ๆ 11 00:00:30,970 --> 00:00:32,850 ใครมี 12 00:00:32,850 --> 00:00:34,610 >> แล้วสุดท้าย ห้านาทีฉันจะ 13 00:00:34,610 --> 00:00:36,467 เพื่อให้เครื่องสูบน้ำขึ้นมาสำหรับการพูดแบบทดสอบ 14 00:00:36,467 --> 00:00:38,050 พวกคุณทุกคนต้องการที่จะอยู่ที่นี่ว่า 15 00:00:38,050 --> 00:00:39,591 เพราะมันจะเป็นช่วงเวลาที่ดี 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> สิ่งที่ถูกต้องดังนั้นบาง วัสดุที่อยู่ในรายชื่อการเชื่อมโยง 18 00:00:49,230 --> 00:00:52,620 วิธีที่พวกเขากำลังมีโครงสร้างโดยทั่วไปคือ คุณมีสิ่งที่เรียกว่าโหนดใช่มั้ย? 19 00:00:52,620 --> 00:00:54,870 คุณมีสิ่งเหล่านี้เรียกว่า โหนดซึ่งเป็น structs 20 00:00:54,870 --> 00:00:57,360 ฉันจะไปกว่าวิธีการสร้าง โหนดในภาพนิ่งถัดไป 21 00:00:57,360 --> 00:01:00,680 แต่เป็นหลักทั้งหมดที่เชื่อมโยง รายการเป็นข้อมูลที่ 22 00:01:00,680 --> 00:01:03,340 ได้รับเครียดกันผ่านตัวชี้ 23 00:01:03,340 --> 00:01:09,110 >> และเพื่อให้ได้เปรียบที่เรามี ของการใช้รายการที่เชื่อมโยงไป 24 00:01:09,110 --> 00:01:11,280 บางทีอาจจะเป็นเช่นเดียวกับอาร์เรย์คือ ความจริงที่ว่าในอาร์เรย์ 25 00:01:11,280 --> 00:01:15,000 คุณจำเป็นต้องใช้บล็อกติดกันของ หน่วยความจำในสถานที่เดียวกันอย่างใดอย่างหนึ่ง 26 00:01:15,000 --> 00:01:16,870 หลังจากที่อื่นเพื่อให้สามารถที่จะมี 27 00:01:16,870 --> 00:01:20,200 ในขณะที่รายการที่เชื่อมโยงที่คุณสามารถทำได้ มีบิตน้อยสุ่มของหน่วยความจำ 28 00:01:20,200 --> 00:01:23,020 ทั่วทุกมุมคอมพิวเตอร์ของคุณ เครียดกันโดยชี้ 29 00:01:23,020 --> 00:01:26,270 >> และด้วยวิธีนี้คุณ สามารถเข้าถึงข้อมูล 30 00:01:26,270 --> 00:01:28,610 ที่มาหนึ่งหลังจากที่ อื่น ๆ หลังจากที่อื่น ๆ 31 00:01:28,610 --> 00:01:32,720 โดยไม่จำเป็นต้องเป็นเพียงก้อนใหญ่ของ หน่วยความจำในคอมพิวเตอร์ของคุณบาง 32 00:01:32,720 --> 00:01:35,910 ดังนั้นนี้เป็นหนึ่งในที่สำคัญ เหตุผลที่ว่าทำไมเราใช้รายการการเชื่อมโยง 33 00:01:35,910 --> 00:01:40,300 >> ประการที่สองมันเป็นเรื่องง่ายมากที่จะแบบไดนามิก ปรับขนาดรายการที่ลิงค์เพราะในอาร์เรย์ 34 00:01:40,300 --> 00:01:44,720 เมื่อคุณประกาศอาร์เรย์ คุณมีค่าบางชุด 35 00:01:44,720 --> 00:01:47,340 สมมติว่าผมต้องการที่จะสร้าง อาร์เรย์ของจำนวนเต็ม 10 36 00:01:47,340 --> 00:01:49,970 ฉันสร้างอาร์เรย์ของ 10 จำนวนเต็มและที่มัน 37 00:01:49,970 --> 00:01:50,580 มันเป็น 10 38 00:01:50,580 --> 00:01:52,038 ผมไม่ทราบว่าสิ่งที่ต้องทำหลังจากนั้น 39 00:01:52,038 --> 00:01:53,680 ถ้าผมอยากจะทำให้มัน 11 ไม่สามารถทำมันได้ 40 00:01:53,680 --> 00:01:55,710 ถ้าผมต้องการให้มัน 9 ไม่สามารถทำมันได้ 41 00:01:55,710 --> 00:01:59,910 >> ในขณะที่อยู่ในรายชื่อการเชื่อมโยงที่คุณสามารถเพิ่มและ ลบและใส่ทุกที่ที่คุณต้องการ 42 00:01:59,910 --> 00:02:04,940 คุณสามารถปรับขนาดแบบไดนามิกของคุณ โครงสร้างที่นี่โครงสร้างข้อมูลของคุณ 43 00:02:04,940 --> 00:02:08,370 และที่ให้เรามาก เพิ่มความยืดหยุ่นมากขึ้น 44 00:02:08,370 --> 00:02:11,320 ที่เราทำไม่ปกติ มีกับอาร์เรย์ 45 00:02:11,320 --> 00:02:15,210 >> ทุกคนสับสนในขั้นพื้นฐาน โครงสร้างของวิธีการเชื่อมโยงรายชื่อเป็น 46 00:02:15,210 --> 00:02:17,930 หรือทำไมเราจะต้องใช้มากกว่าหนึ่งอาร์เรย์? 47 00:02:17,930 --> 00:02:20,330 ใช่เราจะไปกว่าในรายละเอียด วิธีการสร้างจริง 48 00:02:20,330 --> 00:02:24,121 แต่นี้เป็นเพียงชนิดของ ความรู้สึกทั่วไปในขณะนี้ 49 00:02:24,121 --> 00:02:24,620 เย็น. 50 00:02:24,620 --> 00:02:28,770 และเพื่อให้อาร์เรย์จะเครียดกัน สิ่งเล็ก ๆ น้อย ๆ เหล่านี้น่ารัก 51 00:02:28,770 --> 00:02:29,960 เรียกว่าโหนด 52 00:02:29,960 --> 00:02:32,210 ทุกโหนดคือเป็นประเภทสมาชิกของโครงสร้าง 53 00:02:32,210 --> 00:02:36,090 โปรดจำไว้ว่า struct คือถ้าคุณต้องการ ที่จะสร้างบางประเภทของตัวแปร 54 00:02:36,090 --> 00:02:39,850 ใน C ที่ไม่ได้อยู่แล้ว อยู่ที่คุณเป็นโปรแกรมเมอร์ 55 00:02:39,850 --> 00:02:42,030 จริงสามารถสร้างตัวเองว่า 56 00:02:42,030 --> 00:02:46,540 >> และเพื่อให้ข้อมูลประเภทนี้ โครงสร้างที่เรียกว่าโหนด 57 00:02:46,540 --> 00:02:50,770 ได้รับการสร้างขึ้นจริงโดยเราว่า ไม่ได้อยู่ใน C ตัวของมันเอง 58 00:02:50,770 --> 00:02:53,150 และวิธีการที่คุณ สร้างหนึ่งคือคุณมี 59 00:02:53,150 --> 00:02:57,170 ส่วนหัวของ struct typedef ที่ คอมไพเลอร์ที่บอกฉัน 60 00:02:57,170 --> 00:02:59,640 เกี่ยวกับการสร้างโครงสร้าง 61 00:02:59,640 --> 00:03:00,830 >> เรากำลังจะชื่อมันว่า "โหนด." 62 00:03:00,830 --> 00:03:03,350 และภายในที่เรากำลังจะ การประกาศตัวแปรใน 63 00:03:03,350 --> 00:03:05,060 ซึ่งจะเก็บค่า 64 00:03:05,060 --> 00:03:09,320 แล้วเรายังจะ มีตัวชี้ที่เรียกว่า "ถัดไป" 65 00:03:09,320 --> 00:03:12,090 ที่ชี้ไปข้างหน้า โหนดในรายการการเชื่อมโยง 66 00:03:12,090 --> 00:03:14,730 และจากนั้นคุณเสร็จสิ้นการที่ออก โดยเพียงแค่การทำซ้ำอีกครั้งเพื่อโหนด 67 00:03:14,730 --> 00:03:17,490 คอมไพเลอร์จะรู้ตกลง นั่นคือจุดสิ้นสุดของ struct ของฉัน 68 00:03:17,490 --> 00:03:22,540 >> และอื่น ๆ ในลักษณะนี้เราชนิด ของการสร้างอาร์เรย์ที่น้อยน่ารัก 69 00:03:22,540 --> 00:03:25,450 ชนิดของสิ่งที่มี คุณค่าและมีตัวชี้ 70 00:03:25,450 --> 00:03:27,757 และคุณสามารถเชื่อมโยงพวกเขาทั้งหมด พร้อมกับคำแนะนำเหล่านั้น 71 00:03:27,757 --> 00:03:30,090 เพื่อให้พวกเขาสามารถเป็นทุกชนิด เครียดกันในห่วงโซ่ 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> เย็น. 74 00:03:34,162 --> 00:03:35,453 คุณสามารถได้ยินเสียงที่ดีขึ้นเล็กน้อยหรือไม่? 75 00:03:35,453 --> 00:03:36,140 >> ผู้ชม: ใช่ 76 00:03:36,140 --> 00:03:38,540 >> ศาสตราจารย์: สิทธิทั้งหมด 77 00:03:38,540 --> 00:03:44,280 ดังนั้นวิธีการที่เป็นคนที่คุณสามารถดูที่ รายการที่เชื่อมโยงโดยทั่วไปมีโครงสร้าง 78 00:03:44,280 --> 00:03:45,500 คือคุณมีหัว 79 00:03:45,500 --> 00:03:49,460 คุณมีค่าหัวซึ่งไม่ได้เป็น ถูกชี้โดยตัวชี้อื่น ๆ 80 00:03:49,460 --> 00:03:53,177 แต่มันจะชี้ไปที่ หรือการอ้างอิงโหนดอื่น 81 00:03:53,177 --> 00:03:56,510 โหนดหลังเป็นไปอ้างอิง โหนดหลังจากนั้นและอื่น ๆ และอื่น ๆ 82 00:03:56,510 --> 00:03:59,170 จนในที่สุดคุณตี ปลายของรายการลิงค์ของคุณ 83 00:03:59,170 --> 00:04:00,980 และคุณก็จะไม่ได้มีตัวชี้มี 84 00:04:00,980 --> 00:04:04,659 >> ดังนั้นคิดว่าเหมือนในห่วงโซ่หรือแม้กระทั่ง ถ้าใด ๆ ของพวกคุณทำให้ผมไม่ทราบว่า 85 00:04:04,659 --> 00:04:06,450 เช่นเดียวกับลูปผลไม้ เมื่อคุณเป็นเล็ก ๆ น้อย ๆ 86 00:04:06,450 --> 00:04:08,590 คุณจะสตริงพวกเขาร่วมกัน และพวกเขาสวมใส่รอบคอของคุณ 87 00:04:08,590 --> 00:04:09,840 คิดว่ามันเป็นสิ่งเดียวที่แน่นอน 88 00:04:09,840 --> 00:04:12,964 คุณมีสิ่งเล็ก ๆ น้อย ๆ เหล่านี้ที่คุณ สตริงสามารถร่วมกันจุดหนึ่งที่ 89 00:04:12,964 --> 00:04:15,291 หลังจากที่มันให้เป็นหนึ่งหลังจากที่ มันและอื่น ๆ และอื่น ๆ 90 00:04:15,291 --> 00:04:17,040 จนกว่าคุณจะมีห่วงโซ่ ของโครงสร้างข้อมูล 91 00:04:17,040 --> 00:04:21,190 ที่คุณสามารถใช้ แต่คุณต้องการ 92 00:04:21,190 --> 00:04:27,370 >> ดังนั้นวิธีการที่ว่านี้เราจะ มักจะแทรกหรือลบ 93 00:04:27,370 --> 00:04:30,020 โหนดใด ๆ จากการเชื่อมโยง รายชื่อแตกต่างกันมาก 94 00:04:30,020 --> 00:04:31,970 ขึ้นอยู่กับที่โหนดที่ 95 00:04:31,970 --> 00:04:34,880 ดังนั้นสำหรับตัวอย่างเช่นเพราะ คำแนะนำอยู่เสมอ 96 00:04:34,880 --> 00:04:38,645 ชี้ไปที่ค่าที่เฉพาะเจาะจง เมื่อคุณลบหรือแทรกโหนด 97 00:04:38,645 --> 00:04:41,770 คุณต้องการที่จะให้แน่ใจว่าตัวชี้ ทั้งหมดชี้ไปที่สิ่งที่ถูกต้อง 98 00:04:41,770 --> 00:04:46,200 >> ดังนั้นหากคุณต้องการที่จะแทรกที่อาจเกิดขึ้น โหนดใหม่ที่มีค่าหนึ่ง 99 00:04:46,200 --> 00:04:48,379 ภายในการเชื่อมโยงที่เรียงลำดับ รายการเราทุกคนรู้ที่นี่ 100 00:04:48,379 --> 00:04:51,170 จากภาพที่ไป ไปในระหว่างหัวและสองใช่มั้ย? 101 00:04:51,170 --> 00:04:52,620 เพราะเหมาะกับที่นั่น 102 00:04:52,620 --> 00:04:59,060 แต่วิธีการที่เราจะทำอย่างนั้น เป็นครั้งแรกโดย dereferencing ชี้ 103 00:04:59,060 --> 00:05:02,160 จากหัวและส่งมาที่หนึ่ง 104 00:05:02,160 --> 00:05:05,040 >> แต่เราเข้ามาของปัญหาที่นี่ 105 00:05:05,040 --> 00:05:08,280 ทุกคนสามารถเห็นสิ่งที่เป็นปัญหา คือถ้าเราจะ dereference แรก 106 00:05:08,280 --> 00:05:10,090 ตัวชี้จากหัวถึงหนึ่งหรือไม่ 107 00:05:10,090 --> 00:05:14,202 ปัญหาสิ่งที่เราอาจจะเป็นถ้าเราพยายาม เพื่อเพิ่มนี้ไปยังด้านหน้าของอาเรย์ของเราหรือไม่ 108 00:05:14,202 --> 00:05:15,409 >> ผู้ชม: [ไม่ได้ยิน] 109 00:05:15,409 --> 00:05:16,200 ศาสตราจารย์: แน่นอน 110 00:05:16,200 --> 00:05:20,000 ดังนั้นที่นี่เรามีตัวชี้ว่าเป็น ที่ครั้งหนึ่งเคยชี้จากหัวถึงสอง 111 00:05:20,000 --> 00:05:23,120 แต่ถ้าคุณได้รับการกำจัดที่ ตัวชี้คุณชี้ไปยังหนึ่ง 112 00:05:23,120 --> 00:05:26,500 ตอนนี้เรามีความคิด ว่าจะไปหาสอง 113 00:05:26,500 --> 00:05:29,850 เพราะที่ผมกล่าวว่าก่อนที่คุณมี ก้อนยักษ์ของหน่วยความจำในเครื่องคอมพิวเตอร์ของคุณ 114 00:05:29,850 --> 00:05:31,860 โหนดทั้งหมดเหล่านี้สามารถทำได้ จะสลับแบบสุ่ม 115 00:05:31,860 --> 00:05:33,350 ในสถานที่ในคอมพิวเตอร์ของคุณ 116 00:05:33,350 --> 00:05:36,140 และคุณไม่ทราบวิธีการ ที่จะไปเกี่ยวกับการหาที่ 117 00:05:36,140 --> 00:05:40,420 >> และเพื่อให้คุณจะต้องมีตัวชี้ ที่ชี้ไปยังโหนดทั้งหมดในตอนท้าย 118 00:05:40,420 --> 00:05:42,420 หรืออื่น ๆ ถ้าคุณตั้งใจ dereference หนึ่ง 119 00:05:42,420 --> 00:05:44,485 โดยไม่กำหนดครั้งแรก ค่าแรก, คุณ 120 00:05:44,485 --> 00:05:47,410 เพียงแค่จะสูญเสีย หลังจากนั้นทุกอย่าง 121 00:05:47,410 --> 00:05:49,720 >> ดังนั้นสิ่งที่เรากำลังจะไป ทำคือคุณจะเป็นครั้งแรก 122 00:05:49,720 --> 00:05:53,270 ต้องการที่จะสร้างตัวชี้บน โหนดที่คุณต้องการแทรก 123 00:05:53,270 --> 00:05:55,270 ชี้ไปที่คุณ ต้องการที่จะใส่ไป 124 00:05:55,270 --> 00:05:59,410 แล้วหลังจากนั้นคุณ สามารถชี้หัวกลับไปที่หนึ่ง 125 00:05:59,410 --> 00:06:02,800 >> ไม่ว่าทำให้ความรู้สึกที่ทุกคนที่นี่? 126 00:06:02,800 --> 00:06:03,346 ที่ดี 127 00:06:03,346 --> 00:06:04,720 คิดว่ามันเป็นเหมือนโซ่ 128 00:06:04,720 --> 00:06:07,420 ถ้าคุณเพิ่มโซ่ มันเป็นชนิดของที่ใช้งานง่าย 129 00:06:07,420 --> 00:06:10,742 วิธีการที่คุณจะไปเกี่ยวกับการใสที่ 130 00:06:10,742 --> 00:06:15,274 >> ตกลงดังนั้นที่เป็นจริงมาก สั้นกว่าที่ฉันคิดว่ามันจะเป็น 131 00:06:15,274 --> 00:06:16,690 พูดชักชวนห้านาทีในรายการการเชื่อมโยง 132 00:06:16,690 --> 00:06:19,960 เพียงเพื่อให้พวกคุณมี ความคิดพื้นฐานของสิ่งที่เป็น 133 00:06:19,960 --> 00:06:23,580 >> ที่นี่เรามีวาระการศูนย์ทดสอบ 134 00:06:23,580 --> 00:06:24,895 อย่าปล่อยให้เรื่องนี้ข่มขู่คุณ 135 00:06:24,895 --> 00:06:26,270 ฉันรู้ว่ามันเป็นข้อมูลจำนวนมาก 136 00:06:26,270 --> 00:06:27,580 มันดูน่ากลัวมาก 137 00:06:27,580 --> 00:06:33,130 นอกจากนี้ยังมีจำนวนมากของผม คิดว่า CSC ชนิดของคำ 138 00:06:33,130 --> 00:06:37,440 สิ่งที่ต้องการสตริงเลขฐานสิบหก ตัวชี้แบบไดนามิกจัดสรรหน่วยความจำ 139 00:06:37,440 --> 00:06:40,120 ทำให้เกิดเสียงเป็นคำที่น่ากลัวมาก 140 00:06:40,120 --> 00:06:42,700 >> แต่เรากำลังจะทำลายพวกเขา ลงทำบางปัญหาการปฏิบัติ 141 00:06:42,700 --> 00:06:44,980 เพื่อให้พวกคุณทุกคน มีความพร้อมสำหรับการทดสอบนี้ 142 00:06:44,980 --> 00:06:47,104 มีกี่คนที่พวกคุณมี เริ่มต้นแล้วการศึกษา? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> ตกลงพวกคุณอาจต้องการ ที่จะเริ่มต้นในการเริ่มต้น 145 00:06:53,670 --> 00:06:56,480 ว่าเพราะแบบทดสอบวันพรุ่งนี้ 146 00:06:56,480 --> 00:06:58,739 หรือพฤหัสบดีสำหรับบางท่าน 147 00:06:58,739 --> 00:07:01,030 ใช่ดังนั้นเรากำลังจะไป มากกว่าปัญหาการปฏิบัติบาง 148 00:07:01,030 --> 00:07:04,600 ถ้าพวกคุณทุกคนต้องการที่จะใช้ ออกแผ่นกระดาษ, ดินสอ 149 00:07:04,600 --> 00:07:07,310 เรากำลังจะไปเพียงแค่ใช้จ่าย ส่วนใหญ่ของส่วนของวันนี้ 150 00:07:07,310 --> 00:07:11,590 จะไปบางส่วนของที่ทำให้พวกคุณมี ความคิดของสิ่งที่คาดหวังในการตอบคำถามที่ 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> ตกลง. 153 00:07:16,890 --> 00:07:19,730 คู่ของจิสติกส์ รายละเอียดเป็นอย่างดีสำหรับทุกคน 154 00:07:19,730 --> 00:07:25,120 ที่ไม่ได้รับการเชื่อมโยงที่มีถ้า คุณจะไป cs50.yale.edu, ด้านหน้า 155 00:07:25,120 --> 00:07:28,566 หน้านี้มีการเชื่อมโยง ที่บอกว่า "เกี่ยวกับแบบทดสอบศูนย์." 156 00:07:28,566 --> 00:07:29,440 การเชื่อมโยงที่จะนำคุณมี 157 00:07:29,440 --> 00:07:31,065 หากคุณยังไม่ได้อ่านมันโปรดอ่านมัน 158 00:07:31,065 --> 00:07:34,470 เพราะมันจะบอกคุณสิ่งที่สำคัญจริงๆ ข้อมูลเกี่ยวกับการตอบคำถาม 159 00:07:34,470 --> 00:07:37,410 >> ฉันจะดึงออกจาก ว่าเพียงเพราะร่างกาย 160 00:07:37,410 --> 00:07:40,200 ถ้าพวกคุณไม่ทราบว่า ที่จะไปเราจะมีปัญหา 161 00:07:40,200 --> 00:07:44,220 และดังนั้นหากครั้งสุดท้ายของคุณในแง่ด้วย จะยังไม่มีให้ไปที่หอประชุมโรงเรียนกฎหมาย 162 00:07:44,220 --> 00:07:47,500 และถ้าจะเริ่มต้นที่ผ่านมาของคุณด้วย P ถึง Z ไปที่หอประชุมเดวีส์ 163 00:07:47,500 --> 00:07:50,240 และนี่จะใช้สำหรับ คนที่อยู่ในส่วนพุธ 164 00:07:50,240 --> 00:07:53,420 >> หากคุณกำลังการตอบคำถามเกี่ยวกับ วันพฤหัสบดีที่คุณไป SSS 114 165 00:07:53,420 --> 00:07:55,078 ที่การบรรยายของคุณมักจะเป็น 166 00:07:55,078 --> 00:07:55,953 ผู้ชม: [ไม่ได้ยิน] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 ศาสตราจารย์โอ้ถึง Z คุณจะ ไปที่หอประชุมเดวีส์ 169 00:08:01,940 --> 00:08:03,273 ฉันจะเปลี่ยนที่ใช่มั้ย? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> เออใช่คุณก็ล้มเหลวโดยอัตโนมัติ 172 00:08:09,698 --> 00:08:11,753 >> โอ้ใช่ว่าคุณคริส 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 ใช่ไม่ดีของฉัน 175 00:08:16,030 --> 00:08:17,610 อ๋อโอถึง Z คุณจะ เพื่อไปที่เดวีส์ Auditorim 176 00:08:17,610 --> 00:08:19,140 ฉันจะแก้ไขปัญหานี้เมื่อฉันอัพโหลด 177 00:08:19,140 --> 00:08:20,320 ใช่. 178 00:08:20,320 --> 00:08:22,160 >> และจากนั้นยังเป็นสิ่ง สิ่งสำคัญที่ใจ 179 00:08:22,160 --> 00:08:25,290 เป็นวันพุธว่าถ้าคุณเป็นอย่างเป็นทางการ ลงทะเบียนเรียนในส่วนของวันพุธ 180 00:08:25,290 --> 00:08:26,832 คุณจะต้องตอบคำถามของคุณในวันพุธที่ 181 00:08:26,832 --> 00:08:29,706 และถ้าคุณลงทะเบียนเรียนในวันพฤหัสบดีที่ คุณจะต้องตอบคำถามของคุณพฤหัสบดี 182 00:08:29,706 --> 00:08:31,000 และมันก็เป็นช่วงเวลาเรียน 183 00:08:31,000 --> 00:08:35,970 ที่ผมคิดว่ามันก็เหมือน 1:00 02:15 ในวันพุธและ 2:30-03:45 184 00:08:35,970 --> 00:08:37,220 ในวันพฤหัสบดี 185 00:08:37,220 --> 00:08:41,710 >> หากคุณมีความขัดแย้งกันไม่ได้, ข้อแก้ตัวของคณบดีเป็นสิ่งเท่านั้น 186 00:08:41,710 --> 00:08:43,030 โชคไม่ดีที่เราสามารถใช้ 187 00:08:43,030 --> 00:08:45,560 เพราะเรามี ส่วนใหญ่ของการร้องขอ 188 00:08:45,560 --> 00:08:47,970 เพื่อสลับไปตั้งแต่วันพุธถึงวันพฤหัสบดี 189 00:08:47,970 --> 00:08:51,265 ที่เราไม่สามารถให้เกียรติเว้นแต่ เรามีการร้องขอของคณบดี 190 00:08:51,265 --> 00:08:52,650 >> ตกลง. 191 00:08:52,650 --> 00:08:57,000 ดังนั้นก่อนที่เราจะเริ่มต้นในการ คู่ของปัญหาการปฏิบัติ 192 00:08:57,000 --> 00:09:00,540 ฉันแค่จะไปกว่า เคล็ดลับที่เป็นประโยชน์ของแอนดี้สำหรับความสำเร็จ 193 00:09:00,540 --> 00:09:04,140 พวกคุณเมื่อคุณศึกษาคุณจริงๆ ต้องการฝึกการเขียนรหัสด้วยมือ 194 00:09:04,140 --> 00:09:07,050 ครั้งแรกที่ผมเคย เอาแบบทดสอบ CS, ผมไม่ได้ 195 00:09:07,050 --> 00:09:09,960 การปฏิบัติที่เขียนรหัสด้วยมือ ก่อนและมันก็เป็นอย่างมาก 196 00:09:09,960 --> 00:09:11,890 ที่น่าตกใจที่ว่ามันเป็นเรื่องยาก 197 00:09:11,890 --> 00:09:16,125 >> เมื่อพวกคุณไม่ได้รับใน นิสัยของการพิมพ์ออกมาทุกอย่าง 198 00:09:16,125 --> 00:09:20,260 มันมาอย่างเป็นธรรมชาติเป็น สามารถที่จะได้ autocompleted 199 00:09:20,260 --> 00:09:22,015 วงเล็บและเครื่องหมายอัฒภาคมี 200 00:09:22,015 --> 00:09:23,890 เมื่อคุณเขียนมันออกมา ด้วยมือบางครั้งก็ 201 00:09:23,890 --> 00:09:27,100 มากง่ายมากที่จะลืมอัฒภาค หรือลืมปิดวงเล็บ 202 00:09:27,100 --> 00:09:30,970 หรือลืมปิดลำไส้ใหญ่ หรือสิ่งที่ต้องการ 203 00:09:30,970 --> 00:09:34,322 >> ดังนั้นเมื่อคุณเขียนโค้ดด้วยมือ มันเป็นความรู้สึกที่แตกต่างกันมาก 204 00:09:34,322 --> 00:09:37,280 ดังนั้นพวกคุณเมื่อคุณกำลังทำงาน ผ่านบางส่วนของปัญหาการปฏิบัติ 205 00:09:37,280 --> 00:09:38,904 มันจะดีในการปฏิบัติจริงในวันนี้ 206 00:09:38,904 --> 00:09:41,770 หรือวันพรุ่งนี้ผมคิดว่าถ้าคุณอยู่ การตอบคำถามในวันพฤหัสบดีที่ 207 00:09:41,770 --> 00:09:45,280 >> ประการที่สองเรามีที่ผ่านมาเช่น มูลค่าแปดปีของการปฏิบัติ 208 00:09:45,280 --> 00:09:47,070 แบบทดสอบออนไลน์ 209 00:09:47,070 --> 00:09:50,759 ตอบคำถามในปีนี้อาจจะเป็น มากคล้ายกับทั้งหมดของพวกเขา 210 00:09:50,759 --> 00:09:51,800 พวกเขากำลังทั้งหมดที่คล้ายกันมาก 211 00:09:51,800 --> 00:09:54,220 ชนิดของคุณได้รับใน รูปแบบของประเภทของคำถาม 212 00:09:54,220 --> 00:09:57,250 ที่เราถามประเภทของ ฟังก์ชั่นที่เราจะเขียนมันใน 213 00:09:57,250 --> 00:09:58,580 และอื่น ๆ ฯลฯ 214 00:09:58,580 --> 00:10:01,980 >> ดังนั้นจะใช้แบบทดสอบทางปฏิบัติ โดยเฉพาะอย่างยิ่งภายใต้ข้อ จำกัด ด้านเวลา 215 00:10:01,980 --> 00:10:05,390 75 นาทีในการทำแบบทดสอบคือ ไม่มากของจำนวนเงินของเวลา 216 00:10:05,390 --> 00:10:07,254 มันมากนานมาก 217 00:10:07,254 --> 00:10:09,670 และเพื่อให้พวกคุณต้องการ เพื่อให้แน่ใจว่าพวกคุณ 218 00:10:09,670 --> 00:10:11,990 ในนิสัยของการเขียน รหัสด้วยมือได้อย่างรวดเร็ว 219 00:10:11,990 --> 00:10:15,070 เพราะคุณไม่ต้องการที่แรก เวลาที่จะเห็นการตอบคำถามของความยาวที่ 220 00:10:15,070 --> 00:10:16,560 จะอยู่ในการตอบคำถามของคุณ 221 00:10:16,560 --> 00:10:20,540 พวกคุณอยากจะให้แน่ใจว่า ที่คุณปฏิบัติก่อน 222 00:10:20,540 --> 00:10:24,550 >> ประการที่สี่คุณต้องการที่จะตรวจสอบ การบรรยายและภาพนิ่งส่วน 223 00:10:24,550 --> 00:10:25,980 คุณไม่จำเป็นต้องที่จะจดจำสิ่งที่ 224 00:10:25,980 --> 00:10:30,430 ที่จริงแล้วทุกคนจะได้รับอนุญาตให้ หนึ่งแผ่นบันทึกกระดาษสีขาว 225 00:10:30,430 --> 00:10:31,090 หน้าและหลัง. 226 00:10:31,090 --> 00:10:32,920 พวกคุณสามารถพิมพ์หรือเขียน 227 00:10:32,920 --> 00:10:37,070 หากคุณพบว่าตัวเองต้องจดจำ อะไรวางมันลงบนแผ่นที่ 228 00:10:37,070 --> 00:10:40,810 >> ฉันรับประกันคุณคุณไม่ต้องการที่จะ จะติดอยู่ในช่วงกลางของการตอบคำถามว่า 229 00:10:40,810 --> 00:10:43,890 เป็นเหมือนโอ้ใช่สิ่งที่ รันไทม์ของการจัดเรียงเมื่อเทียบกับการจัดเรียงที่ว่านี้ 230 00:10:43,890 --> 00:10:46,490 เพียงแค่ใส่มันลงและคัดลอก ตรงจากแผ่นบันทึกย่อของคุณ 231 00:10:46,490 --> 00:10:50,420 จากนั้นคุณสามารถจริงเพียงแค่ใช้ของคุณ สมองจะคิดเกี่ยวกับปัญหาที่เกิดขึ้น 232 00:10:50,420 --> 00:10:52,190 แทนที่จะต้องจำข้อเท็จจริง 233 00:10:52,190 --> 00:10:55,250 และเพื่อใช้ประโยชน์จริงๆ รายละเอียดช่องใด 234 00:10:55,250 --> 00:11:00,140 ที่คุณคิดว่าคุณจะต้องจดจำ ป๋อมมันลงบนแผ่นตรวจสอบ 235 00:11:00,140 --> 00:11:02,680 >> ตกลงคำถามใด ๆ logistically เกี่ยวกับการตอบคำถาม 236 00:11:02,680 --> 00:11:05,510 ก่อนที่เราจะเริ่มต้นบางอย่าง ปัญหาแบบทดสอบปฏิบัติ? 237 00:11:05,510 --> 00:11:06,416 ใช่? 238 00:11:06,416 --> 00:11:10,040 >> ผู้ชม: ฉันไม่ได้มีโอกาส จะมองไปที่การตอบคำถาม [ไม่ได้ยิน] 239 00:11:10,040 --> 00:11:11,757 แต่มันก็เป็นไปได้ แอพลิเคชันส่วนใหญ่ 240 00:11:11,757 --> 00:11:14,090 หรือมีก็ไปได้ เช่นคำถามความรู้? 241 00:11:14,090 --> 00:11:14,940 >> ศาสตราจารย์: มันมาก 242 00:11:14,940 --> 00:11:16,731 ดังนั้นวิธีการที่ฉัน จะอธิบายแบบทดสอบ 243 00:11:16,731 --> 00:11:18,810 is-- ฉันใส่กัน ปัญหาการปฏิบัติ 244 00:11:18,810 --> 00:11:20,960 ที่ผมดึงออกมาจากแบบทดสอบทั้งหมด 245 00:11:20,960 --> 00:11:25,210 แต่คุณจะเห็นว่ามีสองหลัก ประเภทคำถามที่เราจะขอให้คุณ 246 00:11:25,210 --> 00:11:28,750 >> หนึ่งคือรายละเอียดในระดับที่ต่ำมากของสิ่งที่ 247 00:11:28,750 --> 00:11:31,720 เราจะให้เป็นก้อนเล็ก ๆ ของรหัส และกล่าวว่าจะมีข้อผิดพลาดที่นี่? 248 00:11:31,720 --> 00:11:33,110 สิ่งที่จะได้รับการพิมพ์ออกจากที่นี่? 249 00:11:33,110 --> 00:11:35,980 สิ่งที่จะผลิตรหัสนี้และอื่น ๆ 250 00:11:35,980 --> 00:11:38,710 ดังนั้นในระดับที่ต่ำมากรายละเอียดข้อมูล 251 00:11:38,710 --> 00:11:42,700 >> และเมื่อพลิกด้านที่เราจะมีมาก คำถามความรู้ตามระดับสูง 252 00:11:42,700 --> 00:11:45,190 คุณสามารถอธิบายสิ่งที่เป็น ความแตกต่างระหว่างการค้นหาแบบไบนารี 253 00:11:45,190 --> 00:11:46,148 และการค้นหาเชิงเส้นคืออะไร? 254 00:11:46,148 --> 00:11:48,500 ทำไมเราจะต้องการ ใช้หนึ่งในช่วงอื่น ๆ ? 255 00:11:48,500 --> 00:11:49,960 บางทีอาจจะเป็นสิ่งที่เป็น GDB? 256 00:11:49,960 --> 00:11:51,560 ทำไมเราต้องการที่จะใช้ GDB? 257 00:11:51,560 --> 00:11:54,590 ระดับที่สูงขึ้นพื้นฐาน คำถามเข้าใจ 258 00:11:54,590 --> 00:11:58,240 ดังนั้นคุณจะเห็นส่วนผสมของ ทั้งสองของพวกเขาในการตอบคำถามของคุณ 259 00:11:58,240 --> 00:12:01,462 >> สิ่งอื่นก่อนที่เราจะ มุ่งหน้าตรงเข้าไปในมันได้หรือไม่ 260 00:12:01,462 --> 00:12:02,879 ตกลง. 261 00:12:02,879 --> 00:12:03,670 ผู้ชม: อีกหนึ่ง 262 00:12:03,670 --> 00:12:04,030 ศาสตราจารย์: โอ้อีกหนึ่ง 263 00:12:04,030 --> 00:12:04,340 ขอโทษ 264 00:12:04,340 --> 00:12:05,631 >> ผู้ชม: ใช่มันเป็นไร 265 00:12:05,631 --> 00:12:10,140 ดังนั้นคุณกำลังจะบอกว่า 75 นาที สั้นเกินไปเช่นเป็นไปได้ยาก 266 00:12:10,140 --> 00:12:11,640 ว่าเราจะจบ? 267 00:12:11,640 --> 00:12:13,571 หรือเหมือน 75 นาที ตรงตามเวลามาก 268 00:12:13,571 --> 00:12:15,700 ในขณะที่เราจะต้องถ้าเรา เตรียมเหมาะสม? 269 00:12:15,700 --> 00:12:17,450 ศาสตราจารย์: OK ดังนั้น การตอบคำถามเป็นสิ่งที่ท้าทาย 270 00:12:17,450 --> 00:12:19,550 มันเป็นความท้าทายอย่างแน่นอน 271 00:12:19,550 --> 00:12:21,092 คุณจะพบว่าตัวเองในเวลาสั้น 272 00:12:21,092 --> 00:12:24,341 คุณอาจจะตีเช่น 10 15 นาทีที่จะไปและเป็นเหมือนอึ 273 00:12:24,341 --> 00:12:25,520 ฉันไม่เคยมีใครมากที่ต้องทำ 274 00:12:25,520 --> 00:12:26,520 และที่ดีทั้งหมด 275 00:12:26,520 --> 00:12:28,740 ทุกคนจะรู้สึกแบบเดียวกัน 276 00:12:28,740 --> 00:12:31,074 >> เพียงแค่จะตระหนักถึงมาก วิธีการมากเวลาที่คุณมี 277 00:12:31,074 --> 00:12:33,490 และนั่นเป็นเหตุผลที่ผมบอกคุณ พวกคุณทำแบบทดสอบการปฏิบัติ 278 00:12:33,490 --> 00:12:36,672 เพราะมันจริงๆให้ความรู้สึกที่ดี ของสิ่งที่ตอบคำถามเป็นไปได้เช่น 279 00:12:36,672 --> 00:12:39,130 ดังนั้นถ้าคุณพบว่าตัวเองเป็น สามารถที่จะดำเนินการเสร็จสิ้นการปฏิบัติ 280 00:12:39,130 --> 00:12:41,671 แบบทดสอบในปริมาณที่ดีของ เวลาที่คุณสามารถก้าวตัวเองดี 281 00:12:41,671 --> 00:12:45,695 แล้วคุณจะไม่ได้มีปัญหา ในวันพุธหรือพฤหัสบดี 282 00:12:45,695 --> 00:12:46,575 >> เย็น. 283 00:12:46,575 --> 00:12:49,200 ดังนั้นหากทุกคนที่ผมคิดว่า wants-- คนส่วนใหญ่มีแผ่นกระดาษ 284 00:12:49,200 --> 00:12:49,810 ออกมาแล้ว 285 00:12:49,810 --> 00:12:52,604 ฉันจะหลักเพียง ให้คุณตัวอย่างคำถาม 286 00:12:52,604 --> 00:12:54,520 ให้พวกคุณเหมือนเป็น ไม่กี่นาทีที่จะทำพวกเขา 287 00:12:54,520 --> 00:12:59,610 และเราจะไปกว่าเป็นชั้น สิ่งที่คำตอบของพวกเขา 288 00:12:59,610 --> 00:13:02,860 >> ดังนั้นนี่เป็นปกติมาก คำถามต้นเราจะ 289 00:13:02,860 --> 00:13:06,720 ขอให้คุณแปลง ตัวเลขระหว่างฐานที่แตกต่างกัน 290 00:13:06,720 --> 00:13:09,070 Binary เป็นพวกคุณสามารถ การเรียกคืนเป็นฐานสอง 291 00:13:09,070 --> 00:13:12,470 สิบเป็นฐาน 10 หรือสิ่งที่เรา เป็นมนุษย์มักจะตีความ 292 00:13:12,470 --> 00:13:17,120 เลขฐานสิบหกเป็นฐาน 16 ซึ่งเป็นศูนย์ ถึงเก้ารวมทั้งผ่านเอฟ 293 00:13:17,120 --> 00:13:19,990 >> ดังนั้นจึงมีตัวเลขสี่ตัวฉัน ขอให้พวกคุณในการแปลงที่นี่ 294 00:13:19,990 --> 00:13:23,909 ฉันจะให้คุณต้องการสามถึง สี่นาทีที่จะคิดว่าผ่าน 295 00:13:23,909 --> 00:13:25,200 เราจะไปเกี่ยวกับการแก้ปัญหานี้ 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> ผู้ชม: เราได้รับอนุญาตให้เครื่องคิดเลข? 298 00:13:35,710 --> 00:13:37,630 >> ศาสตราจารย์: คุณจะไม่ ต้องคิดเลขใช่ 299 00:13:37,630 --> 00:13:42,420 ผมคิดว่านอกจากพื้นฐานผมคิดว่าเป็น ทั้งหมดที่พวกคุณจะถูกขอให้ทำ 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> เพียงเพื่อให้ชนิดของฉันมีความรู้สึก เมื่อทุกคนจะทำมองขึ้น 302 00:14:45,070 --> 00:14:47,429 คลื่นผมไม่ทราบว่ายิ้ม ดูมีความสุขถ้าคุณกำลังทำ 303 00:14:47,429 --> 00:14:47,929 ใช่. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 บางทีไม่กี่นาที 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> ตกลงให้นำมาไว้ใน 308 00:18:29,600 --> 00:18:31,580 ฉันมีจุดมุ่งหมายที่จะไป ให้พวกคุณใช้เวลาน้อยลง 309 00:18:31,580 --> 00:18:33,760 กว่าที่คุณอาจจะต้อง ทำบางส่วนของปัญหาเหล​​่านี้ 310 00:18:33,760 --> 00:18:37,124 เพียงเพราะผมต้องการที่จะให้แน่ใจว่า เราได้รับผ่านพวงของปัญหาที่เกิดขึ้น 311 00:18:37,124 --> 00:18:39,290 ดังนั้นไม่ต้องกังวลถ้าคุณไม่ได้ มีโอกาสที่จะจบ 312 00:18:39,290 --> 00:18:43,770 ทั้งหมดตกลงตราบใดที่คุณมี ความคิดของวิธีการที่จะไปเกี่ยวกับเรื่องนี้ 313 00:18:43,770 --> 00:18:45,850 ถ้าอย่างนั้นเราไปข้างหน้าและทำครั้งแรกหนึ่ง 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> ดังนั้นก่อนไม่มีใครต้องการที่จะบอกฉัน ในไบนารีสิ่งที่ทำในแต่ละตัวเลขเหล่านี้ 316 00:18:57,870 --> 00:19:00,484 เป็นตัวแทนในแง่ของค่าของพวกเขา? 317 00:19:00,484 --> 00:19:01,250 ใช่? 318 00:19:01,250 --> 00:19:03,349 >> ผู้ชม: สองไป พลังงานเป็นศูนย์ 2-1 319 00:19:03,349 --> 00:19:04,140 ศาสตราจารย์: แน่นอน 320 00:19:04,140 --> 00:19:04,640 ดังนั้น. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> ขวาดังนั้นโดยทั่วไป เมื่อเราอยู่ในฐาน 10 323 00:19:16,430 --> 00:19:20,580 ทั้งหมดเหล่านี้เป็นตัวแทนที่ชอบ 10 ถึงฐานของศูนย์ใช่มั้ย? 324 00:19:20,580 --> 00:19:21,810 นั่นเป็นหนึ่งในสถานที่ของคุณ 325 00:19:21,810 --> 00:19:24,520 ทุกสถานที่ที่ 10 ของคุณจะเป็น 10 ถึงพลังของหนึ่ง 326 00:19:24,520 --> 00:19:26,600 คุณสถานที่ 100 คือ 10 มีอำนาจของทั้งสอง 327 00:19:26,600 --> 00:19:29,570 >> สิ่งที่ฐานคุณอยู่ในที่เกิด จะทำอย่างไรกับสิ่งเดียวที่แน่นอน, 328 00:19:29,570 --> 00:19:31,480 เพียงแค่มีฐานที่แตกต่างกัน 329 00:19:31,480 --> 00:19:34,130 ไบนารีดังนั้นสิ่งที่มีอยู่เป็นฐานสอง 330 00:19:34,130 --> 00:19:37,110 คุณกำลังจะแปลงทั้งหมด ตัวเลขเป็นสองสิ่งที่มีอำนาจ 331 00:19:37,110 --> 00:19:38,190 ของหลักที่ 332 00:19:38,190 --> 00:19:41,450 ดังนั้นในแง่นี้เรา สามารถมีวิธีที่ง่าย 333 00:19:41,450 --> 00:19:43,800 ความสามารถในการเพิ่มขึ้นหรือ สรุปตัวเลขทั้งหมดในการสั่งซื้อ 334 00:19:43,800 --> 00:19:46,010 แปลงเป็นฐาน 10 335 00:19:46,010 --> 00:19:50,362 >> ดังนั้นไม่มีใครต้องการที่จะบอกฉันว่า คำตอบคนแรกที่อยู่ในฐานสิบ? 336 00:19:50,362 --> 00:19:51,674 >> ผู้ชม: สอง [ไม่ได้ยิน] 337 00:19:51,674 --> 00:19:52,340 ศาสตราจารย์: ใช่ 338 00:19:52,340 --> 00:19:53,230 ผู้ชม: 42 339 00:19:53,230 --> 00:19:56,560 ศาสตราจารย์: 42, มีคุณไป 340 00:19:56,560 --> 00:20:00,660 ดังนั้นวิธีการที่เราได้คำตอบนี้โดย ทำสองครั้งแรกซึ่งเป็นสอง 341 00:20:00,660 --> 00:20:02,760 บวกสองที่สามซึ่งเป็นแปด 342 00:20:02,760 --> 00:20:07,590 พลัสสองถึงห้าซึ่ง เป็นสิ่งที่เหลือ 343 00:20:07,590 --> 00:20:09,390 คุณรวมพวกเขาและมันเป็น 42 344 00:20:09,390 --> 00:20:12,000 >> ใครสับสนเกี่ยวกับวิธีการที่เราได้ที่? 345 00:20:12,000 --> 00:20:15,630 นอกจากพื้นฐานดังนั้นเช่น ผมบอกว่าคุณควรจะตกลง 346 00:20:15,630 --> 00:20:17,410 ถ้าไม่ดีเราสามารถฝึกที่มากเกินไป 347 00:20:17,410 --> 00:20:18,720 แต่นั่นคือทั้งหมดที่ด้านขวา 348 00:20:18,720 --> 00:20:20,560 เย็น. 349 00:20:20,560 --> 00:20:25,570 >> ไม่มีใครต้องการที่จะให้ฉัน ตอบคนที่สองได้เป็นอย่างดี? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 ดี. 352 00:20:27,600 --> 00:20:30,044 ทุกคนเกิดความสับสนเกี่ยวกับวิธีการ เราได้ที่ใด? 353 00:20:30,044 --> 00:20:31,960 เย็นฉันจะมี คำตอบเกี่ยวกับภาพนิ่งถัดไป 354 00:20:31,960 --> 00:20:34,440 ดังนั้นไม่ต้องกังวลถ้าคุณ ต้องคัดลอกมันลง 355 00:20:34,440 --> 00:20:38,860 >> ตกลงดังนั้นเลขฐานสิบหกเป็นบิต trickier 356 00:20:38,860 --> 00:20:41,840 แต่ฉันจะแสดงให้พวกคุณ ทางลัดสำหรับวิธีการที่จะทำมัน 357 00:20:41,840 --> 00:20:44,800 ดังนั้นเลขฐานสิบหกเป็นคุณ จำไว้ว่าทั้งหมดมันเป็น 16 358 00:20:44,800 --> 00:20:48,920 และเนื่องจากเราเป็นมนุษย์ไม่จริง มีหมายเลข 16 ที่จะเป็นตัวแทนที่ 359 00:20:48,920 --> 00:20:56,940 ที่เราจะไปจากศูนย์ถึงเก้าซึ่งเป็นครั้งแรกของเรา 10 ค่าและจากนั้นเราจะทำผ่าน F, 360 00:20:56,940 --> 00:20:58,630 ซึ่งเป็นอีกหกค่า 361 00:20:58,630 --> 00:21:03,040 >> ดังนั้นวิธีที่ง่ายที่สุดที่จะไปจาก ใด ๆ เลขฐานสองเลขฐานสิบหก 362 00:21:03,040 --> 00:21:05,350 คือการแบ่งออกเป็นส่วน 363 00:21:05,350 --> 00:21:10,042 และอื่น ๆ เลขฐานสองเราจะให้ คุณอาจจะมีตัวเลขแปดหลัก 364 00:21:10,042 --> 00:21:11,750 คุณก็สามารถทำลาย พวกเขาขึ้นอยู่ตรงกลาง 365 00:21:11,750 --> 00:21:17,460 >> ดังนั้นก่อน one-- หนึ่งหนึ่ง หนึ่งหนึ่งหนึ่งหนึ่งหนึ่งหนึ่ง 366 00:21:17,460 --> 00:21:21,340 ชนิดของการคิดว่ามันขึ้นอยู่ที่คุณรู้ว่าวาด เฉือนหรือจุลภาคในระหว่างพวกเขา 367 00:21:21,340 --> 00:21:23,800 และคุณก็สามารถแปลง สิ่งที่ได้โดยตรง 368 00:21:23,800 --> 00:21:26,670 นี้คือการแรก จำนวนเลขฐานสิบหก 369 00:21:26,670 --> 00:21:29,880 และสิ่งที่นี่คือการ ที่สองของเลขฐานสิบหก 370 00:21:29,880 --> 00:21:37,584 >> ดังนั้นจำจากสัญกรณ์ที่พบบ่อย ทำในสิ่งที่มีค่าเลขฐานสิบหกเริ่มต้นด้วย? 371 00:21:37,584 --> 00:21:38,460 >> ผู้ชม: ศูนย์ 372 00:21:38,460 --> 00:21:39,270 >> ศาสตราจารย์: 0X 373 00:21:39,270 --> 00:21:45,210 ดังนั้นเราจึงรู้ว่าทุกครั้งที่เราขอให้คุณ การแปลงจำนวนใด ๆ ที่เลขฐานสิบหก 374 00:21:45,210 --> 00:21:48,230 หรือเวลาใด ๆ ที่คุณเห็นใด ๆ จำนวนที่เริ่มต้นด้วย 0X, 375 00:21:48,230 --> 00:21:50,230 คุณรู้ไหมว่ามันเป็นค่าฐานสิบหก 376 00:21:50,230 --> 00:21:54,160 >> และจากนั้นคุณจะถูกขอให้ ตรวจสอบสิ่งเหล่านี้เป็นตัวเลขสองหลัก 377 00:21:54,160 --> 00:21:59,690 และวิธีที่คุณทำเช่นนั้นได้รับทราบถึง ว่าครึ่งหนึ่งและรับทราบถึงครึ่งหนึ่ง 378 00:21:59,690 --> 00:22:02,870 ดังนั้นในตัวอย่างนี้สิ่งที่ จะหนึ่งหนึ่งหนึ่งหนึ่งจะเป็นอย่างไร 379 00:22:02,870 --> 00:22:04,890 ค่าอะไรที่จะเป็น? 380 00:22:04,890 --> 00:22:06,040 ที่ต้องการจะ F ใช่มั้ย? 381 00:22:06,040 --> 00:22:08,050 ที่ต้องการจะ 15 382 00:22:08,050 --> 00:22:11,780 >> ดังนั้นนี้จะเป็นเอฟหนึ่ง หนึ่งหนึ่งหนึ่งที่นี่ยังเป็น 383 00:22:11,780 --> 00:22:21,270 เอฟดังนั้นหนึ่งหนึ่งหนึ่งหนึ่งหนึ่งหนึ่งหนึ่ง หนึ่งในเลขฐานสิบหกทั้งหมดมันเป็นเป็น 0xFF 384 00:22:21,270 --> 00:22:25,350 เพราะครึ่งหนึ่งเป็นตัวแทนนี้ F มูลค่า 15 385 00:22:25,350 --> 00:22:27,331 และอีกครึ่งหนึ่งนี้เป็นตัวแทนของ F มูลค่า 15 386 00:22:27,331 --> 00:22:29,456 เพราะจำได้ว่าเรา นับจากศูนย์ถึงเก้า 387 00:22:29,456 --> 00:22:35,290 เป็นเช่น 10, B เป็นเช่น 11, F คือ 15 388 00:22:35,290 --> 00:22:41,690 >> ที่ทำให้รู้สึกกับทุกคนว่า ที่เราได้จากไบนารีเลขฐานสิบหก? 389 00:22:41,690 --> 00:22:44,595 >> ผู้ชม: ดังนั้นวิธีการที่เราได้รับ 15 จากหนึ่งหนึ่งหนึ่งหนึ่ง? 390 00:22:44,595 --> 00:22:46,220 ศาสตราจารย์: ใช่นี้เป็นไบนารีใช่มั้ย? 391 00:22:46,220 --> 00:22:48,090 ลองนึกภาพนี้เป็นเพียงเลขฐานสอง 392 00:22:48,090 --> 00:22:50,792 เพื่อให้คุณมีสองถึง ข้อที่ศูนย์ซึ่งเป็นหนึ่งใน 393 00:22:50,792 --> 00:22:51,500 ผู้ชม: โอ้, OK 394 00:22:51,500 --> 00:22:51,670 ดังนั้นคุณก็รวมมันออกมา 395 00:22:51,670 --> 00:22:52,670 >> ศาสตราจารย์: ใช่แล้ว คุณเพียงแค่รวมที่ออกมา 396 00:22:52,670 --> 00:22:53,380 นั่นคือทั้งหมดที่มันเป็น 397 00:22:53,380 --> 00:22:54,890 >> ผู้ชม: ตกลง 398 00:22:54,890 --> 00:22:55,830 >> ศาสตราจารย์: OK 399 00:22:55,830 --> 00:23:00,740 >> ผู้ชม: ดังนั้นคุณไปจากไบนารี ทศนิยมเลขฐานสิบหก? 400 00:23:00,740 --> 00:23:04,590 >> ศาสตราจารย์: นั่นคือ วิธีที่ง่ายที่สุดที่จะทำเช่นนั้นใช่ 401 00:23:04,590 --> 00:23:11,390 คุณไม่ได้ไปเพราะทศนิยม ทศนิยมมีเพียงศูนย์ถึงเก้า 402 00:23:11,390 --> 00:23:13,410 เราเพียงแค่ชนิดของ แยกนี้ออกเป็นสอง 403 00:23:13,410 --> 00:23:15,201 >> ผู้ชม: [ไม่ได้ยิน] ใช้ทศนิยมที่จะหา 404 00:23:15,201 --> 00:23:17,809 สิ่งที่มันตรงกับขึ้นไปในเลขฐานสิบหก 405 00:23:17,809 --> 00:23:20,100 ศาสตราจารย์: ผมหมายถึงคุณ รับทราบการใช้พื้นฐานทางคณิตศาสตร์ 406 00:23:20,100 --> 00:23:20,725 ผู้ชม: ใช่ 407 00:23:20,725 --> 00:23:22,300 ศาสตราจารย์: ใช่สวยมาก 408 00:23:22,300 --> 00:23:23,630 มันเป็นบิตสับสน 409 00:23:23,630 --> 00:23:26,410 เพียง แต่รู้ว่าคุณ สามารถแบ่งสิ่งที่ 410 00:23:26,410 --> 00:23:28,160 ค่านี้จะเป็นเพียงครึ่งหนึ่ง 411 00:23:28,160 --> 00:23:29,570 ดูสิ่งที่อยู่ในไบนารี? 412 00:23:29,570 --> 00:23:30,610 จำนวนสิ่งที่? 413 00:23:30,610 --> 00:23:33,270 มันเป็นไปได้ บางสิ่งบางอย่างจากศูนย์ถึงเอฟ 414 00:23:33,270 --> 00:23:35,722 >> ที่นี่ยังเป็นไปได้ บางสิ่งบางอย่างจากศูนย์ถึงเอฟ 415 00:23:35,722 --> 00:23:37,722 และจากนั้นคุณก็สามารถใส่ ทั้งสองมีสิทธิ 416 00:23:37,722 --> 00:23:38,263 >> ผู้ชม: ตกลง 417 00:23:38,263 --> 00:23:38,910 ศาสตราจารย์: อ๋อ 418 00:23:38,910 --> 00:23:39,410 ตกลง. 419 00:23:39,410 --> 00:23:42,320 ดังนั้นพวกคุณต้องการ ลองต่อไปแล้ว? 420 00:23:42,320 --> 00:23:49,601 ศูนย์หนึ่งศูนย์หนึ่ง หนึ่งศูนย์หนึ่งศูนย์ 421 00:23:49,601 --> 00:23:52,350 ฉันจะให้พวกคุณเช่น 30 วินาที ตั้งแต่ที่คุณอาจไม่ทราบ 422 00:23:52,350 --> 00:23:53,850 เคล็ดลับวิธีการทำเช่นนี้ก่อนหน้านี้ 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> ตกลงทุกคนต้องการที่จะได้รับนี้คนหนึ่งถูกยิงหรือไม่? 425 00:24:27,381 --> 00:24:28,774 >> 0X5A 426 00:24:28,774 --> 00:24:29,440 ศาสตราจารย์: 0X5A 427 00:24:29,440 --> 00:24:30,470 5a 428 00:24:30,470 --> 00:24:31,340 ดี. 429 00:24:31,340 --> 00:24:37,050 ดังนั้นที่นี่จะ be-- คุณต้องการ ที่จะบอกเราว่าคุณมีที่? 430 00:24:37,050 --> 00:24:38,920 ครั้งแรกไม่ว่าคุณจะได้รับห้า? 431 00:24:38,920 --> 00:24:42,030 >> ผู้ชม: เพ​​ราะเป็นศูนย์ หนึ่งศูนย์หนึ่งห้า 432 00:24:42,030 --> 00:24:45,170 >> ศาสตราจารย์: ทุกคนไม่เข้าใจ ทำไมศูนย์หนึ่งศูนย์หนึ่งห้า? 433 00:24:45,170 --> 00:24:46,260 คุณได้ที่นี่ 434 00:24:46,260 --> 00:24:48,010 คุณไม่มีอะไรในสองถึงแรก 435 00:24:48,010 --> 00:24:50,300 ในสองถึงสองคุณ มีหนึ่งซึ่งเป็นสี่ 436 00:24:50,300 --> 00:24:52,600 ดังนั้นคุณเพิ่มสี่บวก หนึ่งคุณมีห้า 437 00:24:52,600 --> 00:24:53,600 ทุกคนดีหรือไม่? 438 00:24:53,600 --> 00:24:54,100 ตกลง. 439 00:24:54,100 --> 00:24:56,570 และแล้วสิ่งนี้จะเป็นและทำไม? 440 00:24:56,570 --> 00:24:58,350 จำนวนสิ่งที่ไม่สอดคล้องกับ? 441 00:24:58,350 --> 00:24:59,350 >> ผู้ชม: 10 442 00:24:59,350 --> 00:25:00,976 >> ศาสตราจารย์: และสิ่งนี้ในสองฐาน? 443 00:25:00,976 --> 00:25:01,850 ผู้ชม: [ไม่ได้ยิน] 444 00:25:01,850 --> 00:25:03,010 ศาสตราจารย์: แน่นอน 445 00:25:03,010 --> 00:25:06,370 ดังนั้นค่าที่สองที่นี่จะเป็น 0X5A 446 00:25:06,370 --> 00:25:08,410 >> ทุกคนที่ดีในการแปลง? 447 00:25:08,410 --> 00:25:10,770 มันมากง่ายกว่าที่คุณคิดว่ามันเป็น 448 00:25:10,770 --> 00:25:13,330 ผมแค่อยากจะให้แน่ใจว่า คุณรู้แนะนำที่เป็นประโยชน์ 449 00:25:13,330 --> 00:25:14,950 และเทคนิคสำหรับวิธีการทำที่ 450 00:25:14,950 --> 00:25:18,432 >> ผู้ชม: ทำไมคุณก็สามารถแยก มันอยู่ตรงกลางเช่นนั้นหรือไม่ 451 00:25:18,432 --> 00:25:21,390 เพียงแค่เป็นเหมือน, OK, ฉันก็แค่จะไป เกี่ยวกับการดูแลเหล่านี้ก่อน [ไม่ได้ยิน] 452 00:25:21,390 --> 00:25:24,240 >> ศาสตราจารย์: เนื่องจากว่าเป็นจริง วิธีค่าเลขฐานสิบหกเป็นตัวแทน 453 00:25:24,240 --> 00:25:26,890 0X ที่จริงหมายถึง อะไรนอกเหนือจากบอกคุณ 454 00:25:26,890 --> 00:25:28,710 ว่ามันเป็นเลขฐานสิบหก 455 00:25:28,710 --> 00:25:31,580 และสิ่งนี้แสดงให้เห็นถึงเสมอ สี่หลักแรก 456 00:25:31,580 --> 00:25:34,330 และสิ่งนี้แสดงให้เห็นถึงเสมอ สี่หลักสุดท้าย 457 00:25:34,330 --> 00:25:37,835 และอื่น ๆ เหล่านี้เป็นเพียงตัวเลขสองหลัก สอดคล้องกับบิตที่แตกต่างกัน 458 00:25:37,835 --> 00:25:39,200 >> ผู้ชม: ดังนั้นเราจะ always-- 459 00:25:39,200 --> 00:25:41,830 >> ศาสตราจารย์: คุณเสมอ จะได้รับค่าบิตแปด 460 00:25:41,830 --> 00:25:44,580 >> ผู้ชม: นั่นคือเช่นเดียวกับสิ่งที่ นี่หรือสิ่งที่ทั่วหรือไม่? 461 00:25:44,580 --> 00:25:46,883 ศาสตราจารย์: นั่นเป็นเพียง สิ่งที่อยู่ในคอมพิวเตอร์ครับ 462 00:25:46,883 --> 00:25:47,424 ผู้ชม: ตกลง 463 00:25:47,424 --> 00:25:48,240 ที่น่ากลัว 464 00:25:48,240 --> 00:25:51,290 >> ศาสตราจารย์: นอกจากนี้ดังนั้นในตัวอย่างนี้ เราเปลี่ยนจากไบนารีทศนิยม, 465 00:25:51,290 --> 00:25:53,290 และจากไบนารีเลขฐานสิบหก 466 00:25:53,290 --> 00:25:56,610 พวกคุณต้องการให้แน่ใจว่าคุณยัง ปฏิบัติไปวิธีอื่น ๆ 467 00:25:56,610 --> 00:26:03,370 ดังนั้นถ้าฉันให้คุณ 0xFF คุณสามารถทำได้ ที่วาดออกมาในไบนารีใช่มั้ย? 468 00:26:03,370 --> 00:26:06,820 >> คุณแปลง F เข้าไปไบนารี ซึ่งเป็นหนึ่งหนึ่งหนึ่งหนึ่ง 469 00:26:06,820 --> 00:26:09,380 แปลง F ถึงไบนารีซึ่ง เป็นหนึ่งหนึ่งหนึ่งหนึ่ง 470 00:26:09,380 --> 00:26:11,310 >> ดังนั้นเราอาจจะขอให้คุณทำ วิธีอื่น ๆ 471 00:26:11,310 --> 00:26:14,817 ดังนั้นทศนิยมเพื่อไบนารีหรือ เลขฐานสิบหกที่จะไบนารี 472 00:26:14,817 --> 00:26:16,650 ดังนั้นคุณจึงต้องการที่จะทำให้ แน่ใจว่าคุณรู้ทั้งสองวิธี 473 00:26:16,650 --> 00:26:19,371 เราอาจจะขอให้คุณ การรวมกันของทั้งสอง 474 00:26:19,371 --> 00:26:20,660 >> ใช่คุณมีคำถามหรือไม่? 475 00:26:20,660 --> 00:26:22,724 ฉันสามารถ see-- คุณดีหรือไม่? 476 00:26:22,724 --> 00:26:23,348 ผู้ชม: ใช่ 477 00:26:23,348 --> 00:26:24,560 ศาสตราจารย์: OK 478 00:26:24,560 --> 00:26:26,101 I Am ที่ดีในการลบนี้หรือไม่? 479 00:26:26,101 --> 00:26:26,600 ที่ดี 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> สิทธิทั้งหมดเพื่อให้คำตอบอยู่ที่นี่ถ้าใคร อยากรู้อยากเห็นในภายหลังและได้รับสับสน 482 00:26:40,437 --> 00:26:41,844 ตกลง. 483 00:26:41,844 --> 00:26:46,070 >> ผู้ชม: ไม่สำคัญว่าถ้าเราใส่ จดหมายของเราในหน่วยงานของรัฐหรือตัวพิมพ์เล็ก? 484 00:26:46,070 --> 00:26:50,360 >> ศาสตราจารย์: มันไม่เพราะ ในเลขฐานสิบหกโดยการประชุม 485 00:26:50,360 --> 00:26:52,840 ตัวละครทุกตัวจะเป็นตัวพิมพ์ใหญ่ 486 00:26:52,840 --> 00:26:54,650 ดังนั้น A ถึง F มี จะเป็นตัวพิมพ์ใหญ่ 487 00:26:54,650 --> 00:26:58,660 หากคุณใส่ตัวพิมพ์เล็กผมไม่ทราบ ถ้าเราจำเป็นต้องจะเป็นเครื่องหมายผิด 488 00:26:58,660 --> 00:27:00,679 แต่ในทางทฤษฎี ที่ไม่ได้ในทางเทคนิค 489 00:27:00,679 --> 00:27:01,970 วิธีที่คุณควรจะมีมัน 490 00:27:01,970 --> 00:27:03,303 ดังนั้นพวกเขาควรจะเป็นตัวพิมพ์ใหญ่ 491 00:27:03,303 --> 00:27:05,910 ใช่คำถามที่ดี 492 00:27:05,910 --> 00:27:07,780 >> ตกลง. 493 00:27:07,780 --> 00:27:08,790 คำถามที่สอง 494 00:27:08,790 --> 00:27:12,750 พิจารณาโปรแกรมนี้น่ารักที่นี่ 495 00:27:12,750 --> 00:27:15,180 ฉันจะถามคำถาม ฉันจะกลับมานี้ 496 00:27:15,180 --> 00:27:23,170 >> ดังนั้นประการแรกสิ่งที่อยู่ภายในมาตรฐาน io.h ที่เป็นที่สนใจของโปรแกรมได้หรือไม่ 497 00:27:23,170 --> 00:27:26,640 ประการที่สองสิ่งที่ไม่เป็นโมฆะ มีความหมายในสายสาม? 498 00:27:26,640 --> 00:27:30,572 และสามสิ่งที่ไม่กลับมาจากศูนย์ หลักหกสายโดยทั่วไปมีความหมาย? 499 00:27:30,572 --> 00:27:33,280 ถ้าพวกคุณต้องการที่จะเขียนเหล่านั้น ลงตั้งแต่ผมต้องเปลี่ยนกลับ 500 00:27:33,280 --> 00:27:36,810 การสไลด์เพียงเพื่อให้คุณสามารถดูรหัส 501 00:27:36,810 --> 00:27:40,400 นี่คือตัวอย่างของเช่นอาจจะหนึ่ง คำถามระดับที่สูงกว่าที่เราขอให้คุณ 502 00:27:40,400 --> 00:27:42,435 สิ่งที่หมายถึงในโปรแกรม 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> ทุกคนที่ดีสำหรับผมที่จะ กลับไปที่ภาพนิ่ง? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 ตกลงเย็น 507 00:27:54,361 --> 00:27:57,610 ดังนั้นฉันจะให้พวกคุณเช่นอาจจะสาม นาทีที่จะดูที่นี้จริงอย่างรวดเร็ว 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> ตกลงดังนั้นของคนเช่นนี้ ค่อนข้างง่ายแนวคิด 510 00:28:44,140 --> 00:28:49,280 ไม่มีใครต้องการที่จะบอกฉันว่า ครั้งแรกภ​​ายในโดยรวมทั้งกัญชา 511 00:28:49,280 --> 00:28:52,630 io.h มาตรฐานของไฟล์ไลบรารี? 512 00:28:52,630 --> 00:28:55,510 ทำไมเราต้องห้องสมุดที่ รวมสำหรับโปรแกรมนี้? 513 00:28:55,510 --> 00:28:56,930 อะไรที่นี่เราต้องทำเพื่อ? 514 00:28:56,930 --> 00:28:56,980 >> ใช่? 515 00:28:56,980 --> 00:28:58,340 >> ผู้ชม: คือว่าเมื่อ คุณใส่ printf ที่? 516 00:28:58,340 --> 00:28:59,131 >> ศาสตราจารย์: แน่นอน 517 00:28:59,131 --> 00:29:01,780 printf ดังนั้นเวลาที่คุณใด ๆ ใช้ข้อมูลจากผู้ใช้ 518 00:29:01,780 --> 00:29:04,140 และสิ่งที่พิมพ์ ไปยังหน้าจอที่ 519 00:29:04,140 --> 00:29:05,600 เข้ามาตรฐานห้องสมุดเอาท์พุท 520 00:29:05,600 --> 00:29:07,170 คิดว่ามันที่ way-- นำเข้าส่งออก 521 00:29:07,170 --> 00:29:08,430 >> ฉันต้องออก? 522 00:29:08,430 --> 00:29:09,207 ใช่ฉันทำ. 523 00:29:09,207 --> 00:29:12,040 ดังนั้นผมจึงรู้ว่าฉันเสมอไป จำเป็นต้องมีมาตรฐานห้องสมุด i.o 524 00:29:12,040 --> 00:29:16,400 >> printf ดังนั้นฟังก์ชั่น โดยที่เราต้องเข้าถึง 525 00:29:16,400 --> 00:29:19,370 และ hashtag รวม ห้องสมุด i.o มาตรฐาน 526 00:29:19,370 --> 00:29:20,280 ตกลง. 527 00:29:20,280 --> 00:29:22,660 >> ประการที่สองก็สิ่งที่ไม่เป็นโมฆะมีความหมาย? 528 00:29:22,660 --> 00:29:26,970 เรามี int main (void) สิ่งที่ไม่ ที่นี่ถือเป็นโมฆะหมายถึงที่นี่ในบรรทัดที่สาม? 529 00:29:26,970 --> 00:29:28,080 ใช่ในด้านหลัง 530 00:29:28,080 --> 00:29:29,020 >> ผู้ชม: [ไม่ได้ยิน] 531 00:29:29,020 --> 00:29:29,920 >> ศาสตราจารย์: แน่นอน 532 00:29:29,920 --> 00:29:33,320 ดังนั้นจำเราได้เรียนรู้ เริ่มต้นด้วย pset ของเรา 533 00:29:33,320 --> 00:29:35,360 ที่คุณสามารถจริง ระบุบรรทัดคำสั่ง 534 00:29:35,360 --> 00:29:39,010 ข้อโต้แย้งที่โปรแกรมของคุณที่คุณ ฟังก์ชั่นหลักที่จะใช้เวลากับคุณผู้ใช้ 535 00:29:39,010 --> 00:29:39,650 เรียกมันว่า 536 00:29:39,650 --> 00:29:42,650 ถ้าเรามีช่องว่างที่หมายความว่าคุณ ก็สามารถเรียกใช้โปรแกรมได้โดยตรง 537 00:29:42,650 --> 00:29:44,680 โดยไม่ขัดแย้งบรรทัดคำสั่งใด ๆ 538 00:29:44,680 --> 00:29:46,160 ทุกคนที่ชัดเจนเกี่ยวกับที่? 539 00:29:46,160 --> 00:29:46,660 ตกลง. 540 00:29:46,660 --> 00:29:52,850 >> และสุดท้ายทำไมเราทำรำคาญ การกลับมาศูนย์นี้สิ่งที่นี่? 541 00:29:52,850 --> 00:29:54,740 ทำไมเราแม้จะมี int หลัก? 542 00:29:54,740 --> 00:29:57,330 ทำไมถึงไม่สามารถเราก็ต้องเป็นโมฆะหลักโมฆะ? 543 00:29:57,330 --> 00:29:59,216 ใช่? 544 00:29:59,216 --> 00:30:01,590 ผู้ชม: เพ​​ียงเพื่อให้เราสามารถ ให้แน่ใจว่าโปรแกรมที่เป็น 545 00:30:01,590 --> 00:30:04,247 ออกจากที่ประสบความสำเร็จเป็น เมื่อเทียบกับถ้ามันเป็นเลข 546 00:30:04,247 --> 00:30:06,580 และเราจะได้รู้ว่าที่ ชนิดที่แตกต่างของความผิดพลาด 547 00:30:06,580 --> 00:30:07,621 >> ศาสตราจารย์: ใช่ว่า 548 00:30:07,621 --> 00:30:10,670 นี่เป็นเพียงมาก สิ่งธรรมดาที่เราทำ 549 00:30:10,670 --> 00:30:13,840 คือเพียงแค่ในตอนท้ายของ โปรแกรมของคุณเพียงเพื่อให้แน่ใจ 550 00:30:13,840 --> 00:30:15,830 ที่ฟังก์ชั่นหลักของคุณ กำลังทำงานอย่างถูกต้อง 551 00:30:15,830 --> 00:30:17,940 เรามักจะต้องการที่จะทำผลตอบแทนที่เป็นศูนย์ 552 00:30:17,940 --> 00:30:21,160 ถึงแม้ว่าเราอาจจำเป็นต้อง ไม่เห็นว่าพิมพ์ได้ทุกที่ 553 00:30:21,160 --> 00:30:25,092 >> เพราะเป็นโปรแกรมเมอร์คุณรู้ว่าถ้า คุณมีสายที่แตกต่างของรหัส 554 00:30:25,092 --> 00:30:27,050 และคุณไม่ทราบว่า เหล่านี้จะไม่ถูกต้อง 555 00:30:27,050 --> 00:30:30,240 และหากมีข้อผิดพลาดเกิดขึ้นคุณต้องการ ตรวจสอบให้แน่ใจว่าคุณได้รับข้อผิดพลาดที่ 556 00:30:30,240 --> 00:30:33,240 และอื่น ๆ โดยทั่วไปถ้าอะไร ที่ไม่ถูกต้องเราจะมีการกลับมาของหนึ่งเพียง 557 00:30:33,240 --> 00:30:34,669 เพื่อให้แน่ใจว่าเรารู้ว่ามันเป็น 558 00:30:34,669 --> 00:30:36,460 ดังนั้นหากคุณเห็นผลตอบแทน ศูนย์ที่มักจะ 559 00:30:36,460 --> 00:30:38,293 หมายความว่าโปรแกรมของคุณ ประสบความสำเร็จในการดำเนินการ 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 ดี? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 เย็น. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> ตกลงโปรแกรมที่สองที่นี่ 566 00:30:52,680 --> 00:30:54,827 พิจารณาว่า 567 00:30:54,827 --> 00:30:56,910 และถ้าพวกคุณเห็น ลอยพวกคุณอาจจะสามารถ 568 00:30:56,910 --> 00:31:00,810 มีความคิดที่ดีในสิ่งที่ ฉันจะขอให้คุณ 569 00:31:00,810 --> 00:31:05,200 >> ดังนั้นเมื่อโปรแกรมนี้ ดำเนินการตามที่คุณสามารถดู 570 00:31:05,200 --> 00:31:09,330 ฉันกำลังประกาศลอย ภายในฟังก์ชั่นหลักของฉัน 571 00:31:09,330 --> 00:31:13,470 ผมตั้งชื่อมันว่า "คำตอบ" และฉันตั้ง ที่เท่ากับหนึ่งหารด้วย 10 572 00:31:13,470 --> 00:31:17,860 ผมพิมพ์ออกให้เป็นหนึ่ง ทศนิยมตำแหน่งลอยที่ 573 00:31:17,860 --> 00:31:19,880 และจากนั้นฉันกลับมาเป็นศูนย์ 574 00:31:19,880 --> 00:31:24,470 >> ดังนั้นเมื่อรันโปรแกรม คิดว่ากลับไปโลภตอนนี้ 575 00:31:24,470 --> 00:31:26,550 โปรแกรมนี้พิมพ์ 0.0 576 00:31:26,550 --> 00:31:29,993 ในฐานะที่เราทุกคนรู้ว่าเราทุกคนหวังว่า รู้หนึ่งหารด้วย 10 ไม่ได้เป็น 0.00, 577 00:31:29,993 --> 00:31:32,350 มันเป็น 0.1 578 00:31:32,350 --> 00:31:37,810 แต่อธิบายว่าทำไมโปรแกรมนี้คิดว่า ที่ 1 โดยแบ่งออกเป็น 10 พิมพ์ 0.1 อื่น ๆ 579 00:31:37,810 --> 00:31:39,504 กว่า 0.1? 580 00:31:39,504 --> 00:31:42,545 ฉันจะให้พวกคุณอาจจะเหมือน 30 วินาทีที่จะได้อย่างรวดเร็วเพียงแค่คิดเกี่ยวกับว่า 581 00:31:42,545 --> 00:31:43,878 และฉันจะกลับไปที่โปรแกรม 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> ตกลง. 584 00:32:20,290 --> 00:32:22,205 ทุกคนต้องการที่จะให้มันยิงหรือไม่? 585 00:32:22,205 --> 00:32:24,330 ในสามประโยคหรือน้อยกว่า เพราะโดยปกติเรา 586 00:32:24,330 --> 00:32:27,650 จะ จำกัด คำตอบทั้งหมด ถึงสามประโยคหรือน้อยกว่า 587 00:32:27,650 --> 00:32:31,130 เพื่อให้คุณไม่เพียงแค่ไหลกลับ สิ่งสุ่มไปยังตอบคำถามของคุณ 588 00:32:31,130 --> 00:32:32,740 >> ใช่จะยิง 589 00:32:32,740 --> 00:32:36,390 >> ผู้ชม: ดังนั้นผมจึงคิดว่ามีนี้ สิ่งที่เรียกว่าเหมือน [ไม่ได้ยิน] 590 00:32:36,390 --> 00:32:42,320 ดังนั้นอาจจะมีเช่น อาจจะมีเช่น 0.09, 591 00:32:42,320 --> 00:32:47,250 ว่าที่คุณพิมพ์ครั้งแรก หลักก็จะเป็น 0.0? 592 00:32:47,250 --> 00:32:49,100 >> ศาสตราจารย์: ปิดไม่มาก 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> ผู้ชม: คุณกำลังหารหนึ่ง 10 และพวกเขากำลังจำนวนเต็มทั้ง 595 00:32:51,770 --> 00:32:54,610 ดังนั้นวิธีการที่มันจะ เก็บไว้เป็นจำนวนเต็ม 596 00:32:54,610 --> 00:32:56,480 และเพื่อให้จำนวนเต็มใกล้เคียงที่สุดที่จะเป็น 0.0 597 00:32:56,480 --> 00:32:57,471 และเพื่อให้เป็น 0.1 598 00:32:57,471 --> 00:32:58,970 ศาสตราจารย์: ใช่ว่าดีจริงๆ 599 00:32:58,970 --> 00:33:00,040 นั่นคือคำตอบที่เหมาะสม 600 00:33:00,040 --> 00:33:03,597 ดังนั้นนี่คือความสับสนมาก แนวคิดสำหรับจำนวนมากของเด็ก 601 00:33:03,597 --> 00:33:06,680 และผมต้องการที่จะให้แน่ใจว่า นี้จะเสริมในหัวของทุกคน 602 00:33:06,680 --> 00:33:10,090 >> ดังนั้นสิ่งที่เราเรียกว่าลอย ไม่แน่ชัดจุด 603 00:33:10,090 --> 00:33:12,800 ซึ่งเหตุผลที่มาก โปรแกรมของคุณในโลภ 604 00:33:12,800 --> 00:33:17,010 ไม่ได้ทำงานครั้งแรกเป็นเพราะ คุณลืมที่จะโยนตัวแปรของคุณ 605 00:33:17,010 --> 00:33:19,370 ดังนั้นสิ่งที่ Christabell กล่าวว่า ก็ถูกต้องทั้งหมด 606 00:33:19,370 --> 00:33:21,990 >> ลอยเป็นคลุมเครือโดยเนื้อแท้ 607 00:33:21,990 --> 00:33:26,400 เพราะในเครื่องคอมพิวเตอร์ที่เหมาะสมเรามี จำนวน จำกัด ของบิตของหน่วยความจำ 608 00:33:26,400 --> 00:33:28,480 เราสามารถใช้เพื่อแสดงตัวเลข 609 00:33:28,480 --> 00:33:33,480 ดังนั้นสำหรับตัวอย่างเช่น ID CS50 นี้ is-- ฉันคิดว่ามันเป็นคอมพิวเตอร์ 64 บิต 610 00:33:33,480 --> 00:33:37,520 >> ลอยเท่านั้นที่สามารถเป็นตัวแทนของ ตามจำนวนเงินที่ จำกัด ของบิตเหล่านั้น 611 00:33:37,520 --> 00:33:42,260 และอื่น ๆ 0.1 ด้วยศูนย์ไม่มีที่สิ้นสุด ที่เป็น 0.1 เป็นใช่มั้ย? 612 00:33:42,260 --> 00:33:45,450 แต่เราจะไม่ได้จัดเก็บ ว่าตัวเลขที่อยู่ในคอมพิวเตอร์ของเรา 613 00:33:45,450 --> 00:33:47,810 เราก็ไม่ได้มี หน่วยความจำมากพอที่จะทำเช่นนั้น 614 00:33:47,810 --> 00:33:52,340 >> และเพื่อให้การประมาณที่ใกล้ที่สุดของ สิ่งที่เก็บไว้ในหน่วยความจำที่เป็นจริง 615 00:33:52,340 --> 00:33:55,390 สิ่งที่ต้องการ 0.000 บางสิ่งบางอย่าง บางสิ่งบางอย่างบางสิ่งบางอย่างบางสิ่งบางอย่าง 616 00:33:55,390 --> 00:34:01,240 ซึ่งเมื่อคุณตัดทอน มันเดินลงไปที่ 0.0 617 00:34:01,240 --> 00:34:05,640 >> และเพื่อให้ตัวอย่างนี้เป็นเพียงหนึ่ง ที่แสดงให้เห็นจำนวนมากของปัญหา 618 00:34:05,640 --> 00:34:08,469 เมื่อใดก็ตามที่เรามีเรา พยายามที่จะไม่ถูกต้องทำคณิตศาสตร์ 619 00:34:08,469 --> 00:34:11,000 โดยไม่ต้องหล่อเป็นจำนวนเต็มที่แตกต่างกัน 620 00:34:11,000 --> 00:34:14,870 ดังนั้นเพียงแค่ต้องระวังที่เกิดขึ้นนี้ 621 00:34:14,870 --> 00:34:18,239 >> ในแบบทดสอบถ้าเราให้คุณ บล็อกของรหัสและที่มันต้องการ 622 00:34:18,239 --> 00:34:19,510 สิ่งที่พิมพ์ออกที่สิ้นสุดหรือไม่ 623 00:34:19,510 --> 00:34:24,096 และถ้ามันบางค่าสุ่มคุณ ผู้ชายควรรู้ว่าทำไมที่เกิดขึ้น 624 00:34:24,096 --> 00:34:24,909 ใช่? 625 00:34:24,909 --> 00:34:27,926 >> ผู้ชม: ตัดถูกกำจัด ทุกอย่างหลังจากที่จุดหนึ่ง? 626 00:34:27,926 --> 00:34:28,513 [ไม่ได้ยิน] 627 00:34:28,513 --> 00:34:30,929 ศาสตราจารย์: ใช่ดังนั้นจริง นี้เป็นตัวอย่างที่ไม่ดีจริงๆ 628 00:34:30,929 --> 00:34:37,870 เพราะสิ่งที่ 0.100 จริง จะตัดทอนลงไป 0.1 629 00:34:37,870 --> 00:34:41,389 แต่ถ้าคุณมีการเรียกใช้ it-- ฉันทำไม่ได้ จำได้เพราะปีที่ผ่านมาพวกเขา 630 00:34:41,389 --> 00:34:42,830 วิ่งได้ในโปรแกรมที่แตกต่างกัน 631 00:34:42,830 --> 00:34:45,300 พวกเขาวิ่งในบางสิ่งบางอย่างที่เรียกว่า CS50 เครื่องใช้ไฟฟ้าที่ 632 00:34:45,300 --> 00:34:46,389 จะแตกต่างจากประชาชน 633 00:34:46,389 --> 00:34:48,520 นั่นคือระบบ 32 บิตผมคิดว่า 634 00:34:48,520 --> 00:34:50,290 และเพื่อให้มีตัวเลขที่แตกต่าง 635 00:34:50,290 --> 00:34:53,330 >> แต่เป็นหลักเพียงรู้ว่า แนวคิดทั้งการตัด 636 00:34:53,330 --> 00:34:54,815 และวิธีที่จะตัดเพียงสิ่งปิด 637 00:34:54,815 --> 00:34:55,690 และดังนั้นถ้ามัน rounds-- 638 00:34:55,690 --> 00:34:56,300 >> ผู้ชม: โดยไม่ต้องปัดเศษ 639 00:34:56,300 --> 00:34:57,370 >> ศาสตราจารย์: แน่นอน 640 00:34:57,370 --> 00:34:57,870 ใช่. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 เย็น. 643 00:35:04,380 --> 00:35:05,250 >> สวัสดีในด้านหลัง 644 00:35:05,250 --> 00:35:07,634 เรากำลังจะไปบางส่วน คำถามทบทวนการตอบคำถาม 645 00:35:07,634 --> 00:35:08,430 >> ทั้งหมดขวา 646 00:35:08,430 --> 00:35:10,150 เพื่อพิจารณาโปรแกรมที่แตกต่างกันที่นี่ 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 ฉันจะให้คุณผู้ชาย สองสามนาทีในการอ่านมากกว่านี้ 649 00:35:15,380 --> 00:35:18,588 นี่คือสิ่งที่เป็นมาก เมื่อเร็ว ๆ นี้ที่ฉันคิดว่าพัดจำนวนมากของคุณ 650 00:35:18,588 --> 00:35:19,142 จิตใจของคน 651 00:35:19,142 --> 00:35:21,100 แต่เรากำลังจะไปพูดคุย ผ่านทางนี้อีกครั้ง 652 00:35:21,100 --> 00:35:24,152 เพื่อให้แน่ใจว่า เข้าใจมันอย่างสมบูรณ์ 653 00:35:24,152 --> 00:35:24,652 ตกลง. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 ตกลง. 656 00:35:41,780 --> 00:35:44,342 ทุกคนต้องใช้เวลามากขึ้นในการ อ่านรห​​ัสนี้หรือไม่? 657 00:35:44,342 --> 00:35:45,650 ตกลง. 658 00:35:45,650 --> 00:35:50,630 >> ดังนั้นจึงดูเหมือนว่าฉันว่า ในโปรแกรมนี้ฉัน 659 00:35:50,630 --> 00:35:53,460 สร้างสองสายโดยใช้ GetString 660 00:35:53,460 --> 00:35:55,180 หนึ่งที่เรียกว่าและหนึ่งที่เรียกว่าที 661 00:35:55,180 --> 00:35:58,680 และถ้าพวกเขากำลังเท่ากัน เท่ากับกันและกัน 662 00:35:58,680 --> 00:36:00,880 มันควรจะพิมพ์ "คุณ พิมพ์สิ่งเดียวกัน. " 663 00:36:00,880 --> 00:36:04,170 >> แต่ elsewise ก็จะพิมพ์ "คุณ พิมพ์สิ่งที่แตกต่างกัน "ใช่มั้ย? 664 00:36:04,170 --> 00:36:05,990 ดูเหมือนว่ามากง่ายมาก 665 00:36:05,990 --> 00:36:08,720 แต่อย่างไรก็ตามถ้าจริงผม พยายามที่จะเขียนโปรแกรมนี้ 666 00:36:08,720 --> 00:36:12,230 ดูเหมือนว่าแม้ในขณะที่ฉัน การป้อนข้อมูลสายเดียวกันแน่นอน 667 00:36:12,230 --> 00:36:15,490 ก็ยังพิมพ์ออก "คุณ พิมพ์สิ่งที่แตกต่างกัน! " 668 00:36:15,490 --> 00:36:18,020 ไม่มีใครต้องการที่จะใช้ ยิงที่ว่าทำไมโปรแกรมนี้เสมอ 669 00:36:18,020 --> 00:36:20,370 ตอบว​​่าปัจจัยการผลิต จะแตกต่างกันแม้กระทั่ง 670 00:36:20,370 --> 00:36:22,090 เมื่อคำว่าตัวเองเป็นเหมือนกันหรือไม่ 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> ดังนั้นถ้าผมจะ input-- เดวิดรัก ที่จะใช้ตัวอย่างเหมือนแม่ใช่มั้ย? 673 00:36:29,170 --> 00:36:37,890 ตัวพิมพ์เล็ก M-O-M สำหรับ S, T เท่ากับตัวพิมพ์เล็ก M-O-M 674 00:36:37,890 --> 00:36:40,340 ถ้าฉันวิ่งผ่านทางนี้ รหัสที่มันจะทำไม 675 00:36:40,340 --> 00:36:44,180 พิมพ์ออกมา "คุณพิมพ์สิ่งที่แตกต่าง?" 676 00:36:44,180 --> 00:36:46,336 >> ไม่มีใครต้องการมากขึ้น เวลาที่จะคิดเกี่ยวกับเรื่องนี้? 677 00:36:46,336 --> 00:36:47,294 ตกลงผมคิดว่าเรากำลังดี 678 00:36:47,294 --> 00:36:48,716 ใช่? 679 00:36:48,716 --> 00:36:53,930 >> ผู้ชม: ตกลงดังนั้นมันเป็นสิ่งที่เกี่ยวกับ ที่มันถูกเก็บไว้ในหน่วยความจำใช่มั้ย? 680 00:36:53,930 --> 00:36:54,890 >> ศาสตราจารย์: อ๋อ 681 00:36:54,890 --> 00:37:00,400 >> ผู้ชม: อยู่ที่ไหนมันก็เหมือนถ้านี้ สตริง s จะถูกเก็บไว้ในหน่วยความจำ spot-- 682 00:37:00,400 --> 00:37:01,689 ฉันประดิษฐ์ this-- เป็นศูนย์ 683 00:37:01,689 --> 00:37:02,355 ศาสตราจารย์: Sure 684 00:37:02,355 --> 00:37:05,290 ผู้ชม: เสื้อและสตริง จะถูกเก็บไว้ที่จุดหน่วยความจำ 685 00:37:05,290 --> 00:37:11,000 เช่น 167 แล้ว ศูนย์ไม่เท่ากับ 167 686 00:37:11,000 --> 00:37:12,610 >> ศาสตราจารย์: แน่นอน 687 00:37:12,610 --> 00:37:18,350 ตกลงดังนั้นจำที่น่าทึ่งนี้ เปิดเผยเราอธิบายให้พวกคุณ 688 00:37:18,350 --> 00:37:21,530 สัปดาห์ที่ผ่านมาว่า สายไม่ได้จริงๆอยู่? 689 00:37:21,530 --> 00:37:25,380 เมื่อเราสร้างสิ่งที่เรียกว่า สตริงเราในความเป็นจริง 690 00:37:25,380 --> 00:37:29,330 การสร้างสิ่งที่เรียกว่าดาวถ่าน 691 00:37:29,330 --> 00:37:34,470 ซึ่งทั้งหมดมันเป็นเป็นตัวชี้ไป สตริงหรืออาร์เรย์ของตัวอักษร 692 00:37:34,470 --> 00:37:39,480 >> ดังนั้นในตัวอย่างนี้ถ้าฉัน จะป้อนข้อมูล M-O-M ทาง 693 00:37:39,480 --> 00:37:49,350 ว่าคอมพิวเตอร์ของฉันจะเก็บไว้เป็น หน่วยความจำภายในเครื่องหมายศูนย์ใช่มั้ย? 694 00:37:49,350 --> 00:37:53,180 บรรดาสี่ตัวอักษรตัวอักษร, จะถูกเก็บไว้ที่อื่น 695 00:37:53,180 --> 00:37:59,290 >> และแล้วทั้งสี่ ตัวอักษรทับขวาศูนย์ 696 00:37:59,290 --> 00:38:01,275 จะถูกเก็บไว้ที่อื่นใช่มั้ย? 697 00:38:01,275 --> 00:38:04,685 ผมมีความคิดที่ไม่มีที่อยู่ ที่พวกเขากำลังอยู่ที่ไหนสักแห่งในคอมพิวเตอร์ของฉัน 698 00:38:04,685 --> 00:38:07,080 แต่ผมไม่ทราบว่าพวกเขาอยู่ที่ไหน 699 00:38:07,080 --> 00:38:10,170 >> เมื่อฉันสร้างสตริง s ทุกที่จริงๆ 700 00:38:10,170 --> 00:38:15,550 เป็นตัวชี้ไปยัง เริ่มต้นของสายนี้ 701 00:38:15,550 --> 00:38:21,130 และเมื่อฉันสร้างมูลค่าเสื้อนี้ ทุกสิ่งที่เป็นตัวชี้ไปที่นี่ 702 00:38:21,130 --> 00:38:23,980 ดังนั้นเมื่อคุณกำลังพยายาม จะถือเอาและตรวจสอบ 703 00:38:23,980 --> 00:38:27,710 เพื่อดูว่าคือเท่ากับ เท่ากับ t คอมพิวเตอร์ 704 00:38:27,710 --> 00:38:31,635 เป็นจริงเพียงกลับไป ที่อยู่ของมนี้ 705 00:38:31,635 --> 00:38:33,390 และที่อยู่ของม. ว่า 706 00:38:33,390 --> 00:38:36,230 และเนื่องจากพวกเขากำลังสอง แยกชิ้นส่วนของข้อมูล 707 00:38:36,230 --> 00:38:38,750 ที่เก็บไว้ในสองที่แตกต่างกัน ที่อยู่ในเครื่องคอมพิวเตอร์ของคุณ 708 00:38:38,750 --> 00:38:41,750 คอมพิวเตอร์ของคุณไม่เคยไป รู้จักพวกเขาเป็นเหมือนกัน 709 00:38:41,750 --> 00:38:43,500 ไม่มีใครต้องการ ให้ยิงในสิ่งที่เรา 710 00:38:43,500 --> 00:38:46,900 จะต้องทำอย่างไรถ้าเราต้องการที่จะแก้ไขให้ถูกต้อง นี้และมีโปรแกรมที่กำลังทำงานถูกต้อง 711 00:38:46,900 --> 00:38:49,360 แทน? 712 00:38:49,360 --> 00:38:52,070 คิดเกี่ยวกับว่าสำหรับสองสามวินาที 713 00:38:52,070 --> 00:38:54,929 เราจะทำอะไรต้องเปลี่ยนไป รับทำงานโปรแกรมนี้ 714 00:38:54,929 --> 00:38:56,220 วิธีที่เราอยากให้มันทำงาน? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> ใช่ต้องการที่จะใช้แทงที่มันได้หรือไม่ 717 00:39:18,918 --> 00:39:24,082 >> ผู้ชม: เราสามารถพยายามที่จะ dereference ตัวชี้และตรวจสอบผ่านแถวหรือไม่ 718 00:39:24,082 --> 00:39:25,540 ศาสตราจารย์: นั่นเป็นวิธีหนึ่งที่จะทำมัน 719 00:39:25,540 --> 00:39:27,880 ดังนั้นสิ่งที่เป็นชื่อของคุณอีกครั้งหรือไม่ 720 00:39:27,880 --> 00:39:29,010 ฉันขอโทษเตือนฉัน 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee 722 00:39:29,589 --> 00:39:32,130 ศาสตราจารย์: ใช่ดังนั้นสิ่งที่นาซี ชี้ให้เห็นอย่างจะทำงาน 723 00:39:32,130 --> 00:39:32,629 ขวา? 724 00:39:32,629 --> 00:39:35,730 เราสามารถ dereference ตัวชี้ และจริงไปและการเข้าถึง 725 00:39:35,730 --> 00:39:38,460 ข้อมูลทางกายภาพภายในของที่นี่ 726 00:39:38,460 --> 00:39:40,300 และเราก็สามารถเปรียบเทียบ ทั้งหน้าจอ 727 00:39:40,300 --> 00:39:43,670 >> เราสามารถพูดได้, OK, ตัวชี้ ให้ฉันสิ่งที่อยู่ภายในที่นี่ 728 00:39:43,670 --> 00:39:44,960 มันจะกลับเมตร 729 00:39:44,960 --> 00:39:47,168 และผมจะบอกว่าตัวชี้ ให้ฉันสิ่งที่อยู่ภายในที่นี่ 730 00:39:47,168 --> 00:39:47,750 กลับเมตร 731 00:39:47,750 --> 00:39:48,410 ทำการแข่งขันเหล่านั้นหรือไม่ 732 00:39:48,410 --> 00:39:49,410 ใช่. 733 00:39:49,410 --> 00:39:50,340 จากนั้นเราก็เดินหน้าต่อไป 734 00:39:50,340 --> 00:39:54,240 >> เราให้การตรวจสอบทั้งสอง สตริงตลอดทางขึ้นจนกว่าจะเสร็จสิ้น 735 00:39:54,240 --> 00:39:56,635 และดูว่าผู้ที่มีค่าเท่ากัน ถ้าค่าทั้งหมดมีค่าเท่ากัน 736 00:39:56,635 --> 00:39:59,680 และถ้าค่าทั้งหมดมีค่าเท่ากัน แล้วเรารู้ว่าสายนี้เป็นจริง 737 00:39:59,680 --> 00:40:01,600 แน่นอนว่าเป็นวิธีที่เราจะทำมันได้หรือไม่ 738 00:40:01,600 --> 00:40:03,930 >> ไม่มีใครสับสนใด ๆ นี้หรือไม่? 739 00:40:03,930 --> 00:40:06,970 แนวคิดทั้งวิธีสตริง จริงๆเป็นเพียงตัวชี้ 740 00:40:06,970 --> 00:40:08,440 และวิธีการที่พวกเขาไม่ได้จริงๆอยู่? 741 00:40:08,440 --> 00:40:10,480 และเหตุผลที่เราได้รับข้อผิดพลาด ชอบวิธีการที่เราได้รับมันได้หรือไม่ 742 00:40:10,480 --> 00:40:15,070 เพราะผมรับประกันพวกคุณชี้ และการจัดสรรสตริงและหน่วยความจำ 743 00:40:15,070 --> 00:40:16,470 กำลังจะเกิดขึ้น 744 00:40:16,470 --> 00:40:17,410 >> ใช่? 745 00:40:17,410 --> 00:40:21,072 >> ผู้ชม: [ไม่ได้ยิน] dereference คุณก็ใส่ดาว [ไม่ได้ยิน] 746 00:40:21,072 --> 00:40:21,780 ศาสตราจารย์: ขวา 747 00:40:21,780 --> 00:40:28,430 ดังนั้นเพื่อ derererence หมายถึงตัวชี้ เพื่อไปยังที่อยู่ของตัวชี้ 748 00:40:28,430 --> 00:40:30,390 และได้รับข้อมูลที่มีค่า 749 00:40:30,390 --> 00:40:32,700 และวิธีที่จะทำอย่างนั้นเป็นตัวชี้ดาว 750 00:40:32,700 --> 00:40:34,262 อย่าสับสนว่า 751 00:40:34,262 --> 00:40:35,186 >> ผู้ชม: [ไม่ได้ยิน] 752 00:40:35,186 --> 00:40:35,852 >> ศาสตราจารย์: ใช่ 753 00:40:35,852 --> 00:40:39,750 ผู้ชม: ดังนั้นคุณก็สามารถเขียน ถ้าดาว s เท่ากับเท่ากับเสื้อดาว 754 00:40:39,750 --> 00:40:40,630 >> ศาสตราจารย์: ดีไม่มี 755 00:40:40,630 --> 00:40:40,960 เลขที่ 756 00:40:40,960 --> 00:40:41,640 >> ผู้ชม: ที่ไม่ดีพอใช่มั้ย? 757 00:40:41,640 --> 00:40:43,760 >> ศาสตราจารย์: มันไม่ได้เพราะคุณ เพียง แต่การตรวจสอบตัวอักษรตัวแรก 758 00:40:43,760 --> 00:40:46,010 คุณอาจจะ ต้องเรียงลำดับของห่วงบางอย่างที่ 759 00:40:46,010 --> 00:40:49,055 iterates ผ่านทุกเดียว ตัวละครในสายทั้งสอง 760 00:40:49,055 --> 00:40:49,837 ใช่. 761 00:40:49,837 --> 00:40:52,920 ดังนั้นหากคุณต้องการที่จะเพียงแค่ตรวจสอบเพื่อดู ถ้าพวกเขาเริ่มต้นด้วยสิ่งเดียวกัน 762 00:40:52,920 --> 00:40:58,220 คุณสามารถทำได้ถ้าดาว คือเท่ากับดาราเสื้อ 763 00:40:58,220 --> 00:41:01,300 แล้วคุณจะรู้ว่าอย่างน้อยพวกเขา เริ่มต้นด้วยตัวอักษรเดียวกัน 764 00:41:01,300 --> 00:41:01,952 >> ใช่? 765 00:41:01,952 --> 00:41:04,056 >> ผู้ชม: ดังนั้นวิธีการที่ คุณไม่ว่าจะเป็นอย่างไร 766 00:41:04,056 --> 00:41:06,064 เหมือนที่ฝังตัวสำหรับวงหรือตัวชี้? 767 00:41:06,064 --> 00:41:06,730 ศาสตราจารย์: ใช่ 768 00:41:06,730 --> 00:41:08,170 สวยมากเพียงสำหรับวง 769 00:41:08,170 --> 00:41:12,430 โปรดจำไว้ว่าเดวิดกล่าวถึงในชั้นเรียน น้ำตาลประโยคได้ฟรีหรือไม่ 770 00:41:12,430 --> 00:41:17,690 และเขาก็มีอย่างนี้ สิ่งที่ทำให้เกิดความสับสนของเสื้อดาว 771 00:41:17,690 --> 00:41:22,030 บวกหนึ่งที่จะบูรณาการ และผ่านการเลื่อนตัวชี้? 772 00:41:22,030 --> 00:41:29,910 วิธีที่ง่ายในการทำ นี้เป็นเพียงเสื้อของฉัน 773 00:41:29,910 --> 00:41:31,090 >> ดังนั้นมันจึงเป็นเพียงอาร์เรย์ 774 00:41:31,090 --> 00:41:34,630 วิธีการที่คุณจะต้องสำหรับ วงที่วิ่งจากศูนย์ถึงฉันที่ 775 00:41:34,630 --> 00:41:36,580 ฉันคือความยาวของ สตริงที่คุณสามารถเพียงแค่ 776 00:41:36,580 --> 00:41:39,510 เขียนว่าแทนที่จะทำ ตัวชี้ทั้งสิ่งอ้างอิง 777 00:41:39,510 --> 00:41:43,510 ดังนั้นสิ่งเหล่านี้ว่า เทียบเท่าในเครื่องคอมพิวเตอร์ของคุณ 778 00:41:43,510 --> 00:41:45,905 >> พวกคุณอาจจะไม่ จำเป็นที่จะต้องรู้ว่า 779 00:41:45,905 --> 00:41:48,280 แต่มันเป็นเรื่องที่ดีที่จะเพียงแค่ชนิดของ กลับมีในใจของคุณ 780 00:41:48,280 --> 00:41:52,630 เพิ่งรู้ว่าคอมพิวเตอร์ ตระหนักถึงบล็อกที่แตกต่างของรหัส 781 00:41:52,630 --> 00:41:53,890 เป็นสิ่งเดียวกัน 782 00:41:53,890 --> 00:41:57,510 เพราะนี่เป็นเพียงผู้ใช้มากขึ้น ที่เหมาะสำหรับเราที่จะนำเสนอเช่นนั้น 783 00:41:57,510 --> 00:41:58,150 อาร์เรย์ 784 00:41:58,150 --> 00:42:00,990 มันเป็นเรื่องง่ายขึ้น 785 00:42:00,990 --> 00:42:02,719 >> ผู้ชม: ดังนั้นการใช้ strlen เพื่อต้องการ get-- 786 00:42:02,719 --> 00:42:03,385 ศาสตราจารย์: ใช่ 787 00:42:03,385 --> 00:42:03,926 ผู้ชม: ตกลง 788 00:42:03,926 --> 00:42:05,940 ศาสตราจารย์: คุณสามารถ ใช้ strlen หรือหากคุณ 789 00:42:05,940 --> 00:42:10,420 ไม่ได้มี strlen คุณก็สามารถทำขึ้น จนกว่าคุณจะตีเครื่องหมายศูนย์สำหรับทั้งสอง 790 00:42:10,420 --> 00:42:11,568 ไม่ว่าจะทำงาน 791 00:42:11,568 --> 00:42:12,068 ใช่. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 ผู้ชม: ดังนั้นจึงเป็นไป dereference ทุก ตัวเดียวถ้าเราเป็นจริง 794 00:42:17,996 --> 00:42:21,044 เขียนรหัสนี้เรา ก็สามารถทำวงเล็บทีฉัน 795 00:42:21,044 --> 00:42:22,460 ต้องการกับดาวในด้านหน้าของมันได้หรือไม่ 796 00:42:22,460 --> 00:42:27,700 >> ศาสตราจารย์: ใช่เท่ากับ s เท่ากับ วงเล็บฉันแล้วให้ย้ายฉัน 797 00:42:27,700 --> 00:42:29,790 ลงได้จนกว่าคุณจะตีท้ายที่สุด 798 00:42:29,790 --> 00:42:31,286 ใช่ว่าเป็นสิ่งที่คุณจะทำอย่างไร 799 00:42:31,286 --> 00:42:33,660 และที่จริงผมจะมีต่อไป ตัวอย่างเช่นเมื่อเราจริง 800 00:42:33,660 --> 00:42:36,740 เขียน strlen เพื่อให้พวกคุณจะชนิด การได้เล่นรอบกับมันสักหน่อย 801 00:42:36,740 --> 00:42:43,567 >> ดังนั้นทุกคนที่ชัดเจนเกี่ยวกับหน่วยความจำเพียง สตริงตัวชี้ที่อยู่ที่มีคุณภาพ? 802 00:42:43,567 --> 00:42:46,650 บางแนวคิดระดับที่สูงกว่าที่คุณ จะแน่ใจว่าสำหรับความต้องการที่จะรู้ว่าในการตอบคำถาม 803 00:42:46,650 --> 00:42:48,928 วันพรุ่งนี้ 804 00:42:48,928 --> 00:42:49,904 >> ทั้งหมดขวา 805 00:42:49,904 --> 00:42:50,404 ดี. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 อือ 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 ตกลงดังนั้นสิ่งหนึ่งที่เรายังจะขอให้ คุณที่เราทำทุกปีในแบบทดสอบคือ 810 00:43:04,180 --> 00:43:08,340 สมมติว่าคุณลืม (ซึ่ง เราดูเหมือนจะลืมที่จะทำทุกปี) 811 00:43:08,340 --> 00:43:10,810 ที่ strlen ไฟล์ส่วนหัวมีการประกาศ 812 00:43:10,810 --> 00:43:13,860 และเพื่อให้เรามีที่จะเขียนมันเอง 813 00:43:13,860 --> 00:43:16,350 >> นี่คือรายการของแนวทางคือ ที่เราสามารถนำเสนอคุณ 814 00:43:16,350 --> 00:43:20,660 คนที่คุณได้รับจะคิดว่า s สตริงจะไม่เป็นโมฆะ 815 00:43:20,660 --> 00:43:23,830 คุณสามารถคิดว่าจะเป็น s สิ้นสุดลงด้วยเครื่องหมายศูนย์ 816 00:43:23,830 --> 00:43:26,670 เพื่อให้คุณรู้ว่าเป็นสิ่งที่ มันจะจบลงด้วยการ 817 00:43:26,670 --> 00:43:29,500 >> และเช่นว่า ความยาวของสวัสดีจะห้า 818 00:43:29,500 --> 00:43:32,890 ดังนั้นคุณจึงสามารถสรุปได้ว่าสวัสดี จะห้า, H-E-L-L-O 819 00:43:32,890 --> 00:43:35,890 คุณจะได้ไม่ต้องคิดว่า หลังบัญชีศูนย์สำหรับความยาว 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> นี้สิ่งสุดท้ายที่นี่ไม่ได้ กังวลเกี่ยวกับการล้นจำนวนเต็ม 822 00:43:42,300 --> 00:43:45,270 ไม่มีใครจำได้ สิ่งที่ล้นจำนวนเต็มคืออะไร? 823 00:43:45,270 --> 00:43:48,041 >> ผู้ชม: ไปเกิน ความยาวของ [ไม่ได้ยิน] 824 00:43:48,041 --> 00:43:50,740 >> ศาสตราจารย์: ใช่คุณสามารถอธิบาย บิตสิ่งที่หมายความว่า? 825 00:43:50,740 --> 00:43:55,330 >> ผู้ชม: ดังนั้นผมคิดว่ามันกลับไป ตัวอย่างตัดทอนก่อนหน้านี้ 826 00:43:55,330 --> 00:43:58,380 แต่ถ้าคุณมีเพียงตัวเลขจำนวนมาก ที่นอกเหนือไปจากจำนวนบิต 827 00:43:58,380 --> 00:44:01,409 จริงที่คุณสามารถกำหนด ว่ามันจะเพียงแค่ชนิดของตัดออก 828 00:44:01,409 --> 00:44:04,242 ศาสตราจารย์: ใช่อื่น ๆ ทั่วไป คอมพิวเตอร์กี่บิตเราไม่ได้? 829 00:44:04,242 --> 00:44:05,306 ผู้ชม: 32? 830 00:44:05,306 --> 00:44:06,430 ศาสตราจารย์: ใช่, 32, ด้านขวา 831 00:44:06,430 --> 00:44:10,030 และเพื่อให้เป็นสิ่งที่สี่ พันสองพันล้าน? 832 00:44:10,030 --> 00:44:13,579 สี่พันถึงสี่พันล้าน จำนวนเต็มบวกใช่มั้ย? 833 00:44:13,579 --> 00:44:15,370 สองพันลบ สองพันล้านบวก 834 00:44:15,370 --> 00:44:16,900 ขึ้นอยู่กับว่าคุณต้องการที่จะทำมัน 835 00:44:16,900 --> 00:44:21,470 >> และดังนั้นโดยทั่วไปเราสามารถมี จำนวนเต็มพอที่จะสามารถไปถึง 836 00:44:21,470 --> 00:44:25,800 ไปสองถึงวันที่ 31 ลบ 1 ใช่มั้ย? 837 00:44:25,800 --> 00:44:27,980 เพราะเมื่อเราตีสอง การ 32 ที่เราทำไม่ได้ 838 00:44:27,980 --> 00:44:30,040 ที่มีหน่วยความจำมากในคอมพิวเตอร์ของเรา 839 00:44:30,040 --> 00:44:32,310 >> ดังนั้นในทางทฤษฎีผม สามารถขึ้นมาเป็นจำนวนมาก 840 00:44:32,310 --> 00:44:34,560 ที่เป็นเหมือนสองถึง 46 841 00:44:34,560 --> 00:44:38,040 มันเป็นจำนวนมากตูด แต่ ในทางทฤษฎีคุณสามารถ 842 00:44:38,040 --> 00:44:42,730 และล้นจำนวนเต็มดังนั้นถ้าคุณพยายามที่จะ สร้างจำนวนเต็มที่นอกเหนือไปจากสิ่งที่เป็น 843 00:44:42,730 --> 00:44:44,790 คอมพิวเตอร์ของคุณมีความสามารถในการจัดเก็บ 844 00:44:44,790 --> 00:44:46,590 >> และเพื่อให้พวกคุณ ตัวอย่างนี้ไม่ได้มี 845 00:44:46,590 --> 00:44:51,330 ที่จะต้องกังวลเกี่ยวกับเราให้คุณยักษ์ สตริงที่สองถึง 32 ตัวอักษร 846 00:44:51,330 --> 00:44:51,830 ยาว. 847 00:44:51,830 --> 00:44:54,010 ที่จะจริงๆหมายถึง 848 00:44:54,010 --> 00:44:59,430 >> สิทธิทั้งหมดดังนั้นฉันแค่จะให้ พวกคุณโครงสร้างฐานนี้ 849 00:44:59,430 --> 00:45:02,020 คุณกำลังจะสร้าง ฟังก์ชั่นที่เรียกว่า int strlen ที่ 850 00:45:02,020 --> 00:45:08,436 ผ่านการในดาวถ่านหรือสตริง ตัวชี้ไปยังสตริงเรียกว่าฯ 851 00:45:08,436 --> 00:45:10,820 >> สิทธิทั้งหมดทุกคนที่คัดลอกลง 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 เย็น. 854 00:45:14,850 --> 00:45:17,020 Oops-- วิธีการอื่น ๆ 855 00:45:17,020 --> 00:45:21,360 >> ดังนั้นนี่คือชนิดเช่น ชิ้นส่วนที่ยากของปัญหา 856 00:45:21,360 --> 00:45:25,320 ดังนั้นฉันจะให้พวกคุณอาจจะห้าถึง หกนาทีกับชนิดของการระดมสมอง 857 00:45:25,320 --> 00:45:27,478 และเขียนฟังก์ชั่นนี้ 858 00:45:27,478 --> 00:45:29,710 >> ผู้ชม: เราไม่ การบัญชีสำหรับ [ไม่ได้ยิน] 859 00:45:29,710 --> 00:45:30,200 เราไม่ได้มีการใช้จำนวนเต็ม? 860 00:45:30,200 --> 00:45:31,241 >> ศาสตราจารย์: ไม่คุณทำไม่ได้ 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 ฉันจะให้พวกคุณคำใบ้ 863 00:48:06,930 --> 00:48:12,325 ห่วงในขณะที่อาจจะมีประโยชน์มากที่นี่ 864 00:48:12,325 --> 00:48:12,825 ใช่. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 นี่คือ 867 00:48:45,495 --> 00:48:45,995 ลูกอม 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 ลูกอมยังจะสามารถใช้ได้ สำหรับการตอบคำถามที่ฉันคิดว่า 870 00:48:53,410 --> 00:48:55,315 ดังนั้นพวกคุณจะได้รับทั้งหมด sugared ขึ้นในวันพรุ่งนี้ 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 สามารถ I-- คุณได้รับมัน 873 00:49:02,962 --> 00:49:03,718 >> ผู้ชม: ตกลง 874 00:49:03,718 --> 00:49:04,384 ศาสตราจารย์: ใช่ 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> บางที 30 วินาทีหรือมากกว่านั้น 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> ขวาทั้งหมดถ้าคุณ ไม่ได้ทำไม่ต้องกังวล 879 00:50:07,340 --> 00:50:08,810 เราจะย้ายผ่านนี้ร่วมกัน 880 00:50:08,810 --> 00:50:09,310 ตกลง. 881 00:50:09,310 --> 00:50:13,800 ดังนั้นฉันจะเป็นเพียงรูปแบบที่ โครงสร้างพื้นฐานสำหรับการทำงานที่นี่ 882 00:50:13,800 --> 00:50:17,255 int strlen 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 ครั้งแรกที่ไม่มีใครต้องการที่จะบอก ฉันว่า int หมาย? 885 00:50:23,460 --> 00:50:25,160 เราจำเป็นต้องมีฟังก์ชั่นนี้ 886 00:50:25,160 --> 00:50:26,709 >> ผู้ชม: strlen [ไม่ได้ยิน] 887 00:50:26,709 --> 00:50:27,500 ศาสตราจารย์: แน่นอน 888 00:50:27,500 --> 00:50:31,140 ดังนั้นสิ่งที่เกิดขึ้นในที่นี่ เราจำเป็นต้องกลับจำนวนเต็ม 889 00:50:31,140 --> 00:50:36,367 และตามที่ระบุไว้ใน สเป็คเราต้องการที่จะ return-- 890 00:50:36,367 --> 00:50:37,700 ไปสำหรับพวกมันเพียงแค่เก็บไป 891 00:50:37,700 --> 00:50:40,480 มันเป็นเรื่องดีทั้งหมด. 892 00:50:40,480 --> 00:50:42,960 กินมันทั้งหมดเพื่อให้ฉันไม่ได้มี จะเอามันกลับจริง 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 int ตัวเพียงหมายความว่าคุณ จะได้กลับมาเป็นจำนวนเต็ม 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> เป็นดาวของถ่านนี้คืออะไร 897 00:50:57,106 --> 00:50:58,640 นั่นหมายความว่าอย่างไร? 898 00:50:58,640 --> 00:51:00,879 >> ผู้ชม: เช่นเดียวกับสิ่งที่เป็นอยู่ในการป้อนข้อมูล 899 00:51:00,879 --> 00:51:01,670 ศาสตราจารย์: แน่นอน 900 00:51:01,670 --> 00:51:04,142 และสิ่งที่เกือบจะเป็น สิ่งเดียวกับดาวถ่าน? 901 00:51:04,142 --> 00:51:04,850 ผู้ชม: String? 902 00:51:04,850 --> 00:51:05,641 ศาสตราจารย์: แน่นอน 903 00:51:05,641 --> 00:51:09,080 ดังนั้นสิ่งที่เรากำลังทำคือการให้ นี้ชี้ไปยังสตริง 904 00:51:09,080 --> 00:51:09,580 ตกลง. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 เย็น. 907 00:51:13,360 --> 00:51:16,650 >> นอกจากนี้อย่าลืมถ้าเราลืม เพื่อให้คุณวงเล็บเหล่านี้ 908 00:51:16,650 --> 00:51:18,330 ไม่ลืมที่จะเขียนให้ตัวเอง 909 00:51:18,330 --> 00:51:20,720 เพราะในทางทฤษฎีรหัสของคุณ ไม่ถูกต้องถ้าคุณลืมที่จะเขียนพวกเขา 910 00:51:20,720 --> 00:51:21,803 เพียงแค่เสมอให้ความสนใจ 911 00:51:21,803 --> 00:51:23,750 เช่นเดียวกับสิ่งเล็ก ๆ น้อย ๆ ที่คุณไม่ได้สังเกตเห็น 912 00:51:23,750 --> 00:51:26,917 เมื่อคุณกำลังเขียนโปรแกรมบนแล็ปท็อปของคุณ เพราะแล็ปท็อปของคุณไม่ได้สำหรับคุณ 913 00:51:26,917 --> 00:51:28,624 อย่าลืมเมื่อ คุณเขียนด้วยมือ 914 00:51:28,624 --> 00:51:29,170 ใช่? 915 00:51:29,170 --> 00:51:30,954 >> ผู้ชม: ไม่ถูกต้อง แต่วิธีการที่? 916 00:51:30,954 --> 00:51:33,190 เช่นเดียวกับเราจะได้รับปัญหาทั้งหมดที่ไม่ถูกต้อง 917 00:51:33,190 --> 00:51:34,190 >> ศาสตราจารย์: ไม่มี 918 00:51:34,190 --> 00:51:34,860 ไม่ต้องกังวล 919 00:51:34,860 --> 00:51:39,270 มันเป็นเรื่องที่เป็นไปได้ในทางทฤษฎีจริง สำหรับคุณที่จะได้รับคะแนนเต็มในคำถาม 920 00:51:39,270 --> 00:51:41,980 แม้ว่ารหัสของคุณจะ ไม่เคยทำงานในชีวิตจริง 921 00:51:41,980 --> 00:51:46,052 ผมขอแนะนำให้คุณไม่ได้พยายาม ที่จะทำให้มันเกิดขึ้น 922 00:51:46,052 --> 00:51:48,260 ยกตัวอย่างเช่นถ้าทุกอย่าง ที่นี่เป็นที่ที่ถูกต้อง 923 00:51:48,260 --> 00:51:51,850 แต่คุณลืมลำไส้ใหญ่หรือวงเล็บ รหัสของคุณจะไม่ทำงานจริง 924 00:51:51,850 --> 00:51:53,740 แต่เราอาจจะมีความเมตตา 925 00:51:53,740 --> 00:51:54,394 >> ใช่? 926 00:51:54,394 --> 00:51:56,050 >> ผู้ชม: คุณต้อง แสดงความคิดเห็นในการเขียนด้วยลายมือของเราหรือไม่ 927 00:51:56,050 --> 00:51:57,758 >> ศาสตราจารย์: ไม่มีไม่มี ความกังวลเกี่ยวกับการที่ 928 00:51:57,758 --> 00:51:58,440 ไม่มีการแสดงความคิดเห็น 929 00:51:58,440 --> 00:51:59,400 สไตล์ควรจะดี 930 00:51:59,400 --> 00:52:01,470 เช่นเดียวกับไม่ smush ทุกอย่างในหนึ่งบรรทัด 931 00:52:01,470 --> 00:52:04,580 เราจะไม่ได้มีความสุข กับคุณถ้าคุณทำอย่างนั้น 932 00:52:04,580 --> 00:52:07,250 >> ไม่มีใครต้องการ ให้ฉันบรรทัดแรก? 933 00:52:07,250 --> 00:52:08,633 คำแนะนำมันเป็นเรื่องง่ายมาก 934 00:52:08,633 --> 00:52:09,320 >> ใช่? 935 00:52:09,320 --> 00:52:11,920 >> ผู้ชม: Int, n เท่ากับศูนย์ 936 00:52:11,920 --> 00:52:13,734 เพียงแค่ตั้งค่าเคาน์เตอร์ 937 00:52:13,734 --> 00:52:15,900 ศาสตราจารย์: ดังนั้นเราต้องการบาง การเรียงลำดับของเคาน์เตอร์ใช่มั้ย? 938 00:52:15,900 --> 00:52:19,780 ฉันแค่ไปที่จะตั้งชื่อมันว่า "นับ" เพื่อประโยชน์ของการอ่าน 939 00:52:19,780 --> 00:52:21,265 เราต้องการอะไรที่จะตั้งเท่ากับ? 940 00:52:21,265 --> 00:52:21,890 >> ผู้ชม: ศูนย์ 941 00:52:21,890 --> 00:52:23,840 ศาสตราจารย์: อ๋อ 942 00:52:23,840 --> 00:52:24,340 อัฒภาค. 943 00:52:24,340 --> 00:52:26,250 นอกจากนี้ยังเป็นที่แปลกมากอัฒภาคการวาดภาพ 944 00:52:26,250 --> 00:52:28,870 เพียงแค่ฝึกการทำที่ 945 00:52:28,870 --> 00:52:31,990 >> ดังนั้นเราจึงต้องการที่จะมีครั้งแรก เคาน์เตอร์ชนิด int 946 00:52:31,990 --> 00:52:35,360 เพราะเราต้องการที่จะนับขึ้นว่า ตัวละครจำนวนมากหรือตัวอักษร 947 00:52:35,360 --> 00:52:36,780 ในสายนี้ใช่มั้ย? 948 00:52:36,780 --> 00:52:38,330 ขั้นตอนที่ง่ายมากที่แรก 949 00:52:38,330 --> 00:52:42,140 >> ตกลงอาจจะเป็นบิตที่ซับซ้อนมากขึ้น ตอนนี้วิธีการที่เราจะทำเพื่อ? 950 00:52:42,140 --> 00:52:45,400 ไม่มีใครต้องการ ให้ฉันบรรทัดของรหัส 951 00:52:45,400 --> 00:52:48,450 ที่อาจจะสามารถช่วยให้วง ผ่านสิ่งนี้คืออะไร? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> ใช่จิตวิญญาณที่กล้าหาญในด้านหลัง? 954 00:52:56,900 --> 00:53:06,832 >> ผู้ชม: ตกลงดังนั้นในขณะที่จุด ดอกจันที่ใช่, ดาวของ s, 955 00:53:06,832 --> 00:53:09,465 ไม่เท่ากับศูนย์แล้วทำอะไรบางอย่าง? 956 00:53:09,465 --> 00:53:11,090 ศาสตราจารย์: นั่นจริงๆใกล้ 957 00:53:11,090 --> 00:53:11,835 จริงใกล้เคียง 958 00:53:11,835 --> 00:53:13,710 ดังนั้นฉันจะอยู่ สองสิ่งที่มี 959 00:53:13,710 --> 00:53:18,240 ครั้งแรกของทั้งหมดก็ไม่ได้ว่าเป็นศูนย์ 960 00:53:18,240 --> 00:53:20,110 มันคืออะไร? 961 00:53:20,110 --> 00:53:22,550 มันเป็นเทอร์มิโมฆะ, ซึ่งเป็นศูนย์เครื่องหมาย 962 00:53:22,550 --> 00:53:24,960 ดังนั้นพวกเขาจะแตกต่างกันใน แง่ของวิธีการที่พวกเขากำลังเก็บไว้ 963 00:53:24,960 --> 00:53:26,270 เพื่อให้คุณใกล้ชิดจริงๆ 964 00:53:26,270 --> 00:53:30,330 >> และประการที่สองเราไม่ต้องการ เพียงแค่เลื่อนตัวชี้ 965 00:53:30,330 --> 00:53:32,320 เราต้องการที่จะเป็นจริง เข้าถึงค่าใช่มั้ย? 966 00:53:32,320 --> 00:53:34,050 ดังนั้นทำอย่างไรเราทำเช่นนั้น? 967 00:53:34,050 --> 00:53:34,550 ง่ายมาก. 968 00:53:34,550 --> 00:53:36,841 ไม่คิดเกี่ยวกับตัวชี้ ไม่คิดเกี่ยวกับความทรงจำ 969 00:53:36,841 --> 00:53:38,525 กลับไปที่สัปดาห์ที่สองของหลักสูตรนี้ 970 00:53:38,525 --> 00:53:39,555 >> ผู้ชม: [ไม่ได้ยิน] 971 00:53:39,555 --> 00:53:40,680 ศาสตราจารย์: ณ จำได้ไหม? 972 00:53:40,680 --> 00:53:41,400 อะไรสตริงคืออะไร? 973 00:53:41,400 --> 00:53:42,650 พวกเขาจะถูกเก็บไว้ในหน่วยความจำได้อย่างไร 974 00:53:42,650 --> 00:53:43,300 >> ผู้ชม: พวกเขากำลังยก 975 00:53:43,300 --> 00:53:43,810 >> ศาสตราจารย์: พวกเขาจะยก 976 00:53:43,810 --> 00:53:45,550 ดังนั้นวิธีการที่เราจะเข้าถึง ตัวละครในแต่ละ? 977 00:53:45,550 --> 00:53:46,466 >> ผู้ชม: [ไม่ได้ยิน] 978 00:53:46,466 --> 00:53:47,530 ศาสตราจารย์: แน่นอน 979 00:53:47,530 --> 00:53:53,195 ดังนั้นสิ่งที่จะไป while-- ภายในที่นี่? 980 00:53:53,195 --> 00:53:54,940 S ของ - 981 00:53:54,940 --> 00:53:55,920 >> ผู้ชม: ครั้งที่หนึ่ง 982 00:53:55,920 --> 00:53:58,216 >> ศาสตราจารย์: โอ้ฉันไม่อยู่ไม่ได้หรือไม่ 983 00:53:58,216 --> 00:53:59,620 >> ผู้ชม: โอ้นับ? 984 00:53:59,620 --> 00:54:01,640 >> ศาสตราจารย์: เราก็สามารถ ใช้นับไม่สามารถเรา? 985 00:54:01,640 --> 00:54:03,050 >> ผู้ชม: ขอโทษนะฉันเรียกมันว่าฉัน 986 00:54:03,050 --> 00:54:04,341 >> ศาสตราจารย์: ใช่มันเป็นเรื่องดีทั้งหมด 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 เรามีตัวแปรที่นี่ที่ รับการประกาศให้เป็นเคาน์เตอร์ของเรา 989 00:54:10,760 --> 00:54:13,650 ดังนั้นทำไมเราไม่ใช้เพียงว่า ที่จะย้ายผ่านห่วงในขณะที่? 990 00:54:13,650 --> 00:54:15,230 ที่ทำให้รู้สึก? 991 00:54:15,230 --> 00:54:20,864 >> ดังนั้นในขณะที่ของ count-- ไม่มีใครต้องการ จะให้ฉันสิ่งที่เกิดขึ้นหลังจากที่นี่? 992 00:54:20,864 --> 00:54:22,030 ผู้ชม: มันไม่เท่ากับ 993 00:54:22,030 --> 00:54:23,405 ศาสตราจารย์: ไม่ไม่เท่ากันใช่มั้ย? 994 00:54:23,405 --> 00:54:26,200 มันเท่ากับปัง, เครื่องหมายอัศเจรีย์เท่ากับ 995 00:54:26,200 --> 00:54:28,500 สิ่งที่พวกคุณต้องการ เรียกว่าไม่ equal-- 996 00:54:28,500 --> 00:54:29,496 >> ผู้ชม: [ไม่ได้ยิน] 997 00:54:29,496 --> 00:54:30,990 >> ศาสตราจารย์: ใช่ 998 00:54:30,990 --> 00:54:37,110 จำคำพูดเดียวสำหรับถ่าน, คำพูดสองสำหรับสตริง 999 00:54:37,110 --> 00:54:38,630 โปรดใช้ความระมัดระวังเมื่อใช้พวกเขา 1000 00:54:38,630 --> 00:54:42,430 ดังนั้นเมื่อเรากำลังมองผ่าน อาร์เรย์ตัวละครที่ผ่านมา 1001 00:54:42,430 --> 00:54:46,420 เรารู้ว่าเราไม่ต้องการ ว่ามันจะเป็นเครื่องหมายศูนย์ 1002 00:54:46,420 --> 00:54:47,340 >> ดังนั้นในขณะที่ 1003 00:54:47,340 --> 00:54:48,840 เราไม่ได้ในตอนท้ายของสตริง 1004 00:54:48,840 --> 00:54:52,335 เราต้องการอะไรที่จะทำภายใน? 1005 00:54:52,335 --> 00:54:55,269 >> ผู้ชม: เราต้องการที่จะเพิ่ม เคาน์เตอร์จึงนับบวกบวก? 1006 00:54:55,269 --> 00:54:56,060 ศาสตราจารย์: แน่นอน 1007 00:54:56,060 --> 00:55:03,064 ดังนั้นที่นี่เรากำลังจะทำ นับนับบวกบวก 1008 00:55:03,064 --> 00:55:03,980 ที่ขาดหายไปหนึ่งบรรทัดมากขึ้น 1009 00:55:03,980 --> 00:55:05,090 เราเกือบจะมี 1010 00:55:05,090 --> 00:55:07,398 สิ่งที่เราลืมที่จะทำอย่างไร 1011 00:55:07,398 --> 00:55:08,770 >> ผู้ชม: กลับมาเป็นศูนย์? 1012 00:55:08,770 --> 00:55:10,820 >> ศาสตราจารย์: คุณต้องการที่จะกลับเป็นศูนย์? 1013 00:55:10,820 --> 00:55:12,962 >> ผู้ชม: ไม่กลับไป strlen 1014 00:55:12,962 --> 00:55:13,511 รอ. 1015 00:55:13,511 --> 00:55:14,760 ศาสตราจารย์: ซึ่งถูกเก็บไว้ใน? 1016 00:55:14,760 --> 00:55:15,090 ผู้ชม: จำนวน 1017 00:55:15,090 --> 00:55:15,589 นับ. 1018 00:55:15,589 --> 00:55:17,150 ศาสตราจารย์: แน่นอน 1019 00:55:17,150 --> 00:55:20,760 ดังนั้นที่นี่เรากำลังจะกลับมานับ 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> เพราะสิ่งที่เรากำลัง ทำอะไรที่นี่ ultimately-- 1022 00:55:25,380 --> 00:55:29,780 เรามีตัวแปรที่เคาน์เตอร์ จะเพิ่มขึ้นผ่านสตริงของเรา 1023 00:55:29,780 --> 00:55:33,050 เรากำลังจะเก็บไปให้ ไปรอบ ๆ และรอบ ๆ ในวงนี้ 1024 00:55:33,050 --> 00:55:37,700 และในขณะที่เราไม่ได้อยู่ในส่วนนี้ สตริงซึ่งเป็นเทอร์มิ null 1025 00:55:37,700 --> 00:55:40,410 >> และทุกครั้งที่เราผ่านไป มันเรากำลังเพิ่มไปที่เคาน์เตอร์ของเรา 1026 00:55:40,410 --> 00:55:42,640 และเรากำลังจะไป พร้อมในอาร์เรย์นี้ 1027 00:55:42,640 --> 00:55:44,880 และในตอนท้ายเมื่อเรา ตีเทอร์มินัล 1028 00:55:44,880 --> 00:55:48,469 เรารู้ว่าโอ้ที่เราสามารถทำได้ ทำลายกลับนับ 1029 00:55:48,469 --> 00:55:49,260 เรามี strlen ของเรา 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> ทุกคนไม่ได้รับว่า นี้ถูกนำมาใช้? 1032 00:55:56,400 --> 00:55:58,830 ในขณะที่ loops-- ฉันรู้ว่าเราไม่ได้ ทำมากเกินไปกับพวกเขา 1033 00:55:58,830 --> 00:56:01,240 แต่พวกเขามักจะ มากประโยชน์มากหากคุณ 1034 00:56:01,240 --> 00:56:05,390 ไม่ทราบว่าสิ่งที่คุณกำลังหยุด เงื่อนไขจำเป็นจะต้องมี 1035 00:56:05,390 --> 00:56:06,220 >> คำถาม? 1036 00:56:06,220 --> 00:56:10,080 >> ผู้ชม: เราสามารถเขียน null ในสภาพในขณะที่? 1037 00:56:10,080 --> 00:56:10,940 >> ศาสตราจารย์: ในขณะที่? 1038 00:56:10,940 --> 00:56:15,304 ใช่ดังนั้นในปัญหานี้ฉันมีเธอ คนคิดว่าของจะไม่เป็นโมฆะ 1039 00:56:15,304 --> 00:56:17,220 เพราะจำได้ว่า ในทางทฤษฎีถ้าฉันให้คุณ 1040 00:56:17,220 --> 00:56:21,180 ตัวชี้ว่ามีขนาดใหญ่เกินไปของหน่วยความจำ มันจะทำให้คุณเป็นโมฆะใช่มั้ย? 1041 00:56:21,180 --> 00:56:23,770 นั่นคือสิ่งที่ปฏิบัติการ ระบบจะทำ 1042 00:56:23,770 --> 00:56:26,960 >> ดังนั้นถ้าฉันไม่ได้บอกคุณที่จะคิด s จะเป็นโมฆะคุณต้องตรวจสอบ 1043 00:56:26,960 --> 00:56:32,050 ดังนั้นที่นี่คุณจะทำถ้า s เท่ากับเท่ากับ null กลับอย่างใดอย่างหนึ่ง 1044 00:56:32,050 --> 00:56:33,028 อะไรประมาณนั้น. 1045 00:56:33,028 --> 00:56:34,153 ผู้ชม: [ไม่ได้ยิน] ศูนย์ 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 ศาสตราจารย์: ตกลงฉันจะบอก คุณว่าทำไมเราไม่สามารถทำเช่นนั้น 1048 00:56:39,370 --> 00:56:43,357 เพราะจำได้ว่าในหน่วยความจำที่ถูกต้องที่นี่ 1049 00:56:43,357 --> 00:56:43,940 เราจะไปที่นี่ 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> คุณได้มีบล็อกยักษ์ ของหน่วยความจำทั้งหมดที่มีกริด 1052 00:56:54,090 --> 00:56:56,680 ที่เก็บค่าที่แตกต่างกันใช่มั้ย? 1053 00:56:56,680 --> 00:57:00,110 และเพื่อให้ทุกสตริง is-- สำหรับ ตัวอย่างเช่นถ้าหากเราจะป้อนข้อมูลสวัสดี 1054 00:57:00,110 --> 00:57:05,490 มันจะเป็น H-E-L-L-O เครื่องหมายศูนย์ใช่มั้ย? 1055 00:57:05,490 --> 00:57:09,570 และแล้วใครจะรู้เหมือนแบบสุ่ม สิ่งที่อยู่ในที่นี่หลังจากที่มัน 1056 00:57:09,570 --> 00:57:11,220 >> เราไม่ได้รู้จริงสิ่งที่มี 1057 00:57:11,220 --> 00:57:13,350 ดังนั้นถ้าคุณจะทำอย่างไร แทนเครื่องหมายศูนย์ 1058 00:57:13,350 --> 00:57:15,590 โมฆะมันอาจจะไม่เป็นโมฆะ 1059 00:57:15,590 --> 00:57:17,680 เพราะมันก็อาจหมายถึง บางสิ่งอื่น ๆ สุ่ม 1060 00:57:17,680 --> 00:57:19,270 ที่ไม่อยู่ในสายของคุณ 1061 00:57:19,270 --> 00:57:23,219 ดังนั้นวิธีการที่เรามักจะรู้ว่า จบสตริงที่มีเครื่องหมายเป็นศูนย์ 1062 00:57:23,219 --> 00:57:25,760 และเพื่อให้เป็นวิธีการที่เราเสมอ ตรวจสอบเพื่อดูจุดสิ้นสุดของสตริง 1063 00:57:25,760 --> 00:57:30,820 >> Null ทั้งหมดที่หมายถึงคือถ้าคุณมี ชี้ไม่ได้มีอยู่ครั้งแรกของทั้งหมด 1064 00:57:30,820 --> 00:57:36,160 หรือถ้าหน่วยความจำของคุณเป็นเพียงเพื่อให้มีขนาดใหญ่ คุณจะไม่สามารถกลับมามันแล้วมันจะเป็นโมฆะ 1065 00:57:36,160 --> 00:57:40,150 ดังนั้นควรระมัดระวังมากเมื่อความแตกต่าง ความแตกต่างระหว่าง null 1066 00:57:40,150 --> 00:57:42,130 และศูนย์ทับขวา 1067 00:57:42,130 --> 00:57:43,670 ใช่. 1068 00:57:43,670 --> 00:57:46,886 >> ทุกคนตกลงกับเรื่องนี้? 1069 00:57:46,886 --> 00:57:48,150 ตกลง. 1070 00:57:48,150 --> 00:57:50,440 >> ดังนั้นผมจึงมีพวกคุณเขียนออก strlen 1071 00:57:50,440 --> 00:57:53,790 feasibly เรายังสามารถขอให้คุณเขียน จาก A ถึงฉันจำได้ว่า "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 หรือสิ่งที่พวกคุณต้องการที่จะเรียกมันได้หรือไม่ 1073 00:57:55,400 --> 00:57:58,010 ฟังก์ชั่นที่อยู่ใน Vigenere และซีซาร์ที่ 1074 00:57:58,010 --> 00:58:00,900 แปลงค่า ASCII เป็นจำนวนเต็ม? 1075 00:58:00,900 --> 00:58:04,360 ที่ยังได้เกิดขึ้นในแบบทดสอบที่ผ่านมา ฟังก์ชั่นที่เราได้ขอให้คุณเขียน 1076 00:58:04,360 --> 00:58:08,280 >> สวยมากฟังก์ชั่นใด ๆ ที่คุณใช้และ 1077 00:58:08,280 --> 00:58:11,660 ง่ายมากที่จะเขียนด้วยตัวคุณเอง เซ็นเซอร์ชอบต่ำ 1078 00:58:11,660 --> 00:58:14,620 คือส่วนบนเพื่อลดเพื่อบน 1079 00:58:14,620 --> 00:58:17,964 ฟังก์ชั่นที่จะแปลง สตริงจากตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่ 1080 00:58:17,964 --> 00:58:19,380 เราทุกคนรู้วิธีการที่จะทำอย่างนั้นใช่มั้ย? 1081 00:58:19,380 --> 00:58:21,100 มันเป็นเรื่องง่ายสวย 1082 00:58:21,100 --> 00:58:24,770 เพียงแค่ต้องการที่จะให้แน่ใจว่าคุณ can-- มันเป็นกระบวนการคิดที่เหมือนกัน 1083 00:58:24,770 --> 00:58:26,940 คุณเพียงแค่ย้ำผ่าน และคุณเปิดสิ่ง 1084 00:58:26,940 --> 00:58:30,190 คุณจะนับหรือเมื่อ คุณเปิดสิ่งที่แตกต่าง 1085 00:58:30,190 --> 00:58:32,280 >> ฉันจะ suggest-- ฉัน ไม่ทราบว่าเรากำลังจะ 1086 00:58:32,280 --> 00:58:39,080 ขอให้คุณจดจำสิ่งที่เงินทุนหรือ ทุน Z หรือตัวพิมพ์เล็กหรือตัวพิมพ์เล็ก 1087 00:58:39,080 --> 00:58:42,640 ซีอยู่ใน Ascii แต่ผมจะแนะนำ บางทีอาจจะเขียนลงในกรณีที่ 1088 00:58:42,640 --> 00:58:44,124 พวกเราทำ. 1089 00:58:44,124 --> 00:58:45,540 เพียงเพื่อให้คุณผู้ชายที่มีการอ้างอิง 1090 00:58:45,540 --> 00:58:47,180 เช่นเดียวกับพิมพ์ใหญ่เป็นสิ่งที่ 197? 1091 00:58:47,180 --> 00:58:51,320 และตัวพิมพ์เล็กแล้วเป็นเหมือน 50 บางสิ่งบางอย่าง 1092 00:58:51,320 --> 00:58:52,492 65 ใช่มีคุณไป 1093 00:58:52,492 --> 00:58:54,950 ดังนั้นเพียงแค่สวยมากรู้ ความแตกต่างระหว่างพวกเขาเป็น 32 1094 00:58:54,950 --> 00:58:57,670 ที่สำคัญสวย 1095 00:58:57,670 --> 00:58:58,170 ใช่. 1096 00:58:58,170 --> 00:59:01,445 ฉันดีกับเรื่องนี้? 1097 00:59:01,445 --> 00:59:01,945 ตกลง. 1098 00:59:01,945 --> 00:59:03,109 >> ผู้ชม: เราจะทำได้ ในทางทฤษฎีเขียนบาง 1099 00:59:03,109 --> 00:59:04,410 ของเหล่านี้ลงเช่นกันเมื่อ little-- ของเรา 1100 00:59:04,410 --> 00:59:07,035 >> ศาสตราจารย์: คุณในทางทฤษฎี ก็สามารถคัดลอกฟังก์ชั่นลง 1101 00:59:07,035 --> 00:59:08,482 นั่นเป็นความจริง 1102 00:59:08,482 --> 00:59:11,080 >> ผู้ชม: ไม่ได้ [ไม่ได้ยิน] 1103 00:59:11,080 --> 00:59:12,720 >> ศาสตราจารย์: พวกคุณมีแผ่น 1104 00:59:12,720 --> 00:59:14,194 พวกคุณมีแผ่นบันทึก 1105 00:59:14,194 --> 00:59:14,860 คุณสามารถพิมพ์ 1106 00:59:14,860 --> 00:59:15,490 คุณสามารถเขียนมัน 1107 00:59:15,490 --> 00:59:17,031 คุณสามารถทำสิ่งที่คุณต้องการด้วย 1108 00:59:17,031 --> 00:59:18,530 ใช่. 1109 00:59:18,530 --> 00:59:21,406 ดังนั้นในทางทฤษฎีถ้า คุณต้องการที่จะไปสำหรับ 1110 00:59:21,406 --> 00:59:23,338 >> ผู้ชม: [ไม่ได้ยิน] แต่เราทำไม่ได้จริงๆ 1111 00:59:23,338 --> 00:59:25,994 จำเป็นต้องจำ ค่าที่เราสามารถทำได้เพียงแค่ 1112 00:59:25,994 --> 00:59:28,914 เพื่อใช้บนหรือ ฟังก์ชั่นที่ต่ำกว่าใช่มั้ย? 1113 00:59:28,914 --> 00:59:29,580 ศาสตราจารย์: ใช่ 1114 00:59:29,580 --> 00:59:32,740 แต่ถ้าเราให้คุณคำถาม ที่บอกว่าเขียนไปบน 1115 00:59:32,740 --> 00:59:34,350 แล้วคุณจะต้องเขียนมัน 1116 00:59:34,350 --> 00:59:38,150 ดังนั้นพวกคุณสามารถสมมติว่าคุณ คนมีการเข้าถึงฟังก์ชั่นทั้งหมด 1117 00:59:38,150 --> 00:59:41,523 แต่ถ้าคุณต้องการที่จะใช้บนหรือ ต่ำกว่าสิ่งที่คุณยังต้องทำอย่างไร 1118 00:59:41,523 --> 00:59:43,840 >> ผู้ชม: [ไม่ได้ยิน] ใช้ CS50 [ไม่ได้ยิน] 1119 00:59:43,840 --> 00:59:44,840 >> ศาสตราจารย์: มันเป็น CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 ระวังมี 1122 00:59:48,310 --> 00:59:50,640 >> ดังนั้นเพื่อให้บนเพื่อลด, คือส่วนบนเป็นที่ต่ำกว่า 1123 00:59:50,640 --> 00:59:52,990 ฟังก์ชั่นที่เกี่ยวข้องกับการ มีการจัดการสตริง 1124 00:59:52,990 --> 00:59:55,490 ทั้งหมดภายในทั้งแอสกี หรือภายในห้องสมุดคณิตศาสตร์ 1125 00:59:55,490 --> 00:59:57,350 หรือภายในห้องสมุดสตริง 1126 00:59:57,350 --> 01:00:00,290 ดังนั้นถ้าพวกคุณใช้เหล่านั้น ฟังก์ชั่นต้องระวังที่จะจำ 1127 01:00:00,290 --> 01:00:01,451 ที่จะรวมส่วนหัวที่ 1128 01:00:01,451 --> 01:00:03,950 ดังนั้นบางทีสิ่งที่คุณยัง ต้องการรวมไว้ในแผ่นของคุณ 1129 01:00:03,950 --> 01:00:04,892 สิ่งที่เป็นส่วนหัวหรือไม่ 1130 01:00:04,892 --> 01:00:06,600 อะไรคือห้องสมุด คุณได้ใช้? 1131 01:00:06,600 --> 01:00:08,550 อะไรคือฟังก์ชั่น ภายในห้องสมุดเหล่านั้นหรือไม่ 1132 01:00:08,550 --> 01:00:09,230 มันสำคัญ. 1133 01:00:09,230 --> 01:00:10,420 >> ใช่? 1134 01:00:10,420 --> 01:00:12,570 >> ผู้ชม: เราสามารถเพียง ตำรวจออกและทำ hashtag 1135 01:00:12,570 --> 01:00:14,955 ผ่านอย่างแน่นอน จดหมายทุกครั้งที่เราเคย 1136 01:00:14,955 --> 01:00:17,340 เห็นชอบในทุกคำถาม? 1137 01:00:17,340 --> 01:00:18,320 >> ศาสตราจารย์: คุณสามารถ 1138 01:00:18,320 --> 01:00:20,361 ผมไม่ทราบว่ามีความสุข เรากำลังจะได้เกรด 1139 01:00:20,361 --> 01:00:25,090 ตอบคำถามที่ว่าเมื่อทุกชิ้นส่วนของรหัส เป็นสองเท่าตราบใดที่มันจะต้องมี 1140 01:00:25,090 --> 01:00:27,200 ผมไม่ทราบว่าเราอาจจะ จะปิดจุดสำหรับรูปแบบ 1141 01:00:27,200 --> 01:00:28,790 แต่ในทางทฤษฎีของคุณ รหัสจะได้รับสิทธิ 1142 01:00:28,790 --> 01:00:30,915 พวกคุณอาจจะออกมาและตำรวจ เพียงรวมทุกอย่าง 1143 01:00:30,915 --> 01:00:32,044 ที่ดีเกินไปใช่ 1144 01:00:32,044 --> 01:00:32,960 ผู้ชม: [ไม่ได้ยิน] 1145 01:00:32,960 --> 01:00:33,270 ศาสตราจารย์: ใช่ 1146 01:00:33,270 --> 01:00:34,900 ผมจะแนะนำไม่ได้ทำที่ว่า 1147 01:00:34,900 --> 01:00:35,505 ใช่. 1148 01:00:35,505 --> 01:00:36,130 ผู้ชม: เย็น 1149 01:00:36,130 --> 01:00:36,620 ศาสตราจารย์: เป็นคำถามที่ดี 1150 01:00:36,620 --> 01:00:37,480 ผู้ชม: ดังนั้นสถานการณ์กรณีที่เลวร้าย 1151 01:00:37,480 --> 01:00:38,563 ศาสตราจารย์: กรณีที่เลวร้ายที่สุด 1152 01:00:38,563 --> 01:00:40,350 หากคุณทั้งหมดลืม คุณสามารถทำเช่นนั้นได้ 1153 01:00:40,350 --> 01:00:40,850 ใช่. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> อ้างรหัสอยู่ที่นั่น 1156 01:00:45,400 --> 01:00:49,176 ผมใช้ n แทนนับ แต่คุณ รู้ว่าสิ่งที่ลอยเรือของคุณ 1157 01:00:49,176 --> 01:00:51,092 ผู้ชม: รอดังนั้นเรา จะได้ไม่ต้อง hashtag 1158 01:00:51,092 --> 01:00:53,460 รวมเพราะเรา เริ่มต้นที่ int หรือไม่ 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> ศาสตราจารย์: ใช่ผมก็สันนิษฐานว่า เราได้ขอให้เขียนฟังก์ชั่น 1161 01:00:59,924 --> 01:01:02,340 หากคุณต้องการที่จะปลอดภัยคุณ อาจจะใส่มันมี 1162 01:01:02,340 --> 01:01:05,650 แต่ผมก็ไม่ได้รำคาญใช่ 1163 01:01:05,650 --> 01:01:09,919 >> ฉันไม่ได้รู้ว่าถ้าคุณ ต้องห้องสมุดนี้ 1164 01:01:09,919 --> 01:01:12,710 เพราะคุณไม่ได้จริงๆการพิมพ์ อะไรหรืออะไรใช่มั้ย? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 ใช่ครับผมไม่ทราบว่า คุณจะต้องห้องสมุด 1167 01:01:19,568 --> 01:01:22,400 >> ตกลง. 1168 01:01:22,400 --> 01:01:26,020 และนี่ก็เป็นอีกเล็กน้อยพร้อม สายของการจัดการหน่วยความจำ 1169 01:01:26,020 --> 01:01:27,400 ชนิดของบิตหากินนี้ 1170 01:01:27,400 --> 01:01:28,960 คิดเกี่ยวกับสิ่งนี้. 1171 01:01:28,960 --> 01:01:30,580 คุณมีฟังก์ชั่นที่เรียกว่าบำบัด 1172 01:01:30,580 --> 01:01:33,570 ฉันจะได้ตั้งชื่อมันว่าอะไรก็ตาม แต่ผมเลือกที่จะตั้งชื่อบำบัด 1173 01:01:33,570 --> 01:01:36,000 ฉันมีมันอยู่เหนือหลักของฉัน 1174 01:01:36,000 --> 01:01:39,790 จำไว้ว่าคุณต้องการที่จะมี ฟังก์ชั่นหลักของคุณหลังจากที่ 1175 01:01:39,790 --> 01:01:42,370 คุณต้องการที่จะให้แน่ใจว่าคุณ รวมถึงเป็นต้นแบบของด้านบน 1176 01:01:42,370 --> 01:01:45,750 >> แต่ในกรณีนี้มันก็สั้น ที่ผมรู้สึกว่าผมสามารถทำได้เพียงแค่ 1177 01:01:45,750 --> 01:01:47,260 รวมไว้บนหลัก 1178 01:01:47,260 --> 01:01:51,170 ผมไม่จำเป็นต้องมีต้นแบบ เพราะเขียนไว้แล้วข้างต้น 1179 01:01:51,170 --> 01:01:55,430 ดังนั้นสิ่งที่ฉันทำในฟังก์ชั่นหลักของฉัน คือการสร้างจำนวนเต็ม x เท่ากับ 10 1180 01:01:55,430 --> 01:02:00,490 ฉันโทรฟังก์ชั่นบำบัดของฉัน แล้วพิมพ์บางสิ่งบางอย่าง 1181 01:02:00,490 --> 01:02:02,840 >> และแล้วว่าเป็นจริง สิ่งที่จะทำบำบัด 1182 01:02:02,840 --> 01:02:04,340 พวกคุณต้องการที่จะคิดผ่านทางนี้ 1183 01:02:04,340 --> 01:02:05,423 เพราะมันเป็นบิตหากิน 1184 01:02:05,423 --> 01:02:07,220 มันมากยุ่งยากมากจริง 1185 01:02:07,220 --> 01:02:09,549 คิดว่าผ่านสิ่งนี้ โปรแกรมจะแสดงผล 1186 01:02:09,549 --> 01:02:10,840 ฉันจะให้พวกคุณสองนาที 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> การอภิปรายที่ดี? 1189 01:03:37,891 --> 01:03:38,853 >> ผู้ชม: ใช่ 1190 01:03:38,853 --> 01:03:39,815 >> ศาสตราจารย์: ใช่ 1191 01:03:39,815 --> 01:03:42,220 สิทธิทั้งหมดดังนั้นนี่คือ หากินด้วยเหตุผล 1192 01:03:42,220 --> 01:03:44,845 และนี่คือเหตุผลที่ผมต้องการที่จะนำ นี้สนใจของทุกคน 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 ไม่มีใครต้องการที่จะให้ฉัน ข้อเสนอแนะความพยายามที่? 1195 01:03:51,147 --> 01:03:52,230 สิ่งนี้จะพิมพ์ออกมา? 1196 01:03:52,230 --> 01:03:53,930 ดีโดยสิ้นเชิงถ้าคุณผิด 1197 01:03:53,930 --> 01:03:55,619 ใช่? 1198 01:03:55,619 --> 01:03:59,483 >> ผู้ชม: ฉันคิดว่ามันเป็น 100 10 ในสองสายแยกต่างหาก 1199 01:03:59,483 --> 01:04:00,940 >> ศาสตราจารย์: และ 10? 1200 01:04:00,940 --> 01:04:03,154 ไม่มีใครคาดเดาได้อื่น ๆ ? 1201 01:04:03,154 --> 01:04:04,150 ใช่? 1202 01:04:04,150 --> 01:04:09,040 >> ผู้ชม: อาจจะแค่ 10 เพราะ บำบัดจะไม่กลับอะไร? 1203 01:04:09,040 --> 01:04:11,610 >> ศาสตราจารย์: ตกลงดังนั้นเรา มีการคาดเดาจำนวนหนึ่ง 1204 01:04:11,610 --> 01:04:14,990 คือจำนวนเดาที่สองคือ เพียงแค่จะพิมพ์ออกมา 10 1205 01:04:14,990 --> 01:04:17,623 ไม่มีใครคาดเดาได้อื่น ๆ ? 1206 01:04:17,623 --> 01:04:19,654 ตกลง. 1207 01:04:19,654 --> 01:04:21,070 ถ้าอย่างนั้นเราเดินผ่านนี้ใช่มั้ย? 1208 01:04:21,070 --> 01:04:23,903 เมื่อใดก็ตามที่คุณจะได้รับชิ้นส่วนของรหัส ไม่เพียงแค่มองไปที่มันและเป็นเช่น 1209 01:04:23,903 --> 01:04:25,060 อาว่าเป็นสิ่งที่มาก! 1210 01:04:25,060 --> 01:04:26,460 ผมงงไปหมดแล้ว! 1211 01:04:26,460 --> 01:04:28,220 ชอบความสงบตัวเองลง 1212 01:04:28,220 --> 01:04:31,602 เพียงแค่รู้ว่าคุณสามารถทำได้เพียงแค่ มองผ่านสายรหัสตามสาย 1213 01:04:31,602 --> 01:04:32,310 นั่นคือทั้งหมดที่มันเป็น 1214 01:04:32,310 --> 01:04:33,840 มันก็เหมือนกับการอ่านหนังสือ 1215 01:04:33,840 --> 01:04:38,000 >> ดังนั้นด้วยฟังก์ชั่นใด ๆ เรามักจะเริ่มต้นที่หลัก 1216 01:04:38,000 --> 01:04:40,860 ดังนั้นเรากำลังจะไป เริ่มต้นที่เป็นโมฆะหลัก int, 1217 01:04:40,860 --> 01:04:43,010 แม้กระทั่งโปรแกรม แล้ววิ่งลงไปใช่มั้ย? 1218 01:04:43,010 --> 01:04:45,070 เริ่มต้นที่หลักในการเป็นโมฆะ 1219 01:04:45,070 --> 01:04:48,030 int x เท่ากับ 10 1220 01:04:48,030 --> 01:04:50,400 >> ดังนั้นฉันจะลบนี้ 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 ฉันจะดึงหน่วยความจำเพียงเพื่อให้คุณ ชนิดของคนสามารถมองเห็นสิ่งที่เกิดขึ้น 1223 01:04:58,470 --> 01:05:02,190 >> โปรดจำไว้ว่าที่นี่เรามีสแต็คของเราหรือไม่ 1224 01:05:02,190 --> 01:05:05,810 ที่นี่เรามีของเรา กองที่ไหนสักแห่งที่นี่ 1225 01:05:05,810 --> 01:05:07,470 สแต็คเติบโตขึ้นใช่มั้ย? 1226 01:05:07,470 --> 01:05:10,150 และภายในสแต็คที่คุณมี ไฟทำงานเช่นเดียวกับ 1227 01:05:10,150 --> 01:05:12,230 ทั้งหมดของตัวแปรท้องถิ่นไฟ 1228 01:05:12,230 --> 01:05:14,310 >> ดังนั้นที่นี่ int x เท่ากับ 10 1229 01:05:14,310 --> 01:05:17,670 ภายในฟังก์ชั่นหลักของเราเรา สร้างตัวแปร x ที่เรียกว่า 1230 01:05:17,670 --> 01:05:20,590 เรากำลังตั้งค่าที่เท่ากับ 10 1231 01:05:20,590 --> 01:05:24,200 ที่นี่คุณจะได้มี x บางและคุณ การตั้งค่าที่เท่ากับ 10 ขวา 1232 01:05:24,200 --> 01:05:25,400 ภายในหลัก 1233 01:05:25,400 --> 01:05:27,430 ทุกคนดีหรือไม่? 1234 01:05:27,430 --> 01:05:28,070 >> ฟังก์ชั่น 1235 01:05:28,070 --> 01:05:30,330 ดังนั้นตอนนี้ภายในหลักของเรา ฟังก์ชั่นที่เรากำลังเรียกร้อง 1236 01:05:30,330 --> 01:05:31,810 ฟังก์ชั่นที่เราได้เขียนข้างต้น 1237 01:05:31,810 --> 01:05:34,550 ดังนั้นตอนนี้เรากำลังเข้าสู่ฟังก์ชั่นที่สอง 1238 01:05:34,550 --> 01:05:40,120 เรากำลังจะสร้างอีก int ตัวแปร x เท่ากับ 100 1239 01:05:40,120 --> 01:05:42,410 สิ่งที่เกิดขึ้นที่นี่ที่กอง? 1240 01:05:42,410 --> 01:05:46,980 สิ่งที่เกิดขึ้นเมื่อคุณเรียก ฟังก์ชั่นที่สร้างตัวแปรใหม่ได้หรือไม่ 1241 01:05:46,980 --> 01:05:50,038 สิ่งที่เกิดขึ้นที่นี่ที่กอง? 1242 01:05:50,038 --> 01:05:52,134 >> ผู้ชม: [ไม่ได้ยิน] กองอยู่ด้านบน? 1243 01:05:52,134 --> 01:05:52,800 ศาสตราจารย์: ใช่ 1244 01:05:52,800 --> 01:05:54,050 ดังนั้นจึงจะสร้างสำเนา 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 และชนิดของมันกองอยู่ด้านบน 1247 01:05:57,740 --> 01:06:00,700 คิดว่า stack-- กอง หนังสือสแต็คของอะไร 1248 01:06:00,700 --> 01:06:06,520 กองอยู่ด้านบนเป็นครั้งแรกในช่วง ออกสุดท้ายในครั้งแรกออกมา 1249 01:06:06,520 --> 01:06:08,471 >> ดังนั้นมันจะสร้าง x ที่นี่ 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> ที่จะมี funcs ทุกตัวแปร 1252 01:06:14,450 --> 01:06:14,950 ที่ดี 1253 01:06:14,950 --> 01:06:20,980 ดังนั้นตอนนี้เรามีสองที่แตกต่างกันของ x ที่ เป็นตัวแทนของสองสิ่งที่แตกต่างกันมาก 1254 01:06:20,980 --> 01:06:24,470 จากนั้นเรากำลังจะพิมพ์ ออกจากจำนวนเต็มของ x 1255 01:06:24,470 --> 01:06:26,430 ดังนั้นขอพิมพ์ 100 ใช่มั้ย? 1256 01:06:26,430 --> 01:06:29,389 เพราะที่นี่ก็ 100 1257 01:06:29,389 --> 01:06:31,680 เพื่อให้เป็นสิ่งแรก ว่ามันจะพิมพ์ออกมา 1258 01:06:31,680 --> 01:06:35,710 ไม่มีอะไรที่นี้ในฐานะที่เป็นผลตอบแทนที่ฟังก์ชั่น ตอนนี้ที่ทำงานในสายหลักที่ 1259 01:06:35,710 --> 01:06:37,070 จะทำ 1260 01:06:37,070 --> 01:06:39,160 ทุกคนที่ดีกับฉันเพื่อให้ห่างไกล? 1261 01:06:39,160 --> 01:06:43,034 >> ดังนั้นเราในขณะนี้ผ่านสองออกจาก สามบรรทัดของฟังก์ชั่นหลักของเรา 1262 01:06:43,034 --> 01:06:44,450 ตอนนี้เรากำลังจะไปบรรทัดที่สาม 1263 01:06:44,450 --> 01:06:46,350 เรากำลังจะไป printf 1264 01:06:46,350 --> 01:06:48,222 x ที่อยู่ในหลักนี้คืออะไร? 1265 01:06:48,222 --> 01:06:49,263 อะไรที่เป็นตัวแทนของ? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> สิ่งที่มีค่าเป็น x ตอนนี้หรือไม่ 1268 01:06:54,280 --> 01:06:55,220 >> ผู้ชม: 100 1269 01:06:55,220 --> 01:06:56,799 >> ศาสตราจารย์: มันเป็น 100? 1270 01:06:56,799 --> 01:06:57,590 ผู้ชม: ยัง 10 1271 01:06:57,590 --> 01:06:58,878 ศาสตราจารย์: ยัง 10 1272 01:06:58,878 --> 01:07:00,870 ใช่. 1273 01:07:00,870 --> 01:07:06,810 เพราะจำภายใน บำบัดของเราเท่ากับ x 100 1274 01:07:06,810 --> 01:07:09,690 แต่ถ้าเรากลับมา ฟังก์ชั่นหลักของเรา 1275 01:07:09,690 --> 01:07:12,440 ตัวแปรที่ถูกเก็บไว้ใน สถานที่ที่แตกต่างกันในกองของเรา 1276 01:07:12,440 --> 01:07:16,250 >> ดังนั้นตอนนี้เราต้องกลับไปที่ สแต็คหลักไฟตัวแปรท้องถิ่น 1277 01:07:16,250 --> 01:07:18,460 และนี่ x เท่ากับ 10 1278 01:07:18,460 --> 01:07:20,300 และเพื่อที่เรากำลังจะพิมพ์ออกมา 10 1279 01:07:20,300 --> 01:07:22,530 >> ดังนั้นเธอจึงถูกต้องอย่างแน่นอน 1280 01:07:22,530 --> 01:07:25,053 เรากำลังจะมี การส่งออกของ 100 และ 10 1281 01:07:25,053 --> 01:07:25,553 ใช่? 1282 01:07:25,553 --> 01:07:28,700 ผู้ชม: เมื่อคุณ malloc มันเป็น กองหรือสแต็คที่เป็น [ไม่ได้ยิน] หรือไม่ 1283 01:07:28,700 --> 01:07:31,950 ศาสตราจารย์: เมื่อคุณ malloc, คุณกำลังการหน่วยความจำจากกอง 1284 01:07:31,950 --> 01:07:32,830 และการจัดสรรมัน 1285 01:07:32,830 --> 01:07:34,950 เพื่อที่คุณจะได้ไม่ต้อง ยุ่งกับการใด ๆ นี้ 1286 01:07:34,950 --> 01:07:38,100 ดังนั้นผมคิดว่าประเด็นที่ใหญ่กว่า นี่คือสิ่งที่เรียกว่าขอบเขต 1287 01:07:38,100 --> 01:07:39,650 >> สำหรับบรรดาของคุณที่อยู่ใน เซสชั่นการตรวจสอบคืนที่ผ่านมา 1288 01:07:39,650 --> 01:07:41,080 เราได้พูดคุยเกี่ยวกับเรื่องนี้ในเวลาสั้น ๆ 1289 01:07:41,080 --> 01:07:45,380 ขอบเขตการกำหนดวิธีการและ เมื่อตัวแปรของคุณอยู่ 1290 01:07:45,380 --> 01:07:48,050 หรือสิ่งที่อยู่ภายในกรอบ ตัวแปรของคุณทำอยู่ 1291 01:07:48,050 --> 01:07:51,690 >> สวยมากกฎของหัวแม่มือโดยทั่วไป คือ variables-- ของคุณถ้าคุณสร้างพวกเขา 1292 01:07:51,690 --> 01:07:56,660 ภายใน braces-- หยิกพวกเขามีอยู่ เฉพาะภายในวงเล็บปีกกาเหล่านั้น 1293 01:07:56,660 --> 01:08:00,312 >> ดังนั้นตัวอย่างเช่นในการทำงานของเรา บำบัดคุณจะเห็นทั้งสองการจัดฟัน 1294 01:08:00,312 --> 01:08:02,020 ถ้าคุณกำลังสร้าง อะไรที่อยู่ภายในของมัน 1295 01:08:02,020 --> 01:08:06,500 โอกาสเป็นสิ่งที่คุณกำลังทำอยู่ การสร้างสแต็คและจัดเก็บที่มี 1296 01:08:06,500 --> 01:08:07,430 สิ่งที่เหมือนกันในหลัก 1297 01:08:07,430 --> 01:08:09,950 ที่เก็บไว้เพียงด้านในของหลัก 1298 01:08:09,950 --> 01:08:13,560 >> นอกจากนี้คุณต้องการที่จะเป็น มากระวังให้มากที่นี่ 1299 01:08:13,560 --> 01:08:18,310 เพราะขอบเขตยังให้ยืม ตัวเองไปตัวอย่างที่แตกต่างกัน 1300 01:08:18,310 --> 01:08:25,950 ดังนั้นตัวอย่างเช่นสำหรับ ห่วงสำหรับฉัน int เท่ากับ 0 1301 01:08:25,950 --> 01:08:28,460 ฉันจะน้อยกว่าผมไม่ทราบว่า 10 1302 01:08:28,460 --> 01:08:32,111 ผมบวกบวก 1303 01:08:32,111 --> 01:08:34,560 และคุณได้มีรหัสภายในของมันใช่มั้ย? 1304 01:08:34,560 --> 01:08:38,830 >> ที่ไม่ตัวแปรนี้ ฉันจริงเพียงอยู่? 1305 01:08:38,830 --> 01:08:40,510 เฉพาะภายในสำหรับวงของคุณ 1306 01:08:40,510 --> 01:08:43,640 ดังนั้นฉันเดิมพันหลายพวกคุณมี อาจพบข้อผิดพลาดนี้เมื่อ 1307 01:08:43,640 --> 01:08:45,930 คุณกำลังทำโปรแกรมใน psets ของคุณ 1308 01:08:45,930 --> 01:08:49,990 มีกี่คนที่พวกคุณได้พยายามที่จะใช้ผม ด้านนอกของห่วงและมีความผิดพลาด? 1309 01:08:49,990 --> 01:08:53,310 ชอบจำนวนเต็ม unreferenced หรือสิ่งที่ต้องการนั้น 1310 01:08:53,310 --> 01:08:56,069 >> เหตุผลที่เกิดขึ้น เป็นเพราะที่นี่คุณ 1311 01:08:56,069 --> 01:08:59,109 การสร้างสิ่งที่มีเพียง ที่มีอยู่ภายในสำหรับวงของคุณ 1312 01:08:59,109 --> 01:09:01,972 และถ้าคุณพยายามที่จะใช้มันฉันไม่ได้ มีอยู่จริงนอกของมัน 1313 01:09:01,972 --> 01:09:04,930 ดังนั้นโดยทั่วไปคอมพิวเตอร์บอกผม ไม่ทราบว่าคุณกำลังพูดถึง 1314 01:09:04,930 --> 01:09:08,689 ทั้งหมดที่ฉันรู้คือว่าผม ที่นี่ แต่ตอนนี้ไม่ได้ 1315 01:09:08,689 --> 01:09:12,580 >> ดังนั้นถ้าผมจะสร้าง สำหรับวงภายในใช่มั้ย? 1316 01:09:12,580 --> 01:09:19,080 และฉันจะสร้างอีก เช่นเจ int และมีมันทำสิ่งที่ 1317 01:09:19,080 --> 01:09:23,689 และคุณมีรหัสภายในของ ห่วงว่าเจมีอยู่เพียงที่นี่ 1318 01:09:23,689 --> 01:09:26,029 แต่ที่ยังมีอยู่ภายในฉัน 1319 01:09:26,029 --> 01:09:29,310 และเพื่อให้เจมีอยู่เพียง ภายในนี้ห่วง 1320 01:09:29,310 --> 01:09:33,850 ในขณะที่ผมมีอยู่ในสิ่งที่ทั้ง 1321 01:09:33,850 --> 01:09:34,500 >> ทุกคนชัดเจน? 1322 01:09:34,500 --> 01:09:37,416 สิ่งเดียวกันกับงบเงื่อนไข ถ้าคุณต้องการที่จะสร้างอะไร 1323 01:09:37,416 --> 01:09:40,390 สิ่งเดียวกันกับลูปในขณะที่ถ้า คุณต้องการที่จะสร้างอะไร 1324 01:09:40,390 --> 01:09:42,390 นั่นคือสิ่งที่จะเป็น มากระมัดระวังเกี่ยวกับ 1325 01:09:42,390 --> 01:09:45,681 ดังนั้นนี่เป็นปัญหาที่ดีจริงๆใน รู้สึกว่ามันแสดงให้เห็นถึงสิ่งที่สอง 1326 01:09:45,681 --> 01:09:47,160 มันแสดงให้เห็นเป็นครั้งแรกขอบเขต 1327 01:09:47,160 --> 01:09:49,550 มันแสดงให้เห็นและ นอกจากนี้ยังจัดสรรหน่วยความจำ 1328 01:09:49,550 --> 01:09:54,130 เพราะพวกคุณควรรู้ว่า ฟังก์ชั่นเติบโตขึ้นในกอง 1329 01:09:54,130 --> 01:09:56,710 และที่ว่าเมื่อคุณเรียก ฟังก์ชั่นที่คุณกำลังสร้าง 1330 01:09:56,710 --> 01:09:59,060 หลักสแต็คใหม่ของหน่วยความจำ 1331 01:09:59,060 --> 01:10:02,100 นั่นคือความแตกต่างจาก สิ่งที่หน่วยความจำของคุณเป็นไฟ 1332 01:10:02,100 --> 01:10:03,300 ใช่. 1333 01:10:03,300 --> 01:10:03,800 ต๊าย! 1334 01:10:03,800 --> 01:10:05,470 ทุกคนตกลงในที่? 1335 01:10:05,470 --> 01:10:06,750 นั่นคือทำให้เกิดความสับสน 1336 01:10:06,750 --> 01:10:09,380 หัวข้อที่ดีมากที่จะข้ามไป เพราะคุณอาจจะ 1337 01:10:09,380 --> 01:10:12,255 จะได้รับหากินบาง สิ่งที่ต้องการที่เกี่ยวกับการตอบคำถาม 1338 01:10:12,255 --> 01:10:13,350 ใช่. 1339 01:10:13,350 --> 01:10:13,850 เย็น. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 ฉันจะทำให้คุณได้รับ 100 หนึ่ง สาย 10 แล้วในที่อื่น ๆ 1342 01:10:18,430 --> 01:10:21,468 ใช่ดีมาก 1343 01:10:21,468 --> 01:10:26,350 >> ตกลงตอนนี้พวกคุณจะได้รับ โอกาสที่จะช่วยสอน 1344 01:10:26,350 --> 01:10:30,600 คุณจะได้รับการตอบทั้งหมดที่น่ารัก อีเมลที่บางครั้งผมได้รับ 1345 01:10:30,600 --> 01:10:34,290 >> ดังนั้นเรียนล่ะผมเห็นผมคิดว่าบางสิ่งบางอย่าง ไปอย่างผิดปกติกับคอมไพเลอร์ของฉัน 1346 01:10:34,290 --> 01:10:37,910 ฉันแน่ใจว่ารหัสของฉันถูกต้อง แต่ฉันได้รับ แต่ความผิดของการแบ่งส่วน 1347 01:10:37,910 --> 01:10:39,074 ทุกครั้งที่ผมทำงาน 1348 01:10:39,074 --> 01:10:39,740 เกิดอะไรขึ้น? 1349 01:10:39,740 --> 01:10:42,844 กรุณาช่วยจำนวนมากของความรัก 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> ถ้าพวกคุณได้สิ่งที่ต้องการ ว่าวิธีการที่คุณจะตอบสนอง? 1352 01:10:49,410 --> 01:10:51,860 เหล่านี้เป็นจริงที่พบบ่อยมาก คำถามที่เราจะขอให้คุณ 1353 01:10:51,860 --> 01:10:54,090 คือถ้าเราจะให้คุณ สถานการณ์ที่เราจะให้เรา 1354 01:10:54,090 --> 01:10:56,350 เดาที่ดีที่สุดของคุณในสิ่งที่เกิดขึ้น 1355 01:10:56,350 --> 01:11:00,710 ใครมีแทงที่สิ่งที่เกิดขึ้นหรือไม่? 1356 01:11:00,710 --> 01:11:02,654 ใช่? 1357 01:11:02,654 --> 01:11:06,056 >> ผู้ชม: บางที dereferenced null บางอย่างเช่นตัวชี้ 1358 01:11:06,056 --> 01:11:08,924 ชี้ที่บางสิ่งบาง null 1359 01:11:08,924 --> 01:11:11,590 ศาสตราจารย์: ใช่ว่าจะเป็น ตัวอย่างของเมื่อที่จะเกิดขึ้น 1360 01:11:11,590 --> 01:11:14,467 แต่สิ่งที่เป็นภาพขนาดใหญ่ ของสิ่งที่เกิดขึ้นที่นี่? 1361 01:11:14,467 --> 01:11:17,050 ผู้ชม: มันคุณกำลังพยายาม ในการเข้าถึงหน่วยความจำที่คุณไม่ได้ 1362 01:11:17,050 --> 01:11:18,175 ควรจะมีการเข้าถึง? 1363 01:11:18,175 --> 01:11:19,200 ศาสตราจารย์: แน่นอน 1364 01:11:19,200 --> 01:11:24,800 ดังนั้นคิดว่าเป็นความผิด seg, ปิด ข้อ จำกัด พื้นที่ จำกัด ในหน่วยความจำ 1365 01:11:24,800 --> 01:11:27,780 ที่คุณไม่ควรสัมผัส 1366 01:11:27,780 --> 01:11:31,670 >> สวยมากดังนั้นเมื่อคุณกำลังพยายาม เพื่อ index-- เช่นตัวอย่างเช่น 1367 01:11:31,670 --> 01:11:34,110 คุณได้ประกาศ อาร์เรย์จากศูนย์ถึงเก้า 1368 01:11:34,110 --> 01:11:37,360 แต่คุณลองสัมผัสที่ 10 ความคุ้มค่าที่คุณไม่ได้มีการเข้าถึงที่ 1369 01:11:37,360 --> 01:11:38,694 เพราะคุณไม่ได้ประกาศว่า 1370 01:11:38,694 --> 01:11:40,943 และเพื่อให้คอมพิวเตอร์ของคุณจะ ที่จะมองว่าเป็นเช่น 1371 01:11:40,943 --> 01:11:43,440 เอ่อโอ้คุณกำลังพยายามที่จะไป นอกขอบเขตของดัชนี 1372 01:11:43,440 --> 01:11:45,270 ฉันจะให้คุณ ความผิดพลาดในการแบ่งส่วน 1373 01:11:45,270 --> 01:11:46,590 >> คิดว่าเป็นส่วนใช่มั้ย? 1374 01:11:46,590 --> 01:11:49,665 ส่วนที่พิเศษคือความผิด เมื่อคุณพยายามที่จะทำลายบางสิ่งบางอย่าง 1375 01:11:49,665 --> 01:11:50,790 และคุณไม่ควรจะมี 1376 01:11:50,790 --> 01:11:53,660 เป็นความผิดส่วนทุกที่ทุกเวลา คุณพยายามที่จะสัมผัสสิ่ง 1377 01:11:53,660 --> 01:11:54,970 ที่คุณไม่ควรสัมผัส 1378 01:11:54,970 --> 01:11:56,815 >> ดังนั้นตัวอย่างทั่วไปเป็นดัชนี 1379 01:11:56,815 --> 01:11:58,940 แน่นอนถ้าคุณกำลังพยายาม ให้สัมผัสที่เป็นโมฆะ 1380 01:11:58,940 --> 01:12:00,220 ที่ยังจะทำงานได้ดี 1381 01:12:00,220 --> 01:12:02,300 หากตัวชี้ของคุณกำลังพยายามที่จะ สัมผัสสิ่งที่ไม่ควรสัมผัส 1382 01:12:02,300 --> 01:12:03,730 ที่ยังสามารถทำงานได้ดี 1383 01:12:03,730 --> 01:12:07,120 ส่วนใหญ่มักจะคุณจะ เห็นนี้ในอาร์เรย์ 1384 01:12:07,120 --> 01:12:07,740 ทุกคนดีหรือไม่? 1385 01:12:07,740 --> 01:12:10,374 >> ผู้ชม: ดังนั้นหากคุณต้องการ ในการเข้าถึงจุดที่ 10 1386 01:12:10,374 --> 01:12:12,290 และมีเพียง จำกัด เก้าหรือบางสิ่งบางอย่าง 1387 01:12:12,290 --> 01:12:13,160 >> ศาสตราจารย์: ใช่ว่า 1388 01:12:13,160 --> 01:12:13,660 สวยมาก 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 เย็น. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> รักแล้วล่ะ 1393 01:12:19,920 --> 01:12:23,440 ดังนั้นเราจึงได้มียอดเยี่ยมเหล่านี้ สิ่งที่เรียกว่าแปลก 1394 01:12:23,440 --> 01:12:25,472 ถ้าผสาน sort-- ที่เรา เห็นในตัวอย่างเมื่อ 1395 01:12:25,472 --> 01:12:27,180 ดาวิดทำทั้ง ในสิ่งที่ class-- ทำไม 1396 01:12:27,180 --> 01:12:29,760 ถ้ามันมากเร็วกว่า ใด ๆ ของประเภทอื่น ๆ 1397 01:12:29,760 --> 01:12:33,310 ทำไมเราได้รำคาญรู้ ใด ๆ ของประเภทอื่น ๆ หรือไม่ 1398 01:12:33,310 --> 01:12:35,100 >> คำถามนี้เป็นสิ่งที่เป็นจริงขอให้คุณ? 1399 01:12:35,100 --> 01:12:36,659 มีอะไรในสาม word-- 1400 01:12:36,659 --> 01:12:37,950 ผู้ชม: อะไรคือการปิดหรือไม่ 1401 01:12:37,950 --> 01:12:38,530 ศาสตราจารย์: แน่นอน 1402 01:12:38,530 --> 01:12:39,946 นั่นคือสิ่งที่คำถามที่ถาม 1403 01:12:39,946 --> 01:12:43,682 อะไรค้าออกระหว่าง ผสานเรียงโองการประเภทอื่น ๆ ? 1404 01:12:43,682 --> 01:12:45,850 >> ผู้ชม: ใช้หน่วยความจำใช่มั้ย? 1405 01:12:45,850 --> 01:12:47,720 >> ศาสตราจารย์: คุณ อธิบายว่าบิตมากขึ้นหรือไม่? 1406 01:12:47,720 --> 01:12:49,490 แรกให้อธิบายการจัดเก็บผสาน 1407 01:12:49,490 --> 01:12:50,970 การเรียงลำดับผสานทำงานอย่างไร 1408 01:12:50,970 --> 01:12:55,220 >> ผู้ชม: ดังนั้นจึงทำงานโดย หารทุกอย่างลงในช่วงครึ่งปี 1409 01:12:55,220 --> 01:13:00,660 แล้ววางไว้ร่วมกัน และจัดสรรในการสั่งซื้อ 1410 01:13:00,660 --> 01:13:02,862 เช่นเวลาคุณผสานทุกชุด 1411 01:13:02,862 --> 01:13:03,820 ศาสตราจารย์: สวยมาก 1412 01:13:03,820 --> 01:13:06,861 ดังนั้นผมจึงสามารถวาดออกมานี้ แต่มันจะ พาฉันห้านาทีที่จะดึงมันออกมา 1413 01:13:06,861 --> 01:13:10,220 มองย้อนกลับไปยังภาพนิ่งส่วน ที่เราครอบคลุมผสานการเรียงลำดับ 1414 01:13:10,220 --> 01:13:10,790 ที่แน่นอน 1415 01:13:10,790 --> 01:13:13,406 >> ดังนั้นวิธีการที่ผสานการทำงานของการจัดเรียง มันคือสิ่งที่แบ่งออกในช่วงครึ่งปี 1416 01:13:13,406 --> 01:13:15,780 และแล้วมันก็มีลักษณะที่ ค่าแรกของทั้งหมดของพวกเขา 1417 01:13:15,780 --> 01:13:17,000 และทุกประเภทเดียวที่ 1418 01:13:17,000 --> 01:13:20,364 อย่างต่อเนื่องสร้างอาร์เรย์ใหม่และ ทำให้สิ่งที่มากขึ้นในการสั่งซื้อ 1419 01:13:20,364 --> 01:13:23,030 และดังนั้นในขณะที่จริงๆ ได้อย่างรวดเร็วเพราะ it's-- คุณรู้ว่า 1420 01:13:23,030 --> 01:13:25,380 การค้นหาแบบไบนารีคือการเข้าสู่ระบบของ n n 1421 01:13:25,380 --> 01:13:27,880 คุณกำลังสร้างจำนวนมาก อาร์เรย์ที่แตกต่างกันที่คุณ 1422 01:13:27,880 --> 01:13:29,700 ใช้เป็นจำนวนมากของหน่วยความจำ 1423 01:13:29,700 --> 01:13:33,080 ดังนั้นในขณะที่มันได้เร็วขึ้นการค้าปิด ที่นี่เป็นที่ที่คุณกำลังใช้หน่วยความจำมากขึ้น 1424 01:13:33,080 --> 01:13:38,490 >> และเพื่อให้คำแนะนำทุกประเภทและการค้นหา ถูกปกคลุมมากขึ้นในปีนี้ 1425 01:13:38,490 --> 01:13:41,610 กว่าที่พวกเขาได้รับในปีที่ผ่านมา 1426 01:13:41,610 --> 01:13:45,100 พวกคุณจะเห็นว่า สะท้อนให้เห็นตามความเหมาะสมในการตอบคำถาม 1427 01:13:45,100 --> 01:13:49,160 แน่นอนฉันจะใช้เวลาไป มากกว่าสิ่งที่ทุกประเภทที่แตกต่างกัน 1428 01:13:49,160 --> 01:13:52,320 มีวิธีการค้นหาแบบไบนารี, วิธีการค้นหาเชิงเส้น 1429 01:13:52,320 --> 01:13:54,750 วิธีการอาจจะ pseudocode รหัสเหล่านั้นออก 1430 01:13:54,750 --> 01:13:55,950 อะไรคือเวลาที่ทำงานอยู่หรือไม่ 1431 01:13:55,950 --> 01:13:59,210 สิ่งที่ต้องการทำงานครั้งเป็นอย่างมาก ง่ายต่อการคัดลอกลงบนแผ่นบันทึก 1432 01:13:59,210 --> 01:13:59,710 ขวา? 1433 01:13:59,710 --> 01:14:01,420 >> เป็นเรื่องยากมากเมื่อคุณอยู่ ในช่วงกลางการทดสอบ 1434 01:14:01,420 --> 01:14:02,390 และคุณจะต้องคิดออกว่า 1435 01:14:02,390 --> 01:14:03,160 คัดลอกมันลง 1436 01:14:03,160 --> 01:14:05,550 ฉันรับประกันคุณคุณ จะต้องรู้ว่า 1437 01:14:05,550 --> 01:14:06,860 สิ่งที่ไม่ชอบการค้า? 1438 01:14:06,860 --> 01:14:10,064 กรณีที่เลวร้ายที่สุดสถานการณ์กรณี สำหรับทั้งหมดของพวกเขามากได้รับรู้ 1439 01:14:10,064 --> 01:14:10,564 ใช่? 1440 01:14:10,564 --> 01:14:12,730 >> ผู้ชม: เราจำเป็นที่จะต้อง รู้วิธีการจัดเรียงรหัสผสาน? 1441 01:14:12,730 --> 01:14:15,470 เช่นเดียวกับที่เราทำต้อง จำ recursive หรือไม่ 1442 01:14:15,470 --> 01:14:18,950 >> ศาสตราจารย์: ฉันอย่างสงสัยมันเพียงแค่ เพราะมันก็เหมือนกับการที่ค่อนข้างซับซ้อน 1443 01:14:18,950 --> 01:14:22,282 แต่มันอาจจะไม่เป็นไปไม่ได้ถ้าเรา ขอให้คุณใช้ pseudocode มันออกมา 1444 01:14:22,282 --> 01:14:22,781 ใช่. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> อ๋อตกลงอีกครั้งหนึ่ง 1447 01:14:29,170 --> 01:14:31,387 เรื่องนี้อาจจะเกิดขึ้นใน คุณชิ้นสุดท้ายในบิต 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 ใช่? 1450 01:14:43,090 --> 01:14:44,930 ไม่ทุกคนได้ยินว่า? 1451 01:14:44,930 --> 01:14:48,360 >> ตกลงดังนั้นสวยมากแรกของ ทุกสิ่งที่ประเภทของโปรแกรม 1452 01:14:48,360 --> 01:14:51,000 จะให้คุณมีการส่งออกเช่นนี้? 1453 01:14:51,000 --> 01:14:54,350 จำได้ว่าเราขอให้คุณเรียนรู้เกี่ยวกับ นี้ชนิดใหม่ของเครื่องมือการแก้จุดบกพร่อง? 1454 01:14:54,350 --> 01:14:57,340 สิ่งที่ชื่อของมันคืออะไร 1455 01:14:57,340 --> 01:14:59,460 valgrind ขวา 1456 01:14:59,460 --> 01:15:02,600 >> มันเป็นโปรแกรมที่ คุณสามารถเรียกที่อาจ 1457 01:15:02,600 --> 01:15:05,940 ติดตามทุกหน่วยความจำที่คุณ ใช้ในโปรแกรมของคุณและที่เกิดขึ้น 1458 01:15:05,940 --> 01:15:11,090 ดังนั้นถ้าคุณมีบางสิ่งบางอย่างเช่น หายไปแน่นอน 40 ไบต์ในหนึ่งช่วงตึก 1459 01:15:11,090 --> 01:15:14,870 คุณอาจไม่ได้ ความทรงจำที่จะเป็นอิสระมัน 1460 01:15:14,870 --> 01:15:18,710 เพราะถ้าคุณกำลังใช้ไบต์หน่วยความจำ นั่นหมายความว่าคุณได้เข้าถึงที่หน่วยความจำ 1461 01:15:18,710 --> 01:15:20,240 แต่คุณยังไม่ได้สามารถที่จะเป็นอิสระ 1462 01:15:20,240 --> 01:15:21,948 ดังนั้นคุณจึงต้องการที่จะทำให้ ตรวจสอบให้แน่ใจว่าคุณยัง 1463 01:15:21,948 --> 01:15:31,420 ใช้ free-- ที่เป็น function-- ที่จะเป็นอิสระทั้งหมด 1464 01:15:31,420 --> 01:15:34,930 ของหน่วยความจำจัดสรรโดย malloc 1465 01:15:34,930 --> 01:15:35,500 >> เย็น. 1466 01:15:35,500 --> 01:15:37,140 ดังนั้นสไลด์นี้ฉันจะมีขึ้น 1467 01:15:37,140 --> 01:15:41,050 มันเป็นทุกที่ในจำนวนมาก การบรรยายในหลายส่วนภาพนิ่ง 1468 01:15:41,050 --> 01:15:44,254 จริงๆคุณต้องการให้แน่ใจว่า คุณก็รู้ว่าทั้งหมดนี้ 1469 01:15:44,254 --> 01:15:47,170 ทั้งในแผ่นบันทึกย่อของคุณหรือถ้าคุณ ต้องการที่จะจดจำมันรู้สึกอิสระที่จะ 1470 01:15:47,170 --> 01:15:48,836 ที่จริงจริงๆสิ่งที่สำคัญจริงๆ 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> ยังเป็นสิ่งที่ดีมาก คำถามที่เราอาจจะถาม 1473 01:15:56,890 --> 01:16:00,320 เป็นลักษณะการเลือก sort-- ทำไมที่ เลือก sort-- ทั้งหมดของ runtimes 1474 01:16:00,320 --> 01:16:02,060 มีการยกกำลังสอง n 1475 01:16:02,060 --> 01:16:06,714 โดยไม่คำนึงถึงวิธีการที่รายการมาถึง คุณเป็นดังนั้นทำไมเลือก sort-- 1476 01:16:06,714 --> 01:16:08,630 ฉันจะให้พวกคุณ 30 ที่สองคิดเกี่ยวกับเรื่องนี้ 1477 01:16:08,630 --> 01:16:10,700 เพราะชนิดของความสับสน 1478 01:16:10,700 --> 01:16:12,710 มันเกี่ยวข้องกับความคิดความคิดบางอย่าง 1479 01:16:12,710 --> 01:16:16,470 ทำไมวิ่งครั้งจะเหมือนกันใน ทั้งที่เลวร้ายที่สุดและดีที่สุดสถานการณ์กรณี? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> ใช่? 1482 01:16:30,000 --> 01:16:38,084 >> ผู้ชม: เพ​​ราะการเลือกการจัดเรียงในแต่ละ ตำแหน่งหรือพื้นที่ในอาร์เรย์เล็ก ๆ น้อย ๆ นี้ 1483 01:16:38,084 --> 01:16:40,350 สิ่งหนึ่งหรือสิ่งที่ 1484 01:16:40,350 --> 01:16:44,430 ดังนั้นแม้จะอยู่ในสถานการณ์กรณีที่ดีที่สุด แม้ว่าจะเรียงได้อย่างสมบูรณ์แบบ 1485 01:16:44,430 --> 01:16:47,380 ก็ยังจะต้องเป็นเหมือนตกลงหนึ่ง 1486 01:16:47,380 --> 01:16:49,000 ในสถานที่แรกของฉันฉันมีหนึ่ง 1487 01:16:49,000 --> 01:16:50,250 และผ่านทั้งหมดของพวกเขา 1488 01:16:50,250 --> 01:16:51,249 ตกลงหนึ่งที่มีขนาดเล็กที่สุด 1489 01:16:51,249 --> 01:16:53,053 และจากนั้นก็จะไปอีกครั้ง และเป็นเหมือนตกลงสอง 1490 01:16:53,053 --> 01:16:54,594 เป็นที่เล็กที่สุดของทุกสิ่ง 1491 01:16:54,594 --> 01:16:56,804 แต่มันก็ยังคงมีการ ตรวจสอบแต่ละคนและทุกคน 1492 01:16:56,804 --> 01:16:57,470 ศาสตราจารย์: ใช่ 1493 01:16:57,470 --> 01:17:00,490 ดังนั้นตัวอย่างเช่นให้เพียงกล่าวว่า เรามีรายชื่อเรียงลำดับแล้ว 1494 01:17:00,490 --> 01:17:03,390 อาร์เรย์ 04:59 1495 01:17:03,390 --> 01:17:07,100 วิธีการที่เลือกประเภทคือว่า มันผ่านไปมันจะตรวจสอบทั้งสอง 1496 01:17:07,100 --> 01:17:08,234 จากนั้นก็จะตรวจสอบทั้งสอง 1497 01:17:08,234 --> 01:17:09,650 และจากนั้นก็จะตรวจสอบและตรวจสอบ 1498 01:17:09,650 --> 01:17:13,285 มันช่วยให้การตรวจสอบทั้งหมดของพวกเขา โดยไม่คำนึงถึงหรือไม่ 1499 01:17:13,285 --> 01:17:14,160 มันเรียงจริง 1500 01:17:14,160 --> 01:17:16,450 เพราะเห็นว่าเป็นเพียง วิธีการจัดเรียงการทำงาน 1501 01:17:16,450 --> 01:17:19,530 >> ดังนั้นคำถามนี้เป็นชนิดเช่น เป็นคำถามที่ความคิดเราจะขอให้ 1502 01:17:19,530 --> 01:17:21,430 ที่ไหนแรกให้คุณ รู้ว่าสิ่งที่จัดเรียงการเลือก 1503 01:17:21,430 --> 01:17:23,304 เป็นสิทธิที่จะสามารถ ที่จะตอบคำถาม 1504 01:17:23,304 --> 01:17:26,200 คุณจะต้องสามารถที่จะเข้าใจ แนวคิดสิ่งที่เกิดขึ้น 1505 01:17:26,200 --> 01:17:30,760 และจากนั้นคุณสามารถใช้มันและคิดว่าตกลง ขอเพียงแค่จินตนาการสถานการณ์ที่เลวร้าย 1506 01:17:30,760 --> 01:17:32,230 พวกเขากำลังทั้งหมดในลำดับถัดลงมา 1507 01:17:32,230 --> 01:17:33,290 วิธีที่จะส่งผลกระทบต่อมันได้หรือไม่ 1508 01:17:33,290 --> 01:17:34,650 >> เกิดอะไรขึ้นถ้ามันขึ้นเพื่อ? 1509 01:17:34,650 --> 01:17:35,640 ถ้ามันเรียงอยู่แล้ว? 1510 01:17:35,640 --> 01:17:37,240 วิธีที่จะส่งผลกระทบต่อ runtimes หรือไม่ 1511 01:17:37,240 --> 01:17:40,270 แล้วเรียงเลือกคุณจะสังเกตเห็น ว่ามันไม่ได้เรื่องจริง 1512 01:17:40,270 --> 01:17:43,500 เพราะคุณกำลังตรวจสอบทั้งหมด ค่าโดยไม่คำนึงถึงสิ่งที่เกิดขึ้น 1513 01:17:43,500 --> 01:17:45,810 >> และสิ่งที่ดีมากที่จะจำ 1514 01:17:45,810 --> 01:17:50,290 ทำไมบางประเภทมีความแตกต่างจากคนอื่น ๆ และวิธีการที่ดีที่สุดและเลวร้ายที่สุดกรณีสถานการณ์ 1515 01:17:50,290 --> 01:17:52,740 จะส่งผลกระทบทั้งหมดของพวกเขา 1516 01:17:52,740 --> 01:17:56,700 >> ฉันจะตีจริงๆในทุกประเภท เพราะเห็นว่าจะมีการตอบคำถาม 1517 01:17:56,700 --> 01:17:57,199 ใช่. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 ตกลง. 1520 01:18:01,320 --> 01:18:05,590 มีเหลือหกนาทีเป็น 1521 01:18:05,590 --> 01:18:09,880 ฉันสามารถใช้เวลาสามนาทีคำถาม 1522 01:18:09,880 --> 01:18:12,290 ฉันยังสามารถป้วนเปี้ยน เช่น 20 นาทีหลังจากที่ส่วน 1523 01:18:12,290 --> 01:18:13,850 ถ้าคุณต้องการที่จะถามคำถามเช่นกัน 1524 01:18:13,850 --> 01:18:16,330 ไม่มีใครมีเพียงสั้น ๆ จริงๆ คำถามหรือปัญหาความคิด 1525 01:18:16,330 --> 01:18:17,360 พวกเขากำลังไม่ชัดเจนเกี่ยวกับตอนนี้? 1526 01:18:17,360 --> 01:18:17,832 ใช่? 1527 01:18:17,832 --> 01:18:19,720 >> ผู้ชม: คุณสามารถพูดคุยเล็ก ๆ น้อย ๆ ผู้ประกอบการเกี่ยวกับบิตบิต? 1528 01:18:19,720 --> 01:18:20,280 >> ศาสตราจารย์: ใช่ 1529 01:18:20,280 --> 01:18:22,446 ผู้ประกอบการเพื่อให้มีค่าที่เหมาะสม บางสิ่งบางอย่างที่คุณอาจ 1530 01:18:22,446 --> 01:18:24,170 ก็อาจต้องการที่จะวางบนแผ่นของคุณ 1531 01:18:24,170 --> 01:18:27,540 ดังนั้น quickly-- ฉันไม่ต้องการ ที่จะไปมากเกินไปในเชิงลึก 1532 01:18:27,540 --> 01:18:31,164 เพราะฮาร์วาร์ในการตรวจสอบของพวกเขา เซสชั่นที่ปกคลุมมันสวยดี 1533 01:18:31,164 --> 01:18:33,080 ผู้ประกอบการค่าที่เหมาะสมมี ห้าของพวกเขาใช่มั้ย? 1534 01:18:33,080 --> 01:18:41,370 >> มีเรื่องนี้ซึ่งเป็น x หรือฟังก์ชั่น มีเครื่องหมายซึ่งเป็นและ 1535 01:18:41,370 --> 01:18:44,050 ท่อซึ่งเป็นหรือ 1536 01:18:44,050 --> 01:18:46,790 แล้วคุณมีสอง ชนิดที่แตกต่างของการเปลี่ยนแปลง 1537 01:18:46,790 --> 01:18:50,610 >> ถ้าฉันให้คุณสองค่าถ้า ผมให้คุณเช่นหนึ่งและเป็นหนึ่งใน 1538 01:18:50,610 --> 01:18:52,390 สิ่งที่จะประเมินหรือไม่ 1539 01:18:52,390 --> 01:18:55,490 ถ้าฉันให้เป็นจริงและความจริงจริงหรือไม่? 1540 01:18:55,490 --> 01:18:56,930 สิ่งที่เกี่ยวกับจริงหรือเท็จ? 1541 01:18:56,930 --> 01:18:57,830 ยังคงเป็นจริงใช่มั้ย? 1542 01:18:57,830 --> 01:18:59,762 เพราะมีหรือ 1543 01:18:59,762 --> 01:19:01,220 เราส่วนใหญ่มีแนวโน้มจะให้ตัวเลข 1544 01:19:01,220 --> 01:19:03,780 ดังนั้นจำหนึ่งเท่ากับ จริงเท็จเท่ากับศูนย์ 1545 01:19:03,780 --> 01:19:07,407 และเราอาจให้สิ่งเหล่านี้ และขอให้คุณที่จะบอกเราว่าเกิดอะไรขึ้น 1546 01:19:07,407 --> 01:19:10,240 ฮาร์วาร์ครอบคลุมภายในแรก 10 นาทีของเซสชั่นการศึกษา 1547 01:19:10,240 --> 01:19:11,230 จริงๆดีจริงๆ 1548 01:19:11,230 --> 01:19:14,260 ดังนั้นพวกคุณต้องการที่จะทำให้ แน่ใจว่าคุณมองย้อนกลับไปว่า 1549 01:19:14,260 --> 01:19:16,387 >> ผู้ชม: Is pisa5 ไปได้ในการตอบคำถามหรือไม่ 1550 01:19:16,387 --> 01:19:16,970 ศาสตราจารย์: เลขที่ 1551 01:19:16,970 --> 01:19:18,240 ไม่แม้แต่จะมอง pisa5 ในขณะนี้ 1552 01:19:18,240 --> 01:19:18,810 มันเป็นเรื่องยาก. 1553 01:19:18,810 --> 01:19:22,830 เพียงแค่ไม่ได้รำคาญมองหาที่ pisa5 1554 01:19:22,830 --> 01:19:25,665 >> แต่เป็นคำแนะนำบางอย่าง และข้อเสนอแนะผม 1555 01:19:25,665 --> 01:19:28,320 ขอแนะนำให้คุณเริ่มต้น pisa5 เร็วที่สุดเท่าที่ตอบคำถามที่มีมากกว่า 1556 01:19:28,320 --> 01:19:30,319 นี้จะเป็นที่ยากที่สุด สัปดาห์ แต่แล้วพวกคุณ 1557 01:19:30,319 --> 01:19:34,590 จะถูกส่งผ่านมันอยู่บนเนินเขา กลิ้งสีเขียวและลูกสุนัข 1558 01:19:34,590 --> 01:19:36,115 และก็ปรับ 1559 01:19:36,115 --> 01:19:39,810 >> ชั้นนี้ได้รับอย่างมีนัยสำคัญ ได้ง่ายขึ้นหลังจากที่ pset ที่ห้า 1560 01:19:39,810 --> 01:19:41,560 ผู้ชม: เวลาทำการ เป็นวันอาทิตย์วันจันทร์? 1561 01:19:41,560 --> 01:19:44,260 ศาสตราจารย์: ใช่ดังนั้นเวลาทำงานจะ วันอาทิตย์ถึงวันจันทร์สำหรับ pset 1562 01:19:44,260 --> 01:19:47,009 เวลาทำการคืนนี้เป็นหลัก จะเป็นเพียงการตรวจสอบสำหรับการตอบคำถาม 1563 01:19:47,009 --> 01:19:50,350 หากใครต้องการจะเข้ามาและขอให้ มาตรฐานการบัญชีฉบับคำถามที่เราจะมี 1564 01:19:50,350 --> 01:19:53,220 >> ฉันจะใช้คำถามที่อาจจะเป็นหนึ่งมากขึ้น ถ้าใครมีคำถาม? 1565 01:19:53,220 --> 01:19:53,809 ใช่? 1566 01:19:53,809 --> 01:19:55,850 ผู้ชม: เมื่อคุณอยู่ โหนดกำหนด [ไม่ได้ยิน] 1567 01:19:55,850 --> 01:20:00,700 ถ้าคุณบอกว่าดาวโหนดและจากนั้นต่อไป ไม่คอมพิวเตอร์โดยอัตโนมัติ 1568 01:20:00,700 --> 01:20:03,610 เข้าใจว่าคุณ หมายถึงตัวชี้อื่นได้หรือไม่ 1569 01:20:03,610 --> 01:20:04,580 >> ศาสตราจารย์: เลขที่ 1570 01:20:04,580 --> 01:20:06,710 >> ผู้ชม: คุณต้อง เชื่อมโยงมัน [ไม่ได้ยิน] 1571 01:20:06,710 --> 01:20:09,270 >> ศาสตราจารย์: ดังนั้นพื้น โครงสร้างของโหนดจะจำ 1572 01:20:09,270 --> 01:20:12,620 มันก็เหมือนคุณสร้างโหนดและ แล้วคุณมีตัวชี้ที่เรียกว่าต่อไป 1573 01:20:12,620 --> 01:20:14,630 สิ่งที่คุณกำลังทำคือการมี โครงสร้างมี 1574 01:20:14,630 --> 01:20:16,387 คุณจะต้องกำหนด ชี้ว่าที่ใดที่หนึ่ง 1575 01:20:16,387 --> 01:20:18,470 ดังนั้นเครื่องคอมพิวเตอร์ไม่ได้ รู้ว่าสิ่งที่มันทำยัง 1576 01:20:18,470 --> 01:20:20,250 คุณต้องกำหนดจริงเมื่อ คุณกำลังสร้างรายการที่เชื่อมโยงของคุณ 1577 01:20:20,250 --> 01:20:22,170 และนั่นคือสิ่งที่ส่วนใหญ่ pset 5 จะอยู่ใน 1578 01:20:22,170 --> 01:20:24,106 ดังนั้นไม่ต้องกังวลเกี่ยวกับ สิทธิใด ๆ ที่ตอนนี้ 1579 01:20:24,106 --> 01:20:26,380 >> ผู้ชม: ดังนั้นเราจึงไม่จำเป็นต้อง เน้นมากเกินไปในรายการการเชื่อมโยงเพียง 1580 01:20:26,380 --> 01:20:27,440 ความคิดทั่วไป? 1581 01:20:27,440 --> 01:20:30,980 >> ศาสตราจารย์: เพียงแค่กองสวยมาก คิวรายการการเชื่อมโยง, ต้นไม้, ตารางแฮช 1582 01:20:30,980 --> 01:20:33,639 เพียงแค่มีความสามารถที่จะรู้ว่าสิ่งที่พวกเขามี 1583 01:20:33,639 --> 01:20:35,680 เราไม่ได้ไปขอ คุณชอบอะไรที่เฉพาะเจาะจง 1584 01:20:35,680 --> 01:20:39,300 เพราะเรายังไม่ได้ทำจริงๆ pset ที่ครอบคลุมที่ใด ๆ เลย 1585 01:20:39,300 --> 01:20:45,540 >> ดังนั้นในช่วงสองนาทีก่อน ผมตั้งคุณฟรีที่จะฆ่าตอบคำถามนี้ 1586 01:20:45,540 --> 01:20:49,370 สวยมากเช่นคิดเกี่ยวกับวิธี ห่างไกลที่พวกคุณได้มาในชั้นนี้ 1587 01:20:49,370 --> 01:20:52,820 >> ผมจำได้ว่าเมื่อสองสัปดาห์ ของชั้นเรียนบางท่านนี้ 1588 01:20:52,820 --> 01:20:55,720 ใช้เวลาสามชั่วโมงเขียนน้ำ 1589 01:20:55,720 --> 01:20:57,970 นานแค่ไหนก็จะพาคุณ คนที่จะเขียนน้ำตอนนี้หรือไม่ 1590 01:20:57,970 --> 01:20:59,670 30 วินาทีอาจจะ? 1591 01:20:59,670 --> 01:21:01,810 คิดเกี่ยวกับวิธีการมาก พวกคุณได้เรียนรู้ 1592 01:21:01,810 --> 01:21:04,320 CS เป็นจริงๆเรื่องยากมาก 1593 01:21:04,320 --> 01:21:06,190 มีข้อสงสัยว่าการที่ไม่ได้ 1594 01:21:06,190 --> 01:21:09,160 มันยากที่ว่าทำไมไม่มีใครศึกษามัน 1595 01:21:09,160 --> 01:21:10,730 มันเป็นเพียงยาก 1596 01:21:10,730 --> 01:21:11,650 และก็ปรับทั้งหมด 1597 01:21:11,650 --> 01:21:14,150 >> และผมภูมิใจที่ ทุกคนได้ทำให้มันไกลขนาดนี้ 1598 01:21:14,150 --> 01:21:16,380 Psets จะไม่ง่าย 1599 01:21:16,380 --> 01:21:17,790 พวกเขาใช้เวลามาก 1600 01:21:17,790 --> 01:21:22,580 พวกคุณผมจะไม่ขอให้คุณเขียน เกมของ 15 หรือ Vigenere ใน pset 1601 01:21:22,580 --> 01:21:24,160 ไม่จำเป็นต้องออกนอกลู่นอกทางเพียงเกี่ยวกับการที่ 1602 01:21:24,160 --> 01:21:28,080 ทั้งหมดที่เรากำลังทดสอบที่นี่คือการประเมิน ความรู้เกี่ยวกับแนวความคิดของคุณได้เป็นอย่างดี 1603 01:21:28,080 --> 01:21:31,524 เป็นบางส่วนของทักษะพื้นฐานของการเขียนโปรแกรมของคุณ 1604 01:21:31,524 --> 01:21:33,440 การทดสอบที่ถูกออกแบบมาเพื่อ เป็นสิ่งที่ท้าทายจริงๆ 1605 01:21:33,440 --> 01:21:36,180 เหมือนมันถูกออกแบบมา สำหรับคุณที่จะไม่ได้รับ 100 1606 01:21:36,180 --> 01:21:39,880 มันออกแบบมาสำหรับคุณที่จะอาจจะ ไม่สามารถที่จะเสร็จสิ้นใน 75 นาที 1607 01:21:39,880 --> 01:21:41,995 และที่ดีทั้งหมด 1608 01:21:41,995 --> 01:21:42,870 ฉันนักเรียนเอง 1609 01:21:42,870 --> 01:21:45,960 ฉันรู้ว่าฉันเกลียดมันเมื่อฉันเดิน ออกจากการตอบคำถามจะเป็นเหมือนอึ 1610 01:21:45,960 --> 01:21:47,044 นั่นเป็นเรื่องยากจริงๆ 1611 01:21:47,044 --> 01:21:49,460 น่าจะเป็นสิ่งที่จะ happen-- และที่ดีโดยสิ้นเชิง 1612 01:21:49,460 --> 01:21:50,751 ฉันบอกพวกคุณในขณะนี้ 1613 01:21:50,751 --> 01:21:53,190 หมายถึงในสิ่งเหล่านี้ จะไม่สูงเลย 1614 01:21:53,190 --> 01:21:55,360 >> และสำหรับบรรดาของคุณที่ ได้รับเช่น 1615 01:21:55,360 --> 01:21:57,870 สามในชุดปัญหาของคุณ ไม่ได้หมายความว่าคุณ 1616 01:21:57,870 --> 01:21:59,536 จะได้รับร้อยละ 60 ในชั้นนี้ 1617 01:21:59,536 --> 01:22:01,440 ถ้าคุณได้รับ 60% บน ตอบคำถามที่ไม่ได้ 1618 01:22:01,440 --> 01:22:03,330 หมายความว่าคุณกำลังจะไป ได้รับการพัฒนาในชั้นนี้ 1619 01:22:03,330 --> 01:22:05,740 เรามาดูกันโดยเฉพาะอย่างยิ่งฉัน, บรรดาของคุณในส่วนของฉัน 1620 01:22:05,740 --> 01:22:07,406 ผมเห็นวิธีการที่ยากที่พวกคุณทุกคนที่ทำงาน 1621 01:22:07,406 --> 01:22:09,190 และผมติดตามที่ 1622 01:22:09,190 --> 01:22:11,420 >> พวกคุณจะถูกปรับ 1623 01:22:11,420 --> 01:22:14,580 ไม่มีหน่วยความจำของสถ​​าบันคือ ความสุขในตอนท้ายของภาคการศึกษา 1624 01:22:14,580 --> 01:22:16,840 เพราะเด็กทุกคนจะบอกฮาร์วาร์ เพื่อนของพวกเขาโอ้คุณจะปรับ 1625 01:22:16,840 --> 01:22:18,381 ไม่มีใครจะบอกพวกคุณที่นี่ 1626 01:22:18,381 --> 01:22:20,950 ดังนั้นผมจึงต้องบอกพวกคุณที่นี่ 1627 01:22:20,950 --> 01:22:22,280 >> พวกคุณจะถูกปรับ 1628 01:22:22,280 --> 01:22:24,080 ฉันจึงภูมิใจทั้งหมดของพวกคุณ 1629 01:22:24,080 --> 01:22:25,680 การทดสอบจะยาก 1630 01:22:25,680 --> 01:22:28,140 การศึกษาสำหรับมันและหลังจากนั้น เพียงแค่โยนมันออกไป 1631 01:22:28,140 --> 01:22:31,280 ได้รับการพร้อมที่จะเรียนรู้สิ่งใหม่ ๆ 1632 01:22:31,280 --> 01:22:33,990 และกินขนม 1633 01:22:33,990 --> 01:22:35,940 เราได้มีจำนวนมากของขนม 1634 01:22:35,940 --> 01:22:37,760 >> รับการนอนหลับคืนที่ดีของ 1635 01:22:37,760 --> 01:22:40,420 อย่านอนไม่หลับเพราะ ที่ต้องการจะเลวร้ายจริงๆ 1636 01:22:40,420 --> 01:22:41,490 บริการลูกค้าเป็นจำนวนมากของตรรกะ 1637 01:22:41,490 --> 01:22:44,960 หากคุณไม่ได้นอนหลับคุณจะไม่สามารถทำงาน และสมองของคุณไม่สามารถทำงานได้ 1638 01:22:44,960 --> 01:22:48,780 และผมจะอยู่ที่นี่ต่อไปอีก 20 นาทีถ้าใครอยากไปไหนมาไหน 1639 01:22:48,780 --> 01:22:51,150 พวกคุณจะไปฆ่ามัน 1640 01:22:51,150 --> 01:22:53,000 โชคดี. 1641 01:22:53,000 --> 01:22:55,663