[เล่นเพลง] เดวิดเจลัน: ทั้งหมดขวา นี้เป็น CS50 และนี่ คือจุดเริ่มต้นของสัปดาห์ที่สอง ดังนั้นขอให้เราเริ่มต้นวันนี้กับข้อผิดพลาด ข้อผิดพลาดของหลักสูตรเป็น ความผิดพลาดในโปรแกรม และคุณจะได้รับมาก คุ้นเคยกับแนวคิดนี้ ถ้าคุณไม่เคยตั้งโปรแกรม ก่อนที่จะ pset0 และตอนนี้ PSET1 แต่ขอพิจารณาสิ่งที่ ง่ายๆเพียงเล็กน้อยในครั้งแรก โปรแกรมนี้ที่นี่ที่ฉัน โยนกันล่วงหน้า และผมก็อ้างว่านี่ควรพิมพ์ 10 ดาวบนหน้าจอโดยใช้ printf, แต่ก็เห็นได้ชัดว่าเป็นรถในทางใดทางหนึ่ง กำหนดสเปคที่ว่า มันควรจะพิมพ์ 10 ดาว แต่มันไม่ได้เห็นได้ชัดว่าสิ่งที่ คุณจะอ้างเป็นข้อผิดพลาดหรือไม่ ใช่? จึงออกจากข้อผิดพลาดอย่างใดอย่างหนึ่ง, และสิ่งที่คุณหมายถึงโดยที่? ตกลง ที่ดีเยี่ยม ดังนั้นเราจึงได้ระบุไว้ เริ่มต้นค่าเป็นศูนย์สำหรับฉัน และเราได้กำหนดค่า n 10 แต่เราได้ใช้น้อยกว่าหรือเท่ากับ และด้วยเหตุผลที่ว่านี้เป็นสอง ตัวอักษรและไม่เพียงสัญลักษณ์ เหมือนในหนังสือคณิตศาสตร์ คือการที่คุณไม่ได้ วิธีการแสดง เทียบเท่าตัวละครตัวหนึ่ง ดังนั้นนั่นหมายความว่าน้อยกว่า แต่ หากคุณเริ่มต้นนับที่ศูนย์ แต่คุณนับทุกทาง ผ่านและเท่ากับ 10, คุณแน่นอนจะไป นับ 11 สิ่งที่รวม และเพื่อให้คุณกำลังจะพิมพ์ 11 ดาว ดังนั้นสิ่งที่อาจจะมีการแก้ไขนี้ได้หรือไม่ ใช่? ดังนั้นเพียงแค่ปรับน้อยกว่า หรือเท่ากับเพียง แต่จะน้อยกว่า และมีผมเรียกร้องอาจจะ การแก้ปัญหาอีกด้วย สิ่งที่อาจอื่นคุณจะทำอย่างไร ใช่? ดังนั้นการเริ่มต้นเท่ากับมันถึง 1 และ ออกน้อยกว่าหรือเท่ากับ และตรงไปตรงมาผมจะเรียกร้อง ว่าสำหรับมนุษย์ทั่วไป นี้น่าจะตรงไปตรงมามากขึ้น เริ่มนับวันที่ 1 และ นับถึง 10 เป็นหลักทำในสิ่งที่คุณหมายถึง แต่ความเป็นจริงที่อยู่ใน การเขียนโปรแกรมที่เราได้เห็น นักวิทยาศาสตร์คอมพิวเตอร์และการเขียนโปรแกรม โดยทั่วไปจะเริ่มนับที่ศูนย์ และอื่น ๆ ที่ปรับครั้งเดียว คุณได้ใช้มัน สภาพโดยทั่วไปของคุณจะ เป็นสิ่งที่ต้องการน้อยกว่า ดังนั้นเพียงแค่ตรรกะ ข้อผิดพลาดที่เราสามารถทำได้ตอนนี้ แก้ไขและในที่สุดคอมไพล์ นี้และได้รับเพียง 10 ดีวิธีการเกี่ยวกับปัญหานี้ที่นี่? ที่นี่อีกครั้งฉันเรียกร้องที่ฉันมี เป้าหมายของการพิมพ์ 10 stars-- ต่อหนึ่งบรรทัดเวลานี้ แต่ก็ไม่ได้ ก่อนที่เราจะนำเสนอสิ่งที่ การแก้ไขเป็นสิ่งที่ไม่นี้ พิมพ์สายตาถ้าผมจะรวบรวม และเรียกใช้โปรแกรมนี้คุณคิดว่า? ใช่? สตาร์ ดังนั้นดาวทั้งหมดใน บรรทัดเดียวกันคือสิ่งที่ฉันได้ยิน แล้วตัวอักษรบรรทัดใหม่ ดังนั้นลองที่ เพื่อให้รถ-1, ป้อน และฉันเห็นคำสั่งเสียงดังกราว ที่เราได้พูดคุยเกี่ยวกับเวลาที่ผ่านมา ./buggy-1, และแน่นอนผมเห็นทั้งหมด 10 ดาว ในบรรทัดเดียวกันแม้ว่าฉันจะเรียกร้อง ในสเปคของฉันเพียงแค่แสดงความคิดเห็นบน รหัสที่ผมตั้งใจจะทำอย่างใดอย่างหนึ่งต่อ สาย แต่นี้มีลักษณะที่เหมาะสม ตอนนี้สาย 15 ดูเหมือนว่าฉัน พิมพ์ดาวและจากนั้นสาย 16 ดูเหมือนว่าฉันพิมพ์ ตัวละครสายใหม่ และพวกเขากำลังทั้งสองเยื้องเพื่อ ฉันอยู่ในวงอย่างชัดเจน ดังนั้นไม่ควรที่ฉันจะทำดาวใหม่ สาย, ดาว, บรรทัดใหม่, ดาว, สายใหม่ได้หรือไม่ ใช่? ใช่ซึ่งแตกต่างจากภาษาเช่น งูใหญ่ถ้าคุณคุ้นเคย เยื้องไม่ได้ สำคัญกับคอมพิวเตอร์ มันเป็นเพียงเรื่องที่มนุษย์ ดังนั้นสายในขณะที่ที่นี่ผมได้คิดค้น 15 และ 16-- ที่มีลักษณะสวยงาม แต่คอมพิวเตอร์ไม่สนใจ คอมพิวเตอร์ใส่ใจเกี่ยวกับ จริง ๆ แล้วมีวงเล็บปีกกา รอบเส้นเหล่านี้ของรหัส ดังนั้นว่ามันเป็น clear-- เช่นเดียวกับใน Scratch-- ว่าคนสองบรรทัดของรหัส ควรจะดำเนินการ เช่นเดียวกับหนึ่งในบรรดาปริศนา Scratch สีเหลือง ชิ้นอีกครั้งและอีกครั้งและอีกครั้ง ดังนั้นตอนนี้ถ้าผม re-run นี้ program-- ./buggy-2-- Hm ฉันมีข้อผิดพลาดในขณะนี้ สิ่งที่ฉันไม่ลืมที่จะทำอย่างไร ใช่ดังนั้นผมจึงไม่ได้รวบรวมไว้ เพื่อให้รถ-2 ไม่มีไฟล์ดังกล่าวเพราะผมไม่ได้ จริงรวบรวมรุ่นที่สอง ดังนั้นตอนนี้ที่น่าสนใจ variable-- ไม่ได้ประกาศไม่ 2 ที่เรากำลังทำ 1 ทำให้รถ-1-- ./buggy-1-- และตอนนี้ แต่ละของพวกเขาอยู่ในบรรทัดเดียวกัน ขณะนี้มีข้อยกเว้น เรียกร้องนี้ควรของฉัน ที่คุณต้องวงเล็บปีกกาเหล่านี้ เมื่อมันเป็นจริง OK-- ถ้าคุณได้ สังเกตเห็นในส่วนหรือ textbooks-- จะละเว้นวงเล็บปีกกา? ใช่? ว่า เมื่อมีเพียงหนึ่ง บรรทัดของรหัสที่คุณ ต้องการที่จะเกี่ยวข้องกับ ห่วงเช่นในตัวอย่างแรกของเรา มันถูกต้องตามกฎหมายอย่างสมบูรณ์แบบ จะละเว้นวงเล็บปีกกา เช่นเดียวกับการจัดเรียงของความสะดวกสบาย จากคอมไพเลอร์กับคุณ ใช่? คำถามที่ดี มันจะได้รับการพิจารณาความผิดพลาดแบบ? เราจะ promote-- ใน CS50 คู่มือสไตล์ URL ที่ อยู่ใน pset1-- ที่มัก ใช้วงเล็บปีกกา แน่นอนถ้าคุณไม่คุ้นเคยกับการเขียนโปรแกรม ความจริงก็คือเราไม่ได้ จะไปห้ามไม่ให้คุณ จากการทำสิ่งอำนวยความสะดวกเหล่านี้ แต่ถ้าคุณแค่ ในการแกว่งของสิ่งที่ อย่างเพียงแค่เสมอใช้หยิก วงเล็บจนกว่าคุณจะได้รับการแขวนของมัน คำถามที่ดี ขวาทั้งหมด เพื่อที่ว่านั้นเป็นข้อผิดพลาด อย่างน้อยในบางสิ่งบางอย่างที่ค่อนข้างง่าย และยังคุณอาจจะคิดว่านี้ เป็นพื้นฐานอย่างเป็นธรรมใช่ไหม? นี้จะเรียงลำดับของสัปดาห์แรก ในการมองภาษา เช่นดูข้อบกพร่องของคุณอยู่ในนั้น แต่ความเป็นจริงเหล่านี้ ตัวแทนจริง ของปัญหาที่น่ากลัวบางสวย ที่สามารถเกิดขึ้นในโลกแห่งความจริง ดังนั้นบางท่านอาจจะจำ ถ้าคุณทำตามข่าวเทคโนโลยี หรืออาจจะติดแม้ ลมนี้ในเดือนกุมภาพันธ์ ของปีที่ผ่านมานี้ว่าแอปเปิ้ลมี ทำบิตของความผิดพลาดใน iOS ของคุณทั้งสอง ระบบปฏิบัติการบน โทรศัพท์ของพวกเขาและยัง Mac OS, ระบบปฏิบัติการ บนเดสก์ทอปและแล็ปท็อปของพวกเขา และคุณเห็นพาดหัวเช่นนี้ และหลังจากนั้นแอปเปิ้ล สัญญาว่าจะแก้ไขปัญหานี้ อย่างรวดเร็วและไม่สามารถแก้ไขได้ใน iOS, แต่แล้วคงที่ที่สุดก็ใน Mac OS ได้เป็นอย่างดี ตอนนี้ไม่มีพาดหัวเหล่านี้เพียงอย่างเดียวจริงๆ เผยให้เห็นสิ่งที่เป็นปัญหาพื้นฐาน แต่ข้อผิดพลาดลดลงในที่สุด ข้อผิดพลาดใน SSL, ซ็อกเก็ตการรักษาความปลอดภัยชั้น และเรื่องยาวสั้น นี้เป็นซอฟต์แวร์ เบราว์เซอร์ของเราและอื่น ๆ ซอฟแวร์ที่ใช้ในการทำในสิ่งที่? ถ้าบอกว่าเป็น SSL ที่เกี่ยวข้องเมื่อใดก็ตามที่คุณ เข้าเยี่ยมชม URL ที่เริ่มต้นด้วย HTTPS, สิ่งนั้นอาจ SSL จะเกี่ยวข้องกับ? การเข้ารหัสลับ ดังนั้นเราจะพูดคุยเกี่ยวกับ นี้ในวันที่มา การเข้ารหัสศิลปะของ ข้อมูล scrambling แต่เรื่องยาวสั้น, แอปเปิ้ล บางครั้งที่ผ่านมาได้ทำผิดพลาด ในการดำเนินงานของพวกเขา SSL, ซอฟแวร์ที่ในที่สุดนำไปปฏิบัติ URL ที่เช่น HTTPS หรือสูงสุด การเชื่อมต่อที่นั่นด้วย ผลจากการที่เป็นที่ของคุณ การเชื่อมต่อได้อาจ ถูกดัก และการเชื่อมต่อของคุณเป็น ไม่จำเป็นต้องเข้ารหัส ถ้าคุณมีบางคนเลวในระหว่าง คุณและเว็บไซต์ปลายทางที่ รู้วิธีที่จะใช้ประโยชน์จากนี้ ตอนนี้แอปเปิ้ลโพสต์ในท้ายที่สุด แก้ไขปัญหานี้ในที่สุด และคำอธิบาย ของการแก้ไขของพวกเขาเป็นแบบนี้ การขนส่งที่มีความปลอดภัยล้มเหลวในการตรวจสอบ ความถูกต้องของการเชื่อมต่อ ประเด็นสำคัญคือการแก้ไขโดย คืนหายไปขั้นตอนการตรวจสอบ ดังนั้นนี่คือคำอธิบายที่คลื่นมือมาก สำหรับเพียงแค่บอกว่าเราเมาขึ้น มีตัวอักษรอย่างใดอย่างหนึ่ง บรรทัดของรหัสที่ได้รับรถ ในการดำเนินการ SSL ของพวกเขาและ ถ้าคุณไปออนไลน์และค้นหานี้ คุณจริงสามารถหา ซอร์สโค้ดเดิม ตัวอย่างเช่นนี้เป็นภาพหน้าจอของ เพียงแค่ส่วนหนึ่งของไฟล์ขนาดใหญ่อย่างเป็นธรรม, แต่นี้เป็นฟังก์ชันที่เรียกว่าเห็นได้ชัด SSL ที่สำคัญตรวจสอบเซิร์ฟเวอร์แลกเปลี่ยนสัญญาณ และจะใช้เวลาพวงของ ข้อโต้แย้งและปัจจัยการผลิต และเราจะไม่ให้ความสำคัญ มากเกินไปใน minutia ที่นั่น แต่ถ้าคุณมุ่งเน้นไปที่รหัสภายใน ของฟังก์ชันให้สูงสุดที่ ซูมในที่ แล้วคุณอาจจะสงสัยว่า สิ่งที่ผิดพลาดอาจจะ ยิ่งถ้าคุณมีความคิด ในที่สุดสิ่งที่คุณกำลังมองหาที่ มีชนิดของความผิดปกติของ ที่นี่ซึ่งเป็นสิ่งที่? ใช่ฉันไม่ชอบจริงๆ รูปลักษณ์ของสองกลับไปล้มเหลว ตรงไปตรงมาผมไม่ทราบจริงๆสิ่งที่กลับไป ไม่หมายถึง แต่มีสองของพวกเขา back to back ที่เป็นเพียงการลูบผม ปัญญาเป็นวิธีที่ผิด และแน่นอนถ้าเราซูมใน เพียงแค่เส้นเหล่านี้เป็นซี ดังนั้นจำนวนมากของรหัสแอปเปิ้ล ที่ตัวเองเขียนใน C และเห็นได้ชัด เป็นจริง equivalent-- ไม่ว่าเยื้องสวย รุ่น แต่ถ้าคุณยอมรับความจริง ว่าไม่มีวงเล็บปีกกาสิ่งที่ แอปเปิ้ลจริงๆเขียนเป็นรหัสที่มีลักษณะ เช่นนี้ ดังนั้นผมจึงได้ซูมออกและฉันเพียงแค่ คงประทับอยู่ในความรู้สึก ว่าถ้าไม่มีวงเล็บปีกกาที่ ข้ามไปที่สองล้มเหลวที่อยู่ในสีเหลือง เป็นไปที่จะดำเนินการไม่ว่าสิ่งที่ มันไม่ได้เกี่ยวข้องกับ ถ้าเงื่อนไขดังกล่าวข้างต้นนั้น ดังนั้นแม้อีกครั้งถ้าคุณทำไม่มาก เข้าใจสิ่งนี้อาจเป็นไปได้ จะทำรู้ว่าแต่ละเหล่านี้ conditions-- แต่ละเส้นเหล่านี้ เป็นขั้นตอนที่สำคัญมาก ในขั้นตอนของการตรวจสอบ ถ้าข้อมูลของคุณในความเป็นจริงที่มีการเข้ารหัส ดังนั้นการกระโดดข้ามหนึ่งในจำนวนนี้ ขั้นตอนไม่คิดที่ดีที่สุด แต่เพราะเรามีนี้ ข้ามไปที่สองล้มเหลวในการสีเหลือง เพราะเมื่อเรา การเรียงลำดับของความสุนทรีย์ ย้ายไปทางซ้ายที่ เหตุผลก็คือในขณะนี้สิ่งที่ นี้หมายความว่าสำหรับสาย ของรหัสด้านล่างที่กลับไปครั้งที่สอง ล้มเหลวในการที่คุณจะคิดว่า? มันจะเสมอที่จะถูกข้ามไป ดังนั้น gotos จะขมวดคิ้วทั่วไปเมื่อ สำหรับเหตุผลที่เราจะไม่ได้จริงๆไปลง และแน่นอนใน CS50 เรามักไม่ได้ ที่จะสอนให้กลับไปคำสั่งนี้ แต่คุณสามารถคิดไปข้าง ไม่เป็นความหมายที่กระโดดไป บางส่วนอื่น ๆ ของรหัส ในคำอื่น ๆ กระโดดข้าม บรรทัดสุดท้ายนี้ทั้งหมด และอื่น ๆ ผลจากการนี​​้โง่ ผิดพลาดง่ายที่เป็นเพียง ผลมาจากใครบางคนอาจจะ คัดลอกและวางหนึ่งเกินไป หลายต่อหลายครั้งก็คือการที่ทั้ง การรักษาความปลอดภัยของ iOS และ Mac OS เป็นความเสี่ยงที่จะสกัดกั้น โดยคนเลวสำหรับค่อนข้างบางเวลา จนในที่สุดแอปเปิ้ลคงที่นี้ ตอนนี้ถ้าบางส่วนของคุณเป็นจริง ใช้รุ่นเก่าของ iOS หรือ Mac OS, คุณสามารถไปที่ gotofail.com ที่ เป็นเว็บไซต์ที่มีคนตั้งขึ้นมา เพื่อกำหนดเป็นหลัก โปรแกรม หากคอมพิวเตอร์ของคุณยังคงเปราะบาง และตรงไปตรงมาว่ามันคือ มันอาจจะเป็นความคิดที่ดี เพื่ออัพเดตโทรศัพท์ของคุณหรือ Mac ของคุณที่จุดนี้ แต่มีเพียงเพื่อพิสูจน์เพียงว่า การแข็งค่าของระดับที่ต่ำกว่านี้ รายละเอียดและเป็นธรรม ความคิดที่เรียบง่ายสามารถจริงๆ แปลเป็​​นตัดสินใจ และปัญหาที่ affected-- ใน case-- นี้ ผู้คนนับล้าน ตอนนี้คำพูดเกี่ยวกับการบริหาร ส่วนจะเริ่มต้นในวันอาทิตย์นี้มา คุณจะได้รับอีเมลจาก วันหยุดสุดสัปดาห์กับส่วนจุดที่ กระบวนการ resectioning จะเริ่มต้นถ้าคุณได้ ตระหนักถึงตอนนี้คุณมี บางความขัดแย้งใหม่ ดังนั้นนี้เกิดขึ้นทุกปีและเรา จะรองรับในวันที่จะมา สำนักงาน hours-- ทำให้ ตาในเวลานี้ที่นี่ การเปลี่ยนแปลงเล็กน้อยในสัปดาห์นี้ โดยเฉพาะอย่างยิ่งเวลาเริ่มต้น และสถานที่จึงไม่ปรึกษา ว่าก่อนที่จะมุ่งหน้าไปยังเวลาทำการ ใด ๆ ของอีกสี่คืน และตอนนี้คำว่าการประเมินที่ โดยเฉพาะอย่างยิ่งในขณะที่คุณดำน้ำในปัญหา ชุดที่หนึ่งและอื่น ดังนั้นต่อสเปค เหล่านี้มักจะ แกนตามที่ เราประเมินการทำงานของคุณ ขอบเขตหมายถึงสิ่งที่ ขอบเขตการดำเนินการรหัสของคุณ คุณสมบัติที่จำเป็น โดยข้อกำหนดของเรา ในคำอื่น ๆ เท่าใดของ ชุดชิ้นส่วนที่คุณไม่กัดออก คุณทำหนึ่งในสามของมัน ครึ่งหนึ่งของมัน 100% ของมัน แม้ว่ามันจะไม่ถูกต้อง เท่าไหร่ที่คุณไม่พยายามที่? ดังนั้นที่จับระดับ ของความพยายามและจำนวนเงินที่ ที่คุณบิตออก ปัญหาชุดของปัญหา Correctness-- หนึ่งนี้เพื่อ สิ่งที่ขอบเขตเป็นรหัสของคุณ สอดคล้องกับของเรา ข้อกำหนดและเป็นอิสระจากข้อบกพร่อง ดังนั้นจึงไม่ทำงานถูกต้องหรือไม่ ถ้าเราจะให้มันใส่บางอย่างไม่ได้ ให้เราเอาท์พุทที่เราคาดหวังหรือไม่ Design-- ตอนนี้เป็นครั้งแรกของ คนที่มีคุณภาพโดยเฉพาะอย่างยิ่ง หรือคนที่ต้องใช้การตัดสินใจของมนุษย์ และแน่นอนนี่คือเหตุผลที่เรามีพนักงาน ของเพื่อนการเรียนการสอนจำนวนมากและแน่นอน ผู้ช่วย สิ่งที่ขอบเขตเป็นของคุณ โค้ดที่เขียนด้วยหรือไม่ และอีกครั้งนี้เป็นอย่างมาก การประเมินคุณภาพ ที่จะทำงานร่วมกับคุณใน สองทิศทางในสัปดาห์ที่ผ่านมา เพื่อที่ว่าเมื่อคุณได้รับไม่ได้ เพียง แต่คะแนนที่เป็นตัวเลข แต่ยัง คะแนนเขียนหรือข้อเสนอแนะพิมพ์ หรือเขียนข้อเสนอแนะในคำภาษาอังกฤษ นั่นคือสิ่งที่เราจะใช้ในการไดรฟ์คุณ ไปจริงการเขียนโค้ดที่ดีกว่า และในการบรรยายและส่วนที่เราจะพยายาม ที่จะชี้ให้แทนดูได้บ่อยเท่าที่เรา can-- สิ่งที่ทำให้โปรแกรมไม่เพียง แต่ ที่ถูกต้องและดีงาม, แต่ยังออกแบบมาอย่างดี มีประสิทธิภาพมากที่สุดก็อาจจะเป็นหรือ แม้กระทั่งสิ่งที่สวยงามที่สุดที่จะสามารถ ซึ่งนำเราไปสู่​​รูปแบบ รูปแบบที่สุดคือ การตัดสินความงาม คุณไม่ได้เลือกที่ดี ชื่อตัวแปรของคุณ? คุณเยื้องรหัสของคุณถูกต้องหรือไม่ มันดูดีและดังนั้น มันเป็นเรื่องง่ายสำหรับมนุษย์อีกคน การอ่านของคุณตามลำดับ ความถูกต้องของ ตอนนี้โดยทั่วไปต่อหลักสูตรที่เราได้คะแนน สิ่งเหล่านี้ในระดับห้าจุด และแจ้งให้เราค้อนบ้านจุด ที่สามเป็นสิ่งที่ดีแน่นอน อย่างรวดเร็วทำคน เริ่มต้นทำเลขคณิต เมื่อพวกเขาได้รับออกมาสาม ห้าถูกต้องสำหรับ pset บาง และพวกเขาคิดแช่งผมไปถึง 60% ซึ่งเป็นหลัก D หรืออี นั่นไม่ใช่วิธีที่เรา คิดว่าตัวเลขเหล่านี้ สามเป็นสิ่งที่ดีจริงและสิ่งที่เรา โดยทั่วไปคาดหวังที่จุดเริ่มต้น ของคำว่าคือว่าถ้าคุณได้รับ พวงของ three's-- บางทีคู่ งานแสดงสินค้าสองสาม fours-- หรือ คู่เจ้าตัวคู่ของ fours-- ที่เป็นสถานที่ที่ดีที่จะเริ่มต้น และระยะยาวเพื่อที่เราจะเห็น วิถีขึ้นเมื่อเวลาผ่านไป คุณอยู่ในสถานที่ที่ดีโดยเฉพาะอย่างยิ่ง สูตรที่เราใช้ในการ สิ่งที่น้ำหนักเป็นหลัก นี้ต่อหลักสูตรที่ ซึ่งก็หมายความว่าเรา ให้น้ำหนักมากขึ้นเพื่อความถูกต้อง เพราะมันเป็นมากมักจะถูกต้อง ที่ใช้เวลามากที่สุด ความน่าเชื่อถือฉันตอนนี้ คุณจะ find-- อย่างน้อย ในหนึ่ง pset-- ที่คุณ ใช้เวลา 90% ของเวลาของคุณ ที่ทำงานเกี่ยวกับ 10% ของปัญหา และทุกอย่างเรียงลำดับของการทำงาน ยกเว้นสำหรับหนึ่งหรือสองข้อบกพร่อง และผู้ที่มีข้อบกพร่องที่ ให้คุณได้ในยามดึก ผู้นั้นเป็นคนที่ การเรียงลำดับของหนีคุณ แต่หลังจากที่หลับอยู่บนมัน หรือเข้าร่วมเวลาทำการ หรือถามคำถามออนไลน์เป็น เมื่อคุณได้รับว่าเป้าหมาย 100% และนั่นเป็นเหตุผลที่เราน้ำหนัก ความถูกต้องมากที่สุด ออกแบบน้อยและ รูปแบบน้อยกว่าที่ แต่เก็บไว้ในรูปแบบ mind-- อาจจะเป็นวิธีที่ง่ายที่สุด เหล่านี้จะกัดออก ตามคู่มือสไตล์ และตอนนี้รุนแรงมากขึ้น ทราบเกี่ยวกับความซื่อสัตย์ทางวิชาการ CS50 มีความแตกต่างที่โชคร้ายของ เป็นผู้ผลิตที่ใหญ่ที่สุดของคณะกรรมการโฆษณา กรณีเกือบทุกปีในอดีต นี้ไม่ได้เพราะนักเรียนโกงใน CS50 ใด ๆ มากไปกว่าชั้นอื่น ๆ แต่เป็นเพราะโดยธรรมชาติของการทำงาน ความจริงที่ว่ามันเป็นอิเล็กทรอนิกส์ ความจริงที่ว่าเรามองหามันและ ความจริงที่เราเป็นนักวิทยาศาสตร์คอมพิวเตอร์ ผมสามารถพูดได้ว่าเราเป็นที่น่าเสียดาย ดีมากที่การตรวจสอบมัน ดังนั้นสิ่งนี้หมายความว่าในแง่จริง? ดังนั้นมันต่อหลักสูตรที่ ปรัชญาของหลักสูตร จริงๆไม่ต้มลงไปมีเหตุผล มีเส้นแบ่งระหว่างนี้ การทำงานอย่างใดอย่างหนึ่งของคุณเอง และได้รับเล็กน้อยของ ความช่วยเหลือที่เหมาะสมจากเพื่อน และตรงไปตรงมาทำงานที่ของคุณ เพื่อนหรือส่งให้เขาหรือเธอรหัสของคุณ เพื่อให้เขาหรือเธอสามารถเพียงแค่ ใช้หรือยืมมันออกมาทางด้านขวา และที่ข้ามเส้น ที่เราวาดในชั้นเรียน ดูหลักสูตร ในท้ายที่สุดสำหรับสาย ที่เราวาดว่าเป็นที่เหมาะสม และพฤติกรรมที่ไม่มีเหตุผล แต่จริงๆมันไม่เดือด ลงไปที่สาระสำคัญ งานของคุณจำเป็นต้อง เป็นของคุณเองในท้ายที่สุด ตอนนี้กับที่กล่าวว่า มีการแก้ปัญหา เพราะในขณะที่คุณอาจ imagine-- จากเวลาทำงานและภาพ และวิดีโอที่เราได้ แสดง far-- จึง CS50 มีความหมายแน่นอนที่จะเป็นความร่วมมือ และในขณะที่สหกรณ์และสังคมเป็น เท่าที่จะทำได้ ขณะที่การทำงานร่วมกันเป็นอย่างเข้มงวด แต่กับเรื่องนี้กล่าวว่าการแก้ปัญหาที่ ในขณะที่คุณจะเห็นในหลักสูตรที่ ก็คือว่าเมื่อคุณกำลังมีปัญหาบางอย่าง คุณมีข้อผิดพลาดในรหัสของคุณบางอย่างที่คุณ ไม่สามารถแก้มันก็มีเหตุผลสำหรับคุณ เพื่อแสดงรหัสของคุณกับคนอื่น เพื่อนแม้จะอยู่ในระดับเพื่อน นั่งถัดจากคุณที่เวลาทำการ หรือสมาชิกของทีม แต่พวกเขาไม่อาจแสดงรหัสของพวกเขาอยู่กับคุณ ในคำอื่น ๆ ตอบคำถามที่คุณ ฉันจำเป็นต้อง help-- ไม่ได้โอ้นี่คือรหัสของฉัน ลองดูที่นี้และ ข้อสรุปจากมันสิ่งที่คุณจะ ตอนนี้แน่นอนมี วิธีที่ชัดเจนที่จะเล่นเกม ระบบโดยผมจะแสดงให้คุณนี้ รหัสของฉันก่อนที่จะมีคำถาม คุณแสดงให้ฉันรหัสของคุณของฉัน ก่อนที่จะมีคำถาม แต่เห็นหลักสูตรอีกครั้งสำหรับ รายละเอียดปลีกย่อยของการที่สายนี้เป็น เพียงแค่ตอนนี้วาดภาพและ ร่วมเป็นโปร่งใสที่สุดเท่าที่ทำได้ ที่เราอยู่ที่ในปีที่ผ่านมา นี้เป็นจำนวนคดีที่คณะกรรมการประกาศ CS50 ที่ได้มีกว่า ที่ผ่านมาเจ็ดปี กับ 14 กรณีนี้ฤดูใบไม้ร่วงที่ผ่านมามากที่สุด ในแง่ของนักเรียนที่เกี่ยวข้องกับ มันเป็น 20 บางคนที่แปลก ฤดูใบไม้ร่วงที่ผ่านมานี้ มีจุดสูงสุดของ 33 เป็น นักเรียนบางคนปีที่ผ่านมา หลายคนเป็นที่น่าเสียดาย ที่นี่ไม่ได้อยู่ในมหาวิทยาลัย นักเรียนมีส่วนร่วมเป็นร้อยละของ ชั้นมีอาณาบริเวณในอดีตจาก 0% 5.3% ซึ่งเป็นเพียงที่จะบอกว่า นี้เป็นปีที่ท้าทาย และต่อท้ายว่าสิ่งที่ เราต้องการที่จะทำคือการสื่อความหมายหนึ่ง ที่เรา dd-- เพียง FYI-- เปรียบเทียบที่ ความเป็นธรรมให้กับนักเรียนผู้ที่ มีดังต่อไปนี้สายตาม ที่เราทำในปัจจุบันเปรียบเทียบทั้งหมด ส่งผลต่อการปฏิบัติภารกิจที่ผ่านมาทั้งหมด จากหลายปีที่ผ่านมา เรารู้ด้วยวิธีการ Google รอบ และหาที่เก็บรหัส ออนไลน์ฟอรั่มการสนทนา ออนไลน์เว็บไซต์งานออนไลน์ ถ้านักเรียนสามารถค้นหาได้เราสามารถแน่นอน พบว่ามันมากเท่าที่เราเศร้าทำ ดังนั้นสิ่งที่คุณจะเห็นในหลักสูตร ว่าเป็นข้อเสียใจนี้ ฉันสามารถอย่างแน่นอน ขอขอบคุณและเราทุกคนมี พนักงานต้องทำแน่นอนเช่น นี้หรือคนนี้ตัวเองเมื่อเวลาผ่านไป แน่นอนว่าสิ่งที่มันต้องการเมื่อ ชีวิตได้รับในทางเมื่อคุณมี ดึกบาง deadline-- ไม่เพียง แต่ในชั้นนี้ แต่ another-- เมื่อคุณอยู่ หมดอย่างสมบูรณ์เครียดออก มีจำนวนมากเกินไป สิ่งอื่น ๆ ที่จะทำ คุณจะทำในบางจุดใน ชีวิตแน่นอนที่ไม่ดีอาจจะเป็นช่วงปลายเดือน การตัดสินใจคืน ดังนั้นต่อหลักสูตรที่ มีข้อนี้ เช่นว่าถ้าภายใน 72 ชั่วโมงของการทำ บางคนตัดสินใจไม่ดีคุณเป็นเจ้าของขึ้นไป และยื่นมือออกไปฉันและ หนึ่งในหัวของหลักสูตร และเราจะมีการสนทนา เราจะจัดการกับสิ่งที่ ภายในในความหวัง มันกลายเป็นของ ขณะที่การเรียนการสอนหรือบทเรียนชีวิต และไม่ได้สิ่งที่มี เครือข่ายรุนแรงโดยเฉพาะอย่างยิ่ง ในขณะที่คุณอาจจะเห็นบนชาร์ตเหล่านี้ที่นี่ เพื่อให้เป็นน้ำเสียงจริงจังมาก ขอให้เราหยุดเพียงไม่กี่ วินาทีที่จะทำลายความตึงเครียด [เล่นเพลง] เดวิดเจลัน: ทั้งหมดขวา ดังนั้นวิธีการที่เป็นที่สำหรับทำต่อหรือไม่ กับหัวข้อหลักของวันนี้ คนแรกที่เป็นนามธรรม อีกประการหนึ่งที่เป็นไปได้ การเป็นตัวแทนของข้อมูลที่ตรงไปตรงมา เป็นวิธีที่แห้งจริงๆของบอกว่าเราสามารถ ไปเกี่ยวกับการแก้ปัญหาและความคิด เกี่ยวกับการแก้ปัญหา? เพื่อให้คุณได้เห็นในรอยขีดข่วนและคุณได้ บางทีอาจจะเห็นแล้วใน PSET1 ด้วย C ที่คุณไม่สามารถใช้ ฟังก์ชั่นเช่น printf, ที่คนอื่น ๆ ใน ปีที่ผ่านมาเขียนให้คุณ นอกจากนี้คุณยังสามารถเขียนฟังก์ชั่นของคุณเอง และแม้ว่าคุณอาจไม่ได้ การกระทำเช่นนี้ใน C และตรงไปตรงมาใน PSET1 คุณไม่ได้จริงๆต้องเขียนของคุณ ฟังก์ชั่นของตัวเองเพราะ problem-- ในขณะที่อาจจะน่ากลัวที่ glance-- แรกคุณจะเห็น ในท้ายที่สุดสามารถแก้ไขได้ด้วย ไม่ได้ทั้งหมดว่าหลายบรรทัดของรหัส แต่ด้วยการที่กล่าวว่าในแง่ ของการเขียนฟังก์ชั่นของคุณเอง ตระหนักดีว่าซีจะให้ ความสามารถนี้ ฉันจะไปในรหัสแหล่งที่มาของวันนี้ ซึ่งมีอยู่แล้วออนไลน์ และฉันจะไปข้างหน้าและเปิด ขึ้นโปรแกรมที่เรียกว่า 0.C ฟังก์ชัน และในการทำงานของศูนย์ เราจะเห็นบางสิ่ง ในบรรทัดแรก 18 ผ่าน 23 เป็นหน้าที่หลักของฉัน และตอนนี้ที่เรากำลังเริ่มต้นที่จะอ่าน รหัสที่เราไม่ได้เขียนได้ทันที แต่ผมเคยเขียนล่วงหน้า หรือว่าคุณอยู่ในปัญหาตั้ง อาจได้รับมี ถูกเขียนล่วงหน้า วิธีที่ดีที่จะเริ่มต้น การอ่านรห​​ัสอื่นของใครบางคน คือการมองหาฟังก์ชั่นหลัก คิดออกว่ารายการที่ จุดคือการใช้โปรแกรม แล้วทำตามที่มันมีเหตุผลมาจากที่นั่น ดังนั้นโปรแกรมนี้เห็นได้ชัดพิมพ์ ชื่อของคุณตามด้วยลำไส้ใหญ่ แล้วเราใช้ GetString จากห้องสมุด CS50 ที่จะได้รับสายหรือคำหรือวลี จากผู้ใช้ที่แป้นพิมพ์ แล้วมีนี้ สิ่งตรงนี้ PrintName ตอนนี้ PrintName ไม่ ฟังก์ชั่นที่มาพร้อมกับซี มันไม่ได้อยู่ใน io.h. มาตรฐาน มันไม่ได้อยู่ใน CS50.h. มันค่อนข้างอยู่ในแฟ้มเดียวกัน ขอให้สังเกตว่าถ้าผมเลื่อนลง สาย bit-- 25 ถึง 27-- มันเป็นเพียงแค่วิธีงามของการแสดงความคิดเห็น รหัสของคุณโดยใช้ดวงดาวและทับ นี้เป็นหลายสาย แสดงความคิดเห็นและนี้เป็นเพียง คำอธิบายของฉันในสีฟ้าของ สิ่งที่ฟังก์ชั่นนี้จะ เพราะในสาย 28 ผ่าน 31 ฉันได้เขียนฟังก์ชั่นที่ง่ายสุด ชื่อที่มีความเป็น PrintName มันต้องใช้หลายวิธี ข้อโต้แย้งที่คุณจะพูด? ดังนั้นหนึ่ง argument-- เพราะมีหนึ่ง อาร์กิวเมนต์ที่ระบุไว้ในวงเล็บ ประเภทของที่เป็นสตริง ซึ่งก็คือการพูด PrintName ก็เหมือนกล่องสีดำนี้ หรือฟังก์ชั่นที่ใช้เวลา เป็น input สตริง และชื่อของ String ที่ สะดวกจะได้รับชื่อ ไม่ต, ไม่ได้ไม่มี แต่ชื่อ ดังนั้นสิ่งที่จะ PrintName ทำอย่างไร มันง่ายอย่างมีความสุข เช่นเดียวกับหนึ่งบรรทัดของรหัสสำหรับ printf แต่เห็นได้ชัดว่า พิมพ์ออก "สวัสดี" ดังนั้นจึง ที่ดังนั้นจึง มาจากการโต้แย้ง ตอนนี้ไม่ได้เป็นนวัตกรรมมากที่นี่ จริงๆผมได้นำโปรแกรมที่จะทำได้ ได้รับการเขียนกับหนึ่งบรรทัดของรหัส โดยการใส่นี้ขึ้นที่นี่ และเปลี่ยนไปบางสิ่งบางอย่าง ที่เกี่ยวข้องกับบางหกหรือเจ็ดหรือเพื่อ บรรทัดของรหัสทุกทางลงที่นี่ แต่มันเป็นเรื่องของการฝึกซ้อม หลักการที่รู้จักในฐานะที่เป็นนามธรรม ชนิดของห่อหุ้มเซลล์แสงอาทิตย์ภายในของใหม่ ฟังก์ชั่นที่มีชื่อและที่ดีกว่า แต่ชื่อที่แท้จริง กล่าวว่าสิ่งที่มันไม่ ผมหมายถึง printf-- ที่ไม่ บรรยายโดยเฉพาะอย่างยิ่ง ถ้าผมต้องการที่จะสร้าง ชิ้นส่วนปริศนาหรือถ้าฉัน ต้องการสร้างฟังก์ชั่น ที่พิมพ์ชื่อของใครบางคน ความงามของการทำเช่นนี้ คือว่าผมสามารถจริง ให้ฟังก์ชั่นที่ชื่อ ที่อธิบายถึงสิ่งที่มันไม่ ตอนนี้จะใช้เวลาในการป้อนข้อมูลที่ ผมเคยเรียกว่าพลชื่อ แต่ก็เป็นคำอธิบายที่เยี่ยมยอด แทนที่จะเป็นน้อยมาก ทั่วไปเช่นเอสและ เป็นโมฆะสำหรับตอนนี้ก็หมายความว่า ว่าการทำงานนี้ไม่ได้ มือฉันกลับอะไร มันไม่เหมือน GetString ที่ แท้จริงมือฉันกลับสตริง เหมือนที่เราทำกับชิ้นส่วนของกระดาษ กับเพื่อนร่วมชั้นของคุณเมื่อสัปดาห์ที่แล้ว แต่มันก็มีผลข้างเคียง มันพิมพ์อะไรบางอย่างไปยังหน้าจอ ดังนั้น ณ สิ้นวันถ้าฉัน จะทำให้การทำงานของ-0, ./function-0, เราจะเห็นว่ามันถามเพื่อนามของเรา ฉันพิมพ์เดวิดและประเภทออกจากชื่อของฉัน ถ้าฉันทำมันอีกครั้งกับร็อบ, มันจะบอกว่า "สวัสดีร็อบ". ดังนั้นความคิดที่เรียบง่าย แต่บางทีอาจจะ คาดการณ์จากนี้จิตใจ ว่าโปรแกรมของคุณได้รับ เล็ก ๆ น้อย ๆ ที่ซับซ้อนมากขึ้น และคุณต้องการที่จะเขียนก้อน รหัสและสายที่ code-- วิงวอน code-- โดยอธิบายว่า ชื่อเหมือน PrintName, C จะทำให้เราได้ความสามารถนี้ นี่เป็นอีกหนึ่งตัวอย่างง่ายๆคือ ตัวอย่างเช่นถ้าผมเปิดขึ้น ยื่นตั้งแต่วันนี้เรียกว่า return.c, สังเกตเห็นสิ่งที่ฉันได้ทำที่นี่ ส่วนใหญ่หน้าที่หลักนี้ printf ครั้งแรกที่ผมเริ่มต้นโดยพล เรียกว่าตัวแปร x จำนวน 2 จากนั้นผมก็พิมพ์ออกมา "x อยู่ในขณะนี้ % i "ผ่านในค่าของ x ดังนั้นฉันแค่พูดในสิ่งที่มันเป็น ตอนนี้ฉันเพียงอย่างกล้าหาญ อ้างกับ printf ฉันกำลัง cubing ค่า x ที่และฉัน การทำเช่นนั้นโดยการเรียกฟังก์ชั่น เรียกว่าผ่านก้อน นิ้ว x เป็นอาร์กิวเมนต์ที่ แล้วบันทึกเอาท์พุท ในตัวแปรตัวเอง x ดังนั้นฉัน clobbering ค่าของ x ฉันเอาชนะ ค่าของ x กับสิ่งที่ ผลของการเรียก ฟังก์ชั่นนี้เป็นก้อน แล้วฉันเพิ่งพิมพ์ออกมาบางส่วน สิ่งปุยที่นี่บอกว่าสิ่งที่ผมทำ ดังนั้นสิ่งที่เป็นก้อนแล้ว? สังเกตเห็นสิ่งที่เป็นพื้นฐาน ที่แตกต่างกันที่นี่ ฉันได้รับฟังก์ชั่น ชื่อเหมือนก่อน ผมได้ระบุชื่อสำหรับอาร์กิวเมนต์ เวลานี้ก็เรียกว่า n แทนชื่อ แต่ผมจะเรียกมันว่าอะไรที่ฉันต้องการ แต่นี้เป็นที่แตกต่างกัน สิ่งที่อยู่ทางซ้ายมือนี้ ก่อนหน้านี้มันเป็นสิ่งที่คำหลัก เด็กชาย ตอนนี้ก็เห็นได้ชัดว่า int ดังนั้นสิ่งที่อาจจะนำมาใช้? ขณะที่หมายเป็นโมฆะการเรียงลำดับของ ความว่างเปล่าและนั่นก็คือกรณีที่ PrintName กลับไม่มีอะไร มันทำอะไรบางอย่าง แต่ มันก็ไม่ได้มือฉันกลับ สิ่งที่ฉันสามารถวางบน ด้านซ้ายมือของเครื่องหมายเท่ากับ เหมือนที่ผมเคยทำที่นี่ในบรรทัด 22 ดังนั้นถ้าผมบอกว่าเป็นสายที่ 30 สิ่งที่อาจหมายถึง เกี่ยวกับสิ่งที่ก้อนไม่สำหรับฉันหรือไม่ ใช่? มันกลับจำนวนเต็ม ดังนั้นมันมือฉันกลับสำหรับ เช่นชิ้นส่วนของกระดาษ ที่มันได้เขียนคำตอบ 2 คีบหรือคีบ 3 หรือ 4 cubed-- สิ่งที่ฉันผ่านไปใน และวิธีการที่ฉันไม่ดำเนินการนี​​้? ดีเพียงครั้ง n n n ครั้ง เป็นวิธีการที่ผมอาจยกกำลังมูลค่า ดังนั้นอีกครั้งง่ายสุด ความคิด แต่ชี้ ตอนนี้วิธีการที่เราสามารถเขียนฟังก์ชั่น ที่จริงเรากลับมี ค่าที่อาจเป็นที่สนใจ ลองดูที่ตัวอย่างหนึ่งที่ผ่านมา ที่นี่เรียกว่าฟังก์ชั่นหนึ่ง ในตัวอย่างนี้ก็จะเริ่ม ที่จะได้รับน่าสนใจมากขึ้น ดังนั้นในการทำงานอย่างใดอย่างหนึ่งนี้ แจ้งให้ทราบล่วงหน้า program-- ที่สุด เรียกฟังก์ชันที่เรียกว่า GetPositiveInt GetPositiveInt ไม่ ฟังก์ชั่นในห้องสมุด CS50, แต่เราตัดสินใจว่าเรา ต้องการให้มีอยู่ ดังนั้นหากเราเลื่อนลงต่อไปในแฟ้ม แจ้งให้ทราบว่าผมไปเกี่ยวกับการใช้ ได้รับ int บวกและฉัน บอกว่ามันน่าสนใจมากขึ้น เพราะนี่คือที่ดี จำนวนบรรทัดของรหัส มันไม่ใช่แค่โง่ โปรแกรมของเล่นเล็ก ๆ น้อย ๆ มันเป็นจริงมีการตรวจสอบข้อผิดพลาดบาง และการทำสิ่งที่มีประโยชน์มากขึ้น ดังนั้นหากคุณไม่เคยเห็นคำแนะนำแบบ วิดีโอที่เราได้ฝังตัวอยู่ใน PSET1, รู้ว่านี้เป็นชนิดของ วงใน C ที่คล้ายกันในจิตวิญญาณ กับชนิดของสิ่งที่สามารถทำรอยขีดข่วน และทำกล่าวว่าทำเช่นนี้ พิมพ์ออกมา แล้วไปข้างหน้าและได้รับ n-- ได้รับ int และเก็บไว้ใน n, และให้ทำเช่นนี้อีกครั้งและอีกครั้งและ อีกครั้งตราบใดที่ n คือน้อยกว่าหนึ่ง ดังนั้น n เป็นไปได้น้อยกว่าหนึ่ง แต่ถ้ามนุษย์ไม่ให้ความร่วมมือ ถ้าเขาหรือเธอจะพิมพ์ ใน 0 หรือ -1 หรือ -50, วงนี้เป็นไปเพื่อให้ ดำเนินการอีกครั้งและอีกครั้ง และในที่สุดสังเกตเห็นฉัน เพียงแค่ส่งกลับค่า ดังนั้นตอนนี้เรามีการทำงาน ที่จะได้รับความสุข ถ้า CS50 จะใช้ใน CS50.h และ CS50.c สำหรับคุณ แต่ที่นี่เราสามารถทำได้ตอนนี้ ดำเนินการนี​​้เอง แต่ทั้งสองความคิดเห็นเกี่ยวกับรายละเอียดบางอย่างที่สำคัญ One-- ทำไมฉันประกาศ int n คุณคิดว่าในบรรทัด 29 แทนที่จะเป็นเพียงแค่การทำ ที่นี่ซึ่งเป็น สอดคล้องกับ สิ่งที่เราทำเมื่อสัปดาห์ที่แล้ว? ใช่? ความคิดที่ดี ดังนั้นถ้าเราจะใส่มัน ที่นี่ก็เหมือนเรา ให้ประกาศว่ามันอีกครั้งและอีกครั้ง ว่าในตัวของมันเองเป็น ไม่ได้มีปัญหาต่อ se เพราะเราจะต้อง ค่าครั้งเดียวแล้ว เรากำลังจะได้รับหนึ่งใหม่อยู่แล้ว แต่เป็นความคิดที่ดี ใช่? ปิด เพราะฉันได้ประกาศเมื่อวันที่ n สาย 29 ที่อยู่นอกวง ก็สามารถเข้าถึงได้ตลอด ฟังก์ชั่นทั้งหมดนี้ ไม่ได้ฟังก์ชั่นอื่น ๆ เพราะ n คือยังด้านในของโค้งเหล่านี้ วงเล็บที่นี่ So-- แน่ใจว่า ว่า ดังนั้นนี่คือมากยิ่งขึ้นไปยังจุดที่ ถ้าเราแทนการประกาศ n ที่นี่ในสาย 32, มันเป็นปัญหาเพราะเดา ที่อื่นฉันต้องการที่จะเข้าถึงมันได้หรือไม่ On line 34 และ กฎง่ายๆของหัวแม่มือคือ ว่าคุณสามารถใช้ตัวแปร ภายในวงเล็บปีกกาล่าสุด ที่คุณประกาศว่า แต่น่าเสียดายที่สาย 34 เป็นหนึ่งในสายสายเกินไป เพราะผมเคยปิดไปแล้ว วงเล็บปีกกาในบรรทัด 33 ที่สอดคล้องกับ วงเล็บปีกกาในบรรทัด 30 และดังนั้นนี่คือวิธีที่บอก ที่ int ตัวแปรนี้จะกำหนดขอบเขต, จึงจะพูดถึงเฉพาะภายใน ของวงเล็บปีกกาที่ มันก็ไม่ได้อยู่ที่ด้านนอกของพวกเขา ดังนั้นแน่นอนถ้าผมทำเช่นนี้ ที่ไม่ถูกต้องให้ฉันบันทึกรหัส เป็นค่าเท่าใดเขียนไม่ถูกต้อง ให้ฉันไปข้างหน้าและจะทำให้ ฟังก์ชั่น 1 และข้อผิดพลาด notice-- การใช้ตัวระบุ n ไม่ได้ประกาศ ในบรรทัดที่ 35 ซึ่งเป็นที่นี่ และถ้าเราเลื่อนขึ้น ต่อไปอีกคนหนึ่ง ใช้ไม่ได้ประกาศ n ตัวระบุในบรรทัด 34 ดังนั้นคอมไพเลอร์, เสียงดังกราว, จะสังเกตเห็นว่ามันเป็นเพียงแค่ ไม่ได้อยู่แม้ว่า เห็นได้ชัดว่ามันมีสายตา ดังนั้นการแก้ไขที่ง่ายคือการประกาศว่ามี ตอนนี้ให้ฉันเลื่อนไป ด้านบนของไฟล์ สิ่งที่กระโดดออกที่คุณเป็น ความแตกต่างกันเพียงเล็กน้อย จากสิ่งที่เรามองที่เมื่อสัปดาห์ที่แล้ว? ไม่เพียง แต่ฉันจะมีชื่อไม่เพียง แต่ ฉันมีบางคมชัดรวมถึงการขึ้นด้านบน ฉันมีสิ่งที่ฉัน โทรต้นแบบ ตอนนี้ที่มีลักษณะชะมัดคล้ายกับสิ่งที่ เราเพิ่งเห็นช่วงเวลาที่ผ่านมาในบรรทัด 27 จึงขอสรุปจากที่แตกต่างกัน เกิดข้อผิดพลาดว่าทำไมฉันได้กระทำนี้ ให้ฉันไปข้างหน้าและ ลบบรรทัดเหล่านี้มี และเพื่อให้เรารู้อะไรเกี่ยวกับต้นแบบ remake ไฟล์นี้ ทำให้ฟังก์ชั่นหนึ่ง และตอนนี้ด่าสี่ข้อผิดพลาด ให้เลื่อนขึ้นไปเป็นคนแรก ประกาศโดยนัยของการทำงาน ได้รับ int ในเชิงบวกคือไม่ถูกต้องใน C99 C99 ก็หมายความ 1999 รุ่นของภาษา C ซึ่งเป็นสิ่งที่เรากำลังใช้แน่นอน ดังนั้นสิ่งนี้หมายความว่าอย่างไร ดี C-- และอื่น ๆ โดยเฉพาะ C compilers-- เป็นโปรแกรมใบ้สวย พวกเขารู้ว่าสิ่งที่คุณได้ บอกพวกเขาและที่ ใจจริงจากสัปดาห์ก่อน ปัญหาคือว่าถ้าฉันไป เกี่ยวกับการใช้ชื่อขึ้นที่นี่ และที่ผมเรียกฟังก์ชันที่เรียกว่า GetPositiveInt ที่นี่ในบรรทัด 20 ฟังก์ชันที่ในทางเทคนิคไม่ได้ คอมไพเลอร์ที่มีอยู่จนเห็นเส้น 27 แต่น่าเสียดายที่คอมไพเลอร์เป็น ทำสิ่งที่ด้านบนลงซ้ายขวา เพราะมันยังไม่เห็น การดำเนินการของ GetPositiveInt, แต่ก็เห็นคุณพยายาม ที่จะใช้ขึ้นที่นี่ ก็แค่ไป bail-- ตะโกนใส่ คุณมีข้อผิดพลาด message-- บางที ที่เป็นความลับและไม่จริง คอมไพล์แฟ้ม ดังนั้นจึงเรียกว่าต้นแบบขึ้น ที่นี่เป็นที่ยอมรับซ้ำซ้อน ตัวอักษรที่ผมไปลงที่นี่และผมคัดลอก และวางนี้และฉันใส่มันขึ้นที่นี่ เป็นโมฆะจะเป็นที่เหมาะสมมากขึ้นเพื่อเราจะ ตัวอักษรคัดลอกและวางในเวลานี้ ตัวอักษรที่ผมคัดลอกและวางมัน จริงๆเป็นเช่นเดียวกับเศษขนมปัง เบาะแสเพียงเล็กน้อยที่จะคอมไพเลอร์ ผมไม่ทราบว่าสิ่งนี้จะ แต่ผมสัญญากับคุณ ว่ามันจะมีอยู่ในที่สุด และที่ว่าทำไมนี้ line-- ใน สาย 16-- จบลงด้วยอัฒภาค มันเป็นที่ซ้ำซ้อนจากการออกแบบ ใช่? หากคุณไม่ได้เชื่อมโยงห้องสมุดของคุณ ยกกำลังโอ้คำถามที่ดี คมชัดรวมถึงการรวมไฟล์ส่วนหัว ต้อง be-- ควรเกือบ มักจะเป็นที่ส่วนบนสุด ของไฟล์สำหรับ similar-- สำหรับ ว่าด้วยเหตุผลเดียวกันใช่ เพราะในมาตรฐาน io.h เป็นอักษรเส้น เช่นนี้ แต่ด้วย printf คำและ มีการขัดแย้งและประเภทผลตอบแทนของมัน และอื่น ๆ โดยการทำเช่นคมมีขึ้น ที่นี่สิ่งที่คุณกำลังทำอย่างแท้จริง มีการคัดลอกและวางเนื้อหา ของคนอื่นเขียนขึ้นด้านบน จึง cluing รหัสของคุณใน ความจริงที่ว่าฟังก์ชั่นที่ทำอยู่ ใช่? อย่างแน่นอน ดังนั้นอย่างฉลาดและถูกต้อง การแก้ปัญหาจะเป็นคุณรู้อะไรไหม ผมไม่ทราบว่าสิ่งที่ ต้นแบบเป็น แต่ฉันรู้ว่า ถ้าผมเข้าใจว่าซีเป็นเพียงแค่ ใบ้และ rethinks บนลงล่าง ดีขอให้สิ่งที่มันต้องการ ลองตัดรหัสที่วางมันขึ้นมา ด้านบนและตอนนี้ผลักดันหลักลงมาด้านล่าง นี้ก็จะแก้ปัญหา แต่คุณได้อย่างง่ายดายมากอาจจะเกิดขึ้นกับ สถานการณ์ที่ต้องเรียก B, และอาจ B เรียกกลับไป A. นี้ เป็นสิ่งที่เรียกว่าการเรียกซ้ำ และเราจะกลับมาที่ และมันอาจจะหรืออาจจะไม่ดี สิ่งที่ แต่คุณสามารถแน่นอน ทำลายการแก้ปัญหานี้ และยิ่งกว่านั้นผมจะ อ้าง stylistically, โดยเฉพาะอย่างยิ่งเมื่อโปรแกรมของคุณ กลายเป็นนี้ยาวและระยะยาวนี้ มันเป็นเพียงสิ่งอำนวยความสะดวกสุด ที่จะนำหลักที่ด้านบน เพราะมันเป็นสิ่งที่มากที่สุด โปรแกรมเมอร์จะไปเกี่ยวกับการดูแล และดังนั้นจึงเป็นเรื่องที่ทำความสะอาดน้อย เนื้อหาที่จะทำแบบ ฉันเดิมไม่ได้ กับต้นแบบได้ แม้ว่ามันจะดูเล็กน้อย ซ้ำซ้อนได้อย่างรวดเร็วก่อน ใช่? ขออภัยคุณสามารถพูดได้ดัง? หากคุณสลับตำแหน่งของ การดำเนินงานและต้นแบบ? เพื่อให้เป็นคำถามที่ดี ถ้าคุณอีกครั้งลงประกาศนี้ ที่นี่เรามาดูสิ่งที่เกิดขึ้น ดังนั้นถ้าผมใส่ลงไปนี้ ที่นี่คุณกำลังจะบอกว่า โอ้ขอโทษ ดัง? ยิ่งดัง โอ้คำถามที่ดี มันจะทำให้การทำงานหรือไม่ คุณจะรู้ว่าหลังจากที่ทุกปีเหล่านี้ฉัน ไม่เคยนำต้นแบบนั้นไม่นาน จึงขอให้ทำหน้าที่-1 หลังจากทำที่ [บ่น] เดวิดเจลัน: โอ้รอ เรายังคงต้องใส่ทุกอย่างขึ้นด้านบน จึงขอทำเช่นนี้ขึ้นที่นี่ถ้าฉัน การทำความเข้าใจคำถามของคุณได้อย่างถูกต้อง ฉันวางทุกอย่างรวมถึง ต้นแบบดังกล่าวข้างต้นหลัก แต่ฉันวางต้นแบบ ดังต่อไปนี้การดำเนินการ ดังนั้นถ้าผมทำให้ใครคนหนึ่ง, ฉันได้รับ กลับ error-- ที่ไม่ได้ใช้ตัวแปร n โอ้มี ขอบคุณ ลองมาดูกันเรากำจัดนี้ นั่นเป็นข้อผิดพลาดที่แตกต่าง จึงขอไม่สนใจว่า ขออย่างรวดเร็วจริงๆ remake นี้ ตกลงจึงไม่โต้แย้งข้อมูล โดยใช้รูปแบบสตริง n-- โอ้ว่าเป็นเพราะ ฉันเปลี่ยนไปเหล่านี้ที่นี่ สิทธิทั้งหมดที่เรารู้ว่าคำตอบ จะยา่สิทธิทั้งหมดที่นี่เราไป Ah ขอบคุณสำหรับบวก สิทธิทั้งหมดฉันจะแก้ไขรหัสนี้ after-- ไม่สนใจปัญหานี้โดยเฉพาะอย่างยิ่ง ตั้งแต่นี้ was-- การทำงานคือคำตอบ ดังนั้นจึงไม่ได้เขียนทับ สิ่งที่คุณได้ทำเพียงแค่ ฉันสงสัยว่าคอมไพเลอร์ ถูกเขียนในลักษณะ ว่ามันไม่สนใจต้นแบบของคุณ เพราะร่างกายเพื่อที่จะพูด ฟังก์ชั่นที่มีอยู่แล้ว การดำเนินการที่สูงขึ้น ฉันจะต้องไปปรึกษาจริง คู่มือของคอมไพเลอร์ ที่จะเข้าใจว่ามีที่อื่น ๆ ความหมาย แต่อย่างรวดเร็วก่อน เพียงแค่พยายามและการทดลอง ดูเหมือนว่าจะไม่มีผลกระทบ คำถามที่ดี ดังนั้นขอให้เคลื่อนไปข้างหน้าตอนนี้ย้าย ห่างจากผลข้างเคียงที่ มีฟังก์ชั่นที่ทำสิ่งที่ชอบ สายตาบนหน้าจอด้วย printf, แต่ไม่คืนค่า และฟังก์ชั่นที่มีผลตอบแทน ค่าเหมือนเราเพิ่งเห็นไม่กี่ของ เราได้เห็นความคิดของขอบเขตนี้ และเราจะเห็นนี้อีกครั้งและอีกครั้ง แต่ตอนนี้อีกครั้ง ใช้กฎของหัวแม่มือ ตัวแปรที่สามารถใช้งานได้ ภายในเปิดมากที่สุดเมื่อเร็ว ๆ นี้ และวงเล็บปีกกาปิดในขณะที่เรา เห็นในตัวอย่างนั้น และในขณะที่คุณชี้ให้เห็น มี ability-- คุณสามารถแก้ปัญหาบางส่วนของปัญหาเหล​​่านี้ โดยการใส่ตัวแปรทั่วโลก ที่ส่วนบนสุดของไฟล์ แต่ในเกือบทุกกรณี เราจะขมวดคิ้วนั้น และแน่นอนไม่ได้ไป เป็นวิธีแก้ปัญหาสำหรับตอนนี้ที่ ดังนั้นสำหรับตอนนี้ Takeaway คือ ตัวแปรที่มีความเชื่อในเรื่องของขอบเขตนี้ แต่ตอนนี้ให้ดูที่อื่น วิธีแห้งของจริงที่กำลังมองหา ที่บางส่วนที่น่าสนใจสวย รายละเอียดการปฏิบัติ วิธีการที่เราอาจจะแสดงข้อมูล และเราดูแล้วที่นี้ ในสัปดาห์แรกของการเรียน กำลังมองหาที่ไบนารีและ เตือนตัวเองของทศนิยม แต่จำจากสัปดาห์ก่อนที่ซีมี ชนิดข้อมูลที่แตกต่างกันและที่อัดแน่นมากขึ้น แต่คนที่มีประโยชน์มากที่สุด สำหรับตอนนี้อาจจะมีเหล่านี้ ถ่านหรือตัวละครที่เกิดขึ้น จะเป็นหนึ่งไบต์หรือแปดบิตรวม และนั่นคือสิ่งที่จะบอกว่าขนาด ของถ่านเป็นเพียงหนึ่งไบต์ ไบต์แปดบิตดังนั้นนี้หมายความว่า เราสามารถเป็นตัวแทนของตัวละครหลายวิธี วิธีจดหมายจำนวนมากหรือ สัญลักษณ์บนแป้นพิมพ์ ถ้าเรามีหนึ่งไบต์หรือแปดบิต คิดว่ากลับไปเมื่อสัปดาห์ที่ศูนย์ หากคุณมีแปดบิต กี่ค่าทั้งหมด คุณสามารถแสดงกับ รูปแบบของศูนย์และคน? One-- มากกว่านั้น ดังนั้น 256 ทั้งหมดถ้าคุณ เริ่มนับจากศูนย์ ดังนั้นถ้าคุณมีแปด bits-- ดังนั้นหากเรา มีหลอดไฟไบนารีของเราขึ้นที่นี่อีกครั้ง เราสามารถเปิดหลอดไฟที่อยู่บน และปิดในใด ๆ ของรูปแบบที่ไม่ซ้ำกัน 256 ตอนนี้เป็นบิตที่มีปัญหา ไม่มากสำหรับภาษาอังกฤษและ ภาษาโรแมนติก แต่แน่นอน เมื่อคุณแนะนำสำหรับ เช่นภาษาเอเชียที่ มีสัญลักษณ์มากกว่าเช่น 26 ตัวอักษรของตัวอักษร เราจริงอาจต้อง มากกว่าหนึ่งไบต์ และโชคดีที่ใน ปีที่ผ่านมามีสังคม มาตรฐานอื่น ๆ ที่นำมาใช้ที่ใช้ มากกว่าหนึ่งไบต์ต่อค่าใช้จ่าย แต่ตอนนี้ใน C เริ่มต้น เป็นเพียงหนึ่งไบต์หรือแปดบิต จำนวนเต็มขณะที่สี่ ไบต์หรือที่เรียกว่า 32 บิต ซึ่งหมายความว่าสิ่งที่ใหญ่ที่สุดที่เป็นไปได้ ตัวเลขที่เราสามารถเป็นตัวแทนที่มี int เห็นได้ชัด? กับพันล้าน ดังนั้นจึงเป็นสี่พันล้านให้หรือใช้เวลา 2 ถึงอำนาจ 32 ถ้าเรา ถือว่าไม่มีตัวเลขที่ติดลบ และเพียงแค่ใช้บวกทั้งหมด ตัวเลขก็สี่พันล้าน ให้หรือใช้เวลาเพื่อ ลอยขณะที่เป็นชนิดที่แตกต่างกัน ชนิดข้อมูลในซีก็ยังคงตัวเลข แต่ก็เป็นจำนวนจริง สิ่งที่มีจุดทศนิยม และปรากฎว่า ซียังใช้สี่ไบต์ เพื่อเป็นตัวแทนของลอยค่าจุด แต่น่าเสียดายที่ว่าหลายลอย ค่าจุดที่มีในโลก? วิธีการหลายตัวเลขที่แท้จริงจะมี? มีไม่มีที่สิ้นสุด จำนวนและสำหรับเรื่องที่ มีจำนวนอนันต์ของจำนวนเต็ม ดังนั้นเราจึงอยู่แล้วชนิดของ ขุดหลุมตัวเองที่นี่ โดยเห็นได้ชัดใน computers-- ที่ โปรแกรมน้อยเขียน C ใน them-- สามารถนับสูงที่สุดเท่าที่ สี่พันล้านให้หรือใช้เวลา และลอยค่าจุด เท่านั้นที่สามารถเห็นได้ชัด มีบางจำนวน จำกัด ของความแม่นยำ เพียงตัวเลขจำนวนมากดังนั้นหลังจากที่ จุดทศนิยมของพวกเขา เพราะแน่นอนถ้า คุณมีเพียง 32 บิต ผมไม่ทราบว่าวิธีการที่เรากำลังจะไปเกี่ยวกับ ที่เป็นตัวแทนของ numbers-- จริงอาจจะ กับประเภทที่แตกต่างกันของรูปแบบ แต่มีแน่นอนแน่นอน จำนวนของรูปแบบดังกล่าว เพื่อให้ที่นี่เช่นนี้เป็นปัญหา ตอนนี้เราสามารถหลีกเลี่ยงปัญหาเล็กน้อย ถ้าคุณไม่ได้ใช้ลอย, คุณสามารถใช้คู่ ใน C ซึ่งจะช่วยให้คุณแปดไบต์ซึ่ง เป็นรูปแบบที่เป็นไปได้ทางขึ้นของศูนย์ และคนที่ แต่ก็ยังคง จำกัด ซึ่งเป็นไป จะเป็นปัญหาถ้าคุณเขียนซอฟแวร์ สำหรับกราฟิกหรือแฟนซี สูตรทางคณิตศาสตร์ จริงเพื่อให้คุณอาจต้องการ ที่จะนับได้ว่ามีขนาดใหญ่กว่า ยาว long-- โง่ named-- ยังเป็นแปดไบต์หรือ 64 บิต และนี่คือสองเท่า int, และจะเป็นค่าจำนวนเต็มยาว fact-- สนุกถ้า int สี่ไบต์ นานแค่ไหนที่เป็นเวลานานใน C มัก? ยังสี่ไบต์ แต่ นานแปดไบต์ และนี่คือเหตุผลทางประวัติศาสตร์ แต่ Takeaway ขณะนี้ เป็นเพียงข้อมูลที่มี ที่จะเป็นตัวแทนใน computer-- ที่ อุปกรณ์ทางกายภาพที่มีกระแสไฟฟ้า ก็มักจะขับรถ ศูนย์เหล่านั้นและ ones-- ที่มีจำนวน จำกัด ของความแม่นยำ ดังนั้นสิ่งที่เป็นปัญหาแล้ว? ดีมีปัญหา ของล้นจำนวนเต็ม ไม่เพียง แต่ใน C แต่ใน คอมพิวเตอร์โดยทั่วไป ยกตัวอย่างเช่นว่านี้ เป็นไบต์มูลค่า bit-- ดังนั้นถ้าเป็นแปด bit-- ทั้งหมด ซึ่งเป็นหมายเลขหนึ่ง จำนวนนี่คืออะไร แทนถ้าเราสมมติ มันเป็นค่าบวกทั้งหมดในไบนารี? 255, และมันก็ไม่ 256 เพราะ ศูนย์เป็นจำนวนมากที่สุด ดังนั้น 255 เป็นสูงสุด หนึ่ง แต่ปัญหา สมมุติว่าผมต้องการที่จะ เพิ่มตัวแปรนี้ว่า คือการใช้แปดบิตรวม ถ้าผมต้องการที่จะเพิ่มขึ้นนั้น ดีเร็วที่สุดเท่าที่ฉันจะเพิ่ม หนึ่งทั้งหมดของคนเหล่านี้ คุณอาจจะสามารถจินตนาการ visually-- เพียง เช่นการดำเนินการอย่างใดอย่างหนึ่งโดยใช้ decimals-- บางสิ่งบางอย่างที่เกิดขึ้นจะไหลไปทางซ้าย และแน่นอนถ้าฉันเพิ่มหมายเลข หนึ่งในการนี​​้สิ่งที่เกิดขึ้นในไบนารี คือมันล้นกลับไปที่ศูนย์ ดังนั้นหากคุณเพียง use-- ไม่ int, แต่ byte เดียวที่จะนับเลข ในโปรแกรมโดย default-- เร็วที่สุดเท่าที่ คุณได้รับ 250, 251, 252, 253, 254, 255-- 0 มาหลังจาก 255, ซึ่งอาจไม่ใช่สิ่งที่ ผู้ใช้จะคาดหวังว่า ตอนนี้ในขณะเดียวกันในโลกลอยจุด คุณยังมีปัญหาที่คล้ายกัน ไม่มากที่มี number-- ที่ใหญ่ที่สุด ถึงแม้ว่ามันจะยังคงเป็นปัญหา แต่ด้วยจำนวนของความแม่นยำ ที่คุณสามารถเป็นตัวแทนของ ดังนั้นลองมาดูที่ตัวอย่างนี้ ที่นี่ก็มาจากวันนี้ code-- แหล่งที่มา ลอย 0.c และสังเกตเห็นมันสุด โปรแกรมใช้งานง่ายที่ เห็นได้ชัดว่าควรจะพิมพ์ออกมาสิ่งที่มีค่า? สิ่งที่คุณเดิมพันนี้จะพิมพ์ แม้ว่าจะมีบิตของไวยากรณ์ใหม่ ที่นี่? เพื่อหวังว่า 0.1 เพื่อให้เทียบเท่ากับหนึ่งในสิบ เพราะฉันทำ 1 หารด้วย 10 ฉันเก็บคำตอบ ในตัวแปรที่เรียกว่าฉ ตัวแปรที่เป็นประเภทลอยซึ่ง เป็นคำที่ฉันเพิ่งเสนออยู่ เราไม่เคยเห็นแบบนี้มาก่อน แต่ นี้เป็นชนิดของวิธีที่ประณีตใน printf เพื่อระบุตัวเลขจำนวนที่คุณ ต้องการที่จะเห็นหลังจุดทศนิยม ดังนั้นสัญกรณ์นี้ก็หมายความว่า ที่นี่เป็นตัวยึด มันสำหรับจุดลอย คุณค่าและโอ้โดยวิธีการที่ แสดงมันมีจุดทศนิยมด้วย จำนวนหนึ่งหลังจุดทศนิยม เพื่อให้เป็นจำนวน ของตัวเลขที่มีนัยสำคัญ จึงจะพูดที่คุณอาจต้องการ เพื่อให้ฉันไปข้างหน้าและทำ ทำให้ลอย-0, ./float-0, และเห็นได้ชัด 1 หารด้วย 10 เป็น 0.0 ตอนนี้ทำไมนี้คืออะไร ดีอีกครั้งคอมพิวเตอร์คือการ ฉันอย่างแท้จริงและผมได้เขียน 1 และฉันเขียน 10 และใช้การคาดเดาสิ่งที่ เป็นชนิดข้อมูลที่สันนิษฐานสำหรับทั้งสอง ค่า? int มันเป็นในทางเทคนิค บางสิ่งบางอย่างที่แตกต่างกันเพียงเล็กน้อย มันมักจะนาน แต่มันก็เป็น ในที่สุดค่าหนึ่ง ไม่ใช่ค่าจุดลอย ซึ่งก็คือการบอกว่าถ้านี้ เป็น int และนี่คือ int, ปัญหาคือว่าคอมพิวเตอร์ ไม่ได้มีความสามารถใน ที่จะได้เก็บจุดทศนิยมว่า ดังนั้นเมื่อคุณทำ 1 หาร 10 โดยใช้จำนวนเต็ม ทั้งเศษและ ส่วนคำตอบที่ควรจะเป็น 0.1 แต่ computer-- เพราะ เหล่านี้จะ integers-- ไม่ทราบว่าจะทำอย่างไรกับ 0.1 ดังนั้นสิ่งที่มันชัดเจนทำอะไร มันเป็นเพียงแค่การขว้างปามันออกไป และสิ่งที่ฉันเห็นในที่สุด เป็น 0.0 เท่านั้นเพราะผมยืนยันว่า printf แสดงให้ฉันจุดทศนิยมหนึ่ง แต่ปัญหาก็คือว่าถ้าคุณ แบ่งจำนวนเต็มโดยจำนวนเต็ม คุณจะ get-- ตามคำนิยาม ของ C-- จำนวนเต็ม และก็จะไม่ทำ สิ่งที่ดีและสะดวกสบาย เหมือนรอบมันขึ้นไป ที่ใกล้เคียงที่สุดอย่างใดอย่างหนึ่งขึ้นหรือลง มันจะตัดทอน ทุกอย่างหลังจากทศนิยม ดังนั้นเพียงแค่สัญชาตญาณ สิ่งที่อาจจะแก้ไขได้หรือไม่ สิ่งที่แก้ไขที่ง่ายที่สุดที่นี่? ใช่? ว่า ทำไมเราไม่เพียงแค่รักษาเหล่านี้เป็น ลอยค่าจุดได้อย่างมีประสิทธิภาพ ทำให้พวกเขากลายลอยหรือคู่ผสม และตอนนี้ถ้าผมจะทำให้ลอย-0, หรือถ้าผมรวบรวมลอย-1, ซึ่งเป็นเหมือนกับ สิ่งที่ถูกนำเสนอเพียงแค่ และตอนนี้ฉันไม่ลอย-0, ตอนนี้ฉันได้รับ 0.1 ของฉัน ขณะนี้เป็นที่น่าตื่นตาตื่นใจ แต่ตอนนี้ผมกำลังจะไปทำ บางสิ่งบางอย่างที่แตกต่างกันเพียงเล็กน้อย ฉันอยากจะเห็นสิ่งที่เป็นจริง ที่เกิดขึ้นภายใต้กระโปรงหน้ารถ และฉันจะพิมพ์นี้ ออกไป 28 ตำแหน่งทศนิยม ผมอยากจะเห็นจริงๆ 0.1000-- infinite-- [ไม่ได้ยิน] 27 ศูนย์หลังจากนั้น 0.1 ดีขอดูว่าเป็น สิ่งที่ฉันได้รับแน่นอน ทำให้ลอย-0 ไฟล์เดียวกัน ./floats-0 ลองซูมในคำตอบที่น่าทึ่ง ทั้งหมดเวลานี้คุณได้รับความคิด 1 หารด้วย 10 คือ 10% หรือ 0.1 มันไม่ใช่ อย่างน้อยเท่าที่ ของเครื่องคอมพิวเตอร์ที่เกี่ยวข้อง ตอนนี้ why-- ตกลงที่สมบูรณ์ โกหก 1 หารด้วย 10 เป็น 0.1 แต่ why-- ที่ไม่ได้ Takeaway วันนี้ ดังนั้นทำไมไม่ใช้คอมพิวเตอร์คิดว่า ซึ่งแตกต่างจากพวกเราทุกคนในห้อง ที่ 1 หารด้วย 10 จริงว่าค่าบ้า? สิ่งที่คอมพิวเตอร์ทำเห็นได้ชัดหรือไม่ มีอะไรที่? มันไม่ได้ล้นต่อ se มากเกินปกติจะเป็นเมื่อ คุณห่อรอบค่า มันเป็นเรื่องของความไม่แน่ชัดนี้ มูลค่าจุดลอย ที่คุณมี 32 เพียง หรืออาจจะได้ 64 บิต แต่ถ้ามีที่สิ้นสุด จำนวน numbers-- จริง ตัวเลขที่มีจุดทศนิยม และหมายเลข thereafter-- แน่นอน คุณไม่สามารถเป็นตัวแทนทั้งหมดของพวกเขา เพื่อให้คอมพิวเตอร์ได้ให้ เราจับคู่ที่ใกล้เคียงที่สุด ค่าที่จะสามารถเป็นตัวแทนของการใช้ที่ บิตหลายค่าที่จริงผมต้องการ ซึ่งเป็น 0.1 แต่ถ้าคุณ เริ่มต้นทำคณิตศาสตร์หรือคุณ เริ่มต้นที่เกี่ยวข้องกับประเภทนี้ลอย ค่าจุดใน programs-- สำคัญ ซอฟแวร์ทางการเงิน อะไร software-- ทหาร ที่รับรู้เป็น อาจจะเป็นสิ่งที่สำคัญสวย และคุณเริ่มต้นการเพิ่ม ตัวเลขเช่นนี้และเริ่มต้น การใช้ซอฟต์แวร์ที่ ปัจจัยการผลิตที่มีขนาดใหญ่จริงๆ หรือสำหรับจำนวนมากของเวลาหรือจำนวนมาก วันหรือหลายปีที่ผ่านมา ความผิดพลาดเล็ก ๆ น้อย ๆ เหล่านี้เล็ก ๆ ก็สามารถเพิ่มขึ้นเมื่อเวลาผ่านไป ตอนนี้เป็นกันถ้าคุณเคย เห็นซูเปอร์แมน 3 หรือพื้นที่สำนักงาน และคุณอาจจะจำ วิธีที่พวกขโมย เงินเป็นจำนวนมากจากเครื่องคอมพิวเตอร์ของพวกเขา โดยใช้ค่าจุดลอย และการเพิ่มขึ้นเล็กน้อย เหลือหวังว่าภาพยนตร์ที่ ตอนนี้ทำให้รู้สึกมากขึ้น นี่คือสิ่งที่พวกเขา ยิ่งทำให้ในภาพยนตร์ที่ ความจริงที่ว่าส่วนใหญ่ บริษัท จะไม่มอง หลังจากที่จำนวนหนึ่ง ของทศนิยม แต่ผู้ที่มีเศษของเซนต์ เพื่อให้คุณเริ่มต้นการเพิ่มพวกเขาขึ้น คุณเริ่มต้นที่จะทำให้เงินเป็นจำนวนมาก ในบัญชีธนาคารของคุณ เพื่อให้เป็นพื้นที่สำนักงานอธิบาย แต่น่าเสียดายที่ตอนนี้เกิน พื้นที่สำนักงานมี มีบางหนักใจถูกต้องตามกฎหมาย และผลกระทบอย่างมีนัยสำคัญ เหล่านี้ชนิดของ ตัดสินใจในการออกแบบพื้นฐาน และแน่นอนหนึ่งในเหตุผลที่ เราใช้ C ในหลักสูตร คือเพื่อให้คุณจริงๆมีพื้นดินนี้ ความเข้าใจของวิธีการทำงานของคอมพิวเตอร์ วิธีการที่ซอฟต์แวร์การทำงานและไม่ได้ เอาอะไรให้ได้รับ และจริง ๆ แล้วน่าเสียดายที่แม้จะมี ความเข้าใจพื้นฐาน มนุษย์เราทำผิดพลาด และสิ่งที่ฉันคิดว่าฉันต้องการแบ่งปันเป็น วิดีโอนี้แปดนาทีที่นำมาที่นี่ จากเหตุการณ์ปัจจุบันมหัศจรรย์ซึ่งเป็น การแสดงการศึกษาเกี่ยวกับวิธีการทำงานของสิ่งที่ ที่วาดภาพสองภาพ เมื่อใช้ที่ไม่เหมาะสม และความเข้าใจใน ลอยค่าจุด นำไปสู่​​การบางอย่างมีนัยสำคัญ ผลที่โชคร้าย ลองมาดู [วิดีโอเล่นภาพ] ที่เราตอนนี้กลับไปที่ "วิศวกรรม ภัย "ในปัจจุบันมหัศจรรย์ คอมพิวเตอร์ ที่เราได้มาทั้งหมดที่จะยอมรับ ปัญหาที่มักจะทำลายที่ ได้มีข้อบกพร่อง them-- ไวรัสและ glitches-- ซอฟต์แวร์สำหรับราคาขนาดเล็ก ที่จะจ่ายเงินเพื่อความสะดวก แต่ในเทคโนโลยีชั้นสูงและความเร็วสูง การใช้งานทางทหารและโครงการอวกาศ, ปัญหาที่เล็กที่สุดสามารถ จะขยายไปสู่​​ความหายนะ ที่ 4 มิถุนายน 1996 นักวิทยาศาสตร์เตรียม ที่จะเปิดตัวกำลังใจอาริอาน 5 จรวด มันได้รับการดำเนินการทางวิทยาศาสตร์ ดาวเทียมได้รับการออกแบบ ที่จะสร้างได้อย่างแม่นยำว่า ปฏิสัมพันธ์สนามแม่เหล็กของโลก กับลมสุริยะ จรวดถูกสร้างขึ้นสำหรับ องค์การอวกาศยุโรป และยกออกจากสิ่งอำนวยความสะดวก บนชายฝั่งของฝรั่งเศสรนช์เกียนา -At ประมาณ 37 วินาทีใน เที่ยวบินที่พวกเขาเป็นครั้งแรก สังเกตเห็นบางสิ่งบางอย่างที่เกิดขึ้นไม่ถูกต้อง หัวฉีดที่ได้รับการหมุน ในทางที่พวกเขาจริงๆไม่ควร ประมาณ 40 วินาทีในการบิน เห็นได้ชัดว่ารถที่อยู่ในปัญหา และเมื่อพวกเขาทำ การตัดสินใจที่จะทำลายมัน เจ้าหน้าที่ความปลอดภัยในช่วงที่มี ความกล้าอย่างมากกดปุ่ม และพัดขึ้นจรวดก่อนที่มันจะทำได้ กลายเป็นอันตรายต่อความปลอดภัยของประชาชน RDLCustoms นี้เป็นครั้งแรก การเดินทางของอาริอาน 5 และการทำลายล้างของมันเอา วางเพราะข้อบกพร่อง ที่ฝังอยู่ในซอฟแวร์จรวด ปัญหา -The ที่ อาริอานก็คือการที่มี เป็นจำนวนที่จำเป็นต้องใช้ 64 บิตที่จะแสดง และพวกเขาต้องการที่จะแปลง มันเป็นจำนวน 16 บิต พวกเขาสันนิษฐานว่าจำนวน ก็ไม่เคยจะมีขนาดใหญ่มาก ว่าส่วนใหญ่ของผู้ที่อยู่ในตัวเลข จำนวน 64 บิตเป็นศูนย์ พวกเขามีความผิด การไร้ความสามารถของหนึ่ง -The โปรแกรมซอฟแวร์ที่จะยอมรับ ชนิดของตัวเลขที่สร้างขึ้นโดย อีกคนหนึ่งคือที่รากของความล้มเหลว การพัฒนาซอฟต์แวร์ได้กลายเป็น ส่วนค่าใช้จ่ายสูงมากของเทคโนโลยีใหม่ อาริอาน 4 จรวดได้ ประสบความสำเร็จมาก มากของซอฟแวร์ที่สร้างขึ้นสำหรับ มันก็ยังใช้ในอาริอาน 5 -The ปัญหาพื้นฐาน ก็คือการที่อาริอาน 5 ถูก faster-- เร่งได้เร็วขึ้นและ ซอฟแวร์ไม่ได้คิดว่า การทำลายของจรวด -The เป็นภัยพิบัติทางการเงินมาก ทั้งหมดเนื่องจากข้อผิดพลาดของซอฟต์แวร์นาที แต่นี่ไม่ใช่ครั้งแรกที่ เวลาปัญหาการแปลงข้อมูล ได้รบกวนเทคโนโลยีจรวดที่ทันสมัย 1991 อินกับการเริ่มต้น ของสงครามอ่าวครั้งแรก ขีปนาวุธต่อต้านการก่อการร้าย ประสบการณ์ชนิดที่คล้ายกัน ของปัญหาการแปลงจำนวน และเป็นผลกับคน 28 28 soldiers-- อเมริกันถูกฆ่าตาย และประมาณหนึ่งร้อยคนอื่นได้รับบาดเจ็บ เมื่อรักชาติซึ่งควร เพื่อป้องกัน Scuds เข้ามา ล้มเหลวในการยิงขีปนาวุธ เมื่อมีอิรักบุกคูเวตและอเมริกา เปิดตัวพายุทะเลทรายในช่วงต้นปี 1991 รักชาติแบตเตอรี่ขีปนาวุธถูกนำไปใช้ เพื่อปกป้องซาอุดีอาระเบียและอิสราเอล จากอิรักแล่นขีปนาวุธโจมตี รักชาติเป็นสหรัฐอเมริกากลางช่วง พื้นผิวสู่อากาศระบบ ผลิตโดย บริษัท เรย์ ธ ขนาดของรักชาติ -The ดัก itself-- มันเป็นเรื่องของประมาณ 20 ฟุตยาว และมันน้ำหนักประมาณ£ 2,000 และจะดำเนินการหัวรบประมาณ, ฉันคิดว่ามันเป็นประมาณ£ 150 และหัวรบที่ตัวเองมี ระเบิดสูงซึ่ง มีชิ้นส่วนที่อยู่รอบตัวเขา ดังนั้นปลอกของหัวรบเป็น ออกแบบมาเพื่อทำหน้าที่เหมือนสามสิบ ขีปนาวุธ -The จะดำเนิน สี่ต่อภาชนะ และจะถูกลำเลียงโดยรถพ่วงกึ่ง -The ระบบต่อต้านการก่อการร้ายต่อต้านขีปนาวุธ กลับไปอย่างน้อย 20 ปีขณะนี้ มันถูกออกแบบมา ขณะที่การป้องกันขีปนาวุธอากาศ ที่จะยิงลงเครื่องบินศัตรู ในสงครามอ่าวครั้งแรก เมื่อสงครามที่มาใน กองทัพต้องการที่จะใช้มันเพื่อ ยิงลง Scuds ไม่เครื่องบิน กองทัพอากาศอิรักเป็น ไม่มากของปัญหา แต่กองทัพเป็นห่วงเกี่ยวกับ Scuds ดังนั้นพวกเขาจึงพยายามที่จะ อัพเกรดรักชาติ -Intercepting ศัตรู วิถีการเดินทางที่มัค 5 กำลังจะถูกท้าทายพอ แต่เมื่อรักชาติ ได้วิ่งเข้าไปในบริการ กองทัพไม่ได้ตระหนักถึง การปรับเปลี่ยนที่อิรัก ทำ scuds ของพวกเขาเกือบ เป็นไปไม่ได้มัน อะไรที่เกิดขึ้นเป็น Scuds ที่ มาในที่ไม่แน่นอน พวกเขาสั่นคลอน เหตุผลนี้เป็น Iraqis-- เพื่อให้ได้รับ 600 กิโลเมตรออก ในช่วงที่ missile-- 300 กิโลเมตร เอาน้ำหนักออกจากจรวดหน้า และทำให้หัวรบที่มีน้ำหนักเบา ดังนั้นตอนนี้รักชาติพยายามที่จะมา ที่สกั๊ดและส่วนใหญ่ของ time-- ส่วนใหญ่ที่ครอบงำของ time-- มันก็จะบินโดยสกั๊ด ครั้งหนึ่งผู้ประกอบการระบบต่อต้านการก่อการร้าย ตระหนักถึงความรักชาติพลาดเป้าของมัน พวกเขาระเบิดจรวดต่อต้านการก่อการร้ายของ เพื่อหลีกเลี่ยงการบาดเจ็บล้มตายไปได้ถ้ามัน ได้รับอนุญาตให้ลงไปกองกับพื้นดิน นั่นคือสิ่งที่คนส่วนใหญ่เห็น เป็นลูกไฟขนาดใหญ่ในท้องฟ้า และเข้าใจผิดเป็น ดักของขีปนาวุธสกั๊ด ถึงแม้ว่าในท้องฟ้ากลางคืนรักชาติ ดูเหมือนจะประสบความสำเร็จในการทำลาย Scuds ที่ Dhahran อาจมี ความผิดพลาดที่เกี่ยวกับประสิทธิภาพการทำงานของมัน มีระบบเรดาร์ต่อต้านการก่อการร้ายของ ติดตามการสูญเสียของสกั๊ดที่เข้ามา และไม่เคยเปิดตัวเนื่องจาก ข้อบกพร่องซอฟแวร์ มันเป็นอิสราเอลที่ค้นพบครั้งแรก ที่ไม่เป็นระบบใน มากขึ้นความแตกต่างเวลาที่กลายเป็น เนื่องจากนาฬิกาฝังตัว ในคอมพิวเตอร์ระบบ -About สองสัปดาห์ก่อน โศกนาฏกรรมใน Dhahran, อิสราเอลรายงานว่า กระทรวงกลาโหม ว่าระบบที่ได้รับการสูญเสียเวลา หลังจากนั้นประมาณแปดชั่วโมง ของการทำงานที่พวกเขาสังเกตเห็น ว่าระบบของการเป็น เห็นได้ชัดที่ถูกต้องน้อยกว่า กระทรวงกลาโหมตอบสนองด้วย บอกทั้งหมดของแบตเตอรี่รักชาติ ที่จะได้ออกจากระบบ มาเป็นเวลานาน พวกเขาไม่เคยกล่าวว่าสิ่งที่เป็นเวลานานเป็น 8 ชั่วโมง, 10 ชั่วโมง, พันชั่วโมง ไม่มีใครรู้ว่า -The แบตเตอรี่รักชาติ ประจำการอยู่ที่ค่ายทหาร ที่ Dhahran และสมบูรณ์ภายใน นาฬิกาที่ได้รับในการมานานกว่า 100 ชั่วโมง ในคืนวันที่ 25 กุมภาพันธ์ แต่ก็ถึงเวลาที่จะติดตามความถูกต้อง ประมาณหนึ่งในสิบของที่สอง ตอนนี้หนึ่งในสิบของที่สอง เป็นตัวเลขที่น่าสนใจ เพราะมันไม่สามารถแสดง ในไบนารีว่าซึ่ง หมายความว่ามันไม่สามารถจะแสดงว่า ในคอมพิวเตอร์ดิจิตอลที่ทันสมัย มันยากที่จะเชื่อ แต่ ใช้นี้เป็นตัวอย่าง ลองมาจำนวนหนึ่งในสาม หนึ่งในสามไม่สามารถ แสดงในทศนิยมว่า หนึ่งในสามเป็น 0.333 ไปในอินฟินิตี้ มีวิธีการทำที่มีไม่ได้ ความถูกต้องแน่นอนในทศนิยม ที่ว่าชนิดของปัญหา ที่เกิดขึ้นในความรักชาติ อีกต่อไประบบการวิ่ง เลวร้ายกลายเป็นข้อผิดพลาดเวลา หลังจาก 100 ชั่วโมงของการทำงาน ข้อผิดพลาดในเวลาที่เป็นเพียงประมาณหนึ่งในสาม เป็นครั้งที่สอง แต่ในแง่ของการกำหนดเป้​​าหมาย วิถีการเดินทางที่มัค 5 มันมีผลในการติดตาม ข้อผิดพลาดกว่า 600 เมตร มันจะเป็นความผิดพลาดร้ายแรง สำหรับทหารที่ Dhahran อะไรที่เกิดขึ้นมีการเปิดตัวสกั๊ดเป็น ตรวจพบโดยดาวเทียมเตือนภัย และพวกเขารู้ว่าสกั๊ดมา ในทิศทางทั่วไปของพวกเขา พวกเขาไม่ทราบว่ามันกำลังจะมา ตอนนี้มันเป็นได้ถึงเรดาร์ ส่วนประกอบของระบบต่อต้านการก่อการร้าย ปกป้อง Dhahran การค้นหาและเก็บ ติดตามขีปนาวุธของศัตรูที่เข้ามา เรดาร์ -The เป็นสมาร์ทมาก มันจริงจะติดตาม ตำแหน่งของสกั๊ด แล้วทำนายที่ มันอาจจะเป็น ในครั้งต่อไป เรดาร์ส่งพัลส์ออก ที่ถูกเรียกว่าประตูช่วง -Then เคยต่อต้านการก่อการร้าย ตัดสินใจที่มีเวลามากพอ ส่งผ่านไปยังกลับไปตรวจสอบต่อไป สถานที่สำหรับวัตถุที่ตรวจพบนี้ มันจะไปกลับ ดังนั้นเมื่อมันเดินกลับไปที่ที่ไม่ถูกต้อง สถานที่มันก็เห็นวัตถุไม่มี และจะตัดสินใจว่ามีวัตถุใด ว่ามีการตรวจจับที่ผิดพลาด และจะลดลงตาม กรุเข้ามาแล่นหายไป จากหน้าจอเรดาร์ และวินาทีต่อมามัน กระแทกเข้าค่ายทหาร สกั๊ดถูกฆ่าตาย 28 มันเป็นคนสุดท้ายที่ยิง ในช่วงสงครามอ่าวครั้งแรก อนาถ, ซอฟแวร์ที่มีการปรับปรุง มาถึงตอนเช้าในวันรุ่งขึ้น ข้อบกพร่องซอฟต์แวร์ที่มี รับคงปิด บทหนึ่งในปัญหา ประวัติศาสตร์ของขีปนาวุธต่อต้านการก่อการร้าย [จบการเล่นวิดีโอ] เดวิดเจลัน: นั่นมันสำหรับ CS50 เราจะเห็นคุณในวันพุธที่ [เล่นเพลง]