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