[เสียงเพลง] เดวิดเจลัน: สิทธิทั้งหมด นี่คือ CS50 และนี่ เป็นจุดเริ่มต้นของสัปดาห์ที่ 2 และคุณจะจำได้ว่าในช่วง คู่ที่ผ่านมาของสัปดาห์ที่ผ่านมา เราได้รับการแนะนำคอมพิวเตอร์ วิทยาศาสตร์และในทางกลับกันการเขียนโปรแกรม และเราเริ่มต้นเรื่องราวโดยวิธีการ รอยขีดข่วนว่าภาษากราฟิก จากเอ็มไอทีมีเดียแล็บ และจากนั้นเมื่อเร็ว ๆ นี้ สัปดาห์ที่แล้วเราได้ แนะนำ higher-- ภาษาในระดับต่ำกว่าที่รู้จักกัน C, บางสิ่งบางอย่างที่เกี่ยวกับใจอย่างหมดจด และแน่นอนครั้งสุดท้ายที่เรา การสำรวจในบริบทที่ จำนวนของแนวคิด นี้เรียกเป็นอย่างมาก โปรแกรมแรกที่เรามองไปที่ และโปรแกรมนี้ค่อนข้างง่าย พิมพ์ออก "Hello, world." แต่มีมาก มายากลดูเหมือนเกิดขึ้น มี #include นี้เป็น ด้วยวงเล็บมุมเหล่านี้ มี int เป็น มี (void) มีวงเล็บวงเล็บปีกกาของ กึ่งทวิภาคและอื่น ๆ อีกมากมาย และเพื่อให้จำได้ว่า เราได้นำรอยขีดข่วน เพื่อให้เราสามารถนึกคิดเห็นอดีต ไวยากรณ์ว่าสิ่งที่เป็นจริงไม่ ทุกสิ่งที่สติปัญญา แต่ที่น่าสนใจในช่วงต้น คืออย่างบิตหากิน มัดใจรอบ และแน่นอนหนึ่งที่พบมากที่สุด สิ่งที่ในช่วงต้นของการเรียนการเขียนโปรแกรม โดยเฉพาะอย่างยิ่งสำหรับผู้น้อย ความสะดวกสบายที่จะได้รับความผิดหวังจากการ และดีดกลับขึ้นมาจากบางประโยค ข้อผิดพลาดที่ไม่พูดถึงข้อผิดพลาดเชิงตรรกะ และในหมู่เป้าหมายของเรา วันนี้จริงจะ จะจัดให้คุณกับบางส่วน เทคนิคการแก้ปัญหาสำหรับวิธีการ ที่ดีกว่าการแก้ปัญหาตัวเอง ในรูปแบบของการแก้จุดบกพร่อง และคุณจะจำได้เหมือนกันว่า สภาพแวดล้อมที่เราแนะนำ ครั้งสุดท้ายที่ถูกเรียกว่า CS50 IDE นี้เป็นซอฟต์แวร์บนเว็บที่ ช่วยให้คุณสามารถเขียนโปรแกรมในเมฆ เพื่อที่จะพูดในขณะที่เก็บทั้งหมดของคุณ ไฟล์เข้าด้วยกันในขณะที่เราในวันนี้อีกครั้งจะ และจำได้ว่าเรา หัวข้อเหล่านี้มาเยือนที่นี่ ในหมู่พวกเขาฟังก์ชั่นและลูปและ ตัวแปรและการแสดงออกบูลีน และเงื่อนไข และจริงอีกไม่กี่ที่เรา แปลมาจากโลกของรอยขีดข่วน สู่โลกของซี แต่อาคารพื้นฐาน บล็อกเพื่อที่จะพูด จริงๆยังคงเป็นสัปดาห์ที่ผ่านมาเช่นเดียวกัน ในความเป็นจริงเราจริงๆเพียงแค่มี ชิ้นส่วนจิ๊กซอว์ที่แตกต่างกันถ้าคุณจะ แทนที่จะเป็นสีม่วงว่า บันทึกบล็อกเราแทน ได้ printf ซึ่งเป็น ฟังก์ชั่นนี้ใน C ที่ ช่วยให้คุณพิมพ์บางสิ่งบางอย่าง และจัดรูปแบบบนหน้าจอ เราแนะนำ CS50 ห้องสมุดที่คุณ มีตอนนี้ที่ get_char การกำจัดของคุณ และ get_int และ get_string, และฟังก์ชั่นอื่น ๆ ไม่กี่เป็น ดีผ่านทางที่คุณจะได้รับการป้อนข้อมูล จากแป้นพิมพ์ของผู้ใช้ และเรายังได้ดูสิ่งที่ เช่นบูล these- และถ่าน และดับเบิลลอย int สตริง long_long และมีแม้กระทั่งชนิดข้อมูลอื่น ๆ ใน C. ในคำอื่น ๆ เมื่อคุณประกาศ ตัวแปรเพื่อเก็บค่าบางอย่าง หรือเมื่อคุณใช้ฟังก์ชั่น ที่ส่งกลับค่าบางอย่าง คุณสามารถระบุสิ่งที่ ประเภทของค่าที่ มันเป็นสตริงเช่น ลำดับของตัวอักษร? มันเป็นตัวเลขเช่นจำนวนเต็ม? มันเป็นจุดลอย คุ้มค่าหรือชอบ? ดังนั้นใน C ซึ่งแตกต่างจากรอยขีดข่วนเราจริง เริ่มที่จะระบุชนิดของข้อมูล เรากำลังจะกลับหรือใช้ แต่แน่นอนเรายังวิ่งเข้าไป บางข้อ จำกัด ของการใช้คอมพิวเตอร์พื้นฐาน และโดยเฉพาะอย่างยิ่ง นี้ภาษา C การเรียกคืน ที่เราเอามาดูที่ ล้นจำนวนเต็มในความเป็นจริง ว่าถ้าคุณมีเพียง จำนวน จำกัด ของหน่วยความจำ หรือเฉพาะจำนวน จำกัด ของบิตคุณสามารถนับสูงมาก และเพื่อให้เรามองไปที่ตัวอย่างนี้ที่นี่ โดยเคาน์เตอร์ในเครื่องบิน, ที่จริงถ้าทำงานนานพอที่จะ ล้นและผลในซอฟต์แวร์ ข้อผิดพลาดที่เกิดขึ้นจริงที่มีศักยภาพทางกายภาพ นอกจากนี้เรายังมองไปที่ลอย จุดไม่แน่ชัดในความเป็นจริง ที่มีเพียงจำนวน จำกัด ของบิตไม่ว่าจะเป็น 32 หรือ 64 คุณสามารถระบุตัวเลขจำนวนมากดังนั้น หลังจากจุดทศนิยมหลังจากที่คุณ เริ่มต้นที่จะได้รับไม่แน่ชัด ดังนั้นสำหรับตัวอย่างเช่นหนึ่งในสามใน โลกที่นี่ในโลกมนุษย์ของเรา เรารู้ว่าเป็นเพียงจำนวนอนันต์ ของ 3s หลังจุดทศนิยม แต่คอมพิวเตอร์ไม่สามารถจำเป็น แทนจำนวนอนันต์ของตัวเลข ถ้าคุณจะให้มันบาง จำนวน จำกัด ของข้อมูล ดังนั้นไม่เพียง แต่เราจัดให้คุณ ที่มีอำนาจมากขึ้นในแง่ วิธีการที่คุณอาจจะแสดงตัวเองที่ แป้นพิมพ์ในแง่ของการเขียนโปรแกรม นอกจากนี้เรายัง จำกัด สิ่งที่ คุณสามารถทำได้จริง และแน่นอนข้อบกพร่องและความผิดพลาดสามารถ เกิดขึ้นจากชนิดของปัญหา และแน่นอนในหัวข้อวันนี้ กำลังจะเป็นหัวข้อต่างๆเช่นการแก้จุดบกพร่อง และที่จริงมองใต้กระโปรงหน้ารถ ในสัปดาห์ที่ผ่านมาว่าสิ่งที่ถูกนำมาใช้ จะดำเนินการจริง เพื่อให้คุณดีขึ้น เข้าใจความสามารถของทั้งสองและ ข้อ จำกัด ของภาษาเช่นซีที่ และในความเป็นจริงเราจะปอกเปลือกกลับชั้น ของที่ง่ายที่สุดของโครงสร้างข้อมูล สิ่งที่เรียกว่าอาร์เรย์ซึ่ง รอยขีดข่วนที่เกิดขึ้นเรียกว่า "รายการ". มันนิด ๆ หน่อย ๆ ที่แตกต่างกันในบริบทที่ แล้วเรายังจะแนะนำหนึ่งใน แรกของปัญหาเฉพาะโดเมนของเรา ใน CS50 โลกของ วิทยาการศิลปะของ scrambling หรือใน ciphering ข้อมูลเพื่อ ที่คุณสามารถส่งข้อความลับ และถอดรหัสข้อความลับ ระหว่างคนสองคน, A และ B ดังนั้นก่อนที่เราจะเปลี่ยนแปลง เพื่อโลกใหม่ที่ ลองจัดให้คุณกับบางส่วน เทคนิคที่คุณสามารถกำจัด หรือลดอย่างน้อยบางส่วน ของความผิดหวัง ที่คุณอาจจะได้พบ ในช่วงสัปดาห์ที่ผ่านมาเพียงอย่างเดียว ในความเป็นจริงข้างหน้าของคุณจะ such-- บางส่วนของ ปัญหาที่เกิดขึ้นครั้งแรกของคุณใน C. และราคาเป็น ถ้าคุณชอบฉันเป็นครั้งแรก คุณพยายามที่จะพิมพ์ออกโปรแกรม แม้ว่าคุณจะคิดว่ามีเหตุผล โปรแกรมคือสวยเรียบง่าย คุณเป็นอย่างดีอาจจะชนกำแพงและ คอมไพเลอร์จะไม่ให้ความร่วมมือ ทำให้เสียงดังกราวหรือไม่ได้ไป ที่จริงทำตามคำสั่งของคุณ และเหตุผลที่ว่าอาจจะมี? ดีขอดูที่, บางทีอาจจะเป็นโปรแกรมที่ง่าย ฉันจะไปข้างหน้าและบันทึกนี้ ไฟล์จงใจเรียก buggy0.c, เพราะผมรู้ว่ามันจะ เป็นข้อบกพร่องล่วงหน้า แต่ผมอาจจะไม่ทราบว่าถ้านี้ เป็นโปรแกรมแรกหรือครั้งที่สองหรือสาม ว่าฉันจริงทำให้ตัวเอง ดังนั้นฉันจะไปข้างหน้าและ พิมพ์ออก int main (void) และจากนั้นภายในวงเล็บปีกกาของฉัน ที่คุ้นเคยมาก ( "สวัสดี world-- ทับขวา, N ") - และ semi-colon ผมเคยบันทึกไฟล์ ตอนนี้ฉันจะไปลง เพื่อหน้าต่าง terminal ของฉัน และประเภทแต่งหน้า buggy0 เพราะอีกครั้ง ชื่อของไฟล์ในวันนี้คือ buggy0.c ดังนั้นผมจึงทำให้พิมพ์ buggy0 ใส่ และโอ้เอ้ยจำจากครั้งสุดท้าย ว่าข้อความที่ไม่มีข้อผิดพลาดเป็นสิ่งที่ดี ดังนั้นผลลัพธ์ออกมาเป็นสิ่งที่ดี แต่ที่นี่ผมมีอย่างชัดเจน จำนวนผิดพลาดบางอย่าง ดังนั้นบรรทัดแรกของการส่งออก หลังจากพิมพ์ให้ buggy0 จำ เป็นผล verbose ค่อนข้างเสียงดังกราวของ ภายใต้ประทุน IDE CS50 มีการกำหนดค่า จะใช้ทั้งกลุ่ม ตัวเลือกที่มีคอมไพเลอร์นี้ เพื่อให้คุณไม่ได้ ที่จะคิดเกี่ยวกับพวกเขา และนั่นคือทั้งหมดที่บรรทัดแรก วิธีการที่เริ่มต้นด้วยเสียงดังกราว แต่หลังจากนั้นปัญหาที่เกิดขึ้น เริ่มต้นที่จะทำให้ลักษณะของพวกเขา Buggy0.c ในบรรทัดที่ 3 ตัวอักษร 5 มีขนาดใหญ่สีแดงข้อผิดพลาด นั่นคืออะไร? โดยปริยายประกาศฟังก์ชั่นห้องสมุด printf กับชนิด int (const char *, ... ) [-Werror] ฉันหมายความว่ามันได้อย่างรวดเร็ว ได้รับความลับมาก และแน่นอนว่าในตอนแรก ได้อย่างรวดเร็วเราจะไม่ คาดหวังว่าคุณจะเข้าใจ ความสมบูรณ์ของข้อความนั้น และเพื่อให้เป็นหนึ่งในบทเรียน สำหรับวันนี้เป็นไป ที่จะพยายามที่จะแจ้งให้ทราบ รูปแบบหรือสิ่งที่คล้ายกัน ข้อผิดพลาดที่คุณอาจมี พบในอดีตที่ผ่านมา ดังนั้นขอแซวออกจากกันเท่านั้น คำพูดเหล่านั้นที่ดูคุ้นเคย ขนาดใหญ่สีแดงข้อผิดพลาดอย่างชัดเจน สัญลักษณ์ของบางสิ่งบางอย่างผิด โดยปริยายประกาศ ห้องสมุด printf ฟังก์ชั่น ดังนั้นแม้ว่าผมจะไม่เข้าใจสิ่งที่ โดยปริยายประกาศฟังก์ชั่นห้องสมุด หมายถึงปัญหาที่เกิดขึ้นอย่างแน่นอน เกี่ยวข้องกับ printf อย่างใด และแหล่งที่มาของปัญหาว่า จะทำอย่างไรกับประกาศว่า ประกาศฟังก์ชั่น กล่าวถึงมันเป็นครั้งแรก และเราใช้คำศัพท์สัปดาห์ที่ผ่านมา ประกาศของต้นแบบฟังก์ชั่นของการ ทั้งที่มีหนึ่งบรรทัดที่ด้านบนของคุณ ไฟล์ของตัวเองหรือในไฟล์ส่วนหัวที่เรียกว่า และในสิ่งที่ทำไฟล์ที่เราพูด สัปดาห์ที่แล้วว่าเป็น printf อ้าง ได้นำมาอ้างประกาศ? ในสิ่งที่ไฟล์ต้นแบบของตนหรือไม่ ดังนั้นถ้าคุณจำสิ่งแรกที่ผม พิมพ์เกือบทุกโปรแกรม time-- สุดท้าย และตั้งใจสักครู่ที่ผ่านมาเริ่มต้น พิมพ์ myself-- เป็นหนึ่ง here-- hash-- #include