[Powered by Google Translate] [بخش 4] [کمتر راحت]
[مقابله Hardison] [دانشگاه هاروارد]
[این CS50.] [CS50.TV]
>> تمامی حقوق، خوش آمدید به بخش.
در بخش این هفته ما قصد داریم برای انجام چند چیز است.
ما قصد داریم به مجموعه ای مشکل روکش اول 2،
است که سزار و Vigenère مجموعه مشکل است.
و پس از آن ما قصد داریم به به امتحان بررسی 0 شیرجه
و صرف کمی از وقت بیایید آنچه که ما در مورد صحبت
در هر یک از سخنرانی های تا کنون، و ما همچنین می خواهیم چند مشکل
از آزمونها در سال گذشته است.
به این ترتیب شما بچه ها یک راه خوب برای آماده شدن برای آن است.
>> برای شروع، من بوت یک زن و شوهر از راه حل های خوب
مجموعه ای از مشکل قبلی، مشکل مجموعه 2، به این فضا.
اگر شما بچه ها این لینک،
و اگر اسم من کلیک کنید و با کلیک بر روی تجدید نظر اول من
شما caesar.c است، که دقیقا همان چیزی است که من به دنبال در را ببینید.
اجازه دهید بحث در مورد این واقعا به سرعت.
این است که فقط یک راه حل نمونه است.
این است که راه حل مناسبی نیستند.
هستند بسیاری از راه های مختلف برای نوشتن این کار وجود دارد،
اما چند چیز که من می خواستم به برجسته وجود دارد
که من دیدم بود که من از درجه بندی، اشتباهات رایج که من فکر می کنم
این راه حل بسیار خوب کار می کند از دست زدن به.
>> برای اولین بار است که با داشتن برخی از مرتب کردن بر اساس از نظر هدر در بالای صفحه.
در خطوط 1 تا 7 از جزئیات به شما نگاه می کنید،
آنچه که دقیقا این برنامه در حال انجام است.
عمل استاندارد خوب زمانی که شما در حال نوشتن کد C
بدون در نظر گرفتن اگر برنامه شما این است که در داخل یک فایل واحد و یا موجود
که آیا آن را بیش از چند فایل تقسیم شده است که به برخی از مرتب کردن بر اساس
موقعیت یابی اظهار نظر در بالای صفحه.
این است که برای افرادی که بیرون بروید و کد نوشتن در دنیای واقعی نیز شده است.
این جایی است که آنها به اطلاعات کپی رایت قرار داده است.
در زیر شامل #.
در خط 16 این # تعریف کنیم که دوباره به در فقط یک کمی وجود دارد.
و سپس یک بار تابع شروع می شود، شروع می شود یک بار اصلی،
چون این برنامه تمام شده است در یک تابع واحد موجود
اولین کاری که اتفاق می افتد و این بسیار اصطلاحی و نمونه ای از یک برنامه C
طول می کشد که در خط فرمان استدلال این است که آن را بلافاصله را چک می کند
>> ، argc تعداد آرگومان.
حق در اینجا ما می بینیم که این برنامه انتظار 2 استدلال دقیقا.
به یاد داشته باشید که استدلال اول وجود دارد که یکی از ویژه
که همیشه نام برنامه ای است که در حال اجرا است،
نام فایل اجرایی است.
و چه می کند این است که آن را جلوگیری از کاربر را از این برنامه در حال اجرا
با استدلال بیشتر یا کمتر.
به این دلیل که ما می خواهیم برای این حق را بررسی کنید دور است، زیرا
ما در واقع می تواند به دسترسی به این آرایه ی argv حق در اینجا قابل اعتماد
تا زمانی که ما بررسی کرده اید تا ببینید که چقدر بزرگ است.
>> یکی از اشتباهات رایج که من دیدم مردم بود بلافاصله در
و چنگ زدن و argv [1].
آنها می خواهم بحث اصلی خارج از آرایه ی گرفتن و انجام به من در آن چک کنید،
و پس از آن که می خواهم آزمون argc و همچنین آزمون بعدی،
یا نه بحث اول در واقع یک عدد صحیح در همان زمان،
و این که کار نمی کند چرا که در صورتی که هیچ استدلال عرضه شده وجود دارد
شما به گرفتن استدلال که وجود ندارد و یا تلاش برای گرفتن است که وجود ندارد.
>> چیز دیگری بزرگ است که شما باید توجه کنید این است که
شما همیشه می خواهید برای چاپ کردن برخی از مرتب کردن بر اساس پیام خطا مفید
به کاربر به شرق آنها را.
من مطمئن هستم که شما همه برنامه ها اجرا شود که در آن همه به طور ناگهانی آن را قفل،
و شما می توانید این گفت و گو کمی مضحک است که بالا میآید و می گوید:
چیزی به طرز وحشیانه ای مرموز و شاید به شما کد خطا یا چیزی شبیه به آن
که باعث می شود احساس ندارد.
این جایی است که شما واقعا می خواهید برای ارائه کاری مفید
و به کاربر هدف قرار داده به طوری که زمانی که آنها آن را اجرا کنید به: "اوه،" چهره خرما.
"من می دانم که دقیقا چه باید بکنید. من می دانم که چگونه به حل این مشکل است."
>> اگر شما یک پیام را چاپ نمی کند، و سپس شما را تا پایان در واقع
ترک کاربر به کد منبع خود را مورد بررسی قرار
برای کشف کردن آنچه رفت را اشتباه.
هم وجود دارد برخی از بار که شما از کدهای خطا های مختلف استفاده کنید.
در اینجا ما فقط با استفاده از یک تا بگویم این بود که خطا وجود دارد،
خطا بود، خطا وجود دارد.
بزرگتر برنامه، اغلب برنامه هایی که توسط برنامه های دیگر نامیده می شود،
برخی از مرتب کردن بر اساس از کدهای خطا های ویژه در حالات مختلف را به شما بر می گردانند
برنامه نویسی ارتباط برقرار آنچه که شما در غیر این صورت
فقط یک پیام زیبا انگلیسی استفاده کنید.
دانلود.
همانطور که ما کار کردن، شما می توانید ببینید که ما خارج کلیدی بکشید.
ما تست کنید اگر کلید متناسب است.
ما با دریافت یک پیام از کاربر است.
به این دلیل که ما این کار را در این می توانم در حالی که حلقه و این چیزی است که ما را پوشش دهد
در کمی، اما معلوم می شود که اگر شما نوع کنترل D
هنگامی که شما که GetString سریع در ترمینال
آنچه که در واقع نشانی از آن را می فرستد که از کاراکتر ویژه
به برنامه است.
ELF یا پایان از شخصیت فایل نامیده می شود.
و در آن صورت، رشته پیام ما خواهد بود تهی،
بنابراین این چیزی است که ما برای این مشکل بررسی مجموعه خود نیست.
>> اما همانطور که ما به در، در حال حاضر که ما ام شروع به صحبت در مورد اشاره گر
و تخصیص حافظه پویا در heap،
برای چک کردن تهی هر زمان که شما یک تابع است که ممکن است
بازگشت تهی به عنوان یک ارزش، چیزی است که شما می خواهید به در عادت انجام می.
این است که در اینجا در درجه اول برای تصویر است.
اما زمانی که شما ببینید GetString در آینده،
پس از مشکل تنظیم 4 در، شما می خواهید به این را در ذهن.
باز هم، این موضوع برای مشکل مجموعه 3 یا از آنجایی که ما تا به حال آن را پوشش داده نشده است، نمی باشد.
در نهایت، ما را به این بخش که در آن ما را به حلقه اصلی رمزگذاری کنید.
و یک زن و شوهر از چیزهایی رفتن در اینجا وجود دارد.
اول، ما بیش از رشته کل پیام خود را تکرار.
در اینجا ما تماس strlen در شرایط نگه داشته ام،
که تعدادی از شما اشاره کرده اند یک راه بسیار خوبی برای رفتن نیست.
به نظر می رسد در این مورد نیز بزرگ نیست،
تا حدودی به دلیل، ما در حال تغییر محتوای پیام خود را
در داخل حلقه، بنابراین اگر ما دارای یک پیام است که 10 حرف طولانی،
اولین بار ما شروع که برای حلقه strlen چه بازگشت؟
10.
>> اما اگر ما پس از آن پیام را تغییر دهید، می گویند ما 5 شخصیت خود را تغییر دهید،
و ما در \ 0 کاراکتر در موقعیت 5 پرتاب،
در تکرار بعدی strlen (پیام) باز خواهد گشت آنچه در آن انجام داد
اولین بار است که ما تکرار،
اما آن را به جای 5 از آنجا که ما در آن نابودگر تهی انداختند بازگشت،
و طول رشته تعریف شده است
موقعیت که \ 0.
در این مورد، این یک راه بسیار خوبی برای رفتن از آنجا که ما در حال تغییر در محل است.
اما شما متوجه است که این است که در واقع جای تعجب ساده به رمز در آوردن
اگر شما می توانید محاسبات ریاضی درست است.
تمام است که لازم است برای بررسی اینکه آیا یا نه که شما دنبال آن هستید در نامه
بزرگ یا کوچک است.
>> به این دلیل که ما فقط باید برای آن را بررسی کنید و ما لازم نیست برای چک کردن
مورد آلفا است، زیرا
اگر یک شخصیت بزرگ است و یا اگر آن را به حروف کوچک
سپس آن را قطعا یک کاراکتر الفبایی،
چون ما رقم بزرگ و کوچک ندارد.
چیز دیگری که ما انجام می دهیم و این است که کمی از روی حیله و تزویر
این است که ما تغییر فرمول استاندارد رمزنگاری سزار
که ما در مجموعه مشخصات مشکل داد.
چه متفاوت اینجا است که ما کم
در مورد سرمایه بزرگ A، و سپس افزود: سرمایه
پشت در در پایان.
>> من می دانم که تعداد کمی از شما این کار را در کد خود را انجام داده است.
آیا هر یک از شما این کار را در ارسالی های شما؟
شما این را. آیا می توانید توضیح دهید که چه می کند این، Sahb؟
با کم کردن آن را، چرا که شما به وزارت دفاع پس از آن بود،
شما باید آن را از، به طوری که شما می توانید [سرفه] موقعیت.
و سپس با اضافه کردن آن را به عقب بعد شما بیش از یکی که به شما می خواستم منتقل شده است.
بله، دقیقا.
چه Sahb گفت این بود که وقتی ما می خواهیم برای اضافه کردن
پیام ما و کلید با هم
و پس از آن وزارت دفاع، وزارت دفاع، که توسط NUM_LETTERS،
اگر ما پیام ما را به محدوده مناسب 0 تا 25 در مقیاس نه برای اولین بار،
پس از آن ما ممکن است در نهایت گرفتن تعداد واقعا عجیب و غریب
به این دلیل که ارزش های است که ما به دنبال آن هستید در زمانی که ما در پیام های [i]،
هنگامی که ما در شخصیت i ام از متن پیام شخصی ما نگاه کنید،
ارزش جایی در این محدوده 65 تا 122
بر اساس ارزش ASCII بزرگ از طریق حروف کوچک Z.
و تا زمانی که آن را ما در وزارت دفاع با 26 یا NUM_LETTERS
پس از آن ما بود # در بالا سمت راست را تعریف کنیم تا در اینجا،
که به ما یک ارزش است که در محدوده 0 تا 25 به شما بدهد،
و ما نیاز به یک راه به آن مقیاس است که به
و آن را در محدوده مناسب ASCII.
ساده ترین راه برای انجام این کار این است که تنها در مقیاس همه چیز
به محدوده 0 تا 25 برای شروع،
و پس از آن همه چیز تغییر در پایان.
>> یکی دیگر از خطاهای متداول که معمولا من مردم را دیدم به اجرا است که
اگر واقعا انجام این پوسته پوسته شدن حق دور
و پیام و کلید به شما اضافه کردن با هم و شما آنها را اضافه کنید، می گویند،
را به یک متغیر کاراکتر، مشکل با آن
است، چرا که پیام های [i] تعداد نسبتا بزرگ برای شروع با
به یاد داشته باشید آن حداقل 65 است اگر آن شخصیت بزرگ
اگر شما دارای یک کلید بزرگ، می گویند، چیزی شبیه به 100،
و کسانی که 2 شما اضافه کردن با هم به کاراکتر امضا شده که شما در حال رفتن به سرریز است.
شما در حال رفتن به یک مقدار که بزرگتر از 127،
که بزرگترین ارزش است که یک متغیر کاراکتر را می توانید نگه دارید.
باز هم، به همین دلیل است که شما می خواهم می خواهم که مرتب سازی بر اساس چیزی که برای شروع به انجام.
برخی از مردم در اطراف آن صورت با انجام این کار اگر دیگری و تست کردم
برای دیدن اگر آن را سرریز قبل از انجام این کار،
اما این راه می شود در اطراف آن است.
و پس از آن در این راه حل چاپ از تمام رشته در پایان بسیار است.
افراد دیگر چاپ یک کاراکتر در یک زمان. هر دو عالی هستند.
در این مرحله، شما بچه ها باید هر گونه سؤال، هر گونه اظهار نظر در مورد این؟
چیزهایی که دوست دارید، همه چیز شما را دوست ندارند؟
>> من تا به حال یک سوال.
شاید من آن را در طول توضیح خود را از دست رفته، اما چگونه این برنامه
جست و خیز فاصله ها را برای اتصال کلید به طول از متن؟
این فقط سزار رمزنگاری. >> اوه، ببخشید، آره.
آره، ما را مشاهده کنید.
در رمزنگاری سزار ما در اطراف آن به دلیل
ما فقط بدبختانه کاراکتر باشد.
ما فقط آنها را به چرخش اگر آنها بزرگ یا کوچک است.
شما بچه ها احساس خیلی خوبی در این مورد؟
احساس رایگان برای کپی کردن این خانه، آن را،
مقایسه آن را به آنچه که شما بچه ها نوشت.
قطعا برای ارسال سوالات در مورد آن بیش از حد احساس راحتی کنید.
و دوباره، درک کنند که هدف در اینجا با مشکل شما مجموعه
به شما بچه ها کد کامل برای مجموعه مشکل خود را به نوشتن.
این یک تجربه یادگیری است. آره.
>> برگشت به انجام در حالی که حلقه، اگر آن را برابر تهی،
بنابراین تهی فقط به معنای هیچ چیز، آنها فقط ضربه را وارد کنید؟
صفر یک مقدار اشاره گر خاص است،
و ما از تهی زمانی که ما می خواهیم برای گفتن
ما باید یک متغیر اشاره گر است که با اشاره به هیچ چیز.
و بنابراین، به طور معمول به این معنی است که این متغیر، این متغیر پیام
خالی است، و در اینجا، از آنجا که ما در حال استفاده از CS50 نوع رشته خاص،
چه نوع رشته CS50 است؟
آیا شما دیده می شود آنچه در آن است هنگامی که دیوید به عقب کشیده هود در سخنرانی؟
بد بو آن را در یک اشاره گر است، درست است؟
خوب، آره. >> * کاراکتر است.
و پس در واقع ما می تواند جایگزین
حق در اینجا با کاراکتر * پیام،
و به همین ترتیب GetString تابع، اگر آن را نشانی از موفقیت یک رشته از کاربر،
آن می تواند یک رشته را تجزیه و تحلیل کند، و یک مورد که در آن می توانید یک رشته را تجزیه و تحلیل کند
اگر کاربر انواع فایل از شخصیت، D کنترل،
که چیزی است که شما به طور معمول نمی باشد، اما اگر اتفاق می افتد که
سپس تابع مقدار صفر را به عنوان یک راه گفت: بازگشت
"هی، من یک رشته نیست."
چه اتفاقی می افتد اگر ما پیام قرار نیست = تهی،
که چیزی است که ما انجام نشده است هنوز؟
چرا که یک مشکل در اینجا؟
از آنجا که من می دانم که ما کمی در سخنرانی در مورد نشت حافظه صحبت کردیم.
آره، اجازه دهید آن، و اجازه دهید ببینیم که چه چیزی اتفاق می افتد.
>> سوال ریحان بود چه اتفاقی می افتد اگر ما در واقع نه
این پیام = آزمون تهی؟
بیایید حرکت به بالا.
شما بچه ها می توانند از این نظر.
در واقع، من آن را در یک تجدید نظر صرفه جویی کنید.
این کار باعث می شود ویرایشهای 3.
آنچه شما باید برای انجام این برنامه برای اجرا است شما باید این آیکون چرخ دنده کلیک کنید تا در اینجا،
و شما باید بحث ها و منازعات را به به آن اضافه کنید.
شما باید به آن استدلال اصلی را از ما می خواهیم در یک آرگومان خط فرمان منتقل می کند.
در اینجا من قصد دارم به آن شماره 3. من دوست دارم 3.
در حال حاضر زوم کردن از پشت، این برنامه در حال اجرا است.
این در حال اجرا، تدوین، ساخت.
در اینجا ما بروید. این انتظار به خواسته خواهد شد.
اگر من به چیزی مانند خوش آمدید که در آن نوع می باشد که رفتن؟
آه، برنامه من در زمان بیش از حد طولانی برای اجرا. من برای بیش از حد طولانی jawing شد.
در اینجا به آن می رود.
در حال حاضر من در خوش آمدید تایپ کنید.
ما می بینیم که آن را برای رمز گذاری مناسب است.
حالا چه اتفاقی می افتد اگر ما از GetString سریع برای بازگشت به تهی؟
به یاد داشته باشید، من گفت که ما این کار را انجام دادیم با فشار دادن D کنترل در همان زمان.
من رفته تا اینجا. ما دوباره آن را اجرا کنید.
ساختمان. آن می رود وجود دارد.
حالا وقتی که من شاهد D
من این خط که می گوید opt/sandbox50/bin/run.sh، تقسیم بندی گسل.
شما بچه ها دیده می شود که قبل از؟
>> [دانشجو] چرا هیچ >> متاسفم؟
[دانشجو] چرا هیچ روگرفت هسته ای در این مورد وجود دارد؟
روگرفت هسته ای است، سوال این است که چرا وجود دارد هیچ روگرفت اصلی در اینجا؟
سوال این است که ممکن است وجود داشته باشد، اما روگرفت اصلی یک فایل
می شود که بر روی هارد دیسک ذخیره می شود.
در این مورد افسردگی هسته غیر فعال ایم
بر روی سرور اجرا به طوری که ما نمی مردم SEG گسلش
و ساخت تن از افسردگی های هسته ای است.
اما شما ممکن است دریافت کنید.
افسردگی هسته نوع از چیزی است که شما اغلب می توانید غیر فعال کردن،
و گاهی اوقات شما را انجام دهد.
تقسیم بندی گسل، برای پاسخ به سوال شما، ریحان،
می گوید که ما در تلاش برای دسترسی به یک اشاره گر
بود که برای اشاره به هر چیزی تنظیم نشده است.
به یاد داشته باشید Binky در این ویدئو که Binky تلاش می کند تا
برو دسترسی به یک اشاره گر است که به هر چیزی اشاره نمی؟
در این مورد من حدس می زنم از لحاظ فنی اشاره گر با اشاره به چیزی است.
این اشاره به تهی، که از نظر فنی 0،
اما تعریف شده است که در یک بخش است که در دسترس نیست
برنامه های خود را، به طوری گسل تقسیم بندی شما می توانید
دلیل این که شما در حال دسترسی به حافظه نیست که در یک بخش معتبر
مانند بخش پشته یا پشته یا بخش داده ها.
دانلود.
هر گونه سؤال در مورد سزار؟
>> اجازه دهید. بیایید نگاهی در ویرایشهای 2 واقعا به سرعت.
که Vigenère است.
اینجا، در Vigenère
ما را از طریق یکی از این راه رفتن خیلی سریع به این دلیل، دوباره،
Vigenère و سزار کاملا مشابه است.
نظر هدر است قبل از آن،
# تعریف این است که قبل برای جلوگیری از استفاده از این اعداد جادویی است.
چیز خوبی است که می گویند ما می خواستیم را به حرکت به
الفبای مختلف و یا چیزی شبیه به آن.
به جای نیاز به رفتن به دستی تغییر از 26 در کد
ما می تواند به 27 تغییر دهید و یا رها کردن آن پایین
اگر ما با استفاده از حروف مختلف، زبان های مختلف.
باز هم، ما باید این چک شمارش استدلال،
و واقعا شما تقریبا می توانید این را به عنوان یک الگو.
تقریبا در هر برنامه تو می نویسم باید
اگر آن طول می کشد خط فرمان استدلال برخی از دنباله ای از خطوط
بار خوانده شده است که شبیه به این در همان ابتدا.
این یکی از آزمون های سلامت عقل شما می خواهید به انجام.
>> در اینجا چیزی است که ما آیا ما ساخته شده مطمئن بود که
کلید واژه ها معتبر بود، و که چک دوم که ما بود.
دوباره توجه کنید که ما این کار را از argc و 2 از هم جدا.
توجه داشته باشید که در این مورد یک چیز است که ما تا به حال انجام بود به جای
با استفاده از یک به من می خواستم به اعتبار تمام رشته،
و به منظور انجام این کار شما در واقع به شخصیت، به شخصیت
در طول رشته.
هیچ راه خوبی تا فراخوانی چیزی بر روی آن وجود دارد
زیرا حتی، به عنوان مثال، به من خواهد شد 0 بازگشت
اگر می توان آن را یک عدد صحیح را تجزیه و تحلیل کند، به طوری که حتی کار نمی کند.
باز هم پیام خوب گفتن که کاربر دقیقا چه اتفاقی افتاده است.
و سپس در اینجا، دوباره، ما نیز مورد رسیدگی که در آن
نوع کاربر در کنترل شخصیت D تصادفی.
>> و پس از آن شارلوت سوال قبلی در مورد چگونگی مدیریت به جست و خیز فضاهای
در رشته ما در اینجا.
این نوع از شبیه به چیزی است که ما با این برنامه مای اسپیس
که در بخش انجام داد، و این راه به کار کرده است
این است که ما به دنبال تعدادی از حروف را که ما می دانستم.
همانطور که ما بیش از رشته پیام راه می رفت، همانطور که ما در طول کاراکتر به کاراکتر راه می رفت،
شاخص را به عنوان بخشی از ما را برای حلقه ردیابی، و پس از آن ما نیز به دنبال
تعداد حروف، به طوری که شخصیت های غیر ویژه، غیر ارقام، فضای غیر سفید
که ما در متغیر جداگانه دیده می شود می خواهم.
و سپس این راه حل تغییر کلید
برای به دست آوردن یک عدد صحیح کلید واقعی است، و آن را ندارد که در پرواز،
درست قبل از آن پس از آن می رود به رمز در آوردن پیام شخصیت واقعی است.
برخی از راه حل هایی که کاملا بیش از حد بزرگ وجود دارد
که کلید در هنگام تست برای اعتبار کلید را تغییر دهید.
علاوه بر این مطمئن شوید که شخصیت و کلمه کلیدی
شخصیت الفبایی آن را نیز که به یک عدد صحیح تبدیل
در محدوده 0 تا 25 پس از آن نیاز به انجام این کار بعد ها در این حلقه برای پرش.
باز هم، شما اینجا را ببینید این است که واقعا کد دقیقا همان
که ما در سزار در این نقطه استفاده می شود.
شما در حال انجام چیزی که دقیقا همان طوری حقه واقعی است تا بدانند که
چگونه به نوبه خود کلید واژه ها را به یک عدد صحیح است.
>> یکی از چیزهایی که ما در اینجا است که کمی متراکم
این است که ما تکرار این عبارت، من حدس می زنم شما می توانید از آن تماس،
3 بار جداگانه در خطوط 58، 59، و 61.
کسی می تونه توضیح آنچه که دقیقا این عبارت می کند؟
این دسترسی به یک شخصیت مثل شما گفت.
آره، آن [نامفهوم] شخصیت در کلید واژه ها،
و پس از آن تعدادی از حروف دیده می شود زیرا شما تنها در حال حرکت
واژه کلیدی هنگامی که شما این نامه را دیده ام،
به طوری که به طور موثر به جست و خیز فضاها و چیزهای شبیه به آن است.
بله، دقیقا.
و سپس یک بار شما را دیده ام خالی کلید واژه شما فقط وزارت دفاع، بنابراین شما حرکت به عقب در اطراف.
دقیقا. این یک توضیح کامل است.
کوین گفت این است که ما می خواهیم به شاخص به کلمه کلیدی.
ما می خواهیم شخصیت num_letters_seen، اگر شما خواهد شد،
اما اگر num_letters_seen بیش از طول کلید واژه ها
راه ما به عقب بر گردیم به محدوده مناسب اپراتور وزارت دفاع استفاده می کنیم
به طور موثر اطراف بپیچید.
به عنوان مثال، در کوتاه مدت، کلمه کلیدی بیکن است،
و آن را 5 حرف است.
اما ما 6 نامه در متن ساده ما در این نقطه دیده می شود
و رمز 6.
ما به پایان خواهد رسید تا دسترسی به num_letters_seen،
که 6 است، وزارت دفاع، طول کلمه کلیدی، 5،
و به همین ترتیب خواهیم 1، دریافت و چه خواهیم انجام دهیم این است که ما خواهیم
دسترسی به داخل شخصیت برای اولین بار واژه ما را در آن نقطه است.
>> تمام حق، هر گونه سوال در مورد Vigenère
قبل از اینکه ما حرکت می کند؟
شما بچه ها احساس خیلی خوبی در این مورد؟
دانلود، بزرگ است.
من می خواهم تا مطمئن شوید که شما بچه ها در حال گرفتن فرصت برای دیدن کد
که ما فکر می کنیم که به نظر می رسد خوب است و فرصتی برای یادگیری از آن.
این است برای رفتن به گذشته ما خواهید بود با استفاده از فضاهای در حال حاضر،
و ما در حال رفتن به انتقال در حال حاضر، و من قصد دارم به رفتن به cs50.net/lectures
بنابراین ما می توانیم کمی از بررسی مسابقه انجام دهد.
بهترین راه این است که من فکر می کنم برای شروع به انجام آزمون بررسی
برای آمدن به این صفحه سخنرانی، cs50.net/lectures،
و در زیر هر یک از عناوین هفته، به طوری که اگر من در اینجا نگاه کنید در هفته 0،
من می بینم که ما یک لیست از موضوعاتی که ما در هفته 0 پوشانده است.
>> اگر هر کدام از این موضوعات به نظر می رسد نا آشنا به شما
شما قطعا باید به عقب برگردید و صیقلی کردن جزوات درسی و احتمالا می خواهم
حتی تماس مختصر حاصل کردن از طریق سخنرانی، آنها را به تماشای دوباره اگر شما می خواهید
برای گرفتن احساس برای چه خبر است با هر یک از آن موضوعات است.
من علاوه بر این می گویند یک سال از منابع سرد ما داریم
این شلوارک است که ما ایجاد کرده اید، و اگر شما در هفته 0،
ما همه از مباحث پوشش داده شده را ندارد، اما ما باید کاملا چند از آنها،
برخی از آنهایی که سختتر است، به طوری که تماشای دوباره این شورت
یک راه خوب برای شما تا سرعت است.
به طور خاص، من قصد دارم که در یک پلاگین برای 3 قرار داده است در پایین، از آنجایی که من به افراد است.
اما اگر شما در حال مبارزه با باینری، بیت، سحر و جادو، این نوع از مسائل،
دودویی جایی عالی برای شروع است.
ASCII یکی دیگر که برای دیدن بیش از حد خوب است.
شما حتی می توانید به من در سرعت 1.5x تماشا کنید اگر من قصد دارم برای شما بسیار آهسته است.
از آنجا که بررسی آن، در صورت تمایل به انجام این کار.
>> فقط برای شروع واقعا به سرعت، ما قصد داریم از طریق یک زن و شوهر از مشکلات این مسابقه
فقط به سرعت از طریق این دائما و شدیدا چیزی را تکان دادن و بم زدن.
به عنوان مثال، اجازه دهید نگاهی در مشکل 16 که من در اینجا در هیئت مدیره کردم.
ما این محاسبات زیر را در باینری کردم،
و ما می خواهیم برای نشان دادن هر کار است.
خوب، من قصد دارم به این شات است.
شما بچه ها باید همراه با کاغذ،
می کنیم و این واقعا به سرعت انجام دهد.
ما می خواهیم برای انجام محاسبات زیر را در باینری.
من 00،110،010.
و من می خواهم برای اضافه کردن به آن 00،110،010.
برای ریاضی نوابغ همراه در خانه،
این است که به طور موثر با 2 ضرب است.
شروع میکنم.
ما قصد داریم به دنبال الگوریتم علاوه بر این همان است که ما انجام می دهیم
هنگامی که ما اضافه کردن اعداد اعشاری با هم.
در واقع تنها تفاوت در اینجا این است که ما حلقه به عقب در اطراف
زمانی که ما 1 + 1 به جای زمانی که ما به 10 است.
>> اگر ما از سمت راست شروع می کنید، واقعا به سرعت، رقم اول چیست؟
[دانشجو] 0. >> [مقابله H.] 0.
بزرگ، رقم دوم؟
[دانشجو] 1.
[مقابله H.]، 1؟ 1 + 1 است؟
[دانشجو] 10.
[مقابله H.] دقیقا، پس چه رقمی است که من مینویسم درست در زیر 2 آنهایی هم اضافه شده است؟
[دانشجو] 1، 0، 0 یا و سپس حمل 1.
[مقابله H.] 0 و حمل 1، دقیقا.
بعد یکی، ریحان، شما هستید.
سوم >> [ریحان] 1.
[مقابله H.] 1، کامل است. کوین؟
[کوین] 0. >> [مقابله H.] 0، شارلوت؟
[شارلوت] 0. >> [مقابله H.] آره، و چه می توانم بکنم؟
[دانشجو] 1.
[مقابله H.] و آنچه را می توانم انجام دهم؟ و پس از آن من حمل 1.
کامل، Sahb؟ >> [Sahb] حالا شما باید 1.
[مقابله H.] و آیا من هیچ چیز در اینجا؟
[Sahb] پس از آن برای یک آینده شما 1 دلیل این که شما بیش از 1 انجام شده است.
[مقابله H.] بزرگ، بنابراین در اینجا ما می توانیم آن را به پایان برساند.
دانلود.
[دانشجو] 0 + 0 = 0؟
0 + 0 = 0.
1 + 1، مثل شما گفت، 10، 1، 0، و نه.
10 اسم بی مسمی است، زیرا به من 10 به معنای شماره 10،
و این تغییر ناگهانی که چگونه ما آن را به نمایندگی از زمانی که ما در حال نوشتن آن است.
ما نمایندگی شماره 2، 1، 0 و عدد 10 است کمی متفاوت است.
>> چه خبر از نوع خوبی در مورد باینری است که واقعا وجود دارد که بسیاری از
موارد شما نیاز به یادگیری.
0 + 0 = 0، 0 + 1 = 1 وجود دارد،
1 + 1 0 است، و سپس حمل 1،
و سپس شما را در اینجا می توانید ببینید که در ستون سوم از سمت راست
ما تا به حال این 1، 1 و 1.
1 + 1 + 1، 1،
و شما انجام یکی دیگر از 1.
هنگامی که شما در حال انجام باینری علاوه بر این، خیلی ساده است.
من می خواهم یک زن و شوهر از این به سلامت عقل خود را چک کنید
قبل از اینکه شما به دلیل این است که بروید
احتمالا چیزی است که ما در مسابقه خواهید را ببینید.
در حال حاضر این یکی بعدی را به عنوان به خوبی بگذارید.
مشکل 17 را انجام دهید.
ما قصد داریم برای تبدیل زیر را به عدد دودویی دهدهی است.
من 10100111001.
به یاد داشته باشید در این ویدئو دودویی که من
من را از طریق یک زن و شوهر نمونه راه می رفت، و من نشان داد که چگونه
همه چیز کار می کند زمانی که شما در حال انجام آن را در دهدهی است.
هنگامی که شما در حال کار در نمایندگی اعشاری، من فکر می کنم ما
در این نقطه در زندگی ما در آن روان است که
آن را بسیار آسان برای براق در طول مکانیک از اینکه چگونه آن را در واقع با این نسخهها کار.
>> اما برای انجام روکش سریع، اگر من به شماره 137
این واقعا به معنی و دوباره، این است که در دهدهی نمایندگی
شماره 137 در اعشاری به این معنی است که من آن را 1 × 100 + 3 × 10 + 7 * 1.
این همه ماندن بر روی صفحه نمایش است.
و پس از آن اگر شما در این اعداد نگاه کنید اینجا
100، 10 و 1، شما می بینید که آنها در واقع تمام قدرت از 10.
من 10 ²، 10 ¹، و 10 به صفر است.
ما باید یک نوع مشابه از چیزی در دودویی،
جز این که پایگاه ما، که ما آن را، 2 به جای 10 می باشد.
این 10S که من نوشتم در اینجا در پایین،
این ² 10، 10 ¹، 10 صفر، 10 پایگاه ما است،
و توان، 0، 1، یا 2،
موقعیت رقمی در تعداد است که می نویسیم را دارد.
1، اگر ما در آن نگاه کنید، این 1 است در موقعیت 2.
3 در موقعیت 1 و 7 در موقعیت 0.
این که ما چگونه شارحان مختلف برای پایگاه های ما می باشد.
>> پس همه از این we'll در واقع، شما می دانید چه؟
خواهیم انجام دهید که در آن خنثیسازی دکمه من؟
آن می رود وجود دارد.
من عاشق این خنثیسازی چیزی.
پس از این من برای من حداقل فکر می کنم
ساده ترین راه برای شروع به تبدیل یک عدد دودویی
و یا یک عدد هگزادسیمال که در آن پایه 16
و 10 یا 2 به جلو بروید و نوشتن
پایگاه و شارحان برای همه اعداد در عدد باینری من در بالا است.
اگر ما از چپ به شروع دوباره درست شد،
است که نوع counterintuitive،
من بر می گردم به سیاه و سفید تغییر دهید در اینجا، ما باید 2 تا موقعیت 0،
و پس از آن ما را 2 ¹، 2 ²
و پس از آن از 2 تا 3، 2 تا 4، 2 به 5، 6،
7، 8، 9، و 10.
این شماره من نوشته شده است، همه شارحان.
من فقط نوشت: پایگاه در اینجا در 3 برای اولین بار فقط برای فضای.
>> در این مرحله من قصد دارم به جلو بروید و من در واقع رفتن به پاک کردن
چیزهای که ما در اعشاری انجام داد، در صورتی که درست است.
شما تمام کردم که.
کسانی که از شما تماشای آنلاین من مطمئن هستم که قادر خواهد بود به من عقب اگر شما می خواهم.
سوئیچینگ بازگشت به قلم.
در حال حاضر، آنچه که ما میتوانیم انجام دهیم اگر شما بچه ها کاملا به سرعت بر قدرت خود را از 2،
که کاملا سرد است.
این اتفاق می افتد. من درک می کنم.
من یک بار در یک مصاحبه شغلی جایی که من گفته شد من باید تمام قدرت از 2
تا از طریق 2 تا 30.
این یک کار من نیست.
به هر حال، شما بچه ها می توانید پیش بروید و برای انجام محاسبات ریاضی اینجا را کلیک کنید.
اما با باینری آن را واقعا نمی کند احساس،
و نه معنی آن را با اعشار و یا هگزادسیمال یا،
برای انجام محاسبات ریاضی که در آن شما باید صفر است.
شما می توانید ببینید من 0 در اینجا، 0، 0 در اینجا، 0 در اینجا، 0 در اینجا، 0 در اینجا.
چرا آن را حس نمی ممکن است ریاضی واقعی برای انجام
برای محاسبه قدرت مناسب 2 که برای موقعیت؟
دقیقا مانند شارلوت گفت، آن خواهد بود 0.
و همچنین ممکن است خود را به صرفه جویی در وقت اگر محاسبه قدرت 2 کت و شلوار قوی نیست.
در این مورد، ما فقط نیاز به آن را برای 2 محاسبه به 0 است؟
[دانشجو] 1.
[H. مقابله و] 1، 2 به 3 که است؟
[دانشجو] 8. >> [مقابله H.] 8.
2 تا از 4؟
[دانشجو] 2. من متاسفم، 1.
[مقابله H.] 2 تا 4 16 است، دقیقا.
2 به 5، کوین؟ >> 32.
[مقابله H.] 32، 2 به 8؟
[دانشجو] 32 × 8، 256.
[مقابله H.] کامل.
و 2 تا از 10؟
[دانشجو] 1024.
[مقابله H.] آره، 1024.
>> زمانی که ما این اعداد ما می توانیم همه آنها را خلاصه کردم.
و این جایی است که آن را به انجام چند چیز واقعا مهم است.
یکی آهسته و پیوسته و کار خود را چک کنید.
شما می توانید بگویید که: 1 در پایان از این تعداد،
بنابراین من قطعا باید یک عدد فرد به عنوان نتیجه،
چون تمام آنهایی که دیگر در حال رفتن به حتی اعداد
با توجه به اینکه آن را به یک عدد دودویی است.
چیز دیگری برای انجام این کار این است که اگر شما به این نقطه در آزمون دریافت
و شما آن را نوشته شده است از این دور
و شما در حال اجرا خارج از زمان
نگاهی به تعدادی از نقاط که این مشکل این است که ارزش است.
این مشکل، به عنوان شما می توانید ببینید اگر من تلنگر برگشت به لپ تاپ من واقعا به سرعت
این مشکل این است که به ارزش 2 امتیاز، به طوری که این نوع علاوه بر این نیست
شما باید از طریق رفتن اگر شما واقعا برای زمان فشرده شده است.
اما ما خواهید تغییر دهید به iPad، و ما را از طریق آن واقعا به سرعت.
>> من می خواهم به انجام این کار تعداد کم برای اولین بار
به دلیل پیدا کنم که آسان تر است.
من دوست دارم 32 و 8 زیرا آنها با هم خیلی به راحتی، و ما 50.
16 و 1 می شود 17.
وجود دارد ما 57،
و پس از آن ما می توانیم انجام بقیه از این، به طوری که ما می توانیم 57، انجام 156.
در تاریخ آمده است.
مرد، خوب، اجازه دهید را ببینید.
ما تا به حال 57، 256، و 1024.
در این نقطه، من ترجیح می دهم فقط از طریق بروید.
من هیچ سرنخی است. من به وضوح نیاز به خواندن در این.
7، 6، 4، شما 17.
1، 5، 5، 2، 13.
در مرحله بعد 3 ما را دریافت کنید، و پس از آن 1 ما دریافت کنید.
1337.
تخم مرغ عید پاک، هر کسی؟
هر کسی تشخیص این شماره؟
کریس شماره را به رسمیت می شناسد. به چه معنی است، کریس؟
[کریس] Leet.
Leet، ​​بنابراین اگر شما در این مورد نگاه کنید، آن را مانند leet به نظر می رسد.
مسائل هکرها. سازمان دیده بان را برای این نوع از مسائل در کوتاه مدت و یا مسابقه، و نه.
اگر شما می بینید که نوع مسائل و شما تعجب متعجب،
است که در واقع ممکن است به معنای چیزی است.
نمی دانم. دیوید دوست دارد قرار دادن آن شوید.
این یک راه خوب برای سلامت عقل آن را چک کنید.
مانند خوب، من می توانید ببینید چه خبر است.
>> این هفته 0/Week 1 مسائل است.
اگر ما تغییر برگشت به لپ تاپ خود را در حال حاضر،
زوم کردن، و زن و شوهر از چیزهای دیگر.
این ASCII وجود دارد، که ما انجام داده ایم تعداد زیادی از با مجموعه مشکل است.
این مفهوم سرمایه A. آنچه که واقعا؟
دانستن این عدد صحیح دهدهی است.
65 سال است آنچه در آن است که در جدول ASCII نقشه برداری،
و این که در نتیجه کامپیوتر چگونه آن را می نویسد،
و این که چگونه ما در حال دور شدن با واقع نوشتن
سرمایه شخصیت و شخصیت کوچک
در برخی از این راه حل ها و مجموعه ها که شما انجام شده است.
یک زن و شوهر از چیزهای دیگر.
ما باید عبارات، عبارات بولی، شرایط، حلقه ها، متغیرها و موضوعات است.
>> کسانی که همه را به حس در بیشتر قسمت ها به نظر می رسد؟
برخی از این اصطلاحات بد بو کمی در زمان است.
من می خواهم به یک جمله فکر می کنم چیزی بیشتر قسمت ها به پایان می رسد که با یک سمی کولن.
اظهارات مانند x = 7، که مجموعه یک متغیر،
احتمالا به نام x = 7.
احتمالا X نیز یک نوع است که می تواند ذخیره شماره 7،
پس از آن از نوع int و یا احتمالا یک شناور و یا کوتاه و یا یک کاراکتر است،
چیزی شبیه به آن.
یک عبارت بولی با استفاده از این دو برابر
و انفجار معادل یا برابر نیست، کمتر از بیشتر از
کمتر یا مساوی، به این نوع از مسائل است.
شرایط پس از آن اظهارات اگر دیگری است.
من را به یاد داشته باشید که شما می توانید دیگری را بدون متناظر اگر ندارد.
به همین ترتیب، شما می توانید دیگری را بدون متناظر اگر ندارد.
حلقه ها، به یاد 3 نوع از حلقه ایم چکش را به شما
برای زن و شوهر از بخش ها و مجموعه ها مشکل است.
با استفاده از انجام در حالی که زمانی که شما در حال گرفتن ورودی کاربر،
با استفاده از در حالی که حلقه تا زمانی که یک شرط خاص درست است،
و سپس با استفاده از این حلقه اگر شما نیاز به
می دانم که از حلقه تکرار شما در حال حاضر در این است که چگونه من در مورد آن فکر می کنم.
یا اگر شما در حال انجام برای هر کاراکتر در یک رشته که من می خواهم به انجام کاری،
برای هر عنصر در آرایه ای که من می خواهم به انجام کاری برای آن عنصر است.
>> موضوعات و وقایع.
این که ما را تحت پوشش به صراحت در C،
اما به یاد داشته باشید این کار را از ابتدا.
این مفهوم داشتن اسکریپت های مختلف است.
این نیز این مفهوم پخش یک رویداد.
بعضی از مردم پخش در پروژه های خود استفاده کنید در ابتدا،
که کاملا سرد است.
اما این 2 راه مختلف را از دست زدن به این مسئله بزرگتر به نام همزمانی،
که این است که چگونه شما می توانید برنامه را به اجرا
و یا ظاهرا در همان زمان اجرا؟
انجام وظایف مختلف در حال اجرا در حالی که کارهای دیگر نیز در حال اجرا است.
این است که چگونه سیستم عامل خود را به نظر می رسد به کار است.
به همین دلیل است، حتی اگر، برای مثال،
من مرورگر در حال اجرا کردم، من همچنین می توانید Spotify را روشن و پخش آهنگ.
که بیشتر از یک چیز مفهومی به درک.
من یک نگاه را در موضوعات کوتاه را انجام دهید
اگر شما می خواهم برای کسب اطلاعات بیشتر در مورد آن است.
>> بیایید ببینید، من اعتقاد دارم که ممکن است وجود داشته است
یک مشکل در این در یکی از این موارد است.
باز هم، من فکر می کنم موضوعات و وقایع چیزی است که ما در C را پوشش نمی
فقط به خاطر اینکه آن را به میزان قابل توجهی مشکل تر نسبت به خراش است.
شما نباید نگران باشید در مورد آن وجود دارد، اما قطعا درک مفاهیم،
درک چه خبر است.
قبل از اینکه ما در حرکت، هر گونه سوال در مورد هفته 0 ماده؟
همه احساس خیلی خوب است؟
متغیرهای درک و چه متغیر است؟
>> حرکت می کند. هفته 1.
زن و شوهر از چیزهایی که به خصوص تحت پوشش قرار نمی گیرد
در بررسی مسابقه لزوما و همچنین مفهومی تر همه چیز را به فکر کردن در مورد.
برای اولین بار این مفهوم از کد منبع، کامپایلرها و کد شی است.
هر کسی؟ ریحان.
شی کد من کد منبع این همان چیزی است که شما را به صدای جرنگ جرنگ قرار داده است،
و کد شی چه صدای جرنگ جرنگ قرار می دهد به طوری که کامپیوتر شما می تواند از این برنامه به عنوان خوانده شده.
دقیقا.
کد منبع کد C است که شما در واقع تایپ کردن است.
کد شیء همان چیزی است که شما می توانید از صدای جرنگ جرنگ.
این 0s و 1S که در قالب دودویی است.
پس از آن چه اتفاقی می افتد زمانی که شما یک دسته از فایل ها شی،
می گویند شما در حال تدوین پروژه و یا برنامه ای است که با استفاده از چندین فایل سورس کد،
که توسط کنوانسیون با توجه به فرمت فایل C است.
که چرا ما caesar.c، vigenère.c.
اگر شما در حال نوشتن برنامه های جاوا به شما بدهد آنها را به فرمت جاوا است.
برنامه های پایتون دارای پسوند. PY اغلب.
>> هنگامی که شما چندین فایل C، آنها را به شما کامپایل.
صدای جرنگ جرنگ تف این همه آشغال دودویی.
سپس دلیل این که شما فقط می خواهید 1 برنامه
شما باید لینکر لینک همه از این جسم فایل ها با یکدیگر
فایل اجرایی را به 1.
این است که چه اتفاقی می افتد زمانی که شما با استفاده از کتابخانه CS50، به عنوان مثال.
کتابخانه CS50 هر دو است که ساعت فایل هدر
که می خوانی، که # includecs50.h.
و بعد از آن نیز فایل باینری کتابخانه ویژه
شده است که وارد شده است 0s و 1S،
و پرچم است که-L، بنابراین اگر ما به عقب به فضاهای ما و ما نگاه واقعا سرعت
چه خبر است در اینجا هنگامی که ما به فرمان صدای جرنگ جرنگ ما نگاه کنید،
آنچه ما داریم این است که فایل های کد منبع ما در اینجا.
این دسته از پرچم کامپایلر.
و سپس در پایان، این لینک L پرچم در
فایل های باینری برای این 2 کتابخانه، کتابخانه CS50 و پس از آن کتابخانه ریاضی.
>> درک هر نوع هدف فایل
در فرایند تدوین، چیزی است که شما می خواهید می شود قادر به
را حداقل یک دید کلی سطح بالایی از.
کد منبع می آید. کد شیء بیرون می آید.
فایل کد لینک شی با هم، و شما می توانید زیبا، فایل اجرایی.
دانلود.
این هم که در آن شما می توانید خطا در نقاط مختلف
در فرآیند تدوین.
این است که در آن، به عنوان مثال، اگر شما را از ارتباط این پرچم،
پرچم CS50، و شما آن را حذف در فضاهای و یا زمانی که شما در حال اجرا کد شما
این جایی است که شما یک خطا در مرحله ارتباط،
و لینکر خواهد گفت: "با سلام، شما به نام تابع GetString
که در کتابخانه CS50. "
"شما به من گفت آن را در کتابخانه CS50 بود، و می توانید کد آن را پیدا کند."
که در آن شما باید به آن پیوند را در، و آن را جداگانه
از خطای کامپایلر چرا که کامپایلر این است که به دنبال در نحو و این نوع از مسائل است.
این را خوب می دانم چه خبر است در زمانی که.
>> چیزهای دیگر را می دانم.
من می خواهم بگویم که شما قطعا می خواهید به نگاهی به های کوتاه در typecasting انجام شده توسط اردن
به درک چه نوع داده int در زیر هود،
آنچه که کاراکتر در زیر هود هستند.
هنگامی که ما در مورد ASCII صحبت و ما در واقع در جدول ASCII نگاه کنید،
آنچه که انجام شده است به ما در زیر نگاه هود
چگونه کامپیوتر در واقع نشان دهنده سرمایه و 7 رقمی
و یک کاما و یک علامت سوال است.
کامپیوتر نیز دارای روش های ویژه ای برای نشان دادن
عدد 7 به عنوان یک عدد صحیح است.
این یک راه خاص به نمایندگی از عدد 7 به عنوان یک عدد ممیز شناور،
و کسانی که از آنها بسیار متفاوت است.
Typecasting این است که چگونه شما به کامپیوتر "هی، من می خواهم شما را به تبدیل
از یک نمایندگی به نمایندگی دیگری است. "
چرا ما نه نگاهی که در آن.
>> من هم که نگاهی کوتاه بر کتابخانه ها و کوتاه در کامپایلرهای کنند.
کسانی که بحث در مورد روند تدوین،
آنچه یک کتابخانه است و به بیش از برخی از این سوالات است که شما ممکن است خواسته.
پرسش و پاسخ در ماده 1 هفته؟
آیا هر موضوع در اینجا است که به نظر می رسد دلهره آور شما می خواهم برای پوشش دادن وجود دارد؟
من تلاش را از طریق بسیاری از این موضوعات قبل از آن ضربه، به طوری که ما می توانید به
اشاره گرها و انجام کمی از بازگشت است.
افکار؟
هر چیزی برای پوشش دادن؟
زمان برای برخی از شکلات شاید؟
شما بچه ها در حال کار را از طریق آن.
من قصد دارم برای حفظ sipping در قهوه ام.
هفته 2.
تماس، تماس خوب.
در هفته 2 ما کمی بیشتر درباره توابع صحبت کردیم.
>> در اولین مجموعه چند مشکل ما واقعا نمی نوشتن هر گونه توابع در
دیگر از آن تابع است؟
[دانشجو] صفحه اصلی >> صفحه اصلی، دقیقا.
و به این ترتیب دیده ایم لباس های مختلف که اصلی می پوشد.
که در آن طول می کشد بدون آرگومان وجود دارد،
و ما فقط می گویند خالی در بین پرانتز،
و پس از آن یکی دیگر که در آن ما می خواهیم را به استدلال خط فرمان وجود دارد،
و همانطور که ما دیدم، که در آن شما باید آرایه ی argv argc از نوع int و رشته
یا در حال حاضر که ما واقعا در معرض رشته به * کاراکتر آن است که
ما در حال رفتن به شروع به نوشتن آن را به عنوان کاراکتر * argv و سپس براکت.
در مجموعه مشکل 3، شما بچه ها را دیدم یک دسته از توابع،
و شما یک دسته از توابع اجرا، قرعه کشی، نگاه کردن، تقلا.
نمونه وجود دارد را برای شما نوشته شده است.
>> چیزی که من می خواستم در مورد اینجا صحبت با توابع واقعا به سرعت
این است که 3 بخش وجود دارد به آنها هر زمان که شما نوشتن یک تابع است.
شما باید برای تعیین نوع برگشتی تابع است.
شما باید برای تعیین یک نام برای تابع، و سپس شما باید مشخص کنید
لیست بحث یا لیست پارامتر.
برای مثال، اگر من برای نوشتن یک تابع برای جمع کردن یک دسته از اعداد صحیح
و پس از آن به من بازگشت به مجموع چه خواهد بود نوع بازگشت من
اگر من می خواستم به جمع اعداد صحیح و سپس بازگشت از مجموع؟
سپس نام تابع است.
اگر بروم جلو و نوشتن در سبز، این بخش از نوع بازگشت است.
این بخشی از نام است.
و پس از آن در میان پرانتز
جایی است که من به استدلال،
اغلب به صورت مختصر به عنوان استدلال میگیرد، گاهی اوقات پارامترهای پارامترهای نامیده می شود.
و اگر شما یک، شما فقط مشخص کنید.
اگر شما چند شما را با کاما از هم جدا هر یک از.
و برای هر استدلال شما را از آن 2 چیز است که عبارتند از: کوین؟
[کوین] شما باید به نوع و سپس نام و نام خانوادگی.
و سپس نام و نام این نام این است که شما قصد استفاده از
برای اشاره به آن استدلال در تابع مجموع،
در تابع که شما در حال نوشتن.
>> شما لازم نیست که به عنوان مثال، اگر من قصد دارم به طور خلاصه،
می گویند، یک آرایه از اعداد صحیح we'll انجام آرایه از نوع int،
و من خودم برخی از آکولاد دادن وجود دارد:
پس از آن زمانی که من یک آرایه به تابع مجموع
من آن را منتقل می کند در مقام اول فهرست استدلال است.
اما آرایه است که من در عبور ندارد ARR به نام.
ARR خواهد بود که چگونه من به آن استدلال در بدنه تابع اشاره.
چیز دیگری که ما باید به حساب آورد،
و این کمی متفاوت از توابع است، اما من فکر می کنم این نکته مهم است،
این است که در C وقتی که من نوشتن یک تابع مثل این
چگونه من می دانم که چگونه بسیاری از عناصر این آرایه در؟
این است که تا حدودی از سوال ترفند.
ما در این مورد صحبت کردیم کمی در بخش هفته گذشته است.
چگونه می توانم من می دانم که تعدادی از عناصر در داخل یک آرایه در C؟
آیا یک راه وجود دارد؟
>> به نظر می رسد که هیچ راهی برای دانستن وجود دارد.
شما باید آن را به طور جداگانه در عبور.
ترفند این است که شما می توانید انجام دهید وجود دارد
اگر شما را در همان تابع است که در آن آرایه اعلام شده است،
و شما در حال کار با آرایه پشته.
اما این تنها کار می کند که شما را در همان تابع هستیم.
هنگامی که شما یک آرایه به یک تابع دیگر و یا اگر شما یک آرایه اعلام کرد
و شما که آرایه را در پشته قرار داده، شما استفاده از malloc
و این نوع از مسائل، پس از آن همه شرط خاموش هستند.
سپس شما در واقع باید به تصویب اطراف
یک بحث خاص و یا یکی دیگر از پارامتر
گفتن شما چقدر بزرگ آرایه است.
در این مورد، من می خواهم می خواهم به استفاده از کاما-I'm با عرض پوزش، این خارج شدن صفحه نمایش در اینجا
و من می خواهم در یکی دیگر از بحث عبور
و آن را به لن از نوع int برای طول.
>> یکی از چیزهایی که ممکن است در می آیند تا در مسابقه
درخواست شما را به نوشتن و یا اجرای یک تابع خاص به نام چیزی شده.
اگر ما به شما نمونه نیست، بنابراین، این همه چیز در اینجا،
تمام این آشفته بازار به اعلان تابع یا نمونه اولیه تابع نامیده می شود،
این یکی از اولین چیزهایی است که شما می خواهید به ناخن اگر آن داده نشده است
به شما حق دور در مسابقه.
ترفند های دیگر من یاد گرفته ام این است که
می گویند ما به شما یک نمونه اولیه برای یک تابع را، و ما می گویند، "هی، تو نوشتن آن است."
در داخل آکولاد که شما در مسابقه
اگر شما توجه داشته باشید که یک نوع بازگشت وجود دارد و شما متوجه است که نوع بازگشتی
چیزی است که غیر از خلاء، که بدان معنی است که تابع چیزی بر نمی گرداند،
سپس یکی از چیزهایی است که شما قطعا می خواهید به انجام نوشتن است
برخی از مرتب کردن بر اساس دستور return در پایان تابع است.
بازگشت، و در این مورد، ما به خالی قرار داده است چرا که ما می خواهیم را در خالی را پر کنید.
اما این می شود که شما در راه حق در مورد چگونگی من رفتن به نزدیک شدن به این مشکل فکر؟
و شما آن را به یاد شما در حال رفتن به یک ارزش به بازگشت
به تماس گیرنده از تابع است.
>> آره. >> [دانشجو] آیا سبک درخواست در زمانی که ما در حال نوشتن کد در مسابقه؟
مانند دندانه دار و این نوع از مسائل است؟ >> [دانشجو] آره.
نه، به همان اندازه نیست.
من فکر می کنم بسیاری از این چیزی است که ما را در مسابقه در روز روشن،
اما معمولا نگرانی در مورد # شامل است و این نوع از مسائل، این نوع از خارج است.
[دانشجو] آیا شما نیاز به نظر کد و دست نوشته های خود را؟
آیا شما نیاز به نظر کد و دست نوشته های خود را؟
اظهار نظر همیشه خوب است اگر شما در مورد اعتبار نسبی نگران
و یا می خواهید به قصد خود را به جاده صاف کن.
اما من، باز هم، خواهد شد در مسابقه خود را روشن و در روز مسابقه،
اما من باور نمی کنم که شما مورد نیاز برای نوشتن نظر، نه.
به طور معمول، اما آن را قطعا نوع از چیزی که در آن
شما می توانید تمایل خود، ارتباط برقرار می خواهم "هی، این است که من قصد دارم با آن."
و گاهی اوقات است که می تواند با اعتبار نسبی کمک کند.
دانلود.
>> ریحان.
[ریحان] تفاوت بین اعلام، می گویند، اعضای هیات لنگ
در استدلال و یا پارامتر در برابر اعلام یک متغیر در داخل تابع؟
وای، قهوه رفت در نای است.
[ریحان] است که چیزهایی که ما می خواهیم در استدلال قرار داده است.
بله، این یک سوال بزرگ است.
چگونه می توانم شما را انتخاب کنید که چه چیزهایی شما می خواهید برای قرار دادن در استدلال
در مقابل چه چیزهایی که شما باید انجام دهیم این تابع در داخل؟
در این مورد، ما هر دو از این به عنوان آرگومان شامل
چرا که آنها چیزی را که هر کس در حال رفتن به استفاده از تابع مجموع
نیاز به کسانی که همه چیز را مشخص.
>> جمع دو تابع، مانند ما صحبت شده است، هیچ راهی برای دانستن
آرایه چقدر بزرگ است آن را از تماس گیرنده آن و یا هر کس که می شود با استفاده از تابع مجموع.
این هیچ راهی برای دانستن اینکه چقدر بزرگ است که آرایه است.
به این دلیل که ما در طول عبور در اینجا به عنوان یک استدلال
این است که به دلیل چیزی است که ما اساسا گفتن تماس گیرنده از تابع،
هر کس در حال رفتن به استفاده از تابع مجموع، "هی، نه تنها شما باید به ما یک آرایه
از نوع داده int، همچنین شما می توانید به ما بگویید که چه بزرگ آرایه که شما به ما داده است. "
[ریحان] کسانی که هر دو استدلال خط فرمان؟
نه، این استدلال واقعی که شما را به تابع منتقل می کند.
>> اجازه دهید یک صفحه جدید من در اینجا.
[ریحان] مانند نام، عبور،
[مقابله H.] اگر من به اعضای هیات تحریریه اصلی (خالی)
و من قصد دارم در 0 بازگشت من قرار داده است در اینجا در پایین،
و می گویند من می خواهم به فراخوانی تابع مجموع.
من می خواهم بگویم نوع int x = مجموع ()؛
برای استفاده از تابع مجموع من باید در هر دو آرایه منتقل می کند که من می خواهم به طور خلاصه
و طول آرایه، بنابراین در این است که در آن
فرض کنید من تا به حال یک آرایه از نوع داده int،
بگو من تا به حال اعضای هیات numbaz [] = 1، 2، 3،
نوع استفاده از آن هک نحو حق وجود دارد،
پس از آن چه من می خواهم انجام دهید این است که در مجموع من می خواهم به تصویب در
هر دو numbaz و شماره 3
به به جمع دو تابع را "بسیار خوب، این آرایه من می خواهم شما را به جمع."
"در اینجا، اندازه آن است."
آیا این را حس؟ کند که پاسخ به سوال شما؟
>> در بسیاری جهات آن را به موازات آنچه که ما در حال انجام با اصلی
که ما باید استدلال های خط فرمان است.
برنامه مانند سزار رمزنگاری، به عنوان مثال، که نیاز به
استدلال خط فرمان نخواهد بود قادر به انجام هر کاری است.
نمی دانم چگونه به رمز در آوردن اگر شما بگویم که آنچه در آن کلید به استفاده از
و یا اگر شما به آن بگویید که چه رشته شما می خواهید به رمز در آوردن.
باعث برای ورودی، این است که ما باید 2 مکانیزم های مختلف
برای گرفتن ورودی از کاربر، برای گرفتن اطلاعات از کاربر است.
برای مشکل مجموعه 1 ما شاهد این GetInt، GetString، راه GetFloat
باعث برای ورودی، و آن نامیده می شود با استفاده از جریان ورودی استاندارد است.
این اندکی متفاوت است.
این چیزی است که شما می توانید در یک زمان انجام دهد به عنوان مخالف
هنگامی که این برنامه، شما را فراخوانی زمانی که شما شروع به برنامه در حال اجرا است.
استدلال های خط فرمان مشخص شده هنگامی که شما شروع به برنامه در حال اجرا است.
ما شده ایم مخلوط کردن این دو از آن است.
هنگامی که ما با استفاده از استدلال به یک تابع، آن را بسیار شبیه به استدلال خط فرمان اصلی است.
زمانی که فراخوانی تابع شما نیاز به آن را بگویم شما
آنچه که دقیقا نیاز به منظور انجام وظایف خود است.
یکی دیگر از چیز خوب نگاه کنید و من به شما اجازه آن را در اوقات فراغت خود،
و آن را در پوشیده شده بود و این مفهوم را از حوزه آزمون بود
و متغیرهای محلی در برابر متغیر های جهانی است.
آیا توجه به آن.
>> در حال حاضر که ما در حال رسیدن به این مسائل دیگر،
در هفته 3 ما شروع به صحبت کردن در مورد جستجو و مرتب سازی.
جستجو و مرتب سازی، حداقل در CS50،
بسیار مقدمه ای به برخی از بخش های نظری علم کامپیوتر است.
مشکل جستجوی، مشکل مرتب سازی
بزرگ، مشکلات متعارف.
چگونه می توانم یک شماره خاص در مجموعه ای از میلیاردها از اعداد صحیح را پیدا کردید؟
چگونه می توانم به شما در پیدا کردن یک نام خاص در داخل دفترچه تلفن
که بر روی لپ تاپ شما ذخیره می شود؟
و بنابراین این مفهوم از زمان اجرا مجانبی معرفی می کنیم
است که واقعا مقدار چه مدت، چگونه این مشکل سخت،
چه مدت آنها را حل کند.
، به اعتقاد من، در مسابقه 2011 را یک مشکل وجود دارد که من فکر می کنم شایستگی
پوشش بسیار سریع است، که این یکی، مشکل 12.
O نه، امگا.
>> در اینجا ما در حال صحبت کردن در مورد سریع ترین زمان اجرا ممکن است
برای یک الگوریتم خاص، و پس از آن کمترین زمان ممکن اجرا است.
این امگا و O واقعا فقط کلید های میانبر.
آنها کلید های میانبر notational گفت:
چگونه سریع در مورد بهترین شکل ممکن اجرا خواهد شد الگوریتم ما
و چگونه آهسته در بدترین مورد ممکن خواهد شد الگوریتم را اجرا می کنیم؟
اجازه دهید یک زن و شوهر از این، و این نیز تحت پوشش قرار گرفتند
در کوتاه مدت بر روی نماد مجانبی، که من به شدت توصیه می.
جکسون یک کار واقعا خوب است.
با استفاده از جستجوی دودویی، ما صحبت در مورد جستجوی دودویی به عنوان یک الگوریتم،
و ما معمولا در مورد آن را در قوانین و مقررات از O. بزرگ خود صحبت کنید
O بزرگ چیست؟
کمترین زمان ممکن اجرا از جستجوی دودویی؟
[دانشجو] N ²؟
بستن، من حدس می زنم شبیه به آن است.
خیلی سریع تر از آن است.
[دانشجو] دودویی؟ >> آره، جستجو دودویی.
[دانشجو] ورود N می باشد.
ورود N، تا چه وارد شوید N معنی است؟
این نصف آن را در هر تکرار.
دقیقا، به طوری که در مورد کمترین امکان پذیر است،
می گویند اگر شما یک آرایه مرتب شده
از یک میلیون عدد صحیح و شماره شما به دنبال آن هستید
یا عنصر بسیار برای اولین بار در آرایه یا آخرین عنصر در آرایه.
به یاد داشته باشید، الگوریتم جستجوی دودویی با این نسخهها کار به دنبال عنصر میانه،
دیدن در صورتی که بازی این است که شما به دنبال آن هستید.
اگر این است، پس بزرگ، شما آن را در بر داشت.
>> در مورد به بهترین شکل ممکن، با چه سرعتی اجرا می کند دودویی جستجو؟
[دانش آموزان] 1.
1، آن زمان ثابت، O بزرگ از 1. آره.
[دانشجو] من یک سوال. وقتی به شما می گویند از n وارد سیستم شوید، شما را با توجه به پایه (2) به معنای، درست است؟
بله، به طوری که چیز دیگری است.
ما می گوییم N ورود به سیستم، و من حدس می زنم زمانی که من در دبیرستان بود
من همیشه فرض که ورود پایه 10 بود.
بله، بله، ورود 2 پایه به طور معمول همان چیزی است که ما با استفاده از.
باز هم، رفتن به جستجوی دودویی، اگر شما در حال جستجو برای هر دو
این عنصر در پایان و یا عنصر در آغاز،
دلیل این که شما در وسط شروع و سپس شما را دور بیندازید
هر کدام 1/2 با معیار ها سازگار نیست که شما به دنبال آن هستید،
و شما را به نیمه بعدی و نیم بعدی و نیم بعد بروید.
اگر من در جستجوی بزرگترین عنصر در آرایه میلیون عدد صحیح
من قصد دارم آن را در اکثر ورود 1 میلیون بار دو نصف کردن
قبل از اینکه من در نهایت و آزمایش می بینیم که عنصر من به دنبال
در بزرگترین و یا در بالاترین شاخص از آرایه،
و این ورود از N، ورود از 1 میلیون بار.
>> مرتب سازی بر حباب.
آیا شما بچه ها به یاد داشته باشید حباب الگوریتم مرتب سازی بر؟
کوین، می تواند شما را به روکش سریع از آنچه رخ داده در الگوریتم مرتب سازی بر حباب به من بدهید؟
[کوین] در واقع آن را از طریق همه چیز را در این لیست می رود.
در دو مورد اول به نظر می رسد.
در صورتی که اولین بار است که بزرگتر از دوم آنها معاوضه.
سپس آن را مقایسه دوم و سوم، همین، معاوضه،
سوم و چهارم، تمام راه را به پایین.
بزرگتر اعداد را به دنبال خواهد داشت تا پایان.
و پس از حلقه با این حال بسیاری از شما انجام می شود.
دقیقا، پس آنچه کوین گفت این است که ما خواهیم اعداد بزرگتر تماشا کنید
حباب تا پایان آرایه.
به عنوان مثال، آیا ذهن شما پیاده روی ما از طریق این مثال در صورتی که این آرایه ما؟
[کوین] شما 2 و گرفتن 3.
3 است بزرگتر از 2 است، به طوری که آنها را تعویض کنید.
[مقابله H.] راست، به طوری که این مبادله، و بنابراین ما 2، 3، 6، 4، و 9.
[کوین] سپس 3 و 6 مقایسه کنید.
3 است کوچکتر از 6 است، به طوری که آنها را ترک کنید،
و 6 و 4، شما می خواهم آنها را به خاطر 4 است کوچکتر از 6 مبادله.
[مقابله H.] راست، بنابراین من 2، 3، 4، 6، 9.
[کوین] و 9 بزرگتر از 6 است، به طوری که شما آن را ترک کنید.
و شما از طریق آن دوباره.
>> [مقابله H.] من در این مرحله انجام می شود؟ >> [کوین] شماره
و چرا من در این مرحله انجام نمی شود؟
از آنجا که به نظر می رسد مانند آرایه من این است که طبقه بندی شده اند. من نگاه کردن به آن است.
[کوین] از طریق آن دوباره و مطمئن شوید که بیشتر معاوضه وجود دارد
قبل از اینکه شما می تواند به طور کامل متوقف شود.
دقیقا، بنابراین شما نیاز به رفتن را از طریق، و مطمئن شوید که هیچ معاوضه وجود دارد
که شما می توانید در این نقطه است.
این واقعا فقط خوش شانس بود، مثل شما گفت که ما به پایان رسید تا
فقط نیاز به 1 عبور از طریق ما طبقه بندی شده اند.
اما برای انجام این کار در حالت کلی ما در واقع می خواهید برای انجام این کار را بارها و بارها داشته باشد.
و در واقع، این یک مثال از این مورد به بهترین شکل ممکن بود،
ما در این مشکل دیدم.
ما شاهد بودیم که به بهترین شکل ممکن مورد نفر شد.
ما را از طریق آرایه 1 بار رفت.
بدترین مورد ممکن است برای این الگوریتم چیست؟
[کوین] N ².
و چه می کند که شبیه به؟ چه نگاه آرایه هایی شبیه آن را N ² زمان را؟
[کوین] [نامفهوم] طبقه بندی شده اند.
دقیقا، به طوری که اگر من تا به حال آرایه 9، 7، 6، 5، 2،
اولین بار در 9 در حباب تمام راه را تا.
بعد از 1 تکرار می 7، 6، 5، 2، 9.
سپس در 7 حباب بالا، 6، 5، 2، 7، 9، و غیره و غیره.
>> ما می خواهم که از طریق آرایه N بار کل،
و شما در واقع می تواند کمی دقیق تر از این
چون زمانی که ما نقل مکان کرده از 9 تمام راه را تا به آخرین موقعیت ممکن
ما می دانیم که ما هرگز دوباره در برابر آن عنصر مقایسه است.
زمانی که ما شروع به حباب 7 تا
ما می دانیم که ما می توانیم به توقف یک بار در 7 درست قبل از 9
از آنجایی که ما در حال حاضر از 9 نسبت به آن است.
اگر شما این کار را در یک راه هوشمند، واقعا نه، من حدس می زنم، که زمان زیادی است.
شما نمی خواهید برای مقایسه ممکن است [نامفهوم] ترکیب
هر زمان تنها شما را از طریق هر یک تکرار بروید.
اما با این حال، زمانی که ما در مورد این حد بالا صحبت ما می گویند که
شما به دنبال در N ² مقایسه تمام راه را از طریق.
>> بیایید برگردید، و از آنجایی که ما در حال شروع به گرفتن کمی کوتاه در زمان
من می خواهم بگویم شما قطعا باید از بقیه از این جدول،
پر کنید و آن را از همه.
فکر می کنم از نمونه های. از نمونه های بتن را در نظر بگیرید.
این واقعا مفید و کمک کننده به انجام می باشد.
رسم آن را.
این نوع جدول است که به عنوان شما را از طریق در علوم کامپیوتر
شما واقعا باید به می دانم که این قلب توسط شروع می شود.
این نوع از سوالات شما در مصاحبه دریافت می باشد.
این انواع از چیزهایی که خوب می دانم،
و فکر می کنم در مورد موارد لبه آن، واقعا بدانند که چگونه به فکر می کنم در مورد
دانستن اینکه برای حباب مرتب سازی آرایه بدترین ممکن
برای مرتب کردن با آن کسی است که در جهت معکوس است.
>> اشاره گرها. بیایید کمی در مورد اشاره گر.
در چند دقیقه گذشته ما را در اینجا
من می دانم که این چیزی است که به همراه فایل های I / O که نسبتا جدید است.
هنگامی که ما در مورد اشاره گر صحبت به این دلیل که ما می خواهیم به بحث در مورد اشاره گر
این دلیل است که، یکی، زمانی که ما در حال کار کردن در C
ما واقعا در یک سطح نسبتا پایین در مقایسه با زبان های برنامه نویسی مدرن ترین.
ما در واقع قادر به دستکاری متغیر در حافظه،
کشف کردن جایی که آنها در واقع درون RAM قرار گرفته است.
هنگامی که شما از بین رفته اند را به کلاس های سیستم عامل شما
که، باز هم، نوع انتزاع است.
که در واقع چنین نیست.
ما باید به حافظه مجازی است که این جزئیات را از ما پنهان شده است.
>> اما در حال حاضر شما می توانید فرض هنگامی که شما به یک برنامه،
به عنوان مثال، زمانی که شما شروع به در حال اجرا سزار برنامه های خود را رمزنگاری
من گزینه بازگشت به اپل من واقعا به سرعت
که در این برنامه همان ابتدا خود را، اگر شما، می گویند،
4 گیگابایت RAM بر روی لپ تاپ شما،
می کنید کنار این تکه می کنیم و این RAM تماس بگیرید.
و آن را در جایی است که ما قصد داریم به تماس 0 شروع می شود،
و آن را در یک مکان به پایان می رسد که ما به 4 گیگابایت تماس بگیرید.
من واقعا نمی توانید بنویسید. مرد، که هک شده است.
هنگامی که برنامه های خود را اجرا
از سیستم عامل carves تا RAM،
و آن را مشخص بخش های مختلف برای بخش های مختلف برنامه های خود را به زندگی می کنند
را در اینجا در این منطقه، نوع زمین بدون انسان است.
هنگامی که شما یک کمی دورتر در اینجا
شما در واقع جایی که
کد برای زندگی برنامه شما.
که کد باینری واقعی، که فایل اجرایی در واقع در حافظه بارگذاری می شود
هنگامی که یک برنامه را اجرا می کنید، و آن را در بخش کد زندگی می کند.
و به عنوان برنامه خود را اجرا پردازنده به نظر می رسد در این بخش کد
برای کشف کردن آنچه که دستور بعدی است؟
خط بعدی کد من نیاز به اجرای چیست؟
>> بخش داده ها نیز وجود دارد، و این جایی است که آن دسته از ثابت های رشته ای
گرفتن ذخیره شده است که شما با استفاده از.
و پس از آن دورتر تا این محل به نام پشته وجود دارد.
دسترسی به حافظه در آن وجود دارد ما با استفاده از malloc،
و پس از آن به سمت برنامه شما بسیار بالا
پشته وجود دارد.
و در آنجا بود که ما در حال بازی برای بسیاری از همان ابتدا.
این است که به مقیاس و یا هر چیز نیست.
بسیاری از این بسیار وابسته به دستگاه،
سیستم عامل وابسته است، اما این است که نسبتا چه کارهایی chunked تا.
هنگامی که شما برای اجرای برنامه ها و تعریف یک متغیر به نام x-
من قصد دارم به منظور جلب یکی دیگر از جعبه پایین، و این است که رفتن به RAM و همچنین.
و من قصد دارم به نگاه.
خواهیم خطوط دندانه دار را به نشان می دهد این است که فقط بخش کوچکی از RAM رسم
و همه آن نیست که ما در بالا رسم.
>> اگر یک متغیر عدد صحیح به نام X من اعلام می کنم،
پس از آن چیزی است که من در واقع دریافت نقشه برداری
است که در جدول نماد از برنامه ذخیره می شود
که متصل به نام x به این منطقه از حافظه است که من کشیده
بین میله های عمودی.
اگر من یک خط از کد در برنامه های من است که می گوید: X = 7
پردازنده می داند: "اوه، خوب، من می دانم که X در این مکان در حافظه زندگی می کند."
"من قصد دارم به جلو بروید و ارسال نامه 7 وجود دارد."
چگونه آن را می دانیم چه موقعیت مکانی این است که در حافظه؟
خوب، این همه در زمان کامپایل انجام می شود.
کامپایلر طول می کشد مراقبت از تخصیص که در آن هر یک از متغیرها رفتن به
و ایجاد یک نقشه خاص و یا به جای اتصال نقطه
بین یک نماد و که در آن می گذرد، نام یک متغیر
و جایی که آن را در حافظه زندگی می کنند.
اما به نظر می رسد که ما در واقع می تواند به آن دسترسی داشته باشید در برنامه های خود و همچنین.
این مهم می شود زمانی که ما شروع به صحبت کردن در مورد برخی از ساختارهای داده ای،
که یک مفهوم است که ما قصد داریم به معرفی بعد است.
>> اما در حال حاضر، شما می توانید بدانید این است که من می توانم یک اشاره گر به این مکان ایجاد، x.
به عنوان مثال، من می توانم یک متغیر اشاره گر را ایجاد کنید.
هنگامی که ما ایجاد یک متغیر اشاره گر استفاده از نماد ستاره.
در این مورد، این می گوید: من قصد دارم به ایجاد یک اشاره گر به نوع int است.
این نوع فقط مانند هر دیگر است.
ما آن را یک متغیر مثل Y را،
و سپس ما آن را به آدرس برابر، به یک آدرس.
در این مورد، ما می توانیم Y به نقطه X تنظیم کنید
با در نظر گرفتن آدرس x، که ما انجام می دهیم با این علامت،
و پس از آن ما به مجموعه Y به آن اشاره.
چه میکند این است که اگر ما در RAM ما نگاه
این موضوع باعث ایجاد یک متغیر جداگانه است.
رفتن به آن را Y،
و زمانی که این خط از کد را اجرا
این در واقع به ایجاد یک اشاره گر کمی که ما به طور معمول به عنوان یک پیکان قرعه کشی،
و آن را به نقطه X Y مجموعه است.
بله.
[دانشجو] اگر X در حال حاضر یک اشاره گر است، به نظر شما فقط
هوشمند * Y = X به جای علامت؟
بله.
اگر x در حال حاضر یک اشاره گر است، پس از آن شما می توانید 2 اشاره گر برابر یکدیگر تعیین می کنند،
که در این صورت Y اشاره به X،
اما آن را به هر X است با اشاره به اشاره.
متاسفانه، ما از زمان.
>> چیزی که من را در این نقطه می گویند، ما می توانیم صحبت می کنید، در این مورد نیست.
اما من می گویم شروع به کار از طریق این مشکل، # 14.
شما می توانید ببینید که در حال حاضر وجود دارد یک کمی پر برای شما در اینجا.
شما می توانید که زمانی که ما اعلام می کنیم 2 اشاره گر از نوع int * X و Y *،
و توجه داشته باشید که اشاره * بعدی را به این متغیر چیزی است که در سال گذشته انجام شد.
به نظر می رسد این است که شبیه به آنچه که ما در حال انجام این کار در سال است.
مهم نیست که در آن * زمانی که شما اعلام اشاره گر تو می نویسم.
اما ما نوشته اند * بعدی به نوع
چرا که باعث می شود آن را بسیار روشن است که شما در حال اعلام یک متغیر اشاره گر است.
شما می توانید ببینید که اعلام 2 اشاره گر به ما می دهد 2 جعبه.
در اینجا هنگامی که ما مجموعه X برابر با malloc
آنچه در این گفت را کنار گذاشته است حافظه در پشته.
این جعبه کوچک هم در اینجا، این دایره، در پشته واقع شده است.
X با اشاره به آن است.
توجه داشته باشید که Y است هنوز به هر چیزی اشاره نمی.
به حافظه برای ذخیره شماره 42 را به X
ما را چه نماد استفاده کنید؟
[دانشجو] * x = 42.
دقیقا، * x = 42.
این بدان معناست که فلش و پرتاب 42 در آن وجود دارد.
اینجا جایی که ما مجموعه Y و X Y به X اشاره.
باز هم، این است که تنها چیزی که کوین گفت که در آن ما به مجموعه Y برابر است با X می خواهم.
Y به x اشاره نمی شود.
در عوض، آن را با اشاره به آنچه ایکس است با اشاره به عنوان خوبی است.
>> و سپس در نهایت در این جعبه گذشته 2 چیز وجود دارد که ما می توانیم انجام دهیم.
یکی این است که ما می توانیم * x = 13 می گویند.
چیز دیگر این است که ما می توانیم بگوییم الکس، آیا شما می دانید چیزی است که ما در اینجا می تواند انجام دهد؟
می توان گفت * x = 13 یا
[دانشجو] شما می توانید هر آنچه که از نوع int می گویند.
[مقابله H.] اگر این را به عنوان یک متغیر از نوع int اشاره ما می تواند انجام دهد.
ما همچنین می تواند * Y = 13 چون آنها هر دو با اشاره به همان محل،
بنابراین ما می تواند به هر دو متغیر وجود دارد استفاده کنید.
آره. >> [دانشجو] چه به آن نگاه کنید مثل اگر ما فقط می گویند X از نوع int است 13؟
این امر می تواند به اعلام یک متغیر جدید به نام x، که نمی خواهد کار است.
ما یک برخورد از آنجا که ما اعلام X را به عنوان یک اشاره گر تا اینجا داشته باشد.
[دانشجو] اگر ما فقط بیانیه ای که به خودی خود تا به حال چه آن را مانند دایره نگاه می کنید؟
اگر ما تا به حال x = 13 پس از آن ما می خواهم یک جعبه داشته باشند، و به جای داشتن یک پیکان
بیرون آمدن از جعبه، ما می خواهم آن را به عنوان تنها 13 قرعه کشی.
[دانشجو] در جعبه. باشه.
>> با تشکر از شما برای تماشا، و شانس خوب در امتحان 0.
[CS50.TV]