[Review: Spurningakeppni 1] [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Harvard University] [Þetta er CS50.] [CS50.TV] [Lucas Freitas] Velkomin á síðuna mína. Þetta er umfjöllun um Próf 1. Bara sem höfnun, þetta er - ég meina, við erum að fara að reyna að ná eins mikið efni og mögulegt er, en það þýðir ekki að við erum að fara til að ná öllum þeim hlutum sem getur verið í spurningakeppni 1. Svo vertu viss um að taka einnig að líta á fyrirlestri, köflum allt sem þú getur. Quiz 1 er að fara að vera á miðvikudag, næsta miðvikudag. Svo vera viss um að rannsaka. Það er að fara að vera, nokkurn veginn, eins og fyrsta prófið varðandi snið, en það er líklega að fara að vera miklu erfiðara. Að minnsta kosti, á síðasta ári þegar ég tók 50, ég hélt að það væri miklu erfiðara. Svo læra mikið. Ég ætla að ná gögn uppbygging og Huffman kóðun. Þetta er eitthvað sem fullt af fólki heldur er flókið, en ég ætla að reyna að gera það eins auðvelt og mögulegt er. Fyrst af öllu, hvað við viljum að þú krakkar að vita fyrir prófið 1 er að skilja huglæg lýsingar á hverjum gögn uppbygging sem ég ætla að kynna. Það þýðir að þú þarft ekki að raunverulega innleiða kjötkássa borð í spurningakeppni þína 1. Við viljum ekki að þú innleiða allt kjötkássa borð, kannski munum við reyna að gera þig framkvæma nokkrar aðgerðir, algengustu aðgerðir, en við erum ekki að fara að gera þú framkvæma allt. Svo það er mikilvægt að þú skiljir hugtakið á bak við hvert gögn uppbygging og líka að þú ert fær um að kóða í C, bara algengustu aðgerðir sem þeir hafa fyrir hvert gögn uppbygging. Og einnig að vera fær um að endurskoða ábendingum og structs, vegna þess að þeir virðast mikið í þessum gögn uppbygging. Fyrst, tengd listum. Tengd listar eru reyndar mjög svipuð fylki, en munurinn á milli tengda listanum og fjölda, fyrst af öllu, er að tengjast listi hefur mjög sveigjanlegur stærð, en í fylki sem þú hefur annað hvort að velja mjög stór stærð fyrir fylki, svo þú veist að þú ert að fara að vera fær um að geyma öll gögn í því fylki, eða þú þarft að nota malloc að hafa sveigjanlegan lengd fylkisins. Í tengdum listum það er mjög auðvelt að bara fá fleiri þætti, setja fleiri þætti í tengda listanum eða fjarlægja atriði. Og í raun, ef þú vilt ekki tengda listanum að vera flokkaður, þú getur leitað og fjarlægja þætti í föstu tíma, svo O (1) tíma, svo það er mjög þægilegt. Þú verður bara að vera varkár alltaf muna að malloc og ókeypis hnútar, bara vegna þess að ef þú ert ekki, munt þú hafa minni lekur. Svo tengd lista - skilgreining á hnút er bara eins og það sem við höfum hérna. Ég setti int n, en þú getur geymt hvaða gögn sem þú vilt. Svo ef þú vilt að geyma streng, það er fínt. Ef þú vilt geyma strúktúr, það er allt í lagi, tvöfaldur, hvað sem þú vilt. Ég setti bara int n fyrir dæmi hér. Og þú ert með músina á næsta hnút. Svo, í grundvallaratriðum, sem er tengdur listi hefur nokkrar upplýsingar, og þá bendir það til næsta hnút. Ef það er síðasta þáttur í tengda listanum, það er að fara að benda á núll. Svo er þetta dæmi um tengda listanum. Í lagi, svo nú skulum sjá hvað við ættum að gera ef ég vil setja stak í tengda listanum. First, fall setja inn verður af ferðar tóm vegna þess að ég vil ekki að skila neinu. Og ég ætla að taka við int sem rök, því ég vil vita hvað ég vil setja. Svo er það fyrsta sem ég ætti að gera? Jæja, ætti ég að malloc á newnode, Svo er að fyrsta lína. Ég ætla bara að búa til nýjan hnút til að setja í tengda listanum. Svo hvað get ég gert? Jæja, við vitum að í gerð okkar tengd listum í bekknum, leggjum alltaf höfuðið sem alþjóðlegt breytu. Svo er það sem við getum gert að breyta höfuð. Ég er að gera þetta nýr hnútur vera nýr yfirmaður, og það er að fara að benda á fyrri höfuð. Hvernig getum við gert það? The fyrstur hlutur sem ég þarf að gera er að breyta 'n' í nýjan hnút til að gildi, sem var samþykkt við aðgerðina. Þá er newnode næst er að fara til vera the höfuð. Höfuðið er að fara að newnode. Svo er það frekar einfalt. Til að eyða hnút, getum við gert það eins og - Ein leiðin sem við gátum gert það er að segja, allt í lagi, ef ég vildi eyða, til dæmis, 3, hvað ég gæti gert er bara benda á fyrri hnút í næsta hnút 3. Þannig að ég myndi bara gera eitthvað svona. En hvað er vandamálið með að gera það? Ég er með minni leka, þannig að ég hef ekki aðgang að fjölda 3. lengur. Vandinn við það er að ég ætla ekki að fara að vera fær um að losa þann tengipunkt. Ég ætla að hafa minni leka og (óskiljanlegur) er að fara að hata mig. Svo í stað þess að gera það, ætti ég sennilega hafa tímabundið músina. Svo ég setti afleysingamanneskja. Það er að fara að benda á hnút sem ég vil eyða. Og þá get ég fært fyrri hnúta að benda á næsta hnút hnúturinn sem ég vil eyða. Og að lokum, get ég frjáls músina. Þarf ég að losa músina sem ég stofnaði þarna? Ég hef ekki til, bara vegna þess að - munurinn er sá að þetta hnútur var búin að nota malloc, svo er það í hrúga, en þetta var bara lýst sem NULL rofi í stafla. Þannig að ég þarf ekki að losa hana. Lagi. Svo nú skulum við tala um stöflum. Stafla eru nokkuð einföld. Við gerðum stafla og biðraðir í bekknum bara að nota fylki, en þú ættir að þekkja - bara að vera meðvitaðir að þú getur líka gert stafla í biðröð nota tengd listum eins og heilbrigður. Þannig að ef þú ert með array, hvað væri stakkur? A stafla, í fyrsta lagi verður að hafa stærð. Þú þarft að geyma það sem er á stærð við stafla sem þú hefur núna. Og einnig þú vildi hafa fylki, í þessu tilfelli á tölum, en ef þú vilt, það er hægt að vera fylki strengi, fylki af strúktúr, nokkuð sem þú vilt geyma. Um stafla: Munurinn stafla og tengda listanum er að í stafla þú hefur aðeins aðgang að síðasta þáttur sem var sett í stafla. Það heitir síðasta árið, fyrst út. Rétt eins og þú hafa a stafla af stæði, ef þú setur bakka á the toppur af the stakkur, þú þarft að fjarlægja þessi bakki fyrst að hafa aðgang að öðrum stæði. Það er sama við stöflum. Svo ef ég vil, til dæmis, bæta þáttur í stafla, hvað ætti ég að gera? Það heitir ýta, og það er nokkuð augljóst. The fyrstur hlutur þú þarft að gera er að athuga hvort stærð stafla er ekki meira en eða jafnt og getu stafla. Vegna þess að ef þú ert nú þegar á fullri getu, þú getur ekki bætt neitt annað. Og þá ef ekki, hefur þú bara að bæta þáttur í stafla. Og að lokum, vöxtur stærð. Svo er það frekar einfalt. Svo ég bætt bara númer 2. Og ef ég vil að skjóta, sem þýðir að ég vil að fjarlægja síðasta þáttur sem var bætt við og skila gildi frumefni, það fyrsta sem ég hef að athuga er að stafla er ekki tómt. Vegna þess að ef það er tómt, ég get ekki aftur neitt. Í því tilfelli, ég er aftur -1. Annars, ég ætla að lækka stærð sérstakur, og aftur tölur (s.size). Af hverju gerði ég að telja niður stærð og fara síðan aftur s.size? Það er vegna þess að í þessu tilviki er sérstakur hefur stærð 4, og ég vil fara aftur í fjórða þáttur, ekki satt? En hvað er vísitala fjórða frumefni? Þrír. Þar sem ég stærð - er að fara að vera 3, get ég bara aftur s.numbers (s.size) því það er 3. Svo það er bara vísitalan. Nú biðraðir. Biðraðir eru laglegur mikill the sami hlutur. Eini munurinn er að í stað þess að hann var síðast í, fyrst út, þú þarft fyrst inn fyrst út. Sennilega ef þú ert að bíða eftir að fara á tónleika, þú myndir ekki vera ánægð ef þú hefðir stafla stað þess að biðröð. Vera síðasta manneskja til að koma yrði fyrsta manneskjan til að koma inn á tónleikana. Þú myndi sennilega ekki vera hamingjusamur. Í biðröð, fyrsta manneskjan til að komast í er einnig fyrsta manneskjan til að komast út. Svo í skilgreiningu á biðröð, að auki hafa stærð í array, þú þarft líka að hafa í höfuðið, sem er vísitalan við höfuð stafla. Þannig að fyrsta þátturinn núna. Velja slembið skinn er það sama og ýta á stafla. Ef þú værir mjög barnaleg, myndir þú bara segja, Jæja, ég get bara gert nákvæmlega það sama og ég gerði fyrir ýtin. Ég get bara athuga hvort það er ekki umfram afkastagetu. Ef það er aftur ég ósatt, annars ég get bara flutt nýtt gildi og þá hækka stærð. En af hverju er þetta rangt? Við skulum sjá þetta dæmi. Ég er að reyna að Velja slembið skinn fullt af efni, og þá er ég að fara að dequeue og Velja slembið skinn. There 'a einhver fjöldi af skipunum, en það er mjög einfalt. Ég ætla að Velja slembið skinn 5, svo að bæta 5, og þá 7, 1, 4, 6, og þá vil ég að dequeue eitthvað, sem þýðir að ég ætla að fjarlægja fyrsta frumefnið. Þannig að ég ætla að eyða númerinu 3, ekki satt? Fyrsti þátturinn. Allt í lagi. Nú ef ég reyni að Velja slembið skinn eitthvað annað, hvað er að fara að gerast? Samkvæmt framkvæmd mína, Ég ætlaði að setja í næsta númer í vísitölunni q.size. Í þessu tilviki, stærð er 8, svo vísitalan 8 verður hérna í neðstu stöðu. Ef ég reyni að Velja slembið skinn 1 hérna, myndi ég vera skrifa of mikið á síðustu stöðu til fjölda 1, sem er alveg rangt fyrir sér. Það sem ég vil gera er að vefja um og fara í fyrsta sæti. Kannski vildi bara segja, vel, ég hef bara að athuga ef ég get í raun sett eitthvað þar. Ef ekki segi ég bara, ó, nýja fullan gang er í raun getu - 1, og þú getur ekki sett stak þar. En hvað er vandamálið? Vandamálið er að ef ég dequeue bara allt hérna og þá er ég að reyna að bæta eitthvað annað, það myndi bara segja, vel, þú varst á fullri getu, sem er 0. Svo biðröð þinn er farinn. Þú þarft að vefja í kring, og leið umbúðir í kring að þú krakkar lært í framsýnn og öðrum psets var að nota unga fólkið. Þú getur prófað það heima til að skilja hvers vegna þú myndir gera q.size + q.head unga fólkið getu, en ef þú skoðar hérna, getum við séð að það virkar. Svo í síðustu td q.size var 8 og höfuð var 1, því það var þessi staða hér í fylkinu. Svo það verður 8 + 1, 9. Mod getu 9 væri 0. Það myndi fara inn í vísitöluna 0. Við munum vera í rétta stöðu. Og þá reyna biðröð heima. Nokkur mikilvæg atriði: reyna að skilja muninn á milli reykháf og biðröð. Heima, reyna að fá mjög kunnugur framkvæmd Velja slembið skinn, dequeue, ýta og skjóta. Og einnig að skilja þegar þú myndi nota hvert þeirra. Svo skulum slaka í 10 sekúndur með fullt af pokemons. Og nú skulum við fara aftur til gögn uppbygging. Hash töflur. A einhver fjöldi af fólk voru hrædd við kjötkássa matskeið. í Heimadæmi 6, stafa afgreiðslumaður. Kjötkássa matskeið og reynir, a einhver fjöldi af fólk fá hræddur af þeim. Þeir telja að þeir eru svo erfitt að skilja. Já? [Rob Bowden] Heimadæmi 5. Heimadæmi 5, já. Takk Rob. Já. Sex var Huff n 'Puff, já. Heimadæmi 5 var Stafa Afgreiðslumaður, og þú þarft að nota annaðhvort kjötkássa borð eða reyna. 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. Hvað er kjötkássa borð, í grundvallaratriðum? A kjötkássa borð er fylki af tengd listum. Eini munurinn á milli fjölda og kjötkássa borð er að í kjötkássa töflunni þú hefur eitthvað sem kallast kjötkássa virka. Hvað er kjötkássa virka? Ég veit ekki hvort þið getið lesið hér. Þetta er dæmi um kjötkássa töflunni. Svo þú getur séð að þú sért með fylki með 31 þáttum. Og hvað við gerum í kjötkássa töflunni er hafa kássufall sem er að fara að þýða takka, hvor int við vísitölu. Ef, til dæmis, ef ég vil velja fyrir B. Harrison, Ég myndi setja B. Harrison í kjötkássa virka mínum, og kjötkássa virka myndi skila 24. Þannig að ég veit að ég vil geyma B. Harrison í 24. Svo er það munurinn á milli bara að hafa fjölbreytta og hafa kjötkássa borð. Í kjötkássa töflunni þú munt hafa valkost sem er að fara að segja þér hvar á að geyma gögn sem þú vilt geyma. Fyrir kjötkássa virka, þú vilt leita að kjötkássa virka sem er deterministic og vel dreift. Eins og þú geta sjá hér, sérðu að mikið af þeim gögnum sem ég vildi geyma var í raun 19 stað þess að nota 31 og 30 og 29, sem voru allt ókeypis. Svo kjötkássa virka sem ég notaði var ekki mjög vel dreift. Þegar við segjum vel dreift, þá þýðir það að við viljum hafa, um það bil, að minnsta kosti 1 eða 2 er fyrir hvert þeirra - eins og, mismunurinn er 1 eða 2 fyrir hvert skránna í fylki. Þú vilt hafa bil, sama fjölda staka í hverju tengda listanum í array. Og það er auðvelt að athuga hvort það er í gildi í kjötkássa töflunni skoða eins kjötkássa matskeið. Þá tré. Þetta er tré. Tré í tölvunarfræði eru á hvolfi fyrir sumir ástæða. Svo hérna þú hefur rót af trénu og þá fer. Þú ættir bara að vita flokkunarkerfi fyrir foreldra og barn. Hver hnútur hefur börn sín, sem eru hnútar sem eru undir foreldri. Svo, til dæmis, 2 er að fara að vera foreldri fyrir 3 og fyrir önnur börn rétt þar, en 3 er að fara að vera foreldri í 1 og hin börnin sem eru þar. Og 1 er að fara að vera barn 3, og svo framvegis. Við höfum eitthvað mikið meira áhugavert, sem kallast Tvíundarleit tré, þar sem öll gildi eru á rétti hnút eru að fara að vera á hægri, hérna - á hægri, eru að fara að vera hærri en viðkomandi frumefnis í rót. Svo ef ég hef númer 5 hérna, allir þættir á hægri eru að fara að vera meiri en 5, og á vinstri Allir þættir eru að fara að vera minna en 5. Hvers vegna er þetta að gagni? Jæja, ef ég vil athuga hvort tala 7 er hér, til dæmis, Ég fer bara til 5 fyrst og ég ætla að sjá, er 7 meiri eða minni en 5? Það er meiri, þannig að ég veit að það er að fara til verða að vera á hægri af trénu. Þannig að ég hef mikið minna efni til að líta á. Í framkvæmd tvöfaldur leita tré, hnút, ég ætla bara að fara að hafa til að hafa gögn, svo INT n, þú getur líka haft streng eða eitthvað sem þú vildir. Þú verður bara að vera varkár á að skilgreina hvað er meiri, það er minna. Þannig að ef þú hefðir strengi, til dæmis, þú gætir skilgreina að allir þessir hlutir á hægri er að fara að hafa stærri lengd, vinstri eru að fara að hafa lægri lengd, svo það er í raun komið að þér. Hvernig get ég innleiða finna fyrir BST? The fyrstur hlutur sem við verðum að gera er að athuga ef rótin er NÚLL. Ef það er NULL, þýðir það að hlutur er ekki þar vegna þess að þú þarft ekki einu sinni tré, ekki satt? Svo ég aftur ósatt. Annars, ég ætla að athuga hvort talan er hærri en gildið í rót. Ég ætla að reyna að finna frumefnið á hægri af trénu. Þú sérð að ég er að nota endurkvæmni hér. Og þá ef það er minna, ég ætla að líta á vinstri. Og að lokum, annars, ef það er ekki minna eða ekki meiri, það þýðir að það er gildi sjálft. Svo ég aftur bara satt. Þú getur séð hér að ég nota ef, ef, ef. Og muna, í spurningakeppni 0, við höfðum vandamál sem hafði ef, ef, ef, og þú varst að ætlast til að finna úr óhagkvæmni, og óhagkvæmni var að þú notaðir ef. Þú ættir að hafa notað ef annað hvort, annars ef, og annað. Svo ætti ég að nota annars ef og annars ef og annar hér? Hefur einhver - já? [Námsmaður tal, inaudible] Það er fullkomið. Svo hún er að segja að það skiptir ekki máli, bara vegna þess að þá óhagkvæmni sem við höfðum áður var að því, kannski ef einhver skilyrði var fullnægt, svo þú hefur framkvæmt aðgerð, en þá þú varst að fara að stöðva allar aðrar aðstæður. En í þessu tilfelli, aftur það strax, svo það skiptir ekki máli. Svo þú þarft ekki að nota annað hvort. Og að lokum, við skulum tala um tilraunir, sem er uppáhalds allra. A reyna er tré af fylki. Það er mjög fljótur að fletta upp gildum, en það notar mikið minni. Og yfirleitt er það að sía orð, þannig að þegar þú vilja til að innleiða, til dæmis, ég veit ekki, eins og símaskrá í símanum og þú vilt vera fær til tegund B og bara hafa nöfn af fólki sem hefur B. Það er mjög auðvelt að hrinda í framkvæmd sem nota a reyna, til dæmis. Hvernig skilgreinir þú hnút í að reyna? Þú verður bara að hafa bool sem er að fara að vera is_word. Sem sýnir að það að nota alla stafina fyrir þann hnút, þú tókst að mynda orð, og þá munt þú hafa óákveðinn greinir í ensku fylking af ábendingum til hnúður. Getur þú sjá að við höfum fjölda foreldra hnúður, svo node * array? Já? Svo skulum sjá hvernig það mun virka. Fyrir villuleit, við höfum fjölda af 27 þáttum, vegna þess að við höfum alla stafina auk úrfellingarmerki. Áður hér er ég bara að fara að nota 2 vegna þess að ég vil vera fær um að skrifa á töfluna. Allt í lagi. Þannig að þetta er dæmi um a reyna. Ef ég skilgreina bara fyrsta hnút, ég hef fjölbreytta 2 þáttum sem eru 2 ábendingum til NÚLL, þannig að ég setti bara "a" og "b". Og ég ætla að hafa bool sem segir is_word. Það er að fara að vera falskur fyrir þá fyrstu, bara vegna þess, áður en að þú þarft engar stafi. Svo er tóm orð ekki orð. Svo er það rangt. Ef ég vil bæta 'A' þessari orðabók, hvað myndi ég þarf að gera? Ég vildi bara að malloc nýja tengipunktur fyrir 'a', og þá bæta orðinu til þess að sanna. Svo það táknar bara að hafa 'a' er að fara til að vera satt. Skynsamleg? Þá ef ég vil bæta við 'BA', ég verð að malloc 1 fyrir 'B' og þá er ég að fara að setja upp The Boolean að rangar, vegna þess að "b" af sjálfu sér er ekki orð. Þá er ég að fara að malloc annað fyrir 'a', svo 'BA', og þá er ég að fara að setja upp það er orð satt. Vegna þess að "BA 'er orðið. Og þá ef "b" er ef ég vil sjá í þessari orðabók, Ég get bara farið á hið fyrra, 'B'. Ég fer niður, og ég lít á er orðið, og það segir ósatt. Svo það er ekki orð. Ef ég vil athuga 'BA', Ég fer í fyrstu, 'B', og þá fara í 'a', og ég sé satt, svo það er orðið. Skynsamleg? A einhver fjöldi af fólk fá rugla með tilraunir. Nei? Loks Huffman kóðun. Huffman kóðun er mjög gagnlegt til að spara minni og þjappa texta skrá, bara vegna þess að einhver fjöldi af sinnum þú notað 'a' og 'e', ​​til dæmis, í skjölum, en ég veit ekki hvort þú krakkar nota 'q' eða "Z" eins mikið. Hafa bara 1 bæti fyrir hvert einasta staf, hvert einasta - 256 stafi sem við höfum í ASCII töflunni er ekki mjög ákjósanlegur, bara vegna þess að það eru sumir stafir sem þú notar miklu meira, svo þú ættir sennilega að nota minna minni fyrir þá. Hvernig nota ég Huffman kóðun? Við verðum að gera Huffman tré.  A Huffman tré hefur hnúður sem hafa tákn sem er að fara að vera eins og, 'a', 'b', 'c', bréf, hvað stafurinn sem þú hefur, tíðni sem er tíðni sem orðið birtist í texta, sem þú varst að búa til Huffman tré fyrir, og þá er tengipunktur sem er að fara að benda á vinstri á Huffman tré og annan hnút sem er að fara að benda til hægri. Svo bara eins og tré. Hvernig byggja þér Huffman tré? Þú ert að fara að velja 2 hnúta sem hafa lægstu tíðni. Ef þú ert með jafntefli þú ert að fara að velja 2 hnúta sem hafa lægstu ASCII gildi eins og heilbrigður. Þá þú ert að fara að búa til nýja tré út af þessum 2 hnúta sem er að fara að hafa samanlagt tíðni í foreldri hnút. Og svo þú ert að fara að fjarlægja 2 börn úr skóginum og skipta þeim með foreldri. Og þú ert að fara að endurtaka það þangað til þú hefur aðeins 1 tré í skóginum. Svo skulum sjá hvernig þú myndir gera Huffman tré fyrir ZAMYLA. Þú getur séð hér að allir stafir hafa tíðni 1 nema fyrir 'A'; sem hefur tíðnina 2. Svo ég stofnaði hnúður fyrir alla stafina sem ég set í röð ASCII gildi og tíðni. Þannig að ef ég vil búa til fyrsta tréð, það vilja vera með 'L' og 'M'. Svo það er hér. Tíðni par verður 2 því það er 1 + 1, þá næst 2 með lægstu tíðni eru 'Y' og 'Z'. Og þá hef ég þá alla vera - hafa tíðnina 2. Svo hver sjálfur ert the sjálfur sem hafa lægsta ASCII gildi fyrir the næstur einn? 'A' og 'L'. Svo ég skapa nýjan hnút, og að lokum, það er 4 og 2, svo 2 er að fara að vera á vinstri kantinum. Og þetta er Huffman tré. Þá ef ég vil skrifa texta, eins í tvöfaldur að umbreyta í texta, með Huffman tré er mjög auðvelt. Til dæmis, ef ég segi að færa til vinstri er 0 og færa til hægri er 1, Hvað er að fara til að tákna? Svo eins og 1, 1, svo rétt, rétt, og síðan 0, þannig að eftir væri L, og síðan 1, 0, 0. Svo 1, 0, svo bara 1, 0, 'A'. Og síðan 0, 1, þannig að "Z". Og síðan 1, 0, 0 - nr. 0, 0 mun vera 'Y', svo latur. Svo er það allt fyrir mig, Rob er að fara að taka yfir. [Rob Bowden] Svo, viku 7 dót. Við höfum fengið mikið að fara yfir mjög hratt. Bita rekstraraðila, biðminni flæða, CS50 bókasafn, þá HTML, HTTP, CSS. Allt í eins 15 til 20 mínútur. Bita rekstraraðila. Það eru 6 af þeim sem þú þarft að vita. Bita og Bita eða, XOR, vinstri hliðrun, hægri vakt, og ekki. Hægri Shift og ekki þú sást varla í fyrirlestri á öllum. Við munum fara yfir það fljótt hér, en það er gott að vita að þetta eru 6 sem eru fyrir hendi. Mundu að Bita rekstraraðila eru eins og þegar þú gerir 3 + 4. Þú ert ekki að takast á við tvöfaldur á 3 og 4. Með Bita rekstraraðila sem þú ert í raun að takast á við einstaka bita af tölunum 3 og 4. Svo sá fyrsti sem við munum segja er Bita ekki, og allt það gerir er að fletta alla bita. Svo hér, ef þú ert að skrifa þetta í C, myndir þú ekki skrifa það sem ~ 11.011 eða hvað, viltu skrifa það eins og ~ 4, og þá myndi flettir tvíundarkerfisform 4. Svo hér, ~ sumir tvöfaldur númer 1101101 er að fara að einmitt flettir alla 1 í 0 og allar 0 í 1 er. Eins og ég segi þarna, tíð notkun þessa, og við munum sjá það í smá, er eins og við viljum koma upp með einhverjum fjölda þar sem allar bits eru 1, nema fyrir einn af þeim. Svo það er yfirleitt auðveldara að tjá fjölda þar bara að einn hluti er sett, og síðan taka ~ af því, svo annan hvern bita er sett nema fyrir það eitt. Svo er það sem við erum að fara að nota meira í bita. Bita eða. Hér eru 2 tvöfaldur tölur, og þessar 2 tölur eru nokkuð dæmigerð, þar sem þeir tákna hvert mögulegt samsetning af bitum sem þú gætir þurft að ganga á. Hér þegar ég or'd hvern bita, við erum bara að fara að bera saman beint niður. Svo á vinstri hlið við erum með 1 og 1. Þegar ég Bita | þá, hvað er ég að fara að fá? Einn. Þá Bita | 0 og 1 er að fara að gefa mér? Einn. Bita 1 og 0 er að fara til vera the sami hlutur, einn. Bita 0 | 0 er að fara að gefa mér 0. Svo er eina málið þar sem ég fá 0 í 0 | 0 tilfelli. Og þú getur hugsa um að rétt eins og rökrétt ors þínum. Svo ef þú heldur að 1 eins satt og 0 eins falskur, það sama gildir hér. Svo satt eða satt er satt, satt eða ósatt er satt. Rangar eða satt er satt, ósatt eða rangt er það eina sem er í raun rangt. Hér er dæmi sem þú ættir að vita sem nokkuð gott dæmi um þegar Bita rekstraraðila eru notuð. Hér ef við eða höfuðborg 'A' með Ox20, og við munum líta á þetta í annað, fáum við eitthvað. Og ef við eða lágstafir 'a' með Ox20, fáum við eitthvað. Svo skulum draga upp ASCII töflunni. Allt í lagi. Hér sjáum við að 'A' er - hér höfum við 'A' er aukastaf 65. En ég ætla að fara með sextánskur, sem er Ox41. Nokkuð viss um að við sáum það í bekknum. Ég held að við sáum það í bekknum að það er nokkuð auðvelt að breyta frá sextánskur til tvöfaldur. Svo hér, ef ég vil setja 4 í tvöfaldur, það er bara að fara að vera 0100. Þetta er 1 er staðurinn, 2 er staður, 4 er staðurinn, þannig að þetta er 4. Þá get ég skipt 1 í tvöfaldur, sem er að fara að vera 0001. Og svo þetta er að fara að vera byggður á 'A' í tvöfaldur. Taka lágstafir 'a', það er nú að fara að vera Ox61, þar, að skipta þessum upp í tvöfaldur, þannig að 6 - Skulum gera í raun það - það er engin strokleður? Strokleður. Ox61. Svo skipta 6 í tvöfaldur er að fara að vera 0 + 4 + 2 + 0. Og skerandi 1 er að fara að vera 0001. Horfa á muninn á þessum 2, sjáum við að eini munurinn á lágstöfum og höfuðborg 'A' er þetta einn hluti. Svo koma aftur hingað - allt í lagi. Koma aftur til hér, ef við lítum á það sem hluti Ox20 er, svo skerandi Ox20 í tvöfaldur þess, er 0010, 0000. Ox20, eina hluti sem er sett er þetta hluti sem við erum áhyggjur með, með að skipta á milli há-og lágstöfum 'A'. Ef ég eða 'A', sem er þetta, 'A', ef ég eða 'a' með Ox20, hvað er ég að fara að fá? [Námsmaður, inaudible] lágstöfum 'a', því það er að fara til selbiti þessa hluti til 1. Og ef ég eða 'a' með Ox20, hvað er ég að fara að fá? Lágstafir A, vegna þess að bara oring 'a' með Ox20, É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. Svo við fáum 'a' og 'A'. Bita og. Aftur getum við að hugsa um þetta sem okkar rökrétt og hliðstæðu. Á vinstri hlið við höfum satt og satt. Það er að fara til að vera satt, og fyrir alla af þeim tilvikum, rangar og satt eða satt og ósatt, eða rangar og rangt, ekkert af þessum hlutum eru sönn. Svo er það sem við á endanum að fá 1000. Svo nú, hér, hér er þar sem ég hef notað traustur Bita ekki, þar sem við höfðum Ox20. Svo er þetta Ox20. Nú það sem ég vil gera, Bita ~ á Ox20. Sem er að fara að Flip alla bita. Þannig að ég hef 1101, 1111. Og svo 'A' anded með ~ Ox20 er að fara að gefa mér hvað? Eina hluti sem við þurfum virkilega að hugsa um er þetta ein, þar sem, ef öll þessi bits eru stillt á 1, þá erum við að fara að fá nákvæmlega það sem 'A' var, nema hugsanlega hvað þetta hluti er. Vegna þess að ef það var 1, nú er það að fara að vera stillt á 0, vegna þess hvað þetta er, anded með þetta er að fara að vera 0. Svo er það sem 'A' & ~ Ox20 að fara að gefa mér? [Nemendur svara, inaudible] Og hvað er 'a' og - það er 'A'. Og hvað er 'a' & ~ Ox20 að fara að gefa mér? 'A.' Vegna þess að þetta er eins og a 1. Anding með þessari 0 er að fara að gera það 0, og nú erum við að fara að fá 'A'. Báðir eru 'A' og síðast en ekki síst af þessu tagi, við höfum XOR. Það er mjög mikið eins og, nema það þýðir eingöngu eða. Þetta er eins og það sem þú venjulega eins eða í hinum raunverulega heimi. Svo þú gerir annað hvort 'x' eða 'y', en ekki bæði. Hér 1 ^ 1 er að fara að vera 0. Vegna þess að sanna, þetta er - það virkar ekki eins vel með rökrétt satt og ósatt sem Bita & og eða gera, en satt ^ satt er ósatt. Vegna þess að við viljum bara að skila true ef aðeins einn af þeim er rétt. Svo 1 ^ 1 0. Hvað um 0 ^ 1? Er 1. 1 ^ 0 er 1, 0 ^ 0 0. Svo undir öllum kringumstæðum, 0 Bita eitthvað 0 er að fara að vera 0. 1 Bita eitthvað 0 eða 0 Bita 1, ef það er | eða ^, verður það að vera 1, og ef það er & það verður 0. Og eina málið þar sem 1 Bita 1 er ekki 1 er með einkarétt eða. Það er 0110. Svo hér nú, með því að nota XOR - þannig að við erum aftur á 20. 'A' ^ Ox20 er þessir 2 bitar við erum að bera saman. Svo 1 ^ 0 er að fara að gefa mér hvað? A einn. 'A' ^ Ox20 er að fara að gefa mér? Lágstafir a. 'A' ^ Ox20 er að fara að gefa mér? Capital A. Vegna þess hvað þetta er að gera, þetta XORing með Ox20 er í raun ósvífni hvað þetta hluti er. Ef þetta er 0, það er nú að fara að verða 1. Þar sem þetta er 1, 1 ^ 1 0. Svo okkar 'a' hefur orðið 'A' og 'A' okkar hefur orðið "a". Svo er XOR mjög þægilegan hátt á bara ósvífni málið. Þú vilt bara að iterate yfir a band af bréfum og varamaður ræða hvert einasta staf, þú bara XOR allt með Ox20. Nú höfum við vinstri vakt. Vinstri Shift er bara að fara að, í grundvallaratriðum, ýta allar tölur inn í, eða til vinstri, og settu 0 á bak þeim. Svo hér höfum við 00.001.101. Við erum að fara að ýta 3 0 er frá hægri, og við fáum 01.101.000. Í nonbinary skilmálum, sjáum við að það er í raun að takast á 13 vinstri-færst með 3, sem gefur okkur 104. Svo vinstri breytast, sjáum við hér, x << y er í grundvallaratriðum x * 2 ^ y. 13 * 2 ^ 3, 2 ^ 3 er 8, þannig að 13 * 8 er 104. Ef þú heldur bara um tvöfaldur Almennt, hvernig hvern tölustaf, ef við byrjum frá hægri, það er 1 í stað, þá 2 er staður, þá 4 sæti. Svo með því að ýta á 0 er frá hægri, við erum bara að þrýsta hluti sem voru í 4 er stað til 8 er stað, og hlutir sem voru í 8 er stað til 16 sæti. Hver vakt margfaldar bara með 2. Já? [Nemandi] Hvað gerist ef þú færst um 5? [Bowden] Ef þú færst um 5 þú myndi bara missa tölustafir. Óhjákvæmilega er það sama. Eins, eru heiltölur aðeins 32 bita, þannig að ef þú bætir við 2 mjög stór heiltölur, það bara passar ekki í heiltölu. Svo er það sama hér. Ef þú færst um 5, við myndum bara missa þessi einn. Og það er góður af því sem ég meina með "illa" þar sem ef þú vakt of langt, þú missa bita. Hægri vakt er að fara að vera hið gagnstæða, þar sem við erum að fara að shove 0 er slökkt á endanum, og með tilliti til okkar, fylla í 0 frá vinstri. Svo að gera þetta, við erum í rauninni að snúa því sem við höfðum þegar gert. Og við sjáum að þrír 0 er á hægri hafa bara fallið burt, og við höfum ýtt 1101 alla leið til hægri. Þetta er að gera 104 3, sem er, á áhrifaríkan hátt, x / 2 ^ y. Svo nú, hér er það svipað þeirri hugmynd. Hvers vegna er það bara u.þ.b. x / 2 ^ y, og í raun ekki x / 2 ^ Y? Vegna þess að ef ég hefði færst um 4, þá hefði ég misst 1. Í grundvallaratriðum, hvað þú hugsa um, hugsa bara um heiltölu deild almennt. Svo, eins og 5/2 er 2. Það er ekki 2.5. Það er sama hugmynd hér. Þegar við deilum um 2, getum við orðið stakur bits á leiðinni. Svo nú - það er það fyrir Bita. Það er allt sem þú þarft að vita. Mundu notkun tilvikum og við sáum í bekknum, eins og a hluti gríma er gagnlegt fyrir Bita rekstraraðila, eða þú nota þá fyrir hluti grímur. Hástöfum og lágstöfum, viðskipti er mjög dæmigerðu dæmi. Jæja, svo biðminni flæða yfir árás. Einhver man hvað var athugavert við þessa aðgerð? Taka við lýst fjölda 12 bæti, 12 Sérstafir, og þá erum við að afrita inn í biðminni okkar 12 stafir allt band bar. Svo er það vandamálið hér? Galdur númer 12 ætti nánast strax skjóta út eins - hvers vegna 12? Hvað ef barinn verður að vera meira en 12 stafir? Hvað ef bar er milljónir af stöfum? Hér er málið memcpy. Ef bar er nógu lengi, það verður bara alveg - 'c', 'c' er ekki sama að það var aðeins 12 stafir; 'C' er ekki sama að það getur ekki passa að mörg bæti. Það verður bara alveg skrifa bleikju, 12 bæti við höfum úthlutað fyrir það, og allt yfir það í minni sem er í raun ekki tilheyra þeim buffer með hvað band bar er. Þannig að þetta var myndin sem við sáum í bekknum þar sem við höfum stafla okkar vaxa upp. Þú ættir að nota til að þessar myndir eða fá kunnuglegur með þeim aftur. Við höfum stafla okkar vaxa upp, byrja minni heimilisföng á 0 efst og vaxa niður að eins 4 milljarða neðst. Við höfum array okkar 'c' einhversstaðar í minni, þá höfum við bendi okkar að bar rétt undir það, og þá höfum við þetta vistað ramma bendi á heimilisfang aftur okkar og stafla móðurfélagsins venja okkar. Muna hvað aftur heimilisfang er? Það er þegar aðal kallar virka foo, kallar fall bar, óhjákvæmilega, bar aftur. Svo þegar bar aftur, þeir þurfa að vita að það er að fara aftur til foo sem heitir það. Svo er aftur heimilisfang veffang virka sem það hefur að fara aftur í þegar skilar. Ástæðan sem er mikilvægt fyrir yfirflæði árásum er því, þægilegur, tölvusnápur eins og að breyta því aftur heimilisfang. Stað þess að fara aftur til foo, ég ætla að fara aftur til hvar sem tölvusnápur vill mig að fara aftur til. Og þægilegur, þar sem tölvusnápur vill oft til að fara aftur til er the byrjun af the biðminni sem við höfðum upphaflega. Svo taka eftir, aftur, Little Indian. Tækið er dæmi um Little Indian kerfi, svo heiltala eða bendillinn er geymt við bæti baka. Svo hér sjáum við - er þetta? Já. Við sjáum Ox80, OxC0, Ox35, OxO8. Mundu sextánskur tölustafir? Við andstæða ekki sextánskur tölustafir Little Indian, því 2 sextánskur tölustafir gera upp eitt bæti, og við að snúa við bæti. Það er þess vegna sem við geymum ekki, eins, 80530CO8. Við geymum í staðinn, hvert par af 2 tölustöfum, frá hægri. Þetta netfang er átt við veffang upphafi biðminni okkar sem við viljum í raun og veru að afrita inn í fyrsta sæti. Ástæðan sem er gagnlegt er vegna þess, hvað ef árásarmaður gerðist, í stað þess að hafa band sem var bara skaðlaus strengur eins, nafn þeirra eða eitthvað, hvað ef í staðinn, að strengur væri eitthvað handahófskennt númer sem gerði allt sem þeir vildu það til að gera? Svo þeir gætu - Ég get ekki hugsað um hvaða kaldur kóða. Það gæti verið nokkuð, þó. Allir hörmulegu kóða. Ef þeir vilja, þeir gætu bara gert eitthvað á seg galla, en það væri tilgangslaust. Þeir gera það venjulega að hakk í kerfið. Lagi. CS50 bókasafn. Þetta er, í grundvallaratriðum, GetInt, getString, allir þessir aðgerðir við veitt fyrir þig. Þannig að við höfum char * band, og það er sem nýtt að við blés burtu á einhverjum tímapunkti á önninni. Mundu að band er bara fylki af stöfum. Svo hér sjáum við stytt útgáfa getString. Þú ættir að líta til baka á það að muna hvernig það er í raun til framkvæmda. Helstu upplýsingar eru, eftir sem við fáum í eina persónu í einu frá staðall í, sem er alveg eins og okkur að slá á lyklaborðið. Svo einn staf í einu, og ef við fáum of marga stafi, þannig að ef n + 1 er meiri en getu, þá þurfum við að auka getu buffer okkar. Svo hér erum við tvöföldun á stærð við buffer okkar. Og það heldur að fara, við að setja staf í biðminni okkar þar til við fá nýja línu eða lok skrá eða hvað, í því tilviki, við erum búin með band og síðan alvöru getString hlaupið minni, eins og ef við úthlutað of mikið minni það verður að fara aftur og skreppa aðeins. Þannig að við sýnum ekki það, en helsta hugmynd er það hefur til að lesa í einum staf í einu. Það getur ekki bara lesið í heild hlutur í einu, af því að dúa þeirra er eingöngu af ákveðinni stærð. Þannig að ef strengurinn að það reynir að setja inn biðminni er of stór, þá væri flæða. Svo hér við veg að með því aðeins að lesa í einum staf í einu og vaxandi þegar við þurfum að. Svo GetInt og aðrar CS50 bókasafn virka tilhneigingu til að nota getString í gerð þeirra. Svo ég var lögð áhersla á mikilvæga hluti hér. Það kallar getString að fá band. Ef getString ekki orðnar minni, muna að getString mallocs eitthvað, svo þegar þú hringir getString þú ættir ekki (óskiljanlegur) ókeypis að streng sem þú fékkst. Svo hér, ef það tókst ekki að malloc eitthvað aftur við INT_MAX sem bara fána sem, hey, við vorum í raun ekki hægt að fá heila tölu. Þú ættir að hunsa hvað ég aftur koma til þín, eða þú ættir ekki að meðhöndla þetta sem gild inntak. Að lokum, að því gefnu að hafi tekist, við notum sscanf með þessi sérstakur fáni, sem þýðir, fyrst passa heiltölu, þá passa allir stafir eftir þann heiltölu. Svo taka við viljum það til að jafna 1. Svo sscanf skilar hversu margar samsvaranir ef tekist gert? Það mun skila 1 ef það passar tókst heiltölu, það mun skila 0 ef hún passaði ekki heiltala, og það mun skila 2 ef það passar heiltala eftir einhverjum staf. Svo taka við reyna aftur ef við passa allt annað en 1. Þannig að ef við inn 1, 2, 3, C, eða 1, 2, 3, X, þá 1, 2, 3 myndi fá geymd í heiltala, X myndi fá geymd á eðli, sscanf myndi skila 2, og við myndum reyna aftur, vegna þess að við viljum aðeins heiltölu. Fljótt blása í gegnum HTML, HTTP, CSS. HyperText Markup Language er uppbygging og merkingarfræði af vefnum. Hér er dæmi úr fyrirlestri þar sem við höfum HTML tags. Við höfum höfuð tags, líkami tags, við höfum dæmi um auðar þar sem við í raun ekki hafa a byrja og loka tag, við höfum bara tengilinn og mynd. Það er engin lokun mynd tag, það er bara eitt merki sem nær allt að merkið þarf að gera. The hlekkur er dæmi, við munum sjá hvernig þú hlekkur til CSS, handritið er dæmi um hvernig þú hlekkur til utanaðkomandi JavaScript. Það er ansi einfalt, og muna, HTML er ekki forritunarmál. Hér muna hvernig þú myndir skilgreina form eða að minnsta kosti hvað þetta myndi gera? Slíku formi er með verkun og aðferð. Þeim aðferðum sem þú verður bara alltaf sérð eru GET og POST. Svo fá er útgáfa þar sem hlutur fær setja í vefslóðinni. POST er þar sem það er ekki sett í vefslóðinni. Staðinn, öll gögn frá formi er sett meira falinn í HTTP beiðni. Svo hér, aðgerð skilgreinir þar sem HTTP beiðni fer. Þar sem það er að fara er google.com / search. Aðferð. Mundu muninn FÁ og POST, og bara segja sem dæmi, ef þú vilja til bókamerki eitthvað. Þú munt aldrei vera fær um að bókamerki a staða vefslóð vegna þess að gögn er ekki innifalið í vefslóðinni. HTTP, nú er, HyperText Transfer Protocol. The Hypertext Transfer Protocol, myndir þú búast við það til að flytja HyperText Markup Language, og það gerir. En það flytja líka einhverjar myndir sem þú finnur á vefnum, hlaða neinu niður sem þú gerir byrjar sem HTTP beiðni. Svo HTTP er bara tungumál World Wide Web. Og hér getur þú þarft að viðurkenna svona HTTP beiðni. Hér HTTP/1.1 á hlið bara segir það er útgáfa bókunar ég nota. Það er ansi mikið alltaf að fara að vera HTTP/1.1, eins og þú munt sjá það. Þá sjáum við að þetta var fengið, því val að vera POST, að þú gætir séð. Og slóðin sem ég var að reyna að heimsækja var www.google.com/search?q = bla, bla, bla. Þannig að muna að þetta er spurningarmerki q = bla bla bla, er tegund af efni sem er lögð fram af formi. Viðbrögð það gæti aftur til mín myndi líta eitthvað eins og this. Aftur, byrjun með the siðareglur, sem er að fara að vera það, á eftir stöðukóðanum. Hér er það 200 lagi. Og að lokum, vefsíðan sem ég spurði reyndar að verður fylgt. Hugsanleg stöðukóði þú gætir séð, og þú ættir að vita nokkrir af þeim. 200 OK þú hefur sennilega séð áður. 403 Forbidden, 404 Not Found, 500 Innri Framreiðslumaður Villa er yfirleitt ef þú ferð á vef og eitthvað er brotinn eða þeirra PHP kóða hrun, en í tækið sem við höfum sem stór appelsína kassi sem kemur upp og segir, eins og, eitthvað er rangt, þetta númer virkar ekki eða þessi aðgerð er slæmt. Venjulega vefsíður vilt ekki að vita hvaða aðgerðir eru í raun slæmt, svo í staðinn að þeir ætla bara að gefa þér 500 Innri Framreiðslumaður Villa. TCP / IP er 1 lag undir HTTP. Mundu að það er Internet utan World Wide Web. Eins ef þú spilar online leikur sem ekki fara í gegnum HTTP, það er að fara í gegnum mismunandi - það er enn að nota internetið, en það þýðir ekki að nota HTTP. HTTP er bara eitt dæmi um siðareglur byggð á TCP / IP. IP þýðir bókstaflega Internet Protocol. Sérhver tölva hefur IP tölu, þeir eru þeir 4-tölustafa hlutir eins 192.168.2.1, eða hvað, sem hefur tilhneigingu til að vera á staðnum einn. En það er mynstur af IP heimilisfang. Svo DNS, Domain Name Service, það er það sem þýðir hluti eins google.com við raunverulegan IP heimilisfang. Þannig að ef þú skrifar þessi IP tölu inn vefslóð, sem myndi leiða þig til Google, en þú hættir ekki að muna þá hluti. Þú hættir að muna google.com í staðinn. Það síðasta sem við höfum er höfn, þar sem þetta er TCP hluti af IP. TCP gerir meira. Hugsa um, eins og þú hefur vefur flettitæki gangi. Kannski hafa sumir email forrit í gangi; kannski þú hafa sumir önnur forrit sem notar Internetið gangi. Þeir þurfa öll aðgang að Internetinu, en tölvan þín hefur aðeins 1 WiFi kort eða hvað sem er. Svo hafnir eru á þann hátt að við erum fær um að skipta upp hvernig þessi forrit eru færir um að nota internetið. Hver umsókn fær 1 ákveðna höfn að það getur hlustað á, og við vanræksla, HTTP notar höfn 80. Sumir email þjónustu nota 25. The lágmark-tölu sjálfur tilhneigingu til að vera áskilinn. Þú ert yfirleitt fær um að fá hærri-númeruð sjálfur fyrir þig. CSS, Cascading Style Sheets. Við stíll vefsíðum með CSS, ekki með HTML. Það eru 3 staðir sem þú getur sett CSS þinn. Það getur verið inline, á milli tags stíl, eða í algjörlega sérstakri skrá og síðan tengd inn Og hér er bara dæmi um CSS. Þú ættir að viðurkenna þetta mynstur, þar sem fyrsta dæmi er að við erum að passa líkami tag, og hér erum við að centering líkamanum tag. Annað dæmi, við erum að passa málið með ID fót, og við erum að beita sumir stíl við það. Takið eftir að ID fótur texta-raða í beina röð til vinstri, en líkami texta-færir sent. Footer er inni í líkamanum. Það mun, í staðinn, texta-align vinstri, jafnvel þótt líkaminn segir text-align sent. Þetta er allt Cascading hluti af því. Hægt er að hafa - þú getur tilgreint stíl fyrir líkamann, og þá hlutir í líkamanum er hægt að tilgreina nákvæmari stíl, og hlutirnir virka eins og þú býst við. Sértækari CSS specifiers hafa forgang. Ég held það er það. [Ali Nahm] Hæ allir. Ef ég gæti bara fá athygli þína. Ég er Ali og ég ætla að fara í gegnum PHP og SQL mjög hratt. Svo við getum byrjað. PHP er stutt fyrir PHP: Hypertext Preprocessor. Og eins og þið öll ættir að vita, er það a framreiðslumaður-hlið forskriftarþarfir tungumál, og við notum það fyrir bak endir af vefsíðum, og hvernig það gerir mikið af útreikningunum, bakvið tjöldin hluta. Setningafræði. Það er ekki eins og C, óvart, óvart. Það þarf alltaf að byrja með, ef þú sérð, - ég get ekki færa tímann. Þú sérð að þú þarft að nýjar tegundir af spelkum og þá þarftu líka? Php. Það er alltaf hvernig þú ert að ramma PHP texta, PHP kóðann þinn. Svo það getur ekki bara verið eins og C, þar sem þú setur konar það á fyrst. Þú þarft alltaf að umkringja hana. Og nú, helstu setningafræði er að allar breytur þarf til að byrja með $ staf. Þú þarft að gera það þegar þú ert að skilgreina þær, þú þarft að gera það þegar þú ert að vísa til til þeirra síðar. Þú þarft alltaf að $. Það er nýr besti vinur þinn, ansi mikið. Þú ert ekki - ólíkt C, þú þarft ekki að setja hvers konar breytu tegund það er. Svo á meðan þú þarft að $, þú þarft ekki að setja, eins og, int x eða String y, etcetera, etcetera. Svo smá munur. Sem afleiðing af þessu, þá þýðir það að PHP er veikt tegund. PHP er veikt tegund tungumál, og það hefur veikt slegið breytur. Með öðrum orðum, sem þýðir að þú getur skipt á milli mismunandi tegundir af ýmsum tegundum. Þú getur geymt þitt 1 sem int, þú getur geymt það sem streng, og þú getur geymt það sem flotholt, og það vilja allir vera númer 1. Jafnvel þó þú sért að geyma það í mismunandi formum, það er samt - breytu tegundir eru enn að halda í lokin. Þannig að ef þú lítur hér, ef þú manst frá pset 7, Margir af þú sennilega haft mál með þetta. Tveir samasemmerki 3 samasemmerki 4 samasemmerki. Allt í lagi, það eru engin 4 samasemmerki, en það eru 2 og 3.. Þú notar 2 samasemmerki að athuga gildi. Það getur athugað yfir gerðum. Þannig að ef þú getur séð á fyrsta dæminu, Ég hef num_int == num_string. Svo INT og band eru bæði, tæknilega, 1, en þeir eru mismunandi gerðir. En fyrir tvöföldum jafningja, verður það enn framhjá. Hins vegar, fyrir þrefalda jafningja, tékka það gildi sem og mismunandi tegundir. Það þýðir að það er ekki að fara að fara á þeim seinna tilvikinu hér, þar sem þú ert að nota 3 samasemmerki staðinn. Svo það er mikil munur að þú ættir að allir hafa sýnt núna. String samtenging er annar öflugur hlutur þú getur notað í PHP. Það er í rauninni bara þetta handhæga punktur Ritháttur, og það er hvernig þú getur binda strengi saman. Þannig að ef þú ert köttur og þú ert hundur, og þú vilt að setja 2 strengi saman, þú getur notað á tímabilinu, og það er góður af því hvernig það virkar. Þú getur líka bara sett þá hliðina á hvor aðra, eins og þú sérð hér í botn dæmis, þar sem ég hef echo band 1, rúm band 2. PHP vilja vita að skipta þeim sem slíkt. Fylki. Nú, í PHP, það eru 2 mismunandi tegundir af fylki. Hægt er að hafa reglulega fylki, og þú getur líka hafa tengin fylki, og við erum að fara að fara í gegnum þær núna. Venjulegur fylki eru bara þetta í C, og svo þú hafa vísitölur sem eru númeruð. Núna erum við bara að fara að búa til eina og setja - Svo er þetta hvernig við búum til tómt array, þá erum við að fara að sett í vísitölu 0. Við erum að fara að setja númerið 6, verðmæti 6. Þú getur séð það í botn hér. Where's - í vísitölu 1. við erum að fara að setja gildi númer 4, og svo þú getur séð það er 6, það er 4, og þá eins og við erum prentun hluti, þegar við reynum og prenta verðmæti geymd á vísitölu 0, þá munum við sjá verðmæti 6 að prenta út. Cool? Svo er það venjulegur fylki fyrir þig. Önnur leið sem þú getur líka bæta við hlutum til reglulegra fylki nú er þú getur bara auka þá á endanum. Það þýðir að þú þarft ekki að tilgreina sérstaka vísitölu. Þú getur séð númerið, og þá í hornklofum það er engin vísitala tilgreint. Og það vilja vita - PHP vilja vita að bara bæta við það til the endir af listanum næsta SPOT. Svo þú getur séð 1 rétt þar á þeim 0 staðnum, á 2 fór þarna í fyrsta stað. The 3 fer - er bætt við þar sem vel. Svo gerir að eins konar skilningi. Þú ert bara stöðugt að bæta það, og svo þegar við erum að echoing vísitölu númer 1, það mun prenta út gildið 2. Þá verðum við fylki sem eru tengin fylki. Tengin fylki, í stað þess að hafa tölulegar vísitölur, hvað þeir gera er þeir hafa vísitölur sem eru með band. Þú getur séð, í stað þess - Ég fékk að losa af öllum þeim fjölda vísitalna, og nú er það key1, key2, key3, og þeir eru í gæsalöppum þar með að þeir séu allir strengir. Svo við getum haft dæmi um þetta. Dæmi um þetta er að við höfum TF, og það er vísitalan nafn. Við erum að fara að setja "Ali" eins og nafni, í vísitölunni, hitaeiningar borðað, við getum sett int að þessu sinni í stað streng, og þá á vísitölu eins, við getum sett heilt fylki innan þess. Svo er góður af þessu - það er svipað hugtak að því hvernig við áttum vísitölur með númerum, en nú getum við breytt vísitölur kring að hafa þá eins strengi í staðinn. Þú getur líka gert þetta, að auki bara að gera það fyrir sig, þú getur gert það allt í einu bútur. Svo þú getur séð að TF þeirrar fylking, og þá erum við að setja þá alla í einum risastórum veldi krappi setja. Svo sem getur hraðað hlutur upp. Það er meira af stylistic val en ekki. Við höfum einnig lykkjur. Í C höfum lykkjur sem vinna svona. Við höfðum array okkar, og við fórum úr safni 0 til loka listanum, og við prenta það allt, ekki satt? Nema vandamálið er, að tengin fylki, við gerum ekki endilega vita þá tölulegu vísitölur því nú höfum við strenginn vísitölur. Nú notum framhandleggur lykkjur, sem, aftur, þú notaðir vonandi í pset 7. Framhandleggur lykkjur mun bara vita hvert einasta hluti af lista. Og það þarf ekki að vita nákvæmlega tölulegar vísitölu sem þú hefur. Svo þú hefur framhandleggur setningafræði, svo það er framhandleggur, þú setur array. Svo array mitt heitir pset, og þá eins, orð eins og, og þá setja þessa staðbundnu tímabundið breytu sem þú ert að fara að nota bara fyrir tiltekna hlutur sem er að fara að halda sérstakar - eitt dæmi eða einn hluti af fylki. Pset NUM mun halda 1, og þá ef til vill það mun halda fjölda 6, og þá mun það halda númer 2. En það er tryggt að fara í gegnum hvert eitt gildi sem er í fylkinu. Gagnlegar aðgerðir sem þú ættir að vita í PHP eru krefjast, Svo gerir að tryggja að þú sért þar á meðal tilteknar skrár, echo, brottför, tómur. Ég mæli með mjög þú horfir á pset 7 og líta á þá virka. Þú gætir þurft að vita þá, þannig að ég myndi örugglega vita hvað, nákvæmlega, þeir eru allir að gera. Og nú erum við að fara að fara í gegnum umfang virkilega hratt. Í umfangi, PHP er góður af a angurvær hlutur, ólíkt C, og svo erum við bara að fara að fara í gegnum það fljótt. Svo skulum segja að við byrjum á þeim ör sem við á þar. Og við erum að fara að byrja með $ i. Svo breytu "i" er að fara að vera 0, og við erum bara að fara að halda prentun það í því stór hvítur kassi þarna. Við ætlum að byrja með I0, og þá erum við að fara að echo það. Svo er það sú 0. Og þá erum við að fara að hækka það með for lykkju, og þá það er að fara að vera gildið 1. Eitt er minna en 3, svo það er að fara að fara í gegnum það fyrir lykkju, og þá erum við að fara að sjá það prentað aftur. Við erum að fara að hækka það aftur til 2, og 2 er minna en 3, svo það verður að standast for lykkjunnar, og það mun prenta í 2. Þá munt þú hafa í huga að 3 er ekki minna en 3, þannig að við munum komast út úr for lykkjunnar. Svo nú höfum við lokað, og þá erum við að fara inn í aFunction. Allt í lagi. Svo þú verður að hafa í huga að þessi breyta sem við höfum búið til, á "i" breytu er ekki á staðnum scoped. Það þýðir að það er ekki staðbundið við lykkjuna, og að breytu við getum enn aðgang og breyta eftirá, og það mun enn vera áhrifarík. Þannig að ef þú ferð inn í aðgerð núna, munt þú sjá að við notum einnig 'i' breytu, og við erum að fara að hækka "i" + +. Þú vildi hugsa, í fyrstu, byggt á C, sem það er afrit af 'ég' breytu. Það er allt öðruvísi hlutur, sem er rétt. Svo þegar við prenta það, við erum að fara að prenta 'ég' + +, sem er að fara að prenta út þessi 4, og þá erum við að fara að - því miður. Svo ætlum við að enda út að virka, og við erum að fara að vera þar sem örin er núna. Það þýðir að þá hafa hins vegar þótt fall breytt verðmæti 'i', það breyttist ekki utan af the virka, vegna þess að virka hefur sérstakan svigrúm. Það þýðir að þegar við echo "i", það hefur ekki breyst í the umfang af the virka, og svo þá erum við að fara að prenta 3 aftur. Mismunandi atriði um svigrúm í PHP en í C. Nú í PHP og HTML. PHP er notað til að gera vefsíður dynamic. Það gerir svona hluti öðruvísi. Við höfum það öðruvísi HTML. Með HTML, alltaf bara við sömu kyrrstæð hlutur, eins og hvernig Rob sýndi, en PHP, getur þú breyta hlutum byggt á hver notandinn er. Þannig að ef ég hef þetta, ég hef, "Þú ert skráður inn sem -" og þá nafn, og ég get breytt nafninu. Svo núna er nafnið Joseph, og það hefur "um mig", en þá get ég líka breytt nafni til að hafa Tommy. Og það væri annað mál. Þannig að þá getum við líka breytt mismunandi hluti um hann, og það mun sýna mismunandi efni byggt á nafn. Svo PHP getur konar breyting hvað er að gerast í vefsíðuna þína. Sama hér. Enn skaltu hafa í huga að þeir hafa mismunandi efni, jafnvel þó að þú ert tæknilega enn aðgang að sömu vefsíðu á yfirborðinu. Kynslóð HTML. Það eru 2 mismunandi leiðir sem þú getur gert þetta. Þannig að við munum fara í gegnum það núna. Fyrsta leiðin er, þú hafa - já, fyrirgefðu. Svo þú ert bara venjulegur þinn fyrir lykkju í PHP, og þá echo í PHP og þú echo út HTML. Using hvað Rob sýndi þér HTML handrit og þá með PHP prenta bara prenta það út til the vefur blaðsíða. The val leiðin er að gera það eins og ef þú sér út PHP og HTML. Svo er hægt að hafa línu af PHP sem hefst fyrir lykkju, þá er hægt að hafa línu af HTML í sérstakri hlutur, og þá getur þú endað lykkja, aftur, með PHP. Svo það er góður af aðgreina það út. Á vinstri hlið, getur þú að þú hafir öll þau - það er bara 1 klumpur af PHP. Á hægri er hægt að sjá að þú sért með línu af PHP, þú ert með línu í HTML, og þú hafa a lína af PHP aftur. Svo aðgreina það út í hvað þeir eru að gera. Og þú munt huga að annar hvor vegur, fyrir annaðhvort þeirra, þeir prenta enn út myndina, myndin, myndin, þannig að HTML enn er prentuð á sama hátt. Og þá munt þú enn sjá the 3 myndir mæta á vefsvæðið þitt. Svo er það 2 mismunandi leiðir til að gera slíkt hið sama. Nú höfum eyðublöð og beiðnir. Sem Rob sýndi þér, það eru gerðir af HTML, og við munum bara gola í gegnum þetta. Þú ert aðgerð og þú hafa a aðferð og aðgerð konar sýnir þér hvar þú ert að fara að senda það, og aðferðin er hvort það er að fara til vera a GET eða POST. Og FÁ beiðni, sem Rob sagði, þýðir að þú ert að fara að setja það í formi og þú munt sjá það sem vefslóð, en a POST beiðni sem þú munt ekki sjá í vefslóð. Svo smá munur. Hvernig sem, einn hlutur sem er líkur hlutur er að POST og GET eru jafn óörugg. Svo þú mega hugsa þessi réttlátur því þú sérð það ekki í vefslóð, sem þýðir að POST er öruggari, en þú getur samt séð það í fótspor þíns á þeim upplýsingum sem þú ert að senda. Svo held ekki að um eitt eða annað. Annar hlutur að hafa í huga er að þú þarft einnig kafla breytur. Þú krakkar nota þetta í pset 7 til að fá User ID upplýsingar. Það sem gerðist var að þú getur notað þennan tengin array, the $ _SESSION, og þá þú ert fær um að fá aðgang mismunandi hluti og geyma mismunandi hluti yfir the blaðsíða. Síðasta málið er að við höfum SQL, Structured Query Language, og þetta er forritunarmál til að stjórna gagnagrunna. Hvað, nákvæmlega, eru gagnagrunnar? Þeir eru söfn af borðum, og hvert borð getur haft svipaðar tegundir af hlutum. Þannig að við þurftum borð notenda í fjármálum pset þínu. Og hvers vegna eru þeir að gagni? Því það er leið til að varanlega geyma upplýsingar. Það er leið til þess að fylgjast með hlutum og stjórna hlutum og í raun að sjá það á mismunandi síður og halda utan. En ef þú vistar bara það á að einn nánasta augnablik og þá nota það seinna, þú vilja ekki vera fær til aðgangur neitt sem þú hefur vistað. Við höfum 4 helstu atriði sem við notum til SQL skipanir. Við höfum VELJA, INSERT, DELETE, og uppfæra. Þeir eru mjög mikilvægt fyrir ykkur að vita fyrir prófið þitt. Við munum fljótlega fara yfir veldu núna. Grundvallaratriðum, þú ert að velja raðir úr gagnagrunni. Þannig að ef þú ert með hérna - við höfum þessar 2 mismunandi hluti, og við viljum velja úr flokkum töflunni þar ógnvekjandi - hvar í ógnvekjandi dálki gildi er 1. Svo þú getur séð hér, höfum við þessar 2 hluti af bekknum nafn, CS50 og Stat110, og við höfum bekknum auðkenni og slagorð. Svo viljum við að velja allar þessar upplýsingar. Þá getur þú séð hérna að það er góður af tína út úr því ógnvekjandi dálki, þar sem allir hlutir eru 1, og þá hefur það í bekknum ID, bekknum nafn og slagorð að það getur tekið út. Hvernig nákvæmlega þú gerir þetta í kóða? Þú þarft að nota PHP. Svo er þannig hvernig PHP og SQL tengjast hvert öðru. Nú höfum við kóðann okkar, og við erum að fara að nota fyrirspurn fallið eins og við gerðum í pset 7, og við erum að fara að keyra SQL fyrirspurn. Svo ætlum við að hafa - við þurfum alltaf að athuga hvort þrefaldur jafn Row ef falskur. Svo aftur, þú vilja til stöðva the tegund og verðmæti, og þá ef það virkar ekki, þá þú vilt að biðjast afsökunar, eins og venjulega, eins og við gerðum í pset 7. Annars, þú vilja til lykkju í gegnum allt með þeim vel framhandleggur lykkjur að við fórum bara yfir. Nú þegar við erum að lykkja í gegnum og við höfum gert það áður, skulum gera ráð fyrir að fyrirspurn liðu, nú höfum við framhandleggur lykkja okkar. Og það fyrsta röðin það hefur, svo hér er röð hérna, það er Hnefaleikar. Það er að fara að prenta út allar upplýsingar sem það er fengið. Svo það er að fara að prenta út neðst "Viltu læra HTML?" Þá það er að fara að fara yfir í næstu línu, því það er lokið fyrsta fyrir lykkju, og svo þá það er að fara að prenta út í annarri línu á það, sem er að fara að vera STAT110, Finna öll augnablik. Einn síðastur hlutur er á SQL Varnarleysi. Ég veit Davíð snert á þetta svolítið í fyrirlestri. Þú getur lesið þetta seinna. Það er mjög fyndið. SQL stungulyf er einskonar erfiður hlutur. Segjum að þú standa bara þá breytum rétt inn fyrirspurn þína, eins og þú sérð í þeirri fyrstu línu. Svo það virðist í lagi, ekki satt? Þú ert bara að setja inn notandanafn og lykilorð til SQL fyrirspurn þína, og þú vilt að skip það burt og fá hvað sem er í gögnum töflunni. Það virðist frekar einfalt. Svo lætur segja einhver setur í, um lykilorð, þetta eða texta hérna - ætti í raun að vera í rauða kassanum. Svo skulum segja að þeir setja þessi lykilorð í - það er það sem þeir koma inn. Svo þeir eru að setja OR "1" = 1. Konar kjánalegt lykilorð til að hafa. Nú skulum skipta um það bara í, og þú munt hafa í huga að í þeirri SQL fyrirspurn nú, það metur að alltaf satt, því þú munt huga að þú getur SQL fyrirspurn velja allar þessar upplýsingar eða þú getur bara hafa 1 = 1. Svo það er alltaf að fara að meta satt. Það er ekki að fara að virkilega að vinna, því það þýðir að tölvusnápur geta brjótast inn í kerfið. The lausn til this er þessi þú þarft að nota PDO kerfi, sem þýðir að þú þarft að nota spurningarmerki, sem er það sem þú krakkar notuð í pset 7, þar sem þú ert að fara að nota spurningarmerki í stað þar sem þú vilt setja eitthvað, og þá þú ert að fara að hafa kommu, og þá munt þú hafa eftirá, eftir band, mismunandi breytur sem þú vilt skipta í spurningarmerki þínu. Svo þú munt hafa í huga hér að nú hef ég þessar rauðu spurning skytta. Þá er ég setti breytur eftir strengjum mínum þannig að ég veit að skipta þeim í þeirri röð í kjölfarið. Það mun tryggja að ef einhver gerir það svona, og þeir hafa eða 1 = 1 ástand, sem vilja tryggja, í bak endir, að tryggja að það mun ekki raunverulega brjóta SQL fyrirspurn. Allt í lagi, svo það er ansi mikið það, stormviðri af PHP og SQL. Bestur af heppni til ykkar allra, og nú til Ore [Oreoluwatomiwa Babarinsa] Okay allir. Tími til að fara yfir smá JavaScript og nokkrum öðrum hlutum mjög fljótt svo að við ekki halda þér ekki upp í kvöld. JavaScript. Já. JavaScript er góður af kaldur hlutur, purportedly. Það sem þú raunverulega þörf til vita óður í JavaScript, það er tegund af eins og client-megin enda hvaða vefur app er að fara að vera að gera. Það er nokkur atriði sem þú bara vilt ekki að sjá um alla tíma á miðlara megin. Öll litlu samskipti, auðkenning eitt, sem gerir eitthvað hverfa. Þú virkilega vilt ekki að þurfa að tala við netþjóninn þinn allan tímann fyrir það. Og sumir sem er ekki einu sinni hægt að gera á miðlara megin. Þetta er ástæða þess að við þurfum eitthvað eins JavaScript. Kaldur hlutur um JavaScript: Það er mjög virk slegin. Hvað þýðir þetta er að forritið þitt þarf ekki að vita hvað, nákvæmlega, eru breytur þegar þú skrifar það út. Það verður bara svona reikna það út eins og það er í gangi. Aðrir hlutir sem eru kúl um það: Það er hrokkið Brace tungumál, sem þýðir setningafræði er svipað og C og PHP. Þú þarft ekki að gera mikið rework þegar þú ert að læra JavaScript. Hér höfum við smá JavaScript. Áhugaverður hlutur hér er að ef þú horfir á það, við hafa a hluti af JavaScript rétt þar í höfuð merkinu. Hvað er gerir er í rauninni bara innihalda JavaScript skrá. Þetta er ein leið sem þú getur meðal annars JavaScript í forritinu. Þá er annað svolítið raun einhvers inline JavaScript, mjög svipuð að inline stíl við CSS, og þú ert bara að skrifa nokkur númer mjög fljótt þar. JavaScript verður fylki. Bara ein leið til að halda gögnum í kring, mjög gagnlegt. Mjög gott og auðvelt setningafræði. Þú notar hornklofa til aðgang allt og halda öllu saman. Ekkert of flókið. The kaldur hlutur óður í JavaScript og Forskriftamál almennt er að þú þarft ekki að hafa áhyggjur af array stærðum. Þú getur bara notað array.length og halda utan um það, og einnig array geta vaxið eða skreppa saman eins og þú þarft það til. Svo þú þarft ekki einu sinni að hafa áhyggjur af hvers konar, ó nei, ég þarf að úthluta fleiri hluti, eða eitthvað svoleiðis. The kaldur hlutur hér er að JavaScript er eitthvað sem heitir hlutir. Það er hlutbundin tungumál, svo hvað það hefur er, í meginatriðum, leið fyrir þig til hópa upplýsingar saman, nokkuð svipað og strúktúr, en þú getur fengið aðgang að henni eins og strúktúrinn eða í tengin array setningafræði. Það er frekar einfalt og það sem þú getur gert við þetta er hópur gögn saman ef þú ert með fullt af gögnum sem er tengt. Því það er allt það sem þú þarft til að lýsa bíl, þú þarft ekki að hafa það í fullt af mismunandi stöðum. Þú getur bara halda það í 1 hlut í JavaScript. Eins og þú veist líklega, iterating er einn af þeim leiðinlegur verkefni. Þú gerir bara það yfir aftur. Þú þarft að tala við hvern hlut í bílnum, eða þú þarft að fara í gegnum hvert atriði á lista eða eitthvað svoleiðis. Svo JavaScript verður, líkt og PHP, á framhandleggur setningafræði. Í þessu tilfelli, það er fyrir í lykkju. Þú vilt nota þetta bara á hluti. Það eru nokkur vandamál sem eiga sér stað ef þú notar þetta á fylki. Það er yfirleitt einn af þessum hlutum, þó, það er mjög gagnlegt, vegna þess að þú útrýma mikið af höfuðið vegna þess að þú þarft ekki að draga upp allt í hlut þinn sjálfur. Þú þarft ekki að muna eftir öllum helstu nöfn. Þú bara tegund af fá þá aftur í þessu setningafræði. Í þessu, með að, þú vilt bara að muna að þú ert að fá aftur alla takkana, á mjög svipaðan hátt til kjötkássa borð. Ef þú manst frá því, þegar þú vildi setja í streng þú gætir fengið eitthvað út sem myndi hafa í tengslum gildi með það. Það sem þú getur gert við þetta er að þú getur sagt, allt í lagi, Ég setti í bíl, og ég kallaði hana Ferrari. Svo þú getur sett í band Ferrari aftur síðar, og þú getur fengið það út. Og þú getur gert það í lykkju, með um í lykkju. Svo bara meira um hluti. Lykillinn hlutur frá þessu sem þú þarft að muna er að þú getur notað mótmæla strúktúr eins og setningafræði þegar þú vilt með þetta, nema ef það að fara til að nota sem streng er ekki gilt breytu nafn. Þannig að ef þú horfir á að það höfum við takkann með bilum. Jæja, ef þú varst að setja object.key, rúm, með, rými, rými, sem bara vildi ekki gera skilningarvit setningafræðilega. Svo þú bara getur gert það með þessa tegund af krappi setningafræði. Einnig JavaScript er mjög svigrúm-skynsamlegt að PHP. Þú hefur 2 leiðir til að takast á svigrúm. Þú getur ekki haft Var í framan breytu, og það þýðir bara að þetta er alþjóðlegt. Þú getur séð það frá einhvers staðar. Jafnvel ef þú varst að setja þetta í ef yfirlýsingu, annars staðar í kóðann þinn eftir þeim tímapunkti sem þú gætir séð þá breytu. Annar hlutur, þó, er með Var, það er takmarkað til hvaða aðgerð sem þú ert inn Ef þú ert ekki í aðgerð, vel, það er alþjóðlegt. En ef þú ert í aðgerð það er aðeins sýnilegt innan þess virka. Ég hef ekki dæmi, en, já. Það er einn af þeim hlutum sem þú getur stjórnað hvaða breytur sem þú vilt að vera alþjóðlegt, hvað breyturnar sem þú vilt að vera staðbundin, en þú þarft að vera varkár óður í það, vegna þess að þú ert ekki tegund af fínu korn stjórna sem þú gerir í C, þar sem ef eitthvað er lýst í for lykkju, það er að fara að vera í því fyrir lykkju. The hlutur sem við í raun sama um að nota JavaScript er að notfæra vefsíður, ekki satt? Ég meina, það er þess vegna sem við erum að gera þetta. Til að gera það, við notum eitthvað sem heitir DOM. The Document Object Model. Í grundvallaratriðum, hvað það gerir er að það tekur alla HTML og módel það út í fullt af hlutum sem eru hreiður í hvert annað. Þú byrjar út með eitthvað eins og this. Þú hefur, á hægri fyrir mig, fullt af kóða þarna úti sem er tegund af - Þú hygg að myndi vera mjög erfitt að stjórna, vegna þess að þú vilt vera þáttun gegnum fullt af texta og þurfa að stykki í sundur hlutina. Og hvað ef það var ekki rétt sniðin? Slæmur hlutur myndi gerast. Svo tekur JavaScript sjá um þetta fyrir þig, og þú færð gott gögn uppbygging, eins og einn á minn fór, þar sem þú hefur bara skjal, og inni að þú hefur eitthvað sem kallast HTML, og inni að þú sért með höfuð og líkama, og inni að höfuð þú hefur titil, etcetera, etcetera, etcetera. Þetta einfaldar notfæra vefsíðu þannig að það er bara, ó, ég vil bara að tala við þennan hlut. Konar á mjög svipaðan hátt og þú vildi tala við annan hlut sem þú gerðir sjálfur. Eins og ég sagði, allt DOM er í skjalinu mótmæla. Annaðhvort það er bara einn staður og þá getur þú farið í það að finna hluti, og þú getur gert það - þetta er gamla stíl til að gera það, þarna uppi, þar sem þú gerir document.getElementById, og þá nafn, og eins og þú geta sennilega sagt, þetta gerist mjög ómeðfærilegur eftir smá stund. Svo þú vilt sennilega ekki að gera það. Þess vegna höfum við Það næsta sem við erum að fara að tala um eftir þetta. Lykillinn hlutur hér er að, allt í lagi, þú hefur alla þessa þætti, ekki satt? Svo kannski ég get breytt lit á eitthvað þegar síðan opnast. Svo hvað? Hvað ef notandi minn smellir eitthvað? Ég vil það að gera eitthvað áhugavert þegar þeir smella eitthvað. Þess vegna höfum við atburðum. Þú getur, í grundvallaratriðum, finna öll frumefni í DOM þinni, og síðan segja, hey. Þegar þetta hleðst eða einhver smellir á hana, eða þegar þeir mús yfir það, gera eitthvað við hana. Og hvað þú hefur er, þú hafa aðgerðir sem annast þetta fyrir þig. Þessar aðgerðir eru atburður dýraþjálfari. Hvað they're - það er bara fínt leið til að segja, Aðgerðin er aðeins keyrð þegar þessi atburður gerist. Svo það sér atburð sem á sér stað. Þetta er hvernig þú myndir leggja út atburð dýraþjálfari. Ég hef fengið hnappinn, og þegar þú smellir á það, springur hún. Svo ekki smella á hnappinn. Þetta er ein leið til að nálgast það, ekki satt? Þú hafa hnapp tag, og á smell sem þú ert með band sem segir, ó, við the vegur, ég þetta springa hlutur fyrir mig. Annars, það er bara eins og venjulegur hnappur sem þú gerðir bara. Þú getur líka gert þetta á annan hátt, með grabbing the DOM frumefni, en við munum spara að eftir að við tölum um jQuery. JQuery: Það er bókasafn sem er kross-vafra. Þú getur notað það í nokkurn veginn allt. Og það gefur bara þér mikið af verkfærum til að vinna með. Vegna þess að JavaScript, en öflugur, ekki hafa öll þau verkfæri sem þú þarft út af the kassi til að virkilega takast vefur app sem þú vilt kannski að gera. Svo það einfaldar mikið af hlutum, gefur þér mikið af störfum út af the kassi sem þú myndir venjulega að skrifa sjálfur, aftur og aftur og aftur. Og bara gerir hlutina mjög einfalt. Þú hefur einnig selectors, sem leyfa þér að taka út alla þá þætti frá DOM þinn mun einfaldlega, í stað þess að þurfa að nota þessar mjög lengi virka símtöl. Fleiri á þessum selectors. Þú hefur, þar upp þú hefur, segjum Ég vil fá stak með id "rokk." Jæja, í jQuery, það er bara $ og þá band sem hefur pund, og þá "rokk." Það er mjög einfalt og mikið hraðar en hefðbundinn JavaScript leið takast á við þetta vandamál. Og þú hefur svipaða hluti fyrir flokka og frumefni gerðum. jQuery er - einn af the kaldur lögun er að þú getur konar þjappa niður fyrirspurnum þínum á DOM þinn mjög, mjög hratt. Nú erum við aftur að ef er meðhöndlun, og þetta er hvernig þú myndir höndla einn atburð í jQuery. Svo það sem við erum að fara hér er að við erum að segja, allt í lagi. Ég er með handrit tag, ekki satt? Þannig að ég hef þetta inline JavaScript. Það sem við erum að fara að gera er að við erum að fara að segja, allt í lagi. Þegar skjalið er tilbúið, sem þýðir að skjalið hefur verið hlaðinn, við erum að fara að fara í til að virka, og við erum að fara að segja, allt í lagi, þessi aðgerð er í raun að gera eitthvað annað. Það er í rauninni að segja, allt í lagi, fá mér þátturinn með id "myid." Og þá gefa þetta fall dýraþjálfari sem keyrir þegar þú smellir á það. Í grundvallaratriðum hvað þetta þýðir, það segir, allt í lagi. Síðunni er hlaðið inn, þannig að ég ætla að í, finna þennan þátt, gefa það þennan atburð dýraþjálfari, og það setur í grundvallaratriðum upp síðuna þína fyrir þig. Og þetta er hvernig þú vilt að hugsa um atburði meðhöndlun. Þú vilt bara að hugsa um, allt í lagi, þegar eitthvað gerist, hvað mig langar til að gerast? Þú vilt ekki að hugsa um, allt í lagi, ég þarf að ganga úr skugga um þessi hlutur viðræður við þetta, þetta bla bla bla, því þú vilt bara að tala hlutur í skilmálar af atburðum. Þegar þetta gerist, þetta gerist. Þegar þetta gerist, það gerist. Og ef hlutirnir kalla aðra hluti, það er frábært. En þú vilt ekki að reyna að gera flókinn kóða þar sem þú ert að kalla fram margar hluti á sama tíma, vegna þess að þú ert bara að fara að gefa þér höfuðverk. Allt í lagi. Nú getum við fengið síðuna okkar til að höndla atburðum, en segjum notandi mitt smelli á hnappinn. Hvað ef ég vil senda þá beiðni til baka til the framreiðslumaður, en ég vil ekki að endurhlaða síðunni, því að þurfa að endurhlaða nýja síðu hvert einasta sinn fær konar leiðinlegur, og hvers vegna þarf ég að rífa niður hausinn aftur, og fótur aftur, og allir þættir á síðuna aftur bara til að hressa kveðju eða tíma? Svo að hvers vegna við höfum eitthvað eins og Ajax. Hvað við getum gert hér með Ajax er að við getum sagt, allt í lagi, Mig langar að senda nokkur gögn til the framreiðslumaður, og ég vil fá svar til baka svo ég geti uppfært síðuna mína, eða kannski bara gera sumir lausnarleiðar útreikninga sem ekki endilega að sýna neitt til notanda. Hvað þú þarft að gera þetta? Jæja, þú þarft að hafa slóðina sem þú þarft að tala við. Framreiðslumaður geta ekki bara dularfullur hlusta á frá hvergi. Þú þarft að hafa ákveðinn stað sem þú ætlar að senda þessi gögn til. Og þú þarft líka nokkur gögn til að senda, eða kannski er það dataless fyrirspurn. Þú vilt bara að smellur aftur til the framreiðslumaður og segja, hey, ég er á lífi, eða eitthvað svoleiðis. Og þá þú vilt aðgerð sem í grundvallaratriðum annast með árangri. Skulum segja að þú færð til baka smá upplýsingar frá þjóninum þínum, og þú vilt breyta titli notandans á síðunni þeirra. Svo þú vildi fá upplýsingar til baka, og þú myndi ýta því á skjáinn. Hvað sem gerist er, þegar síða er tilbúinn, þú býrð til á smell virka fyrir þennan hnapp sem heitir greeter. Hvað þetta þá gerir er, þegar þessi hnappur er ýtt, þú talar við greetings.php, gera þig að POST beiðni, og þú segir, hey, fá mér eitthvað frá síðunni þinni. Við gerum ekki raunverulega þörf til að lýsa því, en greetings.php, segjum bara, gefur aftur "Halló heimur." Svo fáum við til baka þetta "Halló heimur," og á velgengni af þessu, gefnu ekkert fer úrskeiðis, þá erum við að fara bara á þennan miða stað að við tilgreint og við standa bara svar þar. Og þetta er mjög einföld leið til að setja upp Ajax fyrirspurn. Mjög fljótt, Rob konar nefndi þetta nú þegar, hlutir geta farið úrskeiðis, slæmur hlutur getur gerst, svo þú vilt kynna þér þessa HTTP svar númerum. Hvað þetta eru eru bara, eins og, 200, allt gekk vel. Eitthvað annað, slæmur hlutur gerðist. Það er yfirleitt málið sem þú vilt að muna. En það er gott að vita allt um þetta. Og að lokum, þegar við höfum farið í gegnum öll þessi, við þurfum að tala mjög hratt um hönnun, og þá getum við látið ykkur öll fara. Hönnun. Hlutir sem þú vilt að muna. Spurðu þig þessar spurningar: Hver verður að nota þetta? Hvað munu þeir nota það fyrir? Hvað gera notendur mínir þykir vænt um? Hvað gera þeir ekki sama um? Þú bara vilt ekki að gera app og láta það vaxa bara og verða þetta risastór, allur-neyslu hlutur sem þú getur ekki einu sinni að klára. Þú vilt hafa stakur markmið og áætlanir og það sem þú vilt að takast. Gera það áreynslulaus. Allt þetta segir, í grundvallaratriðum, gera það auðvelt fyrir notandann til að nota það, ekki gera það risastór Blob texta eins og þessa mynd er, reyndar. Þú vilt bara að það sé eitthvað þar sem það er mjög auðvelt fyrir einhvern til að fara í og gera það sem þeir vilja gera. Þú vilt ekki að þurfa að sigla 5 síður að fá að helsta hlutverk þitt á síðuna þína. Ef Google hefði 5 síður áður en þú getur jafnvel leita eitthvað, enginn myndi nota það. Og loks, pappír frumgerð, rýnihópur. Hafa góða hönnun og prófun starfsemi. Bara vegna þess að þú heldur að það virkar fyrir þig, þýðir ekki einhver annar hugsar það virkar. En já, það er það. [CS50.TV]