[موسیقی] DAVID J. مالان: بسیار خوب. این CS50 و این آغاز هفته 2 است. و شما یاد می آورند که بیش از زن و شوهر هفته گذشته، ما شده معرفی به کامپیوتر علم و، به نوبه خود، برنامه نویسی. و ما داستان از طریق آغاز شده ابتدا، که زبان گرافیکی از آزمایشگاه رسانه ای MIT. و پس از آن اخیرا، هفته گذشته، ما معرفی A A higher-- زبان های سطح پایین تر شناخته شده به عنوان C، چیزی است که کاملا متنی. و، در واقع، آخرین باری که ما بررسی در این زمینه تعدادی از مفاهیم. این، به یاد بیاورید، بسیار بود برنامه برای اولین بار ما در نگاه. و این برنامه، کاملا به سادگی، چاپ، "سلام، جهان است." اما بسیار وجود دارد به نظر می رسد سحر و جادو در رفتن. است این برنامه: #include وجود دارد با این براکت زاویه. این نوع int است. وجود دارد (خالی). این پرانتز، آکولاد وجود دارد، نیمه دونقطه، و خیلی بیشتر. و بنابراین، به یاد آورید که معرفی خراش به طوری که ما می تواند، ایده آل، گذشته را ببینید که نحو، چیزهایی که واقعا نمی که فکری جالب اما در اوایل است، کاملا، کمی مشکل به بسته بندی کردن ذهن خود را در اطراف. و، در واقع، یکی از رایج ترین همه چیز در اوایل یک کلاس برنامه نویسی، به ویژه برای کسانی که کمتر راحت، است که توسط نا امید و توسط نحوی و معین افتاد اشتباهات، به ذکر خطاهای منطقی نیست. و به این ترتیب در میان اهداف ما امروز، در واقع، اراده به شما تجهیز با برخی از تکنیک های حل مسئله برای چگونه برای حل بهتر مشکلات خود در قالب اشکال زدایی. و شما یاد، بیش از حد، که محیط زیست است که ما معرفی زمان آخرین CS50 IDE نامیده می شد. این نرم افزار مبتنی بر وب است که شما اجازه می دهد تا به برنامه در ابر، پس به صحبت، در حالی که همه خود را فایل های با هم، به عنوان ما دوباره امروز. به یاد بیاورید که ما بازبینی این موضوع در اینجا، در میان آنها توابع، و حلقه ها، و متغیرها و عبارات بولی، و شرایط. و در واقع چند که ما ترجمه از جهان از ابتدا به جهان از C. اما ساختمان اساسی بلوک، پس به صحبت می کنند، واقعا هنوز هم همان هفته گذشته بود. در واقع، ما واقعا فقط به حال قطعه پازل های مختلف، اگر شما خواهد شد. به جای آن بنفش صرفه جویی در بلوک، ما به جای ، تابع () printf بود که این تابع در C که اجازه می دهد تا شما را به چاپ چیزی و فرمت آن را بر روی صفحه نمایش. ما به معرفی CS50 کتابخانه، شما که در آن در حال حاضر در get_char اختیار شما، و get_int و get_string، و چند توابع دیگر به عنوان خوب، که از طریق آن شما می توانید ورودی از صفحه کلید خود کاربر است. و ما نیز در زمان نگاهی به همه چیز مانند these- بولی، و کاراکتر، و دو، شناور، هوشمند، رشته long_long. و حتی نوع داده دیگر در C وجود دارد به عبارت دیگر، زمانی که شما اعلام یک متغیر برای ذخیره برخی از ارزش، یا زمانی که شما یک تابع پیاده سازی که برخی از ارزش می گرداند، شما می توانید آنچه را مشخص نوع ارزش است که. آیا یک رشته، یک دنباله ای از کاراکتر؟ آیا این یک شماره، مثل یک عدد صحیح؟ آیا این یک ممیز شناور ارزش، و یا مانند؟ بنابراین در C، بر خلاف خراش، ما در واقع شروع به مشخص کنید که چه نوع داده ما از بازگشت و یا با استفاده شدند. اما، البته، ما نیز به فرار برخی از محدودیت های اساسی محاسبه. و به طور خاص، این زبان C، فراخوان که ما یک نگاه و جو در زمان در سرریز عدد صحیح، واقعیت که اگر شما فقط یک دارند مقدار محدود از حافظه و یا، به طور خاص، یک تعداد متناهی از بیت، شما تنها می توانید تعداد دفعات بسیار بالا. و بنابراین ما در این مثال نگاه در اینجا به موجب آن یک شمارنده در یک هواپیما،، در واقع، اگر در حال اجرا به اندازه کافی بلند می سرریز و در نتیجه نرم افزار خطا از پتانسیل های فیزیکی واقعی است. ما همچنین در شناور نگاه نقطه عدم دقت، واقعیت که تنها با یک تعداد متناهی بیت، که آیا آن را 32 یا 64، شما فقط می توانید مشخص کنید تعداد بسیاری بعد از نقطه اعشار، پس از آن شما شروع به دریافت مبهم است. برای مثال، یک سوم در جهان در اینجا، در جهان انسانی ما، ما فقط می دانم یک تعداد نامحدود است از 3S بعد از نقطه اعشار. اما یک کامپیوتر لزوما نمی تواند نشان دهنده تعداد نامتناهی از اعداد اگر شما تنها اجازه می دهد برخی از آن مقدار محدودی از اطلاعات است. بنابراین نه تنها ما به شما تجهیز با قدرت بیشتر در از اینکه چگونه ممکن خود را در بیان یک صفحه کلید از نظر برنامه نویسی، ما نیز محدود چه شما در واقع می توانید انجام دهید. و در واقع، اشکالات و اشتباهات می تواند ناشی از این نوع از مسائل. و در واقع، از جمله موضوعات امروز در حال رفتن به موضوعاتی مانند اشکال زدایی و در واقع به دنبال زیر هود در هفته گذشته چگونه همه چیز معرفی شدند در واقع اجرا به طوری که شما بهتر درک هر دو از قابلیت های و محدودیت های یک زبان مانند C. و در واقع، ما پوست پشت لایه از ساده ترین ساختار داده ها، چیزی به نام یک آرایه، که ابتدا اتفاق می افتد به یک "لیست." آن را کمی است مختلف در این زمینه. و پس از آن ما نیز یکی از معرفی اول مشکلات دامنه خاص ما در CS50، جهان رمزنگاری، هنر تقلا یا به رمز درآوردن اطلاعات تا که شما می توانید پیام های محرمانه ارسال و رمزگشایی پیام های محرمانه بین دو نفر، A و B بنابراین قبل از انتقال ما به دنیای جدید، اجازه دهید سعی کنید به شما تجهیز با برخی از تکنیک های که شما با آن می توانید از بین بردن و یا کاهش حداقل برخی از از سرخوردگی که شما احتمالا مواجه می شوند در طول هفته گذشته به تنهایی. در واقع، پیش از شما such-- برخی از اول مشکلات خود در C. و شانس هستند، اگر شما مانند من هستید، اولین بار شما سعی می کنید به تایپ کردن یک برنامه، حتی اگر شما فکر می کنم منطقی برنامه بسیار ساده است، شما ممکن است به خوبی ضربه دیوار، و کامپایلر است که نمی به همکاری کنند. و یا صدای جرنگ جرنگ است که نمی به واقع مناقصه خود را انجام دهد. و به همین دلیل ممکن است؟ خوب، اجازه دهید نگاهی به، شاید، یک برنامه ساده است. من قصد دارم به جلو بروید و ذخیره این در یک فایل به عمد به نام buggy0.c، چون من آن را می دانم به تواند در پیشبرد ناقص است. اما من ممکن است که اگر این را درک نمی برنامه اول و دوم یا سوم است که من در واقع ساخت خودم. بنابراین من قصد دارم به جلو بروید و تایپ کردن، اعضای هیات اصلی (خالی). و سپس در داخل آکولاد من، بسیار آشنا ( "سلام، world-- بک اسلش، N ") - و یک نقطه ویرگول. من فایل ذخیره کرده ایم. حالا من قصد دارم به پایین به پنجره ترمینال من و نوع آرایش buggy0، دلیل، دوباره، نام فایل امروز buggy0.c است. بنابراین من تایپ را buggy0، وارد کنید. و، آه، خدای من، به یاد از زمان گذشته که هیچ پیغام خطا چیز خوبی است. بنابراین هیچ خروجی چیز خوبی است. اما در اینجا من به وضوح برخی از تعدادی از اشتباهات. بنابراین اولین خط از خروجی پس از تایپ را buggy0، فراخوان، خروجی نسبتا طولانی صدای جرنگ جرنگ است. در زیر هود، IDE CS50 پیکربندی شده است به استفاده از یک دسته کامل از گزینه های با این کامپایلر به طوری که شما لازم نیست در مورد آنها فکر می کنم. و آن چه که خط اول است معنی است که با صدای جرنگ جرنگ شروع می شود. اما پس از آن، مشکلات شروع به ظاهر خود را. Buggy0.c در خط 3، شخصیت 5، آیا بزرگ، خطای قرمز وجود دارد. این چیست؟ به طور ضمنی اعلام تابع کتابخانه تابع () printf با نوع int شده (const char * را، ...) [-Werror]. منظور من، آن را به سرعت می شود بسیار محرمانه. و قطعا، در ابتدا نگاه، ما را نیست انتظار شما را به درک کل پیام. و به این ترتیب یکی از درس برای امروز در حال رفتن به به تلاش برای متوجه الگوها، یا چیزهایی مشابه، به اشتباهات شما ممکن است مواجه می شوند در گذشته است. بنابراین اجازه دهید کسی را دست انداختن از هم جدا تنها این واژه ها که نگاه آشنا. بزرگ، خطای قرمز است که به وضوح نمادین چیزی اشتباه بودن. به طور ضمنی اعلام تابع () printf تابع کتابخانه. بنابراین حتی اگر من کاملا نمی دانند چه به طور ضمنی اعلام تابع کتابخانه یعنی، مشکل مطمئنا مربوط به printf به نحوی. و منبع آن موضوع است که با اعلام آن. اعلان یک تابع است ذکر آن برای اولین بار. و ما با استفاده از اصطلاحات در هفته گذشته اعلام نمونه آزمایشی تابع، هم با یک خط در بالای خود را فایل خود و یا در یک فایل هدر به اصطلاح. و در چه فایل آیا ما می گویند هفته گذشته که printf است نقل قول، تمام کردن، اعلام کرد؟ در چه فایل نمونه آن است. بنابراین اگر شما به یاد، اولین چیزی که من تایپ شده، تقریبا در هر برنامه time-- آخرین و به طور تصادفی یک لحظه پیش آغاز شده تایپ کردن myself-- این here-- بود hash-- # شامل