ROB Bowden: ini adalah bagian yang lebih selesa, tetapi itu tidak bermakna bahawa jika anda merasa seperti anda tidak lebih selesa Anda tidak akan belajar perkara-perkara di sini. Jadi mari kita mulai. Adakah anda mempunyai slaid akan terus ke dalam sesuatu. Adakah saya akan tenang saja sekarang? Menghidupkan komputer riba. Allison: Anda tidak mahu memperkenalkan diri, Rob? ROB Bowden: Oh, saya Rob. Ini adalah tahun kelima TF-ing CS50 saya. Gabriel: Saya Jibril. Saya kepala TF dari CS50. Saya TF tahun lalu dan tahun ini. Allison: Dan aku Alison, dan ini adalah tahun kedua TF-ing CS50 saya. ROB Bowden: Baiklah, jadi perkara ini di sebelah kiri, mudah-mudahan anda lihat sebelum ini. Jika tidak kerana anda turun itu untuk diri sendiri, anda seharusnya melihat dalam kuliah. Jadi, ini adalah perkakas CS50, dan dia melakukan sedikit dari perihal itu dalam kuliah. Tapi pada dasarnya ia hanya anda menjalankan operasi yang sistem dalam operasi sistem supaya kami dapat memberikan program tanpa perlu bimbang, oh adakah ini akan bekerja di kedua-dua Windows dan Mac, atau jika ada di antara kamu sudah menggunakan Linux, Linux. Ia hanya sepatutnya menjadi bermain umum bidang supaya semua orang mempunyai persekitaran yang sama persis. Jadi, jika anda tidak mempunyai turun ini sudah, Anda perlu memuat turun, kerana anda akan memerlukannya untuk masalah yang ditetapkan. Dan ia adalah satu gigabit dua memuat turun, jadi ia mungkin mengambil masa beberapa saat. Di Harvard ia akan pergi cepat. Jadi perkakas CS50. Sekarang di awal, kita akan bercakap tentang hanya sekelompok baris perintah barang-barang, dan itu oleh, maksud saya bekerja dalam persekitaran ini sedikit di sini. Dan perhatikan semua hal Saya katakan di sini sekarang akan berfungsi jika anda dalam terminal bahagian dalam perkakas, atau jika anda berada di dalam tetingkap terminal gedit bahagian dalam perkakas. Maka orang-orang persekitaran adalah sama. Tetapi saya akan pergi laluan ketiga. Dan perhatikan di sini ini Alamat IP sedikit di sini. Jadi, anda tidak perlu melakukan ini, tetapi IP ini address-- jika aku-- kecuali ia dihalang oleh perkara ini. OK, jadi bahawa alamat IP lebih dalam terminal sini-jadi terminal ini lebih di sini adalah pangkalan di Mac. Jadi ini adalah sama sekali tidak pada masa ini yang berkaitan dengan alat ini sama sekali. Dan jika anda berada di Windows, maka anda akan perlu untuk memuat turun sesuatu khusus untuk ini, khususnya orang cenderung menggunakan Putty, P-U-T-T-Y. Jadi apa yang saya akan lakukan ialah jenis SSH dan kemudian bahawa alamat IP. Nah, jharvard pada alamat IP. Jadi 192.168.24.220. Mesej menakutkan, mengabaikannya. Cukup ketik ya. Ini adalah CS50 dalam sebuah kotak. Ia meminta kata laluan anda. Dan dalam banyak konteks ini di mana itu meminta kata laluan, [terdengar]. Kami telah mendapat banyak pertanyaan di mana ia mengatakan itu tidak benar-benar mengetik. Ia tidak menunjukkan watak-watak kata laluan semasa anda menaip, jika ada, untuk ciri-ciri keselamatan, kerana jika seseorang itu melihat dari atas bahu anda dan mereka melihat bintang bintang bintang bintang, maka mereka tahu bahawa kata laluan anda adalah empat aksara. Jadi idea ini adalah ia akan meminta kata laluan anda, ketik. Ia tidak akan menunjukkan anda watak-watak, tetapi ia benar-benar menerima mereka. Dalam hal ini, bila-bila masa anda pernah melihat prompt kata laluan berurusan dengan alat, kata laluan akan menjadi merah. Jadi merah tua. Dan sekarang di sini dalam ini jendela yang ada di Mac, Saya pada dasarnya mempunyai pandangan yang sama persis sebagai bahagian dalam terminal di dalam perkakas. Jadi, anda tidak perlu melakukan hal ini. Anda boleh melakukan semua yang anda inginkan di dalam perkakas. Aku hampir tidak pernah benar-benar melakukan apa-apa di dalam perkakas. Saya hampir selalu mengurangkan itu dan sekarang Saya SSH bekerja ke dalam perkakas. Jika apa-apa, jika anda mempunyai komputer yang lebih perlahan, Anda mungkin melihat perbezaan. Saya melakukan ini kerana saya lebih suka tetingkap terminal ini. Ia mempunyai beberapa ciri-ciri seperti Saya dapat membagi jendela, dan sekarang saya boleh SSH di melalui alat ini. Saya punya dua SSH yang berlaku pada satu masa. Jika komputer anda adalah sangat lambat dan anda bekerja dalam perkakas, dan anda sedar ini adalah benar-benar laggy, apa pun. Cenderung untuk menjadi lebih cepat jika anda SSH-ed dalam. Tetapi jika tidak, anda boleh bekerja dengan cara baik. PENONTON: Apa SSH maksudkan? ROB Bowden: kerang Selamat, sesuatu seperti itu? Apa SSH maksudkan? Gabriel: shell selamat. Allison: Ini hanya shell selamat. ROB Bowden: shell selamat. Ini adalah protokol yang you-- itu protokol selamat disulitkan demikian. Orang ramai tidak boleh mengintip rangkaian dan melihat apa yang anda katakan apa-apa jua Anda SSH-ed untuk. Dan sebenarnya, dalam dahulu hari CS50, sehingga pada tahun 2009 apabila saya adalah seorang mahasiswa baru, cara yang Anda bekerja pada CS50 masalah set, adalah anda SSH-ed kepada beberapa pelayan bahawa kami memberikan anda akses kepada, dan anda bekerja di sana. Jadi, anda tidak mempunyai ini alat grafik. Anda tidak mempunyai gedit. Anda tidak mempunyai semua perkara ini yang Anda boleh secara visual titik dan klik. Anda harus bekerja dalam antara muka ini. Saya lebih suka bekerja dalam antara muka ini. Jadi sebahagian daripada apa yang kita akan untuk pergi ke atas sekarang adalah sekelompok dari perintah yang anda perlu mula membiasakan diri dengan sebagai anda pergi bersama-sama dalam perjalanan. Dan jujur, sebaik sahaja anda terbiasa dengan mereka, ia jauh lebih cepat untuk bekerja dalam persekitaran ini daripada ia adalah untuk bekerjasama dengan pencari, menyeret dan mengklik hal. Jadi di sini kita. Sekarang aku hanya SSH-ed dalam, dan sebagainya lalai yang lokasi anda melihat beberapa perintah ini di dalam kelas, tetapi kita akan pergi ke semua mereka lagi. Lokasi default kami dalam adalah direktori rumah. Dan direktori, perkataan lain untuk folder. Jadi kita di dalam direktori rumah. Menaip ls, senaraikan fail dalam direktori ini. Jelas saya buat blah.c sebelumnya. Jadi kita mempunyai direktori desktop. Anda melihat penonjolan sintaks? Warna biru terang menunjukkan direktori dan putih lurus menunjukkan hanya fail yang nyata. Jadi tidak akan menjadi beberapa warna yang anda lihat. Fail boleh laku yang mungkin akan untuk menjadi hijau atau sesuatu seperti itu. OK, jadi kami di dalam direktori rumah. Sekarang jika saya ingin pergi ke yang lain direktori, cd adalah perintah yang saya inginkan. Jadi mengubah direktori, dan kemudian anda lulus nama direktori yang anda mahu masuk ke dalam. Jadi di sini kita mempunyai empat pilihan jawapan. Saya boleh pergi ke muat turun, dan sekarang kita melihat di sini ia telah dikemaskini ini kurung katakan saya di ~ / muat turun. Jadi apa tilde? Ini adalah istilah untuk direktori rumah anda. Jadi, hampir semua yang anda lakukan adalah pergi ke menjadi berkenaan dengan direktori rumah anda, dan pwd hanyalah perintah Saya gunakan sekali dalam setahun yang hanya mencetak direktori semasa. Dan jadi anda lihat di sini bahawa ~ / Muat turun benar-benar menyelesaikan ke / home / jharvard / muat turun. Jadi / home / jharvard adalah direktori rumah saya. Jadi kita boleh cd dot dot. Sekarang dot dot adalah direktori khusus yang sentiasa merujuk kepada satu direktori atas. Jadi jika saya di ~ / muat turun, kemudian cd dot dot akan membawa saya untuk tilde. Apa yang kita fikir cd dot dot akan membawa saya seterusnya? Ia akan membawa saya ke / rumah. Jadi tilde oleh cetak direktori kerja, Saya kini dalam / home / jharvard. satu direktori dari itu, kini ia mengatakan di sini / home. Sekarang cd dot dot. Sekarang aku di dalam direktori akar, dan anda tidak boleh melakukannya sekali lagi. Anda hanya akan tinggal di direktori root selama-lamanya. Direktori root mempunyai sejumlah besar perkara-perkara yang, jika anda ingin melihat ke dalam, anda boleh. Sebagai contoh, jika saya pergi ke dalam tong, yang mengandungi semua binari ini, seperti ls, dan cd, dan semua perkara-perkara. Jadi arahan ini perlu ada di suatu tempat dalam sistem, dan itu di direktori / bin. Tetapi hampir semua yang anda lakukan adalah akan menjadi dari direktori rumah anda. Dan cd tanpa hujah apa pun, anda boleh mengatakan cd ~, tidak perlu. cd akan membawa anda kembali ke direktori rumah anda. Salah satu yang terakhir. cd - akan membawa anda kembali ke Direktori terakhir yang anda berada di. Jadi saya hanya cd'd dua kali berturut-turut, jadi saya Direktori yang terakhir adalah direktori rumah. Jika saya pergi ke memangkas bin, dan sekarang mari kita pergi ke atas dan ke pengguna. Saham pengguna. Mari kita pergi ke bahagian pengguna. Sekarang aku sekarang dalam bahagian pengguna. cd -, kembali di tempat sampah. Jadi ini akan sangat berguna apabila anda have-- dan ia akan bertukar-tukar. Jadi bahagian pengguna, kembali bin, bin saham. Jadi ini akan berguna. Anda mungkin mendapati diri anda mempunyai banyak, banyak, banyak direktori bersarang. Dan anda mahu melakukan sesuatu cepat sebenar dalam direktori atas. Anda pergi ke direktori tersebut, membuat perubahan dan hal-hal seperti itu, dan sekarang anda mahu pergi kembali ke tempat Anda. cd -. Saya selalu kecewa apabila saya kebetulan pergi ke direktori Saya mahu melakukan kerja-kerja dalam. Saya selalu berasa kecewa apabila saya dalam dua langkah, bukan satu langkah, kerana itu bermakna cd yang - akan untuk membawa ke lokasi itu pengantara bukan di mana saya mahu pergi. Oleh itu, kita melihat semua fail senarai. Kita tahu bagaimana untuk mendapatkan sekitar setakat ini. Jadi sekarang mari kita bercakap tentang mengedit fail. Jadi dalam kursus ini, anda hampir selalu diharapkan untuk menggunakan gedit. Jika anda mahu, anda boleh mengambil langkah seterusnya dan mula belajar teks baris perintah editor. Jadi pelbagai pilihan yang ada. Dan orang-orang yang mungkin akan menjadi berkaitan dengan anda, kita mempunyai Nano, Vim, dan Emacs. Jadi Nano adalah pemula baris perintah editor teks. Jadi Nano mari kita pergi blah.c saya buat sebelumnya. Ia hanya fail ini C standard. Dan anda melihat sejumlah besar barang-barang berlaku di bahagian bawah skrin, dan nampaknya blah.c mengandungi kod C ini. Jadi dalam editor ini khususnya, apa yang ia berkata pada bottom-- sekarang simbol tanda sisipan ini, kita lihat ini ^ G, ^ X, ^ O. Sehingga dalam hampir semua konteks yang anda lihat, Anda mungkin akan melihat bahawa simbol tanda sisipan dalam tempat-tempat lain dalam talian, di Stack Overflow, sesuatu seperti itu. Ia hampir selalu merujuk kepada mengawal. Jadi untuk keluar saya mahu lakukan Kawalan Kawalan X. X, keluar. Dan saya boleh menggunakan anak panah saya kunci untuk bergerak. Perhatikan saya tidak boleh titik dan klik mudah. Anda perlu menggunakan anak panah anda kunci untuk bergerak. Mungkin ada suasana yang untuk titik dan klik. Tetapi mari kita membuat beberapa perubahan. Sekarang Kawalan X untuk pergi keluar. Ia tidak akan berkata kecuali penampan diubah suai. Sekarang segera, y untuk ya, n untuk tidak. Kawalan C untuk membatalkan. Aku hanya akan mengatakan ya. Nama fail untuk menulis. Lalai adalah fail yang sudah ada. Tekan Enter. OK. Sekarang saya baru sahaja disunting fail itu, menyimpannya, dan ia berubah. Jadi Nano adalah yang paling mudah editor teks membiasakan diri. Alternatif adalah Vim dan Emacs. Mereka adalah editor teks yang lebih tinggi yang mempunyai keluk pembelajaran yang sangat curam. Jadi keutamaan peribadi saya adalah Vim. Dan ia mempunyai pelbagai pilihan. Dan sebaik sahaja anda membiasakan untuk itu, anda tidak akan pernah mahu pergi ke mana-mana editor teks kerana anda hanya mempunyai begitu banyak perkara disediakan untuk anda dalam ini, tetapi ia mengambil masa yang benar-benar masa yang lama untuk belajar. Jadi mungkin anda hanya ingin memaksa diri anda sekarang untuk mendapatkan digunakan untuk itu, tetapi saya akan mengatakan itu berbaloi. Tetapi ia adalah sukar. Dan kemudian Emacs. Aku selalu berjuang di Emacs kerana Saya tahu bagaimana untuk melakukan apa-apa. Rupa-rupanya Emacs tidak secara lalai dipasang pada alat. Kami mungkin akan menambah bahawa sebagai pemasangan lalai. Sebaik sahaja anda belajar salah satu Vim atau Emacs, ada ada alasan kuat untuk pernah belajar yang lain, tetapi itu adalah gaya yang sama sekali berbeza. OK jadi itu mengedit fail teks. PENONTON: Jika anda terjebak di Vim sekarang, bagaimana we-- ROB Bowden: Ada beberapa mode di Vim, dan ada keseluruhan tutorial belajar Vim. Jadi, jika anda berada dalam mod insert dalam rangka menaip teks, yang anda boleh masuk yang dalam pelbagai cara, tetapi saya adalah bagaimana anda masuk ke dalam mod insert. Di dalam atau keluar dari mana-mana khusus bagaimana anda hadapi, hanya melarikan diri. Dan anda hanya tamparan melarikan diri untuk mendapatkan daripada apa-apa mod bersarang dalam anda. Hanya OK, sekarang aku kembali dalam mod biasa. Dan sebagainya dalam mod biasa, titik dua. Anda melihatnya muncul di bahagian bawah. Dan kemudian q. Jadi q akan berhenti jika anda telah membuat perubahan, yang aku-- aku membuat perubahan? Saya telah membuat perubahan nampaknya. Jadi, jika anda telah membuat perubahan, itu akan mengatakan anda boleh meletakkan tanda seru. Saya akan menyebutnya keras. Jadi, anda boleh meletakkan larangan kepada hanya berhenti tanpa melakukan apa-apa, atau wq usus besar akan menjimatkan dan berhenti. Jadi w pada umumnya menulis. Jadi menulis fail. Saya boleh menulis dan berhenti. Atau, anda boleh mempunyai hanya slam qx, q bang hanya untuk keluar dari sana terlepas dengan apa-apa perubahan yang anda buat. Baiklah, jadi sekarang mari kita go-- kita boleh membuat fail. Mari kita mulai menghapus fail. Dan saya hanya akan membuang dalam satu perintah baru cepat, sentuh. Jadi menyentuh foo. Bar sentuh. Sentuh baz. Jika saya ls, kini kita melihat bahawa fail-fail itu wujud. Mereka benar-benar kosong. Jadi sentuh hanya yang mudah cara satu, [terdengar]. Kedua, dari segi teknikal hanya untuk negara itu, ia update cap waktu. Jadi mana-mana fail yang anda buat mempunyai tanda waktu yang bersekutu dengannya. Jadi baz telah dibuat pada 14 September di 16:21. Sekarang 16.22 jadi jika Saya menyentuh baz lagi, kita melihat baz yang paling baru-baru ini diubah suai pada 16:22. Tetapi jika tidak, saya hampir tidak pernah melihat cap waktu pada fail. Jadi sentuh, di sini saya hanya menggunakan untuk membuat beberapa fail cepat. Baiklah, jadi sekarang rm adalah perintah bahawa kita mengambil berat tentang di sini. Dan kita dapat rm boo. Katakanlah menghapus file biasa boo kosong. Dan kita boleh menaip y, dan kini ia kali jauhnya. rm baz. Keluarkan fail kosong biasa baz dan jenis n untuk tidak. Kini ia tidak dibuang. Begitu bar dan baz masih wujud. Foo hilang. Gabriel: Simpan bercakap. ROB Bowden: besar. Jadi mesej yang menjengkelkan di sini, keluarkan empty-- biasa apa yang anda lakukan di sana? Keluarkan fail kosong biasa. Jadi, jika kita tidak mahu menjadi diganggu oleh mesej yang, kita boleh buang dalam f ini bendera, dan sebagainya itu berlaku. Dan jika saya rm -f, ia tidak akan mengatakan yang anda mahu untuk menghapuskan fail ini. Ia hanya akan melakukannya. Dan ls, saya tidak melihat bar di sana lagi. Sekarang adalah berpotensi perintah berbahaya. Ia cenderung untuk tidak terlalu buruk. Kami akan datang kembali dalam detik bagaimana itu bisa sangat berbahaya. Dan mari kita membuat beberapa direktori sementara. mkdir, perintah lain. Jadi mkdir adalah perintah yang membuat direktori. Dan sekarang dengan ls kami melihat terang yang bagus biru disorot direktori sementara. Saya dapat cd ke temp. Dan saya boleh Mkdir foo. cd ke foo. bar mkdir. cd ke bar. Jadi kita lihat kita dengan mudah boleh mendapatkan ke dalam beberapa bersarang cukup dalam. Sekarang bagaimana cara mengeluarkan direktori? rmdir. Jadi jika saya hanya lurus cuba rm, seperti yang kita lakukan dengan fail biasa, bar rm akan mengatakan tidak boleh mengeluarkan bar. Ia adalah direktori. Ada perintah khusus untuk membuang direktori, jenis. Bar Jadi rmdir. Sekarang bar hilang. OK, jadi rmdir saya cukup banyak tidak pernah digunakan. Sebab sekarang being-- mari kita membuat bar file biasa di sini. Boo Jadi rmdir. rmdir. Gagal membuang foo. Direktori tidak kosong. Jadi, anda tidak boleh menggunakan menghapus dir pada direktori yang memiliki perkara di dalamnya. Jadi, anda mempunyai beberapa pilihan. Anda boleh pergi ke direktori tersebut, keluarkan segala sesuatu secara manual, dan kemudian keluar dan rmdir direktori. Yang jelas bunyi menjengkelkan. Bagaimana jika terdapat beribu-ribu file di sana? Nah, anda boleh rm *. Kami akan bercakap tentang * dalam satu saat. Ia pada asasnya bermakna semua perkara. Tetapi lebih baik lagi, r sehingga rm. Jadi rm -r-- dalam banyak konteks, r berarti rekursif, yang kita akan bercakap tentang apa yang cara rekursif dalam beberapa minggu. Tetapi pada dasarnya bermakna traverse keseluruhan direktori ini dan mengeluarkan segala-galanya. Foo r sehingga rm yang akan dikatakan turun ke dalam direktori foo? Ya. Keluarkan fail kosong foo / bar biasa? Ya. Buang direktori foo? Ya. Jadi sekarang foo dan segala-galanya di dalamnya telah dikeluarkan. Sekarang boleh mendapatkan sangat menjengkelkan when-- mari kita menyentuh 1, sentuh 2, sentuh 3. Boleh mempunyai sejumlah besar fail. Jika saya mahu, saya boleh membuat beribu-ribu fail di sini. Dan foo r rm akan menjadi sangat menjengkelkan. Ya, ya, ya, ya, ya, ya. Dengan lebih banyak fail yang anda cepat melihat berapa kali Saya akan perlu menaip ya. Baik, kami hanya melihat sebelum bagaimana kita boleh menyingkirkan perlu menaip ya, f. Jadi mkdir foo foo cd sentuh 1 2 3. OK, foo rf sehingga rm akan membabi buta mengeluarkan foo sepenuhnya. Tidak ada yang cepat. Tidak ada apa-apa. Foo hilang. Jadi saya cenderung untuk menggunakan ini perintah sepanjang masa. Yang berkata, ia adalah satu perintah yang sangat berbahaya, kerana jika saya melakukan sesuatu seperti ini, ia tidak akan meminta anda. Ia akan hilang. Dan hal itu terjadi cukup sering, dan juga di peringkat yang lebih tinggi kursus CS. Kadang-kadang kita akan melihat sesuatu di mana seseorang kata saya secara tidak sengaja rm rf-ed kami rumah saya direktori dan semua set P saya telah hilang. Dan ia boleh membinasakan, tetapi tidak ada sampah. Ada tidak ada apa-apa untuk anda untuk mengambil. Ia hanya hilang. Lebih buruk lagi akan sesuatu seperti rm-rf /. Jadi kita hanya dibincangkan direktori akar. Ia memegang semua fail pada sistem anda. Perkara yang cenderung untuk mendapatkan cukup berantakan apabila anda mengeluarkan hal-hal seperti ls, dan cd, dan semua orang-orang. PENONTON: Apakah perbezaan di antara rm, rf, dan rm * ROB Bowden: Jadi rm * - Allison: Soalan adalah apa Perbezaan antara rm, rf, dan rm *. ROB Bowden: Jadi rm *. Bintang di sarana umum semua kandungan dalam direktori ini. Berusaha untuk memikirkan yang lain cara untuk menunjukkan bintang. Nah, bintang sebenarnya umumnya bermakna dapat ditemukan pada corak. Jadi jika saya mempunyai fail yang dipanggil dog1, menyentuh dog2, sentuh cat1, sentuh Cat2. Jadi ls * 1 akan mencetak cat1 dan dog1, kerana bintang yang boleh diisi di with-- yang perlu berada di sana, tetapi bintang ini boleh menjadi sama ada kucing atau anjing. Ia adalah satu kad liar. Itulah perkataan yang saya cari. Kad liar. Atau saya boleh ls anjing *, dan Saya dapat melihat dog1, dog2. Maka orang-orang yang menyenaraikan fail yang sesuai dengan pola yang tertentu. Anda boleh menggunakan ls dengan cara ini. Ls * bintang perlawanan apa-apa. Jadi ia akan mencetak semua kandungan dalam direktori ini kerana semua daripada mereka sepadan. Ia tidak akan mencetak apa-apa dalam direktori tingkat atas. Jika saya mempunyai sub direktori, foo, dan menyentuh 1 2 3-- jadi sekarang jika rm * bintang, menghapus cat1, Cat2, dog1, dog2. Tidak dapat membuang foo. Ia adalah direktori. Jadi bintang mengembang untuk semua fail dalam direktori. Jadi secara teknikal rm * adalah seperti mengatakan cat1 rm, Cat2, dog1, dog2, foo. Manakala rf rm, teknikal bintang akan mencapai apa yang kita inginkan, tapi rm -rf-- jika saya keluar dari ini direktori, suhu rf rm, yang akan masuk ke temp dan rekursif menghapus segala-galanya. Jadi bintang adalah berasingan di mana yang Difahamkan oleh- supaya perkara ini bahawa saya berjalan dalam, perkara ini yang mendorong saya untuk perintah dan kemudian melaksanakan dan melakukan mereka, saya sebut ini kulit saya. Dan sebagainya shell ini sendiri program. Dan jika saya mahu, saya boleh dijalankan dalam / bin / bash. Shell disebut Bash. Dan sekarang kita melihat sesuatu telah berubah sedikit, dan itu karena tetapan saya untuk shell adalah agak berbeza. Tapi sekarang aku berjalan teknikal shell dalam shell asli saya, dan saya boleh keluar dari shell itu, dan sekarang Aku kembali ke shell tingkat atas saya. Tujuan berkata yang is-- bintang. Jadi bintang itu ialah sesuatu difahami oleh Bash. Jadi rm-rf, bendera-rf adalah difahami dengan hanya rm. Ia tahu bahawa apabila anda lulus rf yang anda mahu ia menghapus rekursif semua fail tanpa disuruh. Bintang itu adalah sesuatu yang difahami bash bahawa apabila anda mengatakan rm *, bash tidak akan mengatakan hey rm *, keluarkan bintang. Bash akan mengatakan rm * menghapus cat1, Cat2, dog1, dog2. Ia secara automatik akan berkembang semua fail-fail dalam direktori. Dan begitu juga tilde adalah satu lagi simbol yang Bash memahami. Apabila kamu berkata cd ~, bash mengembang yang ke direktori rumah anda. Soalan-soalan lain setakat ini? OK jadi kita akan mula pergi cepat. Siap Tab. Hanya untuk membuangnya di luar sana. Banyak orang tidak menyedari ini ada. Jadi, jika saya menaip cd dow, saya mahu pergi ke muat turun. Saya tidak perlu menaip nloads. Saya hanya dapat menekan Tab. Jadi ia mengakui bahawa dow adalah awalan yang tidak sesuai dengan apa-apa lain di dalam direktori ini, jadi ia akan menyelesaikan untuk anda. Sekarang saya boleh masuk. Saya juga melakukan secara rekursif. Foo Jadi mkdir. Mari kita pergi ke foo. bar mkdir. Jadi kembali ke rumah saya direktori, saya dapat melihat muat turun. Sekarang memukul tab lagi, secara automatik akan mengisi foo. Ini satu-satunya direktori. Memukul tab lagi, secara automatik akan mengisi bar. Jadi sekarang aku dalam (~ Download / foo / bar). Jadi penyelesaian tab ini, setiap kali saya dapat waktu pejabat, dan aku berdiri di atas bahu seseorang, dan mereka akan rm D-O-W-N-L-O-A-D-S, saya akan mati. Tab adil, tab, tab, tab. Jadi pasti digunakan tab. Dan begitu juga ke atas dan ke bawah, banyak orang hanya itu yang berlaku kepada tidak pernah memukul atas dan ke bawah. Ia akan pergi melalui sebelumnya perintah, jadi jika anda hanya melakukan sesuatu, dan anda ingin menjalankannya lagi, hanya memegang sehingga anda sampai ke sana. OK. Begitu cepat, beberapa perkara lain. Mari kita kembali ke temp. Mari kita membuat beberapa fail. Jadi di sini, aku hanya akan menyenaraikan beberapa perkataan. anjing, kucing, meow. Mari kita buat anjing, ikan. Jadi sekarang rep adalah sangat perintah yang berguna yang anda gunakan untuk mencari di seluruh file untuk teks tertentu, dan teknikal yang boleh anda lakukan benar-benar ekspresi kompleks untuk ia sepadan. Jadi di sini, jika saya grep, dan apa yang saya ingin mencari? Katakanlah saya sedang mencari kucing, dan Saya ingin mencari semua fail-fail ini. Jadi bagaimana saya boleh melakukan semua fail-fail ini? Star. Jadi, dalam satu file, saya mempunyai kucing. Saya mungkin boleh mempunyai menyebutnya sesuatu yang lebih baik, kerana yang kelihatan seperti nombor talian atau sesuatu. Tetapi dalam fail yang saya mempunyai satu garis dengan kucing. Dalam fail dua saya mempunyai satu garis dengan kucing. Jadi sekarang aku dapat melihat ke dalam satu file dan lihat oh yeah, fail yang memiliki kucing. Notis fail tiga tidak cocok kerana kucing tidak di sana. Saya boleh grep untuk meow. Hanya memfailkan dua mempunyai meow. Jadi ini anda boleh menggabungkan, lagi, dengan r, yang seperti yang saya katakan sebelum sering berarti rekursif. Oleh itu, saya boleh datang ke sini, grep r bagi apa-apa contoh daripada- mari kita mengedit satu ini hanya untuk membuang kucing di sana. Jadi grep r bagi apa-apa kehendak kucing di seluruh direktori ini. Dan ia akan secara rekursif menggeledah mana-mana subdirektori. Jadi dalam baz, ada kucing. Dalam temp / 2, ada kucing. Dan dalam temp / 1 ada kucing. Jadi itu mencari di dalam fail. Sekarang anda juga boleh menggunakan menemukan. Dan jadi cari adalah khusus tentang mencari fail dengan nama yang diberikan. Jadi mari kita buat lagi. Mari kita pergi ke muat turun. Sentuh dog1. Sentuh Cat2. Sentuh cat_dog. Sentuh catcat. Jadi saya ingin mencari semua fail dengan anjing dalam nama. Jadi mencari, dan untuk paling lama kali saya tidak pernah ingat bagaimana mencari bekerja, sehingga saya akhirnya membaca sesuatu yang membuatnya begitu jelas. Jadi mencari, secara automatik rekursif. Anda tidak perlu untuk lulus r a. Sehingga menemukan titik. Kami tidak bercakap tentang titik lagi. Manakala dot dot selalu ertinya satu direktori atas. Dot sentiasa bermakna direktori semasa. Supaya saya dapat rm dot r dalam cara yang sama saya dapat rm-rf *. Akhirnya mereka mencapai perkara yang sama. rm dot rf akan mengeluarkan direktori semasa keseluruhan. OK, yang saya tidak mahu lakukan di sana. Tetapi menemukan titik. Jadi rekursif mencari semasa direktori, dan sekarang semuanya selepas ini adalah sekumpulan bendera anda gunakan untuk tidak termasuk perkara-perkara dari pengembalian. Jadi mencari titik mengembalikan segala sesuatu yang boleh mencari dari direktori semasa. Mereka adalah semua fail rekursif mencari. Kita akan melihat beberapa daripada mereka dalam satu saat. Tetapi dalam kes anda tertanya-tanya bagaimana saya melakukannya itu, jadi Perintah K, sekurang-kurangnya di terminal saya di Mac membersihkan it. Kawalan L umumnya hilang untuk apa-apa jenis terminal. Anda juga boleh menaip jelas. Dan jika anda pernah mendapatkan menjadi scenario-- pelik ia berlaku kepada saya pasangan time-- di mana warna prompt anda semua kacau, atau anda tidak dapat melihat apa-apa yang ditaip ketika anda menaip, kerana kadang-kadang seperti warna latar belakang ditetapkan yang sama dengan warna latar depan dan sekarang anda tidak dapat melihat fon. Reset adalah sesuatu yang hanya menetapkan semula Anda latar belakang lalai hitam, depan putih, atau apa sahaja Anda menetapkan mereka. Jadi di mana kita? Cari titik. Jadi sekarang semua ini lalu titik menyekat keputusan kepada sesuatu yang sepadan dengan pola yang diberikan. Jadi di sini saya ingin mencari segala sesuatu dengan kucing nama. Saya mendapat apa-apa. Mengapa keadaan tersebut berlaku? Well, saya hanya mencari sesuatu dengan tepat kucing nama. Jika saya ingin mencari sesuatu yang mempunyai beberapa corak, dan cat-- petikan-petikan yang secara teknikal tidak diperlukan, tetapi saya melemparkan mereka di sana. Jadi sekarang ia mendapati catcat kerana itulah satu-satunya perkara yang mempunyai beberapa sewenang-wenangnya pola diikuti dengan kucing. Saya boleh meletakkan kucing *, dan sekarang mencari catcat, cat_dog, Cat2, tetapi semua itu adalah perkara-perkara dengan kucing di awal diikuti dengan apa-apa. Anda boleh menggabungkan ini. Jika anda ingin mencari semua fail C yang anda ada, anda mungkin melakukan * .c. Kami telah blah.c sini. Jadi itulah mencari kerja. Anda boleh mencari. Ia mempunyai sejumlah besar bendera untuk sekatan lebih lanjut. Dan salah pada mereka, katakanlah d. Jadi tidak berlaku lagi. Oh, bukan itu yang saya mahu. Tidak -d. Jenis d. Jadi mencari titik - jenis d. Jadi apa yang hanya melakukan ini aku mencari untuk semua fail dalam direktori semasa dengan d a-- singkatan Jenis direktori directory--. Ini mengembalikan semua direktori di dalam direktori semasa. Dan jenis F adalah semua biasa file, semua direktori merokok. Jadi itu hanya sebuah contoh cara lain yang boleh mengehadkan carian lain daripada sekadar nama fail. Sudah 30 minit. Masih berterusan. Allison: Aku akan angin melalui. Ia akan baik-baik. ROB Bowden: Jadi beberapa perkara lain. Sekarang bang, tanda seru. Sehingga pada umumnya ertinya- baik, mari kita lihat satu contoh. Jadi! F, apa yang yang akan lakukan? Baik ia seolah-olah mempunyai berulang menemukan titik type f. Bagaimana pula! G? Yang hanya grep kucing-r *. Jadi bang boleh anda gunakan untuk mengulangi perintah baru-baru ini dilakukan. Jadi, jika saya menaip! Gre, ia akan dikendalikan semula perintah yang bermula dengan yang paling gre baru-baru ini. Dan anda boleh melihat semua ini perintah dengan sejarah. Jadi sejarah. Ini semua adalah perintah Aku telah lari hari ini. Dan juga, ia tidak benar-benar terhad kepada hari ini, tetapi saya hanya menggunakan ini alat untuk hari ini. Ini keseluruhan anda daripada sejarah shell bash anda, kecuali ia memotong pada satu masa nanti. PENONTON: Apa yang terjadi jika anda melakukan Sejarah [terdengar] perintah dan kesilapan dalam keputusan akan tetap dicetak the-- ROB Bowden: Ya, jika ada kesalahan di salah satu commands-- ini jadi mari kita katakan, yang merupakan perintah kesalahan tidak dijumpai. Masih muncul dalam sejarah. Baik. Soalan-soalan lain mengenai apa-apa? Jadi itu bang. Sekarang, perintah benar-benar berguna, manusia. Jadi yang memberikan anda manual untuk arahan yang diberikan. Jadi, bila man ls, jadi ini menunjukkan kepada saya ls. Ia menyenaraikan kandungan direktori. Dan ini adalah di mana saya melihat bahawa ada adalah berbagai bendera yang ada. Jadi kita lihat bahawa ls -l wujud jika kita membaca bahawa. ls-l memberi saya penyenaraian ini penuh dengan direktori dengan yang memiliki fail, saiz fail, yang timestamp diubah suai. Jadi ls -a adalah satu lagi yang anda mungkin benar-benar menggunakan agak kerap. -al adalah bendera yang biasa saya ini ls terakhir. Jadi -a, perhatikan ada banyak lebih banyak fail daripada sekadar ls. ls -a. Apa yang sama dengan semua fail-fail ini? Mereka bermula dengan titik. Jadi ini adalah konvensyen di Linux yang fail yang bermula dengan titik yang tersembunyi. Jadi itu hanya bererti bahawa ketika kita hanya ls lurus, atau kita mencari direktori ini menggunakan setara yang menjumpainya, atau Windows Explorer setara, bahawa kita tidak mahu untuk melihat fail-fail ini titik. Mereka hanya mencemarkan pandangan hal. Jadi mereka tersembunyi kecuali Anda secara khusus meminta mereka dengan sesuatu seperti -a. Jadi saya dapat cd ke .local, dan saya melihat bahawa yang itu sendiri merupakan direktori dengan direktori yang dikongsi bersama, dan aplikasi, dan bla bla bla. Jadi titik, fail mereka hanya tersembunyi. OK, yang penting supaya lain. Saya punya beberapa saya boleh melompat. Mari kita bercakap hanya benar pantas mengenai perkara-perkara yang fail redirection. Jadi ada satu siri kompleks keseluruhan perkara yang anda boleh lakukan dengan ini, tetapi hanya untuk melihat mereka, katakanlah, gema. Satu lagi perintah. Arahan benar-benar bodoh. Semua hal ini adalah apa yang saya cetak kirim ke. Jadi echo khabar. Ia hanya bergema menyapa skrin. Hello dunia. Gema hello world. Jadi satu arahan atau satu simbol yang Bash memahami adakah ini yang lebih besar dari simbol, dan iaitu output ke simbol fail. Jadi jika saya output ini untuk foo, kini adalah fail disebut foo, dalam yang Halo dunia. Jadi melihat bahawa apabila saya echo hello paip dunia ke foo, ia tidak echo hello world. Sebaliknya, ia telah dimasukkan ke dalam fail foo. Dan arahan lain hanya membuangnya pada anda, kucing. Itulah cara yang mudah hanya benar-benar daftar isi dari fail supaya saya tidak perlu membuka editor teks untuk melihatnya. Jadi kandungan fail foo adalah hello world. Dan saya boleh kucing blah.c, isinya ini. Sekali lagi, ini adalah perintah itu, tidak berharap anda mempunyai mereka semua hafal. Idea ini anda telah melihat mereka. Mungkin anda bekerja pada sesuatu, dan anda seperti saya muak membuka fail ini. Saya berharap saya boleh melihat di isi cepat. Anda boleh melakukan itu, maka melihat kembali dan mengatakan oh saya ingat sesuatu seperti yang ada, dan itu kucing. Jadi yang akan fail. Sekarang tidak ada benar-benar apa-apa yang baik contoh membaca dari fail lagi. Apakah sesuatu yang membutuhkan sesuatu dari standard dalam? Setiap perintah Linux mudah? Apabila kita sampai ke sana, dalam pasangan minggu semua piece-- baik, minggu ini anda mempunyai sebidang di mana anda mula mengambil input dari pengguna. Dan sehingga biasanya anda menaip input yang di keyboard. Daripada menaip input di papan kekunci, Anda malah dapat pipa dari fail supaya apabila anda melakukan Mario, ./mario, paip masuk dari mana-mana fail yang diberikan, dan itu akan menjalankan program mario itu. Tidak mengharapkan masukan pada papan kekunci, bukan itu hanya akan membaca baris dari fail foo itu. Jadi lebih besar daripada foo menempatkan ke fail foo, dan kurang daripada foo mengambil barang-barang dari fail foo dan menggunakan itu sebagai input untuk program ini. Dan hanya untuk melihatnya, kita juga boleh echo bar baz foo, dan kemudian, bukan satu lebih besar daripada, mari kita buat dua ke foo. Apa yang dilakukan? Ia hanya menyertakan kepada fail. Jadi, melihat jika saya echo blah ke foo dan kemudian kucing foo, ia hanya bla. Oleh itu, apabila anda output ke satu fail, ia sepenuhnya akan menimpa file itu. Jika anda hanya mahu menambahkan, double [? grader. ?] Dan terakhir adalah paip. Paip Dapat lebih rumit, di mana ia mengambil output dari satu perintah dan feed ke dalam perintah seterusnya. Jadi beberapa hal yang umum, sejarah. Jadi, ugh, saya tidak mahu lihat ini. Tunjukkan semua perintah dalam sejarah saya di mana saya grep-ed untuk sesuatu. Tidak, itu mengelirukan. Tunjukkan semua perintah di mana saya mencari. Semua menemukan perintah yang pernah saya berlari. Jadi sejarah. Sekarang output sejarah ke menapis senarai ini perintah, tetapi saya tidak mahu output ke skrin. Sebaliknya saya akan pipa ke grep. Jadi mari kita grep untuk semua contoh find. Jadi sekarang bukan pengambilan grep input, bukan daripada- grep mampu menangani sebagai input-- kami menggunakan grep sedikit berbeza di sini. Jadi, daripada menaip senarai hal yang kita ingin mencari dan berkata grep mengambil sebagai input. Jadi jika saya hanya grep mencari, ia menunggu untuk saya untuk menaip sesuatu. Jadi kucing hello mencari. Hello. Cari. Perhatikan setiap kali saya menaip mencari ia menyedari bahawa saya menaip find. Jadi, daripada ini, akan file carian untuk mencari. Jadi sejarah sekarang akan output senarai semua perintah. Kami meletakkan output yang, dan kami memberi makan kepada grep, dan jadi ia menyemburkan semua contoh find. Alasan saya mengatakan ia akan membingungkan adalah jika aku-- itu masih membingungkan. Jika saya grep untuk grep. Notis itu cukup banyak sentiasa menunjukkan arahan saya hanya berlari kerana perintah yang sendiri mempunyai grep di dalamnya. OK, jadi apa-apa soalan mengenai apa-apa? Dan saya akan memindahkannya ke arah hal ini. Mudah-mudahan ini adalah baik gambaran keseluruhan semua perintah bahawa anda tidak perlu mempunyai hafal, tetapi ini membuat yang kukuh 95% daripada apa yang saya lakukan pada baris arahan. Juga perlu diingat bahawa baris arahan itu sendiri, bash adalah bahasa pengaturcaraan, dan sebagainya apabila anda turun ke sana, anda mungkin mahu melakukan perkara-perkara yang sangat kompleks. Dan jadi ia mempunyai hal-hal seperti gelung, dan jika, dan semua orang-orang bahawa anda akan membiasakan diri dengan bahasa pengaturcaraan anda. Tetapi itu adalah di luar skop seksyen ini. OK, jadi ada soalan? Allison: Tiada? Gabriel: Adakah anda akan supaya- Allison: Saya boleh melakukannya pada saya jika anda mahu. Kita boleh melihat apa yang berlaku. ROB Bowden: Tak aktif untuk Allison. Allison: Woo. Kau tindakan keras untuk diikuti, Rob. Adakah anda mahu saya untuk beralih dengan anda? Atau anda punya, OK. Saya akan cuba dan tidak cukup seperti yang panjang di sana. Mari kita lihat apakah kemahuan ini bekerja seperti yang saya inginkan. Mungkin? Haha! Ya. Jadi, saya hanya akan pergi dengan cepat melalui pembolehubah, gelung, conditional, dan sedikit di compiler. Jika anda mempunyai soalan di bila-bila masa, sila menghentikan saya. Orang-orang ini akan mengingatkan saya untuk mengulangi pertanyaan anda jika saya lupa, tetapi tidak boleh terlalu buruk. Jadi pembolehubah, yeah. Kami tidak mempunyai salah satu daripada anda Potongan awal di sini. Saya yakin sebahagian besar daripada anda, jika Anda mempunyai beberapa jenis permainan yang Anda buat dengan Awal, anda mempunyai untuk mengesan sesuatu seperti skor, atau masa, atau sesuatu seperti itu. Maka orang-orang oren terang potongan-potongan yang kita lihat ada hanyalah bentuk Gores dari pembolehubah, dan anda pasti akan akan menggunakan pembolehubah sepanjang program anda. Jika anda tidak, saya tidak benar-benar yakin apa yang anda lakukan. Tapi bagaimanapun, hal yang besar, mendefinisikan variabel. Dengan C setiap pembolehubah mempunyai mempunyai jenis yang diisytiharkan, jadi saya memberikan sambutan yang sangat satu umum di bahagian atas. Jadi, anda akan mempunyai anda menaip dan kemudian apa sahaja anda membuat keputusan untuk memanggil variabel. Jadi dalam hal ini, jenis dalam senarai variabel. Kami mempunyai tiga contoh. Char dari beberapa kelas, dari A, yang adalah apa yang Saya pasti anda semua mahu untuk masuk kelas ini. Anda boleh menentukan beberapa pembolehubah dalam satu baris selama mereka semua jenis yang sama, yang merupakan contoh kedua kami di sana di mana anda mempunyai tiga pembolehubah, x, y, dan z. Mereka semua mengapung. Dan kemudian anda juga boleh, dalam hal ini terakhir contoh dengan skor int dan nombor pasukan, anda boleh memulakan mereka di sana. Jadi dalam contoh di tengah-tengah di mana kita hanya perlu apungan x, y, dan z, tersebut tidak dimulakan lagi. Mereka tidak memiliki nilai. Atau mereka mempunyai nilai-nilai sampah. Dan jika anda mencuba dan menggunakannya, compiler akan berteriak pada Anda. Anda mempunyai kedua-duanya menyatakan dan memulakan pembolehubah anda. Jadi pada yang terakhir ini, kami melakukan kedua-duanya. Kami mengisytiharkan pembolehubah dari skor dan jumlah pasukan, dan kami Memulakan mereka, memberi nilai-nilai awal mereka dari 7 dan 4 masing-masing. Sejuk. Semua orang yang baik? Awesome. OK, sehingga beberapa konvensyen. Jika kalian telah membaca melalui gaya 50, ini hanya perkara yang kita ingin untuk Anda untuk melaksanakan dalam gaya anda. Jadi nama-nama yang bermakna. Jika anda mula menyebut perkara hanya x, y, dan z, terutama ketika Anda masuk ke lebih panjang program, anda mungkin akan mengelirukan diri sendiri dan menjadi seperti apa yang berubah-ubah ini merujuk kepada. Saya tidak tahu apa ini bermakna. Jadi, jika itu dimaksudkan untuk memegang skor, menyebutnya skor. Jika itu dimaksudkan untuk memegang beberapa jawapan atau memberi, memberikan nama seperti itu. Untuk gelung, yang kita akan masuk ke dalam slaid yang akan datang, pembolehubah huruf-baik saja. ROB Bowden: I, j, dan k ialah hanya konvensyen untuk loop bahwa setiap orang mengharapkan mereka untuk dipanggil i, j, dan k. Anda boleh memanggil them-- saya melihat baris lajur atau baris panggilan kadang-kadang selama dua gelung bersarang, dan itu juga jenis standard. Tapi i dan j adalah difahami sepenuhnya. Allison: Ya, saya dan j Anda benar-benar baik. Demi kejelasan seperti di beberapa set P, ia mungkin masuk akal untuk mempunyai lebih banyak perkara deskriptif di sana hanya untuk mengesan ia. Tetapi saya fikir i, j, k dan saya fikir sebahagian besar dari kita semua digunakan. ROB Bowden: Dengan konvensyen, jadi gaya adalah penting. Ia adalah salah satu daripada empat paksi di mana anda sedang dinilai, dan ia adalah begitu mudah untuk hanya pergi P anda ditetapkan pada akhir dan memastikan bahawa tidak ada kesilapan gaya. Jadi, pastikan anda tabbing betul. Pastikan variabel Anda diberi nama. Meninggalkan beberapa komen. Ia adalah sangat mudah untuk mendapatkan orang-mata. Anda tidak perlu untuk berfikir tentang apa-apa untuk mendapatkan titik-titik. Anda tidak perlu memikirkan apa-apa. Ia hanya menjadikan ia kelihatan cantik. Allison: Sebenarnya, kita mempunyai gaya 50, yang akan memberitahu anda di mana anda bermain-main jika anda sedang bermain-main di atas gaya dan akan memberitahu anda apa yang anda harus memperbaiki dan bagaimana anda perlu membaikinya. Ia juga hanya baik lagi bahawa itu dasar kursus bahawa jika anda berada di pejabat jam dan kod anda adalah keadaan kucar-kacir, kita boleh menolak untuk membantu Anda sehingga ia kelihatan lebih bagus. Jadi bermula tepat, menjaga gaya yang konsisten, Anda juga hanya akan membuat kehidupan anda dengan lebih mudah apabila anda cuba untuk pergi melalui debug. Jika anda cuba untuk mencari tahu mana kau hilang pendakap kerinting dan mereka di mana-mana, anda hanya membuat hidup anda lebih keras. Jadi konsisten dengan gaya. Saya berjanji itu akan membuat hidup anda lebih mudah. Ini akan membuat kehidupan kita lebih mudah. Semua orang akan lebih gembira. Dan itulah apa yang anda mahu. Gabriel: kelas anda akan lebih tinggi. Allison: Ya, dan kelas anda. Jika TF anda seperti anda, cenderung untuk menjadi menguntungkan. Baiklah, dan kemudian hanya perkara kedua di sini. Initializations konsisten. Jadi seperti yang kita lihat, anda boleh menyatakan dan memulakan sesuatu. Beberapa pembolehubah pada baris yang sama. Satu perkara yang kami ingin anda tidak lakukan adalah untuk menyatakan beberapa variabel dan tidak memulakan mereka pada yang sama garis yang anda Memulakan orang lain. Jadi dalam hal yang membuat tidak masuk akal sama sekali, kita mempunyai contoh di sini di mana kita mengisytiharkan ints dalam pembolehubah kuarters dime dan beberapa sen, tetapi pihak dan beberapa sen tidak mempunyai nilai awal. Kami tidak dimulakan mereka, tetapi betul-betul di tengah-tengah ada kita sudah dimulakan dime ke 0. Jadi baik lakukan pihak, dime, beberapa sen. Atau apakah pihak sama dengan 0. Dimes sama dengan 0. Beberapa sen sama dengan 0, atau apa sahaja nilai-nilai awal adalah. Hal yang besar dengan gaya, konsisten. Apabila ragu-ragu, konsisten. Tetapi mengikuti panduan gaya kita juga. Sejuk. Semua orang yang baik di sana? PENONTON: Di mana panduan gaya? Allison: Panduan gaya adalah on-- apa laman web? Gabriel: Saya rasa ia manual.cs50.net/-- Allison: Style? Gabriel: Style. Yep. Allison: Ya. Maka bertanyalah, di mana adalah gaya 50. manual.cs50.net/style. Ya? PENONTON: Kalau kita mendefinisikan pembolehubah, ia adalah OK jika kita meletakkan seperti [terdengar] seperti skor int dan kemudian tujuan int. Jadi, anda akan mengatakan bahawa sekarang kita sudah dapat menentukan nasib mereka bersama-sama? Allison: Maka bertanyalah, sekiranya Anda mempunyai kod berlebihan apabila anda mendefinisikan pembolehubah seperti nilai int dan on line permainan int seterusnya? ROB Bowden: Tidak pasti kes di mana kod berlebihan tidak baik. Saya tidak akan mempertimbangkan bahawa kod berlebihan. Aku hampir tidak pernah menyatakan beberapa pembolehubah pada baris yang sama lamanya. Dan jika apa-apa, ia adalah kerana biasanya saya meninggalkan beberapa jenis komen menjelaskan apa yang berubah-ubah adalah untuk. Jadi saya akan mengatakan skor int slash slash. Menjejaki apa sahaja. Keseluruhannya slash slash. Sehingga jauh lebih kotor dengan cara itu untuk menempatkan mereka semua pada baris yang sama. Saya tidak pernah meletakkan mereka pada baris yang sama. Allison: Saya rasa seperti itu keutamaan peribadi pada ketika ini. PENONTON: Apakah itu pergi untuk untuk gelung dan hal-hal juga? ROB Bowden: Seperti di dalam? Seperti int i sama dengan 0 koma panjang sama dengan sesuatu? Bahawa anda tidak mempunyai pilihan. Dengan gelung untuk pengawalan part-- jadi anda mungkin hanya melihat int i sama dengan 0 koma i kurang daripada apa-apa titik koma i plus plus. Itu int i sama dengan 0, secara teknikal anda juga boleh melakukan apa yang kita lihat sebelum ini dengan sintaks koma. int i sama dengan 0 koma j bersamaan 3 koma k sama dengan 5. Anda tidak mempunyai pilihan untuk berpecah bahawa sehingga menjadi beberapa baris, dan itulah standard. Melihat itu ada baik-baik saja. Allison: Awesome. Nah, Shalawat mudah ke dalam gelung. Jadi ya, di sini kita mempunyai beberapa contoh dari gelung yang kalian lihat dalam Scratch. Dan sudah tentu semua ini hanya boleh dihasilkan di C. Dan mereka pada dasarnya membolehkan anda untuk mengulangi beberapa seksyen kod sehingga keadaan tertentu dipenuhi, yang kita akan masuk ke dalam selepas bercakap tentang gelung dengan conditional. Jadi, kita mempunyai tiga jenis utama. Kerana, semasa, dan dilakukan sementara, yang kita semua akan melalui sekarang. Jadi yang pertama adalah untuk gelung. Jadi untuk beberapa syarat, melaksanakan blok kod. Kami mempunyai sedikit sejuk ini diagram di sini di bahagian bawah. Tapi pada dasarnya yang ada dalam untuk anda, yang baris pertama, Anda akan memulakan pembolehubah anda. Jadi seperti yang kita bercakap tentang, saya adalah sama dengan 0 atau saya adalah sama dengan 10. Apa sahaja yang anda perlu itu berubah menjadi itu akan dimulakan di sana, dinyatakan dan dimulakan untuk beberapa nilai. Jadi kita mempunyai beberapa keadaan yang berlaku untuk memeriksa kami variabel terhadap sesuatu. Jadi dalam kes kes khas di mana mungkin anda ingin bagian kod untuk melaksanakan lima kali. Oleh itu, kita harus int i sama dengan 0, dan kami inginkan ketika saya kurang dari 5. Jadi keadaan itu hanya akan memeriksa bahawa setiap kali. Jika syarat bernilai true, itu akan menjalankan kod, yang betul-betul apa gambarajah kecil ini menunjukkan. Dan jadi ia melaksanakannya. Ini update variabel, iaitu apa yang kita lihat di bahagian akhir untuk kami gelung pengawalan di sana. Oleh itu, ia hanya akan terus melakukan hal ini sehingga syarat tidak dipenuhi, dan kemudian ia akan keluar gelung dan terus beralih dengan seluruh program anda. Semua orang yang baik di sana? Sejuk. Jadi, inilah contoh, hampir sama untuk sesuatu yang saya hanya bercakap tentang. Oleh itu, kita hanya ingin mencetak ini adalah CS50 10 kali. Jadi anda lihat di sini kita mempunyai untuk kita, dan kemudian kita memulakan pembolehubah i untuk menjadi sama dengan 0. Keadaan kita adalah memeriksa bahawa itu kurang daripada 10. Jadi mengevaluasi benar ketika kita pertama kali bermula, dan kemudian update variabel kita setiap kali itu benar-benar melaksanakan dan mencetak keluar ini adalah CS50. Dan akan tamat selepas 10 kali. Sejuk. Oleh itu, sambil loop berikutnya. Dan seperti yang anda lihat di sini, kita hanya perlu manakala beberapa soalan ini condition--? PENONTON: Bagaimana saya boleh melompat sebenarnya hanya tidak satu nombor, tetapi dua nombor [terdengar] i plus plus plus? Allison: Jadi pertanyaannya adalah bagaimana anda boleh mengemaskini pembolehubah anda dengan lebih daripada satu pada satu masa. Jadi saya plus plus akan update dengan satu setiap kali. Jika anda ingin mengemas kini dengan dua, anda boleh lakukan i ditambah bersamaan 2. ROB Bowden: Pernahkah anda melihat ditambah sama dalam kuliah lagi? PENONTON: [didengar]. Allison: Ini secara efektif hal yang sama seperti saya sama dengan saya ditambah 2. Jadi ia akan mengambil dan mengemaskinikannya oleh dua setiap kali. Plus bersamaan hanya sesuatu kita sebut gula sintaksis. ROB Bowden: Ya, mereka ada untuk hampir semua operator aritmetik. Kali jadi saya sama dengan akan menggandakan nombor. j jurang sama dengan 3 adalah sama sebagai j j sama dibahagikan dengan 3. Allison: Atau tolak bersamaan 2 akan pengurangan i oleh dua setiap kali. ROB Bowden: Walaupun mod setara. Anda tidak pernah melihat pengendali bitwise, tetapi tanda sisipan sama dan ampersand sama, semua orang ada. Allison: Jadi banyak kali, terutama dengan pasangan anda yang pertama P set, Anda akan mungkin incrementing oleh satu, jadi saya plus plus, j plus plus semua adalah hal yang akan untuk biasanya akan menggunakan. Tetapi itu keadaan update sepenuhnya dalam kawalan anda. Anda boleh mengemas kini sendiri dengan apa jua kenaikan atau dalam apa jua cara anda membuat keputusan untuk. Mungkin anda juga ingin menjadi nombor rawak kadang-kadang. Tapi ya, terdapat banyak perkara yang boleh anda lakukan dengan itu. Anda tidak terhad kepada i plus plus. ROB Bowden: Asal tahu ia wujud, ia juga wujud dalam bentuk yang lain, plus plus i. Jadi, jika anda pernah mencari dalam talian dan kebetulan melihat plus plus i, cukup banyak membawa maksud yang sama. Allison: Cool. Baik? Awesome. Oleh itu, sambil gelung. Hampir sama. Anda mempunyai beberapa keadaan. Perkara utama yang perlu melihat di sini adalah daripada harus tiga bahagian yang berbeza untuk menyiapkan, kami mempunyai satu. Kami hanya mempunyai beberapa keadaan yang sedang diperiksa. Dan dengan cara yang sama, selama keadaan yang menilai kepada benar, kod anda akan berjalan. Dan jika itu salah, itu akan menamatkan, langkah ke bahagian seterusnya dari program anda. Jadi ini adalah jenis like-- apa yang contoh yang baik untuk memeriksa untuk beberapa keadaan normal? Gabriel: Walaupun benar. Allison: Anda boleh lakukan sementara benar. Nah, 1 adalah sama dengan 1. ROB Bowden: Anda boleh melakukan while-- hanya bukan menggunakan untuk loop, Anda selalu dapat kode untuk gelung dalam gelung sementara, jadi saya lebih besar dari 0 atau sementara saya kurang dari 10. Allison: Awesome. Dan kemudian kita telah lakukan semasa gelung, yang sangat bagus untuk pengesahan pengguna, di mana Anda ingin mendapatkan sesuatu dari pengguna anda, lihat jika ia berlaku, dan kemudian terus dari sana. Jadi salah satu hal yang perlu diketahui adalah dengan lakukan semasa adalah bahawa ia akan melaksanakan, dan kemudian ia akan melaksanakan semula jika syarat ini dipenuhi. Jadi mungkin cara terbaik untuk melakukan ini adalah hanya untuk melihat contoh di sini. Jadi seperti yang saya nyatakan tadi, pengguna pengesahan adalah benar-benar useful-- atau melakukan sesekali benar-benar berguna dengan pengesahan pengguna. Jadi ini hanya akan untuk meminta semula beberapa pengguna sehingga mereka nombor positif, yang mungkin berguna untuk set P anda minggu ini. Dan dalam kes ini, apabila kita pada mulanya menjalankan program ini, ia akan mencetak masukkan nombor positif. Ia akan mendapatkan beberapa input daripada pengguna, dan kemudian ia akan memeriksa input itu terhadap keadaan yang anda telah ditetapkan untuk itu. Jadi dalam hal ini ia akan memeriksa. Ia akan berkata, OK, adalah masukan kami negatif, atau itu 0 atau negatif, yang akan menjadi tidak sah. Demikian maka ia akan kembali segera. Soalan? PENONTON: Adakah ini yang sama kemudian sebagai while jika anda hanya menyalin kod yang dan meletakkannya [terdengar] while? Allison: Jadi soalan itu akan hal ini sama seperti yang hanya sementara gelung jika kita hanya menyalin gelung sementara di atas. Jadi dalam hal ini, gelung sementara anda akan memeriksa keadaan pertama. Jadi dalam hal ini, jika kita cuba menulis hanya sebagai while loop, ia akan berkata sementara input kurang daripada satu. Tetapi kita tidak mempunyai satu masukan untuk itu. PENONTON: Jika anda [terdengar] while termasuk kod ini, tetapi kemudian anda dapat mengharungi kod di atas gelung sementara juga. Anda hanya mempunyai kod ini [Terdengar] while. Allison: Akan perkara yang sama, ya. Jadi anda hanya boleh write-- bukan memiliki ya do--. Gabriel: Tetapi itu lebih elegan. Allison: Ya, itu yang lebih elegan. Anda boleh masuk ke dalam reka bentuk dan yang lainnya, tapi ya, anda benar-benar boleh melakukan itu. Apa-apa soalan lain? OK, sejuk. Oleh itu, kita telah berbicara banyak tentang keadaan dengan semua gelung ini yang kita ada, sehingga kita benar-benar masuk ke syarat dalam ungkapan Boolean. Sekali lagi, anda menggunakan ini dalam C, jadi hanya jenis peralihan dari antara muka yang lebih grafik untuk benar-benar coding. Sejuk, yang begitu besar, jika. Pada dasarnya hanya membolehkan kami untuk memperkenalkan beberapa logik ke dalam program dan kami check- keadaan sys. Jadi dalam hal ini, OK, adalah n lebih besar dari 0? Ya, ia adalah, jadi anda boleh menjalankan ini. Ia hanya memeriksa beberapa keadaan bahawa anda telah ditetapkan, yang saya fikir kita semua selesa dengan memeriksa keadaan. Sejuk. Jadi jika lain adalah salah satu anda yang lain, Anda boleh mengatakan OK, jika ini adalah benar, melakukan hal pertama ini. Jika tidak, saya mahu anda lalai dan melakukan sesuatu yang lain. Seperti dalam kes ini, anda sama ada memilih angka positif atau nombor negatif. Anda hanya mempunyai dua pilihan. Anda perlu untuk melaksanakan tidak kira apa input pengguna anda. Jadi, anda boleh berkata dengan baik, adalah ia lebih besar dari 0? Sejuk. Cetak nombor positif. Jika tidak, cetak negatif. Semua orang yang baik? Dan kemudian satu perkara untuk mengenali adalah bahawa jika sekiranya syarat itu dipenuhi, lain tidak akan pernah juga melaksanakan. Hanya salah satu dari ini akan melaksanakan pada satu masa. Jadi ini adalah trade off. Anda tidak boleh mempunyai kedua-duanya. Anda juga harus syarat pertama. Anda juga harus jika atau yang lain, tidak kedua-duanya. Yang kemudiannya boleh membuat hal-hal lebih rumit, kerana anda boleh lakukan jika, yang lain itu, dan kemudian yang lain. Jadi dalam hal ini, kita mempunyai tiga keadaan. Dan sekali lagi, hanya salah satunya ialah akan berakhir sedang dijalankan. Jadi, anda mungkin tertanya-tanya dengan baik, bagaimana jika anda mempunyai sesuatu yang dapat memenuhi dua ini. Mungkin apa sahaja yang anda sedang memasukkan memenuhi kedua-dua syarat untuk jika dan lain jika. Satu-satunya perkara yang akan menjalankan Allison: Sebaik sahaja ia mendapati sesuatu yang memenuhi syarat untuk itu bernilai true, itulah yang ia akan lari dan apa-apa lagi. Jadi jika anda mempunyai adalah nombor ini antara 0 dan 5 untuk satu pertama anda, atau nombor ini antara 3 dan 5 untuk lain jika sebahagian, dan anda input number-- yang Saya berkata 0 dan 5 dan- 4. Ia akan memukul yang pertama. Ia akan mengatakan OK, ini bilangan adalah antara 0 dan 5. Melaksanakan dan meninggalkan. Ia tidak pernah akan melanda bahawa pilihan kedua. Cool? Awesome. OK juga kenyataan suis jika Anda ingin mendapatkan bahkan more-- atau maaf, suis yang berikutnya. Aku terlalu terburu-buru di sini. Sekali lagi, jika beberapa blok di mana seperti yang saya hanya berkata adalah sebaik sahaja anda mendapati keadaan yang yang bertemu dan jika lain jika lain, ia meninggalkan. Jika anda perlu menyemak beberapa perkara, anda akan mahu menggunakan kerana ini itu akan memeriksa setiap waktu di sini. Jadi ini akan berjalan melalui dan jika itu lebih besar daripada atau sama dengan 90, ia akan mencetak itu. Dan ia akan berjalan melalui dan memeriksa setiap satu dari ini. PENONTON: Jadi ini akan menjadi kereta lebih daripada [terdengar]. Apakah ini seperti [terdengar]? Allison: Pertanyaannya adalah apakah ini kereta atau adakah ini melakukan apa yang anda inginkan. Ia benar-benar bergantung kepada apa yang yang anda mahu dari program anda. PENONTON: maksud saya seperti jika anda meletakkan 90 di. Allison: Jika anda meletakkan 90-- PENONTON: [didengar]. Gabriel: Anda akan mendapatkan dua perkara. Allison: Anda akan mendapatkan dua perkara. Ya, dua. ROB Bowden: Dua? Allison: No. ROB Bowden: Empat. Jika anda meletakkan 90, ia akan mengatakan anda mendapat nilai A, anda mendapat B, anda mendapat C, anda mendapat D. PENONTON: [didengar]. Allison: Benar. Jadi, saya bergantung kepada apa yang anda mahu dari program anda. Kadang-kadang anda perlu memeriksa beberapa perkara. Anda akan mendapat banyak lebih dalam apa reka bentuk yang baik adalah anda pergi ke hadapan. Perkara penting yang perlu menyedari adalah bahawa ini akan memeriksa semua empat syarat di sini. Sedangkan jika ini jika lain jika lain jika lain, ia akan memukul bahawa kes pertama, ia akan mencetak anda mendapat nilai A dan dilakukan. ROB Bowden: Walaupun kita memutuskan untuk mengubahnya ke jika dan lebih besar dari atau sama dengan 90, jika dan lebih besar dari atau sama dengan 80, dan kurang daripada atau sama dengan 89, jika n lebih besar daripada atau sama dengan 70, dan n kurang daripada atau sama dengan 79, sehingga akan benar. Yang akan melakukan apa yang kita mahu, tetapi ia masih memeriksa setiap satu itu. Jadi sedangkan dalam senario pertama, jika kita masuk 90 dengan hanya jika lain jika lain jika, dan kita melangkah ke 90, maka ia akan membetulkan. Ini akan memeriksa pertama satu, cetakan anda mendapat nilai A, melangkau segala-galanya, kerana ia sudah menemukan satu yang bekerja. Semua kes-kes yang saling eksklusif berdasarkan jika lain jika lain jika. Sehingga akan melaksanakan pertama jika, maka hal itu dilakukan. Ia akan pergi ke akhir. Sedangkan jika kita mengubah ini menjadi apa yang saya berkata dengan kurang daripada atau sama dengan 89. Ia akan memeriksa yang pertama. Ini akan dicetak. Ia akan memeriksa yang kedua. Ia tidak akan dicetak. Semak yang ketiga. Tidak akan dicetak. Periksa satu keempat. Sekarang siap dicetak. Jadi dalam hal ini, yang lain jika versi, kerana kes-kes ini yang saling eksklusif, itu penggunaan yang lebih baik jika lain jika lain jika, kerana yang akan mempunyai cek lebih sedikit daripada syarat-syarat daripada versi ini. Allison: Awesome. Jadi perkara lain kita boleh lakukan adalah pernyataan switch. Pada dasarnya pernyataan switch mengambil di beberapa variabel, dalam kes ini ia n, dan menentukan hal untuk melaksanakan. Jadi, ini juga merupakan salah satu di mana kes anda harus jenis yang saling eksklusif. Jadi dalam hal ini, jika kita kita akan mendapat satu, itu akan sepadan dengan apa sahaja yang variable-- apa sahaja nilai n adalah salah satu daripada kes-kes ini, sehingga 1, 2, atau 3, dan mencetak talian yang sama. Dan kemudian jika anda perhatikan di sini, kami juga mempunyai suatu keingkaran, yang anda dapat memikirkan seperti yang lain anda. Jadi, jika anda memilih mana-mana nombor lain selain 1, 2, dan 3 dalam kes ini itu hanya akan mencetak tidak sah. Memutuskan bila untuk menggunakan IFS berbanding jika elses berbanding switch akan menjadi sesuatu yang kalian akan lihat bentuk yang bijak kerana anda mula menulis program yang lebih rumit, dan tidak ada peraturan keras dan cepat ketika menggunakannya. Ia benar-benar bergantung kepada konteks anda. ROB Bowden: Dan hanya untuk membuangnya di luar sana kerana ia adalah bagian yang lebih selesa. Suis, mereka cenderung untuk adalah-- sehingga Anda terbatas dalam bilangan cara anda boleh menggunakannya, kerana jika, keadaan dapat cukup banyak apa-apa yang anda mahu. Dengan beralih kes-kes harus menjadi nombor, atau teknikal mereka boleh menjadi aksara, tetapi karakter, seperti yang akan kita lihat, adalah nombor adil. Jadi mereka harus menjadi nombor, tetapi suis benar-benar lebih efisien daripada jika lain jika lain jika, kerana walaupun mengambil contoh before-- baik, contoh gred yang seolah-olah baik. Nah mari kita katakan di sini, kita bukan melakukan ini sebagai jika lain jika lain jika senario. Jadi, jika n sama sama dengan 1, cetak yang anda pilih angka yang rendah. Jika lain jika n sama sama dengan 2, Anda mengambil sejumlah sederhana. Lain jika sama dengan sama dengan 3, yang tinggi. Yang lain tidak sah. Jadi, bila itu adalah senario kami. Jadi, bila kita masuk 4, jadi kami berharap tidak sah. Cara yang jika lain jika lain apakah pendekatan yang akan bekerja adalah memeriksa keadaan pertama. Ia tidak puas. Oleh itu, kita memeriksa keadaan kedua. Ia tidak puas. Semak syarat ketiga. Tidak berpuas hati. Jadi kita pergi ke lain dan mencetak tidak sah. Cara kerja saklar adalah mengkompilasi turun menjadi apa yang kita akan untuk memanggil meja melompat. Dia yang menjadi idea utama bahawa ketika anda memasukkan 4, serta-merta boleh pergi ke lalai. Ia tidak perlu untuk memeriksa am Saya kasus 1? Nope yang tidak hanya itu. Kes 2? Nope. Kes 3? Nope. Lalai. OK, ini harus menjadi di mana saya mahu, dan kemudian jalankan itu. Tidak, ia segera melompat ke lalai. Atau saya masukkan 2, itu segera akan pergi ke 2 tanpa perlu pergi melalui kes 1. Jadi dengan cara itu, realistik pada masa kini yang tidak banyak keuntungan kecekapan. Biasanya komputer cukup cepat, dan itu bukan yang besar. Tetapi ia adalah kes yang suis cepat. Jika anda benar-benar berusaha untuk mengoptimumkan, gunakan suis. Allison: Cool. Dan selepas itu perlu pengendali pertigaan. Jadi saya tahu yang saya sebutkan sebelumnya kata gula sintaksis. Jadi itu hanya hal yang membuat kod anda jauh lebih ringkas. Jadi, ini adalah salah satu daripada kes-kes. Jadi pengendali pertigaan adalah tanda tanya usus besar seperti yang kita lihat dalam rentetan garis s sama n lebih besar dari 100 tanda tanya kolon tinggi rendah. Jadi, pada asasnya bagaimana ini bekerja adalah itu n yang lebih besar daripada 100 adalah suatu keadaan. Jadi saya fikir ia boleh masuk akal. Ini seperti bertanya soalan. Ia berkata oh, adalah n lebih besar daripada 100. Siapa yang tahu? Dan jika ia bernilai benar, ia akan memberikan anda perkara pertama yang terdaftar di sana, yang tinggi. Jika tidak ia akan memberikan anda rendah. Jadi, ini adalah hanya benar-benar mudah dan cara yang berkesan untuk melakukan seperti jika lain. Itu semua ini. Dan jika kita hendak menulis ini sebagai jika lain bersyarat, ia akan menjadi jika n lebih besar daripada 100, pulangan tinggi. Yang lain, pulangan yang rendah. Ini baru yang lebih cara ringkas dari menulisnya. ROB Bowden: Jadi contoh ini tertentu adalah apabila anda melakukan sesuatu seperti ini, ini adalah pola di mana saya menggunakan pertigaan sangat kerap. Oleh itu, kita tidak bercakap tentang skop lagi, tetapi saya benci melihat titik koma string s. Jika n lebih besar daripada 100, s sama tinggi. Yang lain, s sama rendah. Jadi pola itu, lima garis kod harfiah 100% daripada masa boleh dipindahkan ke dalam apa yang di sana dengan pertigaan a. Jadi pertigaan, satu baris kod. Jika yang lain, lima. Itu satu contoh, aku keluar setiap saat. Ini akan tempat yang hebat untuk operator pertigaan. Ia amat bersih. Tetapi orang-orang cenderung untuk tidak pernah menggunakannya. Allison: Bawa pergi Gabe. Gabriel: Jadi sekarang kalian semua dipelajari dalam kuliah minggu ini bahawa segala sesuatu dalam komputer adalah binari, kan? Sama seperti lampu-lampu di sini. Anda boleh sama ada hidup dan mati. Dan dengan segala-galanya, maksud saya benar-benar segala-galanya. Beberapa nombor, dan aksara, dan tali, dan juga kod yang anda menulis apabila itu akan disusun ke mesin kod dan hal-hal seperti itu, jadi ia semua bisul ke 0 dan 1 '. Dan ketika kita sedang berhadapan dengan bilangan bulat, yang adalah sesuatu yang sangat teknikal mudah, kita harus dapat melakukan hal-hal seperti menambah mereka, yang mungkin salah satu perkara yang paling mudah anda boleh lakukan untuk dua bilangan bulat, kan? Jadi penambahan dan pengurangan bekerja dengan seperti ia berfungsi dalam notasi perpuluhan, kecuali di sini ia adalah binari, kan? Jadi itu dalam asas dua. Jadi tambahkan 1 ditambah 1. Yang memberikan 0, dan 1 membawa lebih. Dan hanya terus melakukan itu, Jadi sekarang datang soalan yang lebih menarik. Kita tahu bagaimana untuk mewakili semua bilangan bulat positif dalam komputer, tetapi mari kita membuat ini satu latihan. Berpura-pura kalian semua pada tahun 1960 atau sesuatu yang cuba untuk membuat komputer, dan anda harus datang dari cara untuk menyimpan tolak 1, sebagai contoh, atau dikurangi integer untuk perkara itu. Bagaimana anda akan melakukannya? Apa-apa idea? Hanya membuang apa-apa pada saya. Ya? PENONTON: [didengar] menetapkan yang khusus jika anda [terdengar]. Gabriel: Anda boleh menetapkan satu agak khusus, yang akan menjadi 0 atau 1. Katakan satu jika ia positif dan 0 jika ia adalah negatif. Dan kemudian sisa bit hanya untuk menyimpan nombor. Sejuk. Jadi itu adalah satu idea yang sangat baik. Kita ada, saya tidak tahu, 200. Dan jika sedikit yang pertama adalah dihidupkan, maka itu ditambah 200. Jika ia dimatikan, ia adalah tolak 200. Sejuk. Hanya ada satu kecil Masalah dengan hal ini, yaitu bila kita cuba untuk jumlah segalanya. Cuba bayangkan, kita mempunyai 11111 di sini, dan kami menjumlahkan ini dengan 00100 apa sahaja. Jika kedua-dua positif, itu bagus. Tapi kemudian jika salah satu yang bernilai negatif, seperti katakanlah yang sedikit ini di sini adalah orang yang bertanggung jawab bagi- saya akan membuat satu separate-- jadi ini bermakna bahawa jumlah ini di sini adalah positif. Ini bermakna bahawa ini jumlah di sini adalah negatif, kan? Tapi kemudian apabila anda berada akan jumlah mereka, anda perlu jika pernyataan berkata oh jika ini adalah 0, maka jumlah wang saya akan sesuatu yang berbeza, kan? Jadi ada sedikit lebih bijak cara untuk melakukan itu, yang dipanggil pelengkap dua ini. Jadi, pada asasnya apa yang kita lakukan ialah kita mendefinisikan tolak 1 menjadi perkara yang jika kami menambah sehingga 1 memberikan kita 0. Saya ulangi. Jadi, bila ini di sini adalah 1. Apakah perkara yang secara semula jadi dalam bilangan bulat positif ditambah kepada yang memberi kita 0? Apa kata kita cuba untuk menambahnya ke nombor ini? Kami akan have-- OK, jadi mari kita tambah. Kita akan mempunyai 1 ditambah 1 adalah 0, dan kemudian ia membawa lebih. Dan kemudian kita akan mendapatkan 0 lagi. Saya mendapat keliru. Dan anda akan mendapat 0 dan 0 dan 0 dan 0 dan 0 dan 0. Banyak 0 itu. Pada satu yang terakhir, kita tidak akan mampu untuk membawa ia ke atas, kerana katakanlah kita hanya berurusan dengan satu bait, jadi hanya 8 bit. Jadi apa yang komputer tidak secara lalai hanya lupa tentang itu [terdengar], OK? Jadi, ini adalah apa yang disebut pelengkap dua itu. Kami hanya mendefinisikan tolak 1 menjadi perkara di sini bahawa jika anda menambah bahawa untuk 1 akan memberi anda 0. Dan itu cukup sejuk kerana kita tidak benar-benar perlu lewat untuk melaksanakan Jenis yang berbeza daripada jumlah bergantung kepada sama ada itu adalah satu negatif atau nombor positif. Adakah ini masuk akal? Jadi satu perkara yang kita lakukan di sini untuk menukar antara positif dan negatif integer kemudian kita flip segala-galanya, dan kemudian kita tambah 1 kepada nombor tersebut. Jika anda cuba untuk melakukannya sendiri di atas sekeping kertas, Anda akan melihat yang masuk akal. Tetapi jika saya mengambil nombor ini di sini, ini adalah lima. Jadi jika saya flip segala-galanya di sini, jadi 1, 1, 1, 1, 1. Flip, flip, flip. Dan kemudian saya tambahkan 1 untuk itu. Saya akan mempunyai tepat tolak 5. OK? Ini semacam masuk akal kerana jika anda cuba untuk jumlah ini dengan bilangan yang ada sebelumnya, yang was-- mari kita flip ini lagi. Ia adalah 101 dan banyak 0 itu. Jika anda cuba untuk menambahkan dua nombor bersama-sama, Anda akan mempunyai tepat 0. OK. Apa-apa soalan? PENONTON: [didengar] Gabriel: Apa yang kamu maksudkan? PENONTON: negatif kepada positif [terdengar]. Gabriel: Tidak, anda flip dan anda menambah 1 selalu. Yeah. OK, sehingga karakter juga dikodkan binari. Kami mempunyai jadual ASCII, kerana anda juga, dalam kuliah, bukan? Jadi pada dasarnya pemetaan perkara. Dan di sini saya tidak boleh menekankan cukup bahwa untuk komputer, dan 65 berjuta-perkara yang sama. Jadi jika saya menulis sesuatu seperti char c sama, saya boleh pada masa yang sama hanya menulis 65 di sini, dan ia akan persis sama, OK? Tidak ada perbedaan apa pun. Kami biasanya cenderung untuk meletakkan watak-watak dalam pembolehubah jenis. Char, bukan kerana mereka pada dasarnya dibuat untuk itu, tetapi kerana konvensyen manusia. Tetapi anda hanya boleh berurusan dengan bilangan bulat bukan pembolehubah dari jenis char, dan anda akan baik-baik saja. Satu-satunya perbezaan sebenar antara c char dan int i ialah int mempunyai empat bait dalam kebanyakan sistem, manakala char mempunyai satu byte. Mereka pada dasarnya Perkara yang sama dalam hal data. Jadi apa yang akan dicetak di sini? Di sini kita sedang mencetak angka menggunakan printf dengan ditambah 1, dan hanya seperti bilangan bulat, aksara dapat disimpulkan, maka karakter juga dapat disimpulkan. Jadi, ini adalah betul-betul 65. Jadi tidak akan menjadi 66, dan di sini kita mempunyai 65 ditambah sedikit minus besar A, yang akan menjadi, saya tidak benar-benar tahu. Tetapi ia akan menjadi betul-betul jurang antara huruf besar dan dan surat-surat yang lebih kecil, jadi kita akan mendapatkan yang kecil, kan? Yeah. Jadi ini akan mencetak jenis yang betul-betul satu ini. Baik? Apa-apa soalan? Di sini kita mempunyai sekumpulan berbeza jenis untuk pembolehubah numerik. Kita sudah bercakap tentang int. Float adalah cara yang supaya- ini adalah benar-benar lucu, kerana apabila saya pertama kali belajar untuk program kembali hari dengan Python, program pertama yang pernah saya cuba untuk menulis, saya melihat bahawa terdapat jenis yang disebut dalam dan jenis yang disebut apung. Dan apungan adalah untuk semua nombor nyata. Jadi kemudian saya bertanya mengapa Pernah saya gunakan int yang kemudian? Kerana jika saya boleh menggunakan semua nombor nyata dengan apungan, Saya hanya akan berhenti menggunakan ints, kan? Oleh kerana bilangan real sama seperti yang lebih umum. Ia ternyata bahawa ini adalah tidak terjadi di dalam komputer kerana mereka pada dasarnya perkara yang berbeza. Jadi bilangan bulat dan mengapung, yang operasi yang anda lakukan untuk mereka pada dasarnya berbeza kerana dari jalan yang ia disimpan, OK? Kami akan bercakap sedikit sedikit lebih lanjut mengenai bahawa dalam satu saat. Jadi ganda adalah hanya apungan yang lebih besar. Biasanya dalam kebanyakan sistem, apungan adalah empat bait, seperti int. Dan ganda adalah lapan bait. A lama sebenarnya hanya simbol bahawa anda melampirkan pada jenis seperti int. Kamu katakan lama int seperti ini. Int panjang panjang x untuk menjadikannya lebih panjang. Jadi, dalam kebanyakan sistem, yang akan memberi lapan bait bukannya biasa empat. Dan anda benar-benar dapat menggugurkan dalam, jadi ia hanya boleh mengatakan panjang panjang, dan yang bekerja juga, OK? Anda juga boleh melakukan perkara-perkara lain seperti int unsigned, atau lagi hanya tidak ditandatangani juga akan bekerja. Dan yang akan membuat x variabel yang seperti segala-galanya adalah positif, jadi anda tidak boleh benar-benar mempunyai negatif nombor dengan cara yang kita lihat di sini. Jadi berikut indah titik dan ketepatan terapung. Itulah salah satu sebab mengapa anda ingin menggunakan ints bukan mengapung, kerana ints adalah 100% tepat, bukan? Ini betul-betul angka itu. Untuk mata terapung, jika anda mengatakan jawapan sama dengan 1 lebih 10-- Saya kebetulan punya ini tepat program sini, float.c. Yang mencetak hingga 20 tempat perpuluhan. 1 dibahagikan dengan 10, dan yang biasanya adalah 0.1, kan? Tetapi di sini jika kita membuat terapung dan kemudian kita menjalankannya, kita melihat bahawa ia tidak betul-betul 0.1. Ini 0,149 sesuatu. Dan kenapa begitu? Kerana anda tidak boleh benar-benar mewakili setiap jumlah sebenar mungkin satu dalam ingatan kerana ada uncountably banyak dari mereka. Jadi kita secara teknikal hanya mampu mewakili jumlah yang terhad daripada mereka dengan jumlah yang terbatas data. Tetapi ia benar-benar menarik. Sekarang ini menimbulkan persoalan bagaimana yang anda lakukan pergi tentang mewakili ini dengan bit, bukan? Jadi bagaimana mengapung disimpan? Dengan bilangan bulat itu mudah. Tetapi dengan mengapung anda mahu untuk memaksimumkan jangkauan, dan anda mahu menjadi mampu untuk mewakili jumlah yang besar dan jumlah yang sangat kecil seperti 0.000001 pada masa yang sama. Jadi sekali lagi, permainan yang sama. Adakah sesiapa yang mempunyai apa-apa idea bagaimana kita boleh pergi tentang mewakili apungan dalam ingatan? Hanya membuang apa-apa. Ya, silakan. PENONTON: [didengar] sebagai jika itu dua ints dan satu menjadi [didengar] dan satu makhluk segala-galanya selepas titik perpuluhan. Gabriel: OK, sejuk. Jadi dua bilangan bulat yang berbeza. Anda boleh mempunyai 12.45, jadi itu 12 dan 45. Nice. Apa ere anda akan katakan? Hal yang sama? Ya? PENONTON: [didengar] notasi di mana anda memisahkan asas. Gabriel: Notasi ilmiah, yeah itu biasanya apa yang berlaku. Jadi, ini adalah apa yang disebut mantissa. Itulah yang sebenarnya adalah nombor, dan kemudian eksponen hanya di mana koma itu, bukan? Jadi ini akan menjadi sesuatu yang dalam bentuk 1, 2, 3, 4, 5 kali 10 4 tolak. Saya hanya menyedari bahawa- yeah, betul-betul. Dan kemudian ini 10 kepada tolak 4 adalah akan menentukan di mana koma adalah, OK? Di Brazil kita gunakan koma. Di sini anda semua menggunakan titik. Jadi titik. Dan ini adalah sejuk, kerana selepas itu anda boleh tumpuan banyak potongan-potongan anda pada lelaki ini di sini, pada mantissa, dan maka itu akan menjadi ketepatan sebenar anda. Dan anda boleh melakukan ini sama ada dalam perpuluhan atau dalam sistem binari yang berasaskan. Ada yang berbeda cara-cara untuk melaksanakan hal ini. Soalan? Ya? PENONTON: Berapa banyak tempat setelah desimal [terdengar]? Gabriel: Itu soalan yang rumit, kerana ia tidak pernah benar-benar 100% tepat, kerana seperti yang anda lihat di sini, untuk beberapa angka itu adalah 100% tepat. Saya percaya jika kita meletakkan 0,5 di sini, ia akan menjadi 100% tepat. Ia akan menjadi 0,500000. Jadi dalam hal ini, ia adalah sempurna. Tetapi dalam kes-kes lain, itu jauh lebih sempurna. Dalam pengalaman saya, seperti sehingga empat, lima tempat perpuluhan adalah cukup tepat. Jika anda menggunakan dua kali, ia akan menjadi cara yang lebih tepat daripada itu, OK? ROB Bowden: Jadi hanya untuk membuang beberapa konteks yang lebih pada kereta berhias, Aku tidak pernah ingat 100% bagaimana spec mengapung benar-benar bekerja, tetapi saya anda sentiasa ingat yang mengapung mulai mendapatkan berantakan. Jadi idea ini adalah bahawa apabila anda benar-benar, benar-benar nombor besar atau benar-benar, benar-benar bilangan yang kecil, kita mula semakin buruk di membedakan antara dua mengapung dekat. Jadi bagaimana saya suka untuk berfikir tentang adalah dengan floating point ketidaktepatan, ada dua pelampung yang jika saya cuba untuk menentukan mereka dalam bahasa C, walaupun pada hakikatnya mereka nombor yang berlainan, mereka akan menjadi ditafsirkan sebagai jumlah yang sama, kerana kita tidak boleh menyimpan mereka berbeda. Kita perlu menggunakan bit yang sama. Dan lagi apabila kita dapat benar-benar, benar-benar besar nombor, bercakap seperti 10 kepada 300 atau sesuatu, itu pada ketika itu yang 10 ke 300 atau 5 kali 10 kepada 300 tidak dapat dibedakan dari 7 kali 10 kepada 300. Jadi itulah perbezaan yang cukup besar antara kedua-dua nombor. Tapi kemudian apabila anda turun kepada perkara-perkara pelbagai normal, Anda cenderung cukup pandai membezakan. Dan kemudian apabila anda turun benar-benar kecil, Anda Juga tampak lebih buruk lagi. Sebab itu sejumlah besar 0.0000, ia akan menjadi sangat buruk. Gabriel: Ya, jadi nota yang cepat. Jangan sekali-kali melakukan hal ini. Jangan sekali-kali cuba untuk membandingkan mengapung menggunakan sama dengan bersamaan, kerana walaupun mereka hampir sama, hampir sama tidak sama. Jadi apa yang anda biasa lakukan adalah anda tolak mereka, mengambil nilai mutlak itu, dan melihat apakah yang lebih kecil dari 0.0001 atau sesuatu seperti itu, OK? Dan sejuk. Saya tahu banyak orang mempunyai latar belakang di Jawa, terutama orang-orang yang melakukan AP sains komputer, bukan? Dan Jawa adalah bahasa bahwa sebagian besar didasarkan pada C, ia mempunyai beberapa perbezaan yang sangat besar. Tetapi bagi gelung, dan jika, dan hal-hal seperti itu, mereka semua sintaks yang sama. Saya mempunyai beberapa program di sini untuk menunjukkan ini. Jadi, sebagai contoh, dunia hello yang mudah. Ini hello dunia dalam C, yang anda Orang-orang ini pasti kenal, dan yang satu ini dan ini adalah di Jawa. Jadi di Jawa kita mempunyai kelas awam, hello world, dan tidak sah public static args utama, dan tali. Args tali akan untuk hadir di C sangat lama. Tetapi jangan kita pergi ke sana lagi. Pada masa ini kami mempunyai kekosongan di sini, yang bermaksud utama yang tidak mengambil apa-apa bantahan. Dan selepas itu perlu System.out.println, dan itulah jenis setara untuk printf. Di sini kita tidak benar-benar perlu backslash n kerana cetak Dalam melakukan itu untuk anda. Itu menambahkan backslash n pada akhir baris. Tetapi jika anda pergi ke sesuatu seperti untuk, anda dapat melihat bahawa mereka cukup banyak hal yang sama. Jadi pengawalan, dan syarat, dan kemas kini is-- Aku rindu ruang di sini-mereka cukup banyak perkara yang sama, kecuali Jawa mempunyai sebagai bahan beberapa tingkat tinggi. Di sini kita boleh melakukan ditambah saya dan Jawa akan secara automatik membuat ini saya di sini, yang integer, ke dalam string, dan kemudian menambahkan kedua tali itu. Di sini, di C kita perlu melakukan perkara yang &% d. Jalur ini di sini, untuk kelihatan betul-betul sama. Dan jika kita melihat jika, seandainya juga terlihat persis sama, kan? Jadi perbezaan yang sangat besar adalah dalam hal-hal yang anda lihat di sini. Public static, tidak sah, dan maka kelas awam jika. Jadi Jawa mempunyai apa yang disebut mesin maya. Dan ia sangat berat berdasarkan apa disebut pengaturcaraan berorientasikan objek, yang sangat, sangat umum paradigma untuk pengaturcaraan pada masa kini. Dan perkara kelas ini adalah apa yang anda lihat, sesuatu dari orientasi objek, adalah anda membuat kelas dan kemudian anda dapat memperoleh objek dari kelas itu. Kami tidak akan bercakap terlalu banyak tentang itu di CS50, tetapi yang pasti sesuatu yang benar-benar sejuk, terutamanya jika anda mahu pergi ke dalam pembangunan web yang lebih canggih pada akhir kursus ini, seperti menyerahkan projek akhir anda dan beberapa rangka kerja yang baik dan sebagainya. Jadi pada dasarnya idea ini adalah bahawa anda tidak mahu melaksanakan semula sesuatu, jadi anda membuat sesuatu yang sangat generik, seperti bentuk, dan kemudian anda membuat bentuk yang berbeza dari itu, dan kemudian dari masing-masing bentuk-bentuk ini, anda membuat beberapa bentuk yang lebih spesifik dalam tiga dimensi atau sesuatu seperti itu. Dan mereka mempunyai hierarki ini mereka mewarisi dari orang-orang lain, sehingga semua fungsi dan semua pembolehubah yang bentuk yang besar di sini mempunyai, semua ini akan mempunyai, dan semua ini adalah akan mempunyai, dan sebagainya dan sebagainya. Jadi itulah idea asas. C tidak mempunyai itu, tetapi C ++ tidak mempunyai bahawa jenis ciri. Dan Jawa yang banyak dipengaruhi dengan orientasi objek, jadi itu sebabnya anda lihat kelas di sini sepanjang masa. Dan perkara yang lain adalah ini mesin maya Java. Jadi ini, saya fikir, adalah idea yang sangat pintar. Jadi apa yang orang-orang yang java dicipta lakukan adalah mereka tidak mahu menyusun kode mereka dua kali jika mereka harus berjalan dalam Windows, atau Mac atau Linux, jadi apa yang mereka lakukan yang mereka benar-benar menjalankan sesuatu seperti perkakas, tetapi anda tidak benar-benar melihat hal itu terjadi. Jadi mereka menjalankan mesin maya dalam komputer anda, yang pada dasarnya seperti yang sistem operasi mini. Dan operasi yang Tujuan sistem dalam kehidupan adalah hanya untuk menjalankan apa yang dipanggil kod bait. Jadi, daripada di C, cara kita akan kompilasi ini membuat jika, dan kemudian jalankan ./if. Saya terlupa backslash dalam. Di Jawa, yang akan anda lakukan pertama Jawa C untuk compile, if.c. Ia bukan C. Ianya dot java. Dan kemudian anda perlu untuk menjalankan tidak ./. Anda akan mendapat fail baru ini bird_r.jpg, tetapi anda tidak boleh benar-benar menjalankan bird_r.jpg kini hanya seperti yang kami lakukan sebelum ini. Ini tidak boleh laksana. Anda harus lari. Anda harus memberi makan ke program yang dikenali sebagai Jawa, dan program yang mesin maya, dan kemudian anda melakukan bird_r.jpg, atau jika. Ya. Dan kemudian ia berfungsi. OK jadi ini adalah jenis yang mesin maya berlaku. C tidak mempunyai itu, jadi jika saya meletakkan program ini di mesin Windows, ia tidak akan bekerja di C. Di Jawa yang dilakukannya. Soalan? Sejuk. Itu kalau seksyen super untuk hari ini.