>> ROB: Baiklah.
Selamat datang ke bahagian pertama.
Saya Rob.
>> JOSEPH: Saya Yusuf.
>> ROB: Jadi kami akan menyelam hak masuk
Perkara pertama untuk bercakap tentang adalah Peralatan ini.
Jadi diharapkan kebanyakan di antara kamu turun ia sudah.
Tetapi anda boleh lihat arahan di cs50.net/appliance.
Oh tuhan, sekarang saya sedar diri.
Saya masih mendengarnya.
>> JOSEPH: Wow, ia kedengaran seperti ia keliru.
>> ROB: Jadi sesetengah orang telah mempunyai masalah dengan itu, jadi jangan tunggu sehingga
saat-saat akhir masalah yang ditetapkan untuk cuba dan menyelesaikan Appliance dan
mengetahui bahawa ia tidak berfungsi.
>> JOSEPH: Dan jika ada sesuatu yang tidak berfungsi dan anda memerlukan bantuan, anda boleh pergi ke
cs50.net/discussion mana kita mempunyai satu forum di mana anda
boleh menghantar soalan anda.
Dan kami akan mendapat kepada mereka akhirnya.
>> ROB: Baiklah.
Jadi ini adalah apa yang Appliance kelihatan seperti.
Sekali lagi, ia hanya yang berasingan sistem operasi berjalan dalam
apa jua sistem operasi anda berjalan pada komputer riba anda.
Dan perkara-perkara utama yang anda akan menggunakan adalah gedit.
Jadi mudah-mudahan ini telah pun menjadi tapak yang biasa.
Terminal.
>> Dan anda juga boleh menjalankan Chrome dalam Peralatan ini.
Terdapat beberapa orang yang telah melaporkan internet
tidak berfungsi dalam Peralatan ini.
Dan sebahagian daripada mereka baru sahaja diambil alih bahawa terdapat tidak sepatutnya
internet dalam Peralatan ini.
Tetapi ya, ada sepatutnya menjadi internet.
>> Saya akan mengatakan ia sekarang, tetapi ia tidak benar-benar bermakna apa-apa.
Jika internet tidak berfungsi, ini adalah apa yang anda cenderung untuk memerlukan
untuk menjalankan untuk menyelesaikannya.
Jika anda menghadapi isu-isu internet, tidak ingat, hanya tampal pada
Berbincang, dan kami akan mengatakan, jalankan itu.
Tetapi internet perlu bekerja.
>> Jadi satu-satunya perkara lain - yeah, tiada apa lagi yang benar-benar berkaitan.
Tetapi saya hanya mahu untuk menunjukkan bahawa -
melihat di sudut kanan bawah ini.
Jadi setiap anda harus Peralatan mempunyai alamat IP.
Dan kemudian pada semester, IP ini alamat akan menjadi lebih relevan apabila
anda bekerja di web p-set, kerana anda akan dapat untuk mengakses
laman web anda bekerja daripada anda Chrome tempatan dengan menggunakan alamat IP ini.
>> Tetapi apa yang saya suka untuk menggunakan alamat IP untuk - dan anda tidak perlu untuk melakukan ini, saya
hanya mahu menunjukkan ia keluar -
di sini.
Jadi ini adalah satu tetingkap terminal pada Mac saya, ini bukan dalam
Appliance sama sekali.
Dan anda boleh mencari apa yang arahan ini tidak.
Tetapi saya akan terus SSH untuk Appliance saya.
Saya tidak tahu apa IP itu.
>> JOSEPH: 168 -
>> 168.224.1.0.
>> ROB: Jadi sekali saya dilakukan dengan ini, log masuk
Sekarang, pada dasarnya, ini adalah sama dengan tetingkap terminal dalam Appliance saya.
Jadi saya cukup banyak tidak pernah sebenarnya bekerja dari dalam Appliance itu sendiri.
Saya hanya selalu ia berjalan di latar belakang dikurangkan
dan SSHed ke dalamnya.
>> Isu dengan ini anda tidak akan dapat menggunakan gedit mudah
secara langsung daripada ini.
Tetapi jika anda mahu menjadi sejuk sebenar penggodam, maka anda perlu mendapatkan digunakan kepada
baris arahan editor teks juga.
Jadi Vim dan Emacs dan Nano, semua ini adalah alternatif yang berbeza.
Nano cenderung untuk menjadi yang paling mudah.
Dan saya fikir ia tidak mempunyai sintaks menonjolkan.
Oh, tidak, ia sama sekali tidak.
Jadi anda boleh menggunakan Nano, kerana yang satu agak mudah.
>> Anda lihat semua arahan ini di bahagian bawah.
Simbol lobak merah sedikit.
Jika anda tidak pernah melihat sebelum ini, anda akan mungkin melihat ia banyak sekarang.
Ia biasanya bermakna lobak kawalan, seperti bahagian bawah kiri keyboard anda
watak kawalan.
Jadi di sini ia memberitahu saya turun di sini -
oh, ia tidak terputus jika saya zum masuk
Jadi Kawalan, X ialah bagaimana Saya akan keluar.
Dan ia berkata saya boleh memukul Y untuk Ya, untuk penjimatan, N untuk No
Jadi, itu Nano.
>> Vim dan Emacs cenderung untuk menjadi lebih sedikit rumit dan hangat.
Tetapi anda boleh mendapatkan digunakan untuk ia, dan kemudian anda akan menyukainya.
Jadi itulah yang.
>> JOSEPH: Tidak perlu untuk berbuat demikian.
>> ROB: Yeah.
Anda bebas untuk menggunakan gedit untuk selebihnya semester.
Jadi apa-apa soalan yang berkaitan dengan perkakas?
Atau adakah anda mempunyai apa-apa pemikiran mengenai apa lagi perlu diperkatakan mengenai
perkakas?
Ya.
>> SPEAKER 1: Apabila anda SSHed ke dalam anda perkara, adalah Crimson kata laluan?
>> ROB: Yeah.
Kata laluan untuk hampir semua yang dalam Appliance itu akan
menjadi Crimson.
>> SPEAKER 2: Pasang seperti IDE sebenar perkakas, ia akan berfungsi?
>> ROB: Saya bayangkan Gerhana tidak mempunyai Versi Fedora, di mana, ya,
anda boleh berbuat demikian.
Ia mungkin tidak benar-benar berbaloi.
>> SPEAKER 2: OK.
Jadi ia mungkin lebih mudah jika saya mahu menggunakan Eclipse, hanya menggunakan asli dan
kemudian upload ke -
>> ROB: Oh, yang juga mungkin lebih mudah.
Tetapi anda boleh mendapatkan ia bekerja dalam Peralatan ini.
>> JOSEPH: Dan untuk kamera, soalan adalah, anda boleh memasang satu lagi
IDE dalam perkakas?
>> ROB: Eclipse menjadi contoh IDE satu.
Sebarang pertanyaan Appliance lain?
Baiklah.
>> Jadi, sekarang kita akan beralih ke baris arahan perkara yang berkaitan dengan antara muka, jadi CLI.
Dan sekali lagi, saya hanya akan bekerja dalam di sini, kerana ini adalah sama dengan
bekerja dalam tetingkap terminal dalam Peralatan ini.
Bagaimana dengan font yang mencari?
Adakah itu cukup besar?
Baiklah.
>> Jadi, terdapat banyak arahan yang anda perlu mendapatkan cukup digunakan untuk
sepanjang semester.
Kedua-dua yang besar untuk memandu arah adalah ls, senarai fail dalam direktori ini dan
cd, jadi menukar direktori.
Jadi saya boleh menukar kepada desktop dan kemudian corak yang biasa adalah cd kepada
direktori dan segera ls apa dalam direktori.
>> Orang juga kadang-kadang tidak menyedari yang siap Tab sesuatupun.
Cd mahu, VH, dan kemudian saya memukul Tab.
Saya hampir tidak pernah menaip perkara keseluruhan.
Dan kemudian jika saya terus memukul Tab sekali lagi, ia akan secara automatik
mula menyenaraikan bagi saya.
Jadi saya boleh cd vhosts, tuan rumah tempatan.
Dan itu hanya akan -
sekiranya anda tidak pernah mendengar istilah sebelum ini, direktori hanya perkataan lain
untuk folder.
Jadi sekarang jika anda melihat -
mari kita membawa yang ke atas.
>> Jadi sekarang jika anda lihat dalam kurungan, anda melihat tilde sedikit, slash, vhost,
slash, tuan rumah tempatan.
Jadi tilde itu, yang merujuk ke direktori rumah saya.
Ia adalah satu direktori anda apabila anda ssh masuk
Ia direktori anda dalam apabila anda membuka terminal.
Ia adalah di mana anda bermula.
Dan jadi saya dalam direktori rumah saya, dan saya dalam vhost yang
direktori di dalam direktori rumah saya.
Dan kemudian saya bahagian dalam tempatan menjadi tuan rumah dalam direktori itu.
>> Jadi beberapa perkara yang berguna yang lain dengan cd -
atau baik, secara umum, jadi dot sentiasa merujuk kepada direktori semasa.
Cd, dot adalah arahan agak tidak bernilai.
Tetapi yang mengubah kepada direktori semasa.
A satu lebih berguna dari segi cd adalah dot, dot, yang merupakan
hanya naik satu direktori.
>> Dan ambil perhatian bahawa ini -
Saya mahu mengatakan alias, tetapi ini simbol, dot, dan dot, dot, kerja mereka
untuk cukup banyak mana-mana perintah anda akan memikirkan berjalan.
Cd Jadi seperti adalah mungkin di mana anda akan menggunakan yang paling, tetapi ini tidak
perkara-perkara yang hanya cd memahami.
Ia cukup banyak sesuatu keseluruhan baris arahan memahami.
Banyak program memahami dot dan dot, dot.
>> Jadi orang-orang yang lain yang berguna - cd, sengkang.
Jadi yang akan membawa saya ke direktori lepas bahawa saya masuk
Jadi kadang-kadang saya akan melakukan sesuatu seperti, oh, saya bekerja di sini.
Dan saya melihat beberapa ralat dengan sesuatu, dan Saya akan pergi menyiasat dengan pergi ke
beberapa direktori rawak di suatu tempat.
Dan saya tidak tahu jika ia akan biarlah saya di sana.
Ia akan.
Jadi kemudian saya lakukan apa yang saya mahu dalam direktori ini.
Blah, blah, blah, blah, blah.
Dan saya adalah seperti, baiklah, saya mahu untuk kembali ke mana saya berada.
cd, sengkang, dan ia membawa saya segera kembali.
>> Jadi saya akan membuang banyak ini pada anda hari ini.
Saya tidak mengharapkan anda untuk menghafal mereka semua.
Ia jenis hanya tahu bahawa mereka wujud.
Dan kemudian apabila anda seperti, hmm, saya mahu kembali kepada
direktori yang saya hanya di, oh, tunggu, sesuatu seperti itu wujud.
Anda tidak perlu taip seluruh direktori lagi.
>> JOSEPH: Dan akhirnya anda akan hanya menggunakannya berulang-ulang kali, dan
ia akan menjadi memori otot.
>> ROB: Yeah.
Jadi bagaimana saya katakan sebelum ini, yang tilde adalah direktori rumah anda.
Jadi saya boleh cd, tilde.
Tetapi saya tidak perlu berbuat demikian jika saya hanya -
Saya akan kembali ke direktori agar ia bukan satu contoh yang sia-sia.
Tetapi jika saya hanya melakukan cd, itu juga sama seperti, pergi ke direktori rumah saya.
Saya Perintah, K.
>> JOSEPH: Anda juga boleh menaip jelas, perkataan, dan ia perlu membersihkan ia.
>> ROB: Dan saya juga berfikir Kawalan, L juga ia.
Jadi banyak cara yang berbeza.
Saya rasa terdapat beberapa perbezaan di mana jelas dan Kawalan, L akan hanya
benar-benar menolak ia ke atas dan Saya masih boleh skrol kembali.
Perintah, K literal memusnahkan segala-galanya, dan anda
tidak boleh skrol kembali ke atas.
Sekurang-kurangnya, itulah bagaimana ia berfungsi dalam iTerm2.
Saya tidak tahu bagaimana perkara-perkara lain -
oh.
>> Dengan SSHing, jadi jika anda berada di Windows, anda akan perlu untuk memuat turun PuTTY
untuk ssh sejak Windows tidak mempunyai seperti alat yang terbina dalam SSH.
Dari Mac, anda boleh hanya SSH secara langsung dari tingkap terminal.
OK.
Soalan?
>> Dengan ls, jadi sesuatu untuk mendapatkan digunakan untuk dengan kebanyakan arahan ini adalah -
baik, saya hanya akan melakukan satu.
Ls, sengkang, l.
Jadi sengkang, l adalah apa yang kita akan untuk memanggil bendera untuk ls.
Dan banyak arahan ini mempunyai bendera bahawa anda boleh lulus kepada mereka.
Jadi dalam kes ini, sengkang, l adalah bendera yang memberitahu ia memberi saya penuh
senarai semua maklumat yang fail-fail.
>> Oleh itu, kita lihat di sini bahawa desktop adalah diubah suai pada 30 Julai pada 12:54.
Muat turun telah diubahsuai pada 6 September.
Ini adalah saiz semasa dan bait direktori ini.
Anda tidak perlu untuk memahami semua ini.
>> Barangan ini di sebelah kiri, drwx ini ini, yang akan menjadi lebih relevan
kemudian apabila anda perlu berurusan dengan -
yang mempunyai kaitan dengan yang mempunyai kebenaran untuk melihat fail-fail ini.
Dan jadi jika anda tidak adalah satu-satunya pengguna pada komputer ini, anda akan dapat
katakan, OK, saya perlu menjadi satu-satunya dibenarkan untuk melihat fail ini atau saya
akan membolehkan semua orang untuk melihat fail ini.
Jadi orang lain pada komputer saya boleh melihat fail ini.
Saya tidak tahu apa ini - apakah ini lakukan?
>> JOSEPH: Saya tidak pasti, sebenarnya.
>> ROB: No idea.
>> JOSEPH: Tetapi jika anda tidak tahu, terdapat arahan berguna yang boleh anda gunakan
untuk memberitahu anda apa output bermakna.
Dan jika anda menaip dalam manusia sebelum arahan -
jadi M-A-N. ROB: Man.
Jadi seorang lelaki adalah satu sama lain yang sangat berguna.
Dan manusia, ls.
Jadi halaman manusia, mereka mempunyai kedua-dua menyuruh anda akan menggunakan
pada baris arahan, dan mereka juga mempunyai fungsi-fungsi yang akan menjadi relevan
dengan C. Jadi, anda boleh manusia -
dan saya diabaikan 3.
Tapi lelaki 3 printf akan membawa sehingga versi C bagi printf.
Tetapi jika saya hanya melakukan lelaki printf, ini adalah akan membawa printf arahan
yang berlaku pada baris arahan.
>> Jadi seorang lelaki, ls.
Halaman lelaki boleh agak hangat.
Di sini, walaupun, anda akan melihat penyenaraian ini semua bendera ini yang ls
memahami.
Jadi, jika kita pergi ke melontarkan, l, dan -
Saya hanya akan membuang ini pada anda.
Tetapi untuk mencari, anda mahu untuk pertama melanda soalan
tanda atau butang palang.
Jadi mengurangkan.
>> Dan kemudian saya boleh mencari untuk apa sahaja yang saya mahu.
Jadi saya akan mengurangkan untuk sengkang, l.
Dan ada ia.
Jadi menggunakan format penyenaraian yang panjang.
Ini tidak membantu saya mencari jalan apa ruangan yang tertentu yang dimaksudkan, tetapi saya
menganggap suatu tempat di sini ia akan menjelaskan bahawa.
Jadi menggunakan halaman lelaki bagi apa-apa arahan bahawa anda tidak segera memahami.
>> Saya agak pasti anda juga boleh manusia, manusia.
Satu antara muka untuk talian manual rujukan.
Oh, satu terkini itu mungkin sedikit Adakah ls berkaitan, dash, a.
Jadi notis jika saya hanya melakukan ls, Saya mendapat lima fail.
Jika saya ls, melontarkan,, saya mendapatkan lebih banyak fail.
Jadi perkara yang sama antara semua fail baru adalah dot terlebih dahulu.
>> Jadi konvensyen itu ialah fail yang bermula dengan titik yang tersembunyi.
Jadi, anda tidak mahu untuk melihat fail itu, anda tidak mahu untuk memilikinya kucar-kacir dengan
penyenaraian direktori anda.
Ia hanya apabila anda jelas bertanya, semua betul, ls, sengkang,, menunjukkan saya.
Yang bermaksud semua fail, termasuk yang tersembunyi.
Jadi beberapa arahan lain.
Oh, soalan pada ketika itu?
Ya.
>> SPEAKER 3: Apabila anda melakukan ls, yang, apa yang dot, dot?
>> ROB: Oh.
Jadi ini adalah apa yang saya bercakap tentang.
Ia adalah perkara yang sama di mana Saya boleh seperti cd, dot, dot.
Jadi dari segi teknikal, dan dot dot, dot adalah fail yang wujud dalam setiap tunggal
direktori di mana fail dot merujuk ke direktori semasa.
Jadi jika saya cd, dot, saya hanya akan untuk tinggal di direktori.
Dan dot, dot sentiasa merujuk kepada sebelumnya direktori satu tahap ke atas.
Jadi, jika saya pergi ke log dan ls, sengkang, al, Saya akan melihat titik, titik. cd ke dot, dot
membawa saya ke direktori sebelumnya.
Yeah.
OK.
>> Jadi satu lagi cukup penting arahan adalah rm.
Jadi itulah yang kita akan untuk digunakan untuk menghapuskan.
Dan biarlah saya sebenarnya melakukan satu lagi perintah pertama.
Jadi mkdir.
Mkdir adalah bagaimana anda boleh mencipta direktori.
Dan saya akan mewujudkan direktori sementara dan pergi ke dalam direktori sementara.
Dan seperti yang dijangkakan, ia kosong.
Tetapi jika saya ls, sengkang,, saya masih mempunyai dot dan dot, dot, dot kerana merujuk kepada
direktori semasa.
Dan dot, dot merujuk kepada direktori sebelumnya.
Dan orang-orang akan sentiasa wujud tidak kira direktori yang anda masuk
>> Dan ini adalah benar-benar tidak perlu arahan, tetapi sentuhan.
Saya hanya menggunakannya, kerana ia cara mudah untuk mencipta fail.
Jadi menyentuh, sentuh b, sentuh c hanya akan membuat tiga fail sebagai a,
b, dan c yang benar-benar kosong.
Jadi titik saya mencipta mereka dalam Tempat pertama adalah hanya begitu rm yang
bagaimana kita boleh mengeluarkannya.
Jadi rm, a.
Ia akan bertanya kepada saya, keluarkan tetap kosong gambar?
Dan kemudian saya akan katakan Ya.
>> Jadi jika saya pasti bahawa saya mahu memadam fail yang tanpa perlu
digesa, mengeluarkan fail kosong biasa?, maka rm, sengkang, f akan menjadi
Bendera yang mengatakan, memaksa keluarkan tanpa walaupun mendorong saya, oh, adakah anda
pasti anda mahu memadam fail?
Ya, saya pasti.
Jadi rm, sengkang, fb akan hanya melakukannya tanpa bertanya.
>> Jadi mari kita membuat sedikit lebih direktori.
mkdir, tmp2, cd, tmp2, menyentuh, sentuhan b.
OK.
Jadi sekarang saya mahu mengeluarkan tmp2 sebagai direktori.
Tmp2 Jadi rm.
Anda tidak boleh mengeluarkan tmp2, ia adalah direktori.
Jadi isu di sini ialah rm tidak segera bekerja pada direktori.
Ia hanya untuk fail seperti fail bukan direktori.
>> Dan jadi apa yang boleh kita lakukan di sini adalah rm, sengkang, k.
Yang bermaksud secara rekursif, yang mungkin tidak bermakna apa-apa kepada anda lagi.
Tetapi apabila anda sampai ke rekursi, ia akan bermakna lebih banyak.
Jadi rm, sengkang, r, tmp2 akan secara rekursif pergi ke direktori.
Jadi turun ke dalam direktori tmp2?
Ya, mari kita pergi ke dalam itu.
Adakah kita mahu mengeluarkan tmp2 / a?
Ya.
Adakah kita mahu mengeluarkan tmp2 / b?
Ya.
Sekarang kita mahu mengeluarkan tmp2 direktori?
Ya.
Dan sekarang direktori dan segala-galanya di dalam
itu telah dikeluarkan.
>> Terdapat teknikal rmdir arahan yang boleh anda gunakan untuk menghapuskan
direktori, tetapi ia hanya kerja-kerja pada direktori kosong juga.
Dan untuk melihat bahawa, mari kita hanya melakukan mkdir, tmp2 lagi.
Tmp2, menyentuh.
OK.
Jadi, jika saya cuba untuk membuang dirtmp2 IA AKAN berkata, direktori tidak kosong.
Jadi saya cukup banyak tidak pernah menggunakan keluarkan arahan dir bagaimanapun, kerana rm, sengkang,
r akan bekerja pada direktori kosong dan direktori yang tidak kosong.
>> Dan juga, jika saya tidak mahu perlu melalui proses keseluruhan
turun ke dalam direktori dan menghapuskan setiap fail individu, rm,
sengkang, rf, tmp2.
Dan kini ia pergi.
>> Sesuatu yang berhati-hati kira-kira adalah rm, sengkang, rf.
Dan ia menakutkan saya walaupun menaip, kerana jika saya secara tidak sengaja
tekan Enter atau sesuatu.
Jadi rm, sengkang, rf, tilde akan, tanpa mendorong saya, f tidak meminta
saya, secara automatik akan mengeluarkan seluruh direktori rumah saya dan
segala-galanya di dalamnya.
Jadi, anda mungkin berfikir bahawa adalah satu perkara yang bodoh untuk dilakukan.
Dan juga, ia adalah.
>> Tetapi ia boleh berlaku dengan mudah dengan kemalangan jika, katakan, saya mahu keluarkan
slash saya, direktori vhost.
Dan hanya dalam menaip cepat, Saya secara tidak sengaja melakukan ini.
Yang akan menghapuskan kedua-dua secara rekursif saya direktori rumah dan direktori vhost yang
dalam direktori ini tertentu yang hanya yang berlaku kepada tidak wujud sekarang.
Tetapi ini masih akan mengeluarkan seluruh direktori rumah saya.
Sekurang-kurangnya dengan tidak mempunyai satu f, ia akan mendorong saya pertama.
Dan saya menjadi seperti, oh, tidak, saya tidak mahu berbuat demikian.
Tetapi orang, slash, termasuk saya cenderung untuk masuk ke dalam
tabiat sentiasa rf-ing.
Malah fail biasa yang saya hanya boleh rm, c, saya cenderung untuk hanya rm, sengkang, rf, c.
Hanya berhati-hati apabila anda rf-ing.
>> SPEAKER 4: Apakah C lakukan?
>> ROB: C adalah yang saya maksudkan bahawa fail C dalam direktori ini, rm itu,.
>> JOSEPH: Dan yang lebih berbahaya, jika anda menggunakan bintang, ia merujuk kepada segala-galanya dalam
direktori.
Jadi apa yang saya biasanya cenderung untuk melakukan adalah saya akan pergi ke dalam direktori dan saya mahu
membuang semua fail dalam sana.
Jadi rm, sengkang, rf, bintang.
>> ROB: Yeah.
Rm, sengkang, rf, bintang.
>> JOSEPH: Dan jika anda tidak berhati-hati apa direktori anda di -
Saya tidak di temp, tetapi saya sengaja di dalam direktori rumah saya,
maka saya akan memadam segala-galanya di dalam direktori rumah saya.
Dan saya telah sebenarnya dilakukan yang sebelum ini, dan Saya rasa anda telah melakukan ini sebelum atau
Jay telah melakukan bahawa sebelum.
>> ROB: Saya sengaja dikeluarkan -
supaya mengabaikan arahan yang sedikit.
>> JOSEPH: Tidak menyeronokkan.
>> ROB: Jadi dalam direktori bin slash adalah sekumpulan fail binari di mana ada akan
menjadi orang-orang yang biasa seperti bunyi berdering.
Nah, bunyi berdering dan pada dasarnya semua ini perkara-perkara yang saya berjalan pada arahan
talian dalam palang ini direktori bin.
>> JOSEPH: Seperti ls adalah di sini.
>> ROB: Jadi dot, slash, ls akan menyenaraikan direktori ini.
>> JOSEPH: Rm juga dalam direktori ini.
>> ROB: Saya tidak sengaja rm, rf-ed bin, yang dikeluarkan apa-apa arahan yang saya dapat
mungkin pernah mahu.
Maka saya hanya memasang semula satu Appliance baru pada ketika itu.
>> JOSEPH: Jadi berhati-hati apabila anda menggunakan arahan ini.
>> PENONTON: [didengar]?
>> ROB: Ya.
Itulah juga tabiat buruk untuk masuk ke dalam.
Jika anda perasan, saya kini -
dengan baik, anda tidak boleh notis, tetapi zoom-in saya mungkin boleh.
Jadi saya kini root @ perkakas.
Jadi jharvard merupakan pengguna kita mahu anda untuk sentiasa menggunakan.
Akar merupakan pengguna yang mempunyai kebenaran lakukan benar-benar apa-apa.
>> Jadi notis apabila saya jharvard, jika saya cuba untuk cd -
apa yang direktori yang?
Oh, akar adalah contoh yang baik.
Jadi cd, akar.
Kebenaran dinafikan.
Kerana jika kita melihat penyenaraian ini -
dan sekali lagi, anda tidak perlu sepenuhnya memahami perkara ini.
Tetapi ketiga-tiga sengkang katakan yang tidak membenarkan mana-mana
pengguna ke dalam direktori ini.
Dan direktori yang berlaku kepada dimiliki oleh root.
>> Jadi hakikat bahawa saya jharvard dan tiada salah satu yang bukan root ke dalam
direktori ini, ini bermakna bahawa saya akan mendapatkan keizinan ditolak apabila saya
cuba cd ke dalamnya.
Oleh itu, apabila saya akar, saya mempunyai kebenaran untuk lakukan benar-benar apa-apa, termasuk
memadam fail penting kepada Appliance dan
memusnahkan perkara keseluruhan.
>> Jadi ia adalah satu tabiat buruk untuk masuk ke dalam hanya berkeliaran di sekitar anda
sistem operasi sebagai root.
Saya melakukannya juga.
Soalan?
Dan saya akan keluar akar, kekal sebagai jharvard.
OK.
>> Arahan yang lebih relevan.
Jadi akan kembali ke temp kami, arahan mv bermaksud bergerak.
Anda boleh memindahkan.
Sekarang kita mahu panggil ia b, jadi sekarang ia dipanggil b.
Atau mungkin kita mahu bergerak b up satu direktori.
Jadi sekarang ini kosong direktori ini.
Saya akan kembali ke direktori rumah saya, dan kita melihat bahawa b adalah di sini, kerana
direktori rumah adalah satu direktori dari direktori yang b telah masuk
>> Terdapat juga cp.
Jadi cp adalah salinan seksyen super, dot, teks.
Yang boleh saya hubungi ia s, dot, teks.
Sekarang kita mempunyai kedua-dua seksyen super, dot, teks dan s, dot, teks.
Ini juga berfungsi pada direktori.
Saya RF-ed satu fail.
Jadi cp -
baik, mari kita cuba cp, tmp, tmp2.
Jadi meninggalkan direktori tmp.
Jadi sama dengan rm, tingkah laku lalai adalah untuk tidak bekerja pada direktori.
>> Dan sekali lagi, sama dengan rm, lalai tingkah laku - baik, mendapat ia bekerja
dengan direktori adalah, dash-r jauh.
Jadi menyalin secara rekursif menggoda direktori ke tmp2.
Dan sekarang kita mempunyai kedua-dua tmp dan tmp2, dan yang tidak yang membantu kerana tmp
kosong di tempat pertama.
Tmp2.
>> Sekarang mari kita menyalin tmp ke tmp2.
Dan kita melihat bahawa tmp2 juga mempunyai fail , kerana direktori dan
kesemua di dalam yang direktori telah disalin.
Dan yang boleh agak berguna jika, katakan anda bekerja
kepada masalah menetapkan satu -
atau sebenarnya, masalah set kemudian adalah lebih penting, kerana ada
akan menjadi sejumlah fail dan perkara.
>> Tetapi anda hanya mahu, perpecahan kedua, anda seperti, baiklah, saya
akan cuba sesuatu yang berbeza.
Biar saya hanya menyalin keseluruhan pset1 saya direktori ke dalam sandaran pset1 supaya jika
Aku terpaksa skru perkara, saya boleh kembali ke dalam direktori sandaran saya.
Terdapat cara yang lebih sesuai Pembuatan Sejarah membuat sandaran kod anda, tetapi
ini sentiasa cara yang cepat untuk hanya membuat pasti anda mempunyai salinan sesuatu
yang anda kira-kira untuk mengubah suai.
>> Jadi echo juga arahan satu-off yang jenis sillily hanya akan mencetak kepada
baris arahan apa anda mahu echo.
Jadi echo hi.
Kami hanya akan mencetak hi.
Echo hello dunia.
Kami akan mencetak dunia hello.
Yang datang ke dalam penggunaan apabila anda mula menggabungkan arahan.
>> Dan sekali lagi, tidak mengharapkan anda untuk sepenuhnya memahami ini, tetapi ia
sesuatu untuk melihat.
Dan kemudian jika anda Googling untuk contoh atau anda sedar yang anda mahu lakukan
sesuatu, ia boleh membantu.
Jadi mari kita, sebagai contoh, jadi ls, sengkang, l.
Jadi di sini saya melihat output daripada ls, sengkang, l.
Dan saya berkata, OK, saya mahu menyimpan yang ke dalam fail.
Semua pengeluaran ini di sini, saya ingin untuk dimasukkan ke dalam fail yang berasingan.
>> Jadi ini sedikit lebih besar daripada simbol adalah apa yang kita akan panggil.
Kami mengubah hala yang output ke dalam fail.
Mari kita panggil blah fail, kerana itulah apa yang saya cenderung untuk sentiasa memanggilnya.
Jadi sekarang kita lihat kita mempunyai memfailkan blah di sini.
Dan jika saya membukanya, saya akan melihat ia betul-betul output dari perintah
yang aku berlari.
Begitu juga, anda boleh -
jika ini adalah output ke fail, ini adalah mendapatkan input daripada fail.
Apakah perintah bahawa saya -
>> JOSEPH: Saya fikir anda boleh menggunakan kurang atau lebih, mungkin.
>> ROB: Tetapi bagaimana pula hanya blah kurang?
Saya tidak tahu.
Jika anda datang ke dalam senario ini, seperti ada psets bahawa itu berguna untuk.
>> JOSEPH: Anda boleh paip ke dalam gema.
Paip fail ke dalam echo untuk melihatnya.
>> ROB: Ia paip.
>> JOSEPH: Maaf.
>> ROB: Baiklah.
Jadi ini adalah output ke fail.
Ini adalah mendapatkan teks dari fail dan menyerahkannya kepada program ini.
Dan anda juga akan melihat lelaki ini.
Jadi ini adalah jenis melakukan kedua-dua sekali.
Dan sebenarnya, saya akan memperkenalkan dua baru arahan hanya untuk menggunakan ia.
>> Sejarah adalah arahan berguna yang hanya akan mencetak senarai
apa-apa yang pernah saya menjalankan baris arahan.
Oleh itu, kita lihat di sini segala-galanya yang saya ada telah berjalan masa ini keseluruhan.
Banyak ls ini.
>> Dan arahan lain yang berguna ialah grep yang tujuannya adalah untuk mencari di
teks mencari corak, baik, mencari apa sahaja yang anda
mahu ia disiasat.
Dan jadi penggunaan yang berguna di sini ialah, katakan kita mahu merebut sejarah.
Dan saya mahu melihat untuk arahan di mana saya - apa yang yang
satu berguna untuk mencari?
>> JOSEPH: [didengar]?
>> ROB: Atau mari kita hanya mencari semua menyentuh, atas apa jua sebab.
Jadi ini adalah apa yang ia akan kelihatan seperti.
Dan anda tidak perlu benar-benar memahami bahawa.
Tetapi idea itu di sini, sejarah memberi output yang sama yang berlaku di sini
di mana ia mencetak keseluruhan sejarah segala-galanya yang pernah saya jalankan.
Kami kemudian lulus bahawa -
jadi bukannya mencetak kepada skrin, kita mahu lulus itu kepada
arahan grep yang sedang mencari semua keadaan sentuhan perkataan.
>> Dan sebagainya menggunakan gabungan ini daripada alat sejarah dan grep, saya lihat, OK,
inilah semua perintah saya telah pernah berlari, dan inilah satu yang agak biasa.
Kami berada di bahagian bawah.
Dan ia juga memberi saya arahan Saya hanya berlari mempunyai
sentuhan perkataan di dalamnya.
Tetapi paip adalah satu perkara yang agak berguna untuk menggabungkan beberapa program.
Dan sebenarnya, ia adalah jalan pintas untuk disewakan saya sejarah output untuk memfailkan blah, dan
biarlah saya grep menggunakan blah fail seperti yang saya mahu untuk melihat lebih.
Jadi paip hanya jalan pintas untuk kedua-dua arahan.
Ya.
>> SPEAKER 4: [didengar]?
>> ROB: Ya.
Apakah -
Oh.
Mari uji.
Jadi kucing, anjing, ikan.
Jadi saya mahu grep.
Dash, r, sekali lagi, akan menjadi secara rekursif, jadi saya mahu turun ke bawah
semua direktori.
Saya ingin secara rekursif grep untuk semua - dan biarlah saya buat sementara waktu mendapatkan
keluar ini dari jalan.
Mengabaikan saya.
OK.
>> Jadi saya mahu grep sementara untuk semua keadaan ikan perkataan.
Dan jadi di sini apa yang saya lakukan adalah grepping secara rekursif untuk ikan perkataan.
Dan bintang bermakna lebih semua ini gambar dalam direktori ini.
Dan jadi ia memberikan saya Kebenaran Ditolak, kerana ia tidak dibenarkan untuk membaca bahawa
fail tertentu.
Tetapi ia mendapati ikan dalam fail, ujian.
>> Saya juga boleh katakan, secara khusus, saya hanya mahu melihat di blah fail, dalam
yang mana ia tidak akan menemui apa-apa.
Saya hanya mahu melihat dalam fail, ujian.
Ia akan mencari ikan.
Itu adalah arahan agak berguna untuk mengetahui secara umum.
Terdapat beberapa alternatif kepada grep yang sepatutnya lebih
Programmer mesra, tetapi saya cenderung masih jatuh kembali grep.
Soalan?
OK.
>> Adakah terdapat arahan lain?
Oh.
Hanya satu sekali yang saya sentiasa mencari menyeronokkan adalah cal.
Jadi notis apabila saya dalam ini indah mod skrin penuh, saya tidak terkenal seperti
toolbar atau apa-apa.
Jadi cal hanya memberikan saya sedikit bagus kalendar yang Betul
kini terputus, saya mengambil alih.
Tapi arahan sedikit bagus.
>> JOSEPH: Adalah [didengar].
Arahan lain yang anda mungkin mempunyai dilihat termasuk dentang dan membuat.
Kami akan pergi ke atas mereka dalam lebih terperinci kemudian.
Tetapi jika anda telah bekerja di Serangga, anda harus
biasa dengan mereka.
>> ROB: Baiklah.
Soalan kepada perkara-perkara baris arahan?
Baiklah.
Jadi mari kita beralih kepada beberapa Barangan C berkaitan.
Pembolehubah matematik.
OK.
Jadi seperti yang kita mempunyai matematik di Awal, anda juga boleh menggunakan matematik di C.
>> Sebelum kita sampai ke sepenuhnya, jadi pembolehubah.
Ingat bahawa setiap kali anda mengisytiharkan berubah-ubah seperti int x atau y apungan, anda
perlu memberikan menaip sebelum nama berubah-ubah.
Jadi jenis yang kita lihat setakat ini adalah int, float, double, lama lama, yang saya
sebenarnya tidak tahu jika kita telah melihat bahawa setakat ini.
>> Terdapat beberapa orang yang lain.
Kami telah melihat char.
Ada pendek, yang seperti itu yang bertentangan dengan panjang panjang di mana ia
lebih kecil daripada integer.
Kami juga telah melihat tali.
Jadi apa yang istimewa tentang rentetan?
Mengapa saya mengatakan ia tidak cukup seperti int?
>> SPEAKER 4: Ia tidak benar-benar wujud.
>> ROB: Yeah.
Jadi satu-satunya sebab kita ada tali adalah kerana apabila anda melakukan
hash, termasuk cs50.h.
Dan kita akan melihat contoh-contoh ini kemudian - oh, itu tidak mengendalikan yang baik -
mana cs50.h melakukan sesuatu sepanjang garis jenis
def, char bintang, tali.
>> Dan sebagainya itu mengatakan bahawa kita tidak walaupun tahu apa yang bintang char lagi.
Tetapi ini mengatakan kita mahu tali.
Mana-mana tempat anda telah menggunakan tali, anda boleh telah menggunakan char bintang,
yang sebenarnya adalah jenis yang wujud dalam bahasa C.
Tetapi kita akan dapat yang.
Oh, dan ia pergi segera kembali.
Kemas.
>> Perkara begitu sama dengan bool mana benar dan palsu.
Itu tidak benar-benar jenis yang terbina dalam di C. Sebaliknya, ia hanya, ini ada
sifar nilai?
Maka kita hanya akan mempertimbangkan ia adalah palsu.
Adakah ini mempunyai nilai -
baik, ini ada apa-apa nilai yang tidak sifar?
Maka kita akan menganggapnya sebagai benar.
Jadi, satu adalah benar, kedua-duanya adalah benar, apa-apa bukan sifar adalah benar.
Jadi mereka adalah mereka.
Soalan pada mengisytiharkan pembolehubah dan jenis berubah dan semua itu?
Yeah.
>> SPEAKER 4: Untuk panjang panjang, dalam buku ini, ia berkata ia terpaksa int panjang panjang.
Tetapi lama lama akan berfungsi?
>> ROB: Jadi ini pengubah jenis.
Jadi int x.
Oleh itu, kita juga boleh mengatakan tidak ditandatangani int x.
Kita boleh berkata int pendek x.
Kita boleh berkata panjang panjang int x.
Tetapi cukup banyak mana-mana perkara yang saya hanya berkata, tidak ditandatangani int, int pendek,
lama lama int, anda boleh menghilangkan int dan ia hanya akan mengambil alih
bahawa anda bermakna int.
X jadi tidak ditandatangani, yang hanya bermaksud -
anda tahu bagaimana biasanya dengan int an, anda boleh mengatakan x sama negatif 3?
Dengan int tidak bertanda, anda tidak boleh.
>> JOSEPH: Dan sekali lagi, untuk kamera, soalan adalah, apa bezanya
antara int panjang panjang dan hanya lama lama?
>> ROB: Yeah.
Jadi saya akan hampir tidak pernah menulis panjang int panjang.
Saya akan menulis panjang panjang.
>> JOSEPH: Mana-mana soalan?
>> ROB: OK.
Peringatan Jadi bodoh sedikit dari apa caranya kita mengisytiharkan pemboleh ubah dan memulakan
pembolehubah dan mengisytiharkan lain berubah dan memulakan
semuanya dalam satu langkah.
Jadi pengisytiharan pembolehubah dan ubah pengawalan tidak mempunyai
untuk tetapi boleh berada di baris yang sama.
>> Jadi kita mempunyai pengendali matematik standard yang anda digunakan untuk -
ditambah, tolak, bahagi, kali.
Terdapat juga modulo, yang kita akan lihat.
Tidak ada, sekurang-kurangnya C, kuasa terbina dalam
Eksponen pengendali tanda sisipan.
Nah, ada pengendali tanda sisipan, tetapi ia bukan kuasa.
>> JOSEPH: Tetapi ia tidak Eksponen, ya.
>> ROB: Jangan gunakan tanda sisipan yang untuk menganggap bahawa ia bermakna
seperti kuasa dua atau apa sahaja.
Jadi beberapa perkara yang perlu fikiran tentang bahagian.
Saya akan berdiri.
Yang diisytiharkan jawapan memulakan.
Oleh itu, kita katakan jawapan apungan sama 1 dibahagikan dengan 10.
Cetak jawapan kepada dua tempat perpuluhan.
>> Dan ini adalah jenis perkara yang saya akan manusia printf untuk memikirkan bahawa
apa yang palang pintu itu%, dot, 2f bermakna?
Dan itu hanya bermakna, baik, mengabaikan 0.2.
Dan%, f adalah apa yang kita gunakan untuk mencetak terapung.
0.2 mengatakan, cetak yang terapung ke dua tempat perpuluhan.
Jadi program ini mempunyai pepijat, dan anda mungkin telah melihat ini sebelum dalam beberapa
kursus CS terlebih dahulu.
Tetapi apa yang bug yang?
>> SPEAKER 5: Zero.
>> ROB: Yeah.
Oleh itu, apabila kita katakan, jawapan sama 1 dibahagikan dengan 10, kita mahu
menjawab untuk menjadi 0.1.
Tetapi 1 dibahagikan dengan 10, 1 adalah integer, 10 adalah integer.
Dan sebagainya apabila kita melakukan sesuatu integer dibahagikan dengan integer, kita akan kembali
integer.
Jadi 1 dibahagikan dengan 10 adalah 0.1.
>> Sejak ia memerlukan untuk memberi kita integer, ia hanya akan buang yang
tempat perpuluhan dan mengatakan bahawa jawapannya adalah 0.
Dan sebagainya apabila kita mencetak menjawab di sini, ia akan mencetak 0.00.
>> JOSEPH: Dan hanya sebagai nota, ia sebenarnya melemparkan jauh apa yang selepas
titik perpuluhan.
Jadi, jika anda bukan mempunyai 6 dibahagikan dengan 10, anda mungkin berfikir bahawa ia akan memberikan anda
0.6 dan kemudian anda akan pusingan sehingga 1.
Tetapi sebenarnya, apa yang berlaku apabila ia menaip tugas-tugas itu adalah bahawa ia jatuh apa yang
selepas titik perpuluhan.
Jadi 0.6 tidak menjadi 0.
>> ROB: Yeah.
Dan kita akan berkata truncate untuk itu.
Jadi, setiap kali anda membuang int satu, perpuluhan itu dipenggal.
Jadi menetapkan untuk itu - ada sebenarnya dua.
Dan saya akan melakukan kedua itu, kerana satu ini adalah menetapkan yang lebih mudah.
>> Jadi, satu menetapkan adalah menggunakan pelampung dalam bahagian ini.
Dan benar-benar, anda hanya perlu membuat salah seorang daripada mereka apungan.
Tetapi ia agak lebih jelas hanya untuk membuat kedua-dua mereka terapung.
Jadi 1.0 dibahagikan dengan 10.0 adalah membahagikan dua pelampung.
Jadi jawapan akan berakhir menjadi apungan, dan supaya anda akan
betul mencetak 0.10 di sini.
>> Sesuatu yang tidak berfungsi dengan baik kira-kira iaitu, dengan baik, pasti, ia adalah mudah
cukup untuk menukarkan 1 kepada terapung dengan menjadikannya 1.0.
Tetapi bagaimana jika sebaliknya kita mempunyai dua integer seperti int x sama 1 dan int y
sama dengan 10, dan kemudian kita mahu untuk melakukan x dibahagikan dengan y?
Jadi ia tidak mudah untuk hanya melakukan x.0 atau sesuatu.
>> Jadi menetapkan untuk yang pemutus.
Jadi pemutus adalah satu cara di C untuk menukar dari satu jenis pembolehubah yang lain.
Jadi di sini, 1 adalah integer.
Dan dengan meletakkan apungan ini di hadapan ia, kami pemutus 1 kepada apungan.
Dan hal ini akan menukar 1 kepada 1.0.
Dan ini akan menukar 10 kepada 10.0.
>> Dan kemudian perkara berkelakuan sama seperti yang versi sebelumnya kita hanya menunjukkan
di mana, seperti yang diharapkan, kita akan mendapat 0.10 dan ia akan mencetak itu.
Dan yang boleh kita lakukan ini dengan pembolehubah, juga.
Oleh itu, kita boleh berkata, apungan x dibahagikan dengan apungan y.
>> JOSEPH: Mana-mana soalan?
>> ROB: Jadi sama seperti dalam matematik biasa, kita mempunyai pengendali keutamaan.
Jadi dalam kelas matematik, anda lebih cenderung untuk memanggil ia perintah operasi.
Di sini, istilah rasmi adalah keutamaan operator.
Tetapi keutamaan pengendali, atau yang paling pengendali, adalah seperti yang anda inginkan.
>> Jadi sama seperti dalam matematik, 2 kali 10 adalah akan dikumpulkan lebih rapat daripada
ini 10 dibahagikan dengan 2 dan kemudian 2.
Perintah operasi, ia akan melakukan 2 kali 10, 10 dibahagikan dengan 2, dan kemudian
ia akan melakukan 20 campur 5 campur 2.
Jadi ia seperti yang dijangkakan, dan anda boleh menggunakan kurungan untuk ungkapan kumpulan.
Anda tidak boleh menggunakan kurungan persegi untuk ungkapan kumpulan.
Yeah?
>> SPEAKER 5: Bolehkah anda benar-benar hanya kembali kedua?
Bolehkah anda membuang int untuk rentetan?
>> ROB: Jadi, dalam C, anda boleh membuang apa-apa anda mahu apa sahaja yang anda mahu.
Itu tidak bermakna ia satu perkara yang baik untuk dilakukan.
Oleh itu, apabila anda membuang int untuk rentetan, yang bermaksud -
dan kami akan masuk ke dalam ini lebih teliti -
>> JOSEPH: Banyak kemudian.
>> ROB: Saya tidak mahu mengatakan banyak kemudian, jadi saya cuba mengubah hukuman saya.
Kami akan masuk ke dalam lebih teliti kemudiannya di mana benar-benar apabila anda mempunyai
tali boleh ubah -
jadi rentetan boleh sewenang-wenangnya panjang, bukan?
Dan kita telah mengatakan bahawa adalah int empat bait dan panjang panjang adalah lapan
bait dan apungan adalah empat bait.
Jadi tali, seperti int, hanya mempunyai sebilangan bytes kepadanya.
Dan yang akan menjadi empat bait.
>> Tetapi rentetan boleh agak sewenang-wenangnya panjang, bukan?
Jadi hello dunia sudah, jika itu 10 watak-watak atau apa sahaja, yang sudah
akan menjadi sejak 4 bytes Saya boleh dimuatkan ke dalam rentetan.
Dan jadi bagaimana tali benar-benar berkesan ialah mereka di mana dalam ingatan rentetan yang
sedang disimpan.
>> Dan sebagainya di sini, apabila saya berkata tali x sama dunia hello, di dalam x ialah
hanya berkata, oh, hello dunia disimpan di tempat ini tertentu dalam ingatan.
Jadi, jika kita cuba untuk membuang integer kepada tali, maka kita cuba untuk mentafsir
beberapa bahagian rawak memori sebagai rentetan.
Dan yang hampir selalu memecah sesuatu.
>> JOSEPH: Tetapi jika mengelirukan yang anda, kita akan menutupinya
lebih mendalam kemudian.
>> ROB: Yeah.
Ini adalah di mana anda akan untuk masuk ke dalam petunjuk.
Dan ini adalah sebahagian penting dua minggu kursus ini.
>> SPEAKER 6: Adakah ia berfungsi seperti objek dalam bahasa lain atau tidak benar-benar?
>> ROB: Jadi, dalam bahasa lain, objek akan diwakili menggunakan petunjuk.
Ia bukan perkara yang sama, walaupun.
Mana-mana pemikiran?
>> JOSEPH: No
Tiada pemikiran.
>> ROB: OK.
>> JOSEPH: Seterusnya.
>> ROB: Hanya pergi dengan itu.
Baiklah.
Jadi modulo.
Sama seperti kita perlu ditambah, tolak, membahagi, dan berganda.
Jadi modulo adalah salah satu anda boleh tidak lihat sebelum ini.
Dan ia hanya berkata, memberi saya baki.
Jadi 55% 10.
Baki melakukan 55 dibahagikan sebanyak 10 adalah 5.
Jadi 55% 10 adalah 5.
Dan 3% 5 ialah 3.
8% 8 0.
16% 15 akan 1.
>> JOSEPH: Satu perkara yang perlu ambil perhatian dengan ini, juga, adalah ia mungkin tidak berfungsi seperti yang diharapkan
jika anda menggunakan nombor negatif.
Jadi negatif 5% 4, sesetengah orang mungkin berfikir bahawa adalah -
apa yang anda akan berfikir negatif 5% 4 akan?
>> SPEAKER 5: Satu.
>> JOSEPH: Jadi ada pula yang mengatakan satu, ada pula yang mengatakan satu negatif.
Tetapi apa -
>> ROB: Saya akan tidak mempunyai kata seorang daripada mereka.
>> JOSEPH: Dua, maaf.
Ada yang mengatakan -
>> ROB: Tiga.
>> JOSEPH: Tiga?
>> ROB: Negatif -
bagaimana akibat - negatif lima -
>> JOSEPH: Tiga, tiga, tiga.
Maaf.
Kerana modulo, secara amnya, apabila anda telah dilihat di tempat lain, ia biasanya bermaksud
mengembalikan nombor positif, bukan?
>> ROB: Oleh itu, apabila kita katakan dalam matematik,% 10 ini, mereka cenderung mahu memberi anda -
jika kita arena dengan 10, maka kita menjangka untuk mendapat nombor antara 0 dan 9.
Di sini, itu tidak berlaku yang anda akan mendapat nombor negatif dikembalikan.
>> JOSEPH: Jadi negatif 5% 4 adalah negatif 1.
>> ROB: Tetapi ia jarang berlaku bahawa anda arena-ing nombor negatif untuk memulakan.
Langkau ini.
>> JOSEPH: Yeah.
>> ROB: Meh.
OK.
Jadi satu perkara terakhir untuk menunjukkan kira-kira kereta berhias adalah ia tingkah laku yang berbahaya,
tetapi terapung tidak yang tepat perwakilan.
Jadi kembali kepada bytes lagi, ingat yang int adalah sentiasa empat bait dan
apungan sentiasa empat bait.
Jadi contoh Lucas adalah cukup baik.
>> Jadi berfikir 1 dibahagikan dengan 3.
Jadi 0,3333333.
Jika saya hanya mempunyai 32 bit, bagaimana boleh Saya menyimpan 0,33333 sebenarnya?
Dan mungkin, untuk apa jua alasan, anda berkata, semua betul, baik, mari kita hanya mengatakan
yang khusus ini 1011001, mari kita hanya mengatakan bahawa harus 0,333333.
Nah, anda hanya mempunyai beberapa terhingga bit-bit, jadi ia adalah mustahil untuk
mewakili setiap titik terapung tunggal nilai yang diberi hanya 32 bit.
>> Nah, ia adalah mustahil untuk mewakili mana-mana Nilai titik apung diberikan terhingga -
dengan baik, diberi beberapa terhingga bit.
Jadi isu di sini adalah, baik, apabila kita digunakan untuk mencetak kepada dua tempat perpuluhan,
kami tidak betul mendapatkan jawapan 0.10.
Tetapi di bawah hood, ia benar-benar disimpan sebagai sehampir mungkin kepada
0.10 sebagai bit-bit boleh mewakili.
Adakah ini pada slaid seterusnya?
Atau adakah ia tidak?
>> JOSEPH: Ya, ia itu.
>> ROB: Blegh, blegh.
>> JOSEPH: Ya, anda boleh hanya tarik nota sedikit.
>> ROB: saya hanya akan untuk zum dalam kepada yang terakhir pada itu.
Alamak, itu [didengar].
Jadi nombor itu.
Itulah yang akan dicetak jika kita menjalankan program itu.
Dan notis itu bukan benar-benar satu masalah besar jika kita hanya mengambil berat tentang seperti
2-3 tempat perpuluhan.
Seperti kita hanya asalnya dicetak 0.10, dan sebab itu kita melihat apa yang salah.
Tetapi sebaik sahaja kami mula mendapat ke dalam tepat, bilangan tepat yang ia
mewakili, kita lihat bahawa ia tidak boleh betul-betul mewakili 0.1.
>> Dan sebahagian daripada masalah di sini adalah seperti, semua betul, itu halus, tetapi, juga,
pertama, bagaimana jika kita cuba untuk berbuat demikian, jawapan sama sama 0.1?
Adakah itu akan kembali benar atau palsu?
Dan oleh itu sukar untuk mengatakan.
Saya rasa ia sebenarnya mungkin kembali benar.
Adakah ia pertama -
Saya tidak tahu.
Jawapannya ialah sebaik sahaja anda mula berurusan dengan mata yang terapung, anda cantik
banyak tidak perlu menggunakan kesaksamaan kerana ketakpersisan ini.
>> Dan untuk semua yang anda tahu, ia adalah seratus yang tempat perpuluhan bahawa
titik apung tidak dapat untuk mengendalikan dengan betul.
Dan sebagainya kesaksamaan hanya akan gagal walaupun walaupun bilangan - jika anda telah
menggunakan nombor yang tepat, nombor harus telah sama.
Ia sepanjang seperti 50 pengiraan menggunakan terapung
mata yang, kesilapan yang boleh membina naik dan naik dan ke atas, dan
perkara hanya mendapat salah.
>> JOSEPH: Dan ada telah benar-benar contoh-contoh terkenal berlaku ini.
Seperti jurutera NASA telah mendapat ini salah, roket menyebabkan untuk meletup dalam
udara selepas mereka telah dilancarkan.
Dan banyak isu-isu seperti itu.
Jadi yeah.
>> SPEAKER 6: Apabila kamu berkata 0.3 f, ia truncate yang lain?
Atau adakah ia pusingan atas atau ke bawah?
>> ROB: Akan printf pusingan ia?
>> JOSEPH: Saya rasa truncates printf.
>> ROB: OK.
Oleh itu, kita juga boleh pergi di sebaliknya arah mana ini, dalam kes ini,
yang paling dekat ia boleh mewakili 0.1 adalah dengan nombor ini.
Yang paling dekat ia mungkin dapat mewakili 0.2 adalah di sebaliknya
arahan, 0,199999996356 atau sesuatu.
Jadi, jika kita pergi dalam arah yang perkara, maka printf 0.3 f akan kembali
1.99 bukannya 2.00.
>> JOSEPH: Dan saya tidak sepenuhnya pasti pada itu.
Anda mungkin mahu menulis kecil, sedikit program untuk hanya memeriksa itu.
>> ROB: Walaupun, apa yang kita pasti ialah jika anda cuba untuk membuang itu kepada
int, dan pemutus untuk int an akan menyebabkannya truncate perpuluhan itu, jika
anda cuba untuk membuang 1.9999999 int, anda akan mendapat 1.
Dan supaya anda secara amnya perlu menggunakan fungsi pusingan di perpustakaan matematik.
Soalan?
OK.
>> JOSEPH: Jadi beralih kepada syarat-syarat dan ungkapan Boolean.
Jadi, anda telah melihat sebelum ini.
Dan sebenarnya, saya memastikan saya komputer dalam format yang betul di sini.
Ruang.
Maaf, kita akan perlu berurusan yang sedikit dengan potong di tepi.
>> Tetapi yeah, anda semua telah melihat ini sebelum di Scratch.
Jadi hak ini di sini adalah ungkapan yang digunakan dalam
kenyataan bersyarat.
Jadi menjawab lebih besar daripada sifar akan memberitahu anda benar atau palsu.
Dan ini adalah benar-benar penting, kerana mereka membenarkan kami untuk memperkenalkan
logik ke dalam kod kami.
>> Sebagai contoh, ini adalah program yang ditulis dalam Scratch yang meminta pengguna
untuk integer dan memberitahu mereka sama ada integer bahawa mereka memberi anda adalah seorang
bilangan positif atau negatif.
Dan penukaran di sini untuk melihat adalah anda mula mencetak kenyataan itu,
memberi saya integer.
Dan kemudian anda meminta mereka untuk integer.
>> Dan kemudian anda menggunakan logik bersyarat ke atas di sini untuk menyemak sama ada bilangan yang
sebenarnya lebih besar daripada sifar atau tidak.
Jadi di sini kita mempunyai ungkapan Boolean dalam bersyarat Sekiranya kenyataan.
Adakah terdapat apa-apa soalan?
Adakah terdapat apa-apa soalan tentang itu?
OK.
>> Jadi tidak lebih daripada sekadar lebih besar daripada, sudah tentu.
Anda boleh membina ungkapan Boolean menggunakan kebanyakan macam perkara yang anda
akan berfikir dalam matematik.
Jadi lebih besar daripada.
Yang sepatutnya menjadi kurang daripada.
Maaf.
Dan jarak.
>> ROB: Allah melarang anda meninggalkan ia.
>> JOSEPH: Baiklah.
Jadi lebih besar daripada, kurang daripada, lebih besar daripada, atau sama dengan, kurang
daripada, atau sama dengan.
Kami menggunakan setaraf dua untuk memeriksa kesaksamaan, kerana tunggal sama cara
tugasan, bukan?
Ya.
Dan kemudian kita boleh juga tidak sama dengan menggunakan tanda seru, sama.
>> Dan simbol tanda seru boleh juga dilanjutkan bahawa jika anda mahu
untuk boot mana-mana jenis Boolean bersuara, anda boleh berbuat demikian.
Jadi ini akan menilai untuk benar jika jawapan kurang
daripada atau sama dengan sifar.
Soalan mengenai itu?
OK.
>> Jadi, anda juga boleh menggabungkan ini ungkapan menggunakan logik Dan dan
logik Or.
Jadi ini adalah hanya simbol Dan, yang sepatutnya Shift, 7.
Dan ini adalah simbol paip, yang merupakan tidak kes yang lebih rendah L. Ia adalah salah satu yang
yang sesuai di atas kunci Masukkan anda.
Jadi, anda menggunakan dua ini untuk melambangkan logik Dan logik Or.
>> Jadi ini hanya akan kembali benar jika jawapan adalah satu, dua, tiga, atau empat.
Dan ini hanya akan kembali benar jika jawapan adalah di luar yang mana pihak.
Jadi ia bukan satu, dua, tiga, atau empat.
Dan cara anda akan menggunakan bahawa dalam ungkapan -
>> ROB: Atau sifar atau lima.
>> JOSEPH: Sifar atau lima.
Maaf.
Ya, ya, ya.
OK.
Dan di sini sekarang, dengan cara yang sama anda akan menggunakan ungkapan itu, yang lebih kecil
sebelah ungkapan satu Jika bersyarat pernyataan, anda juga akan menggunakannya yang
Cara yang sama dengan hanya meletakkannya di dalam kurungan penyata Jika.
Jadi printf ini hanya akan api jika jawapan adalah satu, dua, tiga, atau empat.
Soalan mengenai menggabungkan ungkapan?
>> Jadi terdapat satu lagi bersyarat membina kita memanggil Jika / lain.
Jadi, pada asasnya, ini sekarang bermakna, OK, Jika sesuatu yang saya mahu untuk memeriksa tidak
benar, kemudian pergi ke lain dan melakukan tindakan yang lain.
Jadi dalam kes ini, saya bertanya pengguna untuk integer.
Adalah integer lebih besar daripada sifar?
Ya?
Dengan baik, maka mereka memilih nombor positif.
Jika tidak, maka ia mesti mempunyai menjadi negatif atau sifar.
Jadi anda pilih nombor negatif atau sifar dalam kes ini.
Ya.
Atau sifar.
>> Dan maka kita juga mempunyai Jika / Else, Jika dan lain.
Jadi ini membolehkan kita melaksanakan urutan perkara hanya jika yang pertama gagal.
Jadi dalam kes ini, sekarang kita sedang membuat yang terakhir anda memilih sifar.
Jadi, jika mereka tidak mengambil yang positif ataupun nombor negatif, maka mereka mesti
telah memilih sifar.
Jadi ia hanya pergi ke bawah rantaian seperti ini.
>> Jadi satu contoh bagaimana seorang Jika adalah berbeza dari -
satu Jika / lain adalah berbeza daripada hanya satu urutan Ifs.
Dan ini adalah satu soalan biasa yang orang bertanya adalah, baik, jika anda mendapat seperti
95 di CS50, apa yang akan ini program memberitahu anda?
>> SPEAKER 5: Anda mendapat gred A.
>> JOSEPH: Ya.
Anda mendapat setiap tunggal salah seorang daripada mereka yang betul.
Anda dapat A, anda mendapat B, anda mendapat C dan D, betul?
Jadi semua ini mendapatkan dinilai teratur.
Jadi sementara 95 adalah lebih besar daripada 90, ia juga lebih besar daripada 80, ia juga
lebih besar daripada 70, dan ia juga lebih besar daripada 60.
Jadi anda mendapat semua orang-orang gred.
Dan saya menganggap anda akan hanya mahu A.
>> Cara untuk menetapkan bahawa adalah untuk menggantikan mereka yang lain / Jika 's.
Jadi dalam senario ini, ia melihat bahawa 95 adalah lebih besar daripada 90, dan kemudian ia
tidak menilai selebihnya penyata.
Apa-apa soalan tentang itu?
>> Jadi terdapat satu lagi jenis bersyarat struktur yang kami ada di sini yang kami
memanggil satu kenyataan suis.
Jadi ini membolehkan anda untuk memeriksa pada dasarnya apa nilai nombor yang anda meletakkan
ke dalam penyata suis.
Jadi, dalam senario ini, kita beralih pada n, dan kami berkata, oh, jika n
satu, kemudian mencetak kenyataan itu.
Dan kemudian memecahkan, yang bermaksud keluar keluar daripada penyata suis.
>> Jika ia bukan satu, maka, baik, hanya akhirnya menyemak semua kes-kes.
Dan sebagainya ia memeriksa jika ia satu atau dua atau tiga, dan ia mencetak sewajarnya.
Dan apa kata kunci yang lalai ini turun di sini cara adalah jika mereka tidak memasuki mana-mana
daripada mereka, kemudian berkata tidak sah.
Jadi katakan saya meminta n dan pengguna memberikan saya empat.
Nah, ia perlawanan tiada kes-kes, jadi ia akan mencetak apa yang di
seksyen lalai.
Ya, soalan?
>> SPEAKER 5: Bolehkah anda menggunakan Boolean ungkapan dan bukan
satu, dua, atau tiga?
>> JOSEPH: Jadi soalan itu boleh anda gunakan Ungkapan Boolean bukan satu,
dua, dan tiga?
Dan dalam C, saya percaya anda tidak boleh berbuat demikian.
Tetapi dalam bahasa lain, yang anda mungkin hadapi di akhir
semester seperti JavaScript, anda boleh.
Nah, anda akan mempunyai untuk mengira pertama bahawa nilai dan kemudian menggunakannya dalam
menukar kenyataan.
Yeah?
>> ROB: Jadi sebahagian daripada manfaat suis kenyataan adalah fikirkan jika anda melakukan ini
sebagai Jika / lain, jadi seperti jika n sama sama dengan satu atau apa sahaja.
Lagi / Jika n sama sama dua, apa sahaja.
Lagi / Jika n sama sama tiga.
Jadi cara program itu akan dijalankan adalah ia berurutan akan turun senarai itu
dan cek, adalah n satu?
Nope.
N dua?
Nope.
N tiga?
Yeah.
Melakukan ini.
>> Manakala dengan penyata suis, ia sebenarnya mampu untuk menyusun ia menjadi
benar-benar cepat.
Dan sebaik sahaja ia berkata suis, ia berkata, semua betul, n adalah dua, saya
dengan serta-merta akan melompat ke mana Saya sepatutnya bermula melaksanakan.
Saya tidak akan periksa, adalah n satu, n dua?
Ia segera boleh mula melakukan apa yang ia sepatutnya lakukan.
>> Dan kerana itu, ia tidak boleh mengambil syarat Boolean.
Atau jika tidak, ia akan perlu melakukan berurutan, seperti, semua betul, adalah n
lebih besar daripada sifar?
Lagi yang n lebih besar daripada 10 atau apa sahaja.
>> JOSEPH: Dalam kes ini, jika anda menggunakan Jika / Else, Jika, kemudian suis akan
berjalan kira-kira tiga kali lebih cepat daripada Jika / Else, Jika.
Kami boleh mengatur suis dalam apa-apa dengan cara yang kita tidak memecahkan
selepas setiap kes.
Jadi dalam kes ini, saya pembahagian yang nombor yang kita pilih ke dalam satu dan
dua bukan jumlah yang tinggi dan tiga yang nombor yang tinggi.
>> Jadi dalam kes ini, jika n adalah salah satu atau dua, ia akan melanda kes itu dan kemudian ia akan
jatuh melalui, kerana tidak ada rehat.
Dan ia akan berakhir di sini.
Jadi, jika kita memilih satu, ia akan melakukan printf yang dan kemudian memecahkan supaya tiada
ini dilaksanakan.
Dan sudah tentu, jika mereka masuk dalam tiga atau sesuatu yang lain, maka ia akan melangkau
mereka dan tidak pergi ke sana, dan ia akan melaksanakan sebaliknya
garis sepadan.
Adakah terdapat apa-apa soalan tentang itu?
Ya?
>> SPEAKER 4: Adakah anda mendapat ralat jika anda mempunyai berehat selepas kes satu tetapi ia
tidak mempunyai sesuatu untuk itu lakukan?
>> JOSEPH: Jadi soalan itu akan anda ralat jika anda mempunyai rehat selepas
dalam hal keadaan kes satu tetapi tiada apa-apa yang perlu dilakukan?
Dan jawapannya tidak.
Anda tidak akan benar-benar mendapatkan ralat.
Ya, mm hmm.
>> Jadi sebagai jenis perubahan sedikit di sini, Saya akan meletakkan printf di sini.
Whoops.
Jadi apa ini akan mencetak jika Saya meletakkan satu dalam sebagai input?
Yeah.
Ia akan memberitahu anda ia tidak mengambil sebilangan besar dua kali, bukan?
Kerana ia akan melanda kes pertama, ia tidak akan berbuka, dan ia akan jatuh
melalui dengan kes kedua.
Apa-apa soalan tentang itu?
>> ROB: Adakah anda mempunyai soalan lain?
>> JOSEPH: OK, sejuk.
Baiklah.
Jadi ada sesuatu yang lain yang kita panggil pengendali pertigaan mana merupakan
sintaks silih ganti untuk melakukan Jika dan maka yang lain.
Dan ia membolehkan anda melakukan semuanya dalam satu baris.
Jadi, dalam program ini, Saya meminta pengguna untuk n.
Dan jika n adalah lebih besar daripada 100, saya memberitahu mereka mereka memilih bilangan yang tinggi.
Lagi yang saya memberitahu mereka bahawa mereka memilih nombor yang rendah.
>> Oleh itu, kita boleh menggunakan sintaks benar-benar panjang ini, tali, S, dan kemudian memeriksa jika n adalah
melebihi 100 dan menetapkan dengan sewajarnya.
Tetapi kita boleh membuat ini lebih ringkas dengan menggunakan sintaks ini pengendali pertigaan
yang melibatkan soalan tanda dan noktah bertindih.
Jadi tanda tanya pada dasarnya bertanya soalan, betul?
>> ROB: Mungkin zum dalam pada itu.
>> JOSEPH: Ya.
Mata yang bagus.
Jadi ini adalah pengendali pertigaan.
Saya mula-mula bertanya soalan, n lebih besar daripada 100?
Jika ia, maka saya melaksanakan yang pertama sebahagian sebelum kolon.
Jika tidak, maka saya melaksanakan Bahagian kedua selepas kolon.
Jadi, jika n adalah lebih besar daripada 100, maka ia picks tinggi dan meletakkan
itu ke dalam tali s.
Jika n adalah kurang daripada 100, ia picks rendah dan kemudian meletakkan itu ke dalam tali s.
Supaya akan memeluwap sebahagian besar ini ke dalam hanya garis yang satu.
>> SPEAKER 5: Adakah itu popular?
>> JOSEPH: Ya, ia adalah agak popular untuk perkara di mana pada dasarnya anda mahu
jangan tugasan berdasarkan beberapa jenis keadaan.
Dan dalam kes ini, kita sedang berusaha untuk menetapkan nilai kepada rentetan s.
Ia tidak begitu -
Saya rasa saya tidak benar-benar lebih suka dalam kes-kes lain.
Tetapi ia amat berguna untuk tugasan ini.
>> ROB: Itulah corak agak biasa di mana anda mempunyai beberapa pembolehubah yang
anda akan katakan, jika sesuatu, tetapkan berubah-ubah ini kepada satu nilai; lagi, tetapkan
berubah-ubah ini kepada nilai yang lain.
Dan itu adalah senario di mana menggunakan pertigaan a.
>> JOSEPH: Dan anda menyimpan banyak garis-garis, bukan?
Dan ia hanya membuat kod anda boleh dikatakan sedikit lebih senang dibaca.
Ya, soalan?
>> SPEAKER 6: Untuk pertigaan, anda boleh pergi, setaraf tali s s, tanda tanya?
Dan kemudian anda boleh mempunyai, katakan, lima pilihan yang berbeza.
Dan bergantung kepada apa bilangan n telah, anda akan memilih salah seorang daripada mereka?
>> JOSEPH: Jadi soalan itu, adakah jenis sintaks mana anda boleh melakukan tali
s sama n, dan kemudian mempunyai lebih daripada dua pilihan selepas itu tanda tanya?
Dan jawapan yang mudah adalah tidak, tidak ada benar-benar cara yang baik untuk melakukan itu melainkan jika
anda mahu sarang pertigaan berganda operator di dalam satu sama lain.
>> Anda boleh melakukan seperti n lebih daripada 100, tanda tanya, dan kemudian satu lagi
pengendali pertigaan, n lebih besar daripada 50, tanda tanya, dan sarang dengan cara itu.
Tetapi dalam senario itu, kod anda adalah mendapatkan jenis yang tidak boleh dibaca dan tidak kemas,
dan ia mungkin lebih baik untuk hanya pergi ke Jika kenyataan / lain pada ketika itu.
>> ROB: Dan juga, sebagai nota sampingan, PHP salah melaksanakan pertigaan yang
pengendali itu yang ternaries bersarang tidak bekerja seperti yang sepatutnya.
>> JOSEPH: Yeah.
Jadi ia mendapat sedikit mengelirukan, terutamanya apabila anda pergi
untuk bahasa yang berbeza.
>> ROB: Ia mengelirukan cukup bahawa bahasa adalah salah mengenainya.
>> JOSEPH: Jadi sebenarnya, hanya untuk menjelaskan, tidak semua orang tahu apa yang
% S tidak di sini?
Apa-apa soalan tentang itu?
Saya rasa hanya untuk kamera,% s pada dasarnya membolehkan kita meletakkan pemegang tempat yang
untuk rentetan.
Dan kemudian pada akhirnya, kita menentukan bahawa berubah-ubah kita mahu dimasukkan ke dalam ini
pemegang tempat s.
Jadi yang pada dasarnya mengambil s dan ia meletakkannya di sini.
Dan kemudian ia akan mencetak, anda pilih yang tinggi atau anda pilih nombor yang rendah.
OK.
>> Jadi gelung membolehkan anda untuk melakukan perkara-perkara dalam usul bulat, bukan?
Anda mungkin temui ini dalam Gores dalam bentuk gelung Selamanya
atau Ulang Sehingga atau Ulang tertentu beberapa kali.
Lalu mengapa ini baik untuk kita?
Nah, dalam C, mari kita katakan kita ada ini lagu dilaksanakan di Scratch bahawa
menyanyi, ini adalah lagu yang tidak pernah berakhir.
Ia hanya pergi pada dan pada dan selama-lamanya dan selama-lamanya.
Nah, anda tidak boleh benar-benar membuat satu program yang yang mempunyai nombor terhingga printf
kenyataan di dalamnya, bukan?
>> Jadi dalam senario ini tertentu, salah satu cara bahawa anda boleh membuat kerja-kerja ini dan
untuk menjadikannya mencetak selama-lamanya adalah untuk sebaliknya menggunakan gelung Walaupun.
Jadi gelung Walaupun akan melaksanakan apa yang dalam badan kedua-dua penyokong gigi yang
kepunyaannya berdasarkan apa keadaan ini.
Jadi dalam contoh ini tertentu sebelum ini, jika kita ingin mencetak ini selama-lamanya, apa yang
kita mungkin lakukan?
Nah, pasti, bukan?
>> Jadi ini jenis menggabungkan idea beberapa ungkapan Boolean
bersama-sama dengan gelung.
Dan kita belajar tentang Boolean ungkapan sebelumnya.
Jadi apabila keadaan bahagian dalam Walaupun itu masih benar, gelung ini
akan melaksanakan pada dan pada dan pada.
Dan dalam kes ini, jika kita hanya membekalkannya dengan benar, ini menyebabkan tidak terhad
gelung yang mencetak lagu pada dan pada dan menurut kehendak kami sebelum tanpa
mempunyai satu program yang mempunyai terhingga beberapa kenyataan printf, yang merupakan
tidak mungkin.
>> Jadi lebih compellingly, walaupun, anda boleh menggunakan ini dengan
berubah dan syarat.
Jadi katakan kita mahu mengulangi frasa, benar-benar gila, 10 kali.
Jadi apa yang anda boleh lakukan dengan gelung Walaupun adalah anda pertama boleh memulakan kaunter
luar boleh ubah daripada Walaupun gelung hingga 10.
Dan kemudian pada dasarnya, setiap kali anda pergi Walaupun melalui gelung, anda mencetak
penyata dan kemudian anda mengurangkan kaunter ubah sehingga pada akhirnya,
pada satu ketika, sekali kita menolak saya cukup kali, 1 dari saya kali cukup -
dan hanya untuk menjelaskan, saya tolak tolak bermakna saya sama saya tolak 1.
>> Yang pada dasarnya akan membawa saya turun ke titik di mana sekali saya mencecah sifar, ini
keadaan tidak lagi benar dan supaya ia keluar daripada gelung.
Jadi benar-benar gila hanya mencetak sebanyak 10 kali.
Apa-apa soalan mengenai gelung Walaupun?
OK.
>> Jadi ada cara yang boleh kita lakukan apa yang kita hanya lakukan dengan cara yang lebih ringkas dengan
apa yang kita panggil Bagi gelung.
Jadi gelung Untuk terdiri daripada pengawalan, keadaan, dan
mengemas kini, seperti yang kita mempunyai di hadapan dalam gelung Walaupun ini.
Jadi mari kita membaca.
Dalam gelung Walaupun ini, kami mempunyai pengawalan, maka kita mempunyai
keadaan yang kita diperiksa.
Dan kemudian kita mempunyai kemas kini langkah di atas.
>> Dengan gelung Kerana, ini pada dasarnya mengambil ketiga-tiga perkara dan memeluwap ia
ke dalam satu baris.
Jadi perkara pertama yang ia dalam Untuk gelung adalah pengawalan.
Dan kemudian anda lakukan dengan koma bernoktah, dan kemudian anda keadaan, yang saya
lebih besar daripada sifar pergi di sana, dan kemudian langkah kemas kini.
Jadi ini mendapat dilakukan di sangat hujung badan gelung.
Jadi kedua-dua program adalah yang hampir sama.
>> Apa-apa soalan?
Jadi apa yang salah satu perbezaan antara kedua-dua?
Bolehkah sesiapa menunjukkan ia keluar?
Ia mungkin agak halus.
Ia hanya satu perbezaan yang sangat kecil.
Ya?
>> SPEAKER 5: Anda tidak akan dapat menggunakan ubah saya yang di luar Untuk gelung
[Didengar]?
>> JOSEPH: Tepat sekali.
Jadi ini adalah sesuatu yang kita akan dapat kemudiannya dipanggil skop berubah-ubah.
Tetapi pada dasarnya, ini int kehidupan saya di luar gelung Walaupun ini.
Jadi sekali gelung Walaupun ini dilakukan melaksanakan, saya akan dapat menggunakan saya kemudian
di dalam program ini.
>> Manakala dengan ini Untuk gelung, int ini saya adalah scoped dalam ini Untuk gelung.
Dan kerana ia adalah di dalam bahagian ini gelung Untuk itu, yang bermula
di kurungan dan berakhir dengan pendakap kerinting di sana.
Apa-apa yang yang diisytiharkan di dalam di sini tidak boleh digunakan di luar.
Jadi, jika saya cuba menggunakan saya di luar, ia akan beritahu saya, simbol yang tidak diisytiharkan.
Dan pada dasarnya, saya tidak akan dapat menggunakannya.
>> ROB: Dan juga, 10 tahun yang lalu, dalam secara literal semua kes, pendakap kerinting adalah
apa yang anda digunakan untuk menentukan skop pembolehubah.
Jadi di sana, saya int sama dengan 10 diisytiharkan di dalam ini
set pendakap kerinting.
Dan demikian maka selagi anda cuba menggunakan saya sebelum pendakap kerinting ini, ia adalah baik.
Anda mungkin melihat apabila anda menaip membuat, anda melihat sengkang, sengkang, STD, sama, C99.
>> Jadi yang merupakan versi selepas C yang GCC telah melaksanakan yang juga memberikan
jalan pintas ini.
Jadi ini digunakan untuk tidak dibenarkan di C. Dan anda boleh lihat mengapa, kerana int ini
Saya adalah di luar pendakap kerinting ini tetapi ia masih dianggap sebagai dalam
skop ini pendakap kerinting.
Tetapi ini adalah satu perkara yang sangat mudah, dan oleh itu adalah lanjutan yang baik.
>> JOSEPH: Mana-mana soalan?
OK.
Jadi apa yang lebih berguna ialah bahawa kadang-kadang anda mahu jenis dinamik dalam
gelung anda, bukan?
Anda tidak mahu hanya semestinya mencetak betul-betul gila sepanjang masa, anda
mahu mengira turun dari 10 atau sesuatu.
Dan supaya anda boleh menggunakan pembolehubah kaunter di dalam gelung itu juga.
Dan dalam kes ini, program ini hanya mengira detik dari 10 semua jalan ke bawah.
Dan apakah ia tidak cetak?
Ia tidak mencetak sifar, betul, kerana apabila -
Ya, ia juga tidak mencetak 11.
>> Jadi ia tidak mencetak sifar, kerana apabila Saya adalah sifar, ingat, ia menilai
keadaan sebelum ia berlaku di untuk melaksanakan badan gelung.
Dan apabila saya adalah sifar, ini adalah palsu, maka ia tidak mencetak mengira turun
sifar, ia hanya akan paparkan pengiraan turun 10 semua jalan ke 1.
Jika kita benar-benar mahu ia mencetak sifar, maka kita akan meletakkan tanda sama
selepas ini lebih besar daripada tanda.
OK.
>> Jadi salah satu cara untuk melakukan pengesahan input, yang adalah apabila anda bertanya kepada pengguna untuk melakukan
sesuatu, anda ingin memastikan mereka ikuti arahan anda, adalah dengan menggunakan
gelung Walaupun, bukan?
Jadi dalam kes ini, saya meminta untuk nombor positif dan maka saya
menunggu input.
>> Dan kemudian saya diperiksa Walaupun input adalah kurang daripada sifar, terus bertanya mereka.
Jadi selagi mereka memberi saya nombor satu yang tidak positif, terus bertanya,
terus bertanya, terus bertanya.
Tetapi apa yang jenis pelik mengenai ini?
Atau apa yang nampaknya tidak optimum kira-kira struktur ini di sini?
Sesiapa sahaja?
Ya?
>> SPEAKER 6: Anda mengulangi arahan yang dua kali.
>> JOSEPH: Betul.
Oleh itu, kita mempunyai dua kenyataan printf di sini, bukan?
Jadi ada cara kita boleh mendapatkan ini hanya ke satu yang akan membuat kita
kod lebih mudah untuk membaca dan sedikit lebih bersih.
Dan kemudian kita tidak perlu telah Dapatkan dalam dua kali juga.
Dan salah satu cara anda boleh melakukan ini adalah dengan menggunakan gelung Do-Walaupun.
>> Dan gelung Do-Walaupun pada asasnya bentuk yang berbeza daripada gelung Walaupun di mana
apa yang ada di dalam pendakap kerinting mendapat dilaksanakan sekurang-kurangnya sekali.
Jadi di sini, saya mengisytiharkan, int input, di luar pertama.
Dan kemudian saya hanya mengatakan, lakukan ini arahan manakala input
adalah kurang daripada sifar.
Jadi ia mencecah Do pertama.
Ia akan sentiasa melaksanakan ini sekurang-kurangnya sekali, maka ia akan sentiasa meminta pengguna
untuk input sekurang-kurangnya sekali.
Dan kemudian ia menilai input yang, dan ia berlaku di dalam bulatan.
Ya, soalan?
>> SPEAKER 6: Adakah terdapat cara untuk melakukannya [Didengar] jenis, seperti jika anda berkata,
GetString, dan seseorang [didengar]
ada satu cara untuk [didengar]
>> JOSEPH: Jadi soalan itu, adakah cara untuk melakukan pengesahan input jika pengguna
tidak dimasukkan ke dalam hak jenis boleh ubah?
Jadi, jika kita meminta int dan mereka memberi kita tali sebagai ganti.
Dan dalam fungsi-fungsi yang kita melaksanakan untuk anda, GetInt, GetString dalam semua
fungsi-fungsi itu, mereka sebenarnya sudah melakukan yang jenis input jenis asas
pengesahan di bawah hood.
Jadi, jika anda menggunakan fungsi-fungsi yang kita memberi anda, anda tidak benar-benar perlu.
>> Tetapi jika anda mahu melihat lebih ke dalam bagaimana anda sebenarnya boleh melakukan itu, anda boleh melihat
di bawah hud di fail I/O--
tidak memfailkan, standard I / O fungsi seperti membaca dari input standard dan
output standard.
Dan anda boleh mendapatkan rasa yang lebih baik bagaimana anda mungkin berbuat demikian.
>> ROB: Salah satu isu, walaupun, adalah khusus dengan contoh yang anda
berkata, anda mengharapkan rentetan dan saya memasukkan int satu.
Bagaimana anda membezakan antara sengaja mahu yang
tali 123 berbanding yang ingin int 123?
Jadi tali, ia cukup banyak tidak ada pengesahan, ia hanya apa sahaja yang mereka
memasuki anda akan mentafsir sebagai rentetan.
>> Int adalah lebih mudah, kerana tidak kira yang input anda mengambil dari pengguna, anda
sentiasa mengambil rentetan.
Dan sebagainya rentetan yang anda boleh kemudian cek, adalah semua ini
angka sebenarnya angka?
>> JOSEPH: OK.
Apa-apa soalan mengenai gelung Do-Walaupun?
>> ROB: Oh, dan ini juga -
akan kembali ke skop, yang agak biasa kesilapan cuba menggunakan beberapa tempatan
berubah-ubah dari dalam ini Do-Walaupun gelung di dalam keadaan ini.
Dan sebenarnya, jika kita hanya perlu lagi ambil ini dan berkata, input int sama
GetInt, maka pengkompil akan menjerit pada kita, kerana input tidak wujud
di luar skop ini pendakap kerinting.
>> JOSEPH: Dan itulah sebabnya kita perlu barisan ini di sini.
OK.
Jadi, anda juga boleh keluar daripada satu gelung awal jika anda mahu.
Jadi ini adalah cara yang berbeza melaksanakan apa yang kita hanya dilaksanakan.
Dan bukannya menggunakan keadaan dalam kurungan, kami menggunakan
Sekiranya kenyataan dalam badan gelung Do-Walaupun.
>> Dan pada dasarnya, apabila input akhirnya lebih besar daripada sifar, kita akan
keluar daripada gelung.
Demikianlah kita akan pergi semua jalan ke sini.
Dan anda dapat melihat bahawa akan ini mungkin akan diutamakan dalam ini
senario, kerana ia sedikit bersih sedikit dan sedikit
sedikit lebih mudah untuk dibaca.
Manakala ini, anda jenis mempunyai garis tambahan di dalamnya.
Ia hanya sedikit lebih hodoh, Saya rasa, dalam erti kata yang.
Ya, soalan?
>> SPEAKER 4: Adakah memecahkan hanya mendapat kamu dari satu set penyokong gigi?
>> JOSEPH: Betul.
Jadi soalan itu akan putus hanya kamu dari satu gelung?
Dan jawapannya adalah ya.
Jadi jika anda telah bersarang Untuk gelung bagi Sebagai contoh, jika saya mempunyai Untuk int Saya sama dengan 0
sehingga 10 dan kemudian Untuk int J sama dengan 0 sehingga 10, jika saya keluar daripada dalaman
gelung, saya masih akan pergi untuk gelung luar.
Jadi ia akan menyimpan melaksanakan operasi di luar.
Apa-apa soalan tentang itu?
Ya?
>> SPEAKER 5: Tetapi memecahkan hanya berfungsi untuk mendapat penyokong gigi kerinting, bukan untuk yang lain
pernyataan itu?
[Didengar]
>> JOSEPH: Jadi soalan itu akan putus hanya fungsi untuk gelung berbanding dengan
kenyataan lain seperti Jika?
Dan ya, iaitu kes itu, kerana anda memecah keluar dari gelung, betul,
dalam erti kata yang.
>> ROB: Dalam kebanyakan kes, ia ini adalah jenis Jika sesuatu,
kemudian memecahkan.
Jadi anda tidak perlu memecahkan terpakai bagi Jika yang membungkus di sekitarnya.
Dan juga, ini tidak banyak gelung, tetapi ingat bahawa suis juga
dipecahkan daripada oleh rehat.
Kami melihat rehat yang digunakan dengan suis sebelum ini.
>> JOSEPH: Dan anda juga boleh menggunakan mereka dalam gelung Walaupun dan Untuk gelung.
Apa-apa soalan?
OK.
Jadi sehingga seterusnya adalah fungsi.
Jadi anda mungkin telah menggunakan salah satu BYOB ini blok dalam projek Conteng.
Dan ini pada dasarnya membolehkan anda untuk menentukan satu set
arahan untuk diikuti.
>> Dan apa yang saya maksudkan dengan itu adalah mari kita fikirkan kembali ke matematik, kanan, algebra.
Anda mempunyai apa yang kita panggil fungsi x, beberapa berubah-ubah, dan katakan ini
fungsi f x sama x campur 5.
Jadi, anda boleh memikirkan f x kerana ini hitam kotak yang mengambil masa 15 dalam dan kemudian
menghasilkan 20.
>> Jadi secara umum, fungsi adalah sesuatu yang mengambil beberapa input dan
kemudian menghasilkan beberapa output.
Dan mengapa fungsi yang baik?
Mereka yang baik untuk beberapa sebab.
Begitu juga seseorang mahu mengambil menikam apa organisasi bermakna?
Dari segi mengapa fungsi yang berguna?
Ya?
>> SPEAKER 4: Ia menjadikan anda kod lebih senang dibaca.
>> JOSEPH: Betul.
Jadi salah satu perkara adalah ia membuat kod anda lebih mudah dibaca, bukan?
Sebaliknya mempunyai seperti int x sama x kali x kali x, saya boleh mempunyai kuasa tiga x,
yang lebih mudah dibaca dan lebih mudah difahami oleh pembaca.
>> Organisasi juga dari segi membelah sehingga kod anda ke dalam terurus
bahagian, supaya bukannya cuba melaksanakan ini semua dalam satu bahagian panjang
dalam utama, anda jenis boleh berpecah ia sehingga ke dalam seperti, OK, mari kita menulis fungsi
kepada kiub sesuatu, mari kita menulis berfungsi untuk persegi sesuatu.
Dengan cara itu anda boleh berpecah ia sehingga ke kecil, bahagian kecil yang anda boleh menangani
bertentangan dengan cuba untuk menangani masalah besar sekaligus.
>> ROB: Atau walaupun kecil, bahagian-bahagian kecil yang anda dan pasangan boleh menangani.
>> JOSEPH: Yeah.
>> ROB: Jadi, daripada kedua-dua anda cuba untuk implan satu
berfungsi pada masa yang sama.
>> JOSEPH: Pemudahan.
Sesiapa mahu mengambil meneka?
Ya?
>> SPEAKER 5: Lebih pengulangan.
>> JOSEPH: Betul.
Jadi satu perkara yang boleh anda lakukan dengan pemudahan adalah bahawa itu jenis di
garis yang sama seperti semula kebolehgunaan ialah sekali saya menulis fungsi kiub, saya boleh
hanya menggunakan bahawa lebih dan lebih dan lebih sekali lagi dalam program saya bukan menaip
x kali x kali x lebih dan berulang-ulang kali.
Dan pemudahan di sini juga hanya bermakna ia membuat jenis kod anda
lebih mudah untuk debug sekali anda berpecah sehingga ini ke dalam fungsi.
Kerana anda boleh menyetempatkan mana masalah anda adalah jenis.
Apa-apa soalan?
>> Jadi idea yang lain adalah abstraksi, bukan?
Ini kotak hitam.
Seperti yang anda tahu apa yang tidak GetInt untuk menerima input daripada pengguna?
Kami telah tidak benar-benar memberitahu anda, bukan?
Semua kita telah memberitahu anda adalah GetInt tidak apa yang dikatakan, ia.
Jadi, walaupun kita tidak memberitahu anda bagaimana ia berfungsi, anda masih tahu.
>> Jadi dalam kes ini, ini adalah fungsi empat kali ganda yang tidak
perkara yang berbeza untuk input untuk menghasilkan output.
Dan anda boleh empat kali ganda bilangan yang dengan mendarabkan ia dengan empat.
Atau anda boleh apa yang kita panggil sedikit beralih ia dengan dua.
Dan kami akan meliputi ini sedikit kemudian.
Dan tidak ada keperluan untuk tahu bagaimana ini fungsi sebenarnya berfungsi selagi ia
kerja-kerja seperti yang dinyatakan.
>> Jadi di bawah hood, saya boleh seperti, kembali kali input
lapan dibahagikan dengan dua.
Dan anda tidak akan tahu, bukan?
Semua yang anda perlu tahu ialah ia melakukan apa yang ia berkata.
Jadi itu perkara yang berguna mengenai abstraksi.
>> Dan perkara yang lain adalah bentuk idea ini daripada localizing kod anda kepada satu
bahagian tertentu.
Jadi, jika anda mempunyai masalah, anda tidak perlu pergi di seluruh kod anda cuba
untuk menetapkan di mana masalah itu.
Jadi dalam kes ini, saya telah melaksanakan Cube salah.
Saya fikir kiub telah mendarabkan oleh tiga.
>> Jadi dalam kes ini, ini adalah salah satu program yang hanya telah membahagi dengan tiga
di mana-mana.
Dan terdapat satu lagi program yang telah kiub yang difaktorkan keluar ke satu majlis.
Dan sekarang jika saya mahu menetapkan kesilapan saya di sini, saya perlu menetapkan setiap baris
kod dalam program ini.
Manakala di sisi lain, jika saya menggunakan fungsi, saya hanya perlu untuk menukar
apa yang salah di satu tempat.
>> Jadi dalam bidang sains komputer, kita memanggil input dan output.
Input dipanggil parameter atau hujah-hujah, dan output dipanggil
kembali nilai-nilai.
Dan kita akan melihat bagaimana ini membantu kita jenis daripada menentukan fungsi dalam satu saat.
Jadi ini adalah definisi fungsi untuk cubing.
Jadi ia mengambil input, dan kemudian ia kembali bahawa masa beberapa
sendiri tiga kali.
Jadi mari kita memecahkan ini.
>> Jadi kita mempunyai header fungsi, yang pada dasarnya terdiri daripada tiga perkara.
Jadi kita mempunyai parameter, yang adalah, seperti yang saya katakan sebelum ini,
input ke dalam fungsi ini.
Dan kemudian kita memberikan fungsi nama.
Dalam kes ini, ia dipanggil kiub.
Dan kemudian kita menentukan apa jenis yang daripada nilai pulangan adalah.
>> Jadi dalam kes ini, fungsi kiub saya mengambil masa dalam integer dan ia juga
mengembalikan integer.
Jadi jika saya lulus dalam dua, dua integer, ia kembali lapan kepada saya, yang
ialah integer.
Jadi kembali parameter nama jenis.
Soalan tentang itu?
>> Dan maka nilai pulangan sebenarnya dinyatakan pada akhir dengan mengatakan pulangan
dan kemudian kembali apa sahaja mengandungi nilai pulangan.
Jadi dalam kes ini, jika kita meletakkan semuanya bersama-sama, satu majlis mengambil masa dalam
parameter, ia dipanggil sesuatu, dan ia mengembalikan sesuatu yang adalah jenis yang
yang kita katakan ia akan menjadi.
Apa-apa soalan?
>> Jadi bagaimana kita menggunakan fungsi?
Nah, kita menulis fungsi dan kemudian kita menggunakannya dalam program kami, bukan?
Jadi saya dipanggil ia kiub, dan maka saya boleh menggunakan kuasa tiga.
>> Tetapi apa yang penting untuk ambil perhatian adalah bahawa perkara-perkara perintah.
Jika saya mempunyai kiub bawah utama, ia akan menghadapi kuasa tiga.
Dan pada ketika ini, tiada apa-apa dipanggil kiub dalam program ini, dan ia
hanya akan menjadi seperti, saya mempunyai tidak tahu apa yang kiub adalah.
>> Jadi ia akan memberitahu anda, tersirat pengisytiharan fungsi.
Itulah kesilapan yang muncul.
Dan sebagainya dalam kes ini, adalah di bawah kuasa tiga utama, jadi ia tidak akan
tahu mengenainya.
>> SPEAKER 5: Jadi utama biasanya fungsi terakhir ditakrifkan?
>> JOSEPH: Jadi persoalannya ialah, biasanya utama terakhir
perkara yang anda akan menentukan?
Dan tidak.
Ini kerana kita biasanya suka utama untuk berada di bahagian atas, bukan?
Oleh kerana itu perkara pertama yang anda mahu pengaturcara merasmikan
program untuk melihat.
Dan jadi bagaimana kita menyelesaikan isu ini kita mahu utama untuk berada di atas, tetapi yang
fungsi-fungsi yang kita mahu, kita mahu mereka berada di bawah utama belum dapat menggunakan
mereka dalam utama?
>> Nah, kita menggunakan apa yang kita panggil prototaip fungsi.
Jadi apa prototaip fungsi asasnya adalah ia pertama mengambil apa
tandatangan atau header fungsi daripada apa yang kita mahu untuk melaksanakan turun
di sini, dan kami meletakkan ia di bahagian atas program.
>> Jadi dalam kes ini, kita katakan bahawa, baik, kemudian dalam program kami, kami akan
membuat janji untuk melaksanakan ini fungsi dipanggil kiub int, yang mengambil
input integer.
Jadi sekarang, kerana itu adalah di atas utama, utama, ia akan berkata, oh, baik,
kemudian dalam program ini, yang akan menjadi ada jadi saya boleh merujuk kepadanya, jadi saya akan
hanya biarkan ia pergi melalui sekarang.
>> Dan kemudian di bahagian bawah, kami melaksanakan kuasa tiga.
Dan kemudian utama hanya akan berkata, dengan baik, ia akan menyelesaikan pautan
kedua-dua simbol bersama-sama.
Dan kami akan menutup apa yang bermakna di kemudian hari.
Dan jadi ia akan tahu bahawa ini adalah fungsi kiub bahawa ia harus digunakan.
>> ROB: The [didengar] tentang mahu utama di bahagian bawah atau
atas, saya telah melihat kedua-duanya.
Terdapat beberapa perkara yang hanya suka untuk meletakkan utama di bahagian bawah.
Tetapi sebaik sahaja projek mendapat terutamanya besar, biasanya utama adalah dalam
memfailkan semua sendiri.
Dan pada ketika itu, seperti int talian kiub akan -
dalam stdio.h adalah sekumpulan garis-garis seperti int yang
int kiub talian input.
>> Dan supaya orang-orang prototaip perkara yang anda cenderung untuk dimasukkan ke dalam fail header, pada
mana titik, ia tidak mengapa.
Nah, ia tidak mengapa.
Mereka selalu pergi di bahagian atas.
Dan jika utama bukan fail semua sendiri, anda tidak perlu bimbang mengenai meletakkan
prototaip fungsi individu dalam fail.
>> JOSEPH: Dan kita akan mendapat yang sedikit sedikit kemudian apabila Rob mula bercakap
kira-kira menyusun.
Dan sebagainya ada juga perbezaan antara parameter dan hujah.
Dan parameter hanya apa kita panggil input ini apabila
kita menentukan fungsi.
Dan kita panggil ia hujah apabila kita sebenarnya memindahkannya ke dalam majlis itu.
>> Jadi dalam kes ini, ini merupakan satu parameter, seperti yang kita katakan sebelum ini.
Dan apabila kita benar-benar menggunakannya di sana, kuasa tiga x, maka x sendiri adalah
apa yang kita panggil hujah kepada kiub majlis itu.
>> ROB: Jadi hujah parameter adalah -
terdapat perbezaan ini, sangat keliru silih berganti.
Pada ketika ini, bagi saya, ia seperti salah satu daripada kata-kata bahawa apabila saya melihat ia di dalam
liar, saya tidak boleh membantu tetapi segera soalan sama ada mereka menggunakannya dalam
konteks yang betul, kerana perbezaan adalah cukup halus yang hanya
semua orang cenderung -
Saya hampir selalu berkata hujah tidak kira apa yang saya maksudkan.
>> JOSEPH: Dan fungsi juga berguna untuk apa yang kita panggil kesan sampingan.
Jadi fungsi boleh mengambil input, dan ia juga boleh menghasilkan sebarang output.
Jadi dalam kes ini, saya menentukan satu subrutin yang tidak mempunyai
kembali nilai.
Dan untuk menentukan bahawa, kami menggunakan apa yang kita panggil kekosongan di sini.
Dan sebagainya kesan sampingan fungsi ini ialah ia hanya mencetak barangan
keluar ke halaman.
Ia sebenarnya tidak mengambil apa-apa input, dan ia tidak
sebenarnya mengemukakan apa-apa output.
>> Tetapi ini boleh menjadi berguna dalam erti kata jika anda mahu, contohnya, debug
sesuatu dalam program anda, jika anda mahu untuk menulis subrutin kecil yang
paparkan nombor, katakan, kandungan memori atau sesuatu.
Dan sebagainya ini kesan sampingan yang kadang-kadang berguna di luar konteks
hanya suka input dan output.
Apa-apa soalan?
>> Dan untuk menamatkan segmen pasar ini, apakah program ini lakukan?
Saya akan memberikan anda semua beberapa saat untuk membaca melaluinya.
Pada tahap yang sangat asas, apa yang kita mahu katakan ialah ia Swap x dan y, bukan?
>> Jadi berapa banyak anda benar-benar berfikir ini akan menukar x dan y?
Mengangkat tangan anda.
Tiada satu.
OK.
Yang berfikir bahawa ia akan tidak menukar x dan y?
Dan jumlah yang tidak seluruh bilik.
Jadi sesetengah orang tidak pasti.
OK.
Itulah yang munasabah.
>> Jadi mari kita pergi melalui apa yang berlaku apabila anda sebenarnya memanggil fungsi pertama di
Untuk menjawab soalan ini.
Jadi ini adalah apa yang memori jenis kelihatan seperti.
Ini adalah jenis seperti model dipermudahkan apa memori kelihatan seperti apabila
anda menjalankan program.
Jadi ada sesuatu yang dinamakan timbunan ke bawah di sini dan
sesuatu yang dinamakan timbunan itu.
Dan ini berkembang ke arah pertengahan ingatan.
>> Jadi dalam kes ini, apabila anda memanggil fungsi, ia
mendapat memakai tindanan.
Dan kemudian apa sahaja yang terkandung di dalam fungsi kekal dalam apa yang kita panggil yang
bingkai tindanan fungsi ini.
Dan sebagainya untuk mendapatkan visualisasi bagus ini, let's - sebagai contoh, kita mempunyai
program utama lebih awal.
Dan dalam utama, kita dipanggil kiub.
Jadi utama pertama akan pergi pada timbunan bingkai, kerana ia fungsi yang pertama
yang dinamakan.
>> Dan kemudian apabila kiub dipanggil dalam utama, ia mendapat diletakkan di atas utama
di dalam ingatan.
Jadi apa yang anda akan melihat di sini adalah bahawa kiub mempunyai parameternya sendiri dan yang
penduduk tempatan sendiri.
Oleh itu, apabila anda benar-benar lulus sesuatu untuk fungsi, parameter yang ia
mendapat salinan dari apa yang diluluskan pada dari utama.
>> Dan untuk menjelaskan jenis ini, mari kita berjalan melalui program.
Jadi kita mempunyai tindanan, ini adalah hanya bahagian timbunan.
Dan apa yang kita lakukan adalah kita mula-mula memulakan x dan y untuk satu dan dua.
Oleh itu, kita mempunyai kotak-kotak kecil.
Mereka duduk dalam timbunan utama ini bingkai dalam timbunan.
Ia mengandungi satu dan dua.
>> Kini kita panggil swap.
Apa yang berlaku ialah kita lulus x dan y ke dalam swap, dan swap mewujudkan salinan sendiri
dari orang-orang pembolehubah untuk menggunakan di dalam bingkai tindanan itu.
Jadi sekarang di sana, kami mempunyai, yang mengandungi nilai yang x mempunyai; dan b,
yang mengandungi nilai yang y mempunyai.
Jadi satu, dua.
>> Dan anda akan melihat bahawa ini adalah berasingan daripada x dan y dalam utama.
Jadi, sekarang kita mewujudkan sementara pembolehubah mengandungi.
Kami menetapkan yang bersamaan dengan b, jadi ia perubahan dari satu ke dua.
Dan kemudian kita set b sama menggoda, yang merupakan salah.
>> Dan maka sekarang kita keluar daripada fungsi ini.
Apabila anda keluar daripada majlis itu, yang bingkai tindanan mendapat muncul off tindanan.
Kami memanggilnya menolak.
Anda menolak bingkai tindanan ke dalam tindanan dan anda pop jika off tindanan.
Dan sebagainya apa yang berlaku adalah segala-galanya yang adalah dalam timbunan rangka jenis hanya
naik dalam api.
Dan supaya tidak lagi wujud.
>> Tetapi apa yang kita lihat?
Kami tidak pernah benar-benar mengubah nilai x dan y, bukan?
Maka orang-orang tempatan untuk tinggal utama.
Dan dengan melepaskan sesuatu ke dalam swap, kami sebenarnya tidak pernah berubah nilai-nilai.
Dan apa yang kita panggil ini?
Kami menyeru yang berlalu ini dengan nilai.
>> Jadi, dalam C, apabila anda meninggal sesuatu ke dalam fungsi, ia pas mereka dengan nilai dan
membuat salinan daripada mereka untuk fungsi untuk digunakan.
Dan kita akan belajar tentang sesuatu yang dinamakan lulus dengan merujuk kemudian, tetapi itu
cara yang anda boleh menyelesaikan masalah ini.
Tetapi kita tidak akan bimbang tentang sehingga kemudian.
>> ROB: Dan sebenarnya, istilah itu, yang berlalu dengan merujuk, jadi C juga tidak mempunyai
lulus dengan rujukan.
C eksklusif telah lulus oleh nilai.
Tidak kira apa yang anda lakukan, anda sentiasa lulus salinan sesuatu.
Cuma, seperti yang saya jenis yang disebut yang sebelum ini dengan petunjuk
dan bahawa rentetan adalah benar-benar hanya empat bait menunjuk ke kurang lebih dalam ingatan.
>> Nah, jika saya mempunyai tali ini dan ia memberitahu saya bahawa adalah di mana tali -
baik, jika saya mempunyai penunjuk ini untuk ini letakkan dalam ingatan, maka saya boleh lulus
salinan yang pointer ke fungsi, dan fungsi yang masih tahu di mana di
memori itu.
Jadi kedua-dua petunjuk ini menunjuk ke tempat yang sama dalam ingatan, dan
itu bagaimana kita akan dapat untuk mengubah suai perkara di luar
bingkai tindanan semasa.
>> JOSEPH: Adakah anda mahu lakukan menyusun?
>> ROB: Tidak, ia 05:30.
>> JOSEPH: OK.
Ia adalah 05:30.
OK.
Oleh itu, kita akan meliputi menyusun saya rasa dalam bahagian seterusnya, atau seksyen anda
pemimpin akan pada ketika itu.
Dan -
>> ROB: Mana-mana soalan?
>> JOSEPH: Mana-mana soalan?
Ya?
>> SPEAKER 5: Menggunakan tali dari CS50, mana-mana fungsi-fungsi yang kita mahu menggunakan untuk
mereka, yang akan menjadi seperti fungsi C.
CS50 tidak pergi di dalam dan membuat apa-apa tambahan.
>> ROB: Betul.
Mana-mana C seperti [didengar], anda akan menggunakan mereka di tali kami.
>> JOSEPH: Dan satu perkara terakhir saya mahu menyebut adalah bahawa kita mempunyai panduan gaya
untuk kelas ini.
>> ROB: Oh, yeah.
>> JOSEPH: Jadi, jika anda datang dari pengaturcaraan latar belakang sebelum ini, anda
mungkin mempunyai konvensyen tertentu apabila anda menulis kod seperti meletakkan
pendakap pada baris yang sama atau tertentu cara mengensotkannya
atau menamakan pembolehubah anda.
Dalam kelas ini, kami mahu mengikuti panduan gaya tertentu hanya kerana,
baik, jika anda keluar dan bekerja di industri, anda akan dijangkakan
untuk mengikuti panduan gaya yang syarikat di mana anda pergi ke.
>> Seperti contohnya, Facebook saya fikir mempunyai jenis tertentu menamakan
konvensyen.
Dan ada perbezaan antara unta pembolehubah selongsong dan seperti
memisahkan mereka dengan garis bawah.
Dan juga, saya rasa yang paling penting, seperti sebagai contoh, lekukan, bukan?
>> Kami pendakap kerinting bermula di mana keadaan ini, dan mereka
berada di barisan depan.
Dan kita juga meletakkan pendakap kerinting di walaupun ia hanya satu baris.
Dan banyak kali, ada cara untuk melakukan ia di mana anda boleh meninggalkan pendakap ini
off ia hanya satu baris di bawah penyata Jika.
Tetapi di dalam kelas ini, kami mahu mengikuti panduan gaya tertentu hanya supaya anda mendapat
digunakan untuk perkara seperti.
>> ROB: Ya, dan Gaya 50 akan menguatkuasakan panduan gaya ini, dan kami
akan menggunakan Gaya 50 ke gred kod anda.
Jadi ia membuat perkara yang lebih mudah untuk kita dan harap-harap tidak perlu membuat perkara-perkara yang
lebih buruk untuk anda diberi gaya standard tidak boleh yang
tidak realistik.
>> JOSEPH: Dan akhirnya, untuk mencari gaya yang Panduan, pergi ke manual.cs50.net/style.
Dan yeah.
>> SPEAKER 4: Adakah anda akan menguatkuasakan sebarang aksara setiap baris?
>> ROB: Ya.
>> JOSEPH: Maaf, guys.
>> ROB: Itu seperti salah satu yang hanya.
Pada ketika ini, saya OK dengan 120.
Saya OK dengan mengatakan 120 aksara setiap baris.
Saya faham ada yang beberapa had.
Saya fikir 80 adalah begitu kecil, tetapi kita menguatkuasakannya.
>> JOSEPH: Secara peribadi, saya rasa dengan C, 80 aksara adalah lebih OK.
Sebaik sahaja anda mula mendapat ke lain bahasa seperti JavaScript dan PHP, tidak
begitu munasabah untuk hanya menghadkan kepada 80 aksara.
OK.
Nah, itu adalah bahagian yang super.
Adakah sesiapa yang ingin gula-gula?
>> SPEAKER 4: Ya.