1 00:00:00,000 --> 00:00:02,970 >> [TÓNLIST] 2 00:00:02,970 --> 00:00:14,355 3 00:00:14,355 --> 00:00:15,700 >> DAVID J. Malan: Allt í lagi. 4 00:00:15,700 --> 00:00:18,832 Þetta er CS50 og þetta er að byrja á viku 2. 5 00:00:18,832 --> 00:00:21,040 Og þú munt minnast þess að yfir the fortíð par af vika, 6 00:00:21,040 --> 00:00:24,490 við höfum verið að kynna tölvuna vísindi og á móti, forritun. 7 00:00:24,490 --> 00:00:27,640 >> Og við byrjuðum söguna með því að Scratch, það myndræna tungumál 8 00:00:27,640 --> 00:00:28,990 frá MIT Media Lab. 9 00:00:28,990 --> 00:00:30,780 Og þá síðast, í síðustu viku, gerði við 10 00:00:30,780 --> 00:00:34,450 kynna higher-- A lægra stigi tungumál þekkt 11 00:00:34,450 --> 00:00:36,770 sem C, eitthvað sem er eingöngu texta. 12 00:00:36,770 --> 00:00:39,440 Og reyndar síðasta sinn sem við kanna í því samhengi 13 00:00:39,440 --> 00:00:40,450 fjölda hugtaka. 14 00:00:40,450 --> 00:00:43,010 >> Þetta muna, var mjög Fyrsta forritið sem við leit á. 15 00:00:43,010 --> 00:00:45,710 Og þetta program, einfaldlega, prentar út, "Halló, heimur." 16 00:00:45,710 --> 00:00:47,730 En það er svo mikið virðist galdur í gangi. 17 00:00:47,730 --> 00:00:51,460 Það er þetta #include með þessum Oddklofa. 18 00:00:51,460 --> 00:00:52,170 Það er Int. 19 00:00:52,170 --> 00:00:53,020 Það er (tóm). 20 00:00:53,020 --> 00:00:56,330 Það er svigum, hrokkið axlabönd, hálf-tvípunkta, og svo margt fleira. 21 00:00:56,330 --> 00:00:58,480 >> Og svo, muna að við kynntum Scratch 22 00:00:58,480 --> 00:01:02,110 svo að við gætum helst sjá fortíðina að setningafræði, efni sem er í raun ekki 23 00:01:02,110 --> 00:01:04,590 allt sem vitsmunalega áhugavert en snemma á 24 00:01:04,590 --> 00:01:07,700 er algerlega, svolítið erfiður að vefja huganum kring. 25 00:01:07,700 --> 00:01:10,860 Og reyndar einn af algengustu hlutir snemma á í forritun bekknum, 26 00:01:10,860 --> 00:01:13,443 sérstaklega fyrir þeim sem minna þægilegt, er að fá svekktur með 27 00:01:13,443 --> 00:01:17,460 og skemmtiferðamaður upp af ákveðinni setningafræðilegar villur, svo ekki sé minnst rökrétt villur. 28 00:01:17,460 --> 00:01:19,800 Og svo meðal markmiðum okkar í dag, í raun, mun 29 00:01:19,800 --> 00:01:23,280 vera að búa þig með nokkrum leysa vandamál aðferðir til hvernig 30 00:01:23,280 --> 00:01:26,705 til betri leysa vandamál sjálfir í formi kembiforrit. 31 00:01:26,705 --> 00:01:29,330 Og þú munt muna líka, að umhverfi sem við kynntum 32 00:01:29,330 --> 00:01:31,780 síðast þegar var kallað CS50 IDE. 33 00:01:31,780 --> 00:01:34,850 Þetta er vefur-undirstaða hugbúnaður sem gerir þér kleift að forrita í skýinu, 34 00:01:34,850 --> 00:01:38,450 svo að segja, á meðan gæsla öll þín skrár saman, eins og við munum aftur í dag. 35 00:01:38,450 --> 00:01:41,480 Og muna að við Revisited þessi mál hér, 36 00:01:41,480 --> 00:01:44,480 meðal þeirra virka, og lykkjur, og breytur, og Boolean tjáning, 37 00:01:44,480 --> 00:01:45,110 og aðstæður. 38 00:01:45,110 --> 00:01:49,190 Og reyndar nokkrar fleiri sem við þýtt úr heimi grunni 39 00:01:49,190 --> 00:01:50,800 í heim C. 40 00:01:50,800 --> 00:01:53,220 >> En grundvallaratriði byggja blokkir, svo að segja, 41 00:01:53,220 --> 00:01:55,150 voru í raun enn sama í síðustu viku. 42 00:01:55,150 --> 00:01:57,900 Í raun, í raun við bara haft mismunandi ráðgáta stykki, ef þú vilt. 43 00:01:57,900 --> 00:02:00,300 Í stað þess að fjólublátt vista blokk, við staðinn 44 00:02:00,300 --> 00:02:02,940 hafði printf, sem er þessi aðgerð í C sem 45 00:02:02,940 --> 00:02:05,890 gerir þér kleift að prenta eitthvað og forsníða hana á skjánum. 46 00:02:05,890 --> 00:02:07,950 Við kynnti CS50 Bókasafn, þar sem þér 47 00:02:07,950 --> 00:02:11,420 hafa nú yfir að ráða get_char þitt, og get_int og get_string, 48 00:02:11,420 --> 00:02:14,610 og nokkrar aðrar aðgerðir sem vel, í gegnum sem þú getur fengið inntak 49 00:02:14,610 --> 00:02:16,260 frá eigin lyklaborði notandans. 50 00:02:16,260 --> 00:02:20,640 Og við tók einnig að líta á hlutina eins these- bool, og bleikju, 51 00:02:20,640 --> 00:02:22,490 og tvöfaldur, fljóta, int, long_long band. 52 00:02:22,490 --> 00:02:25,170 Og það er jafnvel aðrar tegundir gagna í C 53 00:02:25,170 --> 00:02:28,560 >> Með öðrum orðum, þegar þú lýsa breytu til að geyma nokkur gildi, 54 00:02:28,560 --> 00:02:32,600 eða þegar þú innleiða fall sem skilar nokkur gildi, 55 00:02:32,600 --> 00:02:35,290 er hægt að tilgreina hvað tegund af gildi sem er. 56 00:02:35,290 --> 00:02:37,310 Er það band, eins og röð af stöfum? 57 00:02:37,310 --> 00:02:39,490 Er það að tala, eins heiltala? 58 00:02:39,490 --> 00:02:41,390 Er það fleytitölu gildi, eða þess háttar? 59 00:02:41,390 --> 00:02:46,180 Svo í C, ólíkt grunni, við í raun byrjaði að tilgreina hvers konar gögn 60 00:02:46,180 --> 00:02:48,330 við vorum aftur eða nota. 61 00:02:48,330 --> 00:02:51,910 >> En, auðvitað, hljóp við einnig inn nokkrar grundvallar mörk computing. 62 00:02:51,910 --> 00:02:54,100 Og einkum, þetta tungumál C, muna 63 00:02:54,100 --> 00:02:57,070 að við kíktum á heiltala flæða, raunveruleiki 64 00:02:57,070 --> 00:03:00,460 að ef þú hefur aðeins endanlegt magn af minni 65 00:03:00,460 --> 00:03:04,600 eða, sérstaklega, með endanlegri fjölda bita, getur þú aðeins treyst svo hátt. 66 00:03:04,600 --> 00:03:08,460 Og svo skoðuðum við þetta dæmi hér þar teljari í flugvél, 67 00:03:08,460 --> 00:03:13,510 reyndar, ef keyra nógu lengi myndi flæða og leitt til hugbúnaði 68 00:03:13,510 --> 00:03:15,560 raunveruleg líkamleg möguleiki villa. 69 00:03:15,560 --> 00:03:18,600 >> Við leit einnig á fljótandi lið ónákvæmni, að veruleikinn 70 00:03:18,600 --> 00:03:22,280 að með aðeins endanlegri fjölda bita, hvort sem það er 32 eða 64, 71 00:03:22,280 --> 00:03:27,330 þú getur aðeins tilgreina svo margar tölur eftir kommu, eftir sem þú 72 00:03:27,330 --> 00:03:29,110 byrja að fá ónákvæm. 73 00:03:29,110 --> 00:03:32,360 Svo til dæmis, einn-þriðji í Heimurinn hér, í okkar manna heimi, 74 00:03:32,360 --> 00:03:35,360 við vitum er bara óendanlegur fjöldi á 3s eftir kommu. 75 00:03:35,360 --> 00:03:38,820 En tölvan getur ekki endilega tákna óendanlega fjölda af tölum 76 00:03:38,820 --> 00:03:42,590 ef þú leyfir aðeins það sumir endanlegt magn af upplýsingum. 77 00:03:42,590 --> 00:03:45,900 >> Svo ekki bara við búa þig með meiri krafti í skilmálum 78 00:03:45,900 --> 00:03:49,280 um hvernig þú gætir tjá þig á lyklaborð hvað varðar forritun, 79 00:03:49,280 --> 00:03:51,430 við einnig takmarkað hvað þú getur raunverulega gert. 80 00:03:51,430 --> 00:03:55,790 Og reyndar, galla og mistök geta skapast af þeim tegundum málum. 81 00:03:55,790 --> 00:03:59,900 Og reyndar, meðal efni í dag eru að fara að vera efni eins kembiforrit 82 00:03:59,900 --> 00:04:03,699 og í raun að leita undir hetta á hvernig hlutirnir voru kynnt í síðustu viku 83 00:04:03,699 --> 00:04:05,490 eru í raun til framkvæmda þannig að þú betur 84 00:04:05,490 --> 00:04:10,530 skil bæði getu og takmarkanir á tungumáli eins C. 85 00:04:10,530 --> 00:04:14,770 >> Og í raun, við munum afhýða aftur lag af einföldustu gögn uppbygging, 86 00:04:14,770 --> 00:04:17,756 eitthvað sem kallast fylki, þar sem Scratch gerist að hringja í "lista". 87 00:04:17,756 --> 00:04:19,589 Það er svolítið öðruvísi í því samhengi. 88 00:04:19,589 --> 00:04:23,340 Og þá munum við einnig kynna einn af fyrst vettvangssértæka vandamálum okkar 89 00:04:23,340 --> 00:04:26,790 í CS50, heimi dulmál, the list af spæna 90 00:04:26,790 --> 00:04:29,650 eða í ciphering upplýsingar svo sem hægt er að senda leyndarmál skilaboð 91 00:04:29,650 --> 00:04:34,520 og lesa leyndarmál skilaboð milli tveggja einstaklinga, A og B. 92 00:04:34,520 --> 00:04:37,490 >> Svo áður en við umskipti að þessi nýja veröld, 93 00:04:37,490 --> 00:04:42,059 við skulum reyna að búa þér með sumir tækni sem þú getur útrýma 94 00:04:42,059 --> 00:04:43,850 eða draga úr að minnsta kosti sumir af óánægju 95 00:04:43,850 --> 00:04:46,630 sem þú hefur sennilega komið upp á síðustu viku eingöngu. 96 00:04:46,630 --> 00:04:50,830 Í raun, á undan þér eru such-- sum Fyrstu vandamál þín í C og líkur eru, 97 00:04:50,830 --> 00:04:54,010 ef þú ert eins og mig, í fyrsta skipti þú reynir að slá út áætlun, 98 00:04:54,010 --> 00:04:57,330 jafnvel ef þú hugsa rökrétt The program er mjög einfalt, 99 00:04:57,330 --> 00:05:01,200 þú gætir mjög vel högg a veggur, og þýðandinn er ekki að fara að vinna. 100 00:05:01,200 --> 00:05:03,940 Gera eða Clang er ekki að fara að raunverulega gera boð þitt. 101 00:05:03,940 --> 00:05:05,450 >> Og hvers vegna gæti það verið? 102 00:05:05,450 --> 00:05:07,950 Jæja, við skulum taka a líta á, kannski, einföld forrit. 103 00:05:07,950 --> 00:05:11,190 Ég ætla að fara á undan og vista þetta í skrá vísvitandi heitir buggy0.c, 104 00:05:11,190 --> 00:05:13,590 vegna þess að ég veit það að gölluð fyrirfram. 105 00:05:13,590 --> 00:05:17,400 En ég gæti ekki átta sig á að ef þetta er fyrsta eða annað eða þriðja program 106 00:05:17,400 --> 00:05:18,830 að ég í raun að gera sjálfur. 107 00:05:18,830 --> 00:05:23,820 Þannig að ég ætla að fara á undan og slá út, int helstu (tóm). 108 00:05:23,820 --> 00:05:28,130 Og þá inni hrokkið axlabönd mínum, mjög kunnugur ( "halló, world-- 109 00:05:28,130 --> 00:05:30,980 sviga, n ") - og hálf-hreinsun. 110 00:05:30,980 --> 00:05:32,360 >> Ég hef vistað skrána. 111 00:05:32,360 --> 00:05:34,850 Nú ætla ég að fara niður til stöðvarinnar gluggann minn 112 00:05:34,850 --> 00:05:40,340 og gerð gera buggy0, vegna þess, aftur, nafn skrárinnar dag er buggy0.c. 113 00:05:40,340 --> 00:05:43,660 Svo ég slá gert buggy0, Enter. 114 00:05:43,660 --> 00:05:48,200 >> Og ó, nei, man frá síðasta sinn að engin villuskilaboð er gott. 115 00:05:48,200 --> 00:05:49,740 Svo engin framleiðsla er gott. 116 00:05:49,740 --> 00:05:52,920 En hér hef ég greinilega sumir tala um mistök. 117 00:05:52,920 --> 00:05:56,470 >> Svo fyrstu línu af framleiðslu eftir að slá gera buggy0, muna, 118 00:05:56,470 --> 00:05:59,540 er nokkuð fjölorður framleiðsla Clang er. 119 00:05:59,540 --> 00:06:02,067 Undir hetta, CS50 IDE er stillt 120 00:06:02,067 --> 00:06:04,150 að nota a heild búnt af möguleikar með þennan þýðanda 121 00:06:04,150 --> 00:06:05,941 þannig að þú þarft ekki að hugsa um þá. 122 00:06:05,941 --> 00:06:08,840 Og það er allt sem fyrsta línan þýðir að byrjar með Clang. 123 00:06:08,840 --> 00:06:11,720 >> En eftir það, vandamálin byrja að gera útlit þeirra. 124 00:06:11,720 --> 00:06:17,390 Buggy0.c á línu 3, eðli 5, það er stór, rauður villa. 125 00:06:17,390 --> 00:06:18,380 Hvað er þetta? 126 00:06:18,380 --> 00:06:23,562 Óbeint lýsa bókasafn virka printf með Tegund int (const char *, 127 00:06:23,562 --> 00:06:26,050 ...) [-Werror]. 128 00:06:26,050 --> 00:06:28,379 Ég meina, það mjög fljótt fær mjög yfirnáttúrulegt. 129 00:06:28,379 --> 00:06:30,170 Og vissulega, fyrst sýn, við gerðum ekki 130 00:06:30,170 --> 00:06:32,380 ætlast til að þú að skilja heild á þessi skilaboð. 131 00:06:32,380 --> 00:06:34,213 Og svo einn af þeim lærdóm dag er að fara 132 00:06:34,213 --> 00:06:36,919 að vera að reyna að taka mynstur, eða svipaða hluti, 133 00:06:36,919 --> 00:06:38,960 að villur sem þú gætir hafa fundur í fortíðinni. 134 00:06:38,960 --> 00:06:41,335 Svo skulum stríða sundur aðeins þau orð sem líta kunnuglega. 135 00:06:41,335 --> 00:06:44,290 The stór, rauður villa er greinilega táknrænt eitthvað sé rangt. 136 00:06:44,290 --> 00:06:47,940 >> óbeint lýsa bókasafn virka printf. 137 00:06:47,940 --> 00:06:51,680 Svo jafnvel ef ég er ekki alveg að skilja hvað óbeint lýsa bókasafn virka 138 00:06:51,680 --> 00:06:54,900 þýðir, vandamálið hlýtur snýr að printf einhvern veginn. 139 00:06:54,900 --> 00:06:59,130 Og uppspretta þeirrar útgáfu hefur að gera með að lýsa því. 140 00:06:59,130 --> 00:07:02,440 >> Lýsa fall er að minnast á það í fyrsta skipti. 141 00:07:02,440 --> 00:07:06,210 Og við notuðum hugtök í síðustu viku á að lýsa frumgerð fall er, 142 00:07:06,210 --> 00:07:11,860 annaðhvort með einni línu efst á þinn eigin skrá eða í svokölluðu haus skrá. 143 00:07:11,860 --> 00:07:15,300 Og í hvaða skrá gerði við segjum í síðustu viku að printf er vitna, 144 00:07:15,300 --> 00:07:17,080 unquote, lýsti? 145 00:07:17,080 --> 00:07:20,950 Í hvaða skrá er frumgerð hennar? 146 00:07:20,950 --> 00:07:24,640 >> Svo ef þú manst, mjög fyrstur hlutur ÉG slegið, nánast hvert forrit á síðasta time-- 147 00:07:24,640 --> 00:07:30,790 og tilviljun áðan byrjaði slá myself-- var þessi here-- 148 00:07:30,790 --> 00:07:38,630 hash-- #include 00:07:41,860 ef ég spara nú þessa skrá, ég ætla að fara á undan og hreinsa skjáinn minn, 150 00:07:41,860 --> 00:07:44,740 sem þú getur gert með því að slá Tær, eða þú getur haldið Control L, 151 00:07:44,740 --> 00:07:47,680 bara til að hreinsa endastöðvar þína bara til að koma í veg fyrir sumir ringulreið. 152 00:07:47,680 --> 00:07:51,370 >> Ég ætla að fara á undan og aftur gerð gera buggy0, Enter. 153 00:07:51,370 --> 00:07:53,790 Og voila, ég sé samt að langur stjórn frá Clang, 154 00:07:53,790 --> 00:07:55,470 en það er engin villuboð í þetta sinn. 155 00:07:55,470 --> 00:07:58,800 Og reyndar, ef ég geri ./buggy0, bara eins og síðasta sinn, 156 00:07:58,800 --> 00:08:01,860 þar punktur þýðir þetta skrá, Slash þýðir bara, 157 00:08:01,860 --> 00:08:05,040 hér kemur nafn af the program og að nafn af the program er buggy0, 158 00:08:05,040 --> 00:08:07,340 Enter, "Halló, heimur." 159 00:08:07,340 --> 00:08:09,440 >> Nú, hvernig gætir þú ert tína ax þessa lausn 160 00:08:09,440 --> 00:08:12,017 án þess endilega að viðurkenna eins mörg orð 161 00:08:12,017 --> 00:08:14,350 eins og ég gerði, vissulega, hafa gert þetta í mörg ár? 162 00:08:14,350 --> 00:08:18,720 Jæja, við gerum á fyrsta vandamál sett, munum við kynna þú til a stjórn 163 00:08:18,720 --> 00:08:21,175 að eigið starfsfólk CS50 er skrifaði heitir help50. 164 00:08:21,175 --> 00:08:24,300 Og reyndar, C gerir forskrift vandamálið sett um hvernig á að nota þetta. 165 00:08:24,300 --> 00:08:27,210 >> En help50 er fyrst og fremst forrit sem starfsfólk CS50 er 166 00:08:27,210 --> 00:08:30,850 skrifaði sem leyfir þér að keyra skipun eða keyra forrit, 167 00:08:30,850 --> 00:08:36,169 og ef þú skilur ekki þess framleiðsla, til að fara framhjá framleiðsla þess að help50, 168 00:08:36,169 --> 00:08:38,890 á hver benda hugbúnað að starfsfólk námskeiðinu skrifaði 169 00:08:38,890 --> 00:08:42,429 verður að líta á framleiðslu áætlunarinnar þinnar línu fyrir línu, eðli með staf. 170 00:08:42,429 --> 00:08:46,000 Og ef við, starfsfólk, viðurkenna villuboð sem þú ert að upplifa, 171 00:08:46,000 --> 00:08:50,580 Við munum reyna að vekja þig með nokkrum Retorísk spurningar, með einhverjum ráðum, 172 00:08:50,580 --> 00:08:54,890 líkt og TF eða CA eða mig myndi gera í eigin persónu á skrifstofutíma. 173 00:08:54,890 --> 00:08:58,320 >> Svo líta til help50 ef þú ert ekki endilega viðurkenna vandamál. 174 00:08:58,320 --> 00:09:00,790 En ekki treysta á það of mikið og hækja. 175 00:09:00,790 --> 00:09:03,990 Vissulega reyna að skilja hennar framleiðsla og þá læra af henni 176 00:09:03,990 --> 00:09:07,571 þannig að aðeins einu sinni eða tvisvar heldur þú alltaf hlaupa help50 fyrir tiltekna villa 177 00:09:07,571 --> 00:09:08,070 skilaboð. 178 00:09:08,070 --> 00:09:10,660 Eftir það, ættir þú að vera betur búið sjálfur 179 00:09:10,660 --> 00:09:13,180 að reikna út hvað það er í raun. 180 00:09:13,180 --> 00:09:14,350 >> Við skulum gera eitt annað hér. 181 00:09:14,350 --> 00:09:20,410 Leyfðu mér að fara á undan, og í öðru skrá við munum kalla þetta buggy1.c. 182 00:09:20,410 --> 00:09:23,110 Og í þessari skrá er ég fara til deliberately-- 183 00:09:23,110 --> 00:09:26,330 en þykjast að ég er ekki skilja hvað mistök sem ég hef gert. 184 00:09:26,330 --> 00:09:31,420 >> Ég ætla að fara á undan og gera this-- #include, þar sem ég hef 185 00:09:31,420 --> 00:09:33,660 lært lexíu mína frá í smá stund síðan. 186 00:09:33,660 --> 00:09:36,220 Int helstu (tóm), eins og áður. 187 00:09:36,220 --> 00:09:40,880 Og þá hér er ég að fara að gera band s - get_string. 188 00:09:40,880 --> 00:09:43,770 Og muna frá síðasta skipti sem þetta þýðir, hey, tölva, 189 00:09:43,770 --> 00:09:48,280 gefa mér breytu, kalla það er, og gera tegund breytunni a band 190 00:09:48,280 --> 00:09:50,150 svo ég get geymt eitt eða fleiri orð í henni. 191 00:09:50,150 --> 00:09:52,191 >> Og þá á hægri hönd hlið merkið 192 00:09:52,191 --> 00:09:54,980 er get_string, sem er virka í CS50 bókasafninu 193 00:09:54,980 --> 00:09:55,980 sem gerir einmitt það. 194 00:09:55,980 --> 00:09:59,740 Það fær virka og þá Hendur það frá hægri til vinstri. 195 00:09:59,740 --> 00:10:02,670 Þannig að þetta merkið þýðir ekki "Jafngildir" eins og við gætum hugsa í stærðfræði. 196 00:10:02,670 --> 00:10:04,750 Það þýðir verkefni frá hægri til vinstri. 197 00:10:04,750 --> 00:10:09,640 Þannig að þetta þýðir, taka band frá notandi og geyma það inni í s. 198 00:10:09,640 --> 00:10:10,460 >> Nú skulum nota það. 199 00:10:10,460 --> 00:10:13,820 Leyfðu mér að fara á undan núna og eins sekúndu lína, láta mig fara á undan og segja "halló" - 200 00:10:13,820 --> 00:10:19,330 ekki "heimur", en "halló,% s-- sem er tákn okkar, komma s, 201 00:10:19,330 --> 00:10:22,030 sem er breytilegt okkar, og þá hálf-hreinsun. 202 00:10:22,030 --> 00:10:26,070 Þannig að ef ég gerði ekki skrúfa upp of mikið hér, þetta lítur út eins og rétta númerið. 203 00:10:26,070 --> 00:10:28,090 >> Og eðlishvöt mín eru nú að þýða það. 204 00:10:28,090 --> 00:10:30,400 Skráin heitir buggy1.c. 205 00:10:30,400 --> 00:10:33,770 Þannig að ég ætla að gera gera buggy1, Enter. 206 00:10:33,770 --> 00:10:36,377 Og fjári-það, ef það er ekki jafnvel fleiri villur en áður. 207 00:10:36,377 --> 00:10:38,210 Ég meina, það er meira villuskilaboð það myndi 208 00:10:38,210 --> 00:10:40,400 virðast en raunverulegum línur í þessari áætlun. 209 00:10:40,400 --> 00:10:42,730 >> En takeaway hér er, jafnvel ef þú ert óvart 210 00:10:42,730 --> 00:10:45,040 með tveimur eða þremur eða Fjórir fleiri villuskilaboð, 211 00:10:45,040 --> 00:10:48,340 einblína alltaf á mjög fyrst af þessum skilaboðum. 212 00:10:48,340 --> 00:10:52,220 Þegar litið er á efsta flestum einn, rolla aftur upp eins þarf að vera. 213 00:10:52,220 --> 00:10:53,930 Svo hér er ég slóst úrbótarpróf buggy1. 214 00:10:53,930 --> 00:10:55,700 Hér er um að Clang framleiðsla eins og búist. 215 00:10:55,700 --> 00:10:57,290 >> Og hér er fyrsta rauða villa. 216 00:10:57,290 --> 00:11:02,370 Notkun á óskilgreinda kennimerki band, gerði ég meina staðall í? 217 00:11:02,370 --> 00:11:04,260 Svo er staðalbúnaður í reyndar eitthvað annað. 218 00:11:04,260 --> 00:11:06,240 Það vísar til notanda hljómborð, fyrst og fremst. 219 00:11:06,240 --> 00:11:08,080 >> En það er ekki það sem ég meinti. 220 00:11:08,080 --> 00:11:11,770 Ég ætlaði band, og ég þýddi get_string. 221 00:11:11,770 --> 00:11:16,200 Svo hvað er það sem ég gleymdi að gera þennan tíma? 222 00:11:16,200 --> 00:11:20,230 Hvað vantar í þetta sinn? 223 00:11:20,230 --> 00:11:23,600 Ég hef #include minn, svo ég hef aðgang að printf. 224 00:11:23,600 --> 00:11:26,090 >> En hvað ég ekki aðgangur að bara ennþá? 225 00:11:26,090 --> 00:11:29,420 Jæja, rétt eins og síðasta sinn, Ég þarf að segja þýðanda 226 00:11:29,420 --> 00:11:31,691 Clang hvaða þessar aðgerðir eru. 227 00:11:31,691 --> 00:11:33,940 Get_string kemur ekki með C. Og einkum, það 228 00:11:33,940 --> 00:11:38,160 kemur ekki í haus skrá,. 229 00:11:38,160 --> 00:11:40,770 Það kemur í staðinn í eitthvað starfsfólk skrifaði, 230 00:11:40,770 --> 00:11:44,176 sem er öðruvísi skrá nefna en viðeigandi nafni. 231 00:11:44,176 --> 00:11:46,990 232 00:11:46,990 --> 00:11:50,861 >> Svo einfaldlega með því að bæta að einni línu af code-- muna frá síðasta tíma 233 00:11:50,861 --> 00:11:53,610 að þegar Clang keyrir, það er að fara að líta á kóða efst mína til botns, 234 00:11:53,610 --> 00:11:54,193 frá vinstri til hægri. 235 00:11:54,193 --> 00:11:57,200 Það er að fara að taka eftir, ó, þú vilt. 236 00:11:57,200 --> 00:11:59,900 Leyfðu mér að fara og finna það, þar sem það er á þjóninum, 237 00:11:59,900 --> 00:12:03,090 afrita og líma það, í raun, flæða efst eigin skrá 238 00:12:03,090 --> 00:12:06,820 svo að á þessum tímapunkti í sögunni, lína 1, restin af the program 239 00:12:06,820 --> 00:12:11,651 getur reyndar nota eitthvað af þeim störfum þar, meðal þeirra get_string. 240 00:12:11,651 --> 00:12:13,650 Þannig að ég ætla að hunsa restin af þessir villa, 241 00:12:13,650 --> 00:12:17,190 vegna þess að ég reyndar grunar að aðeins sá fyrsti máli í raun og veru. 242 00:12:17,190 --> 00:12:20,780 Og ég ætla að fara á undan og endursýning, eftir vistun skrá minn gera buggy1. 243 00:12:20,780 --> 00:12:22,580 Og voila, það gerði vinna. 244 00:12:22,580 --> 00:12:29,200 Og ef ég geri ./buggy1 og slá í, til dæmi, Zamyla, ég nú vilja fá halló, 245 00:12:29,200 --> 00:12:32,000 Zamyla, í stað þess að halló, heimur. 246 00:12:32,000 --> 00:12:32,550 >> Allt í lagi. 247 00:12:32,550 --> 00:12:35,890 Svo takeaways hér þá eru til, einn, að reyna að tína eins mikið og þú getur 248 00:12:35,890 --> 00:12:39,140 frá villa skilaboð einar, leita á sumir af the þekkta orðum. 249 00:12:39,140 --> 00:12:43,070 Útilokar að nota help50 á vandamálið sett forskrift. 250 00:12:43,070 --> 00:12:46,500 En útilokunar það líka, alltaf að líta á efstu villa eingöngu, að minnsta kosti 251 00:12:46,500 --> 00:12:50,051 upphaflega, til að sjá hvaða upplýsingar það gæti í raun skila. 252 00:12:50,051 --> 00:12:52,300 En það kemur í ljós að það er jafnvel meira virkni innbyggður 253 00:12:52,300 --> 00:12:55,030 í CS50 bókasafn til að hjálpa þú snemma á önninni 254 00:12:55,030 --> 00:12:57,580 og snemma á forritun reikna út hvað er að fara úrskeiðis. 255 00:12:57,580 --> 00:12:59,840 Svo skulum gera annað dæmi hér. 256 00:12:59,840 --> 00:13:04,350 Ég ætla að kalla þetta buggy2, sem, aftur, er að fara að vera gölluð út 257 00:13:04,350 --> 00:13:05,650 hliðsins, við hönnun. 258 00:13:05,650 --> 00:13:09,980 >> Og ég ætla að fara á undan og gera #include. 259 00:13:09,980 --> 00:13:12,580 Og þá er ég að fara að gera int helstu (tóm). 260 00:13:12,580 --> 00:13:14,840 Og þá er ég að fara að gera fyrir lykkju. 261 00:13:14,840 --> 00:13:16,690 Fyrir (int i _ 0. 262 00:13:16,690 --> 00:13:18,750 I er minni en eða jafnt og 10. 263 00:13:18,750 --> 00:13:24,260 Ég ++, og síðan í hrokkið axlabönd, ég ætla að prenta út bara hashtag tákn hér 264 00:13:24,260 --> 00:13:25,920 og nýja línu staf. 265 00:13:25,920 --> 00:13:29,220 >> Svo ásetningi mínum með þetta Forritið er einfaldlega 266 00:13:29,220 --> 00:13:33,150 að iterate 10 sinnum og á hverri ítrun 267 00:13:33,150 --> 00:13:35,260 þeirrar lykkju í hvert skipti gegnum hringrás, 268 00:13:35,260 --> 00:13:37,660 prenta út hashtag, a hashtag, a hashtag. 269 00:13:37,660 --> 00:13:40,480 Einn á línu vegna þess að ég hafa nýja línu þar. 270 00:13:40,480 --> 00:13:42,787 Og muna að fyrir lykkja, fyrir síðustu week-- 271 00:13:42,787 --> 00:13:44,620 og þú munt fá fleiri kannast við setningafræði 272 00:13:44,620 --> 00:13:47,170 með því að nota það með starfi áður long-- þetta gefur mér 273 00:13:47,170 --> 00:13:49,740 breytu sem heitir i og setur það í 0. 274 00:13:49,740 --> 00:13:52,650 >> Þetta hækkar i á hvert endurtekning af 1. 275 00:13:52,650 --> 00:13:54,940 Svo ég fer í 1 til 2 til 3. 276 00:13:54,940 --> 00:13:57,690 Og þá er þetta ástand í miðja milli the parhús-tvípunkti 277 00:13:57,690 --> 00:14:03,010 fær köflóttur á hverjum endurtekning á að gera viss um að við erum enn innan. 278 00:14:03,010 --> 00:14:06,830 Svo vil ég að iterate 10 sinnum, svo ég hafa svoleiðis mjög innsæi bara 279 00:14:06,830 --> 00:14:09,070 setja 10 sem efri mín það. 280 00:14:09,070 --> 00:14:14,310 >> Og enn, þegar ég hlaupa þetta, eftir gerð það með gera buggy2-- 281 00:14:14,310 --> 00:14:15,440 og það er saman í lagi. 282 00:14:15,440 --> 00:14:17,980 Þannig að ég hef ekki setningafræði villa í þetta sinn. 283 00:14:17,980 --> 00:14:20,940 Leyfðu mér að fara á undan núna og hlaupa buggy2, Enter. 284 00:14:20,940 --> 00:14:22,620 Og nú fletta upp. 285 00:14:22,620 --> 00:14:24,890 Og láta mig aukast stærð glugga. 286 00:14:24,890 --> 00:14:33,720 >> Ég virðist hafa 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. 287 00:14:33,720 --> 00:14:38,891 Svo er það 11 hashtags, jafnvel þótt Ég setti greinilega 10 inni þessa lykkju. 288 00:14:38,891 --> 00:14:42,140 Nú sumir af þú might sjá strax hvað villa er vegna þess, reyndar, þetta 289 00:14:42,140 --> 00:14:43,720 er ekki mjög erfitt villa að gera. 290 00:14:43,720 --> 00:14:46,070 En það er mjög algengt gert mjög snemma. 291 00:14:46,070 --> 00:14:49,820 >> Það sem ég vil benda á, þó, er, hvernig gæti ég reikna þetta út? 292 00:14:49,820 --> 00:14:52,300 Jæja, það kemur í ljós að CS50 bókasafn kemur 293 00:14:52,300 --> 00:14:55,380 með ekki aðeins get_string og get_int og get_float og aðrar aðgerðir. 294 00:14:55,380 --> 00:14:59,980 Það kemur líka með sérstakri aðgerð kallast eprintf, eða, villa printf. 295 00:14:59,980 --> 00:15:03,270 Og það er til staðar eingöngu til að gera það svolítið auðveldara fyrir þig 296 00:15:03,270 --> 00:15:06,310 þegar kembiforrit kóðann þinn bara prenta villuboð á skjánum 297 00:15:06,310 --> 00:15:07,850 og vita hvar það kom frá. 298 00:15:07,850 --> 00:15:11,000 >> Svo til dæmis, eitt sem ég gæti gera hér með þessi aðgerð er this-- 299 00:15:11,000 --> 00:15:20,230 eprintf, og þá ætla ég að fara á undan og segja að ég er nú% i, sviga, n. 300 00:15:20,230 --> 00:15:22,330 Og ég ætla að stinga í verðmæti i. 301 00:15:22,330 --> 00:15:25,400 Og upp efst, því þetta er í CS50 bókasafn, 302 00:15:25,400 --> 00:15:27,580 Ég ætla að fara á undan og eru 303 00:15:27,580 --> 00:15:29,169 svo ég hef aðgang að þessari aðgerð. 304 00:15:29,169 --> 00:15:31,460 En við skulum íhuga hvaða línu 9 er ætlað að vera að gera. 305 00:15:31,460 --> 00:15:32,670 Ég ætla að eyða þessu á endanum. 306 00:15:32,670 --> 00:15:34,670 Þetta hefur ekkert að gera með heildarstefnu markmiði mínu. 307 00:15:34,670 --> 00:15:39,090 En eprintf, villa printf, er bara ætlað að gefa mér greiningu upplýsinga. 308 00:15:39,090 --> 00:15:42,460 Þegar ég keyrt forritið mitt, ég vil sjá þetta á skjánum tímabundið 309 00:15:42,460 --> 00:15:44,550 svo bara að skilja hvað er í gangi. 310 00:15:44,550 --> 00:15:47,330 >> Og reyndar á hverju endurtekning hér á línu 9 311 00:15:47,330 --> 00:15:49,260 Ég vil sjá, hvað er gildi i? 312 00:15:49,260 --> 00:15:50,290 Hvað er gildi i? 313 00:15:50,290 --> 00:15:51,280 Hvað er gildi i? 314 00:15:51,280 --> 00:15:55,650 Og vonandi, ég ætti bara sjá þessi skilaboð, einnig 10 sinnum. 315 00:15:55,650 --> 00:15:57,780 >> Svo láta mig fara á undan og endurþýða forritið mitt, 316 00:15:57,780 --> 00:15:59,905 sem ég þarf að gera hvenær Ég gera breytingar. ./buggy2. 317 00:15:59,905 --> 00:16:02,680 318 00:16:02,680 --> 00:16:03,640 Og now-- lagi. 319 00:16:03,640 --> 00:16:04,820 There 'a einhver fjöldi fleiri að fara á. 320 00:16:04,820 --> 00:16:07,610 Svo láta mig fletta upp í enn stærri glugga. 321 00:16:07,610 --> 00:16:10,190 >> Og þú munt sjá að hvert er Myllumerki er enn prentun. 322 00:16:10,190 --> 00:16:15,270 En í milli hvert þeirra er nú þetta sjúkdómsgreiningar framleiðsla snið eins og hér segir. 323 00:16:15,270 --> 00:16:17,960 The nafn af áætlun minni hér er buggy2. 324 00:16:17,960 --> 00:16:20,432 The nafn af the skrá er buggy2.c. 325 00:16:20,432 --> 00:16:24,080 The lína númer sem þetta var prentað er lína 9. 326 00:16:24,080 --> 00:16:27,500 Og þá er til hægri á sem villuboð að ég á von. 327 00:16:27,500 --> 00:16:30,701 >> Og hvað er gott um þetta er að núna er ég ekki að endilega telja 328 00:16:30,701 --> 00:16:32,200 í höfðinu á mér hvað forritið mitt er að gera. 329 00:16:32,200 --> 00:16:34,240 Ég get séð að á fyrsta endurtekning i er 0, 330 00:16:34,240 --> 00:16:39,420 þá 1, síðan 2, þá 3, þá 4, þá 5, þá 6, þá 7, síðan 8, then 9, þá 331 00:16:39,420 --> 00:16:40,980 10. 332 00:16:40,980 --> 00:16:42,050 Svo bíddu í eina mínútu. 333 00:16:42,050 --> 00:16:43,740 Hvað er að gerast hér? 334 00:16:43,740 --> 00:16:48,190 Ég virðist samt vera að telja sem ætlað allt að 10. 335 00:16:48,190 --> 00:16:50,550 >> En hvar var ég að byrja? 336 00:16:50,550 --> 00:16:53,240 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10. 337 00:16:53,240 --> 00:16:58,040 Svo 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- 11. fingurinn 338 00:16:58,040 --> 00:16:59,990 er til marks um vandans. 339 00:16:59,990 --> 00:17:02,850 Ég virðist hafa talið rangt í lykkju minni. 340 00:17:02,850 --> 00:17:06,599 Frekar en að fara 10 endurtekningar, Ég er farin á 0, 341 00:17:06,599 --> 00:17:09,550 Ég ætla að binda enda á og í gegnum 10. 342 00:17:09,550 --> 00:17:12,030 En vegna þess, eins og tölva, Ég er farin að telja á 0, 343 00:17:12,030 --> 00:17:15,250 Ég skal telja upp til, en ekki í gegnum, 10. 344 00:17:15,250 --> 00:17:18,510 >> Og svo festa, ég loksins ljóst hér, er eitt af tvennu. 345 00:17:18,510 --> 00:17:22,430 Ég gæti mjög einfaldlega sagt telja upp að minna en 10. 346 00:17:22,430 --> 00:17:27,260 Svo 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, sem er reyndar rétt, 347 00:17:27,260 --> 00:17:28,900 jafnvel þó að það hljómar smá rangt. 348 00:17:28,900 --> 00:17:35,070 Eða ég gæti gert minna en eða jafnt og til 9, svo lengi sem ég byrja á 0. 349 00:17:35,070 --> 00:17:40,056 Eða ef þú virkilega líkar ekki það, þú geta treyst upp í gegnum 10 en byrja á 1. 350 00:17:40,056 --> 00:17:41,680 En aftur, þetta er bara ekki það algengt. 351 00:17:41,680 --> 00:17:43,977 Í programming-- vísu ekki svo mikið í Scratch-- 352 00:17:43,977 --> 00:17:45,810 en í forritun í C og öðrum tungumálum, 353 00:17:45,810 --> 00:17:47,670 eins JavaScript og Python og aðrir, það er 354 00:17:47,670 --> 00:17:49,880 bara mjög algengt að umfjöllun okkar tvöfaldur 355 00:17:49,880 --> 00:17:53,450 bara byrja að telja á því lægsta tala sem þú getur, sem er 0. 356 00:17:53,450 --> 00:17:53,950 Allt í lagi. 357 00:17:53,950 --> 00:17:55,160 Svo það er eprintf. 358 00:17:55,160 --> 00:17:58,600 Og aftur, nú að ég hef mynstrağur út minn vandamál, og ég ætla að fara aftur í 0 359 00:17:58,600 --> 00:18:01,470 gegnum minna en 10, ég er að fara að fara í og ​​eyða eprintf. 360 00:18:01,470 --> 00:18:04,580 >> Það ætti ekki að vera þar þegar ég skip númerið mitt eða sendu númerið mitt 361 00:18:04,580 --> 00:18:05,800 eða sýna það að einhver annar. 362 00:18:05,800 --> 00:18:07,980 Það er í raun bara ætlað um tíma. 363 00:18:07,980 --> 00:18:11,650 En nú hef ég fastur þetta sérstaklega vandamál eins og heilbrigður. 364 00:18:11,650 --> 00:18:16,780 >> Jæja, við skulum gera eitt dæmi hér sem ég ætla að svipa upp eins og hér segir. 365 00:18:16,780 --> 00:18:22,850 Ég ætla að fara á undan og #include. $ 50 366 00:18:22,850 --> 00:18:25,580 Og ég ætla að fara á undan og #include. 367 00:18:25,580 --> 00:18:29,030 >> Og ég ætla að spara þessi skrá sem buggy3.c. 368 00:18:29,030 --> 00:18:31,740 Og ég ætla að fara á undan og lýsa int helstu (tóm). 369 00:18:31,740 --> 00:18:34,186 Og þá inni þar Ég ætla að gera int i _ - 370 00:18:34,186 --> 00:18:36,435 Ég vil að innleiða áætlun með get_negative_int. 371 00:18:36,435 --> 00:18:39,146 372 00:18:39,146 --> 00:18:40,770 Þetta er ekki fall sem er til staðar enn. 373 00:18:40,770 --> 00:18:42,870 Þannig að við erum að fara að innleiða það í bara smá stund. 374 00:18:42,870 --> 00:18:45,541 En við erum að fara að sjá hvers vegna það er þrjótur við fyrstu umferð. 375 00:18:45,541 --> 00:18:47,290 Og þegar ég hef fengið int frá notanda, 376 00:18:47,290 --> 00:18:53,365 Ég ætla bara að fara að prenta% i er neikvætt heiltala, sviga, n, komma, i. 377 00:18:53,365 --> 00:18:55,240 Með öðrum orðum, allt sem ég langar þetta forrit til að gera 378 00:18:55,240 --> 00:18:58,000 er að fá neikvæð int frá notandinn og síðan prentað út 379 00:18:58,000 --> 00:18:59,980 að svo og svo er neikvæð Int. 380 00:18:59,980 --> 00:19:02,080 >> Nú þarf ég að framkvæma þessa aðgerð. 381 00:19:02,080 --> 00:19:05,740 Svo seinna í minn skrá, ég ætla að fara undan og lýsa fall sem kallast 382 00:19:05,740 --> 00:19:10,670 get_negative_int (tóm) - og við munum koma aftur á það að línan þýðir aftur 383 00:19:10,670 --> 00:19:18,790 í moment-- int n; do-- do sem following-- printf n er :. 384 00:19:18,790 --> 00:19:26,210 Og þá er ég að fara að gera n - get_int, og að gera þetta á meðan n er stærra en 0. 385 00:19:26,210 --> 00:19:28,310 Og síðan aftur n ;. 386 00:19:28,310 --> 00:19:31,730 >> Svo er það mikið að gerast í þetta en enginn sem við gerðum ekki 387 00:19:31,730 --> 00:19:33,710 líta á síðustu viku, að minnsta kosti stuttlega. 388 00:19:33,710 --> 00:19:36,980 Svo á línu 10 hér ég hef lýst að virka kallast get_negative_int, 389 00:19:36,980 --> 00:19:39,620 Ég hef sett (tóm), í sviga, og er ástæðan sú þetta 390 00:19:39,620 --> 00:19:40,950 tekur ekki inntak. 391 00:19:40,950 --> 00:19:42,910 Ég ætla ekki liggur neitt í þessa aðgerð. 392 00:19:42,910 --> 00:19:44,690 Ég ætla bara að fá eitthvað til baka af því. 393 00:19:44,690 --> 00:19:47,270 >> Og hvað er ég að vonast til fá aftur er heiltala. 394 00:19:47,270 --> 00:19:50,040 Það er engin gögn tegund í C heitir negative_int. 395 00:19:50,040 --> 00:19:52,880 Það er bara int, svo það er að fara að vera á okkur til að ganga úr skugga um 396 00:19:52,880 --> 00:19:55,340 að verðmæti sem er í raun skilað er ekki aðeins int 397 00:19:55,340 --> 00:19:56,380 en er einnig neikvætt. 398 00:19:56,380 --> 00:20:02,150 >> Á línu 12. Ég ætla að lýsa yfir breytu heitir n og gera það af int. 399 00:20:02,150 --> 00:20:07,500 Og þá í samræmi 13. gegnum 18 Ég gera eitthvað á meðan eitthvað er satt. 400 00:20:07,500 --> 00:20:11,040 Ég ætla að fara á undan og prentun n er, ristli, og síðan bil, 401 00:20:11,040 --> 00:20:12,800 eins og hvetja til notanda. 402 00:20:12,800 --> 00:20:16,410 >> Ég ætla þá að hringja get_int og geyma svokallaða skilagildi 403 00:20:16,410 --> 00:20:18,130 í breytilegum n að. 404 00:20:18,130 --> 00:20:22,600 En ég ætla að halda að gera þetta á meðan n er stærra en 0. 405 00:20:22,600 --> 00:20:27,960 Með öðrum orðum, ef notandinn gefur mér int og þessi tala er hærri en 0, 406 00:20:27,960 --> 00:20:31,180 Ergo, jákvæð, ég ætla að bara halda reprompting notanda, 407 00:20:31,180 --> 00:20:37,160 halda reprompting, með því að neyða þá til að vinna og gefa mér neikvæða int. 408 00:20:37,160 --> 00:20:41,640 >> Og þegar n er í raun negative-- býst notanda loks tegundir -50, 409 00:20:41,640 --> 00:20:46,710 þá er þetta á meðan lykkja ekki lengur satt vegna þess að -50 er ekki meiri en 0. 410 00:20:46,710 --> 00:20:51,140 Þannig að við brjótast út af því lykkja rökrétt og aftur n. 411 00:20:51,140 --> 00:20:53,520 >> En það er eitt annað sem ég þarf að gera. 412 00:20:53,520 --> 00:20:56,190 Og ég get einfaldlega gert þetta með því að afrita og líma 413 00:20:56,190 --> 00:20:58,540 ein lína af kóða efst á skránni. 414 00:20:58,540 --> 00:21:01,630 Ég þarf að kenna Clang, eða lofa að Clang, 415 00:21:01,630 --> 00:21:04,630 skýrt sem ég vil, reyndar, fara og framkvæma 416 00:21:04,630 --> 00:21:06,020 þessi aðgerð get_negative_int. 417 00:21:06,020 --> 00:21:07,674 Það gæti bara verið lægri í skrá. 418 00:21:07,674 --> 00:21:09,840 Aftur, muna að Clang les hlutina toppur til botn, 419 00:21:09,840 --> 00:21:12,330 vinstri til hægri, svo þú getur ekki hringja í aðgerð ef Clang 420 00:21:12,330 --> 00:21:15,330 veit ekki það er að fara að vera til. 421 00:21:15,330 --> 00:21:18,430 >> Nú, því miður, þetta forrit, eins og sumir af þú might hafa taka eftir, 422 00:21:18,430 --> 00:21:19,590 er þegar þrjótur. 423 00:21:19,590 --> 00:21:21,400 Leyfðu mér að fara á undan og gera buggy3. 424 00:21:21,400 --> 00:21:26,904 Það safnar, svo vandamálið mitt er nú ekki a setningafræði villa, eins og texta villa, 425 00:21:26,904 --> 00:21:29,570 það er í raun að fara að vera rökrétt villa sem ég hef vísvitandi 426 00:21:29,570 --> 00:21:32,450 gerði sem tækifæri til að skref í gegnum hvað er að gerast. 427 00:21:32,450 --> 00:21:35,540 >> Ég ætla að fara á undan núna og hlaupa buggy3. 428 00:21:35,540 --> 00:21:37,490 Og ég ætla að fara undan og ekki vinna. 429 00:21:37,490 --> 00:21:39,494 Ég ætla að gefa það númer 1. 430 00:21:39,494 --> 00:21:41,410 Það var ekki eins og það, svo það er vekur mig aftur. 431 00:21:41,410 --> 00:21:42,147 >> Hvernig um 2? 432 00:21:42,147 --> 00:21:43,021 3? 433 00:21:43,021 --> 00:21:43,520 50? 434 00:21:43,520 --> 00:21:44,740 Ekkert af þeim eru að vinna. 435 00:21:44,740 --> 00:21:46,890 Hvernig óður -50? 436 00:21:46,890 --> 00:21:48,560 Og the program virðist virka. 437 00:21:48,560 --> 00:21:49,970 >> Leyfðu mér að reyna það einu sinni enn. 438 00:21:49,970 --> 00:21:53,400 Leyfðu mér að reyna -1, virðist virka. 439 00:21:53,400 --> 00:21:56,380 Leyfðu mér að reyna -2, virðist virka. 440 00:21:56,380 --> 00:21:59,640 Leyfðu mér að reyna 0. 441 00:21:59,640 --> 00:22:01,684 Huh, það er rangt. 442 00:22:01,684 --> 00:22:03,350 Nú erum við að vera svolítið smámunasamur hér. 443 00:22:03,350 --> 00:22:07,090 En það er reyndar raunin að 0 er hvorki jákvæð né neikvæð. 444 00:22:07,090 --> 00:22:11,150 Og svo sú staðreynd að áætlun mín er segja að 0 er neikvæð heiltala, 445 00:22:11,150 --> 00:22:12,820 það er ekki tæknilega rétt. 446 00:22:12,820 --> 00:22:15,180 >> Nú, hvers vegna er það að gera þetta? 447 00:22:15,180 --> 00:22:16,270 Jæja, það gæti verið augljóst. 448 00:22:16,270 --> 00:22:18,110 Og reyndar, the program er ætlað að vera nokkuð einfalt 449 00:22:18,110 --> 00:22:19,670 þannig að við höfum eitthvað til að kanna. 450 00:22:19,670 --> 00:22:25,870 >> En við skulum taka þriðja aflúsun tækni hér kallað debug50. 451 00:22:25,870 --> 00:22:27,750 Svo er þetta forrit að við höfum bara búið 452 00:22:27,750 --> 00:22:30,770 þessu ári sem heitir debug50 sem mun leyfa þér 453 00:22:30,770 --> 00:22:34,130 að nota það sem er kallað innbyggður-í Grafísku aflúsara í CS50 IDE. 454 00:22:34,130 --> 00:22:38,400 Og a aflúsara er bara forritið sem yfirleitt leyfir þér að keyra forritið þitt 455 00:22:38,400 --> 00:22:44,050 en skref fyrir skref fyrir skref, línu með línu fyrir línu, stansa, poking 456 00:22:44,050 --> 00:22:47,626 kring, horfa á breytum þannig að the program hjartarskinn ekki bara blása framhjá þér 457 00:22:47,626 --> 00:22:49,750 og fljótt prenta eitthvað eða ekki prenta eitthvað. 458 00:22:49,750 --> 00:22:53,250 Það gefur þér tækifæri á manna hraði, til að hafa samskipti við það. 459 00:22:53,250 --> 00:22:55,470 >> Og til að gera þetta, þú Einfaldlega gera eftirfarandi. 460 00:22:55,470 --> 00:22:58,479 Eftir samantekt númerið þitt, sem ég gerði þegar, buggy3, 461 00:22:58,479 --> 00:23:00,020 þú ferð á undan og keyra debug50 ./buggy. 462 00:23:00,020 --> 00:23:03,460 463 00:23:03,460 --> 00:23:06,760 Svo mikið eins help50 hefur þú keyrir help50 og þá stjórn, 464 00:23:06,760 --> 00:23:10,120 debug50 hefur þú keyrir debug50 og þá nafn stjórn. 465 00:23:10,120 --> 00:23:14,440 >> Nú horfa á það sem gerist á skjánum mínum, á hægri hönd hlið í lagi. 466 00:23:14,440 --> 00:23:19,400 Þegar ég lenti Run, allt í skyndileg þessi réttur-hönd spjaldið 467 00:23:19,400 --> 00:23:20,419 opnast á skjánum. 468 00:23:20,419 --> 00:23:22,210 Og það er mikið að gerast á við fyrstu sýn. 469 00:23:22,210 --> 00:23:25,110 En það er ekki of mikið að hafa áhyggjur enn. 470 00:23:25,110 --> 00:23:28,570 >> Þetta er að sýna mér allt sem er að gerast inni í áætlun mína 471 00:23:28,570 --> 00:23:31,130 núna og um þessar hnappar upp efst er þá 472 00:23:31,130 --> 00:23:35,910 leyfa mér að stíga í gegnum númerið mitt lokum skref fyrir skref fyrir skref. 473 00:23:35,910 --> 00:23:37,140 En ekki bara ennþá. 474 00:23:37,140 --> 00:23:38,060 Eftir hvað gerist. 475 00:23:38,060 --> 00:23:40,600 Á flugstöðinni gluggann minn Ég hef verið beðinn um að n. 476 00:23:40,600 --> 00:23:44,560 Og ég ætla að fara á undan og vinna í þetta sinn og tegund í -1. 477 00:23:44,560 --> 00:23:48,770 Og að vísu lítið cryptically, -1 er neikvæð heiltala, eins og búist var við. 478 00:23:48,770 --> 00:23:52,020 >> Og þá barn lauk með Staða 0 GDBserver spennandi. 479 00:23:52,020 --> 00:23:55,180 GDB, GNU Debugger, er nafn af undirliggjandi hugbúnaður 480 00:23:55,180 --> 00:23:56,620 sem útfærir þetta aflúsara. 481 00:23:56,620 --> 00:24:00,500 En allt þetta í raun þýðir, aflúsara fór í burtu vegna þess að forritið mitt hætta 482 00:24:00,500 --> 00:24:01,710 og allt var vel. 483 00:24:01,710 --> 00:24:06,020 Ef ég vil sannarlega kemba forritið mitt, Ég verð að preemptively segja debug50, 484 00:24:06,020 --> 00:24:08,920 þar sem ég vil að byrja stepping gegnum númerið mitt? 485 00:24:08,920 --> 00:24:11,750 >> Og kannski einfaldasta leiðin til að gera það er sem hér segir. 486 00:24:11,750 --> 00:24:15,300 Ef ég sveima yfir Göturæsi af ritstjóra minn hér, 487 00:24:15,300 --> 00:24:19,090 svo í raun bara í the skenkur hér, vinstra megin við línu númer, 488 00:24:19,090 --> 00:24:21,870 Takið eftir að ef ég smelli bara einu sinni, ég setti smá rauða punktur. 489 00:24:21,870 --> 00:24:24,460 Og það litla rauða punktur, eins og stöðvunin þýðir, hey, 490 00:24:24,460 --> 00:24:29,430 debug50, hlé framkvæmd númerið mitt þarna þegar ég keyra þetta forrit. 491 00:24:29,430 --> 00:24:30,260 >> Svo skulum gera það. 492 00:24:30,260 --> 00:24:37,340 Leyfðu mér að fara á undan og keyra forritið mitt aftur með debug50 ./buggy3, Enter. 493 00:24:37,340 --> 00:24:40,110 Og nú, tilkynning, eitthvað öðruvísi hefur gerst. 494 00:24:40,110 --> 00:24:42,440 Ég ætla ekki að vera beðin enn í flugstöðinni gluggann minn 495 00:24:42,440 --> 00:24:45,430 fyrir neitt, því ég hef ekki fengið það enn í áætlun mína. 496 00:24:45,430 --> 00:24:47,950 Takið eftir að á línu 8 sem er nú lögð áhersla á, 497 00:24:47,950 --> 00:24:51,720 og það er lítið ör á vinstri orðatiltæki, þú ert í bið hér. 498 00:24:51,720 --> 00:24:55,030 Þessi lína af kóða, lína 8, hefur ekki enn framkvæmt. 499 00:24:55,030 --> 00:24:58,940 >> Og hvað er forvitinn, ef ég lít hérna á hægri hönd hlið, 500 00:24:58,940 --> 00:25:03,530 eftir því að ég er á staðnum breytilegt, staðbundin í þeim skilningi 501 00:25:03,530 --> 00:25:05,450 að það er inni í núverandi aðgerð. 502 00:25:05,450 --> 00:25:08,920 Og gildi þess, virðist sjálfgefið, og svoleiðis þægilegan, er 0. 503 00:25:08,920 --> 00:25:10,260 En ég vissi ekki að slá 0. 504 00:25:10,260 --> 00:25:13,410 Það gerist bara að vera hennar Sjálfgefið gildi í augnablikinu. 505 00:25:13,410 --> 00:25:15,490 >> Svo láta mig fara á undan og gera þetta núna. 506 00:25:15,490 --> 00:25:18,680 Leyfðu mér að fara á undan og á efst hérna, ég er 507 00:25:18,680 --> 00:25:20,970 að fara á undan og smelltu á þennan fyrsta táknið sem 508 00:25:20,970 --> 00:25:25,360 þýðir skrefið yfir sem þýðir sleppa ekki það heldur stíga yfir þessa línu af kóða, 509 00:25:25,360 --> 00:25:27,770 framkvæma það á leiðinni. 510 00:25:27,770 --> 00:25:30,710 >> Og nú, eftir, minn hvetja hefur bara breyst. 511 00:25:30,710 --> 00:25:31,380 Afhverju er það? 512 00:25:31,380 --> 00:25:33,639 Ég hef sagt debug50, keyra þessa línu af kóða. 513 00:25:33,639 --> 00:25:34,930 Hvað þýðir þessi lína af kóða gera? 514 00:25:34,930 --> 00:25:35,960 Hvetja mig fyrir int. 515 00:25:35,960 --> 00:25:36,460 OK. 516 00:25:36,460 --> 00:25:37,400 Leyfðu mér að vinna. 517 00:25:37,400 --> 00:25:41,340 Leyfðu mér að fara á undan núna og slá -1, Enter. 518 00:25:41,340 --> 00:25:42,920 Og nú eftir hvað hefur breyst. 519 00:25:42,920 --> 00:25:46,060 Á hægri hönd hlið, mín staðbundin breytu ég 520 00:25:46,060 --> 00:25:48,200 er ætlað eins og að vera -1 nú. 521 00:25:48,200 --> 00:25:49,810 Og það er enn af gerðinni int. 522 00:25:49,810 --> 00:25:53,102 >> Og takið eftir, líka, minn svokallaða kalla stafla, þar gerði ég hlé? 523 00:25:53,102 --> 00:25:54,810 Við munum tala meira um þetta í framtíðinni. 524 00:25:54,810 --> 00:25:58,620 En kallið stafla átt bara að það aðgerðir eru nú á hreyfingu. 525 00:25:58,620 --> 00:26:00,040 Núna er það bara aðal. 526 00:26:00,040 --> 00:26:03,590 Og núna aðeins staðbundin breyta er ég með gildið 1. 527 00:26:03,590 --> 00:26:09,840 >> Og þegar ég stíga loks yfir þessa línu hér, með sama táknið efst til hægri, 528 00:26:09,840 --> 00:26:11,410 -1 Er neikvæð heiltala. 529 00:26:11,410 --> 00:26:13,580 Nú er það stansa yfir þessi hrokkið borsveif. 530 00:26:13,580 --> 00:26:14,740 Við skulum láta það gera hlutur hennar. 531 00:26:14,740 --> 00:26:17,300 Ég stíga yfir þessi lína, og voila. 532 00:26:17,300 --> 00:26:20,240 >> Svo ekki allt sem hræðilega uppfræða enn, 533 00:26:20,240 --> 00:26:23,550 en það var að láta mig gera hlé og hugsa um rökrétt 534 00:26:23,550 --> 00:26:24,870 hvað þetta forrit er að gera. 535 00:26:24,870 --> 00:26:26,890 En það var ekki rangra raunin. 536 00:26:26,890 --> 00:26:28,510 Við skulum gera þetta aftur eins og hér segir. 537 00:26:28,510 --> 00:26:31,340 >> Ég ætla að láta þessi breakpoint á línu 8 við rauða punktur. 538 00:26:31,340 --> 00:26:32,830 Ég ætla að endursýning debug50. 539 00:26:32,830 --> 00:26:34,400 Það er sjálfkrafa sett í bið hér. 540 00:26:34,400 --> 00:26:37,660 En í þetta skiptið, í stað þess að stepping yfir þessa línu, 541 00:26:37,660 --> 00:26:42,290 láta mig fara í raun inni get_negative_int og reikna út, 542 00:26:42,290 --> 00:26:45,530 hvers vegna er það að samþykkja 0 sem gilt svar? 543 00:26:45,530 --> 00:26:47,990 >> Svo í stað þess að smella Step Over. 544 00:26:47,990 --> 00:26:50,630 Ég ætla að fara á undan og smelltu stíga inn. 545 00:26:50,630 --> 00:26:54,030 Og eftir að línan 8 sem er nú hápunktur nú skyndilega 546 00:26:54,030 --> 00:26:56,900 verður línan 17. 547 00:26:56,900 --> 00:26:59,947 >> Nú, það er ekki það að aflúsara hefur sleppt línur 14 og 15 og 16. 548 00:26:59,947 --> 00:27:01,780 Það er bara að það er ekkert til að sýna þér það. 549 00:27:01,780 --> 00:27:04,050 Þeir eru bara að lýsa yfir breytur, og þá er orðið Gera 550 00:27:04,050 --> 00:27:05,390 og þá opinn hrokkið Brace. 551 00:27:05,390 --> 00:27:09,227 Eina hagnýtur línu sem er safaríkur er í raun þetta hérna, 17. 552 00:27:09,227 --> 00:27:11,060 Og það er þar sem við höfum bið sjálfkrafa. 553 00:27:11,060 --> 00:27:13,870 >> Svo printf ( "n.is:") ;, svo sem hefur ekki gerst enn. 554 00:27:13,870 --> 00:27:18,250 Svo skulum fara á undan og smelltu Skref Over. 555 00:27:18,250 --> 00:27:20,326 Nú hvetja minn, reyndar, breytt í ( "n er:"). 556 00:27:20,326 --> 00:27:22,450 Nú get_int, ég ætla ekki að fara að standa stepping inn, 557 00:27:22,450 --> 00:27:24,750 vegna þess að virka var gert af CS50 í bókasafninu. 558 00:27:24,750 --> 00:27:25,750 Það er væntanlega rétt. 559 00:27:25,750 --> 00:27:28,440 >> Þannig að ég ætla að fara á undan og konar samstarf með því að gefa henni 560 00:27:28,440 --> 00:27:30,590 int, en ekki neikvæð Int. 561 00:27:30,590 --> 00:27:32,870 Svo láta mig fara á undan og högg 0. 562 00:27:32,870 --> 00:27:39,460 Og nú hvað gerist hér þegar ég fá niður til að stilla 21? 563 00:27:39,460 --> 00:27:40,890 Ég hef ekki ítrekað aftur. 564 00:27:40,890 --> 00:27:43,320 Ég virðist ekki vera fastur í þeirri lykkju. 565 00:27:43,320 --> 00:27:45,990 Með öðrum orðum, þetta gula Bar ekki halda að fara í kringum, 566 00:27:45,990 --> 00:27:47,130 og kring, og í kring. 567 00:27:47,130 --> 00:27:48,340 >> Nú, hvers vegna er það? 568 00:27:48,340 --> 00:27:49,920 Jæja, n, hvað er N núna? 569 00:27:49,920 --> 00:27:53,280 Ég get líta á staðbundnum breytur í aflúsara. 570 00:27:53,280 --> 00:27:53,816 n er 0. 571 00:27:53,816 --> 00:27:55,190 Allt í lagi, hvað var ástand mitt? 572 00:27:55,190 --> 00:27:58,700 >> 20-- lína 20 er vel, 0 er meiri en 0. 573 00:27:58,700 --> 00:27:59,500 Það er ekki satt. 574 00:27:59,500 --> 00:28:01,020 0 er ekki meiri en 0. 575 00:28:01,020 --> 00:28:02,820 Og svo ég braust út úr þessu. 576 00:28:02,820 --> 00:28:06,370 >> Og svo er það þess vegna á línu 21, ef ég held áfram reyndar, 577 00:28:06,370 --> 00:28:10,370 Ég ætla að fara aftur 0, jafnvel þótt ég ætti að hafa hafnað 0 578 00:28:10,370 --> 00:28:12,484 sem í raun ekki að vera neikvætt. 579 00:28:12,484 --> 00:28:14,650 Svo nú, ég í raun ekki einu sinni hugsa um aflúsara. 580 00:28:14,650 --> 00:28:16,900 Fékk það, ég þarf ekki að vita hvað meira er að gerast. 581 00:28:16,900 --> 00:28:19,233 >> Þannig að ég ætla að fara á undan og bara smella á play takkann, 582 00:28:19,233 --> 00:28:20,240 og láta þetta ljúka upp. 583 00:28:20,240 --> 00:28:23,440 Nú, ég hef orðið ljóst að minn galla er greinilega á línu 20. 584 00:28:23,440 --> 00:28:25,160 Það er rökrétt villa mín. 585 00:28:25,160 --> 00:28:28,100 >> Og svo hvað ég vil að gera til að breyta þessu? 586 00:28:28,100 --> 00:28:32,500 Ef vandamálið er að ég er ekki smitandi 0, það er bara rökrétt villa. 587 00:28:32,500 --> 00:28:35,910 Og ég get sagt en n er stærra en eða jafnt og 0, 588 00:28:35,910 --> 00:28:38,330 halda vekur notandi aftur og aftur. 589 00:28:38,330 --> 00:28:41,050 >> Svo aftur, einföld mistök, kannski jafnvel augljóst þegar þú sást mig 590 00:28:41,050 --> 00:28:42,410 skrifa það bara nokkrar mínútur síðan. 591 00:28:42,410 --> 00:28:44,570 En takeaway hér er að með aflúsunar 50, 592 00:28:44,570 --> 00:28:46,850 og með kembiforrit hugbúnaður almennt, 593 00:28:46,850 --> 00:28:51,370 þú hefur þetta nýja stofna styrk til ganga í gegnum eigin kóðann þinn, líta 594 00:28:51,370 --> 00:28:55,590 um að rétta hönd spjaldið hvað Breyturnar gildi eru. 595 00:28:55,590 --> 00:28:57,700 Svo þú ert ekki endilega að nota eitthvað 596 00:28:57,700 --> 00:29:00,630 eins og þú eprintf að prenta þau gildi. 597 00:29:00,630 --> 00:29:04,430 Þú geta raunverulega sjá þá sjónrænt á skjánum. 598 00:29:04,430 --> 00:29:08,920 >> Nú, fyrir utan þetta, það er athyglisvert að það er annar tækni sem er 599 00:29:08,920 --> 00:29:09,890 reyndar frábær sameiginleg. 600 00:29:09,890 --> 00:29:13,120 Og þú gætir furða hvers vegna þetta litla strákur hér hefur verið sitjandi á sviðinu. 601 00:29:13,120 --> 00:29:16,490 Svo er það þessi tækni, almennt þekktur sem gúmmí önd kembiforrit, 602 00:29:16,490 --> 00:29:18,786 sem í raun er bara erfðaskrá til þess 603 00:29:18,786 --> 00:29:20,660 að oft þegar forritari að skrifa kóða, 604 00:29:20,660 --> 00:29:22,650 þeir eru ekki endilega samstarfi við aðra, 605 00:29:22,650 --> 00:29:24,030 eða vinna í sameiginlegum umhverfi. 606 00:29:24,030 --> 00:29:25,050 >> Þeir eru eins konar heima. 607 00:29:25,050 --> 00:29:25,910 Kannski er það seint á kvöldin. 608 00:29:25,910 --> 00:29:28,190 Þeir eru að reyna að tala út einhverjum galla í kóðanum þeirra. 609 00:29:28,190 --> 00:29:29,330 Og þeir eru bara ekki að sjá það. 610 00:29:29,330 --> 00:29:30,329 >> Og það er engin herbergisfélagi. 611 00:29:30,329 --> 00:29:31,250 Það er engin TF. 612 00:29:31,250 --> 00:29:32,680 Það er engin CA í kring. 613 00:29:32,680 --> 00:29:36,440 Allt sem þeir hafa á hilluna þeirra er þetta litla gúmmí Ducky. 614 00:29:36,440 --> 00:29:39,030 >> Og svo gúmmí önd kembiforrit er bara þessi boð 615 00:29:39,030 --> 00:29:42,780 að hugsa um eitthvað sem kjánalegt eins og þetta sem alvöru veru, 616 00:29:42,780 --> 00:29:46,940 og í raun ganga í gegnum kóðann þinn munnlega við þennan dauða hlut. 617 00:29:46,940 --> 00:29:49,230 Svo, til dæmis, ef þetta er dæmi mitt here-- 618 00:29:49,230 --> 00:29:52,470 og muna að fyrr vandamálið var þetta, 619 00:29:52,470 --> 00:29:58,140 ef ég eyða þessum fyrstu línu af kóða, og ég fara á undan og gera gallaðir 0 aftur, 620 00:29:58,140 --> 00:30:01,220 muna að ég hafði þetta villuskilaboð hér. 621 00:30:01,220 --> 00:30:05,997 Svo hugmynd hér, fáránlegt þó að ég finnst í augnablikinu að gera þetta opinberlega, 622 00:30:05,997 --> 00:30:06,580 er það villa. 623 00:30:06,580 --> 00:30:10,910 >> OK, svo vandamálið mitt er að ég hef óbeint lýst bókasafn virka. 624 00:30:10,910 --> 00:30:12,610 Og það bókasafn virka er printf. 625 00:30:12,610 --> 00:30:15,290 Declare-- OK, lýsa minnir mig á frumgerðum. 626 00:30:15,290 --> 00:30:18,930 >> Það þýðir að ég þarf í raun segja þýðanda fyrirfram hvað 627 00:30:18,930 --> 00:30:19,980 virka lítur út. 628 00:30:19,980 --> 00:30:20,930 Bíddu aðeins. 629 00:30:20,930 --> 00:30:23,580 Ég hafði ekki staðlað io.h. 630 00:30:23,580 --> 00:30:24,530 Þakka þér kærlega fyrir. 631 00:30:24,530 --> 00:30:27,330 >> Svo bara þetta ferli of-- þig þurfa ekki að í raun hafa önd. 632 00:30:27,330 --> 00:30:29,819 En þessi hugmynd um gangandi sjálfur í gegnum eigin kóðann þinn 633 00:30:29,819 --> 00:30:31,610 þannig að þú heyrir jafnvel sjálfur, svo að þú 634 00:30:31,610 --> 00:30:35,620 gera sér grein fyrir aðgerðaleysi í eigin athugasemdir, er yfirleitt hugmynd. 635 00:30:35,620 --> 00:30:38,910 >> Og kannski meira rökrétt, ekki svo mikið með því einu heldur meiri þátt 636 00:30:38,910 --> 00:30:44,220 dæmi við gerðum bara í buggy 3.c, þú gætir gengið sjálfur í gegnum það 637 00:30:44,220 --> 00:30:45,310 eins og hér segir. 638 00:30:45,310 --> 00:30:49,190 Svo allt í lagi, gúmmí Ducky, DDB, ef þú vilt. 639 00:30:49,190 --> 00:30:52,350 Hér höfum við í meginvirkni mínum, Ég ætla að hringja að fá neikvæða int. 640 00:30:52,350 --> 00:30:54,660 >> Og ég er að fá skilagildi. 641 00:30:54,660 --> 00:31:00,410 Ég ætla að geyma það á vinstri hönd á línu 8 í breytu sem heitir i. 642 00:31:00,410 --> 00:31:02,380 OK, en bíddu, hvernig var að fá þessi gildi? 643 00:31:02,380 --> 00:31:04,130 Leyfðu mér að líta á virkni í línu 12. 644 00:31:04,130 --> 00:31:05,760 >> Í línu 12, höfum við fengið neikvæð int. 645 00:31:05,760 --> 00:31:08,190 Ekki taka neinar inntak, kemur aftur int, OK. 646 00:31:08,190 --> 00:31:10,929 Ég lýsi á línu 14 breytu n. 647 00:31:10,929 --> 00:31:12,220 Það er að fara að geyma heiltölu. 648 00:31:12,220 --> 00:31:13,760 Það er það sem ég vil. 649 00:31:13,760 --> 00:31:18,480 >> Svo gera eftirfarandi þegar n is-- láta mig losa það sem festa sem ég þegar gert. 650 00:31:18,480 --> 00:31:22,710 Svo á meðan n er stærra en 0, prenta út n er, OK. 651 00:31:22,710 --> 00:31:25,170 Og þá kalla fá INT geymd í n. 652 00:31:25,170 --> 00:31:30,160 Og þá stöðva ef n er 0, n er not-- það er það. 653 00:31:30,160 --> 00:31:31,910 Svo aftur, þú ert ekki þarf í raun önd. 654 00:31:31,910 --> 00:31:35,650 En bara að ganga sjálfur í gegnum númerið þitt sem vitsmunalegum æfingu 655 00:31:35,650 --> 00:31:37,720 verður oft að hjálpa þér gera sér grein fyrir hvað er að gerast, 656 00:31:37,720 --> 00:31:41,170 öfugt við bara að gera eitthvað svona, glápa á skjáinn, 657 00:31:41,170 --> 00:31:43,720 og ekki að tala þig í gegnum það, sem heiðarlega er ekki 658 00:31:43,720 --> 00:31:46,270 nærri eins áhrifarík tækni. 659 00:31:46,270 --> 00:31:48,620 Svo þar hafið þið það, a Fjöldi mismunandi aðferðum 660 00:31:48,620 --> 00:31:52,102 fyrir raunverulega kembiforrit númerið þitt og átölulaust, sem öll 661 00:31:52,102 --> 00:31:54,810 ætti að vera verkfæri í Toolkit þannig að þú ert ekki of seint á kvöldin, 662 00:31:54,810 --> 00:31:57,660 sérstaklega, þú ert í borðstofu sölum, eða á skrifstofutíma, 663 00:31:57,660 --> 00:32:00,368 lemja hausnum gegn vegg, að reyna að leysa nokkur vandamál. 664 00:32:00,368 --> 00:32:02,020 Gera sér grein fyrir að það eru hugbúnaður verkfæraskúr. 665 00:32:02,020 --> 00:32:03,720 Það eru gúmmí önd verkfæri. 666 00:32:03,720 --> 00:32:09,630 Og það er allt starfsfólk styðja bíða eftir að lána a hönd. 667 00:32:09,630 --> 00:32:13,120 >> Svo nú, orð á vandamálinu setur, og á hvað við erum að vonast þig 668 00:32:13,120 --> 00:32:15,620 fá út úr þeim, og hvernig við förum um mat. 669 00:32:15,620 --> 00:32:17,680 Per kennsluáætlun námskeiðsins er, CS50 er vandamál setur 670 00:32:17,680 --> 00:32:22,320 eru metin á fjórum aðal ása, svo að speak-- umfang, nákvæmni, hönnun, 671 00:32:22,320 --> 00:32:23,060 og stíl. 672 00:32:23,060 --> 00:32:25,910 Og umfang átt bara að hversu mikið verksins hefur þú bitinn af? 673 00:32:25,910 --> 00:32:28,080 Hversu mikið vandamál hefur þú reynt? 674 00:32:28,080 --> 00:32:30,110 Á hvaða stigi átaki hefur þú fram? 675 00:32:30,110 --> 00:32:35,750 >> Nákvæmni er, er forritið vinna eins það er ætlast til að hvert CS50 forskrift 676 00:32:35,750 --> 00:32:38,640 þegar þú gefur ákveðnar inntak eða tilteknar afurðir koma aftur? 677 00:32:38,640 --> 00:32:41,130 Hönnun er mest huglægt þeirra. 678 00:32:41,130 --> 00:32:43,360 Og það er eitt sem verður lengst að læra 679 00:32:43,360 --> 00:32:47,220 og lengsta að kenna, í svo miklu leyti sem það snýst um að, 680 00:32:47,220 --> 00:32:49,530 hversu vel skrifað er númerið þitt? 681 00:32:49,530 --> 00:32:52,920 >> Það er eitt að prenta bara rétt framleiðsla eða skila rétt gildi. 682 00:32:52,920 --> 00:32:55,400 En ert þú að gera það sem skilvirkan hátt og mögulegt er? 683 00:32:55,400 --> 00:32:58,210 Ert þú að gera það skipta og sigra, eða tvöfaldur 684 00:32:58,210 --> 00:33:01,500 leita eins og við munum fljótlega sjá að við gerðum tvær vikur síðan við símaskránni? 685 00:33:01,500 --> 00:33:04,670 Eru betri leiðir til að leysa Vandamálið en þú ert nú hér? 686 00:33:04,670 --> 00:33:06,380 Það er tækifæri fyrir betri hönnun. 687 00:33:06,380 --> 00:33:08,530 >> Og þá style-- hvernig laglegur er númerið þitt? 688 00:33:08,530 --> 00:33:12,370 Þú munt taka eftir því að ég er nokkuð Einkum um indenting númerið mitt, 689 00:33:12,370 --> 00:33:15,300 og gættu breytur mínum eru nokkuð heitir. n, 690 00:33:15,300 --> 00:33:19,660 en stutt er gott nafn fyrir a númer i fyrir talningu heiltölu, 691 00:33:19,660 --> 00:33:20,727 s fyrir streng. 692 00:33:20,727 --> 00:33:22,560 Og við getum haft lengur breyta nöfnum stíl. 693 00:33:22,560 --> 00:33:25,500 Stíllinn er bara hversu góður er númerið þitt útlit? 694 00:33:25,500 --> 00:33:26,600 Og hvernig læsileg er það? 695 00:33:26,600 --> 00:33:29,650 >> Og með tímanum, hvað tas þín og TFS mun gera í námskeiðinu 696 00:33:29,650 --> 00:33:31,870 er að veita þér með það konar eigindlegum endurgjöf 697 00:33:31,870 --> 00:33:34,330 þannig að þú færð betri á þeim ýmsa þætti. 698 00:33:34,330 --> 00:33:37,510 Og hvað varðar það hvernig við mat á sérhverju þessara ása, 699 00:33:37,510 --> 00:33:40,080 það er yfirleitt með mjög fáir fötunum svo að þú, almennt, 700 00:33:40,080 --> 00:33:41,680 fá tilfinningu fyrir hversu vel þú ert að gera. 701 00:33:41,680 --> 00:33:45,680 Og reyndar, ef þú færð einkunn á eitthvað af þeim axes-- réttmæti, hönnun 702 00:33:45,680 --> 00:33:49,659 og stíl especially-- að tala mun almennt vera á milli 1 og 5. 703 00:33:49,659 --> 00:33:52,450 Og, bókstaflega, ef þú ert að fá 3 er í upphafi misseris, 704 00:33:52,450 --> 00:33:53,977 þetta er mjög gott. 705 00:33:53,977 --> 00:33:55,810 Það þýðir að það er enn pláss fyrir framför, 706 00:33:55,810 --> 00:33:58,490 sem þú myndi vona að í taka Class fyrir í fyrsta skipti. 707 00:33:58,490 --> 00:34:01,820 Það er vonandi einhver hluti af loft sem þú ert að aspirín að ná. 708 00:34:01,820 --> 00:34:03,970 Og svo að fá 3 er á elstu stykki, 709 00:34:03,970 --> 00:34:06,550 ef ekki einhver 2 og 4 er, er reyndar gott. 710 00:34:06,550 --> 00:34:08,880 Það er vel innan marka, vel innan væntingum. 711 00:34:08,880 --> 00:34:11,421 >> Og ef hugur þinn er kappakstur, bíddu mínútu, þrír af fimm. 712 00:34:11,421 --> 00:34:12,620 Það er í raun 6 af 10. 713 00:34:12,620 --> 00:34:13,560 Það er 60%. 714 00:34:13,560 --> 00:34:14,830 Guð minn, það er F. 715 00:34:14,830 --> 00:34:15,870 >> Það er ekki. 716 00:34:15,870 --> 00:34:17,600 Það er ekki, í raun, að. 717 00:34:17,600 --> 00:34:22,710 Frekar, það er tækifæri til að bæta á meðan á önn. 718 00:34:22,710 --> 00:34:25,580 Og ef þú ert að fá einhver Poors, þetta eru tækifæri 719 00:34:25,580 --> 00:34:29,199 að nýta skrifstofutíma, vissulega köflum og aðrar auðlindir. 720 00:34:29,199 --> 00:34:32,840 >> Best er tækifæri, í raun, að vera stolt af hversu langt þú hefur 721 00:34:32,840 --> 00:34:34,520 koma á meðan á önn. 722 00:34:34,520 --> 00:34:38,199 Svo veist, ef ekkert annað, þrjú er gott. 723 00:34:38,199 --> 00:34:40,179 Og það gerir pláss fyrir vöxt með tímanum. 724 00:34:40,179 --> 00:34:43,090 >> Eins og til hvernig þessir ása eru vegin raunhæft að þú ert 725 00:34:43,090 --> 00:34:46,745 að fara að eyða mestum tíma þínum að fá hlutir til vinnu, hvað þá á réttan hátt. 726 00:34:46,745 --> 00:34:49,120 Og svo rétttrúnaður hefur tilhneigingu til að vega mest, eins og með 727 00:34:49,120 --> 00:34:51,360 þetta Margfaldandi þáttur af þremur. 728 00:34:51,360 --> 00:34:54,659 Hönnun er einnig mikilvægt, en eitthvað sem þú ert ekki endilega 729 00:34:54,659 --> 00:34:58,220 eyða öllum þeim tíma á reyna að fá hlutina bara til að vinna. 730 00:34:58,220 --> 00:35:00,019 >> Og svo það er vegið svolítið meira létt. 731 00:35:00,019 --> 00:35:01,560 Og þá stíll er vegin minnst. 732 00:35:01,560 --> 00:35:03,710 Jafnvel þó að það er ekkert minna Mikilvægt grundvallaratriðum, 733 00:35:03,710 --> 00:35:05,990 það er bara, ef til vill, auðveldast að gera rétt, 734 00:35:05,990 --> 00:35:08,440 Líkt dæmi sem við gera í fyrirlestri og kafla, 735 00:35:08,440 --> 00:35:11,080 með það fallega aum, og sagði, 736 00:35:11,080 --> 00:35:14,320 og svo framvegis er meðal auðveldasta hlutir til að gera og fá rétt. 737 00:35:14,320 --> 00:35:16,960 Svo sem slík, átta að þeir eru stig 738 00:35:16,960 --> 00:35:19,000 sem eru tiltölulega auðvelt að skilja. 739 00:35:19,000 --> 00:35:22,360 >> Og nú orð á this-- fræðileg heiðarleika. 740 00:35:22,360 --> 00:35:25,150 Svo á að sjálfsögðu er kennsluáætlun, þú munt sjá 741 00:35:25,150 --> 00:35:27,630 að sjálfsögðu hefur alveg hluti af tungumáli kringum þetta. 742 00:35:27,630 --> 00:35:31,380 Og auðvitað tekur útgáfu fræðilegum heiðarleika alveg alvarlega. 743 00:35:31,380 --> 00:35:33,450 >> Við höfum greinarmun, fyrir betri eða verri, 744 00:35:33,450 --> 00:35:36,570 af því að hafa sent á hverju ári meira nemendur fyrir viðurlögum 745 00:35:36,570 --> 00:35:39,670 en flestir allir aðrir Auðvitað, sem ég er meðvituð um. 746 00:35:39,670 --> 00:35:42,580 Þetta er ekki endilega til marks um þá staðreynd 747 00:35:42,580 --> 00:35:46,340 sem CS nemendur, eða CS50 nemendur, eru allir minna heiðarlegur en bekkjarfélögum þínum. 748 00:35:46,340 --> 00:35:49,090 En raunin að í þessu heimur, með rafrænum hætti, við bara 749 00:35:49,090 --> 00:35:50,990 hafa tæknilega þýðir að skynja þetta. 750 00:35:50,990 --> 00:35:53,360 >> Það er mikilvægt fyrir okkur að sanngirni yfir bekknum 751 00:35:53,360 --> 00:35:58,550 að við gerum uppgötva þetta, og hækka málið þegar við sjáum hlutina. 752 00:35:58,550 --> 00:36:01,980 Og bara til að mála mynd, og í raun til að hjálpa eitthvað eins og þetta vaskur í, 753 00:36:01,980 --> 00:36:04,600 þetta eru tölur um nemendur á undanförnum 10 árum 754 00:36:04,600 --> 00:36:07,610 sem hafa tekið þátt í sumum slík mál akademískra heiðarleika, 755 00:36:07,610 --> 00:36:10,990 með nokkrum 32 nemendum frá falli 2015, sem 756 00:36:10,990 --> 00:36:13,760 er að segja að við tökum málið mjög alvarlega. 757 00:36:13,760 --> 00:36:18,380 Og, að lokum, semja þessar tölur, The nýlega, um 3%, 4% eða svo 758 00:36:18,380 --> 00:36:19,120 í bekknum. 759 00:36:19,120 --> 00:36:25,220 >> Svo fyrir frábær meirihluta nemenda það virðist sem línurnar eru skýrar. 760 00:36:25,220 --> 00:36:27,940 En ekki halda þessu í huga, sérstaklega seint 761 00:36:27,940 --> 00:36:32,080 á kvöldin þegar í erfiðleikum með sumir lausn á Heimadæmi, 762 00:36:32,080 --> 00:36:34,830 að það eru leiðir til að fá þig betur 763 00:36:34,830 --> 00:36:37,870 Stuðningur en þú gætir hugsa, jafnvel á þeim tíma. 764 00:36:37,870 --> 00:36:40,514 Grein fyrir því að þegar við fáum tillögur nemenda, yfir við 765 00:36:40,514 --> 00:36:43,430 bera allar innsendingar á þessu ári gegn hverjum uppgjöf síðasta ári, 766 00:36:43,430 --> 00:36:47,590 gegn hverjum uppgjöf frá 2007, og síðan að horfa á, eins og heilbrigður, 767 00:36:47,590 --> 00:36:49,931 númer geymslunum á netinu, Umræðuhópar, starf staður. 768 00:36:49,931 --> 00:36:51,806 Og við nefna þetta, í raun, allir fyrir sakir 769 00:36:51,806 --> 00:36:56,040 á fulla birtingu, að ef einhver annar getur fundið það á netinu, 770 00:36:56,040 --> 00:36:57,880 vissulega, svo við getum að sjálfsögðu. 771 00:36:57,880 --> 00:37:00,100 En, í raun, andi af sjálfsögðu snýst um 772 00:37:00,100 --> 00:37:01,650 að þessu ákvæði í kennsluáætlun. 773 00:37:01,650 --> 00:37:03,670 Það er í raun bara, að vera sanngjarn. 774 00:37:03,670 --> 00:37:06,680 >> Og ef við þurftum að útfæra á að með bara smá meira máli, 775 00:37:06,680 --> 00:37:09,770 átta sig á að kjarninn allur vinnu sem þú sendir til þessu námskeiði 776 00:37:09,770 --> 00:37:10,954 verður þitt eigið. 777 00:37:10,954 --> 00:37:13,870 En innan að, það eru vissulega tækifæri og hvatningu, 778 00:37:13,870 --> 00:37:17,300 og uppeldislegt gildi í að snúa við others-- mig, sem TFS, CAS, 779 00:37:17,300 --> 00:37:20,760 TAS, og aðrir í bekknum, fyrir stuðning, hvað þá vini 780 00:37:20,760 --> 00:37:23,547 og herbergisfélaga sem hafa rannsakað CS og forritun áður. 781 00:37:23,547 --> 00:37:25,130 Og svo er það vasapeninga fyrir það. 782 00:37:25,130 --> 00:37:28,180 Og Almenna þumalputtaregla er this-- þegar að biðja um hjálp, 783 00:37:28,180 --> 00:37:31,470 þú gætir sýnt númerið þitt til annarra, en þú getur ekki skoðað þeirra. 784 00:37:31,470 --> 00:37:34,880 Svo jafnvel ef þú ert á skrifstofutíma, eða í D sal, eða annars staðar 785 00:37:34,880 --> 00:37:37,450 vinna á einhverjum stykki sett, vinna við hlið vinar, sem 786 00:37:37,450 --> 00:37:40,160 er algerlega fínt, á lok dags vinnu þína 787 00:37:40,160 --> 00:37:43,034 ætti að lokum að tilheyra hver ykkar í sömu röð, og ekki 788 00:37:43,034 --> 00:37:45,700 vera einhvers samstarf átak, nema fyrir síðasta verkefni þar 789 00:37:45,700 --> 00:37:47,410 það er leyft og hvatt. 790 00:37:47,410 --> 00:37:49,830 >> Gera sér grein fyrir að ef þú ert erfiðleikum með eitthvað 791 00:37:49,830 --> 00:37:52,520 og vinur þinn bara gerist að vera betri í þessu þá, 792 00:37:52,520 --> 00:37:55,130 eða betri á þeim vanda en þú, eða lítið lengra fram í tímann en þú, 793 00:37:55,130 --> 00:37:57,330 það er algerlega eðlilegt að snúa til vinar og segja, hey, 794 00:37:57,330 --> 00:38:00,480 þú huga að horfa á númerið mitt hér, hjálpa mér að koma auga hvað málið mitt er? 795 00:38:00,480 --> 00:38:03,760 Og vonandi í áhugi uppeldislegt gildi 796 00:38:03,760 --> 00:38:07,040 að vinur er ekki bara segja, ó, gera þetta, heldur 797 00:38:07,040 --> 00:38:09,917 hvað ert þú sem vantar á línu 6 eða eitthvað svoleiðis? 798 00:38:09,917 --> 00:38:12,000 En lausnin er ekki fyrir vin hliðina á þér 799 00:38:12,000 --> 00:38:15,617 að segja, ó, jæja, hér, lát mig draga þetta upp, og sýna lausn mína til þín. 800 00:38:15,617 --> 00:38:16,450 Svo er að línan. 801 00:38:16,450 --> 00:38:18,670 Þú sýna kóðann þinn til aðrir, en þú getur ekki 802 00:38:18,670 --> 00:38:22,350 sjá putta, með fyrirvara um önnur skorður í kennsluáætlun námskeiðsins er. 803 00:38:22,350 --> 00:38:24,760 >> Svo ekki hafa í huga að þetta svokölluð eftirsjá ákvæði 804 00:38:24,760 --> 00:38:27,560 í námsskrá Auðvitað er eins vel, að ef þú fremja einhverja athöfn sem 805 00:38:27,560 --> 00:38:30,476 er ekki sanngjarnt, en koma með það til athygli höfuð Námskeiðið er 806 00:38:30,476 --> 00:38:34,240 innan 72 klukkustunda, að sjálfsögðu er heimilt að setja staðbundnar viðurlög sem 807 00:38:34,240 --> 00:38:37,380 geta falið í sér á almennum markaði ófullnægjandi eða falleinkunn fyrir vinnu lögð. 808 00:38:37,380 --> 00:38:41,410 En að sjálfsögðu mun ekki vísa á máli til frekari viðurlögum, 809 00:38:41,410 --> 00:38:43,010 nema í þeim tilvikum endurteknum athöfnum. 810 00:38:43,010 --> 00:38:46,632 Með öðrum orðum, ef þú gera sumir heimskur, sérstaklega seint á kvöldin, ákvörðun 811 00:38:46,632 --> 00:38:49,340 að næsta morgun eða tvo daga síðar, þú vaknar og átta, 812 00:38:49,340 --> 00:38:50,870 hvað var ég að hugsa? 813 00:38:50,870 --> 00:38:53,890 Þú gerir í CS50 hafa innstungu til að ákveða þessi vandamál 814 00:38:53,890 --> 00:38:57,170 og eiga upp að henni, svo að við mun hitta þig á miðri leið og takast 815 00:38:57,170 --> 00:39:01,500 með það í málinu sem er bæði mennta og dýrmætur fyrir þig, 816 00:39:01,500 --> 00:39:04,200 en samt sætt á einhvern hátt. 817 00:39:04,200 --> 00:39:08,590 Og nú, til að taka á brún burt, þetta. 818 00:39:08,590 --> 00:39:10,570 >> [Vídeó spilun] 819 00:39:10,570 --> 00:39:13,540 >> [TÓNLIST] 820 00:39:13,540 --> 00:39:58,090 821 00:39:58,090 --> 00:39:58,866 >> [END spilun] 822 00:39:58,866 --> 00:40:00,490 DAVID J. Malan: Allt í lagi, við erum aftur. 823 00:40:00,490 --> 00:40:03,680 Og nú erum við að líta á einn af the fyrst af okkar lénum raunveruleikanum 824 00:40:03,680 --> 00:40:08,720 í CS50, the list af dulmál, listin að senda og taka á móti 825 00:40:08,720 --> 00:40:11,840 leynileg skilaboð dulkóðuð skilaboð ef þú vilt, 826 00:40:11,840 --> 00:40:17,060 sem er aðeins hægt að deciphered ef þú ert sumir lykill innihaldsefni sem sendandi hefur 827 00:40:17,060 --> 00:40:18,030 einnig. 828 00:40:18,030 --> 00:40:22,120 Svo til að hvetja þetta munum við taka a líta á þetta hlutur hér, 829 00:40:22,120 --> 00:40:26,750 sem er dæmi um a leyndarmál tengd hringur sem 830 00:40:26,750 --> 00:40:34,042 er hægt að nota til þess að reikna út hvað leynileg skilaboð í raun er. 831 00:40:34,042 --> 00:40:35,750 Í raun aftur í Dagur í grunnskóla, 832 00:40:35,750 --> 00:40:38,787 ef þú alltaf sent leyndarmál skilaboð til sumir vinur eða einhver skotin í bekknum, 833 00:40:38,787 --> 00:40:40,620 þú gætir hafa hugsun þú varst að snjall 834 00:40:40,620 --> 00:40:46,530 af þann stykki þinn pappír breytast, eins, A til B, og B til C, og C til D, 835 00:40:46,530 --> 00:40:47,590 og svo framvegis. 836 00:40:47,590 --> 00:40:50,300 En þú varst í raun að dulkóða upplýsingarnar, jafnvel 837 00:40:50,300 --> 00:40:53,300 ef það var lítið léttvæg, var ekki að erfitt fyrir kennara að gera sér grein fyrir, 838 00:40:53,300 --> 00:40:55,675 vel, ef þú skiptir bara B að A og C til B, 839 00:40:55,675 --> 00:40:57,550 þú reikna í raun út hvað var boðskapurinn, 840 00:40:57,550 --> 00:40:59,700 en þú varst í ciphering upplýsingar. 841 00:40:59,700 --> 00:41:03,420 >> Þú varst bara að gera það einfaldlega, líkt Ralphie hér 842 00:41:03,420 --> 00:41:07,934 í frægri bíómynd sem spilar ansi mikið auglýsingu nauseum hver vetur. 843 00:41:07,934 --> 00:41:08,600 [Vídeó spilun] 844 00:41:08,600 --> 00:41:11,180 -Farðu Það vitað að allt sem Ralph Parker er hér 845 00:41:11,180 --> 00:41:14,070 skipaður meðlimur Little Orphan Annie Secret Circle 846 00:41:14,070 --> 00:41:17,700 og er rétt að öllum láði og bætur koma við hana. 847 00:41:17,700 --> 00:41:24,340 >> -Signed, Little Orphan Annie, gegn undirritaður Pierre Andre, í bleki. 848 00:41:24,340 --> 00:41:27,160 Heiður og hlunnindi, þegar á aldrinum níu. 849 00:41:27,160 --> 00:41:30,490 850 00:41:30,490 --> 00:41:31,825 >> [Hróp] 851 00:41:31,825 --> 00:41:33,750 852 00:41:33,750 --> 00:41:34,250 -Láttu ekki svona. 853 00:41:34,250 --> 00:41:35,210 Við skulum fá á við það. 854 00:41:35,210 --> 00:41:39,530 Ég þarf ekki allt sem djass um smyglara og sjóræningja. 855 00:41:39,530 --> 00:41:41,660 >> -Listen Morgun fyrir heimasíðunni niðurstöður ævintýri 856 00:41:41,660 --> 00:41:43,880 af svörtu sjóræningjaskipi. 857 00:41:43,880 --> 00:41:46,650 Nú er kominn tími til leyndarmál skilaboð Annie 858 00:41:46,650 --> 00:41:49,840 fyrir þér meðlimir Secret Circle. 859 00:41:49,840 --> 00:41:53,570 Mundu, börnin, aðeins meðlimir Annie Secret Circle 860 00:41:53,570 --> 00:41:56,140 geta lesa leyndarmál skilaboð Annie. 861 00:41:56,140 --> 00:42:00,340 >> Mundu, Annie er eftir þér. 862 00:42:00,340 --> 00:42:02,880 Setja pinna til B2. 863 00:42:02,880 --> 00:42:05,230 Hér eru skilaboðin. 864 00:42:05,230 --> 00:42:06,090 12, 11-- 865 00:42:06,090 --> 00:42:10,250 >> -Ég Er í, fyrsta leyndarmál fundi mínum. 866 00:42:10,250 --> 00:42:13,890 >> -14, 11, 18, 16. 867 00:42:13,890 --> 00:42:15,780 >> Pierre var í mikilli rödd kvöld. 868 00:42:15,780 --> 00:42:19,000 Ég gæti sagt að í kvöld er Skilaboðin var mjög mikilvægt. 869 00:42:19,000 --> 00:42:22,694 >> -3, 25, sem er skilaboð frá Annie sjálf. 870 00:42:22,694 --> 00:42:23,860 Mundu, ekki segja neinum. 871 00:42:23,860 --> 00:42:28,760 872 00:42:28,760 --> 00:42:32,930 >> -90 Sekúndum síðar er ég í eina herbergi í húsinu þar sem drengurinn níu 873 00:42:32,930 --> 00:42:37,040 gæti setið í næði og lesa. 874 00:42:37,040 --> 00:42:39,730 Aha, B! 875 00:42:39,730 --> 00:42:42,360 Ég fór á næsta, E. 876 00:42:42,360 --> 00:42:44,520 >> Fyrsta orðið er að vera. 877 00:42:44,520 --> 00:42:49,032 S, það var að koma auðveldara núna, U, 25-- 878 00:42:49,032 --> 00:42:51,733 >> -OH, Koma á, Ralphie, ég verð að fara! 879 00:42:51,733 --> 00:42:53,688 >> -Ég Vera rétt niður, Ma! 880 00:42:53,688 --> 00:42:54,188 Gee Whiz! 881 00:42:54,188 --> 00:42:58,116 882 00:42:58,116 --> 00:43:04,060 >> -T, O, vera viss to-- vera viss um að hvað? 883 00:43:04,060 --> 00:43:05,970 Hvað var Little Orphan Annie reyna að segja? 884 00:43:05,970 --> 00:43:07,264 Vertu viss um að hvað? 885 00:43:07,264 --> 00:43:09,634 >> -Ralphie, Andy hefur fengið að fara, verður þú vinsamlegast koma út? 886 00:43:09,634 --> 00:43:10,480 >> -Allt Í lagi, Ma! 887 00:43:10,480 --> 00:43:12,880 Ég kem strax út! 888 00:43:12,880 --> 00:43:14,550 >> -Ég Var að fá nær nú. 889 00:43:14,550 --> 00:43:16,620 Spennan var hræðilegur. 890 00:43:16,620 --> 00:43:17,720 Hvað var það? 891 00:43:17,720 --> 00:43:20,170 Örlög jörðinni getur hanga í jafnvægi. 892 00:43:20,170 --> 00:43:20,670 >> -Ralphie! 893 00:43:20,670 --> 00:43:23,170 gotta Andy fara! 894 00:43:23,170 --> 00:43:26,890 >> -Ég Vera rétt út fyrir að gráta upphátt! 895 00:43:26,890 --> 00:43:32,680 >> -Almost Það, fingur mína flaug, huga minn var stál gildru, hvert svitahola titrað. 896 00:43:32,680 --> 00:43:37,198 Það var næstum ljóst, já, já, já. 897 00:43:37,198 --> 00:43:43,091 >> -Farðu Viss um að drekka ovaltine þína. 898 00:43:43,091 --> 00:43:43,590 Ovaltine? 899 00:43:43,590 --> 00:43:48,160 900 00:43:48,160 --> 00:43:49,430 A crummy auglýsing? 901 00:43:49,430 --> 00:43:53,046 902 00:43:53,046 --> 00:43:54,227 Helvítið. 903 00:43:54,227 --> 00:43:54,810 [END spilun] 904 00:43:54,810 --> 00:43:57,390 DAVID J. Malan: Allt í lagi, svo sem var mjög langt 905 00:43:57,390 --> 00:44:00,660 þess að kynna dulmál, og einnig ovaltine. 906 00:44:00,660 --> 00:44:04,470 Í raun, frá þessu gamla auglýsingu hér, hvers vegna er ovaltine svo gott? 907 00:44:04,470 --> 00:44:09,470 Það er samþjappað útdráttur af þroskaður bygg malt, mjólk hreint Rjómalöguð kúm, 908 00:44:09,470 --> 00:44:14,360 og sérstaklega unnin kakó, saman með náttúrulegum fosfatíðum og vítamínum. 909 00:44:14,360 --> 00:44:18,240 Það er frekar styrktur með Til viðbótar vítamín B og D, Yum. 910 00:44:18,240 --> 00:44:21,600 Og enn er hægt að fá það, greinilega, á Amazon, eins og við gerðum hér. 911 00:44:21,600 --> 00:44:24,810 >> En hvatning hér var að kynna dulmál, sérstaklega 912 00:44:24,810 --> 00:44:28,340 gerð dulmál þekkt sem leyndarmál lykill dulmál. 913 00:44:28,340 --> 00:44:34,284 Og eins og nafnið gefur til kynna, allt öryggi leynilykli Crypto kerfi, 914 00:44:34,284 --> 00:44:36,200 ef þú vilt, aðferðafræði fyrir bara spæna 915 00:44:36,200 --> 00:44:40,960 Upplýsingar á milli tveggja manna, er að Aðeins sendandinn og aðeins móttakandi 916 00:44:40,960 --> 00:44:46,980 veit leyndarmál key-- nokkur gildi, sumir Leyndarmálið setning, sumir leyndarmál númer, sem 917 00:44:46,980 --> 00:44:50,660 gerir þeim kleift að bæði dulkóða og afkóðað upplýsingar. 918 00:44:50,660 --> 00:44:53,470 Og dulmál, í raun, er bara þetta frá viku 0. 919 00:44:53,470 --> 00:44:56,715 >> Það er vandamál þar sem það er inntak, eins raunverulegt skilaboð á ensku 920 00:44:56,715 --> 00:44:59,340 eða hvað tungumál sem þú langar að senda til einhvers í bekknum, 921 00:44:59,340 --> 00:45:00,580 eða yfir netið. 922 00:45:00,580 --> 00:45:03,840 Það er einhver framleiðsla, sem er að fara að vera spæna skilaboð sem þér 923 00:45:03,840 --> 00:45:05,250 langar viðtakandi að fá. 924 00:45:05,250 --> 00:45:07,405 Og jafnvel ef einhver í miðja fær það líka, 925 00:45:07,405 --> 00:45:09,780 þú vilt ekki þá að endilega að vera fær um að hallmæla henni, 926 00:45:09,780 --> 00:45:12,840 vegna inni þessa svartur kassi, eða reiknirit, 927 00:45:12,840 --> 00:45:17,650 er einhver vélbúnaður, sumir skref fyrir skref leiðbeiningar, til að taka að inntak 928 00:45:17,650 --> 00:45:20,710 og umbreyta það inn í framleiðsla, í vonandi öruggan hátt. 929 00:45:20,710 --> 00:45:23,640 >> Og í raun, það er einhver orðaforða í þessum heimi eins og hér segir. 930 00:45:23,640 --> 00:45:26,100 Plain texti er orðið a tölva vísindamaður myndi 931 00:45:26,100 --> 00:45:28,449 nota til að lýsa inntak skilaboð, eins og ensku 932 00:45:28,449 --> 00:45:31,240 eða hvað tungumál þig í raun og veru langar að senda einhverjum öðrum mönnum. 933 00:45:31,240 --> 00:45:35,450 Og þá er ciphertext að Scramble til enciphered, eða dulkóðuð, 934 00:45:35,450 --> 00:45:36,520 útgáfa hennar. 935 00:45:36,520 --> 00:45:38,750 >> En það er eitt annað efni hér. 936 00:45:38,750 --> 00:45:43,200 Það er eitt annað inntak til leyndarmál lykill dulmál. 937 00:45:43,200 --> 00:45:45,200 Og það er lykillinn sjálft, sem er, yfirleitt, 938 00:45:45,200 --> 00:45:48,930 eins og við munum sjá, númer, eða bréf, eða orð, hvað 939 00:45:48,930 --> 00:45:51,980 reiknirit það er í raun ætlast. 940 00:45:51,980 --> 00:45:53,870 >> Og hvernig heldur þú að hallmæla information? 941 00:45:53,870 --> 00:45:55,110 Hvernig heldur þú að unscramble það? 942 00:45:55,110 --> 00:45:57,950 Jæja, þú snúa bara framleiðsla og inntak. 943 00:45:57,950 --> 00:46:00,900 >> Með öðrum orðum, þegar einhver fær dulkóðuð skilaboðin þín, 944 00:46:00,900 --> 00:46:03,740 hann eða hún hefur einfaldlega að vita að sama takka. 945 00:46:03,740 --> 00:46:05,700 Þeir hafa fengið ciphertext. 946 00:46:05,700 --> 00:46:09,530 Og með því að tengja þá tvo stærðirnar í dulritunarstjórneiningunni kerfi, 947 00:46:09,530 --> 00:46:14,260 reiknirit, þetta svartur kassi, út að koma upprunalega kæra. 948 00:46:14,260 --> 00:46:17,830 Og svo er það mjög mikil mynd af því sem dulmál er í raun 949 00:46:17,830 --> 00:46:18,590 allt um. 950 00:46:18,590 --> 00:46:20,030 >> Þannig að við skulum fá það. 951 00:46:20,030 --> 00:46:22,700 Við skulum nú líta undir hetta eitthvað 952 00:46:22,700 --> 00:46:26,000 við höfum verið að taka sem sjálfsögðum hlut að síðustu viku, og fyrir þetta fundur 953 00:46:26,000 --> 00:46:27,629 here-- band. 954 00:46:27,629 --> 00:46:30,295 A band í lok dags er bara röð af stöfum. 955 00:46:30,295 --> 00:46:33,610 >> Það gæti verið halló heimur, eða halló Zamyla eða hvað sem er. 956 00:46:33,610 --> 00:46:37,050 En hvað þýðir það að vera röð af stöfum? 957 00:46:37,050 --> 00:46:41,520 Í staðreynd, the CS50 bókasafn gefur okkur a gögn tegund sem kallast band. 958 00:46:41,520 --> 00:46:45,140 >> En það er í raun engin svo sem hlutur eins og a band í C. 959 00:46:45,140 --> 00:46:49,450 Það er í raun bara röð af eðli, eðli, eðli, 960 00:46:49,450 --> 00:46:52,180 eðli, aftur, til baka, til aftur, til baka, til baka innan 961 00:46:52,180 --> 00:46:54,650 af minni tölvunnar, eða RAM. 962 00:46:54,650 --> 00:46:58,940 Og við munum líta dýpra inn í það í Framtíð þegar við lítum á minni sjálft, 963 00:46:58,940 --> 00:47:02,030 og nýtingu, og ógnir sem taka þátt. 964 00:47:02,030 --> 00:47:04,100 >> En við skulum íhuga band Zamyla. 965 00:47:04,100 --> 00:47:07,480 Svo bara nafn manna hér, Zamyla, 966 00:47:07,480 --> 00:47:12,030 það er runa af stafi, Z-A-M-Y-L-A. 967 00:47:12,030 --> 00:47:16,020 Og nú skulum gera ráð fyrir að nafn Zamyla er er geymt inni í tölvu 968 00:47:16,020 --> 00:47:16,880 program. 969 00:47:16,880 --> 00:47:20,830 >> Jæja, það stendur til ástæðu að við ættum vera fær um að líta á þá stafi 970 00:47:20,830 --> 00:47:21,590 fyrir sig. 971 00:47:21,590 --> 00:47:24,710 Þannig að ég ætla bara að fara að teikna smá kassi í kringum nafni Zamyla hér. 972 00:47:24,710 --> 00:47:31,580 Og það er raunin í C að þegar þér hafa a band, eins Zamyla-- og kannski 973 00:47:31,580 --> 00:47:34,940 að strengur er kominn aftur frá fall eins fá band, 974 00:47:34,940 --> 00:47:38,540 þú getur raunverulega vinna það eðli með staf. 975 00:47:38,540 --> 00:47:42,070 >> Nú er þetta germane fyrir samtal á hönd, vegna þess að 976 00:47:42,070 --> 00:47:46,420 í dulmál ef þú vilt breyta A til B, og B til C, og C til D, 977 00:47:46,420 --> 00:47:49,650 og svo framvegis, þú þarft að vera fær um að líta á einstökum persónum 978 00:47:49,650 --> 00:47:50,190 í streng. 979 00:47:50,190 --> 00:47:52,695 Þú þarft að vera fær um að breyta Z til eitthvað annað, A 980 00:47:52,695 --> 00:47:55,280 eitthvað annað, M til eitthvað annað, og svo framvegis. 981 00:47:55,280 --> 00:47:58,000 Og svo þurfum við leið, kerfisbundið, svo 982 00:47:58,000 --> 00:48:03,020 að tala, í C til að vera fær um að breyta og líta á einstökum bréfum. 983 00:48:03,020 --> 00:48:05,690 Og við getum gert þetta eins og hér segir. 984 00:48:05,690 --> 00:48:08,340 >> Leyfðu mér að fara höfuð aftur í CS50 IDE. 985 00:48:08,340 --> 00:48:11,130 Og láta mig fara á undan og búa til nýja skrá 986 00:48:11,130 --> 00:48:16,134 að ég kalla þetta skipti string0, eins og fyrsta slíka dæminu okkar, punktur c. 987 00:48:16,134 --> 00:48:18,300 Og ég ætla að fara á undan og svipa það upp eins og hér segir. 988 00:48:18,300 --> 00:48:22,870 >> Svo eru CS50.h, og þá eru stöðluð io.h, 989 00:48:22,870 --> 00:48:25,990 sem ég er næstum alltaf að fara að vera með í áætlunum mínum, að minnsta kosti 990 00:48:25,990 --> 00:48:26,780 í upphafi. 991 00:48:26,780 --> 00:48:32,180 int helstu ógild, og þá hér er ég að fara að gera strengi fær fá band. 992 00:48:32,180 --> 00:48:35,260 Og þá er ég að fara að fara á undan og gera þetta. 993 00:48:35,260 --> 00:48:37,460 Ég vil fara á undan og, eins og andleg heilbrigði stöðva, 994 00:48:37,460 --> 00:48:43,607 bara segja, halló, prósent s, hálf-hreinsun, gerir streng 0. 995 00:48:43,607 --> 00:48:44,690 Obbosí, hvað gerði ég hér? 996 00:48:44,690 --> 00:48:45,930 Ó, ég vissi ekki stinga því inn. 997 00:48:45,930 --> 00:48:48,120 Svo kennslustund lærður, sem var ekki viljandi. 998 00:48:48,120 --> 00:48:52,480 >> Svo villa, meira prósent viðskipti en gögn rök. 999 00:48:52,480 --> 00:48:54,940 Og þetta er þar, í lína 7-- lagi, þannig að ég hef, 1000 00:48:54,940 --> 00:48:56,690 vitna unquote, það er band mitt til printf. 1001 00:48:56,690 --> 00:48:58,151 Ég hef fengið prósent skilti. 1002 00:48:58,151 --> 00:48:59,650 En ég vantar annað rök. 1003 00:48:59,650 --> 00:49:03,190 >> Ég vantar kommum S, sem Ég vissi hef í fyrri dæmum. 1004 00:49:03,190 --> 00:49:06,650 Svo gott tækifæri til að festa einn mistök, óvart. 1005 00:49:06,650 --> 00:49:09,950 Og nú langar mig að hlaupa string0, tegund í Zamyla. 1006 00:49:09,950 --> 00:49:10,970 OK, halló Zamyla. 1007 00:49:10,970 --> 00:49:14,144 >> Þannig að við höfum keyrt þessa tegund af program nokkrar mismunandi sinnum núna. 1008 00:49:14,144 --> 00:49:16,310 En við skulum gera eitthvað svolítið öðruvísi í þetta sinn. 1009 00:49:16,310 --> 00:49:19,450 Í stað þess bara prentun Zamyla er heild nafn út með printf, 1010 00:49:19,450 --> 00:49:21,350 við skulum gera það staf eftir staf. 1011 00:49:21,350 --> 00:49:22,700 >> Ég ætla að nota fyrir lykkju. 1012 00:49:22,700 --> 00:49:26,160 Og ég ætla að gefa mér a telja breytu, kallaði ég. 1013 00:49:26,160 --> 00:49:33,530 Og ég ætla að halda iterating, svo lengi sem I er minni en lengd s. 1014 00:49:33,530 --> 00:49:35,930 >> Það kemur í ljós, við gerðum ekki gera þetta síðasta sinn, 1015 00:49:35,930 --> 00:49:39,100 sem c kemur með virka kallast Stirling. 1016 00:49:39,100 --> 00:49:42,690 Til baka í dag, og almennt enn þegar framkvæmd aðgerðir, 1017 00:49:42,690 --> 00:49:45,405 menn vilja oft velja mjög gagnorðar nöfn sem eins konar hljóð 1018 00:49:45,405 --> 00:49:48,280 eins og það sem þú vilt, jafnvel þó að það er vantar nokkra sérhljóða eða bréf. 1019 00:49:48,280 --> 00:49:50,660 Svo er Stirling í Heiti fall sem 1020 00:49:50,660 --> 00:49:53,880 tekur rifrildi milli svigum sem ætti að vera strengur. 1021 00:49:53,880 --> 00:49:56,910 Og það skilar bara heiltölu, lengd strengsins. 1022 00:49:56,910 --> 00:50:00,580 >> Svo þetta fyrir lykkju á línu 7 er að fara að byrja að telja á ég jafngildir 0. 1023 00:50:00,580 --> 00:50:02,530 Það er að fara að hækka Ég á hverri ítrun 1024 00:50:02,530 --> 00:50:04,350 um 1, eins og við höfum verið að gera nokkrum sinnum. 1025 00:50:04,350 --> 00:50:06,780 En það er að fara að bara þetta upp þar til þeim punkti 1026 00:50:06,780 --> 00:50:09,660 þegar ég er lengd af the band sig. 1027 00:50:09,660 --> 00:50:14,520 >> Þannig að þetta er leið, að lokum, iterating yfir stafi 1028 00:50:14,520 --> 00:50:17,430 í band sem er eftirfarandi. 1029 00:50:17,430 --> 00:50:20,670 Ég ætla að prenta út ekki Öllum strengnum, en prósent c, 1030 00:50:20,670 --> 00:50:22,860 einn staf fylgt eftir með nýja línu. 1031 00:50:22,860 --> 00:50:24,880 Og þá er ég að fara að fara á undan, og ég þarf 1032 00:50:24,880 --> 00:50:29,080 að segja að ég vil prenta ith eðli s. 1033 00:50:29,080 --> 00:50:33,450 >> Svo ef ég er breytan sem gefur til kynna Vísitala band, þar sem 1034 00:50:33,450 --> 00:50:37,230 þú ert í það, ég þarf að vera fær um að segja, gefa mér ith eðli s. 1035 00:50:37,230 --> 00:50:40,390 Og c hefur leið til að gera þetta með hornklofa. 1036 00:50:40,390 --> 00:50:43,679 Þú segir einfaldlega nafnið á band, sem í þessu tilfelli er s. 1037 00:50:43,679 --> 00:50:46,970 Síðan sem þú notar hornklofa, sem eru yfirleitt rétt fyrir ofan aftur eða inn 1038 00:50:46,970 --> 00:50:48,110 lykill á lyklaborðinu. 1039 00:50:48,110 --> 00:50:52,410 Og þá setja vísitölu karakter sem þú vilt prenta. 1040 00:50:52,410 --> 00:50:55,960 Svo vísitalan er að fara til vera a number-- 0, eða 1, eða 2, eða 3, eða punktur, 1041 00:50:55,960 --> 00:50:57,590 punktur, punktur, einhver önnur tala. 1042 00:50:57,590 --> 00:51:00,920 >> Og við að tryggja að það er að fara að vera rétt númer, því ég 1043 00:51:00,920 --> 00:51:02,360 byrja að telja á 0. 1044 00:51:02,360 --> 00:51:07,020 Og sjálfgefið, fyrsta staf í streng er með venju 0. 1045 00:51:07,020 --> 00:51:09,230 Og annað eðli er krappi 1. 1046 00:51:09,230 --> 00:51:11,120 Og þriðja persónan er krappi 2. 1047 00:51:11,120 --> 00:51:13,630 Og þú vilt ekki að fara of langt, en við munum ekki vegna þess að við erum 1048 00:51:13,630 --> 00:51:17,780 að fara að aðeins hækka i þar til það jafngildir lengd strengsins. 1049 00:51:17,780 --> 00:51:20,210 Og á hver benda, þetta fyrir lykkju vilja stöðva. 1050 00:51:20,210 --> 00:51:25,550 >> Svo láta mig fara á undan og vista þetta program, og hlaupa gera band 0. 1051 00:51:25,550 --> 00:51:28,400 En ég ruglaður upp. 1052 00:51:28,400 --> 00:51:35,390 Óbeint lýsa bókasafn virka Stirling með gerð slíks og such-- nú, 1053 00:51:35,390 --> 00:51:36,430 þetta hljómar kunnuglega. 1054 00:51:36,430 --> 00:51:37,440 En það er ekki printf. 1055 00:51:37,440 --> 00:51:38,540 Og það er ekki að fá band. 1056 00:51:38,540 --> 00:51:40,480 >> Ég vissi ekki að skrúfa upp í á sama hátt í þetta sinn. 1057 00:51:40,480 --> 00:51:45,100 En eftir hérna smá niður frekar, ma í haus string.h, 1058 00:51:45,100 --> 00:51:47,210 sérstaklega veita yfirlýsing um Stirling. 1059 00:51:47,210 --> 00:51:48,820 Svo er það í raun vísbending þar. 1060 00:51:48,820 --> 00:51:51,670 >> Og reyndar kemur í ljós það er annað haus skrá 1061 00:51:51,670 --> 00:51:53,970 sem við höfum ekki notað í bekknum enn, en það er 1062 00:51:53,970 --> 00:51:56,480 meðal þeirra boði til þín, sem heitir string.h. 1063 00:51:56,480 --> 00:52:00,930 Og í þeirri skrá, string.h er Stirling lýst. 1064 00:52:00,930 --> 00:52:05,220 Svo láta mig fara á undan og vista þetta, gera streng 1065 00:52:05,220 --> 00:52:08,040 0-- gott, engin villuskilaboð þetta sinn. 1066 00:52:08,040 --> 00:52:12,290 >> ./string0 Zamyla, og Ég er að fara að ýta á Enter, 1067 00:52:12,290 --> 00:52:16,710 á hver benda GetString er að fara að skila band, setja það í s. 1068 00:52:16,710 --> 00:52:21,890 Þá for lykkju er að fara að árétta yfir stafi S er einn í einu, 1069 00:52:21,890 --> 00:52:28,420 og prenta þá einn í hverja línu, vegna þess að Ég hafði að sviga n í lokin. 1070 00:52:28,420 --> 00:52:34,530 Svo ég gæti sleppt því sviga n, og þá bara prenta Zamyla allt 1071 00:52:34,530 --> 00:52:37,460 í sömu línu, í raun reimplementing 1072 00:52:37,460 --> 00:52:38,999 printf, sem er ekki allt sem að gagni. 1073 00:52:38,999 --> 00:52:40,540 En í þessu tilfelli, hef ég ekki gert það. 1074 00:52:40,540 --> 00:52:43,610 Ég hef reyndar prentað eitt eðli í einu, eitt í hverja línu, 1075 00:52:43,610 --> 00:52:45,400 þannig að við sjáum raunverulega áhrif. 1076 00:52:45,400 --> 00:52:46,900 >> En ég ætti að hafa í huga eitt hér. 1077 00:52:46,900 --> 00:52:48,930 Og við munum koma aftur til þetta í framtíðinni viku. 1078 00:52:48,930 --> 00:52:52,650 Það kemur í ljós að þetta númerið er hugsanlega þrjótur. 1079 00:52:52,650 --> 00:52:56,560 >> Það kemur í ljós að fá band og nokkrar aðrar aðgerðir í lífinu 1080 00:52:56,560 --> 00:53:00,280 ekki endilega alltaf skila hvað þú ert að búast við. 1081 00:53:00,280 --> 00:53:03,010 Við vitum af bekknum síðasta tími í þessu að fá 1082 00:53:03,010 --> 00:53:04,960 band er ætlað að skila streng. 1083 00:53:04,960 --> 00:53:09,900 En hvað ef notandinn slær út eins langur orð, eða málsgrein, eða ritgerð 1084 00:53:09,900 --> 00:53:13,010 að það er bara ekki nóg minni í tölvunni til að passa það. 1085 00:53:13,010 --> 00:53:15,410 >> Eins og, hvað ef eitthvað fer rangt undir hetta? 1086 00:53:15,410 --> 00:53:18,400 Það gæti ekki gerst oft, en það gæti gerst einu sinni 1087 00:53:18,400 --> 00:53:21,520 í smá stund, mjög sjaldan. 1088 00:53:21,520 --> 00:53:25,460 Og svo kemur í ljós að fá band og virka like it ekki endilega 1089 00:53:25,460 --> 00:53:26,380 alltaf aftur strengi. 1090 00:53:26,380 --> 00:53:30,680 Þeir gætu aftur smá villa gildi, sumir Sentinel gildi svo að segja, 1091 00:53:30,680 --> 00:53:32,612 það gefur til kynna að eitthvað hefur farið úrskeiðis. 1092 00:53:32,612 --> 00:53:35,320 Og þú myndir bara vita þetta frá hafa lært það í bekknum núna, 1093 00:53:35,320 --> 00:53:37,700 eða hafa lesið nokkrar fleiri skjöl. 1094 00:53:37,700 --> 00:53:43,120 Það kemur í ljós að fá band getur aftur á gildi kallast null. 1095 00:53:43,120 --> 00:53:46,220 Null er sérstakt gildi sem við munum koma aftur til í framtíðinni viku. 1096 00:53:46,220 --> 00:53:50,420 En nú, bara veit að ef ég vil að vera virkilega rétt á áfram 1097 00:53:50,420 --> 00:53:52,650 með fá band, ég ætti ekki bara að kalla það, 1098 00:53:52,650 --> 00:53:56,870 og blindni nota aftur gildi þess, treysta því að það er band. 1099 00:53:56,870 --> 00:53:59,420 >> Ég ætti fyrst að segja, hey, bíddu í eina mínútu, aðeins 1100 00:53:59,420 --> 00:54:03,380 áfram ef s er ekki jafn null, þar null, aftur, 1101 00:54:03,380 --> 00:54:04,660 er bara sérstakt gildi. 1102 00:54:04,660 --> 00:54:07,770 Og það er eina sérstakt gildi að þurfa að hafa áhyggjur af að fá band. 1103 00:54:07,770 --> 00:54:10,900 Fá band er annað hvort að fara að skila streng eða null. 1104 00:54:10,900 --> 00:54:17,219 >> Og þetta upphrópunarmerki samasemmerkinu þú might vita af kannski stærðfræði bekknum 1105 00:54:17,219 --> 00:54:20,510 að þú gætir draga jafnaðarmerki með línu í gegnum það til að sýna ekki jöfn. 1106 00:54:20,510 --> 00:54:23,135 Það er ekki almennt eðli þú getur slegið á lyklaborðinu þínu. 1107 00:54:23,135 --> 00:54:26,480 Og svo í flestum forritunarmál, þegar þú vilt segja ekki jafnir, 1108 00:54:26,480 --> 00:54:29,160 þú notar upphrópunarmerki, annars þekkt sem Bang. 1109 00:54:29,160 --> 00:54:33,180 Svo segir þú Bang jafnt sem þýðir ekki jafngildir, rökrétt. 1110 00:54:33,180 --> 00:54:38,060 Það er bara eins og það er ekki meiri en, eða jöfn eða minni en 1111 00:54:38,060 --> 00:54:41,270 eða jafnt takkann á lyklaborðinu þínu sem gerir það allt í eitt tákn. 1112 00:54:41,270 --> 00:54:44,020 Svo er það hvers vegna, í fortíð dæmum, þú gerðir opinn krappi, og þá 1113 00:54:44,020 --> 00:54:48,670 jafnaðarmerki, í því skyni að gera stærra en eða segja, minna en. 1114 00:54:48,670 --> 00:54:49,910 >> Svo er það takeaway hér? 1115 00:54:49,910 --> 00:54:53,880 Þetta er einfaldlega leið nú af kynna þessa setningafræði, þessi eiginleiki, 1116 00:54:53,880 --> 00:54:57,390 iterating yfir einstaklingur stafir í streng. 1117 00:54:57,390 --> 00:55:00,260 Og rétt eins og þeim torginu sviga leyfa þér að fá á þá, 1118 00:55:00,260 --> 00:55:03,790 að taka tillit til hornklofa sem konar vísbending um þetta undirliggjandi 1119 00:55:03,790 --> 00:55:06,040 hönnun, þar sem hvert eðli inni streng 1120 00:55:06,040 --> 00:55:10,180 er eins konar Hnefaleikar í somewhere undir hetta í minni tölvunnar. 1121 00:55:10,180 --> 00:55:12,340 >> En við skulum gera afbrigði af þessu. 1122 00:55:12,340 --> 00:55:14,880 Það kemur í ljós að þetta Forritið er rétt. 1123 00:55:14,880 --> 00:55:18,810 Svo á ásum CS50 er að meta kóða, þetta er rétt núna. 1124 00:55:18,810 --> 00:55:22,959 Sérstaklega núna þegar ég er að skoða fyrir null, þetta forrit ætti aldrei hrun. 1125 00:55:22,959 --> 00:55:24,500 Og ég veit bara að af reynslu. 1126 00:55:24,500 --> 00:55:28,040 En það er ekkert annað sem við getum raunverulega farið úrskeiðis hér. 1127 00:55:28,040 --> 00:55:31,860 En það er ekki mjög vel hönnuð, vegna þess að við skulum fara aftur til grunnatriði. 1128 00:55:31,860 --> 00:55:34,450 >> First, principles-- hvað þýðir a for lykkju gera? 1129 00:55:34,450 --> 00:55:36,290 A fyrir lykkju gerir þrennt. 1130 00:55:36,290 --> 00:55:39,340 Það initializes sumir gildi, ef þú spyrð hana að. 1131 00:55:39,340 --> 00:55:41,770 Það fer ástand. 1132 00:55:41,770 --> 00:55:45,380 Og þá eftir hverja endurtekning, eftir hverja lotu, 1133 00:55:45,380 --> 00:55:49,330 það hækkar sumir gildi, eða gildi, hér. 1134 00:55:49,330 --> 00:55:50,600 >> Svo hvað þýðir það? 1135 00:55:50,600 --> 00:55:52,940 Við frumstilla ég til 0. 1136 00:55:52,940 --> 00:55:58,610 Við að athuga og ganga úr skugga um að ég er minna en lengd s, sem er Z-A-M-Y-L-A, 1137 00:55:58,610 --> 00:55:59,900 svo sem er minna en 6. 1138 00:55:59,900 --> 00:56:02,590 Og reyndar 0 sem minna en 6. 1139 00:56:02,590 --> 00:56:05,580 >> Við prenta út Z úr nafni Zamyla er. 1140 00:56:05,580 --> 00:56:08,080 Þá erum við hækka ég frá 0 til 1. 1141 00:56:08,080 --> 00:56:11,290 Við athugum þá, er 1 minna en hæðin á s? 1142 00:56:11,290 --> 00:56:13,270 Lengd s er 6. 1143 00:56:13,270 --> 00:56:13,950 Já það er. 1144 00:56:13,950 --> 00:56:16,880 >> Þannig að við að prenta á nafni Zamyla er, ZA. 1145 00:56:16,880 --> 00:56:20,090 Við hækka i frá 0, til 1, 2. 1146 00:56:20,090 --> 00:56:23,720 Við athugum þá, er 2 minni en lengd nafni Zamyla er. 1147 00:56:23,720 --> 00:56:25,380 6- svo 2 er minna en 6. 1148 00:56:25,380 --> 00:56:30,460 Já, við skulum prenta út núna M í Nafn Zamyla er, þriðja persóna. 1149 00:56:30,460 --> 00:56:34,110 >> Lykillinn hér er að á hverju endurtekning sögunnar, ég stöðva, 1150 00:56:34,110 --> 00:56:37,810 er eg síður en lengd Zamyla? 1151 00:56:37,810 --> 00:56:40,350 En aflinn er að Stirling er ekki eign. 1152 00:56:40,350 --> 00:56:43,100 Þau ykkar sem hafa forritað áður í Java eða öðrum tungumálum 1153 00:56:43,100 --> 00:56:46,310 gæti vita lengd af a band er eign, bara nokkrar lesa aðeins gildi. 1154 00:56:46,310 --> 00:56:50,220 >> Í C í þessu tilfelli, ef það er fall sem er bókstaflega 1155 00:56:50,220 --> 00:56:53,520 telja fjölda stafir í Zamyla hvert skipti 1156 00:56:53,520 --> 00:56:54,740 við köllum að virka. 1157 00:56:54,740 --> 00:56:58,500 Í hvert skipti sem þú spyrð tölvuna til að nota Stirling, það tekur a líta á Zamyla, 1158 00:56:58,500 --> 00:57:01,960 og sögðu Z-A-M-Y-L-A, 6. 1159 00:57:01,960 --> 00:57:02,962 Og það skilar 6. 1160 00:57:02,962 --> 00:57:04,920 Í næsta skipti sem þú hringja það inni að fyrir lykkju, 1161 00:57:04,920 --> 00:57:08,610 það er að fara að horfa á Zamyla aftur, segja Z-A-M-Y-L-a, 6. 1162 00:57:08,610 --> 00:57:10,320 Og það er að fara að skila 6. 1163 00:57:10,320 --> 00:57:12,980 Svo er það heimskulegt um þessa hönnun? 1164 00:57:12,980 --> 00:57:17,700 >> Hvers vegna er númerið mitt ekki 5 af 5 fyrir hönnun núna, svo að segja? 1165 00:57:17,700 --> 00:57:20,600 Jæja, ég ætla að spyrja spurning óþörfu. 1166 00:57:20,600 --> 00:57:23,030 Ég ætla að gera meiri vinnu en ég þarf að. 1167 00:57:23,030 --> 00:57:25,370 >> Svo jafnvel þótt svarið er rétt, ég er 1168 00:57:25,370 --> 00:57:29,560 spyrja tölvuna, hvað er lengd Zamyla aftur, 1169 00:57:29,560 --> 00:57:31,380 og aftur, og aftur, og aftur? 1170 00:57:31,380 --> 00:57:33,980 Og það svar er aldrei að fara að breytast. 1171 00:57:33,980 --> 00:57:35,900 Það er alltaf að fara að vera 6. 1172 00:57:35,900 --> 00:57:39,730 >> Svo betri lausn en þetta væri þetta næsta útgáfa. 1173 00:57:39,730 --> 00:57:43,390 Leyfðu mér að fara á undan og setja það í Sérstakur skrá sem heitir string1.c, 1174 00:57:43,390 --> 00:57:44,990 bara að halda það aðskilið. 1175 00:57:44,990 --> 00:57:47,260 Og það kemur í ljós í a lykkja, þú getur raunverulega 1176 00:57:47,260 --> 00:57:50,210 lýsa margar breytur í einu. 1177 00:57:50,210 --> 00:57:53,460 >> Þannig að ég ætla að halda i og setja það á 0. 1178 00:57:53,460 --> 00:57:56,190 En ég ætla líka að fara að bæta við kommu, og segja, 1179 00:57:56,190 --> 00:58:01,050 gefa mér breytu sem heitir n, sem gildi er strenginn lengd s. 1180 00:58:01,050 --> 00:58:09,410 Og nú skaltu gera ástand mitt svo lengi sem I er minni en n. 1181 00:58:09,410 --> 00:58:14,140 >> Svo á þennan hátt, rökfræði er eins í lok dags. 1182 00:58:14,140 --> 00:58:18,280 En ég muna að gildi 6, í þessu tilfelli. 1183 00:58:18,280 --> 00:58:19,780 Hver er lengd nafni Zamyla er? 1184 00:58:19,780 --> 00:58:20,860 Og ég ætla að setja það á n. 1185 00:58:20,860 --> 00:58:23,050 >> Og ég er enn að stöðva ástand í hvert skipti. 1186 00:58:23,050 --> 00:58:24,300 Er 0 minna en 6? 1187 00:58:24,300 --> 00:58:25,600 Er 1 minna en 6? 1188 00:58:25,600 --> 00:58:28,600 Er 2 minna en 6, og svo framvegis? 1189 00:58:28,600 --> 00:58:31,914 >> En ég ætla ekki að biðja tölvuna aftur, og aftur, hvað er 1190 00:58:31,914 --> 00:58:33,080 lengd nafni Zamyla er? 1191 00:58:33,080 --> 00:58:34,320 Hvað er lengd nafni Zamyla er? 1192 00:58:34,320 --> 00:58:35,986 Hvað er lengd nafni þessa Zamyla er? 1193 00:58:35,986 --> 00:58:40,440 Ég er bókstaflega að huga að fyrst og aðeins svara í þessum seinni breytilegum n. 1194 00:58:40,440 --> 00:58:45,280 Svo þetta núna væri ekki eingöngu rétt, en einnig vel hönnuð. 1195 00:58:45,280 --> 00:58:46,670 >> Nú, hvað um stíl? 1196 00:58:46,670 --> 00:58:48,866 Ég hef nefnt breytur mína nokkuð vel, myndi ég segja. 1197 00:58:48,866 --> 00:58:50,240 Þeir eru frábær gagnorðar núna. 1198 00:58:50,240 --> 00:58:52,090 Og það er algerlega fínt. 1199 00:58:52,090 --> 00:58:55,120 >> Ef þú hefur aðeins einn band í forriti, 1200 00:58:55,120 --> 00:58:56,860 þú might eins og heilbrigður kalla það er fyrir streng. 1201 00:58:56,860 --> 00:58:59,370 Ef þú hefur aðeins eina breytu að telja í forriti, 1202 00:58:59,370 --> 00:59:00,710 þú might eins vel kalla það ég. 1203 00:59:00,710 --> 00:59:03,500 Ef þú ert með lengd, n er frábær algengt eins og heilbrigður. 1204 00:59:03,500 --> 00:59:05,800 En ég hef ekki tjáð einhverju númerið mitt. 1205 00:59:05,800 --> 00:59:09,200 >> Ég hef ekki tilkynnt reader-- hvort sem er TF mín, eða TA, 1206 00:59:09,200 --> 00:59:12,460 eða bara colleague-- hvað er ætlast að fara á í þessari áætlun. 1207 00:59:12,460 --> 00:59:15,760 Og svo til að fá gott stíl, það sem ég myndi vilja gera 1208 00:59:15,760 --> 00:59:24,580 er this-- eitthvað eins spyrja notandann um inntak. 1209 00:59:24,580 --> 00:59:26,670 Og ég gæti umrita þetta allir tala af lifnaðarhættir. 1210 00:59:26,670 --> 00:59:35,630 >> Gakktu úr skugga um s-- tryggja fá band skilaði streng. 1211 00:59:35,630 --> 00:59:40,280 Og þá í here-- og þetta er kannski mikilvægasta comment-- kunnugt 1212 00:59:40,280 --> 00:59:44,450 yfir stafina í s einn í einu. 1213 00:59:44,450 --> 00:59:47,060 Og ég gæti notað eitthvað Val á ensku 1214 00:59:47,060 --> 00:59:49,650 hér að lýsið þessara klumpur af kóða. 1215 00:59:49,650 --> 00:59:52,740 >> Takið eftir að ég hef ekki sett upp tjá sig um hverja línu af kóða, 1216 00:59:52,740 --> 00:59:55,690 í raun bara á áhugavert sjálfur, þær sem 1217 00:59:55,690 --> 00:59:59,460 hafa einhverja merkingu, sem ég gæti langar að gera frábær ljóst að einhver 1218 00:59:59,460 --> 01:00:00,460 lesa númerið mitt. 1219 01:00:00,460 --> 01:00:02,920 Og hvers vegna ertu að hringja færð band biðja notandann um inntak? 1220 01:00:02,920 --> 01:00:05,450 Jafnvel að maður er ekki endilega allt sem lýsandi. 1221 01:00:05,450 --> 01:00:09,340 En það hjálpar að segja sögu, vegna þess að annarri línu í sögunni er, ganga úr skugga um 1222 01:00:09,340 --> 01:00:10,740 fá band skilaði streng. 1223 01:00:10,740 --> 01:00:14,260 >> Og í þriðja línan í sögunni er, iterate yfir stafi í s einn 1224 01:00:14,260 --> 01:00:15,380 í einu. 1225 01:00:15,380 --> 01:00:17,920 Og nú bara gott mál, Ég ætla að fara á undan og bæta við 1226 01:00:17,920 --> 01:00:24,560 eitt athugasemd sem bara segir prenta i-ta eðli í s. 1227 01:00:24,560 --> 01:00:26,520 Nú, hvað hefi ég gjört í lok dags? 1228 01:00:26,520 --> 01:00:29,190 >> Ég hef bætt við nokkrum English orð í formi athugasemda. 1229 01:00:29,190 --> 01:00:32,700 The slash slash tákn merkir, hey, tölva þetta er fyrir mönnum, 1230 01:00:32,700 --> 01:00:33,820 ekki fyrir þig, the tölva. 1231 01:00:33,820 --> 01:00:35,119 Svo þeir eru hunsuð rökrétt. 1232 01:00:35,119 --> 01:00:35,910 Þeir eru bara þarna. 1233 01:00:35,910 --> 01:00:39,830 >> Og reyndar CS50 IDE sýnir þá sem grár, eins og að vera gagnlegt, en ekki lykill 1234 01:00:39,830 --> 01:00:41,000 til áætlunarinnar. 1235 01:00:41,000 --> 01:00:42,570 Eftir hvað þú getur nú gert. 1236 01:00:42,570 --> 01:00:44,950 Hvort sem þú veist C forritun eða ekki, þú 1237 01:00:44,950 --> 01:00:47,722 getur bara staðið bak við þetta program, og Lögð athugasemdir. 1238 01:00:47,722 --> 01:00:50,180 Spyrja notanda fyrir hjálpina, ganga úr skugga um fá band skilaði band, 1239 01:00:50,180 --> 01:00:53,009 iterate yfir stafi í s einn í einu, prenta staf 1240 01:00:53,009 --> 01:00:55,550 i-ta persóna í s-- þú ekki einu sinni að líta á kóðann 1241 01:00:55,550 --> 01:00:57,270 að skilja hvað þetta forrit gerir. 1242 01:00:57,270 --> 01:01:00,280 Og enn betra, ef þú sjálfur lítur á þessari áætlun í viku eða tvær, 1243 01:01:00,280 --> 01:01:02,280 eða mánuð eða ár, þú líka þarft ekki 1244 01:01:02,280 --> 01:01:04,420 að stara á kóða, að reyna að muna, 1245 01:01:04,420 --> 01:01:06,630 hvað var ég að reyna að gera með þennan kóða? 1246 01:01:06,630 --> 01:01:07,770 >> Þú hefur sagt sjálfur. 1247 01:01:07,770 --> 01:01:11,660 Þú hefur lýst því fyrir sjálfan þig, eða einhver vinnufélagi eða TA, TF. 1248 01:01:11,660 --> 01:01:14,860 Og svo þetta myndi nú vera rétt, og góð hönnun, 1249 01:01:14,860 --> 01:01:18,210 og að lokum góður stíll eins og heilbrigður. 1250 01:01:18,210 --> 01:01:19,990 Svo gera hafa það í huga. 1251 01:01:19,990 --> 01:01:22,200 >> Svo er það eitt annað sem ég ætla að gera hér 1252 01:01:22,200 --> 01:01:28,240 sem getur nú sýna nákvæmlega hvað er fara á undir hetta. 1253 01:01:28,240 --> 01:01:30,390 Svo er það þessi eiginleiki í C, og öðrum tungumálum, 1254 01:01:30,390 --> 01:01:33,010 heitir Typecasting sem annaðhvort óbeint 1255 01:01:33,010 --> 01:01:37,250 eða beinlínis gerir þér kleift að umbreyta frá einni tegund gagna til annars. 1256 01:01:37,250 --> 01:01:39,800 Við höfum verið að fást svo langt í dag með strengi. 1257 01:01:39,800 --> 01:01:41,250 >> Og strengir eru stafir. 1258 01:01:41,250 --> 01:01:44,910 En muna frá viku 0, hvað eru stafir? 1259 01:01:44,910 --> 01:01:49,334 Stafir eru bara abstrakt ofan á Numbers aukastaf númer, 1260 01:01:49,334 --> 01:01:52,500 og tugabrot tölur eru í raun bara abstrakt ofan á tvöfaldur tölur, 1261 01:01:52,500 --> 01:01:53,720 eins og við skilgreint það. 1262 01:01:53,720 --> 01:01:55,540 >> Svo stafir eru tölur. 1263 01:01:55,540 --> 01:01:58,410 Og tölur eru stafir, bara fer eftir samhenginu. 1264 01:01:58,410 --> 01:02:01,250 Og það kemur í ljós að inni af tölvuforriti, 1265 01:02:01,250 --> 01:02:06,830 getur þú skilgreint hvernig þú vilt líta á bita inni á þeirri áætlun? 1266 01:02:06,830 --> 01:02:10,400 >> Muna frá viku 0 sem við höfðum Ascii, sem er bara þetta númer 1267 01:02:10,400 --> 01:02:11,620 kortlagning bréf til tölur. 1268 01:02:11,620 --> 01:02:13,660 Og við sögðum, höfuðborg A er 65. 1269 01:02:13,660 --> 01:02:15,860 Capital B er 66, og svo framvegis. 1270 01:02:15,860 --> 01:02:20,500 >> Og takið eftir, höfum við í raun Sérstafir á Efsta línan hér, eins og C myndi kalla þá, 1271 01:02:20,500 --> 01:02:23,400 stafi, og þá ints á annarri röð. 1272 01:02:23,400 --> 01:02:28,180 Og það kemur í ljós að þú getur umreiknað óaðfinnanlega milli tveggja, yfirleitt. 1273 01:02:28,180 --> 01:02:30,042 Og ef við viljum gera þetta vísvitandi, við 1274 01:02:30,042 --> 01:02:31,750 might vilja til að takast á eitthvað eins og þetta. 1275 01:02:31,750 --> 01:02:33,590 >> Við viljum kannski að breyta efri mál að lækka 1276 01:02:33,590 --> 01:02:35,330 ræða, eða lágstöfum að hástafi. 1277 01:02:35,330 --> 01:02:38,000 Og það kemur í ljós að það er í raun mynstur hér 1278 01:02:38,000 --> 01:02:39,900 við getum faðma í bara smá stund. 1279 01:02:39,900 --> 01:02:44,120 En við skulum líta fyrst á Dæmi um að gera þetta skýrt. 1280 01:02:44,120 --> 01:02:46,340 >> Ég ætla að fara aftur í CS50 IDE. 1281 01:02:46,340 --> 01:02:50,640 Ég ætla að búa til Skráin heitir Ascii 0.c. 1282 01:02:50,640 --> 01:02:55,960 Og ég ætla að fara á undan og bæta minn staðall io.h efst, int helstu ógilt 1283 01:02:55,960 --> 01:02:57,370 efst á virka minn. 1284 01:02:57,370 --> 01:03:02,700 Og þá er ég bara að fara að gera following-- fyrir lykkju frá I jafngildir, 1285 01:03:02,700 --> 01:03:04,610 við skulum segja, 65. 1286 01:03:04,610 --> 01:03:10,460 >> Og þá ég er að fara að vera minna en 65, auk 26 stafir í stafrófinu. 1287 01:03:10,460 --> 01:03:12,640 Svo ég læt tölvuna gera stærðfræði fyrir mig þar. 1288 01:03:12,640 --> 01:03:15,100 Og þá inni þessa lykkju, hvað er ég að fara að prenta? 1289 01:03:15,100 --> 01:03:19,230 >> % C er% i sviga n. 1290 01:03:19,230 --> 01:03:21,290 Og nú vil ég að stinga í tveimur gildum. 1291 01:03:21,290 --> 01:03:24,530 Ég hef tímabundið sett spurningu markar það að bjóða spurninguna. 1292 01:03:24,530 --> 01:03:29,940 >> Ég vil árétta frá 65 og áfram fyrir 26 bókstöfum, 1293 01:03:29,940 --> 01:03:35,190 prentun á hverri ítrun sem óaðskiljanlegur jafngildir staf. 1294 01:03:35,190 --> 01:03:38,299 Með öðrum orðum, ég vil Iterate yfir 26 tölur prentun 1295 01:03:38,299 --> 01:03:41,590 hvað ASCII staf er, bréf, og hvað samsvarandi fjöldi is-- 1296 01:03:41,590 --> 01:03:44,650 í raun bara að endurskapa töfluna frá því renna. 1297 01:03:44,650 --> 01:03:47,010 Svo hvað ætti þessi spurningarmerki vera? 1298 01:03:47,010 --> 01:03:51,760 >> Jæja, það kemur í ljós að seinni einn ætti bara að vera breytileg i. 1299 01:03:51,760 --> 01:03:53,860 Ég vil sjá að sem tala. 1300 01:03:53,860 --> 01:03:58,920 Og miðja rök Hér get ég sagt tölvuna 1301 01:03:58,920 --> 01:04:03,470 til að meðhöndla þessi heiltölu Ég sem persóna, svo sem 1302 01:04:03,470 --> 01:04:05,880 að skipta henni hér fyrir prósent C. 1303 01:04:05,880 --> 01:04:07,990 >> Með öðrum orðum, ef ég, manna forritari, ég veit 1304 01:04:07,990 --> 01:04:09,865 þetta eru bara tölur í lok dags. 1305 01:04:09,865 --> 01:04:12,500 Og ég veit að 65 ætti landakort að einhverju staf. 1306 01:04:12,500 --> 01:04:15,310 Með þessu skýr kastað, með sviga, 1307 01:04:15,310 --> 01:04:18,840 nafn gögn gerð sem þú vilt umbreyta til og lokað svigi, 1308 01:04:18,840 --> 01:04:21,200 þú getur sagt að tölva, hey, tölva, 1309 01:04:21,200 --> 01:04:24,130 umbreyta þessum tölu á bleikju. 1310 01:04:24,130 --> 01:04:26,250 >> Svo þegar ég keyra þetta program eftir að setja saman, 1311 01:04:26,250 --> 01:04:29,740 við skulum sjá hvað ég get-- gera ascii 0. 1312 01:04:29,740 --> 01:04:33,020 Fjári það, hvað gerði ég rangt hér? 1313 01:04:33,020 --> 01:04:35,884 Notkun óskilgreinda kennimerki, allt í lagi, ekki viljandi, 1314 01:04:35,884 --> 01:04:37,800 en við skulum sjá hvort við getum ekki Ástæðan gegnum þetta. 1315 01:04:37,800 --> 01:04:41,220 >> Svo lína five-- svo ég gerði ekki fá mjög langt áður en skrúfa upp. 1316 01:04:41,220 --> 01:04:42,140 Það er allt í lagi. 1317 01:04:42,140 --> 01:04:46,560 Svo línu 5 Ég jafngildir 65-- ég sjá. 1318 01:04:46,560 --> 01:04:50,130 Svo muna að í C, ólíkt sumir tungumál ef þú hefur áður forritun 1319 01:04:50,130 --> 01:04:52,190 reynslu, hefur þú að segja tölva, 1320 01:04:52,190 --> 01:04:55,040 ólíkt grunni, hvað Tegund breytu það er. 1321 01:04:55,040 --> 01:04:56,860 >> Og ég gleymdi a lykill setningu hér. 1322 01:04:56,860 --> 01:04:59,200 Í samræmi fimm, hef ég byrjaði að nota i. 1323 01:04:59,200 --> 01:05:01,560 En ég hef ekki sagt C hvaða gögn tegund það er. 1324 01:05:01,560 --> 01:05:04,570 Þannig að ég ætla að fara í hér og segja, Ah, gera það heiltala. 1325 01:05:04,570 --> 01:05:07,050 >> Nú ætla ég að fara á undan og laun. 1326 01:05:07,050 --> 01:05:08,080 Sem fastur það. 1327 01:05:08,080 --> 01:05:12,660 ./ascii0 Enter, það er góður af kaldur. 1328 01:05:12,660 --> 01:05:15,360 Ekki aðeins er það frábær fljótur að spyrja tölvuna þessa spurningu, 1329 01:05:15,360 --> 01:05:18,885 frekar en að horfa upp á mynd, það prentað út einn í hverja línu, A er 65, 1330 01:05:18,885 --> 01:05:24,860 B er 66, alla leið down-- síðan ég gerði þetta 26 times-- til stafina z, 1331 01:05:24,860 --> 01:05:25,630 sem er 90. 1332 01:05:25,630 --> 01:05:27,790 Og í raun, örlítið fleiri greindur myndi 1333 01:05:27,790 --> 01:05:31,030 hafa verið fyrir mig að treysta á tölvunni til að bæta 26. 1334 01:05:31,030 --> 01:05:34,060 Ég gæti hafa bara gert 90 eins og heilbrigður, svo lengi 1335 01:05:34,060 --> 01:05:37,390 eins og ég ekki gera sömu mistökin tvisvar. 1336 01:05:37,390 --> 01:05:41,880 Ég vil fara upp í gegnum z, ekki bara upp í gegnum y. 1337 01:05:41,880 --> 01:05:44,000 >> Svo er það skýr kastað. 1338 01:05:44,000 --> 01:05:47,860 Það kemur í ljós að þetta er ekki einu sinni nauðsynlegt. 1339 01:05:47,860 --> 01:05:52,480 Leyfðu mér að fara á undan og endursýning þetta þýðanda, og endursýning Ascii 0. 1340 01:05:52,480 --> 01:05:54,940 Það kemur í ljós að C er nokkuð klár. 1341 01:05:54,940 --> 01:05:57,150 >> Og printf, sér í lagi, er nokkuð klár. 1342 01:05:57,150 --> 01:06:01,260 Ef þú fara bara upp i tvisvar fyrir bæði staðgengla, printf 1343 01:06:01,260 --> 01:06:04,510 verður að átta sig, ó, og ég þekki þig gaf mér integer-- sumir tala, 1344 01:06:04,510 --> 01:06:06,380 eins 65, eða 90, eða hvað sem er. 1345 01:06:06,380 --> 01:06:10,170 En ég sé að þú vilt mig til að sníða að tala eins og staf. 1346 01:06:10,170 --> 01:06:16,460 Og svo printf getur óbeint varpað int til char fyrir þig eins og heilbrigður. 1347 01:06:16,460 --> 01:06:19,360 Svo er það ekki vandamál yfirleitt. 1348 01:06:19,360 --> 01:06:23,100 >> En eftir því, vegna þessa jafngildi getum við í raun að gera þetta eins vel. 1349 01:06:23,100 --> 01:06:26,520 Leyfðu mér að fara á undan og gera einn önnur útgáfa af this-- Ascii 1.c. 1350 01:06:26,520 --> 01:06:31,800 Og í stað þess iterating yfir heiltölur, getur raunverulega blása þinn hugur 1351 01:06:31,800 --> 01:06:33,610 með iterating yfir stafi. 1352 01:06:33,610 --> 01:06:37,660 Ef bleikju c fær fjármagni, ég langar að fara á undan og gera þetta, 1353 01:06:37,660 --> 01:06:41,740 svo lengi sem C er minni en eða jafnt og að fjármagni Z. Og á hverri ítrun 1354 01:06:41,740 --> 01:06:45,690 Ég vil að hækka C, ég get nú í printf línu mína hér 1355 01:06:45,690 --> 01:06:51,320 segjum prósent C er prósent ég aftur, komma C. 1356 01:06:51,320 --> 01:06:57,200 >> Og nú, ég get farið í hina áttina, steypu eðli skýrt 1357 01:06:57,200 --> 01:06:58,500 heiltölu. 1358 01:06:58,500 --> 01:07:00,560 Svo aftur, hvers vegna viltu gera þetta? 1359 01:07:00,560 --> 01:07:03,830 Það er svolítið skrítið að raða á telja í skilmálar af stöfum. 1360 01:07:03,830 --> 01:07:07,430 >> En ef þú skilur hvað er fara á undir hetta, 1361 01:07:07,430 --> 01:07:08,430 það er í raun engin galdur. 1362 01:07:08,430 --> 01:07:13,060 Þú ert bara að segja, hey, tölva gefa mér breytu sem heitir C-gerð bleikju. 1363 01:07:13,060 --> 01:07:16,520 Frumstilla hana að höfuðborg A. And taka einn quotes málið. 1364 01:07:16,520 --> 01:07:19,580 >> Fyrir stafi í C, muna frá í síðustu viku, þú nota einn quotes. 1365 01:07:19,580 --> 01:07:23,720 Fyrir strengi, fyrir orð, setningar notarðu gæsalappa. 1366 01:07:23,720 --> 01:07:27,210 OK, tölvan, halda að gera þetta, svo lengi sem eðli er minna en 1367 01:07:27,210 --> 01:07:28,050 eða jafnt og z. 1368 01:07:28,050 --> 01:07:32,640 Og ég veit af Ascii mitt borð sem allir þessi ASCII kóða er samliggjandi. 1369 01:07:32,640 --> 01:07:33,400 >> Það er ekkert bil. 1370 01:07:33,400 --> 01:07:36,737 Svo það er bara í gegnum Z, aðskilin með eitt númer hvert. 1371 01:07:36,737 --> 01:07:38,820 Og þá get ég hækka bleikju, ef ég vil virkilega. 1372 01:07:38,820 --> 01:07:40,390 Í lok dags, það er bara tala. 1373 01:07:40,390 --> 01:07:41,030 Ég veit þetta. 1374 01:07:41,030 --> 01:07:43,670 Svo ég get bara gera ráð fyrir að bæta við 1 til þess. 1375 01:07:43,670 --> 01:07:46,940 >> Og þá í þetta sinn, sem ég prenta c, og þá óaðskiljanlegur jafngildi. 1376 01:07:46,940 --> 01:07:50,170 Og ég er ekki einu sinni þörf á skýr kastað. 1377 01:07:50,170 --> 01:07:52,680 Ég get látið printf og þess tölva Mynd hlutina út, 1378 01:07:52,680 --> 01:07:57,300 þannig að nú ef ég hlaupa gera Ascii1./ascii1, 1379 01:07:57,300 --> 01:08:01,520 Ég fæ nákvæmlega það sama eins og heilbrigður. 1380 01:08:01,520 --> 01:08:04,530 >> Gagnslaus program, though-- engan er að fara til raunverulega skrifa hugbúnað 1381 01:08:04,530 --> 01:08:07,549 í því skyni að reikna út, hvað var tala sem kort til A eða B, eða Z? 1382 01:08:07,549 --> 01:08:10,340 Þú ert bara að fara að google það, eða leita það upp á netinu, eða líta upp 1383 01:08:10,340 --> 01:08:11,650 á mynd, eða þess háttar. 1384 01:08:11,650 --> 01:08:13,520 Svo hvar þetta raunverulega fá gagni? 1385 01:08:13,520 --> 01:08:15,960 >> Jæja, talandi um það renna, eftir það er 1386 01:08:15,960 --> 01:08:20,890 raunveruleg mynstur hér á milli hástafi og lágstafir það var ekki tilviljun. 1387 01:08:20,890 --> 01:08:23,760 Takið eftir að fjármagn A er 65. 1388 01:08:23,760 --> 01:08:25,830 Lágstafir a er 97. 1389 01:08:25,830 --> 01:08:29,649 Og hversu langt í burtu er lágstöfum a? 1390 01:08:29,649 --> 01:08:32,649 >> Svo 65 er hversu mörg skref í burtu frá 97? 1391 01:08:32,649 --> 01:08:36,210 Svo 97 mínus 65 er 32. 1392 01:08:36,210 --> 01:08:37,910 Svo höfuðborg a er 65. 1393 01:08:37,910 --> 01:08:39,939 Ef þú bætir 32 við það, þú færð lágstafir a. 1394 01:08:39,939 --> 01:08:43,729 Og equivalently, ef þú draga 32, þú kemur til baka til höfuðborgarinnar -A- sama með B 1395 01:08:43,729 --> 01:08:46,380 til litla b, stór C við litla c. 1396 01:08:46,380 --> 01:08:50,670 >> Öll þessi bil er 32 í sundur. 1397 01:08:50,670 --> 01:08:54,450 Nú, þetta virðist til að leyfa okkur að gera eitthvað eins og Microsoft Word, 1398 01:08:54,450 --> 01:08:57,729 eða Google Docs eru, þar sem þú Hægt er að velja allt og þá segi, 1399 01:08:57,729 --> 01:09:00,520 breyta öllu til lágstafir eða breyta öllu til hástaf 1400 01:09:00,520 --> 01:09:03,840 eða breyta aðeins fyrsta orðið um setningu til hástafi. 1401 01:09:03,840 --> 01:09:07,390 Við getum í raun gert eitthvað svona sjálf. 1402 01:09:07,390 --> 01:09:12,645 >> Leyfðu mér að fara á undan og vista skrá hér kallað nýta 0.c. 1403 01:09:12,645 --> 01:09:15,770 Og við skulum fara á undan og svipa upp forrit sem gerir nákvæmlega það sem hér segir. 1404 01:09:15,770 --> 01:09:18,460 Svo eru CS50 bókasafn. 1405 01:09:18,460 --> 01:09:21,430 Og eru stöðluð I / O. 1406 01:09:21,430 --> 01:09:22,787 >> Og ég veit að þetta er að koma bráðum. 1407 01:09:22,787 --> 01:09:24,870 Þannig að ég ætla að setja það í það nú þegar, string.h, 1408 01:09:24,870 --> 01:09:26,960 svo ég hef aðgang að hlutir eins Stirling, 1409 01:09:26,960 --> 01:09:29,620 og þá int helstu ógilt, eins og venjulega. 1410 01:09:29,620 --> 01:09:33,420 Og þá ætla ég að fara á undan og gera strengi fær fá band, 1411 01:09:33,420 --> 01:09:35,032 bara til að fá band frá notanda. 1412 01:09:35,032 --> 01:09:36,740 Og þá er ég að fara að gera geðheilsan stöðva mína. 1413 01:09:36,740 --> 01:09:40,510 Ef strengurinn ekki jafn null, þá er það óhætt að halda áfram. 1414 01:09:40,510 --> 01:09:42,000 Og hvað sem ég vil gera? 1415 01:09:42,000 --> 01:09:48,700 Ég ætla að árétta frá ég jafngildir 0, og n upp til strengsins lengd s. 1416 01:09:48,700 --> 01:09:51,899 >> Og ég ætla að gera þetta svo lengi sem I er minni en n, og ég auk plús. 1417 01:09:51,899 --> 01:09:55,060 Svo langt, ég er í raun bara lántökur hugmyndir frá áður. 1418 01:09:55,060 --> 01:09:57,010 Og nú ætla ég að taka upp útibú. 1419 01:09:57,010 --> 01:09:59,635 >> Svo hugsa til baka að klóra, þar við höfðum þá gafflar í veginum, 1420 01:09:59,635 --> 01:10:05,110 og í síðustu viku í C. Ég ætla að segja þetta, ef i-ta eðli í s 1421 01:10:05,110 --> 01:10:09,250 er meiri en eða jafnt að lækka tilfelli, 1422 01:10:09,250 --> 01:10:13,340 and-- í grunni þú myndir bókstaflega segja og, en í C þú segir merkið, 1423 01:10:13,340 --> 01:10:19,830 ampersand-- og i-ta eðli í s er minna en eða jafnt og lækka ef Z, 1424 01:10:19,830 --> 01:10:21,780 við skulum gera eitthvað áhugavert. 1425 01:10:21,780 --> 01:10:27,020 Við skulum í raun prenta út eðli með engu NEWLINE 1426 01:10:27,020 --> 01:10:31,760 sem er eðli í band, i-ta staf í streng. 1427 01:10:31,760 --> 01:10:37,420 >> En við skulum fara á undan og draga 32 frá henni. 1428 01:10:37,420 --> 01:10:42,120 Annars ef eðli í band sem við erum að leita 1429 01:10:42,120 --> 01:10:45,950 er ekki á milli litlu a og lítið z, fara á undan 1430 01:10:45,950 --> 01:10:48,610 og bara prentað það út óbreytt. 1431 01:10:48,610 --> 01:10:50,840 Þannig að við höfum kynnt þetta flokkast rithátturinn 1432 01:10:50,840 --> 01:10:53,560 fyrir strengi okkar til að fá á i-ta staf í streng. 1433 01:10:53,560 --> 01:10:57,520 >> Ég hef bætt við nokkrum skilyrt rökfræði, eins Scratch í viku einu síðustu viku, þar sem 1434 01:10:57,520 --> 01:10:59,880 Ég ætla bara að nota grundvallaratriði mín skilning á því hvað er 1435 01:10:59,880 --> 01:11:01,130 fara á undir hetta. 1436 01:11:01,130 --> 01:11:04,190 Er i-ta eðli s stærra en eða jafnt og a? 1437 01:11:04,190 --> 01:11:08,290 Eins er það 97 eða 98, eða 99, og svo framvegis? 1438 01:11:08,290 --> 01:11:11,940 >> En er það einnig minna en eða jafnt og að verðmæti lágstafir z? 1439 01:11:11,940 --> 01:11:16,210 Og ef svo er, hvað þýðir þetta lína meina? 1440 01:11:16,210 --> 01:11:20,250 14, þetta er tegund af sýkill af öllu hugmynd, 1441 01:11:20,250 --> 01:11:23,840 nýta bréfið með einfaldlega að draga 32 frá því, 1442 01:11:23,840 --> 01:11:29,370 í þessu tilfelli, vegna þess að ég veit, fyrir það graf, hvernig tölur mínar eiga fulltrúa. 1443 01:11:29,370 --> 01:11:33,925 Svo skulum fara á undan og keyra þetta, eftir að setja saman nýta 0.c, 1444 01:11:33,925 --> 01:11:36,210 og hlaupa nýta 0. 1445 01:11:36,210 --> 01:11:40,300 >> Við skulum slá í eitthvað eins Zamyla í öllum lágstöfum inn. 1446 01:11:40,300 --> 01:11:42,780 Og nú höfum við Zamyla í öllum hástafi. 1447 01:11:42,780 --> 01:11:45,050 Við skulum slá í Rob í öllum lágstöfum. 1448 01:11:45,050 --> 01:11:46,674 Við skulum reyna Jason í öllum lágstöfum. 1449 01:11:46,674 --> 01:11:48,590 Og við höldum að fá neyddist fjármögnun. 1450 01:11:48,590 --> 01:11:50,960 Það er minniháttar galla sem ég konar gerði ekki ráð fyrir. 1451 01:11:50,960 --> 01:11:54,050 Tilkynning nýtt hvetja minn er lendi á sömu línu og nöfn þeirra, 1452 01:11:54,050 --> 01:11:55,520 sem finnst svolítið sóðalegur. 1453 01:11:55,520 --> 01:11:59,170 >> Þannig að ég ætla að fara hér, og reyndar í lok þessarar áætlunar 1454 01:11:59,170 --> 01:12:02,110 prenta út ný lína staf. 1455 01:12:02,110 --> 01:12:03,160 Það er allt og sumt. 1456 01:12:03,160 --> 01:12:06,120 Með printf, þú þarft ekki að fara í breytur eða sniði kóða. 1457 01:12:06,120 --> 01:12:08,460 Þú getur bókstaflega bara prenta eitthvað eins og NEWLINE. 1458 01:12:08,460 --> 01:12:13,529 >> Svo skulum fara á undan og gera nýta 0 aftur, endursýning það, Zamyla. 1459 01:12:13,529 --> 01:12:14,820 Og nú er það svolítið fallegri. 1460 01:12:14,820 --> 01:12:17,274 Nú hvetja mitt er á eigin nýja línu. 1461 01:12:17,274 --> 01:12:18,440 Svo er það allt í lagi og gott. 1462 01:12:18,440 --> 01:12:19,910 Svo er það gott dæmi. 1463 01:12:19,910 --> 01:12:22,700 En ég er ekki einu sinni endilega þarf að harða kóða 32. 1464 01:12:22,700 --> 01:12:23,350 Veistu hvað? 1465 01:12:23,350 --> 01:12:26,350 Ég gæti say-- ég ekki alltaf muna hvað munurinn er. 1466 01:12:26,350 --> 01:12:29,330 >> En ég veit að ef ég hafa lágstafinn, 1467 01:12:29,330 --> 01:12:34,430 Ég vil fyrst og fremst að draga burt hvað fjarlægðin er á milli lítið 1468 01:12:34,430 --> 01:12:39,160 a og stór, vegna þess að ef ég geri ráð fyrir að allar aðrir stafir eru þau sömu, 1469 01:12:39,160 --> 01:12:41,045 sem ætti að fá starf. 1470 01:12:41,045 --> 01:12:42,670 En frekar en að gera það, þú veist hvað? 1471 01:12:42,670 --> 01:12:44,240 Það er önnur leið enn. 1472 01:12:44,240 --> 01:12:48,090 >> Ef það er að nýta 1.c-- ef ég væri að setja það inn í sérstaka skrá. 1473 01:12:48,090 --> 01:12:51,030 við skulum ekki nýta 2.c sem hér segir. 1474 01:12:51,030 --> 01:12:53,060 Ég ætla að virkilega hreinsa þetta upp hér. 1475 01:12:53,060 --> 01:12:57,420 Og í stað þess að jafnvel að þurfa að vita eða sjá um þá lágu stigi 1476 01:12:57,420 --> 01:13:01,090 framkvæmd smáatriði, ég er í staðinn bara að fara að prenta staf, 1477 01:13:01,090 --> 01:13:04,610 vitna unquote, prósent C, og þá kalla annað fall sem 1478 01:13:04,610 --> 01:13:09,950 er til sem tekur rifrildi, sem er eðli, eins og þetta. 1479 01:13:09,950 --> 01:13:12,630 >> Það kemur í ljós í C, það er annar virka símtalinu 1480 01:13:12,630 --> 01:13:15,550 til efri, sem eins og nafn þess bendir tekur staf 1481 01:13:15,550 --> 01:13:19,350 og gerir það að efri hulstrið sambærilegt, og þá skilar það 1482 01:13:19,350 --> 01:13:21,410 svo að printf getur stinga því í það. 1483 01:13:21,410 --> 01:13:25,484 Og svo til að gera þetta, þó ég þarf að kynna eina aðra skrá. 1484 01:13:25,484 --> 01:13:28,400 Það kemur í ljós að það er annar skrá að þú myndir bara vita af bekknum, 1485 01:13:28,400 --> 01:13:33,020 eða kennslubók, eða á netinu tilvísun, hringdi C type.h. 1486 01:13:33,020 --> 01:13:38,570 >> Þannig að ef ég bæti það upp meðal haus minn skrár, og nú aftur saman þetta forrit, 1487 01:13:38,570 --> 01:13:43,040 capitalize2, ./capitalize2 Enter. 1488 01:13:43,040 --> 01:13:46,690 Við skulum slá í Zamyla í öllum lágstafir, enn virkar það sama. 1489 01:13:46,690 --> 01:13:48,040 En þú veist hvað? 1490 01:13:48,040 --> 01:13:55,590 Það kemur í ljós að til þess að efri hefur einhverja aðra virkni. 1491 01:13:55,590 --> 01:13:58,410 >> Og láta mig kynna þetta stjórn hér, eins konar vandræðalega 1492 01:13:58,410 --> 01:14:00,250 nefnt, en maðurinn fyrir handbók. 1493 01:14:00,250 --> 01:14:03,960 Það kemur í ljós að flestir Linux tölvur, eins og við erum að nota here-- Linux stýrikerfi 1494 01:14:03,960 --> 01:14:06,270 system-- hafa stjórn heitir maður, sem segir, 1495 01:14:06,270 --> 01:14:08,530 hey, tölva, gefa mér handbók í tölvunni. 1496 01:14:08,530 --> 01:14:10,680 Hvað viltu að líta upp í þeirri handbók? 1497 01:14:10,680 --> 01:14:13,840 >> Ég vil líta upp aðgerðina kallaði til efri, Enter. 1498 01:14:13,840 --> 01:14:16,070 Og það er svolítið dulinn að lesa stundum. 1499 01:14:16,070 --> 01:14:18,780 En taka við erum í handbók linux forritari. 1500 01:14:18,780 --> 01:14:19,530 Og það er allt texta. 1501 01:14:19,530 --> 01:14:21,905 Og eftir að það er Heiti virka hér. 1502 01:14:21,905 --> 01:14:25,030 Það kemur í ljós að það hefur frænda sem heitir að lækka, sem gerir hið gagnstæða. 1503 01:14:25,030 --> 01:14:29,710 Og takið eftir undir ágrip, til að nota þetta virka maðurinn síðuna, svo að segja, 1504 01:14:29,710 --> 01:14:32,220 er að segja mér að ég þarf að fela c type.h. 1505 01:14:32,220 --> 01:14:33,630 Og ég vissi að úr starfi. 1506 01:14:33,630 --> 01:14:36,210 >> Hér, það er að sýna mér tvö frumútgáfur fyrir virka, 1507 01:14:36,210 --> 01:14:39,070 þannig að ef ég vil alltaf að nota þetta Ég veit hvað þeir taka sem inntak, 1508 01:14:39,070 --> 01:14:40,652 og hvað þeir aftur sem framleiðsla. 1509 01:14:40,652 --> 01:14:42,360 Og þá ef ég las lýsing, sjá I 1510 01:14:42,360 --> 01:14:44,820 nánar hvaða hlutverk gerir. 1511 01:14:44,820 --> 01:14:48,100 En meira um vert, ef Ég lít undir verðmæti aftur, 1512 01:14:48,100 --> 01:14:51,710 það segir verðmæti skilað er að af the breytir bréfinu, 1513 01:14:51,710 --> 01:14:57,880 eða C, upprunalega inntak, ef að viðskiptin var ekki hægt. 1514 01:14:57,880 --> 01:15:01,992 >> Með öðrum orðum, að efri mun reyna að breyta bréf til hástafi. 1515 01:15:01,992 --> 01:15:03,450 Og ef svo er, það er að fara að skila henni. 1516 01:15:03,450 --> 01:15:07,010 En ef það er ekki hægt fyrir suma reason-- kannski er það þegar hástaf 1517 01:15:07,010 --> 01:15:09,550 kannski er það upphrópunarmerki eða einhver önnur punctuation-- 1518 01:15:09,550 --> 01:15:12,200 það er bara að fara að skila upprunalega C, 1519 01:15:12,200 --> 01:15:17,340 sem þýðir að ég get gert númerið mitt betur hannað eins og hér segir. 1520 01:15:17,340 --> 01:15:20,580 >> Ég þarf ekki alla þessi fjári línur af kóða. 1521 01:15:20,580 --> 01:15:22,610 Allar línur sem ég hef bara hápunktur getur 1522 01:15:22,610 --> 01:15:28,700 að hrunið í bara eitt einfalt lína, sem er this-- printf prósent 1523 01:15:28,700 --> 01:15:33,510 c efri S krappi i. 1524 01:15:33,510 --> 01:15:36,090 Og þetta myndi vera dæmi um betri hönnun. 1525 01:15:36,090 --> 01:15:40,040 >> Hvers vegna hrinda í 7 eða 8 línur af kóða, hvað sem það var ég bara 1526 01:15:40,040 --> 01:15:44,960 eytt, þegar þú getur í staðinn hrynja öll þessi rökfræði og ákvarðanatöku 1527 01:15:44,960 --> 01:15:49,620 í einni línu, 13 nú, að byggir á bókasafni function-- 1528 01:15:49,620 --> 01:15:53,430 fall sem kemur með C, en það er nákvæmlega það sem þú vilt að hún geri. 1529 01:15:53,430 --> 01:15:55,295 Og hreinskilnislega, jafnvel þótt það kom ekki með C, 1530 01:15:55,295 --> 01:15:58,880 þú gætir framkvæma það sjálfur, eins og við höfum séð, með að fá neikvæð int 1531 01:15:58,880 --> 01:16:01,700 og fá jákvæð INT síðustu viku eins og heilbrigður. 1532 01:16:01,700 --> 01:16:03,470 >> Þetta númer er nú miklu læsilegri. 1533 01:16:03,470 --> 01:16:06,670 Og reyndar, ef við skruna upp, líta hversu miklu meira samningur 1534 01:16:06,670 --> 01:16:08,360 þessi útgáfa af forritinu mínu er. 1535 01:16:08,360 --> 01:16:11,230 Það er svolítið efst þungur núna, með öllum þessum nær. 1536 01:16:11,230 --> 01:16:14,380 En það er allt í lagi, vegna þess að nú er ég að standa á herðum forritari 1537 01:16:14,380 --> 01:16:15,300 fyrir mér. 1538 01:16:15,300 --> 01:16:18,440 Og hver var það sem framkvæmda við efri virkilega 1539 01:16:18,440 --> 01:16:21,470 gerði mér greiða, eins sá framkvæmda Stirling í raun 1540 01:16:21,470 --> 01:16:24,790 gerði mér greiða nokkru síðan. 1541 01:16:24,790 --> 01:16:26,970 Og svo nú höfum við betri hönnun program 1542 01:16:26,970 --> 01:16:31,680 sem útfærir nákvæmlega sömu rökfræði. 1543 01:16:31,680 --> 01:16:35,580 >> Talandi um Stirling, láta mig fara á undan og gera þetta. 1544 01:16:35,580 --> 01:16:38,320 Leyfðu mér að fara á undan og vista þessi skrá sem stirling.c. 1545 01:16:38,320 --> 01:16:43,255 Og það kemur í ljós, getum við afhýða aftur eitt annað lag ansi einfaldlega núna. 1546 01:16:43,255 --> 01:16:45,630 Ég ætla að fara á undan og svipa upp annað forrit í helstu 1547 01:16:45,630 --> 01:16:49,759 hér að einfaldlega með tilvísun til-áhald band lengd eins og hér segir. 1548 01:16:49,759 --> 01:16:52,300 Svo er hér lína af kóða sem fær mig band frá notanda. 1549 01:16:52,300 --> 01:16:53,910 Við halda áfram að nota þetta aftur og aftur. 1550 01:16:53,910 --> 01:16:58,900 Leyfðu mér að gefa mér breytu sem heitir n af gerðinni int sem geymir fjölda. 1551 01:16:58,900 --> 01:17:02,490 >> Og láta mig fara á undan og gera eftirfarandi rökfræði. 1552 01:17:02,490 --> 01:17:15,610 Þó að n-ta eðli í s er ekki jafn sviga 0, fara á undan 1553 01:17:15,610 --> 01:17:17,930 og hækka n. 1554 01:17:17,930 --> 01:17:23,506 Og síðan prentað út printf prósent i n. 1555 01:17:23,506 --> 01:17:29,200 Ég halda því fram að þetta forrit hér, án þess að kalla band lengd, 1556 01:17:29,200 --> 01:17:31,150 tölur út lengd strengsins. 1557 01:17:31,150 --> 01:17:34,600 >> Og galdur er algjörlega encapsulated í línu 8 1558 01:17:34,600 --> 01:17:39,830 Hér með það lítur út eins og nýr setningafræði, þetta skástrik 0 í einn quotes. 1559 01:17:39,830 --> 01:17:41,360 En hvers vegna er það? 1560 01:17:41,360 --> 01:17:44,100 Jæja, íhuga hvað er verið fara á öllum þessum tíma. 1561 01:17:44,100 --> 01:17:47,990 >> Og eins og innskot áður en ég gleymi, grein fyrir of, að í viðbót við manninn síður 1562 01:17:47,990 --> 01:17:50,920 að koma með dæmigerður Linux kerfi eins CS50 IDE, 1563 01:17:50,920 --> 01:17:53,770 grein fyrir því að við, sem Starfsfólk Auðvitað er, hafa einnig 1564 01:17:53,770 --> 01:17:56,030 gerði website útgáfa þessarar sömu hugmynd heitir 1565 01:17:56,030 --> 01:17:59,940 reference.cs50.net, sem hefur allar þessar sömu maður síður, 1566 01:17:59,940 --> 01:18:02,020 allt það sama skjöl, svo og 1567 01:18:02,020 --> 01:18:05,730 lítill kassi efst sem gerir þér kleift að umbreyta öllum sæmilega 1568 01:18:05,730 --> 01:18:09,025 Bogagöng tungumál í minna þægilegt ham, þar sem við, kennara, 1569 01:18:09,025 --> 01:18:12,150 hafa gengið í gegnum og reyndi að einfalda sum tungumál til að halda hlutum 1570 01:18:12,150 --> 01:18:14,830 áherslu á hugmyndum, og ekki sum af tæknilegu hliðinni. 1571 01:18:14,830 --> 01:18:20,070 Svo hafa í huga, reference.cs50.net eins og annar auðlind eins og heilbrigður. 1572 01:18:20,070 --> 01:18:23,800 >> En hvers vegna er strengur lengd vinnu í leiðin sem ég lagði stund síðan? 1573 01:18:23,800 --> 01:18:25,160 Hér er nafn Zamyla er aftur. 1574 01:18:25,160 --> 01:18:27,690 Og hér er nafn Zamyla er Hnefaleikar í, eins og ég halda að gera, 1575 01:18:27,690 --> 01:18:31,360 að mála mynd um það að vera, í raun, bara röð af stöfum. 1576 01:18:31,360 --> 01:18:34,260 En Zamyla er ekki til í einangrun í áætluninni. 1577 01:18:34,260 --> 01:18:37,420 >> Þegar þú skrifar og hlaupa a program, þú ert að nota Mac eða PC þína 1578 01:18:37,420 --> 01:18:40,010 sem minni, eða RAM svo að segja. 1579 01:18:40,010 --> 01:18:42,620 Og hægt er að hugsa um tölvan sem hafa 1580 01:18:42,620 --> 01:18:44,730 hellingur af gígabæta minni þessa dagana. 1581 01:18:44,730 --> 01:18:47,700 Og tónleikar þýðir milljarða, svo billjón bæti. 1582 01:18:47,700 --> 01:18:48,910 >> En við skulum baka í tíma. 1583 01:18:48,910 --> 01:18:51,530 Og geri ráð fyrir að við erum að nota mjög gamla tölvu sem 1584 01:18:51,530 --> 01:18:55,150 Aðeins eru 32 bæti af minni. 1585 01:18:55,150 --> 01:18:59,310 Ég gat á tölvuskjáinn, einfaldlega draga þetta út eins og hér segir. 1586 01:18:59,310 --> 01:19:05,240 >> Ég gæti einfaldlega sagt að minn tölva hefur allt þetta minni. 1587 01:19:05,240 --> 01:19:08,830 Og þetta er eins og stafur minni, ef þú manst mynd okkar af síðasta tíma. 1588 01:19:08,830 --> 01:19:11,670 Og ef ég skipta bara þetta í nógu oft, 1589 01:19:11,670 --> 01:19:15,040 Ég halda því fram að ég hef 32 bæti minni á skjánum. 1590 01:19:15,040 --> 01:19:18,239 >> Nú, í raun, ég get bara draga svo langt á þessum skjá hér. 1591 01:19:18,239 --> 01:19:20,280 Þannig að ég ætla að fara á undan, og bara með því að venju, 1592 01:19:20,280 --> 01:19:24,050 draga minni tölvunnar míns sem rist, ekki bara eins og einn beint línu. 1593 01:19:24,050 --> 01:19:28,190 Nánar tiltekið, halda ég nú að þetta rist, þetta 8 eftir 4 rist, 1594 01:19:28,190 --> 01:19:31,800 bara táknar alla 32 bæti minni í boði í Mac minn, 1595 01:19:31,800 --> 01:19:33,030 eða í boði í tölvunni minni. 1596 01:19:33,030 --> 01:19:34,780 Og þeir eru umbúðir á að tvær línur, bara 1597 01:19:34,780 --> 01:19:38,030 vegna þess að það passar meira á skjánum. 1598 01:19:38,030 --> 01:19:40,800 En þetta er fyrsta bæti. 1599 01:19:40,800 --> 01:19:41,990 Þetta er í annað bæti. 1600 01:19:41,990 --> 01:19:43,300 Þetta er þriðja bæti. 1601 01:19:43,300 --> 01:19:45,310 >> Og þetta er 32nd bæti. 1602 01:19:45,310 --> 01:19:52,910 Eða, ef við hugsum eins og tölva vísindamaður, þetta er bæti 0, 1, 2, 3, 31. 1603 01:19:52,910 --> 01:19:55,950 Svo þú þarft 0 til 31, ef þú byrjar að telja á 0. 1604 01:19:55,950 --> 01:19:59,830 >> Þannig að ef við notum forrit að símtöl fá band, 1605 01:19:59,830 --> 01:20:05,280 og við fáum band frá mönnum eins og ÉG did hringdi Zamyla, Z-A-M-Y-L-A, 1606 01:20:05,280 --> 01:20:09,430 hvernig í heiminum er að tölva Haltu utan um þau bæti, 1607 01:20:09,430 --> 01:20:12,230 sem klumpur af minni, tilheyrir sem band? 1608 01:20:12,230 --> 01:20:16,270 Með öðrum orðum, ef við höldum áfram að slá annað nafn inn í tölvuna, 1609 01:20:16,270 --> 01:20:19,890 eins og þetta Andi, hringja fá band í annað sinn, 1610 01:20:19,890 --> 01:20:23,030 A-N-D-I hefur að enda í minni tölvunnar eins og heilbrigður. 1611 01:20:23,030 --> 01:20:23,850 En hvernig? 1612 01:20:23,850 --> 01:20:29,700 >> Jæja, það kemur í ljós að undir hetta, hvað C er þegar geyma strengi 1613 01:20:29,700 --> 01:20:35,080 að mönnum gerðum í, eða sem koma frá einhverjum öðrum uppruna, er það 1614 01:20:35,080 --> 01:20:39,190 lýsir enda af þeim með sérstakt character-- sviga 1615 01:20:39,190 --> 01:20:44,750 0, sem er bara sérstakan hátt segja 80 bita í röð. 1616 01:20:44,750 --> 01:20:47,950 >> Svo -A- er þetta númer 97 muna. 1617 01:20:47,950 --> 01:20:51,770 Svo sumir mynstur 8 bita táknar heiltala 97. 1618 01:20:51,770 --> 01:20:58,070 Þetta sviga 0 er bókstaflega fjöldi 0, gengur einnig undir nafninu Nul, N-U-L, ólíkt áður, 1619 01:20:58,070 --> 01:20:59,630 N-U-L-L, þar sem við ræddum um. 1620 01:20:59,630 --> 01:21:05,700 En nú, bara veit að þetta sviga 0 er bara 80 bitar í röð. 1621 01:21:05,700 --> 01:21:09,810 >> Og það er bara þessi lína í sandur sem segir nokkuð til vinstri 1622 01:21:09,810 --> 01:21:12,610 tilheyrir einum streng, eða einn tegund gagna. 1623 01:21:12,610 --> 01:21:15,480 Og allt til hægri tilheyrir eitthvað annað. 1624 01:21:15,480 --> 01:21:17,440 Andi er nafn, á meðan, sem bara sjónrænt 1625 01:21:17,440 --> 01:21:21,310 gerist að vefja um að hinni línunni, en það er bara fagurfræði smáatriði, 1626 01:21:21,310 --> 01:21:23,990 Á sama hátt er Nul slitið. 1627 01:21:23,990 --> 01:21:29,290 >> Það er a band af a A-N-D-I stafi, auk fimmtungur leyndarmál staf, 1628 01:21:29,290 --> 01:21:33,560 allt 0 bitar, sem bara demarcates í lok nafni Andi eins og heilbrigður. 1629 01:21:33,560 --> 01:21:37,120 Og ef við köllum fá band í þriðja sinn í tölvunni til að fá band eins 1630 01:21:37,120 --> 01:21:44,210 Maria, M-A-R-I-A, Á sama hátt er Maríu Nafnið Nul slitið með sviga 0. 1631 01:21:44,210 --> 01:21:47,170 >> Þetta er í grundvallaratriðum öðruvísi frá því hvernig tölva myndi venjulega 1632 01:21:47,170 --> 01:21:51,850 geyma heiltölu eða fljóta, eða önnur gagnatög enn, vegna þess að muna, 1633 01:21:51,850 --> 01:21:57,420 heiltala er yfirleitt 32 bita eða 4 bæti, eða kannski jafnvel 64 bitar, 1634 01:21:57,420 --> 01:21:59,100 eða átta bæti. 1635 01:21:59,100 --> 01:22:02,620 En margir frumform í tölvunni í forritunarmál 1636 01:22:02,620 --> 01:22:05,550 hafa fastan fjölda bæti undir hood-- 1637 01:22:05,550 --> 01:22:08,100 kannski 1, kannski 2, kannski 4, kannski 8. 1638 01:22:08,100 --> 01:22:13,250 >> En strengir, með hönnun, hafa dynamic fjöldi stafi. 1639 01:22:13,250 --> 01:22:16,980 Þú veist ekki fyrirfram, þar manna gerðir í Z-A-M-Y-L-A, 1640 01:22:16,980 --> 01:22:21,400 eða M-A-R-I-A, eða A-N-D-I. Þú veist ekki hversu oft notandinn er að fara að lemja 1641 01:22:21,400 --> 01:22:22,070 lyklaborðið. 1642 01:22:22,070 --> 01:22:26,490 Því þú veist ekki hvernig margir stafir í fyrirfram 1643 01:22:26,490 --> 01:22:27,540 þú ert að fara að þurfa. 1644 01:22:27,540 --> 01:22:31,840 >> Og svo C bara svona fer eins og Leyndarmálið breadcrumb undir hetta 1645 01:22:31,840 --> 01:22:32,960 í lok band. 1646 01:22:32,960 --> 01:22:39,280 Eftir að geyma Z-A-M-Y-L-A í minni, það líka bara setur jafnvirði 1647 01:22:39,280 --> 01:22:40,210 á tímabilinu. 1648 01:22:40,210 --> 01:22:45,060 Í lok setningarinnar, það setur 80 bita, svo sem 1649 01:22:45,060 --> 01:22:49,120 að muna hvar Zamyla byrjar og endar. 1650 01:22:49,120 --> 01:22:51,490 >> Svo er það tengingin, þá, að þetta forrit? 1651 01:22:51,490 --> 01:22:55,190 Þetta forrit hér, Stirling, er einfaldlega kerfi 1652 01:22:55,190 --> 01:22:57,970 til að fá band frá notanda, lína 6. 1653 01:22:57,970 --> 01:23:01,160 Line 7, lýsa ég breytu heitir n og setja það jafnt 0. 1654 01:23:01,160 --> 01:23:08,680 >> Og þá í línu 8, spurði ég einfaldlega spurning, en n-ta karakter gerir 1655 01:23:08,680 --> 01:23:12,120 ekki jafnt allir 0 bits-- með öðrum orðum, er það ekki 1656 01:23:12,120 --> 01:23:14,500 jafnt þetta sérstaka eðli, sviga 0, þar sem 1657 01:23:14,500 --> 01:23:18,470 var bara að sérstakur Nul character-- fara á undan og bara hækka n. 1658 01:23:18,470 --> 01:23:21,460 >> Og halda að gera það, og halda að gera það, og halda að gera það. 1659 01:23:21,460 --> 01:23:23,430 Og svo jafnvel þótt í fortíðin sem við höfum notað i, 1660 01:23:23,430 --> 01:23:25,181 það er fullkomlega í lagi merkingu og til að nota n, 1661 01:23:25,181 --> 01:23:27,430 ef þú ert bara að reyna að telja þetta sinn vísvitandi, 1662 01:23:27,430 --> 01:23:28,720 og bara til að kalla það n. 1663 01:23:28,720 --> 01:23:34,720 Þannig að þetta heldur bara að spyrja spurningu, er n-ta eðli s allt 0sek? 1664 01:23:34,720 --> 01:23:38,470 Ef ekki, líta til næstu útlit, líta til næsta, líta til næsta, 1665 01:23:38,470 --> 01:23:39,460 líta til the næstur. 1666 01:23:39,460 --> 01:23:45,540 >> En um leið og þú sérð sviga 0, þetta loop-- lína 9 í 11-- hættir. 1667 01:23:45,540 --> 01:23:49,640 Þú brjótast út úr while lykkju, fara inni í því breytilega N 1668 01:23:49,640 --> 01:23:54,530 samtals telja af öllum hér að stafir í strengnum sem þú sást, 1669 01:23:54,530 --> 01:23:55,660 þannig prentun það út. 1670 01:23:55,660 --> 01:23:56,760 Svo skulum reyna þetta. 1671 01:23:56,760 --> 01:23:59,500 >> Leyfðu mér að fara á undan og, án þess að nota Stirling virka, 1672 01:23:59,500 --> 01:24:04,240 en bara að nota eigin homegrown minn útgáfu hér kallað Stirling, láta mig fara á undan 1673 01:24:04,240 --> 01:24:07,700 og hlaupa Stirling, tegund í eitthvað eins Zamyla, sem ég veit fyrirfram 1674 01:24:07,700 --> 01:24:08,670 er sex stafir. 1675 01:24:08,670 --> 01:24:10,080 Við skulum sjá hvort það virkar. 1676 01:24:10,080 --> 01:24:10,920 Reyndar er það sex. 1677 01:24:10,920 --> 01:24:15,257 Við skulum reyna með Rob, þrír stafir, þrír stafir eins vel, og svo framvegis. 1678 01:24:15,257 --> 01:24:17,340 Svo er það allt sem er að gerast á undir hetta. 1679 01:24:17,340 --> 01:24:19,548 Og eftir tengingar, þá, með fyrstu viku 1680 01:24:19,548 --> 01:24:22,370 í flokki, þar sem við ræddum um eitthvað eins og abstrakt, 1681 01:24:22,370 --> 01:24:26,960 sem er bara þetta layering af hugmyndum, eða flókið, ofan á grundvallarreglum. 1682 01:24:26,960 --> 01:24:30,710 Hér erum við svoleiðis leita undir hetta Stirling, 1683 01:24:30,710 --> 01:24:33,510 svo að segja, til að reikna út, hvernig væri það að koma til framkvæmda? 1684 01:24:33,510 --> 01:24:35,232 >> Og við gætum aftur framkvæma það sjálf. 1685 01:24:35,232 --> 01:24:37,440 En við erum aldrei aftur að fara að koma aftur innleiða Stirling. 1686 01:24:37,440 --> 01:24:39,780 Við erum bara að fara að nota Stirling í röð 1687 01:24:39,780 --> 01:24:42,100 til raunverulega fá smá strengi lengd. 1688 01:24:42,100 --> 01:24:44,200 >> En það er engin galdur undir hetta. 1689 01:24:44,200 --> 01:24:46,716 Ef þú veist að undir hetta, a band 1690 01:24:46,716 --> 01:24:48,090 er bara röð af stöfum. 1691 01:24:48,090 --> 01:24:51,090 Og það röð af stöfum allir geta verið tölulega beint 1692 01:24:51,090 --> 01:24:53,330 með bracket 0, krappi 1, krappi 2 og þú 1693 01:24:53,330 --> 01:24:57,420 vita að í lok streng er sérstakur karakter, er hægt að reikna út 1694 01:24:57,420 --> 01:25:01,710 hvernig á að gera mest allt í a program, vegna þess að allt það snýst um að 1695 01:25:01,710 --> 01:25:03,400 er að lesa og skrifa minni. 1696 01:25:03,400 --> 01:25:06,130 Það er að breytast og leita á minni, eða færa hluti 1697 01:25:06,130 --> 01:25:10,940 um í minni, prentun hlutir á skjánum, og svo framvegis. 1698 01:25:10,940 --> 01:25:14,800 >> Svo skulum nota nú þessa nýfundinni skilningur á því hvað strengir í raun 1699 01:25:14,800 --> 01:25:17,910 eru undir hetta, og afhýða aftur eitt annað lag 1700 01:25:17,910 --> 01:25:20,080 sem allt þar til nú að við höfum verið að hunsa með öllu. 1701 01:25:20,080 --> 01:25:22,650 Einkum hvenær við höfum innleitt áætlun, 1702 01:25:22,650 --> 01:25:25,930 við höfum haft þessa línu af kóða ofarlega lýsa helstu. 1703 01:25:25,930 --> 01:25:27,810 Og við höfum tilgreint int helstu ógilt. 1704 01:25:27,810 --> 01:25:31,240 >> Og það ógilt inni í sviga hefur verið að segja allan þennan tíma að helsta 1705 01:25:31,240 --> 01:25:33,440 sjálft tekur ekki nein rök. 1706 01:25:33,440 --> 01:25:36,210 Sérhver inntak sem helsta er að fara að fá frá notandanum 1707 01:25:36,210 --> 01:25:39,020 þarf að koma frá einhverjum öðrum vélbúnaður, eins Fá int, 1708 01:25:39,020 --> 01:25:42,040 eða fá fljóta, eða fá band, eða einhver önnur virka. 1709 01:25:42,040 --> 01:25:44,710 En það kemur í ljós að þegar þú skrifar forrit, 1710 01:25:44,710 --> 01:25:47,690 þú getur raunverulega að tilgreina að þetta forrit skal 1711 01:25:47,690 --> 01:25:51,730 taka inntak frá mönnum á skipanalínu sjálft. 1712 01:25:51,730 --> 01:25:56,310 >> Með öðrum orðum, jafnvel þó að við svona langt hafa verið í gangi bara ./hello halló 1713 01:25:56,310 --> 01:26:00,312 eða svipuð forrit, allt frá því önnur forrit sem við höfum verið að nota, 1714 01:26:00,312 --> 01:26:02,770 að við sjálf ekki skrifa, hafa verið að taka, það virðist, 1715 01:26:02,770 --> 01:26:05,210 stjórn lína arguments-- hlutir eins gera. 1716 01:26:05,210 --> 01:26:07,450 Þú segir eitthvað eins gera, og þá annað orð. 1717 01:26:07,450 --> 01:26:10,950 Eða Clang, þú segir Clang, og þá annað orð, heiti skráar. 1718 01:26:10,950 --> 01:26:14,410 >> Eða jafnvel RM eða CP, eins og þú might hafa séð eða notað þegar 1719 01:26:14,410 --> 01:26:15,880 til að fjarlægja eða afrita skrár. 1720 01:26:15,880 --> 01:26:18,920 Allir sem taka svokallaða stjórn lína arguments-- 1721 01:26:18,920 --> 01:26:21,130 viðbótar orð á flugstöðinni hvetja. 1722 01:26:21,130 --> 01:26:23,260 En allt þar til nú, við sjálf hef ekki haft 1723 01:26:23,260 --> 01:26:27,080 þetta lúxus að taka inntak frá notandi þegar hann eða hún hleypur í raun 1724 01:26:27,080 --> 01:26:29,120 forritið sjálft á skipanalínunni. 1725 01:26:29,120 --> 01:26:33,710 >> En við getum gert það með tilvísun til-að lýsa Helstu áfram, ekki eins og að hafa 1726 01:26:33,710 --> 01:26:36,750 ógilt í sviga, en þessar tvær breytur 1727 01:26:36,750 --> 01:26:40,600 instead-- fyrsta heiltala, og seinni eitthvað 1728 01:26:40,600 --> 01:26:44,170 ný, eitthvað sem við erum að fara að hringja fylki, eitthvað svipað í anda 1729 01:26:44,170 --> 01:26:49,220 við það sem við sáum í grunni sem lista, en fylki af strengjum, eins og við munum sjá fljótlega. 1730 01:26:49,220 --> 01:26:51,790 En við skulum sjá þetta með því að til að gefa dæmi, áður en við 1731 01:26:51,790 --> 01:26:53,690 greina nákvæmlega hvað það þýðir. 1732 01:26:53,690 --> 01:26:56,520 >> Þannig að ef ég fer inn í CS50 IDE hér, ég hef farið á undan 1733 01:26:56,520 --> 01:27:01,840 og lýst í skrá sem kallast argv0.c eftirfarandi sniðmát. 1734 01:27:01,840 --> 01:27:04,120 Og taka eina það er öðruvísi svo langt 1735 01:27:04,120 --> 01:27:08,570 er að ég hef breytt ógilt að int argc band argv opið krappi, nálægt 1736 01:27:08,570 --> 01:27:09,070 krappi. 1737 01:27:09,070 --> 01:27:11,730 Og eftir að nú, það er ekkert inni þessum sviga. 1738 01:27:11,730 --> 01:27:12,620 >> Það er engin tala. 1739 01:27:12,620 --> 01:27:15,070 Og það er engin i, eða n, eða önnur bréf. 1740 01:27:15,070 --> 01:27:17,010 Ég ætla bara að nota hornklofum fyrir nú, 1741 01:27:17,010 --> 01:27:19,510 af ástæðum sem við munum koma aftur í bara smá stund. 1742 01:27:19,510 --> 01:27:21,330 >> Og nú það sem ég ætla að gera er þetta. 1743 01:27:21,330 --> 01:27:26,680 Ef argc jafnt jafnt 2-- og muna að jafn jafn 1744 01:27:26,680 --> 01:27:30,040 er jafnrétti rekstraraðili bera saman vinstri og hægri fyrir jafnrétti. 1745 01:27:30,040 --> 01:27:31,790 Það er ekki verkefni rekstraraðila, sem er 1746 01:27:31,790 --> 01:27:36,510 einn jafnaðarmerki, sem þýðir afrit frá hægri til vinstri sumir gildi. 1747 01:27:36,510 --> 01:27:42,840 >> Ef argc jafngildir jafngildir 2, ég vil segjum printf, halló, percents, nýja línan, 1748 01:27:42,840 --> 01:27:47,340 og þá stinga in-- og hér er nýja trick-- argv krappi 1, af ástæðum 1749 01:27:47,340 --> 01:27:48,840 að við munum koma aftur í smá stund. 1750 01:27:48,840 --> 01:27:52,110 Annars ef argc ekki jafnt 2, þú veist hvað? 1751 01:27:52,110 --> 01:27:57,400 Við skulum fara bara á undan og, eins og venjulega, prenta út halló heimur án skipta. 1752 01:27:57,400 --> 01:28:02,710 >> Svo virðist sem ef argc, sem stendur fyrir rifrildi telja, jafngildir 2, 1753 01:28:02,710 --> 01:28:04,740 Ég ætla að prenta út halló eitthvað. 1754 01:28:04,740 --> 01:28:07,560 Annars, við vanræksla, ég er að fara að prenta halló heiminn. 1755 01:28:07,560 --> 01:28:08,770 Svo hvað þýðir þetta? 1756 01:28:08,770 --> 01:28:15,550 >> Jæja, láttu mig fara á undan og vista þessi skrá, og þá gera gera argv0, 1757 01:28:15,550 --> 01:28:18,940 og þá ./argv0, Enter. 1758 01:28:18,940 --> 01:28:20,300 Og það segir halló heimur. 1759 01:28:20,300 --> 01:28:21,260 Nú, hvers vegna er það? 1760 01:28:21,260 --> 01:28:24,730 >> Jæja, það kemur í ljós hvenær þú keyra forrit á the stjórn lína, 1761 01:28:24,730 --> 01:28:29,570 þú ert að fylla í það sem við munum almennt kalla rifrildi vektor. 1762 01:28:29,570 --> 01:28:33,100 Með öðrum orðum, sjálfkrafa tölva, the stýrikerfi, 1763 01:28:33,100 --> 01:28:38,340 er að fara að afhenda til program sjálft listi af öllum orðunum 1764 01:28:38,340 --> 01:28:40,850 að mönnum slegið á hvetja, ef þú 1765 01:28:40,850 --> 01:28:43,790 forritari langar til að gera eitthvað við þær upplýsingar. 1766 01:28:43,790 --> 01:28:48,540 Og í þessu tilfelli, eina orðið Ég hef slegið á hvetja er ./argv0. 1767 01:28:48,540 --> 01:28:55,420 >> Og svo fjöldi viðfanga sem er samþykkt að áætlun mín er bara einn. 1768 01:28:55,420 --> 01:28:58,880 Með öðrum orðum, þau rök telja, annars þekkt sem argc 1769 01:28:58,880 --> 01:29:00,970 hér sem heiltala, er bara einn. 1770 01:29:00,970 --> 01:29:03,000 Einn, auðvitað, ekki jafn tveir. 1771 01:29:03,000 --> 01:29:05,980 Og svo er þetta það sem prentar, halló heiminn. 1772 01:29:05,980 --> 01:29:08,170 >> En láta mig taka þetta einhversstaðar. 1773 01:29:08,170 --> 01:29:09,930 Leyfðu mér að segja, argv0. 1774 01:29:09,930 --> 01:29:12,740 Og þá hvernig um Maria? 1775 01:29:12,740 --> 01:29:14,990 Og þá Enter. 1776 01:29:14,990 --> 01:29:18,020 >> Og taka eftir hvað dularfullur gerist hér. 1777 01:29:18,020 --> 01:29:22,640 Nú, í stað þess að halló heimur, ég hef breytt hegðun þessarar áætlunar 1778 01:29:22,640 --> 01:29:26,310 með því að taka inntak ekki frá Ná band eða einhver önnur virka, 1779 01:29:26,310 --> 01:29:30,570 en frá virðist, minni stjórn sjálft, það sem ég slóst upphaflega í. 1780 01:29:30,570 --> 01:29:35,720 Og ég get spilað þennan leik aftur með að breyta því að Stelios, til dæmis. 1781 01:29:35,720 --> 01:29:38,400 >> Og nú sé ég annað nafn enn. 1782 01:29:38,400 --> 01:29:40,540 Og hér, ég gæti sagt Andi. 1783 01:29:40,540 --> 01:29:42,137 Og ég gæti sagt Zamyla. 1784 01:29:42,137 --> 01:29:45,220 Og við getum spilað þennan leik allan daginn, bara tengja í mismunandi gildum, 1785 01:29:45,220 --> 01:29:49,550 svo lengi sem ég veita nákvæmlega tvö orð við áminningu 1786 01:29:49,550 --> 01:29:52,260 þannig að argc, rök mín telja, er 2. 1787 01:29:52,260 --> 01:29:57,240 >> Get ég séð það nafn tappi inn printf, fyrir þessu ástandi hér? 1788 01:29:57,240 --> 01:30:00,550 Þannig að við virðast hafa nú svipmikill getu 1789 01:30:00,550 --> 01:30:04,410 að taka inntak frá öðru kerfi, frá svokölluðum stjórn lína, 1790 01:30:04,410 --> 01:30:07,000 frekar en að þurfa að bíða þar sem notandinn keyrir forritið, 1791 01:30:07,000 --> 01:30:10,220 og þá hvetja hann eða hana nota eitthvað eins og fá band. 1792 01:30:10,220 --> 01:30:11,230 >> Svo er það þetta? 1793 01:30:11,230 --> 01:30:15,010 Argc, aftur, er bara heiltala, fjöldi words-- arguments-- 1794 01:30:15,010 --> 01:30:18,540 að notandinn veitt á hvetja, á flugstöðinni gluggann, 1795 01:30:18,540 --> 01:30:20,110 þar á meðal nafn forritsins. 1796 01:30:20,110 --> 01:30:23,340 Svo ./argv0 okkar er, í raun, forritsins nafn, 1797 01:30:23,340 --> 01:30:24,520 eða hvernig ég hlaupa the program. 1798 01:30:24,520 --> 01:30:25,810 >> Að telja eins orði. 1799 01:30:25,810 --> 01:30:27,080 Svo argc væri 1. 1800 01:30:27,080 --> 01:30:29,750 En þegar ég skrifa Stelios, eða Andi, eða Zamyla, eða Maria, 1801 01:30:29,750 --> 01:30:31,660 sem þýðir að rök telja er tveir. 1802 01:30:31,660 --> 01:30:33,910 Og svo nú er það tvö orð liðin í. 1803 01:30:33,910 --> 01:30:36,070 >> Og takið eftir, getum við haldið áfram þessa rökfræði. 1804 01:30:36,070 --> 01:30:39,050 Ef ég segi reyndar eitthvað eins Zamyla Chan, 1805 01:30:39,050 --> 01:30:42,200 fullt nafn, þannig liggur þrjú rök samtals, 1806 01:30:42,200 --> 01:30:47,410 nú segir hún sjálfgefið aftur, vegna þess, að sjálfsögðu, 3 ekki jafn 2. 1807 01:30:47,410 --> 01:30:54,080 >> Og svo á þennan hátt, ég hef aðgangur um argv þetta nýja rifrildi 1808 01:30:54,080 --> 01:30:56,080 sem við gátum tæknilega kalla eitthvað sem við viljum. 1809 01:30:56,080 --> 01:30:58,940 En með því að venju, það er argv og argc, í sömu röð. 1810 01:30:58,940 --> 01:31:04,470 Argv, rifrildi vektor, er góður af samheiti fyrir forritun 1811 01:31:04,470 --> 01:31:07,140 lögun í C kallast fylki. 1812 01:31:07,140 --> 01:31:14,410 >> An array er listi af svipuðum gildum aftur, til baka, til baka, til baka. 1813 01:31:14,410 --> 01:31:17,810 Með öðrum orðum, ef einn er réttur hér í RAM, næsta einn er rétt við hliðina á henni, 1814 01:31:17,810 --> 01:31:18,800 og rétt við hliðina á henni. 1815 01:31:18,800 --> 01:31:20,101 Þeir eru ekki út um allt. 1816 01:31:20,101 --> 01:31:23,100 Og það síðar- nefnda, þar sem hlutirnir eru út um allt í minni, 1817 01:31:23,100 --> 01:31:25,082 geta raunverulega vera a öflugur lögun. 1818 01:31:25,082 --> 01:31:28,040 En við munum koma aftur til að þegar við tala um áhugamaður gögn uppbygging. 1819 01:31:28,040 --> 01:31:32,260 Fyrir nú, fylki er bara klumpur af samliggjandi minni, 1820 01:31:32,260 --> 01:31:36,520 hver af sem þættir eru aftur, til baka, til baka, til baka, 1821 01:31:36,520 --> 01:31:38,050 og almennt sömu gerð. 1822 01:31:38,050 --> 01:31:42,630 >> Svo ef þú hugsar um, frá stund síðan, hvað er band? 1823 01:31:42,630 --> 01:31:50,460 Jæja, a band, eins og Zamyla, Z-A-M-Y-L-A, er, tæknilega, 1824 01:31:50,460 --> 01:31:51,400 bara array. 1825 01:31:51,400 --> 01:31:53,700 Það er fylki af stöfum. 1826 01:31:53,700 --> 01:31:59,250 >> Og svo ef við drögum þetta, þar sem ég gerði áðan, eins og klumpur af minni, 1827 01:31:59,250 --> 01:32:04,510 það kemur í ljós að hver af þessum stafir tekur upp bæti. 1828 01:32:04,510 --> 01:32:07,630 Og þá er það sem sérstakt Sentinel eðli, sviga 0, 1829 01:32:07,630 --> 01:32:12,360 eða öllum átta 0 bitar, sem demarcates enda strengsins. 1830 01:32:12,360 --> 01:32:15,090 Svo a band, snýr það út, vitna unquote band, 1831 01:32:15,090 --> 01:32:20,580 er bara fylki af chara-- bleikju vera raunveruleg gögn tegund. 1832 01:32:20,580 --> 01:32:24,560 >> Og nú argv, meanwhile-- við skulum fara aftur til the program. 1833 01:32:24,560 --> 01:32:29,582 Argv, jafnvel þó að við sjáum orðið band hér, er ekki band sjálft. 1834 01:32:29,582 --> 01:32:33,640 Argv, rök vektor, er fylki af strengjum. 1835 01:32:33,640 --> 01:32:37,620 >> Svo bara eins og þú getur að hafa fjölda stafi, getur þú meiri, 1836 01:32:37,620 --> 01:32:46,279 An array af strings-- svo, til dæmis, þegar ég slóst í smá stund síðan ./argv0 1837 01:32:46,279 --> 01:33:00,150 argv0, pláss Z-A-M-Y-L-A, I hélt því fram að argv átti tvo strengi í it-- ./argv0, 1838 01:33:00,150 --> 01:33:03,185 og Z-A-M-Y-L-A. í öðrum orðum, argc var 2. 1839 01:33:03,185 --> 01:33:03,980 Afhverju er það? 1840 01:33:03,980 --> 01:33:08,370 >> Jæja, í raun, hvað er að gerast á er að hver þessara strengi 1841 01:33:08,370 --> 01:33:13,990 er, að sjálfsögðu, fylki af stöfum eins og áður, hver af hvers stafir 1842 01:33:13,990 --> 01:33:15,670 tekur upp eitt bæti. 1843 01:33:15,670 --> 01:33:19,720 Og ekki rugla ekki raunverulegt 0 í nafni forritsins með 0, 1844 01:33:19,720 --> 01:33:22,040 sem þýðir allar 80 bita. 1845 01:33:22,040 --> 01:33:27,140 Og Zamyla, á meðan er enn Einnig fjölbreytta stafi. 1846 01:33:27,140 --> 01:33:31,450 >> Svo í lok dagsins, það er í raun lítur út eins og þetta undir hetta. 1847 01:33:31,450 --> 01:33:38,800 En argv, eðli þess hvernig helstu verk, gerir mig að vefja þetta allt 1848 01:33:38,800 --> 01:33:44,810 upp í, ef þú vilt, stærri array að ef við rúmlega einfalda 1849 01:33:44,810 --> 01:33:48,180 hvað myndin lítur út eins og ekki alveg draga það að skala upp þar, 1850 01:33:48,180 --> 01:33:56,720 þetta array er aðeins af stærð 2, fyrsta þáttur um sig inniheldur streng, 1851 01:33:56,720 --> 01:33:59,230 seinni þáttur sem inniheldur strenginn. 1852 01:33:59,230 --> 01:34:01,687 Og, aftur á móti, ef þú konar stækka á hverju 1853 01:34:01,687 --> 01:34:03,770 þessara strengi, hvað þú sjá undir hetta 1854 01:34:03,770 --> 01:34:07,190 er að hver strengur er bara An array af stöfum. 1855 01:34:07,190 --> 01:34:11,680 >> Nú, rétt eins og með strengi, við gátum til að fá aðgang 1856 01:34:11,680 --> 01:34:15,260 í i-ta staf í streng að nota þessi hornklofi tákn. 1857 01:34:15,260 --> 01:34:17,320 Á sama hátt, með fylki í Almennt getum við 1858 01:34:17,320 --> 01:34:22,700 nota veldi krappi tákn til að fá á hvaða fjölda strengja í fylki? 1859 01:34:22,700 --> 01:34:25,100 Til dæmis, láttu mig fara á undan og gera þetta. 1860 01:34:25,100 --> 01:34:32,420 >> Leyfðu mér að fara á undan og búa til argv1.c, sem er svolítið öðruvísi í þetta sinn. 1861 01:34:32,420 --> 01:34:35,635 Í stað þess að stöðva fyrir argc2, Ég ætla að í staðinn að gera þetta. 1862 01:34:35,635 --> 01:34:41,270 Fyrir INT ég fæ 0, I er minna en argc, ég plús plús, 1863 01:34:41,270 --> 01:34:47,920 og síðan prentað út inni af þessu, prósent s, ný lína, og þá 1864 01:34:47,920 --> 01:34:50,740 argv krappi i. 1865 01:34:50,740 --> 01:34:55,220 >> Svo í öðrum orðum, ég er ekki að takast á við einstakar persónur í augnablikinu. 1866 01:34:55,220 --> 01:35:00,190 Argv, eins og fólst í því að þessir tóm veldi axlabönd til hægri nafn argv, 1867 01:35:00,190 --> 01:35:03,320 þýðir argv er fylki af strengjum. 1868 01:35:03,320 --> 01:35:04,870 Og argc er bara int. 1869 01:35:04,870 --> 01:35:08,800 >> Þessi lína hér, 6, er segja setti ég jafnir til 0. 1870 01:35:08,800 --> 01:35:11,980 Telja alla leið upp til, þó ekki, argc. 1871 01:35:11,980 --> 01:35:14,010 Og þá á hverri ítrun, prenta út streng. 1872 01:35:14,010 --> 01:35:14,800 Hvað band? 1873 01:35:14,800 --> 01:35:17,270 >> I-ta band í argv. 1874 01:35:17,270 --> 01:35:19,530 Svo en áður en ég var með veldi krappi 1875 01:35:19,530 --> 01:35:22,180 ritháttur að fá á ith persóna í streng, nú 1876 01:35:22,180 --> 01:35:27,240 Ég er að nota hornklofi tákn að fá á ith band í fylki. 1877 01:35:27,240 --> 01:35:30,310 Svo það er góður af einu lagi hér að framan, eðli. 1878 01:35:30,310 --> 01:35:35,390 >> Og svo er það sniðugt um þetta program nú, ef ég safna saman argv1, 1879 01:35:35,390 --> 01:35:42,067 og þá gera ./argv1, og þá tegund í eitthvað eins foo bar Baz, 1880 01:35:42,067 --> 01:35:45,400 sem eru þrír sjálfgefnu orð sem a Tölvunarfræðingur nær fyrir hvaða tíma 1881 01:35:45,400 --> 01:35:51,010 hann eða hún þarf nokkrar placeholder orð, og ýta á Enter, hver af þeim orðum, 1882 01:35:51,010 --> 01:35:54,980 þar á meðal nafn forritsins sem er í argv við fyrstu staðsetningunni, 1883 01:35:54,980 --> 01:35:58,320 endar að vera prentuð einn í einu. 1884 01:35:58,320 --> 01:36:05,290 Og ef ég breyti þessu, og ég segi eitthvað eins argv1 Zamyla Chan, 1885 01:36:05,290 --> 01:36:08,800 fáum við öll þrjú af þeim orð, sem er argv0, 1886 01:36:08,800 --> 01:36:14,400 argv1, argv2, vegna þess að í þessu Málið argc, telja, er 3. 1887 01:36:14,400 --> 01:36:20,020 >> En hvað er sniðugt er ef þú skilur sem argv er bara fylki af strengjum, 1888 01:36:20,020 --> 01:36:24,910 og þú skilja að strengur er fylki af stöfum, 1889 01:36:24,910 --> 01:36:29,470 getum við í raun eins konar nota þetta hornklofi auðkennisstillingar mörgum sinnum 1890 01:36:29,470 --> 01:36:33,320 að velja band, og þá velja eðli í band, 1891 01:36:33,320 --> 01:36:35,730 köfun í dýpra sem hér segir. 1892 01:36:35,730 --> 01:36:40,100 Í þessu dæmi, láta mig fara á undan og kalla þetta argv2.c. 1893 01:36:40,100 --> 01:36:43,920 1894 01:36:43,920 --> 01:36:50,180 Og í þessu dæmi, láta mig fara á undan og gera following-- fyrir int i fá 0, 1895 01:36:50,180 --> 01:36:53,286 Ég er minna en argc, ég plús plús, bara eins og áður. 1896 01:36:53,286 --> 01:36:55,910 Svo í öðrum words-- og nú þetta er að fá flókið nóg. 1897 01:36:55,910 --> 01:36:59,940 Þá ætla ég að segja kunnugt um strengi í argv, 1898 01:36:59,940 --> 01:37:01,294 sem athugasemd við mig. 1899 01:37:01,294 --> 01:37:03,960 Og þá ætla ég að hafa hreiður fyrir lykkju, sem þér sennilega 1900 01:37:03,960 --> 01:37:06,290 hafa gert, eða talið gera, á grunni, þar sem 1901 01:37:06,290 --> 01:37:08,600 Ég ætla að segja int-- ég er ekki að fara að nota i aftur, 1902 01:37:08,600 --> 01:37:12,590 vegna þess að ég vil ekki að skuggi, eða konar skrifa yfir núverandi i. 1903 01:37:12,590 --> 01:37:15,780 >> Ég ætla að, í staðinn, segja j, vegna þess að það er fara mín að breyta eftir i, 1904 01:37:15,780 --> 01:37:18,590 þegar ég er bara að reyna að telja einfaldar tölur. 1905 01:37:18,590 --> 01:37:28,850 Fyrir J fær 0-- og einnig, n, er að fara að fá Stern lengd argv krappi i, 1906 01:37:28,850 --> 01:37:36,030 svo lengi sem j er minna en m, J plús plús, gera eftirfarandi. 1907 01:37:36,030 --> 01:37:37,500 Og hér er áhugaverður hluti. 1908 01:37:37,500 --> 01:37:46,330 >> Prenta út staf og nýja línu, tengja í argv krappi i, krappi j. 1909 01:37:46,330 --> 01:37:47,940 OK, svo látið mig bæta nokkrum athugasemdum hér. 1910 01:37:47,940 --> 01:37:54,820 Iterate yfir stafi í núverandi band, 1911 01:37:54,820 --> 01:38:02,290 prenta J-ta persóna í i-ta streng. 1912 01:38:02,290 --> 01:38:04,630 Svo nú skulum íhuga hvað þessar athugasemdir meina. 1913 01:38:04,630 --> 01:38:06,750 >> Iterate yfir strengi í argv-- hversu margir 1914 01:38:06,750 --> 01:38:09,300 strengir eru í argv, sem er fylki? 1915 01:38:09,300 --> 01:38:13,420 Argc margir, þannig að ég ætla að iterating frá ég jafn 0 upp í argc. 1916 01:38:13,420 --> 01:38:20,020 Á sama tíma, hversu margir stafir eru í i-ta band í argv? 1917 01:38:20,020 --> 01:38:22,880 >> Jæja, til að fá það svar, Ég kalla bara band lengd 1918 01:38:22,880 --> 01:38:26,810 á núverandi band I umönnun um, sem er argv krappi i. 1919 01:38:26,810 --> 01:38:30,090 Og ég ætla að geyma tímabundið að gildi í n, bara vegna flýtiminni, 1920 01:38:30,090 --> 01:38:31,590 að muna það fyrir skilvirkni. 1921 01:38:31,590 --> 01:38:36,330 Og þá er ég að fara að frumstilla j 0, halda áfram svo lengi sem j er minni en n, 1922 01:38:36,330 --> 01:38:38,430 og á hverri endurtekning vöxtur j. 1923 01:38:38,430 --> 01:38:41,030 >> Og þá hér, fyrir athugasemd mína á línu 12, 1924 01:38:41,030 --> 01:38:43,390 prenta út staf, fylgt eftir með nýja línu, 1925 01:38:43,390 --> 01:38:48,140 sérstaklega argv krappi Ég gefur mér i-ta streng 1926 01:38:48,140 --> 01:38:51,690 í argv-- Svo fyrsta orði, Annað orð, þriðja orðið, hvað sem er. 1927 01:38:51,690 --> 01:38:57,370 Og þá j kafar dýpra, og fær mér var J-ta eðli þess orðs. 1928 01:38:57,370 --> 01:39:02,200 Og svo, í raun, þú getur skemmtun argv eins og a multi-víddar, 1929 01:39:02,200 --> 01:39:06,050 sem tvívíð, array, þar hvert orð konar útlit 1930 01:39:06,050 --> 01:39:08,580 svona í hugann er auga, og hvert eðli 1931 01:39:08,580 --> 01:39:10,930 er eins konar samsett í dálki, ef það hjálpar. 1932 01:39:10,930 --> 01:39:13,260 >> Í raun og veru, þegar við stríða þetta sundur í framtíðinni vikur, 1933 01:39:13,260 --> 01:39:15,580 það er að fara til vera a lítill flóknari en það. 1934 01:39:15,580 --> 01:39:17,800 En þú getur raunverulega hugsa um það, að nú, 1935 01:39:17,800 --> 01:39:22,110 eins og bara þetta tvívíð array, þar sem ein stigi það 1936 01:39:22,110 --> 01:39:23,260 er öllum strengi. 1937 01:39:23,260 --> 01:39:26,760 Og svo ef þú kafa í dýpri, þér er hægt að fá á einstökum persónum 1938 01:39:26,760 --> 01:39:29,600 í henni með því að nota þessa tákn hér. 1939 01:39:29,600 --> 01:39:31,620 >> Svo er það hrein áhrif? 1940 01:39:31,620 --> 01:39:34,970 Leyfðu mér að fara á undan og gera argv2-- fjári það. 1941 01:39:34,970 --> 01:39:36,210 Ég gerði mistök hér. 1942 01:39:36,210 --> 01:39:40,160 Óbeint lýsa því bókasafn virka Stirling. 1943 01:39:40,160 --> 01:39:42,190 Svo allt þetta skiptið, það er kannski við 1944 01:39:42,190 --> 01:39:45,130 sem við erum að svoleiðis klára nákvæmlega þar sem við byrjuðum. 1945 01:39:45,130 --> 01:39:48,160 >> Ég ruglaður upp, óbeint lýsa bókasafn virka Stirling. 1946 01:39:48,160 --> 01:39:48,987 OK, bíddu í eina mínútu. 1947 01:39:48,987 --> 01:39:51,070 Ég man það, sérstaklega þar sem það er hérna. 1948 01:39:51,070 --> 01:39:54,490 Ég þarf að fela string.h í þessi útgáfa af forritinu. 1949 01:39:54,490 --> 01:40:00,050 >> Leyfðu mér að fara á undan og eru string.h, vista það, fara á undan 1950 01:40:00,050 --> 01:40:04,460 og laun argv2. 1951 01:40:04,460 --> 01:40:08,390 Og nú, hér við fara, gera argv2, Enter. 1952 01:40:08,390 --> 01:40:10,590 Og þó það er lítið dulinn við fyrstu sýn, 1953 01:40:10,590 --> 01:40:15,690 taka eftir því, örugglega, hvað er prentuð er punktur argv2. 1954 01:40:15,690 --> 01:40:19,970 >> En ef ég gerð nokkur orð eftir hvetja, eins argv2 Zamyla Chan, 1955 01:40:19,970 --> 01:40:22,560 Sláðu einnig lítið dulinn við fyrstu sýn. 1956 01:40:22,560 --> 01:40:30,540 En ef við fletta aftur upp, ./argv2 Z-A-M-Y-L-A C-H-A-N. 1957 01:40:30,540 --> 01:40:32,190 Þannig að við höfum ítrekað yfir hvert orð. 1958 01:40:32,190 --> 01:40:37,770 Og, aftur á móti, höfum við ítrekað yfir Sérhver persóna innan orðs. 1959 01:40:37,770 --> 01:40:40,040 >> Nú, eftir allt þetta, átta sig á að það er 1960 01:40:40,040 --> 01:40:43,120 eitt annað smáatriði sem við höfum verið góður hunsa þetta allan tímann. 1961 01:40:43,120 --> 01:40:46,180 Við strítt bara í sundur hvað inntak Main getur verið? 1962 01:40:46,180 --> 01:40:47,780 Hvað um framleiðslu MAIN er? 1963 01:40:47,780 --> 01:40:50,540 >> Allt þetta sinn höfum við verið bara að afrita og líma 1964 01:40:50,540 --> 01:40:53,870 orðið INT framan helstu, þó þú getur séð á netinu, 1965 01:40:53,870 --> 01:40:58,340 stundum ranglega í eldri útgáfum C og vistþýðendur, sem þeir segja ógilt, 1966 01:40:58,340 --> 01:40:59,410 eða ekkert yfirleitt. 1967 01:40:59,410 --> 01:41:01,580 En reyndar, fyrir útgáfu C sem við erum að nota, 1968 01:41:01,580 --> 01:41:06,180 C 11, eða 2011, grein fyrir að það ætti að vera Int. 1969 01:41:06,180 --> 01:41:09,300 Og það ætti að vera annaðhvort ógilt eða argc og argv hér. 1970 01:41:09,300 --> 01:41:10,790 >> En hvers vegna int helstu? 1971 01:41:10,790 --> 01:41:12,480 Hvað er það aftur í raun? 1972 01:41:12,480 --> 01:41:16,280 Jæja, það kemur í ljós allan þennan tíma, hvenær þú hefur skrifað forrit Main 1973 01:41:16,280 --> 01:41:18,440 er alltaf aftur eitthvað. 1974 01:41:18,440 --> 01:41:19,960 En það er verið að gera það í leyni. 1975 01:41:19,960 --> 01:41:23,350 >> Að eitthvað er int, eins línu 5 til kynna. 1976 01:41:23,350 --> 01:41:24,225 En hvað INT? 1977 01:41:24,225 --> 01:41:26,100 Jæja, það er þetta venju í forritun, 1978 01:41:26,100 --> 01:41:29,790 þar ef ekkert hefur farið úrskeiðis og allt er vel, 1979 01:41:29,790 --> 01:41:34,250 áætlanir og aðgerðir almennt return-- nokkuð counterintuitively-- 1980 01:41:34,250 --> 01:41:35,230 0. 1981 01:41:35,230 --> 01:41:38,070 0 yfirleitt táknar allt er vel. 1982 01:41:38,070 --> 01:41:40,610 Svo jafnvel þótt þú hugsa um það sem rangar í mörgum samhengi, 1983 01:41:40,610 --> 01:41:42,930 það reyndar yfirleitt þýðir gott 1984 01:41:42,930 --> 01:41:49,560 >> Á sama tíma, ef forrit skilar 1, eða neikvæð 1, eða 5, eða neikvætt 42, 1985 01:41:49,560 --> 01:41:52,941 eða allir non-0 gildi, sem almennt táknar 1986 01:41:52,941 --> 01:41:54,190 að eitthvað hefur farið úrskeiðis. 1987 01:41:54,190 --> 01:41:56,700 Í raun, á eigin Mac eða PC, þú gætir hafa í raun séð 1988 01:41:56,700 --> 01:42:01,050 villuboð, þar sem það segir eitthvað eða annað, villa 1989 01:42:01,050 --> 01:42:04,940 númer neikvæð 42, eða villa kóða 23, eða eitthvað svoleiðis. 1990 01:42:04,940 --> 01:42:08,980 Þessi tala er yfirleitt bara vísbending til forritari, eða fyrirtæki 1991 01:42:08,980 --> 01:42:11,174 sem gerði hugbúnað, hvað fór úrskeiðis og hvers vegna, 1992 01:42:11,174 --> 01:42:13,590 þannig að þeir geta flett í gegnum skjöl þeirra eða númer, 1993 01:42:13,590 --> 01:42:15,465 og reikna út hvað villa þýðir í raun. 1994 01:42:15,465 --> 01:42:18,400 Það er almennt ekki gagnlegt fyrir okkur endanotenda. 1995 01:42:18,400 --> 01:42:20,550 >> En þegar helstu skilar 0, allt er vel. 1996 01:42:20,550 --> 01:42:23,770 Og ef þú tilgreinir ekki hvað helstu ætti aftur, 1997 01:42:23,770 --> 01:42:26,950 það verður bara sjálfkrafa aftur 0 fyrir þig. 1998 01:42:26,950 --> 01:42:30,870 En aftur eitthvað annað er raunverulega gagnlegur. 1999 01:42:30,870 --> 01:42:34,660 >> Í þessu síðasta áætlun, láttu mig fara á undan og kalla þetta exit.c, 2000 01:42:34,660 --> 01:42:38,630 og kynna síðasta dag er efni, þekktur sem villukóða. 2001 01:42:38,630 --> 01:42:42,930 Leyfðu mér að fara á undan og eru okkar þekki skrár upp efst, gera int helstu. 2002 01:42:42,930 --> 01:42:49,500 Og að þessu sinni, við skulum gera int argc, band argv, og með sviga mínum 2003 01:42:49,500 --> 01:42:50,836 að gefa til kynna að það er í fylkinu. 2004 01:42:50,836 --> 01:42:52,460 Og þá láta mig gera bara geðheilsu stöðva. 2005 01:42:52,460 --> 01:42:56,640 Í þetta sinn, ef argc ekki jafnir 2, þá veistu hvað? 2006 01:42:56,640 --> 01:42:57,520 Gleymdu því. 2007 01:42:57,520 --> 01:43:03,170 Ég er að fara að segja það, hey, notandi, þú ert sem vantar stjórn lína rifrildi 2008 01:43:03,170 --> 01:43:04,210 sviga n. 2009 01:43:04,210 --> 01:43:05,230 >> Og þá er það það. 2010 01:43:05,230 --> 01:43:06,130 Ég vil hætta. 2011 01:43:06,130 --> 01:43:11,030 Ég er að fara að preemptively, og snemma í raun, aftur 2012 01:43:11,030 --> 01:43:12,810 eitthvað annað en númer 1. 2013 01:43:12,810 --> 01:43:15,360 The fara að verðmæti fyrir fyrsta villa sem getur gerst er 1. 2014 01:43:15,360 --> 01:43:17,860 Ef þú ert einhver önnur rangra ástand sem gæti átt sér stað, 2015 01:43:17,860 --> 01:43:21,390 þú gætir sagt aftur 2 eða skila 3, eða kannski jafnvel neikvæð 1 eða neikvæð 2. 2016 01:43:21,390 --> 01:43:23,750 >> Þetta eru bara hætta kóðar sem eru, almennt, 2017 01:43:23,750 --> 01:43:27,770 aðeins gagnlegt að forritari, eða fyrirtæki sem er skipum hugbúnað. 2018 01:43:27,770 --> 01:43:30,500 En sú staðreynd að það er ekki 0 er það sem er mikilvægt. 2019 01:43:30,500 --> 01:43:34,310 Þannig að ef í þessari áætlun, ég vil tryggja að þessi áætlun einungis 2020 01:43:34,310 --> 01:43:38,190 virkar ef notandi gefur mér með rifrildi telja um tvo, 2021 01:43:38,190 --> 01:43:42,880 nafn af the program, og sum önnur orð, get ég framfylgja eins mikið eins og hér segir, 2022 01:43:42,880 --> 01:43:46,110 æpa á notanda með printf orðatiltæki, vantar stjórn lína rifrildi, 2023 01:43:46,110 --> 01:43:46,970 skila 1. 2024 01:43:46,970 --> 01:43:49,940 Það verður bara strax hætta forritið. 2025 01:43:49,940 --> 01:43:55,840 >> Aðeins ef argc jafngildir 2 munum við fá niður hér, þar sem ég er að fara að segja, 2026 01:43:55,840 --> 01:44:00,410 halló prósent s, sviga n, argv1. 2027 01:44:00,410 --> 01:44:03,827 Með öðrum orðum, ég er ekki að fara eftir argv 0, 2028 01:44:03,827 --> 01:44:05,410 sem er bara nafn af the program. 2029 01:44:05,410 --> 01:44:09,450 Ég vil að prenta út halló, komma, annað orð sem mönnum slegið. 2030 01:44:09,450 --> 01:44:12,580 Og í þessu tilfelli á lína 13, allt er vel. 2031 01:44:12,580 --> 01:44:15,920 >> Ég veit að argc er 2 rökrétt frá þessari áætlun. 2032 01:44:15,920 --> 01:44:17,770 Ég ætla að fara á undan og aftur 0. 2033 01:44:17,770 --> 01:44:21,230 Sem innskot, hafa í huga að þetta er satt í grunni eins og heilbrigður. 2034 01:44:21,230 --> 01:44:24,760 >> Rökrétt, gæti ég gert þetta og þjappa þessar línur 2035 01:44:24,760 --> 01:44:27,020 af kóða í þessum annað ákvæði hér. 2036 01:44:27,020 --> 01:44:29,420 En það er tegund af óþarflega indenting númerið mitt. 2037 01:44:29,420 --> 01:44:31,800 Og ég vil gera frábær ljóst að sama hvað, 2038 01:44:31,800 --> 01:44:34,670 sjálfgefið, halló eitthvað mun fá prentað, 2039 01:44:34,670 --> 01:44:36,050 svo lengi sem notandinn vinnur. 2040 01:44:36,050 --> 01:44:39,360 >> Svo það er mjög algengt að nota ástand, bara ef, 2041 01:44:39,360 --> 01:44:41,870 að veiða nokkrar röng ástand, og þá hætta. 2042 01:44:41,870 --> 01:44:45,690 Og þá, svo lengi allt er vel, ekki hafa óákveðinn greinir í ensku annað, 2043 01:44:45,690 --> 01:44:48,060 en bara að hafa kóðann utan að ef, því það er 2044 01:44:48,060 --> 01:44:51,060 jafngildi í þessu Einkum tilfelli, rökrétt. 2045 01:44:51,060 --> 01:44:54,480 Þannig að ég ætla að skila 0, bara að sérstaklega signify allt er vel. 2046 01:44:54,480 --> 01:44:58,480 >> Ef ég sleppt aftur 0, myndi það vera sjálfkrafa ráð fyrir mig. 2047 01:44:58,480 --> 01:45:00,890 En núna þegar ég er að fara aftur einn í að minnsta kosti þessu tilfelli, 2048 01:45:00,890 --> 01:45:04,940 Ég ætla að, gott mál og skýrleika, aftur 0 í þessu tilfelli. 2049 01:45:04,940 --> 01:45:09,690 Svo nú láta mig fara á undan og gera hætta, sem er fullkomin Segue bara fara. 2050 01:45:09,690 --> 01:45:14,401 >> En gera hætta, og láta mig fara á undan og gera ./exit, Enter. 2051 01:45:14,401 --> 01:45:16,900 Og the program öskraði á mig, vantar stjórn lína rifrildi. 2052 01:45:16,900 --> 01:45:18,120 OK, láttu mig vinna. 2053 01:45:18,120 --> 01:45:23,810 >> Leyfðu mér staðinn gera ./exit, David, Enter. 2054 01:45:23,810 --> 01:45:25,190 Og nú segir hann, halló David. 2055 01:45:25,190 --> 01:45:27,300 Og þú myndir ekki venjulega sjá þetta. 2056 01:45:27,300 --> 01:45:30,650 >> En það kemur í ljós að það er sérstakan hátt í Linux til raunverulega sjá 2057 01:45:30,650 --> 01:45:34,470 með hvaða hætta póstnúmer forrit lauk. 2058 01:45:34,470 --> 01:45:37,184 Stundum á myndrænan Heimurinn eins og Mac OS eða Windows, 2059 01:45:37,184 --> 01:45:40,100 þú sérð bara þessar tölur þegar villuboð birtist á skjánum 2060 01:45:40,100 --> 01:45:41,940 og forritari sýnir þér að tala. 2061 01:45:41,940 --> 01:45:44,773 En ef við viljum sjá hvað villa Skilaboðin eru, getum við gert það here-- 2062 01:45:44,773 --> 01:45:48,100 svo ./exit, Enter, prenta vantar stjórn lína rifrildi. 2063 01:45:48,100 --> 01:45:54,590 >> Ef ég geri nú echo $ ?, sem er hlægilegur dulinn leita. 2064 01:45:54,590 --> 01:45:56,590 En $? 2065 01:45:56,590 --> 01:45:59,220 er töfrum incantation sem segir, hey, tölva, 2066 01:45:59,220 --> 01:46:01,900 segðu mér hvað fyrri Hætta númer áætlunarinnar var. 2067 01:46:01,900 --> 01:46:03,410 Og ég ýta á Enter. 2068 01:46:03,410 --> 01:46:07,520 Ég sé 1, vegna þess að það er það sem ég sagði meginhlutverki mína til að fara aftur. 2069 01:46:07,520 --> 01:46:12,310 >> Á sama tíma, ef ég geri ./exit Davíð, og ýta á Enter, ég, halló David. 2070 01:46:12,310 --> 01:46:16,800 Og ef ég nú echo $ ?, ég sé halló 0. 2071 01:46:16,800 --> 01:46:19,080 Og svo þetta mun í raun vera verðmætar upplýsingar 2072 01:46:19,080 --> 01:46:23,420 í samhengi við aflúsara, ekki svo mikið að þú, manna, myndi kæra. 2073 01:46:23,420 --> 01:46:26,060 En aflúsara og annað forrit við munum nota þessa önn 2074 01:46:26,060 --> 01:46:29,420 vilja oft líta á þessi númer, jafnvel þó að það er tegund af falinn í burtu 2075 01:46:29,420 --> 01:46:32,780 nema þú lítur á það, að ákvarða hvort forrit eða ekki 2076 01:46:32,780 --> 01:46:37,050 framkvæmd var rétt eða rangt. 2077 01:46:37,050 --> 01:46:40,450 >> Og svo að koma okkur til þetta, í lok dags. 2078 01:46:40,450 --> 01:46:43,917 Við byrjuðum í dag með því að horfa á kembiforrit, og síðan á námskeiðinu 2079 01:46:43,917 --> 01:46:46,750 sjálft, og þá fleiri áhugaverður, tæknilega undir hetta 2080 01:46:46,750 --> 01:46:49,490 á hvaða strengir eru, sem endast viku tókum bara sjálfsagðan hlut, 2081 01:46:49,490 --> 01:46:51,900 og vissulega tók þá sjálfsagðan hlut í grunni. 2082 01:46:51,900 --> 01:46:56,040 >> Við leit þá á hvernig við getum nálgast einstök stafir í streng, 2083 01:46:56,040 --> 01:47:00,310 og síðan aftur tók meiri líta á hlutina, að horfa á hvernig well-- 2084 01:47:00,310 --> 01:47:04,226 Ef við viljum fá á einstökum þættir í lista eins og uppbyggingu, 2085 01:47:04,226 --> 01:47:05,850 getum við ekki gert það með mörgum strengjum? 2086 01:47:05,850 --> 01:47:08,050 Og við getum með stjórn lína rifrildi. 2087 01:47:08,050 --> 01:47:12,800 En þessi mynd hér af bara kassa er sýnileg með þessum almenna hugmynd 2088 01:47:12,800 --> 01:47:14,451 af fjölda, eða lista, eða vektor. 2089 01:47:14,451 --> 01:47:16,450 Og eftir á samhengi, öll þessi orð 2090 01:47:16,450 --> 01:47:17,880 meina örlítið mismunandi hluti. 2091 01:47:17,880 --> 01:47:20,060 Svo í C, við erum bara að fara að tala um fylki. 2092 01:47:20,060 --> 01:47:23,840 Og fylki er klumpur af minni, hver þeirra sem er 2093 01:47:23,840 --> 01:47:27,720 þættir eru samliggjandi, aftur, til baka, til baka, til baka. 2094 01:47:27,720 --> 01:47:31,970 >> Og þessir þættir eru almennt, af sömu gögn gerð, eðli, 2095 01:47:31,970 --> 01:47:35,966 eðli, eðli, eðli eða band, band, band, band, eða int, 2096 01:47:35,966 --> 01:47:38,600 int, int, hvað sem það er við erum að reyna að geyma. 2097 01:47:38,600 --> 01:47:42,540 En í lok dagsins, þetta er hvað það lítur út eins og eðli. 2098 01:47:42,540 --> 01:47:44,530 Þú ert að taka þinn minni tölvunnar eða RAM. 2099 01:47:44,530 --> 01:47:48,590 Og þú ert útskorið það út í samur stór kassa, sem öll 2100 01:47:48,590 --> 01:47:50,920 eru aftur, til baka, til aftur, til baka á þennan hátt. 2101 01:47:50,920 --> 01:47:53,200 >> Og hvað er gott um þessi hugmynd, og sú staðreynd 2102 01:47:53,200 --> 01:47:58,580 að við getum tjáð gildi á þennan hátt með fyrsta mannvirkja gögn okkar 2103 01:47:58,580 --> 01:48:02,520 í bekknum, þýðir að við getum byrjað til að leysa vandamál með kóða 2104 01:48:02,520 --> 01:48:04,079 sem kom svo innsæi í viku 0. 2105 01:48:04,079 --> 01:48:05,870 Þú munt muna símann bók dæmi, þar sem 2106 01:48:05,870 --> 01:48:09,110 við notuðum deila og sigra, eða tvöfaldur leit reiknirit, 2107 01:48:09,110 --> 01:48:13,220 að sigta í gegnum heild fullt af nöfnum og númerum. 2108 01:48:13,220 --> 01:48:18,220 En við ráð fyrir, muna, að það símaskrá var þegar raðað, 2109 01:48:18,220 --> 01:48:21,630 að einhver annar hafði þegar mynstrağur out-- gefið lista yfir nöfn 2110 01:48:21,630 --> 01:48:24,430 og Numbers hvernig á að alphabetize þeim. 2111 01:48:24,430 --> 01:48:26,950 Og nú að í C við, of, hafa getu 2112 01:48:26,950 --> 01:48:30,290 að leggja það út, ekki líkamlega í símaskránni 2113 01:48:30,290 --> 01:48:34,220 en nánast í tölvu er minni, munum við vera fær í næstu viku 2114 01:48:34,220 --> 01:48:38,470 að kynna aftur this-- fyrsta gagna mannvirki okkar í gegnum array-- 2115 01:48:38,470 --> 01:48:43,530 en meira um vert, raunverulegur tölva vísindi reiknirit framkvæmd 2116 01:48:43,530 --> 01:48:47,720 í kóða, sem við getum geymt Gögn í mannvirki eins og þetta, 2117 01:48:47,720 --> 01:48:50,730 og þá byrja að vinna það, og að í raun að leysa vandamál með það, 2118 01:48:50,730 --> 01:48:53,570 og til að byggja ofan á það, að lokum, forrit í C, 2119 01:48:53,570 --> 01:48:56,730 í Python, í JavaScript, fyrirspurn gagnagrunna með SQL? 2120 01:48:56,730 --> 01:48:59,980 >> Og við munum sjá að allir þessir mismunandi hugmyndir interlock. 2121 01:48:59,980 --> 01:49:04,100 En nú, muna að Lénið sem við kynntum í dag 2122 01:49:04,100 --> 01:49:06,920 var þetta hlutur hér, og heimurinn dulmál. 2123 01:49:06,920 --> 01:49:11,200 Og meðal næstu vandamál sem þú sjálfur mun leysa er list dulmál, 2124 01:49:11,200 --> 01:49:13,630 spæna og de-spæna upplýsingar og ciphering 2125 01:49:13,630 --> 01:49:15,930 og deciphering texta, og miðað við að lokum 2126 01:49:15,930 --> 01:49:18,970 sem þú veist nú hvað er undir hetta 2127 01:49:18,970 --> 01:49:21,860 þannig að þegar þú sérð eða færð skilaboð eins og þetta, þú 2128 01:49:21,860 --> 01:49:24,060 sjálfur getur ráða hana. 2129 01:49:24,060 --> 01:49:26,740 Allt þetta, og meira næst. 2130 01:49:26,740 --> 01:49:29,890 2131 01:49:29,890 --> 01:49:30,790 >> [Vídeó spilun] 2132 01:49:30,790 --> 01:49:32,970 >> -Mover Kom bara. 2133 01:49:32,970 --> 01:49:35,146 Ég ætla að fara heimsókn háskólaprófessor hans. 2134 01:49:35,146 --> 01:49:37,611 Jebb. 2135 01:49:37,611 --> 01:49:40,080 Hi. 2136 01:49:40,080 --> 01:49:40,660 Það ert þú. 2137 01:49:40,660 --> 01:49:44,125 2138 01:49:44,125 --> 01:49:45,110 Bíddu! 2139 01:49:45,110 --> 01:49:45,610 David. 2140 01:49:45,610 --> 01:49:53,936 2141 01:49:53,936 --> 01:49:56,060 Ég er bara að reyna að reikna út hvað gerðist við þig. 2142 01:49:56,060 --> 01:49:58,130 Vinsamlegast eitthvað gæti hjálpað. 2143 01:49:58,130 --> 01:50:05,020 2144 01:50:05,020 --> 01:50:08,354 Þú varst háskóli hans herbergisfélagi, varstu ekki? 2145 01:50:08,354 --> 01:50:10,770 Þú varst þarna með honum þegar Hann lauk CS50 verkefnið? 2146 01:50:10,770 --> 01:50:13,770 2147 01:50:13,770 --> 01:50:15,765 >> [TÓNLIST] 2148 01:50:15,765 --> 01:50:32,110 2149 01:50:32,110 --> 01:50:33,150 >> -Það Var CS50. 2150 01:50:33,150 --> 01:50:42,690 2151 01:50:42,690 --> 01:50:44,770 >> Ég elska þennan stað. 2152 01:50:44,770 --> 01:50:45,854 >> -Eat Upp. 2153 01:50:45,854 --> 01:50:47,020 Við erum að fara út af fyrirtæki. 2154 01:50:47,020 --> 01:50:52,120 2155 01:50:52,120 --> 01:50:53,970 >> [END spilun]