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