1 00:00:00,000 --> 00:00:12,510 2 00:00:12,510 --> 00:00:13,870 >> ROB: Baiklah. 3 00:00:13,870 --> 00:00:16,770 Selamat datang di bagian pertama. 4 00:00:16,770 --> 00:00:17,480 Aku Rob. 5 00:00:17,480 --> 00:00:18,806 >> JOSEPH: Aku Yusuf. 6 00:00:18,806 --> 00:00:21,540 >> ROB: Jadi kita akan menyelam langsung masuk 7 00:00:21,540 --> 00:00:23,420 Hal pertama untuk berbicara tentang adalah Appliance tersebut. 8 00:00:23,420 --> 00:00:27,150 Jadi mudah-mudahan sebagian besar dari Anda memiliki download sudah. 9 00:00:27,150 --> 00:00:37,180 Tapi Anda bisa lihat petunjuk di cs50.net/appliance. 10 00:00:37,180 --> 00:00:38,430 Ya Tuhan, sekarang aku sadar diri. 11 00:00:38,430 --> 00:00:44,590 12 00:00:44,590 --> 00:00:45,430 Aku masih mendengarnya. 13 00:00:45,430 --> 00:00:47,232 >> JOSEPH: Wow, kedengarannya seperti itu bingung. 14 00:00:47,232 --> 00:00:52,460 >> ROB: Jadi beberapa orang telah memiliki masalah dengan itu, jadi jangan menunggu sampai 15 00:00:52,460 --> 00:00:54,940 menit terakhir dari masalah diatur ke mencoba dan memecahkan Appliance dan 16 00:00:54,940 --> 00:00:56,320 mengetahui bahwa itu tidak bekerja. 17 00:00:56,320 --> 00:00:59,010 >> JOSEPH: Dan jika ada sesuatu yang tidak bekerja dan Anda membutuhkan bantuan, Anda dapat pergi ke 18 00:00:59,010 --> 00:01:03,390 cs50.net/discussion mana kita memiliki sebuah forum di mana Anda 19 00:01:03,390 --> 00:01:04,110 dapat memposting pertanyaan Anda. 20 00:01:04,110 --> 00:01:06,655 Dan kami akan sampai ke mereka akhirnya. 21 00:01:06,655 --> 00:01:07,490 >> ROB: Baiklah. 22 00:01:07,490 --> 00:01:12,180 Jadi ini adalah apa yang Appliance terlihat seperti. 23 00:01:12,180 --> 00:01:15,480 Sekali lagi, itu hanya benar-benar terpisah sistem operasi berjalan dalam 24 00:01:15,480 --> 00:01:19,440 sistem operasi apa pun yang Anda berjalan pada laptop Anda. 25 00:01:19,440 --> 00:01:24,450 Dan hal utama Anda akan menggunakan adalah gedit. 26 00:01:24,450 --> 00:01:28,050 Jadi mudah-mudahan ini memiliki sudah menjadi situs akrab. 27 00:01:28,050 --> 00:01:29,470 Terminal. 28 00:01:29,470 --> 00:01:31,890 >> Dan Anda juga dapat menjalankan Chrome dalam Appliance tersebut. 29 00:01:31,890 --> 00:01:33,860 Ada beberapa orang yang telah melaporkan internet 30 00:01:33,860 --> 00:01:35,390 tidak bekerja di Appliance tersebut. 31 00:01:35,390 --> 00:01:38,090 Dan beberapa dari mereka baru saja diasumsikan bahwa tidak seharusnya 32 00:01:38,090 --> 00:01:39,190 internet di Appliance tersebut. 33 00:01:39,190 --> 00:01:40,750 Tapi ya, ada seharusnya menjadi internet. 34 00:01:40,750 --> 00:01:44,000 35 00:01:44,000 --> 00:01:46,410 >> Aku akan mengatakannya sekarang, tapi tidak benar-benar berarti apa-apa. 36 00:01:46,410 --> 00:01:50,680 Jika internet tidak bekerja, ini adalah apa yang Anda cenderung membutuhkan 37 00:01:50,680 --> 00:01:52,180 untuk menjalankan untuk memperbaikinya. 38 00:01:52,180 --> 00:01:55,602 Jika Anda mengalami masalah internet, tidak ingat, hanya posting di 39 00:01:55,602 --> 00:01:57,560 Diskusikan, dan kita akan mengatakan, jalankan itu. 40 00:01:57,560 --> 00:02:00,420 Tapi internet harus bekerja. 41 00:02:00,420 --> 00:02:06,650 >> Jadi satu-satunya hal yang lain - ya, ada lagi yang benar-benar relevan. 42 00:02:06,650 --> 00:02:08,979 Tapi aku hanya ingin menunjukkan bahwa - 43 00:02:08,979 --> 00:02:13,290 lihat di kanan bawah sudut ini. 44 00:02:13,290 --> 00:02:16,530 Jadi masing-masing Peralatan Anda harus memiliki alamat IP. 45 00:02:16,530 --> 00:02:22,350 Dan kemudian di semester, IP ini alamat akan menjadi lebih relevan bila 46 00:02:22,350 --> 00:02:27,230 Anda bekerja di web p-set, karena Anda akan dapat mengakses 47 00:02:27,230 --> 00:02:32,310 situs web yang sedang Anda kerjakan dari Anda Chrome lokal dengan menggunakan alamat IP ini. 48 00:02:32,310 --> 00:02:35,400 >> Tapi apa yang saya ingin menggunakan alamat IP - dan Anda tidak perlu melakukan ini, saya 49 00:02:35,400 --> 00:02:37,460 hanya ingin menunjukkan itu - 50 00:02:37,460 --> 00:02:39,540 di sini. 51 00:02:39,540 --> 00:02:42,910 Jadi ini adalah jendela terminal pada Mac saya, hal ini tidak di 52 00:02:42,910 --> 00:02:44,580 Appliance sama sekali. 53 00:02:44,580 --> 00:02:47,190 Dan Anda dapat melihat apa yang perintah ini tidak. 54 00:02:47,190 --> 00:02:51,855 Tapi aku akan SSH langsung ke Appliance saya. 55 00:02:51,855 --> 00:02:53,410 Aku tidak tahu apa IP tersebut. 56 00:02:53,410 --> 00:02:54,300 >> JOSEPH: 168 - 57 00:02:54,300 --> 00:02:56,080 >> 168.224.1.0. 58 00:02:56,080 --> 00:02:59,950 >> ROB: Jadi sekali aku sudah selesai dengan ini, log in 59 00:02:59,950 --> 00:03:05,450 Sekarang, pada dasarnya, ini adalah identik dengan jendela terminal dalam Appliance saya. 60 00:03:05,450 --> 00:03:10,280 Jadi saya cukup banyak tidak pernah benar-benar bekerja dari dalam Appliance itu sendiri. 61 00:03:10,280 --> 00:03:12,550 Aku hanya harus selalu berjalan di latar belakang diminimalkan 62 00:03:12,550 --> 00:03:15,890 dan sshed ke dalamnya. 63 00:03:15,890 --> 00:03:24,270 >> Masalah dengan hal ini adalah Anda tidak akan untuk dapat menggunakan gedit dengan mudah 64 00:03:24,270 --> 00:03:25,600 langsung dari ini. 65 00:03:25,600 --> 00:03:31,500 Tetapi jika Anda ingin menjadi nyata keren hacker, maka Anda harus mendapatkan digunakan untuk 66 00:03:31,500 --> 00:03:34,220 baris perintah editor teks pula. 67 00:03:34,220 --> 00:03:39,620 Jadi Vim dan Emacs dan Nano, semua ini alternatif yang berbeda. 68 00:03:39,620 --> 00:03:41,560 Nano cenderung menjadi yang paling mudah. 69 00:03:41,560 --> 00:03:45,006 Dan saya pikir ia tidak memiliki penyorotan sintaks. 70 00:03:45,006 --> 00:03:47,620 Oh, tidak, itu benar-benar tidak. 71 00:03:47,620 --> 00:03:49,870 Sehingga Anda dapat menggunakan Nano, karena bahwa salah satu cukup mudah. 72 00:03:49,870 --> 00:03:52,000 >> Anda melihat semua perintah-perintah ini di bagian bawah. 73 00:03:52,000 --> 00:03:54,750 Simbol wortel kecil ini. 74 00:03:54,750 --> 00:03:57,620 Jika Anda belum melihat itu sebelumnya, Anda akan mungkin melihatnya banyak sekarang. 75 00:03:57,620 --> 00:04:02,350 Hal ini biasanya berarti wortel kontrol, seperti kiri bawah keyboard Anda 76 00:04:02,350 --> 00:04:04,130 karakter kontrol. 77 00:04:04,130 --> 00:04:07,260 Jadi di sini itu memberitahu saya di sini - 78 00:04:07,260 --> 00:04:08,710 oh, itu tidak terpotong jika saya zoom in 79 00:04:08,710 --> 00:04:11,040 Jadi Control, X adalah bagaimana Aku akan keluar. 80 00:04:11,040 --> 00:04:14,710 Dan ia mengatakan saya bisa memukul Y untuk Ya, untuk tabungan, N untuk No 81 00:04:14,710 --> 00:04:17,190 Jadi itulah Nano. 82 00:04:17,190 --> 00:04:22,860 >> Vim dan Emacs cenderung sedikit lebih rumit dan luar biasa. 83 00:04:22,860 --> 00:04:28,840 Tapi Anda bisa mendapatkan digunakan untuk itu, dan kemudian Anda akan menyukainya. 84 00:04:28,840 --> 00:04:30,590 Jadi itulah itu. 85 00:04:30,590 --> 00:04:31,720 >> JOSEPH: Tidak perlu melakukan itu. 86 00:04:31,720 --> 00:04:31,840 >> ROB: Ya. 87 00:04:31,840 --> 00:04:37,510 Anda bebas untuk menggunakan gedit untuk sisa semester. 88 00:04:37,510 --> 00:04:40,630 Jadi pertanyaan-alat yang berhubungan? 89 00:04:40,630 --> 00:04:42,820 Atau apakah Anda memiliki pemikiran tentang apa lagi perlu dibicarakan tentang 90 00:04:42,820 --> 00:04:43,610 alat? 91 00:04:43,610 --> 00:04:43,996 Ya. 92 00:04:43,996 --> 00:04:47,720 >> SPEAKER 1: Ketika Anda sshed ke dalam hal, adalah Crimson sandi? 93 00:04:47,720 --> 00:04:48,390 >> ROB: Ya. 94 00:04:48,390 --> 00:04:50,170 Password untuk hampir semua di Appliance yang terjadi 95 00:04:50,170 --> 00:04:52,473 menjadi Crimson. 96 00:04:52,473 --> 00:04:56,517 >> SPEAKER 2: Instal seperti IDE nyata pada alat, akan bekerja? 97 00:04:56,517 --> 00:04:59,200 98 00:04:59,200 --> 00:05:07,290 >> ROB: Aku membayangkan Eclipse memang memiliki Versi Fedora, dalam hal ini, ya, 99 00:05:07,290 --> 00:05:08,420 Anda bisa melakukan itu. 100 00:05:08,420 --> 00:05:10,875 Ini mungkin tidak benar-benar layak. 101 00:05:10,875 --> 00:05:11,742 >> SPEAKER 2: OK. 102 00:05:11,742 --> 00:05:15,924 Jadi mungkin lebih mudah jika saya ingin menggunakan Eclipse, cukup gunakan asli dan 103 00:05:15,924 --> 00:05:17,646 kemudian upload ke - 104 00:05:17,646 --> 00:05:21,090 >> ROB: Oh, yang juga mungkin lebih mudah. 105 00:05:21,090 --> 00:05:24,046 Tapi Anda bisa mendapatkannya bekerja dalam Appliance tersebut. 106 00:05:24,046 --> 00:05:27,740 >> JOSEPH: Dan untuk kamera, pertanyaan itu, Anda dapat menginstal lain 107 00:05:27,740 --> 00:05:29,490 IDE dalam Appliance itu? 108 00:05:29,490 --> 00:05:31,520 >> ROB: Eclipse menjadi contoh IDE. 109 00:05:31,520 --> 00:05:34,800 110 00:05:34,800 --> 00:05:36,050 Ada pertanyaan Appliance lain? 111 00:05:36,050 --> 00:05:38,250 112 00:05:38,250 --> 00:05:38,680 Baik. 113 00:05:38,680 --> 00:05:44,920 >> Jadi sekarang kita akan beralih ke baris perintah -interface terkait hal, jadi CLI. 114 00:05:44,920 --> 00:05:47,990 Dan lagi, aku hanya akan bekerja di di sini, karena ini adalah identik dengan 115 00:05:47,990 --> 00:05:52,780 bekerja dalam jendela terminal dalam Appliance tersebut. 116 00:05:52,780 --> 00:05:54,160 Bagaimana font yang mencari? 117 00:05:54,160 --> 00:05:55,970 Apakah itu cukup besar? 118 00:05:55,970 --> 00:05:57,000 Baik. 119 00:05:57,000 --> 00:06:02,480 >> Jadi ada banyak perintah yang Anda harus mendapatkan cukup digunakan untuk 120 00:06:02,480 --> 00:06:04,490 sepanjang semester. 121 00:06:04,490 --> 00:06:09,480 Dua besar untuk navigasi adalah ls, daftar file dalam direktori ini, dan 122 00:06:09,480 --> 00:06:11,380 cd, sehingga mengubah direktori. 123 00:06:11,380 --> 00:06:18,390 Jadi saya dapat mengubah desktop dan kemudian pola yang sangat umum adalah cd ke 124 00:06:18,390 --> 00:06:22,550 direktori dan segera ls apa di direktori. 125 00:06:22,550 --> 00:06:25,540 >> Orang juga kadang-kadang tidak menyadari bahwa Tab penyelesaian adalah hal. 126 00:06:25,540 --> 00:06:28,370 Jadi seperti cd, vh, dan kemudian saya tekan Tab. 127 00:06:28,370 --> 00:06:30,790 Aku hampir tidak pernah mengetikkan seluruh hal. 128 00:06:30,790 --> 00:06:32,920 Dan kemudian jika saya terus memukul Tab lagi, itu akan secara otomatis 129 00:06:32,920 --> 00:06:33,670 mulai daftar bagi saya. 130 00:06:33,670 --> 00:06:37,000 Jadi saya bisa cd vhosts, host lokal. 131 00:06:37,000 --> 00:06:39,880 Dan itu hanya akan - 132 00:06:39,880 --> 00:06:43,380 dalam kasus Anda belum pernah mendengar istilah sebelumnya, direktori hanya kata lain 133 00:06:43,380 --> 00:06:45,170 untuk folder. 134 00:06:45,170 --> 00:06:49,930 Jadi sekarang jika Anda melihat - 135 00:06:49,930 --> 00:06:51,810 mari kita membawa itu ke atas. 136 00:06:51,810 --> 00:06:55,380 >> Jadi sekarang jika Anda lihat dalam kurung, Anda melihat tilde kecil, slash, vhost, 137 00:06:55,380 --> 00:06:56,810 slash, host lokal. 138 00:06:56,810 --> 00:07:00,040 Jadi tilde, yang mengacu ke direktori rumah saya. 139 00:07:00,040 --> 00:07:03,090 Ini adalah direktori Anda ketika Anda masuk SSH 140 00:07:03,090 --> 00:07:05,660 Ini direktori Anda berada di saat Anda membuka terminal. 141 00:07:05,660 --> 00:07:08,650 Ini di mana Anda mulai. 142 00:07:08,650 --> 00:07:13,110 Dan jadi aku dalam direktori rumah saya, dan aku dalam vhost 143 00:07:13,110 --> 00:07:14,475 direktori dalam direktori rumah saya. 144 00:07:14,475 --> 00:07:19,670 Dan kemudian aku dalam lokal tuan direktori dalam itu. 145 00:07:19,670 --> 00:07:23,740 >> Jadi beberapa hal berguna lainnya dengan cd - 146 00:07:23,740 --> 00:07:29,220 atau baik, secara umum, sehingga dot selalu mengacu pada direktori saat ini. 147 00:07:29,220 --> 00:07:31,130 Cd, dot adalah perintah cukup berharga. 148 00:07:31,130 --> 00:07:35,150 Tapi itu berubah ke direktori saat ini. 149 00:07:35,150 --> 00:07:38,230 Yang lebih berguna dalam hal cd adalah titik, titik, yang 150 00:07:38,230 --> 00:07:40,220 hanya naik satu direktori. 151 00:07:40,220 --> 00:07:43,360 >> Dan perhatikan bahwa - 152 00:07:43,360 --> 00:07:48,610 Saya ingin mengatakan alias, tetapi ini simbol, dot, dan dot, dot, mereka yang bekerja 153 00:07:48,610 --> 00:07:51,740 untuk hampir semua perintah Anda akan berpikir untuk berjalan. 154 00:07:51,740 --> 00:07:55,370 Jadi seperti cd mungkin di mana Anda akan menggunakan sebagian besar, tapi ini tidak 155 00:07:55,370 --> 00:07:56,780 hal-hal yang hanya cd mengerti. 156 00:07:56,780 --> 00:07:59,980 Hal ini cukup banyak sesuatu yang seluruh Anda baris perintah mengerti. 157 00:07:59,980 --> 00:08:01,932 Banyak program memahami dot dan dot, dot. 158 00:08:01,932 --> 00:08:04,830 159 00:08:04,830 --> 00:08:09,090 >> Jadi yang lain yang berguna - cd, dash. 160 00:08:09,090 --> 00:08:13,460 Sehingga akan membawa saya ke direktori terakhir bahwa saya masuk 161 00:08:13,460 --> 00:08:15,980 Jadi kadang-kadang aku akan melakukan sesuatu seperti, oh, saya bekerja di sini. 162 00:08:15,980 --> 00:08:21,110 Dan saya melihat beberapa kesalahan dengan sesuatu, dan Aku akan menyelidiki dengan pergi ke 163 00:08:21,110 --> 00:08:24,020 beberapa direktori acak di suatu tempat. 164 00:08:24,020 --> 00:08:25,260 Dan saya tidak tahu apakah itu akan biarkan aku di sana. 165 00:08:25,260 --> 00:08:25,720 Ini akan. 166 00:08:25,720 --> 00:08:27,615 Jadi saya melakukan apa yang saya inginkan dalam direktori ini. 167 00:08:27,615 --> 00:08:28,950 Bla, bla, bla, bla, bla. 168 00:08:28,950 --> 00:08:31,770 Dan aku seperti, baiklah, aku ingin untuk kembali ke tempat saya. 169 00:08:31,770 --> 00:08:34,490 cd, dasbor, dan itu membawa saya kembali. 170 00:08:34,490 --> 00:08:39,970 >> Jadi aku akan membuang banyak ini pada Anda hari ini. 171 00:08:39,970 --> 00:08:43,730 Saya tidak berharap Anda untuk menghafal semua dari mereka. 172 00:08:43,730 --> 00:08:46,170 Ini semacam hanya tahu bahwa mereka ada. 173 00:08:46,170 --> 00:08:48,690 Dan kemudian nanti pada saat Anda seperti, hmm, aku ingin kembali ke 174 00:08:48,690 --> 00:08:51,870 direktori bahwa saya hanya di, oh, tunggu, sesuatu seperti itu ada. 175 00:08:51,870 --> 00:08:53,980 Anda tidak perlu ketik saja seluruh direktori lagi. 176 00:08:53,980 --> 00:08:56,090 >> JOSEPH: Dan akhirnya Anda hanya akan menggunakannya berulang-ulang, dan 177 00:08:56,090 --> 00:08:57,830 itu akan menjadi memori otot. 178 00:08:57,830 --> 00:09:00,090 >> ROB: Ya. 179 00:09:00,090 --> 00:09:02,930 Jadi bagaimana saya katakan sebelumnya, bahwa tilde adalah direktori home Anda. 180 00:09:02,930 --> 00:09:04,820 Jadi saya bisa cd, tilde. 181 00:09:04,820 --> 00:09:07,280 Tapi aku bahkan tidak perlu melakukan itu jika saya hanya - 182 00:09:07,280 --> 00:09:09,760 Aku akan kembali ke direktori sehingga itu bukan contoh yang sia-sia. 183 00:09:09,760 --> 00:09:14,560 Tapi jika saya hanya melakukan cd, itu juga sama seperti, pergi ke direktori rumah saya. 184 00:09:14,560 --> 00:09:18,380 185 00:09:18,380 --> 00:09:19,880 Saya lakukan Command, K. 186 00:09:19,880 --> 00:09:24,015 >> JOSEPH: Anda juga bisa mengetik jelas, kata, dan harus jelas itu. 187 00:09:24,015 --> 00:09:28,650 >> ROB: Dan saya pikir juga Control, L juga melakukannya. 188 00:09:28,650 --> 00:09:29,690 Jadi banyak cara yang berbeda. 189 00:09:29,690 --> 00:09:34,070 Saya pikir ada beberapa perbedaan di mana jelas dan Pengendalian, L hanya akan 190 00:09:34,070 --> 00:09:37,280 benar-benar mendorong ke atas dan Aku masih bisa gulir kembali. 191 00:09:37,280 --> 00:09:40,580 Command, K harfiah menghancurkan segala sesuatu, dan Anda 192 00:09:40,580 --> 00:09:42,960 tidak bisa geser kembali. 193 00:09:42,960 --> 00:09:45,530 Setidaknya, itulah cara kerjanya di iTerm2. 194 00:09:45,530 --> 00:09:48,690 Aku tidak tahu bagaimana hal-hal lain - 195 00:09:48,690 --> 00:09:49,360 oh. 196 00:09:49,360 --> 00:09:55,450 >> Dengan sshing, jadi jika Anda berada di Windows, Anda akan harus men-download Putty 197 00:09:55,450 --> 00:10:02,360 untuk SSH sejak Windows tidak memiliki seperti alat built-in SSH. 198 00:10:02,360 --> 00:10:06,150 Dari Mac, Anda hanya dapat SSH langsung dari jendela terminal. 199 00:10:06,150 --> 00:10:08,755 200 00:10:08,755 --> 00:10:09,690 OK. 201 00:10:09,690 --> 00:10:11,840 Pertanyaan? 202 00:10:11,840 --> 00:10:19,260 >> Dengan ls, jadi sesuatu untuk membiasakan diri dengan sebagian besar dari perintah ini adalah - 203 00:10:19,260 --> 00:10:20,060 baik, saya hanya akan melakukan satu. 204 00:10:20,060 --> 00:10:21,310 Ls, dasbor, l. 205 00:10:21,310 --> 00:10:26,330 Jadi dasbor, l adalah apa yang kita akan untuk memanggil bendera untuk ls. 206 00:10:26,330 --> 00:10:30,770 Dan banyak dari perintah ini memiliki bendera bahwa Anda dapat melewati mereka. 207 00:10:30,770 --> 00:10:35,020 Jadi dalam hal ini, dasbor, l adalah bendera yang mengatakan itu untuk memberi saya penuh 208 00:10:35,020 --> 00:10:37,850 daftar semua informasi file-file ini. 209 00:10:37,850 --> 00:10:44,790 >> Jadi kita lihat di sini bahwa desktop adalah diubah pada tanggal 30 Juli jam 12:54. 210 00:10:44,790 --> 00:10:47,160 Downloads dimodifikasi pada 6 September. 211 00:10:47,160 --> 00:10:52,350 Ini adalah ukuran saat ini dan byte direktori ini. 212 00:10:52,350 --> 00:10:54,412 Anda tidak harus mengerti semua ini. 213 00:10:54,412 --> 00:11:00,380 >> Hal ini di sebelah kiri, drwx ini itu, yang akan menjadi jauh lebih relevan 214 00:11:00,380 --> 00:11:02,290 kemudian, ketika Anda harus berurusan dengan - 215 00:11:02,290 --> 00:11:05,900 yang ada hubungannya dengan yang memiliki izin untuk melihat file-file ini. 216 00:11:05,900 --> 00:11:09,880 Dan jadi jika Anda bukan satu-satunya pengguna pada komputer ini, Anda akan dapat 217 00:11:09,880 --> 00:11:13,345 mengatakan, OK, saya harus menjadi satu-satunya diizinkan untuk melihat file ini atau aku 218 00:11:13,345 --> 00:11:14,870 akan memungkinkan semua orang untuk melihat file ini. 219 00:11:14,870 --> 00:11:17,710 Jadi orang lain di komputer saya dapat melihat file ini. 220 00:11:17,710 --> 00:11:22,190 221 00:11:22,190 --> 00:11:25,600 Aku bahkan tidak tahu apa ini - apa ini lakukan? 222 00:11:25,600 --> 00:11:26,840 >> JOSEPH: Aku tidak yakin, sebenarnya. 223 00:11:26,840 --> 00:11:27,705 >> ROB: Tidak tahu. 224 00:11:27,705 --> 00:11:30,530 >> JOSEPH: Tapi jika Anda tidak tahu, ada perintah membantu yang dapat Anda gunakan 225 00:11:30,530 --> 00:11:31,680 untuk memberi tahu Anda apa artinya output. 226 00:11:31,680 --> 00:11:33,780 Dan jika Anda mengetik man sebelum perintah - 227 00:11:33,780 --> 00:11:35,000 jadi M-A-N. ROB: Man. 228 00:11:35,000 --> 00:11:37,690 Jadi manusia adalah satu lagi yang sangat berguna. 229 00:11:37,690 --> 00:11:39,540 Dan manusia, ls. 230 00:11:39,540 --> 00:11:47,320 Jadi halaman manual, mereka memiliki keduanya perintah bahwa Anda akan menggunakan 231 00:11:47,320 --> 00:11:50,330 pada baris perintah, dan mereka juga memiliki fungsi yang akan relevan 232 00:11:50,330 --> 00:11:52,530 dengan C. Jadi Anda bisa manusia - 233 00:11:52,530 --> 00:11:53,720 dan saya diabaikan 3. 234 00:11:53,720 --> 00:11:57,410 Tapi man 3 printf akan membawa up versi C dari printf. 235 00:11:57,410 --> 00:12:01,030 Tapi jika saya hanya melakukan man printf, ini adalah akan memunculkan perintah printf 236 00:12:01,030 --> 00:12:03,540 yang terjadi pada baris perintah. 237 00:12:03,540 --> 00:12:05,730 >> Jadi pria, ls. 238 00:12:05,730 --> 00:12:09,030 Halaman manual bisa sangat luar biasa. 239 00:12:09,030 --> 00:12:12,770 Di sini, meskipun, Anda akan melihat daftar ini semua bendera ini yang ls 240 00:12:12,770 --> 00:12:14,300 mengerti. 241 00:12:14,300 --> 00:12:17,876 Jadi jika kita pergi untuk lari, l, dan - 242 00:12:17,876 --> 00:12:19,300 Aku hanya akan melemparkan ini pada Anda. 243 00:12:19,300 --> 00:12:23,050 Tetapi dalam rangka untuk mencari, Anda ingin untuk pertama memukul pertanyaan 244 00:12:23,050 --> 00:12:24,780 tanda atau tombol slash. 245 00:12:24,780 --> 00:12:26,040 Jadi slash. 246 00:12:26,040 --> 00:12:29,000 >> Dan kemudian saya dapat mencari untuk apa pun yang saya inginkan. 247 00:12:29,000 --> 00:12:33,780 Jadi aku akan memangkas untuk dasbor, l. 248 00:12:33,780 --> 00:12:35,110 Dan ada itu. 249 00:12:35,110 --> 00:12:37,450 Jadi gunakan format listing yang panjang. 250 00:12:37,450 --> 00:12:40,060 Itu tidak membantu saya mencari tahu apa bahwa kolom tertentu berarti, tapi saya 251 00:12:40,060 --> 00:12:44,480 mengasumsikan suatu tempat di sini itu akan menjelaskan bahwa. 252 00:12:44,480 --> 00:12:48,740 Jadi gunakan halaman manual untuk perintah apapun bahwa Anda tidak segera memahami. 253 00:12:48,740 --> 00:12:51,080 >> Aku cukup yakin Anda bahkan dapat man, man. 254 00:12:51,080 --> 00:12:53,070 Sebuah antarmuka untuk online manual referensi. 255 00:12:53,070 --> 00:12:57,700 256 00:12:57,700 --> 00:13:03,570 Oh, satu yang terakhir yang mungkin sedikit yaitu ls relevan, dash, a. 257 00:13:03,570 --> 00:13:08,490 Jadi perhatikan jika saya hanya melakukan ls, Saya mendapatkan lima file. 258 00:13:08,490 --> 00:13:11,480 Jika saya melakukan ls, lari,, saya mendapatkan lebih banyak file. 259 00:13:11,480 --> 00:13:15,350 Jadi kesamaan antara semua ini file baru adalah titik sebelumnya. 260 00:13:15,350 --> 00:13:21,220 >> Jadi konvensi adalah bahwa file yang dimulai dengan sebuah titik tersembunyi. 261 00:13:21,220 --> 00:13:25,300 Jadi Anda tidak ingin melihat file tersebut, Anda tidak ingin memilikinya berantakan dengan 262 00:13:25,300 --> 00:13:26,750 daftar direktori Anda. 263 00:13:26,750 --> 00:13:30,020 Hanya ketika Anda secara eksplisit meminta, baik-baik saja, ls, dash,, tampilkan. 264 00:13:30,020 --> 00:13:32,830 A berdiri untuk semua file, termasuk yang tersembunyi. 265 00:13:32,830 --> 00:13:37,260 266 00:13:37,260 --> 00:13:39,270 Jadi beberapa perintah lain. 267 00:13:39,270 --> 00:13:41,323 Oh, pertanyaan pada saat itu? 268 00:13:41,323 --> 00:13:41,746 Ya. 269 00:13:41,746 --> 00:13:45,914 >> SPEAKER 3: Ketika Anda melakukan ls, a, apa dot, dot? 270 00:13:45,914 --> 00:13:46,870 >> ROB: Oh. 271 00:13:46,870 --> 00:13:48,780 Jadi ini adalah apa yang saya bicarakan. 272 00:13:48,780 --> 00:13:50,890 Ini hal yang sama di mana Saya bisa seperti cd, titik, titik. 273 00:13:50,890 --> 00:13:56,790 Jadi secara teknis, dot dan dot, dot file yang ada pada setiap satu 274 00:13:56,790 --> 00:14:03,620 direktori dimana file mengacu dot ke direktori saat ini. 275 00:14:03,620 --> 00:14:06,930 Jadi jika saya cd, dot, aku hanya akan untuk tinggal di direktori. 276 00:14:06,930 --> 00:14:10,870 Dan dot, dot selalu mengacu pada sebelumnya direktori satu tingkat atas. 277 00:14:10,870 --> 00:14:18,200 Jadi jika saya pergi ke log dan ls, dash, al, Aku akan melihat titik, titik. cd dot, dot 278 00:14:18,200 --> 00:14:20,390 membawa saya ke direktori sebelumnya. 279 00:14:20,390 --> 00:14:24,530 280 00:14:24,530 --> 00:14:25,780 Ya. 281 00:14:25,780 --> 00:14:27,160 282 00:14:27,160 --> 00:14:28,110 OK. 283 00:14:28,110 --> 00:14:33,070 >> Jadi lain cukup penting perintah rm. 284 00:14:33,070 --> 00:14:35,650 Jadi itulah yang akan kita digunakan untuk menghapus. 285 00:14:35,650 --> 00:14:38,100 Dan biarkan aku benar-benar melakukan yang lain perintah pertama. 286 00:14:38,100 --> 00:14:39,610 Jadi mkdir. 287 00:14:39,610 --> 00:14:42,770 Mkdir adalah bagaimana Anda bisa membuat direktori. 288 00:14:42,770 --> 00:14:47,530 Dan aku akan membuat direktori sementara dan masuk ke direktori sementara. 289 00:14:47,530 --> 00:14:49,590 Dan seperti yang diharapkan, itu kosong. 290 00:14:49,590 --> 00:14:53,680 Tapi kalau aku ls, dash,, aku masih memiliki dot dan dot, dot, karena dot mengacu pada 291 00:14:53,680 --> 00:14:54,480 direktori saat ini. 292 00:14:54,480 --> 00:14:56,170 Dan dot, dot mengacu pada direktori sebelumnya. 293 00:14:56,170 --> 00:14:58,700 Dan orang-orang akan selalu ada tidak peduli direktori Anda masuk 294 00:14:58,700 --> 00:15:01,910 295 00:15:01,910 --> 00:15:09,010 >> Dan ini adalah benar-benar tidak perlu perintah, tetapi sentuhan. 296 00:15:09,010 --> 00:15:11,880 Aku hanya menggunakannya, karena itu cara mudah untuk membuat file. 297 00:15:11,880 --> 00:15:16,180 Jadi menyentuh, sentuh b, c sentuh hanya akan membuat tiga file disebut, 298 00:15:16,180 --> 00:15:17,845 b, dan c yang benar-benar kosong. 299 00:15:17,845 --> 00:15:20,450 300 00:15:20,450 --> 00:15:24,980 Jadi titik saya menciptakan orang-orang di tempat pertama hanya begitu rm yang 301 00:15:24,980 --> 00:15:26,250 bagaimana kita bisa menghapusnya. 302 00:15:26,250 --> 00:15:27,850 Jadi rm, a. 303 00:15:27,850 --> 00:15:30,960 Itu akan bertanya kepada saya, hapus reguler kosong file? 304 00:15:30,960 --> 00:15:33,170 Dan kemudian aku akan mengatakan ya. 305 00:15:33,170 --> 00:15:39,090 >> Jadi jika saya tahu pasti bahwa saya ingin menghapus file yang tanpa harus 306 00:15:39,090 --> 00:15:44,500 diminta, menghapus file kosong biasa?, kemudian rm, dasbor, f akan menjadi 307 00:15:44,500 --> 00:15:48,230 flag yang mengatakan, memaksa menghapus tanpa bahkan mendorong saya, oh, kau 308 00:15:48,230 --> 00:15:49,710 Yakin ingin menghapus file? 309 00:15:49,710 --> 00:15:50,810 Ya, saya yakin. 310 00:15:50,810 --> 00:15:56,050 Jadi rm, dash, fb hanya akan melakukannya tanpa bertanya. 311 00:15:56,050 --> 00:15:57,950 >> Jadi mari kita membuat beberapa direktori lagi. 312 00:15:57,950 --> 00:16:03,670 mkdir, tmp2, cd, tmp2, menyentuh sentuhan, b. 313 00:16:03,670 --> 00:16:04,300 OK. 314 00:16:04,300 --> 00:16:08,180 Jadi sekarang saya ingin menghapus tmp2 sebagai sebuah direktori. 315 00:16:08,180 --> 00:16:10,316 Tmp2 Jadi rm. 316 00:16:10,316 --> 00:16:12,920 Anda tidak dapat menghapus tmp2, itu adalah sebuah direktori. 317 00:16:12,920 --> 00:16:21,370 Jadi masalah di sini adalah bahwa rm tidak segera bekerja pada direktori. 318 00:16:21,370 --> 00:16:26,530 Ini hanya dimaksudkan untuk file seperti file non-direktori. 319 00:16:26,530 --> 00:16:30,800 >> Jadi apa yang bisa kita lakukan di sini adalah rm, dash, r. 320 00:16:30,800 --> 00:16:35,160 Itu singkatan rekursif, yang mungkin tidak berarti apa-apa bagi Anda belum. 321 00:16:35,160 --> 00:16:38,280 Tetapi ketika Anda mendapatkan ke rekursi, itu akan berarti lebih banyak. 322 00:16:38,280 --> 00:16:43,540 Jadi rm, dash, r, tmp2 akan rekursif masuk ke direktori tersebut. 323 00:16:43,540 --> 00:16:45,540 Jadi turun ke direktori tmp2? 324 00:16:45,540 --> 00:16:47,330 Ya, mari kita pergi ke dalam. 325 00:16:47,330 --> 00:16:49,360 Apakah kita ingin menghapus tmp2 / a? 326 00:16:49,360 --> 00:16:49,745 Ya. 327 00:16:49,745 --> 00:16:51,830 Apakah kita ingin menghapus tmp2 / b? 328 00:16:51,830 --> 00:16:52,840 Ya. 329 00:16:52,840 --> 00:16:55,170 Sekarang kita ingin menghapus yang tmp2 direktori? 330 00:16:55,170 --> 00:16:56,040 Ya. 331 00:16:56,040 --> 00:16:58,410 Dan sekarang direktori dan segala sesuatu di dalam 332 00:16:58,410 --> 00:16:59,660 itu telah dihapus. 333 00:16:59,660 --> 00:17:02,850 334 00:17:02,850 --> 00:17:07,250 >> Ada teknis rmdir perintah yang dapat Anda gunakan untuk menghapus 335 00:17:07,250 --> 00:17:11,670 direktori, tetapi hanya bekerja pada direktori kosong pula. 336 00:17:11,670 --> 00:17:14,109 Dan untuk melihat bahwa, mari kita melakukan mkdir, tmp2 lagi. 337 00:17:14,109 --> 00:17:15,940 Tmp2, sentuh. 338 00:17:15,940 --> 00:17:16,800 OK. 339 00:17:16,800 --> 00:17:22,770 Jadi jika saya mencoba untuk menghapus dirtmp2, itu akan mengatakan, direktori tidak kosong. 340 00:17:22,770 --> 00:17:29,540 Jadi saya cukup banyak tidak pernah menggunakan remove perintah dir pula, karena rm, dash, 341 00:17:29,540 --> 00:17:35,140 r akan bekerja pada direktori kosong dan direktori yang tidak kosong. 342 00:17:35,140 --> 00:17:37,760 >> Dan juga, jika saya tidak mau harus pergi melalui seluruh proses 343 00:17:37,760 --> 00:17:40,720 turun ke dalam direktori dan menghapus setiap file individu, rm, 344 00:17:40,720 --> 00:17:44,190 dash, rf, tmp2. 345 00:17:44,190 --> 00:17:45,670 Dan sekarang hilang. 346 00:17:45,670 --> 00:17:51,220 >> Sesuatu untuk berhati-hati tentang adalah rm, dash, rf. 347 00:17:51,220 --> 00:17:53,660 Dan aku takut bahkan mengetiknya, karena jika saya tidak sengaja 348 00:17:53,660 --> 00:17:55,090 tekan Enter atau sesuatu. 349 00:17:55,090 --> 00:18:02,735 Jadi rm, dash, rf, tilde akan, tanpa mendorong saya, f tidak meminta 350 00:18:02,735 --> 00:18:05,670 saya, maka secara otomatis akan menghapus seluruh direktori rumah saya dan 351 00:18:05,670 --> 00:18:06,780 segala sesuatu di dalamnya. 352 00:18:06,780 --> 00:18:11,460 Jadi, Anda mungkin berpikir itu hal yang bodoh untuk dilakukan. 353 00:18:11,460 --> 00:18:12,830 Dan juga, itu. 354 00:18:12,830 --> 00:18:18,600 >> Tapi itu bisa terjadi dengan sangat mudah oleh kecelakaan jika, katakanlah, aku ingin menghapus 355 00:18:18,600 --> 00:18:21,640 slash saya, direktori vhost. 356 00:18:21,640 --> 00:18:26,610 Dan hanya dalam mengetik cepat, Saya sengaja melakukan hal ini. 357 00:18:26,610 --> 00:18:31,880 Yang akan menghapus secara rekursif kedua saya direktori home dan direktori vhost 358 00:18:31,880 --> 00:18:35,450 dalam direktori tertentu yang hanya kebetulan tidak ada sekarang. 359 00:18:35,450 --> 00:18:39,520 Tapi ini masih akan menghapus seluruh direktori rumah saya. 360 00:18:39,520 --> 00:18:43,090 Setidaknya dengan tidak memiliki f, itu akan mendorong saya dulu. 361 00:18:43,090 --> 00:18:45,670 Dan aku akan seperti, oh, tidak, aku tidak ingin melakukan itu. 362 00:18:45,670 --> 00:18:50,570 Tetapi orang-orang, slash, termasuk saya cenderung untuk masuk ke 363 00:18:50,570 --> 00:18:53,090 kebiasaan selalu rf-ing. 364 00:18:53,090 --> 00:18:58,713 Bahkan file biasa bahwa saya hanya bisa rm, c, saya cenderung hanya rm, dash, rf, c. 365 00:18:58,713 --> 00:19:01,330 Hanya berhati-hatilah ketika Anda rf-ing. 366 00:19:01,330 --> 00:19:03,160 >> SPEAKER 4: Apa C lakukan? 367 00:19:03,160 --> 00:19:11,570 >> ROB: C Aku sedang berbicara tentang file C dalam direktori ini, rm itu, c. 368 00:19:11,570 --> 00:19:15,730 >> JOSEPH: Dan yang lebih berbahaya, jika Anda menggunakan bintang, mengacu pada segala sesuatu di 369 00:19:15,730 --> 00:19:16,450 direktori. 370 00:19:16,450 --> 00:19:20,040 Jadi apa yang saya biasanya cenderung lakukan adalah saya akan masuk ke direktori dan saya ingin 371 00:19:20,040 --> 00:19:21,510 menghapus semua file di sana. 372 00:19:21,510 --> 00:19:23,640 Jadi rm, dash, rf, bintang. 373 00:19:23,640 --> 00:19:25,700 >> ROB: Ya. 374 00:19:25,700 --> 00:19:26,780 Rm, dash, rf, bintang. 375 00:19:26,780 --> 00:19:29,530 >> JOSEPH: Dan jika Anda tidak hati-hati direktori apa Anda berada di - 376 00:19:29,530 --> 00:19:33,340 Aku tidak di temp, tapi aku sengaja dalam direktori rumah saya, 377 00:19:33,340 --> 00:19:35,450 maka saya akan menghapus segala sesuatu dalam direktori rumah saya. 378 00:19:35,450 --> 00:19:39,095 Dan aku benar-benar melakukan itu sebelumnya, dan Saya pikir Anda telah melakukan ini sebelumnya atau 379 00:19:39,095 --> 00:19:40,640 Jay telah melakukan itu sebelumnya. 380 00:19:40,640 --> 00:19:42,480 >> ROB: Aku sengaja dihapus - 381 00:19:42,480 --> 00:19:44,480 sehingga mengabaikan perintah itu untuk sedikit. 382 00:19:44,480 --> 00:19:45,800 >> JOSEPH: Tidak menyenangkan. 383 00:19:45,800 --> 00:19:52,650 >> ROB: Jadi di direktori bin slash adalah sekelompok file biner mana ada akan 384 00:19:52,650 --> 00:19:54,840 menjadi yang familiar seperti dentang. 385 00:19:54,840 --> 00:20:00,740 Nah, dentang dan pada dasarnya semua ini hal-hal yang aku berjalan pada perintah 386 00:20:00,740 --> 00:20:02,060 line dalam direktori bin slash. 387 00:20:02,060 --> 00:20:03,090 >> JOSEPH: Seperti ls adalah di sini. 388 00:20:03,090 --> 00:20:06,285 >> ROB: Jadi dot, garis miring, ls akan daftar direktori ini. 389 00:20:06,285 --> 00:20:08,120 >> JOSEPH: Rm juga dalam direktori ini. 390 00:20:08,120 --> 00:20:12,770 >> ROB: Saya tidak sengaja rm, rf-ed bin, yang dihapus perintah apapun yang saya bisa 391 00:20:12,770 --> 00:20:14,380 mungkin pernah mau. 392 00:20:14,380 --> 00:20:18,085 Yang kemudian saya hanya instal ulang Peralatan baru pada saat itu. 393 00:20:18,085 --> 00:20:20,170 >> JOSEPH: Jadi berhati-hati ketika Anda menggunakan perintah ini. 394 00:20:20,170 --> 00:20:21,120 >> AUDIENCE: [Tak terdengar]? 395 00:20:21,120 --> 00:20:22,640 >> ROB: Ya. 396 00:20:22,640 --> 00:20:24,135 Itu juga merupakan kebiasaan buruk untuk masuk ke dalam. 397 00:20:24,135 --> 00:20:27,920 398 00:20:27,920 --> 00:20:30,170 Jika Anda perhatikan, aku sekarang - 399 00:20:30,170 --> 00:20:33,580 baik, Anda tidak bisa melihat, tapi saya zoom-in mungkin bisa. 400 00:20:33,580 --> 00:20:35,360 Jadi aku sekarang root @ alat. 401 00:20:35,360 --> 00:20:39,790 Jadi jharvard adalah pengguna yang kita inginkan Anda untuk selalu menggunakan. 402 00:20:39,790 --> 00:20:43,820 Root adalah pengguna yang memiliki izin untuk melakukan apa-apa. 403 00:20:43,820 --> 00:20:50,260 >> Jadi melihat ketika aku jharvard, jika saya mencoba untuk cd - 404 00:20:50,260 --> 00:20:52,461 apa sebuah direktori yang? 405 00:20:52,461 --> 00:20:53,980 Oh, akar adalah contoh yang baik. 406 00:20:53,980 --> 00:20:54,950 Jadi cd, root. 407 00:20:54,950 --> 00:20:56,030 Izin ditolak. 408 00:20:56,030 --> 00:21:00,060 Karena jika kita melihat daftar ini - 409 00:21:00,060 --> 00:21:02,410 dan sekali lagi, Anda tidak perlu sepenuhnya memahami hal ini. 410 00:21:02,410 --> 00:21:09,210 Tapi tiga strip yang dikatakan yang tidak membiarkan yang lain 411 00:21:09,210 --> 00:21:11,120 pengguna ke direktori ini. 412 00:21:11,120 --> 00:21:14,540 Dan direktori terjadi pada dimiliki oleh user root. 413 00:21:14,540 --> 00:21:20,310 >> Jadi fakta bahwa saya jharvard dan tidak ada orang yang tidak diizinkan masuk ke root 414 00:21:20,310 --> 00:21:23,490 direktori ini, itu berarti bahwa aku akan mendapatkan izin ditolak ketika saya 415 00:21:23,490 --> 00:21:25,160 mencoba untuk cd ke dalamnya. 416 00:21:25,160 --> 00:21:31,370 Jadi ketika saya root, saya memiliki izin untuk melakukan apa-apa, termasuk 417 00:21:31,370 --> 00:21:34,660 menghapus file penting ke Appliance dan 418 00:21:34,660 --> 00:21:36,640 menghancurkan seluruh hal. 419 00:21:36,640 --> 00:21:41,240 >> Jadi itu adalah kebiasaan buruk untuk masuk ke hanya berkeliaran Anda 420 00:21:41,240 --> 00:21:43,650 sistem operasi sebagai root. 421 00:21:43,650 --> 00:21:46,520 Saya tetap melakukannya. 422 00:21:46,520 --> 00:21:48,710 Pertanyaan? 423 00:21:48,710 --> 00:21:52,230 Dan aku akan keluar akar, tetap sebagai jharvard. 424 00:21:52,230 --> 00:21:54,510 OK. 425 00:21:54,510 --> 00:21:55,820 >> Perintah lebih relevan. 426 00:21:55,820 --> 00:22:03,975 Jadi kembali ke suhu kami, mv perintah singkatan bergerak. 427 00:22:03,975 --> 00:22:05,450 Anda dapat memindahkan. 428 00:22:05,450 --> 00:22:07,610 Sekarang kita ingin menyebutnya b, jadi sekarang itu disebut b. 429 00:22:07,610 --> 00:22:10,650 Atau mungkin kita ingin memindahkan b satu direktori. 430 00:22:10,650 --> 00:22:12,730 Jadi sekarang ini direktori kosong. 431 00:22:12,730 --> 00:22:15,410 Aku akan kembali ke direktori rumah saya, dan kita melihat bahwa b adalah di sini, karena 432 00:22:15,410 --> 00:22:19,230 direktori home adalah salah satu direktori naik dari direktori yang b telah masuk 433 00:22:19,230 --> 00:22:24,710 434 00:22:24,710 --> 00:22:26,580 >> Ada juga cp. 435 00:22:26,580 --> 00:22:33,210 Jadi cp adalah menyalin Super section, dot, teks. 436 00:22:33,210 --> 00:22:35,750 Saya bisa menyebutnya s, dot, teks. 437 00:22:35,750 --> 00:22:39,780 Sekarang kita memiliki keduanya yang super seksi, dot, teks, dan s, dot, teks. 438 00:22:39,780 --> 00:22:41,340 Hal ini juga bekerja pada direktori. 439 00:22:41,340 --> 00:22:44,040 440 00:22:44,040 --> 00:22:46,560 Aku rf-ed satu file. 441 00:22:46,560 --> 00:22:48,200 Jadi cp - 442 00:22:48,200 --> 00:22:51,710 baik, pertama mari kita coba cp, tmp, tmp2. 443 00:22:51,710 --> 00:22:53,220 Jadi menghilangkan direktori tmp. 444 00:22:53,220 --> 00:22:57,440 Jadi mirip dengan rm, perilaku default adalah untuk tidak bekerja pada direktori. 445 00:22:57,440 --> 00:23:01,570 >> Dan lagi, mirip dengan rm, default perilaku - baik, mendapatkan itu untuk bekerja 446 00:23:01,570 --> 00:23:04,230 dengan direktori adalah, dash-r pergi. 447 00:23:04,230 --> 00:23:09,240 Jadi menyalin rekursif temp direktori ke tmp2. 448 00:23:09,240 --> 00:23:13,700 Dan sekarang kita memiliki keduanya tmp dan tmp2, dan itu tidak membantu karena tmp 449 00:23:13,700 --> 00:23:16,814 kosong di tempat pertama. 450 00:23:16,814 --> 00:23:18,660 Tmp2. 451 00:23:18,660 --> 00:23:22,680 >> Sekarang mari kita salin tmp ke tmp2. 452 00:23:22,680 --> 00:23:27,900 Dan kita melihat bahwa tmp2 juga memiliki file , karena direktori dan 453 00:23:27,900 --> 00:23:32,220 segala sesuatu di dalam itu direktori disalin. 454 00:23:32,220 --> 00:23:36,000 Dan itu bisa agak membantu jika, katakanlah Anda bekerja 455 00:23:36,000 --> 00:23:38,860 pada masalah menetapkan satu - 456 00:23:38,860 --> 00:23:41,320 atau sebenarnya, set masalah kemudian adalah bahkan lebih penting, karena ada 457 00:23:41,320 --> 00:23:43,660 akan menjadi seluruh bunch file dan hal-hal. 458 00:23:43,660 --> 00:23:47,010 >> Tapi Anda hanya ingin, untuk sepersekian kedua, Anda seperti, baiklah, aku 459 00:23:47,010 --> 00:23:50,210 akan mencoba sesuatu yang berbeda. 460 00:23:50,210 --> 00:23:57,860 Mari saya hanya menyalin seluruh pset1 saya direktori ke pset1 cadangan sehingga jika 461 00:23:57,860 --> 00:24:01,490 Saya akhirnya mengacaukan segalanya, saya bisa kembali ke direktori backup saya. 462 00:24:01,490 --> 00:24:07,340 Ada cara yang lebih tepat versioning back up kode Anda, tetapi 463 00:24:07,340 --> 00:24:10,610 ini selalu cara cepat untuk hanya membuat Pastikan Anda memiliki salinan dari sesuatu 464 00:24:10,610 --> 00:24:11,860 bahwa Anda akan memodifikasi. 465 00:24:11,860 --> 00:24:16,974 466 00:24:16,974 --> 00:24:27,090 >> Begitu gema juga merupakan perintah satu-off yang jenis sillily hanya akan mencetak ke 467 00:24:27,090 --> 00:24:31,540 baris perintah apa Anda ingin echo. 468 00:24:31,540 --> 00:24:32,680 Jadi gema hi. 469 00:24:32,680 --> 00:24:35,420 Kami hanya akan mencetak hi. 470 00:24:35,420 --> 00:24:38,030 Echo hello world. 471 00:24:38,030 --> 00:24:39,800 Kami akan mencetak hello world. 472 00:24:39,800 --> 00:24:44,350 Yang datang ke dalam digunakan ketika Anda mulai menggabungkan perintah. 473 00:24:44,350 --> 00:24:48,300 >> Dan lagi, jangan berharap Anda untuk sepenuhnya memahami hal ini, tapi itu 474 00:24:48,300 --> 00:24:49,910 sesuatu untuk melihat. 475 00:24:49,910 --> 00:24:52,470 Dan kemudian jika Anda Googling untuk contoh atau Anda sadar bahwa Anda ingin melakukan 476 00:24:52,470 --> 00:24:55,030 sesuatu, itu dapat membantu. 477 00:24:55,030 --> 00:24:59,020 Jadi mari kita, sebagai contoh, sehingga ls, dasbor, l. 478 00:24:59,020 --> 00:25:01,160 Jadi di sini saya melihat output dari ls, dasbor, l. 479 00:25:01,160 --> 00:25:06,560 Dan saya katakan, OK, saya ingin menyimpan bahwa ke dalam sebuah file. 480 00:25:06,560 --> 00:25:11,620 Semua output ini di sini, saya ingin untuk dimasukkan ke dalam file terpisah. 481 00:25:11,620 --> 00:25:16,080 >> Jadi ini sedikit lebih besar dari simbol adalah apa yang kita akan menelepon. 482 00:25:16,080 --> 00:25:18,570 Kami mengarahkan output ke sebuah file. 483 00:25:18,570 --> 00:25:21,680 Mari kita sebut file bla, karena itulah apa yang saya cenderung untuk selalu menyebutnya. 484 00:25:21,680 --> 00:25:26,430 Jadi sekarang kita melihat kita memiliki mengajukan bla di sini. 485 00:25:26,430 --> 00:25:30,270 Dan jika saya membukanya, saya akan melihat itu persis output dari perintah 486 00:25:30,270 --> 00:25:31,990 bahwa saya hanya berlari. 487 00:25:31,990 --> 00:25:36,020 Dan juga, Anda bisa - 488 00:25:36,020 --> 00:25:41,260 jika ini adalah output ke file, ini adalah mendapatkan input dari sebuah file. 489 00:25:41,260 --> 00:25:45,790 490 00:25:45,790 --> 00:25:47,050 Apa perintah yang saya - 491 00:25:47,050 --> 00:25:49,620 >> JOSEPH: Saya pikir Anda dapat menggunakan kurang atau lebih, mungkin. 492 00:25:49,620 --> 00:25:53,031 >> ROB: Tapi bagaimana hanya kurang bla? 493 00:25:53,031 --> 00:25:53,930 Saya tidak tahu. 494 00:25:53,930 --> 00:25:57,870 Jika Anda datang ke dalam skenario ini, seperti ada psets bahwa itu berguna untuk. 495 00:25:57,870 --> 00:25:59,950 >> JOSEPH: Anda dapat pipa ke echo. 496 00:25:59,950 --> 00:26:02,920 Pipa file ke dalam gema untuk melihatnya. 497 00:26:02,920 --> 00:26:04,060 >> ROB: Ini pipa. 498 00:26:04,060 --> 00:26:04,860 >> JOSEPH: Maaf. 499 00:26:04,860 --> 00:26:06,190 >> ROB: Baiklah. 500 00:26:06,190 --> 00:26:12,720 Jadi ini adalah output ke file. 501 00:26:12,720 --> 00:26:18,700 Ini adalah mendapatkan teks dari file dan menyerahkannya ke program. 502 00:26:18,700 --> 00:26:20,560 Dan Anda juga akan melihat orang ini. 503 00:26:20,560 --> 00:26:24,410 Jadi ini semacam melakukan keduanya sekaligus. 504 00:26:24,410 --> 00:26:28,310 Dan sebenarnya, saya akan memperkenalkan dua baru perintah hanya untuk memanfaatkannya. 505 00:26:28,310 --> 00:26:33,060 >> Sejarah adalah perintah berguna yang hanya akan mencetak daftar 506 00:26:33,060 --> 00:26:34,940 apapun yang saya pernah menjalankan baris perintah. 507 00:26:34,940 --> 00:26:38,290 Jadi kita lihat di sini segala sesuatu yang saya miliki sudah berjalan sepanjang waktu ini. 508 00:26:38,290 --> 00:26:39,540 Banyak ls itu. 509 00:26:39,540 --> 00:26:41,570 510 00:26:41,570 --> 00:26:48,470 >> Dan perintah lain yang berguna adalah bahwa grep tujuannya adalah untuk mencari lebih 511 00:26:48,470 --> 00:26:52,060 teks mencari pola, baik, mencari apa pun yang Anda 512 00:26:52,060 --> 00:26:53,310 ingin mencari. 513 00:26:53,310 --> 00:26:59,770 Dan penggunaan praktis di sini adalah, katakanlah kami ingin mengambil sejarah. 514 00:26:59,770 --> 00:27:03,860 Dan aku ingin mencari perintah di mana saya - apa yang 515 00:27:03,860 --> 00:27:05,000 berguna satu yang harus dicari? 516 00:27:05,000 --> 00:27:06,898 >> JOSEPH: [Tak terdengar]? 517 00:27:06,898 --> 00:27:09,710 >> ROB: Atau mari kita mencari semua menyentuh, untuk alasan apa pun. 518 00:27:09,710 --> 00:27:13,850 Jadi ini adalah apa yang akan terlihat seperti. 519 00:27:13,850 --> 00:27:15,560 Dan Anda tidak harus benar-benar memahami bahwa. 520 00:27:15,560 --> 00:27:20,570 Tapi gagasan itu ada di sini, sejarah adalah memberikan output yang sama itu di sini 521 00:27:20,570 --> 00:27:25,030 mana itu mencetak seluruh yang sejarah dari segala sesuatu yang pernah saya jalankan. 522 00:27:25,030 --> 00:27:27,030 Kami kemudian melewati itu - 523 00:27:27,030 --> 00:27:30,230 Jadi alih-alih mencetak ke layar, kami ingin mengirimkannya ke 524 00:27:30,230 --> 00:27:34,640 perintah grep yang mencari semua contoh sentuhan kata. 525 00:27:34,640 --> 00:27:40,280 >> Dan menggunakan kombinasi dari alat sejarah dan grep, aku bisa melihat, OK, 526 00:27:40,280 --> 00:27:44,820 inilah semua perintah yang pernah saya berjalan, dan inilah yang agak umum. 527 00:27:44,820 --> 00:27:45,510 Kami berada di bagian bawah. 528 00:27:45,510 --> 00:27:47,930 Dan itu juga memberi saya perintah Aku hanya berlari yang memiliki 529 00:27:47,930 --> 00:27:51,240 sentuh kata di dalamnya. 530 00:27:51,240 --> 00:27:58,500 Tapi pipa adalah hal yang cukup berguna untuk menggabungkan beberapa program. 531 00:27:58,500 --> 00:28:04,670 Dan sebenarnya, itu adalah jalan pintas untuk membiarkan saya sejarah output ke file bla, dan 532 00:28:04,670 --> 00:28:10,190 biarkan aku grep menggunakan file bla seperti apa yang saya ingin melihat lebih. 533 00:28:10,190 --> 00:28:13,460 Jadi pipa hanya jalan pintas bagi mereka dua perintah. 534 00:28:13,460 --> 00:28:13,950 Ya. 535 00:28:13,950 --> 00:28:15,306 >> SPEAKER 4: [Tak terdengar]? 536 00:28:15,306 --> 00:28:16,556 >> ROB: Ya. 537 00:28:16,556 --> 00:28:20,142 538 00:28:20,142 --> 00:28:21,110 Apa - 539 00:28:21,110 --> 00:28:21,858 Oh. 540 00:28:21,858 --> 00:28:24,820 Mari kita coba. 541 00:28:24,820 --> 00:28:29,170 Jadi kucing, anjing, ikan. 542 00:28:29,170 --> 00:28:33,770 Jadi saya ingin grep. 543 00:28:33,770 --> 00:28:37,680 Dash, r, sekali lagi, akan menjadi rekursif, jadi saya ingin turun ke bawah 544 00:28:37,680 --> 00:28:38,870 semua direktori. 545 00:28:38,870 --> 00:28:43,210 Saya ingin secara rekursif grep untuk semua - dan biarkan aku sementara mendapatkan 546 00:28:43,210 --> 00:28:44,460 keluar dari jalan ini. 547 00:28:44,460 --> 00:28:48,650 548 00:28:48,650 --> 00:28:50,740 Mengabaikan saya. 549 00:28:50,740 --> 00:28:51,360 OK. 550 00:28:51,360 --> 00:28:56,740 >> Jadi saya ingin untuk sementara grep untuk semua contoh ikan kata. 551 00:28:56,740 --> 00:29:00,510 Dan jadi di sini apa yang saya lakukan adalah grepping rekursif untuk ikan kata. 552 00:29:00,510 --> 00:29:05,410 Dan bintang berarti atas semua ini file dalam direktori ini. 553 00:29:05,410 --> 00:29:08,930 Dan itu memberi saya Izin Ditolak, karena tidak diperbolehkan untuk membaca bahwa 554 00:29:08,930 --> 00:29:10,060 file tertentu. 555 00:29:10,060 --> 00:29:14,040 Tapi menemukan ikan dalam file, tes. 556 00:29:14,040 --> 00:29:18,450 >> Saya juga bisa mengatakan, secara khusus, saya hanya ingin melihat di file bla, di 557 00:29:18,450 --> 00:29:19,580 hal itu tidak akan menemukan apa-apa. 558 00:29:19,580 --> 00:29:20,990 Saya hanya ingin melihat dalam file, tes. 559 00:29:20,990 --> 00:29:22,240 Ini akan mencari ikan. 560 00:29:22,240 --> 00:29:25,980 561 00:29:25,980 --> 00:29:29,260 Itu adalah perintah yang cukup berguna untuk mengetahui secara umum. 562 00:29:29,260 --> 00:29:31,640 Ada beberapa alternatif untuk grep yang seharusnya lebih 563 00:29:31,640 --> 00:29:36,780 programmer ramah, tapi saya cenderung masih jatuh kembali grep. 564 00:29:36,780 --> 00:29:38,030 Pertanyaan? 565 00:29:38,030 --> 00:29:39,965 566 00:29:39,965 --> 00:29:40,919 OK. 567 00:29:40,919 --> 00:29:42,520 >> Apakah ada perintah lain? 568 00:29:42,520 --> 00:29:45,270 Oh. 569 00:29:45,270 --> 00:29:48,370 Hanya satu-off salah satu yang saya selalu menemukan akan menyenangkan adalah cal. 570 00:29:48,370 --> 00:29:55,610 Jadi perhatikan ketika saya di ini indah modus layar penuh, saya tidak seperti gasing 571 00:29:55,610 --> 00:29:56,720 toolbar atau apa pun. 572 00:29:56,720 --> 00:29:59,530 Jadi cal hanya memberi saya sedikit bagus kalender yang benar 573 00:29:59,530 --> 00:30:02,380 sekarang dipotong, saya asumsikan. 574 00:30:02,380 --> 00:30:04,770 Tapi perintah kecil yang bagus. 575 00:30:04,770 --> 00:30:06,540 >> JOSEPH: Ini adalah [Tak terdengar]. 576 00:30:06,540 --> 00:30:09,170 Perintah lain yang mungkin Anda miliki dilihat termasuk dentang dan membuat. 577 00:30:09,170 --> 00:30:11,180 Kita akan pergi atas mereka di lebih rinci nanti. 578 00:30:11,180 --> 00:30:13,400 Tetapi jika Anda telah bekerja pada PSET, Anda harus 579 00:30:13,400 --> 00:30:15,160 akrab dengan mereka. 580 00:30:15,160 --> 00:30:16,640 >> ROB: Baiklah. 581 00:30:16,640 --> 00:30:18,520 Pertanyaan pada perintah baris hal-hal? 582 00:30:18,520 --> 00:30:22,450 583 00:30:22,450 --> 00:30:23,260 Baik. 584 00:30:23,260 --> 00:30:27,416 Jadi mari kita beralih ke beberapa Barang C-terkait. 585 00:30:27,416 --> 00:30:28,666 Variabel matematika. 586 00:30:28,666 --> 00:30:39,078 587 00:30:39,078 --> 00:30:40,060 OK. 588 00:30:40,060 --> 00:30:45,230 Jadi sama seperti kita memiliki matematika di Scratch, Anda juga dapat menggunakan matematika dalam C. 589 00:30:45,230 --> 00:30:49,270 >> Sebelum kita sampai itu sepenuhnya, jadi variabel. 590 00:30:49,270 --> 00:30:53,920 Ingat bahwa setiap kali Anda mendeklarasikan variabel seperti int x atau y mengapung, Anda 591 00:30:53,920 --> 00:30:56,710 harus memberikan mengetik sebelum nama variabel. 592 00:30:56,710 --> 00:31:03,020 Jadi jenis yang telah kita lihat sejauh ini int, float, double, lama, yang saya 593 00:31:03,020 --> 00:31:06,150 tidak benar-benar tahu apakah kita sudah terlihat bahwa sejauh ini. 594 00:31:06,150 --> 00:31:07,700 >> Ada beberapa yang lain. 595 00:31:07,700 --> 00:31:09,990 Kami telah melihat arang. 596 00:31:09,990 --> 00:31:13,920 Ada pendek, yang seperti itu adalah kebalikan dari lama di mana itu 597 00:31:13,920 --> 00:31:16,650 lebih kecil dari integer. 598 00:31:16,650 --> 00:31:18,580 Kami juga telah melihat tali. 599 00:31:18,580 --> 00:31:23,070 Jadi apa yang khusus tentang tali? 600 00:31:23,070 --> 00:31:25,350 Mengapa saya akan mengatakan itu tidak cukup seperti int? 601 00:31:25,350 --> 00:31:27,030 >> SPEAKER 4: Itu tidak benar-benar ada. 602 00:31:27,030 --> 00:31:27,990 >> ROB: Ya. 603 00:31:27,990 --> 00:31:31,820 Jadi satu-satunya alasan kita punya string karena ketika Anda melakukan 604 00:31:31,820 --> 00:31:33,215 hash, termasuk cs50.h. 605 00:31:33,215 --> 00:31:36,530 606 00:31:36,530 --> 00:31:42,670 Dan kita akan melihat contoh ini nanti - oh, itu tidak menangani dengan baik - 607 00:31:42,670 --> 00:31:46,160 mana cs50.h melakukan sesuatu sepanjang garis jenis 608 00:31:46,160 --> 00:31:49,230 def, star char, tali. 609 00:31:49,230 --> 00:31:53,280 >> Dan sehingga mengatakan bahwa kita bahkan tidak tahu apa bintang char adalah belum. 610 00:31:53,280 --> 00:31:56,770 Tapi ini mengatakan kami ingin tali. 611 00:31:56,770 --> 00:32:00,250 Setiap tempat Anda telah menggunakan tali, Anda bisa saja menggunakan star char, 612 00:32:00,250 --> 00:32:04,670 yang sebenarnya adalah tipe yang ada dalam bahasa C. 613 00:32:04,670 --> 00:32:06,680 Tapi kita akan mendapatkan bahwa. 614 00:32:06,680 --> 00:32:07,860 Oh, dan ia pergi segera kembali. 615 00:32:07,860 --> 00:32:10,170 Rapi. 616 00:32:10,170 --> 00:32:15,370 >> Jadi hal yang sama dengan bool mana benar dan salah. 617 00:32:15,370 --> 00:32:22,510 Itu tidak benar-benar tipe built-in di C. Sebaliknya, itu hanya, hal ini memiliki 618 00:32:22,510 --> 00:32:23,740 nol nilai? 619 00:32:23,740 --> 00:32:26,200 Maka kita hanya akan mempertimbangkan untuk menjadi palsu. 620 00:32:26,200 --> 00:32:27,350 Apakah ini ada nilai - 621 00:32:27,350 --> 00:32:30,530 baik, hal ini memiliki nilai yang tidak nol? 622 00:32:30,530 --> 00:32:32,200 Kemudian kita akan mempertimbangkan untuk menjadi benar. 623 00:32:32,200 --> 00:32:35,940 Jadi salah satu yang benar, keduanya adalah benar, sesuatu nol benar. 624 00:32:35,940 --> 00:32:38,710 625 00:32:38,710 --> 00:32:42,790 Jadi mereka adalah orang-orang. 626 00:32:42,790 --> 00:32:47,624 Pertanyaan pada variabel menyatakan dan jenis variabel dan semua itu? 627 00:32:47,624 --> 00:32:48,100 Ya. 628 00:32:48,100 --> 00:32:52,384 >> SPEAKER 4: Untuk lama, dalam buku, katanya itu harus int lama. 629 00:32:52,384 --> 00:32:54,288 Tapi lama lama akan bekerja? 630 00:32:54,288 --> 00:32:58,210 631 00:32:58,210 --> 00:33:01,470 >> ROB: Jadi jenis pengubah ini. 632 00:33:01,470 --> 00:33:04,170 Jadi int x. 633 00:33:04,170 --> 00:33:07,710 Jadi kita juga bisa mengatakan int x unsigned. 634 00:33:07,710 --> 00:33:09,640 Kita dapat mengatakan pendek int x. 635 00:33:09,640 --> 00:33:12,570 Kita dapat mengatakan lama int x. 636 00:33:12,570 --> 00:33:17,250 Tapi hampir semua hal-hal yang saya hanya berkata, unsigned int, short int, 637 00:33:17,250 --> 00:33:21,480 lama int, Anda dapat menyingkirkan int dan hanya akan menganggap 638 00:33:21,480 --> 00:33:22,510 bahwa Anda berarti int. 639 00:33:22,510 --> 00:33:26,045 Jadi x unsigned, yang hanya berarti - 640 00:33:26,045 --> 00:33:29,400 Anda tahu bagaimana biasanya dengan int, Anda dapat mengatakan x sama dengan negatif 3? 641 00:33:29,400 --> 00:33:31,636 Dengan int unsigned, Anda tidak bisa. 642 00:33:31,636 --> 00:33:34,480 >> JOSEPH: Dan sekali lagi, untuk kamera, Pertanyaannya adalah, apa bedanya 643 00:33:34,480 --> 00:33:37,796 antara int lama dan hanya lama? 644 00:33:37,796 --> 00:33:38,410 >> ROB: Ya. 645 00:33:38,410 --> 00:33:42,850 Jadi saya akan hampir tidak pernah menulis lama int. 646 00:33:42,850 --> 00:33:44,100 Aku akan menulis lama. 647 00:33:44,100 --> 00:33:47,770 648 00:33:47,770 --> 00:33:50,636 >> JOSEPH: Ada pertanyaan? 649 00:33:50,636 --> 00:33:51,886 >> ROB: OK. 650 00:33:51,886 --> 00:33:56,180 651 00:33:56,180 --> 00:34:02,390 Pengingat kecil sehingga konyol itu bagaimana kita mendeklarasikan variabel dan inisialisasi 652 00:34:02,390 --> 00:34:04,450 variabel dan menyatakan lain variabel dan menginisialisasi 653 00:34:04,450 --> 00:34:05,870 itu semua dalam satu langkah. 654 00:34:05,870 --> 00:34:09,370 Jadi deklarasi variabel dan variabel inisialisasi tidak memiliki 655 00:34:09,370 --> 00:34:11,120 untuk tetapi bisa pada baris yang sama. 656 00:34:11,120 --> 00:34:15,409 657 00:34:15,409 --> 00:34:20,060 >> Jadi kita memiliki operator matematika standar bahwa Anda digunakan untuk - 658 00:34:20,060 --> 00:34:22,199 ditambah, dikurangi, membagi, kali. 659 00:34:22,199 --> 00:34:24,389 Ada juga Modulo, yang akan kita lihat. 660 00:34:24,389 --> 00:34:29,060 Tidak ada, setidaknya dalam C, kekuatan built-in 661 00:34:29,060 --> 00:34:31,765 Operator sisipan eksponensial. 662 00:34:31,765 --> 00:34:33,770 Nah, ada operator tanda sisipan, tapi itu bukan kekuasaan. 663 00:34:33,770 --> 00:34:34,239 >> JOSEPH: Tapi itu tidak eksponensial, ya. 664 00:34:34,239 --> 00:34:36,210 >> ROB: Jangan gunakan tanda sisipan untuk menganggap bahwa itu berarti 665 00:34:36,210 --> 00:34:39,980 seperti kuadrat atau apa pun. 666 00:34:39,980 --> 00:34:42,289 Jadi beberapa hal yang perlu pikiran tentang pembagian. 667 00:34:42,289 --> 00:34:46,282 668 00:34:46,282 --> 00:34:48,880 Aku akan berdiri. 669 00:34:48,880 --> 00:34:51,315 Jadi menyatakan initialize jawaban. 670 00:34:51,315 --> 00:34:54,670 Jadi kita katakan mengapung jawaban sama dengan 1 dibagi dengan 10. 671 00:34:54,670 --> 00:34:57,500 Cetak jawaban untuk dua tempat desimal. 672 00:34:57,500 --> 00:35:02,180 >> Dan ini adalah semacam hal yang saya akan manusia printf untuk mengetahui bahwa 673 00:35:02,180 --> 00:35:05,110 apa tidak sih%, dot, berarti 2f? 674 00:35:05,110 --> 00:35:07,930 Dan itu hanya berarti, baik, mengabaikan 0.2. 675 00:35:07,930 --> 00:35:10,420 Dan%, f adalah apa yang kita gunakan untuk mencetak mengapung. 676 00:35:10,420 --> 00:35:15,370 The 0,2 mengatakan, cetak yang mengapung ke dua tempat desimal. 677 00:35:15,370 --> 00:35:19,600 Jadi program ini memiliki bug, dan Anda mungkin telah melihat hal ini sebelumnya di beberapa 678 00:35:19,600 --> 00:35:20,870 Tentu CS sebelumnya. 679 00:35:20,870 --> 00:35:22,170 Tapi apa bug itu? 680 00:35:22,170 --> 00:35:23,050 >> SPEAKER 5: Zero. 681 00:35:23,050 --> 00:35:24,130 >> ROB: Ya. 682 00:35:24,130 --> 00:35:29,630 Jadi ketika kita mengatakan, jawabannya sama 1 dibagi dengan 10, kita ingin 683 00:35:29,630 --> 00:35:31,610 menjawab menjadi 0,1. 684 00:35:31,610 --> 00:35:37,450 Tapi 1 dibagi dengan 10, 1 adalah integer, 10 adalah bilangan bulat. 685 00:35:37,450 --> 00:35:41,060 Dan ketika kita melakukan integer dibagi dengan integer, kita akan kembali 686 00:35:41,060 --> 00:35:42,190 integer. 687 00:35:42,190 --> 00:35:43,660 Jadi 1 dibagi dengan 10 adalah 0,1. 688 00:35:43,660 --> 00:35:46,760 >> Karena perlu memberi kita integer, itu hanya akan membuang bahwa 689 00:35:46,760 --> 00:35:49,410 desimal dan mengatakan bahwa jawabannya adalah 0. 690 00:35:49,410 --> 00:35:55,314 Dan ketika kita mencetak menjawab di sini, itu akan mencetak 0.00. 691 00:35:55,314 --> 00:35:58,430 >> JOSEPH: Dan sebagai catatan, itu benar-benar membuang apa setelah 692 00:35:58,430 --> 00:35:59,390 titik desimal. 693 00:35:59,390 --> 00:36:03,180 Jadi, jika Anda malah memiliki 6 dibagi dengan 10, Anda mungkin berpikir bahwa itu akan memberi Anda 694 00:36:03,180 --> 00:36:05,200 0,6 dan kemudian Anda akan mengumpulkan 1. 695 00:36:05,200 --> 00:36:10,520 Tapi sebenarnya, apa yang terjadi ketika mengetik tugas itu adalah bahwa tetes apa yang 696 00:36:10,520 --> 00:36:11,470 setelah titik desimal. 697 00:36:11,470 --> 00:36:13,020 Jadi 0,6 tidak menjadi 0. 698 00:36:13,020 --> 00:36:13,370 >> ROB: Ya. 699 00:36:13,370 --> 00:36:15,160 Dan kita akan mengatakan truncate untuk itu. 700 00:36:15,160 --> 00:36:21,760 Jadi, setiap kali Anda melemparkan ke int, desimal yang dipotong. 701 00:36:21,760 --> 00:36:23,980 Jadi untuk memperbaiki itu - ada sebenarnya dua. 702 00:36:23,980 --> 00:36:27,890 Dan aku akan melakukan itu kedua, karena yang satu ini adalah memperbaiki jauh lebih mudah. 703 00:36:27,890 --> 00:36:32,670 >> Jadi salah satu fix adalah menggunakan pelampung di divisi. 704 00:36:32,670 --> 00:36:34,720 Dan benar-benar, Anda hanya perlu membuat salah satu dari mereka pelampung. 705 00:36:34,720 --> 00:36:37,400 Tapi itu agak jelas hanya untuk membuat keduanya mengapung. 706 00:36:37,400 --> 00:36:41,170 Jadi 1,0 dibagi dengan 10,0 membagi dua mengapung. 707 00:36:41,170 --> 00:36:43,970 Jadi jawabannya akan berakhir menjadi pelampung, dan sehingga Anda akan 708 00:36:43,970 --> 00:36:48,050 mencetak dengan benar 0.10 di sini. 709 00:36:48,050 --> 00:36:52,220 >> Sesuatu yang tidak bekerja dengan baik tentang yaitu, baik, tentu, itu mudah 710 00:36:52,220 --> 00:36:56,240 cukup untuk mengkonversi 1 ke mengapung dengan membuatnya 1.0. 711 00:36:56,240 --> 00:37:02,180 Tapi bagaimana kalau sebaliknya kita punya dua bilangan bulat seperti int x sama dengan 1 dan int y 712 00:37:02,180 --> 00:37:05,660 sama dengan 10, dan kemudian kami ingin untuk melakukan x dibagi dengan y? 713 00:37:05,660 --> 00:37:10,420 Jadi tidak mudah untuk hanya melakukan x.0 atau sesuatu. 714 00:37:10,420 --> 00:37:12,790 >> Jadi fix untuk yang casting. 715 00:37:12,790 --> 00:37:19,780 Jadi pengecoran adalah cara C untuk mengkonversi dari satu jenis variabel yang lain. 716 00:37:19,780 --> 00:37:22,320 Jadi di sini, 1 adalah bilangan bulat. 717 00:37:22,320 --> 00:37:27,050 Dan dengan menempatkan pelampung ini di depan itu, kita casting 1 ke float. 718 00:37:27,050 --> 00:37:30,350 Dan jadi ini akan mengkonversi 1 sampai 1,0. 719 00:37:30,350 --> 00:37:33,380 Dan ini akan mengkonversi 10 ke 10,0. 720 00:37:33,380 --> 00:37:36,790 >> Dan kemudian hal berperilaku mirip dengan versi sebelumnya kita hanya menunjukkan 721 00:37:36,790 --> 00:37:42,190 di mana, seperti yang diharapkan, kita mendapatkan 0,10 dan ia akan mencetak bahwa. 722 00:37:42,190 --> 00:37:44,120 Dan kita bisa melakukan hal ini dengan variabel juga. 723 00:37:44,120 --> 00:37:47,376 Jadi kita dapat mengatakan, float x dibagi dengan mengapung y. 724 00:37:47,376 --> 00:37:48,626 >> JOSEPH: Ada pertanyaan? 725 00:37:48,626 --> 00:37:54,182 726 00:37:54,182 --> 00:38:00,090 >> ROB: Jadi sama seperti dalam matematika biasa, kita memiliki operator didahulukan. 727 00:38:00,090 --> 00:38:06,960 Jadi di kelas matematika, Anda lebih mungkin menyebutnya urutan operasi. 728 00:38:06,960 --> 00:38:09,890 Di sini, istilah resmi didahulukan operator. 729 00:38:09,890 --> 00:38:15,230 Tapi didahulukan operator, atau paling operator, adalah seperti yang Anda harapkan. 730 00:38:15,230 --> 00:38:22,660 >> Jadi seperti di matematika, 2 kali 10 adalah akan dikelompokkan lebih erat dari 731 00:38:22,660 --> 00:38:25,410 10 ini dibagi dengan 2 dan kemudian 2. 732 00:38:25,410 --> 00:38:29,745 Urutan operasi, ia akan melakukan 2 kali 10, 10 dibagi 2, dan kemudian 733 00:38:29,745 --> 00:38:32,720 akan melakukan 20 ditambah 5 ditambah 2. 734 00:38:32,720 --> 00:38:37,020 Jadi seperti yang diharapkan, dan Anda dapat menggunakan kurung untuk ekspresi kelompok. 735 00:38:37,020 --> 00:38:41,063 Anda tidak dapat menggunakan tanda kurung siku untuk ekspresi kelompok. 736 00:38:41,063 --> 00:38:41,544 Ya? 737 00:38:41,544 --> 00:38:43,468 >> SPEAKER 5: Bisakah Anda benar-benar hanya kembali satu detik? 738 00:38:43,468 --> 00:38:47,316 Dapatkah Anda melemparkan int ke string? 739 00:38:47,316 --> 00:38:53,330 >> ROB: Jadi di C, Anda dapat melemparkan sesuatu Anda ingin apa pun yang Anda inginkan. 740 00:38:53,330 --> 00:38:55,600 Itu tidak berarti itu hal yang baik untuk dilakukan. 741 00:38:55,600 --> 00:38:59,760 Jadi, ketika Anda melemparkan int untuk string, yang berarti - 742 00:38:59,760 --> 00:39:03,240 dan kita akan masuk ke ini jauh lebih teliti - 743 00:39:03,240 --> 00:39:03,720 >> JOSEPH: Banyak kemudian. 744 00:39:03,720 --> 00:39:06,840 >> ROB: Aku tidak ingin banyak bicara nanti, jadi saya mencoba untuk mengubah kalimat saya. 745 00:39:06,840 --> 00:39:13,370 Kita akan ke dalamnya jauh lebih teliti kemudian di mana benar-benar ketika Anda memiliki 746 00:39:13,370 --> 00:39:14,810 variabel string - 747 00:39:14,810 --> 00:39:17,160 sehingga string dapat sewenang-wenang panjang, kan? 748 00:39:17,160 --> 00:39:21,850 Dan kami telah mengatakan bahwa int adalah empat byte dan lama adalah delapan 749 00:39:21,850 --> 00:39:23,620 byte dan pelampung adalah empat byte. 750 00:39:23,620 --> 00:39:29,520 Jadi string, seperti int, hanya memiliki sejumlah byte untuk itu. 751 00:39:29,520 --> 00:39:31,800 Dan itu akan menjadi empat byte. 752 00:39:31,800 --> 00:39:34,750 >> Tapi string bisa sangat sewenang-wenang panjang, kan? 753 00:39:34,750 --> 00:39:40,190 Jadi hello world sudah, kalau itu 10 karakter atau apa pun, yang sudah 754 00:39:40,190 --> 00:39:42,670 akan menjadi lebih dari 4 byte Saya bisa masuk ke dalam string. 755 00:39:42,670 --> 00:39:51,140 Dan jadi bagaimana string benar-benar bekerja adalah bahwa mereka di mana dalam memori string yang 756 00:39:51,140 --> 00:39:52,380 sedang disimpan. 757 00:39:52,380 --> 00:39:57,290 >> Dan di sini, ketika saya mengatakan String x sama dengan hello world, dalam x adalah 758 00:39:57,290 --> 00:40:01,840 hanya mengatakan, oh, hello world disimpan di tempat ini khususnya dalam memori. 759 00:40:01,840 --> 00:40:07,060 Jadi jika kita mencoba untuk melemparkan sebuah integer ke String, maka kita mencoba untuk menafsirkan 760 00:40:07,060 --> 00:40:10,500 beberapa bagian acak dari memori sebagai string. 761 00:40:10,500 --> 00:40:14,465 Dan itu hampir selalu istirahat hal. 762 00:40:14,465 --> 00:40:17,040 >> JOSEPH: Tapi kalau itu Bingung Anda, kami akan menutupinya 763 00:40:17,040 --> 00:40:17,550 lebih mendalam nanti. 764 00:40:17,550 --> 00:40:17,850 >> ROB: Ya. 765 00:40:17,850 --> 00:40:20,540 Ini adalah di mana Anda akan untuk masuk ke pointer. 766 00:40:20,540 --> 00:40:25,485 Dan itu adalah sepotong signifikan dari dua minggu dari kursus ini. 767 00:40:25,485 --> 00:40:28,275 >> SPEAKER 6: Apakah itu bekerja seperti benda dalam bahasa lain atau tidak benar-benar? 768 00:40:28,275 --> 00:40:34,050 >> ROB: Jadi dalam bahasa lain, benda akan diwakili menggunakan pointer. 769 00:40:34,050 --> 00:40:37,070 770 00:40:37,070 --> 00:40:38,793 Ini bukan hal yang sama, meskipun. 771 00:40:38,793 --> 00:40:42,110 772 00:40:42,110 --> 00:40:42,910 Setiap pikiran? 773 00:40:42,910 --> 00:40:43,760 >> JOSEPH: No 774 00:40:43,760 --> 00:40:44,185 Tidak ada pikiran. 775 00:40:44,185 --> 00:40:44,980 >> ROB: OK. 776 00:40:44,980 --> 00:40:46,994 >> JOSEPH: Next. 777 00:40:46,994 --> 00:40:48,255 >> ROB: Hanya pergi dengan itu. 778 00:40:48,255 --> 00:40:48,670 Baik. 779 00:40:48,670 --> 00:40:51,120 Jadi modulo. 780 00:40:51,120 --> 00:40:53,900 Sama seperti kita memiliki ditambah, dikurangi, membagi, dan mengalikan. 781 00:40:53,900 --> 00:40:56,720 Jadi modulo adalah salah satu Anda mungkin tidak pernah melihat sebelumnya. 782 00:40:56,720 --> 00:40:59,540 Dan itu hanya mengatakan, memberikan saya sisa. 783 00:40:59,540 --> 00:41:02,850 Jadi 55% 10. 784 00:41:02,850 --> 00:41:06,840 Sisa melakukan 55 dibagi dengan 10 akan menjadi 5. 785 00:41:06,840 --> 00:41:09,630 Jadi 55% 10 adalah 5. 786 00:41:09,630 --> 00:41:12,260 Dan 3% 5 akan menjadi 3. 787 00:41:12,260 --> 00:41:14,180 8% 8 akan 0. 788 00:41:14,180 --> 00:41:15,903 16% 15 akan 1. 789 00:41:15,903 --> 00:41:20,670 >> JOSEPH: Satu hal yang perlu diperhatikan dengan hal ini, juga, mungkin tidak bekerja seperti yang diharapkan 790 00:41:20,670 --> 00:41:22,700 jika Anda menggunakan angka negatif. 791 00:41:22,700 --> 00:41:26,215 Jadi negatif 5% 4, beberapa orang mungkin berpikir bahwa ini - 792 00:41:26,215 --> 00:41:28,890 793 00:41:28,890 --> 00:41:33,808 apa yang akan Anda pikirkan negatif 5% 4 akan? 794 00:41:33,808 --> 00:41:34,792 >> SPEAKER 5: One. 795 00:41:34,792 --> 00:41:37,920 >> JOSEPH: Jadi beberapa orang mengatakan satu, beberapa orang mengatakan satu negatif. 796 00:41:37,920 --> 00:41:38,450 Tapi apa - 797 00:41:38,450 --> 00:41:40,820 >> ROB: Aku bahkan tidak akan kata salah satu dari mereka. 798 00:41:40,820 --> 00:41:42,370 >> JOSEPH: Dua, maaf. 799 00:41:42,370 --> 00:41:43,240 Beberapa orang mengatakan - 800 00:41:43,240 --> 00:41:43,450 >> ROB: Tiga. 801 00:41:43,450 --> 00:41:43,800 >> JOSEPH: Tiga? 802 00:41:43,800 --> 00:41:44,890 >> ROB: Negatif - 803 00:41:44,890 --> 00:41:45,950 apa adalah - negatif lima - 804 00:41:45,950 --> 00:41:47,100 >> JOSEPH: Tiga, tiga, tiga. 805 00:41:47,100 --> 00:41:48,450 Maaf. 806 00:41:48,450 --> 00:41:51,910 Karena modulus, umumnya, ketika Anda sudah melihatnya di tempat lain, biasanya berarti 807 00:41:51,910 --> 00:41:54,000 kembali angka positif, kan? 808 00:41:54,000 --> 00:42:01,160 >> ROB: Jadi ketika kita mengatakan dalam matematika, 10% itu, mereka cenderung ingin memberikan - 809 00:42:01,160 --> 00:42:05,980 jika kita mod oleh 10, maka kita berharap untuk mendapatkan nomor antara 0 dan 9. 810 00:42:05,980 --> 00:42:09,860 Di sini, itu tidak terjadi bahwa Anda akan mendapatkan angka negatif kembali. 811 00:42:09,860 --> 00:42:15,898 >> JOSEPH: Jadi negatif 5% 4 akan menjadi negatif 1. 812 00:42:15,898 --> 00:42:19,325 >> ROB: Tapi itu jarang terjadi bahwa Anda mod-ing angka negatif untuk memulai. 813 00:42:19,325 --> 00:42:25,490 814 00:42:25,490 --> 00:42:25,970 Melewatkan ini. 815 00:42:25,970 --> 00:42:27,314 >> JOSEPH: Ya. 816 00:42:27,314 --> 00:42:29,420 >> ROB: Meh. 817 00:42:29,420 --> 00:42:29,990 OK. 818 00:42:29,990 --> 00:42:36,400 Jadi satu hal untuk menunjukkan tentang mengapung itu adalah perilaku yang berbahaya, 819 00:42:36,400 --> 00:42:39,850 tetapi mengapung bukan merupakan tepat representasi. 820 00:42:39,850 --> 00:42:46,190 Jadi kembali ke byte lagi, ingat bahwa int selalu empat byte dan 821 00:42:46,190 --> 00:42:47,830 mengapung selalu empat byte. 822 00:42:47,830 --> 00:42:51,340 Jadi contoh Lucas cukup bagus. 823 00:42:51,340 --> 00:42:55,730 >> Jadi pikirkan 1 dibagi dengan 3. 824 00:42:55,730 --> 00:42:57,800 Jadi 0,3333333. 825 00:42:57,800 --> 00:43:03,540 Jika saya hanya memiliki 32 bit, bagaimana bisa Saya menyimpan 0,33333 tepatnya? 826 00:43:03,540 --> 00:43:07,250 Dan mungkin, karena alasan apapun, Anda katakan, baik-baik saja, baik, katakan saja 827 00:43:07,250 --> 00:43:13,210 yang khusus ini 1011001, mari kita hanya mengatakan bahwa harus 0,333333. 828 00:43:13,210 --> 00:43:16,960 Nah, Anda hanya memiliki jumlah terbatas mereka bit, sehingga tidak mungkin untuk 829 00:43:16,960 --> 00:43:22,550 mewakili setiap floating point tunggal nilai yang diberikan hanya 32 bit. 830 00:43:22,550 --> 00:43:25,580 >> Yah, tidak mungkin untuk mewakili nilai floating point yang diberikan tak terbatas - 831 00:43:25,580 --> 00:43:28,480 baik, diberi jumlah terbatas bit. 832 00:43:28,480 --> 00:43:38,265 Jadi masalah di sini adalah, baik, ketika kita menggunakan mencetak ke dua tempat desimal, 833 00:43:38,265 --> 00:43:42,000 kami benar mendapatkan jawaban 0,10. 834 00:43:42,000 --> 00:43:47,510 Tapi di bawah tenda, itu benar-benar disimpan sedekat mungkin dengan 835 00:43:47,510 --> 00:43:51,790 0.10 seperti yang bit dapat mewakili. 836 00:43:51,790 --> 00:43:53,200 Apakah ini pada slide berikutnya? 837 00:43:53,200 --> 00:43:53,830 Atau tidak? 838 00:43:53,830 --> 00:43:54,660 >> JOSEPH: Ya, itu yang. 839 00:43:54,660 --> 00:43:55,750 >> ROB: Blegh, blegh. 840 00:43:55,750 --> 00:43:57,760 >> JOSEPH: Ya, Anda hanya dapat tarik catatan sedikit. 841 00:43:57,760 --> 00:43:59,700 >> ROB: Aku hanya akan untuk memperbesar dalam pada yang terakhir itu. 842 00:43:59,700 --> 00:44:00,950 Oh my gosh, itu [Tak terdengar]. 843 00:44:00,950 --> 00:44:06,089 844 00:44:06,089 --> 00:44:08,300 Jadi nomor itu. 845 00:44:08,300 --> 00:44:12,300 Itulah yang akan dicetak jika kita menjalankan program itu. 846 00:44:12,300 --> 00:44:20,340 Dan perhatikan bahwa tidak benar-benar masalah besar jika kita hanya peduli tentang seperti 847 00:44:20,340 --> 00:44:21,920 2-3 desimal. 848 00:44:21,920 --> 00:44:26,700 Seperti kita hanya awalnya dicetak 0,10, dan itulah sebabnya kita melihat ada yang salah. 849 00:44:26,700 --> 00:44:31,380 Tapi begitu kita mulai masuk ke tepat, jumlah pasti bahwa itu 850 00:44:31,380 --> 00:44:35,660 mewakili, kita melihat bahwa itu tidak bisa persis mewakili 0,1. 851 00:44:35,660 --> 00:44:40,900 >> Dan bagian dari masalah di sini adalah seperti, semua benar, itu bagus, tapi, well, 852 00:44:40,900 --> 00:44:46,120 pertama, bagaimana kalau kita coba lakukan, Jawabannya sama sama 0.1? 853 00:44:46,120 --> 00:44:49,200 Apakah itu akan kembali benar atau salah? 854 00:44:49,200 --> 00:44:51,850 Dan jadi sulit untuk mengatakan. 855 00:44:51,850 --> 00:44:53,330 Saya pikir itu benar-benar bisa kembali benar. 856 00:44:53,330 --> 00:44:55,265 Akankah pertama - 857 00:44:55,265 --> 00:44:56,180 Saya tidak tahu. 858 00:44:56,180 --> 00:45:00,090 Jawabannya adalah setelah Anda mulai berurusan dengan nilai-nilai floating point, Anda cukup 859 00:45:00,090 --> 00:45:05,150 banyak tidak harus menggunakan persamaan karena ketidaktepatan ini. 860 00:45:05,150 --> 00:45:09,470 >> Dan untuk semua yang Anda tahu, itu keseratus tempat desimal bahwa 861 00:45:09,470 --> 00:45:13,670 floating point tidak bisa dengan benar menangani. 862 00:45:13,670 --> 00:45:18,180 Dan kesetaraan hanya akan gagal bahkan meskipun angka - jika Anda telah 863 00:45:18,180 --> 00:45:24,450 menggunakan angka pastinya, angka harus telah persis sama. 864 00:45:24,450 --> 00:45:27,790 Ini selama seperti 50 perhitungan menggunakan ini mengambang 865 00:45:27,790 --> 00:45:30,270 point nilai, kesalahan dapat membangun up dan naik dan naik, dan 866 00:45:30,270 --> 00:45:31,125 hal-hal hanya mendapatkan salah. 867 00:45:31,125 --> 00:45:33,870 >> JOSEPH: Dan ada telah benar-benar contoh terkenal terjadi ini. 868 00:45:33,870 --> 00:45:37,190 Seperti insinyur NASA mendapatkan ini salah, menyebabkan roket meledak di 869 00:45:37,190 --> 00:45:38,665 udara setelah mereka telah diluncurkan. 870 00:45:38,665 --> 00:45:41,490 Dan banyak masalah seperti itu. 871 00:45:41,490 --> 00:45:41,956 Jadi ya. 872 00:45:41,956 --> 00:45:45,218 >> SPEAKER 6: Ketika Anda mengatakan 0,3 f, apakah itu memotong sisanya? 873 00:45:45,218 --> 00:45:46,468 Atau apakah itu mengumpulkan atau bawah? 874 00:45:46,468 --> 00:45:48,800 875 00:45:48,800 --> 00:45:50,200 >> ROB: Akan printf bulat itu? 876 00:45:50,200 --> 00:45:52,180 >> JOSEPH: saya pikir memotong printf. 877 00:45:52,180 --> 00:45:52,640 >> ROB: OK. 878 00:45:52,640 --> 00:45:59,890 Jadi kita sama bisa masuk sebaliknya arah mana ini, dalam hal ini, 879 00:45:59,890 --> 00:46:03,320 yang paling dekat bisa mewakili 0.1 adalah dengan nomor ini. 880 00:46:03,320 --> 00:46:06,820 Yang paling dekat itu mungkin bisa mewakili 0,2 adalah di seberang 881 00:46:06,820 --> 00:46:11,420 arah, ,199999996356 atau sesuatu. 882 00:46:11,420 --> 00:46:17,480 Jadi jika kami pergi dalam arah hal, maka printf 0.3 f akan kembali 883 00:46:17,480 --> 00:46:20,866 1,99 bukannya 2,00. 884 00:46:20,866 --> 00:46:22,960 >> JOSEPH: Dan aku tidak sepenuhnya yakin itu. 885 00:46:22,960 --> 00:46:25,430 Anda mungkin ingin menulis kecil, sedikit program untuk hanya memeriksa itu. 886 00:46:25,430 --> 00:46:29,370 >> ROB: Padahal, apa yang kami yakin adalah bahwa jika Anda mencoba untuk melemparkan itu ke 887 00:46:29,370 --> 00:46:33,660 int, dan casting ke int akan menyebabkan memotong desimal, jika 888 00:46:33,660 --> 00:46:38,140 Anda mencoba untuk melemparkan 1.9999999 ke int, Anda akan mendapatkan 1. 889 00:46:38,140 --> 00:46:41,440 Dan sehingga Anda harus umumnya menggunakan Fungsi putaran di perpustakaan matematika. 890 00:46:41,440 --> 00:46:44,190 891 00:46:44,190 --> 00:46:45,440 Pertanyaan? 892 00:46:45,440 --> 00:46:47,660 893 00:46:47,660 --> 00:46:48,982 OK. 894 00:46:48,982 --> 00:46:54,000 >> JOSEPH: Jadi pindah ke kondisi dan ekspresi Boolean. 895 00:46:54,000 --> 00:46:58,120 Jadi, Anda telah melihat ini sebelumnya. 896 00:46:58,120 --> 00:47:07,420 Dan sebenarnya, saya pastikan saya komputer ada di format yang tepat di sini. 897 00:47:07,420 --> 00:47:08,670 Space. 898 00:47:08,670 --> 00:47:10,630 899 00:47:10,630 --> 00:47:13,870 Maaf, kita akan harus berurusan dengan sedikit dengan cutoff di pinggiran. 900 00:47:13,870 --> 00:47:15,830 >> Tapi ya, kalian telah melihat ini sebelumnya di Scratch. 901 00:47:15,830 --> 00:47:19,930 Jadi hak ini di sini adalah ekspresi yang digunakan dalam 902 00:47:19,930 --> 00:47:21,250 pernyataan kondisional. 903 00:47:21,250 --> 00:47:23,930 Jadi menjawab lebih besar dari nol akan memberitahu Anda benar atau salah. 904 00:47:23,930 --> 00:47:26,530 Dan ini benar-benar penting, karena mereka memungkinkan kami untuk memperkenalkan 905 00:47:26,530 --> 00:47:28,670 logika ke dalam kode kita. 906 00:47:28,670 --> 00:47:32,820 >> Jadi misalnya, ini adalah program ditulis dalam Scratch yang meminta pengguna 907 00:47:32,820 --> 00:47:36,980 untuk integer dan mengatakan kepada mereka apakah integer yang mereka memberi Anda adalah 908 00:47:36,980 --> 00:47:38,690 positif atau negatif nomor. 909 00:47:38,690 --> 00:47:42,980 Dan konversi di sini untuk melihat adalah Anda pertama kali mencetak pernyataan, 910 00:47:42,980 --> 00:47:43,870 memberikan saya sebuah integer. 911 00:47:43,870 --> 00:47:45,980 Dan kemudian Anda meminta mereka untuk integer. 912 00:47:45,980 --> 00:47:49,870 >> Dan kemudian Anda menggunakan logika bersyarat atas di sini untuk memeriksa apakah nomor yang 913 00:47:49,870 --> 00:47:52,030 sebenarnya lebih besar dari nol atau tidak. 914 00:47:52,030 --> 00:47:58,960 Jadi di sini kita memiliki ekspresi Boolean dalam bersyarat Jika pernyataan. 915 00:47:58,960 --> 00:48:00,660 Apakah ada pertanyaan? 916 00:48:00,660 --> 00:48:03,030 Apakah ada pertanyaan tentang hal itu? 917 00:48:03,030 --> 00:48:03,950 OK. 918 00:48:03,950 --> 00:48:06,140 >> Jadi ada lebih dari sekedar lebih besar dari, tentu saja. 919 00:48:06,140 --> 00:48:10,385 Anda dapat membangun ekspresi Boolean menggunakan sebagian besar jenis hal yang Anda 920 00:48:10,385 --> 00:48:11,150 akan berpikir dalam matematika. 921 00:48:11,150 --> 00:48:12,370 Jadi lebih besar dari. 922 00:48:12,370 --> 00:48:13,740 Itu seharusnya menjadi kurang dari. 923 00:48:13,740 --> 00:48:14,990 Maaf. 924 00:48:14,990 --> 00:48:18,520 925 00:48:18,520 --> 00:48:19,760 Dan jarak. 926 00:48:19,760 --> 00:48:22,971 >> ROB: Allah melarang Anda meninggalkannya. 927 00:48:22,971 --> 00:48:23,620 >> JOSEPH: Baiklah. 928 00:48:23,620 --> 00:48:25,950 Jadi lebih besar dari, kurang dari, lebih besar dari, atau sama dengan, kurang 929 00:48:25,950 --> 00:48:27,070 dari, atau sama dengan. 930 00:48:27,070 --> 00:48:31,980 Kami menggunakan equals ganda untuk memeriksa kesetaraan, karena satu sama berarti 931 00:48:31,980 --> 00:48:32,810 tugas, kan? 932 00:48:32,810 --> 00:48:33,140 Ya. 933 00:48:33,140 --> 00:48:37,130 Dan kemudian kita bisa juga tidak sama dengan menggunakan tanda seru, sama. 934 00:48:37,130 --> 00:48:41,530 >> Dan ini simbol tanda seru dapat juga diperpanjang sehingga jika Anda ingin 935 00:48:41,530 --> 00:48:44,050 untuk membalikkan apapun Boolean ekspresi, Anda bisa melakukan itu. 936 00:48:44,050 --> 00:48:48,530 Jadi ini akan mengevaluasi dengan benar hanya jika jawabannya kurang 937 00:48:48,530 --> 00:48:51,240 dari atau sama dengan nol. 938 00:48:51,240 --> 00:48:53,950 Setiap pertanyaan itu? 939 00:48:53,950 --> 00:48:55,180 OK. 940 00:48:55,180 --> 00:48:58,840 >> Jadi, Anda juga dapat menggabungkan ini ekspresi menggunakan logika Dan dan 941 00:48:58,840 --> 00:48:59,790 Atau logis. 942 00:48:59,790 --> 00:49:03,530 Jadi ini hanya simbol dan, yang harus Shift, 7. 943 00:49:03,530 --> 00:49:07,720 Dan ini adalah simbol pipa, yang bukan kasus yang lebih rendah L. Itu salah satu yang 944 00:49:07,720 --> 00:49:09,440 itu tepat di atas tombol Enter Anda. 945 00:49:09,440 --> 00:49:12,870 Jadi, Anda menggunakan dua ini untuk melambangkan logis dan logis Or. 946 00:49:12,870 --> 00:49:18,180 >> Jadi ini hanya akan mengembalikan true jika jawaban adalah salah satu, dua, tiga, atau empat. 947 00:49:18,180 --> 00:49:23,030 Dan ini hanya akan mengembalikan true jika jawaban adalah di luar itu di kedua sisi. 948 00:49:23,030 --> 00:49:26,190 Jadi bukan satu, dua, tiga, atau empat. 949 00:49:26,190 --> 00:49:28,385 Dan cara Anda akan menggunakan bahwa dalam sebuah ekspresi - 950 00:49:28,385 --> 00:49:29,990 >> ROB: Atau nol atau lima. 951 00:49:29,990 --> 00:49:32,200 >> JOSEPH: Nol atau lima. 952 00:49:32,200 --> 00:49:32,380 Maaf. 953 00:49:32,380 --> 00:49:33,320 Ya, ya, ya. 954 00:49:33,320 --> 00:49:34,180 OK. 955 00:49:34,180 --> 00:49:38,980 Dan di sini sekarang, dengan cara yang sama Anda akan menggunakan ungkapan itu, lebih kecil 956 00:49:38,980 --> 00:49:42,000 sisi ekspresi dari Jika bersyarat pernyataan, Anda juga akan menggunakannya dalam 957 00:49:42,000 --> 00:49:47,800 cara yang sama dengan hanya menempatkan itu dalam kurung dari pernyataan Jika. 958 00:49:47,800 --> 00:49:54,020 Jadi printf ini hanya akan api jika jawaban adalah salah satu, dua, tiga, atau empat. 959 00:49:54,020 --> 00:49:56,002 Setiap pertanyaan pada penggabungan ekspresi? 960 00:49:56,002 --> 00:50:00,450 961 00:50:00,450 --> 00:50:04,240 >> Jadi ada kondisional lain membangun kita sebut Jika / Lain. 962 00:50:04,240 --> 00:50:08,120 Jadi pada dasarnya, ini sekarang berarti, OK, Jika sesuatu yang saya ingin memeriksa tidak 963 00:50:08,120 --> 00:50:11,600 benar, kemudian pergi ke Lain dan melakukan tindakan lain. 964 00:50:11,600 --> 00:50:15,570 Jadi dalam kasus ini, saya bertanya pengguna untuk integer. 965 00:50:15,570 --> 00:50:17,790 Apakah integer lebih besar dari nol? 966 00:50:17,790 --> 00:50:18,310 Ya? 967 00:50:18,310 --> 00:50:20,100 Nah, kemudian mereka mengambil angka positif. 968 00:50:20,100 --> 00:50:22,320 Jika tidak, maka harus memiliki sudah negatif atau nol. 969 00:50:22,320 --> 00:50:27,530 Jadi Anda memilih angka negatif atau nol dalam kasus ini. 970 00:50:27,530 --> 00:50:29,235 Ya. 971 00:50:29,235 --> 00:50:30,485 Atau nol. 972 00:50:30,485 --> 00:50:36,320 973 00:50:36,320 --> 00:50:39,300 >> Dan kemudian kami juga memiliki Jika / Lain, Jika dan Lain. 974 00:50:39,300 --> 00:50:45,640 Jadi ini memungkinkan kita mengeksekusi urutan hal hanya jika yang pertama gagal. 975 00:50:45,640 --> 00:50:49,540 Jadi dalam hal ini, sekarang kita membuat yang terakhir Anda memilih nol. 976 00:50:49,540 --> 00:50:53,080 Jadi, jika mereka tidak memilih positif atau angka negatif, maka mereka harus 977 00:50:53,080 --> 00:50:53,640 memilih nol. 978 00:50:53,640 --> 00:50:56,720 Jadi itu hanya berjalan menuruni rantai seperti ini. 979 00:50:56,720 --> 00:50:59,960 >> Jadi contoh bagaimana sebuah Jika berbeda - 980 00:50:59,960 --> 00:51:02,590 Jika sebuah / Lain berbeda dari hanya urutan Ifs. 981 00:51:02,590 --> 00:51:07,680 Dan ini adalah pertanyaan umum yang orang tanyakan adalah, baik, jika Anda mendapatkan seperti 982 00:51:07,680 --> 00:51:11,265 95 di CS50, apa yang akan ini Program memberitahu Anda? 983 00:51:11,265 --> 00:51:12,600 >> SPEAKER 5: Anda mendapat A. 984 00:51:12,600 --> 00:51:13,490 >> JOSEPH: Ya. 985 00:51:13,490 --> 00:51:14,960 Anda punya setiap satu salah satu dari mereka benar. 986 00:51:14,960 --> 00:51:17,130 Anda mendapat nilai A, Anda punya B, Anda mendapat C dan D, kan? 987 00:51:17,130 --> 00:51:19,770 Jadi semua ini bisa dievaluasi dalam rangka. 988 00:51:19,770 --> 00:51:23,570 Jadi sementara 95 lebih besar dari 90, itu juga lebih besar dari 80, itu juga 989 00:51:23,570 --> 00:51:25,790 lebih besar dari 70, dan itu juga lebih besar dari 60. 990 00:51:25,790 --> 00:51:27,620 Jadi, Anda punya semua orang nilai. 991 00:51:27,620 --> 00:51:31,630 Dan saya menganggap Anda akan hanya ingin A. 992 00:51:31,630 --> 00:51:34,060 >> Cara untuk memperbaikinya adalah dengan mengganti mereka yang Lain / Jika 's. 993 00:51:34,060 --> 00:51:37,540 Jadi dalam skenario ini, ia melihat bahwa 95 adalah lebih besar dari 90, dan kemudian melakukan 994 00:51:37,540 --> 00:51:38,885 tidak mengevaluasi sisanya laporan. 995 00:51:38,885 --> 00:51:41,900 996 00:51:41,900 --> 00:51:43,150 Ada pertanyaan tentang hal itu? 997 00:51:43,150 --> 00:51:48,580 998 00:51:48,580 --> 00:51:52,470 >> Jadi ada semacam bersyarat lain struktur yang kita miliki di sini yang kita 999 00:51:52,470 --> 00:51:53,390 sebut pernyataan switch. 1000 00:51:53,390 --> 00:51:57,390 Jadi ini memungkinkan Anda untuk memeriksa dasarnya apa nilai dari sejumlah anda menaruh 1001 00:51:57,390 --> 00:51:59,000 ke dalam pernyataan switch. 1002 00:51:59,000 --> 00:52:03,200 Jadi dalam skenario ini, kita beralih pada n, dan kami katakan, oh, jika n adalah 1003 00:52:03,200 --> 00:52:04,710 satu, kemudian mencetak pernyataan itu. 1004 00:52:04,710 --> 00:52:07,910 Dan kemudian istirahat, yang berarti exit keluar dari pernyataan switch. 1005 00:52:07,910 --> 00:52:12,670 >> Kalau tidak salah, maka, baik, hanya akhirnya memeriksa semua kasus. 1006 00:52:12,670 --> 00:52:16,280 Dan sehingga memeriksa apakah itu satu atau dua atau tiga, dan mencetak sesuai. 1007 00:52:16,280 --> 00:52:19,780 Dan apa kata kunci default di sini berarti jika mereka tidak memasukkan 1008 00:52:19,780 --> 00:52:21,690 dari mereka, kemudian mengatakan tidak valid. 1009 00:52:21,690 --> 00:52:25,910 Jadi katakanlah saya minta n dan pengguna memberi saya empat. 1010 00:52:25,910 --> 00:52:29,470 Nah, cocok tidak ada kasus-kasus, sehingga akan mencetak apa yang ada di 1011 00:52:29,470 --> 00:52:30,540 bagian default. 1012 00:52:30,540 --> 00:52:31,180 Ya, pertanyaan? 1013 00:52:31,180 --> 00:52:32,614 >> SPEAKER 5: Dapatkah Anda menggunakan Boolean ekspresi bukannya 1014 00:52:32,614 --> 00:52:33,570 satu, dua, atau tiga? 1015 00:52:33,570 --> 00:52:36,940 >> JOSEPH: Jadi pertanyaannya adalah dapat Anda gunakan Ekspresi Boolean, bukan satu, 1016 00:52:36,940 --> 00:52:37,940 dua, dan tiga? 1017 00:52:37,940 --> 00:52:40,520 Dan di C, saya percaya Anda tidak bisa melakukan itu. 1018 00:52:40,520 --> 00:52:44,320 Namun dalam bahasa lain, yang mungkin Anda temui di akhir 1019 00:52:44,320 --> 00:52:46,460 semester seperti JavaScript, Anda bisa. 1020 00:52:46,460 --> 00:52:50,050 Nah, Anda harus menghitung terlebih dahulu bahwa nilai dan kemudian menggunakannya dalam 1021 00:52:50,050 --> 00:52:50,650 beralih pernyataan. 1022 00:52:50,650 --> 00:52:50,930 Ya? 1023 00:52:50,930 --> 00:52:54,760 >> ROB: Jadi bagian dari manfaat dari saklar pernyataan yang memikirkan jika Anda melakukan ini 1024 00:52:54,760 --> 00:52:58,680 sebagai Jika / Lain, jadi seperti jika n sama dengan sama dengan satu atau apa pun. 1025 00:52:58,680 --> 00:53:00,300 Lain / Jika n sama sama dengan dua, apa pun. 1026 00:53:00,300 --> 00:53:01,960 Lain / Jika n sama sama dengan tiga. 1027 00:53:01,960 --> 00:53:05,930 Jadi cara program akan dijalankan itu akan berurutan turun daftar itu 1028 00:53:05,930 --> 00:53:07,500 dan periksa, adalah n satu? 1029 00:53:07,500 --> 00:53:08,040 Tidak. 1030 00:53:08,040 --> 00:53:09,070 Apakah n dua? 1031 00:53:09,070 --> 00:53:09,490 Tidak. 1032 00:53:09,490 --> 00:53:10,940 Apakah n tiga? 1033 00:53:10,940 --> 00:53:11,710 Ya. 1034 00:53:11,710 --> 00:53:12,610 Lakukan ini. 1035 00:53:12,610 --> 00:53:15,270 >> Sedangkan dengan switch pernyataan, itu benar-benar mampu melakukan kompilasi menjadi 1036 00:53:15,270 --> 00:53:16,360 sangat cepat. 1037 00:53:16,360 --> 00:53:19,550 Dan secepat itu mengatakan switch, itu mengatakan, semua yang benar, n adalah dua, saya 1038 00:53:19,550 --> 00:53:23,060 segera akan melompat ke tempat Saya harus mulai menjalankan. 1039 00:53:23,060 --> 00:53:26,080 Aku tidak akan periksa dulu, adalah n satu, adalah n dua? 1040 00:53:26,080 --> 00:53:28,860 Hal ini dapat segera mulai melakukan apa yang seharusnya dilakukan. 1041 00:53:28,860 --> 00:53:33,830 >> Dan karena itu, tidak bisa mengambil kondisi Boolean. 1042 00:53:33,830 --> 00:53:36,480 Atau yang lain itu akan harus melakukan berurutan, seperti, oke, adalah n 1043 00:53:36,480 --> 00:53:37,820 lebih besar dari nol? 1044 00:53:37,820 --> 00:53:41,140 Yang lain n lebih besar dari 10 atau apa pun. 1045 00:53:41,140 --> 00:53:44,780 >> JOSEPH: Dalam hal ini, jika Anda menggunakan Jika / Lain, Jika, maka saklar akan 1046 00:53:44,780 --> 00:53:47,792 berjalan sekitar tiga kali lebih cepat daripada Jika / Lain, Jika. 1047 00:53:47,792 --> 00:53:53,060 1048 00:53:53,060 --> 00:53:56,040 Kita dapat mengatur saklar sedemikian dengan cara yang kita tidak pecah 1049 00:53:56,040 --> 00:53:57,520 setelah masing-masing kasus. 1050 00:53:57,520 --> 00:54:00,960 Jadi dalam hal ini, saya partisi nomor yang kita pilih menjadi satu dan 1051 00:54:00,960 --> 00:54:04,250 dua yang bukan angka yang tinggi dan tiga menjadi nomor tinggi. 1052 00:54:04,250 --> 00:54:08,290 >> Jadi dalam hal ini, jika n adalah satu atau dua, itu akan memukul kasus ini dan kemudian akan 1053 00:54:08,290 --> 00:54:10,640 jatuh melalui, karena tidak ada istirahat. 1054 00:54:10,640 --> 00:54:11,610 Dan itu akan berakhir di sini. 1055 00:54:11,610 --> 00:54:15,360 Jadi jika kita memilih salah satu, ia akan melakukan printf dan kemudian istirahat sehingga tidak ada 1056 00:54:15,360 --> 00:54:17,610 ini dijalankan. 1057 00:54:17,610 --> 00:54:21,870 Dan tentu saja, jika mereka masuk dalam tiga atau sesuatu yang lain, maka akan melewatkan 1058 00:54:21,870 --> 00:54:25,320 mereka dan tidak pergi ke sana, dan itu akan mengeksekusi sebaliknya 1059 00:54:25,320 --> 00:54:27,490 sesuai line. 1060 00:54:27,490 --> 00:54:29,390 Apakah ada pertanyaan tentang hal itu? 1061 00:54:29,390 --> 00:54:29,780 Ya? 1062 00:54:29,780 --> 00:54:32,642 >> SPEAKER 4: Apakah Anda mendapatkan pesan kesalahan jika Anda memiliki istirahat setelah satu kasus tapi 1063 00:54:32,642 --> 00:54:34,550 tidak memiliki sesuatu untuk itu lakukan? 1064 00:54:34,550 --> 00:54:37,820 >> JOSEPH: Jadi pertanyaannya adalah akan Anda dapatkan kesalahan jika Anda memiliki istirahat setelah 1065 00:54:37,820 --> 00:54:39,730 huruf satu tapi tidak ada yang harus dilakukan? 1066 00:54:39,730 --> 00:54:41,520 Dan jawabannya tidak. 1067 00:54:41,520 --> 00:54:43,172 Anda tidak akan benar-benar mendapatkan error. 1068 00:54:43,172 --> 00:54:44,590 Ya, hmm mm. 1069 00:54:44,590 --> 00:54:54,540 >> Jadi semacam sedikit perubahan di sini, Aku akan menempatkan printf di sini. 1070 00:54:54,540 --> 00:54:55,790 Whoops. 1071 00:54:55,790 --> 00:55:00,994 1072 00:55:00,994 --> 00:55:04,880 Jadi apa yang akan ini mencetak jika Aku menempatkan satu di sebagai masukan? 1073 00:55:04,880 --> 00:55:07,530 1074 00:55:07,530 --> 00:55:07,770 Ya. 1075 00:55:07,770 --> 00:55:10,360 Ini akan memberitahu Anda itu tidak mengambil sejumlah besar dua kali, kan? 1076 00:55:10,360 --> 00:55:13,500 Karena akan memukul bahwa kasus pertama, itu tidak akan pecah, dan itu akan jatuh 1077 00:55:13,500 --> 00:55:15,730 melalui kasus kedua. 1078 00:55:15,730 --> 00:55:16,950 Ada pertanyaan tentang hal itu? 1079 00:55:16,950 --> 00:55:18,280 >> ROB: Apakah Anda punya pertanyaan lain? 1080 00:55:18,280 --> 00:55:20,840 >> JOSEPH: OK, dingin. 1081 00:55:20,840 --> 00:55:22,400 Baik. 1082 00:55:22,400 --> 00:55:25,780 Jadi ada sesuatu yang lain yang kita sebut operator ternary yang pada dasarnya adalah 1083 00:55:25,780 --> 00:55:29,010 sintaks alternatif untuk melakukan Jika kemudian Lain. 1084 00:55:29,010 --> 00:55:30,470 Dan itu memungkinkan Anda melakukan semuanya dalam satu baris. 1085 00:55:30,470 --> 00:55:34,110 Jadi dalam program khusus ini, Saya meminta pengguna untuk n. 1086 00:55:34,110 --> 00:55:37,190 Dan jika n lebih besar dari 100, saya memberitahu mereka mereka mengambil jumlah tinggi. 1087 00:55:37,190 --> 00:55:39,560 Lain Saya memberitahu mereka bahwa mereka mengambil angka yang rendah. 1088 00:55:39,560 --> 00:55:43,030 >> Jadi kita dapat menggunakan sintaks sangat panjang ini, String, S, dan kemudian memeriksa apakah n adalah 1089 00:55:43,030 --> 00:55:45,260 lebih besar dari 100 dan menetapkan sesuai. 1090 00:55:45,260 --> 00:55:49,450 Tapi kita bisa membuat ini jauh lebih ringkas dengan menggunakan sintaks operator ternary ini 1091 00:55:49,450 --> 00:55:52,090 yang melibatkan sebuah pertanyaan mark dan titik dua. 1092 00:55:52,090 --> 00:55:55,070 Jadi tanda tanya pada dasarnya mengajukan pertanyaan, kan? 1093 00:55:55,070 --> 00:55:56,625 >> ROB: Mungkin memperbesar itu. 1094 00:55:56,625 --> 00:55:57,372 >> JOSEPH: Ya. 1095 00:55:57,372 --> 00:56:00,210 Good point. 1096 00:56:00,210 --> 00:56:02,550 Jadi ini adalah operator ternary. 1097 00:56:02,550 --> 00:56:06,100 Saya pertama kali mengajukan pertanyaan itu, n lebih besar dari 100? 1098 00:56:06,100 --> 00:56:09,770 Jika ya, maka saya jalankan pertama bagian sebelum usus besar. 1099 00:56:09,770 --> 00:56:13,360 Jika tidak, maka saya jalankan Bagian kedua setelah titik dua. 1100 00:56:13,360 --> 00:56:16,640 Jadi jika n lebih besar dari 100, maka mengambil tinggi dan menempatkan 1101 00:56:16,640 --> 00:56:18,360 yang menjadi string s. 1102 00:56:18,360 --> 00:56:22,170 Jika n adalah kurang dari 100, itu mengambil rendah dan kemudian menempatkan bahwa ke dalam string s. 1103 00:56:22,170 --> 00:56:30,186 Sehingga akan mengembun bongkahan besar ini ke dalam hanya satu baris. 1104 00:56:30,186 --> 00:56:32,010 >> SPEAKER 5: Apakah itu populer? 1105 00:56:32,010 --> 00:56:36,070 >> JOSEPH: Ya, itu cukup populer untuk hal mana pada dasarnya Anda ingin 1106 00:56:36,070 --> 00:56:38,700 melakukan tugas berdasarkan semacam kondisi. 1107 00:56:38,700 --> 00:56:43,110 Dan dalam hal ini, kami mencoba untuk memberikan nilai pada string s. 1108 00:56:43,110 --> 00:56:44,840 Ini tidak begitu - 1109 00:56:44,840 --> 00:56:47,670 Saya kira saya tidak benar-benar lebih dalam kasus lain. 1110 00:56:47,670 --> 00:56:49,390 Tapi itu sangat berguna untuk tugas ini. 1111 00:56:49,390 --> 00:56:54,490 >> ROB: Itulah pola yang cukup umum di mana Anda memiliki beberapa variabel yang 1112 00:56:54,490 --> 00:56:58,200 Anda akan mengatakan, jika sesuatu, mengatur variabel ini untuk satu nilai; lain, mengatur 1113 00:56:58,200 --> 00:56:59,810 variabel ini ke nilai lain. 1114 00:56:59,810 --> 00:57:03,360 Dan itu adalah skenario di mana menggunakan ternary a. 1115 00:57:03,360 --> 00:57:05,220 >> JOSEPH: Dan Anda menyimpan banyak garis, kan? 1116 00:57:05,220 --> 00:57:08,090 Dan itu hanya membuat kode Anda bisa dibilang sedikit lebih mudah dibaca. 1117 00:57:08,090 --> 00:57:08,635 Ya, pertanyaan? 1118 00:57:08,635 --> 00:57:12,384 >> SPEAKER 6: Untuk terner, bisa Anda pergi, String s equals s, tanda tanya? 1119 00:57:12,384 --> 00:57:15,280 Dan kemudian Anda bisa memiliki, katakanlah, lima pilihan yang berbeda. 1120 00:57:15,280 --> 00:57:18,310 Dan tergantung pada apa jumlah n itu, akan Anda memilih salah satu dari mereka? 1121 00:57:18,310 --> 00:57:22,210 >> JOSEPH: Jadi pertanyaannya adalah, apakah ada semacam sintaks di mana Anda dapat melakukan serangkaian 1122 00:57:22,210 --> 00:57:25,910 s sama dengan n, dan kemudian memiliki lebih dari dua Pilihan setelah itu tanda tanya? 1123 00:57:25,910 --> 00:57:29,740 Dan jawaban sederhana adalah tidak, tidak ada benar-benar cara yang baik untuk melakukan itu kecuali 1124 00:57:29,740 --> 00:57:33,850 Anda ingin sarang beberapa terner operator dalam satu sama lain. 1125 00:57:33,850 --> 00:57:38,050 >> Anda bisa melakukan seperti n lebih besar dari 100, tanda tanya, dan kemudian lain 1126 00:57:38,050 --> 00:57:41,850 operator ternary, n lebih besar dari 50, tanda tanya, dan sarang seperti itu. 1127 00:57:41,850 --> 00:57:45,240 Tapi dalam skenario itu, kode Anda yang mendapatkan jenis terbaca dan berantakan, 1128 00:57:45,240 --> 00:57:47,920 dan mungkin lebih baik untuk hanya pergi ke Jika pernyataan / Lain pada saat itu. 1129 00:57:47,920 --> 00:57:54,530 >> ROB: Dan juga, sebagai samping catatan, PHP salah menerapkan terner tersebut 1130 00:57:54,530 --> 00:57:58,053 Operator sehingga ternaries bersarang bahkan tidak bekerja sebagaimana mestinya. 1131 00:57:58,053 --> 00:57:58,840 >> JOSEPH: Ya. 1132 00:57:58,840 --> 00:58:01,170 Sehingga mendapat sedikit membingungkan, terutama ketika Anda pergi 1133 00:58:01,170 --> 00:58:02,145 untuk bahasa yang berbeda. 1134 00:58:02,145 --> 00:58:04,810 >> ROB: Ini membingungkan cukup bahwa bahasa yang salah tentang hal itu. 1135 00:58:04,810 --> 00:58:08,030 1136 00:58:08,030 --> 00:58:11,510 >> JOSEPH: Jadi sebenarnya, hanya untuk memperjelas, tidak semua orang tahu apa yang 1137 00:58:11,510 --> 00:58:13,900 % S tidak di sini? 1138 00:58:13,900 --> 00:58:15,650 Ada pertanyaan tentang hal itu? 1139 00:58:15,650 --> 00:58:19,760 Saya kira hanya untuk kamera,% s pada dasarnya memungkinkan kita menaruh placeholder 1140 00:58:19,760 --> 00:58:20,790 untuk string. 1141 00:58:20,790 --> 00:58:23,920 Dan kemudian pada akhirnya, kita menetapkan bahwa variabel kita ingin dimasukkan ke dalam ini 1142 00:58:23,920 --> 00:58:25,500 tempat dudukan adalah s. 1143 00:58:25,500 --> 00:58:27,730 Sehingga pada dasarnya mengambil s dan menempatkan di sini. 1144 00:58:27,730 --> 00:58:32,130 Dan kemudian akan mencetak, Anda memilih tinggi atau Anda memilih angka yang rendah. 1145 00:58:32,130 --> 00:58:33,770 OK. 1146 00:58:33,770 --> 00:58:36,970 >> Jadi loop memungkinkan Anda untuk melakukan hal-hal dalam gerakan melingkar, kan? 1147 00:58:36,970 --> 00:58:40,300 Anda mungkin telah mengalami ini di Gores dalam bentuk Selamanya loop 1148 00:58:40,300 --> 00:58:45,650 atau Ulangi Sampai atau Ulangi tertentu beberapa kali. 1149 00:58:45,650 --> 00:58:47,540 Lalu mengapa ini baik untuk kita? 1150 00:58:47,540 --> 00:58:51,500 Nah, di C, katakanlah kita punya ini lagu diimplementasikan dalam Scratch bahwa 1151 00:58:51,500 --> 00:58:53,450 bernyanyi, ini lagu yang tidak pernah berakhir. 1152 00:58:53,450 --> 00:58:55,710 Itu hanya berjalan dan terus dan selamanya dan selamanya. 1153 00:58:55,710 --> 00:58:59,395 Nah, Anda tidak bisa benar-benar membuat sebuah program yang memiliki jumlah tak terbatas printf 1154 00:58:59,395 --> 00:59:00,850 pernyataan di dalamnya, kan? 1155 00:59:00,850 --> 00:59:04,900 >> Jadi dalam skenario khusus ini, salah satu cara Anda bisa membuat pekerjaan ini dan 1156 00:59:04,900 --> 00:59:09,330 untuk membuatnya mencetak selamanya adalah untuk bukannya menggunakan loop Sementara. 1157 00:59:09,330 --> 00:59:13,640 Jadi loop Sementara akan mengeksekusi apa dalam tubuh dari dua kawat gigi yang 1158 00:59:13,640 --> 00:59:17,250 milik itu berdasarkan apa kondisi ini. 1159 00:59:17,250 --> 00:59:21,170 Jadi, dalam contoh khusus ini sebelumnya, jika kita ingin mencetak ini selamanya, apa 1160 00:59:21,170 --> 00:59:23,590 mungkin kita lakukan? 1161 00:59:23,590 --> 00:59:25,190 Nah, tentu, kan? 1162 00:59:25,190 --> 00:59:32,290 >> Jadi ini semacam menggabungkan ide beberapa ekspresi Boolean 1163 00:59:32,290 --> 00:59:33,610 bersama dengan loop. 1164 00:59:33,610 --> 00:59:35,780 Dan kita belajar tentang Boolean ekspresi sebelumnya. 1165 00:59:35,780 --> 00:59:39,650 Jadi, setiap kali kondisi dalam Sementara yang tetap benar, lingkaran ini 1166 00:59:39,650 --> 00:59:41,480 akan mengeksekusi pada dan seterusnya. 1167 00:59:41,480 --> 00:59:44,640 Dan dalam hal ini, jika kita hanya memasok dengan benar, ini menyebabkan tak terbatas 1168 00:59:44,640 --> 00:59:49,310 lingkaran yang mencetak lagu dan terus dan seperti yang kita inginkan sebelum tanpa 1169 00:59:49,310 --> 00:59:52,410 memiliki program yang memiliki terbatas sejumlah pernyataan printf, yang 1170 00:59:52,410 --> 00:59:55,220 tidak mungkin. 1171 00:59:55,220 --> 00:59:57,810 >> Jadi lebih compellingly, meskipun, Anda dapat menggunakan ini dengan 1172 00:59:57,810 --> 00:59:59,710 variabel dan kondisi. 1173 00:59:59,710 --> 01:00:04,420 Jadi katakanlah kita ingin mengulang frase, benar-benar gila, 10 kali. 1174 01:00:04,420 --> 01:00:08,380 Jadi apa yang dapat Anda lakukan dengan loop Sementara adalah Anda pertama dapat menginisialisasi counter 1175 01:00:08,380 --> 01:00:10,860 luar variabel Sementara lingkaran sampai 10. 1176 01:00:10,860 --> 01:00:14,360 Dan kemudian pada dasarnya, setiap kali Anda pergi melalui loop Sementara, Anda mencetak 1177 01:00:14,360 --> 01:00:19,090 pernyataan dan kemudian Anda mengurangi variabel counter sampai akhir, 1178 01:00:19,090 --> 01:00:23,020 di beberapa titik, setelah kami kurangi Saya cukup kali, 1 dari saya cukup kali - 1179 01:00:23,020 --> 01:00:27,290 dan hanya untuk memperjelas, saya dikurangi dikurangi berarti saya sama aku dikurangi 1. 1180 01:00:27,290 --> 01:00:31,280 >> Itu pada dasarnya akan membawa saya sampai ke titik di mana setelah saya memukul nol, ini 1181 01:00:31,280 --> 01:00:35,260 Kondisi tidak lagi benar dan sehingga keluar dari loop. 1182 01:00:35,260 --> 01:00:37,045 Jadi benar-benar gila hanya mencetak 10 kali. 1183 01:00:37,045 --> 01:00:39,550 1184 01:00:39,550 --> 01:00:41,080 Setiap pertanyaan tentang loop Sementara? 1185 01:00:41,080 --> 01:00:44,580 1186 01:00:44,580 --> 01:00:46,790 OK. 1187 01:00:46,790 --> 01:00:50,550 >> Jadi ada cara yang bisa kita lakukan apa yang kita lakukan dengan cara yang lebih ringkas dengan 1188 01:00:50,550 --> 01:00:51,715 apa yang kita sebut Untuk lingkaran. 1189 01:00:51,715 --> 01:00:55,750 Jadi loop Untuk terdiri dari inisialisasi, kondisi, dan 1190 01:00:55,750 --> 01:00:58,950 Update, seperti yang kita miliki sebelumnya Sementara dalam lingkaran ini. 1191 01:00:58,950 --> 01:00:59,890 Jadi mari kita lihat. 1192 01:00:59,890 --> 01:01:02,900 Dalam Sementara loop ini, kami memiliki inisialisasi, maka kita memiliki 1193 01:01:02,900 --> 01:01:04,260 kondisi yang kami diperiksa. 1194 01:01:04,260 --> 01:01:06,450 Dan kemudian kami memiliki update langkah di atas. 1195 01:01:06,450 --> 01:01:10,060 >> Dengan loop Sebab, ini pada dasarnya mengambil tiga hal dan mengembun 1196 01:01:10,060 --> 01:01:11,370 ke dalam satu baris. 1197 01:01:11,370 --> 01:01:15,130 Jadi hal pertama yang dilakukannya dalam Untuk loop inisialisasi. 1198 01:01:15,130 --> 01:01:19,090 Dan kemudian Anda lakukan titik koma, dan kemudian Anda melakukan kondisi, yaitu I 1199 01:01:19,090 --> 01:01:22,200 lebih besar dari nol berjalan di atas sana, dan kemudian langkah pembaruan. 1200 01:01:22,200 --> 01:01:26,470 Jadi ini akan dilakukan pada sangat akhir tubuh loop. 1201 01:01:26,470 --> 01:01:28,790 Jadi dua program ini dasarnya sama. 1202 01:01:28,790 --> 01:01:31,960 1203 01:01:31,960 --> 01:01:33,870 >> Ada pertanyaan? 1204 01:01:33,870 --> 01:01:37,000 Jadi apa satu perbedaan antara kedua? 1205 01:01:37,000 --> 01:01:38,000 Can anyone titik itu? 1206 01:01:38,000 --> 01:01:40,480 Mungkin agak halus. 1207 01:01:40,480 --> 01:01:41,930 Ini hanya perbedaan yang sangat kecil. 1208 01:01:41,930 --> 01:01:42,330 Ya? 1209 01:01:42,330 --> 01:01:49,008 >> SPEAKER 5: Anda tidak akan dapat menggunakan I variabel di luar lingkaran Untuk 1210 01:01:49,008 --> 01:01:49,962 [Tak terdengar]? 1211 01:01:49,962 --> 01:01:50,900 >> JOSEPH: Tepat. 1212 01:01:50,900 --> 01:01:53,550 Jadi ini adalah sesuatu yang kita akan sampai ke kemudian disebut lingkup variabel. 1213 01:01:53,550 --> 01:01:56,610 Tapi pada dasarnya, ini int saya hidup Sementara di luar lingkaran ini. 1214 01:01:56,610 --> 01:01:59,800 Jadi sekali Sementara loop ini dilakukan mengeksekusi, aku akan bisa menggunakan saya kemudian 1215 01:01:59,800 --> 01:02:00,880 di dalam program ini. 1216 01:02:00,880 --> 01:02:05,430 >> Sedangkan dengan ini Untuk lingkaran, int ini saya scoped dalam lingkaran ini Untuk. 1217 01:02:05,430 --> 01:02:10,240 Dan karena di dalam bagian ini loop Sebab, yang dimulai 1218 01:02:10,240 --> 01:02:13,200 di kurung dan berakhir dengan penjepit keriting di sana. 1219 01:02:13,200 --> 01:02:16,120 Apa pun yang dinyatakan dalam di sini tidak dapat digunakan di luar. 1220 01:02:16,120 --> 01:02:20,420 Jadi jika saya mencoba untuk menggunakan saya di luar, itu akan katakan padaku, simbol dideklarasikan. 1221 01:02:20,420 --> 01:02:22,420 Dan pada dasarnya, saya tidak akan dapat menggunakannya. 1222 01:02:22,420 --> 01:02:28,460 >> ROB: Dan juga, 10 tahun yang lalu, di harfiah semua kasus, kurung kurawal adalah 1223 01:02:28,460 --> 01:02:31,140 apa yang digunakan untuk menentukan ruang lingkup variabel. 1224 01:02:31,140 --> 01:02:37,240 Jadi di sana, int I sama dengan 10 dinyatakan dalam ini 1225 01:02:37,240 --> 01:02:38,520 set kurung kurawal. 1226 01:02:38,520 --> 01:02:42,530 Dan demikian maka selama Anda mencoba menggunakan I sebelum kurung kurawal ini, tidak apa-apa. 1227 01:02:42,530 --> 01:02:47,090 1228 01:02:47,090 --> 01:02:51,460 Anda mungkin melihat ketika Anda mengetikkan make, Anda lihat dash, dash, std, sama, c99. 1229 01:02:51,460 --> 01:02:57,100 >> Jadi itu adalah versi yang lebih baru dari C yang GCC telah menerapkan yang juga memberikan 1230 01:02:57,100 --> 01:02:58,740 shortcut ini. 1231 01:02:58,740 --> 01:03:03,505 Jadi ini digunakan tidak diperbolehkan dalam C. Dan Anda dapat melihat mengapa, karena int ini 1232 01:03:03,505 --> 01:03:07,600 Saya berada di luar kurung kurawal ini tetapi itu masih dianggap dalam 1233 01:03:07,600 --> 01:03:09,750 lingkup ini kurung kurawal. 1234 01:03:09,750 --> 01:03:14,120 Tapi ini adalah hal yang sangat nyaman, dan sehingga merupakan ekstensi yang baik. 1235 01:03:14,120 --> 01:03:15,370 >> JOSEPH: Ada pertanyaan? 1236 01:03:15,370 --> 01:03:17,550 1237 01:03:17,550 --> 01:03:19,260 OK. 1238 01:03:19,260 --> 01:03:22,820 Jadi apa yang lebih bermanfaat adalah bahwa kadang-kadang Anda ingin semacam dinamika di 1239 01:03:22,820 --> 01:03:23,410 loop Anda, kan? 1240 01:03:23,410 --> 01:03:26,350 Anda tidak ingin hanya selalu mencetak benar-benar gila sepanjang waktu, Anda 1241 01:03:26,350 --> 01:03:28,650 ingin menghitung mundur dari 10 atau sesuatu. 1242 01:03:28,650 --> 01:03:32,010 Dan sehingga Anda dapat menggunakan variabel counter dalam lingkaran itu juga. 1243 01:03:32,010 --> 01:03:35,530 Dan dalam hal ini, program ini hanya menghitung mundur dari 10 ke bawah. 1244 01:03:35,530 --> 01:03:39,260 Dan apa yang tidak mencetak? 1245 01:03:39,260 --> 01:03:42,790 Ia tidak mencetak nol, benar, karena ketika - 1246 01:03:42,790 --> 01:03:45,460 Ya, itu juga tidak mencetak 11. 1247 01:03:45,460 --> 01:03:49,200 >> Jadi tidak mencetak nol, karena ketika Saya adalah nol, ingat, itu mengevaluasi 1248 01:03:49,200 --> 01:03:52,170 kondisi sebelum melanjutkan untuk menjalankan tubuh loop. 1249 01:03:52,170 --> 01:03:56,820 Dan ketika saya adalah nol, ini adalah palsu, sehingga tidak mencetak menghitung mundur 1250 01:03:56,820 --> 01:04:00,200 nol, itu hanya mencetak menghitung turun 10 semua jalan ke 1. 1251 01:04:00,200 --> 01:04:03,420 Jika kita benar-benar ingin untuk mencetak nol, maka kita akan menempatkan tanda sama 1252 01:04:03,420 --> 01:04:04,750 setelah ini lebih besar dari tanda. 1253 01:04:04,750 --> 01:04:09,400 1254 01:04:09,400 --> 01:04:10,130 OK. 1255 01:04:10,130 --> 01:04:16,410 >> Jadi salah satu cara untuk melakukan validasi input, yang adalah ketika Anda meminta pengguna untuk melakukan 1256 01:04:16,410 --> 01:04:18,620 sesuatu, Anda ingin memastikan bahwa mereka mengikuti instruksi Anda, adalah dengan menggunakan 1257 01:04:18,620 --> 01:04:19,400 loop Sementara, kan? 1258 01:04:19,400 --> 01:04:22,990 Jadi dalam kasus ini, aku bertanya untuk angka positif dan kemudian aku 1259 01:04:22,990 --> 01:04:23,810 menunggu input. 1260 01:04:23,810 --> 01:04:28,210 >> Dan kemudian aku memeriksa Sementara input kurang dari nol, tetap meminta mereka. 1261 01:04:28,210 --> 01:04:32,100 Jadi selama mereka memberi saya nomor yang tidak positif, terus bertanya, 1262 01:04:32,100 --> 01:04:33,600 terus bertanya, terus bertanya. 1263 01:04:33,600 --> 01:04:35,860 Tapi apa adalah semacam aneh tentang ini? 1264 01:04:35,860 --> 01:04:38,570 Atau apa yang tampaknya tidak optimal tentang Struktur ini di sini? 1265 01:04:38,570 --> 01:04:44,282 1266 01:04:44,282 --> 01:04:44,758 Siapa saja? 1267 01:04:44,758 --> 01:04:45,234 Ya? 1268 01:04:45,234 --> 01:04:47,614 >> SPEAKER 6: Anda mengulangi instruksi dua kali. 1269 01:04:47,614 --> 01:04:48,100 >> JOSEPH: Benar. 1270 01:04:48,100 --> 01:04:50,090 Jadi kita memiliki dua pernyataan printf di sini, kan? 1271 01:04:50,090 --> 01:04:53,440 Jadi ada cara kita bisa mendapatkan ini hanya ke salah satu yang akan membuat kita 1272 01:04:53,440 --> 01:04:57,170 kode lebih mudah dibaca dan sedikit lebih bersih. 1273 01:04:57,170 --> 01:05:00,180 Dan kemudian kita tidak perlu Dapatkan telah dua kali juga. 1274 01:05:00,180 --> 01:05:03,740 Dan salah satu cara yang dapat Anda lakukan ini dengan menggunakan loop Do-While. 1275 01:05:03,740 --> 01:05:07,670 >> Dan loop Do-While pada dasarnya adalah bentuk yang berbeda dari loop Sementara di mana 1276 01:05:07,670 --> 01:05:11,460 apa pun yang dalam kurung kurawal dijalankan setidaknya sekali. 1277 01:05:11,460 --> 01:05:14,840 Jadi di sini, saya menyatakan, int input, luar pertama. 1278 01:05:14,840 --> 01:05:18,100 Dan kemudian aku hanya mengatakan, melakukan hal ini instruksi sementara input 1279 01:05:18,100 --> 01:05:19,140 kurang dari nol. 1280 01:05:19,140 --> 01:05:20,530 Jadi hits Do pertama. 1281 01:05:20,530 --> 01:05:24,190 Ini akan selalu mengeksekusi ini setidaknya sekali, sehingga akan selalu meminta pengguna 1282 01:05:24,190 --> 01:05:25,960 untuk input setidaknya sekali. 1283 01:05:25,960 --> 01:05:29,390 Dan kemudian mengevaluasi masukan itu, dan itu terjadi di lingkaran. 1284 01:05:29,390 --> 01:05:30,135 Ya, pertanyaan? 1285 01:05:30,135 --> 01:05:32,602 >> SPEAKER 6: Apakah ada cara untuk melakukannya [Tak terdengar] jenis, seperti jika Anda mengatakan, 1286 01:05:32,602 --> 01:05:34,268 GetString, dan seseorang [Tak terdengar] 1287 01:05:34,268 --> 01:05:35,220 apakah ada cara untuk [Tak terdengar] 1288 01:05:35,220 --> 01:05:40,060 >> JOSEPH: Jadi pertanyaannya adalah, apakah ada cara untuk melakukan validasi input jika pengguna 1289 01:05:40,060 --> 01:05:41,850 tidak dimasukkan ke dalam hak jenis variabel? 1290 01:05:41,850 --> 01:05:44,460 Jadi jika kita meminta int dan mereka memberi kita string sebagai gantinya. 1291 01:05:44,460 --> 01:05:49,110 Dan dalam fungsi-fungsi yang kita menerapkan untuk Anda, getInt, GetString di seluruh 1292 01:05:49,110 --> 01:05:52,680 fungsi-fungsi, mereka benar-benar sudah melakukan hal seperti jenis input dasar 1293 01:05:52,680 --> 01:05:54,120 validasi di bawah tenda. 1294 01:05:54,120 --> 01:05:57,390 Jadi jika Anda menggunakan fungsi yang kita memberi Anda, Anda tidak benar-benar harus. 1295 01:05:57,390 --> 01:06:01,380 >> Tetapi jika Anda ingin melihat lebih ke bagaimana Anda benar-benar dapat melakukan itu, Anda dapat melihat 1296 01:06:01,380 --> 01:06:03,360 di bawah tenda di file I/O-- 1297 01:06:03,360 --> 01:06:07,990 tidak mengajukan, standar fungsi I / O seperti membaca dari input standar dan 1298 01:06:07,990 --> 01:06:08,580 output standar. 1299 01:06:08,580 --> 01:06:10,630 Dan Anda bisa mendapatkan rasa yang lebih baik bagaimana Anda bisa melakukan itu. 1300 01:06:10,630 --> 01:06:13,670 >> ROB: Salah satu isu, meskipun, secara khusus dengan contoh Anda 1301 01:06:13,670 --> 01:06:17,070 kata, Anda mengharapkan sebuah string dan saya memasukkan int. 1302 01:06:17,070 --> 01:06:20,110 Bagaimana Anda tahu bedanya antara sengaja menginginkan 1303 01:06:20,110 --> 01:06:23,130 String 123 dibandingkan menginginkan int 123? 1304 01:06:23,130 --> 01:06:29,230 Jadi tali, itu cukup banyak tidak ada validasi, itu hanya apa pun yang mereka 1305 01:06:29,230 --> 01:06:31,600 masuk Anda akan menafsirkan sebagai string. 1306 01:06:31,600 --> 01:06:35,790 >> Int lebih mudah, karena tidak peduli masukan Anda ambil dari pengguna, Anda 1307 01:06:35,790 --> 01:06:37,470 selalu mengambil string. 1308 01:06:37,470 --> 01:06:40,650 Dan sehingga string yang Anda kemudian dapat cek, apakah semua ini 1309 01:06:40,650 --> 01:06:44,218 sebenarnya angka digit? 1310 01:06:44,218 --> 01:06:45,170 >> JOSEPH: OK. 1311 01:06:45,170 --> 01:06:46,420 Setiap pertanyaan tentang loop Do-While? 1312 01:06:46,420 --> 01:06:49,170 >> ROB: Oh, dan ini juga - 1313 01:06:49,170 --> 01:06:55,130 akan kembali ke ruang lingkup, agak umum kesalahan sedang mencoba untuk menggunakan beberapa lokal 1314 01:06:55,130 --> 01:06:59,540 variabel dari dalam ini Do-Sementara lingkaran dalam kondisi ini. 1315 01:06:59,540 --> 01:07:02,850 Dan sebenarnya, jika kita hanya menyingkirkan ini dan mengatakan, int masukan sama 1316 01:07:02,850 --> 01:07:06,990 GetInt, maka compiler akan berteriak kami, karena masukan tidak ada 1317 01:07:06,990 --> 01:07:08,900 di luar lingkup ini kurung kurawal. 1318 01:07:08,900 --> 01:07:10,792 >> JOSEPH: Dan itulah mengapa kita perlu lineup ini di sini. 1319 01:07:10,792 --> 01:07:13,620 1320 01:07:13,620 --> 01:07:14,630 OK. 1321 01:07:14,630 --> 01:07:17,530 Jadi, Anda juga dapat keluar dari lingkaran awal jika Anda ingin. 1322 01:07:17,530 --> 01:07:21,240 Jadi ini adalah cara yang berbeda menerapkan apa yang baru saja kita dilaksanakan. 1323 01:07:21,240 --> 01:07:24,340 Dan alih-alih menggunakan kondisi dalam kurung, kita menggunakan 1324 01:07:24,340 --> 01:07:26,920 Jika pernyataan dalam tubuh loop Do-While. 1325 01:07:26,920 --> 01:07:30,000 >> Dan pada dasarnya, ketika input akhirnya lebih besar dari nol, kita akan 1326 01:07:30,000 --> 01:07:31,000 keluar dari loop. 1327 01:07:31,000 --> 01:07:33,420 Dan jadi kita akan pergi semua jalan ke sini. 1328 01:07:33,420 --> 01:07:37,920 Dan Anda dapat melihat bahwa ini akan mungkin lebih disukai dalam hal ini 1329 01:07:37,920 --> 01:07:39,870 skenario, karena itu sedikit sedikit lebih bersih dan sedikit 1330 01:07:39,870 --> 01:07:41,380 sedikit lebih mudah dibaca. 1331 01:07:41,380 --> 01:07:45,210 Sedangkan ini, Anda semacam memiliki garis tambahan di dalamnya. 1332 01:07:45,210 --> 01:07:47,890 Ini hanya sedikit lebih jelek, Saya kira, dalam arti. 1333 01:07:47,890 --> 01:07:48,530 Ya, pertanyaan? 1334 01:07:48,530 --> 01:07:52,178 >> SPEAKER 4: Akan istirahat hanya mendapatkan Anda keluar dari satu set kawat gigi? 1335 01:07:52,178 --> 01:07:53,080 >> JOSEPH: Benar. 1336 01:07:53,080 --> 01:07:58,100 Jadi pertanyaannya adalah akan pecah hanya membuat Anda keluar dari satu lingkaran? 1337 01:07:58,100 --> 01:07:59,280 Dan jawabannya adalah ya. 1338 01:07:59,280 --> 01:08:04,290 Jadi jika Anda telah bersarang Untuk loop, untuk Sebagai contoh, jika saya memiliki Untuk int I sama dengan 0 1339 01:08:04,290 --> 01:08:09,040 sampai 10 dan kemudian Untuk int J sama dengan 0 sampai 10, jika saya keluar dari batin 1340 01:08:09,040 --> 01:08:12,310 lingkaran, saya masih akan pergi ke loop luar. 1341 01:08:12,310 --> 01:08:15,760 Jadi itu akan terus melakukan operasi di luar. 1342 01:08:15,760 --> 01:08:17,640 Ada pertanyaan tentang hal itu? 1343 01:08:17,640 --> 01:08:18,000 Ya? 1344 01:08:18,000 --> 01:08:21,760 >> SPEAKER 5: Tapi istirahat hanya berfungsi untuk kurung keriting, tidak untuk lainnya 1345 01:08:21,760 --> 01:08:22,230 pernyataan? 1346 01:08:22,230 --> 01:08:22,700 [Tak terdengar] 1347 01:08:22,700 --> 01:08:27,620 >> JOSEPH: Jadi pertanyaannya adalah akan mematahkan hanya berfungsi untuk loop sebagai lawan 1348 01:08:27,620 --> 01:08:29,014 Laporan lain seperti Jika? 1349 01:08:29,014 --> 01:08:32,950 Dan ya, itu terjadi, karena Anda melanggar keluar dari lingkaran, kanan, 1350 01:08:32,950 --> 01:08:33,630 dalam arti. 1351 01:08:33,630 --> 01:08:37,215 >> ROB: Pada sebagian besar kasus, itu ini adalah semacam Jika sesuatu, 1352 01:08:37,215 --> 01:08:37,660 kemudian istirahat. 1353 01:08:37,660 --> 01:08:41,580 Jadi Anda tidak perlu istirahat berlaku untuk Jika yang membungkus di sekitar itu. 1354 01:08:41,580 --> 01:08:45,250 Dan juga, hal ini tidak banyak loop, tapi ingat bahwa switch juga 1355 01:08:45,250 --> 01:08:46,340 rusak dari oleh istirahat. 1356 01:08:46,340 --> 01:08:48,390 Kami melihat istirahat yang digunakan dengan switch sebelumnya. 1357 01:08:48,390 --> 01:08:52,189 >> JOSEPH: Dan Anda juga dapat menggunakannya Sementara di loop dan loop Untuk. 1358 01:08:52,189 --> 01:08:54,560 Ada pertanyaan? 1359 01:08:54,560 --> 01:08:55,830 OK. 1360 01:08:55,830 --> 01:08:57,779 Jadi up berikutnya adalah fungsi. 1361 01:08:57,779 --> 01:09:01,500 Jadi Anda mungkin telah menggunakan salah satu BYOB ini blok dalam proyek Scratch Anda. 1362 01:09:01,500 --> 01:09:04,569 Dan ini pada dasarnya memungkinkan Anda untuk menentukan satu set 1363 01:09:04,569 --> 01:09:05,680 instruksi yang harus diikuti. 1364 01:09:05,680 --> 01:09:09,569 >> Dan apa yang saya maksud dengan itu adalah mari kita berpikir kembali ke matematika, kanan, aljabar. 1365 01:09:09,569 --> 01:09:13,370 Anda memiliki apa yang kita sebut fungsi dari x, beberapa variabel, dan katakanlah ini 1366 01:09:13,370 --> 01:09:16,080 fungsi f dari x sama dengan x ditambah 5. 1367 01:09:16,080 --> 01:09:20,410 Jadi Anda bisa memikirkan f dari x karena hal ini hitam kotak yang mengambil 15 dan kemudian 1368 01:09:20,410 --> 01:09:22,590 menghasilkan 20. 1369 01:09:22,590 --> 01:09:26,630 >> Jadi lebih umum, fungsi adalah sesuatu yang membutuhkan beberapa masukan dan 1370 01:09:26,630 --> 01:09:27,880 kemudian menghasilkan beberapa output. 1371 01:09:27,880 --> 01:09:31,920 1372 01:09:31,920 --> 01:09:32,960 Dan mengapa fungsi yang baik? 1373 01:09:32,960 --> 01:09:35,189 Mereka baik untuk sejumlah alasan. 1374 01:09:35,189 --> 01:09:40,470 Jadi apakah seseorang ingin mengambil bacokan apa organisasi artinya? 1375 01:09:40,470 --> 01:09:42,630 Dalam hal mengapa fungsi yang bermanfaat? 1376 01:09:42,630 --> 01:09:43,090 Ya? 1377 01:09:43,090 --> 01:09:44,735 >> SPEAKER 4: Itu membuat Anda kode lebih mudah dibaca. 1378 01:09:44,735 --> 01:09:45,399 >> JOSEPH: Benar. 1379 01:09:45,399 --> 01:09:47,670 Jadi salah satu hal itu membuat kode Anda lebih mudah dibaca, kan? 1380 01:09:47,670 --> 01:09:53,710 Alih-alih memiliki seperti int x sama dengan x kali x kali x, saya dapat memiliki kubus x, 1381 01:09:53,710 --> 01:09:57,190 yang lebih mudah dibaca dan lebih dimengerti oleh pembaca. 1382 01:09:57,190 --> 01:10:01,150 >> Organisasi juga dalam hal berpisah kode Anda ke dikelola 1383 01:10:01,150 --> 01:10:05,610 bagian, sehingga alih-alih mencoba untuk melaksanakan ini semua dalam satu bagian panjang 1384 01:10:05,610 --> 01:10:09,070 di utama, Anda dapat semacam membaginya menjadi seperti, OK, mari kita menulis fungsi 1385 01:10:09,070 --> 01:10:11,910 untuk kubus sesuatu, mari kita menulis berfungsi untuk persegi sesuatu. 1386 01:10:11,910 --> 01:10:15,950 Dengan cara itu Anda dapat membaginya menjadi kecil, bagian kecil yang dapat Anda menangani 1387 01:10:15,950 --> 01:10:18,944 sebagai lawan untuk mencoba untuk mengatasi masalah besar sekaligus. 1388 01:10:18,944 --> 01:10:21,806 >> ROB: Atau bahkan kecil, bagian-bagian kecil yang Anda dan pasangan bisa mengatasi. 1389 01:10:21,806 --> 01:10:22,283 >> JOSEPH: Ya. 1390 01:10:22,283 --> 01:10:23,855 >> ROB: Jadi, bukannya kedua Anda mencoba untuk menanamkan satu 1391 01:10:23,855 --> 01:10:27,170 berfungsi pada saat yang sama. 1392 01:10:27,170 --> 01:10:28,800 >> JOSEPH: Penyederhanaan. 1393 01:10:28,800 --> 01:10:30,050 Siapapun ingin mengambil menebak? 1394 01:10:30,050 --> 01:10:33,080 1395 01:10:33,080 --> 01:10:33,410 Ya? 1396 01:10:33,410 --> 01:10:34,675 >> SPEAKER 5: Lebih pengulangan. 1397 01:10:34,675 --> 01:10:35,260 >> JOSEPH: Benar. 1398 01:10:35,260 --> 01:10:39,210 Jadi satu hal yang dapat Anda lakukan dengan penyederhanaan adalah bahwa itu semacam di 1399 01:10:39,210 --> 01:10:42,520 baris yang sama seperti re-kegunaan adalah bahwa setelah saya menulis fungsi kubus, saya bisa 1400 01:10:42,520 --> 01:10:45,410 hanya menggunakan yang berulang-ulang lagi dalam program saya bukan mengetik 1401 01:10:45,410 --> 01:10:49,610 x kali x kali x berulang berulang-ulang. 1402 01:10:49,610 --> 01:10:52,980 Dan penyederhanaan di sini juga hanya berarti itu membuat semacam kode Anda 1403 01:10:52,980 --> 01:10:55,900 lebih mudah untuk debug setelah Anda membagi up ini ke dalam fungsi. 1404 01:10:55,900 --> 01:10:58,250 Karena dengan begitu Anda dapat melokalisasi mana masalah Anda semacam ini. 1405 01:10:58,250 --> 01:11:00,910 1406 01:11:00,910 --> 01:11:02,160 Ada pertanyaan? 1407 01:11:02,160 --> 01:11:04,200 1408 01:11:04,200 --> 01:11:06,540 >> Jadi ide lain adalah abstraksi, kan? 1409 01:11:06,540 --> 01:11:07,390 Kotak hitam ini. 1410 01:11:07,390 --> 01:11:11,360 Seperti yang Anda tahu apa getInt tidak untuk menerima input dari user? 1411 01:11:11,360 --> 01:11:12,510 Kami belum benar-benar mengatakan kepada Anda, bukan? 1412 01:11:12,510 --> 01:11:15,670 Semua kita sudah bilang adalah getInt tidak persis apa yang dikatakannya itu tidak. 1413 01:11:15,670 --> 01:11:18,440 Jadi, bahkan jika kita tidak memberitahu Anda bagaimana bekerja, Anda akan tahu. 1414 01:11:18,440 --> 01:11:21,670 >> Jadi dalam kasus ini, ini adalah fungsi quadruple yang tidak 1415 01:11:21,670 --> 01:11:24,520 hal yang berbeda untuk input untuk menghasilkan output. 1416 01:11:24,520 --> 01:11:28,050 Dan Anda bisa empat kali lipat angka dengan mengalikannya dengan empat. 1417 01:11:28,050 --> 01:11:30,790 Atau Anda dapat apa yang kita sebut bit bergeser dengan dua. 1418 01:11:30,790 --> 01:11:32,960 Dan kita akan membahas ini sedikit kemudian. 1419 01:11:32,960 --> 01:11:36,570 Dan tidak perlu tahu bagaimana ini fungsi benar-benar bekerja asalkan 1420 01:11:36,570 --> 01:11:37,640 bekerja seperti yang dinyatakan. 1421 01:11:37,640 --> 01:11:40,740 >> Jadi di bawah tenda, aku bisa seperti, kembali masukan kali 1422 01:11:40,740 --> 01:11:41,690 delapan dibagi dua. 1423 01:11:41,690 --> 01:11:42,510 Dan Anda tidak akan tahu, kan? 1424 01:11:42,510 --> 01:11:44,970 Semua yang perlu Anda ketahui adalah itu melakukan apa yang dikatakannya. 1425 01:11:44,970 --> 01:11:48,070 Jadi itulah hal yang berguna tentang abstraksi. 1426 01:11:48,070 --> 01:11:52,910 >> Dan hal lain adalah semacam ide ini lokalisasi kode Anda ke salah satu 1427 01:11:52,910 --> 01:11:54,280 bagian tertentu. 1428 01:11:54,280 --> 01:11:57,450 Jadi jika Anda memiliki masalah, Anda tidak harus pergi ke seluruh kode Anda mencoba 1429 01:11:57,450 --> 01:11:58,730 untuk memperbaiki di mana masalahnya. 1430 01:11:58,730 --> 01:12:00,990 Jadi dalam hal ini, saya menerapkan kubus salah. 1431 01:12:00,990 --> 01:12:02,820 Saya pikir kubus itu mengalikan oleh tiga. 1432 01:12:02,820 --> 01:12:05,760 >> Jadi dalam hal ini, ini adalah salah satu program yang baru saja telah mengalikan oleh tiga 1433 01:12:05,760 --> 01:12:06,750 di mana-mana. 1434 01:12:06,750 --> 01:12:10,910 Dan ada program lain yang memiliki kubus terfaktor keluar ke fungsi. 1435 01:12:10,910 --> 01:12:14,040 Dan jika saya ingin memperbaiki kesalahan saya di sini, saya harus memperbaiki setiap baris 1436 01:12:14,040 --> 01:12:15,620 kode dalam program ini. 1437 01:12:15,620 --> 01:12:19,190 Sedangkan di sisi lain, jika saya menggunakan fungsi, saya hanya perlu mengubah 1438 01:12:19,190 --> 01:12:20,650 apa yang salah di satu tempat. 1439 01:12:20,650 --> 01:12:25,330 1440 01:12:25,330 --> 01:12:28,730 >> Jadi dalam ilmu komputer, kita memanggil input dan output. 1441 01:12:28,730 --> 01:12:31,640 Input disebut parameter atau argumen, dan output disebut 1442 01:12:31,640 --> 01:12:32,950 kembali nilai-nilai. 1443 01:12:32,950 --> 01:12:39,000 Dan kita akan melihat bagaimana hal ini membantu kita memilah dari mendefinisikan fungsi dalam satu detik. 1444 01:12:39,000 --> 01:12:41,430 Jadi ini adalah definisi fungsi untuk cubing. 1445 01:12:41,430 --> 01:12:45,110 Jadi dibutuhkan masukan, dan kemudian itu kembali nomor kali 1446 01:12:45,110 --> 01:12:47,020 sendiri tiga kali. 1447 01:12:47,020 --> 01:12:48,020 Jadi mari kita memecah ini. 1448 01:12:48,020 --> 01:12:53,090 >> Jadi kita memiliki header fungsi, yang pada dasarnya terdiri dari tiga hal. 1449 01:12:53,090 --> 01:12:56,050 Jadi kita memiliki parameter, yang adalah, seperti yang saya katakan sebelumnya, 1450 01:12:56,050 --> 01:12:57,680 input ke dalam fungsi ini. 1451 01:12:57,680 --> 01:12:59,300 Dan kemudian kita beri nama fungsi. 1452 01:12:59,300 --> 01:13:00,740 Dalam hal ini, itu disebut kubus. 1453 01:13:00,740 --> 01:13:03,860 Dan kemudian kita menentukan apa jenis dari nilai kembalian adalah. 1454 01:13:03,860 --> 01:13:06,760 >> Jadi dalam hal ini, fungsi kubus mengambil dalam integer dan juga 1455 01:13:06,760 --> 01:13:07,890 mengembalikan sebuah integer. 1456 01:13:07,890 --> 01:13:11,510 Jadi jika saya lulus dalam dua, keduanya adalah integer, ia mengembalikan delapan padaku, yang 1457 01:13:11,510 --> 01:13:13,250 adalah bilangan bulat. 1458 01:13:13,250 --> 01:13:15,420 Jadi kembali jenis parameter nama. 1459 01:13:15,420 --> 01:13:16,670 Pertanyaan tentang hal itu? 1460 01:13:16,670 --> 01:13:19,440 1461 01:13:19,440 --> 01:13:24,230 >> Dan kemudian nilai kembali sebenarnya ditentukan di akhir dengan mengatakan kembali 1462 01:13:24,230 --> 01:13:27,540 dan kemudian kembali apa berisi nilai kembali. 1463 01:13:27,540 --> 01:13:30,940 Jadi dalam hal ini, jika kita menempatkan semuanya bersama-sama, fungsi mengambil dalam 1464 01:13:30,940 --> 01:13:35,100 parameter, itu disebut sesuatu, dan ia mengembalikan sesuatu yang jenis 1465 01:13:35,100 --> 01:13:36,350 bahwa kita mengatakan itu akan menjadi. 1466 01:13:36,350 --> 01:13:39,830 1467 01:13:39,830 --> 01:13:41,080 Ada pertanyaan? 1468 01:13:41,080 --> 01:13:43,710 1469 01:13:43,710 --> 01:13:45,080 >> Jadi bagaimana kita menggunakan fungsi? 1470 01:13:45,080 --> 01:13:49,230 Nah, kita menulis fungsi dan kemudian kita menggunakannya dalam program kita, kan? 1471 01:13:49,230 --> 01:13:51,565 Jadi saya menyebutnya kubus, dan maka saya dapat menggunakan kubus. 1472 01:13:51,565 --> 01:13:54,200 >> Tapi apa yang penting untuk dicatat adalah bahwa agar masalah. 1473 01:13:54,200 --> 01:13:58,100 Jika saya memiliki kubus bawah utama, itu akan mengalami kubus. 1474 01:13:58,100 --> 01:14:00,360 Dan pada titik ini, tidak ada disebut kubus dalam program ini, dan itu 1475 01:14:00,360 --> 01:14:02,550 hanya akan menjadi seperti, aku punya tidak tahu apa kubus. 1476 01:14:02,550 --> 01:14:05,060 >> Sehingga akan memberitahu Anda, implisit deklarasi fungsi. 1477 01:14:05,060 --> 01:14:06,690 Itulah kesalahan yang muncul. 1478 01:14:06,690 --> 01:14:10,230 Dan dalam hal ini, kubus di bawah utama, jadi itu tidak akan 1479 01:14:10,230 --> 01:14:12,006 tahu tentang hal itu. 1480 01:14:12,006 --> 01:14:14,724 >> SPEAKER 5: So utama biasanya fungsi terakhir didefinisikan? 1481 01:14:14,724 --> 01:14:17,290 >> JOSEPH: Jadi pertanyaannya adalah, adalah utama biasanya yang terakhir 1482 01:14:17,290 --> 01:14:18,170 hal yang Anda akan menentukan? 1483 01:14:18,170 --> 01:14:19,730 Dan tidak. 1484 01:14:19,730 --> 01:14:22,280 Itu karena kita biasanya suka main berada di atas, kan? 1485 01:14:22,280 --> 01:14:24,640 Karena itulah hal pertama yang Anda ingin membuka programmer yang 1486 01:14:24,640 --> 01:14:25,640 program untuk melihat. 1487 01:14:25,640 --> 01:14:29,950 Dan jadi bagaimana kita memecahkan masalah ini kita ingin utama berada di atas, tetapi 1488 01:14:29,950 --> 01:14:33,750 fungsi yang kita inginkan, kita ingin mereka berada di bawah utama namun dapat menggunakan 1489 01:14:33,750 --> 01:14:34,930 mereka dalam utama? 1490 01:14:34,930 --> 01:14:36,870 >> Nah, kita menggunakan apa yang kita sebut prototipe fungsi. 1491 01:14:36,870 --> 01:14:40,830 Jadi apa prototipe fungsi dasarnya adalah yang pertama kali mengambil apa 1492 01:14:40,830 --> 01:14:45,060 tanda tangan atau header fungsi dari apa yang kita ingin menerapkan ke bawah 1493 01:14:45,060 --> 01:14:47,420 di sini, dan kami letakkan di bagian atas dari sebuah program. 1494 01:14:47,420 --> 01:14:51,400 >> Jadi dalam hal ini, kita katakan bahwa, baik, kemudian dalam program kami, kita akan 1495 01:14:51,400 --> 01:14:55,010 untuk membuat janji untuk menerapkan ini fungsi yang disebut int kubus, yang mengambil 1496 01:14:55,010 --> 01:14:56,260 input integer. 1497 01:14:56,260 --> 01:15:00,870 Jadi sekarang, karena itu adalah di atas utama, utama, itu akan mengatakan, oh, baik, 1498 01:15:00,870 --> 01:15:03,910 kemudian dalam program ini, yang akan menjadi ada sehingga saya bisa merujuk ke sana, jadi saya akan 1499 01:15:03,910 --> 01:15:05,230 hanya membiarkannya pergi melalui untuk saat ini. 1500 01:15:05,230 --> 01:15:07,660 >> Dan kemudian di bagian bawah, kami menerapkan kubus. 1501 01:15:07,660 --> 01:15:11,180 Dan kemudian utama hanya akan mengatakan, dengan baik, akan memilah link 1502 01:15:11,180 --> 01:15:12,250 dua simbol ini bersama-sama. 1503 01:15:12,250 --> 01:15:14,320 Dan kita akan membahas apa yang berarti di kemudian hari. 1504 01:15:14,320 --> 01:15:17,090 Dan sehingga akan tahu bahwa ini adalah fungsi kubus yang seharusnya digunakan. 1505 01:15:17,090 --> 01:15:19,630 1506 01:15:19,630 --> 01:15:23,383 >> ROB: The [Tak terdengar] tentang keinginan utama di bagian bawah atau 1507 01:15:23,383 --> 01:15:24,880 atas, saya telah melihat keduanya. 1508 01:15:24,880 --> 01:15:28,630 Ada hal-hal yang sama seperti untuk menempatkan utama di bagian bawah. 1509 01:15:28,630 --> 01:15:32,520 Tapi begitu proyek akan sangat besar, biasanya utama adalah dalam 1510 01:15:32,520 --> 01:15:34,290 mengajukan semua sendiri. 1511 01:15:34,290 --> 01:15:38,170 Dan pada saat itu, seperti int baris kubus akan - 1512 01:15:38,170 --> 01:15:42,460 dalam stdio.h adalah a bunch baris seperti yang int 1513 01:15:42,460 --> 01:15:44,010 baris masukan kubus int. 1514 01:15:44,010 --> 01:15:50,170 >> Dan begitu mereka prototipe adalah hal yang cenderung dimasukkan ke dalam file header, di 1515 01:15:50,170 --> 01:15:52,140 saat itu, tidak masalah. 1516 01:15:52,140 --> 01:15:54,700 Yah, itu tidak masalah. 1517 01:15:54,700 --> 01:15:56,070 Mereka selalu pergi di atas. 1518 01:15:56,070 --> 01:15:59,490 Dan jika utama bukan file tersendiri, Anda tidak perlu khawatir tentang menempatkan 1519 01:15:59,490 --> 01:16:02,360 prototipe fungsi individual dalam file. 1520 01:16:02,360 --> 01:16:05,370 >> JOSEPH: Dan kita akan mendapatkan itu sedikit bit kemudian ketika Rob mulai berbicara 1521 01:16:05,370 --> 01:16:06,380 tentang kompilasi. 1522 01:16:06,380 --> 01:16:09,480 Dan ada juga perbedaan antara parameter dan argumen. 1523 01:16:09,480 --> 01:16:12,500 Dan parameter hanya apa kita sebut masukan ini ketika 1524 01:16:12,500 --> 01:16:13,820 kita mendefinisikan fungsi. 1525 01:16:13,820 --> 01:16:16,950 Dan kami menyebutnya argumen ketika kita benar-benar menyebarkannya ke fungsi. 1526 01:16:16,950 --> 01:16:19,600 >> Jadi dalam hal ini, ini adalah parameter, seperti yang kita katakan sebelumnya. 1527 01:16:19,600 --> 01:16:24,130 Dan ketika kita benar-benar menggunakannya di sana, kubus x, maka x itu sendiri 1528 01:16:24,130 --> 01:16:25,910 apa yang kita sebut argumen ke fungsi kubus. 1529 01:16:25,910 --> 01:16:28,150 >> ROB: Jadi argumen parameter adalah - 1530 01:16:28,150 --> 01:16:33,270 ada perbedaan ini, sangat bingung bergantian. 1531 01:16:33,270 --> 01:16:37,090 Pada titik ini, bagi saya, itu seperti salah satu kata-kata yang ketika saya melihatnya di 1532 01:16:37,090 --> 01:16:41,190 liar, saya tidak bisa membantu tetapi segera pertanyaan apakah mereka menggunakannya dalam 1533 01:16:41,190 --> 01:16:44,120 konteks yang benar, karena Perbedaan cukup halus sehingga hanya 1534 01:16:44,120 --> 01:16:45,500 semua orang cenderung - 1535 01:16:45,500 --> 01:16:48,530 Aku hampir selalu mengatakan argumen terlepas dari apa yang saya maksud. 1536 01:16:48,530 --> 01:16:51,230 1537 01:16:51,230 --> 01:16:54,630 >> JOSEPH: Dan fungsi juga berguna untuk apa yang kita sebut efek samping. 1538 01:16:54,630 --> 01:16:59,230 Jadi fungsi bisa tidak mengambil input, dan itu juga dapat menghasilkan output tidak ada. 1539 01:16:59,230 --> 01:17:03,280 Jadi dalam kasus ini, saya mendefinisikan subrutin yang tidak memiliki 1540 01:17:03,280 --> 01:17:03,970 nilai kembali. 1541 01:17:03,970 --> 01:17:07,730 Dan dalam rangka untuk menentukan bahwa, kita gunakan apa yang kita sebut kekosongan di sini. 1542 01:17:07,730 --> 01:17:10,890 Dan efek samping dari fungsi ini adalah bahwa hal itu hanya mencetak hal-hal 1543 01:17:10,890 --> 01:17:11,920 keluar ke halaman. 1544 01:17:11,920 --> 01:17:13,840 Ini tidak benar-benar mengambil input, dan itu tidak 1545 01:17:13,840 --> 01:17:15,360 benar-benar menghasilkan output. 1546 01:17:15,360 --> 01:17:18,230 >> Tapi ini bisa berguna dalam arti jika Anda ingin, misalnya, debug 1547 01:17:18,230 --> 01:17:21,530 sesuatu dalam program Anda, jika Anda ingin untuk menulis subrutin kecil yang 1548 01:17:21,530 --> 01:17:25,160 mencetak, katakanlah, isi memori atau sesuatu. 1549 01:17:25,160 --> 01:17:29,800 Dan efek samping ini kadang-kadang berguna di luar konteks 1550 01:17:29,800 --> 01:17:33,010 hanya seperti input dan output. 1551 01:17:33,010 --> 01:17:34,260 Ada pertanyaan? 1552 01:17:34,260 --> 01:17:37,270 1553 01:17:37,270 --> 01:17:44,240 >> Dan untuk mengakhiri segmen tertentu, apa program ini lakukan? 1554 01:17:44,240 --> 01:17:47,420 Aku akan memberikan kalian beberapa detik untuk membacanya. 1555 01:17:47,420 --> 01:17:52,720 1556 01:17:52,720 --> 01:17:56,880 Pada tingkat yang sangat dasar, apa yang ingin kita katakan adalah bahwa itu swap x dan y, kan? 1557 01:17:56,880 --> 01:18:00,090 >> Jadi berapa banyak dari Anda benar-benar berpikir ini akan menukar x dan y? 1558 01:18:00,090 --> 01:18:02,160 Angkat tangan Anda. 1559 01:18:02,160 --> 01:18:02,760 Tidak ada satu. 1560 01:18:02,760 --> 01:18:03,070 OK. 1561 01:18:03,070 --> 01:18:06,720 Siapa yang berpikir bahwa hal itu akan tidak swap x dan y? 1562 01:18:06,720 --> 01:18:09,120 Dan jumlah itu tidak seluruh ruangan. 1563 01:18:09,120 --> 01:18:10,440 Jadi beberapa orang tidak yakin. 1564 01:18:10,440 --> 01:18:10,920 OK. 1565 01:18:10,920 --> 01:18:11,630 Itu wajar. 1566 01:18:11,630 --> 01:18:16,450 >> Jadi, mari kita pergi melalui apa yang terjadi ketika Anda benar-benar memanggil fungsi-fungsi pertama di 1567 01:18:16,450 --> 01:18:18,320 Untuk menjawab pertanyaan ini. 1568 01:18:18,320 --> 01:18:21,430 Jadi ini adalah apa memori semacam terlihat seperti. 1569 01:18:21,430 --> 01:18:23,860 Ini adalah semacam seperti model yang disederhanakan apa memori tampak seperti ketika 1570 01:18:23,860 --> 01:18:24,800 Anda menjalankan sebuah program. 1571 01:18:24,800 --> 01:18:27,270 Jadi ada sesuatu yang disebut stack di sini dan 1572 01:18:27,270 --> 01:18:28,330 sesuatu yang disebut heap. 1573 01:18:28,330 --> 01:18:30,950 Dan ini tumbuh ke arah tengah memori. 1574 01:18:30,950 --> 01:18:33,860 >> Jadi dalam kasus ini, ketika Anda memanggil fungsi, itu 1575 01:18:33,860 --> 01:18:35,680 akan dimasukkan pada stack. 1576 01:18:35,680 --> 01:18:38,900 Lalu apa saja yang terkandung dalam fungsi tetap dalam apa yang kita sebut itu 1577 01:18:38,900 --> 01:18:40,550 Fungsi ini stack frame. 1578 01:18:40,550 --> 01:18:44,500 Dan untuk mendapatkan visualisasi bagus ini, ayo - misalnya, kami memiliki 1579 01:18:44,500 --> 01:18:45,960 program utama sebelumnya. 1580 01:18:45,960 --> 01:18:47,820 Dan dalam utama, kita disebut kubus. 1581 01:18:47,820 --> 01:18:50,650 Jadi utama pertama akan pergi pada stack bingkai, karena itu fungsi pertama 1582 01:18:50,650 --> 01:18:51,640 yang disebut. 1583 01:18:51,640 --> 01:18:55,740 >> Dan kemudian ketika kubus disebut dalam utama, hal itu akan diletakkan di atas main 1584 01:18:55,740 --> 01:18:57,790 dalam memori. 1585 01:18:57,790 --> 01:19:02,090 Jadi apa yang Anda akan melihat di sini adalah kubus yang memiliki parameter dan yang sendiri 1586 01:19:02,090 --> 01:19:02,950 penduduk setempat sendiri. 1587 01:19:02,950 --> 01:19:06,720 Jadi, ketika Anda benar-benar melewati sesuatu untuk fungsi, parameter yang 1588 01:19:06,720 --> 01:19:09,910 mendapat salinan dari apa yang berlalu dalam dari utama. 1589 01:19:09,910 --> 01:19:14,140 >> Dan untuk semacam menjelaskan hal ini, mari kita berjalan melalui sebuah program. 1590 01:19:14,140 --> 01:19:16,960 Jadi kita memiliki stack, ini adalah hanya bagian tumpukan. 1591 01:19:16,960 --> 01:19:21,240 Dan apa yang kita lakukan adalah pertama-tama kita menginisialisasi x dan y untuk satu dan dua. 1592 01:19:21,240 --> 01:19:22,400 Jadi kita memiliki kotak-kotak kecil. 1593 01:19:22,400 --> 01:19:25,310 Mereka duduk di tumpukan utama yang bingkai di stack. 1594 01:19:25,310 --> 01:19:26,580 Mereka berisi satu dan dua. 1595 01:19:26,580 --> 01:19:28,820 >> Sekarang kita sebut swap. 1596 01:19:28,820 --> 01:19:33,940 Apa yang terjadi adalah kami melewati x dan y ke swap, dan swap yang membuat salinan sendiri 1597 01:19:33,940 --> 01:19:36,520 variabel tersebut untuk digunakan dalam frame stack. 1598 01:19:36,520 --> 01:19:39,920 Jadi sekarang di sana, kami memiliki, yang berisi nilai yang x punya, dan b, 1599 01:19:39,920 --> 01:19:41,620 yang berisi nilai yang y punya. 1600 01:19:41,620 --> 01:19:42,670 Jadi satu, dua. 1601 01:19:42,670 --> 01:19:47,130 >> Dan Anda akan melihat bahwa ini adalah terpisah dari x dan y dalam main. 1602 01:19:47,130 --> 01:19:51,390 Jadi sekarang kita buat sementara variabel mengandung. 1603 01:19:51,390 --> 01:19:56,100 Kami menetapkan sama dengan b, sehingga perubahan dari satu sampai dua. 1604 01:19:56,100 --> 01:19:59,340 Dan kemudian kita tentukan b sama untuk temp, yang merupakan salah satu. 1605 01:19:59,340 --> 01:20:01,640 >> Dan kemudian sekarang kita keluar keluar fungsi ini. 1606 01:20:01,640 --> 01:20:04,310 1607 01:20:04,310 --> 01:20:07,410 Ketika Anda keluar dari fungsi, stack frame akan muncul dari tumpukan. 1608 01:20:07,410 --> 01:20:08,270 Kami menyebutnya mendorong. 1609 01:20:08,270 --> 01:20:12,750 Anda mendorong stack frame ke stack dan Anda pop jika dari tumpukan. 1610 01:20:12,750 --> 01:20:16,080 Jadi apa yang terjadi adalah segala sesuatu yang adalah dalam kerangka semacam tumpukan hanya 1611 01:20:16,080 --> 01:20:17,280 naik terbakar. 1612 01:20:17,280 --> 01:20:19,180 Dan sehingga tidak ada lagi. 1613 01:20:19,180 --> 01:20:20,470 >> Tapi apa yang kita perhatikan? 1614 01:20:20,470 --> 01:20:23,690 Kami tidak pernah benar-benar mengubah nilai x dan y, kan? 1615 01:20:23,690 --> 01:20:26,530 Jadi mereka tinggal lokal untuk utama. 1616 01:20:26,530 --> 01:20:29,900 Dan dengan melewatkan hal-hal ke dalam swap, kita sebenarnya tidak pernah berubah nilai-nilai. 1617 01:20:29,900 --> 01:20:31,260 Dan apa yang kita sebut ini? 1618 01:20:31,260 --> 01:20:33,040 Kami menyebutnya passing ini dengan nilai. 1619 01:20:33,040 --> 01:20:36,860 >> Jadi dalam C, ketika Anda melewati hal-hal ke fungsi, melewati mereka dengan nilai dan 1620 01:20:36,860 --> 01:20:40,160 membuat salinan dari mereka untuk fungsi untuk digunakan. 1621 01:20:40,160 --> 01:20:43,980 Dan kita akan belajar tentang sesuatu yang disebut lewat referensi di kemudian hari, tapi itu 1622 01:20:43,980 --> 01:20:45,390 cara Anda dapat memecahkan masalah ini. 1623 01:20:45,390 --> 01:20:47,080 Tapi kita tidak akan khawatir tentang yang sampai nanti. 1624 01:20:47,080 --> 01:20:52,200 >> ROB: Dan sebenarnya, istilah itu, lewat dengan referensi, sehingga C bahkan tidak memiliki 1625 01:20:52,200 --> 01:20:54,270 lewat referensi. 1626 01:20:54,270 --> 01:20:56,760 C secara eksklusif telah lewat nilai. 1627 01:20:56,760 --> 01:20:59,630 Tidak peduli apa yang Anda lakukan, Anda selalu melewati salinan sesuatu. 1628 01:20:59,630 --> 01:21:03,395 Hanya saja, seperti saya semacam disebutkan yang sebelumnya dengan pointer 1629 01:21:03,395 --> 01:21:07,690 dan bahwa string benar-benar hanya empat byte menunjuk ke suatu tempat dalam memori. 1630 01:21:07,690 --> 01:21:11,890 >> Nah, jika saya memiliki string ini dan itu mengatakan bahwa adalah di mana string - 1631 01:21:11,890 --> 01:21:15,470 baik, jika saya memiliki pointer ini untuk ini tempat di memori, maka saya bisa lulus 1632 01:21:15,470 --> 01:21:19,160 salinan itu pointer ke fungsi, dan fungsi yang masih tahu di mana di 1633 01:21:19,160 --> 01:21:19,780 memori itu. 1634 01:21:19,780 --> 01:21:22,950 Jadi kedua pointer ini menunjuk ke tempat yang sama dalam memori, dan 1635 01:21:22,950 --> 01:21:26,460 itulah bagaimana kita akan bisa untuk mengubah hal-hal di luar 1636 01:21:26,460 --> 01:21:29,852 saat stack frame. 1637 01:21:29,852 --> 01:21:31,040 >> JOSEPH: Apakah Anda ingin melakukan kompilasi? 1638 01:21:31,040 --> 01:21:31,820 >> ROB: Tidak, itu 05:30. 1639 01:21:31,820 --> 01:21:32,910 >> JOSEPH: OK. 1640 01:21:32,910 --> 01:21:35,040 Ini adalah 05:30. 1641 01:21:35,040 --> 01:21:35,360 OK. 1642 01:21:35,360 --> 01:21:39,280 Jadi kita akan membahas kompilasi saya kira dalam bagian berikutnya, atau bagian Anda 1643 01:21:39,280 --> 01:21:42,795 Pemimpin akan pada saat itu. 1644 01:21:42,795 --> 01:21:43,272 Dan - 1645 01:21:43,272 --> 01:21:44,630 >> ROB: Ada pertanyaan? 1646 01:21:44,630 --> 01:21:46,760 >> JOSEPH: Ada pertanyaan? 1647 01:21:46,760 --> 01:21:47,150 Ya? 1648 01:21:47,150 --> 01:21:52,469 >> SPEAKER 5: Menggunakan string dari CS50, setiap fungsi yang ingin kita gunakan untuk 1649 01:21:52,469 --> 01:21:53,880 mereka, yang akan menjadi seperti fungsi C. 1650 01:21:53,880 --> 01:21:59,050 CS50 belum hilang dan membuat setiap tambahan. 1651 01:21:59,050 --> 01:22:01,850 >> ROB: Benar. 1652 01:22:01,850 --> 01:22:08,155 Setiap dari C seperti [Tak terdengar], Anda akan menggunakan mereka pada string kami. 1653 01:22:08,155 --> 01:22:12,400 >> JOSEPH: Dan satu hal terakhir yang ingin saya disebutkan adalah bahwa kita memiliki panduan gaya 1654 01:22:12,400 --> 01:22:13,130 untuk kelas ini. 1655 01:22:13,130 --> 01:22:13,360 >> ROB: Oh, yeah. 1656 01:22:13,360 --> 01:22:15,270 >> JOSEPH: Jadi, jika Anda telah datang dari pemrograman latar belakang sebelumnya, Anda 1657 01:22:15,270 --> 01:22:17,750 mungkin memiliki konvensi tertentu ketika Anda sedang menulis kode seperti menempatkan 1658 01:22:17,750 --> 01:22:20,950 kawat gigi pada baris yang sama atau tertentu cara indentasi 1659 01:22:20,950 --> 01:22:22,240 atau penamaan variabel Anda. 1660 01:22:22,240 --> 01:22:26,870 Di kelas ini, kami ingin mengikuti panduan gaya tertentu hanya karena, 1661 01:22:26,870 --> 01:22:31,100 baik, jika Anda pergi keluar dan bekerja di industri, Anda akan diharapkan 1662 01:22:31,100 --> 01:22:34,780 untuk mengikuti panduan gaya perusahaan di mana Anda pergi ke. 1663 01:22:34,780 --> 01:22:38,040 >> Seperti misalnya, Facebook saya pikir memiliki jenis tertentu dari penamaan 1664 01:22:38,040 --> 01:22:38,760 konvensi. 1665 01:22:38,760 --> 01:22:42,570 Dan ada perbedaan antara unta variabel casing dan seperti 1666 01:22:42,570 --> 01:22:44,610 memisahkan mereka dengan garis bawah. 1667 01:22:44,610 --> 01:22:52,170 Dan juga, saya pikir yang paling penting, seperti misalnya, lekukan, kan? 1668 01:22:52,170 --> 01:22:56,440 >> Kami kurung kurawal mulai dari mana kondisi ini, dan mereka 1669 01:22:56,440 --> 01:22:57,730 berada di baris berikutnya. 1670 01:22:57,730 --> 01:23:01,230 Dan kami juga menempatkan kurung kurawal di bahkan jika itu hanya satu baris. 1671 01:23:01,230 --> 01:23:06,100 Dan banyak kali, ada cara untuk melakukan di mana Anda dapat meninggalkan kawat gigi ini 1672 01:23:06,100 --> 01:23:08,380 off jika hanya satu baris di bawah pernyataan Jika. 1673 01:23:08,380 --> 01:23:12,070 Tapi di kelas ini, kami ingin mengikuti panduan gaya tertentu saja sehingga Anda mendapatkan 1674 01:23:12,070 --> 01:23:13,550 digunakan untuk hal semacam itu. 1675 01:23:13,550 --> 01:23:16,410 >> ROB: Ya, dan Gaya 50 akan menegakkan panduan gaya ini, dan kami 1676 01:23:16,410 --> 01:23:18,080 akan menggunakan Style 50 untuk kelas kode Anda. 1677 01:23:18,080 --> 01:23:25,150 Jadi itu membuat segalanya lebih mudah bagi kita dan mudah-mudahan tidak harus membuat hal-hal yang 1678 01:23:25,150 --> 01:23:30,120 jauh lebih buruk bagi Anda diberi gaya standar seharusnya tidak 1679 01:23:30,120 --> 01:23:31,460 realistis. 1680 01:23:31,460 --> 01:23:36,000 >> JOSEPH: Dan akhirnya, untuk menemukan gaya panduan, pergi ke manual.cs50.net/style. 1681 01:23:36,000 --> 01:23:37,725 Dan yeah. 1682 01:23:37,725 --> 01:23:40,575 >> SPEAKER 4: Apakah Anda akan menegakkan setiap karakter per baris? 1683 01:23:40,575 --> 01:23:42,480 >> ROB: Ya. 1684 01:23:42,480 --> 01:23:45,405 >> JOSEPH: Maaf, guys. 1685 01:23:45,405 --> 01:23:47,680 >> ROB: Itu seperti salah satu dari satu-satunya. 1686 01:23:47,680 --> 01:23:50,420 Pada titik ini, saya OK dengan 120. 1687 01:23:50,420 --> 01:23:52,460 Aku baik-baik dengan mengatakan 120 karakter per baris. 1688 01:23:52,460 --> 01:23:53,830 Saya mengerti ada menjadi beberapa batas. 1689 01:23:53,830 --> 01:23:57,130 Saya pikir 80 adalah sangat kecil, tapi kita menegakkan itu. 1690 01:23:57,130 --> 01:24:00,260 >> JOSEPH: Secara pribadi, saya pikir dengan C, 80 karakter lebih OK. 1691 01:24:00,260 --> 01:24:04,160 Setelah Anda mulai mendapatkan ke yang lain bahasa seperti JavaScript dan PHP, tidak 1692 01:24:04,160 --> 01:24:08,860 sangat masuk akal untuk hanya membatasi ke 80 karakter. 1693 01:24:08,860 --> 01:24:09,260 OK. 1694 01:24:09,260 --> 01:24:12,780 Yah, itu bagian yang super. 1695 01:24:12,780 --> 01:24:14,750 Apakah ada yang ingin permen? 1696 01:24:14,750 --> 01:24:16,000 >> SPEAKER 4: Ya. 1697 01:24:16,000 --> 01:24:18,667