1 00:00:00,000 --> 00:00:02,270 [Powered by Google Translate] [هفته 2، ادامه داد] 2 00:00:02,270 --> 00:00:04,220 [دیوید J. مالان، دانشگاه هاروارد] 3 00:00:04,220 --> 00:00:06,880 [این CS50 است. - CS50.TV] 4 00:00:06,880 --> 00:00:10,990 بسیار خوب. این CS50 است، و این است که در پایان هفته 2. 5 00:00:10,990 --> 00:00:14,410 اگر شما انتظار می رود گرسنه در اطراف این زمان به فردا، 6 00:00:14,410 --> 00:00:18,620 می دانیم که ما در حال رفتن به تشکیل گروه کوچک فردا، پنج شنبه، 1:15 PM. 7 00:00:18,620 --> 00:00:21,360 این URL در اینجا وجود دارد اگر شما می خواهم به پاسخ دهید. 8 00:00:21,360 --> 00:00:26,740 فضا محدود است، بنابراین را ببخش اگر به صورت تا زمانی که شما این فرم را پر پر کنید. 9 00:00:26,740 --> 00:00:29,300 یکی دیگر از URL، هر چند که ممکن است مورد علاقه باشد این است. 10 00:00:29,300 --> 00:00:32,369 تنها در حدود یک ماه زمان، البته در حال رفتن به در دسترس 11 00:00:32,369 --> 00:00:36,890 همه گسترده تر است که از طریق آن از طریق EDX مردمی بر روی اینترنت قادر خواهد بود به دنبال همراه، 12 00:00:36,890 --> 00:00:39,380 شرکت در این دوره کاملا فعالانه، در واقع. 13 00:00:39,380 --> 00:00:42,270 آنها خواهید بود با استفاده از لوازم خانگی CS50 و CS50 بحث 14 00:00:42,270 --> 00:00:45,490 و بسیاری از ابزارهای نرم افزار های مختلف است که ما در حال حاضر با استفاده از این ترم. 15 00:00:45,490 --> 00:00:48,710 و یکی از طرح های ما می خواهم به عنوان یک آزمایش را در این سال 16 00:00:48,710 --> 00:00:51,930 این است که ببینیم چقدر محتوای ما می توانیم ترجمه 17 00:00:51,930 --> 00:00:53,960 به دیگر زبان های گفتاری و نوشتاری است. 18 00:00:53,960 --> 00:00:57,500 بنابراین اگر شما ممکن است علاقه مند به شرکت در این پروژه 19 00:00:57,500 --> 00:01:02,270 به موجب آن ما به رونوشت انگلیسی و زیرنویس برای سخنرانی دوره 20 00:01:02,270 --> 00:01:05,450 و شلوارک ها و سمینارها و بخش ها و مانند آن، 21 00:01:05,450 --> 00:01:08,200 اگر شما روان صحبت می کنند و یا ارسال نامه روان برخی از زبان های دیگر، 22 00:01:08,200 --> 00:01:12,290 ما خیلی دوست دارم به شما در این پروژه شرکت کنند که به موجب آن شما را بر روی یک یا تعداد بیشتری از فیلم ها را، 23 00:01:12,290 --> 00:01:15,200 ترجمه آنها به زبان شما می دانید به خوبی. 24 00:01:15,200 --> 00:01:18,700 >> برای شما یک حس رابط کاربری به من بدهید، این رابط کاربری مبتنی بر وب وجود دارد 25 00:01:18,700 --> 00:01:22,090 که ما استفاده خواهیم کرد که اساسا ایجاد یک UI شبیه به این. 26 00:01:22,090 --> 00:01:24,290 این به من آموزش برخی از هالووین گذشته، 27 00:01:24,290 --> 00:01:27,390 و در سمت راست وجود دارد در سیاه و سفید در کنار این تمبرها زمان، 28 00:01:27,390 --> 00:01:31,210 شما چیزهای مختلف است که از دهان من خارج شد آن روز، 29 00:01:31,210 --> 00:01:34,850 و سپس در زیر آن شما قادر خواهید بود به برخی از زبان های دیگر ترجمه کنید 30 00:01:34,850 --> 00:01:38,690 دقیقا همان چیزی است که نگاشت بین، در این مورد، به زبان انگلیسی و، می گویند، اسپانیایی. 31 00:01:38,690 --> 00:01:40,440 پس از آن در واقع یک ابزار بسیار کاربر پسند. 32 00:01:40,440 --> 00:01:43,370 شما می توانید به عقب و به سرعت رو به جلو به آسانی با میانبرهای صفحه کلید. 33 00:01:43,370 --> 00:01:47,490 بنابراین اگر شما می خواهم که برای شرکت در این آزمایش و کلمات خود را دیده و خوانده شده 34 00:01:47,490 --> 00:01:51,850 هزاران نفر از مردمی خارج وجود دارد، لطفا احساس رایگان برای شرکت در. 35 00:01:51,850 --> 00:01:54,350 یک کلمه در مورد بچه گربه از دوشنبه. 36 00:01:54,350 --> 00:02:00,350 تا مبادا ما فرستاده اند پیام بیش از حد ترسناک، متوجه آن، به عنوان ساعات اداری نشان می دهد 37 00:02:00,350 --> 00:02:03,300 و به عنوان بخش نشان می دهد، طراحی این دوره بسیار زیاد است 38 00:02:03,300 --> 00:02:07,360 به دانش آموزان همکاری و صحبت کردن به کار را از طریق مجموعه مشکل 39 00:02:07,360 --> 00:02:11,260 و مشکلات با هم، و در واقع خط به پایین می آید، 40 00:02:11,260 --> 00:02:16,010 دوباره، کار شما در نهایت تسلیم را آن گونه که مایلید تغییر دهید. 41 00:02:16,010 --> 00:02:18,860 و به این ترتیب کاملا صادقانه، در ساعات اداری کاملا طبیعی است، 42 00:02:18,860 --> 00:02:22,240 کاملا انتظار می رود حتی به چت با برخی از دوست در کنار شما. 43 00:02:22,240 --> 00:02:24,370 >> اگر او در حال مبارزه با برخی از موضوع و شما مانند، 44 00:02:24,370 --> 00:02:27,940 "اوه، خوب، اجازه دهید من به شما نگاهی اجمالی به برخی از خط از کد را که من نوشتم،" این خوب است، 45 00:02:27,940 --> 00:02:31,250 که اتفاق می افتد، و این بسیار مساعد است، من فکر می کنم، با فرایند یادگیری است. 46 00:02:31,250 --> 00:02:36,750 که در آن خط عبور می شود زمانی است که سر مرتب سازی بر اساس کج در اینجا برای ثانیه تعداد بسیار زیادی از 47 00:02:36,750 --> 00:02:41,160 یا چند دقیقه که واقعا فقط یک فرصت رفع انسداد دوست شما بوده است، 48 00:02:41,160 --> 00:02:44,160 و قطعا وقتی همه چیز را از طریق ایمیل و Dropbox و مانند رد و بدل شده است، 49 00:02:44,160 --> 00:02:45,640 نیز خط وجود دارد. 50 00:02:45,640 --> 00:02:48,620 بنابراین همه به معنی احساس راحتی و احساس را تشویق به گپ زدن با دوستان 51 00:02:48,620 --> 00:02:52,810 و همکلاسی درباره psets و بیشتر و فقط متوجه باشید که چیزی که شما در نهایت تسلیم 52 00:02:52,810 --> 00:02:57,340 واقعا باید محصول خود را ایجاد و نه شخص دیگری باشد. 53 00:02:57,340 --> 00:03:00,490 و به این ترتیب از مشکلات حوزه خاص برای pset2، 54 00:03:00,490 --> 00:03:04,740 که خواهد آمد از اواخر شب فردا، به شیرجه رفتن به جهان از رمزنگاری، 55 00:03:04,740 --> 00:03:08,970 که هنر از رمزنگاری یا تقلا اطلاعات است، 56 00:03:08,970 --> 00:03:12,600 و این در نهایت به جهانی امنیت. 57 00:03:12,600 --> 00:03:16,560 در حال حاضر، امنیت برای بسیاری از ما می آید را در فرم از مکانیزم نسبتا پیش پا افتاده است. 58 00:03:16,560 --> 00:03:19,050 همه از ما نام کاربری و کلمه عبور، 59 00:03:19,050 --> 00:03:23,450 و همه از ما نام کاربری و کلمه عبور بسیار بد، به احتمال زیاد. 60 00:03:23,450 --> 00:03:28,240 >> اگر رمز عبور خود را در وب سایت های متعدد است، که احتمالا بهترین ایده نیست، 61 00:03:28,240 --> 00:03:30,070 همانطور که ما به سوی پایان ترم بحث خواهیم کرد. 62 00:03:30,070 --> 00:03:34,720 شوخی نیست - - اگر رمز عبور خود را در یک یادداشت چسبنده نوشته شده بر روی مانیتور خود، 63 00:03:34,720 --> 00:03:38,350 است که بیش از حد است و نه لزوما بهترین طراحی، اما کاملا یک پدیده شایع است. 64 00:03:38,350 --> 00:03:42,470 و اگر شما در حال با استفاده از رمزنگاری به رمز در آوردن رمزهای عبور شما، 65 00:03:42,470 --> 00:03:44,210 آنها به ویژه آسیب پذیر هستند. 66 00:03:44,210 --> 00:03:47,270 بنابراین اگر شما فکر می کنم شما فوق العاده باهوش با داشتن یک سند Word پنهان 67 00:03:47,270 --> 00:03:49,910 در جایی بر روی هارد دیسک شما است که همه کلمات عبور شما را 68 00:03:49,910 --> 00:03:53,670 اما آن را در یک پوشه است که هیچ کس رفتن به نگاه، که بیش از یک مکانیسم بسیار امن نیست. 69 00:03:53,670 --> 00:03:56,990 و بنابراین، آنچه pset2 معرفی این هنر رمزنگاری 70 00:03:56,990 --> 00:04:02,010 و تقلا اطلاعات به طوری که همه چیز مانند کلمات عبور امن تر هستند. 71 00:04:02,010 --> 00:04:05,790 بافت در اینجا این است که با استفاده از داده های نا امن 72 00:04:05,790 --> 00:04:07,930 می آید فرصت را به رمز در آوردن و به آن تقلا. 73 00:04:07,930 --> 00:04:11,470 و بنابراین این، به عنوان مثال، یک نمونه از پیام های رمزگذاری شده است. 74 00:04:11,470 --> 00:04:14,700 این در واقع می گوید که چیزی در زبان انگلیسی است، اما آن را به وضوح به طور کامل آشکار و بدیهی نیست. 75 00:04:14,700 --> 00:04:18,279 و ما امروز می آیند دایره کامل به کسی را دست انداختن جدا چه این پیام های مخفی در اینجا است. 76 00:04:18,279 --> 00:04:23,490 اما در دنیای واقعی از کامپیوتر، همه چیز حتی نگاه نمی مانند آنها ممکن است عبارات انگلیسی است. 77 00:04:23,490 --> 00:04:28,430 به عنوان مثال، این همان چیزی است که شما ممکن است در استاندارد لینوکس یا مک و یا یونیکس کامپیوتر 78 00:04:28,430 --> 00:04:32,070 در یک فایل بود که یک بار پس از یک زمان به نام رمز عبور فایل. 79 00:04:32,070 --> 00:04:34,200 >> امروزه آن را به جاهای دیگر منتقل شده است. 80 00:04:34,200 --> 00:04:39,210 اما اگر شما را در جای مناسب بر روی یک سیستم نگاه کنید، شما نه تنها نام کاربری خود را ببینید 81 00:04:39,210 --> 00:04:43,400 یا این که از افراد دیگر بر روی سیستم است، اما شما یک نسخه رمز شده از رمز عبور خود را ببینید. 82 00:04:43,400 --> 00:04:47,980 در واقع، دخمه کلمه وجود دارد نشان می دهد که مسائل زیر رمزگذاری شده است. 83 00:04:47,980 --> 00:04:52,680 و این سری از حروف به ظاهر تصادفی و شخصیت ها و اعداد و غیره 84 00:04:52,680 --> 00:04:56,480 می توان تنها با به طور کلی دانستن برخی راز رمزگشایی - 85 00:04:56,480 --> 00:04:58,840 یک کلمه رمز، شماره های مخفی - 86 00:04:58,840 --> 00:05:03,160 و به همین ترتیب در واقع، هنر از رمزنگاری در نهایت جوش پایین به برخی از مرتب کردن بر اساس اعتماد 87 00:05:03,160 --> 00:05:05,650 و دانستن چیزی است که شخص دیگری را نمی کند. 88 00:05:05,650 --> 00:05:10,090 بنابراین ما باید این کار را در جزئیات کمی بیشتر کاوش امروز و در pset آمد. 89 00:05:10,090 --> 00:05:12,200 و در حال حاضر یک کلمه در پاس / خرابی. 90 00:05:12,200 --> 00:05:15,360 به خصوص که برخی از شما را به pset1، لوازم خانگی، شیرجه 91 00:05:15,360 --> 00:05:19,080 و جهان بسیار جدید برای خود، درک کنند که سرخوردگی و سردرگمی 92 00:05:19,080 --> 00:05:21,700 و فقط مشکلات فنی کاملا انتظار می رود، 93 00:05:21,700 --> 00:05:24,180 به خصوص با pset اول، که در آن فقط خیلی جدید وجود دارد، 94 00:05:24,180 --> 00:05:27,730 فقط آشنایی با LS و سی دی و تمام این دستورات محرمانه 95 00:05:27,730 --> 00:05:33,050 و یک محیط جدید است، و این جدا از مواد واقعی و برنامه نویسی خود است. 96 00:05:33,050 --> 00:05:36,940 نیز متوجه هستند که قطعا وجود دارد ساعات اداری که به عنوان ساختار پشتیبانی وجود دارد. 97 00:05:36,940 --> 00:05:38,880 >> بخش شروع روز یکشنبه آینده. 98 00:05:38,880 --> 00:05:42,960 اما مهمتر از همه، اگر شما احساس فقط این است که برای شما جهان، 99 00:05:42,960 --> 00:05:44,710 متوجه باشید که واقعا فقط نیاز به زمان است. 100 00:05:44,710 --> 00:05:48,600 شد و آن را برای این فرصت نه سال پیش برای من گرفتن یک کلاس پاس / خرابی 101 00:05:48,600 --> 00:05:50,990 راستش، من هرگز حتی پا در کلاس تنظیم شده است. 102 00:05:50,990 --> 00:05:53,690 و شما می توانید این را تغییر دهید، تا می گویند، دوشنبه پنجم این دوره، 103 00:05:53,690 --> 00:05:58,280 بنابراین اگر شما بر روی لبه در حال حاضر، درک کنند که به جای سر به برخی دیگر آب در دسترس نباشد، 104 00:05:58,280 --> 00:06:01,260 قطعا فقط در حال تغییر به پاس / خرابی در نظر بگیرند. 105 00:06:01,260 --> 00:06:04,570 باز هم، واقعا وجود ندارد این فرهنگ در اینجا در دانشگاه هاروارد از گرفتن چیزهایی پاس / خرابی 106 00:06:04,570 --> 00:06:08,670 از آنجایی که هر کس واقعا می خواهد برای رسیدن به و یا overachieve، 107 00:06:08,670 --> 00:06:11,130 اما صادقانه بگویم، این یک روش فوق العاده از تلاش چیزی است 108 00:06:11,130 --> 00:06:16,720 که ممکن است برای شما آشنا است، و شما در نهایت انجام می دهند، در بسیاری از موارد، بسیار خوب است، 109 00:06:16,720 --> 00:06:18,210 شاید با تعجب خود را. 110 00:06:18,210 --> 00:06:20,980 و در شرایط عینی تر، آنچه که من فکر می کنم پاس / خرابی به طور کلی آیا، 111 00:06:20,980 --> 00:06:22,940 به خصوص که شما ممکن است با pset0 تجربه، 112 00:06:22,940 --> 00:06:26,560 اگر شما در 10 ساعت، 15 ساعت، 25 ساعت را در برخی از pset قرار داده است 113 00:06:26,560 --> 00:06:29,920 و شما فقط کوبیدن سر خود را در برابر دیوار و آن را فوق العاده در اواخر شب 114 00:06:29,920 --> 00:06:33,950 اما تو گرفته pset 90 درصد از راه است و شما نه تنها می تواند از یک چیز، 115 00:06:33,950 --> 00:06:36,520 پاس / خرابی واقعا طول می کشد لبه از یک کلاس مثل این، 116 00:06:36,520 --> 00:06:39,100 که در آن شما می توانید از خوشحالی گفت، "خوب، من می دانم که کامل نیست مرتب کردن، 117 00:06:39,100 --> 00:06:42,350 اما من کار می کرد الاغ من در این مورد، من خیلی خوشحال هستم که در آن به پایان رسید تا " 118 00:06:42,350 --> 00:06:44,850 و این انتظارات برای ویزای دیدار خواهد کرد / شکست. 119 00:06:44,850 --> 00:06:47,540 پس وقت را در ذهن نگه دارید. بسیار خوب. 120 00:06:47,540 --> 00:06:50,520 >> پس کسانی از شما که تلاش کرده اند به دانشگاه هاروارد با استفاده از Wi-Fi را، 121 00:06:50,520 --> 00:06:54,780 می دانیم که یک SSID CS50، اتصال Wi-Fi، شناور در اطراف وجود دارد 122 00:06:54,780 --> 00:06:56,490 که شما ممکن است شانس بهتری داشته باشد. 123 00:06:56,490 --> 00:07:00,130 این یک کمی کنایه آمیز است که رمز عبور برای این کار، اگر شما می خواهم برای اتصال به این 124 00:07:00,130 --> 00:07:08,350 برای سرعت بهتر - و به ما اطلاع دهید اگر آن را بهتر - 12345، تمام راه را تا 8 125 00:07:08,350 --> 00:07:10,910 به این دلیل است 8 امن تر از 5 است. 126 00:07:10,910 --> 00:07:16,910 بنابراین، اگر شما نیاز به رمز عبور از Wi-Fi، به CS50 اتصال بی سیم، 12،345،678، 127 00:07:16,910 --> 00:07:20,380 و پست در CS50 بحث اگر شما هنوز هم از مسائل مربوط به اتصال متناوب، 128 00:07:20,380 --> 00:07:25,420 و ما قدرت است که می شود برای این فضا می دانم. بسیار خوب. 129 00:07:25,420 --> 00:07:32,230 بنابراین یک تیزر، سریع، به خصوص برای کسانی از شما فن پسران یا دختران را از تمام چیزهایی اپل که. 130 00:07:32,230 --> 00:07:37,460 چیزی که من از چند سال حفر این فایل در اینجا، iUnlock.c، 131 00:07:37,460 --> 00:07:39,930 فقط به نوع بتن تر و پیچیده تر 132 00:07:39,930 --> 00:07:42,560 برخی از برنامه های پایه C ما در حال نوشتن است. 133 00:07:42,560 --> 00:07:46,910 بنابراین من باز کردن این فایل، iUnlock.c. در صفحه سخنرانی امروز در دسترس است. 134 00:07:46,910 --> 00:07:49,810 در سمت چپ شما یک لیست طولانی از توابع است. 135 00:07:49,810 --> 00:07:53,230 بنابراین شخص که این را نوشتهاید نوشت: بسیاری از توابع، بیشتر از فقط اصلی است. 136 00:07:53,230 --> 00:07:57,340 او با استفاده از یک دسته از کتابخانه ها در اینجا، و اگر ما شروع به پیمایش از طریق، 137 00:07:57,340 --> 00:08:04,890 این در واقع اولین، به اعتقاد من، نرم افزار برای آیفون اصلی است. 138 00:08:04,890 --> 00:08:09,830 >> هنگامی که شما می خواهید به فرار از زندان آی فون اصلی، که به معنی untether آن را از AT & T 139 00:08:09,830 --> 00:08:13,710 و در واقع نرم افزار خاص بر روی آن نصب کنید و انجام کارهای که اپل نمی خواست مردم را به انجام، 140 00:08:13,710 --> 00:08:18,480 کسی که در زمان هم برای کشف کردن دقیقا چگونه آنها می توانند معایب نرم افزار بهره برداری، 141 00:08:18,480 --> 00:08:22,690 - iUnlock.c اشتباهات، اشکالات، در نرم افزار اپل، و به این ترتیب به دنیا آمد 142 00:08:22,690 --> 00:08:26,760 که اگر شما آن را بر روی کامپیوتر خود وارد شده و آن را بر روی آی فون نصب 143 00:08:26,760 --> 00:08:29,430 که، می گویند، از طریق یک کابل USB به کامپیوتر شما متصل شده، 144 00:08:29,430 --> 00:08:32,450 این سیستم به شما امتیازات اداری و یا ریشه را بر روی آی فون خود را به من بدهید 145 00:08:32,450 --> 00:08:34,620 و به شما اجازه انجام این کار تا حد زیادی هر آنچه شما می خواهید. 146 00:08:34,620 --> 00:08:36,400 و بنابراین این گربه های جذاب و بازی موش وجود دارد 147 00:08:36,400 --> 00:08:39,340 بین اپل و سایر نقاط جهان به ویژه به عنوان آنها، مانند بسیاری از شرکت ها، 148 00:08:39,340 --> 00:08:43,350 سعی کنید مسائل خود را به قفل کردن به طوری که شما فقط می تواند با آن انجام دهد آنچه را که قصد. 149 00:08:43,350 --> 00:08:47,360 اما به لطف به مردم مثل این و درک درستی از جزئیات سطح پایین - 150 00:08:47,360 --> 00:08:50,830 و در این مورد برنامه نویسی C - و بسیاری از ساختار های آشنا 151 00:08:50,830 --> 00:08:55,280 که ما شروع به بازی کردن با، شما قادر به اهرم سخت افزار 152 00:08:55,280 --> 00:08:59,250 در یک روش مناسب می بینید و نه لزوما برخی از نهاد شرکت. 153 00:08:59,250 --> 00:09:01,600 بنابراین به عنوان مثال، من هیچ ایده چه چیزی این همه در حال انجام است، 154 00:09:01,600 --> 00:09:03,580 اما GetVersion به نظر می رسد بسیار ساده است، 155 00:09:03,580 --> 00:09:05,710 و به نظر می رسد مثل این است که یک تابع است که این فرد نوشت. 156 00:09:05,710 --> 00:09:09,250 طول می کشد تا برخی از نوع عدد صحیح را به عنوان آرگومان می کند، هر چیزی را بر نمی گرداند. 157 00:09:09,250 --> 00:09:13,710 اما به نظر می رسد به حلقه با حلقه for و اگر وضعیت، اگر شکستن بیماری، 158 00:09:13,710 --> 00:09:16,770 و به نحوی به شماره نسخه اگر ما در پایین حرکت کنید، 159 00:09:16,770 --> 00:09:19,650 حتی اگر بسیاری از این کلمات کلیدی را در حال رفتن به جدید باشد. 160 00:09:19,650 --> 00:09:22,590 و در کل بسیاری از توابع در اینجا دیده ام هرگز و ممکن است هرگز وجود ندارد 161 00:09:22,590 --> 00:09:24,350 در طول دوره ترم. 162 00:09:24,350 --> 00:09:29,160 >> در پایان روز، آن را به پیروی از قوانین و منطق است که ما شده است بازی کرده ام تا کنون. 163 00:09:29,160 --> 00:09:34,340 پس این است که بیش از حد قدیمی کرک 3S آی فون خود را و یا 4S و یا به زودی 5S این روزها، 164 00:09:34,340 --> 00:09:38,830 اما می دانم که همه بسیار از این دنیا گرفته شده است که ما را به شیرجه. 165 00:09:38,830 --> 00:09:42,280 بیایید نگاهی به یک مثال کمی ساده تر: 166 00:09:42,280 --> 00:09:46,260 این یکی، فقط به با برخی از نحو گرم و همچنین برخی دیگر از نوع داده 167 00:09:46,260 --> 00:09:48,910 که ما در موردش صحبت کردیم اما در C. واقعا دیده نمی شود 168 00:09:48,910 --> 00:09:53,670 این یک فایل به نام positive1.c است، و در هر نظر در بالا، 169 00:09:53,670 --> 00:09:56,070 این فقط خواستار آن است که یک کاربر یک عدد مثبت است. 170 00:09:56,070 --> 00:09:59,910 پس از آن یک مثال از یک حلقه DO-در حالی که، که خوب است برای برنامه های فعل و انفعالی کاربر 171 00:09:59,910 --> 00:10:02,070 که در آن شما نیاز به کاربر برای انجام کاری، 172 00:10:02,070 --> 00:10:05,530 و اگر آنها را به همکاری شما در آنها داد و یا رد نظرات آنها نیست. 173 00:10:05,530 --> 00:10:10,480 نکته: من می خواهم به انجام این کار خطوط 19 را از طریق 24 174 00:10:10,480 --> 00:10:14,620 تا زمانی که کاربر داده نشده من یک عدد مثبت است. 175 00:10:14,620 --> 00:10:21,340 این جزئیات در اینجا در خط 18، چرا N من اعلام بالای این حلقه تمام ساخت 176 00:10:21,340 --> 00:10:26,870 به عنوان مخالف به راست در کنار خط 22 که من در واقع از آن مراقبت به N؟ آره. 177 00:10:26,870 --> 00:10:29,330 [دانشجو] محدوده. >> آره، به طوری که این موضوع دامنه است. 178 00:10:29,330 --> 00:10:31,770 و به عبارت دیگر، چه دامنه برای اشاره؟ 179 00:10:34,880 --> 00:10:41,560 آره. >> [پاسخ دانش آموز نامفهوم] >> آیا می توانم کمی بلندتر صحبت می کنید؟ 180 00:10:41,560 --> 00:10:45,440 [دانشجو] که در آن شما می توانید متغیر دسترسی داشته باشید. >> کامل. 181 00:10:45,440 --> 00:10:47,610 که در آن شما می توانید یک متغیر خاص دسترسی داشته باشید. 182 00:10:47,610 --> 00:10:50,990 و به طور کلی، قاعده کلی تا کنون این بوده است که در دامنه برخی از متغیر 183 00:10:50,990 --> 00:10:56,140 جدید ترین پرانتز فرفری که شما را دیده ام تعریف می شود. 184 00:10:56,140 --> 00:11:03,070 >> و بنابراین در این مورد، اگر من به اشتباه اعلام N در خط 22 این خط کار می کند. 185 00:11:03,070 --> 00:11:10,840 من می خواهم بین المللی، و من آن را به آن N متغیر در خط 22 قرار داده است، 186 00:11:10,840 --> 00:11:17,060 اما کدام خط از کد در حال حاضر هیچ ایده چه چیزی من صحبت کردن در مورد؟ >> [دانشجو] 25. 187 00:11:17,060 --> 00:11:23,840 [مالان] 25، و معلوم 24 و همچنین چون در این صورت آن می افتد خارج از آکولاد. 188 00:11:23,840 --> 00:11:28,550 پس فقط کمی از مزاحمت، اما به راحتی به سادگی با اعلام متغیر حل 189 00:11:28,550 --> 00:11:30,700 در خارج از تابع خود. 190 00:11:30,700 --> 00:11:32,760 خواهیم دید که بعد از امروز شما می توانید یک گام به جلو 191 00:11:32,760 --> 00:11:34,940 و شما حتی می تواند کمی تنبل. 192 00:11:34,940 --> 00:11:39,660 و این است که به طور کلی توصیه می شود، اما شما حتی می تواند تنبل 193 00:11:39,660 --> 00:11:44,150 و قرار دادن یک متغیر در سطح جهان، تا به صحبت می کنند، از یک تابع در داخل نیست، نه در داخل یک حلقه، 194 00:11:44,150 --> 00:11:49,800 اما در خود فایل، خارج از همه توابع شما نوشته شده است، به عنوان من در اینجا در خط 15. 195 00:11:49,800 --> 00:11:55,220 این است که به طور کلی بر اخم کرد، اما متوجه این است که یک راه حل که گاهی اوقات به مشکلات دیگر، 196 00:11:55,220 --> 00:11:56,910 همانطور که ما در نهایت خواهید دید. 197 00:11:56,910 --> 00:11:59,500 بنابراین در حال حاضر ما آن را شبیه به این را ترک کند، اما اجازه دهید ببینیم آیا می توانیم این بازنویسی 198 00:11:59,500 --> 00:12:02,360 فقط برای شروع به بیان خودمان کمی متفاوت است. 199 00:12:02,360 --> 00:12:05,550 این برنامه فقط برای روشن، positive1 است. 200 00:12:05,550 --> 00:12:11,980 اجازه دهید من جلو بروید و در پنجره ترمینال من positive1 را وارد کنید. 201 00:12:11,980 --> 00:12:15,080 کامپایل درست است. من قصد دارم برای اجرای positive1، ضربه را وارد کنید. 202 00:12:15,080 --> 00:12:19,250 من تقاضا می کنم که شما از من یک عدد صحیح مثبت را. من -1 می گویند. که کار نمی کند. 203 00:12:19,250 --> 00:12:22,340 0، 99. که به نظر می رسد به کار است. 204 00:12:22,340 --> 00:12:25,310 شاید دقیق ترین تست، اما حداقل آن را بررسی سلامت عقل خوب 205 00:12:25,310 --> 00:12:27,100 که ما در مسیر درست هستیم. 206 00:12:27,100 --> 00:12:29,570 >> بنابراین در حال حاضر من به جلو بروید و باز کردن نسخه 2 از این اجازه، 207 00:12:29,570 --> 00:12:32,800 و آنچه که در حال حاضر؟ 208 00:12:32,800 --> 00:12:39,030 این پیاده سازی همان چیزی است، اما آنچه به وضوح های مختلف در این زمان بیرون پریدن؟ 209 00:12:40,790 --> 00:12:47,090 این بولی در سبز. این در سبز، این کلمه به عنوان شناخته شده بولی است، که یک نوع داده مشخص شده است. 210 00:12:47,090 --> 00:12:50,510 این کار در تمام نسخه های C. ساخته نشده است 211 00:12:50,510 --> 00:12:52,650 شما باید شامل یک کتابخانه خاص. 212 00:12:52,650 --> 00:12:56,460 در مورد ما، من شامل کتابخانه CS50 به طوری که در حال حاضر دسترسی به بولی. 213 00:12:56,460 --> 00:12:59,860 اما در خط 18، به نظر می رسد به یک مقدار بولی در اینجا به نام خدا را شکر. 214 00:12:59,860 --> 00:13:02,190 من می توانستم به نام این هر چیزی، اما من آن را به نام خدا را شکر 215 00:13:02,190 --> 00:13:04,750 فقط به نوع انتقال معنا معنایی است. 216 00:13:04,750 --> 00:13:07,700 بنابراین در ابتدا در خط 18، من ظاهرا خدا را شکر نیست 217 00:13:07,700 --> 00:13:12,230 به این دلیل که مقدار بولی خدا را شکر اولیه در خط 18 مقدار false است. 218 00:13:12,230 --> 00:13:16,500 و بعد از آن به نظر می رسد آنچه که من در اینجا در خطوط 21 تا 23 انجام می شود 219 00:13:16,500 --> 00:13:19,200 این است که من فقط نوع بازنویسی منطق من است. 220 00:13:19,200 --> 00:13:26,100 بنابراین هیچ عملکرد متفاوت است، اما در خط 22 در حال حاضر من چک می کنم اگر هوشمند کاربر را فراهم کرده است 221 00:13:26,100 --> 00:13:31,360 بزرگتر از 0 است، پس از آن من به سادگی ارزش خدا را شکر درست را تغییر دهید. 222 00:13:31,360 --> 00:13:35,590 و چرا من به انجام این کار؟ از آنجا که در خط 25، ظاهرا من قصد دارم به بررسی شرایط است. 223 00:13:35,590 --> 00:13:39,760 آیا این حلقه در حالی که خدا را شکر نادرست است. 224 00:13:39,760 --> 00:13:42,960 بنابراین من این کار را به عنوان یک جایگزین برای نسخه 1 پیشنهاد 225 00:13:42,960 --> 00:13:47,050 چرا که آن را حداقل کمی بیشتر بصری شاید کمی بیشتر ریشه در زبان انگلیسی است. 226 00:13:47,050 --> 00:13:51,980 بنابراین زیر را انجام دهید در حالی که شما خدا را شکر نمی کند و یا در حالی که خدا را شکر نادرست است. 227 00:13:51,980 --> 00:13:56,220 و این زمان بیش از حد من به ظاهر اهمیتی به خاطر داشته باشید آنچه را که کاربر در تایپ 228 00:13:56,220 --> 00:14:00,050 زیرا توجه داشته باشید که هیچ N متغیر است، پس در واقع، یک دروغ کوچک سفید وجود دارد. 229 00:14:00,050 --> 00:14:03,290 >> عملکرد برنامه کمی متفاوت است، هنگامی که ما به پایین از آن را دریافت کنید 230 00:14:03,290 --> 00:14:04,960 چون من به خاطر سپردن آنچه N است. 231 00:14:04,960 --> 00:14:09,120 اما من می خواستم برای نشان دادن بیش از حد است که حتی اگر ما دیده ایم GetInt 232 00:14:09,120 --> 00:14:13,780 و GetString که در سمت راست استفاده می شود برابر است نشانه ای تا کنون 233 00:14:13,780 --> 00:14:17,310 به طوری که ما به یاد داشته باشید ارزش، مشخصات فنی، که به شدت ضروری نیست. 234 00:14:17,310 --> 00:14:20,290 اگر به هر دلیلی شما اهمیتی نمی دهند مقدار را به صرفه جویی در، 235 00:14:20,290 --> 00:14:25,540 شما فقط می خواهم به بررسی ارزش، توجه داشته باشید که ما به سادگی می توانید به نوشتن این GetInt، 236 00:14:25,540 --> 00:14:27,320 پرانتز باز، پرانتز نزدیک. 237 00:14:27,320 --> 00:14:30,570 که تابع در حال رفتن به یک مقدار را برگرداند، گفته ایم. 238 00:14:30,570 --> 00:14:32,220 این به شما بین المللی است. 239 00:14:32,220 --> 00:14:34,460 بنابراین اگر شما روانی از این اتفاق می افتد فکر می کنم، 240 00:14:34,460 --> 00:14:38,190 زمانی که من در 99 نوع، GetInt شماره 99 را بر می گرداند، 241 00:14:38,190 --> 00:14:41,840 و به همین ترتیب مفهومی، آن را به عنوان اینکه کد من در واقع این است. 242 00:14:41,840 --> 00:14:45,950 بنابراین اگر 99 است که در واقع بزرگتر از 0 باشد، پس از آن خدا را شکر درست می شود، 243 00:14:45,950 --> 00:14:50,810 سپس خط 25 متوجه آه، ما در حال انجام می شود چون من در حال حاضر خدا را شکر، 244 00:14:50,810 --> 00:14:53,970 و در خط 26، ما به سادگی، می گویند: "با تشکر برای عدد صحیح مثبت!" 245 00:14:53,970 --> 00:14:55,960 هر آنچه در آن رخ داده است. 246 00:14:55,960 --> 00:14:59,140 در حال حاضر قند کمی نحوی را در اینجا اجازه دهید، پس به صحبت می کنند. 247 00:14:59,140 --> 00:15:04,670 بیایید ببینیم که اگر ما می توانیم پاک کردن این خط 25 با این نوع سوم و نهایی در positive3. 248 00:15:04,670 --> 00:15:13,600 >> توجه داشته باشید که تنها تفاوت در حال حاضر آن چیزی است که خط از کد؟ >> [دانشجو] 25. >> [مالان] آره، 25. 249 00:15:13,600 --> 00:15:17,680 و ما واقعا دیده نمی شود این ترفند فقط رتبهدهی نشده است، اما ما متوجه نقطه علامت تعجب در روز دوشنبه، 250 00:15:17,680 --> 00:15:21,070 که بیانگر گزینه ای است که پاسخ دادن به چه؟ >> [دانشجو] نیست. >> و یا نفی نیست. 251 00:15:21,070 --> 00:15:23,510 بنابراین یک مقدار بولی و ارزش خود را به تلنگر. 252 00:15:23,510 --> 00:15:25,810 واقعی می شود نادرست است، نادرست می شود درست است. 253 00:15:25,810 --> 00:15:30,420 بنابراین، پیشنهاد میکنم، حتی یک کمی بیشتر بصری راه نوشتن کد 254 00:15:30,420 --> 00:15:33,430 چرا که من هنوز هم خدا را شکر مقداردهی اولیه را به نادرست، من هنوز زیر را انجام دهید، 255 00:15:33,430 --> 00:15:36,010 من مجموعه خدا را شکر درست هنگامی که زمان می آید، 256 00:15:36,010 --> 00:15:40,880 اما در حال حاضر شما واقعا می تواند فقط این کد شفاهی چپ به راست ترجمه، 257 00:15:40,880 --> 00:15:45,630 در حالی که (خدا را شکر!) به دلیل انفجار و یا علامت تعجب بیانگر گزینه ای است که پاسخ دادن به آن مفهوم نیست، 258 00:15:45,630 --> 00:15:47,580 بنابراین در حالی که خدا را شکر. 259 00:15:47,580 --> 00:15:49,900 تا دوباره، ما را به مفاهیم جدید در هر SE معرفی شده است. 260 00:15:49,900 --> 00:15:53,730 ما در مورد Booleans صحبت زمانی که ما با ابتدا بازی، 261 00:15:53,730 --> 00:15:56,720 اما متوجه در حال حاضر ما فقط می توانید شروع به نوشتن کد خود را در راه های مختلف. 262 00:15:56,720 --> 00:16:01,060 بنابراین به خصوص در pset1 اگر شما مرتب کردن بر اساس تلاش برای کشف کردن راهی برای نوشتن برخی از برنامه های، 263 00:16:01,060 --> 00:16:04,340 شانس شما را در شانس هستید، آنجا که می تواند هر تعداد راه حل وجود دارد 264 00:16:04,340 --> 00:16:06,110 که شما می توانید بر اساس اتفاق می افتد. 265 00:16:06,110 --> 00:16:10,500 به عنوان مثال، این است که فقط 3 حتی ساده ترین برنامه های. بسیار خوب. 266 00:16:10,500 --> 00:16:14,200 و در حال حاضر در روز دوشنبه ما در این یادداشت با مقادیر بازگشتی را ترک یاد. 267 00:16:14,200 --> 00:16:18,450 بنابراین برای اولین بار نوشت: برنامه ای است که نه تنها اصلی؛ 268 00:16:18,450 --> 00:16:22,550 آن را نیز تابع سفارشی خود را دارد که من نوشتم اینجا. 269 00:16:22,550 --> 00:16:26,810 بنابراین در خط 31 از طریق 34 من پیاده سازی یک تابع مکعب است. 270 00:16:26,810 --> 00:16:30,240 این مجتمع نیست. این فقط یک * A * A در این مورد. 271 00:16:30,240 --> 00:16:34,750 اما آنچه مهم است در مورد آن این است که من در نظر گرفتن ورودی در فرم 272 00:16:34,750 --> 00:16:39,180 و من بازگشت به خروجی در قالب * A *. 273 00:16:39,180 --> 00:16:43,560 بنابراین در حال حاضر من از این توانایی، بسیار شبیه به من با prinf به تنهایی استفاده می شود، 274 00:16:43,560 --> 00:16:47,240 برای فراخوانی این تابع با فراخوانی تابع مکعب است. 275 00:16:47,240 --> 00:16:51,970 >> و تابع مکعب طول می کشد برخی از ورودی، و تابع مکعب برخی از خروجی را بر می گرداند. 276 00:16:51,970 --> 00:16:56,960 در مقابل، printf فقط به چیزی. 277 00:16:56,960 --> 00:17:00,840 این چیزی است که ما در مورد مراقبت بر نمی گرداند، حتی اگر به عنوان یک به کنار آن یک مقدار را برگرداند؛ 278 00:17:00,840 --> 00:17:03,110 شما فقط به طور کلی آن را نادیده گرفت. 279 00:17:03,110 --> 00:17:06,510 Printf فقط به چیزی. اما در هر حال یک عارضه جانبی از چاپ به روی صفحه نمایش است. 280 00:17:06,510 --> 00:17:11,770 در مقابل در اینجا، ما باید تابع مکعب، که در واقع چیزی را برمی گرداند. 281 00:17:11,770 --> 00:17:15,520 بنابراین برای کسانی که آشنا با این، آن را یک ایده نسبتا سر راست است. 282 00:17:15,520 --> 00:17:19,640 اما برای کسانی که آشنایی کمتری با این ایده عبور از در ورودی و گرفتن خروجی، 283 00:17:19,640 --> 00:17:21,950 بیایید سعی کنیم فقط به چیزی فوق العاده ساده. 284 00:17:21,950 --> 00:17:25,490 هر کسی راحت بالا آمدن بر روی صحنه به طور خلاصه؟ 285 00:17:25,490 --> 00:17:28,040 شما به راحتی با یک دوربین بر روی شما به عنوان خوب. آره؟ باشه. 286 00:17:28,040 --> 00:17:31,240 نام شما؟ >> [دانشجوی] کن. >> کن. بسیار خوب. کن، بیا تا. 287 00:17:31,240 --> 00:17:35,050 کن است برای رفتن به یک تابع انواع. 288 00:17:35,050 --> 00:17:38,720 اجازه دهید به جلو بروید و این کار. بیایید فانتزی کوچک. 289 00:17:38,720 --> 00:17:42,260 از ملاقات شما خوشبختم. به مرکز صحنه خوش آمدید. بسیار خوب. 290 00:17:42,260 --> 00:17:46,640 بیایید آمار این دکمه در اینجا. بسیار خوب. 291 00:17:46,640 --> 00:17:49,820 بنابراین در اینجا شما باید یک تخته مدرن، 292 00:17:49,820 --> 00:17:53,470 و آنچه که من تابع اصلی است، برای مثال، 293 00:17:53,470 --> 00:17:56,460 و من اپل در دست من نیست. 294 00:17:56,460 --> 00:17:59,710 >> من واقعا به یاد داشته باشید چگونه به - خب، من می توانم که می گویند نیست. 295 00:17:59,710 --> 00:18:02,480 من واقعا نمی دستخط خوب، 296 00:18:02,480 --> 00:18:05,520 و بنابراین من می خواهم شما را به چیزی بر روی صفحه نمایش برای من نسخه قابل چاپ. 297 00:18:05,520 --> 00:18:12,040 من برنامه اصلی، و من قصد دارم به شما می گویم این 298 00:18:12,040 --> 00:18:16,720 با نوشتن آن در ابتدا مرغ من و پس از آن عبور شما ورودی است. 299 00:18:16,720 --> 00:18:20,400 خیلی احمقانه است اگر این تمرین، مفهوم توابع و فراخوانی یک تابع 300 00:18:20,400 --> 00:18:22,400 و بازگشت عملکرد واقعا جوش را به این. 301 00:18:22,400 --> 00:18:26,260 من اصلی، من فقط printf، نقل قول، نقل قول را تمام کردن چیزی بر روی صفحه نمایش نوشته شده است، 302 00:18:26,260 --> 00:18:29,110 من در حال اجرا این برنامه، و به محض printf می شود به نام، 303 00:18:29,110 --> 00:18:32,880 یک آرگومان و یا یک پارامتر گاهی بین کوتیشن ها طول می کشد. 304 00:18:32,880 --> 00:18:35,880 در اینجا این است که استدلال است. من آن عبور کن. 305 00:18:35,880 --> 00:18:39,020 او یک جعبه سیاه نوشته شده است از چند سال قبل است 306 00:18:39,020 --> 00:18:41,510 که ظاهرا تنها می داند که چگونه به چاپ بر روی صفحه نمایش است. 307 00:18:41,510 --> 00:18:43,150 بنابراین اجرا کند. 308 00:18:49,280 --> 00:18:51,280 که بد نیست. بسیار خوب است. 309 00:18:51,280 --> 00:18:55,510 بنابراین در حال حاضر کن که انجام شده است به اجرا. آیا او باید به من هر چیزی دست به عقب؟ 310 00:18:55,510 --> 00:18:57,470 نه این که ما تا کنون دیده ایم. 311 00:18:57,470 --> 00:19:00,460 باز هم، printf می کند در واقع یک شماره، بازگشت، اما ما قصد داریم که در حال حاضر به چشم پوشی 312 00:19:00,460 --> 00:19:03,470 از آنجا که ما از آن استفاده می شود هرگز. به طوری که آن را برای کن. 313 00:19:03,470 --> 00:19:08,580 و بنابراین در حال حاضر طول می کشد بیش از کنترل برنامه را دوباره 314 00:19:08,580 --> 00:19:11,060 چرا که خط از کد، printf، انجام شده است اجرا شده است. 315 00:19:11,060 --> 00:19:14,050 و ما در مورد راه ما، اجرای هر آنچه که دیگر از خطوط وجود دارد. 316 00:19:14,050 --> 00:19:17,320 بنابراین در حال حاضر سعی کنید یک مثال کمی متفاوت به شما اجازه می دهد تا. 317 00:19:17,320 --> 00:19:24,940 این بار در اینجا برای اولین بار روشن روی صفحه نمایش به شما اجازه می دهد، و این بار ما می خواهیم از تابع cubing انجام، 318 00:19:24,940 --> 00:19:27,080 اما این بار، من انتظار دارم یک مقدار خروجی است. 319 00:19:27,080 --> 00:19:29,180 >> پس جلو بروید و اجازه دهید این کار را انجام. 320 00:19:29,180 --> 00:19:35,790 در حال حاضر من یک خط از کد را که می گوید: X می شود مکعب X است. 321 00:19:41,370 --> 00:19:46,370 خط از کد، فراخوان، به نظر می رسد، مثل این: x = مکعب (x)؛ 322 00:19:46,370 --> 00:19:50,930 پس چگونه است که این رفتن به محل کار؟ اجازه دهید به جلو بروید و به شما یک صفحه سفید را دوباره. 323 00:19:50,930 --> 00:19:54,070 من می خواهم برای نوشتن مقدار x، 324 00:19:54,070 --> 00:20:01,400 که در این لحظه در زمان اتفاق می افتد، اجازه دهید می گویند، 2 تا آن را ساده نگه دارید. 325 00:20:01,400 --> 00:20:06,150 من آن را بر روی یک تکه کاغذ ارزش 2 است، که مقدار x من نوشته شده است. 326 00:20:06,150 --> 00:20:10,920 من از آن دست کن. >> و من فقط پاسخ ارسال کنم؟ >> آره، بیایید تنها به نوشتن پاسخ. 327 00:20:12,760 --> 00:20:18,940 باشه. و هم اکنون از او چیزی به من بازگشت. کامل. نیس اش Segue. 328 00:20:18,940 --> 00:20:23,120 بنابراین در حال حاضر او به من دست ارزش 8 در این مورد، و آنچه را می توانم با آن انجام دهید؟ 329 00:20:23,120 --> 00:20:28,250 در واقع - بیایید ببینید، این حق را دریافت کنید. چه هستم من را با آن انجام دهید؟ 330 00:20:28,250 --> 00:20:33,440 حالا من قصد دارم به این مقدار و در واقع آن را در آن بیت در حافظه ذخیره. 331 00:20:33,440 --> 00:20:35,170 اما متوجه من از نوع مبارزه در اینجا. 332 00:20:35,170 --> 00:20:38,210 من کمی گیج شده زیرا که در آن به کار من در واقع مقدار x، 333 00:20:38,210 --> 00:20:43,150 زیرا آنچه من فقط از لحاظ جسمی دست کن یک تکه کاغذ است که تا به حال مقدار 2 است، 334 00:20:43,150 --> 00:20:46,590 که X بود، و در واقع، که دقیقا چه اتفاقی افتاده است. 335 00:20:46,590 --> 00:20:50,210 پس از آن معلوم می کند که هنگامی که با شما تماس تابع و شما را در بحث عبور 336 00:20:50,210 --> 00:20:53,290 مانند سلام، جهان یا شما را در استدلال مانند 2 منتقل می کند، 337 00:20:53,290 --> 00:20:57,110 به طور کلی، شما در حال عبور در یک کپی از آن بحث شده است. 338 00:20:57,110 --> 00:21:00,730 و به این ترتیب همانطور که من نوشت شماره 2 در اینجا و آن را به دست کن، 339 00:21:00,730 --> 00:21:04,720 است که باید به این معنی است که من هنوز یک کپی از مقدار 2 در جایی 340 00:21:04,720 --> 00:21:08,890 زیرا در واقع، در حال حاضر که من بدست ارزش 8، من باید برای رفتن به RAM 341 00:21:08,890 --> 00:21:12,130 و در واقع نوشتن 8 که در آن من یک بار تا به حال شماره 2. 342 00:21:12,130 --> 00:21:16,950 بنابراین بصری، به یاد داشته باشید این مفهوم عبور، به معنای واقعی کلمه، یک کپی از مقدار است. 343 00:21:16,950 --> 00:21:20,780 >> کن می کند چیزی که خود را، به من دست چیزی - در این مورد، یک مقدار مانند 8 - 344 00:21:20,780 --> 00:21:24,980 و سپس من را مجبور به انجام چیزی که با ارزش اگر من می خواهم به آن را نگه دارید. 345 00:21:24,980 --> 00:21:29,650 پس از این خواهد آمد برگشت به بیش از حد قبل از اینکه طولانی آشنا. 346 00:21:29,650 --> 00:21:34,920 از شما بسیار سپاسگزارم برای این دمو در اینجا کن. [تشویق حضار] 347 00:21:34,920 --> 00:21:36,920 خیلی خوب انجام می شود. 348 00:21:36,920 --> 00:21:42,690 بیایید ببینید که چگونه است که در نهایت به برخی از تابع فراخوانی شده ایم که انجام شده است در اینجا. 349 00:21:42,690 --> 00:21:47,910 اجازه بدهید من به جلو بروید و آن را با ما بازگشت به cubing به عنوان مثال در اینجا. 350 00:21:47,910 --> 00:21:53,300 توجه کنید که اگر ما می خواهیم به واقع شروع به مصرف این بیشتر، 351 00:21:53,300 --> 00:21:57,570 ما قصد داریم باید آگاه از این واقعیت که عدد X است که در اینجا به تصویب رسید 352 00:21:57,570 --> 00:22:01,530 متفاوت است از آنچه که در واقع در حال به تابع منتقل می. 353 00:22:01,530 --> 00:22:05,880 پس باز هم، این تصویب شده توسط نسخه در حال رفتن به تبدیل شدن فقط در یک لحظه کاملا وابسته است. 354 00:22:05,880 --> 00:22:09,580 بیایید یک نگاهی به چیزی می کند که کاملا کار نمی کند هنوز. 355 00:22:09,580 --> 00:22:13,250 من قصد دارم به جلو بروید و باز کردن یک نمونه حشره دار سوم، است که با ماهیت ناقص، 356 00:22:13,250 --> 00:22:18,550 و آن را به نام buggy3 و پیاده سازی یک تابع مبادله است. 357 00:22:18,550 --> 00:22:25,110 در اینجا ما باید یک تابع اصلی است که x و y خودسرانه به 1 و 2 مقداردهی اولیه، به ترتیب. 358 00:22:25,110 --> 00:22:27,700 ما می توانیم GetInt استفاده کنید، اما ما فقط نیاز به یک ورزش ساده، 359 00:22:27,700 --> 00:22:30,170 پس از آن سخت رمزی به عنوان 1 و 2 است. 360 00:22:30,170 --> 00:22:35,340 در خطوط 21 و 22، ظاهرا از چاپ X و Y، 1 در هر خط. 361 00:22:35,340 --> 00:22:39,720 سپس در خط 23، من ادعا می کنند من مبادله این ارزش ها، نقطه، نقطه، نقطه. 362 00:22:39,720 --> 00:22:44,170 ظاهرا من به یک تابع در خط 24 به اصطلاح مبادله است که طول می کشد 2 استدلال است. 363 00:22:44,170 --> 00:22:48,300 کاملا قانونی توابع را به 2 استدلال شده است. ما دیده ایم printf آن را انجام دهد در حال حاضر. 364 00:22:48,300 --> 00:22:51,830 >> بنابراین مبادله ظاهرا طول می کشد X و Y، و به عنوان نام آن نشان می دهد، 365 00:22:51,830 --> 00:22:54,670 من امیدوارم که آن را برای رفتن به تعویض این 2 مقدار. 366 00:22:54,670 --> 00:23:00,090 تا بعد من در خط ادعا می کنند 25 "تعویض! x و y و من چاپ 367 00:23:00,090 --> 00:23:03,070 با این فرض که آنها در واقع جابجا شده است. 368 00:23:03,070 --> 00:23:06,080 اما اگر من در واقع اجرای این برنامه - به من اجازه باز کردن یک پنجره ترمینال، 369 00:23:06,080 --> 00:23:09,860 buggy3 را به من - به عنوان نام نشان می دهد، این است که قصد ندارم برای پایان دادن به خوب 370 00:23:09,860 --> 00:23:15,770 زیرا زمانی که من ضربه را وارد کنید، توجه کنید که X است 1، y 2، 371 00:23:15,770 --> 00:23:19,420 و در عین حال در پایان این برنامه، آنها هنوز هم، در حقیقت، همان است. 372 00:23:19,420 --> 00:23:22,960 بر اساس تظاهرات فقط در حال حاضر با کن، آنچه در واقع در؟ 373 00:23:22,960 --> 00:23:28,710 بیایید شیرجه رفتن به این تابع swap. این فوق العاده کوتاه است. این فقط چند خط کد در طولانی مدت. 374 00:23:28,710 --> 00:23:34,520 اما آنچه مشکل اساسی بر اساس داستان ساده گفت: تا اینجا با کن؟ 375 00:23:34,520 --> 00:23:36,670 مبادله چرا شکسته؟ 376 00:23:36,670 --> 00:23:39,660 [دانشجو] شما در ذخیره سازی یک کپی، متغیر است. 377 00:23:39,660 --> 00:23:43,980 دقیقا. ما در حال ذخیره یک کپی، خود متغیر نیست. 378 00:23:43,980 --> 00:23:47,170 به عبارت دیگر، مبادله ظاهرا 2 استدلال، بین المللی، طول می کشد 379 00:23:47,170 --> 00:23:49,370 و آن را خودسرانه A و B نامیده می شود، 380 00:23:49,370 --> 00:23:54,420 و در اینجا من در X و Y که به ترتیب 1 و 2 گذشت، 381 00:23:54,420 --> 00:23:58,770 اما من به معنای واقعی کلمه در X گذشت، من به معنای واقعی کلمه در Y عبور 382 00:23:58,770 --> 00:24:01,450 من از گذراندن یک کپی از x و یک کپی از Y است. 383 00:24:01,450 --> 00:24:04,510 تقریبا به عنوان اینکه شما کپی و چسبانده به مبادله 384 00:24:04,510 --> 00:24:07,810 ارزش هایی که شما می خواهید آن را در واقع دستکاری. 385 00:24:07,810 --> 00:24:14,480 بنابراین در صورتی که این مورد، هنگامی که من از آغاز برنامه اجرای خط 35 سپس 36، 386 00:24:14,480 --> 00:24:18,650 زمانی که من به خط 37، در این نقطه در داستان، ارزش چیست؟ 387 00:24:21,040 --> 00:24:25,050 در این نقطه در داستان، خط 37، مقدار یک را در این نقطه چیست؟ >> [دانشجو] 1. 388 00:24:25,050 --> 00:24:29,280 [مالان] این فقط باید 1، حق، چرا که X به عنوان آرگومان اول به تصویب رسید، 389 00:24:29,280 --> 00:24:33,080 و این تابع فقط خودسرانه فراخوانی آرگومان اول آن است. 390 00:24:33,080 --> 00:24:38,200 به طور مشابه Y استدلال دوم، و آن را فقط خودسرانه خواستار B آرگومان دوم. 391 00:24:38,200 --> 00:24:40,990 >> این دوگانگی است که در واقع نسبتا به سادگی توضیح داده شده است. در مورد آن فکر کنید. 392 00:24:40,990 --> 00:24:43,320 هیچ یک از ما را ملاقات کرده اید کسی که نوشت printf، 393 00:24:43,320 --> 00:24:50,770 مطمئنا، او هیچ ایده چه چیزی متغیر ما به 30 سال بعد می رویم به نام. 394 00:24:50,770 --> 00:24:56,650 بنابراین به تمایز بین آنچه با شما تماس متغیر در توابع شما نوشتن وجود دارد 395 00:24:56,650 --> 00:25:02,080 و چه با شما تماس متغیر در توابع شما تماس و یا با استفاده از. 396 00:25:02,080 --> 00:25:05,340 بنابراین به عبارت دیگر، من که متغیرهای من به عنوان x و y نوشته شده است، 397 00:25:05,340 --> 00:25:08,890 اما اگر شخص دیگری تابع swap نوشته شده بود، او قطعا نه می دانم 398 00:25:08,890 --> 00:25:10,690 آنچه متغیر من در حال رفتن به آن می شود، 399 00:25:10,690 --> 00:25:13,830 به طوری که این است که چرا شما این دوگانگی از نام تحقق بخشند. 400 00:25:13,830 --> 00:25:16,750 با مشخصات فنی، من می توانم این کار را بر حسب تصادف انجام دهید، 401 00:25:16,750 --> 00:25:20,080 اما آنها هنوز هم به عنوان کپی می شود منتقل می شود. 402 00:25:20,080 --> 00:25:23,650 این فقط یک تصادف محض باشد زیبا و در صورتی که کسی که نوشت مبادله 403 00:25:23,650 --> 00:25:26,150 همان نام استفاده کرده اند. 404 00:25:26,150 --> 00:25:32,370 بنابراین در این نقطه در داستان، خط 37، 1 است، ب 2 است، و در حال حاضر من اقدام به تعویض آنها است. 405 00:25:32,370 --> 00:25:34,900 اول از همه، اجازه دهید من در واقع این کار را بسیار ساده تر است. 406 00:25:34,900 --> 00:25:36,690 من نمی دانم آنچه در آن 3 خط کد انجام می دهند. 407 00:25:36,690 --> 00:25:41,210 اجازه دهید من فقط این است: B =، A = B، انجام می شود. 408 00:25:41,210 --> 00:25:44,690 چرا این شکسته، منطقی است؟ 409 00:25:46,490 --> 00:25:48,900 این نوع از چیزی که بصری است، درست است؟ 410 00:25:48,900 --> 00:25:52,560 بنابراین A و B می شود و B می شود، 411 00:25:52,560 --> 00:25:57,730 اما مشکل این است که به زودی به عنوان خط 37 اجرا، مقدار A و B چه؟ 412 00:25:57,730 --> 00:26:03,410 همان، 1، زیرا شما clobbered، پس به صحبت می کنند، شما تغییر B برابر است. 413 00:26:03,410 --> 00:26:08,890 پس یک بار خط 37 را اعدام کرده است، که، شما در حال حاضر 2 نسخه شماره 1 414 00:26:08,890 --> 00:26:13,350 در داخل این تابع، پس هنگامی که شما در خط 38 می گویند A = B، 415 00:26:13,350 --> 00:26:17,640 شما نوع پیچ است زیرا شما فقط اختصاص 1 تا 1 است. 416 00:26:17,640 --> 00:26:20,580 شما به نوعی ارزش شما در مورد مراقبت از دست داده است. 417 00:26:20,580 --> 00:26:23,220 بنابراین در نسخه اصلی از این، متوجه آنچه که من انجام داد. 418 00:26:23,220 --> 00:26:26,850 من به جای یک خط سوم از کد که شبیه این. 419 00:26:26,850 --> 00:26:28,580 من اعلام یک متغیر موقت است. 420 00:26:28,580 --> 00:26:32,170 >> TMP یک نام بسیار معمول است برای یک متغیر موقت است، و آن را از نوع int 421 00:26:32,170 --> 00:26:34,580 به دلیل آن است برای مطابقت با آنچه که من می خواهم برای ایجاد یک کپی از. 422 00:26:34,580 --> 00:26:39,770 من ذخیره سازی کپی از داخل TMP، به طوری یک بار در خط 37 را اعدام کرده است، 423 00:26:39,770 --> 00:26:45,860 ارزش است - بررسی سلامت عقل سریع - 1، ارزش ب 2 است، 424 00:26:45,860 --> 00:26:48,970 و ارزش TMP است 1. 425 00:26:48,970 --> 00:26:52,060 بنابراین در حال حاضر من اجرای خط 38. 426 00:26:52,060 --> 00:27:00,540 هنگامی که خط 38 اجرا، طول می کشد در ارزش ب. و B 2 بود، به طوری که در حال حاضر 2. 427 00:27:00,540 --> 00:27:05,210 بنابراین در این نقطه در داستان، 2، B 2 است، و TMP است: 1. 428 00:27:05,210 --> 00:27:11,060 بنابراین در حال حاضر منطقی است، ما می تواند ارزش فقط TMP با صدای تلپ به B است و ما در حال انجام می شود. 429 00:27:11,060 --> 00:27:12,800 بنابراین، ما این مشکل را حل شده است. 430 00:27:12,800 --> 00:27:17,720 متاسفانه، زمانی که من برای اجرای این برنامه در این فرم، آن را واقعا نمی تعویض هر مقدار. 431 00:27:17,720 --> 00:27:20,100 اما برای روشن شود، چرا؟ 432 00:27:23,660 --> 00:27:26,450 من مشکل منطقی از یک لحظه قبل ثابت، 433 00:27:26,450 --> 00:27:31,020 اما باز هم، اگر من برای اجرای این برنامه، X و Y بدون تغییر باقی می ماند 434 00:27:31,020 --> 00:27:33,310 در پایان از اجرای این برنامه است. 435 00:27:33,310 --> 00:27:37,220 [نظر دانش آموز نامفهوم] >> ما چیزی برنگشته است، به طوری که درست است. 436 00:27:37,220 --> 00:27:39,670 اما به نظر می رسد از یک بیت از یک مشکل وجود دارد در اینجا به دلیل تا کنون، 437 00:27:39,670 --> 00:27:44,170 تنها چیزی که ما قادر به بازگشت بوده ام یک چیز است، و این محدودیت از C. 438 00:27:44,170 --> 00:27:49,070 شما فقط می توانید واقعا برگرداندن یک مقدار، که در این صورت من نوع گیر کرده است اینجا 439 00:27:49,070 --> 00:27:53,310 زیرا من می توانم مقدار جدید X یا بازگشت من می تواند مقدار جدید Y بازگشت، 440 00:27:53,310 --> 00:27:55,190 اما من می خواهم هر دو بازگشت. 441 00:27:55,190 --> 00:27:58,650 پس از بازگشت، راه حل ساده نیست. 442 00:27:58,650 --> 00:28:01,710 اما مشکل اساسی این است که چرا؟ چه ما در واقع جابجا شده است؟ 443 00:28:01,710 --> 00:28:04,190 [دانشجوی] A و B است. >> A و B. 444 00:28:04,190 --> 00:28:08,230 اما A و B نسخه از X و Y، که بدین معناست که ما فقط به این کار، 445 00:28:08,230 --> 00:28:11,650 ما فقط 3 دقیقه را صرف صحبت کردن در مورد تابع swap و 3 از این متغیرها، 446 00:28:11,650 --> 00:28:15,420 و این فوق العاده است، کاملا درست است در انزوا، 447 00:28:15,420 --> 00:28:20,740 اما و دامنه ب تنها در این خطوط که در اینجا می باشد. 448 00:28:20,740 --> 00:28:24,790 >> بنابراین درست مانند یک حلقه for، اگر یک عدد صحیح به شما اعلام من در داخل حلقه 449 00:28:24,790 --> 00:28:28,760 به طور مشابه، اگر شما اعلام درون A و B یک تابع است که شما نوشته شده است، 450 00:28:28,760 --> 00:28:33,320 آنها تنها در داخل آن تابع معتبر، که بدین معناست که به زودی به عنوان مبادله انجام شده است اجرای 451 00:28:33,320 --> 00:28:38,470 و ما از خط 24 تا خط 25، X و Y شده اند تغییر نمی کند در تمام. 452 00:28:38,470 --> 00:28:42,790 شما فقط تلف زیادی از زمان مبادله کپی از متغیر. 453 00:28:42,790 --> 00:28:47,010 پس از آن معلوم است که راه حل این است که در واقع غیر آشکار است. 454 00:28:47,010 --> 00:28:50,670 این کاملا کافی برای بازگشت به ارزش ها نمی کند چرا که ما فقط می توانیم بازگشت 1 ارزش، 455 00:28:50,670 --> 00:28:53,470 و من واقعا نمی خواهم به مبادله هر دو X و Y در همان زمان، 456 00:28:53,470 --> 00:28:55,210 بنابراین ما در حال رفتن به برای آمدن به این. 457 00:28:55,210 --> 00:29:01,020 اما در حال حاضر، درک کنند که این مسئله اساسا از این واقعیت است که a و b نسخه مشتق شده است 458 00:29:01,020 --> 00:29:03,630 و آنها را در دامنه خود را. 459 00:29:03,630 --> 00:29:05,050 بیایید سعی کنید برای حل این مشکل در برخی از راه. 460 00:29:05,050 --> 00:29:11,250 اجازه بدهید در واقع حرکت به عقب و باز کردن، اجازه دهید می گویند، یک نوع چهارم از این، buggy4. 461 00:29:11,250 --> 00:29:13,370 در این مورد چه؟ 462 00:29:13,370 --> 00:29:17,810 این یک مشکل مشابه ولی ساده تر در نگاه به قبل از چاقو ما را در حل آن است. 463 00:29:17,810 --> 00:29:24,190 این برنامه به نام افزایش است، و آن ظاهرا یک عدد صحیح X تا 1 در خط 18 مقدار دهی اولیه شده است. 464 00:29:24,190 --> 00:29:28,150 من ادعای X 1 است، من پس از آن ادعا می کنند "ایجاد یک ..." 465 00:29:28,150 --> 00:29:33,730 من پس از آن تماس به افزایش است، اما بعد از آن در خطوط 22 و 23، من ادعا می کنند که از آن شده است افزایش مییابد، 466 00:29:33,730 --> 00:29:40,220 من ادعا X است در حال حاضر هر آنچه در آن است - 2، احتمالا - اما این برنامه دارای اشکال می باشد. 467 00:29:40,220 --> 00:29:42,610 چه مشکل؟ 468 00:29:43,440 --> 00:29:50,160 آره. >> [پاسخ دانش آموز نامفهوم] >> دقیقا. 469 00:29:50,160 --> 00:29:52,490 بنابراین X اعلام شده است، بدیهی است، در خط 18. 470 00:29:52,490 --> 00:29:54,700 این است که در داخل آکولاد اصلی. 471 00:29:54,700 --> 00:29:58,440 بنابراین پاسخ ساده این است که در حالی که X وجود دارد در اینجا، 472 00:29:58,440 --> 00:30:03,930 در خط 32 وجود ندارد، بنابراین این برنامه در واقع حتی نمی خواهد کامپایل. 473 00:30:03,930 --> 00:30:07,940 کامپایلر زمانی که من سعی می کنم جمع آوری این کد به من داد 474 00:30:07,940 --> 00:30:14,100 در مورد برخی از شناسه های اعلام نشده و یا چیزی به آن اثر است. در واقع، اجازه دهید به را امتحان کنید. 475 00:30:14,100 --> 00:30:18,470 این را buggy4. آن است که وجود دارد. 476 00:30:18,470 --> 00:30:22,110 استفاده از 'X' شناسه اعلام نشده در خط 32. 477 00:30:22,110 --> 00:30:25,580 و در واقع، اجازه دهید صریح تر می شود امروز در اینجا به طوری که این بسیار مفید است 478 00:30:25,580 --> 00:30:27,580 در ساعات اداری و در منزل. 479 00:30:27,580 --> 00:30:29,300 >> توجه داشته باشید که آن را کمی cryptically نوشته شده است. 480 00:30:29,300 --> 00:30:37,270 اما این واقعیت است که صدای جرنگ جرنگ است ما فریاد می زدند، گفت: buggy4.c: 32:5 است، در واقع مفید است. 481 00:30:37,270 --> 00:30:42,050 این بدان معنی است که خطا در خط 32 شخصیت در موقعیت 5. 482 00:30:42,050 --> 00:30:46,700 بنابراین 1، 2، 3، 4، 5. که، در واقع، که در آن مشکل است. 483 00:30:46,700 --> 00:30:49,790 و همچنین، بیش از حد، به خاطر داشته باشید در ساعات اداری و در منزل، من خوش شانس در اینجا. 484 00:30:49,790 --> 00:30:52,990 من یک اشتباه است. رفتن به نسبتا آسان به تعمیر. 485 00:30:52,990 --> 00:30:55,990 اما اگر شما یک صفحه کامل از پیام های خطا قریب به اتفاق، 486 00:30:55,990 --> 00:31:00,330 دوباره که یکی از پایین ترین تنها ممکن است علامتی از یکی از بالاترین تحقق بخشند. 487 00:31:00,330 --> 00:31:03,450 بنابراین همیشه تعقیب اشکالات خود را از بالا به پایین 488 00:31:03,450 --> 00:31:05,820 به همین دلیل ممکن است وجود داشته باشد اثر زنجیره ای گل افتاب گردان 489 00:31:05,820 --> 00:31:09,240 است که نشان می دهد شما دچار مشکل راه را بیش از شما در واقع می شود. 490 00:31:09,240 --> 00:31:15,150 پس چگونه می تواند این را حل کنیم اگر هدف من این است که افزایش X؟ >> [دانشجو] X جهانی است. 491 00:31:15,150 --> 00:31:17,060 خوب، بنابراین ما می توانیم X جهانی. 492 00:31:17,060 --> 00:31:20,480 بیایید میانبر است که من در مورد قبل از آن هشدار داد، اما هک، ما فقط نیاز به یک تعمیر سریع، 493 00:31:20,480 --> 00:31:25,730 بنابراین اجازه دهید فقط می گویند نوع int X اینجا. این باعث می شود X جهانی است. 494 00:31:25,730 --> 00:31:31,800 بنابراین در حال حاضر اصلی دسترسی به آن و افزایش دسترسی به آن را دارد، 495 00:31:31,800 --> 00:31:34,110 و اجازه دهید من به جلو بروید و تدوین این در حال حاضر. 496 00:31:34,110 --> 00:31:37,630 را buggy4 را وارد کنید. به نظر می رسد به کامپایل در حال حاضر است. 497 00:31:37,630 --> 00:31:41,230 اجازه اجرا buggy4. و به نظر میرسد در واقع کار. 498 00:31:41,230 --> 00:31:45,150 این یکی از این چیزهایی که به عنوان من می گویم، به عنوان کنم، 499 00:31:45,150 --> 00:31:47,010 من فقط در اینجا انجام می شود، چرا که به طور کلی، 500 00:31:47,010 --> 00:31:50,440 برنامه های ما در حال رفتن به بسیار جالب تر و بسیار طولانی تر از این، 501 00:31:50,440 --> 00:31:56,390 و اگر راه حل خود را به مشکلات زندگی را فقط با قرار دادن تمام متغیرهای در بالای فایل خود را، 502 00:31:56,390 --> 00:31:59,690 بسیار به سرعت انجام برنامه های دریافت horrifically دشوار است برای مدیریت. 503 00:31:59,690 --> 00:32:02,190 سخت تر می شود فکر می کنم تا نام متغیر جدید، 504 00:32:02,190 --> 00:32:05,240 آن سخت تر می شود به درک آنچه که متغیر در حال انجام است، 505 00:32:05,240 --> 00:32:08,460 و غیره به طور کلی، این یک راه حل خوب نیست. 506 00:32:08,460 --> 00:32:10,030 پس این کار را بهتر کنیم. 507 00:32:10,030 --> 00:32:12,160 ما نمی خواهیم که به استفاده از یک متغیر جهانی است. 508 00:32:12,160 --> 00:32:16,240 >> من نمی خواهم به افزایش x، بنابراین من به وضوح می تواند - 509 00:32:16,240 --> 00:32:18,670 در پایان روز، این نوع از یک داستان احمقانه است چرا که ما فقط این کار را - 510 00:32:18,670 --> 00:32:24,450 اما اگر من که در مورد اپراتور نمی دانند و یا اجازه نداشتم آن را در اصلی خود را تغییر دهید، 511 00:32:24,450 --> 00:32:30,730 چه چیز دیگری می توانم کن را اجرا کنم در اینجا این بار نه به مکعب اما به افزایش؟ 512 00:32:31,380 --> 00:32:33,190 چگونه می توانم این چیز را عوض کنم؟ آره. 513 00:32:33,190 --> 00:32:38,480 [دانشجو] عبور در X و سپس بازگشت [نامفهوم] >> خوب، خوب است. 514 00:32:38,480 --> 00:32:41,900 پس چرا در X من نمی منتقل می کند و سپس به جای بازگشت آن، 515 00:32:41,900 --> 00:32:44,870 چرا من نمی توانم، فقط بازگشت X + 1. 516 00:32:44,870 --> 00:32:47,710 زن و شوهر بیشتر چیزهایی که برای تغییر در اینجا. من در مسیر درست هستم. 517 00:32:47,710 --> 00:32:49,770 چه چیز دیگری می توانم نیاز به نیشگون گرفتن و کشیدن؟ شخص دیگری. آره. 518 00:32:49,770 --> 00:32:51,740 [پاسخ دانش آموز نامفهوم] 519 00:32:51,740 --> 00:32:54,730 من نیاز به تغییر نوع بازگشت از افزایش به دلیل آن را از درجه اعتبار ساقط است. 520 00:32:54,730 --> 00:32:57,780 خالی هیچ چیز بدان معنی است که بازگردانده می شود، اما به وضوح در حال حاضر آن است که، 521 00:32:57,780 --> 00:32:59,830 بنابراین این نیاز به تغییر - >> [دانشجو] int است. 522 00:32:59,830 --> 00:33:02,740 نوع int با هر آنچه من در واقع بازگشت سازگار باشد. 523 00:33:02,740 --> 00:33:05,180 در حال حاضر چیز دیگری است که هنوز هم حشره دار اینجا کلیک کنید. آره. 524 00:33:05,180 --> 00:33:08,400 [پاسخ دانش آموز نامفهوم] >> [مالان] بنابراین من نیاز به افزایش X؟ 525 00:33:08,400 --> 00:33:12,080 [پاسخ دانش آموز نامفهوم] >> [مالان] آه، بنابراین من نیاز به تصویب X است. 526 00:33:12,080 --> 00:33:16,660 بنابراین من نیاز به انجام این کار در اینجا. >> [نظر دانش آموز نامفهوم] 527 00:33:16,660 --> 00:33:20,050 [مالان] نمونه، من مجبور به تغییر این تا اینجا. 528 00:33:20,050 --> 00:33:22,930 بنابراین این برای تبدیل شدن به یک بین المللی، این برای تبدیل شدن به - 529 00:33:22,930 --> 00:33:25,620 HMM، من در واقع یک اشکال اینجا کلیک کنید. اجازه بدهید رفع این مشکل یکی از اولین. 530 00:33:25,620 --> 00:33:29,590 چه باید از این واقع می شود؟ باید به یک چیزی از نوع int است. 531 00:33:29,590 --> 00:33:32,700 این می تواند x، اما صادقانه بگویم، اگر شما شروع به دعوت از همه از شما متغیر X، 532 00:33:32,700 --> 00:33:35,390 آن را کمتر و کمتر روشن است که برای به دست آوردن. 533 00:33:35,390 --> 00:33:39,560 >> پس اجازه دهید فقط خودسرانه یک قرارداد نامگذاری مختلف برای توابع یاور من را انتخاب کنید، 534 00:33:39,560 --> 00:33:41,940 توابع من نوشتن. ما می خواهیم آن را، و یا ما می تواند از آن تماس بگیرید - 535 00:33:41,940 --> 00:33:45,010 بیایید آن را شماره حتی بیشتر آشکار می شود. 536 00:33:45,010 --> 00:33:47,560 تا بعد من مجبور به بازگشت هر چه تعداد به علاوه 1، 537 00:33:47,560 --> 00:33:50,740 و در حال حاضر من مجبور به تغییر 1 چیز دیگری در اینجا و یک چیز دیگر اینجا. 538 00:33:50,740 --> 00:33:54,350 چه می توانم در خط 21 اولین تغییر؟ >> [پاسخ دانش آموز نامفهوم] 539 00:33:54,350 --> 00:33:57,610 [مالان] من باید آن را اختصاص به X است. من فقط می توانید تماس بگیرید افزایش (x). 540 00:33:57,610 --> 00:34:01,960 من باید به خاطر داشته باشید پاسخ با تغییر مقدار x در سمت چپ. 541 00:34:01,960 --> 00:34:04,680 و حتی اگر X است که در حال حاضر در سمت چپ و راست، که کاملا خوب است 542 00:34:04,680 --> 00:34:08,860 زیرا سمت راست اول اجرا می شود و سپس می شود plopped به چیزی دست چپ - 543 00:34:08,860 --> 00:34:10,600 X در این مورد. 544 00:34:10,600 --> 00:34:12,159 و پس از آن در نهایت، این مشکل آسان است در حال حاضر. 545 00:34:12,159 --> 00:34:17,230 این فقط باید آنچه پایین، شماره هوشمند مطابقت داشته باشد. 546 00:34:17,230 --> 00:34:20,570 بنابراین یک دسته کامل از تغییرات عملکرد واقعا احمقانه 547 00:34:20,570 --> 00:34:24,420 اما نماینده از چیزهایی است که ما به طور فزاینده ای می خواهید انجام دهید. 548 00:34:24,420 --> 00:34:27,090 بنابراین buggy4 کند. من پیچ تا جایی. 549 00:34:27,090 --> 00:34:30,139 آه، خدای من. پنج اشتباه در یک برنامه خط 6. 550 00:34:30,139 --> 00:34:35,690 بنابراین چه در خط 18، شخصیت 5؟ 551 00:34:35,690 --> 00:34:39,610 بنابراین من باید به این هوشمند، اعلام. 552 00:34:39,610 --> 00:34:41,920 اجازه دهید را ببینید. یک دسته کامل از خطاهای دیگر وجود دارد. 553 00:34:41,920 --> 00:34:47,010 آه، خدای من - 19، 18، 21 - اما دوباره، اجازه دهید فقط پاک کردن صفحه نمایش، L کنترل در اینجا، 554 00:34:47,010 --> 00:34:49,380 و تکرار صدای جرنگ جرنگ. 555 00:34:49,380 --> 00:34:51,340 تا 5 مشکلات است در واقع درست است که 1. 556 00:34:51,340 --> 00:34:57,520 بنابراین در حال حاضر اجرا buggy4 را وارد کنید. صدای سوت حاکی از حیرت یا تحسین، x افزایش مییابد به درستی شده است. 557 00:34:57,520 --> 00:35:02,720 بسیار خوب. هر گونه سوال در مورد چگونه به افزایش تعداد؟ آره. 558 00:35:02,720 --> 00:35:09,870 [سوال دانش آموز نامفهوم] >> سوال خوب. 559 00:35:09,870 --> 00:35:14,220 چگونه است که من فقط می تواند تغییر X به تعداد و برنامه بلافاصله می دانید؟ 560 00:35:14,220 --> 00:35:16,200 >> باز هم، آن را به عنوان این انتزاع فکر می کنم. 561 00:35:16,200 --> 00:35:21,600 بنابراین اگر من اصلی و کن افزایش است، رک و پوست کنده، من اهمیتی نمی دهند چه کن اپل می نامد خود را. 562 00:35:21,600 --> 00:35:26,570 من اهمیتی نمی دهند چه او خواستار چیزی است که با اجرای خود را از این قابلیت انجام دهد. 563 00:35:26,570 --> 00:35:33,340 این جزئیات پیاده سازی است که من، اصلی، لازم نیست در مورد مراقبت است. 564 00:35:33,340 --> 00:35:38,250 و به این ترتیب به سادگی آن را در حال تغییر به طور مداوم در داخل تابع - شماره اینجا و شماره در اینجا - 565 00:35:38,250 --> 00:35:40,960 تمام طول می کشد تا زمانی که من کامپایل مجدد شده است. 566 00:35:40,960 --> 00:35:44,180 این نوعی مانند اگر شما فکر می کنم بسیاری از ما، کسانی که از شما با گواهی نامه ی رانندگی 567 00:35:44,180 --> 00:35:46,770 که رانده شده و یا اگر شما حتی در یک ماشین هدایت می شود، 568 00:35:46,770 --> 00:35:50,950 بسیاری از ما هیچ تصوری از اینکه چگونه یک ماشین با این نسخهها کار در قسمت پایین هود. 569 00:35:50,950 --> 00:35:54,970 و به معنای واقعی کلمه، اگر شما برای باز کردن هود، بسیاری از ما - از جمله خود من - 570 00:35:54,970 --> 00:35:56,940 قرار نیست واقعا می دانید به آنچه که ما در حال نگاه کردن به، 571 00:35:56,940 --> 00:35:59,220 نوع از مثل شما ممکن است با چیزهای مثل این حق را احساس کن. 572 00:35:59,220 --> 00:36:01,480 اما ما واقعا نمی باید به مراقبت از خودرو چگونه کار می کند، 573 00:36:01,480 --> 00:36:05,970 ما لازم نیست که به مراقبت از آنچه را که همه از میله و پیستون ها و کابل های داخل ماشین 574 00:36:05,970 --> 00:36:08,160 در واقع انجام می دهند. 575 00:36:08,160 --> 00:36:12,770 بنابراین چیزی شبیه به آنچه که با شما تماس پیستون در اینجا در این مورد مهم نیست. همین ایده است. 576 00:36:12,770 --> 00:36:25,300 آره. >> [سوال دانش آموز نامفهوم] 577 00:36:25,300 --> 00:36:29,180 اگر استفاده می کند بیش از لحظه ای متغیر XA قبل وجود دارد، 578 00:36:29,180 --> 00:36:32,150 شما، برنامه نویس، می باید در همه جا به آنها را تغییر دهید. 579 00:36:32,150 --> 00:36:36,600 یا شما به معنای واقعی کلمه می تواند فایل، منو، انجام دهد و سپس پیدا کردن، جایگزین - چیزی شبیه به آن - 580 00:36:36,600 --> 00:36:39,170 اما شما باید برای ایجاد این تغییرات خود را در حال رفتن به. 581 00:36:39,170 --> 00:36:47,450 شما باید سازگار باشد. >> [دانشجو] اگر متغیرهای چند گانه وجود دارد [نامفهوم] 582 00:36:47,450 --> 00:36:53,100 منظور خاصی مانند اینجا، اگر این INT تعداد دیگری؟ >> [دانشجو] گزارش خطای. 583 00:36:53,100 --> 00:36:56,590 [مالان] آره. ترتیب مهم است هنگامی که شما در حال فراخوانی تابع است. 584 00:36:56,590 --> 00:37:00,050 >> بنابراین اگر من خواستار افزایش در اینجا با چیزی کاما از هم، 585 00:37:00,050 --> 00:37:01,680 نقشه برداری مستقیم وجود دارد. 586 00:37:01,680 --> 00:37:05,690 متغیر اول، هر آنچه نامیده می شود، ساخته شده است یک کپی از این استدلال برای اولین بار در اینجا. 587 00:37:05,690 --> 00:37:07,760 متأسفم. این باید یک پرانتز. 588 00:37:07,760 --> 00:37:11,490 خط های آرگومان دوم را با یک دوم است. بنابراین سفارش، بله، مهم نیست. بسیار خوب. 589 00:37:11,490 --> 00:37:17,020 متأسفم. من در زمان راه طولانی برای رسیدن به آنجا. سوال دیگر؟ بسیار خوب. 590 00:37:17,020 --> 00:37:20,610 بنابراین اگر ما می توانیم تصویری از آنچه در واقع در اینجا رنگ نیست 591 00:37:20,610 --> 00:37:23,090 در قسمت پایین هود، پس به صحبت می کنند. 592 00:37:23,090 --> 00:37:26,640 این یک مستطیل است که ممکن است به حافظه کامپیوتر خود را نمایندگی می باشد. 593 00:37:26,640 --> 00:37:30,970 حتی اگر شما هیچ ایده چگونه حافظه کار می کند و یا چگونه با این نسخهها کار RAM، 594 00:37:30,970 --> 00:37:33,940 حداقل فرض می کنیم که شما از آن خوشه این روزها. 595 00:37:33,940 --> 00:37:36,280 تو مگابایت از آن، تو گیگابایت از آن، 596 00:37:36,280 --> 00:37:40,870 و ما از هفته 0 می دانیم که یک بایت است فقط آنچه را؟ >> [دانشجو] 8 بیت است. 597 00:37:40,870 --> 00:37:42,950 8 بیت، درست است؟ بنابراین 8 صفر و 1. 598 00:37:42,950 --> 00:37:45,880 بنابراین اگر کامپیوتر شما دارای یک فرفره RAM، 2 گیگابایت RAM این روزها، 599 00:37:45,880 --> 00:37:55,030 شما باید یک میلیارد یا 2 میلیارد بایت از حافظه و یا حدود 8 میلیارد یا 16 میلیارد بیت 600 00:37:55,030 --> 00:37:56,890 در داخل کامپیوتر شما. 601 00:37:56,890 --> 00:38:00,590 بر خلاف کوچک ParsiForums :: تالارهای مثال ویلی، ذرات مغناطیسی به طور معمول دیگر. 602 00:38:00,590 --> 00:38:04,450 به طور فزاینده - در لپ تاپ ها حداقل - درایوهای حالت جامد SSD ها، 603 00:38:04,450 --> 00:38:08,580 که فقط باید اجزاء بدون حرکت است. تمام الکترونیکی است. این همه برق مبتنی بر. 604 00:38:08,580 --> 00:38:14,060 بنابراین از این مستطیل را فقط به عنوان به نمایندگی از 1 یا 2 گیگابایت حافظه است که شما فکر می کنم. 605 00:38:14,060 --> 00:38:16,020 >> پس از آن یک تکه از حافظه است. 606 00:38:16,020 --> 00:38:19,830 جهان از علم کامپیوتر است مرتب کردن بر اساس تقسیم کردن 607 00:38:19,830 --> 00:38:22,950 تکه های حافظه را به انجام کارهای مختلف است. 608 00:38:22,950 --> 00:38:27,190 به عنوان مثال، در صورتی که این RAM کامپیوتر خود را، به عنوان پیشنهاد توسط مستطیل وجود دارد، 609 00:38:27,190 --> 00:38:31,130 معلوم می شود که توسط کنوانسیون، در بالای RAM خود را، پس به صحبت می کنند، 610 00:38:31,130 --> 00:38:33,660 به طور کلی آنچه که به نام یک بخش متن. 611 00:38:33,660 --> 00:38:36,740 اینها 0s و 1S که شما را کامپایل کرده اند. 612 00:38:36,740 --> 00:38:39,020 بنابراین، هنگامی که ما که در قسمت پایین هود در چه a.out نگاه، 613 00:38:39,020 --> 00:38:41,980 تمام این 0s و 1S، و هنگامی که شما برای اجرای برنامه، 614 00:38:41,980 --> 00:38:46,290 و کسانی که 0s و 1S از هارد دیسک شما را به چیزی به نام RAM بارگذاری می شود، 615 00:38:46,290 --> 00:38:49,320 و در RAM، آنها در بالا قرار داده شده است. 616 00:38:49,320 --> 00:38:52,770 در همین حال، شما باید چیزهای دیگر: مقداردهی اولیه داده ها، uninitialize داده است. 617 00:38:52,770 --> 00:38:57,510 که 2 swaths از حافظه اشاره به متغیرهای جهانی، که شما اغلب استفاده از 618 00:38:57,510 --> 00:39:00,760 اما گاهی اوقات اگر شما انجام دهید، آنها تا پایان وجود دارد تا به عنوان خوب. 619 00:39:00,760 --> 00:39:04,260 سپس برخی دیگر از مسائل وجود دارد: متغیر های محیط زیست، که ما زمان زیادی را صرف نیست، 620 00:39:04,260 --> 00:39:06,860 اما بعد از آن 2 چیز مهم است که خواهد آمد در طول ترم، 621 00:39:06,860 --> 00:39:08,550 پشته و پشته. 622 00:39:08,550 --> 00:39:12,210 بنابراین بسیاری از حافظه کامپیوتر شما محفوظ است به هنگام اجرای برنامه 623 00:39:12,210 --> 00:39:15,370 چیزی به نام پشته و چیزی به نام پشته است. 624 00:39:15,370 --> 00:39:18,840 ما قصد داریم تا در باره پشته صحبت کنید، اما ما در باره پشته صحبت کنید. 625 00:39:18,840 --> 00:39:24,600 پشته به معنای به التماس کردن به تصویری از سالن ناهار خوری سینی های غذا در ماتر خانه 626 00:39:24,600 --> 00:39:28,110 یا هر کجا که شما اتفاق می افتد که در آن سالن غذاخوری کارکنان آنها را پاک کردن هر روز، 627 00:39:28,110 --> 00:39:30,180 آنها پشته تا آنها را از طبقه بالا 628 00:39:30,180 --> 00:39:34,550 و به همین ترتیب، در حافظه است، این ایده از قرار دادن چیزی در پشته وجود دارد، 629 00:39:34,550 --> 00:39:36,860 قرار دادن چیزی در یک پشته قرار دادن چیزی بر روی پشته. 630 00:39:36,860 --> 00:39:38,240 و چه چیزی ما با این؟ 631 00:39:38,240 --> 00:39:41,860 >> بیایید زوم در نیمه پایین تر از این تصویر، RAM کامپیوتر خود را، 632 00:39:41,860 --> 00:39:44,330 پیشنهاد به شرح زیر است. 633 00:39:44,330 --> 00:39:48,170 به نظر می رسد که زمانی که شما یک برنامه مثل a.out یا سلام - 634 00:39:48,170 --> 00:39:50,100 هر چه این برنامه این است که شما نوشته شده است - 635 00:39:50,100 --> 00:39:54,020 دوباره، و کسانی که 0s و 1S از هارد دیسک شما، است که در دراز مدت ذخیره سازی لود می شود. 636 00:39:54,020 --> 00:39:57,230 باقی می ماند وجود دارد حتی زمانی که پلاگین، لود شده به RAM شما را بکشد. 637 00:39:57,230 --> 00:40:00,610 RAM سریع تر از دیسک های سخت - آن را کوچکتر از دیسک های سخت - 638 00:40:00,610 --> 00:40:03,300 اما آن را که در آن برنامه های زنده در حالی که شما آنها را در حال اجرا می باشد. 639 00:40:03,300 --> 00:40:08,230 بنابراین شما دوبار کلیک کنید برنامه بر روی مک یا PC، آن را از هارد دیسک به RAM لود می شود. 640 00:40:08,230 --> 00:40:11,520 به محض این که آن را به RAM، برو 0s و 1S در راه بالا پر شده است، 641 00:40:11,520 --> 00:40:16,610 به اصطلاح بخش متن، اما پس از آن به محض این که برنامه شما در واقع شروع در حال اجرا، 642 00:40:16,610 --> 00:40:21,360 عملکرد اصلی این است نامیده می شود و اصلی، به عنوان دیده ایم، اغلب دارای متغیرهای محلی، 643 00:40:21,360 --> 00:40:24,870 و آن را به نوع داده int و رشته ها و کاراکتر ها و مانند آن. 644 00:40:24,870 --> 00:40:29,180 بنابراین اگر برنامه شما این است که شما نوشته اند و یا برنامه ای است که شما دو کلیک 645 00:40:29,180 --> 00:40:32,970 استفاده از برخی از متغیرهای داخل اصلی 646 00:40:32,970 --> 00:40:37,240 آنها در نهایت در پایین پشته خود را از حافظه، پس به صحبت می کنند. 647 00:40:37,240 --> 00:40:39,410 مشخص، چه در واقع چیست؟ 648 00:40:39,410 --> 00:40:48,450 این فقط بدان معنی است که اگر ما قرار بود به تعداد بایت RAM در کامپیوتر شما، 649 00:40:48,450 --> 00:40:55,750 توجه کنید که ممکن است این تعداد بایت 0، این ممکن است تعداد بایت 1، 2، 3، 4، 5، 6، 650 00:40:55,750 --> 00:41:01,480 تمام راه را تا به 2 میلیارد دلار خواهد بود تمام راه را در بالا وجود دارد. 651 00:41:01,480 --> 00:41:05,880 بنابراین به عبارت دیگر، هنگامی که ما در مورد RAM یا حافظه از کلمه در ادامه متن صحبت، 652 00:41:05,880 --> 00:41:11,500 این حالت فقط بدان معناست که کسی که تصمیم گرفته است به تعداد هر یک از کسانی که تکه های حافظه. 653 00:41:11,500 --> 00:41:16,650 بنابراین، هنگامی که شما نیاز به 32 بیت برای بین المللی و یا شما نیاز به 8 بیت برای یک کاراکتر، 654 00:41:16,650 --> 00:41:18,840 جایی که آنها در نهایت در حافظه؟ 655 00:41:18,840 --> 00:41:22,350 >> مفهومی، آنها فقط تا در پایین این چیزی که به نام پشته پایان می رسد. 656 00:41:22,350 --> 00:41:25,870 اما آنچه جالب است در حال حاضر زمانی است که بخش اصلی یک تابع - 657 00:41:25,870 --> 00:41:28,750 فرض کنید یک تابع به نام صنایع غذایی، فقط یک نام دلخواه - 658 00:41:28,750 --> 00:41:32,330 چه اتفاقی می افتد اصلی در پایین این پشته از حافظه است؛ 659 00:41:32,330 --> 00:41:35,680 صنایع غذایی در حال حاضر در بالای اصلی در حافظه قرار داده می شود. 660 00:41:35,680 --> 00:41:40,990 بنابراین متغیرهای محلی که در صنایع غذایی تا پایان مرتب کردن بر اساس مفهومی بالاتر از کسانی که در اصلی. 661 00:41:40,990 --> 00:41:47,070 اگر صنایع غذایی خواستار یک تابع دیگر به نام نوار، آن دسته از متغیرهای اینجا. 662 00:41:47,070 --> 00:41:50,120 اگر نوار خواستار چیز دیگری، در اینجا، اینجا، اینجا. 663 00:41:50,120 --> 00:41:53,830 بنابراین چه چیزی جالب در مورد یک برنامه در حال اجرا است که به عنوان با شما تماس توابع 664 00:41:53,830 --> 00:41:57,750 و به عنوان آن دسته از توابع تماس توابع و به عنوان آن دسته از توابع تماس توابع، 665 00:41:57,750 --> 00:42:01,470 شما برای ساختن این پشته از توابع در حافظه است. 666 00:42:01,470 --> 00:42:06,890 تنها یک بار، بازده عملکرد شما شروع به گرفتن که حافظه. 667 00:42:06,890 --> 00:42:10,860 بنابراین یکی از ساده ترین راه هایی برای اجرای خارج از حافظه در یک برنامه رایانه ای 668 00:42:10,860 --> 00:42:14,360 به نوشتن توابع که بازگشت هرگز. 669 00:42:14,360 --> 00:42:18,900 بنابراین به عنوان مثال، اجازه دهید نشان می دهد که با برنامه عمدا حشره دار. 670 00:42:18,900 --> 00:42:22,230 اجازه بدهید من بروم جلو و # شامل ، 671 00:42:22,230 --> 00:42:25,000 اعضای هیات تحریریه اصلی (خالی) 672 00:42:25,000 --> 00:42:32,940 و من قصد دارم برای انجام این کار در حالی که (2> 1)، که احتمالا تا به حال بر ما را تغییر نخواهد داد، 673 00:42:32,940 --> 00:42:37,560 و اجازه دهید من به جلو بروید در حال حاضر و انجام printf. 674 00:42:37,560 --> 00:42:40,700 در واقع، که به کمتر بصری جالب است. اجازه دهید این کار را انجام. 675 00:42:40,700 --> 00:42:50,240 برای من بین المللی = 0؛> 0 - اجازه دهید این اشتباه را - من + +. 676 00:42:50,240 --> 00:42:52,720 و اجازه دهید printf نیست. بیایید تمرین آنچه که من موعظه. 677 00:42:52,720 --> 00:43:00,190 اجازه دهید که در اینجا یک روش، کر درجه اعتبار ساقط، و ما می گویم من بین المللی، 678 00:43:00,190 --> 00:43:06,830 و پس از آن من قصد دارم برای گفتن printf - نه، اجازه دهید را در این جالب تر است. 679 00:43:06,830 --> 00:43:15,790 اجازه دهید در واقع هر چیزی چاپ نمی کند در تمام. اجازه دهید فقط این کار را کر (من). 680 00:43:15,790 --> 00:43:20,390 بسیار خوب. بنابراین این حشره دار است چرا که چرا؟ 681 00:43:20,390 --> 00:43:23,380 من این که من به این دلیل که برنامه نمی کند در واقع هر چیزی مورد علاقه است. 682 00:43:23,380 --> 00:43:25,320 >> اما این هدف نیست. 683 00:43:25,320 --> 00:43:29,630 هدف این است که برای نوشتن یک برنامه که تابع اصلی چه، ظاهرا؟ 684 00:43:30,720 --> 00:43:32,860 تماس خود را. و در واقع، ما حلقه لازم نیست. 685 00:43:32,860 --> 00:43:37,200 بیایید حتی این فقط بنابراین نه به از دست دادن دید واقعا اشکال اساسی را ساده کنید. 686 00:43:37,200 --> 00:43:39,640 اصلی تماس کر به خواندن برخی از گروه کر، 687 00:43:39,640 --> 00:43:41,440 پس از آن من به چیزی احمقانه است و من تا به حال کر کر تماس 688 00:43:41,440 --> 00:43:43,760 چرا که من شخص دیگری را به عهده گرفت که قرار بود برای پیاده سازی آن شاید، 689 00:43:43,760 --> 00:43:47,210 و در حال حاضر این است که قصد ندارم به کامپایل رتبهدهی نشده است. من نیاز به انجام چه؟ 690 00:43:47,210 --> 00:43:49,970 من نیاز به نمونه، به یاد داشته باشید. 691 00:43:49,970 --> 00:43:56,110 بنابراین من نیاز به کر خالی (من بین المللی)؛ 692 00:43:56,110 --> 00:43:59,210 بنابراین در حال حاضر اگر من به پایین در اینجا - در واقع، اجازه دهید با استفاده از پنجره های بزرگتر. 693 00:43:59,210 --> 00:44:01,980 اجازه دهید به جلو و کر. 694 00:44:01,980 --> 00:44:06,490 اجازه دهید به جلو و کر. 695 00:44:06,490 --> 00:44:08,370 استفاده از شناسه های اعلام نشده من به. 696 00:44:08,370 --> 00:44:12,500 اوه، که احمقانه بود. ما استدلال نیاز ندارد. اجازه دهید فقط این کار را انجام. 697 00:44:12,500 --> 00:44:16,370 من آرزو می کنم که ما در این راه آغاز شده بود. این می شده اند یک برنامه بسیار ساده تر به نوشتن. 698 00:44:16,370 --> 00:44:25,590 وجود دارد. در حال حاضر به بیش از به پنجره ترمینال من، تکرار صدای جرنگ جرنگ، و در اینجا ما به اجازه. 699 00:44:25,590 --> 00:44:28,460 بود که واقعا سریع است. 700 00:44:28,460 --> 00:44:31,150 آنچه واقعا اتفاق افتاده، هر چند است؟ 701 00:44:31,150 --> 00:44:33,730 خب، در حال حاضر من خط چاپ به طوری که مشاهده می کنید اضافه کنید. 702 00:44:33,730 --> 00:44:43,490 اجازه بدهید من می گویند printf ("من در اینجا هستم") - متغیر. ما می خواهیم آن را مانند که ترک کنید. 703 00:44:43,490 --> 00:44:47,480 اجازه بدهید عمل می کند. اجازه دهید من تکرار کر. 704 00:44:47,480 --> 00:44:57,380 و ... آمده است. ادامه دهم. 705 00:44:57,380 --> 00:44:59,930 تا به کنار، چرا آن را به سقوط هنوز رتبهدهی نشده است؟ 706 00:44:59,930 --> 00:45:02,080 تقسیم بندی گسل اتفاق افتاد سریع فوق العاده قبل از. 707 00:45:02,080 --> 00:45:06,570 [پاسخ دانش آموز نامفهوم] >> دقیقا. پس از آن طول می کشد زمان به چاپ، درست است؟ 708 00:45:06,570 --> 00:45:08,610 این فقط طول می کشد کار بیشتر بر روی بخشی از کامپیوتر است. 709 00:45:08,610 --> 00:45:10,620 و از آن است که وجود دارد: تقسیم بندی گسل. 710 00:45:10,620 --> 00:45:12,340 >> بنابراین فقط برنامه های سریع اجرا اطلاع می دهد. 711 00:45:12,340 --> 00:45:14,130 اگر شما هر چیزی، به سرعت فوق العاده چاپ نیست. 712 00:45:14,130 --> 00:45:18,770 اما ما هنوز هم این خطا تقسیم بندی به دلیل چه اتفاقی می افتد؟ 713 00:45:18,770 --> 00:45:21,210 اگر شما فکر می کنم چگونه حافظه کامپیوتر شما گذاشته است، 714 00:45:21,210 --> 00:45:28,740 این اتفاق می افتد به اصلی، اما در اینجا اجازه دهید فقط این کر، و این کر است. 715 00:45:28,740 --> 00:45:34,550 و در حال حاضر اگر من زیبایی شناسی من حق این است که فقط رفتن به می گویند کر، کر، کر، 716 00:45:34,550 --> 00:45:40,550 گروه کر، گروه کر، گروه کر، گروه کر، nauseum آگهی، و در نهایت، چه اتفاقی خواهد افتاد؟ 717 00:45:40,550 --> 00:45:45,630 اگر تصویر بزرگ، به معنای واقعی کلمه، این است که چه چیزی اتفاق می افتد مفهومی است؟ 718 00:45:46,520 --> 00:45:48,630 سرریز پشته پشته. 719 00:45:48,630 --> 00:45:51,940 یا، بدتر، شما فقط به تاخت و تاز کردن همه چیز، از جمله بخش متن، 720 00:45:51,940 --> 00:45:54,590 که 0s و 1S که نشان دهنده برنامه شما است. 721 00:45:54,590 --> 00:45:57,080 به طور خلاصه، این است که فقط فوق العاده، فوق العاده بد. 722 00:45:57,080 --> 00:45:58,830 برنامه شما است از کنترل خارج spiraled. 723 00:45:58,830 --> 00:46:01,220 شما با استفاده از حافظه راه را بیش از شما در نظر گرفته شده 724 00:46:01,220 --> 00:46:03,960 همه به خاطر اشتباه احمقانه در این مورد، 725 00:46:03,960 --> 00:46:08,040 یا در این مورد یک تابع بسیار عمدا انجام شده خود را خواستار است. 726 00:46:08,040 --> 00:46:09,500 در حال حاضر، این همه بد نیست. 727 00:46:09,500 --> 00:46:13,800 توابع که خود را در واقع قدرت بزرگ وقتی که شما استفاده از آن را به درستی. 728 00:46:13,800 --> 00:46:15,800 من آن را به درستی استفاده نمی شود در اینجا. 729 00:46:15,800 --> 00:46:19,780 بنابراین این همه بد نیست، اما واقعیت این است که من در واقع هرگز متوقف خواستار خودم 730 00:46:19,780 --> 00:46:23,520 ضعف اساسی از این برنامه است. 731 00:46:23,520 --> 00:46:26,400 تا جایی که ما با تمام این رفتن؟ آنچه واقعا اتفاق می افتد؟ 732 00:46:26,400 --> 00:46:30,340 وقتی که من اسمش تابع افزایش مانند ما در آن نمونه ها انجام شد، 733 00:46:30,340 --> 00:46:33,420 من یک ارزش مانند 1 که من عبور شوید. 734 00:46:33,420 --> 00:46:37,570 من در یک کپی از شماره 1 منتقل می کند، به طوری که موارد زیر اتفاق می افتد. 735 00:46:37,570 --> 00:46:44,240 بیایید به عنوان مثال افزایش، این مرد حق در اینجا. 736 00:46:44,240 --> 00:46:46,870 در اینجا چیزی است که در واقع اتفاق می افتد. 737 00:46:46,870 --> 00:46:53,400 وقتی که من اسمش Increment و من در X منتقل می کند، pictorially، چه خبر است در اینجا این است. 738 00:46:53,400 --> 00:46:59,520 >> اگر من ارزش، از مجموع 1 ذخیره می شود و من در واقع تماس افزایش، 739 00:46:59,520 --> 00:47:04,330 که در حال حاضر گروه کر نامیده می شود - از iPad من پرتاب کردن اینجا. 740 00:47:04,330 --> 00:47:09,760 بیایید به این افزایش، و ما نمی دانیم که این تابع بعدی این است که برای رفتن به. 741 00:47:09,760 --> 00:47:14,840 بنابراین آنچه در واقع اتفاق می افتد این است در اینجا به جایی در اصلی من یک تکه از حافظه 742 00:47:14,840 --> 00:47:17,000 است که نگهداری از شماره 1 است. 743 00:47:17,000 --> 00:47:19,380 وقتی که من اسمش افزایش، من با استفاده از تکه های دیگری از حافظه، 744 00:47:19,380 --> 00:47:21,230 اما در حال حاضر من کپی از مجموع 1. 745 00:47:21,230 --> 00:47:26,660 هنگامی که مقدار افزایش، این 2 می شود، 746 00:47:26,660 --> 00:47:30,560 اما بعد از آن چه اتفاقی می افتد و به زودی به عنوان بازده افزایش؟ 747 00:47:30,560 --> 00:47:33,630 این حافظه فقط میشود با بازگشت به سیستم عامل تحویل داده، 748 00:47:33,630 --> 00:47:37,450 که بدان معنی است که شما انجام داده ام هیچ چیز مفید است. 749 00:47:37,450 --> 00:47:43,120 1 است که در ابتدا در اصلی موجود بود هنوز هم در واقع وجود دارد. 750 00:47:43,120 --> 00:47:44,890 تا جایی که ما با این رفتن؟ 751 00:47:44,890 --> 00:47:49,770 به نظر می رسد که در حافظه شما این توالی پشت به پشت کلمه در ادامه متن 752 00:47:49,770 --> 00:47:53,050 که شما می توانید مسائل در قرار داده، و معلوم است که ما قبلا هم دیده می شود چیزی 753 00:47:53,050 --> 00:47:55,390 که شامل قرار دادن چیزهای پشت به پشت به پشت به پشت. 754 00:47:55,390 --> 00:47:59,860 بر اساس یک رشته در هفته (1) و در حال حاضر هفته 2 چیست؟ 755 00:48:00,020 --> 00:48:01,980 این فقط یک مجموعه از کاراکتر ها است. 756 00:48:01,980 --> 00:48:04,310 بنابراین به نظر می رسد همانطور که شما می توانید اعداد را در حافظه قرار داده است، 757 00:48:04,310 --> 00:48:06,990 به همین ترتیب می تواند شخصیت شما را در حافظه است. 758 00:48:06,990 --> 00:48:10,530 و زمانی که ما شروع به قرار دادن کاراکتر در حافظه پشت به پشت به پشت به پشت، 759 00:48:10,530 --> 00:48:13,620 معلوم می شود که با استفاده از ساده ترین چیزهایی مثل حلقه و یا یک حلقه در حالی که، 760 00:48:13,620 --> 00:48:17,170 ما می توانیم از چپ به راست تکرار در بیش از کاراکتر در یک رشته 761 00:48:17,170 --> 00:48:20,600 و شروع به ماساژ دادن آنها را به شخصیت های مختلف در دسترس نباشد - 762 00:48:20,600 --> 00:48:23,370 می تواند تبدیل به B، B می تواند تبدیل به C - 763 00:48:23,370 --> 00:48:27,780 به طوری که در نهایت، ما می توانیم یک جمله انگلیسی است که در واقع باعث می شود احساس را 764 00:48:27,780 --> 00:48:30,310 و تبدیل هر یک از آن یکی از حروف در یک زمان 765 00:48:30,310 --> 00:48:34,400 با راه رفتن را از طریق حافظه های کامپیوتری ما را از چپ به راست در واقع به رمز در آوردن. 766 00:48:34,400 --> 00:48:35,810 پس اجازه دهید پنج دقیقه استراحت ما در اینجا، 767 00:48:35,810 --> 00:48:40,730 و هنگامی که ما آمده ایم، ما می خواهیم این روند را از تقلا اطلاعات شروع می شود. 768 00:48:42,020 --> 00:48:43,520 >> بسیار خوب. 769 00:48:43,520 --> 00:48:48,070 قبل از اینکه ما به برخی از رمزنگاری شیرجه رفتن و این چیزها را به نام آرایه، 770 00:48:48,070 --> 00:48:51,470 به من اجازه توقف به هر گونه سوال به دلیل احساس می کنم واقعا به نوعی مبهم 771 00:48:51,470 --> 00:48:54,080 برخی از آن موضوعات است. بنابراین رفع در حال حاضر اگر ما می توانیم. 772 00:48:54,080 --> 00:48:58,700 ما فقط در مورد مقادیر بازگشتی صحبت کردیم، ما در مورد استدلال صحبت کردیم، 773 00:48:58,700 --> 00:49:03,250 و ما در مورد این مفهوم صحبت کنیم که دوباره به در هفته آینده، 774 00:49:03,250 --> 00:49:08,720 کیفیت حافظه به عنوان یک دسته از این سینی های انباشته شده، پس به صحبت می کنند، 775 00:49:08,720 --> 00:49:12,660 از پایین به بالا، از جمله که هر یک از سینی که در پشته قرار داده می شود 776 00:49:12,660 --> 00:49:16,530 نشان دهنده یک تابع است که در حال حاضر در حال نامیده می شود. 777 00:49:17,900 --> 00:49:20,260 هر گونه سؤال؟ 778 00:49:20,260 --> 00:49:22,640 اجازه بدهید یک سوال در اینجا از من بپرسید. 779 00:49:22,640 --> 00:49:27,890 بازگشت ساده به آنچه که آن را قبل از برخی از ما زودتر Q & A. 780 00:49:27,890 --> 00:49:35,570 واقعیت این است که افزایش پرانتز باز، شماره هوشمند، پرانتز بسته - 781 00:49:35,570 --> 00:49:39,110 چه تعداد از نوع int باشد؟ 782 00:49:39,110 --> 00:49:42,790 [دانشجوی استدلال. >> استدلال. باشه. اما آنچه بحث؟ 783 00:49:42,790 --> 00:49:46,370 [پاسخ دانش آموز نامفهوم] >> که؟ >> [دانشجو] چیزی است که به شما منتقل شوید. 784 00:49:46,370 --> 00:49:49,940 خوب، چیزی است که به شما منتقل شوید. و به طور کلی، آن را فقط ورودی است. 785 00:49:49,940 --> 00:49:52,450 اگر شما در حال نوشتن یک تابع و هدف آن تابع در زندگی 786 00:49:52,450 --> 00:49:55,770 است که برای انجام کاری کمی متفاوت است در هر زمانی که شما از آن استفاده کنید. 787 00:49:55,770 --> 00:50:00,110 پس تنها راهی که برای آن که این اتفاق می افتد واقعا به نظر می رسد آن را با ورودی 788 00:50:00,110 --> 00:50:03,510 به طوری که می توان آن را چیزی متفاوت با آن ورودی در هر زمان. 789 00:50:03,510 --> 00:50:06,650 >> بنابراین شما نیاز به مشخص کردن دو چیز، زمانی که یک تابع ورودی است. 790 00:50:06,650 --> 00:50:09,590 شما نیاز به مشخص کردن نام است که شما می خواهید که ورودی را به 791 00:50:09,590 --> 00:50:12,700 صرفا برای راحتی خود را به طوری که شما می توانید به آن مراجعه کنید 792 00:50:12,700 --> 00:50:16,540 در تابع که شما خودتان را در حال نوشتن، که من در اینجا در خط 32. 793 00:50:16,540 --> 00:50:20,800 اما شما همچنین نیاز به تعیین نوع آن به دلیل C یک زبان برنامه نویسی 794 00:50:20,800 --> 00:50:25,940 که فقط مستلزم آن است که اگر شما می خواهید یک متغیر، شما باید به کامپیوتر چه نوع داده آن است که، 795 00:50:25,940 --> 00:50:30,200 در بخش های بزرگ به طوری که آن را می داند که چگونه بسیاری از بیت را برای آن متغیر اختصاص 796 00:50:30,200 --> 00:50:33,020 به دلیل آن می تواند 6 - با عرض پوزش، آن را نمی خواهد بود 6. 797 00:50:33,020 --> 00:50:37,080 این می تواند 16، می توان آن را 8، آن را می تواند 32، حتی 64، 798 00:50:37,080 --> 00:50:39,130 اما کامپیوتر نیاز به دانستن است. 799 00:50:39,130 --> 00:50:43,180 در حال حاضر، از نوع int در سمت چپ نشان دهنده چه، در مقابل؟ 800 00:50:46,350 --> 00:50:48,850 [پاسخ دانش آموز نامفهوم] >> که؟ >> [دانشجو] نوع عملکرد است. 801 00:50:48,850 --> 00:50:53,610 نوع عملکرد و، به طور خاص، نوع از خروجی آن است. راست. 802 00:50:53,610 --> 00:50:57,380 بنابراین در حالی که چیزی در پرانتز نشان دهنده ورودی آن، در صورت وجود، 803 00:50:57,380 --> 00:50:59,660 چیزی که به سمت چپ نشان دهنده خروجی آن است. 804 00:50:59,660 --> 00:51:03,530 و در این مورد، افزایش ظاهرا بین المللی را بر می گرداند، 805 00:51:03,530 --> 00:51:07,690 و به همین ترتیب بین المللی نوع برگشتی این تابع است. 806 00:51:07,690 --> 00:51:09,340 برای بازگشت به چه معنی است؟ 807 00:51:09,340 --> 00:51:15,090 به معنای واقعی کلمه، شما با استفاده از کلید واژه ها بازگشت و پس از آن اگر چه شما در حال بازگشت 808 00:51:15,090 --> 00:51:18,600 به سمت راست از کلید واژه ها یک عدد صحیح است، 809 00:51:18,600 --> 00:51:21,660 پس از آن است که در واقع مطابق با آنچه که ما وعده داده اند. 810 00:51:21,660 --> 00:51:26,410 - سلام جهان - شما می توانید چیزی شبیه به این انجام دهد چرا که یک رشته است. 811 00:51:26,410 --> 00:51:28,860 >> بدیهی است، آن را به یک عدد صحیح نمی باشد. 812 00:51:28,860 --> 00:51:33,140 بنابراین به طور خلاصه، این بار واقعا در تماس با ما، برنامه نویس، به خاص 813 00:51:33,140 --> 00:51:37,770 به آنچه که ما در حال بازگشت و پس از آن در واقع در مورد بازگشت آن بروید. 814 00:51:37,770 --> 00:51:43,440 بافت در اینجا در حال حاضر این است که حافظه کامپیوتر شما است، گیگابایت، 2 گیگابایت - 815 00:51:43,440 --> 00:51:45,920 هر چه - شاید بیشتر، شاید کمتر، 816 00:51:45,920 --> 00:51:49,050 اما کامپیوتر آن را بمثابه داشتن بخش های مختلف می باشد. 817 00:51:49,050 --> 00:51:51,200 چیزی می رود وجود دارد، چیز دیگری بالا می رود وجود دارد، 818 00:51:51,200 --> 00:51:54,290 چیزهای مختلف می رود در وسط، و امروز ما فقط از آن شروع می کنید. گفتن داستان، 819 00:51:54,290 --> 00:51:56,340 اما ما را دوباره به این زمان بیش از حد است. 820 00:51:56,340 --> 00:51:59,980 در حال حاضر، تنها قطعه از حافظه ما واقعا در مورد مراقبت در بخش متن 821 00:51:59,980 --> 00:52:03,360 چرا که فقط نشان دهنده 0s و 1S که صدای جرنگ جرنگ خروجی. 822 00:52:03,360 --> 00:52:06,050 بنابراین، هنگامی که شما یک فرمان را در صفحه کلید مانند a.out 823 00:52:06,050 --> 00:52:09,110 یا شما دو آیکون در سیستم عامل مکینتاش یا ویندوز اینجا را کلیک کنید. 824 00:52:09,110 --> 00:52:11,880 برنامه های خود را از هارد دیسک خود را به RAM لود می شود 825 00:52:11,880 --> 00:52:16,330 و آن را plopped در بالا از RAM کامپیوتر خود را، پس به صحبت می کنند. 826 00:52:16,330 --> 00:52:20,450 در همین حال، به عنوان برنامه خود را شروع می شود در حال اجرا و اصلی می شود به نام 827 00:52:20,450 --> 00:52:23,640 در این برنامه شما می نویسد و یا برنامه مایکروسافت یا اپل نوشت، 828 00:52:23,640 --> 00:52:27,860 هر یک از متغیرهای محلی خود را تا پایان پایین وجود دارد و در پایین از حافظه کامپیوتر شما است. 829 00:52:27,860 --> 00:52:33,230 اما اگر تماس های اصلی یک تابع دیگر که به خودی خود دارای متغیر یا استدلال، آنها در نهایت در بالای آن است. 830 00:52:33,230 --> 00:52:36,680 و در صورتی که تابع خواستار چیزی باشد، آنها تا پایان بالاتر از آن، بالاتر از آن، در بالای آن است. 831 00:52:36,680 --> 00:52:41,460 >> تنها یک بار، یک تابع انجام شده است اجرا کند انبوهی از سینی، پس به صحبت می کنند، 832 00:52:41,460 --> 00:52:43,240 شروع به پایین تر و پایین تر است. 833 00:52:43,240 --> 00:52:48,250 و این همان چیزی است که پس از آن، به طور خلاصه، توضیح می دهد که چرا زمانی که با شما تماس مکعب 834 00:52:48,250 --> 00:52:51,550 و یا با شما تماس افزایش، شما در حال گذر در یک کپی از مقدار است. 835 00:52:51,550 --> 00:52:55,520 و این بدان معناست که pictorially است که شما به معنای واقعی کلمه نوشتن شماره 1 836 00:52:55,520 --> 00:53:00,460 در بخش دیگری از حافظه، در حال تغییر است که از شماره 1 تا 2 در مورد افزایش 837 00:53:00,460 --> 00:53:04,820 و یا تا 8 در مورد مکعب و پس از آن پرتاب که حافظه دور 838 00:53:04,820 --> 00:53:09,140 به زودی به عنوان افزایش یا مکعب گرداند. سوال. 839 00:53:09,140 --> 00:53:12,900 [دانشجو] که در آن متغیرهای جهانی ذخیره می شود؟ 840 00:53:12,900 --> 00:53:18,100 متغیر های جهانی در آنچه در حال حاضر به نام داده مقداردهی اولیه و یا آماده سازی داده های ذخیره شده، 841 00:53:18,100 --> 00:53:21,920 این تفاوت که اگر شما یک متغیر جهانی است و شما آن را اختصاص فورا یک مقدار 842 00:53:21,920 --> 00:53:24,640 با علامت مساوی، آن را به پایان می رسد تا در بالا وجود دارد، 843 00:53:24,640 --> 00:53:29,200 و اگر شما فقط می گویند X هوشمند؛ بدون ارزش، آن را به پایان می رسد تا کمی پایین تر در RAM 844 00:53:29,200 --> 00:53:31,710 به سادگی با کنوانسیون است. 845 00:53:31,710 --> 00:53:34,940 سوال دیگر؟ بسیار خوب. 846 00:53:34,940 --> 00:53:37,340 بنابراین این تصویر باز خواهد گشت که ما را قوی تر 847 00:53:37,340 --> 00:53:39,170 با آنچه که ما می توانیم با کامپیوتر انجام دهید، 848 00:53:39,170 --> 00:53:42,720 اما در حال حاضر، اجازه دهید که یک مقدمه کوتاه به رمزنگاری، 849 00:53:42,720 --> 00:53:46,080 نوع خاصی از رمزنگاری می کند که تمام مشکلات جهان را حل نمی کند 850 00:53:46,080 --> 00:53:47,720 کند، اما برخی از آنها را حل کند. 851 00:53:47,720 --> 00:53:51,700 در این مورد در اینجا، ما باید چیزی به نام راز کلید رمزنگاری است. 852 00:53:51,700 --> 00:53:56,410 راز کلید رمزنگاری، به عنوان نام نشان می دهد، ناشی امنیت خود را از یک راز است. 853 00:53:56,410 --> 00:54:00,690 >> به عنوان مثال، اگر شما در مدرسه ابتدایی بودند و شما تصویب نامه عشق راز کوچک 854 00:54:00,690 --> 00:54:04,850 به پسر یا دختر شما را در خرد کردن، اگر شما می خواهید به تصویب است که توجه داشته باشید از طریق مخاطبان، 855 00:54:04,850 --> 00:54:08,380 شما احتمالا چنین توجه داشته باشید به زبان انگلیسی نوشتن نیست یا هر چیز دیگری زبان مادری خود است. 856 00:54:08,380 --> 00:54:13,340 در عوض، شما ممکن است آن را یا رمزگذاری شما فقط ممکن است آنها را در یک پیام به صورت متن ارسال این روز است. 857 00:54:13,340 --> 00:54:15,460 اما شما در واقع ممکن است آنها را منتقل می کند توجه داشته باشید در طول کلاس درس. 858 00:54:15,460 --> 00:54:18,700 و انجام این کار ایمن در چنین راهی است که دوستان و معلم خود را 859 00:54:18,700 --> 00:54:22,650 نمی دانم آنچه که شما در حال نوشتن، شما ممکن است در آمده تا با یک الگوریتم نسبتا ساده است، 860 00:54:22,650 --> 00:54:25,920 جوان هر چند شما ممکن است، فقط به تقلا کلمات. 861 00:54:25,920 --> 00:54:28,130 بنابراین به جای نوشتن شما ممکن است ب نوشتن، 862 00:54:28,130 --> 00:54:30,220 به جای B شما ممکن است C بنویسید 863 00:54:30,220 --> 00:54:32,140 به جای C شما ممکن است D، نوشتن و غیره. 864 00:54:32,140 --> 00:54:34,360 شما می توانید با ترجمه پیچیده تر 865 00:54:34,360 --> 00:54:36,720 نامه به نامه های مختلف. 866 00:54:36,720 --> 00:54:39,740 اما گرفتن پسر و یا دختر به چه کسی در حال فرستادن این یادداشت است 867 00:54:39,740 --> 00:54:45,020 نیاز به دانستن چیزی، که همان چیزی است که، بدیهی است؟ >> [دانشجوی] آنچه که شما در حال ارسال. 868 00:54:45,020 --> 00:54:49,720 چه راز خود است، مانند آن نگاشت بین و B و C و D 'ها است. 869 00:54:49,720 --> 00:54:54,650 آن است که تنها اضافه کردن 1 به هر یک از حروف برای رفتن از A به B، B به C؟ 870 00:54:54,650 --> 00:54:56,670 آیا آن را پیچیده تر از آن است؟ 871 00:54:56,670 --> 00:55:01,540 >> بنابراین شما و له شدن شما نیاز به این اطلاعات محرمانه، 872 00:55:01,540 --> 00:55:03,190 اما این نوع از گرفتن-22 در اینجا وجود دارد. 873 00:55:03,190 --> 00:55:06,830 اگر این اولین بار است که شما با فرستادن این ایمیل نامه عشق را از طریق کلاس، 874 00:55:06,830 --> 00:55:10,720 حال چگونه است که پسر یا دختر می خواهم به دانستن آنچه که حتی راز است؟ 875 00:55:10,720 --> 00:55:13,930 تا راز کلید رمزنگاری می کند همه مشکلات جهان را حل نمی کند، 876 00:55:13,930 --> 00:55:16,320 و در واقع یک رابطه وجود دارد که در اینجا خواهیم دوباره به سمت پایان ترم. 877 00:55:16,320 --> 00:55:25,110 به همین ترتیب بسیاری از ما کسی است که کار می کند، به عنوان مثال، در Amazon.com را نمی دانم، 878 00:55:25,110 --> 00:55:28,190 و در عین حال بسیاری از ما احتمالا چیزهای در Amazon.com خریداری شده، 879 00:55:28,190 --> 00:55:31,990 و به ما آموخته اند، به فرض که این معاملات تجارت الکترونیکی امن هستند. 880 00:55:31,990 --> 00:55:36,470 URL احتمالا می گوید HTTPS، شاید احمقانه آیکون قفل کوچک در جایی وجود دارد، 881 00:55:36,470 --> 00:55:39,930 نوعی از رمزنگاری تامین امنیت اطلاعات کارت اعتباری شما وجود دارد 882 00:55:39,930 --> 00:55:42,160 بین شما و Amazon.com. 883 00:55:42,160 --> 00:55:45,430 و اما اگر رمزنگاری شامل دانستن برخی از راز 884 00:55:45,430 --> 00:55:48,620 و در عین حال من کسی را در آمازون را نمی دانند و من قطعا از هر نوع راز مرتب نشده 885 00:55:48,620 --> 00:55:52,710 با کسی در آمازون، کامپیوتر و یا مرورگر من انجام این کار چگونه است؟ 886 00:55:52,710 --> 00:55:55,720 به نظر می رسد از انواع دیگری از رمزنگاری هم رفته است که حل این مشکل است. 887 00:55:55,720 --> 00:55:57,670 اما امروز، ما تمرکز بر روی یکی از ساده 888 00:55:57,670 --> 00:56:00,290 که در آن شما می توانید در پیشبرد ترتیب به دانستن برخی از راز 889 00:56:00,290 --> 00:56:03,760 مانند +1 یا برخی از نگاشت بین و B است. 890 00:56:03,760 --> 00:56:05,840 و فرایند رمزنگاری به طور کلی شامل این. 891 00:56:05,840 --> 00:56:08,620 شما باید برخی از متن ساده، در اینجا در سمت چپ نشان داده شده، 892 00:56:08,620 --> 00:56:12,930 آن را اجرا کنید از طریق نوعی از الگوریتم یا روش برای رمزنگاری آن - 893 00:56:12,930 --> 00:56:15,100 شاید که فقط می شود B، B، C می شود - 894 00:56:15,100 --> 00:56:17,490 و سپس شما را تا پایان با متن رمزی. 895 00:56:17,490 --> 00:56:20,380 در همین حال، یک بار له شما دریافت این یادداشت مخفی، 896 00:56:20,380 --> 00:56:24,200 او پس از رمزگشایی آن را با به طور کلی معکوس است که الگوریتم 897 00:56:24,200 --> 00:56:27,190 به طوری که به عقب بر گردیم متن ساده است. 898 00:56:27,190 --> 00:56:28,960 تجسم فیزیکی وجود دارد. 899 00:56:28,960 --> 00:56:31,680 >> به عنوان مثال، این یک راز کوچک حلقه رسیور، 900 00:56:31,680 --> 00:56:35,110 و این یک حلقه به این معنا که دو صفحة در اینجا وجود دارد. 901 00:56:35,110 --> 00:56:38,490 در حاشیه در خارج از این چیز، حروف A تا Z وجود دارد، 902 00:56:38,490 --> 00:56:40,340 اگر چه آنها به منظور تصادفی هستیم، 903 00:56:40,340 --> 00:56:42,880 و در داخل، در واقع برخی از اعداد وجود دارد 904 00:56:42,880 --> 00:56:46,620 چنین که با این حلقه شما را به نوعی می تواند به نوبه خود در خارج است، اما در داخل 905 00:56:46,620 --> 00:56:49,140 در جهت به خط کردن اعداد با حروف. 906 00:56:49,140 --> 00:56:53,020 از یک فیلم به نام داستان کریسمس، شما که Ralphie کوچک 907 00:56:53,020 --> 00:56:58,000 بسیار مشتاق به کشف کردن آنچه پیام راز کوچک یتیم آنی بود به او بود 908 00:56:58,000 --> 00:57:02,570 که ابلاغ شده است، من فکر می کنم، در قالب پیام های عددی در جعبه غلات 909 00:57:02,570 --> 00:57:07,220 و شما را مجبور به جمع آوری تمام کارت های کمی که در جعبه غلات آمد، 910 00:57:07,220 --> 00:57:09,770 شما تا به حال به آنها ایمیل در، شما را مجبور به عقب بر گردیم حلقه رسیور مخفی 911 00:57:09,770 --> 00:57:13,910 به طوری که شما در نهایت می توانید از کشف آنچه نگاشت بین حروف و اعداد 912 00:57:13,910 --> 00:57:15,550 یا حروف و حروف. 913 00:57:15,550 --> 00:57:19,520 چگونه در یک کامپیوتر می تواند به ما در مورد اجرا یا به نمایندگی از چیزهایی مثل این؟ 914 00:57:19,520 --> 00:57:22,560 ما نیاز به یک راه برای بیان خود کمی بیشتر انعطاف پذیر 915 00:57:22,560 --> 00:57:25,080 از متغیر های ما تا کنون اجازه داده اند. 916 00:57:25,080 --> 00:57:29,000 ما تا به حال نوع داده int، ما کاراکتر، ما تا به حال شناور و دو برابر و چند نفر دیگر، 917 00:57:29,000 --> 00:57:34,200 ولی برای کسانی که قطعه مجزا از حافظه است که واقعا به ما اجازه می دهد به بیان همه چیز 918 00:57:34,200 --> 00:57:36,440 مانند کلمات و جملات و عبارات است. 919 00:57:36,440 --> 00:57:38,630 در واقع، ما به نام رشته چنین چیزهایی، 920 00:57:38,630 --> 00:57:42,660 اما قول می دهم که این است که واقعا فقط یک ساده سازی در کتابخانه CS50 921 00:57:42,660 --> 00:57:45,540 که ما قصد بازگشت به پوست. 922 00:57:45,540 --> 00:57:47,500 و بنابراین شروع به انجام این کار در اینجا بگذارید. 923 00:57:47,500 --> 00:57:49,840 اجازه بدهید من بروم جلو و باز کردن یک فایل - 924 00:57:49,840 --> 00:57:54,100 تمامی این فایل ها در دسترس هستند، به طور معمول، آنلاین - اصطلاح array.c 925 00:57:54,100 --> 00:57:58,960 برای حل یک مشکل ربطی به رشته اما رنگ یک عکس در اینجا 926 00:57:58,960 --> 00:58:01,520 ما چگونه ممکن است چیزی به نام یک آرایه استفاده کنید. 927 00:58:01,520 --> 00:58:04,050 >> آرایه یک نوع داده است. 928 00:58:04,050 --> 00:58:10,730 این نوع متغیر از انواع چندگانه ای دارد که نوع داده کوچکتر در داخل آن 929 00:58:10,730 --> 00:58:12,680 پشت به پشت به پشت به پشت. 930 00:58:12,680 --> 00:58:16,980 بنابراین به عنوان مثال، اگر ما می خواستیم برای نوشتن یک برنامه کوچک است که به شما می دهد به طور متوسط ​​مسابقه شما 931 00:58:16,980 --> 00:58:19,780 برای یک دوره مثل 50 که دارای 2 آزمونها، 932 00:58:19,780 --> 00:58:23,450 شما به راحتی می تواند نوشتن این برنامه حتی در برخی از مواد در هفته گذشته 933 00:58:23,450 --> 00:58:28,830 با با استفاده از GetInt و یک زن و شوهر از متغیر: کد: int quiz1، اعضای هیات quiz2. 934 00:58:28,830 --> 00:58:30,550 و این بسیار سر راست است. 935 00:58:30,550 --> 00:58:33,500 این شاید 10، 20 خط از کد حداکثر برای اجرای یک برنامه 936 00:58:33,500 --> 00:58:38,940 که می پرسد کاربر برای نمرات کوئیز 2 و سپس محاسبه متوسط 937 00:58:38,940 --> 00:58:42,020 با اضافه کردن آنها را با هم، تقسیم بر 2، و سپس چاپ نتایج. 938 00:58:42,020 --> 00:58:46,400 ما احتمالا می تواند خیلی به آسانی در حال حاضر پس از چند دقیقه. 939 00:58:46,400 --> 00:58:49,450 اما مشکل این است که فرض کنید که 50 به حال 3 آزمونها یا 4 است. 940 00:58:49,450 --> 00:58:52,830 فرض کنید که شما می خواهید به استفاده از این برنامه برای یک کلاس که تا به حال در هفته آزمونها. 941 00:58:52,830 --> 00:58:55,100 فکر می کنم در مورد یک کلاس است که در هفته آزمونها. 942 00:58:55,100 --> 00:58:58,840 اگر 16 یا هفته در یک ترم وجود دارد، در حال حاضر دارای 16 متغیر: 943 00:58:58,840 --> 00:59:03,030 و اعضای هیات quiz1، و اعضای هیات quiz2، نوع int quiz3، اعضای هیات quiz4. 944 00:59:03,030 --> 00:59:06,870 به محض اینکه شما شروع به دیدن این افزونگی، کپی و چسباندن کد، 945 00:59:06,870 --> 00:59:09,810 این باید شروع به ساختن می خواهید یک راه بهتر وجود دارد. 946 00:59:09,810 --> 00:59:13,610 و خوشبختانه، زیرا از آرایه ها وجود دارد. بنابراین این کار را کنیم. 947 00:59:13,610 --> 00:59:16,700 اول، اجازه دهید یک چیز بسیار ساده است که ما استفاده کرده ایم تا کنون معرفی کنم، 948 00:59:16,700 --> 00:59:18,820 اما گاهی اوقات شما آن را در کد ها را ببینید. 949 00:59:18,820 --> 00:59:21,270 >> این همان چیزی است که به طور کلی گفته می شود ثابت است. 950 00:59:21,270 --> 00:59:24,410 پس از آن ثابت به این معنا که این مقدار تغییر هرگز. 951 00:59:24,410 --> 00:59:26,450 کنوانسیون انسان در هنگام ایجاد یک ثابت 952 00:59:26,450 --> 00:59:30,420 برای استفاده از تمامی حروف بزرگ به طوری که آن را واقعا خارج از غرفه در کد خود را، 953 00:59:30,420 --> 00:59:34,270 و از کلمه کلیدی خاص است که شما در C استفاده کنید # تعریف کنیم. 954 00:59:34,270 --> 00:59:39,970 بنابراین ما می گویند # تعریف، و سپس یک فاصله و سپس کلمه ای که می خواهید برای نام ثابت استفاده کنید 955 00:59:39,970 --> 00:59:41,730 و پس از آن مقدار ثابت است. 956 00:59:41,730 --> 00:59:44,710 توجه کنید این است که از نسبت دادن چیزی به یک متغیر متفاوت است. 957 00:59:44,710 --> 00:59:46,430 هیچ برابر است با ثبت نام در سایت وجود دارد، هیچ نقطه و ویرگول بدین شکل وجود دارد. 958 00:59:46,430 --> 00:59:49,140 این همان چیزی است که به طور کلی به عنوان یک دستور پیش پردازنده شناخته شده است، 959 00:59:49,140 --> 00:59:50,840 اما بیشتر که زمان دیگری است. 960 00:59:50,840 --> 00:59:56,350 در حال حاضر، این ایجاد ارزش تغییرناپذیر به نام آزمونها 961 00:59:56,350 --> 00:59:58,290 واقعی که ارزش عددی 2 است. 962 00:59:58,290 --> 01:00:02,180 بنابراین در هر جایی که باشید دیدن آزمونها، آزمون، آزمونها در طول این فایل: 963 01:00:02,180 --> 01:00:04,230 که فقط عدد 2 است. 964 01:00:04,230 --> 01:00:06,550 اگر من در اصلی در حال حاضر، بیایید ببینید که چگونه این کار. 965 01:00:06,550 --> 01:00:09,770 اول آن کمی مرموز به نظر می رسد، اما این همه مسائل از 1 هفته. 966 01:00:09,770 --> 01:00:12,210 از کاربر برای نمرات. چگونه این کار را انجام دهید؟ 967 01:00:12,210 --> 01:00:17,350 در خط 22 - این است که در واقع بخشی آبدار - من اعلام شناور 968 01:00:17,350 --> 01:00:23,240 اما فقط یک شناور نیست. من اعلام، بلکه آرایه ای از مقادیر ممیز شناور است. 969 01:00:23,240 --> 01:00:27,700 این متغیر به نام نمرات، به عنوان ضمنی، 970 01:00:27,700 --> 01:00:31,420 اما تنها قطعه از تگ های جدید این براکت است. 971 01:00:31,420 --> 01:00:37,280 واقعیت این است که من گفته ام کلاس های شناور و سپس براکت باز و سپس یک عدد - 972 01:00:37,280 --> 01:00:40,980 توجه کنید اگر این ثابت است این است که درست مثل ما این - 973 01:00:40,980 --> 01:00:46,840 این به این معنی: "هی، کامپیوتر، من 2 شناور را و اجازه دهید در مجموع آنها را نمرات. 974 01:00:46,840 --> 01:00:51,780 >> این است که در مقایسه با یک فرآیند بسیار خسته کننده مثل این: شناور grade1؛ 975 01:00:51,780 --> 01:00:54,580 grade2 شناور، و غیره. 976 01:00:54,580 --> 01:00:58,310 بنابراین یک آرایه این اجازه می دهد تا ما را به پیاده سازی این ایده اما بسیار کمتر messily، 977 01:00:58,310 --> 01:01:04,560 در چنین راهی است که ما می توانیم 1 خط از کد را به جای نوشتن، می گویند، 16 برای یک ترم 16 هفته است. 978 01:01:04,560 --> 01:01:09,060 من به سخت کد 2 می خواهید نمی کند چرا که اگر شما در این مورد فکر می کنم در حال حاضر منطقی، 979 01:01:09,060 --> 01:01:12,560 فرض کنید سال آینده CS50 تغییرات تا 3 آزمونها به جای 980 01:01:12,560 --> 01:01:15,010 و من تا به حال شماره 2 در اینجا، من تا به حال شماره 2 در اینجا، 981 01:01:15,010 --> 01:01:17,210 من تا به حال شماره 2، شماره 2 در اینجا. 982 01:01:17,210 --> 01:01:19,890 آن را بسیار خسته کننده و بسیار آسان برای پیچ کردن 983 01:01:19,890 --> 01:01:26,550 و به طور تصادفی تغییر 1 مقدار را به 3 و از دست برخی از ارزش های دیگر، از مجموع 2. 984 01:01:26,550 --> 01:01:30,660 بنابراین من قصد دارم به جای خلاصه این دور و استفاده از این ثابت است که، 985 01:01:30,660 --> 01:01:32,520 به عنوان نام آن نشان می دهد، تغییر نکرده است. 986 01:01:32,520 --> 01:01:35,870 و در حال حاضر مهم نیست که ما در آنها متفاوت است آزمونها در سال جاری یا آینده، 987 01:01:35,870 --> 01:01:39,380 من فقط باید آن را در یک مکان را تغییر دهید در اینجا در بالا. 988 01:01:39,380 --> 01:01:41,230 به طوری که همه ثابت شده است. 989 01:01:41,230 --> 01:01:47,100 در همین حال، از ویژگی های جدید و مفهومی که از یک آرایه است. 990 01:01:47,100 --> 01:01:55,030 پس از براکت مربع به من این شناور زیادی است و به من اجازه می دهد که در مجموع آنها را نمرات اینجا. 991 01:01:55,030 --> 01:01:56,720 بنابراین در حال حاضر اجازه دهید ببینیم که چه چیزی من قصد دارم به انجام. 992 01:01:56,720 --> 01:01:59,220 در اینجا در خط 24 است که ابتدا از یک حلقه for است. 993 01:01:59,220 --> 01:02:03,380 >> این است که واقعا فانتزی هیچ چیز. فقط با استفاده از آزمون ها به جای استفاده از یک شماره hard-coded بودن. 994 01:02:03,380 --> 01:02:06,740 اما هیچ فکری متفاوت وجود دارد از هفته گذشته وجود دارد. 995 01:02:06,740 --> 01:02:11,650 این فقط printf، بنابراین printf ("امتحان D #٪٪ D:) 996 01:02:11,650 --> 01:02:16,670 چرا که من فقط می خواهم برای چاپ کردن به تعداد 1 از 2 مسابقه من و پس از آن 2، از مجموع 2. 997 01:02:16,670 --> 01:02:18,480 پس این یک چیز صرفا زیبایی شناسانه است. 998 01:02:18,480 --> 01:02:21,000 اما قسمت جالب در حال حاضر در خط 27 است. 999 01:02:21,000 --> 01:02:27,840 به منظور پر کردن در یکی از این دو متغیرهایی با یک مقدار ممیز شناور، 1000 01:02:27,840 --> 01:02:29,640 شما دوباره از براکت استفاده کنید. 1001 01:02:29,640 --> 01:02:35,170 در این مورد، من با استفاده از چون این حلقه for با من معادل چه مقدار آغاز شده است، ظاهرا؟ 1002 01:02:35,170 --> 01:02:36,670 [دانشجو] 0. >> [مالان] 0. 1003 01:02:36,670 --> 01:02:40,990 بنابراین تکرار برای اولین بار از این حلقه، آن را به عنوان اینکه من این کار را در کد نوشت، 1004 01:02:40,990 --> 01:02:46,310 اما در تکرار دوم از این حلقه آن است که به عنوان اینکه من این کار را در کد من نوشت. 1005 01:02:46,310 --> 01:02:49,970 اما واقعیت این است که من با استفاده از یک متغیر است کامل، زیرا به عنوان نام نشان می دهد، 1006 01:02:49,970 --> 01:02:52,600 آن را متفاوت از ارزش خود را در هر تکرار، 1007 01:02:52,600 --> 01:02:55,900 بنابراین من پر کردن این آرایه یک نقطه در یک زمان. 1008 01:02:55,900 --> 01:02:57,380 این آرایه چه شکلی است؟ 1009 01:02:57,380 --> 01:03:01,570 دلیل من کشید مستطیل ساده و فوق العاده بر روی صفحه نمایش در اینجا قبل از اینکه به این دلیل بود. 1010 01:03:01,570 --> 01:03:05,590 آرایه است فقط یک تکه از حافظه با تکه های دیگری از حافظه 1011 01:03:05,590 --> 01:03:08,570 به دنبال تکه های دیگری از حافظه و غیره. 1012 01:03:08,570 --> 01:03:13,120 بنابراین اگر آرایه با اندازه 2 در این مورد در اینجا، همه من انجام می شود 1013 01:03:13,120 --> 01:03:20,200 با تایپ کردن در نمرات آزمون من اینجا را دوست دارم - من 100 بر روی یکی از این و پس از آن من 99 در این یکی رو - 1014 01:03:20,200 --> 01:03:24,970 سپس این حافظه حتی ممکن است مورد استفاده قرار گیرد زیرا من فقط خواسته های کامپیوتری 1015 01:03:24,970 --> 01:03:26,840 مجموعه ای از اندازه 2. 1016 01:03:26,840 --> 01:03:28,600 این مربع ها هنوز هم وجود دارد، درست است؟ 1017 01:03:28,600 --> 01:03:32,670 شما هنوز هم باید 2 گیگابایت RAM، حتی اگر شما تنها به مدت 2 شناور پرسیدن. 1018 01:03:32,670 --> 01:03:36,840 بنابراین ایده آرایه است که کامپیوتر فقط طول می کشد یک تکه از حافظه 1019 01:03:36,840 --> 01:03:41,340 و پس از آن apportions قطعات کوچکتر پشت به پشت به پشت به پشت. 1020 01:03:41,340 --> 01:03:43,310 و به طوری که تمام یک آرایه است. 1021 01:03:43,310 --> 01:03:47,350 >> این تکه های به هم پیوسته در داخل حافظه است که شما می توانید همه چیز قرار داده است. 1022 01:03:47,350 --> 01:03:50,700 این اتفاق می افتد پس لطفا فقط برخی از ریاضی خسته کننده است. 1023 01:03:50,700 --> 01:03:54,640 اگر من در پایین حرکت کنید در اینجا، این است که من پس از آن بیش از آرایه تکرار. 1024 01:03:54,640 --> 01:03:58,020 من می آیند تا با جمع از همه ارزش ها در آرایه، 1025 01:03:58,020 --> 01:04:02,470 و سپس با استفاده از تابع دور در اینجا در واقع مجموع تقسیم آزمونها. 1026 01:04:02,470 --> 01:04:06,320 اما دست من موج من که در آن به عنوان مرتب سازی بر اساس حساب به اندازه کافی برای در حال حاضر. 1027 01:04:06,320 --> 01:04:08,370 اما همه که انجام این کار برای من در نهایت محاسبه متوسط ​​است. 1028 01:04:08,370 --> 01:04:13,580 پس آزمون اول به علاوه مسابقه دوم تقسیم بر 2 و سپس آن را چاپ را به عنوان بین المللی است. 1029 01:04:13,580 --> 01:04:17,280 اما اجازه دهید در حال حاضر به عنوان مثال مختلف به نام string1 گذار، 1030 01:04:17,280 --> 01:04:20,700 که تصویری مشابه اما با استفاده از رشته ها است. 1031 01:04:20,700 --> 01:04:23,940 اجازه بدهید من به جلو بروید و ساده این کار را برای یک لحظه. 1032 01:04:23,940 --> 01:04:27,090 ببخشید دندانه دار در حال حاضر است. 1033 01:04:27,090 --> 01:04:30,870 توجه کنید که در خط 19 از این مثال، من یک رشته از کاربر است. 1034 01:04:30,870 --> 01:04:34,640 اما متوجه چیزی است که من بعد در خط انجام 22 به بعد. 1035 01:04:34,640 --> 01:04:41,250 من در واقع از من تکرار تا - و این است که یک ترفند - strlen، طول رشته است. 1036 01:04:41,250 --> 01:04:44,880 این یک تابع است که می آید با C است که اگر شما تصویب آن یک رشته است 1037 01:04:44,880 --> 01:04:47,730 آن را به شما می گوید که چگونه بسیاری از شخصیت های این رشته هستند. که تمام است. 1038 01:04:47,730 --> 01:04:51,550 و این واقعیت است که آن را strlen به جای طول رشته است فقط به خاطر اینکه آن را موجز است. 1039 01:04:51,550 --> 01:04:55,100 سی سال پیش، مردم علاقه به نوشتن چیزهایی به عنوان موجز به عنوان امکان پذیر است، 1040 01:04:55,100 --> 01:04:57,630 بنابراین ما این کنوانسیون در اینجا نگه داشته ام. 1041 01:04:57,630 --> 01:05:00,660 + + فقط به معنی افزایش من در هر تکرار. 1042 01:05:00,660 --> 01:05:02,990 و در حال حاضر این توجه کنید که واقعا جالب است. 1043 01:05:02,990 --> 01:05:09,180 در خط 24، به من می گویند، "کامپیوتر، من یک شخصیت می دهد، 8 بیت، و آن را ج. 1044 01:05:09,180 --> 01:05:12,630 اما آنچه در این است که بر روی سمت راست گفت؟ 1045 01:05:13,490 --> 01:05:16,530 در زبان انگلیسی، چه می کند که نشان دهنده؟ 1046 01:05:16,530 --> 01:05:18,730 [دانشجوی] اولین شخصیت در آرایه. 1047 01:05:18,730 --> 01:05:20,790 دقیقا. اولین کاراکتر در آرایه را به من بده. 1048 01:05:20,790 --> 01:05:24,090 ، یا به طور کلی، شخصیت i ام در آرایه به من می دهد. 1049 01:05:24,090 --> 01:05:26,100 و تحقق این مهم است که در حال حاضر به عنوان دانشمندان کامپیوتر، 1050 01:05:26,100 --> 01:05:27,890 ما در واقع از 0 شمارش. 1051 01:05:27,890 --> 01:05:29,720 >> شما اختیار ندارد در حال حاضر به شروع به انجام این کار است. 1052 01:05:29,720 --> 01:05:34,160 حالا شما باید به رفتار مطابق با انتظارات کامپیوتر و شمارش از 0 1053 01:05:34,160 --> 01:05:38,180 زیرا [0] رفتن به اولین کاراکتر در یک رشته 1054 01:05:38,180 --> 01:05:42,150 [1] برای رفتن به دوم، [2] رفتن به سوم، و غیره. 1055 01:05:42,150 --> 01:05:49,720 بنابراین این برنامه، اگر من آن را کامپایل، این است که دوباره string1، بنابراین مطمئن string1، 1056 01:05:49,720 --> 01:05:54,670 و در حال حاضر من string1 در پنجره ترمینال من اجرا شود. 1057 01:05:54,670 --> 01:05:58,330 این انتظار برای ورودی، بنابراین من قصد دارم به داوود تایپ می کنید، وارد کنید 1058 01:05:58,330 --> 01:06:02,540 و در حال حاضر آن را چاپ دیوید در خطوط مختلف به دلیل اطلاعیه آنچه که من انجام می دهند. 1059 01:06:02,540 --> 01:06:05,820 من چاپ یکی از شخصیت ها در یک زمان. 1060 01:06:05,820 --> 01:06:10,100 ما نمی خواهد به جزئیات در این مورد، اما من یک لحظه قبل این چک در اینجا حذف شده. 1061 01:06:10,100 --> 01:06:15,480 به نظر می رسد که در صورتی که کاربر بی ادبی، خصمانه، یا فقط اشتباه گرفته است، 1062 01:06:15,480 --> 01:06:20,210 شما در واقع می تواند برخی از طول یک رشته را به شکست منجر میشود. 1063 01:06:20,210 --> 01:06:22,860 اگر شما کلید اشتباه بر روی صفحه کلید، شما ممکن است هیچ رشته ای در تمام بدهد، 1064 01:06:22,860 --> 01:06:26,950 و یا اگر شما مخرب، شما ممکن است سعی کنید در ارزش یک گیگابایت از یک مقاله، متن را بچسبانید 1065 01:06:26,950 --> 01:06:29,290 برای پر کردن این رشته، و در صورتی که کامپیوتر اجرا می شود از حافظه، 1066 01:06:29,290 --> 01:06:32,710 معلوم می شود که ما قصد داریم به عقب بر گردیم این مقدار خاص به نام NULL است. 1067 01:06:32,710 --> 01:06:35,580 بنابراین در حال حاضر، درست است که این مقدار خاص به نام NULL وجود دارد می دانیم 1068 01:06:35,580 --> 01:06:39,580 است که به شما این امکان را می دهد که ما را به بررسی زمانی که ما از حافظه، در میان چیزهای دیگر. 1069 01:06:39,580 --> 01:06:45,630 اما اگر باز هم اکنون string2، متوجه یک تفاوت در اینجا است. 1070 01:06:45,630 --> 01:06:48,210 توجه داشته باشید که در اینجا یک تفاوت با string2. 1071 01:06:48,210 --> 01:06:51,340 با string2، این حلقه کمی متفاوت است. 1072 01:06:51,340 --> 01:06:55,010 >> اجازه دهید نقاط صفر را حذف کنید به طوری که ما می توانیم در مورد آن زمان دیگری صحبت کنید. 1073 01:06:55,010 --> 01:06:57,800 چه در مورد حلقه for این زمان متفاوت است؟ 1074 01:06:59,620 --> 01:07:01,670 من می توانم به بازگشت به مثال قبلی. 1075 01:07:01,670 --> 01:07:08,580 به طوری که نسخه 2 این نسخه 1 است. 1، 2. 1076 01:07:08,580 --> 01:07:11,980 1، 2. 1077 01:07:13,520 --> 01:07:16,660 تماس strlen این است که کجا؟ 1078 01:07:16,660 --> 01:07:18,860 در بخش اول از حلقه for است. 1079 01:07:18,860 --> 01:07:21,830 هر گونه افکار به همین دلیل من برای انجام این کار؟ آره. 1080 01:07:21,830 --> 01:07:24,560 [دانشجو] بنابراین شما هر زمان تابع را صدا نمی زنم. 1081 01:07:24,560 --> 01:07:26,440 [مالان] بنابراین ما تابع را صدا نمی زنم هر بار تنها. دقیقا. 1082 01:07:26,440 --> 01:07:28,300 از حلقه for به یاد بیاورید که آنها فوق العاده ساده 1083 01:07:28,300 --> 01:07:31,770 هنگامی که شما در نوعی از درک کنند که این شروع، شرایط، و به روز رسانی است. 1084 01:07:31,770 --> 01:07:34,750 مشکل این است که این وضعیت در هر تکرار از حلقه اتفاق می افتد. 1085 01:07:34,750 --> 01:07:40,010 و به این ترتیب در این مثال در اینجا، چه در مورد این واقعیت است که این شرایط و موقعیت من بد است؟ 1086 01:07:40,010 --> 01:07:41,830 [دانشجوی] شما تماس strlen. 1087 01:07:41,830 --> 01:07:44,340 [مالان] شما تماس strlen دوباره و دوباره و دوباره. 1088 01:07:44,340 --> 01:07:47,410 اما هنگامی که من در دیوید تایپ شده، طول این رشته 5، 1089 01:07:47,410 --> 01:07:49,650 و آن را نمی خواهید در هر تکرار از حلقه را تغییر دهید 1090 01:07:49,650 --> 01:07:51,670 از آنجا که رشته هنوز هم D-a-V-I-D. 1091 01:07:51,670 --> 01:07:55,320 بنابراین این یک اشاره در رفتن به تبدیل شدن به یک ایده به طور فزاینده مهم است 1092 01:07:55,320 --> 01:08:00,410 شناخته شده به عنوان تصمیم گیری طراحی شده که در آن فقط نمیدهیم کامپیوتر کار غیر ضروری است. 1093 01:08:00,410 --> 01:08:03,920 >> فقط به عنوان یک پیش نمایش دزدکی حرکت کردن از pset2، pset2 در نسخه استاندارد 1094 01:08:03,920 --> 01:08:07,030 قصد دارد شما را به چالش برخی از تعدادی از رمزهای در واقع پیاده سازی، 1095 01:08:07,030 --> 01:08:10,410 برخی از تعدادی از الگوریتم های رمز نگاری، به طوری که شما می توانید هر دو را رمزگذاری 1096 01:08:10,410 --> 01:08:13,840 و پیام های رمزگشایی راز بسیار شبیه به یک Ralphie وجود دارد رمزگشایی شده است. 1097 01:08:13,840 --> 01:08:16,810 در ویرایش هکر pset2، ما در حال رفتن به کمی بیشتر است. 1098 01:08:16,810 --> 01:08:19,649 ما قصد داریم به شما یک فایل دست از یک سیستم رایانه ای واقعی 1099 01:08:19,649 --> 01:08:23,479 که شامل یک دسته از نام های کاربری و کلمات عبور رمز شده واقعی، 1100 01:08:23,479 --> 01:08:26,939 و چالش برای نسخه هکر خواهد بود برای شکستن این رمز عبور 1101 01:08:26,939 --> 01:08:33,200 و کشف کردن آنچه که رمزنگاری و یا چه راز در واقع ایجاد آن رمزهای عبور مورد استفاده قرار گرفت. 1102 01:08:33,200 --> 01:08:36,109 و ما قصد داریم برای انجام این کار با استفاده از یکی از ویژگی های جدید در اینجا C 1103 01:08:36,109 --> 01:08:40,630 که من به شما فقط یک نسخه ی نمایشی شناخته شده به عنوان استدلال خط فرمان می دهد. 1104 01:08:40,630 --> 01:08:44,229 به نظر می رسد، به عنوان برخی از شما ممکن است که در قسمت و یا در کتاب های درسی دیده می شود، 1105 01:08:44,229 --> 01:08:48,260 اصلی همیشه باید به باطل در پرانتز. 1106 01:08:48,260 --> 01:08:52,430 به نظر می رسد که اصلی نیز می تواند مانند این نوشته، با دو آرگومان، 1107 01:08:52,430 --> 01:08:56,870 argc و argv را، که در آن argc تعداد کلمات 1108 01:08:56,870 --> 01:09:00,020 که شما بعد از نام برنامه را در خط فرمان تایپ کنید 1109 01:09:00,020 --> 01:09:03,420 و ی argv کلمات واقعی است. 1110 01:09:03,420 --> 01:09:07,540 و به عنوان براکت مربع وجود دارد نشان می دهد، و argv است که ظاهرا یک آرایه است. 1111 01:09:07,540 --> 01:09:12,210 این رفتن به یک رشته پس از یک رشته پس از یک رشته در حافظه است. 1112 01:09:12,210 --> 01:09:16,010 >> بنابراین آنچه که ما در حال رفتن به قادر به انجام شروع با pset 2 است چیزی شبیه به این. 1113 01:09:16,010 --> 01:09:21,350 اگر من را argv1، است که به عنوان مثال خواهیم دوباره در روز دوشنبه، و آن را اجرا کنید. 1114 01:09:21,350 --> 01:09:23,370 توجه کنید که به نظر نمی رسد به انجام هر کاری هنوز. 1115 01:09:23,370 --> 01:09:25,490 این فقط به نام خود چاپ. 1116 01:09:25,490 --> 01:09:31,479 اما اگر من می گویم کلاس خداحافظی، توجه داشته باشید که این برنامه ظاهرا تکرار 1117 01:09:31,479 --> 01:09:35,479 بر هر یک از کلمات که در اعلان تایپ شد. 1118 01:09:35,479 --> 01:09:41,630 و وسیله ای که ما به دست آوردن دسترسی به کلمات که کاربر در اعلان تایپ 1119 01:09:41,630 --> 01:09:49,160 با تغییر اصلی شروع این آخر هفته از اعضای هیات تحریریه اصلی (خالی) به اعضای هیات تحریریه اصلی (argc، argv را) 1120 01:09:49,160 --> 01:09:52,050 و به این ترتیب خط فرمان استدلال متولد خواهد شد. 1121 01:09:52,050 --> 01:09:57,100 و یک بار شما واقعا پیچیده در این، شما قادر خواهید بود برای نوشتن برنامه های واقعا trippy 1122 01:09:57,100 --> 01:09:59,610 مانند این یکی در اینجا، می رود که در بالا و فراتر از آن 1123 01:09:59,610 --> 01:10:03,940 برخی از قابلیت های ما تا کنون انجام داده ایم اما بسیار قدرتمند است. 1124 01:10:03,940 --> 01:10:08,950 >> بنابراین ما این کار را با این بر روی صفحه نمایش را ترک کند، و ما شما را در روز دوشنبه را ببینید. 1125 01:10:17,570 --> 01:10:20,000 >> [CS50.TV]