1 00:00:00,000 --> 00:00:02,270 >> [Review: Spurningakeppni 1] 2 00:00:02,270 --> 00:00:04,620 [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Harvard University] 3 00:00:04,620 --> 00:00:07,660 [Þetta er CS50.] [CS50.TV] 4 00:00:07,660 --> 00:00:11,610 [Lucas Freitas] Velkomin á síðuna mína. Þetta er umfjöllun um Próf 1. 5 00:00:11,610 --> 00:00:15,040 Bara sem höfnun, þetta er - ég meina, við erum að fara að reyna að ná 6 00:00:15,040 --> 00:00:17,770 eins mikið efni og mögulegt er, en það þýðir ekki að 7 00:00:17,770 --> 00:00:20,780 við erum að fara til að ná öllum þeim hlutum sem getur verið í spurningakeppni 1. 8 00:00:20,780 --> 00:00:25,270 Svo vertu viss um að taka einnig að líta á fyrirlestri, köflum allt sem þú getur. 9 00:00:25,270 --> 00:00:28,240 Quiz 1 er að fara að vera á miðvikudag, næsta miðvikudag. 10 00:00:28,240 --> 00:00:33,800 Svo vera viss um að rannsaka. Það er að fara að vera, nokkurn veginn, eins og fyrsta prófið 11 00:00:33,800 --> 00:00:36,390 varðandi snið, en það er líklega að fara að vera miklu erfiðara. 12 00:00:36,390 --> 00:00:39,600 Að minnsta kosti, á síðasta ári þegar ég tók 50, ég hélt að það væri miklu erfiðara. 13 00:00:39,600 --> 00:00:42,410 Svo læra mikið. 14 00:00:42,410 --> 00:00:45,190 >> Ég ætla að ná gögn uppbygging og Huffman kóðun. 15 00:00:45,190 --> 00:00:47,910 Þetta er eitthvað sem fullt af fólki heldur er flókið, 16 00:00:47,910 --> 00:00:51,930 en ég ætla að reyna að gera það eins auðvelt og mögulegt er. 17 00:00:51,930 --> 00:00:56,330 Fyrst af öllu, hvað við viljum að þú krakkar að vita fyrir prófið 1 er að 18 00:00:56,330 --> 00:01:00,970 skilja huglæg lýsingar á hverjum gögn uppbygging sem ég ætla að kynna. 19 00:01:00,970 --> 00:01:03,960 Það þýðir að þú þarft ekki að raunverulega 20 00:01:03,960 --> 00:01:07,020 innleiða kjötkássa borð í spurningakeppni þína 1. 21 00:01:07,020 --> 00:01:10,250 Við viljum ekki að þú innleiða allt kjötkássa borð, kannski munum við reyna 22 00:01:10,250 --> 00:01:13,090 að gera þig framkvæma nokkrar aðgerðir, 23 00:01:13,090 --> 00:01:16,940 algengustu aðgerðir, en við erum ekki að fara að gera þú framkvæma allt. 24 00:01:16,940 --> 00:01:21,010 Svo það er mikilvægt að þú skiljir hugtakið á bak við hvert gögn uppbygging 25 00:01:21,010 --> 00:01:23,510 og líka að þú ert fær um að kóða í C, 26 00:01:23,510 --> 00:01:27,880 bara algengustu aðgerðir sem þeir hafa fyrir hvert gögn uppbygging. 27 00:01:27,880 --> 00:01:30,090 Og einnig að vera fær um að endurskoða ábendingum og structs, 28 00:01:30,090 --> 00:01:33,470 vegna þess að þeir virðast mikið í þessum gögn uppbygging. 29 00:01:33,470 --> 00:01:37,380 >> Fyrst, tengd listum. Tengd listar eru reyndar mjög svipuð fylki, 30 00:01:37,380 --> 00:01:39,930 en munurinn á milli tengda listanum og fjölda, 31 00:01:39,930 --> 00:01:45,160 fyrst af öllu, er að tengjast listi hefur mjög sveigjanlegur stærð, 32 00:01:45,160 --> 00:01:50,060 en í fylki sem þú hefur annað hvort að velja mjög stór stærð fyrir fylki, 33 00:01:50,060 --> 00:01:53,710 svo þú veist að þú ert að fara að vera fær um að geyma öll gögn í því fylki, 34 00:01:53,710 --> 00:01:59,370 eða þú þarft að nota malloc að hafa sveigjanlegan lengd fylkisins. 35 00:01:59,370 --> 00:02:03,680 Í tengdum listum það er mjög auðvelt að bara fá fleiri þætti, 36 00:02:03,680 --> 00:02:07,210 setja fleiri þætti í tengda listanum eða fjarlægja atriði. 37 00:02:07,210 --> 00:02:09,370 Og í raun, ef þú vilt ekki tengda listanum að vera flokkaður, 38 00:02:09,370 --> 00:02:13,950 þú getur leitað og fjarlægja þætti í föstu tíma, 39 00:02:13,950 --> 00:02:16,800 svo O (1) tíma, svo það er mjög þægilegt. 40 00:02:16,800 --> 00:02:20,660 Þú verður bara að vera varkár alltaf muna að malloc og ókeypis hnútar, 41 00:02:20,660 --> 00:02:25,510 bara vegna þess að ef þú ert ekki, munt þú hafa minni lekur. 42 00:02:25,510 --> 00:02:31,480 Svo tengd lista - skilgreining á hnút er bara eins og það sem við höfum hérna. 43 00:02:31,480 --> 00:02:35,110 Ég setti int n, en þú getur geymt hvaða gögn sem þú vilt. 44 00:02:35,110 --> 00:02:37,280 Svo ef þú vilt að geyma streng, það er fínt. 45 00:02:37,280 --> 00:02:41,690 Ef þú vilt geyma strúktúr, það er allt í lagi, tvöfaldur, hvað sem þú vilt. 46 00:02:41,690 --> 00:02:44,630 Ég setti bara int n fyrir dæmi hér. 47 00:02:44,630 --> 00:02:46,800 Og þú ert með músina á næsta hnút. 48 00:02:46,800 --> 00:02:51,940 Svo, í grundvallaratriðum, sem er tengdur listi hefur nokkrar upplýsingar, og þá bendir það til næsta hnút. 49 00:02:51,940 --> 00:02:56,710 Ef það er síðasta þáttur í tengda listanum, það er að fara að benda á núll. 50 00:02:56,710 --> 00:02:59,060 Svo er þetta dæmi um tengda listanum. 51 00:02:59,250 --> 00:03:05,960 >> Í lagi, svo nú skulum sjá hvað við ættum að gera ef ég vil setja stak í tengda listanum. 52 00:03:05,960 --> 00:03:08,810 First, fall setja inn verður af ferðar tóm 53 00:03:08,810 --> 00:03:11,350 vegna þess að ég vil ekki að skila neinu. 54 00:03:11,350 --> 00:03:14,200 Og ég ætla að taka við int sem rök, 55 00:03:14,200 --> 00:03:17,090 því ég vil vita hvað ég vil setja. 56 00:03:17,090 --> 00:03:21,840 Svo er það fyrsta sem ég ætti að gera? Jæja, ætti ég að malloc á newnode, 57 00:03:21,840 --> 00:03:24,240 Svo er að fyrsta lína. 58 00:03:24,240 --> 00:03:27,580 Ég ætla bara að búa til nýjan hnút til að setja í tengda listanum. 59 00:03:27,580 --> 00:03:32,360 Svo hvað get ég gert? Jæja, við vitum að í gerð okkar tengd listum 60 00:03:32,360 --> 00:03:38,180 í bekknum, leggjum alltaf höfuðið sem alþjóðlegt breytu. 61 00:03:38,180 --> 00:03:41,800 Svo er það sem við getum gert að breyta höfuð. 62 00:03:41,800 --> 00:03:44,300 Ég er að gera þetta nýr hnútur vera nýr yfirmaður, 63 00:03:44,300 --> 00:03:46,670 og það er að fara að benda á fyrri höfuð. 64 00:03:46,670 --> 00:03:50,390 Hvernig getum við gert það? The fyrstur hlutur sem ég þarf að gera 65 00:03:50,390 --> 00:03:54,770 er að breyta 'n' í nýjan hnút til að gildi, 66 00:03:54,770 --> 00:03:57,530 sem var samþykkt við aðgerðina. 67 00:03:57,530 --> 00:04:01,050 Þá er newnode næst er að fara til vera the höfuð. 68 00:04:01,050 --> 00:04:05,800 Höfuðið er að fara að newnode. Svo er það frekar einfalt. 69 00:04:05,800 --> 00:04:10,090 Til að eyða hnút, getum við gert það eins og - 70 00:04:10,090 --> 00:04:14,790 Ein leiðin sem við gátum gert það er að segja, 71 00:04:14,790 --> 00:04:18,160 allt í lagi, ef ég vildi eyða, til dæmis, 3, 72 00:04:18,160 --> 00:04:24,850 hvað ég gæti gert er bara benda á fyrri hnút 73 00:04:24,850 --> 00:04:27,580 í næsta hnút 3. 74 00:04:27,580 --> 00:04:29,400 Þannig að ég myndi bara gera eitthvað svona. 75 00:04:29,400 --> 00:04:33,400 En hvað er vandamálið með að gera það? 76 00:04:33,400 --> 00:04:37,400 Ég er með minni leka, þannig að ég hef ekki aðgang að fjölda 3. lengur. 77 00:04:37,400 --> 00:04:42,480 Vandinn við það er að ég ætla ekki að fara að vera fær um að losa þann tengipunkt. 78 00:04:42,480 --> 00:04:45,360 Ég ætla að hafa minni leka og (óskiljanlegur) er að fara að hata mig. 79 00:04:45,360 --> 00:04:49,370 Svo í stað þess að gera það, ætti ég sennilega hafa tímabundið músina. 80 00:04:49,370 --> 00:04:53,210 Svo ég setti afleysingamanneskja. Það er að fara að benda á hnút sem ég vil eyða. 81 00:04:53,210 --> 00:04:58,170 Og þá get ég fært fyrri hnúta að benda á næsta hnút 82 00:04:58,170 --> 00:05:00,390 hnúturinn sem ég vil eyða. 83 00:05:00,390 --> 00:05:02,730 Og að lokum, get ég frjáls músina. 84 00:05:02,730 --> 00:05:07,480 Þarf ég að losa músina sem ég stofnaði þarna? 85 00:05:07,480 --> 00:05:09,560 Ég hef ekki til, bara vegna þess að - 86 00:05:09,560 --> 00:05:13,430 munurinn er sá að þetta hnútur var búin að nota malloc, 87 00:05:13,430 --> 00:05:17,280 svo er það í hrúga, en þetta var bara lýst sem NULL rofi í stafla. 88 00:05:17,280 --> 00:05:20,000 Þannig að ég þarf ekki að losa hana. 89 00:05:20,000 --> 00:05:22,030 >> Lagi. Svo nú skulum við tala um stöflum. 90 00:05:22,030 --> 00:05:24,680 Stafla eru nokkuð einföld. 91 00:05:24,680 --> 00:05:29,540 Við gerðum stafla og biðraðir í bekknum bara að nota fylki, 92 00:05:29,540 --> 00:05:32,820 en þú ættir að þekkja - bara að vera meðvitaðir 93 00:05:32,820 --> 00:05:40,740 að þú getur líka gert stafla í biðröð nota tengd listum eins og heilbrigður. 94 00:05:40,740 --> 00:05:44,460 Þannig að ef þú ert með array, hvað væri stakkur? 95 00:05:44,460 --> 00:05:46,810 A stafla, í fyrsta lagi verður að hafa stærð. 96 00:05:46,810 --> 00:05:49,950 Þú þarft að geyma það sem er á stærð við stafla sem þú hefur núna. 97 00:05:49,950 --> 00:05:52,980 Og einnig þú vildi hafa fylki, í þessu tilfelli á tölum, 98 00:05:52,980 --> 00:05:55,120 en ef þú vilt, það er hægt að vera fylki 99 00:05:55,120 --> 00:06:00,380 strengi, fylki af strúktúr, nokkuð sem þú vilt geyma. 100 00:06:00,380 --> 00:06:03,240 Um stafla: Munurinn stafla og tengda listanum 101 00:06:03,240 --> 00:06:08,590 er að í stafla þú hefur aðeins aðgang að síðasta þáttur sem var sett í stafla. 102 00:06:08,590 --> 00:06:11,770 Það heitir síðasta árið, fyrst út. 103 00:06:11,770 --> 00:06:15,090 Rétt eins og þú hafa a stafla af stæði, 104 00:06:15,090 --> 00:06:17,670 ef þú setur bakka á the toppur af the stakkur, 105 00:06:17,670 --> 00:06:22,670 þú þarft að fjarlægja þessi bakki fyrst að hafa aðgang að öðrum stæði. 106 00:06:22,670 --> 00:06:26,310 Það er sama við stöflum. 107 00:06:26,310 --> 00:06:31,220 Svo ef ég vil, til dæmis, bæta þáttur í stafla, hvað ætti ég að gera? 108 00:06:31,220 --> 00:06:34,070 Það heitir ýta, og það er nokkuð augljóst. 109 00:06:34,070 --> 00:06:37,130 The fyrstur hlutur þú þarft að gera er að athuga hvort stærð stafla 110 00:06:37,130 --> 00:06:40,150 er ekki meira en eða jafnt og getu stafla. 111 00:06:40,150 --> 00:06:45,810 Vegna þess að ef þú ert nú þegar á fullri getu, þú getur ekki bætt neitt annað. 112 00:06:45,810 --> 00:06:51,140 Og þá ef ekki, hefur þú bara að bæta þáttur í stafla. 113 00:06:51,140 --> 00:06:54,530 Og að lokum, vöxtur stærð. Svo er það frekar einfalt. 114 00:06:54,530 --> 00:06:57,140 Svo ég bætt bara númer 2. 115 00:06:57,140 --> 00:07:00,350 Og ef ég vil að skjóta, sem þýðir að ég vil að fjarlægja 116 00:07:00,350 --> 00:07:03,870 síðasta þáttur sem var bætt við og skila gildi frumefni, 117 00:07:03,870 --> 00:07:09,180 það fyrsta sem ég hef að athuga er að stafla er ekki tómt. 118 00:07:09,180 --> 00:07:11,510 Vegna þess að ef það er tómt, ég get ekki aftur neitt. 119 00:07:11,510 --> 00:07:14,820 Í því tilfelli, ég er aftur -1. 120 00:07:14,820 --> 00:07:18,960 Annars, ég ætla að lækka stærð sérstakur, 121 00:07:18,960 --> 00:07:22,510 og aftur tölur (s.size). 122 00:07:22,510 --> 00:07:27,230 Af hverju gerði ég að telja niður stærð og fara síðan aftur s.size? 123 00:07:27,230 --> 00:07:30,930 Það er vegna þess að í þessu tilviki er sérstakur hefur stærð 4, 124 00:07:30,930 --> 00:07:33,810 og ég vil fara aftur í fjórða þáttur, ekki satt? 125 00:07:33,810 --> 00:07:36,030 En hvað er vísitala fjórða frumefni? Þrír. 126 00:07:36,030 --> 00:07:44,510 Þar sem ég stærð - er að fara að vera 3, get ég bara aftur s.numbers (s.size) 127 00:07:44,510 --> 00:07:48,410 því það er 3. Svo það er bara vísitalan. 128 00:07:48,410 --> 00:07:50,380 >> Nú biðraðir. Biðraðir eru laglegur mikill the sami hlutur. 129 00:07:50,380 --> 00:07:54,950 Eini munurinn er að í stað þess að hann var síðast í, fyrst út, 130 00:07:54,950 --> 00:07:57,480 þú þarft fyrst inn fyrst út. 131 00:07:57,480 --> 00:07:59,460 Sennilega ef þú ert að bíða eftir að fara á tónleika, 132 00:07:59,460 --> 00:08:04,260 þú myndir ekki vera ánægð ef þú hefðir stafla stað þess að biðröð. 133 00:08:04,260 --> 00:08:07,730 Vera síðasta manneskja til að koma yrði fyrsta manneskjan til að koma inn á tónleikana. 134 00:08:07,730 --> 00:08:09,760 Þú myndi sennilega ekki vera hamingjusamur. 135 00:08:09,760 --> 00:08:15,020 Í biðröð, fyrsta manneskjan til að komast í er einnig fyrsta manneskjan til að komast út. 136 00:08:15,020 --> 00:08:18,720 Svo í skilgreiningu á biðröð, að auki hafa stærð í array, 137 00:08:18,720 --> 00:08:23,360 þú þarft líka að hafa í höfuðið, sem er vísitalan við höfuð stafla. 138 00:08:23,360 --> 00:08:29,000 Þannig að fyrsta þátturinn núna. 139 00:08:29,000 --> 00:08:32,710 Velja slembið skinn er það sama og ýta á stafla. 140 00:08:32,710 --> 00:08:34,980 Ef þú værir mjög barnaleg, myndir þú bara segja, 141 00:08:34,980 --> 00:08:39,289 Jæja, ég get bara gert nákvæmlega það sama og ég gerði fyrir ýtin. 142 00:08:39,289 --> 00:08:44,030 Ég get bara athuga hvort það er ekki umfram afkastagetu. 143 00:08:44,030 --> 00:08:48,760 Ef það er aftur ég ósatt, annars ég get bara flutt nýtt gildi 144 00:08:48,760 --> 00:08:50,630 og þá hækka stærð. 145 00:08:50,630 --> 00:08:52,750 En af hverju er þetta rangt? 146 00:08:52,750 --> 00:08:55,010 Við skulum sjá þetta dæmi. 147 00:08:55,010 --> 00:08:57,020 Ég er að reyna að Velja slembið skinn fullt af efni, 148 00:08:57,020 --> 00:08:58,390 og þá er ég að fara að dequeue og Velja slembið skinn. 149 00:08:58,390 --> 00:09:00,550 There 'a einhver fjöldi af skipunum, en það er mjög einfalt. 150 00:09:00,550 --> 00:09:04,790 Ég ætla að Velja slembið skinn 5, svo að bæta 5, og þá 7, 151 00:09:04,790 --> 00:09:09,310 1, 4, 6, og þá vil ég að dequeue eitthvað, 152 00:09:09,310 --> 00:09:12,000 sem þýðir að ég ætla að fjarlægja fyrsta frumefnið. 153 00:09:12,000 --> 00:09:14,640 Þannig að ég ætla að eyða númerinu 3, ekki satt? 154 00:09:14,640 --> 00:09:17,320 Fyrsti þátturinn. Allt í lagi. 155 00:09:17,320 --> 00:09:21,450 Nú ef ég reyni að Velja slembið skinn eitthvað annað, hvað er að fara að gerast? 156 00:09:21,450 --> 00:09:24,290 Samkvæmt framkvæmd mína, 157 00:09:24,290 --> 00:09:31,040 Ég ætlaði að setja í næsta númer í vísitölunni q.size. 158 00:09:31,040 --> 00:09:35,140 Í þessu tilviki, stærð er 8, 159 00:09:35,140 --> 00:09:38,640 svo vísitalan 8 verður hérna í neðstu stöðu. 160 00:09:38,640 --> 00:09:43,900 Ef ég reyni að Velja slembið skinn 1 hérna, myndi ég vera skrifa of mikið á síðustu stöðu 161 00:09:43,900 --> 00:09:45,870 til fjölda 1, sem er alveg rangt fyrir sér. 162 00:09:45,870 --> 00:09:49,870 Það sem ég vil gera er að vefja um og fara í fyrsta sæti. 163 00:09:49,870 --> 00:09:52,870 Kannski vildi bara segja, vel, ég hef bara að athuga 164 00:09:52,870 --> 00:09:55,600 ef ég get í raun sett eitthvað þar. 165 00:09:55,600 --> 00:09:58,560 Ef ekki segi ég bara, ó, nýja fullan gang 166 00:09:58,560 --> 00:10:02,010 er í raun getu - 1, og þú getur ekki sett stak þar. 167 00:10:02,010 --> 00:10:06,150 En hvað er vandamálið? Vandamálið er að ef ég dequeue bara allt hérna 168 00:10:06,150 --> 00:10:08,240 og þá er ég að reyna að bæta eitthvað annað, það myndi bara segja, 169 00:10:08,240 --> 00:10:11,210 vel, þú varst á fullri getu, sem er 0. 170 00:10:11,210 --> 00:10:13,620 Svo biðröð þinn er farinn. 171 00:10:13,620 --> 00:10:16,990 Þú þarft að vefja í kring, og leið umbúðir í kring 172 00:10:16,990 --> 00:10:22,040 að þú krakkar lært í framsýnn og öðrum psets var að nota unga fólkið. 173 00:10:22,040 --> 00:10:29,090 Þú getur prófað það heima til að skilja hvers vegna þú myndir gera q.size + q.head 174 00:10:29,090 --> 00:10:31,080 unga fólkið getu, en ef þú skoðar hérna, 175 00:10:31,080 --> 00:10:34,760 getum við séð að það virkar. 176 00:10:34,760 --> 00:10:37,760 Svo í síðustu td q.size var 8 177 00:10:37,760 --> 00:10:47,590 og höfuð var 1, því það var þessi staða hér í fylkinu. 178 00:10:47,590 --> 00:10:51,970 Svo það verður 8 + 1, 9. Mod getu 9 væri 0. 179 00:10:51,970 --> 00:10:56,640 Það myndi fara inn í vísitöluna 0. Við munum vera í rétta stöðu. 180 00:10:56,640 --> 00:10:59,750 Og þá reyna biðröð heima. 181 00:10:59,750 --> 00:11:04,950 Nokkur mikilvæg atriði: reyna að skilja muninn á milli reykháf og biðröð. 182 00:11:04,950 --> 00:11:11,620 Heima, reyna að fá mjög kunnugur framkvæmd Velja slembið skinn, dequeue, ýta og skjóta. 183 00:11:11,620 --> 00:11:16,560 Og einnig að skilja þegar þú myndi nota hvert þeirra. 184 00:11:16,560 --> 00:11:22,830 >> Svo skulum slaka í 10 sekúndur með fullt af pokemons. 185 00:11:22,830 --> 00:11:26,080 Og nú skulum við fara aftur til gögn uppbygging. 186 00:11:26,080 --> 00:11:29,770 Hash töflur. A einhver fjöldi af fólk voru hrædd við kjötkássa matskeið. 187 00:11:29,770 --> 00:11:33,650 í Heimadæmi 6, stafa afgreiðslumaður. 188 00:11:33,650 --> 00:11:35,980 Kjötkássa matskeið og reynir, a einhver fjöldi af fólk fá hræddur af þeim. 189 00:11:35,980 --> 00:11:38,540 Þeir telja að þeir eru svo erfitt að skilja. Já? 190 00:11:38,540 --> 00:11:41,490 [Rob Bowden] Heimadæmi 5. >> Heimadæmi 5, já. Takk Rob. 191 00:11:41,490 --> 00:11:43,370 Já. Sex var Huff n 'Puff, já. 192 00:11:43,370 --> 00:11:49,340 Heimadæmi 5 var Stafa Afgreiðslumaður, og þú þarft að nota annaðhvort kjötkássa borð eða reyna. 193 00:11:49,340 --> 00:11:55,360 A einhver fjöldi af fólk hélt að þeir væru frábær erfitt að skilja, en þeir eru í raun frekar einfalt. 194 00:11:55,360 --> 00:12:01,290 Hvað er kjötkássa borð, í grundvallaratriðum? A kjötkássa borð er fylki af tengd listum. 195 00:12:01,290 --> 00:12:06,730 Eini munurinn á milli fjölda og kjötkássa borð 196 00:12:06,730 --> 00:12:09,730 er að í kjötkássa töflunni þú hefur eitthvað sem kallast kjötkássa virka. 197 00:12:09,730 --> 00:12:12,080 Hvað er kjötkássa virka? 198 00:12:12,080 --> 00:12:13,970 Ég veit ekki hvort þið getið lesið hér. 199 00:12:13,970 --> 00:12:16,090 Þetta er dæmi um kjötkássa töflunni. 200 00:12:16,090 --> 00:12:19,220 Svo þú getur séð að þú sért með fylki með 31 þáttum. 201 00:12:19,220 --> 00:12:22,440 Og hvað við gerum í kjötkássa töflunni er hafa kássufall 202 00:12:22,440 --> 00:12:26,660 sem er að fara að þýða takka, hvor int við vísitölu. 203 00:12:26,660 --> 00:12:31,740 Ef, til dæmis, ef ég vil velja fyrir B. Harrison, 204 00:12:31,740 --> 00:12:34,190 Ég myndi setja B. Harrison í kjötkássa virka mínum, 205 00:12:34,190 --> 00:12:36,960 og kjötkássa virka myndi skila 24. 206 00:12:36,960 --> 00:12:40,930 Þannig að ég veit að ég vil geyma B. Harrison í 24. 207 00:12:40,930 --> 00:12:46,580 Svo er það munurinn á milli bara að hafa fjölbreytta og hafa kjötkássa borð. 208 00:12:46,580 --> 00:12:48,740 Í kjötkássa töflunni þú munt hafa valkost sem er að fara að segja þér 209 00:12:48,740 --> 00:12:54,740 hvar á að geyma gögn sem þú vilt geyma. 210 00:12:54,740 --> 00:12:57,040 Fyrir kjötkássa virka, þú vilt leita að kjötkássa virka 211 00:12:57,040 --> 00:13:00,600 sem er deterministic og vel dreift. 212 00:13:00,600 --> 00:13:07,810 Eins og þú geta sjá hér, sérðu að mikið af þeim gögnum sem ég vildi geyma var í raun 19 213 00:13:07,810 --> 00:13:12,470 stað þess að nota 31 og 30 og 29, sem voru allt ókeypis. 214 00:13:12,470 --> 00:13:16,920 Svo kjötkássa virka sem ég notaði var ekki mjög vel dreift. 215 00:13:16,920 --> 00:13:20,710 Þegar við segjum vel dreift, þá þýðir það að við viljum hafa, 216 00:13:20,710 --> 00:13:26,520 um það bil, að minnsta kosti 1 eða 2 er fyrir hvert þeirra - 217 00:13:26,520 --> 00:13:32,190 eins og, mismunurinn er 1 eða 2 fyrir hvert skránna í fylki. 218 00:13:32,190 --> 00:13:43,950 Þú vilt hafa bil, sama fjölda staka í hverju tengda listanum í array. 219 00:13:43,950 --> 00:13:48,600 Og það er auðvelt að athuga hvort það er í gildi í kjötkássa töflunni skoða eins kjötkássa matskeið. 220 00:13:48,600 --> 00:13:51,770 >> Þá tré. Þetta er tré. 221 00:13:51,770 --> 00:13:56,400 Tré í tölvunarfræði eru á hvolfi fyrir sumir ástæða. 222 00:13:56,400 --> 00:14:00,150 Svo hérna þú hefur rót af trénu og þá fer. 223 00:14:00,150 --> 00:14:05,630 Þú ættir bara að vita flokkunarkerfi fyrir foreldra og barn. 224 00:14:05,630 --> 00:14:12,880 Hver hnútur hefur börn sín, sem eru hnútar sem eru undir foreldri. 225 00:14:12,880 --> 00:14:19,660 Svo, til dæmis, 2 er að fara að vera foreldri fyrir 3 og fyrir önnur börn rétt þar, 226 00:14:19,660 --> 00:14:25,290 en 3 er að fara að vera foreldri í 1 og hin börnin sem eru þar. 227 00:14:25,290 --> 00:14:29,990 Og 1 er að fara að vera barn 3, og svo framvegis. 228 00:14:29,990 --> 00:14:34,610 Við höfum eitthvað mikið meira áhugavert, sem kallast Tvíundarleit tré, 229 00:14:34,610 --> 00:14:39,040 þar sem öll gildi eru á rétti hnút 230 00:14:39,040 --> 00:14:41,660 eru að fara að vera á hægri, hérna - á hægri, 231 00:14:41,660 --> 00:14:46,780 eru að fara að vera hærri en viðkomandi frumefnis í rót. 232 00:14:46,780 --> 00:14:49,780 Svo ef ég hef númer 5 hérna, allir þættir á hægri 233 00:14:49,780 --> 00:14:51,940 eru að fara að vera meiri en 5, og á vinstri 234 00:14:51,940 --> 00:14:56,770 Allir þættir eru að fara að vera minna en 5. 235 00:14:56,770 --> 00:14:58,780 Hvers vegna er þetta að gagni? 236 00:14:58,780 --> 00:15:01,660 Jæja, ef ég vil athuga hvort tala 7 er hér, til dæmis, 237 00:15:01,660 --> 00:15:05,960 Ég fer bara til 5 fyrst og ég ætla að sjá, er 7 meiri eða minni en 5? 238 00:15:05,960 --> 00:15:09,540 Það er meiri, þannig að ég veit að það er að fara til verða að vera á hægri af trénu. 239 00:15:09,540 --> 00:15:13,980 Þannig að ég hef mikið minna efni til að líta á. 240 00:15:13,980 --> 00:15:19,520 Í framkvæmd tvöfaldur leita tré, hnút, ég ætla bara að fara að hafa til að hafa gögn, 241 00:15:19,520 --> 00:15:21,750 svo INT n, þú getur líka haft streng 242 00:15:21,750 --> 00:15:23,630 eða eitthvað sem þú vildir. 243 00:15:23,630 --> 00:15:28,100 Þú verður bara að vera varkár á að skilgreina hvað er meiri, það er minna. 244 00:15:28,100 --> 00:15:30,390 Þannig að ef þú hefðir strengi, til dæmis, þú gætir skilgreina 245 00:15:30,390 --> 00:15:34,690 að allir þessir hlutir á hægri er að fara að hafa stærri lengd, 246 00:15:34,690 --> 00:15:40,940 vinstri eru að fara að hafa lægri lengd, svo það er í raun komið að þér. 247 00:15:40,940 --> 00:15:44,930 >> Hvernig get ég innleiða finna fyrir BST? 248 00:15:44,930 --> 00:15:47,840 The fyrstur hlutur sem við verðum að gera er að athuga ef rótin er NÚLL. 249 00:15:47,840 --> 00:15:50,920 Ef það er NULL, þýðir það að hlutur er ekki þar 250 00:15:50,920 --> 00:15:53,330 vegna þess að þú þarft ekki einu sinni tré, ekki satt? 251 00:15:53,330 --> 00:15:55,790 Svo ég aftur ósatt. 252 00:15:55,790 --> 00:15:58,740 Annars, ég ætla að athuga hvort talan er hærri 253 00:15:58,740 --> 00:16:01,720 en gildið í rót. 254 00:16:01,720 --> 00:16:04,250 Ég ætla að reyna að finna frumefnið á hægri 255 00:16:04,250 --> 00:16:08,590 af trénu. 256 00:16:08,590 --> 00:16:11,310 Þú sérð að ég er að nota endurkvæmni hér. 257 00:16:11,310 --> 00:16:14,150 Og þá ef það er minna, ég ætla að líta á vinstri. 258 00:16:14,150 --> 00:16:18,330 Og að lokum, annars, ef það er ekki minna eða ekki meiri, 259 00:16:18,330 --> 00:16:20,660 það þýðir að það er gildi sjálft. 260 00:16:20,660 --> 00:16:23,010 Svo ég aftur bara satt. 261 00:16:23,010 --> 00:16:26,360 Þú getur séð hér að ég nota ef, ef, ef. 262 00:16:26,360 --> 00:16:30,820 Og muna, í spurningakeppni 0, við höfðum vandamál sem hafði ef, ef, ef, 263 00:16:30,820 --> 00:16:32,780 og þú varst að ætlast til að finna úr óhagkvæmni, 264 00:16:32,780 --> 00:16:35,180 og óhagkvæmni var að þú notaðir ef. 265 00:16:35,180 --> 00:16:39,060 Þú ættir að hafa notað ef annað hvort, annars ef, og annað. 266 00:16:39,060 --> 00:16:44,240 Svo ætti ég að nota annars ef og annars ef og annar hér? 267 00:16:44,240 --> 00:16:46,200 Hefur einhver - já? 268 00:16:46,200 --> 00:16:51,140 [Námsmaður tal, inaudible] 269 00:16:51,140 --> 00:16:53,480 Það er fullkomið. Svo hún er að segja að það skiptir ekki máli, 270 00:16:53,480 --> 00:16:55,930 bara vegna þess að þá óhagkvæmni sem við höfðum áður 271 00:16:55,930 --> 00:16:59,550 var að því, kannski ef einhver skilyrði var fullnægt, 272 00:16:59,550 --> 00:17:03,570 svo þú hefur framkvæmt aðgerð, en þá þú varst að fara að stöðva allar aðrar aðstæður. 273 00:17:03,570 --> 00:17:06,319 En í þessu tilfelli, aftur það strax, svo það skiptir ekki máli. 274 00:17:06,319 --> 00:17:09,220 Svo þú þarft ekki að nota annað hvort. 275 00:17:09,220 --> 00:17:11,740 >> Og að lokum, við skulum tala um tilraunir, 276 00:17:11,740 --> 00:17:13,800 sem er uppáhalds allra. 277 00:17:13,800 --> 00:17:15,980 A reyna er tré af fylki. 278 00:17:15,980 --> 00:17:20,369 Það er mjög fljótur að fletta upp gildum, en það notar mikið minni. 279 00:17:20,369 --> 00:17:22,530 Og yfirleitt er það að sía orð, þannig að þegar þú 280 00:17:22,530 --> 00:17:27,920 vilja til að innleiða, til dæmis, ég veit ekki, eins og símaskrá í símanum 281 00:17:27,920 --> 00:17:30,440 og þú vilt vera fær til tegund B 282 00:17:30,440 --> 00:17:32,510 og bara hafa nöfn af fólki sem hefur B. 283 00:17:32,510 --> 00:17:37,960 Það er mjög auðvelt að hrinda í framkvæmd sem nota a reyna, til dæmis. 284 00:17:37,960 --> 00:17:39,820 Hvernig skilgreinir þú hnút í að reyna? 285 00:17:39,820 --> 00:17:43,910 Þú verður bara að hafa bool sem er að fara að vera is_word. 286 00:17:43,910 --> 00:17:48,660 Sem sýnir að það að nota alla stafina fyrir þann hnút, 287 00:17:48,660 --> 00:17:51,920 þú tókst að mynda orð, 288 00:17:51,920 --> 00:17:57,230 og þá munt þú hafa óákveðinn greinir í ensku fylking af ábendingum til hnúður. 289 00:17:57,230 --> 00:18:03,120 Getur þú sjá að við höfum fjölda foreldra hnúður, svo node * array? Já? 290 00:18:03,120 --> 00:18:06,050 Svo skulum sjá hvernig það mun virka. Fyrir villuleit, 291 00:18:06,050 --> 00:18:08,230 við höfum fjölda af 27 þáttum, 292 00:18:08,230 --> 00:18:12,150 vegna þess að við höfum alla stafina auk úrfellingarmerki. 293 00:18:12,150 --> 00:18:17,800 Áður hér er ég bara að fara að nota 2 vegna þess að ég vil vera fær um að skrifa á töfluna. 294 00:18:17,800 --> 00:18:20,230 Allt í lagi. Þannig að þetta er dæmi um a reyna. 295 00:18:20,230 --> 00:18:25,600 Ef ég skilgreina bara fyrsta hnút, ég hef fjölbreytta 2 þáttum 296 00:18:25,600 --> 00:18:29,290 sem eru 2 ábendingum til NÚLL, þannig að ég setti bara "a" og "b". 297 00:18:29,290 --> 00:18:32,430 Og ég ætla að hafa bool sem segir is_word. 298 00:18:32,430 --> 00:18:34,420 Það er að fara að vera falskur fyrir þá fyrstu, 299 00:18:34,420 --> 00:18:37,370 bara vegna þess, áður en að þú þarft engar stafi. 300 00:18:37,370 --> 00:18:40,900 Svo er tóm orð ekki orð. Svo er það rangt. 301 00:18:40,900 --> 00:18:46,320 Ef ég vil bæta 'A' þessari orðabók, hvað myndi ég þarf að gera? 302 00:18:46,320 --> 00:18:49,760 Ég vildi bara að malloc nýja tengipunktur fyrir 'a', 303 00:18:49,760 --> 00:18:54,630 og þá bæta orðinu til þess að sanna. 304 00:18:54,630 --> 00:19:00,180 Svo það táknar bara að hafa 'a' er að fara til að vera satt. Skynsamleg? 305 00:19:00,180 --> 00:19:04,120 Þá ef ég vil bæta við 'BA', ég verð að malloc 1 fyrir 'B' 306 00:19:04,120 --> 00:19:07,550 og þá er ég að fara að setja upp The Boolean að rangar, 307 00:19:07,550 --> 00:19:10,160 vegna þess að "b" af sjálfu sér er ekki orð. 308 00:19:10,160 --> 00:19:13,010 Þá er ég að fara að malloc annað fyrir 'a', svo 'BA', 309 00:19:13,010 --> 00:19:16,290 og þá er ég að fara að setja upp það er orð satt. 310 00:19:16,290 --> 00:19:18,950 Vegna þess að "BA 'er orðið. 311 00:19:18,950 --> 00:19:21,910 Og þá ef "b" er ef ég vil sjá í þessari orðabók, 312 00:19:21,910 --> 00:19:26,730 Ég get bara farið á hið fyrra, 'B'. Ég fer niður, og ég lít á er orðið, og það segir ósatt. 313 00:19:26,730 --> 00:19:30,110 Svo það er ekki orð. Ef ég vil athuga 'BA', 314 00:19:30,110 --> 00:19:38,010 Ég fer í fyrstu, 'B', og þá fara í 'a', og ég sé satt, svo það er orðið. Skynsamleg? 315 00:19:38,010 --> 00:19:41,950 A einhver fjöldi af fólk fá rugla með tilraunir. Nei? 316 00:19:41,950 --> 00:19:44,740 >> Loks Huffman kóðun. Huffman kóðun er mjög gagnlegt 317 00:19:44,740 --> 00:19:47,550 til að spara minni og þjappa texta skrá, 318 00:19:47,550 --> 00:19:52,270 bara vegna þess að einhver fjöldi af sinnum þú notað 'a' og 'e', ​​til dæmis, 319 00:19:52,270 --> 00:19:57,710 í skjölum, en ég veit ekki hvort þú krakkar nota 'q' eða "Z" eins mikið. 320 00:19:57,710 --> 00:20:02,040 Hafa bara 1 bæti fyrir hvert einasta staf, 321 00:20:02,040 --> 00:20:08,520 hvert einasta - 256 stafi sem við höfum í ASCII töflunni er ekki mjög ákjósanlegur, 322 00:20:08,520 --> 00:20:11,410 bara vegna þess að það eru sumir stafir sem þú notar miklu meira, 323 00:20:11,410 --> 00:20:15,180 svo þú ættir sennilega að nota minna minni fyrir þá. 324 00:20:15,180 --> 00:20:17,560 Hvernig nota ég Huffman kóðun? 325 00:20:17,560 --> 00:20:20,010 Við verðum að gera Huffman tré. 326 00:20:20,010 --> 00:20:23,370  A Huffman tré hefur hnúður 327 00:20:23,370 --> 00:20:27,760 sem hafa tákn sem er að fara að vera eins og, 'a', 'b', 'c', bréf, 328 00:20:27,760 --> 00:20:32,990 hvað stafurinn sem þú hefur, tíðni sem er tíðni sem orðið birtist í texta, 329 00:20:32,990 --> 00:20:36,280 sem þú varst að búa til Huffman tré fyrir, 330 00:20:36,280 --> 00:20:41,800 og þá er tengipunktur sem er að fara að benda á vinstri á Huffman tré 331 00:20:41,800 --> 00:20:47,210 og annan hnút sem er að fara að benda til hægri. Svo bara eins og tré. 332 00:20:47,210 --> 00:20:49,440 Hvernig byggja þér Huffman tré? 333 00:20:49,440 --> 00:20:54,020 Þú ert að fara að velja 2 hnúta sem hafa lægstu tíðni. 334 00:20:54,020 --> 00:20:56,490 Ef þú ert með jafntefli þú ert að fara að velja 2 hnúta 335 00:20:56,490 --> 00:20:59,870 sem hafa lægstu ASCII gildi eins og heilbrigður. 336 00:20:59,870 --> 00:21:02,420 Þá þú ert að fara að búa til nýja tré út af þessum 2 hnúta 337 00:21:02,420 --> 00:21:08,030 sem er að fara að hafa samanlagt tíðni í foreldri hnút. 338 00:21:08,030 --> 00:21:13,240 Og svo þú ert að fara að fjarlægja 2 börn úr skóginum 339 00:21:13,240 --> 00:21:15,570 og skipta þeim með foreldri. 340 00:21:15,570 --> 00:21:18,930 Og þú ert að fara að endurtaka það þangað til þú hefur aðeins 1 tré í skóginum. 341 00:21:18,930 --> 00:21:23,840 Svo skulum sjá hvernig þú myndir gera Huffman tré fyrir ZAMYLA. 342 00:21:23,840 --> 00:21:29,220 Þú getur séð hér að allir stafir hafa tíðni 1 nema fyrir 'A'; sem hefur tíðnina 2. 343 00:21:29,220 --> 00:21:34,090 Svo ég stofnaði hnúður fyrir alla stafina sem ég set í röð ASCII gildi og tíðni. 344 00:21:34,090 --> 00:21:40,090 Þannig að ef ég vil búa til fyrsta tréð, það vilja vera með 'L' og 'M'. 345 00:21:40,090 --> 00:21:43,100 Svo það er hér. Tíðni par verður 2 346 00:21:43,100 --> 00:21:49,470 því það er 1 + 1, þá næst 2 með lægstu tíðni eru 'Y' og 'Z'. 347 00:21:49,470 --> 00:21:53,180 Og þá hef ég þá alla vera - hafa tíðnina 2. 348 00:21:53,180 --> 00:22:00,470 Svo hver sjálfur ert the sjálfur sem hafa lægsta ASCII gildi fyrir the næstur einn? 349 00:22:00,470 --> 00:22:04,830 'A' og 'L'. Svo ég skapa nýjan hnút, 350 00:22:04,830 --> 00:22:09,930 og að lokum, það er 4 og 2, svo 2 er að fara að vera á vinstri kantinum. 351 00:22:09,930 --> 00:22:12,430 Og þetta er Huffman tré. 352 00:22:12,430 --> 00:22:16,060 Þá ef ég vil skrifa texta, 353 00:22:16,060 --> 00:22:24,440 eins í tvöfaldur að umbreyta í texta, með Huffman tré er mjög auðvelt. 354 00:22:24,440 --> 00:22:30,220 Til dæmis, ef ég segi að færa til vinstri er 0 og færa til hægri er 1, 355 00:22:30,220 --> 00:22:32,410 Hvað er að fara til að tákna? 356 00:22:32,410 --> 00:22:35,530 Svo eins og 1, 1, svo rétt, rétt, 357 00:22:35,530 --> 00:22:40,370 og síðan 0, þannig að eftir væri L, og síðan 1, 0, 0. 358 00:22:40,370 --> 00:22:43,950 Svo 1, 0, svo bara 1, 0, 'A'. 359 00:22:43,950 --> 00:22:47,540 Og síðan 0, 1, þannig að "Z". 360 00:22:47,540 --> 00:22:52,170 Og síðan 1, 0, 0 - nr. 361 00:22:52,170 --> 00:22:56,780 0, 0 mun vera 'Y', svo latur. 362 00:22:56,780 --> 00:23:06,060 Svo er það allt fyrir mig, Rob er að fara að taka yfir. 363 00:23:06,060 --> 00:23:08,400 >> [Rob Bowden] Svo, viku 7 dót. 364 00:23:08,400 --> 00:23:11,390 Við höfum fengið mikið að fara yfir mjög hratt. 365 00:23:11,390 --> 00:23:13,430 Bita rekstraraðila, biðminni flæða, 366 00:23:13,430 --> 00:23:16,760 CS50 bókasafn, þá HTML, HTTP, CSS. 367 00:23:16,760 --> 00:23:20,990 Allt í eins 15 til 20 mínútur. 368 00:23:20,990 --> 00:23:24,330 Bita rekstraraðila. Það eru 6 af þeim sem þú þarft að vita. 369 00:23:24,330 --> 00:23:31,200 Bita og Bita eða, XOR, vinstri hliðrun, hægri vakt, og ekki. 370 00:23:31,200 --> 00:23:35,420 Hægri Shift og ekki þú sást varla í fyrirlestri á öllum. 371 00:23:35,420 --> 00:23:40,480 Við munum fara yfir það fljótt hér, en það er gott að vita að þetta eru 6 sem eru fyrir hendi. 372 00:23:40,480 --> 00:23:45,070 Mundu að Bita rekstraraðila eru eins og þegar þú gerir 3 + 4. 373 00:23:45,070 --> 00:23:49,420 Þú ert ekki að takast á við tvöfaldur á 3 og 4. 374 00:23:49,420 --> 00:23:56,550 Með Bita rekstraraðila sem þú ert í raun að takast á við einstaka bita af tölunum 3 og 4. 375 00:23:56,550 --> 00:23:59,120 >> Svo sá fyrsti sem við munum segja er Bita ekki, 376 00:23:59,120 --> 00:24:02,340 og allt það gerir er að fletta alla bita. 377 00:24:02,340 --> 00:24:05,500 Svo hér, ef þú ert að skrifa þetta í C, myndir þú ekki skrifa það 378 00:24:05,500 --> 00:24:09,380 sem ~ 11.011 eða hvað, viltu skrifa það eins og ~ 4, 379 00:24:09,380 --> 00:24:12,970 og þá myndi flettir tvíundarkerfisform 4. 380 00:24:12,970 --> 00:24:24,800 Svo hér, ~ sumir tvöfaldur númer 1101101 er að fara að einmitt flettir alla 1 í 0 og allar 0 í 1 er. 381 00:24:24,800 --> 00:24:27,600 Eins og ég segi þarna, tíð notkun þessa, 382 00:24:27,600 --> 00:24:30,830 og við munum sjá það í smá, er eins og við viljum koma upp með einhverjum fjölda 383 00:24:30,830 --> 00:24:35,460 þar sem allar bits eru 1, nema fyrir einn af þeim. 384 00:24:35,460 --> 00:24:38,560 Svo það er yfirleitt auðveldara að tjá fjölda 385 00:24:38,560 --> 00:24:40,630 þar bara að einn hluti er sett, 386 00:24:40,630 --> 00:24:44,650 og síðan taka ~ af því, svo annan hvern bita er sett nema fyrir það eitt. 387 00:24:44,650 --> 00:24:50,300 Svo er það sem við erum að fara að nota meira í bita. 388 00:24:50,300 --> 00:24:58,220 >> Bita eða. Hér eru 2 tvöfaldur tölur, og þessar 2 tölur 389 00:24:58,220 --> 00:25:00,780 eru nokkuð dæmigerð, þar sem þeir tákna hvert mögulegt 390 00:25:00,780 --> 00:25:07,290 samsetning af bitum sem þú gætir þurft að ganga á. 391 00:25:07,290 --> 00:25:13,540 Hér þegar ég or'd hvern bita, við erum bara að fara að bera saman beint niður. 392 00:25:13,540 --> 00:25:15,410 Svo á vinstri hlið við erum með 1 og 1. 393 00:25:15,410 --> 00:25:20,510 Þegar ég Bita | þá, hvað er ég að fara að fá? Einn. 394 00:25:20,510 --> 00:25:25,320 Þá Bita | 0 og 1 er að fara að gefa mér? Einn. 395 00:25:25,320 --> 00:25:27,840 Bita 1 og 0 er að fara til vera the sami hlutur, einn. 396 00:25:27,840 --> 00:25:31,880 Bita 0 | 0 er að fara að gefa mér 0. 397 00:25:31,880 --> 00:25:37,300 Svo er eina málið þar sem ég fá 0 í 0 | 0 tilfelli. 398 00:25:37,300 --> 00:25:40,020 Og þú getur hugsa um að rétt eins og rökrétt ors þínum. 399 00:25:40,020 --> 00:25:44,830 Svo ef þú heldur að 1 eins satt og 0 eins falskur, það sama gildir hér. 400 00:25:44,830 --> 00:25:50,040 Svo satt eða satt er satt, satt eða ósatt er satt. 401 00:25:50,040 --> 00:25:57,150 Rangar eða satt er satt, ósatt eða rangt er það eina sem er í raun rangt. 402 00:25:57,150 --> 00:26:00,100 Hér er dæmi sem þú ættir að vita 403 00:26:00,100 --> 00:26:05,160 sem nokkuð gott dæmi um þegar Bita rekstraraðila eru notuð. 404 00:26:05,160 --> 00:26:08,660 Hér ef við eða höfuðborg 'A' með Ox20, 405 00:26:08,660 --> 00:26:11,830 og við munum líta á þetta í annað, fáum við eitthvað. 406 00:26:11,830 --> 00:26:16,020 Og ef við eða lágstafir 'a' með Ox20, fáum við eitthvað. 407 00:26:16,020 --> 00:26:26,750 Svo skulum draga upp ASCII töflunni. 408 00:26:26,750 --> 00:26:34,000 Allt í lagi. Hér sjáum við að 'A' er - 409 00:26:34,000 --> 00:26:36,920 hér höfum við 'A' er aukastaf 65. 410 00:26:36,920 --> 00:26:45,120 En ég ætla að fara með sextánskur, sem er Ox41. 411 00:26:45,120 --> 00:26:48,280 Nokkuð viss um að við sáum það í bekknum. Ég held að við sáum það í bekknum 412 00:26:48,280 --> 00:26:52,730 að það er nokkuð auðvelt að breyta frá sextánskur til tvöfaldur. 413 00:26:52,730 --> 00:26:55,280 Svo hér, ef ég vil setja 4 í tvöfaldur, 414 00:26:55,280 --> 00:26:59,550 það er bara að fara að vera 0100. 415 00:26:59,550 --> 00:27:03,620 Þetta er 1 er staðurinn, 2 er staður, 4 er staðurinn, þannig að þetta er 4. 416 00:27:03,620 --> 00:27:08,550 Þá get ég skipt 1 í tvöfaldur, sem er að fara að vera 0001. 417 00:27:08,550 --> 00:27:14,280 Og svo þetta er að fara að vera byggður á 'A' í tvöfaldur. 418 00:27:14,280 --> 00:27:22,720 Taka lágstafir 'a', það er nú að fara að vera Ox61, 419 00:27:22,720 --> 00:27:27,050 þar, að skipta þessum upp í tvöfaldur, þannig að 6 - 420 00:27:27,050 --> 00:27:37,830 Skulum gera í raun það - það er engin strokleður? Strokleður. 421 00:27:37,830 --> 00:27:48,220 Ox61. Svo skipta 6 í tvöfaldur er að fara að vera 0 + 4 + 2 + 0. 422 00:27:48,220 --> 00:27:54,610 Og skerandi 1 er að fara að vera 0001. 423 00:27:54,610 --> 00:27:56,520 Horfa á muninn á þessum 2, 424 00:27:56,520 --> 00:28:04,250 sjáum við að eini munurinn á lágstöfum og höfuðborg 'A' er þetta einn hluti. 425 00:28:04,250 --> 00:28:11,810 Svo koma aftur hingað - allt í lagi. 426 00:28:11,810 --> 00:28:15,920 Koma aftur til hér, ef við lítum á það sem hluti Ox20 er, 427 00:28:15,920 --> 00:28:22,210 svo skerandi Ox20 í tvöfaldur þess, 428 00:28:22,210 --> 00:28:27,310 er 0010, 0000. 429 00:28:27,310 --> 00:28:33,470 Ox20, eina hluti sem er sett er þetta hluti sem við erum áhyggjur með, 430 00:28:33,470 --> 00:28:38,210 með að skipta á milli há-og lágstöfum 'A'. 431 00:28:38,210 --> 00:28:47,610 Ef ég eða 'A', sem er þetta, 'A', 432 00:28:47,610 --> 00:28:50,580 ef ég eða 'a' með Ox20, 433 00:28:50,580 --> 00:28:53,490 hvað er ég að fara að fá? 434 00:28:53,490 --> 00:28:58,960 [Námsmaður, inaudible] >> lágstöfum 'a', því það er að fara til selbiti þessa hluti til 1. 435 00:28:58,960 --> 00:29:04,170 Og ef ég eða 'a' með Ox20, hvað er ég að fara að fá? 436 00:29:04,170 --> 00:29:08,780 Lágstafir A, vegna þess að bara oring 'a' með Ox20, 437 00:29:08,780 --> 00:29:14,580 Ég ætla bara að fara að vera oring þetta einasta bita til 1 og það er nú þegar 1, svo það skiptir ekki máli. 438 00:29:14,580 --> 00:29:17,960 Svo við fáum 'a' og 'A'. 439 00:29:17,960 --> 00:29:24,820 >> Bita og. Aftur getum við að hugsa um þetta sem okkar rökrétt og hliðstæðu. 440 00:29:24,820 --> 00:29:28,180 Á vinstri hlið við höfum satt og satt. 441 00:29:28,180 --> 00:29:31,160 Það er að fara til að vera satt, og fyrir alla af þeim tilvikum, 442 00:29:31,160 --> 00:29:36,270 rangar og satt eða satt og ósatt, eða rangar og rangt, 443 00:29:36,270 --> 00:29:38,550 ekkert af þessum hlutum eru sönn. 444 00:29:38,550 --> 00:29:44,170 Svo er það sem við á endanum að fá 1000. 445 00:29:44,170 --> 00:29:48,830 Svo nú, hér, hér er þar sem ég hef notað traustur Bita ekki, 446 00:29:48,830 --> 00:29:52,230 þar sem við höfðum Ox20. 447 00:29:52,230 --> 00:29:54,350 Svo er þetta Ox20. 448 00:29:54,350 --> 00:29:59,570 Nú það sem ég vil gera, Bita ~ á Ox20. 449 00:29:59,570 --> 00:30:03,600 Sem er að fara að Flip alla bita. 450 00:30:03,600 --> 00:30:09,330 Þannig að ég hef 1101, 1111. 451 00:30:09,330 --> 00:30:18,940 Og svo 'A' anded með ~ Ox20 er að fara að gefa mér hvað? 452 00:30:18,940 --> 00:30:22,430 Eina hluti sem við þurfum virkilega að hugsa um er þetta ein, 453 00:30:22,430 --> 00:30:26,020 þar sem, ef öll þessi bits eru stillt á 1, 454 00:30:26,020 --> 00:30:29,000 þá erum við að fara að fá nákvæmlega það sem 'A' var, 455 00:30:29,000 --> 00:30:31,260 nema hugsanlega hvað þetta hluti er. 456 00:30:31,260 --> 00:30:34,460 Vegna þess að ef það var 1, nú er það að fara að vera stillt á 0, 457 00:30:34,460 --> 00:30:39,810 vegna þess hvað þetta er, anded með þetta er að fara að vera 0. 458 00:30:39,810 --> 00:30:43,280 Svo er það sem 'A' & ~ Ox20 að fara að gefa mér? 459 00:30:43,280 --> 00:30:48,200 [Nemendur svara, inaudible] >> Og hvað er 'a' og - það er 'A'. 460 00:30:48,200 --> 00:30:52,170 Og hvað er 'a' & ~ Ox20 að fara að gefa mér? 461 00:30:52,170 --> 00:30:56,720 'A.' Vegna þess að þetta er eins og a 1. 462 00:30:56,720 --> 00:30:59,570 Anding með þessari 0 er að fara að gera það 0, 463 00:30:59,570 --> 00:31:02,530 og nú erum við að fara að fá 'A'. 464 00:31:02,530 --> 00:31:06,600 >> Báðir eru 'A' og síðast en ekki síst af þessu tagi, 465 00:31:06,600 --> 00:31:10,830 við höfum XOR. Það er mjög mikið eins og, 466 00:31:10,830 --> 00:31:14,400 nema það þýðir eingöngu eða. 467 00:31:14,400 --> 00:31:18,420 Þetta er eins og það sem þú venjulega eins eða í hinum raunverulega heimi. 468 00:31:18,420 --> 00:31:23,190 Svo þú gerir annað hvort 'x' eða 'y', en ekki bæði. 469 00:31:23,190 --> 00:31:28,700 Hér 1 ^ 1 er að fara að vera 0. 470 00:31:28,700 --> 00:31:33,650 Vegna þess að sanna, þetta er - það virkar ekki eins vel með rökrétt satt og ósatt 471 00:31:33,650 --> 00:31:37,150 sem Bita & og eða gera, 472 00:31:37,150 --> 00:31:40,100 en satt ^ satt er ósatt. 473 00:31:40,100 --> 00:31:44,810 Vegna þess að við viljum bara að skila true ef aðeins einn af þeim er rétt. 474 00:31:44,810 --> 00:31:50,950 Svo 1 ^ 1 0. Hvað um 0 ^ 1? 475 00:31:50,950 --> 00:31:56,010 Er 1. 1 ^ 0 er 1, 0 ^ 0 0. 476 00:31:56,010 --> 00:32:03,890 Svo undir öllum kringumstæðum, 0 Bita eitthvað 0 er að fara að vera 0. 477 00:32:03,890 --> 00:32:10,270 1 Bita eitthvað 0 eða 0 Bita 1, 478 00:32:10,270 --> 00:32:14,660 ef það er | eða ^, verður það að vera 1, og ef það er & það verður 0. 479 00:32:14,660 --> 00:32:20,850 Og eina málið þar sem 1 Bita 1 er ekki 1 er með einkarétt eða. 480 00:32:20,850 --> 00:32:24,580 Það er 0110. 481 00:32:24,580 --> 00:32:36,520 Svo hér nú, með því að nota XOR - þannig að við erum aftur á 20. 482 00:32:36,520 --> 00:32:43,480 'A' ^ Ox20 er þessir 2 bitar við erum að bera saman. 483 00:32:43,480 --> 00:32:50,020 Svo 1 ^ 0 er að fara að gefa mér hvað? A einn. 484 00:32:50,020 --> 00:32:58,430 'A' ^ Ox20 er að fara að gefa mér? Lágstafir a. 485 00:32:58,430 --> 00:33:04,010 'A' ^ Ox20 er að fara að gefa mér? Capital A. 486 00:33:04,010 --> 00:33:09,310 Vegna þess hvað þetta er að gera, þetta XORing með Ox20 487 00:33:09,310 --> 00:33:15,380 er í raun ósvífni hvað þetta hluti er. 488 00:33:15,380 --> 00:33:21,240 Ef þetta er 0, það er nú að fara að verða 1. 489 00:33:21,240 --> 00:33:26,160 Þar sem þetta er 1, 1 ^ 1 0. 490 00:33:26,160 --> 00:33:33,280 Svo okkar 'a' hefur orðið 'A' og 'A' okkar hefur orðið "a". 491 00:33:33,280 --> 00:33:36,910 Svo er XOR mjög þægilegan hátt á bara ósvífni málið. 492 00:33:36,910 --> 00:33:39,960 Þú vilt bara að iterate yfir a band af bréfum 493 00:33:39,960 --> 00:33:44,330 og varamaður ræða hvert einasta staf, 494 00:33:44,330 --> 00:33:50,680 þú bara XOR allt með Ox20. 495 00:33:50,680 --> 00:33:55,220 >> Nú höfum við vinstri vakt. Vinstri Shift er bara að fara að, í grundvallaratriðum, 496 00:33:55,220 --> 00:34:01,250 ýta allar tölur inn í, eða til vinstri, og settu 0 á bak þeim. 497 00:34:01,250 --> 00:34:05,550 Svo hér höfum við 00.001.101. 498 00:34:05,550 --> 00:34:08,560 Við erum að fara að ýta 3 0 er frá hægri, 499 00:34:08,560 --> 00:34:13,580 og við fáum 01.101.000. 500 00:34:13,580 --> 00:34:16,380 Í nonbinary skilmálum, 501 00:34:16,380 --> 00:34:24,699 sjáum við að það er í raun að takast á 13 vinstri-færst með 3, sem gefur okkur 104. 502 00:34:24,699 --> 00:34:32,530 Svo vinstri breytast, sjáum við hér, x << y er í grundvallaratriðum x * 2 ^ y. 503 00:34:32,530 --> 00:34:40,139 13 * 2 ^ 3, 2 ^ 3 er 8, þannig að 13 * 8 er 104. 504 00:34:40,139 --> 00:34:45,679 Ef þú heldur bara um tvöfaldur Almennt, hvernig hvern tölustaf, 505 00:34:45,679 --> 00:34:49,530 ef við byrjum frá hægri, það er 1 í stað, þá 2 er staður, þá 4 sæti. 506 00:34:49,530 --> 00:34:51,330 Svo með því að ýta á 0 er frá hægri, 507 00:34:51,330 --> 00:34:55,080 við erum bara að þrýsta hluti sem voru í 4 er stað til 8 er stað, 508 00:34:55,080 --> 00:34:57,920 og hlutir sem voru í 8 er stað til 16 sæti. 509 00:34:57,920 --> 00:35:01,280 Hver vakt margfaldar bara með 2. Já? 510 00:35:01,280 --> 00:35:05,210 [Nemandi] Hvað gerist ef þú færst um 5? 511 00:35:05,210 --> 00:35:10,790 [Bowden] Ef þú færst um 5 þú myndi bara missa tölustafir. 512 00:35:10,790 --> 00:35:15,410 Óhjákvæmilega er það sama. Eins, eru heiltölur aðeins 32 bita, 513 00:35:15,410 --> 00:35:20,750 þannig að ef þú bætir við 2 mjög stór heiltölur, það bara passar ekki í heiltölu. 514 00:35:20,750 --> 00:35:23,660 Svo er það sama hér. Ef þú færst um 5, 515 00:35:23,660 --> 00:35:25,650 við myndum bara missa þessi einn. 516 00:35:25,650 --> 00:35:28,820 Og það er góður af því sem ég meina með "illa" 517 00:35:28,820 --> 00:35:37,470 þar sem ef þú vakt of langt, þú missa bita. 518 00:35:37,470 --> 00:35:39,830 >> Hægri vakt er að fara að vera hið gagnstæða, 519 00:35:39,830 --> 00:35:43,090 þar sem við erum að fara að shove 0 er slökkt á endanum, 520 00:35:43,090 --> 00:35:48,400 og með tilliti til okkar, fylla í 0 frá vinstri. 521 00:35:48,400 --> 00:35:52,910 Svo að gera þetta, við erum í rauninni að snúa því sem við höfðum þegar gert. 522 00:35:52,910 --> 00:35:57,780 Og við sjáum að þrír 0 er á hægri hafa bara fallið burt, 523 00:35:57,780 --> 00:36:02,020 og við höfum ýtt 1101 alla leið til hægri. 524 00:36:02,020 --> 00:36:08,380 Þetta er að gera 104 >> 3, sem er, á áhrifaríkan hátt, x / 2 ^ y. 525 00:36:08,380 --> 00:36:11,200 Svo nú, hér er það svipað þeirri hugmynd. 526 00:36:11,200 --> 00:36:18,720 Hvers vegna er það bara u.þ.b. x / 2 ^ y, og í raun ekki x / 2 ^ Y? 527 00:36:18,720 --> 00:36:22,240 Vegna þess að ef ég hefði færst um 4, þá hefði ég misst 1. 528 00:36:22,240 --> 00:36:25,950 Í grundvallaratriðum, hvað þú hugsa um, hugsa bara um heiltölu deild almennt. 529 00:36:25,950 --> 00:36:31,070 Svo, eins og 5/2 er 2. Það er ekki 2.5. 530 00:36:31,070 --> 00:36:35,000 Það er sama hugmynd hér. Þegar við deilum um 2, 531 00:36:35,000 --> 00:36:39,910 getum við orðið stakur bits á leiðinni. 532 00:36:39,910 --> 00:36:43,870 Svo nú - það er það fyrir Bita. Það er allt sem þú þarft að vita. 533 00:36:43,870 --> 00:36:46,340 Mundu notkun tilvikum og við sáum í bekknum, 534 00:36:46,340 --> 00:36:49,340 eins og a hluti gríma er gagnlegt fyrir Bita rekstraraðila, 535 00:36:49,340 --> 00:36:53,220 eða þú nota þá fyrir hluti grímur. 536 00:36:53,220 --> 00:36:58,620 Hástöfum og lágstöfum, viðskipti er mjög dæmigerðu dæmi. 537 00:36:58,620 --> 00:37:01,640 >> Jæja, svo biðminni flæða yfir árás. 538 00:37:01,640 --> 00:37:05,110 Einhver man hvað var athugavert við þessa aðgerð? 539 00:37:05,110 --> 00:37:10,140 Taka við lýst fjölda 12 bæti, 12 Sérstafir, 540 00:37:10,140 --> 00:37:18,510 og þá erum við að afrita inn í biðminni okkar 12 stafir allt band bar. 541 00:37:18,510 --> 00:37:25,080 Svo er það vandamálið hér? 542 00:37:25,080 --> 00:37:32,270 Galdur númer 12 ætti nánast strax skjóta út eins - hvers vegna 12? 543 00:37:32,270 --> 00:37:35,050 Hvað ef barinn verður að vera meira en 12 stafir? 544 00:37:35,050 --> 00:37:41,200 Hvað ef bar er milljónir af stöfum? 545 00:37:41,200 --> 00:37:46,010 Hér er málið memcpy. Ef bar er nógu lengi, 546 00:37:46,010 --> 00:37:50,330 það verður bara alveg - 'c', 'c' er ekki sama að það var aðeins 12 stafir; 547 00:37:50,330 --> 00:37:53,280 'C' er ekki sama að það getur ekki passa að mörg bæti. 548 00:37:53,280 --> 00:37:58,250 Það verður bara alveg skrifa bleikju, 12 bæti við höfum úthlutað fyrir það, 549 00:37:58,250 --> 00:38:01,830 og allt yfir það í minni sem er í raun ekki tilheyra þeim buffer 550 00:38:01,830 --> 00:38:06,520 með hvað band bar er. 551 00:38:06,520 --> 00:38:09,780 Þannig að þetta var myndin sem við sáum í bekknum 552 00:38:09,780 --> 00:38:12,220 þar sem við höfum stafla okkar vaxa upp. 553 00:38:12,220 --> 00:38:16,040 Þú ættir að nota til að þessar myndir eða fá kunnuglegur með þeim aftur. 554 00:38:16,040 --> 00:38:21,260 Við höfum stafla okkar vaxa upp, byrja minni heimilisföng á 0 efst 555 00:38:21,260 --> 00:38:26,270 og vaxa niður að eins 4 milljarða neðst. 556 00:38:26,270 --> 00:38:28,820 Við höfum array okkar 'c' einhversstaðar í minni, 557 00:38:28,820 --> 00:38:32,260 þá höfum við bendi okkar að bar rétt undir það, 558 00:38:32,260 --> 00:38:38,720 og þá höfum við þetta vistað ramma bendi á heimilisfang aftur okkar og stafla móðurfélagsins venja okkar. 559 00:38:38,720 --> 00:38:40,800 Muna hvað aftur heimilisfang er? 560 00:38:40,800 --> 00:38:45,360 Það er þegar aðal kallar virka foo, kallar fall bar, 561 00:38:45,360 --> 00:38:48,100 óhjákvæmilega, bar aftur. 562 00:38:48,100 --> 00:38:52,610 Svo þegar bar aftur, þeir þurfa að vita að það er að fara aftur til foo sem heitir það. 563 00:38:52,610 --> 00:39:01,360 Svo er aftur heimilisfang veffang virka sem það hefur að fara aftur í þegar skilar. 564 00:39:01,360 --> 00:39:05,830 Ástæðan sem er mikilvægt fyrir yfirflæði árásum er því, þægilegur, 565 00:39:05,830 --> 00:39:09,580 tölvusnápur eins og að breyta því aftur heimilisfang. 566 00:39:09,580 --> 00:39:14,950 Stað þess að fara aftur til foo, ég ætla að fara aftur til hvar sem tölvusnápur vill mig að fara aftur til. 567 00:39:14,950 --> 00:39:17,760 Og þægilegur, þar sem tölvusnápur vill oft til að fara aftur til 568 00:39:17,760 --> 00:39:22,400 er the byrjun af the biðminni sem við höfðum upphaflega. 569 00:39:22,400 --> 00:39:26,170 Svo taka eftir, aftur, Little Indian. 570 00:39:26,170 --> 00:39:28,490 Tækið er dæmi um Little Indian kerfi, 571 00:39:28,490 --> 00:39:34,140 svo heiltala eða bendillinn er geymt við bæti baka. 572 00:39:34,140 --> 00:39:38,980 Svo hér sjáum við - er þetta? Já. 573 00:39:38,980 --> 00:39:45,660 Við sjáum Ox80, OxC0, Ox35, OxO8. 574 00:39:45,660 --> 00:39:48,250 Mundu sextánskur tölustafir? 575 00:39:48,250 --> 00:39:50,640 Við andstæða ekki sextánskur tölustafir Little Indian, 576 00:39:50,640 --> 00:39:56,110 því 2 sextánskur tölustafir gera upp eitt bæti, og við að snúa við bæti. 577 00:39:56,110 --> 00:40:00,300 Það er þess vegna sem við geymum ekki, eins, 80530CO8. 578 00:40:00,300 --> 00:40:07,520 Við geymum í staðinn, hvert par af 2 tölustöfum, frá hægri. 579 00:40:07,520 --> 00:40:10,880 Þetta netfang er átt við veffang upphafi 580 00:40:10,880 --> 00:40:15,190 biðminni okkar sem við viljum í raun og veru að afrita inn í fyrsta sæti. 581 00:40:15,190 --> 00:40:19,230 Ástæðan sem er gagnlegt er vegna þess, hvað ef árásarmaður 582 00:40:19,230 --> 00:40:24,100 gerðist, í stað þess að hafa band sem var bara 583 00:40:24,100 --> 00:40:27,060 skaðlaus strengur eins, nafn þeirra eða eitthvað, 584 00:40:27,060 --> 00:40:33,900 hvað ef í staðinn, að strengur væri eitthvað handahófskennt númer 585 00:40:33,900 --> 00:40:38,610 sem gerði allt sem þeir vildu það til að gera? 586 00:40:38,610 --> 00:40:45,630 Svo þeir gætu - Ég get ekki hugsað um hvaða kaldur kóða. 587 00:40:45,630 --> 00:40:47,780 Það gæti verið nokkuð, þó. Allir hörmulegu kóða. 588 00:40:47,780 --> 00:40:51,440 Ef þeir vilja, þeir gætu bara gert eitthvað á seg galla, en það væri tilgangslaust. 589 00:40:51,440 --> 00:40:54,950 Þeir gera það venjulega að hakk í kerfið. 590 00:40:54,950 --> 00:40:59,930 >> Lagi. CS50 bókasafn. 591 00:40:59,930 --> 00:41:04,800 Þetta er, í grundvallaratriðum, GetInt, getString, allir þessir aðgerðir við veitt fyrir þig. 592 00:41:04,800 --> 00:41:10,630 Þannig að við höfum char * band, og það er sem nýtt að við blés burtu 593 00:41:10,630 --> 00:41:12,450 á einhverjum tímapunkti á önninni. 594 00:41:12,450 --> 00:41:18,220 Mundu að band er bara fylki af stöfum. 595 00:41:18,220 --> 00:41:23,240 Svo hér sjáum við stytt útgáfa getString. 596 00:41:23,240 --> 00:41:25,920 Þú ættir að líta til baka á það að muna hvernig það er í raun til framkvæmda. 597 00:41:25,920 --> 00:41:30,950 Helstu upplýsingar eru, eftir sem við fáum í eina persónu í einu 598 00:41:30,950 --> 00:41:34,570 frá staðall í, sem er alveg eins og okkur að slá á lyklaborðið. 599 00:41:34,570 --> 00:41:37,890 Svo einn staf í einu, og ef við fáum of marga stafi, 600 00:41:37,890 --> 00:41:40,580 þannig að ef n + 1 er meiri en getu, 601 00:41:40,580 --> 00:41:44,140 þá þurfum við að auka getu buffer okkar. 602 00:41:44,140 --> 00:41:47,780 Svo hér erum við tvöföldun á stærð við buffer okkar. 603 00:41:47,780 --> 00:41:51,840 Og það heldur að fara, við að setja staf í biðminni okkar 604 00:41:51,840 --> 00:41:56,220 þar til við fá nýja línu eða lok skrá eða hvað, 605 00:41:56,220 --> 00:41:59,380 í því tilviki, við erum búin með band og síðan alvöru getString 606 00:41:59,380 --> 00:42:05,120 hlaupið minni, eins og ef við úthlutað of mikið minni það verður að fara aftur og skreppa aðeins. 607 00:42:05,120 --> 00:42:08,830 Þannig að við sýnum ekki það, en helsta hugmynd er 608 00:42:08,830 --> 00:42:11,960 það hefur til að lesa í einum staf í einu. 609 00:42:11,960 --> 00:42:17,140 Það getur ekki bara lesið í heild hlutur í einu, 610 00:42:17,140 --> 00:42:19,550 af því að dúa þeirra er eingöngu af ákveðinni stærð. 611 00:42:19,550 --> 00:42:26,590 Þannig að ef strengurinn að það reynir að setja inn biðminni er of stór, þá væri flæða. 612 00:42:26,590 --> 00:42:28,940 Svo hér við veg að með því aðeins að lesa í einum staf 613 00:42:28,940 --> 00:42:33,750 í einu og vaxandi þegar við þurfum að. 614 00:42:33,750 --> 00:42:40,270 Svo GetInt og aðrar CS50 bókasafn virka tilhneigingu til að nota getString 615 00:42:40,270 --> 00:42:42,310 í gerð þeirra. 616 00:42:42,310 --> 00:42:45,370 Svo ég var lögð áhersla á mikilvæga hluti hér. 617 00:42:45,370 --> 00:42:49,460 Það kallar getString að fá band. 618 00:42:49,460 --> 00:42:51,710 Ef getString ekki orðnar minni, 619 00:42:51,710 --> 00:42:54,270 muna að getString mallocs eitthvað, svo þegar þú hringir getString 620 00:42:54,270 --> 00:42:57,820 þú ættir ekki (óskiljanlegur) ókeypis að streng sem þú fékkst. 621 00:42:57,820 --> 00:43:02,870 Svo hér, ef það tókst ekki að malloc eitthvað aftur við INT_MAX sem bara fána sem, 622 00:43:02,870 --> 00:43:05,650 hey, við vorum í raun ekki hægt að fá heila tölu. 623 00:43:05,650 --> 00:43:10,830 Þú ættir að hunsa hvað ég aftur koma til þín, eða 624 00:43:10,830 --> 00:43:15,540 þú ættir ekki að meðhöndla þetta sem gild inntak. 625 00:43:15,540 --> 00:43:21,360 Að lokum, að því gefnu að hafi tekist, við notum sscanf með þessi sérstakur fáni, 626 00:43:21,360 --> 00:43:23,820 sem þýðir, fyrst passa heiltölu, 627 00:43:23,820 --> 00:43:26,770 þá passa allir stafir eftir þann heiltölu. 628 00:43:26,770 --> 00:43:29,070 Svo taka við viljum það til að jafna 1. 629 00:43:29,070 --> 00:43:32,940 Svo sscanf skilar hversu margar samsvaranir ef tekist gert? 630 00:43:32,940 --> 00:43:37,010 Það mun skila 1 ef það passar tókst heiltölu, 631 00:43:37,010 --> 00:43:40,890 það mun skila 0 ef hún passaði ekki heiltala, og það mun skila 2 632 00:43:40,890 --> 00:43:45,920 ef það passar heiltala eftir einhverjum staf. 633 00:43:45,920 --> 00:43:49,780 Svo taka við reyna aftur ef við passa allt annað en 1. 634 00:43:49,780 --> 00:43:55,230 Þannig að ef við inn 1, 2, 3, C, eða 1, 2, 3, X, 635 00:43:55,230 --> 00:43:57,400 þá 1, 2, 3 myndi fá geymd í heiltala, 636 00:43:57,400 --> 00:43:59,620 X myndi fá geymd á eðli, 637 00:43:59,620 --> 00:44:06,410 sscanf myndi skila 2, og við myndum reyna aftur, vegna þess að við viljum aðeins heiltölu. 638 00:44:06,410 --> 00:44:09,810 >> Fljótt blása í gegnum HTML, HTTP, CSS. 639 00:44:09,810 --> 00:44:15,340 HyperText Markup Language er uppbygging og merkingarfræði af vefnum. 640 00:44:15,340 --> 00:44:19,960 Hér er dæmi úr fyrirlestri þar sem við höfum HTML tags. 641 00:44:19,960 --> 00:44:22,110 Við höfum höfuð tags, líkami tags, 642 00:44:22,110 --> 00:44:27,770 við höfum dæmi um auðar þar sem við í raun ekki hafa a byrja og loka tag, 643 00:44:27,770 --> 00:44:30,820 við höfum bara tengilinn og mynd. 644 00:44:30,820 --> 00:44:38,480 Það er engin lokun mynd tag, það er bara eitt merki sem nær allt að merkið þarf að gera. 645 00:44:38,480 --> 00:44:41,950 The hlekkur er dæmi, við munum sjá hvernig þú hlekkur til CSS, 646 00:44:41,950 --> 00:44:45,910 handritið er dæmi um hvernig þú hlekkur til utanaðkomandi JavaScript. 647 00:44:45,910 --> 00:44:53,100 Það er ansi einfalt, og muna, HTML er ekki forritunarmál. 648 00:44:53,100 --> 00:44:58,250 Hér muna hvernig þú myndir skilgreina form eða að minnsta kosti hvað þetta myndi gera? 649 00:44:58,250 --> 00:45:01,740 Slíku formi er með verkun og aðferð. 650 00:45:01,740 --> 00:45:06,210 Þeim aðferðum sem þú verður bara alltaf sérð eru GET og POST. 651 00:45:06,210 --> 00:45:09,040 Svo fá er útgáfa þar sem hlutur fær setja í vefslóðinni. 652 00:45:09,040 --> 00:45:11,680 POST er þar sem það er ekki sett í vefslóðinni. 653 00:45:11,680 --> 00:45:18,520 Staðinn, öll gögn frá formi er sett meira falinn í HTTP beiðni. 654 00:45:18,520 --> 00:45:22,390 Svo hér, aðgerð skilgreinir þar sem HTTP beiðni fer. 655 00:45:22,390 --> 00:45:27,490 Þar sem það er að fara er google.com / search. 656 00:45:27,490 --> 00:45:32,890 Aðferð. Mundu muninn FÁ og POST, 657 00:45:32,890 --> 00:45:37,200 og bara segja sem dæmi, ef þú vilja til bókamerki eitthvað. 658 00:45:37,200 --> 00:45:40,660 Þú munt aldrei vera fær um að bókamerki a staða vefslóð 659 00:45:40,660 --> 00:45:44,970 vegna þess að gögn er ekki innifalið í vefslóðinni. 660 00:45:44,970 --> 00:45:49,790 >> HTTP, nú er, HyperText Transfer Protocol. 661 00:45:49,790 --> 00:45:54,080 The Hypertext Transfer Protocol, myndir þú búast við það til að flytja 662 00:45:54,080 --> 00:45:57,710 HyperText Markup Language, og það gerir. 663 00:45:57,710 --> 00:46:00,170 En það flytja líka einhverjar myndir sem þú finnur á vefnum, 664 00:46:00,170 --> 00:46:05,400 hlaða neinu niður sem þú gerir byrjar sem HTTP beiðni. 665 00:46:05,400 --> 00:46:10,350 Svo HTTP er bara tungumál World Wide Web. 666 00:46:10,350 --> 00:46:15,610 Og hér getur þú þarft að viðurkenna svona HTTP beiðni. 667 00:46:15,610 --> 00:46:19,300 Hér HTTP/1.1 á hlið bara segir það er útgáfa 668 00:46:19,300 --> 00:46:21,570 bókunar ég nota. 669 00:46:21,570 --> 00:46:25,770 Það er ansi mikið alltaf að fara að vera HTTP/1.1, eins og þú munt sjá það. 670 00:46:25,770 --> 00:46:30,110 Þá sjáum við að þetta var fengið, því val að vera POST, að þú gætir séð. 671 00:46:30,110 --> 00:46:40,790 Og slóðin sem ég var að reyna að heimsækja var www.google.com/search?q = bla, bla, bla. 672 00:46:40,790 --> 00:46:44,240 Þannig að muna að þetta er spurningarmerki q = bla bla bla, 673 00:46:44,240 --> 00:46:49,040 er tegund af efni sem er lögð fram af formi. 674 00:46:49,040 --> 00:46:51,830 Viðbrögð það gæti aftur til mín myndi líta eitthvað eins og this. 675 00:46:51,830 --> 00:46:54,050 Aftur, byrjun með the siðareglur, sem er að fara að vera það, 676 00:46:54,050 --> 00:46:59,190 á eftir stöðukóðanum. Hér er það 200 lagi. 677 00:46:59,190 --> 00:47:05,060 Og að lokum, vefsíðan sem ég spurði reyndar að verður fylgt. 678 00:47:05,060 --> 00:47:08,210 Hugsanleg stöðukóði þú gætir séð, og þú ættir að vita nokkrir af þeim. 679 00:47:08,210 --> 00:47:12,770 200 OK þú hefur sennilega séð áður. 680 00:47:12,770 --> 00:47:17,830 403 Forbidden, 404 Not Found, 500 Innri Framreiðslumaður Villa 681 00:47:17,830 --> 00:47:22,140 er yfirleitt ef þú ferð á vef og eitthvað er brotinn eða þeirra PHP kóða hrun, 682 00:47:22,140 --> 00:47:24,930 en í tækið sem við höfum sem stór appelsína kassi 683 00:47:24,930 --> 00:47:27,830 sem kemur upp og segir, eins og, eitthvað er rangt, þetta númer virkar ekki 684 00:47:27,830 --> 00:47:30,380 eða þessi aðgerð er slæmt. 685 00:47:30,380 --> 00:47:33,230 Venjulega vefsíður vilt ekki að vita hvaða aðgerðir eru í raun slæmt, 686 00:47:33,230 --> 00:47:37,880 svo í staðinn að þeir ætla bara að gefa þér 500 Innri Framreiðslumaður Villa. 687 00:47:37,880 --> 00:47:43,050 >> TCP / IP er 1 lag undir HTTP. 688 00:47:43,050 --> 00:47:47,550 Mundu að það er Internet utan World Wide Web. 689 00:47:47,550 --> 00:47:52,270 Eins ef þú spilar online leikur sem ekki fara í gegnum HTTP, 690 00:47:52,270 --> 00:47:55,740 það er að fara í gegnum mismunandi - það er enn að nota internetið, 691 00:47:55,740 --> 00:47:58,900 en það þýðir ekki að nota HTTP. 692 00:47:58,900 --> 00:48:02,470 HTTP er bara eitt dæmi um siðareglur byggð á TCP / IP. 693 00:48:02,470 --> 00:48:07,820 IP þýðir bókstaflega Internet Protocol. 694 00:48:07,820 --> 00:48:11,500 Sérhver tölva hefur IP tölu, þeir eru þeir 4-tölustafa hlutir 695 00:48:11,500 --> 00:48:16,510 eins 192.168.2.1, eða hvað, sem hefur tilhneigingu til að vera á staðnum einn. 696 00:48:16,510 --> 00:48:23,390 En það er mynstur af IP heimilisfang. 697 00:48:23,390 --> 00:48:29,060 Svo DNS, Domain Name Service, 698 00:48:29,060 --> 00:48:33,410 það er það sem þýðir hluti eins google.com við raunverulegan IP heimilisfang. 699 00:48:33,410 --> 00:48:37,700 Þannig að ef þú skrifar þessi IP tölu inn vefslóð, 700 00:48:37,700 --> 00:48:40,850 sem myndi leiða þig til Google, en þú hættir ekki að muna þá hluti. 701 00:48:40,850 --> 00:48:45,470 Þú hættir að muna google.com í staðinn. 702 00:48:45,470 --> 00:48:51,560 Það síðasta sem við höfum er höfn, þar sem þetta er TCP hluti af IP. 703 00:48:51,560 --> 00:48:54,880 TCP gerir meira. Hugsa um, eins og þú hefur vefur flettitæki gangi. 704 00:48:54,880 --> 00:48:58,670 Kannski hafa sumir email forrit í gangi; 705 00:48:58,670 --> 00:49:02,150 kannski þú hafa sumir önnur forrit sem notar Internetið gangi. 706 00:49:02,150 --> 00:49:05,090 Þeir þurfa öll aðgang að Internetinu, 707 00:49:05,090 --> 00:49:08,100 en tölvan þín hefur aðeins 1 WiFi kort eða hvað sem er. 708 00:49:08,100 --> 00:49:10,780 Svo hafnir eru á þann hátt að við erum fær um að skipta upp 709 00:49:10,780 --> 00:49:13,550 hvernig þessi forrit eru færir um að nota internetið. 710 00:49:13,550 --> 00:49:17,230 Hver umsókn fær 1 ákveðna höfn að það getur hlustað á, 711 00:49:17,230 --> 00:49:19,670 og við vanræksla, HTTP notar höfn 80. 712 00:49:19,670 --> 00:49:22,410 Sumir email þjónustu nota 25. 713 00:49:22,410 --> 00:49:24,490 The lágmark-tölu sjálfur tilhneigingu til að vera áskilinn. 714 00:49:24,490 --> 00:49:29,270 Þú ert yfirleitt fær um að fá hærri-númeruð sjálfur fyrir þig. 715 00:49:29,270 --> 00:49:32,010 >> CSS, Cascading Style Sheets. 716 00:49:32,010 --> 00:49:36,030 Við stíll vefsíðum með CSS, ekki með HTML. 717 00:49:36,030 --> 00:49:38,440 Það eru 3 staðir sem þú getur sett CSS þinn. 718 00:49:38,440 --> 00:49:46,300 Það getur verið inline, á milli tags stíl, eða í algjörlega sérstakri skrá og síðan tengd inn 719 00:49:46,300 --> 00:49:48,470 Og hér er bara dæmi um CSS. 720 00:49:48,470 --> 00:49:50,450 Þú ættir að viðurkenna þetta mynstur, 721 00:49:50,450 --> 00:49:54,310 þar sem fyrsta dæmi er að við erum að passa líkami tag, 722 00:49:54,310 --> 00:49:56,680 og hér erum við að centering líkamanum tag. 723 00:49:56,680 --> 00:50:00,420 Annað dæmi, við erum að passa málið 724 00:50:00,420 --> 00:50:04,740 með ID fót, og við erum að beita sumir stíl við það. 725 00:50:04,740 --> 00:50:07,310 Takið eftir að ID fótur texta-raða í beina röð til vinstri, 726 00:50:07,310 --> 00:50:09,840 en líkami texta-færir sent. 727 00:50:09,840 --> 00:50:13,180 Footer er inni í líkamanum. 728 00:50:13,180 --> 00:50:16,470 Það mun, í staðinn, texta-align vinstri, jafnvel þótt líkaminn segir text-align sent. 729 00:50:16,470 --> 00:50:18,880 Þetta er allt Cascading hluti af því. 730 00:50:18,880 --> 00:50:22,110 Hægt er að hafa - þú getur tilgreint stíl fyrir líkamann, 731 00:50:22,110 --> 00:50:25,320 og þá hlutir í líkamanum er hægt að tilgreina nákvæmari stíl, 732 00:50:25,320 --> 00:50:28,160 og hlutirnir virka eins og þú býst við. 733 00:50:28,160 --> 00:50:34,420 Sértækari CSS specifiers hafa forgang. 734 00:50:34,420 --> 00:50:46,140 Ég held það er það. 735 00:50:46,140 --> 00:50:49,260 >> [Ali Nahm] Hæ allir. Ef ég gæti bara fá athygli þína. 736 00:50:49,260 --> 00:50:53,990 Ég er Ali og ég ætla að fara í gegnum PHP og SQL mjög hratt. 737 00:50:53,990 --> 00:51:00,310 Svo við getum byrjað. PHP er stutt fyrir PHP: Hypertext Preprocessor. 738 00:51:00,310 --> 00:51:03,730 Og eins og þið öll ættir að vita, er það a framreiðslumaður-hlið forskriftarþarfir tungumál, 739 00:51:03,730 --> 00:51:06,800 og við notum það fyrir bak endir af vefsíðum, 740 00:51:06,800 --> 00:51:12,540 og hvernig það gerir mikið af útreikningunum, bakvið tjöldin hluta. 741 00:51:12,540 --> 00:51:17,510 Setningafræði. Það er ekki eins og C, óvart, óvart. 742 00:51:17,510 --> 00:51:22,060 Það þarf alltaf að byrja með, ef þú sérð, - ég get ekki færa tímann. 743 00:51:22,060 --> 00:51:31,340 Þú sérð að þú þarft að nýjar tegundir af spelkum og þá þarftu líka? Php. 744 00:51:31,340 --> 00:51:35,780 Það er alltaf hvernig þú ert að ramma PHP texta, PHP kóðann þinn. 745 00:51:35,780 --> 00:51:39,180 Svo það getur ekki bara verið eins og C, þar sem þú setur konar það á fyrst. 746 00:51:39,180 --> 00:51:42,290 Þú þarft alltaf að umkringja hana. 747 00:51:42,290 --> 00:51:47,610 Og nú, helstu setningafræði er að allar breytur þarf til að byrja með $ staf. 748 00:51:47,610 --> 00:51:49,490 Þú þarft að gera það þegar þú ert að skilgreina þær, þú þarft að gera það 749 00:51:49,490 --> 00:51:51,860 þegar þú ert að vísa til til þeirra síðar. 750 00:51:51,860 --> 00:51:56,510 Þú þarft alltaf að $. Það er nýr besti vinur þinn, ansi mikið. 751 00:51:56,510 --> 00:52:01,690 Þú ert ekki - ólíkt C, þú þarft ekki að setja hvers konar breytu tegund það er. 752 00:52:01,690 --> 00:52:04,940 Svo á meðan þú þarft að $, þú þarft ekki að setja, eins og, 753 00:52:04,940 --> 00:52:09,470 int x eða String y, etcetera, etcetera. 754 00:52:09,470 --> 00:52:11,490 Svo smá munur. 755 00:52:11,490 --> 00:52:15,590 Sem afleiðing af þessu, þá þýðir það að PHP er veikt tegund. 756 00:52:15,590 --> 00:52:19,310 PHP er veikt tegund tungumál, og það hefur veikt slegið breytur. 757 00:52:19,310 --> 00:52:24,020 Með öðrum orðum, sem þýðir að þú getur skipt á milli mismunandi tegundir af ýmsum tegundum. 758 00:52:24,020 --> 00:52:27,230 Þú getur geymt þitt 1 sem int, 759 00:52:27,230 --> 00:52:29,650 þú getur geymt það sem streng, og þú getur geymt það sem flotholt, 760 00:52:29,650 --> 00:52:33,550 og það vilja allir vera númer 1. 761 00:52:33,550 --> 00:52:36,080 Jafnvel þó þú sért að geyma það í mismunandi formum, 762 00:52:36,080 --> 00:52:39,120 það er samt - breytu tegundir eru enn að halda í lokin. 763 00:52:39,120 --> 00:52:41,540 Þannig að ef þú lítur hér, ef þú manst frá pset 7, 764 00:52:41,540 --> 00:52:43,500 Margir af þú sennilega haft mál með þetta. 765 00:52:43,500 --> 00:52:47,280 Tveir samasemmerki 3 samasemmerki 4 samasemmerki. 766 00:52:47,280 --> 00:52:49,990 Allt í lagi, það eru engin 4 samasemmerki, en það eru 2 og 3.. 767 00:52:49,990 --> 00:52:53,320 Þú notar 2 samasemmerki að athuga gildi. 768 00:52:53,320 --> 00:52:55,830 Það getur athugað yfir gerðum. 769 00:52:55,830 --> 00:52:58,770 Þannig að ef þú getur séð á fyrsta dæminu, 770 00:52:58,770 --> 00:53:02,210 Ég hef num_int == num_string. 771 00:53:02,210 --> 00:53:06,710 Svo INT og band eru bæði, tæknilega, 1, 772 00:53:06,710 --> 00:53:10,790 en þeir eru mismunandi gerðir. En fyrir tvöföldum jafningja, verður það enn framhjá. 773 00:53:10,790 --> 00:53:15,510 Hins vegar, fyrir þrefalda jafningja, tékka það gildi sem og mismunandi tegundir. 774 00:53:15,510 --> 00:53:18,760 Það þýðir að það er ekki að fara að fara á þeim seinna tilvikinu hér, 775 00:53:18,760 --> 00:53:22,350 þar sem þú ert að nota 3 samasemmerki staðinn. 776 00:53:22,350 --> 00:53:26,590 Svo það er mikil munur að þú ættir að allir hafa sýnt núna. 777 00:53:26,590 --> 00:53:31,570 >> String samtenging er annar öflugur hlutur þú getur notað í PHP. 778 00:53:31,570 --> 00:53:34,080 Það er í rauninni bara þetta handhæga punktur Ritháttur, 779 00:53:34,080 --> 00:53:36,230 og það er hvernig þú getur binda strengi saman. 780 00:53:36,230 --> 00:53:40,800 Þannig að ef þú ert köttur og þú ert hundur, og þú vilt að setja 2 strengi saman, 781 00:53:40,800 --> 00:53:44,080 þú getur notað á tímabilinu, og það er góður af því hvernig það virkar. 782 00:53:44,080 --> 00:53:46,660 Þú getur líka bara sett þá hliðina á hvor aðra, 783 00:53:46,660 --> 00:53:49,030 eins og þú sérð hér í botn dæmis, 784 00:53:49,030 --> 00:53:51,610 þar sem ég hef echo band 1, rúm band 2. 785 00:53:51,610 --> 00:53:56,930 PHP vilja vita að skipta þeim sem slíkt. 786 00:53:56,930 --> 00:53:59,780 Fylki. Nú, í PHP, það eru 2 mismunandi tegundir af fylki. 787 00:53:59,780 --> 00:54:03,180 Hægt er að hafa reglulega fylki, og þú getur líka hafa tengin fylki, 788 00:54:03,180 --> 00:54:06,040 og við erum að fara að fara í gegnum þær núna. 789 00:54:06,040 --> 00:54:08,280 Venjulegur fylki eru bara þetta í C, 790 00:54:08,280 --> 00:54:11,240 og svo þú hafa vísitölur sem eru númeruð. 791 00:54:11,240 --> 00:54:13,160 Núna erum við bara að fara að búa til eina og setja - 792 00:54:13,160 --> 00:54:15,500 Svo er þetta hvernig við búum til tómt array, þá erum við að fara að 793 00:54:15,500 --> 00:54:17,310 sett í vísitölu 0. 794 00:54:17,310 --> 00:54:19,200 Við erum að fara að setja númerið 6, verðmæti 6. 795 00:54:19,200 --> 00:54:21,500 Þú getur séð það í botn hér. 796 00:54:21,500 --> 00:54:24,240 Where's - í vísitölu 1. við erum að fara að setja gildi númer 4, 797 00:54:24,240 --> 00:54:26,720 og svo þú getur séð það er 6, það er 4, 798 00:54:26,720 --> 00:54:29,160 og þá eins og við erum prentun hluti, 799 00:54:29,160 --> 00:54:33,550 þegar við reynum og prenta verðmæti geymd á vísitölu 0, 800 00:54:33,550 --> 00:54:36,900 þá munum við sjá verðmæti 6 að prenta út. Cool? 801 00:54:36,900 --> 00:54:40,160 Svo er það venjulegur fylki fyrir þig. 802 00:54:40,160 --> 00:54:42,750 Önnur leið sem þú getur líka bæta við hlutum til reglulegra fylki nú 803 00:54:42,750 --> 00:54:44,780 er þú getur bara auka þá á endanum. 804 00:54:44,780 --> 00:54:47,240 Það þýðir að þú þarft ekki að tilgreina sérstaka vísitölu. 805 00:54:47,240 --> 00:54:51,000 Þú getur séð númerið, og þá í hornklofum það er engin vísitala tilgreint. 806 00:54:51,000 --> 00:54:56,270 Og það vilja vita - PHP vilja vita að bara bæta við það til the endir af listanum næsta SPOT. 807 00:54:56,270 --> 00:54:59,190 Svo þú getur séð 1 rétt þar á þeim 0 staðnum, 808 00:54:59,190 --> 00:55:02,690 á 2 fór þarna í fyrsta stað. 809 00:55:02,690 --> 00:55:04,690 The 3 fer - er bætt við þar sem vel. 810 00:55:04,690 --> 00:55:06,720 Svo gerir að eins konar skilningi. Þú ert bara stöðugt að bæta það, 811 00:55:06,720 --> 00:55:09,360 og svo þegar við erum að echoing vísitölu númer 1, 812 00:55:09,360 --> 00:55:13,080 það mun prenta út gildið 2. 813 00:55:13,080 --> 00:55:16,800 >> Þá verðum við fylki sem eru tengin fylki. 814 00:55:16,800 --> 00:55:19,370 Tengin fylki, í stað þess að hafa tölulegar vísitölur, 815 00:55:19,370 --> 00:55:23,630 hvað þeir gera er þeir hafa vísitölur sem eru með band. 816 00:55:23,630 --> 00:55:25,670 Þú getur séð, í stað þess - Ég fékk að losa af öllum þeim fjölda vísitalna, 817 00:55:25,670 --> 00:55:32,140 og nú er það key1, key2, key3, og þeir eru í gæsalöppum þar með að þeir séu allir strengir. 818 00:55:32,140 --> 00:55:34,470 Svo við getum haft dæmi um þetta. 819 00:55:34,470 --> 00:55:38,790 Dæmi um þetta er að við höfum TF, og það er vísitalan nafn. 820 00:55:38,790 --> 00:55:42,030 Við erum að fara að setja "Ali" eins og nafni, í vísitölunni, hitaeiningar borðað, 821 00:55:42,030 --> 00:55:47,640 við getum sett int að þessu sinni í stað streng, 822 00:55:47,640 --> 00:55:52,240 og þá á vísitölu eins, við getum sett heilt fylki innan þess. 823 00:55:52,240 --> 00:55:55,490 Svo er góður af þessu - það er svipað hugtak að því hvernig við áttum 824 00:55:55,490 --> 00:55:58,930 vísitölur með númerum, en nú getum við breytt vísitölur kring 825 00:55:58,930 --> 00:56:03,890 að hafa þá eins strengi í staðinn. 826 00:56:03,890 --> 00:56:06,070 Þú getur líka gert þetta, að auki bara að gera það fyrir sig, 827 00:56:06,070 --> 00:56:09,400 þú getur gert það allt í einu bútur. Svo þú getur séð að TF þeirrar fylking, 828 00:56:09,400 --> 00:56:13,350 og þá erum við að setja þá alla í einum risastórum veldi krappi setja. 829 00:56:13,350 --> 00:56:15,220 Svo sem getur hraðað hlutur upp. 830 00:56:15,220 --> 00:56:19,730 Það er meira af stylistic val en ekki. 831 00:56:19,730 --> 00:56:21,550 Við höfum einnig lykkjur. 832 00:56:21,550 --> 00:56:26,020 Í C höfum lykkjur sem vinna svona. 833 00:56:26,020 --> 00:56:29,690 Við höfðum array okkar, og við fórum úr safni 0 til loka listanum, 834 00:56:29,690 --> 00:56:31,740 og við prenta það allt, ekki satt? 835 00:56:31,740 --> 00:56:33,880 Nema vandamálið er, að tengin fylki, 836 00:56:33,880 --> 00:56:36,610 við gerum ekki endilega vita þá tölulegu vísitölur 837 00:56:36,610 --> 00:56:39,610 því nú höfum við strenginn vísitölur. 838 00:56:39,610 --> 00:56:44,800 Nú notum framhandleggur lykkjur, sem, aftur, þú notaðir vonandi í pset 7. 839 00:56:44,800 --> 00:56:48,930 Framhandleggur lykkjur mun bara vita hvert einasta hluti af lista. 840 00:56:48,930 --> 00:56:52,450 Og það þarf ekki að vita nákvæmlega tölulegar vísitölu sem þú hefur. 841 00:56:52,450 --> 00:56:56,490 Svo þú hefur framhandleggur setningafræði, svo það er framhandleggur, þú setur array. 842 00:56:56,490 --> 00:57:00,430 Svo array mitt heitir pset, og þá eins, orð eins og, 843 00:57:00,430 --> 00:57:04,530 og þá setja þessa staðbundnu tímabundið breytu sem þú ert að fara að nota 844 00:57:04,530 --> 00:57:10,690 bara fyrir tiltekna hlutur sem er að fara að halda sérstakar - 845 00:57:10,690 --> 00:57:14,770 eitt dæmi eða einn hluti af fylki. 846 00:57:14,770 --> 00:57:18,350 Pset NUM mun halda 1, og þá ef til vill það mun halda fjölda 6, 847 00:57:18,350 --> 00:57:20,410 og þá mun það halda númer 2. 848 00:57:20,410 --> 00:57:26,630 En það er tryggt að fara í gegnum hvert eitt gildi sem er í fylkinu. 849 00:57:26,630 --> 00:57:30,530 Gagnlegar aðgerðir sem þú ættir að vita í PHP eru krefjast, 850 00:57:30,530 --> 00:57:35,880 Svo gerir að tryggja að þú sért þar á meðal tilteknar skrár, echo, brottför, tómur. 851 00:57:35,880 --> 00:57:40,490 Ég mæli með mjög þú horfir á pset 7 og líta á þá virka. 852 00:57:40,490 --> 00:57:42,810 Þú gætir þurft að vita þá, 853 00:57:42,810 --> 00:57:47,060 þannig að ég myndi örugglega vita hvað, nákvæmlega, þeir eru allir að gera. 854 00:57:47,060 --> 00:57:50,080 >> Og nú erum við að fara að fara í gegnum umfang virkilega hratt. 855 00:57:50,080 --> 00:57:53,490 Í umfangi, PHP er góður af a angurvær hlutur, ólíkt C, 856 00:57:53,490 --> 00:57:56,170 og svo erum við bara að fara að fara í gegnum það fljótt. 857 00:57:56,170 --> 00:57:58,930 Svo skulum segja að við byrjum á þeim ör sem við á þar. 858 00:57:58,930 --> 00:58:02,900 Og við erum að fara að byrja með $ i. Svo breytu "i" er að fara að vera 0, 859 00:58:02,900 --> 00:58:06,730 og við erum bara að fara að halda prentun það í því stór hvítur kassi þarna. 860 00:58:06,730 --> 00:58:09,220 Við ætlum að byrja með I0, og þá erum við að fara að echo það. 861 00:58:09,220 --> 00:58:12,670 Svo er það sú 0. 862 00:58:12,670 --> 00:58:15,210 Og þá erum við að fara að hækka það með for lykkju, 863 00:58:15,210 --> 00:58:17,810 og þá það er að fara að vera gildið 1. 864 00:58:17,810 --> 00:58:20,070 Eitt er minna en 3, svo það er að fara að fara í gegnum það fyrir lykkju, 865 00:58:20,070 --> 00:58:23,230 og þá erum við að fara að sjá það prentað aftur. 866 00:58:23,230 --> 00:58:25,520 Við erum að fara að hækka það aftur til 2, 867 00:58:25,520 --> 00:58:29,860 og 2 er minna en 3, svo það verður að standast for lykkjunnar, og það mun prenta í 2. 868 00:58:29,860 --> 00:58:35,100 Þá munt þú hafa í huga að 3 er ekki minna en 3, þannig að við munum komast út úr for lykkjunnar. 869 00:58:35,100 --> 00:58:40,050 Svo nú höfum við lokað, og þá erum við að fara inn í aFunction. 870 00:58:40,050 --> 00:58:45,010 Allt í lagi. Svo þú verður að hafa í huga að þessi breyta sem við höfum búið til, 871 00:58:45,010 --> 00:58:48,270 á "i" breytu er ekki á staðnum scoped. 872 00:58:48,270 --> 00:58:50,280 Það þýðir að það er ekki staðbundið við lykkjuna, 873 00:58:50,280 --> 00:58:58,060 og að breytu við getum enn aðgang og breyta eftirá, og það mun enn vera áhrifarík. 874 00:58:58,060 --> 00:59:02,160 Þannig að ef þú ferð inn í aðgerð núna, munt þú sjá að við notum einnig 'i' breytu, 875 00:59:02,160 --> 00:59:05,320 og við erum að fara að hækka "i" + +. 876 00:59:05,320 --> 00:59:09,410 Þú vildi hugsa, í fyrstu, byggt á C, sem það er afrit af 'ég' breytu. 877 00:59:09,410 --> 00:59:12,830 Það er allt öðruvísi hlutur, sem er rétt. 878 00:59:12,830 --> 00:59:16,560 Svo þegar við prenta það, við erum að fara að prenta 'ég' + +, sem er að fara að prenta út þessi 4, 879 00:59:16,560 --> 00:59:19,640 og þá erum við að fara að - því miður. 880 00:59:19,640 --> 00:59:22,030 Svo ætlum við að enda út að virka, 881 00:59:22,030 --> 00:59:24,820 og við erum að fara að vera þar sem örin er núna. 882 00:59:24,820 --> 00:59:29,190 Það þýðir að þá hafa hins vegar þótt fall breytt verðmæti 'i', 883 00:59:29,190 --> 00:59:32,620 það breyttist ekki utan af the virka, 884 00:59:32,620 --> 00:59:35,060 vegna þess að virka hefur sérstakan svigrúm. 885 00:59:35,060 --> 00:59:38,960 Það þýðir að þegar við echo "i", það hefur ekki breyst í the umfang af the virka, 886 00:59:38,960 --> 00:59:43,660 og svo þá erum við að fara að prenta 3 aftur. 887 00:59:43,660 --> 00:59:47,520 Mismunandi atriði um svigrúm í PHP en í C. 888 00:59:47,520 --> 00:59:51,130 >> Nú í PHP og HTML. 889 00:59:51,130 --> 00:59:53,510 PHP er notað til að gera vefsíður dynamic. 890 00:59:53,510 --> 00:59:58,660 Það gerir svona hluti öðruvísi. 891 00:59:58,660 --> 01:00:02,090 Við höfum það öðruvísi HTML. 892 01:00:02,090 --> 01:00:05,230 Með HTML, alltaf bara við sömu kyrrstæð hlutur, eins og hvernig Rob sýndi, 893 01:00:05,230 --> 01:00:09,370 en PHP, getur þú breyta hlutum byggt á hver notandinn er. 894 01:00:09,370 --> 01:00:11,830 Þannig að ef ég hef þetta, ég hef, "Þú ert skráður inn sem -" og þá nafn, 895 01:00:11,830 --> 01:00:14,420 og ég get breytt nafninu. Svo núna er nafnið Joseph, 896 01:00:14,420 --> 01:00:18,880 og það hefur "um mig", en þá get ég líka breytt nafni til að hafa Tommy. 897 01:00:18,880 --> 01:00:21,700 Og það væri annað mál. 898 01:00:21,700 --> 01:00:23,840 Þannig að þá getum við líka breytt mismunandi hluti um hann, 899 01:00:23,840 --> 01:00:27,070 og það mun sýna mismunandi efni byggt á nafn. 900 01:00:27,070 --> 01:00:31,430 Svo PHP getur konar breyting hvað er að gerast í vefsíðuna þína. 901 01:00:31,430 --> 01:00:33,540 Sama hér. Enn skaltu hafa í huga að þeir hafa mismunandi efni, 902 01:00:33,540 --> 01:00:38,870 jafnvel þó að þú ert tæknilega enn aðgang að sömu vefsíðu á yfirborðinu. 903 01:00:38,870 --> 01:00:43,450 Kynslóð HTML. Það eru 2 mismunandi leiðir sem þú getur gert þetta. 904 01:00:43,450 --> 01:00:48,980 Þannig að við munum fara í gegnum það núna. Fyrsta leiðin er, þú hafa - já, fyrirgefðu. 905 01:00:48,980 --> 01:00:51,150 Svo þú ert bara venjulegur þinn fyrir lykkju í PHP, 906 01:00:51,150 --> 01:00:56,270 og þá echo í PHP og þú echo út HTML. 907 01:00:56,270 --> 01:00:58,720 Using hvað Rob sýndi þér HTML handrit 908 01:00:58,720 --> 01:01:04,030 og þá með PHP prenta bara prenta það út til the vefur blaðsíða. 909 01:01:04,030 --> 01:01:09,520 The val leiðin er að gera það eins og ef þú sér út PHP og HTML. 910 01:01:09,520 --> 01:01:11,940 Svo er hægt að hafa línu af PHP sem hefst fyrir lykkju, 911 01:01:11,940 --> 01:01:16,020 þá er hægt að hafa línu af HTML í sérstakri hlutur, 912 01:01:16,020 --> 01:01:19,700 og þá getur þú endað lykkja, aftur, með PHP. 913 01:01:19,700 --> 01:01:21,800 Svo það er góður af aðgreina það út. 914 01:01:21,800 --> 01:01:24,020 Á vinstri hlið, getur þú að þú hafir öll þau - 915 01:01:24,020 --> 01:01:26,360 það er bara 1 klumpur af PHP. 916 01:01:26,360 --> 01:01:28,510 Á hægri er hægt að sjá að þú sért með línu af PHP, 917 01:01:28,510 --> 01:01:32,540 þú ert með línu í HTML, og þú hafa a lína af PHP aftur. 918 01:01:32,540 --> 01:01:36,870 Svo aðgreina það út í hvað þeir eru að gera. 919 01:01:36,870 --> 01:01:39,330 Og þú munt huga að annar hvor vegur, fyrir annaðhvort þeirra, 920 01:01:39,330 --> 01:01:41,980 þeir prenta enn út myndina, myndin, myndin, 921 01:01:41,980 --> 01:01:44,540 þannig að HTML enn er prentuð á sama hátt. 922 01:01:44,540 --> 01:01:49,870 Og þá munt þú enn sjá the 3 myndir mæta á vefsvæðið þitt. 923 01:01:49,870 --> 01:01:52,820 Svo er það 2 mismunandi leiðir til að gera slíkt hið sama. 924 01:01:52,820 --> 01:01:55,060 >> Nú höfum eyðublöð og beiðnir. Sem Rob sýndi þér, 925 01:01:55,060 --> 01:01:59,400 það eru gerðir af HTML, og við munum bara gola í gegnum þetta. 926 01:01:59,400 --> 01:02:02,040 Þú ert aðgerð og þú hafa a aðferð og aðgerð 927 01:02:02,040 --> 01:02:04,350 konar sýnir þér hvar þú ert að fara að senda það, og aðferðin er hvort 928 01:02:04,350 --> 01:02:06,960 það er að fara til vera a GET eða POST. 929 01:02:06,960 --> 01:02:11,220 Og FÁ beiðni, sem Rob sagði, þýðir að þú ert að fara að setja það í formi 930 01:02:11,220 --> 01:02:15,760 og þú munt sjá það sem vefslóð, en a POST beiðni sem þú munt ekki sjá í vefslóð. 931 01:02:15,760 --> 01:02:17,840 Svo smá munur. 932 01:02:17,840 --> 01:02:19,950 Hvernig sem, einn hlutur sem er líkur hlutur 933 01:02:19,950 --> 01:02:22,560 er að POST og GET eru jafn óörugg. 934 01:02:22,560 --> 01:02:26,430 Svo þú mega hugsa þessi réttlátur því þú sérð það ekki í vefslóð, 935 01:02:26,430 --> 01:02:28,790 sem þýðir að POST er öruggari, 936 01:02:28,790 --> 01:02:34,420 en þú getur samt séð það í fótspor þíns á þeim upplýsingum sem þú ert að senda. 937 01:02:34,420 --> 01:02:38,260 Svo held ekki að um eitt eða annað. 938 01:02:38,260 --> 01:02:42,160 Annar hlutur að hafa í huga er að þú þarft einnig kafla breytur. 939 01:02:42,160 --> 01:02:45,850 Þú krakkar nota þetta í pset 7 til að fá User ID upplýsingar. 940 01:02:45,850 --> 01:02:48,550 Það sem gerðist var að þú getur notað þennan tengin array, 941 01:02:48,550 --> 01:02:53,310 the $ _SESSION, og þá þú ert fær um að fá aðgang mismunandi hluti 942 01:02:53,310 --> 01:02:57,720 og geyma mismunandi hluti yfir the blaðsíða. 943 01:02:57,720 --> 01:03:00,750 >> Síðasta málið er að við höfum SQL, Structured Query Language, 944 01:03:00,750 --> 01:03:04,360 og þetta er forritunarmál til að stjórna gagnagrunna. 945 01:03:04,360 --> 01:03:08,220 Hvað, nákvæmlega, eru gagnagrunnar? Þeir eru söfn af borðum, 946 01:03:08,220 --> 01:03:10,630 og hvert borð getur haft svipaðar tegundir af hlutum. 947 01:03:10,630 --> 01:03:14,990 Þannig að við þurftum borð notenda í fjármálum pset þínu. 948 01:03:14,990 --> 01:03:20,610 Og hvers vegna eru þeir að gagni? Því það er leið til að varanlega geyma upplýsingar. 949 01:03:20,610 --> 01:03:22,840 Það er leið til þess að fylgjast með hlutum og stjórna hlutum 950 01:03:22,840 --> 01:03:25,890 og í raun að sjá það á mismunandi síður og halda utan. 951 01:03:25,890 --> 01:03:29,930 En ef þú vistar bara það á að einn nánasta augnablik 952 01:03:29,930 --> 01:03:33,720 og þá nota það seinna, þú vilja ekki vera fær til aðgangur neitt sem þú hefur vistað. 953 01:03:33,720 --> 01:03:37,660 Við höfum 4 helstu atriði sem við notum til SQL skipanir. 954 01:03:37,660 --> 01:03:40,190 Við höfum VELJA, INSERT, DELETE, og uppfæra. 955 01:03:40,190 --> 01:03:42,880 Þeir eru mjög mikilvægt fyrir ykkur að vita fyrir prófið þitt. 956 01:03:42,880 --> 01:03:45,990 >> Við munum fljótlega fara yfir veldu núna. 957 01:03:45,990 --> 01:03:48,540 Grundvallaratriðum, þú ert að velja raðir úr gagnagrunni. 958 01:03:48,540 --> 01:03:52,400 Þannig að ef þú ert með hérna - 959 01:03:52,400 --> 01:03:56,740 við höfum þessar 2 mismunandi hluti, og við viljum velja úr flokkum töflunni 960 01:03:56,740 --> 01:04:01,480 þar ógnvekjandi - hvar í ógnvekjandi dálki gildi er 1. 961 01:04:01,480 --> 01:04:04,460 Svo þú getur séð hér, höfum við þessar 2 hluti af bekknum nafn, 962 01:04:04,460 --> 01:04:08,490 CS50 og Stat110, og við höfum bekknum auðkenni og slagorð. 963 01:04:08,490 --> 01:04:13,150 Svo viljum við að velja allar þessar upplýsingar. 964 01:04:13,150 --> 01:04:17,480 Þá getur þú séð hérna að það er góður af tína út úr því ógnvekjandi dálki, 965 01:04:17,480 --> 01:04:25,170 þar sem allir hlutir eru 1, og þá hefur það í bekknum ID, bekknum nafn og slagorð að það getur tekið út. 966 01:04:25,170 --> 01:04:28,100 Hvernig nákvæmlega þú gerir þetta í kóða? Þú þarft að nota PHP. 967 01:04:28,100 --> 01:04:33,830 Svo er þannig hvernig PHP og SQL tengjast hvert öðru. 968 01:04:33,830 --> 01:04:38,130 Nú höfum við kóðann okkar, og við erum að fara að nota fyrirspurn fallið 969 01:04:38,130 --> 01:04:41,370 eins og við gerðum í pset 7, og við erum að fara að keyra SQL fyrirspurn. 970 01:04:41,370 --> 01:04:43,870 Svo ætlum við að hafa - 971 01:04:43,870 --> 01:04:46,280 við þurfum alltaf að athuga hvort þrefaldur jafn Row ef falskur. 972 01:04:46,280 --> 01:04:49,010 Svo aftur, þú vilja til stöðva the tegund og verðmæti, 973 01:04:49,010 --> 01:04:53,880 og þá ef það virkar ekki, þá þú vilt að biðjast afsökunar, eins og venjulega, eins og við gerðum í pset 7. 974 01:04:53,880 --> 01:04:55,870 Annars, þú vilja til lykkju í gegnum allt með þeim vel 975 01:04:55,870 --> 01:04:59,410 framhandleggur lykkjur að við fórum bara yfir. 976 01:04:59,410 --> 01:05:01,280 Nú þegar við erum að lykkja í gegnum og við höfum gert það áður, 977 01:05:01,280 --> 01:05:05,080 skulum gera ráð fyrir að fyrirspurn liðu, nú höfum við framhandleggur lykkja okkar. 978 01:05:05,080 --> 01:05:11,050 Og það fyrsta röðin það hefur, svo hér er röð hérna, það er Hnefaleikar. 979 01:05:11,050 --> 01:05:14,010 Það er að fara að prenta út allar upplýsingar sem það er fengið. 980 01:05:14,010 --> 01:05:18,070 Svo það er að fara að prenta út neðst "Viltu læra HTML?" 981 01:05:18,070 --> 01:05:23,370 Þá það er að fara að fara yfir í næstu línu, því það er lokið fyrsta fyrir lykkju, 982 01:05:23,370 --> 01:05:26,510 og svo þá það er að fara að prenta út í annarri línu á það, 983 01:05:26,510 --> 01:05:32,120 sem er að fara að vera STAT110, Finna öll augnablik. 984 01:05:32,120 --> 01:05:34,290 >> Einn síðastur hlutur er á SQL Varnarleysi. 985 01:05:34,290 --> 01:05:37,300 Ég veit Davíð snert á þetta svolítið í fyrirlestri. 986 01:05:37,300 --> 01:05:40,730 Þú getur lesið þetta seinna. Það er mjög fyndið. 987 01:05:40,730 --> 01:05:45,320 SQL stungulyf er einskonar erfiður hlutur. 988 01:05:45,320 --> 01:05:49,890 Segjum að þú standa bara þá breytum rétt inn fyrirspurn þína, 989 01:05:49,890 --> 01:05:52,290 eins og þú sérð í þeirri fyrstu línu. 990 01:05:52,290 --> 01:05:54,520 Svo það virðist í lagi, ekki satt? Þú ert bara að setja inn notandanafn 991 01:05:54,520 --> 01:05:58,820 og lykilorð til SQL fyrirspurn þína, og þú vilt að skip það burt og fá hvað sem er í gögnum töflunni. 992 01:05:58,820 --> 01:06:01,450 Það virðist frekar einfalt. Svo lætur segja einhver setur í, 993 01:06:01,450 --> 01:06:04,910 um lykilorð, þetta eða texta hérna - 994 01:06:04,910 --> 01:06:06,780 ætti í raun að vera í rauða kassanum. 995 01:06:06,780 --> 01:06:11,920 Svo skulum segja að þeir setja þessi lykilorð í - það er það sem þeir koma inn. 996 01:06:11,920 --> 01:06:16,520 Svo þeir eru að setja OR "1" = 1. 997 01:06:16,520 --> 01:06:20,880 Konar kjánalegt lykilorð til að hafa. 998 01:06:20,880 --> 01:06:25,070 Nú skulum skipta um það bara í, og þú munt hafa í huga að í þeirri SQL fyrirspurn nú, 999 01:06:25,070 --> 01:06:29,090 það metur að alltaf satt, því þú munt huga að 1000 01:06:29,090 --> 01:06:32,240 þú getur SQL fyrirspurn velja allar þessar upplýsingar 1001 01:06:32,240 --> 01:06:35,420 eða þú getur bara hafa 1 = 1. 1002 01:06:35,420 --> 01:06:41,030 Svo það er alltaf að fara að meta satt. 1003 01:06:41,030 --> 01:06:46,610 Það er ekki að fara að virkilega að vinna, því það þýðir að tölvusnápur geta brjótast inn í kerfið. 1004 01:06:46,610 --> 01:06:49,300 The lausn til this er þessi þú þarft að nota PDO kerfi, 1005 01:06:49,300 --> 01:06:51,360 sem þýðir að þú þarft að nota spurningarmerki, 1006 01:06:51,360 --> 01:06:53,350 sem er það sem þú krakkar notuð í pset 7, 1007 01:06:53,350 --> 01:06:57,620 þar sem þú ert að fara að nota spurningarmerki í stað þar sem þú vilt setja eitthvað, 1008 01:06:57,620 --> 01:07:01,430 og þá þú ert að fara að hafa kommu, og þá munt þú hafa eftirá, 1009 01:07:01,430 --> 01:07:07,610 eftir band, mismunandi breytur sem þú vilt skipta í spurningarmerki þínu. 1010 01:07:07,610 --> 01:07:10,330 Svo þú munt hafa í huga hér að nú hef ég þessar rauðu spurning skytta. 1011 01:07:10,330 --> 01:07:15,420 Þá er ég setti breytur eftir strengjum mínum þannig að ég veit að skipta þeim í þeirri röð í kjölfarið. 1012 01:07:15,420 --> 01:07:18,470 Það mun tryggja að ef einhver gerir það svona, 1013 01:07:18,470 --> 01:07:24,050 og þeir hafa eða 1 = 1 ástand, sem vilja tryggja, 1014 01:07:24,050 --> 01:07:30,490 í bak endir, að tryggja að það mun ekki raunverulega brjóta SQL fyrirspurn. 1015 01:07:30,490 --> 01:07:33,660 Allt í lagi, svo það er ansi mikið það, stormviðri af PHP og SQL. 1016 01:07:33,660 --> 01:07:41,520 Bestur af heppni til ykkar allra, og nú til Ore 1017 01:07:41,520 --> 01:07:44,270 >> [Oreoluwatomiwa Babarinsa] Okay allir. Tími til að fara yfir smá JavaScript 1018 01:07:44,270 --> 01:07:48,840 og nokkrum öðrum hlutum mjög fljótt svo að við ekki halda þér ekki upp í kvöld. 1019 01:07:48,840 --> 01:07:56,930 JavaScript. Já. JavaScript er góður af kaldur hlutur, purportedly. 1020 01:07:56,930 --> 01:07:59,090 Það sem þú raunverulega þörf til vita óður í JavaScript, það er tegund af eins og 1021 01:07:59,090 --> 01:08:03,810 client-megin enda hvaða vefur app er að fara að vera að gera. 1022 01:08:03,810 --> 01:08:08,280 Það er nokkur atriði sem þú bara vilt ekki að sjá um alla tíma á miðlara megin. 1023 01:08:08,280 --> 01:08:12,880 Öll litlu samskipti, auðkenning eitt, sem gerir eitthvað hverfa. 1024 01:08:12,880 --> 01:08:15,340 Þú virkilega vilt ekki að þurfa að tala við netþjóninn þinn allan tímann fyrir það. 1025 01:08:15,340 --> 01:08:18,069 Og sumir sem er ekki einu sinni hægt að gera á miðlara megin. 1026 01:08:18,069 --> 01:08:21,899 Þetta er ástæða þess að við þurfum eitthvað eins JavaScript. 1027 01:08:21,899 --> 01:08:24,359 Kaldur hlutur um JavaScript: Það er mjög virk slegin. 1028 01:08:24,359 --> 01:08:27,149 Hvað þýðir þetta er að forritið þitt þarf ekki að vita 1029 01:08:27,149 --> 01:08:30,970 hvað, nákvæmlega, eru breytur þegar þú skrifar það út. 1030 01:08:30,970 --> 01:08:34,510 Það verður bara svona reikna það út eins og það er í gangi. 1031 01:08:34,510 --> 01:08:37,520 Aðrir hlutir sem eru kúl um það: Það er hrokkið Brace tungumál, 1032 01:08:37,520 --> 01:08:41,359 sem þýðir setningafræði er svipað og C og PHP. 1033 01:08:41,359 --> 01:08:47,050 Þú þarft ekki að gera mikið rework þegar þú ert að læra JavaScript. 1034 01:08:47,050 --> 01:08:49,180 Hér höfum við smá JavaScript. 1035 01:08:49,180 --> 01:08:52,560 Áhugaverður hlutur hér er að ef þú horfir á það, 1036 01:08:52,560 --> 01:08:56,330 við hafa a hluti af JavaScript rétt þar í höfuð merkinu. 1037 01:08:56,330 --> 01:08:59,479 Hvað er gerir er í rauninni bara innihalda JavaScript skrá. 1038 01:08:59,479 --> 01:09:02,260 Þetta er ein leið sem þú getur meðal annars JavaScript í forritinu. 1039 01:09:02,260 --> 01:09:06,910 Þá er annað svolítið raun einhvers inline JavaScript, 1040 01:09:06,910 --> 01:09:10,790 mjög svipuð að inline stíl við CSS, 1041 01:09:10,790 --> 01:09:16,180 og þú ert bara að skrifa nokkur númer mjög fljótt þar. 1042 01:09:16,180 --> 01:09:18,120 JavaScript verður fylki. 1043 01:09:18,120 --> 01:09:20,850 Bara ein leið til að halda gögnum í kring, mjög gagnlegt. 1044 01:09:20,850 --> 01:09:25,180 Mjög gott og auðvelt setningafræði. 1045 01:09:25,180 --> 01:09:29,870 Þú notar hornklofa til aðgang allt og halda öllu saman. 1046 01:09:29,870 --> 01:09:35,020 Ekkert of flókið. 1047 01:09:35,020 --> 01:09:38,630 The kaldur hlutur óður í JavaScript og Forskriftamál almennt 1048 01:09:38,630 --> 01:09:40,920 er að þú þarft ekki að hafa áhyggjur af array stærðum. 1049 01:09:40,920 --> 01:09:43,880 Þú getur bara notað array.length og halda utan um það, 1050 01:09:43,880 --> 01:09:46,960 og einnig array geta vaxið eða skreppa saman eins og þú þarft það til. 1051 01:09:46,960 --> 01:09:49,279 Svo þú þarft ekki einu sinni að hafa áhyggjur af hvers konar, 1052 01:09:49,279 --> 01:09:57,050 ó nei, ég þarf að úthluta fleiri hluti, eða eitthvað svoleiðis. 1053 01:09:57,050 --> 01:10:00,090 >> The kaldur hlutur hér er að JavaScript er eitthvað sem heitir hlutir. 1054 01:10:00,090 --> 01:10:04,800 Það er hlutbundin tungumál, svo hvað það hefur er, í meginatriðum, 1055 01:10:04,800 --> 01:10:10,100 leið fyrir þig til hópa upplýsingar saman, nokkuð svipað og strúktúr, 1056 01:10:10,100 --> 01:10:17,280 en þú getur fengið aðgang að henni eins og strúktúrinn eða í tengin array setningafræði. 1057 01:10:17,280 --> 01:10:22,520 Það er frekar einfalt og það sem þú getur gert við þetta er hópur gögn saman 1058 01:10:22,520 --> 01:10:24,810 ef þú ert með fullt af gögnum sem er tengt. 1059 01:10:24,810 --> 01:10:26,850 Því það er allt það sem þú þarft til að lýsa bíl, 1060 01:10:26,850 --> 01:10:29,050 þú þarft ekki að hafa það í fullt af mismunandi stöðum. 1061 01:10:29,050 --> 01:10:35,300 Þú getur bara halda það í 1 hlut í JavaScript. 1062 01:10:35,300 --> 01:10:39,090 Eins og þú veist líklega, iterating er einn af þeim leiðinlegur verkefni. 1063 01:10:39,090 --> 01:10:43,810 Þú gerir bara það yfir aftur. Þú þarft að tala við hvern hlut í bílnum, 1064 01:10:43,810 --> 01:10:47,340 eða þú þarft að fara í gegnum hvert atriði á lista eða eitthvað svoleiðis. 1065 01:10:47,340 --> 01:10:51,770 Svo JavaScript verður, líkt og PHP, á framhandleggur setningafræði. 1066 01:10:51,770 --> 01:10:54,590 Í þessu tilfelli, það er fyrir í lykkju. 1067 01:10:54,590 --> 01:10:57,300 Þú vilt nota þetta bara á hluti. 1068 01:10:57,300 --> 01:11:01,030 Það eru nokkur vandamál sem eiga sér stað ef þú notar þetta á fylki. 1069 01:11:01,030 --> 01:11:03,750 Það er yfirleitt einn af þessum hlutum, þó, það er mjög gagnlegt, 1070 01:11:03,750 --> 01:11:06,590 vegna þess að þú útrýma mikið af höfuðið 1071 01:11:06,590 --> 01:11:10,270 vegna þess að þú þarft ekki að draga upp allt í hlut þinn sjálfur. 1072 01:11:10,270 --> 01:11:12,300 Þú þarft ekki að muna eftir öllum helstu nöfn. 1073 01:11:12,300 --> 01:11:18,270 Þú bara tegund af fá þá aftur í þessu setningafræði. 1074 01:11:18,270 --> 01:11:21,500 Í þessu, með að, þú vilt bara að muna 1075 01:11:21,500 --> 01:11:27,180 að þú ert að fá aftur alla takkana, á mjög svipaðan hátt til kjötkássa borð. 1076 01:11:27,180 --> 01:11:30,880 Ef þú manst frá því, þegar þú vildi setja í streng þú gætir fengið eitthvað út 1077 01:11:30,880 --> 01:11:33,840 sem myndi hafa í tengslum gildi með það. 1078 01:11:33,840 --> 01:11:36,360 Það sem þú getur gert við þetta er að þú getur sagt, allt í lagi, 1079 01:11:36,360 --> 01:11:42,120 Ég setti í bíl, og ég kallaði hana Ferrari. 1080 01:11:42,120 --> 01:11:45,290 Svo þú getur sett í band Ferrari aftur síðar, og þú getur fengið það út. 1081 01:11:45,290 --> 01:11:50,000 Og þú getur gert það í lykkju, með um í lykkju. 1082 01:11:50,000 --> 01:11:53,320 Svo bara meira um hluti. Lykillinn hlutur frá þessu sem þú þarft að muna 1083 01:11:53,320 --> 01:12:00,340 er að þú getur notað mótmæla strúktúr eins og setningafræði þegar þú vilt með þetta, 1084 01:12:00,340 --> 01:12:04,590 nema ef það að fara til að nota sem streng er ekki gilt breytu nafn. 1085 01:12:04,590 --> 01:12:07,650 Þannig að ef þú horfir á að það höfum við takkann með bilum. 1086 01:12:07,650 --> 01:12:12,500 Jæja, ef þú varst að setja object.key, rúm, með, rými, rými, 1087 01:12:12,500 --> 01:12:15,320 sem bara vildi ekki gera skilningarvit setningafræðilega. 1088 01:12:15,320 --> 01:12:22,730 Svo þú bara getur gert það með þessa tegund af krappi setningafræði. 1089 01:12:22,730 --> 01:12:26,520 >> Einnig JavaScript er mjög svigrúm-skynsamlegt að PHP. 1090 01:12:26,520 --> 01:12:29,050 Þú hefur 2 leiðir til að takast á svigrúm. 1091 01:12:29,050 --> 01:12:31,960 Þú getur ekki haft Var í framan breytu, 1092 01:12:31,960 --> 01:12:34,060 og það þýðir bara að þetta er alþjóðlegt. 1093 01:12:34,060 --> 01:12:37,050 Þú getur séð það frá einhvers staðar. Jafnvel ef þú varst að setja þetta í ef yfirlýsingu, 1094 01:12:37,050 --> 01:12:42,430 annars staðar í kóðann þinn eftir þeim tímapunkti sem þú gætir séð þá breytu. 1095 01:12:42,430 --> 01:12:46,730 Annar hlutur, þó, er með Var, það er takmarkað til hvaða aðgerð sem þú ert inn 1096 01:12:46,730 --> 01:12:48,870 Ef þú ert ekki í aðgerð, vel, það er alþjóðlegt. 1097 01:12:48,870 --> 01:12:53,900 En ef þú ert í aðgerð það er aðeins sýnilegt innan þess virka. 1098 01:12:53,900 --> 01:12:56,420 Ég hef ekki dæmi, en, já. Það er einn af þeim hlutum sem 1099 01:12:56,420 --> 01:12:59,900 þú getur stjórnað hvaða breytur sem þú vilt að vera alþjóðlegt, 1100 01:12:59,900 --> 01:13:03,810 hvað breyturnar sem þú vilt að vera staðbundin, en þú þarft að vera varkár óður í það, 1101 01:13:03,810 --> 01:13:06,890 vegna þess að þú ert ekki tegund af fínu korn stjórna sem þú gerir í C, 1102 01:13:06,890 --> 01:13:15,820 þar sem ef eitthvað er lýst í for lykkju, það er að fara að vera í því fyrir lykkju. 1103 01:13:15,820 --> 01:13:18,790 The hlutur sem við í raun sama um að nota JavaScript er að notfæra vefsíður, ekki satt? 1104 01:13:18,790 --> 01:13:21,800 Ég meina, það er þess vegna sem við erum að gera þetta. 1105 01:13:21,800 --> 01:13:23,840 >> Til að gera það, við notum eitthvað sem heitir DOM. 1106 01:13:23,840 --> 01:13:25,850 The Document Object Model. 1107 01:13:25,850 --> 01:13:29,430 Í grundvallaratriðum, hvað það gerir er að það tekur alla HTML 1108 01:13:29,430 --> 01:13:34,110 og módel það út í fullt af hlutum sem eru hreiður í hvert annað. 1109 01:13:34,110 --> 01:13:37,080 Þú byrjar út með eitthvað eins og this. 1110 01:13:37,080 --> 01:13:44,770 Þú hefur, á hægri fyrir mig, fullt af kóða þarna úti sem er tegund af - 1111 01:13:44,770 --> 01:13:46,640 Þú hygg að myndi vera mjög erfitt að stjórna, 1112 01:13:46,640 --> 01:13:48,700 vegna þess að þú vilt vera þáttun gegnum fullt af texta 1113 01:13:48,700 --> 01:13:52,080 og þurfa að stykki í sundur hlutina. Og hvað ef það var ekki rétt sniðin? 1114 01:13:52,080 --> 01:13:54,880 Slæmur hlutur myndi gerast. 1115 01:13:54,880 --> 01:13:58,140 Svo tekur JavaScript sjá um þetta fyrir þig, og þú færð gott gögn uppbygging, 1116 01:13:58,140 --> 01:14:01,390 eins og einn á minn fór, þar sem þú hefur bara skjal, 1117 01:14:01,390 --> 01:14:03,530 og inni að þú hefur eitthvað sem kallast HTML, 1118 01:14:03,530 --> 01:14:05,600 og inni að þú sért með höfuð og líkama, 1119 01:14:05,600 --> 01:14:08,420 og inni að höfuð þú hefur titil, etcetera, etcetera, etcetera. 1120 01:14:08,420 --> 01:14:11,810 Þetta einfaldar notfæra vefsíðu þannig að það er bara, 1121 01:14:11,810 --> 01:14:14,190 ó, ég vil bara að tala við þennan hlut. 1122 01:14:14,190 --> 01:14:21,340 Konar á mjög svipaðan hátt og þú vildi tala við annan hlut sem þú gerðir sjálfur. 1123 01:14:21,340 --> 01:14:25,980 Eins og ég sagði, allt DOM er í skjalinu mótmæla. 1124 01:14:25,980 --> 01:14:29,290 Annaðhvort það er bara einn staður og þá getur þú farið í það að finna hluti, 1125 01:14:29,290 --> 01:14:33,880 og þú getur gert það - þetta er gamla stíl til að gera það, þarna uppi, 1126 01:14:33,880 --> 01:14:38,130 þar sem þú gerir document.getElementById, og þá nafn, 1127 01:14:38,130 --> 01:14:42,420 og eins og þú geta sennilega sagt, þetta gerist mjög ómeðfærilegur eftir smá stund. 1128 01:14:42,420 --> 01:14:44,480 Svo þú vilt sennilega ekki að gera það. Þess vegna höfum við 1129 01:14:44,480 --> 01:14:48,760 Það næsta sem við erum að fara að tala um eftir þetta. 1130 01:14:48,760 --> 01:14:52,510 Lykillinn hlutur hér er að, allt í lagi, þú hefur alla þessa þætti, ekki satt? 1131 01:14:52,510 --> 01:14:56,400 Svo kannski ég get breytt lit á eitthvað þegar síðan opnast. 1132 01:14:56,400 --> 01:14:58,380 Svo hvað? Hvað ef notandi minn smellir eitthvað? 1133 01:14:58,380 --> 01:15:00,540 Ég vil það að gera eitthvað áhugavert þegar þeir smella eitthvað. 1134 01:15:00,540 --> 01:15:02,600 Þess vegna höfum við atburðum. 1135 01:15:02,600 --> 01:15:05,330 Þú getur, í grundvallaratriðum, finna öll frumefni í DOM þinni, 1136 01:15:05,330 --> 01:15:08,560 og síðan segja, hey. Þegar þetta hleðst eða einhver smellir á hana, 1137 01:15:08,560 --> 01:15:11,410 eða þegar þeir mús yfir það, gera eitthvað við hana. 1138 01:15:11,410 --> 01:15:15,330 Og hvað þú hefur er, þú hafa aðgerðir sem annast þetta fyrir þig. 1139 01:15:15,330 --> 01:15:17,980 Þessar aðgerðir eru atburður dýraþjálfari. 1140 01:15:17,980 --> 01:15:20,440 Hvað they're - það er bara fínt leið til að segja, 1141 01:15:20,440 --> 01:15:23,500 Aðgerðin er aðeins keyrð þegar þessi atburður gerist. 1142 01:15:23,500 --> 01:15:28,070 Svo það sér atburð sem á sér stað. 1143 01:15:28,070 --> 01:15:30,810 Þetta er hvernig þú myndir leggja út atburð dýraþjálfari. 1144 01:15:30,810 --> 01:15:34,750 Ég hef fengið hnappinn, og þegar þú smellir á það, springur hún. 1145 01:15:34,750 --> 01:15:40,560 Svo ekki smella á hnappinn. 1146 01:15:40,560 --> 01:15:42,910 Þetta er ein leið til að nálgast það, ekki satt? 1147 01:15:42,910 --> 01:15:46,430 Þú hafa hnapp tag, og á smell sem þú ert með band sem segir, 1148 01:15:46,430 --> 01:15:50,460 ó, við the vegur, ég þetta springa hlutur fyrir mig. 1149 01:15:50,460 --> 01:15:53,990 Annars, það er bara eins og venjulegur hnappur sem þú gerðir bara. 1150 01:15:53,990 --> 01:15:56,550 Þú getur líka gert þetta á annan hátt, 1151 01:15:56,550 --> 01:16:02,770 með grabbing the DOM frumefni, en við munum spara að eftir að við tölum um jQuery. 1152 01:16:02,770 --> 01:16:07,580 >> JQuery: Það er bókasafn sem er kross-vafra. 1153 01:16:07,580 --> 01:16:09,580 Þú getur notað það í nokkurn veginn allt. 1154 01:16:09,580 --> 01:16:12,090 Og það gefur bara þér mikið af verkfærum til að vinna með. 1155 01:16:12,090 --> 01:16:15,850 Vegna þess að JavaScript, en öflugur, ekki hafa öll þau verkfæri sem þú þarft 1156 01:16:15,850 --> 01:16:20,550 út af the kassi til að virkilega takast vefur app sem þú vilt kannski að gera. 1157 01:16:20,550 --> 01:16:24,650 Svo það einfaldar mikið af hlutum, gefur þér mikið af störfum 1158 01:16:24,650 --> 01:16:28,760 út af the kassi sem þú myndir venjulega að skrifa sjálfur, aftur og aftur og aftur. 1159 01:16:28,760 --> 01:16:31,600 Og bara gerir hlutina mjög einfalt. 1160 01:16:31,600 --> 01:16:35,780 Þú hefur einnig selectors, sem leyfa þér að taka út alla þá þætti 1161 01:16:35,780 --> 01:16:42,800 frá DOM þinn mun einfaldlega, í stað þess að þurfa að nota þessar mjög lengi virka símtöl. 1162 01:16:42,800 --> 01:16:46,630 Fleiri á þessum selectors. Þú hefur, þar upp þú hefur, segjum 1163 01:16:46,630 --> 01:16:49,800 Ég vil fá stak með id "rokk." 1164 01:16:49,800 --> 01:16:56,450 Jæja, í jQuery, það er bara $ og þá band sem hefur pund, og þá "rokk." 1165 01:16:56,450 --> 01:17:01,960 Það er mjög einfalt og mikið hraðar en hefðbundinn JavaScript leið takast á við þetta vandamál. 1166 01:17:01,960 --> 01:17:06,120 Og þú hefur svipaða hluti fyrir flokka og frumefni gerðum. 1167 01:17:06,120 --> 01:17:08,140 jQuery er - einn af the kaldur lögun er að þú getur konar þjappa 1168 01:17:08,140 --> 01:17:14,350 niður fyrirspurnum þínum á DOM þinn mjög, mjög hratt. 1169 01:17:14,350 --> 01:17:18,980 Nú erum við aftur að ef er meðhöndlun, og þetta er hvernig þú myndir höndla einn atburð í jQuery. 1170 01:17:18,980 --> 01:17:23,090 Svo það sem við erum að fara hér er að við erum að segja, allt í lagi. Ég er með handrit tag, ekki satt? 1171 01:17:23,090 --> 01:17:25,400 Þannig að ég hef þetta inline JavaScript. 1172 01:17:25,400 --> 01:17:27,750 Það sem við erum að fara að gera er að við erum að fara að segja, allt í lagi. 1173 01:17:27,750 --> 01:17:30,860 Þegar skjalið er tilbúið, sem þýðir að skjalið hefur verið hlaðinn, 1174 01:17:30,860 --> 01:17:34,660 við erum að fara að fara í til að virka, og við erum að fara að segja, allt í lagi, 1175 01:17:34,660 --> 01:17:37,060 þessi aðgerð er í raun að gera eitthvað annað. 1176 01:17:37,060 --> 01:17:42,320 Það er í rauninni að segja, allt í lagi, fá mér þátturinn með id "myid." 1177 01:17:42,320 --> 01:17:47,960 Og þá gefa þetta fall dýraþjálfari sem keyrir þegar þú smellir á það. 1178 01:17:47,960 --> 01:17:49,820 Í grundvallaratriðum hvað þetta þýðir, það segir, allt í lagi. 1179 01:17:49,820 --> 01:17:52,630 Síðunni er hlaðið inn, þannig að ég ætla að í, finna þennan þátt, 1180 01:17:52,630 --> 01:17:56,420 gefa það þennan atburð dýraþjálfari, og það setur í grundvallaratriðum upp síðuna þína fyrir þig. 1181 01:17:56,420 --> 01:18:00,520 Og þetta er hvernig þú vilt að hugsa um atburði meðhöndlun. 1182 01:18:00,520 --> 01:18:06,310 Þú vilt bara að hugsa um, allt í lagi, þegar eitthvað gerist, hvað mig langar til að gerast? 1183 01:18:06,310 --> 01:18:10,520 Þú vilt ekki að hugsa um, allt í lagi, ég þarf að ganga úr skugga um þessi hlutur viðræður við þetta, 1184 01:18:10,520 --> 01:18:14,660 þetta bla bla bla, því þú vilt bara að tala hlutur í skilmálar af atburðum. 1185 01:18:14,660 --> 01:18:17,650 Þegar þetta gerist, þetta gerist. Þegar þetta gerist, það gerist. 1186 01:18:17,650 --> 01:18:20,240 Og ef hlutirnir kalla aðra hluti, það er frábært. 1187 01:18:20,240 --> 01:18:22,150 En þú vilt ekki að reyna að gera flókinn kóða 1188 01:18:22,150 --> 01:18:24,130 þar sem þú ert að kalla fram margar hluti á sama tíma, 1189 01:18:24,130 --> 01:18:28,860 vegna þess að þú ert bara að fara að gefa þér höfuðverk. 1190 01:18:28,860 --> 01:18:32,340 >> Allt í lagi. Nú getum við fengið síðuna okkar til að höndla atburðum, 1191 01:18:32,340 --> 01:18:35,640 en segjum notandi mitt smelli á hnappinn. 1192 01:18:35,640 --> 01:18:38,040 Hvað ef ég vil senda þá beiðni til baka til the framreiðslumaður, 1193 01:18:38,040 --> 01:18:41,100 en ég vil ekki að endurhlaða síðunni, því að þurfa að endurhlaða nýja síðu 1194 01:18:41,100 --> 01:18:44,390 hvert einasta sinn fær konar leiðinlegur, og hvers vegna þarf ég 1195 01:18:44,390 --> 01:18:47,430 að rífa niður hausinn aftur, og fótur aftur, 1196 01:18:47,430 --> 01:18:49,670 og allir þættir á síðuna aftur 1197 01:18:49,670 --> 01:18:53,180 bara til að hressa kveðju eða tíma? 1198 01:18:53,180 --> 01:18:55,290 Svo að hvers vegna við höfum eitthvað eins og Ajax. 1199 01:18:55,290 --> 01:18:59,150 Hvað við getum gert hér með Ajax er að við getum sagt, allt í lagi, 1200 01:18:59,150 --> 01:19:01,290 Mig langar að senda nokkur gögn til the framreiðslumaður, 1201 01:19:01,290 --> 01:19:04,010 og ég vil fá svar til baka svo ég geti uppfært síðuna mína, 1202 01:19:04,010 --> 01:19:12,120 eða kannski bara gera sumir lausnarleiðar útreikninga sem ekki endilega að sýna neitt til notanda. 1203 01:19:12,120 --> 01:19:15,500 Hvað þú þarft að gera þetta? Jæja, þú þarft að hafa slóðina sem þú þarft að tala við. 1204 01:19:15,500 --> 01:19:18,650 Framreiðslumaður geta ekki bara dularfullur hlusta á frá hvergi. 1205 01:19:18,650 --> 01:19:21,960 Þú þarft að hafa ákveðinn stað sem þú ætlar að senda þessi gögn til. 1206 01:19:21,960 --> 01:19:26,240 Og þú þarft líka nokkur gögn til að senda, eða kannski er það dataless fyrirspurn. 1207 01:19:26,240 --> 01:19:31,380 Þú vilt bara að smellur aftur til the framreiðslumaður og segja, hey, ég er á lífi, eða eitthvað svoleiðis. 1208 01:19:31,380 --> 01:19:35,150 Og þá þú vilt aðgerð sem í grundvallaratriðum annast með árangri. 1209 01:19:35,150 --> 01:19:38,250 Skulum segja að þú færð til baka smá upplýsingar frá þjóninum þínum, 1210 01:19:38,250 --> 01:19:42,960 og þú vilt breyta titli notandans á síðunni þeirra. 1211 01:19:42,960 --> 01:19:44,930 Svo þú vildi fá upplýsingar til baka, 1212 01:19:44,930 --> 01:19:48,860 og þú myndi ýta því á skjáinn. 1213 01:19:48,860 --> 01:19:51,170 Hvað sem gerist er, þegar síða er tilbúinn, 1214 01:19:51,170 --> 01:19:56,500 þú býrð til á smell virka fyrir þennan hnapp sem heitir greeter. 1215 01:19:56,500 --> 01:19:58,810 Hvað þetta þá gerir er, þegar þessi hnappur er ýtt, 1216 01:19:58,810 --> 01:20:03,700 þú talar við greetings.php, gera þig að POST beiðni, 1217 01:20:03,700 --> 01:20:07,290 og þú segir, hey, fá mér eitthvað frá síðunni þinni. 1218 01:20:07,290 --> 01:20:09,890 Við gerum ekki raunverulega þörf til að lýsa því, en greetings.php, 1219 01:20:09,890 --> 01:20:12,480 segjum bara, gefur aftur "Halló heimur." 1220 01:20:12,480 --> 01:20:15,650 Svo fáum við til baka þetta "Halló heimur," og á velgengni af þessu, 1221 01:20:15,650 --> 01:20:20,730 gefnu ekkert fer úrskeiðis, þá erum við að fara bara á þennan miða stað 1222 01:20:20,730 --> 01:20:25,720 að við tilgreint og við standa bara svar þar. 1223 01:20:25,720 --> 01:20:31,560 Og þetta er mjög einföld leið til að setja upp Ajax fyrirspurn. 1224 01:20:31,560 --> 01:20:34,340 >> Mjög fljótt, Rob konar nefndi þetta nú þegar, 1225 01:20:34,340 --> 01:20:37,170 hlutir geta farið úrskeiðis, slæmur hlutur getur gerst, 1226 01:20:37,170 --> 01:20:42,660 svo þú vilt kynna þér þessa HTTP svar númerum. 1227 01:20:42,660 --> 01:20:46,030 Hvað þetta eru eru bara, eins og, 200, allt gekk vel. 1228 01:20:46,030 --> 01:20:48,670 Eitthvað annað, slæmur hlutur gerðist. 1229 01:20:48,670 --> 01:20:50,790 Það er yfirleitt málið sem þú vilt að muna. 1230 01:20:50,790 --> 01:20:53,440 En það er gott að vita allt um þetta. 1231 01:20:53,440 --> 01:20:55,970 Og að lokum, þegar við höfum farið í gegnum öll þessi, 1232 01:20:55,970 --> 01:20:58,680 við þurfum að tala mjög hratt um hönnun, 1233 01:20:58,680 --> 01:21:00,620 og þá getum við látið ykkur öll fara. 1234 01:21:00,620 --> 01:21:03,410 Hönnun. Hlutir sem þú vilt að muna. 1235 01:21:03,410 --> 01:21:06,950 Spurðu þig þessar spurningar: Hver verður að nota þetta? 1236 01:21:06,950 --> 01:21:09,580 Hvað munu þeir nota það fyrir? Hvað gera notendur mínir þykir vænt um? 1237 01:21:09,580 --> 01:21:11,750 Hvað gera þeir ekki sama um? 1238 01:21:11,750 --> 01:21:14,500 Þú bara vilt ekki að gera app og láta það vaxa bara 1239 01:21:14,500 --> 01:21:18,270 og verða þetta risastór, allur-neyslu hlutur sem þú getur ekki einu sinni að klára. 1240 01:21:18,270 --> 01:21:23,900 Þú vilt hafa stakur markmið og áætlanir og það sem þú vilt að takast. 1241 01:21:23,900 --> 01:21:29,000 Gera það áreynslulaus. Allt þetta segir, í grundvallaratriðum, 1242 01:21:29,000 --> 01:21:34,950 gera það auðvelt fyrir notandann til að nota það, ekki gera það risastór Blob texta eins og þessa mynd er, reyndar. 1243 01:21:34,950 --> 01:21:38,020 Þú vilt bara að það sé eitthvað þar sem það er mjög auðvelt fyrir einhvern til að fara í 1244 01:21:38,020 --> 01:21:40,800 og gera það sem þeir vilja gera. 1245 01:21:40,800 --> 01:21:42,920 Þú vilt ekki að þurfa að sigla 5 síður 1246 01:21:42,920 --> 01:21:45,460 að fá að helsta hlutverk þitt á síðuna þína. 1247 01:21:45,460 --> 01:21:49,290 Ef Google hefði 5 síður áður en þú getur jafnvel leita eitthvað, 1248 01:21:49,290 --> 01:21:53,080 enginn myndi nota það. 1249 01:21:53,080 --> 01:21:55,890 Og loks, pappír frumgerð, rýnihópur. 1250 01:21:55,890 --> 01:21:59,220 Hafa góða hönnun og prófun starfsemi. 1251 01:21:59,220 --> 01:22:00,730 Bara vegna þess að þú heldur að það virkar fyrir þig, 1252 01:22:00,730 --> 01:22:04,860 þýðir ekki einhver annar hugsar það virkar. 1253 01:22:04,860 --> 01:22:14,490 En já, það er það. 1254 01:22:14,490 --> 01:22:17,490 [CS50.TV]