1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> Ræðumaður 1: Allt í lagi. 3 00:00:13,650 --> 00:00:14,390 Velkominn aftur. 4 00:00:14,390 --> 00:00:19,260 Þetta er viku tvö af CS50, og við höfum hingað til verið að nota virka en 5 00:00:19,260 --> 00:00:20,830 mestu tekið sem sjálfsögðum hlut. 6 00:00:20,830 --> 00:00:23,430 Við höfum notað printf sem hefur aukaverkun af prentun 7 00:00:23,430 --> 00:00:24,110 hluti á skjánum. 8 00:00:24,110 --> 00:00:25,790 Við höfum notað fá-int, fá fljóta. 9 00:00:25,790 --> 00:00:29,230 >> En hvað ef þú vilt í raun og veru að búa eigin starfsemi, eins og sumir af 10 00:00:29,230 --> 00:00:31,740 þú gætir hafa þegar byrjað að gert fyrir Set Vandamál einn, þó 11 00:00:31,740 --> 00:00:33,140 ekki nauðsynlegt? 12 00:00:33,140 --> 00:00:37,150 Jæja, við skulum fara á undan og endurskoðun sem vandamál bara að biðja notandann um 13 00:00:37,150 --> 00:00:40,660 nafn þeirra og prentun eitthvað á skjár, en reyna að þáttur út sumir 14 00:00:40,660 --> 00:00:44,000 af commonality sem við höfum séð í númerið okkar svona langt. 15 00:00:44,000 --> 00:00:45,120 Svo eftir að ég meina eftirfarandi. 16 00:00:45,120 --> 00:00:47,315 >> Ég ætla að fara á undan og búa a nýr program, bara hringja 17 00:00:47,315 --> 00:00:49,320 það hello.c eins og venjulega. 18 00:00:49,320 --> 00:00:53,730 Ég ætla að fara á undan og gefa mér eru staðlaðar io.h efst. 19 00:00:53,730 --> 00:00:57,040 Ég ætla einnig að gefa mér preemptively að CS50 bókasafn svo að 20 00:00:57,040 --> 00:00:59,080 Ég fæ ekki öskraði á við þýðanda. 21 00:00:59,080 --> 00:01:02,400 Og nú ætla ég að fara á undan og lýsa int, MAIN, ógilt. 22 00:01:02,400 --> 00:01:09,020 >> Og svo hér, þetta er þar sem ég vil að byrja að útvista virkni til 23 00:01:09,020 --> 00:01:12,090 einhver önnur virkni sem ég sjálfur er að fara að skrifa en það þýðir ekki 24 00:01:12,090 --> 00:01:13,820 nú til. 25 00:01:13,820 --> 00:01:19,210 Til dæmis, gera ráð fyrir að ég vildi skrifa fall sem leyfir mér að 26 00:01:19,210 --> 00:01:23,830 prenta út halló, kommu, og þá nefna nokkrar notanda. 27 00:01:23,830 --> 00:01:29,010 Frekar en að halda áfram að gera printf halló,% s, myndi það ekki vera gott ef 28 00:01:29,010 --> 00:01:33,380 það voru bara fall sem kallast ekki printf en prenta nafn? 29 00:01:33,380 --> 00:01:36,600 >> Svo í öðrum orðum, ég vil vera fær um að skrifa forrit sem gerir lítið 30 00:01:36,600 --> 00:01:37,710 eitthvað eins og this. 31 00:01:37,710 --> 00:01:42,070 Fyrst ætla ég að segja printf þinn nafn, þannig vekur notandi til 32 00:01:42,070 --> 00:01:46,150 gefa mér nafn hans eða hennar, og þá er ég fara að nota kunnuglega s band við 33 00:01:46,150 --> 00:01:47,290 lýsa streng. 34 00:01:47,290 --> 00:01:50,420 Gefðu mér breytu af tegundinni String, kalla það s, og geyma í því að 35 00:01:50,420 --> 00:01:52,120 leiða af starf fá band. 36 00:01:52,120 --> 00:01:56,060 En nú í vikum áður, hefði ég nokkuð tediously gert halló,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> Og í öðrum orðum, við höfum séð þetta dæmi fullt af sinnum, og það er 39 00:02:02,570 --> 00:02:05,280 léttvæg dæmi vegna þess að það er bara ein lína af kóða svo það er í raun ekki 40 00:02:05,280 --> 00:02:06,860 svona að halda að skrifa aftur. 41 00:02:06,860 --> 00:02:09,990 En geri ráð fyrir að þessi lína af kóða reyndar voru að verða byrði, og 42 00:02:09,990 --> 00:02:12,900 það er ekki ein lína af kóða en það er 10 línur af kóða nokkrum vikum liðnum, 43 00:02:12,900 --> 00:02:15,190 og þú ert bara að fá þreyttur að afrita og líma eða 44 00:02:15,190 --> 00:02:17,180 retyping að sama kóða. 45 00:02:17,180 --> 00:02:22,100 Væri ekki gott í stað þess að gera printf halló,% s og svo framvegis, 46 00:02:22,100 --> 00:02:26,500 myndi það ekki vera gott ef það voru bara fall kallast prenta nafn sem 47 00:02:26,500 --> 00:02:27,560 tekur rifrildi - 48 00:02:27,560 --> 00:02:29,120 í öðrum orðum, það tekur inntak - 49 00:02:29,120 --> 00:02:30,620 og þá semíkommu. 50 00:02:30,620 --> 00:02:33,240 Svo að virka, myndi það ekki gott ef það hafi verið? 51 00:02:33,240 --> 00:02:36,690 Þá myndi ég ekki hafa áhyggjur hvað printf er, hvað% s og öllum 52 00:02:36,690 --> 00:02:39,400 þessar margbreytileika sem eru ekki allt sem áhugavert. 53 00:02:39,400 --> 00:02:40,570 Þau eru nytsamleg. 54 00:02:40,570 --> 00:02:44,700 >> Svo prenta nafn, því miður, var ekki fundið um 40 plús ár síðan. 55 00:02:44,700 --> 00:02:45,980 Enginn hélt að skrifa það. 56 00:02:45,980 --> 00:02:48,300 En það er fegurð að hafa forritunarmál, rétt eins og í 57 00:02:48,300 --> 00:02:52,930 Scratch þú getur skilgreint sérsniðna blokkir, svo í C og flest allir tungumál, getur þú 58 00:02:52,930 --> 00:02:57,260 skilgreina eigin virkni þína, getur að skilgreina eigin starfsemi. 59 00:02:57,260 --> 00:03:01,710 Svo jafnvel þótt við fáum helstu með sjálfkrafa fyrir frjáls, getum við lýsa 60 00:03:01,710 --> 00:03:02,730 eigin starfsemi okkar. 61 00:03:02,730 --> 00:03:05,670 >> Þannig að ég ætla að gera nokkurt svigrúm upp hér upp efst, og ég ætla að lýsa mínum 62 00:03:05,670 --> 00:03:08,210 eigin fall sem er að fara að líta svolítið skrítið í fyrstu en við munum koma 63 00:03:08,210 --> 00:03:09,400 aftur þetta fyrir löngu. 64 00:03:09,400 --> 00:03:12,310 Ég ætla að segja tóm, þannig sem gefur til kynna þessa aðgerð er 65 00:03:12,310 --> 00:03:16,040 eitthvað, hefur aukaverkun, en það ekki aftur eitthvað til mín í 66 00:03:16,040 --> 00:03:18,810 sama hátt og fá int eða fá band sjálft gerir. 67 00:03:18,810 --> 00:03:22,450 Og ég ætla að gefa þessa aðgerð er Nafn nafni prenta, og ég ætla að 68 00:03:22,450 --> 00:03:26,470 tilgreina að þessi strákur er að fara að taka a band, og ég ætla að kalla það 69 00:03:26,470 --> 00:03:27,600 String nafn. 70 00:03:27,600 --> 00:03:32,100 Ég gæti kalla það eitthvað sem ég vil, en ég vil kóða mína til að vera sjálf-heimildir. 71 00:03:32,100 --> 00:03:34,770 Með öðrum orðum, ef einn af þú varst að opna þessa skrá og lesa það, gastu 72 00:03:34,770 --> 00:03:39,020 konar álykta frá nafninu sem inntak hvaða hlutverki það er ætlast til að spila. 73 00:03:39,020 --> 00:03:42,270 >> Og nú fyrir neðan að, ég ætla að opna hrokkið Brace og lokuð hrokkið borsveif, 74 00:03:42,270 --> 00:03:47,140 og svo eftir ég hef fylgt sömu mynstur á línum fjórum í sjö og 75 00:03:47,140 --> 00:03:51,622 Ég hef verið eftir fyrir góðan viku auk nú á milli, segja, línur níu og 76 00:03:51,622 --> 00:03:53,400 14 sem skrifa aðal. 77 00:03:53,400 --> 00:03:56,160 Með öðrum orðum, prenta nafn er annar virka. 78 00:03:56,160 --> 00:03:58,990 Nú að þýðandinn er ekki að fara að vita að kalla þetta í sjálfkrafa 79 00:03:58,990 --> 00:04:02,670 vegna þess að ég bókstaflega bara fundið það, en það vilja vita samt að hringja helstu 80 00:04:02,670 --> 00:04:08,710 sjálfkrafa og þá að sjálfsögðu í lína 13, er ég kalla eigin virka minn. 81 00:04:08,710 --> 00:04:12,805 Og vegna þess að ég hef lýst því yfir að virka upp á línu fjögur áður Main, 82 00:04:12,805 --> 00:04:16,579 þetta er að fara að kenna þýðanda hvað vitna, Unquote, "prenta nafn" 83 00:04:16,579 --> 00:04:18,140 þýðir og hvað það ætti að gera. 84 00:04:18,140 --> 00:04:22,700 Þannig að ég er svona að gefa það nýja sérsniðna blokk í samhengi við, segja, grunni. 85 00:04:22,700 --> 00:04:27,240 >> Svo hér, get ég sett það mjög algengt eða endurteknar mynstur kóða ég halda 86 00:04:27,240 --> 00:04:32,300 skrifa í bekknum, printf % S halló,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 hvað ég vil setja hér? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Þannig að ég vil að setja nafn í þessu samhengi. 91 00:04:41,420 --> 00:04:43,440 Svo taka a hluti af a togstreita hér. 92 00:04:43,440 --> 00:04:47,680 Því ég er að lýsa yfir eigin virka minn og ég hef nokkuð geðþótta kallað 93 00:04:47,680 --> 00:04:50,880 það prentað nafn og vegna þess að ég hef tilgreint í sviga að þetta 94 00:04:50,880 --> 00:04:55,035 virka tekur eitt viðfang, gerð sem er band - svo er það orð 95 00:04:55,035 --> 00:05:00,010 eða setningu eða eitthvað svoleiðis - og Ég hringi að rök nafn, sem 96 00:05:00,010 --> 00:05:04,770 merkir aðeins breytu sem er í umfang, svo að segja, er nafn. 97 00:05:04,770 --> 00:05:07,780 >> S er aðeins á milli hvaða tveggja hrokkið axlabönd, auðvitað? 98 00:05:07,780 --> 00:05:12,990 Jæja í raun, rétt eins og línu 10 með 14, svo bara eins og á mánudaginn get ekki notað 99 00:05:12,990 --> 00:05:17,650 S, en það sem ég get gert er að fara S í nafni prenta. 100 00:05:17,650 --> 00:05:21,030 Prenta nafn bara gerist svo að gefa henni samnefni, samheiti, gælunafni 101 00:05:21,030 --> 00:05:24,400 kalla það nafn, og nú nota það í þessari línu. 102 00:05:24,400 --> 00:05:26,840 Svo nú láta mig spara þetta, súmma út. 103 00:05:26,840 --> 00:05:31,250 >> Leyfðu mér að fara á undan og gera halló. 104 00:05:31,250 --> 00:05:32,400 Lítur vel út. 105 00:05:32,400 --> 00:05:36,110 Fékk ekki spýta út einhverjar villur. . / Halló Enter. 106 00:05:36,110 --> 00:05:37,020 Hvað er nafn mitt? 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 Og halló Davíð. 109 00:05:39,270 --> 00:05:41,820 Svo ekki allt sem spennandi, en hugsa bara núna. 110 00:05:41,820 --> 00:05:44,310 Þú hefur nú að sama efnið eins og við gerðum í grunni til 111 00:05:44,310 --> 00:05:45,420 gera eigin störf okkar. 112 00:05:45,420 --> 00:05:46,770 >> En það er a hluti af a Gotcha. 113 00:05:46,770 --> 00:05:50,620 Segjum sem svo að ég hafði ekki raunverulega hugsun þetta í gegnum og ég reyndar án 114 00:05:50,620 --> 00:05:54,250 virkilega að hugsa um það skrifaði að virka hérna. 115 00:05:54,250 --> 00:05:55,420 Finnst fullkomlega sanngjarnt. 116 00:05:55,420 --> 00:05:58,440 In grunni það er ekkert hugmynd af stað í skriftum þínum. 117 00:05:58,440 --> 00:06:00,670 Þú gætir sett einn upp hér, upp einn hér, einn upp hér, og það gæti byrjað 118 00:06:00,670 --> 00:06:03,310 að líta smá sóðalegur ef þú ert ekki leggja það út snyrtilegur, en það er ekki 119 00:06:03,310 --> 00:06:05,910 máli hvar líkamlega forskriftir voru á skjánum. 120 00:06:05,910 --> 00:06:09,660 Því miður í C ​​- og þetta er ólíkt tungumál eins og Java og Python 121 00:06:09,660 --> 00:06:13,600 og aðrir sem þú might vera kunnuglegur með - miður í C, til þess er 122 00:06:13,600 --> 00:06:15,830 máli vegna þess að horfa á það sem er að fara að gerast núna. 123 00:06:15,830 --> 00:06:19,010 >> Sjálfgefið fall sem er að gerast til að framkvæma er, að sjálfsögðu, helstu. 124 00:06:19,010 --> 00:06:22,290 Main er að fara að hringja prenta nafn á lína átta, en því miður, the 125 00:06:22,290 --> 00:06:26,660 þýðandinn mun ekki einu sinni vita að prenta nafn til þangað til það fær á línu 11, 126 00:06:26,660 --> 00:06:28,520 sem er því miður að fara að vera of seint. 127 00:06:28,520 --> 00:06:30,660 Svo skulum gera það halló. 128 00:06:30,660 --> 00:06:32,950 Og nú fjandinn, tvær villur mynda. 129 00:06:32,950 --> 00:06:36,050 Svo nú langar mig að fletta upp í mjög fyrst, eins og við ættum alltaf að gera, og 130 00:06:36,050 --> 00:06:39,560 eftir því að það er æpa á mig, "Óbeina yfirlýsingu um virka 131 00:06:39,560 --> 00:06:40,540 prenta nafn. " 132 00:06:40,540 --> 00:06:43,860 >> Þannig að við höfum séð þessi skilaboð áður, óbeina yfirlýsingu um virka. 133 00:06:43,860 --> 00:06:48,080 Þegar höfum við séð svona villu? 134 00:06:48,080 --> 00:06:49,180 Þegar ég vissi ekki annars bókasafn. 135 00:06:49,180 --> 00:06:53,470 Ef ég gleymdi cs50.h og ég vildi fá öskraði á til að fá strenginn eða fá int. 136 00:06:53,470 --> 00:06:56,880 En í þessu tilfelli, þessi aðgerð prenta nafn er ekki á bókasafni, ekki satt? 137 00:06:56,880 --> 00:07:00,230 Það er bókstaflega í þessari skrá, svo hvað er raunverulega vandamálið? 138 00:07:00,230 --> 00:07:04,660 >> Jæja því miður í C, það tekur þig svo ótrúlega bókstaflega að ef þú 139 00:07:04,660 --> 00:07:08,640 vilja fall kallast prenta nafn til til, hefur þú annaðhvort að innleiða 140 00:07:08,640 --> 00:07:11,940 sem virka á the mjög toppur af þinn númer þannig að það er aðgengilegt að lækka 141 00:07:11,940 --> 00:07:15,070 aðgerðir, en hreinskilnislega, sem verður sloppy mjög fljótt. 142 00:07:15,070 --> 00:07:18,160 Persónulega, eins og ég að setja helstu fyrst því þá er það mjög skýrt hvað þetta 143 00:07:18,160 --> 00:07:19,890 program hjartarskinn við fyrstu sýn. 144 00:07:19,890 --> 00:07:23,290 Og plús, er hægt að fá í undarlegt horn tilvikum þar sem ef x vill hringja 145 00:07:23,290 --> 00:07:27,530 Y en Y kalla mætti ​​x, bara þú líkamlega getur ekki í raun að setja einn 146 00:07:27,530 --> 00:07:28,540 yfir öðrum. 147 00:07:28,540 --> 00:07:31,230 >> En það kemur í ljós í C, getum við leysa þetta mjög einfaldlega. 148 00:07:31,230 --> 00:07:34,010 Ég ætla að setja smá pláss upp hér, og ég ætla bara að fara að 149 00:07:34,010 --> 00:07:38,170 preemptively, að vísu nokkuð redundantly, fara að kenna 150 00:07:38,170 --> 00:07:42,320 þýðanda sem til er fall kallað prenta nafn tekur það band, 151 00:07:42,320 --> 00:07:46,330 og ég ætla að hringja það nafn semíkommu. 152 00:07:46,330 --> 00:07:50,220 >> Þannig að þetta nú í samræmi fjórum, sem við hef ekki séð áður, er yfirlýsing 153 00:07:50,220 --> 00:07:53,940 af prenta virka nafn, en það er bara loforð um að þessi aðgerð mun 154 00:07:53,940 --> 00:07:56,620 loksins verið skilgreind, loksins koma til framkvæmda. 155 00:07:56,620 --> 00:08:00,180 Þetta nú get ég fara ein því nú er þetta skilgreining er 156 00:08:00,180 --> 00:08:04,090 framkvæmd, eiginlega síðustu míla um framkvæmd þessa 157 00:08:04,090 --> 00:08:05,130 einkum virka. 158 00:08:05,130 --> 00:08:08,450 Svo satt það er heimskulegt, það er pirrandi, en þetta er leiðin C er, og það er 159 00:08:08,450 --> 00:08:12,050 því það tekur þig mjög bókstaflega og, eins og tölva satt ætti, 160 00:08:12,050 --> 00:08:16,020 eini hjartarskinn nákvæmlega hvað þú segir það að gera, og svo að panta er mikilvægt. 161 00:08:16,020 --> 00:08:18,940 >> Svo halda að í huga og aftur, byrja að taka fyrir endurkomu mynstrum. 162 00:08:18,940 --> 00:08:21,850 Stuðlar ert þú vilja, ef þú hefur ekki nú þegar, byrja að lenda í skilaboðum 163 00:08:21,850 --> 00:08:24,700 eins og þetta sem við fyrstu sýn virðast alveg dulinn, en ef þú byrjar 164 00:08:24,700 --> 00:08:29,000 að leita að þessum helstu orð eins og "Óbeina yfirlýsingu," nefna að 165 00:08:29,000 --> 00:08:32,380 virka í þessu tilviki - og hreinskilnislega, þú stundum jafnvel fá smá grænt 166 00:08:32,380 --> 00:08:35,010 Gulrót tákn sem segir þér hvar málið er líklega - 167 00:08:35,010 --> 00:08:40,980 þú getur byrjað að vinna þig í gegnum enn óséður villa skilaboð. 168 00:08:40,980 --> 00:08:45,860 Einhverjar spurningar um skrifa þína eigin virka á þennan hátt? 169 00:08:45,860 --> 00:08:47,540 >> Við skulum gera eitthvað sem er á aðeins meira sannfærandi. 170 00:08:47,540 --> 00:08:51,760 Frekar en bara að gera eitthvað sem hefur aukaverkun af prentun, láta mig fara 171 00:08:51,760 --> 00:08:55,340 undan og vista nýja skrá, og við munum kalla þetta positive.c, jafnvel þó að það er 172 00:08:55,340 --> 00:08:57,600 að fara að vera svolítið öðruvísi móti síðasta sinn. 173 00:08:57,600 --> 00:09:01,910 Og í þetta sinn, ég vil aftur koma positive.C dæmi síðasta skipti, en í henni 174 00:09:01,910 --> 00:09:04,430 er þvinga notendur til að gefa mig jákvæða heiltölu. 175 00:09:04,430 --> 00:09:07,280 En ég þurfti að nota fá int síðasta skipti. 176 00:09:07,280 --> 00:09:10,780 Myndi það ekki hafa verið gott ef það var fall kallast fá jákvæð int 177 00:09:10,780 --> 00:09:13,610 að ég gæti bara útvista þessu stykki af virkni til? 178 00:09:13,610 --> 00:09:16,480 Svo munurinn hér er að við munum innleiða fá jákvæða int, en ólíkt 179 00:09:16,480 --> 00:09:20,330 prenta nafn sem hafði aukaverkun - það ekki aftur eitthvað svona við mig 180 00:09:20,330 --> 00:09:21,710 tala eða strengur - 181 00:09:21,710 --> 00:09:25,510 fá jákvæð int er, að sjálfsögðu, að fara til aftur, vonandi, jákvæð int. 182 00:09:25,510 --> 00:09:26,170 >> Svo skulum gera þetta. 183 00:09:26,170 --> 00:09:30,840 Hafa cs50.h, Hafa staðall io.h. 184 00:09:30,840 --> 00:09:33,520 Int helstu tóm. 185 00:09:33,520 --> 00:09:42,160 Og nú hér, ég ætla að fara á undan og við skulum segja int, kalla það n, jafngildir 186 00:09:42,160 --> 00:09:44,270 fá jákvæða int. 187 00:09:44,270 --> 00:09:49,080 Og rétt eins og fá int þegar til vegna þess að starfsfólk skrifaði það, ég er að fara 188 00:09:49,080 --> 00:09:53,950 að gera ráð fyrir því augnabliki sem fá jákvæð int er til, og nú er ég að fara 189 00:09:53,950 --> 00:09:57,730 að fara á undan og segja printf, takk fyrir% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Svo nú ef ég safna saman þetta forrit, hvað er að fara að gerast í flugstöðinni minn 192 00:10:07,770 --> 00:10:09,075 gluggi neðst á skjánum? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Ég ætla að öllum líkindum fá að sama villa eins og áður. 195 00:10:13,900 --> 00:10:14,570 Svo skulum reyna þetta. 196 00:10:14,570 --> 00:10:16,450 Gera jákvætt. 197 00:10:16,450 --> 00:10:19,900 Og aftur, óbeina yfirlýsingu virkni, fá jákvæða int. 198 00:10:19,900 --> 00:10:21,970 Svo við getum leyst þetta í a par af leiðir. 199 00:10:21,970 --> 00:10:27,310 Ég ætla að halda þetta einfalt og bara setja yfirlýsingu mína hér og fá 200 00:10:27,310 --> 00:10:28,120 jákvæð int. 201 00:10:28,120 --> 00:10:29,720 Ég þarf svokallaða undirskrift. 202 00:10:29,720 --> 00:10:32,410 Undirskrift bara átt að fagurfræði í 203 00:10:32,410 --> 00:10:34,090 Fyrsta lína af the program. 204 00:10:34,090 --> 00:10:37,420 Svo hvað ætti að fá jákvætt int aftur? 205 00:10:37,420 --> 00:10:37,970 >> Svo int. 206 00:10:37,970 --> 00:10:41,540 Ég meina helst, myndi það skila eitthvað eins jákvæð int, en það 207 00:10:41,540 --> 00:10:42,160 er ekki til. 208 00:10:42,160 --> 00:10:45,280 Við höfum ekki séð að meðal okkar gögn tegundir, þannig að við verðum að takast á við 209 00:10:45,280 --> 00:10:47,170 staðreynd að við höfum mjög fáir gögn gerðir til að vinna með. 210 00:10:47,170 --> 00:10:50,360 En við getum skila int og bara treysti því að það verði jákvæð. 211 00:10:50,360 --> 00:10:52,690 Það er að fara að vera kölluð fá jákvæða int. 212 00:10:52,690 --> 00:10:55,122 >> Og nú hvernig um rök hennar? 213 00:10:55,122 --> 00:10:56,440 Tekur það allir inntak? 214 00:10:56,440 --> 00:10:58,280 Er það vantar einhverjar inntak? 215 00:10:58,280 --> 00:11:00,900 Svo það þarf ekki að vita í neinu fyrirfram. 216 00:11:00,900 --> 00:11:03,220 Fá strengur ekki, fá int ekki. 217 00:11:03,220 --> 00:11:06,430 Printf gerir - það þarf að hafa nokkur inntak fór inn í það - og prenta nafn 218 00:11:06,430 --> 00:11:09,020 þörf sumir inntak, en fá jákvæð int ekki. 219 00:11:09,020 --> 00:11:11,530 Þannig að ég ætla að skýrt segja þýðanda ógilt. 220 00:11:11,530 --> 00:11:13,470 Ógilt er skortur á neinu öðru. 221 00:11:13,470 --> 00:11:17,990 Svo ógilt þýðir ekkert að fara inn þessara sviga, semíkommu. 222 00:11:17,990 --> 00:11:20,840 >> Og nú neðst á minn skrá - og aftur, ég er bara að vera svona anal 223 00:11:20,840 --> 00:11:23,640 hér að setja helstu efst, sem er gott vegna þess að þennan hátt, 224 00:11:23,640 --> 00:11:26,220 hvenær þú eða einhver annar opnar skrá, á 225 00:11:26,220 --> 00:11:27,400 virkni er rétt þar. 226 00:11:27,400 --> 00:11:29,660 Þú getur kafa í frá ferningur einn. 227 00:11:29,660 --> 00:11:34,190 Svo nú er ég að fara að afrita þetta, fá jákvæð int tóm, en ég er ekki 228 00:11:34,190 --> 00:11:35,430 fara að lemja semíkommu núna. 229 00:11:35,430 --> 00:11:38,280 Ég ætla að opna hrokkið axlabönd, og nú þarf ég að taka lán 230 00:11:38,280 --> 00:11:39,700 nokkrar hugmyndir frá mánudag. 231 00:11:39,700 --> 00:11:44,450 >> Svo eins og þú manst, við fengum eitthvað eins gera eftirfarandi meðan 232 00:11:44,450 --> 00:11:45,830 eitthvað var satt. 233 00:11:45,830 --> 00:11:46,630 Og hvað gerði ég? 234 00:11:46,630 --> 00:11:51,540 Ég gerði eitthvað eins gefa mér jákvæð heiltala, 235 00:11:51,540 --> 00:11:52,430 lítill hluti af a hvetja. 236 00:11:52,430 --> 00:11:53,540 Ég gæti notað hvaða orð sem ég vil. 237 00:11:53,540 --> 00:11:54,960 Og þá er ég nota hvað? 238 00:11:54,960 --> 00:11:59,530 Int n jafngildir fá int, engin rök til þess. 239 00:11:59,530 --> 00:12:00,550 >> Og taka mismuninn. 240 00:12:00,550 --> 00:12:04,680 Þegar þú hringja í aðgerð, þegar þú notar fall, ekki þú setja í tómi. 241 00:12:04,680 --> 00:12:08,570 Þú bara að þegar lýsa á virka, kenna þýðanda hvað 242 00:12:08,570 --> 00:12:09,780 það ætti að búast. 243 00:12:09,780 --> 00:12:11,650 Svo þú þarft ekki að setja ógilt þar sjálfur. 244 00:12:11,650 --> 00:12:12,940 >> Og nú hvað var ástand mitt? 245 00:12:12,940 --> 00:12:19,670 Jæja, n er ekki jafn jákvæð, en það er bara gervi-kóða. 246 00:12:19,670 --> 00:12:22,530 Svo hvernig gera tjá ég þetta meira hreinlegur? 247 00:12:22,530 --> 00:12:24,090 Sem minna en eða jafn og núll. 248 00:12:24,090 --> 00:12:26,250 Svo aftur, eftir að þú getur gert minna en eða jafnt og. 249 00:12:26,250 --> 00:12:28,100 Jafnvel þó að það er tvær aðskildar tákn, getur þú gert það á 250 00:12:28,100 --> 00:12:29,350 lyklaborðið sem slíkt. 251 00:12:29,350 --> 00:12:33,950 >> En það er samt padda sem Ég ruglaður upp síðasta skipti líka. 252 00:12:33,950 --> 00:12:36,950 Ég verð að lýsa því yfir - 253 00:12:36,950 --> 00:12:37,460 nákvæmlega. 254 00:12:37,460 --> 00:12:39,640 Ég verð að lýsa N utan í lykkju. 255 00:12:39,640 --> 00:12:44,180 Þannig að ég þarf að setja n upp hér, og ég er ekki vilja aftur lýsa því hér 256 00:12:44,180 --> 00:12:46,480 svo að ég fá nýja breytu. 257 00:12:46,480 --> 00:12:48,860 Ég vil bara að úthluta gildi hér. 258 00:12:48,860 --> 00:12:54,320 >> Og nú er ég ekki alveg búin hér. 259 00:12:54,320 --> 00:12:57,290 Leyfðu mér að fá á undan mér og láta sem ég er búin. 260 00:12:57,290 --> 00:13:01,220 Gerðu jákvæð, og nú there 'a nýr villa. 261 00:13:01,220 --> 00:13:04,550 Control nær enda ekki ógilt virka. 262 00:13:04,550 --> 00:13:07,760 Svo nýja villuboð, en ef þú góður af Stríða sundur hvert orð, það 263 00:13:07,760 --> 00:13:09,620 sennilega vísbending á hvað er rangt. 264 00:13:09,620 --> 00:13:11,240 >> Stjórna. 265 00:13:11,240 --> 00:13:14,250 Control þýðir bara að röð af starfsemi í áætluninni. 266 00:13:14,250 --> 00:13:16,510 The tölva er í stjórn og eitthvað fór úrskeiðis. 267 00:13:16,510 --> 00:13:18,510 Svo nær það enda a non-tóm virka. 268 00:13:18,510 --> 00:13:21,760 Hvaða fall er það víst að vísa til? 269 00:13:21,760 --> 00:13:24,790 Hvaða aðgerð er ekki ógilt? 270 00:13:24,790 --> 00:13:27,400 Svo fá jákvæða int, og smá ruglingslegt í þeim brunni, 271 00:13:27,400 --> 00:13:29,010 það er góður af tómi. 272 00:13:29,010 --> 00:13:33,070 Það hefur forskrift tóm fyrir þess rök, en framleiðsla hennar er að fara til 273 00:13:33,070 --> 00:13:34,540 vera n tegund. 274 00:13:34,540 --> 00:13:37,260 Svo er orðið á vinstri svokallaða aftur tegund. 275 00:13:37,260 --> 00:13:40,320 Orðið á inni hér er núll eða fleiri rök 276 00:13:40,320 --> 00:13:41,970 að fall tekur. 277 00:13:41,970 --> 00:13:44,060 >> Svo hvað þarf ég að gera? 278 00:13:44,060 --> 00:13:47,650 Á þessum tímapunkti í númerið mitt, lína 21 þar Blikkandi hvetja er nú, ég 279 00:13:47,650 --> 00:13:51,430 hafa jákvæð int inni að breytu sem kallast n. 280 00:13:51,430 --> 00:13:55,200 Hvernig gef ég það til baka á aðalsíðu? 281 00:13:55,200 --> 00:13:55,960 Bókstaflega. 282 00:13:55,960 --> 00:13:59,320 Return n semíkommu. 283 00:13:59,320 --> 00:14:04,090 >> Svo bara eins og Colton aftur a stykki af pappír með svar við mig með því að sleppa 284 00:14:04,090 --> 00:14:07,020 þessi stykki af pappír í litlu svörtu kassi á borðinu, til að gera það í 285 00:14:07,020 --> 00:14:10,100 kóða, bókstaflega þú bara skrifa, aftur n, og það er eins og Colton voru 286 00:14:10,100 --> 00:14:12,140 fötlun mér eitthvað líkamlega aftur. 287 00:14:12,140 --> 00:14:15,870 Í þessu tilviki, hvað er að gerast er að fá jákvæð int er að fara að skila aftur 288 00:14:15,870 --> 00:14:19,220 hvað er væntanlega jákvæð heiltala hverjum? 289 00:14:19,220 --> 00:14:21,380 Hvar sem verðmæti endanum? 290 00:14:21,380 --> 00:14:29,080 Sem endar í þessari breytu, n, og þá getum haldið áfram með línu níu. 291 00:14:29,080 --> 00:14:31,920 >> Svo í öðrum orðum, til þess starfsemi, this program byrjar 292 00:14:31,920 --> 00:14:34,430 framkvæmd, og að þýðandinn gerir sér grein, ó, þú vilt bókasafn? 293 00:14:34,430 --> 00:14:36,310 Leyfðu mér að fara grípa hvað sem er inni það. 294 00:14:36,310 --> 00:14:37,750 Ó, þú vilt staðlaða IO bókasafn? 295 00:14:37,750 --> 00:14:39,660 Leyfðu mér að fara grípa hvað sem er inni það. 296 00:14:39,660 --> 00:14:44,510 Hvað þýðir að þýðandinn segja við sig þegar það hits línu fjórir? 297 00:14:44,510 --> 00:14:47,980 Ó, lofaði að framkvæma fall sem kallast að fá jákvætt, en 298 00:14:47,980 --> 00:14:50,820 við munum fá til baka til það síðar, eitthvað meðfram þeim línum. 299 00:14:50,820 --> 00:14:53,450 >> Int helstu ógilt þýðir bara hér er hugaður af áætlun mína. 300 00:14:53,450 --> 00:14:54,990 Lína sjö er bara krullað Brace. 301 00:14:54,990 --> 00:14:59,540 Lína átta er að segja á vinstri, gefa mér 32 bita fyrir heiltala, kalla það n. 302 00:14:59,540 --> 00:15:02,160 Hægra megin, það er segja fá jákvæða int. 303 00:15:02,160 --> 00:15:07,120 Nú hlé skulum að saga því nú Ég halda ekki færa bendilinn minn niður. 304 00:15:07,120 --> 00:15:11,720 Bendillinn minn fer nú niður hér því nú fá jákvæð int keyrir. 305 00:15:11,720 --> 00:15:13,100 Int n er lýst. 306 00:15:13,100 --> 00:15:14,040 Gera eftirfarandi. 307 00:15:14,040 --> 00:15:16,090 Printf gefur mér jákvæð heiltala. 308 00:15:16,090 --> 00:15:19,740 >> Fáðu int frá notanda, geyma það í n, og kannski gera þetta aftur og aftur. 309 00:15:19,740 --> 00:15:23,010 Þessi lykkja þýðir að þetta númer gæti framkvæma upp og niður eins og þetta aftur 310 00:15:23,010 --> 00:15:25,810 og aftur, en þegar notandinn að lokum samstarf og gefur mér jákvæð 311 00:15:25,810 --> 00:15:31,750 int, högg ég línu 21, á hver benda á tala er afhent aftur, og hver einn 312 00:15:31,750 --> 00:15:34,280 ætti ég að undirstrika núna? 313 00:15:34,280 --> 00:15:35,070 Níu. 314 00:15:35,070 --> 00:15:39,010 Control, svo að segja, skilar að línu níu. 315 00:15:39,010 --> 00:15:40,650 Það er lína sem er nú í forsvari. 316 00:15:40,650 --> 00:15:43,250 >> Svo það er það sem er verið að gerast allt í þetta sinn undir hetta, en 317 00:15:43,250 --> 00:15:46,480 þegar við höfum notað virka eins printf eða jafnvel fá band sem einhver annar 318 00:15:46,480 --> 00:15:50,600 skrifaði fyrir þig, var stjórn sem afhent kóða burt til einhver annar er lína 319 00:15:50,600 --> 00:15:51,290 með línu fyrir línu. 320 00:15:51,290 --> 00:15:53,770 Það er við bara gat ekki séð það og við gat ekki raunverulega sýna hana í þessu 321 00:15:53,770 --> 00:15:57,620 program því það er í sumum öðrum skrá á harða diskinum 322 00:15:57,620 --> 00:16:00,000 unbeknownst okkur. 323 00:16:00,000 --> 00:16:02,100 Þannig að við skulum í raun saman og keyra þetta núna. 324 00:16:02,100 --> 00:16:03,890 >> Gera jákvætt. 325 00:16:03,890 --> 00:16:05,260 Safna saman, það er framfarir. 326 00:16:05,260 --> 00:16:06,650 . / Jákvætt. 327 00:16:06,650 --> 00:16:08,020 Gefðu mér jákvæð heiltala. 328 00:16:08,020 --> 00:16:08,800 Við skulum vera erfitt. 329 00:16:08,800 --> 00:16:10,430 Neikvætt 1. 330 00:16:10,430 --> 00:16:11,360 Núll. 331 00:16:11,360 --> 00:16:13,370 Skulum gefa það 50. 332 00:16:13,370 --> 00:16:18,100 Takk fyrir 50, og svo stjórna hefur nú skilað. 333 00:16:18,100 --> 00:16:21,750 Einhverjar spurningar, þá á það? 334 00:16:21,750 --> 00:16:23,180 Já? 335 00:16:23,180 --> 00:16:25,630 >> [Inaudible]. 336 00:16:25,630 --> 00:16:26,130 >> Segja aftur. 337 00:16:26,130 --> 00:16:27,860 Ó, góð spurning. 338 00:16:27,860 --> 00:16:31,100 Svo þú might taka hliðstæðu hér að Ég er svona að klippa horn á. 339 00:16:31,100 --> 00:16:35,420 Í línu 12, ég er að segja, að fá jákvæð int skilar int, en að sama 340 00:16:35,420 --> 00:16:39,660 rökfræði, það stendur nú til vegna þess að í lína sex, ég er að segja að helstu ávöxtun 341 00:16:39,660 --> 00:16:44,040 int, en það höfum við aldrei hafði í einhverju áætlunum okkar? 342 00:16:44,040 --> 00:16:46,470 Við höfum aldrei haft nefna þetta lykilorð aftur. 343 00:16:46,470 --> 00:16:49,970 >> Svo kemur í ljós að í C, amk The útgáfa af því sem við erum að nota 344 00:16:49,970 --> 00:16:55,750 gerði árið 1999, tæknilega, þetta er gerast fyrir þig sjálfkrafa. 345 00:16:55,750 --> 00:16:59,300 Hvenær sem þú framkvæma forrit og þú framkvæma aðgerð kallast helstu, 346 00:16:59,300 --> 00:17:04,230 sem virka mun skila núll af sjálfgefið ef þú segir ekki annað, 347 00:17:04,230 --> 00:17:05,849 og núll er bara samningur. 348 00:17:05,849 --> 00:17:09,430 Heimurinn skilar núll þar með gefur til kynna að allt er vel, 349 00:17:09,430 --> 00:17:13,040 raun að yfirgefa okkur með fjóra milljarða mögulegar hlutir sem gætu farið 350 00:17:13,040 --> 00:17:17,530 rangt þannig að ef við aftur einn, til þess að gæti signify kóða sem þýðir þetta 351 00:17:17,530 --> 00:17:18,310 hlutur fór úrskeiðis. 352 00:17:18,310 --> 00:17:20,589 Við gætum aftur tvö, sem þýðir þetta annar hlutur fór úrskeiðis. 353 00:17:20,589 --> 00:17:23,440 Við gætum aftur fjóra milljarða, sem þýðir þetta annar hlutur fór úrskeiðis. 354 00:17:23,440 --> 00:17:27,170 >> Og ef þú heldur nú um eigin PC eða Mac, þú might muna að 355 00:17:27,170 --> 00:17:29,610 stundum þú fá dulinn skilaboð villa frá hugbúnaður sem þú ert 356 00:17:29,610 --> 00:17:32,650 með því að nota, og stundum hefur það manna vingjarnlegur lýsingu, en það er 357 00:17:32,650 --> 00:17:35,265 oft númer eða númer á skjánum? 358 00:17:35,265 --> 00:17:37,800 Ef þetta kemur ekki í hugann, bara að hafa auga út fyrir það. 359 00:17:37,800 --> 00:17:40,790 Það er yfirleitt það þessir kóðar eru að vísa til. 360 00:17:40,790 --> 00:17:44,200 Þeir eru með í Microsoft Word og önnur forrit þannig að ef þú leggja inn 361 00:17:44,200 --> 00:17:48,850 padda skýrsla við félagið, getur þú segja þeim, ó, ég fékk villa númer 45. 362 00:17:48,850 --> 00:17:51,750 Og sumir forritari aftur á félaginu getur að líta sem upp á hans eða hennar 363 00:17:51,750 --> 00:17:54,940 númer og segja, ó, það er vegna þess að ég gerði þessi villa og það er ástæða þess að notendur 364 00:17:54,940 --> 00:17:56,240 fékk þessi skilaboð. 365 00:17:56,240 --> 00:17:59,490 >> En satt er það bara smá truflandi og smá leiðinlegur að 366 00:17:59,490 --> 00:18:02,130 álykta að, að minnsta kosti á okkar Fyrstu áætlanir, þannig að við höfum 367 00:18:02,130 --> 00:18:02,970 verið að sleppa því. 368 00:18:02,970 --> 00:18:07,450 En allan þennan tíma hver og einn af þínum aðgerðir helstu hefur leynilega hafði þetta 369 00:18:07,450 --> 00:18:11,600 lína sjálfkrafa bætt fyrir þig af þýðanda, bara með því að venju að 370 00:18:11,600 --> 00:18:13,172 spara þér tíma. 371 00:18:13,172 --> 00:18:14,620 >> [Inaudible]. 372 00:18:14,620 --> 00:18:16,250 >> Þú þarft ekki að fela það í haf. 373 00:18:16,250 --> 00:18:16,700 Það er allt í lagi. 374 00:18:16,700 --> 00:18:20,260 Þú þarft að fela það ef þú værir framkvæmd aðgerð eins og þetta. 375 00:18:20,260 --> 00:18:22,850 Annars virka íbúð út vildi ekki vinna. 376 00:18:22,850 --> 00:18:24,480 En í aðal, það er ekki nauðsynlegt. 377 00:18:24,480 --> 00:18:28,450 Í viku eða tvær, munum við byrja inn í þessi vana þegar við viljum byrja 378 00:18:28,450 --> 00:18:29,690 kynna villur. 379 00:18:29,690 --> 00:18:32,550 Mjög góð spurning. 380 00:18:32,550 --> 00:18:36,880 >> Svo fljótur munnleg brot að nefna að á föstudaginn, munum við ekki vera með hádegismat 381 00:18:36,880 --> 00:18:39,980 í sjálfu sér, en við munum vera að hafa kvöldmat með sumir af þeim nemendum og starfsfólki. 382 00:18:39,980 --> 00:18:42,940 Ef þú vilt tengja okkur, finnst frjálst að fara cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 06:00 á föstudaginn. 384 00:18:45,030 --> 00:18:47,990 Rúm er, eins og alltaf, takmörkuð, en við munum halda áfram að gera þetta á a næstum 385 00:18:47,990 --> 00:18:51,420 vikulega ef pláss rennur út í þessari viku. 386 00:18:51,420 --> 00:18:56,160 >> Svo cliffhanger sem við var horfið á Mánudagur var að strengir geta í raun 387 00:18:56,160 --> 00:19:00,520 vera verðtryggð í, sem þýðir að þú hægt að fá í fyrsta eðli, 388 00:19:00,520 --> 00:19:03,770 annað eðli, þriðja persóna og svo framvegis, vegna þess að þú getur 389 00:19:03,770 --> 00:19:07,860 raun hugsa um streng, eins og halló, eins og að vera í þessu tilfelli fimm 390 00:19:07,860 --> 00:19:09,670 bréf inni í kassa. 391 00:19:09,670 --> 00:19:13,370 Og þú getur fengið á hvert þeirra kassa með hvaða setningafræði gerði við 392 00:19:13,370 --> 00:19:15,230 kynna á mánudag? 393 00:19:15,230 --> 00:19:16,760 Þeir hornklofum á lyklaborðinu. 394 00:19:16,760 --> 00:19:18,980 Sem bara ætlað að fara að staðsetningu núll. 395 00:19:18,980 --> 00:19:22,840 >> Við byrjum að telja á núlli, svo krappi núll táknar H, krappi einn 396 00:19:22,840 --> 00:19:25,170 táknar e, og svo framvegis. 397 00:19:25,170 --> 00:19:28,490 Og svo allan tímann þegar við höfum verið nota strengi og slá inn í "halló" 398 00:19:28,490 --> 00:19:31,250 og "heimurinn" og annað á á skjánum, það er verið geymdar 399 00:19:31,250 --> 00:19:32,820 í kassa eins og this. 400 00:19:32,820 --> 00:19:33,370 Og taka giska. 401 00:19:33,370 --> 00:19:37,470 Hvað er hver kassi tákna líkamlega inni á tölvunni þinni? 402 00:19:37,470 --> 00:19:38,250 >> [Inaudible]. 403 00:19:38,250 --> 00:19:39,150 >> Því miður? 404 00:19:39,150 --> 00:19:39,580 >> Stafir. 405 00:19:39,580 --> 00:19:44,760 >> Svo eðli, vissulega er að ræða af strengjum, og eðli er bara 406 00:19:44,760 --> 00:19:46,800 átta bitar eða eitt bæti. 407 00:19:46,800 --> 00:19:49,550 Svo þú ert sennilega að minnsta kosti óljóst kunnugt um þá staðreynd að þinn 408 00:19:49,550 --> 00:19:50,500 tölva hefur minni. 409 00:19:50,500 --> 00:19:52,110 Það hefur tvær tegundir af minni amk. 410 00:19:52,110 --> 00:19:54,810 Eitt er harður diskur þar sem þú spara efni varanlega, og það er 411 00:19:54,810 --> 00:19:57,400 yfirleitt stór svo þú getur haft bíó og tónlist og svo framvegis. 412 00:19:57,400 --> 00:20:04,010 >> Síðan sem þú ert með annars konar minni kallað RAM, R-A-M, Random Access 413 00:20:04,010 --> 00:20:07,510 Minni, og þetta er gerð af minni sem er notað þegar tölvan þín er 414 00:20:07,510 --> 00:20:11,520 gangi en ef þú missir völd eða þinn rafhlaðan deyr, nokkuð sem er geymt 415 00:20:11,520 --> 00:20:15,300 í RAM hverfur ef þú missir völd öllu leyti vegna þess að það er ekki 416 00:20:15,300 --> 00:20:16,060 viðvarandi. 417 00:20:16,060 --> 00:20:19,120 Þú hefur venjulega, þessa dagana, sem tónleikar um það, tveir tónleikarnir, kannski fleiri. 418 00:20:19,120 --> 00:20:23,490 Og kosti af RAM er að það er miklu miklu, miklu hraðar en harður diskur 419 00:20:23,490 --> 00:20:27,390 eða jafnvel storkuhamur diska þessa dagana, en það er yfirleitt dýrari svo 420 00:20:27,390 --> 00:20:28,480 þú þarft minna af því. 421 00:20:28,480 --> 00:20:32,400 >> Svo samtal í dag vísar í raun RAM, sem tegund af minni sem 422 00:20:32,400 --> 00:20:35,270 er aðeins á meðan það er máttur verið fóðraðir í tölvunni þinni. 423 00:20:35,270 --> 00:20:40,530 Svo þegar þú slærð inn í H-E-L-L-O, inn á lyklaborðið, H er að fara í einu 424 00:20:40,530 --> 00:20:44,550 bæti af RAM, the E er að fara í annar bæti af RAM, er eins 425 00:20:44,550 --> 00:20:45,800 The hvíla af the orð. 426 00:20:45,800 --> 00:20:49,010 Svo muna það sem við gátum að gera síðasta skipti var þetta. 427 00:20:49,010 --> 00:20:53,940 Leyfðu mér að fara á undan og opna skrána sem við kölluðum string.c, muna og 428 00:20:53,940 --> 00:20:56,860 að það horfði smá eitthvað eins og this. 429 00:20:56,860 --> 00:20:59,860 Leyfðu mér að rúlla reyndar aftur og breyta það að einmitt það sem hún leit út eins og, 430 00:20:59,860 --> 00:21:02,654 band lengd s. 431 00:21:02,654 --> 00:21:04,560 >> Svo líta á the program hér. 432 00:21:04,560 --> 00:21:08,530 Við fela CS50 bókasafn svo sem við getum notað að fá band. 433 00:21:08,530 --> 00:21:11,400 Við eru stöðluð io.h svo við getum notað printf. 434 00:21:11,400 --> 00:21:13,580 Hvers vegna höfum vér ma string.h? 435 00:21:13,580 --> 00:21:16,980 Þetta var ný á mánudaginn. 436 00:21:16,980 --> 00:21:18,230 Þannig að við vildum band lengd. 437 00:21:18,230 --> 00:21:19,090 STR leng. 438 00:21:19,090 --> 00:21:21,470 Fólk ákvað árum, skulum bara vera gagnorðar. 439 00:21:21,470 --> 00:21:24,290 Í stað þess að kalla það "band lengd," skulum kalla það "STR leng" og láta 440 00:21:24,290 --> 00:21:28,540 heimurinn tala það út, og svo er hvað við fáum aðgang að með string.h. 441 00:21:28,540 --> 00:21:29,390 >> Þetta er kunnuglegt. 442 00:21:29,390 --> 00:21:30,320 Þetta er kunnuglegt. 443 00:21:30,320 --> 00:21:31,450 Þetta er kunnuglegt. 444 00:21:31,450 --> 00:21:32,370 Þetta er lítið nýtt. 445 00:21:32,370 --> 00:21:35,420 Í samræmi 22 - og við munum koma aftur að þessu, en nú vita - 446 00:21:35,420 --> 00:21:37,880 og þú vildi bara vita þetta af því að hafa lesa skjöl eða ef 447 00:21:37,880 --> 00:21:39,010 þú vissir C þegar - 448 00:21:39,010 --> 00:21:41,510 fá band stundum getur skrúfa upp. 449 00:21:41,510 --> 00:21:45,130 Ef notandinn er í raun andstæðinga eða ósamvinnuþýður og hann eða hún bara 450 00:21:45,130 --> 00:21:49,450 ekki slá neitt á lyklaborðinu eða gerðir svo mikið á lyklaborðið sem 451 00:21:49,450 --> 00:21:53,760 það hylmir minni í tölvunni, í orði, fá band gæti aftur 452 00:21:53,760 --> 00:21:56,270 eitthvað annað en band af stöfum. 453 00:21:56,270 --> 00:22:01,930 Það gæti aftur sérstakt gildi kallast NULL á öllum húfur, N-U-L-l, og þetta er 454 00:22:01,930 --> 00:22:03,390 bara svokölluð Sentinel gildi. 455 00:22:03,390 --> 00:22:08,010 Það er sérstakt gildi sem táknar eitthvað slæmt gerðist í þessu tilfelli. 456 00:22:08,010 --> 00:22:10,520 Það er skortur á streng. 457 00:22:10,520 --> 00:22:16,190 >> Svo null Ég er að leita að einfaldlega þannig að, langa sögu stutta, STR leng og 458 00:22:16,190 --> 00:22:20,230 aðrar aðgerðir sem koma með C, ef þeir búast við streng en þú framhjá þeim 459 00:22:20,230 --> 00:22:23,630 skortur á streng, ef þú framhjá þá NÚLL, tölvuna eða forrit 460 00:22:23,630 --> 00:22:25,000 verður bara hrun beina. 461 00:22:25,000 --> 00:22:25,610 Það mun hanga. 462 00:22:25,610 --> 00:22:27,250 Það mun kasta upp smá villu. 463 00:22:27,250 --> 00:22:28,690 Slæmur hlutir gerast. 464 00:22:28,690 --> 00:22:31,130 Svo jafnvel þótt það sé enn ekki vel skilgreind - 465 00:22:31,130 --> 00:22:33,730 þetta mun gera meira vit í viku eða tveir - í línu 22, þetta er bara 466 00:22:33,730 --> 00:22:38,790 dæmi um sjálf varnar villuprófun bara ef einn tími út af 467 00:22:38,790 --> 00:22:42,040 milljón eitthvað fer úrskeiðis, við kosti program minn mun ekki hrun. 468 00:22:42,040 --> 00:22:45,960 >> Svo jafnt ef s er ekki eitthvað slæmt, Ég hef þetta fyrir lykkju, og þetta var 469 00:22:45,960 --> 00:22:47,710 þar sem við átti að öðrum ný stykki af setningafræði. 470 00:22:47,710 --> 00:22:51,580 Ég á fyrir lykkja iterating frá núll á allt að lengd s. 471 00:22:51,580 --> 00:22:56,140 Og þá er hér, ég var að prenta út s krappi i, en hvers vegna gerði ég nota% c alla 472 00:22:56,140 --> 00:23:00,770 einu stað s% jafnvel þó s er strengur? 473 00:23:00,770 --> 00:23:02,110 Það er eðli, ekki satt? 474 00:23:02,110 --> 00:23:06,560 S er band, en s krappi eitthvað, s krappi ég hvar ég er núll 475 00:23:06,560 --> 00:23:10,380 eða einn eða tveir, það er að einstaklingur staf í strengnum, og svo fyrir 476 00:23:10,380 --> 00:23:14,970 að printf þarf að vera upplýst að það er örugglega eðli að búast. 477 00:23:14,970 --> 00:23:18,096 >> Og þá muna, hvað gerði þetta program raunverulega gera? 478 00:23:18,096 --> 00:23:19,848 >> Prenta það út í dálkum. 479 00:23:19,848 --> 00:23:21,120 >> Já, einmitt. 480 00:23:21,120 --> 00:23:24,990 Það prentað bara orð sem ég gerð í dálk, einn staf í hverri línu. 481 00:23:24,990 --> 00:23:26,190 Svo skulum sjá þetta aftur. 482 00:23:26,190 --> 00:23:27,810 Svo gera band. 483 00:23:27,810 --> 00:23:30,200 Safna saman OK. . / Band. 484 00:23:30,200 --> 00:23:35,560 Leyfðu mér að slá í H-E-L-L-O, Enter, og örugglega ég fá það, einn í hverja línu. 485 00:23:35,560 --> 00:23:37,280 >> Svo láta mig gera eitt hagræðingu hér. 486 00:23:37,280 --> 00:23:40,240 Ef þér finnst um það, sérstaklega ef þú hefur forritað áður, það er 487 00:23:40,240 --> 00:23:43,340 öllum líkindum að óhagkvæmni í línu 24. 488 00:23:43,340 --> 00:23:46,160 Með öðrum orðum, það er ekki endilega besta hönnun. 489 00:23:46,160 --> 00:23:50,200 Einfalt, að minnsta kosti einu sinni þig muna hvað STR leng er, en það er 490 00:23:50,200 --> 00:23:52,640 gera eitthvað heimsk hugsanlega. 491 00:23:52,640 --> 00:23:54,863 Hvað gæti það verið? 492 00:23:54,863 --> 00:23:56,280 >> [Inaudible]. 493 00:23:56,280 --> 00:23:56,800 >> Einmitt. 494 00:23:56,800 --> 00:24:00,340 Það er að stöðva fyrir lengd s hvert einasta sinn, jafnvel þótt 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O er alltaf að fara að vera fimm stafir. 496 00:24:02,980 --> 00:24:05,490 Hvert skipti í gegnum þessa lykkju, fimm er ekki að breytast. 497 00:24:05,490 --> 00:24:08,750 Ég gæti verið hækka i, en það sem er lengd s á hverjum 498 00:24:08,750 --> 00:24:09,690 endurtekning þessarar lykkju? 499 00:24:09,690 --> 00:24:15,810 Það er fimm, það er fimm, það er fimm, og enn ég er samt að spyrja þessa 500 00:24:15,810 --> 00:24:18,320 spurning aftur og aftur og aftur. 501 00:24:18,320 --> 00:24:20,750 Nú satt, the tölva er svo fjandinn hratt, enginn er að fara að taka eftir a 502 00:24:20,750 --> 00:24:23,780 Munurinn á þessu tilfelli, en þessar tegundir lélegrar ákvarðanir hönnun getur 503 00:24:23,780 --> 00:24:28,330 byrja að bæta upp ef þýðandinn sig ekki reyna að laga þetta fyrir þig sem 504 00:24:28,330 --> 00:24:30,630 það væri yfirleitt ekki, að minnsta amk í tækið. 505 00:24:30,630 --> 00:24:31,540 >> Þannig að ég ætla að gera þetta. 506 00:24:31,540 --> 00:24:34,580 Ég ætla að bæta við kommu eftir Fyrsta breytu minn, i. 507 00:24:34,580 --> 00:24:37,310 Ég ætla að gefa mér annan breytu, kalla það n, bara með 508 00:24:37,310 --> 00:24:41,330 venju fyrir tölur, og þá er ég að fara að úthluta n gildi band 509 00:24:41,330 --> 00:24:42,530 lengd af s. 510 00:24:42,530 --> 00:24:46,060 Og þá er ég að fara að breyta ástand mitt að vera það? 511 00:24:46,060 --> 00:24:51,960 Ég ætla að breyta ástand mitt til á meðan i er minna en n. 512 00:24:51,960 --> 00:24:55,700 >> Svo nú, er hversu oft ég stöðva lengd s? 513 00:24:55,700 --> 00:25:00,110 Einu sinni, en það er allt í lagi að athuga i gegn n aftur og aftur vegna þess að nú þeim 514 00:25:00,110 --> 00:25:03,170 gildi eru í raun ekki að breytast. 515 00:25:03,170 --> 00:25:06,020 Nú nú, bara vita að hvenær sem þú hringja í aðgerð, það er hluti af 516 00:25:06,020 --> 00:25:09,930 kostnaður, ekki nóg til að aftra þér raun frá alltaf að nota virka, en 517 00:25:09,930 --> 00:25:12,750 vissulega þegar það er lína af kóða svona - og línur munu fá 518 00:25:12,750 --> 00:25:15,490 meira áhugavert fyrir lengi - þar það er tækifæri til að hugsa, ef ég 519 00:25:15,490 --> 00:25:18,320 slá þennan kóða, hversu margir sinnum mun það framkvæma? 520 00:25:18,320 --> 00:25:20,950 Þú munt byrja að sjá með tímanum að árangur af áætlunum þínum getur 521 00:25:20,950 --> 00:25:21,660 örugglega breytast. 522 00:25:21,660 --> 00:25:24,110 >> Í raun einn af vandamálinu sets við höfum gert í mörg ár áður felur 523 00:25:24,110 --> 00:25:27,600 framkvæmd, eins og þú getur muna frá viku núll, a stafa afgreiðslumaður, en 524 00:25:27,600 --> 00:25:31,380 Villuleit sem er hönnuð til að styðja orðabók um 150.000 plús 525 00:25:31,380 --> 00:25:32,860 orð sem við gefum ykkur. 526 00:25:32,860 --> 00:25:37,100 Þú þyrftir að skrifa kóða sem sækir þessi orð í RAM, svo í 527 00:25:37,100 --> 00:25:40,700 kassa eins og við sáum á skjánum í smá stund síðan, og þá eins hratt og þú 528 00:25:40,700 --> 00:25:43,740 getur, þú þarft að vera fær um að svara spurning formi, er þetta orð 529 00:25:43,740 --> 00:25:44,280 rangt stafsett? 530 00:25:44,280 --> 00:25:45,420 Er þetta orð rangt stafsett? 531 00:25:45,420 --> 00:25:46,770 Er þetta orð rangt stafsett? 532 00:25:46,770 --> 00:25:49,525 >> Og í eitthvað eins og það sem við höfum gert í ár fortíð er reyndist það í, 533 00:25:49,525 --> 00:25:53,500 vísu á að kjósa í frjálsum grundvelli, sem samkeppni nokkurs konar, þar sem 534 00:25:53,500 --> 00:25:59,470 nemendur sem nota minna vinnsluminni og minni tíma, færri CPU hringrás, enda 535 00:25:59,470 --> 00:26:02,640 freyðandi upp að efst á lítið leiðtogi borð eða röðun sem við setjum á 536 00:26:02,640 --> 00:26:04,770 Námskeiðið er heimasíða sem við höfum gert í mörg ár áður. 537 00:26:04,770 --> 00:26:08,100 Svo aftur, algerlega valfrjálst, en þetta talar við hönnun tækifæri 538 00:26:08,100 --> 00:26:11,250 sem eru framundan þegar við byrjum byggja á topp sumar af þessum 539 00:26:11,250 --> 00:26:14,010 undirstöðu kubbar. 540 00:26:14,010 --> 00:26:16,780 >> Svo láta mig fara aftur á þessa skýringarmynd fyrir bara smá stund og sýna smá 541 00:26:16,780 --> 00:26:17,610 eitthvað meira. 542 00:26:17,610 --> 00:26:21,400 Þetta er örugglega band, og við höfum tekið kostur á nokkrum bókasöfnum, 543 00:26:21,400 --> 00:26:25,150 staðall io.h sem hefur - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, meðal annars. 546 00:26:27,860 --> 00:26:31,540 cs50.h, sem hefur fengið int og fá band og svo framvegis, string.h, sem 547 00:26:31,540 --> 00:26:32,570 hafði str Leng. 548 00:26:32,570 --> 00:26:34,800 En það kemur í ljós að það er enn annar. 549 00:26:34,800 --> 00:26:38,540 Frankly, það er hellingur og hellingur af haus skrár sem lýsa virka 550 00:26:38,540 --> 00:26:43,320 fyrir bókasöfn, en þetta ctype.h er í raun að fara að vera nokkuð 551 00:26:43,320 --> 00:26:46,900 hagstæður vegna þess að ég ætla að fara á undan og framkvæma einn 552 00:26:46,900 --> 00:26:48,120 önnur forrit hér. 553 00:26:48,120 --> 00:26:52,420 >> Leyfðu mér að fara á undan og opna eitthvað Ég skrifaði fyrirfram kallast 554 00:26:52,420 --> 00:26:55,750 capitalize.c, og við skulum taka A líta á hvernig þetta virkar. 555 00:26:55,750 --> 00:27:00,340 Takið eftir að ég nota, í þessari útgáfu af því, þrír þekki files. 556 00:27:00,340 --> 00:27:04,110 Takið eftir að í línu 18, ég er fá lína af texta. 557 00:27:04,110 --> 00:27:07,660 Tilkynning í samræmi 21, ég hélt því fram að Eftirfarandi númer er að fara að 558 00:27:07,660 --> 00:27:12,170 nýta s, hvað sem notandinn slegið í, og hvernig er ég að gera það? 559 00:27:12,170 --> 00:27:13,300 Jæja, ég er að taka - 560 00:27:13,300 --> 00:27:14,750 kennslustund lærður frá síðasta sinn - 561 00:27:14,750 --> 00:27:18,370 Ég er að lýsa yfir i og n og iterating yfir stafi í band. 562 00:27:18,370 --> 00:27:22,720 Og þá hvað er þetta blokk á númer í netinu 24 gegnum 27 563 00:27:22,720 --> 00:27:24,550 gera í skilmálum leikmaður er? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Lágstafir bréf til baka. 566 00:27:29,730 --> 00:27:30,430 >> Einmitt. 567 00:27:30,430 --> 00:27:35,920 Ef s krappi ég - þannig að ef ég-th eðli s, sem er sérstakur 568 00:27:35,920 --> 00:27:40,220 bleikju í streng, er meiri en eða jafnt og lágstafir a og - 569 00:27:40,220 --> 00:27:42,670 muna að tvöfalda merkið signify og - 570 00:27:42,670 --> 00:27:46,810 og sama eðli, s krappi i, er minna en eða jafnt og lágstafir z, 571 00:27:46,810 --> 00:27:50,600 sem þýðir að það er a eða B eða C eða punktur, punktur, punktur, eða z, sem þýðir að 572 00:27:50,600 --> 00:27:51,340 það er lágstafir. 573 00:27:51,340 --> 00:27:52,900 Hvað ég vil gera í því tilfelli? 574 00:27:52,900 --> 00:27:55,010 Jæja, ég get gert þetta nokkuð cryptically, en 575 00:27:55,010 --> 00:27:56,160 skulum stríða þetta sundur. 576 00:27:56,160 --> 00:28:00,210 >> Ég ætla að hringja printf, prentar% C vegna þess að ég vil að prentaðu þetta 577 00:28:00,210 --> 00:28:01,580 staf á skjánum. 578 00:28:01,580 --> 00:28:06,650 Ég ætla þá að fara að taka s krappi ég, ég-th eðli í s, og þá hvers vegna 579 00:28:06,650 --> 00:28:12,330 er ég að gera þetta litla bragð hér, lágstafir mínus Capital? 580 00:28:12,330 --> 00:28:16,352 Hvað er að fara að gefa mig, almennt séð? 581 00:28:16,352 --> 00:28:18,600 >> [Inaudible]. 582 00:28:18,600 --> 00:28:19,390 >> Einmitt. 583 00:28:19,390 --> 00:28:20,860 Ég í raun ekki muna - 584 00:28:20,860 --> 00:28:24,390 það var 65 fyrir höfuðborg A. ég í raun ekki muna hvað lágstafir a er, 585 00:28:24,390 --> 00:28:25,540 en það er sama. 586 00:28:25,540 --> 00:28:26,580 Tölvan veit. 587 00:28:26,580 --> 00:28:30,380 Svo með því að segja, lágstafir mínus höfuðborg A, það er skrýtið að vera 588 00:28:30,380 --> 00:28:33,530 draga eina bleikju frá öðru, en hvað eru stafir undir hetta? 589 00:28:33,530 --> 00:28:34,520 Þeir eru bara tölur. 590 00:28:34,520 --> 00:28:36,980 Svo hvað þær tölur eru, láta tölvuna muna það 591 00:28:36,980 --> 00:28:38,240 fremur en mér mönnum. 592 00:28:38,240 --> 00:28:41,710 >> Svo lágstafir mínus fjármagn A er að fara að gefa mér muninn. 593 00:28:41,710 --> 00:28:45,370 Það gerist að vera 32, en það myndi vera málið fyrir lágstafir b og fjármagns B 594 00:28:45,370 --> 00:28:45,930 og svo framvegis. 595 00:28:45,930 --> 00:28:47,710 Það helst í samræmi, sem betur fer. 596 00:28:47,710 --> 00:28:51,930 Þannig að ég er í raun að segja, taka lágstafir bréf, draga af því 597 00:28:51,930 --> 00:28:55,340 staðall munur, og að krappi raun Breytingar s I frá 598 00:28:55,340 --> 00:28:59,400 lágstafir til, að sjálfsögðu, hástafi, án mín að þurfa virkilega að hugsa 599 00:28:59,400 --> 00:29:03,040 um eða muna, hvað voru þeir tölur við ræddum um þegar átta 600 00:29:03,040 --> 00:29:04,800 sjálfboðaliðar kom upp á sviðinu? 601 00:29:04,800 --> 00:29:08,800 Nú á meðan, í annað, ef það er ekki A lágstafir bréf sem ákvarðað 602 00:29:08,800 --> 00:29:10,400 fyrir línu 24, bara prenta það út. 603 00:29:10,400 --> 00:29:12,590 Ég vil aðeins að snerta stafir sem voru 604 00:29:12,590 --> 00:29:14,410 reyndar upphaflega lágstafir. 605 00:29:14,410 --> 00:29:15,150 >> Svo skulum sjá þetta. 606 00:29:15,150 --> 00:29:17,400 Gera nýta. 607 00:29:17,400 --> 00:29:18,470 Safna saman, OK. 608 00:29:18,470 --> 00:29:19,730 . / Nýta. 609 00:29:19,730 --> 00:29:23,530 Og láta mig slá í H-E-L-L-O í lágstöfum, Enter. 610 00:29:23,530 --> 00:29:26,370 Og eftir því að það er breytt í hástafi. 611 00:29:26,370 --> 00:29:27,940 Leyfðu mér að gera þetta aftur með annað orð. 612 00:29:27,940 --> 00:29:32,720 Hvað um D-A-V-I-D við fyrsta D eignfærður sem nafn er yfirleitt? 613 00:29:32,720 --> 00:29:33,560 Enter. 614 00:29:33,560 --> 00:29:34,870 Eftir það er samt rétt. 615 00:29:34,870 --> 00:29:40,250 Það outputted bara að fyrsta D óbreytt um að reisa annað. 616 00:29:40,250 --> 00:29:42,170 >> Svo hafa í huga, þá, nokkrir hlutir hér. 617 00:29:42,170 --> 00:29:45,060 Einn, ef þú vilt alltaf að athuga tvö skilyrði í einu, getur þú og þá 618 00:29:45,060 --> 00:29:46,500 saman eins og við spáð. 619 00:29:46,500 --> 00:29:49,900 Þú getur bera saman stafi á þennan hátt og raun meðhöndla stafi eins 620 00:29:49,900 --> 00:29:53,050 tölur, en hreinskilnislega, þetta er svo fjandinn dulinn Ég ætla aldrei að fara að muna 621 00:29:53,050 --> 00:29:56,510 hvernig á að koma upp með þetta frá grunni án rökhugsun gegnum það fyrir alveg 622 00:29:56,510 --> 00:29:57,140 smá tíma. 623 00:29:57,140 --> 00:30:00,590 >> Myndi það ekki hafa verið gott ef einhver þarna skrifaði aðgerð heitir er 624 00:30:00,590 --> 00:30:05,390 lækka sem gæti svarað fyrir mig satt eða rangar, þessi persóna er lágstafir? 625 00:30:05,390 --> 00:30:09,350 Jæja sem betur fer, hver skrifaði ctype.h gerði einmitt það. 626 00:30:09,350 --> 00:30:15,540 Leyfðu mér að fara upp hér og bæta ctype fyrir c gerðir, og nú látið mig fara niður hér og 627 00:30:15,540 --> 00:30:18,820 umrita þessa línu eins og hér segir. 628 00:30:18,820 --> 00:30:27,510 >> Svo ef það er kallað lægra, ég kröfu, s krappi i, þá er ég að fara að eyða 629 00:30:27,510 --> 00:30:29,400 þessar tvær línur með öllu. 630 00:30:29,400 --> 00:30:32,570 Svo nú einhver annar, ég er að vonast, skrifaði fall kallað er lægri, og það 631 00:30:32,570 --> 00:30:36,250 snýr út að þeir gerðu og þeir lýst það inni ctype.h. 632 00:30:36,250 --> 00:30:39,480 Og nú ætla ég að yfirgefa línu 27 einn, ég ætla að yfirgefa línu 31 633 00:30:39,480 --> 00:30:41,890 einn, en taka eftir því hversu mikið ég hef hert upp númerið mitt. 634 00:30:41,890 --> 00:30:42,690 Það er nú hreinni. 635 00:30:42,690 --> 00:30:47,250 Það er minna erfitt að horfa í gegnum því nú virka, auk þess er 636 00:30:47,250 --> 00:30:50,080 svo frábærlega heitir það bara gerir hvað það segir. 637 00:30:50,080 --> 00:30:51,520 >> Svo nú er ég að fara að spara það. 638 00:30:51,520 --> 00:30:52,930 Ég ætla að minnka aðdrátt. 639 00:30:52,930 --> 00:30:56,650 Og rétt eins og í grunni sem þú gætir hafa Booleans, Boolean gildi satt eða 640 00:30:56,650 --> 00:31:01,530 falskur, það er einmitt það sem er lækka áhrifaríkan ávöxtun. 641 00:31:01,530 --> 00:31:02,960 Leyfðu mér laun. 642 00:31:02,960 --> 00:31:04,500 Leyfðu mér aftur hlaupa. 643 00:31:04,500 --> 00:31:07,350 Og nú skulum reyna það aftur, H-E-L-L-O, inn í. 644 00:31:07,350 --> 00:31:07,970 Það er nokkuð gott. 645 00:31:07,970 --> 00:31:10,150 Og reyna það aftur, til þess að ég ekki skrúfa eitthvað upp. 646 00:31:10,150 --> 00:31:11,670 Það er eignfærður eins og heilbrigður. 647 00:31:11,670 --> 00:31:14,190 >> En þetta er ekki nógu gott vegna þess að annar hlutur sem ég er aldrei að fara að 648 00:31:14,190 --> 00:31:19,090 muna nema ég vinn í gegnum það í raun vandlega á, segja, pappír er 649 00:31:19,090 --> 00:31:19,920 þetta fjandinn línu. 650 00:31:19,920 --> 00:31:23,450 Væri ekki gott ef það voru fall kölluð til efri? 651 00:31:23,450 --> 00:31:26,930 Jæja það skrúfjárn út there er í ctype.h eins vel. 652 00:31:26,930 --> 00:31:30,150 Ég ætla að fara á undan og slá - 653 00:31:30,150 --> 00:31:31,340 láta mig koma að línu aftur. 654 00:31:31,340 --> 00:31:36,430 Í stað þess að þetta hér, láta mig fara á undan og segja, í staðinn fyrir að% c 655 00:31:36,430 --> 00:31:42,110 afleiðing af starf þessa aðgerð til að efri á I-th eðli s. 656 00:31:42,110 --> 00:31:45,430 Og nú taka það er að fá smá jafnvægi. 657 00:31:45,430 --> 00:31:48,870 Ég verð að halda utan um hversu margir sviga ég hef opnað og lokað. 658 00:31:48,870 --> 00:31:50,050 >> Svo nú er það jafnvel hreinni. 659 00:31:50,050 --> 00:31:53,460 Nú er þetta forrit er að verða betri og betur hannað öllum líkindum vegna þess að það er 660 00:31:53,460 --> 00:31:56,450 miklu, miklu læsilegri en það er ekki við skulum leiðrétta. 661 00:31:56,450 --> 00:31:57,600 Gera nýta. 662 00:31:57,600 --> 00:31:58,930 . / Nýta. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Skulum keyra það aftur, D-A-V-I-D. OK, þannig að við erum enn í 664 00:32:03,220 --> 00:32:04,250 nokkuð gott form. 665 00:32:04,250 --> 00:32:06,030 >> En nú til efri. 666 00:32:06,030 --> 00:32:09,720 Ég leggja til að það er einn fágun við gætum gert sem myndi vera 667 00:32:09,720 --> 00:32:12,820 mjög gott, sem gæti raunverulega herða upp þennan kóða og virkilega gefa okkur fimm 668 00:32:12,820 --> 00:32:15,150 af fimm fyrir hönnun, til dæmis. 669 00:32:15,150 --> 00:32:16,510 Hvað væri gaman að losna við? 670 00:32:16,510 --> 00:32:20,770 Jæja, líta hvernig fjandinn lengi þetta blokk af númerið er bara að gera eitthvað einfalt. 671 00:32:20,770 --> 00:32:23,850 >> Nú eins og til hliðar, eins og þú might hafa séð í frábær lið á síðasta 672 00:32:23,850 --> 00:32:27,570 helgi, þú ekki aðeins þurft að hrokkið axlabönd þegar þú ert bara einn 673 00:32:27,570 --> 00:32:32,180 lína af kóða, jafnvel þó að við lagt halda þeim svo að það gerir mikið 674 00:32:32,180 --> 00:32:36,190 skýrari, eins og í grunni er U-laga blokkir, hvað er inni í útibúinu. 675 00:32:36,190 --> 00:32:40,170 En væri það ekki gott ef að efri, þegar gefið inntak þess, sneri það inn 676 00:32:40,170 --> 00:32:44,730 hástafi ef það er ekki, og það myndi vera dásamlegt í gagnstæða tilfelli ef 677 00:32:44,730 --> 00:32:47,210 það er nú þegar hástafi? 678 00:32:47,210 --> 00:32:49,620 Bara gefa það í gegnum og láta það standa. 679 00:32:49,620 --> 00:32:50,660 >> Svo kannski það gerir það. 680 00:32:50,660 --> 00:32:52,990 Ég gæti reynt og bara vona að það er, en láta mig 681 00:32:52,990 --> 00:32:54,450 kynna einn annar hlutur. 682 00:32:54,450 --> 00:32:57,440 Í stað þess að nota þessa innbyggða í flugstöðinni glugga niður hér, muna að 683 00:32:57,440 --> 00:33:01,130 þetta veldi svart táknið gefur þér stærri skjáglugga sem ég get full 684 00:33:01,130 --> 00:33:02,260 skjár ef ég vil? 685 00:33:02,260 --> 00:33:05,820 Svo kemur í ljós að þeir eru svona einkennilega heitir, en það er þetta sem heitir 686 00:33:05,820 --> 00:33:10,970 man síðum, handbók síður, maður fyrir stuttu, og ég get nálgast þetta með því að 687 00:33:10,970 --> 00:33:14,515 slá maður - 688 00:33:14,515 --> 00:33:15,570 hvað ég vil að slá? 689 00:33:15,570 --> 00:33:17,830 Man til efri. 690 00:33:17,830 --> 00:33:21,090 >> Og nú eftir ef til er virka inni í tölvunni, í 691 00:33:21,090 --> 00:33:23,970 þetta mál tækið, sem er bara stýrikerfi Linux, er það að fara 692 00:33:23,970 --> 00:33:27,920 að gefa mér nokkuð dulinn hóp framleiðsla, en þú munt komast yfir tíma sem 693 00:33:27,920 --> 00:33:31,720 það alltaf er sniðinn ansi mikið sama svo þú byrjar að venjast henni. 694 00:33:31,720 --> 00:33:35,130 Tilkynning efst til efri og virðist er það sama gögn 695 00:33:35,130 --> 00:33:35,680 fyrir að lækka. 696 00:33:35,680 --> 00:33:38,740 Hver skrifaði það var skorið sumir horn og setja það allt á einni síðu. 697 00:33:38,740 --> 00:33:40,720 Þessir hlutir 'tilgangur í lífið er til að breyta 698 00:33:40,720 --> 00:33:42,780 bréf til efri eða lágstafir. 699 00:33:42,780 --> 00:33:46,290 >> Takið eftir að undir Ágrip, maðurinn síðu er að kenna mér hvaða skrá sem ég hef 700 00:33:46,290 --> 00:33:48,130 að fela að nota þetta. 701 00:33:48,130 --> 00:33:51,320 Það er að gefa mér áritun fyrir þær aðgerðir, bæði af þeim, jafnvel 702 00:33:51,320 --> 00:33:53,510 þó við aðeins núna hugsa um eitt. 703 00:33:53,510 --> 00:33:54,730 Hér er nú lýsing. 704 00:33:54,730 --> 00:33:58,800 Til efri breytir bréf c að hástafi ef mögulegt er. 705 00:33:58,800 --> 00:34:02,280 >> Enn ekki að lærdómsríkt, en láta mig nú líta undir skilagildi, málið 706 00:34:02,280 --> 00:34:03,520 sem er afhent til baka. 707 00:34:03,520 --> 00:34:08,600 Svo er gildi aftur að af breytt stafa eða c ef 708 00:34:08,600 --> 00:34:09,870 ummyndun var ekki hægt. 709 00:34:09,870 --> 00:34:11,202 Hvað er c? 710 00:34:11,202 --> 00:34:12,560 >> Upprunalega staf. 711 00:34:12,560 --> 00:34:15,370 >> Upprunalega eðli og við vitum að með því að, aftur, fara upp að 712 00:34:15,370 --> 00:34:19,179 ágrip, og hver skrifaði þetta virka ákvað bara að inntak 713 00:34:19,179 --> 00:34:22,909 að efri og neðri er bara geðþótta fara að vera kölluð c. 714 00:34:22,909 --> 00:34:24,909 Þeir gætu hafa kallað það eitthvað mest þeir vilja, en þeir héldu því 715 00:34:24,909 --> 00:34:26,270 einfalt og c. 716 00:34:26,270 --> 00:34:27,880 Svo ég hef haft samráð man síðunnar. 717 00:34:27,880 --> 00:34:31,870 Þessi setning sefa mig að ef það er ekki lágstafir bréf, það er 718 00:34:31,870 --> 00:34:34,969 fara bara að gefa mér aftur C, sem er fullkominn, sem þýðir að ég get að losna við 719 00:34:34,969 --> 00:34:36,199 annars ástand mitt. 720 00:34:36,199 --> 00:34:39,679 >> Svo láta mig fara aftur til gedit, og nú láta mig gera bara þetta. 721 00:34:39,679 --> 00:34:41,960 Ég ætla að afrita printf yfirlýsingu mína. 722 00:34:41,960 --> 00:34:45,969 Ég ætla að fara á undan og rétt innan The fyrir prentun lykkju sem út, og fá 723 00:34:45,969 --> 00:34:48,760 losa af nú allri þessari ef reisa. 724 00:34:48,760 --> 00:34:51,860 Var ekki slæm hugmynd, og það var mjög mikið rétt og í samræmi við 725 00:34:51,860 --> 00:34:54,100 allt sem við höfum boðað, en bara ekki nauðsynlegt. 726 00:34:54,100 --> 00:34:57,070 Um leið og þú átta sig sumir bókasafn virka til að einhver annar 727 00:34:57,070 --> 00:35:01,340 skrifaði, eða kannski þú skrifaðir annars staðar í skráin er hægt að nota það og í raun 728 00:35:01,340 --> 00:35:02,690 byrja að herða upp kóðann. 729 00:35:02,690 --> 00:35:06,080 >> Og þegar ég segi hluti eins góðum stíl, sú staðreynd að þessi manneskja sem kallast 730 00:35:06,080 --> 00:35:11,490 virka til efri, eða áður er lægra er frábærlega gagnleg vegna 731 00:35:11,490 --> 00:35:12,900 þeir eru mjög lýsandi. 732 00:35:12,900 --> 00:35:16,120 Þú myndir ekki vilja til að kalla virka þinn x og y og z, sem hafa 733 00:35:16,120 --> 00:35:19,620 miklu, miklu minna merkingu. 734 00:35:19,620 --> 00:35:25,160 Einhverjar spurningar um þessi röð um úrbætur? 735 00:35:25,160 --> 00:35:28,010 >> Svo nægja að segja eitt af Takeaways er jafnvel eins og eigin vandamál þitt 736 00:35:28,010 --> 00:35:30,960 setja - kannski Heimadæmi einn, en vissulega P setja tvo og áfram, jafnvel 737 00:35:30,960 --> 00:35:34,380 þegar þeir eru rétt þýðir ekki endilega meina þeir eru fullkomin bara 738 00:35:34,380 --> 00:35:36,155 enn eða sérstaklega vel hönnuð. 739 00:35:36,155 --> 00:35:38,420 Það er hinn ás til byrja að hugsa um. 740 00:35:38,420 --> 00:35:41,730 Þannig að þetta var band inni af þinn minni tölva ', en ef þú ert með 741 00:35:41,730 --> 00:35:46,180 allt fullt af stöfum eins H-E-L-L-O inni af RAM, ráð og 742 00:35:46,180 --> 00:35:51,330 að þú í forritinu kalla fá band mörgum sinnum þannig að þú 743 00:35:51,330 --> 00:35:54,200 kalla fá band einu sinni, þá kalla fá band aftur. 744 00:35:54,200 --> 00:35:55,880 Jæja, hvað er að fara að gerast með tímanum? 745 00:35:55,880 --> 00:35:59,170 >> Með öðrum orðum, ef þú ert með línu kóða, að vísu úr samhengi, eins og 746 00:35:59,170 --> 00:36:02,120 band s fær - 747 00:36:02,120 --> 00:36:02,960 skulum gera þetta. 748 00:36:02,960 --> 00:36:05,270 String nafn jafngildir fá band. 749 00:36:05,270 --> 00:36:08,590 Svo ætla að lína af kóða er ætlað að spyrja notanda um hans eða nafn hennar. 750 00:36:08,590 --> 00:36:14,580 Þessi næsta lína af kóða er ætlað að spyrja notandi fyrir hans eða skóla hennar, og 751 00:36:14,580 --> 00:36:15,920 þetta næsta lína, og svo framvegis. 752 00:36:15,920 --> 00:36:18,150 Segjum sem svo að við höldum að biðja notandi fyrir aðra og 753 00:36:18,150 --> 00:36:19,750 annað og annað band. 754 00:36:19,750 --> 00:36:22,390 Þeir eru að fara að vera í minni á sama tíma. 755 00:36:22,390 --> 00:36:24,280 Einn er ekki að fara að clobber hinn. 756 00:36:24,280 --> 00:36:26,420 School er ekki að skrifa yfir hinn. 757 00:36:26,420 --> 00:36:28,520 En hvar gera þeir allt endað í minni? 758 00:36:28,520 --> 00:36:32,030 >> Jæja, ef við byrjum að draga á skjánum, sem við getum notað þetta í 759 00:36:32,030 --> 00:36:35,800 hér eins chalkboard, ef þetta svart rétthyrningur táknar tölva míns 760 00:36:35,800 --> 00:36:39,800 minni, ég ætla að geðþótta byrja skipta henni upp í litla ferninga, 761 00:36:39,800 --> 00:36:42,120 sem hver um sig táknar eitt bæti af minni. 762 00:36:42,120 --> 00:36:46,560 Frankly, ef þú hafa a gígabæti af vinnsluminni þessa dagana, hefur þú milljarð bæti 763 00:36:46,560 --> 00:36:49,540 af minni í tölvunni þinni, svo milljarða af þessum reitum. 764 00:36:49,540 --> 00:36:52,110 Svo nægja að segja, þetta er í raun ekki að mælikvarða. 765 00:36:52,110 --> 00:36:58,250 >> En við gátum haldið teikna allar þessar greinilega ekki að skala reitum, og þetta 766 00:36:58,250 --> 00:37:01,260 sameiginlega táknar Computer míns minni. 767 00:37:01,260 --> 00:37:03,136 Nú munum við bara gera punkt, punktur, punktur. 768 00:37:03,136 --> 00:37:06,260 Svo í öðrum orðum, þegar ég hvetja nú notandi með fá band til að gefa mér 769 00:37:06,260 --> 00:37:07,350 band, hvað gerist? 770 00:37:07,350 --> 00:37:14,270 Ef notandinn slær í "halló", sem endar upp í H-E-L-L-O. En geri ráð fyrir að 771 00:37:14,270 --> 00:37:15,720 notandinn slær þá í - 772 00:37:15,720 --> 00:37:17,250 Reyndar ætti ég ekki að hafa gert halló vegna þess að við erum að biðja 773 00:37:17,250 --> 00:37:18,330 þá fyrir nöfnum þeirra. 774 00:37:18,330 --> 00:37:20,580 Svo við skulum fara aftur ef ég get gert þetta. 775 00:37:20,580 --> 00:37:26,130 >> Þannig að ef ég tegund í D-A-V-I-D nafni mínu, en muna að annarri línu 776 00:37:26,130 --> 00:37:29,220 númer var að fá band aftur að fá skóla sína. 777 00:37:29,220 --> 00:37:32,090 Þar sem er að orð sem notandinn gerðir í að fara að fara næst? 778 00:37:32,090 --> 00:37:38,290 Jæja, kannski er það að fara inn í H-A-R-V-A-R-D. Svo jafnvel þó að ég hef 779 00:37:38,290 --> 00:37:41,560 teiknað það sem tvær línur, þetta er bara a heild búnt af bæti í þínum 780 00:37:41,560 --> 00:37:42,710 tölva RAM. 781 00:37:42,710 --> 00:37:46,560 Það er vandamál nú vegna þess að nú ef ég er nota RAM í þetta mjög sanngjarn 782 00:37:46,560 --> 00:37:49,910 en svoleiðis barnaleg leið, hvað getur þú ekki virðist greina? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Þar sem maður byrjar og þar einn endar, ekki satt? 785 00:37:54,680 --> 00:37:55,860 Þeir eru eins konar blurring saman. 786 00:37:55,860 --> 00:37:57,920 >> Svo kemur í ljós að tölva ekki gera þetta. 787 00:37:57,920 --> 00:38:04,720 Leyfðu mér að fletta í raun aftur í tímann á stafina og stað Harvard 788 00:38:04,720 --> 00:38:09,570 fara strax eftir nafni notandans, notandi fær raunverulega, bak 789 00:38:09,570 --> 00:38:12,000 við tjöldin, sérstakt eðli sett af 790 00:38:12,000 --> 00:38:13,885 tölva fyrir hann eða hana. 791 00:38:13,885 --> 00:38:19,470 / 0, annars þekkt sem NUL eðli annoyingly kallast N-U-L, ekki 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, en þú skrifar það sem / 0. 793 00:38:22,190 --> 00:38:27,130 Það er bara allar núll bits er merki í milli fyrsta orðið sem notandinn er 794 00:38:27,130 --> 00:38:28,290 slegið og annað. 795 00:38:28,290 --> 00:38:33,020 >> Svo Harvard reyndar endar nú upp sem þessari röð af stöfum 796 00:38:33,020 --> 00:38:36,110 og eitt / 0. 797 00:38:36,110 --> 00:38:41,690 Svo í öðrum orðum, með því að hafa þessar vörðr gildi, átta samliggjandi núll 798 00:38:41,690 --> 00:38:45,220 bits, getur þú nú að byrja að greina einn staf frá öðrum. 799 00:38:45,220 --> 00:38:49,720 Svo allan þennan tíma hvað var "halló" er raun "halló" við / 0, og 800 00:38:49,720 --> 00:38:53,580 meðan, það gæti mjög vel vera töluvert meira RAM 801 00:38:53,580 --> 00:38:56,400 inni í tölvunni. 802 00:38:56,400 --> 00:38:57,810 >> Leyfðu mér að gera einn annar hlutur núna. 803 00:38:57,810 --> 00:39:01,800 Það kemur í ljós að allar þessar reitum við höfum verið að teikna, þeir eru, já, 804 00:39:01,800 --> 00:39:06,140 strengir, en almennt, þetta eru fylki. 805 00:39:06,140 --> 00:39:10,590 An array er bara klumpur af minni það er aftur til baka til baka til baka, 806 00:39:10,590 --> 00:39:15,130 og þú notar venjulega array af leið þessarar fermetra krappi tákn. 807 00:39:15,130 --> 00:39:18,210 Þannig að við erum að fara að sjá þessar töluvert tímanum, en láta mig fara á undan og 808 00:39:18,210 --> 00:39:21,160 opna, við skulum kalla það aldur. 809 00:39:21,160 --> 00:39:23,920 Og taka eftir hvað við getum gert með þessir sömu bragðarefur, smá 810 00:39:23,920 --> 00:39:25,750 aðeins meira setningafræði hér. 811 00:39:25,750 --> 00:39:29,270 >> Svo í línu 17 þessarar áætlunar - reyndar, láta mig hlaupa the program fyrst 812 00:39:29,270 --> 00:39:30,770 svo við getum séð hvað þetta gerir. 813 00:39:30,770 --> 00:39:33,530 Leyfðu mér að kalla að aldri til þýða þetta forrit. 814 00:39:33,530 --> 00:39:34,950 . / Aldur. 815 00:39:34,950 --> 00:39:36,480 Hversu margir eru í herberginu? 816 00:39:36,480 --> 00:39:38,020 Kalla það þrír. 817 00:39:38,020 --> 00:39:39,575 Aldur fyrsta manneskja? 818 00:39:39,575 --> 00:39:42,710 18, 19, og 20. 819 00:39:42,710 --> 00:39:46,770 Og nú nokkuð hlægilegur, bara ég hafa gert forrit sem aldur þá 820 00:39:46,770 --> 00:39:47,740 þrír menn. 821 00:39:47,740 --> 00:39:50,390 >> Svo er það greinilega tækifæri fyrir sumir gaman tölur hér. 822 00:39:50,390 --> 00:39:51,560 Sem betur fer, stærðfræði er rétt. 823 00:39:51,560 --> 00:39:54,720 18 fóru í 19, 19 fór til 20 og svo framvegis. 824 00:39:54,720 --> 00:39:58,510 En hvað er raunverulega ætlað að vera lýsandi hér er hvernig við erum að geyma 825 00:39:58,510 --> 00:40:00,190 aldur þessara þriggja fólks. 826 00:40:00,190 --> 00:40:02,370 Leyfðu mér að súmma inn á hvað er fara á hér. 827 00:40:02,370 --> 00:40:06,240 >> Svo fyrst, þessar fyrstu línur ættu að fá nokkuð kunnuglegt. 828 00:40:06,240 --> 00:40:08,770 Ég ætla bara vekur notandi til að fjöldi fólks í herberginu. 829 00:40:08,770 --> 00:40:11,490 Þá er ég að nota fá int og gera á meðan við gera þetta aftur og aftur og aftur. 830 00:40:11,490 --> 00:40:15,780 Við höfum séð að mynstur áður, en lína 27 er nýr og í raun alveg 831 00:40:15,780 --> 00:40:18,160 gagnlegur, og mun verða sífellt að gagni. 832 00:40:18,160 --> 00:40:21,620 Takið eftir að það er öðruvísi í takt 27. er að ég virðist vera að lýsa yfir 833 00:40:21,620 --> 00:40:23,960 int kallast aldri, en bíddu. 834 00:40:23,960 --> 00:40:27,140 Það er ekki bara int aldur. 835 00:40:27,140 --> 00:40:30,130 Það er þessi hornklofum, inni sem er táknað með n. 836 00:40:30,130 --> 00:40:35,150 >> Svo krappi n í þessu samhengi, ekki inni í printf yfirlýsingu hér en 837 00:40:35,150 --> 00:40:44,370 í þetta eina línu 27, þessi lína er segja, að gefa mér n ints, hver 838 00:40:44,370 --> 00:40:46,080 er int. 839 00:40:46,080 --> 00:40:49,870 Þannig að þetta er fötu, svo að segja, af, í þessu tilfelli, þrír heilar tölur aftur til 840 00:40:49,870 --> 00:40:52,770 aftur til baka þannig að ég í raun hafa þrjú breytur. 841 00:40:52,770 --> 00:40:54,890 The val, til að vera ljóst, væri þetta. 842 00:40:54,890 --> 00:40:57,400 >> Ef ég vildi í fyrsta nemanda aldur, gæti ég gert þetta. 843 00:40:57,400 --> 00:40:59,520 Ef ég vildi annað nemanda Aldur ég gæti gert þetta. 844 00:40:59,520 --> 00:41:01,860 Ef ég vildi þriðja nemanda aldur, gæti ég gert þetta. 845 00:41:01,860 --> 00:41:04,320 Og Guð forði við þurfum allir er aldri í þessu herbergi - 846 00:41:04,320 --> 00:41:07,670 Ég meina, þetta er Heck af a einhver fjöldi af afrit, líma aftur og aftur og aftur. 847 00:41:07,670 --> 00:41:10,870 Og plús þegar ég þýða þetta forrit, ef annar nemandi gengur í gegnum út 848 00:41:10,870 --> 00:41:14,200 þess dyr, nú númerið mitt af breytum er rangt. 849 00:41:14,200 --> 00:41:17,450 >> Svo er það sem er gott um fjölda sem leið og þú byrjar að tilfinning sjálfur 850 00:41:17,450 --> 00:41:20,190 afrita og líma, eru líkurnar það er ekki besta nálgun. 851 00:41:20,190 --> 00:41:22,240 An array er síbreytilegt hugsanlega. 852 00:41:22,240 --> 00:41:24,610 Ég veit ekki fyrirfram hversu margir eru að fara að vera í herberginu, 853 00:41:24,610 --> 00:41:28,670 en ég veit að ég þarf n af þeim, og ég mun reikna út n þegar tíminn kemur. 854 00:41:28,670 --> 00:41:35,500 Þessi lína af kóða núna þýðir, gefa mér klumpur af minni sem lítur svona út 855 00:41:35,500 --> 00:41:40,380 þar sem fjöldi kassa á skjánum er algjörlega háð n að 856 00:41:40,380 --> 00:41:42,010 sem notandinn slegið inn 857 00:41:42,010 --> 00:41:44,850 >> Svo nú restin af þessu forriti er reyndar nokkuð svipað og við 858 00:41:44,850 --> 00:41:46,860 bara gerði með stafi. 859 00:41:46,860 --> 00:41:49,970 Tilkynning Ég hef á fyrir lykkja byrja í línu 30. 860 00:41:49,970 --> 00:41:54,920 Svo rétt eftir að ég fá array, ég iterate frá Y jafn núlli á allt að n. 861 00:41:54,920 --> 00:41:58,890 Ég hef bara þetta lærdómsríkt printf skilaboð bara að segja, gefa mér aldri 862 00:41:58,890 --> 00:42:03,690 manneskja #% i, svo númer eitt, númer tvö, númer þrjú. 863 00:42:03,690 --> 00:42:04,730 Og hvers vegna gerði ég þetta? 864 00:42:04,730 --> 00:42:08,870 Frankly, vilja menn að telja frá einum á allt en þeim vísindamönnum tölva, 865 00:42:08,870 --> 00:42:09,620 núll á allt. 866 00:42:09,620 --> 00:42:11,700 tölva vísindamenn eru ekki að fara að nota þessa tegund af áætlun, þannig að við erum 867 00:42:11,700 --> 00:42:13,990 fara bara að byrja að telja á einn eins venjulegt fólk. 868 00:42:13,990 --> 00:42:17,630 >> Og nú í samræmi 33, taka örlítið mismunandi stykki af setningafræði. 869 00:42:17,630 --> 00:42:23,710 I-ta aldri í þeirri breytu af tegund array er að fara að fá int. 870 00:42:23,710 --> 00:42:25,770 Og nú loks, þetta er bara tölur hérna. 871 00:42:25,770 --> 00:42:29,200 Ég ákvað í sérstakri lykkju til kröfu nokkur tími líður, og nú í þessu 872 00:42:29,200 --> 00:42:31,400 aðskilin lykkja, framkvæma þessar línur. 873 00:42:31,400 --> 00:42:35,810 >> Á ári héðan, maður ég mun vera ég ára, en taka þetta er ekki 874 00:42:35,810 --> 00:42:36,500 Variable i. 875 00:42:36,500 --> 00:42:38,390 Þetta er nú% i fyrir int. 876 00:42:38,390 --> 00:42:43,210 Og tilkynningu sem fyrsta tákn, ég stinga í i plús 1, svo við teljum eins og 877 00:42:43,210 --> 00:42:44,250 eðlileg manneskja. 878 00:42:44,250 --> 00:42:49,190 Og þá fyrir verðmæti aldri þeirra, til i ára, tek ég aldur krappi 879 00:42:49,190 --> 00:42:52,980 ég - og hvers vegna er ég að gera plús einn hér? 880 00:42:52,980 --> 00:42:53,760 Þeir aldrinum bara. 881 00:42:53,760 --> 00:42:55,030 Það er heimskulegt val mitt af forritum. 882 00:42:55,030 --> 00:42:56,810 Þeir aldrinum bara eitt ár. 883 00:42:56,810 --> 00:42:59,770 Ég gæti slegið í hvaða númer sem Ég vil í raun þar. 884 00:42:59,770 --> 00:43:02,430 >> Svo er það í raun allt mikilvægi hér? 885 00:43:02,430 --> 00:43:07,610 Jæja, láttu mig fletta reyndar aftur hérna og mála mynd 886 00:43:07,610 --> 00:43:10,830 um það sem framundan er. 887 00:43:10,830 --> 00:43:15,720 Það sem við munum vera að gera við næsta vor Heimadæmi tvö er fór að fikta í 888 00:43:15,720 --> 00:43:17,070 veröld dulmál. 889 00:43:17,070 --> 00:43:22,500 Þannig að þetta er band af stöfum, svo röð margra stafir, og hvað 890 00:43:22,500 --> 00:43:23,750 þýðir þetta að segja? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 Það er ekki í online útgáfa af skyggnum. 893 00:43:30,600 --> 00:43:35,880 >> Svo ég halda því fram að þetta jafngildir þetta, heimskur auglýsing frá mörgum árum 894 00:43:35,880 --> 00:43:39,950 síðan sem gæti raunverulega muna einn af uppruna sínum. 895 00:43:39,950 --> 00:43:42,740 Svo er þetta dæmi um dulkóðun eða dulmál. 896 00:43:42,740 --> 00:43:46,150 Það kemur í ljós að ef þú vilt að raunverulega senda upplýsingar eða deila 897 00:43:46,150 --> 00:43:49,310 upplýsingar með einhverjum á öruggan hátt, eins og skilaboð eins og þetta, getur þú 898 00:43:49,310 --> 00:43:50,500 Scramble stafina. 899 00:43:50,500 --> 00:43:53,170 En yfirleitt eru orðin ekki spæna handahófi. 900 00:43:53,170 --> 00:43:56,365 Þeir eru permuted á einhvern hátt eða breytt á einhvern hátt þannig að - Úps. 901 00:43:56,365 --> 00:43:59,040 Það er gaman Spilla fyrir næsta tíma. 902 00:43:59,040 --> 00:44:04,390 >> Svo þú getur kortinu hvað er greinilega O til B. Tilkynning sem línur upp 903 00:44:04,390 --> 00:44:05,420 fjármögnun-vitur. 904 00:44:05,420 --> 00:44:07,960 Virðist verða r e. 905 00:44:07,960 --> 00:44:14,000 Apparently verður F-H-E-R S-U-R-E. Svo það kemur í ljós að það er kortlagning, og í 906 00:44:14,000 --> 00:44:18,720 þetta mál það er ansi heimskur kortleggja ef einhver hefur mynstrağur það út? 907 00:44:18,720 --> 00:44:21,440 Þetta er eitthvað sem kallast Rot 13. Snúa 13.. 908 00:44:21,440 --> 00:44:24,760 Það er stupidest af dulkóðun kerfi vegna þess að það bara bókstaflega 909 00:44:24,760 --> 00:44:29,160 bætir 13 við hvert eitt af bréfum, heimskur í þeim skilningi að ef þú bara 910 00:44:29,160 --> 00:44:31,890 hafa a hluti af frítíma á höndum þínum og blýantur, eða þú heldur bara það 911 00:44:31,890 --> 00:44:35,260 í gegnum höfuðið, gætirðu reynt allar mögulegar viðbætur - einn, tveir, 912 00:44:35,260 --> 00:44:38,470 þrír, punktur, punktur, punktur, 25 bara snúa öllu stafrófið, og 913 00:44:38,470 --> 00:44:40,860 lokum, munt þú reikna út hvað þetta skilaboð. 914 00:44:40,860 --> 00:44:43,700 Svo ef þú gerðir eitthvað svona í GRADE SCHOOL brottför skilaboð til þín 915 00:44:43,700 --> 00:44:46,830 besti vinur, ef einkunn skólinn þinn kennari lesa einfaldlega í gegnum 916 00:44:46,830 --> 00:44:50,320 skilaboð og skepna afl lausn, þú gætir hafa fengið 917 00:44:50,320 --> 00:44:52,550 svar við því. 918 00:44:52,550 --> 00:44:54,970 >> Nú auðvitað, í hinum raunverulega heimi, dulmál er flóknari. 919 00:44:54,970 --> 00:45:00,120 Þetta er bút af texta frá tölvukerfi sem hefur notendanöfn og 920 00:45:00,120 --> 00:45:03,630 lykilorð, eins og næstum allir af okkar gera, og þetta er það aðgangsorðið þitt gæti 921 00:45:03,630 --> 00:45:07,260 líta út ef geymt á harða þinn aka en í dulkóðuðu formi. 922 00:45:07,260 --> 00:45:11,050 Þetta er ekki bara snúningur á bréfum, A er B og B er C. Þetta er 923 00:45:11,050 --> 00:45:15,620 miklu flóknari, en það notar hvað er almennt þekktur eins og leyndarmál lykill 924 00:45:15,620 --> 00:45:16,690 dulmál. 925 00:45:16,690 --> 00:45:20,210 Þessi mynd segir eftirfarandi saga með nokkrum táknum. 926 00:45:20,210 --> 00:45:22,250 >> Á vinstri, höfum við það við munum kalla texta. 927 00:45:22,250 --> 00:45:25,420 Í heimi dulmál, látlaus texti er bara upprunalega skeytið 928 00:45:25,420 --> 00:45:29,050 skrifað á ensku eða frönsku eða hvaða tungumáli alls. 929 00:45:29,050 --> 00:45:32,405 Ef þú vilt að dulkóða það, munum við fara það pictorially gegnum hengilás, svo 930 00:45:32,405 --> 00:45:35,580 sumar konar reiknirit, sum virka eða forrit sem einhver skrifaði 931 00:45:35,580 --> 00:45:39,880 að ruglar stafina vonandi meira complicatedly en bara að bæta 13 932 00:45:39,880 --> 00:45:40,980 til hvers þeirra. 933 00:45:40,980 --> 00:45:43,780 >> Það sem þú færð út úr því ferli í miðja það er kallað cyphertext. 934 00:45:43,780 --> 00:45:44,850 Svo konar kynþokkafullur orð. 935 00:45:44,850 --> 00:45:47,630 Það þýðir bara að það er dulkóðuð útgáfa af texta. 936 00:45:47,630 --> 00:45:52,570 Og aðeins ef þú hafa þessi sömu leyndarmál, 13 eða mínus 13, þú ert fær um að 937 00:45:52,570 --> 00:45:54,970 hallmæla skilaboð eins og þessi. 938 00:45:54,970 --> 00:45:57,770 >> Svo í Heimadæmi Tveir, meðal hluti þú munt gera ef í Hacker 939 00:45:57,770 --> 00:46:01,860 Edition, verður þú að skrifa kóða til að sprunga þessum lykilorðum, vangaveltur út 940 00:46:01,860 --> 00:46:05,170 hvað þeir voru og hvernig þeir voru dulkóðuð, þó að við gerum gefa þér aðeins 941 00:46:05,170 --> 00:46:06,460 af ráðgjöf á leiðinni. 942 00:46:06,460 --> 00:46:09,320 Í Standard Edition, munum við kynna a par af dulmál, dulkóðun 943 00:46:09,320 --> 00:46:12,400 kerfi, kallaði einn Caesar, einn kallað Vigenere, eru sem enn 944 00:46:12,400 --> 00:46:16,100 hverfi dulmál þar A verður eitthvað, B verður eitthvað, en 945 00:46:16,100 --> 00:46:18,820 þú þarft að gera það kerfisbundið vegna þess að það mun örugglega vera leyndarmál 946 00:46:18,820 --> 00:46:22,840 lykill að ræða, sem er oftast a tala eða leitarorð sem aðeins 947 00:46:22,840 --> 00:46:26,420 sendanda og viðtakanda þeirra skilaboð ættu að skilja. 948 00:46:26,420 --> 00:46:28,660 >> Nú, þetta hefur í raun jarðvistir í hinum raunverulega heimi. 949 00:46:28,660 --> 00:46:32,910 Þetta, til dæmis, er lítill munaðarlaus Leyndarmál Annie er tengd hringur og þú 950 00:46:32,910 --> 00:46:35,180 geta í raun koma þessum hverfi dulmál - 951 00:46:35,180 --> 00:46:37,930 A verður eitthvað, B verður eitthvað - með a par af hjólum, 952 00:46:37,930 --> 00:46:40,840 einn að utan, einn á inni þannig að ef þú snúa hjólinu eða 953 00:46:40,840 --> 00:46:44,170 hringur, þú geta raunverulega stilla upp bréf með mismunandi bókstöfum, 954 00:46:44,170 --> 00:46:45,430 fá leyndarmál merkjamál. 955 00:46:45,430 --> 00:46:48,110 Og svo sem cliffhanger fyrir í dag, það sem ég hélt ég myndi gera er hluti af 956 00:46:48,110 --> 00:46:52,170 throwback að ef þú kveikir á sjónvarpinu desember 24, getur þú horfa á 957 00:46:52,170 --> 00:46:55,390 bíómynd auglýsingu nauseum fyrir 24 tímar í röð. 958 00:46:55,390 --> 00:47:06,030 En í dag, ég opna það upp hér og gefa okkur bara tvær mínútur að 959 00:47:06,030 --> 00:47:13,493 pedagogically viðeigandi jól Story með smá náungi heitir Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [Vídeó spilun] 961 00:47:14,400 --> 00:47:17,420 >> -Að það er vitað til allra og ýmis að Ralph Parker er hér með skipað 962 00:47:17,420 --> 00:47:20,650 fulltrúi í Little Orphan Annie leyndarmál hring og er rétt að öllu 963 00:47:20,650 --> 00:47:23,460 heiður og ávinningur koma á framfæri. 964 00:47:23,460 --> 00:47:25,990 >> -Undirritaður, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Countersigned, Pierre Andre í bleki. 966 00:47:30,100 --> 00:47:34,270 Heiður og ávinning þegar á aldrinum níu. 967 00:47:34,270 --> 00:47:39,440 >> [Hrópa í útvarpi] 968 00:47:39,440 --> 00:47:40,770 >> Komdu, við skulum fá á við það. 969 00:47:40,770 --> 00:47:44,965 Ég þarf ekki öll þessi djass um Smugglers og sjóræningjum. 970 00:47:44,965 --> 00:47:48,270 >> -Hlusta á morgun fyrir gera ævintýri svarta 971 00:47:48,270 --> 00:47:49,650 sjóræningi skip. 972 00:47:49,650 --> 00:47:53,320 Nú er kominn tími fyrir Secret Annie er Skilaboð fyrir þig meðlimi 973 00:47:53,320 --> 00:47:55,720 á leyndarmál hring. 974 00:47:55,720 --> 00:47:56,580 Mundu, krakkar. 975 00:47:56,580 --> 00:48:01,720 Aðeins meðlimir Secret Circle Annie er geta lesa leyndarmál skilaboð Annie er. 976 00:48:01,720 --> 00:48:05,872 Mundu Annie er eftir þig. 977 00:48:05,872 --> 00:48:08,670 Setja pinna til B2. 978 00:48:08,670 --> 00:48:11,000 Hér eru skilaboðin. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Ég er í fyrsta leyndarmál fundi mínum. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre var í röddu í kvöld. 983 00:48:21,650 --> 00:48:24,830 Ég gæti sagt skilaboðin sem kvöld var mjög mikilvægt. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 Það er skilaboð frá Annie sjálf. 986 00:48:28,540 --> 00:48:30,086 Mundu, ekki segja neinum. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Sekúndum síðar, er ég í eina herbergi í húsinu þar sem drengur níu 989 00:48:38,710 --> 00:48:42,668 gæti setið í næði og lesa. 990 00:48:42,668 --> 00:48:47,628 Aha, B. Ég fór til the næstur. 991 00:48:47,628 --> 00:48:53,060 E. Fyrsta orðið er "að vera." S. Það var að koma auðveldara núna. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 Það er R. 994 00:48:55,940 --> 00:48:56,900 >> -Komdu, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Ég verð að fara. 996 00:48:57,860 --> 00:48:59,780 >> -Ég kem strax niður, Ma. 997 00:48:59,780 --> 00:49:01,030 Gee whiz. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Vertu viss um að. 1000 00:49:08,220 --> 00:49:09,500 Vertu viss um að hvað? 1001 00:49:09,500 --> 00:49:11,660 Hvað var Little Orphan Annie að reyna að segja? 1002 00:49:11,660 --> 00:49:12,844 Vertu viss um að hvað? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy hefur fengið að fara. 1004 00:49:14,732 --> 00:49:16,148 Ætlarðu vinsamlegast koma út? 1005 00:49:16,148 --> 00:49:17,092 >> -Allt í lagi, mamma. 1006 00:49:17,092 --> 00:49:18,510 Ég kem strax út. 1007 00:49:18,510 --> 00:49:20,270 >> -Ég var að fá nær nú. 1008 00:49:20,270 --> 00:49:21,823 Spennan var skelfilegt. 1009 00:49:21,823 --> 00:49:23,045 Hvað var það? 1010 00:49:23,045 --> 00:49:26,510 Örlög jörðinni getur hanga í jafnvægi. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, gotta fara Randy er. 1012 00:49:28,985 --> 00:49:32,680 >> -Ég rétt út fyrir gráta upphátt. 1013 00:49:32,680 --> 00:49:33,956 >> -Almost there. 1014 00:49:33,956 --> 00:49:35,140 Fingur minn flaug. 1015 00:49:35,140 --> 00:49:36,880 Hugur minn var stál gildru. 1016 00:49:36,880 --> 00:49:38,010 Sérhver svitahola titrað. 1017 00:49:38,010 --> 00:49:39,878 Það var næstum tær. 1018 00:49:39,878 --> 00:49:43,210 Já, já, já, já, já. 1019 00:49:43,210 --> 00:49:49,030 >> -Vertu viss um að drekka Ovaltine þína. 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 crummy auglýsing? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Skepnan. 1025 00:50:00,694 --> 00:50:01,900 >> [END vídeó spilun] 1026 00:50:01,900 --> 00:50:04,260 >> Ræðumaður 1: Þetta er CS50, og að verður Heimadæmi Two. 1027 00:50:04,260 --> 00:50:06,305 Sjáumst í næstu viku. 1028 00:50:06,305 --> 00:50:08,800 >> Ræðumaður 2: Á næstu CS50, þetta gerist. 1029 00:50:08,800 --> 00:50:11,060 >> Ræðumaður 1: Svo eitt atriði sem við höfum ekki horfði á svona langt 1030 00:50:11,060 --> 00:50:12,220 að punkta virka. 1031 00:50:12,220 --> 00:50:14,540 Nú, fall bendillinn er bara veffang opinber 1032 00:50:14,540 --> 00:50:17,000 virka, en líkt - 1033 00:50:17,000 --> 00:50:18,250 sonur - 1034 00:50:18,250 --> 00:50:19,670