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 мову ад нашых сяброў ў медыя-лабараторыі Масачусецкага тэхналагічнага інстытута. 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 >> Вядома, ёсць некаторыя незнаёмыя сінтаксіс там, хутчэй за ўсё, Int, 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 >> І эквівалентнасць ў С проста будзе гэта адна радок тут, 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 І зваротны слеш н, хоць колькі-небудзь дзіўна і адсутнічае на пустым месцы, 59 00:02:45,680 --> 00:02:49,380 проста будзе мець эфект, мы будзем см у кампутары, як мой Mac ці 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 навявае думка рабіць нешта зноў, і зноў, і зноў, 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 у З мы можам зрабіць тое ж самае з тым, што называецца для loop-- ключавое слова 82 00:03:57,700 --> 00:03:59,330 не будучы ў той час як, але для. 83 00:03:59,330 --> 00:04:03,290 І тады ў нас ёсць некаторы новы сінтаксіс тут, з міжнар я роўны 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 І ў выпадку нуля, калі мы хацеў абвясціць зменную I 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 >> А ў З, каб зрабіць тое ж самае, мы будзем казаць 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 як, добра, х менш у, дзе кожны х і ў самі па сабе з'яўляюцца зменнымі? 123 00:05:49,890 --> 00:05:52,280 Мы можам зрабіць тое ж самае у С, да тых часоў, як мы 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 Мы проста сказалі б х менш у. 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, але Python, 132 00:06:12,160 --> 00:06:14,790 і JavaScript, і іншыя мовы да гэтага часу. 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 Калі х менш у, то кажуць х менш чым у, інакш, калі х больш у, 143 00:06:44,010 --> 00:06:46,230 то кажуць х больш у. 144 00:06:46,230 --> 00:06:48,300 І тады, па логіцы рэчаў, калі вы ўспомніце нуля 145 00:06:48,300 --> 00:06:52,610 ці проста свой уласны чалавечай інтуіцыі, добра, калі х не болей, чым у, і х 146 00:06:52,610 --> 00:06:57,000 ня менш, чым у, то, вядома, х будзе роўны у. 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 Калі х менш у, Printf х менш у. 152 00:07:12,050 --> 00:07:16,140 Інакш, калі х больш у, Printf х больш у. 153 00:07:16,140 --> 00:07:21,210 Інакш Printf х роўна 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 некаторыя з якіх мы збіраемся першапачаткова рухацца па ўсім свеце, С. 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 каб пачаць бачыць гэтыя дыхатаміі паміж нуля і С, 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, INT, 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 Гэта, як правіла, Intel ўнутры, таму што гэта 234 00:11:22,240 --> 00:11:24,900 адна з найбуйнейшых кампаній што робіць працэсары для кампутараў. 235 00:11:24,900 --> 00:11:28,910 >> Ну, працэсары Intel і іншыя проста вырашылі загадзя 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 гэтыя нулі і адзінкі, якія толькі ваш Mac ці ваш кампутар 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 ўбачыў у узорах і нулёў тыя, што Intel ўнутры і іншыя працэсары 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 >> Большасць з нас тут ёсць Mac або ПК. 274 00:13:26,400 --> 00:13:29,152 І вы працуеце Mac OS, або Для Windows або Linux ці Solaris, 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 і спампаваць кампілятар для вашага Mac або ПК 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 але і іншыя мовы, такія як Python і 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 серада, язь, які пабудаваны на вяршыні некаторых Праграмнае забеспячэнне з адкрытым зыходным кодам пад назвай Cloud 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 >> Дык вось я ўжо ўнутры CS50 IDE. 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 павінен быць названы нешта кропка с, у адпаведнасці з пагадненнем. 345 00:16:49,739 --> 00:16:53,030 Так што я збіраюся назваць яго hello.c, таму што Я проста хачу сказаць прывітанне да міру. 346 00:16:53,030 --> 00:16:54,820 Цяпер я збіраюся павялічыць , І націсніце кнопку Захаваць. 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 Але калі я пішу радкі, якія адпавядаюць з 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 >> Цяпер на маім ўласным Mac ці PC, я ў звычка падвойных абразкоў пстрыкаючы 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 Мы выкарыстоўваем аперацыйную Сістэма пад назвай Linux. 371 00:18:07,192 --> 00:18:09,900 Linux нагадвае іншае аперацыйная сістэма, як правіла, вядомыя 372 00:18:09,900 --> 00:18:10,850 у Unix. 373 00:18:10,850 --> 00:18:16,340 І Linux асабліва вядомы які мае каманднага радка па навакольным асяроддзі, CLI. 374 00:18:16,340 --> 00:18:20,070 Цяпер мы выкарыстоўваем спецыфічна густ Linux пад назвай Ubuntu. 375 00:18:20,070 --> 00:18:22,770 І Ubuntu проста пэўная версія Linux. 376 00:18:22,770 --> 00:18:27,900 >> Але гэтыя сістэмы Linux у гэтыя дні робяць на самай справе пастаўляюцца з графічным інтэрфейсам карыстальніка. 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 Так Clang 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 І вы можаце загрузіць і абсалютна усталяваць гэта на вашым уласным Mac ці PC. 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 І калі я іду наперад цяпер і націсніце Enter, нічога, здаецца, не адбылося. 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 >> Так што тут мы ідзем, Enter, прывітанне свет. 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 зноў, Enter, кропка слэш, a.out, Enter, 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, и-- Праклён, памылка, памылка, гэта азначае памылку. 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 Гэта ключавы крок раней было тое, што ў вас ёсць калі вы, мэтай якіх змяніць зыходны код, 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 >> Такім чынам, каб зрабіць гэта, аказваецца, што Clang, як і многія іншыя праграмы, 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 У прыватнасці, Clang падтрымлівае працяжнік 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 Так што цяпер, нават калі ў пачатку каманды я да гэтага часу ёсць Clang, 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 ой, дарэчы, выснова-о, файл называецца прывітанне, а не 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 >> Але яны ў двух розныя files-- 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 >> І на самай справе, адным з такіх Праграма называецца Make. 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 І вы заўважыце тры things-- 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 Таму ў мяне ёсць тры файла ў гэтым каталогу, у гэтай тэчцы пад назвай Workspace. 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 ўнутры CS50 IDE. 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 >> Так што я збіраюся ўвесці к для так. 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 >> Зараз, дазвольце мне ісці наперад і выдаліць гэта, ГТ прывітанне, Enter, выдаліць рэгулярныя 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 Нягледзячы на ​​тое, ёсць асаблівасці убудаваны ў CS50 IDE дзе 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 можа выконваць у свеце Linux, адзін з якіх, зноў жа, зрабіць. 548 00:26:37,550 --> 00:26:40,180 І мы збіраемся зрабіць мая праграма ў цяперашні час наступным чынам. 549 00:26:40,180 --> 00:26:43,270 >> Замест таго каб рабіць ляск, замест таго, каб рабіць ляск-о, 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 >> І гэтая праграма зрабіць што пастаўляецца з CS50 IDE і многае іншае 554 00:26:54,840 --> 00:26:57,090 як правіла, з Linux, гэта праграма, якая гэта 555 00:26:57,090 --> 00:26:59,120 збіраецца зрабіць праграму пад назвай Hello. 556 00:26:59,120 --> 00:27:03,680 І ён збіраецца ўзяць на сябе, па дамове, што калі гэтая праграма можа быць зроблена, 557 00:27:03,680 --> 00:27:09,030 гэта будзе зроблена з крыніцы код файл, які сканчаецца на дот з, hello.c. 558 00:27:09,030 --> 00:27:12,210 >> Так што, калі я ударыў Enter Цяпер, звярніце ўвагу, што каманда, якая запускаецца на выкананне 559 00:27:12,210 --> 00:27:14,340 на самай справе нават больш да таго, чым раней. 560 00:27:14,340 --> 00:27:16,670 І гэта таму, што мы папярэдне CS50 IDE, каб мець 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 збіраецца сабраць нашы праграмы выкарыстоўваючы каманду Make. 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 >> Якія існуюць іншыя каманды ў Linux, і ў сваю чаргу 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 Зрабіце Dir, вы можаце верагодна, пачынаюць выснову 580 00:28:14,650 --> 00:28:18,150 што яны азначаюць now-- зрабіць каталог, калі вы хочаце стварыць тэчку. 581 00:28:18,150 --> 00:28:21,270 RM для выдаліць, RM Dir для выдаліць 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 і нават Java і яшчэ іншыя, у тым, што яна не 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 і націснуўшы кнопку New File. 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 І радок у C проста паслядоўнасць знакаў. 613 00:29:53,990 --> 00:29:56,090 Так што цяпер давайце ісці наперад і выканайце наступныя дзеянні. 614 00:29:56,090 --> 00:30:01,204 >> Ўключаюць у сябе стандартныя IO.h-- і аказваецца стандартны ўвод-выснова, 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 На самай справе, хвіліну назад, калі я адмяніць што я толькі што зрабіў, я ўдарыў Enter. 628 00:30:35,930 --> 00:30:39,160 >> Затым я трапіў адкрыты фігурныя дужка, націсніце Enter яшчэ раз. 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 Я збіраюся выкарыстоўваць кавалак галаваломкі называецца менавіта that-- атрымаць радок. 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 гэтак жа, як мы выкарыстоўвалі, каб я выкліку зменнай I. 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 Працэнт s, коска s. 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 на яго клавіятуры, у зменнай з імем Name. 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 Калі я толькі што сказаў прывітанне імя, зваротны слэш п, выратаваў мой файл, складзены мой код, 698 00:33:57,920 --> 00:34:01,660 і пабег гэта, што б адбылося? 699 00:34:01,660 --> 00:34:05,139 >> Гэта проста будзе сказаць, прывітанне імя, у літаральным сэнсе N-А-М-Е, 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 ён скажа вам, што калі вы выкарыстоўваеце адсотка з, 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 адсоткаў s для радкоў. 711 00:34:35,469 --> 00:34:39,190 І зараз, калі я захаваў мой файл, Я вяртаюся ўніз да майго тэрміналу. 712 00:34:39,190 --> 00:34:42,870 І я тыпу Make String, таму што, зноў жа, назва гэтага 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 >> Гэта акно тэрмінала мае зараз проста выплюнуў 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 Паглядзіце, што робяць зрабіў, і гэта што доўга Clang каманда, няма нічога асаблівага там. 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 >> Так што, на жаль, Clang спрабуе быць карысным. 737 00:35:45,530 --> 00:35:46,850 Але гэта не так, і ў гэтым выпадку. 738 00:35:46,850 --> 00:35:49,350 Няма, Clang, я не меў на ўвазе стандартны ўвод-выснова. 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 І Clang ня разумець, S-T-R-I-N-G. 742 00:35:57,040 --> 00:36:01,490 Гэта неаб'яўленай ідэнтыфікатар, A Слова гэта проста ніколі не бачыў раней. 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 на цвёрдым дыску, так бы мовіць, аперацыйнай сістэмы Ubuntu 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 >> І я буду перазапускаць Зрабіць String. 761 00:37:01,100 --> 00:37:03,660 Крыж мае пальцы на гэты раз, Enter. 762 00:37:03,660 --> 00:37:05,380 Божа мой, гэта спрацавала. 763 00:37:05,380 --> 00:37:09,280 ён паказвае мне доўгую маскіровачную каманду гэта значыць тое, што робіць генеравацца з дапамогай Clang, 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 ён проста можа быць гэта раздражняе каскадных эфект, дзе Clang не разумее 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 Хм, гэта не павітаўшыся нічога. 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 І як раз для пінкоў, не люфт н. 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 затым перамесціце on-- гэтак жа, як мы трымалі адводкамі і адводкамі на мінулым тыдні, 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 Давайце назавем гэта я і называю гэта атрымаць INT, блізкія круглыя ​​дужкі, кропка з коскі. 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 Я коска я тут, таму што я хачу для падлучэння I ў гэты запаўняльнік. 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 вызначае тып паўкокс зорка, што б гэта ні. 857 00:41:28,400 --> 00:41:30,020 Але тып аргументу Int. 858 00:41:30,020 --> 00:41:33,110 >> Так што тут таксама, мы не збіраемся, мэтай якіх нават калі сёння шмат матэрыялу, 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 >> Можа быць, на самой справе адсоткаў s мае некаторы пэўны сэнс. 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, Enter. 881 00:42:21,160 --> 00:42:23,328 Гэта не добра, ніякіх памылак. 882 00:42:23,328 --> 00:42:27,260 Дот слэш int-- OK, дрэнны карыстацкі вопыт, таму што я не сказаў сабе 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 На гэты раз, я выкарыстоўваю функцыю, галаваломка кавалак, які называецца Get 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 Я збіраюся ісці наперад і рэалізаваць рэальны хуткі праграма пад назвай Adder. 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 Так што цяпер у мяне ёсць асноўныя пачатку праграмы пад назвай Adder. 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 >> Так што давайце проста скажам х, і эфектыўна падказаць карыстачу, каб даць нам х. 935 00:44:45,740 --> 00:44:50,600 А потым дайце мне ісці наперад і сказаць, Printf як наконт ля ёсць, на гэты раз чакаючы 936 00:44:50,600 --> 00:44:53,140 два значэнні ад карыстальніка. 937 00:44:53,140 --> 00:44:59,759 А потым давайце проста ісці наперад і скажам, Printf, сума х і у. 938 00:44:59,759 --> 00:45:01,300 А цяпер я не хачу рабіць адсоткаў с. 939 00:45:01,300 --> 00:45:09,080 Я хачу зрабіць працэнт I, патрэбна ўжыць зваротны слэш п, а затым падлучыць значэнне сумы. 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 г. 944 00:45:15,140 --> 00:45:16,770 >> І я збіраюся зрабіць здагадку тут. 945 00:45:16,770 --> 00:45:21,470 Калі маюцца роўныя знакі ў гэтым мову, можа быць, я проста не магу зрабіць х плюс у, 946 00:45:21,470 --> 00:45:23,660 да таго часу, як я скончу сваю думаў з коскай? 947 00:45:23,660 --> 00:45:28,170 Цяпер я магу вярнуцца сюды, падключыць г, скончыць гэтую думку з коскі. 948 00:45:28,170 --> 00:45:33,160 І давайце паглядзім цяпер, калі яны паслядоўнасці lines-- х, гэта атрымаць Int. 949 00:45:33,160 --> 00:45:34,770 Y гэта атрымаць Int. 950 00:45:34,770 --> 00:45:37,980 >> Дадаць х і у, захоўваюць значэнне ў 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 І давайце друкаваць, што сума х і у не літаральна г, 954 00:45:45,180 --> 00:45:46,830 але што ўнутры г. 955 00:45:46,830 --> 00:45:50,090 Дык давайце зробім Adder - не прыгожа, ніякіх памылак у гэты раз. 956 00:45:50,090 --> 00:45:53,030 Дот слэш Adder, увядзіце, х будзе 1. 957 00:45:53,030 --> 00:45:55,380 >> Y будзе 2. 958 00:45:55,380 --> 00:45:58,964 А сума х і ў роўная 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 Навошта даваць што-то імя як г, калі вы ў літаральным сэнсе 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 Я мог бы проста убудова х плюс у, таму што разумее, C 977 00:46:41,680 --> 00:46:43,390 арыфметычныя і матэматычныя аператары. 978 00:46:43,390 --> 00:46:47,140 >> Так што я магу проста сказаць, гэта зрабіць матэматыку, х плюс у, якімі б гэтыя значэння, 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 уводзячы новыя словы, новыя сімвалы, як і г, 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, працэнт I, плюс працэнт я, павінна быць адсоткаў я, зваротная касая п. 990 00:47:27,650 --> 00:47:32,240 І я збіраюся зрабіць this-- Хух плюс у. 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, у 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 >> Я буду называць гэты, кажуць, Інтс, множны лік для цэлых лікаў. 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 гэта адсотак я, коска х, коска ух мінус у. 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 Такім чынам, працэнт I разы адсоткаў я гэта адсотак я, зваротная касая п. 1006 00:48:16,610 --> 00:48:21,430 Давайце убудова х і у, і х раз у. 1007 00:48:21,430 --> 00:48:24,530 Мы будзем выкарыстоўваць зорачку ваш кампутар на працягу часу. 1008 00:48:24,530 --> 00:48:26,390 >> Вам не трэба выкарыстоўваць х. х імя зменнай тут. 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 адсотка I, падзяліць на працэнт I, з'яўляецца працэнт я, 1012 00:48:34,580 --> 00:48:40,460 зваротная касая п. ху, дзялення на 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 Remainder адсотка I, падзелены на працэнт I, з'яўляецца працэнт я. 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. Вы можаце кажуць х па модулю у, дзе 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 тут, проста азначае, што такое Астатняя частка х дзеліцца на у? 1029 00:49:33,650 --> 00:49:36,130 Так х дзеліцца на ў ёсць х слэш у. 1030 00:49:36,130 --> 00:49:38,220 Што астатняя частка дзеліцца на х у? 1031 00:49:38,220 --> 00:49:41,780 Гэта х мод у, як праграміст мог бы сказаць. 1032 00:49:41,780 --> 00:49:48,300 >> Так што, калі я не зрабіў ніводнай памылкі тут, дазвольце мне ісці наперад і зрабіць Інтс, множны лік, прыемна, 1033 00:49:48,300 --> 00:49:50,010 і кропка слэш Інтс. 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-- Добра, мы прапусцім што адзін. 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 Мы робім матэматыку як х, падзеленае на у. 1049 00:50:39,460 --> 00:50:44,680 І абодва х і у, на лініі кода раней, з'яўляюцца цэлымі лікамі. 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 х, а затым у, а затым х дзеліцца на у. х і ў Інтс. 1053 00:50:57,580 --> 00:50:59,060 Мы там добра. 1054 00:50:59,060 --> 00:51:01,250 >> Але што х дзеліцца на х? 1055 00:51:01,250 --> 00:51:06,790 х дзеліцца на к і павінна быць, матэматычна, 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 Такім чынам, 1/10 бліжэй да 0, чым да аднаго. 1063 00:51:25,870 --> 00:51:30,800 >> І так, што C робіць для us-- выгляд, таму што мы сказалі гэта, мэтай якіх 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 Дайце мне значэнне з якая плавае коскі называецца х. дзе з якая плавае кропкай 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 Давайце зменім у да паплаўка. 1088 00:52:43,220 --> 00:52:45,000 Так што гэта будзе атрымаць з якая плавае кропкай. 1089 00:52:45,000 --> 00:52:47,620 >> А цяпер, мы не хочам, каб падключыць Інтс. 1090 00:52:47,620 --> 00:52:53,130 Аказваецца, мы павінны выкарыстоўваць адсоткаў е для паплаўка, працэнт 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 х будзе адным 1. у Будзе 10 разоў. 1094 00:53:04,280 --> 00:53:08,240 >> І, добра, добра мой дадатак з'яўляецца правільным. 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, и-- добра, няма, ОК. 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, падзелены на 10000, гэта 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 Але ёсць не толькі Інтс. 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 тыпу дадзеных BOOL, а таксама. 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 з Інтс і паплаўкамі. 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 Я збіраюся ісці наперад і вельмі проста раздрукаваць following-- Ьоо 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 А потым я збіраюся памер друку BOOL. 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 у прыватнасці, на Аперацыйная сістэма Ubuntu, 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 Так BOOL, нават калі вы тэхнічна трэба толькі 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 >> Паўкокс, тым часам, выкарыстоўваецца для сімвала як сімвал Ascii за апошні тыдзень, 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 сінхранізуецца з ім быць не даўжэй, чым 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 ИНТ 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 Вы можаце толькі захоўваць так шмат файлы на вашым Mac ці PC. 1197 00:58:17,860 --> 00:58:23,030 Вы можаце толькі захоўваць так шмат праграм RAM працуе адразу, абавязкова, нават 1198 00:58:23,030 --> 00:58:26,360 з віртуальнай памяццю, таму што ў вас ёсць абмежаваную колькасць аператыўнай памяці. 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 І аператыўная памяць, дзе праграмы жыць у той час як яны працуюць. 1205 00:58:43,620 --> 00:58:46,630 >> Так што на кожным Mac ці PC, пры падвойным выберыце праграму, і яна адкрывае, 1206 00:58:46,630 --> 00:58:48,921 і гэта адкрывае нейкі дакумент Word, ці нешта падобнае, 1207 00:58:48,921 --> 00:58:51,764 ён захоўвае яе на некаторы час у RAM, паколькі аператыўная памяць хутчэй 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 і мільярд, трыльён, і квадрыльёнаў і квінцільёнаў. 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 канчатковае лік транзістараў, A канчатковае лік лямпачак ўнутры. 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 І мой Mac, вядома ж, ёсць шлях больш за 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 void-- і да таго часу, мы будзем 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 У той час як дакладна, то давайце раздрукаваць п гэта адсотак я, зваротная касая рыса п, убудова п. 1276 01:02:22,440 --> 01:02:27,200 Але цяпер, давайце п атрымлівае п плюс 1. 1277 01:02:27,200 --> 01:02:29,660 >> Такім чынам, іншымі словамі, на кожны ітэрацыя гэтага бясконцага цыклу, 1278 01:02:29,660 --> 01:02:32,550 давайце разгледзім значэння п, у і дадаць да яго 1, а затым 1279 01:02:32,550 --> 01:02:34,350 захаваць вынік у п на левай баку. 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 вы можаце сказаць, п плюс роўны 1. 1283 01:02:42,770 --> 01:02:47,480 >> Ці, калі вы сапраўды хочаце быць фантазіі, Вы можаце сказаць, п плюс плюс кропка з коскі. 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 Давайце паглядзім, п становіцца даволі вялікі. 1292 01:03:09,852 --> 01:03:11,310 Але давайце падумаем, наколькі вялікая можа атрымаць п? 1293 01:03:11,310 --> 01:03:12,870 >> п з'яўляецца 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 і ўдарыў кіравання 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 >> Я збіраюся ісці наперад і рабіць гэта толькі канчатковае лік раз. 1313 01:04:07,768 --> 01:04:10,047 Давайце выкарыстоўваць цыкл, якія я згадваў раней. 1314 01:04:10,047 --> 01:04:10,630 Давайце зробім гэта. 1315 01:04:10,630 --> 01:04:13,430 Дайце мне іншую зменную Int я атрымлівае 0. 1316 01:04:13,430 --> 01:04:17,430 я менш, чым, скажам, 64 я ++. 1317 01:04:17,430 --> 01:04:24,010 А цяпер дазвольце мне ісці наперад і друк з п адсоткаў я, коска п. 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 >> п атрымлівае п раз 2. 1321 01:04:30,620 --> 01:04:34,140 Ці мы маглі б быць фантазіі і рабіць раз роўная 2. 1322 01:04:34,140 --> 01:04:37,120 Але давайце проста скажам, п роўна сама па сабе, раз 2. 1323 01:04:37,120 --> 01:04:39,321 Іншымі словамі, у гэтым Новая версія праграмы, 1324 01:04:39,321 --> 01:04:41,820 Я не хачу чакаць вечна ад 800 000, як да 4 мільярдаў. 1325 01:04:41,820 --> 01:04:43,070 Давайце проста скончым з гэтым. 1326 01:04:43,070 --> 01:04:44,920 >> Давайце на самай справе ў два разы п кожны раз. 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 да самай вялікай магчыма значэнне, якое мы можам разлічваць, каб з міжнар. 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 Зрабіць перапаўнення, кропка слэш Перапаўненне, Enter, усё ў парадку, 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 >> І заўважце, у першы раз, п роўна 1. 1353 01:05:58,700 --> 01:06:03,110 Другі раз, п = 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 І вось, здавалася б, самы высокі I можа разлічваць у гэтай канкрэтнай праграме 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 І дазвольце мне ісці наперад тут і say-- я буду мець 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 Не, гэта не так, дне, дзякуй. 1379 01:07:21,860 --> 01:07:23,430 Так што часам Clang можа быць карысным. 1380 01:07:23,430 --> 01:07:27,550 Я не памятаю, які фармат Спецификатор быў доўга доўга. 1381 01:07:27,550 --> 01:07:28,950 >> Але, на самой справе, Clang сказаў мне. 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 І дазвольце мне зноў запусціць яго, кропка слэш перапаўненне, Enter. 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 >> Так што ў Lego Star Wars, калі вы калі-небудзь гулялі ў гэтую гульню, 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 декрементируется на два, таму мінус мінус, а затым мінус мінус. 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 На самай справе, усяго год таму артыкул прыйшла па-за аб Boeing 787 Dreamliner. 1445 01:10:54,500 --> 01:10:56,850 >> І артыкул у першай Погляд чытае трохі Arcane. 1446 01:10:56,850 --> 01:11:01,480 Але гэта сказаў, праграмнае забеспячэнне Ўразлівасць у Боінг 1447 01:11:01,480 --> 01:11:04,790 новы 787 Dreamliner бруя мае патэнцыял, каб выклікаць пілотаў 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 можа страціць усё пераменны ток, пераменны ток, электрычная магутнасць з-за генератара 1453 01:11:24,880 --> 01:11:28,892 блокі кіравання, гПа, адначасова уваходзячы ў адказаўстойлівы рэжым. 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 усяго пераменнага электрычнага магутнасць, што можа прывесці да 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 Дазвольце мне вярнуцца ў CS50 IDE. 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, працэнт е, зваротная касая п, 1 дзеліцца на 10. 1501 01:14:03,640 --> 01:14:07,430 Іншымі словамі, давайце ныраць глыбей 1/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 Я кажу, эй, кампутар шоў я паплавок з працэнтамі ф. 1510 01:14:26,050 --> 01:14:28,200 Але я даю яму 2 Інтс. 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, у адпаведнасці з маім Mac тут, на самай справе, 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 Аказваецца, вы не павінны ўказваць толькі адсоткаў е, ці проста адсотка я. 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 вы хочаце бачыць пасля таго, як дзесятковай кропкі, а затым е 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 Але кампутар можа прадстаўляць толькі канчатковае лік так лікаў. 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 фільм, які называецца Office Space, дзе хлопчыкі і дзяўчынкі ў гэтым фільме, 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 >> -Компьютеры, Мы ўсе прыйшлі, каб прыняць што часта хвалюе праблемы, 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 >> 4 чэрвеня 1996 г., навукоўцы падрыхтавалі каб запусціць беспілотны 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 >> -На Каля 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 -The Праблема на Ariane была што існуе лік, 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 >> -The Няздольнасць аднаго праграмнае забеспячэнне, каб прыняць 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 Ariane ракеты былі вельмі паспяховым, так што вялікая частка праграмнага забеспячэння 1625 01:20:38,140 --> 01:20:41,550 створаны для яго было таксама які выкарыстоўваецца ў Ariane 5. 1626 01:20:41,550 --> 01:20:47,940 >> -The Асноўная праблема складалася ў тым, што Ariane 5 быў хутчэй, паскараецца хутчэй. 1627 01:20:47,940 --> 01:20:51,450 І праграмнае забеспячэнне не было даводзілася за гэта. 1628 01:20:51,450 --> 01:20:55,060 >> -The Знішчэнне ракеты была велізарная фінансавая катастрофа, 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, які павінен быў для абароны ад ўваходзяць бокоплавов, 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 Patriot з'яўляецца амерыканскай сярэдняй далёкасці паверхню паветранай сістэмы, вытворчасці 1643 01:21:43,810 --> 01:21:45,770 кампаніяй Raytheon. 1644 01:21:45,770 --> 01:21:52,340 >> -The Памер перахопніка Patriot сама па сабе мае даўжыню каля прыкладна 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 >> -The Ракеты перавозяцца чатыры ў кантэйнеры, 1651 01:22:14,110 --> 01:22:17,130 і транспартуюцца паўпрычэпам. 1652 01:22:17,130 --> 01:22:24,930 >> -The Patriot сістэмы ПРА ўзыходзіць па меншай меры, 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 Армія хацела выкарыстоўваць яго збіваць бокоплавов, а не самалёты. 1657 01:22:39,745 --> 01:22:43,620 >> ВПС Ірака было не так шмат праблем. 1658 01:22:43,620 --> 01:22:46,670 Але армія хвалявалася пра бокоплавов. 1659 01:22:46,670 --> 01:22:50,170 І такім чынам яны спрабавалі абнавіць Patriot. 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 Але калі Patriot быў дастаўлены ў эксплуатацыю, 1663 01:22:58,490 --> 01:23:02,860 Армія не вядома пра Іракскі мадыфікацыя, якая зрабіла 1664 01:23:02,860 --> 01:23:05,930 іх бокоплавы амаль немагчыма патрапіць. 1665 01:23:05,930 --> 01:23:10,740 >> -Што Здарылася гэта бокоплавы, што прыбывалі ў няўстойлівыя. 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 >> Так што цяпер Патрыёт спрабуючы прыйсці ў Scud. 1672 01:23:27,330 --> 01:23:30,230 І большую частку часу, Пераважная большасць часу, 1673 01:23:30,230 --> 01:23:32,940 было б проста лётаць на Scud. 1674 01:23:32,940 --> 01:23:37,260 Пасля таго, як аператары сістэмы Patriot зразумеў, што Patriot прапусціў сваю мэту, 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 каб быць паспяхова знішчаючы Скад, у Дахране, 1681 01:24:00,370 --> 01:24:03,360 не можа быць ніякай памылкі аб яго выкананні. 1682 01:24:03,360 --> 01:24:07,970 Там, радыёлакацыйная сістэма Патрыятычнага страціў след якое ўваходзіць Scud, 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 Міністэрства абароны ў адказ кажучы ўсё батарэйкі Patriot 1694 01:24:41,900 --> 01:24:44,950 не пакідаць сістэмы на працягу доўгага часу. 1695 01:24:44,950 --> 01:24:49,160 Яны ніколі не казалі, што доўгі час was-- восем гадзiн, 10 гадзін, 1000 гадзін. 1696 01:24:49,160 --> 01:24:51,360 Ніхто не ведаў. 1697 01:24:51,360 --> 01:24:53,380 >> -The Батарэі Patriot размешчаных у казарме 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 Гэта менавіта тая праблема што здарылася ў Patriot. 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 адбылося гэта запуск Scud быў дэтэктуецца ранніх спадарожнікаў папярэджання 1718 01:26:08,940 --> 01:26:12,860 і яны ведалі, што Scud быў прыходзяць у іх агульным кірунку. 1719 01:26:12,860 --> 01:26:15,320 Яны не ведалі, адкуль ён зыходзіць. 1720 01:26:15,320 --> 01:26:18,250 >> -Гэта Быў цяпер да радара кампанент сістэмы Patriot 1721 01:26:18,250 --> 01:26:23,190 абараняючы Дахране, каб знайсці і захаваць след надыходзячай ракеты праціўніка. 1722 01:26:23,190 --> 01:26:24,609 >> -The Радар быў вельмі разумны. 1723 01:26:24,609 --> 01:26:26,650 Гэта будзе на самой справе трэк становішча Scud, 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 >> -Тады, Як толькі Patriot вырашае дастаткова часу 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 >> -The Уваходны Скад знік з экрана радара. 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 адзін раздзел у каламутнай Гісторыя ракеты Patriot. 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 І мы, у прыватнасці, выкарыстоўваецца атрымання радкі, і атрымаць Int, а цяпер таксама атрымаць з якая плавае кропкай, 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, A плаваць, і гэтыя іншыя да гэтага часу. 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 Там сёе-тое яшчэ называецца зваротнай касой рысы г для вяртання карэткі, якая 1773 01:28:52,520 --> 01:28:54,360 гэта больш падобна на старая школа пішучая машынка, 1774 01:28:54,360 --> 01:28:57,690 а таксама для Windows выкарыстоўваецца на працягу многіх гадоў. 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 Дазвольце мне даць сабе, што шаблоннага з INT галоўная пустата, чыё тлумачэнне, якое мы будзем 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 А потым яшчэ if-- я мог бы зрабіць гэта. 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 на права і пакласці яго ў I на левай баку. 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 і іншыя мовы, такія як Java і іншыя, на самай справе 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 Але адтуль, і з Python і JavaScript, будзе 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 Такім чынам, дазвольце мне ісці наперад і стварыць праграма пад назвай Logical 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 з гэтай праграмы Rm, то выдаліць Праграма да гэтага запыту карыстачу 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 >> Я хачу сказаць, калі З роўны роўна, цытата Unquote, 1885 01:34:11,090 --> 01:34:16,304 у, то я буду лічыць, што карыстальнік абраў так. 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 >> Інакш, калі з роўна роўны 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 роўная некаторай літары як у альбо п, я, на самой справе, трэба мець адзінкавыя двукоссі. 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 Але я збіраюся проста слепа скажам у для так, добра, добра. 1915 01:35:33,030 --> 01:35:35,780 >> Давайце запусцім яго зноў, п для не, добра. 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 Добра, гэта не зусім тое, што я чакаў. 1919 01:35:46,130 --> 01:35:48,170 На самай справе, кампутар робіць тое, што ў літаральным сэнсе 1920 01:35:48,170 --> 01:35:51,794 Я расказаў гэта do-- праверыць у ніжнім рэгістры у і малыя літары п. 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 роўная раўняецца капіталу аднаго цытуемы у. 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, як той жа характар. 1934 01:36:37,110 --> 01:36:39,470 Так ці тое, што мы маем намер тут. 1935 01:36:39,470 --> 01:36:46,280 >> Так што, калі я раблю гэта ў абодвух месцах, або C раўняецца капіталу роўная N, зараз зноў запусціць, 1936 01:36:46,280 --> 01:36:49,390 рабіць лагічныя, перазапускаць лагічна. 1937 01:36:49,390 --> 01:36:51,200 Цяпер я магу ўвесці у. 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 І я не павінен, абавязкова, прыдумаць яшчэ два МФС ці ж МФС. 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 кажучы, калі З роўны маленькую у, друк ды, інакш, калі з роўна капіталу Y, 1946 01:37:17,490 --> 01:37:20,074 друк ды, інакш, калі з роўна 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 Дайце мне маю INT галоўную пустэчу. 1961 01:38:06,510 --> 01:38:09,310 А потым тут, хай мне ісці наперад і рабіць гэта. 1962 01:38:09,310 --> 01:38:12,010 >> Чар з атрымлівае атрымаць сімвал, гэтак жа, як і раней. 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, 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, 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, ніжні рэгістр 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 з МСФ і вертыкальных стрыжняў, а астатняе МФС, не маглі б мець. 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, малыя літары п, капітал N, 2001 01:40:05,830 --> 01:40:09,250 Дэвід, паўтарыць спробу, таму што гэта ні аднаго знака. 2002 01:40:09,250 --> 01:40:12,050 Давайце зробім х, памылка, як і чакалася. 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 Давайце тыпу ў ніжнім рэгістры у, верхні выпадак, Enter. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 Такім чынам, я надрукаваў у. 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 that-- зрабіць свае ўласныя функцыі, калі яны ўжо не існуюць. 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 Чаму не я, і чаму не зрабiў нехта перада мной, 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 і называюць гэта S. 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 Дазвольце мне пайсці і зрабіць прататып, Enter. 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 праблема звязаная з імем друку, адкрыйце PAREN s, блізкія PAREN, паўсінтэтычныя тоўстай кішкі. 2083 01:43:57,520 --> 01:44:01,800 Але няяўнае дэкларацыя функцыя, якую мы бачылі коратка раней. 2084 01:44:01,800 --> 01:44:04,880 Гэта азначае, проста, што Clang не ведае, што я маю на ўвазе. 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 >> Я збіраюся ісці наперад і рэалізаваць мая ўласная функцыя называецца Print Name. 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, Main, Пустэча, мы будзем дражніць адзін ад аднаго да таго доўга, што гэта на самай справе азначае. 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 або Clang больш канкрэтна, да гэтага часу не прызнае імя друку. 2126 01:45:51,970 --> 01:45:54,580 >> І гэта таму, што Clang, дызайн, гэта свайго роду нямы. 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 Вы павінны навучыць Clang, што гэта з'яўляецца шляхам вызначэння функцыі першага. 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 Так што атрымліваецца, мы можам сказаць Clang проактивно, эй, Clang, на чацвёртым радку, 2156 01:47:15,360 --> 01:47:17,940 Я абяцаю рэалізаваць функцыя называецца Print 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 >> Тут прыходзіць Main. 2160 01:47:25,680 --> 01:47:29,130 Галоўнае зараз у радку 9 можна выкарыстоўваць Друк імя, таму што Clang 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 Дэвід, прывітанне David, 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 і на самай справе цягнік Clang выкарыстоўваць, ці чакаць яго. 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 так што мы можам паказаць, як нешта як атрымаць радок, або атрымаць Int, 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, для добрага карыстацкага досведу, х. 2202 01:49:39,970 --> 01:49:44,360 А потым я буду чакаць Карыстальнік, каб даць мне х з GET Int. 2203 01:49:44,360 --> 01:49:48,459 >> А потым я збіраюся ісці наперад і раздрукаваць х на плошчу. 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 Я мог бы проста do-- што х у квадраце? х у квадраце х раз х. 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 І мы будзем проста называць яго п, па змаўчанні. 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 вынік п раз п. 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 У гэтым выпадку, я хачу для вяртання ў п раз п, 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 >> Уваход на плошчу збіраецца быць инт. 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 >> І, зноў жа, толькі новы Ключавое слова тут Return. 2245 01:51:33,230 --> 01:51:34,480 І я проста раблю некаторыя матэматыцы. 2246 01:51:34,480 --> 01:51:41,825 Калі б я сапраўды хацеў быць непатрэбным, Я мог бы сказаць INT прадукт атрымлівае п раз п. 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 казаць, проста сказаць, вяртанне п раз п, каб пазбавіцца ад гэтай лініі ў цэлым. 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 >> х у квадраце 2. х 4. х квадрат 3. х 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, INT, асноўны, несапраўдным. 2278 01:53:16,624 --> 01:53:18,790 І тады кожны раз, калі я называецца атрымання радкі да гэтага часу, 2279 01:53:18,790 --> 01:53:23,260 Я сказаў нешта накшталт, радок s атрымлівае атрымаць радок, таму што string-- Get 2280 01:53:23,260 --> 01:53:27,880 давайце назавем гэтую get.c-- радок GET сама вяртае радок, я магу потым 2281 01:53:27,880 --> 01:53:32,050 выкарыстоўваць, і сказаць, прывітанне, коска, адсоткаў 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 >> І дазвольце мне ісці наперад і проста як драпіна, раздрукаваць кашаль / п. 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 Давайце дамо сабе трохі больш месцы тут, Enter, кашаль, кашаль, кашаль. 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 Дазвольце мне ісці наперад і зрабіць цыкл, нават пры тым, што сінтаксіс не можа 2319 01:55:22,510 --> 01:55:24,570 прыходзяць, натуральна, пакуль няма. 2320 01:55:24,570 --> 01:55:29,494 >> Зрабіце гэта тры разы, проста , Робячы following-- 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, цытата Unquote, кашаль. 2344 01:56:29,370 --> 01:56:32,380 >> І цяпер тут, я збіраюся ісці наперад і для Int, 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 Давайце ісці наперад і пакласці ў кашаль ИНТ. я атрымлівае нуль. 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 >> Так што, на самай справе, гэта п, што я хачу, усё, што карыстальнік кажа мне. 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 Ён па-ранейшаму робіць нешта п раз, 0 да, але не роўна п. 2454 02:01:12,630 --> 02:01:14,540 Гэта азначае, што агульны час п. 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 І я магу шматкроць выкарыстоўваць п, таму што звярніце ўвагу, што т у дадзеным кантэксце або аб'ёму 2466 02:01:47,300 --> 02:01:49,470 існуе толькі ўнутры гэтай функцыі. 2467 02:01:49,470 --> 02:01:52,767 >> І п ў гэтым кантэксце толькі існуе ў рамках гэтай функцыі тут. 2468 02:01:52,767 --> 02:01:54,600 Такім чынам, мы вернемся да гэтыя пытанні сферы. 2469 02:01:54,600 --> 02:02:01,160 І вось, я проста хачу сказаць, Achoo, а затым п раз, кропка з коскі. 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 Так што я буду казаць, скажам радок s, Int 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 У рэшце рэшт, мы выкарыстоўвалі Clang ў якасці нашага кампілятара. 2492 02:03:09,620 --> 02:03:11,494 Мы пісалі крыніца код, ператвараючы яго 2493 02:03:11,494 --> 02:03:12,820 з дапамогай Clang ў машынны код. 2494 02:03:12,820 --> 02:03:15,540 >> І мы выкарыстоўваем толькі зрабіць каб палегчыць нашы націску клавіш так 2495 02:03:15,540 --> 02:03:20,740 што мы не павінны памятаць, гэтыя заклінанні самага Clang. 2496 02:03:20,740 --> 02:03:22,640 Але што гэта зрабіць на самай справе рабіць? 2497 02:03:22,640 --> 02:03:24,750 І, у сваю чаргу, з'яўляецца тое, што Clang на самай справе рабіць? 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 >> У гэтым выпадку, хэш ўключаюць ёсць, па сутнасці, шлях C спосаб сказаць, 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 >> І Clang робіць усё гэта для нас. 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 І дазвольце мне ісці наперад і запусціць Clang A крыху па-іншаму, Clang-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 асэмблеры што працэсар, які ляжыць у аснове 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 Sub кв, гэта вычытаць. 2541 02:05:30,790 --> 02:05:31,660 Там у рух. 2542 02:05:31,660 --> 02:05:35,730 >> Там тэлефануе функцый тут, х ORing, рух, надбудова, поп, 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 Гэта значыць тое, што Intel Inside. 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 што працэсар сапраўды будзе зразумець, у канцы працоўнага дня. 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 Але цяпер разумею, што сярод на сённяшні дзень ежы на дом 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 І ўсё гэта нармальна. 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 або СА, як, 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 >> [КАНЕЦ засьпяваю]