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