1 00:00:00,000 --> 00:00:02,440 [Powered by Google Translate] [Vika 7] 2 00:00:02,440 --> 00:00:04,730 [David J. Malan - Harvard University] 3 00:00:04,730 --> 00:00:07,490 [Þetta er CS50. - CS50.TV] 4 00:00:07,490 --> 00:00:12,280 Allt í lagi. Velkominn aftur. Þetta er CS50, og þetta er upphaf viku 7. 5 00:00:12,280 --> 00:00:14,690 A par af litlum tilkynninga: 6 00:00:14,690 --> 00:00:18,150 Pset5 er nú í gangi eða fljótlega skal, 7 00:00:18,150 --> 00:00:21,590 og láta mig segja, alveg heiðarlega, þetta er yfirleitt að vera á meðal meira krefjandi 8 00:00:21,590 --> 00:00:24,460 setur vandamál námskeiðið, svo láta mig nefna þetta núna 9 00:00:24,460 --> 00:00:28,190 svo að í þessari viku meira en nokkru sinni fyrr að gera að bíða ekki þangað til, segjum, miðvikudagur nótt 10 00:00:28,190 --> 00:00:29,920 eða fimmtudagskvöld að kafa inn 11 00:00:29,920 --> 00:00:32,369 Þetta er örugglega áhugavert pset. Við teljum að það er gaman. 12 00:00:32,369 --> 00:00:36,110 Ef þú færð í raun það fullkomlega rétt og geta þá mótmælt svokallaða Big Board, 13 00:00:36,110 --> 00:00:39,830 þú munt hafa tækifæri til að passa wits með nokkrum starfsmanna Námskeiðið er 14 00:00:39,830 --> 00:00:41,620 og sumir af bekkjarfélögum þínum. 15 00:00:41,620 --> 00:00:44,670 Hvaða The Big Stjórnin er er þegar þú ert með stafa-afgreiðslumaður vinna þína, 16 00:00:44,670 --> 00:00:48,860 þú munt vera fær um að fara cs50.net eftir að keyra skipun, 17 00:00:48,860 --> 00:00:52,430 eingöngu kjósa í, og þá tíma og magn af vinnsluminni og fleira 18 00:00:52,430 --> 00:00:56,130 sem þú hefur notað í framkvæmd mun vera sýnd hér á heimasíðu námskeiðið er. 19 00:00:56,130 --> 00:00:59,740 Þú munt taka eftir því að í heild búnt af þessum fólkinu hér eru skráð sem starfsfólk 20 00:00:59,740 --> 00:01:04,220 síðan um helgina, starfsfólk hélt að það væri gaman að reyna að outdo hvert annað. 21 00:01:04,220 --> 00:01:07,390 Svo grein fyrir því að markmiðið hér er ekki verið að outdo starfsfólk. 22 00:01:07,390 --> 00:01:09,790 Jafnvel ég er bara hérna á númer 13. 23 00:01:09,790 --> 00:01:13,790 Eingöngu kjósa í, en það er óákveðinn greinir í ensku tækifæri til að sjá hversu lítið RAM 24 00:01:13,790 --> 00:01:16,790 og hversu fáir CPU sekúndur þú getur notað gagnvart-a-gagnvart sumum bekkjarfélögum þínum. 25 00:01:16,790 --> 00:01:20,540 >> Og ég ætla að viðurkenna að Kevin Michael Schmid, 26 00:01:20,540 --> 00:01:23,750 nú í númer 1 stöðu sem einn af TFS, 27 00:01:23,750 --> 00:01:28,120 þetta er framkvæmd sem við köllum ekki hægt 28 00:01:28,120 --> 00:01:32,700 í ljósi þess að hann er með næstum 0 RAM og næstum 0 sekúndur fyrir fermingu. 29 00:01:32,700 --> 00:01:35,670 Þannig að við munum sjá um Kevin offline. [Hlátur] 30 00:01:35,670 --> 00:01:40,950 Það eru ákveðin færni sem Kevin er að setja til að prófa hér. 31 00:01:40,950 --> 00:01:45,280 Eitt af því sem við héldum að við myndum gera er líka nú CS50x er vika í gangi, 32 00:01:45,280 --> 00:01:49,520 og þú krakkar eru eins mikill hluti af þessari tilraun eins og þessir nemendur eru. 33 00:01:49,520 --> 00:01:53,720 Við höfum beðið þá sem hluta af pset0 þeirra, sem var álíka að senda inn Scratch verkefni 34 00:01:53,720 --> 00:01:58,280 áhuga á þeim - leikur, gagnvirkt listaverk, hreyfimynd, eða eins og - 35 00:01:58,280 --> 00:02:03,700 a 1 - til 2-mínútna vídeó, ef þeir vilja, segja halló við umheiminn og hver þeir eru í raun. 36 00:02:03,700 --> 00:02:06,780 Ég hélt ég myndi deila með þér bara nokkra myndbönd sem hafa verið lögð svona langt 37 00:02:06,780 --> 00:02:10,759 því fyrir okkur á starfsfólki amk, virkilega það hefur verið spennandi 38 00:02:10,759 --> 00:02:14,220 og hvetjandi að sjá þessar fólkinu frá öllum heimshornum - löndum um allan heim - 39 00:02:14,220 --> 00:02:18,160 stilla í, af öllu, að vísindi tölvunámskeið á Netinu, 40 00:02:18,160 --> 00:02:20,410 hvort sem það er vegna þess að þeir vilja til að halda áfram eigin námi, 41 00:02:20,410 --> 00:02:22,300 þeir vilja til að taka störf sín í nýja átt, 42 00:02:22,300 --> 00:02:24,390 þeir vilja til að fylla í eyður í eigin vitund, 43 00:02:24,390 --> 00:02:27,190 Svo sumir af sömu ástæðum sem þið kannski hafa verið hér. 44 00:02:27,190 --> 00:02:31,090 >> Svo ég gefa þér eitt slíkt nemandi hér. Þú getur hækkað hljóðstyrk bara svolítið. 45 00:02:31,090 --> 00:02:35,520 Hér er einn af 1-mínútu skráningar nemenda okkar. 46 00:02:35,520 --> 00:02:40,380 Halló, heimur. Ég er nemandi í iðnaðarverkfræði hér í Malaga á Spáni. 47 00:02:40,380 --> 00:02:45,840 Ég er ánægð með þetta online auðvitað vegna þess að ég elska tölvunarfræði, ég virkilega, 48 00:02:45,840 --> 00:02:48,880 og ég þakka sannarlega að ég fá að skoða hann. 49 00:02:48,880 --> 00:02:51,940 Og sú staðreynd að ég get lært það sama öllum ykkur að gera 50 00:02:51,940 --> 00:02:57,040 en í stað þess að vera í Harvard ég í Malaga, Hversu hræðilegur er þessi? 51 00:02:57,040 --> 00:03:02,040 Jæja, ég Fernando, og þetta er CS50. Sjá ykkur. 52 00:03:02,040 --> 00:03:07,100 [Hlátur] Annað myndband við eins sérstaklega, þú munt komast að því að enska Þessi heiðursmaður er ekki svo sterk. 53 00:03:07,100 --> 00:03:11,520 Það lítur út eins og hann hafði það vél þýða, svo þýðingarnar sjálfar eru aðeins ófullkomin, 54 00:03:11,520 --> 00:03:15,790 en þetta var einn af uppáhalds okkar svona langt eins og heilbrigður. 55 00:03:25,080 --> 00:03:29,980 [♪ ♪] 56 00:03:29,980 --> 00:03:32,370 Halló, heimur. [Að tala á japönsku] 57 00:03:32,370 --> 00:03:39,830 [Ég verð að fagna í japönsku því enska mín er mjög óáreiðanlegar.] 58 00:03:39,830 --> 00:03:45,380 [Ég gef skilaboð til þín frá borginni Gifu, Japan.] 59 00:03:45,380 --> 00:03:49,820 [Ég get verið nemandi í fyrsta skipti í 20 ár, eins og sjá má.] 60 00:03:49,820 --> 00:03:54,640 [Ég er mjög þakklát Harvard University sem gaf mér þetta tækifæri og EDX.] 61 00:03:54,640 --> 00:04:01,510 [Golf er gítar og uppáhalds hlutur minn í gangi.] [Hlátur] 62 00:04:01,510 --> 00:04:05,750 [♪ ♪] 63 00:04:05,750 --> 00:04:10,790 [Af hverju heldur þú að ég var að reyna að sækja cs50x.] 64 00:04:10,790 --> 00:04:14,990 [Harvard University, það er þrá mín.] 65 00:04:14,990 --> 00:04:19,740 [Sérstaklega ef ég er fjarlæg nærvera bjó í Japan.] 66 00:04:19,740 --> 00:04:26,680 [Ég vildi reyna strax kunnugt um tilvist slíks EDX þegar.] 67 00:04:26,680 --> 00:04:32,500 [Finnst þér svo þú þarft ekki tengjast aldri læra I.] 68 00:04:32,500 --> 00:04:38,350 [Cs50 er þrá mín. Mitt nafn er Kazu, og þetta er cs50.] 69 00:04:38,350 --> 00:04:43,090 [♪ ♪] [lófaklapp og uppörvandi] 70 00:04:43,090 --> 00:04:49,220 Annar uppáhalds okkar var þessi uppgjöf hér frá einhverjum. 71 00:04:51,070 --> 00:04:55,380 [♪ ♪] [Malan] Google það ef þú ert ókunnur með þessu meme. 72 00:04:55,380 --> 00:05:01,480 >> Og svo loks, a par af öðrum sem fékk staða að kannski vinna yndislega verðlaun. 73 00:05:01,480 --> 00:05:06,820 [Nemendur] Aww! >> [Malan] Við verðum að hlusta. Þetta er stutt, svo hlusta náið. 74 00:05:08,580 --> 00:05:11,150 [Kvenkyns ræðumaður] Hvað er nafn þitt? >> Louie. 75 00:05:11,150 --> 00:05:16,120 [Kvenkyns ræðumaður] Hvað er þetta? >> [Hlær] CS50. [Hlátur] 76 00:05:16,120 --> 00:05:19,510 [Malan] Hann gerði tvö tekur þó. 77 00:05:19,510 --> 00:05:22,240 Hér förum við, síðasta. 78 00:05:23,030 --> 00:05:26,980 Mitt nafn er Louie, og þetta er CS50. 79 00:05:26,980 --> 00:05:30,250 [Hlátur] Þetta þá er CS50x. 80 00:05:30,250 --> 00:05:33,230 Þakka þér að allir þeir af þér á meðan eftirfarandi eftir heima 81 00:05:33,230 --> 00:05:35,620 sem hafa verið partaking svona langt. 82 00:05:35,620 --> 00:05:39,510 Í dag, gera við umræðu um uppbyggingu gagna, 83 00:05:39,510 --> 00:05:41,160 að minnsta kosti sumir af the grundvallaratriði, 84 00:05:41,160 --> 00:05:44,760 og þá erum við áfram samræðum okkar um HTML og vefur forritun. 85 00:05:44,760 --> 00:05:48,520 Reyndar höfum við eytt síðustu sumir sjö vikur að horfa á grundvallaratriði forritun - 86 00:05:48,520 --> 00:05:50,450 reiknirit, gögn uppbygging, og þess háttar - 87 00:05:50,450 --> 00:05:53,050 og C, eins og þú gætir hafa upplifað svona langt, 88 00:05:53,050 --> 00:05:57,060 er ekki endilega mest aðgengileg á tungumálum 89 00:05:57,060 --> 00:05:59,090 sem á að framkvæma eitthvað af þeim hugmyndum. 90 00:05:59,090 --> 00:06:01,880 Og svo byrja í þessari viku og í næstu viku og þá á, 91 00:06:01,880 --> 00:06:07,110 Við munum að lokum vera fær um að umskipti úr C, sem er almennt þekktur eins og a sæmilega lágmark-láréttur flötur tungumál, 92 00:06:07,110 --> 00:06:11,190 að það hærra stig, þar á meðal PHP, JavaScript, og þess háttar, 93 00:06:11,190 --> 00:06:14,850 sem við munum sjá draga á sama lærdóm sem við höfum lært á undanförnum vikum, 94 00:06:14,850 --> 00:06:19,430 en þú munt komast að því að lýsa hlutum eins og fylki og kjötkássa borð og leita og flokka 95 00:06:19,430 --> 00:06:23,370 orðið svo miklu auðveldara vegna þess að tungumál sjálfir munum byrja að nota 96 00:06:23,370 --> 00:06:25,290 mun verða öflugri. 97 00:06:25,290 --> 00:06:27,410 En fyrst umsókn trjáa. 98 00:06:27,410 --> 00:06:30,240 Það er mjög algeng þessa dagana að þurfa að þjappa upplýsingum. 99 00:06:30,240 --> 00:06:34,770 Í hvaða samhengi myndir þú vilja að þjappa einhvers konar stafrænna upplýsinga? 100 00:06:37,190 --> 00:06:39,670 >> Já. >> [Nemandi] Þegar þú þarft að senda það á vefnum. 101 00:06:39,670 --> 00:06:41,450 Já, þegar þú vilt að senda eitthvað á vefnum. 102 00:06:41,450 --> 00:06:44,950 Ef þú vilt að sækja stóra skrá, er það tilvalið ef einhver á hinum enda 103 00:06:44,950 --> 00:06:48,760 hefur þjappað að skrá með því að nota zip sniði eða eitthvað svoleiðis 104 00:06:48,760 --> 00:06:53,760 þannig að þú ert að senda færri bita gæti á annan hátt en að senda. 105 00:06:53,760 --> 00:06:55,500 Svo hvernig þjappa þér upplýsingar? 106 00:06:55,500 --> 00:07:00,540 Það snýst allt um að nota færri bita en krafist er sjálfgefið. 107 00:07:00,540 --> 00:07:03,220 En þetta er eins konar forvitinn hlutur vegna þess að hugsa til baka til viku 0 og 1 108 00:07:03,220 --> 00:07:07,370 þegar við ræddum um ASCII og tvöfaldur og við ræddum um ASCII einkum 109 00:07:07,370 --> 00:07:10,690 sem nota 8 bita til að tákna bókstafina 110 00:07:10,690 --> 00:07:16,120 þannig að bréf A er táknað með 65, lágstafir a er fjöldi 97, 111 00:07:16,120 --> 00:07:21,210 og þó þú tákna 65 eða 97, þú ert að nota 7 eða 8 bita. 112 00:07:21,210 --> 00:07:24,120 En afla er að það eru sumir bókstafir í enska stafrófinu 113 00:07:24,120 --> 00:07:26,230 sem eru ekki eins vinsæl eins og aðrir. 114 00:07:26,230 --> 00:07:31,600 Z er ekki allt sem vinsæll, Q er ekki allt sem vinsæll, en A og E eru frábær vinsæl. 115 00:07:31,600 --> 00:07:37,280 Og enn fyrir öllum þessum bréfum, sjálfgefið að heimurinn notar sama fjölda bita, bara 8. 116 00:07:37,280 --> 00:07:42,690 Svo myndi það ekki hafa verið betri ef í stað þess að nota 8 bita fyrir hvert bréf, 117 00:07:42,690 --> 00:07:47,440 jafnvel sjaldan notaður eins og Q og Z, 118 00:07:47,440 --> 00:07:51,910 Hvað ef við notuðum færri bita fyrir A og E og S og vinsælustu bréfum 119 00:07:51,910 --> 00:07:55,000 og nota fleiri bita fyrir minna vinsæll stafi, 120 00:07:55,000 --> 00:07:57,770 Hugmyndin er bjartsýni skulum fyrir sameiginlegum ræða, 121 00:07:57,770 --> 00:08:01,160 sem er þema í tölvunarfræði að reyna að hagræða hvað er að fara að gerast sem mest 122 00:08:01,160 --> 00:08:05,310 og eyða smá meiri tíma, aðeins meira pláss á það að já, gæti gerst 123 00:08:05,310 --> 00:08:07,680 en ekki endilega eins og oft. 124 00:08:07,680 --> 00:08:09,330 Svo skulum taka dæmi. 125 00:08:09,330 --> 00:08:12,610 >> Segjum að við viljum að umrita upplýsingar nokkuð duglegur. 126 00:08:12,610 --> 00:08:15,090 Þú gætir hafa vaxið upp að vita a lítill eitthvað um Morse kóða, 127 00:08:15,090 --> 00:08:17,450 og líkurnar eru þú ekki vita the raunverulegur númerið, 128 00:08:17,450 --> 00:08:21,750 en þú gætir muna að það er að minnsta kosti þetta röð punkta og strika. 129 00:08:21,750 --> 00:08:26,640 Þetta er nokkuð duglegur kóðun, og eftir því að vinsælasti bréf - til dæmis, E - 130 00:08:26,640 --> 00:08:28,980 notar stystu píp. 131 00:08:28,980 --> 00:08:31,740 Morse kóða er allur óður í beep-beep-beep-beep-beep-píp og halda tónum 132 00:08:31,740 --> 00:08:34,799 annaðhvort til skamms tíma eða lengri tíma. 133 00:08:34,799 --> 00:08:40,330 E, sem táknuð með punkti, er frábær stutt píp, bara píp, og það myndi tákna E. 134 00:08:40,330 --> 00:08:43,960 Með því móti, T væri lengri píp, eins og píp [lengir hljóð] 135 00:08:43,960 --> 00:08:45,710 og það myndi tákna T. 136 00:08:45,710 --> 00:08:48,840 En það er samt frekar stutt þar, hins vegar ef þú lítur á Z, 137 00:08:48,840 --> 00:08:52,690 að tjá Z þú myndir fara píp, píp [lengur hljóð], píp, píp [styttri hljóð]. 138 00:08:52,690 --> 00:08:55,360 Svo er það lengur því það er ekki eins algeng. 139 00:08:55,360 --> 00:08:58,150 En Gotcha hér er að Morse kóða er dálítið gölluð 140 00:08:58,150 --> 00:09:00,610 á að það er ekki strax decodable. 141 00:09:00,610 --> 00:09:07,350 Fyrir dæmi, ráð fyrir að þú heyrir um einhvern enda vír pípa [stutt], píp [lengi]. 142 00:09:07,350 --> 00:09:12,480 Hvaða skilaboð fékk ég bara? A punktur og bandstrik. Hvað þýðir að tákna? 143 00:09:12,480 --> 00:09:15,330 [Nemandi] A. >> [Malan] Kannski. 144 00:09:15,330 --> 00:09:18,270 Það gæti líka verið E eftir T. 145 00:09:18,270 --> 00:09:23,390 Með öðrum orðum, Morse kóða, en það notar þessa reglu að hámarka horn að ræða, 146 00:09:23,390 --> 00:09:26,250 það þýðir ekki lána sig til strax decodability. 147 00:09:26,250 --> 00:09:29,850 Það er, manna sem heyra eða taka þessa punkta og bandstrik 148 00:09:29,850 --> 00:09:34,540 að einhvern veginn reikna út þar sem brot eru á milli bókstafa, 149 00:09:34,540 --> 00:09:39,660 vegna þess að ef þú veist ekki hvar þær brotnar eru, gætir þú rugla í ET eða öfugt. 150 00:09:39,660 --> 00:09:43,880 >> Og hvað gætir þú gert? Í Morse kóða sem þú getur bara hlé á milli hvert bréf. 151 00:09:43,880 --> 00:09:47,660 En hlé er góður á borðið til alls benda á hraðakstur það upp. 152 00:09:47,660 --> 00:09:52,880 Og hvað ef í staðinn að við komum upp með kóða þar var þetta ekki slæmt ástand 153 00:09:52,880 --> 00:09:56,570 þar sem E er forskeyti, til dæmis, að A - 154 00:09:56,570 --> 00:10:00,020 í öðrum orðum, ef við gætum að tryggja að mynstur eru enn stutt á vinsæll bréf 155 00:10:00,020 --> 00:10:04,850 lengi fyrir minna vinsæll stafi, en það er ekki mögulegt rugl? 156 00:10:04,850 --> 00:10:08,930 Maður að nafni Huffman árum fundið þetta kerfi kallast Huffman kóðun 157 00:10:08,930 --> 00:10:12,390 sem notar í raun einn af gögn uppbygging sem við höfum eytt smá tíma í að tala um 158 00:10:12,390 --> 00:10:16,560 þessa vikuna, sem á tré, tvöfaldur tré sérstaklega - 159 00:10:16,560 --> 00:10:19,710 tré tvöfaldur sem þýðir að það hefur ekki fleiri en 2 börn. 160 00:10:19,710 --> 00:10:22,720 Það hefur kannski vinstri barn, kannski rétt barn, og það er það. 161 00:10:22,720 --> 00:10:26,510 Svo býst bara fyrir sakir umræðu sem einhver vill senda skilaboð 162 00:10:26,510 --> 00:10:31,270 sem lítur svona út. Það er heill bull, en það er samsett úr As, Bs, Cs, Ds og Es. 163 00:10:31,270 --> 00:10:34,890 Og ef þú telur raunverulega upp allt í eins, Bs, Cs, Ds og Es 164 00:10:34,890 --> 00:10:36,870 og svo deila með heildarfjölda bréfa, 165 00:10:36,870 --> 00:10:42,710 þetta litla graf hér segir að 45% af bréfum eru Es, 20% eru eins, 166 00:10:42,710 --> 00:10:45,010 10% Bs, og svo framvegis. 167 00:10:45,010 --> 00:10:47,330 Svo í öðrum orðum gert ráð fyrir að vitnað band þarna 168 00:10:47,330 --> 00:10:49,080 er bara einhver skilaboð sem þú vilt senda. 169 00:10:49,080 --> 00:10:52,180 Það gerist að vera bull bara svo við getum notað og nokkrum bréfum og mögulegt er, 170 00:10:52,180 --> 00:10:55,220 en það er örugglega raunin að E er vinsæll, 171 00:10:55,220 --> 00:11:01,450 og B og C eru síst vinsæll, amk af þessum 5 bókstöfum. 172 00:11:01,450 --> 00:11:04,040 Og hvernig getum við farið um að koma upp með kóðun, 173 00:11:04,040 --> 00:11:08,430 tvöfaldur kóðun mynstur 0s og 1s fyrir hvert af þessum bréfum 174 00:11:08,430 --> 00:11:14,820 þannig að E er stutt mynstur og kannski B og C eru örlítið lengri mynstur, 175 00:11:14,820 --> 00:11:19,270 aftur, er hugmyndin sú að við viljum að nota færri bita af the tími 176 00:11:19,270 --> 00:11:21,790 og fleiri bitar aðeins einu sinni í a á meðan. 177 00:11:21,790 --> 00:11:26,070 Samkvæmt Huffman kóðun, getur þú búið til skóg af trjám. 178 00:11:26,070 --> 00:11:31,190 Það er tegund af sögu línu hér sem felur í sér tré og einnig því ferli að byggja þá upp. 179 00:11:31,190 --> 00:11:32,420 Við skulum byrja. 180 00:11:32,420 --> 00:11:36,140 >> Ég leggja til að þú byrjar með þessum skógi, svo að segja, af 5 tré, 181 00:11:36,140 --> 00:11:38,260 hvert sem er ansi heimskur tré. 182 00:11:38,260 --> 00:11:42,800 Trénu er samanstendur af aðeins einum hnút, sem fulltrúa hér með hring. 183 00:11:42,800 --> 00:11:45,310 Svo hvert af þessum hlutum gæti verið C struct 184 00:11:45,310 --> 00:11:50,200 og inni í C strúktúr gæti verið fljóta hönd tíðni telja 185 00:11:50,200 --> 00:11:52,510 og þá kannski bleikju alþingismaður bréf. 186 00:11:52,510 --> 00:11:56,470 Svo hugsa um þessi hnúður sem bara allir gamla C struct en nú, meiri. 187 00:11:56,470 --> 00:12:01,230 Þetta er skógur af 5 tré, hver um sem aðeins hafa einn hnút. 188 00:12:01,230 --> 00:12:06,830 Hvað Huffman tillaga er að við byrjum að sameina þau tré 189 00:12:06,830 --> 00:12:11,140 sem hafa minnstu tíðni gildir í örlítið stærri tré 190 00:12:11,140 --> 00:12:13,490 með því að tengja þá með nýja rót hnút. 191 00:12:13,490 --> 00:12:17,560 Svo meðal bréf hér, eftir að fyrir þægindi sem ég hef raðað þeim frá vinstri til hægri, 192 00:12:17,560 --> 00:12:21,420 þó það er ekki nauðsynlegt, og eftir því að minnstu hnúður 193 00:12:21,420 --> 00:12:23,930 eru nú um 10% og 10%. 194 00:12:23,930 --> 00:12:28,940 Svo Huffman lagt til að við sameinast þeim 2 minnstu hnútar í nýtt tré 195 00:12:28,940 --> 00:12:34,450 með því að kynna nýja foreldri hnút og þá gefa það foreldri vinstri barn og rétt barn 196 00:12:34,450 --> 00:12:37,720 þar sem B er geðþótta vinstri og C er geðþótta rétt. 197 00:12:37,720 --> 00:12:41,590 Og þá Huffman lagt frekar að við skulum nú bara hugsa um vinstri barnsins 198 00:12:41,590 --> 00:12:44,790 í einni af þessum trjám alltaf eins og að vera fulltrúi 0 199 00:12:44,790 --> 00:12:47,890 og rétt barnið alltaf eins og að vera fulltrúi númer 1. 200 00:12:47,890 --> 00:12:50,680 >> Það skiptir ekki máli ef þú flettir þeim svo lengi sem þú ert samkvæmur. 201 00:12:50,680 --> 00:12:54,650 Svo nú höfum við fjögur tré í þessum skógi. 202 00:12:54,650 --> 00:12:58,050 Og ég segi fjögur því nú tré til vinstri - 203 00:12:58,050 --> 00:13:00,570 og það er ekki svo mikið tré í þeim skilningi að það vex með þessum hætti, 204 00:13:00,570 --> 00:13:05,170 það er meira eins og fjölskyldu tré þar sem nú er 0,2 konar foreldri tveggja barna - 205 00:13:05,170 --> 00:13:07,930 eftir því að í því foreldri sem við höfum dregið 0.2. 206 00:13:07,930 --> 00:13:13,370 Við höfum bætt við tíðni telja af tveimur börnum og gefið nýja hnút heildarfjárhæð. 207 00:13:13,370 --> 00:13:15,310 Svo nú erum við að endurtaka bara þessa aðferð. 208 00:13:15,310 --> 00:13:19,490 Finnið tvær minnstu hnúta og þá ganga þær í nýtt tré 209 00:13:19,490 --> 00:13:21,380 og þá endurtaka ferlið frekar. 210 00:13:21,380 --> 00:13:26,390 Núna höfum við nokkrar frambjóðendur, 20%, 15%, og 20%. 211 00:13:26,390 --> 00:13:29,780 Í þessu tilviki höfum við að brjóta jafntefli. Við getum gert það geðþótta. 212 00:13:29,780 --> 00:13:31,540 Við ættum bara að gera það stöðugt. 213 00:13:31,540 --> 00:13:33,760 Í þessu tilfelli, ég geðþótta fara með einn á vinstri, 214 00:13:33,760 --> 00:13:39,880 og ég sameinast nú 20% og 15% til að gefa mér nýtt foreldri sem heitir 35%, 215 00:13:39,880 --> 00:13:46,310 sem vinstri barn er 0, sem rétt barn er 1, og nú höfum við bara þrjú tré í skóginum. 216 00:13:46,310 --> 00:13:47,960 Þú getur kannski séð hvar þetta er að fara. 217 00:13:47,960 --> 00:13:51,150 Ef við endurtaka þetta par oftar, við erum að fara að hafa bara eina stærri tré, 218 00:13:51,150 --> 00:13:53,900 öll sem kantar eru merktar með 0s og 1s. 219 00:13:53,900 --> 00:13:55,710 Við skulum gera það aftur. 220 00:13:55,710 --> 00:14:02,600 35% er rót trés er. 20% og 45%, þannig að við erum að fara að sameina 35% og 20%. 221 00:14:02,600 --> 00:14:05,610 Nú höfum við þetta tré hér. Við bætum þá saman, höfum við 55%. 222 00:14:05,610 --> 00:14:07,910 Nú er það aðeins tvö tré í skóginum. 223 00:14:07,910 --> 00:14:11,900 Við gerum þetta eina síðasta tíma, og vonandi stærðfræðilega allar tíðnir bæta upp 224 00:14:11,900 --> 00:14:15,570 vegna þess að þeir ættu við síðan reiknað þá frá the fá-fara að bæta allt að 100%. 225 00:14:15,570 --> 00:14:17,960 Og nú höfum við eitt tré. 226 00:14:17,960 --> 00:14:20,580 Svo er þetta Huffman kóðun tré. 227 00:14:20,580 --> 00:14:24,400 Það tók svona nokkurn tíma að fá það munnlega, en raunin er með for lykkju 228 00:14:24,400 --> 00:14:27,620 eða með endurkvæma virka, getur þú byggja þennan grip upp ansi hratt. 229 00:14:27,620 --> 00:14:32,440 Svo nú höfum við einn nýjan hnút, og öll þessi innri hnútar hafa verið malloc'd, 230 00:14:32,440 --> 00:14:34,690 væntanlega, á leiðinni. 231 00:14:34,690 --> 00:14:38,650 Svo nú efst í þessu tré sem við höfum 100%, en nú eftir að við höfum leið 232 00:14:38,650 --> 00:14:43,780 frá þessu nýja frábær-mikill-mikill-afa í öllum mikill-mikill-barnabarnabörn 233 00:14:43,780 --> 00:14:45,930 alla leið í botn, að öll leyfi. 234 00:14:45,930 --> 00:14:52,840 >> Það sem við ætlum að gera núna er að leggja til að til að tákna stafinn E, 235 00:14:52,840 --> 00:14:55,670 við munum einfaldlega nota númer 1. Hvers vegna? 236 00:14:55,670 --> 00:15:01,000 Vegna þess að ef við fara yfir þetta tré frá síðasta rót niður að blaða þekktur sem E, 237 00:15:01,000 --> 00:15:06,050 fylgjumst bara eitt brún, rétt röð, og það er merkt auðvitað efst til hægri 1. 238 00:15:06,050 --> 00:15:11,550 Svo óbeint hér Huffman var sú kóðun E í tvöfaldur skal bara vera 1. 239 00:15:11,550 --> 00:15:14,490 Og það er ansi fjandinn duglegur. Get í raun ekki fá allir minni en það. 240 00:15:14,490 --> 00:15:18,350 Með því móti A er að fara að eiga fulltrúa, ef þú fylgja rökfræði, 241 00:15:18,350 --> 00:15:21,610 með hvaða mynstur bita í staðinn? 01. 242 00:15:21,610 --> 00:15:25,500 Svo til að fá að, byrjum við á rót og við förum eftir og þá erum við að fara til hægri, 243 00:15:25,500 --> 00:15:28,580 sem þýðir að við fylgt 0 og þá 1. 244 00:15:28,580 --> 00:15:32,810 Svo skulum við tákna stafinn A með mynstri 0 og 1. 245 00:15:32,810 --> 00:15:36,010 Og nú eftir að við höfum nú þegar eign strax decodability 246 00:15:36,010 --> 00:15:38,090 að við vissum ekki í Morse kóða. 247 00:15:38,090 --> 00:15:42,840 Jafnvel þótt bæði þessi mynstur eru nokkuð stutt - E er 1 hluti, A er 2 bits - 248 00:15:42,840 --> 00:15:45,080 taka eftir því að þeir geta ekki að rugla eitt eða annað, 249 00:15:45,080 --> 00:15:54,870 því ef þú sérð 1 það er got að vera E, ef þú sérð 0 þá 1 það er greinilega fengið að vera A. 250 00:15:54,870 --> 00:15:58,410 Á sama hátt, hvað er D? 001. 251 00:15:58,410 --> 00:16:01,440 Hvað er C? 0001. 252 00:16:01,440 --> 00:16:05,320 Og hvað er B? 0000. 253 00:16:05,320 --> 00:16:09,550 Og aftur, af því að öll bréf sem við þykir vænt um eru í leyfi 254 00:16:09,550 --> 00:16:13,890 og ekkert af þeim eru eins konar milliliður í leið frá rót til blaða, 255 00:16:13,890 --> 00:16:18,760 það er engin hætta á conflating mismunandi encodings 2 bréf ' 256 00:16:18,760 --> 00:16:22,300 vegna þess að allar þessar Bitamynstur eru deterministic. 257 00:16:22,300 --> 00:16:25,280 0000 mun alltaf vera B. 258 00:16:25,280 --> 00:16:29,480 Það er enginn hnútur einhverstaðar á milli að þú gætir ruglað eitt bréf fyrir aðra. 259 00:16:29,480 --> 00:16:31,150 Svo er það óbeint hér? 260 00:16:31,150 --> 00:16:35,080 >> Vinsælasta bréf - í þessu tilfelli E - hefur fengið stystu kóðun, 261 00:16:35,080 --> 00:16:37,430 A hefur fengið næsta stystu kóðun, 262 00:16:37,430 --> 00:16:41,390 og B og C, sem við vissum nú þegar frá the fá-fara voru tegundum óvinsælasta 263 00:16:41,390 --> 00:16:45,390 á 10% tíðni hvern, þeir hafa fengið lengstu kóðun. 264 00:16:45,390 --> 00:16:49,410 Og svo er það þetta þýðir nú að ef þú vilt senda skilaboð sem er þjappað 265 00:16:49,410 --> 00:16:51,950 á netinu eða í tölvupósti eða þess háttar, 266 00:16:51,950 --> 00:16:56,730 frekar en að nota stöðluðu ASCII, geturðu sent Huffman dulmáli skilaboð 267 00:16:56,730 --> 00:17:01,720 þannig ef þú vilt senda bréf E, senda þér bara einn hluti. 268 00:17:01,720 --> 00:17:05,680 Ef þú vilt senda A, senda þér 2 bita, 01, í stað þess að senda 8 bita 269 00:17:05,680 --> 00:17:10,190 eftir aðra 8 bita og síðan aðra 8 bita og svo framvegis. 270 00:17:10,190 --> 00:17:11,940 En það er Gotcha hér. 271 00:17:11,940 --> 00:17:17,079 Það er ekki nóg að bara byggja þetta tré og byrja að senda frá Alice í Bob 272 00:17:17,079 --> 00:17:20,010 styttri hluti mynstur, band frá ASCII, 273 00:17:20,010 --> 00:17:23,140 því Alice er einnig að upplýsa Bob af því 274 00:17:23,140 --> 00:17:26,880 ef Bob er að fara að vera fær um að lesa þjappað skilaboð hennar? 275 00:17:26,880 --> 00:17:30,770 [Inaudible nemandi svar] >> Hvað er það? 276 00:17:30,770 --> 00:17:32,310 [Inaudible nemandi svar] >> um hvaða tré er. 277 00:17:32,310 --> 00:17:35,160 Eða jafnvel meira sérstaklega, hvað þá encodings eru 278 00:17:35,160 --> 00:17:39,010 sérstaklega þar sem á þessari sögu við gert dómur símtal á einum stað. 279 00:17:39,010 --> 00:17:43,640 Mundu að við þurftum að velja eftir geðþótta milli 2 mismunandi 20% hnúta? 280 00:17:43,640 --> 00:17:49,800 Svo það er ekki raunin að Bob, viðtakanda, getur bara endurgera tré á eigin 281 00:17:49,800 --> 00:17:53,390 því kannski að hann muni búa til tré alltaf svo örlítið öðruvísi Alice. 282 00:17:53,390 --> 00:17:56,670 Þar að auki, Bob er ekki einu sinni vita hvað upprunalega skeytið er 283 00:17:56,670 --> 00:18:00,770 því það eina sem Alice er að senda honum, að sjálfsögðu, er þjappað skilaboð. 284 00:18:00,770 --> 00:18:05,900 >> Svo grípa með samþjöppun eins og þetta er það, já, Alice er að vista allt fullt af bitum 285 00:18:05,900 --> 00:18:09,900 með því að senda 1 fyrir e og 01 fyrir A og svo framvegis, 286 00:18:09,900 --> 00:18:15,180 en hún hefur einnig að upplýsa Bob hvað kortlagning er á milli bókstafa og bitum 287 00:18:15,180 --> 00:18:19,620 vegna þess að þeir geta ekki skýrt að treysta á bara ASCII lengur ef við erum ekki að nota ASCII. 288 00:18:19,620 --> 00:18:22,200 Svo hún getur annað hvort sent honum tré einhvern veginn - 289 00:18:22,200 --> 00:18:26,600 skrifa það niður, geyma það eins og tvöfaldur gögn eða eitthvað svoleiðis - 290 00:18:26,600 --> 00:18:30,280 eða bara senda honum smá svindl blaði, Excel skrá, sem sýnir kortlagning. 291 00:18:30,280 --> 00:18:36,480 Þannig er gert ráð fyrir virkni samþjöppun raun að skilaboðin sem þú ert að senda 292 00:18:36,480 --> 00:18:40,230 eru nokkuð stór, amk meðalstór, 293 00:18:40,230 --> 00:18:42,180 því ef þú ert að senda frábær stutt skilaboð, 294 00:18:42,180 --> 00:18:45,390 Ef þú vilt bara að senda skilaboðin BAD, sem gerist að vera orð sem við getum stafa hér, 295 00:18:45,390 --> 00:18:49,550 B-A-D, þú ert líklega að fara að nota færri bita, 296 00:18:49,550 --> 00:18:53,130 en aflinn er ef þú ert líka að upplýsa Bob hvað tré er 297 00:18:53,130 --> 00:18:57,530 eða hvað þessir encodings ert, ætlar þú að fara að sennilega meiri öllum þeim sparnaði 298 00:18:57,530 --> 00:19:00,110 að hafa þjappaðar hluti til að byrja með. 299 00:19:00,110 --> 00:19:02,210 Svo það getur raunverulega vera raunin að ef þú ert að reyna þjappa 300 00:19:02,210 --> 00:19:05,330 jafnvel með eitthvað eins og zip eða skrá snið sem þú gætir kannast við - 301 00:19:05,330 --> 00:19:07,780 frekar litlar skrár, jafnvel tóm skrá - 302 00:19:07,780 --> 00:19:10,930 stundum þá skrár gætu fengið stærri og ekki minni. 303 00:19:10,930 --> 00:19:14,320 En raunhæft, það gerist aðeins fyrir litlum stærðum skrá, 304 00:19:14,320 --> 00:19:16,920 svo það er ekki að fara að gera a gígabæti skrá vera 2 gígabæta, 305 00:19:16,920 --> 00:19:19,480 við erum í raun að tala bæti eða bara nokkrar kílóbæti. 306 00:19:19,480 --> 00:19:22,330 >> Sum forrit eins og zip ert sviði nógur til að átta sig á því, 307 00:19:22,330 --> 00:19:24,590 "Þú ert að fara að eyða fleiri bita þjappa þessu." 308 00:19:24,590 --> 00:19:27,460 "Láttu mig ekki trufla þjappa það fyrir þig á öllum." 309 00:19:27,460 --> 00:19:30,160 Svo er þetta bara ein leið þá að þjappa texta sniði. 310 00:19:30,160 --> 00:19:32,300 Við gætum framkvæma eitthvað svona í C. 311 00:19:32,300 --> 00:19:35,370 Fyrir dæmi, hér er hvernig við gætum táknað hnút í tré 312 00:19:35,370 --> 00:19:39,320 þar sem við erum með bleikju fyrir tákn, fljótandi gildi um tíðni, 313 00:19:39,320 --> 00:19:42,250 og eins og við höfum séð með öðrum gögnum okkar mannvirki, 2 punkta, 314 00:19:42,250 --> 00:19:47,080 1 til vinstri barn, 1 til hægri, hvort sem hægt er að NULL, 315 00:19:47,080 --> 00:19:50,850 en ef ekki, vísar það til vinstri barns og rétt barns. 316 00:19:50,850 --> 00:19:55,130 Þannig er þetta þá Huffman kóðun, og það er ein leið sem þú getur farið um að þjappa upplýsingum, 317 00:19:55,130 --> 00:19:57,880 og það er vissulega einn af the auðvelt að framkvæma 318 00:19:57,880 --> 00:20:00,830 í samhengi, segjum gagnauppbyggingu síðustu viku, 319 00:20:00,830 --> 00:20:03,250 þó jafnvel flóknari reiknirit til 320 00:20:03,250 --> 00:20:08,220 sem getur gert jafnvel flóknari stökkbreytta gögnunum. 321 00:20:08,220 --> 00:20:11,640 Einhverjar spurningar þá á tré, tvöfaldur tré eða þjöppun texta? 322 00:20:11,640 --> 00:20:15,590 [Nemandi] Er einhver tvíræðni, eins og ef [inaudible] skipt í 01, 323 00:20:15,590 --> 00:20:19,160 þá 011 væri óljós, ekki satt? 324 00:20:19,160 --> 00:20:22,730 [Inaudible] >> Góð spurning. Tvíræðni. 325 00:20:22,730 --> 00:20:25,940 Leyfðu mér að draga saman með því að vísa í þessa mynd hér. 326 00:20:25,940 --> 00:20:29,650 Þar sem stafir sem þú ert að þjappa, Á móti af, 327 00:20:29,650 --> 00:20:32,850 samkvæmt skilgreiningu þessa reiknirit alltaf vera blöðin, 328 00:20:32,850 --> 00:20:41,870 þú munt aldrei tilviljun nota sama mynstur bita fyrir forskeyti margra bréfum. 329 00:20:41,870 --> 00:20:46,740 Svo í öðrum orðum, þú ert áhyggjur af, það hljómar eins og að tvíræðni vegna 330 00:20:46,740 --> 00:20:51,580 þar 001 gæti verið að byrja á B eða upphaf C eða eitthvað svoleiðis. 331 00:20:51,580 --> 00:20:56,780 En það getur ekki verið að ræða því tilkynnt að allar stafina í stafrófinu við erum kóðun 332 00:20:56,780 --> 00:20:58,290 eru í leyfi. 333 00:20:58,290 --> 00:21:01,910 >> Tvíræðni getur aðeins komið upp, eins og í tilviki Morse kóða, 334 00:21:01,910 --> 00:21:06,770 Ef, til dæmis, C var einhversstaðar götunni frá rót til B. 335 00:21:06,770 --> 00:21:12,290 [Nemandi] Rétt. Svo í því tilfelli, segjum A hefur 2 lauf. >> Segja hefur - Segðu það aftur. 336 00:21:12,290 --> 00:21:18,760 [Nemandi] segja er 2 lauf, F og G, og þá G - >> Okay. En það er ekki hægt. 337 00:21:18,760 --> 00:21:23,230 A mundi ekki hafa leyfi F og G vegna þess að þeir stafina F og G 338 00:21:23,230 --> 00:21:27,560 myndi sjálf vera fer einhvers staðar vinstra megin við B eða rétt E. 339 00:21:27,560 --> 00:21:28,900 Svo samkvæmt skilgreiningu, verða þeir að vera fer. 340 00:21:28,900 --> 00:21:32,940 Annars, þú ert nákvæmlega rétt, höfum við ekki leyst vandamál sem Morse kóða andlit. 341 00:21:32,940 --> 00:21:38,150 Góð spurning. Aðrar spurningar? Allt í lagi. 342 00:21:38,150 --> 00:21:42,050 Þessi hugmynd af bitum, snýr það út að við höfum haft völd alla tíð að við höfum í raun ekki notað 343 00:21:42,050 --> 00:21:44,200 þegar hún kom að notfæra þessar 0s og 1s. 344 00:21:44,200 --> 00:21:46,600 Við spurði um þetta á einn af elstu vandamál setur: 345 00:21:46,600 --> 00:21:52,340 nefnilega hvernig þú fara óður í að breyta hástafi í lágstafi eða öfugt? 346 00:21:52,340 --> 00:21:55,460 Eða, meira concretely, einn af þeim fyrstu psets spurði 347 00:21:55,460 --> 00:22:01,090 hversu margir bitar þú þarft í raun að fletta til að breyta til lágstafir í eða öfugt? 348 00:22:01,090 --> 00:22:05,580 Hér er a fljótur áminning um hvað 65 og 97 líta út í tvöfaldur. 349 00:22:05,580 --> 00:22:08,060 Og jafnvel þótt þessi spurning hefur konar dofna í minni þínu, 350 00:22:08,060 --> 00:22:11,290 þú getur séð aftur hér að hversu margir bitar þurfa að vera hreifi 351 00:22:11,290 --> 00:22:15,810 til að breyta hlutafé A til lágstafir a? Bara einn. 352 00:22:15,810 --> 00:22:19,650 >> Þau eru mismunandi aðeins á einum stað, þriðji hluti frá vinstri. 353 00:22:19,650 --> 00:22:24,240 Í A hefur 010, lítill sem er 011. 354 00:22:24,240 --> 00:22:26,250 Svo einhvern veginn, við þurfum bara að vera fær um að fletta að hluti, 355 00:22:26,250 --> 00:22:29,410 og við getum þá í nyt eða lágstöfum. 356 00:22:29,410 --> 00:22:32,720 Við höfum gert þetta í fortíðinni með því að í raun að nota ef aðstæður 357 00:22:32,720 --> 00:22:35,930 og athuga hvort bréfið er á milli fjármuna og fjármagns z, 358 00:22:35,930 --> 00:22:41,480 þá framleiðsla eins og A - A + 26 eða eitthvað svoleiðis. 359 00:22:41,480 --> 00:22:46,130 Þú varst líklega stærðfræði breyting á bókstöfum. 360 00:22:46,130 --> 00:22:49,270 En hvað ef við hefðum bara selbiti að einn hluti? 361 00:22:49,270 --> 00:22:59,080 Hvernig þú fara óður í að taka heilan bæti um bita, svo 8 bits eins 01000001 og 01100001? 362 00:22:59,080 --> 00:23:03,170 Ef þú hefðir þá mynstur bita, hvernig getum við farið að breyta bara einn af þeim? 363 00:23:03,170 --> 00:23:07,610 Hvað ef við kynna í gult hér þetta önnur mynstur bita? 364 00:23:07,610 --> 00:23:13,420 Ef ég gera allt gula 0s band nema einn bita sem ég vil breyta 365 00:23:13,420 --> 00:23:17,900 og þá vil ég kynna nýjan rekstraraðila þekktur sem Bita rekstraraðila - 366 00:23:17,900 --> 00:23:21,210 Bita í þeim skilningi að það starfar á einstökum bitum, 367 00:23:21,210 --> 00:23:25,360 ekki á heilt bæti eða fjórum Bytes allt í einu. 368 00:23:25,360 --> 00:23:31,170 Þetta lóðrétt barnum þarna í gulum bendir til þess að hvað ef við tökum framsetning Capital 369 00:23:31,170 --> 00:23:37,060 og Bita eða það með gulu röð bita? 370 00:23:37,060 --> 00:23:41,300 Með öðrum orðum, hugsa aftur til umræðu um Boolean tjáning í grunni og þá í C. 371 00:23:41,300 --> 00:23:47,520 >> Aðgerð Boolean eða þýðir það að vera satt, annaðhvort það fyrsta sem þarf að vera satt 372 00:23:47,520 --> 00:23:50,700 eða annað sem þarf að vera satt eða þeir báðir hafa til að vera satt, 373 00:23:50,700 --> 00:23:53,270 og þá er Útkoman sig satt. 374 00:23:53,270 --> 00:24:00,230 Í þessu tilfelli hér, hvað fáum við ef við tökum 0 "eða" Ed með 0? False eða rangar? 375 00:24:00,230 --> 00:24:04,280 Það er samt rangt, svo lágstafir a er eins og búast mætti. 376 00:24:04,280 --> 00:24:07,540 Hvað ef í stað þess að við gerum 1 eða 0? 377 00:24:07,540 --> 00:24:12,640 Þetta er nú 1, en taka eftir hvað er að fara að gerast hér. 378 00:24:12,640 --> 00:24:18,630 Ef við byrjum með Capital og við höldum áfram að "eða" einstaka bita þess sem við erum að gera hér, 379 00:24:18,630 --> 00:24:25,180 0 eða gulu einn gefur okkur hvað hérna? Þetta gefur okkur 1. 380 00:24:25,180 --> 00:24:35,120 Í raun, gera ráð fyrir að við vissum ekki hvað hástafi útgáfa af lítið sem í raun var. 381 00:24:35,120 --> 00:24:38,270 Við skulum fara að gera þetta. Leyfðu mér að færa þetta aftur hérna. 382 00:24:38,270 --> 00:24:42,340 Við skulum gera þetta aftur. 0 eða 0 gefur mér 0. 383 00:24:42,340 --> 00:24:45,020 1 eða 0 gefur mér 1. 384 00:24:45,020 --> 00:24:48,020 0 eða 1 gefur mér 1. 385 00:24:48,020 --> 00:24:52,880 0 eða 0 gefur mér 0. Næsta einn er 0, sá næsti er 0, sá næsti er 0. 386 00:24:52,880 --> 00:24:55,660 1 eða 0 gefur mér 1. 387 00:24:55,660 --> 00:24:59,140 Og svo jafnvel þótt við vitum ekki fyrirfram hvað lágstafir a var, 388 00:24:59,140 --> 00:25:04,770 einfaldlega með því að "eða" ing A með þessu mynstri bita sem við höfum kynnt hér í gulum, 389 00:25:04,770 --> 00:25:09,400 þú getur lágstafir höfuðborg A með því að snúa því aðeins. 390 00:25:09,400 --> 00:25:11,580 Við notuðum þetta tjáning vikum: ósvífni svolítið. 391 00:25:11,580 --> 00:25:13,710 Hvernig heldur þú að gera í raun það kerfisbundið? 392 00:25:13,710 --> 00:25:16,390 Þú notar það sem er almennt kallað grímu, a röð af bitum, 393 00:25:16,390 --> 00:25:19,980 að í þessu tilfelli bara gerist svo að líta út eins og þessi tala hér, 394 00:25:19,980 --> 00:25:22,980 og þá "eða" það með því að nota saman þetta nýja C rekstraraðila, 395 00:25:22,980 --> 00:25:29,940 ekki | |, þú notar einn | og þú vilt í raun að fá þetta svar hér því hvers vegna? 396 00:25:29,940 --> 00:25:35,120 Þetta er 1s stað, 2s stað, 4S, 8s, 16s, 32s. 397 00:25:35,120 --> 00:25:42,280 Svo kemur í ljós að ef þú tekur fjármagn bréf A og Bita eða það með tölunnar 32, 398 00:25:42,280 --> 00:25:47,520 vegna tölunnar 32, þegar þú horfir á það eins og bita, lítur svona út, 399 00:25:47,520 --> 00:25:50,860 sem þýðir að þú getur selbiti hluti sem þú vilt í raun og veru. 400 00:25:50,860 --> 00:25:52,630 Og álíka - og við munum líta á kóðann á aðeins augnablik - 401 00:25:52,630 --> 00:25:54,210 ráð við viljum fara í aðra átt. 402 00:25:54,210 --> 00:25:58,210 >> Hvernig ferð þú frá lágstafir A til Capital? Hvaða hluti þarf að breyta? 403 00:25:58,210 --> 00:25:59,820 Það er sama einn. 404 00:25:59,820 --> 00:26:03,970 Við viljum breyta því þriðja hluti frá 1 til á 0. 405 00:26:03,970 --> 00:26:06,310 Og hvernig gætum við farið að gera þetta? 406 00:26:06,310 --> 00:26:10,130 Hvernig snúa við á svolítið? Með hvaða mynstur bita gætum við slökkt svolítið? 407 00:26:11,580 --> 00:26:14,070 Hvað ef við konar hvolfa grímu? 408 00:26:14,070 --> 00:26:17,350 En áður, gerði við allt gult gríma 0s 409 00:26:17,350 --> 00:26:19,930 nema einn hluti sem við vildum að kveikja á 410 00:26:19,930 --> 00:26:25,580 hvað ef þetta sinn, gerum við allt gríma 1s nema hluti sem við viljum að slökkva 411 00:26:25,580 --> 00:26:28,330 og þá nota það sem rekstraraðila? 412 00:26:28,330 --> 00:26:30,560 Hvað ef við "og" hluti? Við skulum taka a líta. 413 00:26:30,560 --> 00:26:34,880 Ef við flettir nú þetta, gera ráð fyrir að aftur ég að búa til grímu sem er allt 1s 414 00:26:34,880 --> 00:26:37,650 nema einn hluti sem ég vil að slökkva á 415 00:26:37,650 --> 00:26:43,860 og þá frekar en "eða" hvíta tölur upp efst með gulu tölur hérna, 416 00:26:43,860 --> 00:26:46,940 hvað ef ég í staðinn "og" þeim saman? Það er kallað Bita og. 417 00:26:46,940 --> 00:26:49,450 Rökrétt er það sama eins og Boolean og. 418 00:26:49,450 --> 00:26:55,160 Þetta gefur mér 0 og 1 er 0. Svo rangar og satt er ósatt. 419 00:26:55,160 --> 00:26:58,160 Satt og satt er satt. 420 00:26:58,160 --> 00:27:04,020 Og hér er galdur: satt og ósatt er nú rangt, þannig að við höfum slökkt að hluti. 421 00:27:04,020 --> 00:27:06,560 Og nú er restin af sögunni nokkuð einfalt. 422 00:27:06,560 --> 00:27:11,970 Þar sem restin af hulið er 1s, það skiptir ekki máli hvað tölurnar eru í hvítu. 423 00:27:11,970 --> 00:27:15,580 Þegar þú "og" eitthvað með satt, þú ert ekki að fara að breyta gildi þess. 424 00:27:15,580 --> 00:27:20,200 Ef það er satt, verður það að vera satt. Ef það var rangt, það mun vera rangt. 425 00:27:20,200 --> 00:27:23,190 >> En galdur gerist þegar þú tekur eitthvað sem var satt 426 00:27:23,190 --> 00:27:25,430 og þú þá "og" það með rangt. 427 00:27:25,430 --> 00:27:30,030 Þetta hefur þau áhrif að slökkva að hluti. 428 00:27:30,030 --> 00:27:31,980 Svo lítið þar dulinn. 429 00:27:31,980 --> 00:27:35,390 Við skulum í raun líta á einhverjum kóða, sem gætu í raun líta jafnvel meira dulinn, 430 00:27:35,390 --> 00:27:38,220 en við skulum kíkja hér á tolower. 431 00:27:38,220 --> 00:27:45,880 Ef ég lít á tolower, fara úr höfuðborginni A til lágstafir a, 432 00:27:45,880 --> 00:27:47,730 við skulum sjá hvernig við gætum framkvæma þessa áætlun. 433 00:27:47,730 --> 00:27:51,280 Hér er aðal, og það er ekki að taka neina stjórn-lína rök. 434 00:27:51,280 --> 00:27:55,980 Ég lýsa karakter c fyrir bréfinu, sem notandinn er að fara að slá inn 435 00:27:55,980 --> 00:28:00,690 Ég nota þá þekki gera á meðan lykkja til að bara vera viss um að notandinn ákveðið gefur mér Capital 436 00:28:00,690 --> 00:28:05,010 eða B eða C. .. Z, þannig að þeir gefa mér eitthvað á milli A og Z. 437 00:28:05,010 --> 00:28:08,580 Og nú hvað er ég að gera hér? 438 00:28:08,580 --> 00:28:14,870 Ég er "eða" ing þetta með 0x20, en það er í raun það sama og - 439 00:28:14,870 --> 00:28:19,500 og við munum koma aftur til þetta í smá stund - 32. 440 00:28:19,500 --> 00:28:24,830 Svo aftur, 32 er þetta mynstur bita hér. Hvers vegna vitum við þetta? 441 00:28:24,830 --> 00:28:26,320 Bara hugsa til baka að viku 0. 442 00:28:26,320 --> 00:28:31,010 Þetta er 1s stað, 2s stað, 4S, 8s, 16s, 32s stað. 443 00:28:31,010 --> 00:28:33,470 Svo gerist þetta gult númer að vera 32. 444 00:28:33,470 --> 00:28:40,570 Ég get þá tekið bréf eins og bleikju hér, Bita "eða" það með bókstaflega fjölda 32, 445 00:28:40,570 --> 00:28:45,250 og hvað fæ ég til baka? Lágstafir útgáfu af bleikju. 446 00:28:45,250 --> 00:28:48,830 A augnabliki síðan, þó, lýst ég þetta í öðru grunn merki. 447 00:28:48,830 --> 00:28:51,370 Hvað gerði það tákna? >> [Nemandi] Sextánskt. 448 00:28:51,370 --> 00:28:53,050 [Malan] Þetta gerist til að tákna Sextánskt. 449 00:28:53,050 --> 00:28:55,170 Við höfum ekki talað um sextánskur allt það mikið, 450 00:28:55,170 --> 00:28:57,330 en það er í raun auðvelt í málum eins og þessu. 451 00:28:57,330 --> 00:29:01,730 >> Jafnvel þó að það lítur flóknari og jafnvel þó að það lítur út eins og 20 og ekki 32, 452 00:29:01,730 --> 00:29:06,240 það kemur í ljós að sextánskur er í raun frábær þægilegur aðferðin 453 00:29:06,240 --> 00:29:10,810 vegna þess að í sextánskur hvert stafa eftir 0x - og þetta þýðir ekki neitt, 454 00:29:10,810 --> 00:29:13,960 þetta er bara mannleg venju sem segir hér kemur sextánskur númer - 455 00:29:13,960 --> 00:29:18,590 hver af þessum tölustöfum, 2 og þá 0, getur sig vera fulltrúa 456 00:29:18,590 --> 00:29:20,800 með nákvæmlega 4 bita. 457 00:29:20,800 --> 00:29:27,840 Þannig að ef við gerum þetta, láta mig opna texti ritstjóri hér - undarlegt autocompleteoff - 458 00:29:27,840 --> 00:29:35,940 ef við gerum smá texta ritstjóri hér, fjölda 0x20 þýðir hér er 4 bita, hér er önnur 4 bita. 459 00:29:35,940 --> 00:29:38,050 Við skulum gera rightmost 4 bita fyrst. 460 00:29:38,050 --> 00:29:44,690 0 þegar fulltrúa með 4 bitum er það? Super auðvelt. Bara allt 0s. 461 00:29:44,690 --> 00:29:46,780 Svo 4 bita og 0s. 462 00:29:46,780 --> 00:29:53,510 Hvernig lýsir þú 2? Það hefur verið smá stund síðan við gerðum þetta, en það er 0100. 463 00:29:53,510 --> 00:29:57,310 Þannig að þetta er 1s staður, þetta er 2s stað, og þá skiptir ekki máli hvað öðrum stöðum eru. 464 00:29:57,310 --> 00:30:00,610 Með öðrum orðum, í sextánskur þú gætir sagt 0x20, 465 00:30:00,610 --> 00:30:04,340 en ef þér finnst þá um hvað er 2 og hvernig er það fulltrúa í tvöfaldur, 466 00:30:04,340 --> 00:30:07,130 hvað er 0 og hvernig er það fulltrúa í tvöfaldur, 467 00:30:07,130 --> 00:30:10,440 svör við þessum spurningum eru þetta og þetta, í sömu röð. 468 00:30:10,440 --> 00:30:14,380 Svo gerist 0x20 til að tákna þetta mynstur af 8 bitum, 469 00:30:14,380 --> 00:30:16,880 sem er einmitt gríma sem við vildum. 470 00:30:16,880 --> 00:30:20,140 Svo er þetta í augnablikinu bara andlega æfa, 471 00:30:20,140 --> 00:30:24,520 en raunin er í númerið og það er yfirleitt algengara að skrifa fasta eins og þetta 472 00:30:24,520 --> 00:30:28,360 í sextánskur því þá forritari getur tiltölulega auðveldlega, 473 00:30:28,360 --> 00:30:32,560 jafnvel ef það þurfa sumir pappír og blýant, reikna út hvað þessi mynstur bita er 474 00:30:32,560 --> 00:30:35,960 vegna þess að þú getur ekki bara tjáð 0s og 1s yfirleitt í kóða. 475 00:30:35,960 --> 00:30:38,540 Þú getur ekki farið 00.010 og svo framvegis. 476 00:30:38,540 --> 00:30:42,380 >> Þú þarft að velja aukastafi eða sextánskur eða octal eða öðrum rithætti. 477 00:30:42,380 --> 00:30:47,540 Flestir hafa tilhneigingu til að velja Sextánskt einfaldlega þannig að hver stafa táknar 4 bita 478 00:30:47,540 --> 00:30:49,320 og þú getur gert þetta stutta stærðfræði. 479 00:30:49,320 --> 00:30:54,990 Og ég mun veifa hendi minni á toupper, sem er nánast það sama og það lítur nánast eins. 480 00:30:54,990 --> 00:31:01,900 Toupper gerist að nota eða rekstraraðila heldur þessi strákur og DF. 481 00:31:01,900 --> 00:31:09,300 Hvað er DF tákna? DF? Einhver? >> [Nemandi] 255. 482 00:31:09,300 --> 00:31:12,780 255? Ekki 255. Það væri FF. 483 00:31:12,780 --> 00:31:15,210 Við munum fara þetta einn eins og a lítill æfa. 484 00:31:15,210 --> 00:31:23,460 En ef þú ferð frá 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 og þá hvað kemur eftir 9? 485 00:31:23,460 --> 00:31:26,510 Við erum eins konar út af aukastaf tölustöfum, en sextánskur hvað kemur eftir 9? 486 00:31:26,510 --> 00:31:29,510 [Nemandi] a. >> Svo a, b, c, d. 487 00:31:29,510 --> 00:31:33,470 Þú getur fundið út þaðan hvaða mynstur bita D raunverulega býr. 488 00:31:33,470 --> 00:31:38,850 Og ef við að gera stærðfræði, munum við sjá að gríma þú endar að komast aftur er eins og þetta. 489 00:31:38,850 --> 00:31:45,580 Þetta er f, allt 1s, og þetta er d. Svo táknar DF ​​sem grímu. Allt í lagi. 490 00:31:45,580 --> 00:31:50,980 Og loks, ekki til að gera hlutina hljóð Super, frábær tækni, 491 00:31:50,980 --> 00:31:53,840 en býst við vildum að skrifa forrit sem gerir þetta. 492 00:31:53,840 --> 00:31:58,960 Leyfðu mér að fara á undan og gera tvöfaldur, sem er forrit í skrá sem kallast binary.c. 493 00:31:58,960 --> 00:32:02,050 Og nú láta mig hlaupa tvöfaldur og gefa mér ekki neikvæð heiltala. 494 00:32:02,050 --> 00:32:03,960 Við skulum byrja auðvelt og tegund í 0. 495 00:32:03,960 --> 00:32:09,010 Þetta er nú forrit sem prentar út heiltölu fulltrúa tvöfaldur þess. 496 00:32:09,010 --> 00:32:13,470 Svo ef ég spila þennan leik aftur og tegund í aðeins 1, ætti ég að fá 32-bita framsetning 1. 497 00:32:13,470 --> 00:32:15,490 Ef ég geri þetta aftur með 2, ætti ég að fá það. 498 00:32:15,490 --> 00:32:19,310 Ef ég 7, ætti ég að fá nokkrar 1s lok og svo framvegis. 499 00:32:19,310 --> 00:32:22,740 Það kemur í ljós að ég nefni þetta vegna þess að með Bita aðgerðir 500 00:32:22,740 --> 00:32:25,490 þú getur raunverulega að gera eitt annað hlutur eins og heilbrigður. 501 00:32:25,490 --> 00:32:29,130 Hægt er að búa til þessar grímur virk. 502 00:32:29,130 --> 00:32:32,800 Taka a líta á þetta einn endanlega dæmi felur Bita aðgerðir. 503 00:32:32,800 --> 00:32:35,490 Hér er fyrsti hluti af kóða, hvetja notandann til fjölda, 504 00:32:35,490 --> 00:32:38,130 og það krefst þess að þú gefa mér ekki neikvæð heiltala. 505 00:32:38,130 --> 00:32:39,780 Svo er þessi tegund af gamla skólanum efni. 506 00:32:39,780 --> 00:32:41,980 En hér er eitthvað sem er svona áhugavert. 507 00:32:41,980 --> 00:32:44,910 >> Hvernig get ég farið um prentun númer í tvöfaldur? 508 00:32:44,910 --> 00:32:48,970 Ég iterate fyrst frá hvað við það? 509 00:32:48,970 --> 00:32:52,270 Hvað er stærð á INT venjulega, að minnsta kosti í tækið? >> [Nemandi] 4. 510 00:32:52,270 --> 00:32:57,130 Það er 4. Svo er 4 * 8 32-1 er 31. 511 00:32:57,130 --> 00:33:02,590 Svo ef ég er farin að telja frá 31, sem sýnir, að það kemur í ljós, 512 00:33:02,590 --> 00:33:07,630 bara eðli er 31 bita eða hæsta til hluti, sem er þessi gaur hérna, 513 00:33:07,630 --> 00:33:09,650 en þetta er að fara að vera hluti 0. 514 00:33:09,650 --> 00:33:12,850 Svo er þetta hluti 01 ... bita 31. 515 00:33:12,850 --> 00:33:14,950 Svo hvað er þetta númer að gera? 516 00:33:14,950 --> 00:33:20,140 Takið þetta til lykkju, þó að það lítur dulinn, er bara iterating úr 31 niður í 0. Það er það. 517 00:33:20,140 --> 00:33:24,530 Svo áhugaverður hluti er að vera í þessum 5 línur hér. 518 00:33:24,530 --> 00:33:28,110 Takið eftir að í þessari línu sem ég er að lýsa breytilega heitir gríma 519 00:33:28,110 --> 00:33:30,790 að vera í samræmi við sögu okkar af þessum gulu tölum. 520 00:33:30,790 --> 00:33:32,200 Og svo hvað er þetta að gera? 521 00:33:32,200 --> 00:33:35,720 Þetta er annar Bita rekstraraðila sem við höfum ekki séð áður, líklega. 522 00:33:35,720 --> 00:33:38,300 Það er vinstri Shift rekstraraðila. 523 00:33:38,300 --> 00:33:40,060 Þessi stjórnandi er þetta. 524 00:33:40,060 --> 00:33:44,920 Hér er númer 1, og ef þú gerir i vinstri vakt, vinstri vakt 525 00:33:44,920 --> 00:33:49,260 Hvað heldur þú að hafi þau áhrif að gera til að einstök 1? 526 00:33:49,260 --> 00:33:51,290 Bókstaflega breytast það yfir. 527 00:33:51,290 --> 00:33:57,540 Svo ef númer 1 er það sem þú ert til vinstri og þú byrja á því að virkja i til 31, 528 00:33:57,540 --> 00:34:03,490 hvað er að fara að gera? Það er að fara að taka þetta númer 1 og breyting það 31 stöðum hérna. 529 00:34:03,490 --> 00:34:06,210 Og vegna þess að það er augljóslega engin önnur tölustafir á bak við það, 530 00:34:06,210 --> 00:34:10,350 þá mun sjálfgefið að skipt 0s. 531 00:34:10,350 --> 00:34:15,120 Svo þú munt byrja út með númer 1, sem að sjálfsögðu lítur út eins og þetta - 532 00:34:15,120 --> 00:34:18,659 og láta mig draga það yfir hér í miðju. 533 00:34:18,659 --> 00:34:22,139 Og þá eins og þú skiptir það til vinstri, þessi strákur fer í raun með þessum hætti. 534 00:34:22,139 --> 00:34:24,659 En um leið og þú gerir það, fær 0 fyllt inn 535 00:34:24,659 --> 00:34:28,360 Ef þú skiptir það í annað sinn, það fer þessa leið og annar 0 verður fyllt inn 536 00:34:28,360 --> 00:34:31,000 >> Þú færa það aftur og þá annar 0 verður fyllt inn 537 00:34:31,000 --> 00:34:37,900 Svo ef þú gerir þetta hlutur af 1 << i 31 stöðum, enda þú upp fá grímu 538 00:34:37,900 --> 00:34:42,550 sem er 32 stafir að lengd, er leftmost einn sem er 1, 539 00:34:42,550 --> 00:34:45,199 öllum öðrum sem eru í 0. 540 00:34:45,199 --> 00:34:50,880 Og það kemur í ljós, eins og innskot, breytast númer til vinstri eins og þetta 541 00:34:50,880 --> 00:34:53,530 einnig tilviljun, og stundum þægilegur, 542 00:34:53,530 --> 00:34:57,520 hefur áhrif til að gera hvað ég á að þessi tala? >> [Nemandi] Tvöföldun það. 543 00:34:57,520 --> 00:35:00,980 Tvöföldun það vegna þess að hver dálka - það 1s stað, 2s stað, 4S stað, 544 00:35:00,980 --> 00:35:05,030 8s stað, 16s stað - they're öll tvöföldun eins og þú fara til vinstri. 545 00:35:05,030 --> 00:35:09,500 Eða frekar, þegar þú færa 1s þú ert að fara að enda tvöföldun gildi fjölda. 546 00:35:09,500 --> 00:35:12,070 Þú getur endað að gera áhugaverða umbreytingu af tölustöfum 547 00:35:12,070 --> 00:35:15,640 með því að færa allt yfir á þennan hátt með völd í 2. 548 00:35:15,640 --> 00:35:17,150 Svo hvernig virkar þetta? 549 00:35:17,150 --> 00:35:22,580 Þetta gefur þá mér grímu sem er allt 0s nema fyrir 1 í nákvæmlega stað sem ég vil það, 550 00:35:22,580 --> 00:35:27,920 og þá er þetta tjáning, sem er stolið úr toupper.c, 551 00:35:27,920 --> 00:35:31,770 er einfaldlega að segja að taka númer N sem notandinn slegið inn, 552 00:35:31,770 --> 00:35:34,730 "Og" það með því að maska, og hvað ætlar þú að fá? 553 00:35:34,730 --> 00:35:39,200 Þú ert að fara að fá 1 ef það er 1 í þessi gríma stað, 554 00:35:39,200 --> 00:35:41,570 eða þú ert að fara að fá 0 ef það er ekki. 555 00:35:41,570 --> 00:35:44,370 Og svo allt þetta program er í raun það hefur lykkju, 556 00:35:44,370 --> 00:35:48,340 og það skapar maska ​​með 1 hérna, þá 1 hérna, þá 1 hérna, 557 00:35:48,340 --> 00:35:52,950 og það notar þetta Bita og bragð að segja er það 1 hluti á inntak notanda hér? 558 00:35:52,950 --> 00:35:59,220 >> Er 1 hluti á inntak notanda hér? Og ef svo er, bókstaflega prentað 1, annars prenta 0. 559 00:35:59,220 --> 00:36:03,780 Við erum að gera þetta með ints bara vegna þess að það er þess vegna sem við erum að gera 32 bita í stað 8, 560 00:36:03,780 --> 00:36:06,900 en það sem við höfum kynnt þá er þetta Bita og þetta Bita OR, 561 00:36:06,900 --> 00:36:10,450 og þetta VINSTRI SHIFT rekstraraðila, sem eru ekki oft hræðilega gagnlegt, 562 00:36:10,450 --> 00:36:12,230 en það kemur í ljós að þeir geta verið. 563 00:36:12,230 --> 00:36:16,560 Í staðreynd, ef þú varst að tákna eitthvað eins fjölda Booleans 564 00:36:16,560 --> 00:36:21,260 bara til að tákna satt eða ósatt, ráð fyrir að þú vildir að halda utan um hvort 565 00:36:21,260 --> 00:36:24,630 herbergi fullt af 300 nemenda er til staðar, 566 00:36:24,630 --> 00:36:29,420 þú gætir lýst fjölda stærð 300 af gerðinni bool þannig að þú færð 300 bools, 567 00:36:29,420 --> 00:36:33,090 og þú getur stillt hvort að sanna ef einhver er hér og ósönn annars. 568 00:36:33,090 --> 00:36:37,550 Hvers vegna er þessi framsetning á að gögn uppbygging óhagkvæmt? 569 00:36:39,370 --> 00:36:44,800 Hvað er slæmt um hönnun að gögn uppbygging, fylki af 300 bools? 570 00:36:46,190 --> 00:36:49,600 Hvað er bool, í raun, undir hetta? 571 00:36:49,600 --> 00:36:52,310 Þetta líka, er eitthvað sem gæti ekki verið kunnugt. 572 00:36:52,310 --> 00:36:53,720 Það kemur í ljós að það er ekki bool. 573 00:36:53,720 --> 00:36:56,620 Mundu við bjuggum tegund af að með cs50.h skrá, 574 00:36:56,620 --> 00:36:58,630 sem sjálft nær staðall bool. 575 00:36:58,630 --> 00:37:00,930 C er góður af heimsk, þó, þegar það kemur að bool. 576 00:37:00,930 --> 00:37:04,880 Það notar 8 bita til að tákna hvert bool, sem er alveg eyðslusamur 577 00:37:04,880 --> 00:37:09,040 því augljóslega, hversu margir bitar sem þú þarft til að tákna a bool? Bara 1. 578 00:37:09,040 --> 00:37:13,190 Svo kemur í ljós að ef þú hefur nú getu með Bita rekstraraðila 579 00:37:13,190 --> 00:37:17,760 að vinna einstaka bita jafnvel í bleikju, jafnvel í einu bæti, 580 00:37:17,760 --> 00:37:21,380 það kemur í ljós að þú getur dregið úr minni sem þarf til að tákna eitthvað heimskulegt 581 00:37:21,380 --> 00:37:25,490 eins og þessi aðsókn stíll gögn uppbygging með stuðlinum 8. 582 00:37:25,490 --> 00:37:29,820 Stað þess að nota átta bita til að tákna satt eða ósatt, getur þú bókstaflega að nota einn 583 00:37:29,820 --> 00:37:34,500 með því að nota eitt bæti fyrir hverja átta nemendur í bekknum 584 00:37:34,500 --> 00:37:41,990 og skipta frá 0 til 1 einstökum bitum því að nota þessar tegundir af lágmark-láréttur flötur bragðarefur. 585 00:37:43,850 --> 00:37:49,460 Það raunverulega binda enda á orku. Eru einhverjar spurningar um Bita aðgerðir? 586 00:37:49,460 --> 00:37:52,710 >> Já. >> [Nemandi] Er eingöngu eða rekstraraðila? 587 00:37:52,710 --> 00:37:56,440 Já. Það er eingöngu eða rekstraraðili sem lítur svona út, ^, sem gulrót tákn, 588 00:37:56,440 --> 00:38:02,070 sem þýðir aðeins það fyrsta eða annað sem getur verið 1 að framleiðsla á að vera 1. 589 00:38:02,070 --> 00:38:07,750 Það er líka ekki, ~, sem mun leyfa þér að snúa á 0 til 1 eða öfugt eins og heilbrigður. 590 00:38:07,750 --> 00:38:11,600 Og það er líka rétt breyting rekstraraðila, >>, sem er andstæða þeirri sem við sáum. 591 00:38:11,600 --> 00:38:13,850 Allt í lagi. Við skulum taka það nú á hærra stigi. 592 00:38:13,850 --> 00:38:16,770 Við byrjuðum á því að tala um texta og síðan þjappa það 593 00:38:16,770 --> 00:38:19,650 og fulltrúar textann með færri fjölda bita; 594 00:38:19,650 --> 00:38:22,890 við ræddum aðeins um hvernig við getum byrjað að notfæra hluti á Bita stigi. 595 00:38:22,890 --> 00:38:26,640 Við skulum súmma nú aftur upp 10.000 fet að framsetning 596 00:38:26,640 --> 00:38:29,250 um flóknari hluti eins og grafík. 597 00:38:29,250 --> 00:38:32,950 Hér höfum við fána í Þýskalandi, hér höfum við eitt í Frakklandi. 598 00:38:32,950 --> 00:38:36,350 Þetta gæti verið fulltrúa í skrá snið sem þú gætir vita - Hreyfimyndir, til dæmis. 599 00:38:36,350 --> 00:38:40,030 Ef þú hefur einhvern tíma séð mynd á vefnum sem endar á. GIF, 600 00:38:40,030 --> 00:38:43,000 þetta er grafík skipti sniði. 601 00:38:43,000 --> 00:38:47,530 Þessir tveir fánar hér konar lána sig til að þjöppun 602 00:38:47,530 --> 00:38:52,050 fyrir hvað kannski augljós ástæða? >> [Inaudible nemandi svar] 603 00:38:52,050 --> 00:38:53,440 There er a einhver fjöldi af endurtekningu, ekki satt? 604 00:38:53,440 --> 00:38:57,270 Til að senda fána Þýskalands, hugsa um þetta eins og að vera mynd á skjánum 605 00:38:57,270 --> 00:38:59,030 Til baka í daga Scratch þínum. 606 00:38:59,030 --> 00:39:02,380 Þú gætir muna að það er einstök dílar eða punktar sem lýsa annaðhvort semja mynd. 607 00:39:02,380 --> 00:39:06,650 >> There er a heild röð af svörtum punktum og öðru öllu röð svörtum punktum. 608 00:39:06,650 --> 00:39:10,110 Það er fullt af línum um svartra punkta sem við gátum séð ef við aðdregna í raun, 609 00:39:10,110 --> 00:39:13,370 mikið eins og þegar við aðdregna í á andlit Rob í Photoshop. 610 00:39:13,370 --> 00:39:15,500 Um leið og við komum dýpra og dýpra og dýpra inn í myndina, 611 00:39:15,500 --> 00:39:19,990 þú byrjaðir að sjá pixelation, allar ferninga sem samanstendur auga hans í þessu máli. 612 00:39:19,990 --> 00:39:24,130 Sami samningur hér. Ef við aðdregna í heilmikill hluti, myndir þú sjá einstaka punktar. 613 00:39:24,130 --> 00:39:27,110 Jæja, þetta er eins konar sóun á bita. 614 00:39:27,110 --> 00:39:32,120 Ef þriðjungur fána er svartur og þriðjungur fána er gulur og svo framvegis, 615 00:39:32,120 --> 00:39:34,860 hvers vegna getum við ekki þjappa einhvern veginn þennan fána? 616 00:39:34,860 --> 00:39:39,560 Og jafnvel franska fána gæti þjappað þótt mynstur er svolítið öðruvísi. 617 00:39:39,560 --> 00:39:44,120 Það kemur í ljós á GIF skrá snið er lossless samþjöppun snið, 618 00:39:44,120 --> 00:39:48,420 sem þýðir að þú getur tekið mynd eins og þýska fánanum hér 619 00:39:48,420 --> 00:39:53,540 þú getur kastað í burtu mikið af bitum sínum án þess að fórna gæðum. 620 00:39:53,540 --> 00:39:55,340 Þetta er í mótsögn við eitthvað eins og JPEG, 621 00:39:55,340 --> 00:39:57,050 sem flest okkar eru líklega kunnugt. 622 00:39:57,050 --> 00:39:59,000 Facebook myndir og Flickr myndir og þess háttar 623 00:39:59,000 --> 00:40:02,200 eru nánast alltaf vistaðar sem JPEG þegar þeir eru hlaðið, 624 00:40:02,200 --> 00:40:08,100 en JPEG er lossy - lossy - format þar sem þú henda bita 625 00:40:08,100 --> 00:40:10,430 en þú kastar líka burt gæði. 626 00:40:10,430 --> 00:40:13,890 Og svo ef þú þjappa myndum með Photoshop eða hlaða þeim upp á Facebook 627 00:40:13,890 --> 00:40:15,580 eða taka þau á mjög vitleysa síma, 628 00:40:15,580 --> 00:40:19,510 þú veist að myndin byrjar að fá mjög splotchy og Pixelated, 629 00:40:19,510 --> 00:40:22,290 og það er vegna þess að það er verið þjöppuð af tölvunni eða síma 630 00:40:22,290 --> 00:40:24,550 við bókstaflega henda upplýsingar í burtu. 631 00:40:24,550 --> 00:40:28,500 En GIF er ótrúlegt á að það er hægt að nota færri bita en það gæti sjálfgefið 632 00:40:28,500 --> 00:40:30,750 án þess að tapa öllum upplýsingum. 633 00:40:30,750 --> 00:40:32,410 >> Og það er í raun svo sem hér segir. 634 00:40:32,410 --> 00:40:38,740 Frekar en að geyma í skrá eins BMP myndi að RGB þrefaldur fyrir svart, svart, svart, svart, 635 00:40:38,740 --> 00:40:42,570 svartur, svart, svart, svart, svart, svart, svart, svart og svo framvegis, 636 00:40:42,570 --> 00:40:45,640 Þvert á GIF snið er að fara að segja, "Black" 637 00:40:45,640 --> 00:40:48,330 og þá, "endurtaka þetta 100 sinnum," eða eitthvað svoleiðis. 638 00:40:48,330 --> 00:40:52,280 "Black, endurtaka þetta 100 sinnum, svartur, endurtaka þetta 100 sinnum ..." 639 00:40:52,280 --> 00:40:54,530 "Gulur, endurtaka þetta 100 sinnum." 640 00:40:54,530 --> 00:40:57,200 Og svo man það, í raun, að leftmost pixla 641 00:40:57,200 --> 00:41:02,160 og þá umbreytir einhvern veginn hugmyndin um að endurtaka að pixla aftur og aftur. 642 00:41:02,160 --> 00:41:06,110 Svo GIF geta þá þjappa sig án þess að tapa öllum upplýsingum. 643 00:41:06,110 --> 00:41:09,510 En ef þú hefðir að giska, ef það er reiknirit sem Hreyfimyndir notkun, 644 00:41:09,510 --> 00:41:13,180 hver af þessum fánar, jafnvel þótt þeir líta nákvæmlega eins í stærð, 645 00:41:13,180 --> 00:41:19,620 er að fara að vera lítill þegar vistað á diski sem GIF? >> [Nemandi] Þýskaland. 646 00:41:19,620 --> 00:41:21,660 Þýskaland er að fara að vera minni? Hvers vegna? 647 00:41:21,660 --> 00:41:26,620 [Nemendur] Þar sem þú endurtaka það margir, margir sinnum lárétt 648 00:41:26,620 --> 00:41:29,010 og þá endurtaka í annað sinn. >> Einmitt. 649 00:41:29,010 --> 00:41:32,020 Vegna þess að fólkið sem fann upp GIF bara konar ákveðið geðþótta 650 00:41:32,020 --> 00:41:36,040 að endurtekning verði skuldsett lárétt og ekki láréttum. 651 00:41:36,040 --> 00:41:40,900 There er a einhver fjöldi fleiri endurtekning láréttum hér í þýska fánanum en í franska fána. 652 00:41:40,900 --> 00:41:44,430 Þannig að ef við opnum í raun upp möppu á harða diskinum mínum sem hefur þessar GIF, 653 00:41:44,430 --> 00:41:51,920 þú getur raunverulega séð að þýska fána hér er 2 kílóbæti og franska einn er 4 kílóbæti. 654 00:41:51,920 --> 00:41:54,080 Það gerist að vera tilviljun, að einn er tvöfalt annað, 655 00:41:54,080 --> 00:41:57,960 en það er í raun að ræða að franski fáninn er miklu stærri. 656 00:41:57,960 --> 00:42:01,250 >> Jafnvel þó að við erum að tala hér um grafík, sömu hugmyndir geta sótt um að 657 00:42:01,250 --> 00:42:05,150 ekki hluti eins og fánar en myndirnar sem eru aðeins flóknari. 658 00:42:05,150 --> 00:42:08,170 Ef þú tekur mynd af epli, vafalaust er það a einhver fjöldi af tvíverknað þar, 659 00:42:08,170 --> 00:42:11,040 þannig að við gætum einhvern veginn muna að vanræksla bakgrunnur er blár 660 00:42:11,040 --> 00:42:13,230 og ekki, eins og hægri myndin gefur til kynna, 661 00:42:13,230 --> 00:42:16,830 verður að muna lit hvert einasta pixla í þessu mynd. 662 00:42:16,830 --> 00:42:21,060 Þannig að við getum kastað bita burtu þar án þess að missa upplýsingar. 663 00:42:21,060 --> 00:42:23,340 The epli lítur samt bara það sama. 664 00:42:23,340 --> 00:42:27,510 Í þessu dæmi hér, gætir þú séð hvað gerist í myndinni. 665 00:42:27,510 --> 00:42:31,970 Þessir fulltrúar gamla skólanum kvikmynd hjóla þar í efstu myndinni þar 666 00:42:31,970 --> 00:42:36,900 þú ert með húsbíla aka framhjá húsi og tré. 667 00:42:36,900 --> 00:42:42,130 Og eins að Van rekur fortíð frá vinstri til hægri, það er augljóslega ekki að breytast? 668 00:42:42,130 --> 00:42:45,320 Húsið er ekki að fara einhvers staðar, og tré er ekki að fara neitt. 669 00:42:45,320 --> 00:42:47,700 Það eina sem er að flytja er van í þessu tilfelli. 670 00:42:47,700 --> 00:42:51,650 Svo eins Bakgrunnur Óbreytt bendir, hvað er hægt að gera í bíó 671 00:42:51,650 --> 00:42:56,530 er álíka henda bara í burtu upplýsingum sem ekki breyta á milli ramma. 672 00:42:56,530 --> 00:42:58,900 Þetta er almennt þekktur sem interframe samþjöppun 673 00:42:58,900 --> 00:43:02,120 þannig ef þetta ramma lítur nánast eins og this einn, 674 00:43:02,120 --> 00:43:05,390 skulum nennir ekki að geyma á disk eitthvað af sömu upplýsingum 675 00:43:05,390 --> 00:43:09,250 á þessum millistig ramma, við skulum bara nota takka ramma einu sinni í a á meðan 676 00:43:09,250 --> 00:43:13,420 að geyma í raun þær upplýsingar redundantly eins lítið geðheilbrigði athuga. 677 00:43:13,420 --> 00:43:18,620 >> Með því móti, annar aðferð til að þrýsta vídeó er í öðru og lægra td hér, 678 00:43:18,620 --> 00:43:23,970 þar frekar en geyma 30 rammar, hví ekki að geyma bara 15 ramma á sekúndu í staðinn? 679 00:43:23,970 --> 00:43:27,070 Frekar en bíómynd konar flýtur fallega, fullkomlega, 680 00:43:27,070 --> 00:43:30,060 Það getur litið út eins og það er stam smá, smá gamla skólanum, 681 00:43:30,060 --> 00:43:37,190 en nettó áhrif verða að nota mun færri bita en annars gætu verið nauðsynleg. 682 00:43:37,190 --> 00:43:39,240 Svo hvar er þetta leyfi þá okkur? 683 00:43:39,240 --> 00:43:41,700 Það var svolítið til hliðar því hvar annað sem þú getur farið með samþjöppun. 684 00:43:41,700 --> 00:43:45,140 Frekari upplýsingar um að taka bekknum eins og CS175 hér. 685 00:43:45,140 --> 00:43:46,990 Hér er annað dæmi í vídeó. 686 00:43:46,990 --> 00:43:49,190 Ef flugan er eina færa, 687 00:43:49,190 --> 00:43:51,790 getur þú virkilega henda upplýsingum í þeim miðjum ramma 688 00:43:51,790 --> 00:43:55,260 vegna þess að blóm og himinn og fer ekki að breytast. 689 00:43:55,260 --> 00:43:57,960 En við skulum nú íhuga Einn síðastur hlutur. 690 00:43:57,960 --> 00:44:03,890 Á næstu 5 mínútum við miðl bak eilífu í fyrirlestri? Já. Ekki í psets, þó. 691 00:44:03,890 --> 00:44:10,210 Síðasta saga um C og þá fáum við mjög sexy efni 692 00:44:10,210 --> 00:44:13,870 þátttöku HTML og Vefur og Woo-Hoo. Allt í lagi. 693 00:44:13,870 --> 00:44:16,050 Hér förum. Það er hvatning. 694 00:44:16,050 --> 00:44:20,020 Það kemur í ljós allt þetta þegar við höfum verið að skrifa forrit sem við keyra Clang. 695 00:44:20,020 --> 00:44:23,890 Og Clang, við höfum sagt frá því í fyrstu viku nánast, tekur kóðann 696 00:44:23,890 --> 00:44:25,740 og breytir það inn kóðann mótmæla. 697 00:44:25,740 --> 00:44:28,540 Það tekur C og breytir það inn 0s og 1s. 698 00:44:28,540 --> 00:44:32,150 Ég hef svona verið að ljúga að þér í nokkrar vikur vegna þess að það er ekki alveg eins einfalt eins og þessi. 699 00:44:32,150 --> 00:44:36,750 >> There er a einhver fjöldi fleiri að fara á undir hetta þegar þú keyrir forrit eins Clang. 700 00:44:36,750 --> 00:44:39,560 Í raun er hægt að vinna að setja saman áætlun í raun að lýsa, 701 00:44:39,560 --> 00:44:42,210 eins og þú might muna úr vídeó Rob er á þýðendur, 702 00:44:42,210 --> 00:44:47,580 í þessum 4 skrefum: Pre-vinnslu, samantekt sig, samsetningu, og tengja. 703 00:44:47,580 --> 00:44:51,950 En við í bekknum og flestir í heiminum draga yfirleitt öllum þessum skrefum 704 00:44:51,950 --> 00:44:54,410 eins og bara "að setja saman." 705 00:44:54,410 --> 00:44:58,070 En ef við byrjum með frumkóða svona, muna þetta er kannski einfaldasta C program 706 00:44:58,070 --> 00:45:03,530 við höfum skrifað hingað til, muna að þegar saman það endar útlit eins og þetta. 707 00:45:03,530 --> 00:45:07,310 En það er í raun millistig skref, og þau skref eru sem hér segir. 708 00:45:07,310 --> 00:45:10,750 Fyrst er það þessi hlutur á the mjög toppur af þessu og flest af áætlunum okkar, 709 00:45:10,750 --> 00:45:13,550 # Include 710 00:45:13,550 --> 00:45:17,210 Hvað er # include gera fyrir okkur? 711 00:45:17,210 --> 00:45:24,150 Það Nánast eintök og deig innihald stdio.h í skrá mínum sem svo hvers vegna? 712 00:45:24,150 --> 00:45:27,220 Hvers vegna ekki sama ég um innihald stdio.h? Hvað er þarna af áhuga? 713 00:45:27,220 --> 00:45:32,310 Printf er yfirlýsing, frumgerð þess, þannig að þýðandinn þá veit hvað ég meina 714 00:45:32,310 --> 00:45:34,900 þegar ég nefni þetta virka printf. 715 00:45:34,900 --> 00:45:39,390 Svo lið 1 í samantekt er pre-vinnslu, þar sem forrit eins Clang 716 00:45:39,390 --> 00:45:43,450 eða einhver hjálpar forrit sem Clang koma með les kóða efst til botn, 717 00:45:43,450 --> 00:45:47,740 vinstri til hægri, og hvenær sem það sér # tákn á eftir leitarorð eins og meðal annars, 718 00:45:47,740 --> 00:45:53,980 það virkar þá aðgerð, afrita og líma í þessu tilfelli stdio.h í skránni þinni. 719 00:45:53,980 --> 00:45:55,510 Það er skref 1. 720 00:45:55,510 --> 00:45:59,620 Síðan sem þú ert miklu stærri C skrá því af the gríðarstór afrita, líma starf sem er bara gerðist. 721 00:45:59,620 --> 00:46:01,710 >> Skref 2 nú er að setja saman. 722 00:46:01,710 --> 00:46:04,880 En það reynist að setja saman tekur kóðann sem lítur svona út 723 00:46:04,880 --> 00:46:08,160 og snýr það inn í eitthvað sem lítur út eins og þetta, 724 00:46:08,160 --> 00:46:12,560 sem fyrir þá sem þekkja er kallað? >> [Nemandi] þing. >> Smalamál. 725 00:46:12,560 --> 00:46:16,700 Þetta er í raun eitthvað ef þú tekur CS61 þú kafa inn í fleiri smáatriði. 726 00:46:16,700 --> 00:46:22,380 Þetta er bara um eins nálægt og þú getur fengið að skrifa 0s og 1s sjálfur 727 00:46:22,380 --> 00:46:25,850 en skrifa hluti á þann hátt að enn gerir að minnsta kosti lítill hluti af skilningi. 728 00:46:25,850 --> 00:46:30,760 Þetta eru vél leiðbeiningar, og ef við skruna niður til the aðalæð virka hér, 729 00:46:30,760 --> 00:46:35,470 eftir að það er þetta ýta kennslu, færa kennslu, draga kennslu, 730 00:46:35,470 --> 00:46:38,550 kalla kennslu, og svo framvegis. 731 00:46:38,550 --> 00:46:42,930 Þegar þú heyrir um að tölvan þín hefur Intel Inside, 732 00:46:42,930 --> 00:46:46,180 þú ert með Intel örgjörva í Mac eða PC, hvað þýðir það? 733 00:46:46,180 --> 00:46:51,200 A CPU kemur byggð af fyrirtækjum eins og Intel skilja ákveðnar leiðbeiningar. 734 00:46:51,200 --> 00:46:55,770 Þeir hafa ekki hugmynd um hvaða aðgerðir eins skipti eru eða helstu eru í sjálfu sér, 735 00:46:55,770 --> 00:47:00,060 en þeir vita hvað mjög lágmark-láréttur flötur leiðbeiningar eins og að bæta við, draga frá, ýta, 736 00:47:00,060 --> 00:47:02,430 færa, hringja, og svo framvegis eru. 737 00:47:02,430 --> 00:47:06,170 Svo þegar þú saman C kóða inn í tungumáli samkoma, 738 00:47:06,170 --> 00:47:11,820 mjög notandi vingjarnlegur-útlit kóða er breytt í eitthvað sem lítur út eins og þetta, 739 00:47:11,820 --> 00:47:21,670 sem hreyfist bókstaflega bæti eða 4 Bytes kring í svo litlum einingum í og ​​út af the CPU. 740 00:47:21,670 --> 00:47:26,820 En að lokum, þegar Clang er tilbúinn að taka þetta framsetning forritinu 741 00:47:26,820 --> 00:47:30,940 í 0s og 1s, þá gerist skref heitir samsetningu, 742 00:47:30,940 --> 00:47:33,850 og aftur allt gerist í blikka af óákveðinn greinir í ensku auga þegar í gangi Clang. 743 00:47:33,850 --> 00:47:39,300 Við byrjum hér, það framleiðsla skrá eins og þetta, og þá breytir það því að þessum 0s og 1s. 744 00:47:39,300 --> 00:47:42,000 Og ef þú vilt fara til baka á einhverjum tímapunkti og í raun sjá þetta í aðgerð, 745 00:47:42,000 --> 00:47:48,220 ef ég fer inn í hello1.c--þetta er eitt af fyrstu verkefnum við leit á - 746 00:47:48,220 --> 00:47:53,710 Venjulega við myndu þýða þetta með hello1.c Clang og þetta myndi gefa okkur a.out. 747 00:47:53,710 --> 00:47:59,890 Ef hins að gefa í staðinn það að-S fána, hvað þú munt fá er hello1.s 748 00:47:59,890 --> 00:48:02,750 og þú munt í raun að sjá samsetningu tungumál. 749 00:48:02,750 --> 00:48:05,750 >> Ég ætla að gera þetta í mjög stutt, en ef þú ferð aftur að Scramble 750 00:48:05,750 --> 00:48:08,740 eða endurheimta eða hvaða forrit sem þú hefur skrifað og bara út af forvitni 751 00:48:08,740 --> 00:48:13,240 langar að sjá hvað það lítur út í raun eins og, hvað er í raun verið gefið út í CPU, 752 00:48:13,240 --> 00:48:15,700 þú getur notað að-S fána með Clang. 753 00:48:15,700 --> 00:48:17,770 En svo loks, það er enn einn Gotcha. 754 00:48:17,770 --> 00:48:21,810 Hér eru 0s og 1s sem tákna framkvæmd minn hello, world. 755 00:48:21,810 --> 00:48:25,530 En ég nota virka einhver annar í áætlun mína. 756 00:48:25,530 --> 00:48:28,710 Svo jafnvel þótt ferlið hafi verið ég að taka hello.c, 757 00:48:28,710 --> 00:48:34,280 það gerist unnin í samkoma kóða, og þá fær saman í 0s og 1s, 758 00:48:34,280 --> 00:48:37,460 eina 0s og 1s sem outputted á þessum tímapunkti 759 00:48:37,460 --> 00:48:40,270 eru þau sem stafa af kóða mitt. 760 00:48:40,270 --> 00:48:44,400 En sá sem skrifaði printf, saman þeir númerið sitt 20 árum 761 00:48:44,400 --> 00:48:47,000 og það er nú sett upp einhvers staðar á tækinu, 762 00:48:47,000 --> 00:48:51,610 þannig að við höfum einhvern veginn að sameina hans eða hennar 0s og 1s með 0s minn og 1s, 763 00:48:51,610 --> 00:48:56,160 og það kemur okkur til 4 og síðasta skrefi samantekt, þekktur sem tengja. 764 00:48:56,160 --> 00:48:58,680 Svo á vinstri hönd hlið við höfum nákvæmlega sömu mynd og áður: 765 00:48:58,680 --> 00:49:02,580 hello.c verður samkoma kóða verður 0s og 1s. 766 00:49:02,580 --> 00:49:05,960 En muna að ég notaði venjulegt i / O bókasafn í númerið mitt, 767 00:49:05,960 --> 00:49:10,350 og það þýðir að einhvers staðar á tölvunni það er skrá sem heitir stdio.c 768 00:49:10,350 --> 00:49:13,980 eða að minnsta kosti saman útgáfa vegna þess að einhver nokkur ár síðan 769 00:49:13,980 --> 00:49:18,530 saman stdio.c inn kóða samkoma og a heild búnt af 0s og 1s. 770 00:49:18,530 --> 00:49:21,130 Þetta er það sem er þekktur sem truflanir eða dynamic bókasafn. 771 00:49:21,130 --> 00:49:23,350 Það er einhver skrá situr einhvers staðar í tækinu. 772 00:49:23,350 --> 00:49:28,710 >> En loks, ég verð að taka 0s mína og 1S og sá maður er 0s og 1s 773 00:49:28,710 --> 00:49:32,760 og einhvern veginn tengja þá saman, sameina bókstaflega þá 0s og 1s 774 00:49:32,760 --> 00:49:37,900 í einni skrá sem heitir a.out eða hello1 eða hvað ég kallaði program minn 775 00:49:37,900 --> 00:49:43,320 þannig að niðurstaðan hefur allt 1s og 0s sem ætti að semja áætlun mína. 776 00:49:43,320 --> 00:49:45,660 Svo allan þennan tíma þessari önn þegar þú hefur verið að nota Clang 777 00:49:45,660 --> 00:49:48,750 og jafnvel fleiri nýlega keyra gera til að hlaupa Clang, 778 00:49:48,750 --> 00:49:53,580 allar þessar ráðstafanir hafa verið að gerast svona samstundis, en mjög vísvitandi. 779 00:49:53,580 --> 00:49:57,830 Og svo ef þú heldur áfram á í tölvunarfræði, þ.e. CS61, 780 00:49:57,830 --> 00:50:00,850 þetta er lag sem þú munt halda áfram að afhýða aftur burt það 781 00:50:00,850 --> 00:50:06,980 að tala um hagkvæmni, öryggi afleiðingar, og eins af þessum lægri upplýsingar. 782 00:50:06,980 --> 00:50:09,220 En með það, við erum að fara að fara C eftir. 783 00:50:09,220 --> 00:50:11,420 Við skulum fara á undan og taka 5-mínútna hlé okkar núna, 784 00:50:11,420 --> 00:50:14,190 og þegar við komum aftur: Internetið. 785 00:50:17,280 --> 00:50:19,170 Allt í lagi. Við erum aftur. 786 00:50:19,170 --> 00:50:23,590 Nú erum við að byrja að líta okkar ekki bara í HTML því, eins og þú munt sjá, 787 00:50:23,590 --> 00:50:26,050 HTML sjálft er í raun frekar einfalt 788 00:50:26,050 --> 00:50:29,270 en í raun á forritun vefur almennt, net almennt, 789 00:50:29,270 --> 00:50:31,770 og hvernig öll þessi tækni koma saman 790 00:50:31,770 --> 00:50:35,400 til að leyfa okkur að búa til miklu flóknari forrit topp Netinu 791 00:50:35,400 --> 00:50:38,690 en svona langt við höfum getað í þessum svörtu og hvítu glugga. 792 00:50:38,690 --> 00:50:42,140 Reyndar, á þessum tímapunkti í önn þrátt fyrir að við munum eyða tiltölulega minni tíma 793 00:50:42,140 --> 00:50:46,200 á PHP, HTML, CSS, JavaScript, SQL og fleira, 794 00:50:46,200 --> 00:50:48,480 flestir nemendur gera á endanum að gera lokaverkefni sem eru vefur-undirstaða 795 00:50:48,480 --> 00:50:51,230 því eins og þú munt sjá, bakgrunnur sem þú hefur nú í C 796 00:50:51,230 --> 00:50:54,450 er mjög mikið við þessar hærri stigi tungumálum. 797 00:50:54,450 --> 00:50:56,800 >> Og eins og þú byrjar að hugsa um lokaverkefnið þitt, 798 00:50:56,800 --> 00:50:59,940 sem, eins og Set Vandamál 0, hvar varst þú hvött 799 00:50:59,940 --> 00:51:02,160 að gera flest allt af áhuga á þér í grunni, 800 00:51:02,160 --> 00:51:05,790 sem lokaverkefni er tækifæri til að taka nýfundinni þekkingu þína og kunnátta með C 801 00:51:05,790 --> 00:51:09,850 eða PHP eða JavaScript eða eins út fyrir a snúningur 802 00:51:09,850 --> 00:51:12,330 og búa til mjög eiga stykki af hugbúnaður fyrir the veröld til sjá. 803 00:51:12,330 --> 00:51:17,770 Og niðjum þú með hugmyndir, ég veit að þú getur höfuð hér, projects.cs50.net. 804 00:51:17,770 --> 00:51:21,800 Á hverju ári, fara fram við hugmyndir frá kennara og starfsfólk og nemandi hópa á háskólasvæðinu 805 00:51:21,800 --> 00:51:27,330 bara til að senda inn hugmyndir sínar á áhugaverða hluti sem hægt væri að leysa með tölvur, 806 00:51:27,330 --> 00:51:29,860 nota vefsíður með hugbúnaði. 807 00:51:29,860 --> 00:51:32,360 Svo ef þú ert í erfiðleikum með að koma upp með óákveðinn greinir í ensku hugmynd af þinn eiga, 808 00:51:32,360 --> 00:51:35,790 fyrir alla muni að fletta í gegnum hugmyndir þar frá þessu ári og síðasta. 809 00:51:35,790 --> 00:51:39,990 Það er fullkomlega í lagi að takast á verkefni sem hefur tekist áður. 810 00:51:39,990 --> 00:51:44,540 Við höfum séð mörg forrit til að sjá stöðu þvottinn á háskólasvæðinu, 811 00:51:44,540 --> 00:51:47,000 margir apps fyrir siglingar í stofu borðstofu valmyndinni 812 00:51:47,000 --> 00:51:49,540 margir apps fyrir siglingar kennsluskrá og þess háttar. 813 00:51:49,540 --> 00:51:53,680 Og reyndar í framtíðinni fyrirlestri og í framtíðinni námskeiðum, 814 00:51:53,680 --> 00:51:57,750 Við munum kynna þér að einhverju aðgengilegar API, bæði auglýsing í boði 815 00:51:57,750 --> 00:52:02,520 og hér í boði frá CS50 á háskólasvæðinu þannig að þú hefur aðgang að gögnum 816 00:52:02,520 --> 00:52:04,910 og getur þá gera áhugaverða hluti með það. 817 00:52:04,910 --> 00:52:09,380 Svo meira á lokaverkefnum í nokkra daga þegar við gefa út texta, 818 00:52:09,380 --> 00:52:12,990 en nú, ég veit að þú getur unnið sóló eða með einum eða tveimur vinum 819 00:52:12,990 --> 00:52:16,010 á flestum hvaða verkefni þú hefur áhuga á. 820 00:52:16,010 --> 00:52:18,080 The Internet. 821 00:52:18,080 --> 00:52:22,300 Þú ferð á undan og draga úr fartölvu, þú ferð facebook.com í fyrsta sinn, 822 00:52:22,300 --> 00:52:27,020 hafa ekki innskráður nýlega, og ýttu á Enter. Hvað gerist nákvæmlega? 823 00:52:27,020 --> 00:52:30,150 >> Þegar þú högg inn á tölvunni þinni, allt fullt af skrefum 824 00:52:30,150 --> 00:52:32,600 byrja konar dularfullur gerast. 825 00:52:32,600 --> 00:52:35,960 Svo er þú hér á vinstri, vefur framreiðslumaður eins og Facebook hér til hægri, 826 00:52:35,960 --> 00:52:42,500 og einhvern veginn að þú ert að nota þetta tungumál kallast HTTP, Hypertext Transfer Protocol. 827 00:52:42,500 --> 00:52:46,770 HTTP er ekki forritunarmál. Það er meira um siðareglur. 828 00:52:46,770 --> 00:52:52,310 Það er sett á samninga sem vefur flettitæki og vefur framreiðslumaður nota þegar intercommunicating. 829 00:52:52,310 --> 00:52:54,360 Og hvað þýðir þetta er sem hér segir. 830 00:52:54,360 --> 00:52:56,790 Margt eins og í hinum raunverulega heimi, höfum við þessar samninga 831 00:52:56,790 --> 00:53:00,140 þar sem ef þú hittir einhverja manneskju í fyrsta sinn, Ef þú dont 'hugur humoring mig hér, 832 00:53:00,140 --> 00:53:03,980 Ég gæti komið upp til þín, segja: "Hæ, ég heiti Davíð." >> Hæ, David. Ég heiti Sammy. 833 00:53:03,980 --> 00:53:05,770 "Hæ, David. Heiti Sammy." 834 00:53:05,770 --> 00:53:08,310 Svo nú höfum við bara þátt í þessari tegund af vitleysu manna siðareglur 835 00:53:08,310 --> 00:53:12,200 þar sem ég hef frumkvæði að siðareglur, Sammy hefur brugðist, 836 00:53:12,200 --> 00:53:15,060 við höfum hrista hendur, og viðskiptin er lokið. 837 00:53:15,060 --> 00:53:18,260 HTTP er mjög svipuð í anda. 838 00:53:18,260 --> 00:53:23,350 Þegar vefur flettitæki beiðnir www.facebook.com, 839 00:53:23,350 --> 00:53:27,020 hvaða vafra er í raun að gera er nær hendinni, svo að segja, 840 00:53:27,020 --> 00:53:29,960 við miðlara og það er að senda það skilaboð. 841 00:53:29,960 --> 00:53:34,220 Og skilaboðin eru oftast eitthvað eins og að fá - hvað viltu fá? - 842 00:53:34,220 --> 00:53:38,740 fá mig á heimasíðuna, sem er yfirleitt táknað með einu skástriki í lok vefslóð. 843 00:53:38,740 --> 00:53:43,790 Og bara svo þú vitir hvað tungumál sem ég er að tala, ég er að vafra að fara að segja þér 844 00:53:43,790 --> 00:53:46,930 sem ég er að tala HTTP útgáfa 1,1, 845 00:53:46,930 --> 00:53:51,980 Og einnig fyrir gott mál, ætla ég að segja þér að vélin sem ég vil á heimasíðu 846 00:53:51,980 --> 00:53:54,120 er facebook.com. 847 00:53:54,120 --> 00:53:57,730 Venjulega, a vefur flettitæki, unbeknownst þér, manna, 848 00:53:57,730 --> 00:54:03,350 sendir þessi skilaboð yfir internetið þegar þú slærð einfaldlega www.facebook.com, 849 00:54:03,350 --> 00:54:05,370 >> Sláðu inn í vafrann þinn. 850 00:54:05,370 --> 00:54:07,300 Og hvað er Facebook bregðast við? 851 00:54:07,300 --> 00:54:12,540 Það svarar með einhverjum svipuð-útlit dulinn upplýsingar en einnig margt fleira. 852 00:54:12,540 --> 00:54:14,310 Leyfðu mér að fara á undan á heimasíðu Facebook hér. 853 00:54:14,310 --> 00:54:17,480 Þetta er skjár sem flest okkar sennilega aldrei sjá hvort þú vera skráður í allan tímann, 854 00:54:17,480 --> 00:54:19,830 en þetta er örugglega heimasíða þeirra. 855 00:54:19,830 --> 00:54:24,150 Ef við gerum það í Króm, eftir að þú getur draga upp þessa litlu valmyndir samhengi. 856 00:54:24,150 --> 00:54:26,980 Using Chrome, hvort sem er á Mac OS, Windows, Linux, eða þess háttar, 857 00:54:26,980 --> 00:54:31,840 ef þú stjórna smella eða vinstri smell, getur þú yfirleitt draga upp valmynd sem lítur svona út, 858 00:54:31,840 --> 00:54:35,870 þar nokkrir möguleikar bíða, einn sem er View Page Source. 859 00:54:35,870 --> 00:54:39,920 Þú getur líka yfirleitt fá að þessum hlutum með því að fara í View valmyndinni og poking í kring. 860 00:54:39,920 --> 00:54:42,750 Til dæmis, hér undir View, Hönnuður er sama. 861 00:54:42,750 --> 00:54:45,780 Ég ætla að fara á undan og horfa á View Page Source. 862 00:54:45,780 --> 00:54:50,800 Það sem þú munt sjá er HTML sem Mark hefur skrifað til að tákna facebook.com. 863 00:54:50,800 --> 00:54:55,910 Það er heill óreiðu hér, en við munum sjá að þetta gerir lítið meira vit fyrir löngu. 864 00:54:55,910 --> 00:54:59,840 En það eru sumir mynstur hér. Leyfðu mér að fletta niður til að efni eins og þetta. 865 00:54:59,840 --> 00:55:05,730 Þetta er erfitt fyrir manneskju að lesa, en taka eftir því að það er þetta mynstur af horn sviga 866 00:55:05,730 --> 00:55:10,360 með leitarorðum eins og valkostur, leitarorð eins og gildi, sumir vitnað strengi. 867 00:55:10,360 --> 00:55:15,660 Þetta er þar, þegar þú skráðir þig í fyrsta sinn, tilgreint hvaða fæðingarár er. 868 00:55:15,660 --> 00:55:19,020 Að falla-dúnn matseðill ár fæðingu er einhvern veginn kóðuð hér 869 00:55:19,020 --> 00:55:23,870 í þessu máli sem heitir HTML, Hypertext Markup Language. 870 00:55:23,870 --> 00:55:27,730 Með öðrum orðum, þegar vafrinn þinn óskar eftir vefsíðu, 871 00:55:27,730 --> 00:55:30,610 það talar þessa venju sem heitir HTTP. 872 00:55:30,610 --> 00:55:35,170 En hvað þýðir facebook.com bregðast við þeirri beiðni með? 873 00:55:35,170 --> 00:55:38,260 >> Það bregst við sumum þessara dulinn skilaboð, eins og við munum sjá í smá stund. 874 00:55:38,260 --> 00:55:43,760 En af viðbrögðum þess er í formi HTML, Hypertext Markup Language. 875 00:55:43,760 --> 00:55:47,170 Það er í raun tungumál þar sem vefsíða er skrifuð. 876 00:55:47,170 --> 00:55:52,030 Og hvað vefur flettitæki raunverulega hjartarskinn þá, að fenginni eitthvað sem lítur út eins og þetta, 877 00:55:52,030 --> 00:55:57,120 les það toppur til botn, vinstri til hægri, og hvenær sem það sér einn af þessum horn sviga 878 00:55:57,120 --> 00:56:03,370 fylgt eftir með leitarorð eins og valkostur, sýnir það að ívafsmálið viðeigandi hátt. 879 00:56:03,370 --> 00:56:06,820 Í þessu tilfelli, myndi það sýna a falla-dúnn matseðill á árum. 880 00:56:06,820 --> 00:56:09,240 En aftur, þetta er heill óreiðu til að líta á. 881 00:56:09,240 --> 00:56:16,630 Þetta er ekki vegna þess að Facebook verktaki farmskrá 0 til 5 fyrir stíl, til dæmis. 882 00:56:16,630 --> 00:56:20,190 Þetta er vegna þess að flest af þeim kóða sem þeir skrifa er í raun skrifað fallega, 883 00:56:20,190 --> 00:56:22,450 vel athugasemd, fallega grafin, og eins, 884 00:56:22,450 --> 00:56:26,080 en vélar sjálfsögðu tölvur, vafra virkilega gefa ekki fjandinn 885 00:56:26,080 --> 00:56:27,890 hvort númerið er vel stíll. 886 00:56:27,890 --> 00:56:33,100 Og í raun er það alveg sóun að högg á Tab-takkann öllum þeim sinnum 887 00:56:33,100 --> 00:56:37,650 og til að setja athugasemdir allt um númerið þitt og velja mjög lýsandi breytu nöfn 888 00:56:37,650 --> 00:56:42,340 því ef vafrinn er ekki sama, það eina sem þú ert að gera í lok dagsins er eyðileggjandi bæti. 889 00:56:42,340 --> 00:56:46,660 >> Svo kemur í ljós það sem flestir vefsíður gera er þó kóðinn fyrir facebook.com, 890 00:56:46,660 --> 00:56:49,550 fyrir cs50.net og allar þessar aðrar vefsíður á Internetinu 891 00:56:49,550 --> 00:56:53,730 eru yfirleitt vel skrifuð og vel sagði og fallega indented og eins, 892 00:56:53,730 --> 00:56:59,270 yfirleitt áður en vefsvæðið er sett á Netið er númerinu minified, 893 00:56:59,270 --> 00:57:02,970 þar sem HTML og CSS - eitthvað annað sem við munum fljótlega sjá - 894 00:57:02,970 --> 00:57:05,960 JavaScript kóða við munum fljótlega sjá er þjappað, 895 00:57:05,960 --> 00:57:09,250 þar lengi breytu nöfn verða X og Y og Z, 896 00:57:09,250 --> 00:57:13,900 og öll þessi bil sem gerir allt líta svo læsileg er allt hent, 897 00:57:13,900 --> 00:57:17,700 því ef þú hugsar um það með þessum hætti, Facebook fær milljarð síðu hits á dag - 898 00:57:17,700 --> 00:57:21,670 eitthvað brjálaður eins og þessi - svo hvað ef forritarinn bara til að vera anal 899 00:57:21,670 --> 00:57:26,660 högg the bar rúm einn auka tíma bara til að draga einhverja línu af kóða alltaf svo miklu meira? 900 00:57:26,660 --> 00:57:29,500 Hvað er óbeint ef Facebook varðveitir að stafabil 901 00:57:29,500 --> 00:57:32,880 í öllum bæti þeir senda til baka til fólks á Netinu? 902 00:57:32,880 --> 00:57:36,400 Hitting á bil bar þegar gefur þér auka bæti í skránni þinni. 903 00:57:36,400 --> 00:57:39,730 Og ef milljarðar manna halda áfram þá til að sækja heimasíðu um daginn, 904 00:57:39,730 --> 00:57:42,060 hversu mikið fleiri gögn hefur þú send yfir Internetið? 905 00:57:42,060 --> 00:57:45,200 A Gígabæti fyrir neitun góður ástæða. 906 00:57:45,200 --> 00:57:48,510 Og veitt, fyrir a einhver fjöldi af websites er ekki svo stigstærð mál, 907 00:57:48,510 --> 00:57:51,030 en Facebook, fyrir Google, fyrir sumir af the vinsæll vefsíður 908 00:57:51,030 --> 00:57:54,860 Það er mikill hvati fé til að gera númerið þitt útlit eins og óreiðu 909 00:57:54,860 --> 00:57:58,980 þannig að þú ert að nota sem fáir bytes sem hægt er til viðbótar við þá þjappa það 910 00:57:58,980 --> 00:58:01,500 að nota eitthvað eins og zip, reiknirit sem kallast gzip, 911 00:58:01,500 --> 00:58:04,250 að vafrinn virkar fyrir þig sjálfkrafa. En þetta er hræðilegt. 912 00:58:04,250 --> 00:58:08,060 Við munum aldrei læra neitt um vefsíður annarra og hvernig á að hanna vefsíður 913 00:58:08,060 --> 00:58:09,680 Ef við verðum að líta á það svona. 914 00:58:09,680 --> 00:58:13,620 >> Svo sem betur fer, vafra eins Króm og IE og Firefox þessa dagana 915 00:58:13,620 --> 00:58:16,450 yfirleitt koma með innbyggður-í verktaki verkfæri. 916 00:58:16,450 --> 00:58:21,730 Í staðreynd, ef ég fer niður að skoða þátt eða ef ég fer að skoða, verktaki, 917 00:58:21,730 --> 00:58:25,220 og fara í Developer Tools sérstaklega, 918 00:58:25,220 --> 00:58:27,640 Þessi gluggi neðst á skjánum mínum birtist nú upp. 919 00:58:27,640 --> 00:58:31,230 Það er svolítið erfið í fyrstu vegna þess að það er mikið af framandi flipa hér, 920 00:58:31,230 --> 00:58:34,510 en ef ég smelli á þætti alla leið neðst til vinstri, 921 00:58:34,510 --> 00:58:38,810 Chrome er augljóslega mjög klár. Það veit hvernig á að túlka alla þessa kóða. 922 00:58:38,810 --> 00:58:42,320 Og svo hvað Króm gerir það hreinsar upp öll HTML Facebook. 923 00:58:42,320 --> 00:58:45,680 Jafnvel þó að það er ekki bil þarna, það er ekki inndrátt þar, 924 00:58:45,680 --> 00:58:51,120 nú eftir að ég er að byrja að sigla þessa vefsíðu allt meira hierarchically. 925 00:58:51,120 --> 00:58:56,910 Það kemur í ljós að sérhver vefur blaðsíða skrifuð á tungumáli sem kallast HTML5 ætti að byrja á þessu, 926 00:58:56,910 --> 00:59:03,980 þetta DOCTYPE yfirlýsingu, svo að segja: 927 00:59:03,980 --> 00:59:07,840 Það er góður af ljós og grár þar, en það er mjög fyrstur lína af kóða í þessari skrá, 928 00:59:07,840 --> 00:59:12,080 og það segir bara vafrann, "Hey, hér kemur smá HTML5. Hér kemur á vefsíðu." 929 00:59:12,080 --> 00:59:18,490 Fyrsta opna krappi umfram það verður að vera þessi hlutur, opið krappi HTML tag, 930 00:59:18,490 --> 00:59:22,320 og svo ef ég kafa í dýpri - þessar örvar eru alveg tilgangslaust; 931 00:59:22,320 --> 00:59:25,140 þeir eru bara fyrir sakir kynningu, eru þeir í raun ekki á skrá - 932 00:59:25,140 --> 00:59:30,300 taka eftir því að inni í HTML tag Facebook, nokkuð sem byrjar með opnum krappi 933 00:59:30,300 --> 00:59:32,910 og síðan hefur orðið er kallað merki. 934 00:59:32,910 --> 00:59:38,610 Svo er inni í HTML tag greinilega höfuð merki og líkami tag. 935 00:59:38,610 --> 00:59:41,930 Inni í höfði tag er nú allt sóðaskapur á Facebook 936 00:59:41,930 --> 00:59:45,620 vegna þess að þeir hafa a einhver fjöldi af lýsigögn og aðra hluti fyrir markaðssetningu og auglýsingar. 937 00:59:45,620 --> 00:59:50,600 >> En ef við skruna niður, niður, niður, niður, við skulum sjá hvar það er. Hér er það. 938 00:59:50,600 --> 00:59:52,210 Þessi er að minnsta kosti nokkuð kunnuglegt. 939 00:59:52,210 --> 00:59:55,990 Titillinn á heimasíðu Facebook, ef þú lítur alltaf á flipann í bar titill þinn, 940 00:59:55,990 --> 00:59:59,060 er velkomið að Facebook - Log In, Nýskráning eða Læra meira. 941 00:59:59,060 --> 01:00:01,110 Það er það sem þú vilt sjá í titilstika Króm ', 942 01:00:01,110 --> 01:00:03,100 og það er hvernig það er fulltrúa í kóða. 943 01:00:03,100 --> 01:00:08,090 Ef við hunsa allt annað í höfuðið, eru flest hugaður af vefsíðu í líkamanum, 944 01:00:08,090 --> 01:00:10,940 og það kemur í ljós að númerið Facebook er að fara að líta flóknari 945 01:00:10,940 --> 01:00:14,540 en flestir sem við munum skrifa í upphafi bara vegna þess að það hefur verið byggt upp á undanförnum árum, 946 01:00:14,540 --> 01:00:17,260 en það er allt fullt af tags handrit, JavaScript kóða, 947 01:00:17,260 --> 01:00:18,870 sem gerir website mjög gagnvirk: 948 01:00:18,870 --> 01:00:22,330 sjá stöðuuppfærslur samstundis nota tungumál eins og JavaScript. 949 01:00:22,330 --> 01:00:25,270 Það er eitthvað sem kallast div, sem er deild á síðunni. 950 01:00:25,270 --> 01:00:27,940 En áður en við komum til að smáatriðum, skulum reyna að minnka 951 01:00:27,940 --> 01:00:31,920 og líta á einfaldari útgáfu af Facebook 1,0, svo að segja. 952 01:00:31,920 --> 01:00:34,740 Hér er halló, heimur af vefsíðum. 953 01:00:34,740 --> 01:00:37,370 Það hefur að DOCTYPE yfirlýsingu á mjög efst 954 01:00:37,370 --> 01:00:40,280 sem er svolítið öðruvísi en allt annað. 955 01:00:40,280 --> 01:00:46,130 Ekkert annað við að skrifa á vefsíðu er að fara að byrja með 01:00:48,880 og nema um eitthvað sem kallast athugasemdir í HTML. 957 01:00:48,880 --> 01:00:53,000 En að mestu leyti, allt í a vefur blaðsíða er opinn krappi, leitarorð, loka krappi. 958 01:00:53,000 --> 01:00:56,220 >> Í þessu tilviki getur þú séð einföldustu vefsíðum mögulegt. 959 01:00:56,220 --> 01:01:00,260 HTML merki inniheldur höfuð tag og það inniheldur líkami tag, 960 01:01:00,260 --> 01:01:04,580 en taka eftir því að það er þetta hugmynd að byrja og stöðva merki. 961 01:01:04,580 --> 01:01:11,360 Þetta er að byrja tag fyrir HTML, þetta er loka merki eða enda merkinu. 962 01:01:11,360 --> 01:01:15,400 Takið eftir að þeir eru eins konar andstæðum í þeim skilningi að loka merki eða lokamerkinu 963 01:01:15,400 --> 01:01:20,030 hefur þetta rista fram inni í sjálfu sér. 964 01:01:20,030 --> 01:01:23,540 Á sama tíma, það er opið höfuð merki hér og náinn höfuð merki hér. 965 01:01:23,540 --> 01:01:26,880 >> Það er opinn titill og náinn titill tag hér. 966 01:01:26,880 --> 01:01:29,850 Sú staðreynd að ég hef sett titil á einni línu, eingöngu handahófskennt. 967 01:01:29,850 --> 01:01:33,760 Það virtist eins og það myndi passa vel á eina línu, svo ég gerði ekki nennir hitting inn í nokkur skipti. 968 01:01:33,760 --> 01:01:38,200 Á sama tíma, undirlið líkaminn ég gerði bara að vera alltaf svo skýr. 969 01:01:38,200 --> 01:01:41,050 Takið eftir því að HTML er mjög heimsk tungumál. 970 01:01:41,050 --> 01:01:43,410 Í staðreynd, aftur í dag fyrir voru WYSIWYG ritstjórar 971 01:01:43,410 --> 01:01:46,770 og Microsoft Word þar sem þú getur sagt: "Gerðu þetta feitletrað, Gerðu þessa skáletrun," 972 01:01:46,770 --> 01:01:50,850 þú vildi raunverulega slá litla stjórn á ritgerðum 20 + árum 973 01:01:50,850 --> 01:01:55,740 þannig að þú myndir segja, "Byrja að gera þetta Textinn feitletraðar. Hættu að þessi texti feitletraðar." 974 01:01:55,740 --> 01:01:59,010 "Byrja að gera þennan texta skáletrun. Hættu að þessum texta skáletrun." 975 01:01:59,010 --> 01:02:01,850 >> Það er það sem HTML eða Markup Language er. 976 01:02:01,850 --> 01:02:05,530 Þetta fyrsta merki segir "Hey, vafrinn. Hér kemur smá HTML-kóða." 977 01:02:05,530 --> 01:02:09,880 Næsta merki segir "Hey, vafrinn. Hér kemur höfuð, haus vefsíðu mína." 978 01:02:09,880 --> 01:02:11,650 "Hey, vafrinn. Hér kemur titilinn." 979 01:02:11,650 --> 01:02:15,880 Og svo hérna, "Hey, vafrinn. Það er það um titilinn." 980 01:02:15,880 --> 01:02:20,000 Svo er þetta hvernig vafrinn veit að ekki lengur sýna fleiri stafi en halló, heimur 981 01:02:20,000 --> 01:02:21,860 í titli bar. 982 01:02:21,860 --> 01:02:23,640 Á sama tíma, það segir: "Þetta er það fyrir höfuð." 983 01:02:23,640 --> 01:02:28,340 Þetta segir, "Hér kemur líkamanum Hér er í raun líkami." - Bókstaflega, orðin halló, heimur. 984 01:02:28,340 --> 01:02:33,190 Og þetta segir hér: "Það er það fyrir líkamann. Það er það fyrir HTML." 985 01:02:33,190 --> 01:02:34,640 Svo vafrar eru nokkuð heimsk. 986 01:02:34,640 --> 01:02:39,920 Þeir lesa bara þetta dót efst til botn, vinstri til hægri, og gera nákvæmlega það sem þeim er sagt að gera. 987 01:02:39,920 --> 01:02:41,860 Við skulum í raun gera smá dæmi hérna. 988 01:02:41,860 --> 01:02:46,240 Leyfðu mér að opna einföldustu forrit á Mac minn hér, þ.e. TextEdit. 989 01:02:46,240 --> 01:02:48,220 Á Windows þú getur notað Notepad.exe. 990 01:02:48,220 --> 01:02:50,520 En þetta er allt sem þú þarft til að byrja að gera vefsíður. 991 01:02:50,520 --> 01:02:53,730 Ég ætla að fara á undan og bara að afrita og líma þennan kóða inn í þessa skrá. 992 01:02:53,730 --> 01:02:57,210 Ég ætla að fara á undan og vista hana á skjáborðinu mínu, 993 01:02:57,210 --> 01:03:01,220 og ég ætla að vista þetta sem hello.html, 994 01:03:01,220 --> 01:03:03,840 og nú skrá heitir hello.html. 995 01:03:03,840 --> 01:03:05,690 Hér er það á skjáborðið. 996 01:03:05,690 --> 01:03:11,130 Leyfðu mér að fara nú inn í vafrann og draga skrána inn í vafrann. 997 01:03:11,130 --> 01:03:14,060 Og voila, hér er mjög fyrstu vefsíðuna mína. 998 01:03:14,060 --> 01:03:17,340 Takið eftir því að titillinn á flipanum er halló, heimur sem á titli tag, 999 01:03:17,340 --> 01:03:20,040 Athugið að halló, heimur er líkami vefsíðu mína, 1000 01:03:20,040 --> 01:03:22,190 og Woo-Hoo, ég er á netinu. 1001 01:03:22,190 --> 01:03:24,700 >> Ég er ekki í raun, ekki satt, vegna þess að þessi skrá er ekki á netinu. 1002 01:03:24,700 --> 01:03:28,330 Það gerist að vera á harða diskinn á viðkomandi braut. 1003 01:03:28,330 --> 01:03:32,720 En hugmyndin er sú sama. Allt sem við þurfum nú er vefur framreiðslumaður sem á að senda það. 1004 01:03:32,720 --> 01:03:37,410 En fyrst skulum raunverulega kynna aðeins meiri flókið og aðeins meiri stylization. 1005 01:03:37,410 --> 01:03:39,890 Þetta er einfalt, ef leiðinlegt, vefur blaðsíða. 1006 01:03:39,890 --> 01:03:41,990 Það kemur í ljós að það eru aðrar gerðir af merkjunum sem við getum notað. 1007 01:03:41,990 --> 01:03:45,530 Til dæmis hér í gulu Ég hef kynnt 2 nýjar merkingar. 1008 01:03:45,530 --> 01:03:49,630 Við munum ekki spila mikið með þessum í dag, en eftir að tengja merki 1009 01:03:49,630 --> 01:03:52,520 einhvern veginn lítur öðruvísi frá öðrum. 1010 01:03:52,520 --> 01:03:55,370 The hlekkur Tag tekur það sem kallast eiginleika, 1011 01:03:55,370 --> 01:03:59,770 og eiginleiki er eitthvað sem breytir hegðun merki. 1012 01:03:59,770 --> 01:04:03,840 Í þessu tilfelli er þetta ekki besti kosturinn af nöfnum, hlekkur, því það er góður af tilgangslaust, 1013 01:04:03,840 --> 01:04:11,590 en þennan tengil merki segir í raun, fela í sér skrá sem kallast styles.css innan vefsíðu mína. 1014 01:04:11,590 --> 01:04:15,400 Þú getur hugsað þetta eins og hliðstætt er C # include tilskipun. 1015 01:04:15,400 --> 01:04:19,650 Styles.css vísar til mismunandi tungumál með öllu að við munum ekki spila við í dag, 1016 01:04:19,650 --> 01:04:23,790 en það er fyrir fagurfræði: letur, liti, padding, skerðing, álagningu, 1017 01:04:23,790 --> 01:04:26,040 og öll þessi tegund af fagurfræði smáatriðum. 1018 01:04:26,040 --> 01:04:28,820 Á sama tíma, handritið tag er virkni svipuð, 1019 01:04:28,820 --> 01:04:33,140 heldur en fela CSS, sem tungumál, nær það annað tungumál, JavaScript. 1020 01:04:33,140 --> 01:04:37,810 Svo í öðrum orðum, með þessum 2 merkjum sem ég mun að lokum vera fær um að skrifa eigin vefsíðu mína 1021 01:04:37,810 --> 01:04:41,490 en einnig draga í kóða sem ég eða einhver annar hefur skrifað 1022 01:04:41,490 --> 01:04:44,350 svo að við getum staðið á herðum annarra, getum við æfa góða hönnun, 1023 01:04:44,350 --> 01:04:46,120 Factoring út sameiginlega kóða. 1024 01:04:46,120 --> 01:04:49,090 Ef ég hef fengið 10 mismunandi vefsíðum, þetta þýðir að sum af fagurfræði mínum 1025 01:04:49,090 --> 01:04:52,490 getur verið þáttur út, líkt og # include, í sérstakri skrá. 1026 01:04:52,490 --> 01:04:54,420 Þannig að við erum að fá þarna. 1027 01:04:54,420 --> 01:04:57,180 En við skulum í raun fyrst að gera eitthvað meira áhugavert með þessari skrá. 1028 01:04:57,180 --> 01:05:01,110 >> Aftur, þetta er bara TextEdit. Ég er ekki tæknilega á Netinu enn, en við munum fá það. 1029 01:05:01,110 --> 01:05:04,910 Mig langar að gera Hello, world örlítið djarfari en það er. 1030 01:05:04,910 --> 01:05:10,890 Svo halló, skulum geðþótta segja fyrir feitletrun. 1031 01:05:10,890 --> 01:05:15,910 Aftur, er sagan sú sama: Halló, komma, byrja að gera þetta feitletrað, 1032 01:05:15,910 --> 01:05:19,730 þá heimurinn fær prentuð í feitletrað, og þetta þýðir að hætta prentun þetta í feitletrað. 1033 01:05:19,730 --> 01:05:24,020 Leyfðu mér að fara á undan og vista þessa skrá mína, fara aftur í Chrome, ég stækka bara svo við getum séð það betra, 1034 01:05:24,020 --> 01:05:27,870 og endurhlaða, og þú munt sjá að heimurinn er nú feitletraður. 1035 01:05:27,870 --> 01:05:31,810 The Web er allt um tengla, þannig að við skulum fara á undan og gera þetta: 1036 01:05:31,810 --> 01:05:38,550 Uppáhalds vefsíðan mín er, við skulum segja, youtube.com. 1037 01:05:38,550 --> 01:05:43,810 Vista, endurhlaða. Allt í lagi. There 'a par vandamál nú auk hideousness af the website. 1038 01:05:43,810 --> 01:05:47,310 1, ég er nokkuð viss um að ég lenti inn hér. Og ég gerði. 1039 01:05:47,310 --> 01:05:51,590 Ég ekki bara högg inn, ég grafin líka, að æfa það sem við höfum verið að predika um stíl, 1040 01:05:51,590 --> 01:05:54,930 en minn er rétt við hliðina á heiminum. 1041 01:05:54,930 --> 01:05:58,410 Svo hvers vegna er þetta? Vafrar gera aðeins það sem þú segir þeim að gera. 1042 01:05:58,410 --> 01:06:04,010 Ég hef ekki sagt að vafra, "Break línur hér. Settu málsgrein brot hér." 1043 01:06:04,010 --> 01:06:07,820 Svo vafra, það skiptir ekki máli ef ég lenti aftur 30 sinnum, 1044 01:06:07,820 --> 01:06:10,820 það er samt að fara að setja rétt minn við hliðina á heiminum. 1045 01:06:10,820 --> 01:06:15,930 Það sem ég hef í raun að gera hér er að segja eitthvað eins og br, setja línu brot. 1046 01:06:15,930 --> 01:06:17,940 >> Og í raun, línu brot er góður af furðulegur hlutur 1047 01:06:17,940 --> 01:06:21,650 vegna þess að þú getur í raun ekki byrjað að færa til annarra, þá gera eitthvað, 1048 01:06:21,650 --> 01:06:25,380 og þá hættir að flytja í nýja línu. Það er góður af lotukerfinu aðgerð. 1049 01:06:25,380 --> 01:06:28,140 Þú gera annað hvort það eða þú hefur ekki. Þú högg inn eða þú hefur ekki. 1050 01:06:28,140 --> 01:06:33,390 Svo er BR a lítill hluti af a mismunandi merki, og svo að ég þarf að raða í bæði opna og loka því 1051 01:06:33,390 --> 01:06:35,230 allt í einu. 1052 01:06:35,230 --> 01:06:37,500 The setningafræði fyrir það er þetta. 1053 01:06:37,500 --> 01:06:41,760 Tæknilega, gætir þú gert eitthvað svona í sumum útgáfum af HTML, 1054 01:06:41,760 --> 01:06:45,600 en þetta er bara heimskulegt því að það er engin ástæða til þess að byrja og stöðva eitthvað 1055 01:06:45,600 --> 01:06:48,420 ef þú getur í staðinn að gera það allt í einu. 1056 01:06:48,420 --> 01:06:52,310 Gera sér grein fyrir að HTML5 ekki stranglega krafist þessa rista, 1057 01:06:52,310 --> 01:06:55,410 svo þú verður að sjá kennslubækur og online auðlindir sem ekki hafa það, 1058 01:06:55,410 --> 01:06:59,780 en gott mál skulum æfa samhverfu sem við höfum séð hingað til. 1059 01:06:59,780 --> 01:07:02,870 Þetta þýðir að merki er bæði opnað og lokað. 1060 01:07:02,870 --> 01:07:05,220 Svo nú láta mig spara skrána mína, fara til baka hér. 1061 01:07:05,220 --> 01:07:10,240 Jæja, svo það er að byrja að líta betur út, nema á vefnum sem ég veit að er góður af smella, 1062 01:07:10,240 --> 01:07:13,610 og enn æska hér virðist ekki leiða til neitt. 1063 01:07:13,610 --> 01:07:17,560 Það er vegna þess að jafnvel þó að það lítur út eins og a hlekkur, vafrinn ekki vita að í sjálfu sér, 1064 01:07:17,560 --> 01:07:20,670 svo ég verð að segja vafra sem er tengill. 1065 01:07:20,670 --> 01:07:22,620 >> Leiðin til að gera þetta er að nota akkeri tag: 1066 01:07:22,620 --> 01:07:26,770 01:07:35,900 = "Http://www.youtube.com"> 1068 01:07:35,900 --> 01:07:38,490 og láta mig færa þetta til nýja línu bara svo það er aðeins meira læsileg, 1069 01:07:38,490 --> 01:07:40,060 og ég ætla að skreppa leturstærð. 1070 01:07:40,060 --> 01:07:43,890 Er ég að gera enn? Nei Það er að fara að vera svona dichotomy. 1071 01:07:43,890 --> 01:07:46,760 Þetta merki, akkeri tag, hefur örugglega tekið eiginleika, 1072 01:07:46,760 --> 01:07:52,900 sem breytir hegðun þess og gildi þess eiginleika er greinilega URL YouTube. 1073 01:07:52,900 --> 01:07:56,380 En eftir á slag er að bara vegna þess að það er URL sem þú ert að fara til, 1074 01:07:56,380 --> 01:08:01,020 það þýðir ekki að að vera orðið sem þú ert að undirstrika og gera tengil. 1075 01:08:01,020 --> 01:08:03,960 Frekar, það getur verið eitthvað eins og this. 1076 01:08:03,960 --> 01:08:10,870 Þannig að ég verð að segja að hætta að gera þetta orð stikla því að nota loka akkeri merkinu. 1077 01:08:10,870 --> 01:08:12,650 Tilkynning Ég er ekki að gera þetta. 1078 01:08:12,650 --> 01:08:15,890 1, þetta myndi bara vera tímasóun allra og það er ekki nauðsynlegt. 1079 01:08:15,890 --> 01:08:19,290 >> Til að loka á merki, minnst þú aðeins nafn á tag aftur. 1080 01:08:19,290 --> 01:08:21,800 Þú nefnir ekkert af eiginleikum. 1081 01:08:21,800 --> 01:08:26,189 Svo skulum spara að fara til baka. Jæja, voila, nú er það blátt og vefslóðartengdar. 1082 01:08:26,189 --> 01:08:29,430 Ef ég smelli á það, ég reyndar að fara á YouTube. 1083 01:08:29,430 --> 01:08:32,529 Svo jafnvel þótt vefsíða mín er ekki á netinu, það er að minnsta kosti HTML, 1084 01:08:32,529 --> 01:08:37,930 og ef við láta Internet veiða upp, myndum við í raun á endanum hér á youtube.com. 1085 01:08:37,930 --> 01:08:40,670 Og ég get farið aftur og hér er vefsíðan mín. En eftir þetta. 1086 01:08:40,670 --> 01:08:43,120 Ef þú hefur einhvern tíma fengið ruslpóst eða phishing árás, 1087 01:08:43,120 --> 01:08:45,850 nú hefur þú möguleika eftir aðeins fimm mínútur til að gera slíkt hið sama. 1088 01:08:45,850 --> 01:08:50,920 Við getum farið hér og gera eitthvað eins www.badguy.com 1089 01:08:50,920 --> 01:08:59,319 eða hvað er sketchy website, og þá er hægt að segja að staðfesta PayPal reikninginn þinn. 1090 01:08:59,319 --> 01:09:04,840 [Hlátur] Og nú er þetta að fara að fara til badguy.com, sem ég ætla ekki að fara að smella á 1091 01:09:04,840 --> 01:09:08,000 vegna þess að ég hef ekki hugmynd um hvar það leiðir. [Hlátur] 1092 01:09:08,000 --> 01:09:10,859 >> En við höfum nú getu til raunverulega endað þar. 1093 01:09:10,859 --> 01:09:12,640 Þannig að við erum í raun bara að byrja að klóra í yfirborðið. 1094 01:09:12,640 --> 01:09:15,830 Við erum ekki að forritun í sjálfu, við erum að skrifa Markup Language. 1095 01:09:15,830 --> 01:09:18,569 En um leið og við umferð út orðaforða okkar í HTML, 1096 01:09:18,569 --> 01:09:21,520 munum við kynna PHP, raunveruleg forritun tungumál 1097 01:09:21,520 --> 01:09:26,859 sem mun gera okkur kleift að búa til HTML sjálfkrafa mynda CSS sjálfkrafa, 1098 01:09:26,859 --> 01:09:29,430 svo að við getum byrjað á miðvikudaginn til að framkvæma, segja, 1099 01:09:29,430 --> 01:09:31,700 eigin leitarvél okkar og fleira. 1100 01:09:31,700 --> 01:09:34,770 En meira um það í nokkra daga. Við sjáumst þá. 1101 01:09:34,870 --> 01:09:39,000 >> [CS50.TV]