>> [موسیقی]
>> 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-- # شامل <stio-- برای ورودی / output-- نقطه ساعت و در واقع،
اگر من در حال حاضر این فایل را ذخیره کنید، من قصد دارم به جلو بروید و روشن شدن صفحه نمایش من،
که شما می توانید با تایپ کردن انجام روشن، و یا شما می توانید کنترل L را نگه دارید،
فقط برای روشن پنجره ترمینال خود را فقط برای از بین بردن برخی درهم و برهمی.
>> من قصد دارم به جلو بروید و دوباره از نوع را buggy0، وارد کنید.
و voila، من هنوز هم می بینیم که دستورات طولانی از صدای جرنگ جرنگ،
اما این بار هیچ پیام خطا وجود دارد.
و در واقع، اگر من ./buggy0 انجام دهید، درست مثل زمان گذشته،
که در آن نقطه به معنی این دایرکتوری، اسلش فقط به این معنی،
در اینجا می آید نام برنامه و که نام برنامه buggy0 است،
را وارد کنید، "سلام، جهان است."
>> در حال حاضر، چگونه ممکن است شما جمع آوری این راه حل
بدون اینکه لزوما به رسمیت شناختن به عنوان بسیاری از کلمات
به عنوان من، قطعا، داشتن این برای سال های بسیاری انجام می شود؟
خوب، متوجه هر مشکل اول مجموعه، ما شما را به یک فرمان
که کارکنان خود CS50 را نوشت به نام help50.
و در واقع، C می کند خصوصیات مشکل را به عنوان به چگونگی استفاده از این.
>> اما اساسا help50 برنامه ای است که کارکنان CS50 را
نوشت که اجازه می دهد تا شما را به اجرای یک فرمان یا اجرای یک برنامه،
و اگر شما را درک نمی کنند آن خروجی، به تصویب خروجی آن به help50،
که در آن نقطه نرم افزار که کارکنان دوره نوشت
در خروجی برنامه خود را نگاه کنید خط به خط، کاراکتر به کاراکتر.
و اگر ما، کارکنان، تشخیص پیغام خطا که شما تجربه،
ما سعی خواهد کرد برای تحریک با برخی از پرسش بلاغی، با برخی از مشاوره،
بسیار شبیه به یک TF یا CA یا خودم در فرد در ساعات اداری انجام دهند.
>> بنابراین به help50 نگاه اگر شما نمی لزوما یک مشکل را تشخیص دهد.
اما بر روی آن تکیه می کنند بیش از حد عنوان چوب زیر بغل.
قطعا سعی کنید به درک آن خروجی و سپس از آن یاد بگیرند
به طوری که تنها یک یا دو بار شما انجام تا به حال اجرا help50 برای یک خطای خاص
پیام.
پس از آن، شما باید باشد بهتر است خود را مجهز
به کشف کردن آنچه آن واقع است.
>> بیایید یک دیگر را در اینجا انجام.
اجازه بدهید به جلو، و در دیگری فایل ما این buggy1.c پاسخ.
و در این فایل من رفتن به deliberately--
اما وانمود کنم که نمی درک آنچه اشتباه من ساخته ام.
>> من قصد دارم به جلو بروید و انجام this-- # شامل، از من
درس من از یک لحظه پیش به دست.
اعضای هیات تحریریه اصلی (خالی)، مانند قبل.
و سپس در اینجا من قصد دارم به انجام رشته ها - get_string.
و به یاد از زمان گذشته که این ابزار، هی، کامپیوتر،
من یک متغیر را، پاسخ آن را، و را نوع آن متغیر یک رشته
بنابراین من می تواند یک یا چند کلمه در آن ذخیره کنید.
>> و سپس بر روی سمت راست طرف از علامت مساوی
get_string است، که یک تابع در کتابخانه CS50
که کند که دقیقا.
این می شود یک تابع و سپس دست آن را از راست به چپ.
بنابراین این علامت مساوی به این معنا نیست "برابر" را به عنوان ما ممکن است در ریاضی فکر می کنم.
این بدان معنی است انتساب از راست به چپ.
بنابراین این به این معنی، را به رشته از کاربر و ذخیره آن در داخل از بازدید کنندگان.
>> حالا اجازه دهید آن استفاده کنید.
اجازه بدهید به جلو در حال حاضر و به عنوان یک دوم خط، اجازه دهید من به جلو بروید و بگویید "سلام" -
نمی "جهان"، اما "سلام،٪ s-- که حفره یا سوراخ ما، کاما از هم است،
که متغیر ما است، و سپس یک نقطه ویرگول.
بنابراین اگر من پیچ نیست تا بیش از حد در اینجا، این به نظر می رسد مانند کد صحیح است.
>> و غرایز من در حال حاضر آن را کامپایل.
فایل به نام buggy1.c.
بنابراین من قصد دارم به انجام buggy1، وارد کنید.
و سد آن، اگر وجود ندارد حتی اشتباهات تر از قبل.
منظورم این است که، بیشتر وجود دارد پیام های خطا آن را
از خطوط واقعی در این برنامه به نظر می رسد.
>> اما غذای آماده در اینجا این است، حتی اگر شما غرق هستید
با دو یا سه و یا چهار پیام های خطا بیشتر،
تمرکز همیشه در بسیار برای اولین بار از این پیام است.
نگاهی به بالا ترین یک، پیمایش به بالا عنوان لازم باشد.
بنابراین در اینجا من buggy1 را تایپ.
در اینجا است که خروجی صدای جرنگ جرنگ عنوان انتظار می رود است.
>> و در اینجا اولین خطا قرمز است.
استفاده از شناسه اعلام نشده رشته، به این معنی من استاندارد در؟
بنابراین در استاندارد است در واقع چیز دیگری است.
آن را به کاربر اشاره دارد صفحه کلید، در اصل.
>> اما این چیزی است که من به معنای نیست.
من به معنای رشته و من به معنای get_string.
بنابراین آنچه در آن است که من فراموش کرده به انجام این زمان؟
چیزی که گم این زمان؟
من # شامل من، بنابراین من دسترسی به تابع () printf است.
>> اما چه چیزی من نمی دسترسی به فقط رتبهدهی نشده است؟
خوب، درست مثل زمان گذشته، من نیاز به کامپایلر به
صدای جرنگ جرنگ چه این توابع هستند.
Get_string نمی آید با C. و به طور خاص، آن را
در نمی آمد هدر فایل،.
از آن به جای در می آید چیزی کارکنان نوشت،
که یک فایل متفاوت است نام اما به درستی به نام.
>> بنابراین به سادگی با اضافه کردن یک خط که از فراخوان code-- از زمان گذشته
که وقتی صدای جرنگ جرنگ اجرا می شود، آن را به بالا کد من نگاه به پایین،
چپ به راست.
آن را به اطلاع، آه، شما می خواهید.
به من اجازه رفتن و پیدا کردن که، هر جا که بر روی سرور است،
کپی و چسباندن آن، در اصل، به بالای فایل خود را
به طوری که در این نقطه در داستان، خط 1، بقیه برنامه
می توانید، در واقع، استفاده از هر یک از توابع در آن، در میان آنها get_string.
بنابراین من قصد دارم به چشم پوشی بقیه کسانی که اشتباهات،
چون من، در واقع، گمان می برند که تنها یکی از اولین واقع اهمیت.
و من قصد دارم به جلو بروید و مجدد، پس از ذخیره فایل من را buggy1.
و voila، آن کار را انجام داد.
و اگر من ./buggy1 و نوع در، برای به عنوان مثال، Zamyla، من در حال حاضر دریافت خواهد شد به سلام،
Zamyla، به جای سلام، جهان.
>> خیلی خوب.
بنابراین takeaways در اینجا پس از آن به، یکی، سعی کنید به اینسو انسو جمع به عنوان آنجا که می توانید
از پیام های خطا به تنهایی، به دنبال در برخی از کلمات قابل تشخیص است.
محدودیت که، با استفاده از help50 در مشکل تنظیم مشخصات.
اما محدودیت، بیش از حد، همیشه نگاه در خطا بالا تنها، حداقل
در ابتدا، برای دیدن آنچه اطلاعات آن ممکن است در واقع عملکرد.
اما معلوم است وجود دارد قابلیت حتی بیشتر ساخته شده است
به کتابخانه CS50 برای کمک به شما در اوایل ترم
و در اوایل برنامه نویسی کشف کردن آنچه که اشتباه است.
بنابراین اجازه دهید یک مثال دیگر اینجا انجام دهید.
من قصد دارم به پاسخ این buggy2، که، دوباره است، رفتن به ناقص شود
از دروازه، طراحی شده توسط.
>> و من قصد دارم به جلو بروید و # شامل.
و سپس من را به انجام INT اصلی (خالی).
و سپس من را به انجام یک حلقه for.
برای (من اعضای هیات _ 0.
من کمتر از یا برابر با 10 است.
من + +، و پس از آن در آکولاد، من قصد دارم برای چاپ کردن فقط یک نماد هشتگ در اینجا
و یک شخصیت خط جدید.
>> بنابراین قصد من با این برنامه کاملا به سادگی
به تکرار 10 بار و در هر تکرار
که حلقه هر بار از طریق چرخه،
چاپ کردن یک برچسب، یک هشتگ، یک برچسب.
یک خط در هر چون من که خط جدید وجود دارد.
به یاد بیاورید که برای حلقه، در آخرین week--
و شما بیشتر از آشنا با نحو
با استفاده از آن با عمل قبل از long-- این به من می دهد
یک متغیر به نام من و از آن مجموعه به 0.
>> این افزایش در من هر تکرار 1.
بنابراین من می رود تا 1 به 2 تا 3.
و پس از آن به این بیماری در وسط بین نیمه دونقطه
می شود در هر تکرار بررسی به مطمئن باشید که ما هنوز هم در محدوده هستند.
بنابراین من می خواهم به تکرار 10 بار، بنابراین من باید از بسیار به طور مستقیم فقط
قرار 10 به عنوان حد بالای من وجود دارد.
>> و با این حال، زمانی که من این اجرا پس از آن، کامپایل کردن آن با آرایش buggy2--
و آن را OK کامپایل.
بنابراین من ندارد خطای نحوی این زمان.
اجازه دهید پیش بروید و اجرا buggy2، وارد کنید.
و در حال حاضر تا رفته.
و اجازه دهید من افزایش اندازه پنجره.
>> من به نظر می رسد 1، 2، 3، 4، 5، 6، 7، 8، 9، 10، 11.
بنابراین 11 هشتگ وجود دارد، حتی اگر من به وضوح 10 در داخل این حلقه قرار داده است.
در حال حاضر، برخی از شما ممکن بلافاصله ببینید آنچه خطا به دلیل، در واقع، این است
یک خطای بسیار سخت به است.
اما آن را بسیار معمول خیلی زود در ساخته شده است.
>> چه من می خواهم به این نکته اشاره، هر چند، است، چگونه ممکن است من این را کشف کردن؟
خب، معلوم است که کتابخانه CS50 می آید
با نه تنها get_string و get_int و get_float و دیگر توابع.
همچنین با یک تابع خاص می آید نام eprintf، و یا، تابع () printf خطا.
و آن را صرفا به آن را برای شما کمی ساده تر
هنگام اشکال زدایی کد های خود را فقط چاپ یک پیغام خطا بر روی صفحه نمایش
و می دانم که از کجا آمده.
>> برای مثال، یک چیز من ممکن است در اینجا انجام با این تابع this-- است
eprintf، و سپس من قصد دارم به جلو بروید و می گویند من در حال حاضر٪ من، بک اسلش، N.
و من قصد دارم به برق وصل ارزش من.
و تا بالا، به دلیل این است در کتابخانه CS50،
من قصد دارم به جلو بروید و شامل
بنابراین من دسترسی به این تابع است.
اما اجازه دهید در نظر گرفتن آنچه خط 9 قرار است به انجام می شود.
من قصد دارم به حذف این در نهایت.
این هیچ ربطی به با هدف اساسی من.
اما eprintf، تابع () printf خطا است، فقط به معنای به من برخی از اطلاعات تشخیصی است.
وقتی که من برنامه من اجرا، من می خواهم این را ببینید بر روی صفحه نمایش به طور موقت
و همچنین فقط به درک چه خبر است.
>> و، در واقع، در هر تکرار در اینجا خط 9
من می خواهم برای دیدن، چه مقدار از من است؟
ارزش من چیست؟
و امیدوارم، من باید تنها این پیام، همچنین، 10 بار مشاهده.
>> بنابراین اجازه دهید من به جلو و کامپایل مجدد برنامه من،
به عنوان من باید انجام دهید هر زمان من ایجاد یک تغییر. ./buggy2.
و now-- OK.
خیلی بیشتر رفتن وجود دارد.
بنابراین اجازه دهید من رفته تا در یک پنجره حتی بزرگتر.
>> و شما که هر یک از دیدن هشتگهای هنوز چاپ.
اما در بین هر یک از آنها در حال حاضر این خروجی تشخیصی فرمت شرح زیر است.
نام برنامه من در اینجا buggy2 است.
نام فایل buggy2.c است.
شماره خط که از آن این چاپ شده بود خط 9 است.
و سپس در سمت راست این است که پیغام خطا که من در انتظار.
>> و چه خوب این است که در حال حاضر من مجبور به حساب لزوما
در سر من چه برنامه من انجام شده است.
من می توانید ببینید که در برای اولین بار تکرار i 0 است،
سپس 1، سپس 2 و سپس 3، پس از 4، پس از آن 5، پس از آن 6، پس از 7، پس از آن 8، پس از آن 9، پس از آن
10.
بنابراین یک دقیقه صبر کنید.
اینجا چه خبره؟
من هنوز هم به نظر می رسد شمارش شود عنوان 10 در نظر گرفته شده است.
>> اما جایی که من شروع شد؟
0، 1، 2، 3، 4، 5، 6، 7، 8، 9 10.
بنابراین 0، 1، 2، 3، 4، 5، 6، 7، 8، 9، 10-- انگشت 11TH
نشان دهنده مشکل است.
من به نظر می رسد شمارش اشتباه در حلقه است.
به جای رفتن 10 تکرار، من شروع در 0،
من در و از طریق 10 پایان دادن به.
اما از آنجا که مانند یک کامپیوتر، من شروع شمارش در 0،
من باید شمارش تا به، اما نه از طریق، 10.
>> و به این ترتیب ثابت، من در نهایت متوجه اینجا، یکی از دو چیز است.
من بسیار به سادگی می تواند می گویند شمارش تا کمتر از 10.
بنابراین، 0، 1، 2، 3، 4، 5، 6، 7، 8، 9 است که، در واقع، درست است،
حتی اگر آن را برای تلفن های موبایل یک اشتباه کوچک.
یا من می تواند انجام کمتر یا مساوی تا 9، تا زمانی که من در 0 شروع می شود.
و یا اگر شما واقعا دوست ندارم که، شما می توانید از طریق 10 تعداد بالا اما شروع در 1.
اما باز هم، این فقط این است که رایج نیست.
در programming-- البته نه آنقدر در Scratch--
اما در برنامه نویسی در C و زبان های دیگر،
مانند جاوا اسکریپت و پایتون و دیگران، آن را
فقط بسیار معمول است برای بحث ما در مورد دودویی
فقط شروع به شمارش در کمترین تعداد شما می توانید، که 0.
خیلی خوب.
به طوری که eprintf است.
و دوباره، در حال حاضر که من نمیفهمد من مشکل، و من قصد دارم برای رفتن به 0
از طریق کمتر از 10، من قصد دارم به در و حذف eprintf.
>> این نباید وجود داشته باشد وقتی که من کشتی کد من و یا ارسال کد من
یا آن را به هر کس دیگری.
این واقعا فقط به معنای به طور موقت استفاده می شود.
اما در حال حاضر من این را ثابت کرده ام مشکل خاص است.
>> خوب، اجازه دهید یک مثال دیگر در اینجا انجام که من قصد دارم به شلاق تا شرح زیر است.
من قصد دارم به جلو بروید و #عبارتند از . 50 $
و من قصد دارم به جلو بروید و # شامل.
>> و من قصد دارم به صرفه جویی این فایل به عنوان buggy3.c.
و من قصد دارم به جلو بروید و اعلام INT اصلی (خالی).
و پس از آن در داخل وجود دارد من قصد دارم به اعضای هیات من انجام _ -
من می خواهم برای اجرای یک برنامه با get_negative_int.
این یک تابع است که وجود دارد نشده است.
بنابراین ما در حال رفتن به پیاده سازی آن را در یک لحظه.
اما ما قصد داریم برای دیدن چرا آن حشره دار در اولین گذر است.
و یک بار من بدست یک int از کاربر،
من فقط رفتن به چاپ٪ من منفی است عدد صحیح، بک اسلش، N، کاما، من.
به عبارت دیگر، تمام من می خواهید این برنامه به انجام
این است که یک نوع int منفی از کاربر و سپس چاپ
که چنین و چنین INT منفی است.
>> در حال حاضر من نیاز به پیاده سازی این تابع.
بنابراین بعد از آن در فایل من، من قصد دارم برای رفتن جلو و اعلام یک تابع به نام
get_negative_int (خالی) - و ما دوباره به آنچه که خط به معنی دوباره
در یک moment-- INT N؛ do-- انجام شرح زیر است تابع () printf n است :.
و سپس من را به انجام N - get_int، و این در حالی که N بزرگتر از 0 است.
و سپس بازگشت N ؛.
>> بنابراین در بسیاری در آن وجود دارد این اما هیچ یک از آنها ما
در هفته گذشته نگاه کنید، حداقل به طور خلاصه.
بنابراین در خط 10 در اینجا من اعلام یک تابع به نام get_negative_int،
و من قرار داده ام (خالی)، در پرانتز، به این دلیل که این
کند یک ورودی را ندارد.
من هر چیزی عبور نمی به این تابع.
من فقط گرفتن چیزی از آن را.
>> و آنچه من امیدوار به دریافت یک عدد صحیح است.
هیچ نوع داده در آن وجود دارد C به نام negative_int.
این فقط INT، طوری که آن را به روی ما بود تا مطمئن شوید
که ارزش که در واقع بازگشت نه تنها یک int
اما همچنین منفی است.
>> در خط 12 من اعلام یک متغیر نام N و آن را از نوع int.
و سپس در خط 13 تا 18 من انجام کاری در حالی که چیزی درست است.
من قصد دارم پیش و چاپ N است، روده بزرگ، و پس از آن فضا،
مانند یک اعلان برای کاربر.
>> من پس از آن خواستار get_int و ذخیره سازی مقدار بازگشتی به اصطلاح آن
در آن متغیر N.
اما من قصد دارم به انجام این در حالی که N بزرگتر از 0 است.
به عبارت دیگر، در صورتی که کاربر می دهد به من یک int و که تعداد بیشتری از 0 باشد،
بنابر این، مثبت، من قصد دارم به فقط نگه داشتن reprompting کاربر،
حفظ reprompting، توسط آنها را مجبور به همکاری و من INT منفی بدهد.
>> و یک بار N در واقع negative-- است فرض کاربر، نوع -50،
سپس این حلقه در حالی که دیگر چنین نیست چون -50 بزرگتر از 0.
بنابراین ما از که شکستن حلقه منطقی و بازگشت N.
>> اما یکی دیگر وجود دارد چیزی که من باید انجام دهید.
و من به سادگی می توانید این کار را انجام توسط کپی کردن و چسباندن
یک خط از کد در بالای فایل.
من نیاز به آموزش صدای جرنگ جرنگ، یا قول می دهم به صدای جرنگ جرنگ،
صراحت اعلام کرد که من، در واقع، رفتن و پیاده سازی
این تابع get_negative_int.
آن را فقط ممکن در فایل پایین تر است.
باز هم، به یاد آورید که صدای جرنگ جرنگ می خواند چیزهایی بالا به پایین،
از چپ به راست، به طوری که شما می توانید نیست فراخوانی یک تابع اگر صدای جرنگ جرنگ
نمی داند که آن را به وجود داشته باشد.
>> در حال حاضر، متاسفانه، این برنامه، عنوان برخی از شما ممکن است متوجه،
در حال حاضر حشره دار است.
اجازه دهید من جلو بروید و buggy3.
این کامپایل، بنابراین مشکل من در حال حاضر است یک خطای نحوی، مانند یک خطای متنی،
آن را در واقع برای رفتن به یک منطقی خطا که من عمدا
ساخته شده به عنوان فرصتی برای قدم از طریق چه خبر است.
>> من قصد دارم به جلو بروید در حال حاضر و buggy3 اجرا کنید.
و من قصد دارم به جلو و نه همکاری کنند.
من قصد دارم به آن عدد 1 است.
این آن را دوست ندارد، به طوری که آن را به من دوباره موجب.
>> چگونه در مورد 2؟
3؟
50؟
هیچ کدام از این در حال کار.
چگونه در مورد -50؟
و برنامه به نظر می رسد به کار است.
>> اجازه بدهید من آن را امتحان کنید یک بار دیگر.
اجازه دهید -1، به نظر می رسد به کار است.
اجازه دهید -2، به نظر می رسد به کار است.
اجازه دهید 0.
متعجب، که نادرست است.
در حال حاضر، ما در حال که کمی موشکاف در اینجا.
اما این، در واقع، به صورتی که 0 نه مثبت و نه منفی است.
و به این ترتیب این واقعیت است که برنامه من است و گفت که 0 یک عدد صحیح منفی است،
که از لحاظ فنی درست نیست.
>> در حال حاضر، چرا آن را انجام این کار؟
خب، ممکن است آن را آشکار است.
و، در واقع، این برنامه است به معنای نسبتا ساده
بنابراین ما باید چیزی به اکتشاف.
>> اما اجازه دهید اشکال زدائی سوم معرفی روش در اینجا به نام debug50.
این یک برنامه است که ما فقط ایجاد کرده اید
در این سال به نام debug50 که شما اجازه خواهد داد
به استفاده از چه چیزی ساخته شده است در به نام دیباگر گرافیکی در IDE CS50.
و یک دیباگر فقط یک برنامه است که به طور کلی شما اجازه می دهد برنامه خود را اجرا کنید
اما گام به گام به گام، خط توسط خط به خط، توقف، مجبور
در اطراف، به دنبال در متغیرهای به طوری که برنامه نه تنها گذشته شما ضربه
و به سرعت چیزی را چاپ و یا چیزی را چاپ کنید.
آن را به شما می دهد یک فرصت، در سرعت انسان، به تعامل با آن.
>> و برای انجام این کار، شما می به سادگی زیر را انجام دهید.
بعد از کامپایل کد خود را، که من در حال حاضر، buggy3،
شما جلو بروید و اجرا debug50 ./buggy.
بنابراین بسیار شبیه help50 است را اجرا می کنید help50 و سپس دستور،
debug50 است را اجرا می کنید debug50 و سپس نام دستور.
>> در حال حاضر تماشای چه اتفاقی می افتد بر روی صفحه نمایش من، در سمت راست به طور خاص.
وقتی که من اجرا، همه از ناگهانی پانل این راست
باز می شود تا بر روی صفحه نمایش.
و در بسیاری رفتن وجود دارد در در نگاه اول.
اما بیش از حد وجود ندارد های زیادی در مورد هنوز نگران باشید.
>> این نشان به من همه چیز که که در داخل از برنامه من
در حال حاضر و از طریق این دکمه های تا بالا است و سپس
من اجازه می دهد تا از طریق کد من قدم در نهایت به گام گام به گام.
اما نه تنها هنوز.
توجه داشته باشید چه اتفاقی می افتد.
در پنجره ترمینال من من برای N را برانگیخت.
و من قصد دارم به جلو بروید و همکاری این زمان و نوع در -1.
و البته کمی مرموزانه، -1 یک عدد صحیح منفی است، به عنوان انتظار می رود.
>> و پس از آن کودک با خارج وضعیت 0 GDBserver خروج.
GDB، گنو دیباگر، نام است از نرم افزار های اساسی
که این دیباگر اجرا می کند.
اما این همه واقعا به معنی، دیباگر رفت چون برنامه من ترک
و همه به خوبی.
اگر من می خواهم به واقعا برنامه من اشکال زدایی، من به پیشگیرانه debug50 بگویم،
که در آن من می خواهم به شروع پله از طریق کد من؟
>> و شاید ساده ترین راه برای انجام این کار به شرح زیر است.
اگر من بیش از شناور قطره قطره از ویرایشگر من در اینجا،
بنابراین واقعا فقط در نوار کناری در اینجا، به سمت چپ از شماره خط،
توجه کنید که اگر من فقط کلیک کنید یک بار، من قرار دادن یک نقطه قرمز رنگ است.
و نقطه های کوچک قرمز رنگ، مثل یک علامت توقف، معنی، هی،
debug50، اعدام مکث از کد من سمت راست وجود دارد که من این برنامه را اجرا کنید.
>> بنابراین اجازه دهید انجام این کار.
اجازه بدهید به جلو و اجرای برنامه های من دوباره با debug50 ./buggy3، وارد کنید.
و در حال حاضر، اطلاع، چیزی مختلف اتفاق افتاده است.
من از درخواست نیست در عین حال در پنجره ترمینال من
برای هر چیزی، چرا که من نمی بدست وجود دارد هنوز در برنامه من است.
توجه داشته باشید که در خط 8 که در حال حاضر مشخص شده است،
و یک فلش کوچک وجود دارد در ضرب المثل سمت چپ، شما در اینجا متوقف شد.
این خط از کد، خط 8، هنوز اعدام نشده است.
>> و چه چیزی کنجکاو، اگر من نگاه در اینجا در سمت راست،
توجه کنید که من یک محلی است متغیر، محلی به این معنا
که آن را در داخل تابع فعلی است.
و مقدار آن، ظاهرا به طور پیش فرض، و به نوعی به راحتی، 0 است.
اما من نه از نوع 0.
که فقط اتفاق می افتد آن مقدار پیش فرض در حال حاضر.
>> بنابراین اجازه دهید من به جلو و انجام این کار در حال حاضر.
اجازه دهید من جلو و در رفتن بالا سمت راست در اینجا، من
رفتن به جلو بروید و کلیک بر روی این آیکون برای اولین بار است که
معنی گام بر که به معنی جست و خیز نیست اما مرحله در طول این خط از کد،
اجرای آن در طول راه.
>> و در حال حاضر، اطلاع، من سریع به تازگی تغییر کرده است.
چرا اینطور است؟
من debug50 گفته ام، اجرای این خط از کد.
این خط از کد چیست؟
من دهید برای یک int.
خوب.
اجازه دهید من همکاری کنند.
اجازه دهید جلو بروید و تایپ -1، را وارد کنید.
و در حال حاضر متوجه آنچه تغییر کرده است.
در سمت راست، متغیر محلی من
است به عنوان -1 اکنون نشان داد.
و هنوز هم از نوع int.
>> و توجه بیش از حد، من به اصطلاح پشته پاسخ، جایی که من مکث کرد؟
ما بیشتر در مورد صحبت این در آینده است.
اما پشته پاسخ فقط به اشاره چه توابع در حال حاضر در حرکت است.
در حال حاضر آن را فقط اصلی.
و در حال حاضر تنها محلی متغیر با مقدار 1 است.
>> و زمانی که من در نهایت بیش از این خط گام در اینجا، با که آیکون همان در بالا سمت راست،
-1 یک عدد صحیح منفی است.
در حال حاضر آن توقف بیش از آن آکولاد.
اجازه دهید اجازه دهید آن را انجام دهد.
من بیش از آن خط، و voila گام.
>> بنابراین نه همه که وحشتناکی روشنگر در عین حال،
اما اجازه دهید به من مکث و فکر می کنم از طریق منطقی
آنچه این برنامه انجام شده است.
اما این مورد اشتباه است.
بیایید این کار را دوباره انجام شرح زیر است.
>> من قصد دارم به ترک است که نقطه انفصال در خط 8 با نقطه قرمز رنگ.
من قصد دارم به تکرار debug50.
آن را به طور خودکار در اینجا متوقف شد.
اما این بار، به جای پله بر این خط،
اجازه دهید من در واقع در داخل رفتن get_negative_int و کشف کردن،
چرا آن را به عنوان یک پذیرش 0 پاسخ معتبر است؟
>> بنابراین به جای کلیک کردن مرحله بیش از.
من قصد دارم به جلو بروید کلیک کنید و قدم به.
و توجه کنید که خط 8 که در حال حاضر در حال حاضر برجسته به طور ناگهانی
خط 17 می شود.
>> در حال حاضر، آن است که دیباگر نیست خطوط 14 و 15 و 16 قلم است.
این فقط هیچ چیز وجود دارد به شما وجود دارد را نشان می دهد.
کسانی که تنها تعریف متغیرها، و پس از آن کلمه انجام دهید وجود دارد
و سپس یک آکولاد باز است.
تنها خط عملکردی که آبدار واقعا این یکی در اینجا، 17 است.
و این که در آن ما را به طور خودکار متوقف شد.
>> بنابراین تابع () printf ( "n.is:") ؛، تا که هنوز رخ نداده است.
بنابراین اجازه دهید پیش بروید و کلیک کنید مرحله بیش از.
در حال حاضر سریع من، در واقع، به تغییر ( "n است:").
حالا get_int، من قصد ندارم به زحمت پله به،
چرا که تابع ساخته شده توسط CS50 در کتابخانه.
این احتمالا درست است.
>> بنابراین من قصد دارم به جلو بروید و مرتب کردن بر اساس با دادن آن همکاری
یک int، اما نه یک INT منفی است.
بنابراین اجازه دهید من به جلو و ضربه 0.
و در حال حاضر چه اتفاقی می افتد وقتی که من به خط 21؟
من دوباره تکرار نمی کردم.
من به نظر نمی رسد که در حلقه گیر می شود.
به عبارت دیگر، این زرد نوار را حفظ کند در اطراف،
و در اطراف، و در اطراف.
>> در حال حاضر، این است که چرا؟
خب، N، چه است که n در حال حاضر؟
من می توانید در محلی نگاه متغیرها در دیباگر.
N 0 است.
همه حق است، چه شرایط من بود؟
>> 20-- خط 20 است، خوب، 0 بیشتر از 0 است.
که درست نیست.
0 است بزرگتر از 0.
و بنابراین من از این شکست.
>> و به همین دلیل در خط 21، اگر من در واقع ادامه،
من قصد دارم به بازگشت 0، حتی هر چند که من باید رد 0
به عنوان در واقع نه منفی.
بنابراین در حال حاضر، من واقعا حتی نمی در مورد مراقبت از دیباگر.
کردم آن، من لازم نیست مطمئن شوید که چه بیشتر در جریان است.
>> بنابراین من قصد دارم به جلو بروید و فقط با کلیک بر روی دکمه بازی،
و اجازه دهید این پایان است.
در حال حاضر، من متوجه شدم که من اشکال ظاهرا در خط 20.
که خطای منطقی من است.
>> و بنابراین، آنچه من می خواهم به انجام را تغییر دهید؟
اگر مشکل این است که من نه نواز 0، آن را فقط یک خطای منطقی است.
و می توانم بگویم در حالی که n است بزرگتر یا برابر با 0،
حفظ باعث کاربر دوباره و دوباره.
>> پس، دوباره، اشتباه ساده، شاید حتی واضح زمانی که شما به من دیدم
ارسال آن فقط چند دقیقه پیش.
اما غذای آماده در اینجا این است که با اشکال زدایی 50،
و با اشکال زدایی نرم افزار به طور کلی،
شما این قدرت جدید پیدا شده به راه رفتن را از طریق کد خود را، نگاه
از طریق این پانل سمت راست چه ارزش متغیرهای شما می باشد.
بنابراین شما لزوما مجبور به استفاده از چیزی
مثل شما eprintf به چاپ آن ارزش ها.
شما در واقع می توانید آنها را ببینید بصری بر روی صفحه نمایش.
>> در حال حاضر، فراتر از این، آن را شایان ذکر که یکی دیگر از روش هایی که وجود دارد
در واقع فوق العاده رایج است.
و شما ممکن است به همین دلیل این کمی تعجب مرد در اینجا شده است در مرحله نشسته است.
بنابراین این روش وجود دارد، به طور کلی شناخته شده به عنوان لاستیک اشکال زدایی اردک،
که واقعا فقط یک است عهد به این واقعیت
که برنامه نویسان اغلب هنگامی که در حال نوشتن کد،
آنها لزوما نمی همکاری با دیگران،
و یا کار در یک محیط مشترک.
>> آنها از در خانه هستید.
شاید آن در اواخر شب.
آنها در حال تلاش برای کشف برخی از مشکلات را در کد خود را.
و آنها فقط از دیدن آن نیست.
>> و هیچ اتاقی وجود دارد.
هیچ TF وجود دارد.
هیچ CA اطراف وجود دارد.
همه آنها را در قفسه خود را این تبلیغات در لاستیک کوچک است.
>> و به این ترتیب اشکال زدایی لاستیک اردک فقط این دعوت است
به چیزی به عنوان احمقانه فکر می کنم این به عنوان یک موجود واقعی،
و در واقع از طریق کد خود را راه رفتن شفاهی به این جسم بی جان.
بنابراین، برای مثال، اگر این مثال من است here--
و به یاد آورید که پیش از آن مشکل این بود،
اگر من این اولین خط از کد حذف، و من جلو بروید و حشره دار 0 دوباره،
یاد بیاورید که من این بود پیام های خطا در اینجا.
بنابراین این ایده در اینجا، هر چند که من مسخره احساس در لحظه انجام این کار عمومی،
که خطا است.
>> خوب، پس مشکل من این است که من به طور ضمنی یک تابع کتابخانه اعلام کرد.
و تابع کتابخانه printf است.
Declare-- OK، اعلام مرا به یاد نمونه های اولیه.
>> این بدان معناست که من به واقع نیاز کامپایلر به در پیش چه
تابع نظر می رسد.
یک دقیقه صبر کن.
من io.h. استاندارد ندارد
خیلی ممنون.
>> پس فقط این فرآیند of-- شما لازم نیست که در واقع یک اردک است.
اما این ایده راه رفتن خودتان را از طریق کد خود را
به طوری که شما حتی شنیدن خودتان، به طوری که شما
متوجه حذفیات در خود را اظهارات، این ایده به طور کلی.
>> و شاید منطقی تر، نه چندان زیادی با آن یکی اما بیشتر درگیر
به عنوان مثال ما فقط در 3.c حشره دار انجام داد، شما ممکن است خودتان را از طریق آن راه رفتن
به شرح زیر است.
پس همه حق، لاستیک تبلیغات در، DDB، اگر شما خواهد شد.
در اینجا ما در تابع اصلی من، من خواستار گرفتن INT منفی است.
>> و من گرفتن مقدار بازگشتی است.
من آن را ذخیره سازی بر روی سمت چپ در خط 8 را در یک متغیر به نام من.
OK، اما صبر کنید، چگونه که ارزش گرفتن؟
اجازه دهید من در تابع نگاه در خط 12.
>> در خط 12، ما باید از نوع int منفی است.
هیچ ورودی را ندارد، نمی گرداند یک int، OK.
من در خط 14 A N متغیر.
آن را به ذخیره یک عدد صحیح.
این همان چیزی است که من می خواهم.
>> بنابراین موارد زیر را انجام در حالی که N is-- اجازه من خنثیسازی چه ثابت من در حال حاضر ساخته شده است.
بنابراین در حالی که N بزرگتر از 0، چاپ کردن N است، OK.
و پس از آن تماس را دریافت int در N ذخیره می شود.
و سپس به بررسی اگر n 0، n است not-- وجود دارد آن است.
پس، دوباره، شما نمی نیاز اردک واقعی.
اما فقط خودتان از طریق راه رفتن کد خود را به عنوان یک ورزش فکری
اغلب به شما کمک کند متوجه چه خبر است،
به عنوان مخالف فقط انجام کاری مثل این، خیره شدن به صفحه نمایش،
و خود را صحبت نمی کنم از طریق آن، که صادقانه است
تقریبا به عنوان یک روش موثر.
بنابراین وجود شما به آن، تعدادی از تکنیک های مختلف
برای در واقع اشکال زدایی کد شما و پیدا کردن مقصر، همه از آن
باید ابزار در جعبه ابزار خود را به طوری که شما در اواخر شب نیست،
به ویژه، شما را در ناهار خوری هستید سالن ها، و یا در ساعات اداری،
کوبیدن سر خود را در برابر دیوار، تلاش برای حل بعضی از مشکل.
متوجه باشید که ابزار نرم افزار وجود دارد.
ابزار اردک لاستیک وجود دارد.
و کارکنان کل وجود دارد حمایت انتظار برای قرض دادن یک دست.
>> بنابراین در حال حاضر، یک کلمه در مشکل مجموعه ها، و در آنچه که ما به شما امید
خارج شدن از آنها، و چگونه ما در مورد ارزیابی است.
میانگین پستها در طول برنامه درسی این دوره، مجموعه مسائل CS50 را
در چهار محور اصلی ارزیابی، به طوری که به speak-- دامنه، صحت، طراحی،
و سبک.
و دامنه فقط به چه مقدار اشاره از قطعه شما گاز گرفته؟
چگونه بسیاری از مشکل شما تلاش کرده اند؟
چه سطحی از تلاش شما آشکار؟
>> صحت است، کار می کند برنامه را به عنوان آن را به در مشخصات CS50 قرار
وقتی که شما ورودی خاصی را ارائه و یا خروجی خاص به آینده؟
طراحی ذهنی بسیاری از آنها است.
و این یکی از که خواهد شد را طولانی ترین به یاد بگیرند
و طولانی ترین برای تدریس، در تا آنجا که جوش پایین به،
چگونه به خوبی نوشته شده است کد شما است؟
>> این یک چیز فقط چاپ صحیح است خروجی و یا بازگشت به ارزش های سمت راست.
اما شما آن را انجام عنوان کارآمد که ممکن است؟
آیا شما آن را انجام تقسیم و تسخیر، یا باینری
جستجو به عنوان ما به زودی خواهید دید که ما انجام دادیم دو هفته پیش با دفترچه تلفن؟
راه های بهتری هم برای حل وجود دارد مشکل از شما در حال حاضر اینجا هستید؟
که فرصتی برای طراحی بهتر است.
>> و پس از آن style-- چگونه بسیار کد شما است؟
شما متوجه خواهید شد که من خیلی هستم به ویژه در مورد تورفتگی کد من،
و مطمئن شوید متغیرهای من منطقی به نام. N،
در حالی که کوتاه، یک نام خوب برای یک است تعداد، من برای یک عدد صحیح شمارش،
برای یک رشته است.
و ما می توانیم دیگر سبک نام متغیر.
سبک است که چقدر خوب کند کد خود را نگاه کنید؟
و چگونه قابل خواندن در آن است؟
>> و در طول زمان، چه استادیار خود را و TFS در این دوره انجام خواهد داد
است شما را با آن ارائه نوع بازخورد کیفی
به طوری که شما بهتر در آن جنبه های مختلف.
و از نظر ما چگونه ارزیابی هر یک از این محورها،
آن را معمولا با تعداد بسیار کمی سطل به طوری که شما، به طور کلی،
یک حس که چگونه به خوبی شما انجام می دهند.
و، در واقع، اگر شما یک نمره در دریافت هر یک از این axes-- صحت، طراحی
و سبک especially-- که تعداد به طور کلی بین 1 تا 5 است.
و، به معنای واقعی کلمه، اگر شما در حال گرفتن 3 در آغاز ترم،
این یک چیز بسیار خوب است.
این بدان معنی است هنوز هم وجود دارد اتاق را برای بهبود،
که شما می توانید برای در امید گرفتن یک کلاس برای اولین بار.
است امیدوارم برخی کمی از سقف وجود دارد که شما در حال مشتاق به رسیدن.
و به این ترتیب گرفتن در 3 اولین قطعه،
اگر نه برخی از 2 و 4، است، در واقع، چیز خوبی است.
آن را به خوبی در محدوده است، به خوبی در انتظار.
>> و اگر ذهن خود را مسابقه است، صبر کنید یک دقیقه، سه نفر از پنج.
این واقعا یک 6 از 10.
که 60٪ است.
خدای من، که F است
>> این طور نیست.
این طور نیست، در واقع، که.
نه، این یک فرصت برای بهبود است در طول دوره از ترم.
و اگر شما گرفتن برخی از poors، این یک فرصت هستند
را به استفاده از ساعات اداری، قطعا بخش ها و دیگر منابع است.
>> بهترین فرصت است، واقعا، به افتخار که چقدر شما را
در طول دوره از ترم آمده است.
بنابراین درک، اگر هیچ چیز دیگری، سه خوب است.
و آن را اجازه می دهد تا اتاق را برای رشد در طول زمان.
>> همانطور که به چه کسانی که محور هستند وزن، در واقع شما
رفتن به صرف بیشتر وقت خود را گرفتن همه چیز را به کار، چه رسد به درستی.
و به این ترتیب صحت تمایل به وزن شود بیشتر، به عنوان با
این عامل ضربی از سه.
طراحی نیز مهم است، اما چیزی است که شما لزوما
صرف همه از آن ساعت در تلاش برای بدست آوردن همه چیز فقط به کار است.
>> و پس از آن وزن کمی به آرامی است.
و پس از آن به سبک حداقل وزن است.
حتی اگر آن را کمتر مهم اساسا،
آن را فقط، شاید، ساده ترین کار این حق،
تقلید از نمونه های ما انجام این کار در سخنرانی و بخش،
با همه چیز به خوبی فاصله دار است، و اظهار نظر،
و غیره است که در میان ساده ترین همه چیز برای انجام و گرفتن حق.
بنابراین به عنوان مثل، متوجه که آن نقاط می باشد
است که نسبتا آسان به درک.
>> و در حال حاضر یک کلمه در this-- صداقت علمی.
بنابراین در هر درس برنامه درسی، شما خواهید دید
که البته کاملا کمی از زبان در اطراف این.
و البته طول می کشد موضوع صداقت دانشگاهی کاملا جدی.
>> ما تمایز، برای بهتر یا بدتر،
از داشتن ارسال هر سال بیش دانش آموزان برای اقدام انضباطی
از بسیاری دیگر البته، که من آگاه هستم.
این است نه لزوما نشان دهنده این واقعیت
که دانش آموزان CS، و یا دانش آموزان CS50، می هر کمتر صادق از همکلاسی های خود را.
اما واقعیت این است که در این جهان، به صورت الکترونیکی، ما فقط
باید فن آوری معنی تشخیص این.
>> این برای ما مهم است برای انصاف در سراسر کلاس
که ما انجام تشخیص این، و بالا بردن موضوع وقتی که ما همه چیز را ببینید.
و فقط به رنگ یک تصویر، و واقعا برای کمک به چیزی شبیه به این غرق در،
این تعداد هستند دانش آموزان در طول 10 سال گذشته
که در برخی از درگیر شده است مانند صداقت دانشگاهی،
با برخی از دانش آموزان 32 از پاییز 2015، که
است که می گویند که ما را این موضوع بسیار جدی است.
و در نهایت، این اعداد آهنگسازی، اخیرا، در حدود 3٪، 4٪ یا
از کلاس.
>> بنابراین برای اکثریت فوق العاده از دانش آموزان به نظر می رسد که خطوط روشن است.
اما این را در ذهن، به خصوص در اواخر
در شب زمانی که مبارزه با برخی از راه حل به یک مجموعه ای مشکل،
که مکانیسم وجود دارد برای گرفتن خودتان بهتر
پشتیبانی از شما ممکن است فکر می کنم، حتی در آن ساعت می باشد.
بدانید زمانی که ما دریافت می کنیم ارسالی دانش آموزان، ما عبور
مقایسه هر ارسال در این سال در برابر هر ارسال سال گذشته،
در برابر هر ارسال از سال 2007، و از آنجا که، به دنبال در، و همچنین،
کد مخازن آنلاین، بحث و تبادل نظر، سایت های کار.
و ما این ذکر، در واقع، همه به خاطر
افشای کامل، که اگر شخص دیگری می تواند آن را آنلاین پیدا کنید،
قطعا، ما هم میتوانیم این دوره است.
اما، واقعا، روح از این دوره جوش پایین
این بند در برنامه درسی.
این واقعا فقط، معقول باشد.
>> و به جزییات است که اگر ما به حال فقط با یک زبان کمی بیشتر،
متوجه است که جوهر همه کاری که شما به این دوره ارائه
باید خود شما باشد.
اما در آن، قطعا وجود دارد فرصت ها، و تشویق،
و ارزش آموزشی در تبدیل به others-- خودم، TFS، به CAS،
استادیار، و دیگران در کلاس، برای پشتیبانی، اجازه دهید دوستان تنهایی
و هم اتاقی که مطالعه کرده اند CS و برنامه نویسی قبل از.
و چنین است که کمک هزینه برای آن وجود دارد.
و قانون کلی است this-- هنگام درخواست کمک،
شما ممکن است کد خود را به دیگران نشان می دهد، اما شما ممکن است آنها را مشاهده کنند.
بنابراین حتی اگر شما در ساعات اداری هستید، و یا در سالن D، یا در جایی دیگر
کار بر روی برخی مجموعه قطعه، کار در کنار یک دوست، که
کاملا خوب است، در پایان روز کار خود را
باید در نهایت به هر تعلق از شما به ترتیب، و نه
است برخی از تلاش های مشترک، به جز برای پروژه نهایی که در آن
آن را مجاز و تشویق شود.
>> متوجه باشید که اگر شما مبارزه با چیزی
و دوست شما فقط اتفاق می افتد بهتر است در این پس از آن شما،
یا بهتر است در این مشکل از شما، و یا کمی دورتر پیش از شما،
آن را کاملا معقول و منطقی به نوبه خود به دوستان خود و می گویند، هی،
آیا ذهن شما به دنبال در کد من در اینجا، کمک به من نقطه چه مشکل من است؟
و امیدوارم، در منافع ارزش آموزشی
که دوست نه تنها می گویند، آه، این کار را، اما نه،
آنچه از شما در خط از دست رفته 6، و یا چیزی شبیه به آن؟
اما راه حل نیست برای دوست در کنار شما
می گویند، آه، خوب، در اینجا، اجازه دهید من جلو این تا، و راه حل من به شما نشان دهد.
به طوری که خط است.
شما نشان می دهد کد های خود را به دیگران، اما شما ممکن است
مشاهده آنها، موضوع را به دیگر محدودیت در برنامه درسی دوره است.
>> پس وقت را در ذهن این را به اصطلاح بند تاسف
در برنامه درسی دوره و همچنین، که اگر شما انجام یک عمل که
منطقی نیست، اما آن را به ارمغان می آورد توجه سر درس
در عرض 72 ساعت، دوره ممکن است تحریم های محلی تحمیل که
ممکن است شامل نامطلوب و یا عدم درجه برای کار کنید.
اما این دوره مراجعه نمی مهم برای اقدام انضباطی بیشتر،
مگر در موارد اعمال تکرار شده است.
به عبارت دیگر، اگر شما را به برخی از احمقانه، به خصوص در اواخر شب، تصمیم
که صبح روز بعد یا دو روز بعد، شما خواب پاشی و ببینی،
چی فکر میکردم؟
شما در CS50 انجام یک خروجی برای رفع این مشکل
و داشتن تا به آن، به طوری که ما شما در نیمه راه دیدار خواهد کرد و برخورد
با آن در یک ماده است که هر دو آموزشی و ارزشمند برای شما،
اما هنوز هم در برخی از راه تنبیهی.
و در حال حاضر، را به لبه خاموش، این.
>> [پخش ویدئو]
>> [موسیقی]
>> [پایان دادن به پخش]
DAVID J. مالان: بسیار خوب، ما هستند.
و در حال حاضر ما در یکی از نگاه برای اولین بار از حوزه های دنیای واقعی ما
در CS50، هنر رمزنگاری، هنر ارسال و دریافت
پیام های محرمانه، رمزگذاری پیام اگر شما خواهد شد،
که تنها می تواند کشف رمز می شود اگر شما برخی از مواد تشکیل دهنده کلیدی که فرستنده است
به خوبی.
بنابراین برای ایجاد انگیزه این ما را یک در این چیزی که اینجا نگاه کنید،
که نمونه ای از یک است حلقه رسیور راز که
می توان به منظور به شکل مورد استفاده قرار چه یک پیام مخفی واقع است.
در واقع، در روز در مدرسه،
اگر شما تا کنون پیام های محرمانه به ارسال برخی از دوستان یا برخی از پیروز شدن در کلاس،
شما ممکن است فکر شما باهوش بودن
توسط در قطعه خود را از تغییر کاغذ، مانند، A به B و B به C و C به D،
و غیره.
اما در واقع شما رمزنگاری شد اطلاعات خود را، حتی
اگر آن را کمی بی اهمیت بود، نه که سخت برای معلم به درک،
خوب، اگر شما فقط تغییر B به A و C به B،
شما در واقع شکل چه پیامی بود،
اما شما در به رمز درآوردن اطلاعات بودند.
>> شما فقط انجام آن به سادگی، بسیار شبیه به Ralphie اینجا
در یک فیلم معروف که نقش nauseum پاسخ آگهی بسیار هر زمستان.
[پخش ویدئو]
-باشید آن را به همه که شناخته شده رالف پارکر وسیله
منصوب عضو کوچک یتیم آنی راز دایره
است و به تمام افتخارات تحت عنوان و مزایای رخ نمیدهد.
>> -Signed، کوچک یتیم آنی، ضد امضا پیر آندره، در جوهر.
برتری ها و منافع، در حال حاضر در سن نه سالگی.
>> [داد زدن]
-بی خیال.
بیایید در با آن است.
من همه که موسیقی جاز لازم نیست در مورد قاچاقچیان و دزدان دریایی.
>> فردا شب، گوش دادن برای ماجراجویی نتیجه گیری
از کشتی دزدان دریایی سیاه و سفید.
در حال حاضر، این زمان برای پیام مخفی آنی
برای شما از راز دایره عضو دارد.
به یاد داشته باشید، بچه ها، تنها اعضای از راز دایره آنی
می توانید پیام های مخفی آنی رمزگشایی.
>> به یاد داشته باشید، آنی است بسته به شما.
تنظیم پین خود را به B2.
در اینجا این پیام است.
12، 11--
>> -I در هستم، اولین جلسه مخفی من.
>> -14، 11، 18، 16.
>> -Pierre در امشب صدای بزرگ بود.
من می توانم بگویم که امشب پیام بسیار مهم بود.
>> -3، 25، که یک پیام را از آنی خودش.
به یاد داشته باشید، به کسی نگو.
>> -90 ثانیه بعد، من در تنها هستم اتاق در خانه که در آن یک پسر نه
می تواند در حفظ حریم خصوصی و رمزگشایی نشستن.
آها، B!
من به بعد، E. رفت
>> اولین کلمه است باشد.
S، آن را در آینده آسان تر در حال حاضر، U، 25--
>> اوه، بیا، Ralphie، من باید بروید!
>> -I'll شود حق را، کارشناسی ارشد!
صدای تیز و تند هی!
>> T، O، مطمئن شوید که to-- مطمئن باشید به چه چیزی؟
یتیم کمی چه بود آنی تلاش برای گفتن؟
مطمئن باشید که به چه چیزی؟
>> -Ralphie، اندی به کردم تا رفتن، شما را به مدیر بیرون می آیند؟
>> حق همه، کارشناسی ارشد!
من در بیرون راست!
>> -I نزدیک در حال حاضر گرفتن شد.
تنش وحشتناک بود.
این چی بود؟
سرنوشت این سیاره ممکن است در تعادل آویزان.
>> -Ralphie!
باید اندی بروید!
>> -I'll شود سمت راست، برای گریه کردن با صدای بلند!
>> -Almost وجود دارد، انگشتان من پرواز کرد، ذهن من یک تله فولاد بود، هر منفذ ارتعاش.
این تقریبا روشن بود، بله، بله، بله.
>> -باشید مطمئن شوید که به نوشیدن ovaltine خود را.
Ovaltine؟
تجاری می نکبتی؟
پسر عوضی.
[پایان دادن به پخش]
DAVID J. مالان: خوب، پس که یک راه خیلی طولانی بود
معرفی رمزنگاری، و همچنین ovaltine.
در واقع، از این آگهی های قدیمی در اینجا، به همین دلیل ovaltine خیلی خوب است؟
این استخراج متمرکز رسیده است جو مالت، شیر خالص گاو خامه است،
و به خصوص آماده کاکائو، با هم با فسفو طبیعی و ویتامین ها.
این است که بیشتر با غنی شده ویتامین اضافی B و D، یام.
و شما هنوز هم می توانید آن را دریافت، ظاهرا، در آمازون، به عنوان ما اینجا انجام داد.
>> اما انگیزه اینجا بود معرفی رمزنگاری، به طور خاص
یک نوع از رمزنگاری شناخته شده به عنوان رمزنگاری کلید مخفی.
و به عنوان نام نشان می دهد، طیف امنیت یک سیستم رمزنگاری کلید مخفی،
اگر شما خواهد شد، یک روش فقط برای تقلا
اطلاعات بین دو نفر، این است که تنها فرستنده و تنها دریافت کننده
می دانم که یک key-- راز برخی از ارزش، برخی از عبارت های مخفی، برخی از شماره های مخفی، که
آنها اجازه می دهد تا به هر دو رمزگذاری و رمزگشایی اطلاعات.
و رمزنگاری، واقعا، فقط این هفته 0.
>> این یک مشکل که در آن ورودی وجود دارد، مانند پیام واقعی در انگلیسی
و یا هر زبان که شما می خواهید برای ارسال به کسی که در کلاس،
یا در سراسر اینترنت.
است برخی از خروجی، است که رفتن وجود دارد به پیام درهم که شما
که از مخاطب دریافت خواهید کرد.
و حتی اگر کسی در وسط آن را دریافت بیش از حد،
شما آنها را می خواهید نه لزوما قادر به رمزگشایی آن باشد،
چرا که در داخل این جعبه سیاه، یا الگوریتم،
برخی از مکانیزم، برخی از گام به گام است دستورالعمل ها، برای گرفتن ورودی
و تبدیل آن به خروجی، در امیدوارم راه امن.
>> و، در واقع وجود دارد، برخی از واژگان در این جهان به شرح زیر است
متن ساده کلمه است دانشمند کامپیوتر
برای توصیف ورودی پیام، مانند انگلیسی
و یا به هر زبانی که در واقع می خواهید برای ارسال به برخی از انسان های دیگر است.
و پس از آن متن رمز تلاش است به از رمز و یا رمزگذاری شده،
نسخه از آن.
>> اما یک عنصر دیگر در اینجا وجود دارد.
یکی دیگر ورودی به وجود رمزنگاری کلید مخفی.
و این نکته کلیدی است، که است که، به طور کلی،
همانطور که خواهیم دید، تعداد، و یا نامه، و یا کلمه، هر آنچه
الگوریتم آن است که در واقع انتظار.
>> و چگونه می توانم به شما اطلاعات رمزگشایی؟
چگونه می توانم آن شما unscramble؟
خوب، شما فقط معکوس خروجی و ورودی.
>> به عبارت دیگر، یک بار کسی دریافت پیام های رمزگذاری شده خود،
او به سادگی است می دانم که همان کلید است.
آنها متن رمزی دریافت کرده اند.
و با اتصال آن دو ورودی به سیستم رمزنگاری،
الگوریتم، از این کادر سیاه و سفید، خارج باید متن اصلی آمده است.
و به طوری که در سطح بسیار بالا است نمایی از آنچه رمزنگاری است که در واقع
تماما در مورد.
>> بنابراین اجازه دهید وجود دارد.
اکنون بیایید زیر نگاه هود از چیزی
ما در نظر گرفتن ام برای اعطا هفته گذشته، و برای این جلسه
here-- رشته.
یک رشته در پایان روز فقط یک رشته از کاراکتر است.
>> این ممکن است جهان سلام، یا سلام Zamyla، و یا هر چیز دیگری.
اما به چه معنا به یک دنباله از شخصیت؟
در واقع، کتابخانه CS50 می دهد ما یک نوع داده به نام رشته.
>> اما در واقع وجود ندارد چنین چیزی به عنوان یک رشته در C
این واقعا فقط یک دنباله از است شخصیت، شخصیت، شخصیت،
شخصیت، تماس، به عقب، به تماس، به عقب، به عقب در داخل
از حافظه کامپیوتر شما و یا RAM.
و ما نگاهی عمیق تر به که در آینده زمانی که ما در حافظه خود نگاه کنید،
و استفاده، و تهدیدهایی که درگیر هستند.
>> اما اجازه دهید رشته Zamyla در نظر بگیرند.
پس فقط نام انسان در اینجا، Zamyla،
که دنباله ای از است شخصیت ها، Z-A-M-Y-L-A.
و در حال حاضر بیایید فرض کنیم که نام Zamyla است است که در داخل یک کامپیوتر ذخیره می شود
برنامه است.
>> خوب، آن ایستد به همین دلیل است که ما باید قادر به در آن نگاه شخصیت
به طور جداگانه.
بنابراین من فقط رفتن را به منظور جلب یک جعبه در اطراف نام Zamyla در اینجا.
و آن را در مورد C است که وقتی شما باید یک رشته مانند Zamyla-- و شاید
که رشته است از آمده یک تابع مانند رشته GET،
شما در واقع می تواند دستکاری شخصیت آن شخصیت.
>> در حال حاضر، این وابسته است برای گفتگو در دست، به دلیل
در رمزنگاری اگر شما می خواهید به تغییر A به B و B به C و C به D،
و غیره، شما نیاز دارید که قادر به در شخصیت فردی نگاه
در یک رشته است.
شما باید قادر به تغییر از Z به چیز دیگری، از A
به چیز دیگری از M به چیز دیگری، و غیره.
و بنابراین ما نیاز به یک راه، برنامه نویسی، بنابراین
به صحبت می کنند، در C قادر به تغییر و در نامه های فردی است.
و ما می توانیم این را به عنوان زیر را انجام دهد.
>> به من اجازه رفتن سر به عقب در IDE CS50.
و اجازه دهید من به جلو بروید و ایجاد یک فایل جدید
که من این بار string0 پاسخ، به عنوان اولین مثال ما، نقطه C.
و من قصد دارم به جلو بروید و شلاق آن را به عنوان شرح زیر است.
>> بنابراین شامل CS50.H، و پس از آن عبارتند io.h استاندارد،
که من تقریبا همیشه برای رفتن با استفاده از در برنامه های من، حداقل
در ابتدا.
اعضای هیات اعتبار اصلی، و سپس در اینجا من رفتن به انجام رشته می شود از رشته است.
و پس از آن من قصد دارم به جلو بروید و این کار را.
من می خواهم به جلو بروید و به عنوان یک بررسی سلامت عقل،
فقط می گویند، سلام، درصد S، نیمه روده بزرگ، باعث می شود رشته 0.
اوه اوه، چه من در اینجا انجام دهید؟
اوه، من آن را به برق وصل نیست.
بنابراین درس آموخته، که عمدی نبوده.
>> بنابراین خطا، درصد بیشتر تبدیل از استدلال داده است.
و این است که در آن، در خط 7-- خوب، پس من،
نقل قول را تمام کردن، که رشته من به printf است.
من یک علامت درصد کردم.
اما من از دست رفته آرگومان دوم.
>> من از دست رفته ها کاما از هم، که من در نمونه های قبلی مجبور.
بنابراین فرصت خوبی برای رفع یک اشتباه، به طور تصادفی.
و در حال حاضر اجازه دهید من اجرا string0، نوع در Zamyla.
OK، سلام Zamyla.
>> بنابراین ما این نوع از برنامه اجرا چند بار مختلف در حال حاضر.
اما اجازه دهید انجام کاری کمی متفاوت این زمان.
به جای فقط چاپ در Zamyla طیف نام با تابع () printf،
اجازه دهید آن را انجام کاراکتر به کاراکتر.
>> من قصد دارم به استفاده از یک حلقه.
و من قصد دارم به خودم یک متغیر شمارش، من به نام.
و من قصد دارم به حفظ تکرار، بنابراین زمانی که من کمتر از طول است.
>> به نظر می رسد، ما نداشت این آخرین بار،
که C می آید با یک تابع به نام استرلینگ.
در این روز، و به طور کلی هنوز هم زمانی که اجرای توابع،
انسان اغلب بسیار را انتخاب کنید نام موجز این نوع صدا
مانند آنچه که شما می خواهید، حتی اگر آن را از دست رفته چند حروف صدادار یا حروف.
بنابراین استرلینگ است که نام یک تابع که
طول می کشد بحث بین پرانتز که باید یک رشته.
و آن را فقط می گرداند یک عدد صحیح، طول این رشته.
>> بنابراین این حلقه در خط 7 است که شروع به شمارش در من برابر با 0.
آن را به افزایش من در هر تکرار
1، به عنوان ما انجام شده است ام چند بار.
اما آن را به تنها این تا نقطه
وقتی که من طول است از رشته خود را.
>> بنابراین این یک راه است، در نهایت، تکرار بیش از شخصیت های
در رشته شرح زیر است.
من قصد دارم برای چاپ کردن یک تمام رشته، اما درصد C،
یک شخصیت واحد پس از یک خط جدید است.
و پس از آن من قصد دارم به به جلو بروید، و من نیاز
به چاپ شخصیت i ام است.
>> بنابراین اگر من متغیر است که نشان می دهد شاخص از رشته، که در آن
شما در آن، من باید قادر به می گویند، من شخصیت i ام از بازدید کنندگان است.
و C است راه انجام این با براکت مربع است.
شما به سادگی می گویند نام رشته، که در این مورد است.
سپس شما استفاده از براکت مربع، که معمولا فقط بالا بازگشت و یا خود را وارد کنید
کلید بر روی صفحه کلید.
و سپس شما در صفحه اول از قرار شخصیت است که شما می خواهید برای چاپ.
بنابراین شاخص برای رفتن به یک number-- 0 یا 1 یا 2 یا 3 یا نقطه،
نقطه، نقطه، برخی از تعداد دیگر.
>> و ما اطمینان حاصل شود که آن را به باشد عدد سمت راست، چون من
شروع به شمارش 0.
و به طور پیش فرض، شخصیت اول در یک رشته است که توسط کنوانسیون 0.
و شخصیت دوم براکت 1 است.
و شخصیت سوم براکت 2 است.
و شما نمی خواهید به بیش از حد تا کنون، اما ما نمی خواهد چرا که ما
رفتن به تنها من تا آن را افزایش برابر با طول رشته.
و که در آن نقطه، این حلقه را متوقف خواهد کرد.
>> بنابراین اجازه دهید من به جلو و صرفه جویی در این برنامه و اجرا را رشته 0.
اما من رو خراب کرد.
به طور ضمنی اعلام تابع کتابخانه استرلینگ با چنین نوع و such-- حال،
این برای تلفن های موبایل آشنا.
اما آن را تابع () printf است.
و آن را رشته نیست.
>> من پیچ نیست تا در به همان شیوه در این زمان.
اما توجه کنید در اینجا کمی پایین بیشتر، شامل string.h هدر،
به صراحت ارائه اعلامیه برای استرلینگ.
بنابراین است که در واقع یک نشانه در آنجا وجود دارد.
>> و در واقع آن را معلوم این فایل هدر دیگری وجود دارد
که ما استفاده کرده ایم نمی در کلاس است، اما آن را
در میان کسانی که در دسترس به شما، به نام string.h.
و در آن فایل، string.h است استرلینگ اعلام کرد.
بنابراین اجازه دهید من به جلو و صرفه جویی در این کار، مطمئن رشته
0-- خوب، بدون پیغام خطا این زمان.
>> ./string0 Zamyla، و من در مورد ضربه را وارد کنید هستم،
که در آن نقطه GetString است رفتن برای بازگشت به رشته، آن را در ثانیه.
پس از آن که برای حلقه است که به تکرار بیش از شخصیت S یکی در یک زمان،
و چاپ آنها در هر خط، به دلیل من که n بک اسلش در پایان بود.
بنابراین من می تواند که بک اسلش حذف n و پس از آن فقط Zamyla چاپ تمام
در همان خط، به طور موثر reimplementing
تابع () printf، است که همه که نه مفید است.
اما در این مورد، من انجام داده ام که نه.
من در واقع یک چاپ شخصیت در یک زمان، در هر خط،
به طوری که ما در واقع اثر را ببینید.
>> اما من باید یک چیز در اینجا توجه داشته باشید.
و ما به آمده این در یک هفته آینده است.
به نظر می رسد که این کد بالقوه حشره دار است.
>> به نظر می رسد که رشته مطلع و برخی از توابع دیگر در زندگی
لزوما همیشه بازگشت آنچه شما انتظار.
ما از کلاس گذشته مطمئن شوید زمان در این است که دریافت
رشته قرار است برای بازگشت به یک رشته است.
اما اگر کاربر در انواع چنین یک کلمه طولانی، و یا پاراگراف، و یا مقاله
که فقط به اندازه کافی وجود دارد حافظه در کامپیوتر را به آن جا.
>> مانند، چه اگر چیزی می رود اشتباه زیر هود؟
این ممکن است اغلب اتفاق نمی افتد، اما می تواند یک بار اتفاق می افتد
در حالی که، بسیار به ندرت.
و پس از آن می رسد که رشته مطلع و توابع مانند آن لزوما
همیشه رشته بازگشت.
آنها ممکن است برخی از مقدار خطا بازگشت، برخی از ارزش نگهبان پس به صحبت،
که نشان می دهد که چیزی را اشتباه رفته است.
و شما فقط این را از پس از آن در کلاس به دست در حال حاضر،
و یا با برخی از اسناد بیشتر مطالعه کنید.
به نظر می رسد که رشته مطلع می توانید یک مقدار به نام NULL بازگشت.
null یک ارزش خاص است که ما دوباره به در یک هفته آینده است.
اما در حال حاضر، فقط می دانم که اگر من می خواهم به واقعا در حال حرکت به جلو مناسب
با استفاده از رشته، من باید نه فقط از آن تماس،
و کورکورانه استفاده مقدار بازگشتی آن، اعتماد که آن را یک رشته است.
>> من برای اولین بار باید بگویم، با سلام، یک دقیقه صبر کنید، تنها
ادامه اگر S برابر نیست تهی، که در آن تهی، دوباره،
فقط برخی از ارزش خاص است.
و آن را تنها ارزش ویژه شما نیاز به نگرانی در مورد برای رشته GET.
مطلع رشته یا رفتن برای بازگشت به یک رشته یا تهی.
>> و این علامت تعجب علامت مساوی شما ممکن است از شاید کلاس ریاضی مطمئن شوید
که شما ممکن است یک علامت مساوی با رسم یک خط از طریق آن به نشان می دهد برابر نیست.
که به طور کلی یک شخصیت نه شما می توانید بر روی صفحه کلید خود را تایپ کنید.
و به همین ترتیب در بسیاری از زبان های برنامه نویسی، زمانی که می خواهید به برابر نیست،
شما با استفاده از یک علامت تعجب، در غیر این صورت به عنوان انفجار شناخته شده است.
بنابراین می توانید بگویید انفجار برابر، که معنی برابر نیست، منطقی است.
این درست مثل یک بزرگتر وجود ندارد از، یا مساوی یا کمتر از
یا مساوی کلید در صفحه کلید خود را که آیا این همه در یک نماد است.
به همین دلیل، در نمونه های گذشته، یک پرانتز باز انجام داد، و پس از آن
یک علامت مساوی، به منظور انجام بزرگتر یا، می گویند، کمتر از.
>> پس چه غذای آماده را در اینجا؟
این است که به سادگی راه در حال حاضر از معرفی این نحو، از این ویژگی،
تکرار بیش از فردی کاراکتر در یک رشته.
و درست مثل آن مربع براکت به شما اجازه در آنها را دریافت کنید،
در نظر آن براکت عنوان نوع اشاره در این زمینه
طراحی، به موجب آن هر شخصیت در داخل یک رشته
از نوع در جایی جعبه زیر هود در حافظه کامپیوتر شما.
>> اما اجازه دهید یک نوع از این.
به نظر می رسد که این برنامه درست است.
بنابراین در هر محور CS50 را برای ارزیابی کد، این در حال حاضر درست است.
به خصوص اکنون که من برای چک کردن تهی، این برنامه هرگز نباید سقوط.
و من فقط می دانم که از تجربه.
اما هیچ چیز دیگری که وجود دارد ما واقعا می تواند به اشتباه اینجا.
اما آن را به خوبی طراحی شده است، چون اجازه بازگشت به اصول اولیه.
>> اول، principles-- چه یک حلقه for انجام دهید؟
برای حلقه نشانی از سه چیز.
این مقدار دهی اولیه برخی ارزش، اگر شما بخواهید آن را به.
این یک شرط بررسی می کند.
پس از هر تکرار، بعد از هر چرخه،
آن واحد افزایش برخی ارزش ها، یا ارزش، در اینجا.
>> پس چه معنا است؟
ما مقداردهی اولیه به 0.
ما را بررسی کنید و مطمئن شوید که من کمتر از است طول، است که Z-A-M-Y-L-A،
بنابراین است که کمتر از 6.
و، در واقع، 0 کمتر از 6.
>> ما نسخه قابل چاپ کردن Z از نام Zamyla است.
سپس ما من افزایش از 0 به 1.
پس از آن ما را بررسی کنید، 1 کمتر از طول است؟
طول بازدید کنندگان 6 است.
بله، آن است.
>> بنابراین ما یک نام Zamyla است، ZA چاپ.
ما من افزایش از 0، 1، 2.
پس از آن ما را بررسی کنید، 2 کمتر از طول نام Zamyla است.
6- پس از 2 کمتر از 6 است.
بله، اجازه دهید نسخه قابل چاپ کردن شرکت M در نام Zamyla، شخصیت سوم است.
>> کلید کار اینجا این است که در هر تکرار داستان، من چک کردن،
من کمتر از طول Zamyla؟
اما گرفتن این است که استرلینگ یک ملک است.
کسانی از شما که برنامه ریزی کرده اند قبل از به زبان جاوا یا زبان های دیگر
ممکن است طول می دانم که از یک رشته است یک ملک، تنها برخی فقط خواندنی ارزش.
>> در C در این مورد، در صورتی که این یک تابع است که به معنای واقعی کلمه
شمارش تعداد شخصیت ها در هر زمان Zamyla
ما که تابع پاسخ.
هر بار که شما کامپیوتر بخواهید به استفاده از استرلینگ، آن را در نظر گرفتن نگاه Zamyla،
و گفت: Z-A-M-Y-L-A، 6.
و آن را برمی گرداند 6.
دفعه بعد که شما پاسخ آن را در داخل که برای حلقه،
آن را به در Zamyla نگاه دوباره، می گویند Z-A-M-Y-L-A، 6.
و آن را به بازگشت به 6.
پس چه احمقانه در مورد این طرح؟
>> چرا کد من یک 5 از 5 است برای طراحی در حال حاضر، پس به صحبت می کنند؟
خوب، من پرسیدن یک درخواست بی ارزش.
من انجام کار بیشتر از من نیاز به.
>> بنابراین حتی اگر پاسخ درست است، من
درخواست از کامپیوتر، چه است طول Zamyla دوباره،
و دوباره، و دوباره، و دوباره؟
و پاسخ این است هرگز به تغییر.
این همیشه به 6.
>> بنابراین یک راه حل بهتر از این می شود این نسخه های بعدی.
اجازه دهید من به جلو و آن را در یک فایل جداگانه به نام string1.c،
فقط به نگه داشتن آن از هم جدا.
و معلوم است در یک برای حلقه، شما در واقع می توانید
متغیرهای متعدد در یک بار.
>> بنابراین من قصد دارم به من نگه دارید و آن را به 0.
اما من هم به رفتن اضافه کردن کاما، و می گویند،
من یک متغیر به نام N، که به ارزش برابر است با طول رشته ها.
و در حال حاضر، لطفا مطمئن شرایط من تا زمانی که من کمتر از n است.
>> بنابراین در این روش، منطق است یکسان در پایان روز است.
اما من به یاد هستم ارزش 6، در این مورد.
طول نام Zamyla چیست؟
و من آن را با قرار دادن در ش.
>> و من هنوز هم چک شرایط در هر زمان.
0 کمتر از 6؟
1 کمتر از 6؟
2 کمتر از 6، و غیره؟
>> اما من کامپیوتر درخواست نیست دوباره، و دوباره، چه
طول نام Zamyla است؟
طول نام Zamyla چیست؟
طول نام این Zamyla چیست؟
من به معنای واقعی کلمه به خاطر سپردن که اول و تنها در این متغیر n دوم پاسخ دهد.
بنابراین این شرکت خواهد بود نه تنها درست است، اما همچنین به خوبی طراحی شده است.
>> در حال حاضر، چه در مورد سبک؟
من متغیرهایی من به نام ام بسیار خوب، من می گویند.
آنها در حال حاضر فوق العاده موجز است.
و این کاملا خوب.
>> اگر شما فقط یکی رشته در یک برنامه،
شما نیز ممکن است پاسخ آن را برای رشته ها.
اگر شما فقط یک متغیر برای شمارش در یک برنامه،
شما نیز ممکن است آن من است.
اگر شما از یک طول، N فوق العاده رایج است و همچنین.
اما من هر یک از کد من اظهار نظر.
>> من مطلع نیست ام reader-- این که آیا این TF من، یا TA است،
یا فقط colleague-- آنچه قرار است به در رفتن در این برنامه است.
و به این ترتیب به سبک خوب، آنچه که من می خواهم به انجام
this-- چیزی است مانند درخواست کاربر را برای ورودی.
و من می تواند بازنویسی این هر تعداد از راه.
>> اطمینان حاصل کنید که s-- مطمئن شوید دریافت رشته یک رشته بازگشت.
و سپس در here-- و این است که شاید از مهم ترین تکرار comment--
بیش از شخصیت در یکی در یک زمان.
و من می توانم هر گونه استفاده انتخاب زبان انگلیسی
در اینجا به تشریح هر یک از از این تکه از کد.
>> توجه داشته باشید که من یک قرار داده نشده اظهار نظر در مورد هر خط از کد،
واقعا فقط در جالب آنهایی که، آنهایی که
برخی از این معنی که من ممکن است خواهید مطمئن فوق العاده به کسی روشن
خواندن کد من.
و چرا شما خواهان دریافت رشته درخواست کاربر را برای ورودی؟
حتی که لزوما که توصیفی است.
اما آن کمک می کند یک داستان، به دلیل خط دوم در داستان است، مطمئن شوید که
رشته دریافت یک رشته بازگشت.
>> و خط سوم در داستان است، تکرار بیش از شخصیت ها در یکی
در یک زمان.
و در حال حاضر فقط برای اندازه گیری خوب، من قصد دارم به جلو بروید و اضافه
یک نظر که فقط می گوید چاپ شخصیت i ام در است.
در حال حاضر، آنچه را که من انجام داده در پایان روز؟
>> من اضافه شده برخی از انگلیسی کلمات را در قالب نظر.
نماد بریده بریده معنی، هی، کامپیوتر این است که برای انسان،
برای شما نیست، کامپیوتر است.
بنابراین آنها منطقی کنه.
آنها فقط وجود دارد.
>> و، در واقع، CS50 IDE آنها نشان می دهد که خاکستری، به عنوان مفید است، اما کلیدی بودن
به برنامه است.
آنچه را هم اکنون می توانید انجام دهید.
آیا شما می دانید C برنامه نویسی یا نه، شما
می توانید فقط ایستاده پشت در این برنامه و خامه ای نظرات.
درخواست کاربر را برای ورودی، مطمئن شوید که دریافت رشته یک رشته بازگشت،
تکرار بیش از شخصیت ها در بازدید کنندگان یکی در یک زمان، چاپ شخصیت
شخصیت i ام در s-- شما نمی حتی باید به کد نگاه
برای درک آنچه این برنامه می کند.
و بهتر است، اگر شما خودتان نگاه در این برنامه در یک یا دو هفته،
یا یک ماه، یا یک سال، شما بیش از حد لازم نیست
به خیره در کد، تلاش برای به یاد داشته باشید،
آنچه که من در تلاش برای انجام با این کد؟
>> شما خودتان را گفته ام.
شما آن را برای خودتان شرح داده ایم، و یا برخی از همکار، و یا TA، یا TF.
و بنابراین این شرکت خواهد بود درست است، و طراحی خوب،
و در نهایت سبک خوب نیز هست.
این کار را انجام باشید که در ذهن.
>> بنابراین یکی دیگر وجود دارد چیزی که من قصد دارم برای انجام در اینجا
که در حال حاضر می تواند نشان دهد دقیقا همان چیزی است رفتن به زیر هود.
بنابراین این ویژگی وجود دارد در C، و زبان های دیگر،
نام typecasting که یا به طور ضمنی
یا به صراحت اجازه می دهد تا شما را به تبدیل از یک نوع داده را به دیگری.
ما خرید و فروش شده ام تا دور، امروز با رشته ها.
>> و رشته کاراکتر می باشد.
اما به یاد از هفته 0، چه شخصیت است؟
شخصیت فقط یک انتزاع در بالای اعداد اعشاری numbers--،
و اعداد اعشاری هستند که واقعا فقط یک انتزاع در بالای اعداد دودویی،
که ما آن را تعریف می شود.
>> بنابراین شخصیت اعداد هستند.
و شماره کاراکتر داریم، فقط بسته به زمینه.
و معلوم است که در داخل از یک برنامه کامپیوتری،
می تواند شما را مشخص کنید که چگونه می خواهید به نگاه در بیت داخل آن برنامه؟
>> به یاد بیاورید از هفته 0 که ما تا به حال اسکی، است که فقط این کد
نامه های نقشه برداری به شماره.
و ما گفت: سرمایه 65 است.
سرمایه B 66، و غیره.
>> و توجه کنید، ما اساسا کاراکتر بر روی ردیف بالا اینجا، به عنوان C آنها را پاسخ،
شخصیت ها، و پس از آن نوع داده int در سطر دوم.
و معلوم است شما می توانید تبدیل یکپارچه بین این دو، به طور معمول.
و اگر ما می خواهیم انجام این به عمد، ما
ممکن است بخواهید برای مقابله با چیزی شبیه به این.
>> ما ممکن است می خواهید برای تبدیل مورد بالا به پایین
مورد، و یا با حروف کوچک به حروف بزرگ.
و معلوم است وجود دارد در واقع یک الگوی در اینجا
ما می توانیم در یک لحظه در آغوش.
اما اجازه دهید نگاهی اولین بار در یک به عنوان مثال برای انجام این کار به صراحت.
>> من قصد دارم برای رفتن دوباره به IDE CS50.
من قصد دارم برای ایجاد یک فایل به نام اسکی 0.c.
و من قصد دارم به جلو بروید و اضافه کردن من io.h استاندارد در بالا، اعتبار اصلی اعضای هیات
در بالای عملکرد من.
و پس از آن من فقط رفتن را به انجام شرح زیر است یک حلقه for از من برابر با،
اجازه دهید بگویم، 65.
>> و پس از آن من است برای رفتن به کمتر از 65، به علاوه 26 حرف در الفبای.
بنابراین من کامپیوتر اجازه انجام محاسبات ریاضی برای من وجود دارد.
و سپس در داخل این حلقه، چه هستم من به چاپ؟
>> ٪ C٪ من بک اسلش نفر است.
و در حال حاضر من می خواهم را به برق وصل دو مقدار.
من به طور موقت سوال قرار داده نشانه وجود دارد به دعوت این سوال.
>> من می خواهم به تکرار از 65 به بعد برای 26 حرف از حروف الفبا،
چاپ کردن در هر تکرار که معادل جدایی ناپذیر شخصیت است.
به عبارت دیگر، من می خواهم تکرار چاپ بیش از 26 عدد
چه شخصیت ASCII است؛ این نامه، و چه شماره مربوطه is--
واقعا از بازآفرینی نمودار از اسلاید.
پس چه باید این علامت سوال می شود؟
>> خب، معلوم است که دوم یکی فقط باید من متغیر باشد.
من می خواهم برای دیدن که به عنوان یک عدد.
و استدلال وسط در اینجا، من می توانید به کامپیوتر می گوید
برای درمان که عدد صحیح من به عنوان یک شخصیت، به طوری که
به جایگزین آن برای درصد C.
>> به عبارت دیگر، اگر من، برنامه نویس بشر، مطمئن شوید
این فقط اعداد در پایان روز.
و من می دانم که 65 باید نقشه به برخی از شخصیت.
با استفاده از این بازیگران صریح و روشن، با یک پرانتز،
نام نوع داده شما می خواهید تبدیل، و یک پرانتز بسته،
شما می توانید به کامپیوتر، هی، کامپیوتر،
تبدیل این عدد صحیح به یک کاراکتر.
>> بنابراین، هنگامی که من این اجرا برنامه بعد از کامپایل،
بیایید ببینید که چه من get-- اسکی 0.
رفو آن، آنچه که من اشتباه اینجا انجام دهید؟
استفاده از شناسه اعلام نشده، همه حق است، عمدی نیست،
اما بیایید ببینید اگر ما نمی تواند دلیل از طریق این.
>> بنابراین خط five-- بنابراین من می کنید بسیار دور قبل از screwing است.
این خوب است.
بنابراین خط 5 برای من برابر با 65-- من می بینم.
بنابراین به یاد داشته باشید که در C، بر خلاف برخی زبان اگر شما برنامه نویسی قبل
تجربه، شما باید به کامپیوتر،
بر خلاف خراش، چه نوع متغیر است.
>> و من یک عبارت کلیدی فراموش کنید.
در خط پنج، من با استفاده از من آغاز شده است.
اما من C گفته نمی چه نوع داده آن است.
بنابراین من قصد دارم به در و می گویند، آه، آن یک عدد صحیح است.
>> حالا من قصد دارم به جلو بروید و کامپایل مجدد.
که ثابت است.
./ascii0 را وارد کنید، که نوع سرد است.
نه تنها از آن فوق العاده سریع برای بپرسید کامپیوتر این سوال،
به جای دنبال آن در یک اسلاید، آن را چاپ کرد در هر خط، A 65،
B 66، تمام راه است down-- از آنجایی که من این 26 times-- به حروف Z انجام داد،
که 90 است.
و، در واقع، کمی هوشمند تر
برای من برای تکیه نمی بر روی کامپیوتر به اضافه کردن 26.
من می توانم فقط انجام 90 و همچنین، تا زمانی
به عنوان من همان اشتباه را دو بار.
من می خواهم برای رفتن به بالا از طریق Z، نه فقط از طریق y است.
>> به طوری که Casting صریح است.
به نظر می رسد که این حتی لازم نیست.
اجازه دهید من به جلو و دوباره این کامپایلر و مجدد اسکی 0.
معلوم می شود که C بسیار هوشمند است.
>> و تابع () printf، به ویژه، بسیار هوشمند است.
اگر شما فقط یک من عبور دو بار برای هر دو متغیرهایی، تابع () printf
متوجه خواهد شد، اوه، خب من که می دانید داد من یک integer-- برخی از تعداد،
مانند 65، یا 90، و یا هر چیز دیگری.
اما من می بینم که شما من می خواهم به فرمت است که شماره ها مانند یک شخصیت.
و به این ترتیب تابع () printf به طور ضمنی می توانید بازیگران به یک کاراکتر برای شما اعضای هیات است.
به طوری که یک مشکل در همه.
>> اما توجه کنید، به خاطر این هم ارزی ما در واقع می توانید این کار را به خوبی.
اجازه بدهید به جلو و ایجاد یک نسخه دیگر از this-- 1.c. اسکی
و به جای تکرار بیش از اعداد صحیح، واقعا می تواند ضربه و ذهن شما را
با تکرار بیش از شخصیت.
اگر یک کاراکتر C می شود سرمایه، من می خواهید به جلو بروید و این کار،
تا زمانی که C کمتر یا مساوی است به زهرا سرمایه و در هر تکرار
من می خواهم به افزایش گراد، من می توانم در حال حاضر در خط تابع () printf من در اینجا
مثلا درصد C است درصد من دوباره، C. کاما
>> و در حال حاضر، من می توانید جهت دیگر، ریخته گری شخصیت صریحا
به یک عدد صحیح.
پس، دوباره، چرا شما این کار؟
این کمی عجیب و غریب به مرتب کردن بر اساس شمارش از نظر شخصیت.
>> اما اگر شما را در درک آنچه که در رفتن در زیر هود،
واقعا هیچ سحر و جادو وجود دارد.
شما فقط گفت، هی، کامپیوتر را من یک متغیر به نام C از نوع char.
مقداردهی اولیه آن را به سرمایه A. و متوجه نقل قول تکی ماده.
>> برای شخصیت های در C، یاد از در هفته گذشته، شما با استفاده از نقل قول تکی.
برای رشته ها، کلمات، عبارات، شما با استفاده کوتیشن.
OK، کامپیوتر، در حفظ و انجام این، به طوری که زمانی که شخصیت کمتر از است
و یا به Z برابر است.
و من از جدول ASCII من می دانم که همه از این کد اسکی به هم پیوسته هستند.
>> هیچ شکاف وجود دارد.
بنابراین آن را فقط از طریق Z، از هم جدا شده هر یک عدد است.
و پس از آن من می توانم افزایش یک کاراکتر، اگر من واقعا می خواهید.
در پایان روز، آن فقط یک عدد است.
من این را می دانم.
بنابراین من فقط می توانید تصور برای اضافه کردن 1 به آن است.
>> و سپس این زمان، من چاپ گراد، و پس از آن معادل جدایی ناپذیر است.
و من حتی نمی نیاز به بازیگران صریح و روشن نیست.
من می توانم printf و اجازه همه چیز شکل کامپیوتر بیرون،
به طوری که در حال حاضر اگر من را اجرا را Ascii1./ascii1،
من دقیقا همین است.
>> برنامه بی فایده، though-- هیچ کس در حال رفتن به در واقع نرم افزار ارسال
به منظور کشف کردن، چه بود شماره ای که نقشه ها را به A، B و یا، و یا Z؟
شما در حال رفتن به آن را گوگل، و یا نگاه کنید آن را آنلاین، و یا آن را
در یک اسلاید، و یا مانند.
تا جایی که این در واقع مفید است؟
>> خب، صحبت از که اسلاید، توجه داشته باشید که
یک الگوی واقعی در اینجا بین حروف بزرگ بزرگ و کوچک که تصادفی نیست.
توجه داشته باشید که سرمایه 65 است.
حروف کوچک 97 است.
و مورد پایین تر چگونه دور است؟
>> بنابراین 65 است چگونه بسیاری از مراحل به دور از 97؟
بنابراین 97 منهای 65 32 است.
بنابراین سرمایه 65 است.
اگر شما اضافه کردن 32 به آن، شما کوچک است.
و هم ارز آن، اگر شما تفریق 32، شما به عقب بر گردیم به سرمایه A-- با B
به B کمی، C بزرگ به کوچک ج.
>> همه از این شکاف 32 از هم جدا.
در حال حاضر، این به نظر می رسد به ما اجازه می دهد به چیزی شبیه به مایکروسافت ورد،
یا Google Docs از ویژگی های، که در آن شما می توانید همه چیز را انتخاب کنید و پس از آن می گویند،
تغییر همه به حروف کوچک، یا تغییر همه به مورد بالا،
یا تغییر تنها اولین کلمه یک جمله به حروف بزرگ.
ما در واقع می تواند انجام کاری که خودمان.
>> اجازه دهید من به جلو و ذخیره کردن یک فایل در اینجا به نام سرمایه گذاری 0.c.
و اجازه دهید به جلو و شلاق تا یک برنامه که دقیقا همان است که شرح زیر است.
بنابراین شامل کتابخانه CS50.
و شامل استاندارد I / O.
>> و من می دانم این است که به زودی.
بنابراین من قصد دارم به آن را در وجود دارد در حال حاضر، string.h،
بنابراین من به اینترنت دسترسی دارند چیزهایی مثل استرلینگ،
و پس از آن اعضای هیات اعتبار اصلی، به طور معمول.
و سپس من قصد دارم به جلو بروید و رشته می شود از رشته،
فقط برای گرفتن یک رشته از کاربر.
و پس از آن من قصد دارم به انجام بررسی سلامت عقل من.
اگر رشته تهی برابر نیست، سپس آن را بی خطر را ادامه دهید.
و آنچه من می خواهم کاری انجام دهید؟
من قصد دارم به تکرار از من برابر با 0، و n تا طول رشته ها.
>> و من قصد دارم برای انجام این کار تا زمانی که من کمتر از n است، و من به علاوه به علاوه.
تا کنون، من واقعا فقط من قرض گرفتن ایده از قبل.
و در حال حاضر من قصد دارم به معرفی یک شاخه.
>> بنابراین فکر می کنم به خراش، که در آن ما تا به حال کسانی که چنگال در جاده،
و هفته گذشته در C. من قصد دارم به این می گویند، اگر شخصیت i ام در S
بزرگتر یا برابر به حروف A،
and-- در ابتدا شما را به معنای واقعی کلمه می گویند و اما در C می توانید بگویید علامت،
ampersand-- و شخصیت i ام در S کمتر یا مساوی به حروف کوچک Z است،
اجازه دهید چیزی جالب است.
اجازه دهید در واقع چاپ کردن یک شخصیت با خط جدید
که شخصیت در رشته است، شخصیت i ام در رشته.
>> اما اجازه دهید به جلو و تفریق 32 از آن.
دیگر در صورتی که شخصیت را در رشته ای که ما به دنبال
است بین یک کمی نیست و کمی Z، به جلو
و فقط آن را چاپ کرد بدون تغییر.
بنابراین ما معرفی کرده ایم این نماد پرانتز
برای رشته ما را به دریافت در i ام کاراکتر در رشته.
>> من مقداری منطق شرطی اضافه شده است، مانند ابتدا در هفته گذشته یک هفته، که در آن
من فقط با استفاده از اساسی من درک درستی از آنچه است
رفتن به زیر هود.
آیا شخصیت i ام از بازدید کنندگان بزرگتر یا مساوی به یک؟
مانند، آن است که 97 یا 98، یا 99، و غیره؟
>> اما آن را نیز کمتر یا مساوی به ارزش Z حروف کوچک؟
و اگر چنین است، چه این خط چیست؟
14، این نوع از است جوانه از کل ایده،
سرمایه گذاری حرف های به سادگی کم کردن 32 از آن،
در این مورد، زیرا من می دانم، در هر که نمودار، چگونه اعداد من نشان داده شده است.
بنابراین اجازه دهید به جلو و اجرای این، بعد از کامپایل سرمایه گذاری 0.c،
و اجرا سرمایه گذاری 0.
>> اجازه دهید چیزی شبیه به تایپ در Zamyla در تمام حروف کوچک وارد کنید.
و در حال حاضر ما Zamyla در تمام حروف بزرگ است.
بیایید نوع در راب در تمام حروف کوچک.
بیایید سعی کنید جیسون در تمام حروف کوچک.
و ما حفظ شدن سرمایه مجبور.
یک اشکال جزئی وجود دارد که من نوع پیش بینی نیست.
توجه داشته باشید سریع جدید من است پایان دادن به در همان خط به عنوان نام خود،
که احساس کثیف کمی.
>> بنابراین من قصد دارم به اینجا بروید و در واقع در پایان این برنامه
چاپ کردن یک کاراکتر خط جدید.
که تمام است.
با printf، شما نیاز دارید که نه تصویب در متغیرها و یا کد فرمت.
شما به معنای واقعی کلمه می تواند فقط چاپ چیزی شبیه به یک خط جدید.
>> بنابراین اجازه دهید پیش بروید و سرمایه گذاری 0 دوباره، دوباره آن، Zamyla.
و در حال حاضر آن را به یک زیباتر کم است.
در حال حاضر، سریع من در خط جدید خود است.
به طوری که همه خوب هستند و خوب است.
به طوری که یک مثال خوب است.
اما من حتی لزوما نیاز به کد سخت 32.
میدونی چیه؟
من می توانم می گویند من هرگز به یاد داشته باشید چه تفاوت است.
>> اما من می دانم که اگر من یک حرف کوچک،
من اساسا می خواهیم به تفریق کردن هر فاصله بین کمی
A و بزرگ یک، چرا که اگر من فرض کنیم که همه حروف دیگر یکسان هستند،
که باید این کار را انجام می شود.
اما به جای انجام این کار، شما می دانید چه؟
راه دیگری هنوز هم وجود دارد.
>> در صورتی که سرمایه گذاری 1.c-- اگر من برای قرار دادن این به یک فایل جداگانه.
اجازه دهید سرمایه گذاری 2.c شرح زیر است.
من قصد دارم به واقعا این تمیز کردن اینجا.
و به جای حتی نیاز به مطمئن شوید و یا در مورد آن سطح پایین مراقبت
جزئیات پیاده سازی، من به جای تو فقط رفتن به چاپ یک شخصیت،
نقل قول را تمام کردن، درصد C، و سپس تماس بگیرید و تابع دیگر که
وجود دارد که یک آرگومان، که یک شخصیت، مثل این است.
>> به نظر می رسد در C، وجود دارد یکی دیگر از فراخوانی تابع
به بالا، که به عنوان نام آن نشان می دهد طول می کشد یک شخصیت
و آن را به مورد بالا آن معادل، و سپس آن را می گرداند
به طوری که تابع () printf می توانید آن را در پلاگین وجود دارد.
و به این ترتیب برای انجام این کار، هر چند، من نیاز به معرفی یک فایل دیگر.
به نظر می رسد این فایل دیگر وجود دارد است که شما فقط از کلاس مطمئن شوید،
و یا یک کتاب درسی، و یا یک آنلاین مرجع، به نام type.h. C
>> بنابراین اگر من اضافه کنم که در میان هدر من فایل ها، و در حال حاضر دوباره کامپایل این برنامه،
capitalize2، ./capitalize2 را وارد کنید.
بیایید نوع در Zamyla در تمام حروف کوچک، هنوز هم کار می کند همان.
اما میدونی چیه؟
به نظر می رسد که به بالا برخی از قابلیت های دیگر.
>> و اجازه دهید این را معرفی کنم فرمان در اینجا، نوع ناشیانه
نام، اما انسان به صورت دستی.
به نظر می رسد که بیشتر کامپیوترهای لینوکس، که ما با استفاده here-- عامل لینوکس
system-- یک دستور دارند مردی به نام، که می گوید،
هی، کامپیوتر، به من بدهد کتابچه راهنمای کامپیوتر.
چه شما می خواهید نگاه کردن در کتابچه راهنمای کاربر.
>> من می خواهم به نگاه کردن به تابع نام به بالا، وارد کنید.
و آن را کمی مرموز به خواندن گاهی اوقات.
اما توجه کنید که ما در حال راهنمای برنامه نویس لینوکس است.
و آن همه متن.
و توجه داشته باشید که وجود دارد نام تابع تا اینجا.
به نظر می رسد آن را به یک پسر عموی نام به پایین تر، که کند مخالف است.
و توجه تحت خلاصه داستان، به استفاده از این عملکرد صفحه مرد، پس به صحبت،
است من گفتن که من نیاز به type.h. C
و من از عمل می دانستند که.
>> در اینجا، آن را به من نشان دادن دو نمونه های اولیه برای تابع،
به طوری که اگر من همیشه می خواهید به استفاده از این من می دانم آنچه را که آنها به عنوان ورودی،
و آنچه را که به عنوان خروجی بازگشت.
و پس از آن اگر من توضیحات، من
در جزئیات بیشتر آنچه را که تابع انجام می دهد.
اما مهم تر، اگر من در زیر مقدار بازگشتی نگاه کنید،
آن را می گوید، مقدار برگردانده است که این نامه تبدیل شده،
و یا C، ورودی اصلی، در صورت تبدیل امکان پذیر نیست.
>> به عبارت دیگر، به بالا سعی خواهد کرد برای تبدیل یک نامه به مورد بالا.
و اگر چنین است، آن را به آن بازگشت.
اما اگر آن را نمی تواند برای برخی از reason-- شاید آن را مورد در حال حاضر بالا،
شاید آن یک علامت تعجب است و یا برخی از punctuation-- دیگر
آن را فقط به بازگشت به C اصلی،
که به معنی من می توانید کد من را بهتر طراحی شده شرح زیر است.
>> من تمام نیاز این خطوط رفو از کد.
همه خطوط من فقط برجسته می
شود را تنها در یک ساده سقوط خط است، که this-- درصد تابع () printf
C به S بالاتر از براکت من.
و این می تواند یک نمونه از طراحی بهتر است.
>> چرا پیاده سازی آن در 7 یا 8 خط از کد، هر آنچه در آن من فقط
حذف، هنگامی که شما می توانید به جای سقوط همه از آن منطق و تصمیم گیری
به یک خط، 13 حال حاضر، که متکی بر یک کتابخانه تابع
یک تابع است که می آید با C، اما این دقیقا همان چیزی است که شما می خواهید آن را به انجام.
و صادقانه بگویم، حتی اگر آن را با C نیست،
شما می توانید آن را به خودتان پیاده سازی، به عنوان ما دیده ایم، با گرفتن INT منفی
و مثبت INT هفته گذشته است.
>> این کد در حال حاضر بسیار بیشتر قابل خواندن است.
و، در واقع، اگر ما رفته بالا، نگاه کنید که چگونه بسیار فشرده تر
این نسخه از برنامه من است.
این سنگین بالا کمی در حال حاضر، با تمام این شامل.
اما این OK، چرا که اکنون من ایستاده بر دوش برنامه نویسان
قبل از من.
و هر کس آن بود که اجرا به بالا واقعا
من به نفع، بسیار شبیه به هر کس اجرا استرلینگ واقعا
من به نفع چند وقت پیش بود.
و بنابراین در حال حاضر ما یک برنامه طراحی بهتر
که پیاده سازی منطق دقیق.
>> صحبت از استرلینگ، اجازه دهید من به جلو بروید و این کار را.
اجازه دهید من جلو بروید و صرفه جویی این فایل به عنوان stirling.c.
و معلوم است، ما می توانیم پوست یک لایه دیگر بسیار به سادگی در حال حاضر.
من قصد دارم به جلو بروید و شلاق تا یک برنامه دیگر در اصلی
در اینجا است که به سادگی مجدد ادوات طول رشته شرح زیر است.
بنابراین در اینجا یک خط از کد است که من می شود یک رشته از کاربر.
ما را با استفاده از این دوباره و دوباره.
بگذار من یک متغیر به نام به N از نوع int است که ذخیره یک عدد است.
>> و اجازه دهید من به جلو و انجام منطق زیر است.
در حالی که شخصیت n ام در S می کند برابر بک اسلش 0 نمی، به جلو
و افزایش N.
و سپس چاپ درصد تابع () printf من N.
من ادعا می کنند که این برنامه در اینجا، بدون تماس از طول رشته،
ارقام از طول یک رشته.
>> و سحر و جادو را به طور کامل محصور شده در خط 8
در اینجا با آنچه به نظر می رسد مانند نحو جدید، این بک اسلش 0 در نقل قول تکی.
اما چرا؟
خب، نظر چه بوده است رفتن به این همه وقت.
>> و به عنوان یک کنار قبل از من فراموش کرده ام، متوجه بیش از حد، که علاوه بر صفحات مرد
که با یک نمونه آمده سیستم لینوکس مانند CS50 IDE،
متوجه است که ما، در کارکنان دوره، همچنین
ساخته شده یک نسخه وب سایت از این ایده همان نام
reference.cs50.net، که دارای همه این صفحات همان مرد،
همه از آن همان اسناد و مدارک، و همچنین
یک جعبه کوچک در بالای که اجازه می دهد شما را به تبدیل تمام نسبتا
زبان محرمانه به کمتر و راحت حالت، که در آن ما، کارکنان آموزشی،
از طریق رفته و سعی در ساده سازی برخی از زبان به نگه داشتن چیزهای
با تمرکز بر ایده ها، و نه برخی از فنی.
بنابراین به خاطر داشته باشید، reference.cs50.net به عنوان منبع دیگری نیز هست.
>> اما چرا کار می کند طول رشته در راه من یک لحظه پیش پیشنهاد؟
در اینجا نام Zamyla دوباره است.
و در اینجا نام Zamyla است بسته بندی در، به عنوان من در حفظ و انجام،
به رنگ یک تصویر از آن است، واقعا، فقط یک رشته از کاراکتر.
اما Zamyla وجود ندارد در انزوا در یک برنامه.
>> هنگامی که شما ارسال و اجرای یک برنامه، شما با استفاده از مک یا PC خود را
به عنوان حافظه یا RAM پس به صحبت.
و شما می توانید از فکر می کنم کامپیوتر خود را به عنوان داشتن
بسیاری از گیگابایت حافظه این روز است.
و یک فرفره معنی میلیاردها، بنابراین میلیاردها بایت است.
>> اما اجازه دهید در زمان عقب.
و فرض کنید که ما با استفاده از یک کامپیوتر واقعا قدیمی که
تنها 32 بایت از حافظه است.
من می توانم، بر روی صفحه نمایش کامپیوتر من، نگران نباشید، این بیرون کشیدن شرح زیر است.
>> من به سادگی می توان گفت که من کامپیوتر تا همه از این حافظه است.
و این است که مانند یک چوب از حافظه، اگر شما تصویر ما از زمان گذشته به یاد می آورند.
و اگر من فقط تقسیم این در زمان به اندازه کافی،
من ادعا می کنند که من 32 بایت حافظه بر روی صفحه نمایش.
>> در حال حاضر، در واقع، من تنها رسم تا کنون در این صفحه نمایش در اینجا.
بنابراین من قصد دارم به جلو بروید، و فقط بر اساس قرارداد،
رسم من حافظه کامپیوتر را به عنوان یک شبکه، نه تنها به عنوان یک خط راست.
به طور خاص، من ادعا که این شبکه، این 8 توسط 4 شبکه،
فقط نشان دهنده تمام 32 بایت از حافظه موجود در مک من،
و یا در دسترس در کامپیوتر من.
و آنها در حال بسته بندی به دو خط، فقط
زیرا متناسب تر بر روی صفحه نمایش.
اما این اولین بایت است.
این بایت دوم است.
این بایت سوم است.
>> و این بایت 32 است.
یا، اگر ما مانند یک کامپیوتر فکر می کنم دانشمند، این بایت 0، 1، 2، 3، 31 است.
بنابراین شما باید 0 تا 31، اگر شما شروع به شمارش 0.
>> بنابراین اگر ما استفاده از یک برنامه که تماس گرفتن رشته،
و ما یک رشته از انسان من Zamyla به نام بود، Z-A-M-Y-L-A،
چگونه در جهان کند پیگیری کامپیوتر که بایت،
که تکه از حافظه، متعلق به کدام رشته؟
به عبارت دیگر، اگر ما برای ادامه تایپ نام دیگری به کامپیوتر،
مثل این اندی، خواستار دریافت رشته برای بار دوم،
A-N-D-من برای پایان دادن به در است حافظه کامپیوتر نیز هست.
اما چگونه؟
>> خب، معلوم است که در زیر هود، چه C می کند زمانی که ذخیره سازی رشته
که انسان ها در، یا این که از منابع دیگر آمده، آن است که
ترسیم پایان آنها را با یک بک اسلش character-- ویژه
0، است که فقط یک حالت خاص گفت 80 بیت در یک ردیف.
>> بنابراین A-- این تعداد 97 فراخوان است.
بنابراین برخی از الگوی از 8 بیت نشان دهنده عدد اعشاری 97.
این بک اسلش 0 است به معنای واقعی کلمه تعداد 0، NUL a.k.a.، N-U-L، بر خلاف قبل،
N-U-L-L، که ما در مورد صحبت کردیم.
اما در حال حاضر، فقط می دانم که این بک اسلش 0 80 بیت در یک ردیف است.
>> و آن را فقط این خط در این شن و ماسه است که می گوید هر چیزی را به سمت چپ
متعلق به یک رشته یا یک نوع داده.
و هر چیزی را به سمت راست متعلق به چیز دیگری.
اندی نام، در عین حال، که فقط بصری
اتفاق می افتد به بسته بندی کردن در به خط دیگر، اما این فقط جزئیات زیبایی،
به طور مشابه NUL خاتمه یافته است.
>> این یک رشته از شخصیت های A-N-D-من است، به علاوه یک شخصیت مخفی پنجم،
همه 0 بیت، که فقط demarcates انتهای نام اندی نیز هست.
و اگر ما پاسخ دریافت رشته برای بار سوم در کامپیوتر برای دریافت یک رشته مانند
ماریا، M-A-R-من-A، به طور مشابه است ماریا نام NUL خاتمه با بک اسلش 0.
>> این اساسا متفاوت از چگونه یک کامپیوتر به طور معمول
ذخیره یک عدد صحیح، و یا یک شناور، و یا دیگر انواع داده ها هنوز هم، چون به یاد بیاورید،
یک عدد صحیح است که معمولا 32 بیت، یا 4 بایت، یا شاید حتی 64 بیت،
یا هشت بایت است.
اما شکلهای هندسی اولیه بسیاری را در یک کامپیوتر در یک زبان برنامه نویسی
یک عدد ثابت بایت در زیر hood--
شاید 1، شاید 2، شاید 4، شاید 8.
>> اما رشته، طراحی، یک تعداد پویا از شخصیت های.
شما در پیشبرد دانم، تا زمانی که انواع بشر در Z-A-M-Y-L-A،
یا M-A-R-من-A یا A-N-D-I. شما نمی دانید که چند بار که کاربر به رفتن به ضربه
صفحه کلید.
بنابراین، شما نمی دانید که چگونه بسیاری از شخصیت های در پیش
شما نیاز به رفتن به.
>> و به این ترتیب C فقط نوع برگ مانند یک خرده نان مخفی در زیر هود
در پایان رشته.
پس از ذخیره سازی Z-A-M-Y-L-A در حافظه، همچنین قرار می دهد معادل
از یک دوره.
در پایان یک جمله، آن را 80 بیت، به طوری که
به یاد داشته باشید که در آن Zamyla آغاز می شود و به پایان می رسد.
>> پس چه این رابطه است، پس از آن، به این برنامه؟
این برنامه در اینجا، استرلینگ، است که به سادگی یک مکانیسم
برای گرفتن یک رشته از کاربران، خط 6.
خط 7، من یک متغیر نام N و تنظیم آن را برابر با 0.
>> و سپس در خط 8، من به سادگی پرسید درخواست، در حالی که شخصیت n ام می کند
برابر نیست همه 0 bits-- به عبارت دیگر، نمی
برابر این ویژه شخصیت، بک اسلش 0، که
درست است که character-- پوچ خاص بود جلو بروید و فقط افزایش N.
>> و انجام آن، و نگه داشتن انجام آن، و انجام آن است.
و به این ترتیب حتی اگر در گذشته ما من استفاده می شود،
آن را کاملا خوب معنایی به استفاده از N،
اگر شما فقط تلاش برای تعداد دفعات مشاهده این به عمد،
و فقط می خواهم به آن تماس بگیرید N.
بنابراین این فقط نگه می دارد پرسیدن سوال، شخصیت n ام از همه 0s و است؟
اگر نه، به نگاه بعدی نگاه کنید، نگاهی به آینده، به آینده نگاه کنید،
نگاه به آینده.
>> اما به محض بک اسلش 0 می بینید، این خط loop-- 9 از طریق 11-- متوقف می شود.
شما از حلقه در حالی که شکستن، ترک در داخل آن متغیر n
تعداد کل از همه از شخصیت ها در رشته شما را دیدم،
در نتیجه آن را چاپ کند.
بنابراین اجازه دهید این را امتحان کنید.
>> اجازه دهید من به جلو و بدون با استفاده از تابع استرلینگ،
اما فقط با استفاده از نسخه وطنی خود من در اینجا به نام استرلینگ، اجازه دهید من به جلو بروید
و اجرا استرلینگ، نوع در چیزی مانند Zamyla، که من در پیشبرد دانم
شش شخصیت است.
بیایید ببینیم که اگر آن کار می کند.
در واقع، آن را شش.
بیایید با راب امتحان کنید، سه شخصیت، سه شخصیت به عنوان خوب، و غیره.
به طوری که همه که رفتن در زیر هود.
و متوجه اتصالات، پس از آن، به هفته اول
طبقه، که در آن ما در مورد صحبت چیزی شبیه به انتزاع،
است که فقط این لایه بندی از ایده ها، و یا پیچیدگی، در بالای اصول اساسی.
در اینجا، ما در حال مرتب کردن بر اساس به دنبال در زیر هود استرلینگ،
پس به صحبت، به شکل، چگونه اجرا شود؟
>> و ما می توانیم خودمان دوباره پیاده سازی آن.
اما ما هرگز دوباره رفتن مجبور به اجرای مجدد استرلینگ.
ما فقط رفتن به استفاده استرلینگ در سفارش
در واقع برخی از طول رشته را دریافت کنید.
>> اما هیچ سحر و جادو وجود دارد در زیر هود.
اگر شما می دانید که در زیر هود، یک رشته
فقط یک رشته از کاراکتر است.
و دنباله ای از کاراکتر همه را می توان به صورت عددی خطاب
با براکت 0، براکت 1، براکت 2، و شما
می دانیم که در پایان یک رشته است شخصیت خاص، شما می توانید شکل
چگونه به انجام هر چیزی در یک برنامه، چرا که همه آن جوش پایین به
در حال خواندن و نوشتن حافظه است.
این است که، در حال تغییر و به دنبال در حافظه، و یا حرکت همه چیز
در حافظه، همه چیز چاپ بر روی صفحه نمایش، و غیره.
>> بنابراین اجازه دهید در حال حاضر این تازه کشف شده استفاده درک درستی از آنچه در واقع رشته
در زیر هود، و پوست پشت یک لایه دیگر
که تا حالا ما شده است نادیده گرفتن در دسترس نباشد.
به طور خاص، هر زمان ما یک برنامه اجرا کرده ام،
ما این خط از کد را داشته ام در نزدیکی بالای اعلام اصلی.
و ما اعتبار اصلی اعضای هیات مشخص.
>> و از درجه اعتبار ساقط است که در داخل پرانتز شده است گفت: در تمام این مدت که اصلی
به خودی خود هیچ استدلال را ندارد.
هر ورودی که اصلی است رفتن به از کاربر دریافت
باید از برخی دیگر آمده مکانیسم همچون GET هوشمند،
و یا شناور، و یا رشته، و یا برخی از عملکرد های دیگر.
اما معلوم است که در هنگام نوشتن یک برنامه،
شما در واقع می توانید مشخص کنید که این برنامه باید
را ورودی از انسان در خط فرمان است.
>> به عبارت دیگر، حتی اگر ما تا کنون در حال اجرا فقط ./hello سلام
یا برنامه های مشابه، همه از برنامه های دیگر که ما با استفاده از اس ام اس،
که ما خودمان را نمی نویسند، شده اند مصرف، به نظر می رسد،
arguments-- خط فرمان همه چیز دوست دارید.
شما چیزی می گویند مانند آرایش، و سپس یک کلمه دوم.
یا صدای جرنگ جرنگ، به شما می گویند صدای جرنگ جرنگ، و پس از آن یک کلمه دوم، نام یک فایل.
>> و یا حتی RM یا CP، همانطور که شما ممکن را دیده اند و یا مورد استفاده در حال حاضر
به حذف و یا کپی فایل.
همه کسانی که به اصطلاح arguments-- خط فرمان
کلمات اضافی در اعلان ترمینال.
اما تا به حال، ما خودمان نداشته اند
این لوکس گرفتن ورودی از کاربر در زمانی که او در واقع اجرا می شود
خود برنامه در خط فرمان.
>> اما ما می توانیم این کار را با دوباره اعلام اصلی حرکت رو به جلو، نه به عنوان داشتن
از درجه اعتبار ساقط شده در داخل پرانتز، اما این دو استدلال
instead-- اولین عدد صحیح، و چیزی دوم
جدید، چیزی است که ما در حال رفتن به پاسخ یک آرایه، چیزی مشابه در روح
به آنچه که ما در ابتدا به عنوان یک لیست را دیدم، اما آرایه ای از رشته، به عنوان ما به زودی خواهید دید.
اما اجازه دهید این را ببینید توسط به عنوان مثال، قبل از ما
تشخیص دقیقا چه معناست.
>> بنابراین اگر من به CS50 IDE رفتن در اینجا، من جلوتر رفته ام
و اعلام کرد در یک فایل به نام argv0.c این الگو.
و متوجه تنها چیزی که که متفاوت تا کنون
این است که من از درجه اعتبار ساقط تغییر کرده به int رشته تعداد آنها و argv براکت باز، نزدیک
براکت.
و متوجه حال حاضر، وجود دارد هیچ چیز در داخل از آن براکت.
>> هیچ شماره وجود دارد.
و هیچ من وجود دارد، یا N، و یا هر حرف دیگر.
من فقط با استفاده از براکت در حال حاضر،
به دلایلی که ما می آیند برگشت به در یک لحظه.
>> و در حال حاضر آنچه که من قصد دارم برای انجام این کار است.
اگر تعداد آنها برابر برابر 2-- و به یاد آورید که برابر است با برابر
اپراتور برابری مقایسه است سمت چپ و راست برای برابری.
این انتساب نیست اپراتور است که
نشانه تک برابر، که به معنی کپی از سمت راست به برخی از ارزش است.
>> اگر تعداد آنها برابر برابر 2، من می خواهم مثلا، تابع () printf، سلام، درصد، خط جدید،
و سپس پلاگین in-- و در اینجا جدید trick-- براکت و argv 1، به دلایل
که ما به در یک لحظه می آیند.
دیگری اگر تعداد آنها را نمی کند برابر 2، شما می دانید چه؟
بیایید فقط به جلو و، به طور معمول، چاپ سلام جهان خارج با تعویض.
>> بنابراین به نظر می رسد که اگر تعداد آنها، که مخفف تعداد آرگومان، برابر با 2،
من قصد دارم برای چاپ کردن سلام چیزی یا دیگر.
در غیر این صورت، به طور پیش فرض، من رفتن به چاپ سلام جهان.
خوب این به چه معنا است؟
>> خوب، اجازه دهید من به جلو بروید و صرفه جویی در این فایل، و پس از آن انجام را argv0،
و پس از آن ./argv0، وارد کنید.
و آن را می گوید سلام جهان.
در حال حاضر، این است که چرا؟
>> خب، معلوم است در هر زمان شما اجرای یک برنامه در خط فرمان،
شما در حال پر کردن در آنچه ما می خواهیم به طور کلی یک بردار استدلال پاسخ.
به عبارت دیگر، به طور خودکار کامپیوتر، سیستم عامل،
است که به دست به برنامه های خود را خود یک لیست از تمام کلمات
که انسان تایپ در اعلان، در صورتی که شما
برنامه نویس می خواهید به انجام چیزی را با آن اطلاعات است.
و در این مورد، تنها کلمه من در اعلان تایپ کرده اید ./argv0 است.
>> و به این ترتیب تعداد آرگومان است که به برنامه من گذشت فقط یک است.
به عبارت دیگر، استدلال تعداد دفعات مشاهده، در غیر این صورت به عنوان تعداد آنها شناخته شده
در اینجا به عنوان یک عدد صحیح، تنها یکی.
یکی، البته، مساوی دو است.
و به این ترتیب این چیزی است که چاپ، سلام جهان.
>> اما به من اجازه این جایی.
به من می گویند، argv0.
و پس از آن چگونه در مورد ماریا؟
و سپس Enter را بزنید.
>> و متوجه چه جادویی در اینجا اتفاق می افتد.
در حال حاضر، به جای سلام جهان، من رفتار این برنامه تغییر
با در نظر گرفتن ورودی از GET رشته و یا برخی از عملکرد های دیگر،
اما از، ظاهرا، فرمان من خود، آنچه که من در اصل در تایپ.
و من می توانید این بازی را دوباره با بازی تغییر آن را به استلیوس، به عنوان مثال.
>> و اکنون من نام دیگری هنوز هم مشاهده کنید.
و در اینجا، من ممکن است اندی می گویند.
و من ممکن است Zamyla است.
و ما می توانیم این بازی را بازی در تمام طول روز، فقط متصل کردن ارزش های مختلف،
تا زمانی که من ارائه دقیقا دو کلمه در اعلان،
به طوری که تعداد آنها، تعداد استدلال من 2 است.
>> هنوز می بینم که نام متصل به تابع () printf، در این شرایط که اینجا هستید؟
بنابراین ما به نظر می رسد در حال حاضر به قابلیت رسا
گرفتن ورودی از مکانیسم دیگری، از به اصطلاح خط فرمان،
به جای نیاز به صبر تا زمانی که کاربر برنامه اجرا می شود،
و پس از آن او و یا او را بی درنگ استفاده از چیزی شبیه رشته GET.
>> پس چه است این؟
تعداد آنها، دوباره، فقط یک عدد صحیح است، تعداد words-- arguments--
که کاربر ارائه شده در سریع، در پنجره ترمینال،
از جمله نام این برنامه است.
بنابراین ./argv0 ما است، به طور موثر، نام برنامه،
و یا چگونه من برنامه را اجرا کنید.
>> که شمارش به عنوان یک کلمه.
بنابراین تعداد آنها می شود 1.
اما وقتی که من ارسال استلیوس، یا اندی یا Zamyla، یا ماریا،
این بدان معناست که تعداد آرگومان این دو است.
و بنابراین در حال حاضر دو کلمه گذشت در آن وجود دارد.
>> و توجه کنید، ما می توانیم این منطق ادامه خواهد داد.
اگر من در واقع می گویند چیزی شبیه به Zamyla چان،
نام کامل، در نتیجه عبور سه استدلال در مجموع،
در حال حاضر آن را می گوید به طور پیش فرض دوباره، چرا که، البته، 3 مساوی 2 است.
>> و به این ترتیب در این راه، من باید دسترسی از طریق ی argv این بحث جدید
که ما می توانیم از لحاظ فنی هر چیزی که ما می خواهیم پاسخ.
اما بر اساس قرارداد، آن را ی argv و تعداد آنها، به ترتیب.
ی argv، بردار استدلال، نوع است یک مترادف برای برنامه نویسی
از ویژگی های در C آرایه ای نامیده می شود.
>> یک آرایه یک لیست از مقادیر مشابه است تماس، به عقب، به عقب، به پشت.
به عبارت دیگر، اگر کسی است که حق در اینجا در رم، یک بعدی درست در کنار آن است،
و درست در کنار آن.
آنها در همه جا نیست.
و سناریوی دوم، که در آن همه چیز همه جا در حافظه،
در واقع می تواند یکی از ویژگی های قدرتمند باشد.
اما ما به آن می آیند زمانی که ما صحبت در مورد ساختمان داده خیال باف.
در حال حاضر، یک آرایه است که فقط یک تکه از حافظه به هم پیوسته،
هر یک از که عناصر تماس، به عقب، به عقب، به عقب،
و به طور کلی همان نوع.
>> بنابراین اگر شما در مورد فکر می کنم، از یک لحظه پیش، چه یک رشته است؟
خوب، یک رشته، مانند Zamyla، Z-A-M-Y-L-A، است، از نظر فنی،
فقط یک آرایه.
این آرایه ای از کاراکتر است.
>> و به این ترتیب اگر ما واقعا این قرعه کشی، به عنوان من پیش از آن، به عنوان یک تکه از حافظه،
معلوم است که هر یک از این شخصیت طول می کشد تا یک بایت.
و پس از آن که ویژه ای وجود دارد شخصیت نگهبان، بک اسلش 0،
یا هشت 0 بیت، که demarcates پایان آن رشته است.
بنابراین یک رشته، آن را تبدیل خارج، نقل قول رشته را تمام کردن،
فقط یک آرایه از chara-- است کاراکتر بودن نوع داده های واقعی.
>> و در حال حاضر و argv، meanwhile-- اجازه بازگشت به برنامه است.
ی argv، حتی اگر ما کلمه را ببینید رشته در اینجا این است، یک رشته خود را ندارد.
ی argv، بردار استدلال، آرایه ای از رشته است.
>> بنابراین همانطور که شما می توانید مجموعه ای از شخصیت ها، شما می توانید سطح بالاتر،
آرایه ای از strings-- بنابراین، برای مثال، وقتی که من یک لحظه پیش تایپ ./argv0
argv0، فضای Z-A-M-Y-L-A، I ادعا کرد که ی argv دو رشته در ./argv0 it-- حال،
و Z-A-M-Y-L-A. که در به عبارت دیگر، تعداد آنها 2 بود.
چرا اینطور است؟
>> خوب، به طور موثر، چه خبر است در این است که هر یک از این رشته ها
است، البته، آرایه ای از کاراکتر مانند قبل، هر یک از شخصیت های که
طول می کشد تا یک بایت.
و 0 واقعی اشتباه نیست در نام برنامه با 0،
که به معنی تمام 80 بیت است.
و Zamyla، در عین حال، هنوز هم همچنین آرایه ای از کاراکتر.
>> بنابراین در پایان روز، آن را واقعا به نظر می رسد مثل این زیر هود.
اما و argv، طبیعت چگونه اصلی آثار، اجازه می دهد تا من به بسته بندی کردن همه از این
تا به، اگر شما خواهد شد، یک آرایه بزرگتر که اگر ما کمی بیش از ساده
چه تصویر به نظر می رسد و نمی کاملا آن را رسم به مقیاس وجود دارد،
این آرایه است تنها با اندازه 2، اولین عنصر که شامل یک رشته،
دومین عنصر از که شامل یک رشته است.
و به نوبه خود، اگر شما نوع زوم بر روی هر
از آن رشته ها، آنچه که شما مشاهده در زیر هود
این است که هر رشته تنها آرایه ای از کاراکتر.
>> در حال حاضر، فقط به عنوان با رشته ها، ما قادر به دسترسی بودند
به شخصیت i ام در یک رشته با استفاده از این علامت کروشه مربع.
به طور مشابه، با آرایه به طور کلی، می تواند ما
استفاده از نماد براکت برای به دست آوردن در هر شماره از رشته ها در یک آرایه؟
به عنوان مثال، به من اجازه جلو بروید و این کار را.
>> اجازه بدهید به جلو و ایجاد argv1.c، که کمی متفاوت این زمان است.
به جای چک کردن برای argc2، من قصد دارم به جای انجام این کار.
اینترنت من 0، من کمتر است از تعداد آنها، من به علاوه به علاوه،
و سپس چاپ در داخل این، درصد بازدید کنندگان، خط جدید، و سپس
ی argv براکت من.
>> بنابراین به عبارت دیگر، من با نه شخصیت فردی در حال حاضر.
ی argv، به عنوان توسط این مربع خالی ضمنی طبی در سمت راست نام ی argv،
معنی ی argv آرایه ای از رشته است.
و تعداد آنها فقط از نوع int است.
>> این خط در اینجا، 6، گفت مجموعه من برابر با 0.
تعداد تمام راه را تا به، اما نه از جمله، تعداد آنها.
و پس از آن در هر تکرار، نسخه قابل چاپ کردن یک رشته است.
چه رشته؟
>> رشته i ام در argv.
بنابراین در حالی که قبل از من بود با استفاده از براکت
نماد به در i ام کاراکتر در یک رشته، در حال حاضر
من با استفاده از نماد براکت در رشته i ام در یک آرایه را دریافت کنید.
پس از آن نوع از یک لایه فوق، مفهومی است.
>> و بنابراین، آنچه را شسته و رفته در مورد این برنامه در حال حاضر، اگر من کامپایل argv1،
و پس از آن انجام ./argv1 و سپس نوع در چیزی شبیه به مواد غذایی باز نوار،
که سه کلمه به طور پیش فرض که می دانشمند کامپیوتر برای هر زمان می رسد
او نیاز دارد برخی از کلمات حفره یا سوراخ، و ضربه را وارد کنید، هر یک از این کلمات،
از جمله نام برنامه، که است در argv در محل اول،
پایان می رسد تا در یک زمان چاپ شده است.
و اگر من این را تغییر دهید، و من می گویم چیزی شبیه به argv1 Zamyla چان،
ما هر سه از آن کلمات است که argv0،
argv1، argv2، چرا که در این مورد تعداد آنها، تعداد، 3 است.
>> اما آنچه شسته و رفته است اگر شما را در درک که ی argv فقط یک آرایه از رشته ها،
و شما را در درک که یک رشته آرایه ای از کاراکتر ها است،
ما در واقع می توانید نوع از این استفاده علامت کروشه مربع چندین بار
برای انتخاب یک رشته، و پس از آن را انتخاب کنید یک شخصیت در داخل رشته،
غواصی در عمیق تر شرح زیر است.
در این مثال، به من اجازه رفتن جلو و این argv2.c پاسخ.
و در این مثال، اجازه دهید من به جلو بروید و انجام شرح زیر است برای اعضای هیات من 0،
من کمتر از تعداد آنها است، من به همراه به علاوه، درست مثل قبل.
بنابراین در دیگر words-- و در حال حاضر این است به اندازه کافی پیچیده است.
سپس من قصد دارم برای گفتن تکرار بیش از رشته در argv،
به عنوان یک نظر به خودم.
و سپس من رفتن به یک تو در تو حلقه for، که شما احتمالا
انجام داده اند، و یا در نظر گرفته انجام این کار، در ابتدا، که در آن
من قصد دارم برای گفتن int-- من رفتن به استفاده از من دوباره،
چون من نمی خواهم به سایه، یا مرتب کردن بر اساس بازنویسی من موجود است.
>> من قصد دارم به جای مثلا j، چون که برو من به متغیر پس از من،
وقتی که من فقط در تلاش برای شمارش اعداد ساده است.
برای J می شود 0-- و همچنین، N است، رفتن به به دست آوردن طول استرن و argv براکت من،
تا زمانی که J کمتر از متر است، J به علاوه به علاوه، انجام موارد زیر.
و در اینجا بخش جالب است.
>> چاپ کردن یک شخصیت و یک خط جدید، متصل کردن در argv براکت من، براکت J.
خوب، پس اجازه دهید من برخی از نظرات اینجا اضافه کنید.
تکرار بیش از شخصیت در رشته فعلی،
چاپ j ام کاراکتری در رشته i ام.
بنابراین در حال حاضر، اجازه دهید در نظر چه این نظر باشد.
>> تکرار بیش از رشته در argv-- چگونه بسیاری از
رشته در argv هستند، یک آرایه است که؟
تعداد آنها بسیاری از، بنابراین من تکرار از من برابر 0 تا تعداد آنها.
در همین حال، چگونه بسیاری از شخصیت در رشته i ام در argv است؟
>> خوب، که برای دریافت پاسخ، من فقط پاسخ طول رشته
در مراقبت من رشته فعلی در مورد، که ی argv براکت من.
و من قصد دارم به طور موقت ذخیره که ارزش در N، فقط برای اهداف ذخیره،
به یاد داشته باشید آن را بسیار موثر است.
و سپس من قصد دارم مقداردهی اولیه J به 0، رفتن تا زمانی که J کمتر از n است،
و در هر تکرار افزایش J.
>> و سپس در اینجا، در هر نظر من در خط 12،
نسخه قابل چاپ کردن یک شخصیت، پس از یک خط جدید،
براکت به طور خاص و argv من به من می دهد رشته i ام
در argv-- تا کلمه اول، کلمه دوم، کلمه سوم، هر آنچه.
و سپس غواصی j در عمیق تر، و می شود من شخصیت j ام از آن کلمه.
و به این ترتیب، در اثر، شما می توانید درمان ی argv به عنوان یک چند بعدی،
به عنوان یک دو بعدی، آرایه، به موجب آن هر نوع کلمه به نظر می رسد
شبیه به این در و ذهن شما را چشم، و هر شخصیت
از نوع در تشکیل یک ستون، در صورتی که کمک می کند.
>> در واقع، زمانی که ما کسی را دست انداختن این از هم جدا در هفته های آینده،
آن را به کمی پیچیده تر از آن.
اما شما واقعا می تواند که فکر می کنم، در حال حاضر،
فقط به عنوان این دو بعدی آرایه، به موجب آن یک سطح از آن
همه رشته ها است.
و پس از آن اگر شما در عمیق تر، شما شیرجه رفتن می توانید در شخصیت فردی
در آنجا با استفاده از این نماد در اینجا.
>> پس چه اثر خالص است؟
اجازه دهید من به جلو و را رفو argv2-- آن است.
من اشتباه است.
به طور ضمنی اعلام استرلینگ تابع کتابخانه.
بنابراین تمام این مدت، آن را شاید مناسب
که ما در حال مرتب کردن بر اساس اتمام دقیقا همان جایی که ما آغاز شده است.
>> من پیچ، به طور ضمنی اعلام استرلینگ تابع کتابخانه.
OK، یک دقیقه صبر کنید.
به یاد دارم که، به خصوص از آن را در اینجا.
من نیاز به string.h در این نسخه از این برنامه است.
>> اجازه دهید من به جلو و شامل string.h، جز اینکه، به جلو
و کامپایل مجدد argv2.
و در حال حاضر، در اینجا ما به، را argv2، وارد کنید.
و هر چند آن را کمی مرموز در نگاه اول،
توجه کنید که، در واقع، آنچه چاپ شده است نقطه argv2 است.
>> اما اگر من برخی از کلمات پس از تایپ سریع، مانند argv2 Zamyla چان،
را وارد کنید، همچنین کمی مرموز در نگاه اول.
اما اگر ما حرکت به بالا، ./argv2 Z-A-M-Y-L-A C-H-A-N.
بنابراین ما بیش از هر کلمه تکرار شده است.
و به نوبه خود، ما تکرار به بیش از هر شخصیت در یک کلمه.
>> اکنون پس از این همه، متوجه وجود دارد که
یکی از جزئیات دیگر ما نوع شده نادیده گرفتن این زمان کل.
ما فقط به طعنه از هم جدا چه ورودی اصلی می تواند باشد؟
چه در مورد خروجی اصلی است؟
>> همه از این زمان، ما شده فقط کپی کردن و چسباندن
از نوع int کلمه در مقابل اصلی، هر چند شما ممکن آنلاین مشاهده کنید،
گاهی اوقات به اشتباه در نسخه های قدیمی تر C و کامپایلرها، که آنها می گویند باطل،
و یا چیزی در همه.
اما، در واقع، برای نسخه C که ما با استفاده از،
C 11 یا 2011، تحقق بخشیدن به که باید آن را از نوع int است.
و آن هم باید باشد از درجه اعتبار ساقط و یا argc و argv است.
>> اما چرا اعضای هیات تحریریه اصلی؟
چیزی است که آن را در واقع بازگشت؟
خب، معلوم است همه از این زمان، هر زمان که شما یک برنامه اصلی نوشته شده است
همیشه بازگشت چیزی.
اما آن را به انجام این کار مخفیانه.
>> این چیزی است که یک هوشمند، به عنوان خط 5 نشان می دهد.
اما آنچه INT؟
خب، این وجود دارد کنوانسیون در برنامه نویسی،
به موجب آن اگر چیزی است اشتباه رفته و همه به خوبی،
برنامه ها و عملکرد به طور کلی return-- تا حدودی counterintuitively--
0.
0 به طور کلی به معنای همه خوب است.
بنابراین حتی اگر شما فکر می کنم آن را به عنوان در بسیاری از زمینه های دروغین،
آن را در واقع به طور کلی به معنی یک چیز خوب
>> در همین حال، اگر یک برنامه باز می گردد 1، یا منفی 1، یا 5، یا منفی 42،
و یا هر غیر 0 ارزش، که به طور کلی به معنای
که چیزی اشتباه رفته است.
در واقع، در مک و یا کامپیوتر خود را، شما ممکن است در واقع دیده
یک پیغام خطا، آن به موجب آن می گوید چیزی و یا دیگر، خطا
کد منفی 42، و یا خطا کد 23، و یا چیزی شبیه به آن.
این تعداد به طور کلی فقط یک اشاره به برنامه نویس، و یا شرکت
ساخته شده است که نرم افزار، چه چیزی اشتباه و به همین دلیل رفت،
به طوری که آنها می توانید از طریق نگاه اسناد و یا کد خود را،
و شکل چه خطا در واقع به معنی.
به طور کلی نمی برای ما مفید کاربران نهایی.
>> اما زمانی که سود عمده 0، همه خوب است.
و اگر شما مشخص نیست چه اصلی باید بازگشت،
آن را فقط به طور خودکار بازگشت 0 برای شما.
اما بازگشت چیزی دیگری در واقع مفید است.
>> در این برنامه نهایی، به من اجازه جلو بروید و پاسخ این exit.c،
و معرفی آخرین از امروز موضوعات، شناخته شده به عنوان یک کد خطا.
اجازه دهید من به جلو و شامل ما فایل های آشنا تا بالا، انجام INT اصلی.
و در این زمان، اجازه دهید انجام تعداد آنها از نوع int، ی argv رشته، و با براکت من
به این معنا که آن را در آرایه است.
و پس از آن اجازه دهید من فقط انجام یک بررسی سلامت عقل است.
این زمان، اگر تعداد آنها را نمی کند برابر 2، پس از آن شما می دانید چه؟
فراموشش کن.
من می خواهم بگویم که، هی، کاربر، شما از دست رفته آرگومان خط فرمان
N اسلش.
>> و پس از آن که آن را.
من می خواهم به خارج شوید.
من می خواهم به پیشگیرانه، و قبل از موعد مقرر واقعا، بازگشت
چیزی غیر از شماره 1.
برو به ارزش برای اولین خطا که می تواند رخ دهد 1 است.
اگر شما برخی از دیگر اشتباه وضعیت است که ممکن است رخ دهد،
شما ممکن است بازگشت 2 می گویند و یا بازگشت 3، و یا شاید حتی منفی 1 یا منفی 2.
>> اینها فقط کدهای خروج هستند که، به طور کلی،
تنها به برنامه نویس مفید، یا شرکت است که حمل و نقل نرم افزار است.
اما این واقعیت که آن را 0 است آنچه که مهم است.
بنابراین اگر در این برنامه، من می خواهم تضمین می کنند که این برنامه تنها
کار می کند در صورتی که کاربر من فراهم می کند با تعداد آرگومان از دو،
نام این برنامه، و برخی دیگر از کلمه، من می تواند به اندازه زیر اجرا،
فریاد زدن در کاربر را با گفت تابع () printf، از دست رفته آرگومان خط فرمان،
بازگشت 1.
که فقط بلافاصله خروج از برنامه.
>> فقط اگر تعداد آنها برابر 2 خواهد ما پایین در اینجا، که در آن نقطه من قصد دارم برای گفتن،
سلام درصد S، بک اسلش نفر، argv1.
به عبارت دیگر، من پس از رفتن و argv 0 نیست،
که فقط نام برنامه است.
من می خواهم برای چاپ کردن سلام، کاما، کلمه دوم که انسان تایپ.
و در این مورد در خط 13، همه خوب است.
>> من می دانم که تعداد آنها 2 است منطقا از این برنامه است.
من قصد دارم به جلو بروید و بازگشت 0.
از سوی دیگر، در نظر داشته باشید که این در ابتدا درست است و همچنین.
>> منطقی، من می توانم این کار را انجام و در محفظهای این خطوط
کد در این بند دیگری در اینجا.
اما این نوع از بی ارزش تورفتگی کد من.
و من می خواهم فوق العاده روشن است که بدون توجه به آنچه،
به طور پیش فرض، سلام چیزی خواهد شد چاپ شده،
تا زمانی که کاربران همکاری می کند.
>> پس از آن بسیار رایج را به استفاده از یک شرط، فقط یک صورت،
به گرفتن برخی از اشتباه وضعیت، و سپس خارج شوید.
و پس از آن، تا زمانی است خب، ندارد دیگری،
اما فقط باید کد خارج که اگر، به دلیل آن
معادل در این مورد خاص، منطقی.
بنابراین من بازگشت 0، فقط به به صراحت دلالت همه خوب است.
>> اگر من از بازگشت 0 حذف، آن را به طور خودکار برای من به عهده گرفت.
اما در حال حاضر که من بازگشت در حداقل این مورد،
من قصد دارم به، برای اندازه گیری خوبی و وضوح، بازگشت 0 در این مورد.
بنابراین در حال حاضر اجازه دهید من جلو بروید و خروج، که SEGUE کامل فقط به ترک است.
>> اما مطمئن خروج، و به من اجازه رفتن جلو و ./exit انجام دهید، وارد کنید.
و برنامه فریاد زد در من، از دست رفته آرگومان خط فرمان.
خوب، اجازه دهید من همکاری کنند.
>> اجازه دهید من به جای انجام ./exit، دیوید، را وارد کنید.
و در حال حاضر آن را می گوید، سلام دیوید.
و شما به طور معمول این را ببینید.
>> اما معلوم است که وجود دارد حالت خاص در لینوکس به واقع دیدن
با خروج کد یک برنامه خارج می شود.
گاهی اوقات در یک گرافیکی جهان مانند سیستم عامل مک یا ویندوز،
شما فقط این اعداد زمانی که یک دید پیغام خطا بالا میآید بر روی صفحه نمایش
و برنامه نویس شما نشان می دهد که تعداد.
اما اگر ما می خواهید برای دیدن آنچه خطا پیام است، ما می توانیم آن here-- انجام
بنابراین ./exit، را وارد کنید، چاپ از دست رفته آرگومان خط فرمان.
>> اگر من در حال حاضر از $ echo ؟، که مسخره مرموز به دنبال.
اما $؟
طلسم جادویی است که می گوید، هی، کامپیوتر،
به من بگویید چه قبلی کد خروج از برنامه بود.
و من آمار را وارد کنید.
من 1، چرا که این چیزی است که من تابع اصلی من به بازگشت کرد.
>> در همین حال، اگر من ./exit دیوید، و ضربه را وارد کنید، من، سلام دیوید.
و اگر من در حال حاضر از $ echo ؟، من سلام 0.
و این عملا شود اطلاعات با ارزش
در زمینه دیباگر، نه چندان زیاد است که شما، انسان، به مراقبت.
اما دیباگر و دیگر برنامه های ما این ترم استفاده
اغلب در این تعداد نگاه کنید، حتی اگر آن را از پنهان
مگر اینکه شما برای آن، به نگاه تعیین اینکه آیا یک برنامه یا نه
اعدام درست یا نادرست بود.
>> و به طوری که ما را به ارمغان می آورد این، در پایان روز.
ما امروز با نگاه آغاز شده اشکال زدایی، و به نوبه خود در دوره
خود را، و سپس جالب تر، از لحاظ فنی در زیر هود
در چه رشته ها، که آخرین هفته ما فقط در زمان برای مسلم است،
و قطعا آنها را در زمان برای در ابتدا اعطا می شود.
>> پس از آن ما در چگونه ما می توانیم دسترسی نگاه شخصیت فردی در یک رشته،
و سپس دوباره به یک سطح بالاتر و جو در زمان همه چیز نگاه، نگاه به چگونگی well--
اگر ما می خواهیم به فردی عناصر در یک لیست مانند ساختار،
ما نمی توانیم این کار را با رشته های متعدد؟
و ما می توانیم با آرگومان های خط فرمان.
اما این تصویر در اینجا فقط جعبه نمایشی از این ایده کلی این است
از یک آرایه، و یا یک لیست و یا یک بردار.
و بسته به زمینه، همه این کلمات
معانی کمی متفاوت است.
بنابراین در C، ما تنها در مورد یک آرایه صحبت کنید.
و مجموعه ای یک تکه است حافظه، هر یک از آنها است
عناصر به هم پیوسته هستند، پشت، به عقب، به عقب، به پشت.
>> و این عناصر، به طور کلی، از نوع داده های مشابه، شخصیت،
شخصیت، شخصیت، شخصیت یا رشته، رشته، رشته، رشته، یا از نوع int،
هوشمند، هوشمند، هر چه که باشد ما در حال تلاش به فروشگاه.
اما در پایان روز، این است آنچه آن را مانند به نظر می رسد مفهومی.
شما در حال گرفتن خود را حافظه یا RAM کامپیوتر است.
و شما در حال کنده کاری آن را به جعبه های هم اندازه، همه از آن
هستند، به عقب، به تماس، به عقب در این راه.
>> و چه خوب در مورد این ایده، و این واقعیت
که ما می توانیم مقادیر در این راه بیان با اولین ساختمان داده ما
در کلاس، معنی ما می توانیم شروع برای حل مشکلات با کد
که به طور مستقیم در هفته 0 آمد.
شما در تلفن را به یاد می آورند به عنوان مثال کتاب، که در آن
ما با استفاده از تقسیم و غلبه، یا یک الگوریتم جستجوی دودویی،
از طریق یک طیف غربال کردن دسته از نام ها و شماره.
اما ما به عهده گرفت، به یاد بیاورید، که دفترچه تلفن در حال حاضر مرتب شده باشد،
که شخص دیگری در حال حاضر کرلی out-- داده یک لیست از نام
و numbers-- چگونه آنها را با حروف الفبا.
و در حال حاضر که در C، بیش از حد، توانایی
به وضع همه چیز، نه فیزیکی در یک دفترچه تلفن
اما عملا در یک کامپیوتر حافظه، می توانیم هفته آینده خواهد بود
به معرفی دوباره this-- اولین ساختمان داده ما در array--
اما مهمتر از آن، کامپیوتر واقعی الگوریتم های علم اجرا
در کد، که با آن ما می توانیم ذخیره داده ها در ساختار شبیه به این،
و سپس شروع به آن را دستکاری، و در واقع حل مشکلات با آن،
و برای ساخت در بالا از آن، در نهایت، برنامه در C،
در پایتون، در جاوا اسکریپت، پرس و جو پایگاه داده با SQL؟
>> و ما که همه از این دید ایده های مختلف در هم بافتن.
اما در حال حاضر، به یاد بیاورید که دامنه که ما امروز معرفی
این چیزی که اینجا بود، و جهان از رمزنگاری.
و در میان مشکلات بعدی شما به خودتان حل خواهد شد هنر رمزنگاری است،
تقلا و د تقلا اطلاعات و رمز درآوردن
و رمزگشایی متن، و با فرض نهایت
که شما هم اکنون می دانم که چه است در زیر هود
به طوری که زمانی که می بینید و یا دریافت یک پیام مانند این، شما
خودتان می توانید آن را کشف کند.
این همه، و در کنار هم بیشتر است.
>> [پخش ویدئو]
>> -Mover فقط وارد است.
من قصد دارم به سفر استاد دانشگاه بود.
بله.
سلام.
این شما را در.
صبر کن!
دیوید.
من فقط تلاش برای کشف از آنچه برای شما اتفاق افتاده.
لطفا، هر چیزی می تواند کمک کند.
شما کالج خود بودند هم اتاقی بودند، نه؟
شما با او وجود دارد زمانی که او به پایان رسید پروژه CS50 است؟
>> [موسیقی]
>> یعنی CS50 بود.
>> عاشق اینجام.
>> -کامل خوردن.
ما قصد داریم از کسب و کار.
>> [پایان دادن به پخش]