1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> SPEAKER 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 Използвали сме ФОРМАТ която има страничен ефект от печат 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 може би вече са започнали да направи за Проблем Set One, макар 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 Вместо да продължат да правят ФОРМАТ Здравей,% S, не би ли било хубаво, ако 28 00:01:29,010 --> 00:01:33,380 имаше само функция, наречена не ФОРМАТ но печат име? 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 Първо, аз ще кажа ФОРМАТ си име, като по този начин накара потребителя да 32 00:01:42,070 --> 00:01:46,150 дайте ми името му, и тогава аз съм ще използва познатите 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 Не би ли било хубаво, вместо да правиш ФОРМАТ Здравейте,% 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 Тогава не би трябвало да се тревожи за ФОРМАТ какво е, какво% 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 Scratch можете да дефинира специални блокове, така че в 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 И тъй като съм заявил, че функцията до он-лайн четири преди основните, 82 00:04:12,805 --> 00:04:16,579 това ще научи компилатор това, което цитирам, край на цитата ", печат име" 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 писмено в клас, ФОРМАТ % 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 S? 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 >> S съществува само между това, което две фигурни скоби, разбира се? 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 David. 108 00:05:38,060 --> 00:05:39,270 И здравей David. 109 00:05:39,270 --> 00:05:41,820 Така че не е чак толкова вълнуващо, но просто мисля сега. 110 00:05:41,820 --> 00:05:44,310 Сега имате същата съставка както направихме в Scratch да 111 00:05:44,310 --> 00:05:45,420 направим собствени функции. 112 00:05:45,420 --> 00:05:46,770 >> Но там е малко на нещо, за което. 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 В Scratch не съществува понятието на място във вашия скрипт. 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 Main ще се обадя името печат върху Онлайн осем, но за съжаление, 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 И плюс, можете да получите в странен ъгъл случаите, в които, ако х иска да се обадя 145 00:07:23,290 --> 00:07:27,530 Y, но Y може да се нарече х, просто физически не може действително да сложа една 146 00:07:27,530 --> 00:07:28,540 над друго. 147 00:07:28,540 --> 00:07:31,230 >> Но се оказва, в ° С, може да се решаването на този много просто. 148 00:07:31,230 --> 00:07:34,010 Отивам да се сложи малко пространство тук, а аз съм просто ще 149 00:07:34,010 --> 00:07:38,170 изпреварващо, макар и не навсякъде излишно, ще се научи 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 Не би ли било хубаво, ако имаше функция, наречена получите положителен Int 177 00:09:10,780 --> 00:09:13,610 че бих могъл да изнесе тази парче функционалност? 178 00:09:13,610 --> 00:09:16,480 Така че разликата тук е, ние ще прилагане получите положителен Int, но за разлика от 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 се положително Int е, разбира се, ще се върне, да се надяваме, положително вътр. 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 И сега тук, аз отивам да се продължи напред и нека да кажем, вътр, го наричат ​​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 да вървим напред и да кажа ФОРМАТ, благодаря за% I / п ", п. 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 Искам да кажа, в идеалния случай, той ще се върне нещо като положителна Int, но това 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 Но можем да се върнем едно цяло число и просто вярвам, че той ще бъде положителен. 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 ФОРМАТ прави - тя трябва да има някакъв вход премина в него - и печат име 218 00:11:06,430 --> 00:11:09,020 нужда от входа, но се положително Int не. 219 00:11:09,020 --> 00:11:11,530 Така че аз ще изрично кажете празнотата компилатор. 220 00:11:11,530 --> 00:11:13,470 Void е липсата на нещо друго. 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 Така че сега аз отивам да дублират това, получите положителен Int нищожен, но аз не съм 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 н равнява получите 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 Е, п не е равно на положителна, но това е само псевдо-код. 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 Аз трябва да декларират п извън на цикъла. 255 00:12:39,640 --> 00:12:44,180 Така че аз трябва да се сложи п тук, а аз не искам отново да го обяви тук 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 Control просто означава към поръчката на операции в една програма. 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 Така че се положително Int, и малко объркващо с това, че добре, 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 има положителен Int вътре на променлива наречена п. 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 Върни п запетая. 283 00:13:59,320 --> 00:14:04,090 >> Така че просто като Colton връща парче хартия с отговор за мен от отпадане 284 00:14:04,090 --> 00:14:07,020 това парче хартия в малка черна кутията на масата, да направите това 285 00:14:07,020 --> 00:14:10,100 код, вие буквално пише, върнете N, и това е така, сякаш бяха Colton 286 00:14:10,100 --> 00:14:12,140 ми подаде нещо физическо обратно. 287 00:14:12,140 --> 00:14:15,870 В този случай, това, което се случва е, да положително Int ще върне 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 Това се озовава в тази променлива, п, и След това се пристъпва с линия девет. 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 Line седем е само на фигурна скоба. 301 00:14:54,990 --> 00:14:59,540 Line осем казва в ляво, даде ми 32 бита за цяло число, го наричат ​​п. 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 My курсора сега слиза тук, защото сега се изпълнява положителна Int. 305 00:15:11,720 --> 00:15:13,100 Int н е обявена. 306 00:15:13,100 --> 00:15:14,040 Направете следното. 307 00:15:14,040 --> 00:15:16,090 ФОРМАТ ми дава положително число. 308 00:15:16,090 --> 00:15:19,740 >> Вземете едно цяло число от страна на потребителя, да я съхранява в 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 Nine. 314 00:15:35,070 --> 00:15:39,010 Control, така да се каже, се връща да се подредят девет. 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 когато сме използвали функции като ФОРМАТ или дори да получите низ, че някой друг 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 връща Int, но от същия 340 00:16:35,420 --> 00:16:39,660 логика, то сега е логично, че в линия шест, аз казвам, че основните връща 341 00:16:39,660 --> 00:16:44,040 едно цяло число, но това, което никога не сме имаше в някой от нашите програми? 342 00:16:44,040 --> 00:16:46,470 Ние никога не сме имали споменаване на тази ключова дума връщане. 343 00:16:46,470 --> 00:16:49,970 >> Така се оказва, че в ° С, най-малко версия на това, че ние използваме 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 18:00 този петък. 384 00:18:45,030 --> 00:18:47,990 Space е, както винаги, ограничен, но ще продължи да прави това на почти 385 00:18:47,990 --> 00:18:51,420 седмична база, ако пространството изтече тази седмица. 386 00:18:51,420 --> 00:18:56,160 >> Така че Катерачът, че бяхме стигнали на Понеделник е, че струните може действително 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, R-A-M, Random Access 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 >> Така че днешния разговор наистина се отнася на оперативната памет, този тип памет, която 422 00:20:32,400 --> 00:20:35,270 съществува само докато има власт който се подава в компютъра си. 423 00:20:35,270 --> 00:20:40,530 Така че, когато напишете H-E-L-L-O, Enter за клавиатурата, Н става в една 424 00:20:40,530 --> 00:20:44,550 байт на RAM, на E върви в друг байт 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 низ дължината на S. 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 така че можем да използваме ФОРМАТ. 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 Str Ленг. 438 00:21:19,090 --> 00:21:21,470 Хората решили преди години, нека просто да бъде кратък. 439 00:21:21,470 --> 00:21:24,290 Вместо да го нарече "низ дължина" нека го наречем "№ Ленг" и нека 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 знаеше C вече - 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-U-L-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 >> Така нула съм проверка за просто, така че, Казано накратко, ул. Ленг и 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 >> Така че, ако и не се равнява нещо лошо, Аз имам този за линия, а това е 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 И след това тук, аз бях отпечатване и скоба аз, но защо ли да използвам в% от всички 472 00:22:56,140 --> 00:23:00,770 внезапно вместо% и дори макар и е низ? 473 00:23:00,770 --> 00:23:02,110 Това е знак, нали? 474 00:23:02,110 --> 00:23:06,560 S е низ, но и скоба нещо, S скоба аз къде съм е нула 475 00:23:06,560 --> 00:23:10,380 или един или два, това е индивидуално знак в низ, и така за 476 00:23:10,380 --> 00:23:14,970 че ФОРМАТ трябва да бъде уведомен, че това е наистина един характер да се очаква. 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-E-L-L-O, 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 Straightforward, поне веднъж помня какво ул. Ленг е, но това е 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-E-L-L-O е винаги ще да бъде пет знака. 496 00:24:02,980 --> 00:24:05,490 Всеки път през този цикъл, на пет не се променя. 497 00:24:05,490 --> 00:24:08,750 Може и да съм аз увеличаване, но това, което е дължината и на всеки 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 Отивам да добавите запетая след моята първа променлива, аз. 507 00:24:34,580 --> 00:24:37,310 Отивам да се даде друг променлива, като го нарече N, само чрез 508 00:24:37,310 --> 00:24:41,330 Конвенцията за номера, и тогава аз съм ще присвоите п стойността на низ 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 Отивам да си сменя състояние да, докато е по-малко от п. 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 >> ФОРМАТ. 545 00:26:26,110 --> 00:26:27,860 >> ФОРМАТ, наред с други неща. 546 00:26:27,860 --> 00:26:31,540 cs50.h, която се вътр и да получите низ и така нататък, string.h, които 547 00:26:31,540 --> 00:26:32,570 имаше ул. Ленг. 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 Ако и аз скоба - така че ако аз-ти характер на лидер, който е специфичен 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 Е, аз мога да го направя малко по- загадъчно, но 575 00:27:55,010 --> 00:27:56,160 нека да дразни този апарт. 576 00:27:56,160 --> 00:28:00,210 >> Отивам да се обадя ФОРМАТ, отпечатва% в защото искам да препечатайте тази 577 00:28:00,210 --> 00:28:01,580 характер на екрана. 578 00:28:01,580 --> 00:28:06,650 Аз след това ще отнеме и скоба Аз, I-ия знак в S, а след това защо 579 00:28:06,650 --> 00:28:12,330 правя този малък трик тук, малки букви минус A столицата? 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 Така че, като казва, малки букви минус капитал A, че е странно да се 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, а това би било случаят с малки букви Б и капитала B 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 стандартната разлика, и че ефективно промени сек скоба и от 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 Съставител, OK. 608 00:29:18,470 --> 00:29:19,730 . / Капитализират. 609 00:29:19,730 --> 00:29:23,530 И нека да въведете в H-E-L-L-O с малки букви, 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 Какво ще кажете за D-A-V-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 Тя просто се извежда, че първият D непроменена направо, че друго построи. 616 00:29:40,250 --> 00:29:42,170 >> Така че имайте предвид, след това, а Няколко неща тук. 617 00:29:42,170 --> 00:29:45,060 One, ако някога искате да проверите два условия наведнъж, можете и да ги 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 И точно както в Scratch бихте могли да имат Булев, булеви стойности истина или 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-E-L-L-O, 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 Вместо това тук, нека да вървим напред и да кажа, замества% в. 655 00:31:36,430 --> 00:31:42,110 резултат на повикване тази функция, за да горната част на I-ия характер на лидер. 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 Н-Е-Л-Л-О. Нека да го стартирате отново, D-A-V-I-D. ОК, така че ние сме все още в 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 по-ясно, като в U-образна Scratch е блокове, това, което е вътре в бранша. 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 Man до горната. 690 00:33:17,830 --> 00:33:21,090 >> А сега забележи, ако съществува функционира вътрешността на компютъра, в 691 00:33:21,090 --> 00:33:23,970 този случай уреда, който е само на операционната система Linux, че ще 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 За горната преобразува писмо C в главни букви, ако е възможно. 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 Отивам да копирате моята ФОРМАТ изявление. 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 >> Така че това е достатъчно да се каже, един от най- храна за вкъщи е дори за своя проблем 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-E-L-L-O вътрешността на 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 низ S получава - 747 00:36:02,120 --> 00:36:02,960 да го направим. 748 00:36:02,960 --> 00:36:05,270 String име равнява получите низ. 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 тук като черна дъска, ако този черен правоъгълник представлява моя компютър 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 Честно казано, ако имате гигабайт 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 Така че с други думи, когато предприятието подтикне потребител с взимането да ми даде 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 >> Така че, ако аз тип в D-A-V-I-D за името ми, но припомни, че на втория ред на 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 Е, може би това ще отидат в H-A-R-V-A-R-D. Така че, макар да съм 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 Нека да всъщност превъртите назад във времето на няколко знака, и вместо Harvard 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, иначе известни като нулев байт дразнещо нарича N-U-L, не 792 00:38:19,470 --> 00:38:22,190 N-U-L-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 >> Така Harvard всъщност сега завършва като тази последователност от символи 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 Това не е просто вътр възрасти. 835 00:40:27,140 --> 00:40:30,130 Има тези квадратни скоби, вътрешността на който е п. 836 00:40:30,130 --> 00:40:35,150 >> Така че скобата п в този контекст не вътрешността на ФОРМАТ изявление тук, но 837 00:40:35,150 --> 00:40:44,370 в този единствен ред 27, тази линия е казва, дай ми п цели числа, всяко от които 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, когато му дойде времето. 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 Така че веднага след като получите масив, I обхождане от г равна на нула на до п. 861 00:41:54,920 --> 00:41:58,890 Аз просто имам този поучителен ФОРМАТ съобщение просто казвам, дай ми възраст 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 променлива аз. 875 00:42:36,500 --> 00:42:38,390 Това е сега% и за вътр. 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 Това, което ще се прави с нашата следваща Проблем Set Двама се впускал в 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 Те дейонизирана по някакъв начин или променени по някакъв начин, така че - Извинете. 901 00:43:56,365 --> 00:43:59,040 Това е забавно спойлер за следващия път. 902 00:43:59,040 --> 00:44:04,390 >> Така че може да се изобразят това, което е очевидно O да забележи, че B. линии до 903 00:44:04,390 --> 00:44:05,420 капитализация-мъдър. 904 00:44:05,420 --> 00:44:07,960 Очевидно R става д. 905 00:44:07,960 --> 00:44:14,000 Очевидно F-H-E-R става S-U-R-E. Така Оказва се, че има картиране, и по- 906 00:44:14,000 --> 00:44:18,720 този случай има доста глупаво картографиране, ако някой е разбрал? 907 00:44:18,720 --> 00:44:21,440 Това е нещо, наречено Rot 13, Завъртане 13. 908 00:44:21,440 --> 00:44:24,760 Това е най-тъпото на криптиране механизми, защото буквално 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 че шифрира писма надяваме по-сложно, отколкото просто добавяне на 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 >> Така че в проблем се определят две, сред нещата, ще направя, ако в Hacker 939 00:45:57,770 --> 00:46:01,860 Edition, ще трябва да пишат код, за да пляскане тези пароли, фигуриращ 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 В Standard Edition, ще се въведе Няколко шифри, криптиране 943 00:46:09,320 --> 00:46:12,400 механизми, викаха един Цезар, един нарича Vigenere, че все още са 944 00:46:12,400 --> 00:46:16,100 ротационни шифри, където А става нещо, B се превръща в нещо, но 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 Това, например, е малко по-сирак Тайна декодер Ани пръстен, а вие 950 00:46:32,910 --> 00:46:35,180 всъщност може да прилага тези правила ротационни шифри - 951 00:46:35,180 --> 00:46:37,930 А става нещо, B става нещо - с две колела, 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 И така, като Катерачът за днес, това, което мислех, че ще направите, е малко 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 педагогически съответната Christmas Story с малко човек на име Ралфи. 960 00:47:13,493 --> 00:47:14,400 >> [VIDEO PLAYBACK] 961 00:47:14,400 --> 00:47:17,420 >> -Да е известно на всички и разни, че Ralph Паркър се назначава за 962 00:47:17,420 --> 00:47:20,650 член на Little Orphan Annie тайна кръг и има право на всички 963 00:47:20,650 --> 00:47:23,460 почестите и ползи срещащи се към него. 964 00:47:23,460 --> 00:47:25,990 >> -Подписано, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Приподписан, Pierre Andre с мастило. 966 00:47:30,100 --> 00:47:34,270 Honors и обезщетения на възраст от девет. 967 00:47:34,270 --> 00:47:39,440 >> [Вика ON RADIO] 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 Сега е време за Secret Ани Съобщение за теб членове 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 Само членове на Secret Circle Ани могат да декодират тайното послание на Ани. 976 00:48:01,720 --> 00:48:05,872 Не забравяйте, че Ани е в зависимост от вас. 977 00:48:05,872 --> 00:48:08,670 Задайте вашите игли за B2. 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 >> -Pierre е бил в силен глас тази вечер. 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 Аха, B. отидох на следващия. 991 00:48:47,628 --> 00:48:53,060 E. Първата дума е "да". S. Той идва по-лесно сега. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 Това е R. 994 00:48:55,940 --> 00:48:56,900 >> -Хайде, Ралфи. 995 00:48:56,900 --> 00:48:57,860 Трябва да тръгвам. 996 00:48:57,860 --> 00:48:59,780 >> -Ще идвам, мамо. 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 >> -T. O. Не забравяйте да. 1000 00:49:08,220 --> 00:49:09,500 Уверете се, че какво? 1001 00:49:09,500 --> 00:49:11,660 Какво беше Little Orphan Ани се опитвам да кажа? 1002 00:49:11,660 --> 00:49:12,844 Уверете се, че какво? 1003 00:49:12,844 --> 00:49:14,732 >> -Ралфи, Ранди е да тръгваме. 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 >> -I е все по-близо до момента. 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 >> -Ралфи, Ранди трябва да тръгвам. 1012 00:49:28,985 --> 00:49:32,680 >> -Ще идвам за плаче на глас. 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 A кофти търговски? 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 >> [END възпроизвеждане на видео] 1026 00:50:01,900 --> 00:50:04,260 >> SPEAKER 1: Това е CS50, и че ще бъде проблем Set Two. 1027 00:50:04,260 --> 00:50:06,305 Ще се видим следващата седмица. 1028 00:50:06,305 --> 00:50:08,800 >> SPEAKER 2: На следващото CS50, това се случи. 1029 00:50:08,800 --> 00:50:11,060 >> SPEAKER 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