[เล่นเพลง] ANDI PENG: นี่คือ CS50 และ ยินดีต้อนรับเข้าสู่สัปดาห์ที่สองของส่วน นี้เป็นจริงในขณะที่สัปดาห์ สอง class-- ของเราจริง สัปดาห์แรกที่เราได้มีส่วน แสดงของมือกี่ของคุณทั้งหมด มาถึงส่วนสุดสัปดาห์ที่ผ่านมา? ตกลงที่ตกลง มันโอเค. มีกี่คนที่คุณดู ส่วนสุดสัปดาห์ที่ผ่านมา? ตกลง. และพวกคุณได้ดี เกี่ยวกับปัญหาการตั้งค่าหรือไม่ ดังนั้นฉันจะเอามันที่เรามี พวงของเด็กที่ฉลาดจริงๆ ในชั้นเรียนและสิ่งนี้จะถูกปรับ ตกลง. first-- ดังนั้น ครั้งแรกที่เรากำลังจะเป็นช่วงสั้น ๆ ไปกว่าวาระการประชุมในวันนี้ เราจะพูดคุยเกี่ยวกับโลจิสติกแน่นอน จำนวนมากของคุณอาจ มีคำถามเกี่ยวกับ ว่าสิ่งที่ทำงานในหลักสูตรนี้ เราจะตอบคำถามเหล่านี้ เรากำลังจะไปในเวลาสั้น ๆ ไปกว่าลูปในกรณีที่ ใด ๆ ของพวกคุณพลาดส่วนซุปเปอร์ เราจะพูดคุยเกี่ยวกับการทำแผนที่ ASCII เราจะพูดคุยเกี่ยวกับอาร์เรย์ ฟังก์ชั่นอาร์กิวเมนต์บรรทัดคำสั่ง และในที่สุดสิ่งที่พวกคุณอาจจะทั้งหมด อยากจะอยู่ที่นี่เพื่อเรียนรู้เกี่ยวกับ เป็น pset2 ของคุณ เราจะมีเทคนิคที่ดีบางอย่าง และเคล็ดลับสำหรับวิธีการทำที่ ตกลง. นอกจากนี้ประการที่สองเรามี จำนวนมากของขนมที่นี่ ใครที่ชอบขนม เพียงแค่มาที่นี่ คว้าบางอย่าง ฉันมีพวง เรามีตันในสำนักงาน ฉันไม่ต้องการจริงๆ จะกินขนมตลอดทั้งวัน พวกคุณควรกินขนม, เพราะผมนำมันที่นี่สำหรับคุณผู้ชาย เพียงแค่กินขนม จะมีขนมทุกส่วน ดังนั้นก่อนที่ am I? ชื่อของฉันคือ Andi เป็ง ผมหัว TA ของ CS50 ที่นี่ที่มหาวิทยาลัยเยล และนอกเหนือไปจาก ที่เราจะ be-- ถ้าใครจะ like-- ทำงานของคุณ เพื่อนไหล่ของคุณจะร้องไห้บน หากคืนก่อ​​นเนื่องจาก pset ของคุณ คุณมีความคิดสิ่งที่เกิดขึ้นไม่ได้ ตีขึ้น เราจะเห็นใจกันและอื่น ๆ เพียงแค่รู้ว่าฉันอยู่ที่นี่เป็น ทรัพยากรสำหรับคุณเป็นแนวหน้า คิดในการช่วยให้พวกคุณออกว่า ในการแก้ปัญหาใน CS50 และเกิน อีเมลของฉันคือ andi.peng@yale.edu ฉันยังจะส่งบุคคล ส่งอีเมลที่มีหมายเลขโทรศัพท์ของฉันอยู่ในนั้น เพื่อให้ทุกคนไม่ได้อยู่ที่ อินเทอร์เน็ตสามารถดูหมายเลขโทรศัพท์ของฉัน รู้สึกอิสระที่จะโทรห​​าฉันได้ตลอดเวลา อย่างจริงจังโทรศัพท์ของฉัน มักจะยึดติดอยู่กับมือของฉัน ผมอาจจะไม่ตอบสนอง ภายในไม่กี่นาที ฉันไม่อาจตอบสนองภายในสองสามชั่วโมง แต่ฉันสามารถรับประกันคุณถ้า คุณ e-mail ฉันถ้าคุณเรียกฉัน ข้อความฉันฉันจะตอบกลับภายใน 24 ชั่วโมง บ่อยครั้งที่ผมจะตอบสนองก่อน ว่าเพราะผมเข้าใจ ที่ทุกคนมีปัญหาบางอย่าง และคุณต้องการคำตอบของคุณ ที่จะตอบได้อย่างรวดเร็ว แต่ถ้าคุณเรียก ผม 30 นาทีก่อน ชิ้นส่วนที่เกิดจากว่าวันพฤหัสบดีที่ night-- เป็นเช่น Andi ช่วยฉัน ฉันไม่ได้ started-- ผมอาจจะให้ คุณไหล่ที่จะร้องไห้บน แต่มันอาจจะถึงเวลาที่จะคิดเกี่ยวกับ วิธีการที่จะไม่ทำอย่างนั้นในครั้งต่อไป ตกลง. โอ๊ะ ฉันจะกลับไปได้อย่างไร? เราจะไปที่นั่น. ดังนั้นในหลักสูตรนี้เรามี ตันของการสนับสนุนสำหรับทุกคน นอกจากนี้เพียงแค่ ส่วนที่นี่ซึ่งคุณ ทุกสัปดาห์จะได้รับที่จะใช้จ่าย 90 นาทีที่ยอดเยี่ยมกับฉัน เรายังมีเวลาทำงาน มีกี่คนที่พวกคุณมีอยู่แล้ว เคยไปเวลาทำงานความช่วยเหลือ? ที่ดี นั่นเป็นสิ่งที่ดีจริงๆที่จะเห็นเพราะเรา มีพนักงานกว่า 45 ครูและ CAs ผ่านการฝึกอบรมหลักสูตรที่มีที่นี่ สำหรับการช่วยให้พวกคุณกับ psets ของคุณ วันจันทร์ที่พวกเขากำลังจัดขึ้นในนกเป็ดน้ำ ห้องเรียน 17 Hill House ที่นี่ ที่มหาวิทยาลัยเยล วันอังคารและวันพฤหัสบดี พวกเขากำลังจัดขึ้นในคอมมอนส์ 8:00-11:00 สวยมากทุกวัน มาออกมา ปัญหาใด ๆ ไม่ problem-- เพียงแค่มาใน และจากนั้นเราจะช่วยให้คุณออกมาพร้อมกับที่ ประการที่สองนอกเหนือไปจากเวลาราชการ และส่วนนี้เรายังมีกางเกงขาสั้น มีใครเคยเห็นคู่ของที่ กางเกงขาสั้นหรือเกมส์ในวิดีโอ บนเว็บไซต์ได้หรือไม่ ตกลง. ดังนั้นพวกเขากำลังจริงๆที่เป็นประโยชน์ ที่น่ารักของเราผลิตฮาร์วาร์ ทีมที่นั่นในโรงเรียนที่ ขึ้นไปทางเหนือพวกเขาได้ถ่ายทำและผลิต เหล่านี้วิดีโอแนะนำอย่างไม่น่าเชื่อ พวกเขาจะนำคุณไปทีละขั้นตอนผ่าน ว่าจะไปเกี่ยวกับการแก้ปัญหา บ่อยครั้งถ้าคุณกำลังสับสนเกี่ยวกับ แนวคิดที่เรียบง่ายแนวคิดเอกพจน์ มาดูเพราะเราอาจจะมี สั้น ๆ กับมันอยู่ที่ไหนสักแห่งบนเว็บไซต์ของเรา และก็มักจะเป็นทรัพยากรที่ดี ที่จะมองหาเมื่อคุณครั้งแรก หายไปเกี่ยวกับวิธีการจัดการกับปัญหา ประการที่สามเรายังมี study50 และ reference50 ดังนั้นการศึกษา 50 ใน เว็บไซต์เป็นเพียงการเชื่อมโยง มันเป็นเรื่องที่ผมคิดว่า study.cs50.net หรือสิ่งที่ต้องการ เพียง Google มัน เรามีจำนวนมากของภาพนิ่งเตรียม เรามีกางเกงขาสั้นและ สิ่ง walkthroughs-- ทั้งหมดรวบรวม อย่างดีและเรียบร้อยสำหรับพวกคุณทั้งหมด เพื่อเรียกดูผ่านเห็นแนวความคิดใด ๆ ว่าคุณกำลังสับสนเกี่ยวกับ มันอาจจะได้รับการคุ้มครอง ที่นั่นใน study50 Reference50-- ที่คล้ายกัน เรามีจำนวนมากของการบันทึกต่างๆ พร้อมสำหรับการกำจัดของคุณ และสุดท้ายเรามีสิ่งที่เป็น เรียกว่า CS50 พูดคุย, ฟอรั่มซึ่งถ้าคืนก่อ​​น คุณกำลังทำแก้ปัญหาของคุณพูดว่า คุณมีคำถาม เข้าสู่ระบบเพื่อ CS50 พูดคุย โพสต์คำถามของคุณ และจากนั้นหนึ่งใน hundreds-- บางที thousands-- ของคนรอบข้าง การเรียนออนไลน์นี้จะเข้าสู่ระบบใน และอาจจะมีใครบางคนจะได้รับ คำตอบของคุณก่อนที่จะสามารถ TA มันเป็นหลักเพียง ฟอรั่มออนไลน์ที่เราสามารถทั้งหมด ใช้เพื่อหารือเกี่ยวกับปัญหาของเรา ที่เย็น ตกลง. ปัญหาดังนั้นชุด เราเกี่ยวกับสิทธิใน ความหนาของปัญหาตั้งสอง จำนวนมากเรามีอยู่แล้ว ต่อสู้ผ่านปัญหาตั้งหนึ่ง เรารู้อยู่แล้วว่าบางทีการรอคอย สำหรับคืนที่ผ่านมาในการทำ pset ของคุณ ไม่ได้เป็นสิ่งที่ฉลาดที่สุดที่จะทำใน CS50 เคล็ดลับและเคล็ดลับที่เป็นหลักสำหรับ ความสำเร็จจะอ่านข้อมูลจำเพาะทั้งหมด มีกี่คนที่คุณมีอยู่แล้ว อ่านข้อมูลจำเพาะสำหรับ pset 2? ตกลง. นั่นคือจำนวนเงินที่เป็นของแข็ง ฉันรู้ว่าพวกคุณอาจจะได้รับการยอมรับ โดยขณะนี้รายละเอียดที่มีความยาวจริงๆ พวกเขากำลังจริงๆนานจริงๆ มันเป็นเรื่องยากมากที่จะอ่านทุกบรรทัด ที่ระมัดระวังคำพูดด้วยคำพูด คุณต้องการเพียงแค่หางไปยังที่ที่ มันบอกให้คุณทำบางสิ่งบางอย่าง ฉันสามารถรับประกันคุณไม่ทำอย่างนั้น ถ้าคุณทำเช่นนั้นคุณอาจ จะพลาดที่ไหนสักแห่ง ที่จะบอกคุณ วิธีการเริ่มต้นปัญหา หรือมันจะบอกคุณว่าจะชื่อ ปัญหาของคุณได้หรือมันจะบอกคุณ นี้น่าจะเป็นวิธีที่ดีที่สุด จะเริ่มต้นทำปัญหาของคุณได้ แล้วคุณจะหายไป เมื่อคุณพยายามที่จะอ่านของคุณ spec ผ่านไปครึ่งทาง, เป็นจำนวนมากที่สำคัญ information-- ในการที่คุณไม่ได้ จะสามารถเข้าถึงจริงๆ ดังนั้นการอ่านข้อมูลจำเพาะทั้งหมด ลองอ่านข้อมูลจำเพาะทั้งหมด ก่อนที่คุณจะมาถึงส่วน แล้วเพราะเมื่อเรา พูดคุยเกี่ยวกับ pset ที่ เราทุกคนสามารถมีความคิด ของสิ่งที่เกิดขึ้น ประการที่สองนี้เป็นแนวคิด ที่ผมจะชอบที่จะอ้างอิง เป็นจำนวนมากตลอดภาคการศึกษาการเรียนการสอน แต่เป็นหลักพบเราครึ่งหนึ่งใช่มั้ย? ฉันเป็น TA ของคุณและเจสันสนาม ผู้จัดการและ Scaz เป็นอาจารย์ของคุณ และเดวิดเป็นอาจารย์ของคุณและทั้งหมดของ มาตรฐานการบัญชีฉบับที่น่ารักในหลักสูตรนี้ ผู้ช่วยใน course-- นี้ เราจะทำอย่างดีที่สุด เพื่อให้แน่ใจว่าคุณกำลังตั้ง ถึงจะประสบความสำเร็จในหลักสูตรนี้ เราจะถือส่วน เราจะถือเวลาราชการ เราจะตอบโทรศัพท์ของคุณ โทรตอบอีเมลของคุณ ทำทุกอย่างที่เราสามารถทำได้เพื่อให้ แน่ใจว่าคำถามมีคำตอบ แต่ช่วยให้เราออกมากเกินไป พบกับเราครึ่งหนึ่ง ถ้าคุณมาเวลาทำการ ไม่ได้มีการไปส่วนไม่ได้ ได้เห็นการบรรยายที่มีไม่มี ความคิดสิ่งที่เกิดขึ้นเป็นเช่นช่วยฉัน ฉันจะเป็นเช่นเดียวกับฉันขอโทษ มันอาจจะถึงเวลาที่จะให้ยืม ไหล่ที่จะร้องไห้บน เพราะผมไม่แน่ใจว่า สิ่งที่ฉันสามารถทำได้เพื่อช่วยให้คุณ ถ้าคุณไม่ได้พยายามที่จะช่วยเหลืออย่างน้อย ตัวเองนิด ๆ หน่อย ๆ ในการเริ่มต้น พบกับเราครึ่งหนึ่ง คุณจะรู้ว่าโปรดมา เตรียมที่จะตอบและได้รับ พร้อมที่จะมีส่วนร่วมในวัสดุ มันทำให้สิ่งที่มาก ง่ายขึ้นสำหรับทุกคนที่เกี่ยวข้อง ใช่ว่ามันสวยมาก การจัดลำดับ ดังนั้นในหลักสูตรก็สวย ในเชิงลึกเกี่ยวกับวิธีการที่เราเกรด แต่เป็นหลักสลาย ในครั้งนี้เป็น 50% ของเกรดของคุณ จะเป็น psets ซึ่ง น่ารักเพราะนั่นคือ ที่คุณกำลังใช้จ่ายมากมาย ส่วนใหญ่ของเวลาในการเรียนของคุณ แบบทดสอบ 40% และของคุณ โครงการสุดท้ายจะเป็น 10% จะมีสองแบบทดสอบตลอด หลักสูตรของภาคการศึกษา ผมคิดว่าวันและเวลาที่มี ยังระบุในหลักสูตร วิธีการที่เราจะทำ ได้รับการจัดลำดับ psets ของคุณ คือว่าเรามีสี่หลัก ค่าที่เรากำหนดให้แต่ละเกรด เรามีค่าของขอบเขต ความถูกต้อง, การออกแบบและสไตล์ เพื่อที่คุณจะเห็นว่าเป็นชนิดของเรา สูตรการคำนวณ psets สามเราให้มากที่สุด น้ำหนักให้ถูกต้อง เพราะเห็นได้ชัดว่าโค้ชของคุณ ควรได้รับการทดสอบสำหรับกรณี ที่เราต้องการมันเพื่อทดสอบ พวกคุณมีทั้งหมด check50 ที่จำหน่ายของคุณ มันเป็นฟังก์ชั่นที่มีประโยชน์มาก ที่พวกคุณสามารถทั้งหมด อัพโหลดรหัสของคุณไปยังเซิร์ฟเวอร์ของเรา ที่เราจะตรวจสอบมันสำหรับคุณ และคุณได้เห็นเหล่านั้น ใบหน้าบึ้งใบหน้ายิ้ม พวกเขากำลังจริงๆที่เป็นประโยชน์ กรุณาอย่าเป็น นักศึกษาที่ชอบความพยายาม เพื่อ hardcode ในทุกคำตอบให้กับพวกเขา ผมเคยเห็นแน่นอน pset ที่ ใครสักคนที่เห็นค่าทั้งหมดของ check50 และพวกเขาก็เขียนยากถ้า in-- จำนวนนี้พิมพ์ออกมาจำนวนนี้ ถ้าตัวเลขที่พิมพ์ตัวเลขที่ อย่าทำอย่างนั้น แม้ในทางเทคนิค check50 ถูกต้อง วิธีการของคุณแก้ ปัญหาที่เกิดขึ้นไม่ถูกต้อง ดังนั้นเพียงแค่ใช้ check50 เท่าที่จำเป็น แต่ยังให้แน่ใจว่าคุณ เข้าใจวิธีการที่จะทำงาน โปรแกรมจะทำงาน นอกเหนือไปจาก check50, เพราะเราไม่สามารถทดสอบทุก กรณีที่เป็นไปได้ของ check50 เราจะได้รับการทดสอบบางคน การออกแบบเป็นหลักวิธี ออกแบบมาอย่างดีเป็นรหัสของคุณ? ถ้าคุณเป็นหลายสำเนาวาง บรรทัดของรหัสหลาย ๆ ครั้ง บางทีคุณอาจจะไม่ได้มีค่อนข้าง การออกแบบที่ดีที่สุดในรหัสของคุณ บางทีมันอาจจะถึงเวลาที่จะเพิ่มห่วงว่า เป็นหลักที่นี่เป็นเพียงทั้งหมด เกี่ยวกับการพยายามที่จะทำรหัสของคุณ พยายามที่จะเขียนรหัสของคุณได้อย่างมีประสิทธิภาพ ที่เป็นไปได้เพื่อให้โปรแกรมของคุณทำงาน เร็วที่สุดเท่าที่จะทำได้. สุดท้ายเรามีสไตล์ รูปแบบเพื่อให้เป็นชนิดของ พลคำอัตนัย ฉันรู้ว่าเรามีอย่างเป็นทางการ สไตล์ 50 คู่มือสำหรับ CS50 ที่ ที่จะบอกคุณโอ้คุณ ควรมีพื้นที่ที่นี่ คุณควรชนิดของรูปแบบ รหัสของคุณด้วยวิธีนี้ คุณควรตั้งชื่อสิ่งที่ทางนี้ ฉันไม่สนใจต่อวิธี คุณเลือกที่จะรูปแบบรหัสของคุณ เพียงตราบเท่าที่คุณอยู่สม่ำเสมอ ตัวอย่างเช่นถ้าคุณชอบที่จะ ออกจากพื้นที่หลังจากที่สี่ของคุณ ก่อนสี่วงของคุณ เพียงแค่ทำทุกครั้ง อย่าชนิดของการทำมัน ไม่ทำมันอีกครั้ง ถ้าคุณชอบที่จะให้หยิก พื้นที่จัดฟันวิธีการบางอย่าง เพียงแค่เสมอทำแบบนั้น อย่าทำชนิดของมันบาง และที่นี่ไม่ได้มีที่ใดที่หนึ่ง เมื่อเราจัดลำดับ มันยากจริงๆ ถ้าผมมีความคิดว่าไม่มี คุณกำลังจัดรูปแบบรหัสของคุณ สิ่งที่แปลกประหลาดและนอกสถานที่ หากคุณเพียงแค่ให้มันสอดคล้องก็ ง่ายมากสำหรับฉันเป็นมากขึ้น เพื่อให้สามารถอ่านรห​​ัสของคุณ มันง่ายมากสำหรับคุณเป็นนักเรียน เพื่อให้สามารถมองผ่านรห​​ัสของคุณ และดูว่ามีอะไรผิดปกติกับ มันเฉือนเหตุผลที่มีปัญหา สไตล์เป็นหนึ่งในสิ่งที่ง่ายที่สุด พวกคุณจะทำอย่างไรเพื่อจะได้รับคะแนนเต็ม โดยเฉพาะอย่างยิ่งถ้าคุณเพียงแค่ดูแลถ้า คุณจ่ายห้านาทีของความสนใจ รหัสของคุณทุกสัปดาห์คุณควร จะได้รับคะแนนเต็มรูปแบบ สุดท้ายเรามีสิ่งที่เรียกว่า ตัวคูณขอบเขต Scope-- ฉันรู้ว่ามันใหญ่ คำโดยเฉพาะอย่างยิ่งในชั้นนี้ แต่ขอบเขตทั้งหมดที่หมายถึง คือการที่คุณกำลังพยายาม psets เพื่อที่ดีที่สุดของความสามารถของคุณ หากคุณเปิดในสาม สี่ปัญหาของคุณ และไม่ได้พยายาม สุดท้ายคุณอาจ จะสูญเสียบางจุดในขอบเขต แม้ว่าคุณจะเพียงแค่เริ่มต้นปัญหา ทำดีที่สุดของคุณที่จะเดินผ่านมัน ถึงแม้ว่ามันจะไม่ทำงานเปิดใน เพราะที่แสดงให้เห็นและแสดงให้เห็น ให้เราเห็นว่าคุณกำลังพยายามที่ คุณพยายามที่ปัญหาตั้ง ที่ดีที่สุดของความสามารถของคุณ แล้วเราสามารถให้คุณ จุดที่เต็มรูปแบบสำหรับขอบเขต ขอบเขตเป็นสิ่งที่สำคัญมากสำหรับเราเมื่อ พูดคุยเกี่ยวกับการลดลงต่ำสุด pset คะแนน ดังนั้นในช่วงที่ ภาคการศึกษาที่พวกคุณมีเก้า psets และเราจะจริงจะลดลง คะแนนต่ำสุดจากผู้ที่เก้า แต่ถ้าคุณมีจุดขอบเขต ดังนั้นถ้าคุณเปิดใน pset ไม่สมบูรณ์ น่าเสียดายที่เราไม่สามารถวางที่หนึ่ง เพราะขอบเขตของคุณ จุดที่ได้รับการไม่แล้วเสร็จ ดังนั้นแม้ว่าคุณจะมีสัปดาห์อันยิ่งใหญ่ ที่คุณกำลังจะตายและคุณป่วย หรือสุนัขของคุณตาย, แมวของคุณตาย และคุณมากเกินไปกับบ้าน เพียงแค่พยายามที่ pset ทำมันที่ดีที่สุดของความสามารถของคุณ ถ้ามันไม่ทำงานมันไม่สำคัญ เพียงแค่เปิดใน อย่างน้อยเราก็สามารถให้ คุณชี้สำหรับความพยายาม สำหรับความพยายามในชั้นนี้ อย่างน้อยลดลงคะแนนที่ต่ำที่สุดสำหรับความพยายาม เพื่อใช่ นั่นคือมันสวยมาก ไม่มีใครมีคำถามอื่น ๆ ห่างไกลในวิธีที่เราเกรดในชั้นเรียนหรือไม่ หรือใด ๆ ของเหล่านี้หรือไม่ ใด ๆ เหล่านี้เพื่อให้ far-- ส่วนเวลาทำงาน? เย็น ตกลง. ดังนั้นนี่คือเรื่องที่ไม่มี ใครจริงๆชอบที่จะพูดคุยเกี่ยวกับ ผมไม่ชอบที่จะพูดคุยเกี่ยวกับเรื่องนี้ พวกคุณไม่ต้องการ ที่จะได้ยินฉันพูดคุยเกี่ยวกับเรื่องนี้ แต่น่าเสียดายที่เราทุกคน มีการพูดคุยเกี่ยวกับเรื่องนี้ เดวิดใช้เวลา 20 นาที บรรยายพูดถึงมัน และนั่นคือเรื่อง ของความซื่อสัตย์ทางวิชาการ ดังนั้นเราทุกคนที่นี่อาจจะเขียนได้ บางครั้งการเขียนเรียงความในอาชีพของเราเยล เราอาจจะเคยพูดคุยที่เราได้ รับการบอกว่าจะไม่ได้ขโมยความคิดการเขียนเรียงความของเรา เพราะการทำงานที่ไม่ได้เป็นของเรา ในวิทยาการคอมพิวเตอร์ที่เรามี ชนิดเดียวกันของแนวคิด ทุกงานที่คุณส่ง รหัสทุกสิ่งที่คุณเขียน ควรจะเป็นรหัสที่คุณเขียน ไม่ควรที่จะเป็นรหัสที่คุณได้ คัดลอกมาจากที่อื่น ไม่ควรจะเป็นรหัสที่ คุณได้ googled และ plopped ใน และคุณไม่ทราบจริงๆว่าการทำงาน ชนิดของคุณมีความรู้สึกของ สิ่งที่มันทำ แต่ไม่ได้จริงๆ เมื่อสงสัยเป็นหลัก มันเป็นเพียงแค่จะเหมาะสม ในหลักสูตรของเราเรามี รายชื่อทั้งหมดของสิ่งที่ ที่เราเห็นเป็นที่เหมาะสม เมื่อเทียบกับการไม่เหมาะสม ยกตัวอย่างเช่นที่เหมาะสม เป็นคุณและเพื่อนของคุณ การพูดคุยในสิ่งที่วิธีที่ดีที่สุดที่จะไป เกี่ยวกับเหตุผลในการแก้ปัญหา นั่นคือที่เหมาะสมเป็นธรรม สิ่งที่จะไม่ได้มีเหตุผลคือถ้าคุณ พวกได้ร่วมกันพิมพ์รหัสเดียวกัน และหันในรหัสเดียวกัน ที่ไม่เหมาะสม สิ่งเดียวกันชนิดของการเขียนเรียงความ ถ้าคุณต้องการที่จะหารือเกี่ยวกับ กับเพื่อนของคุณเดี๋ยวก่อน นี่คือสิ่งที่ผมอยากจะเขียนเกี่ยวกับ เหล่านี้เป็นขั้นตอนที่ผมต้องการ ใช้เวลาในการเขียนเกี่ยวกับเรื่องที่ดี นั่นช่างวิเศษสุด ๆ. กรุณาทำงานร่วมกันกับคนอื่น ๆ ถ้าพวกคุณเริ่มต้น เขียนในสิ่งเดียวกัน เปิดในบทความเดียวกันที่ตกลงน้อย ดังนั้นเมื่อมีข้อสงสัยก็ไม่ได้ทำมัน ที่นี่เราใน CS50 เรามีสคริป ที่ทำงานโดยอัตโนมัติในการทดสอบ ไม่เพียง แต่ความถูกต้องของรหัสของคุณ แต่ยังเป็นเอกลักษณ์ของรหัสของคุณ ดังนั้นโปรดอย่าทำให้เราอยู่ในตำแหน่ง ต้องดูกรณีของคุณที่จะเอ็กซ์คอมม์ กรุณาเพียงสำหรับทุกคนให้เพียง ทำให้เรื่องนี้เป็นประสบการณ์ที่ยอดเยี่ยม ทุกคนรู้ดีกว่า เราทุกคนมีความสุข และเรามีการตั้งค่าทั้งหมดขึ้นอยู่กับ ประสบความสำเร็จในหลักสูตรนี้ บางสิ่งบางอย่างที่มาก ที่ไม่ซ้ำกันเกี่ยวกับชั้นนี้ ที่ผมคิดว่าทุกคนควรจริงๆ ให้ความสนใจกับคือว่าเรามี สิ่งที่เรียกว่าเสียใจ ประโยคหนึ่งในหลักสูตรของเรา เพื่อเป็นหลักภายใน 72 ชั่วโมงหาก คุณเชื่อว่าคุณได้ทำบางสิ่งบางอย่าง คุณไม่แน่ใจว่าจริงๆ เหมาะสมโปรดมาให้เรา เราสัญญาว่าภายใน 72 ชั่วโมง เราจะจัดการกับกรณีตัวเอง โดยไม่ต้องหมายถึงที่สูงขึ้น ผู้มีอำนาจในการบริหารงาน ดังนั้นถ้าคุณมาหาฉันและพูดว่า Andi เดี๋ยวก่อนฉันขอโทษจริงๆ แต่ผมคิดว่ามีเส้นคู่ในของฉัน รหัสคืนที่ผ่านมาว่าชนิดของฉัน googled, ได้ออกจากกอง มากเกินคัดลอกและวาง และฉันจริงๆขอโทษจริงๆ เกี่ยวกับที่แจ้งให้เราทราบ กรุณาอย่าเพียงแค่ให้มันเปื่อยเน่า และก็หวังว่าฉันจับมัน เราจะจับมัน เพียงแค่มาหาฉัน แจ้งให้เราทราบภายใน 72 ชั่วโมง เราจะคิดออกวิธีการแก้ปัญหา และเราสัญญาว่าเราจะไม่ได้หมายถึง หน่วยงานในมหาวิทยาลัยเป็นหลัก ดังนั้นจึงเป็นประโยชน์สูงสุดของคุณ เพียงแค่จะซื่อสัตย์กับทุกคน มีส่วนร่วมในการเรียนการสอน ตกลง. ตกลง. ดังนั้นตอนนี้อย่างรวดเร็วก่อนที่ ผมย้ายไปไม่ทุกคน มีคำถามเกี่ยวกับโลจิสติก เกี่ยวกับหลักสูตรวิธีการที่เรากำลังจะไปทำงาน ส่วนวิธีการที่จะไป ในการทำงานใด ๆ ของที่? ตกลง. ใช่ ผู้ชม: [ไม่ได้ยิน] ANDI เป็ง: ใช่ ดังนั้น quizzes-- จำนวนของคุณเป็น ในส่วนจันทร์ / พุธ? กี่คนที่คุณอยู่ใน วันอังคาร / พฤหัสบดี? ตกลงดังนั้นจึงแยกของแข็งที่นี่ ดังนั้นวิธีการที่เราเรียกใช้ ที่มหาวิทยาลัยเยลมันคือการที่เรา จะมีสองแยก quizzes-- หนึ่งสำหรับ section-- แต่ละที่ จะได้รับในชั้นเรียน ฉันคิดว่ามันตุลาคมท้ายของเดือนตุลาคม สิ่งที่ต้องการที่เป็นหนึ่งสัปดาห์ ของแบบทดสอบ ใช่เพียงเพื่อมาในชั้นเรียน เมื่อวันที่จันทร์หรือวันพุธ คุณจะใช้เวลาตอบคำถาม เมื่อวันที่วันอังคารหรือวันพฤหัสบดี คุณจะใช้แบบทดสอบที่แตกต่างกัน แต่วัสดุเดียวกับที่จะได้รับการคุ้มครอง ใช่ คำถามที่ดี. ใช่ ผู้ชม: เราจะอยู่ที่ไหน ไปตรวจสอบเกรดของเราหรือไม่ ANDI เป็ง: ใช่ ดังนั้นผมจึงจะส่งออก อีเมลสิ่งที่ในแต่ละสัปดาห์ เมื่อเป็นแบบทดสอบ graded-- หรือ ขออภัยเมื่อ psets มีคะแนน Psets มักจะมีการเปิด ในตอนเที่ยงหรือศุกร์ ดังนั้นผมสัญญาว่าผมจะ พยายามที่จะได้รับพวกเขากลับมาให้คุณ ตอนเที่ยงของวันศุกร์ที่ดังต่อไปนี้ เมื่อใดก็ตามที่ผมเกรด pset ผมจะส่ง การแจ้งเตือนเกี่ยวกับการออกหนังสือชั้นที่ ที่จะบอกคุณคะแนนของคุณ สามารถดูออนไลน์ ดังนั้นสิทธิในสัปดาห์นี้หลังจากที่ผม เสร็จสิ้นการจัดลำดับ psets สัปดาห์ที่ผ่านมา พวกคุณจะได้รับอีเมล แจ้งเตือนบอกคุณ เดี๋ยวก่อนนี่คือที่คุณ ไปดูการเรียนของคุณ และคุณสามารถเห็นทุก รายละเอียดของการเรียนของคุณ คุณสามารถเห็นความคิดเห็น โอ้สิ่งที่ได้อย่างรวดเร็วนอกจากนี้ยังมี ส่วนความคิดเห็นในที่ดี หนังสือเล่มนี้เป็นที่ที่ผมอาจจะ ใช้เวลาส่วนใหญ่ของการจัดลำดับเวลาของฉัน ดังนั้นสิ่งหนึ่งที่เป็น เมื่อสิ่งที่สำคัญจริงๆ พวกคุณกำลังดู เกรดของคุณใน psets ของคุณ ไม่ได้เป็นเพียงมอง ที่คะแนนทางกายภาพ แต่ยังสละเวลาในการ จริงๆอ่านความคิดเห็นของฉัน บ่อยครั้งที่ช่วยให้คุณข้อเสนอแนะ เกี่ยวกับวิธีการที่คุณกำลังแก้ปัญหา ถ้าคุณต้องการที่จะทำ บางสิ่งบางอย่างได้ดีขึ้นเล็กน้อย, การวิจารณ์ที่สร้างสรรค์โดยปกติจะเป็น รับที่ดีที่สุดในบรรดาส่วนความเห็น ดังนั้นโปรดกรุณาฉันจะ ที่จะใช้เวลาในการเขียนแสดงความคิดเห็น กรุณาผมอยากจะขอบคุณ ถ้าพวกคุณจะอ่านความคิดเห็นเหล่านั้น ตกลง. เย็น ทั้งหมดขวา ดังนั้นเรากำลังจะเริ่มต้นการพูดคุย และเพียงแค่การตรวจสอบได้อย่างรวดเร็ว บางส่วนของวัสดุจาก สัปดาห์ที่ศูนย์เพียงเพื่อให้เรา บนหน้าเว็บที่เหมาะสมสำหรับ จุดเริ่มต้นของปัญหาที่เกิดขึ้นในสัปดาห์นี้ ดังนั้นห่วงในขณะที่เป็นหนึ่ง ของสามประเภทของลูป เรากล่าวก่อนหน้านี้ในชั้นนี้ ห่วงในขณะที่หลัก เขียนในไวยากรณ์ ที่ในขณะที่เงื่อนไขบางอย่าง ทำเช่นนี้ซ้ำแล้วซ้ำอีกใช่มั้ย? คิดว่ามันเป็นภาพกราฟิกที่นี่ คุณกำลังจะเริ่มต้นที่ จุดหนึ่งในรหัสของคุณ คุณกำลังจะเข้าสู่สภาพห่วง if-- ฉันไม่ know-- x น้อยกว่าหนึ่ง หากเป็นความจริงที่คุณกำลังจะ การดำเนินการของร่างกายห่วง และคุณกำลังจะให้ทำ อีกครั้งอีกครั้งอีกครั้ง มากกว่าและ over-- ซึ่งเป็นเหตุผลที่มันเป็น loop-- จนสภาพของคุณจะกลายเป็น เท็จ ดังนั้นในทางนี้วงในขณะที่ เป็นหนึ่งในวิธีที่ง่าย ในการเขียนการจัดเรียงของเงื่อนไขใด ๆ ที่ ความต้องการที่จะทำซ้ำมากกว่าและเหนือและมากกว่า เพียงระมัดระวังเมื่อใดก็ตามที่ คุณกำลังเขียนเรียงลำดับของห่วงใด ๆ ว่าคุณมีสภาพเป็นทางออก รวมทั้งการปรับปรุงสิ่งที่มัน เพื่อให้วงของคุณไม่เพียง เรียกใช้ซ้ำแล้วซ้ำอีกเพียบ ในกรณีใด ๆ ที่คุณกำลังจะ เพื่อต้องการให้แน่ใจว่า ที่คุณกำลังจะเปลี่ยนมุมมองของบางอย่าง รหัสของคุณหรือที่ส่วนท้ายของวง เพียงเพื่อให้แน่ใจว่าคุณมีวิธี ของความคืบหน้าไปสู่​​สภาพ ที่คุณต้องการที่จะตอบสนองความต้องการที่จะจบ ไม่ว่าทำให้ความรู้สึกที่ทุกคน? เราก็ไม่ได้ต้องการที่จะเป็น ติดอยู่ในเกลียวที่นี้ ที่เราจะไปรอบ ๆ และรอบ ๆ และ มีวิธีที่จะทำลายห่วงไม่มี และห่วงทุกหลัก มีวิธีการทำที่ ตกลง. ประการที่สองหลายท่าน ใน psets มาริโอของคุณ อาจจะมีการจ้างงาน ประเภทของวงนี้ มันถูกเรียกว่าทำในขณะที่ห่วง แรกของทุกทุกคนสามารถบอก สิ่งที่แตกต่างระหว่างสิ่งที่ต้องทำที่ ในขณะที่ห่วงและห่วงในขณะนั้นคืออะไร? ใช่ ผู้ชม: สิ่งที่ต้องทำในขณะที่ห่วง ทำงานที่แรก [ไม่ได้ยิน] ANDI เป็ง: ใช่ว่า ดังนั้นในขณะที่ทำห่วงเสมอไม่สิ่งที่ ที่อยู่ภายในทำภายในวงเล็บ และไม่มีเงื่อนไขที่ว่า ก่อนที่จะตรวจสอบการขอโทษ the--, ไม่ว่าก่อนที่รหัส ตรวจสอบสภาพ และโดยเฉพาะอย่างยิ่งที่เกี่ยวข้องกับเรา ที่นี่ในชั้นนี้เพราะเวลาส่วนใหญ่ เรากำลังจะต้องการที่จะแจ้งให้ ผู้ใช้สำหรับการเรียงลำดับของการป้อนข้อมูลบางส่วน และจากนั้นก็ขึ้นอยู่กับ การป้อนข้อมูลที่พวกเขาให้เรา แล้วเราสามารถประเมินโอ้ทำ เราจำเป็นต้องให้พวกเขาอีกครั้งหรือไม่ ดังนั้นในมาริโอหากผู้ใช้ให้คุณ ความสูงเชิงลบเช่น คุณกำลังจะไปพร้อมรับคำแรก และทำสิ่งที่อยู่ภายใน แล้วคุณกำลังจะไปตรวจสอบในขณะ คุณจะรู้ว่าเป็นลบ 1, คือจำนวนบวก? หากยังไม่ได้ผมจะไป กลับมาและทำซ้ำทำและทำซ้ำ และทำซ้ำและทำซ้ำจนกว่าพวกเขา ในที่สุดก็ทำให้คุณมีหมายเลขที่คุณชอบ ที่เราทุกคนสามารถใช้ในรหัสของเรา มันเป็นสิ่งสำคัญสวย เป็นหลักผู้ใช้ป้อนข้อมูลใด ๆ ฉันสามารถรับประกันคุณ ๆ เวลาอยู่ใน pset ที่ เราขอให้คุณป้อนข้อมูล การเรียงลำดับของรหัสใด ๆ เรา อาจจะทำให้คุณ กรณีทดสอบที่เรากำลัง จะให้สิ่งที่ไม่ดีที่ จะพยายามที่จะทำลายรหัสของคุณ ถ้าเราพยายามที่จะขอให้คุณใส่ จำนวนเต็มเราก็อาจทำให้คุณสตริง และดูว่าคุณจะจัดการที่ ถ้าเราขอให้คุณจ้างอายุ, เราอาจจะให้คุณเป็นจำนวนลบ เพื่อดูว่าคุณจะจัดการที่ เพียงให้แน่ใจว่าพวกคุณกำลังทดสอบสำหรับ ในกรณีที่คุณไม่ได้รับที่ดีที่สุด การป้อนข้อมูลให้เพียงกล่าวว่า และทำในขณะที่ห่วง คืออาจเกิดสิ่งที่ดีที่สุด วิธีการออกแบบรหัสของคุณเพื่อให้ ให้เป็นไปตามขอบเขตที่ ตกลง. ตกลง. ดังนั้นนี่คืออาจจะมากที่สุด ห่วงซับซ้อนออกจากสาม ที่เราได้มองไปที่เพื่อให้ห่างไกล และดูเหมือนว่าน่ากลัวมากในตอนแรก แต่ผมรับประกันคุณเมื่อพวกคุณ ได้รับการแขวนของวิธีการใช้สำหรับห่วง มันเป็นหนึ่งในสิ่งที่มีประโยชน์มากที่สุด เครื่องมือที่มีประโยชน์มากที่สุดในคลังแสงของคุณ สำหรับก้าวไปข้างหน้าในชั้นนี้ ดังนั้นสำหรับตัวอย่างเช่นในเกา เรามีบล็อกนี้ง่ายมาก ที่กล่าวว่าเพียงแค่ทำซ้ำบางนี้ วลีจำนวนครั้ง โดยวิธีการที่ SAJ-- ที่ Scaz Andi เจสัน เรามักจะเข้าใช้งานอีเมล์ของเรา SAJ ถ้าเราบอก SAJ ไม่ต้องสับสน นั่นเป็นเพียงเรา ดังนั้นในเกาเราก็สามารถที่จะมี บล็อกที่กล่าวว่าฉันรักซ้ำ SAJ กัน! 10 ครั้ง. ง่ายมาก. ตรรกะที่อยู่เบื้องหลังที่เป็น มากง่ายมากใช่มั้ย? ฉันต้องการที่จะเป็นครั้งแรกผ่านไปครั้งแรก เวลาและเห็นว่าเป็นครั้งที่สอง และเห็นว่าครั้งที่สามอื่น ๆ และอื่น ๆ จนกว่าคุณจะตี 10 และวิธีที่เราจะแสดงให้เห็นว่าใน รหัสผ่านเป็นเพียงที่ง่ายสำหรับวง ดังนั้นคุณจะต้องประกาศ ตัวแปรของคุณที่นี่ในกรณีนี้ กับเป็น int เราจะตั้งชื่อมันฉ​​ัน เรากำลังจะเริ่มต้นมันเป็น 0 และรุ่นที่มีการหยุด จะเป็นฉันน้อยกว่า 10 และการปรับปรุงเป็นไปได้ผม ++ และภายในวงก็จะ ในการดำเนินการจนในที่สุดมัน ฮิตในตอนท้ายของสภาพที่ในที่ กรณีที่มันจะทำลายห่วง ควรจะมีสิ่งที่คุณ คนได้เห็นของทุกชนิดก่อน และมีการทำสำหรับปัญหาของคุณตั้งหนึ่ง ไม่มีใครมีคำถามใด ๆ เกี่ยวกับวงตอนนี้? ตกลง. ที่ดี ตกลง. ดังนั้นสำหรับบรรดาของคุณที่มี อ่านข้อมูลจำเพาะ pset สำหรับสัปดาห์นี้ รู้ว่าเรากำลังจะมีการจ้างงาน สิ่งที่เรียกว่า ASCII และโต๊ะ ASCII ดาวิดในการบรรยายเดินไปในเวลาสั้น ๆ วิธีการทุกอย่างคอมพิวเตอร์ essentially-- มีการเข้ารหัสในคอมพิวเตอร์ใน ไบนารีในศูนย์และคน และวิธีการที่คอมพิวเตอร์จะสามารถ ในการจัดเก็บค่าที่แตกต่างกันนอกจากนี้ ไปศูนย์และคนจะผ่านการทำแผนที่ ตัวเลขเหล่านั้นจะเป็นตัวแทนของตัวเลขอื่น ๆ หรือตัวละครอื่น ๆ เป็นหลัก ดังนั้นในกรณีนี้ ASCII table-- ทั้งหมดมันไม่ เป็นตัวละครที่แผนที่หรือตัวอักษรเพื่อให้ตัวเลข ดังนั้นแฟ้มรหัสต้นฉบับใน computer-- เห็นของคุณ เดี๋ยวก่อนพวงของศูนย์และคนที่ ศูนย์และคน, ศูนย์และคน นั่นคือสิ่งที่เก็บไว้ใน หน่วยความจำที่แท้จริงของเครื่องคอมพิวเตอร์ของคุณ แต่เมื่อมนุษย์เราต้องการ สื่อสารกับคอมพิวเตอร์ เรา want-- พูดยกตัวอย่างเช่น ถ้าผมต้องการพิมพ์ใหญ่, ฉันจะต้องมีวิธีบาง บอกคอมพิวเตอร์โอ้ เมื่อฉันชนิด A พิมพ์ใหญ่ผมหมายถึง เป็นตัวแทนในไบนารี ดังนั้นวิธีที่เราทำที่โยน สิ่งที่เรียกว่าพลตาราง ASCII ที่ ที่เราเป็นมนุษย์เป็น โปรแกรมเมอร์เวลาที่ผ่านมาบางส่วน พลเราตัดสินใจว่าเรา กำลังจะกำหนดหมายเลขเหล่านี้ ค่าตัวละครเหล่านี้ ดังนั้นพวกคุณสามารถ google ออนไลน์นี้ ผมคิดว่ามีการเชื่อมโยงกับมันในของคุณ pset-- เพียงตารางแผนที่ ASCII, ASCII ตาราง. มันก็แปลไบนารี ตัวเลขเป็นตัวอักษร และมันก็เป็นไปได้มาก ชุดที่มีประโยชน์สำหรับปัญหาของคุณได้ เมื่อใดก็ตามที่คุณต้องการ คำนวณอะไรหรือถ้าคุณ ต้องการแสดงบางอย่าง ตัวอักษรหรือจำนวนเต็ม หรือจัดการกับตัวอักษรบางอย่าง มันเป็นไปได้มาก สิ่งสำคัญที่คุณทั้งหมด รู้วิธีที่จะนำทางตาราง ASCII ดังนั้นตัวอย่างเช่นพิมพ์ใหญ่ก เป็นตัวแทนจากจำนวน 65 และตัวพิมพ์เล็ก เป็นตัวแทนจาก 97 จึงเป็นสิ่งสำคัญที่จะรู้ว่า ความแตกต่างระหว่างสองค่า เป็น 32 บ่อยครั้งถ้าคุณจำเป็นต้องแปลงจาก หนึ่งไปยังอีกที่แตกต่างกันคือ 32 และไม่ต้องกังวลถ้าคุณเป็นประเภท ของความสับสนเกี่ยวกับเรื่องนี้ในตอนแรก เราจะไปกว่าวิธีการที่เราจะ จ้างนี้ในรหัสที่เกิดขึ้นจริง ตกลง. ดังนั้นสำหรับบรรดาของคุณกับแล็ปท็อปออก อย่าลังเลที่จะดึงตาราง ASCII ที่ เพราะสิ่งเหล่านี้อาจจะ พวกคุณต้องใช้เพื่อการอ้างอิง สิ่งที่ตัวละคร ตกลง. ดังนั้นการรู้ว่าบางอย่าง ตัวอักษร map กับตัวเลขบางอย่าง ถ้าผมจะเรียกใช้เพียงครั้งแรก สายที่ code-- printf ที่ ตัวพิมพ์เล็กเป็นลบ พิมพ์ใหญ่เอไม่มีใคร มีการคาดเดาในสิ่งที่จะเป็น พิมพ์ออกจากหน้าจอตอนนี้? ดังนั้นครั้งแรกของทุกสิ่งที่ไม่ ตัวพิมพ์เล็กแทน? หมายเลขอะไรคือสิ่งที่ เข้ารหัสในตารางแอสกี ขออภัย? ผู้ชม: 97? ANDI PENG: 97 ที่ดี และสิ่งที่เป็นตัวพิมพ์ใหญ่หรือไม่? ผู้ชม: 65 ANDI PENG: ดังนั้นสิ่งที่เป็นลบ 97 65? ผู้ชม: 32 ANDI PENG: OK ดังนั้นสิ่งที่พวกคุณคิดว่าเป็นไปได้ เกิดขึ้นเมื่อฉันป้อนข้อมูลที่บรรทัดของรหัส ลงในคอมพิวเตอร์ของฉันได้อย่างไร ผู้ชม: [ไม่ได้ยิน] ANDI PENG: ขออภัยพูดขึ้น ไม่ต้องห่วง. นี้เป็นความปลอดภัยมาก สภาพแวดล้อมการลบกล้อง เราทุกคนจะ to-- ไม่ต้องกังวล เพียงแค่เราทุกคนจะชอบแกล้ง มันเป็นเพียงแค่เราหนาวในห้องนี้ ไม่ต้องห่วง. ไม่มีคำถามโง่เกินไป ไม่มีคำตอบเป็นคำตอบที่โง่ ฉันอาจจะทำผิดพลาด ในหลักสูตรการเรียนการสอนของฉัน อย่างจริงจังคนเพียงแค่พูดโพล่งออกมา จะมีความมั่นใจในตัวเองคุณรู้หรือไม่? ดังนั้นสิ่งที่เป็นที่? ที่บอกว่าคำตอบที่ผ่านมา? ตกลง. ตะโกนที่ดีและชัดเจน ผู้ชม: 32? ANDI PENG: 32 ตกลงให้ใช้รหัสนี้และ ดูว่าสิ่งที่เกิดขึ้น ตกลง. ดังนั้นในขณะที่พวกคุณสามารถชนิดของ เห็นสัญกรณ์โดยทั่วไปฉัน การตั้งค่าที่นี่สำหรับวิธีการที่เราจะจ้าง การเรียงลำดับของโปรแกรมในเครื่องคอมพิวเตอร์ของเราใด ๆ เรามีฟังก์ชั่นหลักของเรา ภายในฟังก์ชั่นหลักของเรา ฉันแค่จะคัดลอกและ วางบรรทัดของรหัสนี้ นอกจากนี้จะต้องระมัดระวังในการที่พวกคุณ มีการคัดลอกและวางรหัส บางครั้งผู้ประกอบการบางอย่าง ไม่วางมากกว่าได้อย่างถูกต้อง ในกรณีที่ลบ สัญญาณที่เป็นจริงเส้นประ และเพื่อให้คอมพิวเตอร์ไม่ได้รับมันได้ ดังนั้นผมจึงต้องกลับไป ร่างกายอีกครั้งว่า เพียงระมัดระวังเมื่อ พวกคุณกำลังทำว่า ตกลง. เรากำลังจะไปทำงานที่นี่ ดังนั้นเรากำลังจะลงในแผ่นซีดี section2 ของเรา ผมเคยเรียกว่าโปรแกรมนี้ asciimath ดังนั้นจำเมื่อเราทำงานใด ๆ โปรแกรมเราต้องการที่จะรวบรวมมันเป็นครั้งแรก โดยการทำงานผ่านทำให้เรา แล้วเราต้องการที่จะทำงานจริง โปรแกรมโดยทำจุดเฉือน ดังนั้นเราจึงกำลังจะ ./asciimath ขวามีที่เราจะไป และเราจะเห็น 32 ทำได้ดี. คุณสมควรได้รับชิ้นส่วนของลูกอม ขนมสำหรับคุณ ขอโทษ ทั้งหมดขวา ตกลง. ดังนั้นเราจึงสามารถกลับไปที่ตัวอย่างของเราที่นี่ แอ๊ะไม่ แอ๊ะ ตกลง. ฉันแค่ไปที่จะให้มันเป็นแบบนั้น ตกลง. ตกลง. ดังนั้นในขณะที่พวกคุณสามารถดูที่เราสามารถทำได้ จำนวนมากสิ่งที่น่าสนใจมาก จำนวนมากของสิ่งที่เย็นมากมาก สิ่งที่ซับซ้อนมากที่เกี่ยวข้องกับ อักขระ ASCII และตัวเลข เมื่อคุณได้รับลงไปเข้าแถวห้า ที่มากที่จะปฏิบัติตามตาม เราไม่ได้จะไป ผ่านส่วน รู้สึกอิสระที่จะถ้าคุณสามารถ เหตุผลมันออกมาบนกระดาษ เป็นครั้งแรกในสิ่งที่ควรจะเกิดขึ้นเมื่อ คุณป้อนเช่นสตริงของค่า ยกตัวอย่างเช่นในบรรทัดสุดท้ายที่เรามี z-- ซึ่งหมายถึง number-- บางอย่าง a-- ซึ่งยังแสดงให้เห็นถึง number-- บางบวก 1 modulos 26 รวมทั้งตัวพิมพ์เล็ก ถ้าพวกคุณให้อ่าน ผ่านเหล่านี้คุณ อาจจะเห็นรูปแบบที่เกิดขึ้นใน วิธีการที่เรากำลังจัดการรหัส ผมขอ, ขอแนะนำ ส่วนหลังจากที่ทุกท่าน พวกไปข้างหน้าและการป้อนข้อมูล เหล่านั้นทั้งหมดในเครื่องคอมพิวเตอร์ของคุณ และดูสิ่งที่ชนิดของ ตัวเลขที่ออกมา และเหตุผลว่าทำไมผ่านเหล่านั้น ที่เกิดขึ้นเพราะ psets ของคุณ มันจะเป็นสิ่งที่สำคัญจริงๆ สำหรับคุณที่จะเข้าใจ ทำไมบางสิ่งบางอย่างที่จะเกิดขึ้น ทั้งหมดของภาพนิ่งเหล่านี้จะออนไลน์ ดังนั้นไม่ต้องกังวลเกี่ยวกับการพยายามที่จะ ร่างกายคัดลอกลงบันทึก ทุกอย่างออนไลน์ ส่วนนี้เองจะออนไลน์ รหัสแหล่งที่มาทั้งหมดของฉันที่ ผมทำงานจะออนไลน์ ใช่ คุณยังคงมีคำถาม? ผู้ชม: modulos คืออะไร? ANDI PENG: OK ดังนั้นโมดูโลเป็นผู้ดำเนินการที่จะไปยัง เป็นสิ่งที่สำคัญสวย pset ผู้ชายของคุณ ที่นี่ ดังนั้นวิธีการที่ผู้ประกอบการ ใน C และในการทำงานการเขียนโปรแกรม คือการที่คุณมีสิ่งที่เรียกว่า ส่วนสัญลักษณ์และสัญลักษณ์โมดูลัสที่ ซึ่งเป็นเช่นเดียวกับเครื่องหมายเปอร์เซ็นต์ ดังนั้นใน C, เมื่อคุณทำจำนวนเต็ม โดยแบ่งออกเป็นจำนวนเต็มด้วยการเฉือน, C มีแนวโน้มที่จะต้องการที่จะตัด ปิดทุกจุดทศนิยม เพราะต้องการคำจำนวนเต็ม แปลงเป็นจำนวนเต็ม มันจะไม่ต้องการที่จะเป็นคู่ กับพวงของทศนิยมทั้งหมดหลังจากนั้น ดังนั้นถ้าผมทำ 3 หารด้วย 2 ก็จะ ตัด 0.5 และเพียงแค่ให้คุณ 1 นั่นคือสิ่งที่จะ ระมัดระวังเมื่อคุณอยู่ ทำเรียงลำดับของคณิตศาสตร์ใด ๆ ในการเขียนโปรแกรม คือว่าตัวเลขที่คุณได้รับ อาจจะไม่เป็นตัวเลข ที่คุณคิด ซึ่งเป็นเหตุผลในการปัดเศษของคุณ pset ที่ผ่านมาเป็นสิ่งสำคัญดังนั้น Modulo ช่วยให้คุณมีส่วนที่เหลือ ดังนั้นสำหรับตัวอย่างเช่นถ้าผมทำ 3 โมดูโล 2-- เพื่อเข้าสู่ระบบร้อยละ 3 2-- มันจะทำให้คุณเหลือของว่า ดังนั้น 3 โดยแบ่งออกเป็น 2 คือ 1.5 มันเป็น 1 ที่เหลือของ 1 มันจะให้คุณ 1 ซึ่ง เป็นส่วนที่เหลือจากการที่ ดังนั้นเมื่อพวกคุณกำลังจะย้าย ผ่านโต๊ะ ASCII ที่ โมดูโลจะจบลงด้วยการ สิ่งที่สำคัญมาก และเราจะหารือว่าในภายหลัง ตกลง. ดังนั้นสิ่งที่สวย สวยใหม่ไม่ซ้ำใครสวย ที่เราได้พูดคุยกันในสัปดาห์นี้คือ แนวคิดของสิ่งที่อาร์เรย์คือ อาร์เรย์ดังนั้นเป็นครั้งแรก ชนิดของโครงสร้างข้อมูล ที่เรากำลังจะไป พบในชั้นนี้ โครงสร้างข้อมูลทั้งหมดจะเป็น การจัดเรียงของบางอย่างโดยพลการ แท้จริงสิ่งที่ต้องการโครงสร้าง ว่าเราเป็นโปรแกรมเมอร์ได้สร้าง ที่เราได้ใส่ในรหัสของเราที่ สามารถมีชิ้นอื่น ๆ ของรหัส ดังนั้นในแง่นี้การ array-- คิดว่ามันเป็นตู้เอกสาร, ซึ่งถ้าคุณเปิดที่แตกต่างกัน ชั้นวางของตู้เก็บแฟ้มของคุณ คุณสามารถเข้าถึงสิ่งที่แตกต่าง ในหน่วยความจำอาร์เรย์เป็นเพียงการทำ สิ่งเดียวกันในคอมพิวเตอร์ของคุณ คุณสามารถมีเรา blocks-- ที่แตกต่างกัน เรียกพวกเขา indices-- ของอาร์เรย์ ก็เช่นเดียวกับบล็อก ชั้นวางของหน่วยความจำ ที่เราได้สร้างขึ้นภายในของคุณ คอมพิวเตอร์ที่คุณสามารถป้อน บางสิ่งบางอย่างในพื้นที่ที่แตกต่างกัน ดังนั้นด้วยอาร์เรย์คุณ มักจะมีการ specify-- คุณต้องระบุประกาศ อาเรย์ในรูปแบบดังต่อไปนี้ คุณกำลังจะเป็นครั้งแรก ระบุชนิดของข้อมูล ที่คุณต้องการที่จะสร้างของอาร์เรย์ หากต้องการอาร์เรย์ของจำนวนเต็ม, ฉันจะใส่ int มีสิทธิ หากต้องการอาร์เรย์ของสตริงที่ ฉันจะวางสายที่นั่น ชื่อของอาเรย์ของคุณแล้ว คุณกำลังจะมีวงเล็บ และภายในวงเล็บคุณ จะมีขนาดของอาร์เรย์ของคุณ สิ่งที่สำคัญมากที่จะ เก็บไว้ในใจเมื่อมีการสร้างอาร์เรย์คือ ว่าเมื่อคุณสร้าง อาร์เรย์ขนาดที่ไม่สามารถเปลี่ยนแปลงได้ ดังนั้นถ้าคุณรู้ว่าตอนนี้ คุณมีอาร์เรย์ของขนาด 10, คุณรู้ไหมว่าฉันจะมี 10 เซลล์ ภายในหรือ 10 ดัชนีภายในอาร์เรย์นี้ และก็ไม่เคยไป เพื่อขยายหรือลดน้อยลง ไม่ว่าสิ่งที่และที่มี ขณะนี้เพียง 10 บล็อกของพื้นที่ จัดสรรในหน่วยความจำของคุณที่สามารถจัดเก็บ ถึง 10 สิ่งที่สิ่งที่คุณได้ใส่ ดังนั้นในทางนี้ชนิดข้อมูลอาร์เรย์ โครงสร้างข้อมูลที่เป็นอาร์เรย์ จะแตกต่างจากคนอื่น ๆ บางอย่างที่เราจะ ครอบคลุมในภายหลังในหลักสูตรนี้ ใช่ ตัวอย่างเช่นถ้าคุณต้องการที่จะ สร้างอาร์เรย์ขนาด 3 ที่ มีตัวแปร integer-- โอ้ขอโทษของ temperature-- และอุณหภูมิของ แน่นอนเป็นจำนวนเต็ม ดังนั้นเราจะสร้าง int ซึ่งเป็น ชนิดข้อมูลของสิ่งที่เราต้องการในการจัดเก็บ เรากำลังจะไปเรียกอุณหภูมินี้ เพื่อประโยชน์ของการตั้งชื่อของการตั้งชื่อ สิ่งที่เราทุกคนเข้าใจ และเรากำลังจะมีวงเล็บ และเราต้องการสามตัวเลข ดังนั้นเราจะใส่ สามภายในของมัน สิ่งที่เป็นจริง สิ่งสำคัญที่จะเก็บไว้ในใจ คืออาร์เรย์เป็นศูนย์การจัดทำดัชนี ทั้งหมดที่หมายถึงคือคุณ เริ่มต้นด้วยดัชนีของ 0, และคุณวิ่งผ่าน ขนาดของอาร์เรย์ลบ 1 ดังนั้นตัวอย่างเช่นที่นี่เรา มีอาร์เรย์ขนาด 3 มันเป็นไปได้ที่จะสามารถ จะถือสามค่า แต่ตัวเลขที่ themselves-- จำนวนอาร์เรย์ดัชนีที่ อาร์เรย์เป็น 0 ถึง 2 ดังนั้นพวกจริงๆระมัดระวังจริงๆเมื่อ คุณกำลังจะผ่านปัญหาของคุณตั้ง และการสร้างการจัดเรียงของอาร์เรย์ใด ๆ เพราะหลายครั้งที่มัน จริงๆเรื่องง่ายที่จะลืมว่า ที่จริงผมไม่ได้มีดัชนี 3 ที่ฉันกำลังเพียง มีดัชนีของ 2 และถ้าคุณพยายามที่จะ เข้าถึงดัชนีที่สาม มันจะเป็นสิ่งที่ ที่เรียกว่าเทอร์มิ null มันจะไม่จริง อยู่ในอาร์เรย์ และคอมพิวเตอร์อยู่ จะไม่ชอบที่ ดังนั้นควรระมัดระวังเมื่อใดก็ตามที่ คุณเข้าถึงสิ่งเพียง เพื่อให้แน่ใจว่าคุณจำได้ อาร์เรย์ที่จะเป็นศูนย์การจัดทำดัชนี ตกลง. ดังนั้นตัวอย่างแรกเป็นเพียง วิธีหนึ่งในการสร้างอาร์เรย์ ตัวอย่างที่สองฉันมี ด้านล่างเป็นเพียงวิธีที่แยกต่างหาก ของการสร้างสิ่งที่เป็นข้อมูลเดียวกัน โครงสร้างที่เราได้เพียงแค่ป้อน ดังนั้นแทนที่จะร่างกายทำงาน ผ่านและวางในอุณหภูมิ 0 เท่ากับสิ่งที่อุณหภูมิ 1 เท่ากับสิ่งที่อุณหภูมิ 2 เท่ากับ สิ่งที่ฉันสามารถทำได้จริงเพียง โดยตรงสร้างทุกอย่างไว้ในหนึ่งบรรทัด เข้าไปในวงเล็บอุณหภูมิเท่ากับ และแจ้งให้ทราบล่วงหน้าในกรณีนี้คุณไม่จำเป็นต้อง เพื่อระบุว่าใหญ่อาร์เรย์ของคุณคือ เนื่องจากคอมพิวเตอร์จะ ผ่านไปและดูว่ามี สามองค์ประกอบในวงเล็บปีกกาเหล่านั้น และก็จะรู้ว่าตกลง ฉันต้องอาร์เรย์ขนาด 3 คุณจะไม่จำเป็นต้อง ป้อนข้อมูลทางต่อไปนี้ และยังใช่วิธีการที่ ไม่มีใครมีคำถาม เกี่ยวกับวิธีการที่เราทำอาร์เรย์ หรือวิธีการที่โครงสร้างของอาร์เรย์ทำงานอย่างไร ใช่ ผู้ชม: [ไม่ได้ยิน] ANDI เป็ง: ใช่ว่า ดังนั้นถ้าคุณมีการประกาศและเริ่มต้น อาร์เรย์วิธีการดังต่อไปนี้, ซึ่งเป็นวิธีที่สอง คุณก็สามารถปล่อยให้ผู้ที่ และคอมพิวเตอร์ โดยอัตโนมัติรู้ว่ามัน ความต้องการที่จะนับจำนวนองค์ประกอบ อยู่ในวงเล็บปีกกาเหล่านั้นแยกออกจากกัน ด้วยเครื่องหมายจุลภาค ดังนั้นที่นี่พวกเขาเห็น 65, 87, 30 เพื่อให้คอมพิวเตอร์รู้โอ้ มีสามจำนวนเต็ม ฉันรู้ว่าการสร้างชื่ออาร์เรย์ อุณหภูมิที่มีสามองค์ประกอบในนั้น คำถามที่ดี. ใช่ ผู้ชม: มันไม่ได้เป็นไปได้ที่จะสร้าง อาร์เรย์กับชนิดของข้อมูล ที่อาจจะถูกป้อนเข้าสู่มันได้หรือไม่ ตัวอย่างเช่นกับจำนวนเต็ม [ไม่ได้ยิน] ANDI PENG: สำหรับวัตถุประสงค์ ของชั้นนี้ไม่มีตอนนี้ เมื่อคุณสร้างข้อมูล โครงสร้างเช่นอาร์เรย์ คุณกำลังบอก คอมพิวเตอร์เดี๋ยวก่อนฉันต้องการให้คุณ การจัดสรรมากขนาดนี้ หน่วยความจำในฮาร์ดไดรฟ์ของฉัน กับแต่ละเซลล์เป็น จำนวนหนึ่งของบิต โปรดจำไว้ว่าเราได้เรียนรู้ในสัปดาห์ ที่ศูนย์ข้อมูลที่แตกต่าง ชนิดมีขนาดแตกต่างกัน? ดังนั้นตัวอย่างเช่นสตริง เป็นจำนวนเงินที่แตกต่างกัน พื้นที่กว่าถ่านที่ เป็นจำนวนเงินที่แตกต่างกันของพื้นที่ จากจำนวนเต็ม ดังนั้นถ้าคุณไม่ได้ระบุและคุณ ผสมและตรงกับสิ่งที่ชนิดของตัวแปร คุณมีเครื่องคอมพิวเตอร์ ไปได้สับสนมาก และมันจะไม่ทราบว่า หน่วยความจำเท่าใดเพื่อให้คุณ ดังนั้นเพื่อวัตถุประสงค์ในการที่เหมาะสม ตอนนี้เครื่องคอมพิวเตอร์สามารถ รับรู้ประเภทหนึ่งของอาร์เรย์ คำถามที่ดี. ตกลง. ดังนั้นธรรมชาติที่ คำถามที่สองเรามี คือดีตอนนี้ที่เราได้สร้าง อาร์เรย์และเราได้นำสิ่งเหล่านี้ทั้งหมด ในอาร์เรย์วิธีการที่เรา จะสามารถเข้าถึงมันได้หรือไม่ ดังนั้นโครงสร้างทั่วไปที่เราเสมอ เข้าถึงอาร์เรย์ที่น่ารักสำหรับวงของเรา ผมสัญญาว่าพวกคุณว่าเราจะ เห็นมากคนนี้ที่นี่ โดยพื้นฐานแล้วเวลาที่คุณต้องการ เพื่อป้อนค่าเป็นอาร์เรย์ หรือคุณต้องการที่จะเข้าถึงพวกเขา วิธีที่ดีที่สุดที่จะทำคือการวน, เพราะในการห่วงคุณ ทราบว่าหลายครั้งที่คุณอยู่ จะต้องการที่จะวิ่งผ่านอาร์เรย์ เพราะคุณมีรุ่นที่หยุดใช่มั้ย? และเวลาที่คุณทำงานทุก ผ่านคุณสามารถเข้าถึง องค์ประกอบที่แตกต่างกันของอาร์เรย์ และยังนี่คือเหตุผลว่าทำไมปกติ เราเริ่มต้นสำหรับลูปของเราที่ค่า 0, เพราะเมื่อคุณเข้าถึงอาร์เรย์ คุณสามารถเข้าถึงศูนย์ดัชนี และดังนั้นจึงคล้ายคลึงกันอย่างมาก พวกคุณอาจจะต้องการที่จะ เขียนสำหรับฉัน int เท่ากับ 1 ฉันน้อยกว่าหรือเท่ากับ 3 แต่มันจะไม่ทำงานค่อนข้างเป็น ดีที่นี่เพราะคุณเท่านั้น มีองค์ประกอบของ 0, 1, 2 ดังนั้นถ้าคุณจะเริ่มต้น ผมของคุณในองค์ประกอบที่ 1, 2, และ 3 คุณกำลังจะสิ้นสุดการทำงาน ออกจากขอบเขตของอาร์เรย์ของคุณ และสิ่งที่ไม่ดีกำลังจะเกิดขึ้น ดังนั้นผมจึงหวังว่าพวกคุณเห็นทำต่อ ทำไมในชั้นเรียนก่อนหน้านี้ เราได้รับการเรียนการสอนพวกคุณวิธีการทำงานและ จัดรูปแบบสำหรับวงวิธีการที่เราเป็น ก็เพราะตอนนี้เราได้ เปลี่ยนลงในอาร์เรย์ คุณสามารถดูว่าทำไม 0 ยืม ตัวเองอย่างมากที่จะเข้าถึง ดังนั้นวิธีการที่เราจะทำคือ that-- ฉัน เพียงแค่พิมพ์ออกจากที่นี่เพราะ ในการพิมพ์มันออกมา แต่ผมมีตัวยึดของฉันจุลภาค และการเข้าถึงที่เกิดขึ้นจริง ส่วนหนึ่งที่เกิดขึ้น ชื่อของอาร์เรย์ ถูกเรียกว่าอุณหภูมิ ดังนั้นจึงเป็นที่อุณหภูมิและ องค์ประกอบที่ i ของอาร์เรย์ ดังนั้นเป็นห่วงวิ่งผ่าน ก็จะเริ่มต้นที่ 0 มันจะพิมพ์ ดัชนี 0 ของอาร์เรย์นี้ จากนั้นก็จะพิมพ์ ออกองค์ประกอบแรก จากนั้นก็จะพิมพ์ ออกที่สอง และจากนั้นเรากำลังจะทำลาย คือทุกคนที่ชัดเจนเกี่ยวกับ วิธีการที่เกิดขึ้น? ที่ดี ทั้งหมดขวา ดังนั้นที่นี่เรามีวิธีการของ ว่าถ้าเราไม่ต้องการ ยากรหัส in-- ฉันเป็นโปรแกรมเมอร์ ผมไม่ได้ต้องการที่จะเป็นจริงทางร่างกาย ใส่ในทุกองค์ประกอบของแต่ละบุคคล ของอาร์เรย์นี้ ถ้าผมต้องการที่จะแทน มีค่าการป้อนข้อมูลของผู้ใช้ สิ่งที่เป็นวิธีที่ดีที่สุดที่จะทำเช่นนั้น? ดีที่นี่ผมได้สร้าง ฟังก์ชั่นนี้น่ารัก ที่ฉันสามารถประกาศอาร์เรย์ ดังนั้น int scores-- ขอ เพียงแค่บอกว่าเราต้องการที่จะทำให้ อาร์เรย์ที่จัดขึ้นทุกเกรด 18 ที่ นักเรียนที่นี่ในส่วนนี้ ผมคิดว่าเราได้มีน้อย มากกว่า 18 เด็กในวันนี้ แต่เพราะตัวอย่างของ ขอเพียงแค่ถือว่าเรามี 18 ฉันจะสร้างคะแนนชื่ออาร์เรย์ด้วย ประเภท int เพราะคะแนนของหลักสูตร เป็นตัวเลข และฉันจะมี 18 ในวงเล็บสี่เหลี่ยม เพราะเห็นว่าเป็นวิธีที่หลายนักเรียนฉัน ต้องการที่จะสามารถที่จะเก็บคะแนนของ และวิธีที่ฉันอาศัย อาร์เรย์ที่ฉันต้องการ เรียกใช้ผ่านการวนของ แน่นอนด้วย 0 0 เป็นดัชนีของฉัน และแล้วกับ 18 เป็นของฉัน หยุดฉบับเพราะมี 18 องค์ประกอบในอาร์เรย์ และแล้วฉันจะทำ printf ใส่ คะแนนสำหรับ student-- ญาดาญาดาญาดา ทุกคนสามารถบอกฉันทำไมฉันที่นี่ พิมพ์ฉันบวก 1 และฉันไม่? เป็นชนิดของการหลอกลวง คำถามไม่ได้จริงๆ มันไม่จริงร่างกาย ส่งผลกระทบต่อการทำงานของรหัส ใช่ ผู้ชม: [ไม่ได้ยิน] 0? ANDI เป็ง: ใช่ว่า เป็นบิตที่น่าอึดอัดใจที่จะบอกว่าเดี๋ยวก่อน คุณเป็นนักเรียน 0 ในชั้นนี้ เป็นบิตแปลก ดังนั้นเราเป็นมนุษย์ไม่ชอบ ที่จะคิดว่าคอมพิวเตอร์คิด ดังนั้นแม้ว่าใน คอมพิวเตอร์ก็เก็บค่า ในดัชนี 0 ครั้งเมื่อ เรามนุษย์ที่เราทำไม่ได้จริงๆ ชอบที่จะอ้างถึงตัวเองเป็นศูนย์ ดังนั้นเมื่อผมเพียงแค่พิมพ์ว่า ฉันจะพิมพ์และเพิ่ม 1 เพียงเพื่อประโยชน์ของความชัดเจน ดังนั้นเมื่อผมพิมพ์ผมไปได้ สามารถที่จะพิมพ์นักเรียนที่ 1 ถึง 18 มันไม่ส่งผลกระทบจริง การทำงานของรหัส ในทางใดทางที่ผมพิมพ์ แต่ต้องระวังเมื่อคุณอยู่ จริงการเข้าถึงอาร์เรย์ เมื่อคุณดูคะแนน i, แจ้งให้ทราบที่นี่ฉันจริง การเข้าถึงและดัชนี 0 ไม่ได้เป็น 1 บวก 0-- หรือ 1 บวก 1, ในกรณีนี้ดัชนีดังนั้น ว่ามันเป็นที่ชัดเจนจริง ทุกคนชนิดของ OK บน วิธีการนี​​้จะวิ่งผ่าน และมีค่าดัชนีทุกฉัน ใส่ค่าลงในอาร์เรย์ และการสร้างอาร์เรย์กับ 18 หมายเลข ว่าผู้ใช้จะไปใส่? ตกลง. เย็น ตกลง. ตอนนี้เราย้ายเข้าไปอยู่ในบางสิ่งบางอย่างที่สวย ที่เกี่ยวข้องกับงานชิ้นนี้ตั้งเช่นกัน ฉันรู้ว่าในการบรรยาย, David-- ขออภัยคุณมีคำถาม? ผู้ชม: คุณสามารถขยายได้หรือไม่ ANDI เป็ง: ใช่ดังนั้นฉันพยายาม แต่ผมไม่ทราบว่า ด้วยเหตุผลบางอย่างนี้ PowerPoint รุ่น มันไม่ทำงาน ดีกับการแสดงผล ดังนั้นเราจึงกำลังจะ ที่จะให้มันเป็นแบบนี้ ทั้งหมดเหล่านี้จะถูกอัปโหลดออนไลน์ ขอโทษนะเพื่อน. ใช่ ตกลง. ดังนั้นเรายังสามารถมีสาย ดังนั้นถ้าพวกคุณจริง notice-- ฉัน รู้ว่าร็อบไปกว่านี้ในการบรรยายที่ ว่าเขา did-- สตริงเป็นจริง เพียงอาร์เรย์ของตัวอักษร ถ้าคุณคิดว่ามันใช่มั้ย? สตริงเป็นชื่อหรือ ประโยคหรือคำที่ใช่มั้ย? ถ้าฉันจะสร้างสตริงชื่อ Andi-- เพียงแค่ชื่อของฉัน, A-N-D-I คุณคิดว่าเป็นเพียงหนึ่งในตัวแปร แต่จริงๆแล้วมันหักลง เพียงแค่เข้าไปในอาร์เรย์ของตัวอักษร ดังนั้นก็มีตัวละครของ ที่เก็บไว้ในมูลค่าอาร์เรย์ มันมีลักษณะของ n ที่เก็บไว้ในที่ ดัชนีที่สองและอื่น ๆ และอื่น ๆ ดังนั้นในลักษณะที่เรา จริงมีแบบนี้ ของโครงสร้างที่ตั้งอยู่ใน สถานที่สำหรับสายของเรา ดังนั้นที่นี่ถ้าผมจะมีการป้อนข้อมูล คำว่า "กิน" - คำสตริงเพื่อให้เท่ากับ ได้รับสตริง ถ้าผมใส่คำว่า "กิน" ที่ เป็นทางร่างกายวิธีการที่คอมพิวเตอร์ของฉัน มีการจัดเก็บสตริงในหน่วยความจำของฉันที่ และถ้าผมอยากจะวิ่งผ่าน และการพิมพ์ที่ out-- เพื่อให้ฉันเข้าไป เท่ากับศูนย์จำไว้ในการบรรยายเรา ครอบคลุมสิ่งที่เรียกว่า strlen, หรือความยาวของสตริง เพราะผมไม่จริง รู้วิธีการที่มีขนาดใหญ่เป็นอาร์เรย์ ของอะไรก็ตาม inputting-- ของผู้ใช้ ตัวอย่างเช่นผมป้อน คำว่า "กิน" และฉันรู้ว่า ที่ตัวละครทั้งสามยาวใช่มั้ย? ดังนั้นผมจึงสามารถนำมาใส่ในสามมี และทุกอย่างจะดี แต่ถ้าสิ่งที่ผู้ใช้ป้อนข้อมูลของคุณ ที่มีจำนวนแตกต่างกันของค่านิยม คุณจะไม่สามารถที่จะจริงๆ รู้ว่าเมื่อคุณโปรแกรมรหัสของคุณ ดังนั้นวิธีการที่เราจัดการกับกรณีการทดสอบ เช่นนั้นคือว่าเรามีบางสิ่งบางอย่าง เรียกว่า strlen ซึ่งเป็นเพียงฟังก์ชั่น ที่จะบอกคุณว่านานแค่ไหนสตริงคือ ดังนั้น strlen ของคำ คำของฉันคือกิน n เท่ากับ strlen ของคำ ใครสักคนที่สามารถบอกฉันว่า ค่าจริงอยู่ที่นั่น? n อะไรแสดงสิทธิ ตอนนี้ในตัวอย่างนี้ถ้าฉันมีกิน? ผู้ชม: 3 ANDI PENG: 3, ว่า ดังนั้นเราจึงมีสำหรับฉัน int เท่ากับ ศูนย์ n เท่ากับ 3 เป็นหลัก และฉันจะไปทำงาน จนกว่าจะมีน้อยกว่า 3i ++ และมันจะไปเป็นหลัก ผ่านและทำสิ่งเดียวกัน มันจะพิมพ์ออกมา ทุกค่าและให้คุณ E-A-T มันเป็นเพียงแค่แสดงถึง วิธีที่แตกต่างกันของการเขียน ที่จะเป็นประโยชน์มาก ใช่ ผู้ชม: อะไรคือประโยชน์ของการวาง n เท่ากับคำ strlen ภายในที่ สำหรับวง [ไม่ได้ยิน] ANDI เป็ง: ใช่ ดังนั้นถ้าผม to-- พูดยกตัวอย่างเช่น ถ้าผมจะทำอย่างนั้นแล้ว do-- oop-- ว่าในรหัสของฉันก็จะ จริงจะทำเช่นสิ่งเดียวกัน แต่วิธีการที่เดวิดอธิบาย ในระหว่างการบรรยายถ้าใด ๆ ของพวกคุณ จำได้ว่าเป็น มนุษย์เป็นโปรแกรมเมอร์ เราพยายามที่จะเขียนโปรแกรมของเรา รหัสเพื่อให้คอมพิวเตอร์ของเรามี การทำงานเป็นน้อยที่สุดเท่าที่จะทำได้เพื่อให้ ว่ารหัสของเรามีประสิทธิภาพมาก ดังนั้นถ้าผมว่ามีสิ่งที่ ที่จะเกิดขึ้นผ่านการห่วงฉัน คือว่าผมต้องการประกาศเป็นครั้งแรก ผมชื่อตัวแปรเป็นไปได้ที่ 0 ฉันกำลังจะไปตรวจสอบโอ้ สิ่งที่เป็น strlen ของคำ? โอ้ strlen คือ 3 ดังนั้นฉันน้อยกว่าสาม? ใช่แล้ว. ฉันจะไปทำงาน แล้วกลับมาครั้งที่สองรอบ ห่วงฉันจะเพิ่มฉัน ฉันจะเป็นอย่างใดอย่างหนึ่ง และฉันจะไปตรวจสอบโอ้ แต่สิ่งที่ strlen ของคำว่า? โอ้ก็สาม และไม่ว่าจะดูชนิดของการสิ้นเปลือง เวลาที่คุณทำงานผ่านห่วงทุกคน จะได้รับการตรวจสอบฟังก์ชั่น แม้ว่า strlen ของคำว่า ไม่เคยเปลี่ยนแปลงจริง? ดังนั้นจึงเป็นอำนาจพิเศษสำหรับคอมพิวเตอร์ เมื่อคุณเริ่มต้นการพูดคุยเกี่ยวกับสิ่งที่ ที่มีพันล้านและพันล้าน และพันล้านสถานที่ ยาวจินตนาการคอมพิวเตอร์ของคุณ ร่างกายต้องผ่านไปและ ตรวจสอบทั้งหมดของที่ทุกเวลาเดียว นั่นคือเหตุผลที่จะทำให้เพียง เพื่อประโยชน์ของประสิทธิภาพ เรามีแนวโน้มที่จะทำนี้ เพราะทางเราเพียงแค่นี้ เรียกใช้ฟังก์ชัน ครั้งหนึ่งในการเริ่มต้น และทุกครั้งที่มัน ผ่านไปมันจะ ในการจัดเก็บค่าที่ 3 ที่นั่นคุณทำไม่ได้ มีการตรวจสอบอย่างต่อเนื่องทุกครั้ง ใช่ ผู้ชม: ขออภัย เพียงแค่ [ไม่ได้ยิน] คุณอาจจะไม่เท่ากับ n int strlen และวาง ที่ดังกล่าวข้างต้นนอกสำหรับวง เช่นกัน? ANDI เป็ง: ใช่ คุณสามารถทำเช่นนั้นอย่างแน่นอน เหตุผลที่เรามีมันในที่นี่คือ เพราะวิธีการที่ผลงานของวง คือว่ามันเรียกว่า ตัวแปรท้องถิ่นในความรู้สึก ทุกอย่างที่คุณกำลัง สร้างภายในของห่วง เฉพาะที่มีอยู่ภายในของห่วง ดังนั้นตัวแปรฉันเท่านั้น ที่มีอยู่ในวงเล็บเหล่านั้น และตัวแปรที่นี่ของ n นอกจากนี้ยังมี เพียง แต่อยู่ในวงเล็บเหล่านั้น ดังนั้นถ้าคุณใช้ strlen ของ คำหลายครั้งลงด้านล่าง อย่างวิธีที่ดีที่สุดที่จะทำ จะมีการประกาศขึ้นด้านบน ดังนั้นคุณจึงไม่ต้องทำมันอีกครั้ง ใช่ ผู้ชม: ทำไมคุณมี บรรทัดใหม่หลังจากที่ร้อยละ การดูว่าคุณต้องการที่จะนำทั้งหมด ตัวอักษรถัดไปแยกกันได้อย่างไร ANDI PENG: โอ้ผมอยากจะ พิมพ์พวกเขาทั้งหมดในแต่ละบรรทัด มันไม่สำคัญว่า ใช่มันจัดรูปแบบ นั่นเป็นคำถามที่ดี แต่ ใช่ถ้าผมต้องการที่จะพิมพ์ มันทั้งหมดเพียงหนึ่งบรรทัด ฉันจะไม่ได้อยู่ในประ ตกลง. ทุกคนดีหรือไม่? ตกลง. เย็น ดังนั้นผมคิดว่าผมได้พูดคุยพอ เปิดพวกคุณที่จะวิ่งผ่าน รหัสและบอกฉันว่านี่เป็นสิ่งที่ผิด ในกรณีที่ผิดพลาดหรือไม่ เพื่อที่คุณสามารถเห็นฉันได้ประกาศให้เป็น แถวใหม่ของสตริงประเภทชั้นชื่อ และฉันได้ป้อนแซม เจสและคิมเป็นมัน และฉันพยายามที่จะพิมพ์ออกมา องค์ประกอบทั้งหมดของอาร์เรย์ ใครสักคนที่สามารถบอกฉันทำไมนี้ เป็นไปเพื่อให้ฉันปัญหา? ฉันจะให้พวกคุณ 10 วินาทีที่จะคิดเกี่ยวกับเรื่องนี้ ตกลง. ใช่? ผู้ชม: เป็นศูนย์กลางทางด้านซ้าย เท่ากับ 3 หรือ [ไม่ได้ยิน] ANDI PENG: ขวา ดังนั้นวิธีที่หลาย ๆ ครั้งนี้เป็นจริง จะไปทำงานผ่านห่วงนี้หรือไม่? ผู้ชม: สี่ ANDI PENG: แน่นอน มันจะผ่านสี่ครั้ง มันจะวิ่งผ่าน ที่ 0, 1, 2, และ 3 เพราะองค์ประกอบของพวกเขาคือฉัน น้อยกว่าหรือเท่ากับ 3 มันจะไม่หยุดเมื่อมัน 2 มันจะให้ ไปจนฮิต 3 และการที่เรารู้ว่ามีเพียงสาม องค์ประกอบในอาร์เรย์ที่แท้จริงของเรา ถ้าเราพยายามที่จะเข้าถึงที่สี่ องค์ประกอบหรือดัชนีของ 3, คุณกำลังจะไปตีที่ใดที่หนึ่ง ในความทรงจำที่ไม่มีอยู่ มันเรียกว่าเทอร์มิ null ไม่มีอะไรที่จะต้องมี คอมพิวเตอร์ของคุณไม่ได้ไป จะมีความสุขมากกับคุณ ใช่ ไม่มีใครมีคำถาม เกี่ยวกับเหตุผลที่เกิดขึ้น? นั่นเป็นพื้นที่ส่วนกลางที่จะหลีกเลี่ยง ใช่ ผู้ชม: ไม่ไม่ได้เป็นครั้งแรก เลื่อนยังมีสายของ 2 หรือไม่? ANDI PENG: เลขที่ เพื่อเป็นหลักเมื่อ คุณกำลังทำอาร์เรย์ สิทธิวงเล็บ นั่น number-- ทั้งหมด มันบอกคุณเป็นวิธีการที่ หลายองค์ประกอบที่ฉันมี มันไม่จริงบอก ฉันดัชนีอะไร ดังนั้นในกรณีนี้ฉันรู้ว่าฉันต้องการ ในการเขียนที่มีสามสถานที่ มีสามสถานที่ทางกายภาพ ถือสิ่งที่ฉันต้องการที่จะถือ เพื่อที่ว่าทำไมบ้านเลขที่สามจะมี แต่ถ้าฉันต้องการ เข้าใช้งานได้จริง ถ้าผมต้องการที่จะพูด printf จำนวนชั้นวงเล็บแล้ว คุณกำลังจะไปจริงใส่ ดัชนีทางกายภาพมี ใช่คำถามที่ดี ผู้ชม: ดังนั้นทางกายภาพ ดัชนีควรจะเป็น [ไม่ได้ยิน] ANDI PENG: ฉันขอโทษ คุณสามารถพูดคุยขึ้นเล็กน้อย? ผู้ชม: เพ​​ื่อให้เป็นดัชนีทางกายภาพ [ไม่ได้ยิน] แต่ละช่อง? [ไม่ได้ยิน] ANDI เป็ง: ใช่ ดังนั้นฉันจะกลับไปที่นี่ คิดว่าที่นี่ เรามีอาร์เรย์ขนาด 3 มีสามสถานที่ที่เป็นเหมือน ตัวยึดตำแหน่งทางกายภาพในที่นี่ แต่พวกเขากำลังตั้งชื่อ 0, 1, 2 ดังนั้นถ้าผมต้องการที่จะเข้าถึงพวกเขา วิธีการที่ผมเข้าถึงได้ เป็น printf ของสิ่งที่ผมอยากมาที่นี่ คุณจะต้องพิมพ์ ชื่อของมัน เพราะจากนั้นคอมพิวเตอร์ รู้ว่าโอ้ฉันต้องดู ในอาร์เรย์สำหรับดัชนี 0 นี้ ใช่ แต่ขนาดของมันไม่ได้เปลี่ยน ขนาดคือ 3 โดยไม่คำนึงถึง วิธีการที่คุณฉลากพวกเขา ตกลง. ทุกคนดีหรือไม่? ผู้ชม: ดังนั้นเวลาที่ฉัน [ไม่ได้ยิน] ทุกครั้งหรือไม่ ANDI PENG: OK ดังนั้นในกรณีนี้เราทำไม่ได้จริงๆ ได้รับในขณะนี้ในหลักสูตร แต่รู้ว่า string-- เหมือนฉัน กล่าวก่อนสตริงเป็นหลัก อาร์เรย์ของตัวอักษร ดังนั้นถ้าฉันสร้างอาร์เรย์ ของสตริง, ชนิดของฉัน มีอาร์เรย์ของอาร์เรย์ ของตัวละครใช่มั้ย? ดังนั้นในกรณีนี้เพราะผม มีอาร์เรย์ของสตริงที่ ถ้าคุณมีการใส่คำยาวจริงๆ ที่ยังคงใช้เวลาเพียงหนึ่งพื้นที่ เนื่องจากว่าเป็นหนึ่งสตริง แต่ถ้าคุณจะคิดว่า ตัวละครของอาเรย์ที่ แล้วที่การขึ้นมากขึ้น ตัวละครกว่าใด ๆ ของคำอื่น ๆ เป็น ไม่สำคัญจริงๆสำหรับตอนนี้ แต่นั่นเป็นเพียงทั่วไป วิธีการที่จะทำงาน ตกลง. ดังนั้นนี่คือสิ่งที่ฉันจะช่วยให้คุณทำ เป็นจำนวนมากในช่วงภาคการศึกษา ฉันต้องการที่จะพักผ่อนเสียงของฉัน พวกคุณต้องกระตุ้นตัวเอง จำนวนมากของคุณอาจ ต้องนอนในขณะนี้ ฉันป้อนปัญหาแบบสุ่ม ที่เราเป็นชั้นหรือคุณ กับพันธมิตรต่อไปที่คุณจะ ที่จะใช้จ่ายสองสามนาทีพูดคุย ในวิธีที่เราจะไปเกี่ยวกับการแก้ หรือการสร้างโปรแกรมเช่นนี้ ดังนั้นตอนนี้เราต้องการ เพื่อสร้าง program-- เราจะเรียกมันว่า upper.c-- ที่แปลง คำพิมพ์เล็กไปยังชั้นบน string-- พิมพ์ใหญ่ขอโทษ คำในสตริงขออภัยตรงกัน ฉันจะเปลี่ยนพวกเขา หมายถึงสิ่งเดียวกัน ใช่ ใช้เวลาไม่กี่นาที มันไม่จำเป็นต้องเป็น เขียนในภาษาใด ๆ เพียงแค่ในรหัส pseudocode หรือ วิธีการที่เรามีเหตุผลแม้จะ ไปเกี่ยวกับการทำปัญหาดังกล่าว ใช่ [SIDE สนทนา] ฉันยังพบว่าพวกคุณ can-- ชนิดของฉันดูแล้วโปรแกรม ผมคิดว่าขาดฉัน โหมดพรีเซนเตอร์ปัญหา แต่มันก็โอเค. [SIDE สนทนา] ใช่โปรดคน มารับขนม มารับขนม ผู้ชม: ใช่! [SIDE สนทนา] ANDI PENG: นอกจากนี้ใช่ ฉันจะเริ่มต้นการขว้างปาลูกอม ที่คนที่ไม่ได้ตอบคำถาม ดังนั้นคุณควรจะตอบคำถามทั้งหมด หรือผมคิดว่าคนที่ ไม่ตอบคำถาม ใช่วิธีอื่น ๆ [SIDE สนทนา] ผู้ชม: [ไม่ได้ยิน] ANDI เป็ง: ใช่ ใช่ [SIDE สนทนา] สิทธิทั้งหมดคน ใช้เวลาเช่น 10 วินาที [SIDE สนทนา] ตกลงพวก ดังนั้นก่อนที่เราจะเริ่มพยายามที่จะ จริงร่างกายเขียนโค้ด เป็นนิสัยที่ดีในการพัฒนาคือ เราต้องการที่จะชนิดแรกของเหตุผล จากเหตุผลวิธีการที่เราจะทำมัน คุณต้องการที่จะให้แน่ใจว่า ก่อนที่คุณจะทางร่างกาย เริ่มพยายามที่จะรหัส ในมาริโอที่คุณทำ แน่ใจว่าคุณมี pseudocode ของคุณ ที่จะพาคุณผ่าน สิ่งที่คุณจำเป็นต้องสร้างเพื่อให้ ที่เมื่อร่างกายคุณ เขียนโปรแกรมของคุณในภายหลัง คุณจะดีกว่าสามารถที่จะจับข้อผิดพลาด ในรหัสของคุณและสิ่งที่ต้องการ ดังนั้นเรากำลังจะไปเพียงแค่เริ่มต้น by-- ในภาษาอังกฤษใน pseudocode, ไม่มีใครต้องการที่จะให้ ฉันเป็นคำอธิบายทั่วไป วิธีการที่เราจะไปเกี่ยวกับการทำเช่นนี้? ใช่ ผู้ชม: [ไม่ได้ยิน] ANDI PENG: แน่นอนว่าไม่ต้องกังวล ผู้ชม: คุณสามารถขอให้หรือขอให้ ใครบางคนที่จะได้รับสตริง 1- ใช่สตริง และ then-- ANDI เป็ง: ใช่ดังนั้นนี้เป็นเริ่มต้นที่ดี ฉันจะเริ่มต้นการพิมพ์ขอโทษที่คุณพูด So-- ผู้ชม: พิมพ์เล็ก --the ตัวเลขที่สูงขึ้นใช่มั้ย? หรือตัวพิมพ์เล็ก มีตัวเลขที่สูง? ANDI PENG: แน่นอน ผู้ชม: ดังนั้นแล้วเราลบ 32 จากสิ่งที่ [ไม่ได้ยิน] ANDI PENG: Great ดังนั้นเราจึงมีชนิดของความหมายทั่วไป ของวิธีการทำงานเกี่ยวกับปัญหานี้ รู้ว่าเราได้เรียนรู้ชนิดของ วิธีการที่สายทางกายภาพ จะถูกเก็บไว้ในหน่วยความจำ ทำในสิ่งที่คุณมีอยู่แล้ว รู้ว่าคุณกำลังจะไปอาจจะ ต้องเขียนในรหัสของคุณ เพื่อที่จะก้าวผ่านสตริง? ผู้ชม: สำหรับวง ANDI เป็ง: เป็นห่วงว่า ที่ดี ดังนั้นเราจึงมีชนิดของทั่วไป pseudocode เขียนลง ว่าจะให้ คุณตั้งข้อสังเกตเกี่ยวกับวิธีการที่คุณ จะย้ายเกี่ยวกับการแก้ปัญหาที่เกิดขึ้น ตอนนี้คุณมีนี้คุณ สามารถอ้างอิงได้ในภายหลัง เมื่อคุณกำลังพยายามที่จะ จริงเขียนรหัสของคุณ ดังนั้นเราจะสามารถไปที่นี่ และผมได้มีฟังก์ชั่นที่เรียกว่า upper.c-- มันมี is-- เพียงแม่แบบที่ว่างเปล่า ตอนนี้ที่พวกคุณจะไป ช่วยฉันคิดออกในการเขียน สายไม่สาย code-- ของรหัสนี้ มันจะเป็นหลายบรรทัดของรหัส เมื่อเริ่มต้นใด ๆ ของ pset ว่างเปล่าสิ่งที่ สิ่งแรกที่ผมต้อง จำไว้ว่าให้ทำอย่างไร ผู้ชม: [ไม่ได้ยิน] ANDI PENG: Great ครับ รวม stdio.h บ่อยครั้งนี้เป็นหนึ่งใน คนที่ผิดพลาดได้ง่ายมากที่สุด จะทำให้เมื่อพวกเขากำลัง การเขียนคือการที่พวกเขาจะ ลืมที่จะมี ห้องสมุดที่สำคัญที่พวกเขาต้องการ ดังนั้นถ้าหากมันเป็นเวลาทำงานและคุณชอบ ผมไม่ทราบว่าทำไมรหัสของฉันไม่ได้ทำงาน คุณสามารถบอกฉันทำไมมันไม่ทำงาน? เรากำลังจะบอกว่าคุณไม่ # รวม? คุณควร # รวมมัน ตกลง. ดังนั้นเราจึงได้มีมาตรฐาน I / O ที่นี่ นั่นคือห้องสมุดเท่านั้น เราจะต้องอยู่ที่นี่? เราเป็นสิ่งที่คนอื่นจะทำอย่างไร ขอโทษ มีคนเพียงแค่กรีดร้องออก? ผู้ชม: [ไม่ได้ยิน] ANDI PENG: มีคุณไป ตกลง. และวิธีการที่ฉันจะไปเกี่ยวกับการเริ่มต้นใด ๆ ของฟังก์ชั่นการจัดเรียงของฟังก์ชั่นหลัก ๆ ภายในโปรแกรมของเราหรือไม่ Int หลัก ตกลง. ฉันจะทำอะไรใส่ในที่นี่? สิ่งแรกที่คุณต้องการจะทำคืออะไร? ถ้าเราต้องการที่จะได้รับ สตริงจากผู้ใช้ สิ่งที่เรากำลังจะมี ที่จะทำในบรรทัดแรกนี้หรือไม่? ขออภัยที่พวกคุณเพียงแค่รู้สึก อิสระที่จะพูดขึ้นและดัง เพียงแค่สิ่งที่ตะโกนออกมา ผู้ชม: ขอให้ผู้ใช้หรือไม่ ANDI เป็ง: เราจะทำอย่างนั้นได้อย่างไร Ask-- ฉันจะพิมพ์ "ขอให้ผู้ใช้"? ผู้ชม: printf ANDI PENG: OK printf อะไรที่ฉันต้องการที่จะ printf? ผู้ชม: ประเภทในบางสิ่งบางอย่าง ANDI PENG: เช่นเดียวกับที่? พวกหลอกเหมือนฉันคอมพิวเตอร์ ร่างกายบอกฉันทุกขั้นตอน ที่ฉันต้องพิมพ์ในที่นี่? ฉันทำอะไรผิดพลาด? ฉันควรจะได้พิมพ์อะไร? ผู้ชม: คุณต้องคำพูด ANDI เป็ง: ผมต้องการคำพูด? ตกลง. ตกลง. ผู้ชม: และบรรทัดใหม่แล้ว อัฒภาค ANDI PENG: อัฒภาค? ตกลง. ดี ผู้ชม: และอาจจะระบุ ที่คุณต้องการให้มันอยู่ในตัวพิมพ์เล็ก? ANDI PENG: Great พวกคุณหัวเราะเยาะฉัน ลืมที่จะใส่เครื่องหมายอัฒภาค ฉันรับประกันคุณอยู่ที่ไหนสักแห่ง ในหลักสูตรของระดับนี้, คุณจะลืมที่จะใส่ อัฒภาคและมัน จะนำคุณสามชั่วโมงที่จะคิด ว่าทำไมรหัสของคุณไม่ทำงาน มันเกิดขึ้นกับเราทุกคน มันอาจจะเกิดขึ้นกับคุณ ได้รับในนิสัยที่ดีของการใช้เครื่องหมายอัฒภาค ตกลง. ผู้ชม: คุณต้องการ ที่จะทำเครื่องหมายใน? ANDI PENG: Sure คุณต้องการที่จะทำเครื่องหมายอะไรบ้าง? ผู้ชม: ใช่ ANDI PENG: Great ตกลง. ฉันจะทำอย่างไรต่อไปหรือไม่ ผู้ชม: สตริงรับ ANDI PENG: สตริงรับ ดังนั้นสิ่งที่ฉันพิมพ์? ใครบางคน? ผู้ชม: String s ANDI PENG: String s ผู้ชม: GetString ANDI PENG: Somebody, คุณสามารถบอกฉันที่ GetString ฟังก์ชันนี้จะมาจากไหน? ผู้ชม: สตริง ANDI PENG: สตริง? คุณคิดว่ามันเป็นจากสตริง? ผู้ชม: [ไม่ได้ยิน] ANDI PENG: มีคุณไป มันมาจาก CS50.h. หากคุณกำลังสับสนเสมอในการที่ ไฟล์ไลบรารีหรือไฟล์ส่วนหัว กูเกิลอย่างแท้จริงสตริง, และฉันจะบอกคุณ สิ่งที่มีฟังก์ชั่นทั้งหมด ที่อยู่ในสตริง ตกลง. ดังนั้นขณะนี้ที่ผมได้สร้างสตริง และผมได้แจ้งให้ผู้ใช้มัน ฉันได้เก็บไว้ในตัวแปร ชื่อของสิ่งที่ฉันต้องทำตอนนี้หรือไม่ ผู้ชม: ตรวจสอบว่ามันอยู่ในตัวพิมพ์เล็ก ANDI PENG: ขออภัย? ผู้ชม: ตรวจสอบว่ามันอยู่ในตัวพิมพ์เล็ก ANDI PENG: สิทธิทั้งหมดขอให้ทำอย่างนั้น ฉันจะทำอย่างไร ที่จริงสำหรับวัตถุประสงค์ ของชั้นเรียนในขณะนี้ เราเพียงแค่จะไป ถือว่าทุกอย่างที่ การป้อนข้อมูลที่เรามีอยู่แล้วในตัวพิมพ์เล็ก หากคุณต้องการที่จะตรวจสอบคุณจะ เพียงแค่เพิ่มคำสั่งเงื่อนไข ว่าการตรวจสอบที่วิ่งผ่าน ทุกองค์ประกอบอาร์เรย์เดียว และการตรวจสอบถ้ามัน ระหว่างค่าบางอย่าง ฉันลืมสิ่งที่จำนวน ของค่าของตัวพิมพ์เล็กมี คุณสามารถดูมันขึ้นมาบนโต๊ะแอสกี แต่ใช่ว่าเป็นจุดที่ดีจริงๆ แต่ตอนนี้เรากำลังจะ สมมติว่าเงื่อนไขทั้งหมดที่เราป้อนข้อมูล อยู่ในตัวพิมพ์เล็ก ตกลง. ดังนั้นวิธีการที่ฉันจะไปเกี่ยวกับ ปัญหาต่อไปนี้หรือไม่? ผู้ชม: สำหรับวง ANDI PENG: สำหรับวง? ตกลง. บอกสิ่งที่จะพิมพ์ ผู้ชม: สำหรับฉัน int เท่ากับ 0 ANDI PENG: OK ผู้ชม: โอ้จริงแล้วคุณ ทำเครื่องหมายจุลภาคและทำ n เท่ากับ strlen ANDI PENG: สิ่งที่สำคัญดังนั้น ที่ฉันคิดว่าเธอสังเกตเห็นที่นี่ คือการที่เราไม่ได้มีการพูด int n ครั้งที่สองที่เราทำอย่างนี้ เพียงแค่รู้ว่าในสำหรับ ห่วงเมื่อคุณประกาศ คุณจริงไม่จำเป็นต้อง int ของ เป็นครั้งที่สองที่คุณทำตัวแปร คุณสามารถพูดได้ n strlen ผู้ชม: s ของ ANDI PENG: s ตกลง. ผู้ชม: แล้วอัฒภาค ANDI PENG: Sure ผู้ชม: และแล้ว [ไม่ได้ยิน] n แล้วฉัน ++ ANDI PENG: Great ทั้งหมดขวา เราต้องการอะไรอยู่ภายใน นี้สำหรับวงตอนนี้หรือไม่ จำไว้ว่าถ้าเรากำลังจะวิ่งผ่าน สตริงและวิ่งผ่านอาร์เรย์ เราต้องการที่จะตรวจสอบสิ่งที่อยู่ในนั้น เรามีสิ่งที่จะต้อง? นี้เป็นชนิดของส่วนที่ยุ่งยากในขณะนี้ ใครมีการคาดเดาหรือไม่? ตกลง. ดังนั้นก่อนจะทำอย่างไรที่เราจะได้เข้าถึง? ทำที่เราจะได้ตรวจสอบก่อนหรืออย่างไร เข้าถึงองค์ประกอบในอาร์เรย์แล้ว? เราจะทำอย่างนั้นได้อย่างไร? มีอะไรที่เราใช้สัญกรณ์ที่จะทำหรือไม่ ชื่ออะไรแถวนี้เรียกว่า? มันเรียกว่า s ใช่มั้ย? โปรดจำไว้ว่าสตริงใด ๆ อยู่เสมออาร์เรย์ วงเล็บ s ดังนั้นฉันใช่มั้ย? เพราะเห็นว่าเป็นมูลค่าปัจจุบัน หรือค่าดัชนีที่เรากำลังตรวจสอบ และเรากำลังจะไปตั้งที่เท่ากัน to-- เราต้องการค่าตัวพิมพ์เล็กใช่มั้ย? เราต้องการที่จะเปิดที่ lower-- ขออภัยเราต้องการเป็นตัวพิมพ์ใหญ่ เราต้องการที่จะเปิดตัวพิมพ์เล็ก ค่าลงในพิมพ์ใหญ่ และเพื่อ like-- ฉันขอโทษ คุณชื่ออะไร? ผู้ชม: ไฮดี้ ANDI PENG: ขออภัย? ผู้ชม: ไฮดี้ ANDI PENG: ไฮดี้ เช่นเดียวกับไฮดี้กล่าวว่า ในขั้นต้นเราอาจจะ จะต้อง the-- เรา อาจจะเป็นไปได้ที่จะลบ 32 จากสิ่งที่ charc ที่ใช่มั้ย? เพราะใน ASCII ตารางที่แตกต่างกัน ระหว่างตัวอักษรตัวพิมพ์เล็ก และอักษรตัวพิมพ์ใหญ่เป็น 32 ดังนั้นเมื่อเราทำเช่นนี้เราอาจจะ จะต้องการที่จะลบ 32 ใช่มั้ย? ดังนั้นเรากำลังจะทำของฉัน ทุกคนไม่เข้าใจว่าทำไมฉันไม่ว่า? เพราะตอนนี้ในอาร์เรย์ของเรา เรากำลังตรวจสอบดัชนี 0 ใช่มั้ย? และในดัชนีของ 0 สตริงที่ตัวอักษรตัวแรก และตัวละครที่เรากำลังจะ จะถือว่าเป็นตัวพิมพ์เล็ก ถ้าเราต้องการที่จะให้มันเป็นตัวพิมพ์ใหญ่เรา ต้องลบ 32 จากค่าของมัน เพราะใน ASCII ของเรา ตารางที่วิธีการที่เราได้รับมัน ไปที่สอดคล้องกัน ค่าที่ทำให้มันเป็นตัวพิมพ์ใหญ่ ไม่เข้าใจว่าทุกคน? ใช่ ผู้ชม: คุณยังสามารถ ไม่เป็นตัวพิมพ์เล็ก minus-- ANDI เป็ง: ใช่เพื่อให้เป็น จริงที่ดีจริงๆ ฉันจะกลับมาที่ คำถามหลังจากที่เราทำเช่นนี้ ใช่ และแล้วถ้าผมต้องการที่จะ ดูสิ่งที่เกิดขึ้น ฉันอาจจะไป ต้องการพิมพ์ใช่มั้ย? ใครบางคนบอกฉันว่า ฉันต้องการพิมพ์ที่นี่ ผู้ชม: ร้อยละ printf เครื่องหมายค [ไม่ได้ยิน] นั่นคือค่าของ [ไม่ได้ยิน] s ที่ฉัน ANDI PENG: s ฉันขอโทษ? ผู้ชม: [ไม่ได้ยิน] ANDI เป็ง: ผมไม่ทราบว่า คุณคิดอย่างไร? ผู้ชม: ดีฉัน wouldn't-- ผมคิดว่าผมจะไม่ bring-- ฉันจะเอามันออก ภายในเพราะ [ไม่ได้ยิน] ANDI PENG: โอ้คุณจะได้ทำอย่างนั้น? ผู้ชม: ใช่ ANDI PENG: Let 's ปล่อยให้มันเป็นวิธีการที่ มันเป็นและฉันจะอธิบายว่าทำไมในภายหลัง โปรดจำไว้ว่าแม้คุณ มีผู้ถือสถานที่ คุณต้องการใส่วงเล็บรอบ ทั้งหมดขวา ดังนั้นนี้ควรจะเป็นฟังก์ชั่นที่เป็นของแข็งที่นี่ ลองใช้มันและดูว่าจะรวบรวม ทำให้ตอนบนของภาค เอ่อโอ้. ที่ไม่ได้ดูดีเกินไป ที่เกิดขึ้นนี้เป็นเพราะเหตุใด เช่นเดียวกับข้อผิดพลาดใด ๆ ที่คุณต้องการไป กลับมาและเริ่มต้นด้วยคนแรก เพราะมักจะเป็นหนึ่งในสาเหตุที่ทำให้เกิดข้อผิดพลาด จำนวนมากของข้อผิดพลาดอื่น ๆ หลังจากที่มัน ที่นี่เราเห็น upper.c: 18: 25 ซึ่งบอก ฉันในโปรแกรมนี้ชื่อ upper.c, ในบรรทัดที่ 18 ข้อผิดพลาดโดยปริยายประกาศ ห้องสมุดของฟังก์ชัน strlen ชนิด unassigned-- blah, ผมไม่ทราบว่า สิ่งที่เกิดขึ้นหลังจากนั้น ทั้งหมดก็บอกฉันตอนนี้คือ บางสิ่งบางอย่างที่เกิดขึ้น strlen และคอมพิวเตอร์ที่สับสนเพราะ มันเหมือนผมไม่ทราบว่าสิ่งที่ strlen คืออะไร? อะไรที่อาจจะ บอกคุณคุณจะหายไป? ผู้ชม: คุณกำลังขาดหายไป [ไม่ได้ยิน] ANDI PENG: คุณขวา ที่แน่นอน ดังนั้นนี่เป็นที่ที่มันเป็น ที่สำคัญเพื่อให้แน่ใจว่า ฟังก์ชั่นที่คุณใช้ในทุกๆ รหัสจะมีส่วนหัวที่ถูกต้อง ไฟล์สำหรับห้องสมุดหรืออื่น ๆ คุณกำลังจะได้รับจำนวนมากของข้อผิดพลาด และรหัสของคุณจะไม่ ที่จะรู้ว่าสิ่งที่เกิดขึ้น ดังนั้นเรากำลังจะรวมถึงสตริงที่นี่ ตอนนี้เมื่อเราพยายามที่จะรวบรวมบน รวบรวมได้อย่างถูกต้อง ลองเรียกใช้โปรแกรมนี้ ดังนั้นพิมพ์อะไรบางอย่างในตัวพิมพ์เล็ก สิ่งที่พวกคุณต้องการพิมพ์? ตะโกนออกมาบางสิ่งบางอย่าง สิทธิทั้งหมด Charly เพียงแค่เดินเข้ามาใน เราจะพิมพ์ชื่อของ Charly Charly ในตัวพิมพ์เล็ก และหวังว่าหวังว่านี้เป็น จะตะโกนออกมาและคายออกมา Charly ตัวพิมพ์ใหญ่ เย้! ไม่ทุกคนเข้าใจว่า ผมไปเกี่ยวกับการแก้ที่? วิธีการที่ฉันสามารถ จัดการโดยใช้จำนวนเต็ม เพื่อแก้ปัญหาบางอย่างที่ ฉันต้องการจะทำในสตริง เพราะตัวอักษรและสามารถจำนวนเต็ม ถูกอ้างถึงในทางเดียวกันเพราะ ของการทำแผนที่ ASCII เพื่อที่จะกลับไปที่จุดของคุณถ้าผม ต้องการที่จะนำนี่แทน 32 พิมพ์ใหญ่ A ลบตัวพิมพ์เล็กเช่นเดียวกับ ที่ที่จะทำงานอย่างเท่าเทียมกันเป็นอย่างดี เนื่องจากว่าเป็นเพียงแค่ ความแตกต่างระหว่างทั้งสองค่า ถ้าผมต้องการที่จะทำให้ charly again-- นี้ ไม่นะ. ผมคิดว่าเราเดินไปทางที่ผิดใช่? ผู้ชม: [ไม่ได้ยิน] ตัวพิมพ์เล็ก ANDI PENG: มีคุณไป อือ และถ่มน้ำลายออก charly ดังนั้นควรระมัดระวังเมื่อ คุณกำลังลบค่า ที่ต้องจำไว้เป็นที่หนึ่ง มากขึ้นกว่าที่อื่น ๆ ยกตัวอย่างเช่นที่นี่ฉันลืม ตัวพิมพ์เล็กที่เป็นจริง มากกว่า A. พิมพ์ใหญ่ดังนั้นเมื่อผม พยายามที่จะลบพวกเขาวิธีการอื่น ๆ รอบที่ผมได้รับในเชิงลบ 32 และคอมพิวเตอร์ของฉันก็ชอบ ผมไม่ทราบว่ามันคืออะไร มันน่าจะเป็นเพียงบางส่วนแบบสุ่ม ค่าที่ไม่ดีมาก และเพื่อให้แน่ใจว่าคุณ การลบความยาวที่ถูกต้อง เพื่อหาตัวอักษรที่คุณต้องการ ตกลง. เป็นคนสับสนกับวิธีที่เรา ไปเกี่ยวกับการเขียนฟังก์ชั่นนี้หรือไม่? ตกลง. ดังนั้นจริงฟังก์ชั่นแล้ว ที่มีอยู่ในห้องสมุดที่เรียกว่า ctype.h ห้องสมุดที่เรียกว่า ctype.h ฟังก์ชั่นนี้เป็นจริง เขียนแล้วสำหรับคุณ มันเรียกว่าการบน และอื่น ๆ เพื่อวัตถุประสงค์ในการ pset นี้คุณกำลังจะ จะพบว่าคุณอยากจะใช้ จำนวนมากที่มีฟังก์ชั่นที่มีอยู่ ภายในห้องสมุด ctype หากต้องการบนเพื่อลดเป็นบนเป็น lower-- ผู้ที่มีฟังก์ชั่นทั้งหมด ที่คุณจะสามารถที่จะใช้มาก อย่างรวดเร็วในรหัสของคุณเองที่ ไม่ว่าสิ่งนี้ไม่ เราเขียนวิธีการแปลง สตริงเป็นตัวพิมพ์ใหญ่ แต่นี้เป็นจริงรหัส ที่คนอื่นได้เขียน และที่คุณสามารถเข้าถึง ผ่านทางที่แตกต่างกันฟังก์ชั่น ใช่? ผู้ชม: ดังนั้นคุณเพียงแค่คัดลอกให้อยู่ในนั้น และทำมันทุกตัวอักษรเดียว? ANDI เป็ง: ใช่เพราะฉันทำไม่ได้ ดูแลเกี่ยวกับค่าของที่ ฉันเพียงแค่สนใจว่าความแตกต่าง ระหว่างพวกเขาเป็น 32 ใช่มั้ย? ความแตกต่างระหว่างตัวพิมพ์เล็ก ขพิมพ์ใหญ่และบี 32 นอกจากนี้ยังมี และความแตกต่างระหว่างค และตัวพิมพ์ใหญ่ C อยู่เสมอ 32 ฉันเพียงแค่ต้องดูแลเกี่ยวกับ ความแตกต่างระหว่างทั้งสอง เพราะทุกตัวอักษร ตามรูปแบบที่เหมือนกันใช่มั้ย? ถ้าผมมีความแตกต่าง ระหว่างหนึ่งของพวกเขา ฉันรู้ว่าสิ่งที่แตกต่าง ระหว่างทั้งหมดของพวกเขาคือ คำถามที่ดี. ใช่ ทุกคนดีหรือไม่? ตกลง. Oop ตกลง. ดังนั้นแนวคิดอื่นที่เป็น จะเป็นประโยชน์อย่างมากในขณะที่คุณ ยังคงพัฒนา รหัสของคุณเป็นความคิดนี้ ฟังก์ชั่นการสร้างหรือสิ่งที่เป็นนามธรรม ดังนั้นตอนนี้เราได้นำพีชคณิตทั้งหมด ในพีชคณิตคุณได้รับการสอนว่ามี สิ่งที่ยอดเยี่ยมนี้เรียกว่าฟังก์ชั่น เครื่องที่ถ้าคุณ การป้อนข้อมูลหนึ่งประเภทของจำนวน มันจะทำงานผ่านการทำงานที่ยอดเยี่ยมนี้ และปรากฏออกเอาท์พุทที่แตกต่างกันใช่มั้ย? ในรหัสสิ่งเดียวกันที่เกิดขึ้น ในการเรียงลำดับของการทำงานใด ๆ ดังนั้นผมจึงสามารถทางร่างกาย เขียนในร่างกายของฉันของรหัสของฉัน คำสั่งหลักที่ไม่จริง สิ่งที่ร่างกายของรหัสจะทำ แต่นอกนั้นผมยังสามารถ เขียนฟังก์ชั่นที่แตกต่างกัน ที่จะทำสิ่งที่แตกต่างกัน ตัวอย่างเช่นเราได้แล้ว เริ่มใช้บางส่วนของพวกเขา Printf-- ว่าเป็น ฟังก์ชั่นที่คนอื่น ได้เขียนไว้แล้วว่า เราสามารถเรียกในรหัสของเรา เพื่อ upper-- ในกรณีนี้ upper-- เป็นฟังก์ชั่นอื่น เราได้เขียนว่าเรา สามารถโทรในรหัสของเรา ดังนั้นผมคิดว่าทำไม เรายังมีฟังก์ชั่น? ทำไมเราไม่เพียงป๋อมมัน ทั้งหมดในบรรทัดเดียวกันของรหัส? มันทำให้ง่ายสำหรับทุกคน ดีเหตุผลที่อยู่เบื้องหลังว่า เป็นครั้งแรกของทุกองค์กร มันน่ารำคาญจริงที่เกิดขึ้น รหัสผ่านของใครบางคน และเป็นหนึ่งในฟังก์ชั่นเช่น printf ถ้าพวกคุณรู้จริงว่า ฟังก์ชั่น printf ยกที่จะเขียน มันเป็นเช่น 1,000 สายรหัส ถ้ามีเวลาผมอยากทุก เพื่อ printf บางสิ่งบางอย่าง ฉันได้เขียน 1,000 สายรหัส ที่จะเป็นที่น่ารำคาญมากที่จะอ่าน ใช่มั้ย? นั่นคือเหตุผลที่เราได้เพียงแค่ สร้างฟังก์ชั่นนี้เป็นนามธรรม ที่เรามีอยู่แล้วใครบางคน อื่นได้เขียนที่อื่น และเวลาที่เราจำเป็นต้องใช้มันทุกคนใน รหัสของเราเราก็ต้องบอกว่า printf และนั่นคือสามารถที่จะใช้ฟังก์ชั่น คนอื่นได้เขียนไว้ในรหัสของเรา มันทำให้มันง่ายขึ้น องค์กรในการอ่านรห​​ัส ประการที่สองก็คือค​​วามเรียบง่าย มันง่ายขั้นตอนที่เรามี ที่จะใช้ในการแก้ปัญหาของเรา printf ฟังก์ชั่นเช่น printf, ฟังก์ชั่นเหมือนบน มีทุกสิ่งที่ช่วยให้เราสามารถ ลดความซับซ้อนของรหัสของเราลงเพื่อให้มันง่ายขึ้น และสิ่งสุดท้ายที่สามารถนำมาใช้เป็น ดังนั้นความจริงที่ว่าเรามี ฟังก์ชั่นที่เรียกว่า printf ที่เราสามารถเรียกแตกต่างกันมาก ครั้งและช่วยให้สามารถนำมาใช้ใหม่ ถ้าฉันจะเขียน printf, ฉันเขียนมันอีกครั้ง มันมีอยู่เฉพาะในที่สถานที่แห่งหนึ่ง ถ้าผมต้องการที่จะทำมันอีกครั้งผมจะ ต้องคัดลอกและวางทุกที่ เป็นสายที่สองของฉันของรหัส นั่นเป็นเหตุผลที่ว่าถ้าเราสร้างฟังก์ชัน ที่มีอยู่ด้านนอกของเราหลัก เราก็สามารถเรียกร้องให้ มันและนำมาใช้เมื่อใดก็ตามที่ เราจำเป็นต้องมีเพื่อที่จะง่ายขึ้นมาก สำหรับเราเป็นโปรแกรมที่จะเขียน ดังนั้นวิธีการที่เราจริงจะเขียน ฟังก์ชั่นจะคล้ายกันมากใช่มั้ย? นี้เป็นชนิดแรก ตัวอย่างเช่นในการที่เราจะ เห็นใช้ฟังก์ชั่นในรูปแบบ ที่แตกต่างจากของเรา int เป็นโมฆะหลัก ในกรณีนี้ถ้าผมต้องการที่จะ เขียนฟังก์ชั่นที่เรียกว่าคิวใช่มั้ย? และความคุ้มค่า int ที่นี่ เป็นสิ่งที่บอกฉัน สิ่งที่ฉันอยากให้เรื่องนี้ ที่จะกลับมาทำงานกับผมหรือเปล่า ถ้าผมต้องการที่จะ Cube จำนวนเต็ม ฉันจะต้องการที่จะป้อนข้อมูล เหล่านี้เป็นพารามิเตอร์ ฉันจะปัจจัยค่าของ int ชนิด และฉันจะกลับมา อีกชนิดของค่า int และในที่นี่เป็นคุณ สามารถมองเห็นสิ่งที่ผมกำลังทำอยู่ เป็นสิ่งที่ cubing การป้อนข้อมูลของฉันคือ เป็นผลผลิตของฉันและมันจะกลับมา ดังนั้นทุกฟังก์ชั่นนี้จะมีการ ใช้เวลาการเรียงลำดับของจำนวนเต็มบาง มันคูณมันด้วยตัวเองเป็นครั้งที่สอง เพื่อที่จะมีผลบังคับใช้ก้อน และจากนั้นก็จะส่งกลับ สิ่งที่มีการส่งออก ดังนั้นในกรณีนี้มันเป็นสองบรรทัด รหัสที่เรามีการเขียนเป็นพิเศษ แต่ถ้าเราอยากจะเรียก เมื่อหลาย ๆ ครั้งนี้ มันง่ายมากที่จะพิมพ์ว่า เส้นขวาที่นี่ที่อยู่ในก้อนกว่า ต้องผ่านหลายครั้ง ดังนั้นวิธีการใด ๆ ที่เป็นหลัก การจัดรูปแบบการเรียงลำดับของฟังก์ชั่นใด ๆ เป็นไปได้ที่มีอยู่ที่นี่เป็นเหมือน ดังนั้นเราจึงมีชื่อฟังก์ชัน ในกรณีนี้ก็เรียกว่าก้อน และเราชื่อมันเพราะก้อน มันเป็นเรื่องง่ายที่จะจำ คุณสามารถตั้งชื่อตารางและ มันสามารถจริงจะ cubed ไม่สำคัญ เพียงแค่ชื่อที่คุณเป็น กำหนดฟังก์ชั่นของคุณ สิทธินี้ที่นี่ int เป็น ชนิดของพารามิเตอร์ที่คุณต้องการ ดังนั้นสิ่งที่ฟังก์ชั่นนี้ ต้องเพื่อที่จะดำเนินการ? ดีก็ต้องป้อนข้อมูล ผมตั้งชื่อมันว่าการป้อนข้อมูล คุณสามารถตั้งชื่อสิ่งที่คุณต้องการ แต่ฉันต้องการสิ่งชนิด int ก็จะดำเนินการจริง สิ่งที่อยู่ภายในของที่นี่ ร่างกายของฟังก์ชัน และจากนั้นพิมพ์กลับ ที่นี่ int-- นี้ ทั้งหมดก็บอกผมคือ ที่ฟังก์ชั่นนี้ จะกลับมาหาเราใน int ดังนั้นมันจะใช้เวลาใน int และ มันจะทำให้คุณกลับมาเป็น int ไม่ทุกคนเข้าใจว่า การจัดรูปแบบชนิดนี้ทำงานอย่างไร เย็น ตกลง. ดังนั้นไม่ต้องกังวลว่านี้ดูเหมือนว่า สิทธินามธรรมน้อยในขณะนี้ นี่คือสิ่งที่เราจะพูดคุยเกี่ยวกับ เราจะดำน้ำในที่ลึก ในภายหลังในการเรียนการสอน วิธีการที่จัดเรียงของระดับที่สูงขึ้น ๆ นามธรรมเหล่านี้ทำงานสิ่ง คือว่าในความทรงจำใน เครื่องคอมพิวเตอร์ของคุณทุกอย่าง ถูกเก็บไว้ในประเภทนี้ ของสแต็คที่ผมจะพูดว่า ดังนั้นขึ้นอยู่ที่ด้านบน ผมไม่ทราบว่าคุณ คนจะเห็นว่าดี ผมจะพยายามซูมเข้า นี่คือที่ด้านบนเรา มีข้อความทางกายภาพ ของสิ่งที่คอมพิวเตอร์อยู่ interpreting-- ศูนย์ทั้งหมดและคนที่ มีอยู่ในเครื่องคอมพิวเตอร์ของเรา และแล้วเรามีการเริ่มต้น ข้อมูลและเตรียม, สิ่งที่เราเรียกตัวแปรทั่วโลก ดังนั้นตัวแปรที่มีอยู่ ทั่วทุกโปรแกรม และข้ามทั้งหมดของคุณ หลักรหัส ไม่ต้องกังวลถ้าพวกคุณมี ชนิดของการไม่มีความชัดเจนเกี่ยวกับเรื่องนี้ มันไม่ได้เรื่องจริงๆตอนนี้ แล้วเรามีสิ่งที่เป็น เรียกว่ากองในกอง คิดว่าสแต็คเป็นตัวอักษร เช่นเดียวกับสแต็คของสิ่งต่างๆ สแต็คที่แตกต่างกัน สิ่งที่ถูกผลักดันด้านบน ของแต่ละอื่น ๆ ที่จัดเก็บต่างๆ ตัวแปรและไวยากรณ์ที่อยู่ในรหัสของคุณ และแล้วที่นี่ที่ด้านล่างมาก เรามีตัวแปรสภาพแวดล้อม ของสิ่งที่คุณกำลังดำเนินการภายใน เพียงเส้นเล็ก ๆ น้อย ๆ ของคุณรหัส และเรากำลังจะซูม ในส่วนที่สแต็คที่เกิดขึ้นจริง ดังนั้นที่นี่ถ้าเราจะซูม เพียงในพื้นที่นี้ของสแต็ค, นี่คือสิ่งที่ดูเหมือนว่า และนี่คือสิ่งที่สำคัญสวยจริง เมื่อพวกคุณพูดคุยเกี่ยวกับฟังก์ชั่น เพราะแจ้งให้ทราบว่า ความทรงจำของคอมพิวเตอร์ของคุณ มีการจัดเก็บตัวแปร และฟังก์ชั่น และพารามิเตอร์ของทั้งสองของคุณ ฟังก์ชั่นและตัวแปรหลักของคุณ ในสถานที่ที่แตกต่างกัน ดังนั้นตอนนี้ที่สำคัญคือ ฟังก์ชั่นที่เกิดขึ้นจริง ว่าคุณกำลังดำเนินการในรหัส คุณได้พารามิเตอร์เก็บไว้ที่นี่ และตัวแปรท้องถิ่นเก็บไว้ที่นี่ ตัวแปรท้องถิ่นก็หมายความว่าตัวแปรใด ๆ ที่มีอยู่เฉพาะภายในฟังก์ชันที่ และด้านบนของมันคุณมีนี้ ฟังก์ชั่นที่แยกต่างหากที่เรียกว่าก้อน คุณมีที่พารามิเตอร์ เช่นเดียวกับชาวบ้านเหล่านั้น และเหตุผลที่คุณสามารถ ดูที่นี่เป็นว่าสิ่งที่ ที่เกิดขึ้นเมื่อก้อนจะใช้เวลาใน ค่าจากฟังก์ชั่นหลักของคุณ คือที่จริงมันคัดลอกว่ากว่า ดังนั้นถ้าผมอยากจะก้อน 2 และกลับ 8 ที่ 2 จะถูกป้อนเข้าจริง เป็นพารามิเตอร์และก็ คัดลอกไปเพื่อให้คุณมีมันมีอยู่ ในสองสถานที่ที่แตกต่างกันในความทรงจำ และคุณจะต้องระมัดระวังเป็นอย่างมาก ในความทรงจำซึ่งเป็นหนึ่งในบรรดา คุณจริงจัดการ และตัวอย่างของสิ่งที่เกิดขึ้น ที่จะเป็นมากที่เลวร้ายมาก มีอยู่ที่นี่ ดังนั้นที่นี่ฉันได้มีในทางทฤษฎี โปรแกรมที่นี่ฟังก์ชั่นหลัก ที่ฉันประกาศ int x เท่ากับ 1 ฉันประกาศ int y ที่อื่นเท่ากับ 2 และจากนั้นผมใช้มัน ผ่านฟังก์ชั่นนี้ ที่เรียกว่าการแลกเปลี่ยนที่ฉันคิดว่า มันสลับสองค่า แล้วฉันกำลังจะไป พิมพ์ออกใช่มั้ย? นั่นคือสิ่งที่ฉันต้องการโปรแกรมนี้จะทำอย่างไร ถ้าอย่างนั้นเรามาลงและใช้เวลาดู ดังนั้นถ้าจริงผมเขียนที่แตกต่างกัน ฟังก์ชั่นที่คุณสามารถดู เรามีหน้าที่หลักของเราที่นี่ แล้วเรามีของเรา ฟังก์ชั่นที่สองที่นี่ แลกเปลี่ยนความว่างเปล่า เป็นโมฆะก็หมายความว่ามันเป็น จะไม่กลับอะไร ชื่อฟังก์ชั่น ที่เรียกว่าการแลกเปลี่ยนและก็ จะบริโภคสองตัวแปร int และ int ขจากการทำงานของคุณ [ไม่ได้ยิน] เพื่อเป็นหลักในที่นี่เรา ผ่าน x และ y ในการทำงานนี้ และถ้าเราจะ สร้าง this-- ดังนั้นเราจึงต้องการ เพื่อสร้างมูลค่าชั่วคราวใช่มั้ย? เรากำลังจะไปกำหนดว่าไป แล้วจะไปตอนนี้เท่ากับข และขเป็นไปได้กลับมา ที่มีค่าอุณหภูมิได้, ซึ่งเป็นเพราะเมื่อ คุณต้องการที่จะแลกเปลี่ยนสิ่งที่ คุณก็ไม่สามารถแลกเปลี่ยนพวกเขาชอบ คุณจะต้องให้ออก ที่นี่เพื่อที่จะจำได้ว่า ว่ามันคืออะไรเพราะเมื่อ คุณสลับหนึ่งที่คุณลืม สิ่งที่ว่าค่าเดิมใช่มั้ย? ดังนั้นในทางทฤษฎีโปรแกรมนี้ ควรจะทำงานใช่มั้ย? ถ้าผมต้องการที่จะสลับ สองพวกเขาควรจะสลับ ดังนั้นขอเรียกมันและดูว่าการทำงาน ดังนั้นในขณะที่พวกคุณสามารถดู x ครั้งหนึ่งเคยเป็นที่ 1 และ y ที่ครั้งหนึ่งเคยเป็นที่ 2 และถ้าผมพิมพ์ออกมา x ยังคงเป็นที่ 1 และปี 2 อืมโปรแกรมนี้ไม่ได้ดูเหมือนจะเป็น วิธีการทำงานที่ฉันต้องการมันในการทำงาน ไม่มีใครต้องการที่จะใช้กระสุนที่ คาดเดาว่าทำไมถึงเกิดขึ้น? มันมีจะทำอย่างไรกับวิธีการที่ สิ่งที่แตกต่างที่มี เก็บไว้ในสถานที่ที่แตกต่างกันในความทรงจำ ตกลง. ดังนั้นพวกคุณไม่ต้องกังวล มากเกินไปเกี่ยวกับเรื่องนี้ได้ในขณะนี้ แต่รู้ว่าก้อนของท้องถิ่น เป็นตัวแปรและ b เพราะที่นี่ในการทำงานของเรา เราได้ประกาศและ b เป็นตัวแปรที่มีอยู่ ภายในก้อนฟังก์ชั่นที่ แต่ในขณะที่คุณสามารถดูพารามิเตอร์ที่ มันใช้เวลาในการถูกเก็บไว้ที่นี่ แต่เราก็ไม่จริง กลับอะไร เราไม่ได้มีการเปลี่ยนแปลงจริง x และ y เราเป็นเพียงแค่การเปลี่ยนและ b เราได้คัดลอก x และ y เข้าไป สิ่งที่เรียกว่า a และ b แต่เราไม่เคยจริง จัดการ x และ y ตัวเอง พวกคุณเห็น วิธีการที่เกิดขึ้น? คือการที่เราได้คัดลอกเพียงแค่มัน มากกว่า แต่เรายังไม่ได้เก็บไว้จริง การติดตามของพวกเขาอยู่ที่ไหนในหน่วยความจำ และดังนั้นตอนนี้เครื่องคอมพิวเตอร์ ที่กำลังมองหาโอ้ฉัน เรียกสิ่งนี้ผ่าน ฟังก์ชั่นนี้น่ารัก แต่ x และ y ยังคง x และ y ไม่มีอะไรเกิดขึ้นกับ พวกเขาเพราะความจริงที่ ที่พารามิเตอร์เหล่านั้น และตัวแปรท้องถิ่น ถูกเก็บไว้ในที่แตกต่างกัน สถานที่ในหน่วยความจำ และนี่เป็นระดับที่สูงขึ้น แนวคิดที่เราจะ เริ่มเห็นในภายหลังในการเรียนการสอน แต่ก็รู้ว่านี่คือ ปัญหาที่สามารถเกิดขึ้น และที่เราจะคิดออกวิธีการในการ จัดการกับเรื่องนี้ในภายหลังในการเรียนการสอน ตกลง. ทั้งหมดขวา ดังนั้นแนวคิดที่ผ่านมาเรา จริงที่เกิดขึ้นเพื่อให้ครอบคลุม ที่จะเป็นประโยชน์ สำหรับ pset สัปดาห์นี้ เป็นสิ่งที่ถูกเรียกว่า อาร์กิวเมนต์บรรทัดคำสั่ง ดังนั้นร็อบในการบรรยายของเขาเดินผ่าน ชนิดของสั้น ๆ เกี่ยวกับวิธีการทำงานเหล่านี้ รู้ว่าเป็นหลัก เมื่อคุณเขียน เช่นฟังก์ชั่นหลักเมื่อเรา เขียนฟังก์ชั่นมาก่อนในอดีตที่ผ่านมา เรามี int เป็นโมฆะหลัก และเหตุผลที่เราต้องมีช่องว่าง เป็นเพราะโปรแกรมของเราไม่ได้ จำเป็นที่จะต้องใส่ค่าในการทำงานใช่มั้ย? เมื่อฉันวิ่งมาริโอฉันไม่จำเป็นต้อง ที่จริงเพียงแค่พิมพ์ในบางสิ่งบางอย่าง เมื่อฉันวิ่งมาริโอ ฉันจะแจ้งให้ผู้ใช้ในภายหลัง แต่ที่จะไม่ได้เป็นกรณีที่ ยกตัวอย่างเช่นในเรื่องนี้ กำหนดปัญหาของสัปดาห์ คุณกำลังจะถูกถามว่าใน นอกเหนือจากการใช้โปรแกรมของคุณ คุณจะต้องการที่จะใส่ สิ่งบางอย่างในตรงตามที่คุณ เรียกใช้โปรแกรมของคุณ ดังนั้นวิธีการที่เราทำที่เรียกว่า อาร์กิวเมนต์บรรทัดคำสั่งที่ เป็นเหมือนการโต้แย้ง คุณสามารถป้อนข้อมูลโดยตรง ในขณะที่คุณกำลังพยายามที่จะเรียกใช้โปรแกรมของคุณ ดังนั้นสัญกรณ์นี้ มันซับซ้อนที่ดูสวย แต่จริงๆไม่ได้ว่า ยาก ดังนั้น int main-- นั่นเป็นเพียงฟังก์ชั่นหลักของคุณ เข้าสู่ argc สตริงจุลภาควงเล็บ argv ดังนั้นสิ่งที่บอกว่าขณะนี้ int argc-- ทั้งหมดที่บอกคุณ คือผู้ที่มีจำนวน ข้อโต้แย้งคอมพิวเตอร์ควรคาดหวังว่า ดังนั้นสิ่งหนึ่งที่เป็นจริง สิ่งสำคัญที่ต้องติดตาม เป็นชื่อทางกายภาพของโปรแกรมของคุณ นับเป็นหนึ่งในข้อโต้แย้งเหล่านั้น ดังนั้นถ้าผมต้องการที่จะมีโปรแกรมของฉัน ทำงานบวกบรรทัดคำสั่งอีกหนึ่ง อาร์กิวเมนต์ฉันจริง จะมีสอง argc จริงไปได้ที่สอง และแล้ว argv สตริง bracket-- ทุกสิ่งที่จะทำ มันทำให้ฉัน อาร์เรย์ของสตริงที่ จะเป็นเพียงการแสดงและการจัดเก็บสิ่งที่ ทั้งหมดของอาร์กิวเมนต์บรรทัดคำสั่งเหล่านั้น ดังนั้นสำหรับตัวอย่างเช่นถ้าผมต้องการที่จะมีนี้ โปรแกรม ./copy INFILE OUTFILE ใช่มั้ย? นั่นเป็นเพียงคำสั่ง Linux ทั่วไป สิ่งที่เป็นจริง argc? วิธีอาร์กิวเมนต์บรรทัดคำสั่งจำนวนมาก จะมีจริงในเรื่องนี้? ทั้งหมดนี้ไม่สามารถทำสำเนาของ INFILE ของชื่อของหนึ่งไฟล์ และสำเนามันเข้าไป ไฟล์อื่นใช่มั้ย? นั่นคือทั้งหมดนี้จะทำ ที่คุณสามารถดูฉันทำมันในหนึ่งบรรทัด โดยไม่จำเป็นต้องมีโปรแกรม เป็น argc ของเราในกรณีนี้คืออะไร? วิธีการขัดแย้งต่างๆที่เรามี? ผู้ชม: สาม? ANDI เป็ง: เรามีสามว่า ดังนั้นจึงเป็นที่ใช้งานง่ายมากที่จะ เพียงแค่คิดว่ามันเป็นเพียงแค่ INFILE OUTFILE และ แต่รู้ไหมว่าชื่อของทางกายภาพ โปรแกรมที่คุณกำลังใช้งานนับเป็นหนึ่ง ดังนั้นในกรณีนี้ argc เป็นจริงสาม วิธีการเกี่ยวกับสิ่งที่เป็น argv 0? โปรดจำไว้ว่าทั้งหมดของ อาร์กิวเมนต์บรรทัดคำสั่ง ถูกเก็บไว้ในอาร์เรย์ของสาย ดังนั้นถ้าผมพยายามที่จะเข้าถึงสิ่งที่ จะ argv วงเล็บ 0 ให้ฉัน? ผู้ชม: [ไม่ได้ยิน] ANDI PENG: แน่นอน มันจะให้ฉันจุด เฉือนสำเนาเนื่องจากว่าเป็น องค์ประกอบที่ 0 ที่ องค์ประกอบแรกของอาร์เรย์ของฉัน สิ่งที่เกี่ยวกับ argv 1 ผู้ชม: INFILE ANDI PENG: INFILE ว่า สิ่งที่เกี่ยวกับ argv 2? ผู้ชม: OUTFILE ANDI PENG: OUTFILE นี้เป็นบิตหากินในขณะนี้ สิ่งที่พวกคุณคิดว่า argv 3 เป็นไปได้ให้ฉัน ถ้าผมพยายามที่จะพิมพ์ที่ออกมา? ผู้ชม: [ไม่ได้ยิน] ANDI PENG: คุณมีมือขึ้นมา? ใช่ ผู้ชม: ทางเลือก ANDI PENG: แน่นอน ดังนั้นจำในการบรรยายที่เรา มีในตอนท้ายของการแข่งขันบางสิ่งบางอย่างที่ เรียกว่าเทอร์มิ null? เราจะได้รับในเรื่องนี้ เพิ่มเติมเกี่ยวกับในชั้นเรียน แต่รู้ว่าในสัญกรณ์ วิธีที่เครื่องคอมพิวเตอร์ของคุณ รู้ว่ามันเป็นที่สิ้นสุด ของอาร์เรย์คือว่ามัน ทำให้สิ่งที่เรียกว่า null เทอร์มิหรือเส้นประศูนย์ ดังนั้นถ้าคุณพยายามเข้าถึง argv 3 คุณกำลังจะตีรีบนี้ 0 นี้เป็นมากยิ่งขึ้นของคำถามเคล็ดลับ สิ่งที่เกี่ยวกับ argv 4? ดังนั้นนี่คือเทอร์มิ null ที่ผ่านมา ที่ผ่านมาขอบเขตของอาร์เรย์ของเรา คุณคิดว่าจะทำอะไร เกิดขึ้นเมื่อเราพยายามที่จะทำเช่นนั้น? ผู้ชม: [ไม่ได้ยิน] ANDI PENG: ขออภัย? บอกได้เลยว่าบิตดังหรือไม่? ผู้ชม: [ไม่ได้ยิน] ANDI เป็ง: ใช่ นั่นคือชื่อของ พื้นที่ส่วนใหญ่มีแนวโน้มที่คุณจะได้รับ แต่รู้ว่า argv 4-- ที่ช่วยให้คุณเข้าถึง สถานที่ในของเครื่องคอมพิวเตอร์ของคุณ หน่วยความจำที่คุณจริงๆ ไม่ควรสัมผัสเพราะ ตอนนี้คุณรู้ว่าสิ่ง argv เป็น คุณจะรู้ว่ามันเป็นอาร์เรย์ขนาด 3 ที่มีจุดคัดลอกและ INFILE OUTFILE ถ้าคุณพยายามที่จะไปไกลกว่านั้น ที่คุณผ่านมาเทอร์มินัล คอมพิวเตอร์ของคุณมีอาจจะ บางสิ่งบางอย่างที่เก็บไว้ใน argv 4 และคุณไม่ควรจะเป็น ได้รับอนุญาตให้เข้าไปในการเข้าถึง argv 4 เพราะคุณมีไฟล์ คณะรัฐมนตรีและคุณเท่านั้น อนุญาตให้เข้าถึงทั้งสามชั้น แต่ถ้าคุณพยายามที่จะเข้าถึงทางเหนือ การเก็บรักษาของที่คุณจะได้รับอนุญาตให้ คุณกำลังจะเริ่มต้นการล้อเล่นกับ สิ่งอื่น ๆ ในหน่วยความจำของคอมพิวเตอร์ของคุณ ที่เป็นไปได้จริงๆดีจริงๆ ดังนั้นเพียงแค่รู้ว่า โปรดใช้ความระมัดระวังมากที่คุณ ไม่เพียงแค่การสุ่มเริ่มต้น การเข้าถึงองค์ประกอบในอาร์เรย์ที่ ไม่ได้อยู่ในสิ่งที่คุณต้องการที่จะสร้าง อือ ตกลง. ดังนั้นเรากำลังจะทำอีก ตัวอย่างเช่นเทอร์มินี่ ตกลง. ดังนั้นร็อบได้อย่างรวดเร็วในการบรรยาย วันอื่น ๆ ไป ผ่านตัวอย่างนี้เขาอยู่ที่ไหน มีหลัก int int argc argv สตริง วงเล็บซึ่งจะบอกฉันว่าฉัน จะมีอาร์กิวเมนต์บรรทัดคำสั่ง เขามีถ้า argc เท่ากับ เท่ากับ 2-- จำ เท่ากับเท่ากับหมายถึงการเปรียบเทียบ ถ้ามันเท่ากับ 2 แล้วฉัน จะพิมพ์สวัสดี สิ่งแรก องค์ประกอบของอาร์เรย์คือ พิมพ์อื่นสวัสดีโลก นี่คือสิ่งที่จะไป เกิดขึ้นเป็นหลัก? เพียงแค่คนที่สามารถอธิบายใน ภาษาอังกฤษสิ่งที่โปรแกรมนี้จะทำ? ใช่ ผู้ชม: ถ้ามีคนพิมพ์ลงในคำสั่ง และบอกว่าชื่อและนามสกุลของพวกเขา มันจะไม่ได้เป็นเพียงพิมพ์ ครั้งแรกและพูดว่าสวัสดี สิ่งที่ชื่อแรกของคุณคือ ANDI PENG: ตกลงให้ทำงานได้ ดังนั้นตัวอย่างเช่นถ้าผมจะทำ ไฟล์นี้ทำให้ to-- สวัสดีทักทาย to-- ทำในสิ่งที่คุณต้องการให้ฉันใส่? ผู้ชม: ชื่อและนามสกุล ANDI PENG: ชื่อและนามสกุล? ช่องว่าง? ผู้ชม: ใช่ ANDI PENG: ใครสามารถบอกได้ ฉันตอนนี้สิ่งที่เป็น argc? เพียงแค่ที่นั่น? โอ๊ะขอโทษ. ผมขอกลับไป วิธีอาร์กิวเมนต์บรรทัดคำสั่งจำนวนมาก are-- พวกคุณไม่สามารถจริงๆเห็น แต่ฉันจะพยายามที่จะขยาย ฉันกำลังพยายาม. ใช่มีสามใช่มั้ย? มันเฉือนจุดสวัสดี มันล่ะและก็เป็ง ดังนั้นสิ่งที่พวกคุณคิดว่านี้ โปรแกรมจะถูกพิมพ์ออกมา? โอ้ โอ้ขอโทษ. ชื่อที่ไม่ถูกต้อง มันพิมพ์ออกสวัสดีโลก ไม่มีใครต้องการที่จะอธิบาย เหตุผลที่เกิดขึ้น? ใช่? ผู้ชม: [ไม่ได้ยิน] ANDI PENG: แน่นอน ดังนั้นที่นี่เป็นเงื่อนไข คือถ้า argc เท่ากับเท่ากับ 2 ดังนั้นเฉพาะในกรณีที่มี สองอาร์กิวเมนต์บรรทัดคำสั่ง แล้วฉันจะพิมพ์ สวัสดีสิ่งที่เป็น แต่อย่างอื่นฉันจะ เพียงแค่พิมพ์สวัสดีโลก ดังนั้นคนที่ไม่ต้องการ จะให้ฉันตัวอย่าง ของวิธีการที่ฉันจะสามารถจริง ได้รับมันในการพิมพ์ค่าของ argv 1? สิ่งที่ผมจะต้องป้อนข้อมูลที่นี่? เพียงสิ่งเดียวใช่มั้ย? เพราะสวัสดีจุดไปแล้ว นับเป็นอาร์กิวเมนต์แรก ฉันมีเพียงหนึ่งที่มากขึ้น ดังนั้นจุดสวัสดีถ้าฉันเพียงแค่ทำแล้วล่ะ สวัสดี Andi ทุกคนไม่เข้าใจ เหตุผลที่เกิดขึ้น? ใช่ ผู้ชม: ดังนั้นช่องว่างระหว่างที่ line-- คำสั่งมัน [ไม่ได้ยิน] ANDI PENG: เลขที่ ดังนั้นพื้นที่ในบรรทัดคำสั่งที่ อาร์กิวเมนต์ x เพื่อที่จะบอกคอมพิวเตอร์ของคุณ ว่านี่คือจุดเริ่มต้นของสตริงใหม่ ดังนั้น argv สตริง here-- เก็บไว้ ทั้งหมดของอาร์กิวเมนต์บรรทัดคำสั่งของคุณ ในสาย และเพื่อให้พื้นที่ในบรรทัดคำสั่ง argument-- สิ่งที่ไม่สามารถบอกคุณ นี้เป็นที่สิ้นสุดของสตริง และก็ถึงเวลาที่จะย้ายไปที่อื่น ใช่ นี้เป็นสิ่งสำคัญสวย pset ของคุณเพราะคุณ จะได้รับการทดสอบเหล่านี้ ดังนั้นไม่มีใครมี คำถามใด ๆ เกี่ยวกับเรื่องนี้? ตกลงเย็น ใช่? ผู้ชม: ดังนั้นเหตุผลที่คุณจะ ใส่คำนวณอาร์กิวเมนต์จำนวนเต็มแทน ของ [ไม่ได้ยิน] จะเป็นเมื่อคุณต้องการ พิมพ์ข้อมูลเพิ่มเติม [ไม่ได้ยิน] ANDI เป็ง: ใช่ว่า บางโปรแกรมจะทำให้คุณต้อง ใส่อาร์กิวเมนต์บรรทัดคำสั่ง ที่มันผ่านไปและที่ใช้ว่า ใช่ ผู้ชม: ดังนั้นสิ่งที่ถ้า [ไม่ได้ยิน] ANDI PENG: ดีทำในสิ่งที่ฉันมี ที่จะเปลี่ยนแล้วในโปรแกรมของฉันได้อย่างไร ผู้ชม: เพ​​ียงแค่ 3 ANDI PENG: ทำไมว่า ที่เกิดขึ้นคุณคิดว่า? ผู้ชม: เพ​​ราะ [ไม่ได้ยิน] ผู้ชม: คุณจะต้อง เปลี่ยนเป็น 2 [ไม่ได้ยิน] ผู้ชม: 1 และ 2 ANDI PENG: 1 และ 2 ว่า ดังนั้นในกรณีนี้คุณอาจจะ ต้องการที่จะมีสอง printf statements-- หนึ่งที่พิมพ์ argv ที่ 1 และ คนที่พิมพ์ argv 2 ที่นี่ ที่จริงผมสามารถทำเช่นนั้นจริงอย่างรวดเร็ว มีคุณไป โอ้ ไม่มากสิ่งที่คุณต้องการ แต่ระเบียบถ้าพวกคุณไปรอบ ๆ ด้วย การจัดรูปแบบก็จะออกมา ใช่ เย็น ฉันรู้ว่าเรากำลังบิตในเวลาสั้น แต่ฉันแค่จะไปใช้จ่ายได้อย่างรวดเร็ว สองสามนาทีจะผ่าน helpful-- ผู้ชม: คุณมีสองนาที ANDI PENG: ฉันมีสองนาที? ขอขอบคุณ. เคล็ดลับ pset อย่างรวดเร็ว ดังนั้นสำหรับ pset นี้ผมขอแนะนำ ชอบพูดว่าทุกคนที่จะอ่านข้อมูลจำเพาะ คุณจะได้รับการเขียนสาม programs-- หนึ่ง เรียกว่า initials.c หนึ่งเรียกว่า caesar.c, อย่างใดอย่างหนึ่งที่เรียกว่า vigenere.c เคล็ดลับสำคัญที่ พวกคุณต้องการ ไปเก็บไว้ใน mind-- ดังนั้น มีฟังก์ชั่นนี้ เรียกว่าเป็น atoi-- ผมชอบที่จะพูดว่าทรัวส์ ไม่มีความชัดเจนว่าที่ จริงวิธีที่คุณพูดมัน แต่ทั้งหมดที่มันทำก็ป้อน มันจะแปลงสตริงเป็น int ดังนั้นแสดงให้เห็นถึงการ ASCII ฉันจำนวนเต็ม มันเป็นเพียงแค่การแปลง ASCII ค่าค่าจำนวนเต็ม ดังนั้นจำ argv อาร์เรย์ที่ร้านค้า ทุกคำสั่งของคุณสาย arguments-- จะเก็บพวกเขาทั้งหมดเป็นสตริง ดังนั้นถ้าคุณต้องการที่จะสามารถ มีหนึ่งในพวกเขากลายเป็นจำนวนเต็ม คุณกำลังจะมี ที่จะใช้ค่านี้ที่นี่ Modulo เหมือนอย่างที่เราได้รับการคุ้มครอง ก่อนหน้านี้ในชั้นเรียนในวันนี้ ช่วยให้คุณสามารถที่จะมี ที่เหลือของสิ่งที่คุณมี ดังนั้นถ้าเรามีจริงๆ จำนวนมากในซีซาร์ สิ่งที่ถ้าเรามีที่สิ้นสุด ของสตริงของ Vigenere หรือไม่? วิธีการที่คุณจะสามารถ ที่จะได้รับการห่อรอบ? ถ้าผมตีซีและฉันต้องการ มันจะกลับไปที่ วิธีการที่ฉันจะได้รับ ที่จะตัดรอบ? อาจจะต้องการที่จะใช้ โมดูโลในมีบาง ประการที่สองเรียกดูรอบ ๆ ห้องสมุดของคุณ ctype.h นั่นคือห้องสมุดใหม่ที่เรามี คุณจะพบจำนวนมากจริงๆ ประโยชน์ functions-- isupper, islower, toupper, ToLower, isalpha ฯลฯ ฟังก์ชั่นทั้งหมดที่จะเป็นประโยชน์มาก เมื่อคุณกำลังพยายามที่จะคิดออก เป็นตัวละครตัวนี้เป็นตัวอักษรตัวพิมพ์เล็ก? ฉันจะแปลงนี้อย่างไร สตริงเป็นตัวพิมพ์ใหญ่อยู่แล้ว? ทุกสิ่งเหล่านี้จะเป็นมาก ที่เป็นประโยชน์มากสำหรับ pset ของคุณ ตกลง. เวลาทำการคืนนี้เป็น 8:00 11:00 ใน TEAL ห้องเรียนในวันพรุ่งนี้ เช่นเดียวกับวันพุธและวันพฤหัสบดี เวลาทำงานอยู่ในคอมมอนส์ ขอแนะนำพวกคุณ ทั้งหมดเริ่มต้นทันที เพราะคุณไม่ต้องการที่จะเป็นไปได้ว่า เด็กที่คืนวันพฤหัสบดีที่มีปัญหา ส่ง pset ของคุณและ เหมือนผมไม่ทราบว่าจะทำอย่างไร ผมเริ่มผมเสร็จแล้วฉันส่ง พยายามที่จะให้ตัวเองห้องพักบาง เพราะในปัญหาที่เกิดขึ้นได้เสมอรหัส คุณต้องการให้แน่ใจว่า ที่คุณให้ตัวเอง มากเวลาที่จะสามารถ ที่จะเสร็จสมบูรณ์ psets เย็น ฉันจะไปเที่ยวรอบ ๆ ที่นี่ ผู้ชม: Is ออนไลน์นี้แล้ว ANDI เป็ง: ผมไม่ทราบว่ามันเป็น ออนไลน์แล้ว แต่มันจะเป็น ฉันจะไปเที่ยวรอบ ๆ ที่นี่ถ้าใคร มีคำถามใด ๆ อยู่แล้ว ขอบคุณที่มา.