استاد: پس از دستور کار این هفته، چیزهای که بسیار نیست. اما امیدوارم بسیار بسیار مفید و مرتبط برای شما بچه ها این هفته است. اما ما قصد داریم به صرف شاید 15، 20 دقیقه فقط به سرعت صحبت کردن در مورد لیست لینک. لیست لینک در حال رفتن به شود در مسابقه پوشانده شده است. بنابراین شاید این امر می تواند بسیار مفید برای یادگیری یک کمی در مورد چه چیزی است. ما در حال رفتن به صرف گسترده اکثر بخش امروز رفتن بیش از مسابقه صفر مشکلات عمل. و سپس ما را شاید 20، 30 دقیقه صرفه جویی در پایان برای هر گونه سوال طولانی هر کسی است. و پس از آن، آخرین پنج دقیقه، من قصد دارم به یک پمپ تا سخنرانی برای مسابقه. شما بچه ها همه می خواهم به اینجا برای آن. از آنجا که آن را برای رفتن به هم خوب است. همه حق است، به طوری که برخی مواد در لیست لینک. چگونه آنها به طور معمول ساختار است شما آنچه را به نام یک گره، درست است؟ شما باید این چیزها به نام گره ها، که ساختمانها می باشد. من بیش از چگونه برای ایجاد بروید یک گره در اسلاید بعدی. اما در اصل همه مرتبط لیست است داده است که تا با هم از طریق اشاره گر صحافی شده است. و به این ترتیب مزیت است که ما استفاده از یک لیست پیوندی بیش از، شاید، مثل یک آرایه، است این واقعیت است که در یک آرایه شما نیاز به یک بلوک به هم پیوسته از حافظه در همان محل، یکی پس از دیگری، قادر به که. در حالی که یک لیست پیوندی، شما می توانید که قطعات کوچک تصادفی از حافظه همه بر روی کامپیوتر خود با هم توسط اشاره گر صحافی. و در این راه شما می توانید به اطلاعات دسترسی داشته که یکی پس از می آید دیگر، پس از دیگری بدون نیاز به فقط یک تکه بزرگ از حافظه در کامپیوتر خود را در جایی. و این یکی از عمده است دلایلی که ما استفاده از لیست لینک. در مرحله دوم، آن را بسیار آسان را به صورت پویا تغییر اندازه لیست لینک چرا که در آرایه، زمانی که شما اعلام یک آرایه، شما یک مقدار تنظیم شده است. اجازه دهید بگویم من می خواستم برای ایجاد آرایه ای از اعداد صحیح 10. من ایجاد یک آرایه از 10 اعداد صحیح، و از آن است. آن را به 10 است. من نمی دانم که چه چیزی را پس از آن انجام دهد. اگر من می خواستم آن را به 11، می توانید آن را انجام نمی دهد. اگر من می خواهم آن را به 9، می توانید آن را انجام نمی دهد. در حالی که در یک لیست لینک، شما می توانید اضافه کنید و حذف و درج هر کجا که می خواهید. شما می توانید به صورت پویا تغییر اندازه خود را ساختار این، ساختار داده ها خود را. و ما می دهد بسیاری انعطاف پذیری بیشتر اضافه که ما انجام معمولا با آرایه است. هر کسی اشتباه بر پایه ساختار چگونه یک لیست لینک و یا چرا ما باید به استفاده از یک بیش از یک آرایه؟ آره، ما بیش از در جزئیات چگونه در واقع یکی ایجاد کنید. اما این فقط نوع مفهوم کلی در حال حاضر. خنک. و به این ترتیب آرایه ها با هم کوک از این چیزها کوچک و دوست داشتنی گره نامیده می شود. همه گره یک نوع ساختار است. به یاد داشته باشید، یک ساختار است اگر شما می خواهید برای ایجاد یک نوع خاصی از متغیر در C می کند که در حال حاضر نیست وجود داشته باشد، شما، به عنوان یک برنامه نویس، در واقع می تواند ایجاد که خودتان. و به این ترتیب از این نوع داده ساختار است که به نام گره، در واقع توسط ما ایجاد شده است، که در داخل C خود را در آن وجود ندارد. و راه را به شما که ایجاد یک است که شما باید هدر ساختار از typedef، که به کامپایلر می گوید من در مورد ایجاد یک ساختار. ما قصد داریم نام آن را "گره." و در داخل ما در حال رفتن برای تعریف متغیر در، است که رفتن به ذخیره یک مقدار. و پس از آن ما نیز به رفتن یک اشاره گر به نام "بعدی" که اشاره به بعدی گره در لیست لینک. و پس از آن شما به پایان برسد که خاموش تنها با تکرار دوباره به طوری گره کامپایلر می داند، OK که در پایان ساختار من است. و بنابراین در این راه، ما مهربان هستید ایجاد یک آرایه کمی ناز نوع از چیزی که با ارزش و با یک اشاره گر. و شما می توانید همه آنها را پیوند همراه با آن اشاره گر. به طوری که آنها می توانید تمام مهربان با هم در یک زنجیره صحافی. خنک. می تواند به شما که کمی بهتر می شنوید؟ مخاطبان: آره. استاد: بسیار خوب. بنابراین راه است که، همانطور که شما می توانید ببینید بچه ها، یک لیست لینک معمولی ساختار یافته است است که شما یک سر. شما باید مقدار سر است که نه که توسط هر اشاره گر دیگر اشاره کرد. اما آن را به نقطه در، یا مرجع، گره دیگر است. گره پس از در حال رفتن به مرجع گره پس از آن، و غیره و غیره تا زمانی که شما در نهایت ضربه انتهای لیست، لینک کنید. و شما فقط یک اشاره گر وجود ندارد. و بنابراین، فکر می کنم مثل، در یک زنجیره، و یا حتی اگر هر کدام از شما بچه ها ساخته شده، من نمی دانم، مانند حلقه میوه وقتی که کمی شد. شما می رشته آنها با یکدیگر و آنها را می پوشند به دور گردن خود را. فکر می کنم این همان چیزی دقیق. شما باید این چیز کمی که شما می توانید با هم رشته که نقطه را به یکی پس از آن، به یکی پس از آن، و غیره و غیره تا زمانی که شما یک زنجیره ساختار داده که شما می توانید با این حال شما دوست دارید استفاده کنید. پس راه که این ما را به طور معمول در درج یا حذف هر گره از یک لینک لیست بسیار متفاوت است بسته به جایی که آن گره است. بنابراین، برای مثال، به دلیل اشاره گر همیشه اشاره در یک مقدار خاص، زمانی که شما حذف و یا قرار دادن یک گره، می خواهید مطمئن شوید که اشاره گر است که همه در همه چیز به درستی اشاره. بنابراین اگر شما می خواهید به طور بالقوه وارد یک گره جدید با ارزش یک در داخل یک لینک طبقه بندی شده اند لیست، همه ما در اینجا می دانیم از تصویر که رفتن به در رفتن بین سر و دو، درست است؟ از آنجا که یک متناسب با سمت راست وجود دارد. اما روشی که در آن ما را که توسط اولین هرگاه اشاره گر از سر و ارسال که به یک. اما ما در اینجا به یک مشکل است. می توانید هر کسی را ببینید که چه مشکل است اگر ما به dereference اول بود اشاره گر از سر به یک؟ چه مشکلی ممکن است ما را به اگر ما سعی اجرا برای اضافه کردن این به جلو از آرایه ما؟ مخاطبان: [نامفهوم] استاد: دقیقا. بنابراین در اینجا ما یک اشاره گر که بود یک بار از سر اشاره به دو. اما اگر شما خلاص شدن از شر است که اشاره گر، شما آن را اشاره به یک، ما در حال حاضر هیچ نظری ندارم که در آن به برای پیدا کردن دو. از آنجا که همانطور که قبلا گفتم، شما یک گروهی بزرگ و حافظه در کامپیوتر شما. همه این غدد به طور تصادفی پراکنده در هر مکان در کامپیوتر شما. و شما نمی دانید که چگونه در مورد پیدا کردن آن بروید. و بنابراین شما نیاز به اشاره گر با اشاره به تمام گره ها در پایان. و یا دیگری اگر شما به طور تصادفی ارجاع یک بدون اختصاص اول یک مقدار اول، شما به فقط رفتن به از دست دادن همه چیز پس از آن. بنابراین آنچه که ما در حال رفتن به انجام دهید این است، شما می توانید برای اولین بار خواهید برای ایجاد یک اشاره گر بر روی گره می خواهید وارد کنید. نقطه آن به جایی که شما می خواهم به آن وارد کردن به، و بعد از آن شما می تواند سر به یک نقطه. آیا این را حس به همه که اینجا هستید؟ عالی. فکر می کنم از آن را به عنوان درست مثل یک زنجیره است. اگر شما اضافه کردن زنجیره ای، این نوع از شهودی چگونه شما می خواهم که در مورد قرار دادن است. OK، به طوری که در واقع بسیار کوتاه تر از من فکر کردم این امر می تواند، SPIEL پنج دقیقه در لیست لینک. فقط تا شما بچه ها ایده اولیه از آنچه که است. در اینجا ما باید در دستور کار برای مسابقه صفر است. اجازه ندهید که این شما را بترسانند. من می دانم که بسیاری از اطلاعات. به نظر می رسد بسیار ترسناک است. آن را نیز بسیاری از، من فکر می کنم، نوع CSC از واژه ها. چیزهایی مانند رشته هگزادسیمال، اشاره گرها، تخصیص حافظه پویا شرایط صدایی بسیار ترسناک است. اما ما قصد داریم به آنها استراحت پایین، انجام برخی از مشکلات عمل به طوری که شما بچه ها همه آماده برای این آزمون می باشد. چگونه بسیاری از شما بچه ها در حال حاضر آغاز مطالعه؟ خوب، شما احتمالا می خواهید بچه ها شروع به شروع کار که، به دلیل مسابقه فردا است. یا پنج شنبه برای برخی از شما. آره، بنابراین ما در حال رفتن به بیش از برخی از مشکلات عمل. اگر شما بچه ها همه می خواهید را به از یک ورق کاغذ، یک مداد است. ما قصد داریم به فقط صرف اکثریت قریب به اتفاق بخش امروز رفتن بیش از برخی از که شما بچه ها یک ایده از آنچه انتظار می رود در مسابقه. باشه. زن و شوهر از تدارکات را تحت پوشش جزئیات و همچنین، برای هر کسی که اگر به این لینک شده وجود دارد، شما به cs50.yale.edu، در مقابل این صفحه یک لینک وجود دارد که می گوید "در مورد مسابقه صفر است." لینک شما را دارد. اگر شما آن را نمی خواند، لطفا آن را بخوانید. از آنجا که آن به شما می گوید که واقعا مهم اطلاعات مربوط به مسابقه. من قصد دارم به این کار شده است از که فقط به خاطر، به لحاظ جسمی، اگر شما بچه ها نمی دانم که در آن برای رفتن، ما مشکلات را داشته باشد. و بنابراین اگر آخرین خود را در شرایط با A به N، به سالن اجتماعات مدرسه قانون است. و اگر آخرین شروع می شود خود را با P به Z، دیویس سالن رفت. و این تنها برای اعمال مردم در بخش چهارشنبه. اگر شما در حال گرفتن امتحان در پنجشنبه، شما را به SSS 114 رفتن که در آن سخنرانی خود را به طور معمول است. مخاطبان: [نامفهوم] استاد: O به Z، شما در حال رفتن برای رفتن به سالن دیویس. من قصد دارم برای تغییر آن، درست است؟ اوه، بله، شما فقط به طور خودکار شکست. آه، بله، که شما کریستا است. آره، بد من. بله، O به Z، شما در حال رفتن برای رفتن به دیویس Auditorim. من قصد دارم برای حل این بار من را آپلود کنید. آره. و پس از آن نیز چیزی به ذهن مهم که چهارشنبه است، اگر شما به طور رسمی در بخش چهارشنبه ثبت نام، شما باید مسابقه خود را در روز چهارشنبه است. و اگر شما در پنجشنبه ثبت نام، شما باید مسابقه خود را پنجشنبه. و آن را در طول زمان کلاس است. که در آن، من فکر می کنم آن را مانند 1:00 تا این 02:15 در روزهای چهارشنبه و 2:30-3:45 در پنج شنبه ها. اگر شما یک درگیری آشتی ناپذیر، بهانه دین هستند که تنها چیزی، متاسفانه، ما می کشد. چرا که ما تا به حال یک اکثریت قریب به اتفاق از درخواست از چهارشنبه به سوئیچ به روز پنج شنبه. که ما نمی توانیم مگر اینکه افتخار ما درخواست دین. باشه. بنابراین قبل از ما بر روی یک آغاز شده زن و شوهر از مشکلات عمل، من فقط رفتن به بیش از راهنمایی های مفید اندی برای موفقیت. شما بچه ها، هنگامی که شما مطالعه، شما واقعا می خواهید برای تمرین نوشتن کد با دست. اولین بار من تا به حال یک مسابقه CS گرفت، من تا به حال کد تمرین نوشتن با دست قبل و آن را بسیار بود تکان دهنده در چقدر دشوار بود. هنگامی که شما بچه ها را به نه عادت تایپ کردن همه چیز، از آن می آید بسیار به طور طبیعی بودن قادر به صورت خودکار تکمیل اند براکت و سمی کالن وجود دارد. هنگامی که شما آن را ارسال با دست، گاهی اوقات آن را بسیار، بسیار آسان برای فراموش یک نقطه و ویرگول، و یا فراموش برای بستن یک براکت، و یا فراموش برای بستن یک روده بزرگ، یا چیزی شبیه به آن. بنابراین، هنگامی که شما ارسال کد با دست، آن احساس بسیار متفاوت است. پس شما بچه ها، هنگامی که شما در حال کار از طریق برخی از مشکلات عمل، آن را خوب واقعا امروز تمرین. یا فردا، به گمان من، اگر شما در نظر گرفتن مسابقه روز پنج شنبه. در مرحله دوم، ما باید آخرین، مانند، ارزش هشت سال از عمل آزمونها آنلاین. مسابقه امسال احتمالا خواهد بود بسیار، بسیار شبیه به همه آنها. همه آنها بسیار مشابه است. شما نوع به گرفتن سبک نوع سوال که ما بپرسید، نوع توابع است که ما آن را در نوشتن، و غیره، و غیره. بنابراین آزمونها عمل را، به خصوص در محدودیت های زمانی. 75 دقیقه به انجام مسابقه است نه بسیاری از زمان. این بسیار، بسیار طولانی است. و بنابراین شما می خواهید بچه ها واقعا مطمئن شوید که شما بچه ها در عادت نوشتن کد با دست به سرعت. زیرا شما نمی خواهید نه اولین زمان برای دیدن یک مسابقه که طول در مسابقه شما باشد. شما بچه ها واقعا می خواهید مطمئن شوید که شما تمرین قبل. چهارم، شما می خواهید به بررسی سخنرانی و بخش اسلاید. شما لازم نیست که به خاطر سپردن چیزها. در واقع، هر کس مجاز به یک ورق کاغذ یادداشت سفید، جلو و عقب. شما بچه ها می توانید تایپ یا نوشتن. اگر شما خودتان پیدا کنید نیاز به حفظ هر چیزی، آن را به پایین که ورق. من به شما تضمین، شما می نمی خواهم در وسط آن مسابقه گیر که مثل، آه آره، چه خبر زمان اجرا از این نوع در مقابل این نوع. فقط آن را پایین آن را کپی کنید و مستقیما از ورق توجه داشته باشید خود را. سپس شما می توانید فقط با استفاده از خود را مغز در مورد مشکلات فکر می کنم به جای اینکه به یاد حقایق. و به این ترتیب واقعا امکان استفاده از هر گونه اطلاعات طاقچه که شما فکر می کنم شما نیاز به حفظ، با صدای تلپ آن را در برگه بررسی. OK، هر گونه سوال لجستیکی در مورد مسابقه قبل از ما شروع به برخی از مشکلات مسابقه عمل؟ آره؟ مخاطبان: من تا به حال شانس نیست در مسابقه نگاه [نامفهوم] اما آن را برای رفتن به نرم افزار بیشتر، و یا وجود دارد نیز برای رفتن به، مانند، سوالات دانش؟ استاد: این مقدار زیادی است. بنابراین، راه است که من که مسابقه توصیف is-- من با هم برخی از مشکلات عمل که من از تمام آزمونها را کشیده است. اما شما خواهید دید که دو اصلی وجود دارد نوع از سوالات ما به شما بپرسید. یکی از جزئیات سطح بسیار پایین تر است. ما به شما یک تکه کوچک از کد و می گویند، است که در اینجا یک خطا وجود دارد؟ آنچه که می توان چاپ کردن که اینجا هستید؟ این کد را تولید خواهد کرد، و غیره. بنابراین سطح بسیار پایین جزئیات اطلاعات. و در سمت تلنگر، ما بسیار دارند سطح بالا سوالات مبتنی بر دانش. می تواند شما را چه توضیح تفاوت بین یک جستجوی دودویی و یک جستجوی خطی است؟ چرا ما می خواهیم استفاده یکی را بر دیگری؟ شاید، چه GDB است؟ چرا ما می خواهیم به استفاده از GDB؟ سطح بالاتر، اساسی تر سوال درک. بنابراین شما یک مخلوطی از دید دو نفر از آنها در مسابقه خود را. هر چیز دیگری قبل از ما سر راست را در آن؟ باشه. مخاطبان: یکی بیشتر. استاد: اوه، یکی بیشتر. متاسف. مخاطبان: آره، آن همه درست است. بنابراین شما می گویید 75 دقیقه است خیلی کوتاه است، مانند بعید است که ما به پایان خواهد؟ یا، مانند، 75 دقیقه زمان دقیقا به همان اندازه است همانطور که ما نیاز اگر ما مناسب آماده است؟ استاد: OK، به طوری که مسابقه چالش برانگیز است. این قطعا چالش برانگیز است. شما را پیدا خواهد خود را در زمان کوتاه است. شما احتمالا رفتن به ضربه، مانند 10، 15 دقیقه برای رفتن، و شبیه، گه. من خیلی از چپ به کار. و این کاملا خوب است. همه رفتن به همان شیوه به احساس. فقط از بسیار آگاه چقدر وقت داری. و به همین دلیل من به شما بگویم بچه ها انجام آزمونها عمل. از آنجا که آن را واقعا می دهد یک حس بزرگ چه مسابقه است که به مانند باشد. بنابراین اگر شما به خودتان پیدا کنید قادر به پایان رسید عمل آزمونها در یک مقدار خوبی از زمان، شما می توانید خود را به خوبی سرعت، سپس شما یک مشکل را ندارد در روز چهارشنبه یا پنج شنبه. خنک. اگر همه wants-- من فکر می کنم اکثر مردم ورق کاغذ خارج در حال حاضر. من قصد دارم به اصل فقط شما نمونه سوال را، شما بچه ها، به مانند یک چند دقیقه به آنها انجام دهد. و ما بیش از یک کلاس به عنوان چه پاسخ به آنها می باشد. پس این است که بسیار معمولی درخواست اوایل خواهیم شما بپرسید، از تبدیل اعداد بین پایگاه های مختلف. دودویی، شما بچه ها می توانید به عنوان به یاد بیاورید، پایه دو است. دهدهی پایه 10، یا آنچه که ما است به عنوان انسان به طور معمول تفسیر. هگزادسیمال پایه 16 که صفر است از طریق نه به عنوان یک طریق F. بنابراین چهار عدد من وجود دارد درخواست شما بچه ها تبدیل کنید. من را دوست دارید، سه تا چهار دقیقه از طریق چگونه فکر می کنم ما در مورد حل این است. مخاطبان: آیا ما ماشین حساب مجاز است؟ استاد: شما نه نیاز ماشین حساب، آره. من فکر می کنم علاوه بر این پایه، من فکر می کنم، همه شما بچه ها خواسته می شود را انجام دهد. و فقط تا من از حس دارند از وقتی که همه انجام شده است، نگاه کردن، موج، من نمی دانم، لبخند، خوشحال اگر شما انجام می شود. آره. شاید چند دقیقه. خوب، اجازه دهید آن را در آورد. من به عمد از رفتن به شما بچه ها هم کمتر از شما احتمالا نیاز به انجام برخی از این مشکلات، فقط به خاطر من خواهید مطمئن شوید که ما را از طریق یک دسته از مشکلات است. بنابراین هیچ نگرانی اگر شما نمی یک فرصت برای به پایان برساند. در مجموع به عنوان زمانی که شما OK یک ایده چگونه برای این کار. بنابراین اجازه دهید به جلو و انجام یکی از اولین. پس اول، آیا کسی می خواهید به من بگویید در باینری، هر یک از این رقم نشان دهنده از لحاظ ارزش خود را؟ آره؟ رسید به دو قدرت صفر، 00:58. استاد: دقیقا. بنابراین. درست است، بنابراین به طور معمول زمانی که ما در پایه 10 هستیم تمام این نشان دهنده هستند، مانند، 10 به پایه صفر، درست است؟ که در محل یکی از شما است. همه جای 10 خود را است 10 به قدرت است. جایی است که شما 100 10 به قدرت دو. هر چه پایه شما در حال رفتن هستید برای انجام با همان چیزی دقیق، فقط با یک پایه های مختلف. بنابراین باینری، همه این است که پایه دو است. شما در حال رفتن برای تبدیل تمام رقم به دو به هر آنچه قدرت که رقمی. و بنابراین در این معنا، ما می توانید یک راه ساده تر شده اند از قادر به اضافه کردن یا شدن خلاصه تمام اعداد در برای تبدیل به پایه 10. بنابراین هر کسی می خواهید به من بگویید چه پاسخ به یکی از اولین در پایه ده است؟ مخاطبان: دو، [نامفهوم] استاد: آره. مخاطبان: 42. استاد: 42، وجود دارد که شما بروید. پس راه ما این پاسخ رو با شد انجام دو اولین است، که دو. به علاوه دو سوم است، که هشت. به علاوه دو تا پنجم، که هر آنچه بیش از سمت چپ. شما آنها را جمع و آن را 42. آیا کسی در مورد چگونه ما کردم که اشتباه گرفته؟ علاوه بر این پایه ای باشد، مانند من گفتم، شما باید باشه. اگر نه، خب، ما می توانید بیش از حد تمرین است که. اما این همه درست است. خنک. آیا کسی می خواهید به من می دهد پاسخ به یک ثانیه به عنوان؟ 50؟ خوب است. هر کسی در مورد نحوه اشتباه ما که هر دو؟ سرد، من اند پاسخ در اسلاید بعدی. بنابراین هیچ نگرانی اگر شما نیاز به آن را کپی می کند. خوب، پس مبنای شانزده است که کمی سختتر است. اما من قصد دارم به شما بچه ها را نشان می دهد یک میانبر برای چگونگی انجام این کار. بنابراین مبنای شانزده، به عنوان شما به یاد داشته باشید، همه آن است که 16. و از آنجایی که ما به عنوان انسان در واقع نه 16 شماره برای نشان دادن آن، ما از صفر تا نه رفتن، که برای اولین بار ما 10 ارزش ها، و سپس ما را از طریق F، که شش ارزش است. و به این ترتیب ساده ترین راه برای رفتن از هر عدد دودویی به مبنای شانزده است به آنها استراحت کردن به نیمه. و بنابراین هر عدد دودویی خواهیم بود شما احتمالا هشت رقم خواهد داشت. شما فقط می توانید شکستن آنها را در وسط. بنابراین اولین one-- یکی، یکی، یک، یک، یکی. نوع از آن فکر می کنم تا، شما می دانید، قرعه کشی یک علامت یا یک کاما از هم در بین آنها است. و شما فقط می توانید تبدیل به طور مستقیم هر این است که به اولین تعداد هگزادسیمال، و به هر آنچه که در اینجا دوم از مبنای شانزده است. بنابراین از نماد مشترک به یاد داشته باشید، چه مقادیر هگزادسیمال با شروع کنم؟ مخاطبان: صفر. استاد: 0X. بنابراین ما می دانیم که هر زمان ما از شما درخواست برای تبدیل هر عدد به مبنای شانزده، و یا هر زمان شما هر گونه ببینید تعداد که با 0x شروع می شود، شما می دانید که آن را به یک مقدار هگزادسیمال. و سپس شما در حال رفتن به به خواسته می شود تعیین چه این دو رقم است. و راه را به شما انجام این کار، tallying تا که نیمی و تطبیق که نیم. بنابراین در این مثال، چه یکی، یک، یک، یکی باشد؟ چه مقدار خواهد بود؟ که می شود، F، درست است؟ که می شود، 15. بنابراین این امر می تواند یکی F.، یک، یک، یک در اینجا نیز F. بنابراین یکی، یک، یک، یک، یک، یک، یک، در مبنای شانزده، همه آن است که 0xFF باشد. از آنجا که این نیمه نمایندگی F، ارزش 15، و این نیمه نمایندگی F، ارزش 15. از آنجا که به یاد داشته باشید، ما شمارش از صفر تا نه. A است مانند 10، B است مانند 11، F 15 است. آیا این را حس به همه چگونه ما از دودویی به مبنای شانزده کردم؟ رسید و پس چگونه ما را دریافت کنم 15 از یک، یک، یک، یک؟ استاد: بله، این باینری است، درست است؟ تصور کنید که این فقط یک عدد باینری است. بنابراین شما باید دو به صفر است، که یکی. مخاطبان: آه، باشد. بنابراین شما فقط آن را در کل است. استاد: بله، و پس از آن شما فقط کل که از. که همه آن است. رسید OK. استاد: OK. رسید بنابراین شما از دودویی به دهدهی به مبنای شانزده؟ استاد: این را ساده ترین راه برای انجام این کار، آره. شما در حال رفتن به دهدهی به دلیل اعشاری صفر تا نه تنها دارد. ما فقط نوع هستید تقسیم این تا به دو. مخاطبان: [نامفهوم] با استفاده از اعشار را پیدا آنچه در آن مسابقات تا در مبنای شانزده است. استاد: منظور من، شما هستید tallying تا با استفاده از ریاضی پایه. مخاطبان: آره. استاد: بله، بسیار. آن را کمی گیج کننده است. اما فقط می دانم که شما می توانید تقسیم هر این مقدار است را تنها در نیمه. نگاه کنید، چه این است که در دودویی؟ چه تعداد است؟ آن را به چیزی از صفر تا F. در اینجا نیز برای رفتن به چیزی از صفر تا F. و سپس شما فقط می توانید این دو حق وجود دارد. رسید OK. استاد: بله. باشه. پس شما بچه ها می خواهید سعی کنید یک بعدی پس از آن؟ صفر، یک، صفر یک، یک صفر، یک به صفر است. من به شما بچه مثل 30 ثانیه را، از آنجایی که شما احتمالا نمی دانم فوت و فن به نحوه انجام این کار پیش از آن. OK، هر کسی می خواهید برای دریافت این یک شات؟ 0X5A. استاد: 0X5A. 5A. خوب است. بنابراین این اینجا be-- شما می خواهید به ما بگویید که چگونه شما رو که؟ اول، چگونه شما پنج را دریافت کنم؟ رسید از آنجا صفر، یک صفر، یک و پنج است. استاد: آیا همه درک چرا صفر، یک، صفر، یک و پنج است؟ تو که داری اینجا. شما باید چیزی در دو تا از اول است. در دو به دوم، شما یکی، که چهار. بنابراین شما اضافه چهار به علاوه یکی، شما باید پنج. همه خوب است؟ باشه. و پس از آن این و چرا؟ چه تعداد یک به مطابقت دارد؟ مخاطبان: 10. استاد: و چه این در پایه دو؟ مخاطبان: [نامفهوم] استاد: دقیقا. بنابراین این مقدار دوم در اینجا خواهد بود 0X5A. همه خوب در مورد چگونگی تبدیل؟ آن را بسیار ساده تر از شما فکر می کنم آن است. من فقط می خواهم مطمئن شوید شما می دانید راهنمایی های مفید و ترفندها برای چگونگی انجام این کار. رسید چرا می تواند شما فقط تقسیم آن را در وسط که می خواهم؟ درست مثل، OK، من فقط به رفتن در مورد این اولین بار [نامفهوم] مراقبت؟ استاد: از آنجا که این در واقع راه مقادیر هگزادسیمال نشان داده. 0X، که در واقع به معنی هیچ چیز دیگر از گفتن شما که یک عدد هگزادسیمال است. و این همیشه نشان دهنده چهار رقم اول. و این همیشه نشان دهنده چهار رقم آخر. و بنابراین این دو رقم فقط به بیت های مختلف مطابقت دارد. مخاطبان: بنابراین ما همیشه اعضای خواهد استاد: شما همیشه رفتن به هشت بیت مقدار است. رسید این است که فقط مانند یک چیز در اینجا و یا که یک چیز بیش از همه؟ استاد: این فقط یک چیزی که در کامپیوتر، بله. رسید OK. عالی. استاد: همچنین، بنابراین در این مثال ما از باینری تبدیل به اعشاری، و از دودویی به مبنای شانزده است. شما بچه ها می خواهید مطمئن شوید شما همچنین تمرین رفتن راه دیگری در اطراف. بنابراین اگر من به شما داد از 0xFF، شما می توانید قرعه کشی که در دودویی، درست است؟ شما تبدیل به F باینری، است که یکی، یک، یک، یکی، تبدیل F به باینری، که یک، یک، یک، یک است. بنابراین ما ممکن است شما بخواهید برای انجام راه دیگری در اطراف. بنابراین به باینری اعشاری، یا هگزادسیمال به باینری. بنابراین شما می خواهید به شوید که می دانید هر دو روش. ما احتمالا شما بخواهید یک ترکیبی از این دو. بله، شما سوالی دارید؟ من می توانم see-- شما خوب است؟ مخاطبان: آره. استاد: OK. من خوب برای پاک کردن این؟ عالی. خوب، پس پاسخ اینجا هستید اگر کسی کنجکاو بعد است و اشتباه گرفته شود. باشه. مخاطبان: آیا مهم است اگر ما را نامه های ما در پایتخت و یا کوچک؟ استاد: این کار، به دلیل در مبنای شانزده، توسط کنوانسیون، تمام شخصیت ها را بزرگ. بنابراین A تا F هستند رفتن به حروف بزرگ است. اگر شما یک حروف کوچک، من نمی دانم اگر ما لزوما علامت آن اشتباه است. اما از لحاظ تئوری، که از لحاظ فنی نیست چگونه شما قرار است به آن را دارند. به طوری که آنها باید از همه بزرگ باشد. آره، سوال خوب است. باشه. سوال دوم. این برنامه دوست داشتنی در اینجا در نظر بگیرید. من این سوال را بپرسید، من دوباره این. بنابراین، در مرحله اول، چه در داخل استاندارد io.h که مورد علاقه به برنامه؟ در مرحله دوم، چه از درجه اعتبار ساقط نشان در خط سه؟ و سوم، چه از بازگشت از صفر اصلی، به عنوان خط شش، به طور کلی نشان؟ اگر شما بچه ها می خواهید به آن ارسال پایین، از آنجایی که من برای برگشت به اسلاید بنابراین شما می توانید کد را ببینید. این یک نمونه از، مانند، شاید یک است درخواست سطح بالاتر که در آن ما از شما درخواست چه چیزهایی در یک برنامه باشد. همه خوبی برای من به رفتن به اسلاید. باشه خوبه. بنابراین من به شما بچه ها مثل شاید سه را دقیقه به این یکی سریع واقعی نگاه کنند. خوب، پس این یکی مثل نسبتا آسان است، مفهومی است. آیا کسی می خواهید به من بگویید چه برای اولین بار در داخل توسط هش از جمله فایل کتابخانه io.h استاندارد ما؟ چرا ما نیاز داریم که کتابخانه شامل برای این برنامه؟ آنچه در اینجا به آن نیاز داریم برای؟ آره؟ رسید این است که وقتی شما را که printf؟ استاد: دقیقا. بنابراین تابع () printf، هر زمان شما یک ورودی از کاربر و چاپ چیزی به صفحه نمایش، که ورودی استاندارد، کتابخانه خروجی. فکر می کنم از آن است که way-- ورودی، خروجی. آیا من یک خروجی داشته باشد؟ بله، من انجام دهد. بنابراین من می دانم که من همیشه به نیاز به کتابخانه i.o استاندارد. بنابراین تابع () printf تابع است که ما نیاز به دسترسی به و برچسب شامل کتابخانه i.o استاندارد. باشه. دوم، آن چه باطل دارد؟ ما باید از نوع int اصلی (خالی)، چه از درجه اعتبار ساقط اینجا منظور در اینجا در خط سه؟ آره، در پشت. مخاطبان: [نامفهوم] استاد: دقیقا. بنابراین به یاد داشته باشید، ما به دست آوردید شروع با pset ما که واقع شما می توانید خط فرمان مشخص استدلال که برنامه خود را، که شما تابع اصلی، را به عنوان شما، کاربر، آن تماس بگیرید. اگر ما از درجه اعتبار ساقط، این بدان معناست که شما فقط می تواند برنامه به طور مستقیم اجرا بدون هیچ آرگومان های خط فرمان. هر کس در روشن؟ باشه. و در آخر چرا ما زحمت انجام این چیزی که بازگشت به صفر در اینجا؟ چرا ما حتی یک اصلی است: int؟ چرا ما نمی توانیم فقط باید بی اعتبار اصلی از درجه اعتبار ساقط؟ آره؟ رسید به طوری که ما می توانیم مطمئن باشید که این برنامه است خروج موفقیت، به عنوان مخالف اگر شماره شد. و ما می دانیم که که نوع دیگری از خطا. استاد: بله، دقیقا. این فقط یک بسیار که با قراردادی که ما انجام دهید، است که فقط در پایان برنامه خود را، فقط مطمئن شوید که عملکرد اصلی خود را در حال اجرا است به درستی، ما همیشه می خواهیم به انجام بازگشت به صفر. حتی اگر ما ممکن است لزوما نمی بینید که چاپ هر نقطه. از آنجا که به عنوان برنامه نویسان، شما می دانید، اگر شما بسیاری از خطوط مختلف از کد و شما نمی دانید که در این اشتباه رفتن، و اگر خطا رخ می دهد که شما می خواهید مطمئن شوید که شما که خطا دریافت کنید. و به این ترتیب به طور معمول اگر چیزی می رود اشتباه ما بازگشت فقط یک مطمئن شوید ما می دانیم که در آن است. بنابراین اگر شما یک بازگشت ببینید صفر، که به طور معمول معنی برنامه شما می باشد اجرا شده است. خوب است؟ خنک. OK، برنامه دوم در اینجا. در نظر بگیرید که. و اگر شما بچه ها یک شناور، شما بچه ها احتمالا می تواند یک ایده خوب از چه من در مورد به شما می خواهیم کرد. بنابراین، هنگامی که این برنامه اجرا، به عنوان شما می توانید ببینید، من اعلام می کنم یک شناور در داخل تابع اصلی است. من نام آن را "پاسخ" و من تنظیم که برابر با یک تقسیم بر 10. من چاپ کردن، به یک محل اعشاری، که شناور. و سپس من صفر بازگشت. بنابراین، هنگامی که اجرای برنامه، فکر می کنم به حریص حال، این برنامه چاپ 0.0. همانطور که همه ما می دانیم، امیدوارم همه ما می دانید، یکی با 10 تقسیم نیست 0.00، آن 0.1. اما توضیح دهد که چرا این برنامه فکر می کند که 1 تقسیم بر 10 چاپ تا 0.1 دیگر از 0.1؟ من به شما بچه شاید مثل 30 را ثانیه به سرعت در مورد فقط فکر می کنم که و من به برنامه بروید. باشه. هر کسی مایل به آن ضربه را؟ در سه جمله یا کمتر، چون به طور معمول ما رفتن به محدود کردن پاسخ به سه جمله یا کمتر بنابراین شما نه تنها گرداندن چیزهای تصادفی بر روی مسابقه خود را. آره، یک شات. مخاطبان: بنابراین من فکر می کنم این وجود دارد چیزی به نام، مانند، [نامفهوم] بنابراین ممکن است وجود داشته باشد، به عنوان مثال، ممکن است وجود دارد، مانند، 0.09، که در آن شما اولین چاپ رقمی، آن را به 0.0 خواهد بود؟ استاد: بستن، نه کاملا. Christabell؟ مخاطبان: شما در حال تقسیم و 10، و آنها هر دو عدد صحیح است. و به این ترتیب راه است که آن را برای ذخیره آن را به عنوان یک عدد صحیح است. و به این ترتیب نزدیک ترین عدد صحیح شود 0.0. و به طوری که 0.1 است. استاد: بله، واقعا خوب است. که جواب درست است. پس این است که بسیار گیج کننده مفهوم برای بسیاری از بچه ها. و من واقعا می خواهید مطمئن شوید که این است که در سر همه تقویت شده است. بنابراین آنچه که ما پاسخ شناور عدم دقت نقطه، که در آن به همین دلیل بسیاری از برنامه های خود را در حریص در ابتدا کار نمی کند چرا بود شما را فراموش کرده متغیر خود را به بازیگران. پس چه Christabell گفت کاملا صحیح بود. شناور ذاتا مبهم است. از آنجا که در یک کامپیوتر، راست، ما مقدار محدودی از بیت حافظه ما می توانیم استفاده برای نمایش اعداد. بنابراین، برای مثال، این CS50 ID is-- من فکر می کنم یک کامپیوتر 64 بیتی. شناور تنها می تواند نشان با یک مقدار محدود از کسانی که بیت. و به همین ترتیب 0.1 با صفر بی نهایت، که بود 0.1 است، درست است؟ اما ما در واقع نمی تواند ذخیره این تعداد در کامپیوتر ما است. ما فقط لازم نیست حافظه کافی برای انجام این کار. و به این ترتیب نزدیکترین تقریب آنچه که در حافظه ذخیره می شود است که در واقع چیزی شبیه به 0.000 چیزی، چیزی، چیزی، چیزی. که، هنگامی که شما کوتاه آن، دور پایین به 0.0. و به این ترتیب این مثال تنها یکی که نشان می دهد بسیاری از مسائل ما هر زمان که ما هستیم تلاش به اشتباه انجام محاسبات ریاضی بدون ریخته گری به عنوان یک عدد صحیح است. پس فقط با احتیاط از این اتفاق می افتد است. در آزمونها، اگر ما به شما یک را بلوک کد و آن را مانند، چه در خروجی چاپ میکند در پایان؟ و اگر آن را به برخی از ارزش های تصادفی شما بچه ها باید بدانند که چرا این اتفاق می افتد. آره؟ مخاطبان: کوتاه است خلاص شدن از شر همه چیز بعد از یک نقطه خاص؟ [نامفهوم] استاد: بله، پس در واقع این یک مثال واقعا بد است، چون در واقع هر 0.100 به 0.1 کوتاه است. اما اگر شما به اجرا it-- من نمی به یاد داشته باشید، چرا که در سال گذشته آنها آن را در یک برنامه متفاوت بود. آنها را از آن در چیزی به نام فرار CS50 لوازم خانگی، که متفاوت از ID است. که یک سیستم 32 بیتی بود، من فکر می کنم. و به این ترتیب بود شماره های مختلف وجود دارد. اما در اصل، فقط می دانم که کل مفهوم برشی و چگونه آن را فقط کاهش چیز خاموش است. و بنابراین اگر آن را rounds-- مخاطبان: بدون گرد کردن. استاد: دقیقا. آره. خنک. سلام، در پشت. ما فقط قصد داریم بیش از برخی از سوالات بررسی مسابقه. خیلی خوب. بنابراین برنامه های مختلف در اینجا در نظر بگیرید. من قصد دارم به شما بچه ها را چند دقیقه به بیش از این به عنوان خوانده شده. این چیزی است که برای یک بسیار است اخیرا که من فکر می کنم بسیاری از شما منفجر ذهن بچه ها است. اما ما قصد داریم به بحث از طریق این دوباره فقط مطمئن شوید که شما به طور کامل درک آن است. باشه. باشه. هر کسی نیاز به زمان بیشتری برای از طریق این کد به عنوان خوانده شده؟ باشه. پس از آن به نظر من که در این برنامه من ایجاد دو رشته با استفاده از از GetString. یکی نام و یکی به نام T. و اگر آنها برابر است برابر است با یکدیگر باید آن را چاپ "شما نوع همان چیزی. " اما elsewise، آن را چاپ، "شما تایپ چیزهای مختلف، "درست است؟ به نظر می رسد بسیار، بسیار ساده است. اما، با این حال، اگر من در واقع سعی کنید به نوشتن این برنامه، به نظر می رسد که حتی وقتی که من ورودی رشته یکسان، آن را هنوز هم چاپ، "شما تایپ چیزهای مختلف! " آیا کسی می خواهید را به یک شات در این برنامه همیشه به همین دلیل پاسخ می دهد که ورودی متفاوت است، حتی وقتی که کلمات خود یکسان هستند؟ بنابراین اگر من به input-- دیوید عشق به استفاده از یک مثال مانند مادر، درست است؟ حروف کوچک M-O-M برای S، T برابر کوچک M-O-M. اگر من این طریق فرار که کد، چرا که آن نسخه قابل چاپ کردن "شما چیزهای مختلف تایپ؟" آیا کسی بیشتری نیاز زمان در مورد این فکر می کنم؟ OK، من فکر می کنم ما خوب است. آره؟ رسید OK، پس از آن چیزی در مورد که در آن آن را در حافظه ذخیره می شود، درست است؟ استاد: بله. رسید که در آن آن را مانند، اگر این رشته ها است که در حافظه ذخیره می شود spot-- من اختراع this-- صفر است. استاد: البته. رسید و رشته T است که در نقطه حافظه ذخیره می شود، مانند، 167، و پس از آن صفر برابر 167 است. استاد: دقیقا. خوب، پس به یاد داشته باشید این باور نکردنی وحی ما به شما بچه ها توضیح داد هفته گذشته، که رشته واقعا نمی وجود دارد؟ هنگامی که ما ایجاد چیزی به نام رشته ما، در واقع، ایجاد چیزی به نام ستاره کاراکتر. که همه آن است که یک اشاره گر به است یک رشته یا به آرایه ای از کاراکتر. و بنابراین در این مثال، اگر من به ورودی M-O-M راه بودند که کامپیوتر من ذخیره آن است در داخل حافظه بک اسلش صفر، درست است؟ این چهار شخصیت ها، کاراکتر، می شود جایی ذخیره می شود. و سپس این چهار شخصیت ها، بک اسلش صفر، به جای دیگری ذخیره می شود، درست است؟ من هیچ نظری ندارم که در آن آدرس هستند، آنها جایی در کامپیوتر من است. اما من دقیقا نمی دانم که در آن هستند. وقتی که من ایجاد یک رشته s، تمام که واقعا یک اشاره گر به است شروع این رشته است. و هنگامی که من ایجاد این مقدار t، که یک اشاره گر به اینجا است. و تا زمانی که شما در حال تلاش به یکسان و بررسی برای دیدن اگر بازدید کنندگان برابر است برابر است با T، کامپیوتر است که واقعا فقط به بازگشت شما آدرس این متر و آدرس آن متر است. و چون آنها دو هستید قطعات جدا از داده که در دو مختلف ذخیره می شود آدرس در کامپیوتر شما، کامپیوتر شما را به هرگز به عنوان همان تشخیص آنها. آیا کسی می خواهید به یک شات در آنچه که ما را مجبور به انجام اگر ما می خواستیم برای اصلاح این و که یک برنامه در حال اجرا درست بجای؟ که برای چند ثانیه فکر می کنم. چه ما نیاز به تغییر را به این عملکرد برنامه راه ما می خواهیم آن را به تابع؟ آره، می خواهم به یک زخم زدن در آن است؟ مخاطبان: آیا ما می توانیم برای ارجاع دوباره به را امتحان کنید اشاره گر و از طریق آرایه را بررسی کنید؟ استاد: این یکی از راه برای انجام آن است. بنابراین، آنچه نام خود را دوباره؟ متاسفم، من به یاد. زی: زی. استاد: بله، پس چه زی پیشنهاد مطلقا کار می کنند. درست؟ ما می تواند ارجاع اشاره گر و در واقع رفتن و دسترسی داده فیزیکی در داخل از اینجا. و ما فقط می توانید مقایسه کل صفحه نمایش. می توان گفت، OK، اشاره گر، به من چه در داخل است. آن را به یک متر بازگشت. و من می گویند، اشاره گر، به من چه در داخل است. بازگشت یک متر. آیا آن بازی؟ بله. سپس ما در حرکت می کند. ما نگه داشتن چک کردن کل دو رشته تمام راه را تا تا پایان و ببینید که اگر آن برابر هستند، اگر تمام مقادیر برابر باشند. و اگر تمام ارزش برابر هستند، پس از آن ما می دانیم که رشته درست است. مسلما، این که چگونه ما آن را انجام؟ آیا کسی در هر یک از این اشتباه گرفته؟ کل مفهوم چگونه رشته واقعا فقط اشاره گر، و چگونه آنها واقعا نمی وجود دارد؟ و چرا ما با خطاهای مانند راه ما آن را دریافت؟ از آنجا که من به شما تضمین بچه ها، اشاره گر و تخصیص رشته و حافظه در حال رفتن به آمده است. آره؟ مخاطبان: [نامفهوم] ارجاع آن، شما فقط با قرار دادن یک ستاره [نامفهوم] استاد: درست است. بنابراین به وسیله اشاره گر derererence برای رفتن به آن آدرس از اشاره گر و به دست آوردن داده ها، ارزش وجود دارد. و راه برای انجام این اشاره گر ستاره است. آیا اشتباه نیست. مخاطبان: [نامفهوم]. استاد: آره. مخاطبان: بنابراین شما می توانید فقط ارسال اگر ستاره ها برابر برابر ستاره T. استاد: خب، نه. شماره مخاطبان: این خوب نیست به اندازه کافی، درست است؟ استاد: این طور نیست، چون تو تنها چک کردن حرف اول. شما احتمالا به نیاز به نوعی از یک حلقه است که تکرار از طریق هر شخصیت در هر دو رشته. آره. بنابراین اگر شما می خواستم فقط چک کنید اگر آنها را با همان چیزی که آغاز شده، شما می توانید در صورت، ستاره انجام به ستاره T برابر است. پس از آن شما می دانید که حداقل آنها آغاز شده با همان شخصیت. آره؟ مخاطبان: بنابراین راه شما خواهد بود که مثل یک حلقه for و یا اشاره گر تعبیه شده؟ استاد: آره. تقریبا درست یک حلقه for. به یاد داشته باشید، دیوید در کلاس ذکر قند نحوی رایگان است؟ و او این بود بسیار چیزی گیج کننده از ستاره T به علاوه یک، که در آن به ادغام از طریق و آن حرکت اشاره گر؟ راه ساده تر از انجام این است که فقط تن من. پس از آن فقط از یک آرایه است. راه که شما می توانید یک برای دارند حلقه که از صفر تا من فرار، که در آن من طول است رشته، شما می توانید فقط ارسال که به جای انجام طیف اشاره گر، چیزی مرجع. بنابراین این همه چیز دقیقا معادل در کامپیوتر شما. شما بچه ها احتمالا نمی خواهد باید بدانید که، اما آن را خوب به فقط نوع اند در تماس ذهن خود را. فقط می دانم که کامپیوتر به رسمیت می شناسد بلوک های مختلف کد به عنوان همان چیزی است. از آنجا که این فقط برای کاربران به مراتب بیشتر است دوستانه برای ما آن را در حال حاضر می خواهم آن را یک آرایه. آن را فقط آسان تر است. مخاطبان: بنابراین استفاده از strlen به دوست، get-- استاد: آره. رسید OK. استاد: شما می توانید strlen استفاده کنید و یا، اگر شما لازم نیست strlen شما فقط می توانید انجام این کار تا تا زمانی که شما بک اسلش صفر برای هر دو ضربه. هم کار می کنند. آره. رسید پس از آن برای ارجاع دوباره به این هر شخصیت واحد اگر ما در واقع نوشتن این کد، ما می تواند فقط براکت تی من با ستاره در مقابل آن را دوست دارم؟ استاد: بله، برابر است با برابر بازدید کنندگان براکت من، و سپس حفظ حرکت من پایین تا زمانی که شما ضربه به پایان است. آره، این چیزی است که شما را انجام دهد. و من در واقع یک بعدی دارند مثال از زمانی که ما در واقع ارسال strlen پس شما بچه ها نوع خواهد از این که به بازی در اطراف با آن را کمی. بنابراین همه روشن بر روی حافظه فقط، رشته ها، اشاره گرها، آدرس کیفیت؟ برخی از مفاهیم سطح بالاتر که شما برای مطمئن نیاز به در مسابقه مطمئن شوید فردا. خیلی خوب. خوب است. بله. خوب، پس یک چیز است که ما نیز بپرسید شما، به عنوان ما هر سال این کار را در یک مسابقه، است، فرض کنید که شما را فراموش کرده ام (که ما به نظر می رسد فراموش کرده ام به انجام سالانه) که در آن فایل هدر strlen اعلام شده است. و بنابراین ما باید به بازنویسی آن را خودمان. در اینجا یک لیست از دستورالعمل که ما می توانیم به شما ارائه بچه ها که در آن شما را وادار به فرض کنیم که S در رشته را نمی خواهد تهی باشد. شما می توانید فرض کنیم که بازدید کنندگان خواهد بود خاتمه با یک بک اسلش صفر است. بنابراین شما می دانید این چیزی است که آن را به پایان با. و، برای مثال، که طول سلام خواهد بود پنج. بنابراین شما می توانید که سلام فرض خواهد بود پنج، H-E-L-L-O. شما لازم نیست که فرض کنیم که پشت صفر حساب برای طول. این چیزی که در اینجا آخرین، نه در مورد سرریز عدد صحیح نگران باشید. آیا کسی به یاد داشته باشید سرریز عدد صحیح است چه؟ مخاطبان: فراتر می رود طول [نامفهوم]. استاد: بله، می تواند به شما توضیح یک بیت، به چه معنا است؟ مخاطبان: بنابراین، من حدس می زنم آن را به عقب می رود به عنوان مثال کوتاه کردن پیش از آن. اما اگر شما فقط تعداد بسیاری که فراتر از تعداد بیت رفتن که شما در واقع می تواند به آن اختصاص دهید که آن را فقط نوعی از قطع. استاد: آره، بنابراین در نمونه کامپیوتر، چگونه بسیاری از بیت داریم؟ مخاطبان: 32؟ استاد: بله، 32، درست است. و به طوری که، چه، چهار میلیارد، دو میلیارد؟ چهار میلیارد، تا چهار میلیارد اعداد صحیح مثبت، درست است؟ دو میلیارد منفی، دو میلیارد مثبت، بستگی دارد که چگونه می خواهید به انجام آن. و بنابراین اساسا ما می توانیم اعداد صحیح به اندازه کافی که می تواند بالا برود به دو به 31 منهای 1، درست است؟ از آنجا که هنگامی که ما به دو به 32، ما نمی که مقدار حافظه در کامپیوتر ما است. و به این ترتیب، به لحاظ نظری، من می تواند با تعداد آیند تا است که، مانند، دو به 46. این تعداد زیادی الاغ است، اما از لحاظ نظری شما می توانید. سرریز عدد صحیح و بنابراین است اگر شما سعی کنید ایجاد یک عدد صحیح است که فراتر از آنچه می رود کامپیوتر شما قادر به ذخیره سازی است. و به این ترتیب شما بچه ها برای این مثال لازم نیست در مورد ما به شما دادن یک غول نگران رشته است که دو کاراکتر به 32 طولانی است. خواهد بود که واقعا. خوب، پس من فقط رفتن به شما بچه ساختار پایه این. شما در حال رفتن برای ایجاد یک تابع به نام INT strlen که در آن یک پاس در، یک ستاره کاراکتر و یا رشته، اشاره گر به رشته به نام. همه حق است، همه را کپی کنید که پایین. خنک. Oops-- راه دیگر. پس این است که به نوعی مانند یک قطعه سخت تر از مشکل، بنابراین من به شما بچه شاید پنج به شش دقیقه به نوع فکر بکر وناگهانی و ارسال این تابع است. مخاطبان: ما نمی حساب کاربری برای [نامفهوم]، ما مجبور به استفاده از عدد صحیح؟ استاد: نه، شما نمی کنند. من به شما بچه تذکر بدهد. یک حلقه در حالی که ممکن است بسیار مفید است. آره. در اینجا آب نبات. آب نبات نیز در دسترس خواهد برای مسابقه، من فکر می کنم. پس شما بچه ها تمام خواهد شد شکر تا فردا. می توانید I-- شما آن را کردم. رسید OK. استاد: آره. 30 ثانیه بیشتر یا بیشتر. همه حق است، اگر شما انجام می شود، هیچ نگرانی. ما از طریق این با هم حرکت می کند. باشه. بنابراین من قصد دارم فقط به طرح ساختار اولیه را برای این تابع در اینجا. INT strlen. اول، آیا کسی می خواهید به من چه که int دلالت؟ ما باید در این تابع است. مخاطبان: Strlen [نامفهوم]. استاد: دقیقا. بنابراین هر آنچه در اینجا اتفاق می افتد، ما نیاز به بازگشت یک عدد صحیح. و همانطور که در مشخص تنظیمات، ما می خواهیم به return-- برو برای آن بچه ها، فقط رفتن ادامه دهید. همه چیز خوبه. خوردن آن همه، بنابراین من لازم نیست به آن را به عقب، در واقع. اعضای هیات فقط معنی است که شما هستید رفتن به بازگشت یک عدد صحیح. این کاراکتر ستاره ها چیست؟ معنی آن چیست؟ رسید مانند، آنچه که در ورودی. استاد: دقیقا. و آنچه است که تقریبا همان ستاره کاراکتر؟ مخاطبان: رشته؟ استاد: دقیقا. بنابراین همه ما در حال انجام است به این یک اشاره گر به یک رشته است. باشه. خنک. همچنین، فراموش نکنید، اگر ما فراموش که به شما این براکت را، فراموش نکنید که برای خودتان آنها را ارسال. از آنجا که از لحاظ نظری، کد خود را نادرست اگر شما فراموش نکنید که به آنها ارسال. فقط همیشه توجه. مانند، چیزهای کوچک که شما متوجه نیست زمانی که شما برنامه نویسی بر روی لپ تاپ خود را، چون لپ تاپ خود را آن را برای شما؟ فراموش نکنید زمانی که نه شما در حال با دست نوشتن. آره؟ رسید اما چگونه نادرست؟ دوست دارم، ما در کل مشکل اشتباه؟ استاد: نه، نه. نگران نباشید. این در واقع از لحاظ نظری ممکن برای شما برای گرفتن امتیاز کامل به یک سوال حتی اگر کد خود را هرگز در زندگی واقعی را اجرا کنید. من پیشنهاد می کنم شما سعی نکنید به که اتفاق می افتد. به عنوان مثال، اگر همه چیز مانند که در اینجا مناسب است، اما شما یک روده بزرگ و یا یک براکت فراموش کرده ام، کد خود را در واقع اجرا نمی شوند. اما ممکن است ما مهربان است. آره؟ مخاطبان: آیا شما را به اظهار نظر در دست خط ما؟ استاد: نه، نه، نه نگرانی در مورد آن. بدون نظر. سبک باید خوب باشد. دوست دارم، smush نیست همه چیز را در یک خط. ما خوشحال خواهد شد با شما اگر شما انجام دهد. آیا کسی می خواهید به من خط اول به من بدهید؟ نکته، آن را بسیار آسان است. آره؟ مخاطبان: متوسط، N برابر صفر است. فقط راه اندازی ضد. استاد: بنابراین ما می خواهیم به برخی از مرتب کردن بر اساس یک شمارنده، درست است؟ من فقط رفتن به آن نام "تعداد" به خاطر خوانایی. ما چه می خواهیم به آن مجموعه برابر با؟ مخاطبان: صفر. استاد: بله. نقطه و ویرگول. آن را نیز سمی کالن طراحی بسیار عجیب و غریب. فقط انجام آن را تمرین کنید. بنابراین ما می خواهیم به اولین دارند یک شمارنده از نوع int. زیرا ما می خواهیم به تعداد بالا چگونه بسیاری از شخصیت های یا حروف در این رشته، درست است؟ گام بسیار آسان است. OK، پیچیده شاید کمی بیشتر در حال حاضر، چگونه می خواهیم به انجام این کار؟ آیا کسی می خواهید به من خط از کد را که ممکن است قادر به کمک به حلقه از طریق هر چه باشد؟ آره، روح شجاع در پشت؟ مخاطبان: خوب، پس در حالی که نقطه ستاره ها، آره، ستاره ها، است برابر با صفر نیست، پس انجام کاری؟ استاد: این واقعا، واقعا نزدیک است. واقعا نزدیک است. بنابراین من قصد دارم به آدرس دو چیز با آن است. اول از همه، آن را دقیقا صفر نیست. چه در آن است؟ این نابودگر تهی می کند، که بک اسلش صفر است. به طوری که آنها در متفاوت است شرایط چگونه آنها ذخیره می شود. پس شما واقعا نزدیک است. و در مرحله دوم، ما نمی خواهیم به فقط حرکت اشاره گر. ما به واقع می خواهم دسترسی به مقادیر، درست است؟ و بنابراین ما چگونه انجام این کار؟ بسیار آسان. هنوز در مورد اشاره گر فکر نمی کنم، در مورد خاطرات فکر نمی کنم. برو به هفته دو این دوره است. مخاطبان: [نامفهوم]. استاد: همانطور که از، به یاد داشته باشید؟ رشته ها چه هستند؟ چگونه آنها را در حافظه ذخیره می شود؟ مخاطبان: آنها مطرح می شود. استاد: برانگیخته خواهند شد. پس چگونه دسترسی ما هر یک از شخصیت در داخل؟ مخاطبان: [نامفهوم]. استاد: دقیقا. بنابراین while-- چه می رود در داخل که اینجا هستید؟ S از - مخاطبان: I. استاد: آه، من وجود ندارد، آیا آن؟ مخاطبان: اوه، تعداد؟ استاد: ما فقط می توانید استفاده از تعداد، نه می تواند ما؟ مخاطبان: با عرض پوزش، من آن را به نام من. استاد: آره، آن را همه خوب است. ما باید یک متغیر تا اینجا که قبلا از ما ضد اعلام کرد. پس چرا ما فقط استفاده از آن به حلقه در حالی که حرکت می کند؟ فرقی میکنه؟ بنابراین در حالی که بازدید کنندگان از count-- آیا کسی می خواهید به من چه پس در اینجا اتفاق می افتد؟ رسید این برابر نیست. استاد: برابر نیست، درست است؟ این انفجار برابر، علامت تعجب برابر، هر آنچه که شما می خواهید بچه ها را به پاسخ آن equal-- نیست مخاطبان: [نامفهوم]. استاد: آره. به یاد داشته باشید تنها نقل قول برای یک کاراکتر، به نقل از دو برای یک رشته می باشد. در هنگام استفاده از آنها مراقب باشید. تا زمانی که ما به دنبال از طریق آرایه، آخرین شخصیت، ما می دانیم که ما نمی خواهیم آن را به بک اسلش صفر. بنابراین در حالی که. ما در پایان از رشته نیست. ما چه می خواهیم به انجام در داخل؟ مخاطبان: ما می خواهیم برای اضافه کردن به ضد بنابراین آن را می شمارد به علاوه به علاوه؟ استاد: دقیقا. بنابراین در اینجا ما قصد داریم برای انجام تعداد دفعات مشاهده، شمارش به علاوه به علاوه. از دست دادن یک خط بیشتر است. ما تقریبا وجود دارد. آنچه که ما فراموش می کاری انجام دهید؟ مخاطبان: بازگشت صفر؟ استاد: شما می خواهید به بازگشت به صفر؟ مخاطبان: نه، بازگشت به strlen. صبر كن. استاد: است که در ذخیره می شود؟ مخاطبان: تعداد. شمردن. استاد: دقیقا. بنابراین در اینجا ما قصد داریم به بازگشت تعداد. چون چیزی که ما هستیم در اینجا انجام ultimately-- ما یک متغیر شمارنده که رفتن را از طریق رشته ما را افزایش. ما قصد داریم برای حفظ رفتن، حفظ رفتن، در اطراف و در سراسر در این حلقه. و در حالی که ما در پایان این نیست رشته است، که نابودگر تهی. و هر زمان که ما از طریق رفتن آن، ما در حال اضافه کردن به ما ضد. و ما قصد داریم بیشتر همراه در این آرایه است. و در پایان، زمانی که ما ضربه نابودگر تهی، ما می دانیم، آه، ما می توانیم شکستن، بازگشت تعداد. ما strlen ما است. آیا همه چگونه این اجرا نشد؟ در حالی که من می دانم loops-- ما نه انجام بیش از حد با آنها، اما آنها معمولا هستید بسیار، بسیار مفید است اگر شما نمی دانم چه شما در حال توقف شرایط لزوما به. سوال؟ مخاطبان: آیا ما می توانیم ارسال های پوچ به شرط در حالی که؟ استاد: در حالی که؟ آره، بنابراین در این مشکل من به شما بود بچه ها فرض کنیم که بازدید کنندگان را نمی خواهد تهی. از آنجا که به یاد داشته باشید، از لحاظ تئوری، اگر من به شما داد یک اشاره گر که بیش از حد بزرگ حافظه بود، آن را به شما تهی را، درست است؟ این چیزی است که عامل سیستم را انجام دهید. بنابراین اگر من به شما بگویم نیست که فرض کنیم بازدید کنندگان می شود تهی، شما نیاز به بررسی. بنابراین تا اینجا، شما را انجام دهید، اگر S برابر برابر NULL، یک بازگشت. یه چیزی شبیه اون. مخاطبان: [نامفهوم] صفر است. استاد: خوب، من می گویم شما همین دلیل ما نمی تواند انجام دهد. از آنجا که به یاد داشته باشید در حافظه، راست، در اینجا. ما در اینجا بروید. شما بلوک های غول کردم حافظه همه با شبکه های که فروشگاه مقادیر مختلف، درست است؟ و به این ترتیب همه یک رشته is-- برای به عنوان مثال، اگر ما را به ورودی هستند سلام، این امر می تواند H-E-L-L-O بک اسلش صفر، درست است؟ و پس از آن که می داند، مانند تصادفی چیزهایی که در اینجا پس از آن می باشد. ما در واقع نمی دانند چه چیزی وجود دارد. و بنابراین اگر شما برای انجام به جای بک اسلش صفر، تهی، آن را ممکن است تهی. دلیل آن را فقط ممکن است به معنی برخی از چیزهایی که به صورت تصادفی دیگر که در رشته شما تعلق ندارد. و به این ترتیب راه است که ما همیشه می دانیم که به پایان می رسد رشته است با یک بک اسلش صفر است. و به این ترتیب است که همیشه ما چگونه بررسی کنید تا ببینید در پایان یک رشته است. تهی، که بدان معنی است اگر شما یک اشاره گر غیر موجود، اول از همه، و یا اگر حافظه خود را فقط آنقدر بزرگ است که شما نمی توانید آن بازگشت، سپس آن را می خواهم تهی باشد. بنابراین، هنگامی که افتراق بسیار مراقب باشید تفاوت بین مقدار null و بک اسلش صفر. آره. همه OK با این؟ باشه. بنابراین من به حال شما بچه ها نوشتن strlen. عملی ما همچنین می تواند از شما درخواست ارسال یک به من، به یاد داشته باشید که "Atwoa" و یا هر آنچه که شما بچه ها می خواهید به آن پاسخ؟ این تابع در ویژنر و سزار، که تبدیل یک مقدار ASCII به یک عدد صحیح؟ که آن نیز است تا در آزمونها گذشته آمده از توابع ما از شما خواسته ام به نوشتن. تقریبا هر تابع که شما استفاده می شود و بسیار آسان برای خودتان ارسال، سنسور دوست پایین تر است، بالا، به پایین تر، به بالا است. توابع است که یک تبدیل رشته از حروف کوچک به بزرگ. همه ما می دانیم چگونه به انجام این، درست است؟ آن را بسیار آسان است. فقط می خواهم به مطمئن شوید که شما can-- آن روند فکر همان است. شما فقط از طریق تکرار و شما همه چیز را روشن کنید. شما هم به حساب و یا زمانی که شما همه چیز به نوبه متفاوت است. من من suggest-- نمی دانم اگر ما قصد داریم به شما بخواهید به حفظ آنچه سرمایه و یا Z سرمایه، و یا حروف کوچک و یا کوچک Z در ASCII هستند، اما من پیشنهاد شاید نوشتن است که در مورد ما انجام میدهیم. فقط تا شما بچه ها یک مرجع است. مانند حروف بزرگ A، چه، 197 است. و پس از آن با حروف کوچک است مانند 50 چیزی. 65، آره، وجود دارد که شما بروید. پس فقط می دانم که بسیار تفاوت بین آنها 32 است. این خیلی مهم است. آره. من خوب در این؟ باشه. مخاطبان: ما می تواند از لحاظ نظری ارسال برخی از این پایین و همچنین در little-- ما استاد: از نظر تئوری شما فقط می تواند کپی تابع است. درست است. مخاطبان: نه [نامفهوم]. استاد: شما بچه ها یک ورق. شما بچه ها یک ورق توجه داشته باشید. شما می توانید آن را تایپ کنید. شما می توانید آن را ارسال. شما می توانید هر آنچه که شما با آن می خواهید. آره. بنابراین به لحاظ نظری، اگر شما می خواهید، برای رفتن. مخاطبان: [نامفهوم] اما ما واقعا نمی لزوما نیاز به یاد داشته باشید ارزش، ما فقط می توانید استفاده از بالا و یا به به عملکرد پایین تر، درست است؟ استاد: آره. اما اگر ما از شما یک سوال داد که می گوید ارسال به بالا، سپس شما نیاز به آن ارسال. پس شما بچه ها می توانیم فرض کنیم که شما بچه ها دسترسی به همه توابع، اما اگر شما می خواهید به استفاده بالا و یا به پایین تر، چه چیزی شما را نیز باید انجام دهید؟ مخاطبان: [نامفهوم] استفاده از CS50 [نامفهوم] استاد: آیا CS50.H؟ مراقب باشید وجود دارد. بنابراین به بالا، به پایین تر، بالا، پایین تر است، توابع که شامل دستکاری رشته هستند همه در هم اسکی و یا در داخل کتابخانه ریاضی و یا در کتابخانه رشته. بنابراین اگر شما بچه استفاده از آن توابع، مراقب باشید به خاطر داشته باشید شامل است که هدر. بنابراین شاید هم چیزی است که شما می خواهید در ورق خود را شامل، چه هدر است؟ کتابخانه چیست شما با استفاده از شده است؟ چه توابع در داخل این کتابخانه؟ آن مهم است. آره؟ رسید می ما فقط پلیس و انجام برچسب از طریق کاملا هر حرف ما همیشه این مانند در همه سوالات دیده می شود؟ استاد: شما می توانید. من نمی دانم چگونه شاد ما در حال رفتن به کلاس که مسابقه که هر قطعه از کد دو برابر زمانی که به آن نیاز دارد باشد. من نمی دانم، ما ممکن است را خاموش یک نقطه برای سبک. به لحاظ نظری خود را اما کد حق خواهد بود. شما بچه ها می تواند پلیس و فقط شامل همه چیز است. که خوب است، آره. مخاطبان: [نامفهوم]. استاد: آره. من پیشنهاد انجام نیست که هر چند. آره. رسید داغ. استاد: پرسش خوبی است. مخاطبان: بنابراین، بدترین حالت. استاد: بدترین حالت. اگر شما کاملا فراموش کرده ام، شما می توانید انجام دهید. آره. بله، کد سمت راست وجود دارد. من استفاده می شود به جای N تعداد اما، شما مطمئن شوید، هر آنچه که قایق خود را شناور. مخاطبان: صبر کنید، بنابراین ما نمی خواهد که هشتگ شامل زیرا ما با شروع در نوع int؟ استاد: بله، من فقط به عهده گرفت که ما خواسته شد تا تابع. اگر شما می خواهید به امن، شما احتمالا می تواند آن را قرار داده است. اما من فقط به زحمت نیست، آره. من حتی نمی دانم که اگر شما نیاز به هر گونه کتابخانه برای این. از آنجا که شما واقعا نمی چاپ هر چیزی و یا هر چیز، درست است؟ آره، من می دانم که اگر نه شما نیاز به یک کتابخانه است. باشه. این هم یک کمی بیشتر در امتداد خطوط دستکاری حافظه است. این نوع از کمی مشکل است. این فکر کنید. شما باید یک تابع به نام تابع. من می توانستم آن را به نام هر چیز دیگری، اما من را انتخاب کنید تا نام آن را تابع. من آن را بالا اصلی من است. به یاد داشته باشید، شما می خواهید به یک تابع پس اصلی خود را، شما می خواهید مطمئن شوید که شما شامل نمونه اولیه از بالا. اما در این مورد پس از آن کوتاه بود که من احساس کردم که من فقط می تواند شامل آن بالای اصلی. من نیاز به نمونه اولیه، به دلیل آن را در حال حاضر بالا نوشته شده است. به طوری که تمام من انجام در تابع اصلی من هستم ایجاد عدد صحیح x برابر با 10. من خواستار تابع تابع من، و سپس چاپ کردن چیزی. و پس از آن است که در واقع چه تابع انجام شده است. شما بچه ها می خواهید تا از طریق این فکر می کنم. از آنجا که آن کمی مشکل است. این بسیار، بسیار مشکل است، در واقع. از طریق این فکر می کنم برنامه می تواند خروجی. من به شما بچه دو دقیقه است. بحث خوب است؟ مخاطبان: آره. استاد: آره. همه حق است، پس این است که روی حیله و تزویر به یک دلیل. و این است که چرا من می خواستم این موضوع را به همه است. آیا کسی می خواهید را به من بدهد یک پیشنهاد، تلاش؟ چه این را چاپ کنید؟ در مجموع خوب است اگر شما اشتباه می کنید. آره؟ مخاطبان: من فکر می کنم آن را 100 و پس از آن 10 در دو خط جداگانه. استاد: و 10؟ آیا کسی حدس دیگر؟ آره؟ رسید شاید فقط به دلیل 10 تابع است هر چیزی از بازگشت نیست. استاد: خوب، پس ما دارند حدس شماره یک این است که تعداد حدس می زنم دو فقط رفتن برای چاپ کردن 10. آیا کسی حدس دیگر؟ باشه. بنابراین اجازه دهید از طریق این راه رفتن، درست است؟ هر زمان که شما یک قطعه از کد را دریافت کنید، نه تنها در آن نگاه کنید و مانند، آه، که چیزهای بسیار است! من خیلی گیج شدم! مانند، خود را آرام کند. فقط می دانم که شما می توانید فقط از طریق خط کد نگاه کنید به خط. که همه آن است. این مثل خواندن یک کتاب است. بنابراین با هر تابع، ما همیشه در اصلی شروع می شود. بنابراین ما قصد داریم به شروع در اعتبار اصلی اعضای هیات، حتی برنامه در حال حاضر اجرا کردن، درست است؟ شروع در در بی اعتبار اصلی. نوع int x برابر با 10. بنابراین من قصد دارم برای پاک کردن این. من قصد دارم به رسم حافظه فقط شما بچه ها نوع می توانید ببینید چه اتفاقی می افتد. به یاد داشته باشید در اینجا ما باید پشته ما؟ تا اینجا ما باید ما پشته جایی تا اینجا. پشته رشد می کند تا، درست است؟ و در داخل پشته، شما باید برق کار و همچنین همه متغیرهای محلی برق. بنابراین در اینجا، نوع int x برابر 10. در تابع اصلی ما در حال ایجاد یک متغیر به نام X. ما در حال تنظیم است که به 10 برابر است. در اینجا برخی از X به شما کردم، و شما تنظیم که برابر با 10، راست، در اصلی. همه خوب است؟ عملکرد. بنابراین در حال حاضر، در اصلی ما تابع، ما خواستار عملکرد ما در بالا نوشته شده است. بنابراین ما در حال در حال حاضر تابع دوم را وارد کنید. ما قصد داریم به ایجاد یکی دیگر متغیر از نوع int x برابر 100. آنچه اتفاق می افتد در اینجا در پشته؟ زمانی که شما یک چه اتفاقی می افتد تابع است که باعث ایجاد متغیرهای جدید؟ چه در پشته در اینجا اتفاق می افتد؟ مخاطبان: [نامفهوم] شمع در بالای؟ استاد: آره. پس از آن در واقع ایجاد یک کپی. و آن هم از نوع شمع در بالای صفحه. فکر می کنم از stack-- یک پشته کتاب، یک پشته از هر چیزی. تیرچه بلوک در بالا، برای اولین بار در آخرین از، آخرین در، اولین بار. بنابراین آن را برای ایجاد یک X در اینجا. که برای رفتن به تمام متغیرهای funcs. عالی. بنابراین در حال حاضر ما دو X مختلف که نشان دهنده دو چیز بسیار متفاوت است. سپس ما قصد داریم برای چاپ از عدد صحیح x است. بنابراین اجازه دهید چاپ 100، درست است؟ چرا که در اینجا آن را 100. به طوری که اولین چیزی که که آن را برای چاپ کردن. از آنجا که این تابع برمی گرداند هیچ چیز، در حال حاضر که تابع، که خط اصلی در انجام شد. همه خوب با من تا کنون؟ بنابراین ما در حال حاضر از طریق دو نفر از سه خط از تابع اصلی ما است. در حال حاضر ما در حال رفتن به خط سوم. ما قصد داریم به printf است. این x در اصلی چیست؟ چه که نشان دهنده؟ چه مقدار X در حال حاضر است؟ مخاطبان: 100. استاد: این 100؟ مخاطبان: هنوز 10. استاد: هنوز 10. آره. از آنجا که به یاد داشته باشید، در تابع ما، x برابر 100. اما اگر ما بازگشت به تابع اصلی ما، که متغیر ذخیره شده در یک محل های مختلف در پشته ما. بنابراین در حال حاضر ما نیاز به رفتن به پشته اصلی، برق متغیرهای محلی. و در اینجا X 10 برابر است. و بنابراین ما قصد داریم برای چاپ کردن 10. بنابراین او کاملا درست بود. ما در حال رفتن به خروجی 100 و 10. آره؟ مخاطبان: هنگامی که شما malloc است، آن را پشته و یا پشته است که [نامفهوم]؟ استاد: وقتی که شما از malloc، شما در حال گرفتن حافظه از پشته و اختصاص آن. به طوری که شما لازم نیست به یک ظرف غذا با هر یک از این. بنابراین من حدس می زنم غذای آماده بزرگتر در اینجا چیزی به نام دامنه است. برای کسانی از شما که قرار جلسه بررسی شب گذشته، ما به طور خلاصه در این مورد صحبت. محدوده تعریف می کند چگونه و هنگامی که متغیرهای خود را وجود دارد. و یا در چه قاب متغیرهای شما وجود داشته باشد. تقریبا به طور کلی قاعده کلی است، variables-- خود را اگر شما آنها را ایجاد در داخل braces-- در اشکال مختلف آنها وجود داشته باشد تنها در داخل آن آکولاد. بنابراین برای مثال در تابع ما از تابع، شما می آن دو پرانتز را ببینید. اگر شما در حال ایجاد هر چیزی در داخل آن، شانس هستند همه شما در حال انجام است ایجاد یک پشته و ذخیره سازی آن وجود دارد. همان چیزی که در اصلی. که فقط داخل اصلی ذخیره می شود. همچنین شما می خواهید به بسیار، بسیار مراقب باشید در اینجا. از آنجا که دامنه نیز آشنایی خود را به نمونه های مختلف. بنابراین برای مثال یک برای حلقه، اینترنت من برابر با 0. من 10 کمتر از، من نمی دانم است. من به علاوه به علاوه. و به شما کد داخل آن را کردم، درست است؟ از کجا این متغیر، من، در واقع تنها وجود دارد؟ فقط داخل برای خود حلقه. بنابراین من شرط می بندم که بسیاری از شما بچه ها احتمالا مواجه می شوند این خطا زمانی که شما در حال انجام برنامه در psets خود را. چگونه بسیاری از شما بچه ها سعی کرده اند به استفاده از من در خارج از یک حلقه for و خطا بود. مانند اعداد صحیح unreferenced یا چیزی شبیه به آن؟ به همین دلیل اتفاق می افتد که است چرا که در اینجا شما ایجاد چیزی است که فقط در حلقه خود را برای وجود دارد. و اگر شما سعی می کنید به استفاده از آن، من را نمی کند در واقع در خارج از آن وجود داشته باشد. بنابراین اساسا یک کامپیوتر گفت، من نمی دانم چه شما در حال صحبت کردن در مورد. من می دانم این است که یک من بود در اینجا، اما در حال حاضر دیگر. بنابراین اگر من برای ایجاد یک برای حلقه در داخل، درست است؟ و من قصد دارم به ایجاد یکی دیگر، مانند بین المللی J، و آن را انجام هر کاری. و شما باید یک کد در داخل که حلقه، J فقط در اینجا وجود دارد. اما این نیز در من وجود دارد. و به این ترتیب j تنها وجود دارد در این حلقه، در حالی که من در همه چیز وجود دارد. همه روشن؟ همان چیزی که با عبارات شرطی اگر شما می خواهید برای ایجاد هر چیزی. همان چیزی که با حلقه در حالی که اگر شما می خواهید برای ایجاد هر چیزی. این چیزی است که به این بسیار، مورد بسیار مراقب باشید. بنابراین این یک مشکل واقعا خوب بود در این معنا که آن دو چیز را نشان داد. این نشان برای اولین بار، دامنه. و نشان داده همچنین تخصیص حافظه. از آنجا که شما بچه ها باید بدانند که توابع رشد به سمت بالا در پشته. و هنگامی که شما پاسخ توابع، شما در حال ایجاد اساسا یک پشته جدید از حافظه است. که بسیار متفاوت از است چه حافظه برق خود را است. آره. بگیرد! همه OK در آن؟ که گیج کننده بود. موضوعات بسیار خوبی برای رفتن بیش از، چون شما احتمالا رفتن به دریافت برخی روی حیله و تزویر چیزهایی مانند آن در مسابقه. آره. خنک. من را به شما 100 دریافت در یک خط و سپس 10 در طرف دیگر. آره، بسیار خوب است. خوب، حالا شما بچه ها را دریافت خواهد کرد این شانس را به استادیار. شما دریافت می کنید برای پاسخ به تمام دوست داشتنی ایمیل که من گاهی اوقات دریافت کنید. بنابراین، اندی عزیز، من فکر می کنم ببینید من چیزی رفتن اشتباه با کامپایلر من. من مطمئن هستم که کد من درست است هستم، اما من را گرفتن گسل تقسیم بندی هر بار که من را اجرا کنید. چه خبره؟ لطفا کمک، مقدار زیادی از عشق است. اگر شما بچه ها رو مثل که چگونه می خواهید پاسخ می دهند؟ اینها در واقع بسیار معمول سوال ما از شما می خواهیم. است اگر، ما به شما یک را سناریو، ما را به ما بدهید بهترین حدس خود را در چه خبر است. هر کسی یک چاقو در چه خبر است؟ آره؟ مخاطبان: شاید بصورت غیر مرجع تهی، چیزی شبیه به اشاره گر است با اشاره به چیزی تهی. استاد: بله، می خواهم یک به عنوان مثال از زمانی که اتفاق می افتد. اما آنچه در تصویر بزرگتر از آنچه که در اینجا؟ رسید آن را به شما تلاش در حال برای دسترسی به حافظه است که شما نمی قرار دسترسی به به؟ استاد: دقیقا. بنابراین از یک گسل SEG فکر می کنم، کردن محدودیت، منطقه محدود در حافظه که شما نباید لمس کردن. بسیار زیبا حد زمانی که شما در حال تلاش به index-- مانند به عنوان مثال، شما اعلام ام آرایه از صفر تا نه. اما شما سعی می کنید به لمس که 10 ارزش، شما دسترسی به آن ندارد. از آنجا که شما آن را اعلام نکرده است. و بنابراین کامپیوتر شما است که به که مانند نگاه کنید، اوه اوه، شما در حال تلاش برای رفتن در خارج از مرزهای شاخص. من قصد دارم به شما بدهد گسل تقسیم بندی. فکر می کنم از عنوان بخش، درست است؟ قطعات اضافی، گسل است وقتی شما سعی می کنید به نقض چیزی و شما نباید وجود داشته باشد. گسل تقسیم بندی در هر زمان است شما سعی می کنید به لمس چیز که شما نباید لمس کردن. نمونه اینقدر رایج است شاخص. البته، اگر شما در تلاش هستید به لمس که تهی بود، چرا که این امر به خوبی کار می کنند. اگر اشاره گر خود را در تلاش به شد لمس چیزهایی را که باید لمس کرد، که همچنین می تواند به خوبی کار می کنند. بیشتر به طور معمول نظر شما این در یک آرایه. همه خوب است؟ رسید بنابراین اگر شما می خواهید برای دسترسی به نقطه 10 و تنها یک محدودیت وجود دارد از نه یا چیزی. استاد: بله، دقیقا. تقریبا. خنک. اندی عزیز. بنابراین ما این فوق العاده اس ام اس همه چیز انواع نامیده می شود. اگر ادغام sort-- به عنوان ما اره در عنوان مثال زمانی که دیوید طیف بود چیزی که در class-- چرا، اگر آن را بسیار بسیار سریع تر از هر یک از انواع دیگر، چرا ما حتی زحمت دانستن هر یک از انواع دیگر؟ این سوال واقعا از شما خواسته است؟ سه word-- چه خبر مخاطبان: تجارت کردن چیست؟ استاد: دقیقا. این چیزی است که درخواست پرسیدن. تجارت کردن بین آنچه ادغام مرتب سازی بر آیات هر نوع دیگر؟ مخاطبان: طول می کشد حافظه، درست است؟ استاد: آیا شما توضیح دهید که کمی بیشتر؟ اول اجازه دهید اینترنتی ادغام را توضیح دهد. چگونه ادغام مرتب سازی بر کار می کند؟ رسید پس از آن توسط کار می کند تقسیم همه چیز را به نیمه و سپس قرار دادن آن را با هم و جابجایی آن را در سفارش، مثل هر بار که شما ادغام مجموعه. استاد: تقریبا. بنابراین من می تواند این قرعه کشی، اما آن را من پنج دقیقه به بیرون کشیدن آن. نگاه کردن به به اسلاید بخش که در آن ما مرتب سازی بر ادغام پوشیده شده است. دقیقا. پس راه ادغام مرتب سازی بر آثار است آن را همه چیز تقسیم در نیم، و سپس آن را به نظر می رسد فقط در ارزش اول از همه از آنها و تنها چیزی که انواع. به طور مداوم ایجاد آرایه های جدید و قرار می دهد چیزهای بیشتر و بیشتر به منظور. و بنابراین در حالی که واقعا، واقعا سریع به دلیل it's-- که می دانید، یک جستجوی دودویی N ورود به سیستم از n است. شما در حال ایجاد بسیاری از آرایه های مختلف است که شما هستید با استفاده از مقدار زیادی از حافظه است. و بنابراین در حالی که آن را سریع تر، تجارت کردن در اینجا این است که شما با استفاده از حافظه بیشتر است. و به این ترتیب، اشاره، انواع و جستجو بیشتر این سال تعداد زیادی پوشیده شده بود از آنها در سال های گذشته بوده است. شما بچه ها باید دید که بر این اساس در مسابقه منعکس شده است. من قطعا زمان صرف رفتن بیش از آنچه که همه از انواع مختلف هستند، جستجو چگونه باینری، چگونه خطی کار جستجو کنید. چگونه به شاید شبه کد آن است. زمان در حال اجرا چه هستند؟ چیزی شبیه به بار در حال اجرا است بسیار آسان برای کپی کردن بر روی یک ورق توجه داشته باشید، درست؟ این واقعا سخت است زمانی که شما در وسط آزمون و شما باید به شکل که از. کپی آن را. من به شما تضمین شما نیاز به رفتن به می دانم که. تجارت آف چیست؟ بدترین حالت، بهترین حالت برای همه آنها، بسیار به دانستن. آره؟ مخاطبان: آیا ما نیاز به بدانید که چگونه به کد مرتب سازی بر ادغام شوند؟ دوست دارم، ما نیاز به به یاد داشته باشید بازگشتی؟ استاد: من به شدت آن شک، فقط دلیل آن را مانند نسبتا پیچیده است. اما ممکن است غیرعملی باشد اگر ما از شما درخواست برای استفاده از شبه آن را. آره. بله، خوب، یکی بیشتر. این ممکن است در آمده شما آخرین قطعه در یک بیت. آره؟ آیا همه شنوید که؟ خوب، پس بسیار برای اولین بار از همه، چه نوع برنامه می شود به شما یک خروجی مثل این؟ به یاد داشته باشید که ما از شما خواسته برای یادگیری در مورد این نوع جدیدی از ابزار اشکال زدایی؟ نام آن چه بود؟ valgrind را، راست این برنامه که در آن بود شما می توانید پاسخ است که می تواند پیگیری تمام حافظه شما با استفاده از برنامه های خود را در و بود در. بنابراین اگر شما چیزی را، مانند، قطعا از دست داده، 40 بایت در یک بلوک. احتمالا شما نیست به خاطر سپردن به آن آزاد است. چرا که اگر شما در حال استفاده از بایت حافظه، این بدان معناست که شما دیده که حافظه ام، اما شما قادر به آزاد نبوده است. بنابراین شما می خواهید به مطمئن شوید که شما نیز در حال با استفاده از free-- که یک تابع برای آزاد کردن همه از حافظه تخصیص توسط malloc. خنک. بنابراین این اسلاید، من آن را داشته باشد. آن را در همه جا در بسیاری از سخنرانی ها، در بسیاری از بخش اسلاید. شما واقعا می خواهید مطمئن شوید شما فقط می دانم همه از این. یا در ورق توجه داشته باشید خود را و یا اگر شما می خواهم به آن را حفظ کنید، در صورت تمایل به. این واقعا، واقعا، واقعا مهم است. همچنین بسیار خوب درخواست که ما ممکن است بپرسید. چرا نگاه انتخاب sort-- در است انتخاب همه زمان های اجرا sort-- می N مربع. صرفنظر از اینکه چگونه می آید به لیست شما به عنوان، پس چرا sort-- انتخاب است من به شما بچه 30 را دوم این فکر کنید. از آنجا که آن نوع گیج کننده. این شامل برخی از تفکر مفهومی است. چرا بار اجرا در همان شود هر دو بدترین و بهترین حالت؟ آره؟ رسید از آنجا که مرتب سازی انتخابی هر موقعیت یا فضای کمی در این آرایه چیزی و یا هر چیز دیگری. بنابراین حتی در بهترین حالت، حتی اگر آن را کاملا طبقه بندی شده اند، آن را هنوز هم به مانند، OK، یکی باشد. در وهله اول من را ندارد. و از طریق همه آنها است. OK، یکی از کوچکترین است. و سپس آن را دوباره می رود و مانند، OK، دو کوچکترین همه چیز است. اما هنوز هم به است بررسی هر یک. استاد: آره. بنابراین برای مثال، بیایید می گویند ما یک لیست، در حال حاضر مرتب شده اند، یک آرایه 04:59. راه که انواع انتخاب است که آن را از طریق می رود، آن را چک این دو. سپس آن را چک آن دو. و سپس آن را بررسی می کند، و آن را بررسی می کند. این را نگه می دارد چک کردن همه آنها، بدون در نظر گرفتن یا نه آن را در واقع طبقه بندی شده اند. از آنجا که که به سادگی راه مرتب کردن بر اساس کار می کند. و بنابراین این سوال این است که این نوع مانند یک سوال مفهومی ما بپرسید. که در آن برای اولین بار، شما را به می دانیم چه نوع انتخاب است، درست است، قادر برای پاسخ به این سوال. شما باید قادر به درک مفهومی که چه خبر است. و پس از آن شما می توانید آن اعمال می شود و فکر می کنم، OK اجازه دهید فقط تصور بدترین حالت. همه آنها به ترتیب نزولی است. چگونه است که آن را تحت تاثیر قرار دهد؟ چه اگر آن را چیدمان صعودی چیدمان؟ اگر در حال طبقه بندی شده اند؟ چگونه است که زمان های اجرا تاثیر می گذارد؟ و سپس مرتب کردن بر اساس انتخاب، شما متوجه که آن را در واقع مهم نیست. از آنجا که شما در حال چک کردن همه ارزش صرف نظر از آنچه اتفاق می افتد. و به این ترتیب همه چیز خوب به یاد داشته باشید. چرا برخی از انواع از دیگران متفاوت و چگونه به بهترین و بدترین سناریوها مورد همه آنها تاثیر می گذارد. من قصد دارم به واقعا در انواع ضربه چون که در مسابقه باشد. آره. باشه. در دقیقه شش سمت چپ وجود دارد. من می توانم سه دقیقه پرسش پاسخ دهم. من همچنین می توانید برای قطع مانند 20 دقیقه پس از بخش اگر شما می خواهید برای پاسخ به سئوالات است. آیا کسی واقعا اجمالی سوال و یا مسائل مفهومی آنها معلوم نیست در مورد در حال حاضر هستید؟ آره؟ رسید می توانید کمی صحبت کمی در مورد اپراتورهای بیتی؟ استاد: آره. اپراتورها به طوری بیتی هستند چیزی است که شما احتمالا فقط ممکن است بخواهید برای قرار دادن در برگه خود را. بنابراین quickly-- من نمی خواهم به بیش از حد در عمق چون هاروارد، در بررسی های خود جلسه، آن را به خوبی پوشش داده است. عملگر بیتی، وجود دارد پنج تن از آنها، درست است؟ است این کار وجود دارد، که X و یا تابع، این علامت وجود دارد، که و. لوله است، که یا. و سپس شما باید دو انواع مختلف شیفت. اگر من به شما دو مقدار، اگر به من به شما، مانند، یک و یک. آنچه که ارزیابی به؟ اگر من به تو واقعی و درست است، درست؟ چه در مورد درست یا غلط؟ هنوز هم درست است، درست است؟ از آنجا که یک یا وجود دارد. ما به احتمال زیاد شما اعداد را. بنابراین به یاد داشته باشید، یک مساوی درست است، برابر صفر غلط است. و ما ممکن است به شما این کارها را و از شما بخواهند به ما بگویید که چه اتفاقی می افتد. دانشگاه هاروارد آن را پوشش می دهد در اولین 10 دقیقه از جلسه مطالعه خود واقعا، واقعا خوب است. پس شما بچه ها می خواهید را به مطمئن شوید که شما نگاه کردن به آن است. مخاطبان: آیا pisa5 رفتن به در مسابقه باشد؟ استاد: نه آیا حتی در pisa5 در حال حاضر است. سخت است. فقط حتی زحمت به دنبال در pisa5. با این حال، به عنوان برخی از نکات و پیشنهادات، من نشان می دهد که شما شروع pisa5 به محض آن که مسابقه به پایان رسیده است. این خواهد بود که سخت ترین هفته، اما پس از آن شما بچه ها خواهد شد آن را بر روی تپه گذشت نورد سبز و توله سگ، و آن را خوب است. این کلاس قابل توجهی می شود آسان تر پس از pset پنجم. ساعات اداری: مخاطب یکشنبه، دوشنبه است؟ استاد: آره، پس از ساعات اداری خواهد شد یکشنبه تا دوشنبه برای pset. ساعات اداری امشب اساسا فقط بررسی برای مسابقه باشد. اگر کسی می خواهد به در آمده و از آنها بخواهید استادیار یک سوال، ما آنجا خواهد بود. من درخواست شاید یکی بیشتر می گیرم اگر کسی سوالی دارد؟ آره؟ مخاطبان: وقتی که شما گره تعریف، [نامفهوم] اگر شما می گویند ستاره گره و سپس بعد، آیا کامپیوتر به طور خودکار درک کنند که شما هستید با اشاره به اشاره گر دیگر؟ استاد: نه رسید شما به پیوند دهید آن را [نامفهوم]؟ استاد: بنابراین اساسا ساختار از یک گره است، به یاد داشته باشید، آن را مانند شما ایجاد گره و سپس شما باید یک اشاره گر به نام آینده. همه شما انجام است که با داشتن ساختار وجود دارد. شما باید به او واگذار که اشاره گر به جایی. بنابراین کامپیوتر نمی کند مطمئن شوید آنچه در آن انجام نشده است. شما باید به واقع آن را که اختصاص شما در حال ایجاد لیست پیوندی خود را. و این چیزی است که به طور عمده pset 5 در خواهد بود. بنابراین هیچ نگرانی در مورد هر یک از این در حال حاضر. مخاطبان: بنابراین ما لازم نیست تمرکز بیش از حد در لیست لینک، فقط برداشت کلی؟ استاد: فقط پشته بسیار زیاد است، صف، لیست های پیوندی، درختان، جداول هش. فقط قادر به آنچه آنها می دانند باشد. ما قصد داریم به درخواست دوست دارید هر چیزی خاص چرا که ما واقعا انجام می شود نه pset که پوشش می دهد هر یک از آن است. بنابراین در دو دقیقه آخر قبل از من شما را آزاد برای کشتن این مسابقه. بسیار زیبا، مانند، در مورد چگونگی فکر می کنم دور شما بچه ها در این کلاس آمده است. به یاد دارم وقتی دو هفته از این کلاس، برخی از شما صرف سه ساعت نوشتن آب است. چه مدت طول می کشد شما را بچه ها به آب در حال حاضر؟ 30 ثانیه، شاید؟ در مورد چه مقدار فکر می کنم شما بچه ها آموخته اند. CS یک موضوع واقعا، واقعا سخت است. بدون شک از آن وجود دارد. این سخت است، به همین دلیل هیچ کس آن را مطالعه می کند. این فقط سخت. و آن را کاملا خوب است. و من واقعا افتخار می کنم که هستم همه آن ساخته شده است از این راه دور. Psets آسان نیست. آنها را به یک مقدار زیادی از زمان. شما بچه ها، من هرگز از شما درخواست خواهد کرد به ارسال این بازی از 15 یا ویژنر در pset. بدون نیاز به فقط دمدمی مزاجی در مورد آن. همه ما در اینجا تست ارزیابی دانش مفهومی خود، و همچنین به عنوان برخی از مهارت های اولیه خود را از برنامه نویسی. آزمون طراحی شده است واقعا به چالش کشیدن. مانند، آن طراحی شده است را برای شما به 100 نیست. آن را نیز برای شما به احتمالا طراحی نه قادر به پایان برساند در 75 دقیقه. و این کاملا خوب است. من یک دانش آموز خودم. من می دانم، من آن را نفرت وقتی که من راه رفتن از یک مسابقه مانند، گه باشد. که واقعا سخت بود. احتمالا چه خبر است به اتفاق می افتد و این کاملا خوب است، من به شما گفتن بچه ها در حال حاضر. ابزار در این چیزها بالا نیست در همه. و برای کسانی از شما که اخذ شده است، مانند، سه تا سه را در مجموعه های مشکل شما، این بدان معنا نیست که شما رفتن به 60 درصد در این کلاس است. اگر شما 60٪ در مسابقه، که نمی کند منظور شما در حال رفتن به یک D در این کلاس است. ما می بینیم، به خصوص من، برای کسانی که از شما در بخش من، من چقدر سخت شما بچه ها همه کار می کند. و من پیگیری است. شما بچه ها خوب خواهد شد. هیچ نهادی وجود دارد حافظه شادی در پایان ترم. از آنجا که همه بچه ها گفتن هاروارد دوستان خود، آه، شما خوب است. هیچ کس به شما می گوید بچه ها که در اینجا. بنابراین من به شما بچه ها می گویند که در اینجا. شما بچه ها خوب خواهد شد. من افتخار از همه شما بچه ها هستم. آزمون سخت خواهد بود. مطالعه برای آن، و پس از آن فقط آن را دور بیاندازید. آماده به یادگیری چیزهای جدید را دریافت کنید. و آب نبات بخورند. ما باید تعداد زیادی از آب نبات. خواب خوب شبانه است. آیا خواب نیست، چرا که که می شود، واقعا بد است. CS بسیاری از منطق است. اگر شما خواب نیست، شما نمی توانید عمل، و مغز شما نمی تواند عمل کند. و من در اینجا برای 20 بعدی باشد دقیقه اگر کسی می خواهد به چسبیدن به اطراف. شما بچه ها در حال رفتن به آن را بکشند. موفق باشید.