[Powered by Google Translate] [بخش 3] [کمتر راحت]
>> [مقابله Hardison] [دانشگاه هاروارد]
>> [این CS50.] [CS50.TV]
>> همه حق است، بیایید شروع کنیم.
هفته 4 از CS50 خوش آمدید.
اگر شما بچه ها باز کردن یک مرورگر وب و باز کردن pset 3،
تقلا با CS50، ما قصد داریم به شروع می شود
از طریق بخش از سوالات وجود دارد.
درست مثل هفته گذشته، ما مشغول به کار در CS50 فضاهای،
اگر شما هم می خواهید که تا جلو و به عنوان خوب،
و اگر شما به جلو بروید و این لینک که من در اینجا در بالای صفحه مراجعه کنید.
این زمان برای شروع است.
ما باید برنامه سلام ما در اینجا. هیچ چیز دیوانه.
یکی از اولین چیزهایی که من می خواهم امروز با شما بچه ها انجام شده است، بیش از یک راه حل چند
به مشکل تنظیم 1، نوع راه حل های به عنوان مثال،
بنابراین شما می توانید احساس برای چه نوع از کارکنان کد نوشتن،
چه نوع دیگر از دانش آموزان کد نوشتن،
و یک نگاه در آن شما را به خاطر من می دانم که آن را عجیب و غریب
هنگامی که یک راه حل برای مشکل مجموعه ارائه و دریافت نظرات شما
در نسخه خود را، اما گاهی اوقات آن را مفید ببینید که چگونه مردم دیگر آن را انجام داد،
به خصوص آنهایی که خوب به دنبال.
در اکثر موارد، من واقعا با راه حل هایی که شما بچه ها تحت تأثیر قرار گرفت.
من هنوز به دنبال آغاز 2S مجموعه مشکل است، اما اگر آنها چیزی مانند اول،
آن را به معنای هیچ چیز اما همه چیز خوب است.
>> اگر شما در تجدید نظر من نگاه کنید، اجازه دهید شروع تمام راه را در ویرایشهای 1،
و ما در حال رفتن به یک نگاه سریع در یک راه حل ماریو.
اگر شما را بکشد تا این برنامه است که ما قصد داریم به ارائه درست باشد.
مسائل مربوط به صحت با این مشکلات وجود ندارد، بلکه
ما می خواهیم به بحث کمی در مورد مسائل مربوط به طرح های مختلف
که در اینجا مورد استفاده قرار گرفت.
یکی از چیزهایی که جالب بود در مورد راه حل
این است که آن را با استفاده از این ساختار جدید به نام پوند تعریف،
گاهی اوقات نیز به عنوان یک مخلوط تعریف نامیده می شود.
اجازه بدهید من زوم بر روی آن است.
# تعریف این اجازه می دهد تا شما را به نام به این اعداد را در برنامه شما است.
در این حالت، حداکثر ارتفاع هرم در ماریو
در 23 و به جای قرار دادن 23 در کد
ما را به که به عنوان سخت برنامه نویسی 23 مراجعه کنید -
به جای این به MAX_HEIGHT نام به این تعداد،
به طوری که پایین در اینجا در DO-در حالی که حلقه من
شما در واقع می تواند اشاره به MAX_HEIGHT
به جای قرار دادن شماره 23 شوید.
[دانشجو] استفاده از انجام این کار چیست؟
این یک سوال بزرگ است.
یکی از خوانایی است.
استفاده از با استفاده از این # تعریف خوانایی است.
وقتی که من خواندن این کد، می توانید ببینید چه خبر است.
>> من می توانم در این وضعیت را مشاهده کنید که در اینجا ما در حال آزمایش
برای ارتفاع <0، که ما آن را نیز تعریف
به حداقل ارتفاع یا ارتفاع دقیقه.
مزیت دیگر این است که من پس از آن می توانید خواندن بقیه از خط برای دیدن
که ما نیز بررسی تا اطمینان حاصل کنید که ارتفاع آن بیشتر از حداکثر ارتفاع نیست،
از آنجا که ما در حال رفتن به ادامه در حالی که ارتفاع آن بیشتر از حداکثر ارتفاع.
مزیت دیگر این است که اگر من زوم کمی در اینجا
اگر من برای اجرای این برنامه است و من آن را اجرا کنید، می گویند، با 23 در حال حاضر،
چاپ تمام 23 ردیف تنها می خواهم که.
اما می گویند من می خواستم برای تغییر ارتفاع حداکثر
و در حال حاضر من می خواهم برای محدود کردن حداکثر ارتفاع اهرام
فقط می گویند مردی، که بد بو بود.
# شامل ، # تعریف MAX_HEIGHT،
و اجازه دهید می گویند ما می خواستیم به آن را برابر با 10 است.
در حال حاضر در این نقطه، من تا به حال انجام بود در این مکان آن را تغییر دهید.
من می توانم کد، کامپایل مجدد و در حال حاضر اگر من سعی می کنم و در سال 12 نوع،
آن را دوباره به من تحریک کند.
در این مورد، ما تنها با استفاده از MAX_HEIGHT یک بار.
این است که بدون هیچ زحمتی بزرگ به در
و آن را تغییر دهید در حلقه در حالی که اگر شما نیاز به.
اما در برنامه های که در آن شما در حال اشاره به همان شماره سحر و جادو
بارها و بارها، این # تعریف مکانیسم واقعا مفید
دلیل این که شما فقط آن را در بالای فایل آن را به طور معمول که در آن شما قرار داده و آنها را در یک زمان
و تغییر نفوذ از طریق بقیه از فایل.
>> چیزهای دیگر من می خواستم در این انتساب توجه داشته باشید که من فکر می کنم نگاه واقعا خوب است،
یکی از نامگذاری متغیر بود.
شما اینجا را ببینید که ما داریم متغیر Integer به نام سطر و ارتفاع اصطلاح.
فاصله، هش، این کد را کمی بیشتر قابل خواندن کمک می کند.
باعث می شود که آن را کمی قابل فهم تر آنچه که در واقع در حال رفتن به.
این است که در مقابل با استفاده از، می گویند، نامه های تصادفی
یا فقط شر و ور در دسترس نباشد.
چیزی نهایی من اشاره می کنند این است که در حلقه for،
اغلب این متغیرها تکرارکننده، این شمارنده که شما خود را در حلقه for استفاده،
استاندارد و معمولی به آنها را با هر دو من و سپس J شروع و سپس K
و از آنجا اگر شما نیاز به متغیرهای بیشتر،
و این فقط یک قرارداد است.
هستند بسیاری از کنوانسیون وجود دارد.
آن را در زبان برنامه نویسی استفاده می کنید بستگی دارد.
اما در C، ما به طور معمول با من شروع می شود.
این احساس برای استفاده را ندارد، می گویند، یا ب
با توجه به این وضعیت است.
است که آن را به یکی از این.
اگر شما در حال حاضر جلو و ویرایشهای 2، شما دیگر ماریو،
و این یکی شبیه به یک دیگر است که ما فقط دیدم،
اما آن را نشانی از نوع چیزی از سرد.
اگر ما در این بخش نگاه کنید در سمت راست در داخل داخلی حلقه
آنها با استفاده از برخی از دیوانه به دنبال نحو درست در این خط است.
این یک عملگر سه تایی نامیده می شود.
این بیانیه اگر دیگری منقبض شده را به یک خط است.
وضعیت این بخش در داخل پرانتز است.
این معادل گفت: اگر J <ارتفاع - من - 1.
و پس از آن چه که اگر بلوک خواهد بود فضا
و پس از آن دیگری خواهد بود این #.
این اساسا اختصاص فضا به این متغیر است.
قرار دادن یک فضای در محتویات متغیر بلوک،
اگر این وضعیت را ملاقات نمود، و در صورتی که شرایط آشنا نیست،
سپس متغیر بلوک می شود #.
و پس از آن، البته، به جای ایجاد یک رشته تمام
چاپ و همه چیز در پایان این راه حل چاپ از یکی از شخصیت ها در یک زمان.
خیلی باحال.
>> یکی دیگر از زن و شوهر از چیزهایی که برای نگاه در. خواهیم در حرکت به حریص.
حال اگر ما در حریص نگاه کنید، این راه حل اول
استفاده از این # تعریف بسیار کمی است.
ما باید یک ثابت تعریف شده برای هر یک از شماره های مختلف در این برنامه است.
ما باید یکی برای سنت به ازای هر دلار، یک چهارم، dimes، نیکل و سکه
و در حال حاضر اگر ما در پایین حرکت و خواندن کد،
ما می توانیم یک استاندارد در حالی که حلقه همه چیز چاپ را ببینید.
نوع اصل از این مشکل متوجه شد که
شما نیاز به تبدیل شناور است که شما را از کاربر یک عدد صحیح
به دقت ریاضی، انجام دهید، و دلیل این است که
با اعداد اعشاری، مانند ما در مورد سخنرانی به طور خلاصه صحبت کردیم،
این امکان وجود دارد به دقت نشان دادن هر مقدار در خط شماره
به دلیل بی نهایت بسیاری از ارزش های بین 3 و، می گویند، 3.1 و حتی وجود دارد.
شما می توانید 3.01 و 3.001 و 3.0001، و شما می توانید به رفتن.
به نظر می رسد هر زمان که شما در حال کار کردن با پول، شما اغلب می خواهید آن را تبدیل
را به فرمت عدد صحیح به طوری که شما سکه چیزی ندید و این نوع از مسائل از دست دادن نیست.
انجام آن و گرد کردن کلیدی است.
این راه حل با استفاده از الگوریتم کاملا سر راست است، بزرگ،
که با decremented شماره از سنت باقی مانده، برای اولین بار توسط چهارم،
سپس توسط dimes، سپس با نیکل، سپس با سکه،
و اضافه کردن به تعدادی از سکه ها در هر زمان.
>> یکی دیگر از راه حل است که خواهیم دید، که من زوم کردن و رفتن به نسخه 4،
تا به حال یک شروع بسیار مشابه است، اما به جای آن استفاده از DIV و وزارت دفاع
در اینجا برای محاسبه تعدادی از سنت است.
این، تعدادی از چهارم به تعدادی از سنت تقسیم بر 25 برابر است،
و دلیل این کار این است از آنجا که ما در حال انجام تقسیم عدد صحیح،
پس از آن به دور هر گونه باقی مانده است.
[دانشجو] آیا ما باید جستجو برای نظر دادن؟
این واقعا بستگی دارد.
[دانشجو] شما در حال بیان دیدگاه بیش از کد اینجا ببینید.
آره، و بنابراین فلسفه های مختلف در این دسته وجود دارد.
فلسفه شخصی من این است که کد شما واقعا حقیقت،
مثل کد شما همان چیزی است که در واقع بر روی کامپیوتر اجرا،
و پس کد شما باید به عنوان قابل خواندن است که ممکن است به عنوان نظر بسیاری ضروری نیست.
که گفت، زمانی که شما در حال انجام کارهایی هستند که نوع مشکل ریاضی
یا الگوریتمی، خوب به نظر کسانی که به طوری که شما می توانید آن را
اضافه کردن یک بعد اضافی، یک لایه اضافی به هر کسی که کد شما را بخواند.
در این راه حل، اغلب آنها به نظر به شدت فقط به خاطر اینکه
ما می خواهیم قادر به توزیع آنها را دارند و مردم آنها را انتخاب کنید تا
و خیلی به راحتی آنها را بخوانند.
اما قطعا، من موافق این است که سنگین است.
[دانشجو] اما زمانی که در شک، سنگین تر؟
هنگامی که در شک، سنگین تر است.
گاهی اوقات برخی از افراد خواهد شد 0 بازگشت و یا چیزی شبیه به آن می گویند.
من فکر می کنم که یک نظر مضحک است.
واضح است که چه چیزی اتفاق می افتد.
من لازم نیست که به زبان انگلیسی به من بگویید که.
گاهی اوقات افراد از مسائل مانند "kthxbai!" نوشتن
این نوع از ناز، بلکه نه
است که تفاوت بین نقاط اظهارنظر یا نه نیست.
این نوع از نظرات فقط ولز، ولز.
دانلود.
>> در این نقطه، اجازه دهید شروع به کار بر روی این مشکل مجموعه 3 بخش از سوالات.
اگر شما بچه ها را بکشد تا دوباره،
هفته گذشته، ما در حال رفتن به تماشای شلوارک در این بخش است.
ما شما بچه ها به شما اجازه انجام این کار را در زمان خود شما و صحبت کردن در مورد سوالات.
اما در حال حاضر در این بخش ما قصد داریم به صرف زمان کمی بیشتر
صحبت کردن در مورد کمتر از اصول برنامه نویسی
مثل ما در هفته گذشته، و در عوض، ما در حال رفتن به تمرکز بیشتر در
کمی بیشتر از این نظریه، بنابراین در مورد جستجوی دودویی صحبت و سپس مرتب سازی.
از کسانی که از شما شده اند که همراه با سخنرانی،
کسی می تونه به من یک روکش از آنچه را که تفاوت این است
بین جستجوی دودویی و جست و جو خطی؟
چه خبر است؟ مطمئن شوید.
جستجو جستجوی خطی را از طریق هر عنصر در لیست طبقه بندی شده اند
یکی توسط یکی یک به یک به یک،
و جستجوی دودویی تقسیم به 2 گروه،
چک اگر مقدار کلید است که شما در حال جستجو برای بزرگتر یا کمتر از ارزش نقطه میانی
که شما فقط در بر داشت، و اگر آن را کمتر از آن را با فهرست پایین تر می رود
و پس از آن که دوباره تقسیم، آیا همان تابع
تمام راه را تا زمانی که نقطه میانی می شود برابر با ارزش خود را می یابد.
راست.
>> چرا ما مهم است؟
چرا ما در مورد جستجوی دودویی در مقابل جستجوی خطی صحبت کنید؟
آره.
دودویی است و خیلی سریع تر است، بنابراین اگر اندازه مشکل شما را دو برابر
آن را طول می کشد یک گام دیگر به جای دو برابر بسیاری از.
دقیقا.
این یک پاسخ بزرگ است.
جستجوی خطی بسیار چک کردن یک عنصر در یک زمان،
و همانطور که ما در روز اول سخنرانی را دیدم
وقتی داود رفت و از طریق تلفن کتاب به عنوان مثال خود را
و پاره پاره کردن یک صفحه از دفترچه تلفن در یک زمان
نگه داشته و انجام این کار بارها و بارها و بارها دوباره،
آن را به او واقعا زمان طولانی برای پیدا کردن کسی را در دفترچه تلفن،
، مگر، البته، او برای کسی که به دنبال در آغاز از حروف الفبا.
با استفاده از جستجوی دودویی، شما می توانید خیلی سریع تر،
و آن را فقط دو بار به عنوان سریع و یا 3 بار یا 4 بار به عنوان سریع به عنوان سریع نیست.
اما مشکل می شود کوچکتر و کوچکتر و کوچکتر خیلی سریعتر است.
برای نشان دادن این کار، ما شروع به صحبت کردن در مورد آنچه اتفاق افتاده
هنگامی که ما نوشتن جستجوی دودویی.
مشکل در دست است که اگر من یک آرایه از اعداد،
می گویند، 1، 2، 3، 5، 7، 23، 45، 78، 12،323،
و پس از آن با یک تن از 0s و 9 پس از آن،
ما می خواهیم قادر به کشف کردن واقعا به سرعت چیزی است که در
این مجموعه ای از اعداد است.
من می دانم که این کمی احمقانه به نظر می رسد و کمی ساختگی،
چون در حال حاضر در آن است.
ما یک آرایه است که از عناصر بسیار زیادی در آن ندارد،
و اگر بخواهید یکی از شما را به کشف کردن اینکه آیا یا نه
23 در آرایه، شما می توانید انجام دهید که خیلی سریع
فقط با یک نظر اجمالی در این و به من گفتن بله یا نه.
آنالوگ به نظر تصور کنید اگر این بودند، می گویند،
صفحه گسترده اکسل با 10،000 ردیف، 20،000 ردیف.
البته، شما می توانید فرمان F یا F کنترل و نگاه چیزی را.
شما همچنین می توانید از فیلتر و مسائل جستجو استفاده کنید.
اما اگر شما تا به حال به فایل از طریق خط که خط به خط،
آن را به شما مدت زمان طولانی برای پیدا کردن آن.
این نوع مانند در مثال تلفن، بیش از حد، که در آن
هیچ کس به نظر می رسد را از طریق یک تلفن صفحه یک کتاب در یک زمان.
به طور معمول، آنها را به وسط آن را باز کنید،
و یا در مورد بسیاری از دفترچه تلفن و لغت نامه
شما در واقع آن را در نامه اول کوک،
شما که حرف اول تلنگر و باز و شروع به رفتن را از طریق وجود دارد.
>> به یاد من نام خود را دوباره. >> سام.
سام.
مانند سام گفت که فرایند جستجو خطی خواهد بود واقعا آرام،
و در عوض با جستجوی دودویی، راه این کار این است که
هر زمان که ما از طریق تکرار از الگوریتم ما جستجو
ما قصد داریم به تقسیم لیست در نیم، در اصل،
به دو لیست کوچکتر است.
و سپس در تکرار بعدی حلقه، خواهیم دوباره آن را تقسیم
به لیست های دیگر کوچکتر است.
همانطور که می بینید، مشکل را نگه می دارد در حال کوچکتر شدن و کوچکتر
از آنجا که ما در حفظ و 1/2 دور از لیست هر بار تنها.
چگونه این کار دور است؟
فقط به عنوان یک یادآوری، چیزی است که ما قصد داریم برای انجام این کار، اگر ما یک کامپیوتر
و ما، می گویند، جستجو برای شماره 5 در این لیست
این است که ما می خواهیم یک عدد در وسط را انتخاب کنید.
در وسط این لیست، زیرا 1، 2، 3، 4، 5، 6، 7، 8، 9، 10 عدد وجود دارد،
ما می خواهم شماره انتخاب کنید یا در موقعیت 4 و یا در موقعیت 5،
و ما می خواهم که وسط لیست ما تماس بگیرید.
انتخاب شماره در وسط.
سپس، درست مثل سام گفت، خواهیم تست کنید در صورتی که تعداد برابر است با
به شماره ای که ما می خواهیم و یا شماره مورد نظر ما است.
اگر آن برابر است، و سپس ما آن را در بر داشت. ما پیروز شود.
اگر آن برابر نیست، پس از آن زن و شوهر از موارد وجود دارد.
دو مورد یا تعداد بیشتر از تعدادی است که ما در حال نگاه کردن به،
یا آن را کمتر از است.
اگر آن را بیشتر، ما را به سمت راست حرکت می کند.
و اگر آن را کمتر، ما را به سمت چپ حرکت می کند.
و پس از آن کل فرایند را تکرار
در هر دو نیمه راست یا نیمه چپ از لیست.
>> مشکل اول در بخش امروز است، به شکل
ما در واقع می تواند به بیان این کد C شروع می شود.
ما رو شبه به اینجا.
چه خواهیم شروع به انجام این کار است که من جلو و یک نام تجاری جدید فضا،
صرفه جویی در این نسخه به طوری که در حال حاضر این یادداشت ها را برای بعد،
خواهیم این کار، حذف و پس از آن از مجموعه مشکل کپی و چسباندن
این اطلاعات را به فضای ما، و امیدوارم این بدان شکستن نیست.
کامل.
اگر شما بچه ها همه انجام این کار، کپی و چسباندن این کد را در فضای جدید خود را،
به یک خالی است.
بیایید دانیل. اگر شما کامپایل و اجرای این برنامه، کار می کند؟
>> شماره آن چه گفت؟
این گزارش می گوید کنترل به پایان تابع غیر از درجه اعتبار ساقط می رسد.
آره، پس من را اجرا کنید آن بگذارید.
شما بچه ها دیده می شود پیش از این؟ آیا شما می دانید چه این بدان معنی است؟
خوب، اجازه دهید تشریح این بیت کمی.
این گفت: در file.c در خط 9، ستون 1 خطا، درست مثل شما گفت،
و آن را می گوید که آن را ناشی از هشدار خطا و هشدار دهنده نوع بازگشت است.
به نظر می رسد چیزی در جریان است با نوع بازگشت، که حس می کند.
ما باید یک تابع غیر از درجه اعتبار ساقط است، که بدان معنی است که ما باید یک تابع
که نمی تواند خالی بر نمی گرداند.
یک تابع از درجه اعتبار ساقط است که به نظر می رسد، مثل این:
از درجه اعتبار ساقط صنایع غذایی ()، و آن را از درجه اعتبار ساقط چون نوع بازگشت از درجه اعتبار ساقط است،
به این معنی که اگر ما چیزی در اینجا
مانند بازگشت 1، ما می خواهم یک خطای کامپایلر برای این.
با این حال، ما باید یک تابع غیر از درجه اعتبار ساقط است.
غیر از درجه اعتبار ساقط عملکرد ما در این مورد عملکرد ما جستجو
به دلیل آن است نوع بازگشت بولی.
هنگامی که آن را گفت که کنترل به پایان می رسد از یک تابع غیر از درجه اعتبار ساقط است،
این دلیل است که جستجو می کند بیانیه ای بازگشت ندارد.
هر چیزی از نوع بولی بازگشت نیست.
>> ما می توانیم آن، تعمیر و چه شما بچه ها فکر می کنم
جستجو باید به طور پیش فرض باز گردم؟
چه باید مقدار بازگشتی پیش فرض از جستجو؟
از آنجا که این چیزی است که ما می توانیم در پایان قرار داده است.
شارلوت، آیا شما هر؟
درست یا غلط؟ >> درست یا غلط است.
کدام یک؟
غلط است. نمی دانم.
غلط؟ بیایید آن را امتحان کنید.
چرا به شما می گویند بازگشت غلط؟ که شهود بزرگ است.
[شارلوت] من نمی دانم.
ما قصد داریم برای بازگشت به اشتباه در این مورد به دلیل این خواهد بود که به طور پیش فرض ما
اگر به هر دلیلی این لیست خالی است و یا سوزن
که ما به دنبال آن هستید وجود ندارد.
سپس در پایان، اگر ما انجام نمی گرداند درست قبل از آن در این تابع،
ما همیشه می دانیم که این تابع می گویند نه، آن را در آرایه نیست.
آن را در انبار کاه نیست.
حالا اگر ما را تدوین و آن را اجرا کنید اجازه دهید این نجات بده، بنابراین ما می توانیم آن را به بالا بکشد.
در حال حاضر اگر ما کامپایل و اجرای برنامه، آن را می سازد.
ما دریافت سریع کوچک ما.
اگر من ضربه 4-UH-آه.
آیا این نسخه قابل چاپ نیست از هر چیزی. به نظر می رسد همه چیز به پایان رسید درست است.
ما باید برای پر کردن این سایت شوید.
ما در مورد این الگوریتم در شبه به صحبت کمی پیش.
اجازه دهید به من مراجعه کنید، صرفه جویی در،
و من که الگوریتم بالا بکشد دوباره.
بیایید ضربه این پسر. نه.
آن است که وجود دارد.
چگونه این کار را انجام دهید؟
یک استراتژی خوب برای شروع کردن این کد چه خواهد بود؟
شما باید برای انتخاب یک شماره در وسط.
چگونه می توانم یک عدد را انتخاب کنید در وسط یک آرایه؟
هر گونه پیشنهادات؟
[دانشجو] Strlen تقسیم بر 2.
Strlen تقسیم بر 2. این یکی از بزرگ است.
Strlen با این نسخهها کار با انواع خاصی از آرایه.
چه نوع آرایه؟
آرایه رشته ها، آرایه های شخصیت.
این که مرتب سازی بر اساس همان مفهوم است که ما می خواهیم به درخواست،
اما ما می توانیم strlen استفاده نیست چرا که ما مجموعه ای از کاراکتر ها را ندارد.
ما یک آرایه از نوع داده int است.
اما چه strlen برای ما؟
آیا شما می دانید آنچه در آن برای ما می شود؟
[دانشجو] Strlen می شود تماس با ما طول.
دقیقا، آن را می شود با ما طول.
Strlen می شود طول آرایه برای ما.
>> چگونه است که ما در برنامه ما جستجو دودویی؟
چگونه طول یک آرایه را دریافت می کنید؟
[دانشجو] Strlen؟
شما می توانید طول یک آرایه رشته ای به درستی فرمت شده C با strlen دریافت کنید.
این مشکل، این است که ما می توانم در یک آرایه رشته ای ندارد.
اگر ما نگاهی به این کد، ما باید این آرایه عدد صحیح است.
چگونه ما می دانیم که چه مدت آن است؟
[دانشجو] یک معادل برای نقطه پایانی، مانند L نوع int و یا چیزی وجود دارد؟
به نظر می رسد در واقع وجود ندارد، و بنابراین در یک راه، این است که
یکی از آن چیزهایی است که فقط خوبی در مورد C،
است که هیچ راهی برای به دست آوردن طول یک آرایه وجود دارد
اگر تمام من به تو آرایه است.
دلیل آن را با رشته ها کار می کند، به همین دلیل strlen با این نسخهها کار،
چرا که اگر یک رشته به درستی فرمت شده،
آن خواهد شد که ویژه \ 0 کاراکتر در پایان داشته باشد.
>> شما همچنین می توانید تصور کنید اگر شما یک رشته نادرست فرمت شده
و هیچ \ 0 کاراکتر وجود دارد، و سپس همه چیز کار نمی کند.
[دانشجو] آیا می توانم \ 0 اضافه کنید؟
ما می توانیم در این مورد.
ما می تواند برخی از مرتب کردن بر اساس \ 0
و یا برخی از مرتب کردن بر اساس دلالت شخصیت و سپس به استفاده از آن.
اما این کاملا به کار
به این دلیل که 0 \ یک نوع کاراکتر،
و در اینجا ما باید نوع داده int است.
نکته دیگر این است که اگر ما به استفاده از یک مقدار خاص
مانند -1 به علامت پایان یک آرایه
پس از آن ما می توانیم -1 در آرایه صحیح ما را ذخیره نکرده است.
ما گیر می شود.
به نظر می رسد که تنها راه برای دریافت نمایید
آرایه در C است که در واقع آن را به یاد داشته باشید
هنگامی که شما آن را راه اندازی و سپس آن عبور کند در اطراف با آرایه
به طوری که هر زمان که من یک تابع است که به انجام این کار
در یک آرایه از اعداد صحیح یا شناور و یا دو برابر و یا آنچه که شما،
من هم نیاز به طول آرایه به تابع،
و این دقیقا همان چیزی است که ما انجام داده ایم، در اینجا در تابع جستجو انجام می شود.
اگر شما نگاه کنید، آنچه که ما انجام داده ایم هنگامی که ما در آرایه ما می گذرد،
ما همچنین در طول، اندازه منتقل می کند.
این فقط اتفاق می افتد که ما به نام این متغیر در اینجا،
این پارامتر و یا آرگومان.
این لیست آرگومان یک تابع یا لیست پارامتر نامیده می شود،
و این استدلال نیز نامیده می شود و یا پارامتر است.
مردم از قوانین و مقررات مختلف در زمان های مختلف است.
من آنها را خودم گاهی اوقات تغییر.
این فقط اتفاق می افتد که این متغیر در اینجا به نام به همین ترتیب
به این # تعریف در اینجا.
اما آنها یک چیز مشابه نیستند.
سرمایه مهم است.
>> اگر شما به آنچه که اتفاق می افتد در اینجا نگاه کنید، ما اعلام می کنیم
آرایه از نوع int ما، که ما آن را به نام اعداد.
ما با توجه به حجم ما، که مربوط به ما # تعریف در بالا.
رفتن به تا 8.
و پس از آن زمانی که ما پس از آن عملکرد ما جستجو تماس زیر،
ما در شماره منتقل می شود ما می خواهیم را برای جستجو، که ما را وادار کرده ام،
بدست آمده از کاربر است.
ما در آرایه منتقل می کند، این تعداد،
و پس از آن نیز باید به تصویب در اندازه آرایه،
و پس از آن مقدار از اندازه 8 می شود ذخیره می شود
و یا به این اندازه متغیر عدد صحیح نامیده می شود منتقل می شود.
ما باید اندازه آرایه است.
حال اگر ما به بازگشت به آنچه که ما در مورد قبل از آن صحبت می کردند،
من فکر می کنم دختر خانم به ارمغان آورد تا نقطه ای که آنچه که ما نیاز به انجام این است که طول آرایه
و آن را تقسیم به 2 و که ما را از نقطه میانی است.
اجازه دهید را ببینید.
آیا من می توانم از کسی نوشتن و ذخیره آن را در فضای خود را؟
چگونه در مورد لیلا؟
آیا من می توانم این نوشتن به شما را؟
ارسال خط اول که در آن طول آرایه را می گیرد و از نقطه میانی
و آن را در یک متغیر جدید ذخیره.
من شما را دو ثانیه به من بدهید. آیا شما آماده هستید؟
[نامفهوم دانشجویی]
مطمئنا، می تواند شما را به من محاسبه نقطه میانی
از آرایه کومه علف خشک در داخل تابع جستجو
با استفاده از طول آرایه کومه علف خشک، که متغیر اندازه است؟
هیچ چیز مشکل در اینجا است.
[لیلا] فقط اندازه 2 / و فقط
و آن را ذخیره کنید، و دکمه ذخیره در بالای صفحه،
و ما آن را به بالا بکشید.
کامل.
وجود دارد بروید. عالی است.
>> به عنوان است، به این کامپایل؟
[لیلا] نه، به آن نیاز دارد بیشتر است.
[مقابله] آره، پس چه کار باید انجام دهیم؟
[لیلا] مثل نقطه میانی از نوع int و یا چیزی است.
عالی است. آره، اجازه دهید که، هوشمند نقطه میانی = اندازه.
آیا این کامپایل؟
بیایید حذف این نظر و دریافت آن از راه.
نه آنچه که تدوین در این مورد؟
ما هر چیزی را با عدد صحیح انجام نمی دهند،
بنابراین ما نیاز به آن را چاپ کنید و یا چیزی شبیه به آن است.
بله، دقیقا.
ما می خواهیم یک متغیر استفاده نشده.
چه چیز دیگری است که قصد ندارم در این مورد کار می کنند؟
من فکر می کنم شما گفت: چیزی، سام. سمیکالن.
آره، من گم شده آن سمی کالن.
این رفتن به یک چیز ثابت در طول دوره از این واژه است.
چیزی نهایی من این است که من برخی از فضای سفید در دو طرف قرار داده است
از این عملگر در اینجا، از آنجا که به طور معمول که ما چگونه آن را انجام دهید
با توجه به راهنمای سبک ما.
ما باید نقطه میانی از آرایه.
حال اگر به یاد داشته باشید برگشت به الگوریتم ما
مرحله دوم که ما تا به حال برای انجام این کار زمانی که ما به نقطه میانی چه بود؟
[دانشجو] اگر آن را بیشتر [نامفهوم].
آره، بنابراین ما باید برای انجام برخی از مرتب سازی بر مقایسه است، و آنچه که ما در مقایسه با اینجا؟
به شما گفت که اگر آن را بزرگتر از. آن را که در آن حکم با اشاره به چیست؟
شماره می آید که، در صورتی که بیشتر از نقطه میانی، پس از آن تا به آرایه؟
دقیقا، به طوری که شماره می آید که تا زمانی که ما
سوزن، بنابراین ما نسبت به سوزن،
چه هستند که ما در مقابل سوزن نسبت؟
از آنجا که سوزن آن چیزی است که ما به دنبال آن هستید.
ما آن را نسبت به رسیدن به نقطه میانی است.
>> اما معنی آن را چک کنید
اگر سوزن نقطه میانی =؟
آیا این را حس؟
آیا کسی مخالف؟
بیایید آن را امتحان کنید، اگر (سوزن نقطه میانی ==).
[دانشجو] آیا printf شما آن را در بر داشت.
[مقابله] Printf ("ما آن را در بر داشت \ N!")؛
در غیر این صورت، I'm رفتن به شروع به انجام کاری مختلف در اینجا.
من قصد دارم برای شروع به قرار دادن پرانتز در اطراف اگر اظهارات در همه زمان ها
فقط به خاطر اینکه اگر چیزهای بیشتری است، پس از آن ما اضافه کنید
ما کامپایلرها می کنید.
آره، سام. شما باید یک نقطه.
مشکل این است که نقطه میانی نشان دهنده موقعیت در آرایه،
اما شما می توانید آن را ارزش در آن موقعیت از آرایه به نمایندگی از.
این یک نقطه بزرگ است.
آیا همه شنیدن آنچه که سام گفت؟
او گفت که به عنوان نقطه میانی است
نشان دهنده تنها یک موقعیت در آرایه است، اما این عنصر واقعی در آرایه نیست.
اگر شما فکر می کنم در مورد کد نوشته شده در حال حاضر،
اگر ما در این آرایه نگاه کردن، که دارای 8 عنصر در آن،
چه مقدار از نقطه میانی در این تابع وجود دارد؟
[دانشجو] 4.
[مقابله] 4.
اگر ما شماره 4 نگاه کنید -
و ما فقط می توانید از این کد و اجرای قرار دادن یک چهره کمی غمگین در اینجا
از آنجا که ما را پیدا کند آن را اگر ما برای اجرای این کد
مناسب است در حال حاضر، آپلود، ساختمان، اجازه دهید من در پایین حرکت کنید،
و اگر ما برای شماره 4 نگاه کنید،
ما آن را در بر داشت، اما ما این به printf بله دریافت نمی.
یکی از دلایل این است که ما درست نمی گرداند،
اما آیا ما واقعا عدد 4 را پیدا کنم؟
و سام گفت: هیچ.
چی پیدا می کنیم؟
ما واقعا در بر داشت از نقطه میانی، که اگر ما در آرایه نگاه کردن،
آن را برای رفتن به این عنصر در اول 4 است که ما به دنبال آن هستید،
که در آن 23 میباشد.
>> چگونه ما در واقع این عنصر در نقطه میانی
و فقط از نقطه میانی خود نیست؟
[دانشجو] کاراکتر ما وارد و یا چیزی؟
چه را که انجام دهید، فقط از روی کنجکاوی.
آیا می توانم یک کمی توضیح بدهید؟
شما باید برای تبدیل موقعیت به تعداد،
فرض کنید که شما را به برخی از اتصال من فکر می کنم آن را به کاراکتر است، اما آن را نمی ممکن است.
آره، که یک نقطه خوب است.
ما انجام شده است بسیاری از این موقعیت تبدیل به کاراکتر این شخصیت،
در دو مجموعه مشکل است.
به نظر می رسد که در اینجا، این است که تقریبا شبیه به
دسترسی به شخصیت i ام در یک رشته، اگر آن را حس می کند.
در اینجا ما می خواهیم برای دسترسی به عنصر نقطه میانی است.
ما چگونه انجام این کار؟
کوین، هر گونه پیشنهاد ما ممکن است انجام این کار را دارید؟
شما به کاهدان می تواند انجام، براکت باز، متوسط، بسته براکت.
که تو می نویسم برای ما؟
ذخیره کردن آن را در اینجا، و ما که تا بکشد.
ما به دنبال این خط 9،
و ما در حال تحقق است که ما نمی خواهیم سوزن را نسبت به نقطه میانی،
اما در عوض، ما می خواهیم به مقایسه سوزن
به عنصر در نقطه میانی موقعیت در آرایه کاهدان ما است.
دانلود.
وجود دارد بروید.
بله، به نظر می رسد که بسیار خوب است، اگر (سوزن == کاهدان [نقطه میانی]).
ما آن را در بر داشت.
حالا اگر ما اجرا پشت کد we'll تا کمی
آن را کامپایل، اجرا می شود، و در حال حاضر اگر ما به مدت 4 نگاه کنید.
ما آن را پیدا نمی کند چرا که در حال حاضر ما در حال گرفتن شماره 23.
ما در حال رسیدن به ارزش 23، و این چیزی است که ما نسبت به سوزن ما.
اما این خوب است. این یک گام در مسیر درست است.
>> این چیزی است که ما در حال تلاش برای انجام.
ما در حال تلاش برای مقایسه سوزن در برابر موقعیت خود را در آرایه
اما نه در برابر عناصر واقعی در آرایه.
اگر ما نگاه دوباره در حال حاضر در گام بعدی در الگوریتم ما
گام بعدی چه چیزی است؟
لیلا در حال حاضر آن را به طور خلاصه ذکر شده است.
[دانشجو] بررسی کنید تا ببینید که اگر آن را بزرگتر یا کمتر از و پس از آن تصمیم می گیرید که راه را برای حرکت.
[مقابله] آره، پس چگونه ما انجام این کار؟
آیا می توانید در برخی I'll صرفه جویی در این نسخه قرار داده شده،
و پس از آن اگر در برخی از خطوط که انجام این کار قرار داده است.
آره، شارلوت. >> من یک سوال.
باید آن را نمی شود نقطه میانی 1 - به دلیل اولین چیزی است
0 ایندکس شده، بنابراین اگر ما 4 است، که در واقع شخصیت ما به دنبال؟
بله، و مشکل دیگر که با است
که گرفتن بزرگ است، زیرا آن چیزی است که برای پایان دادن اتفاق می افتد احتمالا
اگر ما در حفظ و در حال حرکت است و ما هرگز تنظیم در ابتدا؟
من حدس می زنم چیزی است که ما ممکن است در نهایت انجام است که در تلاش برای دسترسی به
این عنصر در موقعیت 8 از آرایه،
که در این مورد وجود ندارد.
ما می خواهیم نوعی از حسابداری برای حقیقت
که در حال حاضر برخی از نمایه سازی صفر است.
شارلوت با عرض پوزش، من نقطه میانی به معنای 1 - در براکت مربع است.
ما که می تواند انجام دهد.
خواهیم دوباره به این موضوع فقط یک کمی.
زمانی که ما شروع به به حلقه واقعی،
که زمانی که ما واقعا می خواهید این را به بازی می آیند.
در حال حاضر، ما می توانیم این کار، انجام دهید، اما شما کاملا درست است.
که نمایه سازی صفر اثر است که ما باید به حساب.
اجازه دهید را ببینید.
>> چگونه است که بیشتر از و کمتر از؟
[دانشجو] من چگونه به انجام این کار بیشتر از و کمتر از بخش.
من فقط مطمئن بود که به چاپ اگر شما دریابید که کمتر از نقطه میانی کومه علف خشک و یا بزرگتر از آن است که نیست.
در اینجا من می تواند نجات I've-
[مقابله] بله، اگر شما را نجات دهد آنچه که تو کردم، و ما آن را به بالا بکشد.
وجود دارد بروید.
[دانشجو] و من علامت سوال را برای چیزی که من نمی دانم قرار داده است.
[مقابله] است که به نظر می رسد بزرگ است.
در اینجا ما باید علامت سوال از آنجا که ما هنوز نمی دانیم
آنچه که ما در حال رفتن به کاملا هنوز.
چه که ما می خواهیم انجام دهند اوه، ما باید برخی از پرانتز همه بد بو بر ما.
ما می خواهیم از این پرانتز درست باشد.
وجود دارد بروید.
و بنابراین چه چیزی ما می خواهیم برای انجام این کار، با توجه به الگوریتم،
اگر ما سوزن را پیدا کند؟
می گویند در صورتی که سوزن کمتر از چیزی است که ما به دنبال. کوین.
فقط در نیمه چپ نگاه کنند.
راست، بنابراین ما می خواهیم نظر در اینجا است که می گوید: "نگاهی به نیمه چپ." قرار داده است
و اگر سوزن از انبار کاه در نقطه میانی بزرگتر است، چه چیزی ما می خواهیم کاری انجام دهید؟
[دانشجو] سپس شما را در نیمه سمت راست نگاه کنید.
در نیمه سمت راست، در نیمه سمت راست نگاه کنید. "
خیلی کهنه نشده.
خوب، پس در این مرحله، همه چیز به دنبال خیلی خوب است.
مشکل با کد نوشته شده است؟
[دانشجو] شما نقطه پایانی برای نیمه ندارد.
در سمت راست، ما نقطه پایانی برای نیمه ندارد.
ما نیز تنها از طریق این یک بار بروید.
ما فقط در یک نقطه میانی نگاه کنید.
در هر صورت این عنصر وجود دارد، یا این طور نیست.
به منظور تکمیل این کار، ما باید برخی از مرتب کردن بر اساس تکرار به انجام.
ما نیاز به حفظ تکرار تا زمانی که ما را پیدا می کنند که
هر دو عنصر در آن وجود دارد به دلیل ایم تنگ کردن و در نهایت آن را در بر داشت،
و یا آن را در آنجا نیست، زیرا ما را از طریق تمام چیزهایی نگاه
در نیمه های مناسب از آرایه و متوجه می شود که هیچ چیز در آن وجود دارد.
>> هر زمان که ما این تکرار رفتن کردم، چه می خواهیم استفاده کنید؟
[دانشجو] حلقه.
برخی از مرتب کردن بر اساس حلقه. بله.
[دانشجو] آیا می توانم یک حلقه DO-در حالی که ما انجام می دهیم و آن را انجام این کار و پس از آن در حالی که
سوزن برابر I'm مطمئن شوید که من با آن خواهد بود نه.
اما نوع مانند کار که به عنوان طولانی به عنوان آن می کند برابر است با ارزش که ورودی کاربر است.
آره، پس بیایید ببینید، چگونه ممکن است این خود را بنویسید؟
شما گفته اید اجازه دهید با استفاده از یک حلقه DO-در حالی که.
از کجا شروع؟
[دانشجو] پس از اندازه 2 /.
[مقابله] خوب، و چه می خواهیم کاری انجام دهید؟
ما در در حالی که بعد از پر کردن است.
چه می خواهیم کاری انجام دهید؟
[دانشجو] آیا ما می خواهیم به همه چیز ما در قسمت IF نیست؟
[مقابله] آیا تمام این مسائل، بزرگ است.
کپی و پیست کنید.
آه، مرد.
بیایید ببینیم که اگر این کار، اگر ما می تواند تب در این باره است.
زیبا.
خوب، و این که ما را نجات دهد، بنابراین شما بچه ها آن را داشته باشد.
تمامی حقوق، و ما می رویم برای انجام این کار در حالی که
شرایط در حالی که شما پس از آن بود چه بود؟
[دانشجو] در حالی که سوزن برابر نیست، بنابراین مثل علامت تعجب.
اما من مطمئن هستم که دقیقا همان چیزی است که هنوز نمی باشد.
[مقابله] آره، این است که یک راه برای انجام آن است.
سام، نظر شما چیست؟
[سام] من به یاد زمانی که من در فیلم ها نگاه کرد،
من در زمان یک تصویر را از یکی از مانند هنگامی که ما شبه برای آن انجام داد،
برخی از رابطه بین حداکثر و حداقل وجود دارد.
من فکر می کنم آن چیزی است که اگر حداکثر همواره کمتر از دقیقه بود.
فهمیدی.
[سام] و یا مانند اگر حداکثر کمتر از دقیقه یا چیزی شبیه به آن نیست،
چرا که به این معنی است که شما همه چیز را.
>> آره، پس چه چیزی آن را مانند حداکثر و حداقل با اشاره به صدا؟
[سام] ارزش هایی که اعداد صحیح که می رویم به تغییر
نسبت به جایی که ما را از نقطه میانی است.
دقیقا.
[سام] در آن لحظه، آن را با رفتن به [نامفهوم] محاسبه max و در دقیقه است.
وسط این حداکثر و ایده در دقیقه است.
آیا این حس به مردمی؟
اگر ما برای شروع به دنبال چگونه ما قصد داریم برای انجام این کار تکرار،
شما کاملا درست است که ما می خواهیم برای استفاده از برخی از مرتب کردن بر اساس انجام دهند در حالی که حلقه.
اما من حدس می زنم اگر ما به یاد داشته باشید آنچه که در نقطه ای از این آرایه
و آنچه در واقع اتفاق می افتد، I'm رفتن به نوشتن در اینجا
در تکرار اول جستجوی دودویی، ما باید
من قصد دارم برای استفاده از B و E به معنی آغاز.
و سپس در پایان از آرایه های ما.
ما می دانیم که از آغاز در 4 حق در اینجا،
و ما می دانیم که در پایان در 108 است.
می گویند که ما در حال جستجو برای شماره 15.
اولین بار این کار را، ما دیدیم پیشتر گفته شد،
نقطه میانی یا رفتن به 16 یا 23
بسته در مورد نحوه محاسبه شده است.
از آنجا که به طور مساوی در وسط تقسیم می ما این فضا را
بین 16 و 23، ما به طور مساوی نمی تواند آن را تقسیم
یا آن را تقسیم و در یک نقطه میانی واقعی.
ما در 16 نگاه خواهیم کرد.
ما متوجه "هی، 16> 15 که ما به دنبال آن هستید."
سپس در نیمه سمت چپ آرایه
آنچه که ما را به پایان خواهم انجام دور است
این بخش فوقانی کل
و گفت، "خوب، در حال حاضر نقطه پایانی ما این است که برای رفتن به اینجا."
تکرار بعدی حلقه ما، ما در حال حاضر در این آرایه به دنبال،
به طور موثر با دور ریخته می شود این بخش به دلیل در حال حاضر
اگر ما در حال در نظر گرفتن نقطه میانی به تفاوت بین شروع و پایان،
ما در پیدا کردن نقطه میانی ما به 8،
که ما پس از آن می توانید تست 8 تا ببینید که در آن در رابطه به تعداد ما به دنبال
15، که 15 بزرگتر است،
بنابراین ما باید برای حرکت به قسمت سمت راست از لیست،
که ما آن را می دانم چرا ما انسان ها، و ما می توانیم آن را ببینید.
ما می دانیم که بخش راست است برای رفتن به جایی که ما آن را پیدا کنید،
اما کامپیوتر نمی داند که، چه خواهیم انجام دهیم این است که ما در واقع خواهیم
این بالا برود، و در حال حاضر آغاز و پایان
همان نقطه تا نقطه میانی می شود تنها در این لیست که در آن نقطه،
که 15 است، و ما آن را در بر داشت.
کند که برخی از نور در جایی که این حداکثر کل و نماد دقیقه ریخته،
پیگیری پایانی از آرایه به منظور کشف کردن
چگونه برای محدود کردن چیز ها را؟
>> چه اتفاقی خواهد افتاد اگر این بود تا 15 برابر در حال حاضر؟
چه اگر ما برای 15 و، به جای آن دنبال شد، این تعداد نیز 16؟
ما می گفت: "آه، آن بیشتر است.
ما می خواهیم به عقب برگردید و به سمت چپ. "
و ما می خواهم الکترونیکی خود را به سمت راست حرکت می کند،
که در آن نقطه ما باید نقطه پایانی خواهد بود که متناقض است.
قادر نخواهد بود به جستجو برای عناصر هر
چرا که در حال حاضر ما به نقطه پایانی ما و نقطه شروع ما،
حداکثر و حداقل ما، در حال حاضر بدبختانه.
ما را از طریق کل آرایه را جستجو کنید. ما می توانیم هر چیزی را پیدا کند.
این نقطه که در آن ما می خواهم می خواهم می گویند: "خوب، ما قصد داریم برای جلوگیری از این الگوریتم است.
ما هیچ چیزی یافت نشد. ما می دانیم که آن را در اینجا نیست. "
چگونه است که این رود؟
[دانشجو] دقیقا چگونه کامپیوتر تغییر پایان؟
چگونه در پایان قبل از آغاز تا پایان؟
پایان به پایان می رسد تا قبل از شروع
به دلیل از ریاضی است که ما قصد داریم تا هر زمان که ما این کار را.
راه ما مبادله است اگر شما در همان بار اول نگاه ما این کار را انجام مبادله
که در آن ما را آغاز و در 4 و پایان
تمام راه را به پایین 108 و نقطه میانی ما، می گویند، در 16 -
من قصد دارم برای تنظیم مجدد بازگشت به 15-اگر ما به دنبال از 15
ما می دانستیم که آنچه که ما هنگامی که ما بررسی از 16 و دیدم که بیشتر
و می خواست به دور انداختن تمام قسمت سمت راست از لیست،
ما دیدیم که آنچه که ما می خواستیم به انجام حرکت این نامه حق در اینجا.
به طور موثر، E قبل از نقطه میانی منتقل شدم.
به همین ترتیب، زمانی که ما این تکرار از الگوریتم
و نقطه میانی در 8،
ما متوجه شدیم که 8 <15 است، بنابراین ما می خواستیم به حرکت ب
گذشته یکی از نقطه میانی.
در حال حاضر، شروع و پایان هر دو با هم در این 15.
>> اگر ما می خواهم اتفاق می افتد به برخی از ارزش های دیگر نه، 15 نگاه کنید،
و یا اگر به جای این 15 از 16 بوده است،
ما را پیدا کرده اند که ایران ما می خواهیم به حرکت می کند قبل از نقطه میانی است.
در حال حاضر E خواهد بود بدبختانه کمتر از B وجود دارد.
اجازه راه رفتن را از طریق ما در واقع تا پایان برنامه نویسی این الگوریتم.
ما می دانیم که ما می خواهیم به این محاسبه نقطه میانی.
ما می دانیم که ما می خواهیم برای پیگیری شروع و پایان از آرایه
از آرایه های کنونی ما، بنابراین ما می توانیم کشف کردن
که این نیمه چپ از لیست است و از آنجا که نیمه سمت راست از لیست است.
ما که با هر دو شروع و پایان،
و یا ما می توانیم آنها را به حداقل و حداکثر است.
من از شروع و پایان دادن به این زمان است.
هنگامی که ما شروع شود، اگر ما نگاهی به مثال ما در اینجا،
آغاز ما این بود که از همان ابتدای آرایه، مجموعه ای طبیعی است.
چه شاخص این بود؟ ما باید شروع کنیم؟
دانیل.
[دانیال] پشته علف [0].
[مقابله] آره، بنابراین ما می تواند از آن برابر با کومه علف خشک تنظیم [0].
مشکل است، هر چند، این است که این به ما می دهد و موقعیت از اولین عنصر نیست.
این به ما می دهد شاخص عنصر اول و یا ارزش واقعی که در آن مقام اول است.
[دانشجو] که به 0.20 تبدیل کنم؟
[مقابله] آنچه را انجام خواهد داد، خوب، آن را به هیچ مبدل را انجام ندهید.
چیزی که آن را انجام خواهد داد این است که آن را به 4 در شروع ذخیره،
و پس از آن سخت خواهد بود برای مقایسه در برابر شروع
به دلیل آغاز خواهد شد برگزاری ارزش از 4،
که ابتدا از آرایه های ما است،
اما ما می خواهیم برای پیگیری شاخص در آرایه
به عنوان مخالف به ارزش شده است.
ما در واقع می خواهید 0، شبیه به آن.
برای پایان آرایه شارلوت این تا کمی زودتر به ارمغان آورد.
این جایی است که ما را به حساب آورد نمایه سازی صفر است.
>> شارلوت، در پایان از آرایه چیست؟
فهرست پایان چیست؟
[شارلوت] حجم - 1.
آره، که به اندازه باید استفاده می کنیم؟
باید حجم سرمایه یا اندازه حروف کوچک استفاده می کنیم؟
اندازه سرمایه است.
در این مورد، ما می تواند اندازه سرمایه استفاده کنید.
اگر ما می خواستیم این تابع قابل حمل
و استفاده از این تابع را در برنامه های دیگر،
ما در واقع می تواند اندازه های حروف کوچک استفاده کنید.
این خوب است بیش از حد.
اما شارلوت کاملا درست است که ما می خواهیم به اندازه - 1.
در این نقطه
[دانشجو] چگونه است که شما می توانید اندازه بزرگ استفاده کنید؟
چگونه است که ما می توانیم اندازه بزرگ استفاده کنید؟
به نظر می رسد که این # تعریف می کند در واقع،
در زیر کاپوت، یک متن مانند پیدا کردن و جایگزین، اگر آن را حس می کند.
هنگامی که کد شما را کامپایل، مرحله پردازش
کامپایلر می رود از طریق فایل،
و آن را برای به نظر می رسد که در همه جا اندازه سرمایه شما نوشته شده است،
و آن را جایگزین آن متن را به معنای واقعی کلمه با 8، فقط می خواهم که.
در این معنا، این است که بسیار متفاوت از یک متغیر است.
این کار را تا هر فضا در حافظه است.
این ترفند ساده متن جایگزین است.
در این مورد، ما قصد داریم به استفاده از اندازه است.
از اینجا ما نمی خواهیم به انجام برخی از مرتب کردن بر اساس تکرار،
و ما در مسیر صحیح انجام دهند در حالی که حلقه ما هستیم.
ما می خواهیم برای انجام کاری تا زمانی که وضعیت نگه نمی کنه،
و به آنچه پیشتر دیدیم، دیدیم که آن وضعیت
در واقع که ما در پایان می خواهم
به کمتر از شروع.
>> این توقف ما شرایط است.
اگر این اتفاق می افتد، ما می خواهیم برای متوقف کردن و مانند آن، اعلام کرد: "هی، ما چیزی یافت نشد."
برای بیان این، ما نمی خواهیم برای استفاده از برخی از مرتب کردن بر اساس حلقه.
در این مورد، آن را می شود حلقه DO-در حالی که، حلقه for، حلقه است؟
ما باید یک حلقه DO-در حالی که در اینجا.
آیا شما بچه ها می خواهم که روش؟
آیا شما فکر می کنم ما باید به روش های مختلف را امتحان کنید؟
کوین، هر گونه افکار؟
ما می توانیم یک حلقه در حالی که به خاطر ما می دانیم حداکثر
خواهد بود بیشتر از دقیقه در هر حال شروع است.
آره، بنابراین هیچ دهی اولیه که نیاز به اتفاق می افتد وجود دارد.
کسانی که حلقه در حالی که زمانی که شما چیزی به مقداردهی اولیه
قبل از آن آزمایش، در حالی که در اینجا
ما می دانیم که ما قصد داریم برای حفظ reinitializing هر دو شروع و پایان
در هر دور از حلقه.
ما می دانیم که ما می خواهیم به آنها را مقداردهی اولیه، و سپس شرایط ما را بررسی کنید.
در این مورد، من در واقع می خواهید در حالی که با یک حلقه ساده.
به نظر می رسد که انجام دهند در حالی که حلقه نسبتا به ندرت استفاده می شود.
بسیاری از مکان ها حتی نمی یاد می دهد در حالی که حلقه.
آنها برای دست زدن به ورودی کاربر، بنابراین ما بسیاری از آنها تا کنون دیده ام.
اما طبیعی و در حالی که حلقه ها بسیار شایع تر است.
به نظر می رسد که این وضعیت به عنوان نوشته شده است
واقعا نمی با ما بسیار خوب انجام دهید، و به همین دلیل است که؟
متاسفم، من نام شما را نمی دانم.
من جری. >> متاسفم؟
B-O-R-U-I است.
آه، درست است.
من می توانم شما را در لیست من نیست.
آه، آن را به خاطر آه، که باعث می شود حس.
آیا ایده که چرا این حلقه در حالی که ممکن است کار به عنوان در نظر گرفته شده را داشته باشند،
با شرایط نوشته شده است؟
[جری] منظورتان این است که شما می خواهید همه چیز پس از آن به؟
آره، به طوری که یکی است.
ما ممکن است برای قرار دادن تمام این مسائل را به حلقه در حالی که، که کاملا درست است.
چیز دیگری که کمی مشکل تر است، هر چند، این است که این وضعیت کار نمی کند.
[دانشجو] شما باید به آن تلنگر.
راست است، بنابراین این وضعیت هرگز نمی شود درست است در ابتدا ما در مورد آن صحبت کردیم.
ما می خواهیم برای انجام کاری تا پایان <شروع،
اما ما می خواهیم به انجام کاری در حالی که
آغاز پایان ≤.
>> که واژگونی از منطق وجود دارد وجود دارد.
من گناه کسانی که اشتباهات در همه زمان ها است.
[دانشجو] چرا باید به کمتر از یا مساوی؟
از آنجا که شما این مورد که ما رو به یاد داشته باشید
که در آن تنها یکی از عناصر وجود دارد، و ما به پایین،
و ما فقط در 15 در آرایه ما به دنبال؟
و آغاز و پایان ما همین عنصر بود.
ما می خواهیم تا مطمئن شوید که ما رسیدگی به این مورد.
اگر ما راست کمتر،
ما تنها قادر به دریافت یک آرایه 2 عنصر باشد.
هنگامی که ما رو به پایین است که آخرین عنصر، در صورتی که عنصر ما بودند، ما می خواهم آن را پیدا کنید هرگز.
در حال حاضر در اینجا، ما می توانید انجام دهید دقیقا مانند شما گفتند.
ما می توانیم شروع به plopping مسائل حق را به وسط حلقه در حالی که ما.
ما می توانیم با صدای تلپ در نقطه میانی ما.
ما می توانیم از این اظهارات،
کشیدن آنها را از این حلقه DO-در حالی که،
با صدای تلپ آنها را در
تمیز کردن چیز کمی،
و من میام جلو و صرفه جویی در این نسخه.
و در این مرحله، ما در حال گرفتن بسیار نزدیک است.
سام.
من فکر می کنم شما نیز باید به نقطه میانی از نوع int SIZE = - 1/2.
آن، اندازه - 1/2 است.
آیا هر چیز دیگری ما نیاز داریم که خط را تغییر دهید؟
گرفتن خوب بود.
>> چه اندازه انجام دهید؟ آیا ما همیشه در حال تغییر اندازه؟
به منظور حفظ خط شبیه به این، ما باید برای تغییر اندازه.
ما باید برای تغییر اندازه در هر زمان که ما در اطراف حلقه.
اما به یاد داشته باشید هنگامی که ما از طریق مثال ما فقط کمی زودتر،
و ما آغاز و در 4
و در پایان تمام راه را در بیش از 108؟
چگونه از نقطه میانی محاسبه؟
ما با استفاده از اندازه؟
و یا با استفاده از شروع و پایان دادن به جای؟
این تفاوت بین پایان و آغاز است.
دقیقا، و دقیقا چگونه باید که من نوشتن، شارلوت؟
فقط پایان - آغاز خواهد شد.
شما نمی نیاز به انجام - 1
به این دلیل که 1 - شده است در پایان و آغاز در حال حاضر است.
[مقابله] بزرگ، شما کاملا درست است.
ما لازم نیست که برای انجام 1 - چرا که - 1 شده است شامل
و برای زمانی که مقداردهی اولیه متغیر نهایی ما است.
>> آیا هر چیز دیگری نیاز به نحوی که این خط را حس وجود دارد؟
[دانشجو] به علاوه آغاز خواهد شد. >> به علاوه شروع کنیم؟
[دانشجو] در پایان.
از آنجا که این فقط نیمی از طول محاسبه شده است.
شما نیاز به اضافه کردن شروع شود.
[مقابله] چه خواهد این کار را برای ما محاسبه؟
اگر ما در مورد پایان فکر می کنم در این تکرار برای اولین بار از این حلقه،
پایان است که در شاخص موقعیت 7.
شروع در موقعیت 0.
به یاد داشته باشید، ما به دنبال هر دو
جایگاه 3 یا موقعیت 4.
اگر ما در این ریاضی نگاه کنید، فقط برای آن را کمی بیشتر ملموس است،
قرار دادن برخی از اعداد در اینجا، ما باید 7، 0،
بنابراین 7 - 0 و پس از آن / 2
3 در تقسیم عدد صحیح است.
سپس ما باید به آن اضافه کردن پشت ما آغاز خواهد شد؟
ما در این مورد نیست.
در اولین تکرار بسیار خوب خواهد شد چرا که آغاز شده است 0.
اما ما به عنوان پیشرفت، ما واقعا تنها کاری که باید
پایان - شروع / 2.
یک ترفند دیگر در اینجا وجود دارد، و این یعنی یکی از اولویت.
[دانشجو] آیا پرانتز نیاز داریم؟
[مقابله] دقیقا، چرا که اگر ما این پرانتز قرار نیست،
سپس این خط به جای تفسیر شود
(پایان) - (شروع / 2)، که ما آن را قطعا نمی خواهید.
مراقب باشید برای آن دسته از قوانین تقدم.
[دانشجو] چرا آن را به پایان + شروع کنیم؟
چرا آن را به پایان + شروع کنیم؟
[دانشجو] چرا که نه؟
چرا از آن می شود +؟
من فکر می کنم حق با شما است.
[دانشجو] از آنجا که آن را به طور متوسط؟
[مقابله] پایان + شروع، شما کاملا درست است.
وای، و من کاملا goofed. حق با تو است.
اگر ما انجام منفی، ما می خواهیم به شروع دوباره وارد
در این حالت، شما در حال درست است که ما می خواهیم را به طور متوسط ​​از این دو،
بنابراین ما نمی خواهیم به آنها اضافه کنید، به عنوان مخالف به آنها تفریق.
[دانشجو] آن را نیز به کار اگر شما پایان - آغاز خواهد شد / 2 + شروع.
که اگر ما به اعتقاد من.
>> برای مثال، اگر ما در شروع شدند،
و ما آن را منتقل اینجا
در 15.
در حال حاضر شروع شده است در موقعیت 2.
پایان است که در موقعیت 7.
اگر ما آنها را تفریق، ما 5.
تقسیم است که به 2 2.
و بعد 2 ما اضافه کردن به عقب،
و این ما را به سمت 4،
که اینجا مناسب است که نقطه میانی است.
[دانشجو] آیا ما نیاز به مراقبت از کاغذ بسته بندی؟
در چه حس ما نیاز به مراقبت از پیچیدن؟
اگر مجموع یا تفاوت بین
بسته که ما چگونه آن را انجام دهید یک عدد زوج است.
سپس کامپیوتر می شود که آیا زمانی که آن را 2.5 اشتباه؛
می توانم شما را به سمت چپ یا به سمت راست که برای تعیین نقطه میانی حرکت می کند؟
فهمیدی.
به نظر می رسد که با تقسیم عدد صحیح،
ما هرگز این اعداد ممیز شناور است.
ما دهدهی هرگز.
کاملا دور ریخته میشود.
اگر شما یک کامپیوتر تقسیم دو متغیر از نوع int،
و یکی از 7 است، و از سوی دیگر، 2،
شما 3.5 به عنوان یک نتیجه گرفتن نیست.
آن را به 3 دریافت کنید.
بقیه دور ریخته خواهد شد، پس از آن به طور موثر گرد
نه دور بلکه یک طبقه، اگر شما بچه ها آشنا هستند با آن در ریاضی،
که در آن شما به طور کامل دهدهی دور بیندازید،
و تو در اصل آن را پبدا به پایین به نزدیکترین
مجموع، به نزدیکترین عدد صحیح است.
[دانشجو] اما پس از آن که مشکل ساز است چرا که اگر شما یک مجموعه ای از 7 عنصر
پس از آن است که به طور خودکار طول می کشد این عنصر 3 از نقطه میانی به جای 4.
چگونه ما می توانیم با آن مقابله؟
این مشکل به این دلیل اگر ما تا به حال مجموعه ای از 7
آن را به جای 4 3 را انتخاب کنید.
بیشتر کمی توضیح دهید؟
[دانشجو] زیرا اگر 7 عناصر سپس عنصر 4
می شود از نقطه میانی، درست است؟
به یاد داشته باشید نظر خود را در مورد صفر بودن نمایه شده، هر چند.
[دانشجو] آره، به طوری که در موقعیت 3. که می شود از نقطه میانی.
آره.
آه، درست است. من می بینم شما چیست.
این نوع از عجیب و غریب، که ما را وادار به این مفهوم استفاده می شود
خلاص شدن از اعشار.
این یک نقطه بزرگ است.
بیایید پایان این بالا.
ما محاسبه نقطه میانی است.
>> ما در حال آزمایش برای دیدن اگر سوزن ما را به مقدار متوسط ​​برابر است.
ما در حال چاپ است که ما آن را در بر داشت، اما در واقع، آنچه که ما می خواهیم در این وضعیت انجام دهید؟
ما آن را در بر داشت، به طوری که ما می خواهیم به شما اجازه تماس گیرنده می دانیم که ما آن را در بر داشت.
ما باید یک تابع که یک تابع بولی تایپ.
راه ما به تماس گیرنده از عملکرد ما نشان دهد که ما آماده برای رفتن
این است که ما می گویند، "هی، این درست است."
چگونه که ما انجام می دهیم، کوین؟
nodding سر خود شما است. >> [کوین] اضافه کردن به راست است.
[مقابله] دقیقا، بازگشت درست است.
در حال حاضر، اگر آن برابر نیست، چگونه می توانیم در نیمه سمت چپ نگاه کنند؟
هر گونه ایده ها؟
استلا، هر گونه ایده ها؟
شما نیاز به تنظیم موقعیت جدیدی را برای پایان.
آره.
بنابراین ما باید انجام دهیم موقعیت نقطه میانی - پایان.
بزرگ است.
ما نیاز به تنظیم موقعیت جدیدی را برای پایان
در نگاه به نیمه چپ.
این چیزی بود که ما در مورد قبل از جایی که صحبت کردیم
من رفتن به این مثال است.
من شروع در اینجا، و پس از آن من پایان تمام راه را در اینجا.
>> باز هم، اگر ما به دنبال 15، و نقطه میانی ما در 16،
و ما متوجه، "اوه، 16 بیشتر است.
ما می خواهیم به نیمه سمت چپ حرکت می کند. "
ما پس از آن که در پایان از 15 حرکت،
و ما که با در نظر گرفتن یک دور از نقطه میانی
و راه که عنوان جدید پایان ما.
به همین ترتیب، اگر ما می خواهیم به نیمه راست نگاه کنند، چگونه می ما انجام این کار؟
آیا شما یک ایده دارید؟
[دانشجو] شما فقط شروع به نقطه میانی + 1.
[مقابله] بزرگ است.
و در حال حاضر در این مورد است که ما هیچ چیز را پیدا کند،
می کند که مراقبت های گرفته شده از برای ما؟
دانیل می کند که گرفته شده مراقبت از برای ما؟
[دانیال] شماره
[مقابله] اگر ما آن را از طریق کل آرایه و ما هر چیزی را پیدا کند،
کجا که گرفته شود مراقبت از، یا باید ما را از آن؟
[دانیال] در حالی که این وضعیت.
[مقابله] آره، شرط در حالی که، دقیقا.
مراقبت از رفتن را از طریق تمام آرایه را اگر ما هیچ چیز را پیدا کند.
این حلقه در حالی که به پایان خواهد رسید.
ما هرگز این وضعیت مواجه می شوند،
و ما می توانیم بازگشت نادرست است.
ما همچنین می توانیم از این اگر ترک در اینجا مثل این
چرا که اگر این اگر عبارت درست است،
و عملکرد ما باز خواهد گشت.
و بنابراین ما اساسا به سقط جنین این تابع در این نقطه
هنگامی که ما بازگشت درست است.
اما چه اتفاقی می افتد با این ساختار در اینجا؟
این کار را به طور کامل و یا وجود دارد برخی از نقص های منطقی در آن وجود دارد؟
>> برخی از نقص های منطقی در آن وجود دارد وجود دارد، با راه آن راه اندازی شده است.
چه چیزی ممکن است؟
[دانشجو] چرا شما نیاز به - و + 1S؟
که مجموعه های آرایه ما به نیمه چپ و نیمه راست.
[دانشجو] اما چرا شما آن را انجام دهد، بدون - 1S و + 1S؟
[مقابله] ما می تواند از آن را برابر نقطه میانی است؟
آنچه که ممکن است در مورد آن مشکل است؟
[دانشجو] من حدس می زنم آن را ناکارآمد دلیل این که شما در حال چک کردن یک ارزش است که در حال حاضر بررسی شده است.
[مقابله] دقیقا، به طوری که سم است کاملا درست است.
اگر شما پایان و آغاز برابر نقطه میانی
به جای - 1 + 1 تاملی،
در برخی از نقطه در آینده خواهیم تا پایان بررسی از نقطه میانی دوباره.
[دانشجو] من pset را آغاز، و پس از آن من تا به حال چیزی شبیه به آن
جایی که من، 1 + را فراموش کرده و آن را در یک حلقه بی نهایت گیر کردم.
راست، چون در برخی از نقطه شما هرگز برای شروع و پایان دادن به
در واقع با هم همپوشانی دارند.
دانلود.
یکی دیگر از نقص منطقی وجود دارد، و آن این است که این قطعا باید باشد
اگر دیگری.
چرا ممکن است که خواهد بود؟
>> دلیل این امر این است که اگر آن دیگری نیست اگر آن را، کوین شما را ببینید؟
[کوین] آره، چرا که شما در حال تغییر نقطه پایان است.
[مقابله] دقیقا.
ما در حال تغییر است نقطه پایانی،
و اگر آن را مانند این we'll نوشته شده فضاهای بین
این مورد را بررسی کنید.
این مورد، موفق، خواهد سقط جنین در خارج از تابع.
سپس آن را در این مورد بعدی را چک کنید،
و اگر این موفق، آن را به نقطه پایانی تنظیم،
و سپس آن را در ادامه و این مورد را بررسی کنید.
اما در این مرحله، ما نمی خواهیم آن را به ادامه بررسی است.
خوشبختانه، ما را از نقطه میانی تنظیم مجدد نیست در اینجا،
و ما می دانیم که این مورد موفق نخواهد شد.
اما ما قطعا می خواهید برای قرار دادن دیگری در آن وجود دارد
حتی اگر که ممکن است در این مورد
از آنجایی که ما در حال تنظیم نقطه میانی، که با ایجاد اختلاف است؟
خیر، زیرا این موارد منحصر به فرد.
باز هم، بد من است.
کار می کنیم، من فکر می کنم، نه نیاز به این دیگری اگر.
ما می توانیم آن را امتحان کنید و آن را اجرا کنید و ببینید که چه اتفاقی می افتد.
ساختمان، یک خطا رخ داده است.
این احتمالا به دلیل من این B ​​و E در اینجا در سمت چپ است.
آیا من در بالا از آن بالا؟
این کار مانند آن به نظر نمی آید.
ما زوم کردن، ساخت،
آن می رود وجود دارد، بنابراین در حال حاضر اگر ما به مدت 15 جستجو،
بله.
اجازه بدهید من زوم شوید.
15، بله. ما می توانیم آن را دوباره اجرا کنید.
آپلود کد منبع، ساختمان، در حال اجرا است.
ما می توانیم برای چیزی شبیه به 13 جستجو،
و ما هر چیزی چاپ می کنید، به طوری که آن را یافته است که برای ما.
که بزرگ است، چرا آن را در لیست ما نیست.
>> ما در حال حاضر در خارج از زمان.
که رفتن به آن را برای این هفته.
با تشکر برای پیوستن به، و بعدا می بینمت.
>> [CS50.TV]