1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [เล่นเพลง] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 เดวิดเจลัน: ทั้งหมดขวา 5 00:00:12,660 --> 00:00:15,590 นี้เป็น CS50 และนี่ คือจุดเริ่มต้นของสัปดาห์ที่สอง 6 00:00:15,590 --> 00:00:19,120 ดังนั้นขอให้เราเริ่มต้นวันนี้กับข้อผิดพลาด 7 00:00:19,120 --> 00:00:20,974 ข้อผิดพลาดของหลักสูตรเป็น ความผิดพลาดในโปรแกรม 8 00:00:20,974 --> 00:00:22,890 และคุณจะได้รับมาก คุ้นเคยกับแนวคิดนี้ 9 00:00:22,890 --> 00:00:26,050 ถ้าคุณไม่เคยตั้งโปรแกรม ก่อนที่จะ pset0 และตอนนี้ PSET1 10 00:00:26,050 --> 00:00:29,280 แต่ขอพิจารณาสิ่งที่ ง่ายๆเพียงเล็กน้อยในครั้งแรก 11 00:00:29,280 --> 00:00:32,189 โปรแกรมนี้ที่นี่ที่ฉัน โยนกันล่วงหน้า 12 00:00:32,189 --> 00:00:37,280 และผมก็อ้างว่านี่ควรพิมพ์ 10 ดาวบนหน้าจอโดยใช้ printf, 13 00:00:37,280 --> 00:00:41,020 แต่ก็เห็นได้ชัดว่าเป็นรถในทางใดทางหนึ่ง 14 00:00:41,020 --> 00:00:45,370 >> กำหนดสเปคที่ว่า มันควรจะพิมพ์ 10 ดาว 15 00:00:45,370 --> 00:00:50,230 แต่มันไม่ได้เห็นได้ชัดว่าสิ่งที่ คุณจะอ้างเป็นข้อผิดพลาดหรือไม่ 16 00:00:50,230 --> 00:00:52,004 ใช่? 17 00:00:52,004 --> 00:00:54,420 จึงออกจากข้อผิดพลาดอย่างใดอย่างหนึ่ง, และสิ่งที่คุณหมายถึงโดยที่? 18 00:00:54,420 --> 00:01:00,991 19 00:01:00,991 --> 00:01:01,490 ตกลง 20 00:01:01,490 --> 00:01:09,820 21 00:01:09,820 --> 00:01:10,410 ที่ดีเยี่ยม 22 00:01:10,410 --> 00:01:13,930 ดังนั้นเราจึงได้ระบุไว้ เริ่มต้นค่าเป็นศูนย์สำหรับฉัน 23 00:01:13,930 --> 00:01:18,399 และเราได้กำหนดค่า n 10 แต่เราได้ใช้น้อยกว่าหรือเท่ากับ 24 00:01:18,399 --> 00:01:21,190 และด้วยเหตุผลที่ว่านี้เป็นสอง ตัวอักษรและไม่เพียงสัญลักษณ์ 25 00:01:21,190 --> 00:01:22,630 เหมือนในหนังสือคณิตศาสตร์ คือการที่คุณไม่ได้ 26 00:01:22,630 --> 00:01:24,880 วิธีการแสดง เทียบเท่าตัวละครตัวหนึ่ง 27 00:01:24,880 --> 00:01:28,450 >> ดังนั้นนั่นหมายความว่าน้อยกว่า แต่ หากคุณเริ่มต้นนับที่ศูนย์ 28 00:01:28,450 --> 00:01:31,690 แต่คุณนับทุกทาง ผ่านและเท่ากับ 10, 29 00:01:31,690 --> 00:01:34,170 คุณแน่นอนจะไป นับ 11 สิ่งที่รวม 30 00:01:34,170 --> 00:01:35,900 และเพื่อให้คุณกำลังจะพิมพ์ 11 ดาว 31 00:01:35,900 --> 00:01:37,990 ดังนั้นสิ่งที่อาจจะมีการแก้ไขนี้ได้หรือไม่ 32 00:01:37,990 --> 00:01:39,970 ใช่? 33 00:01:39,970 --> 00:01:43,980 >> ดังนั้นเพียงแค่ปรับน้อยกว่า หรือเท่ากับเพียง แต่จะน้อยกว่า 34 00:01:43,980 --> 00:01:46,250 และมีผมเรียกร้องอาจจะ การแก้ปัญหาอีกด้วย 35 00:01:46,250 --> 00:01:47,210 สิ่งที่อาจอื่นคุณจะทำอย่างไร 36 00:01:47,210 --> 00:01:48,590 ใช่? 37 00:01:48,590 --> 00:01:53,660 >> ดังนั้นการเริ่มต้นเท่ากับมันถึง 1 และ ออกน้อยกว่าหรือเท่ากับ 38 00:01:53,660 --> 00:01:56,187 และตรงไปตรงมาผมจะเรียกร้อง ว่าสำหรับมนุษย์ทั่วไป 39 00:01:56,187 --> 00:01:57,770 นี้น่าจะตรงไปตรงมามากขึ้น 40 00:01:57,770 --> 00:02:00,280 เริ่มนับวันที่ 1 และ นับถึง 10 41 00:02:00,280 --> 00:02:01,690 เป็นหลักทำในสิ่งที่คุณหมายถึง 42 00:02:01,690 --> 00:02:04,010 >> แต่ความเป็นจริงที่อยู่ใน การเขียนโปรแกรมที่เราได้เห็น 43 00:02:04,010 --> 00:02:07,598 นักวิทยาศาสตร์คอมพิวเตอร์และการเขียนโปรแกรม โดยทั่วไปจะเริ่มนับที่ศูนย์ 44 00:02:07,598 --> 00:02:09,389 และอื่น ๆ ที่ปรับครั้งเดียว คุณได้ใช้มัน 45 00:02:09,389 --> 00:02:12,640 สภาพโดยทั่วไปของคุณจะ เป็นสิ่งที่ต้องการน้อยกว่า 46 00:02:12,640 --> 00:02:14,910 ดังนั้นเพียงแค่ตรรกะ ข้อผิดพลาดที่เราสามารถทำได้ตอนนี้ 47 00:02:14,910 --> 00:02:17,990 แก้ไขและในที่สุดคอมไพล์ นี้และได้รับเพียง 10 48 00:02:17,990 --> 00:02:19,610 >> ดีวิธีการเกี่ยวกับปัญหานี้ที่นี่? 49 00:02:19,610 --> 00:02:24,200 ที่นี่อีกครั้งฉันเรียกร้องที่ฉันมี เป้าหมายของการพิมพ์ 10 stars-- 50 00:02:24,200 --> 00:02:28,140 ต่อหนึ่งบรรทัดเวลานี้ แต่ก็ไม่ได้ 51 00:02:28,140 --> 00:02:30,940 ก่อนที่เราจะนำเสนอสิ่งที่ การแก้ไขเป็นสิ่งที่ไม่นี้ 52 00:02:30,940 --> 00:02:34,640 พิมพ์สายตาถ้าผมจะรวบรวม และเรียกใช้โปรแกรมนี้คุณคิดว่า? 53 00:02:34,640 --> 00:02:35,140 ใช่? 54 00:02:35,140 --> 00:02:38,360 55 00:02:38,360 --> 00:02:38,860 >> สตาร์ 56 00:02:38,860 --> 00:02:41,690 ดังนั้นดาวทั้งหมดใน บรรทัดเดียวกันคือสิ่งที่ฉันได้ยิน 57 00:02:41,690 --> 00:02:43,391 แล้วตัวอักษรบรรทัดใหม่ 58 00:02:43,391 --> 00:02:44,140 ดังนั้นลองที่ 59 00:02:44,140 --> 00:02:48,710 เพื่อให้รถ-1, ป้อน และฉันเห็นคำสั่งเสียงดังกราว 60 00:02:48,710 --> 00:02:50,090 ที่เราได้พูดคุยเกี่ยวกับเวลาที่ผ่านมา 61 00:02:50,090 --> 00:02:55,180 ./buggy-1, และแน่นอนผมเห็นทั้งหมด 10 ดาว ในบรรทัดเดียวกันแม้ว่าฉันจะเรียกร้อง 62 00:02:55,180 --> 00:02:58,690 ในสเปคของฉันเพียงแค่แสดงความคิดเห็นบน รหัสที่ผมตั้งใจจะทำอย่างใดอย่างหนึ่งต่อ 63 00:02:58,690 --> 00:02:59,230 สาย 64 00:02:59,230 --> 00:03:00,580 แต่นี้มีลักษณะที่เหมาะสม 65 00:03:00,580 --> 00:03:04,620 >> ตอนนี้สาย 15 ดูเหมือนว่าฉัน พิมพ์ดาวและจากนั้นสาย 16 66 00:03:04,620 --> 00:03:06,620 ดูเหมือนว่าฉันพิมพ์ ตัวละครสายใหม่ 67 00:03:06,620 --> 00:03:09,560 และพวกเขากำลังทั้งสองเยื้องเพื่อ ฉันอยู่ในวงอย่างชัดเจน 68 00:03:09,560 --> 00:03:13,610 ดังนั้นไม่ควรที่ฉันจะทำดาวใหม่ สาย, ดาว, บรรทัดใหม่, ดาว, สายใหม่ได้หรือไม่ 69 00:03:13,610 --> 00:03:14,110 ใช่? 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> ใช่ซึ่งแตกต่างจากภาษาเช่น งูใหญ่ถ้าคุณคุ้นเคย 72 00:03:21,240 --> 00:03:23,540 เยื้องไม่ได้ สำคัญกับคอมพิวเตอร์ 73 00:03:23,540 --> 00:03:25,280 มันเป็นเพียงเรื่องที่มนุษย์ 74 00:03:25,280 --> 00:03:29,860 ดังนั้นสายในขณะที่ที่นี่ผมได้คิดค้น 15 และ 16-- ที่มีลักษณะสวยงาม 75 00:03:29,860 --> 00:03:31,330 แต่คอมพิวเตอร์ไม่สนใจ 76 00:03:31,330 --> 00:03:34,640 คอมพิวเตอร์ใส่ใจเกี่ยวกับ จริง ๆ แล้วมีวงเล็บปีกกา 77 00:03:34,640 --> 00:03:36,310 รอบเส้นเหล่านี้ของรหัส 78 00:03:36,310 --> 00:03:39,520 >> ดังนั้นว่ามันเป็น clear-- เช่นเดียวกับใน Scratch-- ว่าคนสองบรรทัดของรหัส 79 00:03:39,520 --> 00:03:40,450 ควรจะดำเนินการ 80 00:03:40,450 --> 00:03:44,390 เช่นเดียวกับหนึ่งในบรรดาปริศนา Scratch สีเหลือง ชิ้นอีกครั้งและอีกครั้งและอีกครั้ง 81 00:03:44,390 --> 00:03:50,920 >> ดังนั้นตอนนี้ถ้าผม re-run นี้ program-- ./buggy-2-- Hm 82 00:03:50,920 --> 00:03:51,770 ฉันมีข้อผิดพลาดในขณะนี้ 83 00:03:51,770 --> 00:03:54,212 สิ่งที่ฉันไม่ลืมที่จะทำอย่างไร 84 00:03:54,212 --> 00:03:55,420 ใช่ดังนั้นผมจึงไม่ได้รวบรวมไว้ 85 00:03:55,420 --> 00:03:56,740 เพื่อให้รถ-2 86 00:03:56,740 --> 00:03:59,840 ไม่มีไฟล์ดังกล่าวเพราะผมไม่ได้ จริงรวบรวมรุ่นที่สอง 87 00:03:59,840 --> 00:04:04,860 ดังนั้นตอนนี้ที่น่าสนใจ variable-- ไม่ได้ประกาศไม่ 2 88 00:04:04,860 --> 00:04:05,510 ที่เรากำลังทำ 1 89 00:04:05,510 --> 00:04:11,050 ทำให้รถ-1-- ./buggy-1-- และตอนนี้ แต่ละของพวกเขาอยู่ในบรรทัดเดียวกัน 90 00:04:11,050 --> 00:04:13,880 >> ขณะนี้มีข้อยกเว้น เรียกร้องนี้ควรของฉัน 91 00:04:13,880 --> 00:04:15,520 ที่คุณต้องวงเล็บปีกกาเหล่านี้ 92 00:04:15,520 --> 00:04:20,160 เมื่อมันเป็นจริง OK-- ถ้าคุณได้ สังเกตเห็นในส่วนหรือ textbooks-- 93 00:04:20,160 --> 00:04:22,130 จะละเว้นวงเล็บปีกกา? 94 00:04:22,130 --> 00:04:22,630 ใช่? 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> ว่า 97 00:04:26,870 --> 00:04:28,940 เมื่อมีเพียงหนึ่ง บรรทัดของรหัสที่คุณ 98 00:04:28,940 --> 00:04:32,830 ต้องการที่จะเกี่ยวข้องกับ ห่วงเช่นในตัวอย่างแรกของเรา 99 00:04:32,830 --> 00:04:36,380 มันถูกต้องตามกฎหมายอย่างสมบูรณ์แบบ จะละเว้นวงเล็บปีกกา 100 00:04:36,380 --> 00:04:40,310 เช่นเดียวกับการจัดเรียงของความสะดวกสบาย จากคอมไพเลอร์กับคุณ 101 00:04:40,310 --> 00:04:40,810 ใช่? 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 คำถามที่ดี 104 00:04:43,930 --> 00:04:45,500 มันจะได้รับการพิจารณาความผิดพลาดแบบ? 105 00:04:45,500 --> 00:04:49,340 เราจะ promote-- ใน CS50 คู่มือสไตล์ URL ที่ 106 00:04:49,340 --> 00:04:51,926 อยู่ใน pset1-- ที่มัก ใช้วงเล็บปีกกา 107 00:04:51,926 --> 00:04:53,550 แน่นอนถ้าคุณไม่คุ้นเคยกับการเขียนโปรแกรม 108 00:04:53,550 --> 00:04:56,800 ความจริงก็คือเราไม่ได้ จะไปห้ามไม่ให้คุณ 109 00:04:56,800 --> 00:04:58,680 จากการทำสิ่งอำนวยความสะดวกเหล่านี้ 110 00:04:58,680 --> 00:05:00,846 แต่ถ้าคุณแค่ ในการแกว่งของสิ่งที่ 111 00:05:00,846 --> 00:05:04,020 อย่างเพียงแค่เสมอใช้หยิก วงเล็บจนกว่าคุณจะได้รับการแขวนของมัน 112 00:05:04,020 --> 00:05:04,640 คำถามที่ดี 113 00:05:04,640 --> 00:05:05,320 >> ขวาทั้งหมด 114 00:05:05,320 --> 00:05:07,660 เพื่อที่ว่านั้นเป็นข้อผิดพลาด 115 00:05:07,660 --> 00:05:09,190 อย่างน้อยในบางสิ่งบางอย่างที่ค่อนข้างง่าย 116 00:05:09,190 --> 00:05:11,260 และยังคุณอาจจะคิดว่านี้ เป็นพื้นฐานอย่างเป็นธรรมใช่ไหม? 117 00:05:11,260 --> 00:05:13,635 นี้จะเรียงลำดับของสัปดาห์แรก ในการมองภาษา 118 00:05:13,635 --> 00:05:14,890 เช่นดูข้อบกพร่องของคุณอยู่ในนั้น 119 00:05:14,890 --> 00:05:17,250 แต่ความเป็นจริงเหล่านี้ ตัวแทนจริง 120 00:05:17,250 --> 00:05:20,310 ของปัญหาที่น่ากลัวบางสวย ที่สามารถเกิดขึ้นในโลกแห่งความจริง 121 00:05:20,310 --> 00:05:23,530 >> ดังนั้นบางท่านอาจจะจำ ถ้าคุณทำตามข่าวเทคโนโลยี 122 00:05:23,530 --> 00:05:25,740 หรืออาจจะติดแม้ ลมนี้ในเดือนกุมภาพันธ์ 123 00:05:25,740 --> 00:05:29,434 ของปีที่ผ่านมานี้ว่าแอปเปิ้ลมี ทำบิตของความผิดพลาดใน iOS ของคุณทั้งสอง 124 00:05:29,434 --> 00:05:31,350 ระบบปฏิบัติการบน โทรศัพท์ของพวกเขาและยัง 125 00:05:31,350 --> 00:05:34,220 Mac OS, ระบบปฏิบัติการ บนเดสก์ทอปและแล็ปท็อปของพวกเขา 126 00:05:34,220 --> 00:05:36,480 และคุณเห็นพาดหัวเช่นนี้ 127 00:05:36,480 --> 00:05:41,120 และหลังจากนั้นแอปเปิ้ล สัญญาว่าจะแก้ไขปัญหานี้ 128 00:05:41,120 --> 00:05:45,950 อย่างรวดเร็วและไม่สามารถแก้ไขได้ใน iOS, แต่แล้วคงที่ที่สุดก็ใน Mac OS 129 00:05:45,950 --> 00:05:46,810 ได้เป็นอย่างดี 130 00:05:46,810 --> 00:05:50,370 >> ตอนนี้ไม่มีพาดหัวเหล่านี้เพียงอย่างเดียวจริงๆ เผยให้เห็นสิ่งที่เป็นปัญหาพื้นฐาน 131 00:05:50,370 --> 00:05:55,640 แต่ข้อผิดพลาดลดลงในที่สุด ข้อผิดพลาดใน SSL, ซ็อกเก็ตการรักษาความปลอดภัยชั้น 132 00:05:55,640 --> 00:05:57,390 และเรื่องยาวสั้น นี้เป็นซอฟต์แวร์ 133 00:05:57,390 --> 00:06:01,030 เบราว์เซอร์ของเราและอื่น ๆ ซอฟแวร์ที่ใช้ในการทำในสิ่งที่? 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> ถ้าบอกว่าเป็น SSL ที่เกี่ยวข้องเมื่อใดก็ตามที่คุณ 136 00:06:06,860 --> 00:06:13,920 เข้าเยี่ยมชม URL ที่เริ่มต้นด้วย HTTPS, สิ่งนั้นอาจ SSL จะเกี่ยวข้องกับ? 137 00:06:13,920 --> 00:06:14,580 การเข้ารหัสลับ 138 00:06:14,580 --> 00:06:16,470 ดังนั้นเราจะพูดคุยเกี่ยวกับ นี้ในวันที่มา 139 00:06:16,470 --> 00:06:18,750 การเข้ารหัสศิลปะของ ข้อมูล scrambling 140 00:06:18,750 --> 00:06:22,200 >> แต่เรื่องยาวสั้น, แอปเปิ้ล บางครั้งที่ผ่านมาได้ทำผิดพลาด 141 00:06:22,200 --> 00:06:25,970 ในการดำเนินงานของพวกเขา SSL, ซอฟแวร์ที่ในที่สุดนำไปปฏิบัติ 142 00:06:25,970 --> 00:06:30,120 URL ที่เช่น HTTPS หรือสูงสุด การเชื่อมต่อที่นั่นด้วย 143 00:06:30,120 --> 00:06:32,850 ผลจากการที่เป็นที่ของคุณ การเชื่อมต่อได้อาจ 144 00:06:32,850 --> 00:06:33,920 ถูกดัก 145 00:06:33,920 --> 00:06:37,130 และการเชื่อมต่อของคุณเป็น ไม่จำเป็นต้องเข้ารหัส 146 00:06:37,130 --> 00:06:40,350 ถ้าคุณมีบางคนเลวในระหว่าง คุณและเว็บไซต์ปลายทางที่ 147 00:06:40,350 --> 00:06:42,170 รู้วิธีที่จะใช้ประโยชน์จากนี้ 148 00:06:42,170 --> 00:06:45,090 >> ตอนนี้แอปเปิ้ลโพสต์ในท้ายที่สุด แก้ไขปัญหานี้ในที่สุด 149 00:06:45,090 --> 00:06:46,920 และคำอธิบาย ของการแก้ไขของพวกเขาเป็นแบบนี้ 150 00:06:46,920 --> 00:06:49,878 การขนส่งที่มีความปลอดภัยล้มเหลวในการตรวจสอบ ความถูกต้องของการเชื่อมต่อ 151 00:06:49,878 --> 00:06:52,920 ประเด็นสำคัญคือการแก้ไขโดย คืนหายไปขั้นตอนการตรวจสอบ 152 00:06:52,920 --> 00:06:57,250 >> ดังนั้นนี่คือคำอธิบายที่คลื่นมือมาก สำหรับเพียงแค่บอกว่าเราเมาขึ้น 153 00:06:57,250 --> 00:07:00,920 มีตัวอักษรอย่างใดอย่างหนึ่ง บรรทัดของรหัสที่ได้รับรถ 154 00:07:00,920 --> 00:07:05,130 ในการดำเนินการ SSL ของพวกเขาและ ถ้าคุณไปออนไลน์และค้นหานี้ 155 00:07:05,130 --> 00:07:07,210 คุณจริงสามารถหา ซอร์สโค้ดเดิม 156 00:07:07,210 --> 00:07:11,960 ตัวอย่างเช่นนี้เป็นภาพหน้าจอของ เพียงแค่ส่วนหนึ่งของไฟล์ขนาดใหญ่อย่างเป็นธรรม, 157 00:07:11,960 --> 00:07:15,965 แต่นี้เป็นฟังก์ชันที่เรียกว่าเห็นได้ชัด SSL ที่สำคัญตรวจสอบเซิร์ฟเวอร์แลกเปลี่ยนสัญญาณ 158 00:07:15,965 --> 00:07:17,840 และจะใช้เวลาพวงของ ข้อโต้แย้งและปัจจัยการผลิต 159 00:07:17,840 --> 00:07:20,298 และเราจะไม่ให้ความสำคัญ มากเกินไปใน minutia ที่นั่น 160 00:07:20,298 --> 00:07:24,390 แต่ถ้าคุณมุ่งเน้นไปที่รหัสภายใน ของฟังก์ชันให้สูงสุดที่ 161 00:07:24,390 --> 00:07:25,590 ซูมในที่ 162 00:07:25,590 --> 00:07:28,140 แล้วคุณอาจจะสงสัยว่า สิ่งที่ผิดพลาดอาจจะ 163 00:07:28,140 --> 00:07:31,230 ยิ่งถ้าคุณมีความคิด ในที่สุดสิ่งที่คุณกำลังมองหาที่ 164 00:07:31,230 --> 00:07:35,924 มีชนิดของความผิดปกติของ ที่นี่ซึ่งเป็นสิ่งที่? 165 00:07:35,924 --> 00:07:38,940 >> ใช่ฉันไม่ชอบจริงๆ รูปลักษณ์ของสองกลับไปล้มเหลว 166 00:07:38,940 --> 00:07:42,060 ตรงไปตรงมาผมไม่ทราบจริงๆสิ่งที่กลับไป ไม่หมายถึง แต่มีสองของพวกเขา 167 00:07:42,060 --> 00:07:42,810 back to back 168 00:07:42,810 --> 00:07:45,290 ที่เป็นเพียงการลูบผม ปัญญาเป็นวิธีที่ผิด 169 00:07:45,290 --> 00:07:48,910 และแน่นอนถ้าเราซูมใน เพียงแค่เส้นเหล่านี้เป็นซี 170 00:07:48,910 --> 00:07:52,220 >> ดังนั้นจำนวนมากของรหัสแอปเปิ้ล ที่ตัวเองเขียนใน C 171 00:07:52,220 --> 00:07:55,780 และเห็นได้ชัด เป็นจริง equivalent-- 172 00:07:55,780 --> 00:07:59,060 ไม่ว่าเยื้องสวย รุ่น แต่ถ้าคุณยอมรับความจริง 173 00:07:59,060 --> 00:08:02,560 ว่าไม่มีวงเล็บปีกกาสิ่งที่ แอปเปิ้ลจริงๆเขียนเป็นรหัสที่มีลักษณะ 174 00:08:02,560 --> 00:08:03,540 เช่นนี้ 175 00:08:03,540 --> 00:08:07,080 ดังนั้นผมจึงได้ซูมออกและฉันเพียงแค่ คงประทับอยู่ในความรู้สึก 176 00:08:07,080 --> 00:08:10,690 ว่าถ้าไม่มีวงเล็บปีกกาที่ ข้ามไปที่สองล้มเหลวที่อยู่ในสีเหลือง 177 00:08:10,690 --> 00:08:12,500 เป็นไปที่จะดำเนินการไม่ว่าสิ่งที่ 178 00:08:12,500 --> 00:08:15,540 มันไม่ได้เกี่ยวข้องกับ ถ้าเงื่อนไขดังกล่าวข้างต้นนั้น 179 00:08:15,540 --> 00:08:19,590 >> ดังนั้นแม้อีกครั้งถ้าคุณทำไม่มาก เข้าใจสิ่งนี้อาจเป็นไปได้ 180 00:08:19,590 --> 00:08:23,230 จะทำรู้ว่าแต่ละเหล่านี้ conditions-- แต่ละเส้นเหล่านี้ 181 00:08:23,230 --> 00:08:26,180 เป็นขั้นตอนที่สำคัญมาก ในขั้นตอนของการตรวจสอบ 182 00:08:26,180 --> 00:08:28,350 ถ้าข้อมูลของคุณในความเป็นจริงที่มีการเข้ารหัส 183 00:08:28,350 --> 00:08:31,710 ดังนั้นการกระโดดข้ามหนึ่งในจำนวนนี้ ขั้นตอนไม่คิดที่ดีที่สุด 184 00:08:31,710 --> 00:08:34,840 >> แต่เพราะเรามีนี้ ข้ามไปที่สองล้มเหลวในการสีเหลือง 185 00:08:34,840 --> 00:08:36,840 เพราะเมื่อเรา การเรียงลำดับของความสุนทรีย์ 186 00:08:36,840 --> 00:08:40,480 ย้ายไปทางซ้ายที่ เหตุผลก็คือในขณะนี้สิ่งที่ 187 00:08:40,480 --> 00:08:43,230 นี้หมายความว่าสำหรับสาย ของรหัสด้านล่างที่กลับไปครั้งที่สอง 188 00:08:43,230 --> 00:08:46,480 ล้มเหลวในการที่คุณจะคิดว่า? 189 00:08:46,480 --> 00:08:48,860 มันจะเสมอที่จะถูกข้ามไป 190 00:08:48,860 --> 00:08:52,100 ดังนั้น gotos จะขมวดคิ้วทั่วไปเมื่อ สำหรับเหตุผลที่เราจะไม่ได้จริงๆไปลง 191 00:08:52,100 --> 00:08:54,940 และแน่นอนใน CS50 เรามักไม่ได้ ที่จะสอนให้กลับไปคำสั่งนี้ 192 00:08:54,940 --> 00:08:58,130 แต่คุณสามารถคิดไปข้าง ไม่เป็นความหมายที่กระโดดไป 193 00:08:58,130 --> 00:08:59,600 บางส่วนอื่น ๆ ของรหัส 194 00:08:59,600 --> 00:09:03,120 >> ในคำอื่น ๆ กระโดดข้าม บรรทัดสุดท้ายนี้ทั้งหมด 195 00:09:03,120 --> 00:09:07,420 และอื่น ๆ ผลจากการนี​​้โง่ ผิดพลาดง่ายที่เป็นเพียง 196 00:09:07,420 --> 00:09:10,330 ผลมาจากใครบางคนอาจจะ คัดลอกและวางหนึ่งเกินไป 197 00:09:10,330 --> 00:09:14,150 หลายต่อหลายครั้งก็คือการที่ทั้ง การรักษาความปลอดภัยของ iOS และ Mac OS 198 00:09:14,150 --> 00:09:18,240 เป็นความเสี่ยงที่จะสกัดกั้น โดยคนเลวสำหรับค่อนข้างบางเวลา 199 00:09:18,240 --> 00:09:19,940 จนในที่สุดแอปเปิ้ลคงที่นี้ 200 00:09:19,940 --> 00:09:23,100 >> ตอนนี้ถ้าบางส่วนของคุณเป็นจริง ใช้รุ่นเก่าของ iOS หรือ Mac OS, 201 00:09:23,100 --> 00:09:27,250 คุณสามารถไปที่ gotofail.com ที่ เป็นเว็บไซต์ที่มีคนตั้งขึ้นมา 202 00:09:27,250 --> 00:09:29,190 เพื่อกำหนดเป็นหลัก โปรแกรม 203 00:09:29,190 --> 00:09:30,980 หากคอมพิวเตอร์ของคุณยังคงเปราะบาง 204 00:09:30,980 --> 00:09:33,600 และตรงไปตรงมาว่ามันคือ มันอาจจะเป็นความคิดที่ดี 205 00:09:33,600 --> 00:09:36,870 เพื่ออัพเดตโทรศัพท์ของคุณหรือ Mac ของคุณที่จุดนี้ 206 00:09:36,870 --> 00:09:40,120 แต่มีเพียงเพื่อพิสูจน์เพียงว่า การแข็งค่าของระดับที่ต่ำกว่านี้ 207 00:09:40,120 --> 00:09:42,400 รายละเอียดและเป็นธรรม ความคิดที่เรียบง่ายสามารถจริงๆ 208 00:09:42,400 --> 00:09:44,590 แปลเป็​​นตัดสินใจ และปัญหาที่ 209 00:09:44,590 --> 00:09:47,320 affected-- ใน case-- นี้ ผู้คนนับล้าน 210 00:09:47,320 --> 00:09:49,107 >> ตอนนี้คำพูดเกี่ยวกับการบริหาร 211 00:09:49,107 --> 00:09:50,690 ส่วนจะเริ่มต้นในวันอาทิตย์นี้มา 212 00:09:50,690 --> 00:09:53,360 คุณจะได้รับอีเมลจาก วันหยุดสุดสัปดาห์กับส่วนจุดที่ 213 00:09:53,360 --> 00:09:55,290 กระบวนการ resectioning จะเริ่มต้นถ้าคุณได้ 214 00:09:55,290 --> 00:09:56,998 ตระหนักถึงตอนนี้คุณมี บางความขัดแย้งใหม่ 215 00:09:56,998 --> 00:10:00,180 ดังนั้นนี้เกิดขึ้นทุกปีและเรา จะรองรับในวันที่จะมา 216 00:10:00,180 --> 00:10:02,430 >> สำนักงาน hours-- ทำให้ ตาในเวลานี้ที่นี่ 217 00:10:02,430 --> 00:10:05,100 การเปลี่ยนแปลงเล็กน้อยในสัปดาห์นี้ โดยเฉพาะอย่างยิ่งเวลาเริ่มต้น 218 00:10:05,100 --> 00:10:08,180 และสถานที่จึงไม่ปรึกษา ว่าก่อนที่จะมุ่งหน้าไปยังเวลาทำการ 219 00:10:08,180 --> 00:10:09,520 ใด ๆ ของอีกสี่คืน 220 00:10:09,520 --> 00:10:12,680 และตอนนี้คำว่าการประเมินที่ โดยเฉพาะอย่างยิ่งในขณะที่คุณดำน้ำในปัญหา 221 00:10:12,680 --> 00:10:14,350 ชุดที่หนึ่งและอื่น 222 00:10:14,350 --> 00:10:17,070 >> ดังนั้นต่อสเปค เหล่านี้มักจะ 223 00:10:17,070 --> 00:10:20,360 แกนตามที่ เราประเมินการทำงานของคุณ 224 00:10:20,360 --> 00:10:23,170 ขอบเขตหมายถึงสิ่งที่ ขอบเขตการดำเนินการรหัสของคุณ 225 00:10:23,170 --> 00:10:25,690 คุณสมบัติที่จำเป็น โดยข้อกำหนดของเรา 226 00:10:25,690 --> 00:10:28,290 ในคำอื่น ๆ เท่าใดของ ชุดชิ้นส่วนที่คุณไม่กัดออก 227 00:10:28,290 --> 00:10:30,440 คุณทำหนึ่งในสามของมัน ครึ่งหนึ่งของมัน 100% ของมัน 228 00:10:30,440 --> 00:10:33,000 แม้ว่ามันจะไม่ถูกต้อง เท่าไหร่ที่คุณไม่พยายามที่? 229 00:10:33,000 --> 00:10:35,290 ดังนั้นที่จับระดับ ของความพยายามและจำนวนเงินที่ 230 00:10:35,290 --> 00:10:38,260 ที่คุณบิตออก ปัญหาชุดของปัญหา 231 00:10:38,260 --> 00:10:40,690 >> Correctness-- หนึ่งนี้เพื่อ สิ่งที่ขอบเขตเป็นรหัสของคุณ 232 00:10:40,690 --> 00:10:43,150 สอดคล้องกับของเรา ข้อกำหนดและเป็นอิสระจากข้อบกพร่อง 233 00:10:43,150 --> 00:10:44,770 ดังนั้นจึงไม่ทำงานถูกต้องหรือไม่ 234 00:10:44,770 --> 00:10:48,700 ถ้าเราจะให้มันใส่บางอย่างไม่ได้ ให้เราเอาท์พุทที่เราคาดหวังหรือไม่ 235 00:10:48,700 --> 00:10:52,570 Design-- ตอนนี้เป็นครั้งแรกของ คนที่มีคุณภาพโดยเฉพาะอย่างยิ่ง 236 00:10:52,570 --> 00:10:56,180 หรือคนที่ต้องใช้การตัดสินใจของมนุษย์ 237 00:10:56,180 --> 00:10:59,690 และแน่นอนนี่คือเหตุผลที่เรามีพนักงาน ของเพื่อนการเรียนการสอนจำนวนมากและแน่นอน 238 00:10:59,690 --> 00:11:00,350 ผู้ช่วย 239 00:11:00,350 --> 00:11:03,480 สิ่งที่ขอบเขตเป็นของคุณ โค้ดที่เขียนด้วยหรือไม่ 240 00:11:03,480 --> 00:11:05,810 >> และอีกครั้งนี้เป็นอย่างมาก การประเมินคุณภาพ 241 00:11:05,810 --> 00:11:09,100 ที่จะทำงานร่วมกับคุณใน สองทิศทางในสัปดาห์ที่ผ่านมา 242 00:11:09,100 --> 00:11:12,060 เพื่อที่ว่าเมื่อคุณได้รับไม่ได้ เพียง แต่คะแนนที่เป็นตัวเลข แต่ยัง 243 00:11:12,060 --> 00:11:16,682 คะแนนเขียนหรือข้อเสนอแนะพิมพ์ หรือเขียนข้อเสนอแนะในคำภาษาอังกฤษ 244 00:11:16,682 --> 00:11:19,640 นั่นคือสิ่งที่เราจะใช้ในการไดรฟ์คุณ ไปจริงการเขียนโค้ดที่ดีกว่า 245 00:11:19,640 --> 00:11:23,320 และในการบรรยายและส่วนที่เราจะพยายาม ที่จะชี้ให้แทนดูได้บ่อยเท่าที่เรา can-- 246 00:11:23,320 --> 00:11:26,420 สิ่งที่ทำให้โปรแกรมไม่เพียง แต่ ที่ถูกต้องและดีงาม, 247 00:11:26,420 --> 00:11:28,200 แต่ยังออกแบบมาอย่างดี 248 00:11:28,200 --> 00:11:31,850 มีประสิทธิภาพมากที่สุดก็อาจจะเป็นหรือ แม้กระทั่งสิ่งที่สวยงามที่สุดที่จะสามารถ 249 00:11:31,850 --> 00:11:33,100 >> ซึ่งนำเราไปสู่​​รูปแบบ 250 00:11:33,100 --> 00:11:36,876 รูปแบบที่สุดคือ การตัดสินความงาม 251 00:11:36,876 --> 00:11:38,750 คุณไม่ได้เลือกที่ดี ชื่อตัวแปรของคุณ? 252 00:11:38,750 --> 00:11:40,330 คุณเยื้องรหัสของคุณถูกต้องหรือไม่ 253 00:11:40,330 --> 00:11:44,010 มันดูดีและดังนั้น มันเป็นเรื่องง่ายสำหรับมนุษย์อีกคน 254 00:11:44,010 --> 00:11:46,550 การอ่านของคุณตามลำดับ ความถูกต้องของ 255 00:11:46,550 --> 00:11:50,300 >> ตอนนี้โดยทั่วไปต่อหลักสูตรที่เราได้คะแนน สิ่งเหล่านี้ในระดับห้าจุด 256 00:11:50,300 --> 00:11:53,640 และแจ้งให้เราค้อนบ้านจุด ที่สามเป็นสิ่งที่ดีแน่นอน 257 00:11:53,640 --> 00:11:55,550 อย่างรวดเร็วทำคน เริ่มต้นทำเลขคณิต 258 00:11:55,550 --> 00:11:58,133 เมื่อพวกเขาได้รับออกมาสาม ห้าถูกต้องสำหรับ pset บาง 259 00:11:58,133 --> 00:12:02,040 และพวกเขาคิดแช่งผมไปถึง 60% ซึ่งเป็นหลัก D หรืออี 260 00:12:02,040 --> 00:12:03,980 >> นั่นไม่ใช่วิธีที่เรา คิดว่าตัวเลขเหล่านี้ 261 00:12:03,980 --> 00:12:06,880 สามเป็นสิ่งที่ดีจริงและสิ่งที่เรา โดยทั่วไปคาดหวังที่จุดเริ่มต้น 262 00:12:06,880 --> 00:12:09,820 ของคำว่าคือว่าถ้าคุณได้รับ พวงของ three's-- บางทีคู่ 263 00:12:09,820 --> 00:12:12,540 งานแสดงสินค้าสองสาม fours-- หรือ คู่เจ้าตัวคู่ของ fours-- 264 00:12:12,540 --> 00:12:13,748 ที่เป็นสถานที่ที่ดีที่จะเริ่มต้น 265 00:12:13,748 --> 00:12:16,320 และระยะยาวเพื่อที่เราจะเห็น วิถีขึ้นเมื่อเวลาผ่านไป 266 00:12:16,320 --> 00:12:18,540 คุณอยู่ในสถานที่ที่ดีโดยเฉพาะอย่างยิ่ง 267 00:12:18,540 --> 00:12:20,752 >> สูตรที่เราใช้ในการ สิ่งที่น้ำหนักเป็นหลัก 268 00:12:20,752 --> 00:12:22,710 นี้ต่อหลักสูตรที่ ซึ่งก็หมายความว่าเรา 269 00:12:22,710 --> 00:12:24,750 ให้น้ำหนักมากขึ้นเพื่อความถูกต้อง 270 00:12:24,750 --> 00:12:27,930 เพราะมันเป็นมากมักจะถูกต้อง ที่ใช้เวลามากที่สุด 271 00:12:27,930 --> 00:12:28,760 ความน่าเชื่อถือฉันตอนนี้ 272 00:12:28,760 --> 00:12:31,190 คุณจะ find-- อย่างน้อย ในหนึ่ง pset-- ที่คุณ 273 00:12:31,190 --> 00:12:36,790 ใช้เวลา 90% ของเวลาของคุณ ที่ทำงานเกี่ยวกับ 10% ของปัญหา 274 00:12:36,790 --> 00:12:39,320 >> และทุกอย่างเรียงลำดับของการทำงาน ยกเว้นสำหรับหนึ่งหรือสองข้อบกพร่อง 275 00:12:39,320 --> 00:12:41,570 และผู้ที่มีข้อบกพร่องที่ ให้คุณได้ในยามดึก 276 00:12:41,570 --> 00:12:43,380 ผู้นั้นเป็นคนที่ การเรียงลำดับของหนีคุณ 277 00:12:43,380 --> 00:12:45,560 แต่หลังจากที่หลับอยู่บนมัน หรือเข้าร่วมเวลาทำการ 278 00:12:45,560 --> 00:12:48,844 หรือถามคำถามออนไลน์เป็น เมื่อคุณได้รับว่าเป้าหมาย 100% 279 00:12:48,844 --> 00:12:50,760 และนั่นเป็นเหตุผลที่เราน้ำหนัก ความถูกต้องมากที่สุด 280 00:12:50,760 --> 00:12:54,102 ออกแบบน้อยและ รูปแบบน้อยกว่าที่ 281 00:12:54,102 --> 00:12:56,060 แต่เก็บไว้ในรูปแบบ mind-- อาจจะเป็นวิธีที่ง่ายที่สุด 282 00:12:56,060 --> 00:12:58,890 เหล่านี้จะกัดออก ตามคู่มือสไตล์ 283 00:12:58,890 --> 00:13:01,580 >> และตอนนี้รุนแรงมากขึ้น ทราบเกี่ยวกับความซื่อสัตย์ทางวิชาการ 284 00:13:01,580 --> 00:13:05,000 CS50 มีความแตกต่างที่โชคร้ายของ เป็นผู้ผลิตที่ใหญ่ที่สุดของคณะกรรมการโฆษณา 285 00:13:05,000 --> 00:13:07,330 กรณีเกือบทุกปีในอดีต 286 00:13:07,330 --> 00:13:11,012 นี้ไม่ได้เพราะนักเรียนโกงใน CS50 ใด ๆ มากไปกว่าชั้นอื่น ๆ 287 00:13:11,012 --> 00:13:13,720 แต่เป็นเพราะโดยธรรมชาติของการทำงาน ความจริงที่ว่ามันเป็นอิเล็กทรอนิกส์ 288 00:13:13,720 --> 00:13:16,636 ความจริงที่ว่าเรามองหามันและ ความจริงที่เราเป็นนักวิทยาศาสตร์คอมพิวเตอร์ 289 00:13:16,636 --> 00:13:20,570 ผมสามารถพูดได้ว่าเราเป็นที่น่าเสียดาย ดีมากที่การตรวจสอบมัน 290 00:13:20,570 --> 00:13:22,710 >> ดังนั้นสิ่งนี้หมายความว่าในแง่จริง? 291 00:13:22,710 --> 00:13:24,820 ดังนั้นมันต่อหลักสูตรที่ ปรัชญาของหลักสูตร 292 00:13:24,820 --> 00:13:28,090 จริงๆไม่ต้มลงไปมีเหตุผล 293 00:13:28,090 --> 00:13:31,684 มีเส้นแบ่งระหว่างนี้ การทำงานอย่างใดอย่างหนึ่งของคุณเอง 294 00:13:31,684 --> 00:13:34,100 และได้รับเล็กน้อยของ ความช่วยเหลือที่เหมาะสมจากเพื่อน 295 00:13:34,100 --> 00:13:38,020 และตรงไปตรงมาทำงานที่ของคุณ เพื่อนหรือส่งให้เขาหรือเธอรหัสของคุณ 296 00:13:38,020 --> 00:13:41,080 เพื่อให้เขาหรือเธอสามารถเพียงแค่ ใช้หรือยืมมันออกมาทางด้านขวา 297 00:13:41,080 --> 00:13:43,580 และที่ข้ามเส้น ที่เราวาดในชั้นเรียน 298 00:13:43,580 --> 00:13:45,410 >> ดูหลักสูตร ในท้ายที่สุดสำหรับสาย 299 00:13:45,410 --> 00:13:48,209 ที่เราวาดว่าเป็นที่เหมาะสม และพฤติกรรมที่ไม่มีเหตุผล 300 00:13:48,209 --> 00:13:50,000 แต่จริงๆมันไม่เดือด ลงไปที่สาระสำคัญ 301 00:13:50,000 --> 00:13:53,980 งานของคุณจำเป็นต้อง เป็นของคุณเองในท้ายที่สุด 302 00:13:53,980 --> 00:13:56,230 ตอนนี้กับที่กล่าวว่า มีการแก้ปัญหา 303 00:13:56,230 --> 00:13:58,980 เพราะในขณะที่คุณอาจ imagine-- จากเวลาทำงานและภาพ 304 00:13:58,980 --> 00:14:01,060 และวิดีโอที่เราได้ แสดง far-- จึง CS50 305 00:14:01,060 --> 00:14:04,530 มีความหมายแน่นอนที่จะเป็นความร่วมมือ และในขณะที่สหกรณ์และสังคมเป็น 306 00:14:04,530 --> 00:14:06,450 เท่าที่จะทำได้ 307 00:14:06,450 --> 00:14:08,570 ขณะที่การทำงานร่วมกันเป็นอย่างเข้มงวด 308 00:14:08,570 --> 00:14:11,314 >> แต่กับเรื่องนี้กล่าวว่าการแก้ปัญหาที่ ในขณะที่คุณจะเห็นในหลักสูตรที่ 309 00:14:11,314 --> 00:14:12,980 ก็คือว่าเมื่อคุณกำลังมีปัญหาบางอย่าง 310 00:14:12,980 --> 00:14:16,470 คุณมีข้อผิดพลาดในรหัสของคุณบางอย่างที่คุณ ไม่สามารถแก้มันก็มีเหตุผลสำหรับคุณ 311 00:14:16,470 --> 00:14:18,039 เพื่อแสดงรหัสของคุณกับคนอื่น 312 00:14:18,039 --> 00:14:21,080 เพื่อนแม้จะอยู่ในระดับเพื่อน นั่งถัดจากคุณที่เวลาทำการ 313 00:14:21,080 --> 00:14:22,680 หรือสมาชิกของทีม 314 00:14:22,680 --> 00:14:25,810 แต่พวกเขาไม่อาจแสดงรหัสของพวกเขาอยู่กับคุณ 315 00:14:25,810 --> 00:14:27,710 >> ในคำอื่น ๆ ตอบคำถามที่คุณ 316 00:14:27,710 --> 00:14:29,940 ฉันจำเป็นต้อง help-- ไม่ได้โอ้นี่คือรหัสของฉัน 317 00:14:29,940 --> 00:14:32,440 ลองดูที่นี้และ ข้อสรุปจากมันสิ่งที่คุณจะ 318 00:14:32,440 --> 00:14:34,580 ตอนนี้แน่นอนมี วิธีที่ชัดเจนที่จะเล่นเกม 319 00:14:34,580 --> 00:14:37,760 ระบบโดยผมจะแสดงให้คุณนี้ รหัสของฉันก่อนที่จะมีคำถาม 320 00:14:37,760 --> 00:14:40,150 คุณแสดงให้ฉันรหัสของคุณของฉัน ก่อนที่จะมีคำถาม 321 00:14:40,150 --> 00:14:45,870 แต่เห็นหลักสูตรอีกครั้งสำหรับ รายละเอียดปลีกย่อยของการที่สายนี้เป็น 322 00:14:45,870 --> 00:14:50,606 >> เพียงแค่ตอนนี้วาดภาพและ ร่วมเป็นโปร่งใสที่สุดเท่าที่ทำได้ 323 00:14:50,606 --> 00:14:53,480 ที่เราอยู่ที่ในปีที่ผ่านมา นี้เป็นจำนวนคดีที่คณะกรรมการประกาศ 324 00:14:53,480 --> 00:14:56,260 CS50 ที่ได้มีกว่า ที่ผ่านมาเจ็ดปี 325 00:14:56,260 --> 00:14:58,717 กับ 14 กรณีนี้ฤดูใบไม้ร่วงที่ผ่านมามากที่สุด 326 00:14:58,717 --> 00:15:01,300 ในแง่ของนักเรียนที่เกี่ยวข้องกับ มันเป็น 20 บางคนที่แปลก 327 00:15:01,300 --> 00:15:02,490 ฤดูใบไม้ร่วงที่ผ่านมานี้ 328 00:15:02,490 --> 00:15:05,670 มีจุดสูงสุดของ 33 เป็น นักเรียนบางคนปีที่ผ่านมา 329 00:15:05,670 --> 00:15:08,830 หลายคนเป็นที่น่าเสียดาย ที่นี่ไม่ได้อยู่ในมหาวิทยาลัย 330 00:15:08,830 --> 00:15:13,100 >> นักเรียนมีส่วนร่วมเป็นร้อยละของ ชั้นมีอาณาบริเวณในอดีตจาก 0% 331 00:15:13,100 --> 00:15:17,300 5.3% ซึ่งเป็นเพียงที่จะบอกว่า นี้เป็นปีที่ท้าทาย 332 00:15:17,300 --> 00:15:20,390 และต่อท้ายว่าสิ่งที่ เราต้องการที่จะทำคือการสื่อความหมายหนึ่ง 333 00:15:20,390 --> 00:15:24,310 ที่เรา dd-- เพียง FYI-- เปรียบเทียบที่ ความเป็นธรรมให้กับนักเรียนผู้ที่ 334 00:15:24,310 --> 00:15:26,520 มีดังต่อไปนี้สายตาม 335 00:15:26,520 --> 00:15:29,620 ที่เราทำในปัจจุบันเปรียบเทียบทั้งหมด ส่งผลต่อการปฏิบัติภารกิจที่ผ่านมาทั้งหมด 336 00:15:29,620 --> 00:15:30,840 จากหลายปีที่ผ่านมา 337 00:15:30,840 --> 00:15:33,620 >> เรารู้ด้วยวิธีการ Google รอบ และหาที่เก็บรหัส 338 00:15:33,620 --> 00:15:36,360 ออนไลน์ฟอรั่มการสนทนา ออนไลน์เว็บไซต์งานออนไลน์ 339 00:15:36,360 --> 00:15:41,580 ถ้านักเรียนสามารถค้นหาได้เราสามารถแน่นอน พบว่ามันมากเท่าที่เราเศร้าทำ 340 00:15:41,580 --> 00:15:45,330 ดังนั้นสิ่งที่คุณจะเห็นในหลักสูตร ว่าเป็นข้อเสียใจนี้ 341 00:15:45,330 --> 00:15:47,500 ฉันสามารถอย่างแน่นอน ขอขอบคุณและเราทุกคนมี 342 00:15:47,500 --> 00:15:50,870 พนักงานต้องทำแน่นอนเช่น นี้หรือคนนี้ตัวเองเมื่อเวลาผ่านไป 343 00:15:50,870 --> 00:15:53,997 แน่นอนว่าสิ่งที่มันต้องการเมื่อ ชีวิตได้รับในทางเมื่อคุณมี 344 00:15:53,997 --> 00:15:56,080 ดึกบาง deadline-- ไม่เพียง แต่ในชั้นนี้ 345 00:15:56,080 --> 00:15:58,660 แต่ another-- เมื่อคุณอยู่ หมดอย่างสมบูรณ์เครียดออก 346 00:15:58,660 --> 00:16:00,659 มีจำนวนมากเกินไป สิ่งอื่น ๆ ที่จะทำ 347 00:16:00,659 --> 00:16:03,660 คุณจะทำในบางจุดใน ชีวิตแน่นอนที่ไม่ดีอาจจะเป็นช่วงปลายเดือน 348 00:16:03,660 --> 00:16:04,620 การตัดสินใจคืน 349 00:16:04,620 --> 00:16:06,520 >> ดังนั้นต่อหลักสูตรที่ มีข้อนี้ 350 00:16:06,520 --> 00:16:10,629 เช่นว่าถ้าภายใน 72 ชั่วโมงของการทำ บางคนตัดสินใจไม่ดีคุณเป็นเจ้าของขึ้นไป 351 00:16:10,629 --> 00:16:12,670 และยื่นมือออกไปฉันและ หนึ่งในหัวของหลักสูตร 352 00:16:12,670 --> 00:16:14,300 และเราจะมีการสนทนา 353 00:16:14,300 --> 00:16:16,220 เราจะจัดการกับสิ่งที่ ภายในในความหวัง 354 00:16:16,220 --> 00:16:18,770 มันกลายเป็นของ ขณะที่การเรียนการสอนหรือบทเรียนชีวิต 355 00:16:18,770 --> 00:16:22,120 และไม่ได้สิ่งที่มี เครือข่ายรุนแรงโดยเฉพาะอย่างยิ่ง 356 00:16:22,120 --> 00:16:24,570 ในขณะที่คุณอาจจะเห็นบนชาร์ตเหล่านี้ที่นี่ 357 00:16:24,570 --> 00:16:26,540 >> เพื่อให้เป็นน้ำเสียงจริงจังมาก 358 00:16:26,540 --> 00:16:29,960 ขอให้เราหยุดเพียงไม่กี่ วินาทีที่จะทำลายความตึงเครียด 359 00:16:29,960 --> 00:16:34,442 >> [เล่นเพลง] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> เดวิดเจลัน: ทั้งหมดขวา ดังนั้นวิธีการที่เป็นที่สำหรับทำต่อหรือไม่ 362 00:17:20,250 --> 00:17:22,059 กับหัวข้อหลักของวันนี้ 363 00:17:22,059 --> 00:17:23,859 คนแรกที่เป็นนามธรรม 364 00:17:23,859 --> 00:17:26,900 อีกประการหนึ่งที่เป็นไปได้ การเป็นตัวแทนของข้อมูลที่ตรงไปตรงมา 365 00:17:26,900 --> 00:17:31,640 เป็นวิธีที่แห้งจริงๆของบอกว่าเราสามารถ ไปเกี่ยวกับการแก้ปัญหาและความคิด 366 00:17:31,640 --> 00:17:33,250 เกี่ยวกับการแก้ปัญหา? 367 00:17:33,250 --> 00:17:37,285 เพื่อให้คุณได้เห็นในรอยขีดข่วนและคุณได้ บางทีอาจจะเห็นแล้วใน PSET1 ด้วย C 368 00:17:37,285 --> 00:17:39,930 ที่คุณไม่สามารถใช้ ฟังก์ชั่นเช่น printf, 369 00:17:39,930 --> 00:17:42,770 ที่คนอื่น ๆ ใน ปีที่ผ่านมาเขียนให้คุณ 370 00:17:42,770 --> 00:17:45,340 นอกจากนี้คุณยังสามารถเขียนฟังก์ชั่นของคุณเอง 371 00:17:45,340 --> 00:17:48,440 >> และแม้ว่าคุณอาจไม่ได้ การกระทำเช่นนี้ใน C และตรงไปตรงมาใน PSET1 372 00:17:48,440 --> 00:17:51,866 คุณไม่ได้จริงๆต้องเขียนของคุณ ฟังก์ชั่นของตัวเองเพราะ problem-- 373 00:17:51,866 --> 00:17:53,990 ในขณะที่อาจจะน่ากลัวที่ glance-- แรกคุณจะเห็น 374 00:17:53,990 --> 00:17:57,910 ในท้ายที่สุดสามารถแก้ไขได้ด้วย ไม่ได้ทั้งหมดว่าหลายบรรทัดของรหัส 375 00:17:57,910 --> 00:18:01,140 แต่ด้วยการที่กล่าวว่าในแง่ ของการเขียนฟังก์ชั่นของคุณเอง 376 00:18:01,140 --> 00:18:03,570 ตระหนักดีว่าซีจะให้ ความสามารถนี้ 377 00:18:03,570 --> 00:18:06,940 >> ฉันจะไปในรหัสแหล่งที่มาของวันนี้ ซึ่งมีอยู่แล้วออนไลน์ 378 00:18:06,940 --> 00:18:10,900 และฉันจะไปข้างหน้าและเปิด ขึ้นโปรแกรมที่เรียกว่า 0.C ฟังก์ชัน 379 00:18:10,900 --> 00:18:14,620 และในการทำงานของศูนย์ เราจะเห็นบางสิ่ง 380 00:18:14,620 --> 00:18:19,160 ในบรรทัดแรก 18 ผ่าน 23 เป็นหน้าที่หลักของฉัน 381 00:18:19,160 --> 00:18:22,414 และตอนนี้ที่เรากำลังเริ่มต้นที่จะอ่าน รหัสที่เราไม่ได้เขียนได้ทันที 382 00:18:22,414 --> 00:18:25,080 แต่ผมเคยเขียนล่วงหน้า หรือว่าคุณอยู่ในปัญหาตั้ง 383 00:18:25,080 --> 00:18:27,910 อาจได้รับมี ถูกเขียนล่วงหน้า 384 00:18:27,910 --> 00:18:30,040 วิธีที่ดีที่จะเริ่มต้น การอ่านรห​​ัสอื่นของใครบางคน 385 00:18:30,040 --> 00:18:31,400 คือการมองหาฟังก์ชั่นหลัก 386 00:18:31,400 --> 00:18:34,420 คิดออกว่ารายการที่ จุดคือการใช้โปรแกรม 387 00:18:34,420 --> 00:18:36,580 แล้วทำตามที่มันมีเหตุผลมาจากที่นั่น 388 00:18:36,580 --> 00:18:40,190 >> ดังนั้นโปรแกรมนี้เห็นได้ชัดพิมพ์ ชื่อของคุณตามด้วยลำไส้ใหญ่ 389 00:18:40,190 --> 00:18:42,490 แล้วเราใช้ GetString จากห้องสมุด CS50 390 00:18:42,490 --> 00:18:46,050 ที่จะได้รับสายหรือคำหรือวลี จากผู้ใช้ที่แป้นพิมพ์ 391 00:18:46,050 --> 00:18:48,390 แล้วมีนี้ สิ่งตรงนี้ PrintName 392 00:18:48,390 --> 00:18:51,420 >> ตอนนี้ PrintName ไม่ ฟังก์ชั่นที่มาพร้อมกับซี 393 00:18:51,420 --> 00:18:52,970 มันไม่ได้อยู่ใน io.h. มาตรฐาน 394 00:18:52,970 --> 00:18:55,570 มันไม่ได้อยู่ใน CS50.h. 395 00:18:55,570 --> 00:18:57,880 มันค่อนข้างอยู่ในแฟ้มเดียวกัน 396 00:18:57,880 --> 00:19:01,000 ขอให้สังเกตว่าถ้าผมเลื่อนลง สาย bit-- 25 ถึง 27-- 397 00:19:01,000 --> 00:19:05,330 มันเป็นเพียงแค่วิธีงามของการแสดงความคิดเห็น รหัสของคุณโดยใช้ดวงดาวและทับ 398 00:19:05,330 --> 00:19:07,320 นี้เป็นหลายสาย แสดงความคิดเห็นและนี้เป็นเพียง 399 00:19:07,320 --> 00:19:10,570 คำอธิบายของฉันในสีฟ้าของ สิ่งที่ฟังก์ชั่นนี้จะ 400 00:19:10,570 --> 00:19:14,530 >> เพราะในสาย 28 ผ่าน 31 ฉันได้เขียนฟังก์ชั่นที่ง่ายสุด 401 00:19:14,530 --> 00:19:16,280 ชื่อที่มีความเป็น PrintName 402 00:19:16,280 --> 00:19:19,560 มันต้องใช้หลายวิธี ข้อโต้แย้งที่คุณจะพูด? 403 00:19:19,560 --> 00:19:25,120 ดังนั้นหนึ่ง argument-- เพราะมีหนึ่ง อาร์กิวเมนต์ที่ระบุไว้ในวงเล็บ 404 00:19:25,120 --> 00:19:27,000 ประเภทของที่เป็นสตริง 405 00:19:27,000 --> 00:19:30,240 ซึ่งก็คือการพูด PrintName ก็เหมือนกล่องสีดำนี้ 406 00:19:30,240 --> 00:19:32,910 หรือฟังก์ชั่นที่ใช้เวลา เป็น input สตริง 407 00:19:32,910 --> 00:19:35,730 >> และชื่อของ String ที่ สะดวกจะได้รับชื่อ 408 00:19:35,730 --> 00:19:37,840 ไม่ต, ไม่ได้ไม่มี แต่ชื่อ 409 00:19:37,840 --> 00:19:41,090 ดังนั้นสิ่งที่จะ PrintName ทำอย่างไร 410 00:19:41,090 --> 00:19:42,210 มันง่ายอย่างมีความสุข 411 00:19:42,210 --> 00:19:45,390 เช่นเดียวกับหนึ่งบรรทัดของรหัสสำหรับ printf แต่เห็นได้ชัดว่า 412 00:19:45,390 --> 00:19:47,950 พิมพ์ออก "สวัสดี" ดังนั้นจึง 413 00:19:47,950 --> 00:19:50,070 ที่ดังนั้นจึง มาจากการโต้แย้ง 414 00:19:50,070 --> 00:19:52,300 >> ตอนนี้ไม่ได้เป็นนวัตกรรมมากที่นี่ 415 00:19:52,300 --> 00:19:56,710 จริงๆผมได้นำโปรแกรมที่จะทำได้ ได้รับการเขียนกับหนึ่งบรรทัดของรหัส 416 00:19:56,710 --> 00:20:00,190 โดยการใส่นี้ขึ้นที่นี่ และเปลี่ยนไปบางสิ่งบางอย่าง 417 00:20:00,190 --> 00:20:04,920 ที่เกี่ยวข้องกับบางหกหรือเจ็ดหรือเพื่อ บรรทัดของรหัสทุกทางลงที่นี่ 418 00:20:04,920 --> 00:20:08,190 >> แต่มันเป็นเรื่องของการฝึกซ้อม หลักการที่รู้จักในฐานะที่เป็นนามธรรม 419 00:20:08,190 --> 00:20:12,550 ชนิดของห่อหุ้มเซลล์แสงอาทิตย์ภายในของใหม่ ฟังก์ชั่นที่มีชื่อและที่ดีกว่า 420 00:20:12,550 --> 00:20:14,590 แต่ชื่อที่แท้จริง กล่าวว่าสิ่งที่มันไม่ 421 00:20:14,590 --> 00:20:16,880 ผมหมายถึง printf-- ที่ไม่ บรรยายโดยเฉพาะอย่างยิ่ง 422 00:20:16,880 --> 00:20:18,932 ถ้าผมต้องการที่จะสร้าง ชิ้นส่วนปริศนาหรือถ้าฉัน 423 00:20:18,932 --> 00:20:21,140 ต้องการสร้างฟังก์ชั่น ที่พิมพ์ชื่อของใครบางคน 424 00:20:21,140 --> 00:20:23,230 ความงามของการทำเช่นนี้ คือว่าผมสามารถจริง 425 00:20:23,230 --> 00:20:27,170 ให้ฟังก์ชั่นที่ชื่อ ที่อธิบายถึงสิ่งที่มันไม่ 426 00:20:27,170 --> 00:20:29,844 >> ตอนนี้จะใช้เวลาในการป้อนข้อมูลที่ ผมเคยเรียกว่าพลชื่อ 427 00:20:29,844 --> 00:20:32,760 แต่ก็เป็นคำอธิบายที่เยี่ยมยอด แทนที่จะเป็นน้อยมาก 428 00:20:32,760 --> 00:20:36,140 ทั่วไปเช่นเอสและ เป็นโมฆะสำหรับตอนนี้ก็หมายความว่า 429 00:20:36,140 --> 00:20:38,330 ว่าการทำงานนี้ไม่ได้ มือฉันกลับอะไร 430 00:20:38,330 --> 00:20:41,127 มันไม่เหมือน GetString ที่ แท้จริงมือฉันกลับสตริง 431 00:20:41,127 --> 00:20:43,960 เหมือนที่เราทำกับชิ้นส่วนของกระดาษ กับเพื่อนร่วมชั้นของคุณเมื่อสัปดาห์ที่แล้ว 432 00:20:43,960 --> 00:20:45,990 แต่มันก็มีผลข้างเคียง 433 00:20:45,990 --> 00:20:48,080 มันพิมพ์อะไรบางอย่างไปยังหน้าจอ 434 00:20:48,080 --> 00:20:53,880 >> ดังนั้น ณ สิ้นวันถ้าฉัน จะทำให้การทำงานของ-0, ./function-0, 435 00:20:53,880 --> 00:20:55,450 เราจะเห็นว่ามันถามเพื่อนามของเรา 436 00:20:55,450 --> 00:20:58,150 ฉันพิมพ์เดวิดและประเภทออกจากชื่อของฉัน 437 00:20:58,150 --> 00:21:01,080 ถ้าฉันทำมันอีกครั้งกับร็อบ, มันจะบอกว่า "สวัสดีร็อบ". 438 00:21:01,080 --> 00:21:04,280 ดังนั้นความคิดที่เรียบง่าย แต่บางทีอาจจะ คาดการณ์จากนี้จิตใจ 439 00:21:04,280 --> 00:21:06,750 ว่าโปรแกรมของคุณได้รับ เล็ก ๆ น้อย ๆ ที่ซับซ้อนมากขึ้น 440 00:21:06,750 --> 00:21:10,290 และคุณต้องการที่จะเขียนก้อน รหัสและสายที่ code-- วิงวอน 441 00:21:10,290 --> 00:21:13,270 code-- โดยอธิบายว่า ชื่อเหมือน PrintName, 442 00:21:13,270 --> 00:21:15,600 C จะทำให้เราได้ความสามารถนี้ 443 00:21:15,600 --> 00:21:17,660 >> นี่เป็นอีกหนึ่งตัวอย่างง่ายๆคือ 444 00:21:17,660 --> 00:21:22,940 ตัวอย่างเช่นถ้าผมเปิดขึ้น ยื่นตั้งแต่วันนี้เรียกว่า return.c, 445 00:21:22,940 --> 00:21:24,270 สังเกตเห็นสิ่งที่ฉันได้ทำที่นี่ 446 00:21:24,270 --> 00:21:26,330 ส่วนใหญ่หน้าที่หลักนี้ printf 447 00:21:26,330 --> 00:21:30,360 ครั้งแรกที่ผมเริ่มต้นโดยพล เรียกว่าตัวแปร x จำนวน 2 448 00:21:30,360 --> 00:21:34,110 จากนั้นผมก็พิมพ์ออกมา "x อยู่ในขณะนี้ % i "ผ่านในค่าของ x 449 00:21:34,110 --> 00:21:35,500 ดังนั้นฉันแค่พูดในสิ่งที่มันเป็น 450 00:21:35,500 --> 00:21:37,208 >> ตอนนี้ฉันเพียงอย่างกล้าหาญ อ้างกับ printf 451 00:21:37,208 --> 00:21:42,050 ฉันกำลัง cubing ค่า x ที่และฉัน การทำเช่นนั้นโดยการเรียกฟังก์ชั่น 452 00:21:42,050 --> 00:21:45,590 เรียกว่าผ่านก้อน นิ้ว x เป็นอาร์กิวเมนต์ที่ 453 00:21:45,590 --> 00:21:49,300 แล้วบันทึกเอาท์พุท ในตัวแปรตัวเอง x 454 00:21:49,300 --> 00:21:51,340 ดังนั้นฉัน clobbering ค่าของ x 455 00:21:51,340 --> 00:21:53,380 ฉันเอาชนะ ค่าของ x กับสิ่งที่ 456 00:21:53,380 --> 00:21:56,510 ผลของการเรียก ฟังก์ชั่นนี้เป็นก้อน 457 00:21:56,510 --> 00:21:59,530 แล้วฉันเพิ่งพิมพ์ออกมาบางส่วน สิ่งปุยที่นี่บอกว่าสิ่งที่ผมทำ 458 00:21:59,530 --> 00:22:01,600 >> ดังนั้นสิ่งที่เป็นก้อนแล้ว? 459 00:22:01,600 --> 00:22:03,510 สังเกตเห็นสิ่งที่เป็นพื้นฐาน ที่แตกต่างกันที่นี่ 460 00:22:03,510 --> 00:22:05,540 ฉันได้รับฟังก์ชั่น ชื่อเหมือนก่อน 461 00:22:05,540 --> 00:22:08,270 ผมได้ระบุชื่อสำหรับอาร์กิวเมนต์ 462 00:22:08,270 --> 00:22:11,650 เวลานี้ก็เรียกว่า n แทนชื่อ แต่ผมจะเรียกมันว่าอะไรที่ฉันต้องการ 463 00:22:11,650 --> 00:22:12,650 แต่นี้เป็นที่แตกต่างกัน 464 00:22:12,650 --> 00:22:14,080 สิ่งที่อยู่ทางซ้ายมือนี้ 465 00:22:14,080 --> 00:22:16,290 ก่อนหน้านี้มันเป็นสิ่งที่คำหลัก 466 00:22:16,290 --> 00:22:16,870 เด็กชาย 467 00:22:16,870 --> 00:22:18,580 ตอนนี้ก็เห็นได้ชัดว่า int 468 00:22:18,580 --> 00:22:20,630 >> ดังนั้นสิ่งที่อาจจะนำมาใช้? 469 00:22:20,630 --> 00:22:24,090 ขณะที่หมายเป็นโมฆะการเรียงลำดับของ ความว่างเปล่าและนั่นก็คือกรณีที่ 470 00:22:24,090 --> 00:22:25,970 PrintName กลับไม่มีอะไร 471 00:22:25,970 --> 00:22:27,942 มันทำอะไรบางอย่าง แต่ มันก็ไม่ได้มือฉันกลับ 472 00:22:27,942 --> 00:22:30,650 สิ่งที่ฉันสามารถวางบน ด้านซ้ายมือของเครื่องหมายเท่ากับ 473 00:22:30,650 --> 00:22:32,460 เหมือนที่ผมเคยทำที่นี่ในบรรทัด 22 474 00:22:32,460 --> 00:22:36,780 >> ดังนั้นถ้าผมบอกว่าเป็นสายที่ 30 สิ่งที่อาจหมายถึง 475 00:22:36,780 --> 00:22:38,610 เกี่ยวกับสิ่งที่ก้อนไม่สำหรับฉันหรือไม่ 476 00:22:38,610 --> 00:22:41,110 ใช่? 477 00:22:41,110 --> 00:22:42,310 มันกลับจำนวนเต็ม 478 00:22:42,310 --> 00:22:44,590 ดังนั้นมันมือฉันกลับสำหรับ เช่นชิ้นส่วนของกระดาษ 479 00:22:44,590 --> 00:22:46,580 ที่มันได้เขียนคำตอบ 480 00:22:46,580 --> 00:22:50,130 2 คีบหรือคีบ 3 หรือ 4 cubed-- สิ่งที่ฉันผ่านไปใน 481 00:22:50,130 --> 00:22:51,540 และวิธีการที่ฉันไม่ดำเนินการนี​​้? 482 00:22:51,540 --> 00:22:54,810 ดีเพียงครั้ง n n n ครั้ง เป็นวิธีการที่ผมอาจยกกำลังมูลค่า 483 00:22:54,810 --> 00:22:57,110 ดังนั้นอีกครั้งง่ายสุด ความคิด แต่ชี้ 484 00:22:57,110 --> 00:23:00,100 ตอนนี้วิธีการที่เราสามารถเขียนฟังก์ชั่น ที่จริงเรากลับมี 485 00:23:00,100 --> 00:23:02,380 ค่าที่อาจเป็นที่สนใจ 486 00:23:02,380 --> 00:23:05,740 >> ลองดูที่ตัวอย่างหนึ่งที่ผ่านมา ที่นี่เรียกว่าฟังก์ชั่นหนึ่ง 487 00:23:05,740 --> 00:23:08,530 ในตัวอย่างนี้ก็จะเริ่ม ที่จะได้รับน่าสนใจมากขึ้น 488 00:23:08,530 --> 00:23:12,400 ดังนั้นในการทำงานอย่างใดอย่างหนึ่งนี้ แจ้งให้ทราบล่วงหน้า program-- ที่สุด 489 00:23:12,400 --> 00:23:14,920 เรียกฟังก์ชันที่เรียกว่า GetPositiveInt 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt ไม่ ฟังก์ชั่นในห้องสมุด CS50, 491 00:23:17,800 --> 00:23:20,400 แต่เราตัดสินใจว่าเรา ต้องการให้มีอยู่ 492 00:23:20,400 --> 00:23:24,550 >> ดังนั้นหากเราเลื่อนลงต่อไปในแฟ้ม แจ้งให้ทราบว่าผมไปเกี่ยวกับการใช้ 493 00:23:24,550 --> 00:23:26,560 ได้รับ int บวกและฉัน บอกว่ามันน่าสนใจมากขึ้น 494 00:23:26,560 --> 00:23:28,992 เพราะนี่คือที่ดี จำนวนบรรทัดของรหัส 495 00:23:28,992 --> 00:23:30,700 มันไม่ใช่แค่โง่ โปรแกรมของเล่นเล็ก ๆ น้อย ๆ 496 00:23:30,700 --> 00:23:33,870 มันเป็นจริงมีการตรวจสอบข้อผิดพลาดบาง และการทำสิ่งที่มีประโยชน์มากขึ้น 497 00:23:33,870 --> 00:23:38,470 >> ดังนั้นหากคุณไม่เคยเห็นคำแนะนำแบบ วิดีโอที่เราได้ฝังตัวอยู่ใน PSET1, 498 00:23:38,470 --> 00:23:42,350 รู้ว่านี้เป็นชนิดของ วงใน C ที่คล้ายกันในจิตวิญญาณ 499 00:23:42,350 --> 00:23:44,270 กับชนิดของสิ่งที่สามารถทำรอยขีดข่วน 500 00:23:44,270 --> 00:23:46,320 และทำกล่าวว่าทำเช่นนี้ 501 00:23:46,320 --> 00:23:47,500 พิมพ์ออกมา 502 00:23:47,500 --> 00:23:51,860 แล้วไปข้างหน้าและได้รับ n-- ได้รับ int และเก็บไว้ใน n, 503 00:23:51,860 --> 00:23:55,760 และให้ทำเช่นนี้อีกครั้งและอีกครั้งและ อีกครั้งตราบใดที่ n คือน้อยกว่าหนึ่ง 504 00:23:55,760 --> 00:23:58,720 >> ดังนั้น n เป็นไปได้น้อยกว่าหนึ่ง แต่ถ้ามนุษย์ไม่ให้ความร่วมมือ 505 00:23:58,720 --> 00:24:01,980 ถ้าเขาหรือเธอจะพิมพ์ ใน 0 หรือ -1 หรือ -50, 506 00:24:01,980 --> 00:24:04,790 วงนี้เป็นไปเพื่อให้ ดำเนินการอีกครั้งและอีกครั้ง 507 00:24:04,790 --> 00:24:07,549 และในที่สุดสังเกตเห็นฉัน เพียงแค่ส่งกลับค่า 508 00:24:07,549 --> 00:24:09,590 ดังนั้นตอนนี้เรามีการทำงาน ที่จะได้รับความสุข 509 00:24:09,590 --> 00:24:14,040 ถ้า CS50 จะใช้ใน CS50.h และ CS50.c สำหรับคุณ 510 00:24:14,040 --> 00:24:16,520 แต่ที่นี่เราสามารถทำได้ตอนนี้ ดำเนินการนี​​้เอง 511 00:24:16,520 --> 00:24:19,230 >> แต่ทั้งสองความคิดเห็นเกี่ยวกับรายละเอียดบางอย่างที่สำคัญ 512 00:24:19,230 --> 00:24:24,390 One-- ทำไมฉันประกาศ int n คุณคิดว่าในบรรทัด 29 513 00:24:24,390 --> 00:24:27,139 แทนที่จะเป็นเพียงแค่การทำ ที่นี่ซึ่งเป็น 514 00:24:27,139 --> 00:24:28,930 สอดคล้องกับ สิ่งที่เราทำเมื่อสัปดาห์ที่แล้ว? 515 00:24:28,930 --> 00:24:29,430 ใช่? 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 ความคิดที่ดี 518 00:24:35,110 --> 00:24:37,080 ดังนั้นถ้าเราจะใส่มัน ที่นี่ก็เหมือนเรา 519 00:24:37,080 --> 00:24:39,110 ให้ประกาศว่ามันอีกครั้งและอีกครั้ง 520 00:24:39,110 --> 00:24:42,000 ว่าในตัวของมันเองเป็น ไม่ได้มีปัญหาต่อ se 521 00:24:42,000 --> 00:24:43,940 เพราะเราจะต้อง ค่าครั้งเดียวแล้ว 522 00:24:43,940 --> 00:24:45,330 เรากำลังจะได้รับหนึ่งใหม่อยู่แล้ว 523 00:24:45,330 --> 00:24:45,940 แต่เป็นความคิดที่ดี 524 00:24:45,940 --> 00:24:46,440 ใช่? 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> ปิด 527 00:24:53,330 --> 00:24:59,030 เพราะฉันได้ประกาศเมื่อวันที่ n สาย 29 ที่อยู่นอกวง 528 00:24:59,030 --> 00:25:01,390 ก็สามารถเข้าถึงได้ตลอด ฟังก์ชั่นทั้งหมดนี้ 529 00:25:01,390 --> 00:25:05,400 ไม่ได้ฟังก์ชั่นอื่น ๆ เพราะ n คือยังด้านในของโค้งเหล่านี้ 530 00:25:05,400 --> 00:25:06,470 วงเล็บที่นี่ 531 00:25:06,470 --> 00:25:07,940 So-- แน่ใจว่า 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> ว่า 534 00:25:12,940 --> 00:25:14,356 ดังนั้นนี่คือมากยิ่งขึ้นไปยังจุดที่ 535 00:25:14,356 --> 00:25:18,600 ถ้าเราแทนการประกาศ n ที่นี่ในสาย 32, 536 00:25:18,600 --> 00:25:22,340 มันเป็นปัญหาเพราะเดา ที่อื่นฉันต้องการที่จะเข้าถึงมันได้หรือไม่ 537 00:25:22,340 --> 00:25:25,620 On line 34 และ กฎง่ายๆของหัวแม่มือคือ 538 00:25:25,620 --> 00:25:30,060 ว่าคุณสามารถใช้ตัวแปร ภายในวงเล็บปีกกาล่าสุด 539 00:25:30,060 --> 00:25:31,420 ที่คุณประกาศว่า 540 00:25:31,420 --> 00:25:35,230 >> แต่น่าเสียดายที่สาย 34 เป็นหนึ่งในสายสายเกินไป 541 00:25:35,230 --> 00:25:38,560 เพราะผมเคยปิดไปแล้ว วงเล็บปีกกาในบรรทัด 33 542 00:25:38,560 --> 00:25:41,220 ที่สอดคล้องกับ วงเล็บปีกกาในบรรทัด 30 543 00:25:41,220 --> 00:25:44,180 และดังนั้นนี่คือวิธีที่บอก ที่ int ตัวแปรนี้จะกำหนดขอบเขต, 544 00:25:44,180 --> 00:25:46,970 จึงจะพูดถึงเฉพาะภายใน ของวงเล็บปีกกาที่ 545 00:25:46,970 --> 00:25:48,910 มันก็ไม่ได้อยู่ที่ด้านนอกของพวกเขา 546 00:25:48,910 --> 00:25:51,580 >> ดังนั้นแน่นอนถ้าผมทำเช่นนี้ ที่ไม่ถูกต้องให้ฉันบันทึกรหัส 547 00:25:51,580 --> 00:25:53,530 เป็นค่าเท่าใดเขียนไม่ถูกต้อง 548 00:25:53,530 --> 00:25:57,990 ให้ฉันไปข้างหน้าและจะทำให้ ฟังก์ชั่น 1 และข้อผิดพลาด notice-- 549 00:25:57,990 --> 00:26:03,502 การใช้ตัวระบุ n ไม่ได้ประกาศ ในบรรทัดที่ 35 ซึ่งเป็นที่นี่ 550 00:26:03,502 --> 00:26:05,210 และถ้าเราเลื่อนขึ้น ต่อไปอีกคนหนึ่ง 551 00:26:05,210 --> 00:26:08,750 ใช้ไม่ได้ประกาศ n ตัวระบุในบรรทัด 34 552 00:26:08,750 --> 00:26:11,200 >> ดังนั้นคอมไพเลอร์, เสียงดังกราว, จะสังเกตเห็นว่ามันเป็นเพียงแค่ 553 00:26:11,200 --> 00:26:13,720 ไม่ได้อยู่แม้ว่า เห็นได้ชัดว่ามันมีสายตา 554 00:26:13,720 --> 00:26:16,090 ดังนั้นการแก้ไขที่ง่ายคือการประกาศว่ามี 555 00:26:16,090 --> 00:26:18,790 >> ตอนนี้ให้ฉันเลื่อนไป ด้านบนของไฟล์ 556 00:26:18,790 --> 00:26:21,080 สิ่งที่กระโดดออกที่คุณเป็น ความแตกต่างกันเพียงเล็กน้อย 557 00:26:21,080 --> 00:26:23,070 จากสิ่งที่เรามองที่เมื่อสัปดาห์ที่แล้ว? 558 00:26:23,070 --> 00:26:26,990 ไม่เพียง แต่ฉันจะมีชื่อไม่เพียง แต่ ฉันมีบางคมชัดรวมถึงการขึ้นด้านบน 559 00:26:26,990 --> 00:26:29,340 ฉันมีสิ่งที่ฉัน โทรต้นแบบ 560 00:26:29,340 --> 00:26:36,100 ตอนนี้ที่มีลักษณะชะมัดคล้ายกับสิ่งที่ เราเพิ่งเห็นช่วงเวลาที่ผ่านมาในบรรทัด 27 561 00:26:36,100 --> 00:26:39,230 >> จึงขอสรุปจากที่แตกต่างกัน เกิดข้อผิดพลาดว่าทำไมฉันได้กระทำนี้ 562 00:26:39,230 --> 00:26:42,050 ให้ฉันไปข้างหน้าและ ลบบรรทัดเหล่านี้มี 563 00:26:42,050 --> 00:26:44,240 และเพื่อให้เรารู้อะไรเกี่ยวกับต้นแบบ 564 00:26:44,240 --> 00:26:45,430 remake ไฟล์นี้ 565 00:26:45,430 --> 00:26:46,890 ทำให้ฟังก์ชั่นหนึ่ง 566 00:26:46,890 --> 00:26:48,090 และตอนนี้ด่าสี่ข้อผิดพลาด 567 00:26:48,090 --> 00:26:50,220 ให้เลื่อนขึ้นไปเป็นคนแรก 568 00:26:50,220 --> 00:26:55,070 >> ประกาศโดยนัยของการทำงาน ได้รับ int ในเชิงบวกคือไม่ถูกต้องใน C99 569 00:26:55,070 --> 00:26:57,780 C99 ก็หมายความ 1999 รุ่นของภาษา 570 00:26:57,780 --> 00:26:59,710 C ซึ่งเป็นสิ่งที่เรากำลังใช้แน่นอน 571 00:26:59,710 --> 00:27:01,050 ดังนั้นสิ่งนี้หมายความว่าอย่างไร 572 00:27:01,050 --> 00:27:05,250 ดี C-- และอื่น ๆ โดยเฉพาะ C compilers-- เป็นโปรแกรมใบ้สวย 573 00:27:05,250 --> 00:27:07,420 พวกเขารู้ว่าสิ่งที่คุณได้ บอกพวกเขาและที่ 574 00:27:07,420 --> 00:27:08,960 ใจจริงจากสัปดาห์ก่อน 575 00:27:08,960 --> 00:27:12,910 >> ปัญหาคือว่าถ้าฉันไป เกี่ยวกับการใช้ชื่อขึ้นที่นี่ 576 00:27:12,910 --> 00:27:17,640 และที่ผมเรียกฟังก์ชันที่เรียกว่า GetPositiveInt ที่นี่ในบรรทัด 20 577 00:27:17,640 --> 00:27:22,520 ฟังก์ชันที่ในทางเทคนิคไม่ได้ คอมไพเลอร์ที่มีอยู่จนเห็นเส้น 27 578 00:27:22,520 --> 00:27:25,450 แต่น่าเสียดายที่คอมไพเลอร์เป็น ทำสิ่งที่ด้านบนลงซ้ายขวา 579 00:27:25,450 --> 00:27:29,580 เพราะมันยังไม่เห็น การดำเนินการของ GetPositiveInt, 580 00:27:29,580 --> 00:27:32,400 แต่ก็เห็นคุณพยายาม ที่จะใช้ขึ้นที่นี่ 581 00:27:32,400 --> 00:27:35,810 ก็แค่ไป bail-- ตะโกนใส่ คุณมีข้อผิดพลาด message-- บางที 582 00:27:35,810 --> 00:27:38,440 ที่เป็นความลับและไม่จริง คอมไพล์แฟ้ม 583 00:27:38,440 --> 00:27:41,940 >> ดังนั้นจึงเรียกว่าต้นแบบขึ้น ที่นี่เป็นที่ยอมรับซ้ำซ้อน 584 00:27:41,940 --> 00:27:47,870 ตัวอักษรที่ผมไปลงที่นี่และผมคัดลอก และวางนี้และฉันใส่มันขึ้นที่นี่ 585 00:27:47,870 --> 00:27:51,020 เป็นโมฆะจะเป็นที่เหมาะสมมากขึ้นเพื่อเราจะ ตัวอักษรคัดลอกและวางในเวลานี้ 586 00:27:51,020 --> 00:27:52,854 ตัวอักษรที่ผมคัดลอกและวางมัน 587 00:27:52,854 --> 00:27:54,270 จริงๆเป็นเช่นเดียวกับเศษขนมปัง 588 00:27:54,270 --> 00:27:56,260 >> เบาะแสเพียงเล็กน้อยที่จะคอมไพเลอร์ 589 00:27:56,260 --> 00:27:58,860 ผมไม่ทราบว่าสิ่งนี้จะ แต่ผมสัญญากับคุณ 590 00:27:58,860 --> 00:28:00,260 ว่ามันจะมีอยู่ในที่สุด 591 00:28:00,260 --> 00:28:04,010 และที่ว่าทำไมนี้ line-- ใน สาย 16-- จบลงด้วยอัฒภาค 592 00:28:04,010 --> 00:28:05,486 มันเป็นที่ซ้ำซ้อนจากการออกแบบ 593 00:28:05,486 --> 00:28:05,986 ใช่? 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> หากคุณไม่ได้เชื่อมโยงห้องสมุดของคุณ ยกกำลังโอ้คำถามที่ดี 596 00:28:14,360 --> 00:28:17,350 คมชัดรวมถึงการรวมไฟล์ส่วนหัว 597 00:28:17,350 --> 00:28:20,040 ต้อง be-- ควรเกือบ มักจะเป็นที่ส่วนบนสุด 598 00:28:20,040 --> 00:28:23,270 ของไฟล์สำหรับ similar-- สำหรับ ว่าด้วยเหตุผลเดียวกันใช่ 599 00:28:23,270 --> 00:28:26,430 เพราะในมาตรฐาน io.h เป็นอักษรเส้น 600 00:28:26,430 --> 00:28:30,560 เช่นนี้ แต่ด้วย printf คำและ มีการขัดแย้งและประเภทผลตอบแทนของมัน 601 00:28:30,560 --> 00:28:33,310 และอื่น ๆ โดยการทำเช่นคมมีขึ้น ที่นี่สิ่งที่คุณกำลังทำอย่างแท้จริง 602 00:28:33,310 --> 00:28:36,380 มีการคัดลอกและวางเนื้อหา ของคนอื่นเขียนขึ้นด้านบน 603 00:28:36,380 --> 00:28:39,660 จึง cluing รหัสของคุณใน ความจริงที่ว่าฟังก์ชั่นที่ทำอยู่ 604 00:28:39,660 --> 00:28:40,160 ใช่? 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> อย่างแน่นอน 607 00:28:48,260 --> 00:28:51,690 ดังนั้นอย่างฉลาดและถูกต้อง การแก้ปัญหาจะเป็นคุณรู้อะไรไหม 608 00:28:51,690 --> 00:28:53,760 ผมไม่ทราบว่าสิ่งที่ ต้นแบบเป็น แต่ฉันรู้ว่า 609 00:28:53,760 --> 00:28:56,390 ถ้าผมเข้าใจว่าซีเป็นเพียงแค่ ใบ้และ rethinks บนลงล่าง 610 00:28:56,390 --> 00:28:57,820 ดีขอให้สิ่งที่มันต้องการ 611 00:28:57,820 --> 00:29:01,650 ลองตัดรหัสที่วางมันขึ้นมา ด้านบนและตอนนี้ผลักดันหลักลงมาด้านล่าง 612 00:29:01,650 --> 00:29:03,470 นี้ก็จะแก้ปัญหา 613 00:29:03,470 --> 00:29:07,409 >> แต่คุณได้อย่างง่ายดายมากอาจจะเกิดขึ้นกับ สถานการณ์ที่ต้องเรียก B, 614 00:29:07,409 --> 00:29:10,075 และอาจ B เรียกกลับไป A. นี้ เป็นสิ่งที่เรียกว่าการเรียกซ้ำ 615 00:29:10,075 --> 00:29:11,370 และเราจะกลับมาที่ 616 00:29:11,370 --> 00:29:13,911 และมันอาจจะหรืออาจจะไม่ดี สิ่งที่ แต่คุณสามารถแน่นอน 617 00:29:13,911 --> 00:29:15,110 ทำลายการแก้ปัญหานี้ 618 00:29:15,110 --> 00:29:17,690 >> และยิ่งกว่านั้นผมจะ อ้าง stylistically, 619 00:29:17,690 --> 00:29:20,760 โดยเฉพาะอย่างยิ่งเมื่อโปรแกรมของคุณ กลายเป็นนี้ยาวและระยะยาวนี้ 620 00:29:20,760 --> 00:29:23,064 มันเป็นเพียงสิ่งอำนวยความสะดวกสุด ที่จะนำหลักที่ด้านบน 621 00:29:23,064 --> 00:29:25,730 เพราะมันเป็นสิ่งที่มากที่สุด โปรแกรมเมอร์จะไปเกี่ยวกับการดูแล 622 00:29:25,730 --> 00:29:28,150 และดังนั้นจึงเป็นเรื่องที่ทำความสะอาดน้อย เนื้อหาที่จะทำแบบ 623 00:29:28,150 --> 00:29:30,380 ฉันเดิมไม่ได้ กับต้นแบบได้ 624 00:29:30,380 --> 00:29:33,396 แม้ว่ามันจะดูเล็กน้อย ซ้ำซ้อนได้อย่างรวดเร็วก่อน 625 00:29:33,396 --> 00:29:33,895 ใช่? 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 ขออภัยคุณสามารถพูดได้ดัง? 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> หากคุณสลับตำแหน่งของ การดำเนินงานและต้นแบบ? 630 00:29:49,580 --> 00:29:51,270 เพื่อให้เป็นคำถามที่ดี 631 00:29:51,270 --> 00:29:53,780 ถ้าคุณอีกครั้งลงประกาศนี้ ที่นี่เรามาดูสิ่งที่เกิดขึ้น 632 00:29:53,780 --> 00:29:55,530 ดังนั้นถ้าผมใส่ลงไปนี้ ที่นี่คุณกำลังจะบอกว่า 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 โอ้ขอโทษ 635 00:29:58,360 --> 00:29:58,859 ดัง? 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 ยิ่งดัง 638 00:30:04,011 --> 00:30:04,760 โอ้คำถามที่ดี 639 00:30:04,760 --> 00:30:05,860 มันจะทำให้การทำงานหรือไม่ 640 00:30:05,860 --> 00:30:08,901 คุณจะรู้ว่าหลังจากที่ทุกปีเหล่านี้ฉัน ไม่เคยนำต้นแบบนั้นไม่นาน 641 00:30:08,901 --> 00:30:13,810 จึงขอให้ทำหน้าที่-1 หลังจากทำที่ 642 00:30:13,810 --> 00:30:15,279 >> [บ่น] 643 00:30:15,279 --> 00:30:16,320 เดวิดเจลัน: โอ้รอ 644 00:30:16,320 --> 00:30:17,944 เรายังคงต้องใส่ทุกอย่างขึ้นด้านบน 645 00:30:17,944 --> 00:30:21,400 จึงขอทำเช่นนี้ขึ้นที่นี่ถ้าฉัน การทำความเข้าใจคำถามของคุณได้อย่างถูกต้อง 646 00:30:21,400 --> 00:30:24,700 ฉันวางทุกอย่างรวมถึง ต้นแบบดังกล่าวข้างต้นหลัก 647 00:30:24,700 --> 00:30:28,180 แต่ฉันวางต้นแบบ ดังต่อไปนี้การดำเนินการ 648 00:30:28,180 --> 00:30:33,190 >> ดังนั้นถ้าผมทำให้ใครคนหนึ่ง, ฉันได้รับ กลับ error-- ที่ไม่ได้ใช้ตัวแปร n 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 โอ้มี 651 00:30:37,860 --> 00:30:38,360 ขอบคุณ 652 00:30:38,360 --> 00:30:39,430 ลองมาดูกันเรากำจัดนี้ 653 00:30:39,430 --> 00:30:41,304 นั่นเป็นข้อผิดพลาดที่แตกต่าง จึงขอไม่สนใจว่า 654 00:30:41,304 --> 00:30:43,910 ขออย่างรวดเร็วจริงๆ remake นี้ 655 00:30:43,910 --> 00:30:48,100 >> ตกลงจึงไม่โต้แย้งข้อมูล โดยใช้รูปแบบสตริง 656 00:30:48,100 --> 00:30:52,310 n-- โอ้ว่าเป็นเพราะ ฉันเปลี่ยนไปเหล่านี้ที่นี่ 657 00:30:52,310 --> 00:30:55,885 สิทธิทั้งหมดที่เรารู้ว่าคำตอบ จะยา่สิทธิทั้งหมดที่นี่เราไป 658 00:30:55,885 --> 00:31:00,560 Ah ขอบคุณสำหรับบวก 659 00:31:00,560 --> 00:31:03,430 สิทธิทั้งหมดฉันจะแก้ไขรหัสนี้ after-- ไม่สนใจปัญหานี้โดยเฉพาะอย่างยิ่ง 660 00:31:03,430 --> 00:31:08,300 ตั้งแต่นี้ was-- การทำงานคือคำตอบ 661 00:31:08,300 --> 00:31:11,560 >> ดังนั้นจึงไม่ได้เขียนทับ สิ่งที่คุณได้ทำเพียงแค่ 662 00:31:11,560 --> 00:31:14,800 ฉันสงสัยว่าคอมไพเลอร์ ถูกเขียนในลักษณะ 663 00:31:14,800 --> 00:31:18,420 ว่ามันไม่สนใจต้นแบบของคุณ เพราะร่างกายเพื่อที่จะพูด 664 00:31:18,420 --> 00:31:20,922 ฟังก์ชั่นที่มีอยู่แล้ว การดำเนินการที่สูงขึ้น 665 00:31:20,922 --> 00:31:23,380 ฉันจะต้องไปปรึกษาจริง คู่มือของคอมไพเลอร์ 666 00:31:23,380 --> 00:31:26,171 ที่จะเข้าใจว่ามีที่อื่น ๆ ความหมาย แต่อย่างรวดเร็วก่อน 667 00:31:26,171 --> 00:31:29,290 เพียงแค่พยายามและการทดลอง ดูเหมือนว่าจะไม่มีผลกระทบ 668 00:31:29,290 --> 00:31:30,730 คำถามที่ดี 669 00:31:30,730 --> 00:31:33,660 >> ดังนั้นขอให้เคลื่อนไปข้างหน้าตอนนี้ย้าย ห่างจากผลข้างเคียงที่ 670 00:31:33,660 --> 00:31:36,660 มีฟังก์ชั่นที่ทำสิ่งที่ชอบ สายตาบนหน้าจอด้วย printf, 671 00:31:36,660 --> 00:31:38,090 แต่ไม่คืนค่า 672 00:31:38,090 --> 00:31:41,550 และฟังก์ชั่นที่มีผลตอบแทน ค่าเหมือนเราเพิ่งเห็นไม่กี่ของ 673 00:31:41,550 --> 00:31:45,350 เราได้เห็นความคิดของขอบเขตนี้ และเราจะเห็นนี้อีกครั้งและอีกครั้ง 674 00:31:45,350 --> 00:31:47,210 แต่ตอนนี้อีกครั้ง ใช้กฎของหัวแม่มือ 675 00:31:47,210 --> 00:31:51,410 ตัวแปรที่สามารถใช้งานได้ ภายในเปิดมากที่สุดเมื่อเร็ว ๆ นี้ 676 00:31:51,410 --> 00:31:54,350 และวงเล็บปีกกาปิดในขณะที่เรา เห็นในตัวอย่างนั้น 677 00:31:54,350 --> 00:31:56,910 >> และในขณะที่คุณชี้ให้เห็น มี ability-- 678 00:31:56,910 --> 00:32:00,040 คุณสามารถแก้ปัญหาบางส่วนของปัญหาเหล​​่านี้ โดยการใส่ตัวแปรทั่วโลก 679 00:32:00,040 --> 00:32:01,290 ที่ส่วนบนสุดของไฟล์ 680 00:32:01,290 --> 00:32:03,630 แต่ในเกือบทุกกรณี เราจะขมวดคิ้วนั้น 681 00:32:03,630 --> 00:32:06,170 และแน่นอนไม่ได้ไป เป็นวิธีแก้ปัญหาสำหรับตอนนี้ที่ 682 00:32:06,170 --> 00:32:09,890 ดังนั้นสำหรับตอนนี้ Takeaway คือ ตัวแปรที่มีความเชื่อในเรื่องของขอบเขตนี้ 683 00:32:09,890 --> 00:32:13,430 >> แต่ตอนนี้ให้ดูที่อื่น วิธีแห้งของจริงที่กำลังมองหา 684 00:32:13,430 --> 00:32:15,810 ที่บางส่วนที่น่าสนใจสวย รายละเอียดการปฏิบัติ 685 00:32:15,810 --> 00:32:17,810 วิธีการที่เราอาจจะแสดงข้อมูล 686 00:32:17,810 --> 00:32:20,370 และเราดูแล้วที่นี้ ในสัปดาห์แรกของการเรียน 687 00:32:20,370 --> 00:32:23,320 กำลังมองหาที่ไบนารีและ เตือนตัวเองของทศนิยม 688 00:32:23,320 --> 00:32:28,310 >> แต่จำจากสัปดาห์ก่อนที่ซีมี ชนิดข้อมูลที่แตกต่างกันและที่อัดแน่นมากขึ้น 689 00:32:28,310 --> 00:32:30,600 แต่คนที่มีประโยชน์มากที่สุด สำหรับตอนนี้อาจจะมีเหล่านี้ 690 00:32:30,600 --> 00:32:36,030 ถ่านหรือตัวละครที่เกิดขึ้น จะเป็นหนึ่งไบต์หรือแปดบิตรวม 691 00:32:36,030 --> 00:32:40,060 และนั่นคือสิ่งที่จะบอกว่าขนาด ของถ่านเป็นเพียงหนึ่งไบต์ 692 00:32:40,060 --> 00:32:45,370 ไบต์แปดบิตดังนั้นนี้หมายความว่า เราสามารถเป็นตัวแทนของตัวละครหลายวิธี 693 00:32:45,370 --> 00:32:47,320 วิธีจดหมายจำนวนมากหรือ สัญลักษณ์บนแป้นพิมพ์ 694 00:32:47,320 --> 00:32:49,210 ถ้าเรามีหนึ่งไบต์หรือแปดบิต 695 00:32:49,210 --> 00:32:51,546 คิดว่ากลับไปเมื่อสัปดาห์ที่ศูนย์ 696 00:32:51,546 --> 00:32:53,420 หากคุณมีแปดบิต กี่ค่าทั้งหมด 697 00:32:53,420 --> 00:32:55,503 คุณสามารถแสดงกับ รูปแบบของศูนย์และคน? 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 One-- มากกว่านั้น 700 00:33:00,260 --> 00:33:03,490 ดังนั้น 256 ทั้งหมดถ้าคุณ เริ่มนับจากศูนย์ 701 00:33:03,490 --> 00:33:07,120 ดังนั้นถ้าคุณมีแปด bits-- ดังนั้นหากเรา มีหลอดไฟไบนารีของเราขึ้นที่นี่อีกครั้ง 702 00:33:07,120 --> 00:33:12,180 เราสามารถเปิดหลอดไฟที่อยู่บน และปิดในใด ๆ ของรูปแบบที่ไม่ซ้ำกัน 256 703 00:33:12,180 --> 00:33:13,640 >> ตอนนี้เป็นบิตที่มีปัญหา 704 00:33:13,640 --> 00:33:16,857 ไม่มากสำหรับภาษาอังกฤษและ ภาษาโรแมนติก แต่แน่นอน 705 00:33:16,857 --> 00:33:19,190 เมื่อคุณแนะนำสำหรับ เช่นภาษาเอเชียที่ 706 00:33:19,190 --> 00:33:22,580 มีสัญลักษณ์มากกว่าเช่น 26 ตัวอักษรของตัวอักษร 707 00:33:22,580 --> 00:33:24,390 เราจริงอาจต้อง มากกว่าหนึ่งไบต์ 708 00:33:24,390 --> 00:33:28,240 และโชคดีที่ใน ปีที่ผ่านมามีสังคม 709 00:33:28,240 --> 00:33:31,040 มาตรฐานอื่น ๆ ที่นำมาใช้ที่ใช้ มากกว่าหนึ่งไบต์ต่อค่าใช้จ่าย 710 00:33:31,040 --> 00:33:34,210 >> แต่ตอนนี้ใน C เริ่มต้น เป็นเพียงหนึ่งไบต์หรือแปดบิต 711 00:33:34,210 --> 00:33:38,195 จำนวนเต็มขณะที่สี่ ไบต์หรือที่เรียกว่า 32 บิต 712 00:33:38,195 --> 00:33:41,320 ซึ่งหมายความว่าสิ่งที่ใหญ่ที่สุดที่เป็นไปได้ ตัวเลขที่เราสามารถเป็นตัวแทนที่มี int 713 00:33:41,320 --> 00:33:41,820 เห็นได้ชัด? 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 กับพันล้าน 716 00:33:45,050 --> 00:33:46,760 ดังนั้นจึงเป็นสี่พันล้านให้หรือใช้เวลา 717 00:33:46,760 --> 00:33:49,840 2 ถึงอำนาจ 32 ถ้าเรา ถือว่าไม่มีตัวเลขที่ติดลบ 718 00:33:49,840 --> 00:33:52,530 และเพียงแค่ใช้บวกทั้งหมด ตัวเลขก็สี่พันล้าน 719 00:33:52,530 --> 00:33:53,730 ให้หรือใช้เวลาเพื่อ 720 00:33:53,730 --> 00:33:57,890 ลอยขณะที่เป็นชนิดที่แตกต่างกัน ชนิดข้อมูลในซีก็ยังคงตัวเลข 721 00:33:57,890 --> 00:33:58,990 แต่ก็เป็นจำนวนจริง 722 00:33:58,990 --> 00:34:00,660 สิ่งที่มีจุดทศนิยม 723 00:34:00,660 --> 00:34:03,000 และปรากฎว่า ซียังใช้สี่ไบต์ 724 00:34:03,000 --> 00:34:05,340 เพื่อเป็นตัวแทนของลอยค่าจุด 725 00:34:05,340 --> 00:34:09,420 >> แต่น่าเสียดายที่ว่าหลายลอย ค่าจุดที่มีในโลก? 726 00:34:09,420 --> 00:34:11,582 วิธีการหลายตัวเลขที่แท้จริงจะมี? 727 00:34:11,582 --> 00:34:13,540 มีไม่มีที่สิ้นสุด จำนวนและสำหรับเรื่องที่ 728 00:34:13,540 --> 00:34:15,164 มีจำนวนอนันต์ของจำนวนเต็ม 729 00:34:15,164 --> 00:34:18,070 ดังนั้นเราจึงอยู่แล้วชนิดของ ขุดหลุมตัวเองที่นี่ 730 00:34:18,070 --> 00:34:21,780 โดยเห็นได้ชัดใน computers-- ที่ โปรแกรมน้อยเขียน C ใน them-- 731 00:34:21,780 --> 00:34:24,110 สามารถนับสูงที่สุดเท่าที่ สี่พันล้านให้หรือใช้เวลา 732 00:34:24,110 --> 00:34:26,260 และลอยค่าจุด เท่านั้นที่สามารถเห็นได้ชัด 733 00:34:26,260 --> 00:34:28,330 มีบางจำนวน จำกัด ของความแม่นยำ 734 00:34:28,330 --> 00:34:30,810 เพียงตัวเลขจำนวนมากดังนั้นหลังจากที่ จุดทศนิยมของพวกเขา 735 00:34:30,810 --> 00:34:32,822 >> เพราะแน่นอนถ้า คุณมีเพียง 32 บิต 736 00:34:32,822 --> 00:34:36,030 ผมไม่ทราบว่าวิธีการที่เรากำลังจะไปเกี่ยวกับ ที่เป็นตัวแทนของ numbers-- จริงอาจจะ 737 00:34:36,030 --> 00:34:37,409 กับประเภทที่แตกต่างกันของรูปแบบ 738 00:34:37,409 --> 00:34:40,030 แต่มีแน่นอนแน่นอน จำนวนของรูปแบบดังกล่าว 739 00:34:40,030 --> 00:34:41,830 เพื่อให้ที่นี่เช่นนี้เป็นปัญหา 740 00:34:41,830 --> 00:34:43,710 >> ตอนนี้เราสามารถหลีกเลี่ยงปัญหาเล็กน้อย 741 00:34:43,710 --> 00:34:45,710 ถ้าคุณไม่ได้ใช้ลอย, คุณสามารถใช้คู่ 742 00:34:45,710 --> 00:34:50,230 ใน C ซึ่งจะช่วยให้คุณแปดไบต์ซึ่ง เป็นรูปแบบที่เป็นไปได้ทางขึ้นของศูนย์ 743 00:34:50,230 --> 00:34:50,730 และคนที่ 744 00:34:50,730 --> 00:34:55,199 แต่ก็ยังคง จำกัด ซึ่งเป็นไป จะเป็นปัญหาถ้าคุณเขียนซอฟแวร์ 745 00:34:55,199 --> 00:34:57,670 สำหรับกราฟิกหรือแฟนซี สูตรทางคณิตศาสตร์ 746 00:34:57,670 --> 00:35:00,410 จริงเพื่อให้คุณอาจต้องการ ที่จะนับได้ว่ามีขนาดใหญ่กว่า 747 00:35:00,410 --> 00:35:05,640 ยาว long-- โง่ named-- ยังเป็นแปดไบต์หรือ 64 บิต 748 00:35:05,640 --> 00:35:10,260 และนี่คือสองเท่า int, และจะเป็นค่าจำนวนเต็มยาว 749 00:35:10,260 --> 00:35:15,655 >> fact-- สนุกถ้า int สี่ไบต์ นานแค่ไหนที่เป็นเวลานานใน C มัก? 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 ยังสี่ไบต์ แต่ นานแปดไบต์ 752 00:35:21,560 --> 00:35:23,050 และนี่คือเหตุผลทางประวัติศาสตร์ 753 00:35:23,050 --> 00:35:26,450 >> แต่ Takeaway ขณะนี้ เป็นเพียงข้อมูลที่มี 754 00:35:26,450 --> 00:35:29,625 ที่จะเป็นตัวแทนใน computer-- ที่ อุปกรณ์ทางกายภาพที่มีกระแสไฟฟ้า 755 00:35:29,625 --> 00:35:32,190 ก็มักจะขับรถ ศูนย์เหล่านั้นและ ones-- 756 00:35:32,190 --> 00:35:34,320 ที่มีจำนวน จำกัด ของความแม่นยำ 757 00:35:34,320 --> 00:35:35,620 ดังนั้นสิ่งที่เป็นปัญหาแล้ว? 758 00:35:35,620 --> 00:35:37,480 >> ดีมีปัญหา ของล้นจำนวนเต็ม 759 00:35:37,480 --> 00:35:39,780 ไม่เพียง แต่ใน C แต่ใน คอมพิวเตอร์โดยทั่วไป 760 00:35:39,780 --> 00:35:42,590 ยกตัวอย่างเช่นว่านี้ เป็นไบต์มูลค่า bit-- 761 00:35:42,590 --> 00:35:45,120 ดังนั้นถ้าเป็นแปด bit-- ทั้งหมด ซึ่งเป็นหมายเลขหนึ่ง 762 00:35:45,120 --> 00:35:47,300 จำนวนนี่คืออะไร แทนถ้าเราสมมติ 763 00:35:47,300 --> 00:35:50,730 มันเป็นค่าบวกทั้งหมดในไบนารี? 764 00:35:50,730 --> 00:35:54,410 >> 255, และมันก็ไม่ 256 เพราะ ศูนย์เป็นจำนวนมากที่สุด 765 00:35:54,410 --> 00:35:56,760 ดังนั้น 255 เป็นสูงสุด หนึ่ง แต่ปัญหา 766 00:35:56,760 --> 00:36:00,330 สมมุติว่าผมต้องการที่จะ เพิ่มตัวแปรนี้ว่า 767 00:36:00,330 --> 00:36:04,030 คือการใช้แปดบิตรวม ถ้าผมต้องการที่จะเพิ่มขึ้นนั้น 768 00:36:04,030 --> 00:36:07,160 >> ดีเร็วที่สุดเท่าที่ฉันจะเพิ่ม หนึ่งทั้งหมดของคนเหล่านี้ 769 00:36:07,160 --> 00:36:10,500 คุณอาจจะสามารถจินตนาการ visually-- เพียง เช่นการดำเนินการอย่างใดอย่างหนึ่งโดยใช้ decimals-- 770 00:36:10,500 --> 00:36:12,300 บางสิ่งบางอย่างที่เกิดขึ้นจะไหลไปทางซ้าย 771 00:36:12,300 --> 00:36:15,590 และแน่นอนถ้าฉันเพิ่มหมายเลข หนึ่งในการนี​​้สิ่งที่เกิดขึ้นในไบนารี 772 00:36:15,590 --> 00:36:17,670 คือมันล้นกลับไปที่ศูนย์ 773 00:36:17,670 --> 00:36:21,730 >> ดังนั้นหากคุณเพียง use-- ไม่ int, แต่ byte เดียวที่จะนับเลข 774 00:36:21,730 --> 00:36:27,170 ในโปรแกรมโดย default-- เร็วที่สุดเท่าที่ คุณได้รับ 250, 251, 252, 253, 254, 775 00:36:27,170 --> 00:36:32,710 255-- 0 มาหลังจาก 255, ซึ่งอาจไม่ใช่สิ่งที่ 776 00:36:32,710 --> 00:36:34,790 ผู้ใช้จะคาดหวังว่า 777 00:36:34,790 --> 00:36:39,620 >> ตอนนี้ในขณะเดียวกันในโลกลอยจุด คุณยังมีปัญหาที่คล้ายกัน 778 00:36:39,620 --> 00:36:42,670 ไม่มากที่มี number-- ที่ใหญ่ที่สุด ถึงแม้ว่ามันจะยังคงเป็นปัญหา 779 00:36:42,670 --> 00:36:45,360 แต่ด้วยจำนวนของความแม่นยำ ที่คุณสามารถเป็นตัวแทนของ 780 00:36:45,360 --> 00:36:49,490 ดังนั้นลองมาดูที่ตัวอย่างนี้ ที่นี่ก็มาจากวันนี้ code-- แหล่งที่มา 781 00:36:49,490 --> 00:36:52,070 ลอย 0.c 782 00:36:52,070 --> 00:36:54,280 >> และสังเกตเห็นมันสุด โปรแกรมใช้งานง่ายที่ 783 00:36:54,280 --> 00:36:56,580 เห็นได้ชัดว่าควรจะพิมพ์ออกมาสิ่งที่มีค่า? 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 สิ่งที่คุณเดิมพันนี้จะพิมพ์ แม้ว่าจะมีบิตของไวยากรณ์ใหม่ 786 00:37:04,110 --> 00:37:05,540 ที่นี่? 787 00:37:05,540 --> 00:37:06,700 เพื่อหวังว่า 0.1 788 00:37:06,700 --> 00:37:10,000 เพื่อให้เทียบเท่ากับหนึ่งในสิบ เพราะฉันทำ 1 หารด้วย 10 789 00:37:10,000 --> 00:37:12,430 ฉันเก็บคำตอบ ในตัวแปรที่เรียกว่าฉ 790 00:37:12,430 --> 00:37:15,850 ตัวแปรที่เป็นประเภทลอยซึ่ง เป็นคำที่ฉันเพิ่งเสนออยู่ 791 00:37:15,850 --> 00:37:18,910 >> เราไม่เคยเห็นแบบนี้มาก่อน แต่ นี้เป็นชนิดของวิธีที่ประณีตใน printf 792 00:37:18,910 --> 00:37:22,110 เพื่อระบุตัวเลขจำนวนที่คุณ ต้องการที่จะเห็นหลังจุดทศนิยม 793 00:37:22,110 --> 00:37:25,020 ดังนั้นสัญกรณ์นี้ก็หมายความว่า ที่นี่เป็นตัวยึด 794 00:37:25,020 --> 00:37:27,900 มันสำหรับจุดลอย คุณค่าและโอ้โดยวิธีการที่ 795 00:37:27,900 --> 00:37:31,389 แสดงมันมีจุดทศนิยมด้วย จำนวนหนึ่งหลังจุดทศนิยม 796 00:37:31,389 --> 00:37:33,180 เพื่อให้เป็นจำนวน ของตัวเลขที่มีนัยสำคัญ 797 00:37:33,180 --> 00:37:34,650 จึงจะพูดที่คุณอาจต้องการ 798 00:37:34,650 --> 00:37:40,450 >> เพื่อให้ฉันไปข้างหน้าและทำ ทำให้ลอย-0, ./float-0, 799 00:37:40,450 --> 00:37:46,660 และเห็นได้ชัด 1 หารด้วย 10 เป็น 0.0 800 00:37:46,660 --> 00:37:47,760 ตอนนี้ทำไมนี้คืออะไร 801 00:37:47,760 --> 00:37:51,380 >> ดีอีกครั้งคอมพิวเตอร์คือการ ฉันอย่างแท้จริงและผมได้เขียน 1 802 00:37:51,380 --> 00:37:56,680 และฉันเขียน 10 และใช้การคาดเดาสิ่งที่ เป็นชนิดข้อมูลที่สันนิษฐานสำหรับทั้งสอง 803 00:37:56,680 --> 00:37:58,440 ค่า? 804 00:37:58,440 --> 00:38:00,970 int มันเป็นในทางเทคนิค บางสิ่งบางอย่างที่แตกต่างกันเพียงเล็กน้อย 805 00:38:00,970 --> 00:38:04,150 มันมักจะนาน แต่มันก็เป็น ในที่สุดค่าหนึ่ง 806 00:38:04,150 --> 00:38:06,030 ไม่ใช่ค่าจุดลอย 807 00:38:06,030 --> 00:38:09,456 >> ซึ่งก็คือการบอกว่าถ้านี้ เป็น int และนี่คือ int, 808 00:38:09,456 --> 00:38:11,830 ปัญหาคือว่าคอมพิวเตอร์ ไม่ได้มีความสามารถใน 809 00:38:11,830 --> 00:38:13,680 ที่จะได้เก็บจุดทศนิยมว่า 810 00:38:13,680 --> 00:38:16,430 ดังนั้นเมื่อคุณทำ 1 หาร 10 โดยใช้จำนวนเต็ม 811 00:38:16,430 --> 00:38:20,950 ทั้งเศษและ ส่วนคำตอบที่ควรจะเป็น 0.1 812 00:38:20,950 --> 00:38:24,930 แต่ computer-- เพราะ เหล่านี้จะ integers-- 813 00:38:24,930 --> 00:38:27,430 ไม่ทราบว่าจะทำอย่างไรกับ 0.1 814 00:38:27,430 --> 00:38:30,010 >> ดังนั้นสิ่งที่มันชัดเจนทำอะไร 815 00:38:30,010 --> 00:38:33,120 มันเป็นเพียงแค่การขว้างปามันออกไป และสิ่งที่ฉันเห็นในที่สุด 816 00:38:33,120 --> 00:38:38,830 เป็น 0.0 เท่านั้นเพราะผมยืนยันว่า printf แสดงให้ฉันจุดทศนิยมหนึ่ง 817 00:38:38,830 --> 00:38:41,740 แต่ปัญหาก็คือว่าถ้าคุณ แบ่งจำนวนเต็มโดยจำนวนเต็ม 818 00:38:41,740 --> 00:38:44,347 คุณจะ get-- ตามคำนิยาม ของ C-- จำนวนเต็ม 819 00:38:44,347 --> 00:38:46,680 และก็จะไม่ทำ สิ่งที่ดีและสะดวกสบาย 820 00:38:46,680 --> 00:38:49,040 เหมือนรอบมันขึ้นไป ที่ใกล้เคียงที่สุดอย่างใดอย่างหนึ่งขึ้นหรือลง 821 00:38:49,040 --> 00:38:51,860 มันจะตัดทอน ทุกอย่างหลังจากทศนิยม 822 00:38:51,860 --> 00:38:54,030 >> ดังนั้นเพียงแค่สัญชาตญาณ สิ่งที่อาจจะแก้ไขได้หรือไม่ 823 00:38:54,030 --> 00:38:55,351 สิ่งที่แก้ไขที่ง่ายที่สุดที่นี่? 824 00:38:55,351 --> 00:38:55,850 ใช่? 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 ว่า 827 00:39:01,100 --> 00:39:04,200 ทำไมเราไม่เพียงแค่รักษาเหล่านี้เป็น ลอยค่าจุดได้อย่างมีประสิทธิภาพ 828 00:39:04,200 --> 00:39:05,860 ทำให้พวกเขากลายลอยหรือคู่ผสม 829 00:39:05,860 --> 00:39:10,500 และตอนนี้ถ้าผมจะทำให้ลอย-0, หรือถ้าผมรวบรวมลอย-1, 830 00:39:10,500 --> 00:39:12,570 ซึ่งเป็นเหมือนกับ สิ่งที่ถูกนำเสนอเพียงแค่ 831 00:39:12,570 --> 00:39:16,400 และตอนนี้ฉันไม่ลอย-0, ตอนนี้ฉันได้รับ 0.1 ของฉัน 832 00:39:16,400 --> 00:39:17,234 >> ขณะนี้เป็นที่น่าตื่นตาตื่นใจ 833 00:39:17,234 --> 00:39:19,441 แต่ตอนนี้ผมกำลังจะไปทำ บางสิ่งบางอย่างที่แตกต่างกันเพียงเล็กน้อย 834 00:39:19,441 --> 00:39:22,280 ฉันอยากจะเห็นสิ่งที่เป็นจริง ที่เกิดขึ้นภายใต้กระโปรงหน้ารถ 835 00:39:22,280 --> 00:39:26,050 และฉันจะพิมพ์นี้ ออกไป 28 ตำแหน่งทศนิยม 836 00:39:26,050 --> 00:39:29,730 ผมอยากจะเห็นจริงๆ 0.1000-- infinite-- 837 00:39:29,730 --> 00:39:32,710 [ไม่ได้ยิน] 27 ศูนย์หลังจากนั้น 0.1 838 00:39:32,710 --> 00:39:34,740 >> ดีขอดูว่าเป็น สิ่งที่ฉันได้รับแน่นอน 839 00:39:34,740 --> 00:39:39,430 ทำให้ลอย-0 ไฟล์เดียวกัน 840 00:39:39,430 --> 00:39:41,150 ./floats-0 841 00:39:41,150 --> 00:39:44,380 ลองซูมในคำตอบที่น่าทึ่ง 842 00:39:44,380 --> 00:39:49,980 ทั้งหมดเวลานี้คุณได้รับความคิด 1 หารด้วย 10 คือ 10% หรือ 0.1 843 00:39:49,980 --> 00:39:50,810 มันไม่ใช่ 844 00:39:50,810 --> 00:39:53,210 อย่างน้อยเท่าที่ ของเครื่องคอมพิวเตอร์ที่เกี่ยวข้อง 845 00:39:53,210 --> 00:39:57,060 >> ตอนนี้ why-- ตกลงที่สมบูรณ์ โกหก 1 หารด้วย 10 เป็น 0.1 846 00:39:57,060 --> 00:39:59,710 แต่ why-- ที่ไม่ได้ Takeaway วันนี้ 847 00:39:59,710 --> 00:40:04,010 ดังนั้นทำไมไม่ใช้คอมพิวเตอร์คิดว่า ซึ่งแตกต่างจากพวกเราทุกคนในห้อง 848 00:40:04,010 --> 00:40:06,870 ที่ 1 หารด้วย 10 จริงว่าค่าบ้า? 849 00:40:06,870 --> 00:40:10,620 สิ่งที่คอมพิวเตอร์ทำเห็นได้ชัดหรือไม่ 850 00:40:10,620 --> 00:40:12,490 มีอะไรที่? 851 00:40:12,490 --> 00:40:13,785 >> มันไม่ได้ล้นต่อ se 852 00:40:13,785 --> 00:40:15,910 มากเกินปกติจะเป็นเมื่อ คุณห่อรอบค่า 853 00:40:15,910 --> 00:40:18,970 มันเป็นเรื่องของความไม่แน่ชัดนี้ มูลค่าจุดลอย 854 00:40:18,970 --> 00:40:22,220 ที่คุณมี 32 เพียง หรืออาจจะได้ 64 บิต 855 00:40:22,220 --> 00:40:25,230 แต่ถ้ามีที่สิ้นสุด จำนวน numbers-- จริง 856 00:40:25,230 --> 00:40:27,940 ตัวเลขที่มีจุดทศนิยม และหมายเลข thereafter-- แน่นอน 857 00:40:27,940 --> 00:40:29,380 คุณไม่สามารถเป็นตัวแทนทั้งหมดของพวกเขา 858 00:40:29,380 --> 00:40:32,870 เพื่อให้คอมพิวเตอร์ได้ให้ เราจับคู่ที่ใกล้เคียงที่สุด 859 00:40:32,870 --> 00:40:37,090 ค่าที่จะสามารถเป็นตัวแทนของการใช้ที่ บิตหลายค่าที่จริงผมต้องการ 860 00:40:37,090 --> 00:40:38,690 ซึ่งเป็น 0.1 861 00:40:38,690 --> 00:40:40,685 >> แต่ถ้าคุณ เริ่มต้นทำคณิตศาสตร์หรือคุณ 862 00:40:40,685 --> 00:40:44,360 เริ่มต้นที่เกี่ยวข้องกับประเภทนี้ลอย ค่าจุดใน programs-- สำคัญ 863 00:40:44,360 --> 00:40:46,770 ซอฟแวร์ทางการเงิน อะไร software-- ทหาร 864 00:40:46,770 --> 00:40:49,090 ที่รับรู้เป็น อาจจะเป็นสิ่งที่สำคัญสวย 865 00:40:49,090 --> 00:40:51,520 และคุณเริ่มต้นการเพิ่ม ตัวเลขเช่นนี้และเริ่มต้น 866 00:40:51,520 --> 00:40:54,050 การใช้ซอฟต์แวร์ที่ ปัจจัยการผลิตที่มีขนาดใหญ่จริงๆ 867 00:40:54,050 --> 00:40:56,890 หรือสำหรับจำนวนมากของเวลาหรือจำนวนมาก วันหรือหลายปีที่ผ่านมา 868 00:40:56,890 --> 00:41:01,060 ความผิดพลาดเล็ก ๆ น้อย ๆ เหล่านี้เล็ก ๆ ก็สามารถเพิ่มขึ้นเมื่อเวลาผ่านไป 869 00:41:01,060 --> 00:41:04,252 >> ตอนนี้เป็นกันถ้าคุณเคย เห็นซูเปอร์แมน 3 หรือพื้นที่สำนักงาน 870 00:41:04,252 --> 00:41:05,960 และคุณอาจจะจำ วิธีที่พวกขโมย 871 00:41:05,960 --> 00:41:08,668 เงินเป็นจำนวนมากจากเครื่องคอมพิวเตอร์ของพวกเขา โดยใช้ค่าจุดลอย 872 00:41:08,668 --> 00:41:11,290 และการเพิ่มขึ้นเล็กน้อย เหลือหวังว่าภาพยนตร์ที่ 873 00:41:11,290 --> 00:41:12,390 ตอนนี้ทำให้รู้สึกมากขึ้น 874 00:41:12,390 --> 00:41:14,930 นี่คือสิ่งที่พวกเขา ยิ่งทำให้ในภาพยนตร์ที่ 875 00:41:14,930 --> 00:41:16,710 ความจริงที่ว่าส่วนใหญ่ บริษัท จะไม่มอง 876 00:41:16,710 --> 00:41:18,600 หลังจากที่จำนวนหนึ่ง ของทศนิยม 877 00:41:18,600 --> 00:41:20,009 แต่ผู้ที่มีเศษของเซนต์ 878 00:41:20,009 --> 00:41:22,550 เพื่อให้คุณเริ่มต้นการเพิ่มพวกเขาขึ้น คุณเริ่มต้นที่จะทำให้เงินเป็นจำนวนมาก 879 00:41:22,550 --> 00:41:23,424 ในบัญชีธนาคารของคุณ 880 00:41:23,424 --> 00:41:25,160 เพื่อให้เป็นพื้นที่สำนักงานอธิบาย 881 00:41:25,160 --> 00:41:28,220 >> แต่น่าเสียดายที่ตอนนี้เกิน พื้นที่สำนักงานมี 882 00:41:28,220 --> 00:41:31,794 มีบางหนักใจถูกต้องตามกฎหมาย และผลกระทบอย่างมีนัยสำคัญ 883 00:41:31,794 --> 00:41:33,710 เหล่านี้ชนิดของ ตัดสินใจในการออกแบบพื้นฐาน 884 00:41:33,710 --> 00:41:35,990 และแน่นอนหนึ่งในเหตุผลที่ เราใช้ C ในหลักสูตร 885 00:41:35,990 --> 00:41:39,640 คือเพื่อให้คุณจริงๆมีพื้นดินนี้ ความเข้าใจของวิธีการทำงานของคอมพิวเตอร์ 886 00:41:39,640 --> 00:41:42,440 วิธีการที่ซอฟต์แวร์การทำงานและไม่ได้ เอาอะไรให้ได้รับ 887 00:41:42,440 --> 00:41:45,820 >> และจริง ๆ แล้วน่าเสียดายที่แม้จะมี ความเข้าใจพื้นฐาน 888 00:41:45,820 --> 00:41:47,370 มนุษย์เราทำผิดพลาด 889 00:41:47,370 --> 00:41:51,310 และสิ่งที่ฉันคิดว่าฉันต้องการแบ่งปันเป็น วิดีโอนี้แปดนาทีที่นำมาที่นี่ 890 00:41:51,310 --> 00:41:56,980 จากเหตุการณ์ปัจจุบันมหัศจรรย์ซึ่งเป็น การแสดงการศึกษาเกี่ยวกับวิธีการทำงานของสิ่งที่ 891 00:41:56,980 --> 00:42:00,370 ที่วาดภาพสองภาพ เมื่อใช้ที่ไม่เหมาะสม 892 00:42:00,370 --> 00:42:02,540 และความเข้าใจใน ลอยค่าจุด 893 00:42:02,540 --> 00:42:05,610 นำไปสู่​​การบางอย่างมีนัยสำคัญ ผลที่โชคร้าย 894 00:42:05,610 --> 00:42:06,363 ลองมาดู 895 00:42:06,363 --> 00:42:07,029 [วิดีโอเล่นภาพ] 896 00:42:07,029 --> 00:42:11,290 ที่เราตอนนี้กลับไปที่ "วิศวกรรม ภัย "ในปัจจุบันมหัศจรรย์ 897 00:42:11,290 --> 00:42:12,940 คอมพิวเตอร์ 898 00:42:12,940 --> 00:42:15,580 ที่เราได้มาทั้งหมดที่จะยอมรับ ปัญหาที่มักจะทำลายที่ 899 00:42:15,580 --> 00:42:20,960 ได้มีข้อบกพร่อง them-- ไวรัสและ glitches-- ซอฟต์แวร์สำหรับราคาขนาดเล็ก 900 00:42:20,960 --> 00:42:23,100 ที่จะจ่ายเงินเพื่อความสะดวก 901 00:42:23,100 --> 00:42:27,770 แต่ในเทคโนโลยีชั้นสูงและความเร็วสูง การใช้งานทางทหารและโครงการอวกาศ, 902 00:42:27,770 --> 00:42:32,780 ปัญหาที่เล็กที่สุดสามารถ จะขยายไปสู่​​ความหายนะ 903 00:42:32,780 --> 00:42:38,880 >> ที่ 4 มิถุนายน 1996 นักวิทยาศาสตร์เตรียม ที่จะเปิดตัวกำลังใจอาริอาน 5 จรวด 904 00:42:38,880 --> 00:42:41,190 มันได้รับการดำเนินการทางวิทยาศาสตร์ ดาวเทียมได้รับการออกแบบ 905 00:42:41,190 --> 00:42:44,570 ที่จะสร้างได้อย่างแม่นยำว่า ปฏิสัมพันธ์สนามแม่เหล็กของโลก 906 00:42:44,570 --> 00:42:47,380 กับลมสุริยะ 907 00:42:47,380 --> 00:42:50,580 จรวดถูกสร้างขึ้นสำหรับ องค์การอวกาศยุโรป 908 00:42:50,580 --> 00:42:54,400 และยกออกจากสิ่งอำนวยความสะดวก บนชายฝั่งของฝรั่งเศสรนช์เกียนา 909 00:42:54,400 --> 00:42:57,520 >> -At ประมาณ 37 วินาทีใน เที่ยวบินที่พวกเขาเป็นครั้งแรก 910 00:42:57,520 --> 00:42:59,070 สังเกตเห็นบางสิ่งบางอย่างที่เกิดขึ้นไม่ถูกต้อง 911 00:42:59,070 --> 00:43:02,240 หัวฉีดที่ได้รับการหมุน ในทางที่พวกเขาจริงๆไม่ควร 912 00:43:02,240 --> 00:43:06,550 ประมาณ 40 วินาทีในการบิน เห็นได้ชัดว่ารถที่อยู่ในปัญหา 913 00:43:06,550 --> 00:43:08,820 และเมื่อพวกเขาทำ การตัดสินใจที่จะทำลายมัน 914 00:43:08,820 --> 00:43:12,370 เจ้าหน้าที่ความปลอดภัยในช่วงที่มี ความกล้าอย่างมากกดปุ่ม 915 00:43:12,370 --> 00:43:18,030 และพัดขึ้นจรวดก่อนที่มันจะทำได้ กลายเป็นอันตรายต่อความปลอดภัยของประชาชน 916 00:43:18,030 --> 00:43:21,010 >> RDLCustoms นี้เป็นครั้งแรก การเดินทางของอาริอาน 5 917 00:43:21,010 --> 00:43:23,920 และการทำลายล้างของมันเอา วางเพราะข้อบกพร่อง 918 00:43:23,920 --> 00:43:25,932 ที่ฝังอยู่ในซอฟแวร์จรวด 919 00:43:25,932 --> 00:43:27,640 ปัญหา -The ที่ อาริอานก็คือการที่มี 920 00:43:27,640 --> 00:43:30,500 เป็นจำนวนที่จำเป็นต้องใช้ 64 บิตที่จะแสดง 921 00:43:30,500 --> 00:43:33,560 และพวกเขาต้องการที่จะแปลง มันเป็นจำนวน 16 บิต 922 00:43:33,560 --> 00:43:36,820 พวกเขาสันนิษฐานว่าจำนวน ก็ไม่เคยจะมีขนาดใหญ่มาก 923 00:43:36,820 --> 00:43:40,940 ว่าส่วนใหญ่ของผู้ที่อยู่ในตัวเลข จำนวน 64 บิตเป็นศูนย์ 924 00:43:40,940 --> 00:43:42,450 พวกเขามีความผิด 925 00:43:42,450 --> 00:43:45,000 >> การไร้ความสามารถของหนึ่ง -The โปรแกรมซอฟแวร์ที่จะยอมรับ 926 00:43:45,000 --> 00:43:49,460 ชนิดของตัวเลขที่สร้างขึ้นโดย อีกคนหนึ่งคือที่รากของความล้มเหลว 927 00:43:49,460 --> 00:43:54,260 การพัฒนาซอฟต์แวร์ได้กลายเป็น ส่วนค่าใช้จ่ายสูงมากของเทคโนโลยีใหม่ 928 00:43:54,260 --> 00:43:57,060 อาริอาน 4 จรวดได้ ประสบความสำเร็จมาก 929 00:43:57,060 --> 00:44:01,600 มากของซอฟแวร์ที่สร้างขึ้นสำหรับ มันก็ยังใช้ในอาริอาน 5 930 00:44:01,600 --> 00:44:04,790 >> -The ปัญหาพื้นฐาน ก็คือการที่อาริอาน 5 931 00:44:04,790 --> 00:44:11,200 ถูก faster-- เร่งได้เร็วขึ้นและ ซอฟแวร์ไม่ได้คิดว่า 932 00:44:11,200 --> 00:44:14,910 >> การทำลายของจรวด -The เป็นภัยพิบัติทางการเงินมาก 933 00:44:14,910 --> 00:44:18,630 ทั้งหมดเนื่องจากข้อผิดพลาดของซอฟต์แวร์นาที 934 00:44:18,630 --> 00:44:21,160 แต่นี่ไม่ใช่ครั้งแรกที่ เวลาปัญหาการแปลงข้อมูล 935 00:44:21,160 --> 00:44:24,770 ได้รบกวนเทคโนโลยีจรวดที่ทันสมัย 936 00:44:24,770 --> 00:44:28,020 >> 1991 อินกับการเริ่มต้น ของสงครามอ่าวครั้งแรก 937 00:44:28,020 --> 00:44:30,540 ขีปนาวุธต่อต้านการก่อการร้าย ประสบการณ์ชนิดที่คล้ายกัน 938 00:44:30,540 --> 00:44:32,465 ของปัญหาการแปลงจำนวน 939 00:44:32,465 --> 00:44:36,760 และเป็นผลกับคน 28 28 soldiers-- อเมริกันถูกฆ่าตาย 940 00:44:36,760 --> 00:44:39,010 และประมาณหนึ่งร้อยคนอื่นได้รับบาดเจ็บ 941 00:44:39,010 --> 00:44:42,830 เมื่อรักชาติซึ่งควร เพื่อป้องกัน Scuds เข้ามา 942 00:44:42,830 --> 00:44:45,780 ล้มเหลวในการยิงขีปนาวุธ 943 00:44:45,780 --> 00:44:51,610 >> เมื่อมีอิรักบุกคูเวตและอเมริกา เปิดตัวพายุทะเลทรายในช่วงต้นปี 1991 944 00:44:51,610 --> 00:44:55,720 รักชาติแบตเตอรี่ขีปนาวุธถูกนำไปใช้ เพื่อปกป้องซาอุดีอาระเบียและอิสราเอล 945 00:44:55,720 --> 00:44:59,180 จากอิรักแล่นขีปนาวุธโจมตี 946 00:44:59,180 --> 00:45:03,080 รักชาติเป็นสหรัฐอเมริกากลางช่วง พื้นผิวสู่อากาศระบบ 947 00:45:03,080 --> 00:45:06,530 ผลิตโดย บริษัท เรย์ ธ 948 00:45:06,530 --> 00:45:09,500 >> ขนาดของรักชาติ -The ดัก itself-- 949 00:45:09,500 --> 00:45:14,705 มันเป็นเรื่องของประมาณ 20 ฟุตยาว และมันน้ำหนักประมาณ£ 2,000 950 00:45:14,705 --> 00:45:19,090 และจะดำเนินการหัวรบประมาณ, ฉันคิดว่ามันเป็นประมาณ£ 150 951 00:45:19,090 --> 00:45:23,880 และหัวรบที่ตัวเองมี ระเบิดสูงซึ่ง 952 00:45:23,880 --> 00:45:26,700 มีชิ้นส่วนที่อยู่รอบตัวเขา 953 00:45:26,700 --> 00:45:31,630 ดังนั้นปลอกของหัวรบเป็น ออกแบบมาเพื่อทำหน้าที่เหมือนสามสิบ 954 00:45:31,630 --> 00:45:34,040 >> ขีปนาวุธ -The จะดำเนิน สี่ต่อภาชนะ 955 00:45:34,040 --> 00:45:37,170 และจะถูกลำเลียงโดยรถพ่วงกึ่ง 956 00:45:37,170 --> 00:45:44,880 >> -The ระบบต่อต้านการก่อการร้ายต่อต้านขีปนาวุธ กลับไปอย่างน้อย 20 ปีขณะนี้ 957 00:45:44,880 --> 00:45:48,380 มันถูกออกแบบมา ขณะที่การป้องกันขีปนาวุธอากาศ 958 00:45:48,380 --> 00:45:50,810 ที่จะยิงลงเครื่องบินศัตรู 959 00:45:50,810 --> 00:45:54,410 ในสงครามอ่าวครั้งแรก เมื่อสงครามที่มาใน 960 00:45:54,410 --> 00:45:59,650 กองทัพต้องการที่จะใช้มันเพื่อ ยิงลง Scuds ไม่เครื่องบิน 961 00:45:59,650 --> 00:46:03,580 กองทัพอากาศอิรักเป็น ไม่มากของปัญหา 962 00:46:03,580 --> 00:46:06,590 แต่กองทัพเป็นห่วงเกี่ยวกับ Scuds 963 00:46:06,590 --> 00:46:10,120 ดังนั้นพวกเขาจึงพยายามที่จะ อัพเกรดรักชาติ 964 00:46:10,120 --> 00:46:12,740 >> -Intercepting ศัตรู วิถีการเดินทางที่มัค 5 965 00:46:12,740 --> 00:46:15,670 กำลังจะถูกท้าทายพอ 966 00:46:15,670 --> 00:46:18,440 แต่เมื่อรักชาติ ได้วิ่งเข้าไปในบริการ 967 00:46:18,440 --> 00:46:22,580 กองทัพไม่ได้ตระหนักถึง การปรับเปลี่ยนที่อิรัก 968 00:46:22,580 --> 00:46:25,880 ทำ scuds ของพวกเขาเกือบ เป็นไปไม่ได้มัน 969 00:46:25,880 --> 00:46:30,690 >> อะไรที่เกิดขึ้นเป็น Scuds ที่ มาในที่ไม่แน่นอน 970 00:46:30,690 --> 00:46:32,000 พวกเขาสั่นคลอน 971 00:46:32,000 --> 00:46:37,210 เหตุผลนี้เป็น Iraqis-- เพื่อให้ได้รับ 600 กิโลเมตรออก 972 00:46:37,210 --> 00:46:41,680 ในช่วงที่ missile-- 300 กิโลเมตร เอาน้ำหนักออกจากจรวดหน้า 973 00:46:41,680 --> 00:46:43,340 และทำให้หัวรบที่มีน้ำหนักเบา 974 00:46:43,340 --> 00:46:48,490 ดังนั้นตอนนี้รักชาติพยายามที่จะมา ที่สกั๊ดและส่วนใหญ่ของ time-- 975 00:46:48,490 --> 00:46:52,880 ส่วนใหญ่ที่ครอบงำของ time-- มันก็จะบินโดยสกั๊ด 976 00:46:52,880 --> 00:46:57,120 >> ครั้งหนึ่งผู้ประกอบการระบบต่อต้านการก่อการร้าย ตระหนักถึงความรักชาติพลาดเป้าของมัน 977 00:46:57,120 --> 00:47:01,630 พวกเขาระเบิดจรวดต่อต้านการก่อการร้ายของ เพื่อหลีกเลี่ยงการบาดเจ็บล้มตายไปได้ถ้ามัน 978 00:47:01,630 --> 00:47:04,440 ได้รับอนุญาตให้ลงไปกองกับพื้นดิน 979 00:47:04,440 --> 00:47:08,700 >> นั่นคือสิ่งที่คนส่วนใหญ่เห็น เป็นลูกไฟขนาดใหญ่ในท้องฟ้า 980 00:47:08,700 --> 00:47:14,180 และเข้าใจผิดเป็น ดักของขีปนาวุธสกั๊ด 981 00:47:14,180 --> 00:47:18,020 >> ถึงแม้ว่าในท้องฟ้ากลางคืนรักชาติ ดูเหมือนจะประสบความสำเร็จในการทำลาย 982 00:47:18,020 --> 00:47:23,280 Scuds ที่ Dhahran อาจมี ความผิดพลาดที่เกี่ยวกับประสิทธิภาพการทำงานของมัน 983 00:47:23,280 --> 00:47:27,930 มีระบบเรดาร์ต่อต้านการก่อการร้ายของ ติดตามการสูญเสียของสกั๊ดที่เข้ามา 984 00:47:27,930 --> 00:47:30,260 และไม่เคยเปิดตัวเนื่องจาก ข้อบกพร่องซอฟแวร์ 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> มันเป็นอิสราเอลที่ค้นพบครั้งแรก ที่ไม่เป็นระบบใน 987 00:47:38,880 --> 00:47:41,130 มากขึ้นความแตกต่างเวลาที่กลายเป็น 988 00:47:41,130 --> 00:47:44,770 เนื่องจากนาฬิกาฝังตัว ในคอมพิวเตอร์ระบบ 989 00:47:44,770 --> 00:47:48,190 >> -About สองสัปดาห์ก่อน โศกนาฏกรรมใน Dhahran, 990 00:47:48,190 --> 00:47:50,720 อิสราเอลรายงานว่า กระทรวงกลาโหม 991 00:47:50,720 --> 00:47:52,410 ว่าระบบที่ได้รับการสูญเสียเวลา 992 00:47:52,410 --> 00:47:54,410 หลังจากนั้นประมาณแปดชั่วโมง ของการทำงานที่พวกเขาสังเกตเห็น 993 00:47:54,410 --> 00:47:57,690 ว่าระบบของการเป็น เห็นได้ชัดที่ถูกต้องน้อยกว่า 994 00:47:57,690 --> 00:48:01,850 กระทรวงกลาโหมตอบสนองด้วย บอกทั้งหมดของแบตเตอรี่รักชาติ 995 00:48:01,850 --> 00:48:04,800 ที่จะได้ออกจากระบบ มาเป็นเวลานาน 996 00:48:04,800 --> 00:48:06,980 พวกเขาไม่เคยกล่าวว่าสิ่งที่เป็นเวลานานเป็น 997 00:48:06,980 --> 00:48:09,140 8 ชั่วโมง, 10 ชั่วโมง, พันชั่วโมง 998 00:48:09,140 --> 00:48:11,300 ไม่มีใครรู้ว่า 999 00:48:11,300 --> 00:48:13,320 >> -The แบตเตอรี่รักชาติ ประจำการอยู่ที่ค่ายทหาร 1000 00:48:13,320 --> 00:48:18,310 ที่ Dhahran และสมบูรณ์ภายใน นาฬิกาที่ได้รับในการมานานกว่า 100 ชั่วโมง 1001 00:48:18,310 --> 00:48:21,520 ในคืนวันที่ 25 กุมภาพันธ์ 1002 00:48:21,520 --> 00:48:25,792 >> แต่ก็ถึงเวลาที่จะติดตามความถูกต้อง ประมาณหนึ่งในสิบของที่สอง 1003 00:48:25,792 --> 00:48:27,950 ตอนนี้หนึ่งในสิบของที่สอง เป็นตัวเลขที่น่าสนใจ 1004 00:48:27,950 --> 00:48:31,850 เพราะมันไม่สามารถแสดง ในไบนารีว่าซึ่ง 1005 00:48:31,850 --> 00:48:36,500 หมายความว่ามันไม่สามารถจะแสดงว่า ในคอมพิวเตอร์ดิจิตอลที่ทันสมัย 1006 00:48:36,500 --> 00:48:41,070 มันยากที่จะเชื่อ แต่ ใช้นี้เป็นตัวอย่าง 1007 00:48:41,070 --> 00:48:43,420 >> ลองมาจำนวนหนึ่งในสาม 1008 00:48:43,420 --> 00:48:47,330 หนึ่งในสามไม่สามารถ แสดงในทศนิยมว่า 1009 00:48:47,330 --> 00:48:52,060 หนึ่งในสามเป็น 0.333 ไปในอินฟินิตี้ 1010 00:48:52,060 --> 00:48:56,420 มีวิธีการทำที่มีไม่ได้ ความถูกต้องแน่นอนในทศนิยม 1011 00:48:56,420 --> 00:48:59,530 ที่ว่าชนิดของปัญหา ที่เกิดขึ้นในความรักชาติ 1012 00:48:59,530 --> 00:49:04,040 อีกต่อไประบบการวิ่ง เลวร้ายกลายเป็นข้อผิดพลาดเวลา 1013 00:49:04,040 --> 00:49:08,840 >> หลังจาก 100 ชั่วโมงของการทำงาน ข้อผิดพลาดในเวลาที่เป็นเพียงประมาณหนึ่งในสาม 1014 00:49:08,840 --> 00:49:10,440 เป็นครั้งที่สอง 1015 00:49:10,440 --> 00:49:14,150 แต่ในแง่ของการกำหนดเป้​​าหมาย วิถีการเดินทางที่มัค 5 1016 00:49:14,150 --> 00:49:18,560 มันมีผลในการติดตาม ข้อผิดพลาดกว่า 600 เมตร 1017 00:49:18,560 --> 00:49:21,870 มันจะเป็นความผิดพลาดร้ายแรง สำหรับทหารที่ Dhahran 1018 00:49:21,870 --> 00:49:28,455 >> อะไรที่เกิดขึ้นมีการเปิดตัวสกั๊ดเป็น ตรวจพบโดยดาวเทียมเตือนภัย 1019 00:49:28,455 --> 00:49:32,710 และพวกเขารู้ว่าสกั๊ดมา ในทิศทางทั่วไปของพวกเขา 1020 00:49:32,710 --> 00:49:35,150 พวกเขาไม่ทราบว่ามันกำลังจะมา 1021 00:49:35,150 --> 00:49:38,210 ตอนนี้มันเป็นได้ถึงเรดาร์ ส่วนประกอบของระบบต่อต้านการก่อการร้าย 1022 00:49:38,210 --> 00:49:43,150 ปกป้อง Dhahran การค้นหาและเก็บ ติดตามขีปนาวุธของศัตรูที่เข้ามา 1023 00:49:43,150 --> 00:49:44,561 >> เรดาร์ -The เป็นสมาร์ทมาก 1024 00:49:44,561 --> 00:49:46,560 มันจริงจะติดตาม ตำแหน่งของสกั๊ด 1025 00:49:46,560 --> 00:49:48,930 แล้วทำนายที่ มันอาจจะเป็น 1026 00:49:48,930 --> 00:49:51,380 ในครั้งต่อไป เรดาร์ส่งพัลส์ออก 1027 00:49:51,380 --> 00:49:53,040 ที่ถูกเรียกว่าประตูช่วง 1028 00:49:53,040 --> 00:49:57,620 >> -Then เคยต่อต้านการก่อการร้าย ตัดสินใจที่มีเวลามากพอ 1029 00:49:57,620 --> 00:50:02,400 ส่งผ่านไปยังกลับไปตรวจสอบต่อไป สถานที่สำหรับวัตถุที่ตรวจพบนี้ 1030 00:50:02,400 --> 00:50:03,550 มันจะไปกลับ 1031 00:50:03,550 --> 00:50:07,820 ดังนั้นเมื่อมันเดินกลับไปที่ที่ไม่ถูกต้อง สถานที่มันก็เห็นวัตถุไม่มี 1032 00:50:07,820 --> 00:50:10,360 และจะตัดสินใจว่ามีวัตถุใด 1033 00:50:10,360 --> 00:50:13,630 ว่ามีการตรวจจับที่ผิดพลาด และจะลดลงตาม 1034 00:50:13,630 --> 00:50:16,970 >> กรุเข้ามาแล่นหายไป จากหน้าจอเรดาร์ 1035 00:50:16,970 --> 00:50:20,200 และวินาทีต่อมามัน กระแทกเข้าค่ายทหาร 1036 00:50:20,200 --> 00:50:22,570 สกั๊ดถูกฆ่าตาย 28 1037 00:50:22,570 --> 00:50:26,110 มันเป็นคนสุดท้ายที่ยิง ในช่วงสงครามอ่าวครั้งแรก 1038 00:50:26,110 --> 00:50:31,920 อนาถ, ซอฟแวร์ที่มีการปรับปรุง มาถึงตอนเช้าในวันรุ่งขึ้น 1039 00:50:31,920 --> 00:50:34,870 ข้อบกพร่องซอฟต์แวร์ที่มี รับคงปิด 1040 00:50:34,870 --> 00:50:39,150 บทหนึ่งในปัญหา ประวัติศาสตร์ของขีปนาวุธต่อต้านการก่อการร้าย 1041 00:50:39,150 --> 00:50:40,030 >> [จบการเล่นวิดีโอ] 1042 00:50:40,030 --> 00:50:41,488 >> เดวิดเจลัน: นั่นมันสำหรับ CS50 1043 00:50:41,488 --> 00:50:42,820 เราจะเห็นคุณในวันพุธที่ 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [เล่นเพลง] 1046 00:50:50,370 --> 00:54:23,446