1 00:00:00,000 --> 00:00:00,980 2 00:00:00,980 --> 00:00:04,410 >> [MUZIK bermain] 3 00:00:04,410 --> 00:00:11,147 4 00:00:11,147 --> 00:00:12,230 DAVID J. MALAN: Baiklah. 5 00:00:12,230 --> 00:00:16,440 Ini adalah CS50, dan ini adalah akhir Minggu 2. 6 00:00:16,440 --> 00:00:18,480 Jadi hari ini, kita akan untuk meneruskan rupa kami 7 00:00:18,480 --> 00:00:21,150 bagaimana kita mewakili perkara-perkara bawah hood-- yang bergerak 8 00:00:21,150 --> 00:00:23,520 dari nombor-nombor seperti integer dan terapung mata yang 9 00:00:23,520 --> 00:00:26,810 dan memberi tumpuan kepada tali dan program akhirnya lebih menarik. 10 00:00:26,810 --> 00:00:30,140 Tetapi kita juga akan melihat pada beberapa domain khusus problems-- 11 00:00:30,140 --> 00:00:33,620 pertama yang akan menjadi yang melibatkan kriptografi, 12 00:00:33,620 --> 00:00:36,570 seni bergegas maklumat, di mana anda lihat di atas di sini 13 00:00:36,570 --> 00:00:41,480 ialah gambar Radio Anak-Anak Yatim Annie cincin penyahkod rahsia daripada tadi. 14 00:00:41,480 --> 00:00:46,490 >> Ini sebenarnya bentuk yang sangat primitif dan bentuk mesra kanak-kanak daripada cryptopgraphy 15 00:00:46,490 --> 00:00:50,590 mana cincin ini mempunyai dua disks-- satu di dalam dan satu di luar. 16 00:00:50,590 --> 00:00:54,740 Dan oleh berputar salah seorang daripada mereka, anda boleh dasarnya beratur huruf seperti A 17 00:00:54,740 --> 00:00:59,520 melalui Z dengan huruf lain seperti B melalui A. Dalam erti kata lain, 18 00:00:59,520 --> 00:01:03,730 anda dapat berputar abjad, dengan itu datang dengan pemetaan dari 19 00:01:03,730 --> 00:01:07,820 surat kepada surat supaya, jika anda mahu menghantar mesej rahsia 20 00:01:07,820 --> 00:01:11,820 kepada seseorang seperti Annie, anda boleh menulis ke bawah mesej anda dan kemudian berputar 21 00:01:11,820 --> 00:01:15,370 huruf, di mana, jika anda bermakna untuk mengatakan "A," anda bukan berkata "B" 22 00:01:15,370 --> 00:01:17,280 anda bermaksud untuk mengatakan "B" anda bukan berkata "C" - 23 00:01:17,280 --> 00:01:20,240 atau sesuatu yang lebih pintar daripada bahawa- dan kemudian, akhirnya, 24 00:01:20,240 --> 00:01:24,630 selagi Annie mempunyai decoder ini cincin, dia boleh decode mesej. 25 00:01:24,630 --> 00:01:28,540 Sekarang, mana yang diketahui, sebenarnya, bahawa ini telah digunakan dalam filem yang sangat terkenal 26 00:01:28,540 --> 00:01:31,140 memainkan iklan nauseum semasa musim Krismas. 27 00:01:31,140 --> 00:01:32,650 Mari kita lihat di sini. 28 00:01:32,650 --> 00:01:35,294 29 00:01:35,294 --> 00:01:37,210 RALPHIE PARKER: "Sama ada diketahui oleh semua di dalam ringkasan 30 00:01:37,210 --> 00:01:41,000 bahawa Ralph Parker dengan ini dilantik ahli Little Orphan Annie Rahsia 31 00:01:41,000 --> 00:01:44,860 Circle dan adalah berhak kepada semua kepujian dan faedah yang berlaku dengannya. " 32 00:01:44,860 --> 00:01:47,410 >> RALPHIE PARKER (menyampaikan): Ditandatangani Little Orphan Annie. 33 00:01:47,410 --> 00:01:50,070 Balas, Pierre Andre! 34 00:01:50,070 --> 00:01:51,490 Dengan dakwat. 35 00:01:51,490 --> 00:01:55,494 Kepujian dan faedah, sudah pada usia sembilan. 36 00:01:55,494 --> 00:01:57,402 >> [MUZIK bermain] 37 00:01:57,402 --> 00:02:00,470 >> [RADIO Chatter] 38 00:02:00,470 --> 00:02:01,470 RALPHIE PARKER: Datang pada. 39 00:02:01,470 --> 00:02:02,344 Mari kita meneruskan ia. 40 00:02:02,344 --> 00:02:06,029 Saya tidak perlu semua jazz yang mengenai penyeludup dan lanun. 41 00:02:06,029 --> 00:02:08,820 RADIO juruhebah: Dengar esok malam untuk pengembaraan penutup yang 42 00:02:08,820 --> 00:02:11,060 The Pirate Kapal Hitam. 43 00:02:11,060 --> 00:02:14,740 Kini, sudah tiba masanya untuk Annie Mesej rahsia untuk anda ahli 44 00:02:14,740 --> 00:02:17,110 daripada Circle Rahsia. 45 00:02:17,110 --> 00:02:20,700 Ingat anak-anak, hanya ahli-ahli Rahsia Circle Annie 46 00:02:20,700 --> 00:02:23,270 boleh decode mesej rahsia Annie. 47 00:02:23,270 --> 00:02:27,270 >> Ingat, Annie adalah bergantung kepada anda. 48 00:02:27,270 --> 00:02:30,060 Terletak pin anda untuk B-2. 49 00:02:30,060 --> 00:02:34,004 Berikut adalah message-- 12, 11, 2-- 50 00:02:34,004 --> 00:02:36,503 RALPHIE PARKER (menyampaikan): Saya berada dalam mesyuarat rahsia pertama saya. 51 00:02:36,503 --> 00:02:40,041 RADIO juruhebah: --25, 14, 11, 18, 16-- 52 00:02:40,041 --> 00:02:42,790 RALPHIE PARKER (menyampaikan): Oh, Pierre adalah pada malam ini suara besar. 53 00:02:42,790 --> 00:02:46,110 Saya boleh mengatakan bahawa pada malam ini mesej adalah benar-benar penting. 54 00:02:46,110 --> 00:02:47,930 >> RADIO juruhebah: --3, 25. 55 00:02:47,930 --> 00:02:49,940 Itulah mesej dari Annie dirinya. 56 00:02:49,940 --> 00:02:52,182 Ingat, jangan beritahu sesiapa. 57 00:02:52,182 --> 00:02:55,077 >> [Jilat] 58 00:02:55,077 --> 00:02:57,285 RALPHIE PARKER (menyampaikan): Sembilan puluh saat kemudian, saya 59 00:02:57,285 --> 00:03:00,090 dalam bilik hanya dalam rumah di mana seorang budak sembilan 60 00:03:00,090 --> 00:03:04,380 boleh duduk di privasi dan decode. 61 00:03:04,380 --> 00:03:04,990 Ah. 62 00:03:04,990 --> 00:03:05,680 "B." 63 00:03:05,680 --> 00:03:06,524 >> [Tertawa kecil] 64 00:03:06,524 --> 00:03:08,684 >> RALPHIE PARKER (menyampaikan): Saya pergi ke seterusnya. 65 00:03:08,684 --> 00:03:09,610 "E." 66 00:03:09,610 --> 00:03:11,641 Perkataan pertama adalah "menjadi." 67 00:03:11,641 --> 00:03:12,140 Ya! 68 00:03:12,140 --> 00:03:14,293 Ia akan datang lebih mudah sekarang. 69 00:03:14,293 --> 00:03:15,259 "U." 70 00:03:15,259 --> 00:03:16,225 >> [Tertawa kecil] 71 00:03:16,225 --> 00:03:18,157 >> RANDY PARKER: Aw, datang, Ralphie. 72 00:03:18,157 --> 00:03:19,606 Saya terpaksa pergi! 73 00:03:19,606 --> 00:03:21,538 >> RALPHIE PARKER: Saya akan sampai, Ma. 74 00:03:21,538 --> 00:03:22,504 Aduh. 75 00:03:22,504 --> 00:03:25,402 76 00:03:25,402 --> 00:03:31,220 "T." "O." "Pastikan kepada. "" Pastikan anda "apa? 77 00:03:31,220 --> 00:03:33,981 Apakah Little Orphan Annie cuba katakan? "Pastikan anda" apa? 78 00:03:33,981 --> 00:03:35,522 IBU: Ralphie, Randy telah mendapat pergi. 79 00:03:35,522 --> 00:03:36,735 Adakah anda sila keluar? 80 00:03:36,735 --> 00:03:38,190 >> RALPHIE PARKER: Baiklah, mama! 81 00:03:38,190 --> 00:03:39,787 Saya akan keluar betul! 82 00:03:39,787 --> 00:03:41,995 RALPHIE PARKER (menyampaikan): Saya semakin hampir sekarang. 83 00:03:41,995 --> 00:03:43,370 Ketegangan itu amat dahsyat. 84 00:03:43,370 --> 00:03:44,794 Apakah ia? 85 00:03:44,794 --> 00:03:47,656 Nasib planet ini mungkin tergantung di kira-kira. 86 00:03:47,656 --> 00:03:50,518 >> IBU: Ralphie, ini Randy mendapat untuk pergi! 87 00:03:50,518 --> 00:03:53,635 >> RALPHIE PARKER: Saya akan menjadi hak keluarlah, menangis dengan kuat! 88 00:03:53,635 --> 00:03:55,343 RALPHIE PARKER (Menyampaikan): Hampir sana! 89 00:03:55,343 --> 00:03:56,520 Jari saya terbang! 90 00:03:56,520 --> 00:03:58,500 Fikiran saya perangkap keluli. 91 00:03:58,500 --> 00:03:59,850 Setiap liang digetarkan. 92 00:03:59,850 --> 00:04:01,806 Ia adalah hampir jelas! 93 00:04:01,806 --> 00:04:02,773 Ya! 94 00:04:02,773 --> 00:04:03,273 Ya! 95 00:04:03,273 --> 00:04:03,773 Ya! 96 00:04:03,773 --> 00:04:04,740 Ya! 97 00:04:04,740 --> 00:04:10,250 >> RALPHIE PARKER: "Pastikan minum Ovaltine anda. " 98 00:04:10,250 --> 00:04:10,750 Ovaltine? 99 00:04:10,750 --> 00:04:14,864 100 00:04:14,864 --> 00:04:17,539 A komersial yg tdk memuaskan? 101 00:04:17,539 --> 00:04:19,439 >> [MUZIK bermain] 102 00:04:19,439 --> 00:04:21,724 >> RALPHIE PARKER: Anak anjing betina a. 103 00:04:21,724 --> 00:04:23,460 >> [KETAWA] 104 00:04:23,460 --> 00:04:27,070 >> DAVID J. MALAN: Supaya maka sepintas lalu apa kriptografi 105 00:04:27,070 --> 00:04:29,880 boleh untuk this-- minum dari tadi. 106 00:04:29,880 --> 00:04:30,900 Jadi pengumuman yang cepat. 107 00:04:30,900 --> 00:04:33,410 Jika ada masa lapang ini Jumaat di 13:15 dan akan 108 00:04:33,410 --> 00:04:36,610 suka untuk menyertai kami untuk CS50 makan tengah hari, menuju ke URL ini di sini. 109 00:04:36,610 --> 00:04:38,080 Siapa cepat, berkhidmat seperti biasa. 110 00:04:38,080 --> 00:04:41,840 Tetapi dari masa ke masa, kami akan memastikan bahawa sesiapa yang yang ingin mengambil bahagian 111 00:04:41,840 --> 00:04:43,640 boleh menjadualkan-bijaksana. 112 00:04:43,640 --> 00:04:45,170 >> Jadi tali. 113 00:04:45,170 --> 00:04:47,940 Kami mempunyai Zamyla-- yang kini anda telah bertemu yang paling mungkin 114 00:04:47,940 --> 00:04:50,750 dalam Set Masalah 1-- yang nama dieja dengan itu. 115 00:04:50,750 --> 00:04:53,570 Dan andaikan anda menaip namanya ke dalam program komputer itu 116 00:04:53,570 --> 00:04:55,710 menggunakan sesuatu seperti getString. 117 00:04:55,710 --> 00:04:57,890 Dalam usaha untuk mendapatkan semula mereka ketukan kekunci, bagaimana 118 00:04:57,890 --> 00:05:01,620 kita pergi tentang mewakili tali, perkataan, perenggan, 119 00:05:01,620 --> 00:05:03,960 atau pelbagai surat seperti ini di sini? 120 00:05:03,960 --> 00:05:06,790 >> Kami berbual-bual masa akhir mengenai integer dan masalah 121 00:05:06,790 --> 00:05:09,960 yang timbul dengan limpahan integer dan terapung mata yang 122 00:05:09,960 --> 00:05:12,190 dan masalah yang timbul dalam ketepatan. 123 00:05:12,190 --> 00:05:16,080 Dengan tali, kita sekurang-kurangnya mempunyai sedikit lebih fleksibiliti 124 00:05:16,080 --> 00:05:17,970 kerana hanya strings-- dalam world-- sebenar 125 00:05:17,970 --> 00:05:19,790 boleh menjadi cukup panjang sewenang-wenangnya. 126 00:05:19,790 --> 00:05:21,055 Pretty pendek, cukup panjang. 127 00:05:21,055 --> 00:05:23,680 Tetapi walaupun begitu, kita akan mendapati bahawa kadang-kadang komputer boleh 128 00:05:23,680 --> 00:05:27,200 kehabisan ingatan dan tidak menyimpan rentetan cukup besar. 129 00:05:27,200 --> 00:05:30,840 >> Tetapi untuk sekarang, mari kita mulakan untuk menggambarkan rentetan sebagai sesuatu di kotak-kotak 130 00:05:30,840 --> 00:05:31,340 di sini. 131 00:05:31,340 --> 00:05:36,410 Jadi enam seperti kotak, setiap yang mewakili watak atau "char." 132 00:05:36,410 --> 00:05:40,646 Jadi ingat bahawa "char" - c-h-a-r-- adalah salah satu jenis data terbina dalam dalam C. 133 00:05:40,646 --> 00:05:43,520 Dan apa yang baik adalah bahawa anda boleh menggunakan yang jenis sebagai blok bangunan, 134 00:05:43,520 --> 00:05:47,880 sekeping teka-teki, jika anda akan, untuk membentuk Jenis yang lebih besar data yang kami akan terus 135 00:05:47,880 --> 00:05:49,410 untuk memanggil "tali." 136 00:05:49,410 --> 00:05:53,650 >> Kini, apa yang berguna tentang berfikir mengenai perkara-perkara seperti tali dengan cara ini? 137 00:05:53,650 --> 00:05:57,720 Nah, ternyata bahawa kita boleh sebenarnya memanfaatkan struktur ini 138 00:05:57,720 --> 00:06:01,420 untuk benar-benar mengakses aksara individu dengan cara yang cukup mudah. 139 00:06:01,420 --> 00:06:04,099 Saya akan pergi ke depan dan mewujudkan fail yang dipanggil "stringzero.c," 140 00:06:04,099 --> 00:06:05,765 tetapi anda boleh memanggilnya apa sahaja yang anda suka. 141 00:06:05,765 --> 00:06:08,500 Dan di laman web kursus adalah sudah contoh ini terlebih dahulu, 142 00:06:08,500 --> 00:06:10,430 jadi anda tidak perlu menaip semua keluar. 143 00:06:10,430 --> 00:06:13,820 >> Dan saya akan pergi ke depan dan pertama buat tidak sah utama int. 144 00:06:13,820 --> 00:06:15,980 Dan dalam beberapa hari, kami akan mula mengusik selain 145 00:06:15,980 --> 00:06:19,070 apa yang tidak sah di sini, mengapa ia int sebelah utama, dan sebagainya. 146 00:06:19,070 --> 00:06:21,180 Tetapi untuk sekarang, mari kita terus untuk menyalin tampal itu. 147 00:06:21,180 --> 00:06:23,455 >> Saya akan mengaku tali yang dipanggil s. 148 00:06:23,455 --> 00:06:26,920 Dan saya akan pulang dari GetString apa sahaja jenis pengguna dalam. 149 00:06:26,920 --> 00:06:29,170 Ini akan menjadi mudah program, tidak ada arahan, 150 00:06:29,170 --> 00:06:31,336 Saya hanya akan membabi buta menjangkakan bahawa pengguna tahu 151 00:06:31,336 --> 00:06:32,600 apa yang perlu dilakukan untuk memastikan ia mudah. 152 00:06:32,600 --> 00:06:34,220 >> Dan sekarang saya akan mempunyai untuk gelung. 153 00:06:34,220 --> 00:06:37,450 Dan dalam gelung untuk saya Saya akan mempunyai int i mendapat sifar. 154 00:06:37,450 --> 00:06:40,660 Dan saya adalah, sekali lagi, hanya konvensyen, pembolehubah indeks pengiraan, 155 00:06:40,660 --> 00:06:42,350 tetapi saya boleh memanggil ini apa sahaja yang saya mahu. 156 00:06:42,350 --> 00:06:46,275 Saya akan melakukan i kurang than-- baik Nama Zamyla adalah enam huruf. 157 00:06:46,275 --> 00:06:48,150 Jadi saya akan keras kod yang ada sekarang. 158 00:06:48,150 --> 00:06:49,730 >> Kemudian i ++. 159 00:06:49,730 --> 00:06:53,190 Dan kini bahagian dalam ini kerinting kawat gigi saya akan lakukan printf, 160 00:06:53,190 --> 00:06:55,460 dan saya mahu untuk mencetak satu aksara pada satu masa. 161 00:06:55,460 --> 00:06:58,227 Jadi saya akan menggunakan% c untuk mungkin pertama kali. 162 00:06:58,227 --> 00:07:00,560 Dan kemudian saya ingin mencetak setiap watak pada baris sendiri. 163 00:07:00,560 --> 00:07:02,550 Jadi saya akan meletakkan sedikit backslash n di sana. 164 00:07:02,550 --> 00:07:03,640 Tutup quote. 165 00:07:03,640 --> 00:07:06,250 >> Dan sekarang saya mahu melakukan sesuatu di sini. 166 00:07:06,250 --> 00:07:10,610 Saya ingin mencetak surat tertentu dalam tali, 167 00:07:10,610 --> 00:07:13,670 s, kerana saya iterating dari sifar ke atas sehingga enam. 168 00:07:13,670 --> 00:07:17,150 Dalam erti kata lain, saya mahu mencetak watak i'th s. 169 00:07:17,150 --> 00:07:18,420 Sekarang bagaimana saya boleh melakukan ini? 170 00:07:18,420 --> 00:07:21,550 >> Juga sama seperti tempat di perwakilan ini di sini, 171 00:07:21,550 --> 00:07:25,560 jenis, nampak tanggapan tinju surat, anda juga boleh berbuat demikian 172 00:07:25,560 --> 00:07:32,630 sintaksis dalam C dengan hanya menyatakan, Saya ingin mencetak s i'th watak. 173 00:07:32,630 --> 00:07:35,640 Dengan menggunakan kurungan persegi pada papan kekunci komputer anda 174 00:07:35,640 --> 00:07:38,910 bahawa pada papan kekunci Amerika Syarikat adalah amnya melebihi kekunci kembali anda. 175 00:07:38,910 --> 00:07:42,630 >> Jadi ini tidak berapa tepat lagi, kerana anda mungkin perasan. 176 00:07:42,630 --> 00:07:44,780 Tetapi saya akan jenis secara membuta tuli terus maju di sini. 177 00:07:44,780 --> 00:07:47,020 Dan saya akan melakukan membuat tali 0. 178 00:07:47,020 --> 00:07:50,860 Tetapi sebelum saya melakukan ini, mari kita lihat jika kita tidak boleh menjangka beberapa kesalahan yang sama. 179 00:07:50,860 --> 00:07:52,844 Adakah ini akan menyusun? 180 00:07:52,844 --> 00:07:54,510 Tidak, saya hilang sejumlah besar perkara. 181 00:07:54,510 --> 00:07:55,280 Perpustakaan saya dengar. 182 00:07:55,280 --> 00:07:58,480 >> Jadi yang header fail mungkin saya ingin menambah di sini? 183 00:07:58,480 --> 00:07:59,205 Yeah. 184 00:07:59,205 --> 00:08:01,580 >> PENONTON: Anda perlu Saya standard / O [didengar] 185 00:08:01,580 --> 00:08:02,663 >> DAVID J. MALAN: Cemerlang. 186 00:08:02,663 --> 00:08:06,060 Jadi saya perlu standard I / O. Untuk apa tujuan saya mahu standard I / O? 187 00:08:06,060 --> 00:08:06,670 Untuk printf. 188 00:08:06,670 --> 00:08:09,220 Jadi termasuk stdio.h. 189 00:08:09,220 --> 00:08:13,490 Dan anda juga mencadangkan bahawa saya termasuk perpustakaan CS50 itu untuk apa sebab? 190 00:08:13,490 --> 00:08:14,650 Mempunyai tali. 191 00:08:14,650 --> 00:08:17,780 Oleh itu, kita akan melihat apa yang Perpustakaan CS50 adalah melakukan 192 00:08:17,780 --> 00:08:19,260 untuk mewujudkan tanggapan ini rentetan. 193 00:08:19,260 --> 00:08:21,930 Tetapi untuk sekarang, anda hanya boleh berfikir ia sebagai jenis data sebenar. 194 00:08:21,930 --> 00:08:23,596 >> Supaya seolah-olah sedikit yang dibersihkan. 195 00:08:23,596 --> 00:08:27,060 Dan sekarang saya akan pergi ke depan dan sememangnya melakukan membuat tali 0. 196 00:08:27,060 --> 00:08:27,700 Disusun. 197 00:08:27,700 --> 00:08:28,370 Jadi itulah yang baik. 198 00:08:28,370 --> 00:08:32,799 Jadi ./string0 biarlah saya mengezum masuk jadi kami boleh melihat dengan lebih dekat apa yang berlaku. 199 00:08:32,799 --> 00:08:33,850 Enter. 200 00:08:33,850 --> 00:08:37,789 Z-A-M-Y-L-A masuk. 201 00:08:37,789 --> 00:08:39,440 Dan kami telah dicetak kepada nama Zamyla ini. 202 00:08:39,440 --> 00:08:40,409 >> Jadi, itu cukup baik. 203 00:08:40,409 --> 00:08:43,220 Jadi sekarang mari kita pergi ke depan dan menjalankan program ini lagi, 204 00:08:43,220 --> 00:08:45,659 dan menaip nama penuh Daven ini. 205 00:08:45,659 --> 00:08:46,450 Kejutan, kejutan. 206 00:08:46,450 --> 00:08:48,021 Enter. 207 00:08:48,021 --> 00:08:48,520 Hmm. 208 00:08:48,520 --> 00:08:51,750 Kami tidak dicetak ini Daven Nama pertama penuh dengan betul. 209 00:08:51,750 --> 00:08:54,250 Sekarang ini harus jelas dalam tinjauan ke belakang kerana apa, 210 00:08:54,250 --> 00:08:57,010 semacam, keputusan reka bentuk bodoh? 211 00:08:57,010 --> 00:08:59,590 >> Ya, saya keras berkod yang enam bahagian dalam gelung untuk saya. 212 00:08:59,590 --> 00:09:01,610 Sekarang saya hanya kerana Saya tahu nama Zamyla ini 213 00:09:01,610 --> 00:09:02,776 akan menjadi enam huruf. 214 00:09:02,776 --> 00:09:04,720 Tetapi sudah tentu ini bukan penyelesaian umum. 215 00:09:04,720 --> 00:09:07,720 Jadi ternyata kita boleh secara dinamik memikirkan panjang rentetan 216 00:09:07,720 --> 00:09:10,440 dengan memanggil fungsi yang dipanggil strlen. 217 00:09:10,440 --> 00:09:12,840 >> Sekali lagi, sengaja ringkas yang dinamakan hanya 218 00:09:12,840 --> 00:09:14,450 untuk menjadikannya lebih mudah untuk menaip. 219 00:09:14,450 --> 00:09:17,170 Tetapi itu sinonim dengan semakin panjang rentetan. 220 00:09:17,170 --> 00:09:23,190 Saya akan kembali ke terminal saya tingkap dan semula menjalankan pengkompil. 221 00:09:23,190 --> 00:09:24,170 Tetapi ia menjerit pada saya. 222 00:09:24,170 --> 00:09:29,130 Tersirat mengisytiharkan fungsi perpustakaan strlen dengan jenis tidak ditandatangani int const-- 223 00:09:29,130 --> 00:09:29,780 Saya hilang. 224 00:09:29,780 --> 00:09:30,590 Sepenuhnya. 225 00:09:30,590 --> 00:09:32,940 >> Jadi, terutama kerana anda mata mula menjadi sayu lebih 226 00:09:32,940 --> 00:09:36,000 dengan mesej ralat seperti ini, tumpuan jujur ​​pada beberapa perkataan pertama. 227 00:09:36,000 --> 00:09:38,590 Kita tahu masalah ini adalah dalam baris 8, seperti yang ditunjukkan di sini. 228 00:09:38,590 --> 00:09:40,500 Dan ia dalam rentetan-0.c. 229 00:09:40,500 --> 00:09:43,580 Tersirat mengisytiharkan fungsi perpustakaan strlen. 230 00:09:43,580 --> 00:09:47,000 Supaya biasanya akan menjadi corak mesej ralat. 231 00:09:47,000 --> 00:09:49,190 Tersirat mengisytiharkan sesuatu. 232 00:09:49,190 --> 00:09:53,250 >> Jadi ringkasnya, apa yang aku seolah-olah telah dilakukan berkenaan dengan beratur 8, di sini. 233 00:09:53,250 --> 00:09:56,880 Apa yang mungkin menjadi penyelesaian menjadi lebih jika anda tidak pernah menggunakan strlen diri anda? 234 00:09:56,880 --> 00:09:58,907 >> PENONTON: Sebahagian daripada perpustakaan yang berbeza? 235 00:09:58,907 --> 00:10:00,740 DAVID J. MALAN: Bahagian perpustakaan yang berbeza. 236 00:10:00,740 --> 00:10:02,400 Jadi adalah diisytiharkan, jadi untuk bercakap. 237 00:10:02,400 --> 00:10:07,510 Ianya disebut dalam beberapa fail selain daripada stdio.h dan CS50.h. 238 00:10:07,510 --> 00:10:09,179 Sekarang di mana ia ditakrifkan? 239 00:10:09,179 --> 00:10:12,220 Secara jujur, anda sama ada perlu hanya tahu ini di luar bahagian atas kepala anda, 240 00:10:12,220 --> 00:10:13,640 atau anda Google ini dan mengetahui. 241 00:10:13,640 --> 00:10:18,150 Atau tahu ini, saya telah membuka dalam CS50 manakah peralatan program terminal, yang 242 00:10:18,150 --> 00:10:22,200 adil, versi skrin penuh yang besar apa yang ada di bahagian bawah tetingkap gedit ini. 243 00:10:22,200 --> 00:10:24,970 >> Dan ternyata bahawa terdapat arahan juga ringkas, yang dipanggil 244 00:10:24,970 --> 00:10:29,280 lelaki untuk manual, di mana jika anda taip nama fungsi dan tekan Enter, 245 00:10:29,280 --> 00:10:32,240 anda akan kembali dengan adil dokumentasi yang sukar difahami. 246 00:10:32,240 --> 00:10:35,299 Ia hanya teks yang biasanya kelihatan sesuatu yang kecil seperti ini. 247 00:10:35,299 --> 00:10:37,090 Ia sedikit hangat pada pandangan pertama. 248 00:10:37,090 --> 00:10:39,048 Tetapi terus terang saya akan membiarkan mata saya menjadi sayu lebih 249 00:10:39,048 --> 00:10:41,930 dan hanya memberi tumpuan kepada bahagian Saya mengambil berat tentang buat masa ini. 250 00:10:41,930 --> 00:10:42,780 >> Yang ini. 251 00:10:42,780 --> 00:10:45,470 Yang kelihatan seperti struktur sesuatu yang saya tahu. 252 00:10:45,470 --> 00:10:48,080 Sesungguhnya halaman lelaki itu, jadi bercakap, akan memberitahu anda 253 00:10:48,080 --> 00:10:51,590 dalam apa header memfailkan fungsi seperti strlen ditakrifkan. 254 00:10:51,590 --> 00:10:54,170 Jadi saya akan kembali sekarang untuk gedit. 255 00:10:54,170 --> 00:10:59,070 Dan saya akan pergi ke depan dan masukkan di sini #temasuk 256 00:10:59,070 --> 00:11:00,480 dan menyimpan fail. 257 00:11:00,480 --> 00:11:04,300 >> Saya akan mengosongkan skrin dengan Kawalan L Jika anda telah tertanya-tanya. 258 00:11:04,300 --> 00:11:08,210 Dan saya akan berjalan semula make string.0, menyusun masa ini. 259 00:11:08,210 --> 00:11:11,790 ./string.0 Zamyla. 260 00:11:11,790 --> 00:11:15,020 Yang seolah-olah untuk bekerja Biar saya pergi hadapan dan jalankan lagi dengan Davenport. 261 00:11:15,020 --> 00:11:15,860 Enter. 262 00:11:15,860 --> 00:11:17,730 Dan itu juga seolah-olah bekerja. 263 00:11:17,730 --> 00:11:21,220 >> Oleh itu, kita boleh melakukan sedikit lebih baik daripada ini, walaupun, kita boleh mula perkara yang kemas 264 00:11:21,220 --> 00:11:23,257 sehingga hanya sedikit. 265 00:11:23,257 --> 00:11:25,590 Dan saya akan benar-benar memperkenalkan satu perkara lain sekarang. 266 00:11:25,590 --> 00:11:28,930 Saya akan pergi ke depan dan menyelamatkan ini dalam fail yang berbeza. 267 00:11:28,930 --> 00:11:31,770 Dan saya akan memanggil string1.c fail ini hanya 268 00:11:31,770 --> 00:11:34,620 supaya selaras dengan kod anda akan dapat untuk mencari dalam talian. 269 00:11:34,620 --> 00:11:37,050 >> Dan mari kita fokus pada kod sama. 270 00:11:37,050 --> 00:11:39,000 Ia ternyata bahawa saya telah jenis menjadi pengambilan 271 00:11:39,000 --> 00:11:42,600 untuk diberikan hakikat bahawa komputer riba saya, dan seterusnya, perkakas CS50 272 00:11:42,600 --> 00:11:47,450 mempunyai banyak memori, banyak RAM, banyak bait ruang 273 00:11:47,450 --> 00:11:48,920 di mana saya boleh menyimpan tali. 274 00:11:48,920 --> 00:11:53,560 >> Tetapi realitinya jika saya menaip panjang mencukupi, dan cukup ketukan kekunci, 275 00:11:53,560 --> 00:11:56,170 Saya boleh dalam jenis teori dalam lebih banyak aksara 276 00:11:56,170 --> 00:11:58,830 daripada komputer saya secara fizikal mempunyai memori untuk. 277 00:11:58,830 --> 00:11:59,830 Dan ini adalah bermasalah. 278 00:11:59,830 --> 00:12:03,050 Sama seperti int satu hanya boleh mengira begitu tinggi, dalam teori, 279 00:12:03,050 --> 00:12:06,600 anda hanya boleh mengasak begitu banyak aksara ke dalam RAM komputer anda atau Random 280 00:12:06,600 --> 00:12:07,920 Access Memory. 281 00:12:07,920 --> 00:12:11,140 >> Jadi saya telah menjangka lebih baik masalah ini, walaupun 282 00:12:11,140 --> 00:12:13,660 walaupun ia mungkin yang jarang berlaku kes sudut, jadi untuk bercakap. 283 00:12:13,660 --> 00:12:15,670 Tidak sering terjadi, boleh berlaku. 284 00:12:15,670 --> 00:12:18,815 Dan jika ia berlaku dan saya tidak menjangka dan program untuk itu, 285 00:12:18,815 --> 00:12:20,300 program saya boleh melakukan yang tahu apa. 286 00:12:20,300 --> 00:12:22,220 Freeze, gantung, reboot, apa sahaja. 287 00:12:22,220 --> 00:12:24,490 Sesuatu yang dijangka mungkin berlaku. 288 00:12:24,490 --> 00:12:27,120 >> Jadi apa yang saya akan lakukan sekarang, selepas ini benar-benar, 289 00:12:27,120 --> 00:12:31,630 adalah sebelum saya pernah membabi buta menggunakan pembolehubah seperti yang s 290 00:12:31,630 --> 00:12:36,790 telah diberi nilai pulangan beberapa fungsi lain seperti getstring, 291 00:12:36,790 --> 00:12:40,200 Saya akan memastikan yang nilainya sah. 292 00:12:40,200 --> 00:12:44,280 Jadi saya tahu hanya dari setelah membaca Dokumentasi CS50 untuk getstring, 293 00:12:44,280 --> 00:12:49,020 yang akhirnya kami akan menunjukkan anda di, getstring yang mengembalikan simbol khas 294 00:12:49,020 --> 00:12:53,610 dipanggil NULL, N-U-L-L dalam semua topi, jika ada masalah. 295 00:12:53,610 --> 00:12:55,650 >> Jadi biasanya, ia mengembalikan rentetan. 296 00:12:55,650 --> 00:12:59,700 Tetapi sebaliknya jika ia kembali N-U-L-L-- akhirnya kita akan melihat apa yang benar-benar 297 00:12:59,700 --> 00:13:01,790 ertinya-- bahawa hanya cara sesuatu yang buruk berlaku. 298 00:13:01,790 --> 00:13:05,560 Sekarang ini bermakna, sama seperti dalam Scratch, Saya boleh memeriksa keadaan di sini dalam C, 299 00:13:05,560 --> 00:13:08,830 jika s tidak NULL sama. 300 00:13:08,830 --> 00:13:11,930 Jadi jika anda telah tidak dilihat sebelum ini, ini hanya bermaksud tidak sama. 301 00:13:11,930 --> 00:13:15,290 >> Jadi ia bertentangan dengan setaraf sama, yang, ingat, 302 00:13:15,290 --> 00:13:18,940 adalah berbeza dari satu sama, iaitu tugasan. 303 00:13:18,940 --> 00:13:23,030 Jadi, jika s tidak sama NULL, barulah lakukan 304 00:13:23,030 --> 00:13:25,980 Saya mahu melaksanakan ini baris kod. 305 00:13:25,980 --> 00:13:28,080 Jadi dalam erti kata lain, sebelum saya menyelam di membabi buta 306 00:13:28,080 --> 00:13:30,919 dan mula iterating lebih, dan merawat ia 307 00:13:30,919 --> 00:13:33,710 seolah-olah ia adalah satu urutan aksara, saya akan periksa, 308 00:13:33,710 --> 00:13:37,900 tunggu satu minit, adalah s pasti tidak sama dengan nilai yang istimewa ini, NULL? 309 00:13:37,900 --> 00:13:40,030 >> Kerana jika ia adalah, perkara-perkara buruk boleh berlaku. 310 00:13:40,030 --> 00:13:43,080 Dan sekarang, menganggap perkara-perkara yang tidak baik berlaku ertinya crash program anda, 311 00:13:43,080 --> 00:13:45,070 dan anda tidak boleh semestinya pulih. 312 00:13:45,070 --> 00:13:46,800 Jadi terus terang, ia kelihatan hodoh. 313 00:13:46,800 --> 00:13:48,660 ia jenis mengelirukan sekarang untuk renungan. 314 00:13:48,660 --> 00:13:50,780 Tetapi ini akan menjadi lebih biasa tidak lama lagi. 315 00:13:50,780 --> 00:13:52,920 >> Tetapi saya akan mencadangkan kini satu peningkatan yang lain. 316 00:13:52,920 --> 00:13:54,660 Itu satu peningkatan kepada kebenaran. 317 00:13:54,660 --> 00:13:58,800 Program saya kini lebih betul, kerana dalam kes yang jarang berlaku bahawa memori tidak cukup 318 00:13:58,800 --> 00:14:01,180 wujud, saya akan mengendalikan ia, dan saya akan melakukan apa-apa. 319 00:14:01,180 --> 00:14:02,680 Saya sekurang-kurangnya tidak akan kemalangan. 320 00:14:02,680 --> 00:14:05,000 >> Tetapi mari kita buat versi akhir di sini. 321 00:14:05,000 --> 00:14:07,690 Dan fail yang dipanggil string2.c. 322 00:14:07,690 --> 00:14:10,190 Saya akan paste yang kod yang sama untuk seketika, 323 00:14:10,190 --> 00:14:14,210 dan saya akan mengetengahkan ini talian, 11, di sini, hanya seketika. 324 00:14:14,210 --> 00:14:18,179 Sekarang realitinya adalah bahawa penyusun pintar seperti bunyi berdering boleh menetapkan ini untuk kita 325 00:14:18,179 --> 00:14:19,970 di belakang tabir tanpa kita pernah mengetahui. 326 00:14:19,970 --> 00:14:24,670 Tetapi mari kita berfikir tentang ini asas reka bentuk yang bermasalah. 327 00:14:24,670 --> 00:14:29,010 >> Ini baris kod adalah, sudah tentu, berkata, memulakan beberapa pembolehubah i 0. 328 00:14:29,010 --> 00:14:30,260 Itu cukup mudah. 329 00:14:30,260 --> 00:14:34,691 Dan apa lagi ini adalah pernyataan, di sini, i ++, melakukan? 330 00:14:34,691 --> 00:14:37,066 Kita lihat sebelum ini, tetapi kita tidak benar-benar bercakap mengenainya. 331 00:14:37,066 --> 00:14:37,900 >> PENONTON: menokok i. 332 00:14:37,900 --> 00:14:39,191 >> DAVID J. MALAN: menokok i. 333 00:14:39,191 --> 00:14:41,890 Maka pada setiap lelaran melalui gelung ini, setiap kitaran, 334 00:14:41,890 --> 00:14:43,570 anda menokok i demi satu. 335 00:14:43,570 --> 00:14:45,740 Jadi ia menjadi lebih besar, dan lebih besar, dan lebih besar sehingga gelung tamat. 336 00:14:45,740 --> 00:14:46,810 Bagaimana ia menamatkan? 337 00:14:46,810 --> 00:14:49,430 Juga ada pertengahan ini syarat yang kami telah digunakan sebelum ini. 338 00:14:49,430 --> 00:14:52,500 Anda telah melihat dan walkthroughs dalam P set. 339 00:14:52,500 --> 00:14:53,880 >> Tetapi apa yang kata ini? 340 00:14:53,880 --> 00:14:58,352 Adakah gelung berikut supaya selagi i adalah kurang daripada apa? 341 00:14:58,352 --> 00:14:59,810 PENONTON: Panjang tali. 342 00:14:59,810 --> 00:15:01,518 DAVID J. MALAN: The panjang tali. 343 00:15:01,518 --> 00:15:04,300 Oleh itu, ia diterjemahkan secara bersih cantik ke Bahasa Inggeris dalam erti kata itu. 344 00:15:04,300 --> 00:15:08,810 Sekarang masalahnya ialah bahawa setiap kali saya melelar melalui gelung ini dalam teori, 345 00:15:08,810 --> 00:15:10,000 Saya bertanya soalan ini. 346 00:15:10,000 --> 00:15:12,250 I adalah kurang daripada panjang tali s? 347 00:15:12,250 --> 00:15:14,500 I adalah kurang daripada panjang tali s? 348 00:15:14,500 --> 00:15:18,380 >> Sekarang i berubah pada setiap lelaran? 349 00:15:18,380 --> 00:15:18,880 Ia adalah. 350 00:15:18,880 --> 00:15:19,629 Kerana ++ itu. 351 00:15:19,629 --> 00:15:21,700 Jadi setiap lelaran i semakin besar. 352 00:15:21,700 --> 00:15:25,411 Tetapi s semakin besar, atau yang lebih kecil, atau menukar sama sekali? 353 00:15:25,411 --> 00:15:25,910 No. 354 00:15:25,910 --> 00:15:30,240 Jadi dari segi reka bentuk, salah satu paksi bersama-sama yang kita cuba untuk menilai kod 355 00:15:30,240 --> 00:15:32,610 dalam kelas, ini berasa jenis bodoh. 356 00:15:32,610 --> 00:15:34,690 >> Seperti anda secara harfiah, pada setiap lelaran 357 00:15:34,690 --> 00:15:37,110 gelung ini meminta soalan bodoh sama sekali lagi, 358 00:15:37,110 --> 00:15:40,770 dan sekali lagi, dan sekali lagi, dan benar-benar ia tidak akan berubah. 359 00:15:40,770 --> 00:15:44,220 Sekurang-kurangnya jika saya tidak menyentuh dan cuba untuk menukar kandungan s. 360 00:15:44,220 --> 00:15:46,610 Jadi saya boleh melakukan sedikit lebih baik daripada ini. 361 00:15:46,610 --> 00:15:49,530 >> Dan apa yang saya akan lakukan tidak mengisytiharkan hanya satu pembolehubah i, 362 00:15:49,530 --> 00:15:53,330 tetapi pembolehubah kedua saya akan sewenang-wenangnya, tetapi konvensional, memanggilnya n. 363 00:15:53,330 --> 00:15:55,940 Berikan n sama dengan Panjang rentetan s. 364 00:15:55,940 --> 00:15:59,090 Dan kemudian di sini, saya akan melakukan pengoptimuman sedikit pandai, jadi 365 00:15:59,090 --> 00:16:03,460 untuk bercakap, bahawa pada akhir hari tidak ada lagi yang betul atau tidak kurang betul 366 00:16:03,460 --> 00:16:04,260 daripada sebelumnya. 367 00:16:04,260 --> 00:16:05,500 Tetapi ia reka bentuk yang lebih baik. 368 00:16:05,500 --> 00:16:09,480 Malah yang saya menggunakan masa yang kurang, kurang kitaran CPU, jadi 369 00:16:09,480 --> 00:16:14,040 untuk bercakap, untuk menjawab yang sama soalan, tetapi hanya sekali. 370 00:16:14,040 --> 00:16:17,870 >> Apa-apa soalan pada umum yang prinsip yang bertambah baik, 371 00:16:17,870 --> 00:16:21,294 berkata, kecekapan program ini? 372 00:16:21,294 --> 00:16:21,991 Yeah? 373 00:16:21,991 --> 00:16:23,699 PENONTON: Kenapa anda menggunakan [didengar]? 374 00:16:23,699 --> 00:16:25,760 375 00:16:25,760 --> 00:16:27,010 DAVID J. MALAN: Soalan yang baik. 376 00:16:27,010 --> 00:16:30,690 Jadi, mengapa kita meletakkan ++ pada akhir i bukan permulaan i? 377 00:16:30,690 --> 00:16:33,070 Dalam kes ini, ia mempunyai tidak memberi kesan berfungsi. 378 00:16:33,070 --> 00:16:36,670 Dan secara umum, saya cenderung untuk menggunakan operator postfix yang 379 00:16:36,670 --> 00:16:41,750 supaya ia sedikit lebih jelas apabila operasi yang sedang berlaku. 380 00:16:41,750 --> 00:16:46,670 >> Bagi mereka yang tidak biasa, terdapat satu lagi kenyataan di mana anda boleh melakukan ++ i. 381 00:16:46,670 --> 00:16:48,747 Ini adalah fungsi bersamaan dalam kes ini 382 00:16:48,747 --> 00:16:51,080 kerana ada apa-apa lagi sekitar incrementation itu. 383 00:16:51,080 --> 00:16:54,435 Tetapi anda boleh datang dengan kes dan baris kod 384 00:16:54,435 --> 00:16:55,810 di mana yang membuat perbezaan. 385 00:16:55,810 --> 00:16:57,810 Jadi secara amnya, kita tidak walaupun bercakap kira-kira satu ini. 386 00:16:57,810 --> 00:17:00,690 Kerana terus-terang, ia membuatkan anda kod seksi, dan jenis penipu, 387 00:17:00,690 --> 00:17:01,776 dan lebih sedikit. 388 00:17:01,776 --> 00:17:04,859 Tetapi realitinya adalah ia banyak lebih keras, Saya fikir, walaupun bagi saya untuk membalut fikiran saya 389 00:17:04,859 --> 00:17:07,319 sekitarnya kadang-kadang, perintah operasi. 390 00:17:07,319 --> 00:17:09,750 Jadi sebagai diketepikan, jika anda benar-benar tidak suka ini, 391 00:17:09,750 --> 00:17:14,650 walaupun ini adalah jenis seksi mencari, anda juga boleh melakukan i + = 1, 392 00:17:14,650 --> 00:17:18,880 yang merupakan versi yang lebih hodoh daripada Idea yang sama untuk postfix incrementation. 393 00:17:18,880 --> 00:17:22,250 >> Saya katakan ini dan anda perlu membuat suka-suka, 394 00:17:22,250 --> 00:17:25,140 tetapi anda akan datang untuk melihat kod seperti sesuatu yang cantik tidak lama lagi. 395 00:17:25,140 --> 00:17:27,160 >> [Ketawa] 396 00:17:27,160 --> 00:17:28,410 >> DAVID J. MALAN: Betul? 397 00:17:28,410 --> 00:17:29,360 Yeah. 398 00:17:29,360 --> 00:17:30,480 Soalan di tengah-tengah. 399 00:17:30,480 --> 00:17:32,146 >> PENONTON: Adakah anda perlu berkata int n? 400 00:17:32,146 --> 00:17:34,020 DAVID J. MALAN: Anda boleh melakukan tidak perlu untuk mengatakan int n. 401 00:17:34,020 --> 00:17:37,670 Jadi kerana kita sudah mengatakan int, anda tidak perlu untuk mengatakan ia sekali lagi. 402 00:17:37,670 --> 00:17:41,820 Tangkapan adalah bahawa n perlu menjadi jenis data yang sama seperti i. 403 00:17:41,820 --> 00:17:43,310 Jadi itu hanya kemudahan di sini. 404 00:17:43,310 --> 00:17:44,058 Yeah. 405 00:17:44,058 --> 00:17:47,806 >> PENONTON: Bolehkah anda pergi ke atas kurungan cetak watak s i lagi? 406 00:17:47,806 --> 00:17:48,930 DAVID J. MALAN: Sudah tentu. 407 00:17:48,930 --> 00:17:52,110 Jadi% c, ingat dari lepas masa, hanya satu pemegang tempat. 408 00:17:52,110 --> 00:17:53,930 Ini bermakna meletakkan arang di sini. 409 00:17:53,930 --> 00:17:56,780 backslash n, sudah tentu, hanya cara meletakkan satu baris di sini. 410 00:17:56,780 --> 00:17:59,540 Supaya hanya meninggalkan, sekarang, ini sekeping sintaks baru. 411 00:17:59,540 --> 00:18:03,730 Dan ini adalah benar-benar berkata, cekau tali yang dipanggil dan pergi mendapatkan mereka 412 00:18:03,730 --> 00:18:06,050 watak i'th, jadi untuk bercakap. 413 00:18:06,050 --> 00:18:10,590 >> Dan saya terus berkata watak i'th kerana pada setiap lelaran gelung ini 414 00:18:10,590 --> 00:18:14,540 ia seolah-olah kita mencetak keluar, yang pertama kurungan 0, 415 00:18:14,540 --> 00:18:15,780 sebagai programmer mungkin berkata. 416 00:18:15,780 --> 00:18:18,680 Kemudian s kurungan 1, maka s kurungan 2, kemudian 3, kemudian 4. 417 00:18:18,680 --> 00:18:21,610 Tetapi sudah tentu ia pembolehubah, jadi saya hanya menyatakan dengan i. 418 00:18:21,610 --> 00:18:23,900 >> Utama, walaupun, adalah untuk menyedari, terutamanya jika anda tidak sudah 419 00:18:23,900 --> 00:18:26,358 telah acclimating kepada dunia ini pengaturcaraan, di mana kita semua 420 00:18:26,358 --> 00:18:28,950 seolah-olah mengira dari sifar, kena mula mengira dari sifar sekarang. 421 00:18:28,950 --> 00:18:35,130 Kerana tali, watak pertama, z di Zamyla adalah untuk lebih baik atau untuk lebih teruk 422 00:18:35,130 --> 00:18:40,490 akan hidup di nombor lokasi sifar. 423 00:18:40,490 --> 00:18:48,210 >> Baiklah, jadi biarlah saya membawa kita kembali di sini untuk Zamyla 424 00:18:48,210 --> 00:18:50,746 dan melihat apa yang benar-benar akan di bawah hood. 425 00:18:50,746 --> 00:18:52,370 Jadi ada tanggapan ini jenis pemutus. 426 00:18:52,370 --> 00:18:53,800 Anda mungkin benar-benar dimainkan dengan ini sudah, 427 00:18:53,800 --> 00:18:55,970 mungkin untuk penggodam edisi P menetapkan satu. 428 00:18:55,970 --> 00:19:00,320 Tetapi jenis pemutus hanya merujuk kepada keupayaan dalam C dan beberapa bahasa lain 429 00:19:00,320 --> 00:19:03,170 untuk menukar satu jenis data yang lain. 430 00:19:03,170 --> 00:19:05,450 >> Sekarang bagaimana kita mungkin melihat ini cukup terus terang? 431 00:19:05,450 --> 00:19:08,530 Jadi ini, ingat, adalah permulaan daripada abjad Inggeris. 432 00:19:08,530 --> 00:19:11,265 Dan konteks, ingat, dari seperti seminggu yang lalu adalah ASCII. 433 00:19:11,265 --> 00:19:13,790 American Standard Code Maklumat Interchange. 434 00:19:13,790 --> 00:19:17,080 Yang hanya satu cara yang benar-benar panjang daripada menyebut pemetaan dari surat 435 00:19:17,080 --> 00:19:19,370 kepada nombor, dan dari nombor-nombor untuk surat. 436 00:19:19,370 --> 00:19:22,940 >> Jadi A melalui M sini, dot dot dot, garis-garis dengan, ingat, 437 00:19:22,940 --> 00:19:25,582 nombor perpuluhan 65 di atas. 438 00:19:25,582 --> 00:19:27,290 Dan kita tidak bercakap tentang perkara ini dengan jelas, 439 00:19:27,290 --> 00:19:29,850 tetapi tentu sekali ada yang serupa nombor bagi huruf kecil. 440 00:19:29,850 --> 00:19:30,820 Dan sesungguhnya ada. 441 00:19:30,820 --> 00:19:33,730 Dunia ini memutuskan beberapa tahun lalu bahawa sedikit satu, huruf kecil a, 442 00:19:33,730 --> 00:19:35,020 akan menjadi 97. 443 00:19:35,020 --> 00:19:38,010 Dan sedikit b akan menjadi 98, dan sebagainya. 444 00:19:38,010 --> 00:19:40,200 >> Dan bagi apa-apa lain yang penting pada papan kekunci anda, ada 445 00:19:40,200 --> 00:19:42,190 akan menjadi corak yang sama bit. 446 00:19:42,190 --> 00:19:44,540 Atau setara, nombor perpuluhan. 447 00:19:44,540 --> 00:19:47,110 Jadi soalan di tangan, maka, adalah bagaimana kita 448 00:19:47,110 --> 00:19:49,400 benar-benar melihat ini di bawah hood? 449 00:19:49,400 --> 00:19:51,539 Jadi, saya akan pergi ke gedit lagi. 450 00:19:51,539 --> 00:19:53,330 Dan bukannya jenis satu ini dari awal, 451 00:19:53,330 --> 00:19:55,330 Saya akan pergi ke depan dan hanya membuka sesuatu 452 00:19:55,330 --> 00:19:58,350 dari kod hari ini dikenali sebagai ASCII sifar. 453 00:19:58,350 --> 00:20:01,210 >> Dan ASCII sifar kelihatan seperti ini. 454 00:20:01,210 --> 00:20:02,710 Jadi mari kita membalut fikiran kami di seluruh ini. 455 00:20:02,710 --> 00:20:04,969 Oleh itu, saya telah ulas kod, yang mana ianya bagus. 456 00:20:04,969 --> 00:20:07,010 Kerana ia benar-benar memberitahu saya apa yang diharapkan, 457 00:20:07,010 --> 00:20:08,950 memaparkan pemetaan untuk huruf besar. 458 00:20:08,950 --> 00:20:13,690 Sekarang saya tidak tahu apa yang saya maksudkan dengan itu, jadi mari kita membuat kesimpulan. 459 00:20:13,690 --> 00:20:16,870 >> Dalam bahasa Inggeris, mungkin agak techie Bahasa Inggeris, 460 00:20:16,870 --> 00:20:20,660 apakah talian 18 muncul yang akan lakukan untuk kita? 461 00:20:20,660 --> 00:20:21,500 Hanya beratur 18. 462 00:20:21,500 --> 00:20:22,430 Apa yang ia mendorong? 463 00:20:22,430 --> 00:20:25,192 Apa yang ia akan bermula di sini? 464 00:20:25,192 --> 00:20:26,100 >> PENONTON: gelung A. 465 00:20:26,100 --> 00:20:26,630 >> DAVID J. MALAN: gelung A. 466 00:20:26,630 --> 00:20:28,463 Dan berapa kali adalah yang akan melelar? 467 00:20:28,463 --> 00:20:31,562 468 00:20:31,562 --> 00:20:33,270 PENONTON: [INTERPOSING VOICES] enam kali. 469 00:20:33,270 --> 00:20:34,830 DAVID J. MALAN: Tidak enam kali. 470 00:20:34,830 --> 00:20:35,840 PENONTON: 26 kali. 471 00:20:35,840 --> 00:20:36,560 DAVID J. MALAN: 26 kali. 472 00:20:36,560 --> 00:20:37,060 Yeah, maaf. 473 00:20:37,060 --> 00:20:37,960 26 kali. 474 00:20:37,960 --> 00:20:38,460 Mengapa? 475 00:20:38,460 --> 00:20:41,590 Nah, ia sedikit pelik, tetapi Saya mula mengira dari 65. 476 00:20:41,590 --> 00:20:43,300 Yang pelik, tetapi tidak salah. 477 00:20:43,300 --> 00:20:44,610 Ia bukan buruk setiap katakan. 478 00:20:44,610 --> 00:20:46,980 Dan saya lakukan yang hanya kerana, sebagai contoh ini, 479 00:20:46,980 --> 00:20:50,455 Saya jenis menjangkakan bahawa A modal adalah 65. 480 00:20:50,455 --> 00:20:53,330 Sekarang ini tidak adalah yang paling elegan cara untuk melakukan ini, untuk jenis kod keras 481 00:20:53,330 --> 00:20:56,130 nilai esoterik bahawa tidak ada sentiasa dijangka ingat. 482 00:20:56,130 --> 00:21:00,155 >> Tetapi untuk sekarang, notis bahawa saya melakukan ini menerusi 65 plus 26. 483 00:21:00,155 --> 00:21:03,030 Kerana nampaknya saya tidak mahu untuk melakukan aritmetik dalam kepala saya. 484 00:21:03,030 --> 00:21:04,440 Jadi saya akan memberitahu pengkompil melakukannya. 485 00:21:04,440 --> 00:21:08,600 Tetapi pada setiap gelung, setiap lelaran gelung, saya menokok i. 486 00:21:08,600 --> 00:21:10,196 >> Jadi sekarang ini kelihatan sedikit samar. 487 00:21:10,196 --> 00:21:13,320 Tetapi kita harus mempunyai binaan asas blok dengan yang memahami ini. 488 00:21:13,320 --> 00:21:15,510 % C hanya pemegang tempat untuk char a. 489 00:21:15,510 --> 00:21:19,010 % I adalah pemegang tempat untuk int satu. 490 00:21:19,010 --> 00:21:23,310 Dan ternyata bahawa dengan menggunakan ini sintaks baru, kurungan ini, jadi 491 00:21:23,310 --> 00:21:26,100 untuk bercakap, jadi jenis data di dalam kurungan yang, 492 00:21:26,100 --> 00:21:32,270 Saya boleh memaksa pengkompil untuk merawat i bukan integer, tetapi sebagai char a. 493 00:21:32,270 --> 00:21:35,520 >> Dengan itu menunjukkan saya watak bersamaan dengan jumlah itu. 494 00:21:35,520 --> 00:21:37,986 Sekarang turun di sini, kod ini adalah cukup banyak yang sama. 495 00:21:37,986 --> 00:21:39,860 Saya hanya mahu membuat super jelas fakta 496 00:21:39,860 --> 00:21:42,095 bahawa saya bermula pada 97, yang huruf kecil a. 497 00:21:42,095 --> 00:21:44,080 Pada menerusi 26 lebih huruf. 498 00:21:44,080 --> 00:21:46,970 Dan saya doing-- lagi, pemutus i, jadi untuk bercakap. 499 00:21:46,970 --> 00:21:49,160 Atau jenis pemutus i, jadi untuk bercakap. 500 00:21:49,160 --> 00:21:51,420 >> Dari int untuk char a. 501 00:21:51,420 --> 00:21:55,760 Jadi keputusan akhir akan menjadi, terus-terang, maklumat yang kami sudah tahu. 502 00:21:55,760 --> 00:21:59,411 Saya akan membuat ascii-0 tidak dot-- dot c. 503 00:21:59,411 --> 00:22:02,160 Notis, anda mungkin dibuat bahawa kesilapan kerana saya hanya lakukan secara tidak sengaja. 504 00:22:02,160 --> 00:22:03,820 Buat ascii-0. 505 00:22:03,820 --> 00:22:06,090 Sekarang saya akan melakukan ./ascii-0. 506 00:22:06,090 --> 00:22:09,050 Saya akan zum masuk, dan malangnya ia akan tatal off skrin. 507 00:22:09,050 --> 00:22:15,060 Tetapi kita lihat keseluruhan carta di mana satu peta kepada 97, b peta ke 98, 508 00:22:15,060 --> 00:22:18,931 dan jika kita tatal ke atas lagi A, sudah tentu, peta ke 65. 509 00:22:18,931 --> 00:22:21,180 Jadi ini adalah hanya untuk mengatakan bahawa apa yang kita telah berkhutbah, 510 00:22:21,180 --> 00:22:25,310 terdapat kesetaraan ini, sebenarnya kes itu dalam realiti. 511 00:22:25,310 --> 00:22:28,000 Jadi pengubahsuaian cepat ini. 512 00:22:28,000 --> 00:22:31,220 Biar saya membuka ascii-1.c. 513 00:22:31,220 --> 00:22:38,070 Dan notis ini pandai, jenis daripada, penjelasan ini. 514 00:22:38,070 --> 00:22:41,770 Ini adalah ascii-1.c, dan perhatikan perkara ini gila. 515 00:22:41,770 --> 00:22:45,120 >> Dan ini benar-benar mendapat ke jantung apa yang komputer lakukan. 516 00:22:45,120 --> 00:22:48,150 Walaupun kita manusia akan tidak mengira dari segi letters-- 517 00:22:48,150 --> 00:22:50,380 Saya tidak mula berfikir, semua hak itu b, 518 00:22:50,380 --> 00:22:52,590 dan menggunakan mereka untuk mengira objek fizikal. 519 00:22:52,590 --> 00:22:58,680 Anda tentu boleh mengatakan bahawa saya ingin memulakan beberapa pembolehubah dipanggil c-- 520 00:22:58,680 --> 00:23:03,220 tetapi saya boleh dipanggil anything-- ini jadi c adalah dimulakan dengan modal A. 521 00:23:03,220 --> 00:23:07,560 >> Kerana pada akhir hari, komputer tidak peduli apa yang anda menyimpan, 522 00:23:07,560 --> 00:23:10,170 ia hanya mengambil berat bagaimana anda mahu membentangkan maklumat tersebut. 523 00:23:10,170 --> 00:23:13,560 Bagaimana anda mahu komputer untuk mentafsir corak bit? 524 00:23:13,560 --> 00:23:16,320 Jadi ini bukan sesuatu yang saya biasanya akan mengesyorkan lakukan. 525 00:23:16,320 --> 00:23:19,500 Ia benar-benar hanya satu contoh untuk menyampaikan bahawa anda boleh benar-benar 526 00:23:19,500 --> 00:23:22,049 memulakan integer untuk char a. 527 00:23:22,049 --> 00:23:24,090 Kerana di bawahnya yang hood arang, sudah tentu, 528 00:23:24,090 --> 00:23:26,170 hanya antara 0 hingga 255. 529 00:23:26,170 --> 00:23:28,540 >> Jadi, anda boleh pasti meletakkannya di dalam sebuah int. 530 00:23:28,540 --> 00:23:30,890 Dan apa ini juga menunjukkan bahawa kita adalah 531 00:23:30,890 --> 00:23:34,040 boleh menukar dari satu menaip yang lain, di sini, 532 00:23:34,040 --> 00:23:36,780 akhirnya mencetak perkara yang sama. 533 00:23:36,780 --> 00:23:44,760 Dan sebenarnya, ini saya akan menetapkan online-- bertujuan untuk mengatakan ini, sekali lagi, di sini. 534 00:23:44,760 --> 00:23:48,610 Biar saya membersihkan sehingga ini dalam talian, dan kita akan lihat dalam Walkthrough dalam talian seperti yang diperlukan, 535 00:23:48,610 --> 00:23:50,280 apa yang dimaksudkan di sana. 536 00:23:50,280 --> 00:23:50,960 >> OK. 537 00:23:50,960 --> 00:23:53,892 Contoh Jadi lepas kini yang melibatkan a dan b dan kemudian kita akan 538 00:23:53,892 --> 00:23:54,850 mengambil perkara sehingga takuk a. 539 00:23:54,850 --> 00:23:58,330 Jadi dengan dan b dan c dalam permodalan 540 00:23:58,330 --> 00:24:01,560 dan kesetaraan kepentingannya itu, mari kita kita lihat pada contoh ini, di sini. 541 00:24:01,560 --> 00:24:02,752 Satu lagi contoh kod. 542 00:24:02,752 --> 00:24:04,460 Kami akan membuka satu itu sudah dibuat, jadi kami 543 00:24:04,460 --> 00:24:06,440 tidak perlu taip semua keluar dari awal. 544 00:24:06,440 --> 00:24:09,420 >> Dan perhatikan pada menjangkakan kita menggunakan header pelbagai 545 00:24:09,420 --> 00:24:13,240 gambar, antaranya ialah rakan baru kami, string.h. 546 00:24:13,240 --> 00:24:15,597 Sekarang ini kelihatan, pada mulanya sepintas lalu, sedikit samar. 547 00:24:15,597 --> 00:24:18,180 Tetapi mari kita lihat jika kita tidak boleh sebab melalui apa yang sedang berlaku di sini. 548 00:24:18,180 --> 00:24:21,150 Pertama saya mendapat rentetan daripada pengguna, dan saya meletakkan tali yang dalam pembolehubah yang 549 00:24:21,150 --> 00:24:22,286 dipanggil s. 550 00:24:22,286 --> 00:24:24,090 Copy paste dari sebelum. 551 00:24:24,090 --> 00:24:27,250 Selaras 22, saya nampaknya melakukan apa yang 552 00:24:27,250 --> 00:24:30,760 Saya masa lalu, saya iterating lebih watak-watak dalam s. 553 00:24:30,760 --> 00:24:34,780 >> Dan helah baru di sini menggunakan panjang tali, pengoptimuman kecil 554 00:24:34,780 --> 00:24:37,930 menyimpan panjang tali di n, bukan laungan strlen lagi, 555 00:24:37,930 --> 00:24:38,850 dan sekali lagi, dan sekali lagi. 556 00:24:38,850 --> 00:24:41,120 Dan hanya memeriksa bahawa saya adalah kurang daripada n. 557 00:24:41,120 --> 00:24:43,330 Sekarang, hal-hal yang sedikit menarik. 558 00:24:43,330 --> 00:24:45,980 Tetapi ia hanya permohonan ini idea baru sama. 559 00:24:45,980 --> 00:24:48,470 Apa yang dalam bahasa Inggeris tidak s kurungan i mewakili? 560 00:24:48,470 --> 00:24:51,772 561 00:24:51,772 --> 00:24:54,260 >> PENONTON: Mengira setiap watak [didengar]. 562 00:24:54,260 --> 00:24:55,926 >> DAVID J. MALAN: Mengira setiap aksara. 563 00:24:55,926 --> 00:24:58,680 Dan yang lebih ringkas, s kurungan i mewakili apa? 564 00:24:58,680 --> 00:25:00,950 Anda akan katakan. 565 00:25:00,950 --> 00:25:04,084 Tidak meletakkan anda di tempat kejadian di sini. 566 00:25:04,084 --> 00:25:06,375 >> PENONTON: Well-- 567 00:25:06,375 --> 00:25:09,500 DAVID J. MALAN: Jadi, jika perkataan is-- jika tali adalah Zamyla, yang starts-- 568 00:25:09,500 --> 00:25:12,380 PENONTON: --you menangani watak-watak separately-- 569 00:25:12,380 --> 00:25:13,690 DAVID J. MALAN: Baik. 570 00:25:13,690 --> 00:25:14,190 Tepat sekali. 571 00:25:14,190 --> 00:25:17,940 Catatan kurungan persegi membolehkan anda untuk mengakses setiap watak secara individu, 572 00:25:17,940 --> 00:25:21,120 jadi s kurungan 0 akan menjadi watak pertama dalam string. 573 00:25:21,120 --> 00:25:24,110 s kurungan 1 akan menjadi kedua, dan sebagainya. 574 00:25:24,110 --> 00:25:28,050 Jadi soalan yang saya bertanya, di sini, dalam keadaan ini adalah apa? 575 00:25:28,050 --> 00:25:33,984 Adalah watak i'th s lebih besar daripada atau sama dengan huruf kecil a? 576 00:25:33,984 --> 00:25:36,400 Dan apakah ini bermakna, di sini, dengan ampersands berganda? 577 00:25:36,400 --> 00:25:36,800 PENONTON (BERSAMA): Dan. 578 00:25:36,800 --> 00:25:37,210 DAVID J. MALAN: Dan. 579 00:25:37,210 --> 00:25:38,418 Ia hanya bersamaan dengan ini. 580 00:25:38,418 --> 00:25:42,310 Dan bukan kata kunci dalam C, anda perlu penggunaan, annoyingly, Ampersand Ampersand. 581 00:25:42,310 --> 00:25:47,520 Dan ini, sebaliknya, meminta adalah s i'th watak kurang daripada atau sama 582 00:25:47,520 --> 00:25:49,030 kepada huruf kecil z? 583 00:25:49,030 --> 00:25:52,440 Dan sekali lagi, di sini di mana memahami asas 584 00:25:52,440 --> 00:25:54,550 pelaksanaan komputer masuk akal. 585 00:25:54,550 --> 00:25:57,330 Perhatikan bahawa, walaupun saya mempunyai dot dot dot di sana, 586 00:25:57,330 --> 00:26:04,410 kelihatan seperti melalui z dalam huruf kecil adalah semua nilai berdampingan meningkat daripada 97 pada up. 587 00:26:04,410 --> 00:26:07,820 >> Dan sama untuk huruf besar bermula 65. 588 00:26:07,820 --> 00:26:10,410 Jadi bisa dibesarkan, kemudian, ialah dalam Bahasa Inggeris, 589 00:26:10,410 --> 00:26:12,760 bagaimana anda menggambarkan apa talian 24 lakukan? 590 00:26:12,760 --> 00:26:15,736 591 00:26:15,736 --> 00:26:16,728 Yeah? 592 00:26:16,728 --> 00:26:21,575 >> PENONTON: Pada 24 ia memeriksa untuk melihat sama ada setiap aksara adalah huruf kecil a. 593 00:26:21,575 --> 00:26:24,700 DAVID J. MALAN: Ia memeriksa sama ada setiap aksara adalah huruf kecil. 594 00:26:24,700 --> 00:26:28,590 Jadi lebih ringkas, adalah watak i'th s huruf kecil? 595 00:26:28,590 --> 00:26:30,690 Itu semua kami menyatakan di sini secara logik, 596 00:26:30,690 --> 00:26:33,750 sedikit cryptically, tetapi akhirnya cukup terus terang. 597 00:26:33,750 --> 00:26:36,480 Adalah s i'th huruf kecil watak? 598 00:26:36,480 --> 00:26:40,130 >> Jika ya, dan di sini di mana perkara mendapatkan fikiran sedikit lenturan 599 00:26:40,130 --> 00:26:44,760 untuk seketika, jika demikian, pergi hadapan dan mencetak watak. 600 00:26:44,760 --> 00:26:47,360 Jadi ini adalah hanya satu pemegang tempat, tetapi apa yang watak? 601 00:26:47,360 --> 00:26:53,710 Kenapa saya melakukan s kurungan i tolak ungkapan ini di sini? 602 00:26:53,710 --> 00:26:55,110 >> Nah notis corak di sini. 603 00:26:55,110 --> 00:26:57,380 Nombor-nombor yang sebenarnya tidak penting begitu banyak. 604 00:26:57,380 --> 00:27:02,700 Tetapi melihat bahawa 97 adalah bagaimana jauh dari 65? 605 00:27:02,700 --> 00:27:03,560 >> PENONTON: 32. 606 00:27:03,560 --> 00:27:04,480 >> DAVID J. MALAN: 32. 607 00:27:04,480 --> 00:27:06,890 Berapa jauh 98 daripada 66? 608 00:27:06,890 --> 00:27:07,740 >> PENONTON: 32. 609 00:27:07,740 --> 00:27:09,890 >> DAVID J. MALAN: Little c dari C besar? 610 00:27:09,890 --> 00:27:10,420 32. 611 00:27:10,420 --> 00:27:14,550 Jadi ada 32 hop dari satu huruf yang lain. 612 00:27:14,550 --> 00:27:17,790 Jadi terus terang saya, boleh memudahkan ini untuk itu. 613 00:27:17,790 --> 00:27:20,400 Tetapi saya jenis keras pengekodan pemahaman yang rendah ini 614 00:27:20,400 --> 00:27:21,740 bahawa tidak ada pembaca yang pernah akan faham. 615 00:27:21,740 --> 00:27:25,080 Jadi saya akan umum sebagai, saya mengetahui huruf kecil adalah lebih besar. 616 00:27:25,080 --> 00:27:28,400 Saya tahu huruf besar adalah nilai-nilai yang lebih kecil, ironinya. 617 00:27:28,400 --> 00:27:33,216 >> Tetapi ini adalah bersamaan dengan berkesan berkata tolak 32 dari kurungan s i. 618 00:27:33,216 --> 00:27:35,430 Jadi, dalam konteks ini surat, jika huruf yang 619 00:27:35,430 --> 00:27:38,950 berlaku untuk menjadi, huruf kecil , dan saya tolak 32, 620 00:27:38,950 --> 00:27:43,442 apa kesan adakah itu perlu, matematik, pada huruf kecil a? 621 00:27:43,442 --> 00:27:44,400 PENONTON: Capitalizes-- 622 00:27:44,400 --> 00:27:45,691 DAVID J. MALAN: kesempatan itu. 623 00:27:45,691 --> 00:27:48,440 Dan sesungguhnya, ini adalah mengapa kami program dipanggil kesempatan sifar. 624 00:27:48,440 --> 00:27:51,590 Program ini sama ada memanfaatkan surat, 625 00:27:51,590 --> 00:27:54,580 selepas memeriksa jika ia sesungguhnya huruf kecil. 626 00:27:54,580 --> 00:27:59,810 Jika tidak, selaras 30, apa yang perlu saya lakukan jika ia bukan huruf kecil bahawa saya 627 00:27:59,810 --> 00:28:02,852 melihat pada khususnya lelaran dalam gelung. 628 00:28:02,852 --> 00:28:03,890 Hanya mencetak. 629 00:28:03,890 --> 00:28:07,010 >> Jadi jangan menukar barangan bukan itu walaupun kecil. 630 00:28:07,010 --> 00:28:10,790 Hadkan diri anda untuk sedikit melalui sedikit z. 631 00:28:10,790 --> 00:28:12,730 Sekarang ini agak sukar difahami. 632 00:28:12,730 --> 00:28:15,230 Tetapi pada akhir hari, ini ialah bagaimana kita, suatu masa dahulu, 633 00:28:15,230 --> 00:28:16,460 terpaksa melaksanakan perkara. 634 00:28:16,460 --> 00:28:19,780 Jika saya bukan tak terhad kesempatan satu, oh terima kasih tuhan. 635 00:28:19,780 --> 00:28:22,320 Ada fungsi dipanggil untuk atas yang boleh 636 00:28:22,320 --> 00:28:25,410 melakukan segala yang kita lakukan pada tahap yang agak rendah. 637 00:28:25,410 --> 00:28:28,752 >> Sekarang untuk bahagian atas yang menarik kerana ia diisytiharkan dalam fail, 638 00:28:28,752 --> 00:28:31,210 dan anda hanya akan tahu ini dengan memeriksa dokumentasi, 639 00:28:31,210 --> 00:28:35,730 atau diberitahu, katakan, di dalam kelas, di mana ia wujud, dalam fail yang dipanggil ctype.h. 640 00:28:35,730 --> 00:28:37,630 Jadi ini adalah satu lagi rakan baru kita. 641 00:28:37,630 --> 00:28:40,750 Dan atas tidak tepat apa namanya. 642 00:28:40,750 --> 00:28:44,860 >> Anda boleh lulus dalam, sebagai hujah, antara kurungan ini, beberapa watak. 643 00:28:44,860 --> 00:28:48,390 Saya akan lulus dalam watak i'th daripada s menggunakan notasi mewah baru 644 00:28:48,390 --> 00:28:49,870 melibatkan kurungan persegi. 645 00:28:49,870 --> 00:28:53,391 Dan mengambil tekaan, apakah pulangan nilai ke atas nampaknya akan 646 00:28:53,391 --> 00:28:53,890 menjadi? 647 00:28:53,890 --> 00:28:56,460 648 00:28:56,460 --> 00:28:57,770 Surat modal. 649 00:28:57,770 --> 00:28:58,620 Surat modal. 650 00:28:58,620 --> 00:29:02,330 >> Jadi, jika saya meninggal dalam huruf kecil a, mudah-mudahan, dengan definisi ke bahagian atas, 651 00:29:02,330 --> 00:29:05,600 ia akan kembali satu huruf besar A. Jika tidak, 652 00:29:05,600 --> 00:29:08,590 jika ia bukan huruf kecil dalam tempat pertama, saya hanya mencetak. 653 00:29:08,590 --> 00:29:10,800 Dan sesungguhnya, notis rakan kedua di sini. 654 00:29:10,800 --> 00:29:13,840 Tidak hanya untuk atas wujud, tetapi lebih rendah, yang 655 00:29:13,840 --> 00:29:16,200 sebenarnya menjawab soalan itu untuk saya. 656 00:29:16,200 --> 00:29:19,730 >> Sekarang sesiapa yang telah menulis perkara-perkara ini, 10s tahun yang lalu, anda tahu apa? 657 00:29:19,730 --> 00:29:23,840 Dilaksanakan untuk bahagian atas dan lebih rendah dengan menggunakan kod seperti ini. 658 00:29:23,840 --> 00:29:27,270 Tetapi sekali lagi, selaras dengan idea ini pengabstrakan jauh, 659 00:29:27,270 --> 00:29:29,190 jenis, tahap yang lebih rendah butir-butir pelaksanaan. 660 00:29:29,190 --> 00:29:32,600 Dan berdiri di atas bahu orang yang mendahului kami, dengan menggunakan fungsi 661 00:29:32,600 --> 00:29:36,300 seperti ke atas dan lebih rendah, yang cukup hebat adalah baik 662 00:29:36,300 --> 00:29:40,190 dinamakan untuk mengatakan apa yang mereka lakukan, adalah paradigma yang indah untuk menerima pakai. 663 00:29:40,190 --> 00:29:44,040 >> Kini, ternyata bahawa jika saya membaca halaman lelaki untuk, katakan, untuk atas, 664 00:29:44,040 --> 00:29:45,010 Saya belajar sesuatu yang lain. 665 00:29:45,010 --> 00:29:46,890 Jadi lelaki toUpper. 666 00:29:46,890 --> 00:29:48,050 Ia sedikit hangat. 667 00:29:48,050 --> 00:29:51,110 Tetapi notis, di sini yang menyebut fail header yang harus saya gunakan. 668 00:29:51,110 --> 00:29:54,460 Sebagai mengetepikan, kerana ini mengelirukan, fungsi 669 00:29:54,460 --> 00:29:59,070 menggunakan ints bukannya aksara atas sebab-sebab memeriksa kesilapan. 670 00:29:59,070 --> 00:30:01,260 Tetapi kita mungkin akan datang kembali ke bahawa pada masa akan datang. 671 00:30:01,260 --> 00:30:05,910 >> Tetapi perhatikan, di sini, untuk memeluk atas huruf c kepada huruf besar jika boleh. 672 00:30:05,910 --> 00:30:07,674 Jadi, itu cukup mudah. 673 00:30:07,674 --> 00:30:09,340 Dan sekarang mari kita menjadi sedikit lebih khusus. 674 00:30:09,340 --> 00:30:12,750 Mari kita melihat sebahagian daripada Laman lelaki di bawah nilai pulangan. 675 00:30:12,750 --> 00:30:15,420 Nilai kembali ialah surat yang ditukar. 676 00:30:15,420 --> 00:30:18,690 Atau c, jika penukaran tidak mungkin, 677 00:30:18,690 --> 00:30:20,250 di mana c adalah input yang asal. 678 00:30:20,250 --> 00:30:24,140 Yang saya tahu dari sini, dari hujah untuk ke atas. 679 00:30:24,140 --> 00:30:25,780 >> Jadi apa yang bisa dibesarkan ini? 680 00:30:25,780 --> 00:30:28,060 Nilai kembali ialah surat yang ditukar, 681 00:30:28,060 --> 00:30:32,110 atau c, surat asal, jika penukaran tidak mungkin. 682 00:30:32,110 --> 00:30:36,460 Apa penambahbaikan boleh saya oleh itu membuat reka bentuk kod saya? 683 00:30:36,460 --> 00:30:37,146 Yeah? 684 00:30:37,146 --> 00:30:38,810 >> PENONTON: Anda boleh mengeluarkan lain itu. 685 00:30:38,810 --> 00:30:40,810 DAVID J. MALAN: Saya boleh mengeluarkan satu kenyataan yang lain, 686 00:30:40,810 --> 00:30:42,510 dan bukan hanya pernyataan lain. 687 00:30:42,510 --> 00:30:44,150 >> PENONTON: Anda boleh mengeluarkan [didengar]. 688 00:30:44,150 --> 00:30:46,310 >> DAVID J. MALAN: Saya boleh memindahkan keseluruhan garpu 689 00:30:46,310 --> 00:30:48,209 di jalan, jika yang lain sama sekali. 690 00:30:48,209 --> 00:30:50,250 Jadi sesungguhnya, saya membuka versi akhir ini, 691 00:30:50,250 --> 00:30:55,540 kesempatan-2 dan perhatikan betapa, jika anda akan, seksi, kod itu kini mendapat, 692 00:30:55,540 --> 00:31:00,040 dalam bahawa saya telah berkurangan daripada beberapa tujuh atau lebih garisan hanya empat, 693 00:31:00,040 --> 00:31:03,850 fungsi yang saya bertujuan dengan hanya menghubungi ke atas, 694 00:31:03,850 --> 00:31:09,410 lulus dalam s kurungan i, dan percetakan keluar, dengan pemegang tempat% c, 695 00:31:09,410 --> 00:31:11,090 bahawa watak tertentu. 696 00:31:11,090 --> 00:31:14,560 >> Sekarang boleh dikatakan, terdapat pepijat, atau sekurang-kurangnya risiko pepijat, 697 00:31:14,560 --> 00:31:15,350 dalam program ini. 698 00:31:15,350 --> 00:31:18,200 Jadi, untuk kembali untuk bisa dibesarkan sebelum ini, 699 00:31:18,200 --> 00:31:21,820 apa yang perlu saya mungkin juga boleh dilakukan di program ini untuk menjadikannya lebih mantap, 700 00:31:21,820 --> 00:31:24,974 supaya tidak ada cara ia boleh crash, walaupun dalam kes-kes yang jarang berlaku? 701 00:31:24,974 --> 00:31:26,390 PENONTON: Pastikan ia bukan NULL. 702 00:31:26,390 --> 00:31:28,056 DAVID J. MALAN: Pastikan ia bukan NULL. 703 00:31:28,056 --> 00:31:31,030 Jadi benar-benar, untuk membuat super ini betul, saya perlu melakukan sesuatu seperti, 704 00:31:31,030 --> 00:31:35,300 jika s tidak NULL, maka pergi ke depan dan melaksanakan 705 00:31:35,300 --> 00:31:38,470 ini baris kod, yang Saya kemudiannya boleh inden seperti itu, 706 00:31:38,470 --> 00:31:39,870 dan kemudian dimasukkan ke dalam pendakap rapat saya. 707 00:31:39,870 --> 00:31:41,550 Jadi baik mengikat bersama-sama kedua-dua idea. 708 00:31:41,550 --> 00:31:42,429 Yeah? 709 00:31:42,429 --> 00:31:44,470 PENONTON: Bolehkah anda menggunakan yang dilakukan semasa gelung, bukan? 710 00:31:44,470 --> 00:31:47,270 DAVID J. MALAN: Bolehkah Saya melakukan tugasan manakala gelung? 711 00:31:47,270 --> 00:31:50,020 PENONTON: --you ingin memastikan bahawa anda sebenarnya [didengar]. 712 00:31:50,020 --> 00:31:51,728 DAVID J. MALAN: Bolehkah anda menggunakan do semasa? 713 00:31:51,728 --> 00:31:52,450 Jawapan pendek, tidak. 714 00:31:52,450 --> 00:31:54,700 Kerana anda kira-kira untuk memperkenalkan kes sudut lain. 715 00:31:54,700 --> 00:31:56,660 Jika tali itu adalah panjang sifar. 716 00:31:56,660 --> 00:31:59,600 Jika misalnya, saya hanya melanda Masukkan, tanpa menaip Zamyla. 717 00:31:59,600 --> 00:32:02,490 Saya akan menyerahkan kamu sebenar string, seperti yang kita akhirnya akan melihat, 718 00:32:02,490 --> 00:32:03,780 yang mempunyai sifar aksara. 719 00:32:03,780 --> 00:32:05,630 Ia masih rentetan, ia hanya super pendek. 720 00:32:05,630 --> 00:32:07,960 Tetapi jika anda menggunakan do semasa, anda akan secara membuta tuli 721 00:32:07,960 --> 00:32:10,050 cuba untuk melakukan sesuatu dengan menghormati kepada rentetan itu, 722 00:32:10,050 --> 00:32:12,537 dan tiada apa yang akan berada di sana. 723 00:32:12,537 --> 00:32:18,607 >> PENONTON: Nah, jika anda lakukan melakukan [didengar] semasa s-- 724 00:32:18,607 --> 00:32:21,190 DAVID J. MALAN: Oh saya lihat, menyimpan mendapatkan rentetan daripada pengguna. 725 00:32:21,190 --> 00:32:23,525 Jadi jawapan pendek, anda boleh, dan menyimpan pestering 726 00:32:23,525 --> 00:32:26,150 mereka untuk memberikan anda tali itu cukup pendek untuk dimuatkan dalam ingatan. 727 00:32:26,150 --> 00:32:26,700 Sama sekali. 728 00:32:26,700 --> 00:32:27,630 Saya memilih untuk tidak. 729 00:32:27,630 --> 00:32:30,505 Jika mereka tidak memberikan saya tali Saya mahu, saya berhenti, saya berputus asa. 730 00:32:30,505 --> 00:32:33,260 Tetapi benar-benar, bagi maksud itu, anda benar-benar boleh melakukannya. 731 00:32:33,260 --> 00:32:37,500 >> Jadi gambar header perpustakaan yang kami kini adalah biasa dengan ini, di sini. 732 00:32:37,500 --> 00:32:41,550 Standard I / O, CS50.h, string.h, ctype.h, dan ada, sesungguhnya, orang lain. 733 00:32:41,550 --> 00:32:44,460 Sebahagian daripada anda telah menemui perpustakaan matematik dalam math.h. 734 00:32:44,460 --> 00:32:48,200 Tetapi biarlah saya memperkenalkan anda, sekarang, untuk sumber ini bahawa kakitangan CS50, Davin, 735 00:32:48,200 --> 00:32:50,630 dan Rob dan Gabe tertentu telah meletakkan bersama-sama. 736 00:32:50,630 --> 00:32:52,630 Yang tidak lama lagi akan menghubungkan pada laman web kursus ini. 737 00:32:52,630 --> 00:32:54,870 Ia dipanggil rujukan CS50. 738 00:32:54,870 --> 00:32:58,230 >> Yang hanya untuk memberikan anda cepat rasa itu, kerja-kerja seperti berikut. 739 00:32:58,230 --> 00:33:00,740 Biar saya pergi ke reference.cs50.net. 740 00:33:00,740 --> 00:33:02,990 Anda akan lihat di kiri sisi senarai hangat 741 00:33:02,990 --> 00:33:04,595 fungsi yang datang dengan c. 742 00:33:04,595 --> 00:33:07,790 Tetapi jika saya mengambil berat, buat masa ini, tentang sesuatu seperti strlen, 743 00:33:07,790 --> 00:33:08,746 Saya boleh menaip di sana. 744 00:33:08,746 --> 00:33:10,870 Ia menapis ke bawah senarai hanya apa yang saya mengambil berat tentang. 745 00:33:10,870 --> 00:33:11,940 Saya akan klik. 746 00:33:11,940 --> 00:33:14,740 Dan kini di sebelah kiri, anda akan melihat apa yang kita harapkan 747 00:33:14,740 --> 00:33:18,290 adalah lebih mudah, manusia penjelasan tentang bagaimana 748 00:33:18,290 --> 00:33:19,170 fungsi ini berfungsi. 749 00:33:19,170 --> 00:33:20,600 >> Kembali panjang rentetan. 750 00:33:20,600 --> 00:33:24,060 Berikut adalah sinopsis di sini adalah bagaimana anda menggunakannya dari segi fail pengepala, 751 00:33:24,060 --> 00:33:27,430 dan dari segi apa fungsi kelihatan seperti dari segi hujah-hujah itu. 752 00:33:27,430 --> 00:33:30,250 Dan kemudian di sini, pulangan panjang rentetan. 753 00:33:30,250 --> 00:33:34,280 Tetapi bagi anda lebih selesa, anda sebenarnya boleh klik lebih selesa, 754 00:33:34,280 --> 00:33:37,070 dan kandungan ini halaman, sekarang, akan berubah 755 00:33:37,070 --> 00:33:41,660 menjadi nilai lalai daripada apa yang anda dengan menggunakan halaman lelaki itu. 756 00:33:41,660 --> 00:33:44,100 >> Dalam erti kata lain, CS50 rujukan adalah pemudahan yang 757 00:33:44,100 --> 00:33:46,220 halaman manusia oleh kakitangan, untuk pelajar. 758 00:33:46,220 --> 00:33:49,320 Terutama sekali, mereka yang kurang selesa dan di antara, supaya anda 759 00:33:49,320 --> 00:33:51,660 tidak perlu cuba untuk membalut fikiran anda sekitar, terus-terang, 760 00:33:51,660 --> 00:33:55,030 beberapa sintaks yang agak samar dan dokumentasi kadang-kadang. 761 00:33:55,030 --> 00:33:57,650 >> Jadi ingatlah bahawa dalam fikiran pada hari-hari akan datang. 762 00:33:57,650 --> 00:33:59,560 Jadi di sini, sekali lagi, adalah Zamyla. 763 00:33:59,560 --> 00:34:03,255 Sekarang mari kita bertanya soalan itu lebih sedikit manusia diakses. 764 00:34:03,255 --> 00:34:05,380 Terima kasih kepada Chang, yang sudah mencetak lebih banyak gajah 765 00:34:05,380 --> 00:34:07,090 tanpa henti untuk beberapa hari lepas. 766 00:34:07,090 --> 00:34:09,730 Kami mempunyai peluang untuk memberikan sekurang-kurangnya salah seorang daripada mereka dari sini. 767 00:34:09,730 --> 00:34:13,239 Jika kita boleh mendapatkan hanya satu sukarelawan datang pada sehingga menarik pada skrin. 768 00:34:13,239 --> 00:34:14,530 Bagaimana pula di sini? 769 00:34:14,530 --> 00:34:15,340 >> Marilah naik. 770 00:34:15,340 --> 00:34:16,720 Apakah nama anda? 771 00:34:16,720 --> 00:34:17,219 ALEX: Alex. 772 00:34:17,219 --> 00:34:17,760 DAVID J. MALAN: Alex. 773 00:34:17,760 --> 00:34:18,259 Baiklah. 774 00:34:18,259 --> 00:34:19,388 Alex, datang ke atas. 775 00:34:19,388 --> 00:34:21,679 Kami kira-kira untuk melihat anda tulisan tangan pada skrin di sini. 776 00:34:21,679 --> 00:34:24,325 777 00:34:24,325 --> 00:34:25,570 Baiklah, baik untuk bertemu dengan kamu. 778 00:34:25,570 --> 00:34:26,429 >> ALEX: Nice anda bertemu dengan kamu. 779 00:34:26,429 --> 00:34:27,512 >> DAVID J. MALAN: Baiklah. 780 00:34:27,512 --> 00:34:28,969 Jadi, senaman super mudah. 781 00:34:28,969 --> 00:34:31,440 Bar tidak tinggi untuk mendapatkan gajah hari ini. 782 00:34:31,440 --> 00:34:33,439 Anda memainkan peranan getstring. 783 00:34:33,439 --> 00:34:35,980 Dan saya akan memberitahu anda hanya rentetan yang anda telah mendapat. 784 00:34:35,980 --> 00:34:38,080 Dan andaikan bahawa anda, getstring, telah dipanggil. 785 00:34:38,080 --> 00:34:42,480 Dan manusia, seperti saya, mempunyai ditaip Zamyla, Z-A-M-Y-L-A. 786 00:34:42,480 --> 00:34:45,650 Hanya pergi ke hadapan dan menulis Zamyla pada skrin seolah-olah anda telah mendapat ia 787 00:34:45,650 --> 00:34:47,250 dan disimpan di suatu tempat dalam ingatan. 788 00:34:47,250 --> 00:34:52,370 789 00:34:52,370 --> 00:34:55,570 >> Meninggalkan bilik untuk apa yang akan menjadi beberapa words-- lain itu OK, menyimpan berterusan. 790 00:34:55,570 --> 00:34:59,620 >> [Ketawa] 791 00:34:59,620 --> 00:35:00,800 >> Jadi Zamyla, Cemerlang. 792 00:35:00,800 --> 00:35:04,880 Jadi sekarang andaikan bahawa anda, getstring, dipanggil lagi. 793 00:35:04,880 --> 00:35:09,350 Oleh itu, saya memberikan anda, di papan kekunci, dengan nama yang lain, Belinda. 794 00:35:09,350 --> 00:35:17,560 795 00:35:17,560 --> 00:35:18,060 Baiklah. 796 00:35:18,060 --> 00:35:22,380 Dan kini getstring masa seterusnya adalah dipanggil, saya menaip dalam sesuatu seperti Gabe, 797 00:35:22,380 --> 00:35:27,560 G-A-B-E. Anda benar-benar mengambil hati memori akses rawak. 798 00:35:27,560 --> 00:35:29,631 Yang menarik segala-galanya sepenuhnya secara rawak. 799 00:35:29,631 --> 00:35:30,130 OK. 800 00:35:30,130 --> 00:35:31,104 >> [Ketawa] 801 00:35:31,104 --> 00:35:32,520 ALEX: Maaf tulisan tangan saya yang buruk. 802 00:35:32,520 --> 00:35:33,770 DAVID J. MALAN: Tidak, itu OK. 803 00:35:33,770 --> 00:35:40,480 Dan bagaimana pula Rob, R-O-B. OK. 804 00:35:40,480 --> 00:35:41,020 Baik. 805 00:35:41,020 --> 00:35:43,853 Jadi, saya tidak menjangka anda jenis meletakkan perkara-perkara di luar dengan cara ini. 806 00:35:43,853 --> 00:35:45,020 Tetapi kita boleh membuat kerja-kerja ini. 807 00:35:45,020 --> 00:35:48,810 Jadi bagaimana anda pergi tentang meletakkan daripada aksara ini dalam ingatan? 808 00:35:48,810 --> 00:35:51,310 Dalam erti kata lain, jika kita memikirkan skrin hitam segi empat tepat 809 00:35:51,310 --> 00:35:53,550 sebagai mewakili RAM atau memori komputer. 810 00:35:53,550 --> 00:35:55,850 >> Dan ingat RAM yang hanya sejumlah besar bytes, 811 00:35:55,850 --> 00:35:57,480 dan bait adalah sejumlah besar bit. 812 00:35:57,480 --> 00:35:59,350 Dan entah bagaimana bit dilaksanakan, secara amnya 813 00:35:59,350 --> 00:36:01,119 dengan beberapa bentuk elektrik dalam perkakasan. 814 00:36:01,119 --> 00:36:03,160 Jadi itulah jenis yang lapisan kami telah berbincang mengenai 815 00:36:03,160 --> 00:36:04,510 dan kini boleh mengambil untuk diberikan. 816 00:36:04,510 --> 00:36:07,020 Bagaimana anda pergi tentang membuat keputusan di mana untuk menulis 817 00:36:07,020 --> 00:36:11,634 Rob lawan Gabe lawan Belinda lawan Zamyla? 818 00:36:11,634 --> 00:36:14,020 >> ALEX: Saya hanya melakukannya dalam memerintahkan supaya anda memberitahu saya. 819 00:36:14,020 --> 00:36:15,650 >> DAVID J. MALAN: Dan yang benar. 820 00:36:15,650 --> 00:36:20,100 Tetapi apa yang ditadbir di mana anda meletakkan Nama Belinda dan nama Gabe ini? 821 00:36:20,100 --> 00:36:20,764 >> ALEX: Tiada apa-apa? 822 00:36:20,764 --> 00:36:22,930 DAVID J. MALAN: [Ketawa] Jadi yang bekerja, itu denda. 823 00:36:22,930 --> 00:36:25,290 Jadi komputer adalah sedikit lebih teratur daripada itu. 824 00:36:25,290 --> 00:36:29,000 Dan apabila kita implement-- tinggal di sana hanya moment-- apabila kita benar-benar 825 00:36:29,000 --> 00:36:31,470 melaksanakan sesuatu seperti getstring dalam komputer, 826 00:36:31,470 --> 00:36:34,480 Zamyla mungkin diletakkan cukup banyak seperti yang anda lakukan pada skrin, di sana. 827 00:36:34,480 --> 00:36:36,660 >> Dan apa yang penting kepada notis di sini, apa yang Alex lakukan, 828 00:36:36,660 --> 00:36:40,260 adalah terdapat jenis penandaan yang antara setiap kata-kata ini, bukan? 829 00:36:40,260 --> 00:36:46,580 Anda tidak menulis Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A-B-- 830 00:36:46,580 --> 00:36:49,740 dalam erti kata lain, ada beberapa jenis penandaan yang seolah-olah, 831 00:36:49,740 --> 00:36:52,370 jenis, jarak rawak antara pelbagai kata-kata. 832 00:36:52,370 --> 00:36:54,120 Tetapi itu baik, kerana kita manusia kini boleh 833 00:36:54,120 --> 00:36:56,470 menggambarkan bahawa ini adalah empat tali berbeza. 834 00:36:56,470 --> 00:36:59,540 Ia bukan hanya satu urutan lot aksara. 835 00:36:59,540 --> 00:37:04,190 Jadi komputer, maka, sementara itu, mungkin mengambil rentetan seperti Zamyla, 836 00:37:04,190 --> 00:37:07,220 meletakkan setiap orang surat di dalam satu bait memori. 837 00:37:07,220 --> 00:37:10,400 Tetapi bilangan yang lebih besar, sudah tentu, daripada enam aksara. 838 00:37:10,400 --> 00:37:11,690 >> Ada sejumlah besar RAM. 839 00:37:11,690 --> 00:37:15,330 Dan selepas ini, ini grid kotak akan 840 00:37:15,330 --> 00:37:17,560 untuk mewakili apa yang Alex hanya lakukan di sini pada skrin. 841 00:37:17,560 --> 00:37:20,937 Dan sekarang, Alex, kita boleh menawarkan anda biru atau gajah oren dari Chang. 842 00:37:20,937 --> 00:37:22,270 ALEX: Saya akan mengambil gajah biru. 843 00:37:22,270 --> 00:37:23,120 DAVID J. MALAN: Seekor gajah biru. 844 00:37:23,120 --> 00:37:25,580 Jadi satu pusingan besar tepukan, jika kita boleh, untuk Alex sini. 845 00:37:25,580 --> 00:37:26,100 >> [Tepuk tangan] 846 00:37:26,100 --> 00:37:26,766 >> ALEX: Terima kasih. 847 00:37:26,766 --> 00:37:28,820 DAVID J. MALAN: Terima kasih. 848 00:37:28,820 --> 00:37:36,230 Jadi bisa dibesarkan adalah bahawa, walaupun corak jenis berubah mengikut masa, di sini 849 00:37:36,230 --> 00:37:40,430 di papan, terdapat ini penandaan antara tali pelbagai 850 00:37:40,430 --> 00:37:42,610 Alex yang mendapat untuk kita. 851 00:37:42,610 --> 00:37:45,230 Sekarang komputer, terus-terang, boleh melakukan perkara yang sama. 852 00:37:45,230 --> 00:37:48,210 Mereka jenis boleh mencebur tali mana-mana sahaja dalam RAM. 853 00:37:48,210 --> 00:37:50,710 Di sini, di sini, turun di sini, di sini. 854 00:37:50,710 --> 00:37:52,020 >> Mereka boleh melakukan perkara tersebut. 855 00:37:52,020 --> 00:37:54,280 Tetapi, sudah tentu, itu mungkin tidak perancangan yang terbaik. 856 00:37:54,280 --> 00:37:54,780 Betul? 857 00:37:54,780 --> 00:37:57,340 Jika saya bertanya kepada Alex untuk mendapatkan nama, mungkin dia akan 858 00:37:57,340 --> 00:38:01,370 meletakkan lebih ke bawah di sini, mungkin sehingga di sini, di sini, di sini, akhirnya 859 00:38:01,370 --> 00:38:02,211 di sini. 860 00:38:02,211 --> 00:38:05,460 Tetapi dengan perancangan sedikit lebih, sudah tentu, kita boleh meletakkan perkara-perkara di luar lebih bersih. 861 00:38:05,460 --> 00:38:07,350 Dan sesungguhnya, itulah yang komputer tidak. 862 00:38:07,350 --> 00:38:10,720 >> Tetapi tangkapan adalah bahawa jika rentetan seterusnya saya mendapat 863 00:38:10,720 --> 00:38:14,050 selepas Zamyla sesuatu seperti Belinda, 864 00:38:14,050 --> 00:38:17,929 mencadangkan di mana kita menulis surat b berkenaan dengan grid ini? 865 00:38:17,929 --> 00:38:18,720 Di mana anda akan pergi? 866 00:38:18,720 --> 00:38:21,480 Di sebelah kanan yang itu, bawah z, di bawah satu ini? 867 00:38:21,480 --> 00:38:23,204 Apa yang naluri pertama anda menjadi? 868 00:38:23,204 --> 00:38:24,120 PENONTON: Di bawah z. 869 00:38:24,120 --> 00:38:25,100 DAVID J. MALAN: Jadi di bawah z. 870 00:38:25,100 --> 00:38:26,530 Dan yang cukup mudah, bukan? 871 00:38:26,530 --> 00:38:29,321 Ia adalah jenis kemas, ia adalah apa yang kita lakukan pada papan kekunci apabila kita tekan Enter, 872 00:38:29,321 --> 00:38:31,770 atau e-mel apabila membuat senarai bullet perkara. 873 00:38:31,770 --> 00:38:34,310 Tetapi realitinya adalah bahawa komputer cuba untuk menjadi lebih cekap, 874 00:38:34,310 --> 00:38:37,170 dan menjejalkan pasti sebanyak data ke dalam RAM yang mungkin, 875 00:38:37,170 --> 00:38:38,890 supaya anda tidak membuang apa-apa bait. 876 00:38:38,890 --> 00:38:41,545 Supaya anda tidak membazir apa-apa estet skrin sebenar. 877 00:38:41,545 --> 00:38:44,170 Dan masalah itu, walaupun, adalah bahawa jika kita benar-benar meletakkan surat itu 878 00:38:44,170 --> 00:38:49,940 b selepas, bagaimana kita akan tahu di mana nama Zamyla ini berakhir 879 00:38:49,940 --> 00:38:51,840 dan nama Belinda bermula? 880 00:38:51,840 --> 00:38:55,270 Jadi, anda hanya manusia zaman dicadangkan, baik, tekan kekunci Enter, pada dasarnya. 881 00:38:55,270 --> 00:38:56,410 Meletakkannya di bawah. 882 00:38:56,410 --> 00:38:59,750 Atau walaupun Alex lakukan, hanya mula menulis nama yang akan datang di bawah yang sebelumnya, 883 00:38:59,750 --> 00:39:01,583 dan di bawah satu itu, dan kemudian di bawah satu itu. 884 00:39:01,583 --> 00:39:02,510 Itu merupakan isyarat visual. 885 00:39:02,510 --> 00:39:05,960 >> Komputer mempunyai satu lagi petunjuk visual, tetapi ia sedikit lebih ringkas. 886 00:39:05,960 --> 00:39:07,840 Ia watak funky ini. 887 00:39:07,840 --> 00:39:11,890 Garis sendeng terbalik 0, yang mungkin mengingatkan backslash n, 888 00:39:11,890 --> 00:39:12,640 dan sebagainya, kini. 889 00:39:12,640 --> 00:39:14,120 Urutan melarikan diri khas. 890 00:39:14,120 --> 00:39:19,120 Garis sendeng terbalik 0 adalah cara mewakili lapan bit sifar berturut-turut. 891 00:39:19,120 --> 00:39:22,000 0000 0000. 892 00:39:22,000 --> 00:39:26,130 >> Cara anda menyatakan bahawa tidak adalah mencecah bilangan yang sifar pada papan kekunci anda, 893 00:39:26,130 --> 00:39:28,140 kerana sebenarnya yang merupakan char ASCII. 894 00:39:28,140 --> 00:39:30,990 Ia kelihatan seperti nombor, tetapi sebenarnya nombor perpuluhan 895 00:39:30,990 --> 00:39:35,910 yang mewakili pekeliling glif, muka taip yang bulat. 896 00:39:35,910 --> 00:39:38,410 Sementara itu, garis sendeng terbalik sifar bermakna, secara literal 897 00:39:38,410 --> 00:39:40,700 meletakkan lapan sifar bait di sini untuk saya. 898 00:39:40,700 --> 00:39:42,136 >> Jadi ini agak sewenang-wenangnya. 899 00:39:42,136 --> 00:39:44,260 Kita boleh telah menggunakan apa-apa corak bit, tetapi dunia 900 00:39:44,260 --> 00:39:46,610 memutuskan beberapa tahun lalu, yang mewakili 901 00:39:46,610 --> 00:39:49,710 akhir rentetan dalam ingatan, hanya meletakkan sejumlah besar sifar. 902 00:39:49,710 --> 00:39:51,000 Kerana kita dapat mengesan itu. 903 00:39:51,000 --> 00:39:54,790 Sekarang ini bermakna bahawa tidak ada surat yang abjad boleh diwakili dengan sifar. 904 00:39:54,790 --> 00:39:58,480 >> Tetapi itu OK, kita sudah dilihat bahawa kita menggunakan 65 di dalam 97 di atas. 905 00:39:58,480 --> 00:40:00,290 Kami tidak mendapat mana-mana sahaja ditutup kepada semua sifar. 906 00:40:00,290 --> 00:40:03,040 907 00:40:03,040 --> 00:40:06,540 Jadi Belinda dalam ingatan komputer sebenarnya akan pergi di sini. 908 00:40:06,540 --> 00:40:09,764 Saya tertarik dalam kuning hanya untuk menarik perhatian kita kepadanya. 909 00:40:09,764 --> 00:40:11,680 Dan notis, juga, ini benar-benar sewenang-wenangnya. 910 00:40:11,680 --> 00:40:12,680 Saya telah disediakan sebagai grid. 911 00:40:12,680 --> 00:40:14,460 Seperti, RAM hanyalah beberapa objek fizikal. 912 00:40:14,460 --> 00:40:17,300 Ia tidak semestinya mempunyai baris dan lajur, per se. 913 00:40:17,300 --> 00:40:20,490 Ia hanya mendapat sejumlah besar bytes dilaksanakan dalam perkakasan entah bagaimana. 914 00:40:20,490 --> 00:40:22,817 Tetapi jika selepas Belinda saya tulis nama Gabe itu, 915 00:40:22,817 --> 00:40:25,650 dia akan berakhir di sini dalam ingatan, dan jika saya tulis nama Daven ini, 916 00:40:25,650 --> 00:40:27,316 misalnya, dia akan berakhir di sini. 917 00:40:27,316 --> 00:40:29,310 Dan saya boleh terus menulis lebih nama. 918 00:40:29,310 --> 00:40:32,100 >> Malangnya, jika saya cuba untuk tulis nama yang super panjang, 919 00:40:32,100 --> 00:40:33,730 Saya akhirnya mungkin kehabisan ingatan. 920 00:40:33,730 --> 00:40:37,810 Di mana, getstring adalah akan kembali NULL, seperti yang kita katakan. 921 00:40:37,810 --> 00:40:41,720 Tetapi bersyukur, sekurang-kurangnya ini visual di sini, kami tidak mendapatkan cukup yang jauh. 922 00:40:41,720 --> 00:40:45,860 >> Sekarang apa yang baik adalah bahawa ini idea merawat perkara 923 00:40:45,860 --> 00:40:49,720 sebagai dalam kotak adalah wakil ciri C 924 00:40:49,720 --> 00:40:52,690 dan banyak bahasa, dikenali sebagai array. 925 00:40:52,690 --> 00:40:55,490 Pelbagai adalah satu lagi jenis data. 926 00:40:55,490 --> 00:40:57,380 Ia adalah satu struktur data, jika anda akan. 927 00:40:57,380 --> 00:41:01,160 Struktur dalam erti kata ia benar-benar, jenis, kelihatan seperti kotak, sekurang-kurangnya 928 00:41:01,160 --> 00:41:02,320 dalam fikiran anda. 929 00:41:02,320 --> 00:41:09,680 Pelbagai adalah berdampingan urutan jenis data yang serupa, 930 00:41:09,680 --> 00:41:11,330 kembali ke belakang untuk kembali ke belakang. 931 00:41:11,330 --> 00:41:14,720 >> Jadi tali, dalam lain kata-kata, adalah pelbagai aksara. 932 00:41:14,720 --> 00:41:16,120 Pelbagai watak-watak. 933 00:41:16,120 --> 00:41:19,070 Tetapi ternyata anda boleh mempunyai tatasusunan tandan perkara. 934 00:41:19,070 --> 00:41:21,870 Malah, kita boleh meletakkan walaupun nombor dalam array. 935 00:41:21,870 --> 00:41:23,920 Jadi bentuk yang kita akan memulakan 936 00:41:23,920 --> 00:41:26,590 mengisytiharkan data ini struktur yang dikenali sebagai array 937 00:41:26,590 --> 00:41:28,250 juga akan menggunakan kurungan persegi. 938 00:41:28,250 --> 00:41:31,500 Tetapi kurungan persegi akan mempunyai makna yang berbeza dalam konteks ini. 939 00:41:31,500 --> 00:41:33,450 >> Dan mari kita lihat ia seperti berikut. 940 00:41:33,450 --> 00:41:36,780 Katakan saya membuka satu fail baru di sini. 941 00:41:36,780 --> 00:41:38,535 Dan menyimpan ini sebagai ages.c. 942 00:41:38,535 --> 00:41:41,280 943 00:41:41,280 --> 00:41:43,470 Dan saya akan menyimpan ini dalam folder saya di sini. 944 00:41:43,470 --> 00:41:46,130 Dan sekarang saya akan pergi ke depan dan mula menaip sesuatu 945 00:41:46,130 --> 00:41:53,940 seperti termasuk CS50.h, termasuk stdio.h, int tidak sah utama. 946 00:41:53,940 --> 00:41:57,370 Dan kemudian di dalam di sini, saya mahu untuk pertama mempunyai int dipanggil umur. 947 00:41:57,370 --> 00:42:01,371 >> Dan saya akan menggunakannya untuk mendapatkan int dari pengguna untuk umur mereka. 948 00:42:01,371 --> 00:42:04,620 Tetapi program ini yang dimaksudkan untuk digunakan oleh ramai orang, atas apa jua konteks. 949 00:42:04,620 --> 00:42:05,490 Saya ada garis orang. 950 00:42:05,490 --> 00:42:08,281 Kesemua mereka perlu menaip dalam mereka umur mungkin beberapa, saya tidak tahu, 951 00:42:08,281 --> 00:42:10,530 persaingan, atau peristiwa bahawa mereka telah tiba untuk. 952 00:42:10,530 --> 00:42:13,030 Jadi orang yang akan datang, saya perlu berubah-ubah yang lain. 953 00:42:13,030 --> 00:42:15,790 >> Kerana jika saya hanya melakukan umur mendapat getInt, itu 954 00:42:15,790 --> 00:42:18,500 akan memukul berkali-kali, atau menulis ganti umur orang yang sebelumnya. 955 00:42:18,500 --> 00:42:19,760 Jadi, itu tidak baik. 956 00:42:19,760 --> 00:42:21,790 Jadi naluri pertama saya mungkin, oh, semua hak, 957 00:42:21,790 --> 00:42:26,260 jika saya ingin mendapatkan beberapa rakyat ages-- mari kita memanggil age1 ini, 958 00:42:26,260 --> 00:42:31,280 int age2 mendapat int, int age3 mendapat getInt. 959 00:42:31,280 --> 00:42:35,340 Dan sekarang saya akan menggunakan kod pseudokod beberapa di sini. 960 00:42:35,340 --> 00:42:37,679 >> Lakukan sesuatu dengan nombor-nombor. 961 00:42:37,679 --> 00:42:40,470 Kami akan meninggalkan untuk hari yang lain apa yang yang kami lakukan di sana, kerana kami hanya 962 00:42:40,470 --> 00:42:44,200 menjaga masa ini mengenai age1, age2, age3. 963 00:42:44,200 --> 00:42:46,450 Malangnya, sebaik sahaja saya menyusun program ini 964 00:42:46,450 --> 00:42:51,140 dan meletakkannya di hadapan pengguna sebenar, apa yang reka bentuk asasnya miskin 965 00:42:51,140 --> 00:42:53,890 keputusan saya seolah-olah telah dibuat? 966 00:42:53,890 --> 00:42:54,624 Yeah? 967 00:42:54,624 --> 00:42:55,499 PENONTON: [didengar] 968 00:42:55,499 --> 00:42:58,071 969 00:42:58,071 --> 00:42:59,820 DAVID J. MALAN: Ya, Saya tidak cuba 970 00:42:59,820 --> 00:43:02,028 untuk memikirkan berapa banyak peringkat umur saya benar-benar mengambil berat tentang? 971 00:43:02,028 --> 00:43:05,380 Jika saya mempunyai kurang daripada tiga orang di sini, dan oleh itu kurang daripada tiga peringkat umur, 972 00:43:05,380 --> 00:43:07,260 Saya masih membuta tuli menjangkakan tiga. 973 00:43:07,260 --> 00:43:08,720 Allah melarang empat orang muncul. 974 00:43:08,720 --> 00:43:10,990 Program ni hanya akan tidak menyokong mereka. 975 00:43:10,990 --> 00:43:13,280 >> Dan hal ini, cerita lama pendek, bukan tabiat yang baik. 976 00:43:13,280 --> 00:43:13,780 Betul? 977 00:43:13,780 --> 00:43:16,530 Saya pada dasarnya menyalin dan paste kod dan hanya Tweaker 978 00:43:16,530 --> 00:43:17,430 nama-nama yang berubah-ubah. 979 00:43:17,430 --> 00:43:22,410 Dan, Tuhan saya, jika anda mempunyai, bukan tiga peringkat umur, tetapi 10, atau 100, atau 6,500 980 00:43:22,410 --> 00:43:23,820 mahasiswa, misalnya. 981 00:43:23,820 --> 00:43:26,950 Ini tidak akan menjadi terutamanya kod elegan, atau mapan. 982 00:43:26,950 --> 00:43:29,200 Anda akan perlu menulis semula program ini setiap kali 983 00:43:29,200 --> 00:43:30,760 nombor orang perubahan. 984 00:43:30,760 --> 00:43:35,090 >> Jadi, Alhamdullillah di sebenar kami Fail ages.c untuk hari ini, 985 00:43:35,090 --> 00:43:36,970 kita mempunyai penyelesaian yang lebih pandai. 986 00:43:36,970 --> 00:43:39,800 Pertama, saya akan meminjam membina kami telah menggunakan beberapa kali, 987 00:43:39,800 --> 00:43:43,744 ini dilakukan semasa gelung, untuk mendapatkan bilangan orang-orang di dalam bilik. 988 00:43:43,744 --> 00:43:46,910 Saya hanya akan mengganggu pengguna, sekali lagi dan sekali lagi, sehingga dia memberikan saya 989 00:43:46,910 --> 00:43:49,260 nilai n itu integer positif. 990 00:43:49,260 --> 00:43:51,590 >> Saya boleh digunakan, lalu masa ini mendapatkan int positif. 991 00:43:51,590 --> 00:43:53,720 Tetapi kita tidak perlu yang untuk sebenar, jadi saya pergi ke hadapan 992 00:43:53,720 --> 00:43:55,660 dan dilaksanakan semula idea ini. 993 00:43:55,660 --> 00:43:58,410 Sekarang turun di sini, ini adalah silap mata baru. 994 00:43:58,410 --> 00:44:02,260 Selaras 27, sebagai komen selaras 26 mencadangkan, 995 00:44:02,260 --> 00:44:05,180 mengisytiharkan array di mana untuk menyimpan umur semua orang. 996 00:44:05,180 --> 00:44:09,320 >> Jadi jika anda mahu untuk mendapatkan, tidak satu int, tidak dua ints, tetapi sejumlah besar ints. 997 00:44:09,320 --> 00:44:13,800 Secara khusus n integer, n ialah mungkin tiga, mungkin 100, mungkin 1000. 998 00:44:13,800 --> 00:44:17,570 Sintaks, agak mudah, adalah untuk katakan, apa jenis data yang anda mahu? 999 00:44:17,570 --> 00:44:19,620 Apa yang anda mahu untuk memanggil bahawa sebahagian memori? 1000 00:44:19,620 --> 00:44:23,530 Apa yang anda mahu untuk memanggil grid yang kelihatan seperti ini bergambar? 1001 00:44:23,530 --> 00:44:27,700 >> Dan dalam kurungan di sini, kamu katakan berapa besar anda mahu array untuk menjadi. 1002 00:44:27,700 --> 00:44:30,450 Dan lebih awal, apabila saya berkata, sintaks adalah sedikit berbeza di sini, 1003 00:44:30,450 --> 00:44:33,614 kami masih menggunakan kurungan persegi, tetapi apabila saya mengisytiharkan array, 1004 00:44:33,614 --> 00:44:35,530 bilangan bahagian dalam kurungan persegi cara 1005 00:44:35,530 --> 00:44:37,610 berapa besar anda mahu array untuk menjadi. 1006 00:44:37,610 --> 00:44:42,490 >> Sebaliknya, apabila kita telah menggunakan s kurungan i masa yang lalu, s, tali, 1007 00:44:42,490 --> 00:44:46,820 memang pelbagai aksara, tetapi apabila anda tidak mengisytiharkan pembolehubah, 1008 00:44:46,820 --> 00:44:49,760 seperti dengan kata kunci ini di sini, anda hanya mendapat 1009 00:44:49,760 --> 00:44:54,280 indeks tertentu, tertentu unsur dari pelbagai itu. 1010 00:44:54,280 --> 00:44:57,090 Setelah kita tahu bahawa, selebihnya ini adalah mudah. 1011 00:44:57,090 --> 00:45:00,765 Jika baru saya pertama akan mencetak apa yang usia bilangan orang i. 1012 00:45:00,765 --> 00:45:03,890 Di mana saya hanya mengatakan beberapa orang satu, bilangan orang dua, nombor tiga orang. 1013 00:45:03,890 --> 00:45:06,306 >> Dan saya hanya melakukan aritmetik, supaya orang-orang biasa seperti, 1014 00:45:06,306 --> 00:45:09,030 kita mengira dari satu untuk ini program, dan bukan dari sifar. 1015 00:45:09,030 --> 00:45:13,620 Kemudian saya memanggil getint, tetapi saya menyimpan jawapan dalam peringkat umur braket i. 1016 00:45:13,620 --> 00:45:16,610 Yang umur i'th dalam susunan. 1017 00:45:16,610 --> 00:45:21,640 Jadi manakala kali terakhir kami merawat kotak-kotak sebagai aksara bagi nama Zamyla ini, 1018 00:45:21,640 --> 00:45:22,490 dan lain-lain. 1019 00:45:22,490 --> 00:45:26,530 Kini, kotak-kotak mewakili 32 bit, atau empat bait 1020 00:45:26,530 --> 00:45:29,510 di mana kita boleh menyimpan satu int, int satu, int satu. 1021 00:45:29,510 --> 00:45:31,890 Semua yang, sekali lagi, adalah jenis data yang sama. 1022 00:45:31,890 --> 00:45:33,890 >> Sekarang saya melakukan sesuatu yang bodoh, seperti masa berlalu, hanya 1023 00:45:33,890 --> 00:45:35,510 untuk mewajarkan menulis program ini. 1024 00:45:35,510 --> 00:45:40,050 Dan kemudian turun di sini, saya sekali lagi melelar lebih array berkata setahun dari sekarang, 1025 00:45:40,050 --> 00:45:43,090 bilangan orang satu wasiat berusia sesuatu tahun. 1026 00:45:43,090 --> 00:45:45,010 Dan untuk memikirkan bahawa math-- Maksud saya, ini 1027 00:45:45,010 --> 00:45:49,260 tidak sangat rumit arithmetic-- Saya hanya menambah satu usia. 1028 00:45:49,260 --> 00:45:51,240 Hanya untuk menunjukkan, sekali lagi, ini. 1029 00:45:51,240 --> 00:45:57,910 >> Sama seperti saya boleh indeks ke dalam tali, s, jadi boleh saya indeks ke dalam pelbagai peringkat umur, 1030 00:45:57,910 --> 00:45:59,950 seperti itu di sana. 1031 00:45:59,950 --> 00:46:03,340 Jadi di mana adalah ini akan membawa kita? 1032 00:46:03,340 --> 00:46:07,070 Oleh itu, kita akan lihat, akhirnya, satu beberapa perkara pada hari-hari akan datang. 1033 00:46:07,070 --> 00:46:09,510 Satu, selama ini, apabila menulis program anda sendiri, 1034 00:46:09,510 --> 00:46:11,239 seperti Mario, tamak, kredit. 1035 00:46:11,239 --> 00:46:13,780 Anda telah menaip nama program dan memukul Enter. 1036 00:46:13,780 --> 00:46:15,610 Dan kemudian mendapatkan input pengguna. 1037 00:46:15,610 --> 00:46:18,137 >> Dengan getString, getInt, getLongLong, atau sebagainya. 1038 00:46:18,137 --> 00:46:20,720 Tetapi ternyata bahawa sokongan C sesuatu yang dinamakan baris arahan 1039 00:46:20,720 --> 00:46:25,740 hujah-hujah, yang akan membiarkan kami sebenarnya mendapat sekurang-perkataan yang anda taip, 1040 00:46:25,740 --> 00:46:28,570 di segera yang berkelip, selepas nama program anda. 1041 00:46:28,570 --> 00:46:31,430 >> Jadi pada hari-hari akan datang, anda mungkin menaip sesuatu seperti Caesar, 1042 00:46:31,430 --> 00:46:34,950 atau ./caesar bilangan 13, selepas itu. 1043 00:46:34,950 --> 00:46:36,070 Kita akan melihat bagaimana yang bekerja. 1044 00:46:36,070 --> 00:46:37,550 Kerana sesungguhnya, dalam masalah menetapkan dua, kami 1045 00:46:37,550 --> 00:46:39,383 akan memperkenalkan kepada anda untuk sesuatu yang sedikit 1046 00:46:39,383 --> 00:46:42,360 mengingatkan ini Ralphie mencabar awal kartografi. 1047 00:46:42,360 --> 00:46:43,970 Seni berebut maklumat. 1048 00:46:43,970 --> 00:46:46,660 Ini, sebenarnya, adalah sangat mengingatkan apa Ralphie lakukan. 1049 00:46:46,660 --> 00:46:51,380 >> Ini ialah contoh bagi sebuah penyulitan algoritma dipanggil ROT13, R-O-T 13. 1050 00:46:51,380 --> 00:46:54,910 Yang bermakna berputar huruf dalam abjad 13 tempat. 1051 00:46:54,910 --> 00:46:58,309 Dan jika anda melakukan itu, anda akan melihat kini apa yang, mungkin, frasa biasa. 1052 00:46:58,309 --> 00:47:01,100 Tetapi cara kita akan gunakan ini, akhirnya, adalah lebih umum. 1053 00:47:01,100 --> 00:47:04,390 >> Dalam P menetapkan dua, dalam edisi standard, anda akan melaksanakan beberapa tulisan rahsia, 1054 00:47:04,390 --> 00:47:06,720 satu dipanggil Caesar, satu dipanggil Vigenere. 1055 00:47:06,720 --> 00:47:10,090 Kedua-dua mereka adalah putaran nombor rahsia, kerana entah bagaimana anda 1056 00:47:10,090 --> 00:47:11,826 menjadikan satu huruf ke dalam huruf yang berbeza. 1057 00:47:11,826 --> 00:47:12,950 Dan Caesar adalah super mudah. 1058 00:47:12,950 --> 00:47:16,220 Anda menambah satu, anda menambah 13, atau beberapa nombor sehingga 26. 1059 00:47:16,220 --> 00:47:19,570 Vigenere tidak bahawa pada dasar setiap huruf. 1060 00:47:19,570 --> 00:47:22,140 Jadi Vigenere, kerana anda akan melihat dalam spec, adalah lebih selamat. 1061 00:47:22,140 --> 00:47:24,973 >> Tetapi pada akhir hari apa anda akan melaksana dan P menetapkan dua, 1062 00:47:24,973 --> 00:47:29,050 adalah yang utama yang menggunakan kedua-dua untuk penyulitan dan penyahsulitan. 1063 00:47:29,050 --> 00:47:32,160 Merujuk kepada proses menukarkan teks biasa, beberapa mesej asal, 1064 00:47:32,160 --> 00:47:34,490 ke dalam teks menghitung, yang adalah sesuatu yang disulitkan. 1065 00:47:34,490 --> 00:47:36,220 Dan kemudian decrypting sekali lagi. 1066 00:47:36,220 --> 00:47:38,119 >> Dalam edisi penggodam, Sementara itu, anda akan 1067 00:47:38,119 --> 00:47:40,660 ditugaskan untuk sesuatu yang serupa dalam semangat, di mana kami akan memberikan anda 1068 00:47:40,660 --> 00:47:44,610 fail, dari Linux biasa, atau Mac, atau Unix komputer dipanggil Etsy 1069 00:47:44,610 --> 00:47:47,800 kata laluan, yang mengandungi keseluruhan sekumpulan nama pengguna dan kata laluan. 1070 00:47:47,800 --> 00:47:50,932 Dan orang-orang mempunyai semua kata laluan telah disulitkan, atau dicincang, 1071 00:47:50,932 --> 00:47:53,140 boleh dikatakan, lebih baik kerana anda akan melihat dalam spec. 1072 00:47:53,140 --> 00:47:57,090 >> Dan edisi penggodam akan mencabar anda mengambil input seperti ini, 1073 00:47:57,090 --> 00:47:58,800 dan retak kata laluan. 1074 00:47:58,800 --> 00:48:02,590 Iaitu, mencari tahu apa yang kata laluan manusia benar-benar adalah. 1075 00:48:02,590 --> 00:48:05,570 Kerana, sesungguhnya, kata laluan adalah amnya tidak disimpan dalam jelas, 1076 00:48:05,570 --> 00:48:08,260 dan secara amnya kata laluan yang harus sukar untuk diteka. 1077 00:48:08,260 --> 00:48:09,610 Bukan itu sering kes itu. 1078 00:48:09,610 --> 00:48:12,110 >> Dan apa yang saya fikir kita akan lakukan ialah membuat kesimpulan dengan beberapa minit 1079 00:48:12,110 --> 00:48:15,160 renungan yang terutamanya Pilihan miskin kata laluan 1080 00:48:15,160 --> 00:48:17,260 dari filem yang anda mungkin ingat mesra dengan panggilan. 1081 00:48:17,260 --> 00:48:18,915 Dan jika tidak, anda perlu menyewa. 1082 00:48:18,915 --> 00:48:20,070 >> [VIDEO MAIN SEMULA] 1083 00:48:20,070 --> 00:48:22,320 >> -Helmet, Anda iblis, apa yang berlaku? 1084 00:48:22,320 --> 00:48:24,240 Apa yang anda lakukan untuk anak perempuan saya? 1085 00:48:24,240 --> 00:48:28,010 >> -Permit Saya untuk memperkenalkan cemerlang pakar bedah plastik muda, 1086 00:48:28,010 --> 00:48:30,010 Doktor Phillip Schlotkin. 1087 00:48:30,010 --> 00:48:35,020 Hidung besar lelaki kerja dalam seluruh alam semesta dan Beverly Hills. 1088 00:48:35,020 --> 00:48:36,140 >> Your Highness. 1089 00:48:36,140 --> 00:48:36,820 >> Kerja -Nose? 1090 00:48:36,820 --> 00:48:37,700 Saya tidak faham. 1091 00:48:37,700 --> 00:48:39,070 Dia sudah mempunyai pekerjaan hidung. 1092 00:48:39,070 --> 00:48:40,800 Ia adalah dia yang manis 16 ini. 1093 00:48:40,800 --> 00:48:42,590 >> Tidak, ia bukan apa yang anda fikirkan. 1094 00:48:42,590 --> 00:48:44,490 Ia lebih buruk. 1095 00:48:44,490 --> 00:48:48,160 Jika anda tidak memberi saya gabungan dengan perisai udara, 1096 00:48:48,160 --> 00:48:52,748 doktor Schlotkin akan memberikan anda anak perempuan belakang hidung rumahnya. 1097 00:48:52,748 --> 00:48:53,748 - [Situ menarik nafas terkejut] Nooooooooooooo. 1098 00:48:53,748 --> 00:48:57,684 1099 00:48:57,684 --> 00:48:59,652 Dari mana kamu mendapat bahawa? 1100 00:48:59,652 --> 00:49:00,640 >> -Semua Betul. 1101 00:49:00,640 --> 00:49:02,506 Saya akan memberitahu, saya akan beritahu. 1102 00:49:02,506 --> 00:49:03,498 >> Tidak, Ayah, tidak. 1103 00:49:03,498 --> 00:49:04,490 Anda tidak boleh. 1104 00:49:04,490 --> 00:49:06,090 >> -You're Betul sayang saya. 1105 00:49:06,090 --> 00:49:07,390 Saya akan terlepas hidung baru anda. 1106 00:49:07,390 --> 00:49:10,990 Tetapi saya tidak akan memberitahu mereka gabungan tidak kira apa. 1107 00:49:10,990 --> 00:49:12,450 >> -Sangat Juga. 1108 00:49:12,450 --> 00:49:14,830 Doktor Schlotkin, lakukan yang paling teruk anda. 1109 00:49:14,830 --> 00:49:15,744 >> Keseronokan -My. 1110 00:49:15,744 --> 00:49:19,860 1111 00:49:19,860 --> 00:49:20,800 >> -Tiada! 1112 00:49:20,800 --> 00:49:22,780 Tunggu, tunggu. 1113 00:49:22,780 --> 00:49:24,000 Saya akan memberitahu. 1114 00:49:24,000 --> 00:49:25,830 Saya akan memberitahu. 1115 00:49:25,830 --> 00:49:28,270 >> -Saya Tahu ia akan bekerja. 1116 00:49:28,270 --> 00:49:31,390 Baiklah, memberikan kepada saya. 1117 00:49:31,390 --> 00:49:36,220 >> Gabungan-The adalah satu. 1118 00:49:36,220 --> 00:49:36,740 >> -Satu. 1119 00:49:36,740 --> 00:49:37,473 >> -Satu. 1120 00:49:37,473 --> 00:49:37,972 -Two. 1121 00:49:37,972 --> 00:49:38,471 -Two. 1122 00:49:38,471 --> 00:49:39,800 -Two. 1123 00:49:39,800 --> 00:49:40,300 -Three. 1124 00:49:40,300 --> 00:49:40,800 -Three. 1125 00:49:40,800 --> 00:49:41,800 -Three. 1126 00:49:41,800 --> 00:49:42,300 -Four. 1127 00:49:42,300 --> 00:49:42,800 -Four. 1128 00:49:42,800 --> 00:49:44,707 -Four. 1129 00:49:44,707 --> 00:49:45,521 -Five. 1130 00:49:45,521 --> 00:49:46,430 -Five. 1131 00:49:46,430 --> 00:49:47,930 -Five. 1132 00:49:47,930 --> 00:49:53,480 -So Kombinasi adalah satu, dua, tiga, empat, lima. 1133 00:49:53,480 --> 00:49:56,140 Itu gabungan yang bodoh Pernah saya dengar dalam hidup saya. 1134 00:49:56,140 --> 00:49:58,640 Itulah jenis perkara yang bodoh kali ini kepada bagasinya. 1135 00:49:58,640 --> 00:50:00,000 >> -Thank Anda, tuanku. 1136 00:50:00,000 --> 00:50:01,340 >> [REMOTE KLIK] 1137 00:50:01,340 --> 00:50:02,450 >> -Apa Adakah anda lakukan? 1138 00:50:02,450 --> 00:50:03,800 >> -Saya Dimatikan dinding. 1139 00:50:03,800 --> 00:50:05,010 >> Tidak, anda tidak, anda dimatikan keseluruhan filem. 1140 00:50:05,010 --> 00:50:06,220 >> Must've -Saya menekan butang yang salah. 1141 00:50:06,220 --> 00:50:07,064 >> -Well, Meletakkannya kembali ke atas! 1142 00:50:07,064 --> 00:50:07,910 Letakkan filem kembali! 1143 00:50:07,910 --> 00:50:08,300 >> Ya, tuan! 1144 00:50:08,300 --> 00:50:08,799 Ya, tuan. 1145 00:50:08,799 --> 00:50:09,660 -Let Pergi, Arnold. 1146 00:50:09,660 --> 00:50:10,450 Marilah Gretchen. 1147 00:50:10,450 --> 00:50:12,533 Sudah tentu anda tahu saya akan perlu menghantar bil kepada anda untuk ini. 1148 00:50:12,533 --> 00:50:16,720 1149 00:50:16,720 --> 00:50:17,220 -Well? 1150 00:50:17,220 --> 00:50:17,802 Adakah ia berfungsi? 1151 00:50:17,802 --> 00:50:18,510 Di mana raja? 1152 00:50:18,510 --> 00:50:20,218 >> -Ia Bekerja, tuan, kita mempunyai gabungan. 1153 00:50:20,218 --> 00:50:20,740 -Great. 1154 00:50:20,740 --> 00:50:24,810 Sekarang kita boleh mengambil setiap nafas terakhir udara segar dari planet Druidia. 1155 00:50:24,810 --> 00:50:25,890 Apakah kombinasi? 1156 00:50:25,890 --> 00:50:28,155 >> -Satu, Dua, tiga, empat, lima. 1157 00:50:28,155 --> 00:50:29,890 >> -Satu, Dua, tiga, empat, lima? 1158 00:50:29,890 --> 00:50:30,390 -Ya. 1159 00:50:30,390 --> 00:50:31,110 -Itu Mengagumkan. 1160 00:50:31,110 --> 00:50:34,550 Saya ada yang sama gabungan di bagasi saya. 1161 00:50:34,550 --> 00:50:37,160 Sediakan Spaceball 1 untuk berlepas serta-merta. 1162 00:50:37,160 --> 00:50:38,160 >> Ya, tuan. 1163 00:50:38,160 --> 00:50:40,745 >> -Dan Menukar gabungan di bagasi saya. 1164 00:50:40,745 --> 00:50:41,578 [TUTUP PINTU BUNYI] 1165 00:50:41,578 --> 00:50:42,064 [Clink DARI PINTU memukul HELMET] 1166 00:50:42,064 --> 00:50:42,550 -Ahh. 1167 00:50:42,550 --> 00:50:43,383 [VIDEO AKHIR MAIN SEMULA] 1168 00:50:43,383 --> 00:50:46,700 DAVID J. MALAN: Itu sahaja untuk CS50, kita akan melihat anda minggu depan. 1169 00:50:46,700 --> 00:50:49,883 Pencerita: Dan kini, Deep Fikiran, oleh Daven Farnham. 1170 00:50:49,883 --> 00:50:53,160 1171 00:50:53,160 --> 00:50:55,860 >> DAVEN Farnham: Pengkodan dalam C adalah jadi jauh lebih sukar daripada Scratch. 1172 00:50:55,860 --> 00:50:57,320 printf, Scratch adalah satu pembohongan. 1173 00:50:57,320 --> 00:50:59,930 1174 00:50:59,930 --> 00:51:01,430 >> [Ketawa SOUNDBITE] 1175 00:51:01,430 --> 00:51:02,486