1 00:00:00,000 --> 00:00:03,353 >> [MUSIC PLAYING] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Halo, semua orang. 4 00:00:06,050 --> 00:00:07,777 Ini adalah supersection CS50 ini. 5 00:00:07,777 --> 00:00:09,860 Bagian ditugaskan tidak akan mulai seminggu lagi. 6 00:00:09,860 --> 00:00:11,580 Dan hari ini, aku di sini with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: -to sebenarnya lihatlah masalah 9 00:00:14,163 --> 00:00:16,110 menetapkan satu, tentu saja ini minggu pertama material, 10 00:00:16,110 --> 00:00:19,780 membuat Anda berorientasi dengan CS50 IDE, sedikit Linux, sistem operasi yang 11 00:00:19,780 --> 00:00:22,290 berjalan pada IDE, serta melihat beberapa transisi 12 00:00:22,290 --> 00:00:25,730 dari Gores ke C terkemuka sampai masalah menetapkan satu. 13 00:00:25,730 --> 00:00:28,340 >> Jadi tanpa basa-basi lagi, di masalah menetapkan satu, 14 00:00:28,340 --> 00:00:30,520 Anda akan menjadi diperkenalkan ke CS50 IDE, yang 15 00:00:30,520 --> 00:00:33,230 adalah pemrograman berbasis web ini lingkungan yang kita gunakan dalam rangka 16 00:00:33,230 --> 00:00:34,280 untuk menulis program. 17 00:00:34,280 --> 00:00:37,280 Ini telah dirancang untuk terlihat sangat mengingatkan komputer khas 18 00:00:37,280 --> 00:00:39,430 sistem menjalankan operasi sistem yang disebut Linux. 19 00:00:39,430 --> 00:00:42,440 Tapi itu di apa yang disebut awan, yang berarti semua orang di kelas 20 00:00:42,440 --> 00:00:45,100 benar-benar dapat memiliki nya akun sendiri dan menggunakannya, juga. 21 00:00:45,100 --> 00:00:48,950 >> Sehingga sebagian besar dari Anda mungkin tidak pernah digunakan lingkungan Linux sebelum atau mungkin 22 00:00:48,950 --> 00:00:50,447 bahkan lingkungan baris perintah. 23 00:00:50,447 --> 00:00:52,280 Dan baris perintah lingkungan yang berbeda. 24 00:00:52,280 --> 00:00:53,200 Ini semua tekstual. 25 00:00:53,200 --> 00:00:54,730 Ini semua perintah keyboard. 26 00:00:54,730 --> 00:00:59,480 Dan itu tidak mousing, tidak ada ikon, tidak ada jendela dialog, tidak ada menu. 27 00:00:59,480 --> 00:01:00,212 Ini murni teks. 28 00:01:00,212 --> 00:01:01,920 Jadi pada awalnya, itu jenis rasanya seperti langkah 29 00:01:01,920 --> 00:01:04,434 mundur dalam hal kecanggihan. 30 00:01:04,434 --> 00:01:06,600 Tapi itu berakhir menjadi banyak lebih kuat, tentu, 31 00:01:06,600 --> 00:01:08,510 untuk seorang ilmuwan komputer, akhirnya. 32 00:01:08,510 --> 00:01:09,540 >> Jadi mari kita lihat. 33 00:01:09,540 --> 00:01:13,850 Di sini aku di CS50.io, melalui yang Anda dapat login ke CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 Dan banyak seperti di Scratch, ada tiga bidang utama untuk layar ini. 35 00:01:17,414 --> 00:01:20,080 Jadi di sisi kiri, kita memiliki apa yang akan menjadi file browser. 36 00:01:20,080 --> 00:01:22,413 Dan ada folder ini di atas, yang sekarang kosong 37 00:01:22,413 --> 00:01:24,690 karena saya menyingkirkan semua saya file sebelum supersection. 38 00:01:24,690 --> 00:01:27,599 Dan di sanalah kita akan menyimpan file C yang kita tulis. 39 00:01:27,599 --> 00:01:30,890 Di bagian kanan atas, kami memiliki tempat di mana semua kode kita akan bisa ditulis. 40 00:01:30,890 --> 00:01:34,610 Dan memang, jika saya klik ditambah ini, ini akan membiarkan saya memilih New File. 41 00:01:34,610 --> 00:01:38,310 Dan di sini saya bisa mulai menulis kode C atau, benar, sejumlah bahasa lain. 42 00:01:38,310 --> 00:01:42,670 >> Dan kemudian di bagian bawah di mana ia kata jharvard @ ide50-- dan Anda akan 43 00:01:42,670 --> 00:01:45,080 mengatakan sesuatu yang sedikit different-- apa yang disebut? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Jendela terminal. 46 00:01:49,310 --> 00:01:49,570 Ya. 47 00:01:49,570 --> 00:01:51,810 Jadi jendela terminal yang disebut baris perintah 48 00:01:51,810 --> 00:01:55,540 interface yang Anda dapat berinteraksi dengan sistem operasi yang mendasarinya. 49 00:01:55,540 --> 00:01:58,220 Dan untuk saat ini, kita akan menggunakan sangat sedikit dari this-- 50 00:01:58,220 --> 00:02:01,170 hanya untuk mengkompilasi, untuk melihat pesan kesalahan yang kita lihat, 51 00:02:01,170 --> 00:02:02,347 dan untuk menjalankan program-program kami. 52 00:02:02,347 --> 00:02:04,680 Tapi pada akhirnya, kita akan untuk melakukan jauh lebih banyak, juga. 53 00:02:04,680 --> 00:02:07,490 Dan Anda bahkan dapat menginstal perangkat lunak dan mengelola ruang kerja Anda 54 00:02:07,490 --> 00:02:09,066 dalam CS50 IDE, juga. 55 00:02:09,066 --> 00:02:10,440 Tetapi lebih pada lain waktu. 56 00:02:10,440 --> 00:02:12,689 >> Jadi mari kita pergi ke depan dan menulis program yang sangat sederhana hanya 57 00:02:12,689 --> 00:02:15,064 untuk pergi melalui-up hangat hello.c, yang mungkin 58 00:02:15,064 --> 00:02:16,480 program sederhana kita dapat menulis. 59 00:02:16,480 --> 00:02:18,330 Aku sudah membuka tab baru. 60 00:02:18,330 --> 00:02:24,310 Aku akan pergi ke depan dan mengatakan termasuk io.h. standar 61 00:02:24,310 --> 00:02:25,325 Kemudian int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 Dan kemudian printf ("Halo, dunia" backslash n, kutipan dekat, 64 00:02:35,200 --> 00:02:39,480 kurung dekat, dan titik koma. 65 00:02:39,480 --> 00:02:39,990 >> Baiklah. 66 00:02:39,990 --> 00:02:41,700 Jadi sekarang melihat jendela saya adalah judul. 67 00:02:41,700 --> 00:02:44,840 Jadi aku sangat cepat akan naik ke File, Save. 68 00:02:44,840 --> 00:02:46,910 Dan itu penting bahwa Saya sebut ini tidak "halo." 69 00:02:46,910 --> 00:02:49,243 Jadi kesalahan yang sangat umum, terutama dalam masalah menetapkan satu, 70 00:02:49,243 --> 00:02:52,530 adalah untuk sengaja hanya memanggil Anda Program "air" atau "serakah" atau "Mario" 71 00:02:52,530 --> 00:02:53,890 atau "kredit" atau sejenisnya. 72 00:02:53,890 --> 00:02:55,970 Tapi Anda benar-benar ingin membuat Pastikan Anda memiliki ekstensi file 73 00:02:55,970 --> 00:02:58,928 karena ini adalah satu-satunya cara yang compiler dan juga editor kode 74 00:02:58,928 --> 00:03:00,710 tahu bahwa Anda benar-benar menulis kode C. 75 00:03:00,710 --> 00:03:02,280 Jadi biarkan aku pergi ke depan dan klik Simpan. 76 00:03:02,280 --> 00:03:05,710 >> Dan sekarang, juga, apa CS50 IDE telah lakukan bagi kita adalah itu juga 77 00:03:05,710 --> 00:03:07,120 sintaks disorot segalanya. 78 00:03:07,120 --> 00:03:08,822 Jadi itu membuat segalanya sangat berwarna-warni. 79 00:03:08,822 --> 00:03:10,780 Dan seluruh tujuan yang tidak fungsional. 80 00:03:10,780 --> 00:03:14,290 Itu hanya untuk menarik mata saya untuk potongan konseptual berbeda 81 00:03:14,290 --> 00:03:15,310 program ini. 82 00:03:15,310 --> 00:03:17,570 Jadi mari kita pergi ke depan dan kompilasi ini. 83 00:03:17,570 --> 00:03:19,490 Dan saya dapat mengkompilasi ini dalam beberapa cara. 84 00:03:19,490 --> 00:03:22,010 Dan dalam minggu satu, cara lama-sekolah yang kita lakukan 85 00:03:22,010 --> 00:03:26,250 itu benar-benar di perintah line-- "dentang hello.c." 86 00:03:26,250 --> 00:03:27,596 Dan kemudian saya tekan Enter. 87 00:03:27,596 --> 00:03:29,720 Dan tidak ada yang tampaknya terjadi di jendela terminal. 88 00:03:29,720 --> 00:03:32,654 Tapi apa perubahan dalam IDE? 89 00:03:32,654 --> 00:03:35,320 Di mana, lagi, IDE hanya berarti Integrated Development Environment. 90 00:03:35,320 --> 00:03:38,360 Ini adalah cara mewah mengatakan pengembangan terintegrasi ini 91 00:03:38,360 --> 00:03:40,620 lingkungan untuk mengembangkan perangkat lunak. 92 00:03:40,620 --> 00:03:42,477 Jadi apa yang berubah di UI? 93 00:03:42,477 --> 00:03:44,310 Apa yang Anda perhatikan itu berbeda, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: Aku melihat sesuatu di bawah IDE50 folder di sini. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Ya. 96 00:03:47,850 --> 00:03:50,230 Jadi di sini, tidak hanya kita harus "hello.c." 97 00:03:50,230 --> 00:03:53,120 Kami juga memiliki "a.out," yang merupakan jenis nama bodoh untuk suatu program. 98 00:03:53,120 --> 00:03:56,430 Tapi memang, itu adalah nama default untuk Program ketika Anda hanya mengkompilasi kode Anda 99 00:03:56,430 --> 00:03:59,110 dan tidak memberitahu compiler apa file output. 100 00:03:59,110 --> 00:04:01,790 Jadi jika saya ingin menjalankan ini, saya perlu memberitahu compiler-- yang 101 00:04:01,790 --> 00:04:05,340 atau lebih tepatnya, saya harus memberitahu ruang kerja yang saya 102 00:04:05,340 --> 00:04:09,780 ingin menjalankan program yang disebut "a.out." 103 00:04:09,780 --> 00:04:10,550 Memasukkan. 104 00:04:10,550 --> 00:04:12,474 Dan ada "Halo, dunia. "sekarang" ./ ". 105 00:04:12,474 --> 00:04:13,390 sebenarnya penting. 106 00:04:13,390 --> 00:04:16,050 Meskipun biasanya kita hanya menulis nama-nama perintah, 107 00:04:16,050 --> 00:04:19,060 ketika itu program Anda sudah ditulis, Anda ingin mengatakan "./" 108 00:04:19,060 --> 00:04:22,460 karena yang secara eksplisit memberitahu Linux bahwa Anda ingin menjalankan program yang disebut 109 00:04:22,460 --> 00:04:26,930 "a.out" yang dalam hal ini, di mana titik berarti direktori ini bahwa aku saat ini 110 00:04:26,930 --> 00:04:31,600 di, yang kebetulan disebut ruang kerja, "a.out. 111 00:04:31,600 --> 00:04:35,410 Karena jika saya hanya berkata "a.out," Enter, Aku akan mendapatkan "a.out perintah tidak 112 00:04:35,410 --> 00:04:38,035 ditemukan "karena computer-- karena saya menemukan "a.out;" 113 00:04:38,035 --> 00:04:40,910 itu tidak datang dengan computer-- yang tidak tahu di mana mencarinya untuk itu, 114 00:04:40,910 --> 00:04:43,590 meskipun itu benar di bawah hidung saya, sehingga untuk berbicara. 115 00:04:43,590 --> 00:04:44,090 OKE. 116 00:04:44,090 --> 00:04:49,910 Jadi kita bisa mengubah ini untuk menjadi "dentang -o halo hello.c." 117 00:04:49,910 --> 00:04:53,030 Dan jika saya tekan Enter, program apa apakah ini akan output untuk saya? 118 00:04:53,030 --> 00:04:55,710 Apa nama file? 119 00:04:55,710 --> 00:04:57,500 Ya, di belakang. 120 00:04:57,500 --> 00:04:58,479 Betul. "Halo." 121 00:04:58,479 --> 00:05:00,520 Jadi "halo" akan menjadi nama program 122 00:05:00,520 --> 00:05:04,610 disebut demikian karena kita telah menggunakan Argumen baris perintah, yang hanya 123 00:05:04,610 --> 00:05:08,120 cara untuk mengubah perilaku compiler untuk benar-benar keluaran 124 00:05:08,120 --> 00:05:09,450 nama file tertentu. 125 00:05:09,450 --> 00:05:12,400 Dan memang, jika aku tampilannya keluar dan melihat di sini, 126 00:05:12,400 --> 00:05:17,430 sekarang saya tidak hanya "a.out" dan "hello.c" tetapi juga "halo," juga. 127 00:05:17,430 --> 00:05:22,410 Jadi sekarang saya bisa melakukan "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 Dan ada "Halo, dunia." 129 00:05:23,640 --> 00:05:25,640 Tapi lastly-- dan ini sekarang akan konvensi 130 00:05:25,640 --> 00:05:27,590 kita menggunakan seluruh semester, typically-- 131 00:05:27,590 --> 00:05:30,070 adalah Anda juga bisa mengatakan "membuat halo." 132 00:05:30,070 --> 00:05:33,370 Dan memang, itu mengatakan terserah sampai saat ini karena sudah ada. 133 00:05:33,370 --> 00:05:37,860 Biarkan aku pergi ke depan dan menghapus, dengan perintah rm, baik "a.out" - 134 00:05:37,860 --> 00:05:39,644 dan mengatakan "menghapus file yang a.out biasa?" 135 00:05:39,644 --> 00:05:41,810 Itu hanya berarti, yang Anda Yakin ingin menghapusnya? 136 00:05:41,810 --> 00:05:42,880 Aku akan mengatakan ya. 137 00:05:42,880 --> 00:05:46,690 Dan kemudian aku akan menghapus "halo" tapi tidak "hello.c." 138 00:05:46,690 --> 00:05:49,920 Aku akan mengatakan "ya" secara eksplisit, tapi "y" cukup, juga. 139 00:05:49,920 --> 00:05:52,140 >> Dan sekarang perhatikan jika saya ketik ls-- yang, ingat, 140 00:05:52,140 --> 00:05:55,540 berarti list-- itu daftar semua dari file dalam folder saya. 141 00:05:55,540 --> 00:05:57,850 Dan memang, jika aku tampilannya dan melihat kiri atas, 142 00:05:57,850 --> 00:05:59,730 menegaskan bahwa apa yang dalam folder ini, bahkan 143 00:05:59,730 --> 00:06:04,990 meskipun itu dicap sebagai IDE50 di sini dan tidak ruang kerja, itu hanya "hello.c." 144 00:06:04,990 --> 00:06:09,152 Jadi sekarang di sini, jika saya jangan "membuat halo," Enter, 145 00:06:09,152 --> 00:06:12,360 sekarang saya melihat perintah lebih lama tapi perintah yang lebih canggih yang akan 146 00:06:12,360 --> 00:06:13,940 untuk menjadi berguna dalam minggu-minggu yang akan datang. 147 00:06:13,940 --> 00:06:16,720 Dan sekarang saya dapat mengatakan "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Jadi mari kita tur singkat Perintah beberapa lainnya Linux. 149 00:06:19,257 --> 00:06:21,840 Lalu mengapa kita tidak mengambil langkah kembali dan benar-benar melihat C lebih 150 00:06:21,840 --> 00:06:25,020 umumnya, transisi dari Scratch ke C, dan kemudian menyimpulkan dengan melihat 151 00:06:25,020 --> 00:06:27,305 pada masalah pertama diatur dalam C. Baiklah. 152 00:06:27,305 --> 00:06:30,430 Jadi aku akan pergi ke depan dan hanya bersih ruang kerja saya dengan Control-L hanya 153 00:06:30,430 --> 00:06:31,429 untuk menjaga layar rapi. 154 00:06:31,429 --> 00:06:33,520 Tapi itu tidak memiliki fungsional berdampak sebaliknya. 155 00:06:33,520 --> 00:06:35,820 >> Ingat yang kita lihat beberapa perintah sekarang. 156 00:06:35,820 --> 00:06:39,900 Jadi kita lihat dentang, yang umumnya Anda tidak perlu mengeksekusi secara manual lagi. 157 00:06:39,900 --> 00:06:41,650 Kami bukannya akan menggunakan make. 158 00:06:41,650 --> 00:06:45,290 Tapi kita juga melihat ls, yang menunjukkan daftar file dalam direktori saya. 159 00:06:45,290 --> 00:06:48,750 Dan sekarang mengapa there-- ada yang dua file sekarang, "halo" dan "hello.c." 160 00:06:48,750 --> 00:06:52,240 Mengapa ada bintang atau tanda bintang setelah "Halo"? 161 00:06:52,240 --> 00:06:54,900 Apa yang menunjukkan, berdasarkan pada apa yang kita lihat dalam minggu satu? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Apa yang kamu pikirkan? 164 00:07:00,400 --> 00:07:02,742 Apa bintang menandakan? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- program "hello"? 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Hello *". 167 00:07:05,530 --> 00:07:06,330 Ya. 168 00:07:06,330 --> 00:07:07,760 Oh ya? 169 00:07:07,760 --> 00:07:08,639 Oh, dieksekusi. 170 00:07:08,639 --> 00:07:09,180 Betul. 171 00:07:09,180 --> 00:07:10,890 Jadi itu berarti bahwa "halo" adalah eksekusi. 172 00:07:10,890 --> 00:07:13,430 Jadi memang, itu sebabnya Aku bisa melakukan "./hello." 173 00:07:13,430 --> 00:07:13,930 Baiklah. 174 00:07:13,930 --> 00:07:15,179 Jadi apa lagi yang bisa saya lakukan di sini? 175 00:07:15,179 --> 00:07:17,290 Nah, ternyata saya bisa juga membuat direktori. 176 00:07:17,290 --> 00:07:20,924 Jadi biarkan aku pergi ke depan dan menciptakan, misalnya, "pset1" direktori. 177 00:07:20,924 --> 00:07:23,590 Dan masalah mengatur spesifikasi akan memiliki Anda melakukan hal ini, 178 00:07:23,590 --> 00:07:25,260 sehingga Anda tidak perlu mengingat hari ini. 179 00:07:25,260 --> 00:07:27,340 Tapi "mkdir pset1" tampaknya tidak memiliki dampak. 180 00:07:27,340 --> 00:07:30,540 Tapi sekali lagi, tidak ada pesan kesalahan umumnya merupakan hal yang baik. 181 00:07:30,540 --> 00:07:34,060 Jadi jika saya ketik "ls" sekarang-- ah, sekarang Saya memiliki sebuah file executable yang disebut 182 00:07:34,060 --> 00:07:36,570 "Halo," file C disebut "hello.c." 183 00:07:36,570 --> 00:07:40,860 Dan kemudian garis miring tertinggal, sehingga untuk berbicara, berarti bahwa ini adalah sebuah direktori. 184 00:07:40,860 --> 00:07:42,510 >> Jadi memang, sekarang saya ingin membukanya. 185 00:07:42,510 --> 00:07:45,730 Dan saya tidak klik dua kali di atasnya seperti dalam GUI, lingkungan grafis. 186 00:07:45,730 --> 00:07:48,550 Saya bukannya mengatakan "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Memasukkan. 188 00:07:49,640 --> 00:07:53,100 Tidak ada yang menarik tampaknya memiliki terjadi kecuali cepat kecilku 189 00:07:53,100 --> 00:07:57,300 sini-ini adalah cara Linux mengingatkan saya di mana saya, jadi folder apa yang terbuka. 190 00:07:57,300 --> 00:08:00,080 Itu hanya mengatakan secara eksplisit sebagai lawan grafis. 191 00:08:00,080 --> 00:08:05,100 Dan jika saya ketik "ls," mengapa saya melihat lain meminta segera, menurut Anda, 192 00:08:05,100 --> 00:08:07,269 ketika saya daftar isi pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Anda mungkin tidak memiliki apa-apa di sana. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Ya. 195 00:08:09,630 --> 00:08:11,510 Jadi kita belum jelas menciptakan apa pun di sana 196 00:08:11,510 --> 00:08:13,150 karena saya baru saja membuat direktori. 197 00:08:13,150 --> 00:08:17,690 Sekarang, jika saya ingin membuat file-- untuk Misalnya, saya bisa membuat file baru. 198 00:08:17,690 --> 00:08:20,190 Dan kemudian aku bisa pergi ke Simpan dan simpan sebagai, 199 00:08:20,190 --> 00:08:23,090 seperti, "mario.c" jika Anda melakukan edisi standar pset satu. 200 00:08:23,090 --> 00:08:27,610 Dan kemudian, seperti Mac atau PC, hanya pilih folder "pset1, Simpan. 201 00:08:27,610 --> 00:08:28,740 Dan sekarang file kosong. 202 00:08:28,740 --> 00:08:31,160 Tapi mari kita memperbesar lagi untuk kedua. 203 00:08:31,160 --> 00:08:32,470 Mari kita lakukan ls sini. 204 00:08:32,470 --> 00:08:34,470 Sekarang kita melihat "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Jadi ada beberapa perintah lain yang yang layak mengingat lebih time-- 206 00:08:37,850 --> 00:08:41,200 jelas, atau Control-L adalah apa yang telah saya telah memukul; mkdir kita lihat; 207 00:08:41,200 --> 00:08:45,240 rm kita lihat, juga, yang untuk menghapus atau menghapus file. 208 00:08:45,240 --> 00:08:49,310 Hati-hati Anda dapat also-- dan jika Anda melihat tutorial online, Anda akan rm-rf 209 00:08:49,310 --> 00:08:52,630 adalah cara yang sangat umum mengatakan menghapus folder yang memiliki barang-barang di dalamnya. 210 00:08:52,630 --> 00:08:54,280 Hanya menjadi super, super hati-hati. 211 00:08:54,280 --> 00:08:58,780 rf berarti rekursif menghapus apa pun itu 212 00:08:58,780 --> 00:09:01,150 Anda mencoba untuk menghapus dan secara paksa menghapusnya. 213 00:09:01,150 --> 00:09:04,630 Jadi cara rekursif jika folder dengan folder dengan folder dengan folder, 214 00:09:04,630 --> 00:09:05,690 menghapus semua dari mereka. 215 00:09:05,690 --> 00:09:08,680 Dan secara paksa berarti bahkan tidak tanya saya ya atau tidak, aku yakin? 216 00:09:08,680 --> 00:09:11,960 Jadi ini adalah cara yang super berbahaya menghapus banyak hal dengan cepat. 217 00:09:11,960 --> 00:09:17,210 Tapi beware-- terlalu sering melakukan sebuah pemberani mahasiswa sengaja menghapus, katakanlah, pset 218 00:09:17,210 --> 00:09:18,000 satu, misalnya. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: Dan jika mereka hanya melakukan r, mereka akan 220 00:09:19,833 --> 00:09:21,870 bertanya kepada mereka tentang setiap file. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: Mana yang cukup menjengkelkan. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Ya. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Jadi itu sebabnya begitu banyak dari kita, diri termasuk, 224 00:09:25,813 --> 00:09:27,070 berada di kebiasaan menggunakan rf. 225 00:09:27,070 --> 00:09:27,861 Tapi itu berbahaya. 226 00:09:27,861 --> 00:09:29,010 Jadi pembeli berhati-hati. 227 00:09:29,010 --> 00:09:31,050 Dan kemudian mv adalah jenis menarik bernama. 228 00:09:31,050 --> 00:09:33,600 Jadi ini adalah perintah memindahkan, yang terasa sedikit aneh 229 00:09:33,600 --> 00:09:37,260 karena Anda memang bisa menggunakannya untuk memindahkan file dari satu tempat ke tempat lain. 230 00:09:37,260 --> 00:09:39,970 Misalnya, anggaplah bahwa saya kacau. 231 00:09:39,970 --> 00:09:43,660 Misalkan saya buat file baru untuk pset tersebut. 232 00:09:43,660 --> 00:09:46,320 Dan disimpan sebagai "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Tapi kira saya sengaja simpan di IDE50-- jadi di ruang kerja saya sendiri 234 00:09:49,970 --> 00:09:51,580 dan tidak di pset1. 235 00:09:51,580 --> 00:09:53,960 >> Anda dapat melihat lebih banyak di kiri atas. 236 00:09:53,960 --> 00:09:55,284 Ada "greedy.c." 237 00:09:55,284 --> 00:09:56,450 Dan ada beberapa solusi. 238 00:09:56,450 --> 00:09:58,324 Jadi satu, saya dapat menggunakan cara yang ramah super user 239 00:09:58,324 --> 00:09:59,740 hanya menyeret dan menjatuhkannya. 240 00:09:59,740 --> 00:10:01,910 Dan itu akan benar-benar memperbaiki masalah ini. 241 00:10:01,910 --> 00:10:04,967 Tapi hari ini, kami mencoba untuk melihat cara yang lebih misterius tapi kuat 242 00:10:04,967 --> 00:10:05,550 untuk melakukan hal ini. 243 00:10:05,550 --> 00:10:07,880 Jadi biarkan aku mengambil "ls" di pset1. 244 00:10:07,880 --> 00:10:09,690 Dan aku hanya melihat "mario.c." 245 00:10:09,690 --> 00:10:13,450 Biarkan aku pergi ke depan dan melakukan "cd ..". 246 00:10:13,450 --> 00:10:15,320 Jadi CD lagi adalah direktori perubahan. 247 00:10:15,320 --> 00:10:18,130 ".." Berarti apa, meskipun? 248 00:10:18,130 --> 00:10:21,100 Terakhir kali aku berkata "cd pset1 "untuk masuk ke pset1. 249 00:10:21,100 --> 00:10:24,360 Jadi ketika saya mengatakan "cd ..", apa yang saya lakukan? 250 00:10:24,360 --> 00:10:24,910 Ke belakang. 251 00:10:24,910 --> 00:10:25,150 Ya. 252 00:10:25,150 --> 00:10:26,750 >> Jadi itu akan disebut orang tua. 253 00:10:26,750 --> 00:10:29,730 Pergi satu tingkat atas, seperti keluar dari folder. 254 00:10:29,730 --> 00:10:30,500 Jadi Enter. 255 00:10:30,500 --> 00:10:31,900 Dan memang, lihat apa yang terjadi. 256 00:10:31,900 --> 00:10:37,070 Itu pindah saya hanya ke ruang kerja bukannya dari ke pset1, yang di ruang kerja. 257 00:10:37,070 --> 00:10:39,710 Dan jika saya ketik "ls", ada sejumlah hal. 258 00:10:39,710 --> 00:10:41,650 Dalam ada "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Jadi sekarang saya menggunakan mv untuk benar-benar bergerak "greedy.c" ke pset1. 260 00:10:48,720 --> 00:10:51,120 Dan begitu banyak perintah Linux bekerja persis seperti ini. 261 00:10:51,120 --> 00:10:54,470 Mereka tidak mengambil argumen atau mereka mengambil satu argumen atau mereka mengambil dua baris perintah 262 00:10:54,470 --> 00:10:55,449 argumen dan sebagainya. 263 00:10:55,449 --> 00:10:57,240 Dan dalam hal ini, itu harfiah melakukan apa 264 00:10:57,240 --> 00:11:01,670 ia mengatakan, meskipun succinctly-- bergerak greedy.c ke pset1. 265 00:11:01,670 --> 00:11:02,310 Memasukkan. 266 00:11:02,310 --> 00:11:03,310 Sepertinya tidak ada yang terjadi. 267 00:11:03,310 --> 00:11:06,180 Tapi jika saya melakukan ls lagi, serakah hilang. 268 00:11:06,180 --> 00:11:12,437 Dan jika saya melakukan "cd pset1", Enter, dan kemudian ls lagi, sekarang di tempat yang tepat. 269 00:11:12,437 --> 00:11:14,270 Sebagai samping, jika untuk beberapa reason-- terutama 270 00:11:14,270 --> 00:11:16,194 jika Anda memiliki intermiten konektivitas jaringan 271 00:11:16,194 --> 00:11:18,360 atau Anda berjalan di sekitar kampus dengan tutup laptop Anda 272 00:11:18,360 --> 00:11:20,180 ditutup dan kemudian membukanya lagi dan ruang kerja Anda 273 00:11:20,180 --> 00:11:21,730 tampaknya agak tidak sinkron, bukan masalah besar. 274 00:11:21,730 --> 00:11:23,646 Hanya ulang browser Anda jendela, dan itu harus 275 00:11:23,646 --> 00:11:26,339 resync sehingga kiri File Browser tampak persis 276 00:11:26,339 --> 00:11:27,380 seperti jendela terminal. 277 00:11:27,380 --> 00:11:27,921 Tidak perlu khawatir. 278 00:11:27,921 --> 00:11:31,460 Jika ragu, kembali halaman tersebut, sehingga Selama Anda telah menyimpan file sudah. 279 00:11:31,460 --> 00:11:31,960 OKE. 280 00:11:31,960 --> 00:11:34,710 Jadi mv juga dapat digunakan untuk mengubah nama file. 281 00:11:34,710 --> 00:11:36,760 Dan mari kita lihat perintah ini akhir di sini. 282 00:11:36,760 --> 00:11:39,950 Jadi suppose-- dan ini Super umum, terlalu, sejak dini. 283 00:11:39,950 --> 00:11:46,400 Beberapa siswa kadang-kadang membuat file disebut, mari say-- apa satu sama lain? 284 00:11:46,400 --> 00:11:47,730 Seperti "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Jadi saya hanya akan berteriak, untuk tanpa alasan, di semua topi. 286 00:11:51,080 --> 00:11:53,190 Tapi ini bukan Nama yang benar untuk file 287 00:11:53,190 --> 00:11:56,660 jika hanya karena masalah kita mengatur spesifikasi tidak memberitahu Anda 288 00:11:56,660 --> 00:11:59,430 untuk menyimpan file seperti semua topi "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Sebaliknya, kami berharap "water.c" dalam huruf kecil. 290 00:12:01,320 --> 00:12:03,140 Dan, pada kenyataannya, ini adalah bermasalah karena check50, 291 00:12:03,140 --> 00:12:04,370 program Anda akan untuk bertemu di masalah 292 00:12:04,370 --> 00:12:07,350 menetapkan satu yang secara otomatis tes kebenaran kode Anda 293 00:12:07,350 --> 00:12:11,615 akan berteriak pada Anda jika tidak bisa menemukan "water.c" dalam semua huruf kecil. 294 00:12:11,615 --> 00:12:12,712 >> Jadi saya harus memperbaiki ini. 295 00:12:12,712 --> 00:12:14,920 Begitu banyak cara yang berbeda untuk melakukan hal ini, yang pertama 296 00:12:14,920 --> 00:12:18,330 akan ke Control-klik atau klik kanan nama file dan hanya mengubah Rename. 297 00:12:18,330 --> 00:12:19,740 Benar-benar baik untuk melakukan itu. 298 00:12:19,740 --> 00:12:21,820 Tapi sekali lagi, hari ini, mari kita melakukannya sedikit lebih menarik. 299 00:12:21,820 --> 00:12:26,680 Mari kita gunakan mv untuk mengubah "WATER.C" untuk "water.c." 300 00:12:26,680 --> 00:12:30,690 Sehingga Anda juga dapat menggunakan argumen pertama untuk mengganti nama ke argumen kedua 301 00:12:30,690 --> 00:12:34,455 jika argumen kedua tidak, di Bahkan, folder atau nama direktori. 302 00:12:34,455 --> 00:12:35,120 >> Baiklah. 303 00:12:35,120 --> 00:12:39,560 Dan terakhir, sebuah trick-- sedikit jadi aku di saya direktori kerja saat ini. 304 00:12:39,560 --> 00:12:43,660 Jika saya ingin masuk ke pset satu, Aku pasti bisa mengetik "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Tapi begitu membosankan untuk mengetik "pset1" atau lagi nama file atau nama direktori 306 00:12:47,260 --> 00:12:47,980 masih. 307 00:12:47,980 --> 00:12:51,960 Jadi sangat sering di Linux, apa Anda bisa lakukan adalah mulai mengetik "pse" 308 00:12:51,960 --> 00:12:56,100 dan hanya bosan, tekan Tab, dan membiarkan sosok komputer itu untuk Anda. 309 00:12:56,100 --> 00:12:58,190 Super membantu untuk masuk ke kebiasaan itu. 310 00:12:58,190 --> 00:13:01,079 Satu-satunya adalah jika Anda memiliki beberapa file atau folder yang dimulai 311 00:13:01,079 --> 00:13:02,870 dengan huruf "p" atau "ps," Anda mungkin memiliki 312 00:13:02,870 --> 00:13:05,525 mengetik beberapa sebelum komputer tahu apa yang harus dilakukan. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Kami ingin jalan pintas. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: Ini akan menghemat begitu banyak waktu. 315 00:13:08,695 --> 00:13:11,930 Dan juga, seperti yang kita katakan dalam kuliah, Anda dapat menggulir ke atas dalam sejarah, atas dan bawah, 316 00:13:11,930 --> 00:13:15,461 untuk menemukan baru-baru ini dieksekusi perintah, juga. 317 00:13:15,461 --> 00:13:15,960 Baiklah. 318 00:13:15,960 --> 00:13:20,904 Jadi sekarang, mari kita mengalihkan perhatian kita kembali untuk sebuah program sederhana, halo dunia. 319 00:13:20,904 --> 00:13:22,195 Jadi kami telah menyusun ini persis. 320 00:13:22,195 --> 00:13:24,050 Dan sekarang, mengapa tidak kita mengambil lihat pada tipe data 321 00:13:24,050 --> 00:13:26,776 dan kemudian transisi dari beberapa sesuai blok Scratch untuk C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Awesome. 323 00:13:27,400 --> 00:13:30,031 Jadi sekarang Anda sudah mulai menulis program di C, 324 00:13:30,031 --> 00:13:32,530 kita akan mulai berbicara tentang tipe data dan variabel. 325 00:13:32,530 --> 00:13:37,570 Jadi beberapa jenis data yang Anda ingin tahu mulai sekarang 326 00:13:37,570 --> 00:13:39,400 adalah orang-orang yang disorot dengan warna biru. 327 00:13:39,400 --> 00:13:42,420 Jadi kita memiliki int pertama, yang merupakan singkatan dari bilangan bulat. 328 00:13:42,420 --> 00:13:46,075 Dan yang memegang bilangan bulat, seperti yang Anda mungkin guessed-- sehingga 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 dan setiap bilangan bulat lainnya yang dapat Anda pikirkan. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: Dan juga negatif. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: Dan juga yang negatif, ya. 332 00:13:50,220 --> 00:13:51,450 Dan 0. 333 00:13:51,450 --> 00:13:54,250 Kemudian kita memiliki mengapung, yang yang angka floating point. 334 00:13:54,250 --> 00:13:58,360 Jadi itu semua bilangan real yang memiliki poin desimal. 335 00:13:58,360 --> 00:14:03,960 Jadi 5.0, 5.2, dan bahkan lebih digit setelah titik desimal, 336 00:14:03,960 --> 00:14:05,620 juga, dan juga yang negatif. 337 00:14:05,620 --> 00:14:07,530 Lalu kami memiliki arang yang karakter. 338 00:14:07,530 --> 00:14:10,240 Jadi saya pikir kita berbicara tentang ini di kuliah ini. 339 00:14:10,240 --> 00:14:15,682 Tapi kami memiliki surat-surat, untuk example-- A, B, C-- yang dapat disimpan sebagai char. 340 00:14:15,682 --> 00:14:18,390 Tapi kemudian kita memiliki simbol lebih banyak yang dapat disimpan sebagai char. 341 00:14:18,390 --> 00:14:22,380 Dan orang-orang yang disimpan sebagai ASCII. 342 00:14:22,380 --> 00:14:25,280 >> Dan kemudian kita memiliki bool, yang Booleans. 343 00:14:25,280 --> 00:14:29,067 Dan mereka mengevaluasi untuk Benar atau Palsu atau 1 dan 0, masing-masing. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: Dan ingat bahwa bool berasal dari perpustakaan CS50. 345 00:14:31,650 --> 00:14:33,300 Jadi itu tidak dibangun ke C, tapi itu super berguna 346 00:14:33,300 --> 00:14:34,850 untuk memiliki gagasan yang benar dan yang salah. 347 00:14:34,850 --> 00:14:36,990 Dan meskipun Anda mungkin think-- menyenangkan fakta. 348 00:14:36,990 --> 00:14:43,700 Sebuah bool teknis perlu berapa banyak bit, benar-benar, untuk mewakili Benar vs Palsu? 349 00:14:43,700 --> 00:14:47,910 Berapa banyak bit yang Anda pikir Anda akan perlu, maksimal? 350 00:14:47,910 --> 00:14:48,790 Ya, hanya satu. 351 00:14:48,790 --> 00:14:52,077 Jadi ternyata bahwa C tidak bisa memberikan Anda hanya satu bit. 352 00:14:52,077 --> 00:14:54,160 Unit terkecil dari ukuran Anda bisa mendapatkan delapan. 353 00:14:54,160 --> 00:14:57,090 Jadi itu adalah boros sedikit mereka Anda menggunakan seluruh byte, atau delapan bit, 354 00:14:57,090 --> 00:14:58,340 untuk mewakili Benar atau Salah. 355 00:14:58,340 --> 00:15:01,807 Tapi itu hanya cara itu diimplementasikan dalam C oleh perpustakaan CS50. 356 00:15:01,807 --> 00:15:04,890 MARIA: Dan kemudian orang-orang yang kita tidak akan berbicara tentang sebagai ekstensif 357 00:15:04,890 --> 00:15:08,060 tepat sekarang-- ganda, itu sudah mengapung lebih besar. 358 00:15:08,060 --> 00:15:09,811 Panjang panjang dan pendek juga untuk bilangan bulat. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: Memang. 360 00:15:10,643 --> 00:15:13,190 Dalam edisi hacker dari pset satu, kita benar-benar menggunakan yang lama. 361 00:15:13,190 --> 00:15:15,801 Tapi untuk edisi standar, seharusnya tidak diperlukan. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 OKE. 364 00:15:17,361 --> 00:15:20,110 Jadi operators-- harus Anda mungkin akrab dengan sebagian besar. 365 00:15:20,110 --> 00:15:22,620 Selain itu, +; pengurangan, -. 366 00:15:22,620 --> 00:15:24,070 Untuk perkalian, kita memiliki *. 367 00:15:24,070 --> 00:15:25,900 Jadi tidak X yang kita biasanya menggunakan. 368 00:15:25,900 --> 00:15:27,840 Divisi, kita memiliki garis miring terbalik. 369 00:15:27,840 --> 00:15:31,380 Dan modulo adalah operator terakhir kami yang kita akan berbicara tentang sekarang. 370 00:15:31,380 --> 00:15:35,610 Ini adalah operator yang memungkinkan kita untuk mengambil sisa divisi. 371 00:15:35,610 --> 00:15:40,630 Jadi jika kita memiliki 4% 2, 4 dibagi oleh 2 adalah 2 dengan sisa 0. 372 00:15:40,630 --> 00:15:41,740 Jadi 4% 2 adalah 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 adalah 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 adalah 4, karena Anda bisa menebak. 375 00:15:44,870 --> 00:15:48,860 Dan ingat ketika menggunakan semua ini operator untuk menggunakan aturan Pemdas. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Jadi harus jelas, jika Anda melakukan 4% 2, mengapa adalah bahwa 0, tepatnya? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Karena 4 dibagi dengan 2 adalah 2 dengan sisa 0. 378 00:15:57,480 --> 00:16:00,752 Jadi modulo memberi kita yang sisanya sebagai bertentangan dengan hasil pembagian. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: Dan memang, apa yang akan kita temukan ini bermanfaat 380 00:16:02,960 --> 00:16:05,640 adalah bahwa dalam beberapa masalah itu belum tentu salah, 381 00:16:05,640 --> 00:16:08,040 jika Anda ingin memiliki Pengaruh membatasi diri 382 00:16:08,040 --> 00:16:10,720 ke berbagai nomor seperti 0 melalui sesuatu, 383 00:16:10,720 --> 00:16:13,904 Anda dapat menggunakan modulo untuk membungkus di sekitar lebih awal dari seperti 2 miliar 384 00:16:13,904 --> 00:16:16,320 atau 4 miliar nilai yang telah kita bicarakan dalam kuliah. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Ya. 386 00:16:16,870 --> 00:16:19,429 Dan bahkan dalam "serakah" kita mungkin. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Ya, di Masalah menetapkan satu, juga. 388 00:16:21,345 --> 00:16:22,520 MARIA: Ya, bagus. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Baik petunjuk. 390 00:16:24,340 --> 00:16:25,750 MARIA: Maaf. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- sehingga untuk operator Boolean, 392 00:16:28,590 --> 00:16:31,770 kita akan berbicara tentang semua dari bahwa Anda lihat di sini. 393 00:16:31,770 --> 00:16:35,310 Jadi sekarang, kita memiliki dua tanda-tanda yang sama terdaftar untuk equals. 394 00:16:35,310 --> 00:16:38,650 Jadi mereka adalah untuk perbandingan. 395 00:16:38,650 --> 00:16:40,830 Sejauh ini, kami hanya melihat satu sama dengan tanda. 396 00:16:40,830 --> 00:16:44,870 Saat itulah kita menetapkan nilai ke variabel. 397 00:16:44,870 --> 00:16:50,160 Jadi jika kita telah melihat int n = 5, maka kami sudah ditugaskan 5 ke variabel n. 398 00:16:50,160 --> 00:16:55,600 Tetapi jika kita ingin menggunakan == untuk perbandingan, kita dapat memeriksa apakah n == 5. 399 00:16:55,600 --> 00:16:58,310 Dan jika n == 5, maka itu benar. 400 00:16:58,310 --> 00:17:01,950 >> Operator sehingga Boolean memungkinkan kita, pada dasarnya, 401 00:17:01,950 --> 00:17:04,670 untuk mengevaluasi Boolean ekspresi untuk Benar atau Salah. 402 00:17:04,670 --> 00:17:07,819 Jadi tidak equals-- kita memiliki tanda seru dan sederajat. 403 00:17:07,819 --> 00:17:14,240 Jadi kita juga bisa memeriksa apakah n tidak sama 5-- sehingga n! = 5. 404 00:17:14,240 --> 00:17:17,640 Kurang dari, kurang dari atau sama dengan, lebih besar dari, lebih besar dari atau sama dengan, 405 00:17:17,640 --> 00:17:20,720 dan kemudian kita memiliki logis DAN dan logika OR. 406 00:17:20,720 --> 00:17:24,060 Dan mereka memungkinkan kita untuk mengevaluasi beberapa ekspresi Boolean bersama-sama 407 00:17:24,060 --> 00:17:27,930 pada dasarnya datang bersama-sama sebagai satu ekspresi seluruh Boolean. 408 00:17:27,930 --> 00:17:34,970 Jadi jika kita ingin mencari angka, mengatakan, yang lebih besar dari 5 tetapi kurang dari 15 409 00:17:34,970 --> 00:17:39,810 pada saat yang sama, kita akan menggunakan logis operator AND untuk melihat apakah n adalah 410 00:17:39,810 --> 00:17:42,937 lebih besar dari 5 && n kurang dari 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: Dan di sini, juga, itu benar-benar mudah 412 00:17:44,770 --> 00:17:47,290 awal untuk sengaja menggunakan hanya ampersand tunggal 413 00:17:47,290 --> 00:17:48,572 atau bar vertikal tunggal. 414 00:17:48,572 --> 00:17:51,280 Dan mudah-mudahan compiler akan berteriak pada Anda karena mereka benar-benar 415 00:17:51,280 --> 00:17:52,530 memiliki arti yang sangat berbeda. 416 00:17:52,530 --> 00:17:55,660 Bagi mereka yang ingin tahu, mereka digunakan untuk operasi bitwise, 417 00:17:55,660 --> 00:17:57,197 beroperasi pada bit individual. 418 00:17:57,197 --> 00:17:58,780 Tetapi Anda ingin pasangan mereka di sini. 419 00:17:58,780 --> 00:18:01,560 Dan super penting adalah bahwa pertama, tanda sama, 420 00:18:01,560 --> 00:18:05,270 yang merupakan operator kesetaraan sebagai bertentangan dengan operator penugasan. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: Dan bar vertikal terletak antara Delete dan Kembali. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Ya. 423 00:18:09,260 --> 00:18:11,420 Pada keyboard US khas. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Yep. 425 00:18:13,190 --> 00:18:15,890 Jadi mari kita melompat tepat ke pernyataan bersyarat. 426 00:18:15,890 --> 00:18:18,300 Dalam Scratch, Anda sudah sudah terlihat, mungkin, 427 00:18:18,300 --> 00:18:22,730 jika pernyataan yang memungkinkan Anda untuk memeriksa apakah sesuatu itu benar, maka 428 00:18:22,730 --> 00:18:23,660 melakukan sesuatu yang lain. 429 00:18:23,660 --> 00:18:28,410 Jadi, Anda mungkin ingin untuk memeriksa apakah sprite Anda 430 00:18:28,410 --> 00:18:31,410 menyentuh beberapa sprite lainnya atau perbatasan layar Anda. 431 00:18:31,410 --> 00:18:35,520 Dan kemudian Anda mungkin ingin mengakhiri permainan atau melakukan sesuatu yang lain. 432 00:18:35,520 --> 00:18:40,000 Jadi sintaks untuk itu adalah "if (kondisi)." 433 00:18:40,000 --> 00:18:46,820 Jadi jika sprite Anda menyentuh sesuatu, maka jangan di dalam kurung kurawal. 434 00:18:46,820 --> 00:18:48,980 >> Kemudian kita memiliki jika-lain pernyataan. 435 00:18:48,980 --> 00:18:54,080 Lain memungkinkan kita untuk melakukan sesuatu jika kondisi yang kita 436 00:18:54,080 --> 00:18:55,870 memeriksa pada awalnya tidak benar. 437 00:18:55,870 --> 00:19:01,530 Jadi jika sprite menyentuh perbatasan melakukan ini, yang lain melakukan sesuatu yang lain. 438 00:19:01,530 --> 00:19:04,030 Jadi jika tidak melakukan sesuatu yang lain. 439 00:19:04,030 --> 00:19:07,530 Kemudian kita memiliki contoh singkat untuk ini. 440 00:19:07,530 --> 00:19:11,551 Jadi jika (military_time <12), kita ingin printf "Selamat pagi!" 441 00:19:11,551 --> 00:19:13,300 Lain kita akan printf "Selamat malam!" 442 00:19:13,300 --> 00:19:14,860 Contoh dasar. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Baik. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Jadi sekarang kita memiliki laporan beralih. 446 00:19:18,560 --> 00:19:21,960 Beralih pernyataan di dapat umum memungkinkan kita untuk melakukan banyak hal yang sama 447 00:19:21,960 --> 00:19:25,070 bahwa kita hanya berbicara tentang dengan jika pernyataan. 448 00:19:25,070 --> 00:19:29,440 Misalnya, sekarang kita memiliki Bentuk umum dari pernyataan switch 449 00:19:29,440 --> 00:19:33,870 yang memungkinkan kita untuk mengambil variabel disebut n 450 00:19:33,870 --> 00:19:37,670 dan membandingkannya dengan banyak nilai yang berbeda, yang di sini kita 451 00:19:37,670 --> 00:19:40,010 telah disebut constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Kita mungkin memiliki lebih banyak. 453 00:19:41,150 --> 00:19:42,930 Dan orang-orang yang disebut kasus. 454 00:19:42,930 --> 00:19:46,280 >> Jadi jika kita memiliki sebuah tombol statement-- dan karya ini 455 00:19:46,280 --> 00:19:50,580 hanya untuk integers-- kita memiliki variabel dalam kasus ini itu n. 456 00:19:50,580 --> 00:19:53,840 Jika variabel n adalah sama dengan constant1, kami 457 00:19:53,840 --> 00:19:59,720 akan menjalankan beberapa potongan kode atau sesuatu yang ingin kita lakukan. 458 00:19:59,720 --> 00:20:01,280 Dan kemudian kita akan hancur. 459 00:20:01,280 --> 00:20:04,820 Jadi istirahat berarti bahwa pernyataan switch 460 00:20:04,820 --> 00:20:08,120 akan berhenti mengeksekusi jika n adalah sama dengan constant1, 461 00:20:08,120 --> 00:20:09,752 dan kemudian program anda akan terus. 462 00:20:09,752 --> 00:20:11,835 Maka akan keluar keluar dari beralih pernyataan dan itu akan 463 00:20:11,835 --> 00:20:13,520 terus melakukan sesuatu yang lain. 464 00:20:13,520 --> 00:20:17,204 >> Namun, jika n tidak sama constant1, maka kasus untuk constant2 465 00:20:17,204 --> 00:20:17,870 akan diperiksa. 466 00:20:17,870 --> 00:20:21,750 Jadi jika n sama constant2, yang lainnya potongan kode akan dieksekusi. 467 00:20:21,750 --> 00:20:23,850 Dan kemudian akan mematahkan jika itu adalah sama dengan itu. 468 00:20:23,850 --> 00:20:27,580 Dan kemudian kita dapat memiliki also-- tidak tentu, though-- kasus default, 469 00:20:27,580 --> 00:20:32,290 yang akan terjadi jika n tidak sama salah satu kasus yang telah anda daftarkan. 470 00:20:32,290 --> 00:20:35,400 Dan dalam kasus default, kami juga tidak perlu istirahat tentu 471 00:20:35,400 --> 00:20:39,271 karena pernyataan switch akan tahu yang perlu berakhir setelah default 472 00:20:39,271 --> 00:20:40,270 kasus jika itu yang terjadi. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Tapi Gaya, kami selalu meletakkannya di sana. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Ya. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Ya. 476 00:20:42,710 --> 00:20:44,750 Jadi terutama ketika memulai, terutama jika di antara mereka yang kurang 477 00:20:44,750 --> 00:20:47,458 nyaman, saya akan secara pribadi hanya merekomendasikan menempel dengan ifs 478 00:20:47,458 --> 00:20:51,564 dan seandainya-elses dan jika-lain-jika-elses dan sebagainya jika hanya 479 00:20:51,564 --> 00:20:53,480 karena mereka sedikit lebih mudah. 480 00:20:53,480 --> 00:20:56,142 Ini adalah optimasi bagus, atau kadang-kadang bahkan estetis itu 481 00:20:56,142 --> 00:20:57,350 membuat kode lebih mudah dibaca. 482 00:20:57,350 --> 00:20:59,599 Dan pada kenyataannya, mungkin pertengahan semester kita akan melihat masalah 483 00:20:59,599 --> 00:21:02,504 mengatur di mana itu hanya terlihat lebih baik dan lebih mudah dibaca untuk manusia 484 00:21:02,504 --> 00:21:03,670 dengan menggunakan pernyataan switch. 485 00:21:03,670 --> 00:21:05,460 Tapi jangan khawatir tentang menempel ini terlalu dini. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Ya. 487 00:21:05,680 --> 00:21:08,840 Jika Anda memiliki banyak jika laporan, itu hanya mungkin tidak akan sangat mudah dibaca. 488 00:21:08,840 --> 00:21:10,965 Ini mungkin tidak akan sangat cepat bagi Anda untuk pergi melalui itu. 489 00:21:10,965 --> 00:21:13,230 Jadi pernyataan beralih dapat sangat berguna, juga. 490 00:21:13,230 --> 00:21:17,900 Dan juga, jangan remember-- tidak lupa untuk menempatkan istirahat di sana. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: Tidak ingat ini. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Karena maka Anda mungkin jatuh melalui dari satu kasus ke yang lain. 493 00:21:24,890 --> 00:21:27,930 Jadi mari kita mengatakan bahwa kasus constant1 tidak memiliki pernyataan istirahat di dalamnya. 494 00:21:27,930 --> 00:21:31,920 Maka kita mungkin jatuh melalui kasus dalam constant2. 495 00:21:31,920 --> 00:21:35,070 Dan kita tidak ingin melakukan itu jika kami sudah mencapai hal constant1 496 00:21:35,070 --> 00:21:37,830 dan itu sama dengan n. 497 00:21:37,830 --> 00:21:45,100 >> Jadi, misalnya, jika kita memiliki variabel n yang berisi nomor kelas, 498 00:21:45,100 --> 00:21:48,990 dan kami ingin melihat apa yang kelas is-- jika n sama dengan 50, 499 00:21:48,990 --> 00:21:51,957 kita akan mencetak "CS50 adalah Pengantar Ilmu Komputer I. " 500 00:21:51,957 --> 00:21:53,040 Kemudian kita akan istirahat. 501 00:21:53,040 --> 00:21:53,920 Dan hanya itu. 502 00:21:53,920 --> 00:21:55,950 Namun, jika n adalah sama 51, kita akan 503 00:21:55,950 --> 00:21:58,494 untuk mencetak "CS51 adalah Pendahuluan Ilmu Komputer II. " 504 00:21:58,494 --> 00:21:59,910 Kemudian, sekali lagi, kita akan istirahat. 505 00:21:59,910 --> 00:22:05,080 Namun, jika kemudian kita masukkan 124, 61, setiap nomor lain yang mungkin Anda pikirkan, 506 00:22:05,080 --> 00:22:06,890 atau program tidak akan untuk mengakui bahwa. 507 00:22:06,890 --> 00:22:09,010 Jadi itu akan mengatakan, "Maaf, aku tidak akrab dengan kelas itu. " 508 00:22:09,010 --> 00:22:10,009 Dan itu akan pecah. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Jadi Anda benar-benar dapat melihat jika, lain jika, ide lain di sini. 510 00:22:12,847 --> 00:22:15,430 Ini sintaks hanya berbeda untuk mengekspresikan ide yang sama persis. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Tepat. 512 00:22:17,690 --> 00:22:19,480 Sekarang kita memiliki operator ternary kami. 513 00:22:19,480 --> 00:22:24,900 Operator sehingga terner memiliki tiga bagian- kondisi, 514 00:22:24,900 --> 00:22:27,220 sesuatu yang harus dilakukan jika Kondisi itu benar, 515 00:22:27,220 --> 00:22:29,730 dan kemudian sesuatu untuk dilakukan jika kondisi itu adalah palsu. 516 00:22:29,730 --> 00:22:33,400 Jadi Anda lihat, pada dasarnya, sintaks itu di sini. 517 00:22:33,400 --> 00:22:37,792 Kami memiliki tanda tanya, dan kemudian the-- apa yang kita sebut ini? 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: Usus besar. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Terima kasih. 521 00:22:39,599 --> 00:22:41,880 Maaf. 522 00:22:41,880 --> 00:22:45,800 Jadi mari kita lihat contoh kita untuk melihat apakah kita dapat memahami this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Jadi di sini kita melihat Operator Boolean kami == yang membandingkan class_num variabel 525 00:22:52,580 --> 00:22:53,100 50. 526 00:22:53,100 --> 00:22:55,150 Toko sehingga class_num integer. 527 00:22:55,150 --> 00:22:58,180 Dan jika integer yang sama 50, maka kita 528 00:22:58,180 --> 00:23:02,810 akan menyimpan "David Malan" dalam profesor tali. 529 00:23:02,810 --> 00:23:05,912 Jika jumlah kelas tidak sama 50, "tidak David Malan" 530 00:23:05,912 --> 00:23:07,120 akan menjadi profesor. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Terima kasih. 532 00:23:08,630 --> 00:23:12,110 Dan ini tampaknya setara dengan apa, yang akan Anda katakan, pada pandangan pertama? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: Bagi saya tampaknya seperti jika-lain pernyataan. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Ya. 536 00:23:20,709 --> 00:23:24,020 Dan pada kenyataannya, ini adalah jenis dari cukup satu kapal, 537 00:23:24,020 --> 00:23:27,520 sehingga untuk berbicara, untuk menerapkan persis logika jika-lain 538 00:23:27,520 --> 00:23:29,010 tetapi melakukan segala sesuatu dalam satu langkah. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Tepat. 540 00:23:29,860 --> 00:23:30,360 Ya. 541 00:23:30,360 --> 00:23:33,520 Laporan Jadi jika-lain mungkin mengambil banyak ruang. 542 00:23:33,520 --> 00:23:36,283 Mereka mungkin terlalu panjang untuk sesuatu yang sederhana seperti ini. 543 00:23:36,283 --> 00:23:38,350 Jadi ini bisa sangat ringkas dan sangat bagus. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Jadi sekarang kita akan melihat ke dalam mengeksekusi sesuatu lagi dan lagi, 546 00:23:46,820 --> 00:23:50,060 jadi memeriksa untuk kondisi beberapa kali 547 00:23:50,060 --> 00:23:53,510 dan kemudian terus melakukan sesuatu sementara kondisi itu benar. 548 00:23:53,510 --> 00:23:56,740 Jadi ini membawa kita baik ke loop sementara. 549 00:23:56,740 --> 00:23:59,270 >> Ke kiri, kita memiliki loop sementara pertama kami. 550 00:23:59,270 --> 00:24:03,840 Jadi sementara sesuatu itu benar, melakukan sesuatu lagi dan lagi. 551 00:24:03,840 --> 00:24:08,850 Jadi pastikan untuk melihat bahwa kami Kondisi di sini adalah divalidasi di atas. 552 00:24:08,850 --> 00:24:14,150 Sedangkan dengan loop-- kedua kami kita sebut bahwa do-while loop-- kita melakukan sesuatu, 553 00:24:14,150 --> 00:24:15,890 maka kita memeriksa kondisi. 554 00:24:15,890 --> 00:24:17,980 Dan jika kondisi itu terus untuk menjadi kenyataan, 555 00:24:17,980 --> 00:24:20,150 kita kembali dan melakukan hal itu lagi. 556 00:24:20,150 --> 00:24:23,360 Jadi perbedaan utama adalah di mana Kondisi tersebut akan diperiksa untuk. 557 00:24:23,360 --> 00:24:29,260 Dan kode tidak pernah mungkin dieksekusi jika kondisi tidak 558 00:24:29,260 --> 00:24:30,430 benar dengan loop sementara. 559 00:24:30,430 --> 00:24:33,050 Sedangkan dengan do-while lingkaran, kita memiliki kode 560 00:24:33,050 --> 00:24:35,380 yang selalu dijalankan minimal sekali. 561 00:24:35,380 --> 00:24:37,470 Dan kemudian sementara kondisi terus untuk menjadi kenyataan, 562 00:24:37,470 --> 00:24:39,960 kita bisa kembali dan beralih lagi ke dalam. 563 00:24:39,960 --> 00:24:43,625 Jadi, mengapa Anda pikir kita akan menggunakan lakukan-sementara loop atas loop sementara? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Kanan. 566 00:24:48,720 --> 00:24:52,600 Jadi jika kita ingin mendorong pengguna untuk semacam masukan, 567 00:24:52,600 --> 00:24:55,400 jika kita ingin meminta mereka untuk memasukkan nama mereka, 568 00:24:55,400 --> 00:24:57,342 kami ingin setidaknya meminta mereka sekali. 569 00:24:57,342 --> 00:24:59,050 Dan jika mereka masuk nama itu, kami tidak 570 00:24:59,050 --> 00:25:00,740 akan meminta mereka lagi karena kita sudah tahu itu. 571 00:25:00,740 --> 00:25:02,656 Tetapi jika mereka tidak masuk nama mereka, atau jika mereka 572 00:25:02,656 --> 00:25:05,787 masukkan sesuatu yang jelas bukan nama, 573 00:25:05,787 --> 00:25:08,120 kita masih ingin melanjutkan meminta mereka pada nama mereka. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: Dan dalam kuliah kami memiliki satu seperti ini dengan mendapatkan int positif 575 00:25:10,710 --> 00:25:13,550 Misalnya, di mana tidak ada yang periksa pada awalnya karena Anda belum bahkan 576 00:25:13,550 --> 00:25:14,190 mendapat int. 577 00:25:14,190 --> 00:25:16,680 Jadi kami ingin melakukan this-- mendapatkan int dari user-- yang 578 00:25:16,680 --> 00:25:18,860 kemudian periksa, mungkin, lagi dan lagi dan lagi. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Tepat. 580 00:25:21,030 --> 00:25:22,060 Untuk loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Untuk loop dapat memungkinkan kita untuk melakukan hampir hal yang sama persis, juga. 582 00:25:25,842 --> 00:25:27,300 Ini sebenarnya hal yang sama persis. 583 00:25:27,300 --> 00:25:30,190 Jadi tidak ada yang Anda dapat melakukan dengan untuk loop 584 00:25:30,190 --> 00:25:32,840 bahwa Anda tidak akan mampu hubungannya dengan loop sementara. 585 00:25:32,840 --> 00:25:36,900 Tapi untuk loop mungkin tampak sedikit Sedikit lebih rumit sintaksis 586 00:25:36,900 --> 00:25:39,730 karena mereka memiliki tiga bagian dalam apa yang 587 00:25:39,730 --> 00:25:42,990 sebelum hanya Kondisi dengan loop sementara. 588 00:25:42,990 --> 00:25:48,260 Jadi bagian pertama yang Anda laut, kiri-paling, kita memiliki "int kurcaci = 0" 589 00:25:48,260 --> 00:25:51,490 Jadi ini adalah di mana kita menginisialisasi variabel kita. 590 00:25:51,490 --> 00:25:55,210 >> Maka kita memiliki titik koma dan "kurcaci <7." 591 00:25:55,210 --> 00:25:57,100 Jadi ini adalah di mana keluar Kondisi sebenarnya. 592 00:25:57,100 --> 00:26:00,170 Jadi itulah yang akan kita miliki menempatkan hanya sementara yang loop-- 593 00:26:00,170 --> 00:26:01,880 "sementara kurcaci <7." 594 00:26:01,880 --> 00:26:05,380 Di sini, yang berlangsung di tengah kami untuk loop. 595 00:26:05,380 --> 00:26:07,190 Jadi "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 Dan kemudian bagian terakhir kami adalah "kurcaci ++," yang mana kami memperbarui variabel kita. 597 00:26:11,350 --> 00:26:15,470 Jadi yang penting untuk menyadari bahwa ini adalah 598 00:26:15,470 --> 00:26:22,010 akan melalui ini untuk loop tujuh kali dan mengeksekusi tujuh kali. 599 00:26:22,010 --> 00:26:24,020 Jadi kita memiliki tujuh kurcaci, dan mereka semua 600 00:26:24,020 --> 00:26:26,020 akan mengatakan, "Aku di sini untuk membantu Anda, Snow White " 601 00:26:26,020 --> 00:26:28,860 karena mereka siap untuk membantu Putri Salju. 602 00:26:28,860 --> 00:26:33,600 >> Dengan sementara loop, kita akan melakukan inisialisasi dan memperbarui yang 603 00:26:33,600 --> 00:26:37,490 tidak di dalam kondisi tersebut, lagi, tapi baik sebelum atau di dalam loop sementara 604 00:26:37,490 --> 00:26:40,210 memastikan bahwa we-- karena kita selalu butuh bagian-bagian. 605 00:26:40,210 --> 00:26:42,835 Jadi untuk memastikan bahwa kita memiliki mereka, kita akan masih menambahkan mereka 606 00:26:42,835 --> 00:26:44,580 pada, tidak hanya di dalam kurung. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: Dan sehingga terlihat like-- di kuliah, misalnya, 608 00:26:47,288 --> 00:26:50,250 Saya hampir selalu menggunakan, seperti, i dan n dan variabel cukup membosankan. 609 00:26:50,250 --> 00:26:53,050 Sepertinya Anda dapat menggunakan lebih cerdik bernama variabel, juga. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Ya, itu benar-benar sangat bagus menggunakan variabel sedikit lebih deskriptif 611 00:26:56,300 --> 00:26:59,400 karena terutama jika orang lain adalah membaca code-- Anda mungkin kau grader 612 00:26:59,400 --> 00:27:00,940 atau jika Anda berkolaborasi dengan somebody-- 613 00:27:00,940 --> 00:27:03,481 Anda ingin memastikan bahwa mereka memahami apa yang Anda lakukan. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> OKE. 616 00:27:06,400 --> 00:27:11,435 Jadi ini adalah sesuatu yang sangat funky-- untuk loop di dalam loop. 617 00:27:11,435 --> 00:27:13,060 Saya tidak tahu apakah kita pernah melihat ini sebelumnya. 618 00:27:13,060 --> 00:27:13,830 Mungkin tidak. 619 00:27:13,830 --> 00:27:17,750 Tapi kita benar-benar dapat memiliki this-- sehingga loop bukan loop. 620 00:27:17,750 --> 00:27:25,130 Jadi tidak ada yang ingin berjalan mungkin saya melalui apa yang terjadi di sini? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: Aku akan mengambil bacokan. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: OK. 625 00:27:30,636 --> 00:27:34,690 Jadi, spoiler-- kita ingin mencetak barang-barang itu di bawah sudut kanan 626 00:27:34,690 --> 00:27:35,190 sana. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Benar. 628 00:27:35,450 --> 00:27:35,710 Ya, ya. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: Jadi kita baru saja menempatkan bahwa contoh output ada. 630 00:27:38,043 --> 00:27:42,590 Jadi saya dapat menyimpulkan dari lingkaran paling atas yang Anda 631 00:27:42,590 --> 00:27:45,680 iterasi baris yang lingkaran terluar, sehingga untuk berbicara. 632 00:27:45,680 --> 00:27:48,107 Dan kau iterasi kolom dengan lingkaran terdalam. 633 00:27:48,107 --> 00:27:50,190 Dan intuitif, ini harus mudah-mudahan masuk akal 634 00:27:50,190 --> 00:27:52,070 karena dengan sifat setiap program yang telah kita lihat 635 00:27:52,070 --> 00:27:55,570 sebelumnya, printf, yang merupakan Fungsi kita gunakan, pada akhirnya, 636 00:27:55,570 --> 00:27:58,190 memiliki kemampuan untuk mencetak hal-hal keluar dasarnya baris demi baris. 637 00:27:58,190 --> 00:27:59,960 Seperti, setelah Anda dikeluarkan baris baru, ada 638 00:27:59,960 --> 00:28:02,876 ada dua kali lipat kembali dan mencetak sesuatu lebih tinggi di layar, setidaknya 639 00:28:02,876 --> 00:28:04,530 tidak menggunakan printf seperti ini. 640 00:28:04,530 --> 00:28:07,750 >> Dan dalam hal itu, itu membuat arti bahwa loop terluar 641 00:28:07,750 --> 00:28:10,930 harus mengacu pada baris karena untuk setiap diberikan baris, 642 00:28:10,930 --> 00:28:13,650 Anda akan ingin mencetak XXXXX, dan kemudian 643 00:28:13,650 --> 00:28:15,520 beralih ke baris berikutnya, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Jadi baris datang pertama. 645 00:28:17,317 --> 00:28:19,150 Dan kemudian dalam setiap baris, Anda mencetak kolom. 646 00:28:19,150 --> 00:28:21,160 Jika Anda mencoba untuk melakukannya dengan berlawanan, itu akan mungkin tidak 647 00:28:21,160 --> 00:28:21,690 keluar sebagai Anda berniat. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Ya. 649 00:28:22,190 --> 00:28:24,950 Kami hanya tidak bisa kembali ke baris sebelumnya dengan printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: Dan apa yang menarik per chatting hari ini tentang ruang lingkup, 651 00:28:27,658 --> 00:28:31,600 sebenarnya, adalah bahwa baris adalah int yang dinyatakan dalam lingkaran paling atas. 652 00:28:31,600 --> 00:28:34,030 Tapi perhatikan bahwa masih dalam, sehingga untuk berbicara, 653 00:28:34,030 --> 00:28:35,982 kurung kurawal yang segera mengikuti, 654 00:28:35,982 --> 00:28:38,440 meskipun itu tidak secara teknis dalam mereka kurung kurawal. 655 00:28:38,440 --> 00:28:41,750 Jadi baris adalah dalam lingkup untuk keseluruhan dari potongan kode, 656 00:28:41,750 --> 00:28:44,690 baik di dalam dari luar untuk loop dan dalam batin untuk loop. 657 00:28:44,690 --> 00:28:48,050 Tapi sebaliknya, di mana adalah kolom dalam lingkup? 658 00:28:48,050 --> 00:28:49,810 Variabel kolom? 659 00:28:49,810 --> 00:28:51,310 Ya, hanya di dalam loop. 660 00:28:51,310 --> 00:28:54,280 Dan itu OK karena kita tidak mengakses itu di luar kurung kurawal nya. 661 00:28:54,280 --> 00:28:57,280 Semua yang kita lakukan adalah print out baru baris di akhir ada. 662 00:28:57,280 --> 00:28:58,670 Sehingga sebenarnya adalah OK. 663 00:28:58,670 --> 00:29:03,740 >> Jadi ini memiliki efek, sepertinya, melakukan tiga baris dan empat kolom. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Benar. 665 00:29:04,370 --> 00:29:06,270 Jadi pertama kita melalui baris pertama kami. 666 00:29:06,270 --> 00:29:10,520 Dan hanya dalam baris pertama kami, kami melakukan empat kolom dalam baris pertama. 667 00:29:10,520 --> 00:29:11,980 Jadi kami mencetak empat X. 668 00:29:11,980 --> 00:29:15,800 Dan kemudian kita bisa keluar untuk loop, karena kita sudah dicetak empat X. 669 00:29:15,800 --> 00:29:17,100 Dan kami mencetak baris baru. 670 00:29:17,100 --> 00:29:19,920 Dan kemudian kita pergi melalui proses yang sama untuk dua baris yang lebih 671 00:29:19,920 --> 00:29:21,170 untuk membuat total tiga. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: Dan itu perlu dicatat itu hanya sebuah artefak dari font, fakta 673 00:29:23,530 --> 00:29:25,680 bahwa output sampel tampak begitu jauh lebih tinggi, 674 00:29:25,680 --> 00:29:27,520 seolah-olah ada lagi baris dari kolom. 675 00:29:27,520 --> 00:29:29,824 Tapi itu hanya karena X adalah lebih tinggi daripada lebar. 676 00:29:29,824 --> 00:29:32,740 Itu semua yang terjadi di sana, ditambah ruang putih antara baris. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Benar. 678 00:29:33,281 --> 00:29:34,792 Keren. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: Baiklah. 680 00:29:35,750 --> 00:29:39,830 Jadi cepat melihat masalah menetapkan satu, mengambil pertanyaan, dan kemudian menunda? 681 00:29:39,830 --> 00:29:40,330 Baiklah. 682 00:29:40,330 --> 00:29:43,164 Jadi dalam masalah menetapkan satu, ada tiga tantangan utama, akhirnya. 683 00:29:43,164 --> 00:29:44,955 Tapi pertama, Anda akan menemukan bahwa masalah set 684 00:29:44,955 --> 00:29:47,900 spesifikasi, seperti halnya dengan banyak orang psets musim gugur ini, akan memandu Anda 685 00:29:47,900 --> 00:29:50,691 melalui beberapa latihan pemanasan, mengarahkan Anda keluar beberapa sumber 686 00:29:50,691 --> 00:29:52,440 Anda mungkin atau mungkin tidak melihat sudah. 687 00:29:52,440 --> 00:29:54,440 Misalnya, CS50 memiliki suite celana pendek, 688 00:29:54,440 --> 00:29:56,481 yang video pendek, tidak seperti ini, tapi itu 689 00:29:56,481 --> 00:29:58,460 adalah specific-- sangat topik mungkin lima menit, 690 00:29:58,460 --> 00:30:02,360 10 menit panjang pada loop atau kondisi atau algoritma 691 00:30:02,360 --> 00:30:04,125 atau nanti lebih topik-topik lanjutan, juga. 692 00:30:04,125 --> 00:30:06,000 Dan kita umumnya menanamkan mereka menjadi masalah 693 00:30:06,000 --> 00:30:07,950 set sehingga siswa memiliki sumber daya dengan yang 694 00:30:07,950 --> 00:30:10,840 untuk meninjau materi yang mungkin memiliki sudah datang di kuliah atau bagian. 695 00:30:10,840 --> 00:30:13,220 Tapi cara ini itu lebih terfokus dan lebih banyak di ujung jari mereka. 696 00:30:13,220 --> 00:30:15,928 >> Kita juga cenderung untuk menanamkan dalam masalah menetapkan hal yang disebut penelusuran. 697 00:30:15,928 --> 00:30:20,790 Jadi hampir semua contoh yang saya lakukan di kuliah, di atas panggung di sini, kami juga 698 00:30:20,790 --> 00:30:24,565 telah ditembak pada kamera di maju lebih lambat, 699 00:30:24,565 --> 00:30:28,760 walkthrough lebih intim dengan saya di laptop saya kode itu, baris demi baris 700 00:30:28,760 --> 00:30:31,427 sehingga dalam kelas, kita akan sering skim melalui sesuatu atau seseorang 701 00:30:31,427 --> 00:30:33,260 akan menyisipkan dengan menjawab sebuah pertanyaan. 702 00:30:33,260 --> 00:30:35,820 Tapi itu tidak selalu tenggelam di untuk semua orang di penonton. 703 00:30:35,820 --> 00:30:38,230 Jadi, Anda akan menemukan kode penelusuran untuk sebagian besar contoh 704 00:30:38,230 --> 00:30:40,950 yang kita lakukan di sini di kuliah sehingga Anda dapat berjalan melalui itu pada kecepatan Anda sendiri 705 00:30:40,950 --> 00:30:43,580 dan mundur atau maju cepat atau melewatkan sama sekali, jika Anda ingin. 706 00:30:43,580 --> 00:30:45,356 >> Ada sering beberapa pertanyaan pemanasan yang 707 00:30:45,356 --> 00:30:47,105 meminta Anda untuk menyortir dari memperkuat materi ini 708 00:30:47,105 --> 00:30:50,250 dan pastikan bahwa Anda nyaman sebelum Anda melanjutkan dengan sisa pset tersebut. 709 00:30:50,250 --> 00:30:51,700 Dan kemudian, tentu saja, ada yang pset sendiri. 710 00:30:51,700 --> 00:30:53,450 Dan salah satu hal kami sangat sengaja 711 00:30:53,450 --> 00:30:57,202 lakukan di CS50 hampir setiap menarik atau intelektual menarik 712 00:30:57,202 --> 00:30:58,910 Langkah mekanis yang Anda mungkin harus melakukan 713 00:30:58,910 --> 00:31:00,519 hampir selalu sangat baik didokumentasikan. 714 00:31:00,519 --> 00:31:03,560 Selama istilah, kita akan mulai mengajukan pertanyaan retoris lebih 715 00:31:03,560 --> 00:31:06,187 seperti ingat bagaimana melakukan ini atau itu? 716 00:31:06,187 --> 00:31:08,520 Namun umumnya, Anda akan menemukan bahwa set masalah membuat Anda 717 00:31:08,520 --> 00:31:10,269 melalui mekanisme sesuatu sehingga 718 00:31:10,269 --> 00:31:14,160 itu, tantangan intelektual yang menarik pada akhirnya tersisa untuk Anda siswa. 719 00:31:14,160 --> 00:31:17,390 >> Dengan mengatakan bahwa, Zamyla, kepada siapa kami terus mengacu hari ini di kuliah, 720 00:31:17,390 --> 00:31:20,190 adalah salah satu staf lama kami anggota yang juga memegang penelusuran 721 00:31:20,190 --> 00:31:24,520 pada masalah pset tertentu seperti mario dan serakah, meskipun tidak air tahun ini. 722 00:31:24,520 --> 00:31:26,540 Dan itu pada mereka walkthrough bahwa dia sering 723 00:31:26,540 --> 00:31:29,450 menawarkan beberapa tips dan trik untuk bagaimana untuk melanjutkan, tidak pernah memberitahu Anda 724 00:31:29,450 --> 00:31:31,810 apa yang harus dilakukan, tapi rather-- seperti kondisi, 725 00:31:31,810 --> 00:31:35,200 jika Anda will-- memberikan Anda setidaknya beberapa ide sehingga terserah Anda, 726 00:31:35,200 --> 00:31:37,830 akhirnya, untuk memutuskan bagaimana pendekatan mereka. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: Semacam seperti tingkat tinggi pemahaman logika apa 728 00:31:41,200 --> 00:31:42,220 kami meminta Anda untuk melakukan. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Tepat. 730 00:31:42,485 --> 00:31:44,190 Dan, pada kenyataannya, Zamyla ini penelusuran dimaksudkan 731 00:31:44,190 --> 00:31:46,190 untuk menjawab sering pertanyaan yang ditanyakan dari mana 732 00:31:46,190 --> 00:31:48,610 apakah saya mulai, terutama ketika ini spesifikasi panjang 733 00:31:48,610 --> 00:31:51,960 sedikit menakutkan mengingat semua teks dan citra yang mereka miliki di dalamnya. 734 00:31:51,960 --> 00:31:54,890 >> Jadi water.c, Anda akan menemukan setelah Anda selesai itu, 735 00:31:54,890 --> 00:31:56,920 sebenarnya relatif mudah. 736 00:31:56,920 --> 00:31:58,882 Benar-benar adalah a bunch Anda akan menggedor 737 00:31:58,882 --> 00:32:01,840 kepala Anda ke dinding mencoba untuk mencari tahu mengapa hal itu tidak kompilasi 738 00:32:01,840 --> 00:32:03,450 atau mengapa itu tidak berjalan dengan benar. 739 00:32:03,450 --> 00:32:05,040 Tapi setelah Anda selesai dengan itu dan setelah Anda sudah 740 00:32:05,040 --> 00:32:07,620 menghabiskan beberapa waktu gulat dengan bug yang mungkin Anda miliki, 741 00:32:07,620 --> 00:32:09,490 Anda akan menemukan bahwa itu program yang sangat singkat. 742 00:32:09,490 --> 00:32:11,770 Hal ini dapat dilakukan hanya dalam beberapa baris kode, yang sebagian besar 743 00:32:11,770 --> 00:32:15,030 kita lihat di sini di kuliah sudah, jika Anda merakit blok bangunan yang tepat. 744 00:32:15,030 --> 00:32:16,810 >> Dan seperti yang kita sarankan di sini, itu akan meminta 745 00:32:16,810 --> 00:32:22,250 Anda untuk menentukan berapa menit seseorang mengambil mandi di kampus. 746 00:32:22,250 --> 00:32:24,779 Kita tentukan di masalah mengatur laju aliran air 747 00:32:24,779 --> 00:32:27,320 di, seperti, aliran rendah shower kepala, seperti klip Seinfeld 748 00:32:27,320 --> 00:32:29,180 kita lihat kemarin atau kebalikan dari padanya. 749 00:32:29,180 --> 00:32:30,971 Dan kemudian Anda hanya untuk melakukan sedikit matematika, 750 00:32:30,971 --> 00:32:34,710 really-- aritmatika menggunakan C untuk memberitahu kita berapa banyak, kira-kira, botol air 751 00:32:34,710 --> 00:32:37,720 adalah bahwa setara dengan jika kita mengambil n-menit mandi. 752 00:32:37,720 --> 00:32:41,389 >> Sekarang, di mario.c, ini akan menjadi program sedikit lebih panjang. 753 00:32:41,389 --> 00:32:42,930 Ini masih tidak akan selama ini. 754 00:32:42,930 --> 00:32:45,130 Hanya beberapa baris lebih lama dari water.c. 755 00:32:45,130 --> 00:32:48,230 Tapi itu akan menjadi kesempatan untuk menciptakan sekolah tua Mario 756 00:32:48,230 --> 00:32:50,670 piramida dari Super Mario Saudara atau tindak-on. 757 00:32:50,670 --> 00:32:53,510 Ini tidak akan terlihat lebih cantik atau berwarna-warni seperti yang di sana. 758 00:32:53,510 --> 00:32:56,468 Kami hanya akan menggunakan hashtags sedikit seperti yang kita miliki di sini di layar 759 00:32:56,468 --> 00:32:58,120 menggunakan teks ASCII. 760 00:32:58,120 --> 00:33:00,362 Tapi itu akan mendekati ide yang sama. 761 00:33:00,362 --> 00:33:02,570 Dan itu akan menjadi latihan yang pada pandangan pertama 762 00:33:02,570 --> 00:33:04,720 tampaknya cukup simple-- hanya mencetak piramida sederhana. 763 00:33:04,720 --> 00:33:07,345 Tapi ada beberapa karakteristik di sini yang menarik. 764 00:33:07,345 --> 00:33:12,400 Perhatikan bahwa tepi paling kanan dari piramida sebenarnya memiliki lebar dua. 765 00:33:12,400 --> 00:33:14,570 Jadi ada dua yang sama kolom tinggi, yang 766 00:33:14,570 --> 00:33:16,804 membuat itu memerlukan sedikit sedikit pemikiran untuk membuat 767 00:33:16,804 --> 00:33:19,720 Pastikan Anda mendapatkan tepat, seperti lawan hanya sempurna miring 768 00:33:19,720 --> 00:33:20,220 garis. 769 00:33:20,220 --> 00:33:23,340 Jadi itu sedikit kasus sudut tapi cocok dengan permainan yang sebenarnya. 770 00:33:23,340 --> 00:33:27,610 >> Dan itu juga non-jelas pada awalnya sekilas bagaimana mencetak spasi. 771 00:33:27,610 --> 00:33:29,430 Jadi ketika saya melihat contoh output sini- 772 00:33:29,430 --> 00:33:32,440 dan itu juga di spec-- itu jenis terlihat seperti persegi panjang, 773 00:33:32,440 --> 00:33:35,120 tapi diagonal dari persegi panjang telah dipotong, 774 00:33:35,120 --> 00:33:37,320 dan itu hanya ruang putih, sehingga untuk berbicara. 775 00:33:37,320 --> 00:33:40,100 Dan jadi sering diajukan pertanyaan di sini selalu, baik, 776 00:33:40,100 --> 00:33:43,302 bagaimana cara memindahkan hashtags ke kanan? 777 00:33:43,302 --> 00:33:44,760 Atau bagaimana cara mencetak ruang kosong? 778 00:33:44,760 --> 00:33:46,860 Dan itu sebenarnya lebih mudah daripada kebanyakan siswa berpikir. 779 00:33:46,860 --> 00:33:47,360 Kanan? 780 00:33:47,360 --> 00:33:51,620 Anda dapat perkiraan secara visual dengan hanya memukul spasi sekali atau dua kali 781 00:33:51,620 --> 00:33:52,700 atau tiga kali. 782 00:33:52,700 --> 00:33:56,260 >> Dan jadi meskipun dengan printf kita hampir selalu mencetak string atau int 783 00:33:56,260 --> 00:33:59,950 atau kata seperti "Halo, dunia "atau serangkaian kata-kata, 784 00:33:59,950 --> 00:34:03,560 Anda juga dapat hanya mencetak kutipan, ruang, tanda kutip. 785 00:34:03,560 --> 00:34:06,320 Dan yang benar-benar akan memberikan Anda ruang putih di sana. 786 00:34:06,320 --> 00:34:08,330 Jadi ingatlah bahwa dalam pikiran dan tidak overthink ini. 787 00:34:08,330 --> 00:34:10,570 Anda benar-benar harus memutuskan baris demi baris demi baris, 788 00:34:10,570 --> 00:34:14,280 tidak seperti contoh Anda sebuah saat yang lalu, berapa banyak dari mereka 789 00:34:14,280 --> 00:34:18,420 kolom harus spasi putih dan berapa banyak dari mereka harus hashtags. 790 00:34:18,420 --> 00:34:21,560 Ini akan mengambil sedikit waktu, tapi itu akhirnya teka-teki logika macam. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Ya. 792 00:34:22,060 --> 00:34:25,060 Tapi logika akan baris demi baris akan menjadi sangat berguna di sini. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Ya. 794 00:34:25,810 --> 00:34:28,976 Saya pikir kode contoh Anda gave-- bahkan meskipun itu bukan program lengkap. 795 00:34:28,976 --> 00:34:34,247 Anda masih perlu int dan utama demi hukum dan # include stdio.h, 796 00:34:34,247 --> 00:34:35,580 banyak hal-hal dari kuliah. 797 00:34:35,580 --> 00:34:37,629 Tapi blok bangunan tampaknya berada di sana. 798 00:34:37,629 --> 00:34:39,920 Dan kemudian terakhir adalah sesuatu sedikit lebih algoritmik. 799 00:34:39,920 --> 00:34:43,210 Jadi ternyata bahwa setiap kali Anda pergi ke CVS atau toko 800 00:34:43,210 --> 00:34:47,810 dan seseorang tangan Anda di tagihan kasir atau koin sebagai perubahan, 801 00:34:47,810 --> 00:34:50,620 ternyata bahwa mereka, manusia, apakah mereka tahu atau tidak, 802 00:34:50,620 --> 00:34:53,300 mungkin menggunakan apa disebut algoritma serakah, 803 00:34:53,300 --> 00:34:58,170 dimana jika Anda berutang, mengatakan, $ 21 dalam perubahan karena untuk beberapa alasan 804 00:34:58,170 --> 00:35:01,580 Anda membeli sesuatu yang sangat murah dengan tagihan yang sangat besar di CVS, 805 00:35:01,580 --> 00:35:05,910 itu akan benar-benar menjengkelkan jika kasir memberi Anda 21 single atau, lebih buruk 806 00:35:05,910 --> 00:35:07,629 namun, seluruh banyak koin. 807 00:35:07,629 --> 00:35:10,670 Sebaliknya, apa yang orang yang wajar adalah mungkin akan lakukan adalah mereka akan 808 00:35:10,670 --> 00:35:14,224 untuk ambil $ 20- dan kemudian $ 1-tagihan, dan tangan Anda hanya dua tagihan dalam kasus itu. 809 00:35:14,224 --> 00:35:17,390 MARIA: Jadi mereka berusaha untuk meminimalkan perubahan yang mereka berikan kembali kepada Anda. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Tepat. 811 00:35:17,850 --> 00:35:19,540 Dan kesepakatan yang sama dengan koin, juga. 812 00:35:19,540 --> 00:35:23,040 Jika Anda berutang, mengatakan, $ 0,50, mudah-mudahan Anda tidak ingin 50 sen. 813 00:35:23,040 --> 00:35:25,500 Anda malah ingin dua perempat, misalnya. 814 00:35:25,500 --> 00:35:27,540 Sekarang, ini tidak menganggap bahwa kasir memiliki 815 00:35:27,540 --> 00:35:29,940 cukup setiap denominasi yang ia mungkin ingin memberikan. 816 00:35:29,940 --> 00:35:32,148 Tapi kita memungkinkan Anda untuk menganggap sebanyak dalam masalah. 817 00:35:32,148 --> 00:35:35,590 Dan tujuan, akhirnya, adalah untuk mengimplementasikan dalam kode C algoritma serakah. 818 00:35:35,590 --> 00:35:37,344 Jadi pengguna diijinkan ketik berapa banyak 819 00:35:37,344 --> 00:35:40,510 mengubah dia berutang dengan dolar dan sen, beberapa jenis floating point 820 00:35:40,510 --> 00:35:41,590 nilai mungkin. 821 00:35:41,590 --> 00:35:45,530 Dan kemudian Anda harus melakukan matematika dan mengetahui algorithmically, baik, 822 00:35:45,530 --> 00:35:49,020 berapa banyak koin yang bisa saya berikan Anda minimal untuk memberikan 823 00:35:49,020 --> 00:35:50,270 tepat jumlah perubahan. 824 00:35:50,270 --> 00:35:53,470 Tapi ada akan menjadi beberapa bagian yang aneh disini, kan? 825 00:35:53,470 --> 00:35:56,236 Seperti ada keseluruhan masalah ketidaktepatan. 826 00:35:56,236 --> 00:35:56,860 MARIA: Tepat. 827 00:35:56,860 --> 00:35:59,114 Titik sehingga floating nilai memiliki ketidaktepatan. 828 00:35:59,114 --> 00:36:00,780 Apakah kita berbicara tentang hal ini dalam kuliah ini? 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Kami melakukan terakhir kali di kuliah. 830 00:36:02,340 --> 00:36:03,506 Kami berbicara tentang ketidaktepatan. 831 00:36:03,506 --> 00:36:08,840 Dan Anda tidak ingin untuk menipu pengguna berapa banyak perubahan ia berutang. 832 00:36:08,840 --> 00:36:11,290 Dan walkthrough, di masalah set spesifikasi, 833 00:36:11,290 --> 00:36:15,990 memberikan beberapa pemikiran, akhirnya, untuk bagaimana Anda dapat mengurangi mereka ketidaktepatan 834 00:36:15,990 --> 00:36:17,280 kesalahan, berpotensi. 835 00:36:17,280 --> 00:36:21,050 Hal ini dapat dihindari, tentu, untuk input yang kita bicarakan. 836 00:36:21,050 --> 00:36:23,590 Dan, pada kenyataannya, pennies-- mungkin kita akan menunda untuk Zamyla, 837 00:36:23,590 --> 00:36:25,136 Saya pikir, untuk trik ada. 838 00:36:25,136 --> 00:36:27,760 Jadi pada akhirnya, Anda akan menemukan perkembangan masalah minggu ini, 839 00:36:27,760 --> 00:36:30,700 yang pertama cukup kecil, kemudian media, kemudian sedikit lebih besar. 840 00:36:30,700 --> 00:36:33,200 Tapi semua dari mereka menggunakan bangunan blok dari minggu terakhir ini, 841 00:36:33,200 --> 00:36:35,280 dari supersection ini, Masalah mengatur spesifikasi 842 00:36:35,280 --> 00:36:36,710 menempatkan Anda di sumber yang tak terhitung banyaknya. 843 00:36:36,710 --> 00:36:41,000 Tapi tetap, jika sama sekali berjuang, terutama di kalangan mereka yang kurang nyaman 844 00:36:41,000 --> 00:36:42,917 dengan tidak memiliki latar belakang sebelumnya, datang ke kantor jam 845 00:36:42,917 --> 00:36:44,958 pada hari Senin dan Selasa dan Rabu dan Kamis. 846 00:36:44,958 --> 00:36:46,950 Pergi ke CS50 Diskusikan melalui website saja yang, 847 00:36:46,950 --> 00:36:49,080 melalui yang Anda dapat chatting dengan staf dan teman sekelas. 848 00:36:49,080 --> 00:36:51,670 >> Tapi pada akhirnya, saya pikir Saran terbaik hanya mulai awal. 849 00:36:51,670 --> 00:36:54,711 Ini bukan jenis kelas yang Anda harus mulai psets Rabu 850 00:36:54,711 --> 00:36:56,640 malam, atau lebih buruk Kamis malam. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: Saran terbaik saya adalah sudah mulai hari Senin. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: Senin. 853 00:36:59,900 --> 00:37:02,490 Jadi, jika Anda belum mulai already-- ada. 854 00:37:02,490 --> 00:37:04,732 Tetapi bahkan jika tidak hari Senin, maka Selasa. 855 00:37:04,732 --> 00:37:05,690 Lebih cepat lebih baik. 856 00:37:05,690 --> 00:37:08,605 Dan itulah alasan yang Tentu saja memiliki begitu banyak hari akhir adalah 857 00:37:08,605 --> 00:37:10,535 untuk memberikan sedikit tekanan psikologis 858 00:37:10,535 --> 00:37:13,684 untuk memulai sebelumnya tapi masih membiarkan hal tergelincir ketika hal-hal memakan waktu lebih lama 859 00:37:13,684 --> 00:37:14,350 dari yang Anda harapkan. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: Dan Anda ingin menggunakan jam kantor sebanyak yang Anda bisa. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Ada pertanyaan? 862 00:37:20,291 --> 00:37:20,790 Baiklah. 863 00:37:20,790 --> 00:37:22,930 Nah, kenapa tidak kita menunda sini? 864 00:37:22,930 --> 00:37:23,487