[MUSIC پخش] SPEAKER 1: خوب، این CS50 است، و این آغاز هفته چهار است، و همانطور که شما ممکن است شنیده و یا به عنوان خوانده شده، جهان پایان دادن به شده است. رفتن سراسر اینترنت دانش و آگاهی است از یک اشکال در برنامه، زبان برنامه نویسی به نام پارتی. این شده است زیبا و مارک به عنوان Shellshock، و یا درب باش، اما مقاله مثل این نادر نبوده است. و در واقع، بسیاری از آنها را خاطرات پشت Heartbleed، که ممکن است شما در متوجه فشار به عقب در بهار گذشته، که به طور مشابه نسبتا چشمگیر بود. در حال حاضر از آن از شما در اینجا امروز، چگونه بسیاری از شما، حتی اگر شما نمی فهمید چه این همه در مورد، از Shellshock شنیده؟ همه حق است، و چگونه بسیاری از شما کامپیوترهای که در معرض خطر هستند؟ OK، دست به مراتب، به مراتب بیشتر وجود داشته باشد تا حال حاضر، به دلایل خواهیم دید. اجازه دهید نگاهی به آنچه شده است که در رسانه ها و سپس آن را کمی توضیح دهید در اینجا برای ما از لحاظ فنی. SPEAKER 2: کارشناسان امنیت دارند هشدار داد که نقص های جدی می تواند در مورد به تحت تاثیر قرار صدها نفر از است میلیون ها نفر از کاربران وب در جهان است. پس چه چیز اشکال که شده است دوبله Shellshock، و چه کاری انجام میدهد؟ خوب، Shellshock نیز به عنوان شناخته شده اشکال باش، نرم افزار آن استفاده می کند. هکرها با استفاده از ویروس برای اسکن آسیب پذیر سیستم های در حال اجرا لینوکس و یونیکس سیستم عامل و سپس آنها را آلوده می کند. پارتی یک پوسته خط فرمان است. این کاربران امکان می دهد مسئله دستورات برای راه اندازی برنامه ها و ویژگی های نرم افزار در با تایپ کردن در متن. این به طور معمول توسط برنامه نویسان استفاده می شود، و نباید باز به جهان گسترده تر، هر چند Shellshock تغییر است. خوب، worringly، برخی از تحلیلگران هشدار از آن می تواند یک تهدید بزرگتر، چون Shellshock اجازه می دهد تا به طور کامل کنترل دستگاه آلوده، در حالی که Heartbleed تنها مجاز هکرها به رایانه های جاسوسی. این خیلی جدی، آن را امتیاز شده 10 از 10 برای شدت های ملی بانک اطلاعات آسیب پذیری. در 2/3 از تمام سرورهای وب می باشد خطر، از جمله برخی از رایانه های مک. خوب، مطمئن شوید که شما پچ سیستم شما در حال حاضر. هر کس میزبانی وب سایت در حال اجرا سیستم عامل های تحت تاثیر قرار باید در اسرع وقت اقدام کنند. هر کسی که استطاعت آن را باید نگاه به نظارت و وب کاربرد آنها فایروال ها به نگاه کردن به هر گونه حمله. SPEAKER 3: بدترین چیزی که است که می تواند اتفاق می افتد است که کسی می کد که ارسال می به طور خودکار به اسکن و اینترنت و تاثیر می گذارد همه این کامپیوتر ها. و یک بار انجام می دهند که، خوب، بدترین چیزی که می تواند انجام دهد است فقط همه چیز را پاک کنید، یا بسته سایت های پایین. بنابراین ما می تواند آسیب ببینید از آن نقطه نظر، که در آن ما به مردم مخرب دارند که فقط تصمیم به ویرانی توسط سیستم پایین آوردن یا حذف فایل ها و چیزهایی مانند آن. SPEAKER 2: برخی می گویند این یکی است از سخت ترین برای اندازه گیری اشکالات در سال، و آن را ممکن است هفته ها حتی یا ماه به منظور تعیین تاثیر نهایی آن است. SPEAKER 1: پس همه درست است، اما چیزی که خنده دار است، تقریبا همه از تصاویر شما فقط دیدم، به جز شاید صفحه کلید، هیچ ربطی به با اشکال آنچه. سرور و سیم و غیره، به نوعی از حاشیه های مربوط، اما در هسته آن را در واقع بسیار آشنا چه خبر است اینجا. در واقع، اجازه دهید من به به لوازم خانگی CS50 ما. اجازه بدهید من به جلو و به حداکثر رساندن پنجره ترمینال در اینجا. و شما بچه ها شده اند با استفاده از این، و یا نسخه های جاسازی شده آن، در gedit به منظور نوشتن برنامه، نوع دستورات، و غیره، و این است که در واقع است، و برای هفته ها، پارتی، B-A-S-H است. این است بورن دوباره پوسته، که فقط یک راه فانتزی گفتن است، این برنامه ای است که دارای یک است چشمک زدن سریع، به طور موثر، که نشسته وجود دارد در انتظار برای ورودی برای شما. و این دستور را رابط خط از طریق آن شما بچه ها در حال اجرا دستورات و در نهایت جمع آوری و پس از آن در حال اجرا برنامه. اما باش هم یک برنامه نویسی زبان به معنای زیر است. شما می دانید که دستورات مانند وجود دارد سی دی و ls و نیز صدای شیپور و دیگران، اما شما می توانید دستورات خود را تعریف با پیاده سازی آنها در باش. در حال حاضر ما در حال به رفتن نیست رفتن به جزئیات بزرگ به پارتی زبان برنامه نویسی است، اما به عنوان مثال، که در حال حاضر، هیچ فرمان به نام "سلام." بنابراین می توان آن را در یافت یکی از این بسته ها. این بر روی کامپیوتر من نصب نشده است. مدیر خود را بپرسید. اما اگر من می خواهم وجود دارد به یک برنامه به نام "سلام" در پارتی و یا در اعلان من، من در واقع می توانید استفاده کنید نحو که کاملا شبیه C. این کاملا مثل هم نیستند، اما به نظر می رسد بسیار شبیه به یک عملکرد، البته از دست رفته برخی از جزئیات. هیچ چیز به نظر می رسد اتفاق می افتد، اما در حال حاضر اگر من تایپ "سلام" شما در واقع می تواند ارسال نامه برنامه، نه در C، نه در جاوا، نه در برنامه نویسی دیگر زبان، اما در پارتی خود را. در حال حاضر کلیدی در اینجا این است که من نوشت: نام من می خواستم به این فرمان جدید، و پرانتز نیز می باشد نماد این که یک تابع. از سوی دیگر، شما نیز می توانید انجام دهید سرگرم کننده همه چیز، و در واقع، حتی در سیستم عامل مک، این برنامه ای به نام ترمینال می باشد. این می آید به هر کسی ساخته شده است کامپیوتری که دارای یک مک در این اتاق، و شما می توانید کارهایی مشابه در مک انجام OS، اما شما می توانید بیش از آن فراتر بروید. و این است که کمی مماسی، اما نوع سرگرم کننده است. من امروز صبح به یاد بود، که فکر کردن در این طریق، از یک بازی کوچک من استفاده می شود به بازی با یکی از TFS سابق CS50 است به موجب آن هر زمان که او به دور از راه رفتن صفحه کلید خود را با صفحه نمایش خود را قفل، من یک فرمان اجرا مانند this-- "سلام." و در حال حاضر هر زمان که او آمد به او صفحه کلید پس از من نهایت صفحه نمایش و او را به نشستن، سعی کنید برای انجام این کار، فهرست کردن محتویات directory-- خود [AUDIO پخش] سلام. سلام. SPEAKER 1: بنابراین، در عدالت، این در واقع نه "سلام." این معمولا چیزی بود بیشتر شبیه به that-- [AUDIO پخش] -Beep. SPEAKER 1: --that I would-- تا کامپیوتر خود را که در واقع او را قسم می خورم هر زمان او پایین صفحه کلید خود را نشست. و به سرعت او نمیفهمد و نه ترک روی صفحه نمایش خود قفل شده است. اما این نشان می دهد مرتب کردن بر اساس از سرگرم کننده احمقانه است که شما می توانید با چیزی شبیه به هم زدن داشته باشد. اما کمی بیشتر جدی، تا مطمئن شوید، از آن. و در واقع، این یکی از است ترین اشکالات خطرناک و طولانی مدت که واقعا ضربه جهان در سطح جهانی. این اشکال در قدرت مانده است برای برخی از 20 سال، و به شما امکان فقط در زده لحظه های سادگی نسبی آن است. بنابراین این یک نماینده است فرمان که اگر شما سیستم عامل مک، به معنای واقعی کلمه در حال حاضر هنگامی که شما درب را باز، شما می توانید سعی کنید با تایپ کردن به آن برنامه ای به نام ترمینال. ترمینال تحت نرم Utilities-- برای یک بار، کاربران ویندوز لازم نیست که نگرانی در مورد این threat-- خاص اما کسانی که از شما با مکینتاش می توانید نوع این را به یک پنجره مانند من در اینجا می خواهیم انجام دهیم، و اگر شما نوع که در این برنامه به نام ترمینال، مثل من در حال حاضر را انجام دهد، اگر شما کلمه نگاه کنید به "آسیب پذیر" کامپیوتر شما می باشد آسیب پذیر به بهره برداری. در حال حاضر آنچه که در واقع به معنای؟ و این مسلما ترکیب بسیار دیوانه، اما اجازه دهید حداقل بیرون کشیدن از برخی از جنبه های جالب است. بنابراین در برخی از نحو است که به نظر می رسد وجود دارد کمی آشنا، حداقل از C و برنامه نویسی به طور کلی. من می بینم بعضی پرانتز، سمی کالن، آکولاد، و از جمله، اما معلوم است که این چیزی که احمق در اینجا در زرد اساسا یک تابع که هیچ کاری نمی کند. ابزار روده بزرگ انجام هیچ چیز، و نقطه و ویرگول بدین معنی است جلوگیری از انجام هیچ چیز نیست. بنابراین در داخل این آکولاد، این واقعیت است که من برابر داشته باشند ثبت نام به سمت چپ، این اساسا ایجاد یک فرمان یا یک متغیر، به نام x، و اختصاص آن که کمی زرد از کد وجود دارد. که می تواند چیزی شبیه به "اکو سلام "و یا" می گویند بوق "و یا چیزی شبیه به آن. اما متوجه اگر چشم شما سرگردان بیشتر به راست، بیشتر به این خط از وجود دارد فقط در پایان آن نقطه و ویرگول بدین. "اکو آسیب پذیر،" و سپس فراتر از آن حتی بیشتر وجود دارد. یکی دیگر از نقطه و ویرگول، ج باش:. بنابراین داستان کوتاه مدت، این خط از کد است برای قانع کننده کافی یک کامپیوتر که آسیب پذیر را به انجام کاری که شما می خواهید آن را انجام دهید، چرا که به موجب آن مشکلات را در پارتی وجود دارد حتی اگر باش قرار بود برای متوقف کردن خطوط خواندن از دستور راست پس از متن زرد، برای 20 به علاوه سال اشکال قدیمی، باش تا به حقیقت خواندن فراتر از آن نقطه و ویرگول و زیبا بسیار انجام آنچه در آن است گفت. پس چه مفهوم است از که در نهایت؟ من فقط گفت: "اکو سلام" و یا "اکو آسیب پذیر،" اما اگر شما چیزی را انجام داد در واقع مخرب، مانند کنترل از راه دور -rf *، که شما ممکن است نه همیشه قبل تایپ شده، و رک و پوست کنده شما احتمالا نباید بیش از حد به زودی، که شما می توانید انجام بسیاری از آسیب با آن است. چرا؟ کنترل از راه دور می کند چه، البته؟ حذف می کند. * یعنی چه؟ تمام. پس از آن به اصطلاح کارت های وحشی، پس از آن بدان معنی است حذف همه چیز را در دایرکتوری جاری. تحقیق اتفاق می افتد به معنی بازگشتی، که بدان معنی است که اگر آنچه را که شما حذف یک دایرکتوری است، و در داخل وجود دارد سایر فایل ها و دایرکتوری های دیگر است، به صورت بازگشتی به وجود شیرجه و حذف همه از آن. و ج بدترین از همه آنها است. کسی می داند که اف بدان معنی است که اینجا هستید؟ نیروی. بنابراین مجبور معنی، حتی در صورتی که این ایده بدی است، این کار را انجام بدون موجب من برای تایید بیشتر. بنابراین، شما می دانید، ما در خنده این، اما رک و پوست کنده، من احتمالا این چند بار تایپ یک روز، به این دلیل که واقعیت است آن را به سریع ترین راه برای است حذف یک دسته کامل از مسائل. اما حتی من برخی از آسیب انجام داده اند. اما اگر شما به فریب یک کامپیوتر به تعریف برخی از متغیر احمق و یا تابع به نام x و اما بعد از آن فریب کامپیوتر به اجرای فراتر از مرزهای آن تابع، فراتر از آن نقطه و ویرگول، شما در واقع می تواند فریب کامپیوتر به اجرای چیزی شبیه به کنترل از راه دور -rf و یا دستور به ایمیل و یا از دستور کپی. هر چیزی به معنای واقعی کلمه شما می توانید با انجام کامپیوتر، که آیا آن را پاک کردن فایل ها، ایجاد فایل ها، هرزه نگاره، وارد کسی، حمله به برخی از سرور از راه دور، اگر شما می توانید آن را بیان با یک فرمان شما می توانید یک کامپیوتر را به انجام است که فریب. در حال حاضر آنچه به عنوان مثال از این چگونه ممکن است این کار؟ خوب، در بسیاری از کامپیوتر وجود دارد در پارتی اینترنت در حال اجرا. همه کاربران ما مک در میان آنها هستند. بسیاری از سرور های لینوکس در میان است آنها را به عنوان خوب، و سرور یونیکس. ویندوز دوباره می شود نسبتا خاموش قلاب مگر اینکه شما نصب نرم افزار ویژه. در حال حاضر بسیاری از سرویس دهنده، برای به عنوان مثال، وب سرور اجرا شود، و در واقع لینوکس است که شاید ترین سیستم عامل محبوب به اجرا در کامپیوتر در اینترنت که در خدمت کردن صفحات وب است. حالا که ما بعد خواهید دید در ترم، هنگامی که شما یک درخواست از ارسال مرورگر خود را به کروم، اینترنت اکسپلورر، whatever-- به یک سرور از راه دور، معلوم است که حتی اگر شما فقط تایپ www.example.com، مرورگر شما در حال ارسال پیام که کمی پیچیده تر، مانند این. اما متوجه چیزی کمی عجیب و غریب. دو خط اول من دیده ام پیش از این هرگز، اما آنها به نظر نمی آید به خصوص تهدید. اما متوجه آنچه که من به سرقت رفته برای خط سوم است. اگر یک پسر بد به ارسال پیام مانند این را از کامپیوتر خود به مک آسیب پذیر و یا یک سرور آسیب پذیر لینوکس، چیزی خنده دار است که بر هم زدن است، که ساده دستور کمی سریع، در همه جا حاضر است و اغلب استفاده به اصل اجرا محتویات یک پیام که آن را دریافت. و با این منطق، شما می توانید فوت و فن یک وب سرور، بنابراین، با ارسال چیزی شبیه کاربر عامل، که معمولا قرار است به می گویند که نام مرورگر شما. کاربر عامل کروم، کاربر عامل اینترنت اکسپلورر، کاربر عامل فایرفاکس، این فقط مرورگر خود را راه شناسایی خود را. اما اگر پسر بد بسیار هوشمندانه می گوید، میلی متر میلی متر، من هستم رفتن به شما بگویم چه مرورگر من است، من به جای رفتن به شما ارسال این مرموز، به دنبال چیزی با -rf کنترل از راه دور * در آن، شما به معنای واقعی کلمه می تواند فریب وب سرور آسیب پذیر در اینترنت به اجرا دقیقا همان است که در وجود دارد برای حذف تمام فایل های. و رک و پوست کنده، که نیست حتی بدتر از آن. شما می توانید هر چیزی را انجام دهد. شما می توانید شروع به توزیع محرومیت از حمله به سرویس اگر شما این پیام را به ارسال خوشه کل از وب سرور و پس از آن تا به حال تمام آنها فرود، برای به عنوان مثال، بر روی سرورهای Harvard.edu، و شما می توانید از انفجار مرتب سازی بر اساس هک از آنها توسط ترافیک شبکه که بود در غیر این صورت این پسر بد باعث شده است. بنابراین، داستان کوتاه مدت، تقریبا هر کس که در این اتاق که صاحب یک مک آسیب پذیر در این است. پوشش نقره ای است که مگر اینکه شما در حال اجرا یک وب سرور بر روی لپ تاپ شما، و مگر اینکه شما در واقع پیکربندی کرده اید این اجازه می دهد تا چیزی شبیه به SSH را در آن، شما در واقع بی خطر است. این آسیب پذیر است، اما هیچ وجود دارد یک در تلاش برای به لپ تاپ خود را دریافت کنید، بنابراین شما می توانید نوع مطمئن باشند. با این حال، اپل به زودی می شود به روز رسانی رفع این. دنیای لینوکس در حال حاضر منتشر شد تعدادی از رفع فدورا و اوبونتو و نسخه های دیگر از لینوکس، و در واقع اگر شما به روز رسانی 50 در لوازم خانگی، حتی بیش از حد خواهد شد به روز رسانی و اصلاح کرد. اما این بیش از حد است و نه واقعا آسیب پذیر بوده است، چرا که مگر اینکه شما در tinkered با لوازم و لپ تاپ شما عمومی در دسترس بر روی اینترنت است که نمی به طور پیش فرض، شما در واقع خوب است چون بوده است از دیواره آتش و روش های دیگر. اما این یک مثال فوق العاده از یک اشکال است که ما برای برای به معنای واقعی کلمه 20 زندگی می کردند سال، و که اگر کسی می داند تمام این زمان است در مورد آن شناخته شده است؟ و در واقع، این یکی از است با چالش های اساسی که ما را بعد از آن در مراجعه کنید ترم در مورد امنیت، این است که درست مثل در دنیای واقعی، آدم های خوب در نقطه ضعف هستند. برای نگه داشتن بچه ها بد از، ما به مطمئن شوید که هر درب قفل شده است، که هر پنجره مطمئن است، که هر نقطه از ورود به خانه امن نگه داشتن بچه ها بد است. اما چه پسر بد به انجام در واقع سازش خانه شما و سرقت از شما؟ او فقط برای پیدا کردن یک قفل درب، پنجره شکسته، و یا چیزی در امتداد آن خطوط، و آن را همان چیزی که در امنیت کامپیوتر است. ما می توانیم میلیون ها نفر از ارسال خط کد برنامه نویسی و صرف صدها یا هزاران نفر از ساعت تلاش برای بدست آوردن آن درست است، اما اگر شما را تنها با یک اشتباه در صحت، شما می توانید کل سیستم قرار داده و در واقع در این مورد، کل اینترنت و جهان در معرض خطر. بنابراین اگر شما می خواهم برای کسب اطلاعات بیشتر در مورد این، در اینجا به این URL بروید. هیچ نیازی برای اقدام وجود دارد امشب مگر اینکه شما در میان کسانی که راحت تر است که در حال اجرا وب خود را سرور، که در این صورت شما باید، در واقع، به روز رسانی نرم افزار خود را. و این بیش از حد عنوان است سخنرانی، و در حال حاضر یک مقاله، که ما در مرتبط کرده ام وب سایت البته برای امروز. آن توسط یک شخص بود به نام کن تامپسون، که شد پذیرش بسیار مشهور جایزه در علوم کامپیوتر، و او به این سخنرانی چند سال پیش از این، اساسا در مورد این موضوع است. درخواست مردمی به این سوال، باید به شما واقعا اعتماد، در نهایت، نرم افزار به شما داده شده است؟ به عنوان مثال، همه ما نوشتن برنامه ها، و ما تدوین شده است آنها را با صدا کردن. و به دانش خود، به شما نوشته شده است هر برنامه برای CS50 که در آن وجود دارد در پشتی از انواع، یک راه وجود دارد که یک پسر بد، اگر در حال اجرا برنامه های خود را، می تواند بر روی کامپیوتر خود را؟ احتمالا نه، درست است؟ ماریو، و حریص، و اعتبار. این همه برنامه های بسیار کوچک قرار می دهند. شما می خواهم که به بسیار است بد اگر شما در واقع ساخته شده تمام کامپیوتر شما آسیب پذیر پس از نوشتن 10 یا 20 خط کد، یا حداقل برخی بی اطلاع از پیامدهای امنیتی. در حال حاضر من می گویند که شوخی، اما ما قصد داریم به امروز شاهد و این هفته آن را در واقع واقعا، واقعا آسان به بد و حتی برنامه های کوتاه مدت آسیب پذیر است. اما در حال حاضر، حداقل، متوجه که سوال در اینجا خواسته در مورد صدا کردن در یک کامپایلر. چرا ما شده است اعتماد به صدا کردن برای دو یا سه هفته گذشته است؟ که به می گویند که هر کس صدای شیپور نوشت به یک "اگر" شرایط در آن وجود دارد را نداشته باشند که اساسا تزریق برخی از صفر و آنهایی که به هر برنامه را کامپایل که به او اجازه دهید و یا از دسترسی او زمانی که کامپیوتر شما که خواب هستید و درب لپ تاپ خود را باز است و کامپیوتر شما در حال اجرا است؟ درست است؟ در حال حاضر این نوع سیستم افتخار راست اکنون که ما باور داریم که صدای شیپور حلال است. شما اعتماد کنند که دستگاه حلال است. شما اعتماد که به معنای واقعی کلمه هر برنامه در مک و یا PC خود را قابل اعتماد است. و به عنوان این اشکال ساده نشان می دهد، حتی اگر آن را مخرب نیست، که مطلقا نه به احتمال زیاد به صورت. بنابراین شما باید به عنوان جهنم ترس باشد. صادقانه بگویم، هیچ ساده وجود دارد راه حل این دیگر از نوعی آگاهی اجتماعی از افزایش پیچیدگی که ما در حال ایجاد در بالا از سیستم های کامپیوتری ما، و چگونه به طور فزاینده ای آسیب پذیر ما ممکن است به خوبی می شود. در حال حاضر با که گفت، برک آوت. بنابراین برک آوت مشکل این است که مجموعه سه، و برک آوت بازی از گذشته است که شما ممکن است به یاد می آورند، اما برای ما در مشکل مجموعه سه، این اجازه می دهد تا ما را به همه چیز به بالا و درجه یک به طوری که هنگامی که ما در حال نوشتن برنامه ها، حتی در یک پنجره ترمینال شبیه به این، ما در واقع می تواند اجرا شود، در نهایت، برنامه های گرافیکی ندارد بر خلاف کسانی که ما تا به حال دسترسی به در ابتدا. بنابراین این کارکنان است اجرای برک آوت، که فقط این آجر شکست است بازی، که شما حرکت دست و پا زدن خود را به عقب جلو و عقب، و به شما ضربه توپ در برابر کسانی که آجر های رنگی تا بالا. بنابراین این ما را مرتب کردن بر اساس به جایی که ما قادر به تواند بسیار به سرعت با خراش، و در حال حاضر با C، اجرای خود ما رابط کاربر گرافیکی. اما بیشتر از آن، این مجموعه ای مشکل نشان دهنده اولین که در آن ما در حال دادن شما یک دسته از کد. و در واقع، من صریح و روشن را با توجه به این، به دلیل ویژه برای کسانی که کمتر راحت، این مشکل تنظیم، حداقل در نگاه اول، در حال رفتن به مانند احساس ما آن را یک شکاف گرفته شده است. از آنجا که ما به شما داده ایم، برای برخی از جستجو و مرتب سازی مشکلات در pset، یک دسته از کد است که ما نوشت، و یک زن و شوهر از نظر که می گویند "به انجام" که در آن شما باید برای پر کردن جاهای خالی. بنابراین بیش از حد ترسناک است، اما این اولین بار است ما به شما توزیع کد است که شما نیاز دارید اولین خواندن، درک، و پس از آن برای اضافه کردن و تکمیل آن. و پس از آن با برک آوت، ما قصد داریم برای انجام همان، دادن به شما چند ده خط از کد که، رک و پوست کنده، به شما بدهد بسیاری از چارچوب بازی اما متوقف کوتاه اجرای آجر و توپ رو و دست و پا زدن، اما ما پیاده سازی برخی از ویژگی های دیگر. و حتی این که در نگاه اول، دوباره، به خصوص اگر کمتر و راحت، ممکن است به خصوص دلهره آور به نظر می رسد و شما فکر می کنم بسیاری از توابع جدید وجود دارد شما نیاز به قرار دادن ذهن شما در اطراف، و این درست است. اما به خاطر داشته باشید، آن را به کاملا مانند خراش. شانس هستند شما همه استفاده کنید قطعات پازل در ابتدا. شانس هستند که شما اهمیتی نمی به بسته بندی کردن ذهن خود را در اطراف همه آنها را چرا که تمام آن را در زمان یک نگاه سریع به درک، آه، این چیزی است که من می توانم انجام با قطعه پازل. و در واقع، در مشکل تنظیم 3 تنظیمات، ما به شما اشاره در اسناد و مدارک است که خواهد شد شما معرفی به برخی از توابع جدید، و در نهایت برنامه نویسی ساخت استفاده می کنید. شرایط، کابل ها، متغیرها و توابع یکسان خواهد بود آنچه که ما را دیده ام تا کنون. پس در واقع، آنچه ما می خواهیم را شما برخی از نمونه کد است که اجازه می دهد تا یک پنجره را ایجاد می کنید که به نظر می رسد بر خلاف این نیست، و در نهایت آن را به چیزی کاملا شبیه به این. پس از CS50 امکان استفاده، بحث در مورد ساعات اداری و بیشتر، و آرامش را در این واقعیت است که مقدار کد شما را مجبور به ارسال در واقع نه همه که بسیار. چالش اول است فقط به به آب و هوای جدید خو گرفتن خود را به برخی از کد ما نوشته شده است. هر گونه سؤال در pset3، Shellshock، و یا در غیر این صورت؟ رسید مثل به نظر می رسید از طریق رفتن با برک آوت که فعال است تقریبا یک سبک شی گرا، اما من فکر کردم C بود شی گرا برنامه است. SPEAKER 1: یک سوال بسیار خوبی است. بنابراین در به دنبال از طریق کد توزیع، کد ما برای pset3 نوشت، برای کسانی که آشنا، آن به نظر می رسد مانند آن را کمی شی گرا. پاسخ کوتاه این است، در آن است. این یک تقریب از اینکه چگونه است ممکن است کد شی گرا با استفاده از انجام یک زبان مانند C، اما آن را هنوز هم در نهایت رویه. هیچ روش داخل وجود دارد متغیرهای، به عنوان شما را مشاهده کنید. اما یادآور آن است. و ما که از ویژگی های دوباره هنگامی که ما به PHP و جاوا اسکریپت را دریافت کنید در پایان ترم. اما در حال حاضر، از آن فکر می کنم به عنوان یک اشاره از چه چیزی آمده است. سوال خوب. خوب. بنابراین ادغام مرتب کردن بر اساس بود که چگونه ما همه چیز سمت چپ زمان آخرین. و ادغام مرتب کردن بر اساس سرد در بود معنای آن است که خیلی سریع تر بود، حداقل در تست گذرا بر ما در هفته گذشته نسبت به مثلا حباب انجام داد، مرتب کردن بر اساس، انتخاب نوع، مرتب درج. و آنچه بیش از حد شسته و رفته بود فقط چگونه موجز و پاک شما می توانید آن را بیان کنند. و آنچه را که به ما می گویند که بالا بود محدود به زمان در حال اجرا از ادغام مرتب سازی بر اساس؟ آره؟ رسید n log n استفاده؟ SPEAKER 1: n log n استفاده، درست است. n log n استفاده. و ما را به آنچه که می آیند واقعا به معنی و یا در آن است که از میان می آید، اما این بهتر بود از چه زمانی در حال اجرا که ما برای حباب دیدم انتخاب و نوع قرار دادن؟ بنابراین تعداد مربع. تعداد مربع بزرگتر از این است، و حتی اگر آن را کاملا روشن نیست، می دانیم که log n است کوچکتر از n است، بنابراین اگر شما انجام برپایه نفر چیزی کوچکتر از n، آن را به کمتر از n به توان. این بیت از شهود وجود دارد. اما ما قیمت را برای این پرداخت می شود. آن را سریع تر بود، اما یک موضوع است که آغاز شده در هفته گذشته به ظهور این معاوضه بوده است. من عملکرد بهتر زمان عاقلانه است، اما آنچه آیا من را به صرف در دیگر دست، به منظور دستیابی به که؟ رسید حافظه. SPEAKER 1: دوباره بگو؟ رسید حافظه. SPEAKER 1: حافظه، یا فضای کلی تر. و این بود، نه سوپر با انسان ما آشکار است، اما به یاد آورید که داوطلبان ما پله شد به جلو و پله به عنوان هر چند آرایه ای وجود دارد در اینجا، و به عنوان هر چند وجود دارد یک آرایه دوم که در اینجا آنها می توانند استفاده کنید، زیرا ما جایی نیاز به ادغام آن مردمی. ما نمی تواند فقط آنها را در محل مبادله. بنابراین نوعی اهرم ادغام فضای بیشتری است، که ما با نیاز ندارد الگوریتم های دیگر، اما حرکت صعودی است که آن را بسیار سریعتر. و رک و پوست کنده، در فضای دنیای واقعی این RAM days--، هارد دیسک space-- نسبتا ارزان، و به طوری که نه لزوما چیز بدی نیست. بنابراین اجازه دهید نگاهی سریع، کمی بیش متد، در آنچه که ما انجام دادیم و به همین دلیل ما گفت که تعداد ورود بود نفر. بنابراین در اینجا هشت اعداد و هشت داوطلب ما زمان گذشته. و اولین چیزی که ادغام مرتب سازی بر به ما گفت به آنچه که بود؟ رسید تقسیم به دو. SPEAKER 1: دوباره بگو؟ رسید تقسیم به دو. SPEAKER 1: تقسیم در دو، درست است. این است که بسیار یادآور کتاب تلفن، از شکاف و تسخیر به طور کلی. بنابراین ما در نیمه سمت چپ نگاه کرد. و پس از آن زمانی که ما گفت، مرتب کردن بر اساس نیمه سمت چپ عناصر، چه ما بعد می گویند؟ مرتب کردن بر اساس نیمه چپ سمت چپ نیم، که به ما اجازه، پس از تقسیم در دو، تمرکز بر روی چهار و دو. چگونه می توانم یک لیست شما مرتب در حال حاضر، در زرد، اندازه دو، با استفاده از ادغام مرتب سازی بر؟ خوب آن را در نیمه تقسیم می شوند، و مرتب در نیمه سمت چپ. و این بود که در آن همه چیز به طور خلاصه احمقانه کمی کردم. چگونه می توانم یک لیست که از شما مرتب کردن بر اساس اندازه یک، مثل این تعداد چهار که اینجا هستید؟ این طبقه بندی شده اند. شما انجام می شود. اما پس از آن چگونه می توانم به شما یک لیست از مرتب کردن بر اساس اندازه یک زمانی که آن را به تعداد دو است؟ خوب، همین است، اما در حال حاضر چه بود سوم و مرحله کلیدی در ادغام مرتب سازی بر؟ شما تا به حال به ادغام سمت چپ نصف و نیمه سمت راست. و زمانی که ما کار را انجام دادیم، ما نگاه در چهار، ما در دو نگاه کرد. ما تصمیم گرفتیم همه حق است، بدیهی است که دو می آید برای اولین بار، بنابراین ما دو قرار داده در آن محل، پس از چهار. و در حال حاضر شما به نوع عقب، و این نوع از مشخصه است یک الگوریتم مانند ادغام مرتب سازی بر، عقب در حافظه است. خط بعدی از داستان چه بود؟ باید چه کار کنم با تمرکز بر آینده؟ نیمه سمت راست سمت چپ نیم، که شش و هشت است. بنابراین اجازه دهید من فقط از طریق این گام به گام بدون belaboring نقطه بیش از حد. شش و هشت، پس از آن شش است طبقه بندی شده اند، هشت طبقه بندی شده اند است. ادغام آنها را با هم می خواهم که، و در حال حاضر گام بزرگ بعدی است، البته، مرتب کردن نیمی از حق را از گام اول از این الگوریتم. بنابراین ما در یک، سه، هفت، پنج تمرکز می کنند. پس از آن ما در نیمه سمت چپ تمرکز می کنند. قسمت سمت چپ آن، نیمه سمت راست که، و سپس در یک و سه ادغام خواهند شد. سپس نیمه سمت راست، بعد از آن نیمه چپ از آن، و سپس نیمه راست آن است. ادغام آن را در، و در حال حاضر چه مرحله باقی می ماند؟ ادغام نیمه چپ بزرگ و بزرگ نیمه سمت راست، بنابراین یکی پایین می رود وجود دارد، پس از آن دو، پس از آن سه، پس از آن چهار، پس از آن پنج، سپس شش، هفت، هشت. بنابراین در حال حاضر چرا این در نهایت آشکار، به خصوص اگر n و لگاریتم تر به طور کلی و نه شما فرار، حداقل در حافظه؟ خوب، متوجه ارتفاع این چیز. ما تا به حال هشت عنصر، و ما آن را دو به دو تقسیم شده است، توسط دو. بنابراین ورود به پایه دو از هشت به ما می دهد سه. و من در آن اعتماد اگر مبهم و مه آلود کمی در آن. اما ورود به سیستم پایه دو از هشت سه است، بنابراین ما سه لایه ادغام انجام داده ام. و هنگامی که ما با هم ادغام شدند عناصر، که چگونه بسیاری از عناصر آیا ما در در هر یک از این ردیف نگاه می کنید؟ در مجموع نفر، درست است؟ از آنجا که به ادغام ردیف بالا، حتی اگر ما را تکه تکه کرد، ما در نهایت هر عدد را لمس کرد یک بار. و در سطر دوم، به ادغام این لیست از اندازه دو، ما تا به حال به لمس هر یک از عناصر یک بار. و سپس در اینجا واقعا به وضوح در آخرین سطر، ما تا به حال به لمس هر یک از این عناصر یک بار، اما تنها یک بار، بنابراین در اینجا نهفته است، پس از آن، ما n log n استفاده. و در حال حاضر فقط به چیزهای کمی رسمی تر برای فقط یک لحظه، اگر شما قرار بود در حال حاضر این تجزیه و تحلیل در یک نوع از سطح بالاتر و سعی کنید برای تصمیم گیری، به خوبی چگونه ممکن است شما در مورد ابراز بروید زمان در حال اجرا از این الگوریتم فقط با نگاه کردن به آن و نه با استفاده از یک مثال ساختگی؟ خوب، چه مقدار زمان را به شما می گویند گام به گام شبیه به این در زرد می کنند، اگر n <2 بازگشت؟ این یک O بزرگ از چه چیزی؟ بنابراین من از دیدن یک، پس از یک مرحله، شاید دو مرحله، زیرا این اگر و سپس بازگشت، اما آن را زمان ثابت، درست است؟ بنابراین ما گفت: O (1) است، و این چگونه من این را بیان کنند. T، فقط زمان در حال اجرا باشد. n اندازه ورودی است، بنابراین T (n) را، فقط یک راه فانتزی گفت: در حال اجرا زمان ورودی از اندازه n در حال رفتن به در دستور است از زمان ثابت، در O (1). اما در غیر این صورت، آنچه در مورد این؟ چگونه شما بیان زمان این خط زرد در حال اجرا؟ T از چه؟ شما می توانید نوع از اینجا تقلب و پاسخ به سوال من چرخه. بنابراین اگر زمان در حال اجرا در به طور کلی ما فقط می گویند T (n) است. و در حال حاضر شما از punting اینجا و گفت: خوب، فقط مرتب کردن نیمه سمت چپ، و سپس مرتب کردن نیمه راست. چگونه ممکن است ما پایتخت زمان در حال اجرا از این خط زرد؟ T از چه؟ اندازه ورودی چیست؟ نفر بیش از دو. چرا من فقط می گویند که؟ و پس از آن این است T دیگر (نفر / 2) و پس از آن دوباره، اگر I ادغام دو نیمه مرتب شده، چگونه بسیاری از عناصر هستم من به به لمس کل؟ n است. بنابراین من می توانم این بیان، فقط به نوع فانتزی، به عنوان زمان در حال اجرا به طور کلی. T (n) را فقط در زمان در حال اجرا از T (n / 2) است، به علاوه T (n / 2)، سمت چپ نصف و نیمه سمت راست، به علاوه O (n) است، که احتمالا نفر مراحل، اما شاید اگر من با استفاده از دو انگشت، آن را دو برابر بسیاری از مراحل، اما این خطی است. این از چند مرحله است که یک عامل از n است، بنابراین ما ممکن است این به عنوان این را بیان کنند. و این جایی است که در حال حاضر ما را به زدن توپ پشت کتاب درسی ریاضی دبیرستان ما ما که عود در نهایت هستید به پایان می رسد تا برابر این، n بار ورود نفر، اگر شما در واقع از ریاضی به طور رسمی تر. به طوری که فقط دو دیدگاه است. یکی عددی با سخت رمزی به عنوان مثال نماینده با استفاده از هشت اعداد، و تر نگاه کلی در ما چگونه وجود دارد. اما آنچه واقعا جالب اینجا است، باز هم، این مفهوم از دوچرخه سواری. من با استفاده از حلقه for است. من نوع تعریف چیزی از نظر خود، نه تنها با این تابع ریاضی، بلکه از نظر این شبه کد. این شبه کد بازگشتی است در آن دو از خطوط آن اساسا گفتن از آن به استفاده خود را برای حل کوچکتر مشکل با اندازه کوچکتر، و پس از آن دوباره و دوباره و دوباره تا ما آن را بریدن را به این به اصطلاح حالت پایه. بنابراین اجازه دهید در واقع رسم قانع کننده تر را، به دور از این به شرح زیر است. اجازه بدهید من به gedit بروید و یک در برخی از کد منبع امروز نگاه کنید، به ویژه در این مثال در اینجا. سیگما 0، که ظاهرا می افزاید: اعداد یک تا n. بنابراین اجازه دهید ببینیم که چه چیزی است آشنا و نا آشنا است. اول ما یک زن و شوهر از شامل، بنابراین هیچ چیز جدیدی وجود دارد. نمونه اولیه. من مبهم و مه آلود کمی در هستم این بعد از چند روز، اما چه چیزی به ما می گویند نمونه اولیه از یک تابع است؟ رسید [نامفهوم]. SPEAKER 1: آن چیست؟ رسید ما آن را اعلام خواهد کرد. SPEAKER 1: ما آن را اعلام خواهد کرد. بنابراین شما در حال آموزش صدا کردن، با سلام، در واقع اجرای این هنوز، اما جایی در این فایل، احتمالا، در حال رفتن به یک تابع به نام چه؟ سیگما. و این فقط یک وعده این است که آن را به شبیه به این. این رفتن را به یک عدد صحیح به عنوان input-- و I می تواند صریح تر و می گویند اعضای هیات نفر بشکل آن را رفتن به بازگشت به یک int، اما به معنی نقطه و ویرگول، میلی متر، من در اطراف دریافت به اجرای این کمی بعد. باز هم، صدای جرنگ جرنگ گنگ است. آن را تنها رفتن به دانستن آنچه که شما آن را به بالا به پایین، بنابراین ما نیاز به حداقل می دهد این یک اشاره از چه چیزی آمده است. حالا اجازه دهید نگاهی به اصلی نگاه کنید. اجازه دهید به پایین حرکت اینجا و ببینید که چه اصلی در حال انجام است. این که به مدت طولانی از یک تابع نیست، و در واقع ساختار اینجا آشنا است. من اعلام می کنم یک متغیر نفر، و پس از آن I اذیت کردن کاربر دوباره و دوباره برای یک عدد صحیح مثبت با استفاده از getInt، و تنها خروج از این حلقه یک بار که کاربر پیروی کرده است. آیا در حالی که، ما به استفاده می شود اذیت کردن کاربر در آن راه. در حال حاضر این جالب است. من اعلام می کنم یک int به نام "پاسخ دهد." من آن را مقدار بازگشتی اختصاص از یک تابع به نام "سیگما." من نمی دانم آنچه را که انجام می دهد، اما من به یاد داشته باشید اعلام آن یک لحظه پیش. و سپس من در عبور ارزش است که کاربر تایپ در، ن، و پس از آن من پاسخ گزارش. خب اجازه دهید به عقب حرکت برای فقط یک لحظه. اجازه دهید پیش بروید به این شاخه، را سیگما 0، و در واقع این برنامه را اجرا کنید و ببینید چه اتفاقی می افتد. بنابراین اگر من جلو بروید و اجرا این برنامه، ./sigma-0، و من در یک نوع مثبت عدد صحیح مانند دو، سیگما، به عنوان نماد یونانی به معنی این است که فقط، رفتن به اضافه کردن تمام اعداد از صفر در تا دو. بنابراین 0 به علاوه 1 به علاوه 2. بنابراین این امید باید من 3 را. که همه آن را انجام می دهید. و به طور مشابه، اگر من این دوباره اجرا و من آن را به تعداد سه، که 3 به علاوه 2، به طوری که 5، به علاوه 1 باید به من 6 داد. و پس از آن اگر من واقعا دیوانه و شروع به تایپ اعداد بزرگتر، باید آن را به من بدهد مبالغ بزرگتر و بزرگتر. به طوری که تمام است. پس چه سیگما چگونه است؟ خوب، آن را بسیار آسان می کند. این که ما چگونه ممکن است اجرا این کار را برای دو هفته گذشته. "اعضای هیات" در حال رفتن به نوع بازگشت. سیگما به نام است، و آن طول می کشد متر متغیر به جای n است. من آنرا تغییر خواهیم داد بالا. سپس این فقط یک چک سلامت عقل است. ما در یک لحظه ببینید که چرا. حالا من اعلام متغیر دیگر، نتیجه، مقداردهی اولیه به صفر است. سپس من از این باید برای حلقه تکرار، ظاهرا برای وضوح، از من = 1 تا = متر است که هر کاربر در تایپ، و پس از آن من افزایش مجموع مثل این. و سپس بازگشت از مجموع. بنابراین زن و شوهر از سوالات. یکی، من در نظر من که این ادعا اجتناب از خطر حلقه بی نهایت. چرا در یک عدد منفی عبور القاء، به طور بالقوه، حلقه بی نهایت؟ رسید هرگز متر برسد. SPEAKER 1: هرگز متر برسد. اما متر است گذشت در، پس بیایید یک مثال ساده را در نظر بگیرید. اگر متر در توسط گذشت کاربر به عنوان یکی منفی. صرف نظر از اصلی. بخش اصلی ما را از محافظت این بیش از حد، بنابراین من فقط هستم که واقعا مقعد با سیگما به همچنین اطمینان حاصل کنید که ورودی نمی تواند منفی باشد. بنابراین اگر متر منفی است، چیزی شبیه به یک منفی است. چه اتفاقی خواهد افتاد؟ خوب، من در حال رفتن به رسیدن به یک مقداردهی اولیه، و پس از آن من در حال رفتن به کمتر یا مساوی متر؟ پایه های. این was-- را اجازه نمی، اجازه دهید این داستان هیچ کس. من پرسیدن این سوال نیست، زیرا خطر که من اشاره به هستم است اتفاق نخواهد افتاد چون من است همیشه می شود OK than-- بیشتر، من این سوال روند. OK. اجازه دهید فقط در این بخش تمرکز کنید. چرا من اعلام برخی از خارج از حلقه؟ توجه در خط 49 من داخل حلقه اعلام کرد من، اما آنلاین 48 من برخی از خارج اعلام کرد. آره. رسید [نامفهوم]. SPEAKER 1: مطمئنا. بنابراین در درجه اول من قطعا نمی می خواهم به اعلام و مقداردهی اولیه جمع به صفر داخل حلقه در هر تکرار، چرا که این به وضوح می شکست هدف از جمعبندی اعداد. من حفظ تغییر ارزش، به صفر. و همچنین، آنچه که دیگر محرمانه تر دلیل این تصمیم همان طراحی؟ آره. رسید [نامفهوم]. SPEAKER 1: دقیقا. من می خواهم به آن دسترسی داشته باشید خارج از حلقه بیش از حد در خط؟ در 53. و بر اساس قانون ما از انگشت شست از یک زن و شوهر از سخنرانی پیش، متغیرهای مورد نظر، واقعا، به آکولاد که آنها را در بر نمیگیرد. بنابراین اگر من جمع در داخل اعلام نشده از این آکولاد خارجی، من می توانم آن را در خط 53 استفاده کنید. به عبارت دیگر، اگر من اعلام کرد مجموع در اینجا، و یا حتی در داخل برای حلقه، من می توانم آن را در 53 دسترسی پیدا کنید. متغیر به طور موثر می رفته است. بنابراین زن و شوهر از دلایل وجود دارد. اما در حال حاضر اجازه بازگشت و ببینید چه اتفاقی می افتد. بنابراین سیگما به نام می شود. این تا 1 به علاوه 2 یا 1 به علاوه 2 اضافه می کند به علاوه 3، و پس از آن ارزش می گرداند، فروشگاه آن را در پاسخ، و تابع () printf در اینجا به همین دلیل است که من از دیدن بر روی صفحه نمایش. بنابراین این چیزی است که ما را تکرار تماس بگیرید رویکرد، که در آن تکرار تنها به معنای استفاده از یک حلقه. برای حلقه، یک حلقه در حالی که، آیا در حالی که حلقه، فقط انجام کاری دوباره و دوباره و دوباره. اما سیگما نوع یک تابع شسته و رفته در است که من می توانم آن را متفاوت اجرا می کنند. آنچه در مورد این که فقط به نوع سرد، اجازه دهید من واقعا خلاص شدن از شر از بسیاری از حواس پرتی چرا که این تابع واقعا بسیار ساده است. تراشیدن آن را اجازه دهید فقط به چهار خط اصلی خود را و خلاص شدن از شر همه نظرات و آکولاد. این نوع از ذهن دمیدن است اجرای جایگزین. خوب، شاید ذهن دمیدن نیست، اما این نوع از جذاب، همه حق است، در این نگاه بسیار موجز است. تنها با چهار خط کد، من برای اولین بار این چک سلامت عقل داشته باشد. اگر متر کمتر از یا مساوی است صفر، سیگما معنا ندارد. این تنها قرار است به در می شود این مورد برای اعداد مثبت، بنابراین من فقط رفتن به بازگشت به صفر خودسرانه به طوری که ما حداقل برخی از به اصطلاح حالت پایه. اما در اینجا از زیبایی است. تمامی این ایده، با اضافه کردن اعداد از 1 تا n یا m در این مورد، می توان با نوع عبور جفتک انداختن انجام می شود. خوب، از مجموع 1 متر است؟ خوب، شما می دانید چه؟ این همان است که در مجموع متر به علاوه مبلغ 1 به m منهای 1. خوب شما می دانید چه؟ سیگما از متر منهای 1 چیست؟ خوب، اگر شما نوع از این را دنبال منطقی، آن را به همان متر منهای 1 به علاوه سیگما از متر منهای 2. بنابراین شما می توانید نوع just-- این مثل است، اگر شما فقط هستید تلاش برای آزار یک دوست و آنها به شما یک سوال بپرسم، شما نوع با یک سوال پاسخ می دهند، شما می توانید نوع نگه عبور جفتک انداختن. اما آنچه مهم این است که اگر شما در حفظ و ساخت سوال کوچکتر و کوچکتر و کوچکتر، شما درخواست نیست که چه سیگما است از نفر، چه سیگما از است نفر، چه سیگما از n است؟ شما می گی چه سیگما از n، چه سیگما است از n منهای 1، چه سیگما از 2 نفر منفی است؟ در نهایت به سوال شما است که برای تبدیل شدن به چه؟ سیگما از یک یا چیست صفر، برخی از ارزش بسیار کوچک، و به محض اینکه شما دریافت که، دوست شما، شما نمی خواهید به درخواست سوال دوباره همان، شما فقط رفتن به می گویند، آه آن صفر است. ما در حال بازی انجام این نوع بازی های دوره ای احمق. بنابراین بازگشت عمل در برنامه نویسی است یک تابع که خود را. این برنامه، زمانی که وارد شده و اجرا شود، می باشد رفتن دقیقا به همان شیوه رفتار، اما آنچه که مهم این است که در داخل از یک تابع به نام سیگما، یک خط از کد که در آن وجود دارد ما خودمان خواستار، که به طور معمول بد باشد. به عنوان مثال، اگر من برای اولین بار وارد این، پس sigma-- را را سیگما 1 ./sigma-1. عدد صحیح مثبت، لطفا، 50 1275. پس چه تابع به نظر می رسد شود، بر اساس یک آزمون، درست است. اما اگر من یک کمی خطرناک و حذف به اصطلاح حالت پایه، و فقط می گویند، خوب من فقط ساخت این پیچیده تر از آن است. بیایید محاسبه سیگما با در نظر گرفتن متر و سپس با اضافه کردن در سیگما از یک متر منهای؟ خوب، آنچه در اینجا اتفاق می افتد؟ اجازه دهید به زوم کردن. اجازه دهید برنامه کامپایل مجدد، آن را ذخیره کنید، آنرا کامپایل مجدد برنامه، و پس از آن آماده ./sigma-1 زوم کردن در، عدد صحیح مثبت را وارد کنید لطفا، 50. چگونه بسیاری از شما در حال حاضر به نم پس دادن به دیدن که؟ OK. بنابراین این اتفاق می افتد می تواند برای تعدادی از دلایل، و رک و پوست کنده این هفته ما در مورد به شما بیشتر از آنها را. اما در این مورد، سعی کنید به همین دلیل به عقب آنچه ممکن است در اینجا اتفاق افتاده است؟ گسل تقسیم بندی، ما گفت آخرین زمان، اشاره به بخشی از حافظه است. اتفاق بدی افتاده است. اما آنچه در آن بود مکانیکی که رفت چپ چپ در اینجا به دلیل حذف من از این به اصطلاح حالت پایه، که در آن I یک مقدار سخت رمزی می گردد؟ شما چه فکر میکنید مشکلی پیش آمد؟ آره. رسید [نامفهوم]. SPEAKER 1: آه. سوال خوب. بنابراین به اندازه تعداد بود که من جمعبندی آنقدر بزرگ است که آن را بیش از اندازه فضای حافظه است. ایده خوبی است، اما اساسا رفتن به علت سقوط. که ممکن است سرریز عدد صحیح شود، که در آن بیت فقط تلنگر بیش از و پس از آن ما به اشتباه واقعا بزرگ تعداد برای مانند یک عدد منفی، اما این به خودی خود یک تصادف ایجاد نمی کند. از آنجا که در پایان از روز بین المللی است که هنوز هم 32 بیت. شما به رفتن نیست به طور تصادفی سرقت کمی 33. اما فکر خوب است. آره. رسید [نامفهوم]. SPEAKER 1: روش هرگز در حال اجرا متوقف می شود، و در واقع آن خود را دوباره می خواند و دوباره و دوباره و دوباره و دوباره، و هیچ یک از آن دسته از توابع همیشه پایان چرا که خط خود را تنها از کد دوباره و دوباره می خواند themself و دوباره. و چیزی که واقعا اتفاق می افتد، و در حال حاضر ما می توانید نوع از این رسم pictorially. اجازه بدهید بیش از رفتن به یک تصویر برای فقط یک لحظه. این یک عکس است، که در نهایت گوشت از با جزئیات بیشتر، از چه خبر است در داخل حافظه کامپیوتر شما. و معلوم است که در پایین این تصویر چیزی به نام پشته است. این یک تکه از است حافظه، یک تکه از RAM، این فقط استفاده هر زمان یک تابع نامیده می شود. هر بار که شما، یک برنامه نویس، فراخوانی تابع، سیستم عامل، مانند سیستم عامل مک، ویندوز و یا لینوکس، کاغذ برداشته دسته ای از بایت، شاید یک چند کیلوبایت، شاید چند مگابایت حافظه، آنها را دست به شما، و سپس اجازه می دهد شما عملکرد خود را با استفاده از اجرا هر متغیر نیاز دارید. و اگر پس از آن دیگر تماس بگیرید تابع و تابع دیگر، شما قطعه دیگری از حافظه به و تکه دیگری از حافظه است. و در واقع، اگر این سینی های سبز از آننبرگ نشان داد که حافظه، این چیزی است که برای اولین بار اتفاق می افتد زمانی که شما تابع سیگما تماس بگیرید. این مانند قرار دادن یک سینی شبیه به این در چه در ابتدا پشته خالی است. اما پس از آن در صورتی که سینی خود را خواند، پس به صحبت، تماس از نمونه های دیگر از سیگما، که مانند درخواست سیستم عامل، آه، نیاز به یک حافظه کمی بیشتر، من که به. و سپس آن را می شود در در بالای انباشته شده است. اما چه کلیدی در اینجا این است که سینی برای اولین بار است که هنوز هم وجود دارد، چرا که او با استناد به این سینی دوم. در حال حاضر در عین حال، سیگما سیگما تماس بگیرید، که مانند درخواست برای حافظه بیشتر است. می شود در اینجا انباشته شده است. سیگما سیگما تماس، که دیگر سینی می شود که در اینجا انباشته شده است. و اگر شما در حفظ و انجام این کار، در نهایت، نوع نقشه این تصویری به نمودار، آنچه با پشته سینی اتفاق می افتد؟ این است که به بیش از مبلغ از حافظه کامپیوتر شما است. و به محض این سینی سبز بیش از خط افقی بالا پشته و بالاتر از آن کلمه پشته، که ما را به در آینده، که یک چیز بد است. پشته های مختلف است بخشی از حافظه، و اگر شما اجازه دهید این سینی شمع و شمع در، شما به بیش از بخش خود را از حافظه، و یک برنامه است که در واقع رفتن به سقوط. در حال حاضر به عنوان یک به کنار، این ایده از بازگشت، در نتیجه، به وضوح می توان به مشکلات منجر شود، اما این لزوما چیز بدی نیست. از آنجا که در نظر است، پس از همه، how-- و شاید این طول می کشد برخی از مورد استفاده قرار گرفتن به --how زیبا و یا چگونه ساده که اجرای سیگما بود. و ما قصد داریم به استفاده از بازگشت همه که بسیار در CS50، اما در CS51، و واقعا هر کلاس که در آن ساختمان داده شما دستکاری مانند درختان و یا درختان خانواده، که برخی از سلسله مراتب، آن را فوق العاده، فوق العاده مفید است. در حال حاضر، به عنوان یک به کنار، به طوری که شما به عنوان مشتاق دانشمندان کامپیوتر با برخی از گوگل آشنا هستند جوک ها در داخل، اگر شما به گوگل و شما نگاه کنید تا آنچه که تعریف، می گویند، بازگشت، وارد کنید. اوهو. از سوی دیگر، من کشیده تا چند. این 10 دقیقه بود تعویق این صبح است. اگر شما هم گوگل "چپ چپ" اطلاع با کج کردن سر خود را slightly-- و پس از آن این است که شاید بی رحم تر از همه از کسی صرف مانند روز خود را اجرای این چند سال ago-- در آمده است. اوه، wait-- که یک اشکال است. بنابراین در حال اجرا بر روی یکی از بزرگترین وب سایت های جهان این تخم مرغ عید پاک کمی احمق هستند. آنها احتمالا مصرف تعداد کوچک اما با اهمیت خط کد فقط به طوری که ما می توانیم داشته چیز کمی سرگرم کننده است که می خواهم. اما حداقل در حال حاضر شما برخی از این جوک ها در داخل. حالا اجازه دهید نگاهی به برخی از سفید نهفته است که ما شده است گفتن از اواخر سال، و شروع به پوست کندن پشت برخی از لایه های فنی به طوری که شما واقعا درک آنچه در جریان بوده است و شما می توانید درک برخی از تهدید، مانند Shellshock، که در حال حاضر آغاز شده برای تبدیل شدن به در خط مقدم از همه توجه، حداقل در رسانه ها. بنابراین در اینجا یک تابع بسیار ساده است که هیچ چیز باز می گردد، از درجه اعتبار ساقط. نام آن مبادله است. این در دو متغیر طول می کشد و آن را برمی گرداند هیچ چیز نیست. طول می کشد در a و b. بنابراین تظاهرات سریع است. ما این را آورده است. ما همچنین ممکن است کمی طول بکشد شکستن در اینجا برای یک لحظه و یک چیزی کمی به نوشیدن. اگر کسی نمی خواهد ذهن پیوستن من در اینجا برای فقط یک لحظه. چگونه در مورد شما در پیراهن زرشکی؟ بیا تا. فقط کافی است امروز. با تشکر از شما، هر چند. همه حق است، و ما باید آینده که اینجا هستید؟ نام شما چیست؟ SPEAKER 4: لورا. SPEAKER 1: لورا. بیا تا. بنابراین لورا، چالش بسیار ساده است. خوب برای دیدار با یو. خوب. پس ما یک شیر در اینجا و ما باید برخی از آب پرتقال در اینجا و برخی از فنجان است که ما امروز از آننبرگ اقتباس شده است. SPEAKER 4: قرض گرفتن. SPEAKER 1: و رفتن به جلو بروید و شما نیم لیوان از این می دهد. خوب. و ما به شما نیم را یک لیوان شیر. اوه، و فقط به طوری که شما می توانید به یاد داشته باشید آنچه که این مانند بود، من به یاد آورد این بالا و در امروز. خوب. اگر شما نمی خواهد ذهن، بیایید ببینید، ما می توانید آنها را بر روی عینک خود را قرار داده اگر شما می خواهید. این خواهید بود جهان را از چشم لورا است. خوب. بنابراین هدف خود را، با توجه به دو فنجان مایع در اینجا، شیر و آب پرتقال، است مبادله دو مقدار طوری که آب پرتقال می رود به فنجان شیر و شیر می رود به فنجان آب پرتقال. SPEAKER 4: آیا من یک فنجان دیگر؟ SPEAKER 1: من خیلی خوشحالم شما را خواسته است، هر چند آن را فیلم بسیار بهتر شده است اگر از شما خواسته نشده بود. اما بله، ما می توانیم شما یک سوم ارائه فنجان که خالی است، البته. خوب. بنابراین محتویات وجود دارد مبادله. بسیار خوب. بسیار خوب است. شما در انجام این کار دقت قابل ملاحظه. و گام به گام سه. خوب. عالی. دور بزرگ از کف زدن خوب خواهد بود برای لورا. خوب. ما یک هدیه فراق کمی برای شما، اما اجازه دهید من از این. از شما بسیار سپاسگزارم. بنابراین یک مثال ساده، هر چند، تا نشان دهد که اگر شما می خواهید به مبادله محتویات دو ظروف، یا اجازه دهید آنها را متغیر تماس بگیرید، شما نیاز به ذخیره سازی موقت به مرحله یکی از مطالب در تا که شما در واقع می تواند انجام مبادله. پس در واقع، این کد منبع اینجا در C نماینده دقیقا همان است که است. اگر آب پرتقال و شیر بود ب بود، و ما می خواستیم به مبادله دو، شما می توانید از چیزی خلاق را امتحان کنید با ریختن یک به دیگر، اما احتمالا نه پایان دادن به همراه دارد. و به این ترتیب ما با استفاده از یک فنجان، تماس سوم آن TMP، T-M-P توسط کنوانسیون، قرار داده و محتویات OJ در آن، پس از مبادله یک فنجان، سپس OJ به قرار فنجان اصلی، در نتیجه دستیابی به، دقیقا به عنوان لورا بود، مبادله. بنابراین اجازه دهید کار را انجام دقیقا همان است که. اجازه بدهید من به جلو و باز کردن یک مثال که در واقع به نام "هیچ مبادله، "به خاطر این است که به سادگی انجام می شود که شما ممکن است فکر می کنم. بنابراین در این برنامه، توجه کنید که من با استفاده از stdio.h، دوست قدیمی ما. من نمونه برای مبادله کردن وجود دارد، که به معنی اجرای آن است احتمالا به پایین، و اجازه دهید ببینیم که چه چیزی این اصلی برنامه رفتن به برای من انجام دهد. من برای اولین بار اعلام اعضای هیات ایکس می شود یک و y هوشمند می شود دو. پس از آن به عنوان OJ فکر می کنم و شیر بود. و بعد من فقط باید یک تابع () printf گفت ایکس این است و y این است، فقط تا من می توانم بصری ببینید چه خبر است. سپس من تابع () printf اند ادعا که من مبادله دو، و پس از آن من نسخه قابل چاپ کردن ادعا می کنند که آنها در زمین عوض میکنه، و من نسخه قابل چاپ کردن x و y است. بنابراین در اینجا در مبادله است دقیقا همان چیزی است لورا انجام داد، و دقیقا همان چیزی است که ما در دیدم صفحه نمایش یک لحظه پیش. بنابراین اجازه دهید پیش بروید و است بشدت نا امید کرد. را بدون مبادله و اجرا بدون مبادله، زوم بر روی خروجی است. را وارد کنید * 1 است، سالانه 2 است، مبادله عوض میکنه. x است هنوز هم 1 و y است که هنوز هم 2. بنابراین حتی اگر، رک و پوست کنده، این به نظر می رسد دقیقا مانند، البته از لحاظ فنی بیشتر، چه لورا انجام داد، به نظر نمی رسد به کار می کنند. پس چرا این طور است؟ خب، معلوم است که هنگامی که ما نوشتن یک برنامه مثل این است که هر دو اصلی، برجسته در اینجا، و سپس تابع دیگر، مانند مبادله، برجسته در اینجا، که آن را خواند، جهان به نظر می رسد چیزی کمی مانند این سینی یک لحظه پیش. هنگامی که برای اولین بار از اصلی می شود به نام، که مانند درخواست سیستم عامل برای یک بیت از حافظه را برای هر محلی متغیر مانند x و y که اصلی است، و آنها در نهایت سمت راست وجود دارد. اما اگر تماس های اصلی، مبادله و اصلی عبور می کند به مبادله دو آرگومان، a و b، آب پرتقال و شیر، آن را دوست ندارم توزیع آب پرتقال و شیر به لورا. چه یک کامپیوتر انجام می دهد، آن است که عبور می کند نسخه از آب پرتقال و نسخه هایی از شیر به لورا، به طوری که چه چیزی در نهایت در داخل این سینی یکی از ارزش و دو، و یا OJ است و شیر، اما رونوشت آن، به طوری که در این نقطه در داستان وجود دارد، OJ و شیر در هر یک از این سینی است. یک دو یک و وجود دارد در هر یک از این سینی، و تابع swap در واقع کار می کند. این آنها را مبادله در داخل از دوم بالاترین سینی، اما این مبادله هیچ تاثیری. و بر اساس تنها برخی اصل اساسی ایم در مورد قبل صحبت کردیم، و در واقع فقط چند دقیقه پیش، چه ممکن است توضیح دهد که چرا در حال تغییر a و b در داخل از مبادله هیچ تاثیری بر x و y، حتی اگر I x و y به تابع swap منتقل می شود. کلمه کلیدی در اینجا است که چه ممکن است به سادگی توضیح دهید؟ من فکر می کنم من آن را در اینجا شنیده؟ رسید بازگشت. SPEAKER 1: بازگشت؟ نه بازگشت. اجازه دهید با یک دیگر بروید. آن چیست؟ رسید [نامفهوم]. SPEAKER 1: OK، بنابراین ما می تواند return-- کار بازگشت در داستان، اما توضیح حتی ساده تر وجود دارد. رسید محدوده. SPEAKER 1: محدوده. من دامنه را. بنابراین دامنه، به یاد داشته باشید که در آن x و y را با یکدیگر اعلام کرد. آنها در داخل اعلام کرد از اصلی سمت راست در اینجا. a و b، در عین حال، می به طور موثر اعلام کرد در داخل از مبادله، کاملا در آکولاد اما هنوز هم در منطقه به طور کلی از مبادله. و به این ترتیب در واقع، a و b تنها در این سینی وجود دارد از آننبرگ، این بخش دوم از کد. بنابراین ما در واقع در حال تغییر کپی، اما که واقعا همه که کمک کننده نیست. بنابراین اجازه دهید نگاهی به این سطح کمی پایین تر است. من قصد دارم برای رفتن به به راهنمای منبع، و من قصد دارم به اولین زوم در اینجا، و فقط برای تایید است که من در این هستم پنجره ترمینال بزرگتر، برنامه هنوز هم مانند آن رفتار. حال فرض کنید که این عمدی نیست. واضح است که من می خواستم مبادله به کار، پس آن را مانند یک اشکال را احساس می کند. حالا من می تواند شروع به اضافه کردن یک بسیاری از تابع () printf به کد من، چاپ کردن ایکس در اینجا، سالانه بیش از در اینجا، اینجا، اینجا ب. اما رک و پوست کنده، که احتمالا چه شما بوده ام به چند هفته انجام می دهند در حال حاضر، در ساعات اداری و در خانه در هنگام کار در psets تلاش برای پیدا کردن برخی از اشکالات. اما شما خواهید دید، اگر شما در حال حاضر نیست، این مشکل مجموعه سه به شما معرفی به فرمان به نام GDB، که در آن GDB، دیباگر GNU، به خودی خود دارای یک دسته کامل از ویژگی های است که می تواند در حقیقت اجازه دهید ما موقعیت را درک مثل این، اما compellingly بیشتر، حل مشکلات و پیدا کردن باگ. من می خواهم به انجام این کار. به جای ./noswap، من به جای هستم رفتن به اجرا ./noswap GDB. به عبارت دیگر، من قصد دارم به اجرا من برنامه در پارتی، دوست جدید ما امروز. من قصد دارم به اجرا من noswap برنامه در داخل از این برنامه دیگر به نام GDB، که یک دیباگر، که برنامه ای است که طراحی شده برای کمک به است شما انسان پیدا کردن و حذف اشکالات. بنابراین اگر من ضربه اجرای در اینجا، وجود دارد مقدار بی رحم از متن که شما واقعا هرگز به عنوان خوانده شده. این در اصل یک حواس پرتی از اعلان، آن من قصد دارم به کنترل-L ضربه برای به دست آوردن در بالای وجود دارد. این اعلان GDB است. اگر من می خواهم برای اجرای این برنامه در حال حاضر، عنوان این ورق کمی تقلب در امروز اسلاید نشان می دهد، اجرای اول فرمان می دهد که به معنای معرفی. و من فقط رفتن به تایپ اجرا تا اینجا داخل GDB، و در واقع این برنامه من زد. در حال حاضر برخی اضافی وجود دارد خروجی از صفحه نمایش شبیه به این، اما GDB تنها بودن مقعد است و به ما می گوید چه خبر است. شما واقعا باید نگران باشید در مورد این جزئیات در حال حاضر. اما نکته واقعا جالب در مورد GDB، اگر من این کار را again-- کنترل-L پاک screen-- اجازه بدهید من بروم جلو و از نوع "شکستن اصلی،" نتیجه، وقتی که من آمار را وارد کنید، تنظیم چه به نام نقطه شکست در noswap.c، خط 16، که جایی است که GDB نمیفهمد برنامه من در واقع است، تابع من در واقع است. این ما در حال حاضر چشم پوشی اما این آدرس است در حافظه به طور خاص از این تابع. بنابراین در حال حاضر وقتی که من نوع اجرا، متوجه چه سرد است. برنامه من می شکند در خط من GDB گفت به توقف اعدام در. بنابراین من لازم نیست که در حال حاضر کد را تغییر، اضافه کردن برخی از تابع () printf است، کامپایل مجدد آن، مجدد آن، تغییر، اضافه کردن برخی از تابع () printf را، آن را ذخیره کنید، آنرا کامپایل مجدد آن، آن را اجرا کنید. من فقط می تواند از طریق برنامه من راه رفتن گام به گام به گام با سرعت انسانی، در نوع اینتل در داخل از سرعت آن. بنابراین در حال حاضر متوجه این خط به نظر می رسد در اینجا، و اگر من به عقب به برنامه من در gedit، توجه کنید که که در واقع خط اول از کد. در خط 16 وجود دارد در gedit. در خط 16 وجود دارد در GDB، و حتی هر چند این رابط سیاه و سفید نزدیک به نه به عنوان کاربر دوستانه، این بدان معنی است که 16 خط اجرا نشده است نشده است، اما آن را در مورد به باشد. پس در واقع اگر من نوع چاپ ایکس، نه تابع () printf، فقط چاپ ایکس، من برخی از ارزش های ساختگی وجود دارد از صفر، چون ایکس هنوز مقدار دهی اولیه نشده است. من می خواهم به نوع بعدی، و یا، اگر شما می خواهم به فانتزی، فقط ازت برای آینده. اما وقتی که من نوع بعدی را وارد کنید، در حال حاضر متوجه آن را در حرکت به خط 17. بنابراین منطقی، اگر من اعدام کرده ام خط 16 و من در حال حاضر نوع چاپ ایکس، چه باید مراجعه کرد؟ یک. و در حال حاضر این است مسلما گیج کننده است. 2 $ فقط یک راه فانتزی است، اگر شما می خواهم برای اشاره به آن مقدار بعد، شما می توانید می گویند "دلار امضا دو." آن را مانند یک مرجع به عقب است. اما در حال حاضر، فقط آن را نادیده گرفت. چه جالب است این است که چه چیزی در سمت راست از علامت مساوی. و در حال حاضر اگر نوع I بعد دوباره و چاپ سالانه، من باید 2 را ببینید. من هم اکنون می توانید نسخه قابل چاپ ایکس دوباره، و رک و پوست کنده، اگر من گرفتن کمی گیج به که در آن من هستم، من می توانید لیست برای لیست نوع و فقط برخی از زمینه نگاه کنید به اطراف نقطه من در واقع در هستم. و در حال حاضر من می توانم نوع بعد، و وجود دارد * 1 است. حالا من نوع بعدی. اوه، سالانه 2 است. و دوباره، آن را گیج کننده است، چون خروجی GDB در است که با خروجی خود من commingled. اما اگر شما به خاطر داشته باشید، توسط نظر اجمالی به جلو و عقب در کد شما و یا تخمگذار آن را از طرف توسط شاید طرف، نظر شما ببینید که واقعا من فقط هستم پله از طریق برنامه من است. اما متوجه چه اتفاق می افتد، به معنای واقعی کلمه. در اینجا خط 22 است. اجازه بدهید من بیش از آن، در نتیجه در حال حرکت به 23، و اگر من ایکس در حال حاضر، هنوز هم یکی چاپ کنید. و اگر I سالانه چاپ در حال حاضر، هنوز هم یکی. پس این یک تمرین مفید نیست. بنابراین اجازه دهید این ازنو. اجازه بدهید به عقب برگردد تا بالا و نوع اجرا دوباره. و این گفت برنامه که در حال دیباگ آغاز شده در حال حاضر، از همان ابتدا آغاز شده است. بله، اجازه دهید این را دوباره انجام دهید. و این بار اجازه دهید انجام بعدی، بعد، بعدی، بعد، بعدی، اما در حال حاضر همه چیز جالب است. حالا من می خواهم به مرحله به مبادله، بنابراین من بعد تایپ کنید. من نوع گام، و در حال حاضر متوجه آن به من به خط noswap.c 33 شروع به پریدن کرد. اگر من به بازگشت به gedit، خط 33 است؟ این اولین واقعی خط از کد داخل مبادله. کدام خوب است، چون در حال حاضر من می توانم نوع اطراف بهم زدن و کنجکاو به عنوان به آنچه اتفاق افتاده است واقعا در آن وجود دارد. اجازه بدهید من نسخه قابل چاپ پوشه tmp. ایست. چرا tmp در برخی از دیوانه، ارزش زباله های ساختگی؟ رسید این است مقداردهی اولیه نشده است. SPEAKER 1: این که مقدار دهی نشده است. و در واقع، هنگامی که شما یک برنامه، شما با توجه به دسته کامل از حافظه توسط سیستم عامل است، اما شما اند هر مقدار دهی اولیه نیست، بنابراین هر بیت شما دیدن در اینجا، حتی اگر آن را این منفی دیوانه بزرگ تعداد، فقط بدان معناست که کسانی که باقی مانده از می برخی از استفاده های قبلی که RAM، حتی اگر من ندارد خودم آن مورد نیاز است. بنابراین در حال حاضر من قصد دارم به جلو بروید و نوع بعد، و اگر من در حال حاضر تایپ tmp در چاپ، چه باید مراجعه کرد؟ هر چه ارزش بود، آرگومان اول است، فقط مانند x اول چیزی که گذشت در، بنابراین و x باید چنین باشد، بنابراین چاپ tmp در باید به من یک چاپ. پس چه شما در مجموعه ای مشکل سه آموزش از انواع در GDB است، اما متوجه باشید که این ابتدای کار است از یک نگاه ابزاری است که در واقع خواهد شد به شما کمک کند مشکلات را حل کند بسیار موثر است. آنچه ما در نهایت می رفتن به روز چهارشنبه انجام است شروع به پوست کندن پشت چند لایه و حذف برخی از چرخ آموزش. که چیزی به نام رشته ای که ما برای برخی از زمان استفاده می شود، ما قصد داریم به آرامی گرفتن که دور از شما و شروع به صحبت کردن در مورد چیزی esoterically تر شناخته شده به عنوان کاراکتر *، اما ما قصد داریم برای انجام این کار خوب و به آرامی در ابتدا، حتی اگر اشاره گر، به عنوان آنها نامیده می شود، می تواند برخی از انجام همه چیز بسیار بد اگر مورد آزار قرار گرفته، با نگاه به claymation کمی از دوستان ما نیک Parlante از دانشگاه استنفورد دانشگاه، استاد در کامپیوتر علم که با هم قرار دادن این پیش نمایش از چه چیزی آمده است این چهارشنبه. [VIDEO پخش] -Hey، Binky. از خواب بیدار شوید. این زمان برای اشاره گر سرگرم کننده است. چه که؟ اطلاعات در مورد اشاره گر؟ اوه، بسیار خوب! [END VIDEO پخش] SPEAKER 1: که شما در انتظار در روز چهارشنبه. ما به شما پس از آن را مشاهده کنید. [VIDEO پخش] که البته در حال حاضر، افکار عمیق، توسط Daven Farnham. چرا در حال یادگیری C ما؟ چرا + نه؟ [خنده] [END VIDEO پخش]