1 00:00:00,000 --> 00:00:02,270 >> [Review: Quiz 1] 2 00:00:02,270 --> 00:00:04,620 [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Harvardin yliopisto] 3 00:00:04,620 --> 00:00:07,660 [Tämä on CS50.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [Lucas Freitas] Tervetuloa kaikille. Tämä on arviointisi tietokilpailu 1. 5 00:00:11,610 --> 00:00:15,040 Aivan kuten vastuuvapauslauseke, tämä on - Tarkoitan, aiomme yrittää kattaa 6 00:00:15,040 --> 00:00:17,770 niin paljon kuin mahdollista, mutta se ei tarkoita, että 7 00:00:17,770 --> 00:00:20,780 aiomme kattaa kaikki asioita, jotka voivat olla tietokilpailuun 1. 8 00:00:20,780 --> 00:00:25,270 Joten varmista, että olet myös katsomaan luento, osastot, kaiken, mitä voi. 9 00:00:25,270 --> 00:00:28,240 Quiz 1 tulee olemaan keskiviikkona ensi keskiviikkona. 10 00:00:28,240 --> 00:00:33,800 Niin varmasti tutkia. Se tulee olemaan, melko paljon, kuten ensimmäinen tietokilpailu 11 00:00:33,800 --> 00:00:36,390 koskevat sen muodossa, mutta se on luultavasti olemaan paljon vaikeampaa. 12 00:00:36,390 --> 00:00:39,600 Ainakin viime vuonna, kun otin 50, luulin että se oli paljon vaikeampaa. 13 00:00:39,600 --> 00:00:42,410 Tutki siis paljon. 14 00:00:42,410 --> 00:00:45,190 >> Aion kattaa tietorakenteiden ja Huffman-koodausta. 15 00:00:45,190 --> 00:00:47,910 Tämä on jotain, että monet ihmiset ajattelevat on monimutkainen, 16 00:00:47,910 --> 00:00:51,930 mutta aion yrittää tehdä niin helpoksi kuin mahdollista. 17 00:00:51,930 --> 00:00:56,330 Ensinnäkin, mitä me haluamme te tietää tietovisa 1 on 18 00:00:56,330 --> 00:01:00,970 ymmärtää käsitteellinen kuvaukset kunkin tietorakenteita joita aion esittää. 19 00:01:00,970 --> 00:01:03,960 Tämä tarkoittaa, että sinun ei tarvitse itse 20 00:01:03,960 --> 00:01:07,020 toteuttaa hash taulukon tietokilpailun 1. 21 00:01:07,020 --> 00:01:10,250 Emme halua sinua toteuttamaan koko tiiviste, ehkä me yritämme 22 00:01:10,250 --> 00:01:13,090 tehdä sinusta toteuttaa joitakin toimintoja, 23 00:01:13,090 --> 00:01:16,940 yleisimmät toiminnot, mutta emme aio tehdä teille toteuttaa kaiken. 24 00:01:16,940 --> 00:01:21,010 Joten on tärkeää, että ymmärrät käsitteen taakse tietorakenne 25 00:01:21,010 --> 00:01:23,510 ja että pystyt koodia C, 26 00:01:23,510 --> 00:01:27,880 vain yleisimmät toiminnot heillä on jokaisen tiedon rakennetta. 27 00:01:27,880 --> 00:01:30,090 Ja myös pystyä tarkistamaan osoittimia ja structs, 28 00:01:30,090 --> 00:01:33,470 koska ne näyttävät paljon näissä tietorakenteita. 29 00:01:33,470 --> 00:01:37,380 >> Ensinnäkin liittyvät luettelot. Liittyy luettelot ovat itse asiassa hyvin samankaltaisia ​​paneelit, 30 00:01:37,380 --> 00:01:39,930 mutta ero linkitetty lista ja array, 31 00:01:39,930 --> 00:01:45,160 Ensinnäkin, on se, että linkitetyn listan on erittäin joustava koko, 32 00:01:45,160 --> 00:01:50,060 kun taas paneelit sinun täytyy valita joko erittäin suuri koko jono, 33 00:01:50,060 --> 00:01:53,710 niin tiedät, että olet menossa voi tallentaa kaikki tiedot, jotka array, 34 00:01:53,710 --> 00:01:59,370 tai voit käyttää malloc olla joustava pituus array. 35 00:01:59,370 --> 00:02:03,680 Vuonna linkitetyt se on erittäin helppo vain saada enemmän elementtejä, 36 00:02:03,680 --> 00:02:07,210 laittaa enemmän elementtejä linkitetty lista tai poistaa osia. 37 00:02:07,210 --> 00:02:09,370 Ja todella, jos et halua linkitetty lista voidaan lajitella, 38 00:02:09,370 --> 00:02:13,950 voit etsiä ja poistaa elementtejä vakioaikavälein, 39 00:02:13,950 --> 00:02:16,800 joten O (1) ajan, joten se on erittäin kätevä. 40 00:02:16,800 --> 00:02:20,660 Täytyy vain olla varovainen aina muistaa malloc ja free solmuja, 41 00:02:20,660 --> 00:02:25,510 vain koska jos et, sinulla on muisti vuotaa. 42 00:02:25,510 --> 00:02:31,480 Joten linkitetyt - määritelmä solmu on aivan kuin mitä meillä on tuolla. 43 00:02:31,480 --> 00:02:35,110 Laitoin int n, mutta voit tallentaa kaikki tiedot haluat. 44 00:02:35,110 --> 00:02:37,280 Joten jos haluat tallentaa merkkijonon, se on hieno. 45 00:02:37,280 --> 00:02:41,690 Jos haluat tallentaa struct, se on hieno, kaksinkertainen, mitä haluat. 46 00:02:41,690 --> 00:02:44,630 Sain laittaa int n, esimerkkejä tästä. 47 00:02:44,630 --> 00:02:46,800 Ja sinulla on osoittimen seuraavaan solmuun. 48 00:02:46,800 --> 00:02:51,940 Niin, periaatteessa, linkitetty lista on joitakin tietoja, ja sitten se osoittaa seuraavaan solmuun. 49 00:02:51,940 --> 00:02:56,710 Jos se on viimeinen elementti linkitetty lista, se tulee osoittamaan null. 50 00:02:56,710 --> 00:02:59,060 Joten tämä on esimerkki linkitetyn listan. 51 00:02:59,250 --> 00:03:05,960 >> Okei, joten nyt katsotaan, mitä meidän pitäisi tehdä, jos haluan lisätä elementti linkitetty lista. 52 00:03:05,960 --> 00:03:08,810 Ensinnäkin toiminto insertti on tyyppiä void 53 00:03:08,810 --> 00:03:11,350 koska en halua palata mitään. 54 00:03:11,350 --> 00:03:14,200 Ja aion ottaa int argumenttina, 55 00:03:14,200 --> 00:03:17,090 koska haluan tietää, mitä haluan lisätä. 56 00:03:17,090 --> 00:03:21,840 Joten mikä on ensimmäinen asia, joka minun pitäisi tehdä? No, minun pitäisi malloc on newnode, 57 00:03:21,840 --> 00:03:24,240 niin että on ensimmäinen rivi. 58 00:03:24,240 --> 00:03:27,580 Olen vain luoda uusi solmu laittaa linkitetty lista. 59 00:03:27,580 --> 00:03:32,360 Joten mitä voin tehdä? No, me tiedämme, että meidän toteutukset liittyvät luettelot 60 00:03:32,360 --> 00:03:38,180 luokassa, olemme aina laittaa pään globaali muuttuja. 61 00:03:38,180 --> 00:03:41,800 Joten mitä voimme tehdä, on muuttaa pään. 62 00:03:41,800 --> 00:03:44,300 Voin tehdä tästä uusi solmu on uusi johtaja, 63 00:03:44,300 --> 00:03:46,670 ja se tulee osoittamaan edelliseen päähän. 64 00:03:46,670 --> 00:03:50,390 Miten voimme tehdä sen? Ensimmäinen asia, joka minun täytyy tehdä 65 00:03:50,390 --> 00:03:54,770 on muuttaa 'n' uudessa solmun arvoa, 66 00:03:54,770 --> 00:03:57,530 joka on siirtynyt toiminto. 67 00:03:57,530 --> 00:04:01,050 Sitten newnode seuraavaksi tulee olemaan päähän. 68 00:04:01,050 --> 00:04:05,800 Pää aiotaan newnode. Joten se on melko yksinkertainen. 69 00:04:05,800 --> 00:04:10,090 Poistamisen solmu, voimme tehdä sen kuin - 70 00:04:10,090 --> 00:04:14,790 Yksi tapa voisimme tehdä toisin sanoen, 71 00:04:14,790 --> 00:04:18,160 okei, jos halusin poistaa, esimerkiksi 3, 72 00:04:18,160 --> 00:04:24,850 mitä voisin tehdä, on vain pisteen edellisen solmun 73 00:04:24,850 --> 00:04:27,580 seuraavalle solmulle 3. 74 00:04:27,580 --> 00:04:29,400 Joten haluan vain tehdä jotain. 75 00:04:29,400 --> 00:04:33,400 Mutta mikä on ongelma tuon? 76 00:04:33,400 --> 00:04:37,400 Minulla on muistivuoto, joten minulla ei ole pääsyä numero 3 enää. 77 00:04:37,400 --> 00:04:42,480 Ongelmana tässä on se, että en aio voi vapauttaa, että solmu. 78 00:04:42,480 --> 00:04:45,360 Aion olla muistivuoto ja (käsittämätön) on menossa vihaavat minua. 79 00:04:45,360 --> 00:04:49,370 Joten sen sijaan tehdä, että minun pitäisi oikeastaan ​​olla tilapäinen osoitin. 80 00:04:49,370 --> 00:04:53,210 Joten laitoin temp. Se tulee osoittamaan solmuun, että haluan poistaa. 81 00:04:53,210 --> 00:04:58,170 Ja sitten voi siirtää edellisen solmut kohdan seuraavalle solmulle 82 00:04:58,170 --> 00:05:00,390 solmun, että haluan poistaa. 83 00:05:00,390 --> 00:05:02,730 Ja lopuksi, voin vapauttaa osoittimen. 84 00:05:02,730 --> 00:05:07,480 Onko minulla vapauttaa osoitin, että olen luonut tuolla? 85 00:05:07,480 --> 00:05:09,560 En tarvitse, vain siksi - 86 00:05:09,560 --> 00:05:13,430 ero on, että tämä solmu on luotu malloc, 87 00:05:13,430 --> 00:05:17,280 joten se kasaan, kun tämä oli juuri ilmoitettu NULL kytkimen pinossa. 88 00:05:17,280 --> 00:05:20,000 Joten minulla ei ole vapauttaa sitä. 89 00:05:20,000 --> 00:05:22,030 >> Okei. Joten nyt puhutaanpa pinot. 90 00:05:22,030 --> 00:05:24,680 Pinot ovat melko suoraviivaista. 91 00:05:24,680 --> 00:05:29,540 Teimme pinot ja jonot luokassa vain käyttämällä paneelit, 92 00:05:29,540 --> 00:05:32,820 mutta sinun pitäisi olla tuttu - vain olla tietoinen 93 00:05:32,820 --> 00:05:40,740 että voit myös tehdä pinot määrittäminen käyttämällä linkitettyjä listoja samoin. 94 00:05:40,740 --> 00:05:44,460 Joten jos sinulla on joukko, mikä olisi pino? 95 00:05:44,460 --> 00:05:46,810 Pino, ensimmäisen, täytyy olla kooltaan. 96 00:05:46,810 --> 00:05:49,950 Sinun täytyy tallentaa, mitä on koko pino, joka sinulla on juuri nyt. 97 00:05:49,950 --> 00:05:52,980 Ja myös sinulla olisi array, tässä tapauksessa numeroita, 98 00:05:52,980 --> 00:05:55,120 mutta jos haluat, se voi olla array 99 00:05:55,120 --> 00:06:00,380 merkkijonojen, joukko struct, jotain mitä haluat tallentaa. 100 00:06:00,380 --> 00:06:03,240 Tietoja pino: ero pino ja linkitetty lista 101 00:06:03,240 --> 00:06:08,590 on, että pinon sinulla on pääsy vain viimeinen osa, joka esitettiin pinossa. 102 00:06:08,590 --> 00:06:11,770 Sitä kutsutaan viime in, first out. 103 00:06:11,770 --> 00:06:15,090 Aivan kuten sinulla on pino tarjottimia, 104 00:06:15,090 --> 00:06:17,670 jos laittaa tarjottimen pinon päälle, 105 00:06:17,670 --> 00:06:22,670 sinun täytyy poistaa ensin tästä lokerosta saada muita lokeroita. 106 00:06:22,670 --> 00:06:26,310 Se on sama juttu pinot. 107 00:06:26,310 --> 00:06:31,220 Joten jos haluan esimerkiksi lisätä elementti pino, mitä minun pitäisi tehdä? 108 00:06:31,220 --> 00:06:34,070 Sitä kutsutaan push, ja se on melko yksinkertainen. 109 00:06:34,070 --> 00:06:37,130 Ensimmäinen asia mitä sinun tarvitsee tehdä on tarkistaa, jos koko pinon 110 00:06:37,130 --> 00:06:40,150 ei ole suurempi tai yhtä suuri kuin pinojen kapasiteettia. 111 00:06:40,150 --> 00:06:45,810 Koska jos olet jo täydellä kapasiteetilla, et voi lisätä mitään muuta. 112 00:06:45,810 --> 00:06:51,140 Ja sitten jos ei, sinun täytyy vain lisätä osa pinoon. 113 00:06:51,140 --> 00:06:54,530 Ja lopuksi, kasvattaa kokoa. Joten se on melko yksinkertainen. 114 00:06:54,530 --> 00:06:57,140 Joten en vain lisätä numero 2. 115 00:06:57,140 --> 00:07:00,350 Ja jos haluan pop, mikä tarkoittaa, että haluan poistaa 116 00:07:00,350 --> 00:07:03,870 viimeinen osa, joka lisättiin ja palauttaa arvo elementin, 117 00:07:03,870 --> 00:07:09,180 Ensimmäinen asia, joka minun täytyy tarkistaa, että pino ei ole tyhjä. 118 00:07:09,180 --> 00:07:11,510 Koska jos se on tyhjä, en voi palata mitään. 119 00:07:11,510 --> 00:07:14,820 Siinä tapauksessa, olen palaamassa -1. 120 00:07:14,820 --> 00:07:18,960 Muuten, aion dekrementoidaan koko spec, 121 00:07:18,960 --> 00:07:22,510 ja palata numerot (s.size). 122 00:07:22,510 --> 00:07:27,230 Miksi minä dekrementoidaan koko ja palata sitten s.size? 123 00:07:27,230 --> 00:07:30,930 Se johtuu siitä, tässä tapauksessa spec on koko 4, 124 00:07:30,930 --> 00:07:33,810 ja haluan palata neljäs osa, eikö? 125 00:07:33,810 --> 00:07:36,030 Mutta mikä on indeksi neljännen elementin? Kolme. 126 00:07:36,030 --> 00:07:44,510 Koska en koko - tulee olemaan 3, voin vain palata s.numbers (s.size) 127 00:07:44,510 --> 00:07:48,410 koska se on 3. Joten se on vain indeksin. 128 00:07:48,410 --> 00:07:50,380 >> Nyt jonot. Jonot ovat melko sama asia. 129 00:07:50,380 --> 00:07:54,950 Ainoa ero on se, että sen sijaan, että viime in, first out, 130 00:07:54,950 --> 00:07:57,480 sinulla on first in, first out. 131 00:07:57,480 --> 00:07:59,460 Todennäköisesti jos odotat mennä konserttiin, 132 00:07:59,460 --> 00:08:04,260 et olisi onnellinen, jos olisi pinon sijasta jonossa. 133 00:08:04,260 --> 00:08:07,730 Koska viimeinen henkilö tulemaan olisi ensimmäinen henkilö päästä konserttiin. 134 00:08:07,730 --> 00:08:09,760 Olet luultavasti ei olisi onnellinen. 135 00:08:09,760 --> 00:08:15,020 Jonossa, ensimmäinen henkilö päästä on myös ensimmäinen henkilö päästä pois. 136 00:08:15,020 --> 00:08:18,720 Joten n määritelmässä jono, sen lisäksi, että koko jono, 137 00:08:18,720 --> 00:08:23,360 sinun on myös oltava pää, joka on indeksi johtaja pinon. 138 00:08:23,360 --> 00:08:29,000 Joten ensimmäinen elementti juuri nyt. 139 00:08:29,000 --> 00:08:32,710 Enqueue on sama asia kuin push pinot. 140 00:08:32,710 --> 00:08:34,980 Jos olit hyvin naiivi, olisit vain sanoa, 141 00:08:34,980 --> 00:08:39,289 No, voin vain tehdä täsmälleen sama asia kuin tein push. 142 00:08:39,289 --> 00:08:44,030 Voin vain tarkistaa, jos se ei ole yli kapasiteetin. 143 00:08:44,030 --> 00:08:48,760 Jos se on, palaan väärä, muuten en voi vain viedä uusi arvo 144 00:08:48,760 --> 00:08:50,630 ja sitten kasvattaa kokoa. 145 00:08:50,630 --> 00:08:52,750 Mutta miksi tämä on väärin? 146 00:08:52,750 --> 00:08:55,010 Katsotaanpa tätä esimerkkiä. 147 00:08:55,010 --> 00:08:57,020 Yritän laittaa jonoon nippu tavaraa, 148 00:08:57,020 --> 00:08:58,390 ja sitten aion dequeue ja laittaa jonoon. 149 00:08:58,390 --> 00:09:00,550 Siellä on paljon komentoja, mutta se on hyvin yksinkertainen. 150 00:09:00,550 --> 00:09:04,790 Aion laittaa jonoon 5, joten lisää 5, ja sitten 7, 151 00:09:04,790 --> 00:09:09,310 1, 4, 6, ja sitten haluan dequeue jotain, 152 00:09:09,310 --> 00:09:12,000 mikä tarkoittaa, että aion poistaa ensimmäistä osaa. 153 00:09:12,000 --> 00:09:14,640 Joten aion poistaa numero 3, eikö? 154 00:09:14,640 --> 00:09:17,320 Ensimmäinen elementti. Okei. 155 00:09:17,320 --> 00:09:21,450 Nyt jos yritän laittaa jonoon jotain muuta, mitä tulee tapahtumaan? 156 00:09:21,450 --> 00:09:24,290 Saamieni täytäntöönpanoa, 157 00:09:24,290 --> 00:09:31,040 Aioin laittaa seuraavaan numeroon indeksi q.size. 158 00:09:31,040 --> 00:09:35,140 Tällöin koko on 8, 159 00:09:35,140 --> 00:09:38,640 joten indeksi 8 tulee olemaan täällä viimeinen asema. 160 00:09:38,640 --> 00:09:43,900 Jos yritän laittaa jonoon 1 täällä, olisin päälle viimeinen asema 161 00:09:43,900 --> 00:09:45,870 on numero 1, joka on täysin väärä. 162 00:09:45,870 --> 00:09:49,870 Mitä haluan tehdä, on kietoa ja mene ensimmäiseen asentoon. 163 00:09:49,870 --> 00:09:52,870 Ehkä voisitte vain sanoa, hyvin, olen vain tarkistaa 164 00:09:52,870 --> 00:09:55,600 jos en voi itse laittaa jotain siellä. 165 00:09:55,600 --> 00:09:58,560 Jos ei, voin sanoa, oh, kokonaan uusi kapasiteetti 166 00:09:58,560 --> 00:10:02,010 on oikeastaan ​​kapasiteetti - 1, ja et voi laittaa elementti siellä. 167 00:10:02,010 --> 00:10:06,150 Mutta mikä on ongelma? Ongelmana on, että jos vain dequeue kaiken täällä 168 00:10:06,150 --> 00:10:08,240 ja sitten yritän lisätä jotain muuta, se olisi vain sanoa, 169 00:10:08,240 --> 00:10:11,210 No, olit täydellä kapasiteetilla, joka on 0. 170 00:10:11,210 --> 00:10:13,620 Niin jono on mennyt. 171 00:10:13,620 --> 00:10:16,990 Sinun täytyy kietoa, ja tapa kiertyy 172 00:10:16,990 --> 00:10:22,040 että te oppinut visionääri ja muiden psets käytti mod. 173 00:10:22,040 --> 00:10:29,090 Voit kokeilla sitä kotona ymmärtää, miksi te tekisitte q.size + q.head 174 00:10:29,090 --> 00:10:31,080 mod kapasiteettia, mutta jos tarkistaa täällä, 175 00:10:31,080 --> 00:10:34,760 voimme nähdä, että se toimii. 176 00:10:34,760 --> 00:10:37,760 Joten viimeinen esimerkki, q.size oli 8 177 00:10:37,760 --> 00:10:47,590 ja pää oli 1, koska se oli tässä asennossa täällä jono. 178 00:10:47,590 --> 00:10:51,970 Joten se on 8 + 1, 9. Mod kapasiteetti 9 olisi 0. 179 00:10:51,970 --> 00:10:56,640 Se menisi indeksi 0. Otamme oikeaan asentoon. 180 00:10:56,640 --> 00:10:59,750 Ja yritä sitten jono kotona. 181 00:10:59,750 --> 00:11:04,950 Joitakin tärkeitä asioita: yrittää ymmärtää ero pino ja jono. 182 00:11:04,950 --> 00:11:11,620 Kotona, yritä saada hyvin perehtynyt täytäntöön enqueue, dequeue, push ja pop. 183 00:11:11,620 --> 00:11:16,560 Ja ymmärtävät, jos voisitte käyttää kullekin. 184 00:11:16,560 --> 00:11:22,830 >> Joten rentoudu 10 sekuntia joukko Pokemons. 185 00:11:22,830 --> 00:11:26,080 Ja nyt mennään takaisin tietorakenteita. 186 00:11:26,080 --> 00:11:29,770 Hash taulukoita. Monet ihmiset pelkäsivät hash taulukoita. 187 00:11:29,770 --> 00:11:33,650 ongelmatilanteissa asetettu 6, Spell Checker. 188 00:11:33,650 --> 00:11:35,980 Hash taulukoita ja yrittää, monet ihmiset pelästyä niitä. 189 00:11:35,980 --> 00:11:38,540 He luulevat olevansa niin vaikea ymmärtää. Joo? 190 00:11:38,540 --> 00:11:41,490 [Rob Bowden] Harjoitus 5. >> Harjoitus 5, joo. Kiitos Rob. 191 00:11:41,490 --> 00:11:43,370 Joo. Kuusi oli Huff n 'Puff, joo. 192 00:11:43,370 --> 00:11:49,340 Harjoitus 5 on Spell Checker, ja sinun piti käyttää joko tiiviste tai kokeilla. 193 00:11:49,340 --> 00:11:55,360 Monet ihmiset ajattelivat, että he olivat erittäin vaikea ymmärtää, mutta ne ovat oikeastaan ​​aika yksinkertainen. 194 00:11:55,360 --> 00:12:01,290 Mikä on hash pöytä, pohjimmiltaan? Tiiviste on joukko linkitettyjä listoja. 195 00:12:01,290 --> 00:12:06,730 Ainoa ero array ja tiiviste 196 00:12:06,730 --> 00:12:09,730 on, että tiiviste sinulla on jotain kutsutaan hajautusfunktio. 197 00:12:09,730 --> 00:12:12,080 Mikä on hajautusfunktio? 198 00:12:12,080 --> 00:12:13,970 En tiedä, jos te voitte lukea täältä. 199 00:12:13,970 --> 00:12:16,090 Tämä on esimerkki siitä, hash-taulukko. 200 00:12:16,090 --> 00:12:19,220 Voit siis nähdä, että sinulla on array 31 elementtejä. 201 00:12:19,220 --> 00:12:22,440 Ja mitä teemme hash taulukon on hajautusfunktio 202 00:12:22,440 --> 00:12:26,660 että aikoo kääntää avain, kukin int indeksiin. 203 00:12:26,660 --> 00:12:31,740 Jos esimerkiksi, jos haluan valita B. Harrison, 204 00:12:31,740 --> 00:12:34,190 Haluaisin laittaa B. Harrison minun hash toimintoja, 205 00:12:34,190 --> 00:12:36,960 ja hajautusfunktio palaisi 24. 206 00:12:36,960 --> 00:12:40,930 Joten tiedän, että haluan tallentaa B. Harrison 24. 207 00:12:40,930 --> 00:12:46,580 Niin, että ero vain ottaa array ja ottaa tiiviste. 208 00:12:46,580 --> 00:12:48,740 Vuonna tiiviste sinulla on toiminto, joka on menossa kertoa 209 00:12:48,740 --> 00:12:54,740 tallennuspaikka tiedot, jotka haluat säilyttää. 210 00:12:54,740 --> 00:12:57,040 Hash funktio, jonka haluat etsiä hajautusfunktio 211 00:12:57,040 --> 00:13:00,600 joka on deterministinen ja hyvin jakautunut. 212 00:13:00,600 --> 00:13:07,810 Kuten näette täällä, näet, että paljon tietoa, että halusin myymälä oli todella 19 213 00:13:07,810 --> 00:13:12,470 sijaan käyttää 31 ja 30 ja 29, jotka olivat kaikki ilmaiseksi. 214 00:13:12,470 --> 00:13:16,920 Joten hajautusfunktio että käytin ei ollut kovin hyvin jakautunut. 215 00:13:16,920 --> 00:13:20,710 Kun sanomme hyvin jakautunut, se tarkoittaa, että haluamme olla, 216 00:13:20,710 --> 00:13:26,520 karkeasti, ainakin 1 tai 2 kunkin - 217 00:13:26,520 --> 00:13:32,190 kuten, ero on 1 tai 2 kunkin indekseistä ryhmät. 218 00:13:32,190 --> 00:13:43,950 Haluat olla suurin piirtein sama määrä elementtejä kunkin linkitetyn listan jono. 219 00:13:43,950 --> 00:13:48,600 Ja se on helppo tarkistaa, jos se on voimassa tiiviste, katsella kuin hash taulukoita. 220 00:13:48,600 --> 00:13:51,770 >> Sitten puita. Tämä on puu. 221 00:13:51,770 --> 00:13:56,400 Puut tietotekniikassa ovat ylösalaisin jostain syystä. 222 00:13:56,400 --> 00:14:00,150 Joten täällä sinulla on puun juuri ja sitten lehdet. 223 00:14:00,150 --> 00:14:05,630 Sinun pitäisi vain tietää nimikkeistön vanhemmille ja lapselle. 224 00:14:05,630 --> 00:14:12,880 Jokainen solmu on sen lapsia, jotka ovat solmuja, jotka ovat alle vanhempi. 225 00:14:12,880 --> 00:14:19,660 Niinpä esimerkiksi, 2 tulee olemaan vanhemman 3 ja muiden lapsen oikeassa, 226 00:14:19,660 --> 00:14:25,290 kun 3 tulee olemaan vanhemman 1 ja muut lapset, jotka ovat siellä. 227 00:14:25,290 --> 00:14:29,990 Ja 1 tulee olemaan 3: n lapsi, ja niin edelleen. 228 00:14:29,990 --> 00:14:34,610 Meillä on jotain paljon mielenkiintoisempaa, nimeltään binäärihakupuu, 229 00:14:34,610 --> 00:14:39,040 jossa kaikki arvot oikealla puolella solmun 230 00:14:39,040 --> 00:14:41,660 tulevat olemaan oikealla, täällä - oikealla, 231 00:14:41,660 --> 00:14:46,780 tulevat olemaan suurempi kuin elementti juuren. 232 00:14:46,780 --> 00:14:49,780 Joten jos minulla on numero 5 täällä, kaikki elementit oikealla 233 00:14:49,780 --> 00:14:51,940 tulevat olemaan suurempi kuin 5, ja vasemmalla 234 00:14:51,940 --> 00:14:56,770 kaikki elementit tulevat olemaan alle 5. 235 00:14:56,770 --> 00:14:58,780 Miksi tämä hyödyllinen? 236 00:14:58,780 --> 00:15:01,660 No, jos haluan tarkistaa jos numero 7 on täällä, esimerkiksi 237 00:15:01,660 --> 00:15:05,960 Minä vain mennä 5 ensimmäinen ja aion nähdä, on 7 enemmän tai vähemmän kuin 5? 238 00:15:05,960 --> 00:15:09,540 Se on suurempi, joten tiedän, että se tulee olla oikealla puolella puu. 239 00:15:09,540 --> 00:15:13,980 Joten minulla on paljon vähemmän tavaraa katsomaan. 240 00:15:13,980 --> 00:15:19,520 Täytäntöönpanon binäärihakupuu, solmu, olen vain täytyy olla tiedot, 241 00:15:19,520 --> 00:15:21,750 joten int n; sinulla voisi olla myös merkkijono 242 00:15:21,750 --> 00:15:23,630 tai mitä halusi. 243 00:15:23,630 --> 00:15:28,100 Sinun täytyy vain olla varovainen määriteltäessä, mitä on suurempi, mikä on vähemmän. 244 00:15:28,100 --> 00:15:30,390 Joten jos sinulla on ollut jouset, esimerkiksi voisit määritellä 245 00:15:30,390 --> 00:15:34,690 että kaikki ne asiat oikealla menossa on pitempi, 246 00:15:34,690 --> 00:15:40,940 vasemmalla ovat menossa on pienempi pituudet, joten se on todella sinun. 247 00:15:40,940 --> 00:15:44,930 >> Miten voin toteuttaa löytää BST? 248 00:15:44,930 --> 00:15:47,840 Ensimmäinen asia, meidän täytyy tehdä, on tarkistaa, jos juuri on NULL. 249 00:15:47,840 --> 00:15:50,920 Jos se on NULL, se tarkoittaa, että asia ei ole olemassa 250 00:15:50,920 --> 00:15:53,330 koska sinulla ei edes ole puu, eikö? 251 00:15:53,330 --> 00:15:55,790 Joten palaan vääriä. 252 00:15:55,790 --> 00:15:58,740 Muuten, aion tarkistaa, jos luku on suurempi 253 00:15:58,740 --> 00:16:01,720 kuin arvo root. 254 00:16:01,720 --> 00:16:04,250 Aion yrittää löytää elementin oikealla 255 00:16:04,250 --> 00:16:08,590 puun. 256 00:16:08,590 --> 00:16:11,310 Huomaatte, että olen käyttäen rekursion täällä. 257 00:16:11,310 --> 00:16:14,150 Ja sitten jos se on vähemmän, olen menossa katsomaan vasemmalle. 258 00:16:14,150 --> 00:16:18,330 Ja lopuksi, muuten, jos se ei ole vähemmän tai ei ole suurempi, 259 00:16:18,330 --> 00:16:20,660 se tarkoittaa, että se on arvo sinänsä. 260 00:16:20,660 --> 00:16:23,010 Joten en juuri palata totta. 261 00:16:23,010 --> 00:16:26,360 Voit nähdä täällä, että käytin jos, jos, jos. 262 00:16:26,360 --> 00:16:30,820 Ja muistakaa, tietokilpailuun 0, meillä oli ongelma, joka oli jos, jos, jos, 263 00:16:30,820 --> 00:16:32,780 ja sinun piti löytää tehottomuutta, 264 00:16:32,780 --> 00:16:35,180 ja tehottomuus oli, että käytit jos. 265 00:16:35,180 --> 00:16:39,060 Sinun olisi pitänyt käyttää, jos muuta, jos, if, ja muuta. 266 00:16:39,060 --> 00:16:44,240 Joten minun pitäisi käyttää if ja else if ja muu täällä? 267 00:16:44,240 --> 00:16:46,200 Ei kukaan - joo? 268 00:16:46,200 --> 00:16:51,140 [Student puhuminen, äänetön] 269 00:16:51,140 --> 00:16:53,480 Onpa täydellistä. Joten hän sanoo, että sillä ei ole väliä, 270 00:16:53,480 --> 00:16:55,930 vain koska tehottomuus että meillä oli ennen 271 00:16:55,930 --> 00:16:59,550 oli, että koska, ehkä jos ehdosta oli tyytyväinen, 272 00:16:59,550 --> 00:17:03,570 niin olet tehnyt kanteen, mutta sitten olit menossa tarkistaa kaikki muut ehdot. 273 00:17:03,570 --> 00:17:06,319 Mutta tässä tapauksessa, se palasi heti, joten sillä ei ole väliä. 274 00:17:06,319 --> 00:17:09,220 Joten sinun ei tarvitse käyttää if. 275 00:17:09,220 --> 00:17:11,740 >> Ja lopuksi, puhutaanpa yrittää, 276 00:17:11,740 --> 00:17:13,800 joka on kaikkien suosikki. 277 00:17:13,800 --> 00:17:15,980 Lisäpisteyritys puu paneelit. 278 00:17:15,980 --> 00:17:20,369 Se on erittäin nopea etsiä arvoja, mutta se käyttää paljon muistia. 279 00:17:20,369 --> 00:17:22,530 Ja se on yleensä suodattaa sanoja, joten kun 280 00:17:22,530 --> 00:17:27,920 haluavat toteuttaa esimerkiksi en tiedä, kuin puhelinluettelo puhelimen 281 00:17:27,920 --> 00:17:30,440 ja haluat pystyä kirjoittamaan B 282 00:17:30,440 --> 00:17:32,510 ja vain niiden henkilöiden nimet, jotka ovat B. 283 00:17:32,510 --> 00:17:37,960 Se on erittäin helppo toteuttaa, että käyttämällä kokeilla, esimerkiksi. 284 00:17:37,960 --> 00:17:39,820 Miten määrittelet solmun kokeilla? 285 00:17:39,820 --> 00:17:43,910 Täytyy vain olla bool joka aiotaan is_word. 286 00:17:43,910 --> 00:17:48,660 Joka edustaa että käyttämällä kaikki merkit ennen solmu, 287 00:17:48,660 --> 00:17:51,920 olet pystyivät muodostamaan sana, 288 00:17:51,920 --> 00:17:57,230 ja sitten sinulla on joukko osoittimia solmuja. 289 00:17:57,230 --> 00:18:03,120 Näetkö, että meillä on joukko vanhempisolmuja, joten solmu * array? Joo? 290 00:18:03,120 --> 00:18:06,050 Katsotaanpa, miten tämä toimii. Sillä oikeinkirjoituksen tarkistus, 291 00:18:06,050 --> 00:18:08,230 meillä on joukko 27 elementtejä, 292 00:18:08,230 --> 00:18:12,150 koska meillä on kaikki kirjeet ja heittomerkki. 293 00:18:12,150 --> 00:18:17,800 Ennen tässä olen juuri menossa käyttää 2 koska haluan pystyä kirjoittamaan taululle. 294 00:18:17,800 --> 00:18:20,230 Okei. Joten tämä on esimerkki yrittää. 295 00:18:20,230 --> 00:18:25,600 Jos vain määritellä ensimmäinen solmu, Otan joukko 2 elementtiä 296 00:18:25,600 --> 00:18:29,290 jotka ovat 2 osoittimia NULL, joten olen vain laittaa "" ja "b". 297 00:18:29,290 --> 00:18:32,430 Ja aion olla bool joka sanoo is_word. 298 00:18:32,430 --> 00:18:34,420 Se tulee olemaan epätosi ensimmäinen, 299 00:18:34,420 --> 00:18:37,370 vain siksi, ennen sinulla ei ole mitään merkkiä. 300 00:18:37,370 --> 00:18:40,900 Niin tyhjä sana ei ole sana. Joten se on väärä. 301 00:18:40,900 --> 00:18:46,320 Jos haluan lisätä "" tälle sanakirjaan, mitä minun täytyy tehdä? 302 00:18:46,320 --> 00:18:49,760 Haluaisin vain täytyy malloc uusi solmu varten '", 303 00:18:49,760 --> 00:18:54,630 ja sitten lisätä sen sanan totta. 304 00:18:54,630 --> 00:19:00,180 Niin se vain merkitsee, että ottaa "" tulee olemaan totta. Järkeä? 305 00:19:00,180 --> 00:19:04,120 Sitten jos haluan lisätä "ba", minun täytyy malloc 1 'b', 306 00:19:04,120 --> 00:19:07,550 ja sitten aion perustaa boolean epätosi, 307 00:19:07,550 --> 00:19:10,160 koska "b" itsessään ei ole sana. 308 00:19:10,160 --> 00:19:13,010 Sitten aion malloc vielä yksi "", joten "ba", 309 00:19:13,010 --> 00:19:16,290 ja sitten aion perustaa se sana totta. 310 00:19:16,290 --> 00:19:18,950 Koska "ba" on sana. 311 00:19:18,950 --> 00:19:21,910 Ja sitten jos haluan nähdä, jos 'b' on tässä sanakirja, 312 00:19:21,910 --> 00:19:26,730 Voin vain mennä ensimmäinen, 'b'. Menen alas, ja katson on sana, ja se sanoo vääriä. 313 00:19:26,730 --> 00:19:30,110 Joten se ei ole sana. Jos haluan tarkistaa "ba", 314 00:19:30,110 --> 00:19:38,010 Menen ensimmäinen, 'b', ja sitten mennä "", ja näen totta, niin se on sana. Järkeä? 315 00:19:38,010 --> 00:19:41,950 Monet ihmiset hämmentyvät yrittää. Ei? 316 00:19:41,950 --> 00:19:44,740 >> Lopuksi, Huffman-koodausta. Huffman-koodaus on erittäin hyödyllistä 317 00:19:44,740 --> 00:19:47,550 muistin säästämiseksi ja pakkaa tekstitiedostoja, 318 00:19:47,550 --> 00:19:52,270 vain siksi paljon kertaa käytät "" ja "e", esimerkiksi 319 00:19:52,270 --> 00:19:57,710 dokumenteista, mutta en tiedä, jos kaverit käyttää "Q" tai "Z" niin paljon. 320 00:19:57,710 --> 00:20:02,040 Ottaa vain 1 tavu jokaista yksittäistä merkkiä 321 00:20:02,040 --> 00:20:08,520 joka ikinen - 256 merkkiä, joka meillä on ASCII taulukko ei ole kovin optimaalinen, 322 00:20:08,520 --> 00:20:11,410 vain koska on olemassa joitakin merkkejä, että käytät paljon enemmän, 323 00:20:11,410 --> 00:20:15,180 niin sinun pitäisi luultavasti käyttää vähemmän muistia niille. 324 00:20:15,180 --> 00:20:17,560 Miten käytän Huffman-koodausta? 325 00:20:17,560 --> 00:20:20,010 Meidän täytyy tehdä Huffman puu. 326 00:20:20,010 --> 00:20:23,370  Huffman puu on solmut 327 00:20:23,370 --> 00:20:27,760 että on symboli, joka tulee olemaan tyyliin "',' b ',' c ', kirje, 328 00:20:27,760 --> 00:20:32,990 mitä kirjeen sinulla on, taajuus on taajuus, että sana esiintyy tekstissä, 329 00:20:32,990 --> 00:20:36,280 että olit luomassa Huffman puu, 330 00:20:36,280 --> 00:20:41,800 ja sitten solmu, joka tulee osoittamaan vasemmalla Huffman puu 331 00:20:41,800 --> 00:20:47,210 ja toinen solmu, joka tulee osoittamaan oikeaan. Joten aivan kuten puu. 332 00:20:47,210 --> 00:20:49,440 Miten rakentaa Huffman puu? 333 00:20:49,440 --> 00:20:54,020 Olet menossa hakemaan 2 solmut, jotka ovat alhaisimmat taajuudet. 334 00:20:54,020 --> 00:20:56,490 Jos sinulla on tie aiot valita 2 solmut 335 00:20:56,490 --> 00:20:59,870 että on alhaisin ASCII arvot samoin. 336 00:20:59,870 --> 00:21:02,420 Sitten olet menossa luoda uusi puu irti niistä 2 solmut 337 00:21:02,420 --> 00:21:08,030 että tulee olemaan yhdistetty taajuus isäsolmuun. 338 00:21:08,030 --> 00:21:13,240 Ja sitten olet menossa poistamaan 2 lasta metsästä 339 00:21:13,240 --> 00:21:15,570 ja korvata ne vanhemman. 340 00:21:15,570 --> 00:21:18,930 Ja aiot toistaa, kunnes sinulla on vain 1 puu metsässä. 341 00:21:18,930 --> 00:21:23,840 Joten katsotaanpa miten tekisit Huffman puu ZAMYLA. 342 00:21:23,840 --> 00:21:29,220 Voit nähdä täällä, että kaikki kirjeet on taajuus 1 paitsi '", että on taajuus 2. 343 00:21:29,220 --> 00:21:34,090 Joten olen luonut solmut kaikki kirjaimet laitoin järjestyksessä ASCII-arvo ja taajuus. 344 00:21:34,090 --> 00:21:40,090 Joten jos haluan luoda ensimmäinen puu, se on kanssa "L" ja "M". 345 00:21:40,090 --> 00:21:43,100 Joten se on täällä. Taajuus pari on 2 346 00:21:43,100 --> 00:21:49,470 koska se on 1 + 1, niin seuraavan 2, jolla on pienin taajuudet ovat "Y" ja "Z". 347 00:21:49,470 --> 00:21:53,180 Ja sitten minulla on ne kaikki ovat - on taajuus 2. 348 00:21:53,180 --> 00:22:00,470 Niin mitkä ovat ne, jotka ovat alhaisimmat ASCII-arvon seuraava? 349 00:22:00,470 --> 00:22:04,830 "" Ja "L". Joten Luon uusi solmu, 350 00:22:04,830 --> 00:22:09,930 ja lopuksi, se on 4 ja 2, joten 2 tulee olemaan vasemmalla. 351 00:22:09,930 --> 00:22:12,430 Ja tämä on Huffman puu. 352 00:22:12,430 --> 00:22:16,060 Sitten jos haluan kirjoittaa tekstiä, 353 00:22:16,060 --> 00:22:24,440 kuten binary muuntaa tekstin käyttäen Huffman puu on erittäin helppoa. 354 00:22:24,440 --> 00:22:30,220 Esimerkiksi, jos sanon, että siirtyminen vasemmalle on 0 ja liikkuvat oikealle on 1, 355 00:22:30,220 --> 00:22:32,410 Mikä on, että menossa edustamaan? 356 00:22:32,410 --> 00:22:35,530 Niin kuin 1, 1, joten oikea, oikea, 357 00:22:35,530 --> 00:22:40,370 ja sen jälkeen 0, joten jäljellä olisi L, ja sitten 1, 0, 0. 358 00:22:40,370 --> 00:22:43,950 Joten 1, 0, joten vain 1, 0, "". 359 00:22:43,950 --> 00:22:47,540 Ja sitten 0, 1, joten 'Z'. 360 00:22:47,540 --> 00:22:52,170 Ja sitten 1, 0, 0 - no. 361 00:22:52,170 --> 00:22:56,780 0, 0 on "Y", niin laiska. 362 00:22:56,780 --> 00:23:06,060 Niin, että kaikki minulle, Rob vie yli. 363 00:23:06,060 --> 00:23:08,400 >> [Rob Bowden] Niin, viikko 7 kamaa. 364 00:23:08,400 --> 00:23:11,390 Meillä on paljon mennä yli todella nopeasti. 365 00:23:11,390 --> 00:23:13,430 Bittioperaatioiden, puskurin ylivuoto, 366 00:23:13,430 --> 00:23:16,760 CS50 kirjastosta ja HTML, HTTP, CSS. 367 00:23:16,760 --> 00:23:20,990 Kaikki, kuten 15-20 minuuttia. 368 00:23:20,990 --> 00:23:24,330 Bittioperaatioiden. On 6 niistä, jotka sinun täytyy tietää. 369 00:23:24,330 --> 00:23:31,200 Bittikohtaisesti, bittikohtainen tai, XOR, vasen muutos, oikeus siirtää, ja ei. 370 00:23:31,200 --> 00:23:35,420 OIKEA VAIHTO eikä tuskin näki luento ollenkaan. 371 00:23:35,420 --> 00:23:40,480 Menemme sen yli nopeasti tänne, mutta on hyvä tietää, että nämä ovat 6 olemassa. 372 00:23:40,480 --> 00:23:45,070 Muista, että bittioperaatioiden ovat kuin kun teet 3 + 4. 373 00:23:45,070 --> 00:23:49,420 Et ole tekemisissä binary 3 ja 4. 374 00:23:49,420 --> 00:23:56,550 Kanssa bittioperaatioiden olet todella puuttua yksittäisten bittien numerot 3 ja 4. 375 00:23:56,550 --> 00:23:59,120 >> Joten ensimmäinen, joka sanomme ei bittikohtainen ole, 376 00:23:59,120 --> 00:24:02,340 ja se vain kääntää kaikki bitit. 377 00:24:02,340 --> 00:24:05,500 Joten tässä, jos olet kirjoittamassa tätä C, et kirjoita sitä 378 00:24:05,500 --> 00:24:09,380 kuten ~ 11011 tai mitä tahansa, voit kirjoittaa sen kuin ~ 4, 379 00:24:09,380 --> 00:24:12,970 ja sitten se kääntää binääriesityksen 4. 380 00:24:12,970 --> 00:24:24,800 Joten tässä, ~ noin binary numero 1101101 on menossa juuri kääntää kaikki 1: n ja 0: n ja kaikki 0: n ja 1: n. 381 00:24:24,800 --> 00:24:27,600 Kuten sanoin siellä, usein käyttää tätä, 382 00:24:27,600 --> 00:24:30,830 ja näemme sen vähän, on kuin haluamme keksiä jokin numero 383 00:24:30,830 --> 00:24:35,460 jossa kaikki bitit ovat 1, paitsi yksi heistä. 384 00:24:35,460 --> 00:24:38,560 Niin se on yleensä helpompi ilmaista numero 385 00:24:38,560 --> 00:24:40,630 jos vain, että yksi bitti on asetettu, 386 00:24:40,630 --> 00:24:44,650 ja sitten ottaa ~ sen, niin joka toinen bitti on asetettu paitsi että yksi. 387 00:24:44,650 --> 00:24:50,300 Niin, että mitä aiomme käyttää enemmän vähän. 388 00:24:50,300 --> 00:24:58,220 >> Biteittäin tai. Tässä on 2 binääriluvut, ja nämä 2 numerot 389 00:24:58,220 --> 00:25:00,780 ovat melko edustava, koska ne edustavat kaikkia mahdollisia 390 00:25:00,780 --> 00:25:07,290 bittiyhdistelmä sinulla olisi toimia. 391 00:25:07,290 --> 00:25:13,540 Täällä, kun OR-toiminto kunkin bitin, olemme juuri menossa verrata suoraan alas. 392 00:25:13,540 --> 00:25:15,410 Niin vasemmalla puolella meillä on 1 ja 1. 393 00:25:15,410 --> 00:25:20,510 Kun minä biteittäinen | niille, mitä aion saada? Yksi. 394 00:25:20,510 --> 00:25:25,320 Sitten biteittäinen | 0 ja 1 ei aio antaa minulle? Yksi. 395 00:25:25,320 --> 00:25:27,840 Bittivastineen 1 ja 0 tulee olemaan sama asia, yksi. 396 00:25:27,840 --> 00:25:31,880 Bittivastineen 0 | 0 aikoo antaa minulle 0. 397 00:25:31,880 --> 00:25:37,300 Joten ainoa tapaus, jossa saan 0 on 0 | 0 kotelo. 398 00:25:37,300 --> 00:25:40,020 Ja voit ajatella, että aivan kuten looginen ors. 399 00:25:40,020 --> 00:25:44,830 Joten jos ajattelet 1 totta ja 0 vääriksi, sama asia pätee täällä. 400 00:25:44,830 --> 00:25:50,040 Niin totta tai totta totta, tosi tai epätosi on totta. 401 00:25:50,040 --> 00:25:57,150 Vääriä tai oikeita, on totinen, vääriä tai virheellisiä on ainoa asia, joka on oikeastaan ​​väärä. 402 00:25:57,150 --> 00:26:00,100 Tässä on esimerkki siitä, että sinun pitäisi tietää 403 00:26:00,100 --> 00:26:05,160 niin aika hyvä esimerkki, kun bittioperaatioiden käytetään. 404 00:26:05,160 --> 00:26:08,660 Täällä jos me tai pääomaa "" kanssa Ox20, 405 00:26:08,660 --> 00:26:11,830 ja me katsomme näitä toisessa, saamme jotain. 406 00:26:11,830 --> 00:26:16,020 Ja jos me tai pieniä "" kanssa Ox20, saamme jotain. 407 00:26:16,020 --> 00:26:26,750 Joten vedä ylös ASCII taulukossa. 408 00:26:26,750 --> 00:26:34,000 Okei. Tässä näemme, että "" on - 409 00:26:34,000 --> 00:26:36,920 tässä meillä on "" on desimaalin 65. 410 00:26:36,920 --> 00:26:45,120 Mutta minä menen heksadesimaalimerkin, joka on Ox41. 411 00:26:45,120 --> 00:26:48,280 Melko varmasti näimme sen luokassa. Mielestäni näimme sen luokassa 412 00:26:48,280 --> 00:26:52,730 että se on melko helppo muuntaa heksadesimaali ja binary. 413 00:26:52,730 --> 00:26:55,280 Joten tässä, jos en halua laittaa 4 binary, 414 00:26:55,280 --> 00:26:59,550 joka on vain olemaan 0100. 415 00:26:59,550 --> 00:27:03,620 Tämä on 1 paikka, 2 paikka, 4 paikka, joten tämä on 4. 416 00:27:03,620 --> 00:27:08,550 Sitten voin jakaa 1 binary, joka tulee olemaan 0001. 417 00:27:08,550 --> 00:27:14,280 Ja niin tämä tulee olemaan edustus "" binary. 418 00:27:14,280 --> 00:27:22,720 Kun pieniä "", se on nyt olemaan Ox61, 419 00:27:22,720 --> 00:27:27,050 jos, jakamalla nämä ylös sen binary, joten 6 - 420 00:27:27,050 --> 00:27:37,830 Katsotaanpa todella tehdä sen - on siellä ole pyyhekumi? Eraser. 421 00:27:37,830 --> 00:27:48,220 Ox61. Joten jakaminen 6 binary tulee olemaan 0 + 4 + 2 + 0. 422 00:27:48,220 --> 00:27:54,610 Ja jakaminen 1 tulee olemaan 0001. 423 00:27:54,610 --> 00:27:56,520 Tarkasteltaessa ero näiden 2, 424 00:27:56,520 --> 00:28:04,250 näemme, että ainoa ero pienten ja pääoman "" onko tämä yksi bitti. 425 00:28:04,250 --> 00:28:11,810 Joten palaan tänne - okei. 426 00:28:11,810 --> 00:28:15,920 Palatakseni tänne, jos katsomme, mitä vähän Ox20 on, 427 00:28:15,920 --> 00:28:22,210 niin halkaisu Ox20 osaksi binary, 428 00:28:22,210 --> 00:28:27,310 on 0010, 0000. 429 00:28:27,310 --> 00:28:33,470 Ox20, ainoa bitti, joka on asetettu tämä vähän, että olemme huolissamme, 430 00:28:33,470 --> 00:28:38,210 kanssa vaihtamisesta sekä isoja että pieniä "". 431 00:28:38,210 --> 00:28:47,610 Jos minä tai "", joka on tämä, "", 432 00:28:47,610 --> 00:28:50,580 jos minä tai "" kanssa Ox20, 433 00:28:50,580 --> 00:28:53,490 mitä aion saada? 434 00:28:53,490 --> 00:28:58,960 [Student, äänetön] >> Pienet '", koska se tulee kääntää tämän bitin 1. 435 00:28:58,960 --> 00:29:04,170 Ja jos minä tai "" kanssa Ox20, mitä aion saada? 436 00:29:04,170 --> 00:29:08,780 Pieniksi, koska vain ORING "" kanssa Ox20, 437 00:29:08,780 --> 00:29:14,580 Olen juuri menossa ORING tämän yhden bitin 1, se on jo 1, joten sillä ei ole väliä. 438 00:29:14,580 --> 00:29:17,960 Joten saamme "" ja "". 439 00:29:17,960 --> 00:29:24,820 >> Biteittäin ja. Jälleen voimme ajatella tätä meidän looginen ja vastine. 440 00:29:24,820 --> 00:29:28,180 Vasemmalla puolella meillä on totta ja totta. 441 00:29:28,180 --> 00:29:31,160 Se tulee olemaan totta, ja kaikissa tapauksissa, 442 00:29:31,160 --> 00:29:36,270 false & totta vai true & epätosi vai false & vääriä, 443 00:29:36,270 --> 00:29:38,550 mikään näistä asiat ovat totta. 444 00:29:38,550 --> 00:29:44,170 Joten mitä me lopulta saada on 1000. 445 00:29:44,170 --> 00:29:48,830 Joten nyt, tässä, tässä kun olen käyttänyt luotettava peiton ole, 446 00:29:48,830 --> 00:29:52,230 jossa meillä oli Ox20. 447 00:29:52,230 --> 00:29:54,350 Joten tämä on Ox20. 448 00:29:54,350 --> 00:29:59,570 Nyt mitä haluan tehdä, bittivastineen ~ of Ox20. 449 00:29:59,570 --> 00:30:03,600 Tämä tulee kääntää kaikki bitit. 450 00:30:03,600 --> 00:30:09,330 Joten minulla on 1101, 1111. 451 00:30:09,330 --> 00:30:18,940 Ja niin "" anded kanssa ~ Ox20 ei aio antaa minulle mitä? 452 00:30:18,940 --> 00:30:22,430 Vain vähän meidän täytyy todellakin miettiä tämä, 453 00:30:22,430 --> 00:30:26,020 sillä, jos kaikki nämä bitit asetetaan 1, 454 00:30:26,020 --> 00:30:29,000 Sitten me aiomme saada mitä "" oli, 455 00:30:29,000 --> 00:30:31,260 paitsi mahdollisesti mitä tämä vähän on. 456 00:30:31,260 --> 00:30:34,460 Koska jos se oli 1, nyt se tulee asettaa 0, 457 00:30:34,460 --> 00:30:39,810 koska mitä tämä on, anded tällä tulee olemaan 0. 458 00:30:39,810 --> 00:30:43,280 Joten mikä on "" & ~ Ox20 aio antaa minulle? 459 00:30:43,280 --> 00:30:48,200 [Opiskelijat vastata, äänetön] >> Ja mikä on "" ja - se on "". 460 00:30:48,200 --> 00:30:52,170 Ja mikä on "" & ~ Ox20 aio antaa minulle? 461 00:30:52,170 --> 00:30:56,720 "A." Koska tämä on tällä hetkellä 1. 462 00:30:56,720 --> 00:30:59,570 Anding tämän 0 aikoo tehdä sen 0, 463 00:30:59,570 --> 00:31:02,530 ja nyt me aiomme saada "". 464 00:31:02,530 --> 00:31:06,600 >> Molemmat ovat "," ja viimeisenä mutta ei vähäisimpänä tätä tyyppiä, 465 00:31:06,600 --> 00:31:10,830 meillä on XOR. Se on hyvin paljon, tai 466 00:31:10,830 --> 00:31:14,400 paitsi se tarkoittaa yksinomaan tai. 467 00:31:14,400 --> 00:31:18,420 Tämä on kuin mitä yleensä ajatella kuin tai todellisessa maailmassa. 468 00:31:18,420 --> 00:31:23,190 Niin et joko "x" tai "y", mutta ei molempia. 469 00:31:23,190 --> 00:31:28,700 Täällä 1 ^ 1 tulee olemaan 0. 470 00:31:28,700 --> 00:31:33,650 Koska totta, tämä on - se ei toimi yhtä hyvin looginen oikean ja väärän 471 00:31:33,650 --> 00:31:37,150 kuten peiton ja ja tai tehdä, 472 00:31:37,150 --> 00:31:40,100 mutta totta ^ totta on epätosi. 473 00:31:40,100 --> 00:31:44,810 Koska me vain haluamme palauttaa true, jos vain toinen niistä on totta. 474 00:31:44,810 --> 00:31:50,950 Joten 1 ^ 1 on 0. Entä 0 ^ 1? 475 00:31:50,950 --> 00:31:56,010 On 1.. 1 ^ 0 on 1, 0 ^ 0 on 0. 476 00:31:56,010 --> 00:32:03,890 Joten kaikissa olosuhteissa, 0 bittikohtainen jotain 0 tulee olemaan 0. 477 00:32:03,890 --> 00:32:10,270 1 peiton jotain 0 tai 0 bittikohtainen 1, 478 00:32:10,270 --> 00:32:14,660 jos se on | tai ^, se tulee olemaan 1, ja jos se on ja se tulee olemaan 0. 479 00:32:14,660 --> 00:32:20,850 Ja ainoa tapaus, jossa 1 peiton 1 ei ole 1 on yksinoikeudella tai. 480 00:32:20,850 --> 00:32:24,580 Se on 0110. 481 00:32:24,580 --> 00:32:36,520 Joten tässä nyt XOR - niin olemme takaisin 20. 482 00:32:36,520 --> 00:32:43,480 "'^ Ox20 on nämä 2 bittiä olemme vertaamalla. 483 00:32:43,480 --> 00:32:50,020 Joten 1 ^ 0 aikoo antaa minulle mitä? Yksi. 484 00:32:50,020 --> 00:32:58,430 "'^ Ox20 ei aio antaa minulle? Pieniksi. 485 00:32:58,430 --> 00:33:04,010 "'^ Ox20 ei aio antaa minulle? Capital A. 486 00:33:04,010 --> 00:33:09,310 Koska mitä tämä tekee, tämä XORing kanssa Ox20 487 00:33:09,310 --> 00:33:15,380 tehokkaasti flipping mitä tämä vähän on. 488 00:33:15,380 --> 00:33:21,240 Jos tämä on 0, se on nyt tulossa 1. 489 00:33:21,240 --> 00:33:26,160 Koska tämä on 1, 1 ^ 1 on 0. 490 00:33:26,160 --> 00:33:33,280 Joten meidän "" on tullut "", ja meidän "" on tullut "". 491 00:33:33,280 --> 00:33:36,910 Joten XOR on todella kätevä tapa vain flipping tapauksessa. 492 00:33:36,910 --> 00:33:39,960 Haluat vain kerrata yli merkkijono kirjaimia 493 00:33:39,960 --> 00:33:44,330 ja varajäsenten osalta jokainen yksittäinen merkki, 494 00:33:44,330 --> 00:33:50,680 juuri XOR kaiken Ox20. 495 00:33:50,680 --> 00:33:55,220 >> Nyt olemme vasen muutos. Vasen muutos on juuri menossa, periaatteessa, 496 00:33:55,220 --> 00:34:01,250 työntää kaikki numeroita, tai vasemmalle, ja aseta 0: n takana. 497 00:34:01,250 --> 00:34:05,550 Joten tässä meillä on 00.001.101. 498 00:34:05,550 --> 00:34:08,560 Aiomme ajaa 3 0: n sisään oikealta, 499 00:34:08,560 --> 00:34:13,580 ja saamme 01101000. 500 00:34:13,580 --> 00:34:16,380 Vuonna nonbinary kannalta, 501 00:34:16,380 --> 00:34:24,699 näemme, että se on todella kyse 13 vasemmalle siirtynyt 3, joka antaa meille 104. 502 00:34:24,699 --> 00:34:32,530 Joten vasemmalle siirtyminen, tässä näemme, x << y on pohjimmiltaan x * 2 ^ y. 503 00:34:32,530 --> 00:34:40,139 13 * 2 ^ 3, 2 ^ 3 on 8, joten 13 * 8 104. 504 00:34:40,139 --> 00:34:45,679 Jos vain ajatella binary yleensä, miten kunkin numeron, 505 00:34:45,679 --> 00:34:49,530 jos lähdetään oikein, se on 1 paikka, sitten 2 paikka, sitten 4 paikka. 506 00:34:49,530 --> 00:34:51,330 Joten työntämällä 0: n oikealta, 507 00:34:51,330 --> 00:34:55,080 me vain työntää asioita, jotka olivat 4: n paikka 8 paikka, 508 00:34:55,080 --> 00:34:57,920 ja asiat, jotka olivat 8: n paikka 16 paikka. 509 00:34:57,920 --> 00:35:01,280 Jokainen muutos vain kertoo 2. Joo? 510 00:35:01,280 --> 00:35:05,210 [Opiskelija] Mitä tapahtuu, jos siirtynyt 5? 511 00:35:05,210 --> 00:35:10,790 [Bowden] Jos siirretään 5 olisit vain menettää numeroa. 512 00:35:10,790 --> 00:35:15,410 Väistämättä se on sama asia. Like, kokonaisluvut ovat vain 32 bittiä, 513 00:35:15,410 --> 00:35:20,750 joten jos lisäät 2 todella iso kokonaislukuja, se vain ei sovi kokonaisluku. 514 00:35:20,750 --> 00:35:23,660 Joten se on sama asia täällä. Jos olet siirtynyt 5, 515 00:35:23,660 --> 00:35:25,650 olisimme vain menetä että yksi. 516 00:35:25,650 --> 00:35:28,820 Ja se on sellainen mitä tarkoitan "suunnilleen" 517 00:35:28,820 --> 00:35:37,470 jos jos siirtää liian pitkälle, häviät bittiä. 518 00:35:37,470 --> 00:35:39,830 >> Oikea siirtyminen tulee olemaan päinvastainen, 519 00:35:39,830 --> 00:35:43,090 minne olemme menossa pistää 0: n pois lopussa, 520 00:35:43,090 --> 00:35:48,400 ja meidän tarkoituksiin, täytä 0: n vasemmalta. 521 00:35:48,400 --> 00:35:52,910 Joten Näin olemme pohjimmiltaan peruutettaessa, mitä olimme jo tehneet. 522 00:35:52,910 --> 00:35:57,780 Ja me näemme, että kolme 0: n oikealla juuri pudonnut, 523 00:35:57,780 --> 00:36:02,020 ja olemme työnsi 1101 aina oikeassa. 524 00:36:02,020 --> 00:36:08,380 Tämä tekee 104 >> 3, joka on tehokkaasti, x / 2 ^ y. 525 00:36:08,380 --> 00:36:11,200 Joten nyt täällä, se on samanlainen idea. 526 00:36:11,200 --> 00:36:18,720 Miksi se on vain noin x / 2 ^ y, eikä oikeastaan ​​x / 2 ^ y? 527 00:36:18,720 --> 00:36:22,240 Koska jos olisin siirtynyt 4, olisin menettänyt 1. 528 00:36:22,240 --> 00:36:25,950 Periaatteessa, mitä ajattelet, ajatelkaa kokonaislukujakolasku yleensä. 529 00:36:25,950 --> 00:36:31,070 Joten, kuten 5/2 on 2. Se ei ole 2.5. 530 00:36:31,070 --> 00:36:35,000 Se on sama idea täällä. Kun jaamme 2, 531 00:36:35,000 --> 00:36:39,910 voimme menettää outoa bittiä matkan varrella. 532 00:36:39,910 --> 00:36:43,870 Joten nyt - se on siinä peiton. Siinä kaikki mitä sinun tarvitsee tietää. 533 00:36:43,870 --> 00:36:46,340 Muista käyttää tapauksissa näimme luokassa, 534 00:36:46,340 --> 00:36:49,340 kuten bittimaski on hyödyllinen bittioperaatioiden, 535 00:36:49,340 --> 00:36:53,220 tai voit käyttää niitä bittimaskeja. 536 00:36:53,220 --> 00:36:58,620 Isot kirjaimet ja pienet kirjaimet, tuloksia on melko prototyyppinä. 537 00:36:58,620 --> 00:37:01,640 >> Okei, joten puskurin ylivuoto hyökkäyksiä. 538 00:37:01,640 --> 00:37:05,110 Muistaako kukaan mikä oli vialla tätä toimintoa? 539 00:37:05,110 --> 00:37:10,140 Huomaatko me julisti joukko 12 tavua, 12 merkkiä, 540 00:37:10,140 --> 00:37:18,510 ja sitten me kopioi meidän puskurin 12 merkkiä koko merkkijono baarissa. 541 00:37:18,510 --> 00:37:25,080 Niin mikä on ongelma? 542 00:37:25,080 --> 00:37:32,270 Maaginen numero 12 olisi aika paljon heti pop ulos - miksi 12? 543 00:37:32,270 --> 00:37:35,050 Mitä jos baari sattuu olemaan enemmän kuin 12 merkkiä? 544 00:37:35,050 --> 00:37:41,200 Mitä jos baari on miljoonia merkkiä? 545 00:37:41,200 --> 00:37:46,010 Tässä kysymys on memcpy. Jos baari on riittävän pitkä, 546 00:37:46,010 --> 00:37:50,330 se vain täysin - "c", "c" ei ​​välitä siitä, että se oli vain 12 merkkiä; 547 00:37:50,330 --> 00:37:53,280 "C" ei välitä siitä, että se ei sovi, että monta tavua. 548 00:37:53,280 --> 00:37:58,250 Se vain täysin korvata nieriä, 12 tavua olemme varattu sitä, 549 00:37:58,250 --> 00:38:01,830 ja kaikki ohi sen muistiin, joka ei itse kuulu sen puskurin 550 00:38:01,830 --> 00:38:06,520 kanssa, mitä merkkijono baari on. 551 00:38:06,520 --> 00:38:09,780 Joten tämä oli kuva näimme luokassa 552 00:38:09,780 --> 00:38:12,220 jossa meillä on pino kasvaa. 553 00:38:12,220 --> 00:38:16,040 Sinun pitäisi käyttää näitä kuvia tai tutustua niitä uudelleen. 554 00:38:16,040 --> 00:38:21,260 Meillä on pino kasvaa, muistiosoitteita alkavat 0 yläosassa 555 00:38:21,260 --> 00:38:26,270 ja kasvaa alas pidä 4000000000 alareunassa. 556 00:38:26,270 --> 00:38:28,820 Meillä on joukko "c" jonnekin muistiin, 557 00:38:28,820 --> 00:38:32,260 Sitten meillä on osoitin bar oikealle alla, 558 00:38:32,260 --> 00:38:38,720 ja sitten meillä on tämä tallennettu runko osoitin meidän palautusosoite ja meidän vanhempi rutiini n pino. 559 00:38:38,720 --> 00:38:40,800 Muistakaa, mitä paluu osoite on? 560 00:38:40,800 --> 00:38:45,360 Se kun tärkein kutsuu funktio foo, puhelut toiminto baari, 561 00:38:45,360 --> 00:38:48,100 väistämättä, baari palaa. 562 00:38:48,100 --> 00:38:52,610 Joten kun baari palaa, heidän täytyy tietää, että se tulee takaisin foo että kutsui sitä. 563 00:38:52,610 --> 00:39:01,360 Joten paluu on osoite toiminnon, että se on palata, kun funktio palauttaa. 564 00:39:01,360 --> 00:39:05,830 Syystä, että on tärkeää, että puskurin ylivuoto hyökkäyksiä johtuu siitä, kätevästi, 565 00:39:05,830 --> 00:39:09,580 hakkerit haluaisin muuttaa, että lähettäjän osoite. 566 00:39:09,580 --> 00:39:14,950 Sen sijaan, että menee takaisin foo, aion mennä takaisin sinne, missä hakkeri haluaa minun palata. 567 00:39:14,950 --> 00:39:17,760 Ja sopivasti, jossa hakkeri usein haluaa palata 568 00:39:17,760 --> 00:39:22,400 on alku-puskuria, joka meillä oli alun perin. 569 00:39:22,400 --> 00:39:26,170 Niin huomaa, jälleen, pieni intialainen. 570 00:39:26,170 --> 00:39:28,490 Laite on esimerkki pieni intialainen järjestelmä, 571 00:39:28,490 --> 00:39:34,140 joten kokonaisluku tai osoitin on tallennettu tavua päinvastaiseksi. 572 00:39:34,140 --> 00:39:38,980 Joten tässä näemme - tämä on? Joo. 573 00:39:38,980 --> 00:39:45,660 Näemme Ox80, OxC0, Ox35, OxO8. 574 00:39:45,660 --> 00:39:48,250 Muista heksadesimaaliyksikön? 575 00:39:48,250 --> 00:39:50,640 Emme kääntää heksadesimaaliyksikön Little Indian, 576 00:39:50,640 --> 00:39:56,110 koska 2 heksadesimaaliyksikön muodostavat yhden tavun, ja me kääntää tavua. 577 00:39:56,110 --> 00:40:00,300 Siksi emme säilytä, kuten, 80530CO8. 578 00:40:00,300 --> 00:40:07,520 Me tallentaa sen sijaan, kunkin parin 2 merkkiä, joka alkaa oikealta. 579 00:40:07,520 --> 00:40:10,880 Että osoite viittaa osoitteen alku 580 00:40:10,880 --> 00:40:15,190 meidän puskurin että me itse halusi kopioida ensiksi. 581 00:40:15,190 --> 00:40:19,230 Syystä, että on hyödyllistä siksi, mitä jos hyökkääjä 582 00:40:19,230 --> 00:40:24,100 tapahtui, sen sijaan, että merkkijono, joka oli juuri 583 00:40:24,100 --> 00:40:27,060 harmiton merkkijono kuten nimensä tai jotain, 584 00:40:27,060 --> 00:40:33,900 mitä jos sen sijaan, että jono oli vain joitakin mielivaltaisen koodin 585 00:40:33,900 --> 00:40:38,610 että tekivät mitä he halusivat sen tehdä? 586 00:40:38,610 --> 00:40:45,630 Jotta he voisivat - En voi ajatella mitään siistiä koodia. 587 00:40:45,630 --> 00:40:47,780 Se voi olla mitä tahansa, vaikka. Mikä tahansa tuhoisa koodi. 588 00:40:47,780 --> 00:40:51,440 Jos he halusivat, he voisivat tehdä jotain seg vikoja, mutta se olisi turhaa. 589 00:40:51,440 --> 00:40:54,950 He yleensä tekevät sen hakata järjestelmään. 590 00:40:54,950 --> 00:40:59,930 >> Okei. CS50 kirjasto. 591 00:40:59,930 --> 00:41:04,800 Tämä on pohjimmiltaan getInt, getString, kaikki ne toiminnot tarjosimme sinulle. 592 00:41:04,800 --> 00:41:10,630 Joten meillä on char * merkkijono, ja se on abstraktio, joka me puhalsi pois 593 00:41:10,630 --> 00:41:12,450 jossain vaiheessa lukukauden aikana. 594 00:41:12,450 --> 00:41:18,220 Muista, että merkkijono on vain joukko merkkejä. 595 00:41:18,220 --> 00:41:23,240 Näemme tässä lyhennelmä getString. 596 00:41:23,240 --> 00:41:25,920 Sinun pitäisi muistella sitä muistaa, kuinka se toteutetaan. 597 00:41:25,920 --> 00:41:30,950 Key yksityiskohdat ovat, huomaa saamme yhden merkin kerrallaan 598 00:41:30,950 --> 00:41:34,570 alkaen standardi, joka on aivan kuten meille kirjoittamalla näppäimistöllä. 599 00:41:34,570 --> 00:41:37,890 Joten yhden merkin kerrallaan, ja jos saamme liikaa merkkejä, 600 00:41:37,890 --> 00:41:40,580 joten jos n + 1 on suurempi kuin kapasiteetti, 601 00:41:40,580 --> 00:41:44,140 Sitten meidän on lisättävä kapasiteettia meidän puskurin. 602 00:41:44,140 --> 00:41:47,780 Joten tässä olemme koko kaksinkertaistui meidän puskurin. 603 00:41:47,780 --> 00:41:51,840 Ja se pitää käynnissä, me merkin lisäämiseksi meidän puskuriin 604 00:41:51,840 --> 00:41:56,220 kunnes saamme uutta rataa tai tiedoston loppuun tai mitä tahansa, 605 00:41:56,220 --> 00:41:59,380 missä tapauksessa olemme tehneet merkkijono ja sitten todellinen getString 606 00:41:59,380 --> 00:42:05,120 kutistuu muistia, kuin jos me varattu liikaa muistia se menen takaisin ja kutistuu hieman. 607 00:42:05,120 --> 00:42:08,830 Joten emme näytä sitä, mutta tärkein ajatus on 608 00:42:08,830 --> 00:42:11,960 se on lukea yhden merkin kerrallaan. 609 00:42:11,960 --> 00:42:17,140 Se voi vain lukea koko juttu kerralla, 610 00:42:17,140 --> 00:42:19,550 koska niiden puskuri on vain tietyn koon. 611 00:42:19,550 --> 00:42:26,590 Joten jos merkkijono että se yrittää lisätä puskuriin on liian iso, niin se vuotaa yli. 612 00:42:26,590 --> 00:42:28,940 Joten tässä estämme, että vain lukemalla yhden merkin 613 00:42:28,940 --> 00:42:33,750 kerrallaan ja kasvava aina tarpeen tullen. 614 00:42:33,750 --> 00:42:40,270 Niin getInt ja muut CS50 kirjaston toimintoja on taipumus käyttää getString 615 00:42:40,270 --> 00:42:42,310 niiden toteutukset. 616 00:42:42,310 --> 00:42:45,370 Joten olen korostanut tärkeitä asioita täällä. 617 00:42:45,370 --> 00:42:49,460 Se kehottaa getString saada merkkijono. 618 00:42:49,460 --> 00:42:51,710 Jos getString ole palautuneet muistia, 619 00:42:51,710 --> 00:42:54,270 muistaa, että getString mallocs jotain, joten aina kun soittaa getString 620 00:42:54,270 --> 00:42:57,820 sinun ei pitäisi (käsittämätön) vapauttaa merkkijono että sait. 621 00:42:57,820 --> 00:43:02,870 Joten tässä, jos se ei ole malloc jotain, palaamme INT_MAX kuin vain lippu, että 622 00:43:02,870 --> 00:43:05,650 hei, emme olleet oikeastaan ​​päässyt kokonaisluku. 623 00:43:05,650 --> 00:43:10,830 Sinun pitäisi sivuuttaa, mitä minä käännyn teidän, tai 624 00:43:10,830 --> 00:43:15,540 sinun ei pitäisi kohdella tätä kelvolliseksi syötteeksi. 625 00:43:15,540 --> 00:43:21,360 Lopuksi olettaen, että ei onnistu, käytämme sscanf, että erityistä lippu, 626 00:43:21,360 --> 00:43:23,820 mikä tarkoittaa, ensimmäinen ottelu kokonaisluku, 627 00:43:23,820 --> 00:43:26,770 sitten vastaa mitään merkkejä sen jälkeen kokonaisluku. 628 00:43:26,770 --> 00:43:29,070 Joten huomaa haluamme sen equal 1. 629 00:43:29,070 --> 00:43:32,940 Joten sscanf Palautukset Miten monta ottelua, jos menestyksekkäästi? 630 00:43:32,940 --> 00:43:37,010 Se palaa 1, jos se sovitetaan onnistuneesti kokonaisluku, 631 00:43:37,010 --> 00:43:40,890 se palauttaa 0, jos se ei vastaa kokonaisluku, ja se palaa 2 632 00:43:40,890 --> 00:43:45,920 jos se sopi kokonaisluku, jota seuraa jokin merkki. 633 00:43:45,920 --> 00:43:49,780 Joten huomaat me yritä uudelleen, jos me vastaamaan mitään, mutta 1. 634 00:43:49,780 --> 00:43:55,230 Jos siis otetaan 1, 2, 3, C, tai 1, 2, 3, X, 635 00:43:55,230 --> 00:43:57,400 Sitten 1, 2, 3 ei saa varastoida kokonaisluku, 636 00:43:57,400 --> 00:43:59,620 X saisi säilyttää merkin, 637 00:43:59,620 --> 00:44:06,410 sscanf palaisi 2, ja olisimme yritä, koska me vain haluamme kokonaisluku. 638 00:44:06,410 --> 00:44:09,810 >> Nopeasti puhaltaa läpi HTML, HTTP, CSS. 639 00:44:09,810 --> 00:44:15,340 Hypertext Markup Language on rakenne ja semantiikka web. 640 00:44:15,340 --> 00:44:19,960 Tässä on esimerkki luento, jossa meillä on HTML-tunnisteita. 641 00:44:19,960 --> 00:44:22,110 Meillä on pää tunnisteet, body-tunnisteiden, 642 00:44:22,110 --> 00:44:27,770 meillä on esimerkkejä tyhjiä tunnisteita missä me itse ei tarvitse käynnistää ja sulkea tag, 643 00:44:27,770 --> 00:44:30,820 meidän on vain linkki ja kuva. 644 00:44:30,820 --> 00:44:38,480 Ei ole sulkeminen kuva tag, siellä on vain yksi tunniste, jolla saavutetaan kaiken tag tarvitsee tehdä. 645 00:44:38,480 --> 00:44:41,950 Linkki on esimerkki, näemme, miten voit linkittää CSS, 646 00:44:41,950 --> 00:44:45,910 käsikirjoitus on esimerkki siitä, miten voit linkittää ulkoiseen JavaScript. 647 00:44:45,910 --> 00:44:53,100 Se on melko yksinkertainen, ja muistaa, HTML ei ole ohjelmointikieli. 648 00:44:53,100 --> 00:44:58,250 Täällä, muistan kuinka voisitte määritellä muodossa tai ainakin mitä tämä tekisi? 649 00:44:58,250 --> 00:45:01,740 Tällainen muoto on toimintaa ja menetelmää. 650 00:45:01,740 --> 00:45:06,210 Menetelmiä tulet aina vain nähdä ovat GET ja POST. 651 00:45:06,210 --> 00:45:09,040 Joten on versio, jossa asia saa laittaa URL. 652 00:45:09,040 --> 00:45:11,680 POST on, jos se ei ole laittaa URL. 653 00:45:11,680 --> 00:45:18,520 Sen sijaan tietoja lomakkeesta lisätään enemmän piilotettu HTTP-pyynnön. 654 00:45:18,520 --> 00:45:22,390 Joten tässä, toiminta määrittää, missä HTTP-pyynnön menee. 655 00:45:22,390 --> 00:45:27,490 Mihin se on menossa on google.com / haku. 656 00:45:27,490 --> 00:45:32,890 Menetelmällä. Muista erot GET ja POST, 657 00:45:32,890 --> 00:45:37,200 ja vain sanoa kuten esimerkiksi jos haluat kirjanmerkin jotain. 658 00:45:37,200 --> 00:45:40,660 Et koskaan voi kirjanmerkki POST URL 659 00:45:40,660 --> 00:45:44,970 koska data ei sisälly URL. 660 00:45:44,970 --> 00:45:49,790 >> HTTP, nyt on HTTP-protokolla. 661 00:45:49,790 --> 00:45:54,080 HTTP-protokolla, voit odottaa sen siirtää 662 00:45:54,080 --> 00:45:57,710 Hypertext Markup Language, ja se tekee. 663 00:45:57,710 --> 00:46:00,170 Mutta se myös siirtää kaikki kuvat löydät Webissä, 664 00:46:00,170 --> 00:46:05,400 mitään latauksia teet aloittaa HTTP-pyynnön. 665 00:46:05,400 --> 00:46:10,350 Joten HTTP on vain kieli World Wide Web. 666 00:46:10,350 --> 00:46:15,610 Ja tässä sinun täytyy tunnustaa tällaista HTTP-pyynnön. 667 00:46:15,610 --> 00:46:19,300 Täällä HTTP/1.1 puolella vain sanoo, että versio 668 00:46:19,300 --> 00:46:21,570 Pöytäkirjan Käytän. 669 00:46:21,570 --> 00:46:25,770 Se on oikeastaan ​​aina olemaan HTTP/1.1, niin näet sen. 670 00:46:25,770 --> 00:46:30,110 Sitten näemme, että tämä oli GET, vaihtoehtona on POST, että saatat nähdä. 671 00:46:30,110 --> 00:46:40,790 Ja URL että yritin käydä oli www.google.com/search?q = blaa, blaa, blaa. 672 00:46:40,790 --> 00:46:44,240 Niin muista, että tämä kysymysmerkki q = blah blah blah, 673 00:46:44,240 --> 00:46:49,040 on tällaista tavaraa, joka jättää lomake. 674 00:46:49,040 --> 00:46:51,830 Vastaus saattaa palaa luokseni näyttäisi jotain tällaista. 675 00:46:51,830 --> 00:46:54,050 Jälleen alkaen protokollaa, joka tulee olemaan, että 676 00:46:54,050 --> 00:46:59,190 jonka jälkeen tilan koodi. Tässä se on 200 OK. 677 00:46:59,190 --> 00:47:05,060 Ja lopuksi, web-sivun, että olen itse pyytänyt seurataan. 678 00:47:05,060 --> 00:47:08,210 Mahdollinen tila koodi saatat nähdä, ja sinun pitäisi tietää useita. 679 00:47:08,210 --> 00:47:12,770 200 OK olet luultavasti nähnyt ennen. 680 00:47:12,770 --> 00:47:17,830 403 Forbidden, 404 Not Found, 500 Internal Server Error 681 00:47:17,830 --> 00:47:22,140 on yleensä jos menet verkkosivuilla ja jotain on rikki tai niiden PHP kaatuu, 682 00:47:22,140 --> 00:47:24,930 kun taas laite meillä on tuo iso oranssi laatikko 683 00:47:24,930 --> 00:47:27,830 joka tulee ja sanoo, kuten, jotain on vialla, tämä koodi ei toimi 684 00:47:27,830 --> 00:47:30,380 tai tätä toimintoa huono. 685 00:47:30,380 --> 00:47:33,230 Yleensä sivustot eivät halua sinun tietää, mitkä toiminnot ovat todella huonoja, 686 00:47:33,230 --> 00:47:37,880 joten sen sijaan he vain antaa sinulle 500 Internal Server virheet. 687 00:47:37,880 --> 00:47:43,050 >> TCP / IP on 1 kerros alle HTTP. 688 00:47:43,050 --> 00:47:47,550 Muista, että on Internet ulkopuolella World Wide Web. 689 00:47:47,550 --> 00:47:52,270 Kuten jos pelaat online-peli, joka ei mene läpi HTTP, 690 00:47:52,270 --> 00:47:55,740 se menee läpi erilainen - se on edelleen käytössä Internet, 691 00:47:55,740 --> 00:47:58,900 mutta se ei käytä HTTP. 692 00:47:58,900 --> 00:48:02,470 HTTP on vain yksi esimerkki protokollan rakennettu TCP / IP. 693 00:48:02,470 --> 00:48:07,820 IP tarkoittaa kirjaimellisesti Internet Protocol. 694 00:48:07,820 --> 00:48:11,500 Jokaisella tietokoneella on IP-osoite, ne ovat ne, 4-numeroinen asioita 695 00:48:11,500 --> 00:48:16,510 kuten 192.168.2.1, tai mitä tahansa, joka on yleensä paikallinen yksi. 696 00:48:16,510 --> 00:48:23,390 Mutta joka on mallia IP-osoite. 697 00:48:23,390 --> 00:48:29,060 Joten DNS, Domain Name Service, 698 00:48:29,060 --> 00:48:33,410 sitähän kääntää asioita, kuten google.com on todellinen IP-osoite. 699 00:48:33,410 --> 00:48:37,700 Joten jos kirjoitat, että IP-osoite URL, 700 00:48:37,700 --> 00:48:40,850 joka toisi sinut Google, mutta sinun ei yleensä muistaa niitä asioita. 701 00:48:40,850 --> 00:48:45,470 Sinulla on taipumus muistaa google.com sijaan. 702 00:48:45,470 --> 00:48:51,560 Viimeinen asia, meillä on portteja, jos tämä on TCP osa IP. 703 00:48:51,560 --> 00:48:54,880 TCP tekee enemmän. Ajattele, kuten sinulla on selaimessasi käynnissä. 704 00:48:54,880 --> 00:48:58,670 Ehkä sinulla on joitakin sähköpostiohjelma käynnissä; 705 00:48:58,670 --> 00:49:02,150 Ehkä sinulla on jokin muu ohjelma, joka käyttää Internet käynnissä. 706 00:49:02,150 --> 00:49:05,090 He kaikki tarvitsevat pääsyn internetiin, 707 00:49:05,090 --> 00:49:08,100 mutta tietokone on vain 1 WiFi-kortti tai mitä tahansa. 708 00:49:08,100 --> 00:49:10,780 Joten satamat ovat tapa, että emme voisi jakaa 709 00:49:10,780 --> 00:49:13,550 miten nämä sovellukset voivat käyttää Internetiä. 710 00:49:13,550 --> 00:49:17,230 Jokainen hakemus saa 1 tiettyyn porttiin, että se voi kuunnella, 711 00:49:17,230 --> 00:49:19,670 ja oletuksena, HTTP käyttää porttia 80. 712 00:49:19,670 --> 00:49:22,410 Jotkin sähköpostipalvelut käyttää 25. 713 00:49:22,410 --> 00:49:24,490 Low-numeroidut yleensä pidätetään. 714 00:49:24,490 --> 00:49:29,270 Voinet saada korkeamman numeroidut itse. 715 00:49:29,270 --> 00:49:32,010 >> CSS, Cascading Style Sheets. 716 00:49:32,010 --> 00:49:36,030 Meidän tyyli verkkosivuja CSS, ei HTML. 717 00:49:36,030 --> 00:49:38,440 On 3 paikkaa voit laittaa CSS. 718 00:49:38,440 --> 00:49:46,300 Se voi olla inline, välillä tyyli tunnisteet tai kokonaan erilliseen tiedostoon ja liitetään sisään 719 00:49:46,300 --> 00:49:48,470 Ja tässä on vain esimerkki CSS. 720 00:49:48,470 --> 00:49:50,450 Teidän pitäisi ymmärtää tätä mallia, 721 00:49:50,450 --> 00:49:54,310 jossa ensimmäinen esimerkki on me vastaavia body, 722 00:49:54,310 --> 00:49:56,680 ja tässä olemme keskitys body. 723 00:49:56,680 --> 00:50:00,420 Toisessa esimerkissä olemme matching asia 724 00:50:00,420 --> 00:50:04,740 ID-footer, ja olemme soveltamalla joitakin tyylejä, että. 725 00:50:04,740 --> 00:50:07,310 Huomaa, että ID alatunnistetekstin-tasaa vasemmalle, 726 00:50:07,310 --> 00:50:09,840 ottaa huomioon, että leipäteksti-suoristaa keskustasta. 727 00:50:09,840 --> 00:50:13,180 Footer on kehossa. 728 00:50:13,180 --> 00:50:16,470 Se sen sijaan, text-align jäljellä, vaikka keho sanoo text-align center. 729 00:50:16,470 --> 00:50:18,880 Tämä on koko CSS osa sitä. 730 00:50:18,880 --> 00:50:22,110 Sinulla voi olla - voit määrittää tyylejä kehon, 731 00:50:22,110 --> 00:50:25,320 ja sitten asiat elimistössä voit määrittää tarkempia tyylejä, 732 00:50:25,320 --> 00:50:28,160 ja asiat toimi odotetusti. 733 00:50:28,160 --> 00:50:34,420 Tarkempi CSS suunnittelijat etusijalla. 734 00:50:34,420 --> 00:50:46,140 Minusta se on siinä. 735 00:50:46,140 --> 00:50:49,260 >> [Ali Nahm] Hi everyone. Jos voisin vain saada huomiota. 736 00:50:49,260 --> 00:50:53,990 Olen Ali ja aion käydä läpi PHP ja SQL todella nopeasti. 737 00:50:53,990 --> 00:51:00,310 Joten voimme aloittaa. PHP on lyhenne sanoista PHP: Hypertext Preprocessor. 738 00:51:00,310 --> 00:51:03,730 Ja kuten kaikki pitäisi tietää, se on server-side scripting kieli, 739 00:51:03,730 --> 00:51:06,800 ja käytämme sitä loppupäätä sivustoja, 740 00:51:06,800 --> 00:51:12,540 ja miten se tekee paljon laskelmat, takana-kulissien osa. 741 00:51:12,540 --> 00:51:17,510 Syntax. Se ei ole kuin C, yllätys, yllätys. 742 00:51:17,510 --> 00:51:22,060 Se on aina aloittaa, jos näet, - En voi liikkua eteenpäin. 743 00:51:22,060 --> 00:51:31,340 Näet tarvitset uudenlaisia ​​henkselit ja sitten tarvitset myös? Php. 744 00:51:31,340 --> 00:51:35,780 Se on aina miten sinun pitää kehystää PHP tekstein, PHP-koodin. 745 00:51:35,780 --> 00:51:39,180 Joten se voi vain olla kuin C, jossa sellainen laittaa sen ensin. 746 00:51:39,180 --> 00:51:42,290 Sinun täytyy aina ympäröivät sitä. 747 00:51:42,290 --> 00:51:47,610 Ja nyt, suuri syntaksi on, että kaikki muuttujat on aloitettava $ luonnetta. 748 00:51:47,610 --> 00:51:49,490 Sinun täytyy tehdä sitä, kun olet määrittelemättä niitä, sinun täytyy tehdä se 749 00:51:49,490 --> 00:51:51,860 kun olet viittaavat niihin myöhemmin. 750 00:51:51,860 --> 00:51:56,510 Aina on, että $. Se on sinun uusi paras ystävä, melko paljon. 751 00:51:56,510 --> 00:52:01,690 Sinun ei - toisin kuin C, sinun ei tarvitse laittaa millaisia ​​muuttujan tyyppi se on. 752 00:52:01,690 --> 00:52:04,940 Joten kun et tarvitse $, sinun ei tarvitse laittaa, kuten, 753 00:52:04,940 --> 00:52:09,470 int x tai merkkijono y, jne., jne.. 754 00:52:09,470 --> 00:52:11,490 Joten pieni ero. 755 00:52:11,490 --> 00:52:15,590 Seurauksena tästä, se tarkoittaa, että PHP on heikosti tyyppiä. 756 00:52:15,590 --> 00:52:19,310 PHP on heikosti tyyppi kieli, ja se on heikosti kirjoitettu muuttujia. 757 00:52:19,310 --> 00:52:24,020 Toisin sanoen, se tarkoittaa, että voit vaihtaa erilaisia ​​muuttujatyyppejä. 758 00:52:24,020 --> 00:52:27,230 Voit tallentaa numerolla 1 int, 759 00:52:27,230 --> 00:52:29,650 voit tallentaa sen merkkijono, ja voit tallentaa sen kellua, 760 00:52:29,650 --> 00:52:33,550 ja se kaikki on, että numero 1. 761 00:52:33,550 --> 00:52:36,080 Vaikka olet tallentaa sen eri muodoissa, 762 00:52:36,080 --> 00:52:39,120 se on silti - muuttujatyypeille edelleen jatkavat lopussa. 763 00:52:39,120 --> 00:52:41,540 Joten jos kuulehan, jos muistat PSET 7, 764 00:52:41,540 --> 00:52:43,500 Monet teistä luultavasti ollut ongelmia tämän. 765 00:52:43,500 --> 00:52:47,280 Kaksi yhtäsuuruusmerkit 3 yhtäsuuruusmerkit 4 yhtä merkkejä. 766 00:52:47,280 --> 00:52:49,990 Okei, ei ole 4 yhtäläisyys, mutta on 2 ja 3. 767 00:52:49,990 --> 00:52:53,320 Käytät 2 yhtäsuuruusmerkit tarkistaa arvot. 768 00:52:53,320 --> 00:52:55,830 Se voi tarkistaa koko tyyppiä. 769 00:52:55,830 --> 00:52:58,770 Joten jos voit nähdä ensimmäinen esimerkki, 770 00:52:58,770 --> 00:53:02,210 Minulla on num_int == num_string. 771 00:53:02,210 --> 00:53:06,710 Joten int ja string ovat sekä teknisesti, 1, 772 00:53:06,710 --> 00:53:10,790 mutta he ovat erilaisia. Mutta kaksinkertainen vastaa, se silti kulkea. 773 00:53:10,790 --> 00:53:15,510 Kuitenkin kolminkertainen vastaa, se tarkistaa arvo sekä erilaisia. 774 00:53:15,510 --> 00:53:18,760 Tämä tarkoittaa, että se ei aio siirtää tässä toisessa asiassa, 775 00:53:18,760 --> 00:53:22,350 jos käytät 3 yhtäsuuruusmerkit sijaan. 776 00:53:22,350 --> 00:53:26,590 Niin, että merkittävä ero, että sinun pitäisi kaikki ovat osoittaneet nyt. 777 00:53:26,590 --> 00:53:31,570 >> String ketjutus on toinen voimakas asia voit käyttää PHP. 778 00:53:31,570 --> 00:53:34,080 Se on pohjimmiltaan vain tämä kätevä dot merkintä, 779 00:53:34,080 --> 00:53:36,230 ja niin voit sitoa langat yhteen. 780 00:53:36,230 --> 00:53:40,800 Joten jos sinulla on kissa ja sinulla on koira, ja haluat laittaa 2 langat yhteen, 781 00:53:40,800 --> 00:53:44,080 voit käyttää ajan, ja se on sellainen miten se toimii. 782 00:53:44,080 --> 00:53:46,660 Voit myös laittaa ne vierekkäin, 783 00:53:46,660 --> 00:53:49,030 kuten voitte nähdä täällä pohjan esimerkiksi 784 00:53:49,030 --> 00:53:51,610 jossa olen kaiku merkkijono 1, tilaa merkkijono 2. 785 00:53:51,610 --> 00:53:56,930 PHP tietävät korvata niitä sellaisina. 786 00:53:56,930 --> 00:53:59,780 Taulukot. Nyt, PHP, on olemassa 2 erilaista paneelit. 787 00:53:59,780 --> 00:54:03,180 Voit säännöllisesti taulukoita, ja voit myös assosiatiivisia taulukoita, 788 00:54:03,180 --> 00:54:06,040 ja aiomme käydä läpi niitä juuri nyt. 789 00:54:06,040 --> 00:54:08,280 Säännöllinen paneelit ovat vain tämän C, 790 00:54:08,280 --> 00:54:11,240 ja niin sinulla on indeksien numeroitu. 791 00:54:11,240 --> 00:54:13,160 Juuri nyt me vain odotamme luoda yksi ja laittaa - 792 00:54:13,160 --> 00:54:15,500 joten tämä on, miten luomme tyhjä array, niin aiomme 793 00:54:15,500 --> 00:54:17,310 panna indeksin numero 0. 794 00:54:17,310 --> 00:54:19,200 Aiomme laittaa numero 6, arvo 6. 795 00:54:19,200 --> 00:54:21,500 Voit nähdä sen alareunassa täällä. 796 00:54:21,500 --> 00:54:24,240 Where's - klo indeksin numero 1 aiomme laittaa arvo 4, 797 00:54:24,240 --> 00:54:26,720 ja niin voit nähdä siellä 6, siellä on 4, 798 00:54:26,720 --> 00:54:29,160 ja sitten kun olemme tulostus asioita, 799 00:54:29,160 --> 00:54:33,550 kun yritämme ja tulostaa tallennettu arvo indeksin numero 0, 800 00:54:33,550 --> 00:54:36,900 Sitten näemme arvo 6 tulostetaan ulos. Cool? 801 00:54:36,900 --> 00:54:40,160 Niin, että säännöllinen paneelit sinulle. 802 00:54:40,160 --> 00:54:42,750 Toinen tapa voit myös lisätä asioita säännöllisesti paneelit nyt 803 00:54:42,750 --> 00:54:44,780 on, voit vain liittää ne lopussa. 804 00:54:44,780 --> 00:54:47,240 Tämä tarkoittaa, että sinun ei tarvitse määrittää tietyn indeksin. 805 00:54:47,240 --> 00:54:51,000 Näet numeron, ja sitten hakasulkeissa ei ole indeksiä määritelty. 806 00:54:51,000 --> 00:54:56,270 Ja se tietää - PHP tietävät vain lisää se listan loppuun, seuraava vapaa paikka. 807 00:54:56,270 --> 00:54:59,190 Voit siis nähdä 1 oikeassa tuossa 0 paikalla, 808 00:54:59,190 --> 00:55:02,690 2 meni tuolla ensimmäisellä paikalla. 809 00:55:02,690 --> 00:55:04,690 3 menee - lisätään myös siellä. 810 00:55:04,690 --> 00:55:06,720 Niin tuollainen järkevää. Olet vain jatkuvasti lisäämällä sitä, 811 00:55:06,720 --> 00:55:09,360 ja sitten kun olemme kaikuvat indeksi numero 1, 812 00:55:09,360 --> 00:55:13,080 se tulostaa arvon 2. 813 00:55:13,080 --> 00:55:16,800 >> Sitten meillä on paneelit, jotka ovat assosiatiivisia taulukoita. 814 00:55:16,800 --> 00:55:19,370 Assosiatiiviset taulukot sen sijaan, numeeristen, 815 00:55:19,370 --> 00:55:23,630 mitä he tekevät on, ne ovat indeksit, jotka ovat merkkijono. 816 00:55:23,630 --> 00:55:25,670 Näet sijasta - Pääsin eroon kaikista niistä numero indeksit, 817 00:55:25,670 --> 00:55:32,140 ja nyt se on key1, AV.2, KEY3, ja he lainausmerkkeihin merkiksi siitä, että he ovat kaikki kielet. 818 00:55:32,140 --> 00:55:34,470 Jotta voimme olla esimerkki tästä. 819 00:55:34,470 --> 00:55:38,790 Esimerkki tästä on se, että meillä on tf, ja se on indeksin nimi. 820 00:55:38,790 --> 00:55:42,030 Aiomme laittaa "Ali", kuten nimi, on indeksi, kalorit syönyt, 821 00:55:42,030 --> 00:55:47,640 voimme laittaa int tällä kertaa sijaan merkkijonon, 822 00:55:47,640 --> 00:55:52,240 ja sitten indeksi tykkää, voimme laittaa koko ryhmän sisälle. 823 00:55:52,240 --> 00:55:55,490 Joten tämä on tavallaan - se on samanlainen käsite miten meillä oli 824 00:55:55,490 --> 00:55:58,930 indeksit numeroita, mutta nyt voimme muuttaa indeksien ympärillä 825 00:55:58,930 --> 00:56:03,890 on ne jouset sijaan. 826 00:56:03,890 --> 00:56:06,070 Voit myös tehdä tämän lisäksi juuri tekemässä sitä erikseen, 827 00:56:06,070 --> 00:56:09,400 voit tehdä sen kaikki yhdessä murikka. Voit siis nähdä, että TF kyseisen array, 828 00:56:09,400 --> 00:56:13,350 ja sitten asetamme ne kaikki yhdellä jättiläinen hakasulkeen asetettu. 829 00:56:13,350 --> 00:56:15,220 Jotta voidaan nopeuttaa asioita. 830 00:56:15,220 --> 00:56:19,730 Se on enemmän tyylillinen vaihtoehto kuin ei. 831 00:56:19,730 --> 00:56:21,550 Meillä on myös silmukoita. 832 00:56:21,550 --> 00:56:26,020 C meillä on lenkit, jotka toimivat näin. 833 00:56:26,020 --> 00:56:29,690 Meillä oli jono, ja menimme indeksistä 0 listan loppuun, 834 00:56:29,690 --> 00:56:31,740 ja me tulostaa sen kaiken, eikö? 835 00:56:31,740 --> 00:56:33,880 Paitsi ongelma on, sillä assosiatiivinen taulukot, 836 00:56:33,880 --> 00:56:36,610 emme välttämättä tiedä näiden numeeristen 837 00:56:36,610 --> 00:56:39,610 koska nyt meillä on merkkijono indeksit. 838 00:56:39,610 --> 00:56:44,800 Nyt käytämme foreach silmukoita, joka taas et toivottavasti käytetään PSET 7. 839 00:56:44,800 --> 00:56:48,930 Foreach silmukoita vain tietää jokainen osa luettelon. 840 00:56:48,930 --> 00:56:52,450 Ja se ei tarvitse tietää tarkalleen Numeroindeksi että sinulla on. 841 00:56:52,450 --> 00:56:56,490 Joten sinulla on foreach syntaksin, joten se on foreach, laitat array. 842 00:56:56,490 --> 00:57:00,430 Joten minun array kutsutaan PSET, ja sitten, sanaa, 843 00:57:00,430 --> 00:57:04,530 ja sitten laitat tämän paikallisen väliaikainen muuttuja, joka aiot käyttää 844 00:57:04,530 --> 00:57:10,690 vain erityinen asia, joka aikoo järjestää erityisiä - 845 00:57:10,690 --> 00:57:14,770 Yhdessä tapauksessa tai yksi osa array. 846 00:57:14,770 --> 00:57:18,350 Pset num järjestää 1, ja sitten ehkä se pitää numero 6, 847 00:57:18,350 --> 00:57:20,410 ja sitten se pitää numero 2. 848 00:57:20,410 --> 00:57:26,630 Mutta se on taatusti käydä läpi jokainen arvo, joka on jono. 849 00:57:26,630 --> 00:57:30,530 Hyödyllisiä toimintoja, että sinun pitäisi tietää, PHP ovat vaativat, 850 00:57:30,530 --> 00:57:35,880 niin että tekee varma, että olet myös tiettyjä tiedostoja, kaiku, exit, tyhjä. 851 00:57:35,880 --> 00:57:40,490 Suosittelen katsomaan PSET 7 ja katsoa kyseisiä toimintoja. 852 00:57:40,490 --> 00:57:42,810 Saatat joutua tietää niistä, 853 00:57:42,810 --> 00:57:47,060 niin olisin varmasti tietää mitä tarkalleen ottaen nämä kaikki menee. 854 00:57:47,060 --> 00:57:50,080 >> Ja nyt me aiomme käydä läpi soveltamisalan todella nopeasti. 855 00:57:50,080 --> 00:57:53,490 Laajuudeltaan, PHP on eräänlainen funky asia, toisin kuin C, 856 00:57:53,490 --> 00:57:56,170 ja niin me vain mene läpi se nopeasti. 857 00:57:56,170 --> 00:57:58,930 Joten sanokaamme aloitamme että nuoli, että meillä on siellä. 858 00:57:58,930 --> 00:58:02,900 Ja aiomme aloittaa $ i. Joten muuttujan 'i' tulee olemaan 0, 859 00:58:02,900 --> 00:58:06,730 ja me vain aio pitää tulostaa sen, että iso valkoinen laatikko tuolla. 860 00:58:06,730 --> 00:58:09,220 Aiomme aloittaa i0, ja sitten me aiomme yhtyä siihen. 861 00:58:09,220 --> 00:58:12,670 Joten ei 0. 862 00:58:12,670 --> 00:58:15,210 Ja sitten me aiomme kasvattaa sitä varten silmukka, 863 00:58:15,210 --> 00:58:17,810 ja sitten se tulee olemaan arvo 1. 864 00:58:17,810 --> 00:58:20,070 Yksi on alle 3, joten se menee läpi, että silmukka, 865 00:58:20,070 --> 00:58:23,230 ja sitten me aiomme nähdä sen painettu uudelleen. 866 00:58:23,230 --> 00:58:25,520 Me aiomme kasvattaa sitä uudelleen 2, 867 00:58:25,520 --> 00:58:29,860 ja 2 on alle 3, joten se menee ohi silmukka, ja se tulee tulostaa 2. 868 00:58:29,860 --> 00:58:35,100 Tulet huomata, että 3 on vähintään 3, niin me murtautumaan ulos silmukan. 869 00:58:35,100 --> 00:58:40,050 Joten nyt olemme lähtenyt, ja sitten me aiomme mennä ATOIMINTA. 870 00:58:40,050 --> 00:58:45,010 Okei. Niin sinun täytyy huomata, että tämä muuttuja että olemme luoneet, 871 00:58:45,010 --> 00:58:48,270 'i' muuttuja, ei paikallisesti scoped. 872 00:58:48,270 --> 00:58:50,280 Tämä tarkoittaa, että se ei ole paikallista aikaa silmukka, 873 00:58:50,280 --> 00:58:58,060 ja että muuttuva voimme vielä käyttää ja muuttaa jälkeenpäin, ja se on silti tehokas. 874 00:58:58,060 --> 00:59:02,160 Joten jos menet toiminnon nyt, huomaat, että käytämme myös "i" muuttuja, 875 00:59:02,160 --> 00:59:05,320 ja aiomme kasvattaa 'i' + +. 876 00:59:05,320 --> 00:59:09,410 Luulisi, aluksi, joka perustuu C, että se on kopio "i" muuttuja. 877 00:59:09,410 --> 00:59:12,830 Se on täysin eri asia, mikä on oikein. 878 00:59:12,830 --> 00:59:16,560 Joten kun me painamme sitä, me aiomme tulostaa 'i' + +, joka tulee tulostaa, että 4, 879 00:59:16,560 --> 00:59:19,640 ja sitten me aiomme - sorry. 880 00:59:19,640 --> 00:59:22,030 Sitten me aiomme lopettaa ulos tämän tehtävän, 881 00:59:22,030 --> 00:59:24,820 ja me aiomme olla siellä missä että nuoli on juuri nyt. 882 00:59:24,820 --> 00:59:29,190 Tämä tarkoittaa, että sen jälkeen, kuitenkin, vaikka toiminto muuttunut arvosta "i", 883 00:59:29,190 --> 00:59:32,620 se ei muuta funktion ulkopuolella, 884 00:59:32,620 --> 00:59:35,060 koska toiminto on erillinen soveltamisala. 885 00:59:35,060 --> 00:59:38,960 Tämä tarkoittaa, että kun me echo 'i', se ei ole muuttunut soveltamisalaan toiminto, 886 00:59:38,960 --> 00:59:43,660 ja niin sitten me aiomme tulostaa 3 uudelleen. 887 00:59:43,660 --> 00:59:47,520 Eri asioita soveltamisala PHP kuin C. 888 00:59:47,520 --> 00:59:51,130 >> Nyt PHP ja HTML. 889 00:59:51,130 --> 00:59:53,510 PHP on käytetty tehdä web-sivuja dynaamista. 890 00:59:53,510 --> 00:59:58,660 Se ikään kuin tekee asiat toisin. 891 00:59:58,660 --> 01:00:02,090 Meillä on se eroaa HTML. 892 01:00:02,090 --> 01:00:05,230 HTML, meillä on aina vain sama staattinen asia, kuten miten Rob osoitti, 893 01:00:05,230 --> 01:00:09,370 katsoo PHP, voit muuttaa asioita perustuu kuka käyttäjä on. 894 01:00:09,370 --> 01:00:11,830 Joten jos minulla on tämä, olen, "Olet kirjautunut sisään nimellä -" ja sitten nimi, 895 01:00:11,830 --> 01:00:14,420 ja voin vaihtaa nimeä. Joten nyt nimi on Joseph, 896 01:00:14,420 --> 01:00:18,880 ja se on "minusta", mutta voin myös vaihtaa nimensä on Tommy. 897 01:00:18,880 --> 01:00:21,700 Ja se olisi eri asia. 898 01:00:21,700 --> 01:00:23,840 Niin sitten voimme myös muuttaa eri asioita hänestä, 899 01:00:23,840 --> 01:00:27,070 ja se näyttää eri sisältöä nimen perusteella. 900 01:00:27,070 --> 01:00:31,430 Joten PHP voi tavallaan muuttaa mitä tapahtuu sivustoosi. 901 01:00:31,430 --> 01:00:33,540 Sama täällä. Edelleen on huomattava, että niillä on eri sisältö, 902 01:00:33,540 --> 01:00:38,870 vaikka olet teknisesti käyttää yhä saman sivun pinnalla. 903 01:00:38,870 --> 01:00:43,450 Tuottaa HTML. On 2 eri tapoja, joilla voit tehdä tämän. 904 01:00:43,450 --> 01:00:48,980 Joten me menemme läpi juuri nyt. Ensimmäinen tapa on, sinulla on - Joo, anteeksi. 905 01:00:48,980 --> 01:00:51,150 Joten sinun tarvitsee vain tavallisia silmukka PHP, 906 01:00:51,150 --> 01:00:56,270 ja sitten kaiku PHP ja olet kaiku ulos HTML. 907 01:00:56,270 --> 01:00:58,720 Käyttäen mitä Rob osoitti sinulle HTML script 908 01:00:58,720 --> 01:01:04,030 ja sitten käyttämällä PHP tulostaa vain tulostaa sen sivun. 909 01:01:04,030 --> 01:01:09,520 Vaihtoehtoinen tapa on tehdä se kuin jos erottaa PHP ja HTML. 910 01:01:09,520 --> 01:01:11,940 Joten voit olla rivi PHP, joka alkaa silmukka, 911 01:01:11,940 --> 01:01:16,020 niin voit olla rivi HTML erillisessä asia, 912 01:01:16,020 --> 01:01:19,700 ja sitten lopetat silmukka, jälleen, ja PHP. 913 01:01:19,700 --> 01:01:21,800 Joten se on tavallaan erottamalla se pois. 914 01:01:21,800 --> 01:01:24,020 Vasemmalla puolella, voit että sinulla on kaikki - 915 01:01:24,020 --> 01:01:26,360 se on vain 1 murikka PHP. 916 01:01:26,360 --> 01:01:28,510 Oikealla näet, että sinulla on rivi PHP, 917 01:01:28,510 --> 01:01:32,540 sinulla on rivi HTML, ja sinulla on rivi PHP uudelleen. 918 01:01:32,540 --> 01:01:36,870 Joten erottamalla sen ulos, mitä he tekevät. 919 01:01:36,870 --> 01:01:39,330 Ja voit huomata, että joko tavalla, joko niistä, 920 01:01:39,330 --> 01:01:41,980 he silti tulostaa kuvan, kuva, kuva, 921 01:01:41,980 --> 01:01:44,540 niin, että HTML vielä tulostetaan samalla tavalla. 922 01:01:44,540 --> 01:01:49,870 Ja sitten näet yhä 3 kuvaa näy sivustossasi. 923 01:01:49,870 --> 01:01:52,820 Joten se on 2 eri tapoja tehdä sama asia. 924 01:01:52,820 --> 01:01:55,060 >> Nyt meillä on muotoja ja pyyntöjä. Kuten Rob osoitti sinua, 925 01:01:55,060 --> 01:01:59,400 on olemassa muotoja HTML, ja me vain tuulta läpi tätä. 926 01:01:59,400 --> 01:02:02,040 Sinulla on toimintaa ja sinulla on menetelmä, ja toiminta 927 01:02:02,040 --> 01:02:04,350 sellainen näyttää, missä olet menossa lähettää sen, ja menetelmä on, onko 928 01:02:04,350 --> 01:02:06,960 se tulee olemaan GET tai POST. 929 01:02:06,960 --> 01:02:11,220 Ja GET-pyyntöä, kuten Rob sanoi, tarkoittaa, että aiot laittaa sen muodossa 930 01:02:11,220 --> 01:02:15,760 ja näet sen URL-osoitteen, kun taas POST pyyntö et näe URL. 931 01:02:15,760 --> 01:02:17,840 Joten pieni ero. 932 01:02:17,840 --> 01:02:19,950 Kuitenkin yksi asia, joka on samanlainen asia 933 01:02:19,950 --> 01:02:22,560 on, että POST ja GET ovat yhtä epävarmoja. 934 01:02:22,560 --> 01:02:26,430 Joten saatat ajatella, että vain koska et näe sitä URL, 935 01:02:26,430 --> 01:02:28,790 se tarkoittaa, että POST on turvallisempi, 936 01:02:28,790 --> 01:02:34,420 mutta voit silti nähdä se teidän evästeet tietoja, jotka olet lähettämässä. 937 01:02:34,420 --> 01:02:38,260 Joten en usko, että noin yksi tai toisella. 938 01:02:38,260 --> 01:02:42,160 Toinen huomioitava asia on se, että sinulla on myös kohta muuttujia. 939 01:02:42,160 --> 01:02:45,850 Te käytetty tätä PSET 7 saat käyttäjätunnuksen tietoja. 940 01:02:45,850 --> 01:02:48,550 Mitä tapahtui oli se, että voit käyttää tätä assosiatiivisia array, 941 01:02:48,550 --> 01:02:53,310 $ _SESSION, ja sitten pystyt käyttämään eri asioita 942 01:02:53,310 --> 01:02:57,720 ja tallentaa eri asioita eri puolilla sivua. 943 01:02:57,720 --> 01:03:00,750 >> Viimeinen asia on, että meillä on SQL, Structured Query Language, 944 01:03:00,750 --> 01:03:04,360 ja tämä on ohjelmointikieli hallita tietokantoja. 945 01:03:04,360 --> 01:03:08,220 Mitä tarkalleen ottaen ovat tietokantoja? He ovat kokoelmia taulukoita, 946 01:03:08,220 --> 01:03:10,630 ja jokainen pöytä voi olla samanlaisen esineitä. 947 01:03:10,630 --> 01:03:14,990 Joten meillä oli taulukko käyttäjien oman rahoituksen PSET. 948 01:03:14,990 --> 01:03:20,610 Ja miksi ne ovat hyödyllisiä? Koska se on tapa pysyvästi tallentaa tietoa. 949 01:03:20,610 --> 01:03:22,840 Se on tapa seurata asioita ja hallita asioita 950 01:03:22,840 --> 01:03:25,890 ja todella nähdä sen eri sivuilla ja pitää kirjaa. 951 01:03:25,890 --> 01:03:29,930 Kun taas jos vain tallentaa sitä, että yksi välittömästi hetki 952 01:03:29,930 --> 01:03:33,720 ja sitten käyttää sitä myöhemmin, et voi käyttää mitään, että olet tallentanut. 953 01:03:33,720 --> 01:03:37,660 Meillä on 4 suurta asiaa, joita käytämme SQL komentoja. 954 01:03:37,660 --> 01:03:40,190 Meillä on valita, lisätä, poistaa ja päivittää. 955 01:03:40,190 --> 01:03:42,880 Nämä ovat todella tärkeitä te tietää tietokilpailun. 956 01:03:42,880 --> 01:03:45,990 >> Me nopeasti mennä yli valitse juuri nyt. 957 01:03:45,990 --> 01:03:48,540 Periaatteessa olet valitsemalla rivejä tietokannasta. 958 01:03:48,540 --> 01:03:52,400 Joten jos sinulla on, täällä - 959 01:03:52,400 --> 01:03:56,740 meillä on nämä 2 eri asioita, ja haluamme valita luokat taulukko 960 01:03:56,740 --> 01:04:01,480 jossa mahtava - missä mahtava sarakkeen arvo on 1. 961 01:04:01,480 --> 01:04:04,460 Niin näet täällä, meillä on nämä 2 asiat luokan nimi, 962 01:04:04,460 --> 01:04:08,490 CS50 ja Stat110, ja meillä on luokkatunnukset ja iskulause. 963 01:04:08,490 --> 01:04:13,150 Joten haluamme valita kaikki nämä tiedot. 964 01:04:13,150 --> 01:04:17,480 Niin näet täällä, että se on tavallaan poiminta tuon mahtava sarakkeessa 965 01:04:17,480 --> 01:04:25,170 jossa kaikki asiat ovat 1, ja sitten se on luokan tunnus, luokan nimi ja iskulause, että se voi poimia. 966 01:04:25,170 --> 01:04:28,100 Miten tarkalleen tehdä tämän koodin? Sinun täytyy käyttää PHP. 967 01:04:28,100 --> 01:04:33,830 Niin, että on tavallaan miten PHP ja SQL liittyvät toisiinsa. 968 01:04:33,830 --> 01:04:38,130 Nyt meillä on koodi, ja aiomme käyttää hakutoiminto 969 01:04:38,130 --> 01:04:41,370 kuten teimme PSET 7, ja aiomme ajaa SQL-kyselyn. 970 01:04:41,370 --> 01:04:43,870 Sitten me aiomme olla - 971 01:04:43,870 --> 01:04:46,280 meillä on aina tarkistaa, jos rivin kolminkertainen yhtä jos epätosi. 972 01:04:46,280 --> 01:04:49,010 Joten jälleen, haluat tarkistaa tyyppi ja arvo, 973 01:04:49,010 --> 01:04:53,880 ja sitten jos se ei toimi, niin haluat pyytää anteeksi, kuten tavallista, kuten teimme PSET 7. 974 01:04:53,880 --> 01:04:55,870 Muuten haluat silmukan läpi kaiken kanssa ne käteviä 975 01:04:55,870 --> 01:04:59,410 foreach silmukoita, että me vain meni yli. 976 01:04:59,410 --> 01:05:01,280 Nyt kun olemme läpiohjaus ja olemme tehneet sen ohi, 977 01:05:01,280 --> 01:05:05,080 Oletetaan, että meidän kyselyn kulunut, nyt meillä on foreach silmukka. 978 01:05:05,080 --> 01:05:11,050 Ja ensimmäinen rivi se on, joten tässä on rivi, täällä, se on boxed. 979 01:05:11,050 --> 01:05:14,010 Se tulee tulostaa kaikki tiedot, jotka se on mennyt. 980 01:05:14,010 --> 01:05:18,070 Joten se tulee tulostaa alareunassa "Wanna Learn HTML?" 981 01:05:18,070 --> 01:05:23,370 Sitten se tulee mennä seuraavalle riville, koska se on valmistunut ensimmäinen silmukka, 982 01:05:23,370 --> 01:05:26,510 ja niin sitten se tulee tulostaa toisella rivillä sitä, 983 01:05:26,510 --> 01:05:32,120 joka tulee olemaan STAT110, Etsi kaikki Moments. 984 01:05:32,120 --> 01:05:34,290 >> Viimeinen asia on SQL haavoittuvuudet. 985 01:05:34,290 --> 01:05:37,300 Tiedän David kosketti tätä hieman luento. 986 01:05:37,300 --> 01:05:40,730 Voit lukea tämän myöhemmin. Se on todella hauska. 987 01:05:40,730 --> 01:05:45,320 SQL Injection on tavallaan hankala asia. 988 01:05:45,320 --> 01:05:49,890 Oletetaan, että olet vain kiinni nämä muuttujat oikeus omaan kyselyn, 989 01:05:49,890 --> 01:05:52,290 kuten näette, että ensimmäisellä rivillä. 990 01:05:52,290 --> 01:05:54,520 Niin se näyttää hyvin, eikö? Olet vain ottamassa käyttäjätunnus 991 01:05:54,520 --> 01:05:58,820 ja salasanan SQL-kyselyn, ja haluat lähettää sen pois ja saada mitä on tietosi pöytä. 992 01:05:58,820 --> 01:06:01,450 Tämä vaikuttaa melko yksinkertainen. Joten avulla sanoa joku antaa oivan, 993 01:06:01,450 --> 01:06:04,910 salasanaa, tämä tai tekstiä täällä - 994 01:06:04,910 --> 01:06:06,780 pitäisi oikeastaan ​​olla punainen laatikko. 995 01:06:06,780 --> 01:06:11,920 Joten sanotaan, että ne laittaa, että salasana - sitähän ne tulevat. 996 01:06:11,920 --> 01:06:16,520 Joten he laskemisesta tai "1" = 1. 997 01:06:16,520 --> 01:06:20,880 Sellainen typerä salasana on. 998 01:06:20,880 --> 01:06:25,070 Nyt vain korvata sitä, ja sinun huomata, että kyseisessä SQL kyselyn nyt 999 01:06:25,070 --> 01:06:29,090 se arvioi aina totta, koska sinun huomata, että 1000 01:06:29,090 --> 01:06:32,240 voit SQL-kysely valita kaiken tämän tiedon 1001 01:06:32,240 --> 01:06:35,420 tai voit vain 1 = 1. 1002 01:06:35,420 --> 01:06:41,030 Niin, että on aina menossa on tosi. 1003 01:06:41,030 --> 01:06:46,610 Se ei tule todellakaan toimi, koska se tarkoittaa, että hakkeri voi murtautua järjestelmään. 1004 01:06:46,610 --> 01:06:49,300 Ratkaisu tähän on, että sinun täytyy käyttää SAN-järjestelmä, 1005 01:06:49,300 --> 01:06:51,360 mikä tarkoittaa, että sinun täytyy käyttää kysymysmerkkejä, 1006 01:06:51,360 --> 01:06:53,350 joka on mitä te käytetty PSET 7, 1007 01:06:53,350 --> 01:06:57,620 jos aiot käyttää kysymysmerkki sijasta, johon haluat laittaa jotain, 1008 01:06:57,620 --> 01:07:01,430 ja sitten olet menossa on pilkku, ja sitten sinulla on jälkeenpäin, 1009 01:07:01,430 --> 01:07:07,610 jälkeen merkkijono, eri muuttujia, jotka haluat korvata omaan kysymysmerkki. 1010 01:07:07,610 --> 01:07:10,330 Joten voit huomata tässä, että nyt minulla on nämä punaiset kysymysmerkkejä. 1011 01:07:10,330 --> 01:07:15,420 Sitten laitoin muuttujat jälkeen kieliäni joten tiedän korvata ne tässä järjestyksessä jälkeenpäin. 1012 01:07:15,420 --> 01:07:18,470 Joka varmistaa, että jos joku tekee sen näin, 1013 01:07:18,470 --> 01:07:24,050 ja niillä on tai 1 = 1 tilanne, joka varmistaa, 1014 01:07:24,050 --> 01:07:30,490 loppupäätä, varmista, että se ei oikeastaan ​​murtaa SQL-kyselyn. 1015 01:07:30,490 --> 01:07:33,660 Okei, niin se on aika paljon se, tornado PHP ja SQL. 1016 01:07:33,660 --> 01:07:41,520 Onnea kaikille teille, ja nyt Ore 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] Okei kaikille. Aika mennä yli joitakin JavaScript 1018 01:07:44,270 --> 01:07:48,840 ja joitakin muita asioita hyvin nopeasti, joten meidän ei pidä sinua tänä iltana. 1019 01:07:48,840 --> 01:07:56,930 JavaScript. Kyllä. JavaScript on sellainen kova juttu, muka. 1020 01:07:56,930 --> 01:07:59,090 Mitä todella tarvitsee tietää JavaScript, se on tavallaan kuin 1021 01:07:59,090 --> 01:08:03,810 client-side päähän mitä web-sovellus aiotaan tehdä. 1022 01:08:03,810 --> 01:08:08,280 On joitakin asioita, sinun vain halua huolehtia koko ajan palvelimen puolella. 1023 01:08:08,280 --> 01:08:12,880 Kaikki vähän vuorovaikutusta, korostaen yksi asia, jonkin kadottaminen. 1024 01:08:12,880 --> 01:08:15,340 Et todellakaan halua olla puhua palvelimelle kaikkien aikaa. 1025 01:08:15,340 --> 01:08:18,069 Ja osa, joka ei ole edes mahdollista tehdä palvelimen puolella. 1026 01:08:18,069 --> 01:08:21,899 Siksi me tarvitsemme jotain JavaScript. 1027 01:08:21,899 --> 01:08:24,359 Cool asioita JavaScript: Se on dynaamisesti kirjoitetaan. 1028 01:08:24,359 --> 01:08:27,149 Mitä tämä tarkoittaa sitä, että ohjelmaa ei tarvitse tietää 1029 01:08:27,149 --> 01:08:30,970 mitä tarkalleen ottaen muuttujat ovat, kun kirjoittaa sen ulos. 1030 01:08:30,970 --> 01:08:34,510 Se vain eräänlainen tajuta se, koska se on käynnissä. 1031 01:08:34,510 --> 01:08:37,520 Muita asioita, jotka ovat viileitä siitä: Se on kihara ahdin kieli, 1032 01:08:37,520 --> 01:08:41,359 mikä tarkoittaa syntaksi on samanlainen kuin C ja PHP. 1033 01:08:41,359 --> 01:08:47,050 Sinun ei tarvitse tehdä paljon muokata, kun opettelet JavaScript. 1034 01:08:47,050 --> 01:08:49,180 Täällä meillä on hieman JavaScript. 1035 01:08:49,180 --> 01:08:52,560 Mielenkiintoista tässä on, että jos tarkastellaan sitä, 1036 01:08:52,560 --> 01:08:56,330 meillä on hieman JavaScript tuolla pään tag. 1037 01:08:56,330 --> 01:08:59,479 Mikä on se on pohjimmiltaan vain sisällyttää JavaScript-tiedoston. 1038 01:08:59,479 --> 01:09:02,260 Tämä on yksi tapa voit sisällyttää JavaScript-ohjelmaan. 1039 01:09:02,260 --> 01:09:06,910 Sitten toinen hieman on oikeastaan ​​rivinsisäinen JavaScript, 1040 01:09:06,910 --> 01:09:10,790 hyvin samankaltainen inline tyyliin CSS, 1041 01:09:10,790 --> 01:09:16,180 ja olet vain kirjallisesti joitakin koodi hyvin nopeasti siellä. 1042 01:09:16,180 --> 01:09:18,120 JavaScript on taulukot. 1043 01:09:18,120 --> 01:09:20,850 Vain yksi tapa pitää tiedot noin, erittäin hyödyllinen. 1044 01:09:20,850 --> 01:09:25,180 Erittäin mukava ja helppo syntaksi. 1045 01:09:25,180 --> 01:09:29,870 Käytät hakasuluissa tutustua kaikkeen ja pitää kaiken yhdessä. 1046 01:09:29,870 --> 01:09:35,020 Ei mitään liian monimutkaista. 1047 01:09:35,020 --> 01:09:38,630 Cool juttu Javascript ja ohjelmointikieliä yleensä 1048 01:09:38,630 --> 01:09:40,920 on, että sinun ei tarvitse huolehtia array kokoa. 1049 01:09:40,920 --> 01:09:43,880 Voit vain käyttää array.length ja seurata sitä, 1050 01:09:43,880 --> 01:09:46,960 ja myös array voi kasvaa tai kutistua, kun tarvitset sitä. 1051 01:09:46,960 --> 01:09:49,279 Joten sinun ei edes tarvitse pelätä minkäänlaista, 1052 01:09:49,279 --> 01:09:57,050 Voi ei, minun täytyy jakaa enemmän asioita, tai jotain sellaista. 1053 01:09:57,050 --> 01:10:00,090 >> Cool juttu tässä on, että JavaScript on jotain kutsutaan esineitä. 1054 01:10:00,090 --> 01:10:04,800 Se on olio-ohjelmointikieli, niin mitä se on on pohjimmiltaan 1055 01:10:04,800 --> 01:10:10,100 tapa, jolla voit ryhmitellä tietoja yhdessä, hieman samanlainen struct, 1056 01:10:10,100 --> 01:10:17,280 mutta voit käyttää sitä kuin struct tai assosiatiivisia array syntaksin. 1057 01:10:17,280 --> 01:10:22,520 Se on melko yksinkertainen ja mitä voit tehdä tämä on ryhmän tietojen yhdessä 1058 01:10:22,520 --> 01:10:24,810 jos sinulla on joukko tietoja, jotka ovat sukua. 1059 01:10:24,810 --> 01:10:26,850 Koska se on kaikki mitä tarvitset kuvata auton, 1060 01:10:26,850 --> 01:10:29,050 sinun ei tarvitse olla se joukko eri paikoissa. 1061 01:10:29,050 --> 01:10:35,300 Voit vain kiinni sen 1 esineen JavaScript. 1062 01:10:35,300 --> 01:10:39,090 Kuten ehkä tiedätte, iteroimalla on yksi niistä tylsiä tehtäviä. 1063 01:10:39,090 --> 01:10:43,810 Sinä vain tehdä sen yli uudestaan. Sinun täytyy puhua jokaisen esineen autossa, 1064 01:10:43,810 --> 01:10:47,340 tai sinun täytyy mennä läpi jokaisen kohteen luettelosta tai jotain. 1065 01:10:47,340 --> 01:10:51,770 Joten JavaScript on samanlainen PHP, foreach syntaksin. 1066 01:10:51,770 --> 01:10:54,590 Tässä tapauksessa se on silmukka. 1067 01:10:54,590 --> 01:10:57,300 Haluat käyttää tätä vain esineitä. 1068 01:10:57,300 --> 01:11:01,030 On joitakin ongelmia, joita esiintyy, jos käytät tätä taulukot. 1069 01:11:01,030 --> 01:11:03,750 Se on yleensä yksi niistä asioista, vaikka, joka on erittäin hyödyllinen, 1070 01:11:03,750 --> 01:11:06,590 koska voit poistaa paljon yläpuolella 1071 01:11:06,590 --> 01:11:10,270 koska sinun ei tarvitse vetää kaiken teidän esine itse. 1072 01:11:10,270 --> 01:11:12,300 Sinun ei tarvitse muistaa kaikkia keskeisiä nimiä. 1073 01:11:12,300 --> 01:11:18,270 Sinä vain eräänlainen saada ne takaisin tässä syntaksin. 1074 01:11:18,270 --> 01:11:21,500 Tässä, jossa sillä, haluat vain muistaa 1075 01:11:21,500 --> 01:11:27,180 että saat takaisin kaikki avaimet, hyvin samalla tavalla hash table. 1076 01:11:27,180 --> 01:11:30,880 Jos muistat, että kun voisitte laittaa merkkijonon voisit saada jotain irti 1077 01:11:30,880 --> 01:11:33,840 että olisi liittyy arvo sen kanssa. 1078 01:11:33,840 --> 01:11:36,360 Mitä voit tehdä tämä on voit sanoa, kaikki hyvin, 1079 01:11:36,360 --> 01:11:42,120 Laitoin auton, ja kutsuin sitä Ferrari. 1080 01:11:42,120 --> 01:11:45,290 Joten voit laittaa merkkijonon Ferrari myöhemmin uudelleen, ja voit saada, että ulos. 1081 01:11:45,290 --> 01:11:50,000 Ja voit tehdä sen silmukka, jossa on silmukka. 1082 01:11:50,000 --> 01:11:53,320 Joten lisää esineitä. Keskeinen asia tästä sinun täytyy muistaa 1083 01:11:53,320 --> 01:12:00,340 on, että voit käyttää esine struct syntaksi milloin haluat näiden kanssa, 1084 01:12:00,340 --> 01:12:04,590 paitsi jos mitä aikoo käyttää merkkijono ei ole kelvollinen muuttujan nimi. 1085 01:12:04,590 --> 01:12:07,650 Joten jos tarkastellaan, että meillä on avain välilyönneillä. 1086 01:12:07,650 --> 01:12:12,500 No, jos olisit laittaa object.key, tila, jossa, tilaa, tilat, 1087 01:12:12,500 --> 01:12:15,320 että vain ei olisi järkevää lauseopillisesti. 1088 01:12:15,320 --> 01:12:22,730 Joten voit vain voi tehdä, että tällaista kiinnike syntaksin. 1089 01:12:22,730 --> 01:12:26,520 >> Myös JavaScript on hyvin soveltamisala-viisasta PHP. 1090 01:12:26,520 --> 01:12:29,050 Sinulla on 2 ratkaisumahdollisuuksia soveltamisalaa. 1091 01:12:29,050 --> 01:12:31,960 Et voi olla var edessä muuttujan 1092 01:12:31,960 --> 01:12:34,060 ja että vain sitä, tämä on globaali. 1093 01:12:34,060 --> 01:12:37,050 Voit nähdä sen mistä tahansa. Vaikka olisit laittaa tämä jos ilmoitus, 1094 01:12:37,050 --> 01:12:42,430 missään muualla koodissa tuon ajankohdan jälkeen näyttää siltä, ​​että muuttuja. 1095 01:12:42,430 --> 01:12:46,730 Toinen asia on kuitenkin se, jossa var, se on rajoitettu mitä toimintoa olet tuumaa 1096 01:12:46,730 --> 01:12:48,870 Jos et ole toimintoa, no, se on globaali. 1097 01:12:48,870 --> 01:12:53,900 Mutta jos olet toiminto on näkyvissä vain kyseisen toiminnon. 1098 01:12:53,900 --> 01:12:56,420 Minulla ei ole esimerkki, mutta joo. Se on yksi niistä asioista, joissa 1099 01:12:56,420 --> 01:12:59,900 voit hallita mitä muuttujia haluat olla maailmanlaajuista, 1100 01:12:59,900 --> 01:13:03,810 mitä muuttujia haluat olla paikallisia, mutta sinun täytyy olla varovainen tästä, 1101 01:13:03,810 --> 01:13:06,890 koska sinulla ei ole tyyppiä hienorakeinen valvonnan teet C, 1102 01:13:06,890 --> 01:13:15,820 jos jos jotain on ilmoitettu silmukka, se tulee jäämään, että silmukka. 1103 01:13:15,820 --> 01:13:18,790 Asia, jota emme oikeastaan ​​välitä käyttää Javascript manipuloi web-sivuja, eikö? 1104 01:13:18,790 --> 01:13:21,800 Tarkoitan, siksi me teemme tätä. 1105 01:13:21,800 --> 01:13:23,840 >> Voit tehdä, että käytämme jotain kutsutaan DOM. 1106 01:13:23,840 --> 01:13:25,850 Document Object Model. 1107 01:13:25,850 --> 01:13:29,430 Periaatteessa, mitä se on se vie kaiken HTML 1108 01:13:29,430 --> 01:13:34,110 ja malleja sen ulos joukko esineitä, jotka ovat sisäkkäin sisällä toisistaan. 1109 01:13:34,110 --> 01:13:37,080 Aloitat ulos jotain tällaista. 1110 01:13:37,080 --> 01:13:44,770 Sinulla on, oikealla minulle, nippu koodia siellä, että on tavallaan - 1111 01:13:44,770 --> 01:13:46,640 Luulisi, että olisi hyvin vaikea manipuloida, 1112 01:13:46,640 --> 01:13:48,700 koska olisit jäsentämiseen läpi joukko tekstin 1113 01:13:48,700 --> 01:13:52,080 ja ottaa pala erilleen asioita. Ja mitä jos se ei ole oikeassa muodossa? 1114 01:13:52,080 --> 01:13:54,880 Pahoja asioita tapahtuu. 1115 01:13:54,880 --> 01:13:58,140 Joten JavaScript huolehtii tämän sinulle, ja saat mukavan tietorakenne, 1116 01:13:58,140 --> 01:14:01,390 kuin yksi vasemmalla puolellani, josta juuri on asiakirja, 1117 01:14:01,390 --> 01:14:03,530 ja sisältä että sinulla on jotain kutsutaan HTML, 1118 01:14:03,530 --> 01:14:05,600 ja sisältä että sinulla on pään ja ruumiin, 1119 01:14:05,600 --> 01:14:08,420 ja sisältä että pää sinulla on otsikko, ja niin edelleen, ja niin edelleen, ja niin edelleen. 1120 01:14:08,420 --> 01:14:11,810 Tämä yksinkertaistaa manipuloimalla web-sivu, niin se on vain, 1121 01:14:11,810 --> 01:14:14,190 oh, haluan vain puhua tämän kohteen. 1122 01:14:14,190 --> 01:14:21,340 Tavallaan hyvin samalla tavalla voisitte puhua toisen objektin olet tehnyt itsellesi. 1123 01:14:21,340 --> 01:14:25,980 Kuten sanoin, kaikki DOM on Document Object. 1124 01:14:25,980 --> 01:14:29,290 Joko se on vain yksi paikka, ja sitten voit mennä siinä löytää asioita, 1125 01:14:29,290 --> 01:14:33,880 ja voit tehdä sen - tämä on vanha tyyli tehdä se, siellä, 1126 01:14:33,880 --> 01:14:38,130 jossa et document.getElementById, ja sitten nimi, 1127 01:14:38,130 --> 01:14:42,420 ja kuten voitte luultavasti kertoa, tämä saa erittäin jäykkää jonkin ajan kuluttua. 1128 01:14:42,420 --> 01:14:44,480 Joten luultavasti halua tehdä sitä. Siksi meillä on 1129 01:14:44,480 --> 01:14:48,760 Seuraava asia aiomme puhua tämän jälkeen. 1130 01:14:48,760 --> 01:14:52,510 Keskeinen asia tässä on, että, okei, sinulla on kaikki nämä elementit, eikö? 1131 01:14:52,510 --> 01:14:56,400 Joten ehkä voin vaihtaa väriä jotain, kun sivu latautuu. 1132 01:14:56,400 --> 01:14:58,380 Niin mitä? Entä jos käyttäjä napsauttaa jotain? 1133 01:14:58,380 --> 01:15:00,540 Haluan sen tehdä jotain mielenkiintoista, kun hän napsauttaa jotain. 1134 01:15:00,540 --> 01:15:02,600 Siksi meillä on tapahtumia. 1135 01:15:02,600 --> 01:15:05,330 Voit pohjimmiltaan löytää mitään elementin, DOM, 1136 01:15:05,330 --> 01:15:08,560 ja sitten sanoa, hei. Kun tämä lataa tai joku napsauttaa sitä, 1137 01:15:08,560 --> 01:15:11,410 tai kun he hiiren sen, asialle jotain. 1138 01:15:11,410 --> 01:15:15,330 Ja mitä sinulla on, sinulla on toimintoja, jotka käsittelevät tämän sinulle. 1139 01:15:15,330 --> 01:15:17,980 Nämä toiminnot ovat tapahtumankäsittelijät. 1140 01:15:17,980 --> 01:15:20,440 Mitä He ovat - se on vain hieno tapa sanoa, 1141 01:15:20,440 --> 01:15:23,500 tämä toiminto suoritetaan vain, kun tämä tapahtuma tapahtuu. 1142 01:15:23,500 --> 01:15:28,070 Joten se käsittelee tapahtuman perusteella. 1143 01:15:28,070 --> 01:15:30,810 Näin voit asetella tapahtumankäsittelijänä. 1144 01:15:30,810 --> 01:15:34,750 Minulla on joitakin painiketta, ja kun klikkaat sitä, se räjähtää. 1145 01:15:34,750 --> 01:15:40,560 Joten älä osoita painiketta. 1146 01:15:40,560 --> 01:15:42,910 Tämä on yksi tapa lähestyä sitä, eikö? 1147 01:15:42,910 --> 01:15:46,430 Sinulla on painike tag, ja klikkaa sinulla on merkkijono, joka kertoo, 1148 01:15:46,430 --> 01:15:50,460 oh, muuten, teen tätä räjähtänyt juttu. 1149 01:15:50,460 --> 01:15:53,990 Muuten, se on aivan kuin tavallinen painiketta juuri tehnyt. 1150 01:15:53,990 --> 01:15:56,550 Voit tehdä tämän myös toisella tavalla, 1151 01:15:56,550 --> 01:16:02,770 tarttumalla DOM elementti, mutta me tallentaa, että kun puhumme jQuery. 1152 01:16:02,770 --> 01:16:07,580 >> JQuery: On kirjasto, joka on rajat selaimen. 1153 01:16:07,580 --> 01:16:09,580 Voit käyttää sitä melko paljon mitään. 1154 01:16:09,580 --> 01:16:12,090 Ja se vain antaa sinulle paljon työkaluja työskennellä. 1155 01:16:12,090 --> 01:16:15,850 Koska JavaScript, kun voimakas, ei ole kaikki työkalut, joita tarvitset 1156 01:16:15,850 --> 01:16:20,550 kättelyssä todella puuttua web app saatat haluta tehdä. 1157 01:16:20,550 --> 01:16:24,650 Joten se yksinkertaistaa asioita, antaa sinulle paljon toimintoja 1158 01:16:24,650 --> 01:16:28,760 kättelyssä, joita normaalisti täytyy kirjoittaa itse, uudestaan ​​ja uudestaan ​​ja uudestaan. 1159 01:16:28,760 --> 01:16:31,600 Ja vain tekee asiat hyvin yksinkertainen. 1160 01:16:31,600 --> 01:16:35,780 Sinulla on myös valitsimet, joiden avulla voit ottaa kaikki nämä seikat 1161 01:16:35,780 --> 01:16:42,800 teidän DOM paljon yksinkertaisemmin, eikä tarvitse käyttää näitä erittäin pitkiä funktiokutsut. 1162 01:16:42,800 --> 01:16:46,630 Lisää näitä valitsimia. Olet, siellä olet, sanotaanko 1163 01:16:46,630 --> 01:16:49,800 Haluan saada elementti tunnus "kiven." 1164 01:16:49,800 --> 01:16:56,450 No, jQuery, se on vain $ ja sitten merkkijono, joka on punta, ja sitten "rockia." 1165 01:16:56,450 --> 01:17:01,960 Se on hyvin yksinkertainen ja paljon nopeammin kuin perinteinen JavaScript tapa puuttua tähän ongelmaan. 1166 01:17:01,960 --> 01:17:06,120 Ja sinulla on samankaltaisia ​​asioita luokat ja elementtityypit. 1167 01:17:06,120 --> 01:17:08,140 jQuery on - yksi hienoja ominaisuuksia on, voit tavallaan pakata 1168 01:17:08,140 --> 01:17:14,350 alas kyselyt teidän DOM hyvin, hyvin nopeasti. 1169 01:17:14,350 --> 01:17:18,980 Nyt olemme takaisin tapahtuman käsittelystä, ja näin hoitaisi yksi tapahtuma jQuery. 1170 01:17:18,980 --> 01:17:23,090 Joten mitä aiomme tässä me sanomme, kaikki hyvin. Minulla on komentosarjatunnus, eikö? 1171 01:17:23,090 --> 01:17:25,400 Joten minulla on tämä Inline JavaScript. 1172 01:17:25,400 --> 01:17:27,750 Mitä aiomme tehdä, on aiomme sanoa, kaikki hyvin. 1173 01:17:27,750 --> 01:17:30,860 Kun asiakirja on valmis, mikä tarkoittaa asiakirjan ladattu, 1174 01:17:30,860 --> 01:17:34,660 aiomme mennä tälle tehtävälle, ja aiomme sanoa, kaikki hyvin, 1175 01:17:34,660 --> 01:17:37,060 tämä toiminto on todella tehdä jotain muuta. 1176 01:17:37,060 --> 01:17:42,320 Se on pohjimmiltaan sanoi, okei, saat minut elementti tunnus "myid." 1177 01:17:42,320 --> 01:17:47,960 Ja sitten antaa tämä toiminto ohjaaja, joka suorittaa, kun osoitat sitä. 1178 01:17:47,960 --> 01:17:49,820 Periaatteessa mitä tämä tekee on, se sanoo, kaikki hyvin. 1179 01:17:49,820 --> 01:17:52,630 Sivu on ladattu, joten aion vuonna, löytää tämä elementti, 1180 01:17:52,630 --> 01:17:56,420 antoivat tämän Tapahtumakäsittelijän ja se pohjimmiltaan luodaan sivusi sinulle. 1181 01:17:56,420 --> 01:18:00,520 Ja näin haluat ajatella tapahtuman käsittelyä. 1182 01:18:00,520 --> 01:18:06,310 Sinä vain halua ajatella, okei, kun jotain tapahtuu, mitä haluan tapahtuvan? 1183 01:18:06,310 --> 01:18:10,520 Et halua ajatella, okei, minun täytyy varmistaa tämä asia puhuu tämä asia, 1184 01:18:10,520 --> 01:18:14,660 tämä asia blah blah blah, koska et vain halua puhua asia suhteen tapahtumiin. 1185 01:18:14,660 --> 01:18:17,650 Kun näin tapahtuu, tämä tapahtuu. Kun näin tapahtuu, se tapahtuu. 1186 01:18:17,650 --> 01:18:20,240 Ja jos asiat laukaista muita asioita, se on hienoa. 1187 01:18:20,240 --> 01:18:22,150 Mutta et halua yrittää tehdä monimutkaista koodia 1188 01:18:22,150 --> 01:18:24,130 jos olet käynnistää useita asioita samaan aikaan, 1189 01:18:24,130 --> 01:18:28,860 koska olet juuri menossa antaa itsellesi päänsärky. 1190 01:18:28,860 --> 01:18:32,340 >> Selvä. Nyt saamme sivuillemme käsitellä tapahtumia, 1191 01:18:32,340 --> 01:18:35,640 mutta sanotaanko minun käyttäjä napsauttaa painiketta. 1192 01:18:35,640 --> 01:18:38,040 Mitä jos haluan lähettää tämän pyynnön takaisin palvelimelle, 1193 01:18:38,040 --> 01:18:41,100 mutta en halua ladata sivun uudelleen, koska se kun lataa uuden sivun 1194 01:18:41,100 --> 01:18:44,390 joka ikinen kerta saa sellaista tylsiä, ja miksi tarvitsen 1195 01:18:44,390 --> 01:18:47,430 kaatamaan otsikkoa uudelleen, ja footer uudelleen, 1196 01:18:47,430 --> 01:18:49,670 ja kaikki elementit sivun uudelleen 1197 01:18:49,670 --> 01:18:53,180 vain virkistää tervehdys tai aikaa? 1198 01:18:53,180 --> 01:18:55,290 Joten siksi meillä on jotain Ajax. 1199 01:18:55,290 --> 01:18:59,150 Mitä voimme tehdä täällä Ajax on, voimme sanoa, kaikki hyvin, 1200 01:18:59,150 --> 01:19:01,290 Haluan lähettää joitakin tietoja palvelimelle, 1201 01:19:01,290 --> 01:19:04,010 ja haluan saada vastauksen takaisin jotta voin päivittää sivuni 1202 01:19:04,010 --> 01:19:12,120 tai ehkä vain tehdä joitakin algoritmeihin laskelma, joka ei välttämättä näytä mitään käyttäjälle. 1203 01:19:12,120 --> 01:19:15,500 Mitä sinun tarvitsee tehdä tämän? No, sinun täytyy URL sinun täytyy puhua. 1204 01:19:15,500 --> 01:19:18,650 Palvelimella voi vain maagisesti kuunnella tyhjästä. 1205 01:19:18,650 --> 01:19:21,960 Sinun täytyy olla tiettyyn paikkaan aiot lähettää nämä tiedot. 1206 01:19:21,960 --> 01:19:26,240 Ja sinun on myös joitakin tietoja lähettää, tai ehkä se on dataton kyselyn. 1207 01:19:26,240 --> 01:19:31,380 Haluat vain ping takaisin palvelimelle ja sanoa, hei, olen elossa, tai jotain sellaista. 1208 01:19:31,380 --> 01:19:35,150 Ja sitten haluat toiminto, joka pohjimmiltaan käsittelee onnistuneesti. 1209 01:19:35,150 --> 01:19:38,250 Sanotaan saat takaisin joitakin tietoja palvelimelle, 1210 01:19:38,250 --> 01:19:42,960 ja haluat muuttaa käyttäjän otsikko sivullaan. 1211 01:19:42,960 --> 01:19:44,930 Joten saisit tiedot takaisin, 1212 01:19:44,930 --> 01:19:48,860 ja voisitte työntää että näyttöön. 1213 01:19:48,860 --> 01:19:51,170 Mitä tapahtuu, on, kun sivu on valmis, 1214 01:19:51,170 --> 01:19:56,500 luot siitä näppäysfunktio tämän painike nimeltä tervehtimestä. 1215 01:19:56,500 --> 01:19:58,810 Mitä tämä sitten tekee on, kun se painetaan, 1216 01:19:58,810 --> 01:20:03,700 puhut greetings.php, teet POST pyynnön, 1217 01:20:03,700 --> 01:20:07,290 ja te sanotte, hei, saat minulle jotain sivultasi. 1218 01:20:07,290 --> 01:20:09,890 Meillä ei todellakaan tarvitse kuvata sitä, mutta greetings.php, 1219 01:20:09,890 --> 01:20:12,480 haluan vain sanoa, antaa takaisin "Hello World". 1220 01:20:12,480 --> 01:20:15,650 Joten palaamme tähän "Hello World" ja onnistumisen, 1221 01:20:15,650 --> 01:20:20,730 olettaen mitään menee pieleen, niin me vain mennä tämän tavoitteen paikkaan 1222 01:20:20,730 --> 01:20:25,720 että me määritelty ja me vain kiinni vasteen siellä. 1223 01:20:25,720 --> 01:20:31,560 Ja tämä on hyvin yksinkertainen tapa määrittää Ajax kyselyn. 1224 01:20:31,560 --> 01:20:34,340 >> Hyvin nopeasti, Rob tavallaan mainitsi tämän jo, 1225 01:20:34,340 --> 01:20:37,170 asiat voivat mennä pieleen, pahoja asioita voi tapahtua, 1226 01:20:37,170 --> 01:20:42,660 joten haluat tutustua näihin HTTP-vastauksen koodeja. 1227 01:20:42,660 --> 01:20:46,030 Mitä nämä ovat ovat aivan, kuin, 200, kaikki meni hyvin. 1228 01:20:46,030 --> 01:20:48,670 Jotain muuta, pahaa tapahtui. 1229 01:20:48,670 --> 01:20:50,790 Se on yleensä asia, jonka haluat muistaa. 1230 01:20:50,790 --> 01:20:53,440 Mutta on mukava tietää kaikki nämä. 1231 01:20:53,440 --> 01:20:55,970 Ja lopuksi, kun olemme käyneet läpi kaiken tämän, 1232 01:20:55,970 --> 01:20:58,680 meidän täytyy puhua hyvin nopeasti suunnittelusta, 1233 01:20:58,680 --> 01:21:00,620 ja sitten voimme antaa teille kaikki lähtevät. 1234 01:21:00,620 --> 01:21:03,410 Suunnittelu. Asioita haluat muistaa. 1235 01:21:03,410 --> 01:21:06,950 Kysy itseltäsi seuraavat kysymykset: Kuka käyttää tätä? 1236 01:21:06,950 --> 01:21:09,580 Mitä he käyttää sitä? Mitä minun käyttäjät välitä? 1237 01:21:09,580 --> 01:21:11,750 Mitä he eivät välitä? 1238 01:21:11,750 --> 01:21:14,500 Et vain halua tehdä app ja anna se vain kasvaa 1239 01:21:14,500 --> 01:21:18,270 ja tulla tämä jättiläinen, kaikki vievää asia, että et voi edes loppuun. 1240 01:21:18,270 --> 01:21:23,900 Haluat olla erillisiä tavoitteita ja suunnitelmia ja asioita haluat käsitellä. 1241 01:21:23,900 --> 01:21:29,000 Tee se vaivatonta. Kaikki tämä kertoo, pohjimmiltaan, 1242 01:21:29,000 --> 01:21:34,950 helpottavat käyttäjän käyttää sitä, älä tee sitä jättiläinen möykky tekstiä, kuten tämän dian on, todella. 1243 01:21:34,950 --> 01:21:38,020 Sinä vain haluat sen olevan jotain missä se on erittäin helppo jonkun mennä 1244 01:21:38,020 --> 01:21:40,800 ja tehdä mitä he haluavat tehdä. 1245 01:21:40,800 --> 01:21:42,920 Et halua heille on navigoida 5 sivua 1246 01:21:42,920 --> 01:21:45,460 päästä parhaassa toiminnon sivustosi. 1247 01:21:45,460 --> 01:21:49,290 Jos Google oli 5 sivua ennen kuin voi edes etsiä jotain, 1248 01:21:49,290 --> 01:21:53,080 kukaan ei käytä sitä. 1249 01:21:53,080 --> 01:21:55,890 Ja lopuksi, paperi prototyyppi, focus group. 1250 01:21:55,890 --> 01:21:59,220 On hyvä suunnittelun ja testauksen käytäntöjä. 1251 01:21:59,220 --> 01:22:00,730 Vain koska luulet se toimii sinulle, 1252 01:22:00,730 --> 01:22:04,860 ei tarkoita kukaan muu ajattelee se toimii. 1253 01:22:04,860 --> 01:22:14,490 Mutta joo, se on siinä. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]