[Powered by Google Translate] DAVID J. مالان: همه حق. این CS50 است، و این است پایان دو هفته است. اگر شما انتظار میرود که به گرسنه در اطراف این زمان فردا، می دانم که ما قصد داریم برای تشکیل گروه کوچک فردا، پنج شنبه، 1:15 PM. این URL در اینجا وجود دارد اگر شما می خواهم به پاسخ دهید. فضا محدود است، بنابراین را ببخش اگر فرم تا آن زمان پر فرم را پر کنید. یکی دیگر از URL هر چند که ممکن است مورد علاقه باشد این است. بنابراین فقط در حدود یک ماه زمان، البته در حال رفتن به در دسترس همه گسترده تر است که از طریق آن از طریق EDX مردمی بر روی اینترنت خواهد بود قادر به دنبال همراه، شرکت در این دوره کاملا فعالانه، در واقع. لوازم خانگی CS50 و CS50 بحث و بسیاری از آنها می شود با استفاده از ابزارهای نرم افزار های مختلف است که ما در حال حاضر شده است با استفاده از این ترم. و یکی از طرح های ما می خواهم به عنوان یک آزمایش را در این سال برای دیدن که چقدر محتوای ما می توانیم به دیگر سخن گفته ترجمه و زبان های نوشته شده. بنابراین اگر شما ممکن است علاقه مند به شرکت در این پروژه، به موجب آن ما به رونوشت انگلیسی و زیرنویسها البته سخنرانی ها و شلوارک ها و سمینارها و بخش ها و مثل ها - اگر شما روان صحبت می کنند و یا ارسال نامه روان برخی از زبان های دیگر، ما می دوست دارم تا شما را در این پروژه شرکت کنند، که به موجب آن شما را بر روی یک یا بیشتر از فیلم ها، ترجمه آنها را به زبان شما می دانید به خوبی. برای شما یک حس رابط کاربری به من بدهید، این رابط کاربری مبتنی بر وب وجود دارد که ما استفاده خواهیم کرد که اساسا ایجاد یک UI شبیه به این. این به من آموزش برخی از هالووین گذشته. و در سمت راست وجود دارد در سیاه و سفید در کنار این تمبرها زمان، شما چیزهای مختلف است که از دهان من بیرون آمد آن روز را مشاهده کنید. و سپس در زیر آن، شما قادر خواهید بود به برخی از زبان های دیگر ترجمه کنید. دقیقا همان چیزی است که نقشه برداری شده است در میان، در این مورد، انگلیسی و، می گویند، اسپانیایی. پس از آن در واقع یک ابزار بسیار کاربر پسند. شما می توانید به عقب و جلو بسیار به آسانی با میانبرهای صفحه کلید است. بنابراین اگر شما می خواهم برای شرکت در این آزمایش و کلمات خود را دیده و خوانده شده توسط هزاران نفر از مردمی خارج وجود دارد، لطفا احساس آزاد شرکت کنند. در حال حاضر یک کلمه در مورد بچه گربه از دوشنبه، تا مبادا ما فرستاده شده بیش از حد پیام ترسناک است. آیا متوجه است که در ساعات اداری نشان می دهد و به عنوان بخش نشان می دهد، طراحی این دوره بسیار به دانش آموزان همکاری و صحبت کردن از طریق مجموعه مسائل و مشکلات را با هم کار کنند. و واقعا خط پایین می آید به، دوباره، کار شما در نهایت باید تسلیم را آن گونه که مایلید تغییر دهید. پس از آن، کاملا صادقانه - در ساعات اداری، این کاملا طبیعی است - کاملا انتظار می رود، حتی - به گفتگو با برخی از دوستان در کنار شما. اگر او در حال مبارزه با برخی از موضوع، و شما مانند، آه، به خوبی اجازه من به شما نگاهی اجمالی به برخی از خط از کد که من نوشتم. که خوب است. که اتفاق می افتد. و این بسیار مساعد است، من فکر می کنم، با فرایند یادگیری است. که در آن خط، دوباره، می شود عبور وقتی است که سر مرتب سازی بر بیش از کج در اینجا برای تعداد بسیار زیادی از ثانیه و یا دقیقه برای آن واقعا به تنها بوده است فرصت رفع انسداد دوست شما است. و بدیهی است، هنگامی که همه چیز را از طریق ایمیل و Dropbox و رد و بدل مانند، بیش از حد خط وجود دارد. بنابراین با تمام معنی، احساس راحتی و احساس را تشویق به گپ زدن با دوستان و همکلاسی های مورد psets و بیشتر. و درست است که آنچه که شما در نهایت تسلیم واقعا باید تحقق بخشیدن به محصول خود را ایجاد و نه شخص دیگری. بنابراین در همین از موجودات نوازش کن، شما ممکن است می دانم که از این مرد در اینجا. بنابراین این یک فیلم horrifically قشنگ از سال قبل است. هر کسی در اینجا دیده می شود Spaceballs؟ بسیار خوب. بنابراین یک شماره خوب است. بنابراین این راه زیبا و علمی ما از معرفی در نهایت امروز مفهوم رمزنگاری. و پس از مشکلات دامنه خاص برای pset 2، که خواهد آمد خارج اواخر فردا شب، این است که به جهان از رمزنگاری فرو رفتن، که هنر از رمزنگاری یا تقلا اطلاعات است. و این در نهایت به جهانی امنیت. در حال حاضر امنیتی برای بسیاری از ما در فرم از مکانیزم نسبتا پیش پا افتاده می آید. همه از ما نام کاربری و کلمه عبور است. و همه از ما نام کاربری و کلمه عبور بسیار بد، به احتمال زیاد. اگر رمز عبور خود را در وب سایت های متعدد است، که احتمالا نمی بهترین ایده، به عنوان ما به سمت پایان ترم بحث خواهیم کرد. شوخی نیست - - در خود را اگر رمز عبور خود را در یک یادداشت چسبنده نوشته شده است مانیتور، که بیش از حد است و نه لزوما بهترین طراحی اما کاملا مشترک پدیده. و اگر شما در حال با استفاده از رمزنگاری به رمز در آوردن رمزهای عبور شما، آنها به ویژه آسیب پذیر است. بنابراین اگر شما فکر می کنم شما فوق العاده باهوش با داشتن یک کلمه پنهان مستند در جایی بر روی هارد دیسک شما است که همه کلمات عبور شما را اما آن را در یک پوشه است که هیچ کس را به نگاه، که بیش از حد نه چندان مکانیزم امن است. و بنابراین، آنچه pset 2 معرفی این هنر از رمزنگاری است و تقلا اطلاعات به طوری که چیزهایی مانند کلمه عبور امن تر است. تا در ایجاد انگیزه برای این مشکل بسیار واقعی در دنیای بسیار غیر واقعی جهان سناریو، اجازه دهید به شما معرفی کنم به یکی از کلیپ های مورد علاقه ما در اینجا از این فیلم، Spaceballs. [پخش VIDEO] کلاه شیطان، چه رفتن است؟ چه چیزی شما را به دختر من انجام شده است؟ اجازه درخشان جراح پلاستیک جوان، دکتر فیلیپ را به شما معرفی Schlotkin، بزرگترین بینی مرد کار در تمام جهان و بورلی هیلز. شما حضرت والا. بینی کار؟ متوجه نمی شوم. او در حال حاضر یک کار بینی. این شیرین حال حاضر 16 بود. بدون، آن چیزی است که شما فکر می کنید نیست. این بسیار، بسیار بدتر است. اگر شما به من به سپر هوا ترکیب نمی، دکتر Schlotkin دادن دختر خود را به عقب بینی قدیمی خود را. بدون! از کجا شما را انجام داد؟ همه حق است. من بگویید. من بگویید. نه، بابا، نه. شما باید نمی شود. You're حق، عزیز من. من بینی جدید خود را از دست. اما من آنها را به این ترکیب به هیچ مهم نیست که چه. بسیار خوب است. دکتر Schlotkin، بدترین کار خود را. من لذت. بدون! صبر کنید، صبر کنید. من بگویید. من بگویید. من می دانستم که به این کار است. همه راست، آن را به من بدهید. این ترکیب یکی است. یک. یک. و دو. و دو. و دو. و سه سه. سه. چهار. چهار. چهار. پنج پنج. پنج. بنابراین ترکیب یک، دو، سه، چهار، پنج است. این احمقانه ترکیبی است که من تا به حال در زندگی ام شنیده ام. این نوع از چیزی که ادم سفیه و احمق را در توشه خود را داشته است. از شما متشکرم، عالیجناب. چه کار کردی؟ -I را خاموش دیوار. نه، به شما نداشت. شما را خاموش کل فیلم. من باید فشار دادن دکمه اشتباه است. خوب، آن را به عقب بر. قرار دادن فیلم به عقب. بله، آقا. بله، آقا. بیایید بروید، ارنا. بیا، گرچن. البته شما می دانید که من هنوز هم می خواهم که به شما برای این لایحه است. خوب، کار می کند؟ دروازه کجاست؟ آن کار می کرد، آقا. ما باید ترکیب. بزرگ. در حال حاضر ما می توانیم هر نفس از هوای تازه از سیاره Druidia. ترکیبی چیست؟ یک، دو، سه، چهار، پنج. یک، دو، سه، چهار، پنج؟ بله. که شگفت انگیز است. من همان ترکیب را در چمدان من است. آماده Spaceball 1 برای خروج فوری. بله، آقا. و تغییر ترکیب در چمدان من است. -OW! [VIDEO] END پخش DAVID J. مالان: شگفت انگیز فیلم شما در حال حاضر باید تمام. پس زمینه در اینجا این است که با استفاده از داده های نا امن می آید فرصتی برای رمز در آوردن آن و به آن تقلا. و بنابراین این، به عنوان مثال، یک نمونه از پیام های رمزگذاری شده است. این در واقع می گوید که چیزی در زبان انگلیسی است. اما آن را به وضوح به طور کامل آشکار و بدیهی نیست. و ما امروز می آیند دایره کامل به کسی را دست انداختن جدا چه این راز پیام در اینجا بنویسید. اما در دنیای واقعی از کامپیوتر، همه چیز مانند آنها ممکن است حتی نگاه نمی شود عبارات انگلیسی است. به عنوان مثال، این همان چیزی است که شما ممکن است در استاندارد لینوکس یا مک یا کامپیوتر یونیکس را در یک فایل است که یک بار پس از یک زمان بود، نام رمز عبور فایل. در حال حاضر، آن را به جاهای دیگر منتقل شده است. اما اگر شما را در جای مناسب بر روی یک سیستم نگاه کنید، شما نه تنها خود را ببینید نام کاربری و یا اینکه از افراد دیگر بر روی سیستم است، اما شما خواهید دید نسخه رمز رمز عبور خود را. در واقع، دخمه کلمه وجود دارد نشان می دهد که مسائل زیر رمزگذاری شده است. و این سری از حروف به ظاهر تصادفی و شخصیت ها و شماره ها و غیره را می توان تنها با به طور کلی دانستن برخی راز رمزگشایی - یک کلمه رمز، شماره رمز و راز است. و به این ترتیب در واقع، هنر از رمزنگاری در نهایت جوش پایین اعتماد به برخی از مرتب کردن و دانستن چیزی است که شخص دیگری را نمی کند. ما این کار را در جزئیات کمی بیشتر اکتشاف امروز و در pset آمد. و در حال حاضر یک کلمه در پاس / خرابی. بنابراین به خصوص، همانگونه که برخی از شما را به pset 1، دستگاه شیرجه، و جهان بسیار جدید برای خودتان، متوجه شد که سرخوردگی و سردرگمی و فنی مشکلات هستند که انتظار می رود. به خصوص با pset اول، که در آن فقط خیلی جدید وجود دارد، فقط گرفتن آشنایی با LS و سی دی و تمام این دستورات محرمانه در یک محیط جدید است. و این جدا از مواد واقعی و برنامه نویسی خود است. بنابراین، تحقق بیش از حد، که قطعا وجود دارد ساعات اداری که وجود دارد به عنوان ساختار پشتیبانی می کند. بخش شروع روز یکشنبه آینده. اما مهمتر از همه، اگر شما احساس که فقط این نیست جهان برای شما، متوجه باشید که واقعا فقط نیاز به زمان است. شد و آن را برای این فرصت نه سال پیش برای من یک کلاس هستن پاس / خرابی، راستش، من هرگز حتی پا در کلاس تنظیم شده است. و شما می توانید این را تغییر دهید، تا می گویند، دوشنبه پنجم از دوره. بنابراین اگر شما بر روی لبه در حال حاضر، درک کنند که به جای سر را به برخی دیگر آب در دسترس نباشد، قطعا فقط در حال تغییر به پاس / خرابی در نظر بگیرند. باز هم، واقعا وجود ندارد این فرهنگ در اینجا در دانشگاه هاروارد در نظر گرفتن همه چیز پاس / خرابی از هر کس واقعا می خواهد برای رسیدن به و یا overachieve. اما صادقانه بگویم، این یک روش فوق العاده از تلاش چیزی است که ممکن نیست برای شما آشنا است. و شما را تا پایان انجام این کار در اکثر موارد کاملا خوب، شاید خیلی با تعجب خود را. و در شرایط عینی تر، آنچه که من فکر می کنم پاس / خرابی به طور کلی آیا، به خصوص که شما ممکن است با pset 0 تجربه، اگر شما قرار داده ایم در 10 ساعت، 15 ساعت، 25 ساعت را به برخی از pset - و شما فقط کوبیدن سر خود را در مقابل دیوار، و آن را فوق العاده در اواخر شب، اما تو pset مانند 90 درصد از راه صورت گرفته است، شما می دانم که شما نه تنها می تواند از یک چیز - پاس / خرابی واقعا طول می کشد لبه خارج از کلاس مانند این، که در آن شما می توانید مرتب سازی بر اساس از خوشحالی می گویند بسیار خوب، من می دانم که این کامل نیست. اما من کار می کرد الاغ من در این است. من خیلی خوشحال هستم که در آن به پایان رسید تا. و این امر باعث انتظارات برای ویزای دیدار خواهد کرد / شکست. پس وقت را در ذهن نگه دارید. بسیار خوب. بنابراین کسانی که تلاش کرده اند به دانشگاه هاروارد با استفاده از Wi-Fi را می دانیم که SSID CS50 وجود دارد، یک اتصال Wi-Fi شناور که در اطراف شما ممکن است شانس بهتری داشته باشد. اگر شما می خواهم را امتحان کنید - این کمی کنایه آمیز است که رمز عبور برای این اتصال به این سرعت بهتر و به ما اطلاع دهید اگر آن را بهتر - یک، دو، سه، چهار، پنج، تمام راه را تا به هشت زیرا هشت امن تر از پنج. بنابراین اگر شما نیاز به رمز عبور از Wi-Fi، به CS50 اتصال بی سیم در اینجا. یک، دو، سه، چهار، پنج، شش، هفت، هشت. و پس از در CS50 بحث اگر شما هنوز هم از مسائل مربوط به اتصال متناوب، و ما قدرت است که می شود برای این فضا می دانم. بسیار خوب. بنابراین یک تیزر، سریع، به خصوص برای کسانی از شما پسران فن و یا دخترانی که از تمام چیزهایی اپل. چیزی که من از چند سال حفر این فایل در اینجا بود، ilock.c، فقط به نوع بتن تر و پیچیده تر برخی از C بیشتر علوم پایه برنامه های ما در حال نوشتن است. بنابراین من باز کردن این فایل، ilock.c. در صفحه سخنرانی امروز در دسترس است. در سمت چپ، یک لیست طولانی از توابع شما را ببینید. بنابراین شخص که این را نوشتهاید نوشت: بسیاری از توابع، بیش از فقط اصلی است. او با استفاده از یک دسته از کتابخانه ها در اینجا. و اگر ما شروع به پیمایش از طریق، این در واقع بسیار برای اولین بار، به باور من، برای آی فون اصلی کرک. هنگامی که شما می خواهید به فرار از زندان آی فون اصلی، که به معنی untether آن را از AT & T و در واقع نصب نرم افزار خاصی بر روی آن و انجام کارهای اپل که نمی خواست مردم را به انجام - خوب، کسی که در زمان هم برای کشف کردن دقیقا چگونه آنها می توانند بهره برداری نقص نرم افزار، اشتباهات، اشکالات، نرم افزار اپل. و به این ترتیب ilock.c متولد شد. که اگر شما آن را بر روی یک کامپیوتر وارد شده و آن را بر روی آی فون است که نصب ، می گویند، از طریق یک کابل USB به کامپیوتر شما متصل می شود، این به شما می دهد امتیازات اداری و یا ریشه بر روی آی فون خود را و اجازه دهید به شما خیلی هر آنچه شما می خواهید. و بنابراین این گربه های جذاب و بازی موش بین اپل و سایر نقاط جهان به ویژه به عنوان آنها، مانند بسیاری از شرکت ها، سعی کنید به قفل مسائل خود را به طوری که شما فقط می تواند با آن انجام دهد آنچه را که قصد. اما به لطف به مردم مثل این و درک خود را از سطح پایین جزئیات و، در این مورد، برنامه نویسی C و بسیاری از ساختار های آشنا که ما شروع به بازی کردن با، شما قادر به اهرم سخت افزار را به شیوه ای مناسب می بینید و نه لزوما برخی از نهاد شرکت. بنابراین به عنوان مثال، من هیچ ایده چه چیزی این همه در حال انجام است. اما GetVersion برای تلفن های موبایل بسیار سرراست است. و به نظر می رسد مثل این است که یک تابع است که این فرد نوشت. نگاهی به برخی از نوع عدد صحیح به عنوان آرگومان، هیچ چیزی رو بر نمی گرداند، اما به نظر می رسد حلقه با حلقه for و اگر شرط، اگر شرط، شکستن، و به نحوی مربوط به شماره نسخه است. اگر ما در پایین حرکت - حتی اگر بسیاری از این کلمات کلیدی می رویم به جدید، و وجود دارد زیادی از توابع را در اینجا دیده ام هرگز و ممکن است بیش از هرگز البته ترم - در پایان روز، آن را به پیروی از قوانین و منطق ایم که بازی با تا کنون. پس این است که بیش از حد قدیمی کرک 3S آی فون خود را و یا 4S و یا به زودی 5S، این روزها، اما می دانم که آن را بسیار از این دنیا گرفته شده است که ما شیرجه به. پس نگاهی به یک مثال کمی ساده تر به شما اجازه می دهد تا. این یکی، فقط برای گرفتن با برخی از نحو گرم و همچنین بعضی از داده های دیگر نوع این نتیجه رسیده ایم که این مورد صحبت کرده اند اما در C. واقعا دیده نمی شود بنابراین این فایل با نام positive1.c است. و در هر نظر در بالای این فقط خواستار آن است که یک کاربر ارائه می کنند عدد مثبت است. پس از آن یک مثال از یک حلقه DO-در حالی که، که خوب است تعاملی برای کاربر برنامه های که در آن شما نیاز به کاربر برای انجام کاری است. و اگر آنها همکاری شما در آنها داد و یا رد نظرات آنها. مورد، من رفتن به خطوط 19 از طریق 24 تا زمانی که کاربر دارد داده نشده من یک عدد مثبت است. در حال حاضر این جزئیات در اینجا در خط 18، چرا N من اعلام به بالاتر از این کل حلقه ساختاری به عنوان مخالف به راست در کنار خط 22 که در آن من در واقع به N مهم است؟ آره؟ [نامفهوم] DAVID J. مالان: بله، بنابراین این موضوع دامنه است. و در اصطلاح عامی، چه دامنه برای اشاره؟ آره؟ [نامفهوم] DAVID J. مالان: آیا می توانم یک کمی بلندتر صحبت می کنید؟ SPEAKER 1: که در آن شما می توانید یک متغیر خاص دسترسی داشته باشید. DAVID J. مالان: کامل. که در آن شما می توانید یک متغیر خاص دسترسی داشته باشید. و به طور کلی، قاعده کلی تا کنون این بوده است که در دامنه برخی از متغیر جدید ترین پرانتز فرفری که شما را دیده ام تعریف می شود. و بنابراین در این مورد، اگر من اشتباه اعلام N در خط 22، که خط به کار می کند. من یک عدد صحیح، و من می خواهم آن را که N متغیر در خط 22 قرار داده است. اما کدام خط از کد در حال حاضر هیچ ایده چه چیزی من صحبت کردن در مورد؟ پس 25، و آن را از 24 تبدیل می شود، و همچنین، چون در این صورت، آن را در خارج می افتد از آکولاد. پس فقط کمی از مزاحمت، اما به راحتی به سادگی با اعلام حل متغیر خارج از تابع خود دارد. در حال حاضر ما بعدا خواهید دید، شما می توانید یک گام به جلو است. و شما حتی می تواند یک کمی تنبل - و این نمی شود، توصیه می شود به طور کلی - اما شما حتی می تواند تنبل دریافت و قرار دادن یک متغیر در سراسر جهان، پس به صحبت می کنند، نه در داخل یک تابع، داخل یک حلقه است، اما در فایل خود را، در خارج از همه از توابع شما نوشته شده است، که من در اینجا در خط 15. اما این به طور کلی بر اخم کرد. اما تحقق این راه حل است که گاهی اوقات به مشکلات دیگر، به عنوان خواهیم نهایت را ببینید. بنابراین در حال حاضر، ما آن را شبیه به این را ترک کنید. اما اجازه دهید ببینیم آیا می توانیم بازنویسی این فقط برای شروع به بیان خودمان کمی متفاوت است. بنابراین این برنامه، فقط برای روشن، positive1 است. اجازه دهید من جلو بروید و در پنجره ترمینال من positive1 را وارد کنید. جمع آوری، درست است. من قصد دارم برای اجرای positive1، ضربه را وارد کنید. من تقاضا می کنم که شما از من یک عدد صحیح مثبت را. من -1 می گویند. که کار نمی کند. 0، 99، که به نظر می رسد به کار کند. شاید دقیق ترین تست. اما حداقل آن را بررسی سلامت عقل خوب است که ما در مسیر درست هستیم. بنابراین در حال حاضر من به جلو بروید و اجازه دهید باز کردن نسخه دو از این. و آنچه متفاوت است در حال حاضر؟ این پیاده سازی همین. اما آنچه به وضوح های مختلف در این زمان بیرون پریدن؟ آره، پس این بولی به رنگ سبز است. Gedit به رنگ سبز این واژه کلیدی شناخته شده به عنوان بولی برجسته، که یک نوع داده است. این کار به تمام نسخه های C. ساخته شده است، شما نیاز به عبارتند از: کتابخانه خاص. در مورد ما، من شامل کتابخانه CS50 به طوری که ما دسترسی به بولی. اما در خط 18، به نظر می رسد به یک مقدار بولی در اینجا به نام خدا را شکر. بنابراین من می توانم هر چیزی. اما من آن را به نام فقط به نوع انتقال معنا معنایی خدا را شکر. بنابراین در ابتدا در خط 18، من ظاهرا خدا را شکر نمی کند چرا که مقدار بولی خدا را شکر اولیه در خط 18 مقدار false است. و بعد از آن به نظر می رسد آنچه من در اینجا در خطوط 21 تا 23 انجام شده است من فقط نوع بازنویسی منطق من است. بنابراین هیچ عملکرد متفاوت است. اما در خط 22 در حال حاضر، من اگر هوشمند کاربر را فراهم کرده است بزرگتر از 0، و سپس من به سادگی ارزش خدا را شکر درست را تغییر دهید. و چرا من به انجام این کار؟ از آنجا که در خط 25، ظاهرا، من قصد دارم به بررسی شرایط است. آیا این حلقه در حالی که خدا را شکر نادرست است. بنابراین من پیشنهاد می کنم به عنوان یک جایگزین به نسخه یک به دلیل آن را در حداقل کمی بیشتر بصری، شاید. کمی بیشتر ریشه در زبان انگلیسی است. بنابراین زیر را انجام دهید در حالی که شما خدا را شکر نمی کند و یا در حالی که خدا را شکر نادرست است. و این زمان، بیش از حد، من ظاهرا اهمیتی نیست به خاطر داشته باشید آنچه را که کاربر تایپ به خاطر اطلاع N متغیر وجود دارد. پس در واقع، I - یک دروغ کوچک سفید وجود دارد. عملکرد برنامه کمی متفاوت است، هنگامی که ما به پایین دریافت کنید چون من به خاطر سپردن آنچه N است. اما من می خواستم برای نشان دادن بیش از حد است که حتی اگر ما دیده ایم GetInt و GetString که در سمت راست علامت مساوی استفاده می شود تا کنون به طوری که ما به یاد داشته باشید ارزش، مشخصات فنی، که به شدت ضروری نیست. اگر به هر دلیلی شما فقط اهمیتی به صرفه جویی در مقدار، شما فقط می خواهم به بررسی ارزش، توجه داشته باشید که ما به سادگی می توانید بنویسید و این کار را به عنوان GetInt باز پرانتز، پرانتز نزدیک است. که تابع در حال رفتن به یک مقدار را برگرداند، گفته ایم. این به شما بین المللی است. و به این ترتیب اگر شما روانی فکر می کنم این اتفاق می افتد، زمانی که من در 99 تایپ، GetInt را برمی گرداند به شماره 99. و به این ترتیب مفهومی، آن را به عنوان اینکه کد من در واقع این است. بنابراین اگر 99 است که در واقع بزرگتر از 0 باشد، پس از آن خدا را شکر درست می شود. سپس خط 25 متوجه آه، ما در حال انجام می شود چون من در حال حاضر خدا را شکر. و در خط 26، ما به سادگی می گویند، با تشکر از عدد صحیح مثبت، هر آنچه که از آن رخ داده است. در حال حاضر قند کمی نحوی را در اینجا اجازه دهید، پس به صحبت می کنند. بیایید ببینیم که اگر ما می توانیم پاک کردن این خط 25 با این واریانس سوم و نهایی در positive3. بنابراین تنها تفاوت در حال حاضر آن چیزی است که خط از کد متوجه؟ آره، بنابراین 25. و ما واقعا دیده نمی شود این ترفند فقط رتبهدهی نشده است. اما ما علامت تعجب در دوشنبه، که بیانگر گزینه ای است که پاسخ دادن به چه؟ نه چندان، و یا نفی. بنابراین یک مقدار بولی و ارزش خود را به تلنگر. واقعی می شود نادرست است. غلط می شود درست است. بنابراین، پیشنهاد میکنم، حتی یک کمی بیشتر بصری از راه نوشتن کد چرا که من هنوز هم خدا را شکر مقداردهی اولیه را به نادرست. من هنوز زیر را انجام دهید. من مجموعه خدا را شکر درست هنگامی که زمان می آید. اما در حال حاضر شما واقعا می تواند فقط این کد شفاهی چپ به راست ترجمه، در حالی که خدا را شکر. از آنجا که بنگ، و یا نقطه علامت تعجب، بیانگر گزینه ای است که پاسخ دادن به آن مفهوم نیست، بنابراین در حالی که خدا را شکر نیست. تا دوباره، ما را به مفاهیم جدید در هر SE معرفی شده است. ما در مورد Booleans صحبت زمانی که ما با ابتدا بازی. اما متوجه در حال حاضر ما فقط می توانید شروع به نوشتن کد خود را در بسیاری از راه های مختلف. بنابراین به ویژه در pset1، اگر شما مرتب سازی بر تلاش برای کشف کردن راهی برای ارسال برخی از برنامه، شانس شما را در شانس هستید چون قصد دارد به هر تعدادی از راه حل های که شما می توانید بر اساس اتفاق می افتد. به عنوان مثال، این است که تنها سه حتی ساده ترین برنامه های. بسیار خوب. و در حال حاضر به یاد در تاریخ دوشنبه، ما در این یادداشت با ارزش بازگشت باقی مانده است. بنابراین برای اولین بار، ما نوشت: برنامه ای است که نه تنها اصلی آن را نیز تابع سفارشی خود را دارد که من نوشتم اینجا. بنابراین در خط 31 تا 34، من پیاده سازی یک تابع مکعب است. این مجتمع نیست. این فقط یک بار، در این مورد است. اما آنچه مهم است در مورد آن این است که من در نظر گرفتن ورودی در فرم و من بازگشت به خروجی در به صورت یک بار یک بار. بنابراین در حال حاضر من از این توانایی، بسیار شبیه به من با printf به تنهایی استفاده می شود، به تماس این تابع با فراخوانی تابع مکعب است. و تابع مکعب طول می کشد برخی از ورودی است. و تابع مکعب برخی از خروجی را بر می گرداند. و در مقابل، printf فقط به چیزی. این چیزی است که ما در مورد مراقبت بر نمی گرداند - حتی اگر، به عنوان یک به کنار، آن را نشانی از یک مقدار را برگرداند. شما فقط به طور کلی آن را نادیده گرفت. Printf فقط به چیزی. اما در هر حال یک عارضه جانبی از چاپ به روی صفحه نمایش است. در مقابل در اینجا، ما باید تابع مکعب، که در واقع چیزی را برمی گرداند. پس این است که به طور کلی - برای کسانی که آشنا با این، آن را یک ایده نسبتا سر راست است. اما برای کسانی که کمتر آشنا با این ایده عبور از در ورودی و به دست آوردن خروجی برگشت، بیایید سعی کنید فقط چیزی فوق العاده ساده است. هر کسی راحت بالا آمدن بر روی صحنه به طور خلاصه؟ شما به راحتی با یک دوربین در شما، و همچنین. آره. خوب، چه نام شما؟ کن: کن. DAVID J. مالان: کن. تمامی حقوق، کن. بیا تا. بنابراین کن است برای رفتن به یک تابع انواع. و اجازه دهید به پیش بروید و این کار. بیایید فانتزی کوچک. از ملاقات شما خوشبختم. به مرکز صحنه خوش آمدید. بسیار خوب. بیایید آمار این دکمه در اینجا. بسیار خوب. بنابراین در اینجا شما باید یک تخته مدرن. و آنچه که من تابع اصلی است، به عنوان مثال. و من اپل در دست من نیست. من واقعا به یاد داشته باشید چگونه می توان به - خب، در واقع، می تواند که می گویند نیست. من واقعا نمی دستخط خوب است. و بنابراین، من می خواهم شما را به چیزی بر روی صفحه نمایش برای من نسخه قابل چاپ. بنابراین من برنامه اصلی است. و من به شما می گویند این کار را با نوشتن آن را در ابتدا مرغ من و سپس عبور شما یک ورودی است. بنابراین به عنوان احمقانه است اگر این تمرین، مفهوم از توابع و فراخوانی تابع و بازگشت عملکرد واقعا جوش پایین به این. من اصلی. من فقط نوشته شده است printf ("چیزی") بر روی صفحه نمایش. من در حال اجرا این برنامه است. و به زودی به عنوان printf می شود به نام، آن را طول می کشد یک آرگومان - و یا یک پارامتر، گاهی اوقات - بین کوتیشن ها. در اینجا این است که استدلال است. من آن عبور کن. در حال حاضر او یک جعبه سیاه است که از چند سال پیش که ظاهرا نوشته شده است فقط می داند که چگونه به چاپ بر روی صفحه نمایش است. بنابراین، اجرا کند. که بد نیست. بنابراین، بسیار خوب است. بنابراین در حال حاضر کن که انجام شده است به اجرا. آیا او باید به من هر چیزی دست به عقب؟ به طوری که ما تا کنون دیده ایم. باز هم، printf می کند در واقع یک عدد بازگشت. اما ما قصد داریم که در حال حاضر به چشم پوشی از آنجا که ما از آن استفاده می شود هرگز. به طوری که آن را برای کن. و بنابراین در حال حاضر اصلی می آید و به اجرا - اصلی طول می کشد کنترل از برنامه چرا که خط از کد، printf انجام شده است، اجرا شده است. و ما در مورد راه ما را در اجرای هر خط دیگر وجود دارد. بسیار خوب. بنابراین در حال حاضر سعی کنید یک مثال کمی متفاوت به شما اجازه می دهد تا. و این زمان در اینجا، برای اولین بار روشن شدن صفحه نمایش در اینجا. و در این زمان، ما می خواهیم از تابع cubing انجام دهد. اما این بار، من انتظار دارم یک مقدار خروجی است. پس جلو بروید و اجازه دهید این کار را انجام. بنابراین در حال حاضر من یک خط از کد است که می گوید: X مکعب = (x). پس در واقع let's - خط از کد، فراخوان، به نظر می رسد مثل این. X مکعب = (x). پس چگونه است که این رفتن به محل کار؟ پس جلو بروید و اجازه دهید به شما یک صفحه سفید را دوباره. و من به نوشتن در حال حاضر پایین مقدار x، که در این لحظه در زمان اتفاق می افتد می شود، اجازه دهید می گویند، 2، برای نگه داشتن آن ساده است. بنابراین من بر روی یک تکه کاغذ ارزش 2 نوشته شده است، است که مقدار x من. من از آن دست کن. کن و من فقط پاسخ ارسال کنم؟ DAVID J. مالان: آره، بیایید تنها به نوشتن پاسخ. باشه. و هم اکنون از او چیزی به من بازگشت. پس - کامل است. نیس اش Segue. بنابراین در حال حاضر او به من دست ارزش 8، در این مورد است. و آنچه را می توانم با آن انجام دهید؟ خب، در واقع، اجازه دهید را ببینید. این حق را دریافت کنید. چه هستم من را با آن انجام دهید؟ حالا من قصد دارم به این ارزش و در واقع آن را در آن ذخیره بیت در حافظه است. اما توجه کنید، من از نوع مبارزه است. من کمی گیج شده زیرا که در آن به کار من در واقع مقدار x؟ زیرا آنچه من فقط از لحاظ جسمی دست کن یک تکه کاغذ که تا به حال ارزش 2 که ایکس. و در واقع، دقیقا چه اتفاقی می افتد. پس از آن معلوم می کند که هنگامی که شما به یک تابع، و شما را در بحث عبور مانند "سلام دنیا" و یا شما را در استدلال مانند 2 عبور، به طور کلی، شما عبور در یک کپی از آن بحث شده است. و به این ترتیب همانطور که من نوشت شماره 2 در اینجا و آن را به دست کن، که باید این معنی است که من هنوز یک کپی از 2 ارزش در جایی. چرا که در واقع، در حال حاضر که من بدست ارزش 8، من نیاز به بازگشت به عقب در RAM و در واقع نوشتن 8 که در آن من یک بار تا به حال شماره 2. بنابراین بصری به یاد داشته باشید این مفهوم به معنای واقعی کلمه عبور یک کپی از این مقدار است. کن همه چیز را به او، دست من چیزی - در این مورد، یک ارزش مانند 8. و سپس من را مجبور به انجام چیزی که با ارزش اگر من می خواهم به آن را نگه دارید. پس از این خواهد بود بیش از حد قبل از اینکه طولانی آشنا است. از شما بسیار سپاسگزارم برای این دمو در اینجا کن. بسیار خوب. خیلی خوب انجام می شود. پس ببینید که چگونه است که در نهایت به برخی از تابع تلفنی که ما انجام داده ایم اینجا. پس جلو بروید و اجازه دهید ما را به بازگشت به عنوان مثال cubing اینجا. و توجه کنید که اگر ما می خواهیم به واقع شروع به مصرف این بیشتر، ما قصد داریم باید آگاه از این واقعیت که عدد X است که که در به تصویب رسید در اینجا متفاوت است از آنچه که در واقع در حال وارد شدن به تابع منتقل می. پس باز هم، این تصویب شده توسط نسخه در حال رفتن به تبدیل شدن به کاملا وابسته در یک لحظه. پس نگاهی به چیزی می کند که کاملا کار نمی کند هنوز به شما اجازه می دهد تا. من قصد دارم به جلو بروید و باز یک مثال سوم حشره دار، که توسط طبیعت ناقص است. نام buggy3، و آن را پیاده سازی یک تابع مبادله است. بنابراین در اینجا ما باید یک تابع اصلی است که x و y خودسرانه به مقداردهی اولیه 1 و 2 بود. ما می توانیم GetInt استفاده کنید، اما ما فقط نیاز به یک ورزش ساده است. پس از آن سخت است کد 1 و 2. در خطوط 21 و 22، ظاهرا از چاپ X و Y، یکی در هر خط. سپس، در خط 23، من ادعا می کنند من مبادله این ارزش ها، نقطه، نقطه، نقطه. من ظاهرا فراخوانی یک تابع در خط 24 به نام مبادله که دو آرگومان می باشد. کاملا حلال برای توابع را به دو آرگومان است. ما دیده ایم printf آن را انجام دهد در حال حاضر. بنابراین مبادله ظاهرا طول می کشد X و Y است. و به عنوان نام آن نشان می دهد، من امیدوارم که آن را برای رفتن به مبادله این دو مقدار است. تا بعد من ادعا می کنند در خط 25، تعویض. و X و Y از من چاپ با این فرض که آنها رو در واقع جابجا شده است. اما اگر من در واقع این برنامه اجرا شود - به من اجازه باز کردن یک پنجره ترمینال. اجازه دهید buggy3 را به من. همانطور که از نام آن پیداست، این است که قصد ندارم به خوبی برای پایان دادن به. چون زمانی که من ضربه را وارد کنید، توجه کنید که X 1 است. Y 2 است. و در عین حال در پایان این برنامه، آنها هنوز هم، در حقیقت، همان است. بر اساس تظاهرات فقط در حال حاضر با کن، آنچه در واقع در؟ خوب، اجازه دهید شیرجه رفتن به این تابع swap. این فوق العاده کوتاه است. این فقط چند خط کد در طولانی مدت. اما آنچه مشکل اساسی بر اساس داستان ساده گفت: تا اینجا با کن؟ مبادله چرا شکسته؟ [نامفهوم] دقیقا. بنابراین ما در حال ذخیره یک کپی، خود متغیر نیست. به عبارت دیگر، مبادله ظاهرا دو آرگومان از نوع int طول می کشد. و آن را خودسرانه A و B نامیده می شود. و اینجا، من در X و Y که به ترتیب 1 و 2 منتقل می شود. اما من به معنای واقعی کلمه در x عبور می کند. من به معنای واقعی کلمه در Y عبور. من از گذراندن یک کپی از x و یک کپی از Y است. این تقریبا مانند به عنوان اینکه شما به تعویض ارزش هایی که کپی و جا به جا شما می خواهید آن را به واقع دستکاری. بنابراین در صورتی که این مورد، هنگامی که من، برنامه، شروع به اجرای خط 35، سپس 36 - زمانی که من به خط 37، در این نقطه در داستان، ارزش چیست؟ در این نقطه در داستان، خط 37، مقدار یک را در این نقطه چیست؟ پس از آن فقط باید 1 باشد. درست است؟ از آنجا که X به عنوان آرگومان اول به تصویب رسید. و این تابع فقط خودسرانه خواستار اولین آرگومان آن، است. به طور مشابه Y، آرگومان دوم می باشد. و آن را فقط خودسرانه خواستار ب استدلال دوم است. در حال حاضر این دوگانگی است که در واقع نسبتا به سادگی توضیح داده شده است. در مورد آن فکر کنید. هیچ یک از ما را ملاقات کرده اید کسی که نوشت printf است. مطمئنا، او هیچ ایده چه چیزی متغیر ما به 30 سال بعد می رویم به آن می شود. بنابراین تمایز بین آنچه که با شما تماس متغیرها در توابع شما نوشتن و چه با شما تماس متغیر در توابع شما تماس تلفنی یا با استفاده از. بنابراین به عبارت دیگر، من که متغیرهای من به عنوان x و y نوشته شده است. اما اگر شخص دیگری تابع swap نوشته شده بود، او قطعا نمی دانم چه متغیرهای من در حال رفتن به آن می شود. به طوری که این است که چرا شما این دوگانگی از نام تحقق بخشند. با مشخصات فنی، من می توانم این کار را بر حسب تصادف انجام دهید. اما آنها هنوز هم به عنوان کپی می شود منتقل می شود. این فقط یک تصادف محض را زیبا و اگر آن شخص که نوشته می شود مبادله از همان نام استفاده کرده اند. بسیار خوب. بنابراین در این نقطه در داستان، خط 37، 1 است. ب 2 است. و اکنون من ادامه به آنها را مبادله. خوب اول از همه، اجازه دهید من در واقع این کار را بسیار ساده تر است. من نمی دانم که این سه خط کد انجام می دهند. اجازه دهید من فقط این کار را انجام. ب می شود. ب می شود. انجام شد. چرا این شکسته، منطقی است؟ این نوع از چیزی که بصری است، درست است؟ بنابراین می شود ب. و B می شود. اما مشکل این است که به زودی به عنوان خط 37 اجرا، چه ارزش A و B؟ همان، 1. دلیل این که شما clobbered، پس به صحبت می کنند، شما تغییر B برابر است. پس یک بار خط 37 اجرا می شود، فوق العاده است. شما در حال حاضر دو نسخه از شماره 1 داخل این تابع است. بنابراین پس از آن هنگامی که شما در خط 38 می گویند، می شود B، خوب، شما از نوع پیچ است. از آنجا که شما فقط اختصاص 1 از 1. شما به نوعی ارزش شما در مورد مراقبت از دست داده است. بنابراین در نسخه اصلی از این، متوجه آنچه که من انجام داد. من به جای یک خط سوم از کد که شبیه این. من یک متغیر موقت - TMP است که نام بسیار معمول است برای یک متغیر موقت است. بین الملل را به دلیل آن است برای مطابقت با آنچه که من می خواهم برای ایجاد یک کپی از. من ذخیره یک کپی داخل TMP است. پس یک بار خط 37 را اعدام کرده است. ارزش است - سلامت عقل را سریع چک کنید - 1. ارزش ب 2 است. و ارزش TMP است 1. بنابراین در حال حاضر من اجرای خط 38. پس یک بار خط 38 اجرا، طول می کشد در ارزش ب. و B 2 بود. بنابراین در حال حاضر 2. بنابراین در این نقطه در داستان، 2، B 2، و TMP 1 است. بنابراین در حال حاضر منطقی است، ما می تواند ارزش فقط TMP با صدای تلپ به ب. و ما در حال انجام شده است. بنابراین، ما این مشکل را حل شده است. متاسفانه، زمانی که من برای اجرای این برنامه در این فرم، آن را نشانی از واقع نه مبادله هر مقدار. اما برای روشن شود، چرا؟ من مشکل منطقی از یک لحظه قبل ثابت شده است. اما باز هم، اگر من برای اجرای این برنامه، X و Y بدون تغییر باقی می ماند در پایان اجرای این برنامه است. [نامفهوم] DAVID J. مالان: پس ما هر چیزی برنگشت. به طوری که درست است. اما به نظر می رسد از یک بیت از یک مشکل وجود دارد در اینجا به دلیل تا کنون، تنها چیزی که ما قادر به بازگشت بوده ام یک چیز است. و این محدودیت C. شما واقعا می تواند در بازگشت به یک مقدار است. که در این صورت، من نوع گیر اینجا زیرا من می توانم مقدار جدید X یا بازگشت من می توانم بازگشت مقدار جدید از Y است. اما من می خواهم هر دو بازگشت. پس از بازگشت، راه حل ساده نیست. اما مشکل اساسی این است که چرا؟ چه ما در واقع جابجا شده است؟ A و B است. اما A و B نسخه های X و Y، که بدین معناست که ما فقط (مشکل اینجا بود) همه این - ما فقط سه دقیقه را صرف صحبت کردن در مورد مبادله عملکرد و هر سه نفر از این متغیر ها. و این فوق العاده است، کاملا درست است در انزوا. اما و حوزه B را تنها در این خطوط که در اینجا می باشد. بنابراین درست مانند یک حلقه for، اگر یک عدد صحیح به شما اعلام من در داخل برای حلقه - به همین ترتیب، در داخل اگر شما اعلام A و B یک تابع است که شما نوشته شده است، آنها فقط در داخل آن تابع معتبر می باشد. که یعنی به محض مبادله انجام شده است اجرا و ما از خط 24 تا خط 25، X و Y تغییر نکرده است در همه. شما فقط تلف زیادی از زمان مبادله کپی از متغیر. پس از آن معلوم است که راه حل این است که در واقع غیر آشکار است. این کاملا کافی نیست به بازگشت به ارزش ها به خاطر ما می توانیم فقط یک مقدار را بازگشت. و من واقعا نمی خواهم به مبادله هر دو X و Y در همان زمان. بنابراین ما قصد داریم برای آمدن به این. اما در حال حاضر، درک کنند که این مسئله اساسا از این واقعیت ناشی که A و B کپی. و آنها را در دامنه خود را. خب، بیایید سعی کنید برای حل این مشکل در برخی از راه. اجازه بدهید در واقع حرکت به عقب و باز کردن، اجازه دهید بگویم، چهارمین نوع از این، buggy4. و آنچه که در این مورد؟ این یک مشکل مشابه ولی ساده تر نگاه کنید قبل از اینکه ما را یک چاقو در حل آن. این برنامه به نام افزایش است. و ظاهرا مقدار دهی اولیه یک عدد صحیح X در خط 18 به 1 است. من پس از آن ادعا می کنند X 1 است. من پس از آن ادعا می کنند افزایش، نقطه، نقطه، نقطه. من پس از آن افزایش تماس بگیرید. اما پس از آن در خطوط 22 و 23، من ادعا می کنند که از آن شده است افزایش مییابد. من ادعا X است در حال حاضر هر آنچه در آن است، 2 احتمالا. اما این برنامه حشره دار است. چه مشکل؟ آره؟ [نامفهوم] DAVID J. مالان: دقیقا. بنابراین X شده است به وضوح در خط 18 اعلام شده است. این است که در داخل آکولاد اصلی. بنابراین پاسخ ساده این است که، خوب، X وجود دارد در اینجا. این کار در خط 32 وجود ندارد. این برنامه در واقع حتی نمی خواهد کامپایل. کامپایلر، زمانی که من سعی می کنم به کامپایل این کد است، رفتن به من داد در مورد برخی از شناسه های اعلام نشده و یا چیزی به آن اثر است. در واقع، اجازه دهید به را امتحان کنید. این را buggy4. آن است که وجود دارد. استفاده از X شناسه اعلام نشده در خط 32. و در واقع، اجازه دهید صریح تر امروز در اینجا به طوری که این مفید است ساعات اداری و در منزل. توجه داشته باشید که آن را کمی cryptically نوشته شده است. اما این واقعیت است که صدای جرنگ جرنگ است فریاد می زدند به ما، گفت: buggy4.c: 32:5 است، در واقع مفید است. این بدان معنی است که خطا در خط 32 در موقعیت شخصیت 5. بنابراین یک، دو، سه، چهار، پنج. که، در واقع، که در آن مشکل است. و همچنین به خاطر داشته باشید در ساعات اداری و در منزل، من خوش شانس در اینجا. من یک اشتباه است. رفتن به نسبتا آسان به تعمیر. اما اگر شما یک صفحه کامل از پیام های خطا قریب به اتفاق، باز هم، متوجه باشید که یکی از پایین ترین تنها ممکن است علامتی آنهایی که بالاترین. بنابراین همیشه تعقیب اشکالات خود را از بالا به پایین است. به همین دلیل ممکن است وجود داشته باشد اثر دیزی زنجیره ای است که به شما نشان می دهد مشکلات راه را بیش از شما در واقع. پس چگونه می تواند این را حل کنیم اگر هدف من این است که افزایش X؟ که چیست؟ باشه. بنابراین ما می توانیم X جهانی است. بیایید میانبر که من در مورد قبل از آن هشدار داد. اما هک، ما فقط نیاز به یک محکم کاری سریع است. بنابراین اجازه دهید فقط می گویند نوع int X اینجا. این باعث می شود X جهانی است. بنابراین در حال حاضر اصلی به آن دسترسی دارد. و افزایش دسترسی به آن است. و بنابراین، اجازه دهید من به جلو بروید و تدوین این در حال حاضر. را buggy4 را وارد کنید. به نظر می رسد به کامپایل در حال حاضر است. بیایید اجرا buggy4، و به نظر می رسد در واقع کار است. در حال حاضر این یکی از این چیزهایی است - که من می گویم، نه من، که من فقط در اینجا انجام می شود. از آنجا که به طور کلی، برنامه های ما در حال رفتن به بسیار جالب تر و خیلی طولانی تر از این است. و اگر راه حل خود را به مشکلات زندگی فقط آه، قرار دادن همه متغیرها در بالای فایل شما، بسیار سریع انجام برنامه های دریافت horrifically مشکل را کنترل کند. سخت تر می شود فکر می کنم تا نام متغیر جدید. این می شود سخت تر به درک آنچه متغیر انجام شده است. و بنابراین، به طور کلی، این یک راه حل خوب نیست. پس این کار را بهتر کنیم. ما نمی خواهیم که به استفاده از یک متغیر جهانی است. من نمی خواهم به افزایش X است. بنابراین من به وضوح می تواند - در پایان روز، این نوع از یک داستان احمقانه است، چون ما فقط این کار را انجام. اما اگر من که در مورد اپراتور نمی دانم، یا من به مجاز نیست در اصلی خود آن را تغییر دهید، به چه روش دیگری می تواند کن را اجرا کنم در اینجا، این زمان به مکعب اما به افزایش نیست؟ چگونه می توانم این چیز را عوض کنم؟ آره. [نامفهوم] DAVID J. مالان: خوب، خوب است. پس چرا در X منتقل می کند؟ و سپس به جای بازگشت، چرا من فقط بازگشت X + 1؟ در حال حاضر، یک زن و شوهر بیشتر چیزهایی که برای تغییر در اینجا. من در مسیر درست هستم. چه چیز دیگری می توانم نیاز به نیشگون گرفتن و کشیدن؟ شخص دیگری. آره؟ [نامفهوم] DAVID J. مالان: من نیاز به تغییر نوع بازگشت از افزایش دلیل آن را از درجه اعتبار ساقط نیست. خالی به معنای چیزی در حال بازگردانده شده است. اما به وضوح، در حال حاضر در آن است. بنابراین این نیاز به تغییر INT سازگار با هر من در واقع بازگشت. در حال حاضر چیز دیگری است که هنوز هم حشره دار اینجا کلیک کنید. آره؟ [نامفهوم] DAVID J. مالان: بنابراین من نیاز به افزایش X؟ [نامفهوم] DAVID J. مالان: آه، بنابراین من نیاز به تصویب X. بنابراین من نیاز به انجام این کار در اینجا. بنابراین نمونه، من مجبور به تغییر این تا اینجا. پس این برای تبدیل شدن به یک int است. این برای تبدیل شدن به - HMM. من در واقع یک اشکال اینجا کلیک کنید. اجازه بدهید رفع این مشکل یکی از اولین. چه باید از این واقع می شود؟ پس از آن باید به یک چیزی از نوع int است. این می تواند X. اما صادقانه بگویم، اگر شما شروع به دعوت از همه از شما متغیر X، آن را به رفتن به کمتر و کمتر مشخص است که است که. بنابراین اجازه بدهید فقط خودسرانه انتخاب یک قرارداد نامگذاری های مختلف برای من توابع کمکی، توابع من نوشتن است. ما می خواهیم آن را به یک تماس بگیرید. یا ما می تواند از آن تماس بگیرید - اجازه دهید آن را even_number حتی بیشتر آشکار می شود. تا بعد من مجبور به بازگشت هر چه تعداد به علاوه 1. و در حال حاضر من مجبور به تغییر یک چیز دیگر را در اینجا و یک چیز دیگری در اینجا. چه می توانم در خط 21 اولین تغییر؟ من باید آن را اختصاص به X است. بنابراین من فقط نمی تواند با X افزایش است. من نیاز به یاد داشته باشید پاسخ با تغییر مقدار x را در در سمت چپ. و حتی اگر X است که در حال حاضر در سمت چپ و راست، که کاملا خوب است زیرا در سمت راست می شود اعدام را به سمت چپ می شود plopped چیز دست، X در این مورد. و پس از آن در نهایت، این مشکل آسان است در حال حاضر. این فقط باید آنچه پایین مطابقت داشته باشد. شماره INT. بسیار خوب. بنابراین کل دسته از تغییرات یک تابع واقعا احمقانه است. اما نماینده از چیزهایی است که ما به طور فزاینده ای می خواهید انجام دهید. بنابراین buggy4 کند. من پیچ تا جایی. اوه خدای من. پنج اشتباه، مانند، برنامه شش خط است. بنابراین چه در خط 18، شخصیت 5؟ بسیار خوب. بنابراین من باید به اعلام این نوع int است. بسیار خوب. پس ببینید، یک دسته کامل از خطاهای دیگر به شما اجازه می دهد تا. آه خدای من. 19، 18، 21. اما باز هم، اجازه دهید فقط پاک کردن صفحه نمایش - L کنترل - و دوباره اجرا صدای جرنگ جرنگ. بنابراین پنج مشکلات است در واقع درست است که یک است. بنابراین در حال حاضر اجرا buggy4 را وارد کنید. صدای سوت حاکی از حیرت یا تحسین. X شده است به درستی افزایش مییابد. بسیار خوب. هر گونه سوال در مورد چگونه به افزایش تعداد؟ آره؟ SPEAKER 2: چرا از آن است که شما فقط می توانید تغییر دهید X به تعداد متغیر نام و نام آن را می دانم منظور شما چیست؟ DAVID J. مالان: سوال خوب است. چگونه است که من فقط می تواند تغییر X به تعداد و این برنامه می دانید به سرعت؟ تا دوباره، از آن فکر می کنم که این انتزاع است. بنابراین اگر من اصلی و کن افزایشی است، رک و پوست کنده، من اهمیتی نمی چه کن اپل می نامد خود را. من اهمیتی نمی دهند چه او خواستار چیزی است که با اجرای خود را انجام دهید این قابلیت است. پس این جزئیات پیاده سازی است که من، اصلی، انجام شده است باید در مورد مراقبت. و به این ترتیب به سادگی آن را به طور مداوم در حال تغییر در داخل تابع، شماره در اینجا و شماره در اینجا، همه از آن طول می کشد تا زمانی که من کامپایل مجدد شده است. مرتب کردن بر اساس مانند اگر شما فکر می کنم - بسیاری از ما، کسانی که از شما با راننده مجوز ایم که رانده می شود، و یا اگر شما حتی در یک ماشین هدایت می شود - بسیاری از ما هیچ تصوری از اینکه چگونه یک ماشین با این نسخهها کار در قسمت پایین هود. و به معنای واقعی کلمه، اگر شما برای باز کردن هود، بسیاری از ما - از جمله خود من - قرار نیست واقعا می دانید به آنچه که ما در حال نگاه کردن به. نوع مانند شما ممکن است با چیزهای مثل این حق را احساس کن. اما ما واقعا نمی مراقبت از خودرو چگونه کار می کند. ما لازم نیست که به مراقبت از آنچه را که همه از میله و پیستون ها و کابل های داخل ماشین در واقع انجام می دهند. بنابراین چیزی شبیه به آنچه که با شما تماس پیستون مهم نیست در اینجا در این مورد است. همین ایده است. آره؟ [نامفهوم] DAVID J. مالان: اگر استفاده می کند بیش از لحظه ای متغیر XA قبل وجود دارد، شما، برنامه نویس، می باید در همه جا به آنها را تغییر دهید. یا شما به معنای واقعی کلمه می تواند فایل، منو، انجام دهد و سپس پیدا کردن / جایگزین، چیزی شبیه به آن. اما شما باید برای ایجاد این تغییرات خود را در حال رفتن به. شما باید سازگار باشد. [نامفهوم] DAVID J. مالان: منظور خاص مثل اینجا؟ اگر این INT تعداد دیگری؟ آره. بنابراین منظور مهم است هنگامی که شما در حال فراخوانی تابع است. بنابراین اگر من خواستار افزایش در اینجا با چیزی کاما از هم، نقشه برداری مستقیم وجود دارد. متغیر اول، هر آنچه نامیده می شود، ساخته شده است یک کپی از اولین بحث در اینجا. با عرض پوزش، این باید یک پرانتز. خط های آرگومان دوم را با یک دوم است. بنابراین سفارش، بله، مهم نیست. بسیار خوب. با عرض پوزش من در زمان راه طولانی برای رسیدن به آنجا است. سوال دیگر؟ بسیار خوب. بنابراین اگر ما می توانیم یک تصویر از آنچه در واقع در رفتن رنگ در اینجا در قسمت پایین هود، پس به صحبت می کنند. بنابراین این یک مستطیل است که ممکن است به حافظه کامپیوتر خود را نمایندگی می باشد. بنابراین حتی اگر شما هیچ ایده چگونه حافظه کار می کند و یا چگونه با این نسخهها کار RAM، حداقل فرض کنیم که شما باید خوشه از آن این روزها. تو مگابایت از آن است. شما کردم گیگابایت از آن. و ما از صفر هفته می دانیم که یک بایت است فقط آنچه را؟ 8 بیت است. راست است، بنابراین 8 صفر و یک هستند. بنابراین اگر کامپیوتر شما دارای یک فرفره از RAM، دو گیگابایت RAM این روزها، شما باید میلیارد یا 2 میلیارد بایت حافظه، و یا حدود 8 میلیارد یا 16 میلیارد دلار بیت، در داخل کامپیوتر شما. در حال حاضر بر خلاف مثال کوچک ویلی پتی، آن را به ذرات مغناطیسی به طور معمول دیگر. به طور فزاینده ای در لپ تاپ ها حداقل، آن را به درایوهای حالت جامد SSD ها، که فقط هیچ حرکت بخش است. تمام الکترونیکی است. این همه برق بر اساس. بنابراین، فکر می کنم هر چند، این مستطیل را به عنوان تنها به نمایندگی از یک یا دو گیگابایت از حافظه است که شما را. پس از آن یک تکه از حافظه است. در حال حاضر دنیای علم کامپیوتر، به نوعی از تکه تقسیم کردن حافظه برای انجام کارهای مختلف. بنابراین به عنوان مثال، در صورتی که این RAM کامپیوتر خود را - به عنوان پیشنهاد مستطیل وجود دارد - معلوم است که کنوانسیون، در بالای RAM خود را، به طوری به صحبت می کنند، به طور کلی آنچه که به نام یک بخش متن. اینها صفر و آنهایی که شما را کامپایل کرده اند. بنابراین هنگامی که ما در چه a.out است که در قسمت پایین هود نگاه، همه صفر و - هنگامی که یک برنامه را اجرا می کنید، این صفر و یک هستند از دیسک خود را لود می شود درایو را به چیزی به نام RAM. و در RAM، آنها در بالا قرار داده شده است. در حال حاضر در همین حال، شما باید چیزهای دیگر. مقداردهی اولیه داده ها، آماده سازی داده ها. این دو swaths از حافظه اشاره به متغیرهای جهانی، که شما غالبا استفاده کنید. اما گاهی اوقات اگر شما انجام دهید، آنها تا پایان وجود دارد تا به عنوان خوب. سپس برخی از چیزهای دیگر وجود دارد. متغیرهای محیطی، که ما زمان زیادی را صرف نیست. اما پس از آن دو چیز مهم است که خواهد آمد در سراسر این ترم پشته و پشته. بنابراین بسیاری از حافظه کامپیوتر شما محفوظ است که در حال اجرا یک برنامه برای چیزی به نام پشته و چیزی به نام پشته است. و ما قصد داریم در مورد پشته صحبت امروز، اما ما صحبت در مورد پشته. پشته به معنای به التماس کردن به بصری مانند سالن غذاخوری سینی های غذا در ماتر خانه، و یا هر کجا که شما اتفاق می افتد، که در آن سالن غذاخوری کارکنان آنها تمیز در هر روز است. آنها پشته آنها از کف در بالا. و به همین ترتیب در حافظه، این ایده از قرار دادن چیزی در وجود دارد پشته، قرار دادن چیزی در یک پشته قرار دادن چیزی بر روی پشته. و چه چیزی ما با این؟ خب، بیایید زوم در نیمه پایین تر از این تصویر، کامپیوتر شما RAM، برای پیشنهاد به شرح زیر است. به نظر می رسد که زمانی که شما یک برنامه مثل a.out یا خوش آمدید، هر آنچه این برنامه این است که شما نوشته ام، دوباره، این صفر و آنهایی که از هارد دیسک شما پر شده است - که نگهداری طولانی مدت باقی می ماند، حتی زمانی که شما دوشاخه - بارگذاری شده به RAM. RAM سریع تر از دیسک های سخت است. کوچکتر از دیسک های سخت می باشد. اما این که در آن برنامه های زنده در حالی که شما آنها را در حال اجرا می باشد. بنابراین شما دو برابر یک برنامه بر روی مک یا PC کلیک کنید - آن را از لود شده هارد دیسک به RAM. به محض این که آن را به RAM بارگذاری می شود، صفر و آنهایی که در بالا راه بروید، به اصطلاح متن بخش است. اما پس از آن به محض این که برنامه شما در واقع شروع در حال اجرا، اصلی تابع نامیده می شود. و اصلی، به عنوان دیده ایم، اغلب دارای متغیرهای محلی است. و آن را به نوع داده int و رشته ها و کاراکتر ها و مانند آن. بنابراین اگر برنامه شما این است که شما نوشته اند و یا برنامه ای است که شما باید دو کلیک برخی از متغیرهای داخل اصلی استفاده می شود، آنها در نهایت در پایین پشته خود را از حافظه، پس به صحبت می کنند. در حال حاضر بیشتر ملموس، چه این در واقع چیست؟ این فقط بدان معنی است که اگر ما قرار بود به تعداد چیزهایی که - اگر ما قرار بود به تعداد بایت RAM در کامپیوتر شما، توجه کنید که این ممکن است عدد صفر بایت است. این ممکن است تعداد بایت یکی، دو، سه، چهار، پنج، شش، همه راه اندازی را دوست - 2 میلیارد خواهد بود تمام راه را در بالا وجود دارد. بنابراین به عبارت دیگر، هنگامی که ما در مورد RAM یا حافظه از کلمه در ادامه متن صحبت می کنید، آن را فقط بدان معنی است که کسی تصمیم گرفته است آنچه که به شماره هر یک از این تکه از حافظه است. بنابراین، هنگامی که شما نیاز به 32 بیت برای بین المللی و یا شما نیاز به 8 بیت برای یک کاراکتر، که در آن آیا آنها در نهایت در حافظه؟ خوب مفهومی، آنها فقط تا در پایین این پایان چیزی به نام پشته. اما آنچه جالب است در حال حاضر این است که وقتی که یک تابع اصلی می نامد. فرض کنید یک تابع به نام صنایع غذایی، فقط یک نام دلخواه. چه اتفاقی می افتد اصلی در پایین این پشته از حافظه است. FOO در حال حاضر در بالای اصلی در حافظه قرار داده می شود. بنابراین هر متغیرهای محلی است که صنایع غذایی تا پایان مرتب کردن بر اساس مفهومی بالا کسانی که در اصلی. اگر صنایع غذایی خواستار یک تابع دیگر به نام نوار، آن دسته از متغیرهای اینجا. اگر نوار خواستار چیز دیگری، در اینجا، اینجا، اینجا. بنابراین چه چیزی جالب در مورد یک برنامه در حال اجرا است که به عنوان با شما تماس توابع، و به عنوان آن دسته از توابع تماس توابع، و به عنوان آن دسته از توابع تماس توابع، شما برای ساختن این پشته از توابع در حافظه است. تنها یک بار، بازده عملکرد شما شروع به گرفتن که حافظه. بنابراین یکی از ساده ترین راه هایی برای اجرای خارج از حافظه در یک برنامه رایانه ای است که به نوشتن توابع که بازگشت هرگز. بنابراین به عنوان مثال، اجازه دهید نشان می دهد به همان اندازه با برنامه عمدا حشره دار. اجازه بدهید من بروم جلو و # شامل ، اعضای هیات تحریریه اصلی (خالی). و من قصد دارم برای انجام این کار در حالی که (2 1)، که احتمالا نمی خواهد همیشه تغییر در ما. و اجازه دهید من به جلو بروید در حال حاضر و انجام printf. در واقع، که به کمتر بصری جالب است. اجازه دهید این کار را انجام. برای اعضای هیات (من = 0؛ من> 0). بیایید این اشتباه، من + +. و اجازه دهید printf نیست. بیایید تمرین آنچه که من موعظه. اجازه دهید که یک روش در اینجا. کر خالی باشد، و به ما می گویند اعضای هیات من. و سپس من قصد دارم برای گفتن، printf - اوه، بیایید این جالب تر است. اجازه دهید در واقع هر چیزی چاپ نمی کند در تمام. اجازه دهید فقط این کار را انجام. کر (من). بسیار خوب. بنابراین این حشره دار است چرا که چرا؟ من این را به عنوان من به دلیل این برنامه نمی کند در واقع به انجام هر کاری از علاقه. اما این هدف نیست. هدف این است که برای نوشتن یک برنامه که تابع اصلی چه، ظاهرا؟ تماس خود را. و در واقع، ما حلقه لازم نیست. بیایید حتی این خیلی ساده نه به از دست دادن دید واقعا اشکال اساسی است. تماس اصلی گروه کر به خواندن برخی از کر. سپس من چیزی احمقانه، و من تا به حال کر کر تماس بگیرید به خاطر اینکه من را به عهده گرفت شخص دیگری که قرار بود برای پیاده سازی آن شاید. و در حال حاضر این است که قصد ندارم به کامپایل رتبهدهی نشده است. من نیاز به انجام چه؟ من نیاز به نمونه، به یاد داشته باشید. بنابراین من نیاز به کر خالی (من بین المللی). بنابراین در حال حاضر، اگر من به پایین در اینجا - در واقع، اجازه دهید با استفاده از پنجره های بزرگتر. اجازه دهید به جلو و کر. اجازه دهید به جلو و کر. استفاده از اعلام ناشناس من در. اوه، که احمقانه بود. ما استدلال نیاز ندارد. اجازه دهید فقط این کار را انجام. آرزوی ما این راه آغاز شده بود. این می شده اند یک برنامه بسیار ساده تر به نوشتن. وجود دارد. در حال حاضر به بیش از به پنجره ترمینال، صدای جرنگ جرنگ دوباره اجرا کنیم. و در اینجا ما بروید. بود که واقعا سریع است. آنچه واقعا اتفاق افتاده، هر چند است؟ خوب، در حال حاضر من خط چاپ، به طوری که ما می توانید ببینید. بنابراین اجازه دهید به من می گویند printf، اجازه دهید بگویم، من در اینجا هستم. بسیار خوب، به هیچ متغیر، خواهیم آن را مانند که ترک کنید. اجازه بدهید دوباره اجرا کنند. اجازه بدهید دوباره اجرا کر. و آمد. ادامه دهم. تا به کنار، چرا آن را به سقوط هنوز رتبهدهی نشده است؟ تقسیم بندی گسل اتفاق افتاد سریع فوق العاده قبل از. [نامفهوم] DAVID J. مالان: دقیقا. پس از آن طول می کشد زمان به چاپ. این فقط طول می کشد کار بیشتر بر روی بخشی از کامپیوتر است. و از آن است که وجود دارد. گسل تقسیم بندی. بنابراین فقط برنامه های سریع اجرا اطلاع می دهد. اگر شما هر چیزی، به سرعت فوق العاده چاپ نیست. اما ما هنوز هم این خطا تقسیم بندی به دلیل چه اتفاقی می افتد؟ خوب، اگر شما فکر می کنم در مورد چگونه حافظه کامپیوتر شما گذاشته است، این اتفاق می افتد به اصلی. اما در اینجا - اجازه دهید فقط این کر، تماس بگیرید و اجازه دهید این کر است. و در حال حاضر اگر من زیبایی شناسی من حق این است که فقط رفتن به می گویند کر. گروه کر، گروه کر، گروه کر، گروه کر، گروه کر، گروه کر، nauseum آگهی. و در نهایت، چه اتفاقی خواهد افتاد؟ اگر تصویر بزرگ به معنای واقعی کلمه این است که چه چیزی اتفاق می افتد مفهومی است؟ سرریز پشته پشته. یا بدتر از آن، شما فقط به تاخت و تاز کردن همه چیز، از جمله بخش متن، که صفر و آنهایی که نشان دهنده برنامه شما. به طور خلاصه، این است که فقط فوق العاده، فوق العاده بد. درست است؟ برنامه شما است از کنترل خارج spiraled. شما با استفاده از حافظه راه بیش از همه شما به خاطر احمق در نظر گرفته شده است اشتباه در این مورد است. یا در این مورد، یک تابع بسیار عمدا انجام شده خود را خواستار است. در حال حاضر این همه بد نیست. توابع که خود را در واقع دارای قدرت های بزرگ هنگامی که شما استفاده از آن را به درستی. من آن را به درستی استفاده نمی شود در اینجا. بنابراین این همه بد نیست. اما واقعیت این است که من در واقع هرگز متوقف خواستار خودم اساسی است در اینجا ضعف این برنامه است. تا جایی که ما با تمام این رفتن؟ خب، آنچه واقعا اتفاق می افتد؟ وقتی که من اسمش تابع افزایش، مثل ما در آن نمونه ها انجام شد، من یک ارزش مانند 1 که من عبور شوید. من در یک کپی از شماره یک منتقل می شود. بنابراین موارد زیر اتفاق می افتد. پس اجازه دهید به عنوان مثال افزایش است. و این مرد حق در اینجا. بنابراین در اینجا آنچه در واقع اتفاق می افتد. هنگامی که من به نام افزایش است، و من در X منتقل می کند، pictorially چه خبر در اینجا این است - اگر من ارزش، از مجموع 1 ذخیره می شود، و من در واقع تماس افزایش، که در حال حاضر به نام کر - آره، من پرتاب کردن اینجا کلیک کنید. پس اجازه دهید این افزایش است. و ما نمی دانیم که این تابع آینده خواهد بود. بنابراین آنچه در واقع اتفاق می افتد این است در اینجا به جایی در اصلی، من یک تکه از حافظه است که ذخیره سازی شماره 1. وقتی که من اسمش افزایش، من با استفاده از یک تکه از حافظه است، اما در حال حاضر من کپی از 1. هنگامی که مقدار افزایش، این 2 می شود - به طرز وحشیانه ای در نوشته شده است صفحه اینجا کلیک کنید. اما پس از آن، چه اتفاقی می افتد و به زودی به عنوان بازده افزایش؟ این حافظه فقط میشود با بازگشت به سیستم عامل تحویل داده شده است، که بدین معناست که تمام به شما انجام داده ام هیچ چیز مفید است. کسی که در اصلی موجود است که هنوز هم در واقع وجود دارد. تا جایی که ما با این رفتن؟ خوب، آن را معلوم می کند که در حافظه شما باید بازگشت به عقب به ترتیب از بایت است که شما می توانید چیزهای شوید. قرار داده است و معلوم است که ما قبلا هم دیده می شود چیزی است که شامل قرار دادن همه چیز پشت به پشت به پشت به پشت. یک رشته، بر اساس در هفته اول و در حال حاضر دو هفته چیست؟ پس از آن تنها یک مجموعه از کاراکتر ها است. پس از آن معلوم است، همانطور که شما می توانید اعداد را در حافظه قرار داده است، به طور مشابه شما می توانید قرار دادن کاراکتر در حافظه. و زمانی که ما شروع به قرار دادن کاراکتر در حافظه بازگشت به پشت به پشت پشت، آن را معلوم می کند که با استفاده از ساده ترین چیزهایی مثل حلقه و یا یک حلقه در حالی که، ما می توانیم تکرار - از چپ به راست بر روی کاراکتر در یک رشته - و شروع به ماساژ دادن آنها را به شخصیت های مختلف در دسترس نباشد. B. B می تواند تبدیل به C. به طوری که در نهایت، ما می توانیم یک را می تواند تبدیل به جمله انگلیسی است که در واقع باعث می شود احساس و تبدیل هر یک از آن نامه در یک زمان با راه رفتن را از طریق حافظه های کامپیوتری ما را از چپ به در واقع به رمز در آوردن. پس پنج دقیقه استراحت خود را در اینجا اجازه دهید، و زمانی که ما آمده ایم، ما خواهیم شروع این روند از تکاپوی اطلاعات است. بسیار خوب. پس قبل از اینکه ما در شیرجه رفتن به برخی از رمزنگاری و این چیزها را به نام آرایه، اجازه دهید به من مکث برای هر سوال چون من احساس می کنم مثل من واقعا به نوعی مبهم برخی از کسانی که موضوع است. بنابراین رفع در حال حاضر اگر ما می توانیم. بنابراین ما فقط در مورد مقادیر بازگشتی صحبت کردیم. ما در مورد استدلال صحبت کرد. و ما در مورد این مفهوم صحبت کنیم که دوباره در هفته به مشاهده حافظه به عنوان یک دسته از این انباشته می آیند، سینی، پس به صحبت می کنند. از پایین به بالا، به طوری که هر یک از سینی که در پشته قرار داده می شود نشان دهنده یک تابع است که در حال حاضر در حال نامیده می شود. هر گونه سؤال؟ پس چگونه در مورد - اجازه دهید من سعی کنید با پرسیدن یک سوال. من خراب است که، اما در حال حاضر it's - you've صورت پسر. بنابراین ما باید دوباره به آن. پس اجازه دهید یک سوال در اینجا از من بپرسید. بازگشت ساده به آنچه که آن را قبل از برخی از ما زودتر Q & A. و این واقعیت است که افزایش پرانتز باز، شماره هوشمند، بسته پرانتز. چه تعداد از نوع int باشد؟ [نامفهوم] DAVID J. مالان: استدلال. خوب، اما استدلال؟ [نامفهوم] DAVID J. مالان: با عرض پوزش، چیزی است که؟ SPEAKER 3: چیزی است که به شما منتقل شوید. DAVID J. مالان: بسیار خوب. بنابراین چیزی است که به شما منتقل شوید. و به طور کلی، آن را فقط ورودی است. اگر شما در حال نوشتن یک تابع و هدف آن تابع در زندگی است که برای انجام چیزی کمی متفاوت است در هر زمانی که شما از آن استفاده کنید، پس از آن تنها راه برای که اتفاق می افتد واقعا به نظر می رسد که آن را با ورودی ارائه به طوری که آن را می تواند چیزی متفاوت با آن ورودی در هر زمان. بنابراین شما نیاز به مشخص کردن دو چیز، زمانی که یک تابع ورودی است. شما نیاز به تعیین نام است که شما می خواهید را به که ورودی، صرفا برای راحتی خود را به طوری که شما می توانید به آن مراجعه کنید که در تابع خودتان را در حال نوشتن، که من در اینجا در خط 32. اما شما همچنین نیاز به تعیین نوع آن به دلیل C یک زبان برنامه نویسی که فقط نیاز به که اگر شما می خواهید یک متغیر، شما که به کامپیوتر نوع داده در آن است، در بخش های بزرگ به طوری که آن را می داند که چگونه بسیاری از بیت اختصاص برای آن متغیر است. از آنجا که این می تواند به شش ها - با عرض پوزش، آن را نمی خواهد شش. این می تواند 16. این می تواند تا 8. این می تواند 32، حتی 64. اما این کامپیوتر نیاز به دانستن است. در حال حاضر از نوع int در سمت چپ نشان دهنده چه، در مقابل؟ [نامفهوم] DAVID J. مالان: چه خبر است؟ [نامفهوم] مالان J. DAVID: نوع تابع، و به طور خاص تر، نوع خروجی آن است. راست. بنابراین در حالی که چیزی در پرانتز نشان دهنده ورودی آن، در صورت وجود، چیزی که به سمت چپ نشان دهنده خروجی آن است. و در این مورد، افزایش ظاهرا بین المللی را بر می گرداند. و بنابراین، بین المللی نوع برگشتی این تابع است. برای بازگشت به چه معنی است؟ به معنای واقعی کلمه، شما با استفاده از بازگشت کلمه کلیدی. و پس از آن اگر چه شما در حال بازگشت به سمت راست از کلید واژه ها عدد صحیح، پس از آن است که در واقع مطابق با آنچه که ما وعده داده اند. شما می توانید چیزی شبیه به این را انجام نمی - سلام جهان - از آنجا که این رشته است. بدیهی است که آن را به یک عدد صحیح نمی باشد. بنابراین به طور خلاصه، این بار واقعا بر ما، برنامه نویس، به صورت خاص به عنوان به آنچه که ما در حال بازگشت و پس از آن در واقع در مورد بازگشت آن است. و سپس به نی زمینه روشن - او دوباره. چهار چوب - شگفتی بزرگ در یک لحظه. بافت در اینجا در حال حاضر این است که حافظه کامپیوتر شما است، دوباره، گیگابایت، دو گیگابایت، هر چیز دیگری. شاید آن بیشتر است. شاید آن کمتر است. اما کامپیوتر آن را بمثابه داشتن بخش های مختلف می باشد. چیزی می رود پایین وجود دارد. چیز دیگری می رود وجود دارد. چیزهای مختلف می رود در وسط است. و امروز، ما فقط به گفتن این داستان آغاز خواهد شد. حالا دوباره به این زمان بیش از حد است. در حال حاضر، تنها قطعه از حافظه ما واقعا در مورد مراقبت در بخش متن چرا که فقط نشان دهنده صفر و که صدای جرنگ جرنگ خروجی. بنابراین، هنگامی که شما برای اجرای یک فرمان در صفحه کلید مانند a.out، و یا شما دو برابر با کلیک روی نماد یا آیکون در سیستم عامل مکینتاش یا ویندوز، برنامه های خود را از دیسک خود را لود می شود درایو را به RAM. و آن را plopped در بالا از RAM کامپیوتر خود را، پس به صحبت می کنند. در حال حاضر در عین حال، به عنوان برنامه خود را شروع می شود در حال اجرا و اصلی می شود در به نام برنامه شما نوشت یا برنامه مایکروسافت یا اپل نوشت، هر یک از آن متغیرهای محلی تا پایان پایین وجود دارد و در پایین از حافظه کامپیوتر شما است. اما اگر اصلی فراخوانی یک تابع دیگر که به خودی خود دارای متغیرها و یا استدلال، آنها در نهایت در بالای آن است. و در صورتی که تابع خواستار چیزی، آنها در نهایت در بالای آن، بالاتر از آن، در بالای آن است. تنها یک بار، یک تابع اجرا می کند پشته از سینی، به طوری که انجام شده است به صحبت می کنند، شروع به پایین تر و پایین تر است. و این همان چیزی است که پس از آن، به طور خلاصه، توضیح میدهد که چرا هنگامی که با شما تماس مکعب - و یا با شما تماس افزایش - شما در حال عبور در یک کپی از مقدار است. و این بدان معناست که pictorially است که شما به معنای واقعی کلمه نوشتن شماره 1 در بخش دیگری از حافظه، در حال تغییر است که 1 تا 2، در مورد افزایش - یا به یک 8، در مورد مکعب - و پس از آن پرتاب که حافظه دور و به زودی به عنوان افزایش یا مکعب گرداند. سوال. [نامفهوم] DAVID J. مالان: از کجا - متغیر های جهانی در چه چیزی ذخیره شده است در حال حاضر داده مقداردهی اولیه و یا آماده سازی داده ها نامیده می شود. تفاوت بودن، اگر شما یک متغیر جهانی، و شما آن را اختصاص بلافاصله یک مقدار برابر است با ثبت نام در سایت، آن را به پایان می رسد تا در بالا وجود دارد. و اگر شما فقط می گویند که نوع int X نقطه و ویرگول بدین شکل بدون ارزش، آن را به پایان می رسد تا کمی پایین تر در RAM به سادگی با کنوانسیون است. سوالات دیگر. بسیار خوب. بنابراین این تصویر باز خواهد گشت همانطور که ما قوی تر با آنچه ما می توانیم انجام دهیم با کامپیوتر است. اما در حال حاضر، اجازه دهید مقدمه کوتاهی به رمزنگاری، نوع خاصی از رمزنگاری است که همه مشکلات جهان را حل کند، اما حل بعضی از آنها. در این مورد در اینجا، ما باید چیزی به نام کلید مخفی رمزنگاری. و رمزنگاری کلید مخفی، به عنوان نام نشان می دهد، ناشی امنیت آن از یک راز است. بنابراین به عنوان مثال، اگر شما در مدرسه ابتدایی و شما در حال گذراندن کمی عشق نامه مخفی به پسر و یا دختر شما در حال خرد کردن - اگر شما می خواستم که از طریق مخاطبان، شما احتمالا نمی خواهد نوشت توجه داشته باشید به زبان انگلیسی و یا هر زبان مادری خود را، بلکه شما ممکن است آن را رمزبندی کنید. یا شما فقط ممکن است آنها را ارسال یک پیام به صورت متن این روز است. اما شما در واقع ممکن است آنها را منتقل می کند توجه داشته باشید در طول کلاس درس. و انجام این کار ایمن، در چنین راهی است که دوستان و معلم خود را نمی دانم آنچه که شما در حال نوشتن، شما ممکن است در آمده تا با نسبتا ساده الگوریتم - جوان اگر چه شما ممکن است - فقط به تقلا کلمات. بنابراین به جای نوشتن یک، شما ممکن است B. به جای B نوشتن، شما ممکن است نوشتن C. به جای C استفاده می کنید، شما ممکن است D، نوشتن و غیره. شما می توانید با ترجمه پیچیده تر از حروف به نامه های مختلف. اما گرفتن پسر یا دختر است که شما با فرستادن این ایمیل توجه داشته باشید نیاز به می دانم که چیزی. است که آنچه، بدیهی است؟ مانند، چه راز خود را است. مانند، این است که نگاشت بین ع و BS و CS و DS است؟ آن است که تنها اضافه کردن یک، پس به صحبت می کنند، به هر یک از حروف برای رفتن از A به B، B به C؟ آیا آن را پیچیده تر از آن است؟ بنابراین شما و له شدن شما نیاز به این اطلاعات محرمانه است. اما این نوع از گرفتن-22 در اینجا وجود دارد. اگر این اولین بار است که شما با فرستادن این ایمیل نامه عشق را از طریق کلاس، چگونه است که پسر یا دختر می خواهم به دانستن آنچه که حتی راز است؟ بنابراین رمزنگاری کلید مخفی می کند تمام مشکلات جهان را حل نمی کند. و در واقع رابطه وجود دارد که می کنیم دوباره به سمت پایان ترم. به همین ترتیب، هیچ یک از ما احتمالا تا کنون فرستاده - به طور مشابه، بسیاری از ما کسی است که کار می کند، به عنوان مثال نمی دانند، در Amazon.com. و با این حال، بسیاری از ما احتمالا چیزهای در Amazon.com خریداری شده است. و به ما آموخته اند، به فرض که این تجارت الکترونیک معاملات امن هستند. درست است؟ URL احتمالا می گوید: HTTPS. شاید احمقانه آیکون قفل کوچک در جایی وجود دارد. نوعی از رمزنگاری تامین امنیت اطلاعات کارت اعتباری شما وجود دارد بین شما و Amazon.com. و با این حال، اگر رمزنگاری شامل دانستن برخی از راز، و در عین حال من نیست می دانم هر کسی در آمازون، و من قطعا هر نوع مرتب نشده راز را با کسی در آمازون، چگونه کامپیوتر و یا مرورگر من انجام این کار؟ خب، معلوم است در انواع دیگر از رمزنگاری به طور کلی وجود دارد که حل این مشکل است. اما امروز، ما تمرکز بر روی یکی از ساده، که در آن شما می توانید به ترتیب در پیشبرد برخی از راز را می دانید، مانند به علاوه 1 یا چند نگاشت بین ع و BS. و فرایند رمزنگاری به طور کلی شامل این. شما باید برخی از متن ساده، در اینجا در سمت چپ نشان داده شده است. شما آن را اجرا کنید از طریق نوعی از الگوریتم یا روش برای رمزنگاری آن است. شاید که فقط می شود B، B C. شود و سپس شما را تا پایان با رمز متن. در همین حال، یک بار له خود را دریافت توجه داشته باشید راز، او به آن رمزگشایی آن را به طور کلی معکوس است که الگوریتم به طوری که برای به دست آوردن متن ساده را به عقب. در حال حاضر از این تجسم فیزیکی وجود دارد. به عنوان مثال، این حلقه کوچک مخفی رسیور است. و این یک حلقه به این معنا که دو صفحة در اینجا وجود دارد. در حاشیه در خارج از این چیز، حروف A تا Z وجود دارد، اگر چه آنها به منظور تصادفی هستیم. و در داخل، در واقع وجود دارد برخی از اعداد، به طوری که با این حلقه، شما به نوعی می تواند به نوبه خود در خارج، اما در داخل به منظور به خط اعداد با حروف. و در کلیپ شما در مورد برای دیدن هستیم - که بعضی از آنها ممکن است شما را دیده اند، 24/7 در سراسر فصل از یک فیلم به نام داستان کریسمس کریسمس. شما خواهید دید که Ralphie کوچک بود بسیار مشتاق به کشف کردن آنچه پدر و مادر کوچک پیام محرمانه آنی بود به او ابلاغ شده است، من فکر می کنم، در فرم پیام عددی در یک جعبه سریال. و شما را مجبور به جمع آوری تمام کارت های کوچک است که آمد در جعبه غلات. شما تا به حال به آنها ایمیل شوید. شما تا به حال به پشت حلقه رسیور مخفی، به طوری که شما در نهایت می تواند به شکل خارج نگاشت بین حروف و اعداد، یا حروف و حروف. بنابراین من به شما این کلیپ کوتاه از یک داستان کریسمس pset 2 تا ایجاد انگیزه و بحث ما، در یک لحظه، از آرایه ها. بنابراین در اینجا ما باید Ralphie. [پخش VIDEO] می شود آن را به هر کسی شناخته شده است که رالف پارکر بدینوسیله منصوب عضو از یتیم کوچولو آنی دایره راز است و برای همه تحت عنوان برتری ها و مزایای رخ می دهد به آنها نمیدهد. امضا، کم یتیم آنی. ، پیر Countersigned آندره! در جوهر! افتخارات و منافع، در حال حاضر در سن نه. در تاریخ آمده، اجازه دهید با آن را دریافت کنید. انجام تمام کارهایی که جاز در مورد قاچاقچیان و دزدان دریایی نیاز ندارد. گوش دادن فردا شب برای ماجراجویی نتیجه گیری از سیاه و سفید کشتی دزدان دریایی. حالا وقت آن است برای پیام مخفی آنی است را برای شما کاربران دایره راز. به یاد داشته باشید، بچه ها، فقط اعضای دایره راز آنی می تواند رمزگشایی پیام محرمانه آنی. به یاد داشته باشید، آنی این است که به بسته به شما. تنظیم پین خود را به B2. در اینجا این است که این پیام. 12، 11 - -I در اولین جلسه راز من هستم. -14، 11، 18، 16 - پیر امشب در صدای بزرگ بود. من می توانم بگویم که پیام امشب واقعا مهم بود. -3، 25. این ارسال از آنی خودش است. به یاد داشته باشید، به کسی نگو. -90 ثانیه بعد، من در اتاق تنها در خانه هستم که در آن یک پسر نه نشستن در حفظ حریم خصوصی و رمزگشایی. قلب، B. من رفتم به بعد. E. کلمه اول باشد. S. آمد آسان تر در حال حاضر. U. اوه، بیا، Ralphie. من به آن بروید. -I'll سمت راست پایین، MA. هی صدای تیز و تند. -T، O. مطمئن شوید. مطمئن شوید که به چه؟ چه بود یتیم کوچولو آنی تلاش برای گفتن؟ مطمئن شوید که به چه؟ -Ralphie! رندی کردم تا به آن بروید. آیا شما لطفا بیرون می آیند؟ تمامی حقوق، کارشناسی ارشد. من از سمت راست. -I نزدیکتر در حال حاضر. تنش وحشتناک بود. آن چه بود؟ سرنوشت این سیاره ممکن است در تعادل آویزان می شود. -Ralphie! رندی رو به آن بروید. -I'll از سمت راست، برای گریه کردن با صدای بلند. هی، تقریبا وجود دارد. انگشتان من پرواز کرد. ذهن من یک تله فولاد بود. هر منفذ ارتعاش. تقریبا روشن است. بله، بله، بله، بله. شود مطمئن باشید به نوشیدن Ovaltine شما. Ovaltine؟ تجاری نکبتی؟ پسر عوضی. [VIDEO] END پخش DAVID J. مالان: بنابراین رمزنگاری داریم. پس چگونه در یک کامپیوتر می تواند به ما در مورد اجرای بروید و یا به نمایندگی از چیزهایی مثل این؟ خب، ما نیاز به یک راه برای بیان خودمان کمی با انعطاف پذیری بیشتر نسبت به متغیر های ما تا کنون اجازه داده اند. ما تا به حال نوع داده int است. ما تا به حال کاراکتر. ما تا به حال شناور و دو برابر و چند نفر دیگر. ولی برای کسانی که قطعه مجزا از حافظه است که واقعا به ما اجازه می دهد به چیزهایی مانند کلمات و جملات و عبارات بیان. در واقع، ما به نام رشته چنین چیزهایی. اما ما وعده داده است که این است که واقعا فقط یک ساده سازی در CS50 کتابخانه که ما قصد به پوست برگشت. و بنابراین شروع به انجام این کار در اینجا بگذارید. اجازه بدهید من بروم جلو و باز کردن یک فایل - تمامی این فایل ها در دسترس هستند به عنوان آنلاین معمول - به نام array.c برای حل یک مشکل ربطی به رشته نقاشی تصویر در اینجا که ما چگونه ممکن است چیزی به نام یک آرایه. آرایه یک نوع داده است. این یک نوع متغیر، انواع متعدد است که نوع داده کوچکتر در داخل از آن پشت به پشت به پشت به پشت. بنابراین به عنوان مثال، اگر ما می خواهیم برای نوشتن یک برنامه کوچک است که به شما می دهد مسابقه به طور متوسط ​​برای یک دوره مثل 50 که دارای دو آزمونها، شما بسیار می تواند به راحتی نوشتن این برنامه - حتی در برخی از مواد هفته گذشته - با با استفاده از GetInt و یک زن و شوهر از متغیر. INT quiz1، اعضای هیات quiz2، و آن را بسیار سرراست است. این شاید 10، 20 خط از کد، حداکثر، برای پیاده سازی برنامه ای است که می پرسد کاربر برای نمرات مسابقه دو و پس از آن به طور متوسط ​​خود را با اضافه کردن آنها را محاسبه با هم، تقسیم توسط دو، و سپس چاپ نتایج. ما احتمالا می تواند خیلی به آسانی در حال حاضر پس از از چند دقیقه. اما مشکل این است که فرض کنید که 50 تا به حال سه آزمونها یا چهار. فرض کنید که شما می خواهید به استفاده از این برنامه همین کار را برای یک کلاس که تا به حال هفته آزمونها. فکر می کنم در مورد یک کلاس است که در هفته آزمونها. اگر مثل 16 یا هفته در یک ترم وجود دارد، در حال حاضر دارای 16 متغیر - و اعضای هیات quiz1، و اعضای هیات quiz2، نوع int quiz3، اعضای هیات quiz4. به محض اینکه شما شروع به دیدن این افزونگی، این کپی کردن و چسباندن از کد، آن را باید شروع به ساختن می خواهید یک راه بهتر وجود دارد. و خوشبختانه، به دلیل آرایه، وجود دارد. بنابراین این کار را کنیم. اول، اجازه دهید یک چیز بسیار ساده است که ما استفاده کرده ایم تا کنون معرفی کنم، اما گاهی اوقات شما آن را در کد ها را ببینید. این همان چیزی است که به طور کلی گفته می شود ثابت است. پس از آن ثابت به این معنا که این مقدار تغییر هرگز. کنوانسیون انسان است که در هنگام ایجاد یک ثابت است، برای استفاده از تمامی سرمایه نامه ها، به طوری که آن را واقعا خارج از غرفه در کد شما. و از کلمه کلیدی خاص است که شما در C استفاده کنید # تعریف کنیم. بنابراین اگر به شما می گویند #، تعریف فضا، و سپس کلمه ای که شما می خواهید به استفاده از نام ثابت، و پس از آن مقدار ثابت است. بنابراین اطلاع، این است که از نسبت دادن چیزی به یک متغیر متفاوت است. هیچ علامت مساوی وجود دارد. هیچ نقطه و ویرگول بدین شکل وجود دارد. این همان چیزی است که به طور کلی به عنوان یک دستور پیش پردازنده شناخته شده است، اما بیشتر در که زمان دیگری است. در حال حاضر، این ایجاد ارزش تغییرناپذیر به نام واقعی است که آزمونها مقدار عددی 2 است. بنابراین در هر جایی که باشید دیدن آزمونها، آزمون، آزمونها در سراسر این فایل، که فقط شماره 2. در حال حاضر، اگر من در اصلی در حال حاضر، بیایید ببینید که چگونه این کار. در ابتدا، به نظر می رسد کمی مرموز است. اما این همه چیز از هفته است. از کاربر برای نمرات. چگونه این کار را انجام دهید؟ خب، در خط 22 - این است که واقعا بخش آبدار - من اعلام شناور، اما نه فقط یک شناور. من اعلام، بلکه آرایه ای از مقادیر ممیز شناور است. این متغیر به نام نمرات، به عنوان ضمنی در اینجا. اما تنها قطعه از تگ های جدید این براکت مربع، واقع که من گفت: نمرات شناور و سپس براکت باز و پس از آن یک عدد است. مقررات، اگر این ثابت است، این است که درست مثل ما این است. این به این معنی کامپیوتر با سلام، من دو شناور بدهد، و اجازه دهید جمعی تماس بگیرید آنها نمرات. این است که در مقایسه با یک فرآیند بسیار خسته کننده مثل این است. شناور grade1، grade2 شناور، و غیره. بنابراین یک آرایه این اجازه می دهد تا ما را به پیاده سازی این ایده اما بسیار کمتر messily، در در چنین راهی که ما می توانیم به جای یک خط از کد نوشتن، می گویند، 16 از 16 ترم در هفته است. بنابراین من نمی خواهم به سختی کد 2 چرا که اگر شما در این مورد فکر می کنم در حال حاضر منطقی - فرض کنید در سال آینده CS50 تغییرات تا 3 آزمونها به جای. و من تا به حال شماره 2 در اینجا. من تا به حال شماره 2 در اینجا. من تا به حال شماره 2 در اینجا. من تا به حال شماره 2 در اینجا. آن را بسیار خسته کننده و بسیار آسان برای پیچ کردن و به طور تصادفی تغییر یک مقدار را به 3 و از دست برخی از ارزش های دیگر، از مجموع 2. بنابراین من قصد دارم به جای خلاصه این دور و استفاده از این ثابت است که به عنوان نام نشان می دهد، تغییرات هرگز. و در حال حاضر، مهم نیست که ما در آنها متفاوت است، آزمون امسال یا بعد، من فقط باید آن را در یک مکان تغییر دهید، تا اینجا در بالا. به طوری که همه ثابت است. در همین حال، از ویژگی های جدید و مفهومی که از یک آرایه است. پس از براکت مربع به من این شناور بسیاری از و به من اجازه می دهد که در مجموع آنها نمرات اینجا کلیک کنید. بنابراین در حال حاضر اجازه دهید ببینیم که چه چیزی من قصد دارم به انجام. در اینجا در خط 24 است که ابتدا از یک حلقه for است. این است که واقعا فانتزی هیچ چیز. فقط با استفاده از آزمونها به جای شماره hard-coded بودن. اما هیچ فکری متفاوت وجود دارد از هفته گذشته وجود دارد. این فقط printf است. بنابراین printf ("مسابقه شماره٪ d از٪ D") چرا که من فقط می خواهم برای چاپ کردن به من مسابقه شماره یکی از این دو و سپس دو نفر از دو. بنابراین این صرفا یک چیز زیبایی است. اما قسمت جالب در حال حاضر در خط 27 است. به منظور پر کردن در یکی از این دو متغیرهایی با ممیز شناور ارزش، شما دوباره از براکت استفاده کنید. در این مورد، من با استفاده از چون این حلقه for با من برابری آغاز شده است چه مقدار، ظاهرا؟ 0. بنابراین تکرار برای اولین بار از این حلقه، آن را به عنوان هر چند که من این کار را در کد نوشت. اما در تکرار دوم از این حلقه آن است که به عنوان اینکه من این کار را در کد من نوشت. اما واقعیت این است که من با استفاده از یک متغیر کامل است، زیرا، به عنوان نام نشان می دهد، این تغییر ارزش خود را در هر تکرار. بنابراین من پر کردن این آرایه یک نقطه در یک زمان. این آرایه چه شکلی است؟ خوب، دلیل من این مستطیل ساده فوق العاده بر روی صفحه نمایش در اینجا کشید قبل از اینکه به این دلیل بود. آرایه است که فقط یک تکه از حافظه با تکه های دیگری از حافظه، به دنبال تکه های دیگری از حافظه، و غیره. بنابراین اگر آرایه من این است که با اندازه 2 در این مورد در اینجا، همه من می خواهم انجام می شود توسط تایپ کردن در نمرات آزمون من اینجا را دوست دارم. من 100 در این یکی رو. و بعد هم به 99 در این یکی شدم. سپس این حافظه حتی ممکن است مورد استفاده قرار گیرد زیرا من فقط خواسته کامپیوتر برای آرایه ای از اندازه 2. این مربع ها هنوز هم وجود دارد. درست است؟ شما هنوز هم باید دو گیگابایت RAM، حتی اگر شما فقط درخواست برای دو شناور است. بنابراین ایده آرایه است که کامپیوتر فقط طول می کشد یک تکه از حافظه و پس از آن apportions قطعات کوچکتر پشت به پشت به پشت به پشت. و به طوری که تمام یک آرایه است. این یک تکه به هم پیوسته از حافظه است، در داخل آن شما می توانید همه چیز قرار داده است. در حال حاضر این اتفاق می افتد پس لطفا فقط برخی از ریاضی خسته کننده است. اگر من در پایین حرکت کنید در اینجا، این است که من پس از آن بیش از آرایه تکرار. من می آیند تا با مجموع تمام مقادیر موجود در آرایه. و سپس با استفاده از تابع دور در اینجا در واقع انجام خلاصه تقسیم آزمونها. اما دست من موج من که در آن به عنوان مرتب سازی بر اساس حساب به اندازه کافی برای در حال حاضر. اما همه که انجام این کار برای من در نهایت محاسبه متوسط ​​است. ابتدا مسابقه به همراه مسابقه دوم، تقسیم بر 2، و سپس چاپ آن را به عنوان یک int است. اما اجازه دهید در حال حاضر به عنوان مثال مختلف به نام string1 گذار، که تصویری مشابه اما با استفاده از رشته ها است. اجازه بدهید من به جلو بروید و ساده این کار را برای یک لحظه. و ببخش دندانه دار در حال حاضر. توجه کنید که در خط 19 از این مثال، من یک رشته از کاربر است. اما متوجه چیزی است که من بعد در خط انجام 22 به بعد. من در واقع از من تکرار تا - و این است یک ترفند جدید - strlen، طول رشته است. این یک تابع است که می آید با C است که اگر شما آن را یک رشته منتقل می کند، آن را می گوید شما چگونه بسیاری از شخصیت ها در این رشته هستند. که تمام است. این واقعیت است که آن را strlen به جای طول رشته است فقط به خاطر اینکه آن را موجز. 30 سال پیش، مردم دوست داشت به نوشتن چیزهایی به عنوان موجز به عنوان امکان پذیر است. بنابراین ما این کنوانسیون در اینجا نگه داشته ام. + + فقط به معنی افزایش من در هر تکرار. و در حال حاضر این توجه کنید که واقعا جالب است. بنابراین در خط 24، من می گویم کامپیوتر، من یک شخصیت می دهد، هشت بیت، و آن را ج. اما آنچه در این است که بر روی سمت راست گفت؟ در زبان انگلیسی، چه می کند که نشان دهنده؟ [نامفهوم] DAVID J. مالان: دقیقا. اولین کاراکتر در آرایه را به من بده. یا بیشتر به طور کلی، من شخصیت من-TH در آرایه را به من بدهید. و تحقق این مهم است که در حال حاضر به عنوان دانشمندان علم کامپیوتر، ما در واقع شمارش از 0. شما اختیار ندارد در حال حاضر به شروع به انجام این کار است. حالا شما باید به رفتار مطابق با انتظارات کامپیوتر و شمارش از صفر به دلیل [0] رفتن به اولین شخصیت در یک رشته. [1] برای رفتن به دوم است. [2] رفتن به سوم، و غیره. پس از این برنامه، اگر من آن را کامپایل - این است، دوباره، string1. بنابراین string1 کند. و در حال حاضر من را اجرا string1 در پنجره ترمینال من. این انتظار برای ورودی، بنابراین من قصد دارم، می گویند، دیوید تایپ کنید. را وارد کنید. و در حال حاضر آن را چاپ DAVID در خطوط مختلف به دلیل متوجه آنچه که من انجام می دهند. من چاپ یکی از شخصیت ها در یک زمان. در حال حاضر ما نمی خواهد به جزئیات امروز در این. اما من یک لحظه قبل این چک در اینجا حذف شده است. به نظر می رسد که در صورتی که کاربر بی ادبی خصمانه، یا فقط اشتباه گرفته شود، شما در واقع می تواند برخی از طول یک رشته را به شکست منجر میشود. اگر شما کلید اشتباه بر روی صفحه کلید، شما ممکن است به هیچ رشته ای در تمام. و یا اگر شما مخرب، شما ممکن است سعی کنید در ارزش یک گیگابایت، متن را بچسبانید مقاله برای پر کردن این رشته است. و در صورتی که کامپیوتر اجرا می شود از حافظه، که معلوم است که ما قصد داریم برای به دست آوردن این مقدار خاص به نام تهی. بنابراین در حال حاضر، درست است که این مقدار خاصی به نام تهی وجود دارد می دانیم که به شما این امکان را می دهد که ما را به بررسی زمانی که ما از حافظه، در میان چیزهای دیگر. اما اگر باز هم اکنون string2، متوجه یک تفاوت در اینجا است. توجه داشته باشید که در اینجا یک تفاوت با string2. با string2، این حلقه کمی متفاوت است. اجازه دهید نقاط صفر را حذف کنید به طوری که ما می توانیم در مورد آن زمان دیگری صحبت کنید. اما آنچه در مورد حلقه for این زمان متفاوت است؟ و من پشت می تواند به مثال قبلی. به طوری که نسخه دو. این نسخه یکی از. یک، دو، یک دو. بنابراین تماس strlen این است که کجا؟ در بخش اول از حلقه for است. هر گونه افکار به همین دلیل من برای انجام این کار؟ آره. [نامفهوم] DAVID J. مالان: بنابراین ما تابع را صدا نمی زنم هر زمان تنها است. دقیقا. از حلقه for به یاد بیاورید که آنها فوق العاده ساده هنگامی که شما مرتب سازی بر اساس درک کنند که این مقدار دهی اولیه، شرایط، و به روز رسانی است. مشکل این است که این وضعیت رخ می دهد در هر تکرار حلقه. و به این ترتیب در این مثال در اینجا، چه بد است در مورد حقیقت که این وضعیت من است؟ شما خواستار strlen دوباره و دوباره و دوباره. اما هنگامی که من در DAVID تایپ شده، طول این رشته پنج است. و این نیست که در هر تکرار از حلقه تغییر به این دلیل که رشته هنوز هم D-A-V-I-D. بنابراین این یک اشاره در رفتن به تبدیل شدن به یک است به طور فزاینده مهم است این ایده به عنوان یک تصمیم طراحی شناخته می شود، که در آن - نه تنها کامپیوتر کار غیر ضروری است. در حال حاضر تنها به عنوان یک پیش نمایش دزدکی حرکت کردن از pset 2، pset 2 در نسخه استاندارد رفتن به شما چالش برای برخی از تعدادی از رمزهای، برخی در واقع پیاده سازی تعدادی از الگوریتم های رمز نگاری، به طوری که شما می توانید هر دو رمزگذاری و رمزگشایی پیام ها، مخفی بسیار شبیه به یک Ralphie وجود دارد رمزگشایی. در نسخه هکر از pset 2، ما در حال رفتن به کمی بیشتر است. ما قصد داریم به شما یک فایل دست از سیستم های کامپیوتری واقعی که شامل یک دسته ای تمام نام های کاربری و کلمات عبور رمز شده واقعی و چالش نسخه هکر خواهد بود برای شکستن این رمزهای عبور و شکل کردن آنچه که رمزنگاری و یا سری به واقع مورد استفاده قرار گرفت تولید آن کلمه عبور. و ما قصد داریم برای انجام این کار با استفاده از یکی از ویژگی های جدید در اینجا از C است که من به شما فقط یک نسخه ی نمایشی، شناخته شده به عنوان خط فرمان استدلال. پس از آن معلوم است، در حالی که برخی از شما ممکن است که در قسمت و یا در کتاب های درسی دیده می شود، اصلی همیشه باید به باطل در پرانتز. به نظر می رسد که اصلی نیز می تواند مانند این نوشته، با دو آرگومان، argc و argv را، که در آن argc تعداد از کلماتی را که شما تایپ کنید پس از نام این برنامه در خط فرمان شما. و ی argv کلمات واقعی است. و به عنوان براکت مربع وجود دارد نشان می دهد، و argv است که ظاهرا یک آرایه است. این رفتن به یک رشته پس از یک رشته پس از یک رشته در حافظه است. بنابراین آنچه که ما در حال رفتن به قادر به انجام، شروع با pset 2، است چیزی شبیه به این. اگر من را argv1، که به عنوان مثال خواهیم دوباره به در روز دوشنبه، و اجرا می باشد آن، توجه کنید که به نظر نمی رسد به انجام هر کاری هنوز. این فقط به نام خود چاپ. اما اگر من می گویم کلاس خداحافظی، توجه داشته باشید که این برنامه ظاهرا تکرار بر هر یک از کلمات که در اعلان تایپ شد. و وسیله ای که ما دسترسی به کلمات که کاربر تا به دست آوردن تایپ در سریع است، با تغییر اصلی، شروع این آخر هفته، از نوع int اصلی (خالی) به اعضای هیات تحریریه اصلی (argc و argv). و به این ترتیب استدلال خط فرمان به دنیا آمد. و یک بار شما واقعا پیچیده در این، شما قادر خواهید بود برای نوشتن واقعا trippy برنامه ها، از جمله این یکی در اینجا، می رود که در بالا و فراتر از آن برخی از قابلیت های ما تا کنون انجام داده ایم اما بسیار قدرتمند است. بنابراین ما باید این کار را با این کار را بر روی صفحه نمایش را ترک کند. و ما شما را در روز دوشنبه را ببینید.