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