1 00:00:00,000 --> 00:00:02,440 [Powered by Google Translate] [Java 7] 2 00:00:02,440 --> 00:00:04,730 [David J. Malan - Universiteti i Harvardit] 3 00:00:04,730 --> 00:00:07,490 [Kjo është CS50. - CS50.TV] 4 00:00:07,490 --> 00:00:12,280 Dakord. Mirëpritur mbrapa. Kjo është CS50, dhe kjo është fillimi i javës 7. 5 00:00:12,280 --> 00:00:14,690 Një çift i njoftimeve pak: 6 00:00:14,690 --> 00:00:18,150 Pset5 është tani në progres, ose së shpejti do të jetë, 7 00:00:18,150 --> 00:00:21,590 dhe më lejoni të them, krejt sinqerisht, kjo nuk priren të jenë në mesin e më sfiduese 8 00:00:21,590 --> 00:00:24,460 e përcakton Kursi është problemi, kështu që më lejoni të përmend këtë tani 9 00:00:24,460 --> 00:00:28,190 kështu që këtë javë më shumë se kurrë ju nuk prisni deri, të themi, të mërkurën natën 10 00:00:28,190 --> 00:00:29,920 apo natën e enjte të zhyten in 11 00:00:29,920 --> 00:00:32,369 Kjo është padyshim një pset interesante. Ne mendojmë se kjo është argëtim. 12 00:00:32,369 --> 00:00:36,110 Nëse jeni të vërtetë të merrni atë plotësisht e saktë dhe pastaj mund të sfidojnë Bordin ashtuquajturin Big, 13 00:00:36,110 --> 00:00:39,830 ju do të keni një mundësi që të shkojë lajthis me disa prej stafit të kursit të 14 00:00:39,830 --> 00:00:41,620 dhe disa nga shokët e klasës tuaj. 15 00:00:41,620 --> 00:00:44,670 Çfarë Bordi i madh është është një herë ju keni spell-checker punës tuaj, 16 00:00:44,670 --> 00:00:48,860 ju do të jetë në gjendje për të shkuar në cs50.net pas drejtimin e një komandë, 17 00:00:48,860 --> 00:00:52,430 thjesht të zgjedhë në, dhe atëherë shuma e kohës dhe sasia e RAM dhe më shumë 18 00:00:52,430 --> 00:00:56,130 që keni përdorur në zbatimin e juaj do të ekspozohen këtu në faqen e kursit në shtëpi. 19 00:00:56,130 --> 00:00:59,740 Ju do të vëreni se një bandë e tërë e këtyre folks këtu janë të listuara si staf 20 00:00:59,740 --> 00:01:04,220 pasi gjatë fundjavës, stafi mendoi se do të jetë kënaqësi për të përpiqen të mposht njëri-tjetrin. 21 00:01:04,220 --> 00:01:07,390 Pra, të kuptojnë se qëllimi këtu nuk është të mposht stafin. 22 00:01:07,390 --> 00:01:09,790 Edhe unë jam këtu vetëm në numrin 13. 23 00:01:09,790 --> 00:01:13,790 Thjesht të zgjedhë në, por kjo është një mundësi për të parë se sa RAM pak 24 00:01:13,790 --> 00:01:16,790 dhe sa pak sekonda CPU ju mund të përdorni vis-a-vis disa nga shokët e klasës tuaj. 25 00:01:16,790 --> 00:01:20,540 >> Dhe unë do të pranoj se Michael Kevin Schmid, 26 00:01:20,540 --> 00:01:23,750 aktualisht në 1 pozicion numër si një prej TFS, 27 00:01:23,750 --> 00:01:28,120 kjo është një zbatimi që ne nuk e quajmë jetë e mundur 28 00:01:28,120 --> 00:01:32,700 duke qenë se ai është përdorur pothuajse 0 RAM dhe pothuajse 0 sekonda për ngarkimin. 29 00:01:32,700 --> 00:01:35,670 Pra, ne do të kujdeset për Kevin offline. [Qeshura] 30 00:01:35,670 --> 00:01:40,950 Ka aftësi të caktuara që Kevin është vënë në provë këtu. 31 00:01:40,950 --> 00:01:45,280 Një nga gjërat që ne menduam se do të bëjë shumë është tani CS50x është një javë në vazhdim, 32 00:01:45,280 --> 00:01:49,520 dhe ju djema jeni sa më shumë pjesë e këtij eksperimenti si ato janë studentë. 33 00:01:49,520 --> 00:01:53,720 Ne kemi kërkuar ato si pjesë e pset0 tyre, e cila ishte në mënyrë të ngjashme për të paraqitur një projekt zeroja 34 00:01:53,720 --> 00:01:58,280 në interes të tyre - një lojë, një pjesë interaktive të artit, një animacion, ose si - 35 00:01:58,280 --> 00:02:03,700 a 1 - video për 2-minuta, në qoftë se ata do të donte, duke thënë përshëndetje për botën dhe që ata në fakt janë. 36 00:02:03,700 --> 00:02:06,780 Unë mendova se do të ndajnë me ju vetëm një e dy videot që janë paraqitur deri më tani 37 00:02:06,780 --> 00:02:10,759 sepse për ne, në stafin paktën, ajo me të vërtetë ka qenë emocionuese 38 00:02:10,759 --> 00:02:14,220 dhe frymëzues për të parë këto folks nga e gjithë bota - vende në të gjithë botën - 39 00:02:14,220 --> 00:02:18,160 akordim në të, të të gjitha gjërave, për një kurs të shkencave kompjuterike në internet, 40 00:02:18,160 --> 00:02:20,410 nëse kjo është për shkak se ata duan të vazhdojnë studimet e tyre, 41 00:02:20,410 --> 00:02:22,300 ata duan të marrin karrierën e tyre në një drejtim të ri, 42 00:02:22,300 --> 00:02:24,390 ata duan për të mbushur boshllëqet në njohuritë e tyre, 43 00:02:24,390 --> 00:02:27,190 kështu që disa nga të njëjtat arsye që ju djema ndoshta kanë qenë këtu. 44 00:02:27,190 --> 00:02:31,090 >> Kështu që unë ju jap një student të tillë këtu. Ju mund të ngrejë volumin e vetëm pak. 45 00:02:31,090 --> 00:02:35,520 Këtu është një nga parashtrimet 1-minutëshe studentit tonë. 46 00:02:35,520 --> 00:02:40,380 Përshëndetje, bota. Unë jam një student i inxhinierisë industriale këtu në Malaga, Spanjë. 47 00:02:40,380 --> 00:02:45,840 Unë jam i ngacmuar në lidhje me këtë kurs online, sepse unë dua shkenca kompjuterike, unë me të vërtetë të bëjë, 48 00:02:45,840 --> 00:02:48,880 dhe unë me të vërtetë e vlerësojmë që kam marrë për të shqyrtuar atë. 49 00:02:48,880 --> 00:02:51,940 Dhe fakti që unë mund të mësojnë të njëjta të gjithë ju djema të bëjë 50 00:02:51,940 --> 00:02:57,040 por në vend për të qenë në Harvard unë jam në Malaga, sa i tmerrshëm është kjo? 51 00:02:57,040 --> 00:03:02,040 E pra, unë jam Fernando, dhe kjo është CS50. Shih ju djema. 52 00:03:02,040 --> 00:03:07,100 [Qeshur] Një tjetër klip ne veçanti pëlqen, ju do të gjeni se ky zotëri anglisht nuk është aq e fortë. 53 00:03:07,100 --> 00:03:11,520 Ajo duket si kjo makinë kishte përkthyer, kështu që përkthimet vetë janë pak papërsosur, 54 00:03:11,520 --> 00:03:15,790 por ky ishte një nga të preferuarat tonë deri tani si. 55 00:03:25,080 --> 00:03:29,980 [♪ ♪] 56 00:03:29,980 --> 00:03:32,370 Përshëndetje, bota. [Duke folur në japonisht] 57 00:03:32,370 --> 00:03:39,830 [Unë duhet të përshëndes në japonisht anglisht, sepse është shumë e besueshme.] 58 00:03:39,830 --> 00:03:45,380 [Unë kam dorëzuar mesazhin për ju nga qyteti i Gifu, Japoni.] 59 00:03:45,380 --> 00:03:49,820 [Unë mund të jetë një student për herë të parë në 20 vjet, siç mund të shihet.] 60 00:03:49,820 --> 00:03:54,640 [Unë jam shumë mirënjohës për Universitetin e Harvardit i cili më dha këtë mundësi dhe EDX.] 61 00:03:54,640 --> 00:04:01,510 [Golf është një kitarë dhe gjëja ime e preferuar running.] [Qeshura] 62 00:04:01,510 --> 00:04:05,750 [♪ ♪] 63 00:04:05,750 --> 00:04:10,790 [Pse mendoni se unë kam qenë duke u përpjekur për të marrë pjesë në një cs50x.] 64 00:04:10,790 --> 00:04:14,990 [Universiteti i Harvardit, ajo është dëshirë im.] 65 00:04:14,990 --> 00:04:19,740 [Sidomos në qoftë se unë jam prania e largët jetuar në Japoni.] 66 00:04:19,740 --> 00:04:26,680 [Kam kërkuar të provoni menjëherë të vetëdijshëm për ekzistencën e tillë kur EDX.] 67 00:04:26,680 --> 00:04:32,500 [A nuk mendoni kështu që ju nuk lidhet me moshën e të mësuarit I.] 68 00:04:32,500 --> 00:04:38,350 [CS50 është malluar ime. Emri im është Kazu, dhe kjo është CS50.] 69 00:04:38,350 --> 00:04:43,090 [♪ ♪] [duartrokitje dhe brohoritje] 70 00:04:43,090 --> 00:04:49,220 Një e preferuar e jona ishte kjo paraqitja këtu nga dikush. 71 00:04:51,070 --> 00:04:55,380 [♪ ♪] [Malan] Google se në qoftë se ju jeni të panjohur me këtë meme. 72 00:04:55,380 --> 00:05:01,480 >> Dhe pastaj së fundi, një çift të tjerët që u bëra që ndoshta të fitojë çmimin adorable. 73 00:05:01,480 --> 00:05:06,820 [Studentët] Aww! >> [Malan] Ne do të duhet të dëgjojnë. Kjo është e shkurtër, kështu që të dëgjojnë nga afër. 74 00:05:08,580 --> 00:05:11,150 [Gjuha femra] Cili është emri yt? Louie >>. 75 00:05:11,150 --> 00:05:16,120 [Gjuha femra] Ç'është kjo? Giggles >> [] CS50. [Qeshura] 76 00:05:16,120 --> 00:05:19,510 [Malan] Ai ka dy merr, pse. 77 00:05:19,510 --> 00:05:22,240 Këtu ne do të shkojmë, e fundit. 78 00:05:23,030 --> 00:05:26,980 Emri im është Louie, dhe kjo është CS50. 79 00:05:26,980 --> 00:05:30,250 [Qeshur] Ky, pra, është CS50x. 80 00:05:30,250 --> 00:05:33,230 Faleminderit për të gjithë ata që ndër ju, ndërsa pas së bashku në shtëpi 81 00:05:33,230 --> 00:05:35,620 të cilët kanë qenë të marrin pjesë deri më tani. 82 00:05:35,620 --> 00:05:39,510 Sot, ne konkludojmë diskutimin tonë të strukturave të të dhënave, 83 00:05:39,510 --> 00:05:41,160 të paktën disa nga më themelore, 84 00:05:41,160 --> 00:05:44,760 dhe pastaj ne vazhdojmë bisedën tonë në lidhje me HTML dhe programimin e web. 85 00:05:44,760 --> 00:05:48,520 Në të vërtetë, ne kemi shpenzuar të kaluarën disa shtatë javë duke kërkuar në bazat e programimit - 86 00:05:48,520 --> 00:05:50,450 algoritme, të dhënat strukturat, dhe si - 87 00:05:50,450 --> 00:05:53,050 dhe C, si ju mund të keni përjetuar deri më tani, 88 00:05:53,050 --> 00:05:57,060 nuk është domosdoshmërisht më të arritshme e gjuhëve 89 00:05:57,060 --> 00:05:59,090 me të cilat për të zbatuar disa prej këtyre ideve. 90 00:05:59,090 --> 00:06:01,880 Dhe kështu duke filluar këtë javë dhe javën e ardhshme dhe pastaj poshtë, 91 00:06:01,880 --> 00:06:07,110 ne do të në fund të jetë në gjendje të tranzicionit nga C, i cili është i njohur përgjithësisht si një gjuhë mjaft të nivelit të ulët, 92 00:06:07,110 --> 00:06:11,190 për gjëra të nivelit të lartë, në mesin e tyre PHP, JavaScript, dhe si, 93 00:06:11,190 --> 00:06:14,850 të cilat ne do të shohim barazim mbi mësimet e njëjta që ne kemi mësuar gjatë disa javëve të fundit, 94 00:06:14,850 --> 00:06:19,430 por ju do të gjeni se shpallja e gjëra të tilla si vargjeve dhe tavolina hash dhe të kërkoni dhe zgjidhja 95 00:06:19,430 --> 00:06:23,370 bërë në mënyrë shumë më të lehtë për shkak se gjuhët vetë ne do të fillojë duke përdorur 96 00:06:23,370 --> 00:06:25,290 do të bëhen më të fuqishme. 97 00:06:25,290 --> 00:06:27,410 Por së pari, një kërkesë e pemëve. 98 00:06:27,410 --> 00:06:30,240 Kjo është shumë e zakonshme këto ditë të ketë nevojë për të compress informacion. 99 00:06:30,240 --> 00:06:34,770 Në çfarë konteksti do të doni të compress një lloj të informacionit dixhital? 100 00:06:37,190 --> 00:06:39,670 >> Po. >> [Student] Kur keni nevojë për të dërguar atë mbi Web. 101 00:06:39,670 --> 00:06:41,450 Po, kur ju dëshironi të dërgoni diçka mbi Web. 102 00:06:41,450 --> 00:06:44,950 Nëse ju doni të shkarkoni një skedar të madh, kjo është ideale nëse dikush në fund të tjera 103 00:06:44,950 --> 00:06:48,760 ka ngjeshur këtë dosje duke përdorur një format zip ose diçka të tillë 104 00:06:48,760 --> 00:06:53,760 kështu që ju jeni dërguar bit pak se sa ndryshe mund të transmetueshme. 105 00:06:53,760 --> 00:06:55,500 Pra, si ju compress informacion? 106 00:06:55,500 --> 00:07:00,540 Ajo të gjitha boils poshtë për të përdorur më pak se sa bit janë të kërkuara nga default. 107 00:07:00,540 --> 00:07:03,220 Por kjo është lloj i një gjë kurioz, sepse mendoj se përsëri në javë 0 dhe 1 108 00:07:03,220 --> 00:07:07,370 kur kemi biseduar për ASCII dhe binar dhe kemi biseduar për ASCII në veçanti 109 00:07:07,370 --> 00:07:10,690 si duke përdorur 8 copa për të përfaqësuar shkronjat e alfabetit 110 00:07:10,690 --> 00:07:16,120 kështu që letra Një është përfaqësuara nga 65, me të vogla një është numri 97, 111 00:07:16,120 --> 00:07:21,210 dhe megjithatë ju përfaqësojnë 65 ose 97, ju jeni duke përdorur 7 ose 8 bit. 112 00:07:21,210 --> 00:07:24,120 Por kapur është se ka disa shkronja në alfabetin anglisht 113 00:07:24,120 --> 00:07:26,230 që nuk janë si popullore si të tjerët. 114 00:07:26,230 --> 00:07:31,600 Z nuk është e gjitha që popullor, Q nuk është e gjitha që popullor, por A dhe E janë super popullore. 115 00:07:31,600 --> 00:07:37,280 Dhe ende për të gjitha këto letra, by default bota përdor numrin e njëjtë të bit, vetëm 8. 116 00:07:37,280 --> 00:07:42,690 Pra, nuk do të kishte qenë zgjuar në qoftë se në vend të përdorimit 8 bit për çdo letër, 117 00:07:42,690 --> 00:07:47,440 edhe më i përdorur rrallë si Q dhe Z, 118 00:07:47,440 --> 00:07:51,910 çka nëse kemi përdorur bit pak për A dhe E dhe S dhe letra më popullore 119 00:07:51,910 --> 00:07:55,000 dhe përdoret bit më shumë për letrat me pak të njohura, 120 00:07:55,000 --> 00:07:57,770 ideja u zgjedh le për rastin e përbashkët, 121 00:07:57,770 --> 00:08:01,160 e cila është një temë në shkenca kompjuterike e duke u përpjekur të zgjedh se çfarë do të ndodhë më 122 00:08:01,160 --> 00:08:05,310 dhe të shpenzojnë një kohë pak më shumë, një hapësirë ​​pak më shumë në gjërat që, vërtet, mund të ndodhë 123 00:08:05,310 --> 00:08:07,680 por jo domosdoshmërisht si shpesh. 124 00:08:07,680 --> 00:08:09,330 Pra, le të marrin një shembull. 125 00:08:09,330 --> 00:08:12,610 >> Supozoni se ne duam të shifroj informacion mjaft efikase. 126 00:08:12,610 --> 00:08:15,090 Ju mund të keni rritur ditur një diçka të vogël në lidhje me kodin Morse, 127 00:08:15,090 --> 00:08:17,450 dhe shanset janë që ju nuk e dini kodin e vërtetë, 128 00:08:17,450 --> 00:08:21,750 por ju mund të kujtojnë se kjo është të paktën këtë seri pika dhe dashes. 129 00:08:21,750 --> 00:08:26,640 Kjo është një coding mjaft efikas, dhe vini re se letra më popullore - për shembull, E - 130 00:08:26,640 --> 00:08:28,980 përdor të shkurtër beeps. 131 00:08:28,980 --> 00:08:31,740 Morse Kodi është mbi të gjitha bip bip-bip-bip-bip bip--dhe mbajtjen tone 132 00:08:31,740 --> 00:08:34,799 qoftë për periudha të shkurtra kohore ose periudha të gjata kohore. 133 00:08:34,799 --> 00:08:40,330 E, pėrcaktuara nga dot, është një bip super të shkurtër, vetëm bip, dhe që do të përfaqësojë E. 134 00:08:40,330 --> 00:08:43,960 Nga ana tjetër, T do të jetë një bip gjatë, si bip [zgjat shëndoshë], 135 00:08:43,960 --> 00:08:45,710 dhe që do të përfaqësojë T. 136 00:08:45,710 --> 00:08:48,840 Por kjo është ende mjaft e shkurtër, sepse, në të kundërt, në qoftë se ju shikoni në Z, 137 00:08:48,840 --> 00:08:52,690 për të shprehur Z ju do të shkoni, bip bip [më të shëndoshë], bip, bip [sound shkurtër]. 138 00:08:52,690 --> 00:08:55,360 Pra, kjo është për shkak se ajo është më pak i zakonshme. 139 00:08:55,360 --> 00:08:58,150 Por Gotcha këtu është se Morse code është pak të meta 140 00:08:58,150 --> 00:09:00,610 në atë që nuk është menjëherë decodable. 141 00:09:00,610 --> 00:09:07,350 Për shembull, mendoj që ju dëgjoni në disa fund të bip teli [shkurtra], bip [gjatë]. 142 00:09:07,350 --> 00:09:12,480 Çfarë ka mesazhit unë vetëm të marrë? Një dot dhe një dash. Çfarë do që përfaqësojnë? 143 00:09:12,480 --> 00:09:15,330 [Student] A. >> [Malan] Ndoshta. 144 00:09:15,330 --> 00:09:18,270 Ajo mund gjithashtu të jetë e ndjekur nga T. 145 00:09:18,270 --> 00:09:23,390 Me fjalë të tjera, Morse Kodi, pse ai thekson këtë parim e optimizuar rastin qoshe, 146 00:09:23,390 --> 00:09:26,250 kjo nuk do të japin hua veten në decodability menjëhershme. 147 00:09:26,250 --> 00:09:29,850 Kjo është, njeriut i cili është dëgjuar apo marrë këto pika dhe dashes 148 00:09:29,850 --> 00:09:34,540 disi ka për të kuptoj se ku thyen janë në mes letrave, 149 00:09:34,540 --> 00:09:39,660 sepse në qoftë se ju nuk e dini se ku janë këto pushime, ju mund të ngatërrojë A për ET ose anasjelltas. 150 00:09:39,660 --> 00:09:43,880 >> Pra, çfarë mund të bëni? Në kodin Morse ju mund vetëm pauzë në mes secilit prej letrave. 151 00:09:43,880 --> 00:09:47,660 Por heshti është lloj i sportel në pikën e tërë e shpejtimit gjërat. 152 00:09:47,660 --> 00:09:52,880 Pra, çfarë nëse në vend që kemi ardhur me një kod, ku nuk ishte kjo situatë e keqe 153 00:09:52,880 --> 00:09:56,570 ku E është një parashtesë, për shembull, i Një - 154 00:09:56,570 --> 00:10:00,020 me fjalë të tjera, në qoftë se ne mund të sigurohemi që modelet janë ende të shkurtër për letrat popullore 155 00:10:00,020 --> 00:10:04,850 gjatë për letrat me pak të njohura, por nuk ka konfuzion e mundur? 156 00:10:04,850 --> 00:10:08,930 Një burrë me emrin e Huffman vjet më parë shpikur këtë skemë të quajtur Huffman coding 157 00:10:08,930 --> 00:10:12,390 që në fakt thekson një prej strukturave të të dhënave që kemi shpenzuar pak kohë duke folur për 158 00:10:12,390 --> 00:10:16,560 javën e kaluar, ai i pemëve, pemë binare konkretisht - 159 00:10:16,560 --> 00:10:19,710 një pemë binare do të thotë se nuk ka më shumë se 2 fëmijë. 160 00:10:19,710 --> 00:10:22,720 Ajo ka ndoshta një fëmijë majtë, ndoshta një fëmijë të drejtë, dhe kjo është ajo. 161 00:10:22,720 --> 00:10:26,510 Pra, mendoj vetëm për hir të diskutimit se dikush dëshiron të dërgojë një mesazh 162 00:10:26,510 --> 00:10:31,270 që duket si kjo. Është absurditet të plotë, por ajo është e përbërë nga Si, Bs, Cs, DS, dhe es. 163 00:10:31,270 --> 00:10:34,890 Dhe në qoftë se ju në të vërtetë të gjithë numërimin e Si, Bs, Cs, DS, dhe Es 164 00:10:34,890 --> 00:10:36,870 dhe pastaj ndani me numrin total të letrave, 165 00:10:36,870 --> 00:10:42,710 Kjo tabelë pak këtu thotë se 45% e letrave janë Es, 20% janë si, 166 00:10:42,710 --> 00:10:45,010 10% Bs, dhe kështu me radhë. 167 00:10:45,010 --> 00:10:47,330 Pra, me fjalë të tjera, të supozojmë se string cituar atje 168 00:10:47,330 --> 00:10:49,080 është vetëm disa mesazhi që ju dëshironi të dërgoni. 169 00:10:49,080 --> 00:10:52,180 Ajo ndodh të jetë e pakuptimtë vetëm kështu ne mund të përdorni si shkronja pak të jetë e mundur, 170 00:10:52,180 --> 00:10:55,220 por kjo është me të vërtetë rasti që mbetet e më popullore, 171 00:10:55,220 --> 00:11:01,450 dhe B dhe C janë më pak të njohura, të paktën nga këto 5 shkronjat e alfabetit. 172 00:11:01,450 --> 00:11:04,040 Pra, si mund të shkoni në lidhje me vjen me një encoding, 173 00:11:04,040 --> 00:11:08,430 një encoding binar, një model i 0s dhe 1s për secilin nga këto letra 174 00:11:08,430 --> 00:11:14,820 në mënyrë të tillë që është një model E shkurtër dhe ndoshta B dhe C janë modele pak më të gjatë, 175 00:11:14,820 --> 00:11:19,270 përsëri, ideja është se ne duam të përdorni bit pak më të madhe të kohës 176 00:11:19,270 --> 00:11:21,790 dhe pjesë më vetëm një herë në një kohë. 177 00:11:21,790 --> 00:11:26,070 Sipas Huffman coding, ju mund të krijoni një pyll të pemëve. 178 00:11:26,070 --> 00:11:31,190 Ka lloj i një linjë histori këtu që përfshin pemë dhe gjithashtu procesin e ndërtimit të tyre. 179 00:11:31,190 --> 00:11:32,420 Le të fillojmë. 180 00:11:32,420 --> 00:11:36,140 >> Unë propozoj që ju të filloni me këtë pyll, në mënyrë që të flasin, e 5 pemëve, 181 00:11:36,140 --> 00:11:38,260 secili i cili është një pemë goxha trashë. 182 00:11:38,260 --> 00:11:42,800 Pema është e përbërë nga vetëm një nyjë të vetme, të përfaqësuara si këtu nga një rreth. 183 00:11:42,800 --> 00:11:45,310 Pra, secili nga këto gjëra mund të jetë një struct C 184 00:11:45,310 --> 00:11:50,200 dhe në brendësi të struct C mund të jetë një noton përfaqëson numërimin frekuencave 185 00:11:50,200 --> 00:11:52,510 dhe pastaj ndoshta një char përfaqëson letër. 186 00:11:52,510 --> 00:11:56,470 Pra mendoj se nga këto nyje vetëm si çdo struct vjetër C, por tani për tani, nivel më të lartë. 187 00:11:56,470 --> 00:12:01,230 Ky është një pyll 5 yje të pemëve, secila prej të cilët kanë vetëm një nyjë të vetme. 188 00:12:01,230 --> 00:12:06,830 Çfarë Huffman propozuar është që ne të fillojë për të kombinuar ato pemë 189 00:12:06,830 --> 00:12:11,140 që kanë akuza të vogla të frekuencave në pemë pak më të mëdha 190 00:12:11,140 --> 00:12:13,490 me lidh ata me një nyje rrënjë të re. 191 00:12:13,490 --> 00:12:17,560 Pra, në mesin e letrave këtu, vërehet se për lehtësinë kam renditur ato nga e majta në të djathtë, 192 00:12:17,560 --> 00:12:21,420 edhe pse kjo nuk është e domosdoshme, dhe njoftim se nyjet më të vogla 193 00:12:21,420 --> 00:12:23,930 aktualisht janë 10% dhe 10%. 194 00:12:23,930 --> 00:12:28,940 Pra Huffman Propozohet që ne të bashkojë ato 2 nyje të vogël në një pemë të re 195 00:12:28,940 --> 00:12:34,450 duke futur një nyje të re prind dhe pastaj të japë një fëmijë që prindi të majtë dhe një fëmijë të drejtë 196 00:12:34,450 --> 00:12:37,720 ku B është arbitrare të majtë dhe C është arbitrare të drejtë. 197 00:12:37,720 --> 00:12:41,590 Dhe pastaj Huffman propozoi më tej se le tani vetëm të mendojnë për fëmijën e majtë 198 00:12:41,590 --> 00:12:44,790 në një nga këto pemë gjithmonë si u përfaqësuar nga 0 199 00:12:44,790 --> 00:12:47,890 dhe fëmija drejtën gjithmonë si u përfaqësuar nga numri 1. 200 00:12:47,890 --> 00:12:50,680 >> Kjo nuk ka rëndësi në qoftë se ju rrokullisje e tyre aq kohë sa ju jeni në përputhje. 201 00:12:50,680 --> 00:12:54,650 Deri tani ne kemi katër pemë në këtë pyll. 202 00:12:54,650 --> 00:12:58,050 Dhe unë them sepse tani katër pema në të majtë - 203 00:12:58,050 --> 00:13:00,570 dhe kjo nuk është aq shumë një pemë në kuptimin që ai rritet në këtë mënyrë, 204 00:13:00,570 --> 00:13:05,170 kjo është më shumë si një pemë familjare, ku tani është lloj i 0,2 prind i dy fëmijëve - 205 00:13:05,170 --> 00:13:07,930 njoftim se në atë prind ne kemi tërhequr 0,2. 206 00:13:07,930 --> 00:13:13,370 Ne kemi shtuar edhe akuza frekuenca e dy fëmijëve dhe dhënë nyjen e re shuma totale. 207 00:13:13,370 --> 00:13:15,310 Deri tani ne vetëm përsërisin këtë proces. 208 00:13:15,310 --> 00:13:19,490 Gjej të dy nyjet më të vogla dhe pastaj të bashkohen me ta në një pemë të re 209 00:13:19,490 --> 00:13:21,380 dhe pastaj të përsëritur procesin e mëtejshëm. 210 00:13:21,380 --> 00:13:26,390 Tani për tani ne kemi disa kandidatë, 20%, 15%, dhe një tjetër 20%. 211 00:13:26,390 --> 00:13:29,780 Në këtë rast, ne kemi për të thyer kravatë. Ne mund ta bëjë këtë në mënyrë arbitrare. 212 00:13:29,780 --> 00:13:31,540 Ne duhet vetëm të bëjë atë vazhdimisht. 213 00:13:31,540 --> 00:13:33,760 Në këtë rast, unë do të shkoj në mënyrë arbitrare me atë në të majtë, 214 00:13:33,760 --> 00:13:39,880 dhe unë tani bashkojë 20% dhe 15% të më jepni një prind të ri të quajtur 35%, 215 00:13:39,880 --> 00:13:46,310 cilit majtë fëmija është 0, të cilit të drejtë fëmija është 1, dhe tani ne kemi vetëm tre pemë në pyll. 216 00:13:46,310 --> 00:13:47,960 Ju ndoshta mund të shihni se ku po shkon kjo. 217 00:13:47,960 --> 00:13:51,150 Nëse ne përsërisin këtë herë një çift më shumë, ne do të kemi vetëm një pemë të madhe, 218 00:13:51,150 --> 00:13:53,900 të gjitha skajet e të cilit janë emërtuar me 0s dhe 1s. 219 00:13:53,900 --> 00:13:55,710 Le të bëjë atë përsëri. 220 00:13:55,710 --> 00:14:02,600 35% është rrënja e kësaj peme. 20% dhe 45%, kështu që ne jemi duke shkuar për të bashkojë 35% dhe 20%. 221 00:14:02,600 --> 00:14:05,610 Tani ne kemi këtë pemë këtu. Ne shtoni ato së bashku, ne kemi 55%. 222 00:14:05,610 --> 00:14:07,910 Tani ka vetëm dy pemëve në pyll. 223 00:14:07,910 --> 00:14:11,900 Ne e bëjmë këtë një herë përfundimtar, dhe shpresojmë se matematikisht gjitha frekuencat shtoni deri 224 00:14:11,900 --> 00:14:15,570 sepse ata duhet që ne kemi llogaritur ata nga get-go për të shtuar deri në 100%. 225 00:14:15,570 --> 00:14:17,960 Dhe tani ne kemi një pemë. 226 00:14:17,960 --> 00:14:20,580 Pra, kjo është një pemë coding Huffman. 227 00:14:20,580 --> 00:14:24,400 Ai lloj i mori një kohë për të arritur atje me gojë, por realiteti është me një për lak 228 00:14:24,400 --> 00:14:27,620 ose me një funksion rekursiv, ju mund të ndërtuar këtë gjë deri shumë shpejt. 229 00:14:27,620 --> 00:14:32,440 Kështu që tani ne kemi një nyje të re, dhe të gjitha këto nyje e brendshme janë malloc'd, 230 00:14:32,440 --> 00:14:34,690 me sa duket, përgjatë rrugës. 231 00:14:34,690 --> 00:14:38,650 Deri tani në krye të kësaj peme kemi 100%, por tani kemi një njoftim rrugë 232 00:14:38,650 --> 00:14:43,780 nga kjo e re e madhe-madhe-madhe-gjyshërit për të gjitha madh-madhe-stërnipat 233 00:14:43,780 --> 00:14:45,930 të gjithë rrugën në fund, për të gjithë gjethe. 234 00:14:45,930 --> 00:14:52,840 >> Ajo që ne jemi duke shkuar për të bërë tani është të propozojë që në mënyrë për të përfaqësuar E letër, 235 00:14:52,840 --> 00:14:55,670 ne thjesht do të përdorë numrin 1. Pse? 236 00:14:55,670 --> 00:15:01,000 Sepse në qoftë se ne e përshkojnë këtë pemë nga rrënja përfundimtar poshtë në fletë njohur si E, 237 00:15:01,000 --> 00:15:06,050 ne ndjekim vetëm një avantazh, buzë të drejtë, dhe kjo është etiketuar natyrisht në 1 top të drejtë. 238 00:15:06,050 --> 00:15:11,550 Pra implikimi këtu për Huffman ishte se encoding E-në binar do të jetë vetëm 1. 239 00:15:11,550 --> 00:15:14,490 Dhe kjo është pretty damn efikase. Nuk mund të vërtetë të marrë ndonjë më i vogël se kaq. 240 00:15:14,490 --> 00:15:18,350 Nga ana tjetër, një do të jenë të përfaqësuara, në qoftë se ju ndiqni logjikën, 241 00:15:18,350 --> 00:15:21,610 nga ajo model i bit në vend? 01. 242 00:15:21,610 --> 00:15:25,500 Pra, për të marrë në A, ne të fillojë në rrënjë dhe ne do të shkojmë majtas dhe pastaj ne do të shkojmë drejtë, 243 00:15:25,500 --> 00:15:28,580 që do të thotë ne kemi ndjekur një 0 dhe pastaj një 1. 244 00:15:28,580 --> 00:15:32,810 Pra, ne do të përfaqësojë një letër me modelin 0 dhe 1. 245 00:15:32,810 --> 00:15:36,010 Dhe tani vini re, ne tashmë kemi një pronë e decodability menjëhershëm 246 00:15:36,010 --> 00:15:38,090 se ne nuk kemi në kodin Morse. 247 00:15:38,090 --> 00:15:42,840 Edhe pse të dyja këto modele janë mjaft të shkurtër - E është 1 bit, A është 2 bit - 248 00:15:42,840 --> 00:15:45,080 vini re se ata nuk mund të jenë të hutuar një apo të tjera, 249 00:15:45,080 --> 00:15:54,870 sepse në qoftë se ju shihni një 1 ajo mori të jetë një E, në qoftë se ju shihni një pas një 1 0 ajo e mori padyshim të jetë një A. 250 00:15:54,870 --> 00:15:58,410 Në mënyrë të ngjashme, çfarë është D? 001. 251 00:15:58,410 --> 00:16:01,440 Çfarë është C? 0001. 252 00:16:01,440 --> 00:16:05,320 Dhe çfarë është B? 0000. 253 00:16:05,320 --> 00:16:09,550 Dhe përsëri, sepse të gjitha letrat që na tangojnë janë në gjethe 254 00:16:09,550 --> 00:16:13,890 dhe asnjëri prej tyre nuk janë lloj i ndërmjetës në rrugën nga rrënja në gjethe, 255 00:16:13,890 --> 00:16:18,760 nuk ka asnjë rrezik i bashkuar encodings 2 letra 'të ndryshme 256 00:16:18,760 --> 00:16:22,300 sepse të gjitha këto modele janë pak determinist. 257 00:16:22,300 --> 00:16:25,280 0000 do të jetë gjithmonë B. 258 00:16:25,280 --> 00:16:29,480 Nuk ka nyje diku në mes që ju mund të ngatërrojë një letër për të tjera. 259 00:16:29,480 --> 00:16:31,150 Pra, çfarë është implikimi këtu? 260 00:16:31,150 --> 00:16:35,080 >> Letra më të njohura - në këtë rast E - ka marrë kodimin shkurtër, 261 00:16:35,080 --> 00:16:37,430 A ka marrë kodimin e ardhshëm më të shkurtër, 262 00:16:37,430 --> 00:16:41,390 dhe B dhe C, të cilat ne tashmë e dinte nga lloji get-go ishin të paktën popullore 263 00:16:41,390 --> 00:16:45,390 në frekuencë 10% secili, ata kanë marrë kodimin gjatë. 264 00:16:45,390 --> 00:16:49,410 Dhe kështu që çfarë do të thotë kjo tani është se në qoftë se ju dëshironi të dërgoni një mesazh që është ngjeshur 265 00:16:49,410 --> 00:16:51,950 mbi internet ose në një email ose të ngjashme, 266 00:16:51,950 --> 00:16:56,730 në vend se duke përdorur ASCII standarde, ju mund të dërgoni një mesazh të koduar Huffman 267 00:16:56,730 --> 00:17:01,720 ku në qoftë se ju dëshironi të dërgoni E letër, ju dërgoni vetëm pak një të vetme. 268 00:17:01,720 --> 00:17:05,680 Në qoftë se ju dëshironi të dërgoni një A, ju dërgoni 2 bit, 01, në vend të dërgimit 8 bit 269 00:17:05,680 --> 00:17:10,190 pasuar nga një tjetër 8 bit pasuar nga një tjetër 8 copa dhe kështu me radhë. 270 00:17:10,190 --> 00:17:11,940 Por ka një Gotcha këtu. 271 00:17:11,940 --> 00:17:17,079 Kjo nuk është e mjaftueshme për të vetëm të ndërtuar këtë pemë dhe pastaj të fillojë dërgimin e Alice nga Bob 272 00:17:17,079 --> 00:17:20,010 model shkurtër pak, string nga ASCII, 273 00:17:20,010 --> 00:17:23,140 sepse Alice ka gjithashtu për të informuar se çfarë Bob 274 00:17:23,140 --> 00:17:26,880 Bob nëse do të jetë në gjendje për të lexuar mesazhin e saj të ngjeshur? 275 00:17:26,880 --> 00:17:30,770 [Përgjigja e padëgjueshme Studenti] >> Çfarë është ajo? 276 00:17:30,770 --> 00:17:32,310 [Përgjigja e padëgjueshme Studenti] >> Nga ajo pemë është. 277 00:17:32,310 --> 00:17:35,160 Ose edhe më konkretisht, çfarë janë ato kodifikimet janë, 278 00:17:35,160 --> 00:17:39,010 veçanërisht pasi gjatë kësaj historie kemi bërë një telefonatë gjykim në një pikë. 279 00:17:39,010 --> 00:17:43,640 Mos harroni se ne kishim për të marrë në mënyrë arbitrare në mes të 2 nyjet e ndryshme 20%? 280 00:17:43,640 --> 00:17:49,800 Pra, kjo nuk është e vërtetë se Bob, përfituesi, vetëm mund të rindërtojë pemën e tij në 281 00:17:49,800 --> 00:17:53,390 sepse ndoshta ai do të krijojë pemën e ndonjëherë në mënyrë pak më ndryshe nga Alice. 282 00:17:53,390 --> 00:17:56,670 Për më tepër, Bob nuk e di edhe se çfarë mesazhi origjinal është 283 00:17:56,670 --> 00:18:00,770 sepse e vetmja gjë Alice është dërguar atij, natyrisht, është mesazhi i ngjeshur. 284 00:18:00,770 --> 00:18:05,900 >> Pra kapur me compression si kjo është se, po, Alice mund të ruaj një shumë e tërë e bit 285 00:18:05,900 --> 00:18:09,900 duke dërguar për 1 E dhe 01 për A dhe kështu me radhë, 286 00:18:09,900 --> 00:18:15,180 por ajo gjithashtu ka për të informuar Bob çfarë hartës është midis shkronjave dhe copa 287 00:18:15,180 --> 00:18:19,620 sepse ata nuk mund të qartë të mbështetet në vetëm më ASCII nëse ne nuk jeni duke përdorur ASCII. 288 00:18:19,620 --> 00:18:22,200 Kështu që ajo mund ta dërgoni atë pemë disi - 289 00:18:22,200 --> 00:18:26,600 shkruajnë atë, të ruajtur atë si të dhëna binare ose diçka si kjo - 290 00:18:26,600 --> 00:18:30,280 ose thjesht dërgoni atij një fletë mashtrojnë pak, një file Excel, që tregon mappings. 291 00:18:30,280 --> 00:18:36,480 Pra, efektiviteti i compression vërtetë supozon se mesazhet që ju jeni dërguar 292 00:18:36,480 --> 00:18:40,230 janë goxha të mëdha, së paku të mesme, 293 00:18:40,230 --> 00:18:42,180 sepse në qoftë se ju jeni dërguar një mesazh të super të shkurtër, 294 00:18:42,180 --> 00:18:45,390 në qoftë se ju vetëm dëshironi të dërgoni mesazhin KEQ, i cili ndodh të jetë një fjalë që ne mund të shkruhet këtu, 295 00:18:45,390 --> 00:18:49,550 B-A-D, ju jeni me siguri do të përdorni bit pak, 296 00:18:49,550 --> 00:18:53,130 por është kapur në qoftë se edhe ju keni për të informuar Bob çfarë është pema 297 00:18:53,130 --> 00:18:57,530 apo atë që janë ato kodifikimet, ju jeni me siguri do të peshoj më shumë se të gjithë të kursimeve 298 00:18:57,530 --> 00:19:00,110 e të pasurit gjëra ngjeshur për të filluar me. 299 00:19:00,110 --> 00:19:02,210 Pra, kjo në fakt mund të jetë rasti se në qoftë se ju provoni compressing 300 00:19:02,210 --> 00:19:05,330 edhe me diçka si zip ose file formate ju mund të jenë të njohur me - 301 00:19:05,330 --> 00:19:07,780 fotografi mjaft të vogla, fotografi madje edhe bosh - 302 00:19:07,780 --> 00:19:10,930 nganjëherë ato fotografi mund të merrni më të mëdha dhe jo të vogla. 303 00:19:10,930 --> 00:19:14,320 Por realisht, kjo ndodh vetëm për të madhësive të vogla fotografi, 304 00:19:14,320 --> 00:19:16,920 kështu që nuk do të bëjë një file Gigabyte jetë 2 gigabajt; 305 00:19:16,920 --> 00:19:19,480 ne jemi me të vërtetë duke folur bytes ose vetëm një çift kilobytes. 306 00:19:19,480 --> 00:19:22,330 >> Disa programe si zip janë të zgjuar të mjaftueshme për të kuptojnë se, 307 00:19:22,330 --> 00:19:24,590 "Ju do të jeni për të shpenzuar më shumë compressing bit këtë." 308 00:19:24,590 --> 00:19:27,460 "Më lejoni të mos shqetësojë compressing atë për ju në të gjitha." 309 00:19:27,460 --> 00:19:30,160 Pra, kjo është vetëm një mënyrë atëherë compressing format tekst. 310 00:19:30,160 --> 00:19:32,300 Ne mund të zbatojë diçka si kjo në C. 311 00:19:32,300 --> 00:19:35,370 Për shembull, këtu është se si ne mund të përfaqësojë një nyje në këtë pemë 312 00:19:35,370 --> 00:19:39,320 ku ne kemi një char për simbol, një vlerë lundrues për frekuencën, 313 00:19:39,320 --> 00:19:42,250 dhe si ne kemi parë me strukturat tona të tjera të të dhënave, 2 pointers, 314 00:19:42,250 --> 00:19:47,080 1 tek fëmijës majta, 1 për të drejtë, ose i cili mund të jetë NULL, 315 00:19:47,080 --> 00:19:50,850 por në qoftë se jo, ajo i referohet një fëmije majtë dhe një fëmijë drejtë. 316 00:19:50,850 --> 00:19:55,130 Pra, kjo pastaj është Huffman coding, dhe kjo është një mënyrë që ju mund të shkoni në lidhje me compressing informacion, 317 00:19:55,130 --> 00:19:57,880 dhe kjo është padyshim një nga më të lehtë për të zbatuar 318 00:19:57,880 --> 00:20:00,830 në kontekstin e, të themi, strukturat javës së kaluar të të dhënave, 319 00:20:00,830 --> 00:20:03,250 pse edhe më të sofistikuara algoritme ekzistojnë 320 00:20:03,250 --> 00:20:08,220 që mund të bëjë mutacione edhe më të sofistikuara e të dhënave tuaja. 321 00:20:08,220 --> 00:20:11,640 Çdo pyetje pastaj në pemë, pemë binare, apo ngjeshje e tekstit? 322 00:20:11,640 --> 00:20:15,590 [Student] A ka ndonjë paqartësi, si në qoftë se ndarja [e padëgjueshme] në 01, 323 00:20:15,590 --> 00:20:19,160 atëherë do të jetë 011 paqartë, apo jo? 324 00:20:19,160 --> 00:20:22,730 [E padëgjueshme] >> Pyetje e mirë. Paqartësi. 325 00:20:22,730 --> 00:20:25,940 Më lejoni të përmbledh duke iu referuar në këtë foto këtu. 326 00:20:25,940 --> 00:20:29,650 Sepse ju jeni karaktere compressing, përfaqësitë e, 327 00:20:29,650 --> 00:20:32,850 sipas përkufizimit të këtij algoritmi të mbetet gjithmonë gjethet, 328 00:20:32,850 --> 00:20:41,870 ju kurrë nuk do të aksidentalisht përdorur të njëjtin model të bit për prefiksin e letrave të shumta. 329 00:20:41,870 --> 00:20:46,740 Pra, me fjalë të tjera, ju jeni të shqetësuar në lidhje, kjo tingëllon si, një paqartësie që lind 330 00:20:46,740 --> 00:20:51,580 ku 001 mund të jetë fillimi i B ose C ose fillimi i diçka të tillë. 331 00:20:51,580 --> 00:20:56,780 Por kjo nuk mund të jetë rasti, sepse njoftimi se të gjitha shkronjat e alfabetit ne jemi kodimin 332 00:20:56,780 --> 00:20:58,290 janë në gjethe. 333 00:20:58,290 --> 00:21:01,910 >> Dykuptimësia vetëm mund të lindin, si në rastin e kodit Morse, 334 00:21:01,910 --> 00:21:06,770 në qoftë se, për shembull, C ishte diku përgjatë rrugës nga rrënja deri B. 335 00:21:06,770 --> 00:21:12,290 [Student] E drejta. Pra, në këtë rast, thonë se një ka 2 gjethe. Thuaj >> A ka - Thuaj se përsëri. 336 00:21:12,290 --> 00:21:18,760 [Student] Thuaj A ka 2 gjethe, F dhe G, dhe pastaj G - >> rregull. Por ajo nuk mund të. 337 00:21:18,760 --> 00:21:23,230 Një në vetvete nuk mund të ketë lë F dhe G, sepse ato shkronja F dhe G 338 00:21:23,230 --> 00:21:27,560 do të jenë vetë lë diku në të majtë të B ose të drejtën e E. 339 00:21:27,560 --> 00:21:28,900 Pra sipas definicionit, ata duhet të jenë të lë. 340 00:21:28,900 --> 00:21:32,940 Përndryshe, ju jeni saktësisht e drejtë, ne nuk kemi zgjidhur problemin që Morse Kodi përballet. 341 00:21:32,940 --> 00:21:38,150 Mirë pyetje. Pyetje të tjera? Dakord. 342 00:21:38,150 --> 00:21:42,050 Ky nocion i bit, ajo rezulton që kemi pasur fuqinë të gjithë së bashku që ne nuk kemi përdorur në të vërtetë 343 00:21:42,050 --> 00:21:44,200 kur ai erdhi për të manipuluar këto 0s dhe 1s. 344 00:21:44,200 --> 00:21:46,600 Ne kërkuar rreth kjo në një nga grupe problemore hershme: 345 00:21:46,600 --> 00:21:52,340 domethënë, si do ju shkoj për konvertimin uppercase në shkronja jokapitale apo anasjelltas? 346 00:21:52,340 --> 00:21:55,460 Ose, më konkretisht, një nga ato psets parë kërkoi 347 00:21:55,460 --> 00:22:01,090 sa copa ju të vërtetë duhet të shfletoj në mënyrë që të ndryshojë një në shkronja jokapitale një apo anasjelltas? 348 00:22:01,090 --> 00:22:05,580 Këtu ka një kujtesë të shpejtë të asaj 65 dhe 97 të duket si në binar. 349 00:22:05,580 --> 00:22:08,060 Dhe edhe në qoftë se çështja është lloj i zbehur në kujtesën tuaj, 350 00:22:08,060 --> 00:22:11,290 ju mund të shihni përsëri këtu se sa bit duhet të kthyer 351 00:22:11,290 --> 00:22:15,810 për të ndryshuar kapitalin Një në shkronja jokapitale a? Vetëm një. 352 00:22:15,810 --> 00:22:19,650 >> Ata ndryshojnë vetëm në një vend të tretë, pak nga e majta. 353 00:22:19,650 --> 00:22:24,240 Ndërsa A ka një 010, pak a ka një 011. 354 00:22:24,240 --> 00:22:26,250 Kështu disi, ne duhet të vetëm të jenë në gjendje për të rrokullisje atë pak, 355 00:22:26,250 --> 00:22:29,410 dhe ne pastaj mund të përfitojë me të vogla apo letra. 356 00:22:29,410 --> 00:22:32,720 Ne e kemi bërë këtë në të kaluarën me të vërtetë duke përdorur nëse kushtet 357 00:22:32,720 --> 00:22:35,930 dhe kontrolluar nëse letra është midis kapitalit A dhe Z kapitalit, 358 00:22:35,930 --> 00:22:41,480 pastaj rezultatet si A - a + 26 ose diçka të tillë. 359 00:22:41,480 --> 00:22:46,130 Ju ndoshta e bëri një ndryshim aritmetike ndaj shkronjat e alfabetit. 360 00:22:46,130 --> 00:22:49,270 Por çfarë nëse ne vetëm mund të rrokullisje atë grimë të vetme? 361 00:22:49,270 --> 00:22:59,080 Si mund të ju shkoni në lidhje me marrjen e një bajt vlerë e bit, kështu 8 bit si dhe 01.000.001 01.100.001? 362 00:22:59,080 --> 00:23:03,170 Nëse keni pasur ato modelet e copa, si mund të shkoni në lidhje me ndryshimin e vetëm një prej tyre? 363 00:23:03,170 --> 00:23:07,610 Çfarë ndodh nëse ne kemi prezantuar në të verdhë këtu këtë model tjetër të bit? 364 00:23:07,610 --> 00:23:13,420 Nëse unë bëjë 0s gjithë verdhë string përveç një grimë që unë dua të ndryshojë 365 00:23:13,420 --> 00:23:17,900 dhe pastaj unë prezantoj një operator të ri të njohur si një operator bitwise - 366 00:23:17,900 --> 00:23:21,210 bitwise në kuptimin që ajo vepron në copa individuale, 367 00:23:21,210 --> 00:23:25,360 jo në një bajt të tërë ose katër bytes gjitha përnjëherë. 368 00:23:25,360 --> 00:23:31,170 Ky bar vertikale atje në të verdhë tregojnë se çfarë nëse marrim përfaqësimin e kapitalit 369 00:23:31,170 --> 00:23:37,060 dhe bitwise OSE ajo me sekuencën verdhe e bit? 370 00:23:37,060 --> 00:23:41,300 Me fjalë të tjera, mendoj se përsëri në diskutimin tonë të shprehjeve Boolean në Scratch dhe pastaj në C. 371 00:23:41,300 --> 00:23:47,520 >> Bërë një Boolean ose të thotë se për të qenë e vërtetë, ose gjëja e parë që duhet të jetë e vërtetë 372 00:23:47,520 --> 00:23:50,700 , ose gjëja e dytë duhet të jetë e vërtetë ose ata të dy duhet të jetë e vërtetë, 373 00:23:50,700 --> 00:23:53,270 dhe pastaj prodhimit rezulton në vetvete është e vërtetë. 374 00:23:53,270 --> 00:24:00,230 Në këtë rast këtu, çfarë nuk kemi marrë, nëse marrim 0 "ose" ed me 0? Rreme apo e rreme? 375 00:24:00,230 --> 00:24:04,280 Është ende e rreme, kështu që mbetet një vogle ashtu siç pritet. 376 00:24:04,280 --> 00:24:07,540 Çka nëse në vend të bëjmë 1 ose 0? 377 00:24:07,540 --> 00:24:12,640 Kjo tani mbetet 1, por njoftim se çfarë është rreth të ndodhë këtu. 378 00:24:12,640 --> 00:24:18,630 Në qoftë se ne fillojmë me një kapital dhe ne vazhdojmë të "ose" bit e veta individuale si ne po bëjmë këtu, 379 00:24:18,630 --> 00:24:25,180 0 ose një të verdhë na jep atë këtu poshtë? Kjo na jep 1. 380 00:24:25,180 --> 00:24:35,120 Në fakt, mendoj që ne nuk e dimë se çfarë versioni uppercase i vogël a në fakt ishte. 381 00:24:35,120 --> 00:24:38,270 Le të shkojë ta bëjë këtë. Më lejoni të lëvizë këtë përsëri mbi këtu. 382 00:24:38,270 --> 00:24:42,340 Le ta bëjmë këtë përsëri. 0 ose 0 jep 0. 383 00:24:42,340 --> 00:24:45,020 1 ose 0 jep 1. 384 00:24:45,020 --> 00:24:48,020 0 ose 1 jep mua 1. 385 00:24:48,020 --> 00:24:52,880 0 ose 0 jep 0. Një tjetër është 0, një tjetër është 0, një tjetër është 0. 386 00:24:52,880 --> 00:24:55,660 1 ose 0 jep 1. 387 00:24:55,660 --> 00:24:59,140 Dhe kështu edhe në qoftë se ne nuk e dinim paraprakisht se çfarë me të vogla a ishte, 388 00:24:59,140 --> 00:25:04,770 thjesht duke "apo" ing A me këtë model të bit që ne kemi paraqitur këtu në të verdhë, 389 00:25:04,770 --> 00:25:09,400 ju mund të me të vogla një kapital Një nga Flipping atë pak. 390 00:25:09,400 --> 00:25:11,580 Ne kemi përdorur këtë shprehje javë më parë: Flipping një grimë. 391 00:25:11,580 --> 00:25:13,710 Si mendoni ju në fakt bëni që programuar? 392 00:25:13,710 --> 00:25:16,390 Ju përdorni atë që quhet zakonisht një maskë, një rend i bit, 393 00:25:16,390 --> 00:25:19,980 se në këtë rast ndodh pikërisht kështu që të duken si këtë numër këtu, 394 00:25:19,980 --> 00:25:22,980 dhe pastaj ju "ose" atë së bashku duke përdorur këtë operator të ri C, 395 00:25:22,980 --> 00:25:29,940 jo | |, se ju përdorni një të vetme | dhe ju do të vërtetë të merrni këtë përgjigje këtu, sepse pse? 396 00:25:29,940 --> 00:25:35,120 Ky është vendi 1s, 2s vend, 16s 4s, 8s,, 32s. 397 00:25:35,120 --> 00:25:42,280 Pra, del se në qoftë se ju merrni një letër të kapitalit A dhe bitwise ose ajo me 32 integer, 398 00:25:42,280 --> 00:25:47,520 32 sepse i plotë, kur ju shikoni në atë si copa, duket si kjo, 399 00:25:47,520 --> 00:25:50,860 që do të thotë që ju mund të rrokullisje pak se ju në të vërtetë dëshironi. 400 00:25:50,860 --> 00:25:52,630 Dhe të ngjashme - dhe ne do të shikojmë në kodin në vetëm një moment - 401 00:25:52,630 --> 00:25:54,210 mendoj që ne duam të shkojnë në drejtim tjetër. 402 00:25:54,210 --> 00:25:58,210 >> Si ju shkoni nga një kapital Fjala në një? Cili pak duhet të ndryshojë? 403 00:25:58,210 --> 00:25:59,820 Kjo është e njëjtë. 404 00:25:59,820 --> 00:26:03,970 Ne duam të ndryshojmë se pak tretë nga një 1 deri në një 0. 405 00:26:03,970 --> 00:26:06,310 Dhe si mund të shkojmë për të bërë këtë? 406 00:26:06,310 --> 00:26:10,130 Si mund të fik pak? Me atë model i bit mund të kemi fikur pak? 407 00:26:11,580 --> 00:26:14,070 Çfarë ndodh nëse ne lloj i anasjell maskë? 408 00:26:14,070 --> 00:26:17,350 Ndërsa më parë, kemi bërë tërë 0s verdhë maskë 409 00:26:17,350 --> 00:26:19,930 me përjashtim të pak një kemi dashur të kthehet më, 410 00:26:19,930 --> 00:26:25,580 çka nëse këtë herë, ne kemi bërë tërë 1s maskë me përjashtim të pak se ne duam për të fikur 411 00:26:25,580 --> 00:26:28,330 dhe pastaj të përdorin operatorin çfarë? 412 00:26:28,330 --> 00:26:30,560 Çfarë ndodh nëse ne "dhe" gjërat? Le të marrin një sy. 413 00:26:30,560 --> 00:26:34,880 Nëse ne tani rrokullisje për këtë, mendoj se përsëri unë të krijuar një maskë që është e gjitha 1s 414 00:26:34,880 --> 00:26:37,650 me përjashtim të pak e që unë dua të fikur 415 00:26:37,650 --> 00:26:43,860 dhe pastaj në vend se "apo" numri i bardhë deri krye me numrat e verdhë poshtë këtu, 416 00:26:43,860 --> 00:26:46,940 çfarë nëse unë në vend "dhe" ato së bashku? Është quajtur një bitwise dhe. 417 00:26:46,940 --> 00:26:49,450 Logjikisht, kjo është e njëjta gjë si një boolean dhe. 418 00:26:49,450 --> 00:26:55,160 Kjo i jep mua 0 dhe 1 është 0. Pra rreme dhe e vërtetë është e rreme. 419 00:26:55,160 --> 00:26:58,160 Vërtetë dhe e vërtetë është e vërtetë. 420 00:26:58,160 --> 00:27:04,020 Dhe këtu është magjike: Vërtetë dhe e rreme tani është e rreme, kështu që ne kemi fikur atë pak. 421 00:27:04,020 --> 00:27:06,560 Dhe tani pjesa tjetër e tregimit është disi i hapur. 422 00:27:06,560 --> 00:27:11,970 Sepse pjesa tjetër e maskë është 1s, kjo nuk ka rëndësi se çfarë numrat janë në të bardhë. 423 00:27:11,970 --> 00:27:15,580 Kur ju "dhe" diçka me e vërtetë, ju nuk do të jeni për të ndryshuar vlerën e saj. 424 00:27:15,580 --> 00:27:20,200 Nëse kjo është e vërtetë, ajo do të mbetet e vërtetë. Në qoftë se ajo ishte e rreme, ajo do të mbetet e rreme. 425 00:27:20,200 --> 00:27:23,190 >> Por magji ndodh kur ju keni marrë diçka që është e vërtetë 426 00:27:23,190 --> 00:27:25,430 dhe ju pastaj "dhe" atë me të rreme. 427 00:27:25,430 --> 00:27:30,030 Kjo ka efektin e kthyer off se pak. 428 00:27:30,030 --> 00:27:31,980 Pra, a fshehtë pak atje. 429 00:27:31,980 --> 00:27:35,390 Le të shikojmë në të vërtetë në një kod, i cili në fakt mund të duken edhe më të fshehtë, 430 00:27:35,390 --> 00:27:38,220 por le të marrin një vështrim në këtu tolower. 431 00:27:38,220 --> 00:27:45,880 Nëse unë shoh në tolower, duke shkuar nga një kryeqytet në shkronja jokapitale një, 432 00:27:45,880 --> 00:27:47,730 le të shohim se si ne mund të zbatojë këtë program. 433 00:27:47,730 --> 00:27:51,280 Ja kryesor, dhe kjo nuk është marrë ndonjë komandë-line argumente. 434 00:27:51,280 --> 00:27:55,980 Unë jam deklaruar një c karakter për letrën që përdoruesi do të shkruani in 435 00:27:55,980 --> 00:28:00,690 Unë atëherë përdorni një për ta bërë të njohur, ndërsa loop vetëm për t'u siguruar që përdoruesi patjetër më jep një kapital Një 436 00:28:00,690 --> 00:28:05,010 ose B ose C. .. Z, në mënyrë që ata të më jepni diçka në mes të A dhe Z. 437 00:28:05,010 --> 00:28:08,580 Dhe tani çfarë po bëj këtu? 438 00:28:08,580 --> 00:28:14,870 Unë jam "ose" ing këtë me 0x20, por që në fakt i njëjtë si - 439 00:28:14,870 --> 00:28:19,500 dhe ne do të vijnë përsëri në këtë në një moment - 32. 440 00:28:19,500 --> 00:28:24,830 Pra, përsëri, 32 është ky model i bit këtu. Pse ne e dimë këtë? 441 00:28:24,830 --> 00:28:26,320 Vetëm mendoni përsëri në javën 0. 442 00:28:26,320 --> 00:28:31,010 Ky është vendi 1s, 2s vend, 4s, 8s, 16s, 32s vend. 443 00:28:31,010 --> 00:28:33,470 Pra, ky numër verdhë ndodh të jetë 32. 444 00:28:33,470 --> 00:28:40,570 Unë pastaj mund të marrin një letër si char këtu, bitwise "ose" atë me fjalë për fjalë numrin 32, 445 00:28:40,570 --> 00:28:45,250 dhe çfarë mund të kthehet? Versioni i vogle se char. 446 00:28:45,250 --> 00:28:48,830 Një moment më parë, edhe pse, kam shprehur këtë në një simbol bazë të ndryshme. 447 00:28:48,830 --> 00:28:51,370 Çfarë e bëri këtë të përfaqësojë? >> [Student] Hexadecimal. 448 00:28:51,370 --> 00:28:53,050 [Malan] Kjo ndodh për të përfaqësuar heksadecimal. 449 00:28:53,050 --> 00:28:55,170 Ne nuk kemi biseduar rreth heksadecimal të gjithë se shumë, 450 00:28:55,170 --> 00:28:57,330 por është e vërtetë përshtatshëm në raste si ky. 451 00:28:57,330 --> 00:29:01,730 >> Edhe pse kjo duket më kompleks dhe edhe pse kjo duket si 20 dhe jo 32, 452 00:29:01,730 --> 00:29:06,240 rezulton se heksadecimal në fakt është simbol super i përshtatshëm 453 00:29:06,240 --> 00:29:10,810 sepse në heksadecimal çdo shifra pas 0x - dhe kjo do të thotë asgjë; 454 00:29:10,810 --> 00:29:13,960 kjo është vetëm konventë të njeriut që thotë se këtu vjen një numër heksadecimal - 455 00:29:13,960 --> 00:29:18,590 secilën nga këto shifra, 2 dhe pastaj 0, vetë mund të përfaqësohen 456 00:29:18,590 --> 00:29:20,800 me saktësisht 4 copa. 457 00:29:20,800 --> 00:29:27,840 Pra, nëse e bëjmë këtë, më lejoni të hapur një editor teksti këtu - autocomplete pazakontë - 458 00:29:27,840 --> 00:29:35,940 në qoftë se ne bëjmë një editor teksti të vogël këtu, 0x20 numër do të thotë këtu është 4 bit, këtu është një tjetër 4 bit. 459 00:29:35,940 --> 00:29:38,050 Le të bëjmë rightmost 4 bit parë. 460 00:29:38,050 --> 00:29:44,690 0 kur përfaqësuar me 4 bit është ajo? Super e lehtë. Vetëm të gjitha 0s. 461 00:29:44,690 --> 00:29:46,780 Pra, 4 bit si 0s. 462 00:29:46,780 --> 00:29:53,510 Si mund të përfaqësojnë 2? Ka qenë një kohë që ne e bëmë këtë, por kjo është 0100. 463 00:29:53,510 --> 00:29:57,310 Pra, ky është vendi 1s, ky është vendi 2s, dhe pastaj nuk ka rëndësi se çfarë vende të tjera janë. 464 00:29:57,310 --> 00:30:00,610 Me fjalë të tjera, në heksadecimal ju mund të thoni 0x20, 465 00:30:00,610 --> 00:30:04,340 por në qoftë se ju pastaj të mendojnë për atë që është 2 dhe si është ajo e përfaqësuar në binar, 466 00:30:04,340 --> 00:30:07,130 çfarë është 0 dhe si është ajo e përfaqësuar në binar, 467 00:30:07,130 --> 00:30:10,440 përgjigjet për këto pyetje janë të këtë dhe këtë, respektivisht. 468 00:30:10,440 --> 00:30:14,380 Pra, 0x20 ndodh për të përfaqësuar këtë model të 8 bit, 469 00:30:14,380 --> 00:30:16,880 e cila është pikërisht maskë që kemi dashur. 470 00:30:16,880 --> 00:30:20,140 Pra, kjo është për momentin vetëm një ushtrim intelektual, 471 00:30:20,140 --> 00:30:24,520 por realiteti është në kod është zakonisht më e zakonshme për të shkruar konstantat si kjo 472 00:30:24,520 --> 00:30:28,360 në heksadecimal sepse atëherë programues mund relativisht lehtë, 473 00:30:28,360 --> 00:30:32,560 edhe nëse kjo kërkon disa letër dhe laps, kuptoj se çfarë është model i bit 474 00:30:32,560 --> 00:30:35,960 sepse ju nuk mund vetëm të shprehin 0s dhe 1s zakonisht në kodin. 475 00:30:35,960 --> 00:30:38,540 Ju nuk mund të shkojnë 00.010 dhe kështu me radhë. 476 00:30:38,540 --> 00:30:42,380 >> Ju duhet të marr notations decimal ose hexadecimal apo oktal ose të tjera. 477 00:30:42,380 --> 00:30:47,540 Shumica e njerëzve priren për të marr hexadecimal thjesht kështu që çdo shifër përfaqëson 4 copa 478 00:30:47,540 --> 00:30:49,320 dhe ju mund ta bëni këtë matematikë të shpejtë. 479 00:30:49,320 --> 00:30:54,990 Dhe unë do të tundë dorën time në toupper, e cila është pothuajse e njëjtë, ajo duket pothuajse identike. 480 00:30:54,990 --> 00:31:01,900 Toupper ndodh për të përdorur jo operatori ose më tepër, por ky djalë dhe DF. 481 00:31:01,900 --> 00:31:09,300 Çfarë do të përfaqësojë DF? DF? Dikush? >> [Student] 255. 482 00:31:09,300 --> 00:31:12,780 255? Jo 255. Kjo do të jetë ff. 483 00:31:12,780 --> 00:31:15,210 Ne do të largohen këtë një si një ushtrim pak. 484 00:31:15,210 --> 00:31:23,460 Por në qoftë se ju shkoni nga 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 dhe pastaj atë që vjen pas 9? 485 00:31:23,460 --> 00:31:26,510 Ne jemi lloj i jashtë shifra dhjetore, por në heksadecimal atë që vjen pas 9? 486 00:31:26,510 --> 00:31:29,510 [Student] a. Kështu >> a, b, c, d. 487 00:31:29,510 --> 00:31:33,470 Ju mund të kuptoj se nga atje se çfarë modeli i bit d fakt përfaqëson. 488 00:31:33,470 --> 00:31:38,850 Dhe në qoftë se ne bëjmë matematikë, ne do të shohim se maskë deri në fund duke u kthyer është identike me këtë. 489 00:31:38,850 --> 00:31:45,580 Kjo është f, të gjitha 1s, dhe kjo është d. Pra DF paraqet atë maskë. Dakord. 490 00:31:45,580 --> 00:31:50,980 Dhe së fundi, jo për të bërë gjëra të shëndoshë super, super teknik, 491 00:31:50,980 --> 00:31:53,840 por mendoj kemi dashur të shkruaj një program që e bën këtë. 492 00:31:53,840 --> 00:31:58,960 Më lejoni të shkojnë përpara dhe të bëjë binar, i cili është një program në një skedar të quajtur binary.c. 493 00:31:58,960 --> 00:32:02,050 Dhe tani më lejoni të drejtuar binar dhe jepni një numër të plotë jo-negativ. 494 00:32:02,050 --> 00:32:03,960 Le të fillojë të lehtë dhe lloji në 0. 495 00:32:03,960 --> 00:32:09,010 Kjo tani është një program që printon nga një numër i plotë në përfaqësimin e saj binar. 496 00:32:09,010 --> 00:32:13,470 Pra, nëse unë të luajë këtë lojë përsëri dhe shkruani në vetëm 1, unë duhet të merrni një përfaqësim të 32-bit të 1. 497 00:32:13,470 --> 00:32:15,490 Në qoftë se unë bëj këtë përsëri me 2, unë duhet të merrni atë. 498 00:32:15,490 --> 00:32:19,310 Nëse unë bëj 7, unë duhet të merrni një 1s pak në fund dhe kështu me radhë. 499 00:32:19,310 --> 00:32:22,740 Ajo rezulton kam përmend këtë, sepse me operacionet bitwise 500 00:32:22,740 --> 00:32:25,490 ju në fakt mund të bëjë një gjë tjetër si. 501 00:32:25,490 --> 00:32:29,130 Ju mund të krijoni këto maska ​​dinamike. 502 00:32:29,130 --> 00:32:32,800 Hidhni një sy në këtë shembull një finale përfshin operacionet bitwise. 503 00:32:32,800 --> 00:32:35,490 Këtu është pjesa e parë e kodit, të shpejtë e përdoruesit për një numër, 504 00:32:35,490 --> 00:32:38,130 dhe ai insiston që ju të jepni një numër të plotë jo-negativ. 505 00:32:38,130 --> 00:32:39,780 Pra, kjo është lloj i stuff shkollës së vjetër. 506 00:32:39,780 --> 00:32:41,980 Por këtu është diçka që është lloj i interesante. 507 00:32:41,980 --> 00:32:44,910 >> Si mund të shkoj në lidhje me shtypjen e një numri në binar? 508 00:32:44,910 --> 00:32:48,970 I pari iterate nga ajo për çfarë? 509 00:32:48,970 --> 00:32:52,270 Çfarë është madhësi e një int tipike, të paktën në aplikim? >> [Student] 4. 510 00:32:52,270 --> 00:32:57,130 Kjo është 4. Pra 4 * 8 është 32-1 është 31. 511 00:32:57,130 --> 00:33:02,590 Pra, nëse unë jam duke filluar për të numëruar nga 31, që përfaqëson, del, 512 00:33:02,590 --> 00:33:07,630 thjesht konceptuale, apo 31 bit pak më të lartë me qëllim, e cila është ky djalë gjatë këtu, 513 00:33:07,630 --> 00:33:09,650 ndërsa kjo do të jetë 0 bit. 514 00:33:09,650 --> 00:33:12,850 Pra, kjo është pak 01 ... 31 bit. 515 00:33:12,850 --> 00:33:14,950 Pra, çfarë është ky kod duke bërë? 516 00:33:14,950 --> 00:33:20,140 Këtë njoftim për lak, edhe pse kjo duket fshehtë, është vetëm iterating nga 31 deri në 0. Kjo ishte. 517 00:33:20,140 --> 00:33:24,530 Kështu pjesë interesante tani duhet të jetë në këto 5 rreshta këtu. 518 00:33:24,530 --> 00:33:28,110 Vini re se në këtë linjë unë jam deklaruar një maskë ndryshueshme quajtur 519 00:33:28,110 --> 00:33:30,790 të jenë në përputhje me historinë tonë të këtyre numrave të verdhë. 520 00:33:30,790 --> 00:33:32,200 Dhe pastaj çfarë është kjo duke bërë? 521 00:33:32,200 --> 00:33:35,720 Ky është një tjetër operatori bitwise ne nuk kemi parë më parë, ka shumë të ngjarë. 522 00:33:35,720 --> 00:33:38,300 Kjo është operatori majtë ndryshim. 523 00:33:38,300 --> 00:33:40,060 Ky operator e bën këtë. 524 00:33:40,060 --> 00:33:44,920 Këtu është numri 1, dhe në qoftë se ju bëni ndryshim i la, Left Shift, 525 00:33:44,920 --> 00:33:49,260 çfarë mendoni se ka efektin e bërë me atë 1 individuale? 526 00:33:49,260 --> 00:33:51,290 Fjalë për fjalë zhvendosur atë përsipër. 527 00:33:51,290 --> 00:33:57,540 Pra, nëse numri 1 është ajo që ju keni në të majtë dhe ju filloni duke i Initializing në 31, 528 00:33:57,540 --> 00:34:03,490 çfarë është se do të bëni? Ajo do të marrë këtë numër 1 dhe 31 vende të zhvendoset atë mbi këtu. 529 00:34:03,490 --> 00:34:06,210 Dhe për shkak se nuk ka padyshim ka shifra të tjera pas saj, 530 00:34:06,210 --> 00:34:10,350 ata do të zëvendësohet nga default me ​​0s. 531 00:34:10,350 --> 00:34:15,120 Pra, ju do të fillojnë me numrin 1, e cila natyrisht duket si kjo - 532 00:34:15,120 --> 00:34:18,659 dhe më lejoni të tërheqë atë mbi këtu në qendër. 533 00:34:18,659 --> 00:34:22,139 Dhe pastaj si ju zhvendoset gjëra të majtë, ky djalë në thelb shkon në këtë mënyrë. 534 00:34:22,139 --> 00:34:24,659 Por sa më shpejt që ju bëni atë, një 0 merr mbushur in 535 00:34:24,659 --> 00:34:28,360 Nëse ju zhvendoset atë një herë të dytë, ajo shkon në këtë mënyrë dhe një tjetër 0 merr mbushur in 536 00:34:28,360 --> 00:34:31,000 >> Ju zhvendoset atë përsëri dhe pastaj një tjetër 0 merr mbushur in 537 00:34:31,000 --> 00:34:37,900 Pra, nëse ju bëni këtë gjë e 1 << 31 vende i, ju deri në fund duke marrë një maskë 538 00:34:37,900 --> 00:34:42,550 që është 32 karaktere gjatë, një djathti i cili është një 1, 539 00:34:42,550 --> 00:34:45,199 të gjithë nga pjesa tjetër e cila janë një 0. 540 00:34:45,199 --> 00:34:50,880 Dhe kjo rezulton, si një mënjanë, duke i shtyrë një numër të majtë si kjo 541 00:34:50,880 --> 00:34:53,530 edhe rastësisht, dhe nganjëherë të përshtatshme, 542 00:34:53,530 --> 00:34:57,520 ka efektin e bërë atë për këtë numër? >> [Student] dyfishuar atë. 543 00:34:57,520 --> 00:35:00,980 Dyfishuar atë, sepse secili prej kolonave - vendi 1s, 2s vend, vendi 4s, 544 00:35:00,980 --> 00:35:05,030 Vendi 8s, 16s vend - they're gjithë dyfishimin si ju shkoni në të majtë. 545 00:35:05,030 --> 00:35:09,500 Ose më mirë, kur ju zhvendoset 1s ju jeni do të përfundojë deri në dyfishimin e vlerës së numrit. 546 00:35:09,500 --> 00:35:12,070 Ju mund të përfundojë duke bërë transformimet interesante e shifra 547 00:35:12,070 --> 00:35:15,640 duke e zhvendosur mbi gjithçka në këtë mënyrë nga fuqitë e 2. 548 00:35:15,640 --> 00:35:17,150 Pra, si e bën këtë punë? 549 00:35:17,150 --> 00:35:22,580 Kjo pastaj jep mua një maskë që është e gjitha 0s përveç një 1 në pikërisht vendin e dua atë, 550 00:35:22,580 --> 00:35:27,920 dhe pastaj kjo shprehje, e cila është e vjedhur nga toupper.c, 551 00:35:27,920 --> 00:35:31,770 është thjesht duke thënë se marrë numrin n që përdoruesi shtypur në, 552 00:35:31,770 --> 00:35:34,730 "Dhe" ajo me atë maskë, dhe çfarë po ju do të merrni? 553 00:35:34,730 --> 00:35:39,200 Ju jeni do të merrni një 1 në qoftë se ka një 1 në atë vend maskuar, 554 00:35:39,200 --> 00:35:41,570 ose ju jeni do të merrni një 0 në qoftë se nuk është. 555 00:35:41,570 --> 00:35:44,370 Dhe kështu të gjithë ky program bën në mënyrë efektive është se ka një lak, 556 00:35:44,370 --> 00:35:48,340 dhe kjo krijon një maskë me një 1 gjatë këtu, pastaj një 1 gjatë këtu, pastaj një 1 gjatë këtu, 557 00:35:48,340 --> 00:35:52,950 dhe ai e përdor këtë bitwise dhe mashtrim të them është se pak 1 në input të përdoruesit këtu? 558 00:35:52,950 --> 00:35:59,220 >> A ka pak 1 në input të përdoruesit këtu? Dhe nëse është kështu, fjalë për fjalë të shtypura 1, tjetër shtypur 0. 559 00:35:59,220 --> 00:36:03,780 Ne jemi duke e bërë këtë me ints vetëm për shkak se kjo është arsyeja pse ne jemi duke bërë 32 copa në vend të 8, 560 00:36:03,780 --> 00:36:06,900 por ajo që ne kemi prezantuar, atëherë është kjo bitwise DHE, kjo bitwise OSE, 561 00:36:06,900 --> 00:36:10,450 dhe ky operator majtë ndryshim, të cilat nuk janë shpesh tmerrësisht të dobishme, 562 00:36:10,450 --> 00:36:12,230 por kjo rezulton se ata mund të jenë. 563 00:36:12,230 --> 00:36:16,560 Në fakt, në qoftë se keni qenë për të përfaqësuar diçka si një grup të Booleans 564 00:36:16,560 --> 00:36:21,260 vetëm për të përfaqësuar vërtetë apo e rreme, mendoj që ju të kërkuar për të mbajtur gjurmët e nëse janë apo jo 565 00:36:21,260 --> 00:36:24,630 një dhomë plot 300 studentë është i pranishëm, 566 00:36:24,630 --> 00:36:29,420 ju mund të deklarojë një rrjet të madhësisë 300 e tipit bool në mënyrë që ju të merrni 300 bools, 567 00:36:29,420 --> 00:36:33,090 dhe ju mund të vendosni çdo të vërtetë nëse dikush është këtu dhe të rreme ndryshe. 568 00:36:33,090 --> 00:36:37,550 Pse është se përfaqësimi në atë strukturën e të dhënave joefikase? 569 00:36:39,370 --> 00:36:44,800 Çfarë është e keqe në lidhje me hartimin e kësaj strukture të dhënave, një grup i 300 bools? 570 00:36:46,190 --> 00:36:49,600 Çfarë është një bool, në fakt, nën kapuç? 571 00:36:49,600 --> 00:36:52,310 Kjo, gjithashtu, është diçka që nuk mund të jetë njohur. 572 00:36:52,310 --> 00:36:53,720 Ajo rezulton se nuk ka bool. 573 00:36:53,720 --> 00:36:56,620 Mos harroni ne lloj i krijuar që me dosjen cs50.h, 574 00:36:56,620 --> 00:36:58,630 e cila në vetvete përfshin bool standarde. 575 00:36:58,630 --> 00:37:00,930 C është lloj i heshtur, edhe pse, kur është fjala për bool. 576 00:37:00,930 --> 00:37:04,880 Ai përdor 8 bit për të përfaqësuar çdo bool, e cila është krejtësisht e kota 577 00:37:04,880 --> 00:37:09,040 sepse padyshim, sa copa keni nevojë për të përfaqësuar një bool? Vetëm 1. 578 00:37:09,040 --> 00:37:13,190 Pra, del se në qoftë se ju tani keni mundësinë me operatorët bitwise 579 00:37:13,190 --> 00:37:17,760 për të manipuluar copa individuale edhe në një char, madje edhe në një bajt vetme, 580 00:37:17,760 --> 00:37:21,380 kjo rezulton nga ju mund të ulet kujtimin e nevojshme për të përfaqësuar diçka stupid 581 00:37:21,380 --> 00:37:25,490 si kjo strukturë frekuentimit vetëquajtur të dhënave nga një faktor i 8. 582 00:37:25,490 --> 00:37:29,820 Në vend të përdorimit të tetë bit për të përfaqësuar vërtetë apo e rreme, ju mund të përdorni një fjalë 583 00:37:29,820 --> 00:37:34,500 duke përdorur një bajt vetme për çdo tetë nxënës në klasë 584 00:37:34,500 --> 00:37:41,990 dhe toggling 0-1 copa individuale duke përdorur këto lloje të nivelit të ulët truket. 585 00:37:43,850 --> 00:37:49,460 Kjo me të vërtetë vënë një fund për energji. A ka ndonjë pyetje rreth operacioneve bitwise? 586 00:37:49,460 --> 00:37:52,710 >> Po. >> [Student] A ka një operator ekskluziv apo? 587 00:37:52,710 --> 00:37:56,440 Po. Nuk është një operator ekskluzive ose që duket si kjo, ^, simboli karrota, 588 00:37:56,440 --> 00:38:02,070 cila do të thotë vetëm gjë te pare ose gjë dytë mund të jetë një 1 për dalje të jetë një 1. 589 00:38:02,070 --> 00:38:07,750 Ekziston edhe një organizatë jo, ~, i cili do t'ju lejojë të anasjell një 0 në një 1 ose anasjelltas, si dhe. 590 00:38:07,750 --> 00:38:11,600 Dhe ka edhe një operator i drejtë ndryshim, >>, që është e kundërta e një të pamë. 591 00:38:11,600 --> 00:38:13,850 Dakord. Le të marrin gjërat tani në një nivel më të lartë. 592 00:38:13,850 --> 00:38:16,770 Ne kemi filluar duke folur në lidhje me tekstin dhe pastaj compressing atë 593 00:38:16,770 --> 00:38:19,650 dhe përfaqësojnë tekstin me numrat më pak të bit; 594 00:38:19,650 --> 00:38:22,890 kemi biseduar pak rreth asaj se si ne tani mund të fillojnë të manipuluar gjërat në një nivel bitwise. 595 00:38:22,890 --> 00:38:26,640 Le tani zoom mbrapa deri 10.000 këmbët për përfaqësim 596 00:38:26,640 --> 00:38:29,250 nga gjërat më komplekse të tilla si grafikë. 597 00:38:29,250 --> 00:38:32,950 Këtu kemi një flamur të Gjermanisë, këtu kemi një të Francës. 598 00:38:32,950 --> 00:38:36,350 Këto mund të jenë të përfaqësuara në formate që ju mund të dini - gifs, për shembull. 599 00:38:36,350 --> 00:38:40,030 Nëse ju keni parë ndonjëherë një imazh në Web që përfundon në. Gif, 600 00:38:40,030 --> 00:38:43,000 kjo është një format zëvendësoj graphics. 601 00:38:43,000 --> 00:38:47,530 Këto dy flamuj këtu lloj hua veten e tyre për të compression 602 00:38:47,530 --> 00:38:52,050 për çfarë arsye ndoshta të dukshme? >> [Përgjigja e padëgjueshme Student] 603 00:38:52,050 --> 00:38:53,440 Nuk është një shumë e përsëritjes, apo jo? 604 00:38:53,440 --> 00:38:57,270 Në mënyrë që të dërgojë flamurin e Gjermanisë, të mendojnë për këtë si një imazh në ekran 605 00:38:57,270 --> 00:38:59,030 mbështetur në ditët tuaja para. 606 00:38:59,030 --> 00:39:02,380 Ju mund të kujtojnë se ka pixels individuale ose pika që përbëjnë një imazh. 607 00:39:02,380 --> 00:39:06,650 >> Ka një radhë e tërë e pikave të zeza dhe një rresht të tërë të pikave të zeza. 608 00:39:06,650 --> 00:39:10,110 Ka një bandë e rreshtave të pikave të zeza që ne mund të shohim nëse ne me të vërtetë në zoomed, 609 00:39:10,110 --> 00:39:13,370 ashtu si kur ne zoomed në në fytyrën Rob në Photoshop. 610 00:39:13,370 --> 00:39:15,500 Sapo kemi marrë të thellë dhe më të thellë dhe më thellë në imazh, 611 00:39:15,500 --> 00:39:19,990 ju keni filluar duke parë pixelation, të gjitha sheshet që përbënin syrin e tij në këtë rast. 612 00:39:19,990 --> 00:39:24,130 Marrëveshja same here. Nëse ne zoomed në mjaft pak, ju do të shihni pika individuale. 613 00:39:24,130 --> 00:39:27,110 E pra, kjo është lloj i një humbje të bit. 614 00:39:27,110 --> 00:39:32,120 Në qoftë se një e treta e flamurit është e zezë dhe një e treta e flamurit është i verdhë dhe kështu me radhë, 615 00:39:32,120 --> 00:39:34,860 pse nuk mund të compress disi këtë flamur? 616 00:39:34,860 --> 00:39:39,560 Dhe edhe flamuri francez mund të jetë i ngjeshur edhe pse modeli është pak ndryshe. 617 00:39:39,560 --> 00:39:44,120 Kjo rezulton nga format file GIF është një format compression lossless, 618 00:39:44,120 --> 00:39:48,420 që do të thotë që ju mund të merrni një imazh si flamurin gjerman këtu, 619 00:39:48,420 --> 00:39:53,540 ju mund të hidhni një shumë e copa të saj pa cënuar cilësinë. 620 00:39:53,540 --> 00:39:55,340 Kjo është në kontrast me diçka si JPEG, 621 00:39:55,340 --> 00:39:57,050 me të cilën shumica prej nesh janë ndoshta më të njohur. 622 00:39:57,050 --> 00:39:59,000 Facebook fotot dhe fotot Flickr dhe si 623 00:39:59,000 --> 00:40:02,200 janë pothuajse gjithmonë të ruhen si JPEG, kur ata janë të ngarkuar, 624 00:40:02,200 --> 00:40:08,100 por jpegs është një lossy - format ku ju mund të hedhin larg bit - lossy 625 00:40:08,100 --> 00:40:10,430 por ju gjithashtu hedhin larg cilësisë. 626 00:40:10,430 --> 00:40:13,890 Dhe kështu që nëse ju ngjesh fotot me Photoshop ose ngarkoni atyre në Facebook 627 00:40:13,890 --> 00:40:15,580 ose të marrë ato në një telefon me të vërtetë mutit, 628 00:40:15,580 --> 00:40:19,510 ju e dini se fotografia fillon të merrni shumë njolla-njolla dhe pixelated, 629 00:40:19,510 --> 00:40:22,290 dhe kjo është për shkak se ajo është duke u ngjeshur me kompjuter ose telefon 630 00:40:22,290 --> 00:40:24,550 nga fjalë për fjalë informacion hedhur larg. 631 00:40:24,550 --> 00:40:28,500 Por GIF është e mahnitshme në atë që mund të përdorni bit pak se ajo mund nga default 632 00:40:28,500 --> 00:40:30,750 pa humbur ndonjë informacion. 633 00:40:30,750 --> 00:40:32,410 >> Dhe kjo në thelb e bën këtë si më poshtë. 634 00:40:32,410 --> 00:40:38,740 Në vend se në dyqan një skedar si një PKM do një trefishtë RGB për zi, zi, zi, zi, 635 00:40:38,740 --> 00:40:42,570 zezë, e zezë, e zezë, e zezë, e zezë, e zezë, e zezë, e zezë dhe kështu me radhë, 636 00:40:42,570 --> 00:40:45,640 përkundrazi, formati GIF do të thonë, "Black" 637 00:40:45,640 --> 00:40:48,330 dhe pastaj, "Përsëriteni këtë 100 herë," ose diçka të tillë. 638 00:40:48,330 --> 00:40:52,280 "Zi, të përsëritur këtë 100 herë, e zezë, të përsëritur këtë 100 herë ..." 639 00:40:52,280 --> 00:40:54,530 "Yellow, përsëris këtë 100 herë." 640 00:40:54,530 --> 00:40:57,200 Dhe kështu e kujton, në thelb, pixel pari nga e majta 641 00:40:57,200 --> 00:41:02,160 dhe pastaj kodon disi nocionin e përsëritjes se piksel përsëri dhe përsëri. 642 00:41:02,160 --> 00:41:06,110 Pra GIFs pastaj mund të compress veten pa humbur asnjë informacion. 643 00:41:06,110 --> 00:41:09,510 Por në qoftë se keni pasur në mend, në qoftë se është algoritmi që gifs përdorimin, 644 00:41:09,510 --> 00:41:13,180 cila prej këtyre flamujve, edhe pse ata duken identike në madhësi, 645 00:41:13,180 --> 00:41:19,620 do të jetë më i vogël, kur ruhen në diskun si një GIF? >> [Student] Gjermani. 646 00:41:19,620 --> 00:41:21,660 Gjermania do të jetë më i vogël? Pse? 647 00:41:21,660 --> 00:41:26,620 [Student] Sepse ju përsëris atë shumë, shumë herë horizontalisht 648 00:41:26,620 --> 00:41:29,010 dhe pastaj ju përsëris një tjetër kohë. Pikërisht >>. 649 00:41:29,010 --> 00:41:32,020 Sepse njerëzit që shpikën GIF vetëm lloji i vendosur në mënyrë arbitrare 650 00:41:32,020 --> 00:41:36,040 se përsëritja do të jetë leveraged horizontalisht dhe jo anash. 651 00:41:36,040 --> 00:41:40,900 Ka përsëritje shumë më tepër anash këtu në flamurin gjerman se në flamurin francez. 652 00:41:40,900 --> 00:41:44,430 Pra, në qoftë se ne të vërtetë të hapur një dosje në hard drive time që ka këto gifs, 653 00:41:44,430 --> 00:41:51,920 vërtetë ju mund të shihni se flamuri gjerman këtu është 2 kilobytes dhe një francez është 4 kilobytes. 654 00:41:51,920 --> 00:41:54,080 Ajo ndodh të jetë një rastësi që një është dy herë të tjera, 655 00:41:54,080 --> 00:41:57,960 por kjo është në fakt rast se flamuri francez është shumë më i madh. 656 00:41:57,960 --> 00:42:01,250 >> Edhe pse ne jemi duke folur këtu për grafikë, idetë e njëjta mund të aplikojnë për 657 00:42:01,250 --> 00:42:05,150 jo gjëra të tilla si flamujt, por imazhet që janë pak më shumë komplekse. 658 00:42:05,150 --> 00:42:08,170 Nëse ju merrni një foto të një mollë, me siguri nuk është një shumë e dyfishimit atje, 659 00:42:08,170 --> 00:42:11,040 kështu që ne mund të kujtojmë se disi sfond default është blu 660 00:42:11,040 --> 00:42:13,230 dhe jo, si i djathtë foto sugjeron, 661 00:42:13,230 --> 00:42:16,830 duhet të mbani mend ngjyra e çdo pixel vetme në këtë foto. 662 00:42:16,830 --> 00:42:21,060 Pra, ne mund të hedhin bit larg atje pa humbur informata. 663 00:42:21,060 --> 00:42:23,340 Mollë ende duket vetëm njëjtë. 664 00:42:23,340 --> 00:42:27,510 Në këtë shembull këtu, ju mund të shihni se çfarë ndodh në një film. 665 00:42:27,510 --> 00:42:31,970 Këto përfaqësojnë vjetër-shkollën lëkundet film ku në imazhin lartë atje 666 00:42:31,970 --> 00:42:36,900 ju keni një ngarje RV kaluar një shtëpi dhe një pemë. 667 00:42:36,900 --> 00:42:42,130 Dhe si ai që drejton van kaluarën nga e majta në të djathtë, çfarë padyshim nuk ndryshon? 668 00:42:42,130 --> 00:42:45,320 Shtëpia nuk është duke shkuar askund, dhe pema nuk është duke shkuar askund. 669 00:42:45,320 --> 00:42:47,700 E vetmja gjë që është duke lëvizur është van në këtë rast. 670 00:42:47,700 --> 00:42:51,650 Pra, si Historiku pandryshuar sugjeron, çfarë ju mund të bëni në filma 671 00:42:51,650 --> 00:42:56,530 është në mënyrë të ngjashme vetëm hedhin larg informacione që nuk ndryshon në mes kornizave. 672 00:42:56,530 --> 00:42:58,900 Kjo është e njohur përgjithësisht si compression interframe 673 00:42:58,900 --> 00:43:02,120 të cilit, nëse kjo kornizë duket pothuajse identik me këtë, 674 00:43:02,120 --> 00:43:05,390 le të mos shqetësojë ruajtjen në disk asnjë informacion identike 675 00:43:05,390 --> 00:43:09,250 në këto korniza e ndërmjetme, le të përdorin vetëm korniza kryesore herë në një kohë 676 00:43:09,250 --> 00:43:13,420 që në fakt të ruajtur këtë informacion redundantly vetëm si një mendje e shëndoshë pak kontroll. 677 00:43:13,420 --> 00:43:18,620 >> Nga ana tjetër, një tjetër qasje për video compressing është në këtë shembull të dytë dhe të ulët këtu, 678 00:43:18,620 --> 00:43:23,970 ku më tepër se dyqan 30 korniza, pse nuk ju vetëm dyqan 15 korniza një të dytë në vend? 679 00:43:23,970 --> 00:43:27,070 Në vend se llojin film të rrjedhin bukur, të përkryer, 680 00:43:27,070 --> 00:43:30,060 kjo mund të duket si ajo e stuttering pak, një shkollë të vjetër pak, 681 00:43:30,060 --> 00:43:37,190 por efekti neto do të jetë për të përdorur copa shumë më pak se përndryshe mund të jenë të nevojshme. 682 00:43:37,190 --> 00:43:39,240 Pra, ku e bën këtë, atëherë na lënë? 683 00:43:39,240 --> 00:43:41,700 Kjo ishte pak e një mënjanë se ku tjetër ju mund të shkoni me compression. 684 00:43:41,700 --> 00:43:45,140 Për më shumë mbi këtë, të marrë një klasë si CS175 këtu. 685 00:43:45,140 --> 00:43:46,990 Ja një shembull tjetër brenda video. 686 00:43:46,990 --> 00:43:49,190 Nëse bee është e vetmja gjë lëviz, 687 00:43:49,190 --> 00:43:51,790 ju mund të vërtetë të hedhin larg informacion në ato korniza e mesme 688 00:43:51,790 --> 00:43:55,260 sepse lule dhe gjethe qielli dhe nuk janë ndryshuar. 689 00:43:55,260 --> 00:43:57,960 Por le të tani e konsiderojnë një gjë të fundit. 690 00:43:57,960 --> 00:44:03,890 Në 5 minutat e ardhshme kemi lënë pas përgjithmonë në C leksion? Po. Jo në psets, pse. 691 00:44:03,890 --> 00:44:10,210 Historia e fundit në lidhje me C dhe pastaj ne kemi marrë për gjëra shumë sexy 692 00:44:10,210 --> 00:44:13,870 përfshirë HTML dhe Web dhe woo hoo-. Dakord. 693 00:44:13,870 --> 00:44:16,050 Këtu ne do të shkojmë. Kjo është motivimi. 694 00:44:16,050 --> 00:44:20,020 Kjo rezulton nga të gjithë këtë kohë, kur ne kemi qenë të shkruar programet kemi drejtuar tingëllimë. 695 00:44:20,020 --> 00:44:23,890 Dhe tingëllimë, ne kemi thënë që në javën e parë shumë e shumë, merr kodin burimor 696 00:44:23,890 --> 00:44:25,740 dhe konverton atë në kodin e objektit. 697 00:44:25,740 --> 00:44:28,540 Ajo merr C dhe konverton atë në 0s dhe 1s. 698 00:44:28,540 --> 00:44:32,150 Unë kam qenë lloj i gënjyer për ju për disa javë, sepse ajo nuk është mjaft aq e thjeshtë sa se. 699 00:44:32,150 --> 00:44:36,750 >> Ka shumë më tepër në vazhdim e sipër nën kapuç, kur ju drejtuar një program si tingëllimë. 700 00:44:36,750 --> 00:44:39,560 Në fakt, procesi i hartimit të një programi të vërtetë mund të përmblidhet, 701 00:44:39,560 --> 00:44:42,210 si ju mund të kujtojnë nga video Rob mbi hartuesit, 702 00:44:42,210 --> 00:44:47,580 në këto 4 hapa: para-përpunimin, hartimin veten, montimi, si dhe lidh. 703 00:44:47,580 --> 00:44:51,950 Por ne në klasë dhe shumica e njerëzve në botë zakonisht përmbledhin të gjitha këto hapa 704 00:44:51,950 --> 00:44:54,410 si vetëm "përpilimit". 705 00:44:54,410 --> 00:44:58,070 Por, nëse ne fillojmë me kod burim si kjo, kujtojnë kjo është ndoshta më e thjeshtë programi C 706 00:44:58,070 --> 00:45:03,530 ne kemi shkruar deri tani, kujtojnë se kur përpilohet ajo përfundon deri në kërkim si kjo. 707 00:45:03,530 --> 00:45:07,310 Por ka në fakt një hap i ndërmjetëm, dhe këto hapa janë si më poshtë. 708 00:45:07,310 --> 00:45:10,750 Së pari nuk është kjo gjë në krye të kësaj dhe shumica e programeve tona, 709 00:45:10,750 --> 00:45:13,550 # Include 710 00:45:13,550 --> 00:45:17,210 Çfarë do të përfshijnë # bëni për ne? 711 00:45:17,210 --> 00:45:24,150 Kjo kopje shumë e shumë dhe pastat përmbajtjet e stdio.h në dosjen time kështu që pse? 712 00:45:24,150 --> 00:45:27,220 Pse nuk më intereson në lidhje me përmbajtjen e stdio.h? Çfarë është atje me interes? 713 00:45:27,220 --> 00:45:32,310 Deklarata printf së, prototip të saj, në mënyrë që pastaj të përpiluesit e di se çfarë dua të them 714 00:45:32,310 --> 00:45:34,900 kur unë përmend këtë funksion printf. 715 00:45:34,900 --> 00:45:39,390 Kështu hap në hartimin 1 është para-përpunimit, ku një program si tingëllimë 716 00:45:39,390 --> 00:45:43,450 ose disa program ndihmës që vjen me tingëllimë lexon kodin tuaj të lartë deri në fund, 717 00:45:43,450 --> 00:45:47,740 majta në të djathtë, dhe çdo herë që sheh një simbol # ndjekur nga një fjalen si përfshijnë, 718 00:45:47,740 --> 00:45:53,980 ajo kryen këtë operacion, kopjimi dhe pasting në këtë rast stdio.h në dosjen tuaj. 719 00:45:53,980 --> 00:45:55,510 Kjo është hap 1. 720 00:45:55,510 --> 00:45:59,620 Atëherë ju keni një fotografi shumë më të madhe C për shkak të kopje të madh, punë paste se ka ndodhur vetëm. 721 00:45:59,620 --> 00:46:01,710 >> Hapi 2 tani është përpilimit. 722 00:46:01,710 --> 00:46:04,880 Por kjo rezulton përpilimin e merr kodin burim që duket si ky 723 00:46:04,880 --> 00:46:08,160 dhe e kthen atë në diçka që duket si kjo, 724 00:46:08,160 --> 00:46:12,560 e cila për ata që njohin quhet? >> [Student] Kuvendit. Gjuha >> Kuvendit. 725 00:46:12,560 --> 00:46:16,700 Kjo është në fakt diçka që nëse ju merrni CS61 ju do të zhyten në në më shumë detaje. 726 00:46:16,700 --> 00:46:22,380 Kjo është vetëm në lidhje me sa më afër që ju mund të merrni për të shkruar 0s dhe 1s veten 727 00:46:22,380 --> 00:46:25,850 por shkruar gjërat në një mënyrë të tillë që ende bën të paktën një grimë pak e kuptim. 728 00:46:25,850 --> 00:46:30,760 Këto janë udhëzime makinës, dhe nëse lëvizni poshtë në funksion kryesor këtu, 729 00:46:30,760 --> 00:46:35,470 vini re se nuk është ky udhëzim shtytje, lëvizin udhëzim, hiq udhëzim, 730 00:46:35,470 --> 00:46:38,550 telefononi udhëzim, dhe kështu me radhë. 731 00:46:38,550 --> 00:46:42,930 Kur ju dëgjoni se kompjuteri juaj ka Intel brenda, 732 00:46:42,930 --> 00:46:46,180 ju keni një CPU Intel në Mac apo PC tuaj, çfarë do të thotë kjo? 733 00:46:46,180 --> 00:46:51,200 Një CPU vjen e ndërtuar nga kompanitë si Intel kuptuar udhëzime të caktuara. 734 00:46:51,200 --> 00:46:55,770 Ata nuk kanë asnjë ide se çfarë funksionon si shkëmbim janë ose kryesore janë në vetvete, 735 00:46:55,770 --> 00:47:00,060 por ata e dinë se çfarë shumë të ulët të nivelit udhëzime si të shtoni, zbres, shtytje, 736 00:47:00,060 --> 00:47:02,430 veprim, thirrje, dhe kështu me radhë janë. 737 00:47:02,430 --> 00:47:06,170 Kështu që kur ju përpilojnë kodin C në gjuhë të kuvendit, 738 00:47:06,170 --> 00:47:11,820 tuaj shumë miqësore-looking përdorues kodi është konvertuar në diçka që duket si kjo, 739 00:47:11,820 --> 00:47:21,670 që fjalë për fjalë lëviz bytes ose 4 bytes rreth në njësi të tilla të vogla brenda dhe jashtë CPU. 740 00:47:21,670 --> 00:47:26,820 Por në fund, kur tingëllimë është i gatshëm për të marrë këtë përfaqësimin e programit tuaj 741 00:47:26,820 --> 00:47:30,940 në 0s dhe 1s, atëherë hapi i quajtur grumbulluar ndodh, 742 00:47:30,940 --> 00:47:33,850 dhe kjo përsëri gjitha ndodh në injoroj një sy, kur running tingëllimë. 743 00:47:33,850 --> 00:47:39,300 Ne fillim këtu, ai nxjerr një fotografi si kjo, dhe pastaj ajo konverton atë në këto 0s dhe 1s. 744 00:47:39,300 --> 00:47:42,000 Dhe në qoftë se ju doni të shkoni përsëri në një pikë dhe në të vërtetë shohim këtë në veprim, 745 00:47:42,000 --> 00:47:48,220 nëse unë shkoj në hello1.c--kjo është një nga programet e para kemi shikuar në - 746 00:47:48,220 --> 00:47:53,710 normalisht ne do të përpilojë këtë me hello1.c tingëllimë dhe kjo do të na japë a.out. 747 00:47:53,710 --> 00:47:59,890 Nëse nga ana tjetër ju në vend që të japë atë S-flamurin, atë që ju do të merrni është hello1.s 748 00:47:59,890 --> 00:48:02,750 dhe ju do të shihni në të vërtetë gjuhën e kuvendit. 749 00:48:02,750 --> 00:48:05,750 >> Unë jam duke bërë këtë për një program shumë të shkurtër, por në qoftë se ju shkoni përsëri për Scramble 750 00:48:05,750 --> 00:48:08,740 ose Recover ose ndonjë program që ju keni shkruar dhe vetëm nga kurioziteti 751 00:48:08,740 --> 00:48:13,240 duan të shohin se çfarë në të vërtetë duket si, çfarë është në fakt duke u ushqyer në CPU, 752 00:48:13,240 --> 00:48:15,700 ju mund të përdorni se-S flamurin me tingëllimë. 753 00:48:15,700 --> 00:48:17,770 Por pastaj së fundi, ka ende një Gotcha. 754 00:48:17,770 --> 00:48:21,810 Këtu janë 0s dhe 1s që përfaqësojnë zbatimin tim Hello World,. 755 00:48:21,810 --> 00:48:25,530 Por unë përdorur funksionin dikush tjetër në programin tim. 756 00:48:25,530 --> 00:48:28,710 Pra, edhe pse procesi ka qenë që unë të marrë hello.c, 757 00:48:28,710 --> 00:48:34,280 ajo merr hartuar në kodin kuvendit, dhe pastaj ajo merr mbledhur në 0s dhe 1s, 758 00:48:34,280 --> 00:48:37,460 vetëm 0s dhe 1s që janë outputted në këtë moment në kohë 759 00:48:37,460 --> 00:48:40,270 janë ato që rezultojnë nga kodin tim. 760 00:48:40,270 --> 00:48:44,400 Por personi i cili shkroi printf, ata hartuar kodin e tyre 20 vjet më parë 761 00:48:44,400 --> 00:48:47,000 dhe kjo është instaluar tashmë diku në aplikim, 762 00:48:47,000 --> 00:48:51,610 kështu që ne duhet të bashkohen disi e tij ose të saj 0s dhe 1s me 0s im dhe 1s, 763 00:48:51,610 --> 00:48:56,160 dhe që na sjell në hapin 4 dhe të fundit të hartimit, i njohur si lidh. 764 00:48:56,160 --> 00:48:58,680 Pra, në anën e majtë kemi të saktë të njëjtën tablo si më parë: 765 00:48:58,680 --> 00:49:02,580 hello.c bëhet kuvendi bëhet Kodi 0s dhe 1s. 766 00:49:02,580 --> 00:49:05,960 Por të kujtojnë se unë përdorur bibliotekën standarde I / O në kodin tim, 767 00:49:05,960 --> 00:49:10,350 dhe që do të thotë diku në kompjuter ka një file i quajtur stdio.c 768 00:49:10,350 --> 00:49:13,980 ose të paktën versioni i hartuar prej tyre, sepse dikush disa vjet me pare 769 00:49:13,980 --> 00:49:18,530 stdio.c hartuar në kodin kuvendit dhe pastaj një bandë e tërë e 0s dhe 1s. 770 00:49:18,530 --> 00:49:21,130 Kjo është ajo që është njohur si një statike apo dinamike një bibliotekë. 771 00:49:21,130 --> 00:49:23,350 Kjo është disa fotografi të ulur diku në aplikim. 772 00:49:23,350 --> 00:49:28,710 >> Por së fundi, unë kam për të marrë 0s tim dhe 1s dhe 0s që personi dhe të 1s 773 00:49:28,710 --> 00:49:32,760 dhe disi lidhin ato së bashku, fjalë për fjalë të kombinuar ato 0s dhe 1s 774 00:49:32,760 --> 00:49:37,900 në një skedar të vetëm të quajtur a.out ose hello1 ose çfarëdo kam quajtur programin tim 775 00:49:37,900 --> 00:49:43,320 në mënyrë që rezultati përfundimtar i ka të gjitha të 1s dhe 0s që duhet të përbëjnë programin tim. 776 00:49:43,320 --> 00:49:45,660 Pra, gjithë kësaj kohe kjo semestrit, kur ju keni qenë duke përdorur tingëllimë 777 00:49:45,660 --> 00:49:48,750 dhe edhe më shumë kohët e fundit running bëjë në mënyrë që të kandidojë tingëllimë, 778 00:49:48,750 --> 00:49:53,580 të gjitha këto hapa janë ndodhur menjëherë lloj i, por shumë qëllimisht. 779 00:49:53,580 --> 00:49:57,830 Dhe kështu që nëse ju vazhdoni për në shkenca kompjuterike, domethënë CS61, 780 00:49:57,830 --> 00:50:00,850 kjo është shtresa që ju do të vazhdojë të zhvishem përsëri jashtë atje 781 00:50:00,850 --> 00:50:06,980 duke folur në lidhje me efikasitetin, implikimet e sigurisë, dhe si nga këto detaje të nivelit të ulët. 782 00:50:06,980 --> 00:50:09,220 Por me këtë, ne jemi gati për të lënë C prapa. 783 00:50:09,220 --> 00:50:11,420 Le të shkojnë përpara dhe për të marrë 5-minutësh pushim tonë tani, 784 00:50:11,420 --> 00:50:14,190 dhe kur kemi ardhur përsëri: Internet. 785 00:50:17,280 --> 00:50:19,170 Dakord. Ne jemi mbrapa. 786 00:50:19,170 --> 00:50:23,590 Tani ne fillojmë vështrim tonë jo vetëm në HTML, sepse, si ju do të shihni, 787 00:50:23,590 --> 00:50:26,050 HTML vetë është në të vërtetë shumë e thjeshtë 788 00:50:26,050 --> 00:50:29,270 por me të vërtetë në programimin e web më në përgjithësi, Networking më në përgjithësi, 789 00:50:29,270 --> 00:50:31,770 dhe si gjithë këtyre teknologjive të vijnë së bashku 790 00:50:31,770 --> 00:50:35,400 për të na lejuar për të krijuar programe shumë më të sofistikuara në majë të internetit 791 00:50:35,400 --> 00:50:38,690 se deri tani ne kemi qenë në gjendje për të në këto dritare të zezë dhe të bardhë. 792 00:50:38,690 --> 00:50:42,140 Në të vërtetë, në këtë pikë, në semestrin edhe pse ne do të shpenzojnë më pak kohë relativisht të 793 00:50:42,140 --> 00:50:46,200 në PHP, HTML, CSS, JavaScript, SQL dhe më shumë, 794 00:50:46,200 --> 00:50:48,480 shumica e studentëve do të përfundojnë duke bërë projekte që janë përfundimtare web-bazuar 795 00:50:48,480 --> 00:50:51,230 sepse si ju do të shihni, sfondi ju tani keni në C 796 00:50:51,230 --> 00:50:54,450 është shumë e aplikueshme për këto të nivelit të lartë gjuhë. 797 00:50:54,450 --> 00:50:56,800 >> Dhe si ju filloni të menduarit në lidhje me projektin tuaj përfundimtar, 798 00:50:56,800 --> 00:50:59,940 i cili, ashtu si Set Problem 0, ku ju u inkurajuan 799 00:50:59,940 --> 00:51:02,160 të bëjë asgjë më me interes për ju në Scratch, 800 00:51:02,160 --> 00:51:05,790 projekti përfundimtar është mundësia juaj për të marrë njohuritë tuaja newfound dhe tru me C 801 00:51:05,790 --> 00:51:09,850 ose PHP apo JavaScript ose si jashtë për një shëtitje 802 00:51:09,850 --> 00:51:12,330 dhe për të krijuar copë tuaj shumë vetë e softuerit për botën për të parë. 803 00:51:12,330 --> 00:51:17,770 Dhe pasardhësve të ju me ide, e di se ju mund të drejtojë këtu, projects.cs50.net. 804 00:51:17,770 --> 00:51:21,800 Çdo vit, ne kërkoj ide nga fakultetit dhe stafit dhe grupet studentore në kampus 805 00:51:21,800 --> 00:51:27,330 vetëm për të paraqesin idetë e tyre për gjëra interesante që mund të zgjidhen duke përdorur kompjuterët, 806 00:51:27,330 --> 00:51:29,860 duke përdorur faqet e internetit, duke përdorur software. 807 00:51:29,860 --> 00:51:32,360 Pra, nëse ju jeni duke luftuar për të dalë me një ide nga mesi juaj, 808 00:51:32,360 --> 00:51:35,790 me të gjitha mjetet lëvizni nëpër ideve atje nga këtë vit dhe i fundit. 809 00:51:35,790 --> 00:51:39,990 Kjo është krejtësisht në rregull për të trajtuar një projekt që ka qenë trajtuar më parë. 810 00:51:39,990 --> 00:51:44,540 Ne kemi parë shumë Apps për të parë statusin e rrobave në kampus, 811 00:51:44,540 --> 00:51:47,000 Apps të shumta për të lundrimit menu sallë ngrënie, 812 00:51:47,000 --> 00:51:49,540 Apps shumë për të lundrimit katalogun kurs dhe si. 813 00:51:49,540 --> 00:51:53,680 Dhe me të vërtetë, në një leksion të ardhmen dhe në seminare të ardhshme, 814 00:51:53,680 --> 00:51:57,750 ne do të prezantoj me një TV në dispozicion të publikut, të dy komerciale në dispozicion 815 00:51:57,750 --> 00:52:02,520 si edhe këtu në dispozicion nga CS50 në kampus në mënyrë që ju të keni qasje në të dhënat 816 00:52:02,520 --> 00:52:04,910 dhe pastaj mund të bëjë gjëra interesante me të. 817 00:52:04,910 --> 00:52:09,380 Pra, më shumë në projektet përfundimtare në disa ditë, kur ne lirimin specifikimet, 818 00:52:09,380 --> 00:52:12,990 por tani për tani, e di se ju mund të punoni solo ose me një apo dy miqve 819 00:52:12,990 --> 00:52:16,010 në projektin më të ndonjë interes për ju. 820 00:52:16,010 --> 00:52:18,080 Internet. 821 00:52:18,080 --> 00:52:22,300 Ju shkoni përpara dhe të largohen nga laptopë tuaj, ju shkoni në facebook.com për herë të parë, 822 00:52:22,300 --> 00:52:27,020 nuk ka hyrë në kohët e fundit, dhe hit Enter. Çfarë saktësisht ndodh? 823 00:52:27,020 --> 00:52:30,150 >> Kur ju goditi Shkruani në kompjuterin tuaj, një bandë e tërë e hapave 824 00:52:30,150 --> 00:52:32,600 fillojnë lloj magjike ndodh. 825 00:52:32,600 --> 00:52:35,960 Kështu që ju këtu në server majtë, web si Facebook është këtu në të djathtë, 826 00:52:35,960 --> 00:52:42,500 dhe disi ju jeni duke përdorur këtë gjuhë quajtur HTTP, Hypertext Transfer Protocol. 827 00:52:42,500 --> 00:52:46,770 HTTP nuk është një gjuhë programimi. Kjo është më shumë një protokoll. 828 00:52:46,770 --> 00:52:52,310 Kjo është një grup i konventave që shfletues web dhe serverat e internetit përdorin kur intercommunicating. 829 00:52:52,310 --> 00:52:54,360 Dhe çfarë do të thotë kjo është si vijon. 830 00:52:54,360 --> 00:52:56,790 Ashtu si në botën e vërtetë, ne kemi këto konventa 831 00:52:56,790 --> 00:53:00,140 ku nëse ju i përmbushni disa të njeriut për herë të parë, në qoftë se ju nuk do mend mua humoring këtu, 832 00:53:00,140 --> 00:53:03,980 Unë mund të vijë deri te ju, thonë: "Hi, emri im është David." Hi >>, David. Emri im është Sammy. 833 00:53:03,980 --> 00:53:05,770 "Hi, David. Emri im është Sammy". 834 00:53:05,770 --> 00:53:08,310 Deri tani ne kemi angazhuar vetëm në këtë lloj protokolli budalla njeriut 835 00:53:08,310 --> 00:53:12,200 ku kam nisur protokoll, Sammy është përgjigjur, 836 00:53:12,200 --> 00:53:15,060 ne kemi tronditur duart, dhe transaksioni është i plotë. 837 00:53:15,060 --> 00:53:18,260 HTTP është shumë e ngjashme në frymë. 838 00:53:18,260 --> 00:53:23,350 Kur shfletuesin tuaj web kërkesa www.facebook.com, 839 00:53:23,350 --> 00:53:27,020 çfarë shfletuesi juaj është me të vërtetë duke bërë është shtrirë dorën e vet, në mënyrë që të flasin, 840 00:53:27,020 --> 00:53:29,960 në server dhe është dërguar atij një mesazh. 841 00:53:29,960 --> 00:53:34,220 Dhe se mesazhi është zakonisht diçka si të merrni - çfarë ju doni të merrni? - 842 00:53:34,220 --> 00:53:38,740 merrni mua home page, e cila është pėrcaktuara në mënyrë tipike nga një plagë e vetme në fund të një URL. 843 00:53:38,740 --> 00:53:43,790 Dhe vetëm kështu që ju e dini se çfarë jam duke folur gjuhë, unë jam duke shkuar për shfletuesi them 844 00:53:43,790 --> 00:53:46,930 që unë jam duke folur versionin HTTP 1.1, 845 00:53:46,930 --> 00:53:51,980 Dhe edhe për masë të mirë, unë jam duke shkuar për të ju them se presë që unë dua në faqen kryesore të 846 00:53:51,980 --> 00:53:54,120 është facebook.com. 847 00:53:54,120 --> 00:53:57,730 Në mënyrë tipike, një shfletues web, unbeknownst për ju, njeriut, 848 00:53:57,730 --> 00:54:03,350 dërgon këtë mesazh nëpër internet kur ju thjesht shkruani www.facebook.com, 849 00:54:03,350 --> 00:54:05,370 >> Të hyjë, në shfletuesin tuaj. 850 00:54:05,370 --> 00:54:07,300 Dhe çfarë do të të përgjigjet me Facebook? 851 00:54:07,300 --> 00:54:12,540 Ajo i përgjigjet me disa detaje të ngjashme-looking fshehta, por edhe shumë më tepër. 852 00:54:12,540 --> 00:54:14,310 Më lejoni të shkoj përpara për faqen Facebook në shtëpi këtu. 853 00:54:14,310 --> 00:54:17,480 Kjo është ekran që shumica prej nesh ndoshta kurrë nuk do të shihni nëse ju qëndroni të regjistrohet në të gjithë kohës, 854 00:54:17,480 --> 00:54:19,830 por kjo është me të vërtetë e tyre në shtëpi faqe. 855 00:54:19,830 --> 00:54:24,150 Nëse ne bëjmë këtë në krom, vini re se ju mund të tërheqë deri këto menutë pak kontekst. 856 00:54:24,150 --> 00:54:26,980 Duke përdorur Chrome, qoftë në Mac OS, Windows, Linux, apo si, 857 00:54:26,980 --> 00:54:31,840 në qoftë se ju klikoni Kontrolli ose kliko majtë, ju mund të tërheqë në mënyrë tipike një menu që duket si kjo, 858 00:54:31,840 --> 00:54:35,870 ku disa opsione presin, njëra prej të cilave është Shiko Burimi. 859 00:54:35,870 --> 00:54:39,920 Ju gjithashtu mund të merrni në mënyrë tipike për këto gjëra duke shkuar në menynë View dhe poking rreth. 860 00:54:39,920 --> 00:54:42,750 Për shembull, këtu nën View, Zhvilluesish është e njëjta gjë. 861 00:54:42,750 --> 00:54:45,780 Unë jam duke shkuar për të shkuar përpara dhe të kërkoni në faqen View Source. 862 00:54:45,780 --> 00:54:50,800 Çfarë ju do të shihni është HTML që Mark ka shkruar për të përfaqësuar facebook.com. 863 00:54:50,800 --> 00:54:55,910 Kjo është një rrëmujë të plotë këtu, por ne do të shohim se kjo ka kuptim pak më shumë para se të gjatë. 864 00:54:55,910 --> 00:54:59,840 Por ka disa modele këtu. Më lejoni të lëvizni poshtë për gjëra si kjo. 865 00:54:59,840 --> 00:55:05,730 Kjo është e vështirë për një njeri për të lexuar, por vini re se nuk ka këtë model të kllapa kënddrejtë 866 00:55:05,730 --> 00:55:10,360 me fjalë kyçe si opsion, me fjalë kyçe, si vlerë, disa vargjet e cituara. 867 00:55:10,360 --> 00:55:15,660 Kjo është ajo ku, kur ju nënshkruar për herë të parë, të përcaktuar se çfarë viti juaj i lindjes është. 868 00:55:15,660 --> 00:55:19,020 Kjo drop-down menu e viteve të lindjes është i koduar disi këtu 869 00:55:19,020 --> 00:55:23,870 në këtë gjuhë quajtur HTML, HyperText Markup Language. 870 00:55:23,870 --> 00:55:27,730 Me fjalë të tjera, kur browser-i juaj kërkon një faqe web, 871 00:55:27,730 --> 00:55:30,610 ai flet këtë konventë quajtur HTTP. 872 00:55:30,610 --> 00:55:35,170 Por çfarë do të facebook.com përgjigjet kësaj kërkese me? 873 00:55:35,170 --> 00:55:38,260 >> Ajo i përgjigjet me disa nga këto mesazhe të fshehta, siç do të shohim në një moment. 874 00:55:38,260 --> 00:55:43,760 Por më e përgjigjes saj është në formën e HTML, HyperText Markup Language. 875 00:55:43,760 --> 00:55:47,170 Kjo është gjuha aktuale në të cilën një faqe web është shkruar. 876 00:55:47,170 --> 00:55:52,030 Dhe çfarë një shfletues web të vërtetë nuk është, pra, pas pranimit të diçkaje që duket si kjo, 877 00:55:52,030 --> 00:55:57,120 lexon ajo lart poshtë, e majta në të djathtë, dhe çdo herë që sheh një prej këtyre kllapa kënddrejtë 878 00:55:57,120 --> 00:56:03,370 ndjekur nga një fjalen si opsion, kjo tregon se gjuha markup në mënyrën e duhur. 879 00:56:03,370 --> 00:56:06,820 Në këtë rast, ajo do të shfaqin një drop-down menu e viteve. 880 00:56:06,820 --> 00:56:09,240 Por përsëri, kjo është një rrëmujë të plotë për të parë. 881 00:56:09,240 --> 00:56:16,630 Kjo nuk është për shkak se zhvilluesve të Facebook manifestuar 0 për 5 për stilin, për shembull. 882 00:56:16,630 --> 00:56:20,190 Kjo është për shkak se shumica e kodit që ata të shkruajnë është, në fakt, i shkruar bukur, 883 00:56:20,190 --> 00:56:22,450 mirë komentoi, dhëmbëzuar mirë, dhe si, 884 00:56:22,450 --> 00:56:26,080 por e makinave natyrisht, kompjutera, shfletues të vërtetë nuk i japin një mallkim 885 00:56:26,080 --> 00:56:27,890 nëse kodi juaj është i mirë-organizuar. 886 00:56:27,890 --> 00:56:33,100 Dhe në fakt, kjo është plotësisht e kota për të goditur çelësi Tab gjitha ato herë 887 00:56:33,100 --> 00:56:37,650 dhe për të vënë komentet gjatë gjithë kodin tuaj dhe për të zgjedhur emrat e vërtetë përshkruese ndryshueshme 888 00:56:37,650 --> 00:56:42,340 sepse nëse shfletuesi nuk kujdeset, të gjithë ju jeni duke bërë në fund të ditës është humbur bytes. 889 00:56:42,340 --> 00:56:46,660 >> Pra, ajo rezulton se çfarë faqet e internetit më të bëni është të edhe pse Kodi Burim për facebook.com, 890 00:56:46,660 --> 00:56:49,550 për cs50.net dhe të gjitha këto faqet e internetit të tjera në internet 891 00:56:49,550 --> 00:56:53,730 janë zakonisht të shkruara mirë dhe të mirë komentuar dhe prerë bukur dhe si, 892 00:56:53,730 --> 00:56:59,270 zakonisht para internetit është vënë në internet, kodi është minified, 893 00:56:59,270 --> 00:57:02,970 ku HTML dhe CSS - diçka tjetër ne do të shohim së shpejti - 894 00:57:02,970 --> 00:57:05,960 Kodi JavaScript që ne së shpejti do të shohim është i ngjeshur, 895 00:57:05,960 --> 00:57:09,250 ku emrat e gjatë ndryshueshme bëhen X dhe Y dhe Z, 896 00:57:09,250 --> 00:57:13,900 dhe të gjithë asaj që e bën çdo gjë whitespace duken aq të lexueshëm është hedhur të gjitha larg, 897 00:57:13,900 --> 00:57:17,700 sepse në qoftë se ju mendoni rreth saj në këtë mënyrë, Facebook merr një miliard faqe godet një ditë - 898 00:57:17,700 --> 00:57:21,670 diçka e çmendur si kjo - kështu që çfarë nëse një programues vetëm të jetë anal 899 00:57:21,670 --> 00:57:26,660 goditi space bar një herë shtesë vetëm për të porosit një linjë e kodit ndonjëherë shumë më shumë? 900 00:57:26,660 --> 00:57:29,500 Çfarë është implikimi në qoftë Facebook ruan se hapësira të bardha 901 00:57:29,500 --> 00:57:32,880 në të gjitha bytes ata dërgojnë përsëri në njerëz në internet? 902 00:57:32,880 --> 00:57:36,400 Goditur space bar një herë ju jep një bajt shtesë në dosjen tuaj. 903 00:57:36,400 --> 00:57:39,730 Dhe në qoftë se një miliard njerëz pastaj do të vazhdojë për të shkarkuar në faqen kryesore atë ditë, 904 00:57:39,730 --> 00:57:42,060 sa më shumë të dhëna keni transmetohen në Internet? 905 00:57:42,060 --> 00:57:45,200 Një Gigabyte për asnjë arsye të mirë. 906 00:57:45,200 --> 00:57:48,510 Dhe u dha, për një shumë faqet e internetit kjo nuk është një çështje e tillë të shkallëzuar, 907 00:57:48,510 --> 00:57:51,030 por për Facebook, për Google, për disa nga faqet e internetit më të popullarizuara 908 00:57:51,030 --> 00:57:54,860 nuk ka nxitje e madhe financiare për të bërë kodin tuaj të duket si një rrëmujë 909 00:57:54,860 --> 00:57:58,980 kështu që ju jeni duke përdorur si bytes pak të jetë e mundur, përveç atëherë compressing atë 910 00:57:58,980 --> 00:58:01,500 duke përdorur diçka si zip, një algoritëm të quajtur gzip, 911 00:58:01,500 --> 00:58:04,250 se shfletuesi bën për ju automatikisht. Por kjo është e tmerrshme. 912 00:58:04,250 --> 00:58:08,060 Ne kurrë nuk do të mësojnë ndonjë gjë në lidhje me faqet e internetit të njerëzve të tjerë dhe si për të hartuar faqet e internetit 913 00:58:08,060 --> 00:58:09,680 në qoftë se ne duhet të shikojmë në atë si kjo. 914 00:58:09,680 --> 00:58:13,620 >> Pra, për fat të mirë, si shfletues Chrome dhe IE dhe Firefox këto ditë 915 00:58:13,620 --> 00:58:16,450 zakonisht vijnë me të ndërtuar në mjetet zhvilluesi i saj. 916 00:58:16,450 --> 00:58:21,730 Në fakt, në qoftë se unë të hyjë këtu për Inspect Element ose nëse shkoj për të parë, Zhvilluesin, 917 00:58:21,730 --> 00:58:25,220 dhe të shkojnë në Developer Tools eksplicite, 918 00:58:25,220 --> 00:58:27,640 kjo dritare në pjesën e poshtme të ekranit tim tani pops up. 919 00:58:27,640 --> 00:58:31,230 Kjo është pak frikësuese në fillim, sepse nuk është një shumë e skedave panjohura këtu, 920 00:58:31,230 --> 00:58:34,510 por në qoftë se unë klikoni mbi Elemente të gjithë rrugën në të majtë e poshtme, 921 00:58:34,510 --> 00:58:38,810 Chrome është padyshim shumë e zgjuar. Ajo e di se si për të interpretuar të gjithë këtij kodi. 922 00:58:38,810 --> 00:58:42,320 Dhe kështu ajo Chrome nuk është ajo pastron të gjitha HTML Facebook. 923 00:58:42,320 --> 00:58:45,680 Edhe pse nuk ka hapësira të bardha atje, nuk ka gjurmë atje, 924 00:58:45,680 --> 00:58:51,120 tani vëreni se unë mund të fillojnë për të lundruar këtë faqe interneti edhe më të hierarkike. 925 00:58:51,120 --> 00:58:56,910 Ajo rezulton se çdo faqe web shkruar në një gjuhë të quajtur HTML5 duhet të fillojë me këtë, 926 00:58:56,910 --> 00:59:03,980 kjo deklaratë DOCTYPE, kështu që të flasin: 927 00:59:03,980 --> 00:59:07,840 Kjo është lloj i lehtë dhe gri atje, por kjo është vija e parë të kodit në këtë dosje, 928 00:59:07,840 --> 00:59:12,080 dhe se vetëm tregon shfletuesit, "Hej, këtu vjen disa HTML5. Këtu vjen një web faqe." 929 00:59:12,080 --> 00:59:18,490 Kllapa e parë e hapur përtej kësaj ndodh që të jetë kjo gjë, një parantezë të hapur HTML tag, 930 00:59:18,490 --> 00:59:22,320 dhe pastaj, nëse unë thellë zhyten në - këto shigjetat janë krejtësisht të pakuptimta; 931 00:59:22,320 --> 00:59:25,140 ata janë vetëm për hir të prezantimit, ata nuk janë në të vërtetë në dosjen - 932 00:59:25,140 --> 00:59:30,300 njoftim se brenda tag HTML Facebook, gjë që fillon me një parantezë të hapur 933 00:59:30,300 --> 00:59:32,910 dhe pastaj ka një fjalë quhet një tag. 934 00:59:32,910 --> 00:59:38,610 Pra, në brendësi të tag HTML është me sa duket një kokë dhe një tag tag trupit. 935 00:59:38,610 --> 00:59:41,930 Në brendësi të tag kokë tani është një rrëmujë të tërë për Facebook 936 00:59:41,930 --> 00:59:45,620 sepse ata kanë shumë gjëra të tjera dhe metadata për marketing dhe reklamat. 937 00:59:45,620 --> 00:59:50,600 >> Por nëse ne lëvizni poshtë, poshtë, poshtë, poshtë, le të shohim se ku është. Këtu është. 938 00:59:50,600 --> 00:59:52,210 Kjo është të paktën disi i njohur. 939 00:59:52,210 --> 00:59:55,990 Titulli i faqes Facebook në shtëpi, nëse ndonjëherë ju shikoni në skedën në bar tuaj titullin, 940 00:59:55,990 --> 00:59:59,060 Mirë se vini në Facebook është - Log In, Sign Up ose mësoni më shumë. 941 00:59:59,060 --> 01:00:01,110 Kjo është ajo që ju do të shihni në shiritin e titullit Chrome, 942 01:00:01,110 --> 01:00:03,100 dhe kjo është se si ajo e përfaqësuar në kod. 943 01:00:03,100 --> 01:00:08,090 Nëse ne e injorojmë çdo gjë tjetër në kokë, shumica e guxim e një faqe web janë në trup, 944 01:00:08,090 --> 01:00:10,940 dhe kjo rezulton se kodi Facebook do të duken më komplekse 945 01:00:10,940 --> 01:00:14,540 se shumicën e gjërave që ne do të shkruaj fillimisht vetëm për shkak se ajo është ndërtuar gjatë viteve, 946 01:00:14,540 --> 01:00:17,260 por ka një tërësi shumë e etiketave script, kodi JavaScript, 947 01:00:17,260 --> 01:00:18,870 që e bën shumë të internetit interaktive: 948 01:00:18,870 --> 01:00:22,330 shohim përditësimet e statsit duke përdorur gjuhë menjëherë si JavaScript. 949 01:00:22,330 --> 01:00:25,270 Ka diçka quajtur një div, e cila është një ndarje e një faqe. 950 01:00:25,270 --> 01:00:27,940 Por, para se ne të merrni për këtë detaj, le të përpiqemi për zmadhim jashtë 951 01:00:27,940 --> 01:00:31,920 dhe të kërkoni në një version më të thjeshtë të Facebook 1.0, në mënyrë që të flasin. 952 01:00:31,920 --> 01:00:34,740 Këtu është hello, bota e faqeve web. 953 01:00:34,740 --> 01:00:37,370 Ajo ka atë deklaratë DOCTYPE në krye 954 01:00:37,370 --> 01:00:40,280 cila është një pak i ndryshëm nga çdo gjë tjetër. 955 01:00:40,280 --> 01:00:46,130 Asgjë tjetër kemi shkruar në një web faqe do të fillojë me 01:00:48,880 dhe përveç për diçka të quajtur komente në HTML. 957 01:00:48,880 --> 01:00:53,000 Por për pjesën më të madhe, çdo gjë në një faqe web është e hapur, kllapa fjalen, simboli i ngushtë. 958 01:00:53,000 --> 01:00:56,220 >> Në këtë rast ju mund të shihni të thjeshtë të faqeve web të mundshme. 959 01:00:56,220 --> 01:01:00,260 Tag HTML tag përmban një kokë dhe ai përmban një kod të trupit, 960 01:01:00,260 --> 01:01:04,580 por vini re se nuk ka ky nocion për të filluar dhe ndalimin tags. 961 01:01:04,580 --> 01:01:11,360 Ky është fillimi për tag HTML, ky tag është afër ose tag fund. 962 01:01:11,360 --> 01:01:15,400 Vini re se ata janë lloj i të kundërtave, në kuptimin që tag afërt ose tag fund 963 01:01:15,400 --> 01:01:20,030 ka këtë plagë përpara në brendësi të vetë. 964 01:01:20,030 --> 01:01:23,540 Ndërkohë, ka një tag kokë hapur këtu dhe një tag të ngushtë kreu këtu. 965 01:01:23,540 --> 01:01:26,880 >> Ka një titull të hapur dhe një tag të ngushtë Titulli këtu. 966 01:01:26,880 --> 01:01:29,850 Fakti që unë kam vënë titullin në një rresht, thjesht arbitrar. 967 01:01:29,850 --> 01:01:33,760 Ajo thjesht dukej sikur ajo do të përshtaten mirë në një linjë, kështu që unë nuk u mërzit goditur Shkruani një herë çift. 968 01:01:33,760 --> 01:01:38,200 Ndërkohë, trupi i kam bërë indent vetëm të jetë ndonjëherë në mënyrë të qartë. 969 01:01:38,200 --> 01:01:41,050 Vini re se HTML është një gjuhë shumë e memec. 970 01:01:41,050 --> 01:01:43,410 Në fakt, përsëri në ditën e parë ka qenë redaktorët WYSIWYG 971 01:01:43,410 --> 01:01:46,770 dhe Microsoft Word ku ju mund të thoni: "Bëni këtë guximshme, e bëjnë këtë italics" 972 01:01:46,770 --> 01:01:50,850 ju do të vërtetë të shkruani komandat pak në esetë 20 + vjet më parë 973 01:01:50,850 --> 01:01:55,740 ku ju do të thonë, "Filloni duke e bërë këtë tekst bold. Stop bërë këtë tekst bold". 974 01:01:55,740 --> 01:01:59,010 "Filloni duke e bërë këtë italics tekst. Stop bërë këtë italics tekst." 975 01:01:59,010 --> 01:02:01,850 >> Kjo është ajo HTML apo ndonjë gjuhë markup është. 976 01:02:01,850 --> 01:02:05,530 Ky tag ka parë thotë, "Hej, browser. Këtu vjen disa HTML." 977 01:02:05,530 --> 01:02:09,880 Tag tjetër thotë, "Hej, browser. Këtu vjen në kokë, kokë e web faqen time." 978 01:02:09,880 --> 01:02:11,650 "Hej, browser. Këtu vjen titullin". 979 01:02:11,650 --> 01:02:15,880 Dhe pastaj mbi këtu, "Hej, browser. Kjo është ajo për titullin." 980 01:02:15,880 --> 01:02:20,000 Pra, kjo është se si shfletuesi e di që nuk shfaqin shenja më shumë se Hello, World 981 01:02:20,000 --> 01:02:21,860 në shiritin e titullit. 982 01:02:21,860 --> 01:02:23,640 Ndërkohë, ky thotë, "Kjo është ajo për kokë." 983 01:02:23,640 --> 01:02:28,340 Ky thotë: "Këtu vjen trupin Këtu është organi aktuale." - Fjalë për fjalë, fjalët hello, bota. 984 01:02:28,340 --> 01:02:33,190 Dhe kjo thotë këtu, "Kjo është ajo për trupin. Kjo është ajo për të HTML." 985 01:02:33,190 --> 01:02:34,640 Pra shfletuesit janë goxha memec. 986 01:02:34,640 --> 01:02:39,920 Ata vetëm të lexoni këtë stuff lartë e deri në fund, e majta në të djathtë, dhe të bëjë pikërisht atë që ata janë duke thënë për të bërë. 987 01:02:39,920 --> 01:02:41,860 Le të bëjë në fakt një shembull të vogël këtu. 988 01:02:41,860 --> 01:02:46,240 Më lejoni të hapur deri të thjeshtë të programeve në Mac tim këtu, domethënë TextEdit. 989 01:02:46,240 --> 01:02:48,220 Në Windows ju mund të përdorni notepad.exe. 990 01:02:48,220 --> 01:02:50,520 Por kjo është e gjitha që ju duhet të filloni duke e bërë faqet e internetit. 991 01:02:50,520 --> 01:02:53,730 Unë jam duke shkuar për të shkuar përpara dhe thjesht kopjoni dhe ngjisni këtë kod në këtë file. 992 01:02:53,730 --> 01:02:57,210 Unë jam duke shkuar për të shkuar përpara dhe për të shpëtuar atë në tavolinën e punës time, 993 01:02:57,210 --> 01:03:01,220 dhe unë jam duke shkuar për të shpëtuar këtë si hello.html, 994 01:03:01,220 --> 01:03:03,840 dhe tani file është quajtur hello.html. 995 01:03:03,840 --> 01:03:05,690 Këtu ajo është në tavolinën e punës time. 996 01:03:05,690 --> 01:03:11,130 Më lejoni tani të shkojnë në një shfletues dhe terhiq fotografi në shfletuesin. 997 01:03:11,130 --> 01:03:14,060 Dhe voila, këtu është faqja e parë tim web. 998 01:03:14,060 --> 01:03:17,340 Vini re se titulli i tab është hello, bota sipas tag titullin, 999 01:03:17,340 --> 01:03:20,040 dhe njoftim se hello, bota është trupi i web faqen time, 1000 01:03:20,040 --> 01:03:22,190 woo hoo-dhe, unë jam në internet. 1001 01:03:22,190 --> 01:03:24,700 >> Unë nuk jam me të vërtetë, të drejtë, sepse ky file nuk është në internet. 1002 01:03:24,700 --> 01:03:28,330 Ajo ndodh të jetë në makinë tim vështirë lokal në atë rrugë të veçantë. 1003 01:03:28,330 --> 01:03:32,720 Por ideja është e njëjtë. Të gjithë ne tani duhet është një web server në të cilat të ngarkoni atë. 1004 01:03:32,720 --> 01:03:37,410 Por së pari le të vërtetë të futur kompleksitetin pak më shumë dhe një stilizim pak më shumë. 1005 01:03:37,410 --> 01:03:39,890 Kjo është një e thjeshtë, nëse i mërzitshëm, web faqe. 1006 01:03:39,890 --> 01:03:41,990 Ajo rezulton se ka lloje të tjera të Etiketimet ne mund të përdorni. 1007 01:03:41,990 --> 01:03:45,530 Për shembull, këtu në të verdhë e kam futur 2 tags të reja. 1008 01:03:45,530 --> 01:03:49,630 Ne nuk do të luajë më shumë me këto sot, por vini re se lidhja tag 1009 01:03:49,630 --> 01:03:52,520 disi duket ndryshe nga çdo gjë tjetër. 1010 01:03:52,520 --> 01:03:55,370 Tag Lidhje merr atë që janë quajtur atributet, 1011 01:03:55,370 --> 01:03:59,770 dhe një atribut është diçka që modifikon sjelljen e një tag. 1012 01:03:59,770 --> 01:04:03,840 Në këtë rast kjo nuk është zgjidhja më e mirë e emrave, Lidhje, sepse kjo është lloj i pakuptimtë, 1013 01:04:03,840 --> 01:04:11,590 por ky tag lidhja thotë, në thelb, përfshijnë dosjen e quajtur styles.css brendësi të web faqen time. 1014 01:04:11,590 --> 01:04:15,400 Ju mund të mendoj për këtë si analoge me atë të C # include direktivë. 1015 01:04:15,400 --> 01:04:19,650 Styles.css është duke iu referuar një gjuhë krejtësisht të ndryshme se ne nuk do të luajë me sot, 1016 01:04:19,650 --> 01:04:23,790 por kjo është për estetikë: madhësive font, ngjyra, mbushje, vulë, kufijtë, 1017 01:04:23,790 --> 01:04:26,040 dhe të gjitha atë lloj të detajuar estetikë. 1018 01:04:26,040 --> 01:04:28,820 Ndërkohë, tag dorëshkrim është funksionalisht të ngjashme, 1019 01:04:28,820 --> 01:04:33,140 por në vend se përfshijnë CSS, se gjuhën, ajo përfshin një gjuhë tjetër, JavaScript. 1020 01:04:33,140 --> 01:04:37,810 Pra, me fjalë të tjera, me këto 2 Etiketimet Unë përfundimisht do të jetë në gjendje për të shkruar vetë web faqen time 1021 01:04:37,810 --> 01:04:41,490 por edhe të tërheqë në kodin që unë apo dikush tjetër e ka shkruar 1022 01:04:41,490 --> 01:04:44,350 kështu që ne mund të qëndrojmë mbi supet e njerëzve të tjerë, ne mund të ushtrojë dizajn të mirë, 1023 01:04:44,350 --> 01:04:46,120 factoring jashtë kodit të përbashkët. 1024 01:04:46,120 --> 01:04:49,090 Në qoftë se unë kam marrë 10 faqe të ndryshme të internetit, kjo do të thotë se disa nga estetikë e mia 1025 01:04:49,090 --> 01:04:52,490 mund të jenë faktorë jashtë, ashtu si # përfshijnë, në një file të veçantë. 1026 01:04:52,490 --> 01:04:54,420 Pra, ne jemi duke marrë atje. 1027 01:04:54,420 --> 01:04:57,180 Por le fakt së pari të bëjë diçka më interesante me këtë skedë. 1028 01:04:57,180 --> 01:05:01,110 >> Përsëri, kjo është vetëm TextEdit. Unë nuk jam teknikisht në internet, por ne do të merrni atje. 1029 01:05:01,110 --> 01:05:04,910 Unë do të doja të bëjë hello, botën një pak më të guximshme se sa është. 1030 01:05:04,910 --> 01:05:10,890 Pra hello, le të themi në mënyrë arbitrare për guximshme. 1031 01:05:10,890 --> 01:05:15,910 Përsëri, historia është e njëjtë: hello, presje, filloni duke e bërë këtë të guximshme, 1032 01:05:15,910 --> 01:05:19,730 atëherë bota merr të shtypura me shkronja të theksuara, dhe kjo do të thotë të ndaluar shtypjen këtë në bold. 1033 01:05:19,730 --> 01:05:24,020 Më lejoni të shkojnë përpara dhe për të shpëtuar dosjen time, të shkojnë prapa në Chrome, unë do të zoom në vetëm kështu ne mund të shohim më mirë, 1034 01:05:24,020 --> 01:05:27,870 dhe rifreskoni, dhe ju do të shihni se bota është tani në të theksuara. 1035 01:05:27,870 --> 01:05:31,810 Web-i është mbi të gjitha hyperlinks, kështu që le të shkojnë përpara dhe të bëjë këtë: 1036 01:05:31,810 --> 01:05:38,550 website im i preferuar është, le të themi, youtube.com. 1037 01:05:38,550 --> 01:05:43,810 Shpëtuar, reload. Rregull. Ka një problem çift tani përveç shëmtim e internetit. 1038 01:05:43,810 --> 01:05:47,310 1, unë jam goxha i sigurt se unë hit Enter këtu. Dhe unë e bëri. 1039 01:05:47,310 --> 01:05:51,590 Unë jo vetëm hit Enter, unë prerë edhe praktikimin e asaj që ne kemi qenë duke predikuar rreth stilit, 1040 01:05:51,590 --> 01:05:54,930 por ime është e drejtë tjetër të botës. 1041 01:05:54,930 --> 01:05:58,410 Pra, pse është kjo? Browsers vetëm bëni atë që ju them që ata të bëjnë. 1042 01:05:58,410 --> 01:06:04,010 Unë nuk kam thënë browser ", linja Pushim këtu. Fut paragrafi thyejnë këtu." 1043 01:06:04,010 --> 01:06:07,820 Pra shfletuesit, kjo nuk ka rëndësi nëse unë goditi Return 30 herë, 1044 01:06:07,820 --> 01:06:10,820 ai është ende duke shkuar për të vënë të drejtën time tjetër të botës. 1045 01:06:10,820 --> 01:06:15,930 Ajo që unë me të vërtetë duhet të bëni këtu është thënë diçka si
, të futur një pushim linjë. 1046 01:06:15,930 --> 01:06:17,940 >> Dhe në fakt, një pushim linjë është lloj i një gjë të pazakontë 1047 01:06:17,940 --> 01:06:21,650 sepse ju nuk mund të vërtetë të fillojnë të lëvizin në një tjetër linjë, pastaj të bëjë diçka, 1048 01:06:21,650 --> 01:06:25,380 dhe pastaj të ndaluar lëviz në një linjë të re. Kjo është lloj i një operacioni atomike. 1049 01:06:25,380 --> 01:06:28,140 Ju ose bëni atë ose ju nuk e bëni. Ju hit Enter, ose ju nuk e bëni. 1050 01:06:28,140 --> 01:06:33,390 Pra BR është pak e një tag të ndryshme, dhe kështu që kam nevojë për të zgjidhur të dyja të hapura dhe të mbyllë atë 1051 01:06:33,390 --> 01:06:35,230 të gjitha përnjëherë. 1052 01:06:35,230 --> 01:06:37,500 Sintaksa për këtë është kjo. 1053 01:06:37,500 --> 01:06:41,760 Teknikisht, ju mund të bëni diçka si kjo në disa versione të HTML, 1054 01:06:41,760 --> 01:06:45,600 por kjo është vetëm budalla sepse nuk ka asnjë arsye për të filluar dhe të ndaluar diçka 1055 01:06:45,600 --> 01:06:48,420 në qoftë se ju mund të bëni në vend të gjitha përnjëherë. 1056 01:06:48,420 --> 01:06:52,310 Kuptojnë se HTML5 nuk kërkon në mënyrë rigoroze këtë plagë, 1057 01:06:52,310 --> 01:06:55,410 kështu që ju do të shihni tekstet dhe burimeve online që nuk kanë atë, 1058 01:06:55,410 --> 01:06:59,780 por për masë të mirë, le të praktikojnë simetri që ne kemi parë deri tani. 1059 01:06:59,780 --> 01:07:02,870 Kjo do të thotë se është edhe tag hapen dhe mbyllen. 1060 01:07:02,870 --> 01:07:05,220 Kështu që tani më lejoni të shpëtuar dosjen time, të shkojnë prapa këtu. 1061 01:07:05,220 --> 01:07:10,240 Mirë, kështu që është filluar të duken më të mirë, përveç Web unë e di është lloj i klikueshme, 1062 01:07:10,240 --> 01:07:13,610 dhe ende youtube këtu nuk duket të çojë në asgjë. 1063 01:07:13,610 --> 01:07:17,560 Kjo është për shkak se, edhe pse kjo duket si një lidhje, shfletuesi nuk e di se në vetvete, 1064 01:07:17,560 --> 01:07:20,670 kështu që unë duhet të them shfletuesit se kjo është një lidhje. 1065 01:07:20,670 --> 01:07:22,620 >> Mënyra për të bërë këtë është të përdorni një spirancë 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 dhe më lejoni të lëvizë këtë në një rresht të ri vetëm kështu kjo është pak më i lexueshëm, 1069 01:07:38,490 --> 01:07:40,060 dhe unë do të tkurret madhësinë e shkronjave. 1070 01:07:40,060 --> 01:07:43,890 Jam bërë akoma? Nr Nuk do të jetë kjo dikotomi. 1071 01:07:43,890 --> 01:07:46,760 Ky tag, tag spirancë, ka me të vërtetë të marrë një atribut, 1072 01:07:46,760 --> 01:07:52,900 cila modifikon sjelljen e saj, dhe vlera e atë atribut është dukje URL YouTube s. 1073 01:07:52,900 --> 01:07:56,380 Por njoftim dikotomi është se vetëm për shkak se është URL ju jeni duke shkuar për të, 1074 01:07:56,380 --> 01:08:01,020 që nuk do të thotë se duhet të jetë fjala që ju jeni duke nënvizuar dhe duke e bërë një lidhje. 1075 01:08:01,020 --> 01:08:03,960 Përkundrazi, kjo mund të jetë diçka si kjo. 1076 01:08:03,960 --> 01:08:10,870 Kështu që unë duhet të them të ndaluar duke e bërë këtë fjalë një hyperlink duke përdorur tag ankorohen ngushtë. 1077 01:08:10,870 --> 01:08:12,650 Njoftim Unë nuk jam bërë këtë. 1078 01:08:12,650 --> 01:08:15,890 1, kjo do të jetë vetëm një humbje kohe të gjithëve dhe nuk është e nevojshme. 1079 01:08:15,890 --> 01:08:19,290 >> Për të mbyllur një tag, ju përmendin vetëm emrin e tag përsëri. 1080 01:08:19,290 --> 01:08:21,800 Ju nuk përmend ndonjë prej vetive. 1081 01:08:21,800 --> 01:08:26,189 Pra, le të shpëtojë atë, të shkojnë prapa. Mirë, voila, tani është blu dhe hyperlinked. 1082 01:08:26,189 --> 01:08:29,430 Nëse unë click it, unë në fakt nuk shkojnë në YouTube. 1083 01:08:29,430 --> 01:08:32,529 Pra, edhe pse web faqen time nuk është në internet, ajo është të paktën HTML, 1084 01:08:32,529 --> 01:08:37,930 dhe në qoftë se ne le Interneti arrijë deri, ne fakt do të përfundojnë këtu në youtube.com. 1085 01:08:37,930 --> 01:08:40,670 Dhe unë mund të ktheheni mbrapsh dhe këtu është web faqen time. Por këtë njoftim. 1086 01:08:40,670 --> 01:08:43,120 Nëse ju keni marrë ndonjëherë spam ose një sulm phishing, 1087 01:08:43,120 --> 01:08:45,850 tani ju keni mundësinë pas vetëm pesë minuta për të bërë të njëjtën gjë. 1088 01:08:45,850 --> 01:08:50,920 Ne mund të shkoni këtu dhe të bëjë diçka si www.badguy.com 1089 01:08:50,920 --> 01:08:59,319 apo çfarëdo website paqarta është, dhe pastaj ju mund të them verifikuar llogarinë tuaj PayPal. 1090 01:08:59,319 --> 01:09:04,840 [Qeshur] Dhe tani kjo do të shkojë në badguy.com, të cilën unë nuk jam duke shkuar për të klikoni në 1091 01:09:04,840 --> 01:09:08,000 sepse unë nuk kam asnjë ide se ku të çon. [Qeshura] 1092 01:09:08,000 --> 01:09:10,859 >> Por ne tani kemi aftësinë për të vërtetë deri në fund atje. 1093 01:09:10,859 --> 01:09:12,640 Pra, ne jemi me të vërtetë vetëm duke filluar për të zeroja sipërfaqe. 1094 01:09:12,640 --> 01:09:15,830 Ne nuk jemi programimit në vetvete, ne jemi me shkrim Markup Language. 1095 01:09:15,830 --> 01:09:18,569 Por sa më shpejt që ne e rrumbullakët fjalorin tonë në HTML, 1096 01:09:18,569 --> 01:09:21,520 ne do të prezantoj PHP, një gjuhë programimi aktuale 1097 01:09:21,520 --> 01:09:26,859 që do të na lejojë për të gjeneruar automatikisht HTML, CSS gjenerojë automatikisht, 1098 01:09:26,859 --> 01:09:29,430 kështu që ne mund të fillojnë të mërkurën për të zbatuar, të themi, 1099 01:09:29,430 --> 01:09:31,700 motor kërkimi tonë dhe më shumë. 1100 01:09:31,700 --> 01:09:34,770 Por më shumë se në disa ditë. Ne do të shohim ju pastaj. 1101 01:09:34,870 --> 01:09:39,000 >> [CS50.TV]