1 00:00:00,000 --> 00:00:02,970 >> [موسیقی] 2 00:00:02,970 --> 00:00:14,355 3 00:00:14,355 --> 00:00:15,700 >> DAVID J. مالان: بسیار خوب. 4 00:00:15,700 --> 00:00:18,832 این CS50 و این آغاز هفته 2 است. 5 00:00:18,832 --> 00:00:21,040 و شما یاد می آورند که بیش از زن و شوهر هفته گذشته، 6 00:00:21,040 --> 00:00:24,490 ما شده معرفی به کامپیوتر علم و، به نوبه خود، برنامه نویسی. 7 00:00:24,490 --> 00:00:27,640 >> و ما داستان از طریق آغاز شده ابتدا، که زبان گرافیکی 8 00:00:27,640 --> 00:00:28,990 از آزمایشگاه رسانه ای MIT. 9 00:00:28,990 --> 00:00:30,780 و پس از آن اخیرا، هفته گذشته، ما 10 00:00:30,780 --> 00:00:34,450 معرفی A A higher-- زبان های سطح پایین تر شناخته شده 11 00:00:34,450 --> 00:00:36,770 به عنوان C، چیزی است که کاملا متنی. 12 00:00:36,770 --> 00:00:39,440 و، در واقع، آخرین باری که ما بررسی در این زمینه 13 00:00:39,440 --> 00:00:40,450 تعدادی از مفاهیم. 14 00:00:40,450 --> 00:00:43,010 >> این، به یاد بیاورید، بسیار بود برنامه برای اولین بار ما در نگاه. 15 00:00:43,010 --> 00:00:45,710 و این برنامه، کاملا به سادگی، چاپ، "سلام، جهان است." 16 00:00:45,710 --> 00:00:47,730 اما بسیار وجود دارد به نظر می رسد سحر و جادو در رفتن. 17 00:00:47,730 --> 00:00:51,460 است این برنامه: #include وجود دارد با این براکت زاویه. 18 00:00:51,460 --> 00:00:52,170 این نوع int است. 19 00:00:52,170 --> 00:00:53,020 وجود دارد (خالی). 20 00:00:53,020 --> 00:00:56,330 این پرانتز، آکولاد وجود دارد، نیمه دونقطه، و خیلی بیشتر. 21 00:00:56,330 --> 00:00:58,480 >> و بنابراین، به یاد آورید که معرفی خراش 22 00:00:58,480 --> 00:01:02,110 به طوری که ما می تواند، ایده آل، گذشته را ببینید که نحو، چیزهایی که واقعا نمی 23 00:01:02,110 --> 00:01:04,590 که فکری جالب اما در اوایل 24 00:01:04,590 --> 00:01:07,700 است، کاملا، کمی مشکل به بسته بندی کردن ذهن خود را در اطراف. 25 00:01:07,700 --> 00:01:10,860 و، در واقع، یکی از رایج ترین همه چیز در اوایل یک کلاس برنامه نویسی، 26 00:01:10,860 --> 00:01:13,443 به ویژه برای کسانی که کمتر راحت، است که توسط نا امید 27 00:01:13,443 --> 00:01:17,460 و توسط نحوی و معین افتاد اشتباهات، به ذکر خطاهای منطقی نیست. 28 00:01:17,460 --> 00:01:19,800 و به این ترتیب در میان اهداف ما امروز، در واقع، اراده 29 00:01:19,800 --> 00:01:23,280 به شما تجهیز با برخی از تکنیک های حل مسئله برای چگونه 30 00:01:23,280 --> 00:01:26,705 برای حل بهتر مشکلات خود در قالب اشکال زدایی. 31 00:01:26,705 --> 00:01:29,330 و شما یاد، بیش از حد، که محیط زیست است که ما معرفی 32 00:01:29,330 --> 00:01:31,780 زمان آخرین CS50 IDE نامیده می شد. 33 00:01:31,780 --> 00:01:34,850 این نرم افزار مبتنی بر وب است که شما اجازه می دهد تا به برنامه در ابر، 34 00:01:34,850 --> 00:01:38,450 پس به صحبت، در حالی که همه خود را فایل های با هم، به عنوان ما دوباره امروز. 35 00:01:38,450 --> 00:01:41,480 به یاد بیاورید که ما بازبینی این موضوع در اینجا، 36 00:01:41,480 --> 00:01:44,480 در میان آنها توابع، و حلقه ها، و متغیرها و عبارات بولی، 37 00:01:44,480 --> 00:01:45,110 و شرایط. 38 00:01:45,110 --> 00:01:49,190 و در واقع چند که ما ترجمه از جهان از ابتدا 39 00:01:49,190 --> 00:01:50,800 به جهان از C. 40 00:01:50,800 --> 00:01:53,220 >> اما ساختمان اساسی بلوک، پس به صحبت می کنند، 41 00:01:53,220 --> 00:01:55,150 واقعا هنوز هم همان هفته گذشته بود. 42 00:01:55,150 --> 00:01:57,900 در واقع، ما واقعا فقط به حال قطعه پازل های مختلف، اگر شما خواهد شد. 43 00:01:57,900 --> 00:02:00,300 به جای آن بنفش صرفه جویی در بلوک، ما به جای 44 00:02:00,300 --> 00:02:02,940 ، تابع () printf بود که این تابع در C که 45 00:02:02,940 --> 00:02:05,890 اجازه می دهد تا شما را به چاپ چیزی و فرمت آن را بر روی صفحه نمایش. 46 00:02:05,890 --> 00:02:07,950 ما به معرفی CS50 کتابخانه، شما که در آن 47 00:02:07,950 --> 00:02:11,420 در حال حاضر در get_char اختیار شما، و get_int و get_string، 48 00:02:11,420 --> 00:02:14,610 و چند توابع دیگر به عنوان خوب، که از طریق آن شما می توانید ورودی 49 00:02:14,610 --> 00:02:16,260 از صفحه کلید خود کاربر است. 50 00:02:16,260 --> 00:02:20,640 و ما نیز در زمان نگاهی به همه چیز مانند these- بولی، و کاراکتر، 51 00:02:20,640 --> 00:02:22,490 و دو، شناور، هوشمند، رشته long_long. 52 00:02:22,490 --> 00:02:25,170 و حتی نوع داده دیگر در C وجود دارد 53 00:02:25,170 --> 00:02:28,560 >> به عبارت دیگر، زمانی که شما اعلام یک متغیر برای ذخیره برخی از ارزش، 54 00:02:28,560 --> 00:02:32,600 یا زمانی که شما یک تابع پیاده سازی که برخی از ارزش می گرداند، 55 00:02:32,600 --> 00:02:35,290 شما می توانید آنچه را مشخص نوع ارزش است که. 56 00:02:35,290 --> 00:02:37,310 آیا یک رشته، یک دنباله ای از کاراکتر؟ 57 00:02:37,310 --> 00:02:39,490 آیا این یک شماره، مثل یک عدد صحیح؟ 58 00:02:39,490 --> 00:02:41,390 آیا این یک ممیز شناور ارزش، و یا مانند؟ 59 00:02:41,390 --> 00:02:46,180 بنابراین در C، بر خلاف خراش، ما در واقع شروع به مشخص کنید که چه نوع داده 60 00:02:46,180 --> 00:02:48,330 ما از بازگشت و یا با استفاده شدند. 61 00:02:48,330 --> 00:02:51,910 >> اما، البته، ما نیز به فرار برخی از محدودیت های اساسی محاسبه. 62 00:02:51,910 --> 00:02:54,100 و به طور خاص، این زبان C، فراخوان 63 00:02:54,100 --> 00:02:57,070 که ما یک نگاه و جو در زمان در سرریز عدد صحیح، واقعیت 64 00:02:57,070 --> 00:03:00,460 که اگر شما فقط یک دارند مقدار محدود از حافظه 65 00:03:00,460 --> 00:03:04,600 و یا، به طور خاص، یک تعداد متناهی از بیت، شما تنها می توانید تعداد دفعات بسیار بالا. 66 00:03:04,600 --> 00:03:08,460 و بنابراین ما در این مثال نگاه در اینجا به موجب آن یک شمارنده در یک هواپیما،، 67 00:03:08,460 --> 00:03:13,510 در واقع، اگر در حال اجرا به اندازه کافی بلند می سرریز و در نتیجه نرم افزار 68 00:03:13,510 --> 00:03:15,560 خطا از پتانسیل های فیزیکی واقعی است. 69 00:03:15,560 --> 00:03:18,600 >> ما همچنین در شناور نگاه نقطه عدم دقت، واقعیت 70 00:03:18,600 --> 00:03:22,280 که تنها با یک تعداد متناهی بیت، که آیا آن را 32 یا 64، 71 00:03:22,280 --> 00:03:27,330 شما فقط می توانید مشخص کنید تعداد بسیاری بعد از نقطه اعشار، پس از آن شما 72 00:03:27,330 --> 00:03:29,110 شروع به دریافت مبهم است. 73 00:03:29,110 --> 00:03:32,360 برای مثال، یک سوم در جهان در اینجا، در جهان انسانی ما، 74 00:03:32,360 --> 00:03:35,360 ما فقط می دانم یک تعداد نامحدود است از 3S بعد از نقطه اعشار. 75 00:03:35,360 --> 00:03:38,820 اما یک کامپیوتر لزوما نمی تواند نشان دهنده تعداد نامتناهی از اعداد 76 00:03:38,820 --> 00:03:42,590 اگر شما تنها اجازه می دهد برخی از آن مقدار محدودی از اطلاعات است. 77 00:03:42,590 --> 00:03:45,900 >> بنابراین نه تنها ما به شما تجهیز با قدرت بیشتر در 78 00:03:45,900 --> 00:03:49,280 از اینکه چگونه ممکن خود را در بیان یک صفحه کلید از نظر برنامه نویسی، 79 00:03:49,280 --> 00:03:51,430 ما نیز محدود چه شما در واقع می توانید انجام دهید. 80 00:03:51,430 --> 00:03:55,790 و در واقع، اشکالات و اشتباهات می تواند ناشی از این نوع از مسائل. 81 00:03:55,790 --> 00:03:59,900 و در واقع، از جمله موضوعات امروز در حال رفتن به موضوعاتی مانند اشکال زدایی 82 00:03:59,900 --> 00:04:03,699 و در واقع به دنبال زیر هود در هفته گذشته چگونه همه چیز معرفی شدند 83 00:04:03,699 --> 00:04:05,490 در واقع اجرا به طوری که شما بهتر 84 00:04:05,490 --> 00:04:10,530 درک هر دو از قابلیت های و محدودیت های یک زبان مانند C. 85 00:04:10,530 --> 00:04:14,770 >> و در واقع، ما پوست پشت لایه از ساده ترین ساختار داده ها، 86 00:04:14,770 --> 00:04:17,756 چیزی به نام یک آرایه، که ابتدا اتفاق می افتد به یک "لیست." 87 00:04:17,756 --> 00:04:19,589 آن را کمی است مختلف در این زمینه. 88 00:04:19,589 --> 00:04:23,340 و پس از آن ما نیز یکی از معرفی اول مشکلات دامنه خاص ما 89 00:04:23,340 --> 00:04:26,790 در CS50، جهان رمزنگاری، هنر تقلا 90 00:04:26,790 --> 00:04:29,650 یا به رمز درآوردن اطلاعات تا که شما می توانید پیام های محرمانه ارسال 91 00:04:29,650 --> 00:04:34,520 و رمزگشایی پیام های محرمانه بین دو نفر، A و B 92 00:04:34,520 --> 00:04:37,490 >> بنابراین قبل از انتقال ما به دنیای جدید، 93 00:04:37,490 --> 00:04:42,059 اجازه دهید سعی کنید به شما تجهیز با برخی از تکنیک های که شما با آن می توانید از بین بردن 94 00:04:42,059 --> 00:04:43,850 و یا کاهش حداقل برخی از از سرخوردگی 95 00:04:43,850 --> 00:04:46,630 که شما احتمالا مواجه می شوند در طول هفته گذشته به تنهایی. 96 00:04:46,630 --> 00:04:50,830 در واقع، پیش از شما such-- برخی از اول مشکلات خود در C. و شانس هستند، 97 00:04:50,830 --> 00:04:54,010 اگر شما مانند من هستید، اولین بار شما سعی می کنید به تایپ کردن یک برنامه، 98 00:04:54,010 --> 00:04:57,330 حتی اگر شما فکر می کنم منطقی برنامه بسیار ساده است، 99 00:04:57,330 --> 00:05:01,200 شما ممکن است به خوبی ضربه دیوار، و کامپایلر است که نمی به همکاری کنند. 100 00:05:01,200 --> 00:05:03,940 و یا صدای جرنگ جرنگ است که نمی به واقع مناقصه خود را انجام دهد. 101 00:05:03,940 --> 00:05:05,450 >> و به همین دلیل ممکن است؟ 102 00:05:05,450 --> 00:05:07,950 خوب، اجازه دهید نگاهی به، شاید، یک برنامه ساده است. 103 00:05:07,950 --> 00:05:11,190 من قصد دارم به جلو بروید و ذخیره این در یک فایل به عمد به نام buggy0.c، 104 00:05:11,190 --> 00:05:13,590 چون من آن را می دانم به تواند در پیشبرد ناقص است. 105 00:05:13,590 --> 00:05:17,400 اما من ممکن است که اگر این را درک نمی برنامه اول و دوم یا سوم است 106 00:05:17,400 --> 00:05:18,830 که من در واقع ساخت خودم. 107 00:05:18,830 --> 00:05:23,820 بنابراین من قصد دارم به جلو بروید و تایپ کردن، اعضای هیات اصلی (خالی). 108 00:05:23,820 --> 00:05:28,130 و سپس در داخل آکولاد من، بسیار آشنا ( "سلام، world-- 109 00:05:28,130 --> 00:05:30,980 بک اسلش، N ") - و یک نقطه ویرگول. 110 00:05:30,980 --> 00:05:32,360 >> من فایل ذخیره کرده ایم. 111 00:05:32,360 --> 00:05:34,850 حالا من قصد دارم به پایین به پنجره ترمینال من 112 00:05:34,850 --> 00:05:40,340 و نوع آرایش buggy0، دلیل، دوباره، نام فایل امروز buggy0.c است. 113 00:05:40,340 --> 00:05:43,660 بنابراین من تایپ را buggy0، وارد کنید. 114 00:05:43,660 --> 00:05:48,200 >> و، آه، خدای من، به یاد از زمان گذشته که هیچ پیغام خطا چیز خوبی است. 115 00:05:48,200 --> 00:05:49,740 بنابراین هیچ خروجی چیز خوبی است. 116 00:05:49,740 --> 00:05:52,920 اما در اینجا من به وضوح برخی از تعدادی از اشتباهات. 117 00:05:52,920 --> 00:05:56,470 >> بنابراین اولین خط از خروجی پس از تایپ را buggy0، فراخوان، 118 00:05:56,470 --> 00:05:59,540 خروجی نسبتا طولانی صدای جرنگ جرنگ است. 119 00:05:59,540 --> 00:06:02,067 در زیر هود، IDE CS50 پیکربندی شده است 120 00:06:02,067 --> 00:06:04,150 به استفاده از یک دسته کامل از گزینه های با این کامپایلر 121 00:06:04,150 --> 00:06:05,941 به طوری که شما لازم نیست در مورد آنها فکر می کنم. 122 00:06:05,941 --> 00:06:08,840 و آن چه که خط اول است معنی است که با صدای جرنگ جرنگ شروع می شود. 123 00:06:08,840 --> 00:06:11,720 >> اما پس از آن، مشکلات شروع به ظاهر خود را. 124 00:06:11,720 --> 00:06:17,390 Buggy0.c در خط 3، شخصیت 5، آیا بزرگ، خطای قرمز وجود دارد. 125 00:06:17,390 --> 00:06:18,380 این چیست؟ 126 00:06:18,380 --> 00:06:23,562 به طور ضمنی اعلام تابع کتابخانه تابع () printf با نوع int شده (const char * را، 127 00:06:23,562 --> 00:06:26,050 ...) [-Werror]. 128 00:06:26,050 --> 00:06:28,379 منظور من، آن را به سرعت می شود بسیار محرمانه. 129 00:06:28,379 --> 00:06:30,170 و قطعا، در ابتدا نگاه، ما را نیست 130 00:06:30,170 --> 00:06:32,380 انتظار شما را به درک کل پیام. 131 00:06:32,380 --> 00:06:34,213 و به این ترتیب یکی از درس برای امروز در حال رفتن 132 00:06:34,213 --> 00:06:36,919 به به تلاش برای متوجه الگوها، یا چیزهایی مشابه، 133 00:06:36,919 --> 00:06:38,960 به اشتباهات شما ممکن است مواجه می شوند در گذشته است. 134 00:06:38,960 --> 00:06:41,335 بنابراین اجازه دهید کسی را دست انداختن از هم جدا تنها این واژه ها که نگاه آشنا. 135 00:06:41,335 --> 00:06:44,290 بزرگ، خطای قرمز است که به وضوح نمادین چیزی اشتباه بودن. 136 00:06:44,290 --> 00:06:47,940 >> به طور ضمنی اعلام تابع () printf تابع کتابخانه. 137 00:06:47,940 --> 00:06:51,680 بنابراین حتی اگر من کاملا نمی دانند چه به طور ضمنی اعلام تابع کتابخانه 138 00:06:51,680 --> 00:06:54,900 یعنی، مشکل مطمئنا مربوط به printf به نحوی. 139 00:06:54,900 --> 00:06:59,130 و منبع آن موضوع است که با اعلام آن. 140 00:06:59,130 --> 00:07:02,440 >> اعلان یک تابع است ذکر آن برای اولین بار. 141 00:07:02,440 --> 00:07:06,210 و ما با استفاده از اصطلاحات در هفته گذشته اعلام نمونه آزمایشی تابع، 142 00:07:06,210 --> 00:07:11,860 هم با یک خط در بالای خود را فایل خود و یا در یک فایل هدر به اصطلاح. 143 00:07:11,860 --> 00:07:15,300 و در چه فایل آیا ما می گویند هفته گذشته که printf است نقل قول، 144 00:07:15,300 --> 00:07:17,080 تمام کردن، اعلام کرد؟ 145 00:07:17,080 --> 00:07:20,950 در چه فایل نمونه آن است. 146 00:07:20,950 --> 00:07:24,640 >> بنابراین اگر شما به یاد، اولین چیزی که من تایپ شده، تقریبا در هر برنامه time-- آخرین 147 00:07:24,640 --> 00:07:30,790 و به طور تصادفی یک لحظه پیش آغاز شده تایپ کردن myself-- این here-- بود 148 00:07:30,790 --> 00:07:38,630 hash-- # شامل 00:07:41,860 اگر من در حال حاضر این فایل را ذخیره کنید، من قصد دارم به جلو بروید و روشن شدن صفحه نمایش من، 150 00:07:41,860 --> 00:07:44,740 که شما می توانید با تایپ کردن انجام روشن، و یا شما می توانید کنترل L را نگه دارید، 151 00:07:44,740 --> 00:07:47,680 فقط برای روشن پنجره ترمینال خود را فقط برای از بین بردن برخی درهم و برهمی. 152 00:07:47,680 --> 00:07:51,370 >> من قصد دارم به جلو بروید و دوباره از نوع را buggy0، وارد کنید. 153 00:07:51,370 --> 00:07:53,790 و voila، من هنوز هم می بینیم که دستورات طولانی از صدای جرنگ جرنگ، 154 00:07:53,790 --> 00:07:55,470 اما این بار هیچ پیام خطا وجود دارد. 155 00:07:55,470 --> 00:07:58,800 و در واقع، اگر من ./buggy0 انجام دهید، درست مثل زمان گذشته، 156 00:07:58,800 --> 00:08:01,860 که در آن نقطه به معنی این دایرکتوری، اسلش فقط به این معنی، 157 00:08:01,860 --> 00:08:05,040 در اینجا می آید نام برنامه و که نام برنامه buggy0 است، 158 00:08:05,040 --> 00:08:07,340 را وارد کنید، "سلام، جهان است." 159 00:08:07,340 --> 00:08:09,440 >> در حال حاضر، چگونه ممکن است شما جمع آوری این راه حل 160 00:08:09,440 --> 00:08:12,017 بدون اینکه لزوما به رسمیت شناختن به عنوان بسیاری از کلمات 161 00:08:12,017 --> 00:08:14,350 به عنوان من، قطعا، داشتن این برای سال های بسیاری انجام می شود؟ 162 00:08:14,350 --> 00:08:18,720 خوب، متوجه هر مشکل اول مجموعه، ما شما را به یک فرمان 163 00:08:18,720 --> 00:08:21,175 که کارکنان خود CS50 را نوشت به نام help50. 164 00:08:21,175 --> 00:08:24,300 و در واقع، C می کند خصوصیات مشکل را به عنوان به چگونگی استفاده از این. 165 00:08:24,300 --> 00:08:27,210 >> اما اساسا help50 برنامه ای است که کارکنان CS50 را 166 00:08:27,210 --> 00:08:30,850 نوشت که اجازه می دهد تا شما را به اجرای یک فرمان یا اجرای یک برنامه، 167 00:08:30,850 --> 00:08:36,169 و اگر شما را درک نمی کنند آن خروجی، به تصویب خروجی آن به help50، 168 00:08:36,169 --> 00:08:38,890 که در آن نقطه نرم افزار که کارکنان دوره نوشت 169 00:08:38,890 --> 00:08:42,429 در خروجی برنامه خود را نگاه کنید خط به خط، کاراکتر به کاراکتر. 170 00:08:42,429 --> 00:08:46,000 و اگر ما، کارکنان، تشخیص پیغام خطا که شما تجربه، 171 00:08:46,000 --> 00:08:50,580 ما سعی خواهد کرد برای تحریک با برخی از پرسش بلاغی، با برخی از مشاوره، 172 00:08:50,580 --> 00:08:54,890 بسیار شبیه به یک TF یا CA یا خودم در فرد در ساعات اداری انجام دهند. 173 00:08:54,890 --> 00:08:58,320 >> بنابراین به help50 نگاه اگر شما نمی لزوما یک مشکل را تشخیص دهد. 174 00:08:58,320 --> 00:09:00,790 اما بر روی آن تکیه می کنند بیش از حد عنوان چوب زیر بغل. 175 00:09:00,790 --> 00:09:03,990 قطعا سعی کنید به درک آن خروجی و سپس از آن یاد بگیرند 176 00:09:03,990 --> 00:09:07,571 به طوری که تنها یک یا دو بار شما انجام تا به حال اجرا help50 برای یک خطای خاص 177 00:09:07,571 --> 00:09:08,070 پیام. 178 00:09:08,070 --> 00:09:10,660 پس از آن، شما باید باشد بهتر است خود را مجهز 179 00:09:10,660 --> 00:09:13,180 به کشف کردن آنچه آن واقع است. 180 00:09:13,180 --> 00:09:14,350 >> بیایید یک دیگر را در اینجا انجام. 181 00:09:14,350 --> 00:09:20,410 اجازه بدهید به جلو، و در دیگری فایل ما این buggy1.c پاسخ. 182 00:09:20,410 --> 00:09:23,110 و در این فایل من رفتن به deliberately-- 183 00:09:23,110 --> 00:09:26,330 اما وانمود کنم که نمی درک آنچه اشتباه من ساخته ام. 184 00:09:26,330 --> 00:09:31,420 >> من قصد دارم به جلو بروید و انجام this-- # شامل، از من 185 00:09:31,420 --> 00:09:33,660 درس من از یک لحظه پیش به دست. 186 00:09:33,660 --> 00:09:36,220 اعضای هیات تحریریه اصلی (خالی)، مانند قبل. 187 00:09:36,220 --> 00:09:40,880 و سپس در اینجا من قصد دارم به انجام رشته ها - get_string. 188 00:09:40,880 --> 00:09:43,770 و به یاد از زمان گذشته که این ابزار، هی، کامپیوتر، 189 00:09:43,770 --> 00:09:48,280 من یک متغیر را، پاسخ آن را، و را نوع آن متغیر یک رشته 190 00:09:48,280 --> 00:09:50,150 بنابراین من می تواند یک یا چند کلمه در آن ذخیره کنید. 191 00:09:50,150 --> 00:09:52,191 >> و سپس بر روی سمت راست طرف از علامت مساوی 192 00:09:52,191 --> 00:09:54,980 get_string است، که یک تابع در کتابخانه CS50 193 00:09:54,980 --> 00:09:55,980 که کند که دقیقا. 194 00:09:55,980 --> 00:09:59,740 این می شود یک تابع و سپس دست آن را از راست به چپ. 195 00:09:59,740 --> 00:10:02,670 بنابراین این علامت مساوی به این معنا نیست "برابر" را به عنوان ما ممکن است در ریاضی فکر می کنم. 196 00:10:02,670 --> 00:10:04,750 این بدان معنی است انتساب از راست به چپ. 197 00:10:04,750 --> 00:10:09,640 بنابراین این به این معنی، را به رشته از کاربر و ذخیره آن در داخل از بازدید کنندگان. 198 00:10:09,640 --> 00:10:10,460 >> حالا اجازه دهید آن استفاده کنید. 199 00:10:10,460 --> 00:10:13,820 اجازه بدهید به جلو در حال حاضر و به عنوان یک دوم خط، اجازه دهید من به جلو بروید و بگویید "سلام" - 200 00:10:13,820 --> 00:10:19,330 نمی "جهان"، اما "سلام،٪ s-- که حفره یا سوراخ ما، کاما از هم است، 201 00:10:19,330 --> 00:10:22,030 که متغیر ما است، و سپس یک نقطه ویرگول. 202 00:10:22,030 --> 00:10:26,070 بنابراین اگر من پیچ نیست تا بیش از حد در اینجا، این به نظر می رسد مانند کد صحیح است. 203 00:10:26,070 --> 00:10:28,090 >> و غرایز من در حال حاضر آن را کامپایل. 204 00:10:28,090 --> 00:10:30,400 فایل به نام buggy1.c. 205 00:10:30,400 --> 00:10:33,770 بنابراین من قصد دارم به انجام buggy1، وارد کنید. 206 00:10:33,770 --> 00:10:36,377 و سد آن، اگر وجود ندارد حتی اشتباهات تر از قبل. 207 00:10:36,377 --> 00:10:38,210 منظورم این است که، بیشتر وجود دارد پیام های خطا آن را 208 00:10:38,210 --> 00:10:40,400 از خطوط واقعی در این برنامه به نظر می رسد. 209 00:10:40,400 --> 00:10:42,730 >> اما غذای آماده در اینجا این است، حتی اگر شما غرق هستید 210 00:10:42,730 --> 00:10:45,040 با دو یا سه و یا چهار پیام های خطا بیشتر، 211 00:10:45,040 --> 00:10:48,340 تمرکز همیشه در بسیار برای اولین بار از این پیام است. 212 00:10:48,340 --> 00:10:52,220 نگاهی به بالا ترین یک، پیمایش به بالا عنوان لازم باشد. 213 00:10:52,220 --> 00:10:53,930 بنابراین در اینجا من buggy1 را تایپ. 214 00:10:53,930 --> 00:10:55,700 در اینجا است که خروجی صدای جرنگ جرنگ عنوان انتظار می رود است. 215 00:10:55,700 --> 00:10:57,290 >> و در اینجا اولین خطا قرمز است. 216 00:10:57,290 --> 00:11:02,370 استفاده از شناسه اعلام نشده رشته، به این معنی من استاندارد در؟ 217 00:11:02,370 --> 00:11:04,260 بنابراین در استاندارد است در واقع چیز دیگری است. 218 00:11:04,260 --> 00:11:06,240 آن را به کاربر اشاره دارد صفحه کلید، در اصل. 219 00:11:06,240 --> 00:11:08,080 >> اما این چیزی است که من به معنای نیست. 220 00:11:08,080 --> 00:11:11,770 من به معنای رشته و من به معنای get_string. 221 00:11:11,770 --> 00:11:16,200 بنابراین آنچه در آن است که من فراموش کرده به انجام این زمان؟ 222 00:11:16,200 --> 00:11:20,230 چیزی که گم این زمان؟ 223 00:11:20,230 --> 00:11:23,600 من # شامل من، بنابراین من دسترسی به تابع () printf است. 224 00:11:23,600 --> 00:11:26,090 >> اما چه چیزی من نمی دسترسی به فقط رتبهدهی نشده است؟ 225 00:11:26,090 --> 00:11:29,420 خوب، درست مثل زمان گذشته، من نیاز به کامپایلر به 226 00:11:29,420 --> 00:11:31,691 صدای جرنگ جرنگ چه این توابع هستند. 227 00:11:31,691 --> 00:11:33,940 Get_string نمی آید با C. و به طور خاص، آن را 228 00:11:33,940 --> 00:11:38,160 در نمی آمد هدر فایل،. 229 00:11:38,160 --> 00:11:40,770 از آن به جای در می آید چیزی کارکنان نوشت، 230 00:11:40,770 --> 00:11:44,176 که یک فایل متفاوت است نام اما به درستی به نام. 231 00:11:44,176 --> 00:11:46,990 232 00:11:46,990 --> 00:11:50,861 >> بنابراین به سادگی با اضافه کردن یک خط که از فراخوان code-- از زمان گذشته 233 00:11:50,861 --> 00:11:53,610 که وقتی صدای جرنگ جرنگ اجرا می شود، آن را به بالا کد من نگاه به پایین، 234 00:11:53,610 --> 00:11:54,193 چپ به راست. 235 00:11:54,193 --> 00:11:57,200 آن را به اطلاع، آه، شما می خواهید. 236 00:11:57,200 --> 00:11:59,900 به من اجازه رفتن و پیدا کردن که، هر جا که بر روی سرور است، 237 00:11:59,900 --> 00:12:03,090 کپی و چسباندن آن، در اصل، به بالای فایل خود را 238 00:12:03,090 --> 00:12:06,820 به طوری که در این نقطه در داستان، خط 1، بقیه برنامه 239 00:12:06,820 --> 00:12:11,651 می توانید، در واقع، استفاده از هر یک از توابع در آن، در میان آنها get_string. 240 00:12:11,651 --> 00:12:13,650 بنابراین من قصد دارم به چشم پوشی بقیه کسانی که اشتباهات، 241 00:12:13,650 --> 00:12:17,190 چون من، در واقع، گمان می برند که تنها یکی از اولین واقع اهمیت. 242 00:12:17,190 --> 00:12:20,780 و من قصد دارم به جلو بروید و مجدد، پس از ذخیره فایل من را buggy1. 243 00:12:20,780 --> 00:12:22,580 و voila، آن کار را انجام داد. 244 00:12:22,580 --> 00:12:29,200 و اگر من ./buggy1 و نوع در، برای به عنوان مثال، Zamyla، من در حال حاضر دریافت خواهد شد به سلام، 245 00:12:29,200 --> 00:12:32,000 Zamyla، به جای سلام، جهان. 246 00:12:32,000 --> 00:12:32,550 >> خیلی خوب. 247 00:12:32,550 --> 00:12:35,890 بنابراین takeaways در اینجا پس از آن به، یکی، سعی کنید به اینسو انسو جمع به عنوان آنجا که می توانید 248 00:12:35,890 --> 00:12:39,140 از پیام های خطا به تنهایی، به دنبال در برخی از کلمات قابل تشخیص است. 249 00:12:39,140 --> 00:12:43,070 محدودیت که، با استفاده از help50 در مشکل تنظیم مشخصات. 250 00:12:43,070 --> 00:12:46,500 اما محدودیت، بیش از حد، همیشه نگاه در خطا بالا تنها، حداقل 251 00:12:46,500 --> 00:12:50,051 در ابتدا، برای دیدن آنچه اطلاعات آن ممکن است در واقع عملکرد. 252 00:12:50,051 --> 00:12:52,300 اما معلوم است وجود دارد قابلیت حتی بیشتر ساخته شده است 253 00:12:52,300 --> 00:12:55,030 به کتابخانه CS50 برای کمک به شما در اوایل ترم 254 00:12:55,030 --> 00:12:57,580 و در اوایل برنامه نویسی کشف کردن آنچه که اشتباه است. 255 00:12:57,580 --> 00:12:59,840 بنابراین اجازه دهید یک مثال دیگر اینجا انجام دهید. 256 00:12:59,840 --> 00:13:04,350 من قصد دارم به پاسخ این buggy2، که، دوباره است، رفتن به ناقص شود 257 00:13:04,350 --> 00:13:05,650 از دروازه، طراحی شده توسط. 258 00:13:05,650 --> 00:13:09,980 >> و من قصد دارم به جلو بروید و # شامل. 259 00:13:09,980 --> 00:13:12,580 و سپس من را به انجام INT اصلی (خالی). 260 00:13:12,580 --> 00:13:14,840 و سپس من را به انجام یک حلقه for. 261 00:13:14,840 --> 00:13:16,690 برای (من اعضای هیات _ 0. 262 00:13:16,690 --> 00:13:18,750 من کمتر از یا برابر با 10 است. 263 00:13:18,750 --> 00:13:24,260 من + +، و پس از آن در آکولاد، من قصد دارم برای چاپ کردن فقط یک نماد هشتگ در اینجا 264 00:13:24,260 --> 00:13:25,920 و یک شخصیت خط جدید. 265 00:13:25,920 --> 00:13:29,220 >> بنابراین قصد من با این برنامه کاملا به سادگی 266 00:13:29,220 --> 00:13:33,150 به تکرار 10 بار و در هر تکرار 267 00:13:33,150 --> 00:13:35,260 که حلقه هر بار از طریق چرخه، 268 00:13:35,260 --> 00:13:37,660 چاپ کردن یک برچسب، یک هشتگ، یک برچسب. 269 00:13:37,660 --> 00:13:40,480 یک خط در هر چون من که خط جدید وجود دارد. 270 00:13:40,480 --> 00:13:42,787 به یاد بیاورید که برای حلقه، در آخرین week-- 271 00:13:42,787 --> 00:13:44,620 و شما بیشتر از آشنا با نحو 272 00:13:44,620 --> 00:13:47,170 با استفاده از آن با عمل قبل از long-- این به من می دهد 273 00:13:47,170 --> 00:13:49,740 یک متغیر به نام من و از آن مجموعه به 0. 274 00:13:49,740 --> 00:13:52,650 >> این افزایش در من هر تکرار 1. 275 00:13:52,650 --> 00:13:54,940 بنابراین من می رود تا 1 به 2 تا 3. 276 00:13:54,940 --> 00:13:57,690 و پس از آن به این بیماری در وسط بین نیمه دونقطه 277 00:13:57,690 --> 00:14:03,010 می شود در هر تکرار بررسی به مطمئن باشید که ما هنوز هم در محدوده هستند. 278 00:14:03,010 --> 00:14:06,830 بنابراین من می خواهم به تکرار 10 بار، بنابراین من باید از بسیار به طور مستقیم فقط 279 00:14:06,830 --> 00:14:09,070 قرار 10 به عنوان حد بالای من وجود دارد. 280 00:14:09,070 --> 00:14:14,310 >> و با این حال، زمانی که من این اجرا پس از آن، کامپایل کردن آن با آرایش buggy2-- 281 00:14:14,310 --> 00:14:15,440 و آن را OK کامپایل. 282 00:14:15,440 --> 00:14:17,980 بنابراین من ندارد خطای نحوی این زمان. 283 00:14:17,980 --> 00:14:20,940 اجازه دهید پیش بروید و اجرا buggy2، وارد کنید. 284 00:14:20,940 --> 00:14:22,620 و در حال حاضر تا رفته. 285 00:14:22,620 --> 00:14:24,890 و اجازه دهید من افزایش اندازه پنجره. 286 00:14:24,890 --> 00:14:33,720 >> من به نظر می رسد 1، 2، 3، 4، 5، 6، 7، 8، 9، 10، 11. 287 00:14:33,720 --> 00:14:38,891 بنابراین 11 هشتگ وجود دارد، حتی اگر من به وضوح 10 در داخل این حلقه قرار داده است. 288 00:14:38,891 --> 00:14:42,140 در حال حاضر، برخی از شما ممکن بلافاصله ببینید آنچه خطا به دلیل، در واقع، این است 289 00:14:42,140 --> 00:14:43,720 یک خطای بسیار سخت به است. 290 00:14:43,720 --> 00:14:46,070 اما آن را بسیار معمول خیلی زود در ساخته شده است. 291 00:14:46,070 --> 00:14:49,820 >> چه من می خواهم به این نکته اشاره، هر چند، است، چگونه ممکن است من این را کشف کردن؟ 292 00:14:49,820 --> 00:14:52,300 خب، معلوم است که کتابخانه CS50 می آید 293 00:14:52,300 --> 00:14:55,380 با نه تنها get_string و get_int و get_float و دیگر توابع. 294 00:14:55,380 --> 00:14:59,980 همچنین با یک تابع خاص می آید نام eprintf، و یا، تابع () printf خطا. 295 00:14:59,980 --> 00:15:03,270 و آن را صرفا به آن را برای شما کمی ساده تر 296 00:15:03,270 --> 00:15:06,310 هنگام اشکال زدایی کد های خود را فقط چاپ یک پیغام خطا بر روی صفحه نمایش 297 00:15:06,310 --> 00:15:07,850 و می دانم که از کجا آمده. 298 00:15:07,850 --> 00:15:11,000 >> برای مثال، یک چیز من ممکن است در اینجا انجام با این تابع this-- است 299 00:15:11,000 --> 00:15:20,230 eprintf، و سپس من قصد دارم به جلو بروید و می گویند من در حال حاضر٪ من، بک اسلش، N. 300 00:15:20,230 --> 00:15:22,330 و من قصد دارم به برق وصل ارزش من. 301 00:15:22,330 --> 00:15:25,400 و تا بالا، به دلیل این است در کتابخانه CS50، 302 00:15:25,400 --> 00:15:27,580 من قصد دارم به جلو بروید و شامل 303 00:15:27,580 --> 00:15:29,169 بنابراین من دسترسی به این تابع است. 304 00:15:29,169 --> 00:15:31,460 اما اجازه دهید در نظر گرفتن آنچه خط 9 قرار است به انجام می شود. 305 00:15:31,460 --> 00:15:32,670 من قصد دارم به حذف این در نهایت. 306 00:15:32,670 --> 00:15:34,670 این هیچ ربطی به با هدف اساسی من. 307 00:15:34,670 --> 00:15:39,090 اما eprintf، تابع () printf خطا است، فقط به معنای به من برخی از اطلاعات تشخیصی است. 308 00:15:39,090 --> 00:15:42,460 وقتی که من برنامه من اجرا، من می خواهم این را ببینید بر روی صفحه نمایش به طور موقت 309 00:15:42,460 --> 00:15:44,550 و همچنین فقط به درک چه خبر است. 310 00:15:44,550 --> 00:15:47,330 >> و، در واقع، در هر تکرار در اینجا خط 9 311 00:15:47,330 --> 00:15:49,260 من می خواهم برای دیدن، چه مقدار از من است؟ 312 00:15:49,260 --> 00:15:50,290 ارزش من چیست؟ 313 00:15:50,290 --> 00:15:51,280 ارزش من چیست؟ 314 00:15:51,280 --> 00:15:55,650 و امیدوارم، من باید تنها این پیام، همچنین، 10 بار مشاهده. 315 00:15:55,650 --> 00:15:57,780 >> بنابراین اجازه دهید من به جلو و کامپایل مجدد برنامه من، 316 00:15:57,780 --> 00:15:59,905 به عنوان من باید انجام دهید هر زمان من ایجاد یک تغییر. ./buggy2. 317 00:15:59,905 --> 00:16:02,680 318 00:16:02,680 --> 00:16:03,640 و now-- OK. 319 00:16:03,640 --> 00:16:04,820 خیلی بیشتر رفتن وجود دارد. 320 00:16:04,820 --> 00:16:07,610 بنابراین اجازه دهید من رفته تا در یک پنجره حتی بزرگتر. 321 00:16:07,610 --> 00:16:10,190 >> و شما که هر یک از دیدن هشتگهای هنوز چاپ. 322 00:16:10,190 --> 00:16:15,270 اما در بین هر یک از آنها در حال حاضر این خروجی تشخیصی فرمت شرح زیر است. 323 00:16:15,270 --> 00:16:17,960 نام برنامه من در اینجا buggy2 است. 324 00:16:17,960 --> 00:16:20,432 نام فایل buggy2.c است. 325 00:16:20,432 --> 00:16:24,080 شماره خط که از آن این چاپ شده بود خط 9 است. 326 00:16:24,080 --> 00:16:27,500 و سپس در سمت راست این است که پیغام خطا که من در انتظار. 327 00:16:27,500 --> 00:16:30,701 >> و چه خوب این است که در حال حاضر من مجبور به حساب لزوما 328 00:16:30,701 --> 00:16:32,200 در سر من چه برنامه من انجام شده است. 329 00:16:32,200 --> 00:16:34,240 من می توانید ببینید که در برای اولین بار تکرار i 0 است، 330 00:16:34,240 --> 00:16:39,420 سپس 1، سپس 2 و سپس 3، پس از 4، پس از آن 5، پس از آن 6، پس از 7، پس از آن 8، پس از آن 9، پس از آن 331 00:16:39,420 --> 00:16:40,980 10. 332 00:16:40,980 --> 00:16:42,050 بنابراین یک دقیقه صبر کنید. 333 00:16:42,050 --> 00:16:43,740 اینجا چه خبره؟ 334 00:16:43,740 --> 00:16:48,190 من هنوز هم به نظر می رسد شمارش شود عنوان 10 در نظر گرفته شده است. 335 00:16:48,190 --> 00:16:50,550 >> اما جایی که من شروع شد؟ 336 00:16:50,550 --> 00:16:53,240 0، 1، 2، 3، 4، 5، 6، 7، 8، 9 10. 337 00:16:53,240 --> 00:16:58,040 بنابراین 0، 1، 2، 3، 4، 5، 6، 7، 8، 9، 10-- انگشت 11TH 338 00:16:58,040 --> 00:16:59,990 نشان دهنده مشکل است. 339 00:16:59,990 --> 00:17:02,850 من به نظر می رسد شمارش اشتباه در حلقه است. 340 00:17:02,850 --> 00:17:06,599 به جای رفتن 10 تکرار، من شروع در 0، 341 00:17:06,599 --> 00:17:09,550 من در و از طریق 10 پایان دادن به. 342 00:17:09,550 --> 00:17:12,030 اما از آنجا که مانند یک کامپیوتر، من شروع شمارش در 0، 343 00:17:12,030 --> 00:17:15,250 من باید شمارش تا به، اما نه از طریق، 10. 344 00:17:15,250 --> 00:17:18,510 >> و به این ترتیب ثابت، من در نهایت متوجه اینجا، یکی از دو چیز است. 345 00:17:18,510 --> 00:17:22,430 من بسیار به سادگی می تواند می گویند شمارش تا کمتر از 10. 346 00:17:22,430 --> 00:17:27,260 بنابراین، 0، 1، 2، 3، 4، 5، 6، 7، 8، 9 است که، در واقع، درست است، 347 00:17:27,260 --> 00:17:28,900 حتی اگر آن را برای تلفن های موبایل یک اشتباه کوچک. 348 00:17:28,900 --> 00:17:35,070 یا من می تواند انجام کمتر یا مساوی تا 9، تا زمانی که من در 0 شروع می شود. 349 00:17:35,070 --> 00:17:40,056 و یا اگر شما واقعا دوست ندارم که، شما می توانید از طریق 10 تعداد بالا اما شروع در 1. 350 00:17:40,056 --> 00:17:41,680 اما باز هم، این فقط این است که رایج نیست. 351 00:17:41,680 --> 00:17:43,977 در programming-- البته نه آنقدر در Scratch-- 352 00:17:43,977 --> 00:17:45,810 اما در برنامه نویسی در C و زبان های دیگر، 353 00:17:45,810 --> 00:17:47,670 مانند جاوا اسکریپت و پایتون و دیگران، آن را 354 00:17:47,670 --> 00:17:49,880 فقط بسیار معمول است برای بحث ما در مورد دودویی 355 00:17:49,880 --> 00:17:53,450 فقط شروع به شمارش در کمترین تعداد شما می توانید، که 0. 356 00:17:53,450 --> 00:17:53,950 خیلی خوب. 357 00:17:53,950 --> 00:17:55,160 به طوری که eprintf است. 358 00:17:55,160 --> 00:17:58,600 و دوباره، در حال حاضر که من نمیفهمد من مشکل، و من قصد دارم برای رفتن به 0 359 00:17:58,600 --> 00:18:01,470 از طریق کمتر از 10، من قصد دارم به در و حذف eprintf. 360 00:18:01,470 --> 00:18:04,580 >> این نباید وجود داشته باشد وقتی که من کشتی کد من و یا ارسال کد من 361 00:18:04,580 --> 00:18:05,800 یا آن را به هر کس دیگری. 362 00:18:05,800 --> 00:18:07,980 این واقعا فقط به معنای به طور موقت استفاده می شود. 363 00:18:07,980 --> 00:18:11,650 اما در حال حاضر من این را ثابت کرده ام مشکل خاص است. 364 00:18:11,650 --> 00:18:16,780 >> خوب، اجازه دهید یک مثال دیگر در اینجا انجام که من قصد دارم به شلاق تا شرح زیر است. 365 00:18:16,780 --> 00:18:22,850 من قصد دارم به جلو بروید و #عبارتند از . 50 $ 366 00:18:22,850 --> 00:18:25,580 و من قصد دارم به جلو بروید و # شامل. 367 00:18:25,580 --> 00:18:29,030 >> و من قصد دارم به صرفه جویی این فایل به عنوان buggy3.c. 368 00:18:29,030 --> 00:18:31,740 و من قصد دارم به جلو بروید و اعلام INT اصلی (خالی). 369 00:18:31,740 --> 00:18:34,186 و پس از آن در داخل وجود دارد من قصد دارم به اعضای هیات من انجام _ - 370 00:18:34,186 --> 00:18:36,435 من می خواهم برای اجرای یک برنامه با get_negative_int. 371 00:18:36,435 --> 00:18:39,146 372 00:18:39,146 --> 00:18:40,770 این یک تابع است که وجود دارد نشده است. 373 00:18:40,770 --> 00:18:42,870 بنابراین ما در حال رفتن به پیاده سازی آن را در یک لحظه. 374 00:18:42,870 --> 00:18:45,541 اما ما قصد داریم برای دیدن چرا آن حشره دار در اولین گذر است. 375 00:18:45,541 --> 00:18:47,290 و یک بار من بدست یک int از کاربر، 376 00:18:47,290 --> 00:18:53,365 من فقط رفتن به چاپ٪ من منفی است عدد صحیح، بک اسلش، N، کاما، من. 377 00:18:53,365 --> 00:18:55,240 به عبارت دیگر، تمام من می خواهید این برنامه به انجام 378 00:18:55,240 --> 00:18:58,000 این است که یک نوع int منفی از کاربر و سپس چاپ 379 00:18:58,000 --> 00:18:59,980 که چنین و چنین INT منفی است. 380 00:18:59,980 --> 00:19:02,080 >> در حال حاضر من نیاز به پیاده سازی این تابع. 381 00:19:02,080 --> 00:19:05,740 بنابراین بعد از آن در فایل من، من قصد دارم برای رفتن جلو و اعلام یک تابع به نام 382 00:19:05,740 --> 00:19:10,670 get_negative_int (خالی) - و ما دوباره به آنچه که خط به معنی دوباره 383 00:19:10,670 --> 00:19:18,790 در یک moment-- INT N؛ do-- انجام شرح زیر است تابع () printf n است :. 384 00:19:18,790 --> 00:19:26,210 و سپس من را به انجام N - get_int، و این در حالی که N بزرگتر از 0 است. 385 00:19:26,210 --> 00:19:28,310 و سپس بازگشت N ؛. 386 00:19:28,310 --> 00:19:31,730 >> بنابراین در بسیاری در آن وجود دارد این اما هیچ یک از آنها ما 387 00:19:31,730 --> 00:19:33,710 در هفته گذشته نگاه کنید، حداقل به طور خلاصه. 388 00:19:33,710 --> 00:19:36,980 بنابراین در خط 10 در اینجا من اعلام یک تابع به نام get_negative_int، 389 00:19:36,980 --> 00:19:39,620 و من قرار داده ام (خالی)، در پرانتز، به این دلیل که این 390 00:19:39,620 --> 00:19:40,950 کند یک ورودی را ندارد. 391 00:19:40,950 --> 00:19:42,910 من هر چیزی عبور نمی به این تابع. 392 00:19:42,910 --> 00:19:44,690 من فقط گرفتن چیزی از آن را. 393 00:19:44,690 --> 00:19:47,270 >> و آنچه من امیدوار به دریافت یک عدد صحیح است. 394 00:19:47,270 --> 00:19:50,040 هیچ نوع داده در آن وجود دارد C به نام negative_int. 395 00:19:50,040 --> 00:19:52,880 این فقط INT، طوری که آن را به روی ما بود تا مطمئن شوید 396 00:19:52,880 --> 00:19:55,340 که ارزش که در واقع بازگشت نه تنها یک int 397 00:19:55,340 --> 00:19:56,380 اما همچنین منفی است. 398 00:19:56,380 --> 00:20:02,150 >> در خط 12 من اعلام یک متغیر نام N و آن را از نوع int. 399 00:20:02,150 --> 00:20:07,500 و سپس در خط 13 تا 18 من انجام کاری در حالی که چیزی درست است. 400 00:20:07,500 --> 00:20:11,040 من قصد دارم پیش و چاپ N است، روده بزرگ، و پس از آن فضا، 401 00:20:11,040 --> 00:20:12,800 مانند یک اعلان برای کاربر. 402 00:20:12,800 --> 00:20:16,410 >> من پس از آن خواستار get_int و ذخیره سازی مقدار بازگشتی به اصطلاح آن 403 00:20:16,410 --> 00:20:18,130 در آن متغیر N. 404 00:20:18,130 --> 00:20:22,600 اما من قصد دارم به انجام این در حالی که N بزرگتر از 0 است. 405 00:20:22,600 --> 00:20:27,960 به عبارت دیگر، در صورتی که کاربر می دهد به من یک int و که تعداد بیشتری از 0 باشد، 406 00:20:27,960 --> 00:20:31,180 بنابر این، مثبت، من قصد دارم به فقط نگه داشتن reprompting کاربر، 407 00:20:31,180 --> 00:20:37,160 حفظ reprompting، توسط آنها را مجبور به همکاری و من INT منفی بدهد. 408 00:20:37,160 --> 00:20:41,640 >> و یک بار N در واقع negative-- است فرض کاربر، نوع -50، 409 00:20:41,640 --> 00:20:46,710 سپس این حلقه در حالی که دیگر چنین نیست چون -50 بزرگتر از 0. 410 00:20:46,710 --> 00:20:51,140 بنابراین ما از که شکستن حلقه منطقی و بازگشت N. 411 00:20:51,140 --> 00:20:53,520 >> اما یکی دیگر وجود دارد چیزی که من باید انجام دهید. 412 00:20:53,520 --> 00:20:56,190 و من به سادگی می توانید این کار را انجام توسط کپی کردن و چسباندن 413 00:20:56,190 --> 00:20:58,540 یک خط از کد در بالای فایل. 414 00:20:58,540 --> 00:21:01,630 من نیاز به آموزش صدای جرنگ جرنگ، یا قول می دهم به صدای جرنگ جرنگ، 415 00:21:01,630 --> 00:21:04,630 صراحت اعلام کرد که من، در واقع، رفتن و پیاده سازی 416 00:21:04,630 --> 00:21:06,020 این تابع get_negative_int. 417 00:21:06,020 --> 00:21:07,674 آن را فقط ممکن در فایل پایین تر است. 418 00:21:07,674 --> 00:21:09,840 باز هم، به یاد آورید که صدای جرنگ جرنگ می خواند چیزهایی بالا به پایین، 419 00:21:09,840 --> 00:21:12,330 از چپ به راست، به طوری که شما می توانید نیست فراخوانی یک تابع اگر صدای جرنگ جرنگ 420 00:21:12,330 --> 00:21:15,330 نمی داند که آن را به وجود داشته باشد. 421 00:21:15,330 --> 00:21:18,430 >> در حال حاضر، متاسفانه، این برنامه، عنوان برخی از شما ممکن است متوجه، 422 00:21:18,430 --> 00:21:19,590 در حال حاضر حشره دار است. 423 00:21:19,590 --> 00:21:21,400 اجازه دهید من جلو بروید و buggy3. 424 00:21:21,400 --> 00:21:26,904 این کامپایل، بنابراین مشکل من در حال حاضر است یک خطای نحوی، مانند یک خطای متنی، 425 00:21:26,904 --> 00:21:29,570 آن را در واقع برای رفتن به یک منطقی خطا که من عمدا 426 00:21:29,570 --> 00:21:32,450 ساخته شده به عنوان فرصتی برای قدم از طریق چه خبر است. 427 00:21:32,450 --> 00:21:35,540 >> من قصد دارم به جلو بروید در حال حاضر و buggy3 اجرا کنید. 428 00:21:35,540 --> 00:21:37,490 و من قصد دارم به جلو و نه همکاری کنند. 429 00:21:37,490 --> 00:21:39,494 من قصد دارم به آن عدد 1 است. 430 00:21:39,494 --> 00:21:41,410 این آن را دوست ندارد، به طوری که آن را به من دوباره موجب. 431 00:21:41,410 --> 00:21:42,147 >> چگونه در مورد 2؟ 432 00:21:42,147 --> 00:21:43,021 3؟ 433 00:21:43,021 --> 00:21:43,520 50؟ 434 00:21:43,520 --> 00:21:44,740 هیچ کدام از این در حال کار. 435 00:21:44,740 --> 00:21:46,890 چگونه در مورد -50؟ 436 00:21:46,890 --> 00:21:48,560 و برنامه به نظر می رسد به کار است. 437 00:21:48,560 --> 00:21:49,970 >> اجازه بدهید من آن را امتحان کنید یک بار دیگر. 438 00:21:49,970 --> 00:21:53,400 اجازه دهید -1، به نظر می رسد به کار است. 439 00:21:53,400 --> 00:21:56,380 اجازه دهید -2، به نظر می رسد به کار است. 440 00:21:56,380 --> 00:21:59,640 اجازه دهید 0. 441 00:21:59,640 --> 00:22:01,684 متعجب، که نادرست است. 442 00:22:01,684 --> 00:22:03,350 در حال حاضر، ما در حال که کمی موشکاف در اینجا. 443 00:22:03,350 --> 00:22:07,090 اما این، در واقع، به صورتی که 0 نه مثبت و نه منفی است. 444 00:22:07,090 --> 00:22:11,150 و به این ترتیب این واقعیت است که برنامه من است و گفت که 0 یک عدد صحیح منفی است، 445 00:22:11,150 --> 00:22:12,820 که از لحاظ فنی درست نیست. 446 00:22:12,820 --> 00:22:15,180 >> در حال حاضر، چرا آن را انجام این کار؟ 447 00:22:15,180 --> 00:22:16,270 خب، ممکن است آن را آشکار است. 448 00:22:16,270 --> 00:22:18,110 و، در واقع، این برنامه است به معنای نسبتا ساده 449 00:22:18,110 --> 00:22:19,670 بنابراین ما باید چیزی به اکتشاف. 450 00:22:19,670 --> 00:22:25,870 >> اما اجازه دهید اشکال زدائی سوم معرفی روش در اینجا به نام debug50. 451 00:22:25,870 --> 00:22:27,750 این یک برنامه است که ما فقط ایجاد کرده اید 452 00:22:27,750 --> 00:22:30,770 در این سال به نام debug50 که شما اجازه خواهد داد 453 00:22:30,770 --> 00:22:34,130 به استفاده از چه چیزی ساخته شده است در به نام دیباگر گرافیکی در IDE CS50. 454 00:22:34,130 --> 00:22:38,400 و یک دیباگر فقط یک برنامه است که به طور کلی شما اجازه می دهد برنامه خود را اجرا کنید 455 00:22:38,400 --> 00:22:44,050 اما گام به گام به گام، خط توسط خط به خط، توقف، مجبور 456 00:22:44,050 --> 00:22:47,626 در اطراف، به دنبال در متغیرهای به طوری که برنامه نه تنها گذشته شما ضربه 457 00:22:47,626 --> 00:22:49,750 و به سرعت چیزی را چاپ و یا چیزی را چاپ کنید. 458 00:22:49,750 --> 00:22:53,250 آن را به شما می دهد یک فرصت، در سرعت انسان، به تعامل با آن. 459 00:22:53,250 --> 00:22:55,470 >> و برای انجام این کار، شما می به سادگی زیر را انجام دهید. 460 00:22:55,470 --> 00:22:58,479 بعد از کامپایل کد خود را، که من در حال حاضر، buggy3، 461 00:22:58,479 --> 00:23:00,020 شما جلو بروید و اجرا debug50 ./buggy. 462 00:23:00,020 --> 00:23:03,460 463 00:23:03,460 --> 00:23:06,760 بنابراین بسیار شبیه help50 است را اجرا می کنید help50 و سپس دستور، 464 00:23:06,760 --> 00:23:10,120 debug50 است را اجرا می کنید debug50 و سپس نام دستور. 465 00:23:10,120 --> 00:23:14,440 >> در حال حاضر تماشای چه اتفاقی می افتد بر روی صفحه نمایش من، در سمت راست به طور خاص. 466 00:23:14,440 --> 00:23:19,400 وقتی که من اجرا، همه از ناگهانی پانل این راست 467 00:23:19,400 --> 00:23:20,419 باز می شود تا بر روی صفحه نمایش. 468 00:23:20,419 --> 00:23:22,210 و در بسیاری رفتن وجود دارد در در نگاه اول. 469 00:23:22,210 --> 00:23:25,110 اما بیش از حد وجود ندارد های زیادی در مورد هنوز نگران باشید. 470 00:23:25,110 --> 00:23:28,570 >> این نشان به من همه چیز که که در داخل از برنامه من 471 00:23:28,570 --> 00:23:31,130 در حال حاضر و از طریق این دکمه های تا بالا است و سپس 472 00:23:31,130 --> 00:23:35,910 من اجازه می دهد تا از طریق کد من قدم در نهایت به گام گام به گام. 473 00:23:35,910 --> 00:23:37,140 اما نه تنها هنوز. 474 00:23:37,140 --> 00:23:38,060 توجه داشته باشید چه اتفاقی می افتد. 475 00:23:38,060 --> 00:23:40,600 در پنجره ترمینال من من برای N را برانگیخت. 476 00:23:40,600 --> 00:23:44,560 و من قصد دارم به جلو بروید و همکاری این زمان و نوع در -1. 477 00:23:44,560 --> 00:23:48,770 و البته کمی مرموزانه، -1 یک عدد صحیح منفی است، به عنوان انتظار می رود. 478 00:23:48,770 --> 00:23:52,020 >> و پس از آن کودک با خارج وضعیت 0 GDBserver خروج. 479 00:23:52,020 --> 00:23:55,180 GDB، گنو دیباگر، نام است از نرم افزار های اساسی 480 00:23:55,180 --> 00:23:56,620 که این دیباگر اجرا می کند. 481 00:23:56,620 --> 00:24:00,500 اما این همه واقعا به معنی، دیباگر رفت چون برنامه من ترک 482 00:24:00,500 --> 00:24:01,710 و همه به خوبی. 483 00:24:01,710 --> 00:24:06,020 اگر من می خواهم به واقعا برنامه من اشکال زدایی، من به پیشگیرانه debug50 بگویم، 484 00:24:06,020 --> 00:24:08,920 که در آن من می خواهم به شروع پله از طریق کد من؟ 485 00:24:08,920 --> 00:24:11,750 >> و شاید ساده ترین راه برای انجام این کار به شرح زیر است. 486 00:24:11,750 --> 00:24:15,300 اگر من بیش از شناور قطره قطره از ویرایشگر من در اینجا، 487 00:24:15,300 --> 00:24:19,090 بنابراین واقعا فقط در نوار کناری در اینجا، به سمت چپ از شماره خط، 488 00:24:19,090 --> 00:24:21,870 توجه کنید که اگر من فقط کلیک کنید یک بار، من قرار دادن یک نقطه قرمز رنگ است. 489 00:24:21,870 --> 00:24:24,460 و نقطه های کوچک قرمز رنگ، مثل یک علامت توقف، معنی، هی، 490 00:24:24,460 --> 00:24:29,430 debug50، اعدام مکث از کد من سمت راست وجود دارد که من این برنامه را اجرا کنید. 491 00:24:29,430 --> 00:24:30,260 >> بنابراین اجازه دهید انجام این کار. 492 00:24:30,260 --> 00:24:37,340 اجازه بدهید به جلو و اجرای برنامه های من دوباره با debug50 ./buggy3، وارد کنید. 493 00:24:37,340 --> 00:24:40,110 و در حال حاضر، اطلاع، چیزی مختلف اتفاق افتاده است. 494 00:24:40,110 --> 00:24:42,440 من از درخواست نیست در عین حال در پنجره ترمینال من 495 00:24:42,440 --> 00:24:45,430 برای هر چیزی، چرا که من نمی بدست وجود دارد هنوز در برنامه من است. 496 00:24:45,430 --> 00:24:47,950 توجه داشته باشید که در خط 8 که در حال حاضر مشخص شده است، 497 00:24:47,950 --> 00:24:51,720 و یک فلش کوچک وجود دارد در ضرب المثل سمت چپ، شما در اینجا متوقف شد. 498 00:24:51,720 --> 00:24:55,030 این خط از کد، خط 8، هنوز اعدام نشده است. 499 00:24:55,030 --> 00:24:58,940 >> و چه چیزی کنجکاو، اگر من نگاه در اینجا در سمت راست، 500 00:24:58,940 --> 00:25:03,530 توجه کنید که من یک محلی است متغیر، محلی به این معنا 501 00:25:03,530 --> 00:25:05,450 که آن را در داخل تابع فعلی است. 502 00:25:05,450 --> 00:25:08,920 و مقدار آن، ظاهرا به طور پیش فرض، و به نوعی به راحتی، 0 است. 503 00:25:08,920 --> 00:25:10,260 اما من نه از نوع 0. 504 00:25:10,260 --> 00:25:13,410 که فقط اتفاق می افتد آن مقدار پیش فرض در حال حاضر. 505 00:25:13,410 --> 00:25:15,490 >> بنابراین اجازه دهید من به جلو و انجام این کار در حال حاضر. 506 00:25:15,490 --> 00:25:18,680 اجازه دهید من جلو و در رفتن بالا سمت راست در اینجا، من 507 00:25:18,680 --> 00:25:20,970 رفتن به جلو بروید و کلیک بر روی این آیکون برای اولین بار است که 508 00:25:20,970 --> 00:25:25,360 معنی گام بر که به معنی جست و خیز نیست اما مرحله در طول این خط از کد، 509 00:25:25,360 --> 00:25:27,770 اجرای آن در طول راه. 510 00:25:27,770 --> 00:25:30,710 >> و در حال حاضر، اطلاع، من سریع به تازگی تغییر کرده است. 511 00:25:30,710 --> 00:25:31,380 چرا اینطور است؟ 512 00:25:31,380 --> 00:25:33,639 من debug50 گفته ام، اجرای این خط از کد. 513 00:25:33,639 --> 00:25:34,930 این خط از کد چیست؟ 514 00:25:34,930 --> 00:25:35,960 من دهید برای یک int. 515 00:25:35,960 --> 00:25:36,460 خوب. 516 00:25:36,460 --> 00:25:37,400 اجازه دهید من همکاری کنند. 517 00:25:37,400 --> 00:25:41,340 اجازه دهید جلو بروید و تایپ -1، را وارد کنید. 518 00:25:41,340 --> 00:25:42,920 و در حال حاضر متوجه آنچه تغییر کرده است. 519 00:25:42,920 --> 00:25:46,060 در سمت راست، متغیر محلی من 520 00:25:46,060 --> 00:25:48,200 است به عنوان -1 اکنون نشان داد. 521 00:25:48,200 --> 00:25:49,810 و هنوز هم از نوع int. 522 00:25:49,810 --> 00:25:53,102 >> و توجه بیش از حد، من به اصطلاح پشته پاسخ، جایی که من مکث کرد؟ 523 00:25:53,102 --> 00:25:54,810 ما بیشتر در مورد صحبت این در آینده است. 524 00:25:54,810 --> 00:25:58,620 اما پشته پاسخ فقط به اشاره چه توابع در حال حاضر در حرکت است. 525 00:25:58,620 --> 00:26:00,040 در حال حاضر آن را فقط اصلی. 526 00:26:00,040 --> 00:26:03,590 و در حال حاضر تنها محلی متغیر با مقدار 1 است. 527 00:26:03,590 --> 00:26:09,840 >> و زمانی که من در نهایت بیش از این خط گام در اینجا، با که آیکون همان در بالا سمت راست، 528 00:26:09,840 --> 00:26:11,410 -1 یک عدد صحیح منفی است. 529 00:26:11,410 --> 00:26:13,580 در حال حاضر آن توقف بیش از آن آکولاد. 530 00:26:13,580 --> 00:26:14,740 اجازه دهید اجازه دهید آن را انجام دهد. 531 00:26:14,740 --> 00:26:17,300 من بیش از آن خط، و voila گام. 532 00:26:17,300 --> 00:26:20,240 >> بنابراین نه همه که وحشتناکی روشنگر در عین حال، 533 00:26:20,240 --> 00:26:23,550 اما اجازه دهید به من مکث و فکر می کنم از طریق منطقی 534 00:26:23,550 --> 00:26:24,870 آنچه این برنامه انجام شده است. 535 00:26:24,870 --> 00:26:26,890 اما این مورد اشتباه است. 536 00:26:26,890 --> 00:26:28,510 بیایید این کار را دوباره انجام شرح زیر است. 537 00:26:28,510 --> 00:26:31,340 >> من قصد دارم به ترک است که نقطه انفصال در خط 8 با نقطه قرمز رنگ. 538 00:26:31,340 --> 00:26:32,830 من قصد دارم به تکرار debug50. 539 00:26:32,830 --> 00:26:34,400 آن را به طور خودکار در اینجا متوقف شد. 540 00:26:34,400 --> 00:26:37,660 اما این بار، به جای پله بر این خط، 541 00:26:37,660 --> 00:26:42,290 اجازه دهید من در واقع در داخل رفتن get_negative_int و کشف کردن، 542 00:26:42,290 --> 00:26:45,530 چرا آن را به عنوان یک پذیرش 0 پاسخ معتبر است؟ 543 00:26:45,530 --> 00:26:47,990 >> بنابراین به جای کلیک کردن مرحله بیش از. 544 00:26:47,990 --> 00:26:50,630 من قصد دارم به جلو بروید کلیک کنید و قدم به. 545 00:26:50,630 --> 00:26:54,030 و توجه کنید که خط 8 که در حال حاضر در حال حاضر برجسته به طور ناگهانی 546 00:26:54,030 --> 00:26:56,900 خط 17 می شود. 547 00:26:56,900 --> 00:26:59,947 >> در حال حاضر، آن است که دیباگر نیست خطوط 14 و 15 و 16 قلم است. 548 00:26:59,947 --> 00:27:01,780 این فقط هیچ چیز وجود دارد به شما وجود دارد را نشان می دهد. 549 00:27:01,780 --> 00:27:04,050 کسانی که تنها تعریف متغیرها، و پس از آن کلمه انجام دهید وجود دارد 550 00:27:04,050 --> 00:27:05,390 و سپس یک آکولاد باز است. 551 00:27:05,390 --> 00:27:09,227 تنها خط عملکردی که آبدار واقعا این یکی در اینجا، 17 است. 552 00:27:09,227 --> 00:27:11,060 و این که در آن ما را به طور خودکار متوقف شد. 553 00:27:11,060 --> 00:27:13,870 >> بنابراین تابع () printf ( "n.is:") ؛، تا که هنوز رخ نداده است. 554 00:27:13,870 --> 00:27:18,250 بنابراین اجازه دهید پیش بروید و کلیک کنید مرحله بیش از. 555 00:27:18,250 --> 00:27:20,326 در حال حاضر سریع من، در واقع، به تغییر ( "n است:"). 556 00:27:20,326 --> 00:27:22,450 حالا get_int، من قصد ندارم به زحمت پله به، 557 00:27:22,450 --> 00:27:24,750 چرا که تابع ساخته شده توسط CS50 در کتابخانه. 558 00:27:24,750 --> 00:27:25,750 این احتمالا درست است. 559 00:27:25,750 --> 00:27:28,440 >> بنابراین من قصد دارم به جلو بروید و مرتب کردن بر اساس با دادن آن همکاری 560 00:27:28,440 --> 00:27:30,590 یک int، اما نه یک INT منفی است. 561 00:27:30,590 --> 00:27:32,870 بنابراین اجازه دهید من به جلو و ضربه 0. 562 00:27:32,870 --> 00:27:39,460 و در حال حاضر چه اتفاقی می افتد وقتی که من به خط 21؟ 563 00:27:39,460 --> 00:27:40,890 من دوباره تکرار نمی کردم. 564 00:27:40,890 --> 00:27:43,320 من به نظر نمی رسد که در حلقه گیر می شود. 565 00:27:43,320 --> 00:27:45,990 به عبارت دیگر، این زرد نوار را حفظ کند در اطراف، 566 00:27:45,990 --> 00:27:47,130 و در اطراف، و در اطراف. 567 00:27:47,130 --> 00:27:48,340 >> در حال حاضر، این است که چرا؟ 568 00:27:48,340 --> 00:27:49,920 خب، N، چه است که n در حال حاضر؟ 569 00:27:49,920 --> 00:27:53,280 من می توانید در محلی نگاه متغیرها در دیباگر. 570 00:27:53,280 --> 00:27:53,816 N 0 است. 571 00:27:53,816 --> 00:27:55,190 همه حق است، چه شرایط من بود؟ 572 00:27:55,190 --> 00:27:58,700 >> 20-- خط 20 است، خوب، 0 بیشتر از 0 است. 573 00:27:58,700 --> 00:27:59,500 که درست نیست. 574 00:27:59,500 --> 00:28:01,020 0 است بزرگتر از 0. 575 00:28:01,020 --> 00:28:02,820 و بنابراین من از این شکست. 576 00:28:02,820 --> 00:28:06,370 >> و به همین دلیل در خط 21، اگر من در واقع ادامه، 577 00:28:06,370 --> 00:28:10,370 من قصد دارم به بازگشت 0، حتی هر چند که من باید رد 0 578 00:28:10,370 --> 00:28:12,484 به عنوان در واقع نه منفی. 579 00:28:12,484 --> 00:28:14,650 بنابراین در حال حاضر، من واقعا حتی نمی در مورد مراقبت از دیباگر. 580 00:28:14,650 --> 00:28:16,900 کردم آن، من لازم نیست مطمئن شوید که چه بیشتر در جریان است. 581 00:28:16,900 --> 00:28:19,233 >> بنابراین من قصد دارم به جلو بروید و فقط با کلیک بر روی دکمه بازی، 582 00:28:19,233 --> 00:28:20,240 و اجازه دهید این پایان است. 583 00:28:20,240 --> 00:28:23,440 در حال حاضر، من متوجه شدم که من اشکال ظاهرا در خط 20. 584 00:28:23,440 --> 00:28:25,160 که خطای منطقی من است. 585 00:28:25,160 --> 00:28:28,100 >> و بنابراین، آنچه من می خواهم به انجام را تغییر دهید؟ 586 00:28:28,100 --> 00:28:32,500 اگر مشکل این است که من نه نواز 0، آن را فقط یک خطای منطقی است. 587 00:28:32,500 --> 00:28:35,910 و می توانم بگویم در حالی که n است بزرگتر یا برابر با 0، 588 00:28:35,910 --> 00:28:38,330 حفظ باعث کاربر دوباره و دوباره. 589 00:28:38,330 --> 00:28:41,050 >> پس، دوباره، اشتباه ساده، شاید حتی واضح زمانی که شما به من دیدم 590 00:28:41,050 --> 00:28:42,410 ارسال آن فقط چند دقیقه پیش. 591 00:28:42,410 --> 00:28:44,570 اما غذای آماده در اینجا این است که با اشکال زدایی 50، 592 00:28:44,570 --> 00:28:46,850 و با اشکال زدایی نرم افزار به طور کلی، 593 00:28:46,850 --> 00:28:51,370 شما این قدرت جدید پیدا شده به راه رفتن را از طریق کد خود را، نگاه 594 00:28:51,370 --> 00:28:55,590 از طریق این پانل سمت راست چه ارزش متغیرهای شما می باشد. 595 00:28:55,590 --> 00:28:57,700 بنابراین شما لزوما مجبور به استفاده از چیزی 596 00:28:57,700 --> 00:29:00,630 مثل شما eprintf به چاپ آن ارزش ها. 597 00:29:00,630 --> 00:29:04,430 شما در واقع می توانید آنها را ببینید بصری بر روی صفحه نمایش. 598 00:29:04,430 --> 00:29:08,920 >> در حال حاضر، فراتر از این، آن را شایان ذکر که یکی دیگر از روش هایی که وجود دارد 599 00:29:08,920 --> 00:29:09,890 در واقع فوق العاده رایج است. 600 00:29:09,890 --> 00:29:13,120 و شما ممکن است به همین دلیل این کمی تعجب مرد در اینجا شده است در مرحله نشسته است. 601 00:29:13,120 --> 00:29:16,490 بنابراین این روش وجود دارد، به طور کلی شناخته شده به عنوان لاستیک اشکال زدایی اردک، 602 00:29:16,490 --> 00:29:18,786 که واقعا فقط یک است عهد به این واقعیت 603 00:29:18,786 --> 00:29:20,660 که برنامه نویسان اغلب هنگامی که در حال نوشتن کد، 604 00:29:20,660 --> 00:29:22,650 آنها لزوما نمی همکاری با دیگران، 605 00:29:22,650 --> 00:29:24,030 و یا کار در یک محیط مشترک. 606 00:29:24,030 --> 00:29:25,050 >> آنها از در خانه هستید. 607 00:29:25,050 --> 00:29:25,910 شاید آن در اواخر شب. 608 00:29:25,910 --> 00:29:28,190 آنها در حال تلاش برای کشف برخی از مشکلات را در کد خود را. 609 00:29:28,190 --> 00:29:29,330 و آنها فقط از دیدن آن نیست. 610 00:29:29,330 --> 00:29:30,329 >> و هیچ اتاقی وجود دارد. 611 00:29:30,329 --> 00:29:31,250 هیچ TF وجود دارد. 612 00:29:31,250 --> 00:29:32,680 هیچ CA اطراف وجود دارد. 613 00:29:32,680 --> 00:29:36,440 همه آنها را در قفسه خود را این تبلیغات در لاستیک کوچک است. 614 00:29:36,440 --> 00:29:39,030 >> و به این ترتیب اشکال زدایی لاستیک اردک فقط این دعوت است 615 00:29:39,030 --> 00:29:42,780 به چیزی به عنوان احمقانه فکر می کنم این به عنوان یک موجود واقعی، 616 00:29:42,780 --> 00:29:46,940 و در واقع از طریق کد خود را راه رفتن شفاهی به این جسم بی جان. 617 00:29:46,940 --> 00:29:49,230 بنابراین، برای مثال، اگر این مثال من است here-- 618 00:29:49,230 --> 00:29:52,470 و به یاد آورید که پیش از آن مشکل این بود، 619 00:29:52,470 --> 00:29:58,140 اگر من این اولین خط از کد حذف، و من جلو بروید و حشره دار 0 دوباره، 620 00:29:58,140 --> 00:30:01,220 یاد بیاورید که من این بود پیام های خطا در اینجا. 621 00:30:01,220 --> 00:30:05,997 بنابراین این ایده در اینجا، هر چند که من مسخره احساس در لحظه انجام این کار عمومی، 622 00:30:05,997 --> 00:30:06,580 که خطا است. 623 00:30:06,580 --> 00:30:10,910 >> خوب، پس مشکل من این است که من به طور ضمنی یک تابع کتابخانه اعلام کرد. 624 00:30:10,910 --> 00:30:12,610 و تابع کتابخانه printf است. 625 00:30:12,610 --> 00:30:15,290 Declare-- OK، اعلام مرا به یاد نمونه های اولیه. 626 00:30:15,290 --> 00:30:18,930 >> این بدان معناست که من به واقع نیاز کامپایلر به در پیش چه 627 00:30:18,930 --> 00:30:19,980 تابع نظر می رسد. 628 00:30:19,980 --> 00:30:20,930 یک دقیقه صبر کن. 629 00:30:20,930 --> 00:30:23,580 من io.h. استاندارد ندارد 630 00:30:23,580 --> 00:30:24,530 خیلی ممنون. 631 00:30:24,530 --> 00:30:27,330 >> پس فقط این فرآیند of-- شما لازم نیست که در واقع یک اردک است. 632 00:30:27,330 --> 00:30:29,819 اما این ایده راه رفتن خودتان را از طریق کد خود را 633 00:30:29,819 --> 00:30:31,610 به طوری که شما حتی شنیدن خودتان، به طوری که شما 634 00:30:31,610 --> 00:30:35,620 متوجه حذفیات در خود را اظهارات، این ایده به طور کلی. 635 00:30:35,620 --> 00:30:38,910 >> و شاید منطقی تر، نه چندان زیادی با آن یکی اما بیشتر درگیر 636 00:30:38,910 --> 00:30:44,220 به عنوان مثال ما فقط در 3.c حشره دار انجام داد، شما ممکن است خودتان را از طریق آن راه رفتن 637 00:30:44,220 --> 00:30:45,310 به شرح زیر است. 638 00:30:45,310 --> 00:30:49,190 پس همه حق، لاستیک تبلیغات در، DDB، اگر شما خواهد شد. 639 00:30:49,190 --> 00:30:52,350 در اینجا ما در تابع اصلی من، من خواستار گرفتن INT منفی است. 640 00:30:52,350 --> 00:30:54,660 >> و من گرفتن مقدار بازگشتی است. 641 00:30:54,660 --> 00:31:00,410 من آن را ذخیره سازی بر روی سمت چپ در خط 8 را در یک متغیر به نام من. 642 00:31:00,410 --> 00:31:02,380 OK، اما صبر کنید، چگونه که ارزش گرفتن؟ 643 00:31:02,380 --> 00:31:04,130 اجازه دهید من در تابع نگاه در خط 12. 644 00:31:04,130 --> 00:31:05,760 >> در خط 12، ما باید از نوع int منفی است. 645 00:31:05,760 --> 00:31:08,190 هیچ ورودی را ندارد، نمی گرداند یک int، OK. 646 00:31:08,190 --> 00:31:10,929 من در خط 14 A N متغیر. 647 00:31:10,929 --> 00:31:12,220 آن را به ذخیره یک عدد صحیح. 648 00:31:12,220 --> 00:31:13,760 این همان چیزی است که من می خواهم. 649 00:31:13,760 --> 00:31:18,480 >> بنابراین موارد زیر را انجام در حالی که N is-- اجازه من خنثیسازی چه ثابت من در حال حاضر ساخته شده است. 650 00:31:18,480 --> 00:31:22,710 بنابراین در حالی که N بزرگتر از 0، چاپ کردن N است، OK. 651 00:31:22,710 --> 00:31:25,170 و پس از آن تماس را دریافت int در N ذخیره می شود. 652 00:31:25,170 --> 00:31:30,160 و سپس به بررسی اگر n 0، n است not-- وجود دارد آن است. 653 00:31:30,160 --> 00:31:31,910 پس، دوباره، شما نمی نیاز اردک واقعی. 654 00:31:31,910 --> 00:31:35,650 اما فقط خودتان از طریق راه رفتن کد خود را به عنوان یک ورزش فکری 655 00:31:35,650 --> 00:31:37,720 اغلب به شما کمک کند متوجه چه خبر است، 656 00:31:37,720 --> 00:31:41,170 به عنوان مخالف فقط انجام کاری مثل این، خیره شدن به صفحه نمایش، 657 00:31:41,170 --> 00:31:43,720 و خود را صحبت نمی کنم از طریق آن، که صادقانه است 658 00:31:43,720 --> 00:31:46,270 تقریبا به عنوان یک روش موثر. 659 00:31:46,270 --> 00:31:48,620 بنابراین وجود شما به آن، تعدادی از تکنیک های مختلف 660 00:31:48,620 --> 00:31:52,102 برای در واقع اشکال زدایی کد شما و پیدا کردن مقصر، همه از آن 661 00:31:52,102 --> 00:31:54,810 باید ابزار در جعبه ابزار خود را به طوری که شما در اواخر شب نیست، 662 00:31:54,810 --> 00:31:57,660 به ویژه، شما را در ناهار خوری هستید سالن ها، و یا در ساعات اداری، 663 00:31:57,660 --> 00:32:00,368 کوبیدن سر خود را در برابر دیوار، تلاش برای حل بعضی از مشکل. 664 00:32:00,368 --> 00:32:02,020 متوجه باشید که ابزار نرم افزار وجود دارد. 665 00:32:02,020 --> 00:32:03,720 ابزار اردک لاستیک وجود دارد. 666 00:32:03,720 --> 00:32:09,630 و کارکنان کل وجود دارد حمایت انتظار برای قرض دادن یک دست. 667 00:32:09,630 --> 00:32:13,120 >> بنابراین در حال حاضر، یک کلمه در مشکل مجموعه ها، و در آنچه که ما به شما امید 668 00:32:13,120 --> 00:32:15,620 خارج شدن از آنها، و چگونه ما در مورد ارزیابی است. 669 00:32:15,620 --> 00:32:17,680 میانگین پستها در طول برنامه درسی این دوره، مجموعه مسائل CS50 را 670 00:32:17,680 --> 00:32:22,320 در چهار محور اصلی ارزیابی، به طوری که به speak-- دامنه، صحت، طراحی، 671 00:32:22,320 --> 00:32:23,060 و سبک. 672 00:32:23,060 --> 00:32:25,910 و دامنه فقط به چه مقدار اشاره از قطعه شما گاز گرفته؟ 673 00:32:25,910 --> 00:32:28,080 چگونه بسیاری از مشکل شما تلاش کرده اند؟ 674 00:32:28,080 --> 00:32:30,110 چه سطحی از تلاش شما آشکار؟ 675 00:32:30,110 --> 00:32:35,750 >> صحت است، کار می کند برنامه را به عنوان آن را به در مشخصات CS50 قرار 676 00:32:35,750 --> 00:32:38,640 وقتی که شما ورودی خاصی را ارائه و یا خروجی خاص به آینده؟ 677 00:32:38,640 --> 00:32:41,130 طراحی ذهنی بسیاری از آنها است. 678 00:32:41,130 --> 00:32:43,360 و این یکی از که خواهد شد را طولانی ترین به یاد بگیرند 679 00:32:43,360 --> 00:32:47,220 و طولانی ترین برای تدریس، در تا آنجا که جوش پایین به، 680 00:32:47,220 --> 00:32:49,530 چگونه به خوبی نوشته شده است کد شما است؟ 681 00:32:49,530 --> 00:32:52,920 >> این یک چیز فقط چاپ صحیح است خروجی و یا بازگشت به ارزش های سمت راست. 682 00:32:52,920 --> 00:32:55,400 اما شما آن را انجام عنوان کارآمد که ممکن است؟ 683 00:32:55,400 --> 00:32:58,210 آیا شما آن را انجام تقسیم و تسخیر، یا باینری 684 00:32:58,210 --> 00:33:01,500 جستجو به عنوان ما به زودی خواهید دید که ما انجام دادیم دو هفته پیش با دفترچه تلفن؟ 685 00:33:01,500 --> 00:33:04,670 راه های بهتری هم برای حل وجود دارد مشکل از شما در حال حاضر اینجا هستید؟ 686 00:33:04,670 --> 00:33:06,380 که فرصتی برای طراحی بهتر است. 687 00:33:06,380 --> 00:33:08,530 >> و پس از آن style-- چگونه بسیار کد شما است؟ 688 00:33:08,530 --> 00:33:12,370 شما متوجه خواهید شد که من خیلی هستم به ویژه در مورد تورفتگی کد من، 689 00:33:12,370 --> 00:33:15,300 و مطمئن شوید متغیرهای من منطقی به نام. N، 690 00:33:15,300 --> 00:33:19,660 در حالی که کوتاه، یک نام خوب برای یک است تعداد، من برای یک عدد صحیح شمارش، 691 00:33:19,660 --> 00:33:20,727 برای یک رشته است. 692 00:33:20,727 --> 00:33:22,560 و ما می توانیم دیگر سبک نام متغیر. 693 00:33:22,560 --> 00:33:25,500 سبک است که چقدر خوب کند کد خود را نگاه کنید؟ 694 00:33:25,500 --> 00:33:26,600 و چگونه قابل خواندن در آن است؟ 695 00:33:26,600 --> 00:33:29,650 >> و در طول زمان، چه استادیار خود را و TFS در این دوره انجام خواهد داد 696 00:33:29,650 --> 00:33:31,870 است شما را با آن ارائه نوع بازخورد کیفی 697 00:33:31,870 --> 00:33:34,330 به طوری که شما بهتر در آن جنبه های مختلف. 698 00:33:34,330 --> 00:33:37,510 و از نظر ما چگونه ارزیابی هر یک از این محورها، 699 00:33:37,510 --> 00:33:40,080 آن را معمولا با تعداد بسیار کمی سطل به طوری که شما، به طور کلی، 700 00:33:40,080 --> 00:33:41,680 یک حس که چگونه به خوبی شما انجام می دهند. 701 00:33:41,680 --> 00:33:45,680 و، در واقع، اگر شما یک نمره در دریافت هر یک از این axes-- صحت، طراحی 702 00:33:45,680 --> 00:33:49,659 و سبک especially-- که تعداد به طور کلی بین 1 تا 5 است. 703 00:33:49,659 --> 00:33:52,450 و، به معنای واقعی کلمه، اگر شما در حال گرفتن 3 در آغاز ترم، 704 00:33:52,450 --> 00:33:53,977 این یک چیز بسیار خوب است. 705 00:33:53,977 --> 00:33:55,810 این بدان معنی است هنوز هم وجود دارد اتاق را برای بهبود، 706 00:33:55,810 --> 00:33:58,490 که شما می توانید برای در امید گرفتن یک کلاس برای اولین بار. 707 00:33:58,490 --> 00:34:01,820 است امیدوارم برخی کمی از سقف وجود دارد که شما در حال مشتاق به رسیدن. 708 00:34:01,820 --> 00:34:03,970 و به این ترتیب گرفتن در 3 اولین قطعه، 709 00:34:03,970 --> 00:34:06,550 اگر نه برخی از 2 و 4، است، در واقع، چیز خوبی است. 710 00:34:06,550 --> 00:34:08,880 آن را به خوبی در محدوده است، به خوبی در انتظار. 711 00:34:08,880 --> 00:34:11,421 >> و اگر ذهن خود را مسابقه است، صبر کنید یک دقیقه، سه نفر از پنج. 712 00:34:11,421 --> 00:34:12,620 این واقعا یک 6 از 10. 713 00:34:12,620 --> 00:34:13,560 که 60٪ است. 714 00:34:13,560 --> 00:34:14,830 خدای من، که F است 715 00:34:14,830 --> 00:34:15,870 >> این طور نیست. 716 00:34:15,870 --> 00:34:17,600 این طور نیست، در واقع، که. 717 00:34:17,600 --> 00:34:22,710 نه، این یک فرصت برای بهبود است در طول دوره از ترم. 718 00:34:22,710 --> 00:34:25,580 و اگر شما گرفتن برخی از poors، این یک فرصت هستند 719 00:34:25,580 --> 00:34:29,199 را به استفاده از ساعات اداری، قطعا بخش ها و دیگر منابع است. 720 00:34:29,199 --> 00:34:32,840 >> بهترین فرصت است، واقعا، به افتخار که چقدر شما را 721 00:34:32,840 --> 00:34:34,520 در طول دوره از ترم آمده است. 722 00:34:34,520 --> 00:34:38,199 بنابراین درک، اگر هیچ چیز دیگری، سه خوب است. 723 00:34:38,199 --> 00:34:40,179 و آن را اجازه می دهد تا اتاق را برای رشد در طول زمان. 724 00:34:40,179 --> 00:34:43,090 >> همانطور که به چه کسانی که محور هستند وزن، در واقع شما 725 00:34:43,090 --> 00:34:46,745 رفتن به صرف بیشتر وقت خود را گرفتن همه چیز را به کار، چه رسد به درستی. 726 00:34:46,745 --> 00:34:49,120 و به این ترتیب صحت تمایل به وزن شود بیشتر، به عنوان با 727 00:34:49,120 --> 00:34:51,360 این عامل ضربی از سه. 728 00:34:51,360 --> 00:34:54,659 طراحی نیز مهم است، اما چیزی است که شما لزوما 729 00:34:54,659 --> 00:34:58,220 صرف همه از آن ساعت در تلاش برای بدست آوردن همه چیز فقط به کار است. 730 00:34:58,220 --> 00:35:00,019 >> و پس از آن وزن کمی به آرامی است. 731 00:35:00,019 --> 00:35:01,560 و پس از آن به سبک حداقل وزن است. 732 00:35:01,560 --> 00:35:03,710 حتی اگر آن را کمتر مهم اساسا، 733 00:35:03,710 --> 00:35:05,990 آن را فقط، شاید، ساده ترین کار این حق، 734 00:35:05,990 --> 00:35:08,440 تقلید از نمونه های ما انجام این کار در سخنرانی و بخش، 735 00:35:08,440 --> 00:35:11,080 با همه چیز به خوبی فاصله دار است، و اظهار نظر، 736 00:35:11,080 --> 00:35:14,320 و غیره است که در میان ساده ترین همه چیز برای انجام و گرفتن حق. 737 00:35:14,320 --> 00:35:16,960 بنابراین به عنوان مثل، متوجه که آن نقاط می باشد 738 00:35:16,960 --> 00:35:19,000 است که نسبتا آسان به درک. 739 00:35:19,000 --> 00:35:22,360 >> و در حال حاضر یک کلمه در this-- صداقت علمی. 740 00:35:22,360 --> 00:35:25,150 بنابراین در هر درس برنامه درسی، شما خواهید دید 741 00:35:25,150 --> 00:35:27,630 که البته کاملا کمی از زبان در اطراف این. 742 00:35:27,630 --> 00:35:31,380 و البته طول می کشد موضوع صداقت دانشگاهی کاملا جدی. 743 00:35:31,380 --> 00:35:33,450 >> ما تمایز، برای بهتر یا بدتر، 744 00:35:33,450 --> 00:35:36,570 از داشتن ارسال هر سال بیش دانش آموزان برای اقدام انضباطی 745 00:35:36,570 --> 00:35:39,670 از بسیاری دیگر البته، که من آگاه هستم. 746 00:35:39,670 --> 00:35:42,580 این است نه لزوما نشان دهنده این واقعیت 747 00:35:42,580 --> 00:35:46,340 که دانش آموزان CS، و یا دانش آموزان CS50، می هر کمتر صادق از همکلاسی های خود را. 748 00:35:46,340 --> 00:35:49,090 اما واقعیت این است که در این جهان، به صورت الکترونیکی، ما فقط 749 00:35:49,090 --> 00:35:50,990 باید فن آوری معنی تشخیص این. 750 00:35:50,990 --> 00:35:53,360 >> این برای ما مهم است برای انصاف در سراسر کلاس 751 00:35:53,360 --> 00:35:58,550 که ما انجام تشخیص این، و بالا بردن موضوع وقتی که ما همه چیز را ببینید. 752 00:35:58,550 --> 00:36:01,980 و فقط به رنگ یک تصویر، و واقعا برای کمک به چیزی شبیه به این غرق در، 753 00:36:01,980 --> 00:36:04,600 این تعداد هستند دانش آموزان در طول 10 سال گذشته 754 00:36:04,600 --> 00:36:07,610 که در برخی از درگیر شده است مانند صداقت دانشگاهی، 755 00:36:07,610 --> 00:36:10,990 با برخی از دانش آموزان 32 از پاییز 2015، که 756 00:36:10,990 --> 00:36:13,760 است که می گویند که ما را این موضوع بسیار جدی است. 757 00:36:13,760 --> 00:36:18,380 و در نهایت، این اعداد آهنگسازی، اخیرا، در حدود 3٪، 4٪ یا 758 00:36:18,380 --> 00:36:19,120 از کلاس. 759 00:36:19,120 --> 00:36:25,220 >> بنابراین برای اکثریت فوق العاده از دانش آموزان به نظر می رسد که خطوط روشن است. 760 00:36:25,220 --> 00:36:27,940 اما این را در ذهن، به خصوص در اواخر 761 00:36:27,940 --> 00:36:32,080 در شب زمانی که مبارزه با برخی از راه حل به یک مجموعه ای مشکل، 762 00:36:32,080 --> 00:36:34,830 که مکانیسم وجود دارد برای گرفتن خودتان بهتر 763 00:36:34,830 --> 00:36:37,870 پشتیبانی از شما ممکن است فکر می کنم، حتی در آن ساعت می باشد. 764 00:36:37,870 --> 00:36:40,514 بدانید زمانی که ما دریافت می کنیم ارسالی دانش آموزان، ما عبور 765 00:36:40,514 --> 00:36:43,430 مقایسه هر ارسال در این سال در برابر هر ارسال سال گذشته، 766 00:36:43,430 --> 00:36:47,590 در برابر هر ارسال از سال 2007، و از آنجا که، به دنبال در، و همچنین، 767 00:36:47,590 --> 00:36:49,931 کد مخازن آنلاین، بحث و تبادل نظر، سایت های کار. 768 00:36:49,931 --> 00:36:51,806 و ما این ذکر، در واقع، همه به خاطر 769 00:36:51,806 --> 00:36:56,040 افشای کامل، که اگر شخص دیگری می تواند آن را آنلاین پیدا کنید، 770 00:36:56,040 --> 00:36:57,880 قطعا، ما هم میتوانیم این دوره است. 771 00:36:57,880 --> 00:37:00,100 اما، واقعا، روح از این دوره جوش پایین 772 00:37:00,100 --> 00:37:01,650 این بند در برنامه درسی. 773 00:37:01,650 --> 00:37:03,670 این واقعا فقط، معقول باشد. 774 00:37:03,670 --> 00:37:06,680 >> و به جزییات است که اگر ما به حال فقط با یک زبان کمی بیشتر، 775 00:37:06,680 --> 00:37:09,770 متوجه است که جوهر همه کاری که شما به این دوره ارائه 776 00:37:09,770 --> 00:37:10,954 باید خود شما باشد. 777 00:37:10,954 --> 00:37:13,870 اما در آن، قطعا وجود دارد فرصت ها، و تشویق، 778 00:37:13,870 --> 00:37:17,300 و ارزش آموزشی در تبدیل به others-- خودم، TFS، به CAS، 779 00:37:17,300 --> 00:37:20,760 استادیار، و دیگران در کلاس، برای پشتیبانی، اجازه دهید دوستان تنهایی 780 00:37:20,760 --> 00:37:23,547 و هم اتاقی که مطالعه کرده اند CS و برنامه نویسی قبل از. 781 00:37:23,547 --> 00:37:25,130 و چنین است که کمک هزینه برای آن وجود دارد. 782 00:37:25,130 --> 00:37:28,180 و قانون کلی است this-- هنگام درخواست کمک، 783 00:37:28,180 --> 00:37:31,470 شما ممکن است کد خود را به دیگران نشان می دهد، اما شما ممکن است آنها را مشاهده کنند. 784 00:37:31,470 --> 00:37:34,880 بنابراین حتی اگر شما در ساعات اداری هستید، و یا در سالن D، یا در جایی دیگر 785 00:37:34,880 --> 00:37:37,450 کار بر روی برخی مجموعه قطعه، کار در کنار یک دوست، که 786 00:37:37,450 --> 00:37:40,160 کاملا خوب است، در پایان روز کار خود را 787 00:37:40,160 --> 00:37:43,034 باید در نهایت به هر تعلق از شما به ترتیب، و نه 788 00:37:43,034 --> 00:37:45,700 است برخی از تلاش های مشترک، به جز برای پروژه نهایی که در آن 789 00:37:45,700 --> 00:37:47,410 آن را مجاز و تشویق شود. 790 00:37:47,410 --> 00:37:49,830 >> متوجه باشید که اگر شما مبارزه با چیزی 791 00:37:49,830 --> 00:37:52,520 و دوست شما فقط اتفاق می افتد بهتر است در این پس از آن شما، 792 00:37:52,520 --> 00:37:55,130 یا بهتر است در این مشکل از شما، و یا کمی دورتر پیش از شما، 793 00:37:55,130 --> 00:37:57,330 آن را کاملا معقول و منطقی به نوبه خود به دوستان خود و می گویند، هی، 794 00:37:57,330 --> 00:38:00,480 آیا ذهن شما به دنبال در کد من در اینجا، کمک به من نقطه چه مشکل من است؟ 795 00:38:00,480 --> 00:38:03,760 و امیدوارم، در منافع ارزش آموزشی 796 00:38:03,760 --> 00:38:07,040 که دوست نه تنها می گویند، آه، این کار را، اما نه، 797 00:38:07,040 --> 00:38:09,917 آنچه از شما در خط از دست رفته 6، و یا چیزی شبیه به آن؟ 798 00:38:09,917 --> 00:38:12,000 اما راه حل نیست برای دوست در کنار شما 799 00:38:12,000 --> 00:38:15,617 می گویند، آه، خوب، در اینجا، اجازه دهید من جلو این تا، و راه حل من به شما نشان دهد. 800 00:38:15,617 --> 00:38:16,450 به طوری که خط است. 801 00:38:16,450 --> 00:38:18,670 شما نشان می دهد کد های خود را به دیگران، اما شما ممکن است 802 00:38:18,670 --> 00:38:22,350 مشاهده آنها، موضوع را به دیگر محدودیت در برنامه درسی دوره است. 803 00:38:22,350 --> 00:38:24,760 >> پس وقت را در ذهن این را به اصطلاح بند تاسف 804 00:38:24,760 --> 00:38:27,560 در برنامه درسی دوره و همچنین، که اگر شما انجام یک عمل که 805 00:38:27,560 --> 00:38:30,476 منطقی نیست، اما آن را به ارمغان می آورد توجه سر درس 806 00:38:30,476 --> 00:38:34,240 در عرض 72 ساعت، دوره ممکن است تحریم های محلی تحمیل که 807 00:38:34,240 --> 00:38:37,380 ممکن است شامل نامطلوب و یا عدم درجه برای کار کنید. 808 00:38:37,380 --> 00:38:41,410 اما این دوره مراجعه نمی مهم برای اقدام انضباطی بیشتر، 809 00:38:41,410 --> 00:38:43,010 مگر در موارد اعمال تکرار شده است. 810 00:38:43,010 --> 00:38:46,632 به عبارت دیگر، اگر شما را به برخی از احمقانه، به خصوص در اواخر شب، تصمیم 811 00:38:46,632 --> 00:38:49,340 که صبح روز بعد یا دو روز بعد، شما خواب پاشی و ببینی، 812 00:38:49,340 --> 00:38:50,870 چی فکر میکردم؟ 813 00:38:50,870 --> 00:38:53,890 شما در CS50 انجام یک خروجی برای رفع این مشکل 814 00:38:53,890 --> 00:38:57,170 و داشتن تا به آن، به طوری که ما شما در نیمه راه دیدار خواهد کرد و برخورد 815 00:38:57,170 --> 00:39:01,500 با آن در یک ماده است که هر دو آموزشی و ارزشمند برای شما، 816 00:39:01,500 --> 00:39:04,200 اما هنوز هم در برخی از راه تنبیهی. 817 00:39:04,200 --> 00:39:08,590 و در حال حاضر، را به لبه خاموش، این. 818 00:39:08,590 --> 00:39:10,570 >> [پخش ویدئو] 819 00:39:10,570 --> 00:39:13,540 >> [موسیقی] 820 00:39:13,540 --> 00:39:58,090 821 00:39:58,090 --> 00:39:58,866 >> [پایان دادن به پخش] 822 00:39:58,866 --> 00:40:00,490 DAVID J. مالان: بسیار خوب، ما هستند. 823 00:40:00,490 --> 00:40:03,680 و در حال حاضر ما در یکی از نگاه برای اولین بار از حوزه های دنیای واقعی ما 824 00:40:03,680 --> 00:40:08,720 در CS50، هنر رمزنگاری، هنر ارسال و دریافت 825 00:40:08,720 --> 00:40:11,840 پیام های محرمانه، رمزگذاری پیام اگر شما خواهد شد، 826 00:40:11,840 --> 00:40:17,060 که تنها می تواند کشف رمز می شود اگر شما برخی از مواد تشکیل دهنده کلیدی که فرستنده است 827 00:40:17,060 --> 00:40:18,030 به خوبی. 828 00:40:18,030 --> 00:40:22,120 بنابراین برای ایجاد انگیزه این ما را یک در این چیزی که اینجا نگاه کنید، 829 00:40:22,120 --> 00:40:26,750 که نمونه ای از یک است حلقه رسیور راز که 830 00:40:26,750 --> 00:40:34,042 می توان به منظور به شکل مورد استفاده قرار چه یک پیام مخفی واقع است. 831 00:40:34,042 --> 00:40:35,750 در واقع، در روز در مدرسه، 832 00:40:35,750 --> 00:40:38,787 اگر شما تا کنون پیام های محرمانه به ارسال برخی از دوستان یا برخی از پیروز شدن در کلاس، 833 00:40:38,787 --> 00:40:40,620 شما ممکن است فکر شما باهوش بودن 834 00:40:40,620 --> 00:40:46,530 توسط در قطعه خود را از تغییر کاغذ، مانند، A به B و B به C و C به D، 835 00:40:46,530 --> 00:40:47,590 و غیره. 836 00:40:47,590 --> 00:40:50,300 اما در واقع شما رمزنگاری شد اطلاعات خود را، حتی 837 00:40:50,300 --> 00:40:53,300 اگر آن را کمی بی اهمیت بود، نه که سخت برای معلم به درک، 838 00:40:53,300 --> 00:40:55,675 خوب، اگر شما فقط تغییر B به A و C به B، 839 00:40:55,675 --> 00:40:57,550 شما در واقع شکل چه پیامی بود، 840 00:40:57,550 --> 00:40:59,700 اما شما در به رمز درآوردن اطلاعات بودند. 841 00:40:59,700 --> 00:41:03,420 >> شما فقط انجام آن به سادگی، بسیار شبیه به Ralphie اینجا 842 00:41:03,420 --> 00:41:07,934 در یک فیلم معروف که نقش nauseum پاسخ آگهی بسیار هر زمستان. 843 00:41:07,934 --> 00:41:08,600 [پخش ویدئو] 844 00:41:08,600 --> 00:41:11,180 -باشید آن را به همه که شناخته شده رالف پارکر وسیله 845 00:41:11,180 --> 00:41:14,070 منصوب عضو کوچک یتیم آنی راز دایره 846 00:41:14,070 --> 00:41:17,700 است و به تمام افتخارات تحت عنوان و مزایای رخ نمیدهد. 847 00:41:17,700 --> 00:41:24,340 >> -Signed، کوچک یتیم آنی، ضد امضا پیر آندره، در جوهر. 848 00:41:24,340 --> 00:41:27,160 برتری ها و منافع، در حال حاضر در سن نه سالگی. 849 00:41:27,160 --> 00:41:30,490 850 00:41:30,490 --> 00:41:31,825 >> [داد زدن] 851 00:41:31,825 --> 00:41:33,750 852 00:41:33,750 --> 00:41:34,250 -بی خیال. 853 00:41:34,250 --> 00:41:35,210 بیایید در با آن است. 854 00:41:35,210 --> 00:41:39,530 من همه که موسیقی جاز لازم نیست در مورد قاچاقچیان و دزدان دریایی. 855 00:41:39,530 --> 00:41:41,660 >> فردا شب، گوش دادن برای ماجراجویی نتیجه گیری 856 00:41:41,660 --> 00:41:43,880 از کشتی دزدان دریایی سیاه و سفید. 857 00:41:43,880 --> 00:41:46,650 در حال حاضر، این زمان برای پیام مخفی آنی 858 00:41:46,650 --> 00:41:49,840 برای شما از راز دایره عضو دارد. 859 00:41:49,840 --> 00:41:53,570 به یاد داشته باشید، بچه ها، تنها اعضای از راز دایره آنی 860 00:41:53,570 --> 00:41:56,140 می توانید پیام های مخفی آنی رمزگشایی. 861 00:41:56,140 --> 00:42:00,340 >> به یاد داشته باشید، آنی است بسته به شما. 862 00:42:00,340 --> 00:42:02,880 تنظیم پین خود را به B2. 863 00:42:02,880 --> 00:42:05,230 در اینجا این پیام است. 864 00:42:05,230 --> 00:42:06,090 12، 11-- 865 00:42:06,090 --> 00:42:10,250 >> -I در هستم، اولین جلسه مخفی من. 866 00:42:10,250 --> 00:42:13,890 >> -14، 11، 18، 16. 867 00:42:13,890 --> 00:42:15,780 >> -Pierre در امشب صدای بزرگ بود. 868 00:42:15,780 --> 00:42:19,000 من می توانم بگویم که امشب پیام بسیار مهم بود. 869 00:42:19,000 --> 00:42:22,694 >> -3، 25، که یک پیام را از آنی خودش. 870 00:42:22,694 --> 00:42:23,860 به یاد داشته باشید، به کسی نگو. 871 00:42:23,860 --> 00:42:28,760 872 00:42:28,760 --> 00:42:32,930 >> -90 ثانیه بعد، من در تنها هستم اتاق در خانه که در آن یک پسر نه 873 00:42:32,930 --> 00:42:37,040 می تواند در حفظ حریم خصوصی و رمزگشایی نشستن. 874 00:42:37,040 --> 00:42:39,730 آها، B! 875 00:42:39,730 --> 00:42:42,360 من به بعد، E. رفت 876 00:42:42,360 --> 00:42:44,520 >> اولین کلمه است باشد. 877 00:42:44,520 --> 00:42:49,032 S، آن را در آینده آسان تر در حال حاضر، U، 25-- 878 00:42:49,032 --> 00:42:51,733 >> اوه، بیا، Ralphie، من باید بروید! 879 00:42:51,733 --> 00:42:53,688 >> -I'll شود حق را، کارشناسی ارشد! 880 00:42:53,688 --> 00:42:54,188 صدای تیز و تند هی! 881 00:42:54,188 --> 00:42:58,116 882 00:42:58,116 --> 00:43:04,060 >> T، O، مطمئن شوید که to-- مطمئن باشید به چه چیزی؟ 883 00:43:04,060 --> 00:43:05,970 یتیم کمی چه بود آنی تلاش برای گفتن؟ 884 00:43:05,970 --> 00:43:07,264 مطمئن باشید که به چه چیزی؟ 885 00:43:07,264 --> 00:43:09,634 >> -Ralphie، اندی به کردم تا رفتن، شما را به مدیر بیرون می آیند؟ 886 00:43:09,634 --> 00:43:10,480 >> حق همه، کارشناسی ارشد! 887 00:43:10,480 --> 00:43:12,880 من در بیرون راست! 888 00:43:12,880 --> 00:43:14,550 >> -I نزدیک در حال حاضر گرفتن شد. 889 00:43:14,550 --> 00:43:16,620 تنش وحشتناک بود. 890 00:43:16,620 --> 00:43:17,720 این چی بود؟ 891 00:43:17,720 --> 00:43:20,170 سرنوشت این سیاره ممکن است در تعادل آویزان. 892 00:43:20,170 --> 00:43:20,670 >> -Ralphie! 893 00:43:20,670 --> 00:43:23,170 باید اندی بروید! 894 00:43:23,170 --> 00:43:26,890 >> -I'll شود سمت راست، برای گریه کردن با صدای بلند! 895 00:43:26,890 --> 00:43:32,680 >> -Almost وجود دارد، انگشتان من پرواز کرد، ذهن من یک تله فولاد بود، هر منفذ ارتعاش. 896 00:43:32,680 --> 00:43:37,198 این تقریبا روشن بود، بله، بله، بله. 897 00:43:37,198 --> 00:43:43,091 >> -باشید مطمئن شوید که به نوشیدن ovaltine خود را. 898 00:43:43,091 --> 00:43:43,590 Ovaltine؟ 899 00:43:43,590 --> 00:43:48,160 900 00:43:48,160 --> 00:43:49,430 تجاری می نکبتی؟ 901 00:43:49,430 --> 00:43:53,046 902 00:43:53,046 --> 00:43:54,227 پسر عوضی. 903 00:43:54,227 --> 00:43:54,810 [پایان دادن به پخش] 904 00:43:54,810 --> 00:43:57,390 DAVID J. مالان: خوب، پس که یک راه خیلی طولانی بود 905 00:43:57,390 --> 00:44:00,660 معرفی رمزنگاری، و همچنین ovaltine. 906 00:44:00,660 --> 00:44:04,470 در واقع، از این آگهی های قدیمی در اینجا، به همین دلیل ovaltine خیلی خوب است؟ 907 00:44:04,470 --> 00:44:09,470 این استخراج متمرکز رسیده است جو مالت، شیر خالص گاو خامه است، 908 00:44:09,470 --> 00:44:14,360 و به خصوص آماده کاکائو، با هم با فسفو طبیعی و ویتامین ها. 909 00:44:14,360 --> 00:44:18,240 این است که بیشتر با غنی شده ویتامین اضافی B و D، یام. 910 00:44:18,240 --> 00:44:21,600 و شما هنوز هم می توانید آن را دریافت، ظاهرا، در آمازون، به عنوان ما اینجا انجام داد. 911 00:44:21,600 --> 00:44:24,810 >> اما انگیزه اینجا بود معرفی رمزنگاری، به طور خاص 912 00:44:24,810 --> 00:44:28,340 یک نوع از رمزنگاری شناخته شده به عنوان رمزنگاری کلید مخفی. 913 00:44:28,340 --> 00:44:34,284 و به عنوان نام نشان می دهد، طیف امنیت یک سیستم رمزنگاری کلید مخفی، 914 00:44:34,284 --> 00:44:36,200 اگر شما خواهد شد، یک روش فقط برای تقلا 915 00:44:36,200 --> 00:44:40,960 اطلاعات بین دو نفر، این است که تنها فرستنده و تنها دریافت کننده 916 00:44:40,960 --> 00:44:46,980 می دانم که یک key-- راز برخی از ارزش، برخی از عبارت های مخفی، برخی از شماره های مخفی، که 917 00:44:46,980 --> 00:44:50,660 آنها اجازه می دهد تا به هر دو رمزگذاری و رمزگشایی اطلاعات. 918 00:44:50,660 --> 00:44:53,470 و رمزنگاری، واقعا، فقط این هفته 0. 919 00:44:53,470 --> 00:44:56,715 >> این یک مشکل که در آن ورودی وجود دارد، مانند پیام واقعی در انگلیسی 920 00:44:56,715 --> 00:44:59,340 و یا هر زبان که شما می خواهید برای ارسال به کسی که در کلاس، 921 00:44:59,340 --> 00:45:00,580 یا در سراسر اینترنت. 922 00:45:00,580 --> 00:45:03,840 است برخی از خروجی، است که رفتن وجود دارد به پیام درهم که شما 923 00:45:03,840 --> 00:45:05,250 که از مخاطب دریافت خواهید کرد. 924 00:45:05,250 --> 00:45:07,405 و حتی اگر کسی در وسط آن را دریافت بیش از حد، 925 00:45:07,405 --> 00:45:09,780 شما آنها را می خواهید نه لزوما قادر به رمزگشایی آن باشد، 926 00:45:09,780 --> 00:45:12,840 چرا که در داخل این جعبه سیاه، یا الگوریتم، 927 00:45:12,840 --> 00:45:17,650 برخی از مکانیزم، برخی از گام به گام است دستورالعمل ها، برای گرفتن ورودی 928 00:45:17,650 --> 00:45:20,710 و تبدیل آن به خروجی، در امیدوارم راه امن. 929 00:45:20,710 --> 00:45:23,640 >> و، در واقع وجود دارد، برخی از واژگان در این جهان به شرح زیر است 930 00:45:23,640 --> 00:45:26,100 متن ساده کلمه است دانشمند کامپیوتر 931 00:45:26,100 --> 00:45:28,449 برای توصیف ورودی پیام، مانند انگلیسی 932 00:45:28,449 --> 00:45:31,240 و یا به هر زبانی که در واقع می خواهید برای ارسال به برخی از انسان های دیگر است. 933 00:45:31,240 --> 00:45:35,450 و پس از آن متن رمز تلاش است به از رمز و یا رمزگذاری شده، 934 00:45:35,450 --> 00:45:36,520 نسخه از آن. 935 00:45:36,520 --> 00:45:38,750 >> اما یک عنصر دیگر در اینجا وجود دارد. 936 00:45:38,750 --> 00:45:43,200 یکی دیگر ورودی به وجود رمزنگاری کلید مخفی. 937 00:45:43,200 --> 00:45:45,200 و این نکته کلیدی است، که است که، به طور کلی، 938 00:45:45,200 --> 00:45:48,930 همانطور که خواهیم دید، تعداد، و یا نامه، و یا کلمه، هر آنچه 939 00:45:48,930 --> 00:45:51,980 الگوریتم آن است که در واقع انتظار. 940 00:45:51,980 --> 00:45:53,870 >> و چگونه می توانم به شما اطلاعات رمزگشایی؟ 941 00:45:53,870 --> 00:45:55,110 چگونه می توانم آن شما unscramble؟ 942 00:45:55,110 --> 00:45:57,950 خوب، شما فقط معکوس خروجی و ورودی. 943 00:45:57,950 --> 00:46:00,900 >> به عبارت دیگر، یک بار کسی دریافت پیام های رمزگذاری شده خود، 944 00:46:00,900 --> 00:46:03,740 او به سادگی است می دانم که همان کلید است. 945 00:46:03,740 --> 00:46:05,700 آنها متن رمزی دریافت کرده اند. 946 00:46:05,700 --> 00:46:09,530 و با اتصال آن دو ورودی به سیستم رمزنگاری، 947 00:46:09,530 --> 00:46:14,260 الگوریتم، از این کادر سیاه و سفید، خارج باید متن اصلی آمده است. 948 00:46:14,260 --> 00:46:17,830 و به طوری که در سطح بسیار بالا است نمایی از آنچه رمزنگاری است که در واقع 949 00:46:17,830 --> 00:46:18,590 تماما در مورد. 950 00:46:18,590 --> 00:46:20,030 >> بنابراین اجازه دهید وجود دارد. 951 00:46:20,030 --> 00:46:22,700 اکنون بیایید زیر نگاه هود از چیزی 952 00:46:22,700 --> 00:46:26,000 ما در نظر گرفتن ام برای اعطا هفته گذشته، و برای این جلسه 953 00:46:26,000 --> 00:46:27,629 here-- رشته. 954 00:46:27,629 --> 00:46:30,295 یک رشته در پایان روز فقط یک رشته از کاراکتر است. 955 00:46:30,295 --> 00:46:33,610 >> این ممکن است جهان سلام، یا سلام Zamyla، و یا هر چیز دیگری. 956 00:46:33,610 --> 00:46:37,050 اما به چه معنا به یک دنباله از شخصیت؟ 957 00:46:37,050 --> 00:46:41,520 در واقع، کتابخانه CS50 می دهد ما یک نوع داده به نام رشته. 958 00:46:41,520 --> 00:46:45,140 >> اما در واقع وجود ندارد چنین چیزی به عنوان یک رشته در C 959 00:46:45,140 --> 00:46:49,450 این واقعا فقط یک دنباله از است شخصیت، شخصیت، شخصیت، 960 00:46:49,450 --> 00:46:52,180 شخصیت، تماس، به عقب، به تماس، به عقب، به عقب در داخل 961 00:46:52,180 --> 00:46:54,650 از حافظه کامپیوتر شما و یا RAM. 962 00:46:54,650 --> 00:46:58,940 و ما نگاهی عمیق تر به که در آینده زمانی که ما در حافظه خود نگاه کنید، 963 00:46:58,940 --> 00:47:02,030 و استفاده، و تهدیدهایی که درگیر هستند. 964 00:47:02,030 --> 00:47:04,100 >> اما اجازه دهید رشته Zamyla در نظر بگیرند. 965 00:47:04,100 --> 00:47:07,480 پس فقط نام انسان در اینجا، Zamyla، 966 00:47:07,480 --> 00:47:12,030 که دنباله ای از است شخصیت ها، Z-A-M-Y-L-A. 967 00:47:12,030 --> 00:47:16,020 و در حال حاضر بیایید فرض کنیم که نام Zamyla است است که در داخل یک کامپیوتر ذخیره می شود 968 00:47:16,020 --> 00:47:16,880 برنامه است. 969 00:47:16,880 --> 00:47:20,830 >> خوب، آن ایستد به همین دلیل است که ما باید قادر به در آن نگاه شخصیت 970 00:47:20,830 --> 00:47:21,590 به طور جداگانه. 971 00:47:21,590 --> 00:47:24,710 بنابراین من فقط رفتن را به منظور جلب یک جعبه در اطراف نام Zamyla در اینجا. 972 00:47:24,710 --> 00:47:31,580 و آن را در مورد C است که وقتی شما باید یک رشته مانند Zamyla-- و شاید 973 00:47:31,580 --> 00:47:34,940 که رشته است از آمده یک تابع مانند رشته GET، 974 00:47:34,940 --> 00:47:38,540 شما در واقع می تواند دستکاری شخصیت آن شخصیت. 975 00:47:38,540 --> 00:47:42,070 >> در حال حاضر، این وابسته است برای گفتگو در دست، به دلیل 976 00:47:42,070 --> 00:47:46,420 در رمزنگاری اگر شما می خواهید به تغییر A به B و B به C و C به D، 977 00:47:46,420 --> 00:47:49,650 و غیره، شما نیاز دارید که قادر به در شخصیت فردی نگاه 978 00:47:49,650 --> 00:47:50,190 در یک رشته است. 979 00:47:50,190 --> 00:47:52,695 شما باید قادر به تغییر از Z به چیز دیگری، از A 980 00:47:52,695 --> 00:47:55,280 به چیز دیگری از M به چیز دیگری، و غیره. 981 00:47:55,280 --> 00:47:58,000 و بنابراین ما نیاز به یک راه، برنامه نویسی، بنابراین 982 00:47:58,000 --> 00:48:03,020 به صحبت می کنند، در C قادر به تغییر و در نامه های فردی است. 983 00:48:03,020 --> 00:48:05,690 و ما می توانیم این را به عنوان زیر را انجام دهد. 984 00:48:05,690 --> 00:48:08,340 >> به من اجازه رفتن سر به عقب در IDE CS50. 985 00:48:08,340 --> 00:48:11,130 و اجازه دهید من به جلو بروید و ایجاد یک فایل جدید 986 00:48:11,130 --> 00:48:16,134 که من این بار string0 پاسخ، به عنوان اولین مثال ما، نقطه C. 987 00:48:16,134 --> 00:48:18,300 و من قصد دارم به جلو بروید و شلاق آن را به عنوان شرح زیر است. 988 00:48:18,300 --> 00:48:22,870 >> بنابراین شامل CS50.H، و پس از آن عبارتند io.h استاندارد، 989 00:48:22,870 --> 00:48:25,990 که من تقریبا همیشه برای رفتن با استفاده از در برنامه های من، حداقل 990 00:48:25,990 --> 00:48:26,780 در ابتدا. 991 00:48:26,780 --> 00:48:32,180 اعضای هیات اعتبار اصلی، و سپس در اینجا من رفتن به انجام رشته می شود از رشته است. 992 00:48:32,180 --> 00:48:35,260 و پس از آن من قصد دارم به جلو بروید و این کار را. 993 00:48:35,260 --> 00:48:37,460 من می خواهم به جلو بروید و به عنوان یک بررسی سلامت عقل، 994 00:48:37,460 --> 00:48:43,607 فقط می گویند، سلام، درصد S، نیمه روده بزرگ، باعث می شود رشته 0. 995 00:48:43,607 --> 00:48:44,690 اوه اوه، چه من در اینجا انجام دهید؟ 996 00:48:44,690 --> 00:48:45,930 اوه، من آن را به برق وصل نیست. 997 00:48:45,930 --> 00:48:48,120 بنابراین درس آموخته، که عمدی نبوده. 998 00:48:48,120 --> 00:48:52,480 >> بنابراین خطا، درصد بیشتر تبدیل از استدلال داده است. 999 00:48:52,480 --> 00:48:54,940 و این است که در آن، در خط 7-- خوب، پس من، 1000 00:48:54,940 --> 00:48:56,690 نقل قول را تمام کردن، که رشته من به printf است. 1001 00:48:56,690 --> 00:48:58,151 من یک علامت درصد کردم. 1002 00:48:58,151 --> 00:48:59,650 اما من از دست رفته آرگومان دوم. 1003 00:48:59,650 --> 00:49:03,190 >> من از دست رفته ها کاما از هم، که من در نمونه های قبلی مجبور. 1004 00:49:03,190 --> 00:49:06,650 بنابراین فرصت خوبی برای رفع یک اشتباه، به طور تصادفی. 1005 00:49:06,650 --> 00:49:09,950 و در حال حاضر اجازه دهید من اجرا string0، نوع در Zamyla. 1006 00:49:09,950 --> 00:49:10,970 OK، سلام Zamyla. 1007 00:49:10,970 --> 00:49:14,144 >> بنابراین ما این نوع از برنامه اجرا چند بار مختلف در حال حاضر. 1008 00:49:14,144 --> 00:49:16,310 اما اجازه دهید انجام کاری کمی متفاوت این زمان. 1009 00:49:16,310 --> 00:49:19,450 به جای فقط چاپ در Zamyla طیف نام با تابع () printf، 1010 00:49:19,450 --> 00:49:21,350 اجازه دهید آن را انجام کاراکتر به کاراکتر. 1011 00:49:21,350 --> 00:49:22,700 >> من قصد دارم به استفاده از یک حلقه. 1012 00:49:22,700 --> 00:49:26,160 و من قصد دارم به خودم یک متغیر شمارش، من به نام. 1013 00:49:26,160 --> 00:49:33,530 و من قصد دارم به حفظ تکرار، بنابراین زمانی که من کمتر از طول است. 1014 00:49:33,530 --> 00:49:35,930 >> به نظر می رسد، ما نداشت این آخرین بار، 1015 00:49:35,930 --> 00:49:39,100 که C می آید با یک تابع به نام استرلینگ. 1016 00:49:39,100 --> 00:49:42,690 در این روز، و به طور کلی هنوز هم زمانی که اجرای توابع، 1017 00:49:42,690 --> 00:49:45,405 انسان اغلب بسیار را انتخاب کنید نام موجز این نوع صدا 1018 00:49:45,405 --> 00:49:48,280 مانند آنچه که شما می خواهید، حتی اگر آن را از دست رفته چند حروف صدادار یا حروف. 1019 00:49:48,280 --> 00:49:50,660 بنابراین استرلینگ است که نام یک تابع که 1020 00:49:50,660 --> 00:49:53,880 طول می کشد بحث بین پرانتز که باید یک رشته. 1021 00:49:53,880 --> 00:49:56,910 و آن را فقط می گرداند یک عدد صحیح، طول این رشته. 1022 00:49:56,910 --> 00:50:00,580 >> بنابراین این حلقه در خط 7 است که شروع به شمارش در من برابر با 0. 1023 00:50:00,580 --> 00:50:02,530 آن را به افزایش من در هر تکرار 1024 00:50:02,530 --> 00:50:04,350 1، به عنوان ما انجام شده است ام چند بار. 1025 00:50:04,350 --> 00:50:06,780 اما آن را به تنها این تا نقطه 1026 00:50:06,780 --> 00:50:09,660 وقتی که من طول است از رشته خود را. 1027 00:50:09,660 --> 00:50:14,520 >> بنابراین این یک راه است، در نهایت، تکرار بیش از شخصیت های 1028 00:50:14,520 --> 00:50:17,430 در رشته شرح زیر است. 1029 00:50:17,430 --> 00:50:20,670 من قصد دارم برای چاپ کردن یک تمام رشته، اما درصد C، 1030 00:50:20,670 --> 00:50:22,860 یک شخصیت واحد پس از یک خط جدید است. 1031 00:50:22,860 --> 00:50:24,880 و پس از آن من قصد دارم به به جلو بروید، و من نیاز 1032 00:50:24,880 --> 00:50:29,080 به چاپ شخصیت i ام است. 1033 00:50:29,080 --> 00:50:33,450 >> بنابراین اگر من متغیر است که نشان می دهد شاخص از رشته، که در آن 1034 00:50:33,450 --> 00:50:37,230 شما در آن، من باید قادر به می گویند، من شخصیت i ام از بازدید کنندگان است. 1035 00:50:37,230 --> 00:50:40,390 و C است راه انجام این با براکت مربع است. 1036 00:50:40,390 --> 00:50:43,679 شما به سادگی می گویند نام رشته، که در این مورد است. 1037 00:50:43,679 --> 00:50:46,970 سپس شما استفاده از براکت مربع، که معمولا فقط بالا بازگشت و یا خود را وارد کنید 1038 00:50:46,970 --> 00:50:48,110 کلید بر روی صفحه کلید. 1039 00:50:48,110 --> 00:50:52,410 و سپس شما در صفحه اول از قرار شخصیت است که شما می خواهید برای چاپ. 1040 00:50:52,410 --> 00:50:55,960 بنابراین شاخص برای رفتن به یک number-- 0 یا 1 یا 2 یا 3 یا نقطه، 1041 00:50:55,960 --> 00:50:57,590 نقطه، نقطه، برخی از تعداد دیگر. 1042 00:50:57,590 --> 00:51:00,920 >> و ما اطمینان حاصل شود که آن را به باشد عدد سمت راست، چون من 1043 00:51:00,920 --> 00:51:02,360 شروع به شمارش 0. 1044 00:51:02,360 --> 00:51:07,020 و به طور پیش فرض، شخصیت اول در یک رشته است که توسط کنوانسیون 0. 1045 00:51:07,020 --> 00:51:09,230 و شخصیت دوم براکت 1 است. 1046 00:51:09,230 --> 00:51:11,120 و شخصیت سوم براکت 2 است. 1047 00:51:11,120 --> 00:51:13,630 و شما نمی خواهید به بیش از حد تا کنون، اما ما نمی خواهد چرا که ما 1048 00:51:13,630 --> 00:51:17,780 رفتن به تنها من تا آن را افزایش برابر با طول رشته. 1049 00:51:17,780 --> 00:51:20,210 و که در آن نقطه، این حلقه را متوقف خواهد کرد. 1050 00:51:20,210 --> 00:51:25,550 >> بنابراین اجازه دهید من به جلو و صرفه جویی در این برنامه و اجرا را رشته 0. 1051 00:51:25,550 --> 00:51:28,400 اما من رو خراب کرد. 1052 00:51:28,400 --> 00:51:35,390 به طور ضمنی اعلام تابع کتابخانه استرلینگ با چنین نوع و such-- حال، 1053 00:51:35,390 --> 00:51:36,430 این برای تلفن های موبایل آشنا. 1054 00:51:36,430 --> 00:51:37,440 اما آن را تابع () printf است. 1055 00:51:37,440 --> 00:51:38,540 و آن را رشته نیست. 1056 00:51:38,540 --> 00:51:40,480 >> من پیچ نیست تا در به همان شیوه در این زمان. 1057 00:51:40,480 --> 00:51:45,100 اما توجه کنید در اینجا کمی پایین بیشتر، شامل string.h هدر، 1058 00:51:45,100 --> 00:51:47,210 به صراحت ارائه اعلامیه برای استرلینگ. 1059 00:51:47,210 --> 00:51:48,820 بنابراین است که در واقع یک نشانه در آنجا وجود دارد. 1060 00:51:48,820 --> 00:51:51,670 >> و در واقع آن را معلوم این فایل هدر دیگری وجود دارد 1061 00:51:51,670 --> 00:51:53,970 که ما استفاده کرده ایم نمی در کلاس است، اما آن را 1062 00:51:53,970 --> 00:51:56,480 در میان کسانی که در دسترس به شما، به نام string.h. 1063 00:51:56,480 --> 00:52:00,930 و در آن فایل، string.h است استرلینگ اعلام کرد. 1064 00:52:00,930 --> 00:52:05,220 بنابراین اجازه دهید من به جلو و صرفه جویی در این کار، مطمئن رشته 1065 00:52:05,220 --> 00:52:08,040 0-- خوب، بدون پیغام خطا این زمان. 1066 00:52:08,040 --> 00:52:12,290 >> ./string0 Zamyla، و من در مورد ضربه را وارد کنید هستم، 1067 00:52:12,290 --> 00:52:16,710 که در آن نقطه GetString است رفتن برای بازگشت به رشته، آن را در ثانیه. 1068 00:52:16,710 --> 00:52:21,890 پس از آن که برای حلقه است که به تکرار بیش از شخصیت S یکی در یک زمان، 1069 00:52:21,890 --> 00:52:28,420 و چاپ آنها در هر خط، به دلیل من که n بک اسلش در پایان بود. 1070 00:52:28,420 --> 00:52:34,530 بنابراین من می تواند که بک اسلش حذف n و پس از آن فقط Zamyla چاپ تمام 1071 00:52:34,530 --> 00:52:37,460 در همان خط، به طور موثر reimplementing 1072 00:52:37,460 --> 00:52:38,999 تابع () printf، است که همه که نه مفید است. 1073 00:52:38,999 --> 00:52:40,540 اما در این مورد، من انجام داده ام که نه. 1074 00:52:40,540 --> 00:52:43,610 من در واقع یک چاپ شخصیت در یک زمان، در هر خط، 1075 00:52:43,610 --> 00:52:45,400 به طوری که ما در واقع اثر را ببینید. 1076 00:52:45,400 --> 00:52:46,900 >> اما من باید یک چیز در اینجا توجه داشته باشید. 1077 00:52:46,900 --> 00:52:48,930 و ما به آمده این در یک هفته آینده است. 1078 00:52:48,930 --> 00:52:52,650 به نظر می رسد که این کد بالقوه حشره دار است. 1079 00:52:52,650 --> 00:52:56,560 >> به نظر می رسد که رشته مطلع و برخی از توابع دیگر در زندگی 1080 00:52:56,560 --> 00:53:00,280 لزوما همیشه بازگشت آنچه شما انتظار. 1081 00:53:00,280 --> 00:53:03,010 ما از کلاس گذشته مطمئن شوید زمان در این است که دریافت 1082 00:53:03,010 --> 00:53:04,960 رشته قرار است برای بازگشت به یک رشته است. 1083 00:53:04,960 --> 00:53:09,900 اما اگر کاربر در انواع چنین یک کلمه طولانی، و یا پاراگراف، و یا مقاله 1084 00:53:09,900 --> 00:53:13,010 که فقط به اندازه کافی وجود دارد حافظه در کامپیوتر را به آن جا. 1085 00:53:13,010 --> 00:53:15,410 >> مانند، چه اگر چیزی می رود اشتباه زیر هود؟ 1086 00:53:15,410 --> 00:53:18,400 این ممکن است اغلب اتفاق نمی افتد، اما می تواند یک بار اتفاق می افتد 1087 00:53:18,400 --> 00:53:21,520 در حالی که، بسیار به ندرت. 1088 00:53:21,520 --> 00:53:25,460 و پس از آن می رسد که رشته مطلع و توابع مانند آن لزوما 1089 00:53:25,460 --> 00:53:26,380 همیشه رشته بازگشت. 1090 00:53:26,380 --> 00:53:30,680 آنها ممکن است برخی از مقدار خطا بازگشت، برخی از ارزش نگهبان پس به صحبت، 1091 00:53:30,680 --> 00:53:32,612 که نشان می دهد که چیزی را اشتباه رفته است. 1092 00:53:32,612 --> 00:53:35,320 و شما فقط این را از پس از آن در کلاس به دست در حال حاضر، 1093 00:53:35,320 --> 00:53:37,700 و یا با برخی از اسناد بیشتر مطالعه کنید. 1094 00:53:37,700 --> 00:53:43,120 به نظر می رسد که رشته مطلع می توانید یک مقدار به نام NULL بازگشت. 1095 00:53:43,120 --> 00:53:46,220 null یک ارزش خاص است که ما دوباره به در یک هفته آینده است. 1096 00:53:46,220 --> 00:53:50,420 اما در حال حاضر، فقط می دانم که اگر من می خواهم به واقعا در حال حرکت به جلو مناسب 1097 00:53:50,420 --> 00:53:52,650 با استفاده از رشته، من باید نه فقط از آن تماس، 1098 00:53:52,650 --> 00:53:56,870 و کورکورانه استفاده مقدار بازگشتی آن، اعتماد که آن را یک رشته است. 1099 00:53:56,870 --> 00:53:59,420 >> من برای اولین بار باید بگویم، با سلام، یک دقیقه صبر کنید، تنها 1100 00:53:59,420 --> 00:54:03,380 ادامه اگر S برابر نیست تهی، که در آن تهی، دوباره، 1101 00:54:03,380 --> 00:54:04,660 فقط برخی از ارزش خاص است. 1102 00:54:04,660 --> 00:54:07,770 و آن را تنها ارزش ویژه شما نیاز به نگرانی در مورد برای رشته GET. 1103 00:54:07,770 --> 00:54:10,900 مطلع رشته یا رفتن برای بازگشت به یک رشته یا تهی. 1104 00:54:10,900 --> 00:54:17,219 >> و این علامت تعجب علامت مساوی شما ممکن است از شاید کلاس ریاضی مطمئن شوید 1105 00:54:17,219 --> 00:54:20,510 که شما ممکن است یک علامت مساوی با رسم یک خط از طریق آن به نشان می دهد برابر نیست. 1106 00:54:20,510 --> 00:54:23,135 که به طور کلی یک شخصیت نه شما می توانید بر روی صفحه کلید خود را تایپ کنید. 1107 00:54:23,135 --> 00:54:26,480 و به همین ترتیب در بسیاری از زبان های برنامه نویسی، زمانی که می خواهید به برابر نیست، 1108 00:54:26,480 --> 00:54:29,160 شما با استفاده از یک علامت تعجب، در غیر این صورت به عنوان انفجار شناخته شده است. 1109 00:54:29,160 --> 00:54:33,180 بنابراین می توانید بگویید انفجار برابر، که معنی برابر نیست، منطقی است. 1110 00:54:33,180 --> 00:54:38,060 این درست مثل یک بزرگتر وجود ندارد از، یا مساوی یا کمتر از 1111 00:54:38,060 --> 00:54:41,270 یا مساوی کلید در صفحه کلید خود را که آیا این همه در یک نماد است. 1112 00:54:41,270 --> 00:54:44,020 به همین دلیل، در نمونه های گذشته، یک پرانتز باز انجام داد، و پس از آن 1113 00:54:44,020 --> 00:54:48,670 یک علامت مساوی، به منظور انجام بزرگتر یا، می گویند، کمتر از. 1114 00:54:48,670 --> 00:54:49,910 >> پس چه غذای آماده را در اینجا؟ 1115 00:54:49,910 --> 00:54:53,880 این است که به سادگی راه در حال حاضر از معرفی این نحو، از این ویژگی، 1116 00:54:53,880 --> 00:54:57,390 تکرار بیش از فردی کاراکتر در یک رشته. 1117 00:54:57,390 --> 00:55:00,260 و درست مثل آن مربع براکت به شما اجازه در آنها را دریافت کنید، 1118 00:55:00,260 --> 00:55:03,790 در نظر آن براکت عنوان نوع اشاره در این زمینه 1119 00:55:03,790 --> 00:55:06,040 طراحی، به موجب آن هر شخصیت در داخل یک رشته 1120 00:55:06,040 --> 00:55:10,180 از نوع در جایی جعبه زیر هود در حافظه کامپیوتر شما. 1121 00:55:10,180 --> 00:55:12,340 >> اما اجازه دهید یک نوع از این. 1122 00:55:12,340 --> 00:55:14,880 به نظر می رسد که این برنامه درست است. 1123 00:55:14,880 --> 00:55:18,810 بنابراین در هر محور CS50 را برای ارزیابی کد، این در حال حاضر درست است. 1124 00:55:18,810 --> 00:55:22,959 به خصوص اکنون که من برای چک کردن تهی، این برنامه هرگز نباید سقوط. 1125 00:55:22,959 --> 00:55:24,500 و من فقط می دانم که از تجربه. 1126 00:55:24,500 --> 00:55:28,040 اما هیچ چیز دیگری که وجود دارد ما واقعا می تواند به اشتباه اینجا. 1127 00:55:28,040 --> 00:55:31,860 اما آن را به خوبی طراحی شده است، چون اجازه بازگشت به اصول اولیه. 1128 00:55:31,860 --> 00:55:34,450 >> اول، principles-- چه یک حلقه for انجام دهید؟ 1129 00:55:34,450 --> 00:55:36,290 برای حلقه نشانی از سه چیز. 1130 00:55:36,290 --> 00:55:39,340 این مقدار دهی اولیه برخی ارزش، اگر شما بخواهید آن را به. 1131 00:55:39,340 --> 00:55:41,770 این یک شرط بررسی می کند. 1132 00:55:41,770 --> 00:55:45,380 پس از هر تکرار، بعد از هر چرخه، 1133 00:55:45,380 --> 00:55:49,330 آن واحد افزایش برخی ارزش ها، یا ارزش، در اینجا. 1134 00:55:49,330 --> 00:55:50,600 >> پس چه معنا است؟ 1135 00:55:50,600 --> 00:55:52,940 ما مقداردهی اولیه به 0. 1136 00:55:52,940 --> 00:55:58,610 ما را بررسی کنید و مطمئن شوید که من کمتر از است طول، است که Z-A-M-Y-L-A، 1137 00:55:58,610 --> 00:55:59,900 بنابراین است که کمتر از 6. 1138 00:55:59,900 --> 00:56:02,590 و، در واقع، 0 کمتر از 6. 1139 00:56:02,590 --> 00:56:05,580 >> ما نسخه قابل چاپ کردن Z از نام Zamyla است. 1140 00:56:05,580 --> 00:56:08,080 سپس ما من افزایش از 0 به 1. 1141 00:56:08,080 --> 00:56:11,290 پس از آن ما را بررسی کنید، 1 کمتر از طول است؟ 1142 00:56:11,290 --> 00:56:13,270 طول بازدید کنندگان 6 است. 1143 00:56:13,270 --> 00:56:13,950 بله، آن است. 1144 00:56:13,950 --> 00:56:16,880 >> بنابراین ما یک نام Zamyla است، ZA چاپ. 1145 00:56:16,880 --> 00:56:20,090 ما من افزایش از 0، 1، 2. 1146 00:56:20,090 --> 00:56:23,720 پس از آن ما را بررسی کنید، 2 کمتر از طول نام Zamyla است. 1147 00:56:23,720 --> 00:56:25,380 6- پس از 2 کمتر از 6 است. 1148 00:56:25,380 --> 00:56:30,460 بله، اجازه دهید نسخه قابل چاپ کردن شرکت M در نام Zamyla، شخصیت سوم است. 1149 00:56:30,460 --> 00:56:34,110 >> کلید کار اینجا این است که در هر تکرار داستان، من چک کردن، 1150 00:56:34,110 --> 00:56:37,810 من کمتر از طول Zamyla؟ 1151 00:56:37,810 --> 00:56:40,350 اما گرفتن این است که استرلینگ یک ملک است. 1152 00:56:40,350 --> 00:56:43,100 کسانی از شما که برنامه ریزی کرده اند قبل از به زبان جاوا یا زبان های دیگر 1153 00:56:43,100 --> 00:56:46,310 ممکن است طول می دانم که از یک رشته است یک ملک، تنها برخی فقط خواندنی ارزش. 1154 00:56:46,310 --> 00:56:50,220 >> در C در این مورد، در صورتی که این یک تابع است که به معنای واقعی کلمه 1155 00:56:50,220 --> 00:56:53,520 شمارش تعداد شخصیت ها در هر زمان Zamyla 1156 00:56:53,520 --> 00:56:54,740 ما که تابع پاسخ. 1157 00:56:54,740 --> 00:56:58,500 هر بار که شما کامپیوتر بخواهید به استفاده از استرلینگ، آن را در نظر گرفتن نگاه Zamyla، 1158 00:56:58,500 --> 00:57:01,960 و گفت: Z-A-M-Y-L-A، 6. 1159 00:57:01,960 --> 00:57:02,962 و آن را برمی گرداند 6. 1160 00:57:02,962 --> 00:57:04,920 دفعه بعد که شما پاسخ آن را در داخل که برای حلقه، 1161 00:57:04,920 --> 00:57:08,610 آن را به در Zamyla نگاه دوباره، می گویند Z-A-M-Y-L-A، 6. 1162 00:57:08,610 --> 00:57:10,320 و آن را به بازگشت به 6. 1163 00:57:10,320 --> 00:57:12,980 پس چه احمقانه در مورد این طرح؟ 1164 00:57:12,980 --> 00:57:17,700 >> چرا کد من یک 5 از 5 است برای طراحی در حال حاضر، پس به صحبت می کنند؟ 1165 00:57:17,700 --> 00:57:20,600 خوب، من پرسیدن یک درخواست بی ارزش. 1166 00:57:20,600 --> 00:57:23,030 من انجام کار بیشتر از من نیاز به. 1167 00:57:23,030 --> 00:57:25,370 >> بنابراین حتی اگر پاسخ درست است، من 1168 00:57:25,370 --> 00:57:29,560 درخواست از کامپیوتر، چه است طول Zamyla دوباره، 1169 00:57:29,560 --> 00:57:31,380 و دوباره، و دوباره، و دوباره؟ 1170 00:57:31,380 --> 00:57:33,980 و پاسخ این است هرگز به تغییر. 1171 00:57:33,980 --> 00:57:35,900 این همیشه به 6. 1172 00:57:35,900 --> 00:57:39,730 >> بنابراین یک راه حل بهتر از این می شود این نسخه های بعدی. 1173 00:57:39,730 --> 00:57:43,390 اجازه دهید من به جلو و آن را در یک فایل جداگانه به نام string1.c، 1174 00:57:43,390 --> 00:57:44,990 فقط به نگه داشتن آن از هم جدا. 1175 00:57:44,990 --> 00:57:47,260 و معلوم است در یک برای حلقه، شما در واقع می توانید 1176 00:57:47,260 --> 00:57:50,210 متغیرهای متعدد در یک بار. 1177 00:57:50,210 --> 00:57:53,460 >> بنابراین من قصد دارم به من نگه دارید و آن را به 0. 1178 00:57:53,460 --> 00:57:56,190 اما من هم به رفتن اضافه کردن کاما، و می گویند، 1179 00:57:56,190 --> 00:58:01,050 من یک متغیر به نام N، که به ارزش برابر است با طول رشته ها. 1180 00:58:01,050 --> 00:58:09,410 و در حال حاضر، لطفا مطمئن شرایط من تا زمانی که من کمتر از n است. 1181 00:58:09,410 --> 00:58:14,140 >> بنابراین در این روش، منطق است یکسان در پایان روز است. 1182 00:58:14,140 --> 00:58:18,280 اما من به یاد هستم ارزش 6، در این مورد. 1183 00:58:18,280 --> 00:58:19,780 طول نام Zamyla چیست؟ 1184 00:58:19,780 --> 00:58:20,860 و من آن را با قرار دادن در ش. 1185 00:58:20,860 --> 00:58:23,050 >> و من هنوز هم چک شرایط در هر زمان. 1186 00:58:23,050 --> 00:58:24,300 0 کمتر از 6؟ 1187 00:58:24,300 --> 00:58:25,600 1 کمتر از 6؟ 1188 00:58:25,600 --> 00:58:28,600 2 کمتر از 6، و غیره؟ 1189 00:58:28,600 --> 00:58:31,914 >> اما من کامپیوتر درخواست نیست دوباره، و دوباره، چه 1190 00:58:31,914 --> 00:58:33,080 طول نام Zamyla است؟ 1191 00:58:33,080 --> 00:58:34,320 طول نام Zamyla چیست؟ 1192 00:58:34,320 --> 00:58:35,986 طول نام این Zamyla چیست؟ 1193 00:58:35,986 --> 00:58:40,440 من به معنای واقعی کلمه به خاطر سپردن که اول و تنها در این متغیر n دوم پاسخ دهد. 1194 00:58:40,440 --> 00:58:45,280 بنابراین این شرکت خواهد بود نه تنها درست است، اما همچنین به خوبی طراحی شده است. 1195 00:58:45,280 --> 00:58:46,670 >> در حال حاضر، چه در مورد سبک؟ 1196 00:58:46,670 --> 00:58:48,866 من متغیرهایی من به نام ام بسیار خوب، من می گویند. 1197 00:58:48,866 --> 00:58:50,240 آنها در حال حاضر فوق العاده موجز است. 1198 00:58:50,240 --> 00:58:52,090 و این کاملا خوب. 1199 00:58:52,090 --> 00:58:55,120 >> اگر شما فقط یکی رشته در یک برنامه، 1200 00:58:55,120 --> 00:58:56,860 شما نیز ممکن است پاسخ آن را برای رشته ها. 1201 00:58:56,860 --> 00:58:59,370 اگر شما فقط یک متغیر برای شمارش در یک برنامه، 1202 00:58:59,370 --> 00:59:00,710 شما نیز ممکن است آن من است. 1203 00:59:00,710 --> 00:59:03,500 اگر شما از یک طول، N فوق العاده رایج است و همچنین. 1204 00:59:03,500 --> 00:59:05,800 اما من هر یک از کد من اظهار نظر. 1205 00:59:05,800 --> 00:59:09,200 >> من مطلع نیست ام reader-- این که آیا این TF من، یا TA است، 1206 00:59:09,200 --> 00:59:12,460 یا فقط colleague-- آنچه قرار است به در رفتن در این برنامه است. 1207 00:59:12,460 --> 00:59:15,760 و به این ترتیب به سبک خوب، آنچه که من می خواهم به انجام 1208 00:59:15,760 --> 00:59:24,580 this-- چیزی است مانند درخواست کاربر را برای ورودی. 1209 00:59:24,580 --> 00:59:26,670 و من می تواند بازنویسی این هر تعداد از راه. 1210 00:59:26,670 --> 00:59:35,630 >> اطمینان حاصل کنید که s-- مطمئن شوید دریافت رشته یک رشته بازگشت. 1211 00:59:35,630 --> 00:59:40,280 و سپس در here-- و این است که شاید از مهم ترین تکرار comment-- 1212 00:59:40,280 --> 00:59:44,450 بیش از شخصیت در یکی در یک زمان. 1213 00:59:44,450 --> 00:59:47,060 و من می توانم هر گونه استفاده انتخاب زبان انگلیسی 1214 00:59:47,060 --> 00:59:49,650 در اینجا به تشریح هر یک از از این تکه از کد. 1215 00:59:49,650 --> 00:59:52,740 >> توجه داشته باشید که من یک قرار داده نشده اظهار نظر در مورد هر خط از کد، 1216 00:59:52,740 --> 00:59:55,690 واقعا فقط در جالب آنهایی که، آنهایی که 1217 00:59:55,690 --> 00:59:59,460 برخی از این معنی که من ممکن است خواهید مطمئن فوق العاده به کسی روشن 1218 00:59:59,460 --> 01:00:00,460 خواندن کد من. 1219 01:00:00,460 --> 01:00:02,920 و چرا شما خواهان دریافت رشته درخواست کاربر را برای ورودی؟ 1220 01:00:02,920 --> 01:00:05,450 حتی که لزوما که توصیفی است. 1221 01:00:05,450 --> 01:00:09,340 اما آن کمک می کند یک داستان، به دلیل خط دوم در داستان است، مطمئن شوید که 1222 01:00:09,340 --> 01:00:10,740 رشته دریافت یک رشته بازگشت. 1223 01:00:10,740 --> 01:00:14,260 >> و خط سوم در داستان است، تکرار بیش از شخصیت ها در یکی 1224 01:00:14,260 --> 01:00:15,380 در یک زمان. 1225 01:00:15,380 --> 01:00:17,920 و در حال حاضر فقط برای اندازه گیری خوب، من قصد دارم به جلو بروید و اضافه 1226 01:00:17,920 --> 01:00:24,560 یک نظر که فقط می گوید چاپ شخصیت i ام در است. 1227 01:00:24,560 --> 01:00:26,520 در حال حاضر، آنچه را که من انجام داده در پایان روز؟ 1228 01:00:26,520 --> 01:00:29,190 >> من اضافه شده برخی از انگلیسی کلمات را در قالب نظر. 1229 01:00:29,190 --> 01:00:32,700 نماد بریده بریده معنی، هی، کامپیوتر این است که برای انسان، 1230 01:00:32,700 --> 01:00:33,820 برای شما نیست، کامپیوتر است. 1231 01:00:33,820 --> 01:00:35,119 بنابراین آنها منطقی کنه. 1232 01:00:35,119 --> 01:00:35,910 آنها فقط وجود دارد. 1233 01:00:35,910 --> 01:00:39,830 >> و، در واقع، CS50 IDE آنها نشان می دهد که خاکستری، به عنوان مفید است، اما کلیدی بودن 1234 01:00:39,830 --> 01:00:41,000 به برنامه است. 1235 01:00:41,000 --> 01:00:42,570 آنچه را هم اکنون می توانید انجام دهید. 1236 01:00:42,570 --> 01:00:44,950 آیا شما می دانید C برنامه نویسی یا نه، شما 1237 01:00:44,950 --> 01:00:47,722 می توانید فقط ایستاده پشت در این برنامه و خامه ای نظرات. 1238 01:00:47,722 --> 01:00:50,180 درخواست کاربر را برای ورودی، مطمئن شوید که دریافت رشته یک رشته بازگشت، 1239 01:00:50,180 --> 01:00:53,009 تکرار بیش از شخصیت ها در بازدید کنندگان یکی در یک زمان، چاپ شخصیت 1240 01:00:53,009 --> 01:00:55,550 شخصیت i ام در s-- شما نمی حتی باید به کد نگاه 1241 01:00:55,550 --> 01:00:57,270 برای درک آنچه این برنامه می کند. 1242 01:00:57,270 --> 01:01:00,280 و بهتر است، اگر شما خودتان نگاه در این برنامه در یک یا دو هفته، 1243 01:01:00,280 --> 01:01:02,280 یا یک ماه، یا یک سال، شما بیش از حد لازم نیست 1244 01:01:02,280 --> 01:01:04,420 به خیره در کد، تلاش برای به یاد داشته باشید، 1245 01:01:04,420 --> 01:01:06,630 آنچه که من در تلاش برای انجام با این کد؟ 1246 01:01:06,630 --> 01:01:07,770 >> شما خودتان را گفته ام. 1247 01:01:07,770 --> 01:01:11,660 شما آن را برای خودتان شرح داده ایم، و یا برخی از همکار، و یا TA، یا TF. 1248 01:01:11,660 --> 01:01:14,860 و بنابراین این شرکت خواهد بود درست است، و طراحی خوب، 1249 01:01:14,860 --> 01:01:18,210 و در نهایت سبک خوب نیز هست. 1250 01:01:18,210 --> 01:01:19,990 این کار را انجام باشید که در ذهن. 1251 01:01:19,990 --> 01:01:22,200 >> بنابراین یکی دیگر وجود دارد چیزی که من قصد دارم برای انجام در اینجا 1252 01:01:22,200 --> 01:01:28,240 که در حال حاضر می تواند نشان دهد دقیقا همان چیزی است رفتن به زیر هود. 1253 01:01:28,240 --> 01:01:30,390 بنابراین این ویژگی وجود دارد در C، و زبان های دیگر، 1254 01:01:30,390 --> 01:01:33,010 نام typecasting که یا به طور ضمنی 1255 01:01:33,010 --> 01:01:37,250 یا به صراحت اجازه می دهد تا شما را به تبدیل از یک نوع داده را به دیگری. 1256 01:01:37,250 --> 01:01:39,800 ما خرید و فروش شده ام تا دور، امروز با رشته ها. 1257 01:01:39,800 --> 01:01:41,250 >> و رشته کاراکتر می باشد. 1258 01:01:41,250 --> 01:01:44,910 اما به یاد از هفته 0، چه شخصیت است؟ 1259 01:01:44,910 --> 01:01:49,334 شخصیت فقط یک انتزاع در بالای اعداد اعشاری numbers--، 1260 01:01:49,334 --> 01:01:52,500 و اعداد اعشاری هستند که واقعا فقط یک انتزاع در بالای اعداد دودویی، 1261 01:01:52,500 --> 01:01:53,720 که ما آن را تعریف می شود. 1262 01:01:53,720 --> 01:01:55,540 >> بنابراین شخصیت اعداد هستند. 1263 01:01:55,540 --> 01:01:58,410 و شماره کاراکتر داریم، فقط بسته به زمینه. 1264 01:01:58,410 --> 01:02:01,250 و معلوم است که در داخل از یک برنامه کامپیوتری، 1265 01:02:01,250 --> 01:02:06,830 می تواند شما را مشخص کنید که چگونه می خواهید به نگاه در بیت داخل آن برنامه؟ 1266 01:02:06,830 --> 01:02:10,400 >> به یاد بیاورید از هفته 0 که ما تا به حال اسکی، است که فقط این کد 1267 01:02:10,400 --> 01:02:11,620 نامه های نقشه برداری به شماره. 1268 01:02:11,620 --> 01:02:13,660 و ما گفت: سرمایه 65 است. 1269 01:02:13,660 --> 01:02:15,860 سرمایه B 66، و غیره. 1270 01:02:15,860 --> 01:02:20,500 >> و توجه کنید، ما اساسا کاراکتر بر روی ردیف بالا اینجا، به عنوان C آنها را پاسخ، 1271 01:02:20,500 --> 01:02:23,400 شخصیت ها، و پس از آن نوع داده int در سطر دوم. 1272 01:02:23,400 --> 01:02:28,180 و معلوم است شما می توانید تبدیل یکپارچه بین این دو، به طور معمول. 1273 01:02:28,180 --> 01:02:30,042 و اگر ما می خواهیم انجام این به عمد، ما 1274 01:02:30,042 --> 01:02:31,750 ممکن است بخواهید برای مقابله با چیزی شبیه به این. 1275 01:02:31,750 --> 01:02:33,590 >> ما ممکن است می خواهید برای تبدیل مورد بالا به پایین 1276 01:02:33,590 --> 01:02:35,330 مورد، و یا با حروف کوچک به حروف بزرگ. 1277 01:02:35,330 --> 01:02:38,000 و معلوم است وجود دارد در واقع یک الگوی در اینجا 1278 01:02:38,000 --> 01:02:39,900 ما می توانیم در یک لحظه در آغوش. 1279 01:02:39,900 --> 01:02:44,120 اما اجازه دهید نگاهی اولین بار در یک به عنوان مثال برای انجام این کار به صراحت. 1280 01:02:44,120 --> 01:02:46,340 >> من قصد دارم برای رفتن دوباره به IDE CS50. 1281 01:02:46,340 --> 01:02:50,640 من قصد دارم برای ایجاد یک فایل به نام اسکی 0.c. 1282 01:02:50,640 --> 01:02:55,960 و من قصد دارم به جلو بروید و اضافه کردن من io.h استاندارد در بالا، اعتبار اصلی اعضای هیات 1283 01:02:55,960 --> 01:02:57,370 در بالای عملکرد من. 1284 01:02:57,370 --> 01:03:02,700 و پس از آن من فقط رفتن را به انجام شرح زیر است یک حلقه for از من برابر با، 1285 01:03:02,700 --> 01:03:04,610 اجازه دهید بگویم، 65. 1286 01:03:04,610 --> 01:03:10,460 >> و پس از آن من است برای رفتن به کمتر از 65، به علاوه 26 حرف در الفبای. 1287 01:03:10,460 --> 01:03:12,640 بنابراین من کامپیوتر اجازه انجام محاسبات ریاضی برای من وجود دارد. 1288 01:03:12,640 --> 01:03:15,100 و سپس در داخل این حلقه، چه هستم من به چاپ؟ 1289 01:03:15,100 --> 01:03:19,230 >> ٪ C٪ من بک اسلش نفر است. 1290 01:03:19,230 --> 01:03:21,290 و در حال حاضر من می خواهم را به برق وصل دو مقدار. 1291 01:03:21,290 --> 01:03:24,530 من به طور موقت سوال قرار داده نشانه وجود دارد به دعوت این سوال. 1292 01:03:24,530 --> 01:03:29,940 >> من می خواهم به تکرار از 65 به بعد برای 26 حرف از حروف الفبا، 1293 01:03:29,940 --> 01:03:35,190 چاپ کردن در هر تکرار که معادل جدایی ناپذیر شخصیت است. 1294 01:03:35,190 --> 01:03:38,299 به عبارت دیگر، من می خواهم تکرار چاپ بیش از 26 عدد 1295 01:03:38,299 --> 01:03:41,590 چه شخصیت ASCII است؛ این نامه، و چه شماره مربوطه is-- 1296 01:03:41,590 --> 01:03:44,650 واقعا از بازآفرینی نمودار از اسلاید. 1297 01:03:44,650 --> 01:03:47,010 پس چه باید این علامت سوال می شود؟ 1298 01:03:47,010 --> 01:03:51,760 >> خب، معلوم است که دوم یکی فقط باید من متغیر باشد. 1299 01:03:51,760 --> 01:03:53,860 من می خواهم برای دیدن که به عنوان یک عدد. 1300 01:03:53,860 --> 01:03:58,920 و استدلال وسط در اینجا، من می توانید به کامپیوتر می گوید 1301 01:03:58,920 --> 01:04:03,470 برای درمان که عدد صحیح من به عنوان یک شخصیت، به طوری که 1302 01:04:03,470 --> 01:04:05,880 به جایگزین آن برای درصد C. 1303 01:04:05,880 --> 01:04:07,990 >> به عبارت دیگر، اگر من، برنامه نویس بشر، مطمئن شوید 1304 01:04:07,990 --> 01:04:09,865 این فقط اعداد در پایان روز. 1305 01:04:09,865 --> 01:04:12,500 و من می دانم که 65 باید نقشه به برخی از شخصیت. 1306 01:04:12,500 --> 01:04:15,310 با استفاده از این بازیگران صریح و روشن، با یک پرانتز، 1307 01:04:15,310 --> 01:04:18,840 نام نوع داده شما می خواهید تبدیل، و یک پرانتز بسته، 1308 01:04:18,840 --> 01:04:21,200 شما می توانید به کامپیوتر، هی، کامپیوتر، 1309 01:04:21,200 --> 01:04:24,130 تبدیل این عدد صحیح به یک کاراکتر. 1310 01:04:24,130 --> 01:04:26,250 >> بنابراین، هنگامی که من این اجرا برنامه بعد از کامپایل، 1311 01:04:26,250 --> 01:04:29,740 بیایید ببینید که چه من get-- اسکی 0. 1312 01:04:29,740 --> 01:04:33,020 رفو آن، آنچه که من اشتباه اینجا انجام دهید؟ 1313 01:04:33,020 --> 01:04:35,884 استفاده از شناسه اعلام نشده، همه حق است، عمدی نیست، 1314 01:04:35,884 --> 01:04:37,800 اما بیایید ببینید اگر ما نمی تواند دلیل از طریق این. 1315 01:04:37,800 --> 01:04:41,220 >> بنابراین خط five-- بنابراین من می کنید بسیار دور قبل از screwing است. 1316 01:04:41,220 --> 01:04:42,140 این خوب است. 1317 01:04:42,140 --> 01:04:46,560 بنابراین خط 5 برای من برابر با 65-- من می بینم. 1318 01:04:46,560 --> 01:04:50,130 بنابراین به یاد داشته باشید که در C، بر خلاف برخی زبان اگر شما برنامه نویسی قبل 1319 01:04:50,130 --> 01:04:52,190 تجربه، شما باید به کامپیوتر، 1320 01:04:52,190 --> 01:04:55,040 بر خلاف خراش، چه نوع متغیر است. 1321 01:04:55,040 --> 01:04:56,860 >> و من یک عبارت کلیدی فراموش کنید. 1322 01:04:56,860 --> 01:04:59,200 در خط پنج، من با استفاده از من آغاز شده است. 1323 01:04:59,200 --> 01:05:01,560 اما من C گفته نمی چه نوع داده آن است. 1324 01:05:01,560 --> 01:05:04,570 بنابراین من قصد دارم به در و می گویند، آه، آن یک عدد صحیح است. 1325 01:05:04,570 --> 01:05:07,050 >> حالا من قصد دارم به جلو بروید و کامپایل مجدد. 1326 01:05:07,050 --> 01:05:08,080 که ثابت است. 1327 01:05:08,080 --> 01:05:12,660 ./ascii0 را وارد کنید، که نوع سرد است. 1328 01:05:12,660 --> 01:05:15,360 نه تنها از آن فوق العاده سریع برای بپرسید کامپیوتر این سوال، 1329 01:05:15,360 --> 01:05:18,885 به جای دنبال آن در یک اسلاید، آن را چاپ کرد در هر خط، A 65، 1330 01:05:18,885 --> 01:05:24,860 B 66، تمام راه است down-- از آنجایی که من این 26 times-- به حروف Z انجام داد، 1331 01:05:24,860 --> 01:05:25,630 که 90 است. 1332 01:05:25,630 --> 01:05:27,790 و، در واقع، کمی هوشمند تر 1333 01:05:27,790 --> 01:05:31,030 برای من برای تکیه نمی بر روی کامپیوتر به اضافه کردن 26. 1334 01:05:31,030 --> 01:05:34,060 من می توانم فقط انجام 90 و همچنین، تا زمانی 1335 01:05:34,060 --> 01:05:37,390 به عنوان من همان اشتباه را دو بار. 1336 01:05:37,390 --> 01:05:41,880 من می خواهم برای رفتن به بالا از طریق Z، نه فقط از طریق y است. 1337 01:05:41,880 --> 01:05:44,000 >> به طوری که Casting صریح است. 1338 01:05:44,000 --> 01:05:47,860 به نظر می رسد که این حتی لازم نیست. 1339 01:05:47,860 --> 01:05:52,480 اجازه دهید من به جلو و دوباره این کامپایلر و مجدد اسکی 0. 1340 01:05:52,480 --> 01:05:54,940 معلوم می شود که C بسیار هوشمند است. 1341 01:05:54,940 --> 01:05:57,150 >> و تابع () printf، به ویژه، بسیار هوشمند است. 1342 01:05:57,150 --> 01:06:01,260 اگر شما فقط یک من عبور دو بار برای هر دو متغیرهایی، تابع () printf 1343 01:06:01,260 --> 01:06:04,510 متوجه خواهد شد، اوه، خب من که می دانید داد من یک integer-- برخی از تعداد، 1344 01:06:04,510 --> 01:06:06,380 مانند 65، یا 90، و یا هر چیز دیگری. 1345 01:06:06,380 --> 01:06:10,170 اما من می بینم که شما من می خواهم به فرمت است که شماره ها مانند یک شخصیت. 1346 01:06:10,170 --> 01:06:16,460 و به این ترتیب تابع () printf به طور ضمنی می توانید بازیگران به یک کاراکتر برای شما اعضای هیات است. 1347 01:06:16,460 --> 01:06:19,360 به طوری که یک مشکل در همه. 1348 01:06:19,360 --> 01:06:23,100 >> اما توجه کنید، به خاطر این هم ارزی ما در واقع می توانید این کار را به خوبی. 1349 01:06:23,100 --> 01:06:26,520 اجازه بدهید به جلو و ایجاد یک نسخه دیگر از this-- 1.c. اسکی 1350 01:06:26,520 --> 01:06:31,800 و به جای تکرار بیش از اعداد صحیح، واقعا می تواند ضربه و ذهن شما را 1351 01:06:31,800 --> 01:06:33,610 با تکرار بیش از شخصیت. 1352 01:06:33,610 --> 01:06:37,660 اگر یک کاراکتر C می شود سرمایه، من می خواهید به جلو بروید و این کار، 1353 01:06:37,660 --> 01:06:41,740 تا زمانی که C کمتر یا مساوی است به زهرا سرمایه و در هر تکرار 1354 01:06:41,740 --> 01:06:45,690 من می خواهم به افزایش گراد، من می توانم در حال حاضر در خط تابع () printf من در اینجا 1355 01:06:45,690 --> 01:06:51,320 مثلا درصد C است درصد من دوباره، C. کاما 1356 01:06:51,320 --> 01:06:57,200 >> و در حال حاضر، من می توانید جهت دیگر، ریخته گری شخصیت صریحا 1357 01:06:57,200 --> 01:06:58,500 به یک عدد صحیح. 1358 01:06:58,500 --> 01:07:00,560 پس، دوباره، چرا شما این کار؟ 1359 01:07:00,560 --> 01:07:03,830 این کمی عجیب و غریب به مرتب کردن بر اساس شمارش از نظر شخصیت. 1360 01:07:03,830 --> 01:07:07,430 >> اما اگر شما را در درک آنچه که در رفتن در زیر هود، 1361 01:07:07,430 --> 01:07:08,430 واقعا هیچ سحر و جادو وجود دارد. 1362 01:07:08,430 --> 01:07:13,060 شما فقط گفت، هی، کامپیوتر را من یک متغیر به نام C از نوع char. 1363 01:07:13,060 --> 01:07:16,520 مقداردهی اولیه آن را به سرمایه A. و متوجه نقل قول تکی ماده. 1364 01:07:16,520 --> 01:07:19,580 >> برای شخصیت های در C، یاد از در هفته گذشته، شما با استفاده از نقل قول تکی. 1365 01:07:19,580 --> 01:07:23,720 برای رشته ها، کلمات، عبارات، شما با استفاده کوتیشن. 1366 01:07:23,720 --> 01:07:27,210 OK، کامپیوتر، در حفظ و انجام این، به طوری که زمانی که شخصیت کمتر از است 1367 01:07:27,210 --> 01:07:28,050 و یا به Z برابر است. 1368 01:07:28,050 --> 01:07:32,640 و من از جدول ASCII من می دانم که همه از این کد اسکی به هم پیوسته هستند. 1369 01:07:32,640 --> 01:07:33,400 >> هیچ شکاف وجود دارد. 1370 01:07:33,400 --> 01:07:36,737 بنابراین آن را فقط از طریق Z، از هم جدا شده هر یک عدد است. 1371 01:07:36,737 --> 01:07:38,820 و پس از آن من می توانم افزایش یک کاراکتر، اگر من واقعا می خواهید. 1372 01:07:38,820 --> 01:07:40,390 در پایان روز، آن فقط یک عدد است. 1373 01:07:40,390 --> 01:07:41,030 من این را می دانم. 1374 01:07:41,030 --> 01:07:43,670 بنابراین من فقط می توانید تصور برای اضافه کردن 1 به آن است. 1375 01:07:43,670 --> 01:07:46,940 >> و سپس این زمان، من چاپ گراد، و پس از آن معادل جدایی ناپذیر است. 1376 01:07:46,940 --> 01:07:50,170 و من حتی نمی نیاز به بازیگران صریح و روشن نیست. 1377 01:07:50,170 --> 01:07:52,680 من می توانم printf و اجازه همه چیز شکل کامپیوتر بیرون، 1378 01:07:52,680 --> 01:07:57,300 به طوری که در حال حاضر اگر من را اجرا را Ascii1./ascii1، 1379 01:07:57,300 --> 01:08:01,520 من دقیقا همین است. 1380 01:08:01,520 --> 01:08:04,530 >> برنامه بی فایده، though-- هیچ کس در حال رفتن به در واقع نرم افزار ارسال 1381 01:08:04,530 --> 01:08:07,549 به منظور کشف کردن، چه بود شماره ای که نقشه ها را به A، B و یا، و یا Z؟ 1382 01:08:07,549 --> 01:08:10,340 شما در حال رفتن به آن را گوگل، و یا نگاه کنید آن را آنلاین، و یا آن را 1383 01:08:10,340 --> 01:08:11,650 در یک اسلاید، و یا مانند. 1384 01:08:11,650 --> 01:08:13,520 تا جایی که این در واقع مفید است؟ 1385 01:08:13,520 --> 01:08:15,960 >> خب، صحبت از که اسلاید، توجه داشته باشید که 1386 01:08:15,960 --> 01:08:20,890 یک الگوی واقعی در اینجا بین حروف بزرگ بزرگ و کوچک که تصادفی نیست. 1387 01:08:20,890 --> 01:08:23,760 توجه داشته باشید که سرمایه 65 است. 1388 01:08:23,760 --> 01:08:25,830 حروف کوچک 97 است. 1389 01:08:25,830 --> 01:08:29,649 و مورد پایین تر چگونه دور است؟ 1390 01:08:29,649 --> 01:08:32,649 >> بنابراین 65 است چگونه بسیاری از مراحل به دور از 97؟ 1391 01:08:32,649 --> 01:08:36,210 بنابراین 97 منهای 65 32 است. 1392 01:08:36,210 --> 01:08:37,910 بنابراین سرمایه 65 است. 1393 01:08:37,910 --> 01:08:39,939 اگر شما اضافه کردن 32 به آن، شما کوچک است. 1394 01:08:39,939 --> 01:08:43,729 و هم ارز آن، اگر شما تفریق 32، شما به عقب بر گردیم به سرمایه A-- با B 1395 01:08:43,729 --> 01:08:46,380 به B کمی، C بزرگ به کوچک ج. 1396 01:08:46,380 --> 01:08:50,670 >> همه از این شکاف 32 از هم جدا. 1397 01:08:50,670 --> 01:08:54,450 در حال حاضر، این به نظر می رسد به ما اجازه می دهد به چیزی شبیه به مایکروسافت ورد، 1398 01:08:54,450 --> 01:08:57,729 یا Google Docs از ویژگی های، که در آن شما می توانید همه چیز را انتخاب کنید و پس از آن می گویند، 1399 01:08:57,729 --> 01:09:00,520 تغییر همه به حروف کوچک، یا تغییر همه به مورد بالا، 1400 01:09:00,520 --> 01:09:03,840 یا تغییر تنها اولین کلمه یک جمله به حروف بزرگ. 1401 01:09:03,840 --> 01:09:07,390 ما در واقع می تواند انجام کاری که خودمان. 1402 01:09:07,390 --> 01:09:12,645 >> اجازه دهید من به جلو و ذخیره کردن یک فایل در اینجا به نام سرمایه گذاری 0.c. 1403 01:09:12,645 --> 01:09:15,770 و اجازه دهید به جلو و شلاق تا یک برنامه که دقیقا همان است که شرح زیر است. 1404 01:09:15,770 --> 01:09:18,460 بنابراین شامل کتابخانه CS50. 1405 01:09:18,460 --> 01:09:21,430 و شامل استاندارد I / O. 1406 01:09:21,430 --> 01:09:22,787 >> و من می دانم این است که به زودی. 1407 01:09:22,787 --> 01:09:24,870 بنابراین من قصد دارم به آن را در وجود دارد در حال حاضر، string.h، 1408 01:09:24,870 --> 01:09:26,960 بنابراین من به اینترنت دسترسی دارند چیزهایی مثل استرلینگ، 1409 01:09:26,960 --> 01:09:29,620 و پس از آن اعضای هیات اعتبار اصلی، به طور معمول. 1410 01:09:29,620 --> 01:09:33,420 و سپس من قصد دارم به جلو بروید و رشته می شود از رشته، 1411 01:09:33,420 --> 01:09:35,032 فقط برای گرفتن یک رشته از کاربر. 1412 01:09:35,032 --> 01:09:36,740 و پس از آن من قصد دارم به انجام بررسی سلامت عقل من. 1413 01:09:36,740 --> 01:09:40,510 اگر رشته تهی برابر نیست، سپس آن را بی خطر را ادامه دهید. 1414 01:09:40,510 --> 01:09:42,000 و آنچه من می خواهم کاری انجام دهید؟ 1415 01:09:42,000 --> 01:09:48,700 من قصد دارم به تکرار از من برابر با 0، و n تا طول رشته ها. 1416 01:09:48,700 --> 01:09:51,899 >> و من قصد دارم برای انجام این کار تا زمانی که من کمتر از n است، و من به علاوه به علاوه. 1417 01:09:51,899 --> 01:09:55,060 تا کنون، من واقعا فقط من قرض گرفتن ایده از قبل. 1418 01:09:55,060 --> 01:09:57,010 و در حال حاضر من قصد دارم به معرفی یک شاخه. 1419 01:09:57,010 --> 01:09:59,635 >> بنابراین فکر می کنم به خراش، که در آن ما تا به حال کسانی که چنگال در جاده، 1420 01:09:59,635 --> 01:10:05,110 و هفته گذشته در C. من قصد دارم به این می گویند، اگر شخصیت i ام در S 1421 01:10:05,110 --> 01:10:09,250 بزرگتر یا برابر به حروف A، 1422 01:10:09,250 --> 01:10:13,340 and-- در ابتدا شما را به معنای واقعی کلمه می گویند و اما در C می توانید بگویید علامت، 1423 01:10:13,340 --> 01:10:19,830 ampersand-- و شخصیت i ام در S کمتر یا مساوی به حروف کوچک Z است، 1424 01:10:19,830 --> 01:10:21,780 اجازه دهید چیزی جالب است. 1425 01:10:21,780 --> 01:10:27,020 اجازه دهید در واقع چاپ کردن یک شخصیت با خط جدید 1426 01:10:27,020 --> 01:10:31,760 که شخصیت در رشته است، شخصیت i ام در رشته. 1427 01:10:31,760 --> 01:10:37,420 >> اما اجازه دهید به جلو و تفریق 32 از آن. 1428 01:10:37,420 --> 01:10:42,120 دیگر در صورتی که شخصیت را در رشته ای که ما به دنبال 1429 01:10:42,120 --> 01:10:45,950 است بین یک کمی نیست و کمی Z، به جلو 1430 01:10:45,950 --> 01:10:48,610 و فقط آن را چاپ کرد بدون تغییر. 1431 01:10:48,610 --> 01:10:50,840 بنابراین ما معرفی کرده ایم این نماد پرانتز 1432 01:10:50,840 --> 01:10:53,560 برای رشته ما را به دریافت در i ام کاراکتر در رشته. 1433 01:10:53,560 --> 01:10:57,520 >> من مقداری منطق شرطی اضافه شده است، مانند ابتدا در هفته گذشته یک هفته، که در آن 1434 01:10:57,520 --> 01:10:59,880 من فقط با استفاده از اساسی من درک درستی از آنچه است 1435 01:10:59,880 --> 01:11:01,130 رفتن به زیر هود. 1436 01:11:01,130 --> 01:11:04,190 آیا شخصیت i ام از بازدید کنندگان بزرگتر یا مساوی به یک؟ 1437 01:11:04,190 --> 01:11:08,290 مانند، آن است که 97 یا 98، یا 99، و غیره؟ 1438 01:11:08,290 --> 01:11:11,940 >> اما آن را نیز کمتر یا مساوی به ارزش Z حروف کوچک؟ 1439 01:11:11,940 --> 01:11:16,210 و اگر چنین است، چه این خط چیست؟ 1440 01:11:16,210 --> 01:11:20,250 14، این نوع از است جوانه از کل ایده، 1441 01:11:20,250 --> 01:11:23,840 سرمایه گذاری حرف های به سادگی کم کردن 32 از آن، 1442 01:11:23,840 --> 01:11:29,370 در این مورد، زیرا من می دانم، در هر که نمودار، چگونه اعداد من نشان داده شده است. 1443 01:11:29,370 --> 01:11:33,925 بنابراین اجازه دهید به جلو و اجرای این، بعد از کامپایل سرمایه گذاری 0.c، 1444 01:11:33,925 --> 01:11:36,210 و اجرا سرمایه گذاری 0. 1445 01:11:36,210 --> 01:11:40,300 >> اجازه دهید چیزی شبیه به تایپ در Zamyla در تمام حروف کوچک وارد کنید. 1446 01:11:40,300 --> 01:11:42,780 و در حال حاضر ما Zamyla در تمام حروف بزرگ است. 1447 01:11:42,780 --> 01:11:45,050 بیایید نوع در راب در تمام حروف کوچک. 1448 01:11:45,050 --> 01:11:46,674 بیایید سعی کنید جیسون در تمام حروف کوچک. 1449 01:11:46,674 --> 01:11:48,590 و ما حفظ شدن سرمایه مجبور. 1450 01:11:48,590 --> 01:11:50,960 یک اشکال جزئی وجود دارد که من نوع پیش بینی نیست. 1451 01:11:50,960 --> 01:11:54,050 توجه داشته باشید سریع جدید من است پایان دادن به در همان خط به عنوان نام خود، 1452 01:11:54,050 --> 01:11:55,520 که احساس کثیف کمی. 1453 01:11:55,520 --> 01:11:59,170 >> بنابراین من قصد دارم به اینجا بروید و در واقع در پایان این برنامه 1454 01:11:59,170 --> 01:12:02,110 چاپ کردن یک کاراکتر خط جدید. 1455 01:12:02,110 --> 01:12:03,160 که تمام است. 1456 01:12:03,160 --> 01:12:06,120 با printf، شما نیاز دارید که نه تصویب در متغیرها و یا کد فرمت. 1457 01:12:06,120 --> 01:12:08,460 شما به معنای واقعی کلمه می تواند فقط چاپ چیزی شبیه به یک خط جدید. 1458 01:12:08,460 --> 01:12:13,529 >> بنابراین اجازه دهید پیش بروید و سرمایه گذاری 0 دوباره، دوباره آن، Zamyla. 1459 01:12:13,529 --> 01:12:14,820 و در حال حاضر آن را به یک زیباتر کم است. 1460 01:12:14,820 --> 01:12:17,274 در حال حاضر، سریع من در خط جدید خود است. 1461 01:12:17,274 --> 01:12:18,440 به طوری که همه خوب هستند و خوب است. 1462 01:12:18,440 --> 01:12:19,910 به طوری که یک مثال خوب است. 1463 01:12:19,910 --> 01:12:22,700 اما من حتی لزوما نیاز به کد سخت 32. 1464 01:12:22,700 --> 01:12:23,350 میدونی چیه؟ 1465 01:12:23,350 --> 01:12:26,350 من می توانم می گویند من هرگز به یاد داشته باشید چه تفاوت است. 1466 01:12:26,350 --> 01:12:29,330 >> اما من می دانم که اگر من یک حرف کوچک، 1467 01:12:29,330 --> 01:12:34,430 من اساسا می خواهیم به تفریق کردن هر فاصله بین کمی 1468 01:12:34,430 --> 01:12:39,160 A و بزرگ یک، چرا که اگر من فرض کنیم که همه حروف دیگر یکسان هستند، 1469 01:12:39,160 --> 01:12:41,045 که باید این کار را انجام می شود. 1470 01:12:41,045 --> 01:12:42,670 اما به جای انجام این کار، شما می دانید چه؟ 1471 01:12:42,670 --> 01:12:44,240 راه دیگری هنوز هم وجود دارد. 1472 01:12:44,240 --> 01:12:48,090 >> در صورتی که سرمایه گذاری 1.c-- اگر من برای قرار دادن این به یک فایل جداگانه. 1473 01:12:48,090 --> 01:12:51,030 اجازه دهید سرمایه گذاری 2.c شرح زیر است. 1474 01:12:51,030 --> 01:12:53,060 من قصد دارم به واقعا این تمیز کردن اینجا. 1475 01:12:53,060 --> 01:12:57,420 و به جای حتی نیاز به مطمئن شوید و یا در مورد آن سطح پایین مراقبت 1476 01:12:57,420 --> 01:13:01,090 جزئیات پیاده سازی، من به جای تو فقط رفتن به چاپ یک شخصیت، 1477 01:13:01,090 --> 01:13:04,610 نقل قول را تمام کردن، درصد C، و سپس تماس بگیرید و تابع دیگر که 1478 01:13:04,610 --> 01:13:09,950 وجود دارد که یک آرگومان، که یک شخصیت، مثل این است. 1479 01:13:09,950 --> 01:13:12,630 >> به نظر می رسد در C، وجود دارد یکی دیگر از فراخوانی تابع 1480 01:13:12,630 --> 01:13:15,550 به بالا، که به عنوان نام آن نشان می دهد طول می کشد یک شخصیت 1481 01:13:15,550 --> 01:13:19,350 و آن را به مورد بالا آن معادل، و سپس آن را می گرداند 1482 01:13:19,350 --> 01:13:21,410 به طوری که تابع () printf می توانید آن را در پلاگین وجود دارد. 1483 01:13:21,410 --> 01:13:25,484 و به این ترتیب برای انجام این کار، هر چند، من نیاز به معرفی یک فایل دیگر. 1484 01:13:25,484 --> 01:13:28,400 به نظر می رسد این فایل دیگر وجود دارد است که شما فقط از کلاس مطمئن شوید، 1485 01:13:28,400 --> 01:13:33,020 و یا یک کتاب درسی، و یا یک آنلاین مرجع، به نام type.h. C 1486 01:13:33,020 --> 01:13:38,570 >> بنابراین اگر من اضافه کنم که در میان هدر من فایل ها، و در حال حاضر دوباره کامپایل این برنامه، 1487 01:13:38,570 --> 01:13:43,040 capitalize2، ./capitalize2 را وارد کنید. 1488 01:13:43,040 --> 01:13:46,690 بیایید نوع در Zamyla در تمام حروف کوچک، هنوز هم کار می کند همان. 1489 01:13:46,690 --> 01:13:48,040 اما میدونی چیه؟ 1490 01:13:48,040 --> 01:13:55,590 به نظر می رسد که به بالا برخی از قابلیت های دیگر. 1491 01:13:55,590 --> 01:13:58,410 >> و اجازه دهید این را معرفی کنم فرمان در اینجا، نوع ناشیانه 1492 01:13:58,410 --> 01:14:00,250 نام، اما انسان به صورت دستی. 1493 01:14:00,250 --> 01:14:03,960 به نظر می رسد که بیشتر کامپیوترهای لینوکس، که ما با استفاده here-- عامل لینوکس 1494 01:14:03,960 --> 01:14:06,270 system-- یک دستور دارند مردی به نام، که می گوید، 1495 01:14:06,270 --> 01:14:08,530 هی، کامپیوتر، به من بدهد کتابچه راهنمای کامپیوتر. 1496 01:14:08,530 --> 01:14:10,680 چه شما می خواهید نگاه کردن در کتابچه راهنمای کاربر. 1497 01:14:10,680 --> 01:14:13,840 >> من می خواهم به نگاه کردن به تابع نام به بالا، وارد کنید. 1498 01:14:13,840 --> 01:14:16,070 و آن را کمی مرموز به خواندن گاهی اوقات. 1499 01:14:16,070 --> 01:14:18,780 اما توجه کنید که ما در حال راهنمای برنامه نویس لینوکس است. 1500 01:14:18,780 --> 01:14:19,530 و آن همه متن. 1501 01:14:19,530 --> 01:14:21,905 و توجه داشته باشید که وجود دارد نام تابع تا اینجا. 1502 01:14:21,905 --> 01:14:25,030 به نظر می رسد آن را به یک پسر عموی نام به پایین تر، که کند مخالف است. 1503 01:14:25,030 --> 01:14:29,710 و توجه تحت خلاصه داستان، به استفاده از این عملکرد صفحه مرد، پس به صحبت، 1504 01:14:29,710 --> 01:14:32,220 است من گفتن که من نیاز به type.h. C 1505 01:14:32,220 --> 01:14:33,630 و من از عمل می دانستند که. 1506 01:14:33,630 --> 01:14:36,210 >> در اینجا، آن را به من نشان دادن دو نمونه های اولیه برای تابع، 1507 01:14:36,210 --> 01:14:39,070 به طوری که اگر من همیشه می خواهید به استفاده از این من می دانم آنچه را که آنها به عنوان ورودی، 1508 01:14:39,070 --> 01:14:40,652 و آنچه را که به عنوان خروجی بازگشت. 1509 01:14:40,652 --> 01:14:42,360 و پس از آن اگر من توضیحات، من 1510 01:14:42,360 --> 01:14:44,820 در جزئیات بیشتر آنچه را که تابع انجام می دهد. 1511 01:14:44,820 --> 01:14:48,100 اما مهم تر، اگر من در زیر مقدار بازگشتی نگاه کنید، 1512 01:14:48,100 --> 01:14:51,710 آن را می گوید، مقدار برگردانده است که این نامه تبدیل شده، 1513 01:14:51,710 --> 01:14:57,880 و یا C، ورودی اصلی، در صورت تبدیل امکان پذیر نیست. 1514 01:14:57,880 --> 01:15:01,992 >> به عبارت دیگر، به بالا سعی خواهد کرد برای تبدیل یک نامه به مورد بالا. 1515 01:15:01,992 --> 01:15:03,450 و اگر چنین است، آن را به آن بازگشت. 1516 01:15:03,450 --> 01:15:07,010 اما اگر آن را نمی تواند برای برخی از reason-- شاید آن را مورد در حال حاضر بالا، 1517 01:15:07,010 --> 01:15:09,550 شاید آن یک علامت تعجب است و یا برخی از punctuation-- دیگر 1518 01:15:09,550 --> 01:15:12,200 آن را فقط به بازگشت به C اصلی، 1519 01:15:12,200 --> 01:15:17,340 که به معنی من می توانید کد من را بهتر طراحی شده شرح زیر است. 1520 01:15:17,340 --> 01:15:20,580 >> من تمام نیاز این خطوط رفو از کد. 1521 01:15:20,580 --> 01:15:22,610 همه خطوط من فقط برجسته می 1522 01:15:22,610 --> 01:15:28,700 شود را تنها در یک ساده سقوط خط است، که this-- درصد تابع () printf 1523 01:15:28,700 --> 01:15:33,510 C به S بالاتر از براکت من. 1524 01:15:33,510 --> 01:15:36,090 و این می تواند یک نمونه از طراحی بهتر است. 1525 01:15:36,090 --> 01:15:40,040 >> چرا پیاده سازی آن در 7 یا 8 خط از کد، هر آنچه در آن من فقط 1526 01:15:40,040 --> 01:15:44,960 حذف، هنگامی که شما می توانید به جای سقوط همه از آن منطق و تصمیم گیری 1527 01:15:44,960 --> 01:15:49,620 به یک خط، 13 حال حاضر، که متکی بر یک کتابخانه تابع 1528 01:15:49,620 --> 01:15:53,430 یک تابع است که می آید با C، اما این دقیقا همان چیزی است که شما می خواهید آن را به انجام. 1529 01:15:53,430 --> 01:15:55,295 و صادقانه بگویم، حتی اگر آن را با C نیست، 1530 01:15:55,295 --> 01:15:58,880 شما می توانید آن را به خودتان پیاده سازی، به عنوان ما دیده ایم، با گرفتن INT منفی 1531 01:15:58,880 --> 01:16:01,700 و مثبت INT هفته گذشته است. 1532 01:16:01,700 --> 01:16:03,470 >> این کد در حال حاضر بسیار بیشتر قابل خواندن است. 1533 01:16:03,470 --> 01:16:06,670 و، در واقع، اگر ما رفته بالا، نگاه کنید که چگونه بسیار فشرده تر 1534 01:16:06,670 --> 01:16:08,360 این نسخه از برنامه من است. 1535 01:16:08,360 --> 01:16:11,230 این سنگین بالا کمی در حال حاضر، با تمام این شامل. 1536 01:16:11,230 --> 01:16:14,380 اما این OK، چرا که اکنون من ایستاده بر دوش برنامه نویسان 1537 01:16:14,380 --> 01:16:15,300 قبل از من. 1538 01:16:15,300 --> 01:16:18,440 و هر کس آن بود که اجرا به بالا واقعا 1539 01:16:18,440 --> 01:16:21,470 من به نفع، بسیار شبیه به هر کس اجرا استرلینگ واقعا 1540 01:16:21,470 --> 01:16:24,790 من به نفع چند وقت پیش بود. 1541 01:16:24,790 --> 01:16:26,970 و بنابراین در حال حاضر ما یک برنامه طراحی بهتر 1542 01:16:26,970 --> 01:16:31,680 که پیاده سازی منطق دقیق. 1543 01:16:31,680 --> 01:16:35,580 >> صحبت از استرلینگ، اجازه دهید من به جلو بروید و این کار را. 1544 01:16:35,580 --> 01:16:38,320 اجازه دهید من جلو بروید و صرفه جویی این فایل به عنوان stirling.c. 1545 01:16:38,320 --> 01:16:43,255 و معلوم است، ما می توانیم پوست یک لایه دیگر بسیار به سادگی در حال حاضر. 1546 01:16:43,255 --> 01:16:45,630 من قصد دارم به جلو بروید و شلاق تا یک برنامه دیگر در اصلی 1547 01:16:45,630 --> 01:16:49,759 در اینجا است که به سادگی مجدد ادوات طول رشته شرح زیر است. 1548 01:16:49,759 --> 01:16:52,300 بنابراین در اینجا یک خط از کد است که من می شود یک رشته از کاربر. 1549 01:16:52,300 --> 01:16:53,910 ما را با استفاده از این دوباره و دوباره. 1550 01:16:53,910 --> 01:16:58,900 بگذار من یک متغیر به نام به N از نوع int است که ذخیره یک عدد است. 1551 01:16:58,900 --> 01:17:02,490 >> و اجازه دهید من به جلو و انجام منطق زیر است. 1552 01:17:02,490 --> 01:17:15,610 در حالی که شخصیت n ام در S می کند برابر بک اسلش 0 نمی، به جلو 1553 01:17:15,610 --> 01:17:17,930 و افزایش N. 1554 01:17:17,930 --> 01:17:23,506 و سپس چاپ درصد تابع () printf من N. 1555 01:17:23,506 --> 01:17:29,200 من ادعا می کنند که این برنامه در اینجا، بدون تماس از طول رشته، 1556 01:17:29,200 --> 01:17:31,150 ارقام از طول یک رشته. 1557 01:17:31,150 --> 01:17:34,600 >> و سحر و جادو را به طور کامل محصور شده در خط 8 1558 01:17:34,600 --> 01:17:39,830 در اینجا با آنچه به نظر می رسد مانند نحو جدید، این بک اسلش 0 در نقل قول تکی. 1559 01:17:39,830 --> 01:17:41,360 اما چرا؟ 1560 01:17:41,360 --> 01:17:44,100 خب، نظر چه بوده است رفتن به این همه وقت. 1561 01:17:44,100 --> 01:17:47,990 >> و به عنوان یک کنار قبل از من فراموش کرده ام، متوجه بیش از حد، که علاوه بر صفحات مرد 1562 01:17:47,990 --> 01:17:50,920 که با یک نمونه آمده سیستم لینوکس مانند CS50 IDE، 1563 01:17:50,920 --> 01:17:53,770 متوجه است که ما، در کارکنان دوره، همچنین 1564 01:17:53,770 --> 01:17:56,030 ساخته شده یک نسخه وب سایت از این ایده همان نام 1565 01:17:56,030 --> 01:17:59,940 reference.cs50.net، که دارای همه این صفحات همان مرد، 1566 01:17:59,940 --> 01:18:02,020 همه از آن همان اسناد و مدارک، و همچنین 1567 01:18:02,020 --> 01:18:05,730 یک جعبه کوچک در بالای که اجازه می دهد شما را به تبدیل تمام نسبتا 1568 01:18:05,730 --> 01:18:09,025 زبان محرمانه به کمتر و راحت حالت، که در آن ما، کارکنان آموزشی، 1569 01:18:09,025 --> 01:18:12,150 از طریق رفته و سعی در ساده سازی برخی از زبان به نگه داشتن چیزهای 1570 01:18:12,150 --> 01:18:14,830 با تمرکز بر ایده ها، و نه برخی از فنی. 1571 01:18:14,830 --> 01:18:20,070 بنابراین به خاطر داشته باشید، reference.cs50.net به عنوان منبع دیگری نیز هست. 1572 01:18:20,070 --> 01:18:23,800 >> اما چرا کار می کند طول رشته در راه من یک لحظه پیش پیشنهاد؟ 1573 01:18:23,800 --> 01:18:25,160 در اینجا نام Zamyla دوباره است. 1574 01:18:25,160 --> 01:18:27,690 و در اینجا نام Zamyla است بسته بندی در، به عنوان من در حفظ و انجام، 1575 01:18:27,690 --> 01:18:31,360 به رنگ یک تصویر از آن است، واقعا، فقط یک رشته از کاراکتر. 1576 01:18:31,360 --> 01:18:34,260 اما Zamyla وجود ندارد در انزوا در یک برنامه. 1577 01:18:34,260 --> 01:18:37,420 >> هنگامی که شما ارسال و اجرای یک برنامه، شما با استفاده از مک یا PC خود را 1578 01:18:37,420 --> 01:18:40,010 به عنوان حافظه یا RAM پس به صحبت. 1579 01:18:40,010 --> 01:18:42,620 و شما می توانید از فکر می کنم کامپیوتر خود را به عنوان داشتن 1580 01:18:42,620 --> 01:18:44,730 بسیاری از گیگابایت حافظه این روز است. 1581 01:18:44,730 --> 01:18:47,700 و یک فرفره معنی میلیاردها، بنابراین میلیاردها بایت است. 1582 01:18:47,700 --> 01:18:48,910 >> اما اجازه دهید در زمان عقب. 1583 01:18:48,910 --> 01:18:51,530 و فرض کنید که ما با استفاده از یک کامپیوتر واقعا قدیمی که 1584 01:18:51,530 --> 01:18:55,150 تنها 32 بایت از حافظه است. 1585 01:18:55,150 --> 01:18:59,310 من می توانم، بر روی صفحه نمایش کامپیوتر من، نگران نباشید، این بیرون کشیدن شرح زیر است. 1586 01:18:59,310 --> 01:19:05,240 >> من به سادگی می توان گفت که من کامپیوتر تا همه از این حافظه است. 1587 01:19:05,240 --> 01:19:08,830 و این است که مانند یک چوب از حافظه، اگر شما تصویر ما از زمان گذشته به یاد می آورند. 1588 01:19:08,830 --> 01:19:11,670 و اگر من فقط تقسیم این در زمان به اندازه کافی، 1589 01:19:11,670 --> 01:19:15,040 من ادعا می کنند که من 32 بایت حافظه بر روی صفحه نمایش. 1590 01:19:15,040 --> 01:19:18,239 >> در حال حاضر، در واقع، من تنها رسم تا کنون در این صفحه نمایش در اینجا. 1591 01:19:18,239 --> 01:19:20,280 بنابراین من قصد دارم به جلو بروید، و فقط بر اساس قرارداد، 1592 01:19:20,280 --> 01:19:24,050 رسم من حافظه کامپیوتر را به عنوان یک شبکه، نه تنها به عنوان یک خط راست. 1593 01:19:24,050 --> 01:19:28,190 به طور خاص، من ادعا که این شبکه، این 8 توسط 4 شبکه، 1594 01:19:28,190 --> 01:19:31,800 فقط نشان دهنده تمام 32 بایت از حافظه موجود در مک من، 1595 01:19:31,800 --> 01:19:33,030 و یا در دسترس در کامپیوتر من. 1596 01:19:33,030 --> 01:19:34,780 و آنها در حال بسته بندی به دو خط، فقط 1597 01:19:34,780 --> 01:19:38,030 زیرا متناسب تر بر روی صفحه نمایش. 1598 01:19:38,030 --> 01:19:40,800 اما این اولین بایت است. 1599 01:19:40,800 --> 01:19:41,990 این بایت دوم است. 1600 01:19:41,990 --> 01:19:43,300 این بایت سوم است. 1601 01:19:43,300 --> 01:19:45,310 >> و این بایت 32 است. 1602 01:19:45,310 --> 01:19:52,910 یا، اگر ما مانند یک کامپیوتر فکر می کنم دانشمند، این بایت 0، 1، 2، 3، 31 است. 1603 01:19:52,910 --> 01:19:55,950 بنابراین شما باید 0 تا 31، اگر شما شروع به شمارش 0. 1604 01:19:55,950 --> 01:19:59,830 >> بنابراین اگر ما استفاده از یک برنامه که تماس گرفتن رشته، 1605 01:19:59,830 --> 01:20:05,280 و ما یک رشته از انسان من Zamyla به نام بود، Z-A-M-Y-L-A، 1606 01:20:05,280 --> 01:20:09,430 چگونه در جهان کند پیگیری کامپیوتر که بایت، 1607 01:20:09,430 --> 01:20:12,230 که تکه از حافظه، متعلق به کدام رشته؟ 1608 01:20:12,230 --> 01:20:16,270 به عبارت دیگر، اگر ما برای ادامه تایپ نام دیگری به کامپیوتر، 1609 01:20:16,270 --> 01:20:19,890 مثل این اندی، خواستار دریافت رشته برای بار دوم، 1610 01:20:19,890 --> 01:20:23,030 A-N-D-من برای پایان دادن به در است حافظه کامپیوتر نیز هست. 1611 01:20:23,030 --> 01:20:23,850 اما چگونه؟ 1612 01:20:23,850 --> 01:20:29,700 >> خب، معلوم است که در زیر هود، چه C می کند زمانی که ذخیره سازی رشته 1613 01:20:29,700 --> 01:20:35,080 که انسان ها در، یا این که از منابع دیگر آمده، آن است که 1614 01:20:35,080 --> 01:20:39,190 ترسیم پایان آنها را با یک بک اسلش character-- ویژه 1615 01:20:39,190 --> 01:20:44,750 0، است که فقط یک حالت خاص گفت 80 بیت در یک ردیف. 1616 01:20:44,750 --> 01:20:47,950 >> بنابراین A-- این تعداد 97 فراخوان است. 1617 01:20:47,950 --> 01:20:51,770 بنابراین برخی از الگوی از 8 بیت نشان دهنده عدد اعشاری 97. 1618 01:20:51,770 --> 01:20:58,070 این بک اسلش 0 است به معنای واقعی کلمه تعداد 0، NUL a.k.a.، N-U-L، بر خلاف قبل، 1619 01:20:58,070 --> 01:20:59,630 N-U-L-L، که ما در مورد صحبت کردیم. 1620 01:20:59,630 --> 01:21:05,700 اما در حال حاضر، فقط می دانم که این بک اسلش 0 80 بیت در یک ردیف است. 1621 01:21:05,700 --> 01:21:09,810 >> و آن را فقط این خط در این شن و ماسه است که می گوید هر چیزی را به سمت چپ 1622 01:21:09,810 --> 01:21:12,610 متعلق به یک رشته یا یک نوع داده. 1623 01:21:12,610 --> 01:21:15,480 و هر چیزی را به سمت راست متعلق به چیز دیگری. 1624 01:21:15,480 --> 01:21:17,440 اندی نام، در عین حال، که فقط بصری 1625 01:21:17,440 --> 01:21:21,310 اتفاق می افتد به بسته بندی کردن در به خط دیگر، اما این فقط جزئیات زیبایی، 1626 01:21:21,310 --> 01:21:23,990 به طور مشابه NUL خاتمه یافته است. 1627 01:21:23,990 --> 01:21:29,290 >> این یک رشته از شخصیت های A-N-D-من است، به علاوه یک شخصیت مخفی پنجم، 1628 01:21:29,290 --> 01:21:33,560 همه 0 بیت، که فقط demarcates انتهای نام اندی نیز هست. 1629 01:21:33,560 --> 01:21:37,120 و اگر ما پاسخ دریافت رشته برای بار سوم در کامپیوتر برای دریافت یک رشته مانند 1630 01:21:37,120 --> 01:21:44,210 ماریا، M-A-R-من-A، به طور مشابه است ماریا نام NUL خاتمه با بک اسلش 0. 1631 01:21:44,210 --> 01:21:47,170 >> این اساسا متفاوت از چگونه یک کامپیوتر به طور معمول 1632 01:21:47,170 --> 01:21:51,850 ذخیره یک عدد صحیح، و یا یک شناور، و یا دیگر انواع داده ها هنوز هم، چون به یاد بیاورید، 1633 01:21:51,850 --> 01:21:57,420 یک عدد صحیح است که معمولا 32 بیت، یا 4 بایت، یا شاید حتی 64 بیت، 1634 01:21:57,420 --> 01:21:59,100 یا هشت بایت است. 1635 01:21:59,100 --> 01:22:02,620 اما شکلهای هندسی اولیه بسیاری را در یک کامپیوتر در یک زبان برنامه نویسی 1636 01:22:02,620 --> 01:22:05,550 یک عدد ثابت بایت در زیر hood-- 1637 01:22:05,550 --> 01:22:08,100 شاید 1، شاید 2، شاید 4، شاید 8. 1638 01:22:08,100 --> 01:22:13,250 >> اما رشته، طراحی، یک تعداد پویا از شخصیت های. 1639 01:22:13,250 --> 01:22:16,980 شما در پیشبرد دانم، تا زمانی که انواع بشر در Z-A-M-Y-L-A، 1640 01:22:16,980 --> 01:22:21,400 یا M-A-R-من-A یا A-N-D-I. شما نمی دانید که چند بار که کاربر به رفتن به ضربه 1641 01:22:21,400 --> 01:22:22,070 صفحه کلید. 1642 01:22:22,070 --> 01:22:26,490 بنابراین، شما نمی دانید که چگونه بسیاری از شخصیت های در پیش 1643 01:22:26,490 --> 01:22:27,540 شما نیاز به رفتن به. 1644 01:22:27,540 --> 01:22:31,840 >> و به این ترتیب C فقط نوع برگ مانند یک خرده نان مخفی در زیر هود 1645 01:22:31,840 --> 01:22:32,960 در پایان رشته. 1646 01:22:32,960 --> 01:22:39,280 پس از ذخیره سازی Z-A-M-Y-L-A در حافظه، همچنین قرار می دهد معادل 1647 01:22:39,280 --> 01:22:40,210 از یک دوره. 1648 01:22:40,210 --> 01:22:45,060 در پایان یک جمله، آن را 80 بیت، به طوری که 1649 01:22:45,060 --> 01:22:49,120 به یاد داشته باشید که در آن Zamyla آغاز می شود و به پایان می رسد. 1650 01:22:49,120 --> 01:22:51,490 >> پس چه این رابطه است، پس از آن، به این برنامه؟ 1651 01:22:51,490 --> 01:22:55,190 این برنامه در اینجا، استرلینگ، است که به سادگی یک مکانیسم 1652 01:22:55,190 --> 01:22:57,970 برای گرفتن یک رشته از کاربران، خط 6. 1653 01:22:57,970 --> 01:23:01,160 خط 7، من یک متغیر نام N و تنظیم آن را برابر با 0. 1654 01:23:01,160 --> 01:23:08,680 >> و سپس در خط 8، من به سادگی پرسید درخواست، در حالی که شخصیت n ام می کند 1655 01:23:08,680 --> 01:23:12,120 برابر نیست همه 0 bits-- به عبارت دیگر، نمی 1656 01:23:12,120 --> 01:23:14,500 برابر این ویژه شخصیت، بک اسلش 0، که 1657 01:23:14,500 --> 01:23:18,470 درست است که character-- پوچ خاص بود جلو بروید و فقط افزایش N. 1658 01:23:18,470 --> 01:23:21,460 >> و انجام آن، و نگه داشتن انجام آن، و انجام آن است. 1659 01:23:21,460 --> 01:23:23,430 و به این ترتیب حتی اگر در گذشته ما من استفاده می شود، 1660 01:23:23,430 --> 01:23:25,181 آن را کاملا خوب معنایی به استفاده از N، 1661 01:23:25,181 --> 01:23:27,430 اگر شما فقط تلاش برای تعداد دفعات مشاهده این به عمد، 1662 01:23:27,430 --> 01:23:28,720 و فقط می خواهم به آن تماس بگیرید N. 1663 01:23:28,720 --> 01:23:34,720 بنابراین این فقط نگه می دارد پرسیدن سوال، شخصیت n ام از همه 0s و است؟ 1664 01:23:34,720 --> 01:23:38,470 اگر نه، به نگاه بعدی نگاه کنید، نگاهی به آینده، به آینده نگاه کنید، 1665 01:23:38,470 --> 01:23:39,460 نگاه به آینده. 1666 01:23:39,460 --> 01:23:45,540 >> اما به محض بک اسلش 0 می بینید، این خط loop-- 9 از طریق 11-- متوقف می شود. 1667 01:23:45,540 --> 01:23:49,640 شما از حلقه در حالی که شکستن، ترک در داخل آن متغیر n 1668 01:23:49,640 --> 01:23:54,530 تعداد کل از همه از شخصیت ها در رشته شما را دیدم، 1669 01:23:54,530 --> 01:23:55,660 در نتیجه آن را چاپ کند. 1670 01:23:55,660 --> 01:23:56,760 بنابراین اجازه دهید این را امتحان کنید. 1671 01:23:56,760 --> 01:23:59,500 >> اجازه دهید من به جلو و بدون با استفاده از تابع استرلینگ، 1672 01:23:59,500 --> 01:24:04,240 اما فقط با استفاده از نسخه وطنی خود من در اینجا به نام استرلینگ، اجازه دهید من به جلو بروید 1673 01:24:04,240 --> 01:24:07,700 و اجرا استرلینگ، نوع در چیزی مانند Zamyla، که من در پیشبرد دانم 1674 01:24:07,700 --> 01:24:08,670 شش شخصیت است. 1675 01:24:08,670 --> 01:24:10,080 بیایید ببینیم که اگر آن کار می کند. 1676 01:24:10,080 --> 01:24:10,920 در واقع، آن را شش. 1677 01:24:10,920 --> 01:24:15,257 بیایید با راب امتحان کنید، سه شخصیت، سه شخصیت به عنوان خوب، و غیره. 1678 01:24:15,257 --> 01:24:17,340 به طوری که همه که رفتن در زیر هود. 1679 01:24:17,340 --> 01:24:19,548 و متوجه اتصالات، پس از آن، به هفته اول 1680 01:24:19,548 --> 01:24:22,370 طبقه، که در آن ما در مورد صحبت چیزی شبیه به انتزاع، 1681 01:24:22,370 --> 01:24:26,960 است که فقط این لایه بندی از ایده ها، و یا پیچیدگی، در بالای اصول اساسی. 1682 01:24:26,960 --> 01:24:30,710 در اینجا، ما در حال مرتب کردن بر اساس به دنبال در زیر هود استرلینگ، 1683 01:24:30,710 --> 01:24:33,510 پس به صحبت، به شکل، چگونه اجرا شود؟ 1684 01:24:33,510 --> 01:24:35,232 >> و ما می توانیم خودمان دوباره پیاده سازی آن. 1685 01:24:35,232 --> 01:24:37,440 اما ما هرگز دوباره رفتن مجبور به اجرای مجدد استرلینگ. 1686 01:24:37,440 --> 01:24:39,780 ما فقط رفتن به استفاده استرلینگ در سفارش 1687 01:24:39,780 --> 01:24:42,100 در واقع برخی از طول رشته را دریافت کنید. 1688 01:24:42,100 --> 01:24:44,200 >> اما هیچ سحر و جادو وجود دارد در زیر هود. 1689 01:24:44,200 --> 01:24:46,716 اگر شما می دانید که در زیر هود، یک رشته 1690 01:24:46,716 --> 01:24:48,090 فقط یک رشته از کاراکتر است. 1691 01:24:48,090 --> 01:24:51,090 و دنباله ای از کاراکتر همه را می توان به صورت عددی خطاب 1692 01:24:51,090 --> 01:24:53,330 با براکت 0، براکت 1، براکت 2، و شما 1693 01:24:53,330 --> 01:24:57,420 می دانیم که در پایان یک رشته است شخصیت خاص، شما می توانید شکل 1694 01:24:57,420 --> 01:25:01,710 چگونه به انجام هر چیزی در یک برنامه، چرا که همه آن جوش پایین به 1695 01:25:01,710 --> 01:25:03,400 در حال خواندن و نوشتن حافظه است. 1696 01:25:03,400 --> 01:25:06,130 این است که، در حال تغییر و به دنبال در حافظه، و یا حرکت همه چیز 1697 01:25:06,130 --> 01:25:10,940 در حافظه، همه چیز چاپ بر روی صفحه نمایش، و غیره. 1698 01:25:10,940 --> 01:25:14,800 >> بنابراین اجازه دهید در حال حاضر این تازه کشف شده استفاده درک درستی از آنچه در واقع رشته 1699 01:25:14,800 --> 01:25:17,910 در زیر هود، و پوست پشت یک لایه دیگر 1700 01:25:17,910 --> 01:25:20,080 که تا حالا ما شده است نادیده گرفتن در دسترس نباشد. 1701 01:25:20,080 --> 01:25:22,650 به طور خاص، هر زمان ما یک برنامه اجرا کرده ام، 1702 01:25:22,650 --> 01:25:25,930 ما این خط از کد را داشته ام در نزدیکی بالای اعلام اصلی. 1703 01:25:25,930 --> 01:25:27,810 و ما اعتبار اصلی اعضای هیات مشخص. 1704 01:25:27,810 --> 01:25:31,240 >> و از درجه اعتبار ساقط است که در داخل پرانتز شده است گفت: در تمام این مدت که اصلی 1705 01:25:31,240 --> 01:25:33,440 به خودی خود هیچ استدلال را ندارد. 1706 01:25:33,440 --> 01:25:36,210 هر ورودی که اصلی است رفتن به از کاربر دریافت 1707 01:25:36,210 --> 01:25:39,020 باید از برخی دیگر آمده مکانیسم همچون GET هوشمند، 1708 01:25:39,020 --> 01:25:42,040 و یا شناور، و یا رشته، و یا برخی از عملکرد های دیگر. 1709 01:25:42,040 --> 01:25:44,710 اما معلوم است که در هنگام نوشتن یک برنامه، 1710 01:25:44,710 --> 01:25:47,690 شما در واقع می توانید مشخص کنید که این برنامه باید 1711 01:25:47,690 --> 01:25:51,730 را ورودی از انسان در خط فرمان است. 1712 01:25:51,730 --> 01:25:56,310 >> به عبارت دیگر، حتی اگر ما تا کنون در حال اجرا فقط ./hello سلام 1713 01:25:56,310 --> 01:26:00,312 یا برنامه های مشابه، همه از برنامه های دیگر که ما با استفاده از اس ام اس، 1714 01:26:00,312 --> 01:26:02,770 که ما خودمان را نمی نویسند، شده اند مصرف، به نظر می رسد، 1715 01:26:02,770 --> 01:26:05,210 arguments-- خط فرمان همه چیز دوست دارید. 1716 01:26:05,210 --> 01:26:07,450 شما چیزی می گویند مانند آرایش، و سپس یک کلمه دوم. 1717 01:26:07,450 --> 01:26:10,950 یا صدای جرنگ جرنگ، به شما می گویند صدای جرنگ جرنگ، و پس از آن یک کلمه دوم، نام یک فایل. 1718 01:26:10,950 --> 01:26:14,410 >> و یا حتی RM یا CP، همانطور که شما ممکن را دیده اند و یا مورد استفاده در حال حاضر 1719 01:26:14,410 --> 01:26:15,880 به حذف و یا کپی فایل. 1720 01:26:15,880 --> 01:26:18,920 همه کسانی که به اصطلاح arguments-- خط فرمان 1721 01:26:18,920 --> 01:26:21,130 کلمات اضافی در اعلان ترمینال. 1722 01:26:21,130 --> 01:26:23,260 اما تا به حال، ما خودمان نداشته اند 1723 01:26:23,260 --> 01:26:27,080 این لوکس گرفتن ورودی از کاربر در زمانی که او در واقع اجرا می شود 1724 01:26:27,080 --> 01:26:29,120 خود برنامه در خط فرمان. 1725 01:26:29,120 --> 01:26:33,710 >> اما ما می توانیم این کار را با دوباره اعلام اصلی حرکت رو به جلو، نه به عنوان داشتن 1726 01:26:33,710 --> 01:26:36,750 از درجه اعتبار ساقط شده در داخل پرانتز، اما این دو استدلال 1727 01:26:36,750 --> 01:26:40,600 instead-- اولین عدد صحیح، و چیزی دوم 1728 01:26:40,600 --> 01:26:44,170 جدید، چیزی است که ما در حال رفتن به پاسخ یک آرایه، چیزی مشابه در روح 1729 01:26:44,170 --> 01:26:49,220 به آنچه که ما در ابتدا به عنوان یک لیست را دیدم، اما آرایه ای از رشته، به عنوان ما به زودی خواهید دید. 1730 01:26:49,220 --> 01:26:51,790 اما اجازه دهید این را ببینید توسط به عنوان مثال، قبل از ما 1731 01:26:51,790 --> 01:26:53,690 تشخیص دقیقا چه معناست. 1732 01:26:53,690 --> 01:26:56,520 >> بنابراین اگر من به CS50 IDE رفتن در اینجا، من جلوتر رفته ام 1733 01:26:56,520 --> 01:27:01,840 و اعلام کرد در یک فایل به نام argv0.c این الگو. 1734 01:27:01,840 --> 01:27:04,120 و متوجه تنها چیزی که که متفاوت تا کنون 1735 01:27:04,120 --> 01:27:08,570 این است که من از درجه اعتبار ساقط تغییر کرده به int رشته تعداد آنها و argv براکت باز، نزدیک 1736 01:27:08,570 --> 01:27:09,070 براکت. 1737 01:27:09,070 --> 01:27:11,730 و متوجه حال حاضر، وجود دارد هیچ چیز در داخل از آن براکت. 1738 01:27:11,730 --> 01:27:12,620 >> هیچ شماره وجود دارد. 1739 01:27:12,620 --> 01:27:15,070 و هیچ من وجود دارد، یا N، و یا هر حرف دیگر. 1740 01:27:15,070 --> 01:27:17,010 من فقط با استفاده از براکت در حال حاضر، 1741 01:27:17,010 --> 01:27:19,510 به دلایلی که ما می آیند برگشت به در یک لحظه. 1742 01:27:19,510 --> 01:27:21,330 >> و در حال حاضر آنچه که من قصد دارم برای انجام این کار است. 1743 01:27:21,330 --> 01:27:26,680 اگر تعداد آنها برابر برابر 2-- و به یاد آورید که برابر است با برابر 1744 01:27:26,680 --> 01:27:30,040 اپراتور برابری مقایسه است سمت چپ و راست برای برابری. 1745 01:27:30,040 --> 01:27:31,790 این انتساب نیست اپراتور است که 1746 01:27:31,790 --> 01:27:36,510 نشانه تک برابر، که به معنی کپی از سمت راست به برخی از ارزش است. 1747 01:27:36,510 --> 01:27:42,840 >> اگر تعداد آنها برابر برابر 2، من می خواهم مثلا، تابع () printf، سلام، درصد، خط جدید، 1748 01:27:42,840 --> 01:27:47,340 و سپس پلاگین in-- و در اینجا جدید trick-- براکت و argv 1، به دلایل 1749 01:27:47,340 --> 01:27:48,840 که ما به در یک لحظه می آیند. 1750 01:27:48,840 --> 01:27:52,110 دیگری اگر تعداد آنها را نمی کند برابر 2، شما می دانید چه؟ 1751 01:27:52,110 --> 01:27:57,400 بیایید فقط به جلو و، به طور معمول، چاپ سلام جهان خارج با تعویض. 1752 01:27:57,400 --> 01:28:02,710 >> بنابراین به نظر می رسد که اگر تعداد آنها، که مخفف تعداد آرگومان، برابر با 2، 1753 01:28:02,710 --> 01:28:04,740 من قصد دارم برای چاپ کردن سلام چیزی یا دیگر. 1754 01:28:04,740 --> 01:28:07,560 در غیر این صورت، به طور پیش فرض، من رفتن به چاپ سلام جهان. 1755 01:28:07,560 --> 01:28:08,770 خوب این به چه معنا است؟ 1756 01:28:08,770 --> 01:28:15,550 >> خوب، اجازه دهید من به جلو بروید و صرفه جویی در این فایل، و پس از آن انجام را argv0، 1757 01:28:15,550 --> 01:28:18,940 و پس از آن ./argv0، وارد کنید. 1758 01:28:18,940 --> 01:28:20,300 و آن را می گوید سلام جهان. 1759 01:28:20,300 --> 01:28:21,260 در حال حاضر، این است که چرا؟ 1760 01:28:21,260 --> 01:28:24,730 >> خب، معلوم است در هر زمان شما اجرای یک برنامه در خط فرمان، 1761 01:28:24,730 --> 01:28:29,570 شما در حال پر کردن در آنچه ما می خواهیم به طور کلی یک بردار استدلال پاسخ. 1762 01:28:29,570 --> 01:28:33,100 به عبارت دیگر، به طور خودکار کامپیوتر، سیستم عامل، 1763 01:28:33,100 --> 01:28:38,340 است که به دست به برنامه های خود را خود یک لیست از تمام کلمات 1764 01:28:38,340 --> 01:28:40,850 که انسان تایپ در اعلان، در صورتی که شما 1765 01:28:40,850 --> 01:28:43,790 برنامه نویس می خواهید به انجام چیزی را با آن اطلاعات است. 1766 01:28:43,790 --> 01:28:48,540 و در این مورد، تنها کلمه من در اعلان تایپ کرده اید ./argv0 است. 1767 01:28:48,540 --> 01:28:55,420 >> و به این ترتیب تعداد آرگومان است که به برنامه من گذشت فقط یک است. 1768 01:28:55,420 --> 01:28:58,880 به عبارت دیگر، استدلال تعداد دفعات مشاهده، در غیر این صورت به عنوان تعداد آنها شناخته شده 1769 01:28:58,880 --> 01:29:00,970 در اینجا به عنوان یک عدد صحیح، تنها یکی. 1770 01:29:00,970 --> 01:29:03,000 یکی، البته، مساوی دو است. 1771 01:29:03,000 --> 01:29:05,980 و به این ترتیب این چیزی است که چاپ، سلام جهان. 1772 01:29:05,980 --> 01:29:08,170 >> اما به من اجازه این جایی. 1773 01:29:08,170 --> 01:29:09,930 به من می گویند، argv0. 1774 01:29:09,930 --> 01:29:12,740 و پس از آن چگونه در مورد ماریا؟ 1775 01:29:12,740 --> 01:29:14,990 و سپس Enter را بزنید. 1776 01:29:14,990 --> 01:29:18,020 >> و متوجه چه جادویی در اینجا اتفاق می افتد. 1777 01:29:18,020 --> 01:29:22,640 در حال حاضر، به جای سلام جهان، من رفتار این برنامه تغییر 1778 01:29:22,640 --> 01:29:26,310 با در نظر گرفتن ورودی از GET رشته و یا برخی از عملکرد های دیگر، 1779 01:29:26,310 --> 01:29:30,570 اما از، ظاهرا، فرمان من خود، آنچه که من در اصل در تایپ. 1780 01:29:30,570 --> 01:29:35,720 و من می توانید این بازی را دوباره با بازی تغییر آن را به استلیوس، به عنوان مثال. 1781 01:29:35,720 --> 01:29:38,400 >> و اکنون من نام دیگری هنوز هم مشاهده کنید. 1782 01:29:38,400 --> 01:29:40,540 و در اینجا، من ممکن است اندی می گویند. 1783 01:29:40,540 --> 01:29:42,137 و من ممکن است Zamyla است. 1784 01:29:42,137 --> 01:29:45,220 و ما می توانیم این بازی را بازی در تمام طول روز، فقط متصل کردن ارزش های مختلف، 1785 01:29:45,220 --> 01:29:49,550 تا زمانی که من ارائه دقیقا دو کلمه در اعلان، 1786 01:29:49,550 --> 01:29:52,260 به طوری که تعداد آنها، تعداد استدلال من 2 است. 1787 01:29:52,260 --> 01:29:57,240 >> هنوز می بینم که نام متصل به تابع () printf، در این شرایط که اینجا هستید؟ 1788 01:29:57,240 --> 01:30:00,550 بنابراین ما به نظر می رسد در حال حاضر به قابلیت رسا 1789 01:30:00,550 --> 01:30:04,410 گرفتن ورودی از مکانیسم دیگری، از به اصطلاح خط فرمان، 1790 01:30:04,410 --> 01:30:07,000 به جای نیاز به صبر تا زمانی که کاربر برنامه اجرا می شود، 1791 01:30:07,000 --> 01:30:10,220 و پس از آن او و یا او را بی درنگ استفاده از چیزی شبیه رشته GET. 1792 01:30:10,220 --> 01:30:11,230 >> پس چه است این؟ 1793 01:30:11,230 --> 01:30:15,010 تعداد آنها، دوباره، فقط یک عدد صحیح است، تعداد words-- arguments-- 1794 01:30:15,010 --> 01:30:18,540 که کاربر ارائه شده در سریع، در پنجره ترمینال، 1795 01:30:18,540 --> 01:30:20,110 از جمله نام این برنامه است. 1796 01:30:20,110 --> 01:30:23,340 بنابراین ./argv0 ما است، به طور موثر، نام برنامه، 1797 01:30:23,340 --> 01:30:24,520 و یا چگونه من برنامه را اجرا کنید. 1798 01:30:24,520 --> 01:30:25,810 >> که شمارش به عنوان یک کلمه. 1799 01:30:25,810 --> 01:30:27,080 بنابراین تعداد آنها می شود 1. 1800 01:30:27,080 --> 01:30:29,750 اما وقتی که من ارسال استلیوس، یا اندی یا Zamyla، یا ماریا، 1801 01:30:29,750 --> 01:30:31,660 این بدان معناست که تعداد آرگومان این دو است. 1802 01:30:31,660 --> 01:30:33,910 و بنابراین در حال حاضر دو کلمه گذشت در آن وجود دارد. 1803 01:30:33,910 --> 01:30:36,070 >> و توجه کنید، ما می توانیم این منطق ادامه خواهد داد. 1804 01:30:36,070 --> 01:30:39,050 اگر من در واقع می گویند چیزی شبیه به Zamyla چان، 1805 01:30:39,050 --> 01:30:42,200 نام کامل، در نتیجه عبور سه استدلال در مجموع، 1806 01:30:42,200 --> 01:30:47,410 در حال حاضر آن را می گوید به طور پیش فرض دوباره، چرا که، البته، 3 مساوی 2 است. 1807 01:30:47,410 --> 01:30:54,080 >> و به این ترتیب در این راه، من باید دسترسی از طریق ی argv این بحث جدید 1808 01:30:54,080 --> 01:30:56,080 که ما می توانیم از لحاظ فنی هر چیزی که ما می خواهیم پاسخ. 1809 01:30:56,080 --> 01:30:58,940 اما بر اساس قرارداد، آن را ی argv و تعداد آنها، به ترتیب. 1810 01:30:58,940 --> 01:31:04,470 ی argv، بردار استدلال، نوع است یک مترادف برای برنامه نویسی 1811 01:31:04,470 --> 01:31:07,140 از ویژگی های در C آرایه ای نامیده می شود. 1812 01:31:07,140 --> 01:31:14,410 >> یک آرایه یک لیست از مقادیر مشابه است تماس، به عقب، به عقب، به پشت. 1813 01:31:14,410 --> 01:31:17,810 به عبارت دیگر، اگر کسی است که حق در اینجا در رم، یک بعدی درست در کنار آن است، 1814 01:31:17,810 --> 01:31:18,800 و درست در کنار آن. 1815 01:31:18,800 --> 01:31:20,101 آنها در همه جا نیست. 1816 01:31:20,101 --> 01:31:23,100 و سناریوی دوم، که در آن همه چیز همه جا در حافظه، 1817 01:31:23,100 --> 01:31:25,082 در واقع می تواند یکی از ویژگی های قدرتمند باشد. 1818 01:31:25,082 --> 01:31:28,040 اما ما به آن می آیند زمانی که ما صحبت در مورد ساختمان داده خیال باف. 1819 01:31:28,040 --> 01:31:32,260 در حال حاضر، یک آرایه است که فقط یک تکه از حافظه به هم پیوسته، 1820 01:31:32,260 --> 01:31:36,520 هر یک از که عناصر تماس، به عقب، به عقب، به عقب، 1821 01:31:36,520 --> 01:31:38,050 و به طور کلی همان نوع. 1822 01:31:38,050 --> 01:31:42,630 >> بنابراین اگر شما در مورد فکر می کنم، از یک لحظه پیش، چه یک رشته است؟ 1823 01:31:42,630 --> 01:31:50,460 خوب، یک رشته، مانند Zamyla، Z-A-M-Y-L-A، است، از نظر فنی، 1824 01:31:50,460 --> 01:31:51,400 فقط یک آرایه. 1825 01:31:51,400 --> 01:31:53,700 این آرایه ای از کاراکتر است. 1826 01:31:53,700 --> 01:31:59,250 >> و به این ترتیب اگر ما واقعا این قرعه کشی، به عنوان من پیش از آن، به عنوان یک تکه از حافظه، 1827 01:31:59,250 --> 01:32:04,510 معلوم است که هر یک از این شخصیت طول می کشد تا یک بایت. 1828 01:32:04,510 --> 01:32:07,630 و پس از آن که ویژه ای وجود دارد شخصیت نگهبان، بک اسلش 0، 1829 01:32:07,630 --> 01:32:12,360 یا هشت 0 بیت، که demarcates پایان آن رشته است. 1830 01:32:12,360 --> 01:32:15,090 بنابراین یک رشته، آن را تبدیل خارج، نقل قول رشته را تمام کردن، 1831 01:32:15,090 --> 01:32:20,580 فقط یک آرایه از chara-- است کاراکتر بودن نوع داده های واقعی. 1832 01:32:20,580 --> 01:32:24,560 >> و در حال حاضر و argv، meanwhile-- اجازه بازگشت به برنامه است. 1833 01:32:24,560 --> 01:32:29,582 ی argv، حتی اگر ما کلمه را ببینید رشته در اینجا این است، یک رشته خود را ندارد. 1834 01:32:29,582 --> 01:32:33,640 ی argv، بردار استدلال، آرایه ای از رشته است. 1835 01:32:33,640 --> 01:32:37,620 >> بنابراین همانطور که شما می توانید مجموعه ای از شخصیت ها، شما می توانید سطح بالاتر، 1836 01:32:37,620 --> 01:32:46,279 آرایه ای از strings-- بنابراین، برای مثال، وقتی که من یک لحظه پیش تایپ ./argv0 1837 01:32:46,279 --> 01:33:00,150 argv0، فضای Z-A-M-Y-L-A، I ادعا کرد که ی argv دو رشته در ./argv0 it-- حال، 1838 01:33:00,150 --> 01:33:03,185 و Z-A-M-Y-L-A. که در به عبارت دیگر، تعداد آنها 2 بود. 1839 01:33:03,185 --> 01:33:03,980 چرا اینطور است؟ 1840 01:33:03,980 --> 01:33:08,370 >> خوب، به طور موثر، چه خبر است در این است که هر یک از این رشته ها 1841 01:33:08,370 --> 01:33:13,990 است، البته، آرایه ای از کاراکتر مانند قبل، هر یک از شخصیت های که 1842 01:33:13,990 --> 01:33:15,670 طول می کشد تا یک بایت. 1843 01:33:15,670 --> 01:33:19,720 و 0 واقعی اشتباه نیست در نام برنامه با 0، 1844 01:33:19,720 --> 01:33:22,040 که به معنی تمام 80 بیت است. 1845 01:33:22,040 --> 01:33:27,140 و Zamyla، در عین حال، هنوز هم همچنین آرایه ای از کاراکتر. 1846 01:33:27,140 --> 01:33:31,450 >> بنابراین در پایان روز، آن را واقعا به نظر می رسد مثل این زیر هود. 1847 01:33:31,450 --> 01:33:38,800 اما و argv، طبیعت چگونه اصلی آثار، اجازه می دهد تا من به بسته بندی کردن همه از این 1848 01:33:38,800 --> 01:33:44,810 تا به، اگر شما خواهد شد، یک آرایه بزرگتر که اگر ما کمی بیش از ساده 1849 01:33:44,810 --> 01:33:48,180 چه تصویر به نظر می رسد و نمی کاملا آن را رسم به مقیاس وجود دارد، 1850 01:33:48,180 --> 01:33:56,720 این آرایه است تنها با اندازه 2، اولین عنصر که شامل یک رشته، 1851 01:33:56,720 --> 01:33:59,230 دومین عنصر از که شامل یک رشته است. 1852 01:33:59,230 --> 01:34:01,687 و به نوبه خود، اگر شما نوع زوم بر روی هر 1853 01:34:01,687 --> 01:34:03,770 از آن رشته ها، آنچه که شما مشاهده در زیر هود 1854 01:34:03,770 --> 01:34:07,190 این است که هر رشته تنها آرایه ای از کاراکتر. 1855 01:34:07,190 --> 01:34:11,680 >> در حال حاضر، فقط به عنوان با رشته ها، ما قادر به دسترسی بودند 1856 01:34:11,680 --> 01:34:15,260 به شخصیت i ام در یک رشته با استفاده از این علامت کروشه مربع. 1857 01:34:15,260 --> 01:34:17,320 به طور مشابه، با آرایه به طور کلی، می تواند ما 1858 01:34:17,320 --> 01:34:22,700 استفاده از نماد براکت برای به دست آوردن در هر شماره از رشته ها در یک آرایه؟ 1859 01:34:22,700 --> 01:34:25,100 به عنوان مثال، به من اجازه جلو بروید و این کار را. 1860 01:34:25,100 --> 01:34:32,420 >> اجازه بدهید به جلو و ایجاد argv1.c، که کمی متفاوت این زمان است. 1861 01:34:32,420 --> 01:34:35,635 به جای چک کردن برای argc2، من قصد دارم به جای انجام این کار. 1862 01:34:35,635 --> 01:34:41,270 اینترنت من 0، من کمتر است از تعداد آنها، من به علاوه به علاوه، 1863 01:34:41,270 --> 01:34:47,920 و سپس چاپ در داخل این، درصد بازدید کنندگان، خط جدید، و سپس 1864 01:34:47,920 --> 01:34:50,740 ی argv براکت من. 1865 01:34:50,740 --> 01:34:55,220 >> بنابراین به عبارت دیگر، من با نه شخصیت فردی در حال حاضر. 1866 01:34:55,220 --> 01:35:00,190 ی argv، به عنوان توسط این مربع خالی ضمنی طبی در سمت راست نام ی argv، 1867 01:35:00,190 --> 01:35:03,320 معنی ی argv آرایه ای از رشته است. 1868 01:35:03,320 --> 01:35:04,870 و تعداد آنها فقط از نوع int است. 1869 01:35:04,870 --> 01:35:08,800 >> این خط در اینجا، 6، گفت مجموعه من برابر با 0. 1870 01:35:08,800 --> 01:35:11,980 تعداد تمام راه را تا به، اما نه از جمله، تعداد آنها. 1871 01:35:11,980 --> 01:35:14,010 و پس از آن در هر تکرار، نسخه قابل چاپ کردن یک رشته است. 1872 01:35:14,010 --> 01:35:14,800 چه رشته؟ 1873 01:35:14,800 --> 01:35:17,270 >> رشته i ام در argv. 1874 01:35:17,270 --> 01:35:19,530 بنابراین در حالی که قبل از من بود با استفاده از براکت 1875 01:35:19,530 --> 01:35:22,180 نماد به در i ام کاراکتر در یک رشته، در حال حاضر 1876 01:35:22,180 --> 01:35:27,240 من با استفاده از نماد براکت در رشته i ام در یک آرایه را دریافت کنید. 1877 01:35:27,240 --> 01:35:30,310 پس از آن نوع از یک لایه فوق، مفهومی است. 1878 01:35:30,310 --> 01:35:35,390 >> و بنابراین، آنچه را شسته و رفته در مورد این برنامه در حال حاضر، اگر من کامپایل argv1، 1879 01:35:35,390 --> 01:35:42,067 و پس از آن انجام ./argv1 و سپس نوع در چیزی شبیه به مواد غذایی باز نوار، 1880 01:35:42,067 --> 01:35:45,400 که سه کلمه به طور پیش فرض که می دانشمند کامپیوتر برای هر زمان می رسد 1881 01:35:45,400 --> 01:35:51,010 او نیاز دارد برخی از کلمات حفره یا سوراخ، و ضربه را وارد کنید، هر یک از این کلمات، 1882 01:35:51,010 --> 01:35:54,980 از جمله نام برنامه، که است در argv در محل اول، 1883 01:35:54,980 --> 01:35:58,320 پایان می رسد تا در یک زمان چاپ شده است. 1884 01:35:58,320 --> 01:36:05,290 و اگر من این را تغییر دهید، و من می گویم چیزی شبیه به argv1 Zamyla چان، 1885 01:36:05,290 --> 01:36:08,800 ما هر سه از آن کلمات است که argv0، 1886 01:36:08,800 --> 01:36:14,400 argv1، argv2، چرا که در این مورد تعداد آنها، تعداد، 3 است. 1887 01:36:14,400 --> 01:36:20,020 >> اما آنچه شسته و رفته است اگر شما را در درک که ی argv فقط یک آرایه از رشته ها، 1888 01:36:20,020 --> 01:36:24,910 و شما را در درک که یک رشته آرایه ای از کاراکتر ها است، 1889 01:36:24,910 --> 01:36:29,470 ما در واقع می توانید نوع از این استفاده علامت کروشه مربع چندین بار 1890 01:36:29,470 --> 01:36:33,320 برای انتخاب یک رشته، و پس از آن را انتخاب کنید یک شخصیت در داخل رشته، 1891 01:36:33,320 --> 01:36:35,730 غواصی در عمیق تر شرح زیر است. 1892 01:36:35,730 --> 01:36:40,100 در این مثال، به من اجازه رفتن جلو و این argv2.c پاسخ. 1893 01:36:40,100 --> 01:36:43,920 1894 01:36:43,920 --> 01:36:50,180 و در این مثال، اجازه دهید من به جلو بروید و انجام شرح زیر است برای اعضای هیات من 0، 1895 01:36:50,180 --> 01:36:53,286 من کمتر از تعداد آنها است، من به همراه به علاوه، درست مثل قبل. 1896 01:36:53,286 --> 01:36:55,910 بنابراین در دیگر words-- و در حال حاضر این است به اندازه کافی پیچیده است. 1897 01:36:55,910 --> 01:36:59,940 سپس من قصد دارم برای گفتن تکرار بیش از رشته در argv، 1898 01:36:59,940 --> 01:37:01,294 به عنوان یک نظر به خودم. 1899 01:37:01,294 --> 01:37:03,960 و سپس من رفتن به یک تو در تو حلقه for، که شما احتمالا 1900 01:37:03,960 --> 01:37:06,290 انجام داده اند، و یا در نظر گرفته انجام این کار، در ابتدا، که در آن 1901 01:37:06,290 --> 01:37:08,600 من قصد دارم برای گفتن int-- من رفتن به استفاده از من دوباره، 1902 01:37:08,600 --> 01:37:12,590 چون من نمی خواهم به سایه، یا مرتب کردن بر اساس بازنویسی من موجود است. 1903 01:37:12,590 --> 01:37:15,780 >> من قصد دارم به جای مثلا j، چون که برو من به متغیر پس از من، 1904 01:37:15,780 --> 01:37:18,590 وقتی که من فقط در تلاش برای شمارش اعداد ساده است. 1905 01:37:18,590 --> 01:37:28,850 برای J می شود 0-- و همچنین، N است، رفتن به به دست آوردن طول استرن و argv براکت من، 1906 01:37:28,850 --> 01:37:36,030 تا زمانی که J کمتر از متر است، J به علاوه به علاوه، انجام موارد زیر. 1907 01:37:36,030 --> 01:37:37,500 و در اینجا بخش جالب است. 1908 01:37:37,500 --> 01:37:46,330 >> چاپ کردن یک شخصیت و یک خط جدید، متصل کردن در argv براکت من، براکت J. 1909 01:37:46,330 --> 01:37:47,940 خوب، پس اجازه دهید من برخی از نظرات اینجا اضافه کنید. 1910 01:37:47,940 --> 01:37:54,820 تکرار بیش از شخصیت در رشته فعلی، 1911 01:37:54,820 --> 01:38:02,290 چاپ j ام کاراکتری در رشته i ام. 1912 01:38:02,290 --> 01:38:04,630 بنابراین در حال حاضر، اجازه دهید در نظر چه این نظر باشد. 1913 01:38:04,630 --> 01:38:06,750 >> تکرار بیش از رشته در argv-- چگونه بسیاری از 1914 01:38:06,750 --> 01:38:09,300 رشته در argv هستند، یک آرایه است که؟ 1915 01:38:09,300 --> 01:38:13,420 تعداد آنها بسیاری از، بنابراین من تکرار از من برابر 0 تا تعداد آنها. 1916 01:38:13,420 --> 01:38:20,020 در همین حال، چگونه بسیاری از شخصیت در رشته i ام در argv است؟ 1917 01:38:20,020 --> 01:38:22,880 >> خوب، که برای دریافت پاسخ، من فقط پاسخ طول رشته 1918 01:38:22,880 --> 01:38:26,810 در مراقبت من رشته فعلی در مورد، که ی argv براکت من. 1919 01:38:26,810 --> 01:38:30,090 و من قصد دارم به طور موقت ذخیره که ارزش در N، فقط برای اهداف ذخیره، 1920 01:38:30,090 --> 01:38:31,590 به یاد داشته باشید آن را بسیار موثر است. 1921 01:38:31,590 --> 01:38:36,330 و سپس من قصد دارم مقداردهی اولیه J به 0، رفتن تا زمانی که J کمتر از n است، 1922 01:38:36,330 --> 01:38:38,430 و در هر تکرار افزایش J. 1923 01:38:38,430 --> 01:38:41,030 >> و سپس در اینجا، در هر نظر من در خط 12، 1924 01:38:41,030 --> 01:38:43,390 نسخه قابل چاپ کردن یک شخصیت، پس از یک خط جدید، 1925 01:38:43,390 --> 01:38:48,140 براکت به طور خاص و argv من به من می دهد رشته i ام 1926 01:38:48,140 --> 01:38:51,690 در argv-- تا کلمه اول، کلمه دوم، کلمه سوم، هر آنچه. 1927 01:38:51,690 --> 01:38:57,370 و سپس غواصی j در عمیق تر، و می شود من شخصیت j ام از آن کلمه. 1928 01:38:57,370 --> 01:39:02,200 و به این ترتیب، در اثر، شما می توانید درمان ی argv به عنوان یک چند بعدی، 1929 01:39:02,200 --> 01:39:06,050 به عنوان یک دو بعدی، آرایه، به موجب آن هر نوع کلمه به نظر می رسد 1930 01:39:06,050 --> 01:39:08,580 شبیه به این در و ذهن شما را چشم، و هر شخصیت 1931 01:39:08,580 --> 01:39:10,930 از نوع در تشکیل یک ستون، در صورتی که کمک می کند. 1932 01:39:10,930 --> 01:39:13,260 >> در واقع، زمانی که ما کسی را دست انداختن این از هم جدا در هفته های آینده، 1933 01:39:13,260 --> 01:39:15,580 آن را به کمی پیچیده تر از آن. 1934 01:39:15,580 --> 01:39:17,800 اما شما واقعا می تواند که فکر می کنم، در حال حاضر، 1935 01:39:17,800 --> 01:39:22,110 فقط به عنوان این دو بعدی آرایه، به موجب آن یک سطح از آن 1936 01:39:22,110 --> 01:39:23,260 همه رشته ها است. 1937 01:39:23,260 --> 01:39:26,760 و پس از آن اگر شما در عمیق تر، شما شیرجه رفتن می توانید در شخصیت فردی 1938 01:39:26,760 --> 01:39:29,600 در آنجا با استفاده از این نماد در اینجا. 1939 01:39:29,600 --> 01:39:31,620 >> پس چه اثر خالص است؟ 1940 01:39:31,620 --> 01:39:34,970 اجازه دهید من به جلو و را رفو argv2-- آن است. 1941 01:39:34,970 --> 01:39:36,210 من اشتباه است. 1942 01:39:36,210 --> 01:39:40,160 به طور ضمنی اعلام استرلینگ تابع کتابخانه. 1943 01:39:40,160 --> 01:39:42,190 بنابراین تمام این مدت، آن را شاید مناسب 1944 01:39:42,190 --> 01:39:45,130 که ما در حال مرتب کردن بر اساس اتمام دقیقا همان جایی که ما آغاز شده است. 1945 01:39:45,130 --> 01:39:48,160 >> من پیچ، به طور ضمنی اعلام استرلینگ تابع کتابخانه. 1946 01:39:48,160 --> 01:39:48,987 OK، یک دقیقه صبر کنید. 1947 01:39:48,987 --> 01:39:51,070 به یاد دارم که، به خصوص از آن را در اینجا. 1948 01:39:51,070 --> 01:39:54,490 من نیاز به string.h در این نسخه از این برنامه است. 1949 01:39:54,490 --> 01:40:00,050 >> اجازه دهید من به جلو و شامل string.h، جز اینکه، به جلو 1950 01:40:00,050 --> 01:40:04,460 و کامپایل مجدد argv2. 1951 01:40:04,460 --> 01:40:08,390 و در حال حاضر، در اینجا ما به، را argv2، وارد کنید. 1952 01:40:08,390 --> 01:40:10,590 و هر چند آن را کمی مرموز در نگاه اول، 1953 01:40:10,590 --> 01:40:15,690 توجه کنید که، در واقع، آنچه چاپ شده است نقطه argv2 است. 1954 01:40:15,690 --> 01:40:19,970 >> اما اگر من برخی از کلمات پس از تایپ سریع، مانند argv2 Zamyla چان، 1955 01:40:19,970 --> 01:40:22,560 را وارد کنید، همچنین کمی مرموز در نگاه اول. 1956 01:40:22,560 --> 01:40:30,540 اما اگر ما حرکت به بالا، ./argv2 Z-A-M-Y-L-A C-H-A-N. 1957 01:40:30,540 --> 01:40:32,190 بنابراین ما بیش از هر کلمه تکرار شده است. 1958 01:40:32,190 --> 01:40:37,770 و به نوبه خود، ما تکرار به بیش از هر شخصیت در یک کلمه. 1959 01:40:37,770 --> 01:40:40,040 >> اکنون پس از این همه، متوجه وجود دارد که 1960 01:40:40,040 --> 01:40:43,120 یکی از جزئیات دیگر ما نوع شده نادیده گرفتن این زمان کل. 1961 01:40:43,120 --> 01:40:46,180 ما فقط به طعنه از هم جدا چه ورودی اصلی می تواند باشد؟ 1962 01:40:46,180 --> 01:40:47,780 چه در مورد خروجی اصلی است؟ 1963 01:40:47,780 --> 01:40:50,540 >> همه از این زمان، ما شده فقط کپی کردن و چسباندن 1964 01:40:50,540 --> 01:40:53,870 از نوع int کلمه در مقابل اصلی، هر چند شما ممکن آنلاین مشاهده کنید، 1965 01:40:53,870 --> 01:40:58,340 گاهی اوقات به اشتباه در نسخه های قدیمی تر C و کامپایلرها، که آنها می گویند باطل، 1966 01:40:58,340 --> 01:40:59,410 و یا چیزی در همه. 1967 01:40:59,410 --> 01:41:01,580 اما، در واقع، برای نسخه C که ما با استفاده از، 1968 01:41:01,580 --> 01:41:06,180 C 11 یا 2011، تحقق بخشیدن به که باید آن را از نوع int است. 1969 01:41:06,180 --> 01:41:09,300 و آن هم باید باشد از درجه اعتبار ساقط و یا argc و argv است. 1970 01:41:09,300 --> 01:41:10,790 >> اما چرا اعضای هیات تحریریه اصلی؟ 1971 01:41:10,790 --> 01:41:12,480 چیزی است که آن را در واقع بازگشت؟ 1972 01:41:12,480 --> 01:41:16,280 خب، معلوم است همه از این زمان، هر زمان که شما یک برنامه اصلی نوشته شده است 1973 01:41:16,280 --> 01:41:18,440 همیشه بازگشت چیزی. 1974 01:41:18,440 --> 01:41:19,960 اما آن را به انجام این کار مخفیانه. 1975 01:41:19,960 --> 01:41:23,350 >> این چیزی است که یک هوشمند، به عنوان خط 5 نشان می دهد. 1976 01:41:23,350 --> 01:41:24,225 اما آنچه INT؟ 1977 01:41:24,225 --> 01:41:26,100 خب، این وجود دارد کنوانسیون در برنامه نویسی، 1978 01:41:26,100 --> 01:41:29,790 به موجب آن اگر چیزی است اشتباه رفته و همه به خوبی، 1979 01:41:29,790 --> 01:41:34,250 برنامه ها و عملکرد به طور کلی return-- تا حدودی counterintuitively-- 1980 01:41:34,250 --> 01:41:35,230 0. 1981 01:41:35,230 --> 01:41:38,070 0 به طور کلی به معنای همه خوب است. 1982 01:41:38,070 --> 01:41:40,610 بنابراین حتی اگر شما فکر می کنم آن را به عنوان در بسیاری از زمینه های دروغین، 1983 01:41:40,610 --> 01:41:42,930 آن را در واقع به طور کلی به معنی یک چیز خوب 1984 01:41:42,930 --> 01:41:49,560 >> در همین حال، اگر یک برنامه باز می گردد 1، یا منفی 1، یا 5، یا منفی 42، 1985 01:41:49,560 --> 01:41:52,941 و یا هر غیر 0 ارزش، که به طور کلی به معنای 1986 01:41:52,941 --> 01:41:54,190 که چیزی اشتباه رفته است. 1987 01:41:54,190 --> 01:41:56,700 در واقع، در مک و یا کامپیوتر خود را، شما ممکن است در واقع دیده 1988 01:41:56,700 --> 01:42:01,050 یک پیغام خطا، آن به موجب آن می گوید چیزی و یا دیگر، خطا 1989 01:42:01,050 --> 01:42:04,940 کد منفی 42، و یا خطا کد 23، و یا چیزی شبیه به آن. 1990 01:42:04,940 --> 01:42:08,980 این تعداد به طور کلی فقط یک اشاره به برنامه نویس، و یا شرکت 1991 01:42:08,980 --> 01:42:11,174 ساخته شده است که نرم افزار، چه چیزی اشتباه و به همین دلیل رفت، 1992 01:42:11,174 --> 01:42:13,590 به طوری که آنها می توانید از طریق نگاه اسناد و یا کد خود را، 1993 01:42:13,590 --> 01:42:15,465 و شکل چه خطا در واقع به معنی. 1994 01:42:15,465 --> 01:42:18,400 به طور کلی نمی برای ما مفید کاربران نهایی. 1995 01:42:18,400 --> 01:42:20,550 >> اما زمانی که سود عمده 0، همه خوب است. 1996 01:42:20,550 --> 01:42:23,770 و اگر شما مشخص نیست چه اصلی باید بازگشت، 1997 01:42:23,770 --> 01:42:26,950 آن را فقط به طور خودکار بازگشت 0 برای شما. 1998 01:42:26,950 --> 01:42:30,870 اما بازگشت چیزی دیگری در واقع مفید است. 1999 01:42:30,870 --> 01:42:34,660 >> در این برنامه نهایی، به من اجازه جلو بروید و پاسخ این exit.c، 2000 01:42:34,660 --> 01:42:38,630 و معرفی آخرین از امروز موضوعات، شناخته شده به عنوان یک کد خطا. 2001 01:42:38,630 --> 01:42:42,930 اجازه دهید من به جلو و شامل ما فایل های آشنا تا بالا، انجام INT اصلی. 2002 01:42:42,930 --> 01:42:49,500 و در این زمان، اجازه دهید انجام تعداد آنها از نوع int، ی argv رشته، و با براکت من 2003 01:42:49,500 --> 01:42:50,836 به این معنا که آن را در آرایه است. 2004 01:42:50,836 --> 01:42:52,460 و پس از آن اجازه دهید من فقط انجام یک بررسی سلامت عقل است. 2005 01:42:52,460 --> 01:42:56,640 این زمان، اگر تعداد آنها را نمی کند برابر 2، پس از آن شما می دانید چه؟ 2006 01:42:56,640 --> 01:42:57,520 فراموشش کن. 2007 01:42:57,520 --> 01:43:03,170 من می خواهم بگویم که، هی، کاربر، شما از دست رفته آرگومان خط فرمان 2008 01:43:03,170 --> 01:43:04,210 N اسلش. 2009 01:43:04,210 --> 01:43:05,230 >> و پس از آن که آن را. 2010 01:43:05,230 --> 01:43:06,130 من می خواهم به خارج شوید. 2011 01:43:06,130 --> 01:43:11,030 من می خواهم به پیشگیرانه، و قبل از موعد مقرر واقعا، بازگشت 2012 01:43:11,030 --> 01:43:12,810 چیزی غیر از شماره 1. 2013 01:43:12,810 --> 01:43:15,360 برو به ارزش برای اولین خطا که می تواند رخ دهد 1 است. 2014 01:43:15,360 --> 01:43:17,860 اگر شما برخی از دیگر اشتباه وضعیت است که ممکن است رخ دهد، 2015 01:43:17,860 --> 01:43:21,390 شما ممکن است بازگشت 2 می گویند و یا بازگشت 3، و یا شاید حتی منفی 1 یا منفی 2. 2016 01:43:21,390 --> 01:43:23,750 >> اینها فقط کدهای خروج هستند که، به طور کلی، 2017 01:43:23,750 --> 01:43:27,770 تنها به برنامه نویس مفید، یا شرکت است که حمل و نقل نرم افزار است. 2018 01:43:27,770 --> 01:43:30,500 اما این واقعیت که آن را 0 است آنچه که مهم است. 2019 01:43:30,500 --> 01:43:34,310 بنابراین اگر در این برنامه، من می خواهم تضمین می کنند که این برنامه تنها 2020 01:43:34,310 --> 01:43:38,190 کار می کند در صورتی که کاربر من فراهم می کند با تعداد آرگومان از دو، 2021 01:43:38,190 --> 01:43:42,880 نام این برنامه، و برخی دیگر از کلمه، من می تواند به اندازه زیر اجرا، 2022 01:43:42,880 --> 01:43:46,110 فریاد زدن در کاربر را با گفت تابع () printf، از دست رفته آرگومان خط فرمان، 2023 01:43:46,110 --> 01:43:46,970 بازگشت 1. 2024 01:43:46,970 --> 01:43:49,940 که فقط بلافاصله خروج از برنامه. 2025 01:43:49,940 --> 01:43:55,840 >> فقط اگر تعداد آنها برابر 2 خواهد ما پایین در اینجا، که در آن نقطه من قصد دارم برای گفتن، 2026 01:43:55,840 --> 01:44:00,410 سلام درصد S، بک اسلش نفر، argv1. 2027 01:44:00,410 --> 01:44:03,827 به عبارت دیگر، من پس از رفتن و argv 0 نیست، 2028 01:44:03,827 --> 01:44:05,410 که فقط نام برنامه است. 2029 01:44:05,410 --> 01:44:09,450 من می خواهم برای چاپ کردن سلام، کاما، کلمه دوم که انسان تایپ. 2030 01:44:09,450 --> 01:44:12,580 و در این مورد در خط 13، همه خوب است. 2031 01:44:12,580 --> 01:44:15,920 >> من می دانم که تعداد آنها 2 است منطقا از این برنامه است. 2032 01:44:15,920 --> 01:44:17,770 من قصد دارم به جلو بروید و بازگشت 0. 2033 01:44:17,770 --> 01:44:21,230 از سوی دیگر، در نظر داشته باشید که این در ابتدا درست است و همچنین. 2034 01:44:21,230 --> 01:44:24,760 >> منطقی، من می توانم این کار را انجام و در محفظهای این خطوط 2035 01:44:24,760 --> 01:44:27,020 کد در این بند دیگری در اینجا. 2036 01:44:27,020 --> 01:44:29,420 اما این نوع از بی ارزش تورفتگی کد من. 2037 01:44:29,420 --> 01:44:31,800 و من می خواهم فوق العاده روشن است که بدون توجه به آنچه، 2038 01:44:31,800 --> 01:44:34,670 به طور پیش فرض، سلام چیزی خواهد شد چاپ شده، 2039 01:44:34,670 --> 01:44:36,050 تا زمانی که کاربران همکاری می کند. 2040 01:44:36,050 --> 01:44:39,360 >> پس از آن بسیار رایج را به استفاده از یک شرط، فقط یک صورت، 2041 01:44:39,360 --> 01:44:41,870 به گرفتن برخی از اشتباه وضعیت، و سپس خارج شوید. 2042 01:44:41,870 --> 01:44:45,690 و پس از آن، تا زمانی است خب، ندارد دیگری، 2043 01:44:45,690 --> 01:44:48,060 اما فقط باید کد خارج که اگر، به دلیل آن 2044 01:44:48,060 --> 01:44:51,060 معادل در این مورد خاص، منطقی. 2045 01:44:51,060 --> 01:44:54,480 بنابراین من بازگشت 0، فقط به به صراحت دلالت همه خوب است. 2046 01:44:54,480 --> 01:44:58,480 >> اگر من از بازگشت 0 حذف، آن را به طور خودکار برای من به عهده گرفت. 2047 01:44:58,480 --> 01:45:00,890 اما در حال حاضر که من بازگشت در حداقل این مورد، 2048 01:45:00,890 --> 01:45:04,940 من قصد دارم به، برای اندازه گیری خوبی و وضوح، بازگشت 0 در این مورد. 2049 01:45:04,940 --> 01:45:09,690 بنابراین در حال حاضر اجازه دهید من جلو بروید و خروج، که SEGUE کامل فقط به ترک است. 2050 01:45:09,690 --> 01:45:14,401 >> اما مطمئن خروج، و به من اجازه رفتن جلو و ./exit انجام دهید، وارد کنید. 2051 01:45:14,401 --> 01:45:16,900 و برنامه فریاد زد در من، از دست رفته آرگومان خط فرمان. 2052 01:45:16,900 --> 01:45:18,120 خوب، اجازه دهید من همکاری کنند. 2053 01:45:18,120 --> 01:45:23,810 >> اجازه دهید من به جای انجام ./exit، دیوید، را وارد کنید. 2054 01:45:23,810 --> 01:45:25,190 و در حال حاضر آن را می گوید، سلام دیوید. 2055 01:45:25,190 --> 01:45:27,300 و شما به طور معمول این را ببینید. 2056 01:45:27,300 --> 01:45:30,650 >> اما معلوم است که وجود دارد حالت خاص در لینوکس به واقع دیدن 2057 01:45:30,650 --> 01:45:34,470 با خروج کد یک برنامه خارج می شود. 2058 01:45:34,470 --> 01:45:37,184 گاهی اوقات در یک گرافیکی جهان مانند سیستم عامل مک یا ویندوز، 2059 01:45:37,184 --> 01:45:40,100 شما فقط این اعداد زمانی که یک دید پیغام خطا بالا میآید بر روی صفحه نمایش 2060 01:45:40,100 --> 01:45:41,940 و برنامه نویس شما نشان می دهد که تعداد. 2061 01:45:41,940 --> 01:45:44,773 اما اگر ما می خواهید برای دیدن آنچه خطا پیام است، ما می توانیم آن here-- انجام 2062 01:45:44,773 --> 01:45:48,100 بنابراین ./exit، را وارد کنید، چاپ از دست رفته آرگومان خط فرمان. 2063 01:45:48,100 --> 01:45:54,590 >> اگر من در حال حاضر از $ echo ؟، که مسخره مرموز به دنبال. 2064 01:45:54,590 --> 01:45:56,590 اما $؟ 2065 01:45:56,590 --> 01:45:59,220 طلسم جادویی است که می گوید، هی، کامپیوتر، 2066 01:45:59,220 --> 01:46:01,900 به من بگویید چه قبلی کد خروج از برنامه بود. 2067 01:46:01,900 --> 01:46:03,410 و من آمار را وارد کنید. 2068 01:46:03,410 --> 01:46:07,520 من 1، چرا که این چیزی است که من تابع اصلی من به بازگشت کرد. 2069 01:46:07,520 --> 01:46:12,310 >> در همین حال، اگر من ./exit دیوید، و ضربه را وارد کنید، من، سلام دیوید. 2070 01:46:12,310 --> 01:46:16,800 و اگر من در حال حاضر از $ echo ؟، من سلام 0. 2071 01:46:16,800 --> 01:46:19,080 و این عملا شود اطلاعات با ارزش 2072 01:46:19,080 --> 01:46:23,420 در زمینه دیباگر، نه چندان زیاد است که شما، انسان، به مراقبت. 2073 01:46:23,420 --> 01:46:26,060 اما دیباگر و دیگر برنامه های ما این ترم استفاده 2074 01:46:26,060 --> 01:46:29,420 اغلب در این تعداد نگاه کنید، حتی اگر آن را از پنهان 2075 01:46:29,420 --> 01:46:32,780 مگر اینکه شما برای آن، به نگاه تعیین اینکه آیا یک برنامه یا نه 2076 01:46:32,780 --> 01:46:37,050 اعدام درست یا نادرست بود. 2077 01:46:37,050 --> 01:46:40,450 >> و به طوری که ما را به ارمغان می آورد این، در پایان روز. 2078 01:46:40,450 --> 01:46:43,917 ما امروز با نگاه آغاز شده اشکال زدایی، و به نوبه خود در دوره 2079 01:46:43,917 --> 01:46:46,750 خود را، و سپس جالب تر، از لحاظ فنی در زیر هود 2080 01:46:46,750 --> 01:46:49,490 در چه رشته ها، که آخرین هفته ما فقط در زمان برای مسلم است، 2081 01:46:49,490 --> 01:46:51,900 و قطعا آنها را در زمان برای در ابتدا اعطا می شود. 2082 01:46:51,900 --> 01:46:56,040 >> پس از آن ما در چگونه ما می توانیم دسترسی نگاه شخصیت فردی در یک رشته، 2083 01:46:56,040 --> 01:47:00,310 و سپس دوباره به یک سطح بالاتر و جو در زمان همه چیز نگاه، نگاه به چگونگی well-- 2084 01:47:00,310 --> 01:47:04,226 اگر ما می خواهیم به فردی عناصر در یک لیست مانند ساختار، 2085 01:47:04,226 --> 01:47:05,850 ما نمی توانیم این کار را با رشته های متعدد؟ 2086 01:47:05,850 --> 01:47:08,050 و ما می توانیم با آرگومان های خط فرمان. 2087 01:47:08,050 --> 01:47:12,800 اما این تصویر در اینجا فقط جعبه نمایشی از این ایده کلی این است 2088 01:47:12,800 --> 01:47:14,451 از یک آرایه، و یا یک لیست و یا یک بردار. 2089 01:47:14,451 --> 01:47:16,450 و بسته به زمینه، همه این کلمات 2090 01:47:16,450 --> 01:47:17,880 معانی کمی متفاوت است. 2091 01:47:17,880 --> 01:47:20,060 بنابراین در C، ما تنها در مورد یک آرایه صحبت کنید. 2092 01:47:20,060 --> 01:47:23,840 و مجموعه ای یک تکه است حافظه، هر یک از آنها است 2093 01:47:23,840 --> 01:47:27,720 عناصر به هم پیوسته هستند، پشت، به عقب، به عقب، به پشت. 2094 01:47:27,720 --> 01:47:31,970 >> و این عناصر، به طور کلی، از نوع داده های مشابه، شخصیت، 2095 01:47:31,970 --> 01:47:35,966 شخصیت، شخصیت، شخصیت یا رشته، رشته، رشته، رشته، یا از نوع int، 2096 01:47:35,966 --> 01:47:38,600 هوشمند، هوشمند، هر چه که باشد ما در حال تلاش به فروشگاه. 2097 01:47:38,600 --> 01:47:42,540 اما در پایان روز، این است آنچه آن را مانند به نظر می رسد مفهومی. 2098 01:47:42,540 --> 01:47:44,530 شما در حال گرفتن خود را حافظه یا RAM کامپیوتر است. 2099 01:47:44,530 --> 01:47:48,590 و شما در حال کنده کاری آن را به جعبه های هم اندازه، همه از آن 2100 01:47:48,590 --> 01:47:50,920 هستند، به عقب، به تماس، به عقب در این راه. 2101 01:47:50,920 --> 01:47:53,200 >> و چه خوب در مورد این ایده، و این واقعیت 2102 01:47:53,200 --> 01:47:58,580 که ما می توانیم مقادیر در این راه بیان با اولین ساختمان داده ما 2103 01:47:58,580 --> 01:48:02,520 در کلاس، معنی ما می توانیم شروع برای حل مشکلات با کد 2104 01:48:02,520 --> 01:48:04,079 که به طور مستقیم در هفته 0 آمد. 2105 01:48:04,079 --> 01:48:05,870 شما در تلفن را به یاد می آورند به عنوان مثال کتاب، که در آن 2106 01:48:05,870 --> 01:48:09,110 ما با استفاده از تقسیم و غلبه، یا یک الگوریتم جستجوی دودویی، 2107 01:48:09,110 --> 01:48:13,220 از طریق یک طیف غربال کردن دسته از نام ها و شماره. 2108 01:48:13,220 --> 01:48:18,220 اما ما به عهده گرفت، به یاد بیاورید، که دفترچه تلفن در حال حاضر مرتب شده باشد، 2109 01:48:18,220 --> 01:48:21,630 که شخص دیگری در حال حاضر کرلی out-- داده یک لیست از نام 2110 01:48:21,630 --> 01:48:24,430 و numbers-- چگونه آنها را با حروف الفبا. 2111 01:48:24,430 --> 01:48:26,950 و در حال حاضر که در C، بیش از حد، توانایی 2112 01:48:26,950 --> 01:48:30,290 به وضع همه چیز، نه فیزیکی در یک دفترچه تلفن 2113 01:48:30,290 --> 01:48:34,220 اما عملا در یک کامپیوتر حافظه، می توانیم هفته آینده خواهد بود 2114 01:48:34,220 --> 01:48:38,470 به معرفی دوباره this-- اولین ساختمان داده ما در array-- 2115 01:48:38,470 --> 01:48:43,530 اما مهمتر از آن، کامپیوتر واقعی الگوریتم های علم اجرا 2116 01:48:43,530 --> 01:48:47,720 در کد، که با آن ما می توانیم ذخیره داده ها در ساختار شبیه به این، 2117 01:48:47,720 --> 01:48:50,730 و سپس شروع به آن را دستکاری، و در واقع حل مشکلات با آن، 2118 01:48:50,730 --> 01:48:53,570 و برای ساخت در بالا از آن، در نهایت، برنامه در C، 2119 01:48:53,570 --> 01:48:56,730 در پایتون، در جاوا اسکریپت، پرس و جو پایگاه داده با SQL؟ 2120 01:48:56,730 --> 01:48:59,980 >> و ما که همه از این دید ایده های مختلف در هم بافتن. 2121 01:48:59,980 --> 01:49:04,100 اما در حال حاضر، به یاد بیاورید که دامنه که ما امروز معرفی 2122 01:49:04,100 --> 01:49:06,920 این چیزی که اینجا بود، و جهان از رمزنگاری. 2123 01:49:06,920 --> 01:49:11,200 و در میان مشکلات بعدی شما به خودتان حل خواهد شد هنر رمزنگاری است، 2124 01:49:11,200 --> 01:49:13,630 تقلا و د تقلا اطلاعات و رمز درآوردن 2125 01:49:13,630 --> 01:49:15,930 و رمزگشایی متن، و با فرض نهایت 2126 01:49:15,930 --> 01:49:18,970 که شما هم اکنون می دانم که چه است در زیر هود 2127 01:49:18,970 --> 01:49:21,860 به طوری که زمانی که می بینید و یا دریافت یک پیام مانند این، شما 2128 01:49:21,860 --> 01:49:24,060 خودتان می توانید آن را کشف کند. 2129 01:49:24,060 --> 01:49:26,740 این همه، و در کنار هم بیشتر است. 2130 01:49:26,740 --> 01:49:29,890 2131 01:49:29,890 --> 01:49:30,790 >> [پخش ویدئو] 2132 01:49:30,790 --> 01:49:32,970 >> -Mover فقط وارد است. 2133 01:49:32,970 --> 01:49:35,146 من قصد دارم به سفر استاد دانشگاه بود. 2134 01:49:35,146 --> 01:49:37,611 بله. 2135 01:49:37,611 --> 01:49:40,080 سلام. 2136 01:49:40,080 --> 01:49:40,660 این شما را در. 2137 01:49:40,660 --> 01:49:44,125 2138 01:49:44,125 --> 01:49:45,110 صبر کن! 2139 01:49:45,110 --> 01:49:45,610 دیوید. 2140 01:49:45,610 --> 01:49:53,936 2141 01:49:53,936 --> 01:49:56,060 من فقط تلاش برای کشف از آنچه برای شما اتفاق افتاده. 2142 01:49:56,060 --> 01:49:58,130 لطفا، هر چیزی می تواند کمک کند. 2143 01:49:58,130 --> 01:50:05,020 2144 01:50:05,020 --> 01:50:08,354 شما کالج خود بودند هم اتاقی بودند، نه؟ 2145 01:50:08,354 --> 01:50:10,770 شما با او وجود دارد زمانی که او به پایان رسید پروژه CS50 است؟ 2146 01:50:10,770 --> 01:50:13,770 2147 01:50:13,770 --> 01:50:15,765 >> [موسیقی] 2148 01:50:15,765 --> 01:50:32,110 2149 01:50:32,110 --> 01:50:33,150 >> یعنی CS50 بود. 2150 01:50:33,150 --> 01:50:42,690 2151 01:50:42,690 --> 01:50:44,770 >> عاشق اینجام. 2152 01:50:44,770 --> 01:50:45,854 >> -کامل خوردن. 2153 01:50:45,854 --> 01:50:47,020 ما قصد داریم از کسب و کار. 2154 01:50:47,020 --> 01:50:52,120 2155 01:50:52,120 --> 01:50:53,970 >> [پایان دادن به پخش]