1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [موسیقی] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> DAVID J. مالان: خوب، این CS50 است. 5 00:00:16,240 --> 00:00:18,010 و این هفته یکی است. 6 00:00:18,010 --> 00:00:22,050 پس به یاد آورید که آخرین بار در هفته صفر، ما در فکر محاسباتی متمرکز شده است. 7 00:00:22,050 --> 00:00:25,440 و ما انتقال از آن به ابتدا، یک برنامه نویسی گرافیکی 8 00:00:25,440 --> 00:00:27,360 زبان از دوستان ما در آزمایشگاه رسانه ای MIT. 9 00:00:27,360 --> 00:00:31,730 >> و با خراش، آیا ما به کشف ایده ها مانند توابع، و شرایط، 10 00:00:31,730 --> 00:00:35,210 و حلقه ها، و متغیر، و حتی حوادث، و موضوعات، و بیشتر. 11 00:00:35,210 --> 00:00:37,880 و امروز، ما در حال رفتن به ادامه استفاده از آن ایده ها، 12 00:00:37,880 --> 00:00:40,630 و واقعا مصرف آنها را برای داده شود، اما ترجمه آنها 13 00:00:40,630 --> 00:00:44,220 به زبان دیگر شناخته شده به عنوان C. در حال حاضر، C یک زبان سنتی تر است. 14 00:00:44,220 --> 00:00:46,020 این سطح پایین تر است زبان، اگر شما خواهد شد. 15 00:00:46,020 --> 00:00:47,300 >> آن را کاملا متنی. 16 00:00:47,300 --> 00:00:49,910 و به این ترتیب در نگاه اول، آن را همه رفتن به نگاه نسبتا مخفی 17 00:00:49,910 --> 00:00:51,430 اگر شما هرگز قبل از برنامه ریزی است. 18 00:00:51,430 --> 00:00:53,530 ما در حال رفتن به نیمه دونقطه، و پرانتز، 19 00:00:53,530 --> 00:00:55,150 و آکولاد، و بیشتر. 20 00:00:55,150 --> 00:00:57,240 اما متوجه باشید که حتی هر چند نحو است 21 00:00:57,240 --> 00:01:00,600 در مورد به نگاه کمی نا آشنا به بسیاری از شما، گذشته آن را ببینید. 22 00:01:00,600 --> 00:01:03,220 و سعی کنید برای دیدن ایده های که، در واقع، آشنا، 23 00:01:03,220 --> 00:01:06,750 چرا که در اینجا در هفته یکی چه ما شروع به انجام است که به مقایسه، 24 00:01:06,750 --> 00:01:08,980 در ابتدا، خراش در مقابل C. 25 00:01:08,980 --> 00:01:12,350 >> بنابراین، برای مثال، به یاد که زمانی که ما اجرا برای اولین بار از برنامه های ما 26 00:01:12,350 --> 00:01:16,220 زمان گذشته، ما یک بلوک که نگاه کرد چیزی کمی شبیه به this-- که 27 00:01:16,220 --> 00:01:19,990 پرچم سبز کلیک کنید، و سپس ما یکی از قطعات پازل یا بیشتر در زیر آن، 28 00:01:19,990 --> 00:01:22,150 در این مورد، می گویند، سلام جهان است. 29 00:01:22,150 --> 00:01:24,870 بنابراین، در واقع، در ابتدا، وقتی که من که پرچم سبز کلیک کنید 30 00:01:24,870 --> 00:01:27,390 برای اجرای برنامه من است، پس به صحبت می کنند، این 31 00:01:27,390 --> 00:01:29,520 بلوک های که اعدام، و یا اجرا. 32 00:01:29,520 --> 00:01:32,230 و، به طور خاص، خراش گفت: سلام، جهان. 33 00:01:32,230 --> 00:01:35,377 >> در حال حاضر، من می توانم مشخص کرده اید کلمات مختلف در اینجا. 34 00:01:35,377 --> 00:01:37,960 اما خواهیم دید که، در واقع، بسیاری از از این blocks-- و در واقع، 35 00:01:37,960 --> 00:01:41,880 در C بسیاری از functions-- می تواند پارامتری و یا سفارشی 36 00:01:41,880 --> 00:01:43,150 برای انجام کارهای مختلف. 37 00:01:43,150 --> 00:01:45,520 در واقع، در C اگر ما می خواهید برای تبدیل، در حال حاضر، 38 00:01:45,520 --> 00:01:47,567 این برنامه ابتدا به این زبان های دیگر، 39 00:01:47,567 --> 00:01:49,650 ما قصد داریم به ارسال چیزی کمی شبیه به این. 40 00:01:49,650 --> 00:01:52,540 >> داده شده است، برخی از نا آشنا وجود دارد نحو وجود دارد به احتمال زیاد، هوشمند، 41 00:01:52,540 --> 00:01:54,380 و پرانتز، و از درجه اعتبار ساقط. 42 00:01:54,380 --> 00:01:57,740 اما printf-- حتی اگر شما را فکر می کنم آن را فقط چاپ شود. 43 00:01:57,740 --> 00:02:00,120 اما چاپ معنی چاپ فرمت شده، به عنوان ما به زودی خواهید دید. 44 00:02:00,120 --> 00:02:02,140 این به معنای واقعی کلمه چاپ خواهد شد به روی صفحه نمایش هر 45 00:02:02,140 --> 00:02:05,990 در داخل آن پرانتز، که البته در این مورد، سلام جهان است. 46 00:02:05,990 --> 00:02:09,290 >> اما شما برخی دیگر نحو، برخی از نقل قول های دوبل، 47 00:02:09,290 --> 00:02:11,890 که پرانتز در پایان، نقطه ویرگول و مانند آن. 48 00:02:11,890 --> 00:02:15,027 بنابراین یک بیت از سربار وجود دارد، پس به صحبت، هر دو به لحاظ شناختی 49 00:02:15,027 --> 00:02:17,860 و به نحوی، که ما قصد داریم به به یاد داشته باشید قبل از اینکه طولانی. 50 00:02:17,860 --> 00:02:20,720 اما متوجه باشید که با تمرین، این شروع به پرش در شما. 51 00:02:20,720 --> 00:02:24,920 >> در واقع، اجازه دهید که در یک تمرکز عملکرد specifically-- در این مورد، 52 00:02:24,920 --> 00:02:26,290 سلام جهان است. 53 00:02:26,290 --> 00:02:27,560 بنابراین می گویند که تابع است. 54 00:02:27,560 --> 00:02:31,320 سلام جهان پارامتر آن است، یا استدلال، سفارشی سازی آن است. 55 00:02:31,320 --> 00:02:34,320 >> و هم ارزی در C فقط رفتن به این خط در اینجا، 56 00:02:34,320 --> 00:02:38,710 که در آن تابع () printf معادل است، می گویند، رشته به نقل دو، سلام 57 00:02:38,710 --> 00:02:41,470 جهان معادل است، البته، به چه چیزی در جعبه سفید وجود دارد. 58 00:02:41,470 --> 00:02:45,680 و N اسلش، هر چند کمی عجیب و غریب و وجود ندارد، از ابتدا، 59 00:02:45,680 --> 00:02:49,380 به سادگی در حال رفتن به اثر خواهیم در یک کامپیوتر را مشاهده کنید، مانند مک من و یا یک PC، 60 00:02:49,380 --> 00:02:51,660 از فقط در حال حرکت مکان نما به خط بعدی. 61 00:02:51,660 --> 00:02:53,970 آن را مانند هدف قرار دادن است را وارد کنید بر روی صفحه کلید خود را. 62 00:02:53,970 --> 00:02:55,580 >> بنابراین ما دوباره قبل از اینکه طولانی را ببینید. 63 00:02:55,580 --> 00:02:58,640 اما در ابتدا، اجازه دهید یک نگاهی به این به عنوان مثال دیگر در مورد حلقه. 64 00:02:58,640 --> 00:03:02,830 ما در زمان گذشته این برای همیشه حلقه بود، که یک سری از قطعات پازل بود 65 00:03:02,830 --> 00:03:05,490 این چیزی است که به معنای واقعی کلمه بود forever-- در این مورد، 66 00:03:05,490 --> 00:03:08,360 گویند، سلام جهان، سلام جهان، سلام جهان، سلام جهان. 67 00:03:08,360 --> 00:03:10,350 پس از آن یک حلقه بی نهایت با طراحی است. 68 00:03:10,350 --> 00:03:14,580 >> در C، اگر ما می خواهیم برای اجرای این همان ایده، ما به سادگی ممکن است انجام این کار. 69 00:03:14,580 --> 00:03:19,570 در حالی که درست، تابع () printf سلام در حال حاضر world-- در حالی که، فقط معنایی، نوع 70 00:03:19,570 --> 00:03:23,090 conjures تا ایده انجام چیزی دوباره، و دوباره، و دوباره، 71 00:03:23,090 --> 00:03:23,980 و برای چه مدت؟ 72 00:03:23,980 --> 00:03:27,990 خب، فراخوان true-- که درست فقط در یا یکی است. 73 00:03:27,990 --> 00:03:30,660 >> و درست است، البته، همیشه درست است. 74 00:03:30,660 --> 00:03:33,060 پس از آن نوع از یک بی معنی بیانیه فقط می گویند درست است. 75 00:03:33,060 --> 00:03:36,890 اما در واقع، این عمدی است، چرا که اگر درست است فقط همیشه درست، 76 00:03:36,890 --> 00:03:40,850 از در حالی که درست فقط پیداست، اگر کمی به طور غیر مستقیم، 77 00:03:40,850 --> 00:03:44,070 که خطوط کد زیر را در بین آن آکولاد 78 00:03:44,070 --> 00:03:48,320 باید فقط اجرای دوباره، و دوباره، و دوباره، و در واقع هرگز متوقف کند. 79 00:03:48,320 --> 00:03:50,230 >> اما اگر شما می خواهید خود را حلقه برای متوقف کردن، به عنوان ما 80 00:03:50,230 --> 00:03:54,500 آخرین بار با چیزی شبیه بود این، تکرار در بر داشت زیر 50 بار، 81 00:03:54,500 --> 00:03:57,700 در C می توانید همین کار را با چه چیزی انجام برای loop-- کلمه کلیدی به نام 82 00:03:57,700 --> 00:03:59,330 بودن در حالی که، اما نه برای. 83 00:03:59,330 --> 00:04:03,290 و سپس ما برخی از نحو جدید را در اینجا، با INT من برابر با 0، من کمتر از 50، 84 00:04:03,290 --> 00:04:03,880 من + +. 85 00:04:03,880 --> 00:04:05,430 و ما دوباره به آن آمده است. 86 00:04:05,430 --> 00:04:09,660 اما این است که به سادگی چگونه ما ترجمه مجموعه ای از بلوک خراش 87 00:04:09,660 --> 00:04:13,079 به مجموعه ای از خطوط C کد. 88 00:04:13,079 --> 00:04:14,450 >> در همین حال، در نظر متغیر است. 89 00:04:14,450 --> 00:04:16,540 و، در واقع، ما فقط یکی دیدم یک لحظه پیش. 90 00:04:16,540 --> 00:04:21,220 و در مورد خراش، اگر ما می خواستم به یک متغیر به نام من 91 00:04:21,220 --> 00:04:24,590 برای من به عنوان عدد صحیح، فقط یک عدد، و ما می خواهیم آن را به برخی از ارزش، 92 00:04:24,590 --> 00:04:28,410 ما را به این نارنجی استفاده مسدود here-- من مجموعه را به 0. 93 00:04:28,410 --> 00:04:30,800 >> و ما امروز را ببینید و فراتر از آن، درست مثل هفته گذشته، 94 00:04:30,800 --> 00:04:33,850 برنامه نویسان انجام تقریبا همیشه شروع به شمارش از صفر، واقعا 95 00:04:33,850 --> 00:04:34,950 توسط کنوانسیون. 96 00:04:34,950 --> 00:04:37,250 بلکه به دلیل فراخوان از بحث ما در مورد باینری، 97 00:04:37,250 --> 00:04:39,990 کوچکترین عدد شما می توانید نمایندگی با هر تعداد از بیت 98 00:04:39,990 --> 00:04:41,640 فقط رفتن به 0 است. 99 00:04:41,640 --> 00:04:45,190 و به این ترتیب ما به طور کلی شروع مقدار دهی اولیه حتی متغیرهای ما به 0. 100 00:04:45,190 --> 00:04:47,710 >> و در C برای انجام همان، ما در حال رفتن به می گویند INT 101 00:04:47,710 --> 00:04:50,110 برای عدد صحیح، من فقط کنوانسیون است. 102 00:04:50,110 --> 00:04:53,390 من می توانم این متغیر به نام هر چیزی که من می خواهم، درست مثل در ابتدا. 103 00:04:53,390 --> 00:04:57,770 و پس از آن برابر با 0 فقط اختصاص مقدار 0 از سمت راست 104 00:04:57,770 --> 00:05:01,319 و آن را به متغیر، یا ظرف ذخیره سازی وجود دارد، در سمت چپ. 105 00:05:01,319 --> 00:05:04,360 و نیمه روده بزرگ به عنوان ما see-- و ما دیده ایم تعداد کمی از این already-- 106 00:05:04,360 --> 00:05:06,530 فقط به این معنی پایان فکر. 107 00:05:06,530 --> 00:05:09,430 اقدام به انجام کاری دیگر در خطوط که به دنبال. 108 00:05:09,430 --> 00:05:11,330 >> در حال حاضر، چه در مورد عبارات بولی؟ 109 00:05:11,330 --> 00:05:14,320 به یاد بیاورید که در ابتدا، این عبارت بودند 110 00:05:14,320 --> 00:05:16,740 که یا درست هستند و یا سوال false--، 111 00:05:16,740 --> 00:05:18,910 واقعا، که درست یا نادرست هستند. 112 00:05:18,910 --> 00:05:21,960 بنابراین در مورد خراش، ما ممکن است یک سوال ساده بپرسید مانند این، 113 00:05:21,960 --> 00:05:24,586 من کمتر از 50؟ 114 00:05:24,586 --> 00:05:25,710 بنابراین من، دوباره، یک عدد صحیح است. 115 00:05:25,710 --> 00:05:27,210 شاید ما با استفاده از آن در یک برنامه خراش 116 00:05:27,210 --> 00:05:29,310 برای پیگیری نمره یا چیزی شبیه به آن. 117 00:05:29,310 --> 00:05:33,810 بنابراین این نحو در اینجا در ابتدا فقط به این معنی، من کمتر از 50؟ 118 00:05:33,810 --> 00:05:37,330 خوب، خوشبختانه، چیزی است ساده در C. و به ترجمه، 119 00:05:37,330 --> 00:05:41,780 این که ما به سادگی می توانم بگویم کمتر از 50، با استفاده از کلید آشنا 120 00:05:41,780 --> 00:05:42,850 بر روی صفحه کلید خود را. 121 00:05:42,850 --> 00:05:45,141 >> در همین حال، اگر شما به خواست چیزی می گویند کلی تر، 122 00:05:45,141 --> 00:05:49,890 مانند، خوب است، x کمتر از Y که در آن هر x و y خود متغیر است؟ 123 00:05:49,890 --> 00:05:52,280 ما می توانیم همین کار را انجام در C، تا زمانی که ما این 124 00:05:52,280 --> 00:05:53,942 این متغیرها ایجاد در حال حاضر. 125 00:05:53,942 --> 00:05:55,650 و خواهیم دید که چگونه به که قبل از اینکه طولانی. 126 00:05:55,650 --> 00:05:58,590 ما به سادگی می گویند x کمتر از y است. 127 00:05:58,590 --> 00:06:00,530 >> بنابراین شما شروع به برخی از شباهت را ببینید. 128 00:06:00,530 --> 00:06:03,490 و کسانی که مردمی که ساخته شده ابتدا قطعا شد 129 00:06:03,490 --> 00:06:05,250 با الهام از برخی از این ایده اساسی است. 130 00:06:05,250 --> 00:06:10,350 و شما این نوع از دیدن نحو در بسیاری از languages-- 131 00:06:10,350 --> 00:06:12,160 نه فقط خراش، نمی فقط C است، اما پایتون، 132 00:06:12,160 --> 00:06:14,790 و جاوا اسکریپت، و زبان های دیگر هنوز هم. 133 00:06:14,790 --> 00:06:18,270 >> بیایید سازهای که در نظر از C، مفهوم شرط، 134 00:06:18,270 --> 00:06:20,370 انجام کاری مشروط. 135 00:06:20,370 --> 00:06:22,720 اگر چیزی درست است، انجام این کار. 136 00:06:22,720 --> 00:06:24,457 اگر چیز دیگری درست است، انجام دهد. 137 00:06:24,457 --> 00:06:27,040 این نوع از برنامه نویسی معادل یک چنگال در جاده ها است. 138 00:06:27,040 --> 00:06:29,730 شاید آن یک چنگال دو طرفه است، سه راه چنگال، یا بیشتر. 139 00:06:29,730 --> 00:06:32,800 و در ابتدا، ما ممکن است چیزی شبیه به این دیده می شود. 140 00:06:32,800 --> 00:06:34,010 >> بنابراین این یکی از بزرگ است. 141 00:06:34,010 --> 00:06:36,750 اما در نظر گرفتن نسبت سادگی از منطق است. 142 00:06:36,750 --> 00:06:44,010 اگر x کمتر از y باشد آنگاه می گویند x کمتر است از y، دیگری اگر x بزرگتر است از ب، 143 00:06:44,010 --> 00:06:46,230 پس از آن می گویند X بزرگتر است از ب. 144 00:06:46,230 --> 00:06:48,300 و پس از آن، منطقی، اگر شما فکر می کنم برگشت به ابتدا 145 00:06:48,300 --> 00:06:52,610 یا فقط شهود انسان خود را، خب، اگر x بزرگتر از y و x را 146 00:06:52,610 --> 00:06:57,000 کمتر از Y، پس از آن البته X در حال رفتن به به y برابر است. 147 00:06:57,000 --> 00:06:59,690 بنابراین در این مورد، توسط تودرتو آن بلوک خراش، 148 00:06:59,690 --> 00:07:02,580 می تواند ما را برای رسیدن به یک سه راه چنگال را در جاده؟ 149 00:07:02,580 --> 00:07:04,980 >> در همین حال، اگر ما می خواهید انجام این کار در C، مسلما 150 00:07:04,980 --> 00:07:08,420 به نظر می رسد simpler-- کمی حداقل هنگامی که شما با استفاده از دستور آشنا شده است. 151 00:07:08,420 --> 00:07:12,050 اگر x کمتر از y باشد، تابع () printf x کمتر از y است. 152 00:07:12,050 --> 00:07:16,140 دیگری اگر x بزرگتر است از ب، تابع () printf X بزرگتر است از ب. 153 00:07:16,140 --> 00:07:21,210 دیگری تابع () printf X برابر با y-- و است، دوباره، با کسانی که بک اسلش پایان می رسد فقط 154 00:07:21,210 --> 00:07:24,160 برای کسانی که خطوط جدید به طوری که اگر شما در واقع فرار این نوع از برنامه 155 00:07:24,160 --> 00:07:25,940 آن را فقط حرکت اشاره گر خود را در نهایت 156 00:07:25,940 --> 00:07:28,100 به خط بعدی از روی صفحه نمایش. 157 00:07:28,100 --> 00:07:31,270 >> در حال حاضر، در عین حال خراش دیگر ویژگی های پیچیده تر، تنها 158 00:07:31,270 --> 00:07:34,320 برخی از ما که در حال رفتن به در ابتدا حرکت به جهان از C. 159 00:07:34,320 --> 00:07:37,010 و یکی از آنها بود نام یک لیست در ابتدا. 160 00:07:37,010 --> 00:07:39,100 و این یک خاص بود نوع متغیر است که 161 00:07:39,100 --> 00:07:42,840 به شما اجازه ذخیره کارهای مختلف در آن، به عقب، به عقب، به عقب. 162 00:07:42,840 --> 00:07:45,540 >> در C، آن را ندارد لیست ها، به خودی خود، اما چیزی 163 00:07:45,540 --> 00:07:48,090 که به طور کلی بیشتر نام آرایه، اگر چه ما 164 00:07:48,090 --> 00:07:50,590 بعدا دوباره این ترم به دنبال چیزی 165 00:07:50,590 --> 00:07:52,780 نام یک لیست و یا واقعا یک لیست پیوندی. 166 00:07:52,780 --> 00:07:55,510 اما در حال حاضر، نزدیک ترین معادل در C برای ما 167 00:07:55,510 --> 00:07:57,345 در حال رفتن به چیزی نام یک آرایه. 168 00:07:57,345 --> 00:07:59,740 و مجموعه ای است که به سادگی نوع خاصی از متغیر 169 00:07:59,740 --> 00:08:03,160 که اجازه می دهد تا شما برای ذخیره داده تماس، به عقب، به عقب، به پشت. 170 00:08:03,160 --> 00:08:05,840 >> و، در واقع، در ابتدا، اگر ما می خواستیم برای دسترسی به 171 00:08:05,840 --> 00:08:09,030 اولین عنصر یک آرایه یا list-- و من قصد دارم به آن تماس، 172 00:08:09,030 --> 00:08:13,600 طبق قرارداد، و argv، استدلال بردار، اما بیشتر در که قبل از بلند. 173 00:08:13,600 --> 00:08:17,090 اگر من می خواهم در اولین عنصر از و argv، در جهان از ابتدا 174 00:08:17,090 --> 00:08:20,930 شما در واقع به طور معمول شروع به شمارش از 1. 175 00:08:20,930 --> 00:08:22,850 >> و بنابراین من ممکن است مورد 1 و argv است. 176 00:08:22,850 --> 00:08:26,310 که چقدر MIT اجرا مفهوم لیست. 177 00:08:26,310 --> 00:08:29,860 اما در C، من قصد دارم به به عبارت ساده تر فقط می گویند، و argv، 178 00:08:29,860 --> 00:08:32,758 که دوباره نام من است list-- یا به روشن باشد، یک آرایه. 179 00:08:32,758 --> 00:08:34,549 و اگر من می خواهم اولین عناصر، من قصد دارم 180 00:08:34,549 --> 00:08:37,890 به استفاده از براکت مربع، که شما ممکن است اغلب تحت یک صفحه کلید استفاده نمی شود. 181 00:08:37,890 --> 00:08:40,150 >> اما فقط به این معنی 0، من اول دریافت کنید. 182 00:08:40,150 --> 00:08:42,160 بنابراین در مواردی و به عنوان با گذشت زمان، ما در حال رفتن 183 00:08:42,160 --> 00:08:44,570 به شروع به دیدن این دوگانگیها بین خراش و C، 184 00:08:44,570 --> 00:08:46,070 به موجب آن خراش با استفاده از یک. 185 00:08:46,070 --> 00:08:47,670 ما در C استفاده 0 در اینجا. 186 00:08:47,670 --> 00:08:49,420 اما شما به سرعت خواهید دید یک بار شما را در درک 187 00:08:49,420 --> 00:08:52,920 پایه های هر زبان، که این چیز شروع به گرفتن همه بیشتر 188 00:08:52,920 --> 00:08:56,860 آشنا از طریق تمرین و تمرین. 189 00:08:56,860 --> 00:08:59,700 >> بنابراین اجازه دهید در واقع نگاه در حال حاضر در یک برنامه. 190 00:08:59,700 --> 00:09:04,031 در اینجا باید اول C ما کد منبع برای برنامه های کامل است. 191 00:09:04,031 --> 00:09:06,280 و برنامه ما در حال رفتن به ارائه برای در نظر گرفتن 192 00:09:06,280 --> 00:09:09,340 یکی که معادل است به آن قطعه خراش های قبلی است. 193 00:09:09,340 --> 00:09:13,210 >> بنابراین در اینجا، ما باید چه مسلما ساده ترین برنامه C 194 00:09:13,210 --> 00:09:15,410 شما می توانید ارسال که در واقع چیزی. 195 00:09:15,410 --> 00:09:18,250 در حال حاضر، ما گذشته نگاه کنید، در حال حاضر، شامل است، 196 00:09:18,250 --> 00:09:21,190 io.h استاندارد، و این زاویه براکت و int، و خالی، 197 00:09:21,190 --> 00:09:22,840 و آکولاد، و مانند آن. 198 00:09:22,840 --> 00:09:25,390 >> و اجازه دهید فقط تمرکز بر روی چه، حداقل به طور مستقیم، 199 00:09:25,390 --> 00:09:26,860 ممکن است در شما پرش در حال حاضر. 200 00:09:26,860 --> 00:09:30,300 در واقع، اصلی، من نمی لزوما مطمئن شوید که چه این است، 201 00:09:30,300 --> 00:09:34,580 اما بسیار شبیه به خراش بود که وقتی پرچم سبز کلیک قطعه پازل، 202 00:09:34,580 --> 00:09:39,070 به طوری که C به عنوان یک زبان برنامه نویسی یک قطعه اصلی از کد که 203 00:09:39,070 --> 00:09:43,380 می شود به طور پیش فرض اجرا می شود. و در واقع، آن را به معنای واقعی کلمه به اصلی به نام. 204 00:09:43,380 --> 00:09:44,720 >> بنابراین اصلی یک تابع است. 205 00:09:44,720 --> 00:09:48,720 و آن را یک تابع خاص که وجود دارد در C که هنگامی که یک برنامه را اجرا می کنید، 206 00:09:48,720 --> 00:09:52,720 آن اصلی که می شود توسط اجرا است به طور پیش فرض. در جهان از ابتدا، 207 00:09:52,720 --> 00:09:56,970 معمولا زمانی که پرچم سبز بود کلیک که به طور پیش فرض اجرا کردم. 208 00:09:56,970 --> 00:10:01,130 >> در همین حال، ما این را ندیده اید، تابع () printf و یا چاپ فرمت شده، که 209 00:10:01,130 --> 00:10:05,620 برای رفتن به یک تابع است که همراه با C، همراه با یک دسته کامل از دیگران، 210 00:10:05,620 --> 00:10:10,140 که از وقت و زمان دوباره، به منظور انجام دقیقا 211 00:10:10,140 --> 00:10:12,450 به عنوان نام آن پیداست، چیزی را چاپ کنید. 212 00:10:12,450 --> 00:10:13,500 چه ما خواهید چاپ کنید؟ 213 00:10:13,500 --> 00:10:15,770 خب، ما می بینیم که توسط شخصیت های متصل به 214 00:10:15,770 --> 00:10:18,680 مانند these-- سلام جهان، بک اسلش نفر در کوتیشن، 215 00:10:18,680 --> 00:10:23,040 ما می توانیم تابع () printf دقیقا چه چیزی را چاپ بر روی صفحه نمایش. 216 00:10:23,040 --> 00:10:26,430 >> اما به منظور انجام که، متاسفانه 217 00:10:26,430 --> 00:10:30,010 نیاز به چیزی است که در حال حاضر به ما انسان مرموز، 218 00:10:30,010 --> 00:10:34,510 اما حداقل آن را تا حدودی readable-- تیز عبارتند از، io.h استاندارد، هوشمند، 219 00:10:34,510 --> 00:10:39,340 اصلی، از درجه اعتبار ساقط، تابع () printf، همه از جادویی ورد ما فقط بر روی صفحه نمایش را دیدم. 220 00:10:39,340 --> 00:10:42,470 اما ما در واقع به رفتن محرمانه تر هنوز هم. 221 00:10:42,470 --> 00:10:47,140 ما برای اولین بار نیاز به ترجمه کد که ما را به کد ماشین ارسال. 222 00:10:47,140 --> 00:10:51,370 و به یاد از هفته گذشته که ماشین آلات، حداقل آنهایی را که ما در اینجا می دانیم، 223 00:10:51,370 --> 00:10:54,450 در پایان روز تنها درک صفر و آنهایی که. 224 00:10:54,450 --> 00:10:58,100 >> و خدای من، اگر ما مجبور به نوشتن این صفر و آنهایی که به واقع برنامه، 225 00:10:58,100 --> 00:11:01,260 آن را بسیار بسیار به سرعت نگاهی سرگرم کننده از هر چیزی. 226 00:11:01,260 --> 00:11:05,150 اما معلوم است، در هفته گذشته، که این الگوها از صفر و آنهایی 227 00:11:05,150 --> 00:11:06,400 فقط باید معنی خاص. 228 00:11:06,400 --> 00:11:08,500 در زمینه های خاص، آنها ممکن است تعداد بود. 229 00:11:08,500 --> 00:11:11,840 >> در برخی شرایط، آنها ممکن است به معنای نامه، و یا رنگ، یا هر تعداد 230 00:11:11,840 --> 00:11:14,710 انتزاعی دیگر وجود دارد بر. 231 00:11:14,710 --> 00:11:18,450 اما فقط به عنوان کامپیوتر شما دارای پردازنده، واحد پردازش مرکزی، 232 00:11:18,450 --> 00:11:20,390 یا مغز در داخل از کامپیوتر شما. 233 00:11:20,390 --> 00:11:22,240 این معمولا اینتل در داخل، به دلیل این که 234 00:11:22,240 --> 00:11:24,900 یکی از بزرگترین شرکت که باعث می شود پردازنده برای رایانه. 235 00:11:24,900 --> 00:11:28,910 >> خوب، پردازنده های اینتل و دیگران به سادگی در پیشبرد تصمیم 236 00:11:28,910 --> 00:11:33,970 که الگوهای خاصی از صفر و آنهایی که باید چیز خاصی باشد. 237 00:11:33,970 --> 00:11:37,040 الگوهای خاصی از صفر و آنهایی که به معنی، چاپ این صفحه نمایش، 238 00:11:37,040 --> 00:11:39,710 و یا اضافه کردن این دو عدد، و یا تفریق این دو عدد، 239 00:11:39,710 --> 00:11:43,310 و یا حرکت این قطعه از داده ها را از حافظه کامپیوتر من در اینجا، 240 00:11:43,310 --> 00:11:47,870 و یا هر تعداد دیگر از سطح بسیار پایین، اما در نهایت مفید است، عملیات. 241 00:11:47,870 --> 00:11:53,022 اما، خوشبختانه، ما انسان ها نمی به نیاز به دانستن این سطح از جزئیات. 242 00:11:53,022 --> 00:11:56,230 در واقع، درست مثل زمان گذشته، که در آن ما انتزاع دوباره، و دوباره، و دوباره، 243 00:11:56,230 --> 00:11:58,930 ساخت و ساز از سطح بسیار پایین شکلهای هندسی اولیه مانند صفر و آنهایی که 244 00:11:58,930 --> 00:12:01,160 به مفاهیم سطح بالاتر مانند اعداد و حروف، 245 00:12:01,160 --> 00:12:04,330 و رنگ، و بیشتر، ما هم میتوانیم به عنوان برنامه نویسان 246 00:12:04,330 --> 00:12:07,080 ایستاده بر دوش دیگران که قبل از ما آمده اند 247 00:12:07,080 --> 00:12:11,260 و استفاده از نرم افزاری است که دیگر مردم قبل از us-- نوشته 248 00:12:11,260 --> 00:12:14,340 یعنی برنامه به نام کامپایلر. 249 00:12:14,340 --> 00:12:17,770 >> C یک زبان است که معمولا وارد شده، 250 00:12:17,770 --> 00:12:22,130 که به معنی از تبدیل کد منبع به کد ماشین. 251 00:12:22,130 --> 00:12:25,230 به طور خاص، این به چه معناست است که اگر شما منبع خود را کردم 252 00:12:25,230 --> 00:12:29,530 کد که شما خود را ارسال، به عنوان ما به زودی خواهد شد در یک لحظه بر روی صفحه نمایش، 253 00:12:29,530 --> 00:12:33,140 و شما می خواهید برای تبدیل آن در نهایت به دستگاه code-- 254 00:12:33,140 --> 00:12:37,100 آن صفر و آنهایی که تنها مک یا PC خود را 255 00:12:37,100 --> 00:12:41,230 understands-- اولین شما رو تغذیه است که کد منبع در عنوان 256 00:12:41,230 --> 00:12:46,340 ورودی به یک ویژه برنامه ای به نام یک کامپایلر، 257 00:12:46,340 --> 00:12:48,974 خروجی که ما خواهیم دید کد ماشین است. 258 00:12:48,974 --> 00:12:51,890 و، در واقع، آخرین باری که ما صحبت در مورد، واقعا، در پایان روز، 259 00:12:51,890 --> 00:12:52,610 حل مسئله است. 260 00:12:52,610 --> 00:12:53,360 شما ورودی کردم. 261 00:12:53,360 --> 00:12:54,318 و شما خروجی کردم. 262 00:12:54,318 --> 00:12:56,560 و شما به نوعی کردم الگوریتم در وسط. 263 00:12:56,560 --> 00:12:59,830 >> الگوریتم قطعا می تواند اجرا شده در نرم افزار، 264 00:12:59,830 --> 00:13:02,900 همانطور که ما با هفته گذشته شبه دیدم و به عنوان ما با کد واقعی را ببینید 265 00:13:02,900 --> 00:13:03,490 این هفته. 266 00:13:03,490 --> 00:13:06,430 و به این ترتیب یک کامپایلر واقعا فقط دارای مجموعه ای از الگوریتم های داخل 267 00:13:06,430 --> 00:13:10,060 از آن است که می دانند چگونه به تبدیل کلمات کلیدی خاص، 268 00:13:10,060 --> 00:13:12,180 مانند اصلی، و تابع () printf، و دیگران است که ما فقط 269 00:13:12,180 --> 00:13:17,620 دیدم به الگوهای صفر و آنهایی که پردازنده های اینتل در داخل و سایر 270 00:13:17,620 --> 00:13:20,020 در واقع درک می کند. 271 00:13:20,020 --> 00:13:22,460 پس چگونه ما انجام این کار؟ 272 00:13:22,460 --> 00:13:24,470 کجا ما یک کامپایلر است؟ 273 00:13:24,470 --> 00:13:26,400 >> بسیاری از ما در اینجا یک مک یا PC. 274 00:13:26,400 --> 00:13:29,152 و شما در حال اجرا سیستم عامل مک، و یا ویندوز، و یا لینوکس، و یا سولاریس، 275 00:13:29,152 --> 00:13:30,860 و یا هر تعداد دیگر سیستم های عامل. 276 00:13:30,860 --> 00:13:32,568 و، در واقع، ما می تواند بیرون رفتن بر روی وب 277 00:13:32,568 --> 00:13:35,710 و دانلود کامپایلر برای مک یا PC خود را 278 00:13:35,710 --> 00:13:37,360 برای سیستم عامل خاص خود را. 279 00:13:37,360 --> 00:13:39,617 اما ما همه را در می شود صفحات مختلف، پس به صحبت می کنند. 280 00:13:39,617 --> 00:13:41,450 ما کمی می خواهم که تنظیمات مختلف. 281 00:13:41,450 --> 00:13:43,210 و همه چیز همه همان کار نمی کند. 282 00:13:43,210 --> 00:13:45,280 و، در واقع، این روزها بسیاری از ما استفاده نمی 283 00:13:45,280 --> 00:13:47,516 نرم افزاری است که تنها بر روی لپ تاپ ما اجرا می شود. 284 00:13:47,516 --> 00:13:49,390 در عوض، ما استفاده از چیزی مانند یک مرورگر است که 285 00:13:49,390 --> 00:13:52,930 اجازه می دهد تا ما برای دسترسی به وب مبتنی بر برنامه های کاربردی در ابر است. 286 00:13:52,930 --> 00:13:55,630 و بعد از این ترم، ما دقیقا همان است که انجام خواهد داد. 287 00:13:55,630 --> 00:13:59,660 ما برنامه های کاربردی ارسال خواهد شد و یا نرم افزار با استفاده از code-- نمی C، 288 00:13:59,660 --> 00:14:02,860 اما زبان های دیگر مانند پایتون و JavaScript-- که در ابر اجرا. 289 00:14:02,860 --> 00:14:05,860 >> و برای انجام این، ما خودمان را در طول ترم 290 00:14:05,860 --> 00:14:11,890 در واقع استفاده از یک ابر مبتنی بر محیط زیست شناخته شده به عنوان CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 این برنامه مبتنی بر وب است محیط زیست، یا توسعه یکپارچه 292 00:14:16,030 --> 00:14:20,610 محیط زیست، محیط برنامه نویسی، که در بالای برخی از ساخته شده نرم افزار منبع باز به نام ابر 9. 293 00:14:20,610 --> 00:14:22,966 و ما برخی از آموزشی ساخته شده ساده به آن 294 00:14:22,966 --> 00:14:25,840 به طوری که برای پنهان کردن ویژگی های خاصی در هفته های اول که ما لازم نیست، 295 00:14:25,840 --> 00:14:27,770 پس از آن شما می توانید آنها نشان می دهد و انجام بسیاری 296 00:14:27,770 --> 00:14:29,400 هر چیزی که شما با محیط زیست می خواهید. 297 00:14:29,400 --> 00:14:32,470 >> و آن را به ما اجازه می دهد تا بیش از حد، به قبل از نصب نرم افزار خاص. 298 00:14:32,470 --> 00:14:35,330 چیزهایی مثل یک به اصطلاح CS50 کتابخانه، که ما به زودی خواهید دید 299 00:14:35,330 --> 00:14:39,210 ما فراهم می کند در C با برخی از قابلیت های اضافی. 300 00:14:39,210 --> 00:14:44,392 بنابراین اگر شما به، در نهایت، CS50.io، شما را وادار به ورود در، 301 00:14:44,392 --> 00:14:46,350 و هنگامی که شما انجام دهد و ایجاد یک حساب کاربری رایگان، 302 00:14:46,350 --> 00:14:52,150 شما قادر به دسترسی به یک خواهد بود محیط زیست است که به نظر می رسد کاملا شبیه به این. 303 00:14:52,150 --> 00:14:53,760 >> در حال حاضر، این در حالت پیش فرض است. 304 00:14:53,760 --> 00:14:55,650 همه چیز خوب است و روشن روی صفحه. 305 00:14:55,650 --> 00:14:57,941 بسیاری از ما عادت دارند کار بر روی قطعه CS50 که 306 00:14:57,941 --> 00:14:59,150 کاملا در اواخر شب. 307 00:14:59,150 --> 00:15:02,400 و به این ترتیب برخی از شما ممکن است به ترجیح می دهند تبدیل آن به حالت شب، پس به صحبت می کنند. 308 00:15:02,400 --> 00:15:05,550 >> اما، در نهایت، آنچه که شما رفتن به درون CS50 IDE را ببینید 309 00:15:05,550 --> 00:15:08,340 سه areas-- متمایز است یک منطقه بر روی آن به سمت چپ 310 00:15:08,340 --> 00:15:12,604 فایل های خود را در حال رفتن به در می شود ابر، منطقه در سمت راست بالای 311 00:15:12,604 --> 00:15:14,270 که در آن کد را در حال رفتن به قابل ویرایش. 312 00:15:14,270 --> 00:15:16,650 شما قادر خواهید بود برای باز کردن زبانه های فردی برای هر برنامه 313 00:15:16,650 --> 00:15:19,670 که شما ارسال این ترم در داخل که گوشه بالا سمت راست. 314 00:15:19,670 --> 00:15:23,070 و پس از آن بسیاری از arcanely، و در عین حال با قدرت، 315 00:15:23,070 --> 00:15:26,610 در حال رفتن به این چیزی که در پایین شناخته شده به عنوان یک پنجره ترمینال. 316 00:15:26,610 --> 00:15:29,450 >> این یک مدرسه قدیمی است رابط خط فرمان، 317 00:15:29,450 --> 00:15:32,240 یا CLI، که اجازه می دهد شما برای اجرای دستورات 318 00:15:32,240 --> 00:15:35,260 در computer-- در این مورد، کامپیوتر در cloud-- 319 00:15:35,260 --> 00:15:39,090 برای انجام کارهایی مانند کامپایل کردن کد خود را از کد منبع به کد ماشین، 320 00:15:39,090 --> 00:15:43,600 برای اجرای برنامه های خود را، و یا شروع به خود را وب سرور، و یا برای دسترسی به پایگاه داده خود را، 321 00:15:43,600 --> 00:15:47,454 و هر تعداد از تکنیک های دیگر که ما شروع به استفاده از قبل از اینکه طولانی. 322 00:15:47,454 --> 00:15:49,370 اما برای رسیدن به آنجا، ما رفتن به واقع 323 00:15:49,370 --> 00:15:51,240 به آنلاین و شروع به بازی. 324 00:15:51,240 --> 00:15:54,399 و برای انجام این، اجازه دهید اول شروع به سرهم بند با اصلی، 325 00:15:54,399 --> 00:15:55,940 و ارسال بخش عمده ای از یک برنامه است. 326 00:15:55,940 --> 00:15:59,170 و اجازه دهید استفاده از آن تابع تابع () printf، که ما قبلا استفاده می شود، 327 00:15:59,170 --> 00:16:01,050 به سادگی به چیزی می گویند. 328 00:16:01,050 --> 00:16:04,910 >> بنابراین در اینجا من در حال حاضر در داخل IDE CS50 است. 329 00:16:04,910 --> 00:16:05,930 من در پیش وارد کرده اید. 330 00:16:05,930 --> 00:16:07,360 و من پر از پنجره به نمایش. 331 00:16:07,360 --> 00:16:09,670 و به این ترتیب، در نهایت، شما بیش از حد در آینده مشکلات 332 00:16:09,670 --> 00:16:12,960 گام مشابه را دنبال که خواهد اسناد آنلاین فراهم می کند. 333 00:16:12,960 --> 00:16:16,360 بنابراین شما لازم نیست که به نگرانی در مورد جذب هر مرحله فنی کمی 334 00:16:16,360 --> 00:16:17,730 که من امروز در اینجا. 335 00:16:17,730 --> 00:16:19,222 >> اما شما یک صفحه نمایش شبیه به این را دریافت کنید. 336 00:16:19,222 --> 00:16:20,430 من به اتفاق در حالت شب باشد. 337 00:16:20,430 --> 00:16:22,944 و شما می توانید همه چیز را روشن تا با غیر فعال کردن حالت شب. 338 00:16:22,944 --> 00:16:24,860 و در پایان از روز، شما در حال رفتن به 339 00:16:24,860 --> 00:16:30,090 این سه اصلی areas-- فایل مرورگر در سمت چپ، زبانه کد تا بالا، 340 00:16:30,090 --> 00:16:32,430 و در پنجره ترمینال در پایین. 341 00:16:32,430 --> 00:16:34,890 >> اجازه دهید من به جلو و نوشتن اولین برنامه من. 342 00:16:34,890 --> 00:16:42,300 من قصد دارم به پیشگیرانه به فایل، جویی در هزینه، و ذخیره فایل به عنوان hello.c. 343 00:16:42,300 --> 00:16:46,850 در واقع، طبق قرارداد، هر که ما برنامه ارسال که در زبان C نوشته شده است 344 00:16:46,850 --> 00:16:49,739 باید به نام چیزی نقطه C، توسط کنوانسیون. 345 00:16:49,739 --> 00:16:53,030 بنابراین من قصد دارم به آن نام hello.c، چون من فقط می خواهم بگویم سلام به جهان است. 346 00:16:53,030 --> 00:16:54,820 حالا من قصد دارم به زوم و روی Save کلیک کنید. 347 00:16:54,820 --> 00:16:58,180 و من در حال حاضر در اینجا یک تب است که در آن من می توانید شروع به نوشتن کد. 348 00:16:58,180 --> 00:16:59,490 >> این است که نمی کامپایل. 349 00:16:59,490 --> 00:17:00,300 این به این معنی هیچ چیز نیست. 350 00:17:00,300 --> 00:17:02,750 و به این ترتیب حتی اگر من تبدیل این به صفر و آنهایی، 351 00:17:02,750 --> 00:17:05,390 پردازنده است که به هیچ ایده چه خبر است. 352 00:17:05,390 --> 00:17:14,170 اما اگر من ارسال خطوط که با هم مطابقت با بودن C conventions-- C است، 353 00:17:14,170 --> 00:17:20,150 دوباره، این language-- با نحو مانند این، تابع () printf سلام world-- و من 354 00:17:20,150 --> 00:17:22,210 بدست راحت با انجام این کار در طول زمان. 355 00:17:22,210 --> 00:17:24,510 بنابراین من فکر نمی کنم من ساخته شده هر اشتباهات تایپی. 356 00:17:24,510 --> 00:17:27,910 >> اما، همواره، اولین زمان انجام این کار، شما خواهد شد. 357 00:17:27,910 --> 00:17:31,090 و آنچه من در مورد به انجام هستم ممکن است بسیار به خوبی برای شما کار نمی کند اولین بار. 358 00:17:31,090 --> 00:17:33,610 و این کاملا خوب، چون در حال حاضر شما 359 00:17:33,610 --> 00:17:37,662 فقط ممکن است زیادی از تازگی مشاهده کنید، اما در طول زمان هنگامی که شما آشنا 360 00:17:37,662 --> 00:17:39,870 با این محیط، و این زبان، و دیگران، 361 00:17:39,870 --> 00:17:42,370 شما شروع به دیدن چیزهایی که هم درست یا نادرست هستند. 362 00:17:42,370 --> 00:17:44,369 >> و این چیزی است که همراهان آموزش و دوره 363 00:17:44,369 --> 00:17:48,780 دستیاران به طوری در طول زمان خوب است، لکه بینی اشتباه و یا اشکالات در کد خود را. 364 00:17:48,780 --> 00:17:52,110 اما من ادعا می کنند که وجود دارد بدون باگ در این کد می باشد. 365 00:17:52,110 --> 00:17:53,990 بنابراین من در حال حاضر می خواهید برای اجرای این برنامه است. 366 00:17:53,990 --> 00:17:57,440 >> در حال حاضر در مک و یا کامپیوتر خود من، من هستم عادت آیکون دوبار کلیک کردن 367 00:17:57,440 --> 00:17:59,350 وقتی می خواهم برای اجرای برخی از برنامه است. 368 00:17:59,350 --> 00:18:01,080 اما این مدل اینجا نیست. 369 00:18:01,080 --> 00:18:04,570 در این محیط است که CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 ما با استفاده از یک عامل سیستم به نام لینوکس است. 371 00:18:07,192 --> 00:18:09,900 لینوکس یادآور است سیستم عامل، به طور کلی شناخته شده 372 00:18:09,900 --> 00:18:10,850 به عنوان یونیکس. 373 00:18:10,850 --> 00:18:16,340 و لینوکس است به ویژه برای شناخته شده داشتن یک خط فرمان محیط زیست، CLI. 374 00:18:16,340 --> 00:18:20,070 در حال حاضر، ما با استفاده از یک خاص عطر و طعم از لینوکس به نام اوبونتو. 375 00:18:20,070 --> 00:18:22,770 و اوبونتو است که به سادگی نسخه خاصی از لینوکس است. 376 00:18:22,770 --> 00:18:27,900 >> اما این روزها این لینوکس انجام در واقع با رابط های گرافیکی کاربر است. 377 00:18:27,900 --> 00:18:30,360 و یکی از ما اتفاق می افتد توان با استفاده از اینجا مبتنی بر وب است. 378 00:18:30,360 --> 00:18:32,735 بنابراین ممکن است این حتی یک نگاه کمی متفاوت از چیزی 379 00:18:32,735 --> 00:18:35,310 شما خودتان را ممکن است دیده و یا در گذشته اجرا کنید. 380 00:18:35,310 --> 00:18:37,910 >> بنابراین من قصد دارم به جلو بروید در حال حاضر و به شرح زیر است. 381 00:18:37,910 --> 00:18:40,950 من این فایل به عنوان hello.c ذخیره کرده ایم. 382 00:18:40,950 --> 00:18:47,350 من قصد دارم به جلو بروید و نوع clanghello.c بنابراین صدای جرنگ جرنگ 383 00:18:47,350 --> 00:18:49,850 برای زبان C یک کامپایلر است. 384 00:18:49,850 --> 00:18:51,952 آن را از پیش نصب شده در CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 و شما کاملا می توانید دانلود کنید و نصب این بر روی مک و یا کامپیوتر خود را. 386 00:18:54,910 --> 00:18:57,910 >> اما، دوباره، شما می نه همه دارند قبل از پیکربندی برای شما انجام می شود. 387 00:18:57,910 --> 00:19:00,940 بنابراین در حال حاضر، من فقط رفتن به اجرا clanghello.c. 388 00:19:00,940 --> 00:19:03,240 و در حال حاضر متوجه این نحو در اینجا خواهد شد در نهایت 389 00:19:03,240 --> 00:19:06,930 متوجه حالت فقط بدان معناست که من در یک هستم پوشه و یا پوشه به نام فضای کاری. 390 00:19:06,930 --> 00:19:11,030 این علامت دلار فقط کنوانسیون است برای معنا، دستورات خود را اینجا تایپ کنید. 391 00:19:11,030 --> 00:19:14,560 >> این چیزی است که یک اعلان گویند، فقط توسط کنوانسیون علامت دلار است. 392 00:19:14,560 --> 00:19:19,130 و اگر من جلو بروید در حال حاضر و با کلیک بر روی را وارد کنید، هیچ چیز به نظر می رسد اتفاق افتاده است. 393 00:19:19,130 --> 00:19:20,930 اما این در واقع چیز خوبی است. 394 00:19:20,930 --> 00:19:23,650 کمتر اتفاق می افتد که در صفحه نمایش خود را، بیشتر احتمال دارد 395 00:19:23,650 --> 00:19:26,710 کد خود را به درست، حداقل نحوی. 396 00:19:26,710 --> 00:19:29,120 >> بنابراین اگر من می خواهم برای اجرای این برنامه، چه کار باید بکنم؟ 397 00:19:29,120 --> 00:19:33,770 خب، معلوم است که نام پیش فرض توسط کنوانسیون 398 00:19:33,770 --> 00:19:38,854 برای برنامه زمانی که شما یک مشخص نیست نام برای برنامه خود را فقط فایلهای دو دویی a.out است. 399 00:19:38,854 --> 00:19:41,270 و این نحو خیلی، شما با قبل از اینکه طولانی آشنا. 400 00:19:41,270 --> 00:19:47,500 >> نقطه بریده بریده فقط به این معنی، هی، CS50 IDE، اجرای یک برنامه به نام a.out 401 00:19:47,500 --> 00:19:49,400 که در داخل دایرکتوری جاری من است. 402 00:19:49,400 --> 00:19:51,520 که نقطه معنی دایرکتوری جاری. 403 00:19:51,520 --> 00:19:55,040 و خواهیم دید که چه چنین دنباله دیگر از شخصیت های معنی قبل از اینکه طولانی. 404 00:19:55,040 --> 00:19:58,430 >> بنابراین در اینجا ما بروید، را وارد کنید، سلام جهان. 405 00:19:58,430 --> 00:20:00,080 و شما متوجه خواهید شد که چه اتفاقی افتاد؟ 406 00:20:00,080 --> 00:20:01,580 نه تنها آن را چاپ سلام جهان. 407 00:20:01,580 --> 00:20:05,990 همچنین نقل مکان کرد مکان نما به خط بعدی. 408 00:20:05,990 --> 00:20:07,160 >> و به همین دلیل بود که؟ 409 00:20:07,160 --> 00:20:12,400 کد است که ما قبل از نوشت چه بود که اطمینان می داد که مکان نما را 410 00:20:12,400 --> 00:20:14,882 رفتن در خط بعدی؟ 411 00:20:14,882 --> 00:20:16,840 چیزی خنده دار در مورد کامپیوتر آن را تنها رفتن 412 00:20:16,840 --> 00:20:18,570 به انجام به معنای واقعی کلمه چه شما آن را به انجام. 413 00:20:18,570 --> 00:20:26,050 >> بنابراین اگر شما آن را به تابع () printf سلام، کاما، فضا، جهان، نقل قول نزدیک، 414 00:20:26,050 --> 00:20:29,090 آن را به معنای واقعی کلمه تنها به چاپ آن حرف می باشد. 415 00:20:29,090 --> 00:20:31,980 اما من تا به حال این شخصیت خاص در پایان، به یاد بیاورید، بک اسلش نفر. 416 00:20:31,980 --> 00:20:34,230 و این چیزی است که تضمین که شخصیت رفت 417 00:20:34,230 --> 00:20:36,570 به خط بعدی از روی صفحه نمایش. 418 00:20:36,570 --> 00:20:38,097 >> در واقع، بگذار بروم و این کار را. 419 00:20:38,097 --> 00:20:39,430 اجازه دهید من به جلو و حذف این. 420 00:20:39,430 --> 00:20:41,180 در حال حاضر، توجه کنید که بالای صفحه نمایش وجود دارد من است 421 00:20:41,180 --> 00:20:42,890 نور قرمز کمی در تب نشان می دهد، 422 00:20:42,890 --> 00:20:45,047 آهای شما فایل خود را ذخیره نمی شود. 423 00:20:45,047 --> 00:20:47,880 بنابراین من قصد دارم به جلو بروید با کنترل S و یا دستور S، فایل را ذخیره کنید. 424 00:20:47,880 --> 00:20:51,130 در حال حاضر آن goes-- برای سبز moment-- رفت. 425 00:20:51,130 --> 00:20:53,760 و در حال حاضر آن را به فقط یک آیکون نزدیک است. 426 00:20:53,760 --> 00:21:01,860 >> اگر من در حال حاضر دوباره اجرا clanghello.c، را وارد کنید، نقطه اسلش، فایلهای دو دویی a.out، را وارد کنید، 427 00:21:01,860 --> 00:21:04,110 شما خواهید دید که آن را هنوز هم کار کرده است. 428 00:21:04,110 --> 00:21:06,020 اما مسلما کمی حشره دار. 429 00:21:06,020 --> 00:21:08,714 در حال حاضر، فضای کاری prompt-- من، و پس از آن که علامت دلار، 430 00:21:08,714 --> 00:21:10,880 و پس از آن prompt-- واقعی من همه در همان خط است. 431 00:21:10,880 --> 00:21:14,540 پس این مطمئنا یک اشکال زیبایی، حتی اگر آن را واقعا یک اشکال منطقی نیست. 432 00:21:14,540 --> 00:21:16,250 >> بنابراین من قصد دارم برای خنثیسازی آنچه من فقط. 433 00:21:16,250 --> 00:21:18,560 من قصد دارم به تکرار فایلهای دو دویی a.out. 434 00:21:18,560 --> 00:21:22,710 متوجه من اضافه ام خط جدید تماس شخصیت. 435 00:21:22,710 --> 00:21:24,280 من فایل ذخیره کرده ایم. 436 00:21:24,280 --> 00:21:31,630 >> بنابراین من قصد دارم به تکرار فایلهای دو دویی a.out، and-- لعنتی، یک اشکال، اشکال معنی اشتباه. 437 00:21:31,630 --> 00:21:35,020 بنابراین اشکال است که حتی اگر من اضافه بک اسلش نفر وجود دارد، 438 00:21:35,020 --> 00:21:41,180 دوباره را نجات داد، دوباره زد این برنامه، رفتار همان بود. 439 00:21:41,180 --> 00:21:42,640 چرا که خواهد بود؟ 440 00:21:42,640 --> 00:21:43,910 >> من از دست رفته یک گام، درست است؟ 441 00:21:43,910 --> 00:21:47,620 که گام کلیدی قبل بود که شما باید to-- زمانی که شما کد منبع خود را تغییر دهید، 442 00:21:47,620 --> 00:21:49,610 که معلوم است نیز اجرا آن را از طریق کامپایلر 443 00:21:49,610 --> 00:21:51,102 دوباره، بنابراین شما کد ماشین جدید دریافت کنید. 444 00:21:51,102 --> 00:21:52,810 و کد ماشین، صفر و آنهایی که، 445 00:21:52,810 --> 00:21:56,260 در حال رفتن به تقریبا یکسان است، اما کاملا، چرا که ما نیاز داریم، 446 00:21:56,260 --> 00:21:57,510 البته، که خط جدید. 447 00:21:57,510 --> 00:22:02,640 >> بنابراین برای حل این مشکل، من نیاز به رفتن به به تکرار clanghello.c، را وارد کنید، نقطه 448 00:22:02,640 --> 00:22:03,800 بریده بریده، فایلهای دو دویی a.out. 449 00:22:03,800 --> 00:22:08,402 و در حال حاضر، سلام جهان است به جایی که من انتظار آن را به. 450 00:22:08,402 --> 00:22:09,610 پس این است که همه خوب و خوب. 451 00:22:09,610 --> 00:22:13,150 اما فایلهای دو دویی a.out یک نام خیلی احمقانه است برای برنامه، حتی اگر آن اتفاق می افتد به، 452 00:22:13,150 --> 00:22:16,530 به دلایل تاریخی، default-- معنی خروجی مونتاژ. 453 00:22:16,530 --> 00:22:20,780 >> اما اجازه دهید من جلو بروید اینجا و این کار متفاوت است. 454 00:22:20,780 --> 00:22:24,760 من می خواهم برنامه سلام دنیای من به واقع می شود سلام. 455 00:22:24,760 --> 00:22:28,320 بنابراین اگر آن را یک آیکون بر روی بودند من دسکتاپ، آن را نمی خواهد فایلهای دو دویی a.out شود. 456 00:22:28,320 --> 00:22:29,730 این امر می تواند به نام سلام. 457 00:22:29,730 --> 00:22:33,660 >> بنابراین برای انجام این کار، آن را تبدیل که صدای جرنگ جرنگ، مانند بسیاری از برنامه ها، 458 00:22:33,660 --> 00:22:37,980 از آرگومان های خط فرمان، و یا پرچم ها، و یا سوئیچ، 459 00:22:37,980 --> 00:22:39,600 که به سادگی رفتار خود را تحت تاثیر قرار. 460 00:22:39,600 --> 00:22:45,160 به طور خاص، صدای جرنگ جرنگ پشتیبانی از O داش پرچم، که پس از آن طول می کشد یک کلمه دوم. 461 00:22:45,160 --> 00:22:48,190 در این مورد، من خودسرانه، اما منطقی، آن را سلام. 462 00:22:48,190 --> 00:22:50,710 اما من می توانم آن را هر چیزی من می خواهم، به جز فایلهای دو دویی a.out، که 463 00:22:50,710 --> 00:22:52,390 خواهد بود و نه علاوه بر نقطه. 464 00:22:52,390 --> 00:22:55,640 >> و پس از آن فقط نام مشخص از فایل من نمی خواهم به کامپایل. 465 00:22:55,640 --> 00:22:59,190 بنابراین در حال حاضر حتی اگر در آغاز از دستور من هنوز هم صدای جرنگ جرنگ، 466 00:22:59,190 --> 00:23:01,410 در پایان از دستور من هنوز هم نام فایل را داشته باشد، 467 00:23:01,410 --> 00:23:05,520 من در حال حاضر این خط فرمان استدلال، این پرچم که می گویند، 468 00:23:05,520 --> 00:23:11,180 آه، به هر حال، خروجی-O، یک فایل به نام سلام، نه فایلهای دو دویی a.out طور پیش فرض. 469 00:23:11,180 --> 00:23:13,810 >> بنابراین اگر من ضربه را وارد کنید در حال حاضر، هیچ چیز به نظر می رسد اتفاق افتاده است. 470 00:23:13,810 --> 00:23:17,900 و، در عین حال، در حال حاضر من می توانم نقطه اسلش انجام سلام. 471 00:23:17,900 --> 00:23:19,089 پس از آن همان برنامه است. 472 00:23:19,089 --> 00:23:21,380 صفر و آنهایی که یکسان در پایان روز است. 473 00:23:21,380 --> 00:23:24,210 >> اما آنها در دو هستید فایلهای دو دویی a.out مختلف فایل ها، 474 00:23:24,210 --> 00:23:26,490 که اولین نسخه است و فقط احمقانه به نام، 475 00:23:26,490 --> 00:23:30,250 و در حال حاضر سلام، که است که بسیار نام قانع کننده تر برای یک برنامه است. 476 00:23:30,250 --> 00:23:33,195 اما، صادقانه، من هرگز هستم رفتن به یاد داشته باشید این دوباره، 477 00:23:33,195 --> 00:23:34,070 و دوباره، و دوباره. 478 00:23:34,070 --> 00:23:36,411 و، در واقع، به عنوان ما ارسال برنامه های پیچیده تر، 479 00:23:36,411 --> 00:23:38,160 دستورات شما رفتن به ارسال 480 00:23:38,160 --> 00:23:40,920 در حال رفتن به حتی بیشتر هنوز هم پیچیده است. 481 00:23:40,920 --> 00:23:41,940 >> و به این ترتیب به نگرانی نیست. 482 00:23:41,940 --> 00:23:46,220 به نظر می رسد که انسان قبل از ما آنها متوجه شده اند بیش از حد 483 00:23:46,220 --> 00:23:47,530 این همان مشکل دقیق بود. 484 00:23:47,530 --> 00:23:50,900 آنها بیش از حد لذت بردن نیست نیاز به نوع نسبتا طولانی، دستورات محرمانه، 485 00:23:50,900 --> 00:23:52,200 چه رسد به یاد داشته باشید آنها. 486 00:23:52,200 --> 00:23:56,070 و به همین ترتیب انسان قبل از ما ساخته اند برنامه های دیگر که آن را آسان تر 487 00:23:56,070 --> 00:23:57,670 به کامپایل نرم افزار خود را. 488 00:23:57,670 --> 00:24:01,609 >> و، در واقع، یکی از این برنامه به نام میک. 489 00:24:01,609 --> 00:24:03,150 بنابراین من قصد دارم به جلو بروید و این کار را. 490 00:24:03,150 --> 00:24:05,691 من قصد دارم به خنثیسازی همه چیز من فقط به روش زیر را انجام داد. 491 00:24:05,691 --> 00:24:07,690 اجازه دهید من می LS تایپ کنید. 492 00:24:07,690 --> 00:24:10,980 و شما متوجه خواهید شد سه چیز فایلهای دو دویی a.out، و یک ستاره، سلام 493 00:24:10,980 --> 00:24:12,810 و یک ستاره، و hello.c. 494 00:24:12,810 --> 00:24:14,730 امیدوارم، این باید یک کمی بصری، 495 00:24:14,730 --> 00:24:18,220 تا آنجا بود همانطور که قبلا هیچ چیز در این فضای کاری. 496 00:24:18,220 --> 00:24:21,240 چیزی که من تا به حال وجود دارد ایجاد تا زمانی که ما کلاس آغاز شده است. 497 00:24:21,240 --> 00:24:22,840 >> و من hello.c ایجاد شده است. 498 00:24:22,840 --> 00:24:24,544 من سپس آن وارد شده، و آن را به نام a.out. 499 00:24:24,544 --> 00:24:27,460 و پس از آن من دوباره آن را وارد کمی متفاوت و سلام گفته می شود. 500 00:24:27,460 --> 00:24:32,830 بنابراین من باید سه فایل در این پوشه، در این پوشه به نام فضای کاری. 501 00:24:32,830 --> 00:24:35,005 در حال حاضر، من می توانید ببینید که به عنوان خوبی اگر من زوم کردن در واقع. 502 00:24:35,005 --> 00:24:37,530 >> اگر من زوم کردن در اینجا و که در آن دست بالا سمت راست نگاه 503 00:24:37,530 --> 00:24:39,940 گوشه، به عنوان وعده داده سمت چپ سمت صفحه نمایش خود را 504 00:24:39,940 --> 00:24:42,990 همیشه به شما نشان دهد چه چیزی در حساب خود، چه 505 00:24:42,990 --> 00:24:44,790 داخل IDE CS50. 506 00:24:44,790 --> 00:24:46,680 و سه فایل وجود دارد. 507 00:24:46,680 --> 00:24:49,070 >> بنابراین من می خواهم تا از فایلهای دو دویی a.out خلاص و خوش. 508 00:24:49,070 --> 00:24:51,275 و همانطور که شما ممکن تصور کنید به طور مستقیم، شما 509 00:24:51,275 --> 00:24:53,400 می تواند از کنترل کلیک مرتب کردن بر اساس یا راست بر روی این کلیک کنید. 510 00:24:53,400 --> 00:24:54,590 و این منو کمی بالا میآید. 511 00:24:54,590 --> 00:24:57,170 شما می توانید فایل را دانلود، اجرا آن، پیش نمایش آن را، تازه کردن، تغییر نام، 512 00:24:57,170 --> 00:24:57,700 و یا چه چیزی نیست. 513 00:24:57,700 --> 00:25:00,260 >> و من فقط می تواند حذف، و آن را دور خواهد رفت. 514 00:25:00,260 --> 00:25:05,260 اما اجازه دهید همه چیز با یک دستور خط در حال حاضر، به طوری که برای دریافت راحت 515 00:25:05,260 --> 00:25:07,010 با این، و زیر را انجام دهید. 516 00:25:07,010 --> 00:25:12,345 من قصد دارم به جلو بروید و حذف فایلهای دو دویی a.out با تایپ کردن به معنای واقعی کلمه rma.out. 517 00:25:12,345 --> 00:25:14,890 به نظر می رسد، دستور برای از بین بردن و یا حذف چیزی، 518 00:25:14,890 --> 00:25:16,280 است را حذف کنید و یا حذف کنید. 519 00:25:16,280 --> 00:25:21,260 >> آن را به طور خلاصه تر RM، فقط برای نجات شما برخی از کلید، و Enter را بزنید. 520 00:25:21,260 --> 00:25:24,707 در حال حاضر ما در حال رفتن به تا حدودی شود مرموزانه حذف فایلهای دو دویی a.out فایل به طور منظم. 521 00:25:24,707 --> 00:25:27,040 من واقعا نمی دانم چه فایل نامنظم هنوز می شود. 522 00:25:27,040 --> 00:25:28,660 اما من نمی خواهم به آن را حذف. 523 00:25:28,660 --> 00:25:30,150 >> بنابراین من قصد دارم به y از نوع بله. 524 00:25:30,150 --> 00:25:31,940 یا من می تواند آن را تایپ کنید و Enter را بزنید. 525 00:25:31,940 --> 00:25:33,440 و، دوباره، هیچ چیز به نظر می رسد اتفاق می افتد. 526 00:25:33,440 --> 00:25:35,840 اما این، به طور کلی، چیز خوبی است. 527 00:25:35,840 --> 00:25:40,490 >> اگر من LS نوع این زمان، چه باید مراجعه کنم؟ 528 00:25:40,490 --> 00:25:44,930 امیدوارم، فقط سلام و hello.c. 529 00:25:44,930 --> 00:25:47,286 در حال حاضر، به عنوان یک کنار، شما متوجه این ستاره، ستاره، 530 00:25:47,286 --> 00:25:48,660 که در پایان از برنامه های من است. 531 00:25:48,660 --> 00:25:50,201 و آنها نیز نشان دادن در سبز. 532 00:25:50,201 --> 00:25:53,970 که فقط راه CS50 IDE است از cluing شما را به این واقعیت 533 00:25:53,970 --> 00:25:55,280 که که کد منبع نیست. 534 00:25:55,280 --> 00:25:58,880 که یک فایل اجرایی، یک اجرایی برنامه ای است که شما در واقع می تواند اجرا شود 535 00:25:58,880 --> 00:26:01,020 با انجام نقطه بریده بریده و سپس آن نام است. 536 00:26:01,020 --> 00:26:05,860 >> در حال حاضر، اجازه دهید من به جلو و حذف این، RM سلام، را وارد کنید، حذف به طور منظم 537 00:26:05,860 --> 00:26:08,010 فایل سلام، بله. 538 00:26:08,010 --> 00:26:11,180 و در حال حاضر اگر من از نوع LS، ما به hello.c است. 539 00:26:11,180 --> 00:26:13,917 سعی کنید به حذف کنید خود را کد منبع واقعی. 540 00:26:13,917 --> 00:26:16,250 اگرچه ویژگی های وجود دارد ساخته شده را به IDE CS50 که در آن 541 00:26:16,250 --> 00:26:19,870 شما می توانید از طریق تاریخ تجدید نظر خود را و عقب در زمان اگر شما به طور تصادفی 542 00:26:19,870 --> 00:26:23,660 چیزی را حذف کنید، انجام شود آگاه به عنوان در هر این دهید آری یا نه، 543 00:26:23,660 --> 00:26:25,381 از آنچه شما در واقع می خواهید به انجام. 544 00:26:25,381 --> 00:26:27,380 و اگر من تا به بالای چپ گوشه سمت در اینجا، 545 00:26:27,380 --> 00:26:30,696 که باقی می ماند hello.c است. 546 00:26:30,696 --> 00:26:32,570 بنابراین مجموعه ای از وجود دارد دستورات دیگر که شما 547 00:26:32,570 --> 00:26:37,550 می تواند در جهان از لینوکس اجرا، که یکی از آنها است، دوباره، را. 548 00:26:37,550 --> 00:26:40,180 و ما در حال رفتن به برنامه من در حال حاضر شرح زیر است. 549 00:26:40,180 --> 00:26:43,270 >> به جای انجام صدای جرنگ جرنگ، به جای انجام صدای جرنگ جرنگ-O، 550 00:26:43,270 --> 00:26:45,860 من قصد دارم به سادگی به معنای واقعی کلمه را تایپ کنید، را خوش آمدید. 551 00:26:45,860 --> 00:26:49,630 و در حال حاضر متوجه، من تایپ کردن نیست را hello.c. 552 00:26:49,630 --> 00:26:50,910 من تایپ کردن هستم سلام. 553 00:26:50,910 --> 00:26:54,840 >> و این برنامه را که همراه با IDE CS50، و بیشتر 554 00:26:54,840 --> 00:26:57,090 به طور کلی با لینوکس، یک برنامه که است 555 00:26:57,090 --> 00:26:59,120 رفتن به یک برنامه به نام سلام. 556 00:26:59,120 --> 00:27:03,680 و آن را به فرض، بر اساس قرارداد، که اگر این برنامه را می توان ساخته شده است، 557 00:27:03,680 --> 00:27:09,030 آن را از یک منبع توان ساخته شده است فایل کد پایان دادن به در نقطه C، hello.c. 558 00:27:09,030 --> 00:27:12,210 >> بنابراین اگر من ضربه در حال حاضر وارد کنید، توجه کنید که دستور است که اجرا می شود 559 00:27:12,210 --> 00:27:14,340 است که در واقع حتی دیگر قبل تر از قبل. 560 00:27:14,340 --> 00:27:16,670 و این به دلیل ایم IDE CS50 پیش به 561 00:27:16,670 --> 00:27:19,878 برخی از ویژگی های اضافی ساخته شده در آن ما لازم نیست فقط رتبهدهی نشده است، اما به زودی. 562 00:27:19,878 --> 00:27:23,470 اما نکته کلیدی برای تحقق بخشیدن به در حال حاضر من یک برنامه Hello دارند. 563 00:27:23,470 --> 00:27:27,080 >> اگر من LS دوباره تایپ می کنم، یک برنامه سلام. 564 00:27:27,080 --> 00:27:32,070 و من می توانم آن را با اجرا نقطه بریده بریده فایلهای دو دویی a.out، نه، 565 00:27:32,070 --> 00:27:35,590 به این دلیل که نقطه تمام این ورزش سلام بریده بریده نقطه بود. 566 00:27:35,590 --> 00:27:38,089 و اکنون من برنامه سلام جهان من داشته باشد. 567 00:27:38,089 --> 00:27:39,880 بنابراین در حال حرکت رو به جلو، ما تقریبا همیشه فقط هستید 568 00:27:39,880 --> 00:27:42,088 رفتن به کامپایل برنامه های ما با استفاده از میک فرمان. 569 00:27:42,088 --> 00:27:45,300 و پس از آن ما در حال رفتن به آنها را اجرا توسط نقطه بریده بریده، و نام این برنامه است. 570 00:27:45,300 --> 00:27:49,610 اما متوجه آنچه را برای انجام شما، آن را به خودی خود یک کامپایلر است. 571 00:27:49,610 --> 00:27:53,310 این فقط یک برنامه راحتی است که می داند که چگونه به ماشه یک کامپایلر 572 00:27:53,310 --> 00:27:56,470 به اجرا به طوری که شما خودتان می توانید از آن استفاده کنید. 573 00:27:56,470 --> 00:28:00,220 >> چه دستورات دیگر در وجود لینوکس، و به نوبه خود CS50 IDE؟ 574 00:28:00,220 --> 00:28:03,107 ما به زودی خواهید دید که وجود دارد دستور CD، تغییر کتاب راهنمای. 575 00:28:03,107 --> 00:28:05,190 این اجازه می دهد تا شما را در رابط خط فرمان خود را 576 00:28:05,190 --> 00:28:07,610 برای حرکت به جلو و عقب، و باز کردن پوشه های مختلف 577 00:28:07,610 --> 00:28:08,860 بدون استفاده از ماوس خود را. 578 00:28:08,860 --> 00:28:12,470 >> LS ما دیدیم، که مخفف لیست فایل های موجود در دایرکتوری جاری. 579 00:28:12,470 --> 00:28:14,650 را دیر، شما می توانید احتمالا شروع به استنباط 580 00:28:14,650 --> 00:28:18,150 آنچه که این معنی now-- ایجاد دایرکتوری، اگر شما می خواهید برای ایجاد یک پوشه. 581 00:28:18,150 --> 00:28:21,270 RM برای حذف، RM دیر برای حذف directory-- و این، 582 00:28:21,270 --> 00:28:24,160 دوباره، خط فرمان معادل از آنچه شما 583 00:28:24,160 --> 00:28:26,945 می تواند در CS50 IDE با ماوس خود را انجام دهید. 584 00:28:26,945 --> 00:28:28,820 اما شما به زودی خواهید پیدا که گاهی اوقات آن را فقط 585 00:28:28,820 --> 00:28:30,610 خیلی سریع تر به انجام همه چیز با یک صفحه کلید، 586 00:28:30,610 --> 00:28:33,690 و در نهایت بسیاری قوی تر است. 587 00:28:33,690 --> 00:28:36,440 >> اما آن را سخت به استدلال می کنند که هر چیزی که ما انجام شده است که تا کنون 588 00:28:36,440 --> 00:28:39,990 زمانی که همه تمام است که قدرتمند، ما شده ایم گفت است، سلام جهان. 589 00:28:39,990 --> 00:28:43,740 و، در واقع، من شده سخت کلمات سلام جهان به برنامه من است. 590 00:28:43,740 --> 00:28:45,530 هیچ پویایی نشده است. 591 00:28:45,530 --> 00:28:49,320 ابتدا منظور از قدر بود جالب تر هفته گذشته است. 592 00:28:49,320 --> 00:28:51,220 >> و بنابراین اجازه دهید وجود دارد. 593 00:28:51,220 --> 00:28:55,310 اجازه دهید یک گام به سوی که توسط راه برخی از این توابع. 594 00:28:55,310 --> 00:28:59,470 بنابراین نه تنها C با printf آمده است، و مجموعه ای از توابع دیگر 595 00:28:59,470 --> 00:29:01,850 که برخی از آنها خواهیم دید در طول زمان، آن را نمی کند 596 00:29:01,850 --> 00:29:05,760 آن را به همه که آسان سمت راست از دروازه در گرفتن ورودی کاربر است. 597 00:29:05,760 --> 00:29:08,140 >> در واقع، یکی از نقاط ضعف زبان هایی مانند C، 598 00:29:08,140 --> 00:29:10,140 و حتی جاوا و در عین حال دیگر، این است که آن را نمی کند 599 00:29:10,140 --> 00:29:15,860 آن را آسان به فقط چیزهایی مانند اعداد صحیح از کاربران، و یا رشته ها، کلمات، 600 00:29:15,860 --> 00:29:19,970 و عبارات، اجازه دهید همه چیز به تنهایی مانند مقادیر ممیز شناور، و یا اعداد حقیقی 601 00:29:19,970 --> 00:29:23,240 با نقطه اعشاری، و واقعا اعداد طولانی، به عنوان ما به زودی خواهید دید. 602 00:29:23,240 --> 00:29:27,000 بنابراین این لیست از توابع در اینجا، این مانند دیگر قطعات پازل خراش هستند 603 00:29:27,000 --> 00:29:31,090 که ما از پیش نصب شده در CS50 IDE است که ما برای چند هفته استفاده 604 00:29:31,090 --> 00:29:34,010 به عنوان چرخ آموزش از انواع، و در نهایت آنها را خاموش، و نگاه 605 00:29:34,010 --> 00:29:37,210 در زیر هود، شاید، در چگونه این چیز ها اجرا. 606 00:29:37,210 --> 00:29:40,460 >> اما برای انجام این کار، اجازه دهید در واقع نوشتن یک برنامه. 607 00:29:40,460 --> 00:29:41,770 اجازه دهید پیش بروید. 608 00:29:41,770 --> 00:29:44,750 و من قصد دارم برای ایجاد یک جدید فایل با کلیک روی این علاوه کمی، 609 00:29:44,750 --> 00:29:45,970 و کلیک کردن فایل جدید است. 610 00:29:45,970 --> 00:29:49,250 >> من قصد دارم برای نجات این بعدی یکی به عنوان، اجازه دهید بگویم، string.c، 611 00:29:49,250 --> 00:29:50,750 چون من می خواهم به بازی با رشته ها. 612 00:29:50,750 --> 00:29:53,990 و string در C فقط دنباله ای از کاراکتر. 613 00:29:53,990 --> 00:29:56,090 بنابراین در حال حاضر اجازه دهید به جلو و انجام موارد زیر است. 614 00:29:56,090 --> 00:30:01,204 >> شامل استاندارد IO.h-- و که معلوم است استاندارد IO، 615 00:30:01,204 --> 00:30:03,360 IO فقط بدان معناست ورودی و خروجی. 616 00:30:03,360 --> 00:30:05,920 بنابراین معلوم است که این خط در اینجا چیزی است که 617 00:30:05,920 --> 00:30:08,140 است همسایه ما را به استفاده از printf است. 618 00:30:08,140 --> 00:30:10,410 تابع () printf، البته، تولید خروجی. 619 00:30:10,410 --> 00:30:15,000 بنابراین به منظور استفاده از تابع () printf، آن را تبدیل از شما باید به این خط از کد 620 00:30:15,000 --> 00:30:16,040 در بالای فایل خود را. 621 00:30:16,040 --> 00:30:18,456 >> و ما دوباره به آنچه که واقعا قبل از اینکه طولانی معنی. 622 00:30:18,456 --> 00:30:20,400 به نظر می رسد که در هر برنامه C من می نویسم، 623 00:30:20,400 --> 00:30:23,640 من به آن شروع با کد است که به نظر می رسد مثل این. 624 00:30:23,640 --> 00:30:26,860 و شما متوجه خواهید شد CS50 IDE، و دیگر توسعه یکپارچه 625 00:30:26,860 --> 00:30:30,050 محیط های مانند آن، در حال رفتن به عنوان بهترین سعی 626 00:30:30,050 --> 00:30:31,780 آنها می توانند به پایان فکر خود را. 627 00:30:31,780 --> 00:30:35,930 در واقع، یک لحظه پیش اگر خنثیسازی آنچه که من فقط، من آمار را وارد کنید. 628 00:30:35,930 --> 00:30:39,160 >> من پس از آن ضربه در اشکال مختلف باز بریس، ضربه دوباره وارد کنید. 629 00:30:39,160 --> 00:30:40,430 و تصور من به پایان رسید. 630 00:30:40,430 --> 00:30:45,140 آن را به من یک خط جدید، فاصله دار کمتر دلایل خوب سبکی خواهیم دید. 631 00:30:45,140 --> 00:30:48,559 و سپس آن را به طور خودکار به من داد که آکولاد را به پایان برساند فکر من. 632 00:30:48,559 --> 00:30:50,600 در حال حاضر، آن را نمی کند همیشه حدس بزنید چه می خواهید انجام دهید. 633 00:30:50,600 --> 00:30:53,620 اما در بخش های بزرگ، آن را برخی کلید صرفه جویی کنید. 634 00:30:53,620 --> 00:30:59,560 بنابراین یک لحظه پیش، ما زد این program-- سلام، جهان، و سپس آن وارد شده، 635 00:30:59,560 --> 00:31:00,460 و سپس آن زد. 636 00:31:00,460 --> 00:31:01,867 اما هیچ پویایی در اینجا وجود دارد. 637 00:31:01,867 --> 00:31:03,700 چه اگر ما می خواستیم انجام کاری متفاوت؟ 638 00:31:03,700 --> 00:31:07,630 خوب، اگر من می خواستم در واقع دریافت یک رشته از کاربر؟ 639 00:31:07,630 --> 00:31:11,250 من قصد دارم به استفاده از یک قطعه پازل نام دقیقا که-- از رشته است. 640 00:31:11,250 --> 00:31:15,860 >> معلوم است در C که زمانی که شما نمی خواهید به ارائه ورودی به یک قطعه پازل، 641 00:31:15,860 --> 00:31:19,360 و یا به درستی بیشتر به یک تابع، شما به معنای واقعی کلمه فقط پرانتز باز، 642 00:31:19,360 --> 00:31:20,430 پرانتز بسته. 643 00:31:20,430 --> 00:31:25,540 پس از آن به عنوان اینکه وجود دارد هیچ جعبه سفید به نوع به. 644 00:31:25,540 --> 00:31:27,720 بلوک می گویند قبل از یک جعبه کوچک سفید بود. 645 00:31:27,720 --> 00:31:29,660 ما که جعبه سفید ندارد در حال حاضر. 646 00:31:29,660 --> 00:31:33,310 >> اما وقتی که من رشته دریافت تماس، من خواهید برای قرار دادن نتیجه در جایی. 647 00:31:33,310 --> 00:31:37,680 بنابراین یک الگوی بسیار معمول است در C است به یک تابع، مانند رشته دریافت تماس در اینجا، 648 00:31:37,680 --> 00:31:41,070 و پس از آن مقدار بازگشتی آن را ذخیره کنید. 649 00:31:41,070 --> 00:31:44,450 این نتیجه را آن تلاش در چیزی. 650 00:31:44,450 --> 00:31:47,630 >> و آنچه که ساخت در برنامه نویسی، 651 00:31:47,630 --> 00:31:53,450 چه در ابتدا و یا در حال حاضر C، که ما می توانید استفاده کنید در واقع ذخیره چیزی؟ 652 00:31:53,450 --> 00:31:55,990 آن را به نام یک متغیر، درست است؟ 653 00:31:55,990 --> 00:32:00,320 و در ابتدا، ما واقعا نمی مراقبت از آنچه که در متغیر شد. 654 00:32:00,320 --> 00:32:02,170 >> اما در این مورد، ما در واقع. 655 00:32:02,170 --> 00:32:03,719 من قصد دارم به رشته. 656 00:32:03,719 --> 00:32:05,510 و پس از آن من می توانم پاسخ این هر چیزی که من می خواهم. 657 00:32:05,510 --> 00:32:08,340 من قصد دارم به آن پاسخ نام، می شود از رشته است. 658 00:32:08,340 --> 00:32:10,250 >> و در حال حاضر حتی اگر شما جدید کمی به این، 659 00:32:10,250 --> 00:32:11,984 توجه کنید که من فاقد برخی از جزئیات. 660 00:32:11,984 --> 00:32:13,150 من فراموش نیمه روده بزرگ است. 661 00:32:13,150 --> 00:32:14,400 من نیاز به پایان برساند این فکر. 662 00:32:14,400 --> 00:32:17,480 بنابراین من قصد دارم به حرکت مکان نما من، و ضربه نیمه روده بزرگ وجود دارد. 663 00:32:17,480 --> 00:32:19,130 و آنچه که من فقط انجام داده اند؟ 664 00:32:19,130 --> 00:32:21,440 در این خط از کد، تعداد 5 در حال حاضر، 665 00:32:21,440 --> 00:32:23,799 من خواستار رشته با هیچ ورودی. 666 00:32:23,799 --> 00:32:26,090 بنابراین هیچ سفید کمی وجود دارد جعبه مانند ذخیره بلوک است. 667 00:32:26,090 --> 00:32:28,590 >> من فقط گفت، هی، کامپیوتر، من یک رشته را دریافت کنید. 668 00:32:28,590 --> 00:32:31,390 علامت مساوی واقعا یک علامت مساوی، در هر سه. 669 00:32:31,390 --> 00:32:33,790 این انتساب است اپراتور، که به معنی، 670 00:32:33,790 --> 00:32:37,860 هی، کامپیوتر، حرکت ارزش از سمت راست به سمت چپ. 671 00:32:37,860 --> 00:32:40,480 و در سمت چپ، من که در زیر می. 672 00:32:40,480 --> 00:32:43,580 >> با سلام، کامپیوتر، به من string-- را دنباله ای از کاراکتر. 673 00:32:43,580 --> 00:32:45,637 و پاسخ که نام رشته. 674 00:32:45,637 --> 00:32:47,220 و من حتی نمی باید به آن پاسخ نام. 675 00:32:47,220 --> 00:32:49,970 >> من می توانم از آن تماس، مرسوم، چیزی شبیه به S، 676 00:32:49,970 --> 00:32:52,900 بسیار شبیه به ما من استفاده می شود به پاسخ متغیر من. 677 00:32:52,900 --> 00:32:54,829 اما در حال حاضر من نیاز به انجام کاری با آن. 678 00:32:54,829 --> 00:32:57,370 این امر می تواند احمقانه به سعی کنید کامپایل این کد، در حال اجرا 679 00:32:57,370 --> 00:32:59,410 این برنامه، حتی اگر من گرفتن یک رشته، 680 00:32:59,410 --> 00:33:01,580 به دلیل آن را هنوز فقط رفتن به می گویند سلام جهان. 681 00:33:01,580 --> 00:33:06,140 >> اما اگر من نمی خواهم برای تغییر این. 682 00:33:06,140 --> 00:33:07,940 چرا من این کار؟ 683 00:33:07,940 --> 00:33:11,632 درصد بازدید کنندگان، کاما است. 684 00:33:11,632 --> 00:33:13,090 و این است که کمی مرموز هنوز هم. 685 00:33:13,090 --> 00:33:15,560 >> بنابراین اجازه دهید متغیرهای من روشن تر باشد. 686 00:33:15,560 --> 00:33:17,510 اجازه دهید من نام این نام متغیر. 687 00:33:17,510 --> 00:33:20,230 و بیایید ببینید که اگر ما نمی توانیم کسی را دست انداختن از هم جدا آنچه در اینجا اتفاق می افتد. 688 00:33:20,230 --> 00:33:22,770 >> بنابراین در خط پنج، من گرفتن یک رشته است. 689 00:33:22,770 --> 00:33:25,620 و من ذخیره سازی این رشته، هر کاربر در تایپ 690 00:33:25,620 --> 00:33:28,430 در صفحه کلید خود را، در یک متغیر به نام نام. 691 00:33:28,430 --> 00:33:30,590 و معلوم است که تابع () printf نه تنها 692 00:33:30,590 --> 00:33:34,220 یکی بحث در دو نقل قول ها، یک ورودی در کوتیشن. 693 00:33:34,220 --> 00:33:39,100 >> آن را می توانید دو یا سه و یا بیشتر، از جمله به که دوم یا سوم یا چهارم، 694 00:33:39,100 --> 00:33:42,320 همه نام متغیر هستند، یا به طور خاص ارزش ها، 695 00:33:42,320 --> 00:33:48,610 که شما می خواهید به برق وصل به، به صورت پویا، که رشته در نقل قول. 696 00:33:48,610 --> 00:33:52,110 به عبارت دیگر، آنچه اشتباه خواهد بود با این؟ 697 00:33:52,110 --> 00:33:57,920 اگر من فقط گفت: سلام نام، بک اسلش N، ذخیره فایل من، وارد شده کد من، 698 00:33:57,920 --> 00:34:01,660 و این زد، چه اتفاقی خواهد افتاد؟ 699 00:34:01,660 --> 00:34:05,139 >> آن را فقط می گویند، سلام نام، به معنای واقعی کلمه N-A-M-E، 700 00:34:05,139 --> 00:34:07,900 که نوع احمقانه است چون آن را متفاوت از جهان است. 701 00:34:07,900 --> 00:34:10,400 بنابراین هر چیزی در نقل قول است چه به معنای واقعی کلمه چاپ میشود. 702 00:34:10,400 --> 00:34:12,520 بنابراین اگر من می خواهم به یک حفره یا سوراخ وجود دارد، 703 00:34:12,520 --> 00:34:14,422 من در واقع نیاز به استفاده از برخی از نحو خاص است. 704 00:34:14,422 --> 00:34:17,380 و معلوم است اگر شما خواندن مستندات مربوط به تابع printf، 705 00:34:17,380 --> 00:34:21,320 آن را به شما بگویم که اگر شما استفاده از درصد S، 706 00:34:21,320 --> 00:34:23,920 شما می توانید یک مقدار به شرح زیر جایگزین. 707 00:34:23,920 --> 00:34:27,190 >> پس از یک کاما بعد از آن نقل قول، شما به سادگی 708 00:34:27,190 --> 00:34:29,179 ارسال نام متغیر است که شما می خواهید 709 00:34:29,179 --> 00:34:33,790 به برق وصل به آن فرمت کد، و یا فرمت تصریح، 710 00:34:33,790 --> 00:34:35,469 درصد برای رشته ها. 711 00:34:35,469 --> 00:34:39,190 و در حال حاضر اگر من فایل من ذخیره کرده اید، من رفتن به پایین به ترمینال من. 712 00:34:39,190 --> 00:34:42,870 و من تایپ را رشته، دلیل، دوباره، نام این 713 00:34:42,870 --> 00:34:45,510 فایلی که من قبل از انتخاب string.c است. 714 00:34:45,510 --> 00:34:48,510 >> بنابراین من قصد دارم به را رشته، وارد کنید. 715 00:34:48,510 --> 00:34:51,550 اوه خدای من، در تمام نگاه اشتباهات ما در حال حاضر ساخته شده است. 716 00:34:51,550 --> 00:34:55,540 و این is-- چه، این است که واقعا یک، هفت برنامه شش خط؟ 717 00:34:55,540 --> 00:34:57,790 پس این است که آن را بسیار می به سرعت قریب به اتفاق. 718 00:34:57,790 --> 00:35:00,890 >> این پنجره ترمینال است در حال حاضر فقط regurgitated 719 00:35:00,890 --> 00:35:03,230 تعداد زیادی از پیام های خطا. 720 00:35:03,230 --> 00:35:07,560 مطمئنا، من خطا بیشتر ندارد پیام از من خط کد. 721 00:35:07,560 --> 00:35:08,680 بنابراین آنچه در جریان است؟ 722 00:35:08,680 --> 00:35:10,920 >> خوب، بهترین استراتژی به انجام هر زمان شما 723 00:35:10,920 --> 00:35:13,710 روبرو قریب به اتفاق لیستی از خطاها مانند آن، 724 00:35:13,710 --> 00:35:16,690 است حرکت به عقب، برای فرمان نگاه شما فقط فرار، که در مورد من 725 00:35:16,690 --> 00:35:18,020 است را رشته است. 726 00:35:18,020 --> 00:35:21,630 در چه را انجام داد نگاه کنید، و این که دستور صدای جرنگ جرنگ طولانی، هیچ معامله بزرگ وجود دارد. 727 00:35:21,630 --> 00:35:22,950 >> اما رنگ قرمز بد است. 728 00:35:22,950 --> 00:35:24,750 سبز در تلاش است تا ملایم و مفید است. 729 00:35:24,750 --> 00:35:26,140 اما هنوز هم بد، در این مورد. 730 00:35:26,140 --> 00:35:27,510 اما در آن است بد است؟ 731 00:35:27,510 --> 00:35:31,450 >> String.c، خط پنج، شخصیت پنج. 732 00:35:31,450 --> 00:35:32,930 بنابراین این کنوانسیون فقط شایع است. 733 00:35:32,930 --> 00:35:36,060 چیزی روده بزرگ چیزی به این معنی شماره خط و شماره شخصیت. 734 00:35:36,060 --> 00:35:41,080 خطا، استفاده از اعلام نشده رشته شناسه. 735 00:35:41,080 --> 00:35:42,900 آیا منظور شما این استاندارد در؟ 736 00:35:42,900 --> 00:35:45,530 >> بنابراین، متاسفانه، صدای جرنگ جرنگ در تلاش است تا مفید باشد. 737 00:35:45,530 --> 00:35:46,850 اما این اشتباه است، در این مورد. 738 00:35:46,850 --> 00:35:49,350 نه، صدای جرنگ جرنگ، من استاندارد IO نیست. 739 00:35:49,350 --> 00:35:51,070 من در خط یک معنا بود که، بله. 740 00:35:51,070 --> 00:35:53,420 >> اما خط پنج این یکی در اینجا است. 741 00:35:53,420 --> 00:35:57,040 و صدای جرنگ جرنگ نیست درک S-T-R-من-N-G. 742 00:35:57,040 --> 00:36:01,490 این شناسه اعلام نشده، یک است کلمه آن را فقط تا قبل از هرگز دیده می شود. 743 00:36:01,490 --> 00:36:05,730 و به دلیل C، زبان است ما در حال نوشتن کد در حال حاضر، 744 00:36:05,730 --> 00:36:08,070 کند متغیرها به نام رشته ندارد. 745 00:36:08,070 --> 00:36:11,380 >> آن را ندارد، به طور پیش فرض، پشتیبانی چیزی به نام یک رشته است. 746 00:36:11,380 --> 00:36:16,750 که یک قطعه CS50 از این اصطلاحات مخصوص یک صنف است، اما بسیار معمولی است. 747 00:36:16,750 --> 00:36:18,600 اما من می توانم این را به عنوان زیر را حل کنند. 748 00:36:18,600 --> 00:36:22,090 >> اگر من اضافه کردن یک خط کد به بالا از این برنامه، 749 00:36:22,090 --> 00:36:27,890 شامل CS50.H است که یک فایل دیگر جایی در داخل از CS50 IDE، جایی 750 00:36:27,890 --> 00:36:30,820 بر روی هارد دیسک، پس به صحبت می کنند، از سیستم عامل اوبونتو 751 00:36:30,820 --> 00:36:33,590 که من در حال اجرا، که فایل که است 752 00:36:33,590 --> 00:36:38,740 رفتن به تدریس عامل سیستم چه رشته ای است، فقط 753 00:36:38,740 --> 00:36:41,930 مانند io.h استاندارد فایل است در سیستم عامل که 754 00:36:41,930 --> 00:36:44,430 رفتن به آن را یاد می دهد چه printf است. 755 00:36:44,430 --> 00:36:46,810 >> در واقع، ما شده اند یک پیام بسیار شبیه 756 00:36:46,810 --> 00:36:50,600 اگر IO استاندارد پذیرفته است IO.h و سعی کردم به استفاده از printf است. 757 00:36:50,600 --> 00:36:53,632 بنابراین من قصد دارم به جلو بروید و فقط نگاهی کنترل L به روشن شدن صفحه نمایش است. 758 00:36:53,632 --> 00:36:56,340 یا شما می توانید روشن و نوع آن را فقط پنجره ترمینال روشن است. 759 00:36:56,340 --> 00:36:58,020 اما شما هنوز هم می توانید تماس حرکت در زمان. 760 00:36:58,020 --> 00:37:01,100 >> و من قصد دارم به تکرار را رشته. 761 00:37:01,100 --> 00:37:03,660 عبور از انگشتان دست من این زمان، وارد کنید. 762 00:37:03,660 --> 00:37:05,380 اوه خدای من، آن را کار کرده است. 763 00:37:05,380 --> 00:37:09,280 آن را به من نشان می دهد یک دستور مرموز طولانی این چیزی است که را از طریق صدای جرنگ جرنگ تولید، 764 00:37:09,280 --> 00:37:10,460 اما هیچ پیغام خطا. 765 00:37:10,460 --> 00:37:12,460 پس متوجه، حتی اگر شما ممکن است به طور کامل دریافت 766 00:37:12,460 --> 00:37:14,480 غرق با تعداد پیام های خطا، 767 00:37:14,480 --> 00:37:17,540 آن را فقط ممکن این آبشاری آزار دهنده اثر، که در آن صدای جرنگ جرنگ را درک نمی 768 00:37:17,540 --> 00:37:19,620 یک چیز، که به این معنی است پس از آن کند کلمه بعدی را درک کنند، 769 00:37:19,620 --> 00:37:20,560 و یا خط بعدی. 770 00:37:20,560 --> 00:37:22,850 و پس از آن فقط در کد خود چوک. 771 00:37:22,850 --> 00:37:24,440 اما ثابت ممکن است ساده است. 772 00:37:24,440 --> 00:37:27,822 و به این ترتیب همیشه در تمرکز خط اول از خروجی. 773 00:37:27,822 --> 00:37:29,530 و اگر شما نمی آن را درک، فقط نگاه 774 00:37:29,530 --> 00:37:32,480 برای کلمات کلیدی که ممکن است سرنخ، و شماره ی خط، 775 00:37:32,480 --> 00:37:34,650 و شخصیت، که در آن که اشتباه ممکن است. 776 00:37:34,650 --> 00:37:40,328 >> حالا من به جلو بروید و تایپ نقطه بریده بریده، رشته، وارد کنید. 777 00:37:40,328 --> 00:37:44,340 HM، آن را نمی گویم سلام هر چیزی. 778 00:37:44,340 --> 00:37:46,210 چرا؟ 779 00:37:46,210 --> 00:37:48,170 خب، یاد، که در آن است در حال اجرا؟ 780 00:37:48,170 --> 00:37:53,730 >> آن را احتمالا در حال حاضر گیر در یک حلقه، اگر شما خواهد شد، در خط شش، 781 00:37:53,730 --> 00:37:56,950 به دلیل دریافت رشته های طراحی، نوشته شده توسط کارکنان CS50، 782 00:37:56,950 --> 00:38:00,350 به معنای واقعی کلمه به معنای فقط نشستن انتظار وجود دارد، و در انتظار، 783 00:38:00,350 --> 00:38:01,850 و در انتظار برای یک رشته است. 784 00:38:01,850 --> 00:38:03,792 همه رشته منظور ما ورودی بشر است. 785 00:38:03,792 --> 00:38:04,500 بنابراین شما می دانید چه چیزی؟ 786 00:38:04,500 --> 00:38:05,166 اجازه بدهید به جلو. 787 00:38:05,166 --> 00:38:08,704 و فقط از روی هوس، به من اجازه نام من ... است، دیوید تایپ می کنید، وارد کنید. 788 00:38:08,704 --> 00:38:10,120 در حال حاضر من یک برنامه پویا تر داشته باشد. 789 00:38:10,120 --> 00:38:11,240 آن را گفت، سلام دیوید. 790 00:38:11,240 --> 00:38:16,280 >> اگر من پیش بروید و این کار را دوباره اجرا شود، اجازه دهید می گویند نام Zamila، را وارد کنید. 791 00:38:16,280 --> 00:38:17,940 و در حال حاضر ما باید یک برنامه پویا. 792 00:38:17,940 --> 00:38:19,380 من سخت جهان رمزی نیست. 793 00:38:19,380 --> 00:38:21,760 من سخت کدگذاری نمی نام، و یا دیوید، و یا Zamila. 794 00:38:21,760 --> 00:38:25,350 >> در حال حاضر آن بسیار بیشتر شبیه به برنامه ما می دانیم، که در آن اگر آن را ورودی، 795 00:38:25,350 --> 00:38:27,870 آن را به تولید خروجی کمی متفاوت است. 796 00:38:27,870 --> 00:38:31,020 در حال حاضر، این است که بهترین نیست تجربه کاربر، و یا UX. 797 00:38:31,020 --> 00:38:33,000 من این برنامه را اجرا کنید. 798 00:38:33,000 --> 00:38:35,830 >> من نمی دانم که چه من قرار انجام دهید، مگر اینکه من در واقع در نگاه 799 00:38:35,830 --> 00:38:37,290 و یا به یاد داشته باشید کد منبع. 800 00:38:37,290 --> 00:38:39,640 بنابراین اجازه دهید تا کاربر تجربه کمی بهتر 801 00:38:39,640 --> 00:38:41,240 با ساده ترین از همه چیز. 802 00:38:41,240 --> 00:38:44,782 به من اجازه رفتن به این برنامه، و به سادگی تابع () printf است. 803 00:38:44,782 --> 00:38:48,870 >> و اجازه دهید من به جلو و می گویند نام، روده بزرگ، و یک فضا، و سپس یک نقطه ویرگول. 804 00:38:48,870 --> 00:38:51,170 و فقط برای ضربات، هیچ واکنش N. 805 00:38:51,170 --> 00:38:52,980 و این عمدی، چون من نمی خواهم 806 00:38:52,980 --> 00:38:54,590 اعلان را به حرکت به خط بعدی. 807 00:38:54,590 --> 00:38:58,800 >> من می خواهم به، به جای آن، انجام این کار، رشته به کامپایل مجدد کد من به ماشین جدید 808 00:38:58,800 --> 00:39:00,980 کد نقطه بریده بریده رشته است. 809 00:39:00,980 --> 00:39:02,460 آه، این است که بسیار زیباتر است. 810 00:39:02,460 --> 00:39:05,780 در حال حاضر من می دانند چه کامپیوتر می خواهد من به کار، آن را یک نام بدهید. 811 00:39:05,780 --> 00:39:10,020 >> بنابراین من قصد دارم به جلو بروید و تایپ کنید در راب، را وارد کنید، و سلام، راب. 812 00:39:10,020 --> 00:39:13,640 بنابراین، درک، این است که هنوز، در پایان از روز، تنها یک برنامه نه خط. 813 00:39:13,640 --> 00:39:15,090 اما ما این مراحل نوزاد گرفته شده است. 814 00:39:15,090 --> 00:39:18,380 >> ما یک خط نوشت که ما با آن آشنا، تابع () printf، سلام جهان بود. 815 00:39:18,380 --> 00:39:19,980 پس ما یک کمی از آن واگرد. 816 00:39:19,980 --> 00:39:21,560 و ما در واقع رشته استفاده می شود. 817 00:39:21,560 --> 00:39:23,362 و ما که ارزش را در یک متغیر پرتاب کرد. 818 00:39:23,362 --> 00:39:26,070 و سپس ما جلو رفتم و بهبود یافته آن را بیشتر با خط سوم. 819 00:39:26,070 --> 00:39:29,220 و این روند تکراری نوشتن نرم افزار واقعا کلیدی است. 820 00:39:29,220 --> 00:39:33,420 در CS50، و در زندگی به طور کلی، شما باید به طور کلی نشستن نیست، 821 00:39:33,420 --> 00:39:36,800 یک برنامه را در ذهن، و سعی کنید نوشتن طیف چیز لعنتی همه در یک بار. 822 00:39:36,800 --> 00:39:40,810 >> آن خواهد شد، به ناچار، در نتیجه در راه خطاهای بیشتر از ما خودمان را در اینجا دیدم. 823 00:39:40,810 --> 00:39:44,070 حتی من، به این روز، به طور مداوم را دیگر اشتباهات احمقانه، 824 00:39:44,070 --> 00:39:47,480 اشتباهات در واقع سخت تر که سخت تر به کشف کردن. 825 00:39:47,480 --> 00:39:52,095 اما شما اشتباه بیشتر را خط کد شما ارسال همه در یک بار. 826 00:39:52,095 --> 00:39:54,220 و این عمل، ارسال نامه کمی از کد 827 00:39:54,220 --> 00:39:57,930 که شما با آن راحت هستید، تدوین آن، آن را اجرا کنید، آن را تست به طور کلی، 828 00:39:57,930 --> 00:40:01,370 سپس حرکت کنین تا درست مثل ما نگه داشته لایه بندی و لایه بندی در هفته گذشته، 829 00:40:01,370 --> 00:40:04,190 ساخت و ساز از چیزی بسیار ساده برای چیزی پیچیده تر، 830 00:40:04,190 --> 00:40:05,200 همین کار را در اینجا. 831 00:40:05,200 --> 00:40:08,500 هنوز ننشینید، و سعی کنید به ارسال به کل مشکل است. 832 00:40:08,500 --> 00:40:10,780 در واقع این مراحل نوزاد است. 833 00:40:10,780 --> 00:40:15,100 >> در حال حاضر، رشته ها همه نیست که نزد خود مفید است. 834 00:40:15,100 --> 00:40:18,210 ما در واقع، ایده آل، مانند به باید چیز دیگری در جعبه ابزار ما است. 835 00:40:18,210 --> 00:40:20,990 بنابراین اجازه دهید در واقع انجام که دقیقا. 836 00:40:20,990 --> 00:40:24,900 >> اجازه دهید به جلو و شلاق تا یک برنامه کمی متفاوت است. 837 00:40:24,900 --> 00:40:28,320 و ما این int.c پاسخ، برای عدد صحیح است. 838 00:40:28,320 --> 00:40:30,870 من قصد دارم به، به طور مشابه، شامل CS550.h. 839 00:40:30,870 --> 00:40:33,060 من قصد دارم به شامل استاندارد IO. 840 00:40:33,060 --> 00:40:36,630 و این که به صورت کاملا رایج در این چند روز اول از کلاس. 841 00:40:36,630 --> 00:40:39,050 >> و من قصد دارم به آماده خودم را با یک تابع اصلی. 842 00:40:39,050 --> 00:40:43,370 و در حال حاضر به جای گرفتن یک رشته، اجازه دهید به جلو و یک int. 843 00:40:43,370 --> 00:40:49,285 اجازه دهید آن را من، و پاسخ آن را دریافت هوشمند، پرانتز بسته، نیمه روده بزرگ است. 844 00:40:49,285 --> 00:40:51,410 و در حال حاضر اجازه دهید انجام کاری با آن، printf است. 845 00:40:51,410 --> 00:40:56,190 >> بیایید می گویند چیزی شبیه سلام، بک اسلش نفر، کاما من. 846 00:40:56,190 --> 00:41:00,010 بنابراین من بسیار تقلید آنچه که من فقط یک لحظه پیش. 847 00:41:00,010 --> 00:41:01,660 من یک حفره یا سوراخ در اینجا. 848 00:41:01,660 --> 00:41:05,150 من من در اینجا با کاما از هم اند، چون من می خواهم به برق وصل من به آن حفره یا سوراخ. 849 00:41:05,150 --> 00:41:07,250 >> بنابراین اجازه دهید پیش بروید و سعی کنید تدوین این برنامه است. 850 00:41:07,250 --> 00:41:10,060 فایل int.c. نام 851 00:41:10,060 --> 00:41:12,920 بنابراین من قصد دارم برای گفتن، را از نوع int، را وارد کنید. 852 00:41:12,920 --> 00:41:16,420 اوه خدای من، اما هیچ معامله بزرگ، درست است؟ 853 00:41:16,420 --> 00:41:17,230 یک اشتباه وجود دارد. 854 00:41:17,230 --> 00:41:19,810 >> یک اشتباه نحوی وجود دارد در اینجا به طوری که این برنامه نمی تواند 855 00:41:19,810 --> 00:41:25,460 در داخل int.c، خط وارد هفت، شخصیت 27، فرمت خطا 856 00:41:25,460 --> 00:41:28,400 نوع char مشخص ستاره، هر آنچه که است. 857 00:41:28,400 --> 00:41:30,020 اما نوع آرگومان int است. 858 00:41:30,020 --> 00:41:33,110 >> بنابراین در اینجا، بیش از حد، ما قصد داریم to-- حتی اگر امروز بسیاری از مواد است، 859 00:41:33,110 --> 00:41:35,710 ما قصد داریم به شما پایمال با کاملا هر ویژگی از C، 860 00:41:35,710 --> 00:41:38,070 و برنامه نویسی به طور کلی، فقط در این چند هفته اول. 861 00:41:38,070 --> 00:41:40,400 بنابراین وجود اغلب برای رفتن به اصطلاحات مخصوص یک صنف که با آن شما آشنا نیست. 862 00:41:40,400 --> 00:41:43,350 و، در واقع، ستاره کاراکتر چیزی است ما قصد داریم تا دوباره به 863 00:41:43,350 --> 00:41:44,830 در یک هفته یا زمان دو است. 864 00:41:44,830 --> 00:41:47,530 >> اما در حال حاضر، اجازه دهید اگر ما می توانید ببینید تجزیه کلمات که آشنا هستند. 865 00:41:47,530 --> 00:41:50,750 Formats-- بنابراین ما فرمت شنیده تعیین، کد فرمت قبل از. 866 00:41:50,750 --> 00:41:51,840 که آشنا. 867 00:41:51,840 --> 00:41:53,840 Type-- اما استدلال نوع int هستند. 868 00:41:53,840 --> 00:41:55,980 یک دقیقه صبر کنید، من از نوع int است. 869 00:41:55,980 --> 00:41:59,230 >> شاید درصد در واقع تا به برخی از معنای تعریف شده است. 870 00:41:59,230 --> 00:42:00,230 و، در واقع، آن را ندارد. 871 00:42:00,230 --> 00:42:03,101 یک عدد صحیح، اگر شما می خواهید تابع () printf به جایگزین آن، 872 00:42:03,101 --> 00:42:05,350 شما در واقع مجبور به استفاده از فرمت تصریح متفاوت است. 873 00:42:05,350 --> 00:42:06,890 و شما نمی دانید که این مگر اینکه کسی به شما گفت، 874 00:42:06,890 --> 00:42:07,973 و یا شما آن را قبل انجام داده بود. 875 00:42:07,973 --> 00:42:10,490 اما درصد من چه است می توان معمولا استفاده می شود 876 00:42:10,490 --> 00:42:12,240 در تابع () printf برای متصل کردن در یک عدد صحیح. 877 00:42:12,240 --> 00:42:14,920 شما همچنین می توانید درصد استفاده D برای یک عدد صحیح دهدهی. 878 00:42:14,920 --> 00:42:16,490 اما من در اینجا زیبا و ساده است. 879 00:42:16,490 --> 00:42:17,590 بنابراین ما به سراغ آن میرویم. 880 00:42:17,590 --> 00:42:21,160 >> حالا اجازه دهید من به جلو و تکرار INT ساخت، وارد کنید. 881 00:42:21,160 --> 00:42:23,328 این خوب است، بدون خطا. 882 00:42:23,328 --> 00:42:27,260 نقطه بریده بریده OK int--، تجربه کاربر بد، چون من به خودم گفتم نمی 883 00:42:27,260 --> 00:42:27,760 چه باید بکنید. 884 00:42:27,760 --> 00:42:28,426 اما این خوب است. 885 00:42:28,426 --> 00:42:29,480 من در ابتلا به سرعت. 886 00:42:29,480 --> 00:42:36,260 >> و در حال حاضر من به جلو و تایپ دیوید، OK، Zamila، راب. 887 00:42:36,260 --> 00:42:37,820 خوب، پس این چیز خوبی است. 888 00:42:37,820 --> 00:42:41,710 در این زمان، من با استفاده از یک تابع، یک قطعه پازل، به نام روی int. 889 00:42:41,710 --> 00:42:44,230 و آن را تبدیل out-- و خواهیم این بعد از آن در term-- ببینید 890 00:42:44,230 --> 00:42:47,730 CS50 کارکنان اجرا است دریافت رشته در چنین راهی 891 00:42:47,730 --> 00:42:50,350 که آن را تنها از لحاظ جسمی دریافت یک رشته را برای شما. 892 00:42:50,350 --> 00:42:54,340 >> از آن شده است INT مطلع اجرا شده در به گونه ای که آن را تنها 893 00:42:54,340 --> 00:42:55,590 از یک عدد صحیح برای شما. 894 00:42:55,590 --> 00:42:57,830 و اگر شما، انسان، همکاری نکنید، آن را 895 00:42:57,830 --> 00:43:00,590 به معنای واقعی کلمه فقط رفتن به می گویند دوباره سعی کنید، سعی مجدد، دوباره سعی کنید، 896 00:43:00,590 --> 00:43:05,200 به معنای واقعی کلمه نشسته وجود دارد حلقه، تا زمانی که شما را با برخی تعداد جادویی ملزم، 897 00:43:05,200 --> 00:43:07,670 مانند 50، و سلام 50. 898 00:43:07,670 --> 00:43:11,440 >> و یا اگر ما این را دوباره اجرا و نوع در 42، سلام 42. 899 00:43:11,440 --> 00:43:15,750 و به این ترتیب تابع get INT در داخل آن قطعه پازل 900 00:43:15,750 --> 00:43:19,050 منطق کافی است، فکر به اندازه کافی، به شکل، چه چیزی یک کلمه است؟ 901 00:43:19,050 --> 00:43:20,330 و چه تعداد است؟ 902 00:43:20,330 --> 00:43:23,165 فقط پذیرش، در نهایت، اعداد. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> پس از آن می رسد که این است که همه رسا نیست. 905 00:43:30,230 --> 00:43:30,910 تا حالا. 906 00:43:30,910 --> 00:43:33,690 بنابراین، ماهواره، آخرین باری که ما رفت خیلی سریع 907 00:43:33,690 --> 00:43:38,320 به اجرای بازی ها، و انیمیشن، و آثار هنری در ابتدا. 908 00:43:38,320 --> 00:43:42,260 و در اینجا، ما در حال محتوای با سلام جهان، و سلام 50. 909 00:43:42,260 --> 00:43:43,696 >> این همه که الهام بخش است. 910 00:43:43,696 --> 00:43:46,070 و، در واقع، این اولین نمونه، به زمان نیاز 911 00:43:46,070 --> 00:43:47,510 تا سطح شیب دار در شور و هیجان. 912 00:43:47,510 --> 00:43:49,854 اما ما باید خیلی بیشتر کنترل در حال حاضر، در واقع. 913 00:43:49,854 --> 00:43:51,770 و ما در حال رفتن به بسیار به سرعت شروع به لایه بندی 914 00:43:51,770 --> 00:43:53,870 در بالای این شکلهای هندسی اولیه اساسی است. 915 00:43:53,870 --> 00:43:56,370 >> اما در ابتدا، اجازه دهید درک چه محدودیت هستند. 916 00:43:56,370 --> 00:43:58,620 در واقع، یکی از چیزهایی که خراش می کند به راحتی نمی 917 00:43:58,620 --> 00:44:00,990 اجازه دهید ما واقعا نگاه در زیر هود، 918 00:44:00,990 --> 00:44:03,740 و درک آنچه که یک کامپیوتر، آنچه در آن می توانید انجام دهید، 919 00:44:03,740 --> 00:44:05,250 و چه محدودیت های آن می باشد. 920 00:44:05,250 --> 00:44:08,580 و، در واقع، که عدم درک، به طور بالقوه، در دراز مدت 921 00:44:08,580 --> 00:44:12,520 می توانید به نوشتن mistakes-- خود ما منجر شود اشکالات، نوشتن نرم افزار های نا امن که 922 00:44:12,520 --> 00:44:13,880 می شود در برخی از راه های هک شده. 923 00:44:13,880 --> 00:44:17,130 >> بنابراین اجازه دهید برخی از مراحل به سمت درک این که کمی بهتر شده 924 00:44:17,130 --> 00:44:19,710 راه، می گویند، مثال زیر. 925 00:44:19,710 --> 00:44:23,550 من قصد دارم به جلو بروید و پیاده سازی واقعی سریع یک برنامه به نام جمع کننده. 926 00:44:23,550 --> 00:44:25,134 مانند، اجازه دهید برخی از اعداد اضافه کردن با هم. 927 00:44:25,134 --> 00:44:27,800 و من قصد دارم به کد برخی از گوشه در اینجا، و فقط کپی و چسباندن 928 00:44:27,800 --> 00:44:30,270 که در آن من قبل از آن بود، فقط بنابراین ما می توانیم رفتن را زودتر دریافت. 929 00:44:30,270 --> 00:44:33,090 بنابراین در حال حاضر من آغاز کردم اساسی از برنامه ای به نام جمع کننده. 930 00:44:33,090 --> 00:44:34,670 >> و اجازه دهید به جلو و انجام این کار. 931 00:44:34,670 --> 00:44:38,680 من قصد دارم به جلو بروید و مثلا intx می شود از نوع int است. 932 00:44:38,680 --> 00:44:39,430 و شما می دانید چه؟ 933 00:44:39,430 --> 00:44:40,990 بیایید یک تجربه کاربری بهتر. 934 00:44:40,990 --> 00:44:45,740 >> بنابراین اجازه دهید فقط می گویند x است، و به طور موثر سریع کاربر به ما X را. 935 00:44:45,740 --> 00:44:50,600 و سپس اجازه دهید من به جلو و می گویند، تابع () printf چگونه در مورد y است، این بار انتظار 936 00:44:50,600 --> 00:44:53,140 دو مقدار از کاربر. 937 00:44:53,140 --> 00:44:59,759 و سپس اجازه دهید فقط به جلو و مثلا، تابع () printf، از مجموع x و y است. 938 00:44:59,759 --> 00:45:01,300 و در حال حاضر من نمی خواهم به انجام درصد است. 939 00:45:01,300 --> 00:45:09,080 من می خواهم به درصد من، بک اسلش N، و سپس در مقدار جمع وصل. 940 00:45:09,080 --> 00:45:10,620 >> پس چگونه می توانم در مورد انجام این کار؟ 941 00:45:10,620 --> 00:45:11,270 میدونی چیه؟ 942 00:45:11,270 --> 00:45:12,840 من می دانم که چگونه به استفاده از متغیرهای. 943 00:45:12,840 --> 00:45:15,140 اجازه بدهید من فقط اعلام یک جدید، INT Z. 944 00:45:15,140 --> 00:45:16,770 >> و من قصد دارم به یک حدس است. 945 00:45:16,770 --> 00:45:21,470 اگر نشانه های برابر در این وجود دارد زبان، شاید من فقط می توانید انجام دهید X به علاوه Y، 946 00:45:21,470 --> 00:45:23,660 تا زمانی که من پایان من با یک نقطه ویرگول فکر کرده اید؟ 947 00:45:23,660 --> 00:45:28,170 در حال حاضر من تماس می توانید به پایین در اینجا، به برق وصل Z، پایان این فکر با نیمه روده بزرگ است. 948 00:45:28,170 --> 00:45:33,160 و اجازه دهید در حال حاضر، اگر این سلسله ای از X lines-- است از نوع int است. 949 00:45:33,160 --> 00:45:34,770 Y است از نوع int است. 950 00:45:34,770 --> 00:45:37,980 >> اضافه کردن x و y، ذخیره ارزش در z-- پس، دوباره، به یاد داشته باشید از علامت مساوی 951 00:45:37,980 --> 00:45:38,560 برابر نیست. 952 00:45:38,560 --> 00:45:41,100 این انتساب از راست به چپ است. 953 00:45:41,100 --> 00:45:45,180 و اجازه دهید نسخه قابل چاپ کردن که مجموع x و y است به معنای واقعی کلمه Z نیست، 954 00:45:45,180 --> 00:45:46,830 اما آنچه در داخل Z است. 955 00:45:46,830 --> 00:45:50,090 بنابراین اجازه دهید جمع کننده - خوب، بدون اشتباهات این زمان. 956 00:45:50,090 --> 00:45:53,030 نقطه بریده بریده جمع کننده، وارد کنید، X در حال رفتن به 1. 957 00:45:53,030 --> 00:45:55,380 >> Y است برای رفتن به 2. 958 00:45:55,380 --> 00:45:58,964 و مجموع x و y 3 است. 959 00:45:58,964 --> 00:46:00,130 به طوری که همه خوب هستند و خوب است. 960 00:46:00,130 --> 00:46:03,260 >> بنابراین شما می توانید که ریاضی تصور باید در یک برنامه مثل این کار می کنند. 961 00:46:03,260 --> 00:46:04,040 اما میدونی چیه؟ 962 00:46:04,040 --> 00:46:06,904 آیا این متغیر، خط 12، حتی لازم است؟ 963 00:46:06,904 --> 00:46:09,820 شما لازم نیست که در عادت از فقط ذخیره سازی همه چیز در متغیرهای 964 00:46:09,820 --> 00:46:10,980 فقط به خاطر اینکه شما می توانید. 965 00:46:10,980 --> 00:46:13,550 و، در واقع، آن را به طور کلی طراحی بد در نظر گرفته 966 00:46:13,550 --> 00:46:18,100 اگر شما در حال ایجاد یک متغیر، به نام Z در این مورد، ذخیره سازی چیزی در آن، 967 00:46:18,100 --> 00:46:21,390 و پس از آن بلافاصله استفاده از آن، اما هرگز دوباره. 968 00:46:21,390 --> 00:46:24,700 چرا به چیزی به نام مانند Z اگر شما به معنای واقعی کلمه هستید 969 00:46:24,700 --> 00:46:26,770 قصد استفاده از آن چیزی تنها یک بار، و غیره 970 00:46:26,770 --> 00:46:29,380 پروگزیمال به جایی که شما ایجاد آن را در وهله اول، 971 00:46:29,380 --> 00:46:31,052 از نظر خط کد بسیار نزدیک؟ 972 00:46:31,052 --> 00:46:31,760 بنابراین شما می دانید چه چیزی؟ 973 00:46:31,760 --> 00:46:34,480 معلوم می شود که C بسیار انعطاف پذیر است. 974 00:46:34,480 --> 00:46:36,586 اگر من در واقع می خواهند به پلاگین در مقادیر در اینجا، 975 00:46:36,586 --> 00:46:38,210 من لازم نیست به اعلام یک متغیر جدید. 976 00:46:38,210 --> 00:46:41,680 من فقط می تواند پلاگین در X به علاوه Y، چون C درک 977 00:46:41,680 --> 00:46:43,390 حساب، و عملگرهای ریاضی. 978 00:46:43,390 --> 00:46:47,140 >> بنابراین من به سادگی می توان گفت، این ریاضی، X به علاوه Y، هر آنچه که آن ارزش ها هستند، 979 00:46:47,140 --> 00:46:50,780 پلاگین نتیجه عدد صحیح را در این رشته. 980 00:46:50,780 --> 00:46:53,730 بنابراین این ممکن است، هر چند تنها یک خط کوتاه تر، 981 00:46:53,730 --> 00:46:58,480 یک طراحی بهتر، یک برنامه بهتر است، چرا که کد کمتر وجود دارد، بنابراین 982 00:46:58,480 --> 00:46:59,921 کمتر برای من به درک. 983 00:46:59,921 --> 00:47:01,920 و آن را نیز فقط پاک کن، تا آنجا که ما نه 984 00:47:01,920 --> 00:47:04,620 معرفی کلمات جدید، علامت جدید، مانند Z، 985 00:47:04,620 --> 00:47:07,510 حتی اگر آنها واقعا نمی خدمت از حد از یک هدف. 986 00:47:07,510 --> 00:47:12,890 >> متاسفانه، ریاضی است که گاهی اوقات قابل اعتماد. 987 00:47:12,890 --> 00:47:15,270 اجازه دهید به جلو و انجام این کار. 988 00:47:15,270 --> 00:47:18,200 من قصد دارم به جلو بروید در حال حاضر و به شرح زیر است. 989 00:47:18,200 --> 00:47:27,650 >> اجازه دهید از printf، درصد من، به علاوه درصد من، باید درصد من، بک اسلش نفر باشد. 990 00:47:27,650 --> 00:47:32,240 و من قصد دارم به انجام this-- xyx به علاوه Y. 991 00:47:32,240 --> 00:47:34,821 بنابراین من فقط رفتن به بازنویسی این کمی متفاوت است. 992 00:47:34,821 --> 00:47:36,320 اجازه بدهید من فقط انجام یک بررسی سلامت عقل سریع. 993 00:47:36,320 --> 00:47:37,986 باز هم، اجازه دهید به جلو از خودمان نیست. 994 00:47:37,986 --> 00:47:41,420 را جمع کننده، نقطه جمع کننده بریده بریده. 995 00:47:41,420 --> 00:47:44,950 * 1 است، y است 2، 1 به همراه 2 3. 996 00:47:44,950 --> 00:47:45,870 به طوری که خوب. 997 00:47:45,870 --> 00:47:49,060 اما اجازه دهید در حال حاضر این پیچیده کمی، و ایجاد یک فایل جدید. 998 00:47:49,060 --> 00:47:53,350 >> من قصد دارم به پاسخ این یکی، می گویند، نوع داده int، جمع اعداد صحیح است. 999 00:47:53,350 --> 00:47:55,980 اجازه دهید من شروع به جایی که من چند لحظه پیش بود. 1000 00:47:55,980 --> 00:47:57,770 اما در حال حاضر اجازه دهید چند خط دیگر. 1001 00:47:57,770 --> 00:48:03,430 اجازه دهید من به جلو و زیر را انجام دهید، تابع () printf، درصد من، منهای درصد من، 1002 00:48:03,430 --> 00:48:08,959 درصد من، کاما X، کاما YX منهای y است. 1003 00:48:08,959 --> 00:48:10,750 بنابراین من کمی انجام ریاضی مختلف وجود دارد. 1004 00:48:10,750 --> 00:48:11,624 اجازه دهید یکی دیگر. 1005 00:48:11,624 --> 00:48:16,610 بنابراین درصد من بار درصد من درصد من، بک اسلش نفر است. 1006 00:48:16,610 --> 00:48:21,430 بیایید پلاگین در x و y و زمان X Y. 1007 00:48:21,430 --> 00:48:24,530 ما ستاره در استفاده کامپیوتر خود را برای بار. 1008 00:48:24,530 --> 00:48:26,390 >> شما X استفاده کنید. X است نام متغیر است. 1009 00:48:26,390 --> 00:48:28,270 شما با استفاده از ستاره برای ضرب. 1010 00:48:28,270 --> 00:48:29,020 بیایید یک بیشتر انجام دهد. 1011 00:48:29,020 --> 00:48:34,580 تابع () printf درصد من، تقسیم توسط درصد من، درصد من است، 1012 00:48:34,580 --> 00:48:40,460 N اسلش. XY تقسیم بر y-- بنابراین شما با استفاده از اسلش در C 1013 00:48:40,460 --> 00:48:41,502 به انجام تقسیم. 1014 00:48:41,502 --> 00:48:42,460 و اجازه دهید یکی دیگر. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 باقی مانده از درصد من، تقسیم توسط درصد من، درصد من است. 1017 00:48:55,240 --> 00:48:59,550 xy-- و در حال حاضر باقی مانده همان چیزی است که بیش از سمت چپ. 1018 00:48:59,550 --> 00:49:02,980 هنگامی که شما سعی می کنید تقسیم یک مخرج را به یک صورت کسر، 1019 00:49:02,980 --> 00:49:05,570 چقدر بیش از سمت چپ که شما نمی تواند تقسیم شود؟ 1020 00:49:05,570 --> 00:49:07,910 >> بنابراین است که واقعا وجود ندارد، لزوما، یک نماد 1021 00:49:07,910 --> 00:49:09,470 ما در مدرسه برای این استفاده می شود. 1022 00:49:09,470 --> 00:49:13,830 اما در C. شما می توانید می گویند X پیمانه Y، که در آن 1023 00:49:13,830 --> 00:49:18,000 این علامت درصد در این context-- اشتباه در زمانی که شما در داخل هستید 1024 00:49:18,000 --> 00:49:20,170 از علامت های نقل قول، در داخل تابع () printf، درصد 1025 00:49:20,170 --> 00:49:21,830 به عنوان فرمت تصریح استفاده می شود. 1026 00:49:21,830 --> 00:49:25,420 >> هنگام استفاده از درصد در خارج از که در یک عبارت ریاضی، 1027 00:49:25,420 --> 00:49:29,910 آن اپراتور برای مدولار arithmetic-- برای اهداف ما 1028 00:49:29,910 --> 00:49:33,650 در اینجا، فقط به این معنی است، آنچه که باقی مانده از X تقسیم بر Y؟ 1029 00:49:33,650 --> 00:49:36,130 بنابراین x با y تقسیم X بریده بریده y است. 1030 00:49:36,130 --> 00:49:38,220 باقی مانده از X تقسیم بر Y چیست؟ 1031 00:49:38,220 --> 00:49:41,780 این X Y وزارت دفاع، به عنوان یک برنامه نویس می گویند. 1032 00:49:41,780 --> 00:49:48,300 >> بنابراین اگر من هیچ اشتباهات در اینجا، به من اجازه جلو بروید و نوع داده int، جمع، زیبا، 1033 00:49:48,300 --> 00:49:50,010 و نوع داده int بریده بریده نقطه. 1034 00:49:50,010 --> 00:49:55,270 و اجازه دهید به جلو و انجام دهید، اجازه دهید بگویم، 1، 10. 1035 00:49:55,270 --> 00:49:58,390 همه حق است، 1 به علاوه 10 11، چک. 1036 00:49:58,390 --> 00:50:01,240 1 منهای 10 منفی 9، تیک بزنید. 1037 00:50:01,240 --> 00:50:03,420 >> 1 بار 10 است 10، چک. 1038 00:50:03,420 --> 00:50:07,090 1 تقسیم بر 10 is-- OK، ما که جست و خیز. 1039 00:50:07,090 --> 00:50:09,480 باقی مانده از 1 تقسیم بر 10 1 است. 1040 00:50:09,480 --> 00:50:10,680 این درست است. 1041 00:50:10,680 --> 00:50:12,630 اما یک اشکال در اینجا وجود دارد. 1042 00:50:12,630 --> 00:50:15,390 >> بنابراین یکی از من قرار من دست، درست نیست. 1043 00:50:15,390 --> 00:50:16,670 منظور من، آن را نزدیک به 0. 1044 00:50:16,670 --> 00:50:20,670 1 تقسیم بر 10، شما می دانید، اگر ما برش برخی گوشه و کنار، مطمئن، آن را به صفر است. 1045 00:50:20,670 --> 00:50:28,050 اما واقعا باید 1/10، 0.1 یا 0.10، 0.1000، و یا غیره. 1046 00:50:28,050 --> 00:50:30,600 >> این باید واقعا صفر باشد. 1047 00:50:30,600 --> 00:50:35,990 خب، معلوم است که کامپیوتر است انجام به معنای واقعی کلمه چیزی است که ما آن را گفت به انجام. 1048 00:50:35,990 --> 00:50:39,460 ما در حال انجام ریاضی مانند x تقسیم بر y است. 1049 00:50:39,460 --> 00:50:44,680 و هر دو x و y، در خطوط کد پیش از آن، اعداد صحیح هستند. 1050 00:50:44,680 --> 00:50:50,440 >> علاوه بر این، در خط 15، ما گفتن تابع () printf، هی، تابع () printf پلاگین در 1051 00:50:50,440 --> 00:50:54,230 یک عدد صحیح، پلاگین در یک عدد صحیح، پلاگین در integer-- به طور خاص 1052 00:50:54,230 --> 00:50:57,580 X، Y و سپس، سپس x تقسیم بر y است. x و y نوع داده int هستند. 1053 00:50:57,580 --> 00:50:59,060 ما خوب وجود دارد. 1054 00:50:59,060 --> 00:51:01,250 >> اما آنچه X تقسیم بر ایکس؟ 1055 00:51:01,250 --> 00:51:06,790 X تقسیم بر Y باید باشد، ریاضی، 1/10، و یا 0.1، 1056 00:51:06,790 --> 00:51:11,600 که یک عدد حقیقی، یک عدد حقیقی است داشتن، به طور بالقوه، یک نقطه اعشار. 1057 00:51:11,600 --> 00:51:13,230 آن را یک عدد صحیح است. 1058 00:51:13,230 --> 00:51:18,290 >> اما آنچه نزدیک ترین است عدد صحیح به 1/10 یا 0.1؟ 1059 00:51:18,290 --> 00:51:21,114 آره، آن نوع از صفر است. 1060 00:51:21,114 --> 00:51:22,030 0.1 است مثل این است. 1061 00:51:22,030 --> 00:51:22,890 و 1 تا این حد است. 1062 00:51:22,890 --> 00:51:25,870 بنابراین 01/10 به نزدیک تر است 0 از آن به یک است. 1063 00:51:25,870 --> 00:51:30,800 >> و بنابراین، آنچه C در حال انجام است برای us-- نوع چرا که ما آن گفت to-- 1064 00:51:30,800 --> 00:51:32,600 است کوتاه کردن که عدد صحیح است. 1065 00:51:32,600 --> 00:51:40,540 این طرح در حال ارزش، که دوباره است تصور می شود چیزی شبیه به 0.1000، 1066 00:51:40,540 --> 00:51:41,800 0 و غیره. 1067 00:51:41,800 --> 00:51:45,320 و آن را کوتاه کردن همه چیز بعد از نقطه اعشار 1068 00:51:45,320 --> 00:51:47,510 به طوری که همه از این مسائل، به دلیل آن را نمی کند 1069 00:51:47,510 --> 00:51:51,910 جا در مفهوم یک عدد صحیح، که فقط یک عدد مانند منفی 1، 0، 1، 1070 00:51:51,910 --> 00:51:55,830 بالا و پایین، آن را می اندازد دور همه چیز را بعد از نقطه اعشار به خاطر شما 1071 00:51:55,830 --> 00:51:59,020 می توانید یک نقطه اعشار مناسب نیست در یک عدد صحیح تعریف. 1072 00:51:59,020 --> 00:52:01,290 >> بنابراین پاسخ اینجا صفر است. 1073 00:52:01,290 --> 00:52:02,600 پس چگونه ما این را تعمیر کنید؟ 1074 00:52:02,600 --> 00:52:04,400 ما باید راه حل دیگری همه با هم. 1075 00:52:04,400 --> 00:52:06,880 و ما می توانیم این را به عنوان زیر را انجام دهید،. 1076 00:52:06,880 --> 00:52:12,820 >> اجازه دهید من به جلو و ایجاد یک جدید فایل، این یکی به نام floats.c. 1077 00:52:12,820 --> 00:52:16,500 و آن را ذخیره کنید در اینجا در همان دایرکتوری، float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 و اجازه دهید من به جلو و کپی برخی از این کد از پیش از آن. 1080 00:52:23,260 --> 00:52:27,690 >> اما به جای گرفتن یک int، اجازه دهید این کار. 1081 00:52:27,690 --> 00:52:31,037 من یک مقدار ممیز شناور را به نام x. که در آن یک نقطه شناور 1082 00:52:31,037 --> 00:52:33,370 ارزش است که فقط به معنای واقعی کلمه چیزی با یک ممیز شناور. 1083 00:52:33,370 --> 00:52:34,410 این می تواند به سمت چپ حرکت می کند، به سمت راست. 1084 00:52:34,410 --> 00:52:35,530 این عدد واقعی است. 1085 00:52:35,530 --> 00:52:38,050 >> و اجازه دهید من پاسخ نمی از نوع int، اما شناور، 1086 00:52:38,050 --> 00:52:41,420 که همچنین در میان منو بود از گزینه های در کتابخانه C250. 1087 00:52:41,420 --> 00:52:43,220 بیایید Y به یک شناور را تغییر دهید. 1088 00:52:43,220 --> 00:52:45,000 بنابراین این می شود از شناور. 1089 00:52:45,000 --> 00:52:47,620 >> و در حال حاضر، ما نمی خواهیم به برق وصل نوع داده int. 1090 00:52:47,620 --> 00:52:53,130 به نظر می رسد ما باید به استفاده از درصد f برای شناور، درصد f برای شناور، 1091 00:52:53,130 --> 00:52:54,560 و در حال حاضر آن را ذخیره کنید. 1092 00:52:54,560 --> 00:53:01,220 و در حال حاضر، انگشتان عبور، را شناور، زیبا، شناور خطوط بریده بریده نقطه. 1093 00:53:01,220 --> 00:53:04,280 X در حال رفتن به یک 1. Y در حال رفتن به 10 است. 1094 00:53:04,280 --> 00:53:08,240 >> و، زیبا، OK علاوه بر من درست است. 1095 00:53:08,240 --> 00:53:10,240 من برای بیشتر امیدوار بود، اما من فراموش کرده به آن ارسال. 1096 00:53:10,240 --> 00:53:13,250 بنابراین اجازه دهید بروید و رفع این خطا منطقی است. 1097 00:53:13,250 --> 00:53:16,280 >> اجازه دهید به جلو و گرفتن شرح زیر است. 1098 00:53:16,280 --> 00:53:18,080 ما فقط می خواهیم یک کپی کوچک و چسباندن. 1099 00:53:18,080 --> 00:53:20,080 و من قصد دارم به منفی است. 1100 00:53:20,080 --> 00:53:21,890 >> و من قصد دارم به بار. 1101 00:53:21,890 --> 00:53:24,060 و من قصد دارم برای گفتن تقسیم شده است. 1102 00:53:24,060 --> 00:53:28,240 و من قصد دارم به انجام پیمانه، است که نه به عنوان وابسته در اینجا، 1103 00:53:28,240 --> 00:53:33,690 تقسیم بر (f) و بار plus-- خوب، اجازه دهید این کار را دوباره. 1104 00:53:33,690 --> 00:53:44,210 >> شناور را، شناور خطوط بریده بریده نقطه، و 1، 10، and-- خوب، بدون، OK. 1105 00:53:44,210 --> 00:53:45,250 بنابراین من ادم سفیه و احمق هستم. 1106 00:53:45,250 --> 00:53:47,000 بنابراین این بسیار معمول است در علوم کامپیوتر 1107 00:53:47,000 --> 00:53:49,780 به اشتباه احمقانه مثل این. 1108 00:53:49,780 --> 00:53:53,100 >> برای اهداف آموزشی، آنچه که من واقعا می خواستم برای انجام 1109 00:53:53,100 --> 00:53:57,410 علم در اینجا تغییر شد به علاوه، به منهای، به بار، 1110 00:53:57,410 --> 00:54:01,140 و به تقسیم، به عنوان شما امیدوارم در طول این تمرین متوجه. 1111 00:54:01,140 --> 00:54:04,700 بنابراین در حال حاضر اجازه دهید دوباره کامپایل این برنامه، انجام شناور خطوط بریده بریده نقطه. 1112 00:54:04,700 --> 00:54:07,950 >> و برای بار سوم، اجازه دهید دیدن اگر آن را مطابق انتظارات من. 1113 00:54:07,950 --> 00:54:21,480 1، 10، را وارد کنید، بله، خوب، 1.000، تقسیم بر 10.000، 0.100000 است. 1114 00:54:21,480 --> 00:54:24,952 و معلوم است ما می توانیم کنترل چند اعداد بعد از آن رقم اعشار دارند. 1115 00:54:24,952 --> 00:54:25,660 ما در واقع خواهد شد. 1116 00:54:25,660 --> 00:54:26,790 ما دوباره به آن آمده است. 1117 00:54:26,790 --> 00:54:28,440 >> اما در حال حاضر، در واقع، ریاضی درست است. 1118 00:54:28,440 --> 00:54:30,090 پس، دوباره، چه غذای آماده را در اینجا؟ 1119 00:54:30,090 --> 00:54:33,050 به نظر می رسد که در C، وجود دارد نه تنها فقط strings-- و، در واقع، 1120 00:54:33,050 --> 00:54:36,120 واقعا وجود ندارد، چرا که ما اضافه کردن آن را با کتابخانه CS50. 1121 00:54:36,120 --> 00:54:37,710 اما تنها نوع داده int وجود ندارد. 1122 00:54:37,710 --> 00:54:38,990 >> همچنین شناور وجود دارد. 1123 00:54:38,990 --> 00:54:42,810 و معلوم است یک دسته از داده های دیگر انواع بیش از حد، که ما قبل از اینکه طولانی استفاده کنید. 1124 00:54:42,810 --> 00:54:46,270 معلوم است اگر شما می خواهید یک شخصیت، نه یک رشته از کاراکتر ها، 1125 00:54:46,270 --> 00:54:47,610 شما می توانید فقط یک کاراکتر استفاده کنید. 1126 00:54:47,610 --> 00:54:52,350 >> معلوم است که اگر شما می خواهید یک بولی، یک مقدار بولی، واقعی یا فقط کاذب، 1127 00:54:52,350 --> 00:54:56,840 به لطف کتابخانه CS50، ما اضافه شده به C نوع داده بولی است. 1128 00:54:56,840 --> 00:54:59,180 اما آن را نیز در حال حاضر بسیاری از زبان های دیگر نیز هست. 1129 00:54:59,180 --> 00:55:04,130 و معلوم است که گاهی اوقات شما نیاز به شماره بزرگتر و سپس به طور پیش فرض آمده 1130 00:55:04,130 --> 00:55:05,210 با نوع داده int و شناور. 1131 00:55:05,210 --> 00:55:10,590 >> و، در واقع، دو یک عدد است که با استفاده از نه 32 بیت، اما 64 بیت است. 1132 00:55:10,590 --> 00:55:14,990 و بلند بلند یک عدد است که با استفاده از نه 32، بیت اما 64 بیت، 1133 00:55:14,990 --> 00:55:19,190 به ترتیب، برای ممیز شناور ارزش ها و اعداد صحیح، به ترتیب. 1134 00:55:19,190 --> 00:55:22,780 بنابراین اجازه دهید در واقع در حال حاضر این را در عمل ببینید. 1135 00:55:22,780 --> 00:55:26,150 >> من قصد دارم به جلو بروید اینجا و شلاق تا یک برنامه دیگر. 1136 00:55:26,150 --> 00:55:32,020 در اینجا، من قصد دارم به جلو بروید و شامل CS50.h. 1137 00:55:32,020 --> 00:55:34,910 و به من اجازه، شامل استاندارد IO.h. 1138 00:55:34,910 --> 00:55:37,320 >> و شما متوجه چیزی بد بو که اتفاق می افتد در اینجا. 1139 00:55:37,320 --> 00:55:40,592 آن را رنگ برنامه نویسی همه چیز در همان راه به عنوان آن را قبل از انجام. 1140 00:55:40,592 --> 00:55:43,550 و معلوم است، که چون من داده نشده چیزی که نام فایل. 1141 00:55:43,550 --> 00:55:47,270 >> من قصد دارم به پاسخ این sizeof.c، و ضربه ذخیره. 1142 00:55:47,270 --> 00:55:51,039 و متوجه چه بسیار اتفاق می افتد من کد سفید در برابر پس زمینه سیاه و سفید که. 1143 00:55:51,039 --> 00:55:52,830 در حال حاضر حداقل وجود دارد برخی از بنفش در آن وجود دارد. 1144 00:55:52,830 --> 00:55:54,490 و آن را به نحو برجسته شده است. 1145 00:55:54,490 --> 00:55:57,700 >> دلیلش این است که، کاملا به سادگی، من گفت IDE چه نوع از فایل 1146 00:55:57,700 --> 00:56:01,060 آن را به آن یک نام است، و به طور خاص یک پسوند فایل. 1147 00:56:01,060 --> 00:56:03,620 در حال حاضر، اجازه دهید به جلو و انجام این کار. 1148 00:56:03,620 --> 00:56:08,910 من قصد دارم به جلو بروید و بسیار به سادگی نسخه قابل چاپ کردن بولی شرح زیر است 1149 00:56:08,910 --> 00:56:11,080 درصد LU است. 1150 00:56:11,080 --> 00:56:12,950 >> ما دوباره به که در یک لحظه. 1151 00:56:12,950 --> 00:56:15,840 و پس از آن من قصد دارم به اندازه چاپ از بولی. 1152 00:56:15,840 --> 00:56:18,170 و در حال حاضر، فقط برای نجات خودم برخی از زمان، من 1153 00:56:18,170 --> 00:56:20,280 رفتن به انجام یک کل دسته از این در یک بار. 1154 00:56:20,280 --> 00:56:24,620 و، به طور خاص، من قصد دارم به تغییر این به یک کاراکتر و کاراکتر. 1155 00:56:24,620 --> 00:56:27,760 این یکی، من قصد دارم به تغییر به دو برابر و دو برابر شود. 1156 00:56:27,760 --> 00:56:31,440 >> این یکی، من قصد دارم به تغییر به یک شناور و شناور. 1157 00:56:31,440 --> 00:56:35,670 این یکی، من قصد دارم به تغییر به int و یک int. 1158 00:56:35,670 --> 00:56:38,660 و این یکی، من قصد دارم برای تغییر به بلند بلند. 1159 00:56:38,660 --> 00:56:40,840 و هنوز هم گرفتن یک مدت طولانی، طولانی. 1160 00:56:40,840 --> 00:56:44,572 >> و پس از آن، در نهایت، من به خودم یکی بیش از حد بسیاری از، رشته. 1161 00:56:44,572 --> 00:56:47,030 به نظر می رسد که در C وجود دارد، اپراتور خاص به نام 1162 00:56:47,030 --> 00:56:50,260 اندازه که به معنای واقعی کلمه رفتن به، هنگام اجرا، 1163 00:56:50,260 --> 00:56:52,099 ما به اندازه به هر یک از این متغیرها باشد. 1164 00:56:52,099 --> 00:56:53,890 و این یک راه است، در حال حاضر، ما می توانیم اتصال 1165 00:56:53,890 --> 00:56:57,140 به بحث هفته گذشته از داده ها و نمایندگی. 1166 00:56:57,140 --> 00:57:00,330 >> اجازه بدهید به جلو و تدوین اندازه اندازه بریده بریده نقطه. 1167 00:57:00,330 --> 00:57:01,210 و اجازه دهید ببینیم. 1168 00:57:01,210 --> 00:57:05,210 به نظر می رسد که در C، به طور خاص در CS50 IDE، 1169 00:57:05,210 --> 00:57:08,170 به طور خاص در سیستم عامل اوبونتو، 1170 00:57:08,170 --> 00:57:11,100 است که یک عامل های 64 بیتی سیستم در این مورد، 1171 00:57:11,100 --> 00:57:14,189 بولی است که به استفاده از یک بایت فضا. 1172 00:57:14,189 --> 00:57:16,480 که اندازه چگونه اندازه گیری می شود، در بیت، اما در بایت است. 1173 00:57:16,480 --> 00:57:18,690 به یاد بیاورید که یک بایت هشت بیت است. 1174 00:57:18,690 --> 00:57:22,030 بنابراین یک بولی، حتی اگر شما از لحاظ فنی فقط نیاز به یک 0 یا 1، 1175 00:57:22,030 --> 00:57:24,092 آن را کمی بی فایده چگونه ما آن را اجرا کرده ام. 1176 00:57:24,092 --> 00:57:26,800 آن را در واقع قصد استفاده از یک طیف byte-- بنابراین همه صفرها، شاید 1177 00:57:26,800 --> 00:57:31,050 همه آنهایی که، و یا چیزی شبیه به آن، یا فقط یک 1 در میان هشت بیت است. 1178 00:57:31,050 --> 00:57:34,962 >> یک کاراکتر، در عین حال، مورد استفاده برای یک شخصیت مانند یک کاراکتر اسکی در هفته گذشته، 1179 00:57:34,962 --> 00:57:36,170 در حال رفتن به یکی از شخصیت ها. 1180 00:57:36,170 --> 00:57:42,340 و که با تصور ما از سازگار می سازد تا آن که بیش از 256 bits-- هیچ جای، 1181 00:57:42,340 --> 00:57:45,360 synchs به تا با آن که هیچ بیش از 8 بیت، که 1182 00:57:45,360 --> 00:57:47,450 به ما می دهد به عنوان بسیاری از 256 مقدار. 1183 00:57:47,450 --> 00:57:49,680 دو برابر شده است به 8 بایت یا 64 بیت است. 1184 00:57:49,680 --> 00:57:50,510 >> شناور 4 است. 1185 00:57:50,510 --> 00:57:51,690 یک int 4 است. 1186 00:57:51,690 --> 00:57:52,980 طولانی، طولانی 8 است. 1187 00:57:52,980 --> 00:57:54,716 و یک رشته 8 است. 1188 00:57:54,716 --> 00:57:55,840 اما در مورد آن نگران نباشید. 1189 00:57:55,840 --> 00:57:57,340 ما قصد داریم به پوست پشت لایه. 1190 00:57:57,340 --> 00:57:59,940 به نظر می رسد، رشته می طولانی تر از 8 بایت. 1191 00:57:59,940 --> 00:58:02,310 >> و، در واقع، ما نوشته شده رشته در حال حاضر، سلام جهان، 1192 00:58:02,310 --> 00:58:03,700 بیش از 8 بایت. 1193 00:58:03,700 --> 00:58:06,270 اما ما به آمده که در یک لحظه. 1194 00:58:06,270 --> 00:58:09,690 اما به دور از اینجا به شرح زیر است. 1195 00:58:09,690 --> 00:58:15,320 >> هر کامپیوتر فقط یک محدود مقدار حافظه و فضا. 1196 00:58:15,320 --> 00:58:17,860 شما فقط می توانید ذخیره کنید، بنابراین بسیاری از فایل ها بر روی مک و یا کامپیوتر خود را. 1197 00:58:17,860 --> 00:58:23,030 شما فقط می توانید ذخیره برنامه های بسیاری در حافظه RAM در یک بار، لزوما، حتی 1198 00:58:23,030 --> 00:58:26,360 با حافظه مجازی، به دلیل شما یک مقدار محدود از RAM. 1199 00:58:26,360 --> 00:58:28,990 >> و فقط به picture-- اگر شما هرگز باز کرده ام تا یک لپ تاپ 1200 00:58:28,990 --> 00:58:31,300 و یا سفارش داده حافظه اضافی برای یک کامپیوتر، شما 1201 00:58:31,300 --> 00:58:33,670 ممکن است ندانید که در داخل کامپیوتر خود را 1202 00:58:33,670 --> 00:58:36,590 چیزی است که به نظر می رسد یک کمی شبیه به این. 1203 00:58:36,590 --> 00:58:40,540 بنابراین این فقط یک شرکت مشترک به نام بسیار مهم است که باعث می شود رم برای رایانه. 1204 00:58:40,540 --> 00:58:43,620 و RAM که در آن برنامه است زندگی در حالی که آنها در حال اجرا. 1205 00:58:43,620 --> 00:58:46,630 >> بنابراین در هر مک و یا کامپیوتر، هنگامی که شما دو برابر کلیک کنید یک برنامه، و آن را باز، 1206 00:58:46,630 --> 00:58:48,921 و آن باز می شود برخی سند ورد یا چیزی شبیه به آن، 1207 00:58:48,921 --> 00:58:51,764 آن را ذخیره به طور موقت در رم، به دلیل حافظه سریع تر است 1208 00:58:51,764 --> 00:58:53,680 از هارد دیسک شما، و یا دیسک حالت جامد خود را. 1209 00:58:53,680 --> 00:58:56,600 بنابراین آن را فقط در آن برنامه های رفتن به زندگی می کنند زمانی که آنها در حال اجرا، 1210 00:58:56,600 --> 00:58:58,060 و یا زمانی که فایل در حال استفاده می شود. 1211 00:58:58,060 --> 00:59:00,890 >> بنابراین شما باید چیزهایی که نگاه مثل این داخل لپ تاپ شما، 1212 00:59:00,890 --> 00:59:03,320 یا چیزهایی کمی بزرگتر در داخل کامپیوتر خود ببینید. 1213 00:59:03,320 --> 00:59:07,440 اما مهم این است که شما فقط یک دارند تعداد متناهی از این چیزها. 1214 00:59:07,440 --> 00:59:11,230 و تنها مقدار محدودی از وجود دارد سخت افزار نشسته بر روی این میز سمت راست 1215 00:59:11,230 --> 00:59:11,730 اینجا. 1216 00:59:11,730 --> 00:59:15,920 >> بنابراین، قطعا، ما نمی توانیم ذخیره تعداد بی نهایت طولانی. 1217 00:59:15,920 --> 00:59:19,030 و، در عین حال، اگر شما فکر می کنم به مدرسه، چگونه بسیاری از ارقام می 1218 00:59:19,030 --> 00:59:21,400 شما را به حق از نقطه اعشار؟ 1219 00:59:21,400 --> 00:59:24,680 برای آن موضوع، چگونه بسیاری از ارقام می شما به سمت چپ از یک نقطه اعشار را داشته باشد؟ 1220 00:59:24,680 --> 00:59:26,300 واقعا، بسیاری از بی نهایت. 1221 00:59:26,300 --> 00:59:30,840 >> در حال حاضر، ما انسان ها ممکن است تنها می دانم که چگونه میلیون را تلفظ کنند: 1222 00:59:30,840 --> 00:59:34,990 و میلیارد، میلیارد، و کوادریلیون، و عدد یک با 18 صفر بتوان 2. 1223 00:59:34,990 --> 00:59:39,370 و من هل دادن محدودیت های من understanding-- یا my-- من درک می کنم 1224 00:59:39,370 --> 00:59:41,110 اعداد، اما من تلفظ اعداد. 1225 00:59:41,110 --> 00:59:44,720 اما آنها می توانند بی نهایت با بزرگ دریافت بسیاری از بی نهایت رقم به سمت چپ 1226 00:59:44,720 --> 00:59:47,050 و یا در سمت راست نقطه اعشار. 1227 00:59:47,050 --> 00:59:50,040 >> اما کامپیوتر تنها باید مقدار محدود از حافظه، 1228 00:59:50,040 --> 00:59:53,510 یک تعداد متناهی از ترانزیستور، تعداد متناهی از لامپ در داخل. 1229 00:59:53,510 --> 00:59:57,350 پس چه اتفاقی می افتد زمانی شما از فضای اجرا شود؟ 1230 00:59:57,350 --> 00:59:59,620 به عبارت دیگر، اگر شما فکر می کنم به هفته گذشته 1231 00:59:59,620 --> 01:00:03,160 هنگامی که ما در مورد اعداد صحبت خود در دودویی، 1232 01:00:03,160 --> 01:00:05,480 فرض کنید که ما باید این مقدار 8 بیتی است. 1233 01:00:05,480 --> 01:00:08,290 >> و ما هفت 1 و یکی 0. 1234 01:00:08,290 --> 01:00:10,827 و فرض کنید که ما می خواهیم برای اضافه کردن 1 به این مقدار است. 1235 01:00:10,827 --> 01:00:12,410 این تعداد واقعا بزرگ در حال حاضر است. 1236 01:00:12,410 --> 01:00:16,610 >> این 254 است، اگر من به یاد داشته باشید ریاضی از آخرین راست هفته. 1237 01:00:16,610 --> 01:00:19,480 اما اگر من تغییر که سمت راست 0 به 1؟ 1238 01:00:19,480 --> 01:00:22,800 تعداد کل، از البته، هشت 1 تبدیل می شود. 1239 01:00:22,800 --> 01:00:24,050 بنابراین ما هنوز هم خوب است. 1240 01:00:24,050 --> 01:00:27,204 >> و که احتمالا نشان 255، هر چند با توجه به متن 1241 01:00:27,204 --> 01:00:29,120 آن را در واقع می تواند نشان دهنده یک عدد منفی. 1242 01:00:29,120 --> 01:00:31,240 اما بیشتر که زمان دیگری است. 1243 01:00:31,240 --> 01:00:34,220 این احساس می کند مانند آن را در مورد عنوان بالا به عنوان من می توانم به حساب. 1244 01:00:34,220 --> 01:00:35,290 >> در حال حاضر، آن را تنها 8 بیت است. 1245 01:00:35,290 --> 01:00:38,170 و مک من، قطعا، راه بیش از 8 بیت از حافظه است. 1246 01:00:38,170 --> 01:00:39,170 اما آن را ندارد محدود است. 1247 01:00:39,170 --> 01:00:43,230 بنابراین استدلال همین امر، حتی اگر ما بیشتر از این آنهایی که بر روی صفحه نمایش. 1248 01:00:43,230 --> 01:00:47,020 >> اما چه اتفاقی می افتد اگر شما ذخیره سازی این تعداد، 255، 1249 01:00:47,020 --> 01:00:49,290 و شما می خواهید برای شمارش 1 کمی بالاتر؟ 1250 01:00:49,290 --> 01:00:51,600 شما می خواهید برای رفتن 255-256. 1251 01:00:51,600 --> 01:00:55,800 مشکل، البته، این است که اگر شما شروع به شمارش صفر مانند هفته گذشته، 1252 01:00:55,800 --> 01:00:59,670 شما نمی توانید به تعداد بالا به عنوان 256، چه رسد به 257، 1253 01:00:59,670 --> 01:01:02,584 چه رسد به 258، متر زیرا آنچه افتد زمانی که شما اضافه کردن 1؟ 1254 01:01:02,584 --> 01:01:05,000 اگر شما در مدرسه قدیمی انجام رویکرد، شما یک 1 در اینجا، 1255 01:01:05,000 --> 01:01:08,150 و پس از آن 1 به علاوه 1 2 است، اما این واقعا یک صفر، شما حمل 1، 1256 01:01:08,150 --> 01:01:09,695 حمل 1، حمل 1. 1257 01:01:09,695 --> 01:01:12,620 همه این چیزها، این 1، به صفر است. 1258 01:01:12,620 --> 01:01:17,820 و شما باد، بله، به عنوان کسی که اشاره کرد، 1 در سمت چپ. 1259 01:01:17,820 --> 01:01:22,540 اما همه چیز شما می توانید در واقع می بینید و مناسب در حافظه 1260 01:01:22,540 --> 01:01:27,960 فقط هشت 0 است، که بگویم این است در برخی از نقطه اگر شما، یک کامپیوتر، 1261 01:01:27,960 --> 01:01:32,490 سعی به اندازه کافی شمارش بالا، شما رفتن به بسته بندی کردن اطراف، آن را به نظر می رسد، 1262 01:01:32,490 --> 01:01:35,850 به صفر، یا شاید حتی منفی اعداد، که حتی پایین تر از صفر است. 1263 01:01:35,850 --> 01:01:37,260 >> و ما به نوعی می توانید این را ببینید. 1264 01:01:37,260 --> 01:01:39,900 اجازه دهید من به جلو و ارسال یک برنامه سریع واقعی در اینجا. 1265 01:01:39,900 --> 01:01:43,690 اجازه دهید من به جلو و ارسال برنامه ای به نام سرریز. 1266 01:01:43,690 --> 01:01:49,980 شامل CS50.H، شامل استاندارد IO.h-- آه، 1267 01:01:49,980 --> 01:01:51,730 من واقعا از دست رفته نحو برجسته است. 1268 01:01:51,730 --> 01:01:54,440 بنابراین اجازه دهید این ذخیره به عنوان overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> و در حال حاضر از نوع int از درجه اعتبار ساقط اصلی و قبل از اینکه طولانی، ما 1270 01:01:57,084 --> 01:01:59,500 دوباره به توضیح اینکه چرا ما به نوشتن بی اعتبار اصلی نوع int است. 1271 01:01:59,500 --> 01:02:02,080 اما در حال حاضر، اجازه دهید فقط انجام آن، مصرف آن را برای اعطا. 1272 01:02:02,080 --> 01:02:06,200 بیایید خودم یک int را، و مقداردهی اولیه آن را به 0. 1273 01:02:06,200 --> 01:02:11,716 >> بیایید پس از آن برای نوع int می توانم zero-- در واقع، اجازه دهید انجام یک حلقه بی نهایت 1274 01:02:11,716 --> 01:02:12,590 و ببینید چه اتفاقی می افتد. 1275 01:02:12,590 --> 01:02:22,440 در حالی که درست است، پس اجازه دهید نسخه قابل چاپ کردن N درصد است من، بک اسلش نفر، پلاگین در N. 1276 01:02:22,440 --> 01:02:27,200 اما، در حال حاضر، اجازه دهید انجام N می شود N به علاوه 1. 1277 01:02:27,200 --> 01:02:29,660 >> بنابراین به عبارت دیگر، در هر تکرار از این حلقه بی نهایت، 1278 01:02:29,660 --> 01:02:32,550 اجازه دهید مقدار n است، و اضافه کردن 1 به آن، و پس از آن 1279 01:02:32,550 --> 01:02:34,350 ذخیره نتیجه تماس در N در سمت چپ. 1280 01:02:34,350 --> 01:02:37,150 و، در واقع، ما دیده ایم نحو کمی شبیه به این، به طور خلاصه. 1281 01:02:37,150 --> 01:02:39,730 یک ترفند سرد است به جای نوشتن تمام این، 1282 01:02:39,730 --> 01:02:42,770 شما در واقع می توان گفت یک n به علاوه برابر با 1. 1283 01:02:42,770 --> 01:02:47,480 >> و یا اگر شما واقعا می خواهید به فانتزی، شما می توانید می گویند N به علاوه به علاوه نیمه روده بزرگ. 1284 01:02:47,480 --> 01:02:50,130 اما این دو مورد آخر فقط چه ما می خواهم پاسخ قند نحوی 1285 01:02:50,130 --> 01:02:50,790 برای اولین چیزی. 1286 01:02:50,790 --> 01:02:53,456 >> اولین چیزی که صریح و روشن تر است، کاملا خوب، کاملا درست است. 1287 01:02:53,456 --> 01:02:55,470 اما این شایع تر است، من می گویم. 1288 01:02:55,470 --> 01:02:57,210 بنابراین ما این برای فقط یک لحظه است. 1289 01:02:57,210 --> 01:03:01,685 >> اکنون بیایید را سرریز، که برای تلفن های موبایل و نه شوم، سرریز بریده بریده نقطه. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 بیایید ببینید، N گرفتن بسیار بزرگ است. 1292 01:03:09,852 --> 01:03:11,310 اما اجازه دهید فکر می کنم، چگونه بزرگ N می توانید دریافت کنید؟ 1293 01:03:11,310 --> 01:03:12,870 >> N از نوع int است. 1294 01:03:12,870 --> 01:03:16,400 ما یک لحظه پیش با اندازه دیدم به عنوان مثال که یک int چهار بایت است. 1295 01:03:16,400 --> 01:03:22,070 ما از هفته گذشته مطمئن شوید، چهار بایت است 32 بیت، چون 8 بار 4، که 32 است. 1296 01:03:22,070 --> 01:03:23,460 که برای رفتن به 4 میلیارد دلار. 1297 01:03:23,460 --> 01:03:25,802 >> و ما تا 800،000 می باشد. 1298 01:03:25,802 --> 01:03:28,510 این است که به را برای همیشه به شمارش عنوان بالا به عنوان من احتمالا می تواند. 1299 01:03:28,510 --> 01:03:30,635 بنابراین من قصد دارم به جلو بروید، همانطور که شما ممکن قبل از اینکه طولانی، 1300 01:03:30,635 --> 01:03:34,910 و Control C-- رک و پوست کنده، کنترل C، زیادی، که در آن کنترل C به طور کلی 1301 01:03:34,910 --> 01:03:36,034 یعنی لغو نمایید. 1302 01:03:36,034 --> 01:03:38,200 متاسفانه، به دلیل این در حال اجرا است در ابر، 1303 01:03:38,200 --> 01:03:41,190 گاهی اوقات ابر است تف کردن چیزهای زیادی، 1304 01:03:41,190 --> 01:03:44,180 خروجی بسیار، آن را به را در حالی که کمی برای ورود من 1305 01:03:44,180 --> 01:03:45,630 برای رسیدن به ابر. 1306 01:03:45,630 --> 01:03:49,240 بنابراین حتی اگر من ضربه کنترل C چند ثانیه پیش، 1307 01:03:49,240 --> 01:03:53,110 این است که قطعا در طرف اثر یک حلقه بی نهایت. 1308 01:03:53,110 --> 01:03:56,070 >> و به این ترتیب در چنین مواردی، ما رفتن به ترک آن باشد. 1309 01:03:56,070 --> 01:03:59,050 و ما قصد داریم به اضافه کردن یکی دیگر از پنجره ترمینال در اینجا 1310 01:03:59,050 --> 01:04:03,186 با به علاوه، که البته نمی مانند آن، از آنجا که هنوز فکر می کنند. 1311 01:04:03,186 --> 01:04:05,310 و اجازه دهید به جلو و کمی معقول تر است. 1312 01:04:05,310 --> 01:04:07,768 >> من قصد دارم به جلو بروید و انجام این تنها finitely چند بار. 1313 01:04:07,768 --> 01:04:10,047 حال با استفاده از یک حلقه for، که که پیشتر اشاره کردم. 1314 01:04:10,047 --> 01:04:10,630 بیا انجامش بدیم. 1315 01:04:10,630 --> 01:04:13,430 من یکی دیگر از اعضای هیات متغیر من می شود 0 به من بده. 1316 01:04:13,430 --> 01:04:17,430 من کمتر از، اجازه دهید بگویم، من + + 64 است. 1317 01:04:17,430 --> 01:04:24,010 و در حال حاضر اجازه دهید من جلو رفتن و چاپ خارج N درصد من است، کاما N. 1318 01:04:24,010 --> 01:04:27,547 و پس از آن n-- این است که هنوز رفتن به را برای همیشه. 1319 01:04:27,547 --> 01:04:28,130 بیا انجامش بدیم. 1320 01:04:28,130 --> 01:04:30,620 >> N می شود n بار 2. 1321 01:04:30,620 --> 01:04:34,140 و یا ما می تواند فانتزی و بار برابر 2. 1322 01:04:34,140 --> 01:04:37,120 اما اجازه دهید فقط می گویند N خود برابر، زمان 2. 1323 01:04:37,120 --> 01:04:39,321 به عبارت دیگر، در این نسخه جدید این برنامه، 1324 01:04:39,321 --> 01:04:41,820 من نمی خواهم برای همیشه صبر از مثل 800000 به 4 میلیارد دلار. 1325 01:04:41,820 --> 01:04:43,070 اجازه دهید فقط این با بیش از. 1326 01:04:43,070 --> 01:04:44,920 >> اجازه دهید در واقع دو برابر N در هر زمان. 1327 01:04:44,920 --> 01:04:47,660 که، به یاد بیاورید، دو برابر شدن است مخالف داشتن، البته. 1328 01:04:47,660 --> 01:04:50,035 و در حالی که هفته گذشته ما چیزی دوباره، و دوباره، 1329 01:04:50,035 --> 01:04:52,200 و دوباره، فوق العاده سریع، دو برابر شدن مطمئنا 1330 01:04:52,200 --> 01:04:58,080 ما از 1 به بزرگترین ممکن ارزش است که ما می توانیم با یک int حساب کند. 1331 01:04:58,080 --> 01:04:59,750 >> بنابراین اجازه دهید دقیقا این است. 1332 01:04:59,750 --> 01:05:01,720 و ما به این قبل از اینکه طولانی است. 1333 01:05:01,720 --> 01:05:04,180 اما این، دوباره، درست مثل بلوک تکرار در ابتدا. 1334 01:05:04,180 --> 01:05:05,600 و شما این قبل از اینکه طولانی استفاده کنید. 1335 01:05:05,600 --> 01:05:10,170 >> این فقط به معنی تعداد از صفر تا، اما نه برابر، به 64. 1336 01:05:10,170 --> 01:05:14,285 و در هر تکرار از این حلقه، فقط نگه داشتن افزایش من. 1337 01:05:14,285 --> 01:05:18,990 بنابراین من + + - و این ساختار کلی در خط 7 فقط یک راه فوق العاده رایج است 1338 01:05:18,990 --> 01:05:22,290 از تکرار برخی از خطوط از کد، برخی از تعداد بار. 1339 01:05:22,290 --> 01:05:23,362 که خط کد. 1340 01:05:23,362 --> 01:05:25,570 این آکولاد، به عنوان شما ممکن است از هم اکنون جمع آوری، 1341 01:05:25,570 --> 01:05:26,780 یعنی زیر را انجام دهید. 1342 01:05:26,780 --> 01:05:29,510 >> آن را در مثل خراش، زمانی که از آن است که بلوک های زرد 1343 01:05:29,510 --> 01:05:32,680 و رنگ های دیگر این نوع از در آغوش یا در آغوش بلوک های دیگر. 1344 01:05:32,680 --> 01:05:34,750 که چه کسانی که در اشکال مختلف است پرانتز انجام می دهند. 1345 01:05:34,750 --> 01:05:40,200 بنابراین اگر من نحو من right-- شما می توانید نماد هویج در معنای C را ببینید 1346 01:05:40,200 --> 01:05:42,706 که چند بار من بود تلاش برای حل این مشکل است. 1347 01:05:42,706 --> 01:05:45,330 بنابراین اجازه دهید که یکی از خلاص شدن از شر در مجموع، و پنجره را ببندید. 1348 01:05:45,330 --> 01:05:46,520 و ما یکی از جدید. 1349 01:05:46,520 --> 01:05:51,980 را سرریز، نقطه اسلش سرریز، را وارد کنید، همه حق است، 1350 01:05:51,980 --> 01:05:53,090 به نظر می رسد بد در ابتدا. 1351 01:05:53,090 --> 01:05:56,200 اما اجازه دهید حرکت به عقب در زمان، چون من این 64 بار انجام داد. 1352 01:05:56,200 --> 01:05:58,700 >> و متوجه اولین بار، N 1 است. 1353 01:05:58,700 --> 01:06:03,110 بار دوم، N 2، پس از آن 4، پس از آن 8، پس از آن 16. 1354 01:06:03,110 --> 01:06:09,450 و به نظر می رسد که به محض من به حدود 1 میلیارد دریافت کنید، 1355 01:06:09,450 --> 01:06:12,800 اگر من آن را دوباره دو برابر، که باید به من 2 میلیارد است. 1356 01:06:12,800 --> 01:06:14,980 اما معلوم است، آن را حق در آستانه. 1357 01:06:14,980 --> 01:06:18,930 >> و پس از آن در واقع مملو یک int از 1 میلیارد 1358 01:06:18,930 --> 01:06:23,514 به حدود منفی 2 میلیارد، چون یک عدد صحیح، 1359 01:06:23,514 --> 01:06:25,430 بر خلاف ما شماره هفته گذشته فرض شده بودند، 1360 01:06:25,430 --> 01:06:28,397 می تواند هم مثبت و منفی در واقعیت و در یک کامپیوتر است. 1361 01:06:28,397 --> 01:06:30,730 و به طوری که حداقل یکی از آن بیت است به طور موثر سرقت رفته است. 1362 01:06:30,730 --> 01:06:34,190 بنابراین ما واقعا تنها 31 بیت، و یا 2 میلیارد مقدار ممکن است. 1363 01:06:34,190 --> 01:06:38,220 >> اما در حال حاضر، غذای آماده است که کاملا به سادگی، هر آنچه که این اعداد 1364 01:06:38,220 --> 01:06:42,280 و هر چه ریاضی، که اتفاق بدی رخ در نهایت، 1365 01:06:42,280 --> 01:06:46,980 چرا که در نهایت شما می خواهید به پس و پیش کردن بیت یکی بیش از حد بسیاری از. 1366 01:06:46,980 --> 01:06:51,060 و شما به طور موثر از همه به 1 به شاید همه 0، و یا شاید 1367 01:06:51,060 --> 01:06:54,260 فقط برخی از الگوی دیگر که آن را به وضوح، با توجه به متن، 1368 01:06:54,260 --> 01:06:56,342 می تواند به عنوان یک عدد منفی تفسیر شده است. 1369 01:06:56,342 --> 01:06:59,300 و پس از آن خواهد بالاترین من به نظر می رسد می توانید در این برنامه خاص را محاسبه 1370 01:06:59,300 --> 01:07:01,210 تنها در حدود 1 میلیارد است. 1371 01:07:01,210 --> 01:07:02,760 اما یک راه حل جزئی وجود دارد. 1372 01:07:02,760 --> 01:07:03,480 میدونی چیه؟ 1373 01:07:03,480 --> 01:07:07,600 >> اجازه دهید من از تغییر int به بلند بلند. 1374 01:07:07,600 --> 01:07:10,633 و اجازه دهید من جلو بروید اینجا و می گویند من قصد دارم به 1375 01:07:10,633 --> 01:07:12,290 برای تغییر این را به مدت طولانی بدون علامت. 1376 01:07:12,290 --> 01:07:16,860 یا، بیایید ببینید، من هرگز خودم به یاد داشته باشید. 1377 01:07:16,860 --> 01:07:19,920 >> اجازه دهید به جلو و سرریز. 1378 01:07:19,920 --> 01:07:21,860 نه، این آن نیست، LLD، از شما سپاسگزارم. 1379 01:07:21,860 --> 01:07:23,430 بنابراین گاهی اوقات صدای جرنگ جرنگ می تواند مفید باشد. 1380 01:07:23,430 --> 01:07:27,550 من به یاد داشته باشید آنچه را که فرمت نمی تعیین برای یک مدت طولانی طولانی بود. 1381 01:07:27,550 --> 01:07:28,950 >> اما، در واقع، صدای جرنگ جرنگ به من گفت. 1382 01:07:28,950 --> 01:07:31,570 سبز نوعی از خوب است، هنوز هم معنی است که شما اشتباه. 1383 01:07:31,570 --> 01:07:33,190 این حدس زدن که من به معنای LLD. 1384 01:07:33,190 --> 01:07:38,750 >> بنابراین اجازه دهید من را آن مشاوره، طولانی عدد اعشاری طولانی، صرفه جویی است. 1385 01:07:38,750 --> 01:07:43,190 و اجازه دهید من آن را دوباره، نقطه بریده بریده سرریز، وارد کنید. 1386 01:07:43,190 --> 01:07:45,020 و در حال حاضر چه سرد است. 1387 01:07:45,020 --> 01:07:49,140 >> اگر من حرکت به عقب در زمان، ما هنوز شروع شمارش در همان place-- 1، 2، 4، 1388 01:07:49,140 --> 01:07:50,220 8، 16. 1389 01:07:50,220 --> 01:07:54,860 توجه، ما همه راه را تا به 1 میلیارد. 1390 01:07:54,860 --> 01:07:57,070 اما پس از آن ما با خیال راحت به 2 میلیارد است. 1391 01:07:57,070 --> 01:08:01,300 >> سپس ما به 4 میلیارد دریافت کنید، پس از آن 8 میلیارد، 17 میلیارد. 1392 01:08:01,300 --> 01:08:03,340 و ما به بالاتر، و بالاتر و بالاتر است. 1393 01:08:03,340 --> 01:08:05,740 در نهایت، این، بیش از حد، می شکند. 1394 01:08:05,740 --> 01:08:09,350 >> در نهایت، با بلند بلند، که است که ارزش 64 بیتی، نه 1395 01:08:09,350 --> 01:08:13,660 یک مقدار 32 بیتی، اگر شما تعداد بیش از حد بالا، شما را در سراسر 0 بپیچید. 1396 01:08:13,660 --> 01:08:16,410 و در این مورد، ما اتفاق می افتد در نهایت با یک عدد منفی است. 1397 01:08:16,410 --> 01:08:17,550 >> بنابراین این یک مشکل است. 1398 01:08:17,550 --> 01:08:20,439 و معلوم است که این مشکل این است که محرمانه است. 1399 01:08:20,439 --> 01:08:23,060 حتی اگر من به عمد آن را با این اشتباهات ناشی از، 1400 01:08:23,060 --> 01:08:26,149 معلوم شد که آن هم از نوع دیدن همه در اطراف ما، و یا حداقل برخی از ما انجام دهد. 1401 01:08:26,149 --> 01:08:28,939 >> بنابراین در لگو جنگ ستارگان، اگر شما تا به حال بازی کرده ام بازی، 1402 01:08:28,939 --> 01:08:33,830 که معلوم است شما می توانید در اطراف شکستن تا چیز در دنیای LEGO، 1403 01:08:33,830 --> 01:08:36,640 و جمع آوری سکه، در اصل. 1404 01:08:36,640 --> 01:08:39,200 و اگر شما تا کنون ایفا کرده این بازی راه زمان بیش از حد، 1405 01:08:39,200 --> 01:08:42,630 عنوان این فرد ناشناخته در اینجا انجام داد، تعداد کل 1406 01:08:42,630 --> 01:08:46,700 سکه های که شما می توانید جمع آوری است، آن را به نظر می رسد، 4 میلیارد دلار. 1407 01:08:46,700 --> 01:08:48,240 >> در حال حاضر، با آن را در واقع گرد. 1408 01:08:48,240 --> 01:08:50,239 بنابراین LEGO تلاش برای شد نگه داشتن کاربر چیزهایی پسند. 1409 01:08:50,239 --> 01:08:53,779 آنها آن را انجام نمی دقیقا 2 به 32 قدرت، در هفته گذشته است. 1410 01:08:53,779 --> 01:08:55,310 اما 4 میلیارد به یک دلیل است. 1411 01:08:55,310 --> 01:08:58,979 به نظر می رسد، بر اساس این اطلاعات، که LEGO، و این شرکت است که 1412 01:08:58,979 --> 01:09:02,624 ساخته شده از این نرم افزار واقعی، تصمیم گرفت که حداکثر تعداد سکه 1413 01:09:02,624 --> 01:09:04,540 کاربر می تواند جمع آوری است، در واقع، 4 میلیارد دلار، 1414 01:09:04,540 --> 01:09:12,069 چرا که آنها در کد خود را انتخاب استفاده طولانی مدت نیست، ظاهرا، 1415 01:09:12,069 --> 01:09:16,140 اما فقط یک عدد صحیح، یک بدون علامت عدد صحیح، تنها یک عدد صحیح مثبت، که 1416 01:09:16,140 --> 01:09:18,089 حداکثر ارزش است که تقریبا که. 1417 01:09:18,089 --> 01:09:19,380 خوب، در اینجا یکی از خنده دار دیگری است. 1418 01:09:19,380 --> 01:09:23,500 بنابراین در تمدن بازی، که برخی از شما ممکن است آشنا با 1419 01:09:23,500 --> 01:09:26,660 معلوم است که سال پیش وجود دارد یک اشکال در این بازی که به موجب آن شد 1420 01:09:26,660 --> 01:09:28,750 اگر شما نقش گاندی در این بازی، 1421 01:09:28,750 --> 01:09:34,020 به جای او بسیار صلح طلب، به جای فوق العاده بود، فوق العاده 1422 01:09:34,020 --> 01:09:36,399 تهاجمی، در برخی شرایط. 1423 01:09:36,399 --> 01:09:40,529 به طور خاص، که تمدن آثار این است که اگر شما، پخش، 1424 01:09:40,529 --> 01:09:44,680 اتخاذ دموکراسی، خود را نمره پرخاشگری می شود 1425 01:09:44,680 --> 01:09:48,130 decremented توسط دو، تا منهای منفی، و پس از آن منهای منهای. 1426 01:09:48,130 --> 01:09:50,569 >> بنابراین شما می تفریق 2 از تکرار واقعی خود را. 1427 01:09:50,569 --> 01:09:56,650 متاسفانه، اگر تکرار خود است در ابتدا 1، و شما تفریق 2 از آن 1428 01:09:56,650 --> 01:09:59,050 پس از اتخاذ دموکراسی به عنوان گاندی در اینجا ممکن 1429 01:09:59,050 --> 01:10:02,200 انجام داده اند، چرا که او بسیار passive-- بود 1 در مقیاس پرخاشگری. 1430 01:10:02,200 --> 01:10:04,830 اما اگر او تصویب دموکراسی، پس از آن او از 1 به منفی 1 می رود. 1431 01:10:04,830 --> 01:10:11,470 >> متاسفانه، آنها بودند با استفاده از اعداد بدون علامت، 1432 01:10:11,470 --> 01:10:15,400 این بدان معناست که حتی منفی درمان اعداد را به عنوان اگر آنها مثبت بود. 1433 01:10:15,400 --> 01:10:19,780 و معلوم است که معادل مثبت منفی 1، 1434 01:10:19,780 --> 01:10:23,480 در برنامه های کامپیوتری معمولی، 255 است. 1435 01:10:23,480 --> 01:10:27,250 بنابراین اگر گاندی تصویب ، و در نتیجه دموکراسی 1436 01:10:27,250 --> 01:10:32,470 نمره پرخاشگری او کاهش یافته است، آن را در واقع رول در اطراف به 255 1437 01:10:32,470 --> 01:10:35,470 و او را بیشتر می کند شخصیت تهاجمی در بازی. 1438 01:10:35,470 --> 01:10:36,930 بنابراین شما می توانید در این Google است. 1439 01:10:36,930 --> 01:10:39,380 و آن بود، در واقع، یک اشکال برنامه نویسی تصادفی، 1440 01:10:39,380 --> 01:10:43,010 اما این کاملا وارد افسانه هاو روایات قومی از زمان. 1441 01:10:43,010 --> 01:10:44,360 >> که همه سرگرم کننده و زیبا است. 1442 01:10:44,360 --> 01:10:47,760 بیشتر ترسناک است که واقعی دستگاه های دنیای واقعی، و بازی نیست، 1443 01:10:47,760 --> 01:10:48,820 باید این اشکالات است. 1444 01:10:48,820 --> 01:10:54,500 در واقع، فقط یک سال پیش یک مقاله آمد در مورد بوئینگ 787. 1445 01:10:54,500 --> 01:10:56,850 >> و مقاله در ابتدا نگاه می خواند محرمانه است. 1446 01:10:56,850 --> 01:11:01,480 اما گفته این، نرم افزار آسیب پذیری در بوئینگ 1447 01:11:01,480 --> 01:11:04,790 جدید 787 جت است احتمال ایجاد خلبانان 1448 01:11:04,790 --> 01:11:07,220 از دست دادن کنترل این هواپیما، احتمالا 1449 01:11:07,220 --> 01:11:11,750 در اواسط پرواز، مقامات FAA خطوط هوایی هشدار داد به تازگی. 1450 01:11:11,750 --> 01:11:14,520 این تعیین شد که یک مدل 787 1451 01:11:14,520 --> 01:11:19,770 هواپیما است که طراحی شده است به طور مداوم برای 248 روز 1452 01:11:19,770 --> 01:11:24,880 می توانید تمام جریان متناوب از دست دادن، AC، برق با توجه به ژنراتور 1453 01:11:24,880 --> 01:11:28,892 واحد کنترل، GCUs، به طور همزمان رفتن به شکست حالت امن. 1454 01:11:28,892 --> 01:11:29,850 این نوع از دست دادن من است. 1455 01:11:29,850 --> 01:11:35,390 اما این یادداشت آمده است، خوب، در حال حاضر من که، شرایط توسط نرم افزار باعث شد 1456 01:11:35,390 --> 01:11:38,590 مقابله با داخلی به کنترل ژنراتور 1457 01:11:38,590 --> 01:11:44,860 واحد است که پس از سرریز خواهد شد 248 روز از قدرت مداوم. 1458 01:11:44,860 --> 01:11:47,070 ما در حال صدور این متوجه برای جلوگیری از ریزش 1459 01:11:47,070 --> 01:11:49,300 از همه AC الکتریکی قدرت، که می تواند منجر 1460 01:11:49,300 --> 01:11:50,980 در از دست دادن کنترل هواپیما. 1461 01:11:50,980 --> 01:11:55,380 >> بنابراین، به معنای واقعی کلمه، برخی از عدد صحیح وجود دارد، و یا برخی از نوع داده معادل، 1462 01:11:55,380 --> 01:11:57,960 در نرم افزار مورد استفاده در یک هواپیما واقعی 1463 01:11:57,960 --> 01:12:00,756 که اگر شما هواپیما خود را نگه دارید به اندازه کافی بلند است، که ظاهرا 1464 01:12:00,756 --> 01:12:03,880 می تواند مورد اگر شما فقط در حال اجرا آنها به طور مداوم و هرگز جدا 1465 01:12:03,880 --> 01:12:06,810 هواپیما خود را، به نظر می رسد، و یا اجازه دادن به باتری آن می میرند، 1466 01:12:06,810 --> 01:12:09,840 در نهایت شمارش خواهد شد، و تا، و بالا، و، و، و است. 1467 01:12:09,840 --> 01:12:12,150 >> و با طبیعت، مقدار محدود از حافظه 1468 01:12:12,150 --> 01:12:15,880 سرریز خواهد شد، آلیاژها برگشت به صفر و یا برخی از ارزش منفی، 1469 01:12:15,880 --> 01:12:19,920 یک عارضه جانبی از که است که واقعیت وحشتناکی واقعی 1470 01:12:19,920 --> 01:12:23,970 که این هواپیما ممکن است نیاز به بوت شود، به طور موثر، 1471 01:12:23,970 --> 01:12:27,290 و یا ممکن است سقوط، بدتر، به عنوان آن مگس. 1472 01:12:27,290 --> 01:12:29,230 بنابراین این نوع از مسائل هنوز با ما هستند، 1473 01:12:29,230 --> 01:12:33,130 even-- این یک مقاله 2015 بود، همه ترسناک تر 1474 01:12:33,130 --> 01:12:36,100 هنگامی که شما انجام لزوما درک، درک، و یا پیش بینی 1475 01:12:36,100 --> 01:12:38,640 این نوع از خطا است. 1476 01:12:38,640 --> 01:12:42,030 >> پس از آن معلوم یکی دیگر وجود دارد چیز بدی در مورد نمایش اطلاعات. 1477 01:12:42,030 --> 01:12:47,080 به نظر می رسد که حتی شناور نوع ناقص، به دلیل شناور، بیش از حد، 1478 01:12:47,080 --> 01:12:51,440 من پیشنهاد می 32 بیت، یا شاید 64 در صورت استفاده از دو برابر شود. 1479 01:12:51,440 --> 01:12:53,070 اما هنوز محدود است. 1480 01:12:53,070 --> 01:12:57,070 >> و نکته این است که اگر شما می توانید قرار دادن یک تعداد نامتناهی از اعداد 1481 01:12:57,070 --> 01:12:59,460 بعد از نقطه اعشار دارند، هیچ راه شما وجود دارد 1482 01:12:59,460 --> 01:13:02,690 همه ممکن می تواند نشان دهنده اعداد است که ما آموزش داده شد 1483 01:13:02,690 --> 01:13:04,990 در کلاس مدرسه می تواند در جهان وجود دارد. 1484 01:13:04,990 --> 01:13:08,870 یک کامپیوتر، در اصل، به را انتخاب کنید یک زیر مجموعه از آن اعداد 1485 01:13:08,870 --> 01:13:10,200 برای نشان دقت. 1486 01:13:10,200 --> 01:13:12,450 >> در حال حاضر، کامپیوتر می تواند دور شاید کمی، 1487 01:13:12,450 --> 01:13:17,900 و می تواند شما را به کمتر از فروشگاه اجازه می دهد هر تعداد که شما احتمالا ممکن است بخواهید. 1488 01:13:17,900 --> 01:13:20,940 اما فقط به طور مستقیم، اگر شما یک تعداد متناهی از بیت، 1489 01:13:20,940 --> 01:13:24,560 شما تنها می توانید آنها را پس و پیش کردن در بسیاری از راه های محدود است. 1490 01:13:24,560 --> 01:13:26,570 بنابراین شما احتمالا نمی تواند استفاده از تعداد محدود 1491 01:13:26,570 --> 01:13:29,880 از جایگشت از بیت، الگوهای از صفر و آنهایی، 1492 01:13:29,880 --> 01:13:32,940 برای نشان دادن بی نهایت تعداد اعداد، 1493 01:13:32,940 --> 01:13:37,370 که نشان می دهد که کامپیوتر ممکن است خیلی خوب دروغ گفتن به ما گاهی. 1494 01:13:37,370 --> 01:13:38,770 >> در واقع، اجازه دهید این کار. 1495 01:13:38,770 --> 01:13:41,239 به من اجازه رفتن به IDE CS50. 1496 01:13:41,239 --> 01:13:43,030 اجازه دهید من به جلو و ایجاد یک برنامه کوچک است 1497 01:13:43,030 --> 01:13:47,940 نام عدم دقت، نشان می دهد که کامپیوتر، در واقع، مبهم است. 1498 01:13:47,940 --> 01:13:51,910 >> و اجازه دهید من به جلو و با شروع برخی از این کد از قبل، 1499 01:13:51,910 --> 01:13:53,830 و در حال حاضر فقط زیر را انجام دهید. 1500 01:13:53,830 --> 01:14:03,640 اجازه دهید من به جلو و انجام تابع () printf، درصد F، بک اسلش نفر، 1 تقسیم بر 10. 1501 01:14:03,640 --> 01:14:07,430 به عبارت دیگر، اجازه دهید در عمیق تر شیرجه رفتن به 01/10، مانند 1 و تقسیم بر 10. 1502 01:14:07,430 --> 01:14:09,760 مطمئنا، یک کامپیوتر می تواند 1/10 را نشان دهد. 1503 01:14:09,760 --> 01:14:13,620 >> بنابراین اجازه دهید پیش بروید و عدم دقت. 1504 01:14:13,620 --> 01:14:14,390 بیایید ببینید. 1505 01:14:14,390 --> 01:14:16,210 فرمت مشخص نوع دو برابر شود. 1506 01:14:16,210 --> 01:14:18,160 اما دلیل است نوع int هستند. 1507 01:14:18,160 --> 01:14:19,040 چه خبر است؟ 1508 01:14:19,040 --> 01:14:21,970 >> اوه، جالب، پس از آن یک درس را از قبل آموخته است. 1509 01:14:21,970 --> 01:14:26,050 من ادعا، هی، نشان می دهد کامپیوتر من یک شناور با درصد F. 1510 01:14:26,050 --> 01:14:28,200 اما من به آن 2 نوع داده int. 1511 01:14:28,200 --> 01:14:31,120 پس از آن معلوم، من می توانم تعمیر این در از دو راه. 1512 01:14:31,120 --> 01:14:38,430 >> من فقط می تواند یکی را به 1.0 نوبه خود، و 10 به 10.0، که، در واقع، 1513 01:14:38,430 --> 01:14:42,390 اثر تبدیل آنها را به floats-- هنوز هم امیدوارم 1514 01:14:42,390 --> 01:14:43,180 به همان تعداد. 1515 01:14:43,180 --> 01:14:45,880 و یا آن را تبدیل کردن چیزی وجود دارد ما دوباره قبل از اینکه طولانی را ببینید. 1516 01:14:45,880 --> 01:14:47,170 شما می توانید از اعداد، رای دادند. 1517 01:14:47,170 --> 01:14:49,880 >> شما می توانید، با استفاده از این پرانتز بیان، شما می توانید می گویند، 1518 01:14:49,880 --> 01:14:52,560 هی، کامپیوتر، این 10، که من می دانم از نوع int است. 1519 01:14:52,560 --> 01:14:54,660 اما با آن، لطفا، به عنوان اینکه یک شناور است. 1520 01:14:54,660 --> 01:14:56,680 اما این احساس بی ارزش پیچیده است. 1521 01:14:56,680 --> 01:14:59,040 >> برای اهداف ما امروز، اجازه دهید فقط به معنای واقعی کلمه 1522 01:14:59,040 --> 01:15:02,700 آنها مقادیر ممیز شناور با نقطه اعشار، مثل این. 1523 01:15:02,700 --> 01:15:07,060 اجازه دهید من به جلو و مجدد، را عدم دقت، خوب، بریده بریده نقطه 1524 01:15:07,060 --> 01:15:08,870 عدم دقت، را وارد کنید. 1525 01:15:08,870 --> 01:15:10,990 خوب، ما به دنبال خوب است. 1526 01:15:10,990 --> 01:15:18,194 >> 1 تقسیم بر 10، با توجه به من مک در اینجا، است، در واقع، 0.100000. 1527 01:15:18,194 --> 01:15:21,360 حال حاضر، من در مدرسه وجود دارد آموزش داده شد باید یک تعداد نامحدود از 0 باشد. 1528 01:15:21,360 --> 01:15:23,151 بنابراین اجازه دهید حداقل سعی کنید برای دیدن برخی از کسانی که. 1529 01:15:23,151 --> 01:15:26,770 به نظر می رسد که printf کمی است هنوز هم خیال باف از ما شده است با استفاده. 1530 01:15:26,770 --> 01:15:30,890 به نظر می رسد شما لازم نیست که برای مشخص فقط درصد F، و یا فقط درصد من. 1531 01:15:30,890 --> 01:15:33,830 شما در واقع می توانید مشخص کنید برخی از گزینه های کنترل در اینجا. 1532 01:15:33,830 --> 01:15:36,470 >> به طور خاص، من قصد دارم می گویند، با سلام، تابع () printf، 1533 01:15:36,470 --> 01:15:39,660 در واقع من 10 رقم اعشار را نشان می دهد. 1534 01:15:39,660 --> 01:15:40,820 بنابراین به نظر می رسد کمی عجیب و غریب. 1535 01:15:40,820 --> 01:15:42,845 اما می توانید بگویید درصد، نقطه، اعداد که چگونه بسیاری از 1536 01:15:42,845 --> 01:15:44,970 شما می خواهید پس از به دیدن نقطه اعشار، و پس از آن F 1537 01:15:44,970 --> 01:15:48,340 برای تخت، فقط به خاطر این که چه اسناد و مدارک می گوید. 1538 01:15:48,340 --> 01:15:50,080 اجازه بدهید به جلو و صرفه جویی که. 1539 01:15:50,080 --> 01:15:52,460 >> و متوجه بیش از حد، من گرفتن خسته از تایپ مجدد است. 1540 01:15:52,460 --> 01:15:55,900 بنابراین من فقط تنظیم و پایین بر روی کلید من فلش در اینجا. 1541 01:15:55,900 --> 01:15:58,710 و اگر من ضربه بالا، شما می توانید تمام دستورات را ببینید 1542 01:15:58,710 --> 01:16:01,090 که من ساخته شده، نادرست و یا ساخته شده است. 1543 01:16:01,090 --> 01:16:04,630 >> و من قصد دارم به جلو بروید در حال حاضر و در واقع استفاده از آن، ظاهرا. 1544 01:16:04,630 --> 01:16:11,416 را عدم دقت، نقطه بریده بریده imprecision-- تا 1545 01:16:11,416 --> 01:16:13,290 آنچه که من در آموزش داده شد مدرسه چک. 1546 01:16:13,290 --> 01:16:19,010 حتی اگر من آن را چاپ 10 اعشاری این محل ها، در واقع، 0.10000 است. 1547 01:16:19,010 --> 01:16:19,840 اما میدونی چیه؟ 1548 01:16:19,840 --> 01:16:21,150 >> بیایید یک کمی حریص. 1549 01:16:21,150 --> 01:16:23,990 بیایید می گویند، مانند، من 55 را نشان می دهد بعد از اعشار اشاره می کند. 1550 01:16:23,990 --> 01:16:26,160 بیایید واقعا این بازی را برنامه برای چرخش. 1551 01:16:26,160 --> 01:16:31,170 اجازه بدهید من آن را بازسازی با عدم دقت، نقطه اسلش، عدم دقت. 1552 01:16:31,170 --> 01:16:32,390 >> و در اینجا ما بروید. 1553 01:16:32,390 --> 01:16:34,420 دوران کودکی خود را یک دروغ بود. 1554 01:16:34,420 --> 01:16:48,410 ظاهرا، 1 تقسیم بر 10 است که در واقع 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> چه خبره؟ 1556 01:16:49,740 --> 01:16:53,360 خب، معلوم است، اگر شما نوع نگاه دور به اندازه کافی در زمینه 1557 01:16:53,360 --> 01:16:55,950 نمایندگی از این تعداد، آن را در واقع 1558 01:16:55,950 --> 01:17:00,400 دقیقا 1/10، یا 0.1 و یک تعداد نامحدود از صفر. 1559 01:17:00,400 --> 01:17:01,630 در حال حاضر، این است که چرا؟ 1560 01:17:01,630 --> 01:17:06,250 >> خوب، حتی اگر این ساده است تعداد را به ما انسانها، 1 تقسیم بر 10، 1561 01:17:06,250 --> 01:17:10,910 آن را هنوز هم یکی از بی نهایت بسیاری از اعداد است که ما می تواند فکر می کنم تا. 1562 01:17:10,910 --> 01:17:14,490 اما یک کامپیوتر تنها می تواند نشان دهنده finitely بسیاری از اعداد است. 1563 01:17:14,490 --> 01:17:18,710 و به این ترتیب، به طور موثر، چه کامپیوتر به ما نشان نزدیک ترین آن است 1564 01:17:18,710 --> 01:17:22,940 تقریب به تعداد ما می خواهیم به این باور است 1/10، 1565 01:17:22,940 --> 01:17:27,760 یا واقعا 0.10000 تا بی نهایت. 1566 01:17:27,760 --> 01:17:30,425 >> در عوض، هر چند، این است به عنوان نزدیک که آن را می توانید دریافت کنید. 1567 01:17:30,425 --> 01:17:32,300 و، در واقع، اگر شما نگاه در زیر هود، 1568 01:17:32,300 --> 01:17:37,050 به عنوان ما در اینجا با نگاه 55 رقم بعد از اعشار، 1569 01:17:37,050 --> 01:17:39,990 ما در واقع این واقعیت را ببینید. 1570 01:17:39,990 --> 01:17:42,610 در حال حاضر به عنوان یک کنار، اگر شما تا کنون دیده movie-- 1571 01:17:42,610 --> 01:17:45,780 بسیاری از شما احتمالا haven't-- اما سوپرمن 3 چند سال پیش، 1572 01:17:45,780 --> 01:17:49,500 ریچارد پریور اساسا این اهرمی واقعیت در شرکت خود به سرقت مقدار زیادی 1573 01:17:49,500 --> 01:17:53,500 از کسری و کسری از سکه، زیرا company-- عنوان به خاطر دارم، 1574 01:17:53,500 --> 01:17:57,210 آن را به یک while-- اصل است دور انداختن هر چیزی را که مناسب نیست 1575 01:17:57,210 --> 01:17:58,790 به مفهوم سنت. 1576 01:17:58,790 --> 01:18:01,480 >> اما اگر شما اضافه کردن تمام این کوچک، کوچک، اعداد کوچک دوباره، 1577 01:18:01,480 --> 01:18:04,960 و دوباره، و دوباره، شما می توانید، به عنوان در پرونده او، یک مقدار خوبی از پول است. 1578 01:18:04,960 --> 01:18:08,010 >> که همان ایده کردن با پاره پاره شد اخیر، اما هنوز هم در حال حاضر قدیمی تر 1579 01:18:08,010 --> 01:18:10,500 فیلم، به نام فضای اداری، که در آن بچه ها در این فیلم، در 1580 01:18:10,500 --> 01:18:13,501 انجام همین کار، آن را پیچ به طور کامل، به پایان رسید تا با راه بیش از حد 1581 01:18:13,501 --> 01:18:14,666 پول در حساب بانکی خود را. 1582 01:18:14,666 --> 01:18:15,800 این همه بسیار مشکوک بود. 1583 01:18:15,800 --> 01:18:19,290 اما در پایان روز، عدم دقت در اطراف ما است. 1584 01:18:19,290 --> 01:18:22,240 >> و این، بیش از حد، می تواند وحشتناکی مورد. 1585 01:18:22,240 --> 01:18:25,590 معلوم می شود که سوپرمن 3 و فضای اداری به کنار، وجود دارد 1586 01:18:25,590 --> 01:18:28,460 می تواند برخی از بسیار واقعی انشعابات جهان 1587 01:18:28,460 --> 01:18:32,290 از واقعیت های مبهم نمایندگی از داده 1588 01:18:32,290 --> 01:18:34,770 که حتی ما به انسان این روز لزوما 1589 01:18:34,770 --> 01:18:38,230 درک و همچنین ما باید، و یا به یاد داشته باشید به عنوان اغلب به عنوان ما باید. 1590 01:18:38,230 --> 01:18:42,950 و، در واقع، کلیپ زیر است از نگاه برخی از جهان بسیار واقعی 1591 01:18:42,950 --> 01:18:47,730 پیامدهای چه می شود اگر شما اتفاق می افتد از عدم دقت درک نیست که 1592 01:18:47,730 --> 01:18:50,065 می تواند در تعداد نمایندگی اتفاق می افتد. 1593 01:18:50,065 --> 01:18:51,300 >> [پخش ویدئو] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers، ما همه آمده ام تا قبول مشکلات اغلب نا امید که 1595 01:18:55,620 --> 01:19:00,310 با them-- اشکالات، ویروس ها، و اشکالات نرم افزار، 1596 01:19:00,310 --> 01:19:03,130 برای قیمت های کوچک به پرداخت برای راحتی. 1597 01:19:03,130 --> 01:19:07,800 اما در تکنولوژی بالا و با سرعت بالا برنامه های فضایی نظامی و برنامه های کاربردی، 1598 01:19:07,800 --> 01:19:12,800 کوچکترین مشکل می توان به فاجعه بزرگ. 1599 01:19:12,800 --> 01:19:18,900 >> در 1996 ژوئن 4، دانشمندان آماده برای راه اندازی یک بدون سرنشین موشک Ariane 5 موشک. 1600 01:19:18,900 --> 01:19:21,220 این حامل علمی ماهواره 1601 01:19:21,220 --> 01:19:24,600 به ایجاد دقیقا چگونه تعامل میدان مغناطیسی زمین 1602 01:19:24,600 --> 01:19:27,410 با بادهای خورشیدی. 1603 01:19:27,410 --> 01:19:30,800 راکت برای ساخته شد آژانس فضایی اروپا، 1604 01:19:30,800 --> 01:19:34,370 و از امکانات خود را برداشته در ساحل گویان فرانسه. 1605 01:19:34,370 --> 01:19:37,540 >> -At حدود 37 ثانیه به پرواز، آنها برای اولین بار 1606 01:19:37,540 --> 01:19:39,270 چیزی متوجه شد که اشتباه است. 1607 01:19:39,270 --> 01:19:42,250 نازل در آهنی شد راه آنها واقعا باید نیست. 1608 01:19:42,250 --> 01:19:46,580 حدود 40 ثانیه به پرواز، به وضوح، خودرو دچار مشکل شد. 1609 01:19:46,580 --> 01:19:48,850 >> و این زمانی که آنها ساخته شده تصمیم به نابود کردن آن. 1610 01:19:48,850 --> 01:19:52,780 افسر ایمنی محدوده، با جرات فوق العاده، دکمه، 1611 01:19:52,780 --> 01:19:58,150 منفجر موشک، قبل از آن می تواند تبدیل شدن به یک خطر به امنیت عمومی. 1612 01:19:58,150 --> 01:20:01,060 >> -این قبل از ازدواج بود سفر از موشک Ariane 5. 1613 01:20:01,060 --> 01:20:03,960 و تخریب آن را گرفت جای به دلیل نقص 1614 01:20:03,960 --> 01:20:05,822 جاسازی شده در نرم افزار موشک است. 1615 01:20:05,822 --> 01:20:08,280 بانک مشکل در آریان بود بود که تعدادی وجود دارد که 1616 01:20:08,280 --> 01:20:10,600 مورد نیاز 64 بیت به بیان است. 1617 01:20:10,600 --> 01:20:13,590 و آنها می خواستند برای تبدیل آن را به تعداد 16 بیتی. 1618 01:20:13,590 --> 01:20:15,610 گمان می کردند که تعداد هرگز رفتن 1619 01:20:15,610 --> 01:20:20,980 به بسیار بزرگ، که بسیاری از کسانی رقم در تعداد 64 بیتی صفر بود. 1620 01:20:20,980 --> 01:20:22,440 آنها اشتباه می کردند. 1621 01:20:22,440 --> 01:20:25,060 >> بانک ناتوانی یک برنامه نرم افزار برای پذیرش 1622 01:20:25,060 --> 01:20:29,510 نوع تعداد تولید شده توسط یکی دیگر از در ریشه شکست بود. 1623 01:20:29,510 --> 01:20:34,350 توسعه نرم افزار تبدیل شده بود بخش بسیار پر هزینه از تکنولوژی جدید است. 1624 01:20:34,350 --> 01:20:38,140 موشک آریان بسیار شده است موفق است، بنابراین بسیاری از نرم افزار 1625 01:20:38,140 --> 01:20:41,550 ایجاد شده برای آن نیز بود مورد استفاده در موشک Ariane 5. 1626 01:20:41,550 --> 01:20:47,940 >> بانک مشکل اساسی این بود که آریان 5 سریع تر بود، شتاب سریع تر است. 1627 01:20:47,940 --> 01:20:51,450 و نرم افزار بود حساب برای که. 1628 01:20:51,450 --> 01:20:55,060 >> بانک نابودی موشک یک فاجعه مالی بزرگ بود، 1629 01:20:55,060 --> 01:20:58,790 همه به دلیل خطای نرم افزار دقیقه. 1630 01:20:58,790 --> 01:21:01,210 اما این اولین نیست زمان مشکلات تبدیل داده ها 1631 01:21:01,210 --> 01:21:04,820 فن آوری موشکی مدرن به ستوه آورده بود. 1632 01:21:04,820 --> 01:21:08,050 >> -در سال 1991، با شروع از جنگ اول خلیج فارس، 1633 01:21:08,050 --> 01:21:10,570 پاتریوت موشک تجربه یک نوع مشابه 1634 01:21:10,570 --> 01:21:12,800 مشکل تبدیل شماره. 1635 01:21:12,800 --> 01:21:16,090 و به عنوان یک نتیجه، 28 نفر، 28 سربازان آمریکایی، 1636 01:21:16,090 --> 01:21:19,080 کشته و حدود شد 100 تن دیگر زخمی شدند 1637 01:21:19,080 --> 01:21:22,780 زمانی که Patriot، که قرار بود برای محافظت در برابر scuds ورودی، 1638 01:21:22,780 --> 01:21:25,830 موفق به آتش موشک. 1639 01:21:25,830 --> 01:21:31,670 >> هنگامی عراق به کویت حمله و امریکا راه اندازی طوفان صحرا در اوایل سال 1991، 1640 01:21:31,670 --> 01:21:35,780 پاتریوت موشک مستقر شدند برای محافظت از عربستان سعودی و اسرائیل 1641 01:21:35,780 --> 01:21:39,230 از حملات موشکی اسکاد عراق است. 1642 01:21:39,230 --> 01:21:43,810 پاتریوت یک رسانه-محدوده ایالات متحده است سطح به هوا سیستم، تولید 1643 01:21:43,810 --> 01:21:45,770 توسط شرکت ریتون. 1644 01:21:45,770 --> 01:21:52,340 >> بانک اندازه از رهگیر پاتریوت خود را در مورد حدود 20 فوت طول دارد. 1645 01:21:52,340 --> 01:21:55,230 و وزن آن حدود 2000 پوند است. 1646 01:21:55,230 --> 01:21:59,320 و آن را حمل یک کلاهک در حدود، من فکر می کنم حدود 150 پوند است. 1647 01:21:59,320 --> 01:22:03,930 و کلاهک است یک ماده منفجره بالا، که 1648 01:22:03,930 --> 01:22:07,330 است قطعات در اطراف آن. 1649 01:22:07,330 --> 01:22:11,680 محفظه از کلاهک است طراحی شده برای شبیه چارپاره عمل می کنند. 1650 01:22:11,680 --> 01:22:14,110 >> بانک موشک انجام چهار در ظرف، 1651 01:22:14,110 --> 01:22:17,130 و توسط یک تریلر نیمه منتقل می شود. 1652 01:22:17,130 --> 01:22:24,930 >> -روز سیستم پاتریوت ضد موشکی تماس حداقل به 20 سال در حال حاضر. 1653 01:22:24,930 --> 01:22:28,420 این روش در اصل طراحی شده بود به عنوان یک موشک دفاع هوایی 1654 01:22:28,420 --> 01:22:30,720 به شلیک کردن هواپیما دشمن. 1655 01:22:30,720 --> 01:22:34,500 در جنگ اول خلیج فارس، وقتی که جنگ آمد همراه، 1656 01:22:34,500 --> 01:22:39,745 ارتش خواست به استفاده از آن را به شلیک کردن scuds، نه هواپیما. 1657 01:22:39,745 --> 01:22:43,620 >> نیروی هوایی عراق بود نه آنقدر از یک مشکل. 1658 01:22:43,620 --> 01:22:46,670 اما ارتش در مورد scuds نگران بود. 1659 01:22:46,670 --> 01:22:50,170 و به طوری که آنها به تلاش ارتقاء پاتریوت. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting دشمن موشک سفر در ماخ 5 1661 01:22:52,800 --> 01:22:55,830 رفتن به چالش کشیدن به اندازه کافی. 1662 01:22:55,830 --> 01:22:58,490 اما زمانی که پاتریوت به خدمت عجله شد، 1663 01:22:58,490 --> 01:23:02,860 ارتش بود از آگاه نیست اصلاح عراق ساخته شده است که 1664 01:23:02,860 --> 01:23:05,930 scuds خود را تقریبا غیر ممکن به ضربه. 1665 01:23:05,930 --> 01:23:10,740 >> چه اتفاق افتاده است scuds است که در سال های آینده ناپایدار بودند. 1666 01:23:10,740 --> 01:23:11,692 آنها لرزش شد. 1667 01:23:11,692 --> 01:23:14,910 دلیل این کار این بود عراقی ها، به منظور 1668 01:23:14,910 --> 01:23:18,280 برای به دست آوردن 600 کیلومتر از یک فاصله 300 کیلومتری 1669 01:23:18,280 --> 01:23:21,700 موشک دامنه، وزن و جو در زمان از کلاهک جلو. 1670 01:23:21,700 --> 01:23:23,390 آنها کلاهک سبک تر ساخته شده است. 1671 01:23:23,390 --> 01:23:27,330 >> بنابراین در حال حاضر پاتریوت است تلاش برای به حرکت تند و سریع در آمده است. 1672 01:23:27,330 --> 01:23:30,230 و بسیاری از زمان، اکثریت قریب به اتفاق از زمان، 1673 01:23:30,230 --> 01:23:32,940 آن را فقط توسط اسکاد پرواز. 1674 01:23:32,940 --> 01:23:37,260 هنگامی که اپراتور سیستم پاتریوت متوجه پاتریوت از دست رفته هدف خود را، 1675 01:23:37,260 --> 01:23:41,690 آنها کلاهک پاتریوت منفجر برای جلوگیری از تلفات احتمالی اگر 1676 01:23:41,690 --> 01:23:44,570 به سقوط به زمین اجازه داده شد. 1677 01:23:44,570 --> 01:23:48,790 >> یعنی چیزی بود که بسیاری از مردم را دیدم، آن گوی های آتشین بزرگ در آسمان، 1678 01:23:48,790 --> 01:23:54,550 و به عنوان اشتباه ره گیری از کلاهک اسکاد. 1679 01:23:54,550 --> 01:23:56,630 >> گرچه در شب آسمان، میهن پرستان ظاهر شد 1680 01:23:56,630 --> 01:24:00,370 به موفقیت از بین بردن Scuds، در ظهران، 1681 01:24:00,370 --> 01:24:03,360 وجود دارد می تواند بدون اشتباه در مورد عملکرد آن است. 1682 01:24:03,360 --> 01:24:07,970 وجود دارد، سیستم رادار پاتریوت در پیگیری از دست داده یک اسکاد ورودی، 1683 01:24:07,970 --> 01:24:10,721 و هرگز به دلیل راه اندازی به یک نقص نرم افزار. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 این اسرائیلی که برای اولین بار کشف شد که دیگر سیستم بود، 1686 01:24:18,940 --> 01:24:22,690 بیشتر اختلاف زمان شد، با توجه به یک ساعت تعبیه شده 1687 01:24:22,690 --> 01:24:24,810 در کامپیوتر سیستم است. 1688 01:24:24,810 --> 01:24:28,210 >> -درباره دو هفته قبل از فاجعه در ظهران، 1689 01:24:28,210 --> 01:24:30,770 اسرائیل گزارش وزارت دفاع 1690 01:24:30,770 --> 01:24:32,590 که سیستم از دست دادن زمان شد. 1691 01:24:32,590 --> 01:24:35,360 پس از حدود هشت ساعت یا در حال اجرا، آنها متوجه شده است که سیستم 1692 01:24:35,360 --> 01:24:37,720 تبدیل شدن به طرز محسوسی کمتر دقیق است. 1693 01:24:37,720 --> 01:24:41,900 وزارت دفاع در پاسخ به گفتن تمام پاتریوت 1694 01:24:41,900 --> 01:24:44,950 سیستم به ترک برای مدت زمان طولانی. 1695 01:24:44,950 --> 01:24:49,160 آنها گفتند هرگز چه مدت زمان طولانی was-- هشت ساعت، 10 ساعت، 1000 ساعت است. 1696 01:24:49,160 --> 01:24:51,360 هیچ کس نمی دانست. 1697 01:24:51,360 --> 01:24:53,380 >> بانک باتری پاتریوت مستقر در پادگان 1698 01:24:53,380 --> 01:24:58,350 در ظهران و ناقص داخلی آن ساعت در بیش از 100 ساعت بوده است 1699 01:24:58,350 --> 01:25:01,670 در شب فوریه 25. 1700 01:25:01,670 --> 01:25:05,917 >> آن را هم ردیابی با دقت در حدود یک دهم ثانیه. 1701 01:25:05,917 --> 01:25:08,000 در حال حاضر، دهم ثانیه تعداد جالب است، 1702 01:25:08,000 --> 01:25:11,920 زیرا نمی تواند بیان شود در باینری دقیقا، که 1703 01:25:11,920 --> 01:25:16,820 معنی آن را نمی توان دقیقا بیان شود در هر کامپیوتر دیجیتال مدرن. 1704 01:25:16,820 --> 01:25:18,540 این سخت است به این باور. 1705 01:25:18,540 --> 01:25:21,210 >> اما استفاده از این به عنوان مثال. 1706 01:25:21,210 --> 01:25:23,540 بیایید شماره یک سوم. 1707 01:25:23,540 --> 01:25:27,350 یک سوم نمی تواند بیان شده در اعشاری دقیقا. 1708 01:25:27,350 --> 01:25:32,080 یک سوم 0.333 است در جریان است برای بی نهایت. 1709 01:25:32,080 --> 01:25:36,480 >> هیچ راهی برای انجام این کار با وجود دقت مطلق در دهدهی. 1710 01:25:36,480 --> 01:25:39,560 که دقیقا همان نوع از مشکل است که در پاتریوت اتفاق افتاده است. 1711 01:25:39,560 --> 01:25:44,100 دیگر سیستم زد، بدتر خطای زمان تبدیل شد. 1712 01:25:44,100 --> 01:25:48,890 >> پس از 100 ساعت از عمل، خطا در زمان فقط حدود یک سوم شد 1713 01:25:48,890 --> 01:25:50,600 از یک ثانیه. 1714 01:25:50,600 --> 01:25:54,210 اما از نظر هدف قرار دادن یک موشک سفر در ماخ 5، 1715 01:25:54,210 --> 01:25:58,710 آن را در یک ردیابی منجر خطا از بیش از 600 متر است. 1716 01:25:58,710 --> 01:26:02,120 این امر می تواند یک خطای مهلک برای سربازان در چه 1717 01:26:02,120 --> 01:26:08,940 اتفاق افتاده است راه اندازی اسکاد بود تشخیص داده شده توسط ماهواره های هشدار اولیه 1718 01:26:08,940 --> 01:26:12,860 و آنها می دانستند که اسکاد بود آینده در جهت خود. 1719 01:26:12,860 --> 01:26:15,320 آنها نمی دانستند که در آن بود در آینده. 1720 01:26:15,320 --> 01:26:18,250 >> آن را در حال حاضر تا رادار بود بخشی از سیستم پاتریوت 1721 01:26:18,250 --> 01:26:23,190 دفاع از ظهران به کردهاید و حفظ آهنگ از موشک دشمن وارده. 1722 01:26:23,190 --> 01:26:24,609 >> بانک رادار بسیار باهوش بود. 1723 01:26:24,609 --> 01:26:26,650 در واقع عملا پیگیری موقعیت اسکاد، 1724 01:26:26,650 --> 01:26:30,350 و پس از آن پیش بینی که در آن احتمالا خواهد بود در کنار هم رادار ارسال 1725 01:26:30,350 --> 01:26:31,420 یک پالس است. 1726 01:26:31,420 --> 01:26:33,110 که یک دروازه وسیعی نامیده می شد. 1727 01:26:33,110 --> 01:26:37,660 >> سپس،، یک بار پاتریوت تصمیم می گیرد زمان کافی 1728 01:26:37,660 --> 01:26:42,450 گذشت برای رفتن به عقب و بررسی بعدی مکان برای این شی تشخیص داده، 1729 01:26:42,450 --> 01:26:43,600 از آن می رود. 1730 01:26:43,600 --> 01:26:48,650 بنابراین، هنگامی که آن را رفت و برگشت به اشتباه محل، آن را پس از آن هیچ شی را می بیند. 1731 01:26:48,650 --> 01:26:52,160 و آن تصمیم می گیرد که هیچ وجود دارد شیء، آن را تشخیص نادرست بود، 1732 01:26:52,160 --> 01:26:53,930 و قطره مسیر. 1733 01:26:53,930 --> 01:26:57,030 >> بانک اسکاد ورودی ناپدید شد از صفحه رادار. 1734 01:26:57,030 --> 01:27:00,260 و ثانیه بعد، آن را به سربازخانه ناودان. 1735 01:27:00,260 --> 01:27:06,150 اسکاد کشته شدن 28 و آخرین نفر بود یکی در طول جنگ اول خلیج فارس شلیک کردند. 1736 01:27:06,150 --> 01:27:11,960 >> متأسفانه، نرم افزار به روز در ظهران وارد روز بعد. 1737 01:27:11,960 --> 01:27:14,930 نقص نرم افزار به حال شده ثابت، بسته شدن 1738 01:27:14,930 --> 01:27:19,806 یک فصل در مشکل تاریخ موشک. 1739 01:27:19,806 --> 01:27:20,729 >> [پخش ویدئو] 1740 01:27:20,729 --> 01:27:23,520 DAVID J. مالان: پس این است که همه به می گویند که این مسائل از سرریز 1741 01:27:23,520 --> 01:27:25,860 و عدم دقت تمام بیش از حد واقعی است. 1742 01:27:25,860 --> 01:27:26,920 پس چگونه ما به اینجا رسیدیم؟ 1743 01:27:26,920 --> 01:27:28,895 ما فقط با صحبت کردن در مورد تابع () printf آغاز شد. 1744 01:27:28,895 --> 01:27:31,270 باز هم، این تابع است که چیزی چاپ به روی صفحه نمایش، 1745 01:27:31,270 --> 01:27:33,450 و ما پس از آن معرفی چند توابع دیگر 1746 01:27:33,450 --> 01:27:34,945 از به اصطلاح کتابخانه CS50 است. 1747 01:27:34,945 --> 01:27:36,910 و ما را به ادامه این در زمان مقتضی را ببینید. 1748 01:27:36,910 --> 01:27:40,760 و ما، به ویژه، استفاده از رشته GET، و هوشمند، و در حال حاضر نیز شناور دریافت کنید، 1749 01:27:40,760 --> 01:27:44,410 و در عین حال دیگران هنوز هم خواهد ما روبرو می شوند و استفاده از خودمان قبل از اینکه طولانی. 1750 01:27:44,410 --> 01:27:47,220 >> اما در مواردی، باید ما در حال حاضر دیده می شود نیاز 1751 01:27:47,220 --> 01:27:50,520 برای ذخیره آنچه آن دسته از توابع دست تماس؟ 1752 01:27:50,520 --> 01:27:52,920 آنها به ما یک رشته دست، و یا یک int، و یا یک شناور. 1753 01:27:52,920 --> 01:27:56,070 و گاهی اوقات ما نیاز به قرار دادن که رشته، یا از نوع int و یا شناور، جایی. 1754 01:27:56,070 --> 01:28:00,100 >> و برای ذخیره آن چیزهایی، به یاد تنها مانند در ابتدا، ما باید متغیر. 1755 01:28:00,100 --> 01:28:03,260 اما بر خلاف در ابتدا، در C ما انواع واقعی 1756 01:28:03,260 --> 01:28:05,530 داده variables-- انواع، generally-- بیشتر 1757 01:28:05,530 --> 01:28:08,640 در میان آنها، یک رشته، یک int، یک شناور، و این دیگران هنوز هم. 1758 01:28:08,640 --> 01:28:12,321 >> و تا زمانی که ما متغیرهای اعلام در C، ما باید به اعلام انواع داده های ما. 1759 01:28:12,321 --> 01:28:14,820 این چیزی نیست خواهیم باید انجام دهید بعد در ترم 1760 01:28:14,820 --> 01:28:16,810 به عنوان ما به زبان های دیگر انتقال. 1761 01:28:16,810 --> 01:28:19,610 اما در حال حاضر، ما نیازی به پیشینی در پیش است، 1762 01:28:19,610 --> 01:28:24,370 توضیح به کامپیوتر چه نوع متغیر ما می خواهیم آن را به ما بدهد. 1763 01:28:24,370 --> 01:28:27,290 >> در حال حاضر، در عین حال، به چاپ این نوع از انواع داده ها، 1764 01:28:27,290 --> 01:28:29,570 ما باید به تابع () printf چه انتظار می رود. 1765 01:28:29,570 --> 01:28:32,450 و ما دیدیم که درصد برای رشته ها، و درصد من برای اعداد صحیح، 1766 01:28:32,450 --> 01:28:33,790 و چند نفر دیگر در حال حاضر. 1767 01:28:33,790 --> 01:28:37,237 و کسانی که به سادگی مورد نیاز برای ارائه بصری 1768 01:28:37,237 --> 01:28:38,070 از این اطلاعات. 1769 01:28:38,070 --> 01:28:42,080 >> و هر یک از این در واقع می تواند پارامتری و یا بهینه سازی در برخی از راه، 1770 01:28:42,080 --> 01:28:45,370 اگر شما می خواهید برای پیشبرد کنترل نوع خروجی که شما را دریافت کنید. 1771 01:28:45,370 --> 01:28:49,604 و، در واقع، معلوم است که نه تنها است بک اسلش نفر برای یک خط جدید وجود دارد. 1772 01:28:49,604 --> 01:28:52,520 چیز دیگری به نام بک اسلش وجود دارد R برای یک بازگشت نورد، که 1773 01:28:52,520 --> 01:28:54,360 بیشتر شبیه به یک است ماشین تحریر مدرسه قدیمی، 1774 01:28:54,360 --> 01:28:57,690 و همچنین ویندوز برای سال های بسیاری استفاده می شود. 1775 01:28:57,690 --> 01:28:59,690 >> تی بک اسلش برای زبانه وجود دارد. 1776 01:28:59,690 --> 01:29:03,170 معلوم است، که اگر شما می خواهید نقل قول در داخل یک رشته، 1777 01:29:03,170 --> 01:29:05,000 به یاد بیاورید که ما استفاده کرده ایم دو نقل قول 1778 01:29:05,000 --> 01:29:07,900 نقل قول در سمت چپ و سمت راست به پایان می رسد از رشته ما تا کنون. 1779 01:29:07,900 --> 01:29:09,420 که به نظر می رسد به اشتباه است. 1780 01:29:09,420 --> 01:29:12,503 >> اگر شما می خواهید برای قرار دادن یک نقل قول در وسط یک string-- و، در واقع، 1781 01:29:12,503 --> 01:29:13,670 گیج کننده است برای دیدن. 1782 01:29:13,670 --> 01:29:17,120 و بنابراین شما مجبور به فرار، پس به صحبت می کنند، دو نقل قول با چیزی 1783 01:29:17,120 --> 01:29:18,860 مانند، به معنای واقعی کلمه، بک اسلش نقل قول. 1784 01:29:18,860 --> 01:29:20,230 و برخی دیگر از هنوز هم وجود دارد. 1785 01:29:20,230 --> 01:29:24,540 و خواهیم دید که بیشتر از کسانی که در استفاده واقعی قبل از اینکه طولانی. 1786 01:29:24,540 --> 01:29:27,930 >> بنابراین اجازه دهید از انتقال داده ها، و نمایندگی، 1787 01:29:27,930 --> 01:29:30,820 و عملگرهای محاسباتی، همه که به ما برخی از ساختمان 1788 01:29:30,820 --> 01:29:32,070 بلوک با آن به بازی. 1789 01:29:32,070 --> 01:29:34,481 اما در حال حاضر اجازه دهید در واقع به ما بقیه از واژگان 1790 01:29:34,481 --> 01:29:36,230 که ما در حال حاضر هفته گذشته با خراش 1791 01:29:36,230 --> 01:29:39,350 با در نظر گرفتن نگاهی به برخی دیگر سازه در C-- نه همه آنها. 1792 01:29:39,350 --> 01:29:41,680 اما ایده های ما برای دیدن واقعا فقط 1793 01:29:41,680 --> 01:29:45,610 به ترجمه از تاکید یک زبان، خراش، به دیگری، C. 1794 01:29:45,610 --> 01:29:48,470 >> و در طول زمان، ما را انتخاب کنید تا ابزار بیشتر برای ابزار ما، 1795 01:29:48,470 --> 01:29:49,820 پس به صحبت، نحوی. 1796 01:29:49,820 --> 01:29:54,190 و، در واقع، شما خواهید دید که ایده اکنون نه از هفته گذشته آشنا. 1797 01:29:54,190 --> 01:29:55,200 بنابراین اجازه دهید این کار را. 1798 01:29:55,200 --> 01:29:58,870 >> اجازه دهید به جلو و شلاق تا یک برنامه که در واقع با استفاده از برخی عبارات، 1799 01:29:58,870 --> 01:30:00,720 عبارت بولی باشد. 1800 01:30:00,720 --> 01:30:02,810 اجازه دهید من جلو بروید اینجا و ایجاد یک فایل جدید. 1801 01:30:02,810 --> 01:30:06,090 من این condition.c تماس بگیرید. 1802 01:30:06,090 --> 01:30:09,350 >> اجازه دهید من به جلو و شامل کتابخانه CS50. 1803 01:30:09,350 --> 01:30:12,640 و اجازه دهید من به جلو و شامل استاندارد IO.h برای توابع ما، 1804 01:30:12,640 --> 01:30:14,690 و تابع () printf، و به ترتیب است. 1805 01:30:14,690 --> 01:30:18,900 اجازه دهید من خودم که تکیهکلامهای دادن اعتبار اصلی اعضای هیات، که توضیح خواهیم 1806 01:30:18,900 --> 01:30:20,360 دوباره به در آینده است. 1807 01:30:20,360 --> 01:30:23,820 >> حالا اجازه دهید من به جلو بروید و به خودم یک int طریق INT دریافت. 1808 01:30:23,820 --> 01:30:25,970 سپس اجازه دهید من به جلو و انجام این کار. 1809 01:30:25,970 --> 01:30:30,150 من می خواهم بگویم اگر من less-- اجازه دهید تمایز بین مثبت، منفی، 1810 01:30:30,150 --> 01:30:31,260 یا ارزش صفر است. 1811 01:30:31,260 --> 01:30:36,630 >> بنابراین اگر من کمتر از صفر است، به من اجازه فقط باید این برنامه به سادگی می گویند، 1812 01:30:36,630 --> 01:30:42,370 منفی، بک اسلش نفر، دیگری اگر من بزرگتر از صفر است. 1813 01:30:42,370 --> 01:30:47,030 در حال حاضر من، البته، رفتن به می گویند تابع () printf مثبت، بک اسلش نفر. 1814 01:30:47,030 --> 01:30:50,690 و پس از آن دیگری اگر-- من می توانم این کار را. 1815 01:30:50,690 --> 01:30:53,410 >> اگر من برابر با 0 من می تواند انجام. 1816 01:30:53,410 --> 01:30:55,840 اما من می خواهم گیری در حداقل یک اشتباه در حال حاضر. 1817 01:30:55,840 --> 01:30:59,480 به یاد بیاورید که علامت مساوی است برابر نیست، به عنوان ما انسان ها آن را می دانم. 1818 01:30:59,480 --> 01:31:01,010 >> اما عملگر انتساب است. 1819 01:31:01,010 --> 01:31:05,640 و ما نمی خواهیم به 0 در راست و آن را در من در سمت چپ. 1820 01:31:05,640 --> 01:31:11,810 بنابراین برای جلوگیری از این سردرگمی، و یا شاید سوء استفاده از علامت مساوی، 1821 01:31:11,810 --> 01:31:14,740 انسان تصمیم گرفت چند سال پیش که در بسیاری از زبان های برنامه نویسی 1822 01:31:14,740 --> 01:31:18,000 زمانی که می خواهید برای برابری بررسی بین چپ و راست، 1823 01:31:18,000 --> 01:31:19,635 شما در واقع استفاده برابر است با برابر. 1824 01:31:19,635 --> 01:31:21,010 بنابراین شما ضربه علامت مساوی دو بار. 1825 01:31:21,010 --> 01:31:25,600 هنگامی که شما می خواهید به اختصاص از راست به سمت چپ، شما یک علامت مساوی استفاده کنید. 1826 01:31:25,600 --> 01:31:29,360 بنابراین ما می تواند this-- دیگری را انجام اگر من برابر با برابر صفر است. 1827 01:31:29,360 --> 01:31:31,710 >> من پس از آن می تواند برود و باز آکولاد من، 1828 01:31:31,710 --> 01:31:36,087 و می گویند، تابع () printf 0، بک اسلش نفر، انجام می شود. 1829 01:31:36,087 --> 01:31:38,170 اما به یاد داشته باشید که چگونه این چنگال در جاده ها می تواند کار کند. 1830 01:31:38,170 --> 01:31:39,836 و، واقعا، فقط در مورد منطق فکر می کنم. 1831 01:31:39,836 --> 01:31:41,510 من یک عدد است. 1832 01:31:41,510 --> 01:31:43,320 این یک عدد صحیح است، به طور خاص. 1833 01:31:43,320 --> 01:31:48,600 و این بدان معناست که آن را به کمتر از 0، یا بیشتر از 0، 0 یا. 1834 01:31:48,600 --> 01:31:51,600 بنابراین نوع از این وجود دارد مورد پیش فرض ضمنی. 1835 01:31:51,600 --> 01:31:54,920 >> و بنابراین ما می تواند، درست مثل ابتدا، توزیع با دیگری اگر، 1836 01:31:54,920 --> 01:31:55,747 و فقط می گویند دیگری. 1837 01:31:55,747 --> 01:31:57,830 منطقی، اگر شما در برنامه نویس می دانم که تنها وجود دارد 1838 01:31:57,830 --> 01:32:01,635 سه سطل به که سناریو می توانید اولین fall--، 1839 01:32:01,635 --> 01:32:03,510 دوم، و یا سوم در این case-- نمی 1840 01:32:03,510 --> 01:32:07,100 زحمت اضافه کردن دقت بیشتر و منطق اضافی وجود دارد. 1841 01:32:07,100 --> 01:32:09,690 فقط جلو با رفتن مورد به طور پیش فرض در اینجا از دیگری. 1842 01:32:09,690 --> 01:32:11,950 >> در حال حاضر، اجازه دهید به جلو پس از ذخیره این کار، مطمئن 1843 01:32:11,950 --> 01:32:15,760 شرایط نقطه بریده بریده conditions-- یک رابط کاربری عالی، 1844 01:32:15,760 --> 01:32:18,914 چون من باعث نمی کاربران، همانطور که قبلا ذکر شده است. 1845 01:32:18,914 --> 01:32:19,580 اما این خوب است. 1846 01:32:19,580 --> 01:32:20,454 ما آن را ساده نگه دارید. 1847 01:32:20,454 --> 01:32:21,890 بیایید سعی کنید تعداد 42. 1848 01:32:21,890 --> 01:32:23,240 و این مثبت است. 1849 01:32:23,240 --> 01:32:26,120 بیایید سعی کنید تعداد منفی 42، منفی است. 1850 01:32:26,120 --> 01:32:28,244 >> بیایید سعی کنید مقدار 0. 1851 01:32:28,244 --> 01:32:29,160 و، در واقع، کار می کند. 1852 01:32:29,160 --> 01:32:33,900 در حال حاضر، شما با مشکلات قبل از دیدن طولانی، همه چیز آزمایش، سه بار، 1853 01:32:33,900 --> 01:32:34,980 احتمالا کافی نیست. 1854 01:32:34,980 --> 01:32:37,438 شما احتمالا می خواهید به آزمون برخی اعداد بزرگتر، برخی کوچکتر 1855 01:32:37,438 --> 01:32:40,520 اعداد، برخی از موارد گوشه ای، به عنوان ما به آنها توصیف می کنند. 1856 01:32:40,520 --> 01:32:42,500 >> اما در حال حاضر، این است که برنامه بسیار ساده است. 1857 01:32:42,500 --> 01:32:45,160 و من کاملا مطمئنم که، منطقی، که آن را به سه مورد می افتد. 1858 01:32:45,160 --> 01:32:49,360 و، در واقع، حتی اگر ما فقط با تمرکز بر جنبه های منفی بالقوه 1859 01:32:49,360 --> 01:32:53,480 از عدم دقت و سرریز، در واقعیت که در آن بسیاری از مشکلات CS50 را، 1860 01:32:53,480 --> 01:32:56,000 ما می رویم نیست که نگران باشید در مورد، تمام وقت، 1861 01:32:56,000 --> 01:32:59,050 این مسائل از سرریز و عدم دقت، دلیل، در واقع، در C، 1862 01:32:59,050 --> 01:33:01,889 آن را در واقع نه همه که آسان برای جلوگیری از آن چیز است. 1863 01:33:01,889 --> 01:33:04,180 اگر شما می خواهید به تعداد بالا بزرگتر، و بزرگتر، و بزرگتر، 1864 01:33:04,180 --> 01:33:07,510 که معلوم است تکنیک های شما وجود دارد می توانید استفاده کنید، اغلب شامل همه چیز به نام 1865 01:33:07,510 --> 01:33:11,240 کتابخانه ها، مجموعه ای از کد که مردم دیگر نوشت که شما می توانید استفاده کنید، 1866 01:33:11,240 --> 01:33:13,910 و زبان های دیگر مانند جاوا و دیگران، در واقع 1867 01:33:13,910 --> 01:33:15,800 آن را بسیار آسان تر به دفعات مشاهده شده و حتی بالاتر. 1868 01:33:15,800 --> 01:33:19,810 پس از آن واقعا است برخی از این خطرات یک تابع از زبان استفاده می کنید. 1869 01:33:19,810 --> 01:33:22,710 و در هفته های آینده، ما ببینید که چگونه خطرناک C واقعا 1870 01:33:22,710 --> 01:33:24,950 می تواند اگر شما آن را استفاده نمی کند. 1871 01:33:24,950 --> 01:33:27,610 اما از وجود دارد، و با پایتون و جاوا اسکریپت، خواهد 1872 01:33:27,610 --> 01:33:32,620 ما در لایه پوشش حمایت های اضافی، و اجرا کمتر از کسانی خطرات. 1873 01:33:32,620 --> 01:33:35,820 >> بنابراین اجازه دهید کمی بیشتر منطق جالب در برنامه های ما. 1874 01:33:35,820 --> 01:33:39,110 بنابراین اجازه دهید من به جلو و ایجاد برنامه ای به نام منطقی 1875 01:33:39,110 --> 01:33:43,804 فقط بنابراین من می تواند با برخی از بازی منطق، logical.c. 1876 01:33:43,804 --> 01:33:46,870 من فقط کپی کنید و برخی کد از پیش از آن پس من به عقب بر گردیم 1877 01:33:46,870 --> 01:33:49,950 این نقطه شروع خوب است. 1878 01:33:49,950 --> 01:33:53,980 >> اجازه دهید من این زمان انجام C. کاراکتر من رفتن به آن نام C را 1879 01:33:53,980 --> 01:33:58,510 فقط به خاطر اینکه متعارف، یک شخصیت از کاربر. 1880 01:33:58,510 --> 01:34:00,730 و اجازه دهید مانند وانمود من اجرای بخشی 1881 01:34:00,730 --> 01:34:04,130 که برنامه کنترل از راه دور، به حذف برنامه قبل از آن از شما خواسته کاربر 1882 01:34:04,130 --> 01:34:05,400 برای حذف یک فایل. 1883 01:34:05,400 --> 01:34:06,750 چگونه می توانیم این کار؟ 1884 01:34:06,750 --> 01:34:11,090 >> من می خواهم بگویم، اگر C برابر برابر، نقل قول را تمام کردن، 1885 01:34:11,090 --> 01:34:16,304 Y، سپس من قصد دارم به فرض که کاربر بله انتخاب کرده است. 1886 01:34:16,304 --> 01:34:17,470 من فقط رفتن به چاپ بله. 1887 01:34:17,470 --> 01:34:19,440 اگر آن را در واقع نوشتن برنامه حذف، 1888 01:34:19,440 --> 01:34:21,420 ما می تواند فایل حذف کنید با خطوط بیشتری از کد. 1889 01:34:21,420 --> 01:34:22,461 اما ما آن را ساده نگه دارید. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> دیگری اگر c برابر برابر n-- و در حال حاضر در اینجا، من قصد دارم برای گفتن، 1892 01:34:31,250 --> 01:34:32,980 کاربر باید به معنای هیچ. 1893 01:34:32,980 --> 01:34:34,360 و پس از آن دیگر، شما می دانید چه؟ 1894 01:34:34,360 --> 01:34:36,200 من نمی دانم چه چیز دیگری کاربر در حال رفتن به تایپ کنید. 1895 01:34:36,200 --> 01:34:38,533 بنابراین من فقط رفتن به می گویند که که خطا است، هر 1896 01:34:38,533 --> 01:34:40,070 او در واقع تایپ. 1897 01:34:40,070 --> 01:34:41,180 >> بنابراین آنچه که در اینجا؟ 1898 01:34:41,180 --> 01:34:44,530 تفاوت اساسی وجود دارد در مقابل آنچه که در گذشته انجام داده ام. 1899 01:34:44,530 --> 01:34:49,300 به نقل از دو، به نقل از دو، دو نقل قول ها، و در عین حال، به نقل از واحد، 1900 01:34:49,300 --> 01:34:50,170 نقل قول تکی. 1901 01:34:50,170 --> 01:34:52,860 به نظر می رسد در C، که زمانی که شما می خواهید به ارسال نامه رشته، 1902 01:34:52,860 --> 01:34:56,680 شما استفاده از دو علامت، همانطور که ما را شده است با استفاده از این مدت با printf است. 1903 01:34:56,680 --> 01:35:02,030 >> اما اگر شما می خواهید برای مقابله با فقط یک تنها شخصیت، یک کاراکتر به اصطلاح، 1904 01:35:02,030 --> 01:35:03,780 سپس شما می نقل قول تکی استفاده کنید. 1905 01:35:03,780 --> 01:35:05,450 کسانی از شما که برنامه ریزی شده ام قبل از آن، شما ممکن است 1906 01:35:05,450 --> 01:35:07,850 حال در این مورد نگران تمایز در زبان خاص. 1907 01:35:07,850 --> 01:35:09,450 در C، مهم. 1908 01:35:09,450 --> 01:35:12,560 و تا زمانی که من یک کاراکتر و من می خواهم برای مقایسه که کاراکتر با استفاده از برابر 1909 01:35:12,560 --> 01:35:18,350 برابر است با برخی از نامه مانند y یا n، من، در واقع، نیاز به نقل قول تکی. 1910 01:35:18,350 --> 01:35:19,770 >> در حال حاضر، اجازه دهید به جلو و انجام این کار. 1911 01:35:19,770 --> 01:35:26,180 اجازه دهید به جلو و ایجاد نقطه منطقی بریده بریده منطقی است. 1912 01:35:26,180 --> 01:35:27,305 و در حال حاضر من از درخواست. 1913 01:35:27,305 --> 01:35:30,638 بنابراین، احتمالا، یک تجربه کاربری بهتر در واقع به من بگویید چه به اینجا. 1914 01:35:30,638 --> 01:35:33,030 اما من قصد دارم به فقط کورکورانه می گویند Y برای بله، خوب، خوب است. 1915 01:35:33,030 --> 01:35:35,780 >> بیایید دوباره آن را اجرا، N برای هیچ، خوب است. 1916 01:35:35,780 --> 01:35:39,610 فرض کنید مانند افراد خاصی من می دانم، کلاه من کلید قفل بر روی تمام است اغلب. 1917 01:35:39,610 --> 01:35:43,740 بنابراین من سرمایه Y، را وارد کنید، خطا. 1918 01:35:43,740 --> 01:35:46,130 OK، این دقیقا همان چیزی است که من منتظر. 1919 01:35:46,130 --> 01:35:48,170 در واقع، کامپیوتر در حال انجام است به معنای واقعی کلمه چه 1920 01:35:48,170 --> 01:35:51,794 من آن را گفته به انجام برای بررسی حروف کوچک و کوچک Y N. 1921 01:35:51,794 --> 01:35:53,960 این مانند خوب احساس نمی تجربه کاربر، هر چند. 1922 01:35:53,960 --> 01:35:59,010 اجازه دهید من برای درخواست قبل هم حروف کوچک و یا مورد بالا. 1923 01:35:59,010 --> 01:36:02,090 پس از آن معلوم، شما ممکن است بخواهید چیزی شبیه این بگوید در ابتدا، 1924 01:36:02,090 --> 01:36:08,150 مانند به معنای واقعی کلمه و یا C برابر برابر سرمایه تک Y به نقل از. 1925 01:36:08,150 --> 01:36:11,400 معلوم است، C ندارد این کلمه کلیدی تحت اللفظی و یا. 1926 01:36:11,400 --> 01:36:12,880 >> اما آن را دو میله های عمودی. 1927 01:36:12,880 --> 01:36:15,463 شما باید برای نگه داشتن کلید Shift معمولا، اگر شما با استفاده از یک صفحه کلید، 1928 01:36:15,463 --> 01:36:18,910 و ضربه زدن به نوار عمودی کلید بالا کلید بازگشت خود را. 1929 01:36:18,910 --> 01:36:22,410 اما این نوار عمودی نوار عمودی یا به معنی. 1930 01:36:22,410 --> 01:36:26,220 >> اگر، در مقابل، ما می خواستیم می گویند و مانند در ابتدا، 1931 01:36:26,220 --> 01:36:28,180 ما می تواند علامت آمپرسند است. 1932 01:36:28,180 --> 01:36:31,330 که باعث می شود هیچ حس منطقی در اینجا، چرا که یک انسان می تواند احتمالا نمی 1933 01:36:31,330 --> 01:36:37,110 تایپ هر دو Y و کوچک Y و سرمایه Y به عنوان شخصیت است. 1934 01:36:37,110 --> 01:36:39,470 بنابراین یا چیزی است که ما قصد در اینجا. 1935 01:36:39,470 --> 01:36:46,280 >> بنابراین اگر من این کار را در هر دو مکان، یا ج برابر برابر سرمایه N، در حال حاضر دوباره، 1936 01:36:46,280 --> 01:36:49,390 را منطقی، دوباره منطقی است. 1937 01:36:49,390 --> 01:36:51,200 در حال حاضر، من می توانم Y را تایپ کنید. 1938 01:36:51,200 --> 01:36:53,920 و من می توانم آن را دوباره با انجام سرمایه Y، یا N. سرمایه 1939 01:36:53,920 --> 01:36:56,630 و من می توانم در دیگری را اضافه کنید ترکیب هنوز هم. 1940 01:36:56,630 --> 01:36:58,810 >> بنابراین این یک منطقی است برنامه تا آنجا که در حال حاضر 1941 01:36:58,810 --> 01:37:01,940 من منطقی برای چک کردن این مقدار و یا این مقدار است. 1942 01:37:01,940 --> 01:37:06,420 و من لازم نیست که، لزوما، آمد تا با دو IFS بیشتر و یا دیگری IFS. 1943 01:37:06,420 --> 01:37:09,960 من در واقع می توانید ترکیب برخی از مربوط منطق با هم در این راه. 1944 01:37:09,960 --> 01:37:11,950 بنابراین این بهتر خواهد بود طراحی به سادگی 1945 01:37:11,950 --> 01:37:17,490 گفت: اگر C برابر با حروف کوچک Y، چاپ بله، دیگری اگر c برابر سرمایه Y، 1946 01:37:17,490 --> 01:37:20,074 چاپ بله، دیگری اگر c برابر lower-- به عبارت دیگر، 1947 01:37:20,074 --> 01:37:21,990 شما لازم نیست که به بیشتر و بیشتر شاخه. 1948 01:37:21,990 --> 01:37:28,840 شما می توانید برخی از معادل ترکیب شاخه منطقی، به عنوان در این راه. 1949 01:37:28,840 --> 01:37:34,150 >> بنابراین اجازه دهید نگاهی به فقط یک مواد تشکیل دهنده نهایی، یک ساختار نهایی، 1950 01:37:34,150 --> 01:37:34,847 که C اجازه می دهد تا. 1951 01:37:34,847 --> 01:37:36,930 و ما در آمده آینده به دیگران هنوز هم. 1952 01:37:36,930 --> 01:37:41,400 و سپس ما را با نگاه نتیجه در نه صحت code-- 1953 01:37:41,400 --> 01:37:46,070 گرفتن کد به work-- اما طراحی کد و کاشت آن دانه در اوایل. 1954 01:37:46,070 --> 01:37:51,337 >> بنابراین اجازه دهید من به جلو و باز کردن یک فایل جدید در اینجا. 1955 01:37:51,337 --> 01:37:51,920 میدونی چیه؟ 1956 01:37:51,920 --> 01:37:54,450 من قصد دارم مجبور به اجرای مجدد که همان برنامه، 1957 01:37:54,450 --> 01:37:55,940 اما با استفاده از یک ساختار متفاوت است. 1958 01:37:55,940 --> 01:38:00,110 >> بنابراین من اجازه به سرعت خودم را دسترسی به شامل CS50.H 1959 01:38:00,110 --> 01:38:04,150 برای کتابخانه CS50، io.h استاندارد برای printf است. 1960 01:38:04,150 --> 01:38:06,510 من اعتبار اصلی اعضای هیات من را. 1961 01:38:06,510 --> 01:38:09,310 و پس از آن در اینجا، اجازه من به جلو بروید و این کار را. 1962 01:38:09,310 --> 01:38:12,010 >> کاراکتر C می شود از کاراکتر، درست مثل قبل. 1963 01:38:12,010 --> 01:38:16,770 و من قصد دارم به استفاده از یک ساختار جدید now-- تغییر دهید، به چه شخصیت؟ 1964 01:38:16,770 --> 01:38:19,820 بنابراین سوئیچ نوع مانند تعویض آهنگ های قطار. 1965 01:38:19,820 --> 01:38:22,070 یا، واقعا، آن است که نوع از اگر دیگری، اگر دیگری اگر، 1966 01:38:22,070 --> 01:38:23,980 اما نوشته شده تا حدودی متفاوت است. 1967 01:38:23,980 --> 01:38:25,490 >> سوئیچ این شکل است. 1968 01:38:25,490 --> 01:38:29,060 شما باید سوئیچ، و پس از آن چه شخصیت و یا تعداد که می خواهید به نگاه، 1969 01:38:29,060 --> 01:38:32,000 پس از آن برخی آکولاد را دوست دارم در ابتدا، فقط می گویند این مسائل. 1970 01:38:32,000 --> 01:38:33,480 و سپس شما باید موارد متفاوت است. 1971 01:38:33,480 --> 01:38:34,830 >> شما اگر و دیگری استفاده نمی کند. 1972 01:38:34,830 --> 01:38:37,050 شما به معنای واقعی کلمه مورد کلمه استفاده کنید. 1973 01:38:37,050 --> 01:38:38,790 و شما چیزی شبیه به این می گویند. 1974 01:38:38,790 --> 01:38:43,820 >> بنابراین در مورد یک Y حروف کوچک، و یا در مورد سرمایه Y، 1975 01:38:43,820 --> 01:38:47,350 جلو بروید و چاپ بله. 1976 01:38:47,350 --> 01:38:49,020 و پس از آن از سوئیچ شکستن. 1977 01:38:49,020 --> 01:38:49,580 خودشه. 1978 01:38:49,580 --> 01:38:50,880 انجام شد. 1979 01:38:50,880 --> 01:38:57,270 >> دیگری اگر، پس به صحبت می کنند، حروف کوچک N، یا سرمایه N، 1980 01:38:57,270 --> 01:39:02,560 سپس پیش بروید و چاپ از به هیچ، و سپس شکستن. 1981 01:39:02,560 --> 01:39:08,022 Else-- و این نوع است که مورد پیش فرض indeed-- تابع () printf error-- 1982 01:39:08,022 --> 01:39:10,980 و فقط برای اندازه گیری خوب، هر چند منطقی این استراحت لازم نیست 1983 01:39:10,980 --> 01:39:12,896 چرا که ما در پایان هستید از سوئیچ به هر حال، 1984 01:39:12,896 --> 01:39:14,520 من در حال حاضر شکستن از سوئیچ. 1985 01:39:14,520 --> 01:39:16,280 بنابراین این به نظر می رسد کمی متفاوت است. 1986 01:39:16,280 --> 01:39:18,272 >> اما، منطقی، آن را در واقع معادل آن. 1987 01:39:18,272 --> 01:39:19,980 و چرا شما استفاده یکی را بر دیگری؟ 1988 01:39:19,980 --> 01:39:23,220 گاهی اوقات، فقط ترجیح شخصی، گاهی اوقات زیبایی شناسی، 1989 01:39:23,220 --> 01:39:25,420 اگر من در این نگاه در حال حاضر، چیزی وجود دارد 1990 01:39:25,420 --> 01:39:27,510 برای توان گفت خوانایی این کد. 1991 01:39:27,510 --> 01:39:30,690 منظور من، هرگز این واقعیت است که این ذهن کد برای بسیاری از ما در اتاق جدید است. 1992 01:39:30,690 --> 01:39:33,515 >> اما آن را فقط نوع بسیار است. 1993 01:39:33,515 --> 01:39:37,760 شما ببینید حروف کوچک Y، سرمایه Y، کمتر مورد n، به طور پیش فرض سرمایه N، 1994 01:39:37,760 --> 01:39:40,150 آن را فقط به نوع جهش در شما در راه 1995 01:39:40,150 --> 01:39:42,200 که، مسلما، شاید مثال قبلی 1996 01:39:42,200 --> 01:39:45,780 با IFS، و میله های عمودی، و IFS دیگری، نه ممکن است. 1997 01:39:45,780 --> 01:39:51,600 بنابراین این واقعا یک ماده از شخصی است انتخاب، واقعا، یا خوانایی، 1998 01:39:51,600 --> 01:39:52,360 از کد. 1999 01:39:52,360 --> 01:39:58,230 >> اما از نظر عملکرد، به من اجازه جلو بروید و یک سوئیچ، نقطه اسلش 2000 01:39:58,230 --> 01:40:05,830 سوئیچ، و در حال حاضر در Y حروف کوچک تایپ کنید، سرمایه Y، حروف کوچک N، سرمایه N، 2001 01:40:05,830 --> 01:40:09,250 دیوید، دوباره سعی کنید دلیل این که در یک شخصیت واحد. 2002 01:40:09,250 --> 01:40:12,050 اجازه دهید X، خطا، به عنوان انتظار می رود. 2003 01:40:12,050 --> 01:40:15,640 و، logically-- و این چیزی است من تشویق در general-- حتی 2004 01:40:15,640 --> 01:40:17,790 اگر ما در حال تنها خراش سطح برخی از این ویژگی. 2005 01:40:17,790 --> 01:40:20,560 >> و آن را ممکن است واضح زمانی که شما خود نشستن در صفحه کلید، 2006 01:40:20,560 --> 01:40:21,370 این چطوری کار میکنه؟ 2007 01:40:21,370 --> 01:40:22,240 چه انجام این کار؟ 2008 01:40:22,240 --> 01:40:25,630 چیز زیبا در مورد داشتن یک لپ تاپ، یا دسکتاپ، و یا دسترسی 2009 01:40:25,630 --> 01:40:29,290 به یک کامپیوتر با یک کامپایلر، و با یک ویرایشگر کد مثل این، 2010 01:40:29,290 --> 01:40:32,990 است شما تقریبا می توانید همیشه این پاسخ پرسش برای خودتان فقط با تلاش. 2011 01:40:32,990 --> 01:40:36,570 >> به عنوان مثال، اگر بلاغی درخواست در دست بود، 2012 01:40:36,570 --> 01:40:39,540 چه اتفاقی می افتد اگر شما را فراموش اظهارات استراحت خود را؟ 2013 01:40:39,540 --> 01:40:41,400 که در واقع یک چیزی که بسیار رایج را انجام دهید، 2014 01:40:41,400 --> 01:40:43,540 دلیل آن به نظر نمی مثل شما واقعا به آنها نیاز دارید. 2015 01:40:43,540 --> 01:40:46,790 آنها واقعا کامل نیست خود را فکر مثل یک پرانتز یا در اشکال مختلف 2016 01:40:46,790 --> 01:40:47,714 بند کند. 2017 01:40:47,714 --> 01:40:49,630 اجازه دهید به جلو و کامپایل مجدد کد و ببینید. 2018 01:40:49,630 --> 01:40:53,690 بنابراین سوئیچ، سوئیچ بریده بریده نقطه است. 2019 01:40:53,690 --> 01:40:56,435 بیایید تایپ در صورت پایین تر Y، مورد بالا، وارد کنید. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 بنابراین من Y تایپ. 2022 01:41:00,700 --> 01:41:04,420 >> این برنامه گفت: بله، نه، خطا، به عنوان اینکه آن در حال تغییر بود ذهن خود را. 2023 01:41:04,420 --> 01:41:09,280 اما این نوع از بود، چرا که چه اتفاقی می افتد با یک سوئیچ حالت اول این است که 2024 01:41:09,280 --> 01:41:13,899 بازی در اصل به معنای، هی کامپیوتر، اجرای تمام از کد زیر آن. 2025 01:41:13,899 --> 01:41:16,690 و اگر شما نمی گویم استراحت، و یا آیا شکستن نمی گویند، و یا استراحت می گویند نیست، 2026 01:41:16,690 --> 01:41:19,540 کامپیوتر حال رفتن به ضربه از طریق تمام کسانی که از خطوط 2027 01:41:19,540 --> 01:41:22,779 و اجرای همه آنها تا آن را به که آکولاد می شود. 2028 01:41:22,779 --> 01:41:24,320 بنابراین ترمز، در واقع، لازم است. 2029 01:41:24,320 --> 01:41:27,120 اما یک غذای آماده در اینجا این است، هنگامی که در شک، سعی کنید چیزی. 2030 01:41:27,120 --> 01:41:29,510 شاید برای اولین بار کد خود را ذخیره کنید، و یا آن را ذخیره کنید در یک فایل اضافی 2031 01:41:29,510 --> 01:41:32,930 اگر شما واقعا در مورد نگران هستید از دست دادن و نیاز به بازیابی 2032 01:41:32,930 --> 01:41:34,430 کاری که شما می دانید به کار است. 2033 01:41:34,430 --> 01:41:35,410 >> اما سعی کنید همه چیز. 2034 01:41:35,410 --> 01:41:38,074 و آیا نمی شود به عنوان ترس، شاید، از آنچه که کامپیوتر ممکن است انجام دهید، 2035 01:41:38,074 --> 01:41:39,490 یا این که شما ممکن است چیزی را بشکند. 2036 01:41:39,490 --> 01:41:42,790 شما همیشه می توانید برگرداندن به برخی از نسخه های قبلی است. 2037 01:41:42,790 --> 01:41:45,640 >> بنابراین اجازه دهید به دنبال پایان دادن به در طراحی از کد. 2038 01:41:45,640 --> 01:41:49,020 ما این توانایی را در حال حاضر به ارسال شرایط و حلقه نوشتن، 2039 01:41:49,020 --> 01:41:50,850 و متغیرها، و توابع پاسخ. 2040 01:41:50,850 --> 01:41:54,590 بنابراین، رک و پوست کنده، ما مهربان هستید از پشت در که در آن ما یک هفته پیش با خراش بود، 2041 01:41:54,590 --> 01:42:00,120 البته با یک متنی کمتر قانع کننده محیط زیست از ابتدا اجازه می دهد تا. 2042 01:42:00,120 --> 01:42:03,990 >> اما توجه کنید که چگونه به سرعت ما را به دست آورد که واژگان، حتی اگر آن را 2043 01:42:03,990 --> 01:42:07,570 رفتن به در حالی که کمی غرق در، به طوری که ما هم اکنون می توانید این واژگان استفاده 2044 01:42:07,570 --> 01:42:10,320 برای نوشتن برنامه های جالب تر است. 2045 01:42:10,320 --> 01:42:12,940 و اجازه دهید یک قدم برای دستیابی به این، شرح زیر است. 2046 01:42:12,940 --> 01:42:14,890 اجازه دهید من به جلو و ایجاد یک فایل جدید در اینجا. 2047 01:42:14,890 --> 01:42:17,750 >> من قصد دارم به پاسخ این prototype.c و معرفی 2048 01:42:17,750 --> 01:42:20,954 برای اولین بار، توانایی به توابع خود را. 2049 01:42:20,954 --> 01:42:22,870 برخی از شما ممکن است این با خراش انجام می شود، 2050 01:42:22,870 --> 01:42:25,430 به موجب آن شما می توانید ایجاد خود را بلوک های سفارشی خود در ابتدا، 2051 01:42:25,430 --> 01:42:27,892 و سپس آنها را به مکان بکشید هر کجا که شما می خواهم در C. دوست 2052 01:42:27,892 --> 01:42:30,100 و در بسیاری از برنامه نویسی زبان، شما می توانید دقیقا انجام 2053 01:42:30,100 --> 01:42:33,580 که-- را توابع خود را، اگر آنها در حال حاضر وجود ندارد. 2054 01:42:33,580 --> 01:42:38,660 >> بنابراین، برای مثال، اجازه دهید من به جلو بروید و شامل CS50.H، و شامل 2055 01:42:38,660 --> 01:42:43,110 استاندارد IO.h، بی اعتبار اصلی نوع int است. 2056 01:42:43,110 --> 01:42:46,020 و در حال حاضر ما یک آماده برای رفتن به حفره یا سوراخ. 2057 01:42:46,020 --> 01:42:48,550 من همه چیز را چاپ حفظ مانند نام افراد امروز. 2058 01:42:48,550 --> 01:42:51,910 و احساس می کند که like-- نمی تواند خوب اگر وجود دارد 2059 01:42:51,910 --> 01:42:53,936 یک تابع به نام نام چاپ شد؟ 2060 01:42:53,936 --> 01:42:55,060 من لازم نیست به استفاده از printf. 2061 01:42:55,060 --> 01:42:56,976 من لازم نیست به خاطر داشته باشید تمام کدهای فرمت. 2062 01:42:56,976 --> 01:43:00,050 چرا من، و یا چرا کسی که قبل از من نیست، 2063 01:43:00,050 --> 01:43:02,980 ایجاد یک تابع به نام چاپ نام، که با توجه به برخی از نام، 2064 01:43:02,980 --> 01:43:03,980 به سادگی آن را چاپ؟ 2065 01:43:03,980 --> 01:43:08,700 >> به عبارت دیگر، اگر من می گویم، هی، کامپیوتر، من یک رشته 2066 01:43:08,700 --> 01:43:11,870 با درخواست از کاربران برای چنین، از طریق تابع رشته مطلع CS50 است. 2067 01:43:11,870 --> 01:43:15,090 با سلام، کامپیوتر، قرار داده است که رشته در متغیر در سمت چپ، 2068 01:43:15,090 --> 01:43:16,150 و پاسخ آن را. 2069 01:43:16,150 --> 01:43:22,150 و پس از آن، با سلام کامپیوتر، به جلو و چاپ که نام شخص، انجام می شود. 2070 01:43:22,150 --> 01:43:26,240 >> در حال حاضر، این امر می تواند خوب است، چرا این برنامه، به درستی به نام، 2071 01:43:26,240 --> 01:43:29,170 من می گوید آنچه را که قرار است انجام از طریق نام آن تابع است. 2072 01:43:29,170 --> 01:43:32,930 به من اجازه رفتن و نمونه اولیه، وارد کنید. 2073 01:43:32,930 --> 01:43:34,930 و متاسفانه، این است که به پرواز. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c، خط 7، شخصیت 5، خطا، اعلام ضمنی 2075 01:43:39,430 --> 01:43:42,960 از نام تابع چاپ در C99، C99 نامعتبر 2076 01:43:42,960 --> 01:43:45,130 به این معنی که یک نسخه از C که در سال 1999 بود. 2077 01:43:45,130 --> 01:43:45,730 که تمام است. 2078 01:43:45,730 --> 01:43:48,780 >> بنابراین من نمی دانم که چه همه این به این معنی است. 2079 01:43:48,780 --> 01:43:50,810 اما من تشخیص خطا با رنگ قرمز. 2080 01:43:50,810 --> 01:43:51,770 این خیلی واضح است. 2081 01:43:51,770 --> 01:43:53,769 >> و به نظر می رسد که با شخصیت سبز در اینجا، 2082 01:43:53,769 --> 01:43:57,520 مسئله این است که با نام چاپ، باز پرانتز ها، پرانتز بسته، نیمه روده بزرگ است. 2083 01:43:57,520 --> 01:44:01,800 اما اعلام ضمنی عملکرد ما انجام داد خلاصه زودتر ببینید. 2084 01:44:01,800 --> 01:44:04,880 این به این معنی، به سادگی، که صدای جرنگ جرنگ نمی داند که من چه می گویم. 2085 01:44:04,880 --> 01:44:09,000 >> من یک کلمه فرهنگ لغت استفاده می شود که آن را هرگز دیده می شود یا قبل از آموزش داده شده است. 2086 01:44:09,000 --> 01:44:11,950 و بنابراین من نیاز به آن را آموزش این تابع به معنی. 2087 01:44:11,950 --> 01:44:13,590 بنابراین من قصد دارم به جلو بروید و انجام این کار. 2088 01:44:13,590 --> 01:44:17,970 >> من قصد دارم به جلو بروید و پیاده سازی عملکرد خود را به نام چاپ نام. 2089 01:44:17,970 --> 01:44:24,720 و من قصد دارم برای گفتن، به شرح زیر، که آن را این، تابع () printf، سلام، درصد 2090 01:44:24,720 --> 01:44:27,760 S، بک اسلش نفر، نام، نیمه روده بزرگ. 2091 01:44:27,760 --> 01:44:29,250 پس چه بود من فقط انجام دهید؟ 2092 01:44:29,250 --> 01:44:31,325 >> پس از آن معلوم، به اجرای تابع خود را، 2093 01:44:31,325 --> 01:44:33,845 ما به نوعی قرض برخی از همان ساختار اصلی 2094 01:44:33,845 --> 01:44:35,720 که ما فقط شده مسلم بود، و من 2095 01:44:35,720 --> 01:44:37,730 مطمئن شوید فقط کپی کردن و چسباندن تقریبا چه 2096 01:44:37,730 --> 01:44:39,170 من در گذشته نوشتن. 2097 01:44:39,170 --> 01:44:40,570 اما متوجه الگوی اینجا. 2098 01:44:40,570 --> 01:44:43,750 INT، اصلی، از درجه اعتبار ساقط، ما از هم جدا کسی را دست انداختن قبل از اینکه طولانی که در واقع به معنی. 2099 01:44:43,750 --> 01:44:46,160 >> اما امروز، فقط متوجه موازی. 2100 01:44:46,160 --> 01:44:48,210 از درجه اعتبار ساقط، نام چاپ، نام رشته، به طوری که وجود دارد 2101 01:44:48,210 --> 01:44:50,310 یک کلمه کلیدی بنفش، که ما قصد داریم به شروع 2102 01:44:50,310 --> 01:44:54,067 فراخوانی یک نوع بازگشت، نام تابع، و سپس ورودی. 2103 01:44:54,067 --> 01:44:56,400 بنابراین، در واقع، ما می توانیم تقطیر این نوع از هفته گذشته مانند 2104 01:44:56,400 --> 01:44:59,030 به عنوان، این نام و یا است الگوریتم کد ما 2105 01:44:59,030 --> 01:45:00,761 رفتن به write-- الگوریتم های اساسی 2106 01:45:00,761 --> 01:45:02,010 کد ما در حال رفتن به ارسال. 2107 01:45:02,010 --> 01:45:03,180 >> این ورودی آن است. 2108 01:45:03,180 --> 01:45:04,670 این خروجی آن است. 2109 01:45:04,670 --> 01:45:08,730 این تابع، نام چاپ، است طراحی شده را به یک رشته به نام نام، 2110 01:45:08,730 --> 01:45:11,350 یا هر چیز دیگری، به عنوان ورودی، و پس از آن از درجه اعتبار ساقط. 2111 01:45:11,350 --> 01:45:13,904 این هیچ چیزی نمی گرداند، مانند دریافت رشته و یا از نوع int است. 2112 01:45:13,904 --> 01:45:15,570 بنابراین آن را به من چیزی دست است. 2113 01:45:15,570 --> 01:45:17,960 آن را فقط به یک عوارض جانبی، پس به صحبت می کنند، 2114 01:45:17,960 --> 01:45:19,570 چاپ نام شخص. 2115 01:45:19,570 --> 01:45:22,260 بنابراین اطلاع، خط 7، من می توانید نام چاپ پاسخ. 2116 01:45:22,260 --> 01:45:25,920 خط 10، من می توانم تعریف و یا اجرای نام نسخه قابل چاپ. 2117 01:45:25,920 --> 01:45:28,450 اما، متاسفانه، این کافی نیست. 2118 01:45:28,450 --> 01:45:31,230 >> اجازه دهید من به جلو و کامپایل مجدد این پس از صرفه جویی. 2119 01:45:31,230 --> 01:45:33,910 ایست، در حال حاضر، من آن را ساخته ام بدتر از آن، به نظر می رسد. 2120 01:45:33,910 --> 01:45:37,027 اعلامیه بنابراین ضمنی نام تابع چاپ نامعتبر است. 2121 01:45:37,027 --> 01:45:38,360 و، دوباره، خطاهای بیشتر وجود دارد. 2122 01:45:38,360 --> 01:45:41,430 اما همانطور که قبلا هشدار، حتی اگر شما غرق دریافت کنید، 2123 01:45:41,430 --> 01:45:44,850 یا کمی غمگین به دیدن بسیاری از اشتباهات، تمرکز تنها در اولین 2124 01:45:44,850 --> 01:45:47,500 در ابتدا، به دلیل آن فقط ممکن است اثر آبشاری داشته اند. 2125 01:45:47,500 --> 01:45:51,970 بنابراین C، و یا صدای جرنگ جرنگ به طور خاص، هنوز هم نام چاپ به رسمیت نمی شناسد. 2126 01:45:51,970 --> 01:45:54,580 >> و به دلیل صدای جرنگ جرنگ است، با طراحی، نوع گنگ. 2127 01:45:54,580 --> 01:45:56,280 این تنها چیزی است که شما آن را به انجام. 2128 01:45:56,280 --> 01:46:00,950 و آن را تنها می کند در جهت که در آن شما آن را به انجام. 2129 01:46:00,950 --> 01:46:05,270 >> بنابراین من اصلی در خط چهار تعریف کرده اند، مانند ما انجام داده ایم بسیار اغلب. 2130 01:46:05,270 --> 01:46:07,980 من نام چاپ بر روی خط 10 تعریف کرده اید. 2131 01:46:07,980 --> 01:46:11,793 اما من در تلاش برای استفاده از نام چاپ بر روی خط هفت. 2132 01:46:11,793 --> 01:46:13,670 >> آن را خیلی زود، هنوز وجود ندارد می کند. 2133 01:46:13,670 --> 01:46:19,150 بنابراین من می تواند باهوش، و مانند، خوب، پس اجازه دهید فقط بازی همراه، 2134 01:46:19,150 --> 01:46:23,680 و حرکت نام چاپ تا در اینجا، و دوباره کامپایل. 2135 01:46:23,680 --> 01:46:24,550 اوه خدای من. 2136 01:46:24,550 --> 01:46:25,260 این کار کرده است. 2137 01:46:25,260 --> 01:46:26,670 به همین سادگی بود. 2138 01:46:26,670 --> 01:46:28,120 >> اما منطق است که دقیقا. 2139 01:46:28,120 --> 01:46:30,870 شما باید برای تدریس صدای جرنگ جرنگ آنچه در آن است با تعریف تابع اول. 2140 01:46:30,870 --> 01:46:31,920 سپس شما می توانید از آن استفاده کنید. 2141 01:46:31,920 --> 01:46:33,940 اما صادقانه بگویم، این احساس مانند یک شیب لغزنده است. 2142 01:46:33,940 --> 01:46:35,773 >> بنابراین هر بار که من اجرا به یک مشکل، من فقط 2143 01:46:35,773 --> 01:46:39,450 رفتن به برجسته و کپی کد من نوشت، آن را قطع و آن را اینجا وارد شود. 2144 01:46:39,450 --> 01:46:41,370 و، قطعا، ما می تواند تدبیر برخی از حالات 2145 01:46:41,370 --> 01:46:43,286 که در آن یک تابع ممکن است نیاز به تماس است. 2146 01:46:43,286 --> 01:46:46,030 و شما فقط می توانید در هر قرار داده نشده تابع بالا هر. 2147 01:46:46,030 --> 01:46:47,930 >> پس از آن معلوم وجود دارد یک راه حل بهتر است. 2148 01:46:47,930 --> 01:46:50,100 ما می توانیم ترک این باشد. 2149 01:46:50,100 --> 01:46:53,677 و صادقانه بگویم، آن را به طور کلی خوب است، و راحت و طراحی خوب 2150 01:46:53,677 --> 01:46:56,760 برای قرار دادن اصلی اول، دلیل، دوباره، اصلی درست مثل زمانی که پرچم سبز کلیک، 2151 01:46:56,760 --> 01:46:59,027 که تابع این است که می شود به طور پیش فرض اجرا می شود. 2152 01:46:59,027 --> 01:47:01,110 بنابراین شما نیز ممکن است قرار داده است آن را در بالای فایل 2153 01:47:01,110 --> 01:47:03,560 به طوری که وقتی شما و یا هر دیگر انسان به نظر می رسد در فایل 2154 01:47:03,560 --> 01:47:06,360 شما می دانید چه خبر است فقط با خواندن اولین اصلی است. 2155 01:47:06,360 --> 01:47:15,360 پس از آن معلوم، ما می توانیم صدای جرنگ جرنگ به فعالانه، با سلام، صدای جرنگ جرنگ، در خط چهار، 2156 01:47:15,360 --> 01:47:17,940 من قول می دهم برای اجرای یک تابع به نام چاپ 2157 01:47:17,940 --> 01:47:22,600 نام طول می کشد که یک نام رشته به نام به عنوان ورودی، و بازده هیچ چیز، بی اعتبار است. 2158 01:47:22,600 --> 01:47:24,770 و من در اطراف برای دریافت اجرای آن بعد. 2159 01:47:24,770 --> 01:47:25,680 >> در اینجا می آید اصلی 2160 01:47:25,680 --> 01:47:29,130 اصلی در حال حاضر در خط 9 می توانید استفاده کنید چاپ نام به دلیل صدای جرنگ جرنگ 2161 01:47:29,130 --> 01:47:32,600 است اعتماد که، در نهایت، آن را تعریف روبرو می شوند 2162 01:47:32,600 --> 01:47:34,880 از اجرای نام چاپ. 2163 01:47:34,880 --> 01:47:37,390 بنابراین پس از صرفه جویی در فایل من، اجازه دهید من جلو بروید و نمونه اولیه، 2164 01:47:37,390 --> 01:47:38,498 به نظر می رسد خوب این زمان. 2165 01:47:38,498 --> 01:47:43,470 نقطه بریده بریده، نمونه اولیه، به من اجازه جلو بروید و تایپ یک نام است. 2166 01:47:43,470 --> 01:47:48,440 دیوید، سلام دیوید، Zamila، سلام Zamila، و در واقع، در حال حاضر کار می کند. 2167 01:47:48,440 --> 01:47:52,200 >> بنابراین عنصر در اینجا این است که ما در ساخته شده یک تابع سفارشی، مانند یک سفارشی 2168 01:47:52,200 --> 01:47:54,219 بلوک ابتدا ما خواستار آن است. 2169 01:47:54,219 --> 01:47:57,010 اما بر خلاف خراش که در آن شما می توانید فقط آن را ایجاد و شروع به استفاده از آن، 2170 01:47:57,010 --> 01:47:59,330 در حال حاضر ما باید یک کمی موشکاف تر، 2171 01:47:59,330 --> 01:48:03,410 و در واقع آموزش صدای جرنگ جرنگ برای استفاده، و یا به آن انتظار. 2172 01:48:03,410 --> 01:48:09,140 در حال حاضر، به عنوان یک کنار، چرا این همه هم ما فقط کورکورانه در ایمان از جمله بوده است 2173 01:48:09,140 --> 01:48:12,170 CS50.H، و از جمله استاندارد IO.h؟ 2174 01:48:12,170 --> 01:48:15,190 >> خب، معلوم است، در میان چند چیز دیگر، 2175 01:48:15,190 --> 01:48:18,550 همه که در آن نقطه ساعت فایل های، که اتفاق می افتد به فایل های. 2176 01:48:18,550 --> 01:48:20,460 آنها فایل های هدر در حال، پس به صحبت. 2177 01:48:20,460 --> 01:48:23,270 آنها هنوز هم در C نوشته شده اما آنها یک نوع متفاوت از فایل است. 2178 01:48:23,270 --> 01:48:28,690 >> در حال حاضر، شما تقریبا می توانید فرض که همه این است که در داخل CS50.H 2179 01:48:28,690 --> 01:48:33,360 برخی یک آستر مانند این، نمی باشد. برای توابع به نام چاپ نام، 2180 01:48:33,360 --> 01:48:36,840 اما برای دریافت رشته، مطلع شناور، و چند نفر دیگر. 2181 01:48:36,840 --> 01:48:41,510 و نمونه های اولیه مشابه وجود دارد، یک آستر، در داخل io.h استاندارد 2182 01:48:41,510 --> 01:48:46,241 برای printf، که در حال حاضر در خود عملکرد چاپ نام من. 2183 01:48:46,241 --> 01:48:49,490 بنابراین به عبارت دیگر، در تمام این مدت ما باید فقط کورکورانه کپی کردن و چسباندن 2184 01:48:49,490 --> 01:48:51,780 این جمله، شامل که، چه خبر است؟ 2185 01:48:51,780 --> 01:48:55,310 اینها تنها ادلهای به به آنچه به عنوان توابع صدای جرنگ جرنگ 2186 01:48:55,310 --> 01:49:00,170 ، در واقع، اجرا، فقط در جای دیگر در فایل های مختلف 2187 01:49:00,170 --> 01:49:02,440 در جای دیگر بر روی سیستم. 2188 01:49:02,440 --> 01:49:05,160 >> بنابراین ما نام چاپ اجرا کرده ام. 2189 01:49:05,160 --> 01:49:07,910 این کند که این اثر جانبی چاپ چیزی بر روی صفحه نمایش. 2190 01:49:07,910 --> 01:49:10,170 اما در واقع نمی من چیزی دست است. 2191 01:49:10,170 --> 01:49:12,200 چگونه ما در مورد رفتن اجرای برنامه ای که 2192 01:49:12,200 --> 01:49:14,510 به من چیزی دست تماس؟ 2193 01:49:14,510 --> 01:49:15,580 >> خوب، اجازه دهید این را امتحان کنید. 2194 01:49:15,580 --> 01:49:21,360 اجازه بدهید به جلو و پیاده سازی return.c فایل به نام 2195 01:49:21,360 --> 01:49:24,530 بنابراین ما می توانیم که چگونه چیزی را نشان می دهد مانند مطلع رشته، یا مطلع متوسط، 2196 01:49:24,530 --> 01:49:27,340 است که در واقع بازگشت چیزی به کاربر. 2197 01:49:27,340 --> 01:49:29,840 اجازه دهید به جلو و تعریف بی اعتبار اصلی نوع int است. 2198 01:49:29,840 --> 01:49:33,230 >> و، دوباره، در آینده، ما توضیح آنچه که int و از درجه اعتبار ساقط 2199 01:49:33,230 --> 01:49:34,090 است که در واقع انجام می دهند. 2200 01:49:34,090 --> 01:49:35,840 اما برای امروز، ما بی چون و چرا پذیرفتن. 2201 01:49:35,840 --> 01:49:39,970 من قصد دارم به جلو بروید و تابع () printf، برای یک تجربه کاربری خوب، x است. 2202 01:49:39,970 --> 01:49:44,360 و سپس من برای رفتن به صبر کاربران به من X با INT مطلع است. 2203 01:49:44,360 --> 01:49:48,459 >> و سپس من قصد دارم به جلو بروید و چاپ x را به مربع است. 2204 01:49:48,459 --> 01:49:50,500 بنابراین، هنگامی که شما فقط یک دارند صفحه کلید، مردم معمولا 2205 01:49:50,500 --> 01:49:52,600 استفاده از هویج کمی نماد بر روی صفحه کلید 2206 01:49:52,600 --> 01:49:55,330 برای نشان به قدرت از، و یا از توان. 2207 01:49:55,330 --> 01:49:58,960 بنابراین مربع ایکس حاضر من است. 2208 01:49:58,960 --> 01:50:00,660 >> و در حال حاضر من قصد دارم به انجام این کار. 2209 01:50:00,660 --> 01:50:03,940 من فقط می توانند انجام دهید X چه مربع؟ x به توان X بار x است. 2210 01:50:03,940 --> 01:50:06,690 >> و ما این برخی زمان پیش در حال حاضر امروز. 2211 01:50:06,690 --> 01:50:08,730 این مانند احساس نمی که پیشرفت های زیادی. 2212 01:50:08,730 --> 01:50:09,570 میدونی چیه؟ 2213 01:50:09,570 --> 01:50:13,100 بیایید اهرم برخی از این ایده از آخرین باری که از انتزاع. 2214 01:50:13,100 --> 01:50:16,080 >> آیا آن را نمی شود خوب اگر یک تابع به نام وجود دارد 2215 01:50:16,080 --> 01:50:18,460 مربع است که دقیقا همان است که می کند؟ 2216 01:50:18,460 --> 01:50:20,640 آن را هنوز هم، در پایان از روز، آیا همین ریاضی. 2217 01:50:20,640 --> 01:50:22,410 اما اجازه دهید انتزاعی دور ایده گرفتن 2218 01:50:22,410 --> 01:50:25,280 یک عدد ضرب دیگر، و فقط آن را یک نام را، 2219 01:50:25,280 --> 01:50:27,360 مانند مربع این مقدار است. 2220 01:50:27,360 --> 01:50:29,560 >> و، به عبارت دیگر، در C، اجازه دهید یک تابع ایجاد 2221 01:50:29,560 --> 01:50:32,660 نام مربع است که دقیقا همان است که انجام می دهد. 2222 01:50:32,660 --> 01:50:34,600 آن را به مربع نامیده می شود. 2223 01:50:34,600 --> 01:50:35,790 آن را به یک نوع int است. 2224 01:50:35,790 --> 01:50:37,820 و ما فقط به آن N، به طور پیش فرض. 2225 01:50:37,820 --> 01:50:39,403 >> اما ما می تواند آن را هر چیزی که ما می خواهیم پاسخ. 2226 01:50:39,403 --> 01:50:42,900 و تمام است که آن را به انجام دهید، به معنای واقعی کلمه، بازگشت است 2227 01:50:42,900 --> 01:50:45,810 در نتیجه n بار N. 2228 01:50:45,810 --> 01:50:48,980 اما به دلیل آن است بازگشت چیزی که 2229 01:50:48,980 --> 01:50:53,690 کلمه کلیدی در بنفش ما است پیش از این هرگز دیده می شود، من، در خط 11، 2230 01:50:53,690 --> 01:50:55,410 می توانید نه تنها می گویند از درجه اعتبار ساقط این زمان. 2231 01:50:55,410 --> 01:51:01,320 >> از درجه اعتبار ساقط، در مثال ما فقط دیدم نه از نام چاپ، فقط به این معنی، 2232 01:51:01,320 --> 01:51:02,190 کاری بکنید. 2233 01:51:02,190 --> 01:51:04,170 اما من چیزی دست نیست. 2234 01:51:04,170 --> 01:51:06,790 در این مورد، من نمی خواهم به بازگشت n بار N، 2235 01:51:06,790 --> 01:51:08,460 یا هر چیز دیگری است که، این تعداد است. 2236 01:51:08,460 --> 01:51:12,460 >> بنابراین من نمی توانم بگویم، هی، کامپیوتر، من هیچ چیز بازگشت، باطل است. 2237 01:51:12,460 --> 01:51:16,166 آن را به بازگشت، از طبیعت، یک int. 2238 01:51:16,166 --> 01:51:17,790 و به طوری که همه که در اینجا است. 2239 01:51:17,790 --> 01:51:20,070 >> ورودی به مربع در حال رفتن به یک int. 2240 01:51:20,070 --> 01:51:24,760 و به طوری که ما می توانیم از آن استفاده کنید، آن را به است یک نام، N. آن را به خروجی 2241 01:51:24,760 --> 01:51:26,240 یک int که یک نام نیاز ندارد. 2242 01:51:26,240 --> 01:51:29,590 ما می توانیم آن را به اصلی را ترک، و یا هر کس با استفاده از من به یاد داشته باشید این مقدار اگر ما 2243 01:51:29,590 --> 01:51:31,120 می خواهید با متغیر خود را دارد. 2244 01:51:31,120 --> 01:51:33,230 >> و، دوباره، تنها جدید اینجا را بازگشت است. 2245 01:51:33,230 --> 01:51:34,480 و من فقط انجام برخی از ریاضی. 2246 01:51:34,480 --> 01:51:41,825 اگر من واقعا می خواستم به غیر ضروری، من می توانم بگویم کالا INT می شود n بار N. 2247 01:51:41,825 --> 01:51:44,170 >> و پس از آن من می توانم بگویم، بازگشت محصول می باشد. 2248 01:51:44,170 --> 01:51:47,360 اما، دوباره، به نظر من قبل از این design-- خوب بودن نیست 2249 01:51:47,360 --> 01:51:50,060 مانند، چرا معرفی یک نام، یک نماد، مثل محصول، 2250 01:51:50,060 --> 01:51:51,570 فقط به فورا آن را بازگشت؟ 2251 01:51:51,570 --> 01:51:53,670 این یک پاک کن کوچک است، کمی تنگ تر، بنابراین 2252 01:51:53,670 --> 01:51:59,380 به صحبت می کنند، فقط می گویند بار بازگشت N N، خلاص شدن از شر این خط در دسترس نباشد. 2253 01:51:59,380 --> 01:52:02,860 >> و آن کد فقط کمتر به خواندن است، فرصت کمتری برای اشتباهات. 2254 01:52:02,860 --> 01:52:05,180 و اجازه دهید اگر این را ببینید واقع در حال حاضر کار می کند. 2255 01:52:05,180 --> 01:52:09,380 حال حاضر، من قصد دارم برای رفتن جلو و بازگشت است. 2256 01:52:09,380 --> 01:52:11,460 >> آه، آه، اعلام ضمنی تابع. 2257 01:52:11,460 --> 01:52:14,080 من این اشتباه قبل، هیچ معامله بزرگ. 2258 01:52:14,080 --> 01:52:18,950 اجازه بدهید من فقط تایپ کنید، و یا برجسته و کپی، دقیقا همان عملکرد نمونه اولیه، 2259 01:52:18,950 --> 01:52:21,342 یا امضا، از تابع تا اینجا. 2260 01:52:21,342 --> 01:52:22,800 یا من می تواند طیف تابع حرکت می کند. 2261 01:52:22,800 --> 01:52:23,841 >> اما که کمی تنبل. 2262 01:52:23,841 --> 01:52:24,870 بنابراین ما انجام این کار نیست. 2263 01:52:24,870 --> 01:52:27,960 در حال حاضر، اجازه دهید بازگشت دوباره، نقطه بازگشت بریده بریده. 2264 01:52:27,960 --> 01:52:32,790 >> X است 2. توان x 4 است. X است 3. توان x 9 است. 2265 01:52:32,790 --> 01:52:35,300 و تابع به نظر می رسد در حال حاضر به کار شود. 2266 01:52:35,300 --> 01:52:36,550 بنابراین چه تفاوت که اینجا هستید؟ 2267 01:52:36,550 --> 01:52:42,520 من یک تابع که مربع نامیده می شود، در این مورد، که من در ورودی قرار داده است. 2268 01:52:42,520 --> 01:52:43,830 و من به عقب بر گردیم خروجی. 2269 01:52:43,830 --> 01:52:46,210 و با این حال، پیش از این، اگر من مثال دیگر باز 2270 01:52:46,210 --> 01:52:51,640 از پیش از آن که نام prototype.c بود، 2271 01:52:51,640 --> 01:52:54,770 من تا به حال نام چاپ، که بازگشت از درجه اعتبار ساقط است، پس به صحبت می کنند، 2272 01:52:54,770 --> 01:52:58,730 و یا آن چیزی بازگشت، و به سادگی یک عارضه جانبی داشته باشد. 2273 01:52:58,730 --> 01:53:00,230 >> بنابراین آنچه که در اینجا؟ 2274 01:53:00,230 --> 01:53:03,520 خب، در نظر گرفتن تابع دریافت رشته برای فقط یک لحظه. 2275 01:53:03,520 --> 01:53:06,570 ما شده ایم با استفاده از تابع دریافت رشته به صورت زیر. 2276 01:53:06,570 --> 01:53:10,464 >> ما تا به حال یک تابع از رشته، مانند شامل CS50.H، 2277 01:53:10,464 --> 01:53:16,624 شامل استاندارد IO.h، هوشمند، اصلی، بی اعتبار است. 2278 01:53:16,624 --> 01:53:18,790 و پس از آن هر بار که من این نام رشته مطلع تا کنون، 2279 01:53:18,790 --> 01:53:23,260 من گفته ام چیزی شبیه به رشته ها می شود از رشته، به دلیل دریافت string-- 2280 01:53:23,260 --> 01:53:27,880 اجازه دهید این رشته مطلع get.c-- پاسخ به خودی خود یک رشته را برمی گرداند که من پس از می 2281 01:53:27,880 --> 01:53:32,050 استفاده کنید، و می گویند، سلام، کاما، درصد S، بک اسلش N، ​​S. 2282 01:53:32,050 --> 01:53:35,660 >> بنابراین این مثال همان است، واقعا، که ما قبلا بود. 2283 01:53:35,660 --> 01:53:37,920 بنابراین رشته یک مقدار را برمی گرداند. 2284 01:53:37,920 --> 01:53:41,260 اما یک لحظه پیش، رشته چاپ یک مقدار بازگشت نیست. 2285 01:53:41,260 --> 01:53:42,721 آن را به سادگی یک اثر جانبی. 2286 01:53:42,721 --> 01:53:44,220 بنابراین این یک تفاوت اساسی دارد. 2287 01:53:44,220 --> 01:53:46,710 ما را دیده ام مختلف انواع توابع در حال حاضر، 2288 01:53:46,710 --> 01:53:49,490 که برخی از آنها بازگشته اند ارزش ها، که برخی از آنها را انجام دهد. 2289 01:53:49,490 --> 01:53:51,890 تا شاید آن رشته، یا از نوع int و یا شناور است. 2290 01:53:51,890 --> 01:53:53,480 یا شاید آن را فقط از درجه اعتبار ساقط. 2291 01:53:53,480 --> 01:53:55,710 >> و تفاوت در این است که این توابع که 2292 01:53:55,710 --> 01:53:59,940 دریافت اطلاعات و بازگشت به یک مقدار در واقع آوردن چیزی به جدول، 2293 01:53:59,940 --> 01:54:01,110 پس به صحبت. 2294 01:54:01,110 --> 01:54:03,710 بنابراین اجازه دهید پیش بروید و در یک مجموعه نهایی 2295 01:54:03,710 --> 01:54:09,129 از نمونه است که به یک معنا، در حال حاضر، چگونه ممکن است ما، در واقع، انتزاعی بهتر، 2296 01:54:09,129 --> 01:54:11,670 و بهتر، و بهتر است، یا بیشتر، و بیشتر، و بیشتر، به منظور 2297 01:54:11,670 --> 01:54:13,810 برای نوشتن، در نهایت، کد بهتر است. 2298 01:54:13,810 --> 01:54:16,860 اجازه دهید به جلو، و در روح از ابتدا زیر را انجام دهید. 2299 01:54:16,860 --> 01:54:21,700 >> اجازه دهید من به جلو و شامل CS50.h و استاندارد IO.h. 2300 01:54:21,700 --> 01:54:24,010 اجازه بدهید به جلو و به خودم یک int، اصلی، بی اعتبار است. 2301 01:54:24,010 --> 01:54:27,380 و اجازه دهید من به جلو بروید، پاسخ این cough.c. 2302 01:54:27,380 --> 01:54:35,510 >> و اجازه دهید من جلو و فقط به مانند خراش، چاپ کردن سرفه / N. 2303 01:54:35,510 --> 01:54:37,170 و من می خواهم به انجام این سه بار. 2304 01:54:37,170 --> 01:54:39,670 بنابراین من، البته، فقط رفتن برای کپی کردن و سه بار وارد کنید. 2305 01:54:39,670 --> 01:54:46,440 من در حال حاضر رفتن به سرفه سرفه بریده بریده نقطه. 2306 01:54:46,440 --> 01:54:50,120 بیایید خودم یک اتاق کمی بیشتر به در اینجا، را وارد کنید، سرفه، سرفه، سرفه. 2307 01:54:50,120 --> 01:54:53,970 >> وجود دارد، بدیهی است، در حال حاضر یک فرصت را برای بهبود. 2308 01:54:53,970 --> 01:54:55,679 من کپی و جا به جا چند بار امروز. 2309 01:54:55,679 --> 01:54:58,261 اما این تنها بود، بنابراین من نمی به نوع شخصیت به عنوان بسیاری از. 2310 01:54:58,261 --> 01:55:00,250 من هنوز هم تغییر چه آن خط کد هستند. 2311 01:55:00,250 --> 01:55:04,240 >> این سه خط یکسان هستند، که احساس می کند تنبل و در واقع، 2312 01:55:04,240 --> 01:55:07,110 و احتمالا رویکرد درست نیست. 2313 01:55:07,110 --> 01:55:11,029 بنابراین با چه مواد تشکیل دهنده می تواند ما این کد را بهبود بخشد؟ 2314 01:55:11,029 --> 01:55:12,570 ما لازم نیست که به کپی و چسباندن کد. 2315 01:55:12,570 --> 01:55:15,070 >> و، در واقع، هر زمان شما احساس خود کپی کردن و چسباندن، 2316 01:55:15,070 --> 01:55:17,700 و حتی تغییر کد، شانس هستند یک راه بهتر وجود دارد. 2317 01:55:17,700 --> 01:55:19,470 و، در واقع، وجود دارد. 2318 01:55:19,470 --> 01:55:22,510 اجازه دهید من به جلو و انجام یک حلقه for، حتی اگر به نحو ممکن نیست 2319 01:55:22,510 --> 01:55:24,570 آمده به طور طبیعی است. 2320 01:55:24,570 --> 01:55:29,494 >> این کار را سه بار، به سادگی با انجام شرح زیر است 2321 01:55:29,494 --> 01:55:31,160 و من به اتفاق می دانم که این از عمل. 2322 01:55:31,160 --> 01:55:32,810 اما ما یک تعدادی از نمونه های حال حاضر است. 2323 01:55:32,810 --> 01:55:34,950 و شما آنلاین را ببینید مراجع تر هنوز هم. 2324 01:55:34,950 --> 01:55:37,790 >> این نحو در خط 6، که بسیار شبیه به خراش است که تکرار 2325 01:55:37,790 --> 01:55:40,090 بلوک، سه بار تکرار کنید. 2326 01:55:40,090 --> 01:55:41,340 این جادویی کوچک در حال حاضر. 2327 01:55:41,340 --> 01:55:43,050 اما این بیشتر خواهد شد، و بیشتر آشنا. 2328 01:55:43,050 --> 01:55:45,050 >> و آن را به تکرار خط هشت، سه بار، 2329 01:55:45,050 --> 01:55:52,390 به طوری که اگر من دوباره کامپایل سرفه را، نقطه بریده بریده سرفه، سرفه، سرفه، سرفه. 2330 01:55:52,390 --> 01:55:54,030 هنوز کار می کند به همان شیوه. 2331 01:55:54,030 --> 01:55:55,550 به طوری که همه خوب هستند و خوب است. 2332 01:55:55,550 --> 01:55:58,200 اما این بسیار انتزاعی است. 2333 01:55:58,200 --> 01:55:59,371 >> آن را کاملا درست است. 2334 01:55:59,371 --> 01:56:01,370 اما آن را مانند وجود دارد احساس می کند می تواند یک فرصت، 2335 01:56:01,370 --> 01:56:03,750 به عنوان در جهان ابتدا، به نوع شروع 2336 01:56:03,750 --> 01:56:07,530 برای اضافه کردن برخی معانی اینجا به طوری که من نه فقط برخی برای حلقه، 2337 01:56:07,530 --> 01:56:09,867 و یک تابع است که می گوید سرفه، یا سرفه. 2338 01:56:09,867 --> 01:56:10,450 میدونی چیه؟ 2339 01:56:10,450 --> 01:56:12,620 اجازه دهید برای یک کولر کمی از آن، 2340 01:56:12,620 --> 01:56:16,090 و در واقع ارسال یک تابع است که برخی از عوارض جانبی، پاسخ آن سرفه. 2341 01:56:16,090 --> 01:56:20,830 >> و آن را طول می کشد هیچ ورودی، و هیچ ارزش به عنوان خروجی بر می گرداند. 2342 01:56:20,830 --> 01:56:22,680 اما شما می دانید چه می کند؟ 2343 01:56:22,680 --> 01:56:29,370 آن را this-- تابع () printf، نقل قول را تمام کردن، سرفه. 2344 01:56:29,370 --> 01:56:32,380 >> و در حال حاضر در اینجا، من قصد دارم به جلو بروید و برای هوشمند، 2345 01:56:32,380 --> 01:56:36,070 من می شود صفر، من کمتر از 3، من به علاوه به علاوه. 2346 01:56:36,070 --> 01:56:39,770 من قصد دارم تابع () printf به انجام نیست، که مسلما اجرای سطح پایین 2347 01:56:39,770 --> 01:56:40,270 جزئیات. 2348 01:56:40,270 --> 01:56:41,353 برای من مهم نیست که چگونه به سرفه. 2349 01:56:41,353 --> 01:56:43,240 من فقط می خواهم به استفاده از تابع سرفه. 2350 01:56:43,240 --> 01:56:44,840 و من فقط رفتن به پاسخ سرفه. 2351 01:56:44,840 --> 01:56:46,204 >> حال حاضر، متوجه دوگانگی. 2352 01:56:46,204 --> 01:56:49,370 هنگامی که شما یک تابع، اگر شما نمی می خواهید را به آن ورودی، کاملا خوب است. 2353 01:56:49,370 --> 01:56:51,780 فقط پرانتز باز، نزدیک پرانتز، و شما انجام می شود. 2354 01:56:51,780 --> 01:56:56,271 >> هنگامی که شما یک تابع را تعریف، و یا اعلام نمونه آزمایشی تابع، 2355 01:56:56,271 --> 01:56:58,770 اگر شما در پیشبرد دانم آن را رفتن به هر گونه استدلال، 2356 01:56:58,770 --> 01:57:01,170 می گویند در آن پرانتز وجود دارد باطل است. 2357 01:57:01,170 --> 01:57:05,660 و باعث می شود خاصی است که شما خواهد به طور تصادفی نمی آن سوء استفاده. 2358 01:57:05,660 --> 01:57:07,020 اجازه دهید من جلو بروید و سرفه. 2359 01:57:07,020 --> 01:57:08,540 و، البته، من یک اشتباه ساخته شده است. 2360 01:57:08,540 --> 01:57:10,410 >> لعنتی، که وجود دارد اعلام ضمنی. 2361 01:57:10,410 --> 01:57:11,325 اما این خوب است. 2362 01:57:11,325 --> 01:57:12,590 این تعمیر آسان است. 2363 01:57:12,590 --> 01:57:18,240 من فقط نیاز به نمونه اولیه بالاتر در پرونده من از من در واقع با استفاده از آن. 2364 01:57:18,240 --> 01:57:20,070 >> بنابراین در حال حاضر اجازه دهید سرفه دوباره، خوب است. 2365 01:57:20,070 --> 01:57:20,790 حالا کار میکند. 2366 01:57:20,790 --> 01:57:22,930 را سرفه، سرفه، سرفه، سرفه. 2367 01:57:22,930 --> 01:57:25,930 بنابراین شما ممکن است فکر می کنم که ما واقعا بیش از مهندسی این مشکل است. 2368 01:57:25,930 --> 01:57:26,763 و، در واقع، ما می باشد. 2369 01:57:26,763 --> 01:57:28,870 این یک خوب نیست نامزد یک برنامه 2370 01:57:28,870 --> 01:57:31,930 در حال حاضر برای فاکتورگیری مجدد، و انجام چه 2371 01:57:31,930 --> 01:57:35,645 نام تجزیه سلسله مراتبی، که در آن شما را به برخی از کد، و سپس 2372 01:57:35,645 --> 01:57:38,790 شما نوع از همه چیز عامل، بنابراین به عنوان به نسبت معناشناسی بیشتر به آنها، 2373 01:57:38,790 --> 01:57:40,930 و استفاده از آن مدت در نهایت طولانی تر است. 2374 01:57:40,930 --> 01:57:43,490 اما یک بلوک ساختمان به سمت این برنامه های پیچیده تر 2375 01:57:43,490 --> 01:57:45,600 که ما شروع خواهد شد نوشتن قبل از اینکه طولانی که 2376 01:57:45,600 --> 01:57:50,090 اجازه می دهد تا ما را به واژگان که با آن به ارسال کد بهتر است. 2377 01:57:50,090 --> 01:57:52,920 و، در واقع، اجازه دهید اگر ببینید که ما می توانید این بیشتر تعمیم. 2378 01:57:52,920 --> 01:57:57,984 >> به نظر می رسد کمی لنگ که من، اصلی، باید در مورد این رفو نگران حلقه، 2379 01:57:57,984 --> 01:57:59,400 و دوباره و دوباره خواستار سرفه. 2380 01:57:59,400 --> 01:58:03,050 چرا من نمی توانم فقط سرفه بگویم، مدیر سه بار سرفه؟ 2381 01:58:03,050 --> 01:58:08,170 به عبارت دیگر، به همین دلیل نمی توانم فقط دادن ورودی به سرفه و انجام این کار؟ 2382 01:58:08,170 --> 01:58:11,270 >> چرا من نمی توانم فقط می گویند، در سرفه اصلی سه بار. 2383 01:58:11,270 --> 01:58:13,150 و در حال حاضر، این نوع از جادویی. 2384 01:58:13,150 --> 01:58:14,540 آن را بسیار تکرار شونده را در اینجا. 2385 01:58:14,540 --> 01:58:15,940 و آن را، در واقع، یک گام عزیزم. 2386 01:58:15,940 --> 01:58:19,250 >> اما فقط توانایی برای گفتن در خط هشت، سرفه، سه بار، 2387 01:58:19,250 --> 01:58:20,730 آن را فقط بسیار بیشتر قابل خواندن. 2388 01:58:20,730 --> 01:58:24,210 و، به علاوه، من لازم نیست که می دانم یا مراقبت چگونه سرفه اجرا شده است. 2389 01:58:24,210 --> 01:58:26,460 و، در واقع، بعد از آن در مدت و برای پروژه های نهایی، 2390 01:58:26,460 --> 01:58:29,150 اگر شما مقابله با یک پروژه با یک همکلاسی یا دو همکلاسی، 2391 01:58:29,150 --> 01:58:32,370 شما متوجه است که شما در حال رفتن به به، یا می خواهید به، تقسیم کار است. 2392 01:58:32,370 --> 01:58:34,650 >> و شما در حال رفتن به خواهید برای تصمیم گیری در پیش است، که رفتن را به انجام آنچه، 2393 01:58:34,650 --> 01:58:35,483 و که در آن قطعه؟ 2394 01:58:35,483 --> 01:58:37,520 و آن را نمی تواند به خوبی اگر شما به عنوان مثال، 2395 01:58:37,520 --> 01:58:40,100 را به اتهام نوشتن اصلی، انجام می شود. 2396 01:58:40,100 --> 01:58:43,470 و هم اتاقی خود، و یا خود را شریک به طور کلی، 2397 01:58:43,470 --> 01:58:45,230 طول می کشد مراقبت از اجرای سرفه. 2398 01:58:45,230 --> 01:58:49,540 >> و این تقسیم بندی، این دیوار از انتزاع، 2399 01:58:49,540 --> 01:58:52,310 یا لایه انتزاع اگر شما خواهد شد، فوق العاده قدرتمند، 2400 01:58:52,310 --> 01:58:55,480 زیرا به ویژه برای بزرگتر، برنامه های پیچیده تر و سیستم ها، 2401 01:58:55,480 --> 01:59:00,070 آن اجازه می دهد تا چند نفر را برای ساخت همه چیز با هم، و در نهایت 2402 01:59:00,070 --> 01:59:02,680 کوک کار خود را با هم در این راه. 2403 01:59:02,680 --> 01:59:05,332 اما، البته، ما نیاز به در حال حاضر ثابت سرفه. 2404 01:59:05,332 --> 01:59:07,290 ما نیاز به سرفه به که، هی، شما می دانید چه؟ 2405 01:59:07,290 --> 01:59:11,230 شما در حال رفتن به نیاز به یک input-- تا از درجه اعتبار ساقط نیست، اما از نوع int و در حال حاضر. 2406 01:59:11,230 --> 01:59:15,170 اجازه دهید به جلو قرار داده و به سرفه از نوع int. من می شود صفر است. 2407 01:59:15,170 --> 01:59:16,890 >> من کمتر از چند بار است. 2408 01:59:16,890 --> 01:59:18,550 من قبل از سه گفت. 2409 01:59:18,550 --> 01:59:20,420 اما این چیزی است که من می خواهم نیست. 2410 01:59:20,420 --> 01:59:25,520 من می خواهم سرفه به تعمیم داده شود حمایت از هر تعداد تکرارها. 2411 01:59:25,520 --> 01:59:28,800 >> بنابراین، در واقع، آن را N که من می خواهم، هر کاربر به من می گوید. 2412 01:59:28,800 --> 01:59:31,620 در حال حاضر، می توانید پیش بروید و می گویند چاپ سرفه. 2413 01:59:31,620 --> 01:59:34,750 و بدون توجه به چه تعداد کاربر می گذرد در، 2414 01:59:34,750 --> 01:59:36,890 من که چند بار تکرار. 2415 01:59:36,890 --> 01:59:39,160 >> بنابراین در پایان روز، برنامه یکسان است. 2416 01:59:39,160 --> 01:59:42,820 اما توجه کنید تمام این مسائل حتی می تواند در یک فایل دیگر باشد. 2417 01:59:42,820 --> 01:59:45,620 در واقع، من در مطمئن شوید که لحظه چگونه تابع () printf اجرا شده است. 2418 01:59:45,620 --> 01:59:47,980 >> من در حال حاضر مطمئن شوید که چه از رشته، و یا از نوع int، و یا شناور 2419 01:59:47,980 --> 01:59:48,646 اجرا می شوند. 2420 01:59:48,646 --> 01:59:50,930 و من نمی خواهم آنها را بر روی صفحه نمایش من را ببینید. 2421 01:59:50,930 --> 01:59:55,320 عنوان آن است، من شروع به تمرکز بر روی برنامه های من، نه آن دسته از توابع. 2422 01:59:55,320 --> 01:59:59,070 >> و به این ترتیب، در واقع، به محض اینکه شما شروع ساخت کد مثل این است، 2423 01:59:59,070 --> 02:00:01,397 می تواند ما حتی حرکت سرفه به یک فایل جداگانه؟ 2424 02:00:01,397 --> 02:00:02,730 شخص دیگری می تواند آن را اجرا می کنند. 2425 02:00:02,730 --> 02:00:06,810 و شما و برنامه های خود را تبدیل به بسیار زیبا، و بسیار قابل خواندن، 2426 02:00:06,810 --> 02:00:10,830 مسلما، واقعا چهار برنامه خط راست وجود دارد. 2427 02:00:10,830 --> 02:00:13,510 >> بنابراین اجازه دهید حال حاضر پیش بروید و ایجاد یک تغییر است. 2428 02:00:13,510 --> 02:00:16,180 توجه داشته باشید که نمونه من به تغییر تا بالا. 2429 02:00:16,180 --> 02:00:18,390 بنابراین اجازه دهید تعمیر که من تا من نمی در فریاد زد است. 2430 02:00:18,390 --> 02:00:22,580 >> را سرفه، اجازه دهید من اجرا سرفه یک بار بیشتر، هنوز هم انجام همین کار. 2431 02:00:22,580 --> 02:00:26,010 اما الان، به ما یک مواد تشکیل دهنده برای یک نسخه نهایی. 2432 02:00:26,010 --> 02:00:26,940 میدونی چیه؟ 2433 02:00:26,940 --> 02:00:29,040 من نمی خواهم فقط سرفه، لزوما. 2434 02:00:29,040 --> 02:00:30,802 من می خواهم به چیزی کلی تر. 2435 02:00:30,802 --> 02:00:31,510 بنابراین شما می دانید چه چیزی؟ 2436 02:00:31,510 --> 02:00:32,450 من می خواهم به انجام این کار. 2437 02:00:32,450 --> 02:00:37,140 من می خواهم به، بسیار شبیه خراش می کند، یک بلوک می گویند، اما نه فقط 2438 02:00:37,140 --> 02:00:38,680 چیزی می گویند برخی تعداد بار. 2439 02:00:38,680 --> 02:00:41,510 من می خواهم آن را به می گویند یک رشته بسیار خاص است. 2440 02:00:41,510 --> 02:00:43,850 و، در نتیجه، من نمی می خواهم آن را فقط سرفه می گویند. 2441 02:00:43,850 --> 02:00:47,660 من می خواهم آن را به می گویند هر آنچه رشته در گذشت. 2442 02:00:47,660 --> 02:00:49,960 >> بنابراین اطلاع، من کلی به این طوری که در حال حاضر 2443 02:00:49,960 --> 02:00:53,110 مثلا احساس می کند مانند یک نام خوب برای این کار، مانند خراش، 2444 02:00:53,110 --> 02:00:55,530 دو آرگومان می گیرد، بر خلاف خراش. 2445 02:00:55,530 --> 02:00:56,570 یکی یک رشته است. 2446 02:00:56,570 --> 02:00:57,300 یکی از نوع int است. 2447 02:00:57,300 --> 02:00:58,130 >> و من می توانم آنها را تغییر دهید. 2448 02:00:58,130 --> 02:01:00,713 من فقط نوع مانند ایده می گویند رشته اول، و سپس 2449 02:01:00,713 --> 02:01:01,940 چند بار بعد. 2450 02:01:01,940 --> 02:01:03,970 از درجه اعتبار ساقط به این معنی است که هنوز هم هیچ چیزی نمی گرداند. 2451 02:01:03,970 --> 02:01:06,428 اینها فقط طرف بصری هستند اثرات، می خواهم با [؟ اردن،؟] 2452 02:01:06,428 --> 02:01:08,240 یک اثر جانبی کلامی از فریاد. 2453 02:01:08,240 --> 02:01:12,630 هنوز هم چیزی بار N، 0 تا، اما به n برابر نیست. 2454 02:01:12,630 --> 02:01:14,540 این به این معنی N کل بار. 2455 02:01:14,540 --> 02:01:16,540 و پس از آن فقط نسخه قابل چاپ کردن هر چه که رشته است. 2456 02:01:16,540 --> 02:01:19,060 بنابراین من واقعا تعمیم ام این خط از کد. 2457 02:01:19,060 --> 02:01:22,460 بنابراین در حال حاضر، چگونه می توانم پیاده سازی تابع سرفه؟ 2458 02:01:22,460 --> 02:01:25,520 >> من می توانم سرفه از درجه اعتبار ساقط است. 2459 02:01:25,520 --> 02:01:28,501 و من هنوز هم می تواند در را چگونه چند بار که شما می خواهید به سرفه کردن. 2460 02:01:28,501 --> 02:01:29,250 اما میدونی چیه؟ 2461 02:01:29,250 --> 02:01:31,240 من هم اکنون می توانید زدن توپ برای گفتن دارد. 2462 02:01:31,240 --> 02:01:36,540 >> من می توانم پاسخ می گویند با کلمه سرفه، عبور در ش. 2463 02:01:36,540 --> 02:01:40,410 و اگر من می خواهم به هم پیاده سازی، فقط برای تفریح، یک تابع عطسه، 2464 02:01:40,410 --> 02:01:42,290 من می توانم برخی تعداد بار عطسه. 2465 02:01:42,290 --> 02:01:47,300 و من می توانید نگه دارید استفاده مجدد N، زیرا توجه کنید که متر در این زمینه و یا دامنه 2466 02:01:47,300 --> 02:01:49,470 تنها در این تابع وجود دارد. 2467 02:01:49,470 --> 02:01:52,767 >> و n در این زمینه تنها در این تابع در اینجا وجود دارد. 2468 02:01:52,767 --> 02:01:54,600 بنابراین ما باز خواهم گشت این مسائل از حوزه. 2469 02:01:54,600 --> 02:02:01,160 و در اینجا، من فقط رفتن به گفتن نیست، achoo، و سپس n بار، نیمه روده بزرگ است. 2470 02:02:01,160 --> 02:02:04,340 >> و در حال حاضر، من فقط نیاز به قرض گرفتن این تابع امضا تا اینجا. 2471 02:02:04,340 --> 02:02:06,290 بنابراین سرفه درست است. 2472 02:02:06,290 --> 02:02:10,090 عطسه خالی در حال حاضر درست است. 2473 02:02:10,090 --> 02:02:12,390 >> و من هنوز هم فقط نیاز است. 2474 02:02:12,390 --> 02:02:18,990 بنابراین من قصد دارم برای گفتن، بگو رشته ها، اعضای هیات N، نیمه روده بزرگ. 2475 02:02:18,990 --> 02:02:22,010 بنابراین من بیش از حد مهندسی هک از این برنامه است. 2476 02:02:22,010 --> 02:02:23,760 >> و این را نمی کند لزوما به این معنی این است 2477 02:02:23,760 --> 02:02:26,343 آنچه شما باید انجام در هنگام نوشتن حتی ساده ترین برنامه. 2478 02:02:26,343 --> 02:02:29,280 چیزی را که به وضوح واقعا ساده است، واقعا کوتاه، 2479 02:02:29,280 --> 02:02:31,800 و دوباره پیاده سازی آن با استفاده از کد بیش از حد. 2480 02:02:31,800 --> 02:02:34,560 اما در واقع شما خواهید دید، و در زمان نگاه کردن به این نمونه ها، 2481 02:02:34,560 --> 02:02:38,610 و درک، آه، کسانی که مراحل ما در زمان به واقع تعمیم، 2482 02:02:38,610 --> 02:02:40,797 عامل چیزی، تا زمانی که در پایان روز 2483 02:02:40,797 --> 02:02:42,380 کد من است که در واقع بسیار مناسب. 2484 02:02:42,380 --> 02:02:45,960 اما اگر من به سرفه سه بار پس از عطسه، سه بار، 2485 02:02:45,960 --> 02:02:50,420 من به سادگی رفتن به تکرار این، برنامه را سرفه، و اجرا سرفه. 2486 02:02:50,420 --> 02:02:53,620 و من سه سرفه و سه عطسه. 2487 02:02:53,620 --> 02:02:55,990 >> و این اساسی است پارادایم، اگر شما خواهد شد، 2488 02:02:55,990 --> 02:03:00,110 برای ما چگونه ممکن است در مورد رفتن در واقع اجرای یک برنامه. 2489 02:03:00,110 --> 02:03:03,220 اما اجازه دهید فقط ببینید در حال حاضر آنچه در آن است ما انجام داده ایم از این همه زمان، 2490 02:03:03,220 --> 02:03:06,940 و چه برخی از قطعات نهایی در پشت این دستور ساده می باشد. 2491 02:03:06,940 --> 02:03:09,620 در پایان روز، ما با استفاده از صدای جرنگ جرنگ به عنوان کامپایلر ما بوده است. 2492 02:03:09,620 --> 02:03:11,494 ما شده ایم نوشتن منبع کد، تبدیل آن 2493 02:03:11,494 --> 02:03:12,820 از طریق صدای جرنگ جرنگ به کد ماشین. 2494 02:03:12,820 --> 02:03:15,540 >> و ما با استفاده از را فقط به منظور تسهیل کلید ما به طوری 2495 02:03:15,540 --> 02:03:20,740 که ما لازم نیست به خاطر داشته باشید کسانی که ورد صدای جرنگ جرنگ است. 2496 02:03:20,740 --> 02:03:22,640 اما آنچه را در واقع انجام می دهند؟ 2497 02:03:22,640 --> 02:03:24,750 و به نوبه خود، چیزی است که صدای جرنگ جرنگ در واقع انجام می دهند؟ 2498 02:03:24,750 --> 02:03:28,790 >> به نظر می رسد، هر چند ما ساده بحث امروز با گفتن، 2499 02:03:28,790 --> 02:03:33,090 شما را کد منبع، تصویب آن به عنوان ورودی به یک کامپایلر، که به شما می دهد 2500 02:03:33,090 --> 02:03:35,750 خروجی از دستگاه کد، معلوم است وجود دارد 2501 02:03:35,750 --> 02:03:37,420 مراحل مختلف در داخل وجود دارد. 2502 02:03:37,420 --> 02:03:41,940 و تدوین اتفاق می افتد به چتر مدت برای یک دسته کامل از مراحل. 2503 02:03:41,940 --> 02:03:43,970 اما اجازه دهید فقط کسی را دست انداختن این واقعا به سرعت. 2504 02:03:43,970 --> 02:03:48,070 >> به نظر می رسد که ما انجام شده است همه چیز هر بار که من یک برنامه اجرا شود، 2505 02:03:48,070 --> 02:03:50,990 یا هر بار که من یک برنامه امروز کامپایل. 2506 02:03:50,990 --> 02:03:55,020 بنابراین پیش پردازش اشاره به this-- هر چیزی را در یک برنامه C، 2507 02:03:55,020 --> 02:03:58,720 همانطور که ما دوباره و دوباره خواهید دید، که با این نماد هش شروع می شود، 2508 02:03:58,720 --> 02:04:03,320 یا نماد هشتگ در اینجا، به معنای آن یک دستور پیش پردازنده است. 2509 02:04:03,320 --> 02:04:07,330 این بدان معناست که در این صورت، کامپیوتر، انجام کاری با این فایل 2510 02:04:07,330 --> 02:04:09,430 شما در واقع قبل کد را کامپایل کنید. 2511 02:04:09,430 --> 02:04:15,220 >> در این مورد، هش شامل، در اصل، راه سی گفت، 2512 02:04:15,220 --> 02:04:19,325 هی کامپیوتر، به دریافت محتویات از CS50.h و آنها را در اینجا وارد کنید. 2513 02:04:19,325 --> 02:04:22,170 هی کامپیوتر، به دریافت محتویات استاندارد IO.h، 2514 02:04:22,170 --> 02:04:24,690 هر کجا که باشد در هارد دیسک، آن را در اینجا وارد کنید. 2515 02:04:24,690 --> 02:04:27,390 بنابراین کسانی که چیزهایی اتفاق می افتد برای اولین بار در طول پردازش. 2516 02:04:27,390 --> 02:04:28,880 >> و صدای جرنگ جرنگ همه از این برای ما. 2517 02:04:28,880 --> 02:04:30,510 و آن را به تا رفو سریع، شما حتی نمی 2518 02:04:30,510 --> 02:04:32,000 چهار چیز متفاوت اتفاق می افتد. 2519 02:04:32,000 --> 02:04:34,100 اما این اولین گام است. 2520 02:04:34,100 --> 02:04:35,560 >> آنچه در واقع اتفاقی می افتد؟ 2521 02:04:35,560 --> 02:04:38,320 خب، این مقام بعدی گام تدوین شده است. 2522 02:04:38,320 --> 02:04:40,385 و معلوم است که تدوین برنامه 2523 02:04:40,385 --> 02:04:44,060 از لحاظ فنی به معنای رفتن از کد منبع، چیزهایی که ما را 2524 02:04:44,060 --> 02:04:47,890 امروز شده است نوشتن، به چیزی نام کد اسمبلی، چیزی 2525 02:04:47,890 --> 02:04:49,260 که به نظر می رسد کمی متفاوت است. 2526 02:04:49,260 --> 02:04:51,050 >> و، در واقع، ما می توانیم این واقعی سریع را ببینید. 2527 02:04:51,050 --> 02:04:53,890 اجازه دهید من در واقع به IDE من برو. 2528 02:04:53,890 --> 02:04:58,050 اجازه دهید من جلو و hello.c باز کند، که این برنامه بسیار برای اولین بار است که ما با آن 2529 02:04:58,050 --> 02:04:59,120 امروز شروع شد. 2530 02:04:59,120 --> 02:05:04,130 و اجازه دهید من به جلو و اجرای صدای جرنگ جرنگ کمی متفاوت، صدای جرنگ جرنگ-S، hello.c، 2531 02:05:04,130 --> 02:05:07,720 است که در واقع به رفتن من hello.s فایل دیگر به من بدهید. 2532 02:05:07,720 --> 02:05:10,330 >> و ما احتمالا هرگز دوباره این نوع از کد را ببینید. 2533 02:05:10,330 --> 02:05:13,030 اگر شما یک سطح پایین تر کلاس سیستم مانند CS61، 2534 02:05:13,030 --> 02:05:14,920 شما یک مقدار زیادی بیشتر از این نوع کد. 2535 02:05:14,920 --> 02:05:17,020 اما این زبان اسمبلی است. 2536 02:05:17,020 --> 02:05:22,050 این X86 زبان اسمبلی که CPU است که زمینه ای 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE در واقع درک می کند. 2538 02:05:24,460 --> 02:05:27,060 >> و مرموز آن را به عنوان نگاه کنید، آن چیزی است 2539 02:05:27,060 --> 02:05:29,180 کامپیوتر را درک بسیار خوب است. 2540 02:05:29,180 --> 02:05:30,790 Q زیر، این جمع و تفریق است. 2541 02:05:30,790 --> 02:05:31,660 این جنبش وجود دارد. 2542 02:05:31,660 --> 02:05:35,730 >> خواستار وجود دارد از توابع در اینجا، X اورینگ، یک جنبش، یک افزودنی، پاپ، 2543 02:05:35,730 --> 02:05:36,430 بازگشت. 2544 02:05:36,430 --> 02:05:38,850 بنابراین وجود دارد برخی از آنها بسیار دستورالعمل سطح پایین 2545 02:05:38,850 --> 02:05:41,280 که در پردازنده های درک کنند که که پیشتر اشاره کردم. 2546 02:05:41,280 --> 02:05:43,100 این چیزی است که اینتل در داخل است. 2547 02:05:43,100 --> 02:05:45,030 >> الگوهای از وجود دارد صفر و آنهایی که 2548 02:05:45,030 --> 02:05:51,800 نقشه به این arcanely دقت کنید، اما تا حدودی خوب به نام، دستورالعمل ها، 2549 02:05:51,800 --> 02:05:52,780 پس به صحبت. 2550 02:05:52,780 --> 02:05:54,780 این چیزی است که اتفاق می افتد زمانی شما کد خود را کامپایل کنید. 2551 02:05:54,780 --> 02:05:58,560 شما دریافت می کنید مونتاژ زبان خارج از آن، که 2552 02:05:58,560 --> 02:06:04,680 معنی مرحله سوم است که جمع آوری که کد اسمبلی به، در نهایت، 2553 02:06:04,680 --> 02:06:09,080 ماشین صفر code-- و آنهایی که، نه متن است که ما فقط یک لحظه پیش دیدم. 2554 02:06:09,080 --> 02:06:13,370 >> بنابراین قبل از پردازش می کند که پیدا و جایگزین، و چند چیز دیگر. 2555 02:06:13,370 --> 02:06:16,430 کامپایل طول می کشد منبع خود را کد از C، کد منبع 2556 02:06:16,430 --> 02:06:18,980 که ما نوشت، به مونتاژ کد که ما فقط در نگاه کرد. 2557 02:06:18,980 --> 02:06:22,170 نصب و راه اندازی طول می کشد که مونتاژ کد را به صفر و 2558 02:06:22,170 --> 02:06:24,680 که CPU واقعا درک در پایان روز است. 2559 02:06:24,680 --> 02:06:27,630 و ایجاد ارتباط بین آخرین مرحله این است که اتفاق می افتد برای us-- دوباره، 2560 02:06:27,630 --> 02:06:29,830 اینقدر تند و سریع ما حتی نمی notice-- که می گوید، 2561 02:06:29,830 --> 02:06:32,460 هی کامپیوتر، همه از صفر و آنهایی که 2562 02:06:32,460 --> 02:06:36,750 حاصل از کامپایل کد دیوید، و عملکرد اصلی خود را در این مورد. 2563 02:06:36,750 --> 02:06:39,160 >> و هی کامپیوتر، به دریافت همه از صفر و آنهایی که 2564 02:06:39,160 --> 02:06:42,180 که کارکنان CS50 نوشت در داخل کتابخانه CS50. 2565 02:06:42,180 --> 02:06:43,440 مخلوط آن با دیوید. 2566 02:06:43,440 --> 02:06:46,648 و هی کامپیوتر، به دریافت تمام صفر و آنهایی که شخص دیگری سال نوشت 2567 02:06:46,648 --> 02:06:47,470 پیش برای printf است. 2568 02:06:47,470 --> 02:06:49,880 و اضافه کردن آن به همه چیز، به طوری که ما کرده ایم 2569 02:06:49,880 --> 02:06:52,870 کردم صفر و آنهایی که من، صفر و آنهایی که CS50 کارکنان است، 2570 02:06:52,870 --> 02:06:55,370 صفر printf و آنهایی که، و هر چیز دیگری که ما با استفاده. 2571 02:06:55,370 --> 02:07:00,410 >> همه آنها با هم به یک ترکیب برنامه ای به نام، در این مورد، سلام. 2572 02:07:00,410 --> 02:07:03,141 فقط تا پس، ما استفاده از کامپایل کلمه. 2573 02:07:03,141 --> 02:07:06,390 و ما را برای اعطا که وقتی ما می گویند، تدوین برنامه های خود را، به این معنی، 2574 02:07:06,390 --> 02:07:08,849 هی انجام پیش پردازش، مونتاژ، و ارتباط دادن. 2575 02:07:08,849 --> 02:07:11,890 اما در واقع برخی از چیزهای آبدار وجود دارد رفتن وجود دارد در زیر هود. 2576 02:07:11,890 --> 02:07:13,723 و به خصوص اگر شما کنجکاو برخی از زمان، 2577 02:07:13,723 --> 02:07:15,900 شما می توانید شروع مجبور در اطراف در این سطح پایین تر است. 2578 02:07:15,900 --> 02:07:19,660 اما در حال حاضر، متوجه است که در میان takeaways در امروز 2579 02:07:19,660 --> 02:07:23,420 کاملا به سادگی آغاز یک روند، 2580 02:07:23,420 --> 02:07:26,700 از گرفتن راحت با چیزی شبیه سلام جهان. 2581 02:07:26,700 --> 02:07:29,575 در واقع، بیشتر از آنچه که ما امروز قطعا نمی خواهد در غرق فوق العاده سریع. 2582 02:07:29,575 --> 02:07:31,491 و آن را به برخی را زمان، و برخی از عمل. 2583 02:07:31,491 --> 02:07:33,864 و شانس هستند، شما مرتب سازی بر اساس از می خواهید به ضربه صفحه کلید خود را 2584 02:07:33,864 --> 02:07:34,780 یا فریاد زدن در روی صفحه نمایش. 2585 02:07:34,780 --> 02:07:35,880 و همه از این OK. 2586 02:07:35,880 --> 02:07:38,320 هر چند، شاید نه به سعی کنید آن را در کتابخانه بسیار است. 2587 02:07:38,320 --> 02:07:40,820 >> و در نهایت، شما قادر هر چند، برای شروع 2588 02:07:40,820 --> 02:07:44,580 دیدن الگوهای، هر دو در کد خوب که شما نوشته ام و در اشتباهات 2589 02:07:44,580 --> 02:07:45,370 که شما ساخته شده است. 2590 02:07:45,370 --> 02:07:48,965 و بسیار شبیه به فرایند تبدیل شدن به یک TF یا CA است، 2591 02:07:48,965 --> 02:07:51,590 شما شروع به دریافت بهتر و بهتر دیدن آن الگوها، 2592 02:07:51,590 --> 02:07:53,774 و فقط حل خود را مشکلات خود را در نهایت. 2593 02:07:53,774 --> 02:07:56,940 در این میان، وجود دارد مقدار زیادی خواهد بود از ما به من قرض بدهید به شما پشتیبانی، و به شما به 2594 02:07:56,940 --> 02:07:57,481 از این طریق. 2595 02:07:57,481 --> 02:07:59,450 و در نوشتن یو پی اس برای تمام مشکلات 2596 02:07:59,450 --> 02:08:01,366 شما را از طریق هدایت همه از دستورات 2597 02:08:01,366 --> 02:08:05,330 که من قطعا از مطمئن شوید بسیاری از عمل در حال حاضر، 2598 02:08:05,330 --> 02:08:07,380 اما ممکن است پرواز بر سر یکی از در حال حاضر. 2599 02:08:07,380 --> 02:08:08,580 و این کاملا خوب. 2600 02:08:08,580 --> 02:08:11,230 >> اما، در نهایت، شما در حال رفتن به شروع به دیدن الگوهای پدیدار شود. 2601 02:08:11,230 --> 02:08:14,260 و هنگامی که شما گذشته تمام از جزئیات احمق، مثل پرانتز، 2602 02:08:14,260 --> 02:08:16,710 و آکولاد و نیمه دونقطه، و مسائل، رک و پوست کنده، 2603 02:08:16,710 --> 02:08:19,360 که نه در همه فکری جالب. 2604 02:08:19,360 --> 02:08:22,690 و آن است که هدف از نه در نظر گرفتن هر کلاس مقدماتی. 2605 02:08:22,690 --> 02:08:24,410 این ایده که می رویم به اهمیت است. 2606 02:08:24,410 --> 02:08:26,659 >> این حلقه است، و شرایط و توابع، 2607 02:08:26,659 --> 02:08:30,552 و با قدرت تر از انتزاع، و مقاطعه از کد، 2608 02:08:30,552 --> 02:08:33,510 و طراحی خوب، و خوب سبک، و در نهایت صحت 2609 02:08:33,510 --> 02:08:37,330 کد خود را، که در نهایت به مهم ترین. 2610 02:08:37,330 --> 02:08:40,925 بنابراین هفته آینده، ما این را ایده هایی که ما برای اولین بار در ابتدا دیدم 2611 02:08:40,925 --> 02:08:42,800 و در حال حاضر ترجمه به C. و ما شروع به را 2612 02:08:42,800 --> 02:08:45,740 معرفی برای اولین بار از حوزه دنیای واقعی درس. 2613 02:08:45,740 --> 02:08:50,140 >> ما در جهان از امنیت، و به طور خاص تر رمزنگاری، 2614 02:08:50,140 --> 02:08:51,980 هنر تقلا اطلاعات. 2615 02:08:51,980 --> 02:08:54,000 و در میان اولین مشکلات شما خودتان 2616 02:08:54,000 --> 02:08:56,840 خواهد شد به فراتر ارسال بازی با برخی از نحو 2617 02:08:56,840 --> 02:08:59,880 و حل برخی منطقی مشکلات، در نهایت قبل از اینکه طولانی، 2618 02:08:59,880 --> 02:09:03,960 است که در واقع تقلا، و یا رمز در آوردن، و در نهایت این اطلاعات را رمزگشایی کرد. 2619 02:09:03,960 --> 02:09:06,470 و همه چیز را ما انجام داده ایم امروز، نسبتا کم خواهد شد 2620 02:09:06,470 --> 02:09:09,190 سطح، فقط رفتن به اجازه می دهد ما را به یک، و یک، 2621 02:09:09,190 --> 02:09:13,550 و یک گام دیگر به سمت بالا نوشتن کد جالب ترین و در عین حال. 2622 02:09:13,550 --> 02:09:15,050 >> بنابراین بیشتر در مورد که در هفته آینده. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [پخش ویدئو] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> چه می تواند شما را به من در مورد به آخرین باری که شما او را دیدم؟ 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 چه می توانم بگویم، واقعا؟ 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 منظور من، آن مانند هر دیگر بود تمرین پیش تولید، 2631 02:09:35,340 --> 02:09:40,510 به جز چیزی وجود دارد او گفت در پایان که با من گیر کرده است. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -این CS50 بود. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> یعنی هر کس برش است، کار بزرگ در تمرین. 2636 02:09:52,190 --> 02:09:53,070 >> ناهار یعنی خبر؟ 2637 02:09:53,070 --> 02:09:54,986 >> آره، من و شما می توانید گرفتن یک ساندویچ در یک بیت. 2638 02:09:54,986 --> 02:09:58,380 اجازه بدهید من فقط با کسب کردن دیوید واقعا به سرعت. 2639 02:09:58,380 --> 02:09:59,160 دیوید؟ 2640 02:09:59,160 --> 02:10:01,260 دیوید؟ 2641 02:10:01,260 --> 02:10:03,110 >> [پایان دادن به پخش]