[پخش موسیقی] ZAMYLA چان: آیا شما به جای دریافت 10 میلیون دلار در حال حاضر و یا دریافت سکه در هر روز از ماه، که در آن هر روز پس از آن، شما دریافت خواهید کرد دو برابر مقدار از سکه های شما روز قبل از دریافت؟ در سکه، ما قصد داریم به ثابت کند که چرا شما باید قطعا سکه را. شغل شما این است برای نوشتن pennies.c - برنامه ای است که برای اولین بار از کاربر می پرسد که چگونه بسیاری از روز وجود دارد در ماه و سپس می پرسد که چگونه بسیاری از سکه کاربر در روز اول دریافت خواهید کرد. این برنامه پس از آن باید محاسبه مقدار که کاربر باید انباشته در پایان ماه و نمایش آن. ما می توانید این برنامه را شکستن به یک زن و شوهر از وظایف. ما باید آن را بی درنگ ورودی های چندگانه کاربر - روز ها و ماه ها، و سکه در روز اول. ما باید برای پیگیری چه مقدار پول کاربر و به روز رسانی آن را هر روز، دو برابر مقدار سکه که آنها دریافت می کنند. و در نهایت، ما خود را چاپ کنید نهایی، به دلار. بیایید مقابله با ورودی کاربر را برای اولین بار. من قصد دارم برای باز کردن apples.c، برنامه کوتاه است که می پردازد با ورودی و خروجی. در بالای در اینجا، من شامل برخی از از کتابخانه که من نیاز دارید - کتابخانه CS50 و استاندارد من / کتابخانه O. من نسخه قابل چاپ سریع با استفاده از تابع printf از کتابخانه استاندارد I / O. اما باعث واقعی کاربر در خط بعدی با این اتفاق می افتد تابع GetInt در کتابخانه CS50. GetInt به دست آوردن ورودی از کاربر و تضمین می کند که ورودی یک عدد صحیح است. بنابراین من ورودی کاربر را ذخیره کنید به عدد صحیح من، تفریق 1 از من، و سپس نسخه قابل چاپ کردن مقدار جدید اگر من. بعد از کامپایل apples.c با استفاده از دستور "سیب،" من یک سیب فایل اجرایی. در حال اجرا است که، من ورودی 1. این برنامه به من می گوید که من 0 سیب باقی مانده است. و به طوری که مشغول به کار به عنوان انتظار می رود. پس این را دوباره اجرا کنیم و ورودی منفی 1. در حال حاضر، با داشتن یک مقدار منفی سیب واقعا را حس نمی کند، اما این برنامه آن را می پذیرد، زیرا منفی 1، خوب، آن را یک عدد صحیح است. و در حال حاضر در برنامه و یا هیولا در داخل برنامه منفی می خورد سیب، و در حال حاضر من منفی 2 سیب. HM، به طوری که یک درس - حتی اگر تابع GetInt و توابع مربوطه، مانند GetFlow یا GetString نوع داده سمت راست، شما باید مطمئن شوید که ورودی باعث می شود به حس برای برنامه شما. در سکه، آن را انجام خواهد داد نه تنها اعلان برای یک عدد صحیح، شما نیاز به ایجاد مطمئن شوید که ورودی کاربر یک عدد صحیح که باعث احساس با توجه به زمینه. ماه تنها می تواند 28، 29، 30، یا 31 روز. ما می خواهیم به طور مداوم تقاضا یک عدد صحیح معتبر است. اگر آنها ورودی خارج صحیح ما مرزهای پذیرفته شده، ما آنها را بی درنگ خواهیم کرد دوباره و دوباره، تا زمانی که شما یک عدد صحیح معتبر را به ما بدهید. به یاد بیاورید "تکرار تا" مسدود در ابتدا؟ شما می توانید یک ساختار مشابه در C با استفاده از یک حلقه "در حالی که" و یا "آیا در حالی که" حلقه. ساختار حلقه while شرط که باید برای ملاقات بدنه حلقه به اجرا. این باید نگاه کمی مشابه، چرا که شرایط است درست مثل بلوک ابتدا با زاویه و می رود به براکت "در حالی که" حلقه. به طوری که بیماری خواهد شد که آیا تیک بزنید عدد صحیح است که در داخل مرزهای مناسب. شما می توانید با استفاده از GetInt عدد صحیح بی درنگ و سپس "در حالی که" خود را اجرا حلقه، تکرار سریع و چاپ دستورالعمل ها، در حالی که ورودی معتبر نیست. راه دیگر برای اطمینان از ورودی کاربر را درست با استفاده از "انجام دهند در حالی که" حلقه، است که بسیار شبیه به یک حلقه در حالی که. "آیا در حالی که" حلقه اجرا کد در داخل آنهایی که بدن و سپس چک که آیا شرط است ملاقات کرد یا نه. این برای اخذ ورودی کاربر مفید است، چون شما می دانید که شما نیاز دارید به آنها بی درنگ حداقل یک بار. اگر شرط است، ملاقات نکرده، برنامه پس از خط اجرا خود را انجام دهند در حالی که "حلقه. اگر وضعیت به ملاقات هر چند، حلقه تکرار خواهد شد A "را انجام دهند، در حالی که" حلقه برای اعتبار کاربر ورودی چیزی شبیه به این. من اعلام N های متغیر، GetInt و پس از آن تکرار تا N معتبر است. و این روند، من توضیح داد، با استفاده از نوع داده ها، عدد صحیح است که شما برای روز از ماه استفاده کنید. اما ما می دانیم که تعدادی از سکه شمع تا به سرعت، بنابراین به منظور ذخیره اعداد بزرگتر، استفاده از نوع داده LongLong، اما به یاد داشته باشید همان اصل اعتبار صدق می کند. بسیار معروف، به طوری که هنگامی که ما دو معتبر ورودی از کاربر - روز در ماه و سکه در روز اول - ما می توانیم بر روی بعدی حرکت می کند بخشی از برنامه است. روز اول، کاربر شروع می شود با با این حال بسیاری از سکه های آنها مشخص شده و مقدار سکه که آنها دریافت روز بعد دو برابر شده است. بنابراین آن را حس می کند برای پیگیری از این دو مقدار - کاربر چقدر پول دارد و چگونه بسیاری از سکه آنها خواهید داده می شود. در حال حاضر، انجام کاری به مدت 28 تا 31 روز تکراری است، بنابراین اجازه دهید با استفاده از یک "برای" حلقه برای تکرار بیش از روز در ماه، به روز رسانی کل و پنی مقدار در هر زمان. "برای" نحو حلقه شامل زیر - مقدار دهی اولیه، وضعیت، و به روز رسانی. شما "برای" حلقه مقداردهی اولیه خواهد شد یک متغیر، زمانی که آن را برای اولین بار وارد حلقه. اگر شرط را ملاقات نمود، بدن از حلقه اجرا خواهد شد. پس از آن، به روز رسانی اجرا خواهد شد. اگر این وضعیت هنوز هم ملاقات نمود، حلقه را اجرا و به روز رسانی، و تکرار، تا زمانی که شرایط خود را ارزیابی درست. در اینجا یک "برای" حلقه که تقسیم P عدد صحیح 2 در مجموع 10 بار. توجه داشته باشید چگونه می توانم P عدد صحیح اعلام کرد در خارج از من را "برای" حلقه، به طوری که عدد صحیح می تواند در دسترس خارج "برای" حلقه. پس از ماه گذشته است، وقت آن است کاربر برای گفتن چقدر پول آنها و بعد فورا رفت واز ام. میانگین پستها در طول این تنظیمات، شما نیاز به کاربر برای گفتن چگونه بسیاری از دلار، که چگونه بسیاری نیست سکه، آنها داشته باشند. اما تا کنون، که مسیر شما را نگه داشته ام کل و سکه با استفاده از LongLongs، که اعداد صحیح هستند. 100 سکه به $ 1 وجود دارد، بنابراین مگر اینکه تعدادی از سکه است متعدد از 100، شما نیاز به نمایندگی رقم اعشار. چاپ خودکار دو برابر شده است اجازه می دهد تا شما برای انجام این کار. پس چگونه ما از به نمایندگی از تبدیل سکه به دلار؟ اجازه دهید یک نگاهی از pi.c. این برنامه طول می کشد big_pi LongLong و آن را توسط 100،000 تقسیم و چاپ در نتیجه تا پنج رقم اعشار است. اگر ما می خواستیم برای نمایش چهار دهدهی مکان ها، سپس ما می توانیم فقط این جایگزین تعداد در اینجا. بنابراین صرفه جویی، تدوین PI، و اجازه دهید سپس نتیجه را ببینید، که ما انتظار می رود 3.1415 - پنج رقم اول از پی. آن است که هر چند نیست. و چرا؟ خوب، چون big_pi یک LongLong است، است که یک عدد صحیح، که نه پیگیری از اعشار. اصلاح من نیاز دارم می باشد که در بخش. من نیاز به بازیگران به دو در اینجا قبل از تقسیم، چون دو برابر نمی تواند نگه داشتن پیگیری رقم اعشار. و من قصد دارم به اضافه کردن یک خط جدید در اینجا برای قالب بندی بهتر است. و در اینجا ما آن را دارند - 3.1416. شما ممکن است متوجه است که آن را چاپ 3.1416 به جای آن از 3.1415 به عنوان انتظار می رود. دلیلش این است که آن را در طی دوره فرایند تقسیم، به عنوان تنها مخالف کوتاه کردن ارزش. در حال حاضر شما باید قادر باشد که برای چاپ نهایی به درستی، که پس از اتمام برنامه است. تبریک می گویم. نام من Zamyla است. و این سکه بود. [پخش موسیقی]