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