1 00:00:00,000 --> 00:00:02,270 >> [Rishikimi: Quiz 1] 2 00:00:02,270 --> 00:00:04,620 [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Universiteti i Harvardit] 3 00:00:04,620 --> 00:00:07,660 [Kjo është CS50.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [Lucas Freitas] Mirë se vini të gjithë. Ky shqyrtim është për quiz 1. 5 00:00:11,610 --> 00:00:15,040 Ashtu si një mohim, ky është - Unë do të thotë, ne do të përpiqemi për të mbuluar 6 00:00:15,040 --> 00:00:17,770 sa më shumë material të jetë e mundur, por kjo nuk do të thotë se 7 00:00:17,770 --> 00:00:20,780 ne jemi duke shkuar për të mbuluar të gjitha gjërat që mund të jenë në quiz 1. 8 00:00:20,780 --> 00:00:25,270 Pra, të jetë i sigurt që ju të merrni një vështrim në leksion, seksione, çdo gjë që ju mund. 9 00:00:25,270 --> 00:00:28,240 Quiz 1 do të jetë të mërkurën, të mërkurën e ardhshme. 10 00:00:28,240 --> 00:00:33,800 Pra, të jetë i sigurt për të studiuar. Ajo do të jetë, shumë e shumë, si quiz e parë 11 00:00:33,800 --> 00:00:36,390 në lidhje me format e saj, por ajo ndoshta do të jetë shumë më të vështirë. 12 00:00:36,390 --> 00:00:39,600 Të paktën, vitin e kaluar kur mora 50, kam menduar se ishte shumë më të vështirë. 13 00:00:39,600 --> 00:00:42,410 Kështu që studiojnë shumë. 14 00:00:42,410 --> 00:00:45,190 >> Unë jam duke shkuar për të mbuluar të strukturave të të dhënave dhe Huffman kodimit. 15 00:00:45,190 --> 00:00:47,910 Kjo është diçka që shumë njerëz mendojnë se është komplekse, 16 00:00:47,910 --> 00:00:51,930 por unë do të përpiqet për ta bërë atë sa më lehtë. 17 00:00:51,930 --> 00:00:56,330 Para së gjithash, ajo që ne duam që ju djema të dini për quiz 1 është që të 18 00:00:56,330 --> 00:01:00,970 kuptojnë përshkrimet konceptuale të secilës prej strukturave të të dhënave që unë jam duke shkuar për të paraqitur. 19 00:01:00,970 --> 00:01:03,960 Kjo do të thotë që ju nuk duhet të vërtetë 20 00:01:03,960 --> 00:01:07,020 zbatojë një tabelë hash në quiz tuaj 1. 21 00:01:07,020 --> 00:01:10,250 Ne nuk duam që ju të zbatuar një tabelë hash të tërë, ndoshta ne do të përpiqemi 22 00:01:10,250 --> 00:01:13,090 për të bërë ju të zbatojë disa funksione, 23 00:01:13,090 --> 00:01:16,940 operacionet më të zakonshme, por ne nuk do të bëjë që ju të zbatuar çdo gjë. 24 00:01:16,940 --> 00:01:21,010 Pra, është e rëndësishme që ju të kuptoni konceptin pas çdo strukturën e të dhënave 25 00:01:21,010 --> 00:01:23,510 dhe gjithashtu se ju jeni në gjendje të kodin në C, 26 00:01:23,510 --> 00:01:27,880 vetëm operacionet më të zakonshme që ata kanë për çdo strukturën e të dhënave. 27 00:01:27,880 --> 00:01:30,090 Dhe gjithashtu të jetë në gjendje për të shqyrtuar pointers dhe structs, 28 00:01:30,090 --> 00:01:33,470 sepse ata shfaqen shumë në këto struktura të dhënave. 29 00:01:33,470 --> 00:01:37,380 >> Së pari, listat e lidhura. Listat e lidhura në të vërtetë janë shumë të ngjashme me vargjeve, 30 00:01:37,380 --> 00:01:39,930 por diferenca midis listën e lidhur dhe një grup, 31 00:01:39,930 --> 00:01:45,160 para së gjithash, është se një listë e lidhur ka një madhësi shumë fleksibil, 32 00:01:45,160 --> 00:01:50,060 ndërsa në vargjeve ju duhet ose të zgjidhni një madhësi shumë të madhe për grup, 33 00:01:50,060 --> 00:01:53,710 kështu që ju e dini se ju jeni do të jetë në gjendje për të ruajtur të gjitha të dhënat tuaja në këtë grup, 34 00:01:53,710 --> 00:01:59,370 ose ju duhet të përdorin malloc që të ketë një gjatësi fleksibël të array. 35 00:01:59,370 --> 00:02:03,680 Në listat e lidhura është shumë e lehtë për të vetëm të merrni më shumë elemente, 36 00:02:03,680 --> 00:02:07,210 vënë më shumë elemente në listën e lidhur ose hequr elementet. 37 00:02:07,210 --> 00:02:09,370 Dhe në të vërtetë, në qoftë se ju nuk doni në listën e lidhur të zgjidhet, 38 00:02:09,370 --> 00:02:13,950 ju mund të kërkoni dhe të hequr elementet në kohë të vazhdueshme, 39 00:02:13,950 --> 00:02:16,800 kështu O (1) herë, kështu që është shumë i përshtatshëm. 40 00:02:16,800 --> 00:02:20,660 Ju vetëm duhet të jenë të kujdesshëm për të gjithmonë mos harroni të malloc dhe pa nyjet, 41 00:02:20,660 --> 00:02:25,510 vetëm për shkak se në qoftë se ju nuk e bëni, ju do të keni rrjedhjet e kujtesës. 42 00:02:25,510 --> 00:02:31,480 Listat Pra lidhura - përkufizimi i një nyje është vetëm si ajo që ne kemi të drejtë atje. 43 00:02:31,480 --> 00:02:35,110 I vënë int n, por ju mund të ruajë ndonjë të dhënat që ju dëshironi. 44 00:02:35,110 --> 00:02:37,280 Pra, nëse ju doni të ruajtur një varg, kjo është në rregull. 45 00:02:37,280 --> 00:02:41,690 Nëse ju doni të ruajtur një e strukturës, kjo është në rregull, një të dyfishtë, çdo gjë që dëshironi. 46 00:02:41,690 --> 00:02:44,630 Unë vetëm vënë int n për shembujt këtu. 47 00:02:44,630 --> 00:02:46,800 Dhe ju keni një tregues për nyjen e ardhshëm. 48 00:02:46,800 --> 00:02:51,940 Pra, në thelb, një listë e lidhur ka disa të dhëna, dhe më pas ajo vë në nyjen e ardhshëm. 49 00:02:51,940 --> 00:02:56,710 Në qoftë se kjo është elementi i fundit në listën e lidhur, ajo do të tregojnë për null. 50 00:02:56,710 --> 00:02:59,060 Pra, ky është një shembull i një liste të lidhura. 51 00:02:59,250 --> 00:03:05,960 >> Mirë, kështu që tani le të shohim se çfarë duhet të bëjmë në qoftë se unë dua të futur një element në listën e lidhur. 52 00:03:05,960 --> 00:03:08,810 Së pari, një insert funksion do të jetë e tipit pavlefshme 53 00:03:08,810 --> 00:03:11,350 sepse unë nuk dua të kthehen asgjë. 54 00:03:11,350 --> 00:03:14,200 Dhe unë jam duke shkuar për të marrë një int si argument, 55 00:03:14,200 --> 00:03:17,090 sepse unë dua të di se çfarë unë dua të futur. 56 00:03:17,090 --> 00:03:21,840 Pra, çfarë është gjëja e parë që duhet të bëjë? E pra, unë duhet të malloc në newNode, 57 00:03:21,840 --> 00:03:24,240 kështu që është vija e parë. 58 00:03:24,240 --> 00:03:27,580 Unë jam vetëm duke krijuar një nyje të re për të vënë në listën e lidhur. 59 00:03:27,580 --> 00:03:32,360 Pra, çfarë mund të bëj? E pra, ne e dimë se në Implementimi tona të listave të lidhur 60 00:03:32,360 --> 00:03:38,180 në klasë, ne gjithmonë vënë kokën si një ndryshore globale. 61 00:03:38,180 --> 00:03:41,800 Pra, çfarë mund të bëjmë është të ndryshojë kokën. 62 00:03:41,800 --> 00:03:44,300 Unë mund të bëjë këtë nyjë e re të jetë kreu i ri, 63 00:03:44,300 --> 00:03:46,670 dhe ajo do të tregojnë për kokë mëparshme. 64 00:03:46,670 --> 00:03:50,390 Si mund ta bëjë këtë? Gjëja e parë që duhet të bëni 65 00:03:50,390 --> 00:03:54,770 është ndryshuar 'n' në nyjen e re në vlerë, 66 00:03:54,770 --> 00:03:57,530 e cila u miratua me funksionin. 67 00:03:57,530 --> 00:04:01,050 Pastaj newNode më tej do të jetë kreu. 68 00:04:01,050 --> 00:04:05,800 Kreu do të jetë newNode. Pra, është shumë e thjeshtë. 69 00:04:05,800 --> 00:04:10,090 Për të fshirë një nyje, ne mund të bëjmë atë si - 70 00:04:10,090 --> 00:04:14,790 Një mënyrë ne mund të bëjmë që do të thotë, 71 00:04:14,790 --> 00:04:18,160 në rregull, nëse kam kërkuar për të fshirë, për shembull, 3, 72 00:04:18,160 --> 00:04:24,850 ajo që unë mund të bëj është vetëm pikë nyjen e mëparshme 73 00:04:24,850 --> 00:04:27,580 në nyjen e ardhshëm të 3. 74 00:04:27,580 --> 00:04:29,400 Kështu që unë vetëm do të bëjë diçka të tillë. 75 00:04:29,400 --> 00:04:33,400 Por ajo që është problem me të bërë këtë? 76 00:04:33,400 --> 00:04:37,400 Unë kam një rrjedhje kujtesës, kështu që unë nuk kanë qasje në numrin 3 më. 77 00:04:37,400 --> 00:04:42,480 Problemi me këtë është se unë nuk jam do të jetë në gjendje për atë nyje lirë. 78 00:04:42,480 --> 00:04:45,360 Unë jam do të ketë rrjedhje kujtesës dhe (i pakuptueshëm) do të më urrejnë. 79 00:04:45,360 --> 00:04:49,370 Pra, në vend të bërë këtë, unë duhet të kishte një tregues të përkohshme. 80 00:04:49,370 --> 00:04:53,210 Kështu që unë vë temp. Ajo do të tregojnë për nyjen që dëshironi të fshini. 81 00:04:53,210 --> 00:04:58,170 Dhe atëherë unë mund të lëvizin nyjet mëparshme pikës në nyjen e ardhshëm 82 00:04:58,170 --> 00:05:00,390 i nyjeve që dëshironi të fshini. 83 00:05:00,390 --> 00:05:02,730 Dhe së fundi, unë mund të lirë akrep. 84 00:05:02,730 --> 00:05:07,480 A duhet për të liruar treguesin që kam krijuar atje? 85 00:05:07,480 --> 00:05:09,560 Unë nuk kam për të, vetëm për shkak se - 86 00:05:09,560 --> 00:05:13,430 Dallimi është se kjo nyje është krijuar duke përdorur malloc, 87 00:05:13,430 --> 00:05:17,280 kështu që është në grumbull, ndërsa kjo u shpall vetëm si një kaloni NULL në rafte. 88 00:05:17,280 --> 00:05:20,000 Kështu që unë nuk kam për të liruar atë. 89 00:05:20,000 --> 00:05:22,030 Mirë >>. Pra, tani le të flasim për oxhaqet. 90 00:05:22,030 --> 00:05:24,680 Oxhaqet janë shumë i thjeshtë. 91 00:05:24,680 --> 00:05:29,540 Ne e bëmë shumë paratë dhe radhët e gjata në klasë vetëm duke përdorur vargjeve, 92 00:05:29,540 --> 00:05:32,820 por ju duhet të jetë njohur - vetëm të jetë i vetëdijshëm 93 00:05:32,820 --> 00:05:40,740 që ju mund të bëni shumë paratë në rradhë duke përdorur listat e lidhura si. 94 00:05:40,740 --> 00:05:44,460 Pra, nëse ju keni një rrjet, çfarë do të jetë e bollshme? 95 00:05:44,460 --> 00:05:46,810 Një turrë, së pari, do të duhet të ketë një madhësi. 96 00:05:46,810 --> 00:05:49,950 Ju duhet për të ruajtur atë që është madhësia e rafte që ju keni të drejtë tani. 97 00:05:49,950 --> 00:05:52,980 Dhe gjithashtu ju do të keni një rrjet, në këtë rast të numrave, 98 00:05:52,980 --> 00:05:55,120 por në qoftë se ju dëshironi, ajo mund të jetë një grup 99 00:05:55,120 --> 00:06:00,380 e strings, një grup i struct, çdo gjë që ju dëshironi për të ruajtur. 100 00:06:00,380 --> 00:06:03,240 Rreth rafte: Dallimi në mes të një pirg dhe listën e lidhur 101 00:06:03,240 --> 00:06:08,590 është se në rafte ju vetëm keni qasje në element i fundit që ishte vënë në rafte. 102 00:06:08,590 --> 00:06:11,770 Ajo që quhet e shkuar në, së pari jashtë. 103 00:06:11,770 --> 00:06:15,090 Ashtu si ju keni një pirg të tabaka, 104 00:06:15,090 --> 00:06:17,670 në qoftë se ju vendosni një tabaka në krye të rafte, 105 00:06:17,670 --> 00:06:22,670 ju duhet të hiqni atë tabaka pari që të ketë qasje në tabaka të tjera. 106 00:06:22,670 --> 00:06:26,310 Është e njëjta gjë me oxhaqet. 107 00:06:26,310 --> 00:06:31,220 Pra, nëse unë dua të, për shembull, shtoni një element në një pirg, çfarë duhet të bëj? 108 00:06:31,220 --> 00:06:34,070 Ajo që quhet shtytje, dhe kjo është shumë i thjeshtë. 109 00:06:34,070 --> 00:06:37,130 Gjëja e parë që ju duhet të bëni është të kontrolloni nëse madhësia e rafte 110 00:06:37,130 --> 00:06:40,150 nuk eshte me e madhe ose e barabarte me kapacitet të pirg. 111 00:06:40,150 --> 00:06:45,810 Sepse në qoftë se ju tashmë jeni në kapacitet të plotë, ju nuk mund të shtoni ndonjë gjë tjetër. 112 00:06:45,810 --> 00:06:51,140 Dhe pastaj në qoftë se jo, ju vetëm duhet të shtoni element të rafte. 113 00:06:51,140 --> 00:06:54,530 Dhe së fundi, rritje e madhësisë. Pra, është shumë i thjeshtë. 114 00:06:54,530 --> 00:06:57,140 Kështu që unë vetëm të shtoni numrin 2. 115 00:06:57,140 --> 00:07:00,350 Dhe në qoftë se unë dua të pop, që do të thotë se unë dua të hequr 116 00:07:00,350 --> 00:07:03,870 element i fundit që u shtua dhe kthimin vlerën e elementit, 117 00:07:03,870 --> 00:07:09,180 gjëja e parë që duhet të kontrolloni është se nuk rafte është bosh. 118 00:07:09,180 --> 00:07:11,510 Sepse në qoftë se është bosh, unë nuk mund të kthehen asgjë. 119 00:07:11,510 --> 00:07:14,820 Në këtë rast, unë jam kthyer -1. 120 00:07:14,820 --> 00:07:18,960 Përndryshe, unë jam duke shkuar për pakësim madhësinë e spekulim, 121 00:07:18,960 --> 00:07:22,510 dhe të kthehen numrat (s.size). 122 00:07:22,510 --> 00:07:27,230 Pse unë pakësim madhësinë dhe pastaj s.size kthehen? 123 00:07:27,230 --> 00:07:30,930 Kjo për shkak se, në këtë rast, spekulim ka madhësi 4, 124 00:07:30,930 --> 00:07:33,810 dhe unë dua të kthehen elementin e katërt, e drejtë? 125 00:07:33,810 --> 00:07:36,030 Por ajo që është indeksi i elementit të katërt? Tre. 126 00:07:36,030 --> 00:07:44,510 Që unë e madhësisë - do të jetë 3, unë vetëm mund të kthehen s.numbers (s.size) 127 00:07:44,510 --> 00:07:48,410 sepse është e 3. Pra, kjo është vetëm indeksi. 128 00:07:48,410 --> 00:07:50,380 Tani >> rradhët. Radhët e gjata janë shumë e shumë të njëjtën gjë. 129 00:07:50,380 --> 00:07:54,950 I vetmi ndryshim është se në vend të fundit në, së pari jashtë, 130 00:07:54,950 --> 00:07:57,480 ju keni parë në, e parë jashtë. 131 00:07:57,480 --> 00:07:59,460 Ndoshta, nëse ju jeni duke pritur për të shkuar në një koncert, 132 00:07:59,460 --> 00:08:04,260 ju nuk do të jenë të lumtur nëse keni pasur një pirg në vend të një radhë. 133 00:08:04,260 --> 00:08:07,730 Duke qenë personi i fundit që do të vijnë do të jetë personi i parë për të hyrë në koncert. 134 00:08:07,730 --> 00:08:09,760 Ju ndoshta nuk do të jenë të lumtur. 135 00:08:09,760 --> 00:08:15,020 Në radhë, personi i parë për të marrë në është edhe personi i parë për të marrë jashtë. 136 00:08:15,020 --> 00:08:18,720 Pra, në përkufizimin e një radhë, përveç që ka madhësinë në rrjet, 137 00:08:18,720 --> 00:08:23,360 ju gjithashtu duhet të ketë kokë, e cila është indeksi në krye të rafte. 138 00:08:23,360 --> 00:08:29,000 Pra, elementi i parë tani. 139 00:08:29,000 --> 00:08:32,710 Enqueue është e njëjta gjë si shtytje për oxhaqet. 140 00:08:32,710 --> 00:08:34,980 Nëse keni qenë shumë naive, ju do të thonë vetëm, 141 00:08:34,980 --> 00:08:39,289 mirë, unë vetëm mund të bëjë të njëjtën gjë si unë e bëri për shtytje. 142 00:08:39,289 --> 00:08:44,030 Unë mund të shikoni vetëm në qoftë se ajo nuk është përtej kapacitetit. 143 00:08:44,030 --> 00:08:48,760 Në qoftë se kjo është, unë kthimit të rreme, përndryshe unë mund vetëm të eksportit vlera të reja 144 00:08:48,760 --> 00:08:50,630 dhe pastaj rritje e madhësisë. 145 00:08:50,630 --> 00:08:52,750 Por pse është kjo e gabuar? 146 00:08:52,750 --> 00:08:55,010 Le të shohim këtë shembull. 147 00:08:55,010 --> 00:08:57,020 Unë jam duke u përpjekur për të enqueue një bandë e gjëra, 148 00:08:57,020 --> 00:08:58,390 dhe atëherë unë jam duke shkuar për të dequeue dhe enqueue. 149 00:08:58,390 --> 00:09:00,550 Ka shumë e komandave, por kjo është shumë e thjeshtë. 150 00:09:00,550 --> 00:09:04,790 Unë jam duke shkuar për enqueue 5, kështu që shtoni 5, dhe pastaj 7, 151 00:09:04,790 --> 00:09:09,310 1, 4, 6, dhe pastaj unë dua të dequeue diçka, 152 00:09:09,310 --> 00:09:12,000 që do të thotë se unë jam duke shkuar për të hequr elementin e parë. 153 00:09:12,000 --> 00:09:14,640 Kështu që unë jam duke shkuar për të hequr numrin 3, e drejtë? 154 00:09:14,640 --> 00:09:17,320 Elementi i parë. Mirë. 155 00:09:17,320 --> 00:09:21,450 Tani në qoftë se unë të përpiqet për të enqueue diçka tjetër, çfarë do të ndodhë? 156 00:09:21,450 --> 00:09:24,290 Sipas zbatimit tim, 157 00:09:24,290 --> 00:09:31,040 Unë kam qenë duke shkuar për të vënë numrin e ardhshëm në tregues të q.size. 158 00:09:31,040 --> 00:09:35,140 Në këtë rast, madhësia është 8, 159 00:09:35,140 --> 00:09:38,640 kështu që indeksi 8 do të jetë e drejtë këtu në pozitën e fundit. 160 00:09:38,640 --> 00:09:43,900 Nëse unë të përpiqet për të enqueue 1 të drejtë këtu, unë do të overwriting pozitën e fundit 161 00:09:43,900 --> 00:09:45,870 me numrin 1, i cili eshte teresisht keq. 162 00:09:45,870 --> 00:09:49,870 Ajo që unë dua të bëj është të përfundojë rreth dhe të shkojnë në vendin e parë. 163 00:09:49,870 --> 00:09:52,870 Ndoshta ju do të them vetëm, mirë, unë vetëm duhet të kontrolloni 164 00:09:52,870 --> 00:09:55,600 në qoftë se unë në fakt mund të vënë diçka atje. 165 00:09:55,600 --> 00:09:58,560 Nëse jo, unë vetëm them, oh, kapaciteti i ri i plotë 166 00:09:58,560 --> 00:10:02,010 është në fakt kapaciteti - 1, dhe ju nuk mund të vendos një element atje. 167 00:10:02,010 --> 00:10:06,150 Por, çfarë është problemi? Problemi është se në qoftë se unë vetëm dequeue çdo gjë të drejtë këtu 168 00:10:06,150 --> 00:10:08,240 dhe atëherë unë të përpiqet për të shtuar diçka tjetër, ajo do të thonë vetëm, 169 00:10:08,240 --> 00:10:11,210 mirë, keni qenë në kapacitet të plotë, e cila është 0. 170 00:10:11,210 --> 00:10:13,620 Pra, radhë juaj është zhdukur. 171 00:10:13,620 --> 00:10:16,990 Ju duhet të përfundojë rreth, dhe një mënyrë për mbështjellës rreth 172 00:10:16,990 --> 00:10:22,040 se ju djema mësuar në vizionare dhe të tjera psets është duke përdorur mod. 173 00:10:22,040 --> 00:10:29,090 Ju mund ta provoni atë në shtëpi për të kuptuar pse ju do të bëni q.size + q.head 174 00:10:29,090 --> 00:10:31,080 Kapaciteti mod, por në qoftë se ju kontrolloni të drejtë këtu, 175 00:10:31,080 --> 00:10:34,760 ne mund të shohim se ajo punon. 176 00:10:34,760 --> 00:10:37,760 Kështu në shembullin e fundit, q.size ishte 8 177 00:10:37,760 --> 00:10:47,590 dhe kreu ishte 1, sepse ishte ky pozicion këtu e array. 178 00:10:47,590 --> 00:10:51,970 Pra, kjo do të jetë 8 + 1, 9. Kapaciteti Mod 9 do të jetë 0. 179 00:10:51,970 --> 00:10:56,640 Ajo do të shkojë në indeksin 0. Ne do të jetë në pozitën e drejtë. 180 00:10:56,640 --> 00:10:59,750 Dhe pastaj të përpiqet radhë në shtëpi. 181 00:10:59,750 --> 00:11:04,950 Disa gjëra të rëndësishme: të përpiqet për të kuptuar dallimin në mes të një pirg dhe një radhë. 182 00:11:04,950 --> 00:11:11,620 Në shtëpi, të përpiqet të marrë shumë të njohur me zbatimin e enqueue, dequeue, shtytje dhe pop. 183 00:11:11,620 --> 00:11:16,560 Dhe gjithashtu e kuptojnë kur ju do të përdorni secilin prej tyre. 184 00:11:16,560 --> 00:11:22,830 >> Pra, le të pushojnë për 10 sekonda me një bandë e Pokemons. 185 00:11:22,830 --> 00:11:26,080 Dhe tani le të kthehemi në strukturat e të dhënave. 186 00:11:26,080 --> 00:11:29,770 Hash tavolina. Shumë njerëz ishin të frikësuar e tabelave hash. 187 00:11:29,770 --> 00:11:33,650 në problem i vendosur 6, Spell Checker. 188 00:11:33,650 --> 00:11:35,980 Tavolina Hash dhe përpiqet, shumë njerëz të frikësuar prej tyre. 189 00:11:35,980 --> 00:11:38,540 Ata mendojnë se ata janë aq të vështirë për t'u kuptuar. Po? 190 00:11:38,540 --> 00:11:41,490 [Rob Bowden] Problem vendosur 5. >> Problem vendosur 5, po. Faleminderit Rob. 191 00:11:41,490 --> 00:11:43,370 Po. Gjashtë ishte Huff n 'pudre, po. 192 00:11:43,370 --> 00:11:49,340 Problem vendosur me 5 u Spell Checker, dhe keni pasur për të përdorur një tabelë hash apo një provoni. 193 00:11:49,340 --> 00:11:55,360 Shumë njerëz mendonin se ata ishin super e vështirë për të kuptuar, por ata janë në të vërtetë shumë e thjeshtë. 194 00:11:55,360 --> 00:12:01,290 Çfarë është një tabelë hash, në thelb? Një tabelë hash është një grup i listave të lidhura. 195 00:12:01,290 --> 00:12:06,730 I vetmi ndryshim midis një rrjet dhe një tabelë hash 196 00:12:06,730 --> 00:12:09,730 është se në tabelën hash ju keni diçka të quajtur një funksion hash. 197 00:12:09,730 --> 00:12:12,080 Çfarë është një funksion hash? 198 00:12:12,080 --> 00:12:13,970 Unë nuk e di nëse ju djema mund të lexoni këtu. 199 00:12:13,970 --> 00:12:16,090 Ky është një shembull i një tabelë hash. 200 00:12:16,090 --> 00:12:19,220 Kështu që ju mund të shihni se ju keni një rrjet me 31 elemente. 201 00:12:19,220 --> 00:12:22,440 Dhe ajo që ne bëjmë në një tabelë hash po kanë një funksion hash 202 00:12:22,440 --> 00:12:26,660 që do për të përkthyer një çelës, çdo int të një indeksi. 203 00:12:26,660 --> 00:12:31,740 Nëse, për shembull, në qoftë se unë dua të zgjedhin për B. Harrison, 204 00:12:31,740 --> 00:12:34,190 Unë do të vënë B. Harrison në funksionet e mia hash, 205 00:12:34,190 --> 00:12:36,960 dhe funksion hash do të kthehen 24. 206 00:12:36,960 --> 00:12:40,930 Kështu që unë e di që unë dua të ruajtur B. Harrison në 24. 207 00:12:40,930 --> 00:12:46,580 Pra, kjo është dallimi në mes të vetëm duke pasur një rrjet dhe të kesh një tabelë hash. 208 00:12:46,580 --> 00:12:48,740 Në tabelën hash ju do të keni një funksion që do të ju tregojnë se 209 00:12:48,740 --> 00:12:54,740 ku për të ruajtur të dhënat që ju dëshironi për të ruajtur. 210 00:12:54,740 --> 00:12:57,040 Për funksionin hash, ju dëshironi të shikoni për një funksion hash 211 00:12:57,040 --> 00:13:00,600 që është determinist dhe i shpërndarë. 212 00:13:00,600 --> 00:13:07,810 Siç mund ta shikoni këtu, ju shihni se një shumë e të dhënave që kam kërkuar për të dyqan ishte në të vërtetë 19 213 00:13:07,810 --> 00:13:12,470 në vend të përdorimit 31 dhe 30 dhe 29, të cilat ishin të gjithë të lirë. 214 00:13:12,470 --> 00:13:16,920 Pra funksion hash që kam përdorur nuk ishte shumë mirë-shpërndarë. 215 00:13:16,920 --> 00:13:20,710 Kur themi të mirë-shpërndarë, kjo do të thotë se ne duam të kemi, 216 00:13:20,710 --> 00:13:26,520 afërsisht, të paktën 1 ose 2 për secilin prej - 217 00:13:26,520 --> 00:13:32,190 si, një diferencë prej 1 ose 2 për secilin nga treguesit në vargjeve. 218 00:13:32,190 --> 00:13:43,950 Ju dëshironi që të ketë, afërsisht, numër të njëjtë të elementeve në çdo listë e lidhur në rrjet. 219 00:13:43,950 --> 00:13:48,600 Dhe është e lehtë për të parë nëse është e vlefshme në tabelë hash, shohin si tavolina hash. 220 00:13:48,600 --> 00:13:51,770 Pastaj >> pemë. Kjo është një pemë. 221 00:13:51,770 --> 00:13:56,400 Pemë në shkenca kompjuterike janë me kokë poshtë për disa arsye. 222 00:13:56,400 --> 00:14:00,150 Pra, këtu ju keni rrënja e pemës dhe pastaj gjethet. 223 00:14:00,150 --> 00:14:05,630 Ju duhet vetëm të dini nomenklatura për prindërit dhe fëmijën. 224 00:14:05,630 --> 00:14:12,880 Çdo nyjë ka fëmijë të saj, të cilat janë nyjet që janë nën prind. 225 00:14:12,880 --> 00:14:19,660 Kështu, për shembull, 2 do të jetë prind për 3 dhe për fëmijën tjetër të drejtë atje, 226 00:14:19,660 --> 00:14:25,290 ndërkohë që 3 do të jetë prind për 1 dhe fëmijët e tjerë që janë atje. 227 00:14:25,290 --> 00:14:29,990 Dhe 1 do të jetë fëmija i 3 është, dhe kështu me radhë. 228 00:14:29,990 --> 00:14:34,610 Ne kemi diçka shumë më interesante, të quajtur një pemë kërkim binar, 229 00:14:34,610 --> 00:14:39,040 në të cilat të gjitha vlerat për të drejtën e një nyje 230 00:14:39,040 --> 00:14:41,660 do të jetë në të djathtë, të drejtë këtu - në të djathtë, 231 00:14:41,660 --> 00:14:46,780 do të jetë më i madh se elementit në të rrënjës. 232 00:14:46,780 --> 00:14:49,780 Pra, në qoftë se unë kanë numrin 5 të drejtë këtu, të gjitha elementet për të drejtën 233 00:14:49,780 --> 00:14:51,940 do të jetë më i madh se 5, dhe majtas 234 00:14:51,940 --> 00:14:56,770 të gjitha elementet do të jetë më pak se 5. 235 00:14:56,770 --> 00:14:58,780 Pse është kjo e dobishme? 236 00:14:58,780 --> 00:15:01,660 E pra, në qoftë se unë dua të kontrolloni nëse numri 7 është këtu, për shembull, 237 00:15:01,660 --> 00:15:05,960 Unë thjesht shkoni në 5 të parë dhe unë jam duke shkuar për të parë, është i 7 më i madh apo më pak se 5? 238 00:15:05,960 --> 00:15:09,540 Kjo është më e madhe, kështu që unë e di se do të duhet të jetë në të djathtë të pemës. 239 00:15:09,540 --> 00:15:13,980 Pra, unë kam shumë më pak gjëra për të parë. 240 00:15:13,980 --> 00:15:19,520 Në zbatim të një pemë binare e kërkimit, nyjen, unë jam vetëm do të duhet të ketë të dhëna, 241 00:15:19,520 --> 00:15:21,750 kështu int n, ju gjithashtu mund të ketë një varg 242 00:15:21,750 --> 00:15:23,630 ose çdo gjë që ju të kërkuar. 243 00:15:23,630 --> 00:15:28,100 Ju vetëm duhet të jenë të kujdesshëm në përcaktimin e asaj që është më e madhe, ajo që është më pak. 244 00:15:28,100 --> 00:15:30,390 Pra, në qoftë se keni pasur vargjet, për shembull, ju mund të përcaktojë 245 00:15:30,390 --> 00:15:34,690 se të gjitha ato gjëra për të drejtën do të ketë gjatësi më të madhe, 246 00:15:34,690 --> 00:15:40,940 majtë do të kenë gjatësi të ulëta, kështu që është me të vërtetë deri te ju. 247 00:15:40,940 --> 00:15:44,930 >> Si mund të zbatojë të gjejnë për BST? 248 00:15:44,930 --> 00:15:47,840 Gjëja e parë që ne do të duhet të bëni është të kontrolloni nëse rrënja është NULL. 249 00:15:47,840 --> 00:15:50,920 Nëse është e NULL, kjo do të thotë se gjëja nuk është atje 250 00:15:50,920 --> 00:15:53,330 sepse ju nuk keni edhe një pemë, të drejtë? 251 00:15:53,330 --> 00:15:55,790 Kështu që unë kthimit të rreme. 252 00:15:55,790 --> 00:15:58,740 Përndryshe, unë jam duke shkuar për të parë nëse numri është më i madh 253 00:15:58,740 --> 00:16:01,720 se vlera në rrënjë. 254 00:16:01,720 --> 00:16:04,250 Unë do të përpiqen për të gjetur elementin në të djathtë 255 00:16:04,250 --> 00:16:08,590 nga pema. 256 00:16:08,590 --> 00:16:11,310 Ju shikoni që unë jam duke përdorur recursion këtu. 257 00:16:11,310 --> 00:16:14,150 Atëherë, nëse është më pak, unë jam duke shkuar për të parë në të majtë. 258 00:16:14,150 --> 00:16:18,330 Dhe së fundi, përndryshe, në qoftë se nuk është pak apo jo më e madhe, 259 00:16:18,330 --> 00:16:20,660 kjo do të thotë se kjo është vlera e vetë. 260 00:16:20,660 --> 00:16:23,010 Kështu që unë vetëm të kthehet e vërtetë. 261 00:16:23,010 --> 00:16:26,360 Ju mund të shihni këtu se kam përdorur në qoftë se, në qoftë se, në qoftë se. 262 00:16:26,360 --> 00:16:30,820 Dhe mbani mend, në quiz 0, kemi pasur një problem që kishte, nëse, nëse, nëse, 263 00:16:30,820 --> 00:16:32,780 dhe ju është dashur për të gjetur jo-efikasitetin, 264 00:16:32,780 --> 00:16:35,180 dhe mungesa e efikasitetit ishte se nëse keni përdorur. 265 00:16:35,180 --> 00:16:39,060 Ju duhet të keni përdorur në qoftë se, tjetër në qoftë se, tjetër në qoftë se, dhe tjetër. 266 00:16:39,060 --> 00:16:44,240 Pra, duhet të përdor tjetër në qoftë se dhe tjetër në qoftë se dhe tjetër këtu? 267 00:16:44,240 --> 00:16:46,200 A ka dikush - po? 268 00:16:46,200 --> 00:16:51,140 [Student folurit, e padëgjueshme] 269 00:16:51,140 --> 00:16:53,480 Është i përsosur. Kështu ajo është duke thënë se kjo nuk ka rëndësi, 270 00:16:53,480 --> 00:16:55,930 vetëm për shkak se mosefikasiteti që kemi pasur më parë 271 00:16:55,930 --> 00:16:59,550 ishte se për shkak se, ndoshta në qoftë se disa kusht është i kënaqur, 272 00:16:59,550 --> 00:17:03,570 kështu që ju keni kryer një veprim, por atëherë keni qenë duke shkuar për të kontrolluar të gjitha kushtet e tjera. 273 00:17:03,570 --> 00:17:06,319 Por në këtë rast, ai u kthye menjëherë, kështu që nuk ka rëndësi. 274 00:17:06,319 --> 00:17:09,220 Pra, ju nuk keni për të përdorur tjetër në qoftë se. 275 00:17:09,220 --> 00:17:11,740 >> Dhe së fundi, le të flasim për përpiqet, 276 00:17:11,740 --> 00:17:13,800 e cila është e preferuar të gjithëve. 277 00:17:13,800 --> 00:17:15,980 Një try është një dru i vargjeve. 278 00:17:15,980 --> 00:17:20,369 Është shumë shpejt për të parë deri vlerave, por ai përdor një shumë të kujtesës. 279 00:17:20,369 --> 00:17:22,530 Dhe kjo është zakonisht për të filtruar fjalë, kështu që kur ju 280 00:17:22,530 --> 00:17:27,920 duan për të zbatuar, për shembull, unë nuk e di, si një libër telefoni në telefonin tuaj 281 00:17:27,920 --> 00:17:30,440 dhe ju duan të jenë në gjendje të tipit B 282 00:17:30,440 --> 00:17:32,510 dhe vetëm kanë emrat e njerëzve që kanë B. 283 00:17:32,510 --> 00:17:37,960 Është shumë e lehtë për të zbatuar se duke përdorur një provoni, për shembull. 284 00:17:37,960 --> 00:17:39,820 Si mund të përcaktojë një nyje në një provoni? 285 00:17:39,820 --> 00:17:43,910 Ju vetëm duhet të ketë një bool që do të jetë is_word. 286 00:17:43,910 --> 00:17:48,660 Kjo përfaqëson se duke përdorur të gjitha personazhet para kësaj nyje, 287 00:17:48,660 --> 00:17:51,920 ju jeni në gjendje për të formuar një fjalë, 288 00:17:51,920 --> 00:17:57,230 dhe pastaj ju do të keni një rrjet të pointers në nyje. 289 00:17:57,230 --> 00:18:03,120 A mund të shihni se ne kemi një rrjet të nyjave prind, kështu nyje * rrjet? Po? 290 00:18:03,120 --> 00:18:06,050 Pra, le të shohim se si do të punojnë. Për spell check, 291 00:18:06,050 --> 00:18:08,230 ne kemi një rrjet të 27 elementeve, 292 00:18:08,230 --> 00:18:12,150 sepse ne kemi të gjitha letrat e plus apostrof. 293 00:18:12,150 --> 00:18:17,800 Para se këtu unë jam vetëm do të përdorë 2 sepse unë dua të jem në gjendje për të shkruar në bord. 294 00:18:17,800 --> 00:18:20,230 Mirë. Pra, ky është një shembull i një përpjekje. 295 00:18:20,230 --> 00:18:25,600 Në qoftë se unë vetëm të përcaktojë nyjen e parë, unë do të ketë një rrjet të 2 elementeve 296 00:18:25,600 --> 00:18:29,290 se janë 2 pointers në NULL, kështu që unë vetëm vënë 'a' dhe 'b'. 297 00:18:29,290 --> 00:18:32,430 Dhe unë jam i do të ketë një bool që thotë is_word. 298 00:18:32,430 --> 00:18:34,420 Ajo do të jetë e rreme për një të parë, 299 00:18:34,420 --> 00:18:37,370 vetëm për shkak se, para se ju nuk keni ndonjë karakter. 300 00:18:37,370 --> 00:18:40,900 Pra, një fjalë e zbrazët nuk është një fjalë. Kështu që është e rreme. 301 00:18:40,900 --> 00:18:46,320 Nëse unë dua të shtoj 'a' të këtij fjalori, çfarë do të duhet të bëj? 302 00:18:46,320 --> 00:18:49,760 Unë vetëm do të duhet të malloc një nyje të re për 'a', 303 00:18:49,760 --> 00:18:54,630 dhe pastaj shtoni fjalën e saj të vërtetë. 304 00:18:54,630 --> 00:19:00,180 Pra, ai thjesht përfaqëson se ka 'një' do të jetë e vërtetë. Kuptim? 305 00:19:00,180 --> 00:19:04,120 Pastaj në qoftë se unë dua të shtoj 'ba', unë do të duhet të malloc 1 për "b", 306 00:19:04,120 --> 00:19:07,550 dhe atëherë unë jam duke shkuar për të ngritur boolean të rreme, 307 00:19:07,550 --> 00:19:10,160 sepse 'b' në vetvete nuk është një fjalë. 308 00:19:10,160 --> 00:19:13,010 Atëherë unë jam duke shkuar për malloc një tjetër për 'a', kështu që 'ba', 309 00:19:13,010 --> 00:19:16,290 dhe atëherë unë jam duke shkuar për të ngritur kjo është një fjalë të vërtetë. 310 00:19:16,290 --> 00:19:18,950 Sepse 'ba' është një fjalë. 311 00:19:18,950 --> 00:19:21,910 Atëherë, nëse unë dua të parë nëse 'b' është në këtë fjalor, 312 00:19:21,910 --> 00:19:26,730 Unë vetëm mund të shkojnë në një të parë, "b". Unë shkoj poshtë, dhe unë shoh në është fjala, dhe ai thotë se rreme. 313 00:19:26,730 --> 00:19:30,110 Pra, kjo nuk është një fjalë. Nëse unë dua të shikoni 'ba', 314 00:19:30,110 --> 00:19:38,010 Unë shkoj në një të parë, "b", dhe pastaj të shkoni në 'a', dhe unë shoh e vërtetë, kështu që është një fjalë. Kuptim? 315 00:19:38,010 --> 00:19:41,950 Shumë njerëz të marrë hutuar nga përpiqet. Nuk ka? 316 00:19:41,950 --> 00:19:44,740 >> Së fundi, Huffman coding. Huffman coding është shumë i dobishëm 317 00:19:44,740 --> 00:19:47,550 për të ruajtur kujtesën dhe compress fotografi tekst, 318 00:19:47,550 --> 00:19:52,270 vetëm për shkak se shumë herë që ju përdorni 'a' dhe 'e', ​​për shembull, 319 00:19:52,270 --> 00:19:57,710 në dokumentet tuaja, por unë nuk e di nëse ju djema përdorni 'q' ose 'z' sa më shumë. 320 00:19:57,710 --> 00:20:02,040 Duke pasur vetëm 1 bajt për çdo karakter të vetëm, 321 00:20:02,040 --> 00:20:08,520 çdo të vetme - të 256 karaktere që kemi në tabelën ASCII nuk është shumë optimale, 322 00:20:08,520 --> 00:20:11,410 vetëm për shkak se ka disa karaktere që ju përdorni shumë më tepër, 323 00:20:11,410 --> 00:20:15,180 kështu që ju ndoshta duhet të përdorin më pak memorie për ata. 324 00:20:15,180 --> 00:20:17,560 Si mund ta përdor Huffman coding? 325 00:20:17,560 --> 00:20:20,010 Ne duhet të bëjmë një pemë Huffman. 326 00:20:20,010 --> 00:20:23,370  Një pemë Huffman ka nyje 327 00:20:23,370 --> 00:20:27,760 që kanë një simbol që do të jetë si, 'a', 'b', 'c', letër, 328 00:20:27,760 --> 00:20:32,990 çdo gjë që ju keni letër, një frekuencë që është frekuenca që shfaqet fjala në tekst, 329 00:20:32,990 --> 00:20:36,280 se ju jeni duke krijuar pemën Huffman për, 330 00:20:36,280 --> 00:20:41,800 dhe pastaj një nyje që do të tregojnë në të majtë të pemës Huffman 331 00:20:41,800 --> 00:20:47,210 dhe një tjetër nyje që do të nxjerr në të djathtë. Pra, ashtu si një pemë. 332 00:20:47,210 --> 00:20:49,440 Si mund të ndërtuar një pemë Huffman? 333 00:20:49,440 --> 00:20:54,020 Ju jeni do të marr 2 nyje që kanë frekuencat më të ulët. 334 00:20:54,020 --> 00:20:56,490 Nëse ju keni një kravatë ju jeni do të marr 2 nyje 335 00:20:56,490 --> 00:20:59,870 që kanë vlerat më të ulëta ASCII si. 336 00:20:59,870 --> 00:21:02,420 Pastaj ju jeni do të krijoni një pemë të re nga ato nyjet 2 337 00:21:02,420 --> 00:21:08,030 që do të ketë frekuenca kombinuar në nyjen prind. 338 00:21:08,030 --> 00:21:13,240 Dhe atëherë ju do të jeni për të hequr 2 fëmijë nga pylli 339 00:21:13,240 --> 00:21:15,570 dhe t'i zëvendësojë me prindin. 340 00:21:15,570 --> 00:21:18,930 Dhe ju jeni do të përsëris se deri sa ju keni vetem 1 pemë në pyll. 341 00:21:18,930 --> 00:21:23,840 Pra, le të shohim se si ju do të bëni një pemë Huffman për ZAMYLA. 342 00:21:23,840 --> 00:21:29,220 Ju mund të shihni këtu se të gjitha shkronjat kanë frekuencë 1 me përjashtim të 'A', që ka frekuencë 2. 343 00:21:29,220 --> 00:21:34,090 Kështu që unë krijuar nyje për të gjitha letrat I vënë në mënyrë të vlerë ASCII dhe frekuencë. 344 00:21:34,090 --> 00:21:40,090 Pra, nëse unë dua të krijuar pemën e parë, ajo do të jetë me 'L' dhe 'M'. 345 00:21:40,090 --> 00:21:43,100 Pra, është këtu. Frekuenca e palë do të jetë 2 346 00:21:43,100 --> 00:21:49,470 sepse është 1 + 1, atëherë e ardhshme 2 me frekuenca më të ulëta janë 'Y' dhe 'Z'. 347 00:21:49,470 --> 00:21:53,180 Dhe atëherë unë kam të gjithë prej tyre janë - kanë një frekuencë prej 2. 348 00:21:53,180 --> 00:22:00,470 Pra, cilat janë ato që kanë vlerën më të ulët ASCII për një tjetër? 349 00:22:00,470 --> 00:22:04,830 'A' dhe 'L'. Kështu që unë krijuar nyje të re, 350 00:22:04,830 --> 00:22:09,930 dhe më në fund, është 4 dhe 2, kështu që 2 do të jetë në të majtë. 351 00:22:09,930 --> 00:22:12,430 Dhe kjo është pema Huffman. 352 00:22:12,430 --> 00:22:16,060 Pastaj në qoftë se unë dua të shkruaj një tekst, 353 00:22:16,060 --> 00:22:24,440 si në binar të kthyer në tekst, duke përdorur pemë Huffman është shumë e lehtë. 354 00:22:24,440 --> 00:22:30,220 Për shembull, në qoftë se unë them se duke lëvizur në të majtë është një 0 dhe lëviz në të djathtë është një 1, 355 00:22:30,220 --> 00:22:32,410 Çfarë është që do të përfaqësojnë? 356 00:22:32,410 --> 00:22:35,530 Pra si 1, 1, në mënyrë të drejtë, e drejtë, 357 00:22:35,530 --> 00:22:40,370 dhe pastaj 0, la kështu do të jetë L, dhe pastaj 1, 0, 0. 358 00:22:40,370 --> 00:22:43,950 Pra, 1, 0, kështu që vetëm 1, 0, 'A'. 359 00:22:43,950 --> 00:22:47,540 Dhe pastaj 0, 1, kështu 'Z'. 360 00:22:47,540 --> 00:22:52,170 Dhe pastaj 1, 0, 0 - nr. 361 00:22:52,170 --> 00:22:56,780 0, 0 do të jetë 'Y', kështu Lazy. 362 00:22:56,780 --> 00:23:06,060 Pra, kjo është e gjitha për mua, Rob-së do të marrë përsipër. 363 00:23:06,060 --> 00:23:08,400 >> [Rob Bowden] Pra, java 7 gjëra. 364 00:23:08,400 --> 00:23:11,390 Ne kemi marrë një shumë për të shkuar mbi të vërtetë të shpejtë. 365 00:23:11,390 --> 00:23:13,430 Operatorët bitwise, tampon del nga shtrati, 366 00:23:13,430 --> 00:23:16,760 Biblioteka CS50, atëherë HTML, HTTP, CSS. 367 00:23:16,760 --> 00:23:20,990 Gjitha në si 15 deri 20 minuta. 368 00:23:20,990 --> 00:23:24,330 Operatorët bitwise. Ka 6 prej tyre që ju duhet të dini. 369 00:23:24,330 --> 00:23:31,200 Bitwise dhe, bitwise ose, XOR, ndryshim majtë, ndryshim e drejtë, dhe jo. 370 00:23:31,200 --> 00:23:35,420 Tani për ndryshim dhe nuk ju mezi e panë në të leksion në të gjitha. 371 00:23:35,420 --> 00:23:40,480 Ne do të shkoj për të shpejt këtu, por është mirë të dihet se këto janë 6 që ekzistojnë. 372 00:23:40,480 --> 00:23:45,070 Mos harroni se operatorët bitwise janë si kur ju bëni 3 + 4. 373 00:23:45,070 --> 00:23:49,420 Ju nuk jeni që kanë të bëjnë me binar e 3 dhe 4. 374 00:23:49,420 --> 00:23:56,550 Me operatorëve bitwise ju jeni në të vërtetë kanë të bëjnë me copa individuale të numrave 3 dhe 4. 375 00:23:56,550 --> 00:23:59,120 >> Pra, e para që ne do të thonë se është bitwise jo, 376 00:23:59,120 --> 00:24:02,340 dhe të gjithë kjo nuk është rrokullisje të gjitha pjesë. 377 00:24:02,340 --> 00:24:05,500 Kështu që këtu, në qoftë se jeni të shkruar këtë në C, ju do të nuk e shkruajnë atë 378 00:24:05,500 --> 00:24:09,380 si ~ 11011 apo çfarëdo, ju do të shkruani atë si ~ 4, 379 00:24:09,380 --> 00:24:12,970 dhe pastaj ajo do të rrokullisje përfaqësimin binar prej 4. 380 00:24:12,970 --> 00:24:24,800 Kështu që këtu, ~ i një numri binar 1101101 do të rrokullisje saktësisht të gjithë 1 në 0-së dhe të gjitha 0-së të 1-së. 381 00:24:24,800 --> 00:24:27,600 Si unë them se, përdorimi i shpeshtë i kësaj, 382 00:24:27,600 --> 00:24:30,830 dhe ne do të shohim atë në pak, është si ne duam që të dalë me një numër të 383 00:24:30,830 --> 00:24:35,460 ku të gjitha bit jane 1, me përjashtim të njërit prej tyre. 384 00:24:35,460 --> 00:24:38,560 Kështu që është zakonisht më e lehtë për të shprehur numrin 385 00:24:38,560 --> 00:24:40,630 ku vetëm se pak i vetëm është vendosur, 386 00:24:40,630 --> 00:24:44,650 dhe pastaj të marrin ~ e saj, kështu që në çdo hap tjetër është vendosur përveç se një. 387 00:24:44,650 --> 00:24:50,300 Pra, kjo është ajo që ne jemi duke shkuar për të përdorur më shumë në pak. 388 00:24:50,300 --> 00:24:58,220 >> Bitwise ose. Këtu janë 2 numra binar, dhe këto 2 numra 389 00:24:58,220 --> 00:25:00,780 janë mjaft përfaqësuese, pasi ato përfaqësojnë çdo mundur 390 00:25:00,780 --> 00:25:07,290 Kombinimi i bit që ju mund të duhet për të vepruar në. 391 00:25:07,290 --> 00:25:13,540 Këtu, kur unë or'd çdo grimë, ne jemi vetëm do të krahasuar drejt poshtë. 392 00:25:13,540 --> 00:25:15,410 Pra, në anën e majtë që ne kemi një 1 dhe një 1. 393 00:25:15,410 --> 00:25:20,510 Kur unë bitwise | ata, çfarë jam unë do të merrni? Një. 394 00:25:20,510 --> 00:25:25,320 Pastaj bitwise | 0 dhe 1 do të më jepni? Një. 395 00:25:25,320 --> 00:25:27,840 Bitwise 1 dhe 0 do të jetë e njëjta gjë, e. 396 00:25:27,840 --> 00:25:31,880 Bitwise 0 | 0 do të më jepni 0. 397 00:25:31,880 --> 00:25:37,300 Pra, rasti i vetëm ku unë të marrë është 0 në 0 | 0 rasti. 398 00:25:37,300 --> 00:25:40,020 Dhe ju mund të mendoni se vetëm si ORS tuaja logjike. 399 00:25:40,020 --> 00:25:44,830 Pra, nëse ju mendoni se e 1 si të vërtetë dhe 0 si të rreme, e njëjta gjë vlen edhe këtu. 400 00:25:44,830 --> 00:25:50,040 Pra, e vërtetë apo e vërtetë është e vërtetë, e vërtetë apo e rreme është e vërtetë. 401 00:25:50,040 --> 00:25:57,150 Rreme apo e vërtetë është e vërtetë, false apo e rreme është e vetmja gjë që është në të vërtetë të rreme. 402 00:25:57,150 --> 00:26:00,100 Ja shembulli që ju duhet të dini 403 00:26:00,100 --> 00:26:05,160 si një shembull mjaft të mirë të kur operatorët bitwise përdoren. 404 00:26:05,160 --> 00:26:08,660 Këtu në qoftë se ne ose kapitali 'A' me Ox20, 405 00:26:08,660 --> 00:26:11,830 dhe ne do të shikojmë këto në një të dytë, ne kemi marrë diçka. 406 00:26:11,830 --> 00:26:16,020 Dhe në qoftë se ne ose me të vogla 'një' me Ox20, ne kemi marrë diçka. 407 00:26:16,020 --> 00:26:26,750 Pra, le të tërheqë deri tabelën ASCII. 408 00:26:26,750 --> 00:26:34,000 Mirë. Këtu ne shohim se 'A' është - 409 00:26:34,000 --> 00:26:36,920 këtu ne kemi "A" është decimal 65. 410 00:26:36,920 --> 00:26:45,120 Por unë do të shkoj me të heksadecimal, e cila është Ox41. 411 00:26:45,120 --> 00:26:48,280 Goxha i sigurt ne e pamë atë në klasë. Unë mendoj se ne e pamë atë në klasë 412 00:26:48,280 --> 00:26:52,730 se kjo është goxha e lehtë për të kthyer nga heksadecimal në binar. 413 00:26:52,730 --> 00:26:55,280 Kështu që këtu, në qoftë se unë dua të vënë 4 në binar, 414 00:26:55,280 --> 00:26:59,550 kjo është vetëm do të jetë 0100. 415 00:26:59,550 --> 00:27:03,620 Kjo eshte 1 e vendi, vendi 2 e, Vendi 4-së, kështu që kjo është 4. 416 00:27:03,620 --> 00:27:08,550 Pastaj unë mund të ndarë me 1 në binar, i cili do të jetë 0001. 417 00:27:08,550 --> 00:27:14,280 Dhe kështu kjo do të jetë përfaqësimi i 'A' në binar. 418 00:27:14,280 --> 00:27:22,720 Duke marrë me të vogla 'a', ajo tani do të jetë Ox61, 419 00:27:22,720 --> 00:27:27,050 ku, ndarë këto deri në binar të saj, kështu që një 6 - 420 00:27:27,050 --> 00:27:37,830 Le të vërtetë të bëjë atë - nuk ka ndonjë gomë? Eraser. 421 00:27:37,830 --> 00:27:48,220 Ox61. Pra, ndarja 6 në binar do të jetë 0 + 4 + 2 + 0. 422 00:27:48,220 --> 00:27:54,610 Dhe ndarjen 1 do të jetë 0001. 423 00:27:54,610 --> 00:27:56,520 Duke parë dallimin në mes këtyre 2, 424 00:27:56,520 --> 00:28:04,250 ne shohim se i vetmi ndryshim midis një Fjala dhe një 'A' kapitalit është kjo pak e vetme. 425 00:28:04,250 --> 00:28:11,810 Pra, të vijnë në këtu - në rregull. 426 00:28:11,810 --> 00:28:15,920 Të vijnë në këtu, në qoftë se ne e shikojmë se çfarë bit Ox20 është, 427 00:28:15,920 --> 00:28:22,210 Ox20 kështu ndarjen në binar të saj, 428 00:28:22,210 --> 00:28:27,310 është 0010, 0000. 429 00:28:27,310 --> 00:28:33,470 Ox20, vetëm pak që është vendosur është kjo pak që ne jemi të shqetësuar me të, 430 00:28:33,470 --> 00:28:38,210 me switching midis kapitalit dhe Fjala 'a'. 431 00:28:38,210 --> 00:28:47,610 Nëse I ose 'A', e cila është një nga kjo, 'A', 432 00:28:47,610 --> 00:28:50,580 nëse unë ose 'A' me Ox20, 433 00:28:50,580 --> 00:28:53,490 çfarë jam unë do të merrni? 434 00:28:53,490 --> 00:28:58,960 [Student, e padëgjueshme] >> me të vogla 'a', për shkak se ajo do të rrokullisje këtë pak në një 1. 435 00:28:58,960 --> 00:29:04,170 Dhe në qoftë se unë ose 'një' me Ox20, çfarë jam unë do të merrni? 436 00:29:04,170 --> 00:29:08,780 Vogle një, sepse vetëm oring 'një' me Ox20, 437 00:29:08,780 --> 00:29:14,580 Unë jam vetëm do të jetë oring këtë grimë të vetme të një 1, kjo është tashmë një 1, kështu që nuk ka rëndësi. 438 00:29:14,580 --> 00:29:17,960 Pra, ne të merrni 'a' dhe 'a'. 439 00:29:17,960 --> 00:29:24,820 >> Bitwise dhe. Përsëri, ne mund të mendojnë për këtë si homologut tonë logjike dhe. 440 00:29:24,820 --> 00:29:28,180 Në anën e majtë kemi vërtetë dhe e vërtetë. 441 00:29:28,180 --> 00:29:31,160 Ajo do të jetë e vërtetë, dhe për të gjitha rastet, 442 00:29:31,160 --> 00:29:36,270 false dhe e vërtetë apo e vërtetë dhe e rreme, ose false dhe të rreme, 443 00:29:36,270 --> 00:29:38,550 asnjë nga këto gjëra janë të vërteta. 444 00:29:38,550 --> 00:29:44,170 Pra, ajo që ne të përfundojnë duke është 1000. 445 00:29:44,170 --> 00:29:48,830 Deri tani, këtu, këtu është ku unë e kam përdorur bitwise besueshëm jo, 446 00:29:48,830 --> 00:29:52,230 ku kemi pasur Ox20. 447 00:29:52,230 --> 00:29:54,350 Pra, kjo është Ox20. 448 00:29:54,350 --> 00:29:59,570 Tani ajo që unë dua të bëj, bitwise ~ i Ox20. 449 00:29:59,570 --> 00:30:03,600 Kjo do të rrokullisje të gjitha pjesë. 450 00:30:03,600 --> 00:30:09,330 Pra, unë kam 1101, 1111. 451 00:30:09,330 --> 00:30:18,940 Dhe kështu 'A' anded me ~ Ox20 do të më jep atë? 452 00:30:18,940 --> 00:30:22,430 Vetëm pak ne me të vërtetë duhet të mendoni se është ky, 453 00:30:22,430 --> 00:30:26,020 që, në qoftë se të gjitha këto janë të vendosur copa në 1, 454 00:30:26,020 --> 00:30:29,000 atëherë ne jemi duke shkuar për të marrë saktësisht atë 'A' ishte, 455 00:30:29,000 --> 00:30:31,260 përveç, ndoshta, ajo që kjo është pak. 456 00:30:31,260 --> 00:30:34,460 Sepse në qoftë se ajo ishte një 1, tani ajo do të jetë vendosur në një 0, 457 00:30:34,460 --> 00:30:39,810 sepse çdo gjë që kjo është, anded me këtë do të jetë 0. 458 00:30:39,810 --> 00:30:43,280 Pra, çfarë është 'A' & ~ Ox20 do të më jepni? 459 00:30:43,280 --> 00:30:48,200 [Studentët përgjigje, e padëgjueshme] >> Dhe çfarë është "një" dhe - është e "A". 460 00:30:48,200 --> 00:30:52,170 Dhe ajo që është 'një' & ~ Ox20 do të më jepni? 461 00:30:52,170 --> 00:30:56,720 'A.' Për shkak se kjo është aktualisht një 1. 462 00:30:56,720 --> 00:30:59,570 Anding me këtë 0 do të bëjë atë një 0, 463 00:30:59,570 --> 00:31:02,530 dhe tani ne jemi duke shkuar për të marrë një 'A'. 464 00:31:02,530 --> 00:31:06,600 >> Dyja janë "A", dhe e fundit por jo më pak të këtij lloji, 465 00:31:06,600 --> 00:31:10,830 ne kemi XOR. Është shumë e shumë si ose, 466 00:31:10,830 --> 00:31:14,400 me përjashtim të kjo do të thotë vetëm ose. 467 00:31:14,400 --> 00:31:18,420 Kjo është si ajo që ju zakonisht mendojnë për të, ose në botën e vërtetë. 468 00:31:18,420 --> 00:31:23,190 Kështu që ju të bërë të 'x' apo 'y', por jo të dyja. 469 00:31:23,190 --> 00:31:28,700 Këtu 1 ^ 1 do të jetë 0. 470 00:31:28,700 --> 00:31:33,650 Për shkak se e vërtetë, kjo është - ai nuk punon, si dhe me logjike e vërtetë dhe të rreme 471 00:31:33,650 --> 00:31:37,150 si bitwise & dhe ose të bëjë, 472 00:31:37,150 --> 00:31:40,100 por e vërtetë ^ e vërtetë është e rreme. 473 00:31:40,100 --> 00:31:44,810 Sepse ne vetëm duam të kthehen e vërtetë në qoftë se vetëm një prej tyre është e vërtetë. 474 00:31:44,810 --> 00:31:50,950 Kështu 1 ^ 1 është 0. Po në lidhje me 0 ^ 1? 475 00:31:50,950 --> 00:31:56,010 Është 1. 1 ^ 0 eshte 1, 0 ^ 0 është 0. 476 00:31:56,010 --> 00:32:03,890 Pra, në të gjitha rrethanat, 0 bitwise diçka 0 do të jetë 0. 477 00:32:03,890 --> 00:32:10,270 1 bitwise diçka 0 ose 0 bitwise 1, 478 00:32:10,270 --> 00:32:14,660 në qoftë se është | apo ^, ajo do të jetë një 1, dhe në qoftë se është dhe ajo do të jetë 0. 479 00:32:14,660 --> 00:32:20,850 Dhe rasti i vetëm ku 1 bitwise 1 nuk është 1 është me ekskluzive ose. 480 00:32:20,850 --> 00:32:24,580 Kjo është 0110. 481 00:32:24,580 --> 00:32:36,520 Kështu që këtu tani, duke përdorur XOR - kështu që ne jemi kthyer në 20. 482 00:32:36,520 --> 00:32:43,480 'Një' ^ Ox20 është këto 2 bit ne jemi krahasuar. 483 00:32:43,480 --> 00:32:50,020 Pra, një 1 ^ 0 do të më jepni një çfarë? Një një. 484 00:32:50,020 --> 00:32:58,430 'Një' ^ Ox20 do të më jepni? Me të vogla një. 485 00:32:58,430 --> 00:33:04,010 'A' ^ Ox20 do të më jepni? Capital A. 486 00:33:04,010 --> 00:33:09,310 Sepse çdo gjë që kjo është duke bërë, kjo XORing me Ox20 487 00:33:09,310 --> 00:33:15,380 është efektivisht Flipping çdo gjë që kjo është pak. 488 00:33:15,380 --> 00:33:21,240 Në qoftë se kjo është një 0, ajo tani do të bëhet një 1. 489 00:33:21,240 --> 00:33:26,160 Që kjo është një 1, 1 ^ 1 është 0. 490 00:33:26,160 --> 00:33:33,280 Pra jonë 'a' është bërë 'A', dhe 'A' jonë ka bërë 'një'. 491 00:33:33,280 --> 00:33:36,910 Pra XOR është një mënyrë të vërtetë i përshtatshëm i vetëm Flipping rastin. 492 00:33:36,910 --> 00:33:39,960 Ju thjesht doni të iterate mbi një varg të letrave 493 00:33:39,960 --> 00:33:44,330 dhe alternative rastin e çdo karakter të vetëm, 494 00:33:44,330 --> 00:33:50,680 ju vetëm XOR gjithçka me Ox20. 495 00:33:50,680 --> 00:33:55,220 >> Tani ne kemi lënë ndryshim. Ndryshim majtë është vetëm do të, në thelb, 496 00:33:55,220 --> 00:34:01,250 shtytje të gjithë numrat në, ose në të majtë, dhe futur 0-së pas tyre. 497 00:34:01,250 --> 00:34:05,550 Pra, këtu kemi 00.001.101. 498 00:34:05,550 --> 00:34:08,560 Ne jemi duke shkuar për të nxitur 3 0-së nga e djathta, 499 00:34:08,560 --> 00:34:13,580 dhe ne kemi marrë 01.101.000. 500 00:34:13,580 --> 00:34:16,380 Në terma nonbinary, 501 00:34:16,380 --> 00:34:24,699 ne shohim se kjo është me të vërtetë kanë të bëjnë majtë 13-zhvendosur me 3, i cili na jep 104. 502 00:34:24,699 --> 00:34:32,530 Pra zhvendosur majtas, ne shohim këtu, x << y është në thelb x * 2 ^ y. 503 00:34:32,530 --> 00:34:40,139 13 * 2 ^ 3, 2 ^ 3 është 8, kështu 13 * 8 është 104. 504 00:34:40,139 --> 00:34:45,679 Nëse ju vetëm mendoni për binar në përgjithësi, si për çdo shifër, 505 00:34:45,679 --> 00:34:49,530 në qoftë se ne fillojmë nga e djathta, është 1 e vendi, atëherë vendi e 2 e, atëherë vendi i 4-së. 506 00:34:49,530 --> 00:34:51,330 Pra, duke i shtyrë në 0-ta nga e djathta, 507 00:34:51,330 --> 00:34:55,080 ne jemi vetëm shtyjnë gjërat që ishin në vendin e 4-së në vendin e 8-së, 508 00:34:55,080 --> 00:34:57,920 dhe gjërat që ishin në vendin e 8-së në vendin e 16-së. 509 00:34:57,920 --> 00:35:01,280 Çdo ndryshim i vetëm shumëfishon me 2. Po? 510 00:35:01,280 --> 00:35:05,210 [Student] Çfarë ndodh nëse ju zhvendosur nga 5? 511 00:35:05,210 --> 00:35:10,790 [Bowden] Nëse jeni zhvendosur nga 5 ju do të humbni vetëm shifra. 512 00:35:10,790 --> 00:35:15,410 Në mënyrë të pashmangshme, kjo është e njëjta gjë. Si, integers janë vetëm 32 bit, 513 00:35:15,410 --> 00:35:20,750 kështu që nëse ju shtoni 2 integers të vërtetë të mëdha, ai thjesht nuk i përshtatet në një numër të plotë. 514 00:35:20,750 --> 00:35:23,660 Pra, është e njëjta gjë këtu. Nëse ju zhvendosur nga 5, 515 00:35:23,660 --> 00:35:25,650 ne vetëm do të humbasë këtë një të tillë. 516 00:35:25,650 --> 00:35:28,820 Dhe kjo është lloj i asaj që dua të them me "afërsisht" 517 00:35:28,820 --> 00:35:37,470 ku në qoftë se ju të kalojë shumë larg, ju humbni bit. 518 00:35:37,470 --> 00:35:39,830 E drejta >> ndryshim do të jetë e kundërta, 519 00:35:39,830 --> 00:35:43,090 ku ne jemi duke shkuar për të fus 0-së jashtë në fund, 520 00:35:43,090 --> 00:35:48,400 dhe për qëllimet tona, plotësoni 0 nga e majta. 521 00:35:48,400 --> 00:35:52,910 Pra, duke bërë këtë, ne jemi në thelb përmbysur atë që kishte bërë tashmë. 522 00:35:52,910 --> 00:35:57,780 Dhe ne shohim se të tre 0-të në të djathtë kanë rënë vetëm jashtë, 523 00:35:57,780 --> 00:36:02,020 dhe ne kemi shtyrë 1101 gjatë gjithë rrugës në të djathtë. 524 00:36:02,020 --> 00:36:08,380 Kjo është bërë 104 >> 3, i cili është, efektive, x / 2 ^ y. 525 00:36:08,380 --> 00:36:11,200 Deri tani, këtu, kjo është një ide e ngjashme. 526 00:36:11,200 --> 00:36:18,720 Pse është vetëm afërsisht x / 2 ^ y, dhe jo në fakt x / 2 ^ y? 527 00:36:18,720 --> 00:36:22,240 Sepse në qoftë se unë kam zhvendos me 4, unë do të kishte humbur një 1. 528 00:36:22,240 --> 00:36:25,950 Në thelb, ajo që ju mendoni, vetëm se e ndarjes numër i plotë në përgjithësi. 529 00:36:25,950 --> 00:36:31,070 Pra, si 5/2 është 2. Nuk është 2.5. 530 00:36:31,070 --> 00:36:35,000 Është e njëjta ide këtu. Kur ne ndarje me 2, 531 00:36:35,000 --> 00:36:39,910 ne mund të humbasin bit rastësishëm gjatë rrugës. 532 00:36:39,910 --> 00:36:43,870 Deri tani - kjo është ajo për bitwise. Kjo është e gjitha që ju duhet të dini. 533 00:36:43,870 --> 00:36:46,340 Mos harroni të rasteve të përdorimit kemi parë në klasë, 534 00:36:46,340 --> 00:36:49,340 si një maskë pak është e dobishme për operatorët bitwise, 535 00:36:49,340 --> 00:36:53,220 ose ju përdorni ato për maska ​​bit. 536 00:36:53,220 --> 00:36:58,620 Shkronja kapitale dhe letra vogle, conversions është një shembull mjaft prototip. 537 00:36:58,620 --> 00:37:01,640 >> Mirë, kështu që del nga shtrati tampon sulmet. 538 00:37:01,640 --> 00:37:05,110 Çdokush mbani mend se çfarë ishte e gabuar me këtë funksion? 539 00:37:05,110 --> 00:37:10,140 Vini re ne shpalli një rrjet të 12 bytes, 12 chars, 540 00:37:10,140 --> 00:37:18,510 dhe pastaj ne kopje në tampon tonë të 12 gërma gjithë bar string. 541 00:37:18,510 --> 00:37:25,080 Pra, çfarë është problemi këtu? 542 00:37:25,080 --> 00:37:32,270 Numri magjik 12 duhet shumë e shumë të menjëherë pop jashtë si - pse 12? 543 00:37:32,270 --> 00:37:35,050 Çka nëse bar ndodh të jetë më shumë se 12 karaktere? 544 00:37:35,050 --> 00:37:41,200 Po në qoftë se bar është miliona karaktere? 545 00:37:41,200 --> 00:37:46,010 Këtu çështja është memcpy. Nëse bar është kohë e mjaftueshme, 546 00:37:46,010 --> 00:37:50,330 ajo do vetëm plotësisht - 'c', 'c' nuk kujdeset se ajo ishte vetëm 12 karaktere; 547 00:37:50,330 --> 00:37:53,280 'C' nuk ka kujdes se ajo nuk mund të përshtatet që shumë bytes. 548 00:37:53,280 --> 00:37:58,250 Ajo do të prishësh vetëm krejtësisht char, 12 bytes kemi alokuara për të, 549 00:37:58,250 --> 00:38:01,830 dhe çdo gjë të fundit atë në kujtesë që në fakt nuk i përkasin asaj tampon 550 00:38:01,830 --> 00:38:06,520 me çfarëdo bar string është. 551 00:38:06,520 --> 00:38:09,780 Pra, kjo ishte foto pamë në klasë 552 00:38:09,780 --> 00:38:12,220 ku ne kemi rafte tonë në rritje deri. 553 00:38:12,220 --> 00:38:16,040 Ju duhet të përdoret për këto foto apo të merrni të njohur me ta përsëri. 554 00:38:16,040 --> 00:38:21,260 Ne kemi rafte tonë në rritje deri, adresat e kujtesës fillon nga 0 në krye 555 00:38:21,260 --> 00:38:26,270 dhe të rritet poshtë për të si 4 miliardë në fund. 556 00:38:26,270 --> 00:38:28,820 Ne kemi array tonë 'c' diku në kujtesë, 557 00:38:28,820 --> 00:38:32,260 atëherë ne kemi treguesin tonë të ndalojë të drejtë nën të, 558 00:38:32,260 --> 00:38:38,720 dhe atëherë ne e kemi këtë treguesin ruajtur kornizë në adresën tonë e kthimit dhe rafte rutinë tonë mëmë. 559 00:38:38,720 --> 00:38:40,800 Mos harroni çfarë adresa e kthimit është? 560 00:38:40,800 --> 00:38:45,360 Kjo është kur kryesore quan një foo funksion, e quan një bar funksion, 561 00:38:45,360 --> 00:38:48,100 në mënyrë të pashmangshme, bar kthimit. 562 00:38:48,100 --> 00:38:52,610 Pra, kur kthimet bar, ata duhet të dinë se ajo do të kthehet në foo që quajtur atë. 563 00:38:52,610 --> 00:39:01,360 Pra Adresa e kthimit është adresa e funksionit që ajo ka për t'u kthyer në kur kthehet funksionit. 564 00:39:01,360 --> 00:39:05,830 Arsyeja kjo është e rëndësishme për sulme del nga shtrati tampon është për shkak, të përshtatshme, 565 00:39:05,830 --> 00:39:09,580 hakerat të donte për të ndryshuar atë adresë e kthimit. 566 00:39:09,580 --> 00:39:14,950 Në vend që të shkojnë prapa në foo, Unë do të kthehem në kudo hacker do që unë të kthehem në. 567 00:39:14,950 --> 00:39:17,760 Dhe, të përshtatshme, ku hacker shpesh do të kthehen në 568 00:39:17,760 --> 00:39:22,400 është fillimi i tampon që kemi pasur në fillim. 569 00:39:22,400 --> 00:39:26,170 Pra të vini re, përsëri, Vogël indian. 570 00:39:26,170 --> 00:39:28,490 Pajisja është një shembull i një sistemi të vogël indian, 571 00:39:28,490 --> 00:39:34,140 kështu që një numër i plotë apo një akrep është ruajtur me bytes kthyera. 572 00:39:34,140 --> 00:39:38,980 Pra, këtu ne shohim - është kjo? Po. 573 00:39:38,980 --> 00:39:45,660 Ne e shohim Ox80, OxC0, Ox35, OxO8. 574 00:39:45,660 --> 00:39:48,250 Mos harroni numra heksadecimal? 575 00:39:48,250 --> 00:39:50,640 Ne nuk e kundërt numra heksadecimal në pak indian, 576 00:39:50,640 --> 00:39:56,110 sepse 2 shifrat hexadecimal përbëjnë një bajt të vetëm, dhe ne të korrigjuar bytes. 577 00:39:56,110 --> 00:40:00,300 Kjo është arsyeja pse ne nuk e ruajtur, si, 80530CO8. 578 00:40:00,300 --> 00:40:07,520 Ne dyqan, në vend të kësaj, çdo palë e 2 shifra, duke filluar nga e djathta. 579 00:40:07,520 --> 00:40:10,880 Kjo adresë referohet adresën e fillimit 580 00:40:10,880 --> 00:40:15,190 të tampon tonë që ne të vërtetë donte të kopje në në vendin e parë. 581 00:40:15,190 --> 00:40:19,230 Arsyeja kjo është e dobishme për shkak se, çka nëse sulmuesi 582 00:40:19,230 --> 00:40:24,100 ndodhi, në vend të një varg që ishte vetëm 583 00:40:24,100 --> 00:40:27,060 një varg të padëmshme si, emrin e tyre apo diçka, 584 00:40:27,060 --> 00:40:33,900 çfarë nëse, në vend të kësaj, se string ishin vetëm disa kodin arbitrare 585 00:40:33,900 --> 00:40:38,610 që bëri çdo gjë që ata donin që ajo të bëjë? 586 00:40:38,610 --> 00:40:45,630 Pra, ata mund - Unë nuk mund të mendoj për ndonjë kod të ftohtë. 587 00:40:45,630 --> 00:40:47,780 Ajo mund të jetë çdo gjë, edhe pse. Çdo kod katastrofike. 588 00:40:47,780 --> 00:40:51,440 Në qoftë se ata donin, ata mund vetëm të bëjë diçka në gabimet segmentet, por që do të ishte e pakuptimtë. 589 00:40:51,440 --> 00:40:54,950 Ata zakonisht e bëjnë atë të kollitem sistemin tuaj. 590 00:40:54,950 --> 00:40:59,930 Mirë >>. Biblioteka CS50. 591 00:40:59,930 --> 00:41:04,800 Kjo është, në thelb, getInt, getString, të gjitha ato funksione ne kemi dhënë për ju. 592 00:41:04,800 --> 00:41:10,630 Pra, ne kemi varg char *, dhe kjo është abstraksion që shpërtheu larg 593 00:41:10,630 --> 00:41:12,450 në një moment gjatë semestrit. 594 00:41:12,450 --> 00:41:18,220 Mos harroni se një varg është vetëm një grup të karaktereve. 595 00:41:18,220 --> 00:41:23,240 Pra, këtu ne shohim një version i shkurtuar i getString. 596 00:41:23,240 --> 00:41:25,920 Ju duhet të shikojnë mbrapa në atë për të kujtuar se si është zbatuar në të vërtetë. 597 00:41:25,920 --> 00:41:30,950 Detajet kryesore janë, vini re ne kemi marrë në një karakter të vetëm në një kohë 598 00:41:30,950 --> 00:41:34,570 nga standarde në të, e cila është vetëm si të na shtypni në tastierë. 599 00:41:34,570 --> 00:41:37,890 Pra, një karakter të vetëm në një kohë, dhe në qoftë se ne të merrni edhe shumë karaktere, 600 00:41:37,890 --> 00:41:40,580 kështu nëse n + 1 është më e madhe se sa kapacitet, 601 00:41:40,580 --> 00:41:44,140 atëherë ne kemi nevojë për të rritur kapacitetin e tampon tonë. 602 00:41:44,140 --> 00:41:47,780 Pra, këtu ne jemi duke dyfishuar madhësinë e tampon tonë. 603 00:41:47,780 --> 00:41:51,840 Dhe kjo e mban sipër, ne të futur karakterin në tampon tonë 604 00:41:51,840 --> 00:41:56,220 deri sa të marrë një linjë të re ose fundin e file apo çfarëdo, 605 00:41:56,220 --> 00:41:59,380 në të cilin rast, ne jemi duke bërë me vargun dhe pastaj të getString reale 606 00:41:59,380 --> 00:42:05,120 zvogëlohet e kujtesës, si në qoftë se ne kemi ndarë shumë memorie ajo do të kthehemi dhe të tkurret pak. 607 00:42:05,120 --> 00:42:08,830 Pra, ne nuk tregojnë se, por ideja kryesore është 608 00:42:08,830 --> 00:42:11,960 ajo ka te lexuar ne nje karakter vetme në një kohë. 609 00:42:11,960 --> 00:42:17,140 Ajo nuk mund të lexohet vetëm në një gjë të gjithë në të njëjtën kohë, 610 00:42:17,140 --> 00:42:19,550 sepse buffer tyre është vetëm i një madhësie të caktuar. 611 00:42:19,550 --> 00:42:26,590 Pra, nëse vargu që ajo përpiqet për të futur në tampon është shumë i madh, atëherë ajo do të del nga shtrati. 612 00:42:26,590 --> 00:42:28,940 Pra, këtu kemi parandaluar që duke lexuar vetëm për një karakter të vetëm 613 00:42:28,940 --> 00:42:33,750 në një kohë dhe në rritje sa herë që ne kemi nevojë për të. 614 00:42:33,750 --> 00:42:40,270 Pra getInt dhe funksionet e tjera të bibliotekës CS50 kanë tendencë për të përdorur getString 615 00:42:40,270 --> 00:42:42,310 në implementimin e tyre. 616 00:42:42,310 --> 00:42:45,370 Kështu që unë theksoi gjëra të rëndësishme këtu. 617 00:42:45,370 --> 00:42:49,460 Ajo bën thirrje getString për të marrë një varg. 618 00:42:49,460 --> 00:42:51,710 Nëse getString nuk u kthye kujtesës, 619 00:42:51,710 --> 00:42:54,270 mos harroni se getString mallocs diçka, kështu që sa herë që ju të telefononi getString 620 00:42:54,270 --> 00:42:57,820 ju nuk duhet të (i pakuptueshëm) të liruar atë varg që ju mori. 621 00:42:57,820 --> 00:43:02,870 Kështu që këtu, në qoftë se ajo nuk arriti të malloc diçka, do të kthehemi INT_MAX si vetëm një flamur që, 622 00:43:02,870 --> 00:43:05,650 hej, ne nuk ishim në të vërtetë në gjendje për të marrë një numër të plotë. 623 00:43:05,650 --> 00:43:10,830 Ju duhet të injorojnë çdo gjë që unë të kthehem te ti, ose 624 00:43:10,830 --> 00:43:15,540 ju nuk duhet të trajtojnë këtë si një input vlefshme. 625 00:43:15,540 --> 00:43:21,360 Së fundi, duke supozuar se ka sukses, ne përdorim sscanf me atë flamur të veçantë, 626 00:43:21,360 --> 00:43:23,820 që do të thotë, së pari të shkojë me një numër të plotë, 627 00:43:23,820 --> 00:43:26,770 pastaj të shkojë me ndonjë karakter pas atij numër të plotë. 628 00:43:26,770 --> 00:43:29,070 Pra, vini re ne duam që ajo të barabartë 1. 629 00:43:29,070 --> 00:43:32,940 Kthimet Pra sscanf sa shumë ndeshje në qoftë se bëhet me sukses? 630 00:43:32,940 --> 00:43:37,010 Ajo do të kthehet me 1 nëse ajo përputhet me sukses një numër të plotë, 631 00:43:37,010 --> 00:43:40,890 ajo do të kthehet në 0 nëse nuk korespondon me një numër të plotë, dhe ajo do të kthehet 2 632 00:43:40,890 --> 00:43:45,920 nëse ajo përputhet një numër të plotë e ndjekur nga disa karakter. 633 00:43:45,920 --> 00:43:49,780 Pra, vini re ne rigjykuar në qoftë se ne të përputhen asgjë, por 1. 634 00:43:49,780 --> 00:43:55,230 Kështu që nëse futur 1, 2, 3, C, ose 1, 2, 3, X, 635 00:43:55,230 --> 00:43:57,400 atëherë 1, 2, 3 do të ruhet ne integer, 636 00:43:57,400 --> 00:43:59,620 X do të ruhet në karakter, 637 00:43:59,620 --> 00:44:06,410 sscanf do të kthehen 2, dhe ne do të provoni përsëri, sepse ne vetëm duam një numër të plotë. 638 00:44:06,410 --> 00:44:09,810 Shpejt >> defekt me HTML, HTTP, CSS. 639 00:44:09,810 --> 00:44:15,340 HyperText Markup Language është struktura dhe semantikë të internetit. 640 00:44:15,340 --> 00:44:19,960 Këtu është shembull nga leksion ku ne kemi HTML tags. 641 00:44:19,960 --> 00:44:22,110 Ne kemi tags kryesore, tags trupit, 642 00:44:22,110 --> 00:44:27,770 ne kemi shembuj të etiketave boshe ku ne të vërtetë nuk kanë një fillim dhe tag të ngushtë, 643 00:44:27,770 --> 00:44:30,820 ne vetëm kemi lidhje dhe imazhin. 644 00:44:30,820 --> 00:44:38,480 Nuk ka imazh mbylljes tag, nuk është vetëm një tag i vetëm që kryen çdo gjë tag ka nevojë për të bërë. 645 00:44:38,480 --> 00:44:41,950 Lidhja është një shembull, ne do të shohim se si ju lidhje me CSS, 646 00:44:41,950 --> 00:44:45,910 script është një shembull se si ju lidhje me një JavaScript të jashtme. 647 00:44:45,910 --> 00:44:53,100 Është shumë i thjeshtë, dhe mos harroni, HTML nuk është një gjuhë programimi. 648 00:44:53,100 --> 00:44:58,250 Këtu, mos harroni se si ju do të përcaktojë një formë ose të paktën atë që kjo do të bëjë? 649 00:44:58,250 --> 00:45:01,740 Një formë e tillë ka një veprim dhe një metodë. 650 00:45:01,740 --> 00:45:06,210 Metodat e ju do të shihni vetëm ndonjëherë janë GET dhe POST. 651 00:45:06,210 --> 00:45:09,040 Pra GET është versioni ku gjëja merr vënë në URL. 652 00:45:09,040 --> 00:45:11,680 POST është vendi ku ajo nuk është vënë në URL. 653 00:45:11,680 --> 00:45:18,520 Në vend të kësaj, çdo e dhënë nga formë është futur më i fshehur në HTTP kërkesë. 654 00:45:18,520 --> 00:45:22,390 Kështu që këtu, veprimi përcakton ku HTTP kërkesa shkon. 655 00:45:22,390 --> 00:45:27,490 Ku është duke shkuar është google.com / kërkim. 656 00:45:27,490 --> 00:45:32,890 Metoda. Mos harroni dallimet mes GET dhe POST, 657 00:45:32,890 --> 00:45:37,200 dhe, të them vetëm si shembull, në qoftë se ju dëshironi të bookmark diçka. 658 00:45:37,200 --> 00:45:40,660 Ju kurrë nuk do të jetë në gjendje të bookmark një post URL 659 00:45:40,660 --> 00:45:44,970 për shkak se të dhënat nuk është përfshirë në URL. 660 00:45:44,970 --> 00:45:49,790 >> HTTP, tani, është HyperText Transfer Protocol. 661 00:45:49,790 --> 00:45:54,080 HyperText Transfer Protocol, ju do të presin që ai të transferuar 662 00:45:54,080 --> 00:45:57,710 HyperText Markup Language, dhe kjo e bën. 663 00:45:57,710 --> 00:46:00,170 Por ajo gjithashtu transferon ndonjë imazhet që ju të gjeni në Web, 664 00:46:00,170 --> 00:46:05,400 ndonjë shkarkime të bëni të fillojë si një kërkesë HTTP. 665 00:46:05,400 --> 00:46:10,350 Pra HTTP është vetëm gjuha e World Wide Web. 666 00:46:10,350 --> 00:46:15,610 Dhe këtu ju duhet të njohin këtë lloj të një kërkese HTTP. 667 00:46:15,610 --> 00:46:19,300 Këtu HTTP/1.1 në anën vetëm thotë se është version 668 00:46:19,300 --> 00:46:21,570 të protokollit unë jam duke përdorur. 669 00:46:21,570 --> 00:46:25,770 Është shumë e shumë të gjithmonë do të jetë HTTP/1.1, si ju do të shihni atë. 670 00:46:25,770 --> 00:46:30,110 Pastaj ne shohim se kjo ishte GET, alternative duke qenë POST, që ju mund të shihni. 671 00:46:30,110 --> 00:46:40,790 Dhe URL që unë kam qenë duke u përpjekur për të vizituar ishte www.google.com/search?q = blah, blah, blah. 672 00:46:40,790 --> 00:46:44,240 Pra, mos harroni se kjo, q pikëpyetje = blah blah blah, 673 00:46:44,240 --> 00:46:49,040 është lloj gjëra që është dorëzuar nga një formë. 674 00:46:49,040 --> 00:46:51,830 Përgjigja mund të kthehet tek unë do të dukej diçka si kjo. 675 00:46:51,830 --> 00:46:54,050 Përsëri, duke filluar me protokollin, i cili do të jetë se, 676 00:46:54,050 --> 00:46:59,190 pasuar nga kodin e statusit. Ja kjo është 200 në rregull. 677 00:46:59,190 --> 00:47:05,060 Dhe së fundi, web faqja që unë në fakt të kërkuar do të ndiqet. 678 00:47:05,060 --> 00:47:08,210 Kodi mundur Statusi ju mund të shihni, dhe ju duhet të dini disa prej tyre. 679 00:47:08,210 --> 00:47:12,770 200 OK ju keni parë ndoshta para. 680 00:47:12,770 --> 00:47:17,830 403 Forbidden, 404 Not Found, 500 Server Gabim i brendshëm 681 00:47:17,830 --> 00:47:22,140 është zakonisht në qoftë se ju shkoni në një faqe interneti dhe diçka është thyer ose crashes e tyre kodin PHP, 682 00:47:22,140 --> 00:47:24,930 ndërsa në aplikim ne kemi se kuti e madhe portokalli 683 00:47:24,930 --> 00:47:27,830 që vjen deri dhe thotë, si, diçka është e gabuar, ky kod nuk punon 684 00:47:27,830 --> 00:47:30,380 ose ky funksion e keqe. 685 00:47:30,380 --> 00:47:33,230 Zakonisht faqet e internetit nuk duan që ju të dish se çfarë funksione janë në të vërtetë të këqija, 686 00:47:33,230 --> 00:47:37,880 kështu që në vend të kësaj ata do të ju jap vetëm 500 Gabimet Server brendshme. 687 00:47:37,880 --> 00:47:43,050 >> TCP / IP është 1 shtresë nën HTTP. 688 00:47:43,050 --> 00:47:47,550 Mos harroni se ka internet jashtë e World Wide Web. 689 00:47:47,550 --> 00:47:52,270 Ashtu si në qoftë se ju të luajnë një lojë online që nuk kalojnë nëpër të HTTP, 690 00:47:52,270 --> 00:47:55,740 ajo është duke kaluar një tjetër - është ende duke përdorur internetin, 691 00:47:55,740 --> 00:47:58,900 por ajo nuk e përdor HTTP. 692 00:47:58,900 --> 00:48:02,470 HTTP është vetëm një shembull i protokollit ndërtuar mbi TCP / IP. 693 00:48:02,470 --> 00:48:07,820 IP fjalë për fjalë do të thotë Internet Protocol. 694 00:48:07,820 --> 00:48:11,500 Çdo kompjuter ka një adresë IP, ata janë ato gjëra 4-shifrore 695 00:48:11,500 --> 00:48:16,510 si 192.168.2.1, apo çfarëdo, që ka tendencë të jetë një një lokal. 696 00:48:16,510 --> 00:48:23,390 Por kjo është modeli i një adresë IP. 697 00:48:23,390 --> 00:48:29,060 Pra DNS, Domain Name Service, 698 00:48:29,060 --> 00:48:33,410 kjo është ajo që përkthehet gjëra të tilla si google.com në një adresë IP aktuale. 699 00:48:33,410 --> 00:48:37,700 Pra, nëse ju shkruani se IP adresën në një URL, 700 00:48:37,700 --> 00:48:40,850 që do t'ju sjellë në Google, por ju nuk priren për të kujtuar ato gjëra. 701 00:48:40,850 --> 00:48:45,470 Ju kanë tendencë për të kujtuar google.com në vend. 702 00:48:45,470 --> 00:48:51,560 Gjëja e fundit që ne kemi është portet, ku kjo është pjesa TCP e IP. 703 00:48:51,560 --> 00:48:54,880 TCP bën më shumë. Mendoni për, si, ju keni të internetit të shfletuesit running. 704 00:48:54,880 --> 00:48:58,670 Ndoshta ju keni disa aplikimit email running; 705 00:48:58,670 --> 00:49:02,150 ndoshta ju keni disa program tjetër që përdor internet running. 706 00:49:02,150 --> 00:49:05,090 Ata të gjithë kanë nevojë për qasje në internet, 707 00:49:05,090 --> 00:49:08,100 por kompjuteri juaj ka vetëm 1 kartë WiFi apo çfarëdo. 708 00:49:08,100 --> 00:49:10,780 Pra, portet janë mënyra që ne jemi në gjendje për të ndarë 709 00:49:10,780 --> 00:49:13,550 se si këto aplikacione janë në gjendje të përdorin internetin. 710 00:49:13,550 --> 00:49:17,230 Çdo aplikim merr 1 port të veçantë që të mund të dëgjojnë për, 711 00:49:17,230 --> 00:49:19,670 dhe nga default, HTTP përdor portin 80. 712 00:49:19,670 --> 00:49:22,410 Disa shërbime email përdorim 25. 713 00:49:22,410 --> 00:49:24,490 Të ulët të numëruar ato priren të jenë të rezervuara. 714 00:49:24,490 --> 00:49:29,270 Ju zakonisht janë në gjendje për të marrë ato më të larta-numëruara për veten tuaj. 715 00:49:29,270 --> 00:49:32,010 >> CSS, Cascading Style Sheets. 716 00:49:32,010 --> 00:49:36,030 Ne faqet e internetit stil me CSS, jo me HTML. 717 00:49:36,030 --> 00:49:38,440 Ka 3 vende që ju mund të vënë CSS tuaj. 718 00:49:38,440 --> 00:49:46,300 Ajo mund të jetë inline, midis tags stil, ose në një dosje tërësisht të veçantë dhe pastaj të lidhura in 719 00:49:46,300 --> 00:49:48,470 Dhe këtu është vetëm një shembull i CSS. 720 00:49:48,470 --> 00:49:50,450 Ju duhet të njohin këtë model, 721 00:49:50,450 --> 00:49:54,310 ku shembulli i parë është që ne jemi të ngjashëm me tag trupit, 722 00:49:54,310 --> 00:49:56,680 dhe këtu ne jemi qendërzim tag trupit. 723 00:49:56,680 --> 00:50:00,420 Shembulli i dytë, ne jemi të ngjashëm me atë që është e 724 00:50:00,420 --> 00:50:04,740 me ID futboll, dhe ne jemi duke aplikuar disa stile me atë. 725 00:50:04,740 --> 00:50:07,310 Vini re se identitetit futboll tekst-aligns në të majtë, 726 00:50:07,310 --> 00:50:09,840 ndërsa trupi tekst-aligns qendër. 727 00:50:09,840 --> 00:50:13,180 Footer është brenda trupit. 728 00:50:13,180 --> 00:50:16,470 Ajo do të, në vend të kësaj, text-align majtë, edhe pse trupi thotë qendër text-align. 729 00:50:16,470 --> 00:50:18,880 Kjo është e tërë pjesa Cascading e saj. 730 00:50:18,880 --> 00:50:22,110 Ju mund të keni - ju mund të specifikoni stilet për trupin, 731 00:50:22,110 --> 00:50:25,320 dhe pastaj gjërat në trup që ju mund të specifikoni stilet më të veçanta, 732 00:50:25,320 --> 00:50:28,160 dhe gjëra si ju presin. 733 00:50:28,160 --> 00:50:34,420 Specifiers më specifike CSS kenë përparësi. 734 00:50:34,420 --> 00:50:46,140 Unë mendoj se kjo është ajo. 735 00:50:46,140 --> 00:50:49,260 >> [Ali Nahm] Hi everyone. Në qoftë se unë mund vetëm të marrë vëmendjen tuaj. 736 00:50:49,260 --> 00:50:53,990 Unë jam Ali dhe unë jam duke shkuar për të shkuar nëpër PHP dhe SQL të vërtetë të shpejtë. 737 00:50:53,990 --> 00:51:00,310 Pra, ne mund të fillojnë. PHP është e shkurtër për PHP: Hypertext Preprocessor. 738 00:51:00,310 --> 00:51:03,730 Dhe si ju të gjithë duhet të dini, kjo është një server-side gjuhë e shkruar, 739 00:51:03,730 --> 00:51:06,800 dhe ne e përdorin atë për në fund kthehet të faqet e internetit, 740 00:51:06,800 --> 00:51:12,540 dhe se si ajo ka një shumë të llogaritjeve, pjesën prapa skenës. 741 00:51:12,540 --> 00:51:17,510 Sintaksa. Ajo nuk është si C, befasi, befasi. 742 00:51:17,510 --> 00:51:22,060 Ajo gjithmonë ka për të filluar me të, në qoftë se ju mund të shihni, - unë nuk mund të lëvizin përpara. 743 00:51:22,060 --> 00:51:31,340 Ju mund të shihni keni nevojë për lloje të reja të formatimin e teksteve dhe atëherë edhe ju duhet? Php. 744 00:51:31,340 --> 00:51:35,780 Kjo është gjithmonë se si ju duhet të formojë tekstin tuaj PHP, kodin PHP. 745 00:51:35,780 --> 00:51:39,180 Kështu që nuk mund të jetë si C, ku ju lloj i vënë atë në të parë. 746 00:51:39,180 --> 00:51:42,290 Ju duhet të gjithmonë e rrethojnë atë. 747 00:51:42,290 --> 00:51:47,610 Dhe tani, Sintaksa e madhe është se të gjitha variablat duhet të fillojë me karakter $. 748 00:51:47,610 --> 00:51:49,490 Ju duhet të bëni atë kur ju jeni definimin e tyre, ju duhet të bëni atë 749 00:51:49,490 --> 00:51:51,860 kur ju jeni duke iu referuar atyre më vonë. 750 00:51:51,860 --> 00:51:56,510 Ju gjithmonë duhet se $. Është shoku më i ri më i mirë, shumë e shumë. 751 00:51:56,510 --> 00:52:01,690 Ju nuk - ndryshe nga C, ju nuk keni nevojë për të vënë çfarë lloji është e ndryshueshme. 752 00:52:01,690 --> 00:52:04,940 Kështu, ndërsa ju keni nevojë për të $, ju nuk keni nevojë për të vënë, si, 753 00:52:04,940 --> 00:52:09,470 int x apo y string, më tej, më tej. 754 00:52:09,470 --> 00:52:11,490 Pra një ndryshim të vogël. 755 00:52:11,490 --> 00:52:15,590 Si rezultat i kësaj, kjo do të thotë se PHP është një lloj i dobët. 756 00:52:15,590 --> 00:52:19,310 PHP është një gjuhë dobët lloji, dhe ai ka shtypur dobët variablave. 757 00:52:19,310 --> 00:52:24,020 Me fjalë të tjera, kjo do të thotë që ju mund të kaloni në mes të llojeve të ndryshme të llojeve të ndryshueshme. 758 00:52:24,020 --> 00:52:27,230 Ju mund të ruajë numrin tuaj 1 si një int, 759 00:52:27,230 --> 00:52:29,650 ju mund të ruajë atë si një varg, dhe ju mund të ruajë atë si një noton, 760 00:52:29,650 --> 00:52:33,550 dhe të gjithë do të jetë ai numër 1. 761 00:52:33,550 --> 00:52:36,080 Edhe pse ju jeni ruajtjen atë në forma të ndryshme, 762 00:52:36,080 --> 00:52:39,120 është ende - llojet e ndryshueshme janë ende mbajnë në fund. 763 00:52:39,120 --> 00:52:41,540 Pra, nëse ju shikoni këtu, nëse ju kujtohet nga pset 7, 764 00:52:41,540 --> 00:52:43,500 shumë prej jush ndoshta kishte çështje me këtë. 765 00:52:43,500 --> 00:52:47,280 Dy shenja të barabarta, 3 shenjat e barabarta, 4 shenjat e barabarta. 766 00:52:47,280 --> 00:52:49,990 Mirë, nuk ka 4 shenja të barabartë, por ka 2 dhe 3. 767 00:52:49,990 --> 00:52:53,320 Ju përdorni 2 shenja të barabarta për të kontrolluar vlerat. 768 00:52:53,320 --> 00:52:55,830 Ajo mund të shikoni të gjithë llojeve. 769 00:52:55,830 --> 00:52:58,770 Pra, nëse ju mund të shihni në shembullin e parë, 770 00:52:58,770 --> 00:53:02,210 Unë kam num_string num_int ==. 771 00:53:02,210 --> 00:53:06,710 Pra int tuaj dhe string tuaj janë të dy, teknikisht, 1, 772 00:53:06,710 --> 00:53:10,790 por ata janë lloje të ndryshme. Por, për të barabartëve të dyfishtë, ai ende do të kalojë. 773 00:53:10,790 --> 00:53:15,510 Megjithatë, për të barabartëve trefishtë, ajo kontrollon vlerë, si dhe llojet e ndryshme. 774 00:53:15,510 --> 00:53:18,760 Kjo do të thotë se nuk do të kalojë në këtë rast të dytë këtu, 775 00:53:18,760 --> 00:53:22,350 ku ju jeni duke përdorur 3 shenja të barabarta në vend. 776 00:53:22,350 --> 00:53:26,590 Pra, kjo është një ndryshim i madh që ju duhet të gjithë kanë treguar tani. 777 00:53:26,590 --> 00:53:31,570 >> String varg është një tjetër gjë e fuqishme që ju mund të përdorni në PHP. 778 00:53:31,570 --> 00:53:34,080 Kjo është në thelb vetëm këtë dobishëm dot simbol, 779 00:53:34,080 --> 00:53:36,230 dhe kjo është se si ju mund të lidh vargjet bashku. 780 00:53:36,230 --> 00:53:40,800 Pra, nëse ju keni Cat dhe ju keni qen, dhe ju doni për të vënë 2 strings së bashku, 781 00:53:40,800 --> 00:53:44,080 ju mund të përdorni periudhën, dhe kjo është lloj i si funksionon. 782 00:53:44,080 --> 00:53:46,660 Ju gjithashtu mund vetëm vendin e tyre pranë njëri-tjetrit, 783 00:53:46,660 --> 00:53:49,030 si ju mund të shihni këtu në shembullin e poshtme, 784 00:53:49,030 --> 00:53:51,610 ku kam jehonë string 1, string hapësirë ​​2. 785 00:53:51,610 --> 00:53:56,930 PHP do të dinë për të zëvendësuar ato si të tilla. 786 00:53:56,930 --> 00:53:59,780 Vargjeve. Tani, në PHP, ka 2 lloje të ndryshme të vargjeve. 787 00:53:59,780 --> 00:54:03,180 Ju mund të keni vargjeve të rregullta, dhe ju gjithashtu mund të ketë vargjeve të shoqatave, 788 00:54:03,180 --> 00:54:06,040 dhe ne jemi duke shkuar për të shkuar nëpërmjet tyre tani. 789 00:54:06,040 --> 00:54:08,280 Vargjeve e rregullta janë vetëm këtë në C, 790 00:54:08,280 --> 00:54:11,240 dhe kështu ju keni indekseve që janë të numëruara. 791 00:54:11,240 --> 00:54:13,160 Tani për tani ne jemi vetëm do të krijojë një dhe vënë - 792 00:54:13,160 --> 00:54:15,500 kështu që kjo është se si ne të krijojë një rrjet të zbrazët, atëherë ne do të 793 00:54:15,500 --> 00:54:17,310 vënë në indeksin e numrit 0. 794 00:54:17,310 --> 00:54:19,200 Ne jemi duke shkuar për të vënë numrin 6, vlera 6. 795 00:54:19,200 --> 00:54:21,500 Ju mund të shihni atë në fund këtu. 796 00:54:21,500 --> 00:54:24,240 Where's - at indeksi i 1 ne jemi duke shkuar për të vënë numrin vlerë 4, 797 00:54:24,240 --> 00:54:26,720 dhe kështu ju mund të shihni se ka një 6, ka një 4, 798 00:54:26,720 --> 00:54:29,160 dhe pastaj si ne jeni shtypjen gjëra, 799 00:54:29,160 --> 00:54:33,550 kur ne përpiqemi dhe të shtypura vlerën e ruajtur në indeks numrin 0, 800 00:54:33,550 --> 00:54:36,900 atëherë ne do të shohim vlerën 6 duke u shtypur. Ftohtë? 801 00:54:36,900 --> 00:54:40,160 Pra, kjo është vargjeve të rregullta për ju. 802 00:54:40,160 --> 00:54:42,750 Një mënyrë tjetër ju mund të shtoni gjëra të vargjeve të rregullta tani 803 00:54:42,750 --> 00:54:44,780 është që ju vetëm mund të append ato në fund. 804 00:54:44,780 --> 00:54:47,240 Kjo do të thotë që ju nuk keni për të specifikojë e indeksit të veçantë. 805 00:54:47,240 --> 00:54:51,000 Ju mund të shihni numrin, dhe pastaj në kllapa katrore nuk ka indeksin e specifikuar. 806 00:54:51,000 --> 00:54:56,270 Dhe kjo do të di - PHP do të dinë për të vetëm të shtoni atë në fund të listës, vend tjetër të lirë. 807 00:54:56,270 --> 00:54:59,190 Kështu që ju mund të shihni me 1 të drejtë atje në atë vend 0, 808 00:54:59,190 --> 00:55:02,690 2 shkoi drejtë atje në vendin e parë. 809 00:55:02,690 --> 00:55:04,690 3 shkon - shtohet edhe atje. 810 00:55:04,690 --> 00:55:06,720 Pra, kjo lloj kuptim. Ju jeni vetëm vazhdimisht duke shtuar atë, 811 00:55:06,720 --> 00:55:09,360 dhe atëherë kur ne jemi duke i bërë jehonë indeksin e numrit 1, 812 00:55:09,360 --> 00:55:13,080 ajo do të shtypura nga vlerën 2. 813 00:55:13,080 --> 00:55:16,800 Pastaj ne kemi >> vargjeve që janë vargjeve asociative. 814 00:55:16,800 --> 00:55:19,370 Vargjeve asociative, në vend të paturit e indekseve numerike, 815 00:55:19,370 --> 00:55:23,630 atë që bëjnë ata është, ata kanë indekset që janë nga varg. 816 00:55:23,630 --> 00:55:25,670 Ju mund të shihni, në vend të - i hoqa qafe të gjithë ata indekseve të numrave, 817 00:55:25,670 --> 00:55:32,140 dhe tani është e key1, key2, key3, dhe ata janë në kuotat e dyfishtë për të ditur se ata janë të gjitha vargjet. 818 00:55:32,140 --> 00:55:34,470 Pra, ne mund të kemi një shembull të kësaj. 819 00:55:34,470 --> 00:55:38,790 Shembulli i kësaj është se kemi të tf, dhe kjo është emri indeksi. 820 00:55:38,790 --> 00:55:42,030 Ne jemi duke shkuar për të vënë "Aliun" si emër, në indeksin, kalorive ngrënë, 821 00:55:42,030 --> 00:55:47,640 ne mund të vënë një int këtë herë në vend të një varg, 822 00:55:47,640 --> 00:55:52,240 dhe pastaj në sërën e indeksit, ne mund të vënë një rrjet të tërë në brendësi të saj. 823 00:55:52,240 --> 00:55:55,490 Pra, kjo është lloj - kjo është një koncept të ngjashme me mënyrën se si kemi pasur 824 00:55:55,490 --> 00:55:58,930 indekset me numra, por tani ne mund të ndryshojmë indekset rreth 825 00:55:58,930 --> 00:56:03,890 të kenë ato si vargjet në vend. 826 00:56:03,890 --> 00:56:06,070 Ju gjithashtu mund të bëjë këtë, përveç vetëm duke bërë atë në mënyrë individuale, 827 00:56:06,070 --> 00:56:09,400 ju mund të bëni të gjitha në një copë. Kështu që ju mund të shihni se tf i asaj grup, 828 00:56:09,400 --> 00:56:13,350 dhe pastaj ne kemi vendosur ato të gjitha në një grup gjigant i kllapave katrore. 829 00:56:13,350 --> 00:56:15,220 Kështu që mund të shpejtojë gjërat. 830 00:56:15,220 --> 00:56:19,730 Kjo është më shumë një zgjedhje stilistik se sa jo. 831 00:56:19,730 --> 00:56:21,550 Ne gjithashtu kemi sythe. 832 00:56:21,550 --> 00:56:26,020 Në C ne kemi sythe që punojnë si kjo. 833 00:56:26,020 --> 00:56:29,690 Ne kishim grup tonë, dhe kemi shkuar nga indeksi 0 deri në fund të listës, 834 00:56:29,690 --> 00:56:31,740 dhe kemi shkruar të gjitha, apo jo? 835 00:56:31,740 --> 00:56:33,880 Përveç problemi është, për vargjeve associative, 836 00:56:33,880 --> 00:56:36,610 ne nuk e dimë me domosdo ato indekse numerike 837 00:56:36,610 --> 00:56:39,610 sepse tani ne kemi indekset string. 838 00:56:39,610 --> 00:56:44,800 Tani ne përdorim sythe foreach, e cila, përsëri, ju shpresojmë të përdorura në pset 7. 839 00:56:44,800 --> 00:56:48,930 Sythe foreach thjesht do të dinë çdo pjesë të vetme të listës. 840 00:56:48,930 --> 00:56:52,450 Dhe kjo nuk duhet të dinë saktësisht indeks numerik që ju keni. 841 00:56:52,450 --> 00:56:56,490 Pra, ju keni sintaksë foreach, kështu që është e foreach, ju vënë array. 842 00:56:56,490 --> 00:57:00,430 Pra array ime quhet pset, dhe pastaj si, fjala si, 843 00:57:00,430 --> 00:57:04,530 dhe pastaj të vendosni këtë ndryshore të përkohshme lokale që ju jeni do të përdorin 844 00:57:04,530 --> 00:57:10,690 vetëm për gjë të veçantë që do të mbajë të veçantë - 845 00:57:10,690 --> 00:57:14,770 një rast apo një pjesë e vektorit. 846 00:57:14,770 --> 00:57:18,350 Pset num do të mbajë me 1, dhe atëherë ndoshta ai do të mbajë numrin 6, 847 00:57:18,350 --> 00:57:20,410 dhe pastaj ajo do të mbajë numrin 2. 848 00:57:20,410 --> 00:57:26,630 Por është e garantuar për të shkuar nëpër çdo vlerë të vetme që është në rrjet. 849 00:57:26,630 --> 00:57:30,530 Funksionet të dobishme që ju duhet të dini në PHP janë të kërkojë, 850 00:57:30,530 --> 00:57:35,880 në mënyrë që e bën të sigurt që ju jeni duke përfshirë edhe disa fotografi, jehonë, dalje, bosh. 851 00:57:35,880 --> 00:57:40,490 Unë rekomandoj që ju shikoni në pset 7 dhe të kërkoni në këto funksione. 852 00:57:40,490 --> 00:57:42,810 Ju mund të keni të dini ato, 853 00:57:42,810 --> 00:57:47,060 kështu që unë patjetër do të dinë se çfarë, saktësisht, ata janë të gjithë duke bërë. 854 00:57:47,060 --> 00:57:50,080 >> Dhe tani ne jemi duke shkuar për të shkuar nëpërmjet qëllimit të vërtetë të shpejtë. 855 00:57:50,080 --> 00:57:53,490 Në fushëveprimin, PHP është lloj i një gjë shokuar, ndryshe nga C, 856 00:57:53,490 --> 00:57:56,170 dhe kështu që ne jemi vetëm do të shkojnë nëpërmjet saj shpejt. 857 00:57:56,170 --> 00:57:58,930 Pra, le të thonë se të fillojmë në atë shigjetë që ne kemi atje. 858 00:57:58,930 --> 00:58:02,900 Dhe ne jemi duke shkuar për të filluar me $ i. Pra ndryshueshme 'i' do të jetë 0, 859 00:58:02,900 --> 00:58:06,730 dhe ne jemi vetëm do të mbajnë shtypjen atë në atë kuti e madhe e bardhë atje. 860 00:58:06,730 --> 00:58:09,220 Ne jemi duke shkuar për të filluar me I0, dhe pastaj ne do të jehonë atë. 861 00:58:09,220 --> 00:58:12,670 Pra, ka 0. 862 00:58:12,670 --> 00:58:15,210 Dhe pastaj ne do të rritje atë nga për lak, 863 00:58:15,210 --> 00:58:17,810 dhe pastaj ajo do të jetë vlera e 1. 864 00:58:17,810 --> 00:58:20,070 Njëra është më pak se 3, kështu që ajo do të kalojë nëpër të cilat për lak, 865 00:58:20,070 --> 00:58:23,230 dhe pastaj ne do të shohim atë të shtypura përsëri. 866 00:58:23,230 --> 00:58:25,520 Ne jemi duke shkuar për rritje atë përsëri në 2, 867 00:58:25,520 --> 00:58:29,860 dhe 2 është më pak se 3, kështu që do të kalojë për lak, dhe ajo do të shtypura 2. 868 00:58:29,860 --> 00:58:35,100 Pastaj ju do të vini re se 3 nuk është më pak se 3, kështu që ne do të thyer nga për lak. 869 00:58:35,100 --> 00:58:40,050 Deri tani ne kemi dalë, dhe pastaj ne do të shkojnë në aFunction. 870 00:58:40,050 --> 00:58:45,010 Mirë. Kështu që ju duhet të vini re se kjo është e ndryshueshme që ne kemi krijuar, 871 00:58:45,010 --> 00:58:48,270 'i' variabël, nuk është scoped në nivel lokal. 872 00:58:48,270 --> 00:58:50,280 Kjo do të thotë se nuk është lokal në lak, 873 00:58:50,280 --> 00:58:58,060 dhe se ndryshueshme ne ende mund të hyni dhe të ndryshojë më pas, dhe ajo do të vazhdojë të jetë në fuqi. 874 00:58:58,060 --> 00:59:02,160 Pra, nëse ju shkoni në funksion tani, ju do të shihni se ne gjithashtu e përdorin 'i' variabël, 875 00:59:02,160 --> 00:59:05,320 dhe ne jemi duke shkuar për rritje 'i' + +. 876 00:59:05,320 --> 00:59:09,410 Ju do të mendoni se, në fillim, të bazuar në C, se kjo është një kopje e 'i' variabël. 877 00:59:09,410 --> 00:59:12,830 Kjo është një gjë krejtësisht të ndryshme, e cila është e saktë. 878 00:59:12,830 --> 00:59:16,560 Pra, kur ne të shtypura atë, ne jemi duke shkuar për të shtypur 'i' + +, e cila do të shtypura nga të cilat 4, 879 00:59:16,560 --> 00:59:19,640 dhe pastaj ne do të - vjen keq. 880 00:59:19,640 --> 00:59:22,030 Pastaj ne do të përfundojë jashtë atë funksion, 881 00:59:22,030 --> 00:59:24,820 dhe ne do të jetë aty ku se shigjeta është e drejtë tani. 882 00:59:24,820 --> 00:59:29,190 Kjo do të thotë se atëherë, megjithatë, edhe pse funksioni ndryshuar vlerën e 'i', 883 00:59:29,190 --> 00:59:32,620 ajo nuk ka ndryshuar jashtë funksionit, 884 00:59:32,620 --> 00:59:35,060 sepse funksioni ka një fushë të veçantë. 885 00:59:35,060 --> 00:59:38,960 Kjo do të thotë se kur ne echo 'i', ajo nuk ka ndryshuar në kuadër të funksionit, 886 00:59:38,960 --> 00:59:43,660 dhe kështu atëherë ne jemi duke shkuar për të shtypur 3 përsëri. 887 00:59:43,660 --> 00:59:47,520 Gjëra të ndryshme rreth qëllimit në PHP se në C. 888 00:59:47,520 --> 00:59:51,130 >> Tani në PHP dhe HTML. 889 00:59:51,130 --> 00:59:53,510 PHP është përdorur për të bërë faqet e internetit dinamike. 890 00:59:53,510 --> 00:59:58,660 Kjo lloj e bën gjëra të ndryshme. 891 00:59:58,660 --> 01:00:02,090 Ne kemi atë të ndryshme nga HTML. 892 01:00:02,090 --> 01:00:05,230 Me HTML, ne gjithmonë vetëm kemi të njëjtën gjë statike, si se si Rob tregoi, 893 01:00:05,230 --> 01:00:09,370 ndërsa PHP, ju mund të ndryshojë gjërat në bazë të kush është përdoruesi. 894 01:00:09,370 --> 01:00:11,830 Pra, nëse unë kam këtë, unë, "Ju jeni regjistruar si -" dhe pastaj emrin, 895 01:00:11,830 --> 01:00:14,420 dhe unë mund të ndryshojë emrin. Deri tani emri është Joseph, 896 01:00:14,420 --> 01:00:18,880 dhe ajo ka "për mua", por pastaj unë mund të ndryshojë emrin që të ketë Tommy. 897 01:00:18,880 --> 01:00:21,700 Dhe kjo do të ishte një gjë tjetër. 898 01:00:21,700 --> 01:00:23,840 Pra, atëherë ne mund të ndryshoni gjëra të ndryshme rreth tij, 899 01:00:23,840 --> 01:00:27,070 dhe ajo do të tregojë përmbajtje të ndryshme në bazë të emrit. 900 01:00:27,070 --> 01:00:31,430 Pra PHP mund të lloj të ndryshojë atë që po ndodh në faqen tuaj te internetit. 901 01:00:31,430 --> 01:00:33,540 Same here. Megjithatë, kini parasysh se ata kanë përmbajtje të ndryshme, 902 01:00:33,540 --> 01:00:38,870 edhe pse ju jeni teknikisht ende qasjes që të njëjtën faqe web në sipërfaqe. 903 01:00:38,870 --> 01:00:43,450 Gjenerimi i HTML. Ka 2 mënyra të ndryshme që ju mund të bëni këtë. 904 01:00:43,450 --> 01:00:48,980 Pra, ne do të kalojnë nëpër këtë të drejtë tani. Mënyra e parë është, ju keni - po, sorry. 905 01:00:48,980 --> 01:00:51,150 Pra, ju vetëm duhet të rregullt tuaj për lak në PHP, 906 01:00:51,150 --> 01:00:56,270 dhe pastaj ju jehonë në PHP dhe ju jehonë jashtë HTML. 907 01:00:56,270 --> 01:00:58,720 Duke përdorur atë që ju tregoi Rob i HTML shkrimit 908 01:00:58,720 --> 01:01:04,030 dhe pastaj duke përdorur të shtypura të PHP për të vetëm të shtypura atë në faqen e internetit. 909 01:01:04,030 --> 01:01:09,520 Mënyrë alternative është që të bëjë atë si në qoftë se ju ndarë nga PHP dhe HTML. 910 01:01:09,520 --> 01:01:11,940 Kështu që ju mund të ketë një linjë të PHP që fillon për lak, 911 01:01:11,940 --> 01:01:16,020 atëherë ju mund të ketë vijën e HTML në një gjë të veçantë, 912 01:01:16,020 --> 01:01:19,700 dhe pastaj në fund loop, përsëri, me një PHP. 913 01:01:19,700 --> 01:01:21,800 Pra, kjo është lloj i ndan atë. 914 01:01:21,800 --> 01:01:24,020 Në anën e majtë, ju mund që ju keni të gjithë - 915 01:01:24,020 --> 01:01:26,360 kjo është vetëm 1 copë e PHP. 916 01:01:26,360 --> 01:01:28,510 Në të djathtë ju mund të shihni se ju keni një linjë të PHP, 917 01:01:28,510 --> 01:01:32,540 ju keni një linjë të HTML, dhe ju keni një linjë të PHP përsëri. 918 01:01:32,540 --> 01:01:36,870 Kështu që ndan atë në atë që ata po bëjnë. 919 01:01:36,870 --> 01:01:39,330 Dhe ju do të vini re se as mënyrë, për secilin prej tyre, 920 01:01:39,330 --> 01:01:41,980 ata ende shtypura imazhin, imazh, image, 921 01:01:41,980 --> 01:01:44,540 në mënyrë që HTML ende është e shtypur në të njëjtën mënyrë. 922 01:01:44,540 --> 01:01:49,870 Dhe pastaj ju do të shohin ende e 3 imazhet shfaqen në faqen tuaj te internetit. 923 01:01:49,870 --> 01:01:52,820 Pra, është 2 mënyra të ndryshme të bërë të njëjtën gjë. 924 01:01:52,820 --> 01:01:55,060 >> Tani ne kemi forma dhe kërkesat. Si Rob ju tregoi, 925 01:01:55,060 --> 01:01:59,400 ka forma të HTML, dhe ne vetëm do të fllad përmes këtë. 926 01:01:59,400 --> 01:02:02,040 Ju keni një veprim dhe ju keni një metodë, dhe veprimi juaj 927 01:02:02,040 --> 01:02:04,350 lloj ju ku do jeni për të dërguar atë tregon, dhe metoda është nëse 928 01:02:04,350 --> 01:02:06,960 ajo do të jetë një GET ose POST një. 929 01:02:06,960 --> 01:02:11,220 Dhe një kërkesë GET, siç tha Rob, do të thotë se ju jeni do të vënë atë në një formë të 930 01:02:11,220 --> 01:02:15,760 dhe ju do të shihni atë si një URL, ndërsa një kërkesë POST ju nuk do të shihni në një URL. 931 01:02:15,760 --> 01:02:17,840 Pra një ndryshim të vogël. 932 01:02:17,840 --> 01:02:19,950 Megjithatë, një gjë që është një gjë e ngjashme 933 01:02:19,950 --> 01:02:22,560 është se POST dhe GET janë po aq të pasigurt. 934 01:02:22,560 --> 01:02:26,430 Kështu që ju mund të mendoni se vetëm për shkak se ju nuk e shihni atë në URL, 935 01:02:26,430 --> 01:02:28,790 që do të thotë POST është më i sigurt, 936 01:02:28,790 --> 01:02:34,420 por ju mund të shihni se në cookie-t në informatat që ju jeni dërguar. 937 01:02:34,420 --> 01:02:38,260 Pra, nuk mendoj se për një ose tjetër. 938 01:02:38,260 --> 01:02:42,160 Një tjetër gjë të theksohet është se edhe ju keni variablave seksion. 939 01:02:42,160 --> 01:02:45,850 Ju djema përdorur këtë në pset 7 për të marrë informacionin tuaj përdorues ID. 940 01:02:45,850 --> 01:02:48,550 Ajo që ndodhi ishte se ju mund të përdorni këtë rrjet asociative, 941 01:02:48,550 --> 01:02:53,310 $ _SESSION, dhe pastaj ju jeni në gjendje për të hyrë në gjëra të ndryshme 942 01:02:53,310 --> 01:02:57,720 dhe dyqan gjëra të ndryshme në të gjithë faqet. 943 01:02:57,720 --> 01:03:00,750 >> Gjë e kaluar është se ne kemi SQL, të strukturuar Query Language, 944 01:03:00,750 --> 01:03:04,360 dhe kjo është një gjuhë programimi për të menaxhuar bazat e të dhënave. 945 01:03:04,360 --> 01:03:08,220 Çfarë, saktësisht, janë bazat e të dhënave? Ata janë koleksionet e tabelave, 946 01:03:08,220 --> 01:03:10,630 dhe çdo tavolinë mund të ketë lloje të ngjashme të objekteve. 947 01:03:10,630 --> 01:03:14,990 Pra, kemi pasur një tabelë të përdoruesve në pset tuaj financave. 948 01:03:14,990 --> 01:03:20,610 Dhe pse janë ata të dobishme? Për shkak se ajo është një mënyrë për ruajtjen e informacionit të përhershme. 949 01:03:20,610 --> 01:03:22,840 Kjo është një mënyrë e gjetjes gjërat dhe menaxhimin e gjëra 950 01:03:22,840 --> 01:03:25,890 dhe në fakt duke parë atë në faqe të ndryshme dhe udhë mbajtjen. 951 01:03:25,890 --> 01:03:29,930 Ndërsa në qoftë se ju vetëm të ruajtur atë në atë një moment të menjëhershëm 952 01:03:29,930 --> 01:03:33,720 dhe pastaj e përdorin atë më vonë, ju nuk do të jetë në gjendje për të hyrë në çdo gjë që ju keni ruajtur. 953 01:03:33,720 --> 01:03:37,660 Ne kemi 4 gjëra të mëdha që ne përdorim për komandat e SQL. 954 01:03:37,660 --> 01:03:40,190 Ne kemi zgjedhur, insert, fshini, dhe update. 955 01:03:40,190 --> 01:03:42,880 Ata janë me të vërtetë e rëndësishme për ju djema të dini për quiz tuaj. 956 01:03:42,880 --> 01:03:45,990 >> Ne do të shkojnë të shpejtë gjatë zgjidhni tani. 957 01:03:45,990 --> 01:03:48,540 Në thelb, ju jeni zgjedhur rreshtave nga një bazë të dhënash. 958 01:03:48,540 --> 01:03:52,400 Pra, nëse ju keni, të drejtë këtu - 959 01:03:52,400 --> 01:03:56,740 ne kemi këto 2 gjëra të ndryshme, dhe ne duam të zgjidhni nga tabela klasa 960 01:03:56,740 --> 01:04:01,480 ku tmerrshëm - ku në kolonën jashtezakonshme vlerë është 1. 961 01:04:01,480 --> 01:04:04,460 Kështu që ju mund të shihni këtu, ne kemi këto 2 gjëra të emrit të klasës, 962 01:04:04,460 --> 01:04:08,490 CS50 dhe Stat110, dhe ne kemi kartat e identitetit të klasës dhe sloganin. 963 01:04:08,490 --> 01:04:13,150 Pra, ne duam të zgjidhni të gjithë këtë informacion. 964 01:04:13,150 --> 01:04:17,480 Pastaj ju mund të shihni të drejtë këtu se kjo është lloj i picking nga kjo kolonë jashtezakonshme, 965 01:04:17,480 --> 01:04:25,170 ku të gjitha gjërat janë 1, dhe atëherë ajo ka të klasit ID, emër të klasës dhe Zëri që ajo mund të marr nga. 966 01:04:25,170 --> 01:04:28,100 Pikërisht si ju bëni këtë në kodin? Ju duhet të përdorni PHP. 967 01:04:28,100 --> 01:04:33,830 Pra, kjo është lloj i si PHP dhe SQL janë të lidhura me njëra-tjetrën. 968 01:04:33,830 --> 01:04:38,130 Tani ne kemi kodin tonë, dhe ne jemi duke shkuar për të përdorur funksionin tonë query 969 01:04:38,130 --> 01:04:41,370 siç bëmë në pset 7, dhe ne jemi duke shkuar për të drejtuar SQL query. 970 01:04:41,370 --> 01:04:43,870 Pastaj ne do të kemi - 971 01:04:43,870 --> 01:04:46,280 ne gjithmonë duhet të kontrolloni nëse rresht së trefishtë të barabartë në qoftë se rreme. 972 01:04:46,280 --> 01:04:49,010 Pra, përsëri, ju doni të kontrolloni llojin dhe vlerën, 973 01:04:49,010 --> 01:04:53,880 dhe pastaj në qoftë se ajo nuk punon, atëherë ju doni të kërkoj falje, si zakonisht, siç bëmë në pset 7. 974 01:04:53,880 --> 01:04:55,870 Përndryshe, ju doni të lak nëpër çdo gjë me ato të dobishëm 975 01:04:55,870 --> 01:04:59,410 foreach sythe që ne sapo kaloi. 976 01:04:59,410 --> 01:05:01,280 Tani që ne jemi looping anë dhe ne kemi bërë atë të fundit, 977 01:05:01,280 --> 01:05:05,080 le të supozojmë se query jonë kaloi, tani ne kemi lak foreach tonë. 978 01:05:05,080 --> 01:05:11,050 Në radhën e parë ajo ka, kështu që këtu është në radhën, të drejtë këtu, është e boxed. 979 01:05:11,050 --> 01:05:14,010 Ajo do të shtypura nga të gjitha informatat që Është për të marrë. 980 01:05:14,010 --> 01:05:18,070 Pra, ajo do të shtypura nga në fund "Wanna Mëso HTML?" 981 01:05:18,070 --> 01:05:23,370 Atëherë ajo do të shkojë në rreshtin tjetër, sepse është e përfunduar e parë për lak, 982 01:05:23,370 --> 01:05:26,510 dhe kështu atëherë ajo do të shtypura nga rreshtin e dytë të saj, 983 01:05:26,510 --> 01:05:32,120 e cila do të jetë STAT110, Gjej të gjitha momentet. 984 01:05:32,120 --> 01:05:34,290 >> Një gjë e fundit është në SQL dobësi. 985 01:05:34,290 --> 01:05:37,300 Unë e di se David preku kjo pak në leksion. 986 01:05:37,300 --> 01:05:40,730 Ju mund të lexoni këtë më vonë. Është me të vërtetë qesharake. 987 01:05:40,730 --> 01:05:45,320 SQL Injection eshte nje lloj gjë ndërlikuar. 988 01:05:45,320 --> 01:05:49,890 Le të thonë se ju vetëm rrinë ato variabla të drejtë në pyetjen tuaj, 989 01:05:49,890 --> 01:05:52,290 si ju mund të shihni në atë linjë të parë. 990 01:05:52,290 --> 01:05:54,520 Pra, duket e mirë, e drejtë? Ju jeni vetëm duke vënë në emrin e përdoruesit 991 01:05:54,520 --> 01:05:58,820 dhe fjalëkalimin tek query juaj SQL, dhe ju doni të anijes atë dhe për të marrë çdo gjë që është në tryezën tuaj të të dhënave. 992 01:05:58,820 --> 01:06:01,450 Kjo duket shumë e thjeshtë. Kështu që lejon të thonë se dikush vë në, 993 01:06:01,450 --> 01:06:04,910 për fjalëkalim, ky tekst OSE drejtë këtu - 994 01:06:04,910 --> 01:06:06,780 në të vërtetë duhet të jetë në kutinë e kuqe. 995 01:06:06,780 --> 01:06:11,920 Pra, le të thonë se ata vënë se fjalëkalimin në - kjo është ajo që ata hyjnë. 996 01:06:11,920 --> 01:06:16,520 Pra, ata janë vënë OSE "1" = 1. 997 01:06:16,520 --> 01:06:20,880 Lloj i një fjalëkalim pa kuptim që të ketë. 998 01:06:20,880 --> 01:06:25,070 Tani le të vetëm të zëvendësojë atë në, dhe ju do të vini re se në këtë query SQL tani, 999 01:06:25,070 --> 01:06:29,090 ajo vlerëson që gjithmonë e vërtetë, sepse ju do të vini re se 1000 01:06:29,090 --> 01:06:32,240 ju mund të zgjidhni SQL query të gjithë këtë informacion 1001 01:06:32,240 --> 01:06:35,420 ose ju mund të ketë vetëm 1 = 1. 1002 01:06:35,420 --> 01:06:41,030 Kështu që është gjithmonë do të vlerësojë të vërtetë. 1003 01:06:41,030 --> 01:06:46,610 Kjo nuk do të vërtetë punojnë, sepse kjo do të thotë se hacker mund të thyer në sistemin tuaj. 1004 01:06:46,610 --> 01:06:49,300 Zgjidhja për këtë është se ju duhet të përdorni sistemin PDO, 1005 01:06:49,300 --> 01:06:51,360 që do të thotë se ju duhet të përdorni pikëpyetje, 1006 01:06:51,360 --> 01:06:53,350 e cila është ajo që ju djema të përdorura në pset 7, 1007 01:06:53,350 --> 01:06:57,620 ku ju jeni do të përdorin një pikëpyetje në vend të ku ju doni të vendosni diçka, 1008 01:06:57,620 --> 01:07:01,430 dhe pastaj ju jeni do të ketë një presje, dhe pastaj ju do të keni më pas, 1009 01:07:01,430 --> 01:07:07,610 pas vargut tuaj, variablat të ndryshme që ju dëshironi për të zëvendësuar në shenjën tuaj pyetje. 1010 01:07:07,610 --> 01:07:10,330 Pra, ju do të vini re këtu se tani unë kanë këto shenja të kuqe pyetje. 1011 01:07:10,330 --> 01:07:15,420 Pastaj kam vënë variablat pas vargjet e mia kështu që unë e di për të zëvendësuar ato në atë mënyrë që më pas. 1012 01:07:15,420 --> 01:07:18,470 Kjo do të sigurt se nëse dikush e bën atë si kjo, 1013 01:07:18,470 --> 01:07:24,050 dhe ata kanë ose 1 = 1 situatës, që do të sigurt, 1014 01:07:24,050 --> 01:07:30,490 në fund kthehet, të sigurt se ajo nuk do të të vërtetë të thyejnë SQL query. 1015 01:07:30,490 --> 01:07:33,660 Mirë, kështu që kjo është shumë e shumë ajo, furtuna e PHP dhe SQL. 1016 01:07:33,660 --> 01:07:41,520 Best of luck për të gjithë ju, dhe tani për të Ore 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] të gjithë të Mirë. Koha për të shkuar mbi disa JavaScript 1018 01:07:44,270 --> 01:07:48,840 dhe disa gjëra të tjera shumë shpejt kështu që ne nuk e mbajnë ju deri sonte. 1019 01:07:48,840 --> 01:07:56,930 JavaScript. Po. JavaScript është lloj i një gjë e ftohtë, qëllimisht. 1020 01:07:56,930 --> 01:07:59,090 Gjërat që ju me të vërtetë duhet të dini për JavaScript, kjo është lloj si 1021 01:07:59,090 --> 01:08:03,810 fundi klient-side për atë app tuaj web është e do të jetë bërë. 1022 01:08:03,810 --> 01:08:08,280 Ka disa gjëra që ju thjesht nuk duan të kujdeset për të gjithë kohën në anën e serverit. 1023 01:08:08,280 --> 01:08:12,880 Të gjitha ndërveprime të vogla, duke theksuar një gjë, duke e bërë diçka të zhduket. 1024 01:08:12,880 --> 01:08:15,340 Ju me të vërtetë nuk duan të duhet të bisedoni me serverin tuaj të gjithë kohën për këtë. 1025 01:08:15,340 --> 01:08:18,069 Dhe disa nga të cilat nuk është edhe më e mundur për të bërë në anën server. 1026 01:08:18,069 --> 01:08:21,899 Kjo është arsyeja pse ne kemi nevojë për diçka si JavaScript. 1027 01:08:21,899 --> 01:08:24,359 Gjëra të ftohtë për JavaScript: Ajo është e shtypur në mënyrë dinamike. 1028 01:08:24,359 --> 01:08:27,149 Kjo do të thotë se programi juaj nuk ka nevojë të dini 1029 01:08:27,149 --> 01:08:30,970 çka, saktësisht, variablat janë kur ju shkruani atë. 1030 01:08:30,970 --> 01:08:34,510 Ajo do vetëm lloj i kuptoj atë si ajo e running. 1031 01:08:34,510 --> 01:08:37,520 Gjëra të tjera që janë të ftohtë në lidhje me të: Kjo është një gjuhë e kaçurrel mbajtëse, 1032 01:08:37,520 --> 01:08:41,359 që do të thotë Sintaksa është e ngjashme me C dhe PHP. 1033 01:08:41,359 --> 01:08:47,050 Ju nuk keni për të bërë shumë Rework kur ju jeni mësuar JavaScript. 1034 01:08:47,050 --> 01:08:49,180 Këtu kemi pak JavaScript. 1035 01:08:49,180 --> 01:08:52,560 Gjë interesante këtu është se, në qoftë se ju shikoni në atë, 1036 01:08:52,560 --> 01:08:56,330 ne kemi një grimë JavaScript drejtë ka në tag kokë. 1037 01:08:56,330 --> 01:08:59,479 Çfarë është nuk është në thelb vetëm të përfshijë një skedar JavaScript. 1038 01:08:59,479 --> 01:09:02,260 Kjo është një mënyrë ju mund të përfshijnë JavaScript në programin tuaj. 1039 01:09:02,260 --> 01:09:06,910 Pastaj e dyta pak në fakt është një inline JavaScript, 1040 01:09:06,910 --> 01:09:10,790 shumë e ngjashme me një stil inline me CSS, 1041 01:09:10,790 --> 01:09:16,180 dhe ju jeni vetëm duke shkruar një kod shumë shpejt atje. 1042 01:09:16,180 --> 01:09:18,120 JavaScript është vargjeve. 1043 01:09:18,120 --> 01:09:20,850 Vetëm një tjetër mënyrë për të mbajtur të dhënat e rreth, shumë të dobishme. 1044 01:09:20,850 --> 01:09:25,180 Shumë e bukur dhe e lehtë sintaksë. 1045 01:09:25,180 --> 01:09:29,870 Ju përdorni kllapa katrore për të hyrë në çdo gjë dhe të mbajë çdo gjë së bashku. 1046 01:09:29,870 --> 01:09:35,020 Asgjë shumë komplekse. 1047 01:09:35,020 --> 01:09:38,630 Cool gjë në lidhje me JavaScript dhe gjuhë e shkruar në përgjithësi 1048 01:09:38,630 --> 01:09:40,920 është se ju nuk duhet të shqetësohen për madhësive array. 1049 01:09:40,920 --> 01:09:43,880 Ju mund të përdorni vetëm array.length dhe të mbajnë gjurmët e saj, 1050 01:09:43,880 --> 01:09:46,960 dhe gjithashtu array mund të rritet apo të tkurret si keni nevojë për të. 1051 01:09:46,960 --> 01:09:49,279 Pra, ju as nuk duhet të shqetësohen për çdo lloj, 1052 01:09:49,279 --> 01:09:57,050 oh jo, unë duhet të ndajë më shumë gjëra, ose diçka të tillë. 1053 01:09:57,050 --> 01:10:00,090 >> Cool gjë është se këtu ka diçka të quajtur JavaScript objekte. 1054 01:10:00,090 --> 01:10:04,800 Kjo është një gjuhë object-oriented, kështu që atë që ka është, në thelb, 1055 01:10:04,800 --> 01:10:10,100 një mënyrë për ju për të dhënat e grupit së bashku, disi të ngjashme me një struct, 1056 01:10:10,100 --> 01:10:17,280 por ju mund të përdorni atë si një struct ose në një sintaksë asociative array. 1057 01:10:17,280 --> 01:10:22,520 Është shumë e thjeshtë dhe çfarë mund të bëni me këtë është të dhënave grup së bashku 1058 01:10:22,520 --> 01:10:24,810 në qoftë se ju keni një bandë e të dhënave që është lidhur. 1059 01:10:24,810 --> 01:10:26,850 Sepse është e gjitha gjëra që ju duhet për të përshkruar një makinë, 1060 01:10:26,850 --> 01:10:29,050 ju nuk keni nevojë që të ketë atë në një bandë e vende të ndryshme. 1061 01:10:29,050 --> 01:10:35,300 Ju vetëm mund të rrinë atë në 1 objekt në JavaScript. 1062 01:10:35,300 --> 01:10:39,090 Si ju ndoshta e dini, iterating është një nga ato detyra të lodhshme. 1063 01:10:39,090 --> 01:10:43,810 Ju vetëm të bëjë atë mbi një pushim. Ju duhet të bisedoni me çdo objekt në makinë, 1064 01:10:43,810 --> 01:10:47,340 ose ju duhet të shkoni nëpër çdo send në një listë ose diçka të tillë. 1065 01:10:47,340 --> 01:10:51,770 Pra JavaScript ka, të ngjashme me PHP, një sintaksë foreach. 1066 01:10:51,770 --> 01:10:54,590 Në këtë rast, kjo është një për në lak. 1067 01:10:54,590 --> 01:10:57,300 Ju dëshironi të përdorni këtë vetëm në objekte. 1068 01:10:57,300 --> 01:11:01,030 Ka disa probleme që ndodhin në qoftë se ju përdorni këtë në vargjeve. 1069 01:11:01,030 --> 01:11:03,750 Kjo në përgjithësi është një nga ato gjëra, pse, se është shumë i dobishëm, 1070 01:11:03,750 --> 01:11:06,590 për shkak se ju të eleminuar një shumë të sipërm 1071 01:11:06,590 --> 01:11:10,270 sepse ju nuk keni për të tërhequr çdo gjë në objektin tuaj me veten. 1072 01:11:10,270 --> 01:11:12,300 Ju nuk duhet të mbani mend të gjithë emrat kryesorë. 1073 01:11:12,300 --> 01:11:18,270 Ju vetëm lloj të marrë ato përsëri në këtë sintaksë. 1074 01:11:18,270 --> 01:11:21,500 Në këtë, me për të, ju vetëm dëshironi të mbani mend 1075 01:11:21,500 --> 01:11:27,180 që ju jeni marrë përsëri të gjitha çelësat, në një mënyrë shumë të ngjashme me Hash tryezë. 1076 01:11:27,180 --> 01:11:30,880 Në qoftë se ju mbani mend nga ajo, kur ju do të vihet në një varg që ju mund të merrni diçka nga 1077 01:11:30,880 --> 01:11:33,840 se do të ketë një vlerë të lidhur me të. 1078 01:11:33,840 --> 01:11:36,360 Çfarë ju mund të bëni me këtë është që ju mund të them, të gjithë të drejtë, 1079 01:11:36,360 --> 01:11:42,120 I vënë në një makinë, dhe unë e quajti atë një Ferrari. 1080 01:11:42,120 --> 01:11:45,290 Kështu që ju mund të vënë në varg Ferrari përsëri më vonë, dhe ju mund të merrni atë jashtë. 1081 01:11:45,290 --> 01:11:50,000 Dhe ju mund ta bëni këtë në një lak, me sepse në lak. 1082 01:11:50,000 --> 01:11:53,320 Pra, vetëm më shumë rreth objekteve. Gjëja kryesore nga kjo që ju duhet të mbani mend 1083 01:11:53,320 --> 01:12:00,340 është se ju mund të përdorni e strukturës objekt si sintaksë sa herë që ju doni me këto, 1084 01:12:00,340 --> 01:12:04,590 përveç nëse ajo që tuaj do të përdorin si një varg nuk është një emër i vlefshëm ndryshueshme. 1085 01:12:04,590 --> 01:12:07,650 Pra, nëse ju shikoni në se ka, ne e kemi çelësin me hapësira. 1086 01:12:07,650 --> 01:12:12,500 E pra, në qoftë se keni qenë për të vënë object.key, hapësirë, me, hapësirë, hapësira, 1087 01:12:12,500 --> 01:12:15,320 që vetëm nuk do të kishte kuptim syntactically. 1088 01:12:15,320 --> 01:12:22,730 Kështu që ju vetëm mund të bëni që me këtë lloj kllapa sintaksës. 1089 01:12:22,730 --> 01:12:26,520 >> Gjithashtu, JavaScript është shumë Shtrirja-i mençur për PHP. 1090 01:12:26,520 --> 01:12:29,050 Ju keni 2 mënyrat e trajtimit fushës. 1091 01:12:29,050 --> 01:12:31,960 Ju nuk mund të ketë var para një ndryshore, 1092 01:12:31,960 --> 01:12:34,060 dhe se vetëm do të thotë kjo është globale. 1093 01:12:34,060 --> 01:12:37,050 Ju mund të shihni atë nga kudo. Edhe në qoftë se ju do të vënë këtë në një nëse deklaratë, 1094 01:12:37,050 --> 01:12:42,430 kudo tjetër në kodin tuaj pas atë pikë ju mund të shihni se ndryshore. 1095 01:12:42,430 --> 01:12:46,730 Një tjetër gjë, megjithatë, është me var, është e kufizuar në çdo gjë funksion ju jeni futur me emrin 1096 01:12:46,730 --> 01:12:48,870 Nëse ju nuk jeni në një funksion, mirë, kjo është globale. 1097 01:12:48,870 --> 01:12:53,900 Por nëse ju jeni në një funksion që është në dukje vetëm në atë funksion. 1098 01:12:53,900 --> 01:12:56,420 Unë nuk kam një shembull, por, po. Kjo është një nga ato gjëra ku 1099 01:12:56,420 --> 01:12:59,900 ju mund të menaxhoni atë që variablat që ju doni të jetë globale, 1100 01:12:59,900 --> 01:13:03,810 ajo që variablat që ju duan të jenë vendas, por ju nuk duhet të jenë të kujdesshëm në lidhje me këtë, 1101 01:13:03,810 --> 01:13:06,890 sepse ju nuk keni llojin e kontrollit të hollë të grurit që ju bëni në C, 1102 01:13:06,890 --> 01:13:15,820 ku nëse diçka është deklaruar në një për lak, ajo do të qëndrojë në atë për lak. 1103 01:13:15,820 --> 01:13:18,790 Gjë që ne në të vërtetë e kujdesit për përdorimin e JavaScript për po manipulon faqet e internetit, e drejtë? 1104 01:13:18,790 --> 01:13:21,800 Unë do të thotë, kjo është arsyeja pse ne jemi duke e bërë këtë. 1105 01:13:21,800 --> 01:13:23,840 >> Për ta bërë këtë, ne përdorim diçka të quajtur DOM. 1106 01:13:23,840 --> 01:13:25,850 Object Model Document. 1107 01:13:25,850 --> 01:13:29,430 Në thelb, ajo që bën është ajo merr të gjitha HTML tuaj 1108 01:13:29,430 --> 01:13:34,110 dhe modele atë në një bandë e objekteve që janë mbivendosur në njëri-tjetrin. 1109 01:13:34,110 --> 01:13:37,080 Ju filloni me diçka si kjo. 1110 01:13:37,080 --> 01:13:44,770 Ju keni, në të djathtë për mua, një bandë e kodit atje që është lloj i - 1111 01:13:44,770 --> 01:13:46,640 Ju do të mendojnë se do të jetë shumë e vështirë për të manipuluar, 1112 01:13:46,640 --> 01:13:48,700 sepse ju do të parsing përmes një bandë e tekstit 1113 01:13:48,700 --> 01:13:52,080 dhe që ka për të kuptuar gjërat larg. Dhe çka nëse ajo nuk është formatuar si duhet? 1114 01:13:52,080 --> 01:13:54,880 Gjëra të këqija do të ndodhë. 1115 01:13:54,880 --> 01:13:58,140 Pra JavaScript kujdeset për këtë për ju, dhe që ju të merrni një strukturë e të dhënave të bukur, 1116 01:13:58,140 --> 01:14:01,390 si ajo në të majtë e mia, ku ju vetëm duhet një dokument, 1117 01:14:01,390 --> 01:14:03,530 dhe brenda se ju keni diçka të quajtur HTML, 1118 01:14:03,530 --> 01:14:05,600 dhe brenda se ju keni një kokë dhe një trup, 1119 01:14:05,600 --> 01:14:08,420 dhe brenda këtij kreu ju keni një titull, e të tjera, e të tjera, e të tjera. 1120 01:14:08,420 --> 01:14:11,810 Kjo thjeshton manipulimin e një faqe web në mënyrë që ajo është vetëm, 1121 01:14:11,810 --> 01:14:14,190 oh, unë vetëm dua të flas për këtë objekt. 1122 01:14:14,190 --> 01:14:21,340 Lloj i një mënyrë shumë të ngjashme që do të flisni me një tjetër objekt që keni bërë vetë. 1123 01:14:21,340 --> 01:14:25,980 Ashtu si thashë, të gjithë DOM është në objekt dokument. 1124 01:14:25,980 --> 01:14:29,290 Ose kjo është vetëm një vend dhe pastaj ju mund të shkoni brenda saj për të gjetur gjëra, 1125 01:14:29,290 --> 01:14:33,880 dhe ju mund ta bëjë këtë - kjo është stil i vjetër për të bërë atë, deri atje, 1126 01:14:33,880 --> 01:14:38,130 ku ju bëni document.getElementById, dhe pastaj emrin, 1127 01:14:38,130 --> 01:14:42,420 dhe si ju ndoshta mund të them, kjo merr shumë të ngathët pas një kohë. 1128 01:14:42,420 --> 01:14:44,480 Pra, ju ndoshta nuk dëshironi të bëni këtë. Kjo është arsyeja pse ne kemi 1129 01:14:44,480 --> 01:14:48,760 gjë tjetër që ne do të flasim për këtë pas. 1130 01:14:48,760 --> 01:14:52,510 Gjëja kryesore këtu është që, të gjithë të drejtë, ju keni të gjitha këto elemente, e drejtë? 1131 01:14:52,510 --> 01:14:56,400 Pra, ndoshta unë mund të ndryshojë ngjyra e diçka kur loja është loading faqe. 1132 01:14:56,400 --> 01:14:58,380 Pra, çfarë? Çfarë ndodh nëse përdoruesi klikon im diçka? 1133 01:14:58,380 --> 01:15:00,540 Unë dua që ajo të bëjë diçka interesante kur ata klikoni diçka. 1134 01:15:00,540 --> 01:15:02,600 Kjo është arsyeja pse ne kemi ngjarje. 1135 01:15:02,600 --> 01:15:05,330 Ju mund të, në thelb, të gjetur ndonjë element në DOM tuaj, 1136 01:15:05,330 --> 01:15:08,560 dhe pastaj të thotë, hej. Kur kjo ngarkon apo dikush klikimeve atë, 1137 01:15:08,560 --> 01:15:11,410 ose kur ata miut mbi të, të bëjë diçka me të. 1138 01:15:11,410 --> 01:15:15,330 Dhe atë që ju keni është, ju kanë funksione që të trajtojë këtë për ju. 1139 01:15:15,330 --> 01:15:17,980 Këto funksione janë të handlers ngjarje. 1140 01:15:17,980 --> 01:15:20,440 Çfarë they're - kjo është vetëm një mënyrë e sofistikuar për të thënë, 1141 01:15:20,440 --> 01:15:23,500 ky funksion është ekzekutuar vetëm kur kjo ngjarje ndodh. 1142 01:15:23,500 --> 01:15:28,070 Pra, merret me ngjarje që ndodh. 1143 01:15:28,070 --> 01:15:30,810 Kjo është se si ju do të nxjerr një mbajtës ngjarje. 1144 01:15:30,810 --> 01:15:34,750 Unë kam disa butonin, dhe kur ju klikoni atë, ajo shpërthen. 1145 01:15:34,750 --> 01:15:40,560 Pra, nuk do të klikoni butonin. 1146 01:15:40,560 --> 01:15:42,910 Kjo është një mënyrë për të afruar atë, e drejtë? 1147 01:15:42,910 --> 01:15:46,430 Ju keni një tag butonin, dhe të klikoni ju keni një varg që thotë, 1148 01:15:46,430 --> 01:15:50,460 oh, nga rruga, e bëra këtë shpërthyese për mua. 1149 01:15:50,460 --> 01:15:53,990 Përndryshe, kjo është vetëm si një buton i rregullt ju bërë vetëm. 1150 01:15:53,990 --> 01:15:56,550 Ju gjithashtu mund të bëjë këtë një mënyrë tjetër, 1151 01:15:56,550 --> 01:16:02,770 duke grabbing elementin DOM, por ne do të ruaj se pasi ne flasim për jQuery. 1152 01:16:02,770 --> 01:16:07,580 >> JQuery: Kjo është një bibliotekë që është ndër-shfletues. 1153 01:16:07,580 --> 01:16:09,580 Ju mund ta përdorni atë në shumë e shumë çdo gjë. 1154 01:16:09,580 --> 01:16:12,090 Dhe vetëm ajo ju jep një shumë e mjeteve për të punuar me të. 1155 01:16:12,090 --> 01:16:15,850 Sepse JavaScript, ndërsa të fuqishme, nuk i kanë të gjitha mjetet që ju duhet 1156 01:16:15,850 --> 01:16:20,550 nga kutia për të vërtetë të trajtuar një app web ju mund të dëshironi të bëni. 1157 01:16:20,550 --> 01:16:24,650 Kështu që thjeshton shumë gjëra, ju jep një shumë të funksioneve 1158 01:16:24,650 --> 01:16:28,760 nga kutia që normalisht do të duhet për të shkruar vetë, mbi dhe pa pushim. 1159 01:16:28,760 --> 01:16:31,600 Dhe vetëm i bën gjërat shumë e thjeshtë. 1160 01:16:31,600 --> 01:16:35,780 Ju gjithashtu keni selectors, të cilat ju lejojnë të marrë të gjitha ato elemente 1161 01:16:35,780 --> 01:16:42,800 nga DOM tuaj shumë më thjesht, në vend që të përdorin këto thirrje shumë të gjatë funksion. 1162 01:16:42,800 --> 01:16:46,630 Më shumë në këto selectors. Ju keni, deri atje ju keni, le të themi 1163 01:16:46,630 --> 01:16:49,800 Unë dua të të marrë një element me ID "shkëmb." 1164 01:16:49,800 --> 01:16:56,450 E pra, në jQuery, kjo është vetëm $ dhe pastaj një varg që ka një kile, dhe pastaj "shkëmb." 1165 01:16:56,450 --> 01:17:01,960 Është shumë e thjeshtë dhe shumë më të shpejtë se sa mënyrën tradicionale JavaScript e trajtimin e këtij problemi. 1166 01:17:01,960 --> 01:17:06,120 Dhe ju keni gjëra të ngjashme për klasat dhe llojet element. 1167 01:17:06,120 --> 01:17:08,140 jQuery është - një nga veçoritë e ftohtë është që ju mund të lloj të compress 1168 01:17:08,140 --> 01:17:14,350 poshtë pyetjet tuaja në DOM tuaj shumë, shumë shpejt. 1169 01:17:14,350 --> 01:17:18,980 Tani ne jemi kthyer në trajtimin ngjarje, dhe kjo është se si ju do të trajtojë një ngjarje në jQuery. 1170 01:17:18,980 --> 01:17:23,090 Pra, ajo që ne jemi duke shkuar këtu është që ne jemi duke thënë, të gjithë të drejtë. Unë kam një tag script, apo jo? 1171 01:17:23,090 --> 01:17:25,400 Kështu që unë kam këtë inline JavaScript. 1172 01:17:25,400 --> 01:17:27,750 Ajo që ne jemi duke shkuar për të bërë është që ne jemi duke shkuar për të thënë, të gjithë të drejtë. 1173 01:17:27,750 --> 01:17:30,860 Kur dokumenti është i gatshëm, që do të thotë dokumenti i është ngarkuar, 1174 01:17:30,860 --> 01:17:34,660 ne do të shkojnë në për atë funksion, dhe ne jemi duke shkuar për të thënë, të gjithë të drejtë, 1175 01:17:34,660 --> 01:17:37,060 ky funksion është në të vërtetë duke bërë diçka tjetër. 1176 01:17:37,060 --> 01:17:42,320 Është në thelb duke thënë, të gjithë të drejtë, të merrni më elementin me ID "myid." 1177 01:17:42,320 --> 01:17:47,960 Dhe atëherë të japë këtë një mbajtës funksion që ekzekuton kur ju klikoni atë. 1178 01:17:47,960 --> 01:17:49,820 Në thelb ajo që kjo nuk është, ai thotë, të gjithë të drejtë. 1179 01:17:49,820 --> 01:17:52,630 Faqe është ngarkuar, kështu që unë jam duke shkuar për të, të gjetur këtë element, 1180 01:17:52,630 --> 01:17:56,420 t'i jepte këtë mbajtës ngjarje, dhe kjo në thelb krijon faqen tuaj për ju. 1181 01:17:56,420 --> 01:18:00,520 Dhe kjo është se si ju doni të mendoni për trajtimin ngjarje. 1182 01:18:00,520 --> 01:18:06,310 Ju thjesht doni të mendoni për, të gjithë të drejtë, kur diçka ndodh, çfarë unë dua të ndodhë? 1183 01:18:06,310 --> 01:18:10,520 Ju nuk doni të mendoni për, në rregull, kam nevojë për t'u siguruar që bisedimet këtë gjë për këtë gjë, 1184 01:18:10,520 --> 01:18:14,660 këtë gjë e blah blah blah, sepse ju vetëm doni të flisni gjë në aspektin e ngjarjeve. 1185 01:18:14,660 --> 01:18:17,650 Kur kjo ndodh, kjo ndodh. Kur kjo ndodh, kjo ndodh. 1186 01:18:17,650 --> 01:18:20,240 Dhe në qoftë se gjëra të shkaktojnë gjëra të tjera, që e madhe. 1187 01:18:20,240 --> 01:18:22,150 Por ju nuk doni të përpiqet dhe të bëjë kodin e komplikuar 1188 01:18:22,150 --> 01:18:24,130 ku ju jeni duke shkaktuar gjëra të shumta në të njëjtën kohë, 1189 01:18:24,130 --> 01:18:28,860 sepse ju jeni vetëm do të japë vetes një dhimbje koke. 1190 01:18:28,860 --> 01:18:32,340 >> Rregull. Tani ne mund të merrni faqen tonë për të trajtuar ngjarjet, 1191 01:18:32,340 --> 01:18:35,640 por le të themi përdorues ime klikimeve një buton. 1192 01:18:35,640 --> 01:18:38,040 Çka nëse unë dua të dërgoj atë prapa kërkesë në server, 1193 01:18:38,040 --> 01:18:41,100 por unë nuk dua të rifreskoni faqen, sepse që ka për të rifreskoni një faqe të re 1194 01:18:41,100 --> 01:18:44,390 çdo herë të vetme merr lloj i lodhshëm, dhe pse nuk kam nevojë 1195 01:18:44,390 --> 01:18:47,430 për të tërhequr poshtë header përsëri, dhe përsëri futboll, 1196 01:18:47,430 --> 01:18:49,670 dhe të gjitha elementet e faqes përsëri 1197 01:18:49,670 --> 01:18:53,180 vetëm për të rifreskuar përshëndetje apo kohë? 1198 01:18:53,180 --> 01:18:55,290 Pra, kjo është arsyeja pse ne kemi diçka si Ajax. 1199 01:18:55,290 --> 01:18:59,150 Ajo që ne mund të bëjmë këtu me Ajax është që ne mund të themi, të gjithë të drejtë, 1200 01:18:59,150 --> 01:19:01,290 Unë dua të dërgoj disa të dhëna në server, 1201 01:19:01,290 --> 01:19:04,010 dhe unë dua të të marrë një përgjigje mbrapa kështu që unë mund update faqen time, 1202 01:19:04,010 --> 01:19:12,120 apo ndoshta vetëm të bëjë disa llogaritje algorithmic se nuk do të tregojë asgjë për të përdoruesit. 1203 01:19:12,120 --> 01:19:15,500 Çfarë ju duhet të bëni këtë? E pra, ju keni nevojë për një URL që ju duhet për të folur për të. 1204 01:19:15,500 --> 01:19:18,650 Serveri juaj nuk mund vetëm të magjike të dëgjojnë nga askund. 1205 01:19:18,650 --> 01:19:21,960 Ju duhet të ketë një vend të veçantë që ju jeni dërguar këto të dhëna për të. 1206 01:19:21,960 --> 01:19:26,240 Dhe ju gjithashtu duhet disa të dhëna për të dërguar, apo ndoshta kjo është një pyetje dataless. 1207 01:19:26,240 --> 01:19:31,380 Ju thjesht doni të ping përsëri në server dhe të thotë, hej, unë jam gjallë, ose diçka të tillë. 1208 01:19:31,380 --> 01:19:35,150 Dhe pastaj ju doni një funksion që në thelb merret me sukses. 1209 01:19:35,150 --> 01:19:38,250 Le të thonë se të kthehet disa informacione nga serveri juaj, 1210 01:19:38,250 --> 01:19:42,960 dhe ju doni për të ndryshuar titullin e përdoruesit në faqen e tyre. 1211 01:19:42,960 --> 01:19:44,930 Pra, ju do të merrni informacionin e mbrapa, 1212 01:19:44,930 --> 01:19:48,860 dhe ju do të shtyjë që në ekran. 1213 01:19:48,860 --> 01:19:51,170 Çfarë ndodh është, kur faqja është gati, 1214 01:19:51,170 --> 01:19:56,500 ju e krijoni një klikim në funksion për këtë buton të quajtur greeter. 1215 01:19:56,500 --> 01:19:58,810 Çfarë kjo atëherë nuk është, kur se butonin është shtyrë, 1216 01:19:58,810 --> 01:20:03,700 ju flisni me greetings.php, ju bëni një kërkesë POST, 1217 01:20:03,700 --> 01:20:07,290 dhe ju thoni, hej, merrni mua diçka nga faqja e juaj. 1218 01:20:07,290 --> 01:20:09,890 Ne nuk duhet të vërtetë për të përshkruar atë, por greetings.php, 1219 01:20:09,890 --> 01:20:12,480 le të them vetëm, i kthen "hello botë." 1220 01:20:12,480 --> 01:20:15,650 Pra, ne të kthehemi këtë "Hello World", dhe në suksesin e këtij, 1221 01:20:15,650 --> 01:20:20,730 duke supozuar asgjë nuk shkon keq, atëherë ne thjesht shkoni në këtë vend të synuar 1222 01:20:20,730 --> 01:20:25,720 që ne të specifikuara dhe ne vetëm rrinë përgjigje në atje. 1223 01:20:25,720 --> 01:20:31,560 Dhe kjo është një mënyrë shumë e thjeshtë për ngritjen e një pyetje Ajax. 1224 01:20:31,560 --> 01:20:34,340 >> Shumë shpejt, Rob lloj i përmendur këtë tashmë, 1225 01:20:34,340 --> 01:20:37,170 gjërat mund të shkojnë keq, gjëra të këqija mund të ndodhë, 1226 01:20:37,170 --> 01:20:42,660 kështu që ju doni të njoh veten me këto kode HTTP përgjigje. 1227 01:20:42,660 --> 01:20:46,030 Cilat janë këto janë vetëm, si, 200, çdo gjë shkoi në rregull. 1228 01:20:46,030 --> 01:20:48,670 Diçka tjetër, gjëra të këqija ndodhur. 1229 01:20:48,670 --> 01:20:50,790 Kjo është përgjithësisht gjë që ju doni të mbani mend. 1230 01:20:50,790 --> 01:20:53,440 Por është mirë të dish të gjitha këto. 1231 01:20:53,440 --> 01:20:55,970 Dhe së fundi, pasi ne kemi kaluar nëpër të gjithë se, 1232 01:20:55,970 --> 01:20:58,680 ne duhet të flasim shumë shpejt për projektimin, 1233 01:20:58,680 --> 01:21:00,620 dhe pastaj ne mund të ju lejojnë të gjithë largohen. 1234 01:21:00,620 --> 01:21:03,410 Dizajn. Gjërat që ju doni të mbani mend. 1235 01:21:03,410 --> 01:21:06,950 Pyetni veten këto pyetje: Kush do të jetë duke përdorur këtë? 1236 01:21:06,950 --> 01:21:09,580 Çfarë do të jenë duke e përdorur atë për të? Çfarë my users intereson? 1237 01:21:09,580 --> 01:21:11,750 Çfarë nuk të intereson? 1238 01:21:11,750 --> 01:21:14,500 Ju thjesht nuk duan të bëjnë një app dhe le të vetëm të rritet 1239 01:21:14,500 --> 01:21:18,270 dhe të bëhet ky gjigant, që ha gjë që ju nuk mund edhe të përfundojë. 1240 01:21:18,270 --> 01:21:23,900 Ju dëshironi që të kenë qëllime të posaçme dhe plane dhe gjërat që ju doni të adresuar. 1241 01:21:23,900 --> 01:21:29,000 Bëni të lehtë. E gjithë kjo thotë, në thelb, 1242 01:21:29,000 --> 01:21:34,950 e bëjnë të lehtë për përdoruesit për të përdorur atë, nuk e bëjnë atë një pikë gjigandi i tekstit si kjo rrëshqitje është, në të vërtetë. 1243 01:21:34,950 --> 01:21:38,020 Ju thjesht duan që ajo të jetë diçka ku është shumë e lehtë për dikë që të shkojnë në 1244 01:21:38,020 --> 01:21:40,800 dhe të bëjnë atë që ata duan të bëjnë. 1245 01:21:40,800 --> 01:21:42,920 Ju nuk doni që ata të kenë për të lundruar 5 faqe 1246 01:21:42,920 --> 01:21:45,460 për të marrë në funksion juaj kryesor e faqes tuaj. 1247 01:21:45,460 --> 01:21:49,290 Në qoftë se Google kishte 5 faqe para se të mund edhe të kërkoni diçka, 1248 01:21:49,290 --> 01:21:53,080 askush nuk do të përdorin atë. 1249 01:21:53,080 --> 01:21:55,890 Dhe së fundi, prototip letër, grup fokusi. 1250 01:21:55,890 --> 01:21:59,220 Kanë dizajn të mirë dhe praktikat e testimit. 1251 01:21:59,220 --> 01:22:00,730 Vetëm për shkak se ju mendoni se ajo punon për ju, 1252 01:22:00,730 --> 01:22:04,860 nuk do të thotë dikush tjetër mendon ajo punon. 1253 01:22:04,860 --> 01:22:14,490 Por, vërtet, kjo është ajo. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]