SPEAKER 1: بسیار خوب. خوش آمدید. این دو هفته از CS50 است، و ما باید تا کنون شده است با استفاده از توابع، اما عمدتا آنها را گرفته شده برای اعطا. ما چون printf استفاده می شود که دارای اثر جانبی چاپ همه چیز بر روی صفحه نمایش. ما استفاده کرده ایم دریافت بین الملل، شناور. اما چه می شود اگر شما واقعا می خواهید برای ایجاد توابع خود را، به عنوان برخی از شما ممکن است در حال حاضر شروع به به مشکل تنظیم یکی، هر چند انجام به شدت مورد نیاز نیست؟ خوب، اجازه دهید به جلو و دوباره که مشکل فقط درخواست کاربر برای نام و چاپ آنها چیزی در روی صفحه نمایش، اما سعی کنید به عامل از برخی از اشتراک که ما ام دیده می شود در کد ما تا کنون. بنابراین که منظور من شرح زیر است. من قصد دارم برای رفتن به جلو و ایجاد یک برنامه جدید، فقط تماس بگیرید آن را به طور معمول hello.c. من قصد دارم به جلو بروید و خودم را به من بدهید به شامل io.h استاندارد در بالا باشد. من قصد دارم خودم را نیز preemptively کتابخانه CS50 به طوری که من در کامپایلر فریاد زد. و در حال حاضر من قصد دارم به جلو بروید و اعلام هوشمند، اصلی، از درجه اعتبار ساقط است. و پس از آن در اینجا، این است که من می خواهم برای شروع به برون سپاری قابلیت به برخی از عملکرد های دیگر که من خودم هستم رفتن به نوشتن اما که نمی کند در حال حاضر وجود دارد. به عنوان مثال، فرض کنید که من می خواستم ارسال یک تابع است که به من اجازه می دهد به نسخه قابل چاپ کردن سلام، کاما، و سپس نام برخی از کاربر است. به جای ادامه به انجام این چون printf سلام،٪، نمی خواهد آن را خوب اگر باشد فقط یک تابع نامیده می شود وجود دارد چون printf نیست اما نام چاپ؟ بنابراین به عبارت دیگر، من می خواهم که قادر به نوشتن یک برنامه است که نشانی از یک کمی چیزی شبیه به این. اول، من قصد دارم به می گویند چون printf نام، در نتیجه باعث کاربر من او یا نام او به من بدهید، و پس از آن من رفتن به استفاده از رشته s آشنا به اعلام رشته. من یک متغیر از نوع رشته، آن، و ذخیره در آن نتیجه فراخوانی رشته. اما در حال حاضر در هفته های گذشته، من می خواهم که تا حدودی tediously انجام می شود سلام،٪ S / N. و به عبارت دیگر، ما دیده ایم این به عنوان مثال یک دسته از بار، و آن را یک مثال کوچکی چون فقط یک وجود دارد خط کد پس از آن واقعا نمی معامله بزرگ برای حفظ دوباره تایپ کردن در. اما فرض کنید که این خط از کد در واقع تبدیل شدن به یک بار، و یک خط از کد نیست، بلکه آن 10 خط از کد را چند هفته از هم اکنون، و شما فقط خسته شدن کپی کردن و چسباندن یا تایپ مجدد که همان کد. آیا آن را خوب به جای انجام می باشد چون printf سلام،٪ s و غیره، آن را نمی شود خوب اگر فقط وجود دارد یک تابع به نام نام چاپ عکس که استدلال طول می کشد - به عبارت دیگر، طول می کشد ورودی - و پس از آن نقطه و ویرگول بدین. به طوری که تابع، آن را نمی می تواند به خوبی در صورتی که وجود داشته است؟ سپس من نمی خواهد که به نگرانی در مورد چون printf است، چه٪ s و تمام این پیچیدگی که عبارتند از نه همه که جالب است. آنها مفید هستند. بنابراین نام چاپ، متاسفانه، نبود 40 سال، به همراه پیش اختراع. هیچ کس فکر آن را بنویسید. اما این زیبایی داشتن یک زبان های برنامه نویسی، درست مانند ابتدا شما می توانید بلوک های سفارشی را تعریف کنیم، بنابراین در C و هر زبان، می تواند به شما تعریف عملکرد خود را، می تواند توابع خود را تعریف می کنید. بنابراین حتی اگر ما اصلی توسط به طور خودکار به صورت رایگان، ما می توانیم اعلام توابع خود ما. بنابراین من قصد دارم به برخی از اتاق تا بالا، و من قصد دارم به اعلام تابع خود که رفتن به نگاه در ابتدا کمی عجیب و غریب است اما ما می آیند برگشت به قبل زمانی. من قصد دارم به درجه اعتبار ساقط می گویند، در نتیجه نشان می دهد این تابع می کند چیزی، یک عارضه جانبی است، اما آن را چیزی برای من در بر نمی گرداند راه همان است که بین المللی و یا دریافت رشته خود را انجام می دهد. و من قصد دارم به این تابع نام نام چاپ، و من قصد دارم به مشخص است که این مرد می گذرد را به یک رشته، و من قصد دارم به تماس که نام رشته. من می توانم آن را هر چیزی که من می خواهم صدا می زنه، اما من می خواهید کد من به خود مستند. به عبارت دیگر، اگر یکی از شما به باز کردن این فایل و آن را بخوانید، شما می توانید مرتب کردن بر اساس استنتاج از نام آن ورودی چه نقشی را که قرار است بازی. و در حال حاضر زیر را که، من قصد دارم برای باز کردن بریس مجعد و بریس بسته فرفری، و به همین ترتیب متوجه من همان را دنبال کردهاید و الگوی بر روی خطوط چهار تا هفت به عنوان من به مدت یک هفته خوب به علاوه پس از در حال حاضر بین، می گویند، نه خطوط و 14 که آهنگسازی عمده. به عبارت دیگر، نام نسخه قابل چاپ تابع دیگری است. در حال حاضر، کامپایلر است که نمی دانم به تماس این چیز به صورت خودکار چون من به معنای واقعی کلمه فقط آن را اختراع کرد، اما هنوز هم می دانم که به فراخوان اصلی به طور خودکار، و پس از آن البته در خط 13، من خواستار عملکرد خود من. و چون من اعلام کردم که تابع در خط چهار اصلی، این است که برای تدریس کامپایلر نقل قول، نقل قول را تمام کردن، "نام چاپ عکس" بدان معنی است و آنچه در آن باید انجام دهید. بنابراین من مرتب سازی بر دادن آن را سفارشی جدید هستم مسدود در زمینه، می گویند، با ناخن خراش. بنابراین در اینجا، من می توانم که بسیار معمول است یا الگوی تکرار از کد من نگه دارید نوشتن در کلاس، چون printf ٪ خوش آمدید،٪ S / N "، - چه من می خواهم برای قرار دادن در اینجا؟ S؟ بنابراین من می خواهم به نام در این زمینه قرار داده است. بنابراین یک بیت از یک دوگانگی را متوجه در اینجا. از آنجا که من اعلام عملکرد خود من و من تا حدودی خودسرانه نامیده می شود آن را چاپ نام، و چون من در پرانتز مشخص شده که این تابع یک آرگومان، نوع طول می کشد است که یک رشته - پس از آن یک کلمه یا عبارت و یا چیزی شبیه به آن - و من تلفنی که نام استدلال، که به معنی تنها متغیر است که در دامنه، پس به صحبت می کنند، نام. S تنها بین آنچه دو وجود دارد آکولاد، البته؟ خوب در واقع، درست مثل خط 10 را از طریق 14، پس فقط می خواهم در روز دوشنبه نمی تواند استفاده S، اما آنچه که من می تواند انجام دهد این است عبور S به نام چاپ. نسخه قابل چاپ نام خیلی اتفاق می افتد تا آن را نام مستعار، مترادف، نام مستعار، خواستار آن نام، و در حال حاضر با استفاده از آن را در این خط. بنابراین در حال حاضر اجازه دهید من این صرفه جویی، زوم کردن. اجازه دهید من به جلو و سلام. به نظر می رسد خوب است. آیا تف از هر گونه خطا. / سلام وارد کنید. نام من چیست؟ دیوید. سلام دیوید. پس همه که هیجان انگیز نیست، اما فقط در حال حاضر فکر می کنم. شما در حال حاضر به همان عنصر را داشته همانطور که ما در ابتدا به انجام توابع خود ما. اما یک بیت از یک مارپیچ وجود دارد. فرض کنید که من تا به حال واقعا فکر نمی این کار را از طریق و من در واقع بدون واقعا فکر کردن در مورد آن نوشت که تابع به اینجا. احساس می کند کاملا منطقی است. در ابتدا هیچ اندیشه ای وجود ندارد محل در اسکریپت خود را. شما می توانید به یکی از اینجا تا در اینجا قرار دهید،، تا یکی اینجا، و آن را ممکن است شروع به به نگاه کمی کثیف اگر اینکار را نکنید ذخیره کردن آن را منظمی، اما آن را نمی کند توجه به جایی که از اسکریپت بر روی صفحه نمایش. متاسفانه در C - و این است که بر خلاف زبان هایی مانند جاوا و پایتون و دیگران که شما ممکن است آشنا - متاسفانه در C، سفارش می کند مهم به دلیل دیده بان رفتن به اتفاق می افتد در حال حاضر. تابع پیش فرض که رفتن به اجرا است، البته، اصلی. صفحه اصلی در حال رفتن به تماس نام چاپ در خط هشت، اما متاسفانه، کامپایلر حتی نمی دانند که نام چاپ وجود دارد تا زمانی که آن را به خط 11 می شود، که متاسفانه رفتن به خیلی دیر شده. بنابراین انجام دهید را خوش آمدید. و در حال حاضر لعنتی، دو اشتباه تولید می شود. بنابراین در حال حاضر اجازه دهید من رفته تا بسیار اول، به عنوان ما همیشه باید انجام دهید، و متوجه است که آن را در من فریاد، "اعلام ضمنی تابع نام چاپ. " بنابراین ما دیده ایم این پیام قبل از، اعلام ضمنی تابع. هنگامی که ما دیده می شود که نوع خطا؟ وقتی که من یک کتابخانه را شامل نمی شود. اگر من cs50.h و را فراموش کرده و من می توانید فریاد زد در رشته و یا اعضای هیات. اما در این مورد، این تابع چاپ نام در کتابخانه نیست، درست است؟ این به معنای واقعی کلمه در این فایل، به طوری که آنچه واقعا مشکل است؟ خوب متاسفانه در C، آن را به شما طول می کشد فوق العاده به معنای واقعی کلمه است که اگر شما می خواهید یک تابع نامیده می شود نام چاپ به وجود داشته باشد، شما هم باید برای پیاده سازی که تابع در بالا بسیار از شما کد به طوری که آن را در دسترس است به کاهش توابع، اما رک و پوست کنده، که می شود درهم و برهم بسیار به سرعت. شخصا، من مانند قرار دادن اولین اصلی چرا که پس از آن بسیار روشن است آنچه که این برنامه در نگاه اول است. و به علاوه، شما می توانید به گوشه های عجیب و غریب مواردی که اگر x می خواهد به تماس اما سالانه ممکن است X شما فقط تماس بگیرید، از لحاظ جسمی نمی تواند در واقع یکی قرار داده است بالاتر از دیگر. اما معلوم است در C، ما می توانیم حل این خیلی ساده است. من قصد دارم برای قرار دادن کمی از فضا تا اینجا، و من فقط رفتن به preemptively، البته تا حدودی redundantly، رفتن به آموزش کامپایلر وجود دارد که یک تابع وجود دارد نام نام چاپ، طول می کشد یک رشته، و من قصد دارم به تماس نام آن نقطه و ویرگول بدین. بنابراین این در حال حاضر در خط چهار، که ما را دیده اند، نه قبل از آن، اعلام نام تابع چاپ عکس، اما آن را تنها قول می دهم که این تابع در نهایت تعریف می شود، در نهایت اجرا می شود. این در حال حاضر من می توانم به تنهایی ترک چون در حال حاضر این تعریف است، پیاده سازی، مرتب کردن بر اساس آخرین مایل اجرای این تابع خاص است. بنابراین رک و پوست کنده آن را احمقانه، آن را آزار دهنده، اما این راه C است، و آن را چرا که آن را به شما طول می کشد بسیار به معنای واقعی کلمه و به عنوان یک کامپیوتر باید رک و پوست کنده، تنها دقیقا همان چیزی است که شما آن را برای گفتن انجام دهید، و به طوری که ترتیب مهم است. پس نگه داشتن آن در ذهن و دوباره، شروع به متوجه عود الگوها. شانس شما خواهد شد، اگر شما را نداشته باشند در حال حاضر، شروع به برخورد پیام مثل این که در نگاه اول به نظر می رسد کاملا مرموز، اما اگر شما شروع به برای این کلمات کلیدی شبیه "اعلام ضمنی،" ذکر تابع در این مورد - و رک و پوست کنده، شما گاهی اوقات حتی کمی سبز نماد هویج است که به شما می گوید که در آن این مسئله احتمالا - شما می توانید شروع به کار و راه خود را از طریق هنوز پیغام خطا نهان. هر گونه سوال در مورد نوشتن خود را عملکرد خود را در این راه؟ اجازه دهید چیزی که یک کمی بیشتر فوتی و فوری. به جای فقط انجام چیزی است که یک عارضه جانبی از چاپ، بگذار بروم جلو و صرفه جویی در یک فایل جدید، و ما تماس این positive.c، حتی اگر آن را رفتن به کمی متفاوت در مقابل زمان آخرین. و این بار، من می خواهم به پیاده سازی مجدد زمان گذشته، به عنوان مثال positive.C، که مجبور به کاربر به منظور من یک عدد صحیح مثبت است. اما من مجبور به استفاده از نوع int آخرین بار. آیا آن را خوب است اگر وجود داشت یک تابع به نام بین المللی مثبت که من فقط می تواند این برون سپاری قطعه ای از قابلیت؟ بنابراین تفاوت در اینجا این است که ما را اجرای بین المللی مثبت، اما بر خلاف نام چاپ عکس است که تا به حال عارضه جانبی - آن چیزی به من بر نمی گرداند مثل یک عدد یا یک رشته - بین المللی مثبت است، البته، رفتن به بازگشت، امیدوارم، نوع int مثبت است. بنابراین اجازه دهید این کار را. شامل cs50.h، عبارتند از io.h. استاندارد INT از درجه اعتبار ساقط اصلی. و در حال حاضر در اینجا، من قصد دارم به جلو بروید و اجازه دهید بگویم هوشمند، آن تماس بگیرید N، برابر گرفتن بین المللی مثبت. و درست مثل بین المللی در حال حاضر وجود دارد زیرا کارکنان آن را نوشت، من قصد دارم به فرض برای لحظه ای که دریافت بین المللی مثبت وجود دارد، و در حال حاضر من قصد دارم به جلو بروید و می گویند چون printf، با تشکر برای٪ I / N، N. بنابراین در حال حاضر اگر این برنامه را کامپایل کنم، چه اتفاق خواهد افتاد در ترمینال من پنجره در پایین صفحه نمایش؟ من قصد دارم به احتمالا دریافت کنید که همان خطا مانند قبل. بنابراین سعی کنید این اجازه. مطمئن مثبت. و دوباره، اعلام ضمنی از تابع، مثبت بین المللی. بنابراین ما می توانیم این کار را در حل یک زن و شوهر از راه. من قصد دارم به نگه داشتن آن ساده و فقط قرار دادن این اظهارنامه من در اینجا و بین المللی مثبت. من باید امضا اصطلاح. امضا فقط اشاره به زیبایی شناسی از خط اول از برنامه است. پس چه باید مثبت INT بازگشت؟ بنابراین یک int است. منظورم این است که ایده آل، این امر می گشت چیزی مانند نوع int مثبت، اما وجود ندارد. ما دیده ام که در میان داده های ما انواع، بنابراین ما باید برای مقابله با واقعیت این است که ما باید بسیار کمی انواع داده ها برای کار با. اما ما می توانیم یک int و فقط بازگشت اعتماد که از آن مثبت خواهد بود. این به آن می شود گرفتن بین المللی مثبت. و در حال حاضر در مورد استدلال های خود را؟ آیا آن را به هر ورودی؟ آیا هر ورودی به آن نیاز دارند؟ پس از آن نیازی به دانستن در پیشبرد هر چیزی. دریافت رشته نمی کند، بین المللی ندارد. چون printf می کند - به آن نیاز دارد به برخی از ورودی سرانجام به آن - و نام چاپ مورد نیاز برخی از ورودی، اما بین المللی مثبت نمی کند. بنابراین من قصد دارم به صراحت از درجه اعتبار ساقط کامپایلر بگویید. از درجه اعتبار ساقط فقدان از هر چیز دیگری است. بنابراین از درجه اعتبار ساقط وسیله چیزی است که در داخل از این پرانتز، نقطه و ویرگول بدین شکل. و در حال حاضر در پایین فایل من - و نوع دیگر، من فقط از مقعد اینجا قرار دادن اصلی در بالا، که تمرین خوبی است، زیرا این راه، در هر زمان شما و یا شخص دیگری فایل خود را، باز می شود قابلیت سمت راست وجود دارد. شما می توانید از یک مربع شیرجه رفتن. بنابراین در حال حاضر من قصد دارم به این تکراری، دریافت از درجه اعتبار ساقط اعضای هیات مثبت است، اما من نیستم رفتن به ضربه نقطه و ویرگول در حال حاضر. من قصد دارم برای باز کردن آکولاد، و در حال حاضر من نیاز به قرض گرفتن برخی از ایده های از دوشنبه. همانگونه که شما به خاطر، ما کاری انجام دادند می خواهم زیر را انجام دهید در حالی که چیزی واقعی بود. و آنچه که من انجام دهید؟ من چیزی شبیه به من بدهید من یک عدد صحیح مثبت، کمی سریع است. من می توانم هر یک از عبارات من می خواهید استفاده کنید. و سپس من استفاده می شود چه؟ INT N برابر دریافت اعضای هیات، بدون آرگومان به آن. و متوجه تفاوت. هنگامی که شما به یک تابع، زمانی که شما با استفاده از یک تابع، شما در درجه اعتبار ساقط قرار داده نشده است. شما فقط کار را که در هنگام اعلام تابع، آموزش کامپایلر چه آن را باید انتظار داشت. بنابراین شما لازم نیست برای قرار دادن خود را از درجه اعتبار ساقط وجود دارد. و در حال حاضر چه شرایط من بود؟ خوب، N برابر است با به مثبت نیست، اما این فقط شبه کد است. پس چگونه می توانم این بیان ولایه؟ بنابراین کمتر از یا مساوی صفر است. بنابراین دوباره، توجه شما می توانید انجام دهید کمتر از یا مساوی. حتی اگر آن دو جداگانه نمادها، شما می توانید آن را انجام صفحه کلید خود را به عنوان چون. اما هنوز یک اشکال است که وجود دارد من screwed تا در زمان گذشته بیش از حد. من مجبور به اعلام - دقیقا. من باید به اعلام نفر در خارج حلقه. بنابراین من نیاز به قرار دادن نفر تا اینجا، و من نمی می خواهم دوباره اعلام آن را در اینجا مبادا من یک متغیر جدید را دریافت کنید. من فقط می خواهم یک مقدار در اینجا. و در حال حاضر من کاملا در اینجا انجام می شود نیست. اجازه دهید من جلوتر از خودم و وانمود کنید که من انجام داده ام. مثبت، و در حال حاضر یک خطای جدید وجود دارد. کنترل پایان می رسد تابع غیر از درجه اعتبار ساقط است. بنابراین پیغام خطای جدید، اما اگر شما نوع کسی را دست انداختن از هم جدا هر کدام از واژه ها، احتمالا در چه چیزی اشتباه است اشاره. کنترل کنید. کنترل حالت فقط بدان معناست به منظور عملیات در یک برنامه. کامپیوتر در کنترل و چیزی را اشتباه رفت. پس از آن به پایان می رسد یک تابع غیر از درجه اعتبار ساقط است. چه تابع ظاهرا با اشاره به؟ چه تابع غیر از درجه اعتبار ساقط است؟ بنابراین بین المللی مثبت، و کمی گیج کننده است که به خوبی، این نوع از درجه اعتبار ساقط است. این مشخصات خالی برای آن استدلال، اما خروجی آن به از نوع N باشد. بنابراین کلمه در سمت چپ است به اصطلاح نوع بازگشت. کلمه در داخل در اینجا استدلال صفر یا بیشتر که یک تابع طول می کشد. بنابراین چه چیزی باید انجام دهم؟ در این نقطه در کد من، خط 21 که در آن سریع چشمک زن در حال حاضر است، من بین المللی مثبت در درون متغیر به نام N. چگونه می توانم آن را برگشت به بخش اصلی؟ به معنای واقعی کلمه. بازگشت N نقطه و ویرگول بدین. پس فقط به عنوان کولتن بازگشت یک تکه مقاله با پاسخ به من انداختن که قطعه ای از کاغذ در کمی سیاه و سفید جعبه روی میز، به انجام این کار در کد، شما به معنای واقعی کلمه فقط نوشتن، بازگشت نفر، و آن را به عنوان اینکه کولتن توزیع چیزی پشت فیزیکی. در این مورد، آنچه اتفاق می افتد این است که بین المللی مثبت در حال رفتن به پشت دست آنچه احتمالا مثبت عدد صحیح به چه کسی؟ از کجا که به ارزش تا پایان؟ که به پایان می رسد تا در این متغیر، N و پس از آن ما با خط نه ادامه دهید. بنابراین به عبارت دیگر، به منظور از عملیات، این برنامه شروع می شود اجرا و کامپایلر متوجه می شود، آه، شما می خواهید کتابخانه؟ اجازه بدهید من به چنگ زدن به هر آنچه در داخل است که. اوه، شما می خواهید کتابخانه استاندارد IO؟ اجازه بدهید من به چنگ زدن به هر آنچه در داخل است که. کامپایلر چه می گوید به خود در هنگام برخورد خط چهار؟ آه، شما وعده داده شده برای پیاده سازی تابع نامیده می شود مثبت است، اما خواهیم کرد که بعد به عقب بر گردیم، چیزی در امتداد آن خطوط. درجه اعتبار ساقط اصلی بین المللی فقط بدان معناست در اینجا جرات از برنامه های من است. در خط هفت فقط یک آکولاد است به. خط هشتم گفت: در سمت چپ، به من 32 بیت برای یک عدد صحیح، آن را نفر. در سمت راست، آن را گفت: بین المللی مثبت. مکث بیایید که داستان به دلیل در حال حاضر من نگه داشتن نیست با حرکت مکان نما پایین است. مکان نما من در حال حاضر در اینجا می رود چون در حال حاضر به اعضای هیات مثبت اجرا. INT نفر اعلام شده است. زیر را انجام دهید. چون printf به من می دهد یک عدد صحیح مثبت است. دریافت int از کاربر، ذخیره آن را در n، و شاید این کار را دوباره و دوباره. این حلقه به این معنی است که این کد ممکن است اجرای بالا و پایین مثل این دوباره و دوباره، اما زمانی که کاربر در نهایت همکاری و به من مثبت INT، من ضربه خط 21، که در آن نقطه عدد به دست پشت و که یکی از در حال حاضر باید مشخص کنم؟ نه. کنترل، پس به صحبت می کنند، برمی گرداند به خط نه. این خط که در حال حاضر مسئول است. به طوری که آنچه اتفاق می افتد، تمام شده است این زمان در زیر کاپوت، اما هنگامی که ما توابع مانند چون printf استفاده می شود و یا حتی رشته ای که شخص دیگری برای شما نوشت، کنترل تحویل داده شد خط کد را به شخص دیگری خط به خط. این فقط ما نمی تواند آن را ببینید و ما واقعا نمی تواند آن را به تصویر می کشد در این برنامه به دلیل آن را در برخی دیگر فایل بر روی هارد دیسک نادانسته به ما. پس اجازه دهید در واقع کامپایل و در حال حاضر اجرای این. مطمئن مثبت. کامپایل، که پیشرفت. / مثبت است. من یک عدد صحیح مثبت بدهید. بیایید مشکل باشد. منفی 1. صفر است. بیایید آن 50. با تشکر برای 50، و بنابراین کنترل در حال حاضر بازگشته است. هر گونه سؤال، پس از آن، در آن؟ آره؟ [نامفهوم]. دوباره بگو. اوه، سوال خوبی است. بنابراین شما ممکن است به موازات توجه کنید که من نوع برش گوشه در هستم. در خط 12، من و گفت، بین المللی مثبت بین المللی را می گرداند، اما با همان منطق، آن را در حال حاضر می ایستد به همین دلیل است که در خط شش، میگویم که بازده اصلی یک int، اما آنچه که ما هرگز در هر یک از برنامه های ما بود؟ ایم اشاره ای به حال هرگز این بازگشت کلمه کلیدی. پس از آن معلوم است که در C، حداقل نسخه ای از آن است که ما با استفاده از ساخته شده در سال 1999، از نظر فنی، این است که اتفاق می افتد را برای شما به صورت خودکار. هر زمان شما پیاده سازی یک برنامه و شما پیاده سازی یک تابع به نام اصلی، که تابع صفر بازگشت به طور پیش فرض اگر شما می گویند نیست در غیر این صورت، و صفر فقط یک قرارداد است. جهان صفر نتیجه را برمی گرداند نشان می دهد که همه به خوبی، به طور موثر ما را با ترک چهار میلیارد همه چیز امکان پذیر است که می تواند به اشتباه است به طوری که اگر ما به یکی، که ممکن است یک کد مشخص این معنا است که چیزی را اشتباه رفت. ما می تواند دو بازگشت، که به معنی این چیز دیگر را اشتباه رفت. ما می توانیم چهار میلیارد بازگشت، که به معنی این چیز دیگر را اشتباه رفت. و اگر شما در حال حاضر در مورد خود فکر می کنم PC یا Mac، شما ممکن است به یاد آورید که گاهی اوقات شما می توانید پیام های خطا مرموز از نرم افزاری است که شما با استفاده از، و گاهی آن را یک انسان شرح دوستانه، اما وجود دارد اغلب یک کد یا یک عدد بر روی صفحه نمایش؟ اگر این به ذهن می آیند، فقط نگه داشتن چشم را برای آن. به طور معمول آنچه که در این کدهای با اشاره به. آنها در مایکروسافت ورد و دیگر برنامه ها به طوری که اگر شما فایل گزارش اشکال با شرکت، شما می توانید به آنها بگویید، اوه، من خطا شماره 45. و برخی از برنامه نویس در شرکت می توانید نگاه کنید که در او و یا کد و می گویند، آه، چرا که من ساخته شده این اشکال و که به همین دلیل کاربر کردم این ارسال. اما رک و پوست کنده، آن را فقط کمی منحرف و کمی خسته کننده به نتیجه گیری کرد که، حداقل ما چند برنامه برای اولین بار، بنابراین ما حذف شده است. ولی تمام این زمان هر یک از شما توابع اصلی مخفیانه این حال خط به طور خودکار برای شما اضافه شده کامپایلر، فقط با کنوانسیون به صرفه جویی در شما برخی از زمان. [نامفهوم]. شما لازم نیست به آن در اصلی. این خوب است. شما نیاز به آن، اگر شما پیاده سازی یک تابع مثل این. در غیر این صورت مسطح تابع نه کار می کند. اما در اصلی، لازم نیست. در یک یا دو هفته، خواهیم شروع به گرفتن به آن عادت یک بار ما می خواهم برای شروع دلالت خطا است. واقعا خوب سوال. استراحت خیلی سریع کلامی به ذکر است که جمعه این هفته، ما نمی خواهد شد صرف ناهار فی نفسه است، اما ما خواهید بود از شامی که با برخی از دانش آموزان و کارکنان. اگر شما می خواهم به ما بپیوندید، احساس رایگان برای رفتن به cs50.net/rsvp. 6:00 PM جمعه این هفته. فضا، مثل همیشه، محدود، اما ما ادامه انجام این کار بر روی نزدیک به اساس بارگیری در این هفته اگر فضا این هفته اجرا می شود. بنابراین مطلب یا داستان جالب است که ما در سمت چپ روز دوشنبه بود که رشته ها در واقع می تواند توان به نمایه، که فقط بدان معناست که شما می توانید در اولین کاراکتر، شخصیت دوم، شخصیت سوم و غیره، زیرا شما می توانید به طور موثر از یک رشته فکر می کنم، مانند سلام، به عنوان در این مورد پنج حروف داخل جعبه. و شما می توانید در هر یک از آن دریافت کنید جعبه با چه نحو ما معرفی در روز دوشنبه؟ کسانی که براکت مربع بر روی صفحه کلید خود را. که فقط به معنای رفتن به محل صفر. ما شروع به شمارش صفر، بنابراین براکت صفر دلالت ساعت، یک براکت به معنای الکترونیکی، و غیره. و تمام زمانی که ما بوده ام با استفاده از رشته ها و تایپ کردن در "سلام" و "جهان" و چیزهای دیگر صفحه نمایش، آن را ذخیره شده در جعبه های شبیه به این. و حدس می زنم. هر جعبه چه نشان دهنده فیزیکی داخل کامپیوتر شما؟ [نامفهوم]. پوزش می طلبیم؟ حرف می باشد. بنابراین یک شخصیت، قطعا در مورد از رشته ها، و یک شخصیت است هشت بیت یا یک بایت است. بنابراین شما احتمالا حداقل مبهم آشنایی با این واقعیت که شما کامپیوتر دارای حافظه است. این دو نوع حافظه حداقل است. یکی از هارد دیسک است که در آن شما را نجات دهد چیزهای دائم، و این به طور معمول بزرگ است، بنابراین شما می توانید فیلم و موسیقی و غیره. سپس شما باید نوع دیگری از حافظه به نام RAM، R-A-M، دسترسی تصادفی حافظه، و این نوع از حافظه است استفاده شده است که زمانی که کامپیوتر شما است در حال اجرا است اما اگر شما از دست دادن قدرت یا خود را قالب های باتری، هر چیزی که ذخیره شده در رم از بین می رود اگر شما از دست دادن قدرت روی هم رفته به این دلیل آن نیست مداوم است. شما به طور معمول، این روزها، فرفره از آن، دو گیگابایت، شاید بیشتر. و حرکت صعودی از RAM است که آن را بسیار بسیار، بسیار سریعتر از هارد دیسک و یا حتی حالت جامد درایوهای این روزها، اما آن را به طور معمول گران تر است تا شما باید کمتر از آن است. بنابراین گفتگو امروز واقعا اشاره به RAM، آن نوع از حافظه که تنها وجود دارد در حالی که قدرت وجود دارد حال وارد شدن به کامپیوتر شما را تغذیه می کند. بنابراین، هنگامی که شما در H-E-L-L-O تایپ کنید، وارد کنید صفحه کلید، H است که در یک بایت RAM، E است که در یکی دیگر از بایت RAM، به عنوان بقیه کلمه. بنابراین چیزی که ما قادر بودند به یاد به زمان گذشته این بود. اجازه دهید من به جلو و باز کردن فایل که ما به نام string.c، و به یاد آوردن که آن را کمی به نظر می رسید چیزی شبیه به این. اجازه دهید من در واقع به رول و تغییر آن را به دقیقا همان چیزی است که آن را مانند نگاه، طول رشته از بازدید کنندگان. بنابراین در این برنامه به اینجا نگاه کنید. ما عبارتند از: کتابخانه CS50 تا که ما می توانیم رشته استفاده کنید. ما عبارتند از: io.h استاندارد بنابراین ما چون printf می توانید استفاده کنید. چرا ما شامل string.h؟ این در روز دوشنبه بود. بنابراین ما می خواستیم طول رشته. خ لنگ. مردم تصمیم سال پیش، اجازه دهید فقط موجز. در عوض خواستار آن را "طول رشته،" اجازه دهید آن را "خ لنگ" می نامند، و اجازه دهید شکل جهانی آن، و به طوری که آنچه در حال حاضر از دسترسی به string.h. این آشنا است. این آشنا است. این آشنا است. این کمی جدید است. در خط 22 - و ما دوباره به این، اما اکنون می دانیم - و شما فقط این کار را از داشتن مستندات و یا اگر به عنوان خوانده شده شما می دانستید C در حال حاضر - گاهی اوقات رشته می تواند پیچ ​​کردن. اگر کاربر واقعا خصمانه یا همکاری و او فقط هیچ چیزی در صفحه کلید تایپ نیست و یا انواع بسیار در صفحه کلید است که آن را به طور نسبی پایمال حافظه کامپیوتر، در تئوری، رشته می تواند بازگشت چیزی جز یک رشته از کاراکتر ها است. این می تواند یک ارزش خاص به نام بازگشت NULL در همه کلاه، N-U-L-L، و این فقط یک مقدار نگهبان به اصطلاح. این یک ارزش ویژه ای است که دلالت چیزی بد در این مورد اتفاق افتاده است. این عدم وجود یک رشته است. بنابراین من برای چک کردن به سادگی به طوری که تهی، داستان کوتاه مدت، خ لنگ و توابع دیگر که با C می آیند، اگر آنها انتظار دارند یک رشته، اما شما به آنها منتقل می فقدان یک رشته، اگر شما عبور آنها را پوچ، کامپیوتر و یا برنامه فقط بی درنگ سقوط خواهد کرد. این قطع خواهد شد. آن را پرتاب خواهد شد تا برخی از پیام خطا. چیزهای بد اتفاق خواهد افتاد. بنابراین حتی اگر این است که هنوز نه به خوبی تعریف شده - این حس بیشتر در هفته و یا دو - در خط 22، این است که فقط نمونه ای از چک کردن خطا دفاعی خود تنها در صورتی که یک بار از یک میلیون چیزی را اشتباه می رود، در حداقل برنامه من نیست سقوط خواهد کرد. بنابراین اگر S برابر چیزی بد، من این حلقه، و این بود جایی که ما تا به حال که دیگر قطعه جدید از نحو. من یک حلقه تکرار از صفر تا طول بازدید کنندگان. و سپس در اینجا، من یک چاپ از بازدید کنندگان بود براکت من، اما چرا من٪ C استفاده همه ناگهان به جای از٪ s هر چند ثانیه یک رشته است؟ این یک شخصیت است، درست است؟ S یک رشته براکت چیزی است، اما، براکت من جایی که من صفر است و یا یک یا دو، که یک فرد کاراکتری در رشته، و به همین ترتیب برای که، چون printf باید مطلع شود که آن در واقع یک شخصیت به انتظار. و سپس به یاد بیاورید، چه این را برنامه در واقع کاری انجام دهید؟ در ستون چاپ آن. بله، دقیقا. این فقط کلمه ای که من در نوع چاپ ستون، یکی از شخصیت ها در هر خط. بنابراین اجازه دهید این را دوباره ببینم. بنابراین رشته را. تهیه و تدوین OK. / رشته. اجازه دهید من در H-E-L-L-O تایپ کنید، را وارد کنید، و در واقع من آن را دریافت کند، یکی در هر خط. پس به من اجازه انجام یک بهینه سازی اینجا. اگر شما در مورد آن فکر می کنم، به خصوص اگر شما برنامه ریزی کرده ایم قبل، مسلما ناکارآمدی در خط 24. به عبارت دیگر، آن را نه لزوما بهترین طراحی. ساده، حداقل یک بار شما به یاد داشته باشید آنچه خ لنگ است، اما آن را انجام کاری گنگ به طور بالقوه. چه چیزی ممکن است؟ [نامفهوم]. دقیقا. آن را برای طول بازدید کنندگان چک هر زمان حتی اگر H-E-L-L-O همیشه به پنج حرف. هر زمان از طریق این حلقه، پنج در حال تغییر است. من ممکن است افزایش، اما آنچه طول در هر تکرار این حلقه؟ پنج، پنج، پنج و در عین حال من با این وجود درخواست این دوباره و دوباره و دوباره سوال. حالا رک و پوست کنده، کامپیوتر لعنتی سریع، هیچ کس رفتن به اطلاع تفاوت در این مورد، اما این نوع از تصمیم گیری های طراحی فقیر می تواند شروع به اضافه کردن اگر خود کامپایلر سعی نکنید برای رفع این کار را برای شما که آن را به طور معمول نیست، در حداقل در دستگاه. بنابراین من قصد دارم برای انجام این کار. من قصد دارم به اضافه کردن یک کاما بعد از اولین متغیر من، من. من قصد دارم به خودم دیگر متغیر، خواستار آن N، فقط با کنوانسیون اعداد، و پس از آن من رفتن را به او واگذار n مقدار رشته طول بازدید کنندگان. و سپس من رفتن به تغییر شرایط من به چه؟ من قصد دارم برای تغییر وضعیت من در حالی که من کمتر از n است. بنابراین در حال حاضر، چند بار من چک کردن طول کنندگان؟ یک بار، اما آن را OK من برای چک کردن در برابر نفر دوباره و دوباره به دلیل در حال حاضر کسانی که ارزش ها در واقع در حال تغییر نیست. در حال حاضر در حال حاضر، فقط می دانم که در هر زمان شما فراخوانی یک تابع، یک کمی وجود دارد هزینه های بالاسری، به اندازه کافی به شما دلسرد واقعا از همیشه با استفاده از توابع، اما بدیهی است زمانی که یک خط کد وجود دارد دوست دارم که - و خطوط را دریافت خواهد کرد جالب تر قبل از طولانی - که در آن فرصتی برای فکر می کنم وجود دارد، اگر من نوع این کد، که چگونه بسیاری از بار آن را اجرا خواهد کرد؟ شما در طول زمان شروع به دیدن اجرای برنامه های شما می تواند در واقع تغییر دهید. در واقع، یکی از مجموعه مسائل ایم انجام شده در سال گذشته شامل پیاده سازی، به عنوان شما ممکن است از یاد هفته صفر، یک جستجوگر طلسم، اما املا که به منظور حمایت از یک فرهنگ لغت 150،000 به علاوه کلماتی که ما به شما بچه ها را. شما را مجبور به نوشتن کد که بارهای این واژه ها را به رم، به طوری به جعبه مانند ما بر روی صفحه نمایش را دیدم یک لحظه پیش، و پس از آن به همان سرعتی که شما می تواند، شما باید قادر به پاسخ به سوال در فرم، این کلمه است غلط املایی؟ آیا این واژه اشتباه؟ آیا این واژه اشتباه؟ و در چیزی شبیه به آنچه که ما انجام شده در سال گذشته آن را به تبدیل شده است، البته در انتخاب کردن در صورت اختیاری، رقابت از انواع، به موجب آن دانش آموزانی که با استفاده از حافظه کمتر و کمتر زمان، چرخه های CPU کمتر، تا پایان حباب تا بالای کمی هیئت مدیره رهبر یا رتبه بندی که ما در آن قرار داده پیام خصوصی به این دوره را به عنوان ایم در سال های گذشته انجام می شود. پس دوباره، کاملا اختیاری است، اما این به فرصت های طراحی صحبت می کند است که پیش زمانی که ما شروع به ساختمان بالای برخی از این بلوک های ساختمان های اساسی. پس به من اجازه بازگشت به این نمودار برای فقط یک لحظه و کمی آشکار چیزی بیشتر. این در واقع یک رشته است، و ما گرفته ایم استفاده از چند کتابخانه، io.h استاندارد است که - چون printf. چون printf، در میان چیزهای دیگر. cs50.h، است که بین المللی و دریافت رشته و غیره، string.h، که خ لنگ بود. اما معلوم است هنوز دیگری وجود دارد. رک و پوست کنده، مقدار زیادی و مقدار زیادی از هدر وجود دارد فایل هایی که اعلام توابع برای کتابخانه ها، اما این ctype.h است در واقع رفتن تا حدودی چون من قصد دارم به نفع به جلو بروید و پیاده سازی یک برنامه های دیگر در اینجا. اجازه دهید من به جلو و باز کردن چیزی من در پیش نامیده می شود نوشت capitalize.c، و اجازه دهید نگاهی به چگونگی کارکرد این مدار. توجه کنید که من با استفاده از، در این نسخه از آن، سه فایل های آشنا. توجه کنید که در خط 18، من گرفتن یک خط از متن. توجه کنید که در خط 21، من این ادعا که کد زیر را در حال رفتن به سرمایه گذاری، هر آنچه که کاربر تایپ ، و چه هستم من انجام این کار؟ خوب، من گرفتن - درس های آموخته شده از زمان گذشته - من اعلام i و n و تکرار بر شخصیت در رشته. و سپس آنچه این بلوک است. کد را در خط 24 تا 27 انجام کار در شرایط خارج از حرفه یا فن خاصی است؟ حروف کوچک نامه. دقیقا. اگر براکت - بنابراین اگر i ام شخصیت ها است که خاص کاراکتر در رشته، بزرگتر از یا مساوی به کوچک a و - به یاد بیاورید که دو برابر & نشان و - و شخصیت همان، براکت من، کمتر یا مساوی به کوچک Z، که بدان معنی است که یک یا ب یا ج یا نقطه، نقطه، نقطه، یا Z، که به معنی حروف کوچک می باشد. چه من می خواهم به انجام این کار در آن صورت است؟ خوب، من می توانم این تا حدودی انجام دهد cryptically، اما اجازه دهید در این فاصله کسی را دست انداختن. من قصد دارم به چون printf تماس بگیرید، چاپ٪ چون من می خواهم به چاپ مجدد این شخصیت بر روی صفحه نمایش. من سپس رفتن به براکت من، شخصیت i ام، پس چرا من انجام این ترفند کوچک در اینجا، کوچک پایتخت منفی؟ چه چیزی است که رفتن را به من، به طور کلی؟ [نامفهوم]. دقیقا. من واقعا به یاد داشته باشید - آن 65 برای پایتخت A. من واقعا نمی بود به یاد داشته باشید چه کوچک است، اما مهم نیست. کامپیوتر می داند. بنابراین با گفتن، کوچک منهای سرمایه، آن را عجیب و غریب می شود کم کردن یک کاراکتر از دیگری، اما کاراکتر زیر هود چه هستند؟ آنها اعداد فقط. بنابراین هر آنچه این اعداد، اجازه دهید کامپیوتر آن را به یاد داشته باشید نه از من انسان است. بنابراین سرمایه منهای کوچک رفتن تفاوت را به من بدهد. این اتفاق می افتد به 32، و خواهد بود که مورد حروف کوچک ب و سرمایه B و غیره. این سازگار باقی می ماند، خوشبختانه. بنابراین من اساسا گفت، کوچک نامه، تفریق کردن که تفاوت استاندارد و به طور موثر تغییرات من براکت از کوچک، البته، بزرگ، بدون این که من واقعا نیاز به فکر می کنم یا به یاد داشته باشید، چه بودند شماره های ما صحبت در مورد زمانی که هشت داوطلبان تا روی صحنه آمد؟ در حال حاضر در عین حال، در دیگری، اگر آن نیست حروف کوچک به عنوان تعیین 24 خط، فقط آن را چاپ کنید. من فقط می خواهم به لمس شخصیت های بودند که در واقع در ابتدا کوچک. پس ببینیم این اجازه. اطمینان سرمایه گذاری. وارد شده، OK را بزنید. / سرمایه گذاری. و اجازه دهید من در H-E-L-L-O تایپ در حروف کوچک وارد کنید. و متوجه است که آن را تبدیل به بزرگ. اجازه دهید من این کار را دوباره با یک کلمه متفاوت است. چگونه در مورد D-A-V-I-D با D اول به عنوان یک نام با حروف بزرگ به طور معمول است؟ را وارد کنید. توجه داشته باشید آن را هنوز هم درست است. این فقط خروجی که برای اولین بار بدون تغییر D از طریق آن دیگری ساخت. پس در ذهن داشته باشیم، پس از آن، زن و شوهر از چیزهایی که در اینجا. اول، اگر شما همیشه می خواهید به بررسی دو شرایط در یک بار، شما می توانید و آنها را ما هم به عنوان پیش بینی. شما می توانید کاراکتر ها را در این راه مقایسه و به طور موثر درمان کاراکترها را به عنوان اعداد، اما رک و پوست کنده، این است تا لعنتی مرموز من قصد دارم هرگز به خاطر داشته باشید چگونه به آمده تا با این کار را از ابتدا بدون استدلال از طریق آن کاملا کمی از زمان. آن را نمی خوب بود اگر کسی از یک تابع نامیده می شود وجود دارد پایین آوردن است که می تواند برای من درست پاسخ دهد و یا نادرست، این شخصیت کوچک است؟ خب خوشبختانه، هر کس که نوشت ctype.h دقیقا. اجازه بدهید من در اینجا و اضافه کردن ctype ج انواع، و در حال حاضر اجازه دهید من به پایین و بازنویسی این خط به شرح زیر است. بنابراین اگر آن را به نام پایین تر است، من ادعا می کنند، براکت من، پس من قصد دارم به حذف این دو خط در دسترس نباشد. بنابراین در حال حاضر شخص دیگری، من امیدوار، نوشت یک تابع نامیده می شود پایین تر است، و آن را تبدیل کردن آنها و به آنها اعلام کرد آن داخل ctype.h. و در حال حاضر من قصد دارم به ترک خط 27 به تنهایی، من قصد دارم به ترک خط 31 به تنهایی، اما متوجه چقدر من تا کد من تنگ تر. در حال حاضر پاک کن. کمتر این مشکل را از طریق نگاه زیرا در حال حاضر تابع، علاوه بر این، تا زیبا و آن را به نام فقط آیا آنچه در آن می گوید. بنابراین در حال حاضر من قصد دارم برای صرفه جویی در این. من قصد دارم برای زوم کردن. و فقط به عنوان در ابتدا شما می توانید Booleans، مقادیر بولی درست است یا نادرست، که دقیقا همان چیزی است به طور موثر کاهش می گرداند. به من اجازه کامپایل مجدد. اجازه بدهید من دوباره اجرا کنید. و در حال حاضر اجازه دهید آن را دوباره سعی کنید، H-E-L-L-O، وارد کنید. این خیلی خوب است. و دوباره آن را امتحان کنید، مطمئن شوید که من چیزی پیچ نیست. است که به عنوان خوبی با حروف بزرگ. اما این به اندازه کافی خوب نیست، زیرا دیگر چیزی که من هرگز به به یاد داشته باشید مگر اینکه من را از طریق این واقعا کار کند با دقت، می گویند، کاغذ این خط لعنتی. آیا آن را نمی شود خوب اگر وجود داشت یک تابع نامیده می شود به بالا؟ به خوبی از آن خارج وجود دارد تبدیل می شود در ctype.h است نیز هست. من قصد دارم به جلو بروید و تایپ کنید - اجازه دهید من را که پشت خط. به جای این، اجازه دهید من جلو بروید و می گویند، تعویض٪ ج نتیجه فراخوانی این تابع به بالا در شخصیت i ام از بازدید کنندگان. و در حال حاضر متوجه آن گرفتن کوچک و متعادل کننده شده است. من به یاد داشته باشید که چگونه بسیاری از پرانتز باز و بسته ام. بنابراین در حال حاضر آن را حتی پاک کننده. در حال حاضر این برنامه بهتر و بهتر طراحی شده مسلما به دلیل آن خیلی، خیلی بیشتر قابل خواندن است اما آن را بدون اجازه صحیح است. اطمینان سرمایه گذاری. / سرمایه گذاری. H-E-L-L-O. اجازه دهید آن را دوباره اجرا، D-A-V-I-D. خوب، پس ما هنوز در حال خیلی خوب شکل. اما در حال حاضر به بالا. پیشنهاد می کنم که یکی بیشتر وجود دارد پالایش ما می تواند مطمئن است که خواهد بود واقعا خوب، که واقعا می تواند سفت تا از این کد و واقعا به ما پنج از پنج برای طراحی، به عنوان مثال. چه خوب خواهد بود برای خلاص شدن از؟ خوب، نگاه لعنتی طولانی این بلوک کد فقط برای انجام کاری ساده است. در حال حاضر به عنوان به کنار، که شما ممکن است دیده می شود در بخش فوق العاده این گذشته آخر هفته، شما به شدت نیاز به آکولاد زمانی که شما فقط باید یک خط از کد، حتی اگر ما پیشنهاد نگه داشتن آنها به طوری که آن را می سازد روشن تر، مانند U-شکل خراش بلوک، چه در داخل شعبه است. اما آن را نمی شود خوب می شود اگر به بالا، زمانی که ورودی آن، آن را تبدیل بزرگ اگر آن نیست، و چه فوق العاده در مورد مخالف اگر در حال حاضر بزرگ است؟ فقط آن را از طریق عبور و آن را ترک تنهایی. شاید آن را ندارد که. من می توانید سعی کنید و فقط امیدوارم که آن را ندارد، اما اجازه دهید من معرفی یک چیز دیگر. به جای استفاده از این ساخته شده است در ترمینال پنجره پایین در اینجا، به یاد می آورند که این آیکون مربع سیاه و سفید به شما می دهد پنجره ترمینال بزرگتر است که من می توانم پر صفحه نمایش اگر من می خواهم؟ بنابراین آن را تبدیل کردن آنها نوعی از عجیب نام، اما این چیزها نامیده می شود وجود دارد صفحات man، صفحات کتابچه راهنمای کاربر، مرد برای کوتاه مدت، و من می توانم این دسترسی تایپ کردن مرد - چه من می خواهم به نوع؟ مرد به بالا. و در حال حاضر اگر وجود دارد وجود دارد متوجه عمل در داخل کامپیوتر، این مورد لوازم خانگی، است که فقط سیستم عامل لینوکس، این رفتن به من مجموعه ای تا حدودی مرموز از خروجی، اما شما هم بیش از آن همیشه آن را فرمت تقریبا همان طوری که شما شروع برای رسیدن به آن استفاده می شود. توجه داشته باشید در بالا به بالا و ظاهرا همان مستندات است برای کاهش. هر کس آن را نوشته بود برش برخی از گوشه و آن همه را در یک صفحه قرار داده است. هدف این چیزها در زندگی است برای تبدیل نامه ای به بالا و یا کوچک. توجه داشته باشید که در زیر خلاصه، صفحه مرد من تدریس چه فایل من که شامل چیزی که برای استفاده از این. آن را به من دادن امضا برای این توابع، هر دو از آنها، حتی هر چند که ما در حال حاضر تنها حدود یک مراقبت. در اینجا این است که در حال حاضر توصیف است. تبدیل نامه به بالا ج به بزرگ در صورت امکان. هنوز که آموزنده است، اما اجازه دهید من در حال حاضر تحت مقدار بازگشتی نگاه کنید، چیزی که که پشت دست. بنابراین مقدار برگشتی این است که از نامه تبدیل یا C اگر تبدیل امکان پذیر نیست. ج چیست؟ شخصیت اصلی. شخصیت اصلی است و ما می دانیم که، دوباره، تا رفتن به خلاصه، و هر کس این را نوشتهاید تابع فقط تصمیم گرفت که ورودی به بالا و پایین تر است خودسرانه رفتن به آن می شود ج. آنها می توانستند آن را به نام هر چیزی آنها می خواهند، اما آنها آن را نگه داشته ساده به عنوان ج. بنابراین من مرد مشورت کرده ایم. این جمله به من اطمینان که اگر حروف کوچک نیست، آن را رفتن به فقط من را C هستند، که کامل، که به معنی من می توانم خلاص شدن از شر شرایط دیگری من. پس به من اجازه رفتن به نرمافزاری gedit، و اکنون اجازه دهید من فقط این کار را. من قصد دارم برای کپی کردن دستور printf من. من قصد دارم به پیش بروید و راست در داخل حلقه چاپ، و دریافت خلاص از هم اکنون این کل اگر ساختار. بود یک ایده بد نیست، و آن را بسیار بود بسیار درست و سازگار با همه چیز موعظه ایم، اما فقط لازم نیست. به محض این که شما متوجه بعضی از کتابخانه تابع این است که شخص دیگری وجود دارد نوشت، و یا شاید شما نوشت در نقاط دیگر فایل، شما می توانید آن را و واقعا استفاده شروع به سفت کردن کد. و وقتی که من می گویند که چیزهایی مانند سبک خوب، این واقعیت است که این فرد به نام عمل به بالا، و یا قبلا پایین تر است زیبا و مفید است زیرا آنها بسیار توصیفی است. شما نمی خواهید به تماس توابع خود x و y و z، که بسیار، به این معنی بسیار کمتر است. هر گونه سؤال در آن سری از پیشرفت؟ بنابراین آن را می گویند یکی از کافی takeaways است و حتی به عنوان مشکل خود را مشکل مجموعه را به صورت مجموعه - شاید یکی، اما قطعا P مجموعه دو و بعد، حتی زمانی که آنها درست است لزوما منظور آنها فقط بی نقص هستند رتبهدهی نشده است و یا به خصوص به خوبی طراحی شده است. که محور دیگر به شروع به فکر کردن در مورد. بنابراین این رشته از داخل خود بود حافظه کامپیوتر است، اما اگر شما یک تمام دسته ای از کاراکترها مانند H-E-L-L-O در داخل حافظه RAM و فرض که شما را در برنامه های خود را دریافت رشته تماس بگیرید چندین بار به طوری که شما تماس گرفتن رشته یک بار، و سپس شما تماس گرفتن رشته دوباره. خب، چه رفتن به در طول زمان اتفاق می افتد؟ به عبارت دیگر، اگر شما یک خط کد، البته خارج از چهار چوب، مانند رشته ها می شود - اجازه دهید این کار را. نام رشته برابر دریافت رشته است. بنابراین فرض کنید که خط از کد، به معنای کاربر و یا نام خود را بپرسید. این خط بعدی کد به معنای بپرسید کاربر یا مدرسه خود، و این خط بعدی، و غیره. فرض کنید که ما در حفظ و درخواست کاربر برای یکی دیگر از و رشته دیگر و دیگر. آنها در حال رفتن به ماندن در حافظه در همان زمان. یکی است که قصد ندارم به جامه دیگر. مدرسه دیگر بازنویسی کنید. اما جایی که آنها تمام انجام دهد تا پایان در حافظه؟ خوب، اگر ما شروع به کشیدن بر روی صفحه نمایش، که ما می توانیم این چیز استفاده کنید در اینجا مانند یک تخته سیاه، در صورتی که این سیاه و سفید مستطیل نشان دهنده کامپیوتر من حافظه، من قصد دارم برای شروع به خودسرانه تقسیم آن را به مربع های کوچک، هر کدام نشان دهنده یک بایت از حافظه است. صادقانه بگویم، اگر شما دارای یک گیگابایت RAM این روزها، شما باید یک میلیارد بایت حافظه در کامپیوتر شما، به طوری که یک میلیارد از این مربع. بنابراین کافی است که به می گویند، این واقعا به مقیاس نیست. اما ما می توانیم به رسم همه از این به وضوح به مقیاس مربع، و این در مجموع نشان دهنده حافظه کامپیوتر من. در حال حاضر ما فقط انجام نقطه، نقطه، نقطه. بنابراین به عبارت دیگر، هنگامی که من در حال حاضر اعلان کاربر با رشته GET به من بدهد رشته، چه اتفاقی می افتد؟ در صورتی که کاربر در انواع در "سلام" است که به پایان می رسد در H-E-L-L-O. اما فرض کنید که سپس کاربر انواع در - در واقع، من باید انجام نداده است سلام از آنجا که ما در حال درخواست آنها را برای نام خود را. پس بیایید برگردید اگر من می توانید این کار را انجام دهند. بنابراین اگر من در نوع D-A-V-I-D نام من، اما به یاد می آورند که خط دوم از کد دوباره رشته مدرسه خود را به دریافت کنید. این کلمه از کجا است که کاربر انواع در رفتن به بعدی؟ خوب، شاید این رفتن برای رفتن به H-A-R-V-A-R-D. بنابراین حتی اگر من آن را به عنوان دو ردیف کشیده شده، این است که فقط یک دسته کامل از بایت خود را در RAM کامپیوتر است. یک مشکل وجود دارد در حال حاضر در حال حاضر اگر به خاطر من با استفاده از RAM در این بسیار مناسب اما نوع راه ساده و بی تکلف، آنچه می تواند به شما نه ظاهرا تشخیص؟ از کجا شروع می شود و جایی که یکی از به پایان می رسد، درست است؟ آنها نوع مات با یکدیگر هستند. بنابراین آن را تبدیل از کامپیوتر آیا انجام این کار نیست. اجازه دهید من در واقع در زمان حرکت چند حرف و به جای آن از دانشگاه هاروارد رفتن بلافاصله پس نام کاربر، کاربر در واقع می شود، در پشت صحنه، که از کاراکتر ویژه ای وارد شده توسط کامپیوتر برای او و یا او. / 0، در غیر این صورت به عنوان شخصیت پوچ شناخته شده است آزاردهنده به نام N-U-L، نه N-U-L-L، اما شما نوشتن آن به عنوان / 0. این فقط تمام بیت های صفر نشانگر در بین اولین کلمه که به کاربر تایپ و دوم. بنابراین دانشگاه هاروارد واقع در حال حاضر به پایان می رسد تا به عنوان این دنباله ای از کاراکتر ها و یکی بیشتر / 0. بنابراین به عبارت دیگر، با داشتن این ارزش نگهبان، هشت صفر هم پیوسته بیت، شما هم اکنون می توانید شروع به تشخیص یکی از شخصیت ها از دیگری. بنابراین تمام این مدت چه بود "سلام" است در واقع "سلام" با یک / 0، و در عین حال، بسیار وجود دارد ممکن است به خوبی حافظه بسیار کمی بیشتر در داخل کامپیوتر است. اجازه دهید من می توانم یک چیز دیگر در حال حاضر. به نظر می رسد که همه این مربع ما رسم شده است، آنها هستند، بله، رشته ها، اما به طور کلی، این چیزها آرایه هستند. آرایه است فقط یک تکه از حافظه که پشت به پشت به پشت به پشت، و شما به طور معمول استفاده از یک آرایه از طریق این نماد براکت مربع. بنابراین ما قصد داریم برای دیدن این کاملا یک بیت در طول زمان، اما به من اجازه رفتن به جلو و باز کردن، اجازه دهید آن را سنین می نامند. و متوجه آنچه که ما می توانیم با انجام این ترفند همان، کمی نحو کمی بیشتر در اینجا. بنابراین در خط 17 از این برنامه - در واقع، اجازه دهید من این برنامه برای اولین بار اجرا بنابراین ما می توانیم ببینیم که چه چیزی این چیزی که انجام می دهد. اجازه دهید من تماس بگیرید سنین را به تدوین این برنامه است. / سنین. چگونه بسیاری از مردم در اتاق هستند؟ سه. سن اولین کسی؟ 18، 19، و 20. و در حال حاضر تا حدودی مسخره، من فقط ساخته شده است برنامه ای است که سنین آن سه نفر. بنابراین به وضوح فرصت وجود دارد برای برخی از حساب های سرگرم کننده در اینجا. خوشبختانه، ریاضی درست است. 18 تا 19 رفت، 19 رفت تا 20 و غیره. اما آنچه واقعا به معنای به گویا در اینجا این است که چگونه ما در حال ذخیره سازی سن آن سه نفر را. اجازه بدهید من زوم در چه در اینجا. بنابراین برای اولین بار، این چند خط اول باید گرفتن بسیار آشنا است. من فقط باعث کاربر برای تعدادی از افراد در اتاق. سپس من با استفاده از دریافت int و کار را در حالی که به این کار را دوباره و دوباره و دوباره. ما که الگوی دیده ام قبل، اما خط 27 است و در واقع کاملا مفید است، و تبدیل خواهد شد به طور فزاینده ای مفید است. توجه داشته باشید که آنچه در خط 27 متفاوت این است که من به نظر می رسد اعلام اعضای هیات به نام سن، اما صبر کنید. این فقط سنین اعضای هیات نیست. این براکت مربع وجود دارد، که در داخل آن n است. بنابراین براکت نفر در این زمینه، نه داخل یک دستور printf در اینجا اما در این خط تنها 27، این خط است گفت: من نفر نوع داده int را، که هر کدام از نوع int است. بنابراین این یک سطل است، پس به صحبت می کنند،، در این مورد، سه عدد صحیح به پشت به پشت به طوری که من به طور موثر دارای سه متغیر. جایگزین، به روشن است، این می شود. اگر من می خواستم برای اولین بار دانش آموز سن، من ممکن است این کار را انجام دهند. اگر من می خواستم دانش آموز دوم سن من ممکن است این کار را انجام دهند. اگر من می خواستم دانش آموز سوم سن، من ممکن است این کار را انجام دهند. و خدای ناکرده ما نیاز به همه سن در این اتاق - منظورم این است که، این هک از بسیاری از کپی است، دوباره و دوباره و دوباره بچسبانید. و به علاوه زمانی که من این برنامه را کامپایل، اگر یک دانشجوی دیگر پیاده روی در بیش از از این درب، در حال حاضر تعداد من از متغیرها نادرست است. پس چه خوب است در مورد یک آرایه است که به عنوان به محض این که شما شروع به احساس خود را کپی کردن و چسباندن، شانس هستند که بهترین روش نیست. آرایه به طور بالقوه پویا است. من در پیش چگونه بسیاری از مردم می دانم می رویم به در اتاق، اما من نمی دانم من باید نفر از آنها، و من کشف کردن N هنگامی که زمان می آید. این خط از کد در حال حاضر به معنای، به من بدهد تکه از حافظه است که به نظر می رسد مثل این که در آن تعدادی از جعبه ها بر روی صفحه نمایش به طور کامل وابسته به N است که کاربر تایپ شوید. بنابراین در حال حاضر دیگر این برنامه است در واقع بسیار شبیه به آنچه که ما فقط با شخصیت. توجه داشته باشید من یک حلقه for شروع در خط 30. بنابراین بلافاصله پس از دریافت آرایه، من تکرار از Y برابر با صفر تا n. من فقط باید این چون printf آموزنده پیام به فقط گفت، من سن فرد #٪ من، به طوری که شماره یک، شماره دو، شماره سه. و چرا من این کار را کردند؟ رک و پوست کنده، انسان ها ترجیح می دهند به دفعات مشاهده شده از یک در بالا در حالی که دانشمندان علوم کامپیوتر، صفر تا. دانشمندان کامپیوتر در حال رفتن به استفاده از این نوع برنامه، بنابراین ما رفتن به شروع به شمارش در یکی مانند مردم عادی. و در حال حاضر در خط 33، توجه کمی قطعه مختلف نحو. سن i ام در آن متغیر از نوع آرایه رفتن به گرفتن بین المللی. و در حال حاضر در نهایت، این فقط حساب کردن در اینجا. من در یک حلقه جداگانه به ادعای تصمیم برخی از زمان می گذرد، و در حال حاضر در این حلقه مجزا، این خطوط را اجرا کند. یک سال از هم اکنون، شخص من خواهد بود من ساله، اما متوجه این است که متغیر من. این در حال حاضر من اعضای هیات درصد. و توجه به عنوان اولین مکان نگه دار، من پلاگین در من به علاوه 1 است، بنابراین ما به حساب فرد طبیعی است. و سپس برای ارزش از سن خود، برای من ساله، من را سنین براکت - و به همین دلیل من به علاوه یک در اینجا انجام می دهند؟ آنها فقط در سن. این انتخاب احمقانه من از برنامه. آنها فقط در سن یک سال. من می توانم در هر تعداد که نوع من در واقع می خواهم وجود دارد. بنابراین آنچه در واقع تمام ارتباط در اینجا؟ خوب، اجازه دهید من در واقع حرکت به عقب بیش از اینجا و رنگ یک تصویر از آنچه در پیش روست. آنچه ما می خواهیم با بعدی ما انجام می دهند مشکل تنظیم دو dabbling در جهان از رمزنگاری. بنابراین این رشته از کاراکتر ها است، بنابراین دنباله ای از کاراکتر های مختلف، و آنچه آیا این می گویند؟ آن را در نسخه آنلاین لام. بنابراین من ادعا می کنند که این برابر این، تبلیغات احمق از سالها پیش است که در واقع ممکن است به یاد یکی از ریشه های خود را. بنابراین این یک مثال از رمزنگاری است یا رمزنگاری. معلوم است که اگر شما می خواهید در واقع ارسال اطلاعات و یا به اشتراک گذاری اطلاعات امن با کسی، مانند یک پیام شبیه به این، شما می توانید تقلا حروف. اما به طور معمول، کلمات درهم به طور تصادفی. آنها در برخی از راه permuted شده و یا تغییر در برخی از راه به طوری که - اوه. این یک اسپویلر سرگرم کننده برای زمان بعدی است. بنابراین شما می توانید نقشه آنچه که ظاهرا ای به B. توجه است که خطوط نوشتن با حروف بزرگ و حکیم است. ظاهرا تحقیق الکترونیکی می شود. ظاهرا F-H-E-R S-U-R-E می شود. پس آن را تبدیل از یک نقشه برداری وجود دارد، و در این مورد خیلی احمق وجود دارد نقشه برداری اگر کسی آن را نمیفهمد؟ این چیزی به نام پوسیدگی 13، چرخش 13. این احمقانه رمزگذاری است مکانیسم به دلیل آن را به معنای واقعی کلمه فقط می افزاید: 13 به هر یک از حروف، احمقانه است، به این معنا که اگر شما فقط کمی از وقت آزاد در دست شما و یک مداد، و یا شما فقط به آن فکر می کنم از در سر خود را، شما می توانید سعی کنید همه شده ممکن است - یک، دو، سه، نقطه، نقطه، نقطه، 25 به فقط چرخش تمام حروف الفبا، و در نهایت، شما کشف کردن این پیام چیست. بنابراین اگر شما چیزی شبیه به این در مدرسه ابتدائی عبور پیام خود را به بهترین دوست، اگر مدرسه ابتدائی خود را معلم به سادگی از طریق خواندن پیام و حیوان را مجبور به راه حل، شما ممکن است بعد فورا رفت واز یک پاسخ توسط آن. در حال حاضر البته، در دنیای واقعی، رمزنگاری پیچیده تر است. این یک قطعه از متن از سیستم کامپیوتری است که دارای نام کاربری و رمز عبور، به عنوان تقریبا همه ماست، و این است رمز عبور خود را چه چیزی ممکن است نگاه دوست اگر در هارد خود ذخیره می شود درایو، اما به صورت رمز شده. این فقط یک چرخش حروف، B و B، C. این است بسیار پیچیده تر است، اما از آن استفاده می کند آنچه به طور کلی به عنوان کلید محرمانه شناخته شده است رمزنگاری. این تصویر شرح زیر می گوید داستان با چند آیکون. در سمت چپ، ما باید چیزی را خواهیم متن ساده تماس بگیرید. در جهان از رمزنگاری، دشت متن پیام اصلی است نوشته شده در زبان انگلیسی یا فرانسه و یا هر زبان به آنچه. اگر شما می خواهید آن را به رمز در آوردن، ما را عبور pictorially از طریق یک قفل، بنابراین نوعی از الگوریتم، برخی از تابع یا برنامه ای است که کسی نوشت که تصدیق نامه ها امیدوارم complicatedly تر از فقط اضافه کردن 13 به هر یک از آنها. چه شما از این فرآیند در وسط وجود دارد به نام cyphertext. بنابراین نوع یک کلمه سکسی. این فقط به معنی آن رمزگذاری شده است نسخه ای از متن ساده. و تنها اگر شما همان راز، 13 یا منهای 13، شما قادر به پیام رمزگشایی مانند آن. بنابراین در مجموعه مسئله دو، در میان چیزهای شما اگر در هکر انجام دهد نسخه، شما باید به نوشتن کد برای کرک این کلمه عبور، بدانند آنها چه بودند و چگونه آنها رمزگذاری شده، هر چند ما شما را کمی به من بدهید هدایت در طول مسیر. در نسخه استاندارد، معرفی می کنیم یک زن و شوهر از رمز، رمزگذاری مکانیزم، یکی به نام سزار، یکی Vigenere نامیده می شود، که هنوز رمز چرخشی که در آن می شود چیزی، B چیزی می شود، اما شما باید آن را انجام برنامه نویسی در واقع به دلیل وجود خواهد داشت یک راز کلیدی درگیر است که به طور معمول یک عدد و یا یک کلمه کلیدی است که تنها فرستنده و گیرنده از این پیام باید درک کنند. در حال حاضر، این در واقع تا برداشت در جهان واقعی است. این، برای مثال، یتیم کمی است حلقه رسیور مخفی آنی است، و شما در واقع می توانید از این اجرا رمز چرخشی - چیزی است که می شود، B می شود چیزی - با یک زن و شوهر از چرخ، یکی در خارج، یکی در داخل به طوری که اگر شما چرخ چرخش و یا حلقه، شما در واقع می توانید خط تا حروف با حروف مختلف، گرفتن کد های مخفی. و بنابراین به عنوان مطلب یا داستان جالب امروز، آنچه من فکر کردم من می خواهم انجام دهید این است که کمی از بازگشتی که اگر شما بر روی تلویزیون تبدیل می شوند در دسامبر 24، شما می توانید تماشا کنید فیلم آگهی nauseum برای 24 ساعت در یک ردیف. اما امروز، من آن را در اینجا باز و ما فقط دو دقیقه را داستان کریسمس آموزشی مرتبط با شخص کوچک به نام Ralphie. [پخش ویدئو] می شود آن را به هر کسی که شناخته شده است رالف پارکر بدینوسیله منصوب عضو از یتیم کوچولو آنی مخفی دایره است و برای همه تحت عنوان افتخارات و مزایای اتفاق می افتد به آنها نمیدهد. امضا شده، یتیم کوچولو آنی. در جوهر Countersigned است، پیر آندره. افتخارات و مزایای در حال حاضر در سن نه سالگی. [فریاد در رادیو و تلویزیون] بیا، اجازه دهید با آن دریافت کنید. من تمام است که موسیقی جاز مورد نیاز نیست قاچاقچیان و دزدان دریایی. گوش دادن فردا شب نتیجه گیری ماجراجویی سیاه و سفید کشتی دزدان دریایی. در حال حاضر، این زمان برای راز آنی پیام برای شما اعضای دایره مخفی. به یاد داشته باشید، بچه ها. فقط اعضای دایره راز آنی می تواند پیام مخفی آنی را رمزگشایی می کند. به یاد داشته باشید، آنی است که بسته به شما. تنظیم پین خود را به B2. در اینجا این پیام است. 12، 11، 2 - من در اولین جلسه راز من هستم. -25، 14، 11، 18، 16 - پیر در امشب صدای بزرگ بود. من می توانم پیام که امشب بگویید مهم بود واقعا. -3، 25. این یک پیام از آنی خود است. به یاد داشته باشید، به کسی نگو. -90 ثانیه بعد، من در اتاق تنها هستم در خانه که در آن یک پسر نه می تواند در حفظ حریم خصوصی و رمزگشایی نشسته اند. AHA، B. من به بعد رفت. E. اولین کلمه "باشد." S. این شد که آسان تر است. U. 25. R. بیا، Ralphie. من باید برم. I'll سمت راست پایین، کارشناسی ارشد. صدای تیز و تند هی. -T. O. مطمئن شوید. مطمئن باشید که به چه چیز؟ یتیم کوچولو چه بود آنی در تلاش برای گفتن؟ مطمئن باشید که به چه چیز؟ Ralphie، رندی کردم تا به آن بروید. آیا شما لطفا بیرون می آید؟ همه حق، کارشناسی ارشد. من خواهم بود از سمت راست. -I بود و نزدیک به حال. تنش وحشتناک بود. آن چه بود؟ سرنوشت این سیاره ممکن است آویزان در تعادل. Ralphie، بروید باید رندی. I'll از سمت راست برای گریه کردن با صدای بلند. تقریبا وجود دارد. انگشتان من پرواز کرد. ذهن من یک تله فولاد بود. هر منفذ ارتعاش. این تقریبا روشن بود. بله، بله، بله، بله، بله. مطمئن باشید به نوشیدن Ovaltine شما. Ovaltine؟ یک تجاری اکبیر؟ پسر عوضی. [END پخش ویدئو] SPEAKER 1: این CS50 است، و خواهد بود تنظیم مشکل دو. هفته آینده شما را می بینم. SPEAKER 2: در آینده CS50، این اتفاق می افتد. SPEAKER 1: به همین دلیل یک موضوع ما ندارد نگاه تا کنون که از اشاره گر تابع. در حال حاضر، یک اشاره گر تابع فقط آدرس های عمومی تابع، اما بسیار شبیه - پسر -