[موسیقی] دیوید مالان: بسیار خوب. این CS50 است، و این در پایان هفته 2 است. خیلی معذرت من نمی تواند من وجود دارد با شما در همه امروز، اما شما را در دست بسیار خوب است. من اجازه می دهد به شما معرفی خود راب باودن CS50 است. ROB باودن: و البته، پس از آن ما را به تمسخر این واقعیت که او به ما عمودی ویدئو و این نشان می دهد. [پخش ویدئو] [موسیقی] [صدای پای] فیلم -این نیست باید به نگاه در این راه. این می تواند مانع شده است. نه گفتن به فیلم های عمودی. فیلم عمودی افتد زمانی که شما دوربین خود را به راه اشتباه را نگه دارید. ویدئو های خود را به پایان خواهد رسید تا به دنبال مانند تلخه. - [GRUNT] وجود دارد بیشتر و بیشتر مردم معتاد هستند به ساخت فیلم های عمودی هر روز. آن را ترک نمی یا هیچ چیز، اما هنوز هم واقعا بد است. دو نوع مختلف وجود دارد افرادی که با VVS مبتلا می شوند. گروه اول رفتار فیلم ها آنها مانند تصاویر شلیک کنید. آنها هیچ آسیب نیست. آنها فقط نمی دانند که در حالی که شما می توانید یک عکس به نوبه خود، شما واقعا نمی توانید یک ویدیو تبدیل شود. [CRASH] - [برای تلفن های موبایل میمون] بانک گروه دیگر مردم است که یک [BLEEP] نمی دهد. سندرم ویدئو عمودی خطرناک است. تصاویر متحرک دارند همیشه افقی بوده است. تلویزیون افقی می باشد. صفحه نمایش کامپیوتر افقی می باشد. چشم مردم افقی می باشد. ما به ساخته شده است تماشای فیلم در حالت عمودی. -I عاشق فیلم های عمودی. -Nobody در مورد شما مراقبت. اگر این مشکل را بدون نظارت، شما بیش از حد آغاز خواهد شد نشان دادن چهار فیلم در یک بار فقط برای صرفه جویی در پهنای باند. فیلم های عمودی را -Letterboxed شود به اندازه یک تمبر پستی است. البته آن را همه جا پخش خواهد شد. صفحه نمایش فیلم دارند همیشه افقی بوده است. اگر فیلم های عمودی تبدیل پذیرفته شده، سینما باید قد بلند و لاغر. البته همه سینما می باید به پاره کردن و بازسازی. و در آن زمان آنها، بازسازی شد میلا Kunis خواهد قدیمی و زشت است. -Birds خواهد به آنها سقوط و می میرند. همه -We'll گرفتن سفت گردن از دنبال کردن. البته هیچ کس نشستن در ردیف جلو هرگز دوباره. جورج لوکاس دوباره آزاد خواهد ستاره جنگ again-- نسخه لاغر. من هرگز واقعا قادر به گفتن داستان که من می خواستم برای گفتن. این یک شانس بزرگ برای من بود آزمایش با یک تکنولوژی جدید است. -You're حرکت تند و سریع. هر بار که یک دستگاه تلفن همراه است مورد استفاده قرار ضبط ویدئو، وسوسه است. فقط بگو نه. نه گفتن به جورج لوکاس. نه گفتن به قدیمی میلا Kunis. نه گفتن به فیلم های عمودی. البته اگر کسی آن را انجام، می گویند، "شما در حال عکسبرداری که ساختگی نیست»! [موسیقی] [END پخش] [تشویق حضار] [AUDIO OUT] ROB باودن: --Simple شکل رمزنگاری، که در واقع رمزنگاری و رمزگشایی از پیام های مخفی. بنابراین در اینجا ما یک اسباب بازی بسیار ساده است. و این ایده حلقه بیرونی است چرخش در اطراف حلقه درونی. و شما می توانید ببینید، شاید اگر من زوم در، that-- آن را سخت برای دیدن. اما، مانند، تعداد 1-- به خوبی، که نقل مکان کرد. تعداد 1 نقشه به نامه X، شماره 2 نقشه به نامه J. فوق العاده دشوار است به جست و خیز رو به جلو نیست. نامه 2 نقشه به J. شماره 3 نقشه ها به D. بنابراین با این حلقه شما می توانید به کسی یک پیام 1، 2، 3. به هر دلیلی شما می خواهم به آنها XJD است. اما شما می توانید آنها را برخی از پیام از اعداد، و تا زمانی که آنها را به این حلقه، آنها می تواند رمزگشایی آنچه شما در تلاش برای گفتن دارد. بنابراین شما ممکن است دیده اند، این مثال خاص از رمزنگاری قبل از اینکه اگر در اطراف فصل کریسمس شما یک داستان کریسمس تماشا کرده ام. اگر شما دیده ام هرگز قبل از آن، پس از آن فقط به نوبه خود در TBS در معنای واقعی کلمه هر زمان در شب کریسمس، زیرا آنها فقط آن را نشان می دهد پشت به پشت به پشت به پشت به پشت تمام روز. و ویدیو مربوط به این است. [پخش ویدئو] -Be آن را به همه و گوناگون شناخته شده که رالف پارکر وسیله منصوب عضو کوچک یتیم آنی راز دایره است و به تمام افتخارات عنوان و مزایای رخ نمیدهد. امضا کوچک یتیم آنی. Countersigned پیر آندره در جوهر! برتری ها و مزایای در حال حاضر در سن نه! [فریاد از رادیو] -بجنب. بیایید در با آن است. من همه که موسیقی جاز نیاز در مورد قاچاقچیان و دزدان دریایی. فردا شب، گوش دادن با ماجراجویی پایانی از سیاه دزدان دریایی کشتی. در حال حاضر، از آن زمان برای پیام مخفی آنی برای شما اعضای راز دایره. به یاد داشته باشید بچه ها، تنها اعضای از راز دایره آنی می توانید پیام های مخفی آنی رمزگشایی. به یاد داشته باشید، آنی است بسته به شما. تنظیم پین خود را به B2. در اینجا این پیام است. 12. 11. 2. -I در اولین جلسه محرمانه هستم. -25. 14. 11. 18. 16. اوه، پیر در امشب صدای بزرگ است. من می توانم بگویم که امشب پیام بسیار مهم بود. -3. 25. این یک پیام از آنی خود است. به یاد داشته باشید، به کسی نگو. ثانیه پنج بعد، من در تنها هستم اتاق در خانه که در آن یک پسر از نه می تواند در حفظ حریم خصوصی و رمزگشایی می نشینند. آها! B! من به آینده رفت. E. اولین کلمه است "می باشد." S. بود در حال حاضر آینده آسان تر است. U. 25. که R. بیا در، Ralphie! من عاشق رفتن! -I'll شود پایین، کارشناسی ارشد! صدای تیز و تند هی. T. O. "مطمئن باشید که" - مطمئن شوید که به چه چیزی؟ یتیم کمی چه بود آنی تلاش برای گفتن؟ مطمئن باشید که به چه چیزی؟ -Randy کردم تا برای رفتن! آیا شما لطفا بیرون می آیند؟ حق همه، مادر! من در بیرون راست! من در حال حاضر نزدیک شدن است. تنش وحشتناک بود. این چی بود؟ سرنوشت این سیاره ممکن است در تعادل آویزان! -Ralphie، سفت کردم برای رفتن! -I'll شود، برای گریه کردن با صدای بلند! تقریبا وجود دارد! انگشتان من پرواز کرد. ذهن من یک تله فولاد بود. هر منفذ ارتعاش. این تقریبا روشن بود! بله. بله. بله. بله. لازم است به نوشیدن Ovaltine خود را. Ovaltine؟ تجاری می روشن است؟ حرومزاده. [END پخش] ROB باودن: بنابراین این که چگونه Ovaltine مربوط به رمزنگاری. اساسا CS50 فقط آگهی Ovaltine، بنابراین ما می تواند یک نکبتی تجاری برای Ovaltine. خیلی خوب. بنابراین در حال حاضر علوم کامپیوتر واقعی. به یاد داشته باشید در روز دوشنبه ما را ترک کردن غواصی عمیق تر به رشته ها. بنابراین ما با خرید و فروش شد رشته "Zamyla." و ما به رسمیت شناختن شد این واقعیت است که ما می توانیم درمان "Zamyla" را به عنوان یک رشته از کاراکتر. و به یاد داشته باشید که ما به دست علامت کروشه است. بنابراین اگر این ذخیره شده بودند در یک رشته "S"، و سپس اگر ما گفت براکت 0، که نشان می دهد که نامه زهرا سرمایه و اگر ما گفت براکت 1، که به حروف کوچک برای اولین بار یک نشان می دهد، و به همین ترتیب تا براکت 5، که آخرین آن یک نشان می دهد. در حال حاضر به یاد داشته باشید که طول این رشته است 6، اما شاخص به رشته هستند 0 از طریق 5، Z طریق که آخرین. بنابراین این در حال حاضر به یک تصویر بزرگتر متناسب از حافظه کامپیوتر شما، RAM خود را. بنابراین جایی برنامه ای است که شما در حال اجرا کامپیوتر شما نیاز به یاد داشته باشید Zamyla جایی در حافظه. آیا من می توانم یک داوطلب داشته باشد؟ بله لطفا. و اسم شما چیه؟ دین: دین. ROB باودن: دین؟ از ملاقات شما خوشبختم، دین. پس بیا اینجا و ما در حال رفتن به شما در قرعه کشی در طرح بسیار خوب خوب ما از حافظه است. در حال حاضر من می خواهم به فکر می کنم از حافظه به عنوان یکی نوار طولانی از بایت، اما فقط برای مقاصد صفحه نمایش خواهیم فقط چپ به راست، بالا به پایین. باشه؟ بنابراین من قصد دارم برای نشان دادن یک program-- Getstrings.c. و به این ترتیب تمام این برنامه این است انجام درخواست چهار رشته از کاربران با GetString و پس از آن چاپ هر آنچه که رشته برای اولین بار وارد شد. ما در حال نادیده گرفتن دو از طریق چهار. باشه. بنابراین در اینجا now-- که من برای اولین بار S1 درخواست. بنابراین شما در کامپیوتر می باشد. و شما در حال اجرای از GetString. بنابراین شما درخواست یک رشته از من، و من می گویند، OK، دین. به رشته "دین." بنابراین جایی در حافظه شما نیاز به یاد داشته باشید "دین." پس از آن را به حافظه ارسال در جایی. کامل. باشه. بنابراین در حال حاضر ما S2 اند. و S2 است برای رفتن به یک درخواست به از GetString. بنابراین من قصد دارم برای ورود به یک رشته است. من قصد دارم برای ورود به "هانا." بنابراین وارد کنید "هانا" جایی به حافظه است. آره. A-H. OK، بنابراین در حال حاضر S3. و آن را به دیگری باشد درخواست از GetString. و بنابراین در حال حاضر وارد کنید "ماریا." خیلی خوب. و پس از آن یکی از آخرین وجود دارد درخواست برای از GetString، S4. بنابراین، من نمی دانم. چگونه در مورد ما با رفتن antidisestablishmentarianism. بنابراین به حافظه وارد کنید که. آره. بنابراین فقط "راب." باشه. بنابراین در حال حاضر explain-- چرا شما این فاصله را ترک؟ چرا شما این قسمت را خالی کرده اند فضای اینجا، اینجا، و اینجا؟ بله. بنابراین اطلاع زمانی که من به به چاپ s1-- بنابراین اگر ما حال "هانا" در حال اجرا سمت راست در کنار "دین" چگونه ما می دانیم که رشته "دین" به پایان می رسد؟ بنابراین چاپ S1 رشته ممکن است فقط چاپ "DeanHannahMariaRob" اگر آن را از هیچ سرنخ ندارد از زمانی که "دین" در واقع به پایان می رسد. خیلی خوب. بنابراین در حافظه راه ما در واقع نشان دهنده این پایان یک رشته با بک اسلش صفر. بنابراین این فضا همان چیزی است که ما می خواستیم. این باید یک بک اسلش صفر باشد. این خواهد بود که یک بک اسلش صفر، خواهد شد و این یک بک اسلش صفر است. و شما می توانید یک جایزه افسانه برای اینکه یک داوطلب کامل است. نگاهی به توپ استرس! باشه. بنابراین این شخصیت بک اسلش صفر است چگونه ما نشان دادن پایان یک رشته است. این که چگونه زمانی که هر برنامه داده شده است می خواهد برای چاپ یک رشته، آن how-- یاد داشته باشید ما به دست تابع strlen هفته گذشته؟ طول رشته. این که چگونه طول رشته قادر است به تعیین چه مدت یک رشته است. این فقط نگه می تکرار بیش از شخصیت تا زمانی که آن را پیدا کرد بک اسلش شخصیت صفر است. بنابراین نکته مهم برای تحقق بخشیدن به در مورد شخصیت بک اسلش صفر است این نمایندگی همه صفر در بیت. بنابراین توجه کنید که این متمایز است از شخصیت صفر است. به طوری که شخصیت صفر، اگر به یاد داشته باشید در مثال که او در پایان به سخنرانی که در آن شخصیت نقشه to-- مانند نقشه ها سرمایه تا 65. حروف کوچک نقشه ها را به 97. حروف کوچک B می شود 98. به طوری که تعداد 0 نقشه to-- من نمی مطمئن شوید از بالا سر من. 44 یا 45. جایی در این منطقه است. به طوری که شخصیت 0 یک عدد واقعی است. اما صفر بک اسلش نقشه ها به تمام بیت صفر. بنابراین یک تمایز وجود دارد بین بک اسلش صفر، که ما آن را نابودگر تهی پاسخ. یک تمایز بین وجود دارد بک اسلش صفر و شخصیت صفر است. خیلی خوب. بنابراین صحبت کردن کمی بیشتر در مورد رشته ها. پس ما در اینجا مشاهده کنید این است چگونه این امر می تواند در حافظه گذاشته شد. بنابراین این ایده از رشته به عنوان یک رشته از characters-- تا کامپیوتر رسمی مدت sciency برای توالی یک آرایه است. بنابراین ما یک رشته پاسخ آرایه ای از کاراکتر. و در واقع وجود دارد دیگر اطلاعات انواع که ما می توانیم آرایه از است. بنابراین برای ایجاد انگیزه این، نگاهی به عنوان مثال. ما آن را ages0.c پاسخ من شما کپی و قالب های ما کپی کنید. باشه. بنابراین در این برنامه چیزی است که ما می خواهید انجام دهید این است گرفتن سن سه تن از دانشجویان در این دوره است. بنابراین ما می دانیم که از نوع int age-- و در حال حاضر من قصد دارم برای گفتن 0. بنابراین شما ممکن است می خواهم بگویم age1، اما برای اهداف ما بسیار در مدت کوتاهی خواهید دید، من می گویم age0 INT برابر GetInt. به طوری که تماس به همان GetInt که ما شده ایم با استفاده از من رخ می دهد نه باعث می شود گفت: "سن به من." اما فقط آن را درخواست. و age1 برابر GetInt. و age2 INT برابر GetInt. پس، دوباره، سه دانش آموز، اما در نهایت شاخص متغیر می age0 طریق age2. باشه. بنابراین این برنامه انجام خواهد داد هر ما با age0، age1 و age2 می خواهید، اما این برنامه در نهایت برای سه دانشجو کار می کند. باشه. بنابراین در حال حاضر اگر من می خواهم چهار دانشجو؟ خب، من قصد دارم به برای رفتن به عقب به کد من، تغییر نظر، و در حال حاضر ما یک int age3 برابر GetInt. باشه. به طوری که مشکل می بیند که اینجا هستید؟ مشکل چیه با این نوع راه اندازی؟ آره. آره. بنابراین ما در حال ایجاد یک متغیر برای هر دانش آموز. حالا که کار می کند، اما در نهایت آنچه اگر در حال حاضر می گویند، "من می خواهم برای گرفتن سن هشت دانش آموزان و یا دانش آموزان 16 یا این حال بسیاری از دانش آموزان از صدها نفر از دانش آموزان در CS50 و یا هزاران نفر از دانشجویان در محوطه دانشگاه یا میلیاردها نفر از مردم در جهان؟ پس در نهایت این است پایدار نیست. هر زمان که شما خودتان را کپی کردن و کد چسباندن شبیه به این، شما به طور کلی باید احساس که یک راه بهتر وجود دارد. پس این است که معرفی می کنیم اعلام آرایه. تا زمانی که شما اعلام یک آرایه، این چیزی است که قالب کلی است در حال رفتن به مانند نگاه کنید. ما قصد داریم به نوع. و سپس ما در حال رفتن به به نام آن آرایه، همان گونه که هر متغیر داده شده تعریف می کنیم. و سپس در نهایت ما با استفاده از این علامت کروشه دوباره اما در زمینه های مختلف از چگونه ما شد آن را در اوایل با استفاده از. بنابراین در اینجا این برام مثل یه نرمال تعریف متغیر که ما دیده ایم. بنابراین ما نوع int x نیمه روده بزرگ قبل از دیده می شود. خوب در حال حاضر ما ممکن است چیزی را ببینید مانند نوع int x براکت 5. و قرار دادن این ایده به برنامه GetInt که ما have-- بنابراین ما می توانیم پیاده سازی این در به همان شیوه. بیایید در CS می گویند که ما تمایل به استفاده از N تعداد از چیزی. بنابراین در اینجا ما قصد داریم به چهار دانشجو را ذخیره کنید. و در حال حاضر ما می توانیم سن INT می گویند براکت نمی n-- کاملا آن را دریافت yet-- به آرایه از چهار دانش آموز. پس چگونه این نگاه در حافظه شبیه به این خواهد بود. پاک کردن این. و ما در حال رفتن به جایی در حافظه من این قرار داده است. بنابراین در جایی در حافظه است. یک دو سه چهار. ما چهار عدد صحیح در یک ردیف برای این مجموعه ای از چهار عدد صحیح. بنابراین، در حال حاضر، آنچه که اندازه یکی از این جعبه؟ آره. این چهار بایت است. این 32 بیت است. بنابراین در حال حاضر این متفاوت است از آرایه که ما دیدم پیش از این، آرایه ای از کاراکتر. در یک رشته هر جعبه تنها یک بایت بود، به دلیل یک شخصیت تنها یک بایت است. اما با یک آرایه از اعداد صحیح، هر جعبه را به چهار بایت در به تناسب کل یک عدد صحیح. بنابراین این چیزی است که آرایه ای از چهار نوع داده int نگاه می خواهم. و سپس به کد. در حال حاضر ما به واقع می خواهند اینترنتی اعداد به که آرایه. بنابراین در حال حاضر این است که بسیار، بسیار، بسیار الگوی مشترک است که در برخی از نقطه تبدیل حافظه عضلانی. بنابراین اعضای هیات من برابر با 0. من کمتر از N. من به علاوه به علاوه. براکت سن من برابر با GetInt. بنابراین این حلقه، این فرمت، شما باید بسیار استفاده می شود. پس این است که به طور کلی چگونه ما تکرار بیش از تقریبا هر آرایه است. در حال حاضر متوجه این نوع از توضیح میدهد که چرا از همان ابتدا ما برای حلقه ها را برای INT رفتن ندارد من برابر با 1، من کمتر از یا برابر با 10. زیرا که با شروع از صفر باعث می شود این کار به خوبی با آرایه ها. بنابراین آرایه صفر نمایه می شوند. اگر شما این آرایه است به طول 4، شاخص از طریق 3 0. بنابراین از طریق اولین تکرار از این حلقه ما در حال رفتن به تنظیم سن براکت 0 تا یک تماس به GetInt برابر است. بنابراین هر آنچه که من به طور اتفاقی به در صفحه کلید را وارد کنید. در پاس دوم، ما تنظیم age1 به GetInt برابر است. پاس سوم، age2. age3 پاس نهایی است. بنابراین اگر در اولین گذر از حلقه من با وارد کردن شماره 4 در صفحه کلید، پس از آن خواهیم 4 در اینجا وارد کنید. اگر در پاس دوم من وارد 50، ما یک 50 اینجا قرار دهید. در پاس سوم من ممکن است وارد منفی 1، منفی 1، و سپس در نهایت اگر من وارد 0-- و اکنون به یاد داشته باشید که این شاخص سه بود. بعد از ما حلقه پشت، من است رفتن به 4 واحد اضافه می شود. من دیگر کمتر از n است، که 4. و ما از شکستن حلقه. پس چه خواهد اشتباه است با این؟ [نامفهوم]؟ مخاطبان: [نامفهوم] بله. بنابراین آرایه تنها دارای چهار مکان ها، که به معنی به عنوان شاخص های 0 تا 3. بنابراین اگر این مورد، من می خواهم را به مقدار 4 در برخی از نقطه. سن براکت 4 تنظیم خواهد شد به اینجا هر چه به آنچه که من باید بگویم، وارد کنید 6. که می شود تنظیم این به 6. اما ما نمی دانیم که چه چیزی بیش از اینجا. این حافظه که ما دسترسی به بود. بنابراین اگر شما به یاد داشته باشید از سخنرانی های قبلی، او چاپ مقادیر Zamyla شد و در برخی از نقطه او ضربه این تقسیم بندی گسل. بنابراین شما احتمالا شاهد شود بسیاری از گسل تقسیم بندی به عنوان شما اجرای برخی از مجموعه مسائل. اما این یکی از راه های است که در آن شما می توانید یک تقسیم بندی روبرو می شوند گسل، هنگامی که شما شروع به دسترسی حافظه در راه هایی که شما باید باشد. بنابراین ما دسترسی به ندارد این مکان و این یک اشکال است. بنابراین این بهتر است. در حال حاضر هنوز وجود دارد کوچک موضوع را با این کد. و اساسا این است که ما هنوز در چهار دانشجو گیر کرده است. در حال حاضر اگر من می خواهم به استفاده از هشت دانشجو، OK. آن است که بزرگ یک معامله نیست. من در می توانید بروید، تغییر نظر، و تغییر N. در حال حاضر این با هشت دانشجو کار خواهد کرد. اگر من این را کامپایل و اجرا این، آن را نشان می دهد me-- آن را اعداد صحیح به مدت هشت درخواست دانش آموزان و آن را فقط کار خواهد کرد. اما آن را کمتر از ایده آل به نیاز به کامپایل مجدد برنامه در هر زمان تنها من می خواهم به تغییر تعدادی از دانش آموزان که من می خواهم برای ورود به سنین برای. بنابراین بهبود نهایی در این، همانطور که خواهیم دید here-- ما رفتن به درخواست تعداد زیادی از مردم. در اینجا ما یک تعداد از مردم در اتاق و یا هر سنین از مردم در اتاق. اما ما قصد داریم به درخواست تعداد از مردم در اتاق از کاربر. بنابراین این دقیقا همان انجام دهند در حالی است حلقه که ما قبل از دیده می شود. این همان دقیق انجام دهند در حالی که شما حلقه ممکن است اجرای در مجموعه مشکل. بنابراین تا زمانی که آنها ورود به N کمتر از 1، بنابراین را باید به در می شود وجود دارد حداقل یک نفر در اتاق. تا زمانی که آنها ورود به N کمتر از 1، پس از آن ما قصد داریم برای حفظ دوباره درخواست. لطفا عدد را وارد کنید از مردم در اتاق. در حال حاضر، زمانی که ما تعداد از مردم در room-- بنابراین من وجود دارد ممکن است وارد کنید که 200 نفر در این اتاق می باشد. سپس در اینجا ما در حال رفتن به آمده و اعلام آرایه ای از حجم 200. ما در حال اعلام آرایه که به اندازه کافی بزرگ برای نگهداری 200 سنین. پایین آمدن، آن را از حلقه for که شما را از بسیار استفاده می شود. بنابراین تکرار بیش از این آرایه، اختصاص به هر مکان در آن آرایه یک عدد صحیح، و و سپس در نهایت در اینجا ما فقط یک مثال از تکرار بیش از آن آرایه، برای تخصیص مقادیر نیست، اما به ارزش دسترسی داشته باشید. بنابراین در اینجا ما می بینیم که ما می گویند، یک سال از هم اکنون، فرد٪ من خواهد بود٪ من سال، که در آن اولین٪ من به علاوه 1 است. بنابراین من این متغیر شاخص است. و٪ دوم من است برای رفتن به مقدار ذخیره شده در آرایه سنین به علاوه 1. بنابراین این به علاوه 1 است فقط به خاطر اینکه ما saying-- این به علاوه 1، سنین من به علاوه 1. این به علاوه 1 است فقط به خاطر اینکه ما گفت: یک سال از حالا فرد خواهد بود این است. پس چرا این من به علاوه 1 است؟ دلیل است که یک به علاوه 1 وجود دارد؟ آره. بله. بنابراین به یاد داشته باشید آرایه ها صفر شدهاند. بنابراین اگر ما در حال چاپ این را برای کسی که به فقط خواندن خروجی، پس از آن احتمالا آنها می خواهند برای دیدن چیزی مانند فرد یک، فرد شماره یک، خواهد بود 20 ساله است. تعداد فرد دو خواهد بود 15 سال دارند. آنها ترجیح فرد را ببینید عدد صفر 15 ساله است. بنابراین تدوین این و فقط از دیدن آنچه به نظر می رسد like-- ایجاد فضایی. را سنین کامپایل. در حال اجرا سنین. ما می بینیم که تعداد افراد در اتاق. بنابراین من می گویند وجود دارد سه نفر در اتاق. سن فرد شماره یک، اجازه دهید بگویم 15، 20، 25. و اکنون من یک سال از گویند در حال حاضر آنها خواهد بود 16، 21، 26. بیایید ببینید که این کار با یک n است که به 3 برابر نیست. بنابراین اگر من می گویند تعدادی از مردم 5 است، یکی، دو، سه، دو، یک، یک سال از هم اکنون آنها خواهید بود دو، سه، چهار، سه، دو ساله است. بنابراین من می تواند فقط به عنوان به راحتی اند N 10،000 شود. در حال حاضر من نشسته در اینجا کاملا در حالی که ورود به سنین، اما این کار می کند. بنابراین در حال حاضر در حافظه جایی که ما یک آرایه از اندازه 10،000، بنابراین در نهایت 40،000 بایت، زیرا هستند چهار بایت برای هر یک از این اعداد صحیح است. بنابراین آرایه ای از وجود دارد اندازه 10،000 که در آن ما می توانیم ذخیره سنین آن 10،000 نفر. خیلی خوب. سوال در مورد هر یک از این؟ آره. اگر شما یک عدد منفی داد؟ بذار ببینیم چه اتفاقی میافتد. بنابراین در این تعداد case-- خاص از مردم در اتاق، یک منفی است. آن را رد کرد که، چون تا اینجا ما اتفاق می افتد به دست زدن به این واقعیت است که اگر n کمتر از یک ما در حال رفتن به درخواست دوباره. اگر شما سعی می کنید به اعلام مجموعه ای از اندازه منفی، به طور کلی کار نمی کند. بنابراین سعی کنید. بیایید چشم پوشی هر ارزش آنها برای n ورودی و فقط می گویند سنین INT دیگری منفی است. بیایید ببینید که اگر آن را حتی کامپایل. مطمئن نیستم. شماره بنابراین سنین به عنوان یک اعلام آرایه با اندازه منفی است. بنابراین در صف مقابل آن یک آرایه به رسمیت می شناسد می تواند اندازه منفی باشد و آن را رد می کند. در حال حاضر، اگر ما رسیدگی نمی کند این حلقه انجام دهند در حالی به درستی، اگر ما چک کردن نیست اگر n کمتر از 1-- است اجازه دهید ما می گویند فقط این ندارد در همه و به جای آن ما فقط گرفتن یک عدد صحیح. مهم نیست که چه که عدد صحیح است، ما اعلام می کنیم که مجموعه ای از اندازه. بنابراین کامپایلر نمی اکنون احتمالا شکایت دارند. اگر من کامپایل this-- پس از آن نمی تواند شکایت، زیرا نمی تواند دانید که من رفتن به وارد یک عدد منفی، که ممکن است نامعتبر است. برای همه آن را می داند، من ممکن است وارد کردن یک عدد مثبت، که است که کاملا معتبر است. بنابراین من تصور کنید اگر من وارد منفی 1 مردم در اتاق، تقسیم بندی گسل. بنابراین، OK. بنابراین این افزودنی تماس فقط اجازه دهید نگه داشتن آن چه آن را در اصل بود. بنابراین سنین است. حالا اگر من می خواهید یک منفی age-- بنابراین اجازه دهید می گویند پنج نفر در اتاق وجود دارد. سن فرد شماره یک منفی 4 نفر سه است، صفر است، فرد OK three--. بنابراین در اینجا، یک سال از هم اکنون، تعداد فرد منفی 3 سال خواهد بود. پس احتمالا معنی ندارد. اما این فقط به خاطر اینکه به دنبال در کد تمام ما در حال انجام درخواست GetInt. حال اگر ما را داشتند. عملکرد GetPositiveInt و یا ما فقط به سادگی این انجام داده بود مرتب سازی بر اساس حلقه در حالی همان پایین وجود دارد، پس از آن این کاملا خوب کار می کنند. اما در این خاص مورد، ما فقط نمی کنند اتفاق می افتد به دست زدن به مقادیر منفی. هر گونه سوال دیگر در مورد آرایه؟ باشه. بنابراین ما در حال حاضر آرایه دیده می شود. و ما در حال رفتن به نیاز به استفاده از این آرگومان خط فرمان. بنابراین در مجموعه ای مشکل two-- من می دانم که بسیاری از شما هنوز هم ممکن است کار بر روی مجموعه ای مشکل یکی است، اما مشکل تنظیم دو در حال آمدن است. در مجموعه مسائل دو، شما در حال رفتن به نیاز به خرید و فروش با رشته ها، آرایه ها، و آرگومان خط فرمان. آرگومان های خط فرمان پس چه هستند؟ در حال حاضر، شما می توانید در اینجا ببینید پایین تیزر کمی برای دقیقا همان چیزی است رفتن به رخ دادن است. ما می بینیم که از نوع int اصلی، تعداد آنها وارز، براکت و argv رشته است. بنابراین برای اولین بار اجازه دهید سعی کنید به تفسیر چه که در تلاش برای گفتن دارد. در حال حاضر خوب. بنابراین در خط فرمان شما باید مورد استفاده قرار گرفتن برخی از این دستورات در حال حاضر، و شما احتمالا اجرا سی دی در ترمینال قبل. بنابراین اگر ما می گویند pset1 سی دی، شما می دانید که که باید در حال تغییر را به دایرکتوری pset1 است. حالا توجه کنید که شما هرگز نوشته شده یک برنامه مثل این قبل از. هر برنامه ای که شما نوشته شده است، شما می اجرا، می گویند، نقطه اسلش ماریو، نقطه اسلش حریص، و سپس آن را ممکن است شما را برای ورودی تحریک کند. در حال حاضر، چه چیزی تغییر دایرکتوری کند. هنگامی که شما سی دی اجرا، آن را پس از آن می گویند نیست، کدام دایرکتوری شما را به سی دی می خواهید را به؟ در عوض، شما فقط می گویند، pset1 سی دی، و آن را فقط به دایرکتوری pset1 می رود. پس به طور مشابه ما نمونه های دیگر است. را خوش آمدید. هنگامی که شما اجرا را، آن را پس از آن می گویند نیست، که برنامه دوست دارید را به؟ شما فقط می گویند، در خط فرمان را خوش آمدید. حرکت مثال دیگر است. این یکی از ما به حرکت mario.c فایل تا یک دایرکتوری. بنابراین در حال حاضر ما با این مثال می دانیم ما واقعا در حال عبور از دو آرگومان. این mario.c به عنوان آرگومان اول وجود دارد، و نقطه نقطه آرگومان دوم است. و پس از آن هنگامی که شما اجرا را، شما دید که فرمان واقعا طولانی line-- که فرمان واقعا طولانی در خط فرمان چاپ شده است. به طوری که به مدت طولانی command-- این فقط بخشی کوتاه از آن است، اما در حال حاضر ما سه آرگومان خط فرمان. نقطه فاصله صفر، سلام، و hello.c. بنابراین این خط فرمان استدلال، استدلال که شما در حال عبور در خط فرمان به طوری که آن ندارد به باعث می شود زمانی که برنامه را اجرا می کنید. این امر می تواند خسته کننده باشد اگر که شما صدای جرنگ جرنگ فرار آن گفت، "خوب، که program-- که فایل شما کامپایل می شوند؟ Hello.c. چه پرچم به نظر شما دوست را وارد کنید. O داش. چه می خواهم شما فایل به نام؟ سلام. نه، شما فقط اجرای صدای جرنگ جرنگ فاصله ای سلام hello.c. بنابراین با نگاهی به این. در حال حاضر تعداد آنها شمارش argc-- استدلال است. این تعداد خط فرمان استدلال در خط فرمان وارد شده است. خب، argv-- فنی پنجم مخفف بردار، که اساسا به معنی آرایه. اما شما می توانید چشم پوشی است. Argv-- ما و argv رشته، بنابراین براکت ی argv رشته است. بنابراین این نوع دیگری از است لوستر شما قبل از دیده می شود. براکت بنابراین ما دیده ایم نماد که ما گفته ایم، مانند، رشته ها برابر Zamyla. براکت 0 دسترسی زهرا شخصیت ما همچنین براکت که دیده ام ما گفت سنین INT پرانتز 5. که آرایه ای از اندازه 5 اعلام کرد. بنابراین در اینجا یک نسخه از است براکت ما قبل دیده نمی شود. بنابراین این نوع و argv رشته ای که می شود به طور کامل آشنا که آن را فقط می شود یک رشته است. در حال حاضر نشان می دهد براکت که این یک آرایه است. بنابراین براکت ی argv رشته ابزار که ی argv آرایه ای از رشته است. در حال حاضر از لحاظ فنی یک رشته آرایه ای از کاراکتر است. پس این است که در حال حاضر یک آرایه از آرایه ای از کاراکتر. اما آن را بسیار آسان تر به فکر کردن در مورد این فقط به عنوان یک آرایه از رشته. پس چرا ممکن براکت خالی باشد؟ مانند، چرا که نه می توان گفت، براکت 5، براکت N؟ آره. آره. ما نمی دانیم که چگونه بسیاری از ورودی وجود دارد در حال رفتن به. بنابراین اگر ما در مثال صدای جرنگ جرنگ نگاه کنید، ما می گویند فاصله ای سلام hello.c صدای جرنگ جرنگ. در این مورد خاص، اتفاق می افتد وجود دارد به سه آرگومان خط فرمان. و به این ترتیب brackets-- خواهیم دید در یک ثانیه آن را نمی خواهد سه. از نظر فنی می شود چهار. اما براکت، ما را مثلا، سه وجود دارد. اما در حال حاضر اگر ما در حرکت نگاه mario.c نقطه نقطه، براکت ما می خواهیم برای قرار دادن دو در آنها است. و بسیاری از دستورات وجود دارد که یک تعداد متغیر از خط فرمان استدلال. پس چه این نسخه از علامت کروشه نشان می دهد این است که ی argv آرایه ای از رشته است. اما ما نمی دانیم که چگونه بسیاری از رشته در آن آرایه می باشد. و چگونه ما می دانیم که چگونه پس از آن بسیاری از رشته ها در آرایه باشد؟ که کل تعداد آنها نقطه است. تعداد آنها به ما می گوید چه مدت و argv است. بنابراین آخرین چیزی برای نگه داشتن در ذهن این است که، از نظر فنی، دستور خود را بعنوان یک از آرگومان خط فرمان. بنابراین pset1 سی دی، دو وجود دارد آرگومان خط فرمان. این برنامه به خودی خود، سی دی، و پس از آن بخش آرگومان واقعی از آن، pset1. هر برنامه ای که شما نوشته شده است تا کنون تا به حال یک خط فرمان argument-- نقطه بریده بریده ماریو. که تنها آرگومان خط فرمان است. بنابراین در حال حاضر در صدای جرنگ جرنگ به دنبال فاصله ای سلام hello.c. پس چه تعداد آنها است؟ 4. بنابراین تعداد آنها 4 است. صدای جرنگ جرنگ، براکت تا ی argv 0 صدای جرنگ جرنگ است. ی argv براکت 1 فاصله 0 است. براکت و argv 2 سلام، و ی argv براکت 3 hello.c است. خوب، پس سوال در این، و پس از آن ما در برخی از نمونه برنامه ریزی کنید. باشه. بنابراین ما یک نگاه hello3.c است. بنابراین این باید از آشنا باشد یکی از نمونه های C اول ما تا به حال که در آن ما فقط می گویند، سلام جهان است، اما در حال حاضر این است کلی تر. بنابراین در اینجا ما گفت: سلام ٪ s را بک اسلش نفر و argv براکت 1. Notice-- بنابراین تا این نقطه، این است چه فایل قالب من است مانند نگاه کرد. من تا به حال از نوع int اصلی (خالی)، و پس از آن من انجام کاری در تابع اصلی. حال حاضر به جای، زمانی که ما شروع خرید و فروش با آرگومان خط فرمان، ما نیاز به یک دولت شکل دیگری از اصلی. بنابراین به دنبال در hello3 دوباره، اصلی است که به دو آرگومان now-- تعداد آنها از نوع int، تعداد آرگومان های خط فرمان، و رشته ی argv براکت، واقعی رشته ها در خط فرمان وارد شده است. بنابراین من قصد دارم برای تغییر آن قالب را به منعکس کننده این واقعیت. در حال حاضر هر زمان که شما ارسال یک برنامه، اگر شما نمی نیاز به هر گونه خط فرمان استدلال، پس از آن فقط از INT اصلی (خالی). اما در حال حاضر که شما در حال نوشتن برنامه آرگومان خط فرمان، که شما در حال رفتن به انجام می شود برای مشکل مجموعه two-- پس اکنون که شما در حال اجرا برنامه هایی که نیاز به آرگومان خط فرمان، شما نیاز به اصلی این فرم است. بنابراین here-- این استفاده بزرگ است از آرگومان خط فرمان. بنابراین چاپ و argv 1. OK بنابراین اجازه دهید کامپایل و اجرای این برنامه. را hello3. کامپایل. نقطه بریده بریده hello3. و اجازه دهید بگویم، "راب." سلام راب. اگر من می گویم، "سلام ماریا،" سلام ماریا. سلام ماریا. هانا هنوز هم می گوید، "سلام ماریا، "چون من نمی انجام هر کاری با ما و argv 2. ی argv 2 در حال حاضر خواهد بود "هانا." تعداد آنها خواهد بود 3. اگر من این را؟ بنابراین سلام تهی. او به طور خلاصه در این واقعیت را لمس کرد که، از نظر فنی، از GetString ممکن است بازگشت تهی، اما ما می خواهیم یک گرفتن خیلی بیشتر به آنچه null را واقع است. اما آن را به عنوان یک ماده این واقعیت که هیچ است بد است. ما اگر چیزی اشتباه است آن را چاپ "سلام تهی." و به همین دلیل ما انجام داد چیزی اشتباه is-- خوب، وقتی که من فرار hello3 بریده بریده نقطه، تعداد آنها 1 بود. به طوری که به معنی طول و argv 1 بود. اگر یک آرایه است از طول 1، تنها شاخص معتبر صفر است. و بنابراین در اینجا و argv 1 است که در خارج طیف وسیعی از این آرایه است. این شبیه به قبل از زمانی که من سعی کردم شد برای ذخیره 6 در خارج از انتهای آرایه. بنابراین من در تلاش برای دسترسی به چیزی خارج از شمارش ی argv، و ما در حال گرفتن تهی. بنابراین یک نسخه بهتر از این، بهبود، به صراحت چک کردن تعداد آنها. بنابراین اگر تعداد آنها برابر با 2، این بدان معناست که ما فرار چیزی شبیه به hello3 نقطه اسلش راب. و آن را چاپ خواهد "سلام راب." اگر تعداد آنها برابر نیست 2، پس از آن آن را فقط به چشم پوشی از هر آنچه شما را در آرگومان خط فرمان به عنوان آرگومان خط فرمان. و یا اگر شما هیچ در همه قرار داده است، آن را فقط رفتن به چشم پوشی از آن و فقط می گویند، "سلام بر شما درود بر شما." بنابراین تدوین این. را hello4. و در حال اجرا hello4. در حال اجرا به این ترتیب، چه باید چاپ شود؟ "سلام بر شما درود بر شما." سلام بر شما درود بر شما. چه در مورد hello4 راب؟ "سلام راب." و در نهایت، سلام راب ماریا فقط "سلام شما" دوباره، دلیل این که شما واقعا نمی وارد چیزی که آن انتظار می رود. شما وارد نامهای از آن می تواند اداره کند، پس از آن فقط به قصور سلام شما رفتار است. بنابراین سوال این؟ و یا آرگومان خط فرمان. خوب، پس گرفتن یک نگاه در نمونه زن و شوهر بیشتر از با استفاده از خط فرمان اول arguments-- ما فاصله 1 نقطه C ی argv. بنابراین نظر به دور چه این برنامه باید انجام شود. اما توجه now-- این حلقه، این مسابقات الگوی دقیق من می گفت قبل از. ما فقط اتفاق می افتد به با استفاده از تعداد آنها به جای N. در حال حاضر تعداد آنها واقعا N. این طول آرایه ی argv است. بنابراین می تکرار بیش از ی argv آرایه تابع () printf نشستند هر مقدار ی argv. بنابراین اگر من این را. را ی argv 1. این کامپایل. نقطه بریده بریده ی argv 1. فقط در حال اجرا این، آن را چاپ نقطه بریده بریده ی argv 1 از آنجا که تنها خط فرمان بود argument-- نام برنامه. وجود دارد همیشه در least-- خواهد بود تعداد آنها نمی تواند کمتر از یک، از همیشه وجود دارد حداقل به نام برنامه را اجرا کنند. بنابراین و argv 1 راب را در ی argv 1 چاپ و سپس بر روی خط جدید "راب." بنابراین در تکرار اول از این حلقه، من 0 است. ی argv 0 نام برنامه است. نقطه بریده بریده ی argv 1. و پس از آن و argv 1 اول من است آرگومان خط فرمان است که راب. در این مرحله، ما برابر با تعداد آنها هستند. ما از شکستن حلقه و ما در حال انجام است. بنابراین این برای یک خودسرانه کار خواهد کرد تعداد آرگومان خط فرمان. توجه داشته باشید آن را چاپ و argv 0، ی argv 1، 2 و argv، argv را 3، 4 و argv. و هیچ ی argv 5 وجود دارد. تعداد آنها به 5 برابر است. بنابراین در argc-- در من برابر با 5، ما از شکستن حلقه. باشه. بنابراین سوال که قبل از ما در در یک مثال پیچیده تر نگاه می کنید؟ بنابراین و argv 2. خیلی خوب. بنابراین ما در حال هنوز هم چاپ استدلال خط فرمان. اما در حال حاضر متوجه ما برای حلقه تو در تو. بنابراین آنچه که این انجام می دهند؟ بنابراین اولین حلقه در حال انجام است دقیقا آنچه در آن قبل از انجام. ما هنوز در حال حلقه بیش از هر آرگومان های خط فرمان، اما در حال حاضر این loop-- دوم ایم همچنین قبلا چیزی شبیه این دیده می شود. وقتی که او بیش شد تکرار Zamyla چاپ Z-A-M-Y-L-A. بنابراین این حلقه دوم برای INT j برابر 0، N برابر strlen و argv براکت من. بنابراین اجازه دهید برای اولین بار فکر می کنم the-- اجازه دهید از طریق راه رفتن. بیایید فکر می کنم آنچه را که کامپیوتر آیا اگر من فرار این برنامه به عنوان فقط نقطه بریده بریده ی argv داش 2. بنابراین اگر من فرار این کد، سپس تعداد آنها در حال رفتن به برابر با 1 باشد. و رشته argv-- تنها وجود دارد رفتن به یکی از شاخص در argv، و که رفتن مساوی به نقطه باشد بریده بریده ی argv 2-- نام برنامه. OK، بنابراین در حال حاضر من برابر با 0، من کمتر از 1، من به علاوه به علاوه برای INT j برابر 0، N برابر strlen و argv براکت 0، بنابراین در تکرار اول از این حلقه. ی argv براکت 0 اسلش دات و argv 2 است. پس چه طول آن رشته است؟ خوب، نقطه اسلش A-R-G-V داش 2. بنابراین strlen که خواهد بود 8. بنابراین j برابر 0، N برابر با 8. تا زمانی که J کمتر از 8، J ++ است. و با که ما در حال رفتن به چاپ یک شخصیت، که ی argv براکت من پرانتز j است. بنابراین تنها من صفر است. ما هنوز هم تنها یک داشته آرگومان خط فرمان. در تکرار اول از حلقه for، ما رفتن به چاپ ی argv براکت 0 براکت 0. و سپس J است که به افزایش است. و ما در حال رفتن به چاپ ی argv براکت 0 براکت 1. و پس از آن و argv براکت براکت 0 2. بنابراین این اولین برخورد ما است از آرایه های چند بعدی. پیش از آن یاد داشته باشید که من گفتم که از لحاظ فنی و argv است آرایه ای از آرایه از شخصیت های. بنابراین در اینجا اگر من چیزی شبیه به گفت رشته ها ی argv برابر براکت من، و سپس به من گفت، براکت J، این انجام می شود همین است. در حال حاضر، شما دیده ام پیش براکت J. که فقط دسترسی به j ام شخصیت این رشته است. بنابراین با این، ما در حال گرفتن j ام شخصیت و argv i ام. پس چه باید این در نهایت خروجی؟ را ی argv 2. این کامپایل. نقطه بریده بریده ی argv 2. "راب ماریا هانا" و ما برخی از اتاق. بنابراین ما می بینیم که این خروجی نقطه بر روی خط و بریده بریده خود را در خط خود و در خط خود را دارد. آن را چاپ کردن هر شخصیت فردی هر آرگومان خط فرمان. و سپس در بین آنها، از آنجا که این خط جدید ما در حال چاپ را در اینجا، در بین آنها آن را یک خط جدید را چاپ کنید. بنابراین این شبیه به ی argv خط تیره قبل 1، که هر یک از چاپ آرگومان خط فرمان، اما در حال حاضر ما در حال چاپ استدلال خط فرمان و پس از آن تکرار از طریق هر یک شخصیت هر آرگومان خط فرمان برای دریافت این خروجی. باشه؟ بنابراین سوال این؟ یک نکته جالب توجه این است که خط فرمان arguments-- به طوری که آنها را با فاصله از هم جدا شده به عنوان شما به طور طبیعی انتظار می رود آنها را به. بنابراین یک رشته می تواند فاصله ها را در آن داشته باشد. این فوق العاده مهم نیست، اما اگر من استدلال خط فرمان سوم آنها هم به یک فضای در آن، پس از آن من چیزی شبیه به این می گویند. باشه؟ بنابراین این در حال حاضر هنوز هم تنها دارای سه خط فرمان arguments-- خوبی 4. نقطه بریده بریده ی argv داش 2، راب، ماریا، و هانا بلومبرگ. باشه. سوال در مورد این؟ هیچ چیز خاصی وجود دارد در مورد فضای خالی است. این فقط اتفاق می افتد که می شود خط فرمان رفتار شخصیت فضایی عنوان چگونه هر یک از استدلال شما هم جدا کنید. خیلی خوب. بنابراین پس از آن مجموعه ای مشکل two-- شما در حال رفتن به به دنبال در رمزنگاری کلید مخفی. بنابراین، شبیه به این مثال ما از یک داستان کریسمس را دیدم، شما در حال رفتن به اجرای برخی الگوریتم های که، با توجه به یک پیام، شما در حال رفتن به قادر به رمز در آوردن آن پیام که تنها کسی که با مخفی که کلید، با حلقه رسیور، باید قادر به رمزگشایی می شود. به طوری که نسخه استاندارد است. شما در حال رفتن به اجرای شود دو نسخه متفاوت است. اگر شما اتفاق می افتد را به یک نگاه در هکر edition-- در حال حاضر، ما در حال رفتن به شما یک رشته مانند این، که نشان دهنده یک رمز عبور رمزگذاری شده است. بنابراین هدف شما این است برای کشف کردن رمز عبور رمزگشایی چه چیزی است. در حال حاضر این است که در واقع چگونه کلمه عبور در بسیاری از رایانه ها ذخیره می شود، و آن را فقط این فروشگاه رشته تصادفی از شخصیت های. شما باید به شکل از چگونه برای به دست آوردن از این رشته تصادفی از شخصیت به کلمه عبور اصلی چه بود. و در نهایت، پس از این مجموعه ای مشکل، شما باید قادر به درک این بدان معنی. بنابراین به شما خواهد آموخت که چگونه به رمزگشایی این نوع از رشته تصادفی. به طور مشابه، اگر شما از هفته به یاد داشته باشید 0، شما ممکن است این URL دیده می شود. و شما باید قادر به رمزگشایی این در نهایت. شما ممکن است خوشحال می شود وقتی که شما رمزگشایی آن و کلیک بر روی لینک. خیلی خوب. که آن را برای امروز. بنابراین شما می بینید در هفته آینده! [پخش موسیقی الکترونیکی]