[Powered by Google Translate] [Minggu 8] [David J Malan] [Harvard University] [Ini adalah CS50.] [CS50.TV] Selamat datang kembali. Ini adalah CS50, dan ini adalah awal minggu 8. Beberapa peluang minggu ini, di antara mereka ini bicara di sini, di mana beberapa makanan akan disajikan. Untuk lebih jelasnya memeriksa slide yang sedang online. Dan juga acara lain minggu ini oleh kita sendiri Thomas Carriero. Dia salah satu rekan mantan CS50 kepala pengajaran yang sekarang di Dropbox, dan dia orang yang mengaitkan kami dengan Anda tahu apa, jadi jika Anda ingin lebih kepala itu untuk pembicaraan mereka sore ini untuk Dropbox dan banyak lagi. CS50 makan siang Jumat ini. Apakah bergabung dengan kami jika Anda mampu, 1:15, seperti biasa, di Fire and Ice. Dan sekarang kita menyelam ke dalam sesuatu yang disebut Seminar. CS50 kami Seminar, recall, adalah kelas-kelas opsional dipimpin oleh rekan-rekan mengajar dan tentu saja asisten dan teman-teman tentu saja, orang-orang dari sebuah kelompok di kampus disebut ABCD, yang merupakan kelompok technophiles di kampus, serta kelompok yang disebut HCS, Harvard Computer Society, mahasiswa yang sama tertarik pada komputasi. Daftar tahun ini meliputi seminar seminar tentang Android dan iOS dan JavaScript dan PHP, Unix, Vim, dan banyak lagi, sehingga menyadari bahwa seminar yang datang. Jika Anda ingin RSVP untuk salah satu dari mereka menuju ke URL yang ada. Kami kemudian akan posting di website kursus ini waktu dan tempat setelah mereka diselesaikan. Tapi tahu senilai masih ada 5 tahun dari seminar sebelumnya tersedia secara online, banyak yang masih sangat banyak saat ini dalam hal teknologi Anda mungkin ingin bermain dengan untuk proyek akhir Anda, jadi kepala di sana untuk beberapa video yang tersedia daripadanya. CSS, bagi Anda yang terbiasa dengan CSS sudah, apa itu secara singkat? Apa itu CSS? Ini cascading style sheets, dan apa artinya? Apa artinya itu lakukan untuk kita, CSS? Baiklah, mari kita pemanasan dengan satu lebih mudah, HTML, hypertext markup language. Apa artinya itu lakukan untuk kita? Siapa pun? Sudah mulai benar-benar canggung mengajukan pertanyaan-pertanyaan. HTML, hypertext markup language. Ya? Tidak ada? [Respon siswa tidak terdengar] Oke, baik, memungkinkan kita untuk mark up teks untuk menampilkan dalam browser web. Ini bukan bahasa pemrograman. Ini memang bahasa markup, yang berarti menginstruksikan browser bagaimana menampilkan informasi, sehingga inkarnasi sederhana ini seperti yang kita lihat adalah sesuatu yang super sederhana seperti boldfacing, terbuka braket braket b tertutup mengatakan membuat teks tebal ini, dan itu sebenarnya hanya satu dari banyak cara di mana kita bisa melakukan itu, dan memang, hari ini pendekatan yang lebih baik untuk stylizing halaman web Anda, membuat hal-hal tebal dan miring dan terpusat dan dibenarkan dan sejenisnya, tidak dilakukan melalui tag HTML saja melainkan dengan teknik yang disebut CSS, Cascading style sheet. Ini adalah bahasa tersendiri. Ini juga bukan bahasa pemrograman tapi- semua orang, ini adalah Dan, yang terus bergabung dengan kami hari ini. Beberapa kesulitan teknis. Tidak masalah. CSS memungkinkan kita untuk menyesuaikan dgn mode halaman dengan menetapkan apa yang disebut sifat, jadi mari kita lihat ini dengan cara beberapa contoh dasar. Biarkan aku pergi ke dalam alat ini. Saya memiliki sumber 8 direktori Senin sini, dan aku akan pergi ke sebuah direktori yang disebut CSS di mana kita memiliki sejumlah file menunggu kami di sini, dan dalam folder ini kita miliki, misalnya, search0.html dari terakhir kali. Sekarang, ingat dengan search0 kami meninggalkan pada catatan ini dengan menerapkan semacam Google atau benar-benar hanya ujung depan untuk itu seminggu yang lalu, dan perhatikan bahwa kita memiliki beberapa tag baru di sana. Kami memiliki h1 untuk judul, besar tebal, Bentuk, yang memungkinkan kita untuk benar-benar memiliki bentuk HTML untuk input pengguna. Aksi, apa arti dari atribut aksi pada tag form HTML? Apa arti dari tindakan ini,? Saya hanya akan melakukan ini hari ini. Aksi adalah tujuan ke mana formulir akan disampaikan. Fakta bahwa yang mengatakan tindakan = "google.com / search" berarti bahwa ketika pengguna mengklik tombol submit atau setara apapun kolom formulir yang mereka mengisi akan dikirim ke server kami tidak atau alat kami melainkan dengan URL tertentu di Google. Dan metode itu akan digunakan disebut dapatkan, dan mendapatkan, untuk saat ini, hanya teknik untuk menyampaikan informasi bersama ke server web dengan cara URL, jadi mari kita lihat kembali bagaimana ini bekerja. Perhatikan bahwa ada sebuah masukan yang namanya q Jenis yang adalah teks dan kemudian masukan kedua jenis menyerahkan Nilai yang merupakan CS50 Cari, dan memang, jika kita membuka file ini di sini, search0.html, itu bentuk super sederhana, dan jika saya mencari sesuatu seperti ilmu komputer dan kemudian tekan enter atau klik CS50 Cari melihat bahwa apa yang terjadi di luar sampai ke Google Saya telah secara khusus berakhir di URL ini di atas, google.com / search q =? komputer + ilmu, dan ilmu komputer jelas apa yang saya diketik masuk + Hanya berarti bahwa di mana karakter spasi itu, dan itu dilakukan oleh browser hanya untuk memastikan bahwa tidak ada kebingungan dan spasi dalam URL yang sebenarnya. Dan kemudian q, tentu saja, adalah nama parameter. Kami belum melihat bagaimana kita, programmer, benar-benar dapat mengakses q belum. Kita bisa berasumsi bahwa Google tahu apa yang harus dilakukan dengan ini di sini, tapi kita akan sampai di sana pada waktunya saat ini. Tapi biarkan aku mengambil melihat sebaliknya di search1.html, yang terlihat sedikit berbeda karena saya memutuskan bahwa bentuk di sini adalah hanya sedikit lumpuh. Maksudku, itu di bagian kiri atas. Ada benar-benar tidak ada estetika untuk itu, dan jadi saya ingin menyesuaikan dgn mode ini sedikit lebih seperti Google, yang homepage, ingat, meskipun Anda mungkin tidak mengunjungi yang sering, terlihat seperti ini saat ini di Halloween. Jika kita bukannya membuka versi 1 dari file ini, cari 1.html, saya sudah berpusat itu. Masih cukup jelek, tapi setidaknya sekarang aku sudah mulai mengontrol estetika halaman ini, bukan hanya menandai daripadanya. Mari kita lihat pencarian 1, dan ada benar-benar hanya satu perbedaan di sini, yang mungkin melompat keluar pada Anda, atau mungkin tidak, tapi apa satu baris atau potongan perbedaan? Ada ini atribut style, sehingga ternyata bahwa dalam HTML unsur yang paling, tag yang paling dapat memiliki atribut style pada mereka, dan dalam bahwa atribut gaya adalah string dikutip, dan bahwa string dikutip adalah CSS. Anda dapat menempatkan cascading style sheet di sana dengan menetapkan sebagai nama properti diikuti oleh titik dua diikuti oleh nilai. Ini adalah jenis keputusan desain disayangkan beberapa tahun yang lalu bahwa CSS adalah bahasa tersendiri, tapi sintaksis itu sangat berbeda dari HTML. Dalam kasus ini, kita melihat bahwa dalam halaman web saya, yang ditulis dalam HTML, Saya memiliki CSS dalam kutipan ini, dan konvensi untuk CSS adalah bahwa Anda memiliki apa yang disebut properti diikuti, sekali lagi, titik dua, diikuti oleh nilai properti itu, sehingga tidak ada tanda sama. Tidak ada kutipan tambahan. Hanya saja pasangan ini usus nilai dipisahkan kunci, dan baris teks tidak persis apa yang dikatakannya. Ini sejalan teks dalam badan halaman, yang benar-benar keberanian halaman, di tengah. Oke, hasil akhirnya itu, harus jelas, ini. Tidak semua seksi itu, tapi setidaknya itu berpusat dan sedikit lebih seperti Google yang sebenarnya. Tapi bagaimana kalau saya bukan membuka versi 2 ini dan menunjukkan ke sini tag baru sama sekali? Sekarang di kepala halaman saya, yang sebelumnya hanya memiliki tag yang dalam semua contoh sebelumnya? Itu hanya memiliki ini, judul. Sesaat lalu tag kepala tampak seperti ini. Sekarang bukan memiliki dalam tag gaya itu, dan ini juga, saya minta maaf, sintaksis terlihat sangat berbeda dari HTML, tetapi Anda terbiasa untuk itu, dimana dalam tag gaya Saya sekarang dapat faktor luar apa yang beberapa saat yang lalu atribut, atribut gaya, dan saya bisa meletakkannya di bagian paling atas halaman saya. Kenapa? Nah, ini adalah langkah menuju membersihkan semuanya, seperti dalam menulis kode C kadang-kadang kita akan menulis fungsi untuk faktor luar fungsi umum. Ini hanya sedikit bersih untuk memulai anjak hal-hal seperti estetika satu lokasi pusat daripada memiliki itu semua menyelingi seluruh HTML Anda. Hal ini juga melakukan apa yang dikatakannya, meskipun ada sedikit sintaks baru. Ini di sini adalah selector, dan tubuh hanya berarti pilih elemen body dan menerapkan sifat-sifat berikut untuk itu. Nah, properti adalah persis sama. Untuk mengukur baik saya telah menambahkan titik koma di akhir, yang cenderung konvensi, dan saya sudah dibungkus ini seluruh properti dalam kurung kurawal karena saya benar-benar bisa memiliki hal-hal yang berbeda di sini. Aku benar-benar bisa mengatakan sesuatu seperti warna: biru; Sekarang ini juga tidak akan menjadi langkah menuju sesuatu yang semua yang cantik, tetapi jika aku sekarang kembali ke versi 2 saya setidaknya sekarang membuat tubuh saya halaman teks biru semua. Tombol tetap sama karena itulah input. Ini bukan teks murni. Tetapi segala sesuatu yang adalah teks, seperti CS50 Cari di bagian atas, adalah biru sebenarnya. Sekali lagi, semua kita lakukan sekarang adalah menghapus dari tag body, pemberitahuan, atribut style, dan kami sudah itu diperhitungkan di sini. Ini bukan perbaikan besar, tetapi jika kita mengambil satu langkah lebih jauh perhatikan apa yang bisa kita lakukan dalam versi ketiga di sini. Pada search3.html halaman web hampir identik kecuali apa yang tag baru sekarang? Link, jadi yang satu ini tidak sangat aptly bernama karena Anda tidak menghubungkan dalam arti hyperlink diklik. Sebaliknya, Anda semacam melakukan setara dengan # include di C dimana tag link dengan atribut href dan atribut rel mengatakan pergi ke depan dan copy paste isi dari file bernama search3.css di sini, pada dasarnya. Ini tidak cukup melakukan itu, tapi itulah semangat itu. Ia mengatakan pergi terbuka file, search3.css, dan memperlakukannya seolah-olah pengguna telah mengetik di sini, di kepala halaman seperti yang saya lakukan pada contoh sebelumnya. Search3.css, sementara itu, cukup sederhana. Ini benar-benar hanya berisi apa yang beberapa saat yang lalu dalam tag gaya, tapi aku itu faktor sini untuk file sendiri. Meskipun kita tidak menghabiskan banyak waktu sama sekali dalam HTML atau pemrograman web hanya intuitif apa motivasi, mungkin, untuk anjak keluar ini potongan kecil bahkan dari CSS ke file sendiri dan kemudian memasukkannya dengan tag link di sini? [Respon siswa tidak terdengar] Oke, akan lebih mudah untuk membaca dalam arti bahwa Anda memiliki CSS Anda dalam file CSS. Anda memiliki HTML Anda dalam file HTML Anda, sehingga lebih mudah dibaca dalam pengertian itu. Apa lagi yang mungkin menarik? Ya. [Respon siswa tidak terdengar] Ya, sehingga Anda dapat memasukkannya berkali-kali, jadi sekarang kita lakukan ini contoh dasar dengan file individual, tapi rasa Anda benar-benar membuat sebuah situs yang sebenarnya seperti Anda akan untuk pset 7 atau proyek akhir Anda mungkin, dan Anda ingin memiliki beberapa halaman web, seperti yang tentu umum pada Web Dunia yang sebenarnya lebar, dan itu akan menjadi semacam lumpuh harus menyalin dan menyisipkan warna biru yang sama dan teks yang sama selaras pusat dalam setiap salah satu halaman. Melainkan lebih masuk akal untuk faktor luar, seperti sudah kita lakukan di C dengan file h., taruh di satu tempat pusat, dalam hal ini search3.css kasus, dan kemudian memungkinkan file apapun dalam situs web Anda untuk benar-benar menyertakan file yang dengan cara ini tag di sini di baris 16. Seperti biasanya terjadi, kami mulai dengan versi 0, yang jenis karya tetapi belum tentu yang terbaik, dan dengan setiap langkah, pencarian 1, pencarian 2, dan sekarang pencarian 3 kami telah mengambil langkah-langkah bayi terhadap desain yang sedikit lebih bersih dan lebih persiapan untuk halaman yang lebih kompleks yang bisa kita lakukan di jalan. Mari saya membuka salah satu contoh terakhir di sini hanya untuk menunjukkan halaman bahkan lebih bergaya, tapi pertama-tama mari kita lihat HTML. Ini adalah search4.html, dan melihat bahwa secara struktural hampir sama kecuali untuk pengenalan tag baru, div. Div adalah tag yang memperkenalkan pembagian halaman. Anda dapat menganggap ini sebagai persegi panjang tak terlihat. Ini semacam menciptakan petak daerah di halaman web bahwa Anda dapat menyesuaikan dgn mode sekaligus. Apa yang saya lakukan di sini adalah sebagai berikut. Dalam tag tubuh saya, yang telah ada selama ini, Saya katakan menciptakan sebuah divisi dari halaman sini melalui jalur 45 melalui 47, dan itu berarti pada dasarnya memberi saya sebuah persegi panjang terlihat di sepanjang bagian atas halaman. Kemudian memberi saya sebuah persegi panjang kedua, meskipun tak terlihat, di bawah itu, dan mengidentifikasi dengan isi nama, dan kemudian terakhir, memberi saya sebuah divisi ketiga halaman di bagian bawah disebut ID. Kita akan melihat mengapa saya sudah melakukan ini hanya dalam beberapa saat, tetapi secara konseptual saya memiliki divisi header. Saya memiliki divisi konten, dan saya memiliki divisi footer halaman meskipun ini hanya di markup. Pengguna tidak akan melihat 3 persegi panjang, tapi semacam struktural ada di belakang layar mereka benar-benar hadir. Sekarang, siapa yang peduli? Mengapa benar-benar melakukan ini? Segala sesuatu yang lain pada halaman yang sama seperti yang telah kita lihat sebelumnya. Ini formulir saya. Berikut masukan saya, masukan saya, satu baris dan sebagainya. Berikut gambar, meskipun, jadi kita akan melihat di mana ini berasal dari hanya dalam beberapa saat. Berikut adalah footer, yang baru, hanya karena saya ingin memperkenalkan lagi konten di sini. Jika kita gulir ke atas melihat bahwa ID dari div ini adalah header. ID dari div ini adalah konten, dan ID satu ini footer. Dan seperti namanya, bila Anda memiliki atribut ID dalam HTML, menurut definisi itu unik harus mengidentifikasi salah satu elemen, salah satu tag dalam halaman Anda. Beban benar-benar pada Anda untuk mengingat bahwa Anda memiliki ID sundulan sudah. Anda memiliki catatan kaki. Anda memiliki ID konten yang sudah. Komputer tidak akan mencari tahu apa ID yang tersedia untuk Anda, sehingga Anda secara tidak sengaja bisa memberikan 2 tag ID header, dan itu hanya akan salah. Anda harus ingat apa yang telah Anda buat, tetapi sekali Anda telah melakukan bahwa pemberitahuan apa yang bisa kita lakukan di sini. Saya sekarang dapat menentukan dalam tag gaya saya di atas atau ekuivalen dalam file CSS saya, jika saya masih menggunakan versi itu, Saya dapat mengatakan # header, dan apa artinya adalah bahwa apa pun tag di halaman web ini memiliki ID header dan #, hanya dengan konvensi manusia, mewakili ID. Tanda tajam atau pon tanda mewakili ID. Header adalah nama yang saya berikan itu. Ini berarti menerapkan properti CSS untuk apa pun tag di halaman ini dikenakan ID header. Sama kesepakatan di sini. Terapkan properti, yang kebetulan sama, untuk setiap elemen mana ID adalah konten, dan kemudian di sini perhatikan saya mendapat sedikit lebih menarik dengan footer. Setiap elemen yang memiliki ID footer, yang ada mungkin hanya satu menurut definisi, pergi ke depan dan membuat ukuran font yang lebih kecil, nya huruf tebal berat, marjin 20 piksel. Apa artinya? Hanya saja margin di atas, bawah, dan kiri dan kanan. Ini berarti memberikan margin 20-pixel terlihat di sekitarnya hanya untuk mendorong segala sesuatu yang lain jauh dari itu sedikit, seperti yang mungkin Anda lakukan dalam Word, Microsoft Word atau Pages atau sejenisnya. Dan kemudian teks menyelaraskan pusat. Mari kita lihat hasil akhir, dan kemudian kita akan kembali ke potongan yang tersisa dari CSS sana. Ini adalah versi 4, terakhir kami untuk contoh pencarian, dan itu jauh, lebih seksi banyak. Sekarang, dalam keadilan, saya hanya Googled "google Generator huruf logo." Dan yang memungkinkan saya untuk membuat GIF, format gambar, yang terlihat seperti itu ada. Bahkan, Anda dapat melakukan hal ini juga. Kami memiliki "google Generator font logo." Mari kita lihat apakah kita bisa melakukan hal ini. Oke, saya pikir ini adalah website saya digunakan. Kita dapat mengatakan Ec 10, misalnya, dan membuat mereka sendiri. Anda dapat bermain dengan ini sepanjang hari dan kemudian klik kanan di atasnya dan kemudian men-download GIF yang sebenarnya, yang adalah semua yang saya lakukan. Dan memang, itulah sebabnya dalam HTML saya, ingat, di sini Aku punya tag gambar, yang kita lihat sebentar minggu lalu yang sumber logo.gif. Dan apa lagi adalah motivasi untuk memiliki atribut alt, ini atribut alternatif? Ya. [Respon siswa tidak terdengar] Baik, jadi 2 alasan benar, jika browser tidak dapat menarik gambar karena Anda memiliki koneksi jaringan yang lambat atau gambar yang rusak atau sesuatu seperti itu setidaknya manusia bisa melihat "CS50 pencarian," dan kemudian juga untuk alasan aksesibilitas. Jika Anda memiliki pengguna yang buta dan menggunakan pembaca layar dan karena itu jelas tidak dapat melihat gambar mereka setidaknya bisa mendengar teks jika komputer mereka berbicara kepada mereka. Secara umum, ini adalah yang terbaik berlatih ketika datang ke aksesibilitas halaman sehingga pengguna bahkan dalam situasi yang bisa mendengar atau melihat, sehingga untuk berbicara, apa yang ada di halaman Anda. Ada satu hal lain yang saya lakukan di sini yang sedikit menarik, dan kita akan melihat lebih banyak tentang hal ini dalam masalah set 7 melalui salah satu dari celana pendek yang dipimpin oleh salah satu rekan mengajar. Tapi # isi mengacu pada tag mana ID adalah konten, tapi kemudian ada karakter spasi, dan kemudian ada masukan kata. Nah, apa yang menarik tentang CSS adalah bahwa Anda dapat mengacu pada tag di semacam halaman hierarkis, dan apa ini berarti potongan CSS adalah menemukan tag mana ID adalah konten, dan kemudian menerapkan sifat berikut untuk semua masukan tag yang keturunan konten, itu adalah yang menjorok di dalamnya. Indentasi, sekali lagi, ini hanya penting ke komputer, bukan untuk manusia, tetapi oleh konvensi yang kita indent hal-hal seperti kita pergi lebih dalam ke halaman, jadi ini berarti menerapkan margin 5 pixel untuk setiap elemen input itu suatu tempat dalam atau bersarang dalam  elemen mana ID adalah konten. Siapa yang yang berlaku untuk? Nah, sebenarnya ada hanya ini 2 orang di sini. Perhatikan bahwa dalam bentuk ada 2 input, karena ada sudah untuk semua contoh. Tetapi perhatikan bahwa mereka 2 input kebetulan bersarang di dalam, meskipun sedikit mendalam, lapisan beberapa lekukan, dalam tag mana ID adalah konten. Apa artinya ini? Jika kita pergi ke browser di sini Anda dapat melihat pernah jadi sedikit- biar tampilannya di-bahwa ada sedikit padding antara tombol dan antara kolom teks. Biarkan saya sementara matikan. Biarkan aku pergi ke CSS saya, dan biarkan aku pergi ke depan dan hanya mengubah marjin ini dari 5 pixel ke 0 piksel. Biarkan aku pergi ke depan dan kemudian menyimpan file tersebut, kembali ke mesin pencari dan kembali, dan menonton tengah halaman. Semuanya mendapat dikompresi bersama-sama, dan ketika saya pertama kali melecut contoh ini sampai Saya pikir yang tampak bodoh dengan bidang teks dan kemudian tombol langsung di bawahnya. Saya ingin pad itu sedikit, jadi saya memperkenalkan margin. Apa yang kita tidak akan dilakukan di kuliah adalah pergi melalui beberapa lusin CSS properti yang ada karena, sekali lagi, ada hal-hal seperti ukuran font, font yang berat, margin, teks menyelaraskan, dan lain-lain beberapa lusin, dan kami akan merujuk Anda dalam masalah set 7 untuk tutorial online berbagai dan referensi yang memungkinkan Anda untuk mengambil hal-hal ini. Tapi apa yang benar-benar penting pada akhir hari adalah untuk memahami bagaimana hal-hal ini diterapkan. Sekali lagi, jika kita memiliki dalam tag gaya yang bisa pergi pemilih, jenis pengidentifikasi yang menentukan kepada siapa Anda ingin menerapkan properti, dan kemudian Anda meletakkan properti sebagai pasangan nilai kunci dipisahkan oleh titik dua, dan kemudian berakhir dengan titik koma, atau Anda dapat rip semua keluar itu dan memasukkannya ke dalam sebuah file CSS terpisah tersendiri. Baiklah, pertanyaan pada konsep atau gambaran besar dari CSS? Anda lagi akan melihat lebih banyak dari itu di pset 7, tapi kami akan tetap umumnya cukup sederhana. Tidak ada? Baiklah. Sudah waktunya untuk bahasa pemrograman yang sebenarnya, dan kami akan kembali ke sedikit CSS dalam bentuk contoh. PHP sebenarnya bahasa yang luar biasa diakses dalam hal sintaksis hampir setara dengan C. Dengan kata lain, jika Anda tahu C, Anda tahu untuk PHP sebagian besar, setidaknya sintaksis, meskipun ada beberapa fitur baru dan beberapa konsep baru kita harus melihat. Tapi bagi sebagian besar, sekarang kita transisi dari C ke PHP sebagian besar barang baru benar-benar dalam gambaran besar, bagaimana Anda menggunakan bahasa untuk program di Web sebagai lawan pada baris perintah atau dalam berkedip cepat seperti yang kita telah lakukan sejauh ini. Untuk referensi, terutama dengan pset 7 dan seterusnya tugas akhir, jangan mengambil keuntungan dari URL ini di sini jika Anda ingin membaca tentang formalitas dari PHP. Ini benar-benar seperti sebuah buku teks online gratis efektif, dan Anda juga akan menemukan bahwa apa yang benar-benar baik tentang PHP adalah bahwa ada ratusan fungsi yang datang dengan itu, sedangkan di C Anda tidak selalu memiliki akses ke fungsi lebih dari berada di perpustakaan matematika, perpustakaan CS50. Dalam PHP dan banyak bahasa modern, Python dan Ruby antara mereka, Anda mendapatkan akses ke fungsi sehingga lebih banyak, yang berarti Anda bisa menulis banyak kode kurang karena Anda dapat berdiri di atas bahu orang lain yang telah menulis hal-hal tertentu bagi Anda. Mari kita mengambil tur singkat dari sintaks PHP dan kemudian menulis beberapa contoh. Apa yang baik tentang PHP pertama dan terutama adalah tidak ada fungsi utama. Jika Anda ingin menulis sebuah program di PHP Anda hanya mulai menulis kode, dan Anda tidak perlu khawatir tentang utama. Ada int ada. Ada tidak kembali. Tidak ada argv, argc yang diperlukan bila Anda menulis program. Sebaliknya Anda hanya dapat mulai menulis kode, dan ini adalah bagian karena PHP adalah apa yang disebut bahasa ditafsirkan. C dikompilasi, dan itu disusun dalam arti bahwa Anda mulai dengan kode sumber, jalankan melalui dentang, yang merupakan kompilator, dan akhirnya setelah beberapa jumlah langkah Anda mendapatkan kode objek, 0s dan 1s. PHP dan Python dan Ruby dan Pearl dan lain-lain berbagai jenis bahasa yang Anda tidak kompilasi mereka. Anda tidak pergi dari kode sumber untuk 0s dan 1s. Anda hanya menjalankan kode sumber, dan Anda menjalankan kode sumber dengan menulis dalam sebuah file teks biasa, berakhir. php dalam hal ini bukannya c,. dan program apa yang tidak pada komputer Anda yang secara harfiah menafsirkan baris kode dengan baris demi baris. Dengan kata lain, daripada menulis program dan menjalankan program Anda malah langsung menulis sebuah program dengan file yang berakhir dengan. php. Kemudian Anda menjalankan program yang sebenarnya disebut php.exe, jika Anda berada di Windows, atau hanya PHP jika Anda berada di Mac OS atau Linux, dan Anda berikan sebagai masukan untuk program PHP kode sumber Anda sendiri, dan tujuan dalam hidup adalah untuk membaca atas kode Anda ke bawah, kiri ke kanan, dan melakukan apa pun yang Anda sudah mengatakan hal itu dapat dilakukan. Mari kita lihat apa ini akan berarti sintaksis. Dalam PHP kita memiliki kondisi. Slide ini identik dengan apa yang Anda lihat kembali dalam seminggu 1 karena kondisi sintaksis, ifs dan ifs lain dan lain di PHP terlihat persis seperti ini. Ketika datang ke ekspresi boolean mereka akan terlihat persis seperti ini. Ketika datang ke anding sesuatu bersama-sama sebagai boolean itu akan terlihat persis seperti ini. Switch terlihat sama, dan Anda mendapatkan manfaat tambahan di PHP bahwa switch dalam C hanya bisa beralih pada char atau int. Anda tidak bisa beralih pada nilai string. Dalam PHP Anda benar-benar dapat memiliki ekspresi yang merupakan variabel yang isinya adalah string, dan Anda benar-benar dapat melakukan perbandingan string dalam cara intuitif yang nyata, bukan perbandingan pointer, dalam rangka untuk memutuskan apakah akan melakukan kasus saya atau j atau sesuatu yang lain. Kita akan melihat yang berpotensi sebelum lama. Loops terlalu mengagumkan adalah sama. Untuk loop memiliki inisialisasi, kondisi, dan beberapa jumlah update. Sementara loop juga ada di PHP. Lakukan sementara loop juga ada di PHP, dan array ada di PHP, tapi di sini adalah di mana sintaks mulai mendapatkan sedikit berbeda, namun konsep yang sama, dan konsep benar-benar sama karena mereka berada di 0 Minggu dengan Scratch. Pertama dan terpenting adalah tanda $. Ini adalah keputusan desain di PHP dimana setiap variabel di PHP dengan desain dimulai dengan tanda $. Tidak ada X, Y, Z. Ini lebih sekarang $ X, Y $, $ Z hanya karena. Ini adalah sesuatu yang perlu diingat, dan sekarang di sisi kanan ini terlihat mirip dengan array, tapi kami menggunakan kurung siku di sini. Dalam PHP dan JavaScript, seperti yang kita akhirnya akan melihat, untuk mendeklarasikan array Anda lakukan braket persegi terbuka dan tertutup braket persegi, dan kemudian Anda memiliki daftar dipisahkan koma dari nilai-nilai, apakah ints atau string atau karakter, apa pun yang Anda inginkan, dalam ekspresi yang ada. Sekarang, bagaimana kita melakukan sesuatu seperti ini di C? Apa sintaks untuk mendeklarasikan array statis nomor dikenal? Itu kurung kurawal, perbedaan sangat kecil di sini, tapi di kedua PHP dan akhirnya JavaScript itu hanya menggunakan kurung siku, sehingga benar-benar detail hanya menarik di sini adalah tanda $ untuk nama variabel dan juga tanda kurung siku, dan ada satu hal yang aneh yang telah dihilangkan serta di sisi kiri tanda =. Apa yang hilang bahwa kita telah membutuhkan selama berminggu-minggu sekarang? Ya. [Respon siswa tidak terdengar] Ukuran, sehingga tidak ada menyebutkan ukuran array. Terus terang, tidak ada menyebutkan tanda kurung siku di sisi kiri dari tanda =, dan apa lagi yang hilang dari garis? Ya >> [respon siswa tidak terdengar]. Jenis, sehingga apa yang menarik khususnya tentang PHP adalah bahwa hal itu bukan bahasa diketik kuat sebagai C adalah, dan itu sangat diketik dalam arti bahwa Anda harus mengatakan char, Anda harus mengatakan int, Anda harus mengatakan mengambang. Setiap kali Anda ingin sebuah variabel Anda harus memberitahu dentang jenis adalah. PHP adalah sedikit malas. Ini longgar diketik dalam arti bahwa Anda dapat memiliki mengapung dan karakter dan string dan ints dan sebagainya, tetapi bahasa itu sendiri tidak benar-benar peduli apa yang Anda masukkan dalam variabel. Anda tidak harus memberitahukannya terlebih dahulu apa tipe data akan dalam variabel. Itu sepenuhnya terserah Anda, jadi ini bagus karena Anda tidak perlu khawatir karena banyak tentang data yang mengetik dan mengkhawatirkan apa argumen Anda dan sebagainya. Ini juga berarti akhirnya fungsi dalam PHP akan dapat kembali baik sebagai int sebagian besar waktu, dan mungkin sesekali mereka akan kembali, bool palsu boolean, misalnya, untuk menandakan sesuatu yang tidak beres. Ini memberikan kita beberapa upsides, tetapi juga akan membuat kita semacam dengan desain sedikit malas ketika datang ke mengetik data. Apa lagi yang perlu diingat di sini? Variabel terlihat cukup seperti ini, sehingga $ s = "halo, dunia." Itu mungkin inferable dari contoh sebelumnya, dan kami memiliki jenis lain dari loop. Ini yang kita benar-benar akan melihat sekali-sekali karena itu sangat berguna, foreach membangun. Dalam kasus ini, loop foreach mengambil dalam 3 nya kata kurung biasanya, $ Pertama sesuatu, apa yang array yang Anda ingin iterate atas anggota, kemudian harfiah kata kunci sebagai, dan kemudian terakhir, nama lain variabel yang Anda bisa memilih. Hal ini dapat foo, bar, atau elemen, dan apa yang membangun ini tidak adalah jika array $ berisi 10 unsur pada setiap iterasi dari array-maaf, pada setiap iterasi dari loop ini elemen yang disebut variabel akan diperbarui menjadi elemen pertama dalam array, maka unsur kedua dalam array, maka elemen ketiga dari array, sehingga menghindarkan kebutuhan untuk melakukan notasi braket sedikit mengganggu persegi dan $ I untuk indeks ke array. PHP melakukan semua pekerjaan itu untuk Anda dan pada setiap iterasi hanya tangan Anda elemen berikutnya dari array tanpa Anda harus tahu tentang atau peduli tentang lokasi indeks numerik. Dan kemudian terakhir, untuk saat ini, ada satu keistimewaan lain dari PHP itu akan menjadi sangat berguna, terutama ketika kita mulai pemrograman di Web, dan itu dikenal sebagai array asosiatif. Array yang kita kenal sejauh ini per 20 detik yang lalu dan selama 8 minggu terakhir secara numerik array diindeks, semacam array tradisional di mana indeks adalah ints, 0, 1, 2, sepanjang jalan ke atas. Array asosiatif jauh lebih kuat. Mereka memungkinkan Anda untuk memiliki kunci sewenang-wenang, sewenang-wenang indeks dan nilai-nilai sewenang-wenang. Sedangkan dalam array tradisional itu 0, 1, 2, dalam array asosiatif Anda dapat memiliki indeks atau kunci foo yang nilainya bar. Anda kemudian dapat memiliki kunci lain yang namanya baz dan yang nilainya qux. Sekali lagi, ilmu komputer bodoh nama variabel generik di sini, tapi intinya adalah bahwa array ini tidak memiliki braket 0 atau 1 braket. Ini bukannya akan memiliki braket foo dan braket baz. Ini jauh lebih fleksibel dalam bahwa kita akan dapat mengaitkan kata dengan kata lain, kunci dengan nilai-nilai benar-benar sewenang-wenang, dan kita akan bisa mendapatkan nilai-nilai kembali dalam waktu konstan karena di bawah kap apa array asosiatif benar-benar adalah adalah tabel hash. Ingat bahwa tabel hash memungkinkan Anda untuk dimasukkan ke dalam beberapa masukan seperti dimasukkan ke dalam kata David jika Anda ingin memasukkan David menjadi semacam kamus, dan kemudian Anda mendapatkan kembali beberapa nilai biasanya. Dalam kasus ejaan, benar atau salah. David atau kata apa saja dalam atau tidak dalam kamus. Array asosiatif adalah benar-benar hanya sebuah tabel hash, tapi itu inkarnasi jauh lebih user friendly dari itu. Seperti yang akan kita lihat, itu akan memungkinkan kita untuk melakukan beberapa hal sangat, sangat mudah. Mari kita lihat beberapa dasar PHP contoh dan melihat apa yang bisa kita lakukan dengan bahasa ini. Biarkan aku pergi ke depan dan membuka dalam direktori sumber kami hari ini file bernama hello1.php. File ini adalah komentar lebih dari itu adalah kode aktual, jadi biar benar-benar menghapus semua komentar dari file dan hadir untuk Anda mungkin sederhana PHP program yang tepat di sini. 5 baris, dan beberapa dari mereka adalah ruang putih, jadi melihat beberapa perbedaan kunci di sini. File ini disebut hello1.php. Baris pertama, meskipun, adalah ,? Berarti itu saja untuk kode PHP saya. Mari kita lihat bagaimana menjalankan ini. Aku akan kembali ke jendela terminal saya di sini. Aku akan masuk ke direktori PHP saya. Perhatikan bahwa kita memiliki sejumlah besar file, yang pertama dari yang hello.php. Biarkan aku pergi ke depan dan menjalankan hello1.php,, masukkan. Izin ditolak. Oke. Bagaimana kita tetap hal-hal seperti ini di masa lalu? Apa itu >> [respon siswa tidak terdengar]? Kita perlu membaca dan menulis, tapi biarkan aku melakukan ls-l. Ingat output ini agak samar dimana hello1 tampaknya dapat dibaca dan ditulis oleh saya tapi dapat dibaca oleh orang lain. Ternyata ini sebenarnya bukan merupakan langkah dalam arah yang benar. Bedanya, sekali lagi, dengan bahasa ditafsirkan adalah Anda tidak menjalankan program secara langsung. Anda malah menjalankan penerjemah dan menyerahkannya kode bahwa Anda telah menulis sehingga dapat menafsirkan baris demi baris. Dalam hal ini, penafsir atau program saya benar-benar ingin menjalankan secara harfiah disebut PHP. Di suatu tempat pada hard drive alat ada program orang lain aja disebut PHP, atau pada Windows php.exe. Apa yang akan saya lakukan di sini adalah aku akan benar-benar menjalankan PHP tapi memberikannya sebagai argumen baris perintah kode yang saya tulis, dan kemudian saya akan tampilannya keluar dan tekan enter. Ini berjalan program saya untuk saya, atas ke bawah, kiri ke kanan. Biarkan aku pergi ke depan dan membuka varians sedikit ini. Dalam pemberitahuan hello2.php bahwa ini juga sebagian besar komentar, jadi biar menyingkirkan mereka sebagai selingan, dan apa yang jelas berbeda sekarang tentang file ini? Ada baris baru, agak samar di bagian atas. Sejalan 1 itu #! / Bin / php. Bin adalah sebuah konvensi di Linux dan Mac OS untuk biner, sehingga / bin berarti ini adalah folder yang berisi sekelompok binari yang diprogram, salah satunya adalah PHP. The #! dijuluki shebang, yang merupakan cara cepat untuk mengatakan hal itu, dan apa ini berarti adalah bahwa ketika Anda menjalankan program ini sekarang ada petunjuk di bagian atas file yang memberitahu komputer apa interpreter untuk digunakan. Ia mendapat sedikit mengganggu jika Anda harus memberitahu pengguna Anda dan pelanggan Anda "Hei, kita menulis program ini disebut hello1.php." Semua harus Anda lakukan adalah selamanya menjalankan PHP dan kemudian nama dari program ini. Terus terang, itu hanya akan lebih baik untuk menjalankan hello1.php, dan memang, kita bisa jika kita melakukan hal berikut. Biarkan aku pergi ke depan dan melakukan ls-l, dan pemberitahuan di hello2 itu masih saja membaca menulis dan kemudian membaca membaca, jadi saya belum bisa melakukan hal ini, hello2.php. Tapi kami memperkenalkan pernah begitu singkat terakhir kali, perintah chmod. Jika saya melakukan chmod a + x, yang berarti semua executability ditambah, dan kemudian hello2.php dan kemudian melakukan ls-l lagi melihat apa yang berubah. Satu, Linux adalah menunjukkan kepada saya nama file di hijau untuk menyampaikan ide bahwa eksekusi itu, tetapi yang lebih penting, di sisi kiri perhatikan bahwa bit mewakili x untuk dieksekusi kini telah ditetapkan. Apa ini berarti sekarang adalah saya bisa menjalankan ./hello2.php seperti biasa, tekan enter, dan karena shebang di bagian paling atas dari file itu petunjuk, lagi, untuk Linux yang mengatakan menggunakan penerjemah ini untuk menjalankan file ini. Jangan khawatir tentang memaksa pengguna untuk benar-benar mengetiknya. Dan apa yang bagus sekarang adalah itu agak tidak relevan kepada pelanggan saya atau teman-teman saya bahasa apa saya menulis program ini, jadi aku bisa pergi ke depan dengan mv dan mengubah nama hal ini untuk hello2, misalnya. Dan sekarang jika saya lakukan ./hello2 dan zoom out program saya terus berjalan. Ini ekstensi file adalah konvensi manusia yang diperlukan untuk sesuatu seperti dentang dan Membuat yang mencari mereka. Tapi untuk PHP, saya bisa menyebutnya apa ekstensi file yang saya inginkan. Aku bisa menipu dunia dengan berpikir bahwa aku benar-benar baik di Ruby, dan aku bisa menulis hello2.rb dan kemudian menjalankan ini, dan voila, sekarang saya memiliki versi Ruby, yang merupakan kebohongan yang lengkap. Tapi ekstensi file yang berarti jika file executable dan memiliki petunjuk ini khusus di bagian atas file. Sekarang, sebagai samping, mari saya tunjukkan cepat versi 3, yang merupakan semacam trik berguna untuk mengetahui. Pada hello3 Saya melakukan sesuatu yang sedikit salah bahwa saya akan memperbarui kode sumber secara online. Dalam versi 3 ternyata pada komputer Linux yang paling ada program yang disebut env untuk lingkungan, dan apa yang dapat Anda lakukan di sini adalah jika Anda tidak tahu di mana PHP diinstal pada hard drive lokal, karena memang bisa bervariasi berdasarkan komputer bahwa seseorang menggunakan, env hanya mengatakan menjalankan env, yang pada kebanyakan sistem, dan mencari tahu di mana PHP adalah. Hanya trik umum sehingga Anda tidak perlu khawatir tentang mencari tahu di mana program ini. Tetapi jika Anda melakukan perawatan untuk mencari tahu di mana program ini dan Anda belum peduli sejauh Anda dapat menggunakan perintah yang. Biarkan saya zoom out dan jenis yang php, dan perhatikan ia memberitahu saya itu sebenarnya di usr / bin / php. Ini semacam kebohongan. Hal ini juga di bin. Ini hanya menunjukkan kepada saya hit pertama. Jika Anda pernah bertanya-tanya di mana dentang adalah, yang dentang, yang di usr / bin / dentang, yang membuat, usr / bin / membuat, dan apa artinya itu semua saat ini Anda bisa saja mengetik usr / bin / dentang masuk untuk menjalankan dentang, tapi itu agak membosankan untuk melakukan itu, sehingga beberapa folder seperti usr / bin dan bin diasumsikan default sehingga komputer tahu untuk mencari di dalamnya untuk Anda. Setiap pertanyaan tentang menulis sebuah program, Dunia super super sederhana Hello di PHP dan kemudian menjalankannya? Karena sekarang kita akan mulai memperkenalkan sintaks lebih menarik. Baiklah, di sini kita pergi. Program-program yang telah kita lihat sebenarnya semua dari mereka sebelumnya. Jika saya membuka, misalnya, mari kita lakukan beer1.php, kami tidak akan pergi melalui beberapa versi ini, tapi apa yang saya lakukan Aku sedang duduk dan menuangkan atau dikonversi saya C kode untuk kode PHP di sini. Sebagian besar atas file yang komentar di sini. Ternyata ada satu fungsi baru kita perlu disebut readline. GetString, recall, dari Minggu 0 seterusnya adalah hal CS50. PHP datang dengan sendiri fungsinya user-friendly disebut readline yang mengambil 1 argumen yang menentukan prompt bahwa Anda ingin menunjukkan kepada pengguna, dan apa yang tidak readline apakah mengembalikan apa pun pengguna jenis masuk Dalam kasus ini, saya mendeklarasikan variabel yang disebut $ n. Saya menyimpan di dalamnya nilai kembalinya readline setelah mendorong pengguna dengan string ini. Hanya untuk cadangan, untuk benar-benar menjalankan hal ini, biarkan aku pergi ke depan dan menjalankan beer1.php php. Berapa banyak botol akan ada? Mari kita lakukan 2 kali ini. Enter. Itu saja. Program ini secara fungsional identik dengan versi C dari minggu lalu. Tapi sintaksis mari kita lihat apa yang berbeda. Setelah saya mendapatkan int dari pemberitahuan pengguna bahwa aku melakukan beberapa pengecekan error, dan jika n kurang dari 1 saya berhenti dan saya mencetak pesan maaf kepada pengguna dan keluar dengan 1. Ini juga sedikit berbeda.  Dalam C apa yang kita lakukan? Dalam C kami kembali 1. Dalam PHP Anda keluar dengan 1, yang terus terang saya pikir adalah sedikit lebih intuitif karena Anda benar-benar keluar dari program. Baiklah, dan kemudian turun di sini lagu menjengkelkan identik sintaksis kecuali untuk variabel, sehingga di sini di baris 24 dan seterusnya perhatikan saya untuk loop hampir sama, tapi aku punya $ di depan i dan n, dan apa juga hilang dari baris 26 yang kita punya di masa lalu ketika mendeklarasikan variabel saya? Ada tipe no. Hal ini tidak benar dalam PHP untuk mengatakan int. Anda hanya tidak perlu melakukan itu. Komputer, PHP interpreter cukup pintar untuk menyadari bahwa jika Anda memasukkan nomor di $ Saya akan memperlakukannya sebagai nomor Anda. Dan kemudian turun di sini kita pasang di $ i, $ i, $ i - 1. Semua itu adalah sama, dan kemudian turun di sini kita melakukan "Wow, itu mengganggu" printf dan kemudian keluar (0). Sekali lagi, takeaway di sini adalah bahwa meskipun kita akan menghabiskan relatif sedikit waktu pada PHP, tentu versus apa yang kami lakukan pada C, itu hampir sama, dan sebagainya yang akan kita lakukan hari ini dan minggu depan dan seterusnya adalah fokus benar-benar pada beberapa ide-ide baru. Hanya untuk melihat bahwa satu hal lain yang tidak menerjemahkan lebih dari C, ini adalah sebuah program super sederhana yang kita lakukan di Minggu 1 atau 2 potong dadu yang nilai. Tapi apa yang menarik pada saat tentang program ini adalah bahwa hal itu memperkenalkan konsep fungsi kustom tertulis bahwa kita sendiri menulis. Sintaks dalam PHP hampir sama. Berikut program saya di bagian atas. Perhatikan lagi absen adalah setiap gagasan utama. Saya mulai menulis kode, dan ini adalah apa yang akan dieksekusi oleh interpreter. Saya mencetak x sekarang 2, mungkin. Lalu aku mengklaim cubing ... Lalu aku memanggil fungsi kubus dan lulus dalam $ x dan menetapkan nilai kembali ke $ x. Kemudian saya mengklaim bahwa itu potong dadu, dan kemudian saya mengatakan ini, yang mudah-mudahan akan mengatakan x sekarang 8. Sintaks untuk fungsi di PHP pernah jadi sedikit berbeda. Sekali lagi hilang adalah jenis kembali. Sekali lagi hilang adalah jenis kembali dan juga hilang adalah jenis lainnya? [Respon siswa tidak terdengar] Well, oke, itu bagus. Mari kita kembali ke bahwa dalam kedua. Kami tidak memiliki, misalnya, int sini. Kami tidak, misalnya, telah int sini karena, sekali lagi, di PHP Anda hanya tidak perlu dan tidak harus melakukan itu, melainkan ada kata kunci ini baru yang disebut fungsi. Di PHP itu hampir sedikit lebih jelas karena ketika Anda ingin fungsi Anda benar-benar mengatakan fungsi, Anda memberikan nama dan kemudian daftar dipisahkan koma jika ada argumen. Tidak perlu mengatakan batal atau sesuatu seperti itu, dan kemudian kembali adalah sama, $ * A * a $ $ a. Yang juga hilang? Sammy menunjukkan hal ini di sini. Pada bagian atas dari file-benar absen di PHP juga merupakan prototipe. Ini juga adalah dengan desain. Bahasa dan interpreter seperti PHP lebih pintar dari C pernah ada dalam kompiler seperti dentang. Ingat dentang itu, jika Anda tidak memberitahu bahwa ada kubus, jika Anda tidak memberitahu bahwa ada sebagai printf dengan prototipe atau dengan # include, baik, itu akan berteriak pada Anda dan bahkan tidak mengkompilasi kode Anda. PHP dan bahasa yang lebih modern yang jauh lebih cerdas ketika datang ke ini. Mereka akan mengambil itu atas diri untuk membaca semua kode Anda dan kemudian berteriak pada Anda hanya jika menemukan tempat kubus. Tidak masalah jika kubus di bagian bawah atau atas atau bahkan dalam beberapa file terpisah. Bahasa PHP dan sejenis sekarang cukup cerdas untuk melihat ke depan segala sesuatu sebelum deeming Anda sebagai telah membuat kesalahan. Mana yang meninggalkan kita? Mari kita lakukan salah satu contoh terakhir di sini dalam kondisi, dan jika saya membuka pemberitahuan conditions2.php terlalu sintaks di sini adalah hampir sama. Saya menggunakan readline bukan GetString, tapi garis yang sama seperti sebelumnya, "Saya ingin integer silakan." Saya kemudian memiliki kondisi jika, else if, dan kemudian yang lain, tetapi secara fungsional program ini juga identik dengan apa yang kami lakukan minggu lalu, jadi jika saya menjalankan hal ini, php dari conditions2, dan saya memberikan nomor seperti 23 - Aku mengambil angka positif. Jika saya memberikan -1 saya memilih angka negatif. Jika saya memberikan 0 Saya memang memilih 0. Jadi siapa yang peduli tentang semua ini? Nah, salah satu jenis latihan yang menyenangkan di sini bagi saya setidaknya adalah untuk kembali dan melihat seberapa cepat saya bisa menerapkan pset 5, yang pset salah ejaan. Ingat bahwa ada file ini disebut speller.c, dan ada file bernama dictionary.c. Apa yang saya lakukan adalah saya agak menghabiskan beberapa menit dan saya dikonversi kode C untuk kode PHP, dan kami tidak akan menghabiskan banyak waktu di ejaan karena seperti di pset 5 Anda tidak benar-benar perlu menghabiskan banyak waktu di ejaan sendiri karena perhatian Anda berada di kamus. Cukuplah untuk mengatakan bahwa jika Anda membaca ejaan, file ini di sini, itu cukup banyak setara dengan kode C kami memberikan Anda untuk pset 5. Saya baru saja menambahkan beberapa $ di tempat. Aku sudah berubah nama fungsi tertentu jika mereka tidak ada di PHP. Ada satu hal tambahan di sini, preg_match, yang merupakan cara sedikit lebih menarik dari melakukan sesuatu, tapi kami akan kembali ke yang akhirnya. Tapi singkatnya, ejaan hampir identik, dan jika Anda melihat di bagian paling bawah apa yang akhirnya meludah keluar ini di sini, kata yang salah eja, kata-kata dalam kamus, kata-kata dalam teks. Baiklah, jadi apa yang menarik saat ini adalah sebagai berikut. Pada bagian atas file saya, saya membutuhkan dictionary.php. Sama seperti C # telah termasuk PHP memiliki fungsi khusus yang disebut membutuhkan yang cukup banyak melakukan hal yang sama, memerlukan file bernama dictionary.php. Bagaimana saya bisa pergi tentang pelaksanaan pset 5? Biarkan aku pergi ke depan dan membuka file di sini. Biarkan aku mengambil referensi kecil di sini. Dan biarkan aku membuat file baru dan mulai memanggil dictionary.php ini. Biarkan aku memasukkannya ke dalam folder lain sehingga kita bisa melakukan ini hidup. Dan sekarang aku akan zoom in Aku akan memulai file PHP saya dengan braket terbuka php ditutup braket. Dan kemudian di sini ada beberapa fungsi yang saya butuhkan untuk mengimplementasikan untuk pset 5, jadi biar mulai menerapkan beberapa dari mereka, sehingga fungsi cek, yang harus mengambil sebuah kata dalam sebagai argumen. Kami akan melakukan itu dan kembali ke sana dalam sekejap. Ada fungsi beban, yang mengambil dalam apa sebagai argumen? Kamus, sehingga file yang saya benar-benar ingin untuk memuat. Ada fungsi ukuran, yang tidak mengambil argumen dan ada fungsi-apa yang lain? Membongkar, yang tidak mengambil argumen baik. Ini adalah 4 fungsi bahwa saya akan perlu untuk mengimplementasikan sekarang di PHP, dan apa yang akan saya lakukan adalah pergi ke depan dan melakukan hal ini. Banyak dari Anda menggunakan tabel hash di pset 5, jadi biarkan aku pergi ke depan dan membuat tabel hash di PHP. Selesai. Itu memberi saya sebuah tabel hash. Nah, mengapa? Satu, variabel disebut $ meja, hanya untuk menyulap ide tabel hash. Tanda kurung persegi, meskipun, mengingat, mewakili apa? Array, tetapi dalam array PHP tidak harus diindeks secara numerik. Mereka juga bisa menjadi array asosiatif, yang berarti Anda dapat memiliki kunci sewenang-wenang dan nilai-nilai. Banyak seperti di pset 5, Anda yang melakukan implementasi tabel hash Anda mungkin dimasukkan kata dan kemudian dimasukkan ke dalam rantai daftar terhubung, atau Anda menyimpan nilai suatu tempat benar atau sesuatu seperti itu. Anda entah bagaimana mengingat fakta bahwa kata itu ada. Untuk saat ini, itu akan menjadi tabel hash saya, dan jadi sekarang untuk pergi tentang pelaksanaan fungsi cek Saya hanya perlu melihat ke dalam itu tabel hash dan melihat apakah kata ada. Apa yang akan saya lakukan adalah aku akan mengatakan jika- katakanlah isset, yang merupakan fungsi PHP yang benar-benar hanya berarti adalah set kunci, sehingga isset ($ table [$ word], dan jika demikian kembali benar. Itu saja. Itu pset 5 di PHP. Nah, dalam keadilan, oke. Lain kembali palsu, sehingga tidak ada. Apa yang sebenarnya terjadi di sini? Nah, jika tabel-tabel hash atau di sini lebih umum- adalah array asosiatif yang berarti Anda dapat mengindeks ke dalamnya dengan kata seperti "kata," dan Anda harus mendapatkan kembali beberapa nilai. Kami agak mendapatkan selangkah lebih maju dari diri kita sendiri. Ini akan menjadi baik jika kita benar-benar dimuat file pertama, sehingga beban tidak cukup sederhana, tapi biarkan aku pergi ke depan dan menyiapkan  implementasi sangat cepat dari beban. Biarkan aku pergi ke depan dan mengatakan kata-kata mendapat kamus file. Fungsi file dalam PHP membuka file dan kembali kepada Anda sebuah array dari semua kata-kata dalam file tersebut, hanya tangan mereka kepada Anda. Itu adalah rasa sakit besar juga, bukan? Sekarang foreach, ini adalah membangun baru, foreach ($ kata-kata $ kata). Loop ini akan mulai iterasi kata Array dan menetapkan ke variabel $ kata setiap kata dalam file dari pertama ke kedua ke ketiga dengan cara seluruh keempat jadi saya tidak perlu melakukan notasi [i] menjengkelkan dan sejenisnya. Dan apa yang saya hanya akan lakukan untuk masing-masing kata adalah menyimpannya di meja saya dengan pengindeksan ke dalam tabel dan kemudian melakukan benar karena untuk mengingat bahwa kata dalam kamus saya semua saya benar-benar harus melakukan adalah jenis melempar sedikit dan mengatakan kata ini dalam tabel hash saya ada di sana, benar. Dan jika itu tidak ada, saya tidak harus secara eksplisit menempatkan palsu, kalau tidak saya akan harus meletakkan palsu untuk semua kata yang mungkin di alam semesta. Cukuplah bagi saya hanya untuk menetapkan nilai indeks true jika kata sebenarnya dalam tabel hash saya. Sekarang, aku memotong beberapa sudut di sini bahwa saya akan melambaikan tangan saya di untuk saat ini, tapi sekarang fungsi beban dilakukan. Saya memuat semua kata-kata dari file ke dalam array. Aku iterate atas array, dan untuk setiap kata dalam array Saya pasang ke dalam tabel hash saya dengan 1 baris kode. Ini menyenangkan. Anda tahu bagaimana kita dapat menerapkan ukuran sekarang? Nah, ukuran selalu cukup mudah, dalam keadilan. Di sini kita hanya dapat melakukan mengembalikan hitungan meja. Itu cukup mudah juga, menghitung jumlah hal dalam tabel. Itu sebenarnya semacam bukan yang paling efisien. Saya mungkin harus memiliki ukuran yang disebut variabel sehingga kita bisa melakukannya dalam waktu yang konstan, tapi itu cukup mudah. Oh, dan kemudian membongkar, jika kita benar-benar ingin menjadi anal sini kita dapat mengatakan bahwa cara Anda membongkar sesuatu. Anda hanya mengatur variabel sama dengan array kosong, dan itu akan menyingkirkan segala sesuatu yang ada di sana. Tidak perlu menelepon gratis. Sekali lagi, saya telah memotong beberapa sudut, dan saya mohon maaf atas sejumlah masalah menugaskan 5 mungkin di C, tetapi jika kita sekarang pergi ke depan dan menjalankan ini, Aku akan benar-benar menjalankan versi yang saya tulis di muka hanya agar aku tidak membuat kesalahan sintaksis apapun. Biarkan aku pergi ke depan dan menjalankan ejaan. Penggunaan adalah sama. Berikut adalah file kamus yang hanya berisi kata foo. Berikut adalah file teks yang hanya berisi foo bar. Mari kita periksa ejaan ini, sehingga ejaan, menggunakan file kamus pada file teks. Ada satu kata yang salah eja, bar, dan voila. Selesai dengan pset 5. Mari kita istirahat 5 menit di sini, dan kami akan datang kembali dan lebih pada PHP. Baiklah, kita kembali. Mari kita lakukan-membenci saya untuk sementara waktu. Mari kita sekarang benar-benar melihat apakah ini bukan positif benar-benar menerapkan hal ini di PHP. Memang, butuh waktu 45 detik untuk melaksanakan. Tapi mari kita lanjutkan sekarang dan menjalankan hal-hal. Biarkan aku pergi ke depan dan menjalankan versi C dari ejaan, dan kami akan menjalankannya pada salah satu file terbesar, yang merupakan King James Bible. Dan bahwa di sini adalah di-mari kita masuk ke folder C kami, ejaan pada King James tanggal 5. Banyak kata yang salah eja. Oke, jadi itu output Anda mungkin punya bahkan jika waktu yang sedikit berbeda, jika Anda mendapatkan semua yang bekerja dengan benar, sehingga secara total waktu untuk memeriksa ejaan Alkitab King James adalah .38 detik, sehingga cukup baik menggunakan implementasi tersebut. Sekarang biarkan aku pergi ke versi PHP, yang kita baru saja menulis. Biarkan saya jalankan ejaan pada King James. Whoops, mengabaikan kesalahan itu. Saya di direktori yang salah. Speller di King James tanggal 5. Hampir selesai. Oke, pengamat yang cerdik akan menyadari bahwa itu lebih dari 3 detik di sana. Itu adalah waktu yang berjalan benar. Ternyata bahwa dibutuhkan waktu untuk meludah banyak teks keluar karena buffer masalah, tapi cerita panjang pendek, itu 3,15 detik dari waktu mesin, CPU time, versus apa itu beberapa saat yang lalu? Seperti .3. Maksudku, itu urutan besarnya lebih lambat, jadi di mana adalah bahwa perlambatan konyol datang dari? Nah, seperti yang telah terjadi dengan sebagian besar keputusan desain yang kita buat di kelas selama 9 minggu terakhir hampir selalu ada tradeoff ini. Kadang-kadang hanya ruang antara, kadang-kadang antara ruang dan waktu, ruang, waktu dan usaha pengembangan, dan memang di sini, meskipun kami menyelamatkan sejumlah besar waktu, mungkin berpotensi 10-20-30 jam waktu pengembangan menerapkan spell checker oleh kambing itu hanya dalam 45 detik dengan bahasa ini harga yang kami bayar adalah bahwa itu adalah urutan besarnya lebih lambat sebagai hasilnya, dan ini umumnya terjadi dengan hampir semua bahasa ditafsirkan, PHP, Python, Ruby, Pearl atau orang lain dimana jika Anda akan menjalankannya melalui seorang penerjemah dan memilikinya membaca kode Anda baris demi baris, atas ke bawah, kiri ke kanan, bahwa perantara akan mengambil beberapa waktu sendiri, dan apa yang Anda rasakan di sini di 3 detik sebagai lawan .3 detik adalah kenyataan bahwa ada perantara ini yang harus benar-benar menginterpretasikan kode kita baris demi baris, dan Allah melarang jika Anda dalam lingkaran dengan file besar yang berisi ratusan ribu kata. Itu overhead akan menambah dan menambah dan menambah dan menambah. Untuk alat seperti ini mungkin bukan bahasa terbaik untuk menggunakan untuk melaksanakan spell checker jika kedekatan yang menarik bagi pengguna Anda dan untuk Anda. Tapi mewah yang kita miliki dalam beberapa saat adalah jika Anda menggunakan bahasa seperti PHP atau banyak bahasa ditafsirkan dalam konteks Web, dalam hal ini, Anda memiliki manfaat bahwa internet jauh lebih lambat dari kebanyakan komputer. Anda memiliki CPU GHz di komputer Anda, 2 GHz, bahkan mungkin lebih hari ini. Tetapi kenyataannya adalah di internet ada sejumlah tinggi latency dimana untuk browser untuk berbicara dengan server, meskipun kita lihat minggu lalu bahwa itu cukup cepat, setengah milidetik atau lebih, itu juga menambahkan sampai, dan jika Anda men-download hal-hal seperti gambar atau foto atau Facebook mendapatkan pesan instan melalui obrolan Facebook, GChat atau sejenisnya, semua round-trip kali antara browser dan mulai server untuk menambah, yang membuat pilihan tertentu Anda bahasa dalam banyak kasus tidak semua yang relevan, sehingga Anda baik-baik saja menggunakan bahasa yang sedikit lebih lambat seperti PHP atau Python atau Ruby tapi untuk yang ada upsides besar untuk Anda dan rekan Anda dan teman-teman Anda karena Anda dapat menerapkan hal-hal begitu, jauh lebih cepat. Dan selain itu, Anda memiliki risiko jauh lebih sedikit dari kelemahan keamanan tertentu. Tidak ada pointer di PHP. Tidak ada kesalahan seg bahwa Anda dengan mudah dapat menginduksi dengan cara yang sama Anda bisa di C. Dengan C Anda super dekat dengan perangkat keras. Dengan bahasa PHP dan mirip Anda semacam tingkat yang lebih tinggi, sehingga untuk berbicara, dengan banyak pertahanan antara Anda dan apa yang sebenarnya terjadi dalam mesin, dan itu hanya sebuah tradeoff. Kami telah sampai pada titik memiliki ini, lebih modern bahasa tingkat tinggi seperti PHP karena pelajaran dalam bahasa seperti PHP di C. Tapi jika Anda tidak mengerti apa yang telah terjadi di bawah tenda sepanjang waktu ini Anda pasti tidak dapat membuat keputusan desain yang tepat, dan tentu ketika datang untuk bekerja di tempat seperti Facebook atau Google atau tempat-tempat yang semakin bermain dengan set data besar bahkan jika Anda kembali dan jangan premed dan bekerja dengan MD beberapa pada beberapa data yang besar yang melibatkan pasien dan dokter dan seperti menggunakan alat yang tepat adalah sangat menarik karena jika analisis Anda dari beberapa kumpulan data mungkin mengambil detik, atau secara harfiah mungkin memakan waktu beberapa jam. Ini hanyalah satu contoh, tidak untuk menggagalkan Anda dengan usaha berapa banyak lagi itu di C tetapi untuk membantu Anda menghargai bahwa ketika Anda menerapkan sesuatu di C Anda benar-benar mengerti, atau dalam teori, benar-benar memahami bagaimana segala sesuatu atau harus bekerja, dan Anda memiliki kontrol hampir penuh atas apa yang terjadi di bawah kap mesin, dan dengan bahasa tingkat tinggi Anda harus melepaskan kontrol lebih kepada orang-orang yang menemukan mereka dan tunduk lebih untuk keputusan desain mereka dari Anda. Tetapi jika kita mengambil begitu saja bahwa kinerja tidak cukup penting di Web karena isu-isu lainnya, hanya kecepatan jaringan yang sedikit lebih lambat dari kecepatan CPU pula, sehingga kita bisa semacam mampu menggunakan bahasa sedikit lebih lambat jika upsides kita dapat mengembangkan hal-hal 10 kali lebih cepat atau bahkan lebih. Mari kita lihat bagaimana kita bisa mulai menggunakan ini. Biarkan aku pergi ke folder salah satu contoh saat ini disebut frosh.ims, dan ini benar-benar secara pribadi termotivasi oleh fakta bahwa hal pertama Saya menulis untuk Web tahun lalu setelah mengambil CS50 CS51 dan adalah sebuah website untuk program IM Frosh, mahasiswa olahraga intramural, yang pada saat ini adalah tahun yang cukup lalu bahwa pada saat tidak ada website untuk program ini, meskipun ada sebuah web, dan sebaliknya ada pengawas di Wigglesworth dimana jika Anda ingin untuk mendaftar untuk voli atau sepak bola atau apa pun yang Anda akan mengisi secarik kertas. Anda kemudian akan berjalan melintasi halaman. Anda kemudian akan mengetuk pintu mereka dan geser di pintu mereka atau tangan untuk pengawas secarik kertas dengan nama Anda di atasnya, apakah Anda ingin menjadi kapten tim, apa olahraga Anda ingin lakukan, dan apa asrama Anda masuk Itu adalah semacam cara sekolah tua dalam melakukan sesuatu, dan ini adalah perdana kesempatan untuk mengotomatisasi banyak proses ini. Anda hanya pergi ke situs web. Anda mengetik sesuatu masuk Anda mendapatkan email konfirmasi, dan boom, Anda sudah selesai. Ini adalah hal pertama yang saya lakukan, meskipun dalam bahasa yang disebut Pearl, tapi itu relatif mudah untuk dilakukan di PHP, dan ini adalah semacam perwakilan dari masalah yang Anda dapat mulai memecahkan ketika Anda dapat mengekspresikan diri pemrograman dan tidak harus bergantung pada hal-hal seperti situs Google atau Excel atau alat yang diberikan kepada Anda. Kalian sekarang memiliki kemampuan untuk melakukan hal-hal seperti ini. Ini adalah versi jelek super formulir, tetapi mari kita hanya menggunakannya untuk awal percakapan dimana hal ini kira-kira apa bentuk tampak seperti tahun yang lalu bagi kita untuk memungkinkan orang di Web untuk mendaftar Frosh IM. Kami meminta nama, kotak centang untuk apakah atau tidak mereka ingin menjadi kapten, laki-laki atau perempuan, dan kemudian apa yang mereka berada di asrama, dan kemudian mereka akan mengirimkan formulir ini. Mari kita melihat pertama di bawah kap pada HTML yang mewakili halaman web ini. Biarkan aku pergi ke froshims0, dan sebagai samping, untuk pset 7 saya mengambil untuk diberikan direktori dan folder yang saya meletakkan hal-hal masuk Kami akan memandu Anda melalui persis di mana barang-barang harus pergi pada alat, yang perintah mod Anda harus menjalankan, jadi jangan khawatir tentang semua rincian bodoh sinkronisasi dalam dari get-pergi di sini. Baiklah, inilah froshims0.php. Biarkan saya scroll ke bawah, dan apa yang ingin tahu di sini, ini adalah file PHP, tapi apa di dalamnya, jelas? Ini banyak seluruh HTML, dan memang, PHP asal benar-benar adalah untuk menjadi bahasa web-sentris. Sesaat lalu kita menggunakannya untuk mengimplementasikan contoh bir, kondisi contoh, contoh halo, dan itu baik-baik saja. Anda dapat menggunakan PHP sebagai bahasa scripting di mana script benar-benar hanya nomenklatur yang diberikan kepada program cepat dan kotor atau sesuatu yang Anda menulis dalam bahasa yang ditulis atau lebih umumnya ditafsirkan. PHP super berguna untuk itu karena Anda telah melihat seberapa cepat relatif kita dapat menyiapkan program di PHP. Tapi itu benar-benar dirancang untuk digunakan untuk Web, dan dirancang untuk Web dalam arti bahwa perhatikan di sini di bagian atas file Saya mulai dengan