[เล่นเพลง] DAVID ลัน: สวัสดีทุกคน นี่คือ supersection CS50 ของ ส่วนที่ได้รับมอบหมายจะไม่ เริ่มต้นอีกสัปดาห์ ดังนั้นในวันนี้ฉันอยู่ที่นี่ with-- มาเรีย: มาเรีย DAVID ลัน: --to จริง ดูที่ปัญหา ตั้งหนึ่งของหลักสูตร สัปดาห์แรกของวัสดุ คุณได้รับการมุ่งเน้นกับ IDE CS50 บิต ลินุกซ์ระบบปฏิบัติการที่ ที่ทำงานบน IDE เช่นเดียวกับ ดูที่บางส่วนของการเปลี่ยนแปลง จากรอยขีดข่วนที่จะ C ชั้นนำ ถึงปัญหาที่เกิดขึ้นตั้งหนึ่ง โดยไม่ต้องกังวลใจต่อไป ปัญหาในการตั้งค่าหนึ่ง คุณกำลังจะได้รับ แนะนำให้รู้จักกับ CS50 IDE ซึ่ง คือการเขียนโปรแกรมบนเว็บนี้ สภาพแวดล้อมที่เราใช้ในการสั่งซื้อ ในการเขียนโปรแกรม มันถูกออกแบบให้มีลักษณะมาก เตือนความทรงจำของคอมพิวเตอร์ทั่วไป ระบบที่ใช้ปฏิบัติการ ระบบที่เรียกว่าลินุกซ์ แต่มันอยู่ในระบบคลาวด์ที่เรียกว่า ซึ่งหมายความว่าทุกคนในชั้นเรียน จริงจะมีของเขาหรือเธอ บัญชีของตัวเองและใช้งานได้เป็นอย่างดี ดังนั้นส่วนใหญ่ของคุณอาจจะไม่เคยใช้ สภาพแวดล้อมลินุกซ์ก่อนหรืออาจจะ แม้สภาพแวดล้อมที่บรรทัดคำสั่ง และบรรทัดคำสั่ง สภาพแวดล้อมที่แตกต่างกัน มันเป็นเรื่องเกี่ยวกับใจทั้งหมด มันเป็นคำสั่งแป้นพิมพ์ทั้งหมด และก็ไม่มีการเลื่อนเมาส์ที่ไอคอนไม่มี ไม่มีหน้าต่างสนทนาไม่มีเมนู มันเป็นข้อความอย่างหมดจด ดังนั้นในตอนแรกมันชนิด ของความรู้สึกเหมือนขั้นตอน ย้อนกลับไปในแง่ของความซับซ้อน แต่มันสิ้นสุดขึ้นเป็นจำนวนมาก มีประสิทธิภาพมากขึ้นอย่างแน่นอน สำหรับนักวิทยาศาสตร์คอมพิวเตอร์ในท้ายที่สุด ดังนั้นลองมาดู นี่ฉันที่ CS50.io ผ่านที่ คุณสามารถเข้าสู่ CS50 IDE และเหมือนในรอยขีดข่วนมี สามพื้นที่หลักในหน้าจอนี้ ดังนั้นในด้านซ้ายมือเรามี สิ่งที่จะเป็นเบราว์เซอร์ไฟล์ และมีโฟลเดอร์นี้ที่ ด้านบนซึ่งเป็นตอนนี้ว่างเปล่า ตั้งแต่ผมได้กำจัดทั้งหมดของฉัน ไฟล์ก่อน supersection และนั่นคือสิ่งที่เราจะ บันทึกไฟล์ซีที่เราเขียน ที่ด้านบนขวาเรามีสถานที่ที่ ทั้งหมดของรหัสของเราจะได้รับการเขียน และแน่นอนถ้าฉันคลิกบวกนี้นี้ เป็นไปเพื่อให้ฉันเลือกแฟ้มใหม่ และที่นี่ฉันสามารถเริ่มต้นการเขียนรหัส C หรือ จริงๆจำนวนภาษาอื่น ๆ และจากนั้นที่ด้านล่างที่มัน กล่าวว่า jharvard @ ide50-- และของคุณจะ พูดอะไรบางอย่างเล็ก ๆ น้อย ๆ different-- สิ่งที่ได้นี้เรียกว่า? หน้าต่าง terminal ใช่. ดังนั้นหน้าต่าง terminal เป็น บรรทัดคำสั่งที่เรียกว่า อินเตอร์เฟซที่ผ่านที่คุณสามารถโต้ตอบ กับระบบปฏิบัติการที่รองรับ และสำหรับตอนนี้เรากำลังจะไป ทำให้การใช้งานน้อยมาก this-- เพียงเพื่อรวบรวมไปดูที่ ข้อผิดพลาดที่เราเห็น และเรียกใช้โปรแกรมของเรา แต่ในที่สุดเราจะ ที่จะทำมากขึ้นเช่นกัน และคุณยังสามารถติดตั้งซอฟต์แวร์ และการบริหารจัดการพื้นที่ทำงานของคุณ ภายใน CS50 IDE เช่นเดียว แต่เพิ่มเติมว่าบางเวลาอื่น ๆ ถ้าอย่างนั้นเราไปข้างหน้าและเขียน โปรแกรมที่ง่ายมากเพียงแค่ ไปผ่านอุ่นเครื่อง hello.c ซึ่งอาจจะเป็น โปรแกรมที่ง่ายเราสามารถเขียน ผมได้เปิดขึ้นแล้วแท็บใหม่ ฉันจะไปข้างหน้าและ รวมถึงการพูด io.h. มาตรฐาน แล้ว int main (void) และแล้ว printf ("สวัสดีโลก" n เครื่องหมายคำพูดอย่างใกล้ชิด วงเล็บใกล้ชิดและอัฒภาค ทั้งหมดขวา ดังนั้นตอนนี้สังเกตเห็นหน้าต่างของฉันคือไม่ได้ตั้งชื่อ ดังนั้นฉันไปอย่างรวดเร็ว ที่จะขึ้นไปที่ File, Save และมันเป็นสิ่งสำคัญที่ ที่ผมเรียกนี้ไม่ได้ "สวัสดี". ดังนั้นความผิดพลาดที่พบบ่อยมาก โดยเฉพาะอย่างยิ่งปัญหาการตั้งค่าหนึ่ง คือการตั้งใจเพียงโทรของคุณ โปรแกรม "น้ำ" หรือ "โลภ" หรือ "มาริโอ" หรือ "เครดิต" หรือชอบ แต่คุณต้องการจริงที่จะทำให้ แน่ใจว่าคุณมีนามสกุลไฟล์ เพราะนี่เป็นวิธีเดียวที่ คอมไพเลอร์และยังเป็นบรรณาธิการรหัส รู้ว่าคุณ จริงเขียนรหัส C เพื่อให้ฉันไปข้างหน้าและคลิกบันทึก และตอนนี้ก็เช่นกันสิ่งที่ CS50 IDE ได้ทำสำหรับเราคือก็ยัง ไวยากรณ์เน้นทุกอย่าง ดังนั้นก็ทำทุกอย่างที่มีสีสันมาก และวัตถุประสงค์ทั้ง ที่ไม่ได้ทำงาน มันเป็นเพียงแค่การวาดตาของฉันไป แนวคิดชิ้นส่วนต่างๆ ของโปรแกรมนี้ ถ้าอย่างนั้นเราไปข้างหน้าและรวบรวมนี้ และผมสามารถรวบรวมนี้ ในสองวิธี และในสัปดาห์ที่หนึ่ง ทางโรงเรียนเก่าที่เราทำ มันเป็นตัวอักษรที่ คำสั่ง line-- "เสียงดังกราว hello.c." แล้วฉันกด Enter และไม่มีอะไรที่น่าจะเกิดขึ้น ในหน้าต่าง terminal แต่สิ่งที่ไม่เปลี่ยนแปลงใน IDE? ที่ไหนอีกครั้ง IDE ก็หมายความว่า แบบบูรณาการการพัฒนาสิ่งแวดล้อม มันเป็นวิธีที่จินตนาการของบอก นี้พัฒนาแบบบูรณา สภาพแวดล้อมในการพัฒนาซอฟแวร์ ดังนั้นสิ่งที่ไม่เปลี่ยนแปลงใน UI? สิ่งที่คุณแจ้งให้ทราบล่วงหน้า ที่แตกต่างกันมาเรีย? มาเรีย: สิ่งที่ผมสังเกตเห็น ภายใต้ IDE50 โฟลเดอร์ได้ที่นี่ DAVID ลัน: ใช่ ดังนั้นที่นี่ไม่เพียง แต่ เราจะมี "hello.c." นอกจากนี้เรายังมี "a.out" ซึ่งเป็น ชนิดของชื่อใบ้สำหรับโปรแกรมที่ แต่แน่นอนว่ามันเป็นชื่อเริ่มต้นสำหรับ โปรแกรมเมื่อคุณเพียงแค่รวบรวมรหัสของคุณ และไม่ได้บอกคอมไพเลอร์ สิ่งที่ไฟล์เพื่อส่งออก ดังนั้นถ้าผมต้องการที่จะทำงานนี้ผม ต้องบอก compiler-- หรือมากกว่าที่ฉันต้อง บอกพื้นที่ทำงานที่ฉัน ต้องการที่จะเรียกใช้โปรแกรมที่เรียกว่า "a.out." เข้าสู่ และมี "สวัสดี โลก. "ตอนนี้" ./ " เป็นสิ่งที่สำคัญจริง ถึงแม้ว่าเราจะได้ตามปกติ เขียนชื่อของคำสั่งที่ เมื่อมันเป็นโปรแกรมคุณได้ เขียนคุณไม่ต้องการที่จะพูดว่า "./" เพราะที่บอกอย่างชัดเจนลินุกซ์ ที่คุณต้องการที่จะเรียกใช้โปรแกรมที่เรียกว่า "a.out" ที่อยู่ในนี้ที่จุด หมายถึงไดเรกทอรีนี้ว่าผมอยู่ในปัจจุบัน ในที่เกิดขึ้นจะ พื้นที่ทำงานที่เรียกว่า "a.out เพราะถ้าฉันเพียงแค่บอกว่า "a.out" ใส่ ฉันจะได้รับ "คำสั่งไม่ a.out พบ "เพราะ computer-- เพราะผมคิดค้น "a.out" มันไม่ได้มาพร้อมกับ computer-- ไม่ทราบว่าจะมองหามัน แม้ว่ามันจะเหมาะสม ภายใต้จมูกของฉันเพื่อที่จะพูด ตกลง. ดังนั้นเราจึงอาจมีการเปลี่ยนแปลงนี้ เป็น "เสียงดังกราว -o สวัสดี hello.c." และถ้าผมตีใส่สิ่งที่โปรแกรม นี้เป็นไปเพื่อการส่งออกสำหรับฉันหรือไม่ ชื่อของไฟล์คืออะไร? ใช่ในด้านหลัง ถูกตัอง. "สวัสดี." ดังนั้น "สวัสดี" เป็นไปได้ ชื่อของโปรแกรม เพราะเราได้ใช้สิ่งที่เรียกว่า คำสั่งอาร์กิวเมนต์บรรทัดซึ่งเป็นเพียง วิธีการของการเปลี่ยนแปลงพฤติกรรมของผู้ที่ คอมไพเลอร์เพื่อส่งออกจริง ชื่อแฟ้มที่เฉพาะเจาะจง และแน่นอนถ้าผมซูม ออกมาและมองขึ้นไปที่นี่ ตอนนี้ผมยังไม่ได้เท่านั้น "a.out" และ "hello.c" แต่ยัง "สวัสดี" เช่นเดียว ดังนั้นตอนนี้ฉันสามารถทำได้ "./hello," Enter และมี "สวัสดีโลก." แต่ lastly-- นี้ ในขณะนี้จะประชุม เราใช้ตลอด ภาคการศึกษา typically-- คุณยังสามารถเพียงแค่พูดว่า "ทำให้สวัสดี." และแน่นอนมันบอกว่ามันขึ้นอยู่ วันที่เพราะมันมีอยู่แล้ว ให้ฉันไปข้างหน้าและลบด้วย คำสั่ง RM ทั้ง "a.out" - และพูดว่า "เอา a.out แฟ้มปกติ?" นั่นก็หมายความว่าเป็นคุณ แน่ใจหรือว่าต้องการที่จะลบมันได้หรือไม่ ฉันจะบอกว่าใช่ และแล้วฉันจะลบ "สวัสดี" แต่ไม่ "hello.c." ฉันจะพูดว่า "ใช่" อย่างชัดเจน แต่ "Y" ก็เพียงพอแล้วเช่นกัน และตอนนี้ถ้าผมแจ้งให้ทราบล่วงหน้า พิมพ์ ls-- ซึ่งการเรียกคืน มันหมายความว่า list-- แสดงทั้งหมด ของไฟล์ในโฟลเดอร์ของฉัน และแน่นอนถ้าผมซูม ออกมาและมองไปที่มุมบนซ้าย มันยืนยันว่าสิ่งที่ ในโฟลเดอร์นี้แม้ แม้ว่าจะระบุว่าเป็น IDE50 ที่นี่ และพื้นที่ทำงานไม่ได้ก็เพียง "hello.c." ดังนั้นตอนนี้ลงมาที่นี่ถ้าฉัน ไม่ "ทำให้สวัสดี" Enter, ตอนนี้ฉันเห็นคำสั่งนาน แต่ คำสั่งที่ซับซ้อนมากขึ้นที่จะ ที่จะเป็นประโยชน์ในสัปดาห์ที่ผ่านมา และตอนนี้ฉันสามารถพูดว่า "./hello." ดังนั้นลองมาแนะนำอย่างรวดเร็ว บางคำสั่งลินุกซ์อื่น ๆ แล้วทำไมเราไม่ใช้ขั้นตอน กลับมาจริงและมองไปที่ C มากขึ้น โดยทั่วไปการเปลี่ยนจากรอยขีดข่วน ไปที่ C และจากนั้นปิดท้ายด้วยการดู ที่ปัญหาแรก ตั้งอยู่ในซีทั้งหมดขวา ดังนั้นฉันจะไปข้างหน้าและเพียงแค่ทำความสะอาด ขึ้นพื้นที่ทำงานของฉันกับการควบคุม-L เพียง เพื่อให้หน้าจอเรียบร้อย แต่ที่มีการทำงานไม่มี ผลกระทบเป็นอย่างอื่น จำได้ว่าเราเคยเห็น ไม่กี่คำสั่งในขณะนี้ ดังนั้นเราจึงได้เห็นเสียงดังกราวซึ่งโดยทั่วไปคุณ จะไม่ได้มีการดำเนินการด้วยตนเองอีกต่อไป เราจะใช้แทนให้ แต่เรายังเห็นคำสั่ง ls ซึ่งแสดงให้เห็น รายชื่อของไฟล์ในไดเรกทอรีของฉัน และตอนนี้ทำไม there-- มีสอง ไฟล์ตอนนี้ "สวัสดี" และ "hello.c." ทำไมจึงมีดาวหรือ ดอกจันหลังจาก "สวัสดี"? อะไรที่มีความหมายตาม ในสิ่งที่เราเห็นในหนึ่งสัปดาห์? คุณคิดอย่างไร? ดาวมีความหมายว่าอย่างไร มาเรีย: For-- โปรแกรม "สวัสดี" หรือไม่? DAVID ลัน: "สวัสดีครับ *" ใช่. โอ้ใช่? โอ้ปฏิบัติการ ถูกตัอง. ดังนั้นหมายความว่า "สวัสดี" เป็นที่ปฏิบัติการ ดังนั้นแน่นอนว่าทำไม ที่ฉันสามารถทำได้ "./hello." ทั้งหมดขวา ดังนั้นอะไรที่ฉันสามารถทำได้ในที่นี่? ดีก็จะเปิดออกที่ฉันสามารถทำได้ นอกจากนี้ยังสร้างไดเรกทอรี เพื่อให้ฉันไปข้างหน้าและสร้าง ตัวอย่างเช่น "pset1 directory" และปัญหาที่กำหนดสเปค จะช่วยให้คุณทำตรงนี้ ดังนั้นคุณจึงไม่ต้องจำไว้ในวันนี้ แต่ "mkdir pset1" ดูเหมือนว่า ที่จะมีผลกระทบ แต่อีกครั้งไม่มีข้อผิดพลาด โดยทั่วไปเป็นสิ่งที่ดี ดังนั้นถ้าผมพิมพ์ ls "" now-- อาตอนนี้ ฉันมีแฟ้มที่ปฏิบัติการที่เรียกว่า "สวัสดี" ไฟล์ C ที่เรียกว่า "hello.c." แล้วเฉือนท้ายเพื่อที่จะ พูดหมายความว่านี้เป็นไดเรกทอรี ดังนั้นแน่นอนตอนนี้ฉันต้องการที่จะเปิดมัน และฉันไม่ดับเบิลคลิกที่มันเหมือน ใน GUI เป็นสภาพแวดล้อมแบบกราฟิก ฉันแทนที่จะพูดว่า "ซีดี pset1." เข้าสู่ ไม่มีอะไรที่น่าสนใจดูเหมือนว่าจะมี ยกเว้นเกิดขึ้นพร้อมรับคำน้อยของฉัน here-- นี้เป็นวิธีที่ลินุกซ์เตือน ฉันที่ฉันดังนั้นสิ่งที่โฟลเดอร์เปิด มันเป็นเพียงแค่บอกฉันอย่างชัดเจน เมื่อเทียบกับกราฟิก และถ้าผมพิมพ์ ls "" ทำไมฉันจะดูอีก แจ้งทันทีที่คุณคิดว่า เมื่อฉันรายการเนื้อหาของ pset1 หรือไม่ มาเรีย: คุณอาจจะไม่ มีอะไรอยู่ในนั้น DAVID ลัน: ใช่ ดังนั้นแล้วเราไม่ได้เห็นได้ชัด สร้างสิ่งที่อยู่ในนั้น เพราะผมเพิ่งสร้างไดเรกทอรี ตอนนี้ถ้าผมต้องการที่จะสร้าง file-- สำหรับ เช่นผมสามารถสร้างไฟล์ใหม่ แล้วฉันจะไป บันทึกและบันทึกเป็น เช่น "mario.c" ถ้าคุณกำลังทำ รุ่นมาตรฐานของ pset หนึ่ง และแล้วเหมือน Mac หรือ PC เพียง เลือกโฟลเดอร์ "pset1 บันทึก และตอนนี้ไฟล์ที่ว่างเปล่า แต่ขอซูมเข้าอีกครั้งเป็นครั้งที่สอง ขอทำคำสั่ง ls ที่นี่ ตอนนี้เราเห็น "mario.c" จึงมีคำสั่งอื่น ๆ บางที่ มีมูลค่าการรักษาในใจมากกว่า time-- ชัดเจนหรือควบคุม-L คือสิ่งที่ฉันได้ รับการตี; mkdir ที่เราเคยเห็น; RM เราได้เห็นเป็นอย่างดีซึ่งเป็น สำหรับการลบหรือลบไฟล์ ระวังคุณสามารถ also-- และถ้าคุณดู บทเรียนออนไลน์ที่คุณจะ rm -rf เป็นวิธีที่ใช้กันมากในการพูด ลบโฟลเดอร์ที่มีสิ่งที่อยู่ในนั้น เพียงแค่เป็นซุปเปอร์ระวังสุด -rf หมายความซ้ำ ลบสิ่งที่เป็น คุณกำลังพยายามที่จะลบ และบังคับให้ลบ ดังนั้นวิธีการเรียกซ้ำถ้าเป็นโฟลเดอร์ที่มี โฟลเดอร์ที่มีโฟลเดอร์ที่มีโฟลเดอร์, ลบทั้งหมดของพวกเขา และบังคับให้หมายความว่าทำไม่ได้ ถามฉันใช่หรือไม่, ฉันแน่ใจหรือไม่? ดังนั้นมันจึงเป็นวิธีที่อันตรายสุดของ การลบจำนวนมากของสิ่งที่ได้อย่างรวดเร็ว แต่ beware-- บ่อยเกินไปไม่กล้าหาญ นักเรียนตั้งใจลบพูด pset หนึ่งตัวอย่างเช่น มาเรีย: และถ้าพวกเขาเพียงแค่ ทำ -r พวกเขากำลังจะ จะถามพวกเขาเกี่ยวกับทุกไฟล์เดียว DAVID ลัน: ซึ่งเป็น ที่น่ารำคาญในระดับปานกลาง มาเรีย: ใช่ DAVID ลัน: ดังนั้นที่ว่าทำไม จำนวนมากของเรารวมอยู่ด้วยตนเอง ฉันอยู่ในนิสัยของการใช้ -rf แต่มันเป็นเรื่องที่อันตราย ดังนั้นผู้ซื้อระวัง และแล้ว mv เป็นชนิดของ การตั้งชื่อที่น่าสนใจ ดังนั้นนี่คือคำสั่งย้าย ที่รู้สึกแปลก ๆ แน่นอนเพราะคุณสามารถใช้มันเพื่อ ย้ายไฟล์จากที่หนึ่งไปยังอีก ตัวอย่างเช่นสมมติว่าผม messed ขึ้น สมมติว่าผมสร้าง ไฟล์ใหม่สำหรับ pset และผมบันทึกไว้ว่า "greedy.c." แต่สมมติว่าฉันตั้งใจบันทึกไว้ ใน IDE50-- ดังนั้นในพื้นที่ทำงานของฉันเอง และไม่อยู่ใน pset1 คุณสามารถมองเห็นได้มากที่ด้านบนซ้าย มี "greedy.c." และมีการแก้ปัญหาไม่กี่ ดังนั้นหนึ่งที่ผมสามารถใช้ สุดทางที่ใช้งานง่าย เพียงลากและวางมัน และนั่นจะเป็นจริง แก้ไขปัญหานี้ แต่วันนี้เรากำลังพยายามที่จะดู ความลับในวิธีที่มีประสิทธิภาพมากขึ้น แต่ การทำเช่นนี้ เพื่อให้ฉันใช้ ls "" ใน pset1 และผมเห็นเพียง "mario.c." ให้ฉันไปข้างหน้าและทำ "cd .. " ดังนั้นซีดีอีกครั้งเป็นไดเรกทอรีการเปลี่ยนแปลง ".. " หมายถึงสิ่งที่ว่า? ครั้งสุดท้ายที่ผมบอกว่า "ซีดี pset1 "ที่จะเข้าไปใน pset1 ดังนั้นเมื่อผมบอกว่า "cd .. " สิ่งที่ฉันทำ? ไปข้างหลัง ใช่. ดังนั้นจึงเป็นไปได้ที่ผู้ปกครองที่เรียกว่า ขึ้นไประดับหนึ่งเช่น ออกจากโฟลเดอร์ ดังนั้นใส่ และแน่นอนสิ่งที่มีลักษณะที่มันทำ มันย้ายฉันเพียงแค่เข้าไปในพื้นที่ทำงานแทน การเข้า pset1 ซึ่งอยู่ในพื้นที่ทำงาน และตอนนี้ถ้าผมพิมพ์ ls "" มีทั้งกลุ่มของสิ่งที่ ในนั้นคือ "greedy.c" ดังนั้นตอนนี้ให้ฉันใช้ mv ที่แท้จริง ย้าย "greedy.c" ใน pset1 และอื่น ๆ จำนวนมากที่มีคำสั่ง Linux ทำงานตรงเช่นนี้ พวกเขาใช้เวลาการขัดแย้งใดหรือพวกเขาใช้เวลาหนึ่ง การโต้แย้งหรือพวกเขาใช้เวลาสองบรรทัดคำสั่ง ข้อโต้แย้งและอื่น ๆ และในกรณีนี้ก็ ทำในสิ่งที่ตัวอักษร มันบอกว่าแม้ว่า succinctly-- ย้ายเข้า pset1 greedy.c เข้าสู่ ดูเหมือนว่าไม่มีอะไรที่จะเกิดขึ้น แต่ถ้าผมทำคำสั่ง ls อีกครั้งโลภจะหายไป และถ้าผมทำ "ซีดี pset1" ใส่แล้ว คำสั่ง ls อีกครั้งตอนนี้มันอยู่ในสถานที่ที่เหมาะสม เช่นกันถ้า บาง reason-- โดยเฉพาะอย่างยิ่ง ถ้าคุณมีความต่อเนื่อง เชื่อมต่อเครือข่าย หรือคุณกำลังเดินไปรอบ ๆ มหาวิทยาลัยที่มีฝาปิดแล็ปท็อปของคุณ ปิดแล้วเปิดมันขึ้นมา อีกครั้งและพื้นที่ทำงานของคุณ ดูเหมือนว่าค่อนข้างออกจากซิงค์ไม่มีเรื่องใหญ่ เพียงแค่โหลดเบราว์เซอร์ของคุณ หน้าต่างและมันควรจะเป็น resync เพื่อให้ซ้ายมือ เบราเซอร์ไฟล์ดูว่า เช่นหน้าต่าง terminal ไม่ต้องกังวล เมื่อสงสัยโหลดหน้าดังนั้น ตราบใดที่คุณได้บันทึกไฟล์ที่มีอยู่แล้ว ตกลง. ดังนั้น mv นอกจากนี้ยังสามารถใช้ในการเปลี่ยนชื่อไฟล์ และให้ดูที่ คำสั่งนี้เป็นครั้งสุดท้ายที่นี่ ดังนั้น suppose-- และนี่คือ ที่พบบ่อยสุดเกินไปในช่วงต้น นักเรียนบางคนในบางครั้งสร้างไฟล์ เรียกว่าขอ say-- สิ่งที่คนอื่น? ชอบ "WATER.C." ดังนั้นฉันจะตะโกนสำหรับ ไม่มีเหตุผลในตัวพิมพ์ใหญ่ทั้งหมด แต่นี้ไม่ได้เป็น ชื่อที่ถูกต้องสำหรับแฟ้ม ถ้าเพียงเพราะปัญหาของเราตั้ง สเปคไม่ได้บอกคุณ เพื่อบัน​​ทึกแฟ้มเป็นตัวพิมพ์ใหญ่ทั้งหมด "WATER.C." แต่เราคาดหวังว่า "water.c" ตัวพิมพ์เล็ก และในความเป็นจริงนี้ ปัญหาเพราะ check50, โปรแกรมที่คุณกำลังจะ เพื่อตอบสนองปัญหา ตั้งหนึ่งที่ทดสอบโดยอัตโนมัติ ความถูกต้องของรหัสของคุณ เป็นไปเสียงโห่ร้องที่คุณถ้ามันไม่สามารถ พบ "water.c" ในการพิมพ์เล็กทั้งหมด ดังนั้นผมจึงจำเป็นที่จะต้องแก้ไขปัญหานี้ ดังนั้นวิธีการที่แตกต่างกันไป ทำเช่นนี้เป็นครั้งแรกที่ จะควบคุมคลิกหรือคลิกขวา ชื่อไฟล์และเปลี่ยนเพียงเปลี่ยนชื่อ ปรับทั้งหมดจะทำอย่างนั้น แต่อีกครั้งในวันนี้เรามา ทำมันชอบเล่นเล็ก ๆ น้อย ๆ ลองใช้ mv ที่จะเปลี่ยน "WATER.C" กับ "water.c." ดังนั้นคุณยังสามารถใช้อาร์กิวเมนต์แรก ที่จะเปลี่ยนชื่อเป็นอาร์กิวเมนต์ที่สอง ถ้าอาร์กิวเมนต์ที่สองไม่ได้ใน ความเป็นจริงโฟลเดอร์หรือชื่อไดเรกทอรี ทั้งหมดขวา และสุดท้ายเป็น trick-- เล็ก ๆ น้อย ๆ เพื่อให้ผมอยู่ใน ไดเรกทอรีพื้นที่ทำงานของฉันในขณะนี้ ถ้าผมต้องการที่จะได้รับใน pset หนึ่ง แน่นอนฉันสามารถพิมพ์ "cd pset1." แต่มันก็น่าเบื่อมากที่จะพิมพ์ "pset1" หรือ อีกต่อไปชื่อไฟล์หรือชื่อไดเรกทอรี ยังคง ดังนั้นมากมักจะอยู่ในลินุกซ์สิ่งที่ ที่คุณสามารถทำได้คือการเริ่มต้นพิมพ์ "PSE" และเพิ่งได้รับเบื่อกด Tab และให้ รูปคอมพิวเตอร์ออกสำหรับคุณ ประโยชน์ที่จะได้รับสุดยอดเป็นนิสัยที่ จับเพียงอย่างเดียวคือถ้าคุณมี หลายไฟล์หรือโฟลเดอร์เริ่มต้น ด้วยตัวอักษร "p" หรือ "PS" ที่คุณอาจมี พิมพ์อีกไม่กี่ก่อน คอมพิวเตอร์รู้ว่าจะทำอย่างไร มาเรีย: เราชอบทางลัด DAVID ลัน: นี้จะ ช่วยให้คุณประหยัดเวลามาก และยังที่เรากล่าวว่าในการบรรยายคุณ สามารถเลื่อนขึ้นในประวัติศาสตร์ขึ้นและลง เพื่อหาสิ่งที่ดำเนินการเมื่อเร็ว ๆ นี้ คำสั่งเป็นอย่างดี ทั้งหมดขวา ดังนั้นตอนนี้ขอหันความสนใจของเรากลับมา เพื่อเป็นโปรแกรมที่ง่ายสวัสดีโลก ดังนั้นเราจึงได้รวบรวมนี้ว่า และตอนนี้ทำไมเราไม่ใช้ ดูที่ชนิดข้อมูล แล้วเปลี่ยนจากบางส่วน ที่สอดคล้องกันรอยขีดข่วนที่จะบล็อกซี มาเรีย: น่ากลัว ดังนั้นขณะนี้ที่คุณได้เริ่มต้น การเขียนโปรแกรมใน C, เรากำลังจะเริ่มต้นพูดคุย เกี่ยวกับชนิดข้อมูลและตัวแปร ดังนั้นบางชนิดข้อมูลที่คุณ ต้องการที่จะรู้ว่าเริ่มต้นในขณะนี้ จะเป็นคนที่มี ไฮไลต์ในสีฟ้า ดังนั้นเราจึงมี int แรก ซึ่งย่อมาจากจำนวนเต็ม และนั่นถือเป็นจำนวนเต็มเป็นคุณ อาจมี guessed-- ดังนั้น 1, 2, 3, และเลขอื่น ๆ ที่คุณสามารถคิด DAVID ลัน: และยังเชิงลบ มาเรีย: และยังคนที่เป็นลบครับ และ 0 แล้วเรามีลอยซึ่ง จะลอยหมายเลขจุด ดังนั้นนั่นคือทั้งหมดที่ตัวเลขจริง ที่มีจุดทศนิยม ดังนั้น 5.0, 5.2 และมากยิ่งขึ้น ตัวเลขหลังจุดทศนิยม, เป็นอย่างดีและยังมีคนที่เป็นลบ แล้วเรามีถ่านซึ่งเป็นตัวอักษร ดังนั้นผมจึงคิดว่าเราพูดคุยเกี่ยวกับ นี้ในการบรรยายในวันนี้ แต่เรามีตัวอักษรสำหรับ example-- A, B, C-- ที่สามารถเก็บไว้เป็นถ่าน แต่เราก็มีสัญลักษณ์มากขึ้น ที่สามารถเก็บไว้เป็นถ่าน และผู้ที่จะถูกเก็บเป็น ASCII และแล้วเรามีบูล, ซึ่งเป็น Booleans และผู้ประเมินจริงหรือ ที่เป็นเท็จหรือ 1 คนและ 0 ตามลำดับ DAVID ลัน: และเรียกคืนว่า บูลมาจากห้องสมุด CS50 ดังนั้นจึงไม่ได้สร้างไว้ C แต่ก็มีประโยชน์สุด ที่จะมีความคิดของความจริงและเท็จ และแม้ว่าคุณ อาจ think-- จริงสนุก บูลเทคนิคมีความต้องการวิธีการหลายบิต อย่างแท้จริงที่จะเป็นตัวแทนที่แท้จริงเมื่อเทียบกับเท็จ? กี่บิตที่คุณคิดว่า คุณจะต้อง, ที่สุด? ใช่เพียงหนึ่ง ดังนั้นจึงปรากฎว่า C ไม่สามารถให้คุณเพียงแค่หนึ่งบิต หน่วยที่เล็กที่สุดของการวัด คุณจะได้รับแปด ดังนั้นจึงเป็นที่สิ้นเปลืองน้อยพวกเขาคุณ ใช้ไบต์ทั้งหมดหรือแปดบิต เพื่อเป็นตัวแทนจริงหรือเท็จ แต่นั่นเป็นเพียงวิธีที่มันเป็น นำมาใช้ใน C โดยห้องสมุด CS50 มาเรีย: และแล้วคนที่เรา จะไม่พูดคุยเกี่ยวกับการเป็นอย่างกว้างขวาง สิทธิ now-- คู่ ที่ลอยที่ใหญ่กว่า ยาวยาวและระยะสั้น นอกจากนี้ยังมีจำนวนเต็ม DAVID ลัน: แท้จริง ในรุ่นแฮ็กเกอร์ของ pset หนึ่ง เราจริงใช้นาน แต่สำหรับรุ่นมาตรฐาน มันไม่ควรจะเป็นสิ่งที่จำเป็น มาเรีย: เย็น ตกลง. ดังนั้น operators-- คุณควรจะ อาจคุ้นเคยกับที่สุดของเหล่านี้ นอกจากนี้ +; ลบ - สำหรับการคูณเรามี * ดังนั้นไม่ X ที่เรามักจะใช้ ส่วนที่เรามีเครื่องหมาย และโมดูโลเป็นผู้ดำเนินการที่ผ่านมาของเราที่ เราจะไปพูดคุยเกี่ยวกับในขณะนี้ มันเป็นผู้ประกอบการที่ช่วยให้เราไปยัง ใช้เวลาที่เหลือของส่วนที่ ดังนั้นถ้าเรามี 4% 2, 4 แบ่ง 2 คือ 2 กับส่วนที่เหลือของ 0 ดังนั้น 4% 2 เป็น 0 4% 3 เป็น 1 4% 5 คือ 4, ในขณะที่คุณอาจจะเดาได้ และจำไว้ว่าเมื่อมีการใช้สิ่งเหล่านี้ ผู้ประกอบการที่จะใช้กฎ PEMDAS DAVID ลัน: ดังนั้นต้องมีความชัดเจนถ้าคุณ ทำ 4% 2 ทำไมที่ 0, ว่า? มาเรีย: เพราะ 4 หารด้วย 2 คือ 2 กับส่วนที่เหลือของ 0 ดังนั้นโมดูโลที่เหลือจะช่วยให้เราเป็นที่ เมื่อเทียบกับผลของการแบ่งที่ DAVID ลัน: และแน่นอน สิ่งที่เราจะพบว่านี้เป็นประโยชน์ สำหรับที่อยู่ในปัญหาบางอย่าง ที่ไม่จำเป็นต้องเป็นหนึ่ง ถ้าคุณต้องการที่จะมี ผลของการ จำกัด ตัวเอง ในช่วงของตัวเลข เช่น 0 ถึงบางสิ่งบางอย่าง คุณสามารถใช้โมดูโลห่อรอบ ก่อนหน้านี้กว่าเช่น 2000000000 หรือมูลค่า 4 พันล้านว่า เราได้พูดคุยเกี่ยวกับในการบรรยาย มาเรีย: ใช่ และแม้แต่ใน "โลภ" เราอาจจะ DAVID ลัน: ใช่ใน ปัญหาการตั้งค่าอย่างใดอย่างหนึ่งเช่นกัน มาเรีย: ใช่ดี DAVID ลัน: คำแนะนำที่ดี มาเรีย: ขออภัย บูลีนเพื่อ expressions-- สำหรับผู้ประกอบการบูลีน เราจะไปพูดคุยเกี่ยวกับทุก ของเหล่านี้ที่คุณดูที่นี่ ดังนั้นตอนนี้เรามีสอง เครื่องหมายเท่ากับที่ระบุไว้สำหรับเท่ากับ ดังนั้นผู้ที่มีการเปรียบเทียบ ที่ทำให้เราได้เห็นเพียงหนึ่งเท่ากับการเข้าสู่ระบบ นั่นคือเมื่อเรากำหนด คุ้มค่าให้กับตัวแปร ดังนั้นหากเราได้เห็น int n = 5 แล้ว เราได้รับมอบหมายให้ไป 5 n ตัวแปร แต่ถ้าเราต้องการที่จะใช้สำหรับ == เปรียบเทียบเราสามารถตรวจสอบว่า n == 5 และถ้า n == 5 แล้วว่าเป็นความจริง ดังนั้นผู้ประกอบการบูลีน ช่วยให้เราโดยทั่วไป การประเมินแบบบูล การแสดงออกที่จะจริงหรือเท็จ ดังนั้นไม่ equals-- เรามี เครื่องหมายอัศเจรีย์และเท่าเทียมกัน ดังนั้นเรายังสามารถตรวจสอบว่า n ไม่เท่ากับ 5-- ดังนั้น n! = 5 น้อยกว่าน้อยกว่าหรือเท่ากับ สูงกว่า, มากกว่าหรือเท่ากับ และแล้วเราก็มีตรรกะ AND และตรรกะหรือ และผู้ที่ช่วยให้เราสามารถประเมิน การแสดงออกบูลีนต่างๆเข้าด้วยกัน โดยทั่วไปจะมารวมกันเป็น หนึ่งทั้งนิพจน์บูลีน ดังนั้นหากเราต้องการที่จะหาตัวเลขบอกว่า ที่มากกว่า 5 แต่น้อยกว่า 15 ในเวลาเดียวกันเราจะใช้ ตรรกะและผู้ประกอบการที่จะดูว่า n คือ มากกว่า 5 && n น้อยกว่า 15 DAVID ลัน: และที่นี่ เกินไปก็ง่ายจริงๆ ในช่วงต้นของการตั้งใจ ใช้เพียงเครื่องหมายเดียว หรือแถบแนวตั้งเดียว และหวังว่าคอมไพเลอร์จะ เสียงโห่ร้องที่คุณเพราะพวกเขาเป็นจริง มีความหมายที่แตกต่างกันมาก สำหรับผู้ที่อยากรู้อยากเห็นพวกเขากำลัง ใช้สำหรับการดำเนินงานค่าที่เหมาะสม การดำเนินงานในแต่ละบิต แต่คุณจะต้องการคู่ของพวกเขาที่นี่ และที่สำคัญสุดคือ คนแรกที่เข้าสู่ระบบเท่ากัน ซึ่งเป็นผู้ประกอบการความเท่าเทียมกันในฐานะ เมื่อเทียบกับผู้ประกอบการที่ได้รับมอบหมาย มาเรีย: และแถบแนวตั้งเป็น ตั้งอยู่ระหว่างลบและผลตอบแทน DAVID ลัน: ใช่ ในแบบฉบับของแป้นพิมพ์ของสหรัฐอเมริกา มาเรีย: อ๋อ ดังนั้นขอกระโดดลง งบเงื่อนไข ในรอยขีดข่วนคุณได้ เห็นแล้วอาจจะ ถ้างบที่ช่วยให้คุณ ตรวจสอบว่าสิ่งที่เป็นจริงแล้ว ทำอย่างอื่น ดังนั้นคุณอาจจะต้องการ เพื่อตรวจสอบว่าเป็นผีของคุณ สัมผัสบางเทพดาอื่น ๆ หรือเส้นขอบของหน้าจอของคุณ แล้วคุณอาจจะต้องการที่จะ จบเกมหรือทำอย่างอื่น ดังนั้นไวยากรณ์สำหรับว่า คือ "ถ้า (เงื่อนไข)." ดังนั้นถ้าผีของคุณจะสัมผัสบางสิ่งบางอย่าง แล้วทำอยู่ภายในวงเล็บปีกกา แล้วเรามีงบถ้า-อื่น อื่น ๆ ช่วยให้เราสามารถที่จะทำอะไร ถ้าเงื่อนไขที่เรา ตรวจสอบในการเริ่มต้นไม่เป็นความจริง ดังนั้นถ้าผีจะสัมผัส ชายแดนทำเช่นนี้อื่นทำอย่างอื่น ดังนั้นอย่างอื่นทำอย่างอื่น แล้วเรามีตัวอย่างสั้น ๆ ของเรื่องนี้ ดังนั้นถ้า (military_time <12) เรา ต้องการที่จะ printf "ตอนเช้าที่ดี!" อื่นที่เรากำลังจะไป printf "เย็นดี!" ตัวอย่างพื้นฐาน DAVID ลัน: ดี มาเรีย: เย็น ดังนั้นตอนนี้เรามีงบสวิทช์ สวิทช์งบในความสามารถทั่วไป ช่วยให้เราสามารถทำมากของสิ่งเดียวกัน ที่เราก็พูดคุยกัน เกี่ยวกับถ้างบ ยกตัวอย่างเช่นตอนนี้เรามี รูปแบบทั่วไปของคำสั่งสวิทช์ ที่ช่วยให้เราใช้ ตัวแปรที่เรียกว่า n และเปรียบเทียบกับจำนวนมาก ค่าที่แตกต่างซึ่งที่นี่เรา ได้เรียก Constant1, constant2 เราอาจจะมีมากขึ้น และผู้ที่จะถูกเรียกว่ากรณี ดังนั้นถ้าเรามีสวิทช์ statement-- และผลงานนี้ เฉพาะสำหรับ integers-- เรามี ตัวแปรในกรณีนี้ที่ n ถ้า n เป็นตัวแปร เท่ากับ Constant1 เรา จะดำเนินการข้อมูลโค้ดบาง หรือสิ่งที่เราต้องการจะทำ และจากนั้นเราจะแตก ดังนั้นการแบ่งหมายความว่า คำสั่งสวิทช์ จะหยุดการดำเนินการในกรณีที่ n เท่ากับ Constant1, แล้วโปรแกรมของคุณจะยังคง มันจะออกมาจาก สลับคำสั่งและมันจะ ยังคงทำอย่างอื่น แต่ถ้า n ไม่เท่ากับ Constant1 แล้วกรณี constant2 จะถูกตรวจสอบ ดังนั้นถ้า n เท่ากับ constant2 ที่อื่น ๆ ข้อมูลโค้ดจะถูกดำเนินการ และจากนั้นก็จะทำลาย ถ้าที่เท่ากับมัน และจากนั้นเราจะได้มี also-- ไม่ จำเป็นต้อง though-- กรณีที่เริ่มต้น ซึ่งจะเกิดขึ้นถ้า n ไม่เท่ากับ กรณีใดกรณีหนึ่งที่คุณได้ระบุไว้ และในกรณีที่เริ่มต้นเรายัง ไม่จำเป็นต้องจำเ​​ป็นต้องหยุดพัก เพราะคำสั่งสวิทช์จะได้รู้ว่า ที่ต้องการที่จะจบหลังจากที่เริ่มต้น กรณีที่หากเป็นกรณีที่ DAVID ลัน: แต่มีสไตล์, เรามักจะใส่ไว้ในนั้น มาเรีย: ใช่ DAVID ลัน: ใช่ ดังนั้นเฉพาะอย่างยิ่งเมื่อเริ่มออก โดยเฉพาะอย่างยิ่งถ้าในหมู่ผู้น้อย สะดวกสบายฉันจะส่วนตัว เพียงแค่ขอแนะนำให้ติดกับไอเอฟเอ และไอเอฟเอ-elses และถ้า-อื่นถ้า-elses และอื่น ๆ ถ้าเพียง เพราะพวกเขากำลังเล็ก ๆ น้อย ๆ ตรงไปตรงมามากขึ้น นี้คือการเพิ่มประสิทธิภาพที่ดีหรือ บางครั้งแม้สกอร์มัน ทำให้โค้ดอ่านได้มากขึ้น และในความเป็นจริงอาจจะ กลางภาคการศึกษาที่เราจะเห็นปัญหา การตั้งค่าที่มันก็ดูดีกว่า และง่ายต่อการอ่านสำหรับมนุษย์ โดยใช้คำสั่งสวิทช์ แต่ไม่ต้องกังวลเกี่ยวกับ ยึดมั่นกับเรื่องนี้เร็วเกินไป มาเรีย: ใช่ หากคุณมีมากถ้างบ มันอาจจะไม่สามารถอ่านได้มาก มันอาจจะไม่ได้อย่างรวดเร็วมาก สำหรับคุณที่จะผ่านมันไป ดังนั้นงบสามารถสลับ จะมีประโยชน์มากเช่นกัน และยังไม่ remember-- ไม่ ลืมที่จะใส่พักในที่นั่น DAVID ลัน: อย่าจำนี้ มาเรีย: เพราะแล้วคุณอาจตกอยู่ ผ่านจากที่หนึ่งไปยังอีกกรณี ดังนั้นขอบอกว่ากรณี Constant1 ไม่ได้มีคำสั่งพักอยู่ในนั้น จากนั้นเราอาจจะตกผ่าน ในกรณี constant2 และเราไม่ต้องการที่จะทำว่าถ้า เราได้มาถึงแล้วกรณี Constant1 และก็เท่ากับ n ดังนั้นสำหรับตัวอย่างเช่นถ้าเรามีตัวแปร n ที่มีจำนวนชั้นเรียน และเราต้องการที่จะเห็นสิ่งที่ ระดับ is-- ถ้า n มีค่าเท่ากับ 50, เรากำลังจะพิมพ์ "CS50 คือ รู้เบื้องต้นเกี่ยวกับวิทยาการคอมพิวเตอร์ครั้งที่หนึ่ง " จากนั้นเรากำลังจะทำลาย และที่มัน แต่ถ้า n มีค่าเท่ากับ 51 เราจะ พิมพ์ "CS51 เป็นบทนำ วิทยาการคอมพิวเตอร์ครั้งที่สอง. " จากนั้นอีกครั้งที่เรากำลังจะทำลาย แต่ถ้าเราใส่แล้ว 124, 61, ใด ๆ หมายเลขอื่น ๆ ที่คุณอาจจะคิดว่าของ หรือโปรแกรมที่ไม่ได้ไป ที่จะยอมรับว่า ดังนั้นก็จะพูดว่า "ขอโทษผม ไม่คุ้นเคยกับการเรียนที่. " และก็ไปทำลาย DAVID ลัน: ดังนั้นคุณสามารถดู ถ้าอื่นถ้าความคิดอื่น ๆ ที่นี่ มันเป็นเพียงแค่ไวยากรณ์ที่แตกต่างกัน การแสดงความคิดเดียวกันแน่นอน มาเรีย: แน่นอน ตอนนี้เรามีผู้ประกอบการของเราประกอบไปด้วย ผู้ประกอบการเพื่อให้มีประกอบไปด้วย สาม parts-- เงื่อนไข สิ่งที่จะทำอย่างไรถ้า สภาพที่เป็นจริง และแล้วสิ่งที่ต้องทำ ถ้าเงื่อนไขที่เป็นเท็จ ดังนั้นคุณจะเห็นโดยทั่วไป ไวยากรณ์ของที่นี่ เรามีเครื่องหมายคำถามและ แล้ว the-- สิ่งที่เราเรียกสิ่งนี้? DAVID ลัน: ลำไส้ใหญ่ มาเรีย: ลำไส้ใหญ่ ขอบคุณ. ขอโทษ ดังนั้นเรามาดูตัวอย่างของเราที่จะ ดูว่าเราสามารถทำให้ความรู้สึกของ this-- class_num == 50 ดังนั้นที่นี่เราจะเห็นผู้ประกอบการบูลีนของเรา == ที่เปรียบเทียบ class_num ตัวแปร ถึง 50 ร้านค้า class_num ดังนั้นจำนวนเต็ม และถ้าจำนวนเต็มที่ เท่ากับ 50 แล้วเรา จะเก็บ "เดวิดลัน" ภายในอาจารย์สตริง ถ้าจำนวนชั้นไม่ได้ เท่ากับ 50, "ดาวิดลัน" เป็นไปได้ที่อาจารย์ DAVID ลัน: ขอบคุณ และเพื่อให้ดูเหมือนว่าเทียบเท่ากับ สิ่งที่คุณจะพูดได้อย่างรวดเร็วก่อน? มาเรีย: สำหรับผมแล้วมันดูเหมือนว่า เช่นถ้างบ-อื่น DAVID ลัน: ใช่ และในความเป็นจริงนี้เป็นชนิด ของสวยหนึ่งซับ เพื่อที่จะพูดในการดำเนินการ ว่าตรรกะของถ้า-อื่น แต่ทำทุกอย่างในขั้นตอนเดียว มาเรีย: แน่นอน ใช่. ดังนั้นหาก-อื่นอาจงบ ใช้เวลามากของพื้นที่ พวกเขาอาจจะยาวเกินไปสำหรับ สิ่งที่ง่ายเช่นนี้ ดังนั้นนี่สามารถมาก รวบรัดและดีมาก ดังนั้นตอนนี้เรากำลังจะเข้าสู่การมองหาที่ การดำเนินการบางสิ่งบางอย่างอีกครั้งและอีกครั้ง เพื่อตรวจสอบหา สภาพหลายครั้ง แล้วดำเนินการต่อไปทำอะไรบางอย่าง ในขณะที่สภาพที่เป็นจริง ดังนั้นนี่จะทำให้เรา อย่างเป็นห่วงในขณะที่ ไปทางซ้ายเรามี ในขณะที่วงแรกของเรา ดังนั้นในขณะที่สิ่งที่เป็นความจริง ทำอะไรบางอย่างอีกครั้งและอีกครั้ง เพื่อให้แน่ใจว่าจะสังเกตเห็นว่าของเรา สภาพที่นี่คือการตรวจสอบที่ด้านบน ในขณะที่มี loop-- ที่สองของเราที่เราเรียกว่า ที่ทำในขณะที่ loop-- ที่เราทำบางสิ่งบางอย่าง แล้วเราตรวจสอบสภาพ และถ้ามีเงื่อนไขว่า ยังคงเป็นความจริง เรากลับไปและทำสิ่งนั้นอีกครั้ง ดังนั้นความแตกต่างที่สำคัญคือ เงื่อนไขที่มีการตรวจสอบสำหรับ และรหัสไม่อาจจะ ดำเนินการถ้าเงื่อนไขไม่ได้ จริงกับวงในขณะที่ ในขณะที่มีสิ่งที่ต้องทำในขณะที่ วงเรามีรหัส ที่มีการดำเนินการอยู่เสมออย่างน้อยหนึ่งครั้ง และแล้วในขณะที่เงื่อนไข ยังคงเป็นความจริง เราสามารถกลับไปและย้ำอีกครั้งภายใน ดังนั้นทำไมคุณคิดว่าเราจะใช้ ทำในขณะที่ห่วงมากกว่าห่วงขณะที่? ขวา. ดังนั้นถ้าเราต้องการที่จะแจ้งให้ ของผู้ใช้สำหรับการเรียงลำดับของการป้อนข้อมูลบางอย่าง ถ้าเราต้องการที่จะถามพวกเขา ให้ใส่ชื่อของพวกเขา เราต้องการที่จะมีอย่างน้อยหนึ่งครั้งขอให้พวกเขา และถ้าพวกเขาใส่ ชื่อที่เราไม่ได้ จะถามพวกเขาอีกครั้ง เพราะเรารู้อยู่แล้วว่ามัน แต่ถ้าพวกเขาไม่ได้ใส่ ชื่อของพวกเขาหรือถ้าพวกเขา ใส่สิ่งที่ เห็นได้ชัดไม่ชื่อ เรายังคงต้องการที่จะดำเนินการต่อไป ขอให้พวกเขาสำหรับชื่อของพวกเขา DAVID ลัน: และในการบรรยายที่เรามีอย่างใดอย่างหนึ่ง เช่นนี้กับ int ได้รับในเชิงบวก เช่นที่ไม่มีอะไรที่จะ การตรวจสอบในตอนแรกเพราะคุณจะไม่ได้ อากาศเป็น int ดังนั้นเราจึงต้องการที่จะทำ this-- ได้รับ int จาก user-- แล้วตรวจสอบว่ามันอาจจะ อีกครั้งและอีกครั้งและอีกครั้ง มาเรีย: แน่นอน สำหรับการตกลง loops-- สำหรับลูปสามารถช่วยให้เราสามารถทำเกือบ สิ่งเดียวที่แน่นอนเช่นเดียว เป็นจริงสิ่งเดียวที่แน่นอน จึงไม่มีอะไรที่ คุณสามารถทำกับวง ที่คุณจะไม่สามารถ จะทำอย่างไรกับลูปในขณะที่ แต่สำหรับลูปอาจจะดูเล็ก ๆ น้อย ๆ บิตซับซ้อนมากขึ้น syntactically เพราะพวกเขามี สามส่วนสิ่งที่อยู่ภายใน ก่อนที่จะเป็นเพียง สภาพที่มีลูปในขณะที่ ดังนั้นส่วนแรกที่คุณน้ำทะเล ซ้ายมากที่สุดเรามี "คนแคระ int = 0" ดังนั้นนี่เป็นที่ที่เรา เริ่มต้นตัวแปรของเรา แล้วเรามีอัฒภาค และ "คนแคระ <7" ดังนั้นนี่คือที่ออก สภาพที่เป็นจริง ดังนั้นเป็นสิ่งที่เราจะต้อง ใส่เพียงในขณะที่ loop-- "ในขณะที่คนแคระ <7" ที่นี่ที่จะไปใน กลางสำหรับวงของเรา ดังนั้น "dwaves <7" และแล้วส่วนสุดท้ายของเราคือ "คนแคระ ++" ซึ่งเป็นที่ที่เราปรับปรุงตัวแปรของเรา ดังนั้นสิ่งที่สำคัญ ที่จะตระหนักถึงคือที่นี้ จะไปผ่านทางนี้สำหรับวง เจ็ดครั้งและดำเนินการเจ็ดครั้ง ดังนั้นเราจึงมีเจ็ด คนแคระและพวกเขากำลังทั้งหมด จะพูดว่า "ฉันอยู่ที่นี่ เพื่อช่วยให้คุณหิมะสีขาว " เพราะพวกเขามีความพร้อม ที่จะช่วยให้สโนว์ไวท์ ด้วยในขณะที่ลูปที่เราจะได้ทำ การเริ่มต้นและการปรับปรุง ไม่ได้อยู่ในสภาพอีกครั้ง แต่ ก่อนหรือภายในวงในขณะที่ เพื่อให้แน่ใจว่า we-- เพราะ เรามักจะต้องชิ้นส่วนเหล่านั้น ดังนั้นเพื่อให้แน่ใจว่าเรามี พวกเราจะได้ยังคงเพิ่มพวกเขา ในเพียงไม่ได้อยู่ในวงเล็บ DAVID ลัน: และดังนั้นจึงมีลักษณะ like-- ในการบรรยายยกตัวอย่างเช่น ฉันมักจะใช้เช่นเดียวกับฉันและ n และตัวแปรที่น่าเบื่อสวย ดูเหมือนว่าคุณสามารถใช้มากขึ้น ชาญฉลาดชื่อตัวแปรมากเกินไป มาเรีย: ใช่มันเป็นจริงที่ดีมาก ที่จะใช้ตัวแปรอธิบายเพิ่มเติมนิด เพราะโดยเฉพาะอย่างยิ่งถ้ามีคนอื่นเป็น อ่าน code-- ของคุณบางทีคุณปราบ หรือถ้าคุณกำลังทำงานร่วมกัน กับ somebody-- คุณต้องการให้แน่ใจว่าพวกเขา เข้าใจสิ่งที่คุณกำลังทำ ตกลง. ดังนั้นนี่คือบางสิ่งบางอย่างมาก funky-- สำหรับวงภายในสำหรับวง ผมไม่ทราบว่าถ้าเราเคยเห็นแบบนี้มาก่อน อาจจะไม่. แต่เราจริงจะมี this-- ลูปเพื่อแทนของลูป ดังนั้นไม่มีใครต้องการที่จะอาจจะเดิน ฉันผ่านสิ่งที่เกิดขึ้นที่นี่? DAVID ลัน: ฉันจะใช้แทง มาเรีย: เย็น DAVID ลัน: OK ดังนั้น spoiler-- เราต้องการที่จะพิมพ์สิ่งที่ ที่อยู่ในมุมขวาล่าง ที่นั่น มาเรีย: ขวา ใช่ใช่ DAVID ลัน: ดังนั้นเราได้เพียงแค่ ใส่ที่แสดงผลตัวอย่างมี ดังนั้นผมจึงสามารถสรุปจาก ห่วงสูงสุดที่คุณ ทำซ้ำมากกว่าแถว วงสุดเพื่อที่จะพูด และคุณทำซ้ำมากกว่า คอลัมน์ที่มีวงในสุด และสังหรณ์ใจนี้ ควรหวังว่าจะทำให้ความรู้สึก เพราะโดยธรรมชาติของ ทุกโปรแกรมที่เราเคยเห็น ก่อน printf ซึ่งเป็น ฟังก์ชั่นที่เรากำลังใช้ในที่สุด มีความสามารถในการพิมพ์สิ่งที่ ออกเป็นหลักทีละบรรทัด เช่นเดียวกับเมื่อคุณได้ออกมา บรรทัดใหม่มี ไม่มีการเสแสร้งกลับและการพิมพ์บางสิ่งบางอย่าง ที่สูงขึ้นในหน้าจออย่างน้อย ไม่ได้ใช้ printf เช่นนี้ ดังนั้นในเรื่องที่มันทำให้ ความรู้สึกที่ห่วงสุด ควรจะหมายถึงแถว เพราะแต่ละแถวให้ คุณจะต้องการที่จะ พิมพ์ออกมา XXXXX แล้ว ย้ายไปแถวถัดไป, XXXXX ดังนั้นแถวมาก่อน และจากนั้นในแต่ละ แถว, คุณพิมพ์คอลัมน์ ถ้าคุณพยายามที่จะทำมัน ตรงข้ามมันจะอาจจะไม่ได้ ออกมาตามที่ต้องการ มาเรีย: ใช่ เราก็ไม่สามารถกลับไปที่ แถวก่อนหน้านี้ด้วย printf DAVID ลัน: และสิ่งที่น่าสนใจ ต่อการสนทนาในวันนี้เกี่ยวกับขอบเขต ที่จริงก็คือว่าเป็นแถวเป็น int ที่ประกาศในวงสูงสุด แต่สังเกตเห็นว่ามันยังคงเป็น ภายในเพื่อที่จะพูด วงเล็บปีกกาที่ ทันทีตาม แม้ว่าจะไม่ได้ในทางเทคนิค ภายในวงเล็บปีกกาเหล่านั้น ดังนั้นแถวอยู่ในขอบเขตสำหรับ ความสมบูรณ์ของข้อมูลโค้ด, ทั้งด้านในของด้านนอกสำหรับวง และภายในของภายในสำหรับวง แต่ด้วยความคมชัดที่ คอลัมน์อยู่ในขอบเขต? คอลัมน์ตัวแปร? ใช่เพียงในวงภายใน และที่ตกลงเพราะเราไม่สามารถเข้าถึง มันนอกวงเล็บปีกกาของ ทั้งหมดที่เราทำคือการพิมพ์ออกมาใหม่ สายที่ปลายสุดมี เพื่อที่ว่าในความเป็นจริงก็โอเค ดังนั้นนี้มีผลกระทบที่มันดูเหมือนว่า การทำแถวที่สามและสี่เสา มาเรีย: ขวา ดังนั้นก่อนที่เราจะไปผ่านแถวแรกของเรา และเพียงแค่ในแถวแรกของเราที่เราทำ สี่เสาภายในแถวแรก ดังนั้นเราจึงพิมพ์สี่เอ็กซ์ และจากนั้นเราสามารถออกจากการห่วงเนื่องจาก เราได้พิมพ์แล้วออกสี่เอ็กซ์ และเราพิมพ์บรรทัดใหม่ และจากนั้นเราไปผ่าน กระบวนการเดียวกันสำหรับสองแถว ที่จะทำให้การรวมของสาม DAVID ลัน: และมันเป็นมูลค่า noting มัน เพียงสิ่งประดิษฐ์ของตัวอักษรที่ความเป็นจริง ว่าการส่งออกของกลุ่มตัวอย่าง ดูเหมือนมากสูง ราวกับว่ามีมากขึ้น แถวกว่าคอลัมน์ แต่มันเป็นเพียงเพราะ X จะสูงกว่าที่เป็นอยู่กว้าง นั่นคือทั้งหมดที่เกิดขึ้นที่นั่น บวกกับพื้นที่สีขาวระหว่างบรรทัด มาเรีย: ขวา เย็น. DAVID ลัน: สิทธิทั้งหมด ดังนั้นดูอย่างรวดเร็วที่ตั้งปัญหาหนึ่ง ใช้คำถามใด ๆ และจากนั้นเลื่อน? ทั้งหมดขวา ดังนั้นในปัญหาตั้งหนึ่งมีสาม ความท้าทายหลักในท้ายที่สุด แต่ก่อนที่คุณจะได้พบกับ ว่าปัญหาที่กำหนด สเปคเช่นเดียวกับหลาย ๆ psets ฤดูใบไม้ร่วงนี้จะไปเดินคุณ ผ่านไม่กี่ออกกำลังกายอบอุ่นขึ้น ชี้ให้คุณออกทรัพยากรไม่กี่ ที่คุณอาจจะหรืออาจ ไม่ได้เห็นแล้ว ยกตัวอย่างเช่น CS50 มีชุดกางเกงขาสั้น, ซึ่งเป็นวิดีโอสั้น ไม่แตกต่างจากนี้ แต่ที่ มีหัวข้อ specific-- มาก อาจจะห้านาที 10 นาทีในระยะเวลาในลูปหรือ ในเงื่อนไขหรือขั้นตอนวิธี หรือเพิ่มเติมในภายหลัง หัวข้อขั้นสูงเช่นเดียวกับ และเรามักฝัง ที่เป็นปัญหา ชุดเพื่อให้นักเรียน มีทรัพยากรที่มี เพื่อตรวจสอบวัสดุที่อาจมี แล้วมาในการบรรยายหรือมาตรา แต่วิธีนี้ก็มุ่งเน้นมากขึ้น และอื่น ๆ ที่ปลายนิ้วของพวกเขา นอกจากนี้เรายังมีแนวโน้มที่จะฝังในปัญหา กำหนดสิ่งที่เรียกว่าเกมส์ ดังนั้นเกือบทั้งหมดของตัวอย่างที่ฉันทำ ในการบรรยายบนเวทีที่นี่เรายัง ได้ยิงในกล้องใน ความก้าวหน้ามากขึ้นช้าลง คำแนะนำแบบใกล้ชิดมากขึ้นโดยฉันใน แล็ปท็อปของฉันของรหัสที่ละบรรทัด เพื่อที่ว่าในระดับที่เรามักจะ อ่านผ่านอะไรบางอย่างหรือใครบางคน จะใส่เข้ากับ ตอบคำถาม แต่มันไม่จำเป็นต้องจม สำหรับทุกคนในในกลุ่มผู้ชม ดังนั้นคุณจะพบรหัสเกมส์ สำหรับส่วนมากของตัวอย่าง ที่เราทำที่นี่ในการบรรยายเพื่อให้คุณ สามารถเดินผ่านมันที่ก้าวของคุณเอง และย้อนกลับหรือเร็วไปข้างหน้าหรือ ข้ามโดยสิ้นเชิงถ้าคุณต้องการ มักจะเป็นเพียงไม่กี่ คำถามที่อบอุ่นขึ้นที่ ขอให้คุณในการจัดเรียงของ เสริมสร้างวัสดุนี้ และให้แน่ใจว่าคุณสะดวกสบายก่อน ที่จะดำเนินการกับส่วนที่เหลือของ pset ที่ และแล้วแน่นอน มี pset ตัวเอง และหนึ่งในสิ่งที่ เราจงใจมาก ทำใน CS50 เกือบทุกจืด หรือไม่น่าทึ่งปัญญา ขั้นตอนกลไกที่ คุณอาจจะต้องทำ มักจะมีการบันทึกไว้เป็นอย่างดี ในช่วงระยะเวลาที่เราจะ เริ่มต้นที่จะถามคำถามเชิงโวหารมากขึ้น เหมือนจำได้ว่าการทำเช่นนี้หรือ? แต่โดยทั่วไปแล้วคุณจะพบว่า ว่าปัญหาชุดที่คุณได้รับ ผ่านกลไก บางสิ่งบางอย่างเพื่อให้ น่าสนใจท้าทายทางปัญญา ที่เหลือในที่สุดเพื่อคุณนักเรียน กับที่กล่าวว่า Zamyla เพื่อคนที่เรา เก็บไว้หมายถึงวันนี้ในการบรรยาย เป็นหนึ่งในพนักงานของเรารู้จักกันมานาน สมาชิกที่ยังถือเกมส์ เกี่ยวกับปัญหาที่เฉพาะเจาะจงเช่น pset มาริโอ และโลภแม้จะไม่ใช่น้ำในปีนี้ และมันอยู่ในคนเหล่านั้น walkthroughs ว่าเธอมักจะ มีเคล็ดลับและเทคนิคสำหรับ วิธีการดำเนินการที่ไม่เคยบอกคุณ ว่าสิ่งที่ต้องทำ แต่ rather-- เช่นเงื่อนไข ถ้าคุณ will-- ให้คุณอย่างน้อย สองความคิดเพื่อที่จะขึ้นอยู่กับคุณ ท้ายที่สุดในการตัดสินใจ วิธีการที่จะเข้าใกล้พวกเขา มาเรีย: ชอบเรียงจากระดับสูง ความเข้าใจในเหตุผลของสิ่งที่ เราจะขอให้คุณทำ DAVID ลัน: แน่นอน และในความเป็นจริงของ Zamyla เกมส์ที่มีความหมาย ที่จะตอบบ่อย ถามคำถามที่ ฉันจะเริ่มต้นโดยเฉพาะอย่างยิ่งเมื่อ ข้อกำหนดเหล่านี้ที่มีความยาว ที่น่ากลัวเล็ก ๆ น้อย ๆ ที่ได้รับข้อความ และภาพที่พวกเขามีอยู่ในพวกเขา ดังนั้น water.c คุณจะพบ หลังจากที่คุณได้เสร็จมัน เป็นจริงค่อนข้างตรงไปตรงมา อย่างเป็นพวง คุณจะปัง หัวของคุณกับผนังพยายาม ที่จะคิดออกว่าทำไมมันไม่ได้รวบรวม หรือทำไมมันไม่ทำงานอย่างถูกต้อง แต่เมื่อคุณทำเสร็จแล้ว กับมันและเมื่อคุณได้ การต่อสู้ใช้เวลากับใด ๆ ข้อผิดพลาดที่คุณอาจมี คุณจะพบว่ามันเป็น โปรแกรมที่สั้นมาก ก็สามารถทำได้ในเพียงไม่กี่ บรรทัดของรหัสซึ่งส่วนใหญ่ เราได้เห็นที่นี่ในการบรรยายแล้วถ้า คุณรวบรวมหน่วยการสร้างที่เหมาะสม และในขณะที่เราขอแนะนำ ที่นี่ก็จะถาม คุณสามารถระบุวิธีการหลายนาที ใครบางคนกำลังอาบน้ำในมหาวิทยาลัย เราระบุในปัญหาที่เกิดขึ้น ตั้งอัตราการไหลของน้ำ ในเช่นห้องอาบน้ำฝักบัวไหลต่ำ หัวเหมือนคลิปไฟล์ ที่เราเห็นเมื่อวานนี้หรือ ดังกล่าวตรงข้าม และแล้วคุณก็ต้อง ที่จะทำบิตของคณิตศาสตร์ really-- ทางคณิตศาสตร์โดยใช้ C ที่จะบอก เราว่าหลาย ๆ ขวดน้ำ เทียบเท่ากับถ้าเราว่า การอาบน้ำ n นาที ขณะนี้ใน mario.c นี้เป็นไป จะเป็นโปรแกรมอีกเล็กน้อย ก็ยังคงไม่ได้ไปนานนี้ เพียงไม่กี่บรรทัดนานกว่า water.c แต่มันจะเป็นโอกาสที่ ที่จะสร้างโรงเรียนมาริโอเก่า ปิรามิดจากซูเปอร์มาริโอ บราเดอร์หรือตามมา มันไม่ได้ไปดูสวย หรือที่มีสีสันเป็นที่หนึ่งมี เราเพียงแค่จะใช้แฮชแท็กเล็ก ๆ น้อย ๆ เช่นเดียวกับเราได้ที่นี่บนหน้าจอ โดยใช้ข้อความ ASCII แต่มันจะใกล้เคียงกับความคิดเดียวกัน และมันจะเป็น การออกกำลังกายที่ได้อย่างรวดเร็วก่อน ดูเหมือนว่าสวย simple-- เพียง พิมพ์ปิรามิดที่เรียบง่าย แต่มีลักษณะคู่ ที่นี่ที่น่าสนใจ ขอให้สังเกตว่าขอบขวาสุดของ พีระมิดจริงมีความกว้างสอง ดังนั้นจึงมีสองเท่ากัน คอลัมน์สูงซึ่ง ทำให้จำเป็นต้องมีเล็ก ๆ น้อย ๆ บิตของความคิดที่จะให้ แน่ใจว่าคุณได้ว่าตรงขวาเป็น เมื่อเทียบกับเพียงมุมได้อย่างสมบูรณ์แบบ สาย เพื่อให้เป็นบิตของกรณีมุม แต่ตรงกับเกมที่เกิดขึ้นจริง และก็ยังไม่ชัดเจนในตอนแรก ได้อย่างรวดเร็ววิธีการพิมพ์พื้นที่สีขาว ดังนั้นเมื่อฉันมองไปที่ ตัวอย่างการส่งออก here-- และก็ยังอยู่ใน spec-- มัน ชนิดของดูเหมือนสี่เหลี่ยมผืนผ้า แต่เส้นทแยงมุมของ สี่เหลี่ยมผืนผ้าที่ได้รับการตัด, และเป็นเพียงช่องว่างสีขาวเพื่อที่จะพูด และเพื่อที่ถามบ่อย คำถามที่นี่อยู่เสมอดี ฉันจะย้าย hashtags # มากกว่าที่จะเหมาะสมหรือไม่ หรือวิธีการที่ฉันจะพิมพ์ช่องว่าง? และมันก็เป็นจริงได้ง่ายขึ้น กว่านักเรียนส่วนใหญ่คิดว่า ขวา? คุณสามารถใกล้เคียงกับสายตาโดยเพียงแค่ กดปุ่มแถบพื้นที่ครั้งหรือสองครั้ง หรือสามครั้ง และเพื่อให้ได้แม้ว่าจะมี printf เราเกือบ มักจะพิมพ์สตริงหรือเป็น int หรือคำเช่น "สวัสดีที่ โลก "หรือชุดของคำ คุณยังสามารถเพียงแค่พิมพ์ อ้างพื้นที่ได้นำมาอ้าง และที่จริงจะให้ คุณมีพื้นที่สีขาว ดังนั้นเก็บที่ในใจและ ไม่ overthink นี้ จริงๆคุณต้อง ตัดสินใจแถวโดยแถวโดยแถว ไม่แตกต่างจากตัวอย่างของคุณ ช่วงเวลาที่ผ่านมาว่าหลายคน คอลัมน์ควรจะเป็นช่องว่างสีขาวและ จำนวนของพวกเขาควรจะ hashtags มันจะใช้เวลาบิตของเวลา แต่ก็ ในที่สุดปริศนาตรรกะแปลก ๆ มาเรีย: ใช่ แต่ตรรกะของการไปแถวโดยแถว เป็นไปได้ที่จะมีประโยชน์มากที่นี่ DAVID ลัน: ใช่ ผมคิดว่าตัวอย่างรหัสที่คุณ gave-- แม้กระทั่ง แม้ว่ามันจะไม่ได้เป็นโปรแกรมที่สมบูรณ์ คุณยังคงต้อง int และหลัก และ stdio.h โมฆะและ #include, จำนวนมากสิ่งที่ได้จากการบรรยาย แต่การก่อสร้างตึก ดูเหมือนจะมี และจากนั้นก็เป็นสิ่งสุดท้าย อัลกอริทึมน้อยมาก ดังนั้นจึงปรากฎว่าเวลาที่คุณใด ๆ ไปลงใน CVS หรือร้านสะดวกซื้อใด ๆ และคนที่มือคุณที่ ค่าใช้จ่ายแคชเชียร์หรือเหรียญในขณะที่การเปลี่ยนแปลง มันกลับกลายเป็นว่าพวกเขามนุษย์ หรือไม่พวกเขารู้หรือไม่ว่า อาจจะใช้สิ่งที่เป็น ที่เรียกว่าอัลกอริทึมโลภ โดยถ้าคุณกำลังหนี้ที่ค้างชำระ, พูด $ 21 ในการเปลี่ยนแปลงเพราะเหตุผลบางอย่าง บางสิ่งบางอย่างที่คุณซื้อราคาไม่แพงมาก กับการเรียกเก็บเงินที่ใหญ่มากที่ CVS, มันจะน่ารำคาญจริงๆถ้า แคชเชียร์ให้คุณ 21 ซิงเกิ้ลหรือแย่ลง ยังเป็นจำนวนมากทั้งของเหรียญ แต่สิ่งที่คนที่เหมาะสมคือ อาจจะทำคือพวกเขากำลังจะ ที่จะคว้า $ 20 แล้ว $ 1 ใบเรียกเก็บเงินและ มือคุณเพียงสองค่าใช้จ่ายในกรณีที่ มาเรีย: ดังนั้นพวกเขากำลังมองหาที่จะลด การเปลี่ยนแปลงที่พวกเขาให้กลับมาให้คุณ DAVID ลัน: แน่นอน และการจัดการที่เหมือนกันกับเหรียญเช่นกัน หากคุณกำลังหนี้ที่ค้างชำระพูด, $ 0.50 หวังว่าคุณไม่ต้องการ 50 เพนนี คุณต้องการที่สองแทน ไตรมาสเช่น ตอนนี้ไม่ถือว่า ที่มีแคชเชียร์ เพียงพอของนิกายทุกที่ เขาหรือเธออาจต้องการให้คุณ แต่เราไม่ช่วยให้คุณที่จะคิด เป็นอย่างมากในปัญหาที่เกิดขึ้น และเป้าหมายในท้ายที่สุดคือการ ใช้ในรหัส C ขั้นตอนวิธีโลภ เพื่อให้ผู้ใช้ที่ได้รับอนุญาต พิมพ์เท่าใด เปลี่ยนเขาหรือเธอเป็นหนี้กับดอลลาร์ และเซนต์ชนิดของจุดลอยบาง ค่าอาจจะ และจากนั้นคุณต้องทำคณิตศาสตร์และ คิดออกอัลกอริทึมดี กี่เหรียญที่ฉันสามารถให้ คุณน้อยที่สุดเพื่อให้คุณ ว่าจำนวนเงินที่ของการเปลี่ยนแปลง แต่มีจะเป็น ส่วนหากินไม่กี่ที่นี่ใช่มั้ย? เหมือนมีทั้ง ปัญหาที่ไม่แน่ชัด มาเรีย: แน่นอน ดังนั้นจุดลอย มีค่าไม่แน่ชัด เราได้พูดคุยเกี่ยวกับเรื่องนี้ในการบรรยายในวันนี้ DAVID ลัน: เราได้ ครั้งสุดท้ายในการบรรยาย เราได้พูดคุยเกี่ยวกับความไม่แน่ชัด และคุณไม่ต้องการที่จะโกงผู้ใช้ เท่าใดการเปลี่ยนแปลงที่เขาหรือเธอเป็นหนี้ และเพื่อให้คำแนะนำใน ปัญหาที่กำหนดสเปค ให้ความคิดที่ท้ายที่สุดเท่าที่จะ วิธีที่คุณสามารถลดผู้ที่ไม่แน่ชัด ข้อผิดพลาดที่อาจเกิดขึ้น มันเป็นเรื่องที่หลีกเลี่ยงได้อย่างแน่นอนสำหรับ ปัจจัยการผลิตที่เรากำลังพูดถึง และในความเป็นจริง pennies-- บางทีเราจะเลื่อนไป Zamyla, ผมคิดว่าสำหรับเทคนิคที่มี ดังนั้นในท้ายที่สุดคุณจะพบ การลุกลามของปัญหาที่เกิดขึ้นในสัปดาห์นี้ ครั้งแรกของการที่มีขนาดเล็กสวย กลางแล้วนั้นน้อยใหญ่ แต่ทั้งหมดของพวกเขาใช้อาคาร ช่วงตึกจากสัปดาห์ที่ผ่านมานี้ จาก supersection นี้ ปัญหาการตั้งสเปค ทำให้คุณมีทรัพยากรมากมายนับไม่ถ้วน แต่ยังคงถ้าทุกดิ้นรน โดยเฉพาะอย่างยิ่งในหมู่ผู้ที่สะดวกสบายน้อย ไม่มีพื้นหลังก่อน มาถึงเวลาทำงาน ในวันจันทร์และวันอังคารและ พุธและวันพฤหัสบดี ไปที่ CS50 พูดคุยผ่านทาง เว็บไซต์แน่นอนของ ผ่านที่คุณสามารถแช กับเจ้าหน้าที่และเพื่อนร่วมชั้น แต่ในที่สุดผมคิดว่า คำแนะนำที่ดีที่สุดคือเพียงแค่เริ่มต้นในช่วงต้น มันไม่ได้ชนิดของระดับที่คุณ ควรจะเริ่มต้นในวันพุธที่ psets คืนหรือเลวคืนวันพฤหัสบดี มาเรีย: แนะนำที่ดีที่สุดของฉันคือ ที่จะได้เริ่มต้นวันจันทร์ DAVID ลันจันทร์ ดังนั้นหากคุณยังไม่ได้เริ่ม already-- ไม่มี แต่แม้ว่าจะไม่ได้จันทร์อังคารแล้ว ก่อนหน้านี้ที่ดีกว่า และนั่นคือเหตุผลที่ แน่นอนมีหลายวันในช่วงปลายเพื่อให้เป็น เพื่อให้คุณบิตของการเป็น ความดันทางจิตวิทยา ที่จะเริ่มต้นก่อนหน้านี้ แต่ยังคงให้ สิ่งที่ลื่นเมื่อสิ่งที่ใช้เวลานาน กว่าที่คุณคาด มาเรีย: และคุณต้องการที่จะทำให้การใช้งาน เวลาทำงานมากเท่าที่คุณสามารถเกินไป DAVID ลัน: คำถามใด? ทั้งหมดขวา ดีทำไมเราไม่เลื่อนที่นี่?