[Review: Quiz 1] [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Harvard Universiteti] [Bu CS50 edir.] [CS50.TV] [Lucas Freitas] hər kəs xoş gəlmisiniz. Bu viktorina 1 baxış edir. Bir disclaimer kimi, bu - Mən demək, biz əhatə cəhd olacaq mümkün, lakin qədər material demək deyil ki, biz viktorina 1 ola bilər ki, hər şeyi əhatə olacaq. Beləliklə, siz də bir mühazirə nəzər, bölmələr, siz ki, hər şey almaq əmin olun. Quiz 1 Çərşənbə, növbəti Çərşənbə günü olacaq. Belə ki, təhsil əmin olun. Bu birinci viktorina kimi, olduqca çox, olacaq format ilə bağlı, lakin yəqin ki, çox çətindir olacaq. Mən 50 gəldiyində ən azı, keçən il mən çox çətindir idi düşündüm. Belə ki, bir çox öyrənmək. I data strukturları əhatə gedirəm və Huffman kodlaşdırma. Bu, insanların bir çox mürəkkəb hesab edirəm ki, bir şey deyil ancaq mümkün kimi kimi asan etmək üçün cəhd gedirəm. İlk növbədə, biz sizə uşaqlar viktorina 1 bilmək istəyirsiniz edir Mən təqdim gedirəm ki, data strukturların hər konseptual təsviri başa düşürük. Ki, yoxdur o deməkdir ki, əslində Sizin viktorina 1 bir hash table həyata. Biz sizə bütün hash table həyata istəmirəm bəlkə biz çalışacağıq bəzi funksiyaları həyata etmək, ən ümumi əməliyyatları, lakin biz hər şeyi həyata etmək fikrində deyilik. Belə ki, hər bir data strukturu arxasında konsepsiyasını başa düşmək vacibdir və həmçinin, C kod edə bilərlər ki, onlar hər data strukturu var yalnız ən ümumi əməliyyatları. Və həmçinin, göstəricilər və structs nəzərdən bu data strukturlarında bir çox görünür, çünki. Birincisi, siyahıları bağlıdır. Əlaqəli siyahıları, həqiqətən serialların çox oxşardır, lakin əlaqədar siyahısı və bir sıra arasında fərq, ilk növbədə, bir bağlı siyahı bir çox çevik ölçüsü var ki, Diziler siz array üçün çox böyük ölçüsü seçmək üçün ya var isə, belə ki, o serialda bütün veri etmək olacaq bilirik ki, və ya sıra çevik uzunluğu var malloc istifadə etmək lazımdır. Bağlı siyahıları ki, daha çox elementlər əldə etmək çox asandır, bağlı siyahı daha çox elementləri qoymaq və ya elementləri aradan qaldırılması. Və həqiqətən, siz bağlı siyahı sıralanır istəmirsinizsə, axtarış və daimi vaxt elementləri aradan qaldırılması, belə O (1) vaxt, belə ki, çox rahat edir. Siz yalnız qovşaqlarının həmişə malloc unutmayın ehtiyatlı və pulsuz olmalıdır Əgər deyilsə, siz yaddaş sızıntıları lazımdır yalnız çünki. Belə ki, bağlı siyahıları - bir node definition yalnız biz orada nə kimi. Mən int n qoymaq, lakin siz istədiyiniz hər hansı bir məlumat saxlaya bilərsiniz. Bir string saxlamaq istəyirsinizsə, belə ki, bu gözəl var. Bir struct saxlamaq istəyirsinizsə, istədiyiniz nə olursa olsun,, ikiqat gözəl var. Mən yalnız burada nümunə üçün int n qoydu. Və növbəti node bir göstərici var. Belə ki, əsasən, bir bağlı siyahı bəzi məlumatlar var, və sonra növbəti node göstərir. Bu bağlı siyahısında son element varsa, bu null qeyd etmək olacaq. Belə ki, bu bağlı siyahı nümunəsidir. Okay, indi mən bir bağlı siyahısında bir element əlavə etmək istəyirsinizsə, biz nə görmək edək. Birincisi, bir funksiyası insert növü etibarsız olacaq Mən bir şey qayıtmaq istəmirəm, çünki. Mən bir arqument kimi int etmək gedirəm, Mən daxil etmək istəyirəm nə bilmək istəyirəm, çünki. Mən etmək lazımdır ilk şey nədir? Bəli, mən newnode haqqında malloc olmalıdır, belə ki, ilk xəttidir. Mən yalnız bir bağlı siyahı qoymaq üçün yeni node yaradılması edirəm. Mən nə edə bilər? Bəli, biz bilirik ki, bağlı siyahıları bizim uygulamalarındaki sinif, biz həmişə bir qlobal dəyişən kimi baş qoydu. Belə ki, nə biz nə edə bilər rəhbəri dəyişdirmək deyil. Bu yeni node yeni rəhbərlik edə bilər, və əvvəlki rəhbəri qeyd edəcək. Necə ki, biz nə edə bilər? Mən nə üçün ilk şey , dəyəri yeni node 'n' dəyişdirmək funksiyası keçildi olan. Sonra newnode növbəti rəhbəri olacaq. Baş newnode olacaq. Belə ki, olduqca sadə. Bir node silmə, biz kimi bunu edə bilər - Biz bunu edə bilər bir yolu demək deyil, tamam, mən silmək istəyirdi əgər, məsələn, 3, mən nə edə bilər yalnız əvvəlki node qeyd edir 3 növbəti node. Mən yalnız kimi bir şey olardı. Amma bunu problem nədir? Mən bir yaddaş sızıntısı var, mən artıq 3 nömrəli çıxışı yoxdur. Ki, problem edirəm ki node azad etmək niyyətində deyiləm ki. Mən yaddaş sızıntısı və (anlaşılmaz) mənə nifrət gedir gedirəm. Belə ki, əvəzinə bunu, yəqin ki, müvəqqəti göstərici olmalıdır. Mən temp qoydu. Mən silmək istədiyiniz node qeyd edir. Və sonra mən növbəti node nöqtəsinə əvvəlki qovşaqlarının hərəkət edə bilər Mən silmək istədiyiniz node. Və nəhayət, mən göstərici azad edə bilər. Mən orada yaratdığı göstərici azad etmək lazımdır? Mən, sadəcə, çünki yoxdur - fərq bu node malloc istifadə yaradılmışdır ki, Bu yalnız yığını bir NULL keçid elan edilib isə belə ki, yığın-yığın var. Mən onu azad yoxdur. Okay. Belə ki, indi blokları haqqında danışmaq edək. Depo olduqca sadə var. Biz yalnız seriallarda istifadə sinif borular və sıralarında etdi, ancaq tanış olmalıdır - yalnız xəbərdar olmaq Siz həmçinin bağlı siyahıları istifadə sıralarında destesi edə bilər. Bir sıra varsa, nə bir yığın ola bilər? A yığını, ilk, bir ölçüsü var olacaq. Siz indi ki yığını ölçüsü nə saxlamaq lazımdır. Və həmçinin, nömrələri bu halda, bir sıra olardı Siz istəyirsinizsə, bir array ola bilər strings, struct bir array, siz saxlamaq istəyirəm ki, bir şey. Yığını haqqında: bir yığını və bir bağlı siyahı arasındakı fərq yığını yalnız yığını qoymaq ki, son element çıxışı var. Bu ilk out, son deyirlər. Siz qablar bir yığın var kimi, Siz yığını üst bir tray qoymaq əgər, Siz digər qablar əldə etmək ilk ki tray aradan qaldırılması lazımdır. Bu borular ilə eyni şey. Mən, məsələn, bir yığın bir element əlavə etmək istəyirsinizsə Belə ki, mən nə etməliyəm? Bu push adlanır və bu, olduqca sadə oldu. Siz ilk şey yoxlamaq əgər yığını həcmi böyük və ya yığını imkanlarının bərabər deyil. Əgər siz artıq tam gücü var, əgər başqa bir şey əlavə edə bilməz. Və əgər, sonra yalnız yığını üçün element əlavə etmək üçün var. Və nəhayət, ölçüsü arttırmayı. Belə ki, olduqca sadə var. Mən yalnız 2 nömrəli əlavə edin. Mən pop istəyirsinizsə, hansı qaldırmaq istəyirəm o deməkdir ki, əlavə və element dəyər qayıtmaq ki, son element, Mən yoxlamaq üçün ilk şey yığını boş deyil ki. Boş əgər, mən bir şey geri bilməz, çünki. Bu halda, mən -1 qaytarılması alıram. Əks halda, mən spec ölçüsü azalma gedirəm, və nömrələr (s.size) qayıtmaq. Niyə ölçüsü azalma və sonra s.size qayıtmaq idi? Bu halda, spec ölçüsü 4 var, çünki var və mən dördüncü element qayıtmaq istəyirsiniz? Lakin dördüncü element indeksi nədir? Üç. Mən size ildən - 3 olacaq, Mən yalnız (s.size) s.numbers qayıda bilər 3 çünki. Belə ki, yalnız index var. İndi gəldi. Sıralarında olduqca çox eyni şey var. Yalnız fərq ki, əvəzinə son olan ilk deyil Siz ilk, ilk var. Bir konsert getmək üçün bekliyoruz Yəqin ki, əgər, yerine bir sıra bir yığın olsa xoşbəxt ola bilməz. Gəlib keçən şəxs olan konsert daxil olan ilk şəxs olacaq. Siz yəqin ki, xoşbəxt ola bilməz. Növbədə almaq üçün ilk şəxs də çıxmaq üçün ilk şəxsdir. Belə ki, bir növbə müəyyən, serialın ölçüsü olan yanaşı, siz də yığını rəhbəri index olan baş, var. İndi ilk element belə. Enqueue baca üçün təkan kimi eyni şeydir. Çox sadəlövh olsaydı, yalnız demək ki, Mən push üçün olduğu kimi yaxşı, mən yalnız eyni şey edə bilərsiniz. Bu gücü kənarda deyil, mən yalnız kontrol edə bilərsiniz. Əgər, mən başqa mən yalnız yeni dəyər ixrac edə bilər, yalan qayıtmaq və sonra ölçüsü arttırmayı. Amma niyə bu səhv edir? Bu misal görək. Mən məhsullarının bir dəstə enqueue çalışıram, və sonra mən dequeue və enqueue gedirəm. Yoxdur əmrləri bir çox var, lakin çox sadə. Mən enqueue 5, belə ki, 5 əlavə etmək üçün gedir, sonra 7 alıram 1, 4, 6, və sonra mən bir şey dequeue istəyirəm, Mən ilk element aradan qaldırılması üçün gedirəm deməkdir. Mən sağ, sayı 3 aradan qaldırılması üçün gedirəm? İlk element. Okay. Mən başqa bir şey enqueue cəhd əgər İndi, nə olacaq? Mənim həyata keçirilməsinə görə, Mən index q.size növbəti sayı qoymaq niyyətində idi. Bu halda, ölçüsü 8, belə index 8 son mövqeyi sağ burada olacaq. Mən burada 1 enqueue cəhd, mən son mövqeyi yadda olunacaq tamamilə yanlış olan 1 nömrəli üçün. Mən nə istəyirəm ətrafında kesmek və birinci mövqe getmək edir. Bəlkə yalnız yaxşı, mən yalnız yoxlamaq üçün, deyərdim Mən, həqiqətən, orada bir şey qoymaq bilər. Əgər, mən yalnız oh, yeni tam gücü, demək gücü əslində - 1, və orada bir element qoymaq bilməz. Amma problem nədir? Bu problem ki, mən yalnız burada hər şey dequeue əgər və sonra mən başqa bir şey əlavə etmək üçün cəhd edin, yalnız deyərdim ki, yaxşı, 0 olan tam gücü idi. Belə ki, queue getdi. Siz ətrafında paketi var, və ətrafında wrapping yolu Siz uzaqgörən və digər psets uşaqlar mod istifadə edilmişdir. Siz q.size + q.head edəcəyini anlamaq evdə cəhd edə bilərsiniz mod qabiliyyəti, lakin siz burada kontrol əgər, biz bu işləri görə bilərsiniz. Belə ki, son misal olaraq, 8 q.size idi burada serialın bu mövqeyi idi, çünki və rəhbəri, 1 oldu. Belə ki, + 1 8, 9 olacaq. Mod gücü 9 0 olardı. Bu indeks 0 getmək olardı. Biz sağ mövqedə olacaq. Və sonra evdə növbə edin. Bəzi mühüm şey: bir yığını və bir sıra arasında fərq anlamaq üçün cəhd. Evdə, enqueue, dequeue, push və pop həyata keçirilməsi ilə çox tanış almaq üçün çalışırıq. Siz onların hər biri istifadə zaman da başa düşürük. Belə ki Pokemons bir dəstə ilə 10 saniyə istirahət edək. İndi geri data strukturları gedək. Masalar Hash. Bir çox hash masalar qorxuram idi. problem 6 dəsti, İmla Checker. Hash masalar və çalışır, bir çox insanlar onlardan qorxuram almaq. Onlar anlamaq üçün belə ağır olduğunuzu düşünürəm. Bəli? [Rob Bowden] Problem 5 seçin. Problem Bəli, 5 seçin. Thanks Rob. Bəli. Six Huff n 'Puff, yeah idi. Problem 5 Spell Checker idi qurmaq və bir hash masa və ya cəhd istifadə etmək idi. Bir çox onlar anlamaq çətin super idi ki, onlar əslində olduqca sadə istəyirik. Bir hash table əsasən, nədir? A hash table bağlı siyahıları bir sıra edir. Bir sıra və bir hash table arasında yeganə fərq hash cədvəldə bir hash funksiyası deyilən bir şey var. Bir hash funksiyası nədir? Uşaqlar burada oxuya bilərsiniz əgər mən bilmirəm. Bu hash masa nümunəsidir. Belə ki, siz 31 elementləri ilə bir sıra ki, görürük. Və biz bir hash table nə bir hash funksiyası var ki, əsas tərcümə edir, hər bir index int. Əgər, misal üçün, mən B. Harrison üçün seçmək istəyirsinizsə, Mən hash funksiyaları B. Harrison qoymaq olardı və hash funksiyası 24 qayıtmaq istəyirəm. Mən 24-ci ildə B. Harrison saxlamaq istəyirəm ki, bilirik. Belə ki, yalnız bir sıra olan və bir hash table olan arasında fərq var. Bu hash table, sizə gedir ki, bir funksiyası lazımdır harada saxlamaq istəyirəm ki, veri. Bu hash funksiyası, bir hash funksiyası üçün baxmaq istəyirəm ki deterministic və paylanmış edir. Burada görə bilərsiniz kimi, mən mağaza istəyirdi ki, məlumatların bir çox həqiqətən 19 olduğunu görmək əvəzinə bütün pulsuz olan 31 və 30 və 29, istifadə. Mən istifadə ki, hash funksiyası çox yaxşı paylanmış deyil. Biz yaxşı paylanmış deyəndə, o, biz istəyirik o deməkdir ki, təxminən ən azı 1 və ya hər biri üçün 2 - kimi, seriallarda göstəricilərinin hər biri üçün 1 və ya 2 fərq. Siz, təxminən, serialın hər bağlıdır siyahısına elementləri eyni sayda olsun. Və bu ki, hash cədvəldə etibarlı hash masalar kimi görmək əgər yoxlamaq üçün asandır. Sonra ağaclar. Bu ağac. Kompüter ağaclar nədənsə alt-üst edir. Belə ki, burada ağac kök və sonra yarpaqları var. Siz yalnız valideyn və uşaq üçün mal bilməlidir. Hər node əsas aşağıda olan qovşaqlarının olan onun uşaqlar var. Belə ki, məsələn, 2, orada 3 və digər uşaq üçün ana olacaq 3-1 üçün valideyn və orada olan digər uşaqlar olacaq isə. Və 1 3 uşaq olacaq, və. Biz daha maraqlı bir şey, bir ikili axtarış ağac adlanır var bir node hüququ bütün dəyərlər burada, sağ olacaq - sağ, kök element daha çox olacaq. Sağ mən sağ burada sayı 5 varsa, bütün elementləri 5 daha çox olacaq, və sol olunur bütün elementləri 5-dən az olacaq. Niyə bu faydalıdır? Yaxşı, mən sayı 7 burada yoxlamaq istəyirsinizsə, misal üçün, Mən yalnız ilk 5 getmək və mən gedirəm, 5-dən 7 böyük və ya az? Bu böyük, mən bu ağac hüququ olmalıdır olacaq bilirik. Mən baxmaq çox az məhsulları var. Bir ikili axtarış ağac, node həyata, mən yalnız məlumat var gedirəm belə int n, siz də bir simli ola bilər və ya istədiyini bir şey. Siz yalnız böyük nə müəyyən diqqətli olmalıdır, daha az edir. Beləliklə, siz strings əgər, misal üçün, müəyyən edə bilər sağ bütün bu şeyi daha uzunluğu üçün gedir ki, sol aşağı uzunluğu gedir, belə ki, siz həqiqətən var. Necə BST tapa həyata keçirə bilər? Biz nə üçün lazımdır ilk şey kök NULL olub olmadığını kontrol edir. Bu NULL varsa, bu şey yoxdur o deməkdir ki, hətta bir ağac, sağ yoxdur, çünki? Mən yalan qayıtmaq. Əks halda, mən sayı çox olarsa, yoxlamaq üçün gedirəm kökündə dəyəri daha. Mən sağ element tapmaq üçün cəhd gedirəm ağac. Mən burada recursion istifadə edirəm ki, görürük. Az var əgər, sonra, Mən sol baxmaq gedirəm. Və nəhayət, əks halda, bu, daha böyük az və ya deyil, əgər, bu dəyəri özü deməkdir. Mən yalnız doğru qayıtmaq. Mən, əgər, əgər istifadə ki, burada görə bilərsiniz. Və unutmayın viktorina 0, biz, əgər, əgər ki, bir problem var idi və siz təsirsizlik tapmaq idi, və təsirsizlik əgər istifadə idi. Siz əgər başqa, əgər başqa, əgər istifadə və başqa olmalıdır. Əgər başqa, əgər başqa burada, belə ki, mən başqa istifadə etməli? Mu hər kəs - yeah? [Tələbə danışan işitilemez] Bu mükəmməl. Belə ki, o, bu məsələ deyil ki var yalnız çünki biz əvvəl idi ki, təsirsizlik ki, bir vəziyyət təmin edilmişdir bəlkə, çünki belə bir fəaliyyət həyata, lakin sonra digər bütün şərtlər yoxlamaq üçün gedirdi. Amma bu halda, dərhal geri, belə ki, fərqi yoxdur. Belə ki, əgər başqa istifadə etmək yoxdur. Və nəhayət, in çalışır haqqında danışaq, hər kəsin sevimli edir. A cəhd seriallarda bir ağac var. Bu dəyərlər axtarmaq üçün çox sürətli, ancaq yaddaş bir çox istifadə edir. Və bu sözləri filter adətən, belə ki, zaman Sizin telefon bir telefon kitab kimi, məsələn, mən bilmirəm, həyata istəyirəm və B yazın etmək istəyirəm və yalnız B. olan insanların adları var Bu, misal üçün, bir cəhd edərək ki, həyata etmək çox asandır. Necə bir cəhd bir node müəyyən edirsiniz? Siz yalnız is_word olacaq ki, bir bool var. Ki, node əvvəl bütün karakterleri istifadə edərək təmsil Bir söz yaratmaq üçün bacardıq və sonra qovşaqlarının üçün göstəricilər bir sıra olacaq. Əgər biz bir valideyn qovşaqlarının array, belə ki, node * array var ki, bax edə bilərəmmi? Bəli? Belə ki, iş necə edək. Yazım çek üçün, biz 27 elementlər bir sıra var, biz bütün məktublar plus apostrof var. Mən lövhədə yazmaq etmək istəyirəm, çünki burada əvvəl yalnız 2 istifadə etmək üçün gedirəm. Okay. Belə ki, bu cəhd bir nümunəsidir. Mən ilk node müəyyən, mən 2 elementlərin bir sıra olacaq Null 2 ​​göstəricilər var, mən yalnız 'bir' və 'b' qoymaq. Mən is_word deyir ki bool gedirəm. Bu ilk bir yalan olacaq, yalnız, çünki bundan əvvəl hər hansı bir simvol yoxdur. Belə ki, bir boş söz bir söz deyil. Belə ki, yalan var. Mən bu lüğət 'bir' əlavə etmək istəyirsinizsə, mən nə olardı? Mən yalnız 'bir' üçün yeni node malloc etmək olardı, və sonra onun söz gerçək əlavə edin. Belə ki, yalnız 'bir' doğru olacaq edərək təmsil edir. Mənada? Mən ba 'əlavə etmək istəyirsinizsə, sonra mən' b 'üçün malloc 1 lazımdır, və sonra mən, yalan üçün boolean qurmaq gedirəm özü 'b' bir söz deyil. Sonra mən başqa 'bir' üçün bir, belə ki, ba 'malloc gedirəm, və sonra mən bu doğru bir söz var qurmaq üçün gedirəm. "Ba" bir söz deyil. Mən görmək istəyirsinizsə sonra 'b', bu lüğət əgər Mən yalnız ilk biri, 'b' bilərsiniz. Mən aşağı getmək və mən söz baxmaq və bu, yalan deyir. Belə ki, bir söz deyil. Mən ba 'yoxlamaq istəyirsinizsə, Mən ilk biri, 'b' gedin ve sonra 'bir' getmək, və mən doğru bax, belə bir söz. Mənada? Bir çox çalışır ilə qarışıq almaq. No? Nəhayət, Huffman kodlaşdırma. Huffman coding çox faydalıdır yaddaş saxlamaq və mətn faylları kompres, yalnız çünki siz, məsələn, 'bir' və 'e' istifadə bir çox dəfə, uşaqlar qədər 'q' və ya 'z' istifadə əgər sənədlər, lakin mən bilmirəm. Hər bir xarakter üçün yalnız 1 byte alaraq, hər bir - biz ASCII masa var ki, 256 simvol çox optimal deyil, daha çox istifadə ki, bəzi simvol var, çünki, Siz yəqin ki, o daha az yaddaş istifadə etməlidir. Necə Huffman kodlaşdırma istifadə edirsiniz? Biz Huffman ağac var.  A Huffman ağac qovşaqlarının var Məktubda, 'c', 'b', 'bir' kimi olacaq ki, bir simvolu var ki, Siz nə məktub, söz mətn görünür ki, tezlik tezlik, Siz üçün Huffman ağac yaratmaq ki və sonra Huffman ağac sol qeyd edir ki, bir node və sağa qeyd edir ki, başqa bir node. Belə ki, yalnız bir ağac kimi. Necə bir Huffman ağac qurmaq edirsiniz? Siz aşağı tezliklərin var ki, 2 qovşaqlarının seçmək olacaq. Bir tie varsa 2 qovşaqlarının seçmək olacaq həmçinin ən aşağı ASCII dəyərlər ki. Sonra o 2 qovşaqlarının, yeni ağac yaratmaq olacaq ki, valideyn node ilə birgə tezlik var gedir. Və sonra meşə olan 2 uşaq aradan qaldırılması üçün olacaq və ana ilə əvəz. Və siz yalnız meşə 1 ağac qədər ki, demək olacaq. Belə ki, sizə ZAMYLA üçün Huffman ağac edəcəyini necə edək. Siz bütün məktublar 'A' istisna olmaqla tezliyi 1 Burada bilərsiniz; tezlik 2 var. Mən ASCII dəyəri və tezlik qaydaya bütün məktublar üçün qovşaqlarının yaratmışdır. Mən ilk ağac yaratmaq istəyirsinizsə Belə ki, 'L' və 'M' ilə olacaq. Belə ki, burada. Cüt tezliyi 2 olacaq + 1 1, çünki, sonra aşağı tezliklərin ilə növbəti 2 'Y' və 'Z' var. 2 tezlik var - və sonra onlardan bütün var. Belə ki, növbəti bir ən aşağı ASCII dəyəri var ki, olanları olan olanlardır? 'A' və 'L'. Mən yeni node yaratmaq, və nəhayət, 4 və 2 var, belə ki, 2 sol olacaq. Və bu Huffman ağac. Mən bəzi mətn yazmaq istəyirəm Sonra əgər, kimi Huffman ağac istifadə, mətn çevirmək ikili çox asandır. Mən sol hərəkət 0 və sağa hərəkət edir ki, əgər Məsələn, bir 1 Nə təmsil gedir ki? Belə ki kimi 1, 1, sağ, belə ki, sağ, və sonra belə tərk 0, L olardı, sonra 1, 0, 0. Belə ki, 1, 0, belə ki, yalnız 1, 0, 'A'. Və sonra 0, 1, belə ki, 'Z'. Və sonra 1, 0, 0 - no. 0 0 'Y' olacaq, belə Lazy edəcək. Belə ki, mənim üçün bütün var, Rob-nin üzərində olacaq. [Rob Bowden] Belə ki, həftənin 7 stuff. Biz, həqiqətən, hızlı üzərində getmək üçün bir çox var. Bitwise operatorları, bufer daşqın, CS50 kitabxana, sonra HTML, HTTP, CSS. 15 20 dəqiqə kimi bütün. Bitwise operatorları. Siz bilmək lazımdır ki, onlardan 6 var. Bitwise və bitwise və ya, XOR, sol shift, sağ shift və deyil. Sağ keçmək və ancaq bütün mühazirə gördü. Biz tez burada artıq getmək lazımdır, lakin bu mövcud olan 6 olduğunu bilmək yaxşı. Bitwise operatorları + 4 3 bunu kimi unutmayın. Siz 3 və 4-binar ilə məşğul deyil. Bitwise operatorları ilə faktiki ədəd 3 və 4 fərdi bit ilə məşğul olur. Beləliklə, biz demək lazımdır ki, ilk bir bitwise deyil və bunu bütün bit flip edir. C, bu yazılı edirsinizsə Belə ki, burada, siz onu yazmaq olmaz ~ 11011 və ya hər hansı kimi, siz ~ 4 kimi yazmaq olardı sonra 4 ikili təmsil flip bilər. Belə ki, burada, 1-nin ~ bir ikili sayı 1101101 dəqiq 0 nin bütün 1-nin flip edir və bütün 0 nin. Mən demək ki, bu tez-tez istifadə, biz bir sıra ilə gəlmək istədiyiniz kimi və biz bir az onu görürsünüz edir bit bütün bunlardan biri istisna olmaqla, 1 harada. Belə ki sayı bildirmək adətən asandır yalnız bir bit müəyyən olduğu, və sonra onun ~, belə ki, hər bit bir istisna olmaqla müəyyən edilir almaq. Belə ki, biz bir az daha çox istifadə etmək olacaq nə. Bitwise və ya. Burada 2 ikili nömrələri, və bu 2 ədəd var Onlar hər mümkün təmsil ildən, olduqca nümayəndəsi bit birləşməsi siz fəaliyyət lazımdır bilər. Mən hər bit or'd zaman Burada, biz yalnız düz aşağı müqayisə etmək olacaq. Belə ki, sol tərəfdə biz 1 və 1 var. Mən bitwise zaman | o, nə üçün gedirəm? Biri. 0 və 1 mənə vermək gedir | Sonra bitwise? Biri. Bitwise 1 və 0 eyni şey, bir olacaq. Bitwise 0 | 0 mənə 0 vermək niyyətindədir. 0 case | Mən 0 aldığı yalnız işi 0 edir. Və yalnız məntiqi Örs kimi ki, hesab edə bilər. Siz doğru 1 və yalan 0 hesab əgər Belə ki, eyni şey burada tətbiq edilir. Belə ki, doğru və ya əsl həqiqətdir; doğru və ya yalan doğrudur. Saxta və ya əsl həqiqətdir; saxta və ya saxta əslində yalan var ki, yalnız bir şey. Burada bilmək lazımdır ki, misal var bitwise operatorları istifadə edildikdə olduqca yaxşı nümunə kimi. Burada, biz və ya OX20 ilə kapital 'A', və biz bir şey almaq, ikinci bu baxmaq lazımdır. Və biz ya kiçik 'a' OX20 ilə, biz bir şey almaq əgər. Belə ki, ASCII masa qoparmaq imkan verir. Okay. Burada 'A' olduğunu görmək - burada biz 'A' 65 decimal var. Amma Ox41 olan hexadecimal ilə getmək lazımdır. Pretty əmin biz sinif gördüm. Mən biz sinif gördüm edirəm Bu hexadecimal olan ikili çevirmək üçün olduqca asandır ki,. Belə ki, burada, mən ikili daxil 4 qoymaq istəyirsinizsə, ki, yalnız 0100 olacaq. Bu 1-in yeri, 2 yer, 4 yerdir, belə ki, bu 4. Sonra 0001 olacaq olan ikili daxil 1 split bilər. Və bu ikili 'A' nümayəndəliyi olacaq. Kiçik 'a', indi Ox61 olacaq alaraq, onun ikili bu qədər parçalanması yerləşir, belə ki, 6 - Həqiqətən bunu edək - no pozan var? Eraser. Ox61. Belə ki, ikili daxil 6 parçalanması + 4 + 2 + 0 0 olacaq. Və parçalanması 1 0001 olacaq. Bu 2 arasında fərq axtarır biz bir kiçik və kapital 'A' arasında yeganə fərq bu bir az olduğunu görürük. - Tamam Belə ki, burada geri gəlir. Biz bit OX20 nə baxsaq, burada geri gələn onun ikili daxil belə parçalanması OX20, 0010, 0000. OX20, müəyyən edilir ki, yalnız bit, biz narahat ki, bu az kapital və kiçik 'a' arasında keçid ilə. Əgər bu, 'A' olan I və ya 'A', əgər mən və ya OX20 ilə 'A', nə üçün gedirəm? [Tələbə işitilemez] kiçik 'a', bir 1 Bu bit çevirmek olacaq, çünki. Və əgər mən və ya 'a' OX20 ilə, nə üçün gedirəm? Bir kiçik, çünki yalnız Oring 'a' OX20 ilə, Mən yalnız bir, 1 bu bir bit Oring üçün gedirəm, bu etməz, belə ki, artıq bir 1 var. Beləliklə, biz 'bir' və 'bir' almaq. Bitwise və. Yenə biz məntiqi və həmkarı kimi hesab edə bilər. Sol tərəfdə biz doğru & doğrudur. Bu, doğru olacaq və hallarda bütün var , yalan və doğru və ya doğru & yalan, və ya yalan & yalan bunlar doğru. Belə ki, nə biz əldə qədər başa 1000. Belə ki, indi burada, burada etibarlı bitwise deyil istifadə etdiyiniz harada, biz OX20 olduğu. Belə ki, bu OX20 edir. İndi nə etmək istədiklərini, bitwise OX20 of ~. Bütün bit flip edir. Mən 1101, 1111 var. Və 'A' ~ OX20 mənə nə verəcək ilə anded? Biz, həqiqətən, düşünmək lazımdır yalnız bit, bu biridir ci ildən bu bit bütün 1 qurmaq əgər, sonra biz dəqiq nə 'A' idi almaq olacaq, istisna olmaqla, bəlkə, nə bu qədər deyil. Bu 1 idi, indi, bir 0 qurmaq olacaq, çünki Bu nə, bu 0 olacaq ilə anded çünki. Belə ki, 'A' ~ OX20 mənə vermək gedir & nədir? [Tələbələr cavab işitilemez] Və 'a' və nə - bu 'A' var. Və 'a' & ~ OX20 mənə vermək gedir nədir? 'A.' Bu hazırda 1 edir. Bu 0 ilə Anding, bir 0 etmək niyyətindədir və indi biz bir 'A' almaq olacaq. Həm ', A' və bu tipli ən son deyil, biz XOR var. Bu, çox kimi və ya, Bu yalnız deməkdir və ya başqa. Bu adətən kimi və ya real dünyada nə kimi. Beləliklə, siz ya 'x' və ya 'y', deyil, həm də yoxdur. Burada ^ 1 1 0 olacaq. Əsl Çünki, bu - bu məntiqi doğru və yalan ilə yaxşı iş deyil , bitwise və və ya kimi lakin əsl ^ doğru yalan. Onlardan yalnız biri doğrudur, əgər biz yalnız doğru qayıtmaq istəyirəm, çünki. Belə ^ 1 1 0. Nə ^ 1 0 haqqında? 1-dir. ^ 0 1 ^ 0 0 0, 1. Belə ki, bütün hallarda, 0 bitwise bir şey 0 0 olacaq. 1 bitwise bir şey 0 və ya 0 bitwise 1, bu halda | və ya ^, bu 1 olacaq və bu, &, əgər 0 olacaq. Və 1 bitwise 1 1 deyil yeganə halda xüsusi və ya ilə. Bu 0110 var. Belə ki, burada indi XOR istifadə - belə ki, biz geri 20 istəyirik. 'A' ^ OX20 biz müqayisə edirik bu 2 bit edir. Belə ki, 1 ^ 0 mənə bir nə verəcək? A biridir. 'A' ^ OX20 mənə vermək gedir? Bir kiçik. 'Bir' ^ OX20 mənə vermək gedir? Capital A. Çünki bunu nə, OX20 ilə bu XORing səmərəli bit nə Flipping olunur. Bu bir 0 varsa, indi 1 olmaq olacaq. Bu 1 olduğundan, ^ 1 1 0. Belə ki, bizim 'a' 'A' olmuşdur və bizim 'A' 'a' olmuşdur. Belə ki, XOR yalnız işi Flipping həqiqətən rahat yoldur. Siz yalnız məktubları bir simli üzərində təkrarlamaq istəyirəm və hər bir xarakter halda alternativ, OX20 ilə yalnız XOR hər şey. İndi biz shift yazmayıblar. Sol shift yalnız əsasən, gedir daxil, və ya sol nömrələr bütün basmaq və onların arxasında 0 insert. Belə ki, burada biz 00001101 var. Biz, sağdan 3 0'lık in təkan olacaq və biz 01101000 almaq. Nonbinary baxımından, biz, həqiqətən, 13 sol keçdikdə 3 ilə, bizə 104 verir məşğul ki, görürük. Belə ki, sol dəyişkən, biz burada görmək, x << y əsasən x * 2 ^ y. ^ 3 13 * 2 ^ 3 2 so * 8 13 104, 8-dir. Siz yalnız ümumi ikili, necə hər bir rəqəmlə haqqında düşünüyorsanız biz sağdan başlamaq əgər, sonra 1-in yeri, sonra 2 yer, 4 yer. Belə ki, sağdan 0-ci basmaqla, biz yalnız 8 yerə 4 yer idi ki, hər şeyi basmaqla edirik və 16-nın yerə 8 yer idi ki, hər şeyi. Hər shift yalnız 2 çoxaldır. Bəli? Siz 5 keçdikdə əgər [Tələbə] nə olur? [Bowden] Siz 5 keçdikdə Əgər yalnız rəqəm itirəcək. Qaçılmaz, eyni şey var. Kimi, integers yalnız 32 bit var, 2 həqiqətən böyük integers əlavə, belə ki, yalnız bir tam uyğun deyil. Belə ki, burada eyni şey. Siz 5 keçdikdə varsa, biz yalnız bir itirəcək. Və ki, "təxminən" Mən demək nə cür var çox uzaq keçmək əgər, siz bit itirmək yerləşir. Hüququ shift qarşı olacaq, biz sonuna off 0 nin itələmək olacaq yerləşir və məqsədləri üçün, sol 0 nin doldurun. Belə ki, bu bunu, biz əsasən biz artıq nə etdiyini geri edirik. Və biz, sagdaki üç 0 yalnız off düşmüşdür ki, bax və biz sağ üçün 1101 bütün yol basdı. Bu səmərəli, x / 2 ^ y, olan, 104 3 edir. Belə ki, indi burada, bu, oxşar fikirdir. Niyə yalnız təxminən x / 2 ^ y deyil, həqiqətən x / 2 ^ y? Mən 4 keçdikdə olsaydı, mən bir 1 itirilmiş olardı, çünki. Əsasən, yalnız ümumi tam bölgüsü nə siz hesab edirəm ki, düşünürəm. Belə ki, 5/2 kimi 2. 2.5 deyil. Burada eyni fikirdir. Biz 2 bölmək, zaman biz yol boyunca tək bit itirə bilər. Belə ki, indi - ki bitwise üçün var. Ki, bilmək lazım olan bütün var. Biz sinif gördüm istifadə halları saxla, kimi bir bit maska, bitwise operatorları üçün faydalı və ya bit maskalar üçün istifadə edirlər. Capital məktublar və kiçik hərfləri, dönüşüm olduqca prototip nümunəsidir. Okay, belə ki, daşqın hücumları bufer. Hər kəs bu funksiya ilə yanlış nə yadda? 12 bayt bir sıra, 12 chars, elan edək sonra biz 12 chars bütün string bar bizim bufer kopyalayın. Belə ki, problem burada nə var? Niyə 12 - sehrli sayı 12 olduqca çox dərhal həyata pop lazımdır? Bar 12-dən çox simvol olmaq olur nə olur? Nə bar simvol milyonlarla olur? Burada məsələ memcpy edir. Bar, kifayət qədər uzun olarsa yalnız tamamilə edəcək - 'c', 'c' yalnız 12 simvol idi ki, qayğı deyil; 'C' buna çox bayt uyğun bilməz ki, qayğı deyil. Bu, yalnız tamamilə char üzerine yazılır, bunun üçün ayrılan sonra 12 bytes, və yaddaş keçmiş hər şey həqiqətən ki, bufer aid deyil ki, nə string bar ilə. Belə ki, bu biz sinif gördüm şəkil idi biz yığını böyüyən var. Bu şəkillər istifadə və ya yenidən onlarla tanış olmalıdır. Biz yığını böyüyən var, yaddaş ünvanları üst 0 başlamaq və altındakı 4 milyard kimi aşağı bitir. Biz haradasa yaddaş bizim array 'c' var sonra biz bunun altından bar bizim göstərici var, və sonra biz bu xilas çərçivəsində bizim qaytarılması ünvanı göstərici və valideyn müntəzəm nin yığını var. Qaytarılması ünvanı nə saxla? Əsas funksiyası bar çağırır, bir funksiyası foo çağırır zaman var qaçılmaz yekunları bar. Belə ki, bar qaytarır, onlar bunu deyilir ki, foo geri gedir ki, bilmək lazımdır. Belə ki, geri ünvanı zaman funksiyası yekunları qayıtmaq üçün var ki, funksiyası ünvanı. , Rahat, çünki bufer daşqın hücumlar üçün vacibdir ki səbəb olur hakerlər qaytarılması ünvanı dəyişdirmək istəyirəm. Əvəzində geri foo gedir, mən geri hacker mənə geri getmək istəyir harada getmək üçün gedirəm. Və, rahat, hacker tez-tez geri getmək istəyir biz ilk idi ki, bufer başlanğıc. Belə ki, daha, Little Hindistan bildiriş. Cihaz bir Little Hindistan sisteminin nümunəsidir, belə bir tam və ya pointer ləğv bayt ilə saxlanılır. Belə ki, burada biz bax - bu? Bəli. Biz Ox80, OxC0, Ox35, OxO8 görürük. Hexadecimal rəqəm saxla? Biz, Little Hindistan ci ildə hexadecimal rəqəm tərs yoxdur 2 hexadecimal rəqəm bir byte etmək, və biz bytes geri çünki. Niyə biz kimi, 80530CO8 saxlamaq yoxdur ki. Biz sağ başlayaraq, əvəzinə, 2 pillə hər bir cüt saxlamaq. Yəni ünvanı start ünvan aiddir biz, həqiqətən, ilk növbədə kopyalayın istəyirdi ki, bizim bufer. Faydalı olan səbəb nə olur, çünki təcavüzkar əvəzinə yalnız idi ki, bir simli olan, baş kimi zərərsiz string, onların adı və ya bir şey, nə əvəzinə, simli yalnız bir ixtiyari kodu idi ki, onlar etmək istəyirdi nə etdi? Belə ki, onlar bilər - Mən heç bir cool kodu hesab edə bilməz. Bu baxmayaraq, bir şey ola bilər. Hər hansı fəlakətli kodu. Onlar istəyirdi, onlar yalnız seg çatışmazlıqlar bir şey edə bilər, lakin mənasız olardı. Onlar adətən sistem hack bunu. Okay. CS50 kitabxana. Bu, əsasən, GetInt, GetString, bütün bu funksiyaları biz sizin üçün təmin edilir. Beləliklə, biz char * simli var ki, biz üz blew ki, abstraksiya var semestr ərzində bir nöqtədə. Bir string simvol yalnız bir sıra olduğunu unutmayın. Belə ki, burada biz GetString bir ixtisar versiyasını görmək. Siz, həqiqətən həyata necə xatırlamaq üçün geri baxmaq lazımdır. Əsas detalları, biz bir zaman bir xarakter almaq qeyd yalnız bizə klaviatura yazaraq kimi olan, standart olan. Belə ki, bir zaman bir xarakteri, və biz çox simvol almaq, belə n + 1 gücü daha böyük olduqda, sonra biz bufer tutumunu artırmaq lazımdır. Belə ki, burada biz bufer ölçüsü misli edirik. Və davam edir, biz bufer daxil xarakter daxil biz yeni bir xətt və ya fayl və ya hər hansı sonu almaq qədər, bu halda, biz simli və sonra real GetString ilə tamamlayın biz çox yaddaş ayrılan əgər geri getmək və bir az shrink lazımdır kimi, yaddaş shrinks. Belə ki, göstərmək deyil, lakin əsas fikirdir bir zaman bir xarakter oxumaq var. Bu, sadəcə bir dəfə bütün şey oxuya bilməz, onların bufer yalnız müəyyən bir ölçüsü edir. Bu bufer daxil çalışır ki, simli çox böyük Belə ki, o, daşqın olacaq. Belə ki, burada biz qarşısını almaq ki, yalnız bir xarakter oxu bir zamanda və biz lazımdır zaman artır. Belə GetInt və digər CS50 kitabxana funksiyaları GetString istifadə edirlər onların uygulamalarındaki. Mən burada mühüm şeyi qeyd. Bu bir string almaq GetString çağırır. GetString yaddaş qayıtmaq üçün uğursuz olarsa, getString bir şey mallocs unutmayın ki, belə ki, GetString zəng zaman Siz (anlaşılmaz) siz var ki, simli azad deyil. Bir şey malloc üçün uğursuz əgər Belə ki, burada, biz yalnız bir bayraq kimi INT_MAX qayıtmaq ki, hey, biz, həqiqətən, bir tam almaq mümkün deyil idi. Mən sizə qayıtmaq nə ignore və ya olmalıdır Bir etibarlı giriş kimi rəftar etməməlidir. Nəhayət ki, nail ola bildimi fərz, biz xüsusi bayrağı sscanf istifadə deməkdir ki, ilk bir tam uyğun, sonra tam sonra hər hansı simvol uyğun. Belə ki, 1 bərabər istəyirəm bilərsiniz. Belə sscanf yekunları uğurla oyunları necə çox əgər? Uğurla bir tam Eşleşmiş əgər 1 qayıdacaqlar, bu bir tam uyğun olmasaydı 0 qayıdacaqlar və bu, 2 qayıdacaqlar Bu Eşleşmiş əgər bir tam bir xarakter izlədi. Belə ki, biz 1-bir şey, lakin uyğun əgər biz yeniden bilərsiniz. Beləliklə, biz daxil əgər 1, 2, 3, C, və ya 1, 2, 3, X, sonra 1, 2, 3 tam saxlanılır almaq olardı, X, karakter saxlanılır almaq olardı biz yalnız bir tam istəyirəm, çünki sscanf 2 qayıtmaq və biz yeniden olacaq. Tez HTML, HTTP, CSS əsən. Hypertext Markup Language web strukturu və semantika edir. Burada HTML tags olduğu mühazirə dən nümunəsidir. Biz baş yazıları, bədən tags var biz, biz, həqiqətən, bir başlanğıc və yaxın tag yoxdur boş tags nümunələr var biz yalnız link və şəkil var. Yekun image tag var; tag etmək lazımdır hər şey həyata ki, yalnız bir tag var. The link bir nümunəsidir, biz CSS keçid necə görürsünüz, script bir xarici JavaScript keçid necə bir nümunəsidir. Bu HTML bir proqramlaşdırma dili deyil, olduqca sadə, və xatırlayıram. Burada, siz bunu nə bir formada müəyyən və ya ən azı necə xatırlayıram? Belə bir forma bir hərəkət və bir üsulu var. Siz yalnız heç görəcəksiniz üsulları GET və POST var. Belə ki, GET şey URL qoymaq olur olduğu versiyası. URL qoymaq harada POST edir. Əksinə, formada hər hansı bir məlumat HTTP sorğu daha gizli daxil edilir. HTTP request gedir harada Belə ki, burada fəaliyyət müəyyən edir. Gedir harada google.com / axtarış edir. Metod. Get və post arasında fərqləri saxla, bookmark bir şey istəyirsinizsə,, yalnız bir nümunə kimi deyirlər. Siz POST URL favorite edə heç vaxt məlumat URL daxil deyil, çünki. HTTP, indi, Hypertext Transfer Protocol edir. Bu Hypertext Transfer Protocol, bu transfer üçün gözləmək olardı Hypertext Markup Language, və bunu edir. Amma bu da Web tapa hər hansı bir images köçürmələri, siz hər hansı bir downloads bir HTTP sorğu kimi. Belə ki, HTTP yalnız World Wide Web dilidir. Və burada bir HTTP sorğu bu cür etiraf etmək lazımdır. Tərəfində burada HTTP/1.1 yalnız versiyası deyir Protokolun mən istifadə edirəm. Siz onu görəcəksiniz kimi olduqca çox həmişə HTTP/1.1 olacaq. Sonra biz bu görmək bilər ki, alternativ POST olan, GET olduğunu görürük. Və mən ziyarət üçün çalışırıq ki, URL www.google.com/search?q = blah, blah, blah idi. Belə ki, unutmayın ki, bu, sual işarəsi q = blah blah blah, formasında təqdim edilir ki, məhsulları sortudur. Mənə qayıtmaq bilər cavab bu kimi bir şey olardı. Yenə ki, olacaq olan protokol ilə başlayan, Bu status kodu izlədi. Burada 200 OK. Və nəhayət, mən, həqiqətən istədi ki, web page təqib ediləcək. Mümkün status kodu görmək bilər, və siz onlara bir neçə bilməlidir. 200 OK yəqin ki, əvvəl görmüşəm. 403 Forbidden, 404 Not Found, 500 Daxili Server Xətası Bir web getmək və bir şey broken və ya onların PHP kodu qəzaları əgər, adətən cihaz biz isə böyük narıncı qutusu ki, gəlir və kimi, bir şey yanlış, deyir, bu kodu işləmir və ya bu funksiyasının pis. Adətən saytları, siz funksiyaları həqiqətən pis nə bilmədən istəmirəm əvəzinə onlar yalnız 500 Daxili Server səhvlər verəcəyik. TCP / IP HTTP altında 1 qatıdır. Internet World Wide Web xaricində olduğunu unutmayın. Kimi HTTP vasitəsilə getmək deyil ki, bir online oyun oynamaq, fərqli bir keçir - bu, hələ İnternetdən istifadə edir, lakin HTTP istifadə etmir. HTTP TCP / IP inşa protokolun yalnız bir nümunəsidir. IP sözün Internet Protokol deməkdir. Hər bir kompüter bir IP ünvanı var, onlar bu 4-rəqəmli şeylər var 192.168.2.1, və ya hər hansı kimi; ki, yerli biri olmağa çalışır. Amma ki, bir IP ünvanı nümunəsidir. Belə ki, DNS, Domain Name Service, ki, faktiki IP ünvan üçün google.com kimi şeylər çevirir nə var. Belə bir URL daxil IP ünvanını yazın əgər, Google sizə gətirəcək, ancaq siz həmin şeyi xatırlamaq üçün edirlər. Siz əvəzinə google.com yadda edirlər. Biz son şey bu IP TCP hissəsi olduğu port edir. TCP daha yoxdur. Siz web browser çalışan, kimi, haqqında düşünün. Bəlkə bəzi e-poçt programlarını var; bəlkə Internet çalışan istifadə edir ki, bəzi digər proqram var. Onlar bütün internet əldə etmək lazımdır, ancaq kompüter yalnız 1 WiFi kart və ya hər hansı var. Belə ki, limanları biz split edə istəyirik ki, bir yoldur Bu applications İnternetdən istifadə edə bilərlər necə. Hər proqram, bu dinləyə bilərsiniz ki, 1 xüsusi port olur və ismarıcları, HTTP port 80 istifadə edir. Bəzi e-poçt services 25 istifadə edin. Aşağı saylı olanları ehtiyat edirlər. Siz adətən özünüz üçün ali-saylı olanları əldə edə bilərlər. CSS, Cascading Style Sheets. CSS ilə biz stil web pages, HTML ilə. Siz CSS bilər 3-cü yerləri var. Bu stil tags arasında, və ya tamamilə ayrı-ayrı fayl və sonra da bağlı, inline ola bilər Və burada CSS yalnız bir nümunəsidir. Bu model tanımalıdır, ilk nümunəsi biz bədən tag uyğun istəyirik yerləşir və burada biz bədən tag mərkəzə edirik. İkinci misal, biz şey uyğun olunur ID footer ilə, və biz bəzi üslub tətbiq edirik. Sol ki, ID footer text-aligns edək, bədən text-aligns mərkəzi halbuki. Footer bədən daxilində. Bu əvəzinə, text-align bədən text-align mərkəzi deyir baxmayaraq, sol edəcək. Bu, bütün kaskad hissəsidir. Siz ola bilər - siz bədən üçün stilləri belirtebilirsiniz, və sonra bədəndə hər şeyə daha çox xüsusi üslub daxil edə bilərsiniz, və hər şeyi gözləmək kimi çalışır. Daha xüsusi CSS specifiers üstünlük. Mən onu hesab edirəm. [Ali Nahm] Hi everyone. Mən yalnız sizin diqqət almaq bilər. Əli Ben və mən, həqiqətən, sürətli PHP və SQL vasitəsilə getmək üçün gedirəm. Belə ki, biz başlaya bilərsiniz. PHP PHP üçün qısa: Hypertext Preprocessor. Bildiyiniz lazımdır kimi, bir server-side scripting dil, və biz saytlarda geri sonuna üçün istifadə, və bu hesablamaların, arxasında-səhnələri hissəsi bir çox necə. Sintaksis. Bu C, sürpriz, sürpriz kimi deyil. Mən irəli hərəkət edə bilməz - bu, həmişə bilərsiniz əgər, ilə başlamaq üçün var. Siz aşırma yeni növ lazımdır bilərsiniz və sonra siz də? Php lazımdır. Ki, sizin PHP mətn, sizin PHP kodu nizama salmaq üçün nə həmişə var. Belə ki, yalnız cür ilk qoymaq harada C kimi ola bilməz. Siz həmişə onu əhatə lazımdır. Və indi, əsas sintaksis bütün dəyişənlər $ xarakteri ilə başlamaq lazımdır ki,. Siz onlara müəyyən etdiyiniz zaman bunu etmək lazımdır, siz bunu etmək lazımdır daha sonra onlara istinad etdiyiniz zaman. Siz həmişə $ lazımdır. Bu olduqca çox, yeni ən yaxşı dostu var. Siz yoxdur - C fərqli olaraq, siz onu dəyişən növü nə cür qoymaq lazım deyil. Siz $ lazımdır isə Belə ki, siz kimi qoymaq lazım deyil int x və ya simli y,, sair, sair. Belə ki, bir qədər fərq. Bunun nəticəsində kimi, PHP bir zəif növü deməkdir. PHP bir zəif növü dil və zəif dəyişənlərin çap etmişdir. Başqa sözlə, siz dəyişən növ müxtəlif növ arasında keçid edə bilərsiniz deməkdir. Siz int kimi sayı 1 saxlaya bilərsiniz, bir string kimi saxlaya bilərsiniz, və siz bir float kimi saxlaya bilərsiniz, və bütün ki, 1 nömrəli olacaq. Siz müxtəlif formalarda bunu saxlanılması edirik, baxmayaraq ki, hələ var - dəyişən növləri hələ sonunda aparılır. Belə ki, burada baxmaq əgər, siz pset 7 xatırlayıram varsa, bir çox yəqin ki, bu məsələləri idi. Iki bərabər əlamətləri, 3 bərabər əlamətləri, 4 bərabər əlamətləri. Okay, heç 4 bərabər əlamətləri var, lakin 2 və 3 var. Siz dəyərləri yoxlamaq üçün 2 bərabər əlamətləri istifadə edin. Bu növ üzrə kontrol edə bilərsiniz. Belə ki, ilk nümunəsi görmək bilər, əgər, Mən num_int == num_string var. Belə ki, int və simli, həm də, texniki, 1, lakin onlar müxtəlif növ istəyirik. Amma ikili bərabər üçün, hələ də keçmək lazımdır. Lakin, üç bərabərdir, bu dəyər eləcə də müxtəlif növ yoxlayır. Ki, burada ikinci halda keçmək niyyətində deyil o deməkdir ki, əvəzinə 3 bərabər əlamətləri istifadə olduğunuz. Belə ki, siz indi göstərir ki, böyük bir fərq var. String concatenation PHP istifadə edə bilərsiniz bir güclü şeydir. Bu, əsasən yalnız bu lazımlı dot notation var və siz birlikdə strings bind edə bilərsiniz. Belə ki, Cat var və siz Dog var, və siz birlikdə 2 strings qoymaq istəyirsinizsə, Bu müddət istifadə edə bilərsiniz ki, bu işləri necə növü var. Ayrıca, yalnız bir-birinə yanında onları edə bilərsiniz, Siz alt Məsələn burada edə bilərsiniz kimi, Mən string 1, space simli 2 echo olduğu. PHP kimi onları əvəz etmək üçün biləcəklər. Diziler. İndi, PHP, seriallarda 2 müxtəlif növ var. Siz müntəzəm seriallarda ola bilər, və siz də assosiativ serialların ola bilər, və biz indi onların yolu ilə getmək olacaq. Daimi diziler, yalnız bu C var və siz saylı olduğunu göstəriciləri var. Hal-hazırda yalnız bir yaratmaq üçün gedir və qoymaq edirik - bu, biz boş sıra yaratmaq necə, sonra biz olacaq İndeksin sayı 0 verilmişdir. Biz sayı 6, dəyəri 6 qoymaq olacaq. Siz burada altındakı görürük. Where's - index 1 nömrəli biz, dəyəri sayı 4 qoymaq olacaq və belə bir 6 var edə bilərsiniz, 4, var sonra biz hər şeyi çap etdiyiniz kimi, biz cəhd və index sayı 0 saxlanılan dəyər çap zaman, sonra biz çap olunur 6 dəyəri görəcəksiniz. Cool? Belə ki, sizin üçün müntəzəm Diziler var. Siz də indi müntəzəm serialların şeyi əlavə edə bilərsiniz başqa bir yolu yalnız sonunda onlara əlavə edə bilərsiniz. Ki, siz xüsusi index müəyyən etmək üçün yoxdur deməkdir. Siz görə bilərsiniz, və sonra kvadrat mötərizədə göstərilən heç bir index var. Və bilirsiniz - PHP yalnız siyahıda, növbəti pulsuz spot sonuna əlavə etmək biləcəklər. Belə ki, 0 yerində sağ orada 1 bilərsiniz 2 ilk yerində sağ getdi. 3 gedir - orada həmçinin əlavə olunur. Belə ki, növ hissi verir. Siz yalnız daim əlavə edirik, sonra biz, 1 nömrəli indeksi sədalanan etdiyiniz zaman Bu dəyəri 2 çap edəcək. Sonra biz assosiativ seriallarda ki, serialların var. Əvəzinə ədədi göstəriciləri olan assosiativ Diziler, onlar nə onlar simli ki, göstəriciləri vardır. Siz əvəzinə, bilərsiniz - Mən bütün bu sayı göstəriciləri xilas, və indi key1, key2, key3, və onlar bütün strings olduğunu demek ikiqat quotes istəyirik. Beləliklə, biz bu nümunə ola bilər. Bunun nümunəsi biz tf var ki, ki, index adı var. Biz kalori yemiş, index da, adı kimi "Əli" qoymaq olacaq biz əvəzinə simli int bu dəfə qoya bilər, və sonra index sevir, biz bu daxilində bütün array bilər. Belə ki, bu cür - bu biz necə bir konsepsiya var nömrələri ilə indeksləri, lakin indi biz ətrafında göstəriciləri dəyişə bilərsiniz əvəzinə strings kimi var. Siz, həmçinin, yalnız fərdi bunu başqa, bu edə bilərsiniz Bir yığın bütün edə bilərsiniz. Belə ki, array ki tf bilərsiniz sonra biz bir nəhəng kvadrat mötərizə set onları seçin. Belə ki şeyi sürətləndirmək bilər. Bu çox üslub seçim çox var. Biz də loops var. C biz bu kimi iş loops var. Biz sıra idi, və biz siyahısına sonuna indeksi 0-dan getdi, və biz doğru, bütün çap? , Problem assosiativ Diziler üçün, istisna olmaqla biz mütləq bu ədədi göstəriciləri bilmirəm indi biz simli göstəriciləri var. İndi biz yenidən, sizə ümid pset 7 istifadə edən, foreach loops istifadə edin. Foreach loops yalnız siyahıda hər bir hissəsi bilir. Və bu ki, tam ədədi index bilmək yoxdur. Beləliklə, siz array qoymaq, siz foreach sintaksis var, belə ki, foreach. Belə ki, mənim array pset adlanır və sonra kimi söz kimi və sonra siz istifadə etmək olacaq ki, bu yerli müvəqqəti dəyişən qoymaq yalnız xüsusi keçirmək niyyətində olan xüsusi şey üçün - bir instansiya və ya serialın bir hissəsində. , Pset num 1 basıb saxlayın, sonra bəlkə bu sayı 6 keçirəcək və sonra bu sayı 2 keçirəcək. Lakin bu sıra var ki, hər bir dəyər ilə getmək üçün təmin edir. Siz PHP bilməlidir ki, faydalı funksiyaları tələb edir, exit, boş, echo ki, müəyyən faylları daxil olmaqla əmin edir. Mən sizə pset 7 baxmaq və həmin funksiyaları baxmaq gəlir. Siz bu bilmək ola bilər, Mən mütləq dəqiq, o bütün nə bilmək olar. İndi biz, həqiqətən, tez əhatə dairəsi ilə getmək olacaq. Daxilində, PHP, C fərqli olaraq, bir funky şey növ və biz yalnız tez keçmək olacaq. Belə ki, biz var ki arrow da başlayacaq deyirlər. Və biz $ i ilə başlamaq olacaq. Belə ki, dəyişən 'i', 0 olacaq və biz yalnız orada böyük ağ qutusuna çap saxlamaq olacaq. Biz i0 ilə başlamaq olacaq, və sonra biz onu echo olacaq. Belə ki 0 var. Və sonra biz üçün loop onu arttırmayı olacaq və sonra 1 dəyəri olacaq. , One 3-dən az, belə ki, loop üçün keçməli olacaq və sonra biz onu yenidən çap görmək olacaq. Biz, 2 yenidən arttırmayı olacaq 2 3-dən az, belə ki, loop üçün keçmək lazımdır, və bu 2 çap edəcəyik. Sonra 3 3-dən az olmadığını qeyd edəcəyik, biz loop üçün çıxmaq lazımdır. Belə ki, indi biz çıxış etdik, sonra biz aFunction daxil olacaq. Okay. Belə ki, bu dəyişən biz yaratdıq ki, qeyd etmək lazımdır 'i' dəyişən yerli scoped deyil. Yəni bu, loop yerli deyil o deməkdir ki, ki, dəyişən biz hələ daxil olmaq və sonra dəyişmək, və hələ də təsirli olacaq bilər. İndi funksiyası getmək əgər Belə ki, biz də 'i' dəyişən istifadə ki, görürsünüz və biz 'i' + + arttırmayı olacaq. Siz 'i' dəyişən bir nüsxəsi ki, C, əsasən, ilk, düşünmək olardı. Bu doğru, tamamilə fərqli bir şey. Biz bunu çap zaman, biz çap davam edən 'i' + + çap olacaq ki, 4, sorry - və biz olacaq. Sonra ki, funksiyasının həyata son olacaq, və biz arrow indi olduğu olacaq. Ki, sonra, lakin funksiyası 'i' dəyərini dəyişdi baxmayaraq o deməkdir ki, kənarda funksiyası dəyişmədi, funksiyası ayrı-ayrı həcmi çünki. Ki, biz 'i' echo o, funksiyası çərçivəsində dəyişməyib o deməkdir ki, və belə biz yenə 3 çap olacaq. C. dən PHP daxilində haqqında müxtəlif şeylər İndi PHP və HTML. PHP web pages dinamik etmək üçün istifadə olunur. Bu cür şeylər müxtəlif edir. Biz HTML müxtəlif var. HTML, biz həmişə yalnız Rob göstərdi necə kimi eyni statik şey var, PHP, halbuki siz istifadəçi olan əsaslanır şeyi dəyişə bilərsiniz. Mən bu var, əgər, mən, "Siz kimi daxil -" və sonra adı və mən adını dəyişə bilərsiniz. Belə ki, hazırda adı, Joseph edir və "Mənə haqqında" malikdir, lakin sonra mən də Tommy üçün adını dəyişə bilərsiniz. Və fərqli bir şey olacaq. Beləliklə biz də onun haqqında müxtəlif şeylər dəyişə bilər, və adı əsasında müxtəlif məzmun verəcəkdir. Belə ki, PHP cür web neler dəyişə bilərsiniz. Burada eyni. Still, onlar müxtəlif content Qeyd edək ki, Əgər texniki hələ səthində eyni web page daxil baxmayaraq. HTML yaradan. Siz bunu edə bilərsiniz ki, 2 müxtəlif yolları var. Beləliklə, biz artıq sağ ilə getmək lazımdır. Ilk yolu var, - Bəli, sorry. Belə ki, yalnız, PHP loop üçün müntəzəm var və sonra PHP echo və HTML həyata səda. Rob HTML script sizə göstərdi nə istifadə və sonra yalnız web page onu çap PHP çap istifadə edərək. Alternativ yol PHP və HTML-birindən sanki bunu edir. Belə ki, loop üçün başlayır PHP xətti ola bilər sonra ayrı bir şey HTML xətti ola bilər, və sonra bir PHP ilə, yenə loop son. Belə ki, bu cür onu ayıran edir. Sol tərəfində, siz ola bilər ki, bütün - Bu PHP yalnız 1 yığın edir. Sağ siz PHP bir xətt olduğunu görə bilərsiniz HTML xətti var, və siz yenidən PHP bir xətt var. Belə ki, onlar işle onu həyata ayıran. Və ki, ya yol, ya da onların üçün, qeyd edəcəyik onlar hələ də şəkil çap, şəkil, resim, belə ki, HTML hələ də eyni şəkildə çap olunur. Və sonra hələ 3 şəkillər saytında göstərilir görəcəksiniz. Belə ki, eyni şey bunu 2 müxtəlif yolları var. İndi formaları və müraciətlər var. Rob, sizə göstərdi orada HTML formaları, və biz yalnız bu vasitəsilə breeze edəcək. Siz bir hərəkət və bir metodu var və hərəkət cür onu göndərmək niyyətində olduğunuz göstərir və metodu olub bir GET və ya bir POST olacaq. Və GET sorğu, Rob dediyi kimi, bir formada qoymaq olacaq o deməkdir ki, bir POST sorğu URL görmək deyil halbuki və bir URL kimi görəcəksiniz. Belə ki, bir qədər fərq. Ancaq bənzər bir şey var ki, bir şey POST və GET bərabər etibarsız olmasıdır. Belə ki, yalnız siz URL görmürəm ki, ola bilər ki, POST, daha təhlükəsiz deməkdir lakin hələ göndərilməsi etdiyiniz informasiya sizin Cookies görürük. Belə ki, düşünmürəm haqqında bir və ya digər. Qeyd etmək başqa bir şey siz də bölmə dəyişənlər var. Siz uşaqlar üçün istifadəçi ID məlumat almaq üçün pset 7 Bu istifadə. Nə oldu, bu assosiativ array istifadə edə bilərsiniz ki, $ _SESSION, və sonra müxtəlif şeylər əldə edə danışırsınızsa və pages farklı şey saxlamayın. Son şey, biz SQL, Yapılandırılmış Sorğu Dil var ki, və bu verilənlər bazası idarə etmək üçün bir proqramlaşdırma dilidir. , Dəqiq, məlumat bazaları hansılardır? Onlar masa kolleksiyaları istəyirik, və hər bir masa obyektlərin oxşar növ ola bilər. Belə ki, sizin maliyyə pset istifadəçilər bir masa var idi. Və niyə onlar faydalıdır? Daimi saxlanılması məlumat yoldur, çünki. Bu şeyi izleme və hər şeyi idarə bir yoldur və həqiqətən müxtəlif pages və saxlanması yolda onu görən. Halbuki yalnız bir dərhal anda saxlamaq əgər və sonra istifadə, siz xilas etdik ki, bir şey əldə edə bilməyəcək. Biz SQL əmrləri üçün istifadə 4 əsas şey var. Biz seçin, insert, sil, və yeniləmə var. Bu uşaqlar üçün viktorina üçün bilmək üçün həqiqətən vacibdir. Biz tez indi artıq seçin getmək lazımdır. Əsasən, bir verilənlər bazası satır seçilməsi edirik. Belə ki, siz burada, varsa - bu 2 fərqli şeylər var, və biz dərsləri masa seçin istəyirəm Ü zəhmli - zəhmli sütununda dəyəri 1 yerləşir. Burada görə bilərsiniz, biz, sinif adı bu 2 şey var CS50 və Stat110, və biz sinif kimlikleri və şüarı var. Beləliklə, biz ki, bütün informasiya seçin istəyirəm. Sonra, bu cür ki, zəhmli sütun həyata toplama ki, burada edə bilərsiniz bütün şeylər 1, və sonra bu sinif ID, sinif adı və seçə bilərsiniz ki, şüar malikdir. Bu kodu Necə dəqiq etməliyəm? Siz PHP istifadə etmək lazımdır. Belə ki, növ PHP və SQL-birinə bağlı necə var. İndi bizim kodu var və biz sorğu funksiyasından istifadə etmək olacaq biz pset 7 etdi və biz SQL sorğu run olacaq kimi. Sonra biz olacaq - biz həmişə yalan əgər cərgə-nin üç bərabər əgər yoxlamaq lazımdır. Belə ki, yenə, siz növü və dəyəri yoxlamaq istəyirəm, bu iş deyil, əgər, sonra biz pset 7 kimi, adi kimi, üzr istəyirəm. Əks halda, bu lazımlı ilə hər vasitəsilə loop istəyirəm foreach biz artıq getdi ilmə. , Biz vasitəsilə loop və biz ötən etdik ki, indi Bizim sorğu qəbul fərz edək, indi biz foreach loop var. Və ilk sırada var, belə ki, burada sıra burada, var, bu kutulu edir. Bu kazanılmış ki, bütün məlumatları çap olacaq. Belə ki, altındakı çap olacaq "Wanna Learn HTML?" Bu loop üçün ilk tamamlanmış, çünki Sonra, növbəti sıra getmək olacaq və belə sonra, bu, ikinci xətt çap olacaq STAT110 olacaq olan bütün Moments tapın. Son bir şey SQL güvenlik edir. Mən David bu mühazirə bir az toxundu bilirik. Daha sonra bu oxuya bilərsiniz. Bu, həqiqətən komik. SQL Enjeksiyon çətin şey bir növüdür. Siz yalnız sağ sorğu o dəyişənlər qalmaq demək edək, Siz ki, ilk gördüyünüz kimi. Belə ki, hüququ, gözəl görünür? Siz yalnız istifadəçi adı qoyulması edirik və SQL sorğu parol, və siz off gəmi və sizin data cədvəldə nə almaq istəyirəm. Ki, olduqca sadə görünür. Belə ki, kimsə qoyur demək imkan verir parol, bu və ya mətn burada - əslində qırmızı qutusu olmalıdır. Belə ki, onlar o parol qoymaq deyək - ki, onlar daxil budur. Belə ki, onlar qoyaraq OR "1" = 1 edirik. Üçün bir silly parol şərti. İndi yalnız onu əvəz edək, və indi ki, SQL sorğu qeyd edəcəyik, Siz qeyd edəcəyik, çünki bu, həmişə doğru üçün qiymətləndirir ki, Siz SQL sorğusu bu məlumat bütün seçə bilərsiniz və ya yalnız 1 = 1 ola bilər. Belə ki, həmişə doğru üçün qiymətləndirmək olacaq. Ki, hacker sistemi daxil qıra bilər o deməkdir ki, çünki, həqiqətən, iş gedən deyil. Bu həll siz PDO sistemi istifadə etmək ki, ki, siz sual işarələri istifadə o deməkdir ki, nə pset 7 istifadə uşaqlar, olan siz bir şey qoymaq istədiyiniz yerdə bir sual işarəsi istifadə niyyətində olduğunuz, və sonra bir vergül olacaq, və sonra sonra lazımdır sizin simli sonra, istədiyiniz müxtəlif dəyişənlərin sizin sual işarəsi daxil əvəz edilsin. Belə ki, indi bu qırmızı sual işarələri var ki, burada qeyd edəcəyik. Mən sonra ki, onları əvəz etmək üçün bilmək belə Sonra mən strings sonra dəyişənlərin qoydu. Kimsə bu kimi əgər ki, əmin edəcək və onlar, əmin olun ki,, və ya 1 = 1 vəziyyət var arxa sonunda, bu, həqiqətən SQL sorğu qırmaq deyil ki, əmin olun. Okay, PHP və SQL bir qasırğa ki, olduqca çox belə. Hamınıza uğurlar yaxşı və indi Ore üçün [Oreoluwatomiwa Babarinsa] Okay hər kəs. Bəzi JavaScript üzərində getmək üçün vaxt və bəzi digər şeylər çox tez belə ki, biz axşam up yoxdur. JavaScript. Bəli. JavaScript purportedly, bir sərin şey növüdür. Həqiqətən JavaScript haqqında bilmək lazımdır hər şeyi, bu növ kimi web app bunu etmək olacaq nə klient end. Yalnız server tərəfində hər zaman qayğı istəmirəm bəzi şeylər var. Bütün az qarşılıqlı, bir şey işıqlandırılması bir şey yox edilməsi. Siz, həqiqətən, sizin server üçün bütün zaman danışmaq istəmirəm. Və bəzi server yan etmək belə mümkün deyil. Biz JavaScript kimi bir şey lazımdır görə. JavaScript haqqında Cool şey: Bu dinamik çap olunur. Bu deməkdir proqram bilmək lazım deyil ki, siz onu yazmaq zaman nə, dəqiq, dəyişənlər var. Bu çalışan kimi yalnız növ anlamaq lazımdır. Bu barədə sərin ki, başqa şeylər: Bu buruq brace dil, olan sintaksis C və PHP oxşar deməkdir. Siz JavaScript təlim etdiyiniz zaman çox yenidən işlənməsi etmək yoxdur. Burada JavaScript bir az var. Burada maraqlı bir şey ki, siz baxmaq halda, Biz baş tag orada JavaScript bir az var. Nədir əsasən yalnız bir JavaScript faylı daxildir gedir. Bu proqram JavaScript daxil ola bilər bir yoldur. Sonra ikinci az, həqiqətən, bəzi daxili JavaScript edir çox CSS ilə inline stil oxşar, və yalnız çox tez orada bəzi kodu yazmağa edirik. JavaScript serialların var. Çox faydalı, ətrafında data saxlamaq üçün yalnız bir yol. Çox gözəl və asan syntax. Siz hər şey daxil birlikdə hər şey saxlamaq kvadrat mötərizə istifadə edin. Çox mürəkkəb bir şey yoxdur. Ümumi JavaScript və scripting languages ​​haqqında sərin şey Siz array ölçüləri barədə narahat yoxdur ki. Siz yalnız array.length istifadə və takip edə bilərsiniz, və həmçinin array inkişaf və ya sizə lazım kimi shrink bilər. Belə ki, hətta, hər hansı narahat ehtiyac yoxdur heç bir oh, mən daha çox şey, və ya kimi bir şey ayırmaq lazımdır. Burada cool şey JavaScript obyektlərin deyilən bir şey var ki. Bu obyekt yönümlü dil, belə olduğu nə, mahiyyətcə, qrup data sizin üçün bir yol birlikdə, bir struct üçün bir qədər oxşar, ancaq bir struct kimi və ya assosiativ array sintaksis ilə əldə edə bilərsiniz. Bu olduqca sadə və nə bu ilə edə bilərsiniz birlikdə qrup data deyil Siz bağlı olan məlumatların bir dəstə var. Siz bir avtomobil təsvir etmək üçün lazım olan bütün şeylər, çünki, Siz müxtəlif yerlərdə bir dəstə onu ehtiyac yoxdur. Siz yalnız JavaScript 1 obyekt daxil qalmaq bilər. Siz yəqin bilirsiniz ki, iterating o yorucu vəzifələrdən biridir. Siz yalnız yenidən üzərində bunu. Siz, avtomobil hər obyekt danışmaq lazımdır və ya bir siyahı və ya kimi bir şey hər bir maddə ilə getmək lazımdır. Belə ki, JavaScript, PHP, bir foreach sintaksis oxşar var. Bu halda, bu loop üçün var. Siz yalnız obyektlərin istifadə etmək istəyirik. Siz seriallarda istifadə əgər baş verən bəzi problemlər var. Bu, ümumiyyətlə, baxmayaraq ki, çox faydalıdır, o şeyi biridir siz hava bir çox aradan qaldırılması, çünki siz özünüz obyekt hər şey qoparmaq yoxdur çünki. Siz bütün əsas adları xatırlamaq yoxdur. Siz yalnız sort bu sintaksis onları geri almaq. Bu, üçün, yalnız xatırlamaq istəyirəm Əgər hash table bir çox oxşar şəkildə, bütün açarları geri alırıq. Siz ki, xatırlayıram, bir string qoymaq zaman, siz bir şey əldə edə bilər ki, bir dəyər bağlı olardı. Nə bu ilə edə bilərsiniz, siz bütün sağ demək olar Mən bir avtomobil qoymaq, və mən bir Ferrari adlandırıb. Belə ki, siz daha sonra string Ferrari qoymaq bilər, və siz ki, əldə edə bilərsiniz. Və loop üçün, bir loop edə bilərsiniz. Belə ki, yalnız obyektlərin haqqında daha ətraflı. Yadınızdadırsa lazımdır bu əsas şey , bu ilə istədiyiniz zaman, sintaksis kimi obyekt struct istifadə edə bilərsiniz ki, Sənin bir string kimi istifadə etmək niyyətindədir cari dəyişən adı deyil istisna olmaqla. Siz ki, orada baxmaq Belə ki, biz fəzalarında ilə əsas var. Yaxşı, siz object.key qoymaq olsaydı, kosmik, ilə, kosmik, fəzalarında, yalnız syntactically mənada deyil. Belə ki, yalnız bracket sintaksis bu cür ilə bunu edə bilərsiniz. Həmçinin, JavaScript çox dairəsi-müdrik PHP edir. Siz daxilində həll 2 yol var. Siz dəyişən qarşısında var ola bilməz, və yalnız bu qlobal deməkdir. Siz hər yerdə görə bilərsiniz. Əgər bir bəyanat əgər bu qoymaq idi, hətta, başqa yerdə kodu ki, nöqtədən sonra siz ki, dəyişən görürdü. Başqa bir şey, baxmayaraq ki, siz daxil etdiyiniz hər hansı funksiyası məhdud deyil, var olan Bir funksiyası değilseniz, həmçinin, qlobal var. Bir funksiyası əgər Lakin bu funksiya yalnız görünən deyil. I Bəli, bir misal var, amma yoxdur. Bu o şeyi biridir olduğu Siz qlobal olmaq istəyirəm nə dəyişənlərin idarə edə bilərsiniz nə dəyişənlərin yerli olmaq istəyirəm, lakin bu barədə diqqətli olmaq lazımdır, Siz C nə gözəl taxıl nəzarət növü yoxdur, çünki, bir şey loop üçün elan əgər, bu loop üçün qalmaq hara gedir. Biz həqiqətən üçün JavaScript istifadə qayğısına şey doğru, web pages manipulyasiya edir? Mən demək ki, niyə biz bunu edirik var. Biz DOM deyilən bir şey istifadə, Bunu etmək üçün. The Document Object Model. Əsasən, nə edir o bütün HTML alır və bir-birinə iç içə ki, obyektlərin bir dəstə modelləri onu. Bu kimi bir şey ilə başlamaq. Siz orada kodu bir dəstə ki, sort var, mənim üçün sağ var - Siz manipulyasiya etmək çox çətin olardı edirəm, Mətn bir dəstə vasitəsilə təhlil olarıq çünki və hər şeyi ayrı parça olan. Və düzgün biçimli deyil, əgər? Bad şeylər olacaqdı. Belə ki, JavaScript sizin üçün bu qayğı, və siz gözəl bir data strukturu almaq Siz yalnız bir sənəd mənim, sol biri kimi, və içərisində siz, HTML deyilən bir şey var və içərisində siz bir baş və bədən və baş içərisində, sair, sair və ilaxir bir mövzu var. Bu, yalnız var ki, bir web page manipulyasiya asanlaşdırır oh, Mən yalnız bu obyekt danışmaq istəyirəm. Siz özünüz bir obyekt ilə danışmaq ki, bir çox oxşar şəkildə Sort. Dediyim kimi, bütün DOM sənəd obyekt var. Ya, yalnız bir yer və sonra şeyi tapmaq üçün ərzində davam edə bilər və siz bunu edə bilərsiniz - bu qədər var ki, bunu köhnə stili, Siz document.getElementById etmək, və sonra adı Siz yəqin ki, demək bilər kimi, bu bir müddət sonra çox yöndəmsiz olur. Beləliklə, siz yəqin ki, bunu istəmirəm. Biz niyə ki biz bundan sonra danışmaq olacaq növbəti şey. Burada əsas odur ki, bütün sağ, sağ, bütün bu elementlər var? Belə ki, bəlkə zaman səhifə yük şey rəngini dəyişə bilərsiniz. Belə ki, nə? Nə mənim char? Mən bir şey basın zaman maraqlı bir şey etmək istəyirəm. Biz hadisə mövcut niyə ki. Siz, əsasən, sizin DOM heç bir element tapa bilərsiniz, və sonra hey deyirlər. , Bu yükləyir və ya kimsə klik zaman və ya onlar üzərində siçan, bir şey etmək zaman. Və siz nə sizin üçün bu idarə funksiyaları var. Bu funksiyaları hadisə işleyicileri var. Nə they're - yalnız deyərək bir xülya yolu, Bu hadisə olur bu funksiya yalnız icra edilir. Belə ki, baş verən hadisə yapar. Bu tədbir handler salınması necə. Mən bəzi düyməsini var, və bunu basın zaman, partlayır. Belə ki, düyməsini basın yoxdur. Bu hüququ, o yaxınlaşan bir yoldur? , Siz bir düyməsinə tag var və klik deyir ki, bir simli var oh, yolu ilə, mənim üçün bu exploding şey. Əks halda, yalnız yalnız bir müntəzəm düyməsini kimi. Siz həmçinin bu başqa bir yol edə bilər, biz jQuery haqqında danışmaq sonra DOM element qənimətçilik, ancaq biz saxlaya bilərsiniz. JQuery: Bu cross-browser ki, bir kitabxanadır. Siz olduqca çox şey istifadə edə bilərsiniz. Və bu yalnız işləmək üçün alətlər bir çox verir. JavaScript, güclü isə, sizə lazım olan bütün alətlər yoxdur, çünki həqiqətən bir web app həll etmək qutusu həyata etmək istəyirəm bilər. Belə ki, bir çox şeyi asanlaşdırır siz funksiyaları bir çox verir normal təkrar-təkrar və üzərində, özünüz yazmaq lazımdır ki qutusuna həyata. Və yalnız hər şeyi çox sadə edir. Siz həmçinin bütün bu elementləri almaq imkan olan seçiciler var sizin DOM daha çox sadəcə, əvəzinə bu çox uzun funksiyası zənglər istifadə üçün olan. Bu seçiciler Ətraflı. Siz, deyək ki orada var Mən ID ilə bir element almaq istəyirəm "rok." Yaxşı, jQuery, yalnız $ və sonra bir funt var ki, bir string, sonra var "qaya". Bu, çox sadə və bu problem həll ənənəvi JavaScript yolu daha çox daha sürətli edir. Və sinifləri və element növləri üçün eyni şey var. jQuery - bu sərin xüsusiyyətləri bir növ kompres bilər sizin DOM sizin sorgular aşağı çox, çox sürətli. İndi biz geri hadisə user istəyirik, və bu jQuery bir hadisə idarə necə. Belə ki, nə biz burada olacaq, biz bütün sağ deyərək etdiyiniz edir. Mən script tag var, sağ? Mən bu inline JavaScript var. Biz nə olacaq, biz bütün sağ demək olacaq edir. Sənəd, sənəd yüklü edilmişdir deməkdir ki, hazır olduqda , biz funksiyası getmək üçün gedir və biz, bütün sağ demək olacaq bu funksiya həqiqətən başqa bir şey edir. Bu əsasən bütün sağ, mənə ID ilə element almaq, deyərək "myid." Və sonra bu bunu basın zaman həyata bir funksiya handler verir. Əsasən bu nə deyir, yaxşıdır. , Bu səhifə yüklənir, mən, bu element tapmaq üçün gedirəm Bu hadisə handler vermək və bu, əsasən sizin üçün səhifə yaradır. Və bu hadisə baxılması haqqında düşünmək istəyirəm necə. Siz yalnız düşünmək bütün sağ, bir şey baş zaman, mən nə üçün nə istəyirsiniz istəyirsiniz? Siz, tamam, mən bu şey üçün əmin bu şey danışıqlar etmək lazımdır, düşünmək istəmirəm Bu şey blah blah blah, yalnız hadisələr baxımından şey danışmaq istəyirəm, çünki. Bu, bu baş. Bu, ki, baş verir. Şeylər başqa şeylər tetiklemek əgər ki, böyük deyil. Amma mürəkkəb kodu cəhd etmək istəmirəm siz, eyni zamanda birdən çox şeyi tetiklemesini edirik yalnız özünüzü bir baş ağrısı vermək üçün olacaq, çünki. Bütün hüququ. İndi bizim səhifə hadisələr idarə etmək üçün əldə edə bilərsiniz, lakin mənim istifadəçi bir düyməsinə tıklayan deyək. Nə, mən geri server üçün sorğu göndərmək istəyirsinizsə yeni bir səhifə yeniden olan, çünki mən, səhifə yeniden istəmirəm hər bir vaxt cür yorucu olur, və niyə lazımdır yenidən header aşağı çəkmək və yenidən footer üçün, və bütün Səhifənin elementləri yenidən yalnız salam və ya vaxt yenilemek üçün? Biz Ajax kimi bir şey var nə ki, var. Nə biz Ajax ilə burada edə bilərsiniz, biz bütün sağ demək olar Mən server bəzi məlumatlar göndərmək istəyirəm, və mən mənim səhifə təkmilləşdirə bilər geri cavab almaq istəyirsinizsə, və ya bəlkə yalnız mütləq istifadəçi üçün bir şey göstərmək deyil ki, bəzi alqoritmik hesablanması yoxdur. Nə bu nə etmək lazımdır? Yaxşı, siz danışmaq lazımdır URL lazımdır. Sizin server yalnız magically heç bir yerdə qulaq bilməz. Siz bu məlumatların göndərilməsi etdiyiniz xüsusi bir yer lazımdır. Və siz də bəzi data göndərmək lazımdır, və ya bəlkə bir dataless sorğu var. Siz yalnız hey, Mən diri-diri, və ya kimi bir şey deyiləm, server geri ping və demək istəyirəm. Və sonra əsasən müvəffəqiyyət ilə emal funksiyası istəyirəm. Siz server bəzi məlumatları geri almaq demək edək, və onların səhifəsində istifadəçi adı dəyişdirmək istəyirik. Beləliklə, siz geri məlumat almaq olardı, və siz ekran üçün təkan olacaq. Səhifə hazırdır ne olur, edir siz greeter adlı düyməsini klik funksiyasını bir yaradır. Ki, düyməsini basdı zaman Bu, sonra, var, Siz greetings.php danışmaq, siz POST sorğu etmək və hey, sizin səhifə mənə bir şey almaq, deyirlər. Biz, həqiqətən, ki, təsvir etmək lazımdır, lakin greetings.php yoxdur deyək, "salam dünya." geri verir Belə ki, biz, "salam dünya" bu geri almaq və bu uğur heç bir şey yanlış gedir fərz, sonra biz yalnız bu hədəf yerə getmək biz müəyyən və biz yalnız orada cavab qalmaq. Və bu bir Ajax sorğu yaradılması çox sadə yoludur. Çox tez Rob növ, artıq bu qeyd şeyi yanlış getmək bilər, pis şeylər ola bilər, belə ki, bu HTTP cavab kodları ilə tanış etmək istəyirəm. Nə bu hər şey tamam getdi, 200, kimi, yalnız var. Başqa bir şey, pis şeylər oldu. Ümumiyyətlə yadda istədiyiniz şey var. Amma bu bütün bilmək gözəl var. Və nəhayət, bir dəfə biz ki, bütün vasitəsilə getdi sonra, biz dizayn haqqında çox tez danışmaq lazımdır və sonra biz bütün tərk imkan bilər. Design. Siz xatırlamaq istəyirəm Things. Bu suallara özünüz soruşun: Kim bu istifadə edə bilərsiniz? Onlar üçün nə istifadə edəcək? Mənim istifadəçilər haqqında nə qayğı yoxdur? Onlar haqqında nə qayğı yoxdur? Siz yalnız bir app etmək və yalnız inkişaf imkan istəmirəm və bu nəhəng, hətta bitirmək deyil ki, bütün aparan şey olur. Siz həll etmək istəyirik diskret məqsəd və planları və hər şeyi etmək istəyirəm. Çaba olun. Bütün bu, əsasən, deyir asan istifadəçi istifadə etmək üçün etmək;, həqiqətən, bu Slayd kimi mətn nəhəng bir damcı etmək yoxdur. Siz yalnız biri getmək üçün çox asan olduğu bir şey olmaq istəyirəm və onlar istəyirəm nə. Siz onlara 5 pages gezinmek üçün istəmirəm site sizin baş funksiyası almaq üçün. Google əvvəl 5 pages var idi, əgər belə bir şey axtarmaq, heç kim istifadə edir. Və nəhayət, kağız prototip, fokus qrupu. Yaxşı dizayn və test təcrübələri var. Sizin üçün çalışır edirəm Məhz, Hər kəsdən çalışdığını düşünür demək deyil. Lakin Bəli, ki, var. [CS50.TV]