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 Мы выкарыстоўвалі Е, які мае Пабочны эфект друку 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 І цяпер я збіраюся ісці наперад і аб'явіць Інтэрнэшнл, асноўным, несапраўднымі. 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 дайце мне яго ці яе імя, а затым я збіраецца выкарыстоўваць знаёмыя з радок 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 Тады б мне не прыйдзецца турбавацца аб што Е ёсць, якой% з і ўсё 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 Драпіны можна вызначыць прыстасаваныя блокі, так што У З і найбольш любой мове, ці не так 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 гэтак жа, як атрымаць або дзесятковага атрымаць радок сама па сабе. 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 Давіда. 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 >> Але ёсць трохі Гоча. 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 і я хацеў бы атрымаць крычаў на для атрымліваю радок або атрымаць Int. 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 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 прэвентыўна, хоць і некалькі залішне, навучу 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 Так шчыра, што гэта глупства, гэта раздражняе, але гэта шлях С, і гэта 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 Але я павінен быў выкарыстоўваць дзесятковага атрымаць апошні раз. 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 Пазітыўны Між атрымаць, вядома, збіраюся вярнуцца, мы спадзяемся, станоўча 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 Тап_п несапраўднымі. 185 00:09:33,520 --> 00:09:42,160 І цяпер тут, я збіраюся ісці наперад і скажам, Інтэлект, называюць яго N, роўная 186 00:09:42,160 --> 00:09:44,270 атрымаць станоўчыя Int. 187 00:09:44,270 --> 00:09:49,080 І гэтак жа, як атрымаць дзесятковага ўжо існуе таму што супрацоўнікі яе напісаў, я збіраюся 188 00:09:49,080 --> 00:09:53,950 выкажам здагадку на хвіліну, што атрымаць Пазітыўны Між існуе, і цяпер я збіраюся 189 00:09:53,950 --> 00:09:57,730 ісці наперад і сказаў Е, дзякуй за% I / N ", 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 І зноў жа, невідавочнае аб'яву функцыі, атрымаць станоўчыя Int. 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 станоўчыя Int. 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 Такім чынам, што трэба атрымаць станоўчыя дзесятковага наўзамен? 205 00:10:37,420 --> 00:10:37,970 >> Так Int. 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 Але мы можам вярнуцца цэлалікавых і проста давяраць, што яна будзе станоўчай. 211 00:10:50,360 --> 00:10:52,690 Гэта будзе называцца атрымаць станоўчыя Int. 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 Атрымаць радок не, атрымаць дзесятковага няма. 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 роўна атрымаць Інтэлект, Ніякія довады на яго. 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 Я павінен аб'явіць па-за N цыклу. 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 Упраўленне азначае толькі парадку аперацый у праграме. 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 біта для цэлага, назавем яго п. 302 00:14:59,540 --> 00:15:02,160 З правага боку, гэта кажучы атрымаць станоўчыя Int. 303 00:15:02,160 --> 00:15:07,120 Зараз давайце спынімся гэтую гісторыю, таму што цяпер Я не трымаю перамяшчэнні майго курсора ўніз. 304 00:15:07,120 --> 00:15:11,720 Мой курсор цяпер ідзе сюды, таму што зараз атрымаць Пазітыўны Між выконвае. 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 >> Атрымаць цэлалікавай ад карыстальніка, захоўваеце яго ў 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 Інтэлект, я ўдарыў лініі 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 калі мы выкарыстоўвалі функцыі, такія як Е або нават атрымаць радок, што хтосьці іншы 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, я кажу, атрымаць Пазітыўны Між вяртае цэлае, але да таго ж 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 >> Вось і атрымліваецца, што ў 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 >> І калі вы зараз думаеце аб сваім уласным ПК ці 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 6: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 >> Так захапляльным, што мы спыніліся на Панядзелак было тое, што радкі могуць на самай справе 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, адвольны доступ 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 ў аператыўнай памяці знікае, калі вы страцілі ўлада у цэлым, таму што гэта не 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 І ўверх аператыўнай памяці, што нашмат значна, значна хутчэй, чым жорсткія дыскі 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 Такім чынам, калі вы ўводзіце ў Н-Е-Л-Л-О, Enter на клавіятуры, H адбываецца ў адным 424 00:20:40,530 --> 00:20:44,550 байт аператыўнай памяці, E збіраецца ў іншы байт аператыўнай памяці, як гэта 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 таму мы можам выкарыстоўваць Е. 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 Ленг вул. 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 Вы ведалі, З, ужо - 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 адсутнасць радок, калі вы перадаеце іх нікчэмнымі, кампутар ці праграма 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 У мяне ёсць цыкл ітэрацыі ад нуля да даўжыні з. 471 00:22:51,580 --> 00:22:56,140 А потым вось, я была раздрукоўка з Кранштэйн я, але чаму я выкарыстоўваю C% усіх 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 з'яўляецца радком, але што-то з кранштэйнам, з кранштэйнам я, дзе я роўная нуля 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 Дазвольце мне ўвесці Н-Е-Л-Л-О, ўводу і больш за тое, я разумею, па адным на радок. 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 Просты, па меншай меры, як толькі вы памятаеце, што Ленг вул ёсць, але гэта 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 Гэта праверка на даўжыню з кожны раз, нават пры тым, 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 Я збіраюся змяніць свой стан у той час як я менш N. 512 00:24:51,960 --> 00:24:55,700 >> Так што цяпер, колькі разоў я праверка даўжыні з? 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 праверкі арфаграфіі, якая была распрацавана для падтрымкі слоўнік 150000 плюс 525 00:25:31,380 --> 00:25:32,860 Словы, якія мы даем вам, хлопцы. 526 00:25:32,860 --> 00:25:37,100 Вы павінны былі б напісаць код, які загружае гэтыя словы ў памяці, так што ў 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 студэнтаў, якія выкарыстоўваюць менш памяці і менш час, памяншаецца загрузка працэсара, у канчатковым выніку 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, які атрымліваюць дзесятковага і атрымаць радок і гэтак далей, 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 і той жа характар, з кранштэйнам I, з'яўляецца менш або роўна ў ніжні рэгістр Z, 571 00:27:46,810 --> 00:27:50,600 , Што азначае, што ён ці B або C або кропка, кропка, кропка, або 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 >> Я буду называць Е, друкуе% C таму што я хачу, каб перадрукаваць гэтую 577 00:28:00,210 --> 00:28:01,580 сімвала на экране. 578 00:28:01,580 --> 00:28:06,650 Я тады збіраюся ўзяць з кранштэйнам I, 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 на капітальны А. Мне не вельмі памятаеце, што ніжні рэгістр ёсць, 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 >> Так ніжні рэгістр вылікам капітальных з'яўляецца збіраецца даць мне розніцу. 593 00:28:41,710 --> 00:28:45,370 Гэта, аказваецца, 32, і гэта было б у выпадку малымі B і 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 І дазвольце мне ўвесці Н-Е-Л-Л-О у ніжнім рэгістры, 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 - 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 Адзін з іх, калі вы хочаце праверыць два ўмовы адразу, вы можаце і іх 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 для C тыпу, а цяпер адпусьціў мяне сюды і 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 І гэтак жа, як і ў нуля, вы маглі б Лагічныя, лагічныя значэння ісціна або 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-О, 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-ы сімвал с. 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-E-L-L-высновы. Давайце запусцім яго зноў, 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 больш ясным, як для 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 Чалавек у верхні. 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 >> Звярніце ўвагу, што пад Synopsis, даведачную старонку вучыць мяне, што ў мяне ёсць файл 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 Што такое C? 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 каб на верхні і ніжні проста адвольна будзе называцца C. 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 ўнутры аператыўнай памяці, і выкажам здагадку, 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 тут, як дошка, калі гэта чорны прастакутнік ўяўляе майго кампутара 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 Шчыра кажучы, калі ў вас ёсць гігабайт аператыўнай памяці у гэтыя дні, у вас ёсць мільярд байт 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 Калі карыстальнік ўвядзе ў "прывітанне", які заканчваецца у H-E-L-L-высновы. Але выкажам здагадку, што 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 - 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 аператыўнай памяці кампутара. 781 00:37:42,710 --> 00:37:46,560 Там праблема зараз, таму што цяпер, калі я выкарыстанне аператыўнай памяці ў гэтым вельмі разумна 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, інакш вядомай як нулявы сімвал раздражняльна званы 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 >> Так што на самой справе цяпер Гарвардскага заканчваецца як гэта паслядоўнасць сімвалаў 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 Між тым, цалкам можа будзе крыху больш аператыўнай памяці 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 Тады я выкарыстоўваю атрымаць дзесятковага і час, каб зрабіць рабіць гэта зноў і зноў і зноў. 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, гэтая лінія кажучы: дайце і мне цэлых N, кожны з якіх 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 Так што адразу пасля я атрымліваю масіў, я ітэрацыі ад Y роўна нулю на да н. 861 00:41:54,920 --> 00:41:58,890 Я проста гэтую павучальную Е паведамленне проста кажу, дайце мне ўзросце 862 00:41:58,890 --> 00:42:03,690 чалавек #% я, так што нумар адзін, нумар два, нумар тры. 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-га ўзросту, што ў зменнай тыпу Масіў збіраецца атрымаць Int. 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 Гэта цяпер я% для Int. 876 00:42:38,390 --> 00:42:43,210 І звярніце ўвагу, як першы запаўняльнік, я падключыце я плюс 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 Што мы будзем рабіць з нашым наступным Праблема будзе ўсталяваць два ўмешваюцца ў 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 заўважыць, што Б. выбудоўвае 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 Гэта не толькі кручэнне літары А У і В С. Гэта 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 >> Такім чынам, у праблеме ўсталяваць два, сярод рэчаў вы будзеце рабіць, калі ў хакерскай 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 У 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 фільм да млоснасці для 24 гадзін запар. 958 00:46:55,390 --> 00:47:06,030 Але на сённяшні дзень, я адкрыю яго тут і даць нам толькі дзве хвіліны 959 00:47:06,030 --> 00:47:13,493 педагагічна адпаведных Калядная гісторыя з маленькім чалавекам па імені Ральф. 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 Цяпер прыйшоў час таемных Эні Паведамленне для Вас членамі 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 Толькі сябры Таемнага круга Эні можа расшыфраваць сакрэтнае паведамленне Эні. 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 >> -П'ер быў у выдатнай сёння голас. 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 E. Першае слова "быць". С. Ён даносіўся прасцей. 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 Вось выдатна. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. О. Абавязкова. 1000 00:49:08,220 --> 00:49:09,500 Будзьце ўпэўненыя, да чаго? 1001 00:49:09,500 --> 00:49:11,660 Што было сіротка Эні спрабуе сказаць? 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 >> -Я ўсё бліжэй да зараз. 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 Вашывай камерцыйнай? 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