1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> SPEAKER 1: Baiklah. 3 00:00:13,650 --> 00:00:14,390 Selamat kembali. 4 00:00:14,390 --> 00:00:19,260 Ini adalah Minggu Dua CS50, dan kami mempunyai setakat ini telah menggunakan fungsi tetapi 5 00:00:19,260 --> 00:00:20,830 sebahagian besarnya mengambil mereka untuk diberikan. 6 00:00:20,830 --> 00:00:23,430 Kami telah menggunakan printf yang mempunyai kesan sampingan percetakan 7 00:00:23,430 --> 00:00:24,110 perkara pada skrin. 8 00:00:24,110 --> 00:00:25,790 Kami telah menggunakan get-int, dapatkan terapung. 9 00:00:25,790 --> 00:00:29,230 >> Tetapi bagaimana jika anda benar-benar mahu untuk mewujudkan fungsi anda sendiri, sebagai sebahagian daripada 10 00:00:29,230 --> 00:00:31,740 anda mungkin telah mula lakukan untuk Set Masalah Satu, walaupun 11 00:00:31,740 --> 00:00:33,140 tidak perlu ketat? 12 00:00:33,140 --> 00:00:37,150 Nah, mari kita pergi ke hadapan dan mengkaji semula bahawa Masalah hanya meminta pengguna untuk 13 00:00:37,150 --> 00:00:40,660 nama dan percetakan mereka sesuatu di skrin, tetapi cuba untuk beberapa faktor 14 00:00:40,660 --> 00:00:44,000 persamaan yang kita telah dilihat dalam kod kami setakat ini. 15 00:00:44,000 --> 00:00:45,120 Jadi oleh yang saya maksudkan yang berikut. 16 00:00:45,120 --> 00:00:47,315 >> Saya akan pergi ke hadapan dan mewujudkan program yang baru, sila hubungi 17 00:00:47,315 --> 00:00:49,320 ia hello.c seperti biasa. 18 00:00:49,320 --> 00:00:53,730 Saya akan pergi ke hadapan dan memberikan diri saya termasuk io.h standard di atas. 19 00:00:53,730 --> 00:00:57,040 Saya akan juga memberikan diri preemptively perpustakaan CS50 supaya 20 00:00:57,040 --> 00:00:59,080 Saya tidak dapat menjerit oleh pengkompil. 21 00:00:59,080 --> 00:01:02,400 Dan sekarang saya akan pergi ke hadapan dan mengisytiharkan int, utama, tidak sah. 22 00:01:02,400 --> 00:01:09,020 >> Dan kemudian di sini, ini adalah di mana saya mahu untuk memulakan untuk outsource fungsi untuk 23 00:01:09,020 --> 00:01:12,090 beberapa fungsi lain yang saya sendiri pagi akan menulis tetapi yang tidak 24 00:01:12,090 --> 00:01:13,820 kini wujud. 25 00:01:13,820 --> 00:01:19,210 Sebagai contoh, katakan bahawa saya mahu satu fungsi yang membolehkan saya 26 00:01:19,210 --> 00:01:23,830 mencetak hello, koma, dan maka beberapa nama pengguna. 27 00:01:23,830 --> 00:01:29,010 Bukannya terus berbuat printf hello,% s, ia tidak akan menjadi baik jika 28 00:01:29,010 --> 00:01:33,380 terdapat hanya fungsi yang dipanggil tidak printf tetapi nama cetak? 29 00:01:33,380 --> 00:01:36,600 >> Jadi, dalam erti kata lain, saya ingin dapat menulis program yang tidak sedikit 30 00:01:36,600 --> 00:01:37,710 sesuatu seperti ini. 31 00:01:37,710 --> 00:01:42,070 Pertama, saya akan mengatakan printf anda nama, sekali gus menyebabkan pengguna untuk 32 00:01:42,070 --> 00:01:46,150 memberi saya nama beliau, dan kemudian saya akan menggunakan s tali biasa kepada 33 00:01:46,150 --> 00:01:47,290 mengisytiharkan rentetan. 34 00:01:47,290 --> 00:01:50,420 Berikan saya ubah rentetan jenis, memanggilnya s, dan simpan dalam bahawa 35 00:01:50,420 --> 00:01:52,120 menyebabkan memanggil mendapatkan tali. 36 00:01:52,120 --> 00:01:56,060 Tetapi sekarang dalam beberapa minggu yang lepas, saya akan mempunyai agak tediously dilakukan hello,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> Dan dalam erti kata lain, kita telah melihat ini contoh sekumpulan kali, dan ia adalah satu 39 00:02:02,570 --> 00:02:05,280 contoh remeh kerana terdapat hanya satu baris kod supaya ia benar-benar bukan 40 00:02:05,280 --> 00:02:06,860 masalah besar untuk terus menaip lagi. 41 00:02:06,860 --> 00:02:09,990 Tetapi menganggap bahawa ini selaras kod sebenarnya telah menjadi beban, dan 42 00:02:09,990 --> 00:02:12,900 ia bukan satu baris kod tetapi ia 10 baris kod dua minggu dari sekarang, 43 00:02:12,900 --> 00:02:15,190 dan anda hanya mendapat letih menyalin dan menampal atau 44 00:02:15,190 --> 00:02:17,180 penaipan semula kod yang sama. 45 00:02:17,180 --> 00:02:22,100 Bukankah lebih baik daripada melakukan printf hello,% s dan sebagainya, 46 00:02:22,100 --> 00:02:26,500 bukankah lebih baik jika terdapat hanya fungsi yang dipanggil nama cetak yang 47 00:02:26,500 --> 00:02:27,560 mengambil hujah - 48 00:02:27,560 --> 00:02:29,120 dalam erti kata lain, ia mengambil input - 49 00:02:29,120 --> 00:02:30,620 dan kemudian koma bertitik. 50 00:02:30,620 --> 00:02:33,240 Jadi fungsi itu, tidak akan ia akan bagus jika itu wujud? 51 00:02:33,240 --> 00:02:36,690 Kemudian saya tidak akan perlu bimbang tentang apa printf, apa% s dan semua 52 00:02:36,690 --> 00:02:39,400 ini kerumitan yang tidak semua yang menarik. 53 00:02:39,400 --> 00:02:40,570 Mereka adalah berguna. 54 00:02:40,570 --> 00:02:44,700 >> Jadi nama cetak, malangnya, tidak dicipta kira-kira 40 tahun campur lalu. 55 00:02:44,700 --> 00:02:45,980 Tiada siapa yang terfikir untuk menulisnya. 56 00:02:45,980 --> 00:02:48,300 Tetapi itulah keindahan yang mempunyai bahasa pengaturcaraan, seperti di 57 00:02:48,300 --> 00:02:52,930 Awal anda boleh menentukan blok adat, jadi dalam C dan bahasa yang paling mana-mana, boleh anda 58 00:02:52,930 --> 00:02:57,260 menentukan fungsi anda sendiri, boleh anda menentukan fungsi anda sendiri. 59 00:02:57,260 --> 00:03:01,710 Jadi, walaupun kita mendapat utama oleh secara automatik untuk bebas, kita boleh mengisytiharkan 60 00:03:01,710 --> 00:03:02,730 fungsi kita sendiri. 61 00:03:02,730 --> 00:03:05,670 >> Jadi, saya akan membuat beberapa bilik di sini top up, dan saya akan mengisytiharkan saya 62 00:03:05,670 --> 00:03:08,210 fungsi sendiri yang akan kelihatan sedikit pelik pada mulanya tetapi kami akan datang 63 00:03:08,210 --> 00:03:09,400 kembali ke ini tidak lama lagi. 64 00:03:09,400 --> 00:03:12,310 Saya akan mengatakan tidak sah, dengan itu menunjukkan fungsi ini tidak 65 00:03:12,310 --> 00:03:16,040 sesuatu, mempunyai kesan sampingan, tetapi ia tidak kembali sesuatu kepada saya dalam 66 00:03:16,040 --> 00:03:18,810 cara yang sama yang mendapat int atau mendapatkan tali sendiri tidak. 67 00:03:18,810 --> 00:03:22,450 Dan saya akan memberikan fungsi ini nama nama cetak, dan saya akan 68 00:03:22,450 --> 00:03:26,470 menentukan bahawa lelaki ini akan mengambil rentetan, dan saya akan memanggil bahawa 69 00:03:26,470 --> 00:03:27,600 Nama tali. 70 00:03:27,600 --> 00:03:32,100 Saya boleh memanggilnya apa-apa yang saya mahu, tetapi saya mahu kod saya untuk menjadi diri mendokumenkan. 71 00:03:32,100 --> 00:03:34,770 Dalam erti kata lain, jika salah satu daripada anda adalah untuk membuka fail ini dan membacanya, anda boleh 72 00:03:34,770 --> 00:03:39,020 jenis kesimpulan dari nama yang input apakah peranan yang ia sepatutnya untuk bermain. 73 00:03:39,020 --> 00:03:42,270 >> Dan kini di bawah itu, saya akan membuka kerinting bersedia dan kerinting bersedia tertutup, 74 00:03:42,270 --> 00:03:47,140 dan sebagainya notis saya diikuti yang sama corak pada garis empat melalui tujuh sebagai 75 00:03:47,140 --> 00:03:51,622 Saya telah mengikuti selama seminggu yang baik serta sekarang, katakan antara sembilan dan garis 76 00:03:51,622 --> 00:03:53,400 14 yang mengarang utama. 77 00:03:53,400 --> 00:03:56,160 Dalam erti kata lain, mencetak nama adalah fungsi yang lain. 78 00:03:56,160 --> 00:03:58,990 Sekarang, pengkompil tidak akan tahu untuk memanggil perkara ini secara automatik 79 00:03:58,990 --> 00:04:02,670 kerana saya benar-benar hanya dicipta, tetapi ia akan tahu masih memanggil utama 80 00:04:02,670 --> 00:04:08,710 secara automatik, dan kemudian tentu dalam line 13, saya memanggil fungsi saya sendiri. 81 00:04:08,710 --> 00:04:12,805 Dan kerana saya telah mengumumkan bahawa fungsi di atas garis empat sebelum utama, 82 00:04:12,805 --> 00:04:16,579 ini akan mengajar pengkompil apa yang quote, unquote, "nama print" 83 00:04:16,579 --> 00:04:18,140 bermakna dan apa yang perlu dilakukan. 84 00:04:18,140 --> 00:04:22,700 Jadi saya jenis memberikan adat baru menghalang dalam konteks, berkata, scratch. 85 00:04:22,700 --> 00:04:27,240 >> Jadi di sini, saya boleh meletakkan bahawa sangat biasa atau corak berulang kod saya terus 86 00:04:27,240 --> 00:04:32,300 menulis di dalam kelas, printf % S hello,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 apa yang saya mahu meletakkan di sini? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Jadi saya mahu meletakkan nama dalam konteks ini. 91 00:04:41,420 --> 00:04:43,440 Jadi notis sedikit dikotomi di sini. 92 00:04:43,440 --> 00:04:47,680 Kerana saya mengisytiharkan fungsi saya sendiri dan saya agak sewenang-wenangnya dipanggil 93 00:04:47,680 --> 00:04:50,880 ia mencetak nama, dan kerana saya telah yang dinyatakan dalam kurungan ini 94 00:04:50,880 --> 00:04:55,035 fungsi mengambil satu hujah, jenis yang merupakan tali - jadi ia adalah satu perkataan 95 00:04:55,035 --> 00:05:00,010 atau frasa atau sesuatu seperti itu - dan Saya memanggil nama hujah, bahawa 96 00:05:00,010 --> 00:05:04,770 bermakna satu-satunya yang berubah-ubah dalam skop, jadi untuk bercakap, adalah nama. 97 00:05:04,770 --> 00:05:07,780 >> S hanya wujud antara apa yang dua pendakap kerinting, sudah tentu? 98 00:05:07,780 --> 00:05:12,990 Baik benar-benar, seperti baris 10 melalui 14, jadi sama seperti pada hari Isnin tidak boleh menggunakan 99 00:05:12,990 --> 00:05:17,650 S, tetapi apa yang boleh saya lakukan adalah lulus S ke dalam nama cetak. 100 00:05:17,650 --> 00:05:21,030 Mencetak nama hanya kebetulan untuk memberikan alias, sinonim, nama samaran, 101 00:05:21,030 --> 00:05:24,400 memanggil nama, dan kini menggunakannya dalam bidang ini. 102 00:05:24,400 --> 00:05:26,840 Jadi sekarang biarlah saya simpan ini, zum keluar. 103 00:05:26,840 --> 00:05:31,250 >> Biar saya pergi ke hadapan dan membuat khabar. 104 00:05:31,250 --> 00:05:32,400 Kelihatan baik. 105 00:05:32,400 --> 00:05:36,110 Tidak meludah apa-apa kesilapan. . / Hello Enter. 106 00:05:36,110 --> 00:05:37,020 Apakah nama saya? 107 00:05:37,020 --> 00:05:38,060 Daud. 108 00:05:38,060 --> 00:05:39,270 Dan hello Daud. 109 00:05:39,270 --> 00:05:41,820 Jadi tidak semua yang menarik, tetapi hanya berfikir sekarang. 110 00:05:41,820 --> 00:05:44,310 Anda kini mempunyai bahan yang sama seperti yang kita lakukan di Scratch untuk 111 00:05:44,310 --> 00:05:45,420 membuat fungsi kita sendiri. 112 00:05:45,420 --> 00:05:46,770 >> Tetapi ada sedikit gotcha a. 113 00:05:46,770 --> 00:05:50,620 Katakan bahawa saya tidak benar-benar berfikir ini melalui dan saya benar-benar tanpa 114 00:05:50,620 --> 00:05:54,250 benar-benar berfikir tentang ia menulis yang berfungsi di sini. 115 00:05:54,250 --> 00:05:55,420 Berasa sempurna yang munasabah. 116 00:05:55,420 --> 00:05:58,440 Dalam Scratch ada tanggapan lokasi dalam skrip anda. 117 00:05:58,440 --> 00:06:00,670 Anda boleh meletakkan satu di sini, salah satu di sini, satu di sini, dan ia mungkin mula 118 00:06:00,670 --> 00:06:03,310 untuk melihat berantakan sedikit jika anda tidak meletakkan ia keluar kemas, tetapi ia tidak 119 00:06:03,310 --> 00:06:05,910 kira di mana fizikal skrip berada di skrin. 120 00:06:05,910 --> 00:06:09,660 Malangnya di C - dan ini adalah seperti bahasa seperti Jawa dan Python 121 00:06:09,660 --> 00:06:13,600 dan lain-lain yang anda mungkin biasa dengan - malangnya dalam C, perintah tidak 122 00:06:13,600 --> 00:06:15,830 masalah kerana menonton apa yang akan berlaku sekarang. 123 00:06:15,830 --> 00:06:19,010 >> Fungsi lalai yang akan untuk melaksanakan, sudah tentu, utama. 124 00:06:19,010 --> 00:06:22,290 Utama akan memanggil nama cetak atas line lapan, tetapi malangnya, 125 00:06:22,290 --> 00:06:26,660 pengkompil tidak akan tahu bahawa nama cetak wujud sehingga ia sampai ke garis 11, 126 00:06:26,660 --> 00:06:28,520 yang malangnya ialah akan menjadi terlalu lewat. 127 00:06:28,520 --> 00:06:30,660 Jadi mari kita buat membuat hello. 128 00:06:30,660 --> 00:06:32,950 Dan kini damn, kesilapan dua dijana. 129 00:06:32,950 --> 00:06:36,050 Jadi sekarang biarlah saya tatal ke atas dengan sangat pertama, seperti yang kita sentiasa perlu dilakukan, dan 130 00:06:36,050 --> 00:06:39,560 melihat bahawa ia menjerit pada saya, "Perisytiharan tersirat fungsi 131 00:06:39,560 --> 00:06:40,540 mencetak nama. " 132 00:06:40,540 --> 00:06:43,860 >> Oleh itu, kita telah melihat mesej ini sebelum ini, pengakuan tersirat fungsi. 133 00:06:43,860 --> 00:06:48,080 Apabila kita melihat bahawa jenis kesilapan? 134 00:06:48,080 --> 00:06:49,180 Apabila saya tidak termasuk perpustakaan. 135 00:06:49,180 --> 00:06:53,470 Jika saya terlupa cs50.h dan saya akan mendapat menjerit untuk mendapatkan tali atau mendapatkan int. 136 00:06:53,470 --> 00:06:56,880 Tetapi dalam kes ini, ini cetak fungsi nama tidak ada di dalam perpustakaan, bukan? 137 00:06:56,880 --> 00:07:00,230 Ia adalah benar-benar dalam fail ini, jadi apa yang benar-benar masalah ini? 138 00:07:00,230 --> 00:07:04,660 >> Baik malangnya dalam bahasa C, ia akan membawa anda begitu amat benar-benar bahawa jika anda 139 00:07:04,660 --> 00:07:08,640 mahu fungsi yang dipanggil nama cetak untuk wujud, anda perlu melaksanakan 140 00:07:08,640 --> 00:07:11,940 yang berfungsi di bahagian paling atas anda kod supaya ia boleh diakses untuk mengurangkan 141 00:07:11,940 --> 00:07:15,070 fungsi, tetapi terus-terang, yang menjadi ceroboh dengan cepat. 142 00:07:15,070 --> 00:07:18,160 Secara peribadi, saya suka meletakkan utama pertama kerana maka ia sangat jelas apa ini 143 00:07:18,160 --> 00:07:19,890 program tidak pada pandangan pertama. 144 00:07:19,890 --> 00:07:23,290 Dan ditambah, anda boleh masuk ke dalam sudut pelik kes-kes di mana jika x mahu untuk memanggil 145 00:07:23,290 --> 00:07:27,530 y tetapi y mungkin panggilan x, anda hanya fizikal sebenarnya tidak boleh meletakkan satu 146 00:07:27,530 --> 00:07:28,540 di atas yang lain. 147 00:07:28,540 --> 00:07:31,230 >> Tetapi ternyata dalam C, kita boleh menyelesaikan masalah ini sangat mudah. 148 00:07:31,230 --> 00:07:34,010 Saya akan meletakkan sedikit ruang di sini, dan saya hanya akan 149 00:07:34,010 --> 00:07:38,170 preemptively, walaupun agak redundantly, pergi untuk mengajar 150 00:07:38,170 --> 00:07:42,320 pengkompil bahawa wujud fungsi dipanggil nama cetak, ia mengambil tali, 151 00:07:42,320 --> 00:07:46,330 dan saya akan memanggil ia menamakan koma bertitik. 152 00:07:46,330 --> 00:07:50,220 >> Jadi ini kini dalam talian empat, yang kita tidak pernah melihat sebelum ini, adalah perisytiharan 153 00:07:50,220 --> 00:07:53,940 daripada nama cetak fungsi, tetapi ia hanya janji bahawa fungsi ini akan 154 00:07:53,940 --> 00:07:56,620 akhirnya ditakrifkan, akhirnya dilaksanakan. 155 00:07:56,620 --> 00:08:00,180 Ini sekarang saya boleh meninggalkan sahaja kerana sekarang ini adalah definisi itu, 156 00:08:00,180 --> 00:08:04,090 pelaksanaan, jenis batu yang terakhir pelaksanaan ini 157 00:08:04,090 --> 00:08:05,130 fungsi tertentu. 158 00:08:05,130 --> 00:08:08,450 Jadi terus terang ia bodoh, ia adalah menjengkelkan, tetapi ini adalah cara C, dan ia 159 00:08:08,450 --> 00:08:12,050 kerana ia akan membawa anda beribu-sangat dan seperti komputer terus terang harus, 160 00:08:12,050 --> 00:08:16,020 sahaja apa yang anda beritahu kepada lakukan, dan supaya pesanan adalah penting. 161 00:08:16,020 --> 00:08:18,940 >> Supaya menyimpan bahawa dalam fikiran dan sekali lagi, mula notis berulang corak. 162 00:08:18,940 --> 00:08:21,850 Kemungkinan anda akan, jika anda tidak mempunyai sudah, mula menghadapi mesej 163 00:08:21,850 --> 00:08:24,700 seperti ini yang pada pandangan pertama kelihatan sepenuhnya samar, tetapi jika anda mula 164 00:08:24,700 --> 00:08:29,000 untuk mencari kata-kata utama seperti "Perisytiharan tersirat," beritahu seorang 165 00:08:29,000 --> 00:08:32,380 fungsi dalam kes ini - dan terus-terang, anda kadang-kadang walaupun mendapat sedikit hijau 166 00:08:32,380 --> 00:08:35,010 simbol lobak merah yang memberitahu anda di mana isu ini mungkin adalah - 167 00:08:35,010 --> 00:08:40,980 anda boleh mula bekerja dengan cara anda melalui lagi mesej ralat ghaib. 168 00:08:40,980 --> 00:08:45,860 Sebarang pertanyaan mengenai penulisan anda fungsi sendiri dengan cara ini? 169 00:08:45,860 --> 00:08:47,540 >> Mari kita melakukan sesuatu itu adalah satu sedikit lebih menarik. 170 00:08:47,540 --> 00:08:51,760 Daripada hanya melakukan sesuatu yang mempunyai kesan sampingan percetakan, izinkan saya pergi 171 00:08:51,760 --> 00:08:55,340 hadapan dan menyimpan fail baru, dan kita akan memanggil positive.c ini, walaupun ia 172 00:08:55,340 --> 00:08:57,600 akan menjadi sedikit berbeza berbanding masa lalu. 173 00:08:57,600 --> 00:09:01,910 Dan kali ini, saya ingin untuk melaksanakan semula contoh positive.C masa lepas, yang 174 00:09:01,910 --> 00:09:04,430 yang memaksa pengguna untuk memberi saya integer positif. 175 00:09:04,430 --> 00:09:07,280 Tetapi saya terpaksa menggunakan mendapatkan int kali terakhir. 176 00:09:07,280 --> 00:09:10,780 Bukankah telah baik jika terdapat fungsi yang dipanggil mendapatkan int positif 177 00:09:10,780 --> 00:09:13,610 bahawa saya hanya boleh outsource ini sekeping fungsi ke? 178 00:09:13,610 --> 00:09:16,480 Jadi perbezaan di sini ialah kita akan melaksanakan mendapatkan int positif, tetapi tidak seperti 179 00:09:16,480 --> 00:09:20,330 Nama cetak yang mempunyai kesan sampingan - ia tidak kembali sesuatu kepada saya seperti 180 00:09:20,330 --> 00:09:21,710 nombor atau rentetan - 181 00:09:21,710 --> 00:09:25,510 mendapatkan int positif, sudah tentu, akan kembali, mudah-mudahan, int yang positif. 182 00:09:25,510 --> 00:09:26,170 >> Jadi mari kita buat ini. 183 00:09:26,170 --> 00:09:30,840 Termasuk cs50.h, Termasuk standard io.h. 184 00:09:30,840 --> 00:09:33,520 Int sah utama. 185 00:09:33,520 --> 00:09:42,160 Dan kini di sini, saya akan pergi ke hadapan dan katakan int, memanggilnya n, sama 186 00:09:42,160 --> 00:09:44,270 mendapatkan int positif. 187 00:09:44,270 --> 00:09:49,080 Dan seperti mendapatkan int sudah wujud kerana kakitangan menulis, saya akan 188 00:09:49,080 --> 00:09:53,950 menganggap buat masa ini yang mendapat int positif wujud, dan kini saya akan 189 00:09:53,950 --> 00:09:57,730 untuk pergi ke hadapan dan berkata printf, terima kasih untuk% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Jadi sekarang jika saya menyusun program ini, apa yang yang akan berlaku di terminal saya 192 00:10:07,770 --> 00:10:09,075 tingkap di bahagian bawah skrin? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Saya akan mungkin mendapatkan kesilapan yang sama seperti sebelum ini. 195 00:10:13,900 --> 00:10:14,570 Jadi mari kita cuba ini. 196 00:10:14,570 --> 00:10:16,450 Buat positif. 197 00:10:16,450 --> 00:10:19,900 Dan sekali lagi, pengakuan tersirat fungsi, mendapatkan int positif. 198 00:10:19,900 --> 00:10:21,970 Jadi kita boleh menyelesaikan masalah ini dalam beberapa cara. 199 00:10:21,970 --> 00:10:27,310 Saya akan memastikan ia mudah dan hanya meletakkan akuan saya di sini dan mendapatkan 200 00:10:27,310 --> 00:10:28,120 int positif. 201 00:10:28,120 --> 00:10:29,720 Saya perlu tandatangan kononnya. 202 00:10:29,720 --> 00:10:32,410 Tandatangan hanya merujuk kepada estetika 203 00:10:32,410 --> 00:10:34,090 baris pertama program. 204 00:10:34,090 --> 00:10:37,420 Jadi apa yang perlu mendapatkan positif int pulangan? 205 00:10:37,420 --> 00:10:37,970 >> Jadi int. 206 00:10:37,970 --> 00:10:41,540 Maksud saya ideal, ia akan kembali sesuatu seperti int positif, tetapi yang 207 00:10:41,540 --> 00:10:42,160 tidak wujud. 208 00:10:42,160 --> 00:10:45,280 Kami tidak melihat bahawa di antara data kami jenis, jadi kita perlu untuk berurusan dengan 209 00:10:45,280 --> 00:10:47,170 Hakikat bahawa kita mempunyai sangat sedikit jenis data untuk bekerja dengannya. 210 00:10:47,170 --> 00:10:50,360 Tetapi kita boleh kembali int an dan hanya percaya bahawa ia akan menjadi positif. 211 00:10:50,360 --> 00:10:52,690 Ia akan dipanggil mendapatkan int positif. 212 00:10:52,690 --> 00:10:55,122 >> Dan kini bagaimana pula hujah? 213 00:10:55,122 --> 00:10:56,440 Adakah ia mengambil apa-apa input? 214 00:10:56,440 --> 00:10:58,280 Adakah ia memerlukan input? 215 00:10:58,280 --> 00:11:00,900 Jadi ia tidak perlu tahu dalam apa-apa terlebih dahulu. 216 00:11:00,900 --> 00:11:03,220 Dapatkan tali tidak, mendapatkan int tidak. 217 00:11:03,220 --> 00:11:06,430 Printf tidak - ia perlu mempunyai beberapa input berlalu ke dalamnya - dan nama cetak 218 00:11:06,430 --> 00:11:09,020 diperlukan input tertentu, tetapi mendapat int positif tidak. 219 00:11:09,020 --> 00:11:11,530 Jadi saya akan jelas memberitahu sah pengkompil. 220 00:11:11,530 --> 00:11:13,470 Sah ialah ketiadaan apa-apa lagi. 221 00:11:13,470 --> 00:11:17,990 Jadi tidak sah bermakna apa-apa yang sedang berlaku di dalam orang kurungan, koma bertitik. 222 00:11:17,990 --> 00:11:20,840 >> Dan kini di bawah fail saya - dan jenis lagi, saya hanya menjadi satu dubur 223 00:11:20,840 --> 00:11:23,640 di sini meletakkan utama di bahagian atas, yang adalah amalan yang baik kerana cara ini, 224 00:11:23,640 --> 00:11:26,220 bila-bila masa anda atau orang lain membuka fail anda, 225 00:11:26,220 --> 00:11:27,400 fungsi adalah di sana. 226 00:11:27,400 --> 00:11:29,660 Anda boleh menyelam dari satu persegi. 227 00:11:29,660 --> 00:11:34,190 Jadi sekarang saya akan salinan ini, mendapatkan sah int positif, tetapi saya tidak 228 00:11:34,190 --> 00:11:35,430 akan melanda koma sekarang. 229 00:11:35,430 --> 00:11:38,280 Saya akan membuka pendakap kerinting, dan sekarang saya perlu meminjam 230 00:11:38,280 --> 00:11:39,700 idea dari hari Isnin. 231 00:11:39,700 --> 00:11:44,450 >> Jadi seperti yang anda masih ingat, kita melakukan sesuatu suka melakukan perkara berikut semasa 232 00:11:44,450 --> 00:11:45,830 sesuatu yang tidak benar. 233 00:11:45,830 --> 00:11:46,630 Dan apa yang saya lakukan? 234 00:11:46,630 --> 00:11:51,540 Saya sesuatu seperti memberi saya integer positif, 235 00:11:51,540 --> 00:11:52,430 sedikit yang segera. 236 00:11:52,430 --> 00:11:53,540 Saya boleh menggunakan apa-apa perkataan yang saya mahu. 237 00:11:53,540 --> 00:11:54,960 Dan kemudian saya digunakan apa? 238 00:11:54,960 --> 00:11:59,530 Int n sama mendapatkan int, ada hujah untuk itu. 239 00:11:59,530 --> 00:12:00,550 >> Dan notis perbezaan. 240 00:12:00,550 --> 00:12:04,680 Apabila anda memanggil fungsi, apabila anda menggunakan fungsi, anda tidak dimasukkan ke dalam tidak sah. 241 00:12:04,680 --> 00:12:08,570 Anda hanya berbuat demikian apabila mengisytiharkan fungsi, mengajar pengkompil apa 242 00:12:08,570 --> 00:12:09,780 ia harus harapkan. 243 00:12:09,780 --> 00:12:11,650 Jadi anda tidak perlu meletakkan membatalkan sana sendiri. 244 00:12:11,650 --> 00:12:12,940 >> Dan kini apa yang keadaan saya? 245 00:12:12,940 --> 00:12:19,670 Well, n tidak sama dengan yang positif, tetapi itu hanya pseudo-kod. 246 00:12:19,670 --> 00:12:22,530 Jadi bagaimana saya meluahkan ini lebih bersih? 247 00:12:22,530 --> 00:12:24,090 Jadi kurang daripada atau sama dengan sifar. 248 00:12:24,090 --> 00:12:26,250 Jadi sekali lagi, notis yang anda boleh lakukan kurang daripada atau sama dengan. 249 00:12:26,250 --> 00:12:28,100 Walaupun ia adalah dua berasingan simbol, anda boleh melakukannya 250 00:12:28,100 --> 00:12:29,350 papan kekunci anda seperti itu. 251 00:12:29,350 --> 00:12:33,950 >> Tetapi masih ada bug yang Saya diskrukan masa lalu juga. 252 00:12:33,950 --> 00:12:36,950 Saya perlu mengaku - 253 00:12:36,950 --> 00:12:37,460 betul-betul. 254 00:12:37,460 --> 00:12:39,640 Saya perlu mengaku n luar gelung. 255 00:12:39,640 --> 00:12:44,180 Jadi saya perlu meletakkan n di sini, dan saya tidak ingin-mengisytiharkan semula di sini 256 00:12:44,180 --> 00:12:46,480 supaya saya dapat berubah-ubah baru. 257 00:12:46,480 --> 00:12:48,860 Saya hanya mahu memberi nilai di sini. 258 00:12:48,860 --> 00:12:54,320 >> Dan sekarang saya tidak cukup dilakukan di sini. 259 00:12:54,320 --> 00:12:57,290 Biar saya mendapatkan lebih awal daripada diri saya sendiri dan berpura-pura saya dilakukan. 260 00:12:57,290 --> 00:13:01,220 Buat positif, dan kini ada kesilapan baru. 261 00:13:01,220 --> 00:13:04,550 Kawalan sampai akhir fungsi tidak sah. 262 00:13:04,550 --> 00:13:07,760 Jadi mesej ralat baru, tetapi jika anda jenis daripada mengusik selain setiap satu daripada kata-kata, ia 263 00:13:07,760 --> 00:13:09,620 mungkin membayangkan apa yang salah. 264 00:13:09,620 --> 00:13:11,240 >> Mengawal. 265 00:13:11,240 --> 00:13:14,250 Kawalan hanya bermaksud kepada perintah operasi dalam program. 266 00:13:14,250 --> 00:13:16,510 Komputer dalam kawalan dan sesuatu yang tidak kena. 267 00:13:16,510 --> 00:13:18,510 Jadi ia sampai ke penghujung fungsi tidak sah. 268 00:13:18,510 --> 00:13:21,760 Apa fungsi ia nampaknya merujuk kepada? 269 00:13:21,760 --> 00:13:24,790 Apa fungsi adalah tidak sah? 270 00:13:24,790 --> 00:13:27,400 Jadi mendapatkan int positif, dan sedikit mengelirukan dalam telaga itu, 271 00:13:27,400 --> 00:13:29,010 ia adalah jenis tidak sah. 272 00:13:29,010 --> 00:13:33,070 Ia mempunyai spesifikasi yang sah untuk hujah, tetapi output akan 273 00:13:33,070 --> 00:13:34,540 menjadi n jenis. 274 00:13:34,540 --> 00:13:37,260 Jadi perkataan di sebelah kiri adalah dipanggil jenis pulangan. 275 00:13:37,260 --> 00:13:40,320 Perkataan di dalam di sini adalah sifar atau lebih hujah-hujah 276 00:13:40,320 --> 00:13:41,970 bahawa fungsi yang diperlukan. 277 00:13:41,970 --> 00:13:44,060 >> Jadi, apa yang perlu saya lakukan? 278 00:13:44,060 --> 00:13:47,650 Pada ketika ini di dalam kod saya, line 21 di mana segera berkelip sekarang, saya 279 00:13:47,650 --> 00:13:51,430 mempunyai int positif dalam pembolehubah yang dipanggil n. 280 00:13:51,430 --> 00:13:55,200 Bagaimana saya memberikan kembali kepada utama? 281 00:13:55,200 --> 00:13:55,960 Betul-betul. 282 00:13:55,960 --> 00:13:59,320 Kembali n koma bertitik. 283 00:13:59,320 --> 00:14:04,090 >> Jadi hanya sebagai Colton kembali sekeping kertas dengan jawapan kepada saya dengan menjatuhkan 284 00:14:04,090 --> 00:14:07,020 sekeping kertas di hitam sedikit kotak di atas meja, untuk berbuat demikian dalam 285 00:14:07,020 --> 00:14:10,100 kod, anda benar-benar hanya menulis, kembali n, dan ia seolah-olah telah Colton 286 00:14:10,100 --> 00:14:12,140 saya menyerahkan sesuatu kembali fizikal. 287 00:14:12,140 --> 00:14:15,870 Dalam kes ini, apa yang berlaku adalah mendapatkan int positif akan menyerahkan kembali 288 00:14:15,870 --> 00:14:19,220 apa yang mungkin positif integer untuk siapa? 289 00:14:19,220 --> 00:14:21,380 Di manakah nilai yang berakhir? 290 00:14:21,380 --> 00:14:29,080 Yang berakhir dalam pembolehubah ini, n, dan maka kita teruskan dengan garis sembilan. 291 00:14:29,080 --> 00:14:31,920 >> Jadi, dalam erti kata lain, perintah operasi, program ini bermula 292 00:14:31,920 --> 00:14:34,430 melaksanakan, dan pengkompil menyedari, oh, anda mahu perpustakaan? 293 00:14:34,430 --> 00:14:36,310 Biar saya pergi merebut apa sahaja yang di dalam itu. 294 00:14:36,310 --> 00:14:37,750 Oh, anda mahu perpustakaan IO standard? 295 00:14:37,750 --> 00:14:39,660 Biar saya pergi merebut apa sahaja yang di dalam itu. 296 00:14:39,660 --> 00:14:44,510 Apakah pengkompil berkata kepada dirinya apabila ia mencecah garis empat? 297 00:14:44,510 --> 00:14:47,980 Oh, anda berjanji untuk melaksanakan fungsi dipanggil mendapatkan positif, tetapi 298 00:14:47,980 --> 00:14:50,820 kita akan kembali kepada yang kemudian, sesuatu bersama-sama orang-orang baris. 299 00:14:50,820 --> 00:14:53,450 >> Tidak sah utama Int hanya bermakna di sini keberanian program saya. 300 00:14:53,450 --> 00:14:54,990 Line tujuh hanya pendakap kerinting. 301 00:14:54,990 --> 00:14:59,540 Line lapan mengatakan di sebelah kiri, memberi saya 32 bit untuk integer, memanggilnya n. 302 00:14:59,540 --> 00:15:02,160 Pada sebelah kanan, ia adalah berkata mendapatkan int positif. 303 00:15:02,160 --> 00:15:07,120 Sekarang berhenti mari kita bahawa cerita kerana sekarang Saya tidak terus bergerak kursor saya ke bawah. 304 00:15:07,120 --> 00:15:11,720 Kursor saya sekarang pergi ke sini kerana kini mendapat int positif melaksanakan. 305 00:15:11,720 --> 00:15:13,100 Int n diisytiharkan. 306 00:15:13,100 --> 00:15:14,040 Melakukan yang berikut. 307 00:15:14,040 --> 00:15:16,090 Printf memberi saya integer positif. 308 00:15:16,090 --> 00:15:19,740 >> Dapatkan int an dari pengguna, menyimpannya dalam n, dan mungkin melakukan ini lagi dan lagi. 309 00:15:19,740 --> 00:15:23,010 Gelung Ini bermakna kod ini mungkin melaksanakan atas dan ke bawah seperti ini lagi 310 00:15:23,010 --> 00:15:25,810 dan sekali lagi, tetapi apabila pengguna akhirnya bekerjasama dan memberi saya yang positif 311 00:15:25,810 --> 00:15:31,750 int, saya mencecah line 21, di mana titik nombor diserahkan kembali, dan yang mana satu 312 00:15:31,750 --> 00:15:34,280 saya perlu menyerlahkan sekarang? 313 00:15:34,280 --> 00:15:35,070 Nine. 314 00:15:35,070 --> 00:15:39,010 Kawalan, jadi untuk bercakap, kembali untuk beratur sembilan. 315 00:15:39,010 --> 00:15:40,650 Itulah garis yang kini bertanggungjawab. 316 00:15:40,650 --> 00:15:43,250 >> Itulah apa yang telah berlaku di kali ini di bawah hood, tetapi 317 00:15:43,250 --> 00:15:46,480 apabila kita telah menggunakan fungsi seperti printf atau bahkan mendapatkan tali bahawa orang lain 318 00:15:46,480 --> 00:15:50,600 menulis untuk anda, kawalan sedang menyerahkan line kod pergi ke orang lain 319 00:15:50,600 --> 00:15:51,290 oleh baris demi baris. 320 00:15:51,290 --> 00:15:53,770 Ia hanya kita tidak dapat melihat dan kami boleh tidak benar-benar menggambarkan ia dalam 321 00:15:53,770 --> 00:15:57,620 program kerana ia adalah dalam beberapa lain fail pada cakera keras 322 00:15:57,620 --> 00:16:00,000 Tanpa diketahui kepada kami. 323 00:16:00,000 --> 00:16:02,100 Jadi mari kita sebenarnya menyusun dan menjalankan ini sekarang. 324 00:16:02,100 --> 00:16:03,890 >> Buat positif. 325 00:16:03,890 --> 00:16:05,260 Menyusun, itulah kemajuan. 326 00:16:05,260 --> 00:16:06,650 . / Positif. 327 00:16:06,650 --> 00:16:08,020 Berikan saya integer positif. 328 00:16:08,020 --> 00:16:08,800 Mari kita menjadi sukar. 329 00:16:08,800 --> 00:16:10,430 Negatif 1. 330 00:16:10,430 --> 00:16:11,360 Zero. 331 00:16:11,360 --> 00:16:13,370 Mari kita memberikan 50. 332 00:16:13,370 --> 00:16:18,100 Terima kasih untuk 50, dan sebagainya kawalan kini telah kembali. 333 00:16:18,100 --> 00:16:21,750 Mana-mana soalan, maka, pada itu? 334 00:16:21,750 --> 00:16:23,180 Ya? 335 00:16:23,180 --> 00:16:25,630 >> [Didengar]. 336 00:16:25,630 --> 00:16:26,130 >> Katakanlah lagi. 337 00:16:26,130 --> 00:16:27,860 Oh, soalan yang baik. 338 00:16:27,860 --> 00:16:31,100 Jadi, anda mungkin notis selari di sini bahawa Saya jenis memotong sudut pada. 339 00:16:31,100 --> 00:16:35,420 Selaras 12, saya berkata, mendapatkan int positif kembali int, tetapi oleh yang sama 340 00:16:35,420 --> 00:16:39,660 logik, ia kini berdiri untuk sebab itu dalam garisan enam, saya mengatakan bahawa pulangan utama 341 00:16:39,660 --> 00:16:44,040 an int, tetapi apa yang kita tidak mempunyai ada dalam mana-mana program kita? 342 00:16:44,040 --> 00:16:46,470 Kami tidak pernah mempunyai sebutan ini kembali kata kunci. 343 00:16:46,470 --> 00:16:49,970 >> Jadi ia ternyata bahawa dalam C, sekurang-kurangnya versi bahawa kita menggunakan 344 00:16:49,970 --> 00:16:55,750 dibuat pada tahun 1999, secara teknikal, ini adalah berlaku untuk anda secara automatik. 345 00:16:55,750 --> 00:16:59,300 Bila-bila masa anda melaksanakan program dan anda melaksanakan fungsi dipanggil utama, 346 00:16:59,300 --> 00:17:04,230 yang berfungsi akan kembali sifar oleh lalai jika anda tidak mengatakan sebaliknya, 347 00:17:04,230 --> 00:17:05,849 dan sifar hanya konvensyen. 348 00:17:05,849 --> 00:17:09,430 Dunia kembali sifar itu menunjukkan bahawa semua adalah baik, 349 00:17:09,430 --> 00:17:13,040 berkesan meninggalkan kita dengan empat bilion perkara-perkara yang mungkin boleh pergi 350 00:17:13,040 --> 00:17:17,530 salah supaya jika kita kembali satu, yang mungkin menandakan kod yang bermakna ini 351 00:17:17,530 --> 00:17:18,310 perkara yang salah. 352 00:17:18,310 --> 00:17:20,589 Kita boleh kembali dua, yang bermaksud perkara ini lain pergi salah. 353 00:17:20,589 --> 00:17:23,440 Kita boleh kembali empat bilion, yang bermakna perkara ini lain pergi salah. 354 00:17:23,440 --> 00:17:27,170 >> Dan jika kini anda berfikir tentang anda sendiri PC atau Mac, anda mungkin ingat bahawa 355 00:17:27,170 --> 00:17:29,610 kadang-kadang anda mendapat mesej ralat samar daripada perisian yang anda 356 00:17:29,610 --> 00:17:32,650 menggunakan, dan kadang-kadang ia mempunyai manusia Penerangan mesra, tetapi ada 357 00:17:32,650 --> 00:17:35,265 sering kod atau nombor pada skrin? 358 00:17:35,265 --> 00:17:37,800 Jika ini tidak datang ke fikiran, hanya memerhatikan keluar untuk itu. 359 00:17:37,800 --> 00:17:40,790 Itulah biasanya apa yang kod merujuk kepada. 360 00:17:40,790 --> 00:17:44,200 Mereka dimasukkan ke dalam Microsoft Word dan program-program lain supaya jika anda memfailkan 361 00:17:44,200 --> 00:17:48,850 laporan pepijat dengan syarikat itu, anda boleh memberitahu mereka, oh, saya mendapat ralat bilangan 45. 362 00:17:48,850 --> 00:17:51,750 Dan beberapa kembali programmer di syarikat boleh melihat bahawa di dalam nya 363 00:17:51,750 --> 00:17:54,940 kod dan berkata, oh, itu kerana saya membuat bug ini dan itulah sebabnya pengguna 364 00:17:54,940 --> 00:17:56,240 mendapat mesej ini. 365 00:17:56,240 --> 00:17:59,490 >> Tetapi terus terang, ia hanya sedikit mengganggu dan sedikit membosankan untuk 366 00:17:59,490 --> 00:18:02,130 menyimpulkan bahawa, sekurang-kurangnya kami beberapa program pertama, jadi kami telah 367 00:18:02,130 --> 00:18:02,970 telah meninggalkan ia. 368 00:18:02,970 --> 00:18:07,450 Tetapi semua masa ini setiap seorang daripada anda fungsi utama telah diam-diam telah ini 369 00:18:07,450 --> 00:18:11,600 line ditambah secara automatik untuk anda oleh pengkompil, hanya dengan konvensyen 370 00:18:11,600 --> 00:18:13,172 menjimatkan masa. 371 00:18:13,172 --> 00:18:14,620 >> [Didengar]. 372 00:18:14,620 --> 00:18:16,250 >> Anda tidak perlu untuk memasukkannya ke dalam utama. 373 00:18:16,250 --> 00:18:16,700 Itu denda. 374 00:18:16,700 --> 00:18:20,260 Anda perlu termasuk jika anda telah melaksanakan fungsi seperti ini. 375 00:18:20,260 --> 00:18:22,850 Jika tidak rata fungsi keluar tidak akan bekerja. 376 00:18:22,850 --> 00:18:24,480 Tetapi dalam utama, ia tidak perlu. 377 00:18:24,480 --> 00:18:28,450 Dalam satu atau dua minggu, kami akan mula mendapat menjadi kebiasaan bahawa apabila kita ingin memulakan 378 00:18:28,450 --> 00:18:29,690 menandakan kesilapan. 379 00:18:29,690 --> 00:18:32,550 Really good soalan. 380 00:18:32,550 --> 00:18:36,880 >> Rehat begitu cepat lisan untuk menyebut bahawa Jumaat ini, kita tidak akan makan tengah hari 381 00:18:36,880 --> 00:18:39,980 per se, tetapi kita akan makan malam bersama beberapa pelajar dan kakitangan. 382 00:18:39,980 --> 00:18:42,940 Jika anda ingin untuk menyertai kami, berasa bebas untuk pergi ke cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 06:00 Jumaat ini. 384 00:18:45,030 --> 00:18:47,990 Ruang adalah, seperti biasa, terhad, tetapi kita akan terus melakukan ini di hampir 385 00:18:47,990 --> 00:18:51,420 setiap minggu jika ruang kehabisan minggu ini. 386 00:18:51,420 --> 00:18:56,160 >> Jadi cliffhanger yang kita berhenti di Isnin adalah bahawa rentetan boleh sebenarnya 387 00:18:56,160 --> 00:19:00,520 diindeks ke dalam, yang hanya bermakna anda boleh mendapatkan pada watak yang pertama, 388 00:19:00,520 --> 00:19:03,770 watak kedua, watak ketiga dan sebagainya, kerana anda boleh 389 00:19:03,770 --> 00:19:07,860 berkesan berfikir tali, seperti hello, sebagai dalam kes ini lima 390 00:19:07,860 --> 00:19:09,670 surat di dalam kotak. 391 00:19:09,670 --> 00:19:13,370 Dan anda boleh mendapatkan di setiap orang kotak dengan apa yang kita sintaks 392 00:19:13,370 --> 00:19:15,230 memperkenalkan pada hari Isnin? 393 00:19:15,230 --> 00:19:16,760 Mereka kurungan pada keyboard anda. 394 00:19:16,760 --> 00:19:18,980 Itu hanya bermakna pergi ke lokasi sifar. 395 00:19:18,980 --> 00:19:22,840 >> Kita mula mengira pada sifar, jadi kurungan sifar menandakan h, kurungan satu 396 00:19:22,840 --> 00:19:25,170 menandakan e, dan sebagainya. 397 00:19:25,170 --> 00:19:28,490 Dan supaya semua masa apabila kita telah menggunakan tali dan menaip "hello" 398 00:19:28,490 --> 00:19:31,250 dan "dunia" dan perkara-perkara lain di skrin, ia telah disimpan 399 00:19:31,250 --> 00:19:32,820 dalam kotak seperti ini. 400 00:19:32,820 --> 00:19:33,370 Dan mengambil tekaan. 401 00:19:33,370 --> 00:19:37,470 Apakah setiap kotak mewakili fizikal di dalam komputer anda? 402 00:19:37,470 --> 00:19:38,250 >> [Didengar]. 403 00:19:38,250 --> 00:19:39,150 >> Maaf? 404 00:19:39,150 --> 00:19:39,580 >> Watak-watak. 405 00:19:39,580 --> 00:19:44,760 >> Jadi watak, dalam kes ini rentetan, dan watak yang hanya 406 00:19:44,760 --> 00:19:46,800 lapan bit atau satu bait. 407 00:19:46,800 --> 00:19:49,550 Jadi, anda mungkin sekurang-kurangnya samar-samar biasa dengan hakikat bahawa anda 408 00:19:49,550 --> 00:19:50,500 komputer mempunyai ingatan. 409 00:19:50,500 --> 00:19:52,110 Ia mempunyai dua jenis memori sekurang-kurangnya. 410 00:19:52,110 --> 00:19:54,810 Satu adalah cakera keras di mana anda menyimpan barangan selama-lamanya, dan itulah 411 00:19:54,810 --> 00:19:57,400 biasanya besar supaya anda boleh mempunyai filem dan muzik dan sebagainya. 412 00:19:57,400 --> 00:20:04,010 >> Kemudian anda mempunyai satu lagi jenis memori dikenali sebagai RAM, R-A-M, Random Access 413 00:20:04,010 --> 00:20:07,510 Ingatan, dan ini adalah jenis memori yang digunakan apabila komputer anda 414 00:20:07,510 --> 00:20:11,520 berjalan tetapi jika anda kehilangan kuasa atau anda bateri mati, apa-apa yang disimpan 415 00:20:11,520 --> 00:20:15,300 dalam RAM akan hilang jika anda kehilangan kuasa sama sekali kerana ia bukan 416 00:20:15,300 --> 00:20:16,060 berterusan. 417 00:20:16,060 --> 00:20:19,120 Anda biasanya mempunyai, hari ini, satu persembahan itu, dua persembahan, mungkin lebih. 418 00:20:19,120 --> 00:20:23,490 Dan terbalik RAM adalah bahawa ia adalah lebih banyak, lebih cepat daripada cakera keras 419 00:20:23,490 --> 00:20:27,390 atau keadaan pepejal memandu hari ini, tetapi ia biasanya lebih mahal jadi 420 00:20:27,390 --> 00:20:28,480 anda mempunyai kurang daripada itu. 421 00:20:28,480 --> 00:20:32,400 >> Jadi perbualan hari ini benar-benar merujuk untuk RAM, yang jenis memori yang 422 00:20:32,400 --> 00:20:35,270 wujud hanya semasa ada kuasa yang dimasukkan ke dalam komputer anda. 423 00:20:35,270 --> 00:20:40,530 Oleh itu, apabila anda menaip dalam H-E-L-L-O, Enter pada keyboard, H akan dalam satu 424 00:20:40,530 --> 00:20:44,550 bait RAM, E yang sedang berlaku di satu lagi bait RAM, seperti 425 00:20:44,550 --> 00:20:45,800 seluruh perkataan. 426 00:20:45,800 --> 00:20:49,010 Jadi ingat apa yang kita dapat untuk melakukan masa lalu adalah ini. 427 00:20:49,010 --> 00:20:53,940 Biar saya pergi ke hadapan dan membuka fail bahawa kita dipanggil string.c, dan ingat 428 00:20:53,940 --> 00:20:56,860 bahawa ia kelihatan sedikit sesuatu seperti ini. 429 00:20:56,860 --> 00:20:59,860 Biar saya sebenarnya melancarkan kembali dan menukar kepada apa yang ia kelihatan seperti, 430 00:20:59,860 --> 00:21:02,654 panjang rentetan s. 431 00:21:02,654 --> 00:21:04,560 >> Jadi melihat program itu di sini. 432 00:21:04,560 --> 00:21:08,530 Kami termasuk perpustakaan CS50 supaya yang boleh kita gunakan mendapatkan tali. 433 00:21:08,530 --> 00:21:11,400 Kami termasuk io.h standard supaya kita boleh menggunakan printf. 434 00:21:11,400 --> 00:21:13,580 Mengapa kita termasuk string.h? 435 00:21:13,580 --> 00:21:16,980 Ini adalah sesuatu yang baru pada hari Isnin. 436 00:21:16,980 --> 00:21:18,230 Jadi kita mahu panjang tali. 437 00:21:18,230 --> 00:21:19,090 Str Leng. 438 00:21:19,090 --> 00:21:21,470 Orang memutuskan tahun yang lalu, mari kita hanya menjadi ringkas. 439 00:21:21,470 --> 00:21:24,290 Daripada memanggil ia "panjang tali," mari kita memanggilnya "str Leng" dan membiarkan 440 00:21:24,290 --> 00:21:28,540 tokoh dunia yang keluar, dan maka itulah apa yang kita dapat akses kepada dengan string.h. 441 00:21:28,540 --> 00:21:29,390 >> Ini adalah biasa. 442 00:21:29,390 --> 00:21:30,320 Ini adalah biasa. 443 00:21:30,320 --> 00:21:31,450 Ini adalah biasa. 444 00:21:31,450 --> 00:21:32,370 Ini adalah sedikit baru. 445 00:21:32,370 --> 00:21:35,420 Selaras 22 - dan kita akan kembali ini, tetapi untuk sekarang tahu - 446 00:21:35,420 --> 00:21:37,880 dan anda hanya akan tahu ini daripada mempunyai membaca dokumentasi atau jika 447 00:21:37,880 --> 00:21:39,010 anda tahu C sudah - 448 00:21:39,010 --> 00:21:41,510 mendapatkan tali kadang-kadang boleh skru sehingga. 449 00:21:41,510 --> 00:21:45,130 Jika pengguna adalah benar-benar pertentangan atau memberikan kerjasama dan dia hanya 450 00:21:45,130 --> 00:21:49,450 tidak menaip apa-apa pada papan kekunci atau jenis begitu banyak pada keyboard yang 451 00:21:49,450 --> 00:21:53,760 ia menguasai memori komputer, dalam teori, dapatkan tali dapat kembali 452 00:21:53,760 --> 00:21:56,270 sesuatu yang lain daripada rentetan aksara. 453 00:21:56,270 --> 00:22:01,930 Ia boleh mengembalikan nilai khas yang dipanggil NULL dalam semua topi, N-U-L-L, dan ini adalah 454 00:22:01,930 --> 00:22:03,390 hanya nilai sentinel kononnya. 455 00:22:03,390 --> 00:22:08,010 Ia adalah satu nilai khas yang melambangkan sesuatu yang buruk berlaku dalam kes ini. 456 00:22:08,010 --> 00:22:10,520 Ia adalah ketiadaan rentetan. 457 00:22:10,520 --> 00:22:16,190 >> Jadi menyeimbangkan saya memeriksa hanya supaya, cerita panjang pendek, str Leng dan 458 00:22:16,190 --> 00:22:20,230 fungsi-fungsi lain yang datang dengan C, jika mereka mengharapkan tali tetapi anda lulus mereka 459 00:22:20,230 --> 00:22:23,630 ketiadaan tali, jika anda meninggal mereka NULL, komputer atau program 460 00:22:23,630 --> 00:22:25,000 hanya akan kemalangan terang-terangan. 461 00:22:25,000 --> 00:22:25,610 Ia akan hang. 462 00:22:25,610 --> 00:22:27,250 Ia akan membuang beberapa mesej ralat. 463 00:22:27,250 --> 00:22:28,690 Perkara-perkara buruk yang akan berlaku. 464 00:22:28,690 --> 00:22:31,130 Jadi, walaupun ini masih tidak yang jelas - 465 00:22:31,130 --> 00:22:33,730 ini akan lebih masuk akal dalam seminggu atau dua - selaras 22, ini hanya 466 00:22:33,730 --> 00:22:38,790 contoh kesilapan diri pemeriksaan pertahanan hanya dalam kes satu-satu masa daripada 467 00:22:38,790 --> 00:22:42,040 sesuatu juta masalah, sekurang- program-kurangnya saya tidak akan kemalangan. 468 00:22:42,040 --> 00:22:45,960 >> Jadi, jika s tidak sama dengan sesuatu yang buruk, Saya mempunyai ini untuk gelung, dan ini adalah 469 00:22:45,960 --> 00:22:47,710 di mana kita mempunyai yang lain sekeping baru sintaksis. 470 00:22:47,710 --> 00:22:51,580 Saya mempunyai untuk gelung iterating dari sifar sehingga panjang s. 471 00:22:51,580 --> 00:22:56,140 Dan kemudian di sini, saya adalah seorang percetakan daripada s golongan i, tetapi kenapa saya menggunakan% c semua 472 00:22:56,140 --> 00:23:00,770 tiba-tiba dan bukannya% s walaupun walaupun s adalah rentetan? 473 00:23:00,770 --> 00:23:02,110 Ia adalah watak, bukan? 474 00:23:02,110 --> 00:23:06,560 S adalah rentetan, tetapi s sesuatu kurungan, s kurungan i di mana saya adalah sifar 475 00:23:06,560 --> 00:23:10,380 atau satu atau dua, itu individu watak dalam tali, dan sebagainya untuk 476 00:23:10,380 --> 00:23:14,970 itu, printf perlu dimaklumkan bahawa ia merupakan satu watak yang diharapkan. 477 00:23:14,970 --> 00:23:18,096 >> Dan kemudian ingat, adakah ini program sebenarnya lakukan? 478 00:23:18,096 --> 00:23:19,848 >> Dicetak di tiang. 479 00:23:19,848 --> 00:23:21,120 >> Ya, betul-betul. 480 00:23:21,120 --> 00:23:24,990 Ia hanya dicetak perkataan yang saya menaip ruang, satu watak dalam satu barisan. 481 00:23:24,990 --> 00:23:26,190 Jadi mari kita lihat ini lagi. 482 00:23:26,190 --> 00:23:27,810 Oleh itu, tali. 483 00:23:27,810 --> 00:23:30,200 Disusun OK. . / Tali. 484 00:23:30,200 --> 00:23:35,560 Izinkan saya menaip H-E-L-L-O, Masukkan, dan sesungguhnya aku mendapatkannya, satu per baris. 485 00:23:35,560 --> 00:23:37,280 >> Jadi biarlah saya melakukan satu pengoptimuman sini. 486 00:23:37,280 --> 00:23:40,240 Jika anda berfikir tentang hal itu, terutamanya jika anda telah diprogramkan sebelum ini, ada 487 00:23:40,240 --> 00:23:43,340 boleh dikatakan satu ketidakcekapan dalam talian 24. 488 00:23:43,340 --> 00:23:46,160 Dalam erti kata lain, ia tidak semestinya reka bentuk yang terbaik. 489 00:23:46,160 --> 00:23:50,200 Mudah, sekurang-kurangnya sekali anda ingat apa yang str Leng, tetapi ia 490 00:23:50,200 --> 00:23:52,640 melakukan sesuatu yang bodoh yang berpotensi. 491 00:23:52,640 --> 00:23:54,863 Apa yang mungkin? 492 00:23:54,863 --> 00:23:56,280 >> [Didengar]. 493 00:23:56,280 --> 00:23:56,800 >> Tepat sekali. 494 00:23:56,800 --> 00:24:00,340 Ia memeriksa panjang s setiap kali walaupun 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O sentiasa akan menjadi lima watak. 496 00:24:02,980 --> 00:24:05,490 Setiap kali melalui gelung ini, lima tidak berubah-ubah. 497 00:24:05,490 --> 00:24:08,750 Saya mungkin menokok i, tetapi apa ialah panjang s pada setiap 498 00:24:08,750 --> 00:24:09,690 lelaran gelung ini? 499 00:24:09,690 --> 00:24:15,810 Ia adalah lima, ia lima, ia lima, dan namun saya tetap meminta ini 500 00:24:15,810 --> 00:24:18,320 mempersoalkan sekali lagi dan lagi dan lagi. 501 00:24:18,320 --> 00:24:20,750 Sekarang terus-terang, komputer adalah begitu bodoh cepat, tiada siapa akan notis 502 00:24:20,750 --> 00:24:23,780 Perbezaan dalam kes ini, tetapi ini jenis keputusan reka bentuk miskin boleh 503 00:24:23,780 --> 00:24:28,330 mula menambah sehingga jika pengkompil sendiri tidak cuba untuk menetapkan ini untuk anda yang 504 00:24:28,330 --> 00:24:30,630 ia biasanya tidak akan, pada kurangnya dalam perkakas. 505 00:24:30,630 --> 00:24:31,540 >> Jadi, saya akan melakukan ini. 506 00:24:31,540 --> 00:24:34,580 Saya akan menambah koma selepas ubah pertama saya, i. 507 00:24:34,580 --> 00:24:37,310 Saya akan memberikan saya satu lagi berubah-ubah, ia memanggil n, hanya dengan 508 00:24:37,310 --> 00:24:41,330 konvensyen untuk nombor, dan kemudian saya akan memberikan n nilai rentetan 509 00:24:41,330 --> 00:24:42,530 panjang s. 510 00:24:42,530 --> 00:24:46,060 Dan kemudian saya akan menukar keadaan saya menjadi apa? 511 00:24:46,060 --> 00:24:51,960 Saya akan mengubah keadaan saya untuk sementara i adalah kurang daripada n. 512 00:24:51,960 --> 00:24:55,700 >> Jadi sekarang, berapa kali saya memeriksa panjang s? 513 00:24:55,700 --> 00:25:00,110 Sebaik sahaja, tetapi ia OK untuk memeriksa i terhadap n sekali lagi dan sekali lagi kerana sekarang mereka 514 00:25:00,110 --> 00:25:03,170 nilai-nilai yang tidak benar-benar berubah. 515 00:25:03,170 --> 00:25:06,020 Sekarang untuk sekarang, hanya tahu bahawa bila-bila masa anda memanggil fungsi, terdapat sedikit 516 00:25:06,020 --> 00:25:09,930 atas, tidak cukup untuk menggalakkan anda benar-benar dari yang pernah menggunakan fungsi, tetapi 517 00:25:09,930 --> 00:25:12,750 pasti apabila ada baris kod suka itu - dan garis akan mendapat 518 00:25:12,750 --> 00:25:15,490 lebih menarik tidak lama - di mana ada peluang untuk berfikir, jika saya 519 00:25:15,490 --> 00:25:18,320 taip kod ini, berapa banyak kali ia akan melaksanakan? 520 00:25:18,320 --> 00:25:20,950 Anda akan mula melihat dari masa ke masa prestasi program anda boleh 521 00:25:20,950 --> 00:25:21,660 memang berubah. 522 00:25:21,660 --> 00:25:24,110 >> Malah, salah satu daripada masalah itu kami telah menetapkan dilakukan pada tahun-tahun lalu melibatkan 523 00:25:24,110 --> 00:25:27,600 melaksanakan, seperti yang anda boleh ingat dari minggu sifar, satu pemeriksa ejaan, tetapi 524 00:25:27,600 --> 00:25:31,380 mengeja pemeriksa yang direka untuk menyokong kamus 150,000 ditambah 525 00:25:31,380 --> 00:25:32,860 kata-kata yang kita berikan anda semua. 526 00:25:32,860 --> 00:25:37,100 Anda perlu menulis kod yang banyak kata-kata ke dalam RAM, jadi ke 527 00:25:37,100 --> 00:25:40,700 kotak seperti yang kita lihat pada skrin seketika yang lalu, dan kemudian secepat yang anda 528 00:25:40,700 --> 00:25:43,740 boleh, anda perlu berupaya untuk menjawab soalan bentuk, adalah perkataan ini 529 00:25:43,740 --> 00:25:44,280 silap eja? 530 00:25:44,280 --> 00:25:45,420 Adakah perkataan ini silap eja? 531 00:25:45,420 --> 00:25:46,770 Adakah perkataan ini silap eja? 532 00:25:46,770 --> 00:25:49,525 >> Dan dalam sesuatu seperti itu apa yang kita telah dilakukan pada tahun-tahun lalu yang menjadikannya, 533 00:25:49,525 --> 00:25:53,500 walaupun pada opt-in secara pilihan, satu persaingan pelbagai, di mana 534 00:25:53,500 --> 00:25:59,470 pelajar yang menggunakan RAM yang kurang dan kurang masa, kitaran CPU kurang, akhirnya 535 00:25:59,470 --> 00:26:02,640 menggelegak sehingga bahagian atas sedikit pemimpin lembaga atau kedudukan yang kita memakai 536 00:26:02,640 --> 00:26:04,770 laman utama kursus ini seperti yang kita telah dilakukan pada tahun-tahun yang lalu. 537 00:26:04,770 --> 00:26:08,100 Jadi sekali lagi, benar-benar pilihan, tetapi ini bercakap kepada peluang reka bentuk 538 00:26:08,100 --> 00:26:11,250 yang lebih awal sekali kita mulakan bangunan di atas beberapa 539 00:26:11,250 --> 00:26:14,010 blok binaan asas. 540 00:26:14,010 --> 00:26:16,780 >> Jadi biarlah saya kembali kepada gambarajah ini untuk hanya seketika dan mendedahkan sedikit 541 00:26:16,780 --> 00:26:17,610 sesuatu yang lebih. 542 00:26:17,610 --> 00:26:21,400 Ini sememangnya adalah rentetan, dan kita telah mengambil kesempatan daripada beberapa perpustakaan, 543 00:26:21,400 --> 00:26:25,150 io.h standard yang telah - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, antara lain. 546 00:26:27,860 --> 00:26:31,540 cs50.h, yang telah mendapatkan int dan mendapatkan tali dan sebagainya, string.h, yang 547 00:26:31,540 --> 00:26:32,570 mempunyai str Leng. 548 00:26:32,570 --> 00:26:34,800 Tetapi ternyata ada satu lagi. 549 00:26:34,800 --> 00:26:38,540 Terus terang, terdapat banyak dan banyak tajuk fail yang mengisytiharkan fungsi 550 00:26:38,540 --> 00:26:43,320 untuk perpustakaan, tetapi ini adalah ctype.h sebenarnya akan menjadi agak 551 00:26:43,320 --> 00:26:46,900 berfaedah kerana saya akan untuk pergi ke hadapan dan melaksanakan salah satu 552 00:26:46,900 --> 00:26:48,120 program lain di sini. 553 00:26:48,120 --> 00:26:52,420 >> Biar saya pergi ke hadapan dan membuka sesuatu Saya menulis terlebih dahulu dikenali sebagai 554 00:26:52,420 --> 00:26:55,750 capitalize.c, dan mari kita lihat bagaimana kerja-kerja ini. 555 00:26:55,750 --> 00:27:00,340 Perhatikan bahawa saya menggunakan, dalam versi ini itu, tiga fail biasa. 556 00:27:00,340 --> 00:27:04,110 Perhatikan bahawa dalam line 18, saya mendapat baris teks. 557 00:27:04,110 --> 00:27:07,660 Notis dalam line 21, saya mendakwa bahawa kod berikut akan 558 00:27:07,660 --> 00:27:12,170 kesempatan s, apa sahaja yang pengguna ditaip dalam, dan bagaimana saya melakukannya? 559 00:27:12,170 --> 00:27:13,300 Nah, saya mengambil - 560 00:27:13,300 --> 00:27:14,750 pengajaran daripada masa lalu - 561 00:27:14,750 --> 00:27:18,370 Saya mengisytiharkan i dan n dan iterating lebih watak-watak dalam rentetan. 562 00:27:18,370 --> 00:27:22,720 Dan kemudian apa yang blok ini kod dalam talian 24 hingga 27 563 00:27:22,720 --> 00:27:24,550 lakukan dari segi orang biasa itu? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Huruf kecil surat belakang. 566 00:27:29,730 --> 00:27:30,430 >> Tepat sekali. 567 00:27:30,430 --> 00:27:35,920 Jika s kurungan i - jadi jika i-ke- watak s, yang tertentu 568 00:27:35,920 --> 00:27:40,220 char dalam tali, adalah lebih besar daripada atau sama dengan huruf kecil dan - 569 00:27:40,220 --> 00:27:42,670 ingat bahawa Ampersand double menandakan dan - 570 00:27:42,670 --> 00:27:46,810 dan ciri-ciri yang sama, s kurungan i, adalah kurang daripada atau sama dengan huruf kecil z, 571 00:27:46,810 --> 00:27:50,600 yang bermakna ia adalah satu b atau a atau c atau dot, dot, dot, atau z, yang bermaksud 572 00:27:50,600 --> 00:27:51,340 ia adalah kecil. 573 00:27:51,340 --> 00:27:52,900 Apa yang saya mahu lakukan dalam kes itu? 574 00:27:52,900 --> 00:27:55,010 Well, saya boleh melakukan ini agak cryptically, tetapi 575 00:27:55,010 --> 00:27:56,160 mari kita mengusik ini selain. 576 00:27:56,160 --> 00:28:00,210 >> Saya akan memanggil printf, mencetak% c kerana saya mahu untuk mencetak semula ini 577 00:28:00,210 --> 00:28:01,580 watak pada skrin. 578 00:28:01,580 --> 00:28:06,650 Saya kemudian akan mengambil s kurungan i, i-ke-watak dalam s, dan mengapa 579 00:28:06,650 --> 00:28:12,330 yang saya lakukan ini helah sedikit di sini, huruf kecil A modal tolak? 580 00:28:12,330 --> 00:28:16,352 Apakah yang akan memberi saya, secara umumnya bercakap? 581 00:28:16,352 --> 00:28:18,600 >> [Didengar]. 582 00:28:18,600 --> 00:28:19,390 >> Tepat sekali. 583 00:28:19,390 --> 00:28:20,860 Saya tidak ingat - 584 00:28:20,860 --> 00:28:24,390 ia adalah 65 untuk modal A. Saya tidak benar-benar ingat apa yang huruf kecil adalah, 585 00:28:24,390 --> 00:28:25,540 tetapi tidak kira. 586 00:28:25,540 --> 00:28:26,580 Komputer yang tahu. 587 00:28:26,580 --> 00:28:30,380 Jadi dengan berkata, huruf kecil tolak modal A, ia adalah pelik untuk menjadi 588 00:28:30,380 --> 00:28:33,530 menolak satu char daripada yang lain, tetapi apakah aksara di bawah hood? 589 00:28:33,530 --> 00:28:34,520 Mereka hanya nombor. 590 00:28:34,520 --> 00:28:36,980 Jadi apa sahaja yang nombor-nombor, membiarkan komputer ingat 591 00:28:36,980 --> 00:28:38,240 bukannya saya manusia. 592 00:28:38,240 --> 00:28:41,710 >> Jadi huruf kecil modal tolak adalah akan memberikan saya perbezaan. 593 00:28:41,710 --> 00:28:45,370 Ia berlaku kepada 32, dan yang akan kes huruf kecil b dan modal B 594 00:28:45,370 --> 00:28:45,930 dan sebagainya. 595 00:28:45,930 --> 00:28:47,710 Ia kekal konsisten, bersyukur. 596 00:28:47,710 --> 00:28:51,930 Jadi saya pada dasarnya berkata, mengambil huruf kecil huruf, tolak luar yang 597 00:28:51,930 --> 00:28:55,340 perbezaan standard, dan bahawa berkesan perubahan s kurungan dari i 598 00:28:55,340 --> 00:28:59,400 huruf kecil untuk, sudah tentu, huruf besar, tanpa saya benar-benar perlu berfikir 599 00:28:59,400 --> 00:29:03,040 mengenai atau ingat, apakah mereka nombor kita bercakap tentang apabila lapan 600 00:29:03,040 --> 00:29:04,800 sukarelawan datang di atas pentas? 601 00:29:04,800 --> 00:29:08,800 Sekarang Sementara itu, pada yang lain, jika ia tidak huruf kecil seperti yang ditentukan 602 00:29:08,800 --> 00:29:10,400 dengan garis 24, hanya mencetak. 603 00:29:10,400 --> 00:29:12,590 Saya hanya ingin menyentuh watak-watak yang telah 604 00:29:12,590 --> 00:29:14,410 sebenarnya asalnya huruf kecil. 605 00:29:14,410 --> 00:29:15,150 >> Jadi mari kita lihat ini. 606 00:29:15,150 --> 00:29:17,400 Buat kesempatan. 607 00:29:17,400 --> 00:29:18,470 Disusun, OK. 608 00:29:18,470 --> 00:29:19,730 . / Mengambil kesempatan. 609 00:29:19,730 --> 00:29:23,530 Dan biarlah saya menaip H-E-L-L-O dalam huruf kecil Enter. 610 00:29:23,530 --> 00:29:26,370 Dan melihat bahawa ia ditukar ke dalam huruf besar. 611 00:29:26,370 --> 00:29:27,940 Biar saya melakukan ini lagi dengan perkataan yang berbeza. 612 00:29:27,940 --> 00:29:32,720 Bagaimana D-A-V-I-D dengan D pertama dipermodalkan sebagai nama yang biasanya adalah? 613 00:29:32,720 --> 00:29:33,560 Enter. 614 00:29:33,560 --> 00:29:34,870 Notis ia masih betul. 615 00:29:34,870 --> 00:29:40,250 Ia hanya outputted yang pertama D berubah melalui yang lain membina. 616 00:29:40,250 --> 00:29:42,170 >> Jadi ingat, kemudian, satu beberapa perkara di sini. 617 00:29:42,170 --> 00:29:45,060 Satu, jika anda mahu untuk memeriksa dua keadaan sekali gus, anda boleh dan mereka 618 00:29:45,060 --> 00:29:46,500 bersama-sama seperti yang kita meramalkan. 619 00:29:46,500 --> 00:29:49,900 Anda boleh membandingkan watak-watak dalam cara ini dan berkesan merawat watak sebagai 620 00:29:49,900 --> 00:29:53,050 nombor, tetapi terus terang saya katakan, ini adalah begitu bodoh samar saya tidak akan ingat 621 00:29:53,050 --> 00:29:56,510 bagaimana untuk tampil dengan ini dari awal tanpa hujah melaluinya sekian 622 00:29:56,510 --> 00:29:57,140 sedikit masa. 623 00:29:57,140 --> 00:30:00,590 >> Bukankah telah baik jika seseorang di luar sana menulis fungsi dipanggil adalah 624 00:30:00,590 --> 00:30:05,390 rendah yang boleh menjawab untuk saya benar atau palsu, watak ini adalah huruf kecil? 625 00:30:05,390 --> 00:30:09,350 Juga bersyukur kerana, sesiapa sahaja yang menulis ctype.h berjaya melakukannya. 626 00:30:09,350 --> 00:30:15,540 Biar saya pergi di sini dan menambah ctype untuk c jenis, dan sekarang biarlah saya pergi ke sini dan 627 00:30:15,540 --> 00:30:18,820 menulis semula baris ini seperti berikut. 628 00:30:18,820 --> 00:30:27,510 >> Jadi, jika ia dipanggil lebih rendah, saya menuntut, s golongan i, maka saya akan memadam 629 00:30:27,510 --> 00:30:29,400 kedua-dua baris sama sekali. 630 00:30:29,400 --> 00:30:32,570 Jadi sekarang orang lain, saya berharap, menulis fungsi yang dipanggil adalah lebih rendah, dan ia 631 00:30:32,570 --> 00:30:36,250 bertukar keluar yang mereka lakukan dan mereka diisytiharkan ia dalam ctype.h. 632 00:30:36,250 --> 00:30:39,480 Dan sekarang saya akan meninggalkan line 27 sahaja, saya akan meninggalkan line 31 633 00:30:39,480 --> 00:30:41,890 sahaja, tetapi notis berapa banyak saya telah mengetatkan kod saya. 634 00:30:41,890 --> 00:30:42,690 Ia kini lebih bersih. 635 00:30:42,690 --> 00:30:47,250 Ia kurang sukar untuk melihat melalui kerana sekarang majlis itu, lebih-lebih lagi, adalah 636 00:30:47,250 --> 00:30:50,080 begitu hebat dinamakan ia hanya melakukan apa yang ia berkata. 637 00:30:50,080 --> 00:30:51,520 >> Jadi sekarang saya akan untuk menyelamatkan ini. 638 00:30:51,520 --> 00:30:52,930 Saya akan zum keluar. 639 00:30:52,930 --> 00:30:56,650 Dan seperti dalam Scratch anda boleh mempunyai Booleans, nilai Boolean benar atau 640 00:30:56,650 --> 00:31:01,530 palsu, yang betul-betul apa yang menurunkan berkesan pulangan. 641 00:31:01,530 --> 00:31:02,960 Biar saya susun semula. 642 00:31:02,960 --> 00:31:04,500 Biar saya semula run. 643 00:31:04,500 --> 00:31:07,350 Dan sekarang mari kita cuba lagi, H-E-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 Itulah yang cukup baik. 645 00:31:07,970 --> 00:31:10,150 Dan cuba sekali lagi, pastikan saya tidak skru sesuatu sehingga. 646 00:31:10,150 --> 00:31:11,670 Yang dipermodalkan juga. 647 00:31:11,670 --> 00:31:14,190 >> Tetapi ini tidak cukup baik kerana Perkara lain yang saya tidak akan 648 00:31:14,190 --> 00:31:19,090 ingat kecuali saya bekerja melalui ia benar-benar berhati-hati, katakan, kertas 649 00:31:19,090 --> 00:31:19,920 ini selaras celaka. 650 00:31:19,920 --> 00:31:23,450 Bukankah lebih baik jika terdapat fungsi dipanggil atas? 651 00:31:23,450 --> 00:31:26,930 Nah ternyata terdapat dalam ctype.h juga. 652 00:31:26,930 --> 00:31:30,150 Saya akan pergi ke hadapan dan menaip - 653 00:31:30,150 --> 00:31:31,340 izinkan saya membawa talian yang kembali. 654 00:31:31,340 --> 00:31:36,430 Sebaliknya ini di sini, izinkan saya pergi ke hadapan dan berkata, menggantikan% c itu 655 00:31:36,430 --> 00:31:42,110 hasil daripada memanggil fungsi ini untuk atas tentang sifat i-ke-s. 656 00:31:42,110 --> 00:31:45,430 Dan kini melihat ia semakin sedikit seimbang. 657 00:31:45,430 --> 00:31:48,870 Saya mempunyai untuk mengesan berapa banyak kurungan saya telah dibuka dan ditutup. 658 00:31:48,870 --> 00:31:50,050 >> Jadi sekarang ia lebih bersih. 659 00:31:50,050 --> 00:31:53,460 Kini program ini semakin lebih baik dan lebih baik yang direka boleh dikatakan kerana ia 660 00:31:53,460 --> 00:31:56,450 banyak lagi boleh dibaca tetapi ia tidak mari kita betul. 661 00:31:56,450 --> 00:31:57,600 Buat kesempatan. 662 00:31:57,600 --> 00:31:58,930 . / Mengambil kesempatan. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Mari kita berjalan sekali lagi, D-A-V-I-D. OK, jadi kita masih dalam 664 00:32:03,220 --> 00:32:04,250 cukup baik bentuk. 665 00:32:04,250 --> 00:32:06,030 >> Tetapi sekarang ke atas. 666 00:32:06,030 --> 00:32:09,720 Saya mencadangkan supaya ada satu lagi perbaikan kita boleh membuat yang akan 667 00:32:09,720 --> 00:32:12,820 benar-benar baik, yang benar-benar boleh mengetatkan sehingga kod ini dan benar-benar memberi kita lima 668 00:32:12,820 --> 00:32:15,150 daripada lima reka bentuk, misalnya. 669 00:32:15,150 --> 00:32:16,510 Apa yang akan lebih baik untuk menghilangkan? 670 00:32:16,510 --> 00:32:20,770 Well, melihat bagaimana bodoh lama blok ini kod adalah hanya untuk melakukan sesuatu yang mudah. 671 00:32:20,770 --> 00:32:23,850 >> Sekarang sebagai diketepikan, seperti yang anda mungkin mempunyai dilihat dalam seksyen super lepas ini 672 00:32:23,850 --> 00:32:27,570 hujung minggu, anda tidak tegas perlu pendakap kerinting apabila anda hanya mempunyai satu 673 00:32:27,570 --> 00:32:32,180 baris kod, walaupun kami mencadangkan menjaga mereka supaya ia membuat banyak 674 00:32:32,180 --> 00:32:36,190 lebih jelas, seperti di U berbentuk Scratch ini blok, apa yang di dalam cawangan. 675 00:32:36,190 --> 00:32:40,170 Tetapi ia tidak akan menjadi baik jika ke atas, apabila diberi input, menjadikannya 676 00:32:40,170 --> 00:32:44,730 huruf besar jika ia tidak, dan apa yang akan menjadi indah dalam kes yang bertentangan jika 677 00:32:44,730 --> 00:32:47,210 ia sudah huruf besar? 678 00:32:47,210 --> 00:32:49,620 Hanya lulus melalui dan biarkan dia bersendirian. 679 00:32:49,620 --> 00:32:50,660 >> Jadi mungkin ia itu. 680 00:32:50,660 --> 00:32:52,990 Saya boleh cuba dan hanya berharap bahawa ia tidak, tetapi biarlah saya 681 00:32:52,990 --> 00:32:54,450 memperkenalkan satu perkara yang lain. 682 00:32:54,450 --> 00:32:57,440 Daripada menggunakan ini terbina dalam terminal tingkap turun di sini, ingat bahawa 683 00:32:57,440 --> 00:33:01,130 icon persegi hitam ini memberikan anda tetingkap terminal yang lebih besar yang boleh saya penuh 684 00:33:01,130 --> 00:33:02,260 skrin jika saya mahu? 685 00:33:02,260 --> 00:33:05,820 Jadi ternyata mereka jenis aneh dinamakan, tetapi ada perkara-perkara ini dipanggil 686 00:33:05,820 --> 00:33:10,970 laman lelaki, laman manual, lelaki untuk jangka pendek, dan saya boleh mengakses oleh 687 00:33:10,970 --> 00:33:14,515 menaip manusia - 688 00:33:14,515 --> 00:33:15,570 apa yang saya mahu jenis yang? 689 00:33:15,570 --> 00:33:17,830 Manusia atas. 690 00:33:17,830 --> 00:33:21,090 >> Dan kini notis jika wujud berfungsi dalam komputer, dalam 691 00:33:21,090 --> 00:33:23,970 kes ini perkakas, yang hanya sistem operasi Linux, ia akan 692 00:33:23,970 --> 00:33:27,920 untuk memberi saya satu set agak samar daripada output, tetapi anda akan mendapati lebih masa itu 693 00:33:27,920 --> 00:33:31,720 ia sentiasa diformat cukup banyak sama supaya anda mula untuk mendapatkan digunakan untuk ia. 694 00:33:31,720 --> 00:33:35,130 Notis di atas ke atas, dan nampaknya adalah dokumentasi yang sama 695 00:33:35,130 --> 00:33:35,680 bagi yang lebih rendah. 696 00:33:35,680 --> 00:33:38,740 Sesiapa yang menulis ia memotong beberapa sudut dan meletakkan semuanya pada satu halaman. 697 00:33:38,740 --> 00:33:40,720 Tujuan perkara-perkara ini dalam hidup adalah untuk menukar 698 00:33:40,720 --> 00:33:42,780 surat kepada atas atau kecil. 699 00:33:42,780 --> 00:33:46,290 >> Perhatikan bahawa di bawah Sinopsis, halaman lelaki itu mengajar saya apa yang saya perlu fail 700 00:33:46,290 --> 00:33:48,130 termasuk untuk menggunakan perkara ini. 701 00:33:48,130 --> 00:33:51,320 Ia memberi saya tandatangan bagi fungsi, kedua-dua mereka, walaupun 702 00:33:51,320 --> 00:33:53,510 walaupun kita sekarang hanya mengambil berat tentang satu. 703 00:33:53,510 --> 00:33:54,730 Berikut adalah penerangan kini. 704 00:33:54,730 --> 00:33:58,800 Untuk menukarkan atas surat c kepada huruf besar jika boleh. 705 00:33:58,800 --> 00:34:02,280 >> Masih tidak nafikan bahawa, tetapi biarlah saya kini lihat di bawah nilai pulangan, perkara 706 00:34:02,280 --> 00:34:03,520 itu diserahkan kembali. 707 00:34:03,520 --> 00:34:08,600 Jadi nilai yang dikembalikan ialah daripada surat ditukar atau c jika 708 00:34:08,600 --> 00:34:09,870 penukaran tidak mungkin. 709 00:34:09,870 --> 00:34:11,202 Apakah c? 710 00:34:11,202 --> 00:34:12,560 >> Watak asal. 711 00:34:12,560 --> 00:34:15,370 >> Watak asal dan kita tahu bahawa dengan, sekali lagi, akan naik kepada 712 00:34:15,370 --> 00:34:19,179 sinopsis, dan sesiapa yang menulis ini fungsi hanya memutuskan bahawa input 713 00:34:19,179 --> 00:34:22,909 untuk ke atas dan ke bawah adalah hanya sewenang-wenangnya akan dipanggil c. 714 00:34:22,909 --> 00:34:24,909 Mereka boleh dipanggil yang paling apa-apa yang mereka mahu, tetapi mereka disimpan 715 00:34:24,909 --> 00:34:26,270 semudah c. 716 00:34:26,270 --> 00:34:27,880 Jadi saya telah berunding halaman lelaki itu. 717 00:34:27,880 --> 00:34:31,870 Ayat ini meyakinkan saya bahawa jika ia bukan satu huruf kecil, ia 718 00:34:31,870 --> 00:34:34,969 akan hanya memberi saya kembali c, yang merupakan sempurna, yang bermakna saya boleh menghilangkan 719 00:34:34,969 --> 00:34:36,199 keadaan lain saya. 720 00:34:36,199 --> 00:34:39,679 >> Jadi biarlah saya kembali ke GEdit, dan sekarang mari saya hanya melakukan ini. 721 00:34:39,679 --> 00:34:41,960 Saya akan tulis pernyataan printf saya. 722 00:34:41,960 --> 00:34:45,969 Saya akan pergi ke hadapan dan kanan di dalam untuk cetak gelung yang keluar, dan mendapatkan 723 00:34:45,969 --> 00:34:48,760 menghilangkan kini keseluruhan ini jika membina. 724 00:34:48,760 --> 00:34:51,860 Tidak adalah idea yang buruk, dan ia adalah sangat banyak betul dan selaras dengan 725 00:34:51,860 --> 00:34:54,100 segala yang kita telah mengajar, tetapi tidak perlu. 726 00:34:54,100 --> 00:34:57,070 Sebaik sahaja anda sedar beberapa perpustakaan fungsi wujud bahawa orang lain 727 00:34:57,070 --> 00:35:01,340 menulis, atau mungkin anda menulis di tempat lain dalam fail, anda boleh menggunakannya dan benar-benar 728 00:35:01,340 --> 00:35:02,690 mula mengetatkan kod. 729 00:35:02,690 --> 00:35:06,080 >> Dan apabila saya mengatakan sesuatu seperti gaya yang baik, hakikat bahawa orang ini dipanggil 730 00:35:06,080 --> 00:35:11,490 berfungsi untuk atas, atau sebelum ini adalah rendah adalah hebat berguna kerana 731 00:35:11,490 --> 00:35:12,900 mereka sangat deskriptif. 732 00:35:12,900 --> 00:35:16,120 Anda tidak mahu untuk memanggil fungsi anda x dan y dan z, yang mempunyai 733 00:35:16,120 --> 00:35:19,620 banyak, makna yang lebih kurang. 734 00:35:19,620 --> 00:35:25,160 Mana-mana soalan-soalan mengenai siri yang penambahbaikan? 735 00:35:25,160 --> 00:35:28,010 >> Jadi memadai untuk mengatakan salah satu takeaways adalah lebih sebagai masalah anda sendiri 736 00:35:28,010 --> 00:35:30,960 set - mungkin masalah set satu, tetapi pasti P menetapkan dua dan seterusnya, walaupun 737 00:35:30,960 --> 00:35:34,380 apabila mereka yang betul tidak semestinya bermakna mereka adalah sempurna hanya 738 00:35:34,380 --> 00:35:36,155 lagi atau terutamanya direka. 739 00:35:36,155 --> 00:35:38,420 Itulah paksi lain untuk mula berfikir tentang. 740 00:35:38,420 --> 00:35:41,730 Jadi ini adalah di dalam rentetan anda memori komputer, tetapi jika anda mempunyai 741 00:35:41,730 --> 00:35:46,180 keseluruhan sekumpulan watak-watak seperti H-E-L-L-O dalam RAM, dan andaikan 742 00:35:46,180 --> 00:35:51,330 bahawa anda dalam program anda memanggil mendapatkan tali berkali-kali seperti yang anda 743 00:35:51,330 --> 00:35:54,200 memanggil mendapatkan tali sekali, maka anda memanggil mendapatkan tali lagi. 744 00:35:54,200 --> 00:35:55,880 Nah, apa yang akan berlaku dari masa ke masa? 745 00:35:55,880 --> 00:35:59,170 >> Dalam erti kata lain, jika anda mempunyai garis kod, walaupun di luar konteks, seperti 746 00:35:59,170 --> 00:36:02,120 rentetan s mendapat - 747 00:36:02,120 --> 00:36:02,960 mari kita buat ini. 748 00:36:02,960 --> 00:36:05,270 Nama rentetan sama mendapatkan tali. 749 00:36:05,270 --> 00:36:08,590 Jadi menganggap bahawa baris kod yang dimaksudkan untuk meminta pengguna untuk namanya. 750 00:36:08,590 --> 00:36:14,580 Ini sejajar seterusnya kod bertujuan untuk meminta pengguna untuk atau sekolahnya, dan 751 00:36:14,580 --> 00:36:15,920 talian ini akan datang, dan sebagainya. 752 00:36:15,920 --> 00:36:18,150 Katalah kita terus bertanya pengguna yang lain dan 753 00:36:18,150 --> 00:36:19,750 satu lagi dan satu lagi tali. 754 00:36:19,750 --> 00:36:22,390 Mereka akan tinggal di dalam memori pada masa yang sama. 755 00:36:22,390 --> 00:36:24,280 Satu tidak akan mengalahkan yang lain. 756 00:36:24,280 --> 00:36:26,420 Sekolah tidak menimpa lain. 757 00:36:26,420 --> 00:36:28,520 Tetapi di manakah mereka semua berakhir di dalam ingatan? 758 00:36:28,520 --> 00:36:32,030 >> Nah, jika kita mula untuk menarik pada skrin, yang boleh kita gunakan benda ini 759 00:36:32,030 --> 00:36:35,800 di sini seperti papan hitam, jika ini hitam segi empat mewakili komputer saya 760 00:36:35,800 --> 00:36:39,800 ingatan, saya akan sewenang-wenangnya bermula membahagikan ia sehingga ke dataran kecil, 761 00:36:39,800 --> 00:36:42,120 setiap yang mewakili satu bait memori. 762 00:36:42,120 --> 00:36:46,560 Terus terang, jika anda mempunyai gigabait RAM hari ini, anda mempunyai satu bilion bait 763 00:36:46,560 --> 00:36:49,540 memori dalam komputer anda, jadi satu bilion ini dua. 764 00:36:49,540 --> 00:36:52,110 Jadi memadai untuk mengatakan, ini tidak benar-benar mengikut skala. 765 00:36:52,110 --> 00:36:58,250 >> Tetapi kita boleh terus menarik semua ini jelas tidak mengikut skala dataran, dan ini 766 00:36:58,250 --> 00:37:01,260 secara kolektif mewakili memori komputer saya. 767 00:37:01,260 --> 00:37:03,136 Sekarang kita hanya akan melakukan dot, dot, dot. 768 00:37:03,136 --> 00:37:06,260 Jadi, dalam erti kata lain, apabila saya kini mendorong pengguna dengan rentetan get memberi saya 769 00:37:06,260 --> 00:37:07,350 tali, apa yang berlaku? 770 00:37:07,350 --> 00:37:14,270 Jika jenis pengguna dalam "hello," yang berakhir dalam H-E-L-L-O. Tetapi andaikan 771 00:37:14,270 --> 00:37:15,720 pengguna itu jenis dalam - 772 00:37:15,720 --> 00:37:17,250 sebenarnya, saya tidak sepatutnya dilakukan hello kerana kita meminta 773 00:37:17,250 --> 00:37:18,330 mereka nama-nama mereka. 774 00:37:18,330 --> 00:37:20,580 Jadi mari kita kembali jika saya boleh melakukan ini. 775 00:37:20,580 --> 00:37:26,130 >> Jadi jika saya taip D-A-V-I-D untuk nama saya, tetapi ingat bahawa baris kedua 776 00:37:26,130 --> 00:37:29,220 kod telah mendapatkan tali lagi untuk mendapatkan sekolah mereka. 777 00:37:29,220 --> 00:37:32,090 Di mana perkataan yang bahawa pengguna jenis dalam akan pergi seterusnya? 778 00:37:32,090 --> 00:37:38,290 Well, mungkin ia akan pergi ke H-A-R-V-A-R-D. Jadi, walaupun saya telah 779 00:37:38,290 --> 00:37:41,560 disediakan sebagai dua baris, ini hanya sejumlah bait dalam anda 780 00:37:41,560 --> 00:37:42,710 RAM komputer. 781 00:37:42,710 --> 00:37:46,560 Ada masalah sekarang kerana sekarang jika saya menggunakan RAM dalam ini sangat berpatutan 782 00:37:46,560 --> 00:37:49,910 tetapi sejenis cara naif, apa yang boleh anda nampaknya tidak membezakan? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Jika satu bermula dan di mana salah satu hujung, bukan? 785 00:37:54,680 --> 00:37:55,860 Mereka jenis kabur bersama-sama. 786 00:37:55,860 --> 00:37:57,920 >> Jadi ternyata komputer tidak melakukan ini. 787 00:37:57,920 --> 00:38:04,720 Biar saya sebenarnya skrol kembali dalam masa yang beberapa watak-watak, dan bukannya Harvard 788 00:38:04,720 --> 00:38:09,570 akan segera selepas nama pengguna, pengguna sebenarnya mendapat, di belakang 789 00:38:09,570 --> 00:38:12,000 tabir, aksara khas dimasukkan oleh 790 00:38:12,000 --> 00:38:13,885 komputer untuk dia atau dia. 791 00:38:13,885 --> 00:38:19,470 / 0, atau dikenali sebagai watak nul annoyingly dipanggil N-U-L, tidak 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, tetapi anda menulisnya sebagai / 0. 793 00:38:22,190 --> 00:38:27,130 Ia hanya semua bit sifar adalah penanda dalam antara perkataan pertama yang pengguna 794 00:38:27,130 --> 00:38:28,290 ditaip dan kedua. 795 00:38:28,290 --> 00:38:33,020 >> Jadi Harvard sebenarnya kini berakhir sebagai urutan ini watak-watak 796 00:38:33,020 --> 00:38:36,110 dan satu lagi / 0. 797 00:38:36,110 --> 00:38:41,690 Jadi, dalam erti kata lain, dengan mempunyai ini nilai sentinel, lapan sifar berdampingan 798 00:38:41,690 --> 00:38:45,220 bit, kini anda boleh mula untuk membezakan salah satu watak dari yang lain. 799 00:38:45,220 --> 00:38:49,720 Jadi semua masa ini apa yang telah "hello" adalah sebenarnya "hello" dengan / 0, dan 800 00:38:49,720 --> 00:38:53,580 Sementara itu, ada juga yang mungkin RAM menjadi agak sedikit lebih 801 00:38:53,580 --> 00:38:56,400 di dalam komputer. 802 00:38:56,400 --> 00:38:57,810 >> Biar saya melakukan satu perkara lain sekarang. 803 00:38:57,810 --> 00:39:01,800 Ia ternyata bahawa semua ini kuasa dua kita telah melukis, mereka, ya, 804 00:39:01,800 --> 00:39:06,140 tali, tetapi secara umum, perkara-perkara ini adalah tatasusunan. 805 00:39:06,140 --> 00:39:10,590 Array hanya sebahagian memori itu kembali ke belakang untuk kembali ke belakang, 806 00:39:10,590 --> 00:39:15,130 dan anda biasanya menggunakan array dengan cara notasi ini kurungan persegi. 807 00:39:15,130 --> 00:39:18,210 Oleh itu, kita akan melihat ini agak sedikit dari masa ke masa, tetapi biarlah saya pergi ke hadapan dan 808 00:39:18,210 --> 00:39:21,160 membuka, mari kita memanggilnya peringkat umur. 809 00:39:21,160 --> 00:39:23,920 Dan notis apa yang boleh kita lakukan dengan ini cara yang sama, sedikit 810 00:39:23,920 --> 00:39:25,750 sintaks lebih sedikit di sini. 811 00:39:25,750 --> 00:39:29,270 >> Jadi, dalam talian 17 program ini - sebenarnya, membiarkan saya menjalankan program pertama 812 00:39:29,270 --> 00:39:30,770 supaya kita boleh melihat apa yang perkara ini tidak. 813 00:39:30,770 --> 00:39:33,530 Izinkan saya membuat panggilan peringkat umur untuk menyusun program ini. 814 00:39:33,530 --> 00:39:34,950 . Peringkat umur /. 815 00:39:34,950 --> 00:39:36,480 Berapa ramai orang yang berada di dalam bilik? 816 00:39:36,480 --> 00:39:38,020 Memanggilnya tiga. 817 00:39:38,020 --> 00:39:39,575 Umur orang yang pertama? 818 00:39:39,575 --> 00:39:42,710 18, 19, dan 20. 819 00:39:42,710 --> 00:39:46,770 Dan kini agak mustahil, saya hanya telah membuat satu program yang umur mereka 820 00:39:46,770 --> 00:39:47,740 tiga orang. 821 00:39:47,740 --> 00:39:50,390 >> Jadi ada peluang jelas bagi sesetengah aritmetik menyeronokkan di sini. 822 00:39:50,390 --> 00:39:51,560 Syukurlah, matematik adalah betul. 823 00:39:51,560 --> 00:39:54,720 18 pergi ke 19, 19 pergi 20 dan sebagainya. 824 00:39:54,720 --> 00:39:58,510 Tetapi apa yang benar-benar bertujuan untuk menjadi ilustrasi di sini ialah bagaimana kita menyimpan 825 00:39:58,510 --> 00:40:00,190 peringkat umur mereka tiga orang. 826 00:40:00,190 --> 00:40:02,370 Biar saya mengezum masuk pada apa yang berlaku di sini. 827 00:40:02,370 --> 00:40:06,240 >> Jadi pertama, ini beberapa baris pertama perlu akan mendapat cukup biasa. 828 00:40:06,240 --> 00:40:08,770 Saya hanya mendorong pengguna untuk beberapa orang di dalam bilik. 829 00:40:08,770 --> 00:40:11,490 Kemudian saya menggunakan mendapatkan int dan lakukan semasa untuk melakukan ini sekali lagi dan lagi dan lagi. 830 00:40:11,490 --> 00:40:15,780 Kami telah melihat corak yang sebelum ini, tetapi line 27 yang baru dan sebenarnya agak 831 00:40:15,780 --> 00:40:18,160 berguna, dan akan menjadi semakin berguna. 832 00:40:18,160 --> 00:40:21,620 Perhatikan apa yang berbeza dalam talian 27 adalah bahawa saya muncul untuk mengisytiharkan 833 00:40:21,620 --> 00:40:23,960 int dipanggil peringkat umur, tetapi menunggu. 834 00:40:23,960 --> 00:40:27,140 Ia bukan sahaja peringkat umur int. 835 00:40:27,140 --> 00:40:30,130 Ada ini kurungan persegi, dalam yang n. 836 00:40:30,130 --> 00:40:35,150 >> Jadi golongan n dalam konteks ini, tidak dalam satu kenyataan di sini tetapi printf 837 00:40:35,150 --> 00:40:44,370 dalam talian tunggal 27, baris ini adalah berkata, memberi saya n Ints, setiap yang 838 00:40:44,370 --> 00:40:46,080 adalah jenis int. 839 00:40:46,080 --> 00:40:49,870 Jadi ini adalah baldi, jadi untuk bercakap, di, dalam kes ini, tiga integer kembali ke 840 00:40:49,870 --> 00:40:52,770 kembali ke belakang supaya saya berkesan mempunyai tiga pembolehubah. 841 00:40:52,770 --> 00:40:54,890 Alternatif, untuk menjadi jelas, akan ini. 842 00:40:54,890 --> 00:40:57,400 >> Jika saya mahu pelajar pertama umur, saya mungkin melakukan ini. 843 00:40:57,400 --> 00:40:59,520 Jika saya mahu pelajar yang kedua umur saya mungkin melakukan ini. 844 00:40:59,520 --> 00:41:01,860 Jika saya mahu pelajar ketiga umur, saya mungkin melakukan ini. 845 00:41:01,860 --> 00:41:04,320 Dan tuhan melarang kita perlu semua orang umur dalam bilik ini - 846 00:41:04,320 --> 00:41:07,670 Maksud saya, ini adalah satu palang pintu dari banyak salinan, paste lagi dan lagi dan lagi. 847 00:41:07,670 --> 00:41:10,870 Dan ditambah sekali saya menyusun program ini, jika pelajar lain berjalan di lebih daripada 848 00:41:10,870 --> 00:41:14,200 pintu itu, kini nombor saya pembolehubah adalah tidak betul. 849 00:41:14,200 --> 00:41:17,450 >> Jadi apa yang baik tentang array adalah seperti Sebaik sahaja anda mula berasa diri anda 850 00:41:17,450 --> 00:41:20,190 menyalin dan menampal, kemungkinan adalah bahawa adalah tidak pendekatan yang terbaik. 851 00:41:20,190 --> 00:41:22,240 Array dinamik berpotensi. 852 00:41:22,240 --> 00:41:24,610 Saya tidak tahu terlebih dahulu berapa ramai orang akan berada di dalam bilik, 853 00:41:24,610 --> 00:41:28,670 tetapi saya tahu saya perlu n daripada mereka, dan saya akan n memikirkan apabila tiba masanya. 854 00:41:28,670 --> 00:41:35,500 Ini sejajar kod sekarang bermakna, beri saya sebahagian memori yang kelihatan seperti ini 855 00:41:35,500 --> 00:41:40,380 di mana bilangan kotak pada skrin bergantung sepenuhnya pada n yang 856 00:41:40,380 --> 00:41:42,010 pengguna ditaip masuk 857 00:41:42,010 --> 00:41:44,850 >> Jadi sekarang sepanjang program ini adalah sebenarnya cukup sama dengan apa yang kita 858 00:41:44,850 --> 00:41:46,860 hanya lakukan dengan watak-watak. 859 00:41:46,860 --> 00:41:49,970 Notis saya mempunyai untuk gelung bermula pada baris 30. 860 00:41:49,970 --> 00:41:54,920 Jadi sejurus selepas saya mendapat pelbagai, saya melelar dari y bersamaan dengan sifar pada sehingga n. 861 00:41:54,920 --> 00:41:58,890 Saya hanya mempunyai ini printf nafikan Mesej hanya mengatakan, beri saya umur 862 00:41:58,890 --> 00:42:03,690 orang #% i, jadi nombor satu, nombor dua, nombor tiga. 863 00:42:03,690 --> 00:42:04,730 Dan mengapa saya lakukan ini? 864 00:42:04,730 --> 00:42:08,870 Terus terang, manusia lebih suka untuk mengira dari satu atas sehingga manakala ahli sains komputer, 865 00:42:08,870 --> 00:42:09,620 sifar di atas. 866 00:42:09,620 --> 00:42:11,700 saintis komputer tidak akan menggunakan jenis ini program, jadi kita 867 00:42:11,700 --> 00:42:13,990 akan hanya mula mengira pada satu-satu seperti orang normal. 868 00:42:13,990 --> 00:42:17,630 >> Dan kini dalam talian 33, notis sedikit sekeping berbeza sintaksis. 869 00:42:17,630 --> 00:42:23,710 Umur i-ke-dalam yang berubah-ubah jenis pelbagai akan mendapat int an. 870 00:42:23,710 --> 00:42:25,770 Dan kini akhir sekali, ini hanya aritmetik di sini. 871 00:42:25,770 --> 00:42:29,200 Saya membuat keputusan dalam gelung berasingan untuk menuntut beberapa masa berlalu, dan kini dalam ini 872 00:42:29,200 --> 00:42:31,400 gelung berasingan, ayat-ayat ini melaksanakan. 873 00:42:31,400 --> 00:42:35,810 >> Satu tahun dari sekarang, orang i akan i lama tahun, tetapi notis ini bukanlah 874 00:42:35,810 --> 00:42:36,500 berubah-ubah i. 875 00:42:36,500 --> 00:42:38,390 Ini kini% i untuk int. 876 00:42:38,390 --> 00:42:43,210 Dan notis sebagai pemegang tempat pertama, saya pasangkan i campur 1, supaya kita mengira seperti 877 00:42:43,210 --> 00:42:44,250 orang biasa. 878 00:42:44,250 --> 00:42:49,190 Dan kemudian untuk nilai umur mereka, lama i tahun, saya mengambil masa yang lama kurungan 879 00:42:49,190 --> 00:42:52,980 i - dan mengapa saya melakukan tambah satu di sini? 880 00:42:52,980 --> 00:42:53,760 Mereka hanya berusia. 881 00:42:53,760 --> 00:42:55,030 Ia adalah pilihan bodoh saya program. 882 00:42:55,030 --> 00:42:56,810 Mereka hanya berumur satu tahun. 883 00:42:56,810 --> 00:42:59,770 Saya boleh menaip apa-apa bilangan yang Saya benar-benar mahu di sana. 884 00:42:59,770 --> 00:43:02,430 >> Jadi apa yang sebenarnya semua relevan di sini? 885 00:43:02,430 --> 00:43:07,610 Baiklah, biar saya sebenarnya skrol kembali di sini dan cat gambar 886 00:43:07,610 --> 00:43:10,830 apa yang akan berlaku. 887 00:43:10,830 --> 00:43:15,720 Apa yang kita akan lakukan dengan kami seterusnya Set Masalah Dua yang berkecimpung dalam 888 00:43:15,720 --> 00:43:17,070 dunia kriptografi. 889 00:43:17,070 --> 00:43:22,500 Jadi ini adalah rentetan aksara, jadi urutan pelbagai aksara, dan apa 890 00:43:22,500 --> 00:43:23,750 adakah ini katakan? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 Ia bukan dalam versi dalam talian satu slaid. 893 00:43:30,600 --> 00:43:35,880 >> Jadi saya mendakwa bahawa ini sama ini, iklan bodoh dari bertahun-tahun 894 00:43:35,880 --> 00:43:39,950 lalu yang benar-benar mungkin ingat salah satu asal-usulnya. 895 00:43:39,950 --> 00:43:42,740 Jadi ini adalah satu contoh penyulitan atau kriptografi. 896 00:43:42,740 --> 00:43:46,150 Ia ternyata bahawa jika anda mahu sebenarnya menghantar maklumat atau berkongsi 897 00:43:46,150 --> 00:43:49,310 maklumat dengan seseorang yang selamat, seperti mesej seperti ini, anda boleh 898 00:43:49,310 --> 00:43:50,500 berebut huruf. 899 00:43:50,500 --> 00:43:53,170 Tetapi biasanya, perkataan yang tidak hancur secara rawak. 900 00:43:53,170 --> 00:43:56,365 Mereka permuted dalam beberapa cara atau diubah dalam beberapa cara supaya - oops. 901 00:43:56,365 --> 00:43:59,040 Itulah spoiler menyeronokkan untuk masa akan datang. 902 00:43:59,040 --> 00:44:04,390 >> Jadi, anda boleh merancang apa yang nampaknya O ke B. Perhatikan bahawa garisan sehingga 903 00:44:04,390 --> 00:44:05,420 permodalan bijak. 904 00:44:05,420 --> 00:44:07,960 Rupa-rupanya menjadi r e. 905 00:44:07,960 --> 00:44:14,000 Rupa-rupanya F-H-E-R menjadi S-U-R-E. Jadi ternyata ada pemetaan, dan dalam 906 00:44:14,000 --> 00:44:18,720 kes ini ada yang agak bodoh pemetaan jika sesiapa telah digambarkan ia keluar? 907 00:44:18,720 --> 00:44:21,440 Ini adalah sesuatu yang dinamakan Rot 13 Putar 13. 908 00:44:21,440 --> 00:44:24,760 Ia adalah bodoh penyulitan mekanisme kerana ia benar-benar hanya 909 00:44:24,760 --> 00:44:29,160 menambah 13 hingga setiap satu daripada huruf, bodoh dalam erti kata bahawa jika anda hanya 910 00:44:29,160 --> 00:44:31,890 mempunyai sedikit masa lapang di tangan anda dan pensil, atau anda hanya fikir ia 911 00:44:31,890 --> 00:44:35,260 melalui dalam kepala anda, anda boleh cuba semua tambahan mungkin - satu, dua, 912 00:44:35,260 --> 00:44:38,470 tiga, dot, dot, dot, 25 hanya memutarkan keseluruhan abjad, dan 913 00:44:38,470 --> 00:44:40,860 akhirnya, anda akan memikirkan apa mesej ini. 914 00:44:40,860 --> 00:44:43,700 Jadi, jika anda melakukan sesuatu seperti ini di sekolah gred lulus mesej kepada anda 915 00:44:43,700 --> 00:44:46,830 kawan baik, jika sekolah gred anda guru hanya membaca melalui 916 00:44:46,830 --> 00:44:50,320 mesej dan kasar memaksa penyelesaian, anda mungkin telah mendapat 917 00:44:50,320 --> 00:44:52,550 jawapan oleh itu. 918 00:44:52,550 --> 00:44:54,970 >> Sekarang sudah tentu, dalam dunia sebenar, kriptografi yang lebih canggih. 919 00:44:54,970 --> 00:45:00,120 Ini adalah coretan teks dari sistem komputer yang mempunyai nama pengguna dan 920 00:45:00,120 --> 00:45:03,630 kata laluan, kerana hampir semua kita lakukan, dan ini adalah apa yang mungkin kata laluan anda 921 00:45:03,630 --> 00:45:07,260 kelihatan seperti jika disimpan di keras anda memandu tetapi dalam bentuk disulitkan. 922 00:45:07,260 --> 00:45:11,050 Ini bukan sahaja satu putaran surat, A ialah B dan B ialah C. Ini adalah 923 00:45:11,050 --> 00:45:15,620 lebih canggih, tetapi ia menggunakan apa yang diketahui umum sebagai kunci rahsia 924 00:45:15,620 --> 00:45:16,690 kriptografi. 925 00:45:16,690 --> 00:45:20,210 Gambar ini menceritakan seperti berikut cerita dengan ikon ini. 926 00:45:20,210 --> 00:45:22,250 >> Di sebelah kiri, kita mempunyai apa yang kami akan memanggil teks biasa. 927 00:45:22,250 --> 00:45:25,420 Dalam dunia kriptografi, jelas teks hanya mesej asal 928 00:45:25,420 --> 00:45:29,050 ditulis dalam bahasa Inggeris atau Perancis atau mana-mana bahasa sekalipun. 929 00:45:29,050 --> 00:45:32,405 Jika anda ingin menyulitkan, kita akan lulus ia bergambar melalui mangga, jadi 930 00:45:32,405 --> 00:45:35,580 beberapa jenis algoritma, beberapa fungsi atau program yang seseorang menulis 931 00:45:35,580 --> 00:45:39,880 yang duduk huruf diharapkan complicatedly lebih daripada sekadar menambah 13 932 00:45:39,880 --> 00:45:40,980 kepada setiap daripada mereka. 933 00:45:40,980 --> 00:45:43,780 >> Apa yang anda dapat daripada proses yang di tengah ada dipanggil cyphertext. 934 00:45:43,780 --> 00:45:44,850 Jadi jenis perkataan seksi. 935 00:45:44,850 --> 00:45:47,630 Ia hanya bermakna ia adalah disulitkan versi teks biasa. 936 00:45:47,630 --> 00:45:52,570 Dan hanya jika anda mempunyai rahsia yang sama, 13 atau tolak 13, anda dapat 937 00:45:52,570 --> 00:45:54,970 menyahsulit mesej seperti itu. 938 00:45:54,970 --> 00:45:57,770 >> Jadi dalam Set Masalah Dua, antara perkara anda akan lakukan jika dalam Hacker 939 00:45:57,770 --> 00:46:01,860 Edition, anda akan mempunyai untuk menulis kod untuk memecahkan kata laluan ini, memikirkan 940 00:46:01,860 --> 00:46:05,170 apa yang mereka dan bagaimana mereka disulitkan, walaupun kita lakukan memberi anda sedikit 941 00:46:05,170 --> 00:46:06,460 petunjuk sepanjang jalan. 942 00:46:06,460 --> 00:46:09,320 Dalam Edisi Standard, kita memperkenalkan beberapa rahsia, penyulitan 943 00:46:09,320 --> 00:46:12,400 mekanisme, satu dipanggil Caesar, satu dipanggil Vigenere, yang masih 944 00:46:12,400 --> 00:46:16,100 sifer putaran di mana A menjadi sesuatu, B menjadi sesuatu, tetapi 945 00:46:16,100 --> 00:46:18,820 anda perlu lakukan ia programatik kerana sesungguhnya akan menjadi rahsia 946 00:46:18,820 --> 00:46:22,840 utama yang terlibat yang biasanya sebilangan atau kata kunci yang hanya 947 00:46:22,840 --> 00:46:26,420 penghantar dan penerima ini Mesej perlu memahami. 948 00:46:26,420 --> 00:46:28,660 >> Sekarang, ini sebenarnya mempunyai jelmaan dalam dunia sebenar. 949 00:46:28,660 --> 00:46:32,910 Ini, misalnya, adalah anak yatim sedikit Cincin penyahkod rahsia Annie, dan anda 950 00:46:32,910 --> 00:46:35,180 sebenarnya boleh melaksanakan ini sifer putaran - 951 00:46:35,180 --> 00:46:37,930 A menjadi sesuatu, B menjadi sesuatu - dengan beberapa roda, 952 00:46:37,930 --> 00:46:40,840 satu di luar, satu di bahagian dalam itu bahawa jika anda berputar roda atau 953 00:46:40,840 --> 00:46:44,170 cincin, anda sebenarnya boleh membariskan huruf dengan huruf yang berbeza, 954 00:46:44,170 --> 00:46:45,430 mendapat kod rahsia. 955 00:46:45,430 --> 00:46:48,110 Dan sebagainya sebagai cliffhanger untuk hari ini, apa yang saya fikir saya akan lakukan adalah sedikit 956 00:46:48,110 --> 00:46:52,170 throwback bahawa jika anda menghidupkan TV pada 24 Disember, anda boleh menonton 957 00:46:52,170 --> 00:46:55,390 filem iklan nauseum untuk 24 jam berturut-turut. 958 00:46:55,390 --> 00:47:06,030 Tetapi hari ini, saya akan buka di sini dan memberikan kita hanya dua minit dari 959 00:47:06,030 --> 00:47:13,493 pedagogically berkaitan Krismas Story dengan rakan-rakan kecil bernama Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [MAIN SEMULA VIDEO] 961 00:47:14,400 --> 00:47:17,420 >> -Jadilah ia dikenali kepada segala-galanya yang Ralph Parker adalah dengan ini dilantik sebagai 962 00:47:17,420 --> 00:47:20,650 ahli Anak-Anak Yatim Little Annie rahsia bulatan dan adalah berhak kepada semua 963 00:47:20,650 --> 00:47:23,460 penghormatan dan manfaat berlaku kepadanya. 964 00:47:23,460 --> 00:47:25,990 >> -Ditandatangani, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Balas, Pierre Andre dalam dakwat. 966 00:47:30,100 --> 00:47:34,270 Kepujian dan faedah sudah pada usia sembilan tahun. 967 00:47:34,270 --> 00:47:39,440 >> [Menjerit ON RADIO] 968 00:47:39,440 --> 00:47:40,770 >> Ayuh, mari kita mendapatkan pada dengannya. 969 00:47:40,770 --> 00:47:44,965 Saya tidak memerlukan semua itu jazz tentang penyeludup dan lanun. 970 00:47:44,965 --> 00:47:48,270 >> -Dengar malam esok bagi pengembaraan penutup hitam 971 00:47:48,270 --> 00:47:49,650 kapal lanun. 972 00:47:49,650 --> 00:47:53,320 Kini, sudah tiba masanya untuk Rahsia Annie Mesej untuk anda ahli 973 00:47:53,320 --> 00:47:55,720 bulatan rahsia. 974 00:47:55,720 --> 00:47:56,580 Ingat, anak-anak. 975 00:47:56,580 --> 00:48:01,720 Hanya ahli Circle Rahsia Annie boleh decode mesej rahsia Annie. 976 00:48:01,720 --> 00:48:05,872 Ingat, Annie adalah bergantung kepada anda. 977 00:48:05,872 --> 00:48:08,670 Set pin anda untuk B2. 978 00:48:08,670 --> 00:48:11,000 Berikut adalah mesej. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Saya dalam mesyuarat rahsia pertama saya. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre adalah pada malam ini suara besar. 983 00:48:21,650 --> 00:48:24,830 Saya boleh memberitahu mesej yang malam ini adalah benar-benar penting. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 Itulah mesej dari Annie dirinya. 986 00:48:28,540 --> 00:48:30,086 Ingat, jangan beritahu sesiapa. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Saat kemudian, saya dalam satu-satunya bilik di rumah di mana seorang budak sembilan 989 00:48:38,710 --> 00:48:42,668 boleh duduk di privasi dan decode. 990 00:48:42,668 --> 00:48:47,628 Aha, B. saya pergi ke depan. 991 00:48:47,628 --> 00:48:53,060 E. Perkataan pertama adalah "tidak." S. Ia telah datang lebih mudah sekarang. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 Itu R. 994 00:48:55,940 --> 00:48:56,900 >> -Ayuh, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Saya terpaksa pergi. 996 00:48:57,860 --> 00:48:59,780 >> I'll-betul turun, Ma. 997 00:48:59,780 --> 00:49:01,030 Pakar Gee. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Pastikan anda. 1000 00:49:08,220 --> 00:49:09,500 Pastikan untuk apa? 1001 00:49:09,500 --> 00:49:11,660 Apa yang Anak-Anak Yatim Little Annie cuba katakan? 1002 00:49:11,660 --> 00:49:12,844 Pastikan untuk apa? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy telah mendapat untuk pergi. 1004 00:49:14,732 --> 00:49:16,148 Anda akan sila datang keluar? 1005 00:49:16,148 --> 00:49:17,092 >> -Baiklah, Ma. 1006 00:49:17,092 --> 00:49:18,510 Saya akan segera keluar. 1007 00:49:18,510 --> 00:49:20,270 >> -Saya telah mendapat lebih dekat dengan sekarang. 1008 00:49:20,270 --> 00:49:21,823 Ketegangan adalah amat dahsyat. 1009 00:49:21,823 --> 00:49:23,045 Apakah ia? 1010 00:49:23,045 --> 00:49:26,510 Nasib planet boleh tergantung di kira-kira. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, pergi Randy terpaksa. 1012 00:49:28,985 --> 00:49:32,680 >> I'll-betul keluar untuk menangis dengan kuat. 1013 00:49:32,680 --> 00:49:33,956 >> -Hampir di sana. 1014 00:49:33,956 --> 00:49:35,140 Jari saya terbang. 1015 00:49:35,140 --> 00:49:36,880 Fikiran saya perangkap besi. 1016 00:49:36,880 --> 00:49:38,010 Setiap liang digetarkan. 1017 00:49:38,010 --> 00:49:39,878 Ia adalah hampir jelas. 1018 00:49:39,878 --> 00:49:43,210 Ya, ya, ya, ya, ya. 1019 00:49:43,210 --> 00:49:49,030 >> -Pastikan anda minum Ovaltine anda. 1020 00:49:49,030 --> 00:49:50,280 Ovaltine? 1021 00:49:50,280 --> 00:49:53,980 1022 00:49:53,980 --> 00:49:55,230 A komersial tdk bagus? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Celaka. 1025 00:50:00,694 --> 00:50:01,900 >> [AKHIR VIDEO MAIN SEMULA] 1026 00:50:01,900 --> 00:50:04,260 >> SPEAKER 1: Ini adalah CS50, dan bahawa akan Set Masalah Dua. 1027 00:50:04,260 --> 00:50:06,305 Jumpa anda minggu depan. 1028 00:50:06,305 --> 00:50:08,800 >> SPEAKER 2: Pada seterusnya CS50, ini berlaku. 1029 00:50:08,800 --> 00:50:11,060 >> SPEAKER 1: Jadi, satu topik yang kita tidak mempunyai melihat setakat ini 1030 00:50:11,060 --> 00:50:12,220 bahawa petunjuk fungsi. 1031 00:50:12,220 --> 00:50:14,540 Kini, penunjuk fungsi hanya alamat awam 1032 00:50:14,540 --> 00:50:17,000 fungsi, tetapi lebih seperti - 1033 00:50:17,000 --> 00:50:18,250 anak a - 1034 00:50:18,250 --> 00:50:19,670