Tip:
Highlight text to annotate it
X
>> JASON Hirschhorn: Selamat Datang untuk tiga minggu, semua orang.
Kami mempunyai sibuk tetapi menarik seksyen hadapan kita.
Jadi pertama, kerana kita telah membuat beberapa Headway dengan kursus tetapi kita masih
telah banyak pembelajaran yang perlu dilakukan, saya akan menunjukkan kepada anda semua beberapa sumber
yang harus membuktikan untuk menjadi sangat membantu kerana anda bukan sahaja mendekati anda
masalah menetapkan, tetapi juga mencerna semua bahan yang kita berikan anda lelaki dalam
kuliah dan seluar pendek dan bahagian.
>> Kemudian kita akan menghabiskan 20 pertama hingga 25 minit seksyen akan lebih
GDB, yang anda mungkin atau mungkin tidak mempunyai digunakan pada ketika ini, tetapi ia adalah satu
alat yang amat berguna yang akan membantu anda debug program anda.
Banyak daripada anda mungkin telah menggunakan printf dalam tengah-tengah program anda untuk memikirkan
apa pembolehubah equaled.
GDB adalah lebih baik daripada printf dan tidak skru sehingga kod anda kerana anda
berjalan pada fail boleh laku.
Oleh itu, kita akan pergi ke 10 yang paling berguna menyuruh kamu perlukan untuk GDB, dan kami
akan pergi latihan bersama-sama supaya dalam masalah menetapkan tiga dan seterusnya, anda
boleh menggunakan GDB untuk membantu debug program anda.
Dan akhirnya, kita akan pergi ke beberapa pemilihan dan pencarian algoritma
yang anda lihat dalam kuliah, dan kami akan sebenarnya kod, bukan sahaja
kod pseudo, tetapi kod carian binari, isih gelembung, dan jenis pemilihan.
>> Oleh itu, saya mahu pergi lebih sumber.
Ini adalah senarai yang banyak, dan ia font yang lebih kecil kerana saya mempunyai banyak untuk
patut atas di sini.
Tetapi ini bukan sahaja akan membantu anda, sekali lagi, dengan set masalah dan
maklumat mencerna yang anda pelajari, tetapi pasti, datang masa kuiz, ini akan
menjadi sangat membantu.
Jadi pertama, kuliah nota.
Jika anda pergi ke cs50.net/lectures dan tatal ke minggu tertentu dan hari,
anda akan melihat bahawa terdapat nota bagi setiap syarahan, yang bukan semata-mata
transkrip, tetapi versi disunting apa yang dibincangkan dalam kuliah dengan kod
coretan dan tidbits lain membantu.
Saya sangat mengesyorkan akan ke atas.
Dan kemudian juga, ada kod sumber boleh didapati daripada setiap kuliah.
Dan sekali lagi, slaid ini juga akan boleh didapati dalam talian di cs50.net/sections
petang ini.
>> Jadi kedua adalah seluar pendek setiap minggu itu topik perlindungan, biasanya 5 hingga 15
minit panjang.
Dan orang-orang diharapkan akan memberikan anda buku asas besar mengenai topik-topik yang berbeza.
Ketiga -
dan ini adalah jenama baru ini tahun - adalah study.cs50.net.
Jika anda belum diperiksa ia keluar, saya dinasihatkan supaya berbuat demikian.
Anda dapat memilih topik.
Kami mempunyai puluhan topik di sana.
Sebagai contoh, anda memilih Fungsi.
Ia memberikan anda beberapa slaid dan nota dengan fungsinya.
Mereka sebenarnya slaid yang TFS digalakkan menggunakan selama kami
persembahan di bahagian.
Terdapat juga tips dan cara untuk berurusan dengan fungsi, dan ada
masalah amalan yang membantu anda bekerja dengan fungsi.
Kami juga memberi anda pautan ke pendek pada fungsi dan masa yang berfungsi
telah datang dalam kuliah.
Jadi study.cs50.net, jenama baru ini tahun, sumber hebat.
>> Seterusnya, saya mempunyai seorang lelaki, yang merupakan pengguna arahan yang anda boleh menjalankan di
baris arahan.
Jadi, jika anda mempunyai sebarang soalan mengenai arahan, sebagai contoh, rand, yang kita
dihadapi minggu lepas dalam seksyen dan anda telah mungkin dihadapi dalam
masalah anda ditetapkan apabila melalui menjana kod, tetapi jika anda menaip lelaki
rand, anda akan mendapat halaman yang memberitahu anda semua tentang rand.
Ia memberikan apa yang diperlukan, yang parameter yang diperlukan, serta kembali
jenis dan penerangan ringkas fungsi itu.
>> Jadi lihat rand.
Ia boleh menjadi sedikit panjang lebar dan mengelirukan, jadi kadang-kadang saya mendapati bahawa
hanya Googling apa yang saya ingin tahu adalah cara terbaik untuk mencari jawapannya.
Jadi berlatih dengan Google.
Dapatkan baik di Google.
Ia akan menjadi kawan terbaik anda.
>> Selain Google, jika anda tidak dapat mencari ia di Google, cs50.net/discuss, ia
forum perbincangan.
Kemungkinan jika anda mempunyai satu soalan, satu 700 + rakan-rakan anda juga mempunyai yang
soalan dan boleh meminta ia sudah dalam membincangkan
forum dan telah ia menjawab.
Jadi jika anda mempunyai soalan yang sama atau anda mempunyai soalan yang anda fikir
mungkin orang lain mungkin telah menghadapi, menyemak cs50.net/discuss.
>> Akhirnya, kedua-dua terakhir, jika anda mahu bercakap dengan seorang, pejabat sebenar manusia
jam Isnin hingga Jumaat.
Terdapat juga waktu pejabat dalam talian untuk pelajar lanjutan.
Dan terakhir tetapi tidak kurang pentingnya, saya, tanda seru.
Anda semua mempunyai maklumat hubungan saya.
Jika anda memerlukan apa-apa, sila tidak pernah teragak-agak untuk menghubungi saya.
Sentiasa berasa bebas untuk berbuat demikian.
Sangat sedikit daripada anda telah menambah saya pada GChat, jadi yang telah mengecewakan,
tetapi diharapkan yang akan berubah di antara ini dan seksyen seterusnya.
Apa-apa soalan setakat ini pada sumber?
Besar.
>> Akhir sekali, satu lagi plug untuk maklum balas, sayat.me/cs50.
Anda boleh memberi maklum balas tanpa nama bagaimana saya lakukan.
Itu adalah benar-benar membantu minggu lepas.
Saya mendapat beberapa komen dari anda semua betul selepas seksyen, ditambah dari
pelajar-pelajar lain yang menonton ia dalam minggu ini, dan ia
adalah sangat membantu.
Saya akan cuba menghadkan penggunaan saya perkataan "manis," tetapi saya akan menunjukkan kepada saya
semangat dan keseronokan dengan cara lain.
Tetapi terdapat tambahan lain maklum balas substantif,
kedua-dua plus dan delta.
Oleh itu, sila, saya memberikan anda semua maklum balas pada set masalah anda.
Jangan ragu untuk memberi maklum balas kepada pengajaran saya.
Saya di sini untuk anda semua.
>> Besar.
Itu sahaja yang saya ada untuk bahagian pertama.
Adakah sesiapa mempunyai apa-apa soalan setakat ini?
Dan saya mempunyai nota untuk pusat kawalan.
Pelajar Tambahan telah messaged saya mengatakan mereka tidak mendapat apa-apa audio,
tetapi yang di luar kuasa saya untuk menetapkan.
Jadi mudah-mudahan, yang mendapat diselesaikan tidak lama lagi.
Jika anda menonton talian, hi, tetapi anda tidak boleh mendengar saya.
>> Oleh itu, kita akan melalui GDB.
GDB, kerana saya membayangkan sebelum ini, adalah alat debugging
jauh lebih baik daripada printf.
Jadi untuk bermula dengan GDB, kamu semua, jika anda mahu untuk membuka perkakas anda
dan mengambil fail yang saya melalui e-mel kepada anda sebelum ini - fail ini juga akan
boleh didapati dalam talian dalam sedikit -
dan menjalankan GDB. / nama fail.
Pertama, sudah tentu, anda perlu menyusun memfailkan kerana GDB hanya berfungsi pada
fail boleh laku.
>> Tetapi jika anda mahu untuk memulakan GDB, perkara pertama yang anda lakukan,
anda menjalankan GDB. / Caesar.
Jadi, itu nama program yang kami akan pergi bersamanya sekarang.
Jadi, saya akan menulis membuat Caesar, yang akan memberikan saya fail boleh laku
di sini yang ditekankan dalam hijau.
Dan kemudian saya akan berjalan GDB. / Cesar.
>> Dan ada anda pergi.
Anda melihat kita mempunyai beberapa teks memberitahu saya tentang versi GDB, memberikan saya
beberapa maklumat jaminan, dan kemudian kita mempunyai segera KDNK, yang kelihatan semacam
daripada seperti garis prompt kita, tetapi anda melihat ia terbuka
paren, GDB, paren dekat.
Sebelum kita terus dan debug fail ini yang saya dihantar kepada anda semua, mari kita lihat
beberapa arahan berguna jadi kami mempunyai rasa yang daripada apa yang kita akan meliputi.
>> Arahan ini disenaraikan di sini di Susunan yang saya biasanya menggunakannya.
Jadi saya memulakan program saya dengan menjalankan GBD. / Nama program ini,
dalam kes ini, Caesar.
Dan maka perkara pertama yang saya lakukan 99.9% masa itu jenis rehat bermakna.
Yang menetapkan titik rehat di utama.
Pada asasnya, apa yang anda lakukan di sana adalah program itu akan berhenti di
utama supaya anda boleh mula memeriksanya talian demi baris, bukannya berjalan semua
jalan melalui.
Anda boleh memecahkan pada mata yang berbeza di kod anda, tetapi utama adalah umumnya
tempat yang baik untuk bermula.
>> Arahan seterusnya saya berjalan adalah jangka.
Yang bermula program berjalan, dan jika anda perlu memasukkan baris arahan
hujah, anda menjalankannya arahan itu.
Berlari dengan hujah-hujah.
Jadi kerana kita akan lebih versi yang C, yang merupakan program anda semua
menulis untuk Serangga dua -
satu ini, sudah tentu, mempunyai beberapa bug di dalamnya yang mudah-mudahan kita akan mencari -
kita akan menjalankan jangka dengan beberapa program argumen baris kerana Caesar,
sebagai anda semua tahu setiap masalah set spec, mengambil beberapa
hujah baris arahan.
>> Pasangan akan datang arahan, seterusnya seseorang itu sebenarnya dipanggil akan datang.
Yang mengambil talian anda dengan talian melalui program anda.
Jadi memukul n kemudian Masukkan membawa anda ke baris seterusnya, melaksanakan
garis sebelumnya.
Langkah bukan sahaja akan membawa anda ke baris seterusnya, tetapi ia
membawa anda fungsi di dalam.
Jadi jika anda telah menulis satu majlis di kod anda atau jika anda mahu untuk meneroka
untuk i, sebagai contoh, anda boleh memukul s, dan bukannya pergi ke baris seterusnya
fail yang anda akan melalui hak sekarang, anda benar-benar akan melangkah ke
fungsi ini dan lihat kodnya.
>> Senarai menunjukkan anda, dalam sangat mesra pengguna format, 10 atau lebih garisan sekitar
di mana anda kini berada dalam kod anda jadi anda sebenarnya boleh melihat fail
bukannya untuk menukar kembali dan alik antara pandangan yang berbeza.
Cetak adalah seperti printf, seperti namanya.
Yang menunjukkan anda apa jenis pemboleh ubah sama.
>> Penduduk tempatan maklumat adalah benar-benar membantu.
Ini adalah versi khas cetak.
Penduduk tempatan Info menunjukkan anda semua tempatan pembolehubah, mencetak mereka semua keluar untuk anda
yang pada masa ini.
Jadi saya secara amnya, bukannya untuk mencetak empat pembolehubah bahawa saya
tertanya-tanya tentang jika saya berada di dalam gelung, untuk Sebagai contoh, saya hanya menulis maklumat penduduk tempatan,
dan ia akan menunjukkan kepada saya apa yang saya i kaunter sama, dan juga pelbagai bahawa saya
bekerja di setaraf.
>> Akhir sekali, terus.
Menaip rehat berhenti anda pada ketika rehat.
Anda boleh berjalan melalui talian oleh Selaras dengan depan dan langkah.
Teruskan berjalan program untuk seterusnya memecahkan titik atau sehingga selesai jika
tiada lagi mata pecah.
Matikan membuang mata pecah jika anda memutuskan rehat di utama adalah
tidak sesuai, anda mahu ditetapkan di tempat lain.
Dan akhirnya q, berhenti, keluar dari GDB.
>> Jadi program ini,. / Caesar, kita akan untuk melihat melalui sekarang dan kami
akan menggunakan GDB untuk mencari pepijat dalam program ini.
Saya berlari program ini lebih awal dengan Semak 50, dan saya mendapat satu berkerut.
Semua ia wujud, ia disusun, ia lulus banyak ujian, tetapi untuk
sebab-sebab tertentu, ia tidak lulus kelima ujian, menukarkan BARFOO, semua topi, ke dalam
E-D-U-I-R-R, semua topi, menggunakan tiga sebagai kunci.
Saya mendapat cukup dekat.
Saya mendapat kira oleh satu huruf.
Jadi ada beberapa kesilapan kecil di sini.
Saya telah melihat melalui kod saya.
Saya tidak dapat mencari penyelesaiannya.
Mudah-mudahan, anda semua boleh membantu saya memikirkan apa pepijat ini.
>> Jadi, itu kesilapan kita mencari.
Mari kita bergerak ke dalam GDB.
Sekali lagi, saya telah menjalankan GDB. / Caesar, jadi sekarang kita berada dalam GDB.
Dan apa yang pertama perkara yang perlu saya lakukan?
Saya baru sahaja memasuki GDB.
Seseorang memberikan saya yang baik arahan untuk masuk.
>> PELAJAR: Cuti utama.
>> JASON Hirschhorn: Cuti utama.
Hebat.
Mari kita menaip yang masuk
Anda semua boleh menonton di sini atau mengikuti bersama-sama pada komputer anda.
Cuti utama, dan anda akan melihat titik pulang telah ditetapkan pada -
ia memberi saya beberapa alamat ingatan pelik, dan ia juga memberikan saya nombor baris.
Jika saya melihat kembali fail ini, Saya akan menyedari utama yang
berlaku pada line 21.
Apakah yang perlu saya berjalan akan datang?
Adakah program saya berjalan?
No
Jadi apa yang perlu saya jalankan akan datang?
>> PELAJAR: Run.
>> JASON Hirschhorn: Run.
Sekiranya saya hanya menjalankan jangka, atau jika Saya menambah beberapa perkara lain dalam?
>> PELAJAR: Main dengan hujah.
>> JASON Hirschhorn: Main dengan hujah-hujah arahan.
Dan kerana saya debugging yang tertentu kes, saya boleh masuk yang
hujah baris arahan.
Jadi saya akan larikan tiga, yang, sekali lagi, output yang saya dapat dari Daftar 50.
Program bermula.
Kita melalui beberapa baris.
Anda sekarang akan melihat bahawa kita berada di garis 21.
Bagaimana saya tahu bahawa kita berada di line 21?
Kerana jika anda melihat ke kiri tetingkap terminal saya,
ia berkata line 21.
Dan yang memberikan saya, sebenarnya, kod yang di garisan 21.
Jadi saya misspoke lebih awal.
Utama sebenarnya bukanlah di garisan 21.
Utama adalah beberapa baris di atas 21.
Tetapi pada line 21, itu mana kita pecah.
Ini sejajar kod mempunyai belum dilaksanakan.
Yang penting.
Garis yang anda lihat tidak mempunyai dilaksanakan yet.
Itulah baris berikutnya kod anda kira-kira untuk melaksanakan.
>> Jadi garis depan, kerana anda semua mungkin biasa dengan, adakah ini
keadaan memeriksa untuk melihat jika saya mempunyai memasuki satu hujah baris arahan.
Dan untuk i, apa yang kedua sebahagian daripada yang lakukan?
Apakah untuk i?
>> PELAJAR: Menukar kepada integer.
>> JASON Hirschhorn: Maaf?
>> PELAJAR: Ia mengubah hujah untuk integer.
>> JASON Hirschhorn: Jadi untuk i perubahan Arg v1 daripada rentetan untuk integer.
Dan kemudian apa yang ia memeriksa?
>> PELAJAR: Jika terdapat satu saat hujah baris arahan, selain
daripada menjalankan program ini.
>> JASON Hirschhorn: Dan apa yang separuh kedua ini
Ungkapan Boolean memeriksa?
Bahagian di sini, untuk i?
>> PELAJAR: Jika ia negatif.
>> JASON Hirschhorn: Pastikan apa?
>> PELAJAR: Memastikan ia adalah, sebenarnya, positif.
>> JASON Hirschhorn: Tepat sekali.
Ini memeriksa untuk melihat jika ia negatif, dan jika ia adalah negatif, saya
mempunyai rasa line kekuatan seterusnya akan saya menjerit pada pengguna.
Jadi mari kita melanda akhir untuk melaksanakan baris ini.
Kami tidak melihat baris yang menyatakan bahawa kalian mungkin dijangka menyaksikan menjerit di
pengguna dan kemudian kembali, kerana baris ini tidak melaksanakan.
Saya memasuki 3.
Jadi saya, sebenarnya, masukkan dua arahan argumen baris, dan 3 adalah
lebih besar daripada sifar.
Oleh itu, kita melihat garis itu, kami dilaksanakan, tetapi kita tidak melangkah
di dalam jika keadaan.
>> Jadi sekarang, akan datang, saya melihat saya menetapkan utama int sama untuk i ARG v1.
Jadi itulah saya mewujudkan utama berubah-ubah.
Jadi jika saya mencetak utama sekarang, kerana yang membolehkan anda untuk melihat
nilai dalam pembolehubah, utama sama 47.
Itu yang pelik, tetapi sudah tentu, itu kerana saya tidak mempunyai
dilaksanakan selaras yang belum.
Jadi sekarang jika saya memukul n, melaksanakan garis itu, dan melakukan utama cetak, kunci akan sama dengan 3,
iaitu apa yang kita mengharapkan ia sama.
>> Jadi sekali lagi, dalam GDB, garis anda melihat anda belum dilaksanakan lagi.
Anda perlu memukul n atau s atau nombor arahan lain untuk benar-benar
melaksanakan garis itu.
Utama cetak.
Utama di 3.
Setakat ini, begitu baik.
String adalah teks biasa.
Mari kita melaksanakan garis itu.
Saya mendapat rentetan dari pengguna.
>> Mari kita lihat dalam Semak saya 50, saya memasukkan BARFOO semua topi, jadi
itulah yang saya akan masuk.
Jika saya kini mencetak teks biasa.
Anda akan melihat ia sama rentetan.
Ia memberikan saya beberapa perenambelasan pelik lain nombor, tetapi ia dalam
fakta mengatakan bahawa string saya adalah BARFOO.
Jika saya mahu melihat apa yang utama di equaled ketika ini, bagaimana saya boleh menyemak utama?
>> PELAJAR: utama Cetak.
>> JASON Hirschhorn: kunci Cetak, betul-betul.
Dan sebenarnya, ada jalan pintas.
Jika anda bosan dengan menaip cetak, anda hanya boleh menaip p.
Jadi p utama melakukan perkara yang tepat sama.
Dan sekali lagi, saya melihat ia sama 3.
>> Jika saya mahu mengetahui apa yang kedua-dua utama dan BARFOO equaled pada masa yang sama
tetapi saya bosan menaip setiap satu daripada individu, saya
boleh taip maklumat penduduk tempatan.
Yang memberikan saya setaraf utama 3.
Teks kosong sama BARFOO.
Ia juga memberi saya dua perkara ini pelik di bahagian atas, pembolehubah ini saya dan
ini n berubah-ubah.
>> Mereka sebenarnya yang sedia ada dalam program utama saya.
Kami tidak temui mereka lagi, tetapi sebagai pratonton, orang-orang
wujud dalam saya untuk gelung.
Jadi sekarang, mereka menyamai beberapa pelik nombor kerana mereka tidak
dimulakan lagi, tetapi mereka masih wujud dalam ingatan, jadi mereka hanya ditetapkan
untuk beberapa nilai sampah.
Tetapi kita lihat utama di dataran teks di sana.
>> Jadi saya akan melaksanakan garis ini, line 34, untuk gelung.
Kita akan melompat ke dalam untuk gelung dengan memukul n.
Dan kita di dalam gelung.
Kami semasa mendaftar pertama kami.
Dan sekali lagi, ini jenis harus melihat biasa kepada anda kerana ini adalah
Program Caesar yang ditulis, tetapi sekali lagi, mempunyai beberapa jenis pepijat.
>> Dan sekarang jika saya lakukan maklumat penduduk tempatan, kerana saya dalam yang untuk gelung, anda akan melihat
bahawa saya sama dengan sifar, seperti yang kita harapkan.
Itulah yang kita menetapkannya untuk dan dimulakan ia dalam untuk gelung.
n sama 6.
Yang juga masuk akal kerana kita menetapkan kepada strlen daripada teks biasa.
Jadi yang saya suka lakukan penduduk tempatan maklumat atau cetak kepada pembolehubah sering memastikan bahawa
semuanya selalu apa Saya mengharapkan ia sama.
Dalam kes ini, segala-galanya adalah apa yang saya mengharapkan ia sama.
>> Jadi mari kita mulakan bergerak melalui ini untuk gelung.
Garis Saya kini di adalah talian 36, jika kosong teks i adalah lebih besar daripada dan dataran
teks i adalah kurang daripada atau sama dengan z.
Saya tahu masalah saya bukan dengan pertama saya surat, ia dengan huruf kedua.
Jika kita melihat kembali Semak 50, B pergi ke E halus.
Saya mengambil A dan meninggalkannya sebagai A, tidak menukar kepada D. Jadi
sesuatu yang salah dengan surat kedua.
Jadi, saya akan bergerak terdapat dalam kedua.
>> Tetapi jika saya mahu untuk memeriksa apa yang nyata teks saya equaled dalam khusus ini
kes, saya fikir ia harus apa?
Apakah yang perlu saya teks biasa sama dalam ini pusingan pertama melalui untuk gelung?
>> PELAJAR: Zero?
>> JASON Hirschhorn: Teks Plain saya?
Jadi ia perlu modal B. I, sudah tentu, sama dengan sifar, tetapi teks biasa
kurungan sifar kurungan tertutup sama B kerana tali, seperti yang kita lihat minggu lepas,
adalah pelbagai, jadi kita mendapat watak pertama dari itu.
Jadi sekali lagi, jika saya dicetak teks biasa daripada Saya, saya, sebenarnya, mendapatkan watak
B. Dan itu kemas, bukan?
Saya tidak benar-benar mempunyai I. teks biasa Itu bukan salah satu pembolehubah saya menetapkan
atau dimulakan, tetapi anda boleh mencetak keluar pelbagai seluruh perkara
jika anda ingin.
>> Tetapi mari kita bergerak melalui.
Jika teks biasa saya adalah lebih besar daripada A dan teks biasa saya adalah kurang daripada atau sama dengan
Z, yang jelas adalah benar kerana kita mempunyai B. modal saya akan menjalankan
beberapa arahan di atasnya.
Kami melihat matematik minggu lepas, jadi kita akan mengambilnya untuk diberikan bahawa ia berfungsi
betul mengikut Semak 50.
>> Ini pendakap kerinting, yang pertama menunjukkan bahawa saya telah keluar jika
syarat, yang kedua menunjukkan bahawa saya keluar untuk gelung.
Dan sekarang apabila saya mencecah Seterusnya, kita akan melihat kami kembali di untuk gelung lagi.
Kita akan melalui untuk gelung lagi.
Mari kita sebenarnya melangkah ke kedua lelaran untuk gelung dan jenis
penduduk tempatan info.
>> Jadi kita dalam lelaran kedua gelung untuk kami.
Saya sama 1, yang kita harapkan.
N bersamaan 6, yang kita harapkan.
Sama Penting 3, yang kita harapkan.
Dan teks biasa, anda akan melihat, sama EARFOO sekarang, bukan lagi kerana BARFOO
dalam lelaran kami sebelum ini, B adalah ditukar kepada modal E. Jadi kita kira-kira
menghadapi masalah ini, jadi ini adalah di mana kita akan
menyelam ke dalam debugging itu.
Tetapi adakah sesiapa mempunyai apa-apa soalan mengenai apa yang kami lakukan setakat ini?
Hebat.
>> Oleh itu, kita kira-kira untuk melaksanakan ini jika syarat, kurungan teks biasa saya menutup
kurungan lebih besar daripada A dan teks biasa saya kurang daripada atau sama dengan Z. Tetapi sebelum
Saya pergi ke dalam itu, kerana ini adalah di mana Saya tahu kesilapan saya adalah, saya ingin menunjukkan
keluar teks biasa daripada I. Jadi mari kita meletakkan mencetak.
Ia menyamai watak A, supaya Nampaknya setakat ini, semuanya berjalan dengan lancar dan baik.
>> Jadi saya mengharapkan baris ini setiap logik saya, talian ini harus benar.
Ia adalah satu huruf.
Tetapi jika saya memukul n, kami sedar bahawa ini talian, sebenarnya, tidak melaksanakan.
Saya melompat ke lagi jika.
Mengapa yang berlaku?
>> PELAJAR: Kerana anda mempunyai keadaan anda daripada teks biasa adalah lebih besar
daripada A, tidak sama atau lebih daripada.
>> JASON Hirschhorn: Jadi saya terpaksa teks biasa saya I lebih besar daripada A, tidak lebih besar
daripada atau sama dengan.
Jadi jelas, modal A tidak mencetuskan ini jika keadaan, dan kami lakukan
tidak melangkah ke dalamnya, dan kami lakukan tidak peralihan perlu.
Jadi itu sahaja, sebenarnya.
Saya menemukan bug saya.
Saya boleh kembali dalam fail sumber saya, mengubahnya, dan mengemaskini dan
menjalankan Semak 50 lagi.
>> Tetapi kita akan melihat, hanya untuk pedagogi ini demi, jika aku berterusan.
Lain jika tidak melaksanakan sama ada, tetapi apa sebaliknya sama adalah arahan
yang tidak berubah.
Jadi ia tidak berubah sama sekali, dan jika saya mencetak teks biasa di sini, kita akan melihat akan
melalui itu untuk gelung tidak, sebenarnya, menukar watak kedua di semua.
Ia masih A. modal
>> Jadi sekali lagi, kita debugged kesilapan kita.
Kami menyedari bahawa terdapat beberapa logik hilang.
Dan kita debugged ia lebih awal daripada masa sebelum sebenarnya melaksanakan garis itu,
tetapi anda akan melihat kita hanya mempunyai Seterusnya melanda dan melompat dengan lain jika,
yang bermakna bahawa jika keadaan adalah tidak benar.
Kami tidak, sebenarnya, dapatkan hasil yang kita dijangkakan.
Jadi, kita mungkin telah digesa, mempunyai kita tidak begitu bijak, untuk melihat
bahawa jika keadaan dan memeriksa jika, sebenarnya, keadaan kita perlu menilai untuk
benar dalam konteks semasa.
>> Sekian sahaja untuk debugging program ini.
Adakah sesiapa mempunyai apa-apa soalan?
Apa perintah boleh saya mencecah berhenti GDB?
Q. Dan kemudian saya akan digesa, berhenti juga?
Ya atau tidak.
Saya akan melanda ya, dan saya akan telah berhenti GDB.
>> Sehingga adalah buku asas cepat untuk GDB.
Sebenarnya, dalam senario yang sebenar, Saya melakukan ini pada waktu pejabat.
Saya GDBed program ini tepat pada waktu pejabat dengan pelajar.
Dan jika kita kembali kepada perintah-perintah kami melihat sebelum ini, kami menggunakan rehat utama, pertama
perkara yang kita lakukan.
Kami menggunakan jangka dengan hujah-hujah baris arahan, Perkara kedua yang kita lakukan.
Kami menggunakan seterusnya banyak untuk bergerak kami melalui talian.
Dan sekali lagi, versi pendek daripada seterusnya adalah n.
Itulah dalam kurungan warna kelabu pada slaid.
>> Kami tidak menggunakan langkah, tetapi kita tidak semestinya perlu untuk kes ini.
Tetapi kita mungkin menggunakannya dalam sedikit kemudian pada hari ini jika kita debugging, untuk
Sebagai contoh, carian binari binari apabila carian yang dipanggil dalam yang berasingan
fungsi tetapi ada beberapa kesilapan dengannya.
Kami akan mahu untuk melangkah ke panggilan ke carian binari dan
sebenarnya debug ia.
Senaraikan kami tidak menggunakan sama ada kerana kita mempunyai rasa yang baik kod kami, tetapi jika saya
tidak mahu mendapatkan rasa kod apa yang saya adalah sekitar, saya hanya boleh menggunakan senarai.
>> Cetak kita digunakan, penduduk tempatan maklumat kita digunakan.
Teruskan kita tidak perlu untuk digunakan dalam ini kes, baik yang kita perlu menggunakan
melumpuhkan, tapi kami tidak menggunakan berhenti.
Sekali lagi, ini 10 arahan, amalan mereka.
Jika anda memahami ini 10 arahan, anda perlu ditetapkan untuk debugging sebarang
mengeluarkan dengan GDB.
>> Oleh itu, kita kira-kira untuk pergi, sekali lagi, kepada crux seksyen hari ini, akan lebih
ini pemilihan dan pencarian algoritma.
Sebelum kita berbuat demikian, sekali lagi, apa-apa soalan, komen, kebimbangan untuk GDB?
Begitu juga semua orang akan menggunakan GDB bukannya printf?
Jadi semua orang, demi lamanya ini, semua orang mengangguk-angguk kepala mereka betul
sekarang, jadi saya akan melihat anda pada waktu pejabat dan semua TFS akan melihat anda dan
mereka akan berkata, menunjukkan saya bagaimana untuk menggunakan GDB, dan anda akan dapat
untuk menunjukkan kepada mereka, bukan?
Jenis?
Mungkin mudah-mudahan.
Sejuk.
>> Jadi, kita akan bergerak ke pemilihan dan pencarian.
Anda akan melihat saya mempunyai senarai sudah disusun bagi kami, tetapi itu tidak akan
untuk kes sentiasa.
Jadi dalam masalah yang ditetapkan spesifikasi untuk masalah menetapkan tiga, anda mempunyai seluar pendek
bahawa anda boleh menonton, dan ia sebenarnya meminta anda untuk menonton mereka seluar pendek.
Juga pada kuliah minggu lepas, kami pergi ke banyak algoritma ini, jadi saya
tidak akan menghabiskan masa di dalam kelas akan lebih algoritma ini lagi atau lukisan
gambar untuk bagaimana algoritma bekerja.
Sekali lagi, maklumat yang anda boleh menonton semula kuliah, atau maklumat yang
ditangkap cemerlang pada seluar untuk carian ini, semua
yang boleh didapati di cs50.net.
>> Jadi,, apa yang kita akan lakukan adalah menulis program-program ini.
Kami mempunyai satu segi, model mental, bagaimana mereka bekerja, dan sebagainya apa yang kita akan
lakukan adalah kod mereka untuk sebenar.
Kami akan menjadikan model mental, gambar itu, jika anda akan, ke dalam
kod sebenar.
Dan jika anda sedikit keliru atau berjerebu kepada model mental, saya benar-benar
memahami.
>> Kami tidak sebenarnya akan melompat ke kod merta.
Oleh itu, sambil segera ini dalam slaid ini meminta anda untuk kod carian binari, dan
sebenarnya, versi lelaran daripada carian binari, perkara pertama yang saya
benar-benar mahu anda lakukan adalah menulis beberapa kod pseudo.
Jadi, anda mempunyai model mental ini bagaimana kerja-kerja carian binari.
Keluarkan sehelai kertas jika anda mempunyai kita sedia ada, atau membuka
editor teks, dan saya suka semua orang untuk menulis.
Mengambil masa empat minit untuk menulis kod pseudo untuk carian binari.
>> Sekali lagi, berfikir tentang bahawa model mental.
Saya akan datang di sekitar jika anda mempunyai soalan dan kita boleh menarik gambar keluar.
Tetapi pertama, sebelum kita mula pengaturcaraan, Saya ingin menulis
kod pseudo untuk carian binari jadi apabila kita menyelam dalam, kami mempunyai beberapa arahan yang
di mana kita harus pergi.
>> PELAJAR: Bolehkah kita mengambil alih pelbagai nilai-nilai kita sudah disusun?
>> JASON Hirschhorn: Jadi untuk carian binari untuk bekerja - persoalan yang bagus - anda
perlu mengambil dalam disusun pelbagai nilai-nilai.
Jadi menganggap ia akan berfungsi.
Kami akan kembali ke slaid ini.
Anda akan melihat ungu fungsi pengakuan adalah bool int binary_search
nilai, nilai-nilai int, int n.
Ini harus kelihatan biasa jika anda telah sudah menghampiri atau mendapat anda
tangan kotor dengan masalah yang ditetapkan.
>> Tetapi itu akuan fungsi anda.
Sekali lagi, tidak perlu bimbang tentang yang banyak pada masa ini.
Apa yang saya benar-benar mahu anda lakukan ialah mengambil empat minit untuk binari kod pseudo
mencari, dan kemudian kami akan pergi atas bahawa sebagai satu kumpulan.
Dan saya akan datang di sekitar.
Jika anda mempunyai soalan, berasa bebas untuk mengangkat tangan anda.
>> Mengapa tidak anda mengambil dua minit lagi selesaikan kod pseudo yang?
Saya tahu ini mungkin kelihatan tidak masuk akal yang kita menghabiskan begitu banyak masa pada
sesuatu yang tidak walaupun sebenarnya dalam C, terutamanya bagi lebih
algoritma mencabar dan masalah set yang kita perlu memikirkan,
bermula pada kod pseudo tidak membimbangkan mengenai sintaks, hanya bimbang tentang
logik, adalah amat membantu.
Dan dengan cara itu, anda tidak menyelesaikan dua masalah yang amat sukar sekali.
Anda hanya memberi tumpuan kepada logik, dan maka anda bergerak ke dalam sintaks.
>> OK.
Mari kita mulakan akan melalui kod pseudo yang.
Saya telah menulis di sini, binari carian kod pseudo.
Kita harus menulis ini pada menaiki bersama-sama.
Atau saya akan menulis dan anda akan memberi saya arahan yang saya perlukan.
Jadi sesiapa sahaja boleh memberi saya yang pertama garis kod pseudo yang anda
menulis untuk carian binari?
Ya, Annie?
>> PELAJAR: Walaupun panjang senarai adalah lebih besar daripada sifar.
>> JASON Hirschhorn: Walaupun panjang daripada senarai yang lebih besar daripada sifar.
Dan sekali lagi, kita lihat beberapa C-cari perkara sintaksis di sini.
Tetapi sebahagian besar daripada ini adalah dalam bahasa Inggeris.
Adakah sesiapa mempunyai apa-apa garisan mereka meletakkan sebelum ini dalam pseudo-kod mereka?
>> PELAJAR: Dapatkan satu pameran daripada disusun nombor.
>> JASON Hirschhorn: Anda menulis "mendapatkan pelbagai nombor disusun. "Per
pengisytiharan fungsi, kita akan lulus pelbagai nombor disusun.
>> PELAJAR: [didengar].
>> JASON Hirschhorn: Jadi kita akan mempunyai.
Tetapi ya, jika kita tidak mempunyai itu, kami perlu menyusun pelbagai kami
nombor, kerana carian binari hanya berfungsi pada tatasusunan disusun.
Jadi sementara panjang senarai sama dengan sifar, saya akan dimasukkan ke dalam beberapa pendakap kerinting
supaya ia kelihatan sedikit lebih seperti C. Tetapi ketika, seolah-olah map ke
manakala gelung, jadi di dalam semasa ini gelung apa yang kita perlu
lakukan untuk carian binari?
>> Orang lain yang tidak memberikan saya suatu menjawab lagi tetapi yang menulis ini?
>> PELAJAR: Pergi ke tengah senarai.
>> JASON Hirschhorn: Tom.
Pergi ke tengah senarai.
Dan soalan susulan, apa kita buat sekali kita di
pertengahan senarai?
>> PELAJAR: Adakah cek sama ada itu nombor yang anda cari.
>> JASON Hirschhorn: Cemerlang.
Pergi pertengahan senarai dan memeriksa jika nilai kami ada -
hebat.
Adakah sesiapa mempunyai apa-apa lagi yang berbeza daripada ini?
Itu betul-betul betul.
>> Perkara pertama yang kita lakukan dalam carian binari adalah pergi ke tengah-tengah senarai dan
menyemak untuk melihat jika nilai kami ada.
Jadi saya menganggap jika nilai kita ada, apa yang kita lakukan?
>> PELAJAR: Kita kembali sifar [didengar].
>> JASON Hirschhorn: Ya, jika kita nilai di sana, kami mendapati ia.
Oleh itu, kita boleh memberitahu beberapa cara, bagaimanapun ini fungsi ditakrifkan, kami memberitahu pengguna
kami mendapati ia.
Jika tidak ada, walaupun, itu di mana ini mendapat rumit.
Jadi, jika ia tidak ada, orang lain yang bekerja pada carian binari atau
telah idea sekarang, apa yang kita lakukan?
>> PELAJAR: Soalan.
>> JASON Hirschhorn: Ya?
>> PELAJAR: Adakah array sudah disusun?
>> JASON Hirschhorn: Ya, kami menganggap array sudah disusun.
>> PELAJAR: Jadi maka anda perlu menyemak jika nilai yang anda lihat adalah lebih besar daripada
nilai yang anda mahu, anda boleh bergerak ke tengah separuh yang lain.
>> JASON Hirschhorn: Jadi jika pertengahan senarai adalah lebih besar daripada apa yang kita
cari, maka kita apa?
Kami bergerak di mana?
>> PELAJAR: Anda mahu berpindah ke separuh daripada senarai dengan
nombor yang lebih rendah daripada itu.
>> JASON Hirschhorn: Jadi kita akan panggilan yang sebelah kiri.
Jadi jika pertengahan adalah lebih besar, kita boleh mencari separuh kiri senarai.
Dan kemudian oleh carian, apa yang yang saya maksudkan dengan carian?
>> PELAJAR: [didengar].
>> JASON Hirschhorn: Kami pergi ke tengah-tengah.
Kita sebenarnya mengulangi perkara ini.
Kita kembali melalui gelung sementara kami.
Saya akan memberikan yang terakhir -
lagi, jika, pertengahan adalah kurang daripada apa yang kita, apa yang kita lakukan di sini?
>> PELAJAR: Pergi ke kanan.
>> JASON Hirschhorn: Search kanan.
Ini kelihatan baik, tetapi adakah sesiapa mempunyai apa-apa yang kita mungkin hilang atau
apa sahaja yang anda meletakkan dalam pseudo-kod anda?
Jadi ini adalah apa yang kita ada setakat ini.
Walaupun panjang senarai adalah lebih besar daripada sifar, kita akan pergi
ke tengah senarai dan memeriksa jika nilai kita di sana.
>> Jika tengah-tengah adalah lebih besar, kita akan mencari kiri, lain jika tengah-tengah adalah
kurang, kita akan mencari kanan.
Oleh itu, kita semua mempunyai beberapa kebiasaan dengan dengan syarat yang kami gunakan dalam sains komputer
dan alat-alat yang kita ada.
Tetapi anda sudah akan melihat kami bercakap dalam bahasa Inggeris, tetapi kami mendapati
banyak perkara yang seolah-olah map ke alat yang kita ada dalam pengekodan kit alat kami.
Jadi hak off kelawar, kita tidak akan sebenarnya kod yet.
>> Apa yang kita lihat di sini dalam bahasa Inggeris yang peta kepada perkara yang kita boleh menulis dalam C?
>> PELAJAR: Walaupun.
>> JASON Hirschhorn: Walaupun.
Jadi selama ini di sini peta ke apa?
>> PELAJAR: A gelung sementara.
>> JASON Hirschhorn: A gelung sementara?
Atau mungkin lebih amnya, gelung.
Kami mahu melakukan sesuatu berulang.
Jadi, kita akan kod gelung.
Dan kita sudah tahu, kerana kita telah melakukan ini beberapa kali dan kita
mempunyai banyak contoh di luar sana, bagaimana sebenarnya untuk menulis
indeks ini untuk gelung.
Jadi yang sepatutnya menjadi agak mudah.
Kami akan dapat untuk mendapatkan bermula agak cepat.
>> Apa lagi yang kita lihat di sini?
Apa lain-lain struktur sintaks, perkara-perkara yang kita biasa dengan dalam C, kita
sudah mempunyai rasa berdasarkan fakta yang ditentusahkan kira perkataan yang kita digunakan?
Ya, Anna?
[Didengar]
hanya bergurau.
Anna, teruskan.
>> PELAJAR: Jika dan lagi.
>> JASON Hirschhorn: Jika dan yang lain - di sini.
Jadi, apa yang mereka kelihatan seperti?
>> PELAJAR: Satu jika else.
>> JASON Hirschhorn: Ya, syarat, bukan?
Oleh itu, kita mungkin perlu menulis beberapa keadaan.
Dan sekali lagi, walaupun mungkin mengelirukan pada pertama, kita biasanya mempunyai rasa yang kini
bagaimana untuk menulis syarat dan sintaks untuk keadaan.
Dan jika kita tidak, kita hanya mencari yang sintaks untuk keadaan yang, potong dan tampal
itu, kerana kita tahu kita perlu keadaan di sini.
Apa-apa perkara-perkara lain yang kita lihat peta yang ke perkara yang kita mungkin perlu lakukan dalam C?
Ya, Aleha?
>> PELAJAR: ini mungkin jelas, dengan hanya memeriksa jika
nilai sama sesuatu.
>> JASON Hirschhorn: Jadi bagaimana kita semak dan - jadi pergi ke tengah-tengah senarai
dan memeriksa jika nilai kita di sana?
Bagaimana kita melakukannya dalam C?
Apa yang sintaks untuk itu?
>> PELAJAR: Sama, sama.
>> JASON Hirschhorn: Sama, sama.
Jadi semak ini mungkin akan menjadi setaraf, sama.
Oleh itu, kita akan tahu kita perlu tempat itu.
Dan sebenarnya, hanya dalam menulisnya, kita melihat perkara-perkara lain.
Kami akan perlu melakukan beberapa operator perbandingan di sana -
hebat.
Jadi ia sebenarnya kelihatan seperti, oleh dan yang banyak, kami telah tidak ditulis
perkataan kod C yet.
Tetapi kita mendapat model mental turun melalui ceramah-ceramah dan orang-orang seluar pendek.
>> Kami menulis pseudo-kod sebagai satu kumpulan.
Dan sudah, kami mempunyai 80% jika tidak 90% daripada apa yang kita perlu lakukan.
Sekarang, kita hanya perlu memberi kod ia, yang sekali lagi, adalah
masalah bukan remeh untuk menyelesaikan.
Tetapi sekurang-kurangnya kita terjebak kepada logik.
Sekurang-kurangnya sekarang apabila kita pergi ke waktu pejabat, Yang boleh saya katakan, saya tahu apa yang saya perlukan
lakukan, tetapi anda boleh mengingatkan saya tentang sintaks?
Atau walaupun waktu pejabat diasak, anda boleh Google untuk sintaks, bukan
daripada tersangkut pada logik.
>> Dan sekali lagi, dan bukannya cuba untuk menyelesaikan logik dan masalah sintaks semua
sekaligus, ia sering lebih baik untuk memecahkan kedua-dua masalah sukar keluar ke
dua yang lebih terkawal dan melakukan pseudo-kod pertama dan kemudian kod di C.
Jadi mari kita lihat apa yang saya lakukan untuk pseudo-kod di hadapan masa.
>> Walaupun panjang senarai adalah lebih besar daripada sifar, melihat tengah-tengah
senarai.
Jika nombor didapati kembali benar, lagi jika nombor yang lebih tinggi, carian kiri.
Lain jika bilangan yang lebih rendah, carian betul, pulangan palsu.
Jadi yang kelihatan hampir sama jika tidak hampir sama dengan apa yang kita menulis.
Sebenarnya, Tom, apa yang anda kata pertama, melanggar pertengahan senarai dan jika
bilangan didapati ke dalam kedua-dua kenyataan sebenarnya apa yang saya lakukan.
>> Saya menggabungkan mereka di sana.
Saya sepatutnya mendengar anda kali pertama.
Jadi itu adalah pseudo-kod yang kita ada.
Jika anda ingin sekarang, maaf, pergi menyokong kepada masalah awal kami.
Mari kita kod binary.c.
Jadi melaksanakan versi lelaran daripada carian binari menggunakan berikut
pengisytiharan fungsi.
>> Dan anda tidak perlu untuk menyalin ke bawah sahaja lagi.
Saya sebenarnya akan membuka sehingga di sini binary.c.
Jadi ada akuan fungsi di tengah-tengah skrin.
Dan anda akan melihat saya mengambil pseudo-kod dari di pihak saya, tetapi hampir sama
dengan apa yang kita menulis, dan meletakkan bahawa dalam untuk anda.
Jadi sekarang, mari kita mengambil masa lima minit kod fungsi ini.
>> Dan sekali lagi, jika anda mempunyai sebarang soalan, mengangkat tangan anda, beritahu saya, saya akan
datang sekitar.
>> PELAJAR: [didengar].
>> JASON Hirschhorn: Jadi saya mengambil binari yang carian definisi di
atas, di laluan 12.
Itulah yang saya mendapat untuk slaid saya.
Dan kemudian semua ini pseudo-kod saya copy dan ditampal daripada slaid,
slaid pseudo-kod.
Saya masih tidak mendengar [didengar].
>> Jadi jika anda telah selesai anda perlaksanaan, saya mahu untuk memeriksa.
Saya melalui e-mel anda fail helpers.h yang sebelum ini di dalam kelas ini.
Dan ia akan menjadi boleh didapati dalam talian dan juga untuk muat turun untuk orang menonton
seksyen kali ini ditangguhkan.
Dan saya hanya menggunakan pengedaran generik kod dari pset3.
Jadi saya mengambil find.C, menggunakan fail helpers.h saya bukannya fail helpers.h yang
yang yang diberikan dalam kod pengedaran.
>> Dan saya terpaksa membuat satu perubahan lain dalam find.C bukannya memanggil hanya semata-mata
carian, hubungi binary_search.
Jadi jika anda mahu menguji kod anda, tahu bahawa itu adalah bagaimana untuk melakukannya.
Malah, apabila kita akan menjalankan kod ini sekarang, saya hanya membuat satu salinan
direktori pset3 saya, sekali lagi, bertukar keluar fail pembantu dan kemudian dibuat bahawa
berubah dalam find.C untuk memanggil binary_search bukan sekadar mencari.
>> JASON Hirschhorn: Ya.
Anda mempunyai soalan?
>> PELAJAR: Tidak mengapa.
>> JASON Hirschhorn: Tidak perlu risau.
Nah, mari kita bermula.
Kami akan memberi kod ini sebagai satu kumpulan.
Satu nota yang lain.
Sekali lagi, ini adalah, dengan mudah ditukar dalam untuk Set Masalah Tiga.
Saya mempunyai fail helpers.h saya yang, bukan daripada helpers.h yang kami diberikan,
mengisytiharkan carian binari, gelembung jenis, dan jenis pemilihan.
Dan dalam find.c anda akan notis pada baris, apa yang itu, talian 68, kita panggil binari
mencari bukannya carian.
Jadi sekali lagi, kod yang boleh didapati dalam talian atau kod yang anda
mewujudkan sekarang mudah ditukar dalam untuk p menetapkan 3 untuk memeriksa.
>> Tetapi pertama, mari kita kod carian binari.
Akuan Fungsi kami, kita kembali bool a.
Kami mengambil integer dipanggil nilai.
Kami mengambil pelbagai integer dipanggil nilai-nilai, dan kami mengambil n menjadi
saiz array.
Pada baris 10, di sini, saya mempunyai tajam termasuk stdbool.h.
Adakah sesiapa tahu mengapa yang terdapat di sana?
Jadi apakah yang baris kod lakukan?
>> PELAJAR: Ia membolehkan anda untuk menggunakan jenis pulangan bool.
>> JASON Hirschhorn: Tepat sekali.
>> PELAJAR: Atau ia perpustakaan yang membolehkan menggunakan jenis pulangan bool.
>> JASON Hirschhorn: Jadi mendadak termasuk talian stdbool.h memberikan saya beberapa
definisi dan pengisytiharan untuk perkara-perkara bahawa saya dibenarkan untuk digunakan dalam
perpustakaan ini.
Jadi di kalangan mereka mengatakan bahawa ada jenis ini dipanggil bool, dan ia boleh
benar atau palsu.
Jadi itulah yang selaras yang tidak.
Dan jika saya tidak mempunyai talian itu, saya akan mendapat masalah untuk menulis ini
perkataan di sini, bool, di sana.
Tepat betul.
Jadi saya perlu bahawa dalam kod ini.
OK.
Jadi ini, sekali lagi, adalah lelaran versi, bukan satu rekursif.
Oleh itu marilah kita memulakan.
>> Mari kita mulakan dengan ini pertama baris kod pseudo.
Dan mudah-mudahan, kita akan - atau tidak diharapkan.
Kita akan pergi di sekitar bilik.
Kami akan pergi baris demi baris, dan saya akan membantu anda memikirkan garis yang kita perlukan
untuk menulis pertama.
Jadi sementara panjang senarai adalah lebih besar daripada sifar.
Mari kita mulakan di bahagian hadapan.
Apa garis yang saya harus tulis di sini, dalam kod?
>> PELAJAR: Walaupun kurungan n lebih besar daripada 0.
>> JASON Hirschhorn: Walaupun n besar daripada 0.
Jadi n adalah saiz senarai, dan kami memeriksa jika -
>> [Suara INTERPOSING]
>> JASON Hirschhorn: - maaf?
>> PELAJAR: Bagaimana kita tahu bahawa n adalah saiz senarai?
>> JASON Hirschhorn: Maaf.
Spesifikasi Serangga, carian dan jenis fungsi yang anda perlukan untuk menulis,
n adalah saiz senarai.
Saya terlupa untuk menerangkan bahawa di sini.
Tetapi ya. n adalah saiz senarai, dalam kes ini.
Jadi sementara n lebih besar daripada 0.
OK.
Yang boleh membuktikan sedikit bermasalah walaupun, jika perkara pergi.
Kerana kita akan terus untuk mengetahui Saiz senarai sepanjang ini
fungsi, tetapi mengatakan kita mulakan dengan pelbagai 5 integer.
Dan kita melalui dan kami telah kini mengecil ke bawah untuk
pelbagai 2 integer.
Yang 2 integer ialah?
Saiz adalah 2 sekarang kita mahu melihat, tetapi yang 2 itu?
Adakah ini masuk akal, soalan itu?
>> OK.
Saya akan meminta sekali lagi.
Jadi kita mulakan dengan pelbagai ini 5 integer dan n sama dengan 5, bukan?
Kami akan berjalan melalui sini.
kita mungkin akan mengubah saiz, betul, seperti yang berlaku pada.
Iaitu apa yang kita katakan kita mahu lakukan.
Kita tidak mahu untuk mencari perkara yang penuh lagi.
Jadi mengatakan kita mengubahnya dengan 2.
Kami mengambil separuh senarai itu ganjil.
Jadi hanya memilih 2.
Jadi sekarang n bersamaan 2.
Saya memohon maaf untuk golongan miskin penanda memadam kering.
Betul?
Dan kita mencari melalui senarai lagi dengan senarai saiz 2.
Nah, pelbagai kami masih saiz 5.
Kita katakan kita hanya mahu mencari 2 tempat di dalamnya.
Jadi yang 2 tempat adalah mereka?
>> Adakah ini masuk akal?
Adakah mereka yang ditinggalkan 2 tempat?
Adakah mereka betul 2 tempat ini?
Adakah mereka tengah 2 tempat?
Kami telah dipecahkan masalah ke bawah, tetapi kita sebenarnya tidak tahu yang mana sebahagian daripada
masalah kami masih melihat, hanya dengan mempunyai ini 2 pembolehubah.
Oleh itu, kita perlu sedikit lebih kemudian, manakala n lebih besar daripada 0.
Kita perlu tahu di mana yang n adalah dalam array sebenar kami.
>> Jadi adakah sesiapa mempunyai menukar ke garisan ini?
Kebanyakan garis ini adalah sempurna betul.
Adakah terdapat tambahan lain?
Bolehkah kita menukar sesuatu yang keluar untuk n untuk membuat baris ini sedikit lebih baik?
Mm-hm?
>> PELAJAR: Bolehkah anda memulakan pembolehubah seperti panjang untuk n yang akan kemudiannya digunakan
kemudian dalam fungsi?
>> JASON Hirschhorn: Jadi memulakan panjang berubah-ubah untuk n,
dan kami menggunakan yang kemudian?
Tetapi kita hanya mengemaskini panjang dan kita masih menghadapi masalah ini di mana kita
mengurangkan panjang masalah kita, tetapi kita tidak tahu di mana, sebenarnya,
panjang yang dipetakan.
>> PELAJAR: Bukankah yang akan berlaku kemudian apabila kamu katakan, mencari kiri,
mencari betul?
Anda akan pergi ke yang berbeza kawasan anda -
>> JASON Hirschhorn: Kami akan pergi dengan sesuatu kawasan, tetapi bagaimana kita tahu
yang pergi ke?
Jika kita hanya mempunyai pelbagai dan ini n, bagaimana kita tahu di mana untuk
pergi ke dalam array.
Di belakang, ya?
>> PELAJAR: Adakah anda mempunyai, seperti, yang lebih rendah terikat dan pembolehubah terikat atas atau
sesuatu seperti itu?
>> JASON Hirschhorn: OK.
Jadi ini adalah idea yang lain.
Bukan hanya mengesan yang saiz, kita mengesan lebih rendah dan
pembolehubah terikat atas.
Jadi bagaimana kita mengira saiz dari yang terikat dan terikat atas yang lebih rendah?
>> [Suara INTERPOSING]
>> JASON Hirschhorn: Penolakan.
Dan juga mengesan lebih rendah terikat dan terikat atas untuk memberitahu kami,
kita mencari kedua-dua?
Adakah kita mencari kedua-dua di sini?
Adakah kita mencari dua pertengahan?
Mungkin bukan dua tengah, kerana ini, sebenarnya, adalah carian binari.
Tetapi sekarang kita akan dapat untuk mendapatkan saiz, tetapi juga had array.
Pada dasarnya, jika kita mempunyai yang besar ini buku telefon, kita merobek ia pada separuh.
Kini kita tahu mana yang lebih kecil buku telefon adalah.
Tetapi kita tidak benar-benar merobek buku telefon pada separuh.
Kita masih perlu tahu di mana batas baru masalah kita adalah.
Adakah sesiapa mempunyai apa-apa soalan tentang itu?
Ya?
>> PELAJAR: Adakah ia bekerja dengan mewujudkan satu berubah-ubah, i, yang anda kemudian hanya beralih
kedudukan i berbanding dengan yang jawatan sekarang, dan panjang, n?
>> JASON Hirschhorn: Dan apa yang i?
>> PELAJAR: Seperti i menjadi seperti jenis -
Seperti anda akan memulakan i menjadi kedudukan tengah array.
Dan kemudian, jika nilai di kedudukan i dalam tengah array dalam didapati
kurang daripada nilai yang anda perlukan, sekarang i menjadi panjang array, ditambah
nilai i dibahagikan dengan 2.
Seperti, lihat, anda beralih i -
>> JASON Hirschhorn: Betul.
>> PELAJAR: - sehingga -
>> JASON Hirschhorn: Jadi saya hampir positif yang akan bekerja.
Tetapi makhluk titik, anda memerlukan dua cebisan maklumat di sini.
Anda boleh melakukannya dengan permulaan dan akhir, atau anda boleh melakukannya dengan saiz, dan kemudian
beberapa penanda.
Tetapi anda memerlukan dua keping maklumat di sini.
Anda tidak boleh mendapatkan dengan dengan hanya satu.
Adakah ini masuk akal?
>> Jadi, kita akan pergi melalui, dan kita akan melakukan [didengar]
dan mencipta beberapa penanda.
Jadi what'd anda menulis dalam kod anda?
>> PELAJAR: Saya hanya berkata int terikat satu adalah sama dengan 0.
>> JASON Hirschhorn: Mari kita panggil yang int, bermula.
>> PELAJAR: OK.
>> JASON Hirschhorn: Yang membuat rasa lebih untuk saya.
Dan?
>> PELAJAR: Saya berkata, saya rasa, Int berakhir.
>> JASON Hirschhorn: int berakhir.
>> PELAJAR: Saya rasa, n tolak 1, atau sesuatu seperti itu.
Seperti, elemen terakhir.
>> JASON Hirschhorn: Jadi anda menulis, int bermula sama dengan 0, koma bertitik, dan int
berakhir sama n tolak 1, koma bertitik.
Jadi pada asasnya, apa yang kami lakukan di sini, 0 kedudukan pertama.
Dan seperti yang kita tahu dalam tatasusunan, mereka tidak pergi sehingga n, mereka naik ke n tolak 1.
Oleh itu, kita mempunyai beberapa batasan pelbagai kami.
Dan ini batas awal berada batas-batas awal masalah kita.
OK.
Supaya bunyi yang baik.
Kemudian jika kita kembali ke baris ini, manakala panjang senarai adalah lebih besar daripada 0,
apa, daripada n, sekiranya kita masukkan ke dalam sini?
>> PELAJAR: Tulis berakhir tolak permulaan.
>> JASON Hirschhorn: Walaupun berakhir tolak bermula adalah lebih besar daripada 0?
OK.
Dan kita boleh, jika kita mahu membuat yang sedikit lebih bagus, apa yang
lagi yang kita boleh buat?
Jika kita mahu untuk membersihkan kod ini sedikit?
Bagaimana kita menyingkirkan 0?
Ini hanyalah soalan gaya.
Ia betul sekarang.
>> PELAJAR: Akhir yang tidak permulaan yang sama?
>> JASON Hirschhorn: Kita boleh buat apa?
>> [Suara INTERPOSING]
>> PELAJAR: Berakhir adalah lebih besar?
>> JASON Hirschhorn: Yeah.
Kita hanya boleh lakukan semasa berakhir adalah lebih besar daripada awal.
Betul.
Kami tambah mula sisi lain itu, dan kita tidak perlu lagi ambil 0.
Jadi ini hanya kelihatan bersih sedikit.
OK.
Oleh itu, walaupun panjang senarai adalah 0, kita menulis itu, manakala berakhir adalah lebih besar
daripada permulaan.
Kita akan dimasukkan ke dalam perlu kita pendakap kerinting, dan maka perkara pertama
kami mahu lakukan ialah melihat mereka dalam senarai sedikit.
Anda?
Bolehkah anda memberi saya -
>> PELAJAR: Jika kurungan nilai kurungan persegi -
>> JASON Hirschhorn: Jika kurungan nilai kurungan persegi.
>> PELAJAR: Akhir yang dibahagikan dengan 2.
>> JASON Hirschhorn: Berakhir?
>> PELAJAR: Saya melihat masalah dengan anda -
>> JASON Hirschhorn: OK.
Nah, melihat tengah-tengah.
Bagaimana kita tahu apa yang tengah-tengah adalah?
Yeah.
Jadi biarlah saya memadam kod itu.
Bagaimana kita tahu apa yang tengah-tengah adalah?
Dalam apa-apa, apabila anda mempunyai awal dan akhirnya, bagaimana anda mencari
tengah-tengah?
>> PELAJAR: Anda purata.
>> PELAJAR: Anda menambah mereka bersama-sama dan kemudian -
>> JASON Hirschhorn: Tambah mereka bersama-sama dan kemudian?
>> PELAJAR: Dan anda purata.
Dibahagikan dengan 2.
>> JASON Hirschhorn: Tambah mereka bersama-sama dan membahagi dengan 2.
Jadi tengah int sama?
Tom, anda boleh berikan kepada saya?
>> PELAJAR: Bermula ditambah berakhir -
>> JASON Hirschhorn: Permulaan ditambah berakhir.
>> PELAJAR: Semua, kurungan, dibahagikan dengan 2.
>> JASON Hirschhorn: Semua, dalam kurungan, dibahagikan dengan 2.
Jadi yang memberikan saya tengah apa-apa, betul?
>> PELAJAR: Anda juga perlu bundarkan ke atas.
>> JASON Hirschhorn: Apa yang anda bermakna, saya perlu untuk pusingan tersebut?
>> [Suara INTERPOSING]
>> PELAJAR: Kerana jika Ia merupakan satu ganjil nombor, maka ia seperti -
>> JASON Hirschhorn: Nah, OK.
Jadi saya boleh bundarkan ke atas.
Tetapi jika ia nombor ganjil, 5, saya boleh mengambil 1 dari tengah-tengah.
Atau jika ia nombor genap, sebaliknya, itu kes yang lebih baik.
Jika ia 4, kita hanya mempunyai 4, saya boleh mengambil yang pertama "tengah", quote, unquote atau
kedua satu "tengah".
Sama ada akan bekerja untuk carian binari, jadi saya tidak benar-benar perlu untuk pusingan itu.
Tetapi ada satu perkara yang saya lain perlu melihat baris ini.
Kita mungkin tidak sedar lagi, tetapi kita akan kembali kepadanya.
Kerana baris ini sebenarnya masih memerlukan satu perkara yang lain.
>> Tetapi setakat ini, kami telah menulis empat baris kod.
Kami mempunyai permulaan kami dan berakhir penanda.
Kami mempunyai gelung sementara kami, yang peta pada terus ke kod pseudo kami.
Kami sedang mencari di tengah-tengah yang memetakan terus ke kod pseudo kami.
Saya akan mengatakan ini pergi ke tengah-tengah senarai, baris ini kod.
Dan kemudian, sebaik sahaja kami pergi ke tengah-tengah senarai, perkara yang akan datang yang perlu kita lakukan
adalah memeriksa jika nilai kami ada untuk kod pseudo yang kita menulis lebih awal.
>> Jadi bagaimana kita memeriksa jika nilai kami adalah di tengah-tengah senarai?
Anda.
Mengapa tidak anda melakukan ini?
>> PELAJAR: Jika nilai kita adalah di tengah-tengah adalah sama dengan
apa sahaja yang kita menetapkan -
Maksud saya sama sama dengan -
>> JASON Hirschhorn: Ia -
OK.
>> PELAJAR: Saya tidak pasti apa yang berubah-ubah kita cari
untuk walaupun, adalah kerana -
>> [Suara INTERPOSING]
>> PELAJAR: [didengar].
>> JASON Hirschhorn: Tepat sekali.
Per pengisytiharan majlis itu, kita cari nilai.
Oleh itu, kita sedang mencari nilai yang dalam pelbagai nilai-nilai.
Jadi anda betul-betul betul.
Anda akan lakukan, jika kurungan nilai paren terbuka tengah ditutup setaraf kurungan
sama nilai, dan di dalam sana apa yang perlu kita lakukan?
Jika nilai kita di sana, apa yang kita perlu buat?
>> [Suara INTERPOSING]
>> PELAJAR: Kembali sifar.
>> JASON Hirschhorn: Kembali benar.
>> PELAJAR: Kembali benar.
>> JASON Hirschhorn: Michael, apakah baris ini lakukan?
>> PELAJAR: [didengar] program ini telah berjalan kursus, dan itu adalah ke atas, dan
anda telah apa yang anda perlu lakukan?
>> JASON Hirschhorn: Program atau apa?
Dalam kes ini?
>> PELAJAR: Fungsi ini.
>> JASON Hirschhorn: Fungsi ini.
Dan sebagainya, untuk kembali kepada apa sahaja yang dipanggil dan memberikannya nilai, benar.
Tepat betul.
Utama.
Apakah jenis pulangan daripada utama, Michael?
>> PELAJAR: int, integer?
>> JASON Hirschhorn: int, betul-betul.
Integer.
Yang hanya satu soalan untuk memastikan anda semua telah di atasnya.
Apa yang biasanya kembali, jika segala sesuatu berfungsi dengan baik?
>> PELAJAR: Zero.
>> JASON Hirschhorn: Zero.
Tepat betul.
>> PELAJAR: Jika ini hanya kembali benar, tidak ada maklumat yang diberikan
tentang apa yang -
Oh, ini hanya mengatakan bahawa yang nilai yang di dalam array.
>> JASON Hirschhorn: Tepat sekali.
Program ini tidak memberi maklumat di mana betul-betul nilai itu.
Ia hanya berkata, ya, kami mendapati , atau tidak, kita tidak merasa.
Jadi, jika bilangan ditemui, kembali benar.
Well, sebenarnya kita hanya melakukan yang benar-benar cepat dengan garis yang satu kod.
Jadi saya akan mencadangkan supaya garis kod pseudo.
>> PELAJAR: Jangan kita perlu untuk menukar array?
Ia harus nilai, tidak nilai, bukan?
>> JASON Hirschhorn: Maaf.
Terima kasih.
>> PELAJAR: Yeah.
>> JASON Hirschhorn: Keturunan ini harus nilai-nilai.
Tepat betul.
OK.
Oleh itu, kita telah melihat senarai tengah.
Jika nombor yang terdapat pulangan benar.
Berterusan dengan kod pseudo kita, jika tengah adalah lebih besar, carian kiri.
Jadi saya terpaksa di sini, jika nombor yang lebih tinggi, carian kiri.
Constantine, anda boleh memberikan saya ini selaras kod?
>> PELAJAR: Jika nilai pertengahan -
>> JASON Hirschhorn: Jadi jika nilai -
jika paren terbuka menghargai kurungan kurungan hampir pertengahan -
>> PELAJAR: Apakah yang lebih kecil daripada nilai?
>> JASON Hirschhorn: Apakah kurang daripada.
>> PELAJAR: Kurang daripada nilai.
>> JASON Hirschhorn: Nilai.
Well, sebenarnya, anda mahu memeriksa jika bilangan -
Maaf.
Ini adalah sedikit mengelirukan.
Tetapi lain jika jumlah dalam pertengahan senarai adalah lebih besar.
>> PELAJAR: Oh, OK.
>> JASON Hirschhorn: Saya akan mengubah itu.
Lagi jika pertengahan adalah lebih tinggi, kita ingin mencari kiri, OK?
Dan apa yang kita lakukan di dalam ini jika keadaan?
>> PELAJAR: Bolehkah saya membuat perubahan kecil untuk keadaan, perubahan kepada yang lain jika?
>> JASON Hirschhorn: Else jika?
OK.
Jadi kod ini akan melaksanakan kira-kira yang sama.
Tetapi perkara yang baik tentang menggunakan jika, lagi jika, lain jika atau jika, lain jika, lagi
bermakna hanya satu daripada mereka akan diperiksa, tidak semua tiga daripada mereka,
berpotensi.
Dan yang menjadikan ia sedikit lebih bagus pada komputer itu
menjalankan program anda.
>> Jadi [? Constantine,?]
kami di dalam talian ini, lain jika nilai-nilai, kurungan pertengahan kurungan rapat
adalah lebih besar daripada nilai.
Apa yang perlu kita lakukan?
Kita perlu mencari sebelah kiri.
Bagaimana kita berbuat demikian?
Saya akan memberikan anda satu permulaan.
>> Kami mempunyai dua perkara ini dipanggil bermula dan berakhir.
Jadi apa yang perlu berlaku untuk permulaan?
Jika anda ingin mencari sebelah kiri senarai, kita akan mendapat awal semasa kami.
Apa yang kita perlu melakukannya?
>> PELAJAR: Kami awal ke tengah campur 1.
>> JASON Hirschhorn: Jadi, jika kita mencari kiri?
>> PELAJAR: Maaf, tolak tengah -
supaya berakhir akan menjadi tengah tolak 1 dan permulaan -
>> JASON Hirschhorn: Dan apa berlaku ke permulaan?
>> PELAJAR: Ia tetap sama.
>> JASON Hirschhorn: Jadi makna tetap sama.
Jika kita mencari sebelah kiri, kita menggunakan permulaan yang sama -
betul-betul betul.
Dan berakhir?
Maaf, apakah yang berakhir sama sekali lagi?
>> PELAJAR: tolak Tengah 1.
>> JASON Hirschhorn: tolak Tengah 1.
Sekarang, mengapa tolak 1, bukan hanya pertengahan?
>> PELAJAR: tengah ini adalah daripada gambar sudah, kerana kita mempunyai
diperiksa bahawa itu keluar?
>> JASON Hirschhorn: Itu betul-betul betul.
Tengah-tengah adalah daripada gambar.
Kami sudah diperiksa tengah-tengah.
Oleh itu, kita tidak mahu "tengah-tengah," quote unquote, untuk terus berada dalam
array yang kita cari.
Jadi ini adalah hebat.
>> Lagi jika nilai kurungan pertengahan adalah lebih besar daripada nilai berakhir setaraf
tolak tengah 1.
Jeff, bagaimana dengan baris terakhir ini?
>> PELAJAR: Else.
Nilai-nilai pertengahan adalah kurang daripada nilai?
>> JASON Hirschhorn: Kami akan anda memberi saya lagi.
Jadi, jika anda tidak memberi saya -
>> PELAJAR: Jadi bermulanya akan ditambah tengah 1.
>> JASON Hirschhorn: setaraf Bermula ditambah tengah 1, sekali lagi, untuk yang sama
sebab itu Constantine memberi kami lebih awal.
Dan pada akhirnya, yang tidak memberikan saya garis kod lagi?
Pulangan palsu, Aleha, apa kita tulis di sini?
>> PELAJAR: Kembali palsu.
>> JASON Hirschhorn: Kembali palsu.
Dan kita perlu berbuat demikian, kerana jika kita tidak merasa, kita perlu untuk mengatakan bahawa kita
tidak menemuinya.
Dan kita berkata kita akan mengembalikan bool, jadi kita pasti perlu kembali
di suatu tempat bool.
>> Jadi mari kita menjalankan kod ini.
Saya sebenarnya akan -
jadi kita di terminal.
Kami akan membersihkan tingkap kami.
Mari kita Buat Semua.
Kami mendapati ada satu kesilapan.
Ada satu ralat pada baris 15, dijangka koma bertitik di akhir
pengisytiharan.
Jadi apa yang saya terlupa?
>> PELAJAR: Koma bertitik.
>> JASON Hirschhorn: Koma bertitik sehingga di sini.
Saya berfikir bahawa adalah kod Tom.
Jadi Tom, [didengar].
Hanya bergurau.
Mari kita jangan Buat Semua lagi.
>> PELAJAR: Apa direktori Dropbox kita harus untuk ini?
>> JASON Hirschhorn: Jadi anda boleh hanya menonton untuk sedikit ini.
Tetapi sekali lagi, jika anda mahu untuk bergerak ini kod ke dalam direktori pset3 anda untuk mencuba
ia keluar, itulah yang saya lakukan.
Jika anda akan notis di sini - maaf, soalan yang baik.
>> [? LS,?]
Saya di sini kod find.c yang dari kod distro minggu ini.
Saya mempunyai helpers.h.
Saya mempunyai fail Make bahawa saya sebenarnya disunting sedikit untuk memasukkan ini baru
fail kita menulis.
Semua kod yang akan disediakan, tidak kod pengedaran, tetapi baru
Buat fail, fail helpers.h baru ini akan boleh didapati dalam talian untuk muat turun.
Sekali lagi, jadi mereka adalah Kod tambahan yang kita ada.
>> Oleh itu, semua, setiap talian ini, membuat mencari, binari, gelembung pemilihan - membuat
ketiga-tiga mereka dan mengumpulkan ke dalam ini find kod boleh laksana.
Jadi secara amnya, kita tidak mahu untuk terus ke check50.
Kami mahu menjalankan beberapa ujian ke atas kita sendiri.
Tetapi hanya supaya kita boleh mempercepatkan ini sedikit, check50 2013 pset3.find akan berlalu
dalam helpers.c-- tidak baik saya.
>> Saya tidak mempunyai sekarang.
Jadi, kita sebenarnya akan menjalankan kod untuk sebenar.
Usage.find /, anda tahu apa yang bermakna?
>> PELAJAR: Anda perlu kedua baris arahan di atasnya.
>> JASON Hirschhorn: Saya perlu baris arahan kedua.
Dan spesifikasi, saya perlu untuk memasuki apa yang kita cari.
Jadi mari kita lihat 42.
Kami akan menyimpannya dalam disusun, kerana kita telah tidak ditulis fungsi jenis lagi -
42, 43, 44.
>> Dan Kawalan D tidak mencari jarum dalam sisa rumput kering itu.
Itu tidak baik.
Ia pasti ada.
Mari kita cuba sesuatu yang lain.
Mungkin kerana saya meletakkan pada permulaan.
>> Mari kita buat 41, 42, 43.
Di sana kami pergi.
Ia menjumpainya.
Mari kita meletakkan ia pada akhir masa ini, hanya supaya kita boleh teliti -
40, 41, 42.
Tidak menemui jarum.
Jadi saya sebutkan ini lebih awal.
Malangnya, saya tahu ini akan berlaku.
>> Tetapi untuk tujuan pedagogi, ia baik untuk meneroka ia.
Ia tidak berfungsi.
Untuk sebab-sebab tertentu, ia tidak boleh menemuinya.
Kita tahu apa yang di sana, tetapi kita tidak menemuinya.
Jadi satu perkara yang kita boleh lakukan ialah melalui GDB untuk mencari, tetapi tidak sesiapa,
tanpa melalui GDB, mempunyai rasa di mana kita diskru?
[? Madu? ?]
>> PELAJAR: Saya rasa ia mungkin apabila berakhir adalah sama dengan permulaan, dan ia
hanya satu senarai satu unsur.
Kemudian ia hanya mengabaikan dan bukannya sebenarnya memeriksa ia.
>> JASON Hirschhorn: Itu betul-betul betul.
Apabila berakhir sama awal, kita masih mempunyai elemen dalam senarai kami?
>> PELAJAR: Ya.
>> JASON Hirschhorn: Ya, sebenarnya, kita mempunyai satu dan hanya satu elemen.
Dan yang kemungkinan besar akan berlaku apabila, setiap kod yang kami diuji, kita berada di
hadapan sisa rumput kering atau di akhir sisa rumput kering itu.
Itulah di mana permulaan dan berakhir akan sama
satu, dengan carian binari.
Jadi, dalam kedua-dua kes ia tidak berjaya, kerana berakhir adalah sama dengan awal.
>> Tetapi jika berakhir bersamaan dengan permulaan, adakah gelung selama ini dilaksanakan?
Ia tidak.
Kita bolehlah diperiksa itu lagi melalui GDB.
Jadi bagaimana kita boleh menetapkan kod ini, kerana apabila manakala berakhir adalah sama dengan
permulaan, kami juga mahu ini manakala gelung untuk menjalankan.
>> Jadi apa yang menetapkan kita boleh membuat untuk beratur 18?
>> PELAJAR: [didengar] adalah lebih besar daripada atau sama dengan.
>> JASON Hirschhorn: Tepat betul.
Walaupun berakhir adalah lebih besar daripada atau sama dengan permulaan.
Jadi sekarang, kami memastikan untuk mendapatkan kes sudut pada akhir.
Dan mari kita lihat.
Mari kita berjalan kali ini satu lagi.
>> Mari kita membuat semua.
Sekali lagi, anda perlu hanya ikut bersama-sama di sini.
Cari 41 kali ini.
Hanya menyimpan ia konsisten.
>> Cari 42.
Mari kita meletakkan ia pada awal -
42, 43, 44.
Kami menjumpainya.
Supaya sememangnya perubahan kami lakukan.
>> Itu adalah banyak pengekodan kita hanya lakukan, carian binari.
Adakah sesiapa mempunyai apa-apa soalan sebelum Saya bergerak ke dalam barisan kita menulis dalam
carian binari atau bagaimana kita digambarkan apa kita tidak memikirkan?
Sebelum kita bergerak ke atas, saya juga ingin menunjukkan bahawa oleh dan besar, kita dipetakan
pseudo-kod satu kami untuk salah ke kod kami.
>> Kami memang mempunyai bahawa perkara rumit memikirkan dengan
bermula dan berakhir.
Tetapi telah anda tidak membuat kesimpulan bahawa keluar, anda akan telah menulis cukup banyak yang
kod yang serupa, kecuali mereka atas dua baris.
Dan kemudian anda akan sedar apabila anda berjaya dalam pemeriksaan dan kes-kes yang
anda perlu sesuatu yang lain.
Jadi, walaupun anda telah mengikuti kami talian pseudo-kod ke garisan, anda akan tunggu
mendapat semua tetapi dua baris kod anda diperlukan untuk menulis.
>> Dan saya bersedia untuk bertaruh bahawa kalian akan semua digambarkan bahawa daripada
cukup cepat, bahawa anda diperlukan untuk meletakkan semacam penanda di sana untuk memikirkan
di mana anda berada.
Itu lagi, adalah kuasa menjalankan pseudo-kod di hadapan masa.
Oleh itu, kita boleh melakukan logik yang pertama, dan kemudian kita boleh bimbang tentang sintaks.
>> Kalaulah kami telah dikelirukan mengenai logik ketika cuba untuk menulis kod ini dalam C,
kita akan mendapat semua sehingga merosakkan.
Dan kemudian kita akan bertanyakan soalan mengenai logik dan sintaks dan bersirat
mereka semua bersama-sama.
Dan kita akan mendapat hilang dalam apa yang boleh dengan cepat menjadi satu
masalah yang sukar.
Jadi mari kita beralih kini untuk jenis pemilihan.
>> Kami mempunyai 20 minit kiri.
Jadi saya mempunyai perasaan yang kita tidak akan dapat mendapatkan melalui semua jenis pilihan
dan jenis gelembung.
Tetapi janganlah kita sekurang-kurangnya percubaan untuk menyelesaikan jenis pemilihan.
Jadi melaksanakan pemilihan jenis menggunakan berikut akuan fungsi.
>> Sekali lagi, ini diambil dari masalah set spesifikasi.
Nilai Int adalah kurungan adalah pelbagai integer.
Dan int.n adalah saiz array yang.
Jenis Pemilihan akan untuk menyusun pelbagai ini.
>> Jadi setiap model mental kita pemilihan jenis, kita tarik -
pertama, kita pergi melalui senarai yang pertama masa, cari bilangan yang paling kecil,
meletakkannya pada awal, mendapati kedua bilangan kecil, meletakkannya di
kedudukan kedua jika kita mahu jenis secara menaik.
Saya tidak memaksa anda untuk menulis pseudo-kod sekarang.
>> Tetapi sebelum kita lakukan kod sebagai sebuah kelas di lima minit, kita akan menulis
pseudo-kod jadi kita perlu rasa beberapa di mana kita akan.
Jadi cuba untuk menulis kod pseudo- sendiri.
Dan kemudian cuba untuk menjadikan yang pseudo-kod ke dalam kod.
Kami akan melakukan yang sebagai satu kumpulan dalam lima minit.
>> Dan sudah tentu, beritahu saya jika anda mempunyai sebarang pertanyaan.
>> PELAJAR: Bahawa ia?
>> JASON Hirschhorn: Lihat sejauh mana anda boleh mendapatkan dalam dua minit lagi.
Saya faham anda tidak akan dapat selesai.
Tetapi kita akan pergi ke ini sebagai satu kumpulan.
>> Anda semua pengekodan jadi [didengar], jadi saya maaf untuk berhenti seketika apa yang anda lakukan.
Tetapi mari kita pergi melalui ini sebagai satu kumpulan.
Dan sekali lagi, carian binari, anda semua memberi saya satu jika tidak lebih baris kod.
Terima kasih untuk itu.
Kita akan melakukan perkara yang sama di sini, kod bersama-sama sebagai satu kumpulan.
>> Jadi jenis pemilihan - mari kita menulis beberapa cepat pseudo-kod.
Per model mental, boleh seseorang memberikan saya baris pertama pseudo-kod, sila?
Apa yang saya mahu lakukan?
>> PELAJAR: Walaupun senarai adalah keluar perintah.
>> JASON Hirschhorn: OK, manakala senarai adalah keluar perintah.
Dan apa yang kamu maksudkan "keluar perintah?"
>> PELAJAR: Walaupun [didengar]
belum disusun.
>> JASON Hirschhorn: Walaupun senarai berada di luar perintah, apa yang kita lakukan?
Berikan saya baris kedua, sila, Marcus.
>> PELAJAR: Jadi mencari seterusnya bilangan yang paling kecil.
Ini akan dilekukan.
>> JASON Hirschhorn: Jadi mencari seterusnya bilangan yang paling kecil.
Dan kemudian orang lain?
Apabila kita mencari yang paling kecil seterusnya nombor, apa yang kita lakukan?
Saya akan mengatakan mencari nombor paling kecil.
Itulah apa yang kita mahu lakukan.
>> Jadi mendapatkan nombor yang paling kecil.
Maka apa yang kita lakukan?
>> PELAJAR: [didengar] untuk permulaan.
>> JASON Hirschhorn: Maaf?
>> PELAJAR: Letakkan dalam permulaan senarai.
>> JASON Hirschhorn: Jadi letakkan di dalam permulaan senarai.
Dan apa yang kita lakukan dengan perkara yang yang pada mulanya
senarai, bukan?
Kami penggantian sesuatu.
Jadi di mana kita meletakkan bahawa?
Ya, Anna?
>> PELAJAR: Di mana yang paling kecil beberapa adalah?
>> JASON Hirshhorn: Jadi meletakkan awal senarai di mana
bilangan yang paling kecil adalah.
Jadi sementara senarai adalah daripada perintah, cari bilangan yang paling kecil, letakkan di dalam
awal senarai, meletakkan permulaan senarai di mana
bilangan yang paling kecil adalah.
Marcus, anda boleh menyusun semula baris ini manakala senarai adalah keluar perintah?
>> PELAJAR: Sementara jumlah yang belum disusun?
>> JASON Hirshhorn: OK, jadi untuk tahu bahawa nombor belum
disusun, apa yang perlu kita lakukan?
Berapa banyak yang kita perlu pergi melalui senarai ini?
>> PELAJAR: Jadi saya rasa untuk gelung, atau manakala, manakala nombor diperiksa kurang
daripada panjang senarai?
>> JASON Hirshhorn: OK, itu baik.
Saya rasa saya misphrased soalan saya dengan baik.
Saya hanya mencuba untuk mendapatkan sekurang- kita akan perlu pergi
melalui seluruh senarai.
Jadi sementara senarai adalah daripada perintah, bagi saya, adalah sukar untuk memetakan pada.
Tetapi pada dasarnya, itu bagaimana Saya fikir tentang perkara ini.
Pergi melalui seluruh senarai, cari bilangan yang paling kecil, letakkan dalam
bermula - sebenarnya, anda betul.
Mari kita meletakkan mereka kedua-duanya.
>> Jadi sementara senarai adalah daripada perintah, kita perlu melalui seluruh senarai
sekali, merasa yang paling kecil nombor, tempat ia pada awal senarai, meletakkan
permulaan senarai di mana bilangan yang paling kecil adalah, dan kemudian jika
Senarai masih keluar perintah, kami telah mendapat untuk pergi melalui ini
proses lagi, bukan?
Itulah sebabnya jenis pilihan, Big-O runtime seumpama pemilihan, sesiapa sahaja?
>> PELAJAR: n kuasa dua.
>> JASON Hirshhorn: n kuasa dua.
Kerana seperti Marcus dan saya hanya sedar di sini, kita akan perlu
melalui senarai senarai beberapa kali.
Jadi melalui sesuatu panjang n n beberapa kali
adalah sebenarnya n kuasa dua.
>> Jadi ini adalah kod pseudo kami.
Ini kelihatan sangat baik.
Adakah sesiapa mempunyai apa-apa soalan mengenai kod pseudo yang?
Kerana sebenarnya jenis pemilihan perlu mungkin datang 1-1, kod dari
kod pseudo.
Jadi apa-apa soalan mengenai logik kod pseudo yang?
Sila tanya sekarang.
>> Jenis pilihan - sementara senarai adalah keluar perintah, kita akan melaluinya
dan mencari setiap kali yang paling kecil dan meletakkannya di hadapan.
Jadi sementara senarai adalah daripada perintah, boleh seseorang memberikan saya bahawa baris kod yang
tidak memberikan saya garis kod lagi, sila?
Ia berbunyi seperti apa?
>> PELAJAR: Itu satu untuk gelung.
>> JASON Hirshhorn: Ia kedengaran suka untuk gelung.
OK, anda boleh memberi saya untuk gelung?
Untuk -
>> PELAJAR: i Sama 0.
>> JASON Hirshhorn: i atau -
apa yang kita hilang?
Apa yang berlaku di sini?
>> PELAJAR: Int.
>> JASON Hirshhorn: Tepat sekali.
(Int i = 0; -
>> PELAJAR: i > JASON Hirshhorn: Dipaku ia, Jeff.
Kita akan melalui senarai, bukan?
Kami telah melihat kod yang sebelum ini.
Perfect.
Jadi mari kita meletakkan pendakap kerinting kami di sini.
Saya akan meletakkan beberapa pendakap kerinting di sini.
>> Itu, sambil ia 0, kita perlu pergi melalui keseluruhan senarai.
Jadi setiap kali kita pergi melalui senarai, apa yang kita mahu untuk mengesan?
>> PELAJAR: Jika mana-mana swap dibuat.
>> JASON Hirshhorn: Cari nombor paling kecil.
Oleh itu, kita mungkin perlu menjejaki bilangan yang paling kecil setiap kali.
Jadi garis yang boleh saya lakukan untuk mengesan bilangan paling kecil?
Aleha, bagaimana saya boleh menyimpan menjejaki sesuatu?
>> PELAJAR: Mulakan pembolehubah baru.
>> JASON Hirshhorn: Mula pembolehubah baru.
Jadi mari kita mewujudkan pemboleh ubah.
Apa jenis?
>> PELAJAR: Int.
>> JASON Hirshhorn: Int.
Mari kita panggil ia yang paling kecil.
Dan apa yang ia sama apabila kita baru bermula?
Kita belum pergi melalui senarai berkenaan.
Kami di bahagian pertama menyenaraikan masa pertama kami melalui.
Apakah ia sama rata, bilangan paling kecil?
>> PELAJAR: Nilai i.
>> JASON Hirshhorn: Nilai i.
Yang berbunyi betul-betul betul, bukan?
Bilangan yang paling kecil pada awal adalah di mana kita berada.
Jadi sekarang kita mempunyai yang paling kecil kita, dan kita perlu melalui seluruh senarai dan
bandingkan ini kecil untuk segala-galanya.
Jadi kita pergi melalui senarai itu?
Michael?
>> PELAJAR: Anda perlu membuat satu lagi untuk gelung.
>> JASON Hirshhorn: Satu lagi untuk gelung.
Mari kita melakukannya.
Berikan saya beberapa kod.
>> PELAJAR: Untuk gelung -
untuk yang paling kecil -
hanya int j, anda boleh katakan?
= 0; seperti itu -
>> JASON Hirshhorn: Nah, jika kita mahu melalui seluruh senarai -
>> PELAJAR: j > JASON Hirshhorn: Fantastic.
Kita akan melalui untuk gelung sekali lagi.
Dan bagaimana kita dapati bilangan paling kecil?
Tom?
Kita mempunyai bilangan semasa kecil, jadi bagaimana kita mencari yang paling kecil yang baru?
>> PELAJAR: Kita boleh memeriksa jika yang paling kecil bilangan yang kita ada adalah lebih besar daripada
menghargai kurungan j.
>> JASON Hirshhorn: Jadi, jika yang paling kecil adalah lebih besar daripada nilai kurungan j.
Jadi, jika kecil semasa kami adalah lebih besar daripada -
Saya akan bergerak kedua-dua baris kod di luar sana untuk kali kedua.
Kerana sebelum kita melakukan apa-apa bertukar-tukar, kita perlu melalui keseluruhan senarai.
Jadi kod pseudo ini perlu sebenarnya berada di luar yang dalaman untuk gelung.
Oleh itu, pergilah melalui keseluruhan senarai.
Jika yang paling kecil adalah lebih besar daripada nilai-nilai j kemudian apa?
>> PELAJAR: Kemudian terkecil sama nilai-nilai j.
>> JASON Hirshhorn: Fantastic.
Satu soalan cepat -
kali pertama kami melalui gelung ini, i akan sama dengan 0, j akan
untuk menyamai 0 sebaik sahaja kami mendapatkan di sini.
Jadi kita akan membandingkan beberapa dengan dirinya sendiri.
Adakah itu berkesan?
Tidak, ia tidak benar-benar berkesan.
Begitu juga j kami perlu pergi dari 0 hingga n setiap kali?
Adakah kita sentiasa perlu menyemak melalui seluruh senarai?
[Didengar]?
>> PELAJAR: Mulakan dengan i sebaliknya.
>> JASON Hirshhorn: j tin bermula dengan apa?
>> PELAJAR: i.
>> JASON Hirshhorn: j boleh bermula dengan i.
Jadi sekarang kita membandingkan bermula dengan yang kita berada di.
Tetapi kemudian, adalah bahawa sebagai cekap yang mungkin?
>> PELAJAR: i + 1.
>> JASON Hirshhorn: i + 1 seolah-olah yang paling berkesan, kerana kita
sudah mempunyai i.
Kami menyatakan bahawa sebagai yang paling kecil dalam talian 15.
Kami akan bermula dengan satu seterusnya secara automatik.
Oleh itu, kita pergi melalui untuk gelung.
Kami akan melalui setiap masa.
Kami akan melalui beberapa kali.
Sekarang kita telah mendapat melalui ini dalaman untuk gelung.
Kami mempunyai nilai yang paling kecil menyelamatkan.
Kita perlu letakkan di permulaan senarai.
Jadi bagaimana saya meletakkan ia di permulaan senarai?
Apakah pembolehubah yang merujuk ke permulaan senarai?
Kami di luar ini untuk gelung, jadi apa yang merujuk kepada
permulaan senarai?
>> PELAJAR: Nilai i.
>> JASON Hirshhorn: Tepat betul.
Nilai-nilai i adalah permulaan yang -
atau maaf, bukan permulaan.
Itu adalah mengelirukan.
Ia adalah di mana kita berada di permulaan bahagian Unsorted senarai.
Jadi nilai i.
Dan apa yang yang sama?
>> PELAJAR: Terkecil.
>> JASON Hirshhorn: Nilai i sama apa?
>> PELAJAR: Terkecil.
>> JASON Hirshhorn: Terkecil.
Tepat betul.
Jadi, kita meletakkan pada permulaan senarai, dan kini kita perlu meletakkan
permulaan senarai di mana bilangan yang paling kecil adalah.
Jadi bagaimana saya menulis di mana bilangan yang paling kecil adalah?
Nilai-nilai apa?
>> PELAJAR: 0.
>> JASON Hirshhorn: The kecil bilangan sekurang-0?
>> PELAJAR: Yeah.
>> JASON Hirshhorn: Bagaimana jika yang paling kecil bilangan adalah pada akhir
senarai Unsorted ini?
>> PELAJAR: Maaf, apa yang soalan?
>> JASON Hirshhorn: Di manakah bilangan paling kecil?
Kami mengambil yang paling kecil dan meletakkannya di permulaan, dengan baris ini di sini.
>> PELAJAR: Ia harus mempunyai telah disimpan di dalam beberapa -
>> PELAJAR: Nilai-nilai j.
>> JASON Hirshhorn: Nah, itu tidak semestinya menghargai j.
Ia juga tidak wujud pada ketika ini.
>> PELAJAR: Anda perlu mengisytiharkan pembolehubah lebih awal dan
kemudian sediakan bagi -
apabila anda boleh mendapatkan nombor yang paling kecil, menyerahhakkan indeks jumlah itu kepada
beberapa berubah atau sesuatu seperti itu.
>> JASON Hirshhorn: Jadi boleh anda mengatakan bahawa sekali lagi?
>> PELAJAR: Jadi di mana anda diisytiharkan int yang paling kecil, anda juga perlu mengisytiharkan int
indeks kecil = i, atau sesuatu seperti itu.
>> JASON Hirshhorn: Jadi di mana saya int kecil, saya bukan sahaja perlu menjejaki
daripada nilai tetapi lokasi.
int smallest_location = dalam ini kes, kami hanya akan melakukan i.
Kita perlu tahu di mana ia.
Kami sampai ke penghujung kod, dan kami menyedari bahawa kami tidak tahu di mana ia adalah.
Dan sekali lagi, kami pemetaan ini pada satu kepada satu.
Anda lelaki pengekodan ini atas kehendak anda sendiri mungkin dapat masalah yang sama.
Bagaimana palang pintu yang saya merasa?
Dan kemudian anda sedar, tunggu, saya perlu untuk mengesan itu.
>> Jadi, jika kecil adalah lebih besar daripada nilai-nilai j.
Kami menetapkan yang paling kecil sama dengan nilai-nilai j.
Apa lagi yang kita perlu berubah?
Constantin, apa lagi yang kita perlu berubah?
>> PELAJAR: Lokasi.
>> JASON Hirshhorn: Tepat sekali.
Itu, kurniakanlah daku barisan itu dalam kod.
>> PELAJAR: smallest_location = j.
>> JASON Hirshhorn: Tepat sekali.
Dan kemudian turun pada akhirnya, jika kita mahu meletakkan permulaan senarai di mana
bilangan yang paling kecil adalah, bagaimana kita merujuk kepada di mana
bilangan yang paling kecil adalah?
Marcus?
>> PELAJAR: Bilangan terkecil adalah terletak di lokasi yang paling kecil.
>> JASON Hirshhorn: Jadi pada nilai smallest_location.
Dan apa yang kita diletakkan di sana?
Permulaan senarai, apa itu?
>> PELAJAR: Nah, kita tidak benar-benar tahu lagi kerana kita overwrote.
Jadi ia lokasi yang ditukar daripada kedua-dua garisan?
Jika anda menghidupkan kedua-dua garisan di sekeliling.
>> JASON Hirshhorn: OK, jadi kita tidak lagi, kerana kita telah menetapkan semula garis
sebelum nilai-nilai i kepada yang paling kecil.
Oleh itu, kita hilang yang nilai awal.
Jadi anda berkata swap kedua-dua baris.
Jadi sekarang meletakkan permulaan senarai di mana bilangan yang paling kecil adalah.
Jadi smallest_location sama nilai i.
Itu bergerak awal ini bahagian Unsorted senarai ke
lokasi yang paling kecil.
Dan kemudian ke dalam nilai-nilai i kita sedang bergerak bahawa jumlah yang paling kecil.
>> Adakah ini masuk akal mengapa kita terpaksa membuat pertukaran itu?
Kami akan ditulis ganti nilai yang - satu lagi perkara yang anda mungkin akan mempunyai
digambarkan dan mendapati dalam KDNK.
Oleh itu, kita dijaga semua kod pseudo yang.
Adakah apa-apa lagi yang kita perlu tulis di sini?
Bolehkah sesiapa memikirkan apa-apa?
>> PELAJAR: Bagaimana anda tahu apabila anda selesai?
>> JASON Hirshhorn: Bagaimana kita tahu apabila kita selesai?
Persoalan yang besar.
Jadi bagaimana kita tahu apabila kita selesai.
>> PELAJAR: Buat pembolehubah untuk menyimpan kiraan daripada jika ada swap yang dibuat atau tidak
dan melalui lulus.
>> JASON Hirshhorn: OK.
Yang akan bekerja dalam jenis gelembung.
Tetapi untuk jenis pemilihan, jika kita tidak membuat suatu swap, yang hanya mungkin
kerana nilai yang paling kecil adalah di dalamnya lokasi kanan.
Kita mungkin mempunyai senarai 1, 2, 4, 3.
Kali kedua melalui kami tidak akan membuat sebarang swap.
Kami akan berada di nombor 2, tetapi kita akan masih perlu menyimpan berterusan.
Jadi kita memerlukan untuk mengesan apabila kami sudah selesai, atau adakah kita hanya mahu pergi
sehingga ini selesai?
>> PELAJAR: Kami hanya boleh pergi sehingga ia selesai.
>> JASON Hirshhorn: Kita boleh hanya pergi sehingga ini selesai.
Dalam jenis gelembung, anda betul-betul betul, Jeff dan Aleha, dengan penyelesaian anda -
ia adalah yang terbaik untuk mengekalkan mengesan berapa swap anda dibuat, kerana dalam gelembung
jenis, jika anda sebenarnya tidak membuat pertukaran, anda selesai dan anda mungkin boleh mengurangkan anda
masalah sedikit.
Tetapi untuk jenis pilihan, anda telah benar-benar perlu melalui untuk akhir
menyenaraikan setiap kali sekitar.
>> Jadi ini adalah itu.
Kami mempunyai dua minit kiri.
Mari kita membuat semua.
Biar saya terbuka Cari di sini dan membuat pasti saya sebenarnya memanggil -
Saya tidak memanggil isih gelembung.
Mari kita menukar ini kepada jenis pemilihan.
membuat semua. / mencari.
Mari kita mengetahui 42.
Kali ini kita akan lulus senarai Unsorted, kerana ia perlu menyusun
pertama, bagi setiap kod yang dicari - perlu menyusun pertama menggunakan fungsi seperti yang kami dan kemudian
mencari sesuatu.
Jari bersilang semua orang.
>> Oh kebaikan saya.
Wah, hati saya berdegup.
Jadi itu adalah betul.
Malah, jika kita berlari ini lebih meluas, kod, sejauh yang saya boleh
memberitahu, adalah betul-betul betul.
Terdapat beberapa cadangan Saya akan ada untuk anda.
Sebagai contoh, 15 dan 16 seolah-olah yang berlebihan sedikit.
Ia seolah-olah seperti anda tidak semestinya perlu menyimpan kedua-dua mereka.
Jika anda mempunyai lokasi yang paling kecil, anda boleh mencari nilai yang paling kecil oleh
hanya menaip nilai i.
>> Jadi jika saya akan penggredan kod anda, yang saya sebenarnya akan menjadi, saya akan
mungkin titik tolak jika anda termasuk kedua-dua, kerana anda
jika kedua ini.
Jika anda mempunyai lokasi, anda boleh dengan mudah mendapatkan nilai.
Dan ia kelihatan sedikit pelik untuk menyimpan kedua-dua mereka.
Mungkin tidak mengambil mata, tetapi pasti mengulas bahawa yang mungkin
bukan pilihan gaya anda perlu membuat.
Sudah tentu, kod masih berjalan dengan baik.
>> Jadi malangnya kita tidak dapat isih gelembung.
Saya minta maaf tentang itu.
Kami telah selesai pemilihan jenis.
Adakah sesiapa mempunyai apa-apa soalan akhir mengenai jenis pilihan?
>> OK, sebelum kita menuju keluar, saya mahu anda untuk membuka pelayar Chrome anda.
Maaf, itu hanya plug terang-terangan bagi satu jenis pelayar internet.
Anda boleh membuka apa-apa jenis penyemak imbas, tetapi ia mungkin akan Chrome.
Dan pergi ke laman web ini berikut -
sayat.me/cs50.
Jika anda tidak menaip di komputer anda sekarang, anda dengan jelas
tidak melakukannya, Tom.
>> Dan sila melakukannya sama ada betul sekarang atau dalam jam seterusnya -
berikan saya beberapa maklum balas.
Ini adalah satu-satunya bahagian dua.
Kami mempunyai banyak lagi bersama-sama, jadi saya mempunyai banyak ruang untuk memperbaiki.
Saya harap-harap juga melakukan beberapa perkara juga.
Jadi anda boleh membuat saya berasa semua tidak baik, tetapi jika anda juga mahu memberi saya smiley
muka, saya akan menghargai itu juga.
Isi yang masuk
>> Dan dengan satu minit kiri, yang tiga minggu.
Saya akan berdiri di luar untuk sedikit jika anda mempunyai sebarang pertanyaan.
Aku akan berjumpa lelaki dalam kuliah esok.