[เล่นเพลง] DAVID ลัน: ทั้งหมดขวา ยินดีต้อนรับกลับ นี่คือ CS50 และนี่คือ หนึ่งสัปดาห์อย่างต่อเนื่อง ดังนั้นหนึ่งในเหตุผลที่เราได้รับผ่าน รอบเทคโนโลยีเช่น Google แก้วก็คือพวกเขามาพร้อมกับ บางสิ่งบางอย่างที่รู้จักกันเป็น API, อินเตอร์เฟซการเขียนโปรแกรมประยุกต์ และสิ่งนี้หมายความว่าอยู่กับ ไฟล์ที่ถูกต้องและมีสิทธิ เอกสารที่คุณจริงสามารถเขียน ซอฟแวร์สำหรับอุปกรณ์แม้เช่นนี้ และเพื่อให้สิ่งที่เรามีในใจที่มีต่อ ปลายเทอมคือถ้าโครงการ ที่เกี่ยวข้องกับการพูด, แก้ว Google อาจ อุทธรณ์เราจะเห็นสิ่งที่เราสามารถทำได้ใน แง่ของการ hooking คุณกับบาง ฮาร์ดแวร์เจ้าหนี้เช่นเดียวกับที่ API สาธารณชนสามารถเข้าถึงได้เพื่อให้คุณสามารถ จะเริ่มต้นการสร้างซอฟแวร์ ที่รันบนแก้วที่ใช้ Google เดียวกัน อุปกรณ์ที่เราได้รับเล่นอีก กับสายที่เราคิดว่าอาจจะมี สนุกที่ปลายภาคการศึกษาคือ สิ่งเล็ก ๆ น้อย ๆ ที่นี่ มันเรียกว่าการเคลื่อนไหวก้าวกระโดดและสิ่งที่คุณ เกี่ยวกับที่จะเห็นเป็นเทคนิค โฆษณาสำหรับอุปกรณ์ แต่มัน ไม่พูดถึงสิ่งนี้โดยเฉพาะ อุปกรณ์ที่มีความสามารถของ และมันก็มาพร้อมกับ API ผ่าน ซึ่งคุณสามารถเขียนซอฟต์แวร์เพื่อ ควบคุมเครื่องคอมพิวเตอร์ของคุณเองในลักษณะที่ ค่อนข้างชอบภาพยนตร์เรื่องนี้หนึ่งนาทีที่นี่ [เล่นภาพวิดีโอ] [เล่นวิดีโอจบ] ดังนั้นตอนนี้อุปกรณ์นี้ที่เกิดขึ้นกับ จะดำเนินการเป็นเพียงเล็กน้อย USB เชื่อมต่อที่คุณสามารถเสียบเข้าของคุณ คอมพิวเตอร์ แต่ฉันจะไม่แปลกใจ ถ้าอีกไม่นานเรามีประเภทนี้ เทคโนโลยีในชุดต่อไปของเครื่องคอมพิวเตอร์ และแม็คเพื่อให้คุณสามารถจริง โต้ตอบกับมันใน ลักษณะเช่นเดียวกับที่ ในความเป็นจริงสิ่งที่ฉันคิดว่าฉันทำเกินไป ผมดึงขึ้นมาสาธิตเล็ก ๆ น้อย ๆ โปรแกรมที่มาพร้อมกับซอฟต์แวร์นี้ ดังนั้นผมจึงได้ใส่เซ็นเซอร์เล็ก ๆ น้อย ๆ ในด้านหน้าของแล็ปท็อปของฉัน และในขณะที่คุณสามารถเห็นมันแล้วก็ตระหนักว่า ที่มือของฉันจะมี การควบคุมมัน และโปรแกรมนี้ไม่เป็น สิ่งเล็ก ๆ น้อย swimmingly เช่นนี้ แต่คุณจะเห็นว่าจริง ฉันมีห้านิ้วมี ถ้าเราจะได้รับมันที่จะทำทั้งหมด 10 ที่คุณสามารถจินตนาการเปียโนเรียบร้อย หรือโปรแกรมประยุกต์เช่น ดังนั้นถ้าคุณต้องการที่จะเกิดขึ้นหลังเลิกเรียน วันนี้และเล่นกับที่เป็น ดีคุณจะยินดีที่จะ ดังนั้นเพิ่มเติมว่าในช่วงปลายภาคการศึกษา ดังนั้นคู่ของการบริหาร ประกาศ หนึ่งทำส่วนภายในวันศุกร์นี้ ตอนเที่ยงที่ cs60.net/section ว่า URL เป็นของหลักสูตร หน้าแรกเช่นกัน ในขณะเดียวกันแม้ว่า supersections, จะเปิดตัวอาทิตย์นี้ Supersections เป็นสิ่งที่เพียงครั้งเดียว เพราะมันพาเราเวลาในการทำงานบางอย่าง ออกในส่วนใดและสถานที่ที่ ดังนั้นจะมาถึงนี้ในวันอาทิตย์ที่จะมีหนึ่ง ส่วนสำหรับผู้ที่สะดวกสบายน้อยลง ส่วนหนึ่งสำหรับผู้ที่ สะดวกสบายมากขึ้น และบรรดาของคุณที่ไหนสักแห่งใน ระหว่างพวกเรายินดีที่จะไป อย่างใดอย่างหนึ่งหรือทั้งสองหรือไม่ ทั้งสองคนนี้จะได้รับการถ่ายทำ พวกเขาจะอยู่ในห้องประชุมที่มีขนาดใหญ่กว่า ส่วนปกติจะเป็นค่ะ แต่เป้าหมายที่นี่คือการจัดให้คุณด้วย ความสะดวกสบายด้วยปัญหาบางชุดหนึ่ง กับ C ด้วย CS50 เครื่องนี้ วันหยุดสุดสัปดาห์ก่อนที่คุณจะหาของคุณ ที่ได้รับมอบหมายอย่างเป็นทางการส่วน ดังนั้นคุณจะพบ TF ของคุณและขนาดเล็กของคุณ กลุ่มของ sectionmates ในประมาณ เวลาหนึ่งสัปดาห์ เวลาทำการขณะที่ ได้รับไป ทำใช้ประโยชน์จากพวกเขาคืนนี้หรือ คืนวันพรุ่งนี้หากคุณต้องการ ชุด 0 ปัญหาเนื่องจากเมื่อวันศุกร์ที่ นี้เป็นวันที่ช้ากว่า สม่ำเสมอกำหนดพฤหัสบดี แต่ปัญหากับชุดที่ 1 คุณจะเห็น ว่ามันมีบางอย่างที่อบอุ่นขึ้น การออกกำลังกายที่คุณเอง สามารถขยายของคุณ เส้นตายพฤหัสบดีถึงวันศุกร์ ชุดปัญหา 1 ในขณะเดียวกันจะเปิดตัว บนเว็บไซต์ของหลักสูตรนี้มา วันศุกร์ที่ถ้าคุณต้องการที่จะขดตัวด้วย มันเป็นฉันได้กาลครั้งช่วงปลายปี ในคืนวันศุกร์ในห้องของคุณ ดังนั้น cs50.net/appliance เป็นสถานที่ที่ คุณจะได้รับเครื่องใช้ CS50 ที่เราเริ่มใช้ในวันจันทร์ เราจะใช้มันอีกเล็กน้อยในวันนี้ แต่มั่นใจว่าปัญหาที่ตั้งไว้ 1 สเปคจะนำคุณผ่าน แม่นยำขั้นตอนที่คุณจำเป็นต้อง ที่ได้รับและทำงาน จึงไม่ต้องกังวลเกี่ยวกับการทำว่าก่อนที่ Pset 1 ถ้าคุณไม่ต้องการ ทั้งหมดขวา ดังนั้นเราจึงมองไปในวันจันทร์ที่ซอร์สโค้ด แต่ในบริบทของใหม่ การเขียนโปรแกรมภาษาคือ C. และ C เหมือนเกาไม่ได้เป็นแบบกราฟิก มันไม่ได้เป็นปริศนาชิ้น มันเป็นไวยากรณ์ภาษาอังกฤษอย่าง และมีคู่ของขั้นตอนที่เกี่ยวข้องกับคน ในอันที่จริงการเขียนและการทำงาน โปรแกรมในภาษา C เพราะนอกเหนือจากแหล่งที่มา รหัสเช่นนี้คุณจะต้องบางสิ่งบางอย่าง ที่เรียกว่าคอมไพเลอร์ และในแง่ของคนธรรมดาสิ่งที่ คอมไพเลอร์จะทำเพื่อเรา? ใช่ ลูกศิษย์: มันจะแปลงรหัส ที่คุณเขียนถึง 0 และ 1 DAVID ลัน: ดี ดังนั้นจึงแปลงรหัสว่า เราเขียนถึง 0 และ 1 จะแปลงรหัสแหล่งที่มาที่เรียกว่า รหัสวัตถุหลังของซึ่งมีลักษณะ บางสิ่งบางอย่างเล็ก ๆ น้อย ๆ เช่นนี้ และมันก็เป็นซีพียูสมองภายในของคุณ คอมพิวเตอร์ว่าเป็นเพราะของคุณ คนที่สร้างคอมพิวเตอร์เครื่องนั้น รู้ว่าสิ่งที่วนเวียนอยู่เหล่านั้น ของมีค่าเฉลี่ย 0 และ 1 บางทีมันอาจจะหมายถึงการพิมพ์ บางทีมันอาจจะหมายถึงนอกจากนี้ บางทีมันอาจจะหมายถึงการลบ บางทีมันอาจจะหมายถึงการแสดงผลกราฟิก มีรูปแบบที่กำหนดไว้ล่วงหน้าของบิตเป็น ว่าโลกได้ตัดสินใจที่หมายถึง บางสิ่งบางอย่าง แต่ส่วนใหญ่ในหลักสูตรนี้ เราจะทำงานในระดับที่สูงและ เราจะโมเมว่ามีอยู่ สิ่งที่ต้องการคอมไพเลอร์ที่สามารถ ทำให้ฟังก์ชั่นรหัสของเราที่มา ในทางที่เราตั้งใจ ดังนั้นโปรแกรมที่เราเขียนครั้งแรกสัปดาห์ที่ผ่านมา และจากนั้นก็เริ่มไปที่ท่าเรือเพื่อที่จะ พูดไปที่ C ผ่านมานี้ วันจันทร์ที่เป็นนี้ เมื่อธงสีเขียวคลิกทักทาย นี้แน่นอน เขียนใน Scratch และฉันอ้างว่าเทียบเท่า โปรแกรมในภาษา C มองเล็ก ๆ น้อย ๆ บางอย่างเช่นนี้ ดังนั้นสิ่งที่ฉันคิดว่าเราควรจะทำในตอนแรกคือ ขอแซวนอกเหนือสิ่งที่ดูเหมือนตอนแรก อย่างรวดเร็วเป็นที่ยอมรับว่าเป็นความลับอย่างเป็นธรรม ไวยากรณ์ แต่คุณจะเริ่มสังเกตเห็น รูปแบบได้อย่างรวดเร็วมาก สิ่งที่เราจะทำในวันนี้คือให้ ให้คุณมีจิตแบบสำหรับบางคน ยอมรับบางสร้างมาตรฐาน ในการเขียนโปรแกรม และจากนั้นเราจริงจะได้รับในมือของเรา สกปรกด้วยตัวอย่างบางส่วนเช่นกัน ดังนั้นสำหรับบรรดาของคุณสะดวกสบายมากขึ้น ตระหนักดีว่าในสัปดาห์นี้และจากนั้นต่อไป สัปดาห์เป็นอย่างดีอาจจะเป็นบิตของความคิดเห็น แต่โดยเฉพาะอย่างยิ่งเมื่อฉบับที่แฮ็กเกอร์ ของปัญหา 1 ชุดออกไปเมื่อ เว็บไซต์ของหลักสูตรในวันศุกร์ที่ฉันคิดว่า คุณจะพบว่าแม้ในขณะที่คุณกรอก ช่องว่างบางส่วนในช่วงสัปดาห์หน้าหรือสอง, คุณจะเริ่มต้นที่จะได้รับมากกว่าที่เคย ท้าทายและพบ สิ่งใหม่และใหม่กว่า ดังนั้นขอแซวโปรแกรมนี้ออกจากกัน ไม่กี่บรรทัดในเวลา ที่ด้านบนมากเรามีอะไร เรียกว่าเทคนิค สั่ง preprocessor นี่เป็นเพียงบรรทัดของรหัสที่ระบุว่า รวมถึงเนื้อหาของไฟล์, ที่เรียกว่ามาตรฐาน I / N, เข้ามาตรฐาน - หรือขออภัยมาตรฐาน I / O มาตรฐาน อินพุต / เอาต์พุต, h. ภายใน ของโปรแกรมของตัวเอง ดังนั้นในคำอื่น ๆ ถ้าผมเขียนนี้ โปรแกรมด้วยโปรแกรมแก้ไขข้อความง่ายๆเช่น Gedit ที่เท่าเทียมกันง่าย บางอย่างเช่นโปรแกรม Microsoft Word, ว่า คำสั่ง # include stdio.h เป็นเพียง จะบอกคอมไพเลอร์ที่คว้า เนื้อหาของไฟล์อื่น ๆ ที่ stdio.h, และวางพวกเขาที่นี่ ตอนนี้ทำไมฉันดูแล? เราไม่เรียกร้องสิ่งที่อยู่ภายในของไฟล์นี้ เรียกว่า stdio.h ซึ่งจะถูกเก็บไว้ ที่แห่งหนึ่งในฮาร์ดไดรฟ์ของฉันหรือในการนี​​้ กรณีที่ไหนสักแห่งใน CS50 เครื่อง? คนอื่นใส่มันไว้ที่นั่นสำหรับฉัน แต่อะไรอยู่ในนั้น? ผมจึงประกาศ ฟังก์ชั่นที่เรียกว่า printf ดังนั้น printf ฟังก์ชันที่จำได้ว่า คำแสดงและตัวละครและ ตัวเลขบนหน้าจอในการประมูล แต่ผมไม่ได้เขียนมัน CS50 ไม่ได้เขียนมัน ปีที่ผ่านมามีคนเขียนมันและพวกเขา เป็นหลักให้เราสูตรสำหรับมัน ในไฟล์ที่เรียกว่า stdio.h เพื่อให้บรรทัดแรกเพียงแค่ให้ฉันเข้าถึง ฟังก์ชั่นที่คนอื่น เมื่อปีที่ผ่านมาในหมู่ ซึ่งเป็น printf ตอนนี้ยังบรรทัดถัดไปฉันจะโบกมือของฉัน มือที่อย่างน้อยจนกว่าจะถึงสัปดาห์หน้า แต่ตอนนี้รู้ว่า int main (void) คือ หลักเทียบเท่านี้ ชิ้นส่วนปริศนาสีเหลืองเมื่อ ธงสีเขียวคลิก โลก, ปีที่ผ่านมาคิดว่าถ้า คุณกำลังเขียนโปรแกรมใน ภาษาที่เรียกว่า C, คุณจะเริ่มต้น โปรแกรมของคุณกับสาย ที่ดูเหมือนว่า ในเวลาเพียงเกี่ยวกับเวลาหนึ่งสัปดาห์ก็จะทำให้ ความรู้สึก int อะไรคือสิ่งที่ถือเป็นโมฆะ แต่ตอนนี้เพียงแค่คิดว่าของมัน เป็นชิ้นส่วนปริศนานี้สีเหลือง ตอนต่อไปเราจะต้องรั้งหยิกตาม อีกรั้งหยิกใกล้ชิด เพื่อที่จะพูด และเราจะเห็นเหล่านี้ตลอด โปรแกรมในภาษา C เช่นเดียวกับ JavaScript และ PHP และสิ่งเหล่านี้เพียงแค่แค็ปซูล บรรทัดของรหัสที่เกี่ยวข้อง รั้งหยิกเปิดเป็นหลัก พูดว่านี่มาบางรหัส และรั้งหยิกปิดซึ่งเป็น มุมในทิศทางอื่น ๆ เพียงแค่ วิธีการที่มันสำหรับ รหัสที่เกี่ยวข้อง ดังนั้นเส้นฉ่ำในครั้งแรกนี้ โปรแกรมเป็นครั้งสุดท้าย, printf, อ้างไม่ได้นำมาอ้าง, hello โลก และสิ่งที่ผมเรียกว่าระหว่าง คำพูดที่ว่าเวลาที่ผ่านมา? ดังนั้นจึงเป็นสตริง และสตริงเป็นเพียง Techie คำที่ใช้เรียกลำดับของ ตัวอักษรคำวลี แม้แต่ตัวอักษรเดียวที่จะทำได้ จะยกสอง แต่ลำดับของศูนย์ ตัวอักษรหรือมากกว่า เครื่องหมายทับขวา n-แต่มีลักษณะ บิตแปลก แต่มันก็หมายถึงบางสิ่งบางอย่าง ง่ายต่อการใช้คอมพิวเตอร์ เครื่องหมายทับขวา n-คืออะไร? บรรทัดใหม่ ดังนั้นนั่นเป็นเพียงลำดับพิเศษของ ตัวอักษรที่โลกได้ตัดสินใจ วิธีการใส่แบ่งบรรทัดมีสิทธิ เพราะคอมไพเลอร์จะได้รับจริง สับสนมักจะถ้าคุณมาก เข้าใจ แต่ไม่ถูกต้องเพียง เริ่มต้นกดปุ่ม Enter เพื่อวาง สายใหม่ในรหัสของคุณ คุณจะต้องเป็นเล็ก ๆ น้อย ๆ ชัดเจนด้วยเครื่องหมายทับขวา n- และเราจะเห็นว่ามีไม่กี่อื่น ๆ เช่น สำหรับรูปแบบตัวอักษรพิเศษ ตัวอย่างเช่นถ้าคุณต้องการที่จะให้คุณ ใจหลงกับกรณีมุม, คิดว่าฉันต้องการที่จะพิมพ์ คู่ quote บนหน้าจอ ด้วยเหตุผลอะไรก็ตามที่ดูเหมือนจะ จะเป็นเพียงเล็กน้อยขวามีปัญหา? เพราะถ้าผมใส่คู่ quote ใน ตรงกลางของ "Hello World," สิ่งที่ เหตุผลว่าทำไมดูเหมือน อาจมีปัญหา? จะแบ่งสตริง คอมไพเลอร์เป็นเพียงโปรแกรม โปรแกรมเช่นคอมไพเลอร์จะเป็นเพียง การอ่านรห​​ัสของคุณบนลงล่าง จากซ้ายไปขวา และหากเห็นว่าคำพูดสองสามแทน ของทั้งสองก็จะไม่ทราบ ถ้าคุณหมายความว่าสิ่งที่ไปทางซ้าย ควรที่จะเป็นสตริงหรือสิ่งที่จะต้อง ขวาหรือสิ่งที่ทั้ง มันคลุมเครือและดังนั้นสิ่งที่ปกติ คอมไพเลอร์จะทำคือเพียงแค่ออกนอกลู่นอกทาง, และให้ข้อความข้อผิดพลาดบางส่วนและ ทำให้คุณจัดการกับปัญหา เพื่อให้ได้รับเครื่องหมาย n-หมายถึงใหม่ สายสิ่งที่จะสัญชาตญาณของคุณตอนนี้ เริ่มต้นที่จะเป็นถ้าคุณต้องการที่จะรวม บางสิ่งบางอย่างผิดปกติเช่นคู่ อ้างอิงภายในของนี้มิฉะนั้นข้อความที่ยกมา สตริง? อ้างเครื่องหมายทับขวาสองครั้ง และดังนั้นเราจะเห็นสิ่งนี้ ชนิดของรูปแบบเกินไป หากคุณต้องการที่จะทำบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ แปลกคุณจะพบว่า การแก้ปัญหามักจะทำตามรูปแบบ, และเครื่องหมายทับขวา หมายถึงลำดับหนี และมันก็หมายความว่าบางสิ่งที่พิเศษ ที่เราต้องการที่จะเป็นตัวแทนใน วิธีการที่แตกต่างกัน ในฐานะที่เป็นวิธีการที่คุณเป็นตัวแทนของ เครื่องหมายทับขวาดีเราจะ กลับมาที่ว่า แต่คำตอบก็เป็นจริง บิตที่เห็นได้ชัด ดังนั้นตอนนี้ขอแนะนำอื่น ๆ บาง การเขียนโปรแกรมโครงสร้าง ที่คุณเห็นใน Scratch คุณอาจจะนำมาให้ได้รับ แล้วถ้าคุณได้ดำดิ่งลงไปแล้ว ปัญหาการตั้งค่า 0 แต่ตอนนี้ขอแนะนำไวยากรณ์ใน C เหล่านี้เป็นอย่างอื่นค่อนข้างง่าย ความคิดอย่างน้อยบางส่วนของพวกเขา ดังนั้นความคิดนี้ของเงื่อนไขหรือ สาขาในขณะที่ก่อนหน้านี้เรา แสดงด้วยรหัสที่ดู เช่นนี้ทางด้านซ้ายมือใน Scratch - ถ้า x มีค่าน้อยกว่า y แล้วพูดเพื่อ - แทนตอนนี้อยู่ใน C - ให้ฉันเหลา ในกรณีที่ง่ายที่สุด - เราเพียงแค่จะบอกว่าถ้าเปิด วงเล็บคืออะไรบางอย่างที่เป็นความจริง - การแสดงออกของบูลีนเป็นไป ที่ฉันได้กล่าวว่าสภาพ - วงเล็บปิดแล้วไม่อะไร ภายในของวงเล็บปีกกาเหล่านั้น ดังนั้นที่นี่ด้วยวงเล็บปีกกา เป็นชนิดเช่นรอยขีดข่วนของ รูปตัวยูชิ้นส่วนปริศนา อย่าอยู่ภายในวงเล็บปีกกาเหล่านี้สิ่ง ในกรณีนี้เฉือนเฉือน และแจ้งให้ทราบล่วงหน้านี้ไปข้างหน้า เฉือนไม่เครื่องหมายทับขวา ทับ, ทับ, สำหรับผู้ที่ได้ตั้งโปรแกรม ก่อนที่จะเพียงแค่หมายถึง - มันเป็นแค่ความคิดเห็น ความคิดเห็นไม่ได้เป็นเส้น ของรหัสต่อ SE มันเป็นบรรทัดของภาษาอังกฤษที่คุณ, มนุษย์ได้เขียนให้ตัวเองเพื่อ บางทีอาจจะเตือนให้คุณทำอะไรบางอย่างเพื่อ อธิบายให้กับตัวเองที่จะอธิบายให้ คนอื่นว่ารหัสของคุณจะทำ มันเป็นเพียงความคิดเห็นพรรณนา ตอนนี้แน่นอนเราสามารถมีวิธีที่สอง แยกในถนนเพียงโดยการทำเช่นนี้ ทางแยกสามทางในถนนโดยการทำ นี้และถ้าคุณยังคงนี้ รูปแบบที่คุณสามารถมีสี่ทาง, ห้าทาง, ส้อมหกทางในถนนถ้า คุณต้องจัดการแน่นอน ที่หลายเงื่อนไข แล้วสังเกตเห็นความเท่าเทียมที่นี่ - ถ้า (เงื่อนไข) อื่นถ้า (เงื่อนไข) และเป็นคนเดียวที่เล็ก ๆ น้อย ๆ ที่แปลกคือที่ผ่านมาซึ่ง เป็นเพียงที่อื่น แต่อีกครั้งนี้เป็นเหมือนกัน แนวคิดกับสิ่งที่เราเคยทำมาแล้ว แล้วแม้ว่าไวยากรณ์จะ ใช้เวลาเล็กน้อยรับใช้ ตอนนี้ในตัวอย่างนี้มี บางไวยากรณ์แปลกอื่น ๆ เราเห็น printf อีกครั้งวงเล็บเปิด และวงเล็บปิด และภายในของมี สายยก วงเล็บในบริบท จาก printf ไปทางด้านซ้าย และด้านขวาของอะไร เราทำอะไรที่ยกมาอธิบาย สตริงเป็นมากกว่าปกติ? ดังนั้นจึงเป็นข้อโต้แย้ง ทุกครั้งที่คุณมีฟังก์ชั่นเช่น printf แล้ววงเล็บเปิดและ วงเล็บใกล้ชิดและสิ่งที่อยู่ภายใน มันไม่ว่าจะเป็นสตริงหรือ จำนวนเต็มหรือสิ่งอื่นใดสิ่งที่ใน ระหว่างวงเล็บเหล่านั้นเรียกว่า อาร์กิวเมนต์ และอาร์กิวเมนต์เพียงแค่มีอิทธิพลต่อ พฤติกรรมการทำงานของ ในกรณีนี้เป็นที่ชัดเจนว่าสวย x