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