[موسیقی] دیوید مالان: سلام به همگی. این supersection CS50 است. بخش اختصاص داده شده نیست شروع برای یک هفته دیگر. و بنابراین، امروز، من اینجا هستم with-- MARIA: ماریا. دیوید مالان: --to در واقع نگاهی به مشکل مجموعه ای از یک، البته در هفته اول از مواد، شما را با CS50 IDE گرا، کمی لینوکس، سیستم عامل که در حال اجرا در IDE، و همچنین در برخی از گذار نگاه از ابتدا به پیشرو C تا مجموعه ای مشکل است. بنابراین بدون ado بیشتر، در مجموعه ای مشکل است، شما در حال رفتن به معرفی به CS50 IDE، که این برنامه نویسی مبتنی بر وب است محیط زیست که ما به منظور استفاده برای نوشتن برنامه. این طراحی شده است به نگاه بسیار یادآور یک کامپیوتر معمولی سیستم عامل در حال اجرا سیستم به نام لینوکس است. اما آن را در ابر به اصطلاح است، که بدان معنی است که هر کس در کلاس در واقع می توانید خود را حساب کاربری خود و استفاده از آن، و همچنین. بنابراین بسیاری از شما احتمالا هرگز مورد استفاده قرار یک محیط لینوکس و یا شاید قبل از حتی یک محیط خط فرمان. و یک خط فرمان محیط های مختلف است. این همه متنی است. این همه دستورات صفحه کلید است. و آن را بدون تکاپو، هیچ آیکون است، هیچ پنجره گفتگو، هیچ منوها. این متن صرفا. بنابراین در ابتدا، آن هم از نوع از احساس می کند مانند یک گام به عقب در نظر از پیچیدگی است. اما پایان می رسد تا بسیاری قدرتمند تر است، قطعا، برای یک دانشمند کامپیوتر، در نهایت. بنابراین اجازه دهید نگاهی به. در اینجا من در CS50.io هستم، که از طریق آن شما می توانید به CS50 IDE وارد شوید. و بسیار شبیه در ابتدا، وجود دارد زمینه سه حوزه اصلی به این صفحه. بنابراین در سمت چپ، ما باید چه خواهد بود، مرورگر فایل. و این پوشه را در وجود دارد بالا، این است که در حال حاضر خالی از آنجایی که من از همه شر من فایل های قبل از supersection. و این که در آن ما ذخیره فایل های C که ما ارسال. در بالا سمت راست، ما یک محل که در آن همه از کد ما را به نوشته شده است. و در واقع، اگر این علاوه کلیک کنید، این در حال رفتن به من اجازه انتخاب کنید فایل جدید است. و در اینجا من می توانید شروع به نوشتن کد C و یا، واقعا، هر تعداد از زبان های دیگر. و پس از آن در پایین که در آن می گوید jharvard @ ide50-- و شما خواهد شد چیزی که کمی می گویند different-- این نامیده می شد؟ پنجره ترمینال. آره. بنابراین در پنجره ترمینال است به اصطلاح خط فرمان رابط که از طریق آن شما می توانید ارتباط برقرار با سیستم عامل. و در حال حاضر، ما قصد داریم به استفاده بسیار کمی از this-- فقط به کامپایل، به در نگاه کنید پیام های خطا که ما می بینیم، و برای اجرای برنامه های ما است. اما در نهایت، ما قصد داریم برای انجام این کار بسیار بیشتر، و همچنین. و شما حتی می توانید نصب نرم افزار و اداره فضای کاری خود را در CS50 IDE، و همچنین. اما بیشتر که برخی دیگر از زمان. بنابراین اجازه دهید پیش بروید و ارسال یک برنامه بسیار ساده است فقط از طریق یک گرم کردن به hello.c، که شاید ساده ترین برنامه ما می توانیم ارسال. من در حال حاضر باز کردن یک تب جدید. من قصد دارم به جلو بروید و می گویند شامل io.h. استاندارد پس از آن اعضای هیات اصلی (خالی). و پس از آن تابع () printf ("سلام جهان" بک اسلش نفر، نقل قول نزدیک، پرانتز بسته، و نقطه و ویرگول. خیلی خوب. بنابراین در حال حاضر متوجه پنجره من بدون عنوان است. بنابراین من به سرعت رفتن برای رفتن به بالا به فایل، ذخیره. و این مهم است که من این نیست "سلام." بنابراین یک اشتباه بسیار رایج، به خصوص در مشکل در تنظیم یک، است به طور تصادفی خود را فقط تماس بگیرید برنامه "آب" و یا "حریص" و یا "ماریو" و یا "اعتبار" و یا مانند. اما در واقع شما می خواهید را به مطمئن شوید که دارای پسوند فایل چرا که این تنها راهی است که است کامپایلر و ویرایشگر کد به می داند که شما در واقع نوشتن کد C. بنابراین اجازه دهید من به جلو و روی Save کلیک کنید. و در حال حاضر، بیش از حد، چه CS50 IDE برای ما انجام است آن را نیز نحو همه چیز مشخص شده است. پس از آن همه چیز بسیار رنگارنگ است. و کل هدف از که کاربردی نیست. آن را فقط به منظور جلب چشمان من رو به قطعات مفهومی مختلف این برنامه است. بنابراین اجازه دهید به جلو و تدوین این. و من می توانم این کامپایل در دو راه. و در هفته یک، راه قدیمی از مدرسه ما انجام داد آن را به معنای واقعی کلمه در بود دستور line-- "hello.c صدای جرنگ جرنگ." و پس از آن من ضربه وارد کنید. و هیچ چیز به نظر می رسد اتفاق می افتد در پنجره ترمینال. اما آنچه تغییر در IDE را انجام داد؟ که در آن، دوباره، IDE فقط بدان معناست محیط توسعه یکپارچه. این یک راه فانتزی گفتن است این توسعه یکپارچه محیط زیست برای توسعه نرم افزار. بنابراین آنچه که در UI تغییر داد؟ چه شما متوجه بود که متفاوت، ماریا؟ MARIA: من متوجه چیزی تحت IDE50 پوشه تا اینجا. دیوید مالان: آره. بنابراین تا اینجا، نه تنها ما باید "hello.c." ما همچنین "فایلهای دو دویی a.out" است که نوع یک نام گنگ یک برنامه است. اما در واقع، آن را به نام پیش فرض برای یک برنامه زمانی که شما فقط کد خود را کامپایل و کامپایلر نگو چه فایل به خروجی. بنابراین اگر من می خواهم برای اجرای این، من نیاز به compiler-- به یا نه، من نیاز به فضای کاری بگویم که من می خواهید برای اجرای برنامه ای به نام "فایلهای دو دویی a.out." داخل شدن. و وجود دارد "سلام، جهان است. "در حال حاضر" ./ ". است که در واقع مهم است. حتی اگر به طور معمول تنها ما ارسال نام از دستورات، هنگامی که آن را برنامه شما ام نوشته شده است، شما نمی خواهید به "./" چرا که به صراحت می گوید لینوکس که شما می خواهید برای اجرای یک برنامه به نام "فایلهای دو دویی a.out" که در این، که در آن نقطه معنی این دایرکتوری که من در حال حاضر هستم در، که اتفاق می افتد به نام فضای کاری، "فایلهای دو دویی a.out. چرا که اگر من فقط گفت: "فایلهای دو دویی a.out،" را وارد کنید، من قصد دارم به "فایلهای دو دویی a.out دستور نیست یافت "به دلیل computer-- چون من اختراع "فایلهای دو دویی a.out." آن را با computer-- آمده است نمی داند که در آن به آن نگاه کنید، حتی اگر آن را سمت راست زیر بینی من، پس به صحبت می کنند. باشه. بنابراین ما می تواند این تغییر شود "صدای جرنگ جرنگ -o سلام hello.c." و اگر من ضربه وارد کنید، چه برنامه آیا این خروجی برای من؟ نام فایل چیست؟ آره، در پشت. درست است. "درود." بنابراین "سلام" است برای رفتن به نام برنامه چرا که ما استفاده می شود به اصطلاح دستور آرگومان خط، است که فقط یک راه تغییر رفتار کامپایلر به واقع خروجی یک نام فایل خاص. و در واقع، اگر زوم من و نگاه کردن در اینجا، در حال حاضر من نه تنها "فایلهای دو دویی a.out" و "hello.c" بلکه "سلام" است. بنابراین در حال حاضر می توانم انجام دهم "./hello،" را وارد کنید. و وجود دارد "سلام جهان." اما lastly-- و این در حال حاضر این کنوانسیون می شود ما در سراسر استفاده ترم، typically-- شما همچنین می توانید فقط می گویند "را خوش آمدید." و در واقع، آن را گفت آن را تا به روز به دلیل آن در حال حاضر وجود دارد. اجازه بدهید به جلو و حذف، با دستور rm، هر دو "فایلهای دو دویی a.out" - و می گویند "حذف فایلهای دو دویی a.out فایل به طور منظم؟" فقط بدان معناست که، شما مطمئن شوید که شما می خواهید آن را حذف کنید؟ من قصد دارم به می گویند بله. و پس از آن من قصد دارم به حذف "سلام" اما نه "hello.c." من قصد دارم به گفتن "بله" به صراحت، اما "Y" کافی است، و همچنین. و در حال حاضر متوجه اگر من نوع ls-- که به یاد بیاورید، معنی list-- از آن تمام از فایل های پوشه من. و در واقع، اگر زوم من و در سمت چپ بالا نگاه کنید، آن را تایید می کند که چه چیزی در این پوشه، حتی هر چند آن را به عنوان IDE50 برچسب اینجا و نه فضای کاری، آن را فقط "hello.c است." بنابراین در حال حاضر در اینجا، اگر من انجام "را خوش آمدید،" را وارد کنید، در حال حاضر من یک فرمان بسیار طولانی را ببینید اما دستور پیچیده تر که رفتن در هفته های آینده مفید باشد. و در حال حاضر می توانم بگویم "./hello." بنابراین اجازه دهید یک تور سریع برخی لینوکس دستورات دیگر. پس چرا ما یک گام را تماس و در واقع در C نگاه کنید بیشتر به طور کلی، انتقال از ابتدا به C، و پس از آن با یک نگاه نتیجه در مشکل اول مجموعه ای در C. همه حق. بنابراین من قصد دارم به جلو بروید و فقط تمیز تا فضای کاری من با کنترل-L فقط نگه داشتن صفحه نمایش شسته و رفته. اما است که هیچ کاربردی در غیر این صورت اثر می گذارد. به یاد بیاورید که ما دیده ایم چند دستور در حال حاضر. بنابراین ما صدای جرنگ جرنگ دیده می شود، که به طور کلی شما نمی خواهد که برای اجرای دستی دیگر. به جای آن ما را استفاده کنید. اما ما همچنین شاهد LS، نشان می دهد که لیست از فایل ها در دایرکتوری من. و در حال حاضر به همین دلیل است there-- دو وجود دارد فایل های حال حاضر، "سلام" و "hello.c." چرا یک ستاره یا یک وجود دارد ستاره بعد از "سلام". چه که نشان، بر اساس در آنچه که ما در هفته اول را دیدم؟ شما چی فکر میکنید؟ ستاره چه دارد؟ MARIA: For-- برنامه "سلام". دیوید مالان: "سلام *". آره. اوه، آره؟ اوه، اجرایی. درست است. به طوری که بدان معنی است که "سلام" اجرا است. پس در واقع، به همین دلیل می توانم انجام دهم "./hello." خیلی خوب. پس چه چیز دیگری می توانم انجام دهم در اینجا؟ خب، معلوم است که من می توانم همچنین دایرکتوری ایجاد کنید. بنابراین اجازه دهید من به جلو و ایجاد، برای مثال، یک "pset1" دایرکتوری. و مجموعه ای مشکل مشخصات خواهد شد که شما دقیقا این، بنابراین شما لازم نیست که به یاد داشته باشید امروز. اما "pset1 mkdir به" به نظر می رسد به هیچ تاثیری. اما باز هم، بدون پیغام خطا به طور کلی چیز خوبی است. بنابراین اگر من از نوع "LS" now-- آه، در حال حاضر من یک فایل اجرایی به نام "سلام" یک فایل C به نام "hello.c." و پس از آن علامت، پس به صحبت می کنند، این بدان معنی است که یک دایرکتوری است. پس در واقع، در حال حاضر من می خواهم به آن را باز کنید. و من را دو برابر نکنید با کلیک بر روی آن در یک رابط کاربری گرافیکی، یک محیط گرافیکی. من به جای بگویید "pset1 سی دی." داخل شدن. هیچ چیز جالب به نظر می رسد اتفاق افتاده است به جز اعلان کوچک من here-- این راه لینوکس یادآوری است من جایی که من هستم، پس چه پوشه باز است. آن را فقط به من گفتن به صراحت به عنوان مخالف به صورت گرافیکی. و اگر من از نوع "LS،" چرا دیگری را ببینید من بی درنگ، بلافاصله، فکر می کنید، وقتی که من در لیست محتویات این pset1؟ MARIA: شما احتمالا نمی کنند هر چیزی در آن وجود دارد. دیوید مالان: آره. پس ما به وضوح ندارد هر چیزی را در وجود دارد ایجاد چون من فقط ایجاد دایرکتوری. در حال حاضر، اگر من می خواستم برای ایجاد یک file-- برای به عنوان مثال، من می توانم یک فایل جدید ایجاد کنید. و پس از آن من می توانم به ذخیره و ذخیره آن به عنوان، مانند، "mario.c" اگر شما در حال انجام نسخه استاندارد از pset است. و پس از آن، مانند هر مک و یا کامپیوتر، فقط را انتخاب کنید پوشه "pset1، ذخیره. و در حال حاضر فایل خالی است. اما اجازه دهید زوم در دوباره برای یک ثانیه. بیایید LS اینجا انجام دهید. در حال حاضر ما "mario.c" را ببینید. بنابراین چند فرمان دیگر وجود دارد که ارزش نگه داشتن در ذهن بیش از time-- هستند روشن، و یا کنترل-L است آنچه من هدف قرار دادن بوده است. mkdir به ما دیده ایم؛ RM ما دیده ایم، و همچنین است که برای از بین بردن و یا حذف یک فایل. مراقب باشید شما می توانید also-- و اگر شما نگاه کنید در آموزش آنلاین، شما RM -rf یک راه بسیار شایع است گفت یک پوشه است که مسائل را در آن را حذف کنید. فقط فوق العاده، فوق العاده مراقب باشید. -rf معنی به صورت بازگشتی حذف هر آنچه در آن است شما در حال تلاش برای حذف و به زور آن را حذف کنید. بنابراین بازگشتی معنی است که اگر این یک پوشه است با یک پوشه با یک پوشه با یک پوشه، حذف همه آنها. و به زور به معنای حتی نمی از من بپرسید آری یا نه، من مطمئن هستم؟ پس از آن یک راه فوق العاده خطرناک است حذف بسیاری از مسائل به سرعت. اما beware-- اغلب می کند بی باک دانش آموز به طور تصادفی حذف، می گویند، pset یکی، به عنوان مثال. MARIA: و اگر آنها فقط انجام -R، آنها در حال رفتن به آنها در مورد هر فایل تنها بپرسید. دیوید مالان: کدام است متوسط ​​آزار دهنده است. MARIA: آره. دیوید مالان: به همین دلیل بسیاری از ما، خود شامل، در عادت با استفاده از -rf هستم. اما این خطرناک است. به طوری که خریدار برحذر باشید. و پس از آن MV نوع جالب توجه است نام برد. بنابراین این دستور حرکت است، که احساس می کند کمی عجیب و غریب چون شما در واقع می توانید از آن استفاده کنید به انتقال فایل از یک مکان به مکان دیگر. به عنوان مثال، فرض کنید که من را خراب کرد. فرض کنید که من ایجاد یک فایل جدید برای pset. و من آن را به عنوان ذخیره "greedy.c." اما فرض کنید من به طور تصادفی آن را ذخیره کنید در IDE50-- به طوری که در فضای کاری من خود را و نه در pset1. شما می توانید به همان اندازه در بالا سمت چپ را ببینید. است "greedy.c." وجود دارد و چند راه حل وجود دارد. بنابراین یکی، من می توانم استفاده راه کاربر پسند فوق العاده از تنها با کشیدن و رها کردن آن. و لازم است که در واقع رفع این مشکل. اما امروز، ما در حال تلاش برای نگاه راه های محرمانه تر اما قدرتمند برای انجام این کار. بنابراین اجازه دهید من را "LS" در pset1. و من فقط "mario.c." ببینید اجازه بدهید به جلو و انجام "سی دی ..". بنابراین CD دوباره تغییر دایرکتوری است. ".." یعنی چه، هر چند؟ آخرین باری که من گفت: "سی دی pset1 "برای رفتن به pset1. بنابراین، هنگامی که من می گویم "سی دی .."، چه هستم من انجام می دهند؟ به عقب. آره. بنابراین آن را به پدر و مادر به اصطلاح. به یک سطح بالاتر، مانند خروج از یک پوشه. بنابراین وارد کنید. و در واقع، به دنبال چه آن را انجام داد. آن را به من فقط به فضای کاری به جای نقل مکان کرد از به pset1، است که در فضای کاری. و حالا اگر من از نوع "LS"، یک دسته از مسائل وجود دارد. در "greedy.c" وجود دارد. بنابراین در حال حاضر من استفاده از mv به معنای واقعی کلمه حرکت "greedy.c" را به pset1. و به این ترتیب بسیاری از دستورات لینوکس کار دقیقا مثل این. آنها هیچ استدلال و یا آنها را یکی استدلال یا آنها را دو خط فرمان استدلال و غیره. و در این مورد، آن را به معنای واقعی کلمه انجام آنچه آن را می گوید، البته succinctly-- حرکت greedy.c به pset1. داخل شدن. هیچ چیز به نظر می رسد اتفاق می افتد. اما اگر من یک LS دوباره، حریص رفته است. و اگر من "pset1 سی دی"، را وارد کنید، و سپس LS دوباره، در حال حاضر آن را در جای مناسب است. از سوی دیگر، اگر برای برخی reason-- ویژه اگر شما متناوب اتصال به شبکه یا شما در سراسر راه رفتن دانشگاه با درب لپ تاپ خود را بسته و سپس آن را باز کنید دوباره و فضای کاری خود را به نظر می رسد تا حدودی خارج از سنکرون، هیچ معامله بزرگ. فقط مرورگر خود را دوباره بارگذاری پنجره، و آن را باید را resync به طوری که سمت چپ مرورگر فایل نظر می رسد دقیقا مانند پنجره ترمینال. نگران نباشید. زمانی که در شک، بارگذاری مجدد صفحه، بنابراین زمانی که شما فایل های از قبل ذخیره شده است. باشه. بنابراین MV نیز می توانید استفاده برای تغییر نام فایل. و اجازه دهید یک نگاه این دستور نهایی در اینجا. بنابراین suppose-- و این است که فوق العاده مشترک، بیش از حد، در اوایل. برخی از دانش آموزان گاهی اوقات یک فایل ایجاد نامیده می شود، اجازه دهید می گویند آنچه یک خبر؟ مانند "WATER.C." بنابراین من فقط داد، برای بدون هیچ دلیل، در همه کلاه. اما آیا این نام صحیح برای فایل اگر فقط به این دلیل مشکل ما مجموعه مشخصات شما نگفتم فایل را تحت عنوان همه کلاه برای نجات "WATER.C." در عوض، ما انتظار داریم "water.c" در کوچک. و، در واقع، این است به دلیل check50 مشکل ساز، برنامه شما در حال رفتن برای دیدار در مشکل مجموعه ای از یک آزمون که به صورت خودکار صحت کد خود را در حال رفتن به فریاد زدن در شما اگر آن را نمی تواند پیدا کردن "water.c" در تمام حروف کوچک. بنابراین من نیاز به رفع این. بنابراین بسیاری از راه های مختلف به انجام این کار، اولین بار است که می شود به کنترل کلیک کنید و یا راست کلیک نام فایل و فقط تغییر نام را تغییر دهید. کاملا خوب به انجام این کار. اما باز هم، امروز، اجازه دهید آن را انجام کمی خیال باف. بیایید استفاده از mv به تغییر "WATER.C" را به "water.c." بنابراین شما می توانید اولین آرگومان استفاده برای تغییر نام آن به استدلال دوم اگر آرگومان دوم در نیست، واقع، پوشه و یا یک نام پوشه. خیلی خوب. و در آخر، یک trick-- کمی من هستم دایرکتوری فضای کاری من در حال حاضر. اگر من می خواهم به pset یک، من مطمئنا می تواند از نوع "pset1 سی دی." اما آن را بسیار خسته کننده به نوع "pset1" یا دیگر نام فایل و یا نام دایرکتوری هنوز. بنابراین اغلب در لینوکس، چه شما می توانید انجام دهید این است شروع به تایپ "PSE" و فقط حوصله، ضربه نوار، و اجازه دهید شکل کامپیوتر آن را برای شما. فوق العاده مفید به آن عادت کنید. تنها نکته این است که اگر شما چند فایل و یا پوشه ها شروع با حرف "P" یا "PS،" شما ممکن است به تایپ چند بیشتر قبل از کامپیوتر می داند چه باید بکنید. MARIA: ما دوست داریم کلید های میانبر. دیوید مالان: این زمان زیادی را ذخیره کنید. و همچنین، به عنوان ما در سخنرانی گفت، شما می توانید در تاریخ حرکت به بالا، بالا و پایین، پیدا اخیرا اعدام دستورات، و همچنین. خیلی خوب. بنابراین در حال حاضر، اجازه دهید توجه خود را به عقب به یک برنامه ساده، سلام جهان. بنابراین ما این دقیقا وارد کرده اید. و در حال حاضر چرا ما را نگاهی به انواع داده و سپس از انتقال بلوک های مربوطه خراش به C. MARIA: بسیار معروف است. پس اکنون که شما شروع به نوشتن برنامه در C، ما قصد داریم به شروع به صحبت کردن در مورد انواع داده ها و متغیرها. بنابراین برخی از انواع داده که شما می خواهند بدانند که در حال حاضر شروع آنهایی که هستند رنگ آبی مشخص شده. بنابراین ما باید از نوع int اول، که مخفف عدد صحیح است. و که اعداد صحیح را نگه می دارد، به شما به عنوان ممکن است guessed-- بنابراین 1، 2، 3، و هر عدد صحیح دیگر که شما می توانید از فکر می کنم. دیوید مالان: و همچنین منفی است. MARIA: و همچنین آنهایی که منفی، بله. و 0. پس ما باید شناور، که شناور اعداد نقطه. به طوری که تمام اعداد حقیقی است زیاد که نقطه اعشار. بنابراین 5.0، 5.2، و حتی بیشتر رقم بعد از نقطه اعشار دارند، و همچنین، و همچنین آنهایی که منفی است. پس ما باید کاراکتر است که یک شخصیت. بنابراین من فکر می کنم ما در مورد صحبت این در سخنرانی امروز. اما ما باید حروف، برای example-- A، B، C-- است که می تواند به عنوان یک کاراکتر ذخیره می شود. اما پس از آن ما باید علامت خیلی بیشتر است که می تواند به عنوان یک کاراکتر ذخیره می شود. و کسانی که به عنوان ASCII ذخیره می شود. و بعد ما بولی، که Booleans می باشد. و کسانی که ارزیابی درست یا نادرست یا 1 و 0 بود. دیوید مالان: به یاد بیاورید که بولی می آید از کتابخانه CS50. پس از آن ساخته شده است به C، اما آن را فوق العاده مفید به مفهوم درست و نادرست. و حتی اگر شما ممکن است واقع سرگرم کننده فکر می. بولی از لحاظ فنی نیاز چگونه بسیاری از بیت، واقعا، به نمایندگی واقعی در مقابل کاذب؟ چگونه بسیاری از بیت شما فکر می کنم شما می توانید نیاز، حداکثر؟ آره، فقط یکی. پس از آن معلوم است که C نمی توانم به شما فقط یک بیت را. کوچکترین واحد اندازه گیری شما می توانید هشت است. پس از آن بی فایده کمی آنها شما با استفاده از یک بایت کل، یا هشت بیت، برای نشان درست یا غلط. اما این تنها راه آن است در C توسط کتابخانه CS50 اجرا شده است. MARIA: و سپس آنهایی است که ما قصد ندارم در مورد به عنوان گسترده صحبت حق now-- دو، که برای شناور بزرگتر است. طولانی مدت و کوتاه مدت همچنین برای اعداد صحیح هستند. دیوید مالان: در واقع. در نسخه هکر یکی از pset، ما در واقع استفاده طولانی مدت. اما برای نسخه استاندارد، آن را نمی باید لازم باشد. MARIA: داغ. باشه. بنابراین شما باید operators-- احتمالا آشنا با بسیاری از این. علاوه بر این، +. تفریق، -. برای ضرب، ما باید *. بنابراین نمی X است که ما معمولا استفاده کنید. بخش، ما باید از بک اسلش. و پیمانه آخرین اپراتور ما این است که ما می رویم به مورد در حال حاضر صحبت کنید. این اپراتور که ما اجازه می دهد به این را باقی مانده از یک بخش. بنابراین اگر ما 4٪ 2، 4 تقسیم 2 2 است و باقی مانده 0. بنابراین 4٪ 2 0 است. 4٪ 3 1 است. 4٪ 5 است 4، به عنوان شما بتواند حدس بزند. به یاد داشته باشید و در هنگام استفاده از همه از این اپراتورهای به استفاده از قواعد PEMDAS. DAVID مالان: پس به روشن، اگر شما انجام 4٪ 2، به همین دلیل است که 0، دقیقا؟ MARIA: از آنجا که تقسیم بر 4 2 2 با باقی مانده از 0 است. بنابراین پیمانه به ما می دهد که باقی مانده به عنوان مخالفت با نتیجه بخش. دیوید مالان: و در واقع، آنچه ما می خواهیم پیدا کردن این مفید برای این است که در برخی از مشکلات که لزوما یکی نیست، اگر شما می خواهید به اثر محدود خود به یک محدوده از اعداد مانند 0 از طریق چیزی، شما می توانید به پیمانه به بسته بندی کردن در اطراف استفاده کنید زودتر از 2 میلیارد مانند یا 4 میلیارد ارزش است که ما در مورد در سخنرانی صحبت کردیم. MARIA: آره. و حتی در "حریص" ما ممکن است. دیوید مالان: بله، در مشکل در تنظیم یک، و همچنین. MARIA: آره، خوب است. دیوید مالان: اشاره خوب. MARIA: با عرض پوزش. بولی expressions-- تا برای عملگرهای بولی، ما می رویم به بحث در مورد همه از این که شما اینجا را ببینید. بنابراین در حال حاضر، ما باید دو نشانه های برابر برای برابر ذکر شده است. بنابراین کسانی که برای مقایسه هستند. تا کنون، ما تنها دیده می شود یکی علامت مساوی. این زمانی است که ما اختصاص یک مقدار به یک متغیر. بنابراین اگر ما دیده ایم INT N = 5، پس از آن ما 5 اختصاص داده ام به N متغیر است. اما اگر ما مایل به استفاده از == برای مقایسه، ما می توانیم اگر n == 5 را بررسی کنید. و اگر n == 5، پس از آن که درست است. اپراتورهای بولی بنابراین ما اجازه می دهد، در واقع، برای ارزیابی بولی عبارت به درست یا غلط. بنابراین equals-- نیست ما علامت تعجب و برابر است. بنابراین ما نیز می تواند اگر n را بررسی کنید برابر نیست 5-- تا N! = 5. کمتر از، کمتر از یا مساوی باشد، بزرگتر از، بزرگتر یا مساوی، و پس از آن ما باید منطقی و و منطقی OR. و کسانی که به ما اجازه ارزیابی چند عبارت را هم بولی اساسا با هم به عنوان آمده یک عبارت بولی طیف. بنابراین اگر ما می خواهیم به پیدا کردن یک شماره، می گویند، که بیشتر از 5 اما کمتر از 15 است در همان زمان، ما را با استفاده از منطقی و اپراتور برای دیدن اگر n است بیشتر از 5 && N کمتر از 15. دیوید مالان: و در اینجا، بیش از حد، آن را واقعا آسان در اوایل به طور تصادفی استفاده از فقط یک علامت تک و یا یک نوار عمودی. و امیدوارم کامپایلر فریاد زدن در شما چرا که در واقع یک معنی بسیار متفاوت است. برای کسانی که کنجکاو، آنها مورد استفاده برای عملیات بیتی، عامل بر روی بیت های فردی. اما شما نمی خواهید جفت از آنها را در اینجا. و فوق العاده مهم است که یکی از اولین، از علامت مساوی، است که عملگر به عنوان مخالف عملگر انتساب. MARIA: و نوار عمودی است واقع بین Delete و بازگشت. دیوید مالان: بله. بر روی صفحه کلید معمولی است. MARIA: بله. بنابراین اجازه دهید پرش به سمت راست عبارات شرطی. در ابتدا، شما در حال حاضر دیده، احتمالا، اگر اظهارات که به شما اجازه چک کنید اگر چیزی درست باشد، پس کار دیگری انجام دهید. بنابراین شما ممکن است می خواستم برای بررسی اگر جن خود را است دست زدن به برخی از جن دیگر و یا مرز از صفحه نمایش خود را. و سپس شما ممکن است می خواستم به پایان دادن به بازی و یا کار دیگری انجام دهید. بنابراین نحو که است "اگر (شرط)." بنابراین اگر جن خود را است دست زدن به چیزی، پس از آن انجام شده است در داخل آکولاد. پس ما باید IF-دیگری اظهارات. دیگری اجازه می دهد تا ما را به انجام کاری اگر شرط که ما در آغاز بررسی درست نیست. بنابراین اگر جن است از دست زدن به مرز این کار، دیگری کار دیگری انجام دهید. بنابراین در غیر این صورت کار دیگری انجام دهید. سپس ما یک مثال کوتاه برای این. بنابراین اگر (military_time <12)، ما می خواهم به تابع () printf "صبح به خیر!" دیگری که ما در حال رفتن به تابع () printf "شب بخیر!" به عنوان مثال عمومی. دیوید مالان: خوب. MARIA: داغ. بنابراین در حال حاضر ما باید دستور switch. سوئیچ اظهارات طور کلی می تواند به ما اجازه انجام بسیاری از همان چیزی که که ما فقط صحبت در مورد با دستور if. به عنوان مثال، در حال حاضر ما باید شکل کلی دستور switch که اجازه می دهد ما را به یک متغیر به نام N و مقایسه آن را به بسیاری از ارزش های مختلف، که ما در اینجا constant1، constant2 نامیده اند. ما ممکن است خیلی بیشتر است. و کسانی که به موارد گفته می شود. بنابراین اگر ما یک سوئیچ statement-- و این کار فقط برای integers-- ما یک متغیر در این مورد که N. اگر N متغیر است برابر با constant1، ما برخی از قطعه از کد را اجرا یا چیزی است که ما می خواهیم انجام. و سپس ما را بشکند. بنابراین استراحت بدان معنی است که دستور switch اجرای متوقف خواهد شد اگر N برابر constant1 است، و سپس برنامه خود را ادامه خواهد داد. این از خروج خواهد کرد سوئیچ بیانیه و آن را به در ادامه به انجام کاری دیگر. اگر با این حال، N برابر نیست constant1، پس از آن مورد constant2 بررسی می شود. بنابراین اگر N برابر constant2، که دیگر قطعه از کد را اجرا خواهد شد. و سپس آن را شکستن در صورتی که به آن برابر است. و پس از آن ما می توانیم also-- نیست لزوما، though-- یک مورد به طور پیش فرض، که اتفاق خواهد افتاد اگر n برابر نیست هر یک از موارد که شما ذکر شده است. و در مورد به طور پیش فرض، ما نیز انجام یک استراحت لزوما نیاز چون دستور switch می دانید که به آن نیاز پس از به طور پیش فرض برای پایان دادن به مورد اگر چنین است. دیوید مالان: اما سبک نگارش، ما همیشه در آن وجود دارد قرار داده است. MARIA: آره. دیوید مالان: آره. بنابراین به ویژه هنگامی که با شروع کردن، به خصوص اگر در میان کسانی که کمتر راحت، من شخصا فقط توصیه با IFS چوب و IFS میکنم و اگر دیگری، اگر-میکنم و غیره اگر فقط چرا که آنها یک کمی هستید راست تر است. این بهینه سازی خوب است، و یا حتی گاهی اوقات آن را زیبا و باعث می شود کد قابل خواندن است. و در واقع، احتمالا اواسط ترم ما یک مشکل مجموعه که در آن فقط به نظر می رسد بهتر و راحت تر به برای انسان به عنوان خوانده شده با استفاده از دستور switch. اما نگران نباشید در مورد چسبیده به این خیلی زود است. MARIA: آره. اگر شما یک مقدار زیادی از دستور if، آن را فقط ممکن نمی شود بسیار قابل خواندن است. این ممکن است بسیار سریع را برای شما به طریق آن بروید. بنابراین دستور switch می توانید تواند بسیار مفید باشد، و همچنین. و همچنین، remember-- انجام نمی فراموش نکنید که به قرار دادن معافیت در آن وجود دارد. دیوید مالان: آیا این یاد داشته باشید. MARIA: از آنجا که پس شما ممکن است سقوط از طریق از یک مورد را به دیگری. بنابراین اجازه دهید بگویم که مورد constant1 یک دستور break در آن را ندارد. پس ما ممکن است از طریق سقوط constant2 مورد در داخل. و ما نمی خواهیم به انجام این کار اگر ما در حال حاضر مورد constant1 رسیده و آن را به n برابر است. بنابراین، برای مثال، اگر ما یک متغیر N است که شامل یک تعداد کلاس، و ما می خواهیم برای دیدن آنچه که کلاس is-- اگر n برابر 50، ما در حال رفتن به چاپ "CS50 است مقدمه ای بر علوم کامپیوتر I. " سپس ما قصد داریم برای شکستن. و از آن است. اگر با این حال، N برابر است به 51، ما قصد داریم به چاپ "CS51 مقدمه است برای علم کامپیوتر II. " سپس، دوباره، ما در حال رفتن برای شکستن. با این حال، اگر پس از آن ما را 124، 61، هر تعداد دیگری که شما ممکن است فکر می کنم، و یا برنامه است که نمی به رسمیت شناختن است. بنابراین آن را می گویند، "با عرض پوزش، من آشنا با آن کلاس است. " و آن را برای شکستن. دیوید مالان: پس شما واقعا می توانید ببینید اگر، اگر دیگری، ایده دیگری در اینجا. این نحو فقط برای این مختلف بیان ایده یکسان است. MARIA: دقیقا. در حال حاضر ما سه تایی اپراتورهای ما است. اپراتورهای بنابراین سه تایی دارند سه parts-- یک بیماری، اگر چیزی برای انجام که شرط درست باشد، و پس از آن به چیزی برای انجام در صورتی که شرط نادرست است. بنابراین می بینید، در واقع، نحو که در اینجا. ما علامت سوال، و پس از آن the-- چه چیزی ما این پاسخ؟ دیوید مالان: روده بزرگ است. MARIA: روده بزرگ. تشکر. متاسف. بنابراین اجازه دهید در مثال ما به نگاه ببینید اگر ما می تواند حس this-- را class_num == 50. بنابراین در اینجا ما را ببینید عملگر بولی ما == که class_num متغیر مقایسه تا 50. فروشگاه ها تا class_num یک عدد صحیح. و در صورتی که عدد صحیح برابر 50، پس از آن ما رفتن به ذخیره "دیوید مالان" در داخل استاد رشته. اگر تعداد کلاس نیست برابر 50، "نه دیوید مالان" در حال رفتن به استاد. دیوید مالان: با تشکر از شما. و این به نظر می رسد معادل چه، به شما می گویند، در نگاه اول؟ MARIA: به نظر من به نظر می رسد اگر-دیگری اظهارات. دیوید مالان: آره. و در واقع، این نوع از خیلی بوش، پس به صحبت، برای اجرای دقیقا منطق IF-دیگری اما انجام همه چیز را در یک مرحله. MARIA: دقیقا. آره. اظهارات بنابراین اگر چیز دیگری ممکن است، را تا مقدار زیادی از فضا. آنها ممکن است بیش از حد طولانی برای چیزی به عنوان ساده به عنوان این. بنابراین این می تواند بسیار مختصر و بسیار خوب است. بنابراین در حال حاضر ما در حال رفتن به دنبال اجرای چیزی دوباره و دوباره، بنابراین چک کردن برای شرایط چندین بار و سپس در ادامه به انجام کاری در حالی که شرط درست باشد. بنابراین این به ما به ارمغان می آورد به سادگی به حلقه در حالی که. به سمت چپ، ما باید اولین حلقه در حالی که ما. بنابراین در حالی که چیزی درست است، انجام کاری دوباره و دوباره. بنابراین مطمئن شوید که به اطلاع که ما شرایط در اینجا است که در بالای تایید شده است. در حالی که با loop-- دوم ما تماس بگیرید که آیا در حالی که loop-- ما چیزی، پس از آن ما برای یک بیماری تیک بزنید. و در صورتی که شرایط ادامه درست باشد، ما به عقب برویم و انجام کار است. بنابراین تفاوت اصلی این است که در آن شرایط برای بررسی می شود. و کد هرگز ممکن است اعدام در صورتی که شرط نیست درست است با حلقه while. در حالی که با انجام دهند در حالی حلقه، ما باید کد است که همیشه حداقل یک بار اجرا می شود. و پس از آن در حالی که شرایط ادامه درست باشد، ما می توانید بروید و دوباره تکرار در داخل. پس چرا شما فکر می کنم ما استفاده و ویژگی در حالی که حلقه حلقه در حالی که بیش از یک؟ درست. بنابراین اگر ما می خواهیم به اعلان کاربران برای نوعی از ورودی، اگر ما می خواهیم به آنها را بپرسید نام خود را وارد کنید، ما می خواهیم به حداقل یک بار آنها را بپرسید. و اگر آنها را وارد کنید این نام، به ما نیست رفتن به آنها را بپرسید دوباره چرا که ما در حال حاضر آن را می دانم. اما اگر آنها را وارد کنید نام خود را، و یا اگر آنها چیزی است که وارد بدیهی است که نه یک نام، ما هنوز هم می خواهید به ادامه درخواست از آنها در برای نام خود را. دیوید مالان: و در سخنرانی ما یکی بود مثل این با دریافت اعضای هیات مثبت به عنوان مثال، که در آن هیچ چیز به وجود در ابتدا بررسی کنید، زیرا شما حتی ندارد بدست یک int است. بنابراین ما می خواهیم انجام this-- گرفتن یک int از user-- سپس آن را بررسی کنید، شاید، دوباره و دوباره و دوباره. MARIA: دقیقا. برای OK loops--. برای حلقه می توانید به ما اجازه انجام تقریبا همان چیزی که دقیق، و همچنین. این در واقع همان چیزی دقیق. بنابراین هیچ چیز وجود دارد که شما می توانید با حلقه انجام که شما قادر نخواهد بود برای انجام با حلقه در حالی که. اما برای حلقه ممکن است کمی به نظر می رسد کمی پیچیده تر از لحاظ دستوری زیرا آنها سه بخش در داخل چه قبل از فقط بود شرایط با حلقه در حالی که. بنابراین بخش اول که شما دریا، سمت چپ ترین، ما "INT دورف = 0." پس این است که که در آن ما مقداردهی اولیه متغیر است. پس ما باید یک نقطه و ویرگول و "دورف <7." پس این است که خارج شرایط واقع است. بنابراین این چیزی است که ما باید قرار داده است فقط در حالی که loop-- "در حالی که دورف <7." در اینجا، که می رود در وسط برای حلقه ما. بنابراین "dwaves <7." و سپس آخرین بخش ما "دورف ++،" است که جایی است که ما متغیر ما به روز رسانی. بنابراین نکته مهم برای تحقق بخشیدن به این است که این در حال رفتن به از طریق این حلقه for هفت بار و اجرای هفت بار. بنابراین ما باید هفت دورف، و آنها همه رفتن به می گویند، "من اینجا هستم برای کمک به شما، سفید برفی " چرا که آنها آماده هستند برای کمک به سفید برفی. با در حالی که حلقه ها، ما را انجام داده اند مقدار دهی اولیه و به روز رسانی نه در داخل شرایط، دوباره، اما قبل یا در داخل حلقه در حالی که مطمئن شوید که به دلیل we-- ما همیشه نیاز به آن قسمت. بنابراین مطمئن شوید که ما آنها، ما هنوز هم آنها را اضافه کرده ام در، نه تنها در داخل پرانتز. دیوید مالان: و پس از آن به نظر می رسد like-- در سخنرانی، به عنوان مثال، من تقریبا همیشه استفاده کنید، مانند، من و n و متغیر بسیار خسته کننده است. به نظر می رسد شما می توانید بیشتر استفاده کنید هوشمندانه متغیرهای نام، TOO. MARIA: آره، آن را در واقع بسیار خوب استفاده از متغیرهای توصیفی کمی بیشتر چون به خصوص اگر شخص دیگری است خواندن code-- خود را شاید شما حرفه ای و یا اگر شما در حال همکاری با somebody-- شما می خواهید مطمئن شوید که آنها درک آنچه شما انجام می دهند. باشه. بنابراین این چیزی بسیار funky-- است برای حلقه در داخل یک حلقه for. من نمی دانم اگر ما قبل از این دیده می شود. احتمالا نه. اما ما در واقع می تواند this-- دارند بنابراین حلقه به جای حلقه. بنابراین هر کسی می خواهم به راه رفتن شاید من از طریق آنچه که در اینجا؟ دیوید مالان: من یک چاقو است. MARIA: داغ. دیوید مالان: OK. بنابراین، spoiler-- ما می خواهیم به چاپ چیزهای که در گوشه سمت راست پایین آنجا. MARIA: درست است. آره آره. فقط بنابراین ما به: دیوید مالان قرار داده است که خروجی نمونه وجود دارد. بنابراین من می تواند از پی بردن به بالاترین حلقه که شما تکرار بیش از ردیف حلقه خارجی ترین، پس به صحبت می کنند. و شما در حال تکرار بیش ستون ها با حلقه درونی. و به طور مستقیم، این باید امیدوارم را حس می کند چرا که با ماهیت هر برنامه ما دیده ایم قبل از آن، تابع () printf است، که عملکرد ما با استفاده از، در نهایت، است که توانایی چاپ چیزهای خارج اساسا خط به خط. مانند، هنگامی که شما به خروجی یک خط جدید، وجود دارد هیچ دو برابر تماس و چاپ چیزی در روی صفحه نمایش بالاتر، حداقل با استفاده از printf مثل این نیست. و به این ترتیب در این رابطه، آن را می سازد معنا که خارجی ترین حلقه باید اشاره به ردیف چرا که برای هر سطر داده می شود، شما در حال رفتن به می خواهم به نسخه قابل چاپ کردن XXXXX، و سپس حرکت به سطر بعد، XXXXX. بنابراین ردیف اول است. و پس از آن در هر ردیف، شما نسخه قابل چاپ ستون. اگر شما سعی کردم به آن انجام مخالف، آن را احتمالا نمی بیرون آمدن به عنوان شما قصد. MARIA: آره. ما نه تنها می تواند بازگشت به سطر قبلی با printf است. دیوید مالان: و چه جالب در گفتگوی امروز در مورد دامنه، در واقع، این است که ردیف از نوع int است که در بالاترین حلقه اعلام کرد. اما توجه کنید که آن است که هنوز داخل، پس به صحبت می کنند، آکولاد که بلافاصله به دنبال، حتی اگر آن را از لحاظ فنی نیست در آن آکولاد. بنابراین ردیف در دامنه است برای تمامیت قطعه از کد، هر دو در داخل بیرونی حلقه for و داخل حلقه for متغیر. اما در مقابل، که در آن ستون در دامنه است؟ ستون متغیر؟ آره، تنها در حلقه در داخل. و این خوب است چون ما دسترسی پیدا کنید آن را در خارج از آکولاد آن است. همه ما به چاپ است از جدید خط در پایان بسیار وجود دارد. به طوری که در واقع خوب است. بنابراین این اثر، آن را مانند به نظر می رسد، انجام سه ردیف و چهار ستون. MARIA: درست است. بنابراین برای اولین بار ما را از طریق ردیف اول ما بروید. و فقط در سطر اول ما، ما انجام چهار ستون در داخل سطر اول. بنابراین ما از چاپ چهار X است. و پس از آن ما می توانیم برای خروج از حلقه، از ما در حال حاضر چاپ چهار X است. و ما چاپ یک خط جدید. و سپس ما را از طریق رفتن همین روند برای دو ردیف بیشتر تا در مجموع از سه. دیوید مالان: و آن را شایان ذکر آن فقط مصنوع از فونت، این واقعیت که خروجی نمونه به نظر می رسد بسیار بلندتر، به عنوان اینکه بیشتر وجود دارد ردیف از ستون است. اما آن را فقط به این دلیل که X بلندتر از آن گسترده است. این همه که اتفاق می افتد وجود دارد، به علاوه فضای سفید بین خطوط. MARIA: درست است. خنک. دیوید مالان: بسیار خوب. بنابراین یک نگاه سریع در مجموعه ای مشکل است، را هر گونه سوال، و پس از آن موکول؟ خیلی خوب. بنابراین در مجموعه ای مشکل یکی، سه وجود دارد چالش های اولیه، در نهایت. اما در ابتدا، شما را پیدا که مجموعه ای مشکل مشخصات، به عنوان با بسیاری از psets این سقوط، است که به شما راه رفتن از طریق چند تمرینات گرم کننده، اشاره شما را از چند منابع که شما ممکن است یا ممکن دیده اند، نه در حال حاضر. به عنوان مثال، CS50 تا به یک مجموعه از شورت، که فیلم کوتاه می باشد، و نه بر خلاف این، اما می specific-- بسیار موضوع شاید پنج دقیقه، در طول 10 دقیقه در حلقه یا در شرایط و یا در الگوریتم و یا بعد از بیشتر مباحث پیشرفته، و همچنین. و ما به طور کلی جاسازی کسانی که به مشکل مجموعه طوری که دانش آموزان یک منبع که با آن به مرور دروس است که ممکن است در حال حاضر در سخنرانی و یا بخش آمده است. اما این راه آن را بیشتر متمرکز و بیشتر در نوک انگشتان خود را. ما همچنین تمایل به جاسازی در مشکل مجموعه همه چیز به نام تکمیل فرم سفارش. بنابراین تقریبا همه از نمونه های من در سخنرانی، در مرحله اینجا، ما نیز در دوربین در ضرب گلوله کشته اند پیشبرد کندتر بیشتر، یک خرید صمیمی تر توسط من در لپ تاپ من از آن کد را خط به خط به طوری که در کلاس، ما اغلب خامه را از طریق چیزی یا کسی با معترضه گفتن خواهد پاسخ به یک سوال. اما لزوما غرق نمی برای هر کس در مخاطبان. بنابراین شما کد تکمیل فرم سفارش پیدا برای بسیاری از نمونه که ما در اینجا انجام در سخنرانی به طوری که شما می توانید از طریق آن با سرعت خود را به راه رفتن و عقب و یا سریع به جلو یا جست و خیز در دسترس نباشد، اگر شما می خواهم. اغلب چند وجود دارد پرسش گرم کردن که از شما درخواست برای مرتب کردن بر اساس تقویت این مواد و مطمئن شوید که شما قبل از راحت هستید شما با بقیه از pset ادامه دهید. و پس از آن، البته، را pset خود را وجود دارد. و یکی از چیزهایی که ما بسیار عمدا انجام این کار در CS50 است تقریبا در هر غیر یا فکری غیر گام مکانیکی که شما ممکن است مجبور به انجام تقریبا همیشه به خوبی مستند شده است. در طول این دوره از مدت، ما شروع به سوال لفظی بیشتر بپرسید به یاد داشته باشید که چگونه به مانند این یا آن را انجام دهد؟ اما به طور کلی، شما را پیدا که مجموعه مسائل شما از طریق مکانیک از چیزی که جالب توجه است، چالش های فکری در نهایت چپ به شما دانش آموز. با که گفت، Zamyla، کسی که به نگه اشاره امروز در سخنرانی، یکی از کارکنان قدیمی ما است عضو که همچنین دارای تکمیل فرم سفارش در مورد مسائل خاص pset مانند ماریو و حریص، هر چند این سال آب است. و آن را در آن است تکمیل فرم سفارش که او اغلب ارائه می دهد برخی راهنمایی و ترفندها برای چگونه برای ادامه، هرگز به شما می گویم دقیقا چه باید بکنید، اما rather-- مانند مورد، اگر شما will-- دادن به شما حداقل یک زن و شوهر از ایده های به طوری که آن را تا به شما، در نهایت، برای تصمیم گیری چگونه به آنها نزدیک شود. MARIA: نوعی مانند یک سطح بالا درک درستی از منطق چه ما درخواست شما را به انجام. دیوید مالان: دقیقا. و، در واقع، Zamyla است به معنای تکمیل فرم سفارش برای پاسخ به این اغلب سوال که در آن من آغاز شد، به ویژه هنگامی که این مشخصات طولانی کمی دلهره آور با توجه به تمام متن و تصاویر که آنها در آنها است. بنابراین water.c، شما را پیدا بعد از شما آن کامل شده است، است که در واقع نسبتا سر راست است. کاملا یک دسته از شما رفتن به صدای بلند سر خود را در مقابل دیوار تلاش به کشف کردن که چرا آن را کامپایل نمی یا چرا از آن را در حال اجرا به درستی. اما هنگامی که شما انجام می شود با آن و هنگامی که شما در برخی از صرف زمان کشتی با هر از اشکالات که شما ممکن است، شما می یابند که این یک برنامه بسیار کوتاه است. می توان آن را فقط در چند انجام خط کد، که اکثر ما در اینجا در سخنرانی اگر دیده می شود در حال حاضر، شما جمع آوری بلوک های ساختمان است. و به عنوان ما نشان می دهد در اینجا، آن را به درخواست شما برای مشخص چند دقیقه کسی است که گرفتن یک دوش در محوطه دانشگاه. ما در مسئله مشخص تعیین میزان جریان آب در، مانند، دوش کم فشار سر، بسیار شبیه به کلیپ ساینفیلد ما دیروز دیدم و یا در مقابل آن. و سپس شما فقط باید برای انجام یک کمی از ریاضی، really-- حساب با استفاده از C به ما چگونه بسیاری از، تقریبا، بطری آب که معادل اگر ما است در نظر گرفتن دوش N-دقیقه است. در حال حاضر، در mario.c، این است که به یک برنامه کمی طولانی تر. آن را هنوز هم به این طولانی باشد. فقط چند خط بیش از water.c. اما آن را به فرصت به تمدد اعصاب مدرسه قدیمی ماریو هرم از سوپر ماریو برادران و یا برخی از آنها را مشاهده کنید. آن را به عنوان زیباتر نگاه و یا به عنوان رنگارنگ به عنوان که یک وجود دارد. ما فقط قصد استفاده از هشتگ کمی مانند ما را در اینجا بر روی صفحه نمایش با استفاده از متن ASCII. اما آن را به همان ایده تقریبی. و آن را به عنوان یک ورزش که در نگاه اول به نظر می رسد بسیار simple-- فقط چاپ یک هرم ساده است. اما یک زن و شوهر وجود دارد ویژگی های در اینجا است که جالب توجه است. توجه داشته باشید که لبه سمت راست از هرم در واقع تا به عرض دو. بنابراین دو برابر وجود دارد ستون ارتفاع، که باعث می شود آن نیاز به یک کمی کمی فکر را به مطمئن شوید که شما که دقیقا سمت راست، به عنوان گرفتن نه فقط کاملا زاویه دار خط. به طوری که یک بیت از این مورد گوشه اما مسابقات بازی واقعی. و آن را نیز در ابتدا غیر آشکار نگاه چگونه برای چاپ فضای سفید است. بنابراین، هنگامی که من در نگاه نمونه here-- خروجی و آن را نیز در آن spec-- نوع نظر می رسد مانند یک مستطیل، اما مورب از مستطیل است خرد شده شده است، و آن را فقط از فضاهای سفید، پس به صحبت می کنند. و به این ترتیب اغلب پرسیده سوال در اینجا است که همیشه، خوب، چگونه هشتگهای حرکت من به سمت راست؟ و یا چگونه به فضاهای خالی چاپ کنم؟ و این در واقع آسان تر که بسیاری از دانشجویان فکر می کنم. درست؟ شما می توانید آن بصری تنها با تقریب هدف قرار دادن نوار فضا یک یا دو بار یا سه بار. و بنابراین حتی اگر با printf ما تقریبا همیشه نسخه قابل چاپ کردن یک رشته و یا یک int و یا یک کلمه مانند "سلام، جهان "یا مجموعه ای از کلمات، شما همچنین می توانید فقط چاپ نقل قول، فضا، تمام کردن. و که در واقع خواهد داد شما یک فضای سفید وجود دارد. طوری نگه دارید که در ذهن و این overthink است. شما واقعا به تصمیم گیری ردیف با ردیف با ردیف، و نه بر خلاف عنوان مثال خود را لحظه پیش، بسیاری از کسانی که چگونه از ستون ها باید فضاهای سفید می شود و چگونه بسیاری از آنها باید هشتگهای باشد. آن را کمی از زمان را، اما آن را در نهایت یک پازل منطق از انواع. MARIA: آره. اما منطق رفتن ردیف با ردیف در حال رفتن به بسیار مفید در اینجا. دیوید مالان: آره. من فکر می کنم نمونه کد شما gave-- حتی هر چند آن بود یک برنامه کامل نیست. شما هنوز هم نیاز int و اصلی و از درجه اعتبار ساقط و stdio.h # شامل، بسیاری از مسائل را از سخنرانی. اما بلوک های ساختمان به نظر می رسد وجود داشته باشد. و سپس در آخر چیزی است کمی بیشتر الگوریتمی. پس از آن معلوم است که هر زمان شما رفتن به CVS یا هر فروشگاه راحتی و کسی به شما دست در صورتحساب صندوقدار یا سکه به عنوان تغییر، معلوم است که آنها، انسان ها، یا نه آنها می دانید یا نه، احتمالا با چه به نام یک الگوریتم حریصانه، به موجب آن اگر شما بدهکار، می گویند، 21 $ در تغییر به دلیل برای برخی از دلیل شما چیزی بسیار ارزان خریداری با یک لایحه بسیار بزرگ در CVS، این امر می تواند واقعا آزار دهنده است اگر صندوقدار به شما داد 21 تک آهنگ و یا، بدتر در عین حال، کل بسیاری از سکه ها. در عوض، آنچه یک شخص معقول است احتمالا برای انجام شده است آنها در حال رفتن برای گرفتن یک 20- $ و سپس $ 1-بیل و دست شما فقط دو لایحه در این مورد. MARIA: بنابراین آنها به دنبال به حداقل رساندن تغییر که آنها را به شما. دیوید مالان: دقیقا. و همان معامله را با سکه، و همچنین. اگر شما بدهکار، می گویند، $ 0.50، امیدوارم شما 50 سکه را نمی خواهم. شما به جای می خواهم دو چهارم، به عنوان مثال. در حال حاضر، این کار را فرض که صندوقدار است به اندازه کافی از هر فرقه که او ممکن است بخواهید به شما بدهد. اما ما به شما اجازه فرض به همان اندازه در مشکل است. و هدف، در نهایت، به پیاده سازی در کد C یک الگوریتم حریصانه. به طوری که کاربر مجاز است به نوع در چه مقدار او تغییر دهید و یا او با دلار بدهی و سنت، به نوعی از نقطه شناور ارزش احتمالا. و سپس شما را به انجام محاسبات ریاضی و شکل الگوریتمی، خوب، چگونه بسیاری از سکه می توانم شما حداقل به شما بدهد دقیقا همان است که مقدار تغییر. اما برای رفتن به یک وجود دارد چند بخش مشکل در اینجا، درست است؟ مانند طیف وجود دارد موضوع عدم دقت. MARIA: دقیقا. نقطه، بنابراین شناور ارزشها عدم دقت. آیا ما در این مورد در سخنرانی امروز صحبت کنید؟ دیوید مالان: ما از آخرین بار در سخنرانی. ما در مورد عدم دقت صحبت کردیم. و شما نمی خواهید به تقلب کاربر چه مقدار تغییر او بدهکار است. و به این ترتیب خرید، در مشکل تنظیم خصوصیات، به برخی از اندیشه، در نهایت، به عنوان چگونه شما می توانید آن را کاهش عدم دقت اشتباهات، به طور بالقوه. این قابل اجتناب است، قطعا، برای ورودی ما در حال صحبت کردن در مورد. و، در واقع، pennies-- شاید ما به Zamyla تسلیم، من فکر می کنم، برای کلاهبرداری وجود دارد. پس در نهایت، شما یک پیدا پیشرفت مشکلات این هفته، اولین بار است که بسیار کوچک است، پس از آن متوسط، پس از آن کمی بزرگتر است. اما همه آنها ساختمان استفاده بلوک از این هفته گذشته، از این supersection، مشکل تنظیم مشخصات شما قرار می دهد در منابع بی حد و حصر. اما هنوز هم، اگر در همه تلاش، به خصوص در میان کسانی که کمتر و راحت با هیچ زمینه قبلی، آمده به ساعات اداری در دوشنبه و سه شنبه و چهارشنبه و پنجشنبه. برو به بحث از طریق CS50 وب سایت درس، که از طریق آن شما می توانید چت با کارکنان و همکلاسی ها. اما در نهایت، من فکر می کنم بهترین توصیه این است که فقط زود آغاز میشود. این نوع کلاس نیست که شما باید شروع psets در روز چهارشنبه شب، و یا حتی بدتر پنجشنبه شب. MARIA: بهترین توصیه من این است به شروع کرده اند روز دوشنبه. دیوید مالان: دوشنبه. بنابراین اگر شما already-- آغاز شده نیست هیچ. اما حتی اگر نمی دوشنبه، پس از روز سه شنبه. هر چه زودتر بهتر. و به همین دلیل در البته تا به بسیاری از روز دیر است به شما یک بیت از یک را فشار روانی زودتر شروع، اما هنوز هم اجازه همه چیز لغزش زمانی که همه چیز را دیگر از شما انتظار می رود. MARIA: و شما می خواهید به استفاده از ساعات اداری به عنوان آنجا که می توانید، TOO. دیوید مالان: هر گونه سؤال؟ خیلی خوب. خوب، چرا ما در اینجا موکول؟