داگ لوید: بسیار خوب. پس به مقابله با یک موضوع واقعا بزرگ، توابع. تا کنون در این دوره، تمام برنامه هایی که ما نوشتن شده است در داخل از آن نوشته شده است. آنها برنامه بسیار ساده است. شما لازم نیست به همه این شاخه ها و همه چیز در رفتن. ما فقط می توانید آن را همه جا داخل اصلی و آن را نمی وحشتناکی خسته کننده باشد. اما به عنوان دوره در می رود و عنوان شما شروع به توسعه برنامه به طور مستقل، آنها احتمالا برای شروع به دریافت مقدار زیادی بیش از 10 و یا 15 خط است. شما ممکن است صدها یا هزاران گرفتن و یا ده ها هزار خط کد. و آن را واقعا نمی که دیوانه فکر. به این ترتیب، آن را احتمالا ایده خوبی نیست نگه داشتن همه چیز در داخل اصلی. این می تواند یک کمی مشکل برای پیدا کردن آنچه شما دنبال اگر شما انجام دهد. خوشبختانه، هر چند C، و تقریبا هر زبان برنامه نویسی دیگر که ممکن است کار با، اجازه می دهد تا ما را به نوشتن توابع. و من فقط رفتن به را سریع کنار در اینجا به ذکر است که توابع است یک منطقه از علم کامپیوتر است. و شما بسیاری از آنها در دید نقاط مختلف در طول دوره و اگر شما در ادامه خواهد داد. که در آن بسیاری از وجود دارد مترادف برای کلمه است. بنابراین ما توابع پاسخ. اما شما همچنین ممکن آنها را بشنود به عنوان روش، و یا روش، به ویژه، اگر شما تا به حال انجام هر گونه برنامه نویسی شی گرا before-- و نگران نباشید اگر شما نداشته باشند، نمی deal-- بزرگ اما در زبان حسابرسی گرا روش اغلب به نام هستند. گاهی اوقات آنها زیرروالهای نامیده می شود. اما آنها واقعا همه مراجعه به همان ایده اولیه. بیایید ببینید که چه آن ایده است. یک تابع چیست؟ خب یک تابع است که واقعا چیزی بیش از یک جعبه سیاه است. یک جعبه سیاه است که مجموعه ای از صفر و یا ورودی و یک خروجی. بنابراین برای مثال، این ممکن است یک تابع. این تابع یک تابع به نام است. و آن سه ورودی A، B، و C طول می کشد. و در داخل آن جعبه سیاه، ما نمی دانم دقیقا چه می کند، اما آن را پردازش ورودی در برخی از راه و سپس آن را می دهد یک خروجی، در این مورد، Z. در حال حاضر به آن را کمی کمتر انتزاعی، ما می تواند شاید می گویند که ما یک تابع به نام اضافه کردن که سه ورودی A، B طول می کشد، و C و پردازش خروجی در برخی از راه در داخل جعبه سیاه و سفید به تولید یک خروجی. بنابراین در این مورد، اگر اضافه طول می کشد 3، 6، و 7. جایی در داخل اضافه کردن تابع، ما را انتظار می رود آنها را به هم اضافه می شود برای تولید خروجی، که 3 به همراه 6 به همراه 7 یا 16 است. به طور مشابه، شما باید یک تابع به نام MULT که دو ورودی A و B طول می کشد، آنها را پردازش در برخی از راه چنین که خروجی از تابع این محصول از دو ورودی است. دو ورودی با هم ضرب می شود. 4 و 5 در حال وارد شدن MULT به تصویب رسید، چیزی اتفاق می افتد، خروجی ما انتظار داریم 20 است. چرا ما آن یک جعبه سیاه است؟ خوب اگر ما در حال نوشتن نیست توابع خودمان، که ما بسیار کمی که تا کنون CS50 انجام داده ام. ما را دیده ام چاپ F، به عنوان مثال، یک تابع است که ما ارسال نشده است خودمان، اما ما استفاده از تمام وقت. اگر ما در حال نوشتن نیست توابع خودمان، ما واقعا نمی باید بدانید که چگونه آن را در واقع در زیر هود اجرا شده است. بنابراین برای مثال جعبه سیاه و سفید من فقط شما برای ضرب نشان داد، MULT A، B می تواند defined-- و این فقط برخی شبه می تواند تعریف شده به عنوان بار خروجی ب. این را حس، درست است. اگر ما یک تابع به نام MULT که دو ورودی طول می کشد. ما انتظار داریم که خروجی به شود دو ورودی در هم ضرب، یک بار ب. اما MULT نیز می تواند اجرا شبیه به این، ما یک متغیر شمارنده به از داخل MULT به 0 تنظیم کنید. و سپس ما این روند را تکرار B بار اضافه کردن به ضد. به عنوان مثال، اگر ما 3A توسط ضرب 5B، ما می گویند مقابله با 0 تنظیم، پنج بار تکرار، اضافه کردن 3 تا ضد. بنابراین ما در 0 شروع و پس از ما انجام می دهیم این پنج بار 3، 6، 9، 12، 15. این نتیجه همان است. ما هنوز هم 3 بار 5 فقط اجرای متفاوت است. این چیزی است که منظور ما وقتی می گوییم یک جعبه سیاه. این فقط بدان معناست ما واقعا مهم نیست چگونه آن را در زیر هود اجرا تا زمانی که خروجی آن چیزی که ما انتظار داریم. در واقع، که بخشی از قرارداد است استفاده از توابع، به ویژه توابع که دیگران ارسال. رفتار همیشه به طور معمول، غیر قابل پیش بینی بر اساس نام تابع. و به همین دلیل آن را واقعا مهم است که شما ارسال توابع و یا زمانی که افراد دیگر ارسال توابع است که شما ممکن است استفاده کنید، که کسانی که توابع روشن، نام نسبتا واضح است، و به خوبی مستند شده است. که است که قطعا مورد برای عملکرد مانند چاپ F. پس چرا ما با استفاده از توابع؟ همچنین من قبلا هم گفتم، اگر ما ارسال همه از کد ما در داخل از کارهای اصلی واقعا می تواند دست و پا گیر آوردن و واقعا پیچیده است. توابع ما اجازه می دهد توانایی برای سازماندهی همه چیز و شکستن یک مشکل بسیار پیچیده را به بسیاری قطعات زیر را بیشتر کنترل. توابع را نیز به ما اجازه می دهد تا ساده سازی فرایند برنامه نویسی. آن را بسیار آسان تر برای اشکالزدایی یک 10 تابع خط در مقابل یک خط 100 تابع یا یک تابع 1،000 خط. اگر ما تنها به اشکال زدایی دارند تکه های کوچک در یک زمان، و یا ارسال به قطعات کوچک در آن زمان، آن را می سازد که تجربه برنامه نویسی خیلی بهتره. به من اعتماد کن در آن یکی. در نهایت، اگر ما ارسال توابع ما می توانید آن قسمت های مختلف استفاده مجدد. توابع را می توان بازیافت. آنها را می توان در استفاده یک برنامه و یا دیگر. شما در حال حاضر نوشته شده است تابع، همه شما نیاز به انجام است که برنامه به که در آن برای پیدا کردن که تابع. ما شده ایم و با استفاده از بازیافت f برای بیش از 40 سال را چاپ کنید. اما تنها یک بار نوشته شده است. بسیار مفید، درست است. خیلی خوب. بنابراین توابع بزرگ هستند. ما آن را میدانیم. حالا اجازه دهید شروع به نوشتن آنها. بیایید شروع به گرفتن آنها را به برنامههای ما است. به منظور انجام این کار، اولین چیزی که ما انجام دهد، اعلام تابع. هنگامی که شما یک تابع اعلام آنچه را که شما اساسا انجام گفتن کامپایلر، هی، فقط شما می دانید، من می خواهم به نوشتن می شود یک تابع بعد و در اینجا آنچه آن را به مانند نگاه کنید. دلیل این کار این است چون کامپایلر می توانید انجام برخی از کارهای عجیب و غریب اگر آنها مجموعه ای از نمادها را ببینید که آنها با آن آشنا نیست. بنابراین ما فقط به کامپایلر سر تا، من ایجاد یک تابع و آن را به انجام این کار. اظهارات تابع به طور کلی اگر شما سازماندهی کد خود را در راه که دیگران قادر خواهد بود تا درک و استفاده از، شما به طور کلی می خواهم برای قرار دادن تمام از اظهارات تابع خود را در بالا بسیار از کد خود را، راست قبل از اینکه شما شروع به نوشتن حتی اصلی. و به راحتی، وجود دارد یک فرم بسیار استاندارد که هر اعلان تابع زیر است. همه آنها بسیار شبیه به این. از سه بخش وجود دارد به یک تابع اعلامیه، نوع بازگشت، نام، و لیست بحث. در حال حاضر نوع بازگشت چه نوع است متغیر خروجی عمل خواهد کرد. بنابراین برای مثال، اگر ما فکر کنیم یک دقیقه پیش به ضرب دو تابع شماره، آنچه که ما انتظار اگر ما با یک عدد صحیح یک عدد صحیح ضرب خروجی خواهد بود احتمالا یک عدد صحیح، درست است. ضرب دو عدد صحیح با هم، شما یک عدد صحیح را دریافت کنید. بنابراین نوع بازگشت که عملکرد می شود نوع int است. نام و نام خانوادگی آنچه شما می خواهید برای فراخوانی تابع خود را. این است که احتمالا کم اهمیت بخشی از متد، از نظر عملکرد. اما در واقع احتمالا یکی از مهم ترین بخش های از تعریف تابع در دانستن اینکه چه چیزی تابع در واقع می کند. اگر شما نام تابع f یا g یا ساعت و یا رمز و راز و یا چیزی شبیه به آن، شما احتمالا در حال رفتن به کمی افتاد تا تلاش به یاد داشته باشید آنچه که آن دسته از توابع است. بنابراین مهم است به خود را نام های معنی دار عملکرد است. در نهایت، لیست آرگومان است با کاما از هم جدا از همه ورودی به تابع خود، که هر کدام دارای یک نوع و یک نام. بنابراین نه تنها شما را به مشخص کنید که چه نوع متغیر خروجی تابع اراده، شما هم می خواهید برای مشخص چه نوع و نوع متغیرهای عملکرد خواهد شد پذیرش به عنوان ورودی. بنابراین اجازه دهید یک مثال را در اینجا. بیایید فقط یک نگاه در یک بتن تر است. بنابراین در اینجا یک مثال از یک تابع است اعلامیه برای یک تابع است که دو عدد صحیح هم اضافه کنید. مجموع دو عدد صحیح است که به یک عدد صحیح به عنوان خوب، همانطور که ما فقط بحث شده است. و به این ترتیب نوع بازگشت، در اینجا به رنگ سبز، خواهد بود نوع int است. که فقط به ما که اضافه کردن دو نوع داده int می گوید در حال رفتن به، در پایان روز، خروجی، یا تف آن را به عقب به ما، یک عدد صحیح. با توجه به آنچه این تابع ما می کند می خواهم به آن نام معنی دار است. اضافه کردن دو نوع داده int به نظر می رسد مناسب، با توجه به ما در حال گرفتن دو عدد صحیح به عنوان ورودی و امیدوارم آنها اضافه کردن با هم. این ممکن است یک بیت از یک دست و پا گیر نام و رک و پوست کنده از این تابع احتمالا لازم نیست از آنجایی که ما علاوه بر اپراتور، اگر شما از یاد ما بحث اپراتورها، قبلا. اما اجازه دهید فقط به خاطر می گویند این استدلال که این تابع مفید است و بنابراین ما پاسخ آن اضافه کنید دو نوع داده int. در نهایت، این تابع دو ورودی طول می کشد. که هر کدام یک عدد صحیح است. بنابراین ما باید این کاما از هم لیست تفکیک شده از ورودی. در حال حاضر ما به طور کلی می خواهم یک نام برای هر یک از آنها به طوری که آنها می تواند استفاده شود در تابع. نام وحشتناکی مهم نیست. در این مورد، ما لزوما هر گونه معنای متصل به آنها. بنابراین ما فقط می توانید آنها را A و B است. این کاملا خوب است. اگر با این حال، شما را پیدا خود را در موقعیتی که در آن نام متغیر در واقع ممکن است مهم باشد، شما ممکن است بخواهید آنها پاسخ چیزی غیر از A و B به آنها چیزی بیشتر می دهد نمادین معنی دار است. اما در این مورد، ما واقعا نمی مطمئن شوید هر چیز دیگری در مورد تابع. ما فقط می خواهیم به اضافه کردن دو عدد صحیح. بنابراین ما فقط پاسخ آن اعداد صحیح a و b. این یک نمونه است. چرا شما یک دوم در مورد این یکی فکر می کنم، چگونه می خواهید یک تابع اعلامیه برای یک تابع است که ضرب دو عدد با ممیز شناور؟ آیا شما به یاد داشته باشید آنچه که یک عدد ممیز شناور است. چه این تابع اعلامیه نگاه می کنید؟ من در واقع به شما توصیه می مکث ویدیو در اینجا و چه مقدار زمان شما نیاز دارید. در مورد چه فکر می کنم این اعلان تابع خواهد بود؟ نوع بازگشت چه خواهد بود؟ نام معنی دار چه خواهد بود؟ ورودی چه خواهد بود؟ پس چرا شما در ویدئو مکث در اینجا و نوشتن یک تعریف تابع برای یک تابع که ضرب دو اعداد ممیز شناور با هم. امیدوارم شما متوقف ویدئو. بنابراین اجازه دهید نگاهی به یک مثال یک اعلامیه امکان پذیر است. شناور MULT دو اعداد حقیقی شناور X، Y شناور. محصول دو اعداد اعشاری، که چگونه ما به یاد اعداد واقعی و یا اعداد را با مقادیر اعشاری در C، در حال رفتن به یک عدد ممیز شناور. وقتی که شما ضرب اعشاری توسط یک عدد اعشاری، شما احتمالا در حال رفتن به یک عدد اعشاری. شما می خواهید به آن یک نام مربوطه است. ضرب دو اعداد حقیقی خوب به نظر می رسد. اما شما واقعا می تواند آن را پاسخ MULT دو شناور، شناور خطوط و یا MULT. چیزی شبیه به آن، تا زمانی که آن را برخی از معنای واقعی به داد چه این جعبه سیاه بود به انجام. و دوباره، در این مورد، ما نمی به نظر می رسد هر گونه معنای متصل به نام متغیرهای ما در حال عبور در، بنابراین ما فقط آنها را x و y. حال اگر شما به آنها چیزی پاسخ دیگری، این کاملا خوب است. در واقع، اگر شما این بیانیه به جای با استفاده از دو برابر به جای از شناور، اگر شما به خاطر است که دو برابر یک مختلف راه دقیق تر مشخص اعداد حقیقی یا شناور متغیر نقطه. این کاملا خوب است. هم یکی از آن خواهد بود خوب. در واقع، چند وجود دارد ترکیب های مختلف از راه به اعلام این تابع. اما این دو خیلی خوب هستند. ما یک تابع اعلام کرد، این عالی است. ما در کامپایلر چه آن را گفته ام است، چه ما قصد داریم به انجام می شود. حالا اجازه دهید در واقع ارسال آن تابع. اجازه دهید آن را تعریف می دهد، به طوری که در داخل جعبه سیاه و سفید رفتار قابل پیش بینی اتفاق می افتد. در واقع، ما در حال ضرب دو واقعی اعداد با هم، و یا اعداد اضافه کردن با هم، و یا انجام هر چه که باشد که ما تابع ما را به انجام است. پس در واقع، اجازه دهید سعی کنید و تعریف ضرب دو اعداد حقیقی که ما فقط در مورد یک ثانیه قبل صحبت کردیم. در حال حاضر آغاز تعریف یک تابع به نظر می رسد تقریبا دقیقا همان به عنوان یک تعریف تابع. من هر دو آنها را در اینجا. در بالای اعلان تابع است، نوع، نام، کاما از هم جدا استدلال لیست، نقطه و ویرگول. نقطه و ویرگول نشان می دهد که که تعریف تابع است. آغاز تابع تعریف به نظر می رسد تقریبا دقیقا همان، نوع، نام، کاما از هم جدا لیست بحث، هیچ نقطه و ویرگول، باز کردن آکولاد. بند باز در اشکال مختلف، فقط به عنوان ما شده ایم انجام می دهند با اصلی، بدان معنی است که ما در حال حاضر شروع به تعریف چه در داخل جعبه سیاه و سفید اتفاق می افتد که ما تصمیم به پاسخ MULT دو اعداد حقیقی. در اینجا یک راه برای پیاده سازی آن است. ما می توانیم بگوییم، ما می تواند یک اعلام متغیر از نوع float نام کالا و اختصاص آن متغیر به بار مقدار x y است. و سپس بازگشت محصول می باشد. بازگشت به چه معنی است. بازگشت به خوبی در راه است ما نشان می دهد که چگونه ما در حال عبور از خروجی به خارج. بنابراین چیزی بازگشت، همان است، این خروجی از جعبه سیاه است. بنابراین این که چگونه شما آن را انجام. در اینجا راه دیگری برای پیاده سازی آن است. ما فقط می تواند بازگشت بار X Y. X شناور است. Y شناور است. بنابراین X بار Y هم یک شناور. ما حتی نمی نیاز به ایجاد متغیر دیگر میشود. به طوری که راه های مختلف به این پیاده سازی جعبه همان سیاه و سفید. در حال حاضر یک لحظه، دوباره مکث ویدیو، و سعی کنید و تعریف اضافه کردن دو نوع داده int، که تابع دیگر این است که ما یک لحظه پیش در مورد صحبت کردیم. دوباره در اینجا، من تابع قرار داده ام اعلامیه، و بنابراین نقطه و ویرگول، و آکولاد باز و یک در اشکال مختلف بسته بند به نشان می دهد که در آن ما را پر خواهد کرد در محتویات اضافه کردن دو نوع داده int، به طوری که به طور خاص تعریف می کنیم رفتار در داخل جعبه سیاه و سفید. که این ویدئو را قابل تامل است. و هم به همان اندازه شما باید سعی کنید و تعریف یک پیاده سازی از اضافه کردن دو نوع داده int، مانند که زمانی که تابع خروجی یک ارزش، آن را ندارد، در واقع، بازگشت از مجموع دو ورودی. بنابراین درست مثل مثال قبلی، چندین راه مختلف وجود دارد که شما می توانید پیاده سازی اضافه کردن دو نوع داده int. در اینجا یکی است. در اینجا به رنگ نارنجی من فقط به حال برخی از comments-- من فقط برخی از نظرات برای نشان آنچه اتفاق می افتد در هر خط از کد. بنابراین من یک متغیر نام مجموع از نوع int. من می گویم مجموع برابر یک به علاوه ب. تا جایی که ما در واقع انجام کار با اضافه کردن یک و b با هم. و من بازگشت مجموع. و که حس می کند به دلیل مجموع یک متغیر از نوع int است. و چه نوع داده هایی را که این تابع به من می گوید آن را به خروجی؟ نوع int است. بنابراین من از بازگشت مبلغ، که یک متغیر عدد صحیح است. و که حس می کند با توجه به آنچه که ما اعلام کرد و تعریف تابع ما انجام دادن. در حال حاضر شما همچنین می توانید تعریف عملکرد این راه، INT مجموع برابر یک به علاوه b-- جست و خیز که اولین step-- و سپس، مجموع بازگشت. در حال حاضر شما نیز می تواند آن را اجرا این راه، که من به شدت توصیه نمی. این سبک بد برای یکی است چیزی و طراحی واقعا بد است، اما آن را، در واقع، کار می کنند. اگر شما این کد، که از نوع int اضافه بد جمع کننده نقطه C، و استفاده از آن. آن را در واقع اضافه دو عدد صحیح با هم. این یک اجرای بسیار ضعیف است این رفتار خاص است. اما آن کار. آن را فقط در اینجا برای نشان دادن نقطه ای که ما واقعا نمی مراقبت از آنچه اتفاق می افتد در داخل جعبه سیاه، تا زمانی آن را به عنوان خروجی که ما انتظار داریم. این یک جعبه سیاه ضعیف طراحی شده است. اما در پایان روز، آن را خروجی هنوز هم با حاصل جمع یک به علاوه ب. خیلی خوب. بنابراین ما توابع اعلام کرده ام. و ما تابع تعریف است. به طوری که واقعا خوب است. حالا اجازه دهید شروع به استفاده از توابع که ما اعلام کرده ام و ما تعریف کرده ایم. برای تماس با یک تابع آن را در واقع بسیار easy-- همه شما باید انجام دهید است با تصویب آن استدلال مناسب، استدلال از نوع داده که از آن انتظار، و پس از بازگشت اختصاص ارزش آن تابع و بهانه ای this-- me-- اختصاص مقدار بازگشتی از آن تابع به چیزی از نوع صحیح. بنابراین اجازه دهید یک نگاهی به این در عمل در یک فایل به نام جمع کننده 1 نقطه C، که من در IDE CS50 من داشته باشد. بنابراین در اینجا جمع کننده 1 نقطه C است. در ابتدا شما ببینید من من شامل، پوند شامل، استاندارد IO، و CS50 نقطه ساعت. و پس از آن من اعلان تابع است. این جایی است که من گفتن کامپایلر من رفتن به نوشتن یک تابع به نام اضافه کردن دو نوع داده int. آن را به خروجی متغیر نوع عدد صحیح است. این چیزی است که این بخش این است در اینجا. و پس از آن من دو ورودی به آن و B، که هر کدام یک عدد صحیح است. داخل اصلی، من از کاربران برای ورودی با گفتن، من یک عدد صحیح است. و آنها را وادار به فراموش INT است، که یک تابع است که در کتابخانه CS50 گنجانده شده است. و می شود که در ذخیره شده X یک متغیر عدد صحیح است. سپس آنها را برای عدد صحیح دیگر را تحریک کند. ما را دریافت کنید عدد صحیح دیگر و ذخیره که در y. و پس از آن، در اینجا در خط 28، که در آن ما را فراخوانی تابع است. ما می گویند، برابر Z INT اضافه کردن 2 نوع داده int X Y کاما از هم. آیا به نظر شما چرا این را حس می کند؟ X یک متغیر از نوع عدد صحیح است و Y یک متغیر از نوع عدد صحیح است. به طوری که خوب. این را حس با تابع ما اعلامیه در خط 17 به نظر می رسد. با کاما از هم جدا لیست ورودی انتظار دو عدد صحیح a و b. در آن صورت، ما می توانید تماس بگیرید آنها هر آنچه ما می خواهیم. این فقط انتظار دو عدد صحیح. و X یک عدد صحیح است و y یک عدد صحیح است. که کار می کند. و ما می دانیم که تابع است که به خروجی اعداد صحیح است. و بنابراین ما در حال ذخیره سازی خروجی تابع، اضافه کردن دو نوع داده int، در یک نوع عدد صحیح متغیر، که ما خواستار Z است. و پس از آن می توان گفت، از مجموع درصد i و درصد من درصد است. به ترتیب X، Y و Z پر کردن در آن درصد من است. چه تعریف است اضافه کردن دو نوع داده int نگاه می کنید؟ این بسیار ساده است. این یکی از آنهایی که ما فقط دیدم یک لحظه پیش، مجموع INT برابر مبلغ به علاوه ب بازگشت. آیا این کار می کنه؟ بیایید فایل را ذخیره کنید. و سپس در اینجا در ترمینال من من قصد دارم به جمع کننده 1، و من روی صفحه نمایش من روشن است. من قصد دارم به زوم در زیرا من می دانم آن را کمی دشوار باشد. بنابراین ما این برنامه به عنوان جمع کننده 1 کامپایل. بنابراین ما می توانیم نقطه اسلش جمع کننده 1 انجام دهید. من یک عدد صحیح را، 10. من عدد صحیح دیگری به من بدهید، 20. مجموع 10 و 20 30 می باشد. بنابراین ما ساخته شده یک فراخوانی تابع موفق است. شما می توانید تابع را دوباره اجرا کنید، منفی 10، 17 مجموع منفی 10 و 17 7 است. این تابع کار می کند. از آن است که رفتار که ما آن را انتظار. و بنابراین ما موفق ساخته شده تابع، تعریف، اعلام، و یک فراخوانی تابع موفق است. دیگر زن و شوهر امتیاز مورد توابع قبل از ما نتیجه گیری این بخش است. به یاد بیاورید از ما بحث در مورد انواع داده ها، پیش از این، که توابع گاهی اوقات می تواند بدون ورودی است. اگر چنین است، ما اعلام تابع به عنوان داشتن یک لیست آرگومان اعتبار ساقط است. آیا شما به یاد چه ترین تابع مشترک ما تا کنون دیده ام که طول می کشد یک لیست آرگومان باطل است؟ این اصلی است. همچنین به یاد بیاورید که تابع گاهی اوقات در واقع یک خروجی نیست. در این صورت، ما تابع اعلام به عنوان داشتن یک نوع بازگشت اعتبار ساقط است. بیایید نتیجه این بخش را با مقابله با مشکل عمل. بنابراین در اینجا مشکل گذاشته است. من می خواهم شما را به ارسال یک تابع به نام مثلث معتبر است. چه این تابع باید انجام است را سه اعداد حقیقی که نشان دهنده طول سه اضلاع یک مثلث را به عنوان پارامترهای آن، و یا استدلال خود، و یا آن inputs-- یکی دیگر از مجموعه مترادف که شما ممکن است روبرو می شوند. این تابع باید هم خروجی درست یا غلط بسته به اینکه آیا آن سه طول قادر به ساخت یک مثلث. آیا شما به یاد داشته باشید که نوع داده ما استفاده می شود نشان می دهد درست است یا نادرست؟ در حال حاضر چگونه شما به این پیاده سازی؟ به خوبی می دانم یک زن و شوهر وجود دارد از قوانین مربوط به مثلث که در واقع به دانستن مفید است. مثلث فقط می توانید طرف با طول مثبت است. که حس می کند. شما احتمالا گفت، duh به. چیز دیگری که توجه داشته باشید هر چند، است که مجموع از طول هر دو ضلع از مثلث باید بیشتر از طول ضلع سوم. که در واقع درست است. شما می توانید یک مثلث از طرف 1 را نداشته باشند، 2 و 4، برای مثال، به دلیل 1 به علاوه 2 است بزرگتر از 4. بنابراین کسانی که قوانین این است که تعیین اینکه آیا یا نه سه ورودی امکان پذیر می تواند تشکیل یک مثلث. بنابراین یک چند دقیقه طول بکشد و اعلام و سپس تعریف این تابع به نام معتبر مثلث، به طوری که آن را در واقع است که رفتار مشخص شده در اینجا. این خروجی را درست اگر آن سه طرف قادر به شامل یک مثلث، و غیر این صورت false آماده به ببینید که چگونه شما را انجام داد؟ در اینجا یکی از پیاده سازی است مثلث معتبر است. این تنها یکی نیست. شما ممکن است کمی متفاوت باشد. اما این یکی، در واقع، رفتار که ما انتظار داریم. ما اعلام می کنیم تابع ما در بسیار بالا، مثلث معتبر ای bool شناور X Y شناور شناور Z است. پس دوباره، این تابع سه اعداد حقیقی طول می کشد به عنوان استدلال خود، شناور متغیرهای ارزش نقطه، و خروجی درست یا غلط ارزش است، که یک بولی، فراخوان. به همین دلیل نوع بازگشت بولی است. سپس تابع تعریف می کنیم. اولین چیزی که ما انجام بررسی کنید تا مطمئن شوید که همه از طرف مثبت هستند. اگر x کمتر یا مساوی است تا 0، و یا اگر Y برابر با 0 است، و یا اگر Z کمتر یا برابر با 0 است، که احتمالا نمی تواند یک مثلث. آنها دو طرف مثبت ندارد. و بنابراین ما می توانیم بازگشت نادرست در این وضعیت. بعد، ما را بررسی کنید تا مطمئن شوید که که هر جفت از ورودی بیشتر از یک سوم است. بنابراین اگر x به علاوه Y کمتر است از یا برابر با Z، و یا اگر x به علاوه z کمتر است از یا برابر با Y، و یا اگر Y به علاوه z کمتر از یا مساوی X، که همچنین می تواند یک مثلث معتبر نیست. بنابراین ما بازگشت کاذب است. با فرض اینکه ما هر دو از چک گذشت هر چند، پس ما می توانیم درست بازگشت. از آنجا که این سه طرف قادر به returning-- ایجاد یک مثلث معتبر است. و از آن است. شما هم اکنون می اعلام کرده ام و تعریف شده است. و شما ممکن است قادر به حال استفاده از این تابع پاسخ و. عالی بود. من داگ لوید هستم. این CS50 است.