[เล่นเพลง] ZAMYLA CHAN: คุณค่อนข้างจะได้รับ $ 10,000,000 อยู่ในปัจจุบันหรือได้รับ เพนนีวันของเดือนทุกที่ แต่ละวันคุณจะได้รับ สองจำนวนเงินที่คุณ วันก่อนที่จะได้รับ? ในเพนนีเรากำลังจะไป พิสูจน์ให้เห็นแล้วว่าทำไมคุณควร แน่นอนต้องใช้เงิน งานของคุณคือการเขียน pennies.c - โปรแกรมที่แรกถามผู้ใช้ว่า อีกไม่กี่วันจะมีในเดือนและ แล้วกี่เพนนีผู้ถาม จะได้รับในวันแรก โปรแกรมแล้วควรคำนวณ จำนวนเงินที่ผู้ใช้จะต้อง สะสมในตอนท้ายของ เดือนและแสดง เราสามารถทำลายโปรแกรมนี้ขึ้น เป็นคู่ของงาน เราจะต้องแจ้ง ปัจจัยการผลิตที่ผู้ใช้หลาย - วันและเดือนและเพนนี ในวันแรก เราจำเป็นต้องมีการติดตามการใช้เงินเท่าไหร่ ผู้ใช้ที่มีและปรับปรุงทุก วันเพิ่มขนาดของ เงินที่พวกเขาได้รับ และในที่สุดเราพิมพ์ของพวกเขา ทั้งหมดสุดท้ายในดอลลาร์ ให้ผู้ใช้ป้อนข้อมูลการต่อสู้ครั้งแรก ฉันจะเปิดขึ้น apples.c, โปรแกรมสั้นที่เกี่ยวข้อง กับปัจจัยการผลิตและผล ที่ด้านบนที่นี่เราได้รวมบาง ของห้องสมุดที่ฉันต้องการ - ห้องสมุด CS50 และมาตรฐาน ห้องสมุด I / O ฉันพิมพ์ให้ใช้ ฟังก์ชั่น printf จาก มาตรฐาน I / O ห้องสมุด แต่ที่เกิดขึ้นจริงกระตุ้นของผู้ใช้ ที่เกิดขึ้นในบรรทัดถัดไปที่มีนี้ ฟังก์ชั่น GetInt ใน CS50 ห้องสมุด GetInt ได้รับข้อมูลจากผู้ใช้และ เพื่อให้แน่ใจว่าการป้อนข้อมูลเป็นจำนวนเต็ม ดังนั้นผมจึงเก็บข้อมูลของผู้ใช้ที่เป็นจำนวนเต็ม i, ลบ 1 จาก i แล้ว พิมพ์ค่าใหม่ถ้าฉัน หลังจากรวบรวม apples.c ใช้ "คำสั่งให้แอปเปิ้ล" ฉันมี แอปเปิ้ลแฟ้มที่ปฏิบัติการ วิ่งที่ฉันจะอินพุต 1 โปรแกรมบอกว่า ฉันมี 0 แอปเปิ้ลที่เหลือ และเพื่อให้ทำงานตามที่คาดไว้ ดังนั้นขอทำงานนี้อีกครั้ง การป้อนข้อมูลและลบ 1 ขณะนี้มีจำนวนเชิงลบของแอปเปิ้ล ไม่ทำให้รู้สึกจริงๆ แต่ โปรแกรมจะยอมรับมันเพราะลบ 1 ดีก็เป็นจำนวนเต็ม และตอนนี้โปรแกรมหรือมอนสเตอร์ ภายในโปรแกรมกินเชิงลบ แอปเปิ้ลและตอนนี้ฉันมี ลบแอปเปิ้ล 2 ฮึ่มเพื่อให้เป็นหนึ่งบทเรียน - แม้ว่าฟังก์ชัน GetInt และ การทำงานที่เกี่ยวข้องเช่น GetFlow หรือ getString ได้รับชนิดของข้อมูลที่ถูกต้องคุณ มีเพื่อให้แน่ใจว่าการป้อนข้อมูลที่ทำให้ ความรู้สึกสำหรับโปรแกรมของคุณ ในเพนนีก็จะไม่ทำเพียงแค่ให้ สำหรับจำนวนเต็มคุณจะต้องทำ แน่ใจแล้วหรือว่าใช้ปัจจัยการผลิตจำนวนเต็ม ที่ทำให้รู้สึกได้รับบริบท เดือนสามารถมี 28, 29, 30 หรือ 31 วัน เราต้องการที่จะมีความต้องการอย่างต่อเนื่อง จำนวนเต็มถูกต้อง ถ้าใส่พวกเขาออกไปข้างนอกจำนวนเต็มของเรา ขอบเขตที่ยอมรับเราจะให้พวกเขา อีกครั้งและอีกครั้งจนกว่าคุณจะ ให้เราเป็นจำนวนเต็มถูกต้อง Recall "ซ้ำจนกระทั่ง" ป้องกันรอยขีดข่วนใน? คุณสามารถสร้างที่คล้ายกัน ในโดยใช้ C "ในขณะที่" ห่วง หรือ "ทำในขณะที่วง" โครงสร้างห่วงในขณะที่มีสภาพ ที่จะต้องพบกัน ร่างกายของวงที่จะดำเนินการ นี้ควรจะดูเล็ก ๆ น้อย ๆ ที่คล้ายกัน เพราะเงื่อนไขเป็นเช่นเดียวกับ บล็อกรอยขีดข่วนมีมุม และเดินเข้าไปในวงเล็บ จาก "ในขณะที่" ห่วง ดังนั้นเงื่อนไขที่ว่าจะตรวจสอบว่า จำนวนเต็มอยู่ภายใน ขอบเขตที่เหมาะสม คุณสามารถแจ้งให้ GetInt ใช้จำนวนเต็ม แล้วรัน "ในขณะที่" ของคุณ ห่วงการทำซ้ำที่รวดเร็วและการพิมพ์ คำแนะนำในขณะที่เข้า ไม่ถูกต้อง วิธีการเพื่อให้แน่ใจว่าผู้ใช้ป้อนข้อมูลที่ถูกต้องอีก คือการใช้ "ทำในขณะที่" ห่วง ซึ่งจะคล้ายกับวงในขณะที่ "ทำในขณะที่วง" รันรหัส ภายในร่างกายของคนและการตรวจสอบแล้ว ไม่ว่าจะเป็นเงื่อนไขที่จะพบหรือไม่ นี้จะเป็นประโยชน์สำหรับการได้รับข้อมูลจากผู้ใช้, เพราะคุณรู้ว่าคุณจะต้อง เพื่อให้พวกเขาอย่างน้อยหนึ่งครั้ง ถ้าเงื่อนไขจะไม่ตรงตามโปรแกรม จะดำเนินการหลังจากที่สาย "ทำในขณะที่ของคุณ" ห่วง ถ้าเงื่อนไขจะพบว่า ห่วงจะทำซ้ำ "ทำในขณะที่" ห่วงสำหรับการตรวจสอบของผู้ใช้ การป้อนข้อมูลจะมีลักษณะบางอย่างเช่นนี้ ฉันประกาศตัวแปร n, GetInt และ แล้วทำซ้ำจนกระทั่ง n คือถูกต้อง และขั้นตอนนี้ผมอธิบายถูกใช้ ชนิดจำนวนเต็มข้อมูลซึ่ง ที่คุณจะใช้สำหรับวันของเดือน แต่เรารู้ว่าจำนวนของเพนนี จะกองพะเนินเทินทึกได้อย่างรวดเร็วดังนั้นเพื่อที่จะ เก็บหมายเลขขนาดใหญ่ให้ใช้ชนิดข้อมูล Longlong แต่จำเดียวกัน หลักการของการตรวจสอบใช้ น่ากลัวดังนั้นเมื่อเรามีสองที่ถูกต้อง ปัจจัยการผลิตจากผู้ใช้ - วันในเดือนและเพนนี ในวันแรก - เราสามารถย้ายไปยังต่อไป ส่วนหนึ่งของโปรแกรม วันแรกที่ผู้ใช้เริ่มต้นด้วย เงินจำนวนมาก แต่พวกเขาระบุ และปริมาณของเงินที่พวกเขา ได้รับในวันถัดไปเป็นสองเท่า ดังนั้นมันทำให้รู้สึกที่จะติดตาม ของทั้งสองจำนวน - เท่าใดเงินที่ผู้ใช้มีและวิธีการที่ เงินจำนวนมากที่พวกเขาจะได้รับ ตอนนี้ทำอะไรเพื่อ 28-31 วัน ซ้ำจึงขอใช้ "สำหรับ" ห่วงย้ำกว่าวันใน เดือนปรับปรุงทั้งหมดและเงิน จำนวนเงินทุกครั้ง "สำหรับไวยากรณ์" วงประกอบด้วย ดังต่อไปนี้ - เริ่มต้นสภาพ, และการปรับปรุง ห่วงคุณ "กับ" จะเริ่มต้น ตัวแปรเมื่อมัน ครั้งแรกที่เข้ามาในวง ถ้าเงื่อนไขจะพบในร่างกาย ของวงจะดำเนินการ หลังจากนั้นการปรับปรุงจะดำเนินการ ถ้าเงื่อนไขจะพบยัง ห่วงจะดำเนินการและการปรับปรุงและ ทำซ้ำตราบเท่าที่สภาพของคุณ ประเมินไปจริง ที่นี่ห่วง "กับ" ที่แบ่งเป็น จำนวนเต็ม p 2 ทั้งหมด 10 ครั้ง หมายเหตุวิธีการที่ฉันประกาศ p จำนวนเต็ม ที่อยู่นอกวงของฉัน "กับ" เพื่อให้ จำนวนเต็มสามารถเข้าถึงได้ นอกวง "กับ" หลังจากนั้นหนึ่งเดือนผ่านไปก็ถึงเวลาที่ ที่จะบอกผู้ใช้เงินเท่าไหร่ พวกเขาได้ gotten ต่อ spec คุณจะต้องบอกผู้ใช้ กี่ดอลลาร์ไม่กี่ เงินที่พวกเขามี แต่จนถึงขณะนี้คุณได้เฝ้าติดตาม ทั้งหมดและเพนนีใช้ LongLongs, ซึ่งเป็นจำนวนเต็ม มี 100 เพนนี 1 $ ดังนั้นเว้นแต่ จำนวนเงินเป็น หลาย 100, คุณจะต้อง เป็นตัวแทนของตำแหน่งทศนิยม AutoType สองเท่าช่วยให้ คุณจะทำเช่นนี้ ดังนั้นเราจะแปลงจากที่เป็นตัวแทนของวิธีการที่ เงินดอลลาร์? ลองมาดู pi.c. โปรแกรมนี้จะใช้เวลา Longlong big_pi และ หาร 100,000 และพิมพ์ ผลถึงห้าตำแหน่งทศนิยม ถ้าเราต้องการที่จะแสดงสี่ทศนิยม สถานที่แล้วเราก็สามารถแทนที่นี้ จำนวนที่นี่ ดังนั้นขอบันทึกรวบรวมปี่และ แล้วดูผลที่ตามมาซึ่งเรา คาดหวังว่าจะ 3.1415 - ครั้งแรกห้าหลักของปี่ มันไม่ได้เป็น แต่ และทำไม? ดีเพราะเป็น big_pi Longlong, ซึ่งตัวเลขทั้งหมดเป็นซึ่งจะไม่ ติดตามทศนิยม การเปลี่ยนแปลงที่ฉันจำเป็นต้อง ให้อยู่ในหมวด ฉันจำเป็นต้องโยนไปสองที่นี่มาก่อน หารเพราะคู่ไม่สามารถเก็บ ติดตามตำแหน่งทศนิยม และฉันจะเพิ่มบรรทัดใหม่ นี่สำหรับการจัดรูปแบบที่ดีขึ้น และที่นี่เรามีมัน - 3.1416 คุณอาจพบว่ามันพิมพ์ 3.1416 แทน 3.1415 ตามที่คาดไว้ นั่นเป็นเพราะรอบมันในช่วง กระบวนการแบ่งเป็นนอกคอกเพียง ตัดทอนค่า ตอนนี้คุณควรจะสามารถที่จะพิมพ์ ทั้งหมดสุดท้ายได้อย่างถูกต้องซึ่งเสร็จสิ้น โปรแกรม ขอแสดงความยินดี ชื่อของฉันคือ Zamyla และนี่คือเงิน [เล่นเพลง]