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 >> Давид Ј Малан: У реду, то је ЦС50. 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 на другом језику познат као Ц. Нов, Ц је више традиционални говор. 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 у почетку, Сцратцх против Ц. 25 00:01:08,980 --> 00:01:12,350 >> Тако, на пример, сећам се када смо имплементиран први од наших програма 26 00:01:12,350 --> 00:01:16,220 Последњи пут смо имали блок који је изгледао нешто мало овако-- када је 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 Али видећемо да, заиста, многи ових блоцкс-- и штавише, 35 00:01:37,960 --> 00:01:41,880 у Ц многи фунцтионс-- може бити параметризед или прилагођено 36 00:01:41,880 --> 00:01:43,150 да раде различите ствари. 37 00:01:43,150 --> 00:01:45,520 У ствари, у Ц ако ми Желим да претворити, сада, 38 00:01:45,520 --> 00:01:47,567 ово Огреби програма у овом другом језику, 39 00:01:47,567 --> 00:01:49,650 ћемо написати мало нешто овако. 40 00:01:49,650 --> 00:01:52,540 >> Одобрена, постоји нека непозната синтакса тамо највероватније, Инт, 41 00:01:52,540 --> 00:01:54,380 и заграде, и празнина. 42 00:01:54,380 --> 00:01:57,740 Али принтф-- иако би Мислим да би било штампа. 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 >> У ствари, хајде да се фокусирају на оног Функција специфицалли-- у овом случају, 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 где принтф је једнако, рецимо, двострука наводи низ, здраво 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 једноставно ће имати ефекат ћемо види на компјутеру, као мој Мац или ПЦ, 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 то урадили нешто буквално форевер-- у овом случају, 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 >> У Ц, ако желимо да спроведе ово Иста идеја, могли би једноставно урадити. 69 00:03:14,580 --> 00:03:19,570 Док истина, принтф здраво ворлд-- сада док, само семантички, некако 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 Па, труе-- опозив да истина је само на један или. 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 у Ц можемо да урадимо исто са оним што је назива за лооп-- кључну реч 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 на скуп Ц линија кода. 88 00:04:13,079 --> 00:04:14,450 >> У међувремену, у обзир променљиве. 89 00:04:14,450 --> 00:04:16,540 И, у ствари, само Видео сам једну малопре. 90 00:04:16,540 --> 00:04:21,220 А у случају Сцратцх, ако ми желео да прогласи променљиву Звао сам 91 00:04:21,220 --> 00:04:24,590 за и као цео број, само број, и желимо да га поставите на неку вредност, 92 00:04:24,590 --> 00:04:28,410 да би користили ову оранге блок овдје-- и поставља на 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 >> И у Ц да учине исто, ћемо рећи инт 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 И полу-дебелог црева, као што ћемо видим-- и видели смо неке од ових алреади-- 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 који су или истина или фалсе-- питања, 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 Па, на срећу, нешто је једноставно у Ц. И да преведе, 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 И видећете ову врсту синтакса у многим лангуагес-- 131 00:06:10,350 --> 00:06:12,160 не само Сцратцх, не само Ц, али Питхон 132 00:06:12,160 --> 00:06:14,790 и ЈаваСцрипт, и други језици и даље. 133 00:06:14,790 --> 00:06:18,270 >> Размотримо још један конструкт из Ц, појам стања, 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 >> У међувремену, ако желимо да то у Ц, то дискутабилно 150 00:07:04,980 --> 00:07:08,420 Изгледа мало симплер-- најмање када се упознате са синтакси. 151 00:07:08,420 --> 00:07:12,050 Ако је к мања од и, принтф к је мања од год. 152 00:07:12,050 --> 00:07:16,140 Иф к је веће од и, принтф к је веће од и. 153 00:07:16,140 --> 00:07:21,210 Елсе принтф к једнако и-- и, Опет, са онима који су косих завршава само 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 >> У Ц, то нема листе, само по себи, али нешто 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 Али за сада, најближи еквивалент у Ц за нас 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 први елемент низа или лист-- и ја ћу га звати, 172 00:08:09,030 --> 00:08:13,600 По конвенцији, аргв, аргумент вектор, али више о томе убрзо. 173 00:08:13,600 --> 00:08:17,090 Ако желим да се на првом елементу од аргв, у свету Сцратцх 174 00:08:17,090 --> 00:08:20,930 ви заправо до типично почети да броји од 1. 175 00:08:20,930 --> 00:08:22,850 >> И тако сам могао добити тачка 1 аргв. 176 00:08:22,850 --> 00:08:26,310 То је само колико МИТ-имплементиран појам листе. 177 00:08:26,310 --> 00:08:29,860 Али у Ц, идем да више једноставно само рећи, аргв, 178 00:08:29,860 --> 00:08:32,758 што опет је име мог лист-- или да буде јасно, низ. 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 Ми смо у Ц користимо 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 Овде ће бити први од наших Ц изворни код за комплетне програме. 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 >> Дакле овде имамо шта је вероватно најједноставнији Ц програм 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 Стандардни ио.х, и то угао носачи, и инт и празнина, 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 тако се Ц као програмски језик имају главну део кода који 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 И то је посебна функција која постоји у Ц да када покренете програм, 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 >> У међувремену, ми смо ово и раније, принтф или штампање форматиран, то је 209 00:10:01,130 --> 00:10:05,620 Биће то функција која долази са Ц заједно са хрпом других, 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 као тхесе-- хелло свету, обрнуте косе црте Н двоструким наводницима, 215 00:10:18,680 --> 00:10:23,040 можемо рећи принтф тачно шта да одштампате на екрану. 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 али барем је нешто реадабле-- оштар укључују, стандардни ио.х, Инт, 219 00:10:34,510 --> 00:10:39,340 главни, празнина, принтф, све чаробни бајалице смо управо видели на екрану. 220 00:10:39,340 --> 00:10:42,470 Али ми заправо треба да го више волшебни још. 221 00:10:42,470 --> 00:10:47,140 Треба прво да преведе код да пишемо у машински код. 222 00:10:47,140 --> 00:10:51,370 И сећам се од прошле недеље да машина, барем оне знамо овдје, 223 00:10:51,370 --> 00:10:54,450 на крају дана само разумети нула и јединица. 224 00:10:54,450 --> 00:10:58,100 >> И мој Боже, ако смо морали да напише ово нуле и јединице да заправо програма, 225 00:10:58,100 --> 00:11:01,260 било би веома, веома брзо узети забаву из свега. 226 00:11:01,260 --> 00:11:05,150 Али испоставило се, по прошле недеље, да су ови обрасци нула и јединица 227 00:11:05,150 --> 00:11:06,400 Само треба посебно значење. 228 00:11:06,400 --> 00:11:08,500 У неким контекстима, они могу значити бројева. 229 00:11:08,500 --> 00:11:11,840 >> У неким контекстима, они могу значити писма, или боје, или било који број 230 00:11:11,840 --> 00:11:14,710 других апстракција тамо на. 231 00:11:14,710 --> 00:11:18,450 Али, баш као ваш рачунар има ЦПУ, централну процесорску јединицу, 232 00:11:18,450 --> 00:11:20,390 или мозак унутар рачунара. 233 00:11:20,390 --> 00:11:22,240 То је обично АМД унутра, јер је то 234 00:11:22,240 --> 00:11:24,900 једна од највећих компанија који чини ЦПУ за рачунаре. 235 00:11:24,900 --> 00:11:28,910 >> Па, АМД процесори и други једноставно су одлучили унапред 236 00:11:28,910 --> 00:11:33,970 да неки обрасци нула и Они ће значити конкретне ствари. 237 00:11:33,970 --> 00:11:37,040 Неки обрасци нула и јединица ће значити, принт тхис на екран, 238 00:11:37,040 --> 00:11:39,710 или додати ове две бројеве, или одузети ова два броја, 239 00:11:39,710 --> 00:11:43,310 или се овај податак из меморија мог компјутера овде, 240 00:11:43,310 --> 00:11:47,870 или било који број других веома ниском нивоу, али на крају користан, операције. 241 00:11:47,870 --> 00:11:53,022 Али, на срећу, ми људи не иду да треба да знају овај ниво детаља. 242 00:11:53,022 --> 00:11:56,230 Заиста, баш као и прошли пут, где смо захваћене опет, и опет, и опет, 243 00:11:56,230 --> 00:11:58,930 Зграда са веома ниском нивоу примитиве као што су нула и јединица 244 00:11:58,930 --> 00:12:01,160 на концептима вишег нивоа као што бројева и слова, 245 00:12:01,160 --> 00:12:04,330 и боје, и још, Дакле, можемо ли као програмери 246 00:12:04,330 --> 00:12:07,080 стајати на раменима други који су дошли пре нас 247 00:12:07,080 --> 00:12:11,260 и користе софтвер који други људи су написали пре нас-- 248 00:12:11,260 --> 00:12:14,340 наиме програма под називом преводиоце. 249 00:12:14,340 --> 00:12:17,770 >> Ц је језик који је обично састављен, 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 и желите да га претворити на крају са машином цоде-- 254 00:12:33,140 --> 00:12:37,100 те нуле и јединице које само ваш Мац или ваш рачунар 255 00:12:37,100 --> 00:12:41,230 ундерстандс-- имате први нахрани изворног кода как 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 као главни, и принтф, и други који смо 269 00:13:12,180 --> 00:13:17,620 Видио у обрасцима нула и оне који Интел Инсиде и други процесори 270 00:13:17,620 --> 00:13:20,020 заправо разуме. 271 00:13:20,020 --> 00:13:22,460 Како то радимо? 272 00:13:22,460 --> 00:13:24,470 Где ћемо добити преводилац? 273 00:13:24,470 --> 00:13:26,400 >> Већина нас овде има Мац или ПЦ. 274 00:13:26,400 --> 00:13:29,152 А ви користите Мац ОС, или Виндовс, или Линук, или Соларис, 275 00:13:29,152 --> 00:13:30,860 или било који број другог оперативни системи. 276 00:13:30,860 --> 00:13:32,568 И, заиста, можемо излазе на Интернету 277 00:13:32,568 --> 00:13:35,710 и преузмите преводилац за Мац или ПЦ рачунар 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 Ми ћемо писати апликације или софтвер цоде-- користећи не Ц, 288 00:13:59,660 --> 00:14:02,860 али и други језици као што су Питхон и ЈаваСцрипт-- који раде у облаку. 289 00:14:02,860 --> 00:14:05,860 >> И за то, ми сами током семестра 290 00:14:05,860 --> 00:14:11,890 ће заправо користи облак-басед средина позната као ЦС50 ИДЕ. 291 00:14:11,890 --> 00:14:16,030 Ово је веб-басед програмирање животну средину, или интегрисани развој 292 00:14:16,030 --> 00:14:20,610 окружење, ИДЕ, који је уграђен на врху неке опен соурце софтвер под називом Цлоуд 9. 293 00:14:20,610 --> 00:14:22,966 И ми смо направили неке педагошки поједностављења на њу 294 00:14:22,966 --> 00:14:25,840 тако да се сакрију одређене функције у Прве недеље да нам не треба, 295 00:14:25,840 --> 00:14:27,770 након чега можете откривају их и до највише 296 00:14:27,770 --> 00:14:29,400 шта год хоћеш са околином. 297 00:14:29,400 --> 00:14:32,470 >> И то нам омогућава, такође, да инсталирате унапред одређени софтвер. 298 00:14:32,470 --> 00:14:35,330 Ствари као тзв ЦС50 библиотека, који ћемо ускоро видети 299 00:14:35,330 --> 00:14:39,210 пружа нам у Ц са неким додатна функционалност. 300 00:14:39,210 --> 00:14:44,392 Дакле, ако одете у, на крају, ЦС50.ио, вас ће бити затражено да се пријавите, 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 Многи од нас имају навику да ради на ЦС50 комад који је 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 >> Али, на крају, шта си да види у ЦС50 ИДЕ 309 00:15:05,550 --> 00:15:08,340 је три различита ареас-- област на остави тамо где 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 А онда највише арцанели, и још снажно, 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 или ПГ, која омогућава да извршава команде 318 00:15:32,240 --> 00:15:35,260 на цомпутер-- у овом предмету, рачунар у цлоуд-- 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 И да користимо ту функцију принтф, који смо раније користили, 327 00:15:59,170 --> 00:16:01,050 само да кажем нешто. 328 00:16:01,050 --> 00:16:04,910 >> Дакле, овде сам већ унутар ЦС50 ИДЕ. 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 ова три главна ареас-- датотеке браузер на левој страни, код табс до врха, 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 Идем да превентивно идите на Филе, Саве, и сачувати мој досије као хелло.ц. 343 00:16:42,300 --> 00:16:46,850 Заиста, по обичају, било који програм ми пишу да је написан у Ц језику 344 00:16:46,850 --> 00:16:49,739 Треба навести нешто тачка Ц, по конвенцији. 345 00:16:49,739 --> 00:16:53,030 Тако да ћу дати име хелло.ц, јер Само желим да поздравим свету. 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 Али ако пишем линије које не одговарају са Ц је цонвентионс-- Ц бића, 353 00:17:14,170 --> 00:17:20,150 Опет, ово лангуаге-- са синтакса као ово, принтф здраво ворлд-- и ја сам 354 00:17:20,150 --> 00:17:22,210 стечен угодно радим током времена. 355 00:17:22,210 --> 00:17:24,510 Тако да не мислим да сам направио какве правописне грешке. 356 00:17:24,510 --> 00:17:27,910 >> Али, увек, на самом почетку пут кад то урадите, хоћеш. 357 00:17:27,910 --> 00:17:31,090 А шта сам ја да урадим могло веома добро не ради за вас први пут. 358 00:17:31,090 --> 00:17:33,610 И то је сасвим у реду, јер управо сада 359 00:17:33,610 --> 00:17:37,662 Можда само видети пуно новине, али током времена када се упознате 360 00:17:37,662 --> 00:17:39,870 са оваквом окружењу, и тај језик, и други, 361 00:17:39,870 --> 00:17:42,370 Ви ћете почети да видите ствари које су или тачна или нетачна. 362 00:17:42,370 --> 00:17:44,369 >> И то је оно што наставне момци и наравно 363 00:17:44,369 --> 00:17:48,780 асистенти се тако добро током времена, је уочавања грешке или грешке у коду. 364 00:17:48,780 --> 00:17:52,110 Али тврдим да нема грешке у овом коду. 365 00:17:52,110 --> 00:17:53,990 Тако да сада желите да покренете овај програм. 366 00:17:53,990 --> 00:17:57,440 >> Сада на свом Мац или ПЦ, ја сам навика двоструких икона клика 367 00:17:57,440 --> 00:17:59,350 када желим да тече неки програм. 368 00:17:59,350 --> 00:18:01,080 Али то није модел овде. 369 00:18:01,080 --> 00:18:04,570 У таквом окружењу, што је ЦС50 САТА. 370 00:18:04,570 --> 00:18:07,192 Ми користимо функционалног систем под називом ДОС. 371 00:18:07,192 --> 00:18:09,900 Линук је подсећа на још један оперативни систем, опште позната 372 00:18:09,900 --> 00:18:10,850 као Уник. 373 00:18:10,850 --> 00:18:16,340 А Линук је посебно познат по има командне линије заштите животне средине, ЦЛИ. 374 00:18:16,340 --> 00:18:20,070 Дакле, ми смо се користе одређене укус Линук Убунту зове. 375 00:18:20,070 --> 00:18:22,770 И Убунту је једноставно сигурно верзија Линука. 376 00:18:22,770 --> 00:18:27,900 >> Али ови Линук је ових дана до ствари долази са графичким корисничким интерфејсом. 377 00:18:27,900 --> 00:18:30,360 И онај ми се деси користити овде је веб-басед. 378 00:18:30,360 --> 00:18:32,735 Дакле, ово може изгледати чак и мало разликује од нечега 379 00:18:32,735 --> 00:18:35,310 Ви сами можда има види или раде у прошлости. 380 00:18:35,310 --> 00:18:37,910 >> Па ћу ићи напред сада и урадите следеће. 381 00:18:37,910 --> 00:18:40,950 Спасао сам ову слику као хелло.ц. 382 00:18:40,950 --> 00:18:47,350 Ја идем напред и Тип цлангхелло.ц Тако цланг 383 00:18:47,350 --> 00:18:49,850 за Ц језик је преводилац. 384 00:18:49,850 --> 00:18:51,952 То је унапред инсталиран у ЦС50 ИДЕ. 385 00:18:51,952 --> 00:18:54,910 И апсолутно можете преузети и инсталирати ово на свом Мац или ПЦ. 386 00:18:54,910 --> 00:18:57,910 >> Али, опет, не би имао све пре-конфигурација учинио за вас. 387 00:18:57,910 --> 00:19:00,940 Дакле, за сада, ја сам ће покренути цлангхелло.ц. 388 00:19:00,940 --> 00:19:03,240 И сада приметити ову синтаксу Овде ће на крају 389 00:19:03,240 --> 00:19:06,930 схватити само значи да сам у фолдер или директоријум се зове радни простор. 390 00:19:06,930 --> 00:19:11,030 Овај знак долар је само конвенција за смислом, унесите своје команде овде. 391 00:19:11,030 --> 00:19:14,560 >> То је оно што се зове брз, само конвенцијом је знак за долар. 392 00:19:14,560 --> 00:19:19,130 И ако одем напред сада и кликните Ентер, изгледа да ништа догодило. 393 00:19:19,130 --> 00:19:20,930 Али то је заправо добра ствар. 394 00:19:20,930 --> 00:19:23,650 Што мање што се дешава на екран, то је већа вероватноћа 395 00:19:23,650 --> 00:19:26,710 Ваш код треба да буде тачан, најмање синтаксически. 396 00:19:26,710 --> 00:19:29,120 >> Дакле, ако желим да тече ово Програм, шта да радим? 397 00:19:29,120 --> 00:19:33,770 Па, испоставило се да је подразумевано име по конвенцији 398 00:19:33,770 --> 00:19:38,854 за програме када не наведете наме фор ваш програм је само а.оут. 399 00:19:38,854 --> 00:19:41,270 И ово синтакса такође, ви ћете упознати са убрзо. 400 00:19:41,270 --> 00:19:47,500 >> Дот сласх само значи, хеј, ЦС50 САТА, покрените програм под називом а.оут 401 00:19:47,500 --> 00:19:49,400 то је у мом тренутном директоријуму. 402 00:19:49,400 --> 00:19:51,520 То тачка знаци тренутни директоријум. 403 00:19:51,520 --> 00:19:55,040 Па ћемо видети шта други такве секвенце карактера значи пре дуго. 404 00:19:55,040 --> 00:19:58,430 >> Дакле, идемо, Ентер, здраво свет. 405 00:19:58,430 --> 00:20:00,080 И приметићете, да је оно што се догодило? 406 00:20:00,080 --> 00:20:01,580 Не само да се штампају Хелло ворлд. 407 00:20:01,580 --> 00:20:05,990 Такође помера цурсор до следеће линије. 408 00:20:05,990 --> 00:20:07,160 >> А зашто је то било? 409 00:20:07,160 --> 00:20:12,400 Шта је код који смо написали пре да осигурава да се курсор би 410 00:20:12,400 --> 00:20:14,882 иде на наредни ред? 411 00:20:14,882 --> 00:20:16,840 Смешна ствар о рачунар иде само 412 00:20:16,840 --> 00:20:18,570 да буквално ради шта ти ја кажем. 413 00:20:18,570 --> 00:20:26,050 >> Дакле, ако је рећи да принтф здраво, зарез, размак, свет, близу цитат, 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 Тако да ћу наставити са контролом С или команда Н, сачувајте датотеку. 424 00:20:47,880 --> 00:20:51,130 Сада је гоес-- је за тренутак-- зелене. 425 00:20:51,130 --> 00:20:53,760 И сада је вратио у само да буде икона близу. 426 00:20:53,760 --> 00:21:01,860 >> Ако сада покренути цлангхелло.ц опет, Ентер, тачка коса црта, а.оут, Ентер, 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 Сада, мој промпт-- радни простор, а затим да знак за долар, 430 00:21:08,714 --> 00:21:10,880 а онда мој стварни промпт-- Све је на истој линији. 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 Ја ћу поново покренути а.оут. 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 >> Тако да ћу поново покренути а.оут, и-- дођавола, буба, буба значи грешку. 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 >> Тако да поправим ово, ја ћу требати поново покренути цлангхелло.ц, унесите, дот 448 00:22:02,640 --> 00:22:03,800 сласх, а.оут. 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 Али а.оут је прилично глупо име за Програм, мада се дешава да буде, 452 00:22:13,150 --> 00:22:16,530 из историјских разлога, подразумевани значи монтажу излаза. 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 Дакле, ако би било икона на мој Десктоп, не би било а.оут. 456 00:22:28,320 --> 00:22:29,730 То би се могло назвати здраво. 457 00:22:29,730 --> 00:22:33,660 >> Дакле, за то, испоставило се да Цланг, као и многи програми, 458 00:22:33,660 --> 00:22:37,980 подржава аргументе командне линије, или заставе, или прекидачи, 459 00:22:37,980 --> 00:22:39,600 који једноставно утиче на његово понашање. 460 00:22:39,600 --> 00:22:45,160 Наиме, кланг подржава дасх ои застава, која затим узима другу реч. 461 00:22:45,160 --> 00:22:48,190 У том случају, ја ћу произвољно, али разумно, назовимо га здраво. 462 00:22:48,190 --> 00:22:50,710 Али ја би се могло назвати било шта Хоћу, осим а.оут, који 463 00:22:50,710 --> 00:22:52,390 ће бити прилично поред тачке. 464 00:22:52,390 --> 00:22:55,640 >> И онда само навести име датотеке Желим да састави. 465 00:22:55,640 --> 00:22:59,190 Дакле, сада, иако на почетку команде и сада имам Цланг, 466 00:22:59,190 --> 00:23:01,410 на крају команде Још увек имам име датотеке, 467 00:23:01,410 --> 00:23:05,520 Сада имам ове командну линију аргументи, те заставе које се говоре, 468 00:23:05,520 --> 00:23:11,180 Ох, успут, излаз-О, фајл зове здраво, а не подразумевани а.оут. 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 >> Али, они су у два различит филес-- а.оут, 474 00:23:24,210 --> 00:23:26,490 која је прва верзија и само будаласто по имену, 475 00:23:26,490 --> 00:23:30,250 и сада здраво, што је много више убедљив назив за програм. 476 00:23:30,250 --> 00:23:33,195 Али, искрено, никада нисам ће опет запамтите ово, 477 00:23:33,195 --> 00:23:34,070 и опет, и опет. 478 00:23:34,070 --> 00:23:36,411 И, у ствари, као што пишемо сложеније програме, 479 00:23:36,411 --> 00:23:38,160 команде које ћете морати написати 480 00:23:38,160 --> 00:23:40,920 ће добити још више компликовано и даље. 481 00:23:40,920 --> 00:23:41,940 >> И тако да се не брине. 482 00:23:41,940 --> 00:23:46,220 Испоставило се да су људи пре нама су они схватили превише 483 00:23:46,220 --> 00:23:47,530 имао баш тај исти проблем. 484 00:23:47,530 --> 00:23:50,900 Они нису уживају потребе да тип прилично дуге, арканске команде, 485 00:23:50,900 --> 00:23:52,200 а камоли запамтите их. 486 00:23:52,200 --> 00:23:56,070 Па људи пред нама су направили друге програме који олакшавају 487 00:23:56,070 --> 00:23:57,670 саставити свој софтвер. 488 00:23:57,670 --> 00:24:01,609 >> И заиста, један овакав Програм се зове Марка. 489 00:24:01,609 --> 00:24:03,150 Тако да идем напред и уради то. 490 00:24:03,150 --> 00:24:05,691 Идем да поништи све што управо урадио на следећи начин. 491 00:24:05,691 --> 00:24:07,690 Пусти ме тип ЛС. 492 00:24:07,690 --> 00:24:10,980 И приметићете три ствари-- а.оут, и звезда, здраво 493 00:24:10,980 --> 00:24:12,810 и звезда, и хелло.ц. 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 >> И ја створио хелло.ц. 498 00:24:22,840 --> 00:24:24,544 онда сам га саставио, и назвао га а.оут. 499 00:24:24,544 --> 00:24:27,460 И онда сам га опет саставио мало другачије и назвао га здраво. 500 00:24:27,460 --> 00:24:32,830 Дакле, имам три датотеке у овом директоријуму, у овом фолдеру који се зове радни простор. 501 00:24:32,830 --> 00:24:35,005 Сада, видим да је добро ако умањили ствари. 502 00:24:35,005 --> 00:24:37,530 >> Ако сам зоом овде и погледај ту горњем десном руком 503 00:24:37,530 --> 00:24:39,940 угао, као што је обећано леви стране екрана 504 00:24:39,940 --> 00:24:42,990 увек ће вам показати шта је на вашем налогу, што је 505 00:24:42,990 --> 00:24:44,790 унутар ЦС50 ИДЕ. 506 00:24:44,790 --> 00:24:46,680 И ту је три фајла тамо. 507 00:24:46,680 --> 00:24:49,070 >> Дакле, желим да се отарасим а.оут и здраво. 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 Ја идем напред и уклонити а.оут уписивањем буквално рма.оут. 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 >> То је више језгровито, РМ, само да спаси ти неки кеистрокес, и притисните Ентер. 520 00:25:21,260 --> 00:25:24,707 Сада ћемо бити нешто загонетно уклонити обичну датотеку а.оут. 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 Или сам могао откуцати, и притисните Ентер. 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 >> Ако сам тип ЛС овај пут, шта да видим? 528 00:25:40,490 --> 00:25:44,930 Надамо се, само здраво и хелло.ц. 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 То је само ЦС50 ИДЕ је начин од цлуинг вас у томе 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 >> Сада, пусти ме само напред и уклонити ово, РМ здраво, Ентер, уклонити редовно 537 00:26:05,860 --> 00:26:08,010 филе здраво, да. 538 00:26:08,010 --> 00:26:11,180 А сада ако сам тип ЛС, вратили смо се у хелло.ц. 539 00:26:11,180 --> 00:26:13,917 Покушајте да се не избрише стварна изворни код. 540 00:26:13,917 --> 00:26:16,250 Иако постоје функције уграђен у ЦС50 ИДЕ где 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 све што остаје је хелло.ц. 546 00:26:30,696 --> 00:26:32,570 Тако да гомиле остале команде које сте 547 00:26:32,570 --> 00:26:37,550 може извршити у свету Линука, од којих је, опет, Маке. 548 00:26:37,550 --> 00:26:40,180 И ми ћемо направити мој програм сада на следећи начин. 549 00:26:40,180 --> 00:26:43,270 >> Уместо да раде Цланг, уместо да Цланг-о, 550 00:26:43,270 --> 00:26:45,860 Ја ћу једноставно буквално тип, да здраво. 551 00:26:45,860 --> 00:26:49,630 И сада приметио, ја сам не куцање да хелло.ц. 552 00:26:49,630 --> 00:26:50,910 Куцам да здраво. 553 00:26:50,910 --> 00:26:54,840 >> И овај програм Нека буде долази са ЦС50 ИДЕ, и још много тога 554 00:26:54,840 --> 00:26:57,090 углавном са Линук, је програм који је 555 00:26:57,090 --> 00:26:59,120 ће направити програм који се зове Здраво. 556 00:26:59,120 --> 00:27:03,680 И то ће претпоставити, по обичају, да, ако могу бити овај програм, 557 00:27:03,680 --> 00:27:09,030 то ће бити направљен од извора Код фајл завршава у дот ц, хелло.ц. 558 00:27:09,030 --> 00:27:12,210 >> Дакле, ако сам погодио Ентер сада, обавештење да команда да буде погубљен 559 00:27:12,210 --> 00:27:14,340 заправо чак и дуже пре него раније. 560 00:27:14,340 --> 00:27:16,670 А то је зато што имамо предподешен ЦС50 ИДЕ имати 561 00:27:16,670 --> 00:27:19,878 неке додатне функције уграђене у томе не треба нам само још, али ускоро ће. 562 00:27:19,878 --> 00:27:23,470 Али кључна ствар да схвате је сада имам Хелло програм. 563 00:27:23,470 --> 00:27:27,080 >> Ако сам тип ЛС опет, ја има хелло програм. 564 00:27:27,080 --> 00:27:32,070 И ја могу да га покренете тачка сласх а.оут, не, 565 00:27:32,070 --> 00:27:35,590 јер поента овог вежба била тачка Сласх здраво. 566 00:27:35,590 --> 00:27:38,089 И сада имам Хелло Ворлд. 567 00:27:38,089 --> 00:27:39,880 Тако напријед, ми смо скоро увек само 568 00:27:39,880 --> 00:27:42,088 ће саставити наше програме коришћењем команде Марка. 569 00:27:42,088 --> 00:27:45,300 А онда ћемо да их воде тачка сласх, а име овог програма. 570 00:27:45,300 --> 00:27:49,610 Али схватите оно што чини ради за ви, да ли је сама није преводилац. 571 00:27:49,610 --> 00:27:53,310 То је само програм погодност који зна како да изазове компајлер 572 00:27:53,310 --> 00:27:56,470 да покренете тако да сами могу да га користе. 573 00:27:56,470 --> 00:28:00,220 >> Које друге команде постоје у Линук, а за узврат, ЦС50 ИДЕ? 574 00:28:00,220 --> 00:28:03,107 Ускоро ћемо видети да постоји ЦД-команда, Промени Директоријум. 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 >> ЛС смо видели, што значи листу датотеке у текућем директоријуму. 579 00:28:12,470 --> 00:28:14,650 Маке Дир, можете вероватно почети да се закључити 580 00:28:14,650 --> 00:28:18,150 шта је ово значи сада-- да директоријум, ако желите да креирате фолдер. 581 00:28:18,150 --> 00:28:21,270 РМ за ремове РМ Смер за уклонити дирецтори-- и то, 582 00:28:21,270 --> 00:28:24,160 Поново су командне линије еквиваленти онога што сте 583 00:28:24,160 --> 00:28:26,945 могао у ЦС50 ИДЕ са миша. 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 Дакле, не само да, Ц долази са принтф, и гомиле других функција 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 >> Заправо, једна од слабости језика као што су Ц, 598 00:29:08,140 --> 00:29:10,140 па чак и Јава и још други, да се то не догоди 599 00:29:10,140 --> 00:29:15,860 олакшавају само да ствари као што су цели бројеви од корисника или жице, речи, 600 00:29:15,860 --> 00:29:19,970 и фразе, а камоли ствари као што су покретном зарезу или реалне бројеве 601 00:29:19,970 --> 00:29:23,240 са децимална места, и стварно дуге бројева, као што ћемо ускоро видети. 602 00:29:23,240 --> 00:29:27,000 Дакле, овај списак функција овде, ово су попут других Огреби слагалице 603 00:29:27,000 --> 00:29:31,090 да смо унапред инсталиран у ЦС50 ИДЕ који ћемо користити за неколико недеља 604 00:29:31,090 --> 00:29:34,010 као помоћним точковима свих врста, и на крају их скинути, и гледај 605 00:29:34,010 --> 00:29:37,210 испод хаубе, можда, у како се ове ствари спроводе. 606 00:29:37,210 --> 00:29:40,460 >> Али, да би то, хајде да заправо написати програм. 607 00:29:40,460 --> 00:29:41,770 Пусти ме сада напред. 608 00:29:41,770 --> 00:29:44,750 И ја ћу створити нова филе кликом на овај мали плус, 609 00:29:44,750 --> 00:29:45,970 и кликнете на Нев Филе. 610 00:29:45,970 --> 00:29:49,250 >> Ја ћу ово да сачувам следећи један као, рецимо, стринг.ц, 611 00:29:49,250 --> 00:29:50,750 јер желим да се играм са жицама. 612 00:29:50,750 --> 00:29:53,990 И стринг у Ц само низ знакова. 613 00:29:53,990 --> 00:29:56,090 Дакле, сада идемо напред и урадите следеће. 614 00:29:56,090 --> 00:30:01,204 >> Укључују стандардне ИО.х-- и Испоставило се да стандардни ИО, 615 00:30:01,204 --> 00:30:03,360 ИО само значи улаз и излаз. 616 00:30:03,360 --> 00:30:05,920 Тако испада да ова линија овде је шта 617 00:30:05,920 --> 00:30:08,140 је нас суседне да користи принтф. 618 00:30:08,140 --> 00:30:10,410 Принтф, наравно, производи излаз. 619 00:30:10,410 --> 00:30:15,000 Дакле, да би се користио принтф, испоставило од морате да имате ову линију кода 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 Испоставило се да у сваки Ц програм пишем, 623 00:30:20,400 --> 00:30:23,640 Морам да га покренете са код који изгледа овако. 624 00:30:23,640 --> 00:30:26,860 И приметићете ЦС50 ИДЕ, и други интегрисано развојно 625 00:30:26,860 --> 00:30:30,050 окружења воле, ће покушати што боље 626 00:30:30,050 --> 00:30:31,780 они могу да заврше своје мисли. 627 00:30:31,780 --> 00:30:35,930 У ствари, малопре да ли ундо шта сам урадио, ја притисните Ентер. 628 00:30:35,930 --> 00:30:39,160 >> онда сам ударио отворен Цурли заграда, хит опет Ентер. 629 00:30:39,160 --> 00:30:40,430 И завршио мисао. 630 00:30:40,430 --> 00:30:45,140 То ми је дало нову линију, увучен ништа мање за лепе стилских разлога ћемо видети. 631 00:30:45,140 --> 00:30:48,559 И онда ме аутоматски дала да коврџава стезник да завршим мисао. 632 00:30:48,559 --> 00:30:50,600 Сада, то не увек погодите шта желите да урадите. 633 00:30:50,600 --> 00:30:53,620 Али у великој мери, зар не саве ти неке типке. 634 00:30:53,620 --> 00:30:59,560 Дакле, малопре, налетели смо ову програм-- здраво, свет, а затим га саставио, 635 00:30:59,560 --> 00:31:00,460 а затим га је водио. 636 00:31:00,460 --> 00:31:01,867 Али нема динамику овде. 637 00:31:01,867 --> 00:31:03,700 Шта ако желимо да уради нешто другачије? 638 00:31:03,700 --> 00:31:07,630 Па, шта ако сам хтео да стварно добили низ од корисника? 639 00:31:07,630 --> 00:31:11,250 Ја ћу користити слагалицу комад зове тачно то-- добити низ. 640 00:31:11,250 --> 00:31:15,860 >> Испоставило се у Ц када не желите да дају допринос у слагалици комад, 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 Дакле, веома чест парадигма у Ц је позвати функцију, као што гет стринг овде, 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 било у Сцратцх или сада Ц, да смо ми могу користити за стварно складишти нешто? 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 >> Хеј, компјутер, дај ми стринг-- низ знакова. 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 >> Ја би се могло назвати, конвенционално, нешто као С, 676 00:32:49,970 --> 00:32:52,900 баш као што сам се звати је променљива и. 677 00:32:52,900 --> 00:32:54,829 Али сада морам да урадим нешто са њим. 678 00:32:54,829 --> 00:32:57,370 Било би веома глупо пробајте изради овај код, трчање 679 00:32:57,370 --> 00:32:59,410 овај програм, иако Идем низ, 680 00:32:59,410 --> 00:33:01,580 јер то је само да се поздравим свет. 681 00:33:01,580 --> 00:33:06,140 >> Али шта ако желим да се то промени. 682 00:33:06,140 --> 00:33:07,940 Зашто не радим ово? 683 00:33:07,940 --> 00:33:11,632 Посто ова, зарез а. 684 00:33:11,632 --> 00:33:13,090 А ово је мало загонетан и даље. 685 00:33:13,090 --> 00:33:15,560 >> Дакле, дозволите ми да ми варијабле јасније. 686 00:33:15,560 --> 00:33:17,510 Дозволите ми име ове променљиве име. 687 00:33:17,510 --> 00:33:20,230 Па да видимо да ли можемо да задиркује Осим што се дешава овде. 688 00:33:20,230 --> 00:33:22,770 >> Дакле, он лине пет, Идем низ. 689 00:33:22,770 --> 00:33:25,620 И ја чување ту серију, без обзира корисник откуца 690 00:33:25,620 --> 00:33:28,430 у свом тастатуре, у променљивој под називом Име. 691 00:33:28,430 --> 00:33:30,590 И испоставило се да принтф не само 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 >> То је само хтео да кажем, здраво наме, буквално Н-А-М-Е 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 И испоставило се да сте прочитали документација за функцију принтф, 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 посто а за гудаче. 711 00:34:35,469 --> 00:34:39,190 А сада ако сам спасио мој досије, Ја се вратим у моју терминала. 712 00:34:39,190 --> 00:34:42,870 И куцам Маке Стринг, јер, опет, име ово 713 00:34:42,870 --> 00:34:45,510 фајл који сам раније изабрао је стринг.ц. 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 И то је- шта је ово стварно као шест, седам линија програма? 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 Погледајте шта марки урадио, и то је то дуго кланг команда, није велика ствар тамо. 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 >> Стринг.ц, линија пет, карактер пет. 732 00:35:31,450 --> 00:35:32,930 Тако да је ово само уобичајена конвенција. 733 00:35:32,930 --> 00:35:36,060 Нешто дебело црево нешто значи број линија и број карактера. 734 00:35:36,060 --> 00:35:41,080 Грешка, употреба непријављени идентификатор низ. 735 00:35:41,080 --> 00:35:42,900 Да ли сте мислили стандард у? 736 00:35:42,900 --> 00:35:45,530 >> Дакле, нажалост, кланг покушава да буде од помоћи. 737 00:35:45,530 --> 00:35:46,850 Али то није у реду, у овом случају. 738 00:35:46,850 --> 00:35:49,350 Не, кланг, нисам мислио стандард ИО. 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 И кланг не разуме С-Т-Р-И-Н-Г. 742 00:35:57,040 --> 00:36:01,490 То је необјављен идентификатор, Реч је само још није видео. 743 00:36:01,490 --> 00:36:05,730 А то је зато Ц, језик пишемо код у сада, 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 То је ЦС50 комад жаргон, али врло конвенционална. 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 укључују ЦС50.х, што је још један фајл негде у ЦС50 ИДЕ, негде 750 00:36:27,890 --> 00:36:30,820 на чврстом диску, да тако кажем, оперативног система Убунту 751 00:36:30,820 --> 00:36:33,590 да трчим, да је датотека која је 752 00:36:33,590 --> 00:36:38,740 ће научити радом Систем који стринг је, само 753 00:36:38,740 --> 00:36:41,930 као стандардне ио.х је фајл У оперативном систему који је 754 00:36:41,930 --> 00:36:44,430 ће то научити шта принтф је. 755 00:36:44,430 --> 00:36:46,810 >> Заиста, ми би добили веома слична порука 756 00:36:46,810 --> 00:36:50,600 ако ИО признао стандард Ио.х и покушао да искористи принтф. 757 00:36:50,600 --> 00:36:53,632 Тако да идем напред и само Таке Цонтрол Л да разбистрим екран. 758 00:36:53,632 --> 00:36:56,340 Или можете уписати јасно и то ће само јасно прозор терминала. 759 00:36:56,340 --> 00:36:58,020 Али и даље можете дођите на време. 760 00:36:58,020 --> 00:37:01,100 >> И ја ћу поново покренути Маке Стринг. 761 00:37:01,100 --> 00:37:03,660 Цросс прсте овај пут, Ентер. 762 00:37:03,660 --> 00:37:05,380 О мој Боже, успело је. 763 00:37:05,380 --> 00:37:09,280 то ми показује дугу шифровану команду То је оно што чини генерисана преко Цланг, 764 00:37:09,280 --> 00:37:10,460 али нема поруке о грешци. 765 00:37:10,460 --> 00:37:12,460 Тако схватити, иако можете добити потпуно 766 00:37:12,460 --> 00:37:14,480 преплављени са Број порука о грешци, 767 00:37:14,480 --> 00:37:17,540 то може бити то смета каскадни Ефекат, где кланг не разуме 768 00:37:17,540 --> 00:37:19,620 једна ствар, што је значи онда не разуме нове речи, 769 00:37:19,620 --> 00:37:20,560 или следећи ред. 770 00:37:20,560 --> 00:37:22,850 Па то само угуши на вашем коду. 771 00:37:22,850 --> 00:37:24,440 Али поправити може бити једноставно. 772 00:37:24,440 --> 00:37:27,822 И тако увек фокусира на први ред излаза. 773 00:37:27,822 --> 00:37:29,530 А ако не разуме се, само погледај 774 00:37:29,530 --> 00:37:32,480 за кључне речи које могу бити трагови, и број линија, 775 00:37:32,480 --> 00:37:34,650 и карактер, где да грешка може бити. 776 00:37:34,650 --> 00:37:40,328 >> Сад ме пусти напред и тип тачка сласх, стринг, унесите. 777 00:37:40,328 --> 00:37:44,340 Хм, то не говори здраво ништа. 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 јер Гет Стринг по дизајну, написан од стране особља ЦС50, 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 >> Ако сам напред и поново покренути ово, Дозволите ми да покушам рећи Замила име, унесите. 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 Нисам фиксирани име, или Давид, или Замила. 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 Сада, ово није најбољи кориснички доживљај, или УКС. 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 Да се ​​вратим у ово Програм, и једноставно кажу принтф. 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 >> Написали смо једну линију са којима смо били упознати, принтф, здраво свет. 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 У ЦС50, као иу животу уопште, требало би да уопште не седнемо, 821 00:39:33,420 --> 00:39:36,800 има програм у виду, и покушати писање цела проклета ствар одједном. 822 00:39:36,800 --> 00:39:40,810 >> То ће, неминовно, довести до начин више грешака него ми сами видели овде. 823 00:39:40,810 --> 00:39:44,070 Чак и ја, до данас, стално да друге глупе грешке, 824 00:39:44,070 --> 00:39:47,480 заправо теже грешке које су теже схватити. 825 00:39:47,480 --> 00:39:52,095 Али ви ћете бити више грешака више линија кода пишете одједном. 826 00:39:52,095 --> 00:39:54,220 Па ова пракса, написати мало кода 827 00:39:54,220 --> 00:39:57,930 да сте задовољни са, саставити то, покрените га, тестирати га више уопште, 828 00:39:57,930 --> 00:40:01,370 затим померите ајде-- тако као да стално слојеви и слојеви прошле недеље, 829 00:40:01,370 --> 00:40:04,190 зграда из нечега веома једноставно нешто сложенији, 830 00:40:04,190 --> 00:40:05,200 учине исто овде. 831 00:40:05,200 --> 00:40:08,500 Не седи, и покушати да напише цео проблем. 832 00:40:08,500 --> 00:40:10,780 Заправо се ове бебе кораке. 833 00:40:10,780 --> 00:40:15,100 >> Сада, жице нису сви да би корисније за себе. 834 00:40:15,100 --> 00:40:18,210 заправо би нам, идеално, као да још нешто у нашој алата. 835 00:40:18,210 --> 00:40:20,990 Дакле, хајде да ствари раде управо то. 836 00:40:20,990 --> 00:40:24,900 >> Пусти ме напред сада и прикупити мало другачије програма. 837 00:40:24,900 --> 00:40:28,320 И ми ћемо назвати инт.ц, за цео број. 838 00:40:28,320 --> 00:40:30,870 Ја ћу, слично, укључују ЦС550.х. 839 00:40:30,870 --> 00:40:33,060 Ја ћу укључити стандард ИО. 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 И сада уместо да стринг, идемо напред и да се инт. 843 00:40:43,370 --> 00:40:49,285 Назовимо га ја, и назвати то гет Инт, блиски заграда, полу-дебелог црева. 844 00:40:49,285 --> 00:40:51,410 А сада да радимо нешто са њим, принтф. 845 00:40:51,410 --> 00:40:56,190 >> Рецимо нешто здраво, косих н зарез сам. 846 00:40:56,190 --> 00:41:00,010 Па сам прилично имитира шта сам урадила пре неколико тренутака. 847 00:41:00,010 --> 00:41:01,660 Имам чувар места овде. 848 00:41:01,660 --> 00:41:05,150 Ја сам зарез сам овде, јер хоћу за прикључивање сам у том плејсхолдер. 849 00:41:05,150 --> 00:41:07,250 >> Дакле, идемо напред и покушајте изради овог програма. 850 00:41:07,250 --> 00:41:10,060 Фајл се зове инт.ц. 851 00:41:10,060 --> 00:41:12,920 Па ћу рећи, да инт, унесите. 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 бити састављен у инт.ц, ред седам, карактер 27, грешка формату 856 00:41:25,460 --> 00:41:28,400 прецизира тип цхар стар, шта год да је. 857 00:41:28,400 --> 00:41:30,020 Али тип аргумент Инт. 858 00:41:30,020 --> 00:41:33,110 >> Тако и овде, нећемо да-- иако је данас много материјала, 859 00:41:33,110 --> 00:41:35,710 ми ћемо вас преплавити апсолутно сваки аспект Ц, 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 Форматс-- тако да смо чули формат Спецификатор, Код формата пре. 866 00:41:50,750 --> 00:41:51,840 То је познато. 867 00:41:51,840 --> 00:41:53,840 Типе-- али аргумент је тип инт. 868 00:41:53,840 --> 00:41:55,980 Чекај мало, ја је инт. 869 00:41:55,980 --> 00:41:59,230 >> Можда посто је заправо има дефинисано значење. 870 00:41:59,230 --> 00:42:00,230 И, заиста, јесте. 871 00:42:00,230 --> 00:42:03,101 Цео број, ако желите принтф да га замени, 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 у принтф за прикључивање цео број. 877 00:42:12,240 --> 00:42:14,920 Такође можете да користите одсто д за децимални цео број. 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 >> Пусти ме само напред, реприза Марка Инт, Ентер. 881 00:42:21,160 --> 00:42:23,328 То је добро, нема грешке. 882 00:42:23,328 --> 00:42:27,260 Дот сласх инт-- ОК, лоше корисничко искуство, јер нисам ја рекао 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 >> А сада пусти ме напред и укуцајте Давид, ОК, Замила, Роб. 887 00:42:36,260 --> 00:42:37,820 У реду, тако да је ово добра ствар. 888 00:42:37,820 --> 00:42:41,710 Овај пут, ја сам користећи функцију, слагалицу комад, назван гет Инт. 889 00:42:41,710 --> 00:42:44,230 И испоставило оут-- и ми ћемо види касније у терм-- 890 00:42:44,230 --> 00:42:47,730 ЦС50 особље је реализовала гет стринг на такав начин 891 00:42:47,730 --> 00:42:50,350 да ће само физички добили низ за вас. 892 00:42:50,350 --> 00:42:54,340 >> То је спровела гет инт у такав начин да само хоће 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 И тако гет Инт функција унутар тог Пуззле Пиеце 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 може довести до нашег мистакес-- писања бубе, писање небезбедан софтвер који 922 00:44:12,520 --> 00:44:13,880 хакерише на неки начин. 923 00:44:13,880 --> 00:44:17,130 >> Дакле, узмимо кораке у правцу разумевање ово мало боље 924 00:44:17,130 --> 00:44:19,710 начин, кажу, следећи пример. 925 00:44:19,710 --> 00:44:23,550 Ја идем напред и имплементирати брзо програм који се зове Аддер. 926 00:44:23,550 --> 00:44:25,134 Као, хајде да додамо неке бројеве заједно. 927 00:44:25,134 --> 00:44:27,800 И ја ћу да кодира неке углове овде, и само копирање и лепљење 928 00:44:27,800 --> 00:44:30,270 где сам био пре, само тако да можемо да идемо раније. 929 00:44:30,270 --> 00:44:33,090 Тако да сада имам основне почетке програма под називом Аддер. 930 00:44:33,090 --> 00:44:34,670 >> И идемо напред и уради то. 931 00:44:34,670 --> 00:44:38,680 Ја идем напред и рецимо, ИНТКС добија се инт. 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 А онда ме пусти напред и рећи, принтф како би било да је и, овај пут очекује 936 00:44:50,600 --> 00:44:53,140 две вредности од стране корисника. 937 00:44:53,140 --> 00:44:59,759 И онда идемо напред и рецимо, принтф, збир к и и је. 938 00:44:59,759 --> 00:45:01,300 А сада не желим да радим посто с. 939 00:45:01,300 --> 00:45:09,080 Желим да радим посто и, косих Н, а затим прикључите сум вредности. 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 Дозволите ми да прогласи нову, инт з. 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 Па да видимо сада, ако су секвенце линес-- к је добити инт. 949 00:45:33,160 --> 00:45:34,770 И је добити инт. 950 00:45:34,770 --> 00:45:37,980 >> Додај Кс и И, чувајте вредност у з-- тако, опет, сећам се знак једнакости 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 Дакле, хајде да Аддер - лепо, нема грешака овај пут. 956 00:45:50,090 --> 00:45:53,030 Дот сласх Аддер, унесите, х ће бити 1. 957 00:45:53,030 --> 00:45:55,380 >> И ће бити 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 ако се ствара променљиву, под називом З у овом случају, складиштење нешто у њој, 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 Испоставило се да је Ц је прилично флексибилан. 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 Могао бих плуг-ин к плус И, јер, Ц разуме 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 >> Хајде да урадимо принтф, посто сам, плус одсто И, мора бити посто сам, косих бр. 990 00:47:27,650 --> 00:47:32,240 И ја ћу учинити ово-- КСИКС плус и. 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 Пусти ме напред и урадите следеће, принтф, посто сам минус посто сам, 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 Дакле, посто та времена посто и је проценат сам, косих бр. 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 Принтф посто сам, подељена по одсто И, је проценат ја, 1012 00:48:34,580 --> 00:48:40,460 обрнута коса црта бр. КСИ подељен и-- тако да користите косу црту у Ц 1013 00:48:40,460 --> 00:48:41,502 да ураде поделу. 1014 00:48:41,502 --> 00:48:42,460 И хајде да један другом. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 Остатак одсто и, подељена по одсто И, је проценат ја. 1017 00:48:55,240 --> 00:48:59,550 ки-- и сада остатак је оно што је остало. 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 Али има у Ц. Можете кажу х модулу и, где 1023 00:49:13,830 --> 00:49:18,000 тај проценат знак у овом цонтект-- збуњује кад си унутра 1024 00:49:18,000 --> 00:49:20,170 од знакова навода, унутар принтф, посто 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 то је оператер модулу за модуларни аритхметиц-- за наше потребе 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 је- У реду, ми ћемо прескочити ону. 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, ми смо говори принтф, хеј, принтф плуг-ин- 1051 00:50:50,440 --> 00:50:54,230 цео број, плуг-ин целим бројем, плуг-у интегер-- посебно 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 >> Па шта, Ц ради за нас-- врста јер смо то рекли да-- 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 >> Пусти ме напред и створити нова фајл, ово се зове флоатс.ц. 1077 00:52:12,820 --> 00:52:16,500 И сачувајте га овде у исти директоријум, флоат.ц. 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 >> Али уместо да инт, урадимо то. 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 >> И пусти ме не зову гет инт, али да флоат, 1086 00:52:38,050 --> 00:52:41,420 који је такође био међу мени опција у библиотеци Ц250. 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 Испоставило се да морамо да користимо одсто Ф пловак, посто е за пловак, 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 подељен ф, и пута плус-- У реду, нека ово опет уради. 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, подељено са 10.000, је 0,100000. 1114 00:54:21,480 --> 00:54:24,952 И испоставило се да можемо да контролишемо колико Бројеви су после тих децималне тачке. 1115 00:54:24,952 --> 00:54:25,660 Ми смо у ствари хоће. 1116 00:54:25,660 --> 00:54:26,790 Ми ћемо се вратити на то. 1117 00:54:26,790 --> 00:54:28,440 >> Али сада, у ствари, математика је тачно. 1118 00:54:28,440 --> 00:54:30,090 Дакле, опет, шта је понети овде? 1119 00:54:30,090 --> 00:54:33,050 Испоставило се да је у Ц, постоје не тек стрингс-- и, у ствари, 1120 00:54:33,050 --> 00:54:36,120 не постоје стварно, јер смо ми додати оне са библиотеком ЦС50. 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 захваљујући библиотеци ЦС50, имамо додат Ц тип података боол као добро. 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 Ево, ја ћу да идем напред и не укључују ЦС50.х. 1137 00:55:32,020 --> 00:55:34,910 И пусти ме, укључују стандардну ИО.х. 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 >> Ја ћу да позовем овај сизеоф.ц, и ударио Саве. 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 >> То је зато што, једноставно, ја сам рекао ИДЕ шта тип датотеке 1146 00:55:57,700 --> 00:56:01,060 то је по дајући му име, и посебно екстензија фајла. 1147 00:56:01,060 --> 00:56:03,620 Сада, идемо напред и уради то. 1148 00:56:03,620 --> 00:56:08,910 Ја идем напред и веома једноставно одштампати фолловинг-- боол 1149 00:56:08,910 --> 00:56:11,080 је проценат ЛУ. 1150 00:56:11,080 --> 00:56:12,950 >> Ми ћемо се вратити на само који тренутак. 1151 00:56:12,950 --> 00:56:15,840 А онда ћу величина штампе од боол. 1152 00:56:15,840 --> 00:56:18,170 И сада, само да спаси ја неко време, ја сам 1153 00:56:18,170 --> 00:56:20,280 урадити целину гомила њих одједном. 1154 00:56:20,280 --> 00:56:24,620 И, посебно, ја ћу промени у цхар и знак. 1155 00:56:24,620 --> 00:56:27,760 Овај, ја ћу променити за двоструки и двоструки. 1156 00:56:27,760 --> 00:56:31,440 >> Овај, ја ћу променити на сплаву и флоат. 1157 00:56:31,440 --> 00:56:35,670 Овај, ја ћу мењају на инт и инт. 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 Испоставило се да је у Ц, ту је посебан оператер зове 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 Испоставило се да је у Ц, посебно на ЦС50 ИДЕ, 1169 00:57:05,210 --> 00:57:08,170 посебно на Убунту оперативног система, 1170 00:57:08,170 --> 00:57:11,100 који је 64-битни оперативни систем у овом случају, 1171 00:57:11,100 --> 00:57:14,189 инт ће користити један бајт простора. 1172 00:57:14,189 --> 00:57:16,480 Тако се мери величина, не бита, али у бајтова. 1173 00:57:16,480 --> 00:57:18,690 И сећам се да је један бајт има осам битова. 1174 00:57:18,690 --> 00:57:22,030 Дакле, инт, иако вас Технички само треба 0 или 1, 1175 00:57:22,030 --> 00:57:24,092 мало је расипан како смо га спроводи. 1176 00:57:24,092 --> 00:57:26,800 У ствари ће користити целину бите-- тако све нуле, су можда 1177 00:57:26,800 --> 00:57:31,050 сви они, или нешто слично, или само један 1 међу осам бита. 1178 00:57:31,050 --> 00:57:34,962 >> Цхар, у међувремену, користи се за лика као лик Асции по прошле недеље, 1179 00:57:34,962 --> 00:57:36,170 ће бити један лик. 1180 00:57:36,170 --> 00:57:42,340 И да синцхс се са нашом идејом то је не више од 256 битс-- а, 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 Можете да чувате толико датотеке на Мац или ПЦ. 1197 00:58:17,860 --> 00:58:23,030 Можете да чувате толико програма у РАМ-ради одједном, обавезно, чак 1198 00:58:23,030 --> 00:58:26,360 са виртуелном меморијом, јер имате коначан износ од РАМ-а. 1199 00:58:26,360 --> 00:58:28,990 >> И само да ну слику ако никад ниси отворио лаптоп 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 >> Дакле, на сваком Мац или ПЦ, када двапут кликните на програм, а то отвара, 1206 00:58:46,630 --> 00:58:48,921 и отвара неке Ворд документ или нешто слично, 1207 00:58:48,921 --> 00:58:51,764 да га чува привремено у РАМ-а, јер РАМ је бржи 1208 00:58:51,764 --> 00:58:53,680 од хард диска, или ваш Солид Стате Диск. 1209 00:58:53,680 --> 00:58:56,600 Дакле, то је само где програми го да живе када су у употреби, 1210 00:58:56,600 --> 00:58:58,060 или када се користе фајлови. 1211 00:58:58,060 --> 00:59:00,890 >> Тако да имате ствари које изгледају као што је овај унутрашњости лаптоп, 1212 00:59:00,890 --> 00:59:03,320 или мало веће ствари унутар вашег десктопа. 1213 00:59:03,320 --> 00:59:07,440 Али је кључ имате само коначан број ових ствари. 1214 00:59:07,440 --> 00:59:11,230 И ту је само ограничен количина хардвер седи на том столу у праву 1215 00:59:11,230 --> 00:59:11,730 овде. 1216 00:59:11,730 --> 00:59:15,920 >> Дакле, сигурно, не можемо похранити бескрајно дуге бројеви. 1217 00:59:15,920 --> 00:59:19,030 И, ипак, ако мислите вратити Граде Сцхоол, колико цифара могу 1218 00:59:19,030 --> 00:59:21,400 имате са десне стране од децималног зареза? 1219 00:59:21,400 --> 00:59:24,680 Што се тога тиче, колико цифара могу имате са леве стране децимални зарез? 1220 00:59:24,680 --> 00:59:26,300 Стварно, бескрајно много. 1221 00:59:26,300 --> 00:59:30,840 >> Сада, ми људи би могло само ли како да изговорите милиона, 1222 00:59:30,840 --> 00:59:34,990 и милијарди, билиона, и квадрилиона, и трилиона. 1223 00:59:34,990 --> 00:59:39,370 И ја померају границе мој ундерстандинг-- или мој-- Разумем 1224 00:59:39,370 --> 00:59:41,110 бројеви, али мој изговор бројева. 1225 00:59:41,110 --> 00:59:44,720 Али они могу добити бескрајно велики са бесконачно много Знаменке лијево 1226 00:59:44,720 --> 00:59:47,050 или десно од децималног зареза. 1227 00:59:47,050 --> 00:59:50,040 >> Али рачунари имају само коначна количина меморије, 1228 00:59:50,040 --> 00:59:53,510 коначан број транзистора, А коначан број сијалица унутра. 1229 00:59:53,510 --> 00:59:57,350 Шта се дешава када вам понестане простора? 1230 00:59:57,350 --> 00:59:59,620 Другим речима, ако вама сетите се просле недеље 1231 00:59:59,620 --> 01:00:03,160 када смо говорили о бројевима сами су представљени у бинарном, 1232 01:00:03,160 --> 01:00:05,480 Претпостављам да имамо овај 8-битна вредност овде. 1233 01:00:05,480 --> 01:00:08,290 >> И имамо седам 1 је и једна 0. 1234 01:00:08,290 --> 01:00:10,827 И претпоставимо да желимо додати 1 до ове вредности. 1235 01:00:10,827 --> 01:00:12,410 Ово је заиста велики број сада. 1236 01:00:12,410 --> 01:00:16,610 >> То је 254, ако се добро сећам математика од прошле недеље десне стране. 1237 01:00:16,610 --> 01:00:19,480 Али шта ако променим да десни 0 до А 1? 1238 01:00:19,480 --> 01:00:22,800 Цео број, од Наравно, постаје осам 1-а. 1239 01:00:22,800 --> 01:00:24,050 Тако да смо и даље добри. 1240 01:00:24,050 --> 01:00:27,204 >> И то вероватно представља 255, мада у зависности од контекста 1241 01:00:27,204 --> 01:00:29,120 заправо могао да представља негативан број. 1242 01:00:29,120 --> 01:00:31,240 Али о томе други пут. 1243 01:00:31,240 --> 01:00:34,220 Ово изгледа као да се ради о чак могу рачунати. 1244 01:00:34,220 --> 01:00:35,290 >> Сада, то је само 8 бита. 1245 01:00:35,290 --> 01:00:38,170 И мој Мац сигурно, има пут више од 8 бита меморије. 1246 01:00:38,170 --> 01:00:39,170 Али нема коначан. 1247 01:00:39,170 --> 01:00:43,230 Тако да исти аргумент важи, чак и ако се имају више од ових оних на екрану. 1248 01:00:43,230 --> 01:00:47,020 >> Али шта се дешава ако сте складиштење овај број, 255, 1249 01:00:47,020 --> 01:00:49,290 и желите да рачунају 1 мало више? 1250 01:00:49,290 --> 01:00:51,600 Хоћеш да идеш од 255 до 256. 1251 01:00:51,600 --> 01:00:55,800 Проблем је, наравно, је да ако почети да броји од нуле као и прошле недеље, 1252 01:00:55,800 --> 01:00:59,670 Ви не можете рачунати као висок као 256, а камоли 257, 1253 01:00:59,670 --> 01:01:02,584 а камоли 258, м јер шта деси када додате 1? 1254 01:01:02,584 --> 01:01:05,000 Уколико школу стари разред приступ, ставите 1 овде, 1255 01:01:05,000 --> 01:01:08,150 а затим 1 плус 1 је 2, али то је стварно нула, ти носе 1, 1256 01:01:08,150 --> 01:01:09,695 носе 1, носе 1. 1257 01:01:09,695 --> 01:01:12,620 Све ове ствари, ови 1, идите на нулу. 1258 01:01:12,620 --> 01:01:17,820 И ви завршити, да, као неко истакао, на 1 на левој страни. 1259 01:01:17,820 --> 01:01:22,540 Али све што могу заправо видети и стане у меморију 1260 01:01:22,540 --> 01:01:27,960 је само осам 0 је, што ће рећи у једном тренутку ако ти, рачунар, 1261 01:01:27,960 --> 01:01:32,490 покушао рачунајући довољно високо, ти си ће да заврши око, рекло би се, 1262 01:01:32,490 --> 01:01:35,850 на нулу, или можда чак и негативног бројеви, који су чак и ниже од нуле. 1263 01:01:35,850 --> 01:01:37,260 >> И можемо некако види ово. 1264 01:01:37,260 --> 01:01:39,900 Пусти ме напред и писати прави брзо програм овде. 1265 01:01:39,900 --> 01:01:43,690 Пусти ме напред и писати програм који се зове поплаве. 1266 01:01:43,690 --> 01:01:49,980 Укључују ЦС50.х, укључују Стандардни ИО.х-- Ох, 1267 01:01:49,980 --> 01:01:51,730 Стварно пропустио синтаксе. 1268 01:01:51,730 --> 01:01:54,440 Дакле, да спаси ово као оверфлов.ц. 1269 01:01:54,440 --> 01:01:57,084 >> И сада маин воид-- и убрзо, ми ћемо 1270 01:01:57,084 --> 01:01:59,500 вратити у објашњењу зашто држимо писање инт маин празнину. 1271 01:01:59,500 --> 01:02:02,080 Али за сада, хајде да одрадимо то, то узимање здраво за готово. 1272 01:02:02,080 --> 01:02:06,200 Хајде да себи дају инт, и иницијализујемо га 0. 1273 01:02:06,200 --> 01:02:11,716 >> Хајде онда да урадимо за инт и гет зеро-- Заправо, хајде да бесконачну петљу 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 >> н је инт. 1294 01:03:12,870 --> 01:03:16,400 Видели смо малопре са величином пример да је инт је четири бајта. 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 и ударио Цонтрол ц-- искрено, Цонтрол Ц пуно, где Контрола Ц углавном 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 Дакле, иако сам погодио Цонтрол-а Ц пре неколико секунди, 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 Дај ми још променљиву инт и добија 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 А онда н-- ово је још увек ће трајати заувек. 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 Дакле, ако сам добио синтаксу ригхт-- вас може да види симбол шаргарепе у Ц средства 1346 01:05:40,200 --> 01:05:42,706 То је колико сам пута био покушава да реши овај проблем. 1347 01:05:42,706 --> 01:05:45,330 Па хајде да се отараси оног Све у свему, и затворите тај прозор. 1348 01:05:45,330 --> 01:05:46,520 И ми ћемо користити нови. 1349 01:05:46,520 --> 01:05:51,980 Направи Оверфлов, дот косу црту преливање, Ентер, у реду, 1350 01:05:51,980 --> 01:05:53,090 изгледа лоше на почетку. 1351 01:05:53,090 --> 01:05:56,200 Али да се кретање уназад кроз време, јер сам ове 64 пута. 1352 01:05:56,200 --> 01:05:58,700 >> И приметио први пут, н је 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 >> И тако се заправо прелива инт од 1 милијарде 1358 01:06:18,930 --> 01:06:23,514 на око негативан 2 милијарде, јер је цео број, 1359 01:06:23,514 --> 01:06:25,430 за разлику од бројева и ми су под претпоставком прошле недеље, 1360 01:06:25,430 --> 01:06:28,397 може бити и позитивна и негативна у стварности и у рачунару. 1361 01:06:28,397 --> 01:06:30,730 Па најмање један од оних битова се ефикасно украден. 1362 01:06:30,730 --> 01:06:34,190 Тако да стварно имамо само 31 бита, или 2 милијарде могућих вредности. 1363 01:06:34,190 --> 01:06:38,220 >> Али за сада је понети је прилично једноставно, без обзира ови бројеви су 1364 01:06:38,220 --> 01:06:42,280 и без обзира на математика, нешто лоше деси на крају, 1365 01:06:42,280 --> 01:06:46,980 јер на крају ви покушавате да пермуте битови једном превише пута. 1366 01:06:46,980 --> 01:06:51,060 И да ефикасно иде од свега 1 да можда све 0 је, или можда 1367 01:06:51,060 --> 01:06:54,260 само су неки други образац који њега Јасно, у зависности од контекста, 1368 01:06:54,260 --> 01:06:56,342 може да се тумачи као негативан број. 1369 01:06:56,342 --> 01:06:59,300 И тако, чини се да највећу И може да рачуна у овом програму 1370 01:06:59,300 --> 01:07:01,210 је само око 1 милијарду. 1371 01:07:01,210 --> 01:07:02,760 Али ту је делимично решење овде. 1372 01:07:02,760 --> 01:07:03,480 Знаш шта? 1373 01:07:03,480 --> 01:07:07,600 >> Пусти ме да промене из инт да дуго дуго. 1374 01:07:07,600 --> 01:07:10,633 И пусти ме напред овде и говоре-- ћу имати 1375 01:07:10,633 --> 01:07:12,290 да се то променити у непотписани дуго. 1376 01:07:12,290 --> 01:07:16,860 Или, да видимо, ја сам никад се сетим. 1377 01:07:16,860 --> 01:07:19,920 >> Идемо напред и да преливање. 1378 01:07:19,920 --> 01:07:21,860 Не, то није то, доктор права, хвала. 1379 01:07:21,860 --> 01:07:23,430 Тако да понекад кланг може бити од помоћи. 1380 01:07:23,430 --> 01:07:27,550 Ја не сјећа шта формат Спецификатор је за дуго дуго. 1381 01:07:27,550 --> 01:07:28,950 >> Али, заиста, кланг ми је рекао. 1382 01:07:28,950 --> 01:07:31,570 Зелена је нека врста добро, ипак значи да си погрешио. 1383 01:07:31,570 --> 01:07:33,190 То је Претпостављам да сам мислио ЛЛД. 1384 01:07:33,190 --> 01:07:38,750 >> Па дај да је то савет, дуго дуго децимални број, осим што. 1385 01:07:38,750 --> 01:07:43,190 И пусти ме да поновљени, дот сласх преливање, Ентер. 1386 01:07:43,190 --> 01:07:45,020 А сада оно што је кул је ово. 1387 01:07:45,020 --> 01:07:49,140 >> Ако сам дођите на време, још увек старт рачунајући на истој место-- 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 Обавештење, добијамо све начин до 1 милијарде. 1390 01:07:54,860 --> 01:07:57,070 Али онда смо безбедно стигли до 2 милијарде. 1391 01:07:57,070 --> 01:08:01,300 >> Онда долазимо до 4 милијарде, онда 8 милијарди, 17 милијарди. 1392 01:08:01,300 --> 01:08:03,340 И идемо више, и више, и више. 1393 01:08:03,340 --> 01:08:05,740 На крају, овај, такође, паузе. 1394 01:08:05,740 --> 01:08:09,350 >> На крају, са много, много, који је 64-битна вредност, а не 1395 01:08:09,350 --> 01:08:13,660 32-битна вредност, ако рачунаш превисока, можете замотати око 0. 1396 01:08:13,660 --> 01:08:16,410 И у овом случају, ми се деси завршити са негативним бројем. 1397 01:08:16,410 --> 01:08:17,550 >> Дакле, ово је проблем. 1398 01:08:17,550 --> 01:08:20,439 И испоставило се да је ово Проблем није толико волшебни. 1399 01:08:20,439 --> 01:08:23,060 Иако сам намерно индуцед је са тих грешака, 1400 01:08:23,060 --> 01:08:26,149 Испоставило се да смо га некако видимо од свега око нас, или бар неки од нас не зна. 1401 01:08:26,149 --> 01:08:28,939 >> Дакле, у Лего Стар Варс, ако сте икада играли игру, 1402 01:08:28,939 --> 01:08:33,830 Испоставило се да можеш ићи около разбијање ствари у ЛЕГО свету, 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 Па Лего је покушавао да држати ствари корисника пријатељски. 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 Чини се, на основу тих информација, да ЛЕГО, а компанија која је 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 учинио, јер је био веома пассиве-- 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 Тако да Гоогле може да се на ово. 1439 01:10:36,930 --> 01:10:39,380 И то је, заиста, један случајно програмирање буба, 1440 01:10:39,380 --> 01:10:43,010 али то је сасвим ушао знање од тада. 1441 01:10:43,010 --> 01:10:44,360 >> То је све забавно и слатко. 1442 01:10:44,360 --> 01:10:47,760 Више застрашујуће је када актуелан стварног живота уређаја, а не игре, 1443 01:10:47,760 --> 01:10:48,820 има те исте грешке. 1444 01:10:48,820 --> 01:10:54,500 У ствари, пре само годину дана чланак је више о Боеинг 787 Дреамлинер. 1445 01:10:54,500 --> 01:10:56,850 >> И чланак у први поглед чита мало волшебни. 1446 01:10:56,850 --> 01:11:01,480 Али рекао, софтвер рањивост у Боеинг 1447 01:11:01,480 --> 01:11:04,790 нови 787 Дреамлинер авион има потенцијал да изазове пилоте 1448 01:11:04,790 --> 01:11:07,220 да изгуби контролу над авион, евентуално 1449 01:11:07,220 --> 01:11:11,750 средином лета, ФАА званичници упозорио авио-компаније недавно. 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 евен-- ово је 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 Да се ​​вратим у ЦС50 ИДЕ. 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 Пусти ме напред и до принтф, посто Ф, косих н 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 Али аргумент је тип инт. 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 имају ефекат претварања их у флоатс-- даље, надамо се, 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, који знам да је инт. 1519 01:14:52,560 --> 01:14:54,660 Али чувајте га, молим те, као да је то пловак. 1520 01:14:54,660 --> 01:14:56,680 Али ово изгледа непотребно комплекс. 1521 01:14:56,680 --> 01:14:59,040 >> За наше потребе данас, хајде само буквално 1522 01:14:59,040 --> 01:15:02,700 маке их покретном зарезу са децимални зарез, овако. 1523 01:15:02,700 --> 01:15:07,060 Пусти ме напред и реприза, да непрецизност, добро, тачка коса црта 1524 01:15:07,060 --> 01:15:08,870 непрецизност, унесите. 1525 01:15:08,870 --> 01:15:10,990 У реду, ми тражимо добро. 1526 01:15:10,990 --> 01:15:18,194 >> 1 подељено са 10, према мом Мац овде, је, заиста, 0,100000. 1527 01:15:18,194 --> 01:15:21,360 Сада, ја сам учио у основној школи тамо треба да буде бесконачан број 0-их. 1528 01:15:21,360 --> 01:15:23,151 Дакле, хајде да барем покушамо да видимо неке од њих. 1529 01:15:23,151 --> 01:15:26,770 Испоставило се да принтф је мало одгајивач и даље него смо користили. 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 >> Конкретно, ја идем да кажем, хеј, принтф, 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 Направи непрецизности, дот сласх импрецисион-- тако 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 Сада као страну, ако сте икад видела мовие-- 1571 01:17:42,610 --> 01:17:45,780 већина вас вероватно хавен'т-- али пре Супермен 3 неколико година, 1572 01:17:45,780 --> 01:17:49,500 Рицхард Приор у суштини је искористио ово реалност у његовој компанији да украде много 1573 01:17:49,500 --> 01:17:53,500 фракција и фракција пенија, јер компанији-- колико се сећам, 1574 01:17:53,500 --> 01:17:57,210 ово је био вхиле-- је у суштини бацање било шта што се не уклапа 1575 01:17:57,210 --> 01:17:58,790 у појам центи. 1576 01:17:58,790 --> 01:18:01,480 >> Али ако се саберу сви ови малени, малени, ситни поново бројеве, 1577 01:18:01,480 --> 01:18:04,960 и опет, и опет, можете, као у његов случај, направити добру суму новца. 1578 01:18:04,960 --> 01:18:08,010 >> Исте идеја је покрао од новије, али ипак сада старији 1579 01:18:08,010 --> 01:18:10,500 Филм, назван Пословни простор, где су момци у том филму, 1580 01:18:10,500 --> 01:18:13,501 урадио исту ствар, зезнуо га потпуно, завршио са превише 1581 01:18:13,501 --> 01:18:14,666 новац у свом банковном рачуну. 1582 01:18:14,666 --> 01:18:15,800 Све је било веома сумњиво. 1583 01:18:15,800 --> 01:18:19,290 Али на крају дана, непрецизност је свуда око нас. 1584 01:18:19,290 --> 01:18:22,240 >> И да, такође, може бити застрашујуће случај. 1585 01:18:22,240 --> 01:18:25,590 Испоставило се да Супермен 3 и пословни простор у страну, тамо 1586 01:18:25,590 --> 01:18:28,460 може бити неки веома реална ворлд последице 1587 01:18:28,460 --> 01:18:32,290 од реалности непрецизних представљање података 1588 01:18:32,290 --> 01:18:34,770 да чак и ми људи то овај дан не нужно 1589 01:18:34,770 --> 01:18:38,230 схватити као би требало, или запамтити онолико често колико би требало. 1590 01:18:38,230 --> 01:18:42,950 И, заиста, следећи снимак из погледамо неке врло стварном свету 1591 01:18:42,950 --> 01:18:47,730 последице онога што ће се десити ако не ценимо непрецизности да 1592 01:18:47,730 --> 01:18:50,065 може да се деси у представљању бројева. 1593 01:18:50,065 --> 01:18:51,300 >> [ВИДЕО РЕПРОДУКЦИЈА] 1594 01:18:51,300 --> 01:18:55,620 >> -Цомпутерс, Сви смо дошли да прихвати су често фрустрирајуће проблеми који 1595 01:18:55,620 --> 01:19:00,310 иди са њих-- грешака, вирусе, и софтвер Глитцхес, 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. године, научници припремају да покрене беспилотну Ариане 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 >> Ово је била лепотица Воиаге оф тхе Ариане 5. 1613 01:20:01,060 --> 01:20:03,960 И њено уништење је плаце због грешке 1614 01:20:03,960 --> 01:20:05,822 уграђен у софтверу ракете. 1615 01:20:05,822 --> 01:20:08,280 -Проблем На Ариане био да постоји број који 1616 01:20:08,280 --> 01:20:10,600 потребно 64 бита да изразе. 1617 01:20:10,600 --> 01:20:13,590 И они су хтели да га претвори то на 16-битни број. 1618 01:20:13,590 --> 01:20:15,610 Они претпоставља да број никада неће 1619 01:20:15,610 --> 01:20:20,980 да буде веома велика, да је већина оних који су цифре у 64-битни број био нула. 1620 01:20:20,980 --> 01:20:22,440 Они су били у праву. 1621 01:20:22,440 --> 01:20:25,060 >> -У Неспособност једног софтверски програм да прихвати 1622 01:20:25,060 --> 01:20:29,510 врста броја генерише друга је била у корену неуспеха. 1623 01:20:29,510 --> 01:20:34,350 развој софтвера постао веома скуп део нове технологије. 1624 01:20:34,350 --> 01:20:38,140 Ариане ракета су били веома успешни, толико софтвера 1625 01:20:38,140 --> 01:20:41,550 створен за то је био користи у Ариане 5. 1626 01:20:41,550 --> 01:20:47,940 >> -У Основни проблем је да је Аријана 5 је био бржи, убрзан брже. 1627 01:20:47,940 --> 01:20:51,450 И софтвер није имала чини то. 1628 01:20:51,450 --> 01:20:55,060 >> -У Уништавање ракета је огроман финансијски катастрофа, 1629 01:20:55,060 --> 01:20:58,790 све због грешке минут софтвера. 1630 01:20:58,790 --> 01:21:01,210 Али ово није био први време проблеми конверзије података 1631 01:21:01,210 --> 01:21:04,820 је долазило модерне ракетне технологије. 1632 01:21:04,820 --> 01:21:08,050 >> -У 1991, са почетком првог Заливског рата, 1633 01:21:08,050 --> 01:21:10,570 Патриотски ракета доживели сличну врсту 1634 01:21:10,570 --> 01:21:12,800 проблема број конверзије. 1635 01:21:12,800 --> 01:21:16,090 И као резултат тога, 28 људи, 28 амерички војници, 1636 01:21:16,090 --> 01:21:19,080 убијено, а око 100 рањено, 1637 01:21:19,080 --> 01:21:22,780 када Патриотски, који је требало за заштиту од долазеће Сцудс, 1638 01:21:22,780 --> 01:21:25,830 није успео да испали пројектил. 1639 01:21:25,830 --> 01:21:31,670 >> Када Ирак напао Кувајт, и Америку лансиран Десерт Сторм почетком 1991. године, 1640 01:21:31,670 --> 01:21:35,780 Патриот ракетне батерије су биле распоређене за заштиту Саудијску Арабију и Израел 1641 01:21:35,780 --> 01:21:39,230 из ирачких СЦУД ракетних напада. 1642 01:21:39,230 --> 01:21:43,810 Патриота је амерички средњег домета Подлога за ваздух система, произведен 1643 01:21:43,810 --> 01:21:45,770 од стране компаније Раитхеон. 1644 01:21:45,770 --> 01:21:52,340 >> -У Величина Патриот интерцептор Сама је дуга око отприлике 20 метара. 1645 01:21:52,340 --> 01:21:55,230 А тежак је око 2.000 килограма. 1646 01:21:55,230 --> 01:21:59,320 И то носи бојеву главу од око, Мислим да је отприлике 150 фунти. 1647 01:21:59,320 --> 01:22:03,930 И сама бојева глава је висок експлозив, који 1648 01:22:03,930 --> 01:22:07,330 има фрагмената око њега. 1649 01:22:07,330 --> 01:22:11,680 Кућиште бојеве главе је пројектована да делују као сачме. 1650 01:22:11,680 --> 01:22:14,110 >> -Тхе Ракете врши по четири у контејнеру, 1651 01:22:14,110 --> 01:22:17,130 и транспортују полу приколицу. 1652 01:22:17,130 --> 01:22:24,930 >> -Тхе Патриот антиракетни систем датира најмање 20 година. 1653 01:22:24,930 --> 01:22:28,420 Првобитно је пројектована као одбрану ракета ваздух 1654 01:22:28,420 --> 01:22:30,720 да оборе непријатељске авионе. 1655 01:22:30,720 --> 01:22:34,500 У првом Заливског рата, када је тај рат заједно, 1656 01:22:34,500 --> 01:22:39,745 Војска желео да га користите за оборе Сцудс, а не авионе. 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 Па су покушали да надоградња Патриот. 1660 01:22:50,170 --> 01:22:52,800 >> -Интерцептинг Непријатеља ракета путује Мацх 5 1661 01:22:52,800 --> 01:22:55,830 је требало да буде довољно изазован. 1662 01:22:55,830 --> 01:22:58,490 Али када Патриотски је улетео у службу, 1663 01:22:58,490 --> 01:23:02,860 Војска није био упознат са Ирачки модификација које је 1664 01:23:02,860 --> 01:23:05,930 њихови СКАД готово немогуће погодити. 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 >> Тако је сада Патриота је покушавајући да дођу у Сцуд. 1672 01:23:27,330 --> 01:23:30,230 И највећи део времена, Огромна већина времена, 1673 01:23:30,230 --> 01:23:32,940 то би само лети од стране Сцуд. 1674 01:23:32,940 --> 01:23:37,260 Када оператора Патриот система схватио Патриотски промашила циљ, 1675 01:23:37,260 --> 01:23:41,690 они активирао патриота је бојеву главу како би се избегла жртве ако се 1676 01:23:41,690 --> 01:23:44,570 било дозвољено да падне на земљу. 1677 01:23:44,570 --> 01:23:48,790 >> То је оно што већина људи видели, те велике ватрене лопте на небу, 1678 01:23:48,790 --> 01:23:54,550 и разумео као пресретнути Сцуд бојевих глава. 1679 01:23:54,550 --> 01:23:56,630 >> -Али Ипак у ноћи небо, Патриоте појавио 1680 01:23:56,630 --> 01:24:00,370 да се успешно уништавање Сцудс, на Дахрану, 1681 01:24:00,370 --> 01:24:03,360 није могло бити грешка о свом раду. 1682 01:24:03,360 --> 01:24:07,970 Ту, у Патриот радарски систем изгубио траг на долазни Сцуд, 1683 01:24:07,970 --> 01:24:10,721 и никада није покренута због на софтверски грешке. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 То је Израелце који је први откривени да што је дуже систем био укључен, 1686 01:24:18,940 --> 01:24:22,690 већи је време неслагање постао, због сат ембеддед 1687 01:24:22,690 --> 01:24:24,810 у компјутеру система. 1688 01:24:24,810 --> 01:24:28,210 >> Око две недеље пре трагедија у Дхахрану, 1689 01:24:28,210 --> 01:24:30,770 Израелци пријављен Министарство одбране 1690 01:24:30,770 --> 01:24:32,590 да је систем губи време. 1691 01:24:32,590 --> 01:24:35,360 После око осам сати или трчања, су приметили да је систем 1692 01:24:35,360 --> 01:24:37,720 постаје приметно мање прецизна. 1693 01:24:37,720 --> 01:24:41,900 Министарство одбране је одговорио говори све Патриот батерија 1694 01:24:41,900 --> 01:24:44,950 да не остави система на дуже време. 1695 01:24:44,950 --> 01:24:49,160 Нису рекли који је дуго времена је- осам сати, 10 сати, 1.000 сати. 1696 01:24:49,160 --> 01:24:51,360 Нико није знао. 1697 01:24:51,360 --> 01:24:53,380 >> -Тхе Патриот батерија стациониране у касарни 1698 01:24:53,380 --> 01:24:58,350 на Дхахрана и његова погрешна унутрашња сат је био на више од 100 сати 1699 01:24:58,350 --> 01:25:01,670 у ноћи 25. фебруара. 1700 01:25:01,670 --> 01:25:05,917 >> Багер -ит времена са тачношћу од око једне десетине секунде. 1701 01:25:05,917 --> 01:25:08,000 Сада, десетину секунде је занимљив број, 1702 01:25:08,000 --> 01:25:11,920 јер се не може исказати у бинарном тачно, који 1703 01:25:11,920 --> 01:25:16,820 значи да се не може изразити тачно у сваком модерног дигиталног рачунара. 1704 01:25:16,820 --> 01:25:18,540 Тешко је поверовати. 1705 01:25:18,540 --> 01:25:21,210 >> Али користе као пример. 1706 01:25:21,210 --> 01:25:23,540 Узмимо број једну трећину. 1707 01:25:23,540 --> 01:25:27,350 Једна трећина не може бити изражена у децималама тачно. 1708 01:25:27,350 --> 01:25:32,080 Једна трећина је 0.333 дешава за бесконачност. 1709 01:25:32,080 --> 01:25:36,480 >> Не постоји начин да се то са апсолутна тачност у децимале. 1710 01:25:36,480 --> 01:25:39,560 То је управо врста проблема што се десило у Патриот. 1711 01:25:39,560 --> 01:25:44,100 Што дуже систем ран је горе грешка време постао. 1712 01:25:44,100 --> 01:25:48,890 >> -После 100 сати рада, грешка у време била само око једне трећине 1713 01:25:48,890 --> 01:25:50,600 секунде. 1714 01:25:50,600 --> 01:25:54,210 Али у смислу циљања ракета путује Мацх 5, 1715 01:25:54,210 --> 01:25:58,710 то је резултирало у праћењу грешка преко 600 метара. 1716 01:25:58,710 --> 01:26:02,120 Било би фатална грешка за војнике на шта 1717 01:26:02,120 --> 01:26:08,940 догодило је Скад лансирање је било детектован од раних сателита упозорења 1718 01:26:08,940 --> 01:26:12,860 и они су знали да је Скад је долазак у њиховом правцу. 1719 01:26:12,860 --> 01:26:15,320 Они нису знали одакле долази. 1720 01:26:15,320 --> 01:26:18,250 >> -То Сада је до радара компонента Патриот система 1721 01:26:18,250 --> 01:26:23,190 брани ДХАХРАН да лоцира и задржати стаза долазног непријатеља ракете. 1722 01:26:23,190 --> 01:26:24,609 >> -У Радара је био веома паметан. 1723 01:26:24,609 --> 01:26:26,650 То би заправо трацк положај Сцуд, 1724 01:26:26,650 --> 01:26:30,350 а онда предвиђа где се вероватно ће бити следећи пут радар послао 1725 01:26:30,350 --> 01:26:31,420 пулс се. 1726 01:26:31,420 --> 01:26:33,110 То се зове капија опсег. 1727 01:26:33,110 --> 01:26:37,660 >> Онда, некада Патриот одлучује довољно времена има 1728 01:26:37,660 --> 01:26:42,450 прошло да се врати и проверите следеће локација за откривени објекат, 1729 01:26:42,450 --> 01:26:43,600 иде уназад. 1730 01:26:43,600 --> 01:26:48,650 Дакле, када се вратио у погрешно место, онда не види објекат. 1731 01:26:48,650 --> 01:26:52,160 И одлучује да није било објекат, то је била лажна детекција, 1732 01:26:52,160 --> 01:26:53,930 и капи траг. 1733 01:26:53,930 --> 01:26:57,030 >> -У Долазни Скад нестао са екрана радара. 1734 01:26:57,030 --> 01:27:00,260 И секунде касније, то ударио у касарни. 1735 01:27:00,260 --> 01:27:06,150 Скад убио 28, а био последњи један испаљен током првог Заливског рата. 1736 01:27:06,150 --> 01:27:11,960 >> Трагично је ажуриран софтвер стигао у Дхахрана наредног дана. 1737 01:27:11,960 --> 01:27:14,930 Софтвер мана је имао био фиксни, затварање 1738 01:27:14,930 --> 01:27:19,806 једно поглавље у невољи Историја Патриот ракете. 1739 01:27:19,806 --> 01:27:20,729 >> [ВИДЕО РЕПРОДУКЦИЈА] 1740 01:27:20,729 --> 01:27:23,520 Давид Ј Малан: Дакле, ово је све у кажу да овим питањима преливом 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 Почели смо са само говори о принтф. 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 из тзв ЦС50 библиотеци. 1747 01:27:34,945 --> 01:27:36,910 И ми ћемо наставити да види ово у догледно време. 1748 01:27:36,910 --> 01:27:40,760 И ми, нарочито, користе гет стринг, и да инт, а сада добијају флоат, 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 Они предају нас назад стринг, или инт, или пловак. 1753 01:27:52,920 --> 01:27:56,070 И понекад морамо ставити да низ, или инт или флоат, негде. 1754 01:27:56,070 --> 01:28:00,100 >> И за чување тих ствари, сећам се само као у Сцратцх, имамо променљиве. 1755 01:28:00,100 --> 01:28:03,260 Али за разлику од Сцратцх, у Ц имамо стварне врсте 1756 01:28:03,260 --> 01:28:05,530 од вариаблес-- података врсте, више генералли-- 1757 01:28:05,530 --> 01:28:08,640 међу њима, стринг, инт, А флоат, а ови остали и даље. 1758 01:28:08,640 --> 01:28:12,321 >> И тако, када смо прогласити променљиве у Ц, ћемо морати да прогласи наше врсте података. 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 морамо рећи принтф шта да очекујемо. 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 а и Виндовс користи за много година. 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 >> Ако желите да поставите двоструки цитат у сред стринг-- и, заиста, 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 узимајући поглед на неки други конструкције у ц-- не све њих. 1792 01:29:39,350 --> 01:29:41,680 Али идеје смо о да виде заиста само 1793 01:29:41,680 --> 01:29:45,610 да нагласи превод са један језик, Огреби, на други, Ц 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 Ја ћу назвати цондитион.ц. 1802 01:30:06,090 --> 01:30:09,350 >> Пусти ме напред и укључују ЦС50 библиотеку. 1803 01:30:09,350 --> 01:30:12,640 И пусти ме напред и укључују Стандардни ио.х за наше функције, 1804 01:30:12,640 --> 01:30:14,690 и принтф, и респективно. 1805 01:30:14,690 --> 01:30:18,900 Дозволите ми да се предам да ове стандардне о инт празнина, чији објашњење ћемо 1806 01:30:18,900 --> 01:30:20,360 вратити у будућности. 1807 01:30:20,360 --> 01:30:23,820 >> Сад ме пусти напред и дати ја инт преко гет инт. 1808 01:30:23,820 --> 01:30:25,970 Онда ме пусти напред и уради то. 1809 01:30:25,970 --> 01:30:30,150 Хоћу да кажем да сам је лесс-- хајдемо разликовати позитивни, негативни, 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 Сада сам, наравно, да кажем принтф позитиван, инверзна коса црта н. 1814 01:30:47,030 --> 01:30:50,690 А онда још Ако-- сам могао да урадим ово. 1815 01:30:50,690 --> 01:30:53,410 >> Могао бих да сам једнако 0. 1816 01:30:53,410 --> 01:30:55,840 Али ја бих одлука на најмање једна грешка већ. 1817 01:30:55,840 --> 01:30:59,480 Подсетимо се да је знак једнакости је није једнако, као што смо ми људи то знају. 1818 01:30:59,480 --> 01:31:01,010 >> Али то је оператер задатак. 1819 01:31:01,010 --> 01:31:05,640 И ми не желимо да се на 0 десно и стави га у сам на левој страни. 1820 01:31:05,640 --> 01:31:11,810 Тако да се избегне конфузија, или можда злоупотреба знак једнакости, 1821 01:31:11,810 --> 01:31:14,740 људи одлучили пре неколико година да у многим програмским језицима 1822 01:31:14,740 --> 01:31:18,000 када желите да проверите за равноправност између леве и десне стране, 1823 01:31:18,000 --> 01:31:19,635 се заиста користити једнако једнаки. 1824 01:31:19,635 --> 01:31:21,010 Тако да погоди знак једнакости два пута. 1825 01:31:21,010 --> 01:31:25,600 Када желите да доделите с десна на лево, користите једну знак једнакости. 1826 01:31:25,600 --> 01:31:29,360 Тако да би могли да урадимо ово-- друго ако сам једнако једнака нули. 1827 01:31:29,360 --> 01:31:31,710 >> онда бих могао да одем и отвори ми витичасте, 1828 01:31:31,710 --> 01:31:36,087 и кажу, принтф 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 три кашике у којој је сценарио може фалл-- први, 1839 01:32:01,635 --> 01:32:03,510 други, или трећи у овом цасе-- не 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 Услови дот сласх цондитионс-- није велики кориснички интерфејс, 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 непрецизности и преливања, у реалност у којој су многи од проблема ЦС50 је, 1860 01:32:53,480 --> 01:32:56,000 ми нећемо бринути о, све време, 1861 01:32:56,000 --> 01:32:59,050 та питања преливом и непрецизност, јер, у ствари, у Ц, 1862 01:32:59,050 --> 01:33:01,889 заправо није све лако да се избегне те ствари. 1863 01:33:01,889 --> 01:33:04,180 Ако желите да изброји већи, и већи, и већи, 1864 01:33:04,180 --> 01:33:07,510 Испоставило се да постоје технике ви могу да користе, често укључује ствари које се зову 1865 01:33:07,510 --> 01:33:11,240 библиотеке, збирке кода, да други људи писали да можете користити, 1866 01:33:11,240 --> 01:33:13,910 и други језици као што су Јава и други, заправо 1867 01:33:13,910 --> 01:33:15,800 да је много лакше да рачунају још већи. 1868 01:33:15,800 --> 01:33:19,810 Тако да заиста неке од тих опасности функција језика који користите. 1869 01:33:19,810 --> 01:33:22,710 И у наредним недељама, ми ћемо види колико је опасна Ц стварно 1870 01:33:22,710 --> 01:33:24,950 може бити ако се не користе правилно. 1871 01:33:24,950 --> 01:33:27,610 Али одатле, и са Питхон и ЈаваСцрипт, неће 1872 01:33:27,610 --> 01:33:32,620 смо слој на неке додатне заштите, и покренути мање од тих ризика. 1873 01:33:32,620 --> 01:33:35,820 >> Дакле, хајде да мало више Занимљиво логика у нашем програму. 1874 01:33:35,820 --> 01:33:39,110 Па пусти ме напред и створити програм који се зове Логички 1875 01:33:39,110 --> 01:33:43,804 само тако да могу да играм са неким Стварна логика, логицал.ц. 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 >> Нека ми овај пут до кар Ц и ми ће му дати име Ц 1879 01:33:53,980 --> 01:33:58,510 само зато што је конвенционално, добити карактер од корисника. 1880 01:33:58,510 --> 01:34:00,730 И рецимо да је као Ја сам имплементацију део 1881 01:34:00,730 --> 01:34:04,130 те Рм програма, ремове Програм пре тога затражено корисника 1882 01:34:04,130 --> 01:34:05,400 уклонити фајл. 1883 01:34:05,400 --> 01:34:06,750 Како смо могли ово? 1884 01:34:06,750 --> 01:34:11,090 >> Хоћу да кажем, ако, Ц једнако једнако, под знацима навода, 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 >> Иф Ц једнако једнако н-- и сада овде, ја ћу рећи, 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 Испоставило се да у Ц, када желите написати стринг, 1902 01:34:52,860 --> 01:34:56,680 користите наводнике, баш као што смо Користим све ово време са принтф. 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 У Ц, то ствар чини. 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 Па ја главни И, ентер, грешка. 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 Рекао сам му да урадиш-- проверите мала слова И и мала слова бр. 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 као буквално или Ц једнако једнако капитала јединствен цитирао год. 1925 01:36:08,150 --> 01:36:11,400 Испоставило се да, Ц нема ово буквално кључне речи или. 1926 01:36:11,400 --> 01:36:12,880 >> Али има два вертикалне линије. 1927 01:36:12,880 --> 01:36:15,463 Треба да држите Схифт обично, ако користите УС тастатуру, 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 куцања и и и мала слова И и капитал И као истог карактера. 1934 01:36:37,110 --> 01:36:39,470 Дакле, или је оно што желимо овде. 1935 01:36:39,470 --> 01:36:46,280 >> Дакле, ако урадим ово на оба места, или ц једнако једнако капитал Н, сада поновљени, 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 И ја могу то да урадим поново са капитал И или капитал С. 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 говорећи, ако, Ц једнако малим словима и, принт да, иф Ц износи капитала И, 1946 01:37:17,490 --> 01:37:20,074 принт да, иф Ц једнако ловер-- другим речима, 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 да Ц дозвољава. 1951 01:37:34,847 --> 01:37:36,930 Па ћемо се вратити у будући да други и даље. 1952 01:37:36,930 --> 01:37:41,400 А онда ћемо завршити гледајући у не исправност цоде-- 1953 01:37:41,400 --> 01:37:46,070 узимајући код за послу-- али дизајн кода, и засадити те семе рано. 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 >> Па ме пусти брзо дати себи приступ укључује ЦС50.х 1959 01:38:00,110 --> 01:38:04,150 за библиотеку ЦС50, Стандардни ио.х за принтф. 1960 01:38:04,150 --> 01:38:06,510 Дај ми инт маин празнину. 1961 01:38:06,510 --> 01:38:09,310 А онда овде, нека ја само напред и уради то. 1962 01:38:09,310 --> 01:38:12,010 >> Цхар ц добија се цхар, баш као и пре. 1963 01:38:12,010 --> 01:38:16,770 И ја ћу да користите нови конструкт Сад-- прекидач, на ком карактеру? 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 >> Дакле, у случају малих слова и, или у случају капитала И, 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 >> Иф, да тако кажем, мала слова Н, или капитала Н, 1980 01:38:57,270 --> 01:39:02,560 само напред и штампа се не, а затим разбити. 1981 01:39:02,560 --> 01:39:08,022 Елсе-- и ова врста је Уобичајено случај индеед-- принтф еррор-- 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 Видиш мала слова И, капитала И, мала слова Н, капитал; Дефаулт, 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 прекидач, а сада куцали малим словима и, капитал И, мала слова Н, капитал Н, 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 И, логицалли-- и то је нешто Ја бих охрабрити у генерал-- чак 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 Хајде да унесете мала слова И, горњи случај, Ентер. 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 >> Ја ћу назвати прототипе.ц, и увести 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 а затим их превуците на своје место где год желите у Ц. 2052 01:42:27,892 --> 01:42:30,100 И у већини програма језика, можете да урадите тачно 2053 01:42:30,100 --> 01:42:33,580 да-- да своје функције, ако већ не постоје. 2054 01:42:33,580 --> 01:42:38,660 >> Тако, на пример, пусти ме само напред и укључују ЦС50.х, и укључују 2055 01:42:38,660 --> 01:42:43,110 Стандардни ио.х, маин празнина. 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 И да се осећа као-- Не би било лепо ако постоји 2059 01:42:51,910 --> 01:42:53,936 били функцију која се зове име штампа? 2060 01:42:53,936 --> 01:42:55,060 Не морате да користите принтф. 2061 01:42:55,060 --> 01:42:56,976 Не морају да памте све формат кодови. 2062 01:42:56,976 --> 01:43:00,050 Зашто не ја, или зашто није неко пре мене, 2063 01:43:00,050 --> 01:43:02,980 створити неку функцију под називом принт назив, да, с обзиром неко име, 2064 01:43:02,980 --> 01:43:03,980 једноставно исписује? 2065 01:43:03,980 --> 01:43:08,700 >> Другим речима, ако кажем, хеј, рачунар, дај ми низ 2066 01:43:08,700 --> 01:43:11,870 питајући корисника за што, преко фунцтион гет гудачки ЦС50 је. 2067 01:43:11,870 --> 01:43:15,090 Хеј, компјутер, стави ту серију у променљиви на левој страни, 2068 01:43:15,090 --> 01:43:16,150 и назвати то с. 2069 01:43:16,150 --> 01:43:22,150 А онда, хеј рачунар, само напред и принт то име особе, урађено. 2070 01:43:22,150 --> 01:43:26,240 >> Сада, то би било лепо, јер овај програм, пригодно назван, 2071 01:43:26,240 --> 01:43:29,170 говори ми шта би требало да уради путем имена тих функција је. 2072 01:43:29,170 --> 01:43:32,930 Пусти ме и да прототип, Ентер. 2073 01:43:32,930 --> 01:43:34,930 И, нажалост, ово неће да лети. 2074 01:43:34,930 --> 01:43:39,430 >> Прототипе.ц, линија 7, карактер 5, грешка, имплицитно декларација 2075 01:43:39,430 --> 01:43:42,960 функције име принт је неважећи у Ц99, Ц99 2076 01:43:42,960 --> 01:43:45,130 што значи верзију Ц која је изашла 1999. године. 2077 01:43:45,130 --> 01:43:45,730 То је све. 2078 01:43:45,730 --> 01:43:48,780 >> Тако да не знам шта Све ово значи још. 2079 01:43:48,780 --> 01:43:50,810 Али препознајем грешку у црвено. 2080 01:43:50,810 --> 01:43:51,770 То је очигледно. 2081 01:43:51,770 --> 01:43:53,769 >> И чини се да са зелени лик овде, 2082 01:43:53,769 --> 01:43:57,520 питање је са именом принт, отворен парен с, блиски парен, полу-дебелог црева. 2083 01:43:57,520 --> 01:44:01,800 Али имплицитно декларација Функција смо кратко раније видети. 2084 01:44:01,800 --> 01:44:04,880 То значи, једноставно, да кланг не знаш на шта мислим. 2085 01:44:04,880 --> 01:44:09,000 >> Ја сам користила вокабулар речи да је никад није видео или није раније учили. 2086 01:44:09,000 --> 01:44:11,950 Па морам да предајем шта ова функција значи. 2087 01:44:11,950 --> 01:44:13,590 Тако да идем напред и то. 2088 01:44:13,590 --> 01:44:17,970 >> Ја идем напред и имплементирати моја функција зове Штампа Име. 2089 01:44:17,970 --> 01:44:24,720 И ја ћу рећи, као што следи, да То се чини, принтф, Хелло, посто 2090 01:44:24,720 --> 01:44:27,760 е, косих Н, име, полу-дебелог црева. 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 Инт, Главни, Празнина, ми ћемо зафркавати осим убрзо шта то заправо значи. 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 да врите-- алгоритам основни 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 То не врати ништа, као да стринг или добити Инт ради. 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 Дакле Ц или Цланг прецизније, још увек не признаје назив за штампање. 2126 01:45:51,970 --> 01:45:54,580 >> А то је зато што кланг, по дизајну, је некако глупо. 2127 01:45:54,580 --> 01:45:56,280 То само ради оно што му реци да уради. 2128 01:45:56,280 --> 01:46:00,950 И то не само тако у циљу у којој је рећи да уради. 2129 01:46:00,950 --> 01:46:05,270 >> Тако да су дефинисали главни на линији четири, као да смо радили прилично често. 2130 01:46:05,270 --> 01:46:07,980 Ја сам дефинисано име за штампање на линији 10. 2131 01:46:07,980 --> 01:46:11,793 Али ја покушавам да користим Име штампа на линији седам. 2132 01:46:11,793 --> 01:46:13,670 >> То је прерано, још увек не постоји. 2133 01:46:13,670 --> 01:46:19,150 Тако да сам могао бити паметан, и бити као, У реду, па хајде да играмо заједно, 2134 01:46:19,150 --> 01:46:23,680 и померите име штампање горе овде, и поново саставити. 2135 01:46:23,680 --> 01:46:24,550 О Боже. 2136 01:46:24,550 --> 01:46:25,260 Успело је. 2137 01:46:25,260 --> 01:46:26,670 То је тако једноставно. 2138 01:46:26,670 --> 01:46:28,120 >> Али логика је управо то. 2139 01:46:28,120 --> 01:46:30,870 Мораш научити цланг шта је је дефинисањем први функцију. 2140 01:46:30,870 --> 01:46:31,920 Онда можете га користити. 2141 01:46:31,920 --> 01:46:33,940 Али, искрено, ово се осећа као клизав терен. 2142 01:46:33,940 --> 01:46:35,773 >> Дакле, сваки пут кад покренете у проблем, ја сам 2143 01:46:35,773 --> 01:46:39,450 да истакне и копирање код Писао сам, престани и налепите га овде. 2144 01:46:39,450 --> 01:46:41,370 И, свакако, можемо цонтриве неке сценарије 2145 01:46:41,370 --> 01:46:43,286 где једна функција можда Морам да позовем други. 2146 01:46:43,286 --> 01:46:46,030 А ви једноставно не могу ставити сваки Функција изнад сваке друге. 2147 01:46:46,030 --> 01:46:47,930 >> Тако испада ту је боље решење. 2148 01:46:47,930 --> 01:46:50,100 Можемо оставити ово бити. 2149 01:46:50,100 --> 01:46:53,677 И, искрено, то је углавном лепо, и згодан, и добар дизајн 2150 01:46:53,677 --> 01:46:56,760 да стави главни прво, зато што, опет, Главни баш као кад зелена застава кликне, 2151 01:46:56,760 --> 01:46:59,027 то је функција која бива погубљен по дефаулту. 2152 01:46:59,027 --> 01:47:01,110 Дакле, можда и пут то на врху датотеке 2153 01:47:01,110 --> 01:47:03,560 тако да када или било друго људско гледа датотеке 2154 01:47:03,560 --> 01:47:06,360 знате шта се дешава само читајући главни прво. 2155 01:47:06,360 --> 01:47:15,360 Тако испада, можемо рећи цланг проактивно, хеј, кланг, на линији четири, 2156 01:47:15,360 --> 01:47:17,940 Обећавам да спроведу функција се зове Штампа 2157 01:47:17,940 --> 01:47:22,600 Име које узима стринг под називом име као улаз, и ништа повратка, воид. 2158 01:47:22,600 --> 01:47:24,770 И ја ћу ту да њено спровођење касније. 2159 01:47:24,770 --> 01:47:25,680 >> Ево долази Главни. 2160 01:47:25,680 --> 01:47:29,130 Главни сада он лине 9 могу користити Принт име јер кланг 2161 01:47:29,130 --> 01:47:32,600 је веровати да, на крају, да ће наићи на дефиницију 2162 01:47:32,600 --> 01:47:34,880 спровођења Принт Наме. 2163 01:47:34,880 --> 01:47:37,390 Дакле, након снимања мој досије, нека ја само напред и да прототип, 2164 01:47:37,390 --> 01:47:38,498 изгледа добро овај пут. 2165 01:47:38,498 --> 01:47:43,470 Дот сласх, прототип, пусти ме само напред и укуцајте име. 2166 01:47:43,470 --> 01:47:48,440 Давид, здраво давид, Замила, здраво Замила, и, заиста, сада ради. 2167 01:47:48,440 --> 01:47:52,200 >> Тако да је састојак јесте да имамо је прилагођену функцију, као обичају 2168 01:47:52,200 --> 01:47:54,219 Сцратцх блок зовемо га. 2169 01:47:54,219 --> 01:47:57,010 Али за разлику од нуле, где можете само стварају и почну да га користите, 2170 01:47:57,010 --> 01:47:59,330 Сада морамо бити мало више педантан, 2171 01:47:59,330 --> 01:48:03,410 и заправо тренирају цланг да користе, или да га очекујемо. 2172 01:48:03,410 --> 01:48:09,140 Сада, као успут, зашто све ово време има смо били само слепо на вери, укључујући 2173 01:48:09,140 --> 01:48:12,170 ЦС50.х, укључујући и стандардне ио.х? 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 Они још увек написан на Ц. Али, они су другачији тип датотеке. 2178 01:48:23,270 --> 01:48:28,690 >> За сада, можете прилично претпоставити да је све што је унутар ЦС50.х 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 И постоје слични прототипови, један облоге, унутар стандардног ио.х 2182 01:48:41,510 --> 01:48:46,241 за принтф, који је сада у моја Штампа Име функција. 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 Пусти ме напред и имплементирати фајл под називом ретурн.ц 2195 01:49:21,360 --> 01:49:24,530 тако да може да покаже како нешто као Гет Стринг, или Гет Инт, 2196 01:49:24,530 --> 01:49:27,340 заправо повратак нешто натраг кориснику. 2197 01:49:27,340 --> 01:49:29,840 Идемо напред и дефинисати инт маин празнину. 2198 01:49:29,840 --> 01:49:33,230 >> И, опет, у будућности, ми ћемо објаснити шта то инт и ту празнину 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 Ја идем напред и принтф, за добар корисничко искуство, к је. 2202 01:49:39,970 --> 01:49:44,360 А онда ћу да сачекам за корисник да ми х са гет инт. 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 Ја само могу да урадиш-- шта је х квадрат? к на квадрат је к пута х. 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 >> И, другим речима, у Ц хајде да креирамо функцију 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 То ће узети инт. 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 То ће да се врате, по својој природи, инт. 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 И тако да можемо да га користимо, мора имају име, С. То ће излаз 2241 01:51:24,760 --> 01:51:26,240 инт да не треба име. 2242 01:51:26,240 --> 01:51:29,590 Можемо га оставити да се главни, или ко год је ме користи да се ове вредности ако ми 2243 01:51:29,590 --> 01:51:31,120 Желим са сопственим променљиве. 2244 01:51:31,120 --> 01:51:33,230 >> И, опет, једини нови кључна реч овде је повратак. 2245 01:51:33,230 --> 01:51:34,480 А ја само радим мало математике. 2246 01:51:34,480 --> 01:51:41,825 Ако сам заиста желео да буде непотребно, Могу да кажем Инт производ добија н пута н. 2247 01:51:41,825 --> 01:51:44,170 >> И онда бих могао рећи, врати производ. 2248 01:51:44,170 --> 01:51:47,360 Али, опет, до поенте раније од ово једноставно није добра десигн-- 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 од раније, која је позвао прототипе.ц, 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 >> Ми смо имали функцију да жица, као укључују ЦС50.х, 2277 01:53:10,464 --> 01:53:16,624 укључују стандардну ио.х, инт, главни, празнину. 2278 01:53:16,624 --> 01:53:18,790 А онда сваки пут кад сам под називом Гет низ до сада, 2279 01:53:18,790 --> 01:53:23,260 Ја сам рекао нешто слично, Стринг добија се низ, јер гет стринг-- 2280 01:53:23,260 --> 01:53:27,880 Назовимо овај гет.ц-- гет стринг Сама враћа низ који могу тада 2281 01:53:27,880 --> 01:53:32,050 користи, и кажу, здраво, зарез, посто ова, косих Н, С. 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 Дакле, можда је низ, или Инт, или пловак. 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 >> Пусти ме напред и укључују ЦС50.х и стандардни ИО.х. 2300 01:54:21,700 --> 01:54:24,010 Пусти ме напред и дати ја инт, главни, празнина. 2301 01:54:24,010 --> 01:54:27,380 И пусти ме само напред, зову цоугх.ц. 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 Хајде да себи дају мало више простора овде, Ентер, кашаљ, кашаљ, кашаљ. 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 >> Да ли то три пута, једноставно радећи фолловинг-- 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 То се ово-- принтф, под знацима навода, кашаљ. 2344 01:56:29,370 --> 01:56:32,380 >> И сада овде, ја идем да иде напред и за инт, 2345 01:56:32,380 --> 01:56:36,070 И добија нула, ја мање од 3, и плус плус. 2346 01:56:36,070 --> 01:56:39,770 Идем да не принтф, која је вероватно за имплементацију низак ниво 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 Ти ћеш морати да преузме инпут-- тако не празнина, али Инт и сада. 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 Заиста, не знам На моменат како принтф спроводи. 2418 01:59:45,620 --> 01:59:47,980 >> Ја не знам у овом тренутку како добити ниска, или се инт, или да плива 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 Један је инт. 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 И овде, ја ћу рећи, Ацхоо, а затим н пута, полу-дебелог црева. 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 Па ћу рећи, рецимо Стринг с, инт, полу-дебелог црева. 2475 02:02:18,990 --> 02:02:22,010 Па сам преко-конструисао ђавола из овог програма. 2476 02:02:22,010 --> 02:02:23,760 >> И то не мора да значи да је ово 2477 02:02:23,760 --> 02:02:26,343 шта треба да урадите приликом писања чак и најједноставнији програма. 2478 02:02:26,343 --> 02:02:29,280 Узети нешто што је очигледно веома једноставан, заиста кратко, 2479 02:02:29,280 --> 02:02:31,800 и поновно имплементира користећи превише код. 2480 02:02:31,800 --> 02:02:34,560 Али ћете заиста видети, и у Време осврнем на овим примерима, 2481 02:02:34,560 --> 02:02:38,610 и схватити, о, то су кораци узели смо у ствари генерализовати, 2482 02:02:38,610 --> 02:02:40,797 фактору нешто, све док на крају дана 2483 02:02:40,797 --> 02:02:42,380 мој код је заправо прилично разумно. 2484 02:02:42,380 --> 02:02:45,960 Јер ако желим да кашљем три а онда кијам три пута, 2485 02:02:45,960 --> 02:02:50,420 Једноставно ћу поново покренути ово, Програм се кашаљ, и покрените кашаљ. 2486 02:02:50,420 --> 02:02:53,620 И ја имам три кашља и три кија. 2487 02:02:53,620 --> 02:02:55,990 >> И то је основни парадигма, ако хоћете, 2488 02:02:55,990 --> 02:03:00,110 колико бисмо могли ићи у вези заправо спроводи програм. 2489 02:03:00,110 --> 02:03:03,220 Али хајде да видимо шта је то смо радили све ово време, 2490 02:03:03,220 --> 02:03:06,940 а шта неки од коначних комада стоје иза овог једноставном командом. 2491 02:03:06,940 --> 02:03:09,620 На крају дана, имамо био користећи цланг као наш преводилац. 2492 02:03:09,620 --> 02:03:11,494 Ми смо писали извор код, то претварање 2493 02:03:11,494 --> 02:03:12,820 преко цланг у машински код. 2494 02:03:12,820 --> 02:03:15,540 >> И смо користили Маке само да олакша наше типке тако 2495 02:03:15,540 --> 02:03:20,740 да не морамо да се сетим те бајалице од самог цланг. 2496 02:03:20,740 --> 02:03:22,640 Али оно што је Маке заправо ради? 2497 02:03:22,640 --> 02:03:24,750 И, заузврат, што је Цланг заправо ради? 2498 02:03:24,750 --> 02:03:28,790 >> Испоставило се да, иако смо поједностављени данашњи разговор речима, 2499 02:03:28,790 --> 02:03:33,090 узмете изворног кода, проћи га као улаз у компајлер, који вам даје 2500 02:03:33,090 --> 02:03:35,750 излаз машине код, Испоставило се да постоји 2501 02:03:35,750 --> 02:03:37,420 неколико различитих корака унутра. 2502 02:03:37,420 --> 02:03:41,940 И састављање деси да буде кишобран термин за гомила корака. 2503 02:03:41,940 --> 02:03:43,970 Али хајде да задиркују ово стварно брзо. 2504 02:03:43,970 --> 02:03:48,070 >> Испоставило се да смо радили више ствари сваки пут кад покренем програм, 2505 02:03:48,070 --> 02:03:50,990 или сваки пут кад састави програм данас. 2506 02:03:50,990 --> 02:03:55,020 Тако Препроцесирање се односи на Ово-- ништа у Ц програму, 2507 02:03:55,020 --> 02:03:58,720 као што ћемо опет и опет, који почиње са овим хасх симболом, 2508 02:03:58,720 --> 02:04:03,320 или хаштагот симбол овде, значи то је директива препроцессор. 2509 02:04:03,320 --> 02:04:07,330 То значи, у овом случају, хеј компјутер, уради нешто са овом фајлу 2510 02:04:07,330 --> 02:04:09,430 пре него што заправо саставити свој код. 2511 02:04:09,430 --> 02:04:15,220 >> У овом случају, хасх укључују јест, у суштини, Ц начин да каже, 2512 02:04:15,220 --> 02:04:19,325 хеј рачунар, иди садржај од ЦС50.х и налепите их овде. 2513 02:04:19,325 --> 02:04:22,170 Хеј рачунар, ићи добити Садржај стандардног ио.х, 2514 02:04:22,170 --> 02:04:24,690 где год да је на хард диск, налепите га овде. 2515 02:04:24,690 --> 02:04:27,390 Тако те ствари Први током предпроцесирања. 2516 02:04:27,390 --> 02:04:28,880 >> И кланг ли све ово за нас. 2517 02:04:28,880 --> 02:04:30,510 И то ради тако проклето брзо, нећеш ни 2518 02:04:30,510 --> 02:04:32,000 видети четири различите ствари које се дешавају. 2519 02:04:32,000 --> 02:04:34,100 Али то је први такав корак. 2520 02:04:34,100 --> 02:04:35,560 >> Шта се заправо дешава следеће? 2521 02:04:35,560 --> 02:04:38,320 Па, следећи званични корак је састављање. 2522 02:04:38,320 --> 02:04:40,385 И испоставило се да састављање програма 2523 02:04:40,385 --> 02:04:44,060 техницки знаци иде од изворни код, ствари имамо 2524 02:04:44,060 --> 02:04:47,890 писали данас, нешто зове скупштина код, нешто 2525 02:04:47,890 --> 02:04:49,260 да изгледа мало другачије. 2526 02:04:49,260 --> 02:04:51,050 >> И, у ствари, можемо то брзо видети. 2527 02:04:51,050 --> 02:04:53,890 Пусти ме заправо иде у моју ИДЕ. 2528 02:04:53,890 --> 02:04:58,050 Пусти ме напред и отворен хелло.ц, који је веома први програм са којим 2529 02:04:58,050 --> 02:04:59,120 почела је данас. 2530 02:04:59,120 --> 02:05:04,130 И пусти ме напред и покренути цланг А мало другачије, кланг-а, хелло.ц, 2531 02:05:04,130 --> 02:05:07,720 који се заправо догађа на дај ми још датотека хелло.с. 2532 02:05:07,720 --> 02:05:10,330 >> И онда ћемо вероватно никада поново видети ову врсту кода. 2533 02:05:10,330 --> 02:05:13,030 Ако узмете нижи ниво системи класа као ЦС61, 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 Ово је асемблер к86 да процесор који је у основи 2537 02:05:22,050 --> 02:05:24,460 ЦС50 САТА заправо разуме. 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 Суб К, ово је одузимање. 2541 02:05:30,790 --> 02:05:31,660 Има покрета. 2542 02:05:31,660 --> 02:05:35,730 >> Има зове функција овде, х оринг, покрет, додатак, поп, 2543 02:05:35,730 --> 02:05:36,430 повратак. 2544 02:05:36,430 --> 02:05:38,850 Дакле, постоји нека веома инструкције ниског нивоа 2545 02:05:38,850 --> 02:05:41,280 да процесори разумеју да алудирао сам раније. 2546 02:05:41,280 --> 02:05:43,100 То је оно што Интел Инсиде. 2547 02:05:43,100 --> 02:05:45,030 >> Постоје обрасци нуле и јединице које 2548 02:05:45,030 --> 02:05:51,800 мап овима арцанели формулисана, али нешто добро по имену, упутства, 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 машине цоде-- нуле и јединице, а не Текст који смо управо видели пре неколико тренутака. 2554 02:06:09,080 --> 02:06:13,370 >> Дакле, претходна обрада то финд и заменити, и неколико других ствари. 2555 02:06:13,370 --> 02:06:16,430 Састављање узима свој извор код из Ц, изворни код 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 И повезивање је последњи корак што се дешава за нас-- опет, 2560 02:06:27,630 --> 02:06:29,830 тако брзо да ни не нотице-- да каже, 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 да је особље ЦС50 написао у библиотеци ЦС50. 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 пре за принтф. 2568 02:06:47,470 --> 02:06:49,880 И додати су Инто тхе Цела ствар, тако да имамо 2569 02:06:49,880 --> 02:06:52,870 Имам своје нула и јединица, Тхе нуле и јединице ЦС50 особља, 2570 02:06:52,870 --> 02:06:55,370 принтф нуле и јединице, и све остало користимо. 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 И слично процесу постаје ЕЦ или ЦА је као, 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 и сада преведени на Ц. И ми ћемо почети 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 >> Ово је ЦС50. 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 >> [Крај репродукције]