[เล่นเพลง] เดวิดเจลัน: ทั้งหมดขวา นี้เป็น CS50 และนี่ เป็นจุดสิ้นสุดของสัปดาห์ที่ 2 ดังนั้นวันนี้เรากำลังจะ เพื่อดำเนินการต่อดูของเรา วิธีการที่เราเป็นตัวแทนของสิ่งที่ ภายใต้ hood-- ย้ายออก จากตัวเลขเช่นจำนวนเต็ม และลอยค่าจุด และมุ่งเน้นในสายและ โปรแกรมที่น่าสนใจมากที่สุด แต่เรายังจะดูที่ คู่ของ problems-- โดเมนเฉพาะ คนแรกที่จะ จะเกี่ยวข้องกับการเข้ารหัสลับ ศิลปะของ scrambling ข้อมูล ในการที่คุณเห็นข้างต้นที่นี่ เป็นภาพของเด็กกำพร้าวิทยุของแอนนี่ แหวนถอดรหัสลับจากปีกลาย นี้เป็นจริงรูปแบบดั้งเดิมมาก และรูปแบบของ cryptopgraphy ที่เหมาะสำหรับเด็ก โดยแหวนวงนี้มีสอง disks-- หนึ่งภายนอกและภายใน และโดยการหมุนหนึ่งที่คุณสามารถ เป็นหลักแถวตัวอักษรเช่น ถึง Z กับตัวอักษรอื่น ๆ เช่น B ถึง A. ในคำอื่น ๆ คุณอย่างแท้จริงสามารถหมุนตัวอักษร จึงขึ้นมากับการทำแผนที่จาก จดหมายถึงตัวอักษรเพื่อที่ว่าถ้าคุณ อยากจะส่งข้อความลับ กับใครบางคนที่ชอบแอนนี่คุณสามารถเขียน ลงข้อความของคุณและจากนั้นหมุน ตัวอักษรโดยถ้าคุณหมายถึง จะบอกว่า "" คุณแทนบอกว่า "B" คุณหมายถึงการบอกว่า "B" คุณแทนบอกว่า "C" - หรือสิ่งเล็ก ๆ น้อย ๆ ที่ฉลาดมากขึ้น กว่า that-- แล้วในที่สุด ตราบใดที่แอนนี่มีตัวถอดรหัสนี้ แหวนที่เธอสามารถถอดรหัสข้อความ ตอนนี้คุณอาจจำในความเป็นจริงว่านี้ ถูกนำมาใช้ในภาพยนตร์ที่มีชื่อเสียงมากที่ เล่น nauseum โฆษณาในช่วง เทศกาลคริสต์มาส ลองมาดูที่นี่ ฟี่ PARKER: "ไม่ว่าจะเป็น ที่รู้จักกันทั้งหมดในการสรุป ที่ราล์ฟพาร์คเกอร์ได้รับการแต่งตั้งขอ สมาชิกของกำพร้าแอนนี่ความลับ วงกลมและมีสิทธิที่จะตอบ เกียรติและผลประโยชน์ที่เกิดขึ้นดังกล่าวข้างต้น ". ฟี่ PARKER (แก): ลงนามกำพร้าแอนนี่ ราชโองการปิแอร์อังเดร! ด้วยหมึก เกียรติประวัติและผลประโยชน์ แล้วที่อายุสิบเก้า [เล่นเพลง] [วิทยุ CHATTER] ฟี่ PARKER: มา ให้ของได้รับกับมัน ฉันไม่จำเป็นต้องทุกแจ๊สที่ เกี่ยวกับการลักลอบและโจรสลัด ผู้ประกาศข่าววิทยุฟังในวันพรุ่งนี้ คืนสุดท้ายสำหรับการผจญภัย ของเรือดำโจรสลัด ตอนนี้ก็ถึงเวลาสำหรับแอนนี่ ข้อความที่เป็นความลับสำหรับสมาชิกคุณ ของวงกลมลับ โปรดจำไว้ว่าเด็กสมาชิกเท่านั้น ของแอนนี่ความลับวงกลม สามารถถอดรหัสข้อความลับของแอนนี่ โปรดจำไว้ว่าแอนนี่ขึ้นอยู่กับคุณ ตั้งขาของคุณไปยัง B-2 นี่คือ message-- 12, 11, 2-- ฟี่ PARKER (แก): ผม อยู่ในการประชุมลับครั้งแรกของฉัน วิทยุประกาศข่าว: --25, 14, 11, 18, 16-- ฟี่ PARKER (แก): โอ้ ปิแอร์อยู่ในคืนนี้เสียงดี ผมบอกได้เลยว่าคืนนี้ ข้อความที่มีความสำคัญจริงๆ วิทยุประกาศข่าว: --3 25 นั่นเป็นข้อความจากแอนนี่ตัวเอง โปรดจำไว้ว่าอย่าบอกใคร [หอบ] ฟี่ PARKER (แก): เก้าสิบวินาทีต่อมาฉัน อยู่ในห้องเพียงคนเดียวใน บ้านที่เด็กเก้า สามารถนั่งอยู่ในความเป็นส่วนตัวและการถอดรหัส Ah "บี" [หัวเราะเบา ๆ ] ฟี่ PARKER (แก): ผมไปต่อไป "อี" คำแรกคือ "เป็น". ใช่! มันก็ง่ายขึ้นมาตอนนี้ "U. " [หัวเราะเบา ๆ ] RANDY PARKER: อ๊ะมาในฟี่ ฉันต้องไป! PARKER ฟี่: ฉันจะเป็นขวาลงแม่ Gee หวือ "ต" "โอ" "ให้แน่ใจว่า ที่จะ "." ให้แน่ใจว่าได้ "อะไร? สิ่งที่เป็นกำพร้าแอนนี่ พยายามที่จะพูด? "ให้แน่ใจว่าได้" อะไร? แม่: ฟี่, แรนดี้ได้มีที่จะไป คุณจะกรุณ​​าออกมา? ฟี่ PARKER: สงวนแม่! ฉันจะออกขวา! ฟี่ PARKER (แก): ฉันได้รับใกล้ชิดในขณะนี้ ความตึงเครียดเป็นที่น่ากลัว อะไรคือสิ่งที่มันได้หรือไม่ ชะตากรรมของโลก อาจแขวนอยู่ในสมดุล แม่: ฟี่, แรนดี้ได้ที่จะไป! PARKER ฟี่: ฉันจะเป็นขวา ออกสำหรับร้องไห้ออกมาดัง ๆ ! ฟี่ PARKER (บรรยาย): เกือบมี! มือของฉันบิน! ใจของฉันเป็นกับดักเหล็ก ทุกรูขุมขนสั่นสะเทือน มันก็เกือบจะชัดเจน! ใช่! ใช่! ใช่! ใช่! ฟี่ PARKER: "ให้แน่ใจว่า จะดื่มโอวัลติคุณ. " โอวัลติ? crummy พาณิชย? [เล่นเพลง] ฟี่ PARKER: บุตรของผู้หญิงเลว [หัวเราะ] เดวิดเจลัน: ดังนั้นที่แล้วเป็น เหลือบในสิ่งที่เข้ารหัส สามารถให้เจ้านี่ ดื่มน้ำจากปีกลาย ดังนั้นการประกาศอย่างรวดเร็ว หากคุณมีอิสระนี้ วันศุกร์เวลา 13:15 และจะ ชอบที่จะเข้าร่วมกับเราสำหรับ CS50 อาหารกลางวันหัวไปยัง URL ที่นี่ มาก่อนแรกทำหน้าที่ได้ตามปกติ แต่เมื่อเวลาผ่านไปเราจะให้แน่ใจว่า คนส่วนใหญ่ที่ต้องการมีส่วนร่วม อาจกำหนดเวลาฉลาด ดังนั้นสตริง เรามี Zamyla-- ที่ คุณได้พบตอนนี้ส่วนใหญ่มีแนวโน้มที่ ในชุดที่มีปัญหา 1-- ชื่อสะกดจึง และสมมติว่าคุณพิมพ์ชื่อของเธอ เป็นโปรแกรมคอมพิวเตอร์ที่เป็น ใช้สิ่งที่ต้องการ getString เพื่อดึง การกดแป้นพิมพ์เหล่านั้นว่า เราจะไปเกี่ยวกับการเป็นตัวแทนของ สตริงคำวรรค, หรือตัวอักษรหลายตัวเช่นเหล่านี้ที่นี่? เราพูดคุยกันครั้งสุดท้ายที่เกี่ยวกับ จำนวนเต็มและปัญหา ที่เกิดขึ้นกับล้นจำนวนเต็ม และลอยค่าจุด และปัญหาที่ เกิดขึ้นภายในความแม่นยำ กับสตริงเราอย่างน้อย มีความยืดหยุ่นมากขึ้นอีกนิด เพราะ strings-- เพียง ใน world-- จริง อาจจะมีความยาวโดยพลสวย สวยสั้นยาวสวย แต่ถึงอย่างนั้นเรากำลังจะไป พบว่าเครื่องคอมพิวเตอร์ที่สามารถบางครั้ง วิ่งออกมาจากหน่วยความจำและไม่ได้ เก็บสตริงใหญ่พอ แต่ตอนนี้ขอเริ่มต้นที่จะเห็นภาพ สตริงเป็นสิ่งที่อยู่ในกล่องเหล่านี้ ที่นี่ ดังนั้นหกกล่องดังกล่าวซึ่งแต่ละ แสดงให้เห็นถึงตัวละครหรือ "ถ่าน". ดังนั้นจำได้ว่า "ถ่าน" - ค-H--R-- เป็น หนึ่งในตัวชนิดข้อมูลในซี และสิ่งที่ดีคือที่คุณสามารถใช้ ที่เรียงลำดับของการเป็นบล็อกอาคาร ชิ้นส่วนปริศนาถ้าคุณจะในรูปแบบ ประเภทขนาดใหญ่ของข้อมูลที่เราจะยังคง จะเรียก "สตริง". ตอนนี้สิ่งที่เป็นประโยชน์เกี่ยวกับการคิด เกี่ยวกับสิ่งที่ต้องการสตริงในลักษณะนี้หรือไม่? ดีก็ปรากฎว่าเราสามารถทำได้ จริง ๆ แล้วการใช้ประโยชน์จากโครงสร้างนี้ ที่จริงการเข้าถึงอักขระแต่ละตัว ในทางที่ตรงไปตรงสวย ฉันจะไปข้างหน้าและสร้าง ไฟล์ที่เรียกว่า "stringzero.c" แต่คุณสามารถเรียกมันว่าสิ่งที่คุณต้องการ และในเว็บไซต์ของหลักสูตรเป็น อยู่แล้วเช่นในล่วงหน้านี้ เพื่อให้คุณไม่จำเป็นต้อง พิมพ์ทุกอย่างออก และฉันจะไปข้างหน้า และเป็นครั้งแรกทำเป็นโมฆะหลัก int และภายในไม่กี่วัน เราจะเริ่มต้นที่จะหยอกล้อกัน สิ่งที่เป็นโมฆะอยู่ที่นี่ทำไมมัน int ต่อหลักและอื่น ๆ แต่ตอนนี้ขอต่อ เพื่อคัดลอกวางที่ ฉันจะประกาศสายที่เรียกว่าส และฉันจะกลับมาจาก GetString สิ่งที่ประเภทของผู้ใช้ใน นี้เป็นไปได้ง่าย โปรแกรมคำแนะนำไม่มี ฉันแค่จะไปสุ่มสี่สุ่มห้า คาดหวังว่าผู้ใช้รู้ สิ่งที่ต้องทำเพื่อให้มันง่าย และตอนนี้ฉันจะต้องห่วง และภายในของห่วงของฉันฉัน จะมี int ฉันได้รับเป็นศูนย์ และฉันคืออีกเพียงแค่การประชุมที่ ตัวแปรดัชนีสำหรับการนับ แต่ผมอาจจะเรียกสิ่งนี้สิ่งที่ฉันต้องการ ฉันจะฉันน้อย than-- ดี ชื่อ Zamyla เป็นหกตัวอักษรยาว ดังนั้นฉันจะยาก รหัสที่มีตอนนี้ แล้ว i ++ และตอนนี้ภายในของหยิกเหล่านี้ วงเล็บที่ฉันจะทำ printf, และฉันต้องการที่จะพิมพ์หนึ่ง ตัวอักษรในเวลา ดังนั้นฉันจะใช้% คสำหรับ บางทีอาจจะเป็นครั้งแรก แล้วฉันต้องการพิมพ์แต่ละ ตัวอักษรในบรรทัดของตัวเอง ดังนั้นฉันจะใส่ เครื่องหมายเล็ก ๆ น้อย ๆ n มี ปิดอ้าง และตอนนี้ฉันต้องการที่จะทำอะไรบางอย่างที่นี่ ผมต้องการที่จะพิมพ์ออกมา จดหมายที่ระบุในสตริง วินาที, ที่ฉันทำซ้ำ จากศูนย์ได้ถึงหก ในคำอื่น ๆ ที่ฉันต้องการจะ พิมพ์ตัวอักษร i'th ของร้าน ตอนนี้วิธีที่ฉันสามารถทำเช่นนี้? ดีมากเช่นกล่องใน การแสดงนี้ที่นี่ ชนิดของก่อให้เกิดความคิดของมวย ตัวอักษรในคุณในทำนองเดียวกันสามารถทำได้ syntactically ใน C โดยเพียงแค่ระบุ, ผมต้องการที่จะพิมพ์ออกมาของตัวละครของ i'th การใช้วงเล็บ บนแป้นพิมพ์ของคอมพิวเตอร์ของคุณ ว่าในแป้นพิมพ์ของสหรัฐอเมริกามี โดยทั่วไปดังกล่าวข้างต้นที่สำคัญการกลับมาของคุณ ดังนั้นนี่คือไม่ถูกต้อง แต่ในขณะที่คุณอาจจะสังเกตเห็น แต่ฉันจะชนิดของ สุ่มสี่สุ่มห้าเคลื่อนไปข้างหน้านี่ และฉันจะทำอะไรให้สตริง 0 แต่ก่อนที่จะทำเช่นนี้ให้ดูว่าเรา ไม่สามารถคาดหวังความผิดพลาดบางอย่างร่วมกัน นี้จะเป็นที่จะรวบรวม? ไม่ฉันหายไปทั้งกลุ่มของสิ่งที่ ห้องสมุดที่ผมได้ยิน เพื่อที่ส่วนหัวของไฟล์ ฉันอาจต้องการที่จะเพิ่มที่นี่? ใช่ ผู้ชม: คุณต้อง มาตรฐาน I / O [ไม่ได้ยิน] เดวิดเจลัน: ยอดเยี่ยม ดังนั้นผมจึงจำเป็นต้องมีมาตรฐาน I / O สำหรับสิ่งที่ วัตถุประสงค์ฉันต้องการมาตรฐาน I / O? สำหรับ printf ดังนั้นรวม stdio.h และคุณยังเสนอว่าฉันรวม ห้องสมุด CS50 ด้วยเหตุผลอะไร ที่จะมีสตริง ดังนั้นเราจะเห็นสิ่งที่ ห้องสมุด CS50 ที่จะทำ ที่จะสร้างความคิดของสตริงนี้ แต่ตอนนี้คุณก็สามารถคิด มันเป็นชนิดของข้อมูลที่เกิดขึ้นจริง เพื่อให้ดูเหมือนว่าจะเล็ก ๆ น้อย ๆ ทำความสะอาดขึ้น และตอนนี้ฉันจะไปข้างหน้า และแน่นอนจะทำให้สตริง 0 รวบรวม เพื่อให้เป็นสิ่งที่ดี ดังนั้น ./string0 ให้ฉันขยายเพื่อให้เราสามารถ ดูรายละเอียดเพิ่มเติมอย่างใกล้ชิดสิ่งที่เกิดขึ้น ใส่ Z--M-Y-L-ใส่ และเราได้พิมพ์ออกมาชื่อ Zamyla ของ เพื่อให้เป็นสิ่งที่ดีงาม ดังนั้นตอนนี้ขอไปข้างหน้าและ รันโปรแกรมนี้อีกครั้ง และพิมพ์ชื่อเต็ม Daven ของ น่าประหลาดใจมาก ใส่ อืม เรายังไม่ได้พิมพ์ Daven ของ ชื่อแรกเต็มรูปแบบได้อย่างถูกต้อง ตอนนี้ควรจะเป็นที่เห็นได้ชัดใน หวนกลับเพราะสิ่งที่ การเรียงลำดับของการตัดสินใจการออกแบบโง่? ใช่ฉันรหัสยาก หกภายในของฉันสำหรับวง ตอนนี้ฉันไม่ว่าเพียงเพราะ ผมรู้ว่าชื่อของ Zamyla จะเป็นหกตัวอักษร แต่แน่นอนนี้ไม่ได้ แก้ปัญหาทั่วไป ดังนั้นมันจะเปิดออกที่เราสามารถแบบไดนามิก คิดออกความยาวของสตริง โดยการเรียกฟังก์ชันที่เรียกว่า strlen อีกครั้งโดยเจตนา ชื่อชัดถ้อยชัดคำเพียง เพื่อให้สะดวกในการพิมพ์ แต่ที่ตรงกันกับ ได้รับความยาวของสตริง ฉันจะกลับไปเข้ากับขั้วของฉัน หน้าต่างและกลับมาใช้คอมไพเลอร์ แต่มันตะโกนมาที่ผม โดยปริยายประกาศฟังก์ชัน strlen กับประเภทที่ไม่ได้ลงชื่อ int const-- ฉันหายไป อย่างสมบูรณ์ โดยเฉพาะอย่างยิ่งเป็นของคุณ ดวงตาเริ่มมันมากกว่า กับข้อความผิดพลาดเช่นนี้โฟกัส ตรงไปตรงมาเกี่ยวกับคำไม่กี่คำแรก เรารู้ว่าปัญหาอยู่ใน สาย 8 ตามที่ระบุไว้ที่นี่ และมันอยู่ในสตริง 0.c โดยปริยายประกาศ strlen ฟังก์ชัน เพื่อที่ว่าโดยทั่วไปจะ เป็นรูปแบบของข้อความผิดพลาด โดยปริยายประกาศบางสิ่งบางอย่าง ดังนั้นในระยะสั้นสิ่งที่มีฉันดูเหมือนจะ ได้ทำเกี่ยวกับสายที่ 8 ที่นี่ สิ่งที่อาจจะแก้ปัญหาจะยิ่ง ถ้าคุณไม่เคยใช้ strlen ตัวคุณเอง ผู้ชม: ส่วนหนึ่งของห้องสมุดแตกต่างกันอย่างไร เดวิดเจลัน: ส่วนที่ ของห้องสมุดที่แตกต่างกัน ดังนั้นจึงมีการประกาศเพื่อที่จะพูด มันถูกกล่าวถึงในแฟ้มบาง อื่น ๆ กว่า stdio.h และ CS50.h. ตอนนี้ที่มันถูกกำหนดไว้? ที่จะซื่อสัตย์คุณอาจมีเพียงแค่ รู้ว่านี้ปิดด้านบนของหัวของคุณ หรือคุณ Google นี้และพบว่า หรือรู้นี้ผมได้เปิดขึ้นมาใน CS50 เครื่องใช้โปรแกรมเทอร์มิซึ่ง เป็นเพียงขนาดใหญ่รุ่นแบบเต็มหน้าจอของ สิ่งที่อยู่ในด้านล่างของหน้าต่าง Gedit ของ และปรากฎว่ามี คำสั่งเดียวสั้นที่เรียกว่า คนสำหรับคู่มือที่ถ้าคุณพิมพ์ใน ชื่อของฟังก์ชั่นและกด Enter, คุณจะได้รับกลับไปอย่างเป็นธรรม เอกสารที่เป็นความลับ มันเป็นข้อความเพียงว่าโดยทั่วไป มีลักษณะบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ เช่นนี้ มันเป็นเรื่องเล็ก ๆ น้อย ๆ อย่างท่วมท้น ได้อย่างรวดเร็วก่อน แต่ตรงไปตรงมาฉันจะไป ให้ตาของฉันมันมากกว่า และมุ่งเน้นในส่วนของ ฉันดูแลเกี่ยวกับในขณะนั้น ซึ่งเป็นนี้ ซึ่งมีลักษณะการก่อสร้างเช่น สิ่งที่ฉันคุ้นเคยกับ อันที่จริงหน้าคนดังนั้น จะพูดจะบอกคุณ ในสิ่งที่ส่วนหัวของไฟล์ฟังก์ชั่น เช่น strlen ถูกกำหนดไว้ ดังนั้นฉันจะกลับไปตอนนี้เพื่อ Gedit และฉันจะไปข้างหน้าและ เพิ่มที่นี่ #include และบันทึกไฟล์ ฉันจะล้างหน้าจอด้วย ควบคุมแอถ้าคุณได้รับการสงสัย และฉันจะ re-run ให้ string.0, รวบรวมเวลานี้ ./string.0 Zamyla ที่ดูเหมือนจะทำงานให้ฉันไป ข้างหน้าและวิ่งกับดาเวนพอร์ต ใส่ และที่เกินไปลำบากในการทำงาน เพื่อให้เราสามารถทำได้ดีกว่าเล็กน้อยกว่านี้ แต่เราสามารถเริ่มต้นกับสิ่งที่เป็นระเบียบเรียบร้อย ขึ้นเพียงเล็กน้อย และฉันจะไปจริง แนะนำสิ่งอื่น ๆ ที่ตอนนี้ ฉันจะไปข้างหน้าและ บันทึกนี้ในแฟ้มที่แตกต่างกัน และฉันจะเรียก string1.c ไฟล์นี้เพียงแค่ เพื่อให้สอดคล้องกับรหัส คุณจะสามารถที่จะหาออนไลน์ และให้มุ่งเน้นใน ว่ารหัสเดียวกัน แต่กลับกลายเป็นว่าฉันได้ รับชนิดของการ เพื่อรับความจริงที่ว่าแล็ปท็อปของฉัน และในทางกลับเครื่อง CS50 มีจำนวนมากของหน่วยความจำมาก แรมจำนวนมากของไบต์ของพื้นที่ ในการที่ฉันสามารถเก็บสตริง แต่ความเป็นจริงถ้าผมพิมพ์ยาว ที่พอเพียงและเพียงพอที่การกดแป้นพิมพ์ ฉันสามารถในรูปแบบทฤษฎี ในตัวละครมากขึ้น กว่าคอมพิวเตอร์ของฉัน ร่างกายมีหน่วยความจำสำหรับ และนี่คือปัญหา เหมือน int เท่านั้นที่สามารถ นับสูงดังนั้นในทางทฤษฎี คุณสามารถอัดตัวละครมากมาย เป็น RAM ของคอมพิวเตอร์ของคุณหรือสุ่ม เข้าถึงหน่วยความจำ ดังนั้นฉันได้ดีกว่าคาดการณ์ ปัญหานี้แม้ แม้ว่ามันอาจจะหายาก กรณีมุมจึงจะพูด ไม่ได้เกิดขึ้นที่บ่อยอาจเกิดขึ้น และถ้ามันเกิดขึ้นและฉันทำไม่ได้ คาดการณ์และโปรแกรมสำหรับมัน โปรแกรมของฉันสามารถทำอะไรที่รู้สิ่งที่ ตรึงแขวน, รีบูต, สิ่งที่ บางสิ่งบางอย่างที่คาดว่าอาจจะเกิดขึ้น ดังนั้นสิ่งที่ผมจะทำ ตอนนี้ต่อจากนี้ไปจริงๆ ก่อนที่ฉันเคยสุ่มสี่สุ่มห้า ใช้ตัวแปรเช่นของที่ ได้รับการกำหนดค่าตอบแทนของ บางฟังก์ชั่นอื่น ๆ เช่น GetString, ฉันจะให้แน่ใจว่า ว่าค่าที่เป็นที่ถูกต้อง ดังนั้นฉันรู้จากการอ่าน เอกสาร CS50 สำหรับ GetString, ซึ่งในที่สุดเราจะชี้ให้คุณไปที่ GetString ที่ส่งกลับสัญลักษณ์พิเศษ เรียกว่าเป็นโมฆะ, N-U-L-L ในทุก หมวก, ถ้าอะไรผิดพลาด ดังนั้นตามปกติก็จะส่งกลับสตริง แต่อย่างอื่นถ้ามันกลับ N-U-L-L-- ในที่สุดเราก็จะเห็นสิ่งที่จริง means-- ว่าเพียงแค่วิธีการ สิ่งที่เกิดขึ้นไม่ดี ตอนนี้มีความหมายเหมือนในเกา ฉันจะตรวจสอบสภาพของที่นี่ใน C ถ้าของไม่เป็นโมฆะไม่เท่ากัน ดังนั้นหากคุณไม่เคยเห็นแบบนี้มาก่อน นี้ก็หมายความว่าไม่เท่ากับ ดังนั้นจึงเป็นเรื่องตรงข้ามของ เท่ากับเท่าที่จำได้ จะแตกต่างจากที่เดียว เท่ากับซึ​​่งเป็นที่ได้รับมอบหมาย ดังนั้นถ้าเอไม่เท่ากับ โมฆะเท่านั้นแล้วทำ ฉันต้องการที่จะดำเนินการเส้นเหล่านี้ของรหัส ดังนั้นในคำอื่น ๆ ก่อนที่จะดำน้ำในสุ่มสี่สุ่มห้า และเริ่มต้น iterating กว่า, และรักษามัน ราวกับว่ามันเป็นลำดับของ ตัวละครที่ผมจะไปตรวจสอบครั้งแรก รอสักครู่เป็น s ไม่แน่นอน เท่ากับราคาพิเศษนี้เป็นโมฆะ? เพราะถ้ามันเป็นสิ่งที่ไม่ดีสามารถเกิดขึ้นได้ และสำหรับตอนนี้ถือว่าสิ่งที่ไม่ดี สิ่งที่เกิดขึ้นหมายถึงการเกิดปัญหาโปรแกรมของคุณ และคุณไม่สามารถกู้คืนจำเป็นต้อง ดังนั้นตรงไปตรงมามันก็ดูไม่สวยงามเท่า มันเป็นชนิดของความสับสนในขณะนี้ได้อย่างรวดเร็วที่ แต่นี้จะกลายเป็นมากขึ้น คุ้นเคยก่อนที่จะยาว แต่ผมจะนำเสนอ ขณะนี้การปรับปรุงอีกคนหนึ่ง นั่นคือการปรับปรุงความถูกต้อง โปรแกรมของฉันคือตอนที่ถูกต้องมากขึ้นเพราะ ในกรณีที่หายากที่หน่วยความจำไม่เพียงพอ อยู่แล้วผมจะจัดการกับมัน และฉันก็จะไม่ทำอะไรเลย อย่างน้อยผมก็จะไม่ผิดพลาด แต่ขอทำรุ่นสุดท้ายที่นี่ และไฟล์ที่เรียกว่า string2.c ฉันกำลังจะไปวางที่ รหัสเดียวกันเพียงสักครู่ และฉันจะเน้นนี้ สาย, 11, ที่นี่เพียงสักครู่ ตอนนี้ความจริงก็คือสมาร์ทคอมไพเลอร์ เช่นเสียงดังกราวสามารถแก้ไขปัญหานี้สำหรับเรา เบื้องหลัง โดยที่ไม่เคยรู้ของเรา แต่ขอให้คิดเกี่ยวกับเรื่องนี้ เป็นพื้นฐานการออกแบบที่มีปัญหา บรรทัดของรหัสนี้เป็นที่แน่นอน พูด, เริ่มต้นตัวแปรบางอย่างที่ฉันเป็น 0 ที่ตรงไปตรงสวย และสิ่งที่ครั้งนี้ คำสั่งที่นี่ฉัน ++ ทำ? ที่เราเคยเห็นมาก่อน แต่เรา ไม่ได้จริงๆพูดคุยเกี่ยวกับเรื่องนี้ ผู้ชม: Incrementing ฉัน เดวิดเจลัน: Incrementing ฉัน ดังนั้นในการทำซ้ำทุกผ่าน วงนี้ทุกรอบ คุณกำลัง incrementing ฉันโดยหนึ่ง จึงได้รับใหญ่และขนาดใหญ่และ ใหญ่จนยุติวง มันไม่ยุติ? ดีมีตรงกลางนี้ สภาพที่เราเคยใช้มาก่อน คุณเคยเห็นใน walkthroughs อยู่ในชุด P แต่สิ่งที่เป็นคำกล่าวที่ว่านี้คืออะไร ทำวงต่อไปนี้เพื่อให้ ตราบใดที่ฉันมีค่าน้อยกว่าอะไร ผู้ชม: ความยาวของสตริง เดวิดเจลัน: ความยาวของสตริง ดังนั้นมันแปลสวยเรียบร้อย เป็นภาษาอังกฤษในแง่ที่ว่า ตอนนี้ปัญหาคือว่าทุกครั้งที่ผม ย้ำผ่านวงนี้ในทางทฤษฎี ฉันถามคำถามนี้ i คือน้อยกว่าความยาวสตริงของหรือไม่ i คือน้อยกว่าความยาวสตริงของหรือไม่ ตอนนี้ผมเปลี่ยนในแต่ละซ้ำ? มันเป็น เพราะ ++ ดังนั้นแตฉันจะได้รับที่ใหญ่กว่าทุก แต่เป็นร้านเริ่มมีขนาดใหญ่หรือ ขนาดเล็กหรือการเปลี่ยนแปลงที่ทั้งหมดหรือไม่ ฉบับที่ ดังนั้นในแง่ของการออกแบบซึ่งเป็นหนึ่งในแกน ตามที่เราพยายามที่จะประเมินผลรหัส ในชั้นนี้รู้สึกชนิดของโง่ เหมือนคุณเป็นตัวอักษร ที่ซ้ำทุก ของวงนี้ขอให้ คำถามแช่งเดียวกันอีกครั้ง และอีกครั้งและอีกครั้งและตัวอักษร มันไม่เคยไปเปลี่ยน อย่างน้อยถ้าผมไม่ได้สัมผัสและ พยายามที่จะเปลี่ยนเนื้อหาของร้าน ดังนั้นฉันจะทำน้อยกว่านี้ และสิ่งที่ฉันจะทำไม่ได้ ประกาศเพียงหนึ่งฉันตัวแปร แต่ตัวแปรที่สองผมจะพล แต่อัตภาพเรียกว่า n กำหนด n เท่ากับ ระยะเวลาในสายเอ แล้วกว่าที่นี่ฉันจะไป ทำเพิ่มประสิทธิภาพของเล็ก ๆ น้อย ๆ ที่ฉลาดดังนั้น ที่จะพูดว่าในตอนท้ายของวัน ไม่มากที่ถูกต้องหรือไม่ถูกต้องน้อย กว่าก่อน แต่มันเป็นออกแบบที่ดีกว่า ในความเป็นจริงที่ฉันใช้ ใช้เวลาน้อยลงน้อยรอบการทำงานเพื่อให้ ที่จะพูดที่จะตอบเหมือนกัน คำถาม แต่เพียงครั้งเดียว คำถามใด ๆ เกี่ยวกับทั่วไปที่ หลักการของการปรับปรุง กล่าวว่าประสิทธิภาพของโปรแกรมหรือไม่ ใช่? ผู้ชม: ทำไมคุณถึง ใช้ [ไม่ได้ยิน] เดวิดเจลัน: คำถามที่ดี เราทำเช่นนั้นใส่ ++ ทำไมในตอนท้ายของ ฉันแทนจุดเริ่มต้นของฉันหรือไม่ ในกรณีนี้ก็มี ไม่มีผลกระทบต่อการทำงาน และโดยทั่วไปผมมักจะ ใช้ประกอบการ postfix เพื่อให้เป็นเรื่องเล็ก ๆ น้อย ๆ ที่ชัดเจนมากขึ้นเป็น เมื่อการดำเนินการที่เกิดขึ้น สำหรับผู้ที่ไม่คุ้นเคยมีอีก งบโดยที่คุณสามารถทำ ++ ฉัน เหล่านี้เป็นหน้าที่ เทียบเท่าในกรณีนี้ เพราะไม่มีอะไรอื่น รอบ incrementation ที่ แต่คุณสามารถมากับ กรณีและสายรหัส ที่ที่ทำให้แตกต่าง ดังนั้นโดยทั่วไปที่เราทำไม่ได้ ได้พูดคุยเกี่ยวกับเรื่องนี้ เพราะตรงไปตรงมาก็จะทำให้คุณ เซ็กซี่รหัสและการเรียงลำดับของเสื้อกันฝน, และตัวละครน้อยลง แต่ความเป็นจริงมันมากหนัก ผมคิดว่าแม้สำหรับผมที่จะมัดใจของฉัน รอบ ๆ มันบางครั้ง เพื่อการดำเนินงานของ ดังนั้นในฐานะที่เป็นกันถ้าคุณ จริงๆไม่ชอบนี้ แม้นี้เป็นชนิดของเซ็กซี่ + i = 1 มองคุณยังสามารถทำ ซึ่งเป็นรุ่นที่ไม่สวยงามเท่าของ ความคิดเดียวกันสำหรับ postfix incrementation ผมพูดแบบนี้และคุณ ควรจะทำให้ความสนุกของมัน แต่คุณจะมาเพื่อดูรหัสเป็น สิ่งที่สวยงามไม่นาน [หัวเราะ] เดวิดเจลัน: ขวา? ใช่ คำถามที่อยู่ตรงกลาง ผู้ชม: คุณจำเป็นต้องพูด int n? เดวิดเจลัน: คุณทำ ไม่จำเป็นต้องพูด int n ดังนั้นเพราะเรามีอยู่แล้วกล่าวว่า int, คุณไม่จำเป็นต้องที่จะพูดมันอีกครั้ง จับคือ n มี เป็นชนิดข้อมูลเดียวกันที่ฉัน เพื่อให้เป็นเพียงความสะดวกสบายที่นี่ ใช่ ผู้ชม: คุณสามารถไปกว่า พิมพ์ตัวอักษรของตัวฉันอีกครั้งหรือไม่ เดวิดเจลัน: แน่นอน ดังนั้น% ค, จำจากที่ผ่านมา เวลาเป็นเพียงตัวยึด มันหมายถึงการใส่ถ่านที่นี่ ทับขวา n แน่นอนเพียง หมายถึงการใส่เส้นแบ่งที่นี่ เพื่อให้เพียงใบตอนนี้ ชิ้นส่วนของไวยากรณ์ใหม่นี้ และนี่คือตัวอักษรบอกว่าคว้า สตริงที่เรียกว่าและไปรับของ ตัวอักษร i'th จึงจะพูด และฉันให้บอกตัวละคร i'th เพราะการย้ำของวงนี้ในแต่ละ มันเหมือนกับว่าเรากำลังพิมพ์ ออกครั้งแรกของวงเล็บ 0, เป็นโปรแกรมเมอร์อาจจะบอกว่า แล้ว s วงเล็บ 1 แล้ว s วงเล็บ 2 แล้ว 3 แล้ว 4 แต่แน่นอนว่ามันเป็นตัวแปร ดังนั้นฉันเพิ่งแสดงมันกับฉัน ที่สำคัญแม้ว่าจะตระหนัก โดยเฉพาะอย่างยิ่งถ้าคุณได้ไม่ได้ รับ acclimating โลกนี้ ของการเขียนโปรแกรมที่เราทุกคน ดูเหมือนจะนับจากศูนย์ต้อง เริ่มนับจากศูนย์ตอนนี้ เพราะสตริงตัวแรก Z ใน Zamyla สำหรับดีขึ้นหรือแย่ลง ไปอาศัยอยู่ที่บ้านเลขที่สถานที่ตั้งศูนย์ สิทธิทั้งหมดเพื่อให้ฉันนำ เรากลับมาที่นี่เพื่อ Zamyla และดูสิ่งที่เกิดขึ้นจริงๆ ที่อยู่ใต้ฝากระโปรง จึงมีความคิดของประเภทหล่อนี้ คุณอาจจะมีจริง เล่นกับเรื่องนี้อยู่แล้ว อาจจะให้แฮ็กเกอร์ ฉบับที่ P ตั้งหนึ่ง แต่ประเภทหล่อเพียงหมายถึง ความสามารถใน C และภาษาอื่น ๆ บาง การแปลงชนิดข้อมูลหนึ่งไปยังอีก ตอนนี้วิธีการที่เราอาจจะเห็นนี้ สวยตรงไปตรงมา? ดังนั้นการเรียกคืนเป็นจุดเริ่มต้น ของตัวอักษรภาษาอังกฤษ และบริบทที่เรียกคืนจาก เช่นสัปดาห์ที่ผ่านมาเป็น ASCII รหัสมาตรฐานของอเมริกา สำหรับการแลกเปลี่ยนข้อมูล ซึ่งเป็นเพียงทางยาวจริงๆ พูดว่าการทำแผนที่จากตัวอักษร กับตัวเลขและจากตัวเลขกับตัวอักษร ดังนั้นผ่านเอ็มที่นี่จุดจุด จุดเส้นขึ้นกับการเรียกคืน ตัวเลขทศนิยม 65 เมื่อขึ้น และเราไม่ได้พูดคุย เกี่ยวกับเรื่องนี้อย่างชัดเจน แต่แน่นอนมีที่คล้ายกัน หมายเลขสำหรับตัวอักษรตัวพิมพ์เล็ก และแน่นอนมี โลกตัดสินใจหลายปี มาแล้วที่เล็ก ๆ น้อย ๆ , ตัวพิมพ์เล็ก, เป็นไปได้ 97 และขเล็ก ๆ น้อย ๆ ที่เกิดขึ้น จะเป็น 98 และอื่น ๆ และที่สำคัญอื่น ๆ ใน แป้นพิมพ์ของคุณมี จะเป็นรูปแบบที่คล้ายกันของบิต หรือเท่ากันเป็นจำนวนทศนิยม ดังนั้นคำถามที่มือ นั้นเป็นวิธีการที่เราสามารถ จริงเห็นนี้ภายใต้กระโปรงหน้ารถหรือไม่ ดังนั้นฉันจะไปกว่าที่จะ Gedit อีกครั้ง และมากกว่าประเภท คนนี้ตั้งแต่เริ่มต้น ฉันจะไปข้างหน้าและ เพียงแค่เปิดขึ้นบางสิ่งบางอย่าง จากรหัสเรียกว่าศูนย์ ASCII ของวันนี้ และ ASCII ศูนย์ลักษณะเช่นนี้ จึงขอห่อจิตใจของเรารอบนี้ ดังนั้นครั้งแรกที่ฉันได้เห็น รหัสซึ่งเป็นสิ่งที่ดี เพราะมันเป็นตัวอักษร บอกฉันสิ่งที่คาดหวัง แสดงการทำแผนที่สำหรับตัวอักษรตัวพิมพ์ใหญ่ ตอนนี้ผมค่อนข้างไม่ทราบว่าสิ่งที่ฉัน หมายถึงว่าจึงขอสรุป ในภาษาอังกฤษอาจจะ ค่อนข้างเทคนิคภาษาอังกฤษ สิ่งที่ไม่ปรากฏเส้น 18 จะทำเพื่อเรา เพียงแค่เส้น 18 มันเป็นสิ่งที่ก่อให้เกิด? สิ่งที่มันจะเตะออกที่นี่? ผู้ชม: ห่วง เดวิดเจลัน: ห่วง และวิธีการที่หลายต่อหลายครั้งเป็น ที่จะย้ำ? ผู้ชม: [interposing VOICES] หกครั้ง เดวิดเจลัน: ไม่หกครั้ง ผู้ชม: 26 ครั้ง เดวิดเจลัน: 26 ครั้ง ใช่ขอโทษ ครั้งที่ 26 ทำไม? ดีก็แปลกเล็กน้อย แต่ ผมได้เริ่มต้นนับจาก 65 ซึ่งเป็นเรื่องแปลก แต่ไม่ผิด มันไม่ได้เลวร้ายต่อว่า และที่ฉันทำว่ามีเพียง เพราะเช่นนี้ ผมชนิดของที่คาดการณ์ไว้ ทุนที่ 65 ตอนนี้ไม่ได้หรูหราที่สุด วิธีการที่จะทำเช่นนี้กับชนิดของรหัสที่ยาก ค่าความลับที่ไม่มีใคร คาดว่าทรงจำตลอดไป แต่ตอนนี้สังเกตเห็นว่าฉัน การทำเช่นนี้ผ่าน 65 บวก 26 เพราะเห็นได้ชัดว่าผมไม่ได้ต้องการ ที่จะทำคณิตศาสตร์ในหัวของฉัน ดังนั้นฉันจะให้คอมไพเลอร์ทำมัน แต่แล้วในแต่ละวงแต่ละซ้ำ ของวงผม incrementing ฉัน ดังนั้นตอนนี้มีลักษณะที่เป็นความลับเล็ก ๆ น้อย ๆ แต่เราควรจะมีการสร้างพื้นฐาน บล็อกที่จะเข้าใจในเรื่องนี้ % c คือเพียงตัวยึดสำหรับถ่าน % i คือตัวยึดสำหรับ int และปรากฎว่าโดยการใช้นี้ ไวยากรณ์ใหม่สอดนี้เพื่อให้ ที่จะพูดเพื่อให้ชนิดของข้อมูล ในวงเล็บที่ ฉันสามารถบังคับให้คอมไพเลอร์ในการรักษา ฉันไม่เป็นจำนวนเต็ม แต่เป็นถ่าน จึงแสดงให้ฉันตัวอักษร เทียบเท่ากับตัวเลขที่ ตอนนี้ลงมาที่นี่รหัสนี้ เป็นเหมือนกันสวยมาก ฉันแค่อยากจะให้ ซุปเปอร์ความเป็นจริงอย่างชัดเจน ที่ฉันเริ่มต้นที่ 97, ซึ่งเป็นตัวพิมพ์เล็ก ที่ผ่าน 26 ตัวอักษรมากขึ้น และฉัน doing-- อีกครั้ง หล่อผมจึงจะพูด หรือประเภทหล่อผมจึงจะพูด จาก int ไปถ่าน ดังนั้นผลสุดท้ายเป็นไปได้ ตรงไปตรงมาข้อมูลที่เรารู้อยู่แล้วว่า ฉันจะทำให้ ASCII-0 dot-- ไม่ดอทค แจ้งให้ทราบล่วงหน้าคุณอาจจะทำที่ ความผิดพลาดที่ผมเพิ่งได้ตั้งใจ ทำให้ ASCII-0 ตอนนี้ผมกำลังจะไปทำ ./ascii-0 ฉันจะซูมเข้าและโชคร้าย ก็จะเลื่อนออกมานอกจอ แต่เราเห็นแผนภูมิทั้งหมดที่ แผนที่ 97 แผนที่ข 98, และถ้าเราเลื่อนขึ้นต่อไป แน่นอนแผนที่ 65 ดังนั้นนี้เป็นเพียงที่จะบอกว่า สิ่งที่เราได้รับพระธรรม มีความเท่าเทียมกันนี้เป็น ในความเป็นจริงกรณีที่ในความเป็นจริง ดังนั้นการปรับเปลี่ยนอย่างรวดเร็วนี้ ผมขอเปิด ASCII-1.c และสังเกตเห็นความฉลาดนี้การจัดเรียง จากการชี้แจงของ นี้เป็น ASCII-1.c และ แจ้งให้ทราบนี้สิ่งที่บ้า และจริงๆได้รับไปยังหัวใจ ของสิ่งที่คอมพิวเตอร์กำลังทำ แม้ว่ามนุษย์เราจะ ไม่นับในแง่ของ letters-- ผมไม่ได้เริ่มต้นคิด สิ่งที่ถูกต้องแล้วข และใช้ผู้ที่จะนับวัตถุทางกายภาพ แน่นอนคุณสามารถพูดได้ว่าผมต้องการที่จะ เริ่มต้นตัวแปรบางคนเรียก c-- แต่ฉันจะได้เรียกว่า anything-- นี้ คดังนั้นจะเริ่มต้นไปยังเมืองหลวง A. เพราะ ณ สิ้นวัน, คอมพิวเตอร์ ไม่สนใจสิ่งที่คุณกำลังจัดเก็บ มันเพียงใส่ใจวิธีที่คุณต้องการ ที่จะนำเสนอข้อมูลที่ วิธีที่คุณต้องการให้คอมพิวเตอร์ ตีความรูปแบบของบิตที่? ดังนั้นนี่คือสิ่งที่ฉันไม่ได้ โดยทั่วไปจะแนะนำให้ทำ มันจริงๆเพียงตัวอย่างให้กับ สื่อที่คุณสามารถอย่างแน่นอน เริ่มต้นจำนวนเต็มถ่าน เพราะภายใต้ เครื่องดูดควันจากถ่านแน่นอน เป็นเพียงตัวเลข 0-255 เพื่อให้คุณสามารถอย่างแน่นอน ใส่ไว้ในของ int และสิ่งนี้ แสดงให้เห็นคือการที่เรา สามารถแปลงจากที่หนึ่ง พิมพ์ไปยังอีกที่นี่ ในที่สุดการพิมพ์ในสิ่งเดียวกัน และในความเป็นจริงนี้ฉันจะแก้ไข online-- ก็หมายความว่าจะพูดแบบนี้อีกครั้งที่นี่ ให้ฉันทำความสะอาดนี้ขึ้นออนไลน์และเราจะ เห็นในคำแนะนำแบบออนไลน์ตามความจำเป็น สิ่งที่ตั้งใจมี ตกลง ตัวอย่างเช่นดังนั้นตอนนี้ล่าสุดที่เกี่ยวข้องกับ และขและจากนั้นเราจะ ใช้สิ่งที่ขึ้นรอย ดังนั้นด้วยของ a และ b และ คในมูลค่า และความเท่าเทียมกันดังกล่าวให้ มาดูที่ตัวอย่างนี้ที่นี่ ตัวอย่างเช่นรหัสอื่น เราจะเปิดหนึ่งที่ ทำแล้วดังนั้นเราจึง จะได้ไม่ต้องพิมพ์ ทั้งหมดออกจากรอยขีดข่วน และสังเกตเห็นในความคาดหมาย เรากำลังใช้ส่วนหัวของหลาย ไฟล์ระหว่างที่เป็น เพื่อนใหม่ของเราสตริง ตอนนี้ดูตอนแรก รวดเร็ว, ความลับเล็ก ๆ น้อย ๆ แต่ขอดูว่าเราไม่สามารถเหตุผล ผ่านสิ่งที่เกิดขึ้นที่นี่ ครั้งแรกที่ผมได้รับสายจากผู้ใช้ และฉันใส่สตริงที่ในตัวแปร เรียกว่าร้าน คัดลอกวางจากก่อน ในบรรทัดที่ 22 ผมเห็นได้ชัด ทำสิ่งที่ ผมสักครู่ที่ผ่านมาผมทำซ้ำ ตัวละครในนั้น และเทคนิคใหม่ที่นี่จะใช้ ความยาวสาย, การเพิ่มประสิทธิภาพของเล็กน้อย ระยะเวลาในการจัดเก็บสตริงใน n, แทนที่จะโทร strlen อีกครั้ง และอีกครั้งและอีกครั้ง และเพียงแค่การตรวจสอบว่าฉันมีค่าน้อยกว่า n ตอนนี้ที่นี่สิ่งที่ได้รับ ที่น่าสนใจเล็ก ๆ น้อย ๆ แต่มันเป็นเพียงการประยุกต์ใช้ นี้ความคิดใหม่เหมือนกัน สิ่งที่ในภาษาอังกฤษไม่ S วงเล็บผมเป็นตัวแทนของ? ผู้ชม: นับแต่ละ ตัวละคร [ไม่ได้ยิน] เดวิดเจลัน: นับตัวละครแต่ละตัว และยิ่งรัดกุม S วงเล็บผมเป็นตัวแทนของอะไร คุณจะพูดว่า ที่จะไม่ทำให้คุณอยู่ในจุดที่นี่ ผู้ชม: สวยหน่อย เดวิดเจลัน: ดังนั้นหากคำว่าถ้าค่าเท่าใด สตริงเป็น Zamyla ซึ่ง starts-- ผู้ชม: --you จัดการกับ ตัวอักษร separately-- เดวิดเจลัน: ดี ว่า สัญกรณ์ตารางวงเล็บช่วยให้คุณ ในการเข้าถึงตัวละครแต่ละตัวเป็นรายบุคคล ดังนั้นพวกเขาวงเล็บ 0 เป็นไปได้ ตัวอักษรตัวแรกในสตริง S วงเล็บ 1 เป็นไปได้ ที่สองและอื่น ๆ ดังนั้นคำถามที่ผมถาม ที่นี่ในสภาพนี้คืออะไร เป็นตัวละคร i'th ของร้านมากขึ้น กว่าหรือเท่ากับตัวพิมพ์เล็กหรือไม่ และสิ่งนี้หมายความว่าที่นี่ ที่มีเครื่องหมายสองครั้งหรือไม่ ผู้ชม (กัน) และ เดวิดเจลัน: แล้ว มันเป็นเพียงเทียบเท่ากับการนี​​้ และไม่ได้มีคำหลักใน C คุณจะต้อง การใช้งานที่น่ารำคาญ, เครื่องหมายสัญลักษณ์ และสิ่งนี้ตรงกันข้ามจะขอเป็น 's i'th ตัวอักษรน้อยกว่าหรือเท่ากับ เป็นตัวพิมพ์เล็กซี? และอีกครั้งที่นี่เป็นที่ที่ ความเข้าใจพื้นฐาน การดำเนินการของ คอมพิวเตอร์ทำให้รู้สึก ขอให้สังเกตว่าแม้ว่าฉันมี dot dot dot ที่นั่น ดูเหมือนว่าถึง Z ในตัวพิมพ์เล็กมี ค่าที่อยู่ติดกันทั้งหมดเพิ่มขึ้นจาก 97 ขึ้น และเริ่มต้นเหมือนกันสำหรับตัวพิมพ์ใหญ่ที่ 65 ดังนั้น Takeaway แล้ว ที่อยู่ในภาษาอังกฤษ วิธีการที่คุณจะอธิบาย สิ่งที่สาย 24 จะทำ? ใช่? ผู้ชม: เมื่อวันที่ 24 ที่จะตรวจสอบเพื่อดู ไม่ว่าจะเป็นตัวละครแต่ละตัวเป็นตัวพิมพ์เล็ก เดวิดเจลัน: มันตรวจสอบไม่ว่าจะเป็น ตัวละครแต่ละตัวเป็นอักษรตัวพิมพ์เล็ก ดังนั้นยิ่งชัดถ้อยชัดคำเป็น ตัวอักษร i'th ของ S ตัวพิมพ์เล็ก? นั่นคือทั้งหมดที่เรา การแสดงที่นี่มีเหตุผล เล็ก ๆ น้อย ๆ ความลับ แต่ ในที่สุดสวยตรงไปตรงมา เป็นร้านของตัวอักษรตัวพิมพ์เล็ก i'th? ถ้าเป็นเช่นนั้นและนี่เป็นสิ่งที่ ได้รับความคิดเล็ก ๆ น้อย ๆ การดัด เพียงสักครู่ถ้าอย่างนั้นไป ข้างหน้าและพิมพ์ตัวอักษร ดังนั้นนี้เป็นเพียงตัวยึด แต่สิ่งที่ตัวละคร? ทำไมฉันทำของฉันวงเล็บ ลบการแสดงออกที่นี่? ดีเห็นรูปแบบที่นี่ ตัวเลขที่เกิดขึ้นจริงไม่ได้เรื่องมาก แต่สังเกตเห็นว่า 97 เป็น วิธีห่างไกลจาก 65? ผู้ชม: 32 เดวิดเจลัน: 32 วิธีห่างไกล 98 จาก 66 คืออะไร? ผู้ชม: 32 เดวิดเจลัน: c เล็ก ๆ น้อย ๆ จากบิ๊กซี? 32 จึงมี 32 กระโดดจาก จดหมายฉบับหนึ่งไปยังอีก ตรงไปตรงมาเพื่อให้ผมสามารถทำได้ ง่ายนี้เพื่อที่ แต่แล้วฉันชนิดของการเข้ารหัสที่ยาก นี้ความเข้าใจในระดับต่ำ ที่ผู้อ่านไม่เคย จะเข้าใจ ดังนั้นฉันจะพูดคุยว่ามันเป็นฉัน รู้อักษรตัวพิมพ์เล็กมีขนาดใหญ่ ฉันรู้ว่าตัวอักษรเป็น ค่ามีขนาดเล็กกระแนะกระแหน แต่นี้เป็นอย่างมีประสิทธิภาพเทียบเท่ากับ บอกว่าลบ 32 จาก S วงเล็บฉัน ดังนั้นในบริบทของเหล่านี้ ตัวอักษรถ้าตัวอักษรที่ ที่เกิดขึ้นจะเป็นตัวพิมพ์เล็ก และผมลบ 32, สิ่งที่มีผลไม่ว่าจะมี ทางคณิตศาสตร์ที่เป็นตัวพิมพ์เล็กหรือไม่ ผู้ชม: Capitalizes-- เดวิดเจลัน: Capitalizes มัน และแน่นอนนี่คือเหตุผลของเรา โปรแกรมที่เรียกว่าใช้ประโยชน์เป็นศูนย์ โปรแกรมนี้อย่างใดอย่างหนึ่ง capitalizes จดหมาย หลังจากการตรวจสอบถ้ามันเป็น ย่อมเป็นอักษรตัวพิมพ์เล็ก มิฉะนั้นในสายที่ 30 ฉันจะทำอย่างไรถ้า ก็ไม่ได้เป็นอักษรตัวพิมพ์เล็กที่ฉัน กำลังมองหาที่ที่โดยเฉพาะอย่างยิ่ง ซ้ำในวง เพียงแค่พิมพ์ออกมา จึงไม่เปลี่ยนสิ่งที่ ที่ไม่ได้พิมพ์เล็ก จำกัด ตัวเองให้ เล็ก ๆ น้อย ๆ ถึง Z เล็ก ๆ น้อย ๆ ขณะนี้เป็นความลับอย่างเป็นธรรม แต่ในตอนท้ายของวันนี้ คือวิธีที่เรา, กาลครั้งหนึ่ง มีการดำเนินการสิ่งที่ ถ้าฉันแทนที่จะเปิดประโยชน์ หนึ่งโอ้ขอบคุณพระเจ้า มีฟังก์ชั่นเป็น เรียกตัวไปบนที่สามารถ ทำทุกอย่างที่เราก็ไม่ได้ทำ ในระดับที่ค่อนข้างต่ำ ตอนนี้เป็นที่น่าสนใจบน เพราะมันมีการประกาศในแฟ้ม และคุณเท่านั้นที่จะรู้ว่านี้ โดยการตรวจสอบเอกสาร หรือได้รับการบอกการพูดในชั้นเรียนที่ มันมีอยู่ในไฟล์ที่เรียกว่า ctype.h ดังนั้นนี่เป็นอีกหนึ่งเพื่อนใหม่ของเรา และบนไม่ตรง สิ่งที่ชื่อของมันบ่งบอก คุณสามารถผ่านในขณะที่การโต้เถียงระหว่าง วงเล็บเหล่านี้ตัวละครบาง ฉันจะผ่านในตัวละคร i'th ของ s โดยใช้สัญกรณ์ใหม่ของเราแฟนซี ที่เกี่ยวข้องกับวงเล็บ และใช้เวลาคาดเดาสิ่งที่เป็นผลตอบแทน ค่าของที่จะเห็นได้ชัดบนไป จะเป็นอย่างไร อักษรตัวใหญ่ อักษรตัวใหญ่ ดังนั้นถ้าผมผ่านในตัวพิมพ์เล็ก, หวังว่าโดยความหมายของการบน มันจะกลับมา พิมพ์ใหญ่เอมิฉะนั้น หากยังไม่ได้อักษรตัวพิมพ์เล็กใน สถานที่แรกที่ฉันเพิ่งพิมพ์ออกมา และแน่นอนแจ้งให้ทราบล่วงหน้า เพื่อนคนที่สองที่นี่ ไม่ใช่แค่ส่วนบนอยู่ แต่จะต่ำกว่าที่ จริง ๆ แล้วตอบคำถามว่าสำหรับฉัน ตอนนี้ใครก็ตามที่เขียนสิ่งเหล่านี้ 10s ปีที่ผ่านมาคุณรู้อะไรไหม ดำเนินการเพื่อสังคมและเป็น โดยใช้รหัสที่ลดลงเช่นนี้ แต่อีกครั้งให้สอดคล้องกับ ความคิดของการสรุปไปนี้ การเรียงลำดับของระดับที่ต่ำกว่า รายละเอียดการปฏิบัติ และยืนอยู่บนไหล่ของคน ที่มาก่อนเราใช้ฟังก์ชั่น เหมือนบนและต่ำซึ่ง มหัศจรรย์พอเป็นอย่างดี ชื่อที่จะบอกว่าสิ่งที่พวกเขาทำคือ กระบวนทัศน์ที่ยอดเยี่ยมที่จะนำมาใช้ ตอนนี้ก็จะเปิดออกว่าถ้าผมอ่าน หน้าคนสำหรับพูดไปด้านบน ผมได้เรียนรู้สิ่งอื่น ดังนั้นคน ToUpper มันเป็นเรื่องเล็ก ๆ น้อย ๆ อย่างท่วมท้น แต่แจ้งให้ทราบล่วงหน้านี่คือการพูดถึงว่า ไฟล์ส่วนหัวที่ฉันควรใช้ เช่นกันเพราะ เป็นความเข้าใจผิดฟังก์ชั่น ใช้ ints แทนตัวอักษร สำหรับเหตุผลของการตรวจสอบข้อผิดพลาด แต่เราอาจจะมา กลับไปว่าในอนาคต แต่สังเกตเห็นที่นี่เพื่อแปลงบน ตัวอักษร C เป็นตัวพิมพ์ใหญ่ถ้าเป็นไปได้ นั่นคือตรงไปตรงสวย และตอนนี้ขอเป็นเพียงเล็กน้อยเฉพาะเจาะจงมากขึ้น ลองดูที่ส่วนหนึ่งของ หน้าคนภายใต้ค่าตอบแทน ค่าที่ส่งกลับคือ ตัวอักษรที่แปลง หรือคถ้าแปลง เป็นไปไม่ได้ ที่ c คือการป้อนข้อมูลเดิม ซึ่งผมรู้จากที่นี่จาก อาร์กิวเมนต์ไปด้านบน ดังนั้นสิ่งที่เป็นประเด็นของเรื่องนี้หรือไม่ ค่าที่ส่งกลับคือ ตัวอักษรที่แปลงที่ หรือคจดหมายเดิมถ้า การแปลงเป็นไปไม่ได้ สิ่งที่สามารถปรับปรุงดังนั้นฉัน ทำให้การออกแบบรหัสของฉันหรือไม่ ใช่? ผู้ชม: คุณสามารถลบอื่น เดวิดเจลัน: ฉันสามารถ เอาคำอื่นที่ และไม่เพียง แต่คำสั่งอื่น ผู้ชม: คุณสามารถลบ [ไม่ได้ยิน] เดวิดเจลัน: ฉันสามารถ เอาส้อมทั้ง ในถนนที่ถ้าอื่นทั้งหมด ดังนั้นแน่นอนให้ฉันเปิด รุ่นสุดท้ายของนี้ ประโยชน์-2 และสังเกตเห็นเพียงว่าถ้า คุณจะ, เซ็กซี่, รหัสที่ตอนนี้ได้รับ, ในการที่ฉันได้ลดลงจากบางส่วน เจ็ดหรือเพื่อให้สายไปเพียงสี่ ฟังก์ชันการทำงานที่ฉันตั้งใจ โดยเพียงแค่โทรไปบน ผ่านในวงเล็บของฉันและการพิมพ์ ออกด้วยตัวยึด% ค, โดยเฉพาะอย่างยิ่งตัวละครที่ ตอนนี้เนื้อหาที่มีข้อบกพร่อง หรืออย่างน้อยก็มีความเสี่ยงจากข้อผิดพลาดที่ ในโปรแกรมนี้ ดังนั้นเพียงแค่ที่จะกลับมา ที่จะซื้อกลับบ้านก่อนหน้านี้ สิ่งที่ควรฉันยังคงทำใน โปรแกรมนี้จะทำให้มันเป็นที่แข็งแกร่งมากขึ้น เพื่อที่ว่าไม่มีทางที่มันสามารถ ผิดพลาดแม้ในกรณีที่หายาก? ผู้ชม: ตรวจสอบให้แน่ใจว่ามันไม่ได้เป็นโมฆะ เดวิดเจลัน: ตรวจสอบให้แน่ใจว่ามันไม่ได้เป็นโมฆะ ดังนั้นจริงๆจะทำให้ซุปเปอร์นี้ ที่เหมาะสมฉันควรจะทำสิ่งที่ต้องการ ถ้าเป็นสิ่งที่ไม่โมฆะแล้ว ไปข้างหน้าและดำเนินการ เส้นเหล่านี้ของรหัสที่ ฉันสามารถแล้วเยื้องเช่นนั้น แล้วใส่ในรั้งสนิทของฉัน ดังนั้นที่ดีที่ผูกเข้าด้วยกันของทั้งสองความคิด ใช่? ผู้ชม: คุณสามารถใช้ ทำในขณะที่ห่วงแทน? เดวิดเจลัน: สามารถ ฉันจะทำในขณะที่ห่วง? ผู้ชม: --you ต้องการให้แน่ใจว่า ว่าคุณจริง [ไม่ได้ยิน] เดวิดเจลัน: สามารถ คุณใช้ต้องทำในขณะที่? คำตอบสั้น ๆ ไม่ เพราะคุณกำลังจะ แนะนำกรณีที่อีกมุมหนึ่ง ถ้าสตริงมีความยาวเป็นศูนย์ เช่นถ้าฉันเพียงแค่กด ใส่โดยไม่เคยพิมพ์ Zamyla ฉันจะส่งคุณกลับมาที่เกิดขึ้นจริง สตริงที่เราในที่สุดก็จะเห็น ที่มีศูนย์ตัวอักษร ก็ยังคงสตริง ก็สุดเพียงสั้น แต่ถ้าคุณใช้สิ่งที่ต้องทำในขณะที่ คุณกำลังจะไปสุ่มสี่สุ่มห้า พยายามที่จะทำอะไรกับ เคารพสตริงที่ และไม่มีอะไรที่เป็นไปได้มี ผู้ชม: ดีถ้าคุณไม่ได้ทำ ทำ [ไม่ได้ยิน] ในขณะที่ s-- เดวิดเจลัน: โอ้ฉันเห็นให้ รับสายจากผู้ใช้ ดังนั้นคำตอบสั้นคุณ สามารถและให้รบกวน พวกเขาเพื่อให้คุณสตริงที่ สั้นพอที่จะพอดีในหน่วยความจำ อย่างแน่นอน ผมก็เลือกที่จะไม่ ถ้าพวกเขาไม่ให้ฉันสตริงฉัน ต้องการผมเลิกผมให้ขึ้น แต่อย่างแน่นอนสำหรับวัตถุประสงค์ที่ คุณอย่างสามารถดำเนินการได้ ดังนั้นไฟล์ส่วนหัวของห้องสมุดที่ เราตอนนี้คุ้นเคยกับเหล่านี้ที่นี่ มาตรฐาน I / O CS50.h, สตริง, ctype.h และมีจริงคนอื่น ๆ บางส่วนของคุณได้ค้นพบ ห้องสมุดคณิตศาสตร์ใน math.h. แต่ให้ฉันแนะนำคุณตอนนี้เพื่อ ทรัพยากรนี้ว่าเจ้าหน้าที่ CS50, Davin, และร็อบและเกบโดยเฉพาะอย่างยิ่ง ได้ใส่กัน ว่าเร็ว ๆ นี้จะเชื่อมโยงกับ เว็บไซต์ของหลักสูตร มันเรียกว่าการอ้างอิง CS50 ซึ่งก็เพื่อให้คุณได้อย่างรวดเร็ว รสชาติของมันทำงานดังนี้ ผมขอไปที่ reference.cs50.net คุณจะเห็นในมือซ้าย ข้างรายการครอบงำ ฟังก์ชั่นที่มาพร้อมกับค แต่ถ้าผมดูแลในขณะนั้น เกี่ยวกับสิ่งที่ต้องการ strlen, ฉันสามารถพิมพ์มี ที่กรองลงในรายการ เพียงแค่สิ่งที่ผมสนใจเกี่ยวกับ ฉันจะคลิกมัน และตอนนี้ที่เหลือ คุณจะเห็นสิ่งที่เราหวัง เป็นตรงไปตรงมามากขึ้นของมนุษย์ คำอธิบายที่เป็นมิตรของวิธี ฟังก์ชั่นนี้ทำงาน ผลตอบแทนที่ได้ความยาวของสตริง นี่คือบทสรุปเป็นที่นี่เป็นวิธีที่คุณ ใช้มันในแง่ของไฟล์ส่วนหัว และในแง่ของสิ่งที่ฟังก์ชั่น ดูเหมือนว่าในแง่ของการขัดแย้งของ แล้วนี่ผลตอบแทน ความยาวของสตริง แต่สำหรับบรรดาของคุณสะดวกสบายมากขึ้น จริง ๆ แล้วคุณสามารถคลิกที่สะดวกสบายมากขึ้น และเนื้อหาของเรื่องนี้ หน้าตอนนี้จะเปลี่ยน จะเป็นค่าเริ่มต้นของสิ่งที่ คุณจะได้รับโดยใช้หน้าคน ในคำอื่น ๆ CS50 อ้างอิงความเรียบง่าย ของหน้าคนโดยทีมงานสำหรับนักศึกษา โดยเฉพาะอย่างยิ่งผู้ที่สะดวกสบายน้อยกว่า และในระหว่างเพื่อให้คุณ ไม่ได้มีการพยายามที่จะห่อ ใจของคุณไปรอบ ๆ ตรงไปตรงมา ไวยากรณ์ลับบางอย่างเป็นธรรม และเอกสารบางครั้ง ดังนั้นเก็บที่ในใจ ในวันที่จะมา ดังนั้นที่นี่อีกครั้งเป็น Zamyla ตอนนี้ขอให้ถามคำถามที่ เล็ก ๆ น้อย ๆ ของมนุษย์มากขึ้นสามารถเข้าถึงได้ ขอบคุณช้าง, ผู้ที่ได้รับ พิมพ์ช้างมากขึ้น ดุ๊กดิ๊กไม่กี่วันที่ผ่านมา เรามีโอกาสที่จะให้ อย่างน้อยหนึ่งของพวกเขาออกไป ถ้าเราสามารถได้รับเพียงหนึ่งในอาสาสมัคร ที่จะมาในการวาดขึ้นบนหน้าจอ วิธีการเกี่ยวกับที่นี่? มาขึ้น ชื่อของคุณคืออะไร อเล็กซ์: อเล็กซ์ เดวิดเจลัน: อเล็กซ์ ขวาทั้งหมด อเล็กซ์, มาขึ้น เราจะได้เห็นของคุณ ลายมือบนหน้าจอที่นี่ สิทธิทั้งหมดที่ดีที่จะได้พบคุณ ALEX: นีซที่คุณได้พบคุณ เดวิดเจลัน: ทั้งหมดขวา ดังนั้นการออกกำลังกายที่ง่ายสุด บาร์ไม่สูงถึง ได้รับช้างวันนี้ คุณกำลังเล่นบทบาทของ GetString และฉันจะบอกคุณ สตริงที่คุณได้รับ และคิดว่าคุณ GetString ได้รับการเรียกว่า และมนุษย์ที่ชอบก็มี พิมพ์ใน Zamyla, Z--M-Y-L- เพียงไปข้างหน้าและเขียน Zamyla ที่ หน้าจอราวกับว่าคุณมีอากาศมัน และเก็บไว้ที่ใดที่หนึ่งในความทรงจำ ออกจากห้องสำหรับสิ่งที่จะได้รับหลาย คำสวย ๆ ที่ตกลงให้ไป [หัวเราะ] ดังนั้น Zamyla, ที่ดีเยี่ยม ดังนั้นตอนนี้คิดว่าคุณ GetString จะเรียกอีกครั้ง และดังนั้นฉันให้คุณที่ แป้นพิมพ์ที่มีชื่ออื่นเบลินดา ขวาทั้งหมด และตอนนี้ GetString เวลาต่อไปคือ เรียกว่าฉันพิมพ์ในสิ่งที่ต้องการเกบ G-A-B-E คุณกำลังการจริงๆ หัวใจหน่วยความจำเข้าถึงโดยสุ่ม ซึ่งเป็นรูปวาดทุกอย่าง อย่างสมบูรณ์แบบสุ่ม ตกลง [หัวเราะ] ALEX: ขออภัยที่เขียนด้วยลายมือของฉันคือไม่ดี เดวิดเจลัน: ไม่มีที่ตกลง และวิธีการเกี่ยวกับร็อบ, R-O-B ตกลง ที่ดี ดังนั้นผมไม่คาดคิดว่าคุณจะ ชนิดของสิ่งที่ออกวางในลักษณะนี้ แต่เราสามารถทำให้งานนี้ ดังนั้นวิธีการที่คุณไม่ได้ไปเกี่ยวกับการวาง จากตัวอักษรเหล่านี้ในหน่วยความจำ? ในคำอื่น ๆ ถ้าเราคิดว่า หน้าจอสีดำนี้เป็นรูปสี่เหลี่ยมผืนผ้า เป็นคิดเป็น คอมพิวเตอร์ RAM หรือหน่วยความจำ และจำแรมที่เป็นเพียง ทั้งกลุ่มของไบต์ และไบต์มีทั้งกลุ่มของบิต และบิตเป็นอย่างใด ดำเนินการโดยทั่วไป ด้วยรูปแบบของบาง ไฟฟ้าในฮาร์ดแวร์ นั่นคือการจัดเรียงของ ฝังรากลึกที่เราได้พูดคุยเกี่ยวกับ ตอนนี้และสามารถใช้สำหรับการรับ คุณไม่ได้ไปเกี่ยวกับวิธีการ ตัดสินใจที่จะเขียน ร็อบเมื่อเทียบกับเกบเทียบกับ เบลินดาเมื่อเทียบกับ Zamyla? อเล็กซ์: ผมแค่ทำมันใน สั่งซื้อที่คุณบอกฉัน เดวิดเจลัน: และที่เป็นจริง แต่สิ่งที่หน่วยงานที่คุณใส่ ชื่อเบลินดาและชื่อเกบ? ALEX: ไม่มีอะไร? เดวิดเจลัน: [หัวเราะ] เพื่อให้การทำงานที่ดี ดังนั้นเครื่องคอมพิวเตอร์ที่มีน้อย เป็นระเบียบมากขึ้นกว่าที่ และดังนั้นเมื่อเรา implement-- อยู่ที่นั่น เพียง moment-- เมื่อเราจริง ใช้สิ่งที่ชอบ GetString ในคอมพิวเตอร์ Zamyla อาจจะมีออกมาวางไว้สวยมาก เช่นคุณได้บนหน้าจอที่มี และสิ่งที่เป็นกุญแจสำคัญที่จะแจ้งให้ทราบล่วงหน้า ที่นี่สิ่งที่อเล็กซ์ได้ คือมีชนิดของการแบ่งเขต ในแต่ละคำเหล่านี้ใช่มั้ย? คุณไม่ได้เขียน Z--M-Y-L-A-B-E-L-I-N-D--G-A-B-- ในคำอื่น ๆ ที่มีบางชนิด แบ่งเขตซึ่งดูเหมือนว่าจะเป็น การเรียงลำดับของการเว้นวรรคแบบสุ่ม ระหว่างคำต่างๆเหล่านี้ แต่ที่ดีเพราะ มนุษย์เราสามารถทำได้ตอนนี้ เห็นภาพว่าสิ่งเหล่านี้ สี่สายที่แตกต่างกัน มันไม่ใช่แค่หนึ่งลำดับ จำนวนมากของตัวละคร ดังนั้นคอมพิวเตอร์แล้วขณะที่ อาจใช้เวลาสตริงเช่น Zamyla, ใส่แต่ละตัวอักษรเหล่านั้น ภายในของไบต์ของหน่วยความจำ แต่จำนวนที่มีขนาดใหญ่กว่ามาก แน่นอนกว่าหกตัวอักษร มีทั้งกลุ่มของแรมเป็น และอื่น ๆ ต่อจากนี้ไปนี้ ตารางของกล่องที่จะ เพื่อเป็นตัวแทนของสิ่งที่อเล็กซ์เพียง ได้ที่นี่บนหน้าจอ และตอนนี้อเล็กซ์เราสามารถให้คุณ สีฟ้าหรือสีส้มช้างจากช้าง ALEX: ฉันจะเอาช้างสีฟ้า เดวิดเจลัน: ช้างสีฟ้า ดังนั้นรอบใหญ่ของเสียงปรบมือ ถ้าเราสามารถทำได้สำหรับอเล็กซ์ที่นี่ [APPLAUSE] ALEX: ขอบคุณ เดวิดเจลัน: ขอบคุณ ดังนั้นประเด็นก็คือว่าแม้ว่า รูปแบบชนิดของการเปลี่ยนแปลงอยู่ตลอดเวลาที่นี่ ในคณะกรรมการที่มีเป็นแบบนี้ แบ่งเขตระหว่างสายต่างๆ ว่าอเล็กซ์ได้สำหรับเรา ตอนนี้เครื่องคอมพิวเตอร์ที่ตรงไปตรงมา สามารถทำในสิ่งเดียวกัน พวกเขาสามารถชนิดของป๋อม สตริงที่ใดก็ได้ในหน่วยความจำ ขึ้นที่นี่กว่าที่นี่ ลงที่นี่ลงที่นี่ พวกเขาสามารถทำตรงนั้น แต่แน่นอนว่า อาจจะไม่ได้วางแผนที่ดีที่สุด ใช่มั้ย? ถ้าผมเก็บไว้ขอให้อเล็กซ์ ได้รับชื่ออาจจะเขาต้องการ นำบางส่วนขึ้นลงที่นี่อาจจะขึ้น ที่นี่กว่าที่นี่กว่าที่นี่ในที่สุด กว่าที่นี่ แต่ด้วยการวางแผนบิตมากขึ้นอย่างแน่นอน เราสามารถวางสิ่งที่ออกมากขึ้นอย่างหมดจด และแน่นอนว่าเป็นสิ่งที่คอมพิวเตอร์ไม่ แต่จับคือ ถ้าสตริงต่อไปที่ฉันได้รับ หลังจาก Zamyla เป็นสิ่งที่ เช่นเบลินดา, เสนอที่เราอาจเขียน จดหมายขเกี่ยวกับตารางนี้ ที่คุณจะไป? ทางด้านขวาของที่ ด้านล่าง Z ด้านล่างหรือไม่ สิ่งที่สัญชาตญาณแรกของคุณจะเป็นอย่างไร ผู้ชม: ต่ำกว่าซี เดวิดเจลัน: ดังนั้นด้านล่าง Z และที่สวย ตรงไปตรงมาใช่มั้ย? เป็นชนิดของเรียบร้อยมันเป็นสิ่งที่เราทำ บนแป้นพิมพ์เมื่อเรากด Enter, หรืออีเมลเมื่อมีการ รายการสัญลักษณ์ของสิ่งที่ แต่ความเป็นจริงก็คือว่าคอมพิวเตอร์ พยายามที่จะมีประสิทธิภาพมากขึ้น และอัดแน่นอนมาก ข้อมูลลงในหน่วยความจำที่เป็นไปได้ เพื่อให้คุณไม่ต้องเสียไบต์ใด ๆ เพื่อให้คุณไม่ต้องเสีย อสังหาริมทรัพย์ใด ๆ หน้าจอ และปัญหาที่เกิดขึ้น แต่เป็นที่ ถ้าเราใส่ตัวอักษรตัวอักษรที่ ขหลังจากที่วิธีการที่เราจะไป ทราบว่าชื่อของ Zamyla สิ้นสุด และชื่อของเบลินดาเริ่มต้น? เพื่อให้คุณนำเสนอเพียงแค่มนุษย์ดี กดปุ่ม Enter เป็นหลัก ใส่มันลงมาด้านล่าง หรือแม้กระทั่งเป็นอเล็กซ์ไม่เพียงแค่เริ่มต้นการเขียน ชื่อต่อไปนี้อย่างใดอย่างหนึ่งก่อนหน้านี้ และต่ำกว่าที่หนึ่งและ แล้วด้านล่างที่ นั่นเป็นคิวภาพ คอมพิวเตอร์มีอีกคิวภาพ แต่มันเป็นเรื่องเล็ก ๆ น้อย ๆ รวบรัดมากขึ้น มันเป็นตัวละครที่ขี้ขลาดนี้ เครื่องหมาย 0 ซึ่งอาจจะเป็น ชวนให้นึกถึงเครื่องหมาย n, และอื่น ๆ ขณะนี้ ลำดับหนีพิเศษ เครื่องหมาย 0 เป็นวิธีการ ที่เป็นตัวแทนของศูนย์แปดบิตในแถว 0000 0000 วิธีการที่คุณแสดงว่าไม่ได้ที่จะ กดหมายเลขศูนย์บนแป้นพิมพ์ของคุณ เพราะในความเป็นจริงที่เป็นถ่าน ASCII ดูเหมือนว่าจำนวน แต่ เป็นจริงตัวเลขทศนิยม ที่แสดงถึงวงกลม สัญลักษณ์, อักษรวงกลม ในขณะที่เครื่องหมาย ศูนย์หมายถึงตัวอักษร ใส่แปดศูนย์ไบต์ที่นี่สำหรับฉัน ดังนั้นนี่คือตามอำเภอใจ เราอาจจะได้ใช้รูปแบบใด ๆ ของบิต แต่โลก ตัดสินใจหลายปี ที่ผ่านมาที่จะเป็นตัวแทนของ จุดสิ้นสุดของสตริงในหน่วยความจำ เพียงแค่ใส่ทั้งกลุ่มของศูนย์ เพราะเราสามารถตรวจสอบได้ว่า ตอนนี้หมายความว่าตัวอักษรของไม่มี ตัวอักษรสามารถแสดงด้วยศูนย์ แต่ที่ตกลงเราได้เห็นแล้ว ที่เราใช้ 65 เมื่อขึ้นไปใน 97 เมื่อขึ้น เราไม่ได้รับที่ใดก็ได้ ใกล้กับศูนย์ทั้งหมด ดังนั้นเบลินดาในหน่วยความจำของคอมพิวเตอร์ เป็นจริงจะไปที่นี่ ฉันได้วาดมันสีเหลืองเพียง เพื่อดึงดูดความสนใจของเราไป และแจ้งให้ทราบล่วงหน้าเกินไปนี้ เป็นข้อสมบูรณ์ ฉันได้วาดมันเป็นตาราง เช่น RAM เป็นเพียงบางส่วนของวัตถุทางกายภาพ มันไม่จำเป็นต้องมี แถวและคอลัมน์ต่อ se มันเป็นเพียงแค่มีทั้งกลุ่มของไบต์ ดำเนินการในฮาร์ดแวร์อย่างใด แต่ถ้าหลังจากที่เบลินดาฉัน พิมพ์ในชื่อเกบของ เขาจะจบลงที่นี่ในหน่วยความจำ และถ้าฉันพิมพ์ในชื่อ Daven ของ เช่นเขาจะจบลงที่นี่ และฉันสามารถดำเนินการต่อไป เขียนชื่อมากยิ่งขึ้น แต่ถ้าฉันพยายามที่จะ เขียนชื่อยาวสุด ในที่สุดฉันอาจจะวิ่งออกมาจากหน่วยความจำ ซึ่งในกรณีนี้เป็น GetString จะกลับมาเป็นโมฆะขณะที่เรากล่าวว่า แต่โชคดีที่อย่างน้อยในภาพนี้ ที่นี่เราไม่ได้รับที่ไกลมาก ตอนนี้สิ่งที่ดีคือที่นี้ ความคิดทั่วไปของการรักษาสิ่งที่ ว่าอยู่ในกล่องเป็น ตัวแทนของคุณลักษณะของ C และจำนวนมากของภาษาที่ เป็นที่รู้จักกันเป็นแถว อาร์เรย์เป็นชนิดของข้อมูลอื่น มันเป็นโครงสร้างข้อมูลถ้าคุณจะ โครงสร้างในความหมายของมันจริงๆ ชนิดของมองเหมือนกล่องอย่างน้อย ในตาใจของคุณ อาร์เรย์ที่อยู่ติดกัน ลำดับของชนิดข้อมูลเหมือนกัน หลังการสำรองข้อมูลการสำรองข้อมูล ดังนั้นสตริงอื่น ๆ คำพูดเป็นอาร์เรย์ของตัวอักษร อาร์เรย์ของตัวอักษร แต่มันกลับกลายเป็นคุณสามารถมี อาร์เรย์อัดแน่นของสิ่งที่ ในความเป็นจริงเราสามารถใส่ได้ ตัวเลขในอาร์เรย์ ดังนั้นรูปแบบที่ เรากำลังจะเริ่มต้น ประกาศข้อมูลนี้ โครงสร้างที่รู้จักกันเป็นแถว นอกจากนี้ยังจะใช้วงเล็บ แต่วงเล็บเหล่านี้จะไป มีความหมายที่แตกต่างกันในบริบทนี้ และขอดูว่ามันเป็นดังต่อไปนี้ สมมติว่าผมเปิด ไฟล์ใหม่ที่นี่ และฉันบันทึกนี้เป็น ages.c. และฉันจะบันทึกในโฟลเดอร์นี้ของฉันที่นี่ และตอนนี้ฉันจะไปข้างหน้า และเริ่มพิมพ์อะไรบางอย่าง เช่นมี CS50.h รวม stdio.h, เป็นโมฆะหลัก int แล้วภายในของที่นี่ฉันต้องการ ครั้งแรกมีอายุที่เรียกว่า int และฉันจะใช้ที่จะได้รับ int จากผู้ใช้สำหรับอายุของเขาหรือเธอ แต่โปรแกรมนี้มีขึ้นเพื่อนำมาใช้โดย คนหลายคนสำหรับสิ่งที่บริบท ฉันมีสายของคน ทั้งหมดของพวกเขาต้องพิมพ์ของพวกเขา อายุบางทีบางอย่างผมไม่ทราบ การแข่งขันหรือเหตุการณ์ ที่พวกเขาได้มาถึงสำหรับ ดังนั้นคนต่อไปผม ต้องตัวแปรอื่น เพราะถ้าฉันเพียงแค่ทำ อายุได้รับ GetInt ที่ จะข่มขี่หรือเขียนทับ อายุคนที่ผ่านมา เพื่อที่ว่าไม่ดี ดังนั้นสัญชาตญาณแรกของฉัน อาจจะโอ้สิทธิทั้งหมด ถ้าฉันต้องการที่จะได้รับของหลายคน ages-- ขอเรียก age1 นี้ int age2 ได้รับ int, int age3 ได้รับ GetInt และตอนนี้ฉันจะใช้ รหัส pseudocode บางส่วนที่นี่ ทำอะไรกับตัวเลขเหล่านั้น เราจะออกเดินทางไปวันอื่นสิ่งที่ ที่เรากำลังทำอยู่ที่นั่นเพราะเราเท่านั้น ดูแลขณะนี้ เกี่ยวกับ age1, age2, age3 แต่น่าเสียดายที่เมื่อฉัน รวบรวมโปรแกรมนี้ และวางไว้ในหน้าของผู้ใช้จริง สิ่งที่ออกแบบไม่ดีพื้นฐาน การตัดสินใจของฉันดูเหมือนจะได้ทำ? ใช่? ผู้ชม: [ไม่ได้ยิน] เดวิดเจลัน: ใช่ ฉันไม่ได้พยายามแม้กระทั่ง ที่จะคิดออกว่าหลายวัย ไม่จริงผมสนใจเกี่ยวกับ? ถ้ามีน้อยกว่าสามคนที่นี่ และดังนั้นจึงน้อยกว่าสามวัย ฉันยังคงคาดหวังว่าสุ่มสี่สุ่มห้าสาม พระเจ้าห้ามสี่คนแสดงขึ้น โปรแกรมของฉันเพียงแค่จะไม่ได้สนับสนุนพวกเขา และอื่น ๆ นี้เรื่องยาว ระยะสั้นไม่ได้เป็นนิสัยที่ดี ใช่มั้ย? ผมได้รับเป็นหลักและการคัดลอก วางโค้ดและเพียงแค่ปรับ ชื่อตัวแปร และพระเจ้าของฉันถ้าคุณมีไม่สาม ทุกเพศทุกวัย แต่ 10 หรือ 100 หรือแม้แต่ 6,500 นักศึกษาปริญญาตรีเช่น นี้ไม่ได้เป็นไปได้โดยเฉพาะอย่างยิ่ง รหัสที่สง่างามหรือที่ยั่งยืน คุณจะต้อง เขียนโปรแกรมทุกครั้ง จำนวนของการเปลี่ยนแปลงคน ดังนั้นต้องขอบคุณในของเราที่เกิดขึ้นจริง ไฟล์ ages.c สำหรับวันนี้ เรามีวิธีการแก้ปัญหาที่ชาญฉลาดมากขึ้น ครั้งแรกผมกำลังจะไปยืม สร้างที่เราได้นำมาใช้ไม่กี่ครั้ง นี้ทำในขณะที่วงในเพื่อให้ได้รับ จำนวนของคนที่อยู่ในห้อง ฉันแค่จะไปรบกวนผู้ใช้อีกครั้ง และอีกครั้งจนกว่าเขาหรือเธอให้ฉัน ค่าของ n ที่เป็นจำนวนเต็มบวก ฉันจะได้ใช้สุดท้าย ได้เวลาของ int บวก แต่เราไม่ได้ว่า จริงดังนั้นฉันเดินไปข้างหน้า และอีกครั้งที่นำมาใช้ความคิดนี้ ตอนนี้ลงที่นี่นี่คือเคล็ดลับใหม่ ในบรรทัดที่ 27 ในขณะที่การแสดงความคิดเห็น ในบรรทัดที่ 26 แนะนำ ประกาศอาร์เรย์ที่ ในการจัดเก็บอายุของทุกคน ดังนั้นหากคุณต้องการที่จะได้รับไม่ได้เป็นหนึ่ง int ไม่ สอง ints แต่ทั้งกลุ่ม ints โดยเฉพาะจำนวนเต็ม n, n เป็นอาจ มีสามอาจจะ 100, อาจจะมี 1,000 ไวยากรณ์ค่อนข้างง่ายคือการ กล่าวว่าสิ่งที่ชนิดของข้อมูลที่คุณต้องการได้หรือไม่ สิ่งที่คุณต้องการที่จะเรียก ก้อนที่หน่วยความจำ? สิ่งที่คุณต้องการที่จะเรียกตาราง ที่มีลักษณะเช่นนี้ pictorially? และในวงเล็บที่นี่คุณจะพูดว่า วิธีการใหญ่ที่คุณต้องการอาร์เรย์จะเป็น และอื่น ๆ ก่อนหน้านี้เมื่อฉันกล่าวว่า ไวยากรณ์จะแตกต่างกันเล็ก ๆ น้อย ๆ ที่นี่ เราก็ยังคงใช้วงเล็บ แต่เมื่อผมประกาศอาร์เรย์ จำนวนที่อยู่ภายใน วิธีวงเล็บ วิธีการใหญ่ที่คุณต้องการอาร์เรย์จะเป็น ในทางตรงกันข้ามเมื่อเราได้ใช้ของ วงเล็บฉันสักครู่ที่ผ่านมา, S, สตริง ย่อมเป็นอาร์เรย์ของตัวอักษร แต่ เมื่อคุณไม่ได้ประกาศตัวแปร เช่นเดียวกับคำหลักที่นี่นี้ คุณเพียงแค่รับ ดัชนีเฉพาะที่เฉพาะเจาะจง องค์ประกอบจากแถวที่ เมื่อเรารู้ว่าส่วนที่เหลือ นี้คือตรงไปตรงมา ถ้าใหม่ฉันแรกจะพิมพ์ออกมา สิ่งที่อายุของจำนวนคนที่ฉัน ที่ฉันเพียงกล่าวว่าจำนวนหนึ่งคน จำนวนคนที่สองจำนวนสามคน และฉันแค่ทำเลขคณิต เพื่อให้คนปกติเหมือน เรานับจากนี้ โปรแกรมและไม่ได้มาจากศูนย์ แล้วที่ผมเรียก GetInt แต่ฉันเก็บ คำตอบในทุกเพศทุกวัยวงเล็บฉัน ซึ่งเป็น i'th อายุในอาร์เรย์ ดังนั้นในขณะที่ครั้งสุดท้ายที่เราได้รับการรักษา กล่องเหล่านี้เป็นตัวอักษรสำหรับชื่อ Zamyla ของ และคนอื่น ๆ ตอนนี้กล่องเหล่านี้เป็นตัวแทนของ 32 บิตหรือสี่ไบต์ ที่เราสามารถเก็บ int, int, int ซึ่งทั้งหมดอีกครั้ง เป็นประเภทข้อมูลเดียวกัน ตอนนี้ผมทำอะไรโง่ เหมือนเวลาผ่านไปเพียงแค่ แสดงให้เห็นถึงการเขียนโปรแกรมนี้ แล้วลงมาที่นี่ผมย้ำอีกครั้ง กว่าอาเรย์บอกว่าปีต่อจากนี้ จำนวนคนคนหนึ่งจะ เป็นสิ่งที่ปี และที่จะคิดออกว่า math-- ผมหมายถึงนี้ ไม่ซับซ้อนมาก arithmetic-- ฉันเพียงแค่เพิ่มหนึ่งที่จะอายุของพวกเขา เพียงเพื่อแสดงให้เห็นอีกครั้งนี้ เช่นเดียวกับที่ฉันสามารถดัชนีเป็นสตริง, วินาที, ดังนั้นผมจึงสามารถจัดทำดัชนีในอาร์เรย์ของทุกเพศทุกวัย, เช่นว่ามี เพื่อที่จะนี้จะพาเรา? ดังนั้นเราจะเห็นในที่สุด เล็ก ๆ น้อย ๆ ในวันที่จะมา หนึ่งทั้งหมดเวลานี้เมื่อ การเขียนโปรแกรมของคุณเอง เช่นมาริโอโลภเครดิต คุณได้รับการพิมพ์ชื่อของ โปรแกรมและกระแทกใส่ และจากนั้นได้รับการป้อนข้อมูลของผู้ใช้ กับ getString, GetInt, getLongLong หรือชอบ แต่ปรากฎว่า C สนับสนุน สิ่งที่เรียกว่าบรรทัดคำสั่ง ข้อโต้แย้งที่เป็นไปเพื่อให้เรา ได้รับจริงที่คำที่คุณพิมพ์ ที่พร้อมกระพริบ หลังชื่อของโปรแกรม ดังนั้นในวันที่จะมาคุณ อาจจะพิมพ์บางอย่างเช่นซีซาร์ หรือหมายเลข ./caesar 13 หลังจากนั้น เราจะเห็นว่าที่ทำงาน เพราะแท้จริงใน ปัญหาตั้งสองเราไม่ จะแนะนำให้ท่านรู้จัก เพื่อบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ ชวนให้นึกถึงฟี่ของ ท้าทายก่อนหน้าของการทำแผนที่ ศิลปะของข้อมูล scrambling นี้ในความเป็นจริงเป็นอย่างมาก ชวนให้นึกถึงสิ่งที่ฟี่ได้ นี่คือตัวอย่างของการเข้ารหัส อัลกอริทึมที่เรียกว่า ROT13 R-O-T 13 ซึ่งก็หมายถึงการหมุน ตัวอักษรในตัวอักษร 13 สถานที่ และถ้าคุณทำเช่นนั้นคุณจะได้เห็นในขณะนี้ สิ่งที่อาจจะเป็นวลีที่คุ้นเคย แต่วิธีที่เรากำลังจะใช้ นี้ในที่สุดจะขึ้นโดยทั่วไป ใน P ตั้งสองในรุ่นมาตรฐาน คุณจะใช้คู่ของยันต์, หนึ่งที่เรียกว่าซีซาร์หนึ่งที่เรียกว่า Vigenere ทั้งสองของพวกเขาที่มีการหมุน ยันต์ในที่ใดที่คุณ เปิดตัวหนึ่งเป็นตัวอักษรที่แตกต่างกัน และซีซาร์เป็นซุปเปอร์ง่าย คุณสามารถเพิ่มหนึ่งคุณเพิ่ม 13 หรือหมายเลขบางถึง 26 Vigenere ไม่ว่าเมื่อวันที่ ต่อจดหมายพื้นฐาน ดังนั้น Vigenere ที่คุณจะเห็น ในสเปคที่มีความปลอดภัยมากขึ้น แต่ในตอนท้ายของวันที่ คุณจะได้รับการดำเนินการและ P ตั้งสอง เป็นกุญแจสำคัญที่คุณใช้ทั้งสองที่ สำหรับการเข้ารหัสและการถอดรหัส หมายถึงกระบวนการของการเปลี่ยน ข้อความธรรมดาข้อความเดิมบาง เป็นข้อความหัดซึ่ง เป็นสิ่งที่มีการเข้ารหัส แล้วถอดรหัสมันอีกครั้ง ในรุ่นแฮ็กเกอร์นั้น ในขณะเดียวกันคุณจะ มอบหมายให้สิ่งที่คล้ายกัน ในจิตวิญญาณที่เราจะให้คุณ ไฟล์จากปกติลินุกซ์หรือ Mac หรือ Unix คอมพิวเตอร์ที่เรียกว่า Etsy รหัสผ่านที่มีทั้ง พวงของชื่อผู้ใช้และรหัสผ่าน และรหัสผ่านเหล่านั้นมีทั้งหมด รับการเข้ารหัสหรือถก, เพื่อที่จะพูดมากขึ้นอย่างถูกต้อง ในขณะที่คุณจะได้เห็นในสเป็ค และรุ่นแฮ็กเกอร์ที่จะท้าทาย คุณมีการป้อนข้อมูลเช่นนี้ และแตกรหัสผ่าน นั่นคือการหาสิ่งที่ รหัสผ่านของมนุษย์จริง เพราะแท้จริงรหัสผ่าน โดยทั่วไปจะไม่เก็บไว้ในที่ชัดเจน และโดยทั่วไปรหัสผ่าน ควรจะเป็นเรื่องยากที่จะคาดเดา ที่ไม่ได้มักจะเป็นกรณี และสิ่งที่ฉันคิดว่าเราจะทำคือ ปิดท้ายด้วยสองสามนาที ทันทีที่โดยเฉพาะอย่างยิ่ง ทางเลือกที่ดีของรหัสผ่าน จากภาพยนตร์ที่คุณอาจจะจำด้วยความรัก และถ้าไม่ได้คุณควรจะเช่า [วิดีโอเล่นภาพ] -Helmet คุณมารสิ่งที่เกิดขึ้น? คุณกำลังทำอะไรกับลูกสาวของฉันได้อย่างไร -Permit ฉันแนะนำ สดใสศัลยแพทย์พลาสติกหนุ่ม หมอฟิลลิป Schlotkin คนงานที่ยิ่งใหญ่ที่สุดในจมูก จักรวาลทั้งหมดและ Beverly Hills เสด็จด์ของคุณ งาน -Nose? ฉันไม่เข้าใจ เธอมีอยู่แล้วงานจมูก มันเป็นหวาน 16 ปัจจุบันของเธอ ไม่มีก็ไม่ได้สิ่งที่คุณคิด มันมากแย่มาก ถ้าคุณไม่ให้ฉัน รวมถึงโล่อากาศ แพทย์ Schlotkin จะให้คุณ ลูกสาวกลับจมูกเก่าของเธอ - [อ้าปากค้าง] Nooooooooooooo คุณไม่ได้รับที่? พักที่เหมาะสม ฉันจะบอกฉันจะบอก ไม่มีพ่อไม่มี คุณต้องไม่ได้ -You're ขวารักของฉัน ฉันจะคิดถึงจมูกใหม่ของคุณ แต่ผมจะไม่บอกพวกเขา รวมกันไม่ว่าสิ่งที่ -Very ดี หมอ Schlotkin ทำที่เลวร้ายที่สุดของคุณ ความสุขของผม ไม่มี! รอรอสักครู่ ฉันจะบอก ฉันจะบอก -I รู้ว่ามันจะทำงาน สิทธิทั้งหมดให้กับฉัน การรวมกันเป็นหนึ่งในกรุ ที่หนึ่ง ที่หนึ่ง สองการ สองการ สองการ สาม สาม สาม -Four -Four -Four -Five -Five -Five -SO การรวมกันเป็นหนึ่ง สองสามสี่ห้า นั่นคือการรวมกันที่โง่ ฉันเคยได้ยินในชีวิตของฉัน นั่นคือชนิดของสิ่ง คนโง่จะมีในกระเป๋าของเขา -Thank คุณคุณฝ่า [REMOTE CLICKS] อะไรที่คุณไม่ทำอย่างไร -I หันออกมาจากผนัง ไม่มีคุณไม่ได้คุณ ปิดหนังทั้งหมด คงจะ -I กดปุ่มผิด -Well ใส่มันกลับใน! ใส่ภาพยนตร์ย้อนกลับไปใน! ใช่ครับ! ใช่ครับ และกิจกรรมที่กลุ่มของการเดินทางอาร์โนล มาเกร็ต ของหลักสูตรที่คุณรู้ว่าฉันจะ ต้องเรียกเก็บเงินสำหรับการนี​​้ -Well? มันทำงานอย่างไร ที่เป็นพระมหากษัตริย์หรือไม่ แต่ก็ทำงานครับเรา มีการรวมกัน -Great ตอนนี้เราสามารถใช้เวลาทุกลมหายใจสุดท้าย ของอากาศบริสุทธิ์จากดาวเคราะห์ Druidia อะไรกัน? ที่หนึ่งสองสามสี่ห้า ที่หนึ่งสองสามสี่ห้า? ใช่ นั่นเป็นที่น่าตื่นตาตื่นใจ ฉันมีเดียวกัน การรวมกันในกระเป๋าเดินทางของฉัน เตรียม Spaceball 1 สำหรับ ออกเดินทางทันที ใช่ครับ ในอนาคตและการเปลี่ยนแปลง การรวมกันในกระเป๋าเดินทางของฉัน [ประตูปิดเสียง] [CLINK ของประตูตีหมวกกันน็อค] -Ahh [จบการเล่นวิดีโอ] เดวิดเจลัน: นั่นมันสำหรับ CS50 เราจะเห็นคุณในสัปดาห์หน้า บรรยาย: และตอนนี้ลึก ความคิดโดย Daven อัม Daven FARNHAM: การเข้ารหัสใน C เป็น มากยิ่งกว่าที่รอยขีดข่วน printf, Scratch เป็นเรื่องโกหก [หัวเราะ SOUNDBITE]