>> [เล่นเพลง]
>> 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
และนี่คือเงิน
>> [เล่นเพลง]